From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id D2D85C0218A for ; Tue, 28 Jan 2025 11:24:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=8vSa61xdlRK9Fd5PcWMNs7gm7Q2i5kWhaRPxYBKsmR4=; b=UlJ779rPCBMfCh Vpwyi6UHPqYRUUjcL76hbKQ3ZhKeme68kguaNVXwI9wtGZTLfFa0BPVYf+0+m9doZXsIrGhjNbQ2U 9U7jAw5s9rSdHNNNFfWyNKMZ6FXay/b/IUZHkJPPn8f71TFfiX2/SoLV9c2WQCNjNTV75msRbJXxh Gib8MGHDHDdHvkuG8WTdK/zcEhg86+KlitPFPZdaXyPLTMg1h/66ewEPNWaNgt+PyPcPvR1gHOAvg zAplxUflT7dFgYlYQ5cobv1Jv3y8R/pPprsCoyBd2rv+pQpRqAPxhBOCAGc1Z/6uLnzAKLZjNSdah gXCN9onk8LB1N5nyjNSQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tcjhG-00000004lxA-0r4f; Tue, 28 Jan 2025 11:23:58 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tcjfr-00000004lWX-3LGf; Tue, 28 Jan 2025 11:22:34 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id DADE5497; Tue, 28 Jan 2025 03:22:56 -0800 (PST) Received: from donnerap.manchester.arm.com (usa-sjc-imap-foss1.foss.arm.com [10.121.207.14]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id E79973F694; Tue, 28 Jan 2025 03:22:25 -0800 (PST) Date: Tue, 28 Jan 2025 11:22:21 +0000 From: Andre Przywara To: =?UTF-8?B?QW5kcsOhcyBTemVtesWR?= Cc: Michael Turquette , Stephen Boyd , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Chen-Yu Tsai , Jernej Skrabec , Samuel Holland , Linus Walleij , Philipp Zabel , Maxime Ripard , Vinod Koul , Kishon Vijay Abraham I , Ulf Hansson , Paul Walmsley , Palmer Dabbelt , Albert Ou , Uwe =?UTF-8?B?S2xlaW5lLUvDtm5pZw==?= , Florian Fainelli , linux-clk@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org, linux-gpio@vger.kernel.org, linux-pm@vger.kernel.org, linux-riscv@lists.infradead.org Subject: Re: [PATCH 05/12] clk: sunxi-ng: add CCU drivers for V853 Message-ID: <20250128112221.23201f2c@donnerap.manchester.arm.com> In-Reply-To: References: <20250110123923.270626-1-szemzo.andras@gmail.com> <20250110123923.270626-6-szemzo.andras@gmail.com> <20250128004211.5c6f0158@minigeek.lan> Organization: ARM X-Mailer: Claws Mail 3.18.0 (GTK+ 2.24.32; aarch64-unknown-linux-gnu) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250128_032231_999632_F80F7AF7 X-CRM114-Status: GOOD ( 57.47 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org T24gVHVlLCAyOCBKYW4gMjAyNSAxMDowNjo1MCArMDEwMApBbmRyw6FzIFN6ZW16xZEgPHN6ZW16 by5hbmRyYXNAZ21haWwuY29tPiB3cm90ZToKCkhpIEFuZHLDoXMsCgp0aGFua3MgZm9yIHRoZSBx dWljayBhbmQgdGhvcm91Z2ggcmVwbHksIG11Y2ggYXBwcmVjaWF0ZWQhCgo+IEhpIEFuZHJlLAo+ IAo+ID4gT24gMjggSmFuIDIwMjUsIGF0IDAxOjQyLCBBbmRyZSBQcnp5d2FyYSA8YW5kcmUucHJ6 eXdhcmFAYXJtLmNvbT4gd3JvdGU6Cj4gPiAKPiA+IE9uIEZyaSwgMTAgSmFuIDIwMjUgMTM6Mzk6 MTYgKzAxMDAKPiA+IEFuZHJhcyBTemVtem8gPHN6ZW16by5hbmRyYXNAZ21haWwuY29tPiB3cm90 ZToKPiA+IAo+ID4gSGkgQW5kcmFzLAo+ID4gCj4gPiBvaCBkZWFyLCB0aGF0J3MgYSBjb2RlIGxp bmUgYW5kIGEgaGFsZiEKPiA+IAo+ID4gRmlyc3QgdmVyeSBtdWNoIGZvciBzZW5kaW5nIHRoaXMs IEkga25vdyBmcm9tIChyZWNlbnQpIGV4cGVyaWVuY2UgdGhhdAo+ID4gdGhvc2UgY2xvY2sgZHJp dmVycyBjYW4gYmUgdmVyeSBkYXVudGluZyBhbmQgdGVkaW91cyB0byB3cml0ZQo+ID4gLi4ud2hp Y2ggaXMgdW5mb3J0dW5hdGVseSB0cnVlIGZvciB0aGUgcmV2aWV3IGFzIHdlbGwgOy0pCj4gPiAK PiA+IFNvIHRoaXMgaXMgdGhlIGZpcnN0IHJvdW5kLCBhcyBJIHdhcyBrZWVwaW5nIGFuZCB1cGRh dGluZyB0aGlzIGluIG15Cj4gPiBEcmFmdHMgZm9sZGVyIGZvciBhbG1vc3QgdHdvIHdlZWtzIG5v dy4KPiA+ICAgCj4gPj4gVjg1MyBoYXMgc2ltaWxhciBnYXRlcy9yZXNldHMgbGlrZSBleGlzdGlu ZyBBbGx3aW5uZXIgU09Dcy4gQWRkIHN1cHBvcnQgZm9yIGl0J3MgQ0NVIGFuZCBQUkNNIENDVS4K PiA+PiAKPiA+PiBTaWduZWQtb2ZmLWJ5OiBBbmRyYXMgU3plbXpvIDxzemVtem8uYW5kcmFzQGdt YWlsLmNvbT4KPiA+PiAtLS0KPiA+PiBkcml2ZXJzL2Nsay9zdW54aS1uZy9LY29uZmlnICAgICAg ICAgICAgfCAgIDEwICsKPiA+PiBkcml2ZXJzL2Nsay9zdW54aS1uZy9NYWtlZmlsZSAgICAgICAg ICAgfCAgICA0ICsKPiA+PiBkcml2ZXJzL2Nsay9zdW54aS1uZy9jY3Utc3VuOGktdjg1My1yLmMg fCAgIDk1ICsrCj4gPj4gZHJpdmVycy9jbGsvc3VueGktbmcvY2N1LXN1bjhpLXY4NTMtci5oIHwg ICAxNSArCj4gPj4gZHJpdmVycy9jbGsvc3VueGktbmcvY2N1LXN1bjhpLXY4NTMuYyAgIHwgMTE0 NSArKysrKysrKysrKysrKysrKysrKysrKwo+ID4+IGRyaXZlcnMvY2xrL3N1bnhpLW5nL2NjdS1z dW44aS12ODUzLmggICB8ICAgMTQgKwo+ID4+IDYgZmlsZXMgY2hhbmdlZCwgMTI4MyBpbnNlcnRp b25zKCspCj4gPj4gY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvY2xrL3N1bnhpLW5nL2NjdS1z dW44aS12ODUzLXIuYwo+ID4+IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2Nsay9zdW54aS1u Zy9jY3Utc3VuOGktdjg1My1yLmgKPiA+PiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9jbGsv c3VueGktbmcvY2N1LXN1bjhpLXY4NTMuYwo+ID4+IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L2Nsay9zdW54aS1uZy9jY3Utc3VuOGktdjg1My5oCj4gPj4gCj4gPj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvY2xrL3N1bnhpLW5nL0tjb25maWcgYi9kcml2ZXJzL2Nsay9zdW54aS1uZy9LY29uZmln Cj4gPj4gaW5kZXggYjU0NzE5OGEyYzY1Li5jNDMwMDIyNDZiMjIgMTAwNjQ0Cj4gPj4gLS0tIGEv ZHJpdmVycy9jbGsvc3VueGktbmcvS2NvbmZpZwo+ID4+ICsrKyBiL2RyaXZlcnMvY2xrL3N1bnhp LW5nL0tjb25maWcKPiA+PiBAQCAtMjIsNiArMjIsMTYgQEAgY29uZmlnIFNVTjIwSV9EMV9SX0ND VQo+ID4+IGRlZmF1bHQgeQo+ID4+IGRlcGVuZHMgb24gTUFDSF9TVU44SSB8fCBSSVNDViB8fCBD T01QSUxFX1RFU1QKPiA+PiAKPiA+PiArY29uZmlnIFNVTjhJX1Y4NTNfQ0NVCj4gPj4gKyB0cmlz dGF0ZSAiU3VwcG9ydCBmb3IgdGhlIEFsbHdpbm5lciBWODUzIENDVSIKPiA+PiArIGRlZmF1bHQg TUFDSF9TVU44SQo+ID4+ICsgZGVwZW5kcyBvbiBNQUNIX1NVTjhJIHx8IENPTVBJTEVfVEVTVAo+ ID4+ICsKPiA+PiArY29uZmlnIFNVTjhJX1Y4NTNfUl9DQ1UKPiA+PiArIHRyaXN0YXRlICJTdXBw b3J0IGZvciB0aGUgQWxsd2lubmVyIFY4NTMgUFJDTSBDQ1UiCj4gPj4gKyBkZWZhdWx0IE1BQ0hf U1VOOEkKPiA+PiArIGRlcGVuZHMgb24gTUFDSF9TVU44SSB8fCBDT01QSUxFX1RFU1QKPiA+PiAr Cj4gPj4gY29uZmlnIFNVTjUwSV9BNjRfQ0NVCj4gPj4gdHJpc3RhdGUgIlN1cHBvcnQgZm9yIHRo ZSBBbGx3aW5uZXIgQTY0IENDVSIKPiA+PiBkZWZhdWx0IHkKPiA+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9jbGsvc3VueGktbmcvTWFrZWZpbGUgYi9kcml2ZXJzL2Nsay9zdW54aS1uZy9NYWtlZmls ZQo+ID4+IGluZGV4IDZiM2FlMmI2MjBkYi4uYzMyNDMwZDg3NGVhIDEwMDY0NAo+ID4+IC0tLSBh L2RyaXZlcnMvY2xrL3N1bnhpLW5nL01ha2VmaWxlCj4gPj4gKysrIGIvZHJpdmVycy9jbGsvc3Vu eGktbmcvTWFrZWZpbGUKPiA+PiBAQCAtMjcsNiArMjcsOCBAQCBzdW54aS1jY3UteSArPSBjY3Vf bXAubwo+ID4+IG9iai0kKENPTkZJR19TVU5JVl9GMUMxMDBTX0NDVSkgKz0gc3VuaXYtZjFjMTAw cy1jY3Uubwo+ID4+IG9iai0kKENPTkZJR19TVU4yMElfRDFfQ0NVKSArPSBzdW4yMGktZDEtY2N1 Lm8KPiA+PiBvYmotJChDT05GSUdfU1VOMjBJX0QxX1JfQ0NVKSArPSBzdW4yMGktZDEtci1jY3Uu bwo+ID4+ICtvYmotJChDT05GSUdfU1VOOElfVjg1M19DQ1UpICs9IHN1bjhpLXY4NTMtY2N1Lm8K PiA+PiArb2JqLSQoQ09ORklHX1NVTjhJX1Y4NTNfUl9DQ1UpICs9IHN1bjhpLXY4NTMtci1jY3Uu bwo+ID4+IG9iai0kKENPTkZJR19TVU41MElfQTY0X0NDVSkgKz0gc3VuNTBpLWE2NC1jY3Uubwo+ ID4+IG9iai0kKENPTkZJR19TVU41MElfQTEwMF9DQ1UpICs9IHN1bjUwaS1hMTAwLWNjdS5vCj4g Pj4gb2JqLSQoQ09ORklHX1NVTjUwSV9BMTAwX1JfQ0NVKSArPSBzdW41MGktYTEwMC1yLWNjdS5v Cj4gPj4gQEAgLTUwLDYgKzUyLDggQEAgb2JqLSQoQ09ORklHX1NVTjlJX0E4MF9DQ1UpICs9IHN1 bjlpLWE4MC1kZS1jY3Uubwo+ID4+IG9iai0kKENPTkZJR19TVU45SV9BODBfQ0NVKSArPSBzdW45 aS1hODAtdXNiLWNjdS5vCj4gPj4gCj4gPj4gc3VuaXYtZjFjMTAwcy1jY3UteSArPSBjY3Utc3Vu aXYtZjFjMTAwcy5vCj4gPj4gK3N1bjhpLXY4NTMtY2N1LXkgKz0gY2N1LXN1bjhpLXY4NTMubwo+ ID4+ICtzdW44aS12ODUzLXItY2N1LXkgKz0gY2N1LXN1bjhpLXY4NTMtci5vCj4gPj4gc3VuMjBp LWQxLWNjdS15ICs9IGNjdS1zdW4yMGktZDEubwo+ID4+IHN1bjIwaS1kMS1yLWNjdS15ICs9IGNj dS1zdW4yMGktZDEtci5vCj4gPj4gc3VuNTBpLWE2NC1jY3UteSArPSBjY3Utc3VuNTBpLWE2NC5v Cj4gPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2xrL3N1bnhpLW5nL2NjdS1zdW44aS12ODUzLXIu YyBiL2RyaXZlcnMvY2xrL3N1bnhpLW5nL2NjdS1zdW44aS12ODUzLXIuYwo+ID4+IG5ldyBmaWxl IG1vZGUgMTAwNjQ0Cj4gPj4gaW5kZXggMDAwMDAwMDAwMDAwLi4xOWE4YmE1ODc3OTMKPiA+PiAt LS0gL2Rldi9udWxsCj4gPj4gKysrIGIvZHJpdmVycy9jbGsvc3VueGktbmcvY2N1LXN1bjhpLXY4 NTMtci5jCj4gPj4gQEAgLTAsMCArMSw5NSBAQAo+ID4+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRp ZmllcjogR1BMLTMuMAo+ID4+ICsvKiBDb3B5cmlnaHQoYykgMjAyMCAtIDIwMjMgQWxsd2lubmVy IFRlY2hub2xvZ3kgQ28uLEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gIAo+ID4gCj4gPiBTbyBk b2VzIHRoYXQgbWVhbiB5b3UgY29waWVkIHRoYXQgZnJvbSB0aGUgQlNQPyBIb3cgbXVjaCBpcyB5 b3VyIG93bgo+ID4gd29yayB0aGVuPyBTaG91bGQgInJlbmdhb21pbiIgYmUgdGhlbiB0aGUgYXV0 aG9yPwo+ID4gCj4gPiBCdXQgbW9yZSBpbXBvcnRhbnRseTogQXMgZmFyIGFzIEkga25vdywgR1BM LTMgaXMgTk9UIGNvbXBhdGlibGUgd2l0aAo+ID4gdGhlIGtlcm5lbC4gWW91IGRlZmluaXRlbHkg Y2Fubm90IGFkZCBjb2RlIHdpdGggdGhhdCBsaWNlbnNlLCBhbmQgZnJvbQo+ID4gbXkgdW5kZXJz dGFuZGluZyBjYW5ub3QgY29weSBHUEwtMyBjb2RlIHdpdGhvdXQga2VlcGluZyB0aGUgbGljZW5z ZSwKPiA+IHdoaWNoIG1lYW5zIGNvcHlpbmcgaXMgYSBuby1nby4KPiA+IFlvdSB3b3VsZCBuZWVk IHRvIGFzayB0aGUgb3JpZ2luYWwgYXV0aG9yIHRvIGNoYW5nZSB0aGUgbGljZW5zZS4gSSBoYXZl Cj4gPiBzZWVuIGxpY2Vuc2UgY2hhbmdlcyBpbiBnaXRodWIgcmVwb3MgbWlycm9yaW5nIEFsbHdp bm5lcidzIFNESyBpbiB0aGUKPiA+IGxhc3QgZmV3IG1vbnRocyAoc29tZW9uZSBtdXN0IGhhdmUg dG9sZCB0aGVtPyksIHNvIGl0J3Mgd29ydGggY2hlY2tpbmcKPiA+IGJhY2sgdGhlcmUgdG8gc2Vl IGlmIHRoZSBsaWNlbnNlIGhhcyBjaGFuZ2VkLgo+ID4gCj4gPiBCdXQgd2l0aCB0aGF0IGhlYWRl ciwgYW5kIHdpdGggdGhhdCBzb3VyY2UgKHN1YmplY3QgdG8gY2xhcmlmaWNhdGlvbikKPiA+IHRo aXMgY2Fubm90IGJlIG1lcmdlZCBhcyBzdWNoLgo+ID4gICAKPiAKPiBJbiB0aGUgZGF0YXNoZWV0 IHdoYXQgSSBoYXZlLCBhbGwgdGhpcyBSX1BSQ00gYmxvY2sgaXMgbWVudGlvbmVkIG9ubHkgYXQg dGhlIG1lbW9yeSBtYXBwaW5nLgo+IEkgZGlkJ3QgZm91bmQgYW55IG90aGVyIGRvY3VtZW50YXRp b24gYWJvdXQgdGhpcyBJUC4gCgpZZWFoLCB0aGF0J3MgcXVpdGUgY29tbW9uLCB0aGUgUFJDTSBp cyByYXJlbHkgZG9jdW1lbnRlZC4gSXQncyBhbHNvIHF1aXRlCnN0YWJsZSBhY3Jvc3MgdGhlIG1v ZGVybiBTb0MsIGFuZCBieSBjaGFuY2UgdGhlIEE1MjMgbWFudWFsIGFjdHVhbGx5CmRvY3VtZW50 cyB0aGF0LCBzbyB5b3UgY2FuIHBlZWsgaW4gdGhlcmUuIFRoZSBWODUzIGlzIHByb2JhYmx5IGEg c3Vic2V0IG9mCndoYXQncyBpbiB0aGUgQTUyMy4KWW91IGNhbiBhbHNvIHByb2JlIHJlZ2lzdGVy cyBmcm9tIFUtQm9vdDoKPT4gbXcubCAweDcwMTAxMmMgMHhmZmZmZmZmZgo9PiBtZC5sIDB4NzAx MDEyYwoKVGhhdCB0ZWxscyB5b3Ugd2hpY2ggYml0cyBhcmUgYWN0dWFsbHkgaW1wbGVtZW50ZWQu IEZlZWwgZnJlZSB0byBwcm9iZQphcm91bmQgb3RoZXIgcmVnaXN0ZXJzLCBlc3BlY2lhbGx5IHRo b3NlIGVuZGluZyBpbiAiYyIsIHdoaWNoIGFyZSB0eXBpY2FsbHkKZ2F0ZXMgYW5kIHJlc2V0cy4g VGhpcyB3b3VsZCBnaXZlIHlvdSBzb21lIGNvbmZpcm1hdGlvbi4KClNvIGNhbiB5b3UgZG8gdGhl IGZvbGxvd2luZzoKRGVsZXRlIHRoYXQgZmlsZSBoZXJlLCBhbmQgY29weSBvdmVyIGNjdS1zdW4y MGktZDEtci5jLiBBZGQgeW91cgpjb3B5cmlnaHQsIGFuZCB1c2UgIkJhc2VkIG9uIC4uLiIuClRo ZW4gYWRqdXN0IHRoYXQgZmlsZSBhY2NvcmRpbmcgdG8gdGhlIGluZm9ybWF0aW9uIGdhdGhlcmVk IGJ5IGluc3BlY3RpbmcKdGhlIEFsbHdpbm5lciBzb3VyY2UgZmlsZSB5b3UgbWVudGlvbiBiZWxv dy4gU2luY2Ugd2UgYXJlIHRhbGtpbmcgYWJvdXQgYQpoYW5kZnVsIG9mIGNsb2NrcyBvbmx5LCB0 aGF0IHNob3VsZCBiZSBlYXN5IGVub3VnaD8KVGhlbiB3ZSBoYXZlIGEgY2xlYW4gc2hlZXQgbGlj ZW5zZS13aXNlLCBhbmQgeW91IGNvcHkgZnJvbSBhIG11Y2ggYmV0dGVyCnNvdXJjZSBhbnl3YXkg KGp1c3Qgc2VlaW5nIGNhcGl0YWwgbGV0dGVyIGhleCBjb25zdGFudHMgYmVsb3csIGZvcgppbnN0 YW5jZSkuCgo+IFRoZXJlIGlzIGEgZHJpdmVyIFsxXSBiYXNlZCBvbiB0aGUgbW9yZSBvciBsZXNz IG1haW5saW5lJ2lzaCBzdW54aS1uZyBjbGsgCj4gZnJhbWV3b3JrLCBzbyBJIHRvb2sgdGhhdCBh bmQgbWFkZSBpdCB3b3JrIHdpdGggdGhpcyB2ODUzLWNjdSBkcml2ZXIuIAo+IAo+IEkgZG9u4oCZ dCBrbm93IHdoYXQgc2hvdWxkL2NhbiBJIGRvIHdpdGggdGhlIExpY2VuY2Ugb3IgaG93IHNob3Vs ZCBpdCBkb25lIHByb3Blcmx5LAo+IGFzIGl04oCZcyBiYXNpY2FsbHkgYSBmZXcgcmVnaXN0ZXJz L2JpdHMsIGJ1dCB3aXRob3V0IGRvY3VtZW50YXRpb24gaXTigJlzIGhhcmQgdG8gd3JpdGUgaXQg ZnJvbSBzY3JhdGNoLgoKQWJzb2x1dGVseSwgYW5kIG5vcm1hbGx5IGl0J3MgYSBuby1icmFpbmVy LCBzaW5jZSBldmVuIEFsbHdpbm5lciBMaW51eApjb2RlIG11c3QgYmUgR1BMLCBidXQgaW4gdGhp cyBzcGVjaWFsIGNhc2UgdGhleSBiZWNhbWUgb3ZlcnplYWxvdXMgYW5kIHB1dApHUEwtMy4wIGlu IDotKAoKPiAKPiBbMV06IGh0dHBzOi8vZ2l0aHViLmNvbS9ZdXp1a2lIRC9UaW55VmlzaW9uL2Js b2IvbWFpbi9rZXJuZWwvYnNwL2RyaXZlcnMvY2xrL3N1bnhpLW5nL2NjdS1zdW44aXcyMS1yLmMK PiAKPiA+PiArICoKPiA+PiArICogQ29weXJpZ2h0IChjKSAyMDIzIHJlbmdhb21pbkBhbGx3aW5u ZXJ0ZWNoLmNvbQo+ID4+ICsgKi8KPiA+PiArCj4gPj4gKyNpbmNsdWRlIDxsaW51eC9jbGstcHJv dmlkZXIuaD4KPiA+PiArI2luY2x1ZGUgPGxpbnV4L2lvLmg+Cj4gPj4gKyNpbmNsdWRlIDxsaW51 eC9tb2R1bGUuaD4KPiA+PiArI2luY2x1ZGUgPGxpbnV4L29mX2FkZHJlc3MuaD4KPiA+PiArI2lu Y2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgo+ID4+ICsKPiA+PiArI2luY2x1ZGUgImNj dV9jb21tb24uaCIKPiA+PiArI2luY2x1ZGUgImNjdV9yZXNldC5oIgo+ID4+ICsKPiA+PiArI2lu Y2x1ZGUgImNjdV9kaXYuaCIKPiA+PiArI2luY2x1ZGUgImNjdV9nYXRlLmgiCj4gPj4gKyNpbmNs dWRlICJjY3VfbXAuaCIKPiA+PiArI2luY2x1ZGUgImNjdV9tdWx0LmgiCj4gPj4gKyNpbmNsdWRl ICJjY3VfbmsuaCIKPiA+PiArI2luY2x1ZGUgImNjdV9ua20uaCIKPiA+PiArI2luY2x1ZGUgImNj dV9ua21wLmgiCj4gPj4gKyNpbmNsdWRlICJjY3Vfbm0uaCIKPiA+PiArCj4gPj4gKyNpbmNsdWRl ICJjY3Utc3VuOGktdjg1My1yLmgiCj4gPj4gKwo+ID4+ICsKPiA+PiArc3RhdGljIFNVTlhJX0ND VV9HQVRFKHJfdHdkX2NsaywgInItdHdkIiwgIm9zYzI0TSIsIDB4MDEyQywgQklUKDApLCAwKTsK PiA+PiArc3RhdGljIFNVTlhJX0NDVV9HQVRFKHJfcHB1X2NsaywgInItcHB1IiwgIm9zYzI0TSIs IDB4MDFBQywgQklUKDApLCAwKTsKPiA+PiArc3RhdGljIFNVTlhJX0NDVV9HQVRFKHJfcnRjX2Ns aywgInItcnRjIiwgIm9zYzI0TSIsIDB4MDIwQywgQklUKDApLCAwKTsKPiA+PiArc3RhdGljIFNV TlhJX0NDVV9HQVRFKHJfY3B1Y2ZnX2NsaywgInItY3B1Y2ZnIiwgIm9zYzI0TSIsCj4gPj4gKyAw eDAyMkMsIEJJVCgwKSwgMCk7Cj4gPj4gKwo+ID4+ICtzdGF0aWMgc3RydWN0IGNjdV9yZXNldF9t YXAgc3VuOGlfdjg1M19yX2NjdV9yZXNldHNbXSA9IHsKPiA+PiArIFtSU1RfQlVTX1JfUFBVXSA9 IHsgMHgwMWFjLCBCSVQoMTYpIH0sCj4gPj4gKyBbUlNUX0JVU19SX1JUQ10gPSB7IDB4MDIwYywg QklUKDE2KSB9LAo+ID4+ICsgW1JTVF9CVVNfUl9DUFVDRkddID0geyAweDAyMmMsIEJJVCgxNikg fSwKPiA+PiArfTsKPiA+PiArCj4gPj4gK3N0YXRpYyBzdHJ1Y3QgY2xrX2h3X29uZWNlbGxfZGF0 YSBzdW44aV92ODUzX3JfaHdfY2xrcyA9IHsKPiA+PiArIC5od3MgICAgPSB7Cj4gPj4gKyBbQ0xL X1JfVFdEXSA9ICZyX3R3ZF9jbGsuY29tbW9uLmh3LAo+ID4+ICsgW0NMS19SX1BQVV0gPSAmcl9w cHVfY2xrLmNvbW1vbi5odywKPiA+PiArIFtDTEtfUl9SVENdID0gJnJfcnRjX2Nsay5jb21tb24u aHcsCj4gPj4gKyBbQ0xLX1JfQ1BVQ0ZHXSA9ICZyX2NwdWNmZ19jbGsuY29tbW9uLmh3LAo+ID4+ ICsgfSwKPiA+PiArIC5udW0gPSBDTEtfTlVNQkVSLAo+ID4+ICt9Owo+ID4+ICsKPiA+PiArc3Rh dGljIHN0cnVjdCBjY3VfY29tbW9uICpzdW44aV92ODUzX3JfY2N1X2Nsa3NbXSA9IHsKPiA+PiAr ICZyX3R3ZF9jbGsuY29tbW9uLAo+ID4+ICsgJnJfcHB1X2Nsay5jb21tb24sCj4gPj4gKyAmcl9y dGNfY2xrLmNvbW1vbiwKPiA+PiArICZyX2NwdWNmZ19jbGsuY29tbW9uLAo+ID4+ICt9Owo+ID4+ ICsKPiA+PiArCj4gPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc3VueGlfY2N1X2Rlc2Mgc3VuOGlf djg1M19yX2NjdV9kZXNjID0gewo+ID4+ICsgLmNjdV9jbGtzID0gc3VuOGlfdjg1M19yX2NjdV9j bGtzLAo+ID4+ICsgLm51bV9jY3VfY2xrcyA9IEFSUkFZX1NJWkUoc3VuOGlfdjg1M19yX2NjdV9j bGtzKSwKPiA+PiArCj4gPj4gKyAuaHdfY2xrcyA9ICZzdW44aV92ODUzX3JfaHdfY2xrcywKPiA+ PiArCj4gPj4gKyAucmVzZXRzID0gc3VuOGlfdjg1M19yX2NjdV9yZXNldHMsCj4gPj4gKyAubnVt X3Jlc2V0cyA9IEFSUkFZX1NJWkUoc3VuOGlfdjg1M19yX2NjdV9yZXNldHMpLAo+ID4+ICt9Owo+ ID4+ICsKPiA+PiArc3RhdGljIGludCBzdW44aV92ODUzX3JfY2N1X3Byb2JlKHN0cnVjdCBwbGF0 Zm9ybV9kZXZpY2UgKnBkZXYpCj4gPj4gK3sKPiA+PiArIHZvaWQgX19pb21lbSAqcmVnOwo+ID4+ ICsKPiA+PiArIHJlZyA9IGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZShwZGV2LCAwKTsK PiA+PiArIGlmIChJU19FUlIocmVnKSkKPiA+PiArIHJldHVybiBQVFJfRVJSKHJlZyk7Cj4gPj4g Kwo+ID4+ICsgcmV0dXJuIGRldm1fc3VueGlfY2N1X3Byb2JlKCZwZGV2LT5kZXYsIHJlZywgJnN1 bjhpX3Y4NTNfcl9jY3VfZGVzYyk7Cj4gPj4gK30KPiA+PiArCj4gPj4gK3N0YXRpYyBjb25zdCBz dHJ1Y3Qgb2ZfZGV2aWNlX2lkIHN1bjhpX3Y4NTNfcl9jY3VfaWRzW10gPSB7Cj4gPj4gKyB7IC5j b21wYXRpYmxlID0gImFsbHdpbm5lcixzdW44aS12ODUzLXItY2N1IiB9LAo+ID4+ICsgeyB9Cj4g Pj4gK307Cj4gPj4gKwo+ID4+ICtzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBzdW44aV92 ODUzX3JfY2N1X2RyaXZlciA9IHsKPiA+PiArIC5wcm9iZSA9IHN1bjhpX3Y4NTNfcl9jY3VfcHJv YmUsCj4gPj4gKyAuZHJpdmVyID0gewo+ID4+ICsgLm5hbWUgPSAic3VuOGktdjg1My1yLWNjdSIs Cj4gPj4gKyAuc3VwcHJlc3NfYmluZF9hdHRycyA9IHRydWUsCj4gPj4gKyAub2ZfbWF0Y2hfdGFi bGUgPSBzdW44aV92ODUzX3JfY2N1X2lkcywKPiA+PiArIH0sCj4gPj4gK307Cj4gPj4gK21vZHVs ZV9wbGF0Zm9ybV9kcml2ZXIoc3VuOGlfdjg1M19yX2NjdV9kcml2ZXIpOwo+ID4+ICsKPiA+PiAr TU9EVUxFX0lNUE9SVF9OUygiU1VOWElfQ0NVIik7Cj4gPj4gK01PRFVMRV9MSUNFTlNFKCJHUEwi KTsKPiA+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9jbGsvc3VueGktbmcvY2N1LXN1bjhpLXY4NTMt ci5oIGIvZHJpdmVycy9jbGsvc3VueGktbmcvY2N1LXN1bjhpLXY4NTMtci5oCj4gPj4gbmV3IGZp bGUgbW9kZSAxMDA2NDQKPiA+PiBpbmRleCAwMDAwMDAwMDAwMDAuLjE1NmNhMTVlODIwOAo+ID4+ IC0tLSAvZGV2L251bGwKPiA+PiArKysgYi9kcml2ZXJzL2Nsay9zdW54aS1uZy9jY3Utc3VuOGkt djg1My1yLmgKPiA+PiBAQCAtMCwwICsxLDE1IEBACj4gPj4gKy8qIFNQRFgtTGljZW5zZS1JZGVu dGlmaWVyOiBHUEwtMi4wICovICAKPiA+IAo+ID4gSGVyZSB0aGUgbGljZW5zZSBsb29rcyByaWdo dCwgYnV0IHRoZSBhdXRob3JzaGlwIGFuZCBzb3VyY2UgYXJlIHN0aWxsCj4gPiBpbiBxdWVzdGlv bi4gTG9va3MgbGlrZSB0aGUgb25seSByZWFsIGNvZGUgaW4gaGVyZSBpcyBDTEtfTlVNQkVSLCBz byBpZgo+ID4gdGhhdCBpcyB5b3VyIGxpbmUsIGRyb3AgYWxsIHRob3NlIGJvZ3VzIGNvcHlyaWdo dHMsIGFuZCBwdXQgaW4geW91ciBvd24uICAKPiAKPiBPaywgSeKAmWxsLgo+IAo+ID4gICAKPiA+ PiArLyogQ29weXJpZ2h0KGMpIDIwMjAgLSAyMDIzIEFsbHdpbm5lciBUZWNobm9sb2d5IENvLixM dGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4gPj4gKyAqCj4gPj4gKyAqIENvcHlyaWdodCAoYykg MjAyMyByZW5nYW9taW5AYWxsd2lubmVydGVjaC5jb20KPiA+PiArICovCj4gPj4gKwo+ID4+ICsj aWZuZGVmIF9DQ1VfU1VOOElfVjg1M19SX0gKPiA+PiArI2RlZmluZSBfQ0NVX1NVTjhJX1Y4NTNf Ul9ICj4gPj4gKwo+ID4+ICsjaW5jbHVkZSA8ZHQtYmluZGluZ3MvY2xvY2svc3VuOGktdjg1My1y LWNjdS5oPgo+ID4+ICsjaW5jbHVkZSA8ZHQtYmluZGluZ3MvcmVzZXQvc3VuOGktdjg1My1yLWNj dS5oPgo+ID4+ICsKPiA+PiArI2RlZmluZSBDTEtfTlVNQkVSIENMS19SX01BWF9OTyAgCj4gPiAK PiA+IFdoYXQncyAiQ0xLX1JfTUFYX05PIj8gSSB0aGluayB3ZSBwdXQgaW4gdGhlIGFjdHVhbCBs YXN0IGNsb2NrIG5hbWUgaW4sCj4gPiB0cmFkaXRpb25hbGx5Pwo+ID4gICAKPiAKPiBZZXMsIHlv dSBhcmUgcmlnaHQuCgpHcmVhdCwgbm93IGl0J3MgeW91ciBwYXRjaCBhbnl3YXksIHNvIHlvdSBj YW4gZWFzaWx5IGNsYWltIHRoZSBjb3B5cmlnaHQKYW5kIGF1dGhvcnNoaXAgOy0pCgo+ID4+ICsK PiA+PiArI2VuZGlmCj4gPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2xrL3N1bnhpLW5nL2NjdS1z dW44aS12ODUzLmMgYi9kcml2ZXJzL2Nsay9zdW54aS1uZy9jY3Utc3VuOGktdjg1My5jCj4gPj4g bmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+PiBpbmRleCAwMDAwMDAwMDAwMDAuLmExOTQ3MzU3YTA4 ZQo+ID4+IC0tLSAvZGV2L251bGwKPiA+PiArKysgYi9kcml2ZXJzL2Nsay9zdW54aS1uZy9jY3Ut c3VuOGktdjg1My5jCj4gPj4gQEAgLTAsMCArMSwxMTQ1IEBACj4gPj4gKy8vIFNQRFgtTGljZW5z ZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKPiA+PiArLyoKPiA+PiArICogQ29weXJpZ2h0IChD KSAyMDI0IEFuZHJhcyBTemVtem8gPHN6ZW16by5hbmRyYXNAZ21haWwuY29tPgo+ID4+ICsgKgo+ ID4+ICsgKiBCYXNlZCBvbiBjY3Utc3VuMjBpLWQxLmMsIHdoaWNoIGlzOgo+ID4+ICsgKiBDb3B5 cmlnaHQgKEMpIDIwMjEgU2FtdWVsIEhvbGxhbmQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAKPiA+ IAo+ID4gQWxsIHJpZ2h0cyByZXNlcnZlZD8gV2hlcmUgZG9lcyB0aGF0IGNvbWUgZnJvbT8gUGxl YXNlIHJlbW92ZSB0aGF0Lgo+ID4gICAKPiAKPiBTdGFydGluZyB0byB3cml0ZSB0aGUgZmlyc3Qg Y2N1IGRyaXZlciB3aXRob3V0IHByaW9yIGtub3dsZWRnZSBpcyBub3QgYW4gZWFzeSB0YXNrLCBz byBJIHN0YXJ0ZWQgZnJvbSB0aGUgZDEgY2N1IGRyaXZlci4gSSBkb27igJl0IGtub3cKPiBob3cg bXVjaCBmcm9tIHRoYXQgcmVtYWlucyBhY3R1YWxseSwgYnV0IEkgZG9u4oCZdCB3YW50ZWQgdG8g cmVtb3ZlIHRoYXQgY29tbWVudC4gSSBsb29rZWQgYXJvdW5kIGhvdyBzaG91bGQgaXQgYmUgZG9u ZQo+IGNvcnJlY3RseSwgYW5kIGNvcGllZCB0aGUgcmVtYXJrIGZyb20gdGhlIGNjdS1zdW44aS12 M3MuYwo+IAo+IEl0IGhhcyBleGFjdGx5IHRoZSBzYW1lIGNvcHlyaWdodC4gCj4gLi4KPiAgKiBC YXNlZCBvbiBjY3Utc3VuOGktaDMuYywgd2hpY2ggaXM6Cj4gICogQ29weXJpZ2h0IChjKSAyMDE2 IE1heGltZSBSaXBhcmQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgpBaCwgSSBkaWRuJ3Qgc2VlIGl0 IHdpdGggU2FtdWVsJ3MgbmFtZSwgaGVuY2Ugd2FzIHdvbmRlcmluZy4gVGhlIEgzCmhlcml0YWdl IGlzIGJ5IG5vdyBxdWl0ZSBpbnNpZ25pZmljYW50LCBJJ2Qgc2F5LCBhbmQgc2luY2UgeW91IGRy b3BwZWQKTWF4aW1lIGFueXdheSwgeW91IGNhbiBqdXN0IGNvcHkgU2FtdWVsJ3MgbGluZSwgd2l0 aG91dCB0aGUgIkFsbCByaWdodHMKcmVzZXJ2ZWQiLiBJdCdzIHByb2JhYmx5IHJlZHVuZGFudCBh bnl3YXkuCgo+IEnigJlsbCByZW1vdmUgdGhhdC4gCgpTbyB5ZXMsIGp1c3QgcmVtb3ZlIHRoZSAi QWxsIHJpZ2h0cyByZXNlcnZlZC4iIFRoYW5rcy4KCj4gCj4gPj4gKyAqLwo+ID4+ICsKPiA+PiAr I2luY2x1ZGUgPGxpbnV4L2Nsay1wcm92aWRlci5oPgo+ID4+ICsjaW5jbHVkZSA8bGludXgvaW8u aD4KPiA+PiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+ID4+ICsjaW5jbHVkZSA8bGludXgv cGxhdGZvcm1fZGV2aWNlLmg+Cj4gPj4gKwo+ID4+ICsjaW5jbHVkZSAiLi4vY2xrLmgiCj4gPj4g Kwo+ID4+ICsjaW5jbHVkZSAiY2N1X2NvbW1vbi5oIgo+ID4+ICsjaW5jbHVkZSAiY2N1X3Jlc2V0 LmgiCj4gPj4gKwo+ID4+ICsjaW5jbHVkZSAiY2N1X2Rpdi5oIgo+ID4+ICsjaW5jbHVkZSAiY2N1 X2dhdGUuaCIKPiA+PiArI2luY2x1ZGUgImNjdV9tcC5oIgo+ID4+ICsjaW5jbHVkZSAiY2N1X211 bHQuaCIKPiA+PiArI2luY2x1ZGUgImNjdV9uay5oIgo+ID4+ICsjaW5jbHVkZSAiY2N1X25rbS5o Igo+ID4+ICsjaW5jbHVkZSAiY2N1X25rbXAuaCIKPiA+PiArI2luY2x1ZGUgImNjdV9ubS5oIgo+ ID4+ICsKPiA+PiArI2luY2x1ZGUgImNjdS1zdW44aS12ODUzLmgiCj4gPj4gKwo+ID4+ICtzdGF0 aWMgY29uc3Qgc3RydWN0IGNsa19wYXJlbnRfZGF0YSBvc2MyNE1bXSA9IHsKPiA+PiArIHsgLmZ3 X25hbWUgPSAiaG9zYyIgfQo+ID4+ICt9Owo+ID4+ICsKPiA+PiArLyoKPiA+PiArICogRm9yIHRo ZSBDUFUgUExMLCB0aGUgb3V0cHV0IGRpdmlkZXIgaXMgZGVzY3JpYmVkIGFzICJvbmx5IGZvciB0 ZXN0aW5nIgo+ID4+ICsgKiBpbiB0aGUgdXNlciBtYW51YWwuIFNvIGl0J3Mgbm90IG1vZGVsbGVk IGFuZCBmb3JjZWQgdG8gMC4KPiA+PiArICovCj4gPj4gKyNkZWZpbmUgU1VOOElfVjg1M19QTExf Q1BVX1JFRyAweDAwMAo+ID4+ICsKPiA+PiArc3RhdGljIHN0cnVjdCBjY3VfbXVsdCBwbGxfY3B1 X2NsayA9IHsKPiA+PiArIC5lbmFibGUgPSBCSVQoMjcpIHwgQklUKDMwKSB8IEJJVCgzMSksICAK PiA+IAo+ID4gQnV0IGJpdCAzMCBhbmQgMzEgYXJlIHNldCBhbHJlYWR5IGJ5IHRoZSBQTEwgbG9v cCBpbiB0aGUgcHJvYmUgcm91dGluZQo+ID4gYmVsb3csIHNvIHdlIGp1c3QgbmVlZCBiaXQgMjcg dG8gZ2F0ZSB0aGUgb3V0cHV0Lgo+ID4gICAKPiA+PiArIC5sb2NrID0gQklUKDI4KSwKPiA+PiAr IC5tdWx0ID0gX1NVTlhJX0NDVV9NVUxUX01JTig4LCA4LCAxMiksICAKPiA+IAo+ID4gdGVjaG5p Y2FsbHkgdGhlIG1hbnVhbCBzYXlzIHRoZSBtaW5pbXVtIGlzIDExLCB0aG91Z2ggdGhpcyBkb2Vz bid0Cj4gPiByZWFsbHkgbWF0dGVyLCBhcyB3ZSB3aWxsIG5ldmVyIGdvIHRoYXQgbG93IGFueXdh eS4KPiA+ICAgCj4gPj4gKyAuY29tbW9uID0gewo+ID4+ICsgLnJlZyA9IDB4MDAwLAo+ID4+ICsg Lmh3LmluaXQgPSBDTEtfSFdfSU5JVF9QQVJFTlRTX0RBVEEoInBsbC1jcHUiLCBvc2MyNE0sCj4g Pj4gKyAgICAmY2N1X211bHRfb3BzLAo+ID4+ICsgICAgQ0xLX1NFVF9SQVRFX1VOR0FURSksICAK PiA+IAo+ID4gVGhpcyBtdXN0IGJlIENMS19TRVRfUkFURV9HQVRFLCBhcyB3ZSBmaWd1cmVkIHNv bWUgd2Vla3MgYWdvLiBUaGUgbWFudWFsCj4gPiBzYXlzIHRoYXQgZm9yIGNoYW5naW5nIHRoZSBm cmVxdWVuY3kgeW91IG11c3QgbGVhdmUgdGhlIFBMTCBlbmFibGVkCj4gPiAoYml0cyAzMSBhbmQg MzAgPSAxKSwgYnV0IGdhdGUgdGhlIG91dHB1dCAoYml0IDI3ID0gMCkuIFRoZSAiR0FURSIgaW4K PiA+IHRoYXQgZmxhZyBuYW1lIGhlcmUgcmVmZXJzIHRvIHRoZSAuZW5hYmxlIG1hc2sgYWJvdmUu Cj4gPiBTbyBDTEtfU0VUX1JBVEVfVU5HQVRFIHdvdWxkIG1lYW46IGRvbid0IHRvdWNoIHRoZSBl bmFibGUgYml0LCBidXQga2VlcAo+ID4gaXQgcnVubmluZywgd2hpY2ggd291bGQgYmUgY29ycmVj dCBpZiB0aGUgZW5hYmxlIGJpdCB3b3VsZCBiZSBhYm91dCB0aGUKPiA+IHJlYWwgZW5hYmxlIGJp dCAoYml0IDMxKS4gQnV0IHNpbmNlIHdlIG1vZGVsIHRoaXMgbGlrZSAiZW5hYmxlIG1lYW5zIG5v dAo+ID4gZ2F0ZWQiLCB3ZSBtdXN0IGdhdGUgdGhlIG91dHB1dCwgYnkgc2V0dGluZyB0aGUgZW5h YmxlIGJpdCB0byAwLgo+ID4gQ0xLX1NFVF9SQVRFX0dBVEUgZG9lcyBleGFjdGx5IHRoYXQuCj4g PiAgIAo+IAo+IEFsbCB0aGlzIEJJVCAoMzAsIDMxLCAyNykgYW5kIE1VTFRfTUlOIDEyIGFyZSBj b21lcyBmcm9tIHRoZSBtaXN0YWtlIHRoYXQgSSB0cmllZCB0byBmb2xsb3cgdGhlIEJTUAo+IGRy aXZlciBbMl0gdG9vIGNsb3NlbHkuCj4gQXMgdGhlIGNwdSBmcmVxLiBzY2FsaW5nIGFyZSB3b3Jr aW5nIFszXSB3aXRoIHRoaXMgc2V0dGluZ3MgdG9vLCBJIG1pc3NlZCB0aGF0LgoKVGhhbmtzIGZv ciB0ZXN0aW5nLCBpdCB3b3VsZCBiZSBhd2Vzb21lIGlmIHlvdSBjb3VsZCByZXBlYXQgdGhhdCB0 ZXN0CmJyaWVmbHkgd2l0aCB0aGUgY2hhbmdlcy4KClRoYW5rcyBmb3IgY29uZmlybWluZyB0aGUg b3RoZXIgYml0cywgbXVjaCBhcHByZWNpYXRlZCEKCkNoZWVycywKQW5kcmUKCj4gSeKAmWxsIGZp eCBpdC4KPiAKPiBbMl06IGh0dHBzOi8vZ2l0aHViLmNvbS9ZdXp1a2lIRC9UaW55VmlzaW9uL2Js b2IvbWFpbi9rZXJuZWwvYnNwL2RyaXZlcnMvY2xrL3N1bnhpLW5nL2NjdS1zdW44aXcyMS5jCj4g Cj4gWzNdOiB2ODUxczp+IyBjYXQgL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1MC9jcHVmcmVx L3N0YXRzL3RpbWVfaW5fc3RhdGUgCj4gNDA4MDAwIDE3NzYyMAo+IDYwMDAwMCAxMDA5OQo+IDcy MDAwMCAyNTkzCj4gOTEyMDAwIDMzOAo+IDEwMDgwMDAgMwo+IDEyMDAwMDAgNTY3NTYxNwo+IHY4 NTFzOn4jIAo+IAo+ID4+ICsgfSwKPiA+PiArfTsKPiA+PiArCj4gPj4gKy8qIFNvbWUgUExMcyBh cmUgaW5wdXQgKiBOIC8gZGl2MSAvIFAuIE1vZGVsIHRoZW0gYXMgTktNUCB3aXRoIG5vIEsgKi8K PiA+PiArI2RlZmluZSBTVU44SV9WODUzX1BMTF9ERFJfUkVHIDB4MDEwCj4gPj4gK3N0YXRpYyBz dHJ1Y3QgY2N1X25rbXAgcGxsX2Rkcl9jbGsgPSB7Cj4gPj4gKyAuZW5hYmxlID0gQklUKDI3KSB8 IEJJVCgzMCkgfCBCSVQoMzEpLCAgCj4gPiAKPiA+IHNhbWUgaGVyZSwgb25seSBiaXQgMjcgcGxl YXNlLgo+ID4gICAKPiA+PiArIC5sb2NrID0gQklUKDI4KSwKPiA+PiArIC5uID0gX1NVTlhJX0ND VV9NVUxUX01JTig4LCA4LCAxMiksCj4gPj4gKyAubSA9IF9TVU5YSV9DQ1VfRElWKDEsIDEpLCAv KiBpbnB1dCBkaXZpZGVyICovCj4gPj4gKyAucCA9IF9TVU5YSV9DQ1VfRElWKDAsIDEpLCAvKiBv dXRwdXQgZGl2aWRlciAqLwo+ID4+ICsgLmNvbW1vbiA9IHsKPiA+PiArIC5yZWcgPSAweDAxMCwK PiA+PiArIC5ody5pbml0ID0gQ0xLX0hXX0lOSVRfUEFSRU5UU19EQVRBKCJwbGwtZGRyIiwgb3Nj MjRNLAo+ID4+ICsgICAgJmNjdV9ua21wX29wcywKPiA+PiArICAgIENMS19TRVRfUkFURV9VTkdB VEUpLCAgCj4gPiAKPiA+IENMS19TRVRfUkFURV9HQVRFLCBhcyBhYm92ZS4KPiA+ICAgCj4gPj4g KyB9LAo+ID4+ICt9Owo+ID4+ICsKPiA+PiArI2RlZmluZSBTVU44SV9WODUzX1BMTF9QRVJJUEhf UkVHIDB4MDIwCj4gPj4gK3N0YXRpYyBzdHJ1Y3QgY2N1X25tIHBsbF9wZXJpcGhfNHhfY2xrID0g ewo+ID4+ICsgLmVuYWJsZSA9IEJJVCgyNykgfCBCSVQoMzApIHwgQklUKDMxKSwgIAo+ID4gCj4g PiBCSVQoMjcpLCBhcyBhYm92ZSwgYW5kIGZ1cnRoZXIgZG93biBhcyB3ZWxsCj4gPiAgIAo+ID4+ ICsgLmxvY2sgPSBCSVQoMjgpLAo+ID4+ICsgLm4gPSBfU1VOWElfQ0NVX01VTFRfTUlOKDgsIDgs IDEyKSwKPiA+PiArIC5tID0gX1NVTlhJX0NDVV9ESVYoMSwgMSksIC8qIGlucHV0IGRpdmlkZXIg Ki8KPiA+PiArIC5jb21tb24gPSB7Cj4gPj4gKyAucmVnID0gMHgwMjAsCj4gPj4gKyAuaHcuaW5p dCA9IENMS19IV19JTklUX1BBUkVOVFNfREFUQSgicGxsLXBlcmlwaC00eCIsIG9zYzI0TSwKPiA+ PiArICAgICZjY3Vfbm1fb3BzLAo+ID4+ICsgICAgQ0xLX1NFVF9SQVRFX1VOR0FURSksICAKPiA+ IAo+ID4geW91IGd1ZXNzZWQgaXQ6IENMS19TRVRfUkFURV9HQVRFLCBoZXJlIGFuZCBmdXJ0aGVy IGJlbG93LCBwbGVhc2UKPiA+ICAgCj4gPj4gKyB9LAo+ID4+ICt9Owo+ID4+ICsKPiA+PiArc3Rh dGljIFNVTlhJX0NDVV9NKHBsbF9wZXJpcGhfMnhfY2xrLCAicGxsLXBlcmlwaC0yeCIsICJwbGwt cGVyaXBoLTR4IiwKPiA+PiArICAgICAgICAweDAyMCwgMTYsIDMsIDApOyAgCj4gPiAKPiA+IFNv IGlzIHRoZXJlIGEgcmVjb21tZW5kYXRpb24gYWJvdXQgaG93IHdlIHJlZmVyZW5jZSBvdGhlciBj bG9ja3M/IFRoaXMKPiA+IG9uZSBoZXJlIGlzIHVzaW5nIHRoZSBjbG9jayBuYW1lLCB3aGljaCBy ZXF1aXJlcyBhIGxvb2stdXAsIHdoZXJlIHdlCj4gPiBjb3VsZCB1c2UgdGhlIHBvaW50ZXIgZGly ZWN0bHkgYXMgd2VsbCwgYXMgZG9uZSBkb3duIGJlbG93Lgo+ID4gCj4gPiBzdGF0aWMgY29uc3Qg c3RydWN0IGNsa19odyAqcGxsX3BlcmlwaDBfNHhfaHdzW10gPSB7Cj4gPiAmcGxsX3BlcmlwaDBf NHhfY2xrLmNvbW1vbi5odwo+ID4gfTsKPiA+IHN0YXRpYyBTVU5YSV9DQ1VfTV9IV1MocGxsX3Bl cmlwaDBfMnhfY2xrLCAicGxsLXBlcmlwaDAtMngiLAo+ID4gICAgICAgIHBsbF9wZXJpcGgwXzR4 X2h3cywgMHgwMjAsIDE2LCAzLCAwKTsKPiA+IAo+ID4gSSBoYXZlIHNlZW4gYm90aCwgc3VuMjBp LWQxIGZvciBpbnN0YW5jZSB1c2VzIHRoaXMsIGFuZCBJIGNvcGllZCBmcm9tCj4gPiB0aGVyZSBm b3IgdGhlIEE1MjMgY2xvY2sgY29kZS4KPiA+IAo+ID4gV291bGQgYmUgZ2xhZCB0byBoZWFyIHNv bWUgbWFpbnRhaW5lcidzIG9waW5pb24uCj4gPiAgIAo+ID4+ICsKPiA+PiArc3RhdGljIFNVTlhJ X0NDVV9NKHBsbF9wZXJpcGhfODAwTV9jbGssICJwbGwtcGVyaXBoLTgwME0iLCAicGxsLXBlcmlw aC00eCIsCj4gPj4gKyAgICAgICAgMHgwMjAsIDIwLCAzLCAwKTsKPiA+PiArCj4gPj4gK3N0YXRp YyBTVU5YSV9DQ1VfTShwbGxfcGVyaXBoXzQ4ME1fY2xrLCAicGxsLXBlcmlwaC00ODBNIiwgInBs bC1wZXJpcGgtNHgiLAo+ID4+ICsgICAgICAgIDB4MDIwLCAyLCAzLCAwKTsKPiA+PiArCj4gPj4g K3N0YXRpYyBDTEtfRklYRURfRkFDVE9SX0hXKHBsbF9wZXJpcGhfNjAwTV9jbGssICJwbGwtcGVy aXBoLTYwME0iLAo+ID4+ICsgJnBsbF9wZXJpcGhfMnhfY2xrLmNvbW1vbi5odywgMiwgMSwgMCk7 Cj4gPj4gKwo+ID4+ICtzdGF0aWMgQ0xLX0ZJWEVEX0ZBQ1RPUl9IVyhwbGxfcGVyaXBoXzQwME1f Y2xrLCAicGxsLXBlcmlwaC00MDBNIiwKPiA+PiArICZwbGxfcGVyaXBoXzJ4X2Nsay5jb21tb24u aHcsIDMsIDEsIDApOwo+ID4+ICsKPiA+PiArc3RhdGljIENMS19GSVhFRF9GQUNUT1JfSFcocGxs X3BlcmlwaF8zMDBNX2NsaywgInBsbC1wZXJpcGgtMzAwTSIsCj4gPj4gKyAgICAgJnBsbF9wZXJp cGhfNjAwTV9jbGsuaHcsIDIsIDEsIDApOwo+ID4+ICsKPiA+PiArc3RhdGljIENMS19GSVhFRF9G QUNUT1JfSFcocGxsX3BlcmlwaF8yMDBNX2NsaywgInBsbC1wZXJpcGgtMjAwTSIsCj4gPj4gKyAg ICAgJnBsbF9wZXJpcGhfNDAwTV9jbGsuaHcsIDIsIDEsIDApOwo+ID4+ICsKPiA+PiArc3RhdGlj IENMS19GSVhFRF9GQUNUT1JfSFcocGxsX3BlcmlwaF8xNjBNX2NsaywgInBsbC1wZXJpcGgtMTYw TSIsCj4gPj4gKyAgICAgJnBsbF9wZXJpcGhfNDgwTV9jbGsuY29tbW9uLmh3LCAzLCAxLCAwKTsK PiA+PiArCj4gPj4gK3N0YXRpYyBDTEtfRklYRURfRkFDVE9SX0hXKHBsbF9wZXJpcGhfMTUwTV9j bGssICJwbGwtcGVyaXBoLTE1ME0iLAo+ID4+ICsgICAgICZwbGxfcGVyaXBoXzMwME1fY2xrLmh3 LCAyLCAxLCAwKTsKPiA+PiArCj4gPj4gKwo+ID4+ICsvKgo+ID4+ICsgKiBGb3IgVmlkZW8gUExM cywgdGhlIG91dHB1dCBkaXZpZGVyIGlzIGRlc2NyaWJlZCBhcyAib25seSBmb3IgdGVzdGluZyIK PiA+PiArICogaW4gdGhlIHVzZXIgbWFudWFsLiBTbyBpdCdzIG5vdCBtb2RlbGxlZCBhbmQgZm9y Y2VkIHRvIDAuICAKPiA+IAo+ID4gVGhhdCdzIGEgYml0IGNvbmZ1c2luZzogdGhlIG1hbnVhbCBz YXlzIHRoYXQgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIGJpdCAwCj4gPiBpcyAweDEsIGFuZCB0aGF0 IGl0J3MgIm9ubHkgZm9yIHRlc3RpbmciLCB3aGljaCB3b3VsZCBtZWFuIHdlIHNob3VsZAo+ID4g bGVhdmUgaXQgbGlrZSB0aGlzLCBhbHdheXMgZGl2aWRpbmcgYnkgMj8gSW4gdGhlIG1haW4gZGVz Y3JpcHRpb24gKGJpdAo+ID4gMzEpIGl0IHNheXM6Cj4gPiBWSURFT1BMTDRYID0gSW5wdXRGcmVx Kk4vTQo+ID4gYnV0IGJlbG93IChiaXQgMCkgaXQncwo+ID4gVklERU9QTEw0WCA9IDI0TUh6Kk4v TS9ECj4gPiAod2l0aCBEIGJlaW5nICJQTExfT1VUUFVUX0RJVl9EICsgMSIsIHNvIDIgaW4gb3Vy IGNhc2UpCj4gPiAKPiA+IERvIHlvdSBoYXZlIGFueSBpbmRpY2F0aW9uIGhvdyBmYXN0IHRoZSB2 aWRlbyBQTEwgcmVhbGx5IGlzPyBJZiBpdCBpcwo+ID4gZGl2aWRlZCBieSAyIChhcyB3ZSBmb3Jj ZSB0aGF0IGJpdCB0byAxIGRvd24gaW4gdGhlIHByb2JlIHJvdXRpbmUpLCB0aGVuCj4gPiB3ZSB3 b3VsZCBuZWVkIHRvIG1vZGVsIHRoaXMgd2l0aCB0aGF0IENDVV9GRUFUVVJFX0ZJWEVEX1BPU1RE SVYgZmxhZywKPiA+IGFuZCBlaXRoZXIgbGVhdmUgdGhhdCBiaXQgYWxvbmUgb3IgZm9yY2UgaXQg dG8gMSBpbnN0ZWFkLgo+ID4gQWxzbyB3b3VsZCBiZSBnb29kIHRvIHNlZSB3aGF0IHRoZSBCU1Ag ZG9lcy4KPiA+ICAgCj4gCj4gVGhlIFsyXSBCU1AgZHJpdmVyIG1vZGVsIGl0IGFzIGEgY2N1X25r bXAgdHlwZSwgc28gaeKAmWxsIGRvdWJsZSBjaGVjayBpdC4KPiAKPiA+PiArICovCj4gPj4gKyNk ZWZpbmUgU1VOOElfVjg1M19QTExfVklERU9fUkVHIDB4MDQwCj4gPj4gK3N0YXRpYyBzdHJ1Y3Qg Y2N1X25tIHBsbF92aWRlb180eF9jbGsgPSB7Cj4gPj4gKyAuZW5hYmxlID0gQklUKDI3KSB8IEJJ VCgzMCkgfCBCSVQoMzEpLAo+ID4+ICsgLmxvY2sgPSBCSVQoMjgpLAo+ID4+ICsgLm4gPSBfU1VO WElfQ0NVX01VTFRfTUlOKDgsIDgsIDEyKSwgIAo+ID4gCj4gPiBUaGUgbWFudWFsIHNheXMgMTEg KGJ1dCBhZ2FpbiBkb2Vzbid0IG1hdHRlcikuCj4gPiAgIAo+ID4+ICsgLm0gPSBfU1VOWElfQ0NV X0RJVigxLCAxKSwgLyogaW5wdXQgZGl2aWRlciAqLwo+ID4+ICsgLmNvbW1vbiA9IHsKPiA+PiAr IC5yZWcgPSAweDA0MCwKPiA+PiArIC5ody5pbml0ID0gQ0xLX0hXX0lOSVRfUEFSRU5UU19EQVRB KCJwbGwtdmlkZW8tNHgiLCBvc2MyNE0sCj4gPj4gKyAgICAmY2N1X25tX29wcywKPiA+PiArICAg IENMS19TRVRfUkFURV9VTkdBVEUpLAo+ID4+ICsgfSwKPiA+PiArfTsKPiA+PiArCj4gPj4gK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgY2xrX2h3ICpwbGxfdmlkZW9fNHhfaHdzW10gPSB7Cj4gPj4gKyAm cGxsX3ZpZGVvXzR4X2Nsay5jb21tb24uaHcKPiA+PiArfTsKPiA+PiArc3RhdGljIENMS19GSVhF RF9GQUNUT1JfSFdTKHBsbF92aWRlb18yeF9jbGssICJwbGwtdmlkZW8tMngiLAo+ID4+ICsgICAg IHBsbF92aWRlb180eF9od3MsIDIsIDEsIENMS19TRVRfUkFURV9QQVJFTlQpOwo+ID4+ICtzdGF0 aWMgQ0xLX0ZJWEVEX0ZBQ1RPUl9IV1MocGxsX3ZpZGVvXzF4X2NsaywgInBsbC12aWRlby0xeCIs Cj4gPj4gKyAgICAgcGxsX3ZpZGVvXzR4X2h3cywgNCwgMSwgQ0xLX1NFVF9SQVRFX1BBUkVOVCk7 ICAKPiA+IAo+ID4gQWgsIGhlcmUgeW91IGFyZSB1c2luZyB0aGUgcG9pbnRlciByZWZlcmVuY2Ug dG8gdGhlIGJhc2UgY2xvY2ssIG5vdCB0aGUKPiA+IHN0cmluZywgYXMgYWJvdmUuIEkgdGhpbmsg d2Ugc2hvdWxkIHN0aWNrIHRvIG9uZSBtZXRob2Q/ICAKPiAKPiBPay4KPiAKPiA+ICAgCj4gPj4g Ky8qCj4gPj4gKyAqIEZvciBDU0kgUExMcywgdGhlIG91dHB1dCBkaXZpZGVyIGlzIGRlc2NyaWJl ZCBhcyAib25seSBmb3IgdGVzdGluZyIKPiA+PiArICogaW4gdGhlIHVzZXIgbWFudWFsLiBTbyBp dCdzIG5vdCBtb2RlbGxlZCBhbmQgZm9yY2VkIHRvIDAuICAKPiA+IAo+ID4gU2FtZSBzaXR1YXRp b24gYXMgZm9yIHRoZSB2aWRlbyBQTEw6IHdoYXQgaXMgdGhlIHJlY29tbWVuZGVkIHNldHRpbmcg b2YKPiA+IGJpdCAwLCByZWFsbHk/Cj4gPiAgIAo+IAo+IFNhbWUgYXMgd2l0aCB0aGUgUExMX1ZJ REVPLiBJ4oCZbGwgY2hlY2sgaXQgYWdhaW4sIGFuZCBtb2RpZnkgYm90aC4KPiAKPiA+PiArICov Cj4gPj4gKyNkZWZpbmUgU1VOOElfVjg1M19QTExfQ1NJX1JFRyAweDA0OAo+ID4+ICtzdGF0aWMg c3RydWN0IGNjdV9ubSBwbGxfY3NpXzR4X2NsayA9IHsKPiA+PiArIC5lbmFibGUgPSBCSVQoMjcp IHwgQklUKDMwKSB8IEJJVCgzMSksCj4gPj4gKyAubG9jayA9IEJJVCgyOCksCj4gPj4gKyAubiA9 IF9TVU5YSV9DQ1VfTVVMVF9NSU4oOCwgOCwgMTIpLAo+ID4+ICsgLm0gPSBfU1VOWElfQ0NVX0RJ VigxLCAxKSwgLyogaW5wdXQgZGl2aWRlciAqLwo+ID4+ICsgLmNvbW1vbiA9IHsKPiA+PiArIC5y ZWcgPSAweDA0OCwKPiA+PiArIC5ody5pbml0ID0gQ0xLX0hXX0lOSVRfUEFSRU5UU19EQVRBKCJw bGwtY3NpLTR4Iiwgb3NjMjRNLAo+ID4+ICsgICAgJmNjdV9ubV9vcHMsCj4gPj4gKyAgICBDTEtf U0VUX1JBVEVfVU5HQVRFKSwKPiA+PiArIH0sCj4gPj4gK307Cj4gPj4gKwo+ID4+ICtzdGF0aWMg Q0xLX0ZJWEVEX0ZBQ1RPUl9IVyhwbGxfY3NpX2NsaywgInBsbC1jc2kiLAo+ID4+ICsgICAgICZw bGxfY3NpXzR4X2Nsay5jb21tb24uaHcsIDQsIDEsIENMS19TRVRfUkFURV9QQVJFTlQpOwo+ID4+ ICsKPiA+PiArCj4gPj4gKyNkZWZpbmUgU1VOOElfVjg1M19QTExfQVVESU9fUkVHIDB4NzgKPiA+ PiArc3RhdGljIHN0cnVjdCBjY3Vfc2RtX3NldHRpbmcgcGxsX2F1ZGlvX2RpdjVfc2RtX3RhYmxl W10gPSB7Cj4gPj4gKyB7IC5yYXRlID0gMTk2NjA4MDAwLCAucGF0dGVybiA9IDB4YzAwMWViODUs IC5tID0gNSwgLm4gPSA0MCB9LCAvKiAyNC41NzYgKi8KPiA+PiArIHsgLnJhdGUgPSA2NzczNzYw MCwgLnBhdHRlcm4gPSAweGMwMDEyODhkLCAubSA9IDgsIC5uID0gMjIgfSwgLyogMjIuNTc5MiAq Lwo+ID4+ICt9Owo+ID4+ICsKPiA+PiArc3RhdGljIHN0cnVjdCBjY3Vfbm0gcGxsX2F1ZGlvX2Rp djVfY2xrID0gewo+ID4+ICsgLmVuYWJsZSA9IEJJVCgyNykgfCBCSVQoMzApIHwgQklUKDMxKSwK PiA+PiArIC5sb2NrICAgICAgICAgICA9IEJJVCgyOCksCj4gPj4gKyAubiAgICAgICAgICAgICAg PSBfU1VOWElfQ0NVX01VTFQoOCwgOCksCj4gPj4gKyAubSAgICAgICAgICAgICAgPSBfU1VOWElf Q0NVX0RJVigyMCwgMyksCj4gPj4gKyAuc2RtICAgICAgICAgICAgPSBfU1VOWElfQ0NVX1NETShw bGxfYXVkaW9fZGl2NV9zZG1fdGFibGUsCj4gPj4gKyAgICAgQklUKDI0KSwgMHgwMTc4LCBCSVQo MzEpKSwKPiA+PiArIC5jb21tb24gICAgICAgICA9IHsKPiA+PiArIC5yZWcgICAgICAgICAgICA9 IDB4MDA3OCwKPiA+PiArIC5mZWF0dXJlcyAgICAgICA9IENDVV9GRUFUVVJFX1NJR01BX0RFTFRB X01PRCwKPiA+PiArIC5ody5pbml0ICAgICAgICA9IENMS19IV19JTklUX1BBUkVOVFNfREFUQSgi cGxsLWF1ZGlvLWRpdjUiLCBvc2MyNE0sCj4gPj4gKyAgICAmY2N1X25tX29wcywKPiA+PiArICAg IENMS19TRVRfUkFURV9VTkdBVEUpLAo+ID4+ICsgfSwKPiA+PiArfTsKPiA+PiArc3RhdGljIFNV TlhJX0NDVV9NKHBsbF9hdWRpb18xeF9jbGssICJwbGwtYXVkaW8tMXgiLCAicGxsLWF1ZGlvLWRp djUiLAo+ID4+ICsgMHhlMDAsIDAsIDUsIENMS19TRVRfUkFURV9QQVJFTlQpOwo+ID4+ICsKPiA+ PiArLyogcGxsLWF1ZGlvLWRpdjIgYW5kIHBsbC1hZHVpby00eCBub3QgdXNlZCwgYmVjYXVzZSBh dWRpby0xeCBjYW4gY292ZXIgMjIuNTc5Mk0gYW5kIDI0LjU3Nk0gKi8KPiA+PiArc3RhdGljIFNV TlhJX0NDVV9NKHBsbF9hdWRpb19kaXYyX2NsaywgInBsbC1hdWRpby1kaXYyIiwgInBsbC1hdWRp byIsCj4gPj4gKyAweDA3OCwgMTYsIDMsIDApOwo+ID4+ICtzdGF0aWMgU1VOWElfQ0NVX00ocGxs X2F1ZGlvXzR4X2NsaywgInBsbC1hdWRpby00eCIsICJwbGwtYXVkaW8tZGl2MiIsCj4gPj4gKyAw eGUwMCwgNSwgNSwgMCk7Cj4gPj4gKwo+ID4+ICsvKgo+ID4+ICsgKiBGb3IgdGhlIE5QVSBQTEws IHRoZSBvdXRwdXQgZGl2aWRlciBpcyBkZXNjcmliZWQgYXMgIm9ubHkgZm9yIHRlc3RpbmciCj4g Pj4gKyAqIGluIHRoZSB1c2VyIG1hbnVhbC4gU28gaXQncyBub3QgbW9kZWxsZWQgYW5kIGZvcmNl ZCB0byAwLgo+ID4+ICsgKi8KPiA+PiArI2RlZmluZSBTVU44SV9WODUzX1BMTF9OUFVfUkVHIDB4 MDgwCj4gPj4gK3N0YXRpYyBzdHJ1Y3QgY2N1X25tIHBsbF9ucHVfNHhfY2xrID0gewo+ID4+ICsg LmVuYWJsZSA9IEJJVCgyNykgfCBCSVQoMzApIHwgQklUKDMxKSwKPiA+PiArIC5sb2NrID0gQklU KDI4KSwKPiA+PiArIC5uID0gX1NVTlhJX0NDVV9NVUxUX01JTig4LCA4LCAxMiksCj4gPj4gKyAu bSA9IF9TVU5YSV9DQ1VfRElWKDEsIDEpLCAvKiBpbnB1dCBkaXZpZGVyICovCj4gPj4gKyAuY29t bW9uID0gewo+ID4+ICsgLnJlZyA9IDB4MDgwLAo+ID4+ICsgLmh3LmluaXQgPSBDTEtfSFdfSU5J VF9QQVJFTlRTX0RBVEEoInBsbC1ucHUtNHgiLCBvc2MyNE0sCj4gPj4gKyAgICAmY2N1X25tX29w cywKPiA+PiArICAgIENMS19TRVRfUkFURV9VTkdBVEUpLAo+ID4+ICsgfSwKPiA+PiArfTsKPiA+ PiArCj4gPj4gKy8qCj4gPj4gKyAqIFRoZSBDUFUgZ2F0ZSBpcyBub3QgbW9kZWxsZWQgLSBpdCBp cyBpbiBhIHNlcGFyYXRlIHJlZ2lzdGVyICgweDUwNCkKPiA+PiArICogYW5kIGhhcyBhIHNwZWNp YWwga2V5IGZpZWxkLiBUaGUgY2xvY2sgZG9lcyBub3QgbmVlZCB0byBiZSB1bmdhdGVkIGFueXdh eS4gIAo+ID4gCj4gPiBJIHdvdWxkIGJlbGlldmUgaXQgc2hvdWxkIHJlYWQ6ICJUaGUgY2xvY2sg bXVzdCBub3QgYmUgZ2F0ZWQgYW55d2F5IGJ5Cj4gPiB0aGUga2VybmVsIi4gKEFzIGl0IHdvdWxk IHN0b3AgZXhlY3V0aW9uIG9uIHRoZSBBcm0gY29yZXMsIHNvIGl0J3Mgb25seQo+ID4gc29tZXRo aW5nIGZvciB0aGUgbWFuYWdlbWVudCBjb3JlKS4KPiA+ICAgCj4gCj4gb2suCj4gCj4gPj4gKyAq Lwo+ID4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGNsa19wYXJlbnRfZGF0YSBjcHVfcGFyZW50c1td ID0gewo+ID4+ICsgeyAuZndfbmFtZSA9ICJob3NjIiB9LAo+ID4+ICsgeyAuZndfbmFtZSA9ICJs b3NjIiB9LAo+ID4+ICsgeyAuZndfbmFtZSA9ICJpb3NjIiB9LAo+ID4+ICsgeyAuaHcgPSAmcGxs X2NwdV9jbGsuY29tbW9uLmh3IH0sICAKPiA+IAo+ID4gVGhlIG1hbnVhbCBzYXlzIHRoZXJlIGlz IGEgZGl2aWRlciAoUExMX0NQVV9PVVRfRVhUX0RJVlBbMTc6MTZdKSwKPiA+IHRob3VnaCB0aGUg ZGVzY3JpcHRpb24gc3VnZ2VzdHMgaXQgc2hvdWxkIHN0YXkgYXMgMC4gSSBndWVzcyB0aGlzIGlz Cj4gPiB0aGUgaW50ZW50aW9uIGhlcmUsIGJ1dCBjYW4geW91IHBsZWFzZSBhZGQgY29tbWVudCBo ZXJlPwo+ID4gICAKPiAKPiBvay4KPiAKPiA+PiArIHsgLmh3ID0gJnBsbF9wZXJpcGhfNjAwTV9j bGsuaHcgfSwKPiA+PiArIHsgLmh3ID0gJnBsbF9wZXJpcGhfODAwTV9jbGsuY29tbW9uLmh3IH0s Cj4gPj4gK307Cj4gPj4gKwo+ID4+ICtzdGF0aWMgU1VOWElfQ0NVX01VWF9EQVRBKGNwdV9jbGss ICJjcHUiLCBjcHVfcGFyZW50cywKPiA+PiArICAgMHg1MDAsIDI0LCAzLCBDTEtfU0VUX1JBVEVf UEFSRU5UIHwgQ0xLX0lTX0NSSVRJQ0FMKTsKPiA+PiArCj4gPj4gK3N0YXRpYyBTVU5YSV9DQ1Vf TShjcHVfYXhpX2NsaywgImNwdS1heGkiLCAiY3B1IiwgIAo+ID4gCj4gPiBJIHdvbmRlciBpZiBp dCdzIG1vcmUgZWZmaWNpZW50IHRvIHVzZSBhIHBvaW50ZXIgdG8gdGhlIENQVSBjbG9jaywgYW5k Cj4gPiBub3QgYSBzdHJpbmc/Cj4gPiAgIAo+IAo+IEnigJlsbCBmaXggdGhhdC4KPiAKPiA+PiAr ICAgICAgICAweDUwMCwgMCwgMiwgMCk7Cj4gPj4gK3N0YXRpYyBTVU5YSV9DQ1VfTShjcHVfYXBi X2NsaywgImNwdS1hcGIiLCAiY3B1IiwKPiA+PiArICAgICAgICAweDUwMCwgOCwgMiwgMCk7Cj4g Pj4gKwo+ID4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGNsa19wYXJlbnRfZGF0YSBhaGJfcGFyZW50 c1tdID0gewo+ID4+ICsgeyAuZndfbmFtZSA9ICJob3NjIiB9LAo+ID4+ICsgeyAuZndfbmFtZSA9 ICJsb3NjIiB9LAo+ID4+ICsgeyAuZndfbmFtZSA9ICJpb3NjIiB9LAo+ID4+ICsgeyAuaHcgPSAm cGxsX3BlcmlwaF82MDBNX2Nsay5odyB9LAo+ID4+ICt9Owo+ID4+ICtzdGF0aWMgU1VOWElfQ0NV X01QX0RBVEFfV0lUSF9NVVgoYWhiX2NsaywgImFoYiIsIGFoYl9wYXJlbnRzLCAweDUxMCwKPiA+ PiArICAgMCwgNSwgLyogTSAqLwo+ID4+ICsgICA4LCAyLCAvKiBQICovCj4gPj4gKyAgIDI0LCAy LCAvKiBtdXggKi8KPiA+PiArICAgMCk7Cj4gPj4gKwo+ID4+ICtzdGF0aWMgU1VOWElfQ0NVX01Q X0RBVEFfV0lUSF9NVVgoYXBiMF9jbGssICJhcGIwIiwgYWhiX3BhcmVudHMsIDB4NTIwLAo+ID4+ ICsgICAwLCA1LCAvKiBNICovCj4gPj4gKyAgIDgsIDIsIC8qIFAgKi8KPiA+PiArICAgMjQsIDIs IC8qIG11eCAqLwo+ID4+ICsgICAwKTsKPiA+PiArCj4gPj4gK3N0YXRpYyBTVU5YSV9DQ1VfTVBf REFUQV9XSVRIX01VWChhcGIxX2NsaywgImFwYjEiLCBhaGJfcGFyZW50cywgMHg1MjQsCj4gPj4g KyAgIDAsIDUsIC8qIE0gKi8KPiA+PiArICAgOCwgMiwgLyogUCAqLwo+ID4+ICsgICAyNCwgMiwg LyogbXV4ICovCj4gPj4gKyAgIDApOwo+ID4+ICsKPiA+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBj bGtfaHcgKmFoYl9od3NbXSA9IHsgJmFoYl9jbGsuY29tbW9uLmh3IH07Cj4gPj4gK3N0YXRpYyBj b25zdCBzdHJ1Y3QgY2xrX2h3ICphcGIwX2h3c1tdID0geyAmYXBiMF9jbGsuY29tbW9uLmh3IH07 Cj4gPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY2xrX2h3ICphcGIxX2h3c1tdID0geyAmYXBiMV9j bGsuY29tbW9uLmh3IH07Cj4gPj4gKwo+ID4+ICsKPiA+PiArCj4gPj4gK3N0YXRpYyBjb25zdCBz dHJ1Y3QgY2xrX2h3ICpkZV9nMmRfcGFyZW50c1tdID0gewo+ID4+ICsgJnBsbF9wZXJpcGhfMzAw TV9jbGsuaHcsCj4gPj4gKyAmcGxsX3ZpZGVvXzF4X2Nsay5odywKPiA+PiArfTsKPiA+PiArc3Rh dGljIFNVTlhJX0NDVV9NX0hXX1dJVEhfTVVYX0dBVEUoZGVfY2xrLCAiZGUiLCBkZV9nMmRfcGFy ZW50cywgMHg2MDAsCj4gPj4gKyAgICAgMCwgNSwgLyogTSAqLwo+ID4+ICsgICAgIDI0LCAxLCAv KiBtdXggKi8KPiA+PiArICAgICBCSVQoMzEpLCAvKiBnYXRlICovCj4gPj4gKyAgICAgQ0xLX1NF VF9SQVRFX1BBUkVOVCk7Cj4gPj4gKwo+ID4+ICtzdGF0aWMgU1VOWElfQ0NVX0dBVEVfSFdTKGJ1 c19kZV9jbGssICJidXMtZGUiLCBhaGJfaHdzLAo+ID4+ICsgICAweDYwYywgQklUKDApLCAwKTsK PiA+PiArCj4gPj4gK3N0YXRpYyBTVU5YSV9DQ1VfTV9IV19XSVRIX01VWF9HQVRFKGcyZF9jbGss ICJnMmQiLCBkZV9nMmRfcGFyZW50cywgMHg2MzAsCj4gPj4gKyAgICAgMCwgNSwgLyogTSAqLwo+ ID4+ICsgICAgIDI0LCAxLCAvKiBtdXggKi8KPiA+PiArICAgICBCSVQoMzEpLCAvKiBnYXRlICov Cj4gPj4gKyAgICAgQ0xLX1NFVF9SQVRFX1BBUkVOVCk7Cj4gPj4gKwo+ID4+ICtzdGF0aWMgU1VO WElfQ0NVX0dBVEVfSFdTKGJ1c19nMmRfY2xrLCAiYnVzLWcyZCIsIGFoYl9od3MsCj4gPj4gKyAg IDB4NjNjLCBCSVQoMCksIDApOwo+ID4+ICsKPiA+PiArCj4gPj4gK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgY2xrX3BhcmVudF9kYXRhIGNlX3BhcmVudHNbXSA9IHsKPiA+PiArIHsgLmZ3X25hbWUgPSAi aG9zYyIgfSwgIAo+ID4gCj4gPiBUaGF0IHBhcmVudCBpcyBub3QgbWVudGlvbmVkIGluIHRoZSBt YW51YWwsIHRob3VnaCBpdCBsb29rcyBsaWtlIGFuCj4gPiBvbWlzc2lvbi4gRGlkIHlvdSBmaW5k IHRoZSBIT1NDIG1lbnRpb25lZCBzb21ld2hlcmUgZWxzZT8gIAo+IAo+IFRoZSBbMl0gQlNQIGRy aXZlciBkZWNsYXJlcyB0aGUgQ0UgcGFyZW50cyBpbiB0aGUgc2FtZSB3YXkuIAo+IAo+ID4gICAK PiA+PiArIHsgLmh3ID0gJnBsbF9wZXJpcGhfNDAwTV9jbGsuaHcsIH0sCj4gPj4gKyB7IC5odyA9 ICZwbGxfcGVyaXBoXzMwME1fY2xrLmh3LCB9Cj4gPj4gK307Cj4gPj4gK3N0YXRpYyBTVU5YSV9D Q1VfTV9EQVRBX1dJVEhfTVVYX0dBVEUoY2VfY2xrLCAiY2UiLCBjZV9wYXJlbnRzLCAweDY4MCwK PiA+PiArICAgICAgICAwLCA0LCAvKiBNICovICAKPiA+IAo+ID4gbG9va3MgbGlrZSB0aGUgaW5k ZW50YXRpb24gaGVyZSBpcyBhIGJpdCBvZmYsIGNhbiB5b3UgY2hlY2sgdGhpcz8gQW5kCj4gPiBm b3IgdGhlIG90aGVyIGNsb2NrcyBhcyB3ZWxsPwo+ID4gICAKPiAKPiBTdXJlLgo+IAo+ID4+ICsg ICAgICAgIDI0LCAzLCAvKiBtdXggKi8KPiA+PiArICAgICAgICBCSVQoMzEpLCAvKiBnYXRlICov Cj4gPj4gKyAgICAgICAgQ0xLX1NFVF9SQVRFX1BBUkVOVCk7Cj4gPj4gKwo+ID4+ICtzdGF0aWMg U1VOWElfQ0NVX0dBVEVfSFdTKGJ1c19jZV9jbGssICJidXMtY2UiLCBhaGJfaHdzLAo+ID4+ICsg ICAweDY4YywgQklUKDApIHwgQklUKDEpLCAwKTsgIAo+ID4gCj4gPiAKPiA+IChyZXZpZXdlZCB0 aWxsIGhlcmUsIGZvciBub3csIHRvIGtlZXAgbXkgc2FuaXR5LiBTa2lwcGluZyBkb3duIHRvCj4g PiBiZWxvdywgd2hlcmUgdGhlcmUgYXJlIG1vcmUgbG93LWhhbmdpbmcgZnJ1aXRzIGFuZCBiaXRz IHRoYXQgY2FuIGJlCj4gPiBjaGVja2VkIG1vcmUgc3lzdGVtYXRpY2FsbHkpCj4gPiAgIAo+ID4+ ICsKPiA+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBjbGtfaHcgKnZlX3BhcmVudHNbXSA9IHsKPiA+ PiArICZwbGxfcGVyaXBoXzMwME1fY2xrLmh3LAo+ID4+ICsgJnBsbF9wZXJpcGhfNDAwTV9jbGsu aHcsCj4gPj4gKyAmcGxsX3BlcmlwaF80ODBNX2Nsay5jb21tb24uaHcsCj4gPj4gKyAmcGxsX25w dV80eF9jbGsuY29tbW9uLmh3LAo+ID4+ICsgJnBsbF92aWRlb180eF9jbGsuY29tbW9uLmh3LAo+ ID4+ICsgJnBsbF9jc2lfNHhfY2xrLmNvbW1vbi5odywKPiA+PiArfTsKPiA+PiArc3RhdGljIFNV TlhJX0NDVV9NX0hXX1dJVEhfTVVYX0dBVEUodmVfY2xrLCAidmUiLCB2ZV9wYXJlbnRzLCAweDY5 MCwKPiA+PiArICAgICAwLCA1LCAvKiBNICovCj4gPj4gKyAgICAgMjQsIDMsIC8qIG11eCAqLwo+ ID4+ICsgICAgIEJJVCgzMSksIC8qIGdhdGUgKi8KPiA+PiArICAgICBDTEtfU0VUX1JBVEVfUEFS RU5UKTsKPiA+PiArCj4gPj4gK3N0YXRpYyBTVU5YSV9DQ1VfR0FURV9IV1MoYnVzX3ZlX2Nsaywg ImJ1cy12ZSIsIGFoYl9od3MsCj4gPj4gKyAgIDB4NjljLCBCSVQoMCksIDApOwo+ID4+ICsKPiA+ PiArCj4gPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY2xrX2h3ICpucHVfcGFyZW50c1tdID0gewo+ ID4+ICsgJnBsbF9wZXJpcGhfNDgwTV9jbGsuY29tbW9uLmh3LAo+ID4+ICsgJnBsbF9wZXJpcGhf NjAwTV9jbGsuaHcsCj4gPj4gKyAmcGxsX3BlcmlwaF84MDBNX2Nsay5jb21tb24uaHcsCj4gPj4g KyAmcGxsX25wdV80eF9jbGsuY29tbW9uLmh3LAo+ID4+ICt9Owo+ID4+ICtzdGF0aWMgU1VOWElf Q0NVX01fSFdfV0lUSF9NVVhfR0FURShucHVfY2xrLCAibnB1IiwgbnB1X3BhcmVudHMsIDB4NmUw LAo+ID4+ICsgICAgIDAsIDUsIC8qIE0gKi8KPiA+PiArICAgICAyNCwgMywgLyogbXV4ICovCj4g Pj4gKyAgICAgQklUKDMxKSwgLyogZ2F0ZSAqLwo+ID4+ICsgICAgIDApOwo+ID4+ICsKPiA+PiAr c3RhdGljIFNVTlhJX0NDVV9HQVRFX0hXUyhidXNfbnB1X2NsaywgImJ1cy1ucHUiLCBhaGJfaHdz LAo+ID4+ICsgICAweDZlYywgQklUKDApLCAwKTsKPiA+PiArCj4gPj4gK3N0YXRpYyBTVU5YSV9D Q1VfR0FURV9IV1MoYnVzX2RtYV9jbGssICJidXMtZG1hIiwgYWhiX2h3cywKPiA+PiArICAgMHg3 MGMsIEJJVCgwKSwgMCk7Cj4gPj4gKwo+ID4+ICtzdGF0aWMgU1VOWElfQ0NVX0dBVEVfSFdTKGJ1 c19tc2dib3gwX2NsaywgImJ1cy1tc2dib3gwIiwgYWhiX2h3cywKPiA+PiArICAgMHg3MWMsIEJJ VCgwKSwgMCk7Cj4gPj4gK3N0YXRpYyBTVU5YSV9DQ1VfR0FURV9IV1MoYnVzX21zZ2JveDFfY2xr LCAiYnVzLW1zZ2JveDEiLCBhaGJfaHdzLAo+ID4+ICsgICAweDcxYywgQklUKDEpLCAwKTsKPiA+ PiArCj4gPj4gK3N0YXRpYyBTVU5YSV9DQ1VfR0FURV9IV1MoYnVzX3NwaW5sb2NrX2NsaywgImJ1 cy1zcGlubG9jayIsIGFoYl9od3MsCj4gPj4gKyAgIDB4NzJjLCBCSVQoMCksIDApOwo+ID4+ICsK PiA+PiArc3RhdGljIFNVTlhJX0NDVV9HQVRFX0hXUyhidXNfaHN0aW1lcl9jbGssICJidXMtaHN0 aW1lciIsIGFoYl9od3MsCj4gPj4gKyAgIDB4NzNjLCBCSVQoMCksIDApOwo+ID4+ICsKPiA+PiAr c3RhdGljIFNVTlhJX0NDVV9HQVRFX0RBVEEoYXZzX2NsaywgImF2cyIsIG9zYzI0TSwKPiA+PiAr ICAgIDB4NzQwLCBCSVQoMzEpLCAwKTsKPiA+PiArCj4gPj4gK3N0YXRpYyBTVU5YSV9DQ1VfR0FU RV9IV1MoYnVzX2RiZ19jbGssICJidXMtZGJnIiwgYWhiX2h3cywKPiA+PiArICAgMHg3OGMsIEJJ VCgwKSwgMCk7Cj4gPj4gKwo+ID4+ICtzdGF0aWMgU1VOWElfQ0NVX0dBVEVfSFdTKGJ1c19wd21f Y2xrLCAiYnVzLXB3bSIsIGFwYjBfaHdzLAo+ID4+ICsgICAweDdhYywgQklUKDApLCAwKTsKPiA+ PiArCj4gPj4gK3N0YXRpYyBTVU5YSV9DQ1VfR0FURV9IV1MoYnVzX2lvbW11X2NsaywgImJ1cy1p b21tdSIsIGFoYl9od3MsCj4gPj4gKyAgIDB4N2JjLCBCSVQoMCksIDApOwo+ID4+ICsKPiA+PiAr c3RhdGljIGNvbnN0IHN0cnVjdCBjbGtfaHcgKmRyYW1fcGFyZW50c1tdID0gewo+ID4+ICsgJnBs bF9kZHJfY2xrLmNvbW1vbi5odywKPiA+PiArICZwbGxfcGVyaXBoXzJ4X2Nsay5jb21tb24uaHcs Cj4gPj4gKyAmcGxsX3BlcmlwaF84MDBNX2Nsay5jb21tb24uaHcsCj4gPj4gK307Cj4gPj4gK3N0 YXRpYyBTVU5YSV9DQ1VfTVBfSFdfV0lUSF9NVVhfR0FURShkcmFtX2NsaywgImRyYW0iLCBkcmFt X3BhcmVudHMsIDB4ODAwLAo+ID4+ICsgICAgICAwLCA1LCAvKiBNICovCj4gPj4gKyAgICAgIDgs IDIsIC8qIFAgKi8KPiA+PiArICAgICAgMjQsIDMsIC8qIG11eCAqLwo+ID4+ICsgICAgICBCSVQo MzEpLCBDTEtfSVNfQ1JJVElDQUwpOwo+ID4+ICsKPiA+PiArc3RhdGljIENMS19GSVhFRF9GQUNU T1JfSFcobWJ1c19jbGssICJtYnVzIiwKPiA+PiArICAgICZkcmFtX2Nsay5jb21tb24uaHcsIDQs IDEsIDApOwo+ID4+ICsKPiA+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBjbGtfaHcgKm1idXNfaHdz W10gPSB7ICZtYnVzX2Nsay5odyB9Owo+ID4+ICsKPiA+PiArc3RhdGljIFNVTlhJX0NDVV9HQVRF X0hXUyhtYnVzX2RtYV9jbGssICJtYnVzLWRtYSIsIG1idXNfaHdzLAo+ID4+ICsgICAweDgwNCwg QklUKDApLCAwKTsKPiA+PiArc3RhdGljIFNVTlhJX0NDVV9HQVRFX0hXUyhtYnVzX3ZlX2Nsaywg Im1idXMtdmUiLCBtYnVzX2h3cywKPiA+PiArICAgMHg4MDQsIEJJVCgxKSwgMCk7Cj4gPj4gK3N0 YXRpYyBTVU5YSV9DQ1VfR0FURV9IV1MobWJ1c19jZV9jbGssICJtYnVzLWNlIiwgbWJ1c19od3Ms Cj4gPj4gKyAgIDB4ODA0LCBCSVQoMiksIDApOwo+ID4+ICtzdGF0aWMgU1VOWElfQ0NVX0dBVEVf SFdTKG1idXNfY3NpX2NsaywgIm1idXMtY3NpIiwgbWJ1c19od3MsCj4gPj4gKyAgIDB4ODA0LCBC SVQoOCksIDApOwo+ID4+ICtzdGF0aWMgU1VOWElfQ0NVX0dBVEVfSFdTKG1idXNfaXNwX2Nsaywg Im1idXMtaXNwIiwgbWJ1c19od3MsCj4gPj4gKyAgIDB4ODA0LCBCSVQoOSksIDApOwo+ID4+ICtz dGF0aWMgU1VOWElfQ0NVX0dBVEVfSFdTKG1idXNfZzJkX2NsaywgIm1idXMtZzJkIiwgbWJ1c19o d3MsCj4gPj4gKyAgIDB4ODA0LCBCSVQoMTApLCAwKTsKPiA+PiArCj4gPj4gK3N0YXRpYyBTVU5Y SV9DQ1VfR0FURV9IV1MoYnVzX2RyYW1fY2xrLCAiYnVzLWRyYW0iLCBhaGJfaHdzLAo+ID4+ICsg ICAweDgwYywgQklUKDApLCBDTEtfSVNfQ1JJVElDQUwpOwo+ID4+ICsKPiA+PiArCj4gPj4gK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgY2xrX3BhcmVudF9kYXRhIG1tYzBfbW1jMV9wYXJlbnRzW10gPSB7 Cj4gPj4gKyB7IC5md19uYW1lID0gImhvc2MiIH0sCj4gPj4gKyB7IC5odyA9ICZwbGxfcGVyaXBo XzQwME1fY2xrLmh3LCB9LAo+ID4+ICsgeyAuaHcgPSAmcGxsX3BlcmlwaF8zMDBNX2Nsay5odywg fSwKPiA+PiArfTsKPiA+PiArc3RhdGljIFNVTlhJX0NDVV9NUF9EQVRBX1dJVEhfTVVYX0dBVEUo bW1jMF9jbGssICJtbWMwIiwgbW1jMF9tbWMxX3BhcmVudHMsIDB4ODMwLAo+ID4+ICsgICAgICAg IDAsIDQsIC8qIE0gKi8KPiA+PiArICAgICAgICA4LCAyLCAvKiBQICovCj4gPj4gKyAgICAgICAg MjQsIDMsIC8qIG11eCAqLwo+ID4+ICsgICAgICAgIEJJVCgzMSksIC8qIGdhdGUgKi8KPiA+PiAr ICAgICAgICAwKTsKPiA+PiArCj4gPj4gK3N0YXRpYyBTVU5YSV9DQ1VfTVBfREFUQV9XSVRIX01V WF9HQVRFKG1tYzFfY2xrLCAibW1jMSIsIG1tYzBfbW1jMV9wYXJlbnRzLCAweDgzNCwKPiA+PiAr ICAgICAgICAwLCA0LCAvKiBNICovCj4gPj4gKyAgICAgICAgOCwgMiwgLyogUCAqLwo+ID4+ICsg ICAgICAgIDI0LCAzLCAvKiBtdXggKi8KPiA+PiArICAgICAgICBCSVQoMzEpLCAvKiBnYXRlICov Cj4gPj4gKyAgICAgICAgMCk7Cj4gPj4gKwo+ID4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGNsa19w YXJlbnRfZGF0YSBtbWMyX3BhcmVudHNbXSA9IHsKPiA+PiArIHsgLmZ3X25hbWUgPSAiaG9zYyIg fSwKPiA+PiArIHsgLmh3ID0gJnBsbF9wZXJpcGhfNjAwTV9jbGsuaHcsIH0sCj4gPj4gKyB7IC5o dyA9ICZwbGxfcGVyaXBoXzQwME1fY2xrLmh3LCB9LAo+ID4+ICt9Owo+ID4+ICtzdGF0aWMgU1VO WElfQ0NVX01QX0RBVEFfV0lUSF9NVVhfR0FURShtbWMyX2NsaywgIm1tYzIiLCBtbWMyX3BhcmVu dHMsIDB4ODM4LAo+ID4+ICsgICAgICAgIDAsIDQsIC8qIE0gKi8KPiA+PiArICAgICAgICA4LCAy LCAvKiBQICovCj4gPj4gKyAgICAgICAgMjQsIDMsIC8qIG11eCAqLwo+ID4+ICsgICAgICAgIEJJ VCgzMSksIC8qIGdhdGUgKi8KPiA+PiArICAgICAgICAwKTsKPiA+PiArCj4gPj4gK3N0YXRpYyBT VU5YSV9DQ1VfR0FURV9IV1MoYnVzX21tYzBfY2xrLCAiYnVzLW1tYzAiLCBhaGJfaHdzLAo+ID4+ ICsgICAweDg0YywgQklUKDApLCAwKTsKPiA+PiArc3RhdGljIFNVTlhJX0NDVV9HQVRFX0hXUyhi dXNfbW1jMV9jbGssICJidXMtbW1jMSIsIGFoYl9od3MsCj4gPj4gKyAgIDB4ODRjLCBCSVQoMSks IDApOwo+ID4+ICtzdGF0aWMgU1VOWElfQ0NVX0dBVEVfSFdTKGJ1c19tbWMyX2NsaywgImJ1cy1t bWMyIiwgYWhiX2h3cywKPiA+PiArICAgMHg4NGMsIEJJVCgyKSwgMCk7Cj4gPj4gKwo+ID4+ICtz dGF0aWMgU1VOWElfQ0NVX0dBVEVfSFdTKGJ1c191YXJ0MF9jbGssICJidXMtdWFydDAiLCBhcGIx X2h3cywKPiA+PiArICAgMHg5MGMsIEJJVCgwKSwgMCk7Cj4gPj4gK3N0YXRpYyBTVU5YSV9DQ1Vf R0FURV9IV1MoYnVzX3VhcnQxX2NsaywgImJ1cy11YXJ0MSIsIGFwYjFfaHdzLAo+ID4+ICsgICAw eDkwYywgQklUKDEpLCAwKTsKPiA+PiArc3RhdGljIFNVTlhJX0NDVV9HQVRFX0hXUyhidXNfdWFy dDJfY2xrLCAiYnVzLXVhcnQyIiwgYXBiMV9od3MsCj4gPj4gKyAgIDB4OTBjLCBCSVQoMiksIDAp Owo+ID4+ICtzdGF0aWMgU1VOWElfQ0NVX0dBVEVfSFdTKGJ1c191YXJ0M19jbGssICJidXMtdWFy dDMiLCBhcGIxX2h3cywKPiA+PiArICAgMHg5MGMsIEJJVCgzKSwgMCk7Cj4gPj4gKwo+ID4+ICtz dGF0aWMgU1VOWElfQ0NVX0dBVEVfSFdTKGJ1c19pMmMwX2NsaywgImJ1cy1pMmMwIiwgYXBiMV9o d3MsCj4gPj4gKyAgIDB4OTFjLCBCSVQoMCksIDApOwo+ID4+ICtzdGF0aWMgU1VOWElfQ0NVX0dB VEVfSFdTKGJ1c19pMmMxX2NsaywgImJ1cy1pMmMxIiwgYXBiMV9od3MsCj4gPj4gKyAgIDB4OTFj LCBCSVQoMSksIDApOwo+ID4+ICtzdGF0aWMgU1VOWElfQ0NVX0dBVEVfSFdTKGJ1c19pMmMyX2Ns aywgImJ1cy1pMmMyIiwgYXBiMV9od3MsCj4gPj4gKyAgIDB4OTFjLCBCSVQoMiksIDApOwo+ID4+ ICtzdGF0aWMgU1VOWElfQ0NVX0dBVEVfSFdTKGJ1c19pMmMzX2NsaywgImJ1cy1pMmMzIiwgYXBi MV9od3MsCj4gPj4gKyAgIDB4OTFjLCBCSVQoMyksIDApOwo+ID4+ICtzdGF0aWMgU1VOWElfQ0NV X0dBVEVfSFdTKGJ1c19pMmM0X2NsaywgImJ1cy1pMmM0IiwgYXBiMV9od3MsCj4gPj4gKyAgIDB4 OTFjLCBCSVQoNCksIDApOwo+ID4+ICsKPiA+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBjbGtfcGFy ZW50X2RhdGEgc3BpX3BhcmVudHNbXSA9IHsKPiA+PiArIHsgLmZ3X25hbWUgPSAiaG9zYyIgfSwK PiA+PiArIHsgLmh3ID0gJnBsbF9wZXJpcGhfMzAwTV9jbGsuaHcsIH0sCj4gPj4gKyB7IC5odyA9 ICZwbGxfcGVyaXBoXzIwME1fY2xrLmh3LCB9LAo+ID4+ICt9Owo+ID4+ICsKPiA+PiArc3RhdGlj IFNVTlhJX0NDVV9NUF9EQVRBX1dJVEhfTVVYX0dBVEUoc3BpMF9jbGssICJzcGkwIiwgc3BpX3Bh cmVudHMsIDB4OTQwLAo+ID4+ICsgICAgICAgIDAsIDQsIC8qIE0gKi8KPiA+PiArICAgICAgICA4 LCAyLCAvKiBQICovCj4gPj4gKyAgICAgICAgMjQsIDMsIC8qIG11eCAqLwo+ID4+ICsgICAgICAg IEJJVCgzMSksIC8qIGdhdGUgKi8KPiA+PiArICAgICAgICAwKTsKPiA+PiArCj4gPj4gK3N0YXRp YyBTVU5YSV9DQ1VfTVBfREFUQV9XSVRIX01VWF9HQVRFKHNwaTFfY2xrLCAic3BpMSIsIHNwaV9w YXJlbnRzLCAweDk0NCwKPiA+PiArICAgICAgICAwLCA0LCAvKiBNICovCj4gPj4gKyAgICAgICAg OCwgMiwgLyogUCAqLwo+ID4+ICsgICAgICAgIDI0LCAzLCAvKiBtdXggKi8KPiA+PiArICAgICAg ICBCSVQoMzEpLCAvKiBnYXRlICovCj4gPj4gKyAgICAgICAgMCk7Cj4gPj4gKwo+ID4+ICtzdGF0 aWMgU1VOWElfQ0NVX01QX0RBVEFfV0lUSF9NVVhfR0FURShzcGkyX2NsaywgInNwaTIiLCBzcGlf cGFyZW50cywgMHg5NDgsCj4gPj4gKyAgICAgICAgMCwgNCwgLyogTSAqLwo+ID4+ICsgICAgICAg IDgsIDIsIC8qIFAgKi8KPiA+PiArICAgICAgICAyNCwgMywgLyogbXV4ICovCj4gPj4gKyAgICAg ICAgQklUKDMxKSwgLyogZ2F0ZSAqLwo+ID4+ICsgICAgICAgIDApOwo+ID4+ICsKPiA+PiArc3Rh dGljIFNVTlhJX0NDVV9NUF9EQVRBX1dJVEhfTVVYX0dBVEUoc3BpM19jbGssICJzcGkzIiwgc3Bp X3BhcmVudHMsIDB4OTRjLAo+ID4+ICsgICAgICAgIDAsIDQsIC8qIE0gKi8KPiA+PiArICAgICAg ICA4LCAyLCAvKiBQICovCj4gPj4gKyAgICAgICAgMjQsIDMsIC8qIG11eCAqLwo+ID4+ICsgICAg ICAgIEJJVCgzMSksIC8qIGdhdGUgKi8KPiA+PiArICAgICAgICAwKTsKPiA+PiArCj4gPj4gK3N0 YXRpYyBTVU5YSV9DQ1VfR0FURV9IV1MoYnVzX3NwaTBfY2xrLCAiYnVzLXNwaTAiLCBhaGJfaHdz LAo+ID4+ICsgICAweDk2YywgQklUKDApLCAwKTsKPiA+PiArc3RhdGljIFNVTlhJX0NDVV9HQVRF X0hXUyhidXNfc3BpMV9jbGssICJidXMtc3BpMSIsIGFoYl9od3MsCj4gPj4gKyAgIDB4OTZjLCBC SVQoMSksIDApOwo+ID4+ICtzdGF0aWMgU1VOWElfQ0NVX0dBVEVfSFdTKGJ1c19zcGkyX2Nsaywg ImJ1cy1zcGkyIiwgYWhiX2h3cywKPiA+PiArICAgMHg5NmMsIEJJVCgyKSwgMCk7Cj4gPj4gK3N0 YXRpYyBTVU5YSV9DQ1VfR0FURV9IV1MoYnVzX3NwaTNfY2xrLCAiYnVzLXNwaTMiLCBhaGJfaHdz LAo+ID4+ICsgICAweDk2YywgQklUKDMpLCAwKTsKPiA+PiArCj4gPj4gKwo+ID4+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IGNsa19wYXJlbnRfZGF0YSBzcGlmX3BhcmVudHNbXSA9IHsKPiA+PiArIHsg LmZ3X25hbWUgPSAiaG9zYyIgfSwKPiA+PiArIHsgLmh3ID0gJnBsbF9wZXJpcGhfNDAwTV9jbGsu aHcsIH0sCj4gPj4gKyB7IC5odyA9ICZwbGxfcGVyaXBoXzMwME1fY2xrLmh3LCB9LAo+ID4+ICt9 Owo+ID4+ICsKPiA+PiArc3RhdGljIFNVTlhJX0NDVV9NX0RBVEFfV0lUSF9NVVhfR0FURShzcGlm X2NsaywgInNwaWYiLCBzcGlmX3BhcmVudHMsIDB4MDk1MCwKPiA+PiArIDAsIDQsICAvKiBNICov Cj4gPj4gKyAyNCwgMywgIC8qIG11eCAqLwo+ID4+ICsgQklUKDMxKSwgLyogZ2F0ZSAqLwo+ID4+ ICsgQ0xLX1NFVF9SQVRFX1BBUkVOVCk7Cj4gPj4gKwo+ID4+ICtzdGF0aWMgU1VOWElfQ0NVX0dB VEVfSFdTKGJ1c19zcGlmX2NsaywgImJ1cy1zcGlmIiwgYWhiX2h3cywKPiA+PiArICAgICAweDA5 NmMsIEJJVCg0KSwgMCk7Cj4gPj4gKwo+ID4+ICsKPiA+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBj bGtfaHcgKnBsbF9wZXJpcGhfMTUwTV9od3NbXSA9IHsgJnBsbF9wZXJpcGhfMTUwTV9jbGsuaHcg fTsKPiA+PiArc3RhdGljIFNVTlhJX0NDVV9HQVRFX0hXU19XSVRIX1BSRURJVihlbWFjXzI1TV9j bGssICJlbWFjLTI1TSIsIHBsbF9wZXJpcGhfMTUwTV9od3MsCj4gPj4gKyAgICAgICAweDk3MCwg QklUKDMxKSB8IEJJVCgzMCksIDYsIDApOwo+ID4+ICsKPiA+PiArc3RhdGljIFNVTlhJX0NDVV9H QVRFX0hXUyhidXNfZW1hY19jbGssICJidXMtZW1hYyIsIGFoYl9od3MsCj4gPj4gKyAgIDB4OTdj LCBCSVQoMCksIDApOwo+ID4+ICsKPiA+PiArc3RhdGljIFNVTlhJX0NDVV9HQVRFX0hXUyhidXNf Z3BhZGNfY2xrLCAiYnVzLWdwYWRjIiwgYXBiMF9od3MsCj4gPj4gKyAgIDB4OWVjLCBCSVQoMCks IDApOwo+ID4+ICsKPiA+PiArc3RhdGljIFNVTlhJX0NDVV9HQVRFX0hXUyhidXNfdGhzX2Nsaywg ImJ1cy10aHMiLCBhaGJfaHdzLAo+ID4+ICsgICAweDlmYywgQklUKDApLCAwKTsKPiA+PiArCj4g Pj4gKwo+ID4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGNsa19odyAqYXVkaW9fcGFyZW50c1tdID0g ewo+ID4+ICsgJnBsbF9hdWRpb18xeF9jbGsuY29tbW9uLmh3LAo+ID4+ICsgJnBsbF9hdWRpb180 eF9jbGsuY29tbW9uLmh3LAo+ID4+ICt9Owo+ID4+ICsKPiA+PiArc3RhdGljIFNVTlhJX0NDVV9N X0hXX1dJVEhfTVVYX0dBVEUoaTJzMF9jbGssICJpMnMwIiwgYXVkaW9fcGFyZW50cywgMHhhMTAs Cj4gPj4gKyAgICAgIDAsIDQsIC8qIE0gKi8KPiA+PiArICAgICAgMjQsIDEsIC8qIG11eCAqLwo+ ID4+ICsgICAgICBCSVQoMzEpLCAvKiBnYXRlICovCj4gPj4gKyAgICAgIENMS19TRVRfUkFURV9Q QVJFTlQpOwo+ID4+ICsKPiA+PiArc3RhdGljIFNVTlhJX0NDVV9NX0hXX1dJVEhfTVVYX0dBVEUo aTJzMV9jbGssICJpMnMxIiwgYXVkaW9fcGFyZW50cywgMHhhMTQsCj4gPj4gKyAgICAgIDAsIDQs IC8qIE0gKi8KPiA+PiArICAgICAgMjQsIDEsIC8qIG11eCAqLwo+ID4+ICsgICAgICBCSVQoMzEp LCAvKiBnYXRlICovCj4gPj4gKyAgICAgIENMS19TRVRfUkFURV9QQVJFTlQpOwo+ID4+ICsKPiA+ PiArc3RhdGljIFNVTlhJX0NDVV9HQVRFX0hXUyhidXNfaTJzMV9jbGssICJidXMtaTJzMSIsIGFo Yl9od3MsCj4gPj4gKyAgIDB4YTIwLCBCSVQoMSksIDApOwo+ID4+ICsgIAo+ID4gCj4gPiBKdXN0 IGEgbml0LCBidXQgdGhvc2UgdHdvIGhlcmUgIHYgIGFuZCBeICBzZWVtIHRvIGJlIHN3YXBwZWQu Cj4gPiAgIAo+IAo+IFRoYW5rcy4KPiAKPiA+IEZvciB0aGUgcmVjb3JkczogSSBleHRyYWN0ZWQg dGhlIGJ1cyBnYXRlcyBhbmQgbWFzc2FnZWQgdGhlbSB3aXRoIHNvbWUKPiA+IHJlZ2V4cHMgdG8g YnJpbmcgdGhlbSBpbnRvIGEgc2hhcGUgd2hlcmUgcmV2aWV3IGlzIG1vcmUgZmVhc2libGUuCj4g PiBUaGV5IGxvb2sgYWxyaWdodCB0byBtZS4gSSBkaWRuJ3QgbG9vayBhdCB0aGUgcmVzcGVjdGl2 ZSBtb2QgY2xvY2tzIGluCj4gPiBkZXRhaWwsIHRob3VnaC4KPiA+IAo+ID4gICAKPiA+PiArc3Rh dGljIFNVTlhJX0NDVV9HQVRFX0hXUyhidXNfaTJzMF9jbGssICJidXMtaTJzMCIsIGFoYl9od3Ms Cj4gPj4gKyAgIDB4YTIwLCBCSVQoMCksIDApOwo+ID4+ICsKPiA+PiArc3RhdGljIFNVTlhJX0ND VV9NX0hXX1dJVEhfTVVYX0dBVEUoZG1pY19jbGssICJkbWljIiwgYXVkaW9fcGFyZW50cywgMHhh NDAsCj4gPj4gKyAgICAgIDAsIDQsIC8qIE0gKi8KPiA+PiArICAgICAgMjQsIDEsIC8qIG11eCAq Lwo+ID4+ICsgICAgICBCSVQoMzEpLCAvKiBnYXRlICovCj4gPj4gKyAgICAgIENMS19TRVRfUkFU RV9QQVJFTlQpOwo+ID4+ICsKPiA+PiArc3RhdGljIFNVTlhJX0NDVV9HQVRFX0hXUyhidXNfZG1p Y19jbGssICJidXMtZG1pYyIsIGFoYl9od3MsCj4gPj4gKyAgIDB4YTRjLCBCSVQoMCksIDApOwo+ ID4+ICsKPiA+PiArc3RhdGljIFNVTlhJX0NDVV9NX0hXX1dJVEhfTVVYX0dBVEUoYXVkaW9fY29k ZWNfZGFjX2NsaywgImF1ZGlvLWNvZGVjLWRhYyIsIGF1ZGlvX3BhcmVudHMsIDB4YTUwLCAgCj4g PiAKPiA+IEkgdGhpbmsgeW91IHNob3VsZCBicmVhayB0aGUgbGluZSBhYm92ZSwgdG8gc3RheSB3 aXRoaW4gdGhlIDgwIGNoYXIKPiA+IGxpbWl0Lgo+ID4gICAKPiAKPiBPay4KPiAKPiA+IEZhc3Qg Zm9yd2FyZGluZyB0byB0aGUgY2N1X3Jlc2V0cyBhcnJheSAuLi4KPiA+ICAgCj4gPj4gKyAgICAg IDAsIDQsIC8qIE0gKi8KPiA+PiArICAgICAgMjQsIDEsIC8qIG11eCAqLwo+ID4+ICsgICAgICBC SVQoMzEpLCAvKiBnYXRlICovCj4gPj4gKyAgICAgIENMS19TRVRfUkFURV9QQVJFTlQpOwo+ID4+ ICsKPiA+PiArc3RhdGljIFNVTlhJX0NDVV9NX0hXX1dJVEhfTVVYX0dBVEUoYXVkaW9fY29kZWNf YWRjX2NsaywgImF1ZGlvLWNvZGVjLWFkYyIsIGF1ZGlvX3BhcmVudHMsIDB4YTU0LAo+ID4+ICsg ICAgICAwLCA0LCAvKiBNICovCj4gPj4gKyAgICAgIDI0LCAxLCAvKiBtdXggKi8KPiA+PiArICAg ICAgQklUKDMxKSwgLyogZ2F0ZSAqLwo+ID4+ICsgICAgICBDTEtfU0VUX1JBVEVfUEFSRU5UKTsK PiA+PiArCj4gPj4gK3N0YXRpYyBTVU5YSV9DQ1VfR0FURV9IV1MoYnVzX2F1ZGlvX2NvZGVjX2Ns aywgImJ1cy1hdWRpby1jb2RlYyIsIGFwYjBfaHdzLAo+ID4+ICsgICAweGE1YywgQklUKDApLCAw KTsKPiA+PiArCj4gPj4gKy8qCj4gPj4gKyAqIFRoZXJlIGFyZSBPSENJIDEyTSBjbG9jayBzb3Vy Y2Ugc2VsZWN0aW9uIGJpdHMgZm9yIHRoZSBVU0IgMi4wIHBvcnQuCj4gPj4gKyAqIFdlIHdpbGwg Zm9yY2UgdGhlbSB0byAwICgxMk0gZGl2aWRlZCBmcm9tIDQ4TSkuCj4gPj4gKyAqLwo+ID4+ICtz dGF0aWMgQ0xLX0ZJWEVEX0ZBQ1RPUl9GV19OQU1FKG9zYzEyTV9jbGssICJvc2MxMk0iLCAiaG9z YyIsIDIsIDEsIDApOwo+ID4+ICsKPiA+PiArI2RlZmluZSBTVU44SV9WODUzX1VTQl9DTEtfUkVH IDB4YTcwCj4gPj4gKwo+ID4+ICtzdGF0aWMgU1VOWElfQ0NVX0dBVEUodXNiX29oY2lfY2xrLCAi dXNiIiwgIm9zYzEyTSIsIDB4MGE3MCwgQklUKDMxKSwgMCk7Cj4gPj4gKwo+ID4+ICtzdGF0aWMg U1VOWElfQ0NVX0dBVEVfSFdTKGJ1c19vaGNpX2NsaywgImJ1cy1vaGNpIiwgYWhiX2h3cywgMHhh OGMsIEJJVCgwKSwgMCk7Cj4gPj4gK3N0YXRpYyBTVU5YSV9DQ1VfR0FURV9IV1MoYnVzX2VoY2lf Y2xrLCAiYnVzLWVoY2kiLCBhaGJfaHdzLCAweGE4YywgQklUKDQpLCAwKTsKPiA+PiArc3RhdGlj IFNVTlhJX0NDVV9HQVRFX0hXUyhidXNfb3RnX2NsaywgImJ1cy1vdGciLCBhaGJfaHdzLCAweGE4 YywgQklUKDgpLCAwKTsKPiA+PiArCj4gPj4gK3N0YXRpYyBTVU5YSV9DQ1VfR0FURV9IV1MoYnVz X2Rwc3NfdG9wX2NsaywgImJ1cy1kcHNzLXRvcCIsIGFoYl9od3MsCj4gPj4gKyAgIDB4YWJjLCBC SVQoMCksIDApOwo+ID4+ICsKPiA+PiArCj4gPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY2xrX3Bh cmVudF9kYXRhIG1pcGlfZHNpX3BhcmVudHNbXSA9IHsKPiA+PiArIHsgLmZ3X25hbWUgPSAiaG9z YyIgfSwKPiA+PiArIHsgLmh3ID0gJnBsbF9wZXJpcGhfMjAwTV9jbGsuaHcgfSwKPiA+PiArIHsg Lmh3ID0gJnBsbF9wZXJpcGhfMTUwTV9jbGsuaHcgfSwKPiA+PiArfTsKPiA+PiArc3RhdGljIFNV TlhJX0NDVV9NX0RBVEFfV0lUSF9NVVhfR0FURShtaXBpX2RzaV9jbGssICJtaXBpLWRzaSIsIG1p cGlfZHNpX3BhcmVudHMsIDB4YjI0LAo+ID4+ICsgICAgICAgMCwgNCwgLyogTSAqLwo+ID4+ICsg ICAgICAgMjQsIDMsIC8qIG11eCAqLwo+ID4+ICsgICAgICAgQklUKDMxKSwgLyogZ2F0ZSAqLwo+ ID4+ICsgICAgICAgQ0xLX1NFVF9SQVRFX1BBUkVOVCk7Cj4gPj4gKwo+ID4+ICtzdGF0aWMgU1VO WElfQ0NVX0dBVEVfSFdTKGJ1c19taXBpX2RzaV9jbGssICJidXMtbWlwaS1kc2kiLCBhaGJfaHdz LAo+ID4+ICsgICAweGI0YywgQklUKDApLCAwKTsKPiA+PiArCj4gPj4gKwo+ID4+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IGNsa19odyAqdGNvbl9sY2RfcGFyZW50c1tdID0gewo+ID4+ICsgJnBsbF92 aWRlb180eF9jbGsuY29tbW9uLmh3LAo+ID4+ICsgJnBsbF9wZXJpcGhfMnhfY2xrLmNvbW1vbi5o dywKPiA+PiArICZwbGxfY3NpXzR4X2Nsay5jb21tb24uaHcsCj4gPj4gK307Cj4gPj4gK3N0YXRp YyBTVU5YSV9DQ1VfTVBfSFdfV0lUSF9NVVhfR0FURSh0Y29uX2xjZF9jbGssICJ0Y29uLWxjZCIs IHRjb25fbGNkX3BhcmVudHMsIDB4YjYwLAo+ID4+ICsgICAgICAwLCA0LCAvKiBNICovCj4gPj4g KyAgICAgIDgsIDIsIC8qIFAgKi8KPiA+PiArICAgICAgMjQsIDMsIC8qIG11eCAqLwo+ID4+ICsg ICAgICBCSVQoMzEpLCAvKiBnYXRlICovCj4gPj4gKyAgICAgIENMS19TRVRfUkFURV9QQVJFTlQp Owo+ID4+ICsKPiA+PiArc3RhdGljIFNVTlhJX0NDVV9HQVRFX0hXUyhidXNfdGNvbl9sY2RfY2xr LCAiYnVzLXRjb24tbGNkIiwgYWhiX2h3cywKPiA+PiArICAgMHhiN2MsIEJJVCgwKSwgMCk7Cj4g Pj4gKwo+ID4+ICsKPiA+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBjbGtfaHcgKmNzaV90b3BfcGFy ZW50c1tdID0gewo+ID4+ICsgJnBsbF9wZXJpcGhfMzAwTV9jbGsuaHcsCj4gPj4gKyAmcGxsX3Bl cmlwaF80MDBNX2Nsay5odywKPiA+PiArICZwbGxfdmlkZW9fNHhfY2xrLmNvbW1vbi5odywKPiA+ PiArICZwbGxfY3NpXzR4X2Nsay5jb21tb24uaHcsCj4gPj4gK307Cj4gPj4gK3N0YXRpYyBTVU5Y SV9DQ1VfTV9IV19XSVRIX01VWF9HQVRFKGNzaV90b3BfY2xrLCAiY3NpLXRvcCIsIGNzaV90b3Bf cGFyZW50cywgMHhjMDQsCj4gPj4gKyAgICAgMCwgNSwgLyogTSAqLwo+ID4+ICsgICAgIDI0LCAz LCAvKiBtdXggKi8KPiA+PiArICAgICBCSVQoMzEpLCAvKiBnYXRlICovCj4gPj4gKyAgICAgMCk7 Cj4gPj4gKwo+ID4+ICsKPiA+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBjbGtfcGFyZW50X2RhdGEg Y3NpX21jbGtfcGFyZW50c1tdID0gewo+ID4+ICsgeyAuZndfbmFtZSA9ICJob3NjIiB9LAo+ID4+ ICsgeyAuaHcgPSAmcGxsX2NzaV80eF9jbGsuY29tbW9uLmh3IH0sCj4gPj4gKyB7IC5odyA9ICZw bGxfdmlkZW9fNHhfY2xrLmNvbW1vbi5odyB9LAo+ID4+ICsgeyAuaHcgPSAmcGxsX3BlcmlwaF8y eF9jbGsuY29tbW9uLmh3IH0sCj4gPj4gK307Cj4gPj4gK3N0YXRpYyBTVU5YSV9DQ1VfTV9EQVRB X1dJVEhfTVVYX0dBVEUoY3NpX21jbGswX2NsaywgImNzaS1tY2xrMCIsIGNzaV9tY2xrX3BhcmVu dHMsIDB4YzA4LAo+ID4+ICsgICAgICAgMCwgNSwgLyogTSAqLwo+ID4+ICsgICAgICAgMjQsIDMs IC8qIG11eCAqLwo+ID4+ICsgICAgICAgQklUKDMxKSwgLyogZ2F0ZSAqLwo+ID4+ICsgICAgICAg MCk7Cj4gPj4gKwo+ID4+ICtzdGF0aWMgU1VOWElfQ0NVX01fREFUQV9XSVRIX01VWF9HQVRFKGNz aV9tY2xrMV9jbGssICJjc2ktbWNsazEiLCBjc2lfbWNsa19wYXJlbnRzLCAweGMwYywKPiA+PiAr ICAgICAgIDAsIDUsIC8qIE0gKi8KPiA+PiArICAgICAgIDI0LCAzLCAvKiBtdXggKi8KPiA+PiAr ICAgICAgIEJJVCgzMSksIC8qIGdhdGUgKi8KPiA+PiArICAgICAgIDApOwo+ID4+ICsKPiA+PiAr c3RhdGljIFNVTlhJX0NDVV9NX0RBVEFfV0lUSF9NVVhfR0FURShjc2lfbWNsazJfY2xrLCAiY3Np LW1jbGsyIiwgY3NpX21jbGtfcGFyZW50cywgMHhjMTAsCj4gPj4gKyAgICAgICAwLCA1LCAvKiBN ICovCj4gPj4gKyAgICAgICAyNCwgMywgLyogbXV4ICovCj4gPj4gKyAgICAgICBCSVQoMzEpLCAv KiBnYXRlICovCj4gPj4gKyAgICAgICAwKTsKPiA+PiArCj4gPj4gK3N0YXRpYyBTVU5YSV9DQ1Vf R0FURV9IV1MoYnVzX2NzaV9jbGssICJidXMtY3NpIiwgYWhiX2h3cywKPiA+PiArICAgMHhjMmMs IEJJVCgwKSwgMCk7Cj4gPj4gKwo+ID4+ICsKPiA+PiArc3RhdGljIFNVTlhJX0NDVV9HQVRFX0hX UyhidXNfd2llZ2FuZF9jbGssICJidXMtd2llZ2FuZCIsIGFoYl9od3MsCj4gPj4gKyAgIDB4Yzdj LCBCSVQoMCksIDApOwo+ID4+ICsKPiA+PiArCj4gPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY2xr X3BhcmVudF9kYXRhIHJpc2N2X3BhcmVudHNbXSA9IHsKPiA+PiArIHsgLmZ3X25hbWUgPSAiaG9z YyIgfSwKPiA+PiArIHsgLmZ3X25hbWUgPSAibG9zYyIgfSwKPiA+PiArIHsgLmZ3X25hbWUgPSAi aW9zYyIgfSwKPiA+PiArIHsgLmh3ID0gJnBsbF9wZXJpcGhfNjAwTV9jbGsuaHcgfSwKPiA+PiAr IHsgLmh3ID0gJnBsbF9wZXJpcGhfNDgwTV9jbGsuY29tbW9uLmh3IH0sCj4gPj4gKyB7IC5odyA9 ICZwbGxfY3B1X2Nsay5jb21tb24uaHcgfSwKPiA+PiArfTsKPiA+PiArc3RhdGljIFNVTlhJX0ND VV9NX0RBVEFfV0lUSF9NVVgocmlzY3ZfY2xrLCAicmlzY3YtY3B1IiwgcmlzY3ZfcGFyZW50cywg MHhkMDAsCj4gPj4gKyAgMCwgNSwgLyogTSAqLwo+ID4+ICsgIDI0LCAzLCAvKiBtdXggKi8KPiA+ PiArICBDTEtfU0VUX1JBVEVfUEFSRU5UKTsKPiA+PiArCj4gPj4gKy8qIFRoZSByaXNjdi1heGkg Y2xrIG11c3QgYmUgZGl2aWRlZCBieSBhdCBsZWFzdCAyLiAqLwo+ID4+ICtzdGF0aWMgc3RydWN0 IGNsa19kaXZfdGFibGUgcmlzY3ZfYXhpX3RhYmxlW10gPSB7Cj4gPj4gKyB7IC52YWwgPSAxLCAu ZGl2ID0gMiB9LAo+ID4+ICsgeyAudmFsID0gMiwgLmRpdiA9IDMgfSwKPiA+PiArIHsgLnZhbCA9 IDMsIC5kaXYgPSA0IH0sCj4gPj4gKyB7IC8qIFNlbnRpbmVsICovIH0KPiA+PiArfTsKPiA+PiAr c3RhdGljIFNVTlhJX0NDVV9ESVZfVEFCTEVfSFcocmlzY3ZfYXhpX2NsaywgInJpc2N2LWF4aSIs ICZyaXNjdl9jbGsuY29tbW9uLmh3LAo+ID4+ICsgICAgICAgMHhkMDAsIDgsIDIsIHJpc2N2X2F4 aV90YWJsZSwgMCk7Cj4gPj4gKwo+ID4+ICsKPiA+PiArc3RhdGljIFNVTlhJX0NDVV9HQVRFX0hX UyhyaXNjdl9jZmcsICJyaXNjdi1jZmciLCBhaGJfaHdzLAo+ID4+ICsgIDB4ZDBjLCBCSVQoMCks IDApOwo+ID4+ICsKPiA+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBjbGtfaHcgKnBsbF9wZXJpcGhf MTYwTV9od3NbXSA9IHsKPiA+PiArICZwbGxfcGVyaXBoXzE2ME1fY2xrLmh3LAo+ID4+ICt9Owo+ ID4+ICsKPiA+PiArc3RhdGljIFNVTlhJX0NDVV9HQVRFX0RBVEEoZmFub3V0XzI0TV9jbGssICJm YW5vdXQtMjRNIiwgb3NjMjRNLAo+ID4+ICsgMHhmMzAsIEJJVCgwKSwgMCk7Cj4gPj4gK3N0YXRp YyBTVU5YSV9DQ1VfR0FURV9EQVRBX1dJVEhfUFJFRElWKGZhbm91dF8xMk1fY2xrLCAiZmFub3V0 LTEyTSIsIG9zYzI0TSwKPiA+PiArIDB4ZjMwLCBCSVQoMSksIDIsIDApOwo+ID4+ICtzdGF0aWMg U1VOWElfQ0NVX0dBVEVfSFdTX1dJVEhfUFJFRElWKGZhbm91dF8xNk1fY2xrLCAiZmFub3V0LTE2 TSIsIHBsbF9wZXJpcGhfMTYwTV9od3MsCj4gPj4gKyAweGYzMCwgQklUKDIpLCAxMCwgMCk7Cj4g Pj4gK3N0YXRpYyBTVU5YSV9DQ1VfR0FURV9IV1NfV0lUSF9QUkVESVYoZmFub3V0XzI1TV9jbGss ICJmYW5vdXQtMjVNIiwgcGxsX3BlcmlwaF8xNTBNX2h3cywKPiA+PiArIDB4ZjMwLCBCSVQoMyks IDYsIDApOwo+ID4+ICsKPiA+PiArCj4gPj4gKwo+ID4+ICsvKiBUaGlzIGNsb2NrIGhhcyBhIHNl Y29uZCBkaXZpZGVyIHRoYXQgaXMgbm90IG1vZGVsbGVkIGFuZCBmb3JjZWQgdG8gMC4gKi8KPiA+ PiArI2RlZmluZSBTVU44SV9WODUzX0ZBTk9VVF8yN01fUkVHIDB4ZjM0Cj4gPj4gK3N0YXRpYyBj b25zdCBzdHJ1Y3QgY2xrX2h3ICpmYW5vdXRfMjdNX3BhcmVudHNbXSA9IHsKPiA+PiArICZwbGxf dmlkZW9fMXhfY2xrLmh3LAo+ID4+ICsgJnBsbF9jc2lfY2xrLmh3LAo+ID4+ICsgJnBsbF9wZXJp cGhfMzAwTV9jbGsuaHcsCj4gPj4gK307Cj4gPj4gK3N0YXRpYyBTVU5YSV9DQ1VfTV9IV19XSVRI X01VWF9HQVRFKGZhbm91dF8yN01fY2xrLCAiZmFub3V0LTI3TSIsIGZhbm91dF8yN01fcGFyZW50 cywgMHhmMzQsCj4gPj4gKyAgICAgMCwgNSwgLyogTSAqLwo+ID4+ICsgICAgIDI0LCAyLCAvKiBt dXggKi8KPiA+PiArICAgICBCSVQoMzEpLCAvKiBnYXRlICovCj4gPj4gKyAgICAgMCk7Cj4gPj4g K3N0YXRpYyBTVU5YSV9DQ1VfTV9IV1NfV0lUSF9HQVRFKGZhbm91dF9wY2xrX2NsaywgImZhbm91 dC1wY2xrIiwgYXBiMF9od3MsIDB4ZjM4LAo+ID4+ICsgICAgIDAsIDUsIC8qIE0gKi8KPiA+PiAr ICAgICBCSVQoMzEpLCAvKiBnYXRlICovCj4gPj4gKyAgICAgMCk7Cj4gPj4gKwo+ID4+ICtzdGF0 aWMgY29uc3Qgc3RydWN0IGNsa19wYXJlbnRfZGF0YSBmYW5vdXRfcGFyZW50c1tdID0gewo+ID4+ ICsgeyAuZndfbmFtZSA9ICJsb3NjIiB9LAo+ID4+ICsgeyAuaHcgPSAmZmFub3V0XzEyTV9jbGsu Y29tbW9uLmh3IH0sCj4gPj4gKyB7IC5odyA9ICZmYW5vdXRfMTZNX2Nsay5jb21tb24uaHcgfSwK PiA+PiArIHsgLmh3ID0gJmZhbm91dF8yNE1fY2xrLmNvbW1vbi5odyB9LAo+ID4+ICsgeyAuaHcg PSAmZmFub3V0XzI1TV9jbGsuY29tbW9uLmh3IH0sCj4gPj4gKyB7IC5odyA9ICZmYW5vdXRfMjdN X2Nsay5jb21tb24uaHcgfSwKPiA+PiArIHsgLmh3ID0gJmZhbm91dF9wY2xrX2Nsay5jb21tb24u aHcgfSwKPiA+PiArfTsKPiA+PiArCj4gPj4gK3N0YXRpYyBTVU5YSV9DQ1VfTVVYX0RBVEFfV0lU SF9HQVRFKGZhbm91dDBfY2xrLCAiZmFub3V0MCIsIGZhbm91dF9wYXJlbnRzLCAweGYzYywKPiA+ PiArICAgMCwgMywgLyogbXV4ICovCj4gPj4gKyAgIEJJVCgyMSksIC8qIGdhdGUgKi8KPiA+PiAr ICAgMCk7Cj4gPj4gK3N0YXRpYyBTVU5YSV9DQ1VfTVVYX0RBVEFfV0lUSF9HQVRFKGZhbm91dDFf Y2xrLCAiZmFub3V0MSIsIGZhbm91dF9wYXJlbnRzLCAweGYzYywKPiA+PiArICAgMywgMywgLyog bXV4ICovCj4gPj4gKyAgIEJJVCgyMiksIC8qIGdhdGUgKi8KPiA+PiArICAgMCk7Cj4gPj4gK3N0 YXRpYyBTVU5YSV9DQ1VfTVVYX0RBVEFfV0lUSF9HQVRFKGZhbm91dDJfY2xrLCAiZmFub3V0MiIs IGZhbm91dF9wYXJlbnRzLCAweGYzYywKPiA+PiArICAgNiwgMywgLyogbXV4ICovCj4gPj4gKyAg IEJJVCgyMyksIC8qIGdhdGUgKi8KPiA+PiArICAgMCk7Cj4gPj4gKwo+ID4+ICsKPiA+PiArc3Rh dGljIHN0cnVjdCBjY3VfY29tbW9uICpzdW44aV92ODUzX2NjdV9jbGtzW10gPSB7Cj4gPj4gKyAm cGxsX2NwdV9jbGsuY29tbW9uLAo+ID4+ICsgJnBsbF9kZHJfY2xrLmNvbW1vbiwKPiA+PiArICZw bGxfcGVyaXBoXzR4X2Nsay5jb21tb24sCj4gPj4gKyAmcGxsX3BlcmlwaF8yeF9jbGsuY29tbW9u LAo+ID4+ICsgJnBsbF9wZXJpcGhfODAwTV9jbGsuY29tbW9uLAo+ID4+ICsgJnBsbF9wZXJpcGhf NDgwTV9jbGsuY29tbW9uLAo+ID4+ICsgJnBsbF92aWRlb180eF9jbGsuY29tbW9uLAo+ID4+ICsg JnBsbF9jc2lfNHhfY2xrLmNvbW1vbiwKPiA+PiArICZwbGxfYXVkaW9fZGl2Ml9jbGsuY29tbW9u LAo+ID4+ICsgJnBsbF9hdWRpb19kaXY1X2Nsay5jb21tb24sCj4gPj4gKyAmcGxsX2F1ZGlvXzR4 X2Nsay5jb21tb24sCj4gPj4gKyAmcGxsX2F1ZGlvXzF4X2Nsay5jb21tb24sCj4gPj4gKyAmcGxs X25wdV80eF9jbGsuY29tbW9uLAo+ID4+ICsgJmNwdV9jbGsuY29tbW9uLAo+ID4+ICsgJmNwdV9h eGlfY2xrLmNvbW1vbiwKPiA+PiArICZjcHVfYXBiX2Nsay5jb21tb24sCj4gPj4gKyAmYWhiX2Ns ay5jb21tb24sCj4gPj4gKyAmYXBiMF9jbGsuY29tbW9uLAo+ID4+ICsgJmFwYjFfY2xrLmNvbW1v biwKPiA+PiArICZkZV9jbGsuY29tbW9uLAo+ID4+ICsgJmJ1c19kZV9jbGsuY29tbW9uLAo+ID4+ ICsgJmcyZF9jbGsuY29tbW9uLAo+ID4+ICsgJmJ1c19nMmRfY2xrLmNvbW1vbiwKPiA+PiArICZj ZV9jbGsuY29tbW9uLAo+ID4+ICsgJmJ1c19jZV9jbGsuY29tbW9uLAo+ID4+ICsgJnZlX2Nsay5j b21tb24sCj4gPj4gKyAmYnVzX3ZlX2Nsay5jb21tb24sCj4gPj4gKyAmbnB1X2Nsay5jb21tb24s Cj4gPj4gKyAmYnVzX25wdV9jbGsuY29tbW9uLAo+ID4+ICsgJmJ1c19kbWFfY2xrLmNvbW1vbiwK PiA+PiArICZidXNfbXNnYm94MF9jbGsuY29tbW9uLAo+ID4+ICsgJmJ1c19tc2dib3gxX2Nsay5j b21tb24sCj4gPj4gKyAmYnVzX3NwaW5sb2NrX2Nsay5jb21tb24sCj4gPj4gKyAmYnVzX2hzdGlt ZXJfY2xrLmNvbW1vbiwKPiA+PiArICZhdnNfY2xrLmNvbW1vbiwKPiA+PiArICZidXNfZGJnX2Ns ay5jb21tb24sCj4gPj4gKyAmYnVzX3B3bV9jbGsuY29tbW9uLAo+ID4+ICsgJmJ1c19pb21tdV9j bGsuY29tbW9uLAo+ID4+ICsgJmRyYW1fY2xrLmNvbW1vbiwKPiA+PiArICZtYnVzX2RtYV9jbGsu Y29tbW9uLAo+ID4+ICsgJm1idXNfdmVfY2xrLmNvbW1vbiwKPiA+PiArICZtYnVzX2NlX2Nsay5j b21tb24sCj4gPj4gKyAmbWJ1c19jc2lfY2xrLmNvbW1vbiwKPiA+PiArICZtYnVzX2lzcF9jbGsu Y29tbW9uLAo+ID4+ICsgJm1idXNfZzJkX2Nsay5jb21tb24sCj4gPj4gKyAmYnVzX2RyYW1fY2xr LmNvbW1vbiwKPiA+PiArICZtbWMwX2Nsay5jb21tb24sCj4gPj4gKyAmbW1jMV9jbGsuY29tbW9u LAo+ID4+ICsgJm1tYzJfY2xrLmNvbW1vbiwKPiA+PiArICZidXNfbW1jMF9jbGsuY29tbW9uLAo+ ID4+ICsgJmJ1c19tbWMxX2Nsay5jb21tb24sCj4gPj4gKyAmYnVzX21tYzJfY2xrLmNvbW1vbiwK PiA+PiArICZidXNfdWFydDBfY2xrLmNvbW1vbiwKPiA+PiArICZidXNfdWFydDFfY2xrLmNvbW1v biwKPiA+PiArICZidXNfdWFydDJfY2xrLmNvbW1vbiwKPiA+PiArICZidXNfdWFydDNfY2xrLmNv bW1vbiwKPiA+PiArICZidXNfaTJjMF9jbGsuY29tbW9uLAo+ID4+ICsgJmJ1c19pMmMxX2Nsay5j b21tb24sCj4gPj4gKyAmYnVzX2kyYzJfY2xrLmNvbW1vbiwKPiA+PiArICZidXNfaTJjM19jbGsu Y29tbW9uLAo+ID4+ICsgJmJ1c19pMmM0X2Nsay5jb21tb24sCj4gPj4gKyAmc3BpMF9jbGsuY29t bW9uLAo+ID4+ICsgJnNwaTFfY2xrLmNvbW1vbiwKPiA+PiArICZzcGkyX2Nsay5jb21tb24sCj4g Pj4gKyAmc3BpM19jbGsuY29tbW9uLAo+ID4+ICsgJmJ1c19zcGkwX2Nsay5jb21tb24sCj4gPj4g KyAmYnVzX3NwaTFfY2xrLmNvbW1vbiwKPiA+PiArICZidXNfc3BpMl9jbGsuY29tbW9uLAo+ID4+ ICsgJmJ1c19zcGkzX2Nsay5jb21tb24sCj4gPj4gKyAmc3BpZl9jbGsuY29tbW9uLAo+ID4+ICsg JmJ1c19zcGlmX2Nsay5jb21tb24sCj4gPj4gKyAmZW1hY18yNU1fY2xrLmNvbW1vbiwKPiA+PiAr ICZidXNfZW1hY19jbGsuY29tbW9uLAo+ID4+ICsgJmJ1c19ncGFkY19jbGsuY29tbW9uLAo+ID4+ ICsgJmJ1c190aHNfY2xrLmNvbW1vbiwKPiA+PiArICZ1c2Jfb2hjaV9jbGsuY29tbW9uLAo+ID4+ ICsgJmJ1c19vaGNpX2Nsay5jb21tb24sCj4gPj4gKyAmYnVzX2VoY2lfY2xrLmNvbW1vbiwKPiA+ PiArICZidXNfb3RnX2Nsay5jb21tb24sCj4gPj4gKyAmaTJzMF9jbGsuY29tbW9uLAo+ID4+ICsg JmkyczFfY2xrLmNvbW1vbiwKPiA+PiArICZidXNfaTJzMF9jbGsuY29tbW9uLAo+ID4+ICsgJmJ1 c19pMnMxX2Nsay5jb21tb24sCj4gPj4gKyAmZG1pY19jbGsuY29tbW9uLAo+ID4+ICsgJmJ1c19k bWljX2Nsay5jb21tb24sCj4gPj4gKyAmYXVkaW9fY29kZWNfZGFjX2Nsay5jb21tb24sCj4gPj4g KyAmYXVkaW9fY29kZWNfYWRjX2Nsay5jb21tb24sCj4gPj4gKyAmYnVzX2F1ZGlvX2NvZGVjX2Ns ay5jb21tb24sCj4gPj4gKyAmYnVzX2Rwc3NfdG9wX2Nsay5jb21tb24sCj4gPj4gKyAmbWlwaV9k c2lfY2xrLmNvbW1vbiwKPiA+PiArICZidXNfbWlwaV9kc2lfY2xrLmNvbW1vbiwKPiA+PiArICZ0 Y29uX2xjZF9jbGsuY29tbW9uLAo+ID4+ICsgJmJ1c190Y29uX2xjZF9jbGsuY29tbW9uLAo+ID4+ ICsgJmNzaV90b3BfY2xrLmNvbW1vbiwKPiA+PiArICZjc2lfbWNsazBfY2xrLmNvbW1vbiwKPiA+ PiArICZjc2lfbWNsazFfY2xrLmNvbW1vbiwKPiA+PiArICZjc2lfbWNsazJfY2xrLmNvbW1vbiwK PiA+PiArICZidXNfY3NpX2Nsay5jb21tb24sCj4gPj4gKyAmYnVzX3dpZWdhbmRfY2xrLmNvbW1v biwKPiA+PiArICZyaXNjdl9jbGsuY29tbW9uLAo+ID4+ICsgJnJpc2N2X2F4aV9jbGsuY29tbW9u LAo+ID4+ICsgJnJpc2N2X2NmZy5jb21tb24sCj4gPj4gKyAmZmFub3V0XzI0TV9jbGsuY29tbW9u LAo+ID4+ICsgJmZhbm91dF8xMk1fY2xrLmNvbW1vbiwKPiA+PiArICZmYW5vdXRfMTZNX2Nsay5j b21tb24sCj4gPj4gKyAmZmFub3V0XzI1TV9jbGsuY29tbW9uLAo+ID4+ICsgJmZhbm91dF8yN01f Y2xrLmNvbW1vbiwKPiA+PiArICZmYW5vdXRfcGNsa19jbGsuY29tbW9uLAo+ID4+ICsgJmZhbm91 dDBfY2xrLmNvbW1vbiwKPiA+PiArICZmYW5vdXQxX2Nsay5jb21tb24sCj4gPj4gKyAmZmFub3V0 Ml9jbGsuY29tbW9uLAo+ID4+ICt9Owo+ID4+ICsKPiA+PiArc3RhdGljIHN0cnVjdCBjbGtfaHdf b25lY2VsbF9kYXRhIHN1bjhpX3Y4NTNfaHdfY2xrcyA9IHsKPiA+PiArIC5udW0gPSBDTEtfTlVN QkVSLAo+ID4+ICsgLmh3cyA9IHsKPiA+PiArIFtDTEtfT1NDMTJNXSAgICAgICAgICAgID0gJm9z YzEyTV9jbGsuaHcsCj4gPj4gKyBbQ0xLX1BMTF9DUFVdID0gJnBsbF9jcHVfY2xrLmNvbW1vbi5o dywKPiA+PiArIFtDTEtfUExMX0REUl0gPSAmcGxsX2Rkcl9jbGsuY29tbW9uLmh3LAo+ID4+ICsg W0NMS19QTExfUEVSSVBIXzRYXSA9ICZwbGxfcGVyaXBoXzR4X2Nsay5jb21tb24uaHcsCj4gPj4g KyBbQ0xLX1BMTF9QRVJJUEhfMlhdID0gJnBsbF9wZXJpcGhfMnhfY2xrLmNvbW1vbi5odywKPiA+ PiArIFtDTEtfUExMX1BFUklQSF84MDBNXSA9ICZwbGxfcGVyaXBoXzgwME1fY2xrLmNvbW1vbi5o dywKPiA+PiArIFtDTEtfUExMX1BFUklQSF80ODBNXSA9ICZwbGxfcGVyaXBoXzQ4ME1fY2xrLmNv bW1vbi5odywKPiA+PiArIFtDTEtfUExMX1BFUklQSF82MDBNXSA9ICZwbGxfcGVyaXBoXzYwME1f Y2xrLmh3LAo+ID4+ICsgW0NMS19QTExfUEVSSVBIXzQwME1dID0gJnBsbF9wZXJpcGhfNDAwTV9j bGsuaHcsCj4gPj4gKyBbQ0xLX1BMTF9QRVJJUEhfMzAwTV0gPSAmcGxsX3BlcmlwaF8zMDBNX2Ns ay5odywKPiA+PiArIFtDTEtfUExMX1BFUklQSF8yMDBNXSA9ICZwbGxfcGVyaXBoXzIwME1fY2xr Lmh3LAo+ID4+ICsgW0NMS19QTExfUEVSSVBIXzE2ME1dID0gJnBsbF9wZXJpcGhfMTYwTV9jbGsu aHcsCj4gPj4gKyBbQ0xLX1BMTF9QRVJJUEhfMTUwTV0gPSAmcGxsX3BlcmlwaF8xNTBNX2Nsay5o dywKPiA+PiArIFtDTEtfUExMX1ZJREVPXzRYXSA9ICZwbGxfdmlkZW9fNHhfY2xrLmNvbW1vbi5o dywKPiA+PiArIFtDTEtfUExMX1ZJREVPXzJYXSA9ICZwbGxfdmlkZW9fMnhfY2xrLmh3LAo+ID4+ ICsgW0NMS19QTExfVklERU9fMVhdID0gJnBsbF92aWRlb18xeF9jbGsuaHcsCj4gPj4gKyBbQ0xL X1BMTF9DU0lfNFhdID0gJnBsbF9jc2lfNHhfY2xrLmNvbW1vbi5odywKPiA+PiArIFtDTEtfUExM X0FVRElPX0RJVjJdID0gJnBsbF9hdWRpb19kaXYyX2Nsay5jb21tb24uaHcsCj4gPj4gKyBbQ0xL X1BMTF9BVURJT19ESVY1XSA9ICZwbGxfYXVkaW9fZGl2NV9jbGsuY29tbW9uLmh3LAo+ID4+ICsg W0NMS19QTExfQVVESU9fNFhdID0gJnBsbF9hdWRpb180eF9jbGsuY29tbW9uLmh3LAo+ID4+ICsg W0NMS19QTExfQVVESU9fMVhdID0gJnBsbF9hdWRpb18xeF9jbGsuY29tbW9uLmh3LAo+ID4+ICsg W0NMS19QTExfTlBVXzRYXSA9ICZwbGxfbnB1XzR4X2Nsay5jb21tb24uaHcsCj4gPj4gKyBbQ0xL X0NQVV0gPSAmY3B1X2Nsay5jb21tb24uaHcsCj4gPj4gKyBbQ0xLX0NQVV9BWEldID0gJmNwdV9h eGlfY2xrLmNvbW1vbi5odywKPiA+PiArIFtDTEtfQ1BVX0FQQl0gPSAmY3B1X2FwYl9jbGsuY29t bW9uLmh3LAo+ID4+ICsgW0NMS19BSEJdID0gJmFoYl9jbGsuY29tbW9uLmh3LAo+ID4+ICsgW0NM S19BUEIwXSA9ICZhcGIwX2Nsay5jb21tb24uaHcsCj4gPj4gKyBbQ0xLX0FQQjFdID0gJmFwYjFf Y2xrLmNvbW1vbi5odywKPiA+PiArIFtDTEtfTUJVU10gPSAmbWJ1c19jbGsuaHcsCj4gPj4gKyBb Q0xLX0RFXSA9ICZkZV9jbGsuY29tbW9uLmh3LAo+ID4+ICsgW0NMS19CVVNfREVdID0gJmJ1c19k ZV9jbGsuY29tbW9uLmh3LAo+ID4+ICsgW0NMS19HMkRdID0gJmcyZF9jbGsuY29tbW9uLmh3LAo+ ID4+ICsgW0NMS19CVVNfRzJEXSA9ICZidXNfZzJkX2Nsay5jb21tb24uaHcsCj4gPj4gKyBbQ0xL X0NFXSA9ICZjZV9jbGsuY29tbW9uLmh3LAo+ID4+ICsgW0NMS19CVVNfQ0VdID0gJmJ1c19jZV9j bGsuY29tbW9uLmh3LAo+ID4+ICsgW0NMS19WRV0gPSAmdmVfY2xrLmNvbW1vbi5odywKPiA+PiAr IFtDTEtfQlVTX1ZFXSA9ICZidXNfdmVfY2xrLmNvbW1vbi5odywKPiA+PiArIFtDTEtfTlBVXSA9 ICZucHVfY2xrLmNvbW1vbi5odywKPiA+PiArIFtDTEtfQlVTX05QVV0gPSAmYnVzX25wdV9jbGsu Y29tbW9uLmh3LAo+ID4+ICsgW0NMS19CVVNfRE1BXSA9ICZidXNfZG1hX2Nsay5jb21tb24uaHcs Cj4gPj4gKyBbQ0xLX0JVU19NU0dCT1gwXSA9ICZidXNfbXNnYm94MF9jbGsuY29tbW9uLmh3LAo+ ID4+ICsgW0NMS19CVVNfTVNHQk9YMV0gPSAmYnVzX21zZ2JveDFfY2xrLmNvbW1vbi5odywKPiA+ PiArIFtDTEtfQlVTX1NQSU5MT0NLXSA9ICZidXNfc3BpbmxvY2tfY2xrLmNvbW1vbi5odywKPiA+ PiArIFtDTEtfQlVTX0hTVElNRVJdID0gJmJ1c19oc3RpbWVyX2Nsay5jb21tb24uaHcsCj4gPj4g KyBbQ0xLX0FWU10gPSAmYXZzX2Nsay5jb21tb24uaHcsCj4gPj4gKyBbQ0xLX0JVU19EQkddID0g JmJ1c19kYmdfY2xrLmNvbW1vbi5odywKPiA+PiArIFtDTEtfQlVTX1BXTV0gPSAmYnVzX3B3bV9j bGsuY29tbW9uLmh3LAo+ID4+ICsgW0NMS19CVVNfSU9NTVVdID0gJmJ1c19pb21tdV9jbGsuY29t bW9uLmh3LAo+ID4+ICsgW0NMS19EUkFNXSA9ICZkcmFtX2Nsay5jb21tb24uaHcsCj4gPj4gKyBb Q0xLX01CVVNfRE1BXSA9ICZtYnVzX2RtYV9jbGsuY29tbW9uLmh3LAo+ID4+ICsgW0NMS19NQlVT X1ZFXSA9ICZtYnVzX3ZlX2Nsay5jb21tb24uaHcsCj4gPj4gKyBbQ0xLX01CVVNfQ0VdID0gJm1i dXNfY2VfY2xrLmNvbW1vbi5odywKPiA+PiArIFtDTEtfTUJVU19DU0ldID0gJm1idXNfY3NpX2Ns ay5jb21tb24uaHcsCj4gPj4gKyBbQ0xLX01CVVNfSVNQXSA9ICZtYnVzX2lzcF9jbGsuY29tbW9u Lmh3LAo+ID4+ICsgW0NMS19NQlVTX0cyRF0gPSAmbWJ1c19nMmRfY2xrLmNvbW1vbi5odywKPiA+ PiArIFtDTEtfQlVTX0RSQU1dID0gJmJ1c19kcmFtX2Nsay5jb21tb24uaHcsCj4gPj4gKyBbQ0xL X01NQzBdID0gJm1tYzBfY2xrLmNvbW1vbi5odywKPiA+PiArIFtDTEtfTU1DMV0gPSAmbW1jMV9j bGsuY29tbW9uLmh3LAo+ID4+ICsgW0NMS19NTUMyXSA9ICZtbWMyX2Nsay5jb21tb24uaHcsCj4g Pj4gKyBbQ0xLX0JVU19NTUMwXSA9ICZidXNfbW1jMF9jbGsuY29tbW9uLmh3LAo+ID4+ICsgW0NM S19CVVNfTU1DMV0gPSAmYnVzX21tYzFfY2xrLmNvbW1vbi5odywKPiA+PiArIFtDTEtfQlVTX01N QzJdID0gJmJ1c19tbWMyX2Nsay5jb21tb24uaHcsCj4gPj4gKyBbQ0xLX0JVU19VQVJUMF0gPSAm YnVzX3VhcnQwX2Nsay5jb21tb24uaHcsCj4gPj4gKyBbQ0xLX0JVU19VQVJUMV0gPSAmYnVzX3Vh cnQxX2Nsay5jb21tb24uaHcsCj4gPj4gKyBbQ0xLX0JVU19VQVJUMl0gPSAmYnVzX3VhcnQyX2Ns ay5jb21tb24uaHcsCj4gPj4gKyBbQ0xLX0JVU19VQVJUM10gPSAmYnVzX3VhcnQzX2Nsay5jb21t b24uaHcsCj4gPj4gKyBbQ0xLX0JVU19JMkMwXSA9ICZidXNfaTJjMF9jbGsuY29tbW9uLmh3LAo+ ID4+ICsgW0NMS19CVVNfSTJDMV0gPSAmYnVzX2kyYzFfY2xrLmNvbW1vbi5odywKPiA+PiArIFtD TEtfQlVTX0kyQzJdID0gJmJ1c19pMmMyX2Nsay5jb21tb24uaHcsCj4gPj4gKyBbQ0xLX0JVU19J MkMzXSA9ICZidXNfaTJjM19jbGsuY29tbW9uLmh3LAo+ID4+ICsgW0NMS19CVVNfSTJDNF0gPSAm YnVzX2kyYzRfY2xrLmNvbW1vbi5odywKPiA+PiArIFtDTEtfU1BJMF0gPSAmc3BpMF9jbGsuY29t bW9uLmh3LAo+ID4+ICsgW0NMS19TUEkxXSA9ICZzcGkxX2Nsay5jb21tb24uaHcsCj4gPj4gKyBb Q0xLX1NQSTJdID0gJnNwaTJfY2xrLmNvbW1vbi5odywKPiA+PiArIFtDTEtfU1BJM10gPSAmc3Bp M19jbGsuY29tbW9uLmh3LAo+ID4+ICsgW0NMS19CVVNfU1BJMF0gPSAmYnVzX3NwaTBfY2xrLmNv bW1vbi5odywKPiA+PiArIFtDTEtfQlVTX1NQSTFdID0gJmJ1c19zcGkxX2Nsay5jb21tb24uaHcs Cj4gPj4gKyBbQ0xLX0JVU19TUEkyXSA9ICZidXNfc3BpMl9jbGsuY29tbW9uLmh3LAo+ID4+ICsg W0NMS19CVVNfU1BJM10gPSAmYnVzX3NwaTNfY2xrLmNvbW1vbi5odywKPiA+PiArIFtDTEtfU1BJ Rl0gPSAmc3BpZl9jbGsuY29tbW9uLmh3LAo+ID4+ICsgW0NMS19CVVNfU1BJRl0gPSAmYnVzX3Nw aWZfY2xrLmNvbW1vbi5odywKPiA+PiArIFtDTEtfRU1BQ18yNU1dID0gJmVtYWNfMjVNX2Nsay5j b21tb24uaHcsCj4gPj4gKyBbQ0xLX0JVU19FTUFDXSA9ICZidXNfZW1hY19jbGsuY29tbW9uLmh3 LAo+ID4+ICsgW0NMS19CVVNfR1BBRENdID0gJmJ1c19ncGFkY19jbGsuY29tbW9uLmh3LAo+ID4+ ICsgW0NMS19CVVNfVEhTXSA9ICZidXNfdGhzX2Nsay5jb21tb24uaHcsCj4gPj4gKyBbQ0xLX0ky UzBdID0gJmkyczBfY2xrLmNvbW1vbi5odywKPiA+PiArIFtDTEtfSTJTMV0gPSAmaTJzMV9jbGsu Y29tbW9uLmh3LAo+ID4+ICsgW0NMS19CVVNfSTJTMF0gPSAmYnVzX2kyczBfY2xrLmNvbW1vbi5o dywKPiA+PiArIFtDTEtfQlVTX0kyUzFdID0gJmJ1c19pMnMxX2Nsay5jb21tb24uaHcsCj4gPj4g KyBbQ0xLX0RNSUNdID0gJmRtaWNfY2xrLmNvbW1vbi5odywKPiA+PiArIFtDTEtfQlVTX0RNSUNd ID0gJmJ1c19kbWljX2Nsay5jb21tb24uaHcsCj4gPj4gKyBbQ0xLX0FVRElPX0NPREVDX0RBQ10g PSAmYXVkaW9fY29kZWNfZGFjX2Nsay5jb21tb24uaHcsCj4gPj4gKyBbQ0xLX0FVRElPX0NPREVD X0FEQ10gPSAmYXVkaW9fY29kZWNfYWRjX2Nsay5jb21tb24uaHcsCj4gPj4gKyBbQ0xLX0JVU19B VURJT19DT0RFQ10gPSAmYnVzX2F1ZGlvX2NvZGVjX2Nsay5jb21tb24uaHcsCj4gPj4gKyBbQ0xL X1VTQl9PSENJXSA9ICZ1c2Jfb2hjaV9jbGsuY29tbW9uLmh3LAo+ID4+ICsgW0NMS19CVVNfT0hD SV0gPSAmYnVzX29oY2lfY2xrLmNvbW1vbi5odywKPiA+PiArIFtDTEtfQlVTX0VIQ0ldID0gJmJ1 c19laGNpX2Nsay5jb21tb24uaHcsCj4gPj4gKyBbQ0xLX0JVU19PVEddID0gJmJ1c19vdGdfY2xr LmNvbW1vbi5odywKPiA+PiArIFtDTEtfQlVTX0RQU1NfVE9QXSA9ICZidXNfZHBzc190b3BfY2xr LmNvbW1vbi5odywKPiA+PiArIFtDTEtfTUlQSV9EU0ldID0gJm1pcGlfZHNpX2Nsay5jb21tb24u aHcsCj4gPj4gKyBbQ0xLX0JVU19NSVBJX0RTSV0gPSAmYnVzX21pcGlfZHNpX2Nsay5jb21tb24u aHcsCj4gPj4gKyBbQ0xLX1RDT05fTENEXSA9ICZ0Y29uX2xjZF9jbGsuY29tbW9uLmh3LAo+ID4+ ICsgW0NMS19CVVNfVENPTl9MQ0RdID0gJmJ1c190Y29uX2xjZF9jbGsuY29tbW9uLmh3LAo+ID4+ ICsgW0NMS19DU0lfVE9QXSA9ICZjc2lfdG9wX2Nsay5jb21tb24uaHcsCj4gPj4gKyBbQ0xLX0NT SV9NQ0xLMF0gPSAmY3NpX21jbGswX2Nsay5jb21tb24uaHcsCj4gPj4gKyBbQ0xLX0NTSV9NQ0xL MV0gPSAmY3NpX21jbGsxX2Nsay5jb21tb24uaHcsCj4gPj4gKyBbQ0xLX0NTSV9NQ0xLMl0gPSAm Y3NpX21jbGsyX2Nsay5jb21tb24uaHcsCj4gPj4gKyBbQ0xLX0JVU19DU0ldID0gJmJ1c19jc2lf Y2xrLmNvbW1vbi5odywKPiA+PiArIFtDTEtfQlVTX1dJRUdBTkRdID0gJmJ1c193aWVnYW5kX2Ns ay5jb21tb24uaHcsCj4gPj4gKyBbQ0xLX1JJU0NWXSA9ICZyaXNjdl9jbGsuY29tbW9uLmh3LAo+ ID4+ICsgW0NMS19SSVNDVl9BWEldID0gJnJpc2N2X2F4aV9jbGsuY29tbW9uLmh3LAo+ID4+ICsg W0NMS19SSVNDVl9DRkddICAgICAgICAgPSAmcmlzY3ZfY2ZnLmNvbW1vbi5odywKPiA+PiArIFtD TEtfRkFOT1VUXzI0TV0gPSAmZmFub3V0XzI0TV9jbGsuY29tbW9uLmh3LAo+ID4+ICsgW0NMS19G QU5PVVRfMTZNXSA9ICZmYW5vdXRfMTZNX2Nsay5jb21tb24uaHcsCj4gPj4gKyBbQ0xLX0ZBTk9V VF8xMk1dID0gJmZhbm91dF8xMk1fY2xrLmNvbW1vbi5odywKPiA+PiArIFtDTEtfRkFOT1VUXzI1 TV0gPSAmZmFub3V0XzI1TV9jbGsuY29tbW9uLmh3LAo+ID4+ICsgW0NMS19GQU5PVVRfMjdNXSA9 ICZmYW5vdXRfMjdNX2Nsay5jb21tb24uaHcsCj4gPj4gKyBbQ0xLX0ZBTk9VVF9QQ0xLXSA9ICZm YW5vdXRfcGNsa19jbGsuY29tbW9uLmh3LAo+ID4+ICsgW0NMS19GQU5PVVQwXSA9ICZmYW5vdXQw X2Nsay5jb21tb24uaHcsCj4gPj4gKyBbQ0xLX0ZBTk9VVDFdID0gJmZhbm91dDFfY2xrLmNvbW1v bi5odywKPiA+PiArIFtDTEtfRkFOT1VUMl0gPSAmZmFub3V0Ml9jbGsuY29tbW9uLmh3LAo+ID4+ ICsgfSwKPiA+PiArfTsKPiA+PiArCj4gPj4gK3N0YXRpYyBzdHJ1Y3QgY2N1X3Jlc2V0X21hcCBz dW44aV92ODUzX2NjdV9yZXNldHNbXSA9IHsKPiA+PiArIFtSU1RfTUJVU10gPSB7IDB4NTQwLCBC SVQoMzApIH0sCj4gPj4gKyBbUlNUX0JVU19ERV0gPSB7IDB4NjBjLCBCSVQoMTYpIH0sCj4gPj4g KyBbUlNUX0JVU19HMkRdID0geyAweDYzYywgQklUKDE2KSB9LAo+ID4+ICsgW1JTVF9CVVNfQ0Vd ID0geyAweDY4YywgQklUKDE2KSB8IEJJVCgxNyl9LAo+ID4+ICsgW1JTVF9CVVNfVkVdID0geyAw eDY5YywgQklUKDE2KSB9LAo+ID4+ICsgW1JTVF9CVVNfTlBVXSA9IHsgMHg2ZWMsIEJJVCgxNikg fSwKPiA+PiArIFtSU1RfQlVTX0RNQV0gPSB7IDB4NzBjLCBCSVQoMTYpIH0sCj4gPj4gKyBbUlNU X0JVU19NU0dCT1gwXSA9IHsgMHg3MWMsIEJJVCgxNikgfSwKPiA+PiArIFtSU1RfQlVTX01TR0JP WDFdID0geyAweDcxYywgQklUKDE3KSB9LAo+ID4+ICsgW1JTVF9CVVNfU1BJTkxPQ0tdID0geyAw eDcyYywgQklUKDE2KSB9LAo+ID4+ICsgW1JTVF9CVVNfSFNUSU1FUl0gPSB7IDB4NzNjLCBCSVQo MTYpIH0sCj4gPj4gKyBbUlNUX0JVU19EQkddID0geyAweDc4YywgQklUKDE2KSB9LAo+ID4+ICsg W1JTVF9CVVNfUFdNXSA9IHsgMHg3YWMsIEJJVCgxNikgfSwKPiA+PiArIFtSU1RfQlVTX0RSQU1d ID0geyAweDgwYywgQklUKDE2KSB9LAo+ID4+ICsgW1JTVF9CVVNfTU1DMF0gPSB7IDB4ODRjLCBC SVQoMTYpIH0sCj4gPj4gKyBbUlNUX0JVU19NTUMxXSA9IHsgMHg4NGMsIEJJVCgxNykgfSwKPiA+ PiArIFtSU1RfQlVTX01NQzJdID0geyAweDg0YywgQklUKDE4KSB9LAo+ID4+ICsgW1JTVF9CVVNf VUFSVDBdID0geyAweDkwYywgQklUKDE2KSB9LAo+ID4+ICsgW1JTVF9CVVNfVUFSVDFdID0geyAw eDkwYywgQklUKDE3KSB9LAo+ID4+ICsgW1JTVF9CVVNfVUFSVDJdID0geyAweDkwYywgQklUKDE4 KSB9LAo+ID4+ICsgW1JTVF9CVVNfVUFSVDNdID0geyAweDkwYywgQklUKDE5KSB9LAo+ID4+ICsg W1JTVF9CVVNfSTJDMF0gPSB7IDB4OTFjLCBCSVQoMTYpIH0sCj4gPj4gKyBbUlNUX0JVU19JMkMx XSA9IHsgMHg5MWMsIEJJVCgxNykgfSwKPiA+PiArIFtSU1RfQlVTX0kyQzJdID0geyAweDkxYywg QklUKDE4KSB9LAo+ID4+ICsgW1JTVF9CVVNfSTJDM10gPSB7IDB4OTFjLCBCSVQoMTkpIH0sCj4g Pj4gKyBbUlNUX0JVU19JMkM0XSA9IHsgMHg5MWMsIEJJVCgyMCkgfSwKPiA+PiArIFtSU1RfQlVT X1NQSUZdID0geyAweDk2YywgQklUKDIwKSB9LCAgCj4gPiAKPiA+IFRoYXQgZW50cnkgXl5eXiBz ZWVtcyBvdXQgb2Ygb3JkZXIuICAKPiAKPiBPcHBzLCBJ4oCZbGwgZml4IGl0Lgo+IAo+ID4gICAK PiA+PiArIFtSU1RfQlVTX1NQSTBdID0geyAweDk2YywgQklUKDE2KSB9LAo+ID4+ICsgW1JTVF9C VVNfU1BJMV0gPSB7IDB4OTZjLCBCSVQoMTcpIH0sCj4gPj4gKyBbUlNUX0JVU19TUEkyXSA9IHsg MHg5NmMsIEJJVCgxOCkgfSwKPiA+PiArIFtSU1RfQlVTX1NQSTNdID0geyAweDk2YywgQklUKDE5 KSB9LAo+ID4+ICsgW1JTVF9CVVNfRU1BQ10gPSB7IDB4OTdjLCBCSVQoMTYpIH0sCj4gPj4gKyBb UlNUX0JVU19HUEFEQ10gPSB7IDB4OWVjLCBCSVQoMTYpIH0sCj4gPj4gKyBbUlNUX0JVU19USFNd ID0geyAweDlmYywgQklUKDE2KSB9LAo+ID4+ICsgW1JTVF9CVVNfSTJTMF0gPSB7IDB4YTIwLCBC SVQoMTYpIH0sCj4gPj4gKyBbUlNUX0JVU19JMlMxXSA9IHsgMHhhMjAsIEJJVCgxNykgfSwKPiA+ PiArIFtSU1RfQlVTX0RNSUNdID0geyAweGE0YywgQklUKDE2KSB9LAo+ID4+ICsgW1JTVF9CVVNf QVVESU9fQ09ERUNdID0geyAweGE1YywgQklUKDE2KSB9LAo+ID4+ICsgW1JTVF9VU0JfUEhZXSA9 IHsgMHhhNzAsIEJJVCgzMCkgfSwKPiA+PiArIFtSU1RfQlVTX09IQ0ldID0geyAweGE4YywgQklU KDE2KSB9LAo+ID4+ICsgW1JTVF9CVVNfRUhDSV0gPSB7IDB4YThjLCBCSVQoMjApIH0sCj4gPj4g KyBbUlNUX0JVU19PVEddID0geyAweGE4YywgQklUKDI0KSB9LAo+ID4+ICsgW1JTVF9CVVNfRFBT U19UT1BdID0geyAweGFiYywgQklUKDE2KSB9LAo+ID4+ICsgW1JTVF9CVVNfTUlQSV9EU0ldID0g eyAweGI0YywgQklUKDE2KSB9LAo+ID4+ICsgW1JTVF9CVVNfVENPTl9MQ0RdID0geyAweGI3Yywg QklUKDE2KSB9LAo+ID4+ICsgW1JTVF9CVVNfQ1NJXSA9IHsgMHhjMmMsIEJJVCgxNikgfSwKPiA+ PiArIFtSU1RfQlVTX1dJRUdBTkRdID0geyAweGM3YywgQklUKDE2KSB9LAo+ID4+ICsgW1JTVF9S SVNDVl9TWVNfQVBCXSA9IHsgMHhkMDQsIEJJVCgyKSwgQ0NVX0ZFQVRVUkVfS0VZX0ZJRUxEIH0s Cj4gPj4gKyBbUlNUX1JJU0NWX1NPRlRdID0geyAweGQwNCwgQklUKDEpLCBDQ1VfRkVBVFVSRV9L RVlfRklFTEQgfSwKPiA+PiArIFtSU1RfUklTQ1ZfQ0xLX0dBVElOR10gPSB7IDB4ZDA0LCBCSVQo MCksIENDVV9GRUFUVVJFX0tFWV9GSUVMRCB9LCAgCj4gPiAKPiA+IEJ1dCB0aGF0J3MgYSBjbG9j ayBnYXRlLCBub3QgYSByZXNldCwgcmlnaHQ/ICAKPiAKPiBZZXMsIEkgZm9yZ2V0IHRvIGZpeCB0 aGF0LiBNb2RlbGxpbmcgdGhpcyB3YXkgKGJlY2F1c2Ugb2YgdGhlIEtFWV9GSUVMRCkgd2FzIGZh c3Rlcgo+IHdoZW4gSSB3cm90ZSB0aGUgcmVtb3RlcHJvYyBkcml2ZXIuIAo+IAo+ID4gICAKPiA+ PiArIFtSU1RfUklTQ1ZfQ0ZHXSA9IHsgMHhkMGMsIEJJVCgxNikgfSAgCj4gPiAKPiA+IFRoZSBy ZXN0IG9mIHRoZSByZXNldCBiaXRzIG1hdGNoIHRoZSBtYW51YWwuCj4gPiAgIAo+ID4+ICt9Owo+ ID4+ICsKPiA+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBzdW54aV9jY3VfZGVzYyBzdW44aV92ODUz X2NjdV9kZXNjID0gewo+ID4+ICsgLmNjdV9jbGtzID0gc3VuOGlfdjg1M19jY3VfY2xrcywKPiA+ PiArIC5udW1fY2N1X2Nsa3MgPSBBUlJBWV9TSVpFKHN1bjhpX3Y4NTNfY2N1X2Nsa3MpLAo+ID4+ ICsKPiA+PiArIC5od19jbGtzID0gJnN1bjhpX3Y4NTNfaHdfY2xrcywKPiA+PiArCj4gPj4gKyAu cmVzZXRzID0gc3VuOGlfdjg1M19jY3VfcmVzZXRzLAo+ID4+ICsgLm51bV9yZXNldHMgPSBBUlJB WV9TSVpFKHN1bjhpX3Y4NTNfY2N1X3Jlc2V0cyksCj4gPj4gK307Cj4gPj4gKwo+ID4+ICtzdGF0 aWMgY29uc3QgdTMyIHBsbF9yZWdzW10gPSB7Cj4gPj4gKyBTVU44SV9WODUzX1BMTF9DUFVfUkVH LAo+ID4+ICsgU1VOOElfVjg1M19QTExfRERSX1JFRywKPiA+PiArIFNVTjhJX1Y4NTNfUExMX1BF UklQSF9SRUcsCj4gPj4gKyBTVU44SV9WODUzX1BMTF9WSURFT19SRUcsCj4gPj4gKyBTVU44SV9W ODUzX1BMTF9DU0lfUkVHLAo+ID4+ICsgU1VOOElfVjg1M19QTExfQVVESU9fUkVHLAo+ID4+ICsg U1VOOElfVjg1M19QTExfTlBVX1JFRywKPiA+PiArfTsKPiA+PiArCj4gPj4gK3N0YXRpYyBpbnQg c3VuOGlfdjg1M19jY3VfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiA+PiAr ewo+ID4+ICsgdm9pZCBfX2lvbWVtICpyZWc7Cj4gPj4gKyB1MzIgdmFsOwo+ID4+ICsgaW50IGks IHJldDsKPiA+PiArCj4gPj4gKyByZWcgPSBkZXZtX3BsYXRmb3JtX2lvcmVtYXBfcmVzb3VyY2Uo cGRldiwgMCk7Cj4gPj4gKyBpZiAoSVNfRVJSKHJlZykpCj4gPj4gKyByZXR1cm4gUFRSX0VSUihy ZWcpOwo+ID4+ICsKPiA+PiArIC8qIEVuYWJsZSB0aGUgZW5hYmxlLCBMRE8sIGFuZCBsb2NrIGJp dHMgb24gYWxsIFBMTHMuICovCj4gPj4gKyBmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShwbGxf cmVncyk7IGkrKykgewo+ID4+ICsgdmFsID0gcmVhZGwocmVnICsgcGxsX3JlZ3NbaV0pOwo+ID4+ ICsgdmFsIHw9IEJJVCgzMSkgfCBCSVQoMzApIHwgQklUKDI5KTsKPiA+PiArIHdyaXRlbCh2YWws IHJlZyArIHBsbF9yZWdzW2ldKTsKPiA+PiArIH0KPiA+PiArCj4gPj4gKyAvKiBGb3JjZSBQTExf Q1BVIGZhY3RvciBNIHRvIDAuICovCj4gPj4gKyB2YWwgPSByZWFkbChyZWcgKyBTVU44SV9WODUz X1BMTF9DUFVfUkVHKTsKPiA+PiArIHZhbCAmPSB+R0VOTUFTSygxLCAwKTsKPiA+PiArIHdyaXRl bCh2YWwsIHJlZyArIFNVTjhJX1Y4NTNfUExMX0NQVV9SRUcpOyAgCj4gPiAKPiA+IExldCdzIGp1 c3QgaG9wZSBpdCB3YXMgMCBhbHJlYWR5LCBhcyBJIGd1ZXNzIGEgc3VkZGVuIGp1bXAgb2YKPiA+ IENQVSBmcmVxdWVuY3kgbWlnaHQgbm90IGJlIHRvbyBoZWFsdGh5Lgo+ID4gICAKPiBJ4oCZbGwg ZG91YmxlIGNoZWNrIHRoYXQuCj4gCj4gPj4gKyAvKgo+ID4+ICsgICogRm9yY2UgdGhlIG91dHB1 dCBkaXZpZGVyIG9mIHZpZGVvIFBMTCB0byAwLiAgCj4gPiAKPiA+IEp1c3QgYSBuaXQsIGJ1dCBh ICJkaXZpZGVyIG9mIDAiIGRvZXMgbm90IHNvdW5kIHRvbyBoZWFsdGh5LiBNYXliZToKPiA+ICJG b3JjZSB0aGUgb3V0cHV0IGRpdmlkZXIgdG8gMSwgYnkgY2xlYXJpbmcgYml0IDAuIgo+ID4gICAK PiAKPiBUaGFua3MuCj4gCj4gPiBDaGVlcnMsCj4gPiBBbmRyZQo+ID4gICAKPiA+PiArICAqCj4g Pj4gKyAgKiBTZWUgdGhlIGNvbW1lbnQgYmVmb3JlIHBsbC12aWRlbzAgZGVmaW5pdGlvbiBmb3Ig dGhlIHJlYXNvbi4KPiA+PiArICAqLwo+ID4+ICsgdmFsID0gcmVhZGwocmVnICsgU1VOOElfVjg1 M19QTExfVklERU9fUkVHKTsKPiA+PiArIHZhbCAmPSB+QklUKDApOwo+ID4+ICsgd3JpdGVsKHZh bCwgcmVnICsgU1VOOElfVjg1M19QTExfVklERU9fUkVHKTsKPiA+PiArCj4gPj4gKyAvKgo+ID4+ ICsgICogRm9yY2UgdGhlIG91dHB1dCBkaXZpZGVyIG9mIENTSSBQTEwgdG8gMC4KPiA+PiArICAq Cj4gPj4gKyAgKiBTZWUgdGhlIGNvbW1lbnQgYmVmb3JlIHBsbC1jc2kgZGVmaW5pdGlvbiBmb3Ig dGhlIHJlYXNvbi4KPiA+PiArICAqLwo+ID4+ICsgdmFsID0gcmVhZGwocmVnICsgU1VOOElfVjg1 M19QTExfQ1NJX1JFRyk7Cj4gPj4gKyB2YWwgJj0gfkJJVCgwKTsKPiA+PiArIHdyaXRlbCh2YWws IHJlZyArIFNVTjhJX1Y4NTNfUExMX0NTSV9SRUcpOwo+ID4+ICsKPiA+PiArIC8qCj4gPj4gKyAg KiBGb3JjZSB0aGUgb3V0cHV0IGRpdmlkZXIgb2YgTlBVIFBMTCB0byAwLgo+ID4+ICsgICoKPiA+ PiArICAqIFNlZSB0aGUgY29tbWVudCBiZWZvcmUgcGxsLW5wdSBkZWZpbml0aW9uIGZvciB0aGUg cmVhc29uLgo+ID4+ICsgICovCj4gPj4gKyB2YWwgPSByZWFkbChyZWcgKyBTVU44SV9WODUzX1BM TF9OUFVfUkVHKTsKPiA+PiArIHZhbCAmPSB+QklUKDApOwo+ID4+ICsgd3JpdGVsKHZhbCwgcmVn ICsgU1VOOElfVjg1M19QTExfTlBVX1JFRyk7Cj4gPj4gKwo+ID4+ICsgLyoKPiA+PiArICAqIEZv cmNlIE9IQ0kgMTJNIGNsb2NrIHNvdXJjZSB0byAwMCAoMTJNSHogZGl2aWRlZCBmcm9tIDQ4TUh6 KQo+ID4+ICsgICoKPiA+PiArICAqIFRoaXMgY2xvY2sgbXV4IGlzIHN0aWxsIG15c3RlcmlvdXMs IGFuZCB0aGUgY29kZSBqdXN0IGVuZm9yY2VzCj4gPj4gKyAgKiBpdCB0byBoYXZlIGEgdmFsaWQg Y2xvY2sgcGFyZW50Lgo+ID4+ICsgICovCj4gPj4gKyB2YWwgPSByZWFkbChyZWcgKyBTVU44SV9W ODUzX1VTQl9DTEtfUkVHKTsKPiA+PiArIHZhbCAmPSB+R0VOTUFTSygyNSwgMjQpOwo+ID4+ICsg d3JpdGVsKHZhbCwgcmVnICsgU1VOOElfVjg1M19VU0JfQ0xLX1JFRyk7Cj4gPj4gKwo+ID4+ICsg LyogRm9yY2UgZmFub3V0LTI3TSBmYWN0b3IgTiB0byAwLiAqLwo+ID4+ICsgdmFsID0gcmVhZGwo cmVnICsgU1VOOElfVjg1M19GQU5PVVRfMjdNX1JFRyk7Cj4gPj4gKyB2YWwgJj0gfkdFTk1BU0so OSwgOCk7Cj4gPj4gKyB3cml0ZWwodmFsLCByZWcgKyBTVU44SV9WODUzX0ZBTk9VVF8yN01fUkVH KTsKPiA+PiArCj4gPj4gKyByZXQgPSBkZXZtX3N1bnhpX2NjdV9wcm9iZSgmcGRldi0+ZGV2LCBy ZWcsICZzdW44aV92ODUzX2NjdV9kZXNjKTsKPiA+PiArIGlmIChyZXQpCj4gPj4gKyByZXR1cm4g cmV0Owo+ID4+ICsKPiA+PiArIHJldHVybiAwOwo+ID4+ICt9Cj4gPj4gKwo+ID4+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBzdW44aV92ODUzX2NjdV9pZHNbXSA9IHsKPiA+PiAr IHsgLmNvbXBhdGlibGUgPSAiYWxsd2lubmVyLHN1bjhpLXY4NTMtY2N1IiB9LAo+ID4+ICsgeyB9 Cj4gPj4gK307Cj4gPj4gKwo+ID4+ICtzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBzdW44 aV92ODUzX2NjdV9kcml2ZXIgPSB7Cj4gPj4gKyAucHJvYmUgPSBzdW44aV92ODUzX2NjdV9wcm9i ZSwKPiA+PiArIC5kcml2ZXIgPSB7Cj4gPj4gKyAubmFtZSA9ICJzdW44aS12ODUzLWNjdSIsCj4g Pj4gKyAuc3VwcHJlc3NfYmluZF9hdHRycyA9IHRydWUsCj4gPj4gKyAub2ZfbWF0Y2hfdGFibGUg PSBzdW44aV92ODUzX2NjdV9pZHMsCj4gPj4gKyB9LAo+ID4+ICt9Owo+ID4+ICttb2R1bGVfcGxh dGZvcm1fZHJpdmVyKHN1bjhpX3Y4NTNfY2N1X2RyaXZlcik7Cj4gPj4gKwo+ID4+ICtNT0RVTEVf SU1QT1JUX05TKCJTVU5YSV9DQ1UiKTsKPiA+PiArTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwo+ID4+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2Nsay9zdW54aS1uZy9jY3Utc3VuOGktdjg1My5oIGIvZHJp dmVycy9jbGsvc3VueGktbmcvY2N1LXN1bjhpLXY4NTMuaAo+ID4+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0Cj4gPj4gaW5kZXggMDAwMDAwMDAwMDAwLi5iNmVlMTc2NGZlNWUKPiA+PiAtLS0gL2Rldi9u dWxsCj4gPj4gKysrIGIvZHJpdmVycy9jbGsvc3VueGktbmcvY2N1LXN1bjhpLXY4NTMuaAo+ID4+ IEBAIC0wLDAgKzEsMTQgQEAKPiA+PiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0y LjAgKi8KPiA+PiArLyoKPiA+PiArICogQ29weXJpZ2h0IChDKSAyMDI0IEFuZHJhcyBTemVtem8g PHN6ZW16by5hbmRyYXNAZ21haWwuY29tPgo+ID4+ICsgKi8KPiA+PiArCj4gPj4gKyNpZm5kZWYg X0NDVV9TVU44SV9WODUzX0hfCj4gPj4gKyNkZWZpbmUgX0NDVV9TVU44SV9WODUzX0hfCj4gPj4g Kwo+ID4+ICsjaW5jbHVkZSA8ZHQtYmluZGluZ3MvY2xvY2svc3VuOGktdjg1My1jY3UuaD4KPiA+ PiArI2luY2x1ZGUgPGR0LWJpbmRpbmdzL3Jlc2V0L3N1bjhpLXY4NTMtY2N1Lmg+Cj4gPj4gKwo+ ID4+ICsjZGVmaW5lIENMS19OVU1CRVIgKENMS19GQU5PVVQyICsgMSkKPiA+PiArCj4gPj4gKyNl bmRpZiAvKiBfQ0NVX1NVTjhJX1Y4NTNfSF8gKi8gIAoKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LXJpc2N2IG1haWxpbmcgbGlzdApsaW51eC1y aXNjdkBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxt YW4vbGlzdGluZm8vbGludXgtcmlzY3YK