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 X-Spam-Level: X-Spam-Status: No, score=-5.7 required=3.0 tests=BAYES_00,DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED,DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 52D81C48BD1 for ; Fri, 11 Jun 2021 22:48:19 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 114906124B for ; Fri, 11 Jun 2021 22:48:19 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 114906124B Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org 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: Date:Cc:To:From:Subject:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=ThWNdSmorszoYEMxRb8Z78MtTN98cmU0lSwA87SXics=; b=Y7QHutekYFD8+M Ey2kZGpbZTKbysIP1kO6WEyLYUieomfWApzbm2M2QQCJqRoCaVBbdJJeOpwCZrZAv+zz3jcT7rflS ndtmxHp/KNkwSwGUwnZnsxToWuxhIzqSNgP5kvFndjp0ViUfpM79JhazcOvMsVCZ8ag+uCmSe1kP6 ATTXKMCwAcv2jdEfyKo7l6dWA6wTxVsoOLEFCdPSKObrZGMcPtIngBb6A186HYSzYdXGRX7Xi4It+ WYBt9ESXyIhEED67jyXfU2eGEFFOMJoXt9aKRCjzJHxBOV3WYOYaTqqtnYyksbFnumMxrbX3/ZvLU 0toPPB323Kj3DmkzfBVw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1lrpsw-007K2T-HC; Fri, 11 Jun 2021 22:44:18 +0000 Received: from mail-wr1-x433.google.com ([2a00:1450:4864:20::433]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1lrpso-007JzM-Sd for linux-arm-kernel@lists.infradead.org; Fri, 11 Jun 2021 22:44:15 +0000 Received: by mail-wr1-x433.google.com with SMTP id i94so7556903wri.4 for ; Fri, 11 Jun 2021 15:42:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=message-id:subject:from:to:cc:date:in-reply-to:references :user-agent:mime-version:content-transfer-encoding; bh=cNUN2g0mfX244M+M6Lc6XCabb3Q8HtawWABkFTZIz10=; b=hgwQ5QZzCw6+f75Tc6cWR4RvvLzPGwOhhIJFMuUc+ig6HT4C8Afo6IhROd+mDZddhS ilQpnsi6pCHQ6MzaQBqAv3Yx4iLMcR7emF2I2sK1iakNYV6zQCjRjjU49qx6ekDE3Dgg A4Qkalo1RzzHPXyDHeR1evK+q3J1KTzMuAKPJBKp0k/5InlJN/5XRUv33FayPejMK7pS Yujoov3V67/lpIpG5fgVLdGNMRd16V3SoGIVRPJvLz4N+8+fmQWdtRL82fyG3LdyLzWy 9LzJET96WX03sYH8McONFYjUeVBH6wAJI75TZR3WvWXuEsmWwsyCC+0LH1EdGMg4eQkd /uAQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:message-id:subject:from:to:cc:date:in-reply-to :references:user-agent:mime-version:content-transfer-encoding; bh=cNUN2g0mfX244M+M6Lc6XCabb3Q8HtawWABkFTZIz10=; b=LRcAW5HhMFELLHUARub35Q3jDB/b7AjssbtTFrr+N8y8qcwwKz+8omq3aN9m5pSrbS Cqzy7BRmk/KD/B8uJThTGngfJIONwYowAJP/VVH6uouZFsjjQbGMnzF2KmZw+oW2G/Vs /VXjbD4T3x50AHldrUzoBrBL7sejwcJGEyRdjCQkbKRIMOHtjZrYw3yjHHw2gKxBNJrb ZVljeWsnfZ1VKjx50ri5psgDTAyiK6OLMEX7TxH1ngpVyz1Egc9QsSl9GQ5D4JyzZzt2 34P9fZLV+gO5VFww3nOgOQfDuJiwdXMy7wy1bi62mT9RdmJABdQ+bCzlyZE8IeNOSyXO mjGQ== X-Gm-Message-State: AOAM533lwG3I6TjXiPV55gUU7fvDh7jGFZkTInwv7hmfBGL0X/v+X/Kh +cT4UTpNj7L8bGDuliXzoUg= X-Google-Smtp-Source: ABdhPJzX+yUY0qiTnmqidx770KUMHkpkQ3vZaKsVej3whoZQJNUdUGn23j8ZLQxHc+rfn4Q1daIngg== X-Received: by 2002:adf:e5c1:: with SMTP id a1mr6321986wrn.16.1623451327253; Fri, 11 Jun 2021 15:42:07 -0700 (PDT) Received: from [192.168.1.21] ([195.245.23.224]) by smtp.gmail.com with ESMTPSA id p12sm12634130wme.43.2021.06.11.15.42.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Jun 2021 15:42:06 -0700 (PDT) Message-ID: <8cdf2b130ae02ba00324d0a70cbbcd3ba53e1d09.camel@gmail.com> Subject: Re: [PATCH 1/1] ep93xx: clock: convert in-place to COMMON_CLK From: Alexander Sverdlin To: Nikita Shubin Cc: Russell King , Hartley Sweeten , Arnd Bergmann , Linus Walleij , Ard Biesheuvel , Mike Rapoport , Gregory Fong , Geert Uytterhoeven , YiFei Zhu , Uwe =?ISO-8859-1?Q?Kleine-K=F6nig?= , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Date: Sat, 12 Jun 2021 00:42:05 +0200 In-Reply-To: <20210525083340.27722-2-nikita.shubin@maquefel.me> References: <20210525083340.27722-1-nikita.shubin@maquefel.me> <20210525083340.27722-2-nikita.shubin@maquefel.me> User-Agent: Evolution 3.40.1 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210611_154411_144288_0C01790B X-CRM114-Status: GOOD ( 21.91 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGVsbG8gTmlraXRhIQoKT24gVHVlLCAyMDIxLTA1LTI1IGF0IDExOjMzICswMzAwLCBOaWtpdGEg U2h1YmluIHdyb3RlOgo+IENvbnZlcnRlZCBpbi1wbGFjZSB3aXRob3V0IG1vdmluZyBmaWxlIHRv IGRyaXZlcnMvY2xrLgo+IAo+IHRlc3RlZCBvbiB0czcyNTAgKEVQOTMwMikuCj4gCj4gT25seSBz ZXR0aW5nIHJhdGUgYW5kIGNoYW5nZSBwYXJlbnQgdGVzdGVkIGZvciwgYXMgdGhleQo+IGFyZSBt aXNzaW5nIG9uIHRzNzI1MDoKPiAtIHZpZGVvCj4gLSBJMlMKPiAtIEFEQy9LRVlQQUQKPiAtIFBX TQo+IAo+IE9ubHkgdmlkZW8gYW5kIEkyUyBjbG9jayBhcmUgaW50ZXJlc3RpbmcsIGFzIHRoZXkg YXJlCj4gR0FURSArIGRvdWJsZSBESVYgKyBNVVgsIGFsbCBvdGhlciBhcmUgcHJldHR5IG11Y2gK PiBjb21tb24gYnV0IHJlcXVpcmUgZXA5M3h4X3N5c2Nvbl9zd2xvY2tlZF93cml0ZSB0byBzZXQK PiByZWdpc3RlcnMuCgpUaGlzIGRvZXNudCBsb29rIGdvb2QgaW4gbXkgdGVzdDoKCgotLS0tLS0t LS0tLS1bIGN1dCBoZXJlIF0tLS0tLS0tLS0tLS0KV0FSTklORzogQ1BVOiAwIFBJRDogMSBhdCBk cml2ZXJzL2Nsay9jbGsuYzoxMDExIGNsa19jb3JlX2VuYWJsZSsweDljLzB4YmMKRW5hYmxpbmcg dW5wcmVwYXJlZCBlcDkzeHgtYWRjCkNQVTogMCBQSUQ6IDEgQ29tbTogc3dhcHBlciBOb3QgdGFp bnRlZCA1LjEzLjAtcmM1LS4uLiAjMQpIYXJkd2FyZSBuYW1lOiBDaXJydXMgTG9naWMgRURCOTMw MiBFdmFsdWF0aW9uIEJvYXJkCls8YzAwMGQ1YjA+XSAodW53aW5kX2JhY2t0cmFjZSkgZnJvbSBb PGMwMDBjNTkwPl0gKHNob3dfc3RhY2srMHgxMC8weDE4KQpbPGMwMDBjNTkwPl0gKHNob3dfc3Rh Y2spIGZyb20gWzxjMDNhNWYzOD5dIChkdW1wX3N0YWNrKzB4MjAvMHgyYykKWzxjMDNhNWYzOD5d IChkdW1wX3N0YWNrKSBmcm9tIFs8YzAzYTIwOTg+XSAoX193YXJuKzB4OTgvMHhjMCkKWzxjMDNh MjA5OD5dIChfX3dhcm4pIGZyb20gWzxjMDNhMjE1MD5dICh3YXJuX3Nsb3dwYXRoX2ZtdCsweDkw LzB4YzApCls8YzAzYTIxNTA+XSAod2Fybl9zbG93cGF0aF9mbXQpIGZyb20gWzxjMDFkODM1OD5d IChjbGtfY29yZV9lbmFibGUrMHg5Yy8weGJjKQpbPGMwMWQ4MzU4Pl0gKGNsa19jb3JlX2VuYWJs ZSkgZnJvbSBbPGMwMWQ4Njk4Pl0gKGNsa19jb3JlX2VuYWJsZV9sb2NrKzB4MTgvMHgzMCkKWzxj MDFkODY5OD5dIChjbGtfY29yZV9lbmFibGVfbG9jaykgZnJvbSBbPGMwMjY2NTYwPl0gKGVwOTN4 eF9hZGNfcHJvYmUrMHhlNC8weDFhMCkKWzxjMDI2NjU2MD5dIChlcDkzeHhfYWRjX3Byb2JlKSBm cm9tIFs8YzAyMTI2ZTA+XSAocGxhdGZvcm1fcHJvYmUrMHgzNC8weDgwKQpbPGMwMjEyNmUwPl0g KHBsYXRmb3JtX3Byb2JlKSBmcm9tIFs8YzAyMTBiZjg+XSAocmVhbGx5X3Byb2JlKzB4ZTgvMHgz OTQpCls8YzAyMTBiZjg+XSAocmVhbGx5X3Byb2JlKSBmcm9tIFs8YzAyMTE0NjQ+XSAoZGV2aWNl X2RyaXZlcl9hdHRhY2grMHg1Yy8weDY0KQpbPGMwMjExNDY0Pl0gKGRldmljZV9kcml2ZXJfYXR0 YWNoKSBmcm9tIFs8YzAyMTE0ZTg+XSAoX19kcml2ZXJfYXR0YWNoKzB4N2MvMHhlYykKWzxjMDIx MTRlOD5dIChfX2RyaXZlcl9hdHRhY2gpIGZyb20gWzxjMDIwZjFiND5dIChidXNfZm9yX2VhY2hf ZGV2KzB4NzgvMHhjNCkKWzxjMDIwZjFiND5dIChidXNfZm9yX2VhY2hfZGV2KSBmcm9tIFs8YzAy MTE1NzA+XSAoZHJpdmVyX2F0dGFjaCsweDE4LzB4MjQpCls8YzAyMTE1NzA+XSAoZHJpdmVyX2F0 dGFjaCkgZnJvbSBbPGMwMjBmYWI0Pl0gKGJ1c19hZGRfZHJpdmVyKzB4MTQwLzB4MWNjKQpbPGMw MjBmYWI0Pl0gKGJ1c19hZGRfZHJpdmVyKSBmcm9tIFs8YzAyMTFjNDQ+XSAoZHJpdmVyX3JlZ2lz dGVyKzB4NzQvMHgxMTQpCls8YzAyMTFjNDQ+XSAoZHJpdmVyX3JlZ2lzdGVyKSBmcm9tIFs8YzAy MTM0Zjg+XSAoX19wbGF0Zm9ybV9kcml2ZXJfcmVnaXN0ZXIrMHgxOC8weDI0KQpbPGMwMjEzNGY4 Pl0gKF9fcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyKSBmcm9tIFs8YzA0NzAxNDg+XSAoZXA5M3h4 X2FkY19kcml2ZXJfaW5pdCsweDEwLzB4MWMpCls8YzA0NzAxNDg+XSAoZXA5M3h4X2FkY19kcml2 ZXJfaW5pdCkgZnJvbSBbPGMwNDVjZTg4Pl0gKGRvX29uZV9pbml0Y2FsbCsweDdjLzB4MWE0KQpb PGMwNDVjZTg4Pl0gKGRvX29uZV9pbml0Y2FsbCkgZnJvbSBbPGMwNDVkMTg0Pl0gKGtlcm5lbF9p bml0X2ZyZWVhYmxlKzB4MTdjLzB4MWZjKQpbPGMwNDVkMTg0Pl0gKGtlcm5lbF9pbml0X2ZyZWVh YmxlKSBmcm9tIFs8YzAzYTY0ZDA+XSAoa2VybmVsX2luaXQrMHg4LzB4ZjgpCls8YzAzYTY0ZDA+ XSAoa2VybmVsX2luaXQpIGZyb20gWzxjMDAwODJkOD5dIChyZXRfZnJvbV9mb3JrKzB4MTQvMHgz YykKRXhjZXB0aW9uIHN0YWNrKDB4YzEwMzFmYjAgdG8gMHhjMTAzMWZmOCkKMWZhMDogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAg MDAwMDAwMDAKMWZjMDogMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAw MDAgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAKMWZlMDogMDAwMDAwMDAgMDAwMDAwMDAgMDAw MDAwMDAgMDAwMDAwMDAgMDAwMDAwMTMgMDAwMDAwMDAKLS0tWyBlbmQgdHJhY2UgODRjOWFiZWI5 ZGM2NzkwOSBdLS0tCmVwOTN4eC1hZGMgZXA5M3h4LWFkYzogQ2Fubm90IGVuYWJsZSBjbG9jawpl cDkzeHgtYWRjOiBwcm9iZSBvZiBlcDkzeHgtYWRjIGZhaWxlZCB3aXRoIGVycm9yIC0xMDgKLS0t LS0tLS0tLS0tWyBjdXQgaGVyZSBdLS0tLS0tLS0tLS0tCldBUk5JTkc6IENQVTogMCBQSUQ6IDEg YXQgZHJpdmVycy9jbGsvY2xrLmM6MTAxMSBjbGtfY29yZV9lbmFibGUrMHg5Yy8weGJjCkVuYWJs aW5nIHVucHJlcGFyZWQgZXA5M3h4LXNwaS4wCkNQVTogMCBQSUQ6IDEgQ29tbTogc3dhcHBlciBU YWludGVkOiBHICAgICAgICBXICAgICAgICAgNS4xMy4wLXJjNS0uLi4gIzEKSGFyZHdhcmUgbmFt ZTogQ2lycnVzIExvZ2ljIEVEQjkzMDIgRXZhbHVhdGlvbiBCb2FyZApbPGMwMDBkNWIwPl0gKHVu d2luZF9iYWNrdHJhY2UpIGZyb20gWzxjMDAwYzU5MD5dIChzaG93X3N0YWNrKzB4MTAvMHgxOCkK WzxjMDAwYzU5MD5dIChzaG93X3N0YWNrKSBmcm9tIFs8YzAzYTVmMzg+XSAoZHVtcF9zdGFjaysw eDIwLzB4MmMpCls8YzAzYTVmMzg+XSAoZHVtcF9zdGFjaykgZnJvbSBbPGMwM2EyMDk4Pl0gKF9f d2FybisweDk4LzB4YzApCls8YzAzYTIwOTg+XSAoX193YXJuKSBmcm9tIFs8YzAzYTIxNTA+XSAo d2Fybl9zbG93cGF0aF9mbXQrMHg5MC8weGMwKQpbPGMwM2EyMTUwPl0gKHdhcm5fc2xvd3BhdGhf Zm10KSBmcm9tIFs8YzAxZDgzNTg+XSAoY2xrX2NvcmVfZW5hYmxlKzB4OWMvMHhiYykKWzxjMDFk ODM1OD5dIChjbGtfY29yZV9lbmFibGUpIGZyb20gWzxjMDFkODY5OD5dIChjbGtfY29yZV9lbmFi bGVfbG9jaysweDE4LzB4MzApCls8YzAxZDg2OTg+XSAoY2xrX2NvcmVfZW5hYmxlX2xvY2spIGZy b20gWzxjMDIzZWViND5dIChlcDkzeHhfc3BpX3ByZXBhcmVfaGFyZHdhcmUrMHgxMC8weDMwKQpb PGMwMjNlZWI0Pl0gKGVwOTN4eF9zcGlfcHJlcGFyZV9oYXJkd2FyZSkgZnJvbSBbPGMwMjNjMGY4 Pl0gKF9fc3BpX3B1bXBfbWVzc2FnZXMrMHgxMjQvMHg2MjApCls8YzAyM2MwZjg+XSAoX19zcGlf cHVtcF9tZXNzYWdlcykgZnJvbSBbPGMwMjNlNWI4Pl0gKF9fc3BpX3N5bmMrMHgyODAvMHgyYzAp Cls8YzAyM2U1Yjg+XSAoX19zcGlfc3luYykgZnJvbSBbPGMwMjNlNjFjPl0gKHNwaV9zeW5jKzB4 MjQvMHg0MCkKWzxjMDIzZTYxYz5dIChzcGlfc3luYykgZnJvbSBbPGMwMjFmOGE0Pl0gKHNwaV9z eW5jX3RyYW5zZmVyLmNvbnN0cHJvcC4wKzB4NjQvMHg4YykKWzxjMDIxZjhhND5dIChzcGlfc3lu Y190cmFuc2Zlci5jb25zdHByb3AuMCkgZnJvbSBbPGMwMjFmOTE0Pl0gKHJlZ21hcF9zcGlfd3Jp dGUrMHg0OC8weDcwKQpbPGMwMjFmOTE0Pl0gKHJlZ21hcF9zcGlfd3JpdGUpIGZyb20gWzxjMDIx YzMyMD5dIChfcmVnbWFwX3Jhd193cml0ZV9pbXBsKzB4NjQwLzB4NzQwKQpbPGMwMjFjMzIwPl0g KF9yZWdtYXBfcmF3X3dyaXRlX2ltcGwpIGZyb20gWzxjMDIxYzQ5Yz5dIChfcmVnbWFwX2J1c19y YXdfd3JpdGUrMHg3Yy8weGFjKQpbPGMwMjFjNDljPl0gKF9yZWdtYXBfYnVzX3Jhd193cml0ZSkg ZnJvbSBbPGMwMjFiYmQ0Pl0gKF9yZWdtYXBfdXBkYXRlX2JpdHMrMHhlYy8weGY4KQpbPGMwMjFi YmQ0Pl0gKF9yZWdtYXBfdXBkYXRlX2JpdHMpIGZyb20gWzxjMDIxZGFjND5dIChyZWdtYXBfdXBk YXRlX2JpdHNfYmFzZSsweDUwLzB4N2MpCls8YzAyMWRhYzQ+XSAocmVnbWFwX3VwZGF0ZV9iaXRz X2Jhc2UpIGZyb20gWzxjMDI5MGVhOD5dIChjczQyNzFfY29tcG9uZW50X3Byb2JlKzB4NzQvMHgx NDgpCls8YzAyOTBlYTg+XSAoY3M0MjcxX2NvbXBvbmVudF9wcm9iZSkgZnJvbSBbPGMwMjg4OWI0 Pl0gKHNuZF9zb2NfY29tcG9uZW50X3Byb2JlKzB4MjQvMHg3NCkKWzxjMDI4ODliND5dIChzbmRf c29jX2NvbXBvbmVudF9wcm9iZSkgZnJvbSBbPGMwMjdlOWQwPl0gKHNvY19wcm9iZV9jb21wb25l bnQrMHgxMWMvMHgyOWMpCls8YzAyN2U5ZDA+XSAoc29jX3Byb2JlX2NvbXBvbmVudCkgZnJvbSBb PGMwMjdlZjE0Pl0gKHNuZF9zb2NfYmluZF9jYXJkKzB4M2M0LzB4OGE4KQpbPGMwMjdlZjE0Pl0g KHNuZF9zb2NfYmluZF9jYXJkKSBmcm9tIFs8YzAyOTE3OTg+XSAoZWRiOTN4eF9wcm9iZSsweDM0 LzB4NWMpCls8YzAyOTE3OTg+XSAoZWRiOTN4eF9wcm9iZSkgZnJvbSBbPGMwMjEyNmUwPl0gKHBs YXRmb3JtX3Byb2JlKzB4MzQvMHg4MCkKWzxjMDIxMjZlMD5dIChwbGF0Zm9ybV9wcm9iZSkgZnJv bSBbPGMwMjEwYmY4Pl0gKHJlYWxseV9wcm9iZSsweGU4LzB4Mzk0KQpbPGMwMjEwYmY4Pl0gKHJl YWxseV9wcm9iZSkgZnJvbSBbPGMwMjExNDY0Pl0gKGRldmljZV9kcml2ZXJfYXR0YWNoKzB4NWMv MHg2NCkKWzxjMDIxMTQ2ND5dIChkZXZpY2VfZHJpdmVyX2F0dGFjaCkgZnJvbSBbPGMwMjExNGU4 Pl0gKF9fZHJpdmVyX2F0dGFjaCsweDdjLzB4ZWMpCls8YzAyMTE0ZTg+XSAoX19kcml2ZXJfYXR0 YWNoKSBmcm9tIFs8YzAyMGYxYjQ+XSAoYnVzX2Zvcl9lYWNoX2RldisweDc4LzB4YzQpCls8YzAy MGYxYjQ+XSAoYnVzX2Zvcl9lYWNoX2RldikgZnJvbSBbPGMwMjExNTcwPl0gKGRyaXZlcl9hdHRh Y2grMHgxOC8weDI0KQpbPGMwMjExNTcwPl0gKGRyaXZlcl9hdHRhY2gpIGZyb20gWzxjMDIwZmFi ND5dIChidXNfYWRkX2RyaXZlcisweDE0MC8weDFjYykKWzxjMDIwZmFiND5dIChidXNfYWRkX2Ry aXZlcikgZnJvbSBbPGMwMjExYzQ0Pl0gKGRyaXZlcl9yZWdpc3RlcisweDc0LzB4MTE0KQpbPGMw MjExYzQ0Pl0gKGRyaXZlcl9yZWdpc3RlcikgZnJvbSBbPGMwMjEzNGY4Pl0gKF9fcGxhdGZvcm1f ZHJpdmVyX3JlZ2lzdGVyKzB4MTgvMHgyNCkKWzxjMDIxMzRmOD5dIChfX3BsYXRmb3JtX2RyaXZl cl9yZWdpc3RlcikgZnJvbSBbPGMwNDcwODRjPl0gKGVkYjkzeHhfZHJpdmVyX2luaXQrMHgxMC8w eDFjKQpbPGMwNDcwODRjPl0gKGVkYjkzeHhfZHJpdmVyX2luaXQpIGZyb20gWzxjMDQ1Y2U4OD5d IChkb19vbmVfaW5pdGNhbGwrMHg3Yy8weDFhNCkKWzxjMDQ1Y2U4OD5dIChkb19vbmVfaW5pdGNh bGwpIGZyb20gWzxjMDQ1ZDE4ND5dIChrZXJuZWxfaW5pdF9mcmVlYWJsZSsweDE3Yy8weDFmYykK WzxjMDQ1ZDE4ND5dIChrZXJuZWxfaW5pdF9mcmVlYWJsZSkgZnJvbSBbPGMwM2E2NGQwPl0gKGtl cm5lbF9pbml0KzB4OC8weGY4KQpbPGMwM2E2NGQwPl0gKGtlcm5lbF9pbml0KSBmcm9tIFs8YzAw MDgyZDg+XSAocmV0X2Zyb21fZm9yaysweDE0LzB4M2MpCkV4Y2VwdGlvbiBzdGFjaygweGMxMDMx ZmIwIHRvIDB4YzEwMzFmZjgpCjFmYTA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAwCjFmYzA6IDAwMDAwMDAwIDAw MDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAw MDAwCjFmZTA6IDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDEzIDAw MDAwMDAwCi0tLVsgZW5kIHRyYWNlIDg0YzlhYmViOWRjNjc5MGEgXS0tLQpzcGlfbWFzdGVyIHNw aTA6IGZhaWxlZCB0byBwcmVwYXJlIHRyYW5zZmVyIGhhcmR3YXJlOiAtMTA4Ci0tLS0tLS0tLS0t LVsgY3V0IGhlcmUgXS0tLS0tLS0tLS0tLQpXQVJOSU5HOiBDUFU6IDAgUElEOiAzNiBhdCBkcml2 ZXJzL2Nsay9jbGsuYzo5NTIgY2xrX2NvcmVfZGlzYWJsZSsweGJjLzB4ZDgKZXA5M3h4LXNwaS4w IGFscmVhZHkgZGlzYWJsZWQKQ1BVOiAwIFBJRDogMzYgQ29tbTogc3BpMCBUYWludGVkOiBHICAg ICAgICBXICAgICAgICAgNS4xMy4wLXJjNS0uLi4gIzEKSGFyZHdhcmUgbmFtZTogQ2lycnVzIExv Z2ljIEVEQjkzMDIgRXZhbHVhdGlvbiBCb2FyZApbPGMwMDBkNWIwPl0gKHVud2luZF9iYWNrdHJh Y2UpIGZyb20gWzxjMDAwYzU5MD5dIChzaG93X3N0YWNrKzB4MTAvMHgxOCkKWzxjMDAwYzU5MD5d IChzaG93X3N0YWNrKSBmcm9tIFs8YzAzYTVmMzg+XSAoZHVtcF9zdGFjaysweDIwLzB4MmMpCls8 YzAzYTVmMzg+XSAoZHVtcF9zdGFjaykgZnJvbSBbPGMwM2EyMDk4Pl0gKF9fd2FybisweDk4LzB4 YzApCls8YzAzYTIwOTg+XSAoX193YXJuKSBmcm9tIFs8YzAzYTIxNTA+XSAod2Fybl9zbG93cGF0 aF9mbXQrMHg5MC8weGMwKQpbPGMwM2EyMTUwPl0gKHdhcm5fc2xvd3BhdGhfZm10KSBmcm9tIFs8 YzAxZDgyYTA+XSAoY2xrX2NvcmVfZGlzYWJsZSsweGJjLzB4ZDgpCls8YzAxZDgyYTA+XSAoY2xr X2NvcmVfZGlzYWJsZSkgZnJvbSBbPGMwMWQ4Njc0Pl0gKGNsa19jb3JlX2Rpc2FibGVfbG9jaysw eDE4LzB4MjQpCls8YzAxZDg2NzQ+XSAoY2xrX2NvcmVfZGlzYWJsZV9sb2NrKSBmcm9tIFs8YzAy M2VlOTg+XSAoZXA5M3h4X3NwaV91bnByZXBhcmVfaGFyZHdhcmUrMHgyMC8weDJjKQpbPGMwMjNl ZTk4Pl0gKGVwOTN4eF9zcGlfdW5wcmVwYXJlX2hhcmR3YXJlKSBmcm9tIFs8YzAyM2MzNWM+XSAo X19zcGlfcHVtcF9tZXNzYWdlcysweDM4OC8weDYyMCkKWzxjMDIzYzM1Yz5dIChfX3NwaV9wdW1w X21lc3NhZ2VzKSBmcm9tIFs8YzAwMzkwNjg+XSAoa3RocmVhZF93b3JrZXJfZm4rMHhmYy8weDFh NCkKWzxjMDAzOTA2OD5dIChrdGhyZWFkX3dvcmtlcl9mbikgZnJvbSBbPGMwMDM4OTY0Pl0gKGt0 aHJlYWQrMHgxMDQvMHgxNTQpCls8YzAwMzg5NjQ+XSAoa3RocmVhZCkgZnJvbSBbPGMwMDA4MmQ4 Pl0gKHJldF9mcm9tX2ZvcmsrMHgxNC8weDNjKQpFeGNlcHRpb24gc3RhY2soMHhjMTFkMWZiMCB0 byAweGMxMWQxZmY4KQoxZmEwOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw MDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMAoxZmMwOiAwMDAwMDAwMCAwMDAwMDAw MCAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMAox ZmUwOiAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAxMyAwMDAwMDAw MAotLS1bIGVuZCB0cmFjZSA4NGM5YWJlYjlkYzY3OTBiIF0tLS0KCk5vdyBJJ20gYWJsZSB0byB0 ZXN0IHdpdGhvdXQgMyB3ZWVrcyBkZWxheSwgc28geW91IGNhbiBzZW5kIG1lCm5leHQgdmVyc2lv bnMgYmVmb3JlIHB1Ymxpc2hpbmcuCgo+IC0tLQo+IMKgYXJjaC9hcm0vS2NvbmZpZ8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB8wqDCoCAyICstCj4gwqBhcmNoL2FybS9tYWNoLWVwOTN4eC9jbG9j ay5jIHwgOTg5ICsrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCj4gwqBhcmNoL2Fy bS9tYWNoLWVwOTN4eC9jb3JlLmPCoCB8wqDCoCAyICstCj4gwqBhcmNoL2FybS9tYWNoLWVwOTN4 eC9zb2MuaMKgwqAgfMKgIDQyICstCj4gwqA0IGZpbGVzIGNoYW5nZWQsIDU5MyBpbnNlcnRpb25z KCspLCA0NDIgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2FyY2gvYXJtL0tjb25maWcg Yi9hcmNoL2FybS9LY29uZmlnCj4gaW5kZXggMmZhZTE0ODU3ZGNmLi40YTFhODk1N2FhMWIgMTAw NjQ0Cj4gLS0tIGEvYXJjaC9hcm0vS2NvbmZpZwo+ICsrKyBiL2FyY2gvYXJtL0tjb25maWcKPiBA QCAtMzU0LDcgKzM1NCw3IEBAIGNvbmZpZyBBUkNIX0VQOTNYWAo+IMKgwqDCoMKgwqDCoMKgwqBz ZWxlY3QgQ0xLU1JDX01NSU8KPiDCoMKgwqDCoMKgwqDCoMKgc2VsZWN0IENQVV9BUk05MjBUCj4g wqDCoMKgwqDCoMKgwqDCoHNlbGVjdCBHUElPTElCCj4gLcKgwqDCoMKgwqDCoMKgc2VsZWN0IEhB VkVfTEVHQUNZX0NMSwo+ICvCoMKgwqDCoMKgwqDCoHNlbGVjdCBDT01NT05fQ0xLCj4gwqDCoMKg wqDCoMKgwqDCoGhlbHAKPiDCoMKgwqDCoMKgwqDCoMKgwqAgVGhpcyBlbmFibGVzIHN1cHBvcnQg Zm9yIHRoZSBDaXJydXMgRVA5M3h4IHNlcmllcyBvZiBDUFVzLgo+IMKgCj4gZGlmZiAtLWdpdCBh L2FyY2gvYXJtL21hY2gtZXA5M3h4L2Nsb2NrLmMgYi9hcmNoL2FybS9tYWNoLWVwOTN4eC9jbG9j ay5jCj4gaW5kZXggMjgxMGViNWIyYWNhLi5mNzI4ZWI5NmEyODggMTAwNjQ0Cj4gLS0tIGEvYXJj aC9hcm0vbWFjaC1lcDkzeHgvY2xvY2suYwo+ICsrKyBiL2FyY2gvYXJtL21hY2gtZXA5M3h4L2Ns b2NrLmMKPiBAQCAtMTYsNiArMTYsNyBAQAo+IMKgI2luY2x1ZGUgPGxpbnV4L2lvLmg+Cj4gwqAj aW5jbHVkZSA8bGludXgvc3BpbmxvY2suaD4KPiDCoCNpbmNsdWRlIDxsaW51eC9jbGtkZXYuaD4K PiArI2luY2x1ZGUgPGxpbnV4L2Nsay1wcm92aWRlci5oPgo+IMKgI2luY2x1ZGUgPGxpbnV4L3Nv Yy9jaXJydXMvZXA5M3h4Lmg+Cj4gwqAKPiDCoCNpbmNsdWRlICJoYXJkd2FyZS5oIgo+IEBAIC0y NCwzNDggKzI1LDE5NCBAQAo+IMKgCj4gwqAjaW5jbHVkZSAic29jLmgiCj4gwqAKPiAtc3RydWN0 IGNsayB7Cj4gLcKgwqDCoMKgwqDCoMKgc3RydWN0IGNsa8KgwqDCoMKgwqDCoCpwYXJlbnQ7Cj4g LcKgwqDCoMKgwqDCoMKgdW5zaWduZWQgbG9uZ8KgwqDCoHJhdGU7Cj4gLcKgwqDCoMKgwqDCoMKg aW50wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1c2VyczsKPiAtwqDCoMKgwqDCoMKgwqBpbnTC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN3X2xvY2tlZDsKPiAtwqDCoMKgwqDCoMKgwqB2b2lk IF9faW9tZW3CoMKgwqDCoCplbmFibGVfcmVnOwo+IC3CoMKgwqDCoMKgwqDCoHUzMsKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgZW5hYmxlX21hc2s7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHVuc2ln bmVkIGxvbmfCoMKgwqAoKmdldF9yYXRlKShzdHJ1Y3QgY2xrICpjbGspOwo+IC3CoMKgwqDCoMKg wqDCoGludMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKCpzZXRfcmF0ZSkoc3RydWN0IGNsayAq Y2xrLCB1bnNpZ25lZCBsb25nIHJhdGUpOwo+IC19Owo+IC0KPiAtCj4gLXN0YXRpYyB1bnNpZ25l ZCBsb25nIGdldF91YXJ0X3JhdGUoc3RydWN0IGNsayAqY2xrKTsKPiAtCj4gLXN0YXRpYyBpbnQg c2V0X2tleXRjaGNsa19yYXRlKHN0cnVjdCBjbGsgKmNsaywgdW5zaWduZWQgbG9uZyByYXRlKTsK PiAtc3RhdGljIGludCBzZXRfZGl2X3JhdGUoc3RydWN0IGNsayAqY2xrLCB1bnNpZ25lZCBsb25n IHJhdGUpOwo+IC1zdGF0aWMgaW50IHNldF9pMnNfc2Nsa19yYXRlKHN0cnVjdCBjbGsgKmNsaywg dW5zaWduZWQgbG9uZyByYXRlKTsKPiAtc3RhdGljIGludCBzZXRfaTJzX2xyY2xrX3JhdGUoc3Ry dWN0IGNsayAqY2xrLCB1bnNpZ25lZCBsb25nIHJhdGUpOwo+ICtzdGF0aWMgREVGSU5FX1NQSU5M T0NLKGNsa19sb2NrKTsKPiDCoAo+IC1zdGF0aWMgc3RydWN0IGNsayBjbGtfeHRhbGkgPSB7Cj4g LcKgwqDCoMKgwqDCoMKgLnJhdGXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgPSBFUDkzWFhfRVhUX0NM S19SQVRFLAo+IC19Owo+IC1zdGF0aWMgc3RydWN0IGNsayBjbGtfdWFydDEgPSB7Cj4gLcKgwqDC oMKgwqDCoMKgLnBhcmVudMKgwqDCoMKgwqDCoMKgwqDCoD0gJmNsa194dGFsaSwKPiAtwqDCoMKg wqDCoMKgwqAuc3dfbG9ja2VkwqDCoMKgwqDCoMKgPSAxLAo+IC3CoMKgwqDCoMKgwqDCoC5lbmFi bGVfcmVnwqDCoMKgwqDCoD0gRVA5M1hYX1NZU0NPTl9ERVZDRkcsCj4gLcKgwqDCoMKgwqDCoMKg LmVuYWJsZV9tYXNrwqDCoMKgwqA9IEVQOTNYWF9TWVNDT05fREVWQ0ZHX1UxRU4sCj4gLcKgwqDC oMKgwqDCoMKgLmdldF9yYXRlwqDCoMKgwqDCoMKgwqA9IGdldF91YXJ0X3JhdGUsCj4gLX07Cj4g LXN0YXRpYyBzdHJ1Y3QgY2xrIGNsa191YXJ0MiA9IHsKPiAtwqDCoMKgwqDCoMKgwqAucGFyZW50 wqDCoMKgwqDCoMKgwqDCoMKgPSAmY2xrX3h0YWxpLAo+IC3CoMKgwqDCoMKgwqDCoC5zd19sb2Nr ZWTCoMKgwqDCoMKgwqA9IDEsCj4gLcKgwqDCoMKgwqDCoMKgLmVuYWJsZV9yZWfCoMKgwqDCoMKg PSBFUDkzWFhfU1lTQ09OX0RFVkNGRywKPiAtwqDCoMKgwqDCoMKgwqAuZW5hYmxlX21hc2vCoMKg wqDCoD0gRVA5M1hYX1NZU0NPTl9ERVZDRkdfVTJFTiwKPiAtwqDCoMKgwqDCoMKgwqAuZ2V0X3Jh dGXCoMKgwqDCoMKgwqDCoD0gZ2V0X3VhcnRfcmF0ZSwKPiAtfTsKPiAtc3RhdGljIHN0cnVjdCBj bGsgY2xrX3VhcnQzID0gewo+IC3CoMKgwqDCoMKgwqDCoC5wYXJlbnTCoMKgwqDCoMKgwqDCoMKg wqA9ICZjbGtfeHRhbGksCj4gLcKgwqDCoMKgwqDCoMKgLnN3X2xvY2tlZMKgwqDCoMKgwqDCoD0g MSwKPiAtwqDCoMKgwqDCoMKgwqAuZW5hYmxlX3JlZ8KgwqDCoMKgwqA9IEVQOTNYWF9TWVNDT05f REVWQ0ZHLAo+IC3CoMKgwqDCoMKgwqDCoC5lbmFibGVfbWFza8KgwqDCoMKgPSBFUDkzWFhfU1lT Q09OX0RFVkNGR19VM0VOLAo+IC3CoMKgwqDCoMKgwqDCoC5nZXRfcmF0ZcKgwqDCoMKgwqDCoMKg PSBnZXRfdWFydF9yYXRlLAo+IC19Owo+IC1zdGF0aWMgc3RydWN0IGNsayBjbGtfcGxsMSA9IHsK PiAtwqDCoMKgwqDCoMKgwqAucGFyZW50wqDCoMKgwqDCoMKgwqDCoMKgPSAmY2xrX3h0YWxpLAo+ IC19Owo+IC1zdGF0aWMgc3RydWN0IGNsayBjbGtfZiA9IHsKPiAtwqDCoMKgwqDCoMKgwqAucGFy ZW50wqDCoMKgwqDCoMKgwqDCoMKgPSAmY2xrX3BsbDEsCj4gLX07Cj4gLXN0YXRpYyBzdHJ1Y3Qg Y2xrIGNsa19oID0gewo+IC3CoMKgwqDCoMKgwqDCoC5wYXJlbnTCoMKgwqDCoMKgwqDCoMKgwqA9 ICZjbGtfcGxsMSwKPiAtfTsKPiAtc3RhdGljIHN0cnVjdCBjbGsgY2xrX3AgPSB7Cj4gLcKgwqDC oMKgwqDCoMKgLnBhcmVudMKgwqDCoMKgwqDCoMKgwqDCoD0gJmNsa19wbGwxLAo+IC19Owo+IC1z dGF0aWMgc3RydWN0IGNsayBjbGtfcGxsMiA9IHsKPiAtwqDCoMKgwqDCoMKgwqAucGFyZW50wqDC oMKgwqDCoMKgwqDCoMKgPSAmY2xrX3h0YWxpLAo+IC19Owo+IC1zdGF0aWMgc3RydWN0IGNsayBj bGtfdXNiX2hvc3QgPSB7Cj4gLcKgwqDCoMKgwqDCoMKgLnBhcmVudMKgwqDCoMKgwqDCoMKgwqDC oD0gJmNsa19wbGwyLAo+IC3CoMKgwqDCoMKgwqDCoC5lbmFibGVfcmVnwqDCoMKgwqDCoD0gRVA5 M1hYX1NZU0NPTl9QV1JDTlQsCj4gLcKgwqDCoMKgwqDCoMKgLmVuYWJsZV9tYXNrwqDCoMKgwqA9 IEVQOTNYWF9TWVNDT05fUFdSQ05UX1VTSF9FTiwKPiAtfTsKPiAtc3RhdGljIHN0cnVjdCBjbGsg Y2xrX2tleXBhZCA9IHsKPiAtwqDCoMKgwqDCoMKgwqAucGFyZW50wqDCoMKgwqDCoMKgwqDCoMKg PSAmY2xrX3h0YWxpLAo+IC3CoMKgwqDCoMKgwqDCoC5zd19sb2NrZWTCoMKgwqDCoMKgwqA9IDEs Cj4gLcKgwqDCoMKgwqDCoMKgLmVuYWJsZV9yZWfCoMKgwqDCoMKgPSBFUDkzWFhfU1lTQ09OX0tF WVRDSENMS0RJViwKPiAtwqDCoMKgwqDCoMKgwqAuZW5hYmxlX21hc2vCoMKgwqDCoD0gRVA5M1hY X1NZU0NPTl9LRVlUQ0hDTEtESVZfS0VOLAo+IC3CoMKgwqDCoMKgwqDCoC5zZXRfcmF0ZcKgwqDC oMKgwqDCoMKgPSBzZXRfa2V5dGNoY2xrX3JhdGUsCj4gLX07Cj4gLXN0YXRpYyBzdHJ1Y3QgY2xr IGNsa19hZGMgPSB7Cj4gLcKgwqDCoMKgwqDCoMKgLnBhcmVudMKgwqDCoMKgwqDCoMKgwqDCoD0g JmNsa194dGFsaSwKPiAtwqDCoMKgwqDCoMKgwqAuc3dfbG9ja2VkwqDCoMKgwqDCoMKgPSAxLAo+ IC3CoMKgwqDCoMKgwqDCoC5lbmFibGVfcmVnwqDCoMKgwqDCoD0gRVA5M1hYX1NZU0NPTl9LRVlU Q0hDTEtESVYsCj4gLcKgwqDCoMKgwqDCoMKgLmVuYWJsZV9tYXNrwqDCoMKgwqA9IEVQOTNYWF9T WVNDT05fS0VZVENIQ0xLRElWX1RTRU4sCj4gLcKgwqDCoMKgwqDCoMKgLnNldF9yYXRlwqDCoMKg wqDCoMKgwqA9IHNldF9rZXl0Y2hjbGtfcmF0ZSwKPiAtfTsKPiAtc3RhdGljIHN0cnVjdCBjbGsg Y2xrX3NwaSA9IHsKPiAtwqDCoMKgwqDCoMKgwqAucGFyZW50wqDCoMKgwqDCoMKgwqDCoMKgPSAm Y2xrX3h0YWxpLAo+IC3CoMKgwqDCoMKgwqDCoC5yYXRlwqDCoMKgwqDCoMKgwqDCoMKgwqDCoD0g RVA5M1hYX0VYVF9DTEtfUkFURSwKPiAtfTsKPiAtc3RhdGljIHN0cnVjdCBjbGsgY2xrX3B3bSA9 IHsKPiAtwqDCoMKgwqDCoMKgwqAucGFyZW50wqDCoMKgwqDCoMKgwqDCoMKgPSAmY2xrX3h0YWxp LAo+IC3CoMKgwqDCoMKgwqDCoC5yYXRlwqDCoMKgwqDCoMKgwqDCoMKgwqDCoD0gRVA5M1hYX0VY VF9DTEtfUkFURSwKPiAtfTsKPiArc3RhdGljIGNoYXIgZmNsa19kaXZpc29yc1tdID0geyAxLCAy LCA0LCA4LCAxNiwgMSwgMSwgMSB9Owo+ICtzdGF0aWMgY2hhciBoY2xrX2Rpdmlzb3JzW10gPSB7 IDEsIDIsIDQsIDUsIDYsIDgsIDE2LCAzMiB9Owo+ICtzdGF0aWMgY2hhciBwY2xrX2Rpdmlzb3Jz W10gPSB7IDEsIDIsIDQsIDggfTsKPiDCoAo+IC1zdGF0aWMgc3RydWN0IGNsayBjbGtfdmlkZW8g PSB7Cj4gLcKgwqDCoMKgwqDCoMKgLnN3X2xvY2tlZMKgwqDCoMKgwqDCoD0gMSwKPiAtwqDCoMKg wqDCoMKgwqAuZW5hYmxlX3JlZ8KgwqDCoMKgID0gRVA5M1hYX1NZU0NPTl9WSURDTEtESVYsCj4g LcKgwqDCoMKgwqDCoMKgLmVuYWJsZV9tYXNrwqDCoMKgID0gRVA5M1hYX1NZU0NPTl9DTEtESVZf RU5BQkxFLAo+IC3CoMKgwqDCoMKgwqDCoC5zZXRfcmF0ZcKgwqDCoMKgwqDCoMKgPSBzZXRfZGl2 X3JhdGUsCj4gLX07Cj4gK3N0YXRpYyBjaGFyIGFkY19kaXZpc29yc1tdID0geyAxNiwgNCB9Owo+ ICtzdGF0aWMgY2hhciBzY2xrX2Rpdmlzb3JzW10gPSB7IDIsIDQgfTsKPiArc3RhdGljIGNoYXIg bHJjbGtfZGl2aXNvcnNbXSA9IHsgMzIsIDY0LCAxMjggfTsKPiDCoAo+IC1zdGF0aWMgc3RydWN0 IGNsayBjbGtfaTJzX21jbGsgPSB7Cj4gLcKgwqDCoMKgwqDCoMKgLnN3X2xvY2tlZMKgwqDCoMKg wqDCoD0gMSwKPiAtwqDCoMKgwqDCoMKgwqAuZW5hYmxlX3JlZ8KgwqDCoMKgwqA9IEVQOTNYWF9T WVNDT05fSTJTQ0xLRElWLAo+IC3CoMKgwqDCoMKgwqDCoC5lbmFibGVfbWFza8KgwqDCoMKgPSBF UDkzWFhfU1lTQ09OX0NMS0RJVl9FTkFCTEUsCj4gLcKgwqDCoMKgwqDCoMKgLnNldF9yYXRlwqDC oMKgwqDCoMKgwqA9IHNldF9kaXZfcmF0ZSwKPiArc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBt dXhfcGFyZW50c1tdID0gewo+ICvCoMKgwqDCoMKgwqDCoCJ4dGFsaSIsCj4gK8KgwqDCoMKgwqDC oMKgInBsbDEiLAo+ICvCoMKgwqDCoMKgwqDCoCJwbGwyIgo+IMKgfTsKPiDCoAo+IC1zdGF0aWMg c3RydWN0IGNsayBjbGtfaTJzX3NjbGsgPSB7Cj4gLcKgwqDCoMKgwqDCoMKgLnN3X2xvY2tlZMKg wqDCoMKgwqDCoD0gMSwKPiAtwqDCoMKgwqDCoMKgwqAucGFyZW50wqDCoMKgwqDCoMKgwqDCoMKg PSAmY2xrX2kyc19tY2xrLAo+IC3CoMKgwqDCoMKgwqDCoC5lbmFibGVfcmVnwqDCoMKgwqDCoD0g RVA5M1hYX1NZU0NPTl9JMlNDTEtESVYsCj4gLcKgwqDCoMKgwqDCoMKgLmVuYWJsZV9tYXNrwqDC oMKgwqA9IEVQOTNYWF9TWVNDT05fSTJTQ0xLRElWX1NFTkEsCj4gLcKgwqDCoMKgwqDCoMKgLnNl dF9yYXRlwqDCoMKgwqDCoMKgwqA9IHNldF9pMnNfc2Nsa19yYXRlLAo+IC19Owo+ICsvKgo+ICsg KiBQTEwgcmF0ZSA9IDE0Ljc0NTYgTUh6ICogKFgxRkJEICsgMSkgKiAoWDJGQkQgKyAxKSAvIChY MklQRCArIDEpIC8gMl5QUwo+ICsgKi8KPiArc3RhdGljIHVuc2lnbmVkIGxvbmcgY2FsY19wbGxf cmF0ZSh1bnNpZ25lZCBsb25nIGxvbmcgcmF0ZSwgdTMyIGNvbmZpZ193b3JkKQo+ICt7Cj4gK8Kg wqDCoMKgwqDCoMKgaW50IGk7Cj4gwqAKPiAtc3RhdGljIHN0cnVjdCBjbGsgY2xrX2kyc19scmNs ayA9IHsKPiAtwqDCoMKgwqDCoMKgwqAuc3dfbG9ja2VkwqDCoMKgwqDCoMKgPSAxLAo+IC3CoMKg wqDCoMKgwqDCoC5wYXJlbnTCoMKgwqDCoMKgwqDCoMKgwqA9ICZjbGtfaTJzX3NjbGssCj4gLcKg wqDCoMKgwqDCoMKgLmVuYWJsZV9yZWfCoMKgwqDCoMKgPSBFUDkzWFhfU1lTQ09OX0kyU0NMS0RJ ViwKPiAtwqDCoMKgwqDCoMKgwqAuZW5hYmxlX21hc2vCoMKgwqDCoD0gRVA5M1hYX1NZU0NPTl9J MlNDTEtESVZfU0VOQSwKPiAtwqDCoMKgwqDCoMKgwqAuc2V0X3JhdGXCoMKgwqDCoMKgwqDCoD0g c2V0X2kyc19scmNsa19yYXRlLAo+IC19Owo+ICvCoMKgwqDCoMKgwqDCoHJhdGUgKj0gKChjb25m aWdfd29yZCA+PiAxMSkgJiAweDFmKSArIDE7wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg LyogWDFGQkQgKi8KPiArwqDCoMKgwqDCoMKgwqByYXRlICo9ICgoY29uZmlnX3dvcmQgPj4gNSkg JiAweDNmKSArIDE7wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBYMkZCRCAqLwo+ ICvCoMKgwqDCoMKgwqDCoGRvX2RpdihyYXRlLCAoY29uZmlnX3dvcmQgJiAweDFmKSArIDEpO8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBYMklQRCAqLwo+ICvCoMKgwqDCoMKg wqDCoGZvciAoaSA9IDA7IGkgPCAoKGNvbmZpZ193b3JkID4+IDE2KSAmIDMpOyBpKyspwqDCoMKg wqDCoMKgwqDCoMKgLyogUFMgKi8KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmF0 ZSA+Pj0gMTsKPiDCoAo+IC0vKiBETUEgQ2xvY2tzICovCj4gLXN0YXRpYyBzdHJ1Y3QgY2xrIGNs a19tMnAwID0gewo+IC3CoMKgwqDCoMKgwqDCoC5wYXJlbnTCoMKgwqDCoMKgwqDCoMKgwqA9ICZj bGtfaCwKPiAtwqDCoMKgwqDCoMKgwqAuZW5hYmxlX3JlZ8KgwqDCoMKgwqA9IEVQOTNYWF9TWVND T05fUFdSQ05ULAo+IC3CoMKgwqDCoMKgwqDCoC5lbmFibGVfbWFza8KgwqDCoMKgPSBFUDkzWFhf U1lTQ09OX1BXUkNOVF9ETUFfTTJQMCwKPiAtfTsKPiAtc3RhdGljIHN0cnVjdCBjbGsgY2xrX20y cDEgPSB7Cj4gLcKgwqDCoMKgwqDCoMKgLnBhcmVudMKgwqDCoMKgwqDCoMKgwqDCoD0gJmNsa19o LAo+IC3CoMKgwqDCoMKgwqDCoC5lbmFibGVfcmVnwqDCoMKgwqDCoD0gRVA5M1hYX1NZU0NPTl9Q V1JDTlQsCj4gLcKgwqDCoMKgwqDCoMKgLmVuYWJsZV9tYXNrwqDCoMKgwqA9IEVQOTNYWF9TWVND T05fUFdSQ05UX0RNQV9NMlAxLAo+IC19Owo+IC1zdGF0aWMgc3RydWN0IGNsayBjbGtfbTJwMiA9 IHsKPiAtwqDCoMKgwqDCoMKgwqAucGFyZW50wqDCoMKgwqDCoMKgwqDCoMKgPSAmY2xrX2gsCj4g LcKgwqDCoMKgwqDCoMKgLmVuYWJsZV9yZWfCoMKgwqDCoMKgPSBFUDkzWFhfU1lTQ09OX1BXUkNO VCwKPiAtwqDCoMKgwqDCoMKgwqAuZW5hYmxlX21hc2vCoMKgwqDCoD0gRVA5M1hYX1NZU0NPTl9Q V1JDTlRfRE1BX00yUDIsCj4gLX07Cj4gLXN0YXRpYyBzdHJ1Y3QgY2xrIGNsa19tMnAzID0gewo+ IC3CoMKgwqDCoMKgwqDCoC5wYXJlbnTCoMKgwqDCoMKgwqDCoMKgwqA9ICZjbGtfaCwKPiAtwqDC oMKgwqDCoMKgwqAuZW5hYmxlX3JlZ8KgwqDCoMKgwqA9IEVQOTNYWF9TWVNDT05fUFdSQ05ULAo+ IC3CoMKgwqDCoMKgwqDCoC5lbmFibGVfbWFza8KgwqDCoMKgPSBFUDkzWFhfU1lTQ09OX1BXUkNO VF9ETUFfTTJQMywKPiAtfTsKPiAtc3RhdGljIHN0cnVjdCBjbGsgY2xrX20ycDQgPSB7Cj4gLcKg wqDCoMKgwqDCoMKgLnBhcmVudMKgwqDCoMKgwqDCoMKgwqDCoD0gJmNsa19oLAo+IC3CoMKgwqDC oMKgwqDCoC5lbmFibGVfcmVnwqDCoMKgwqDCoD0gRVA5M1hYX1NZU0NPTl9QV1JDTlQsCj4gLcKg wqDCoMKgwqDCoMKgLmVuYWJsZV9tYXNrwqDCoMKgwqA9IEVQOTNYWF9TWVNDT05fUFdSQ05UX0RN QV9NMlA0LAo+IC19Owo+IC1zdGF0aWMgc3RydWN0IGNsayBjbGtfbTJwNSA9IHsKPiAtwqDCoMKg wqDCoMKgwqAucGFyZW50wqDCoMKgwqDCoMKgwqDCoMKgPSAmY2xrX2gsCj4gLcKgwqDCoMKgwqDC oMKgLmVuYWJsZV9yZWfCoMKgwqDCoMKgPSBFUDkzWFhfU1lTQ09OX1BXUkNOVCwKPiAtwqDCoMKg wqDCoMKgwqAuZW5hYmxlX21hc2vCoMKgwqDCoD0gRVA5M1hYX1NZU0NPTl9QV1JDTlRfRE1BX00y UDUsCj4gLX07Cj4gLXN0YXRpYyBzdHJ1Y3QgY2xrIGNsa19tMnA2ID0gewo+IC3CoMKgwqDCoMKg wqDCoC5wYXJlbnTCoMKgwqDCoMKgwqDCoMKgwqA9ICZjbGtfaCwKPiAtwqDCoMKgwqDCoMKgwqAu ZW5hYmxlX3JlZ8KgwqDCoMKgwqA9IEVQOTNYWF9TWVNDT05fUFdSQ05ULAo+IC3CoMKgwqDCoMKg wqDCoC5lbmFibGVfbWFza8KgwqDCoMKgPSBFUDkzWFhfU1lTQ09OX1BXUkNOVF9ETUFfTTJQNiwK PiAtfTsKPiAtc3RhdGljIHN0cnVjdCBjbGsgY2xrX20ycDcgPSB7Cj4gLcKgwqDCoMKgwqDCoMKg LnBhcmVudMKgwqDCoMKgwqDCoMKgwqDCoD0gJmNsa19oLAo+IC3CoMKgwqDCoMKgwqDCoC5lbmFi bGVfcmVnwqDCoMKgwqDCoD0gRVA5M1hYX1NZU0NPTl9QV1JDTlQsCj4gLcKgwqDCoMKgwqDCoMKg LmVuYWJsZV9tYXNrwqDCoMKgwqA9IEVQOTNYWF9TWVNDT05fUFdSQ05UX0RNQV9NMlA3LAo+IC19 Owo+IC1zdGF0aWMgc3RydWN0IGNsayBjbGtfbTJwOCA9IHsKPiAtwqDCoMKgwqDCoMKgwqAucGFy ZW50wqDCoMKgwqDCoMKgwqDCoMKgPSAmY2xrX2gsCj4gLcKgwqDCoMKgwqDCoMKgLmVuYWJsZV9y ZWfCoMKgwqDCoMKgPSBFUDkzWFhfU1lTQ09OX1BXUkNOVCwKPiAtwqDCoMKgwqDCoMKgwqAuZW5h YmxlX21hc2vCoMKgwqDCoD0gRVA5M1hYX1NZU0NPTl9QV1JDTlRfRE1BX00yUDgsCj4gLX07Cj4g LXN0YXRpYyBzdHJ1Y3QgY2xrIGNsa19tMnA5ID0gewo+IC3CoMKgwqDCoMKgwqDCoC5wYXJlbnTC oMKgwqDCoMKgwqDCoMKgwqA9ICZjbGtfaCwKPiAtwqDCoMKgwqDCoMKgwqAuZW5hYmxlX3JlZ8Kg wqDCoMKgwqA9IEVQOTNYWF9TWVNDT05fUFdSQ05ULAo+IC3CoMKgwqDCoMKgwqDCoC5lbmFibGVf bWFza8KgwqDCoMKgPSBFUDkzWFhfU1lTQ09OX1BXUkNOVF9ETUFfTTJQOSwKPiAtfTsKPiAtc3Rh dGljIHN0cnVjdCBjbGsgY2xrX20ybTAgPSB7Cj4gLcKgwqDCoMKgwqDCoMKgLnBhcmVudMKgwqDC oMKgwqDCoMKgwqDCoD0gJmNsa19oLAo+IC3CoMKgwqDCoMKgwqDCoC5lbmFibGVfcmVnwqDCoMKg wqDCoD0gRVA5M1hYX1NZU0NPTl9QV1JDTlQsCj4gLcKgwqDCoMKgwqDCoMKgLmVuYWJsZV9tYXNr wqDCoMKgwqA9IEVQOTNYWF9TWVNDT05fUFdSQ05UX0RNQV9NMk0wLAo+IC19Owo+IC1zdGF0aWMg c3RydWN0IGNsayBjbGtfbTJtMSA9IHsKPiAtwqDCoMKgwqDCoMKgwqAucGFyZW50wqDCoMKgwqDC oMKgwqDCoMKgPSAmY2xrX2gsCj4gLcKgwqDCoMKgwqDCoMKgLmVuYWJsZV9yZWfCoMKgwqDCoMKg PSBFUDkzWFhfU1lTQ09OX1BXUkNOVCwKPiAtwqDCoMKgwqDCoMKgwqAuZW5hYmxlX21hc2vCoMKg wqDCoD0gRVA5M1hYX1NZU0NPTl9QV1JDTlRfRE1BX00yTTEsCj4gLX07Cj4gK8KgwqDCoMKgwqDC oMKgcmV0dXJuICh1bnNpZ25lZCBsb25nKXJhdGU7Cj4gK30KPiDCoAo+IC0jZGVmaW5lIElOSVRf Q0soZGV2LGNvbixjaynCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBcCj4gLcKgwqDCoMKgwqDCoMKgeyAuZGV2X2lk ID0gZGV2LCAuY29uX2lkID0gY29uLCAuY2xrID0gY2sgfQo+IC0KPiAtc3RhdGljIHN0cnVjdCBj bGtfbG9va3VwIGNsb2Nrc1tdID0gewo+IC3CoMKgwqDCoMKgwqDCoElOSVRfQ0soTlVMTCzCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCJ4dGFsaSIswqDCoMKgwqDCoMKgwqDC oCZjbGtfeHRhbGkpLAo+IC3CoMKgwqDCoMKgwqDCoElOSVRfQ0soImFwYjp1YXJ0MSIswqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgTlVMTCzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgJmNsa191YXJ0MSks Cj4gLcKgwqDCoMKgwqDCoMKgSU5JVF9DSygiYXBiOnVhcnQyIizCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBOVUxMLMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAmY2xrX3VhcnQyKSwKPiAtwqDCoMKgwqDC oMKgwqBJTklUX0NLKCJhcGI6dWFydDMiLMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoE5VTEwswqDC oMKgwqDCoMKgwqDCoMKgwqDCoCZjbGtfdWFydDMpLAo+IC3CoMKgwqDCoMKgwqDCoElOSVRfQ0so TlVMTCzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCJwbGwxIizCoMKgwqDC oMKgwqDCoMKgwqAmY2xrX3BsbDEpLAo+IC3CoMKgwqDCoMKgwqDCoElOSVRfQ0soTlVMTCzCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCJmY2xrIizCoMKgwqDCoMKgwqDCoMKg wqAmY2xrX2YpLAo+IC3CoMKgwqDCoMKgwqDCoElOSVRfQ0soTlVMTCzCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCJoY2xrIizCoMKgwqDCoMKgwqDCoMKgwqAmY2xrX2gpLAo+ IC3CoMKgwqDCoMKgwqDCoElOSVRfQ0soTlVMTCzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCJhcGJfcGNsayIswqDCoMKgwqDCoCZjbGtfcCksCj4gLcKgwqDCoMKgwqDCoMKg SU5JVF9DSyhOVUxMLMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgInBsbDIi LMKgwqDCoMKgwqDCoMKgwqDCoCZjbGtfcGxsMiksCj4gLcKgwqDCoMKgwqDCoMKgSU5JVF9DSygi b2hjaS1wbGF0Zm9ybSIswqDCoMKgwqDCoMKgwqDCoE5VTEwswqDCoMKgwqDCoMKgwqDCoMKgwqDC oCZjbGtfdXNiX2hvc3QpLAo+IC3CoMKgwqDCoMKgwqDCoElOSVRfQ0soImVwOTN4eC1rZXlwYWQi LMKgwqDCoMKgwqDCoMKgwqBOVUxMLMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAmY2xrX2tleXBhZCks Cj4gLcKgwqDCoMKgwqDCoMKgSU5JVF9DSygiZXA5M3h4LWFkYyIswqDCoMKgwqDCoMKgwqDCoMKg wqDCoE5VTEwswqDCoMKgwqDCoMKgwqDCoMKgwqDCoCZjbGtfYWRjKSwKPiAtwqDCoMKgwqDCoMKg wqBJTklUX0NLKCJlcDkzeHgtZmIiLMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoE5VTEwswqDCoMKg wqDCoMKgwqDCoMKgwqDCoCZjbGtfdmlkZW8pLAo+IC3CoMKgwqDCoMKgwqDCoElOSVRfQ0soImVw OTN4eC1zcGkuMCIswqDCoMKgwqDCoMKgwqDCoMKgTlVMTCzCoMKgwqDCoMKgwqDCoMKgwqDCoMKg JmNsa19zcGkpLAo+IC3CoMKgwqDCoMKgwqDCoElOSVRfQ0soImVwOTN4eC1pMnMiLMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAibWNsayIswqDCoMKgwqDCoMKgwqDCoMKgJmNsa19pMnNfbWNsayksCj4g LcKgwqDCoMKgwqDCoMKgSU5JVF9DSygiZXA5M3h4LWkycyIswqDCoMKgwqDCoMKgwqDCoMKgwqDC oCJzY2xrIizCoMKgwqDCoMKgwqDCoMKgwqAmY2xrX2kyc19zY2xrKSwKPiAtwqDCoMKgwqDCoMKg wqBJTklUX0NLKCJlcDkzeHgtaTJzIizCoMKgwqDCoMKgwqDCoMKgwqDCoMKgImxyY2xrIizCoMKg wqDCoMKgwqDCoMKgJmNsa19pMnNfbHJjbGspLAo+IC3CoMKgwqDCoMKgwqDCoElOSVRfQ0soTlVM TCzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCJwd21fY2xrIizCoMKgwqDC oMKgwqAmY2xrX3B3bSksCj4gLcKgwqDCoMKgwqDCoMKgSU5JVF9DSyhOVUxMLMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIm0ycDAiLMKgwqDCoMKgwqDCoMKgwqDCoCZjbGtf bTJwMCksCj4gLcKgwqDCoMKgwqDCoMKgSU5JVF9DSyhOVUxMLMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIm0ycDEiLMKgwqDCoMKgwqDCoMKgwqDCoCZjbGtfbTJwMSksCj4g LcKgwqDCoMKgwqDCoMKgSU5JVF9DSyhOVUxMLMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIm0ycDIiLMKgwqDCoMKgwqDCoMKgwqDCoCZjbGtfbTJwMiksCj4gLcKgwqDCoMKg wqDCoMKgSU5JVF9DSyhOVUxMLMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg Im0ycDMiLMKgwqDCoMKgwqDCoMKgwqDCoCZjbGtfbTJwMyksCj4gLcKgwqDCoMKgwqDCoMKgSU5J VF9DSyhOVUxMLMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIm0ycDQiLMKg wqDCoMKgwqDCoMKgwqDCoCZjbGtfbTJwNCksCj4gLcKgwqDCoMKgwqDCoMKgSU5JVF9DSyhOVUxM LMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIm0ycDUiLMKgwqDCoMKgwqDC oMKgwqDCoCZjbGtfbTJwNSksCj4gLcKgwqDCoMKgwqDCoMKgSU5JVF9DSyhOVUxMLMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIm0ycDYiLMKgwqDCoMKgwqDCoMKgwqDCoCZj bGtfbTJwNiksCj4gLcKgwqDCoMKgwqDCoMKgSU5JVF9DSyhOVUxMLMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIm0ycDciLMKgwqDCoMKgwqDCoMKgwqDCoCZjbGtfbTJwNyks Cj4gLcKgwqDCoMKgwqDCoMKgSU5JVF9DSyhOVUxMLMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIm0ycDgiLMKgwqDCoMKgwqDCoMKgwqDCoCZjbGtfbTJwOCksCj4gLcKgwqDC oMKgwqDCoMKgSU5JVF9DSyhOVUxMLMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIm0ycDkiLMKgwqDCoMKgwqDCoMKgwqDCoCZjbGtfbTJwOSksCj4gLcKgwqDCoMKgwqDCoMKg SU5JVF9DSyhOVUxMLMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIm0ybTAi LMKgwqDCoMKgwqDCoMKgwqDCoCZjbGtfbTJtMCksCj4gLcKgwqDCoMKgwqDCoMKgSU5JVF9DSyhO VUxMLMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIm0ybTEiLMKgwqDCoMKg wqDCoMKgwqDCoCZjbGtfbTJtMSksCj4gK3N0cnVjdCBjbGtfcHNjIHsKPiArwqDCoMKgwqDCoMKg wqBzdHJ1Y3QgY2xrX2h3IGh3Owo+ICvCoMKgwqDCoMKgwqDCoHZvaWQgX19pb21lbSAqcmVnOwo+ ICvCoMKgwqDCoMKgwqDCoHU4IGJpdF9pZHg7Cj4gK8KgwqDCoMKgwqDCoMKgdTMyIG1hc2s7Cj4g K8KgwqDCoMKgwqDCoMKgdTggc2hpZnQ7Cj4gK8KgwqDCoMKgwqDCoMKgdTggd2lkdGg7Cj4gK8Kg wqDCoMKgwqDCoMKgY2hhciAqZGl2Owo+ICvCoMKgwqDCoMKgwqDCoHU4IG51bV9kaXY7Cj4gK8Kg wqDCoMKgwqDCoMKgc3BpbmxvY2tfdCAqbG9jazsKPiDCoH07Cj4gwqAKPiAtc3RhdGljIERFRklO RV9TUElOTE9DSyhjbGtfbG9jayk7Cj4gKyNkZWZpbmUgdG9fY2xrX3BzYyhfaHcpIGNvbnRhaW5l cl9vZihfaHcsIHN0cnVjdCBjbGtfcHNjLCBodykKPiDCoAo+IC1zdGF0aWMgdm9pZCBfX2Nsa19l bmFibGUoc3RydWN0IGNsayAqY2xrKQo+ICtzdGF0aWMgaW50IGVwOTN4eF9jbGtfaXNfZW5hYmxl ZChzdHJ1Y3QgY2xrX2h3ICpodykKPiDCoHsKPiAtwqDCoMKgwqDCoMKgwqBpZiAoIWNsay0+dXNl cnMrKykgewo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoY2xrLT5wYXJlbnQp Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBfX2Nsa19l bmFibGUoY2xrLT5wYXJlbnQpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg aWYgKGNsay0+ZW5hYmxlX3JlZykgewo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgdTMyIHY7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgdiA9IF9fcmF3X3JlYWRsKGNsay0+ZW5hYmxlX3JlZyk7Cj4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB2IHw9IGNsay0+ZW5h YmxlX21hc2s7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBpZiAoY2xrLT5zd19sb2NrZWQpCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZXA5M3h4X3N5c2Nvbl9zd2xvY2tlZF93cml0 ZSh2LCBjbGstPmVuYWJsZV9yZWcpOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgZWxzZQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoF9fcmF3X3dyaXRlbCh2LCBjbGstPmVuYWJsZV9y ZWcpOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gLcKgwqDCoMKgwqDCoMKg fQo+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBjbGtfcHNjICpwc2MgPSB0b19jbGtfcHNjKGh3KTsK PiArwqDCoMKgwqDCoMKgwqB1MzIgdmFsID0gcmVhZGwocHNjLT5yZWcpOwo+ICsKPiArwqDCoMKg wqDCoMKgwqByZXR1cm4gKHZhbCAmIEJJVChwc2MtPmJpdF9pZHgpKSA/IDEgOiAwOwo+IMKgfQo+ IMKgCj4gLWludCBjbGtfZW5hYmxlKHN0cnVjdCBjbGsgKmNsaykKPiArc3RhdGljIGludCBlcDkz eHhfY2xrX2VuYWJsZShzdHJ1Y3QgY2xrX2h3ICpodykKPiDCoHsKPiAtwqDCoMKgwqDCoMKgwqB1 bnNpZ25lZCBsb25nIGZsYWdzOwo+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBjbGtfcHNjICpwc2Mg PSB0b19jbGtfcHNjKGh3KTsKPiArwqDCoMKgwqDCoMKgwqB1bnNpZ25lZCBsb25nIGZsYWdzID0g MDsKPiArwqDCoMKgwqDCoMKgwqB1MzIgdmFsOwo+IMKgCj4gLcKgwqDCoMKgwqDCoMKgaWYgKCFj bGspCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiAtRUlOVkFMOwo+ICvC oMKgwqDCoMKgwqDCoGlmIChwc2MtPmxvY2spCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoHNwaW5fbG9ja19pcnFzYXZlKHBzYy0+bG9jaywgZmxhZ3MpOwo+ICsKPiArwqDCoMKgwqDC oMKgwqB2YWwgPSBfX3Jhd19yZWFkbChwc2MtPnJlZyk7Cj4gK8KgwqDCoMKgwqDCoMKgdmFsIHw9 IEJJVChwc2MtPmJpdF9pZHgpOwo+ICsKPiArwqDCoMKgwqDCoMKgwqBlcDkzeHhfc3lzY29uX3N3 bG9ja2VkX3dyaXRlKHZhbCwgcHNjLT5yZWcpOwo+IMKgCj4gLcKgwqDCoMKgwqDCoMKgc3Bpbl9s b2NrX2lycXNhdmUoJmNsa19sb2NrLCBmbGFncyk7Cj4gLcKgwqDCoMKgwqDCoMKgX19jbGtfZW5h YmxlKGNsayk7Cj4gLcKgwqDCoMKgwqDCoMKgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY2xrX2xv Y2ssIGZsYWdzKTsKPiArwqDCoMKgwqDCoMKgwqBpZiAocHNjLT5sb2NrKQo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBzcGluX3VubG9ja19pcnFyZXN0b3JlKHBzYy0+bG9jaywgZmxh Z3MpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IC1FWFBPUlRfU1lN Qk9MKGNsa19lbmFibGUpOwo+IMKgCj4gLXN0YXRpYyB2b2lkIF9fY2xrX2Rpc2FibGUoc3RydWN0 IGNsayAqY2xrKQo+ICtzdGF0aWMgdm9pZCBlcDkzeHhfY2xrX2Rpc2FibGUoc3RydWN0IGNsa19o dyAqaHcpCj4gwqB7Cj4gLcKgwqDCoMKgwqDCoMKgaWYgKCEtLWNsay0+dXNlcnMpIHsKPiAtwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGNsay0+ZW5hYmxlX3JlZykgewo+IC3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdTMyIHY7Cj4gLQo+IC3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdiA9IF9fcmF3X3Jl YWRsKGNsay0+ZW5hYmxlX3JlZyk7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqB2ICY9IH5jbGstPmVuYWJsZV9tYXNrOwo+IC3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGNsay0+c3dfbG9ja2VkKQo+IC3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGVwOTN4eF9zeXNjb25fc3dsb2NrZWRfd3JpdGUodiwgY2xrLT5lbmFibGVfcmVnKTsKPiAtwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGVsc2UKPiAtwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBf X3Jhd193cml0ZWwodiwgY2xrLT5lbmFibGVfcmVnKTsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgfQo+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBjbGtfcHNjICpwc2MgPSB0b19jbGtf cHNjKGh3KTsKPiArwqDCoMKgwqDCoMKgwqB1bnNpZ25lZCBsb25nIGZsYWdzID0gMDsKPiArwqDC oMKgwqDCoMKgwqB1MzIgdmFsOwo+IMKgCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGlmIChjbGstPnBhcmVudCkKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoF9fY2xrX2Rpc2FibGUoY2xrLT5wYXJlbnQpOwo+IC3CoMKgwqDCoMKgwqDCoH0K PiAtfQo+ICvCoMKgwqDCoMKgwqDCoGlmIChwc2MtPmxvY2spCj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHNwaW5fbG9ja19pcnFzYXZlKHBzYy0+bG9jaywgZmxhZ3MpOwo+IMKgCj4g LXZvaWQgY2xrX2Rpc2FibGUoc3RydWN0IGNsayAqY2xrKQo+IC17Cj4gLcKgwqDCoMKgwqDCoMKg dW5zaWduZWQgbG9uZyBmbGFnczsKPiArwqDCoMKgwqDCoMKgwqB2YWwgPSBfX3Jhd19yZWFkbChw c2MtPnJlZyk7Cj4gK8KgwqDCoMKgwqDCoMKgdmFsICY9IH5CSVQocHNjLT5iaXRfaWR4KTsKPiDC oAo+IC3CoMKgwqDCoMKgwqDCoGlmICghY2xrKQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqByZXR1cm47Cj4gK8KgwqDCoMKgwqDCoMKgZXA5M3h4X3N5c2Nvbl9zd2xvY2tlZF93cml0 ZSh2YWwsIHBzYy0+cmVnKTsKPiDCoAo+IC3CoMKgwqDCoMKgwqDCoHNwaW5fbG9ja19pcnFzYXZl KCZjbGtfbG9jaywgZmxhZ3MpOwo+IC3CoMKgwqDCoMKgwqDCoF9fY2xrX2Rpc2FibGUoY2xrKTsK PiAtwqDCoMKgwqDCoMKgwqBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZjbGtfbG9jaywgZmxhZ3Mp Owo+ICvCoMKgwqDCoMKgwqDCoGlmIChwc2MtPmxvY2spCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHNwaW5fdW5sb2NrX2lycXJlc3RvcmUocHNjLT5sb2NrLCBmbGFncyk7Cj4gwqB9 Cj4gLUVYUE9SVF9TWU1CT0woY2xrX2Rpc2FibGUpOwo+IMKgCj4gLXN0YXRpYyB1bnNpZ25lZCBs b25nIGdldF91YXJ0X3JhdGUoc3RydWN0IGNsayAqY2xrKQo+IC17Cj4gLcKgwqDCoMKgwqDCoMKg dW5zaWduZWQgbG9uZyByYXRlID0gY2xrX2dldF9yYXRlKGNsay0+cGFyZW50KTsKPiAtwqDCoMKg wqDCoMKgwqB1MzIgdmFsdWU7Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY2xrX29wcyBjbGtfZXA5 M3h4X2dhdGVfb3BzID0gewo+ICvCoMKgwqDCoMKgwqDCoC5lbmFibGUgPSBlcDkzeHhfY2xrX2Vu YWJsZSwKPiArwqDCoMKgwqDCoMKgwqAuZGlzYWJsZSA9IGVwOTN4eF9jbGtfZGlzYWJsZSwKPiAr wqDCoMKgwqDCoMKgwqAuaXNfZW5hYmxlZCA9IGVwOTN4eF9jbGtfaXNfZW5hYmxlZCwKPiArfTsK PiDCoAo+IC3CoMKgwqDCoMKgwqDCoHZhbHVlID0gX19yYXdfcmVhZGwoRVA5M1hYX1NZU0NPTl9Q V1JDTlQpOwo+IC3CoMKgwqDCoMKgwqDCoGlmICh2YWx1ZSAmIEVQOTNYWF9TWVNDT05fUFdSQ05U X1VBUlRCQVVEKQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmF0ZTsK PiAtwqDCoMKgwqDCoMKgwqBlbHNlCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJl dHVybiByYXRlIC8gMjsKPiArc3RhdGljIHN0cnVjdCBjbGtfaHcgKmVwOTN4eF9jbGtfcmVnaXN0 ZXJfZ2F0ZShjb25zdCBjaGFyICpuYW1lLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb25zdCBjaGFyICpwYXJl bnRfbmFtZSwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdm9pZCBfX2lvbWVtICpyZWcsCj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHU4IGJpdF9pZHgpCj4gK3sKPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgY2xrX2luaXRfZGF0YSBp bml0Owo+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBjbGtfcHNjICpwc2M7Cj4gK8KgwqDCoMKgwqDC oMKgc3RydWN0IGNsayAqY2xrOwo+ICsKPiArwqDCoMKgwqDCoMKgwqBwc2MgPSBremFsbG9jKHNp emVvZigqcHNjKSwgR0ZQX0tFUk5FTCk7Cj4gK8KgwqDCoMKgwqDCoMKgaWYgKCFwc2MpCj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwo+ICsK PiArwqDCoMKgwqDCoMKgwqBpbml0Lm5hbWUgPSBuYW1lOwo+ICvCoMKgwqDCoMKgwqDCoGluaXQu b3BzID0gJmNsa19lcDkzeHhfZ2F0ZV9vcHM7Cj4gK8KgwqDCoMKgwqDCoMKgaW5pdC5mbGFncyA9 IENMS19TRVRfUkFURV9QQVJFTlQ7Cj4gK8KgwqDCoMKgwqDCoMKgaW5pdC5wYXJlbnRfbmFtZXMg PSAocGFyZW50X25hbWUgPyAmcGFyZW50X25hbWUgOiBOVUxMKTsKPiArwqDCoMKgwqDCoMKgwqBp bml0Lm51bV9wYXJlbnRzID0gKHBhcmVudF9uYW1lID8gMSA6IDApOwo+ICsKPiArwqDCoMKgwqDC oMKgwqBwc2MtPnJlZyA9IHJlZzsKPiArwqDCoMKgwqDCoMKgwqBwc2MtPmJpdF9pZHggPSBiaXRf aWR4Owo+ICvCoMKgwqDCoMKgwqDCoHBzYy0+aHcuaW5pdCA9ICZpbml0Owo+ICvCoMKgwqDCoMKg wqDCoHBzYy0+bG9jayA9ICZjbGtfbG9jazsKPiArCj4gK8KgwqDCoMKgwqDCoMKgY2xrID0gY2xr X3JlZ2lzdGVyKE5VTEwsICZwc2MtPmh3KTsKPiArwqDCoMKgwqDCoMKgwqBpZiAoSVNfRVJSKGNs aykpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGtmcmVlKHBzYyk7Cj4gKwo+ICvC oMKgwqDCoMKgwqDCoHJldHVybiAmcHNjLT5odzsKPiDCoH0KPiDCoAo+IC11bnNpZ25lZCBsb25n IGNsa19nZXRfcmF0ZShzdHJ1Y3QgY2xrICpjbGspCj4gK3N0YXRpYyB1OCBlcDkzeHhfbXV4X2dl dF9wYXJlbnQoc3RydWN0IGNsa19odyAqaHcpCj4gwqB7Cj4gLcKgwqDCoMKgwqDCoMKgaWYgKGNs ay0+Z2V0X3JhdGUpCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiBjbGst PmdldF9yYXRlKGNsayk7Cj4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IGNsa19wc2MgKnBzYyA9IHRv X2Nsa19wc2MoaHcpOwo+ICvCoMKgwqDCoMKgwqDCoHUzMiB2YWwgPSBfX3Jhd19yZWFkbChwc2Mt PnJlZyk7Cj4gwqAKPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gY2xrLT5yYXRlOwo+ICvCoMKgwqDC oMKgwqDCoGlmICghKHZhbCAmIEVQOTNYWF9TWVNDT05fQ0xLRElWX0VTRUwpKQo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiArCj4gK8KgwqDCoMKgwqDCoMKgaWYg KCEodmFsICYgRVA5M1hYX1NZU0NPTl9DTEtESVZfUFNFTCkpCj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHJldHVybiAxOwo+ICsKPiArwqDCoMKgwqDCoMKgwqByZXR1cm4gMjsKPiDC oH0KPiAtRVhQT1JUX1NZTUJPTChjbGtfZ2V0X3JhdGUpOwo+IMKgCj4gLXN0YXRpYyBpbnQgc2V0 X2tleXRjaGNsa19yYXRlKHN0cnVjdCBjbGsgKmNsaywgdW5zaWduZWQgbG9uZyByYXRlKQo+ICtz dGF0aWMgaW50IGVwOTN4eF9tdXhfc2V0X3BhcmVudF9sb2NrKHN0cnVjdCBjbGtfaHcgKmh3LCB1 OCBpbmRleCkKPiDCoHsKPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgY2xrX3BzYyAqcHNjID0gdG9f Y2xrX3BzYyhodyk7Cj4gK8KgwqDCoMKgwqDCoMKgdW5zaWduZWQgbG9uZyBmbGFncyA9IDA7Cj4g wqDCoMKgwqDCoMKgwqDCoHUzMiB2YWw7Cj4gLcKgwqDCoMKgwqDCoMKgdTMyIGRpdl9iaXQ7Cj4g wqAKPiAtwqDCoMKgwqDCoMKgwqB2YWwgPSBfX3Jhd19yZWFkbChjbGstPmVuYWJsZV9yZWcpOwo+ ICvCoMKgwqDCoMKgwqDCoGlmIChpbmRleCA+PSBBUlJBWV9TSVpFKG11eF9wYXJlbnRzKSkKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIC1FSU5WQUw7Cj4gwqAKPiAtwqDC oMKgwqDCoMKgwqAvKgo+IC3CoMKgwqDCoMKgwqDCoCAqIFRoZSBLZXkgTWF0cml4IGFuZCBBREMg Y2xvY2tzIGFyZSBjb25maWd1cmVkIHVzaW5nIHRoZSBzYW1lCj4gLcKgwqDCoMKgwqDCoMKgICog U3lzdGVtIENvbnRyb2xsZXIgcmVnaXN0ZXIuwqAgVGhlIGNsb2NrIHVzZWQgd2lsbCBiZSBlaXRo ZXIKPiAtwqDCoMKgwqDCoMKgwqAgKiAxLzQgb3IgMS8xNiB0aGUgZXh0ZXJuYWwgY2xvY2sgcmF0 ZSBkZXBlbmRpbmcgb24gdGhlCj4gLcKgwqDCoMKgwqDCoMKgICogRVA5M1hYX1NZU0NPTl9LRVlU Q0hDTEtESVZfS0RJVi9FUDkzWFhfU1lTQ09OX0tFWVRDSENMS0RJVl9BRElWCj4gLcKgwqDCoMKg wqDCoMKgICogYml0IGJlaW5nIHNldCBvciBjbGVhcmVkLgo+IC3CoMKgwqDCoMKgwqDCoCAqLwo+ IC3CoMKgwqDCoMKgwqDCoGRpdl9iaXQgPSBjbGstPmVuYWJsZV9tYXNrID4+IDE1Owo+ICvCoMKg wqDCoMKgwqDCoGlmIChwc2MtPmxvY2spCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHNwaW5fbG9ja19pcnFzYXZlKHBzYy0+bG9jaywgZmxhZ3MpOwo+IMKgCj4gLcKgwqDCoMKgwqDC oMKgaWYgKHJhdGUgPT0gRVA5M1hYX0tFWVRDSENMS19ESVY0KQo+IC3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqB2YWwgfD0gZGl2X2JpdDsKPiAtwqDCoMKgwqDCoMKgwqBlbHNlIGlmIChy YXRlID09IEVQOTNYWF9LRVlUQ0hDTEtfRElWMTYpCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHZhbCAmPSB+ZGl2X2JpdDsKPiAtwqDCoMKgwqDCoMKgwqBlbHNlCj4gLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiAtRUlOVkFMOwo+ICvCoMKgwqDCoMKgwqDCoHZh bCA9IF9fcmF3X3JlYWRsKHBzYy0+cmVnKTsKPiArwqDCoMKgwqDCoMKgwqB2YWwgJj0gfihFUDkz WFhfU1lTQ09OX0NMS0RJVl9FU0VMIHwgRVA5M1hYX1NZU0NPTl9DTEtESVZfUFNFTCk7Cj4gKwo+ ICsKPiArwqDCoMKgwqDCoMKgwqBpZiAoaW5kZXggIT0gMCkgewo+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqB2YWwgfD0gRVA5M1hYX1NZU0NPTl9DTEtESVZfRVNFTDsKPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdmFsIHw9IChpbmRleCAtIDEpID8gRVA5M1hYX1NZU0NP Tl9DTEtESVZfUFNFTCA6IDA7Cj4gK8KgwqDCoMKgwqDCoMKgfQo+ICsKPiArwqDCoMKgwqDCoMKg wqBlcDkzeHhfc3lzY29uX3N3bG9ja2VkX3dyaXRlKHZhbCwgcHNjLT5yZWcpOwo+ICsKPiArwqDC oMKgwqDCoMKgwqBpZiAocHNjLT5sb2NrKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBzcGluX3VubG9ja19pcnFyZXN0b3JlKHBzYy0+bG9jaywgZmxhZ3MpOwo+IMKgCj4gLcKgwqDC oMKgwqDCoMKgZXA5M3h4X3N5c2Nvbl9zd2xvY2tlZF93cml0ZSh2YWwsIGNsay0+ZW5hYmxlX3Jl Zyk7Cj4gLcKgwqDCoMKgwqDCoMKgY2xrLT5yYXRlID0gcmF0ZTsKPiDCoMKgwqDCoMKgwqDCoMKg cmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBjYWxjX2Nsa19kaXYoc3RydWN0IGNs ayAqY2xrLCB1bnNpZ25lZCBsb25nIHJhdGUsCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBpbnQgKnBzZWwsIGludCAqZXNlbCwgaW50ICpwZGl2LCBpbnQg KmRpdikKPiArc3RhdGljIGJvb2wgX2lzX2Jlc3QodW5zaWduZWQgbG9uZyByYXRlLCB1bnNpZ25l ZCBsb25nIG5vdywKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5z aWduZWQgbG9uZyBiZXN0KQo+IMKgewo+IC3CoMKgwqDCoMKgwqDCoHN0cnVjdCBjbGsgKm1jbGs7 Cj4gLcKgwqDCoMKgwqDCoMKgdW5zaWduZWQgbG9uZyBtYXhfcmF0ZSwgYWN0dWFsX3JhdGUsIG1j bGtfcmF0ZSwgcmF0ZV9lcnIgPSAtMTsKPiAtwqDCoMKgwqDCoMKgwqBpbnQgaSwgZm91bmQgPSAw LCBfX2RpdiA9IDAsIF9fcGRpdiA9IDA7Cj4gK8KgwqDCoMKgwqDCoMKgcmV0dXJuIGFicyhyYXRl IC0gbm93KSA8IGFicyhyYXRlIC0gYmVzdCk7Cj4gK30KPiDCoAo+IC3CoMKgwqDCoMKgwqDCoC8q IERvbid0IGV4Y2VlZCB0aGUgbWF4aW11bSByYXRlICovCj4gLcKgwqDCoMKgwqDCoMKgbWF4X3Jh dGUgPSBtYXgzKGNsa19wbGwxLnJhdGUgLyA0LCBjbGtfcGxsMi5yYXRlIC8gNCwgY2xrX3h0YWxp LnJhdGUgLyA0KTsKPiAtwqDCoMKgwqDCoMKgwqByYXRlID0gbWluKHJhdGUsIG1heF9yYXRlKTsK PiArc3RhdGljIGludCBlcDkzeHhfbXV4X2RldGVybWluZV9yYXRlKHN0cnVjdCBjbGtfaHcgKmh3 LAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHN0cnVjdCBjbGtfcmF0ZV9yZXF1ZXN0ICpyZXEpCj4gK3sKPiArwqDCoMKgwqDC oMKgwqB1bnNpZ25lZCBsb25nIHJhdGUgPSByZXEtPnJhdGU7Cj4gK8KgwqDCoMKgwqDCoMKgc3Ry dWN0IGNsayAqcGFyZW50X2Jlc3QgPSAwOwo+ICvCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIGxvbmcg X19wYXJlbnRfcmF0ZTsKPiArwqDCoMKgwqDCoMKgwqB1bnNpZ25lZCBsb25nIGJlc3RfcmF0ZSA9 IDAsIGFjdHVhbF9yYXRlLCBtY2xrX3JhdGU7Cj4gK8KgwqDCoMKgwqDCoMKgdW5zaWduZWQgbG9u ZyBwYXJlbnRfcmF0ZV9iZXN0Owo+ICvCoMKgwqDCoMKgwqDCoGludCBfX2RpdiA9IDAsIF9fcGRp diA9IDA7Cj4gK8KgwqDCoMKgwqDCoMKgaW50IGk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgLyoK PiDCoMKgwqDCoMKgwqDCoMKgICogVHJ5IHRoZSB0d28gcGxsJ3MgYW5kIHRoZSBleHRlcm5hbCBj bG9jawo+IEBAIC0zNzYsMjEzICsyMjMsNTE3IEBAIHN0YXRpYyBpbnQgY2FsY19jbGtfZGl2KHN0 cnVjdCBjbGsgKmNsaywgdW5zaWduZWQgbG9uZyByYXRlLAo+IMKgwqDCoMKgwqDCoMKgwqAgKiBo dHRwOi8vYmUtYS1tYXZlcmljay5jb20vZW4vcHVicy9hcHBOb3RlL0FOMjY5UkVWMS5wZGYKPiDC oMKgwqDCoMKgwqDCoMKgICoKPiDCoMKgwqDCoMKgwqDCoMKgICovCj4gLcKgwqDCoMKgwqDCoMKg Zm9yIChpID0gMDsgaSA8IDM7IGkrKykgewo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBpZiAoaSA9PSAwKQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgbWNsayA9ICZjbGtfeHRhbGk7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGVsc2UgaWYgKGkgPT0gMSkKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoG1jbGsgPSAmY2xrX3BsbDE7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGVsc2UKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oG1jbGsgPSAmY2xrX3BsbDI7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG1jbGtf cmF0ZSA9IG1jbGstPnJhdGUgKiAyOwo+ICvCoMKgwqDCoMKgwqDCoGZvciAoaSA9IDA7IGkgPCBB UlJBWV9TSVpFKG11eF9wYXJlbnRzKTsgaSsrKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHN0cnVjdCBjbGsgKnBhcmVudCA9IGNsa19nZXRfc3lzKG11eF9wYXJlbnRzW2ldLCBO VUxMKTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoF9fcGFyZW50X3JhdGUg PSBjbGtfZ2V0X3JhdGUocGFyZW50KTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg bWNsa19yYXRlID0gX19wYXJlbnRfcmF0ZSAqIDI7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoC8qIFRyeSBlYWNoIHByZWRpdmlkZXIgdmFsdWUgKi8KPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGZvciAoX19wZGl2ID0gNDsgX19wZGl2IDw9IDY7IF9fcGRp disrKSB7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg X19kaXYgPSBtY2xrX3JhdGUgLyAocmF0ZSAqIF9fcGRpdik7Cj4gLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoX19kaXYgPCAyIHx8IF9fZGl2ID4gMTI3 KQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKF9f ZGl2IDwgMiB8fCBfX2RpdiA+IDEyNykgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHByX2luZm8oIiVzIDogY29udGludWUg X19kaXY9JWQiLCBfX2Z1bmNfXywgX19kaXYpOwo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjb250aW51ZTsKPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiArCj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBhY3R1YWxfcmF0ZSA9IERJVl9S T1VORF9VUF9VTEwoKHU2NCltY2xrX3JhdGUsIChfX3BkaXYgKiBfX2RpdikpOwo+IMKgCj4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBhY3R1YWxfcmF0ZSA9 IG1jbGtfcmF0ZSAvIChfX3BkaXYgKiBfX2Rpdik7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCFmb3VuZCB8fCBhYnMoYWN0dWFsX3JhdGUg LSByYXRlKSA8IHJhdGVfZXJyKSB7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKnBkaXYgPSBfX3BkaXYgLSAzOwo+IC3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCpkaXYgPSBfX2RpdjsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAqcHNlbCA9IChpID09IDIpOwo+IC3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCplc2VsID0g KGkgIT0gMCk7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgY2xrLT5wYXJlbnQgPSBtY2xrOwo+IC3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNsay0+cmF0ZSA9 IGFjdHVhbF9yYXRlOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJhdGVfZXJyID0gYWJzKGFjdHVhbF9yYXRlIC0gcmF0ZSk7 Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgZm91bmQgPSAxOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgaWYgKF9pc19iZXN0KHJhdGUsIGFjdHVhbF9yYXRlLCBiZXN0X3JhdGUpKSB7 Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgYmVzdF9yYXRlID0gYWN0dWFsX3JhdGU7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcGFyZW50X3JhdGVfYmVz dCA9IF9fcGFyZW50X3JhdGU7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcGFyZW50X2Jlc3QgPSBwYXJlbnQ7Cj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+IMKgwqDCoMKgwqDCoMKgwqB9Cj4gwqAKPiAtwqDCoMKg wqDCoMKgwqBpZiAoIWZvdW5kKQo+ICvCoMKgwqDCoMKgwqDCoGlmICghcGFyZW50X2Jlc3QpCj4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gLUVJTlZBTDsKPiDCoAo+ICvC oMKgwqDCoMKgwqDCoHJlcS0+YmVzdF9wYXJlbnRfcmF0ZSA9IHBhcmVudF9yYXRlX2Jlc3Q7Cj4g K8KgwqDCoMKgwqDCoMKgcmVxLT5iZXN0X3BhcmVudF9odyA9IF9fY2xrX2dldF9odyhwYXJlbnRf YmVzdCk7Cj4gK8KgwqDCoMKgwqDCoMKgcmVxLT5yYXRlID0gYmVzdF9yYXRlOwo+ICsKPiDCoMKg wqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBzZXRfZGl2X3Jh dGUoc3RydWN0IGNsayAqY2xrLCB1bnNpZ25lZCBsb25nIHJhdGUpCj4gK3N0YXRpYyB1bnNpZ25l ZCBsb25nIGVwOTN4eF9kZGl2X3JlY2FsY19yYXRlKHN0cnVjdCBjbGtfaHcgKmh3LAo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdW5zaWduZWQgbG9uZyBwYXJlbnRfcmF0 ZSkKPiDCoHsKPiAtwqDCoMKgwqDCoMKgwqBpbnQgZXJyLCBwc2VsID0gMCwgZXNlbCA9IDAsIHBk aXYgPSAwLCBkaXYgPSAwOwo+IC3CoMKgwqDCoMKgwqDCoHUzMiB2YWw7Cj4gLQo+IC3CoMKgwqDC oMKgwqDCoGVyciA9IGNhbGNfY2xrX2RpdihjbGssIHJhdGUsICZwc2VsLCAmZXNlbCwgJnBkaXYs ICZkaXYpOwo+IC3CoMKgwqDCoMKgwqDCoGlmIChlcnIpCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHJldHVybiBlcnI7Cj4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IGNsa19wc2MgKnBz YyA9IHRvX2Nsa19wc2MoaHcpOwo+ICvCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIGxvbmcgcmF0ZSA9 IDA7Cj4gK8KgwqDCoMKgwqDCoMKgdTMyIHZhbCA9IF9fcmF3X3JlYWRsKHBzYy0+cmVnKTsKPiAr wqDCoMKgwqDCoMKgwqBpbnQgX19wZGl2ID0gKCh2YWwgPj4gRVA5M1hYX1NZU0NPTl9DTEtESVZf UERJVl9TSElGVCkgJiAweDAzKTsKPiArwqDCoMKgwqDCoMKgwqBpbnQgX19kaXYgPSB2YWwgJiAw eDdmOwo+IMKgCj4gLcKgwqDCoMKgwqDCoMKgLyogQ2xlYXIgdGhlIGVzZWwsIHBzZWwsIHBkaXYg YW5kIGRpdiBiaXRzICovCj4gLcKgwqDCoMKgwqDCoMKgdmFsID0gX19yYXdfcmVhZGwoY2xrLT5l bmFibGVfcmVnKTsKPiAtwqDCoMKgwqDCoMKgwqB2YWwgJj0gfjB4N2ZmZjsKPiArwqDCoMKgwqDC oMKgwqBpZiAoX19kaXYgPiAwKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByYXRl ID0gKHBhcmVudF9yYXRlICogMikgLyAoKF9fcGRpdiArIDMpICogX19kaXYpOwo+IMKgCj4gLcKg wqDCoMKgwqDCoMKgLyogU2V0IHRoZSBuZXcgZXNlbCwgcHNlbCwgcGRpdiBhbmQgZGl2IGJpdHMg Zm9yIHRoZSBuZXcgY2xvY2sgcmF0ZSAqLwo+IC3CoMKgwqDCoMKgwqDCoHZhbCB8PSAoZXNlbCA/ IEVQOTNYWF9TWVNDT05fQ0xLRElWX0VTRUwgOiAwKSB8Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoChwc2VsID8gRVA5M1hYX1NZU0NPTl9DTEtESVZfUFNFTCA6IDApIHwKPiAtwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKHBkaXYgPDwgRVA5M1hYX1NZU0NPTl9DTEtESVZf UERJVl9TSElGVCkgfCBkaXY7Cj4gLcKgwqDCoMKgwqDCoMKgZXA5M3h4X3N5c2Nvbl9zd2xvY2tl ZF93cml0ZSh2YWwsIGNsay0+ZW5hYmxlX3JlZyk7Cj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7 Cj4gK8KgwqDCoMKgwqDCoMKgcmV0dXJuIHJhdGU7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIGludCBz ZXRfaTJzX3NjbGtfcmF0ZShzdHJ1Y3QgY2xrICpjbGssIHVuc2lnbmVkIGxvbmcgcmF0ZSkKPiAr c3RhdGljIGludCBlcDkzeHhfZGRpdl9zZXRfcmF0ZShzdHJ1Y3QgY2xrX2h3ICpodywgdW5zaWdu ZWQgbG9uZyByYXRlLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIGxvbmcgcGFyZW50X3JhdGUpCj4gwqB7Cj4g LcKgwqDCoMKgwqDCoMKgdW5zaWduZWQgdmFsID0gX19yYXdfcmVhZGwoY2xrLT5lbmFibGVfcmVn KTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgaWYgKHJhdGUgPT0gY2xrX2kyc19tY2xrLnJhdGUgLyAy KQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBlcDkzeHhfc3lzY29uX3N3bG9ja2Vk X3dyaXRlKHZhbCAmIH5FUDkzWFhfSTJTQ0xLRElWX1NESVYsIAo+IC3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBjbGstPmVuYWJsZV9yZWcpOwo+IC3CoMKgwqDCoMKgwqDCoGVsc2UgaWYg KHJhdGUgPT0gY2xrX2kyc19tY2xrLnJhdGUgLyA0KQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBlcDkzeHhfc3lzY29uX3N3bG9ja2VkX3dyaXRlKHZhbCB8IEVQOTNYWF9JMlNDTEtE SVZfU0RJViwgCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNsay0+ZW5hYmxlX3Jl Zyk7Cj4gLcKgwqDCoMKgwqDCoMKgZWxzZQo+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBjbGtfcHNj ICpwc2MgPSB0b19jbGtfcHNjKGh3KTsKPiArwqDCoMKgwqDCoMKgwqBpbnQgcGRpdiA9IDAsIGRp diA9IDA7Cj4gK8KgwqDCoMKgwqDCoMKgdW5zaWduZWQgbG9uZyBiZXN0X3JhdGUgPSAwLCBhY3R1 YWxfcmF0ZSwgbWNsa19yYXRlLCByYXRlX2VyciA9IC0xOwo+ICvCoMKgwqDCoMKgwqDCoGludCBm b3VuZCA9IDAsIF9fZGl2ID0gMCwgX19wZGl2ID0gMDsKPiArwqDCoMKgwqDCoMKgwqB1MzIgdmFs ID0gX19yYXdfcmVhZGwocHNjLT5yZWcpOwo+ICsKPiArwqDCoMKgwqDCoMKgwqBtY2xrX3JhdGUg PSBwYXJlbnRfcmF0ZSAqIDI7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoGZvciAoX19wZGl2ID0gNDsg X19wZGl2IDw9IDY7IF9fcGRpdisrKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oF9fZGl2ID0gbWNsa19yYXRlIC8gKHJhdGUgKiBfX3BkaXYpOwo+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBpZiAoX19kaXYgPCAyIHx8IF9fZGl2ID4gMTI3KQo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY29udGludWU7Cj4gKwo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBhY3R1YWxfcmF0ZSA9IG1jbGtfcmF0ZSAvIChfX3Bk aXYgKiBfX2Rpdik7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoIWZv dW5kIHx8IGFicyhhY3R1YWxfcmF0ZSAtIHJhdGUpIDwgcmF0ZV9lcnIpIHsKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHBkaXYgPSBfX3BkaXYgLSAzOwo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGl2ID0gX19k aXY7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBiZXN0 X3JhdGUgPSBhY3R1YWxfcmF0ZTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHJhdGVfZXJyID0gYWJzKGFjdHVhbF9yYXRlIC0gcmF0ZSk7Cj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmb3VuZCA9IDE7Cj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiArwqDCoMKgwqDCoMKgwqB9Cj4gKwo+ICvC oMKgwqDCoMKgwqDCoGlmICghZm91bmQpCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqByZXR1cm4gLUVJTlZBTDsKPiDCoAo+IC3CoMKgwqDCoMKgwqDCoGNsa19pMnNfc2Nsay5yYXRl ID0gcmF0ZTsKPiArwqDCoMKgwqDCoMKgwqAvKiBDbGVhciBvbGQgZGl2aWRlcnMgKi8KPiArwqDC oMKgwqDCoMKgwqB2YWwgJj0gfjB4MzdmOwo+ICsKPiArwqDCoMKgwqDCoMKgwqAvKiBTZXQgdGhl IG5ldyBwZGl2IGFuZCBkaXYgYml0cyBmb3IgdGhlIG5ldyBjbG9jayByYXRlICovCj4gK8KgwqDC oMKgwqDCoMKgdmFsIHw9IChwZGl2IDw8IEVQOTNYWF9TWVNDT05fQ0xLRElWX1BESVZfU0hJRlQp IHwgZGl2Owo+ICsKPiArwqDCoMKgwqDCoMKgwqBlcDkzeHhfc3lzY29uX3N3bG9ja2VkX3dyaXRl KHZhbCwgcHNjLT5yZWcpOwo+ICsKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4g wqAKPiAtc3RhdGljIGludCBzZXRfaTJzX2xyY2xrX3JhdGUoc3RydWN0IGNsayAqY2xrLCB1bnNp Z25lZCBsb25nIHJhdGUpCj4gLXsKPiAtwqDCoMKgwqDCoMKgwqB1bnNpZ25lZCB2YWwgPSBfX3Jh d19yZWFkbChjbGstPmVuYWJsZV9yZWcpICYgCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoH5FUDkzWFhfSTJTQ0xLRElWX0xSRElWX01BU0s7Cj4gLcKgwqDCoMKgwqDCoMKgCj4gLcKg wqDCoMKgwqDCoMKgaWYgKHJhdGUgPT0gY2xrX2kyc19zY2xrLnJhdGUgLyAzMikKPiAtwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZXA5M3h4X3N5c2Nvbl9zd2xvY2tlZF93cml0ZSh2YWwg fCBFUDkzWFhfSTJTQ0xLRElWX0xSRElWMzIsCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGNsay0+ZW5hYmxlX3JlZyk7Cj4gLcKgwqDCoMKgwqDCoMKgZWxzZSBpZiAocmF0ZSA9PSBj bGtfaTJzX3NjbGsucmF0ZSAvIDY0KQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBl cDkzeHhfc3lzY29uX3N3bG9ja2VkX3dyaXRlKHZhbCB8IEVQOTNYWF9JMlNDTEtESVZfTFJESVY2 NCwKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY2xrLT5lbmFibGVfcmVnKTsKPiAt wqDCoMKgwqDCoMKgwqBlbHNlIGlmIChyYXRlID09IGNsa19pMnNfc2Nsay5yYXRlIC8gMTI4KQo+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBlcDkzeHhfc3lzY29uX3N3bG9ja2VkX3dy aXRlKHZhbCB8IEVQOTNYWF9JMlNDTEtESVZfTFJESVYxMjgsCj4gLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGNsay0+ZW5hYmxlX3JlZyk7Cj4gLcKgwqDCoMKgwqDCoMKgZWxzZQo+IC3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gLUVJTlZBTDsKPiArc3RhdGljIGNv bnN0IHN0cnVjdCBjbGtfb3BzIGNsa19kZGl2X29wcyA9IHsKPiArwqDCoMKgwqDCoMKgwqAuZW5h YmxlID0gZXA5M3h4X2Nsa19lbmFibGUsCj4gK8KgwqDCoMKgwqDCoMKgLmRpc2FibGUgPSBlcDkz eHhfY2xrX2Rpc2FibGUsCj4gK8KgwqDCoMKgwqDCoMKgLmlzX2VuYWJsZWQgPSBlcDkzeHhfY2xr X2lzX2VuYWJsZWQsCj4gK8KgwqDCoMKgwqDCoMKgLmdldF9wYXJlbnQgPSBlcDkzeHhfbXV4X2dl dF9wYXJlbnQsCj4gK8KgwqDCoMKgwqDCoMKgLnNldF9wYXJlbnQgPSBlcDkzeHhfbXV4X3NldF9w YXJlbnRfbG9jaywKPiArwqDCoMKgwqDCoMKgwqAuZGV0ZXJtaW5lX3JhdGUgPSBlcDkzeHhfbXV4 X2RldGVybWluZV9yYXRlLAo+ICvCoMKgwqDCoMKgwqDCoC5yZWNhbGNfcmF0ZSA9IGVwOTN4eF9k ZGl2X3JlY2FsY19yYXRlLAo+ICvCoMKgwqDCoMKgwqDCoC5zZXRfcmF0ZSA9IGVwOTN4eF9kZGl2 X3NldF9yYXRlLAo+ICt9Owo+IMKgCj4gLcKgwqDCoMKgwqDCoMKgY2xrX2kyc19scmNsay5yYXRl ID0gcmF0ZTsKPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiArc3RhdGljIHN0cnVjdCBjbGtf aHcgKmNsa19od19yZWdpc3Rlcl9kZGl2KGNvbnN0IGNoYXIgKm5hbWUsCj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHZvaWQgX19pb21lbSAqcmVnLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB1OCBiaXRfaWR4KQo+ICt7Cj4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IGNsa19pbml0X2RhdGEg aW5pdDsKPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgY2xrX3BzYyAqcHNjOwo+ICvCoMKgwqDCoMKg wqDCoHN0cnVjdCBjbGsgKmNsazsKPiArCj4gK8KgwqDCoMKgwqDCoMKgcHNjID0ga3phbGxvYyhz aXplb2YoKnBzYyksIEdGUF9LRVJORUwpOwo+ICvCoMKgwqDCoMKgwqDCoGlmICghcHNjKQo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPiAr Cj4gK8KgwqDCoMKgwqDCoMKgaW5pdC5uYW1lID0gbmFtZTsKPiArwqDCoMKgwqDCoMKgwqBpbml0 Lm9wcyA9ICZjbGtfZGRpdl9vcHM7Cj4gK8KgwqDCoMKgwqDCoMKgaW5pdC5mbGFncyA9IDA7Cj4g K8KgwqDCoMKgwqDCoMKgaW5pdC5wYXJlbnRfbmFtZXMgPSBtdXhfcGFyZW50czsKPiArwqDCoMKg wqDCoMKgwqBpbml0Lm51bV9wYXJlbnRzID0gQVJSQVlfU0laRShtdXhfcGFyZW50cyk7Cj4gKwo+ ICvCoMKgwqDCoMKgwqDCoHBzYy0+cmVnID0gcmVnOwo+ICvCoMKgwqDCoMKgwqDCoHBzYy0+Yml0 X2lkeCA9IGJpdF9pZHg7Cj4gK8KgwqDCoMKgwqDCoMKgcHNjLT5sb2NrID0gJmNsa19sb2NrOwo+ ICvCoMKgwqDCoMKgwqDCoHBzYy0+aHcuaW5pdCA9ICZpbml0Owo+ICsKPiArwqDCoMKgwqDCoMKg wqBjbGsgPSBjbGtfcmVnaXN0ZXIoTlVMTCwgJnBzYy0+aHcpOwo+ICvCoMKgwqDCoMKgwqDCoGlm IChJU19FUlIoY2xrKSkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKga2ZyZWUocHNj KTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgcmV0dXJuICZwc2MtPmh3Owo+IMKgfQo+IMKgCj4gLWlu dCBjbGtfc2V0X3JhdGUoc3RydWN0IGNsayAqY2xrLCB1bnNpZ25lZCBsb25nIHJhdGUpCj4gK3N0 YXRpYyB1bnNpZ25lZCBsb25nIGVwOTN4eF9kaXZfcmVjYWxjX3JhdGUoc3RydWN0IGNsa19odyAq aHcsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBsb25nIHBhcmVudF9y YXRlKQo+IMKgewo+IC3CoMKgwqDCoMKgwqDCoGlmIChjbGstPnNldF9yYXRlKQo+IC3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gY2xrLT5zZXRfcmF0ZShjbGssIHJhdGUpOwo+ ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBjbGtfcHNjICpwc2MgPSB0b19jbGtfcHNjKGh3KTsKPiAr wqDCoMKgwqDCoMKgwqB1MzIgdmFsID0gX19yYXdfcmVhZGwocHNjLT5yZWcpOwo+ICvCoMKgwqDC oMKgwqDCoHU4IGluZGV4ID0gKHZhbCAmIHBzYy0+bWFzaykgPj4gcHNjLT5zaGlmdDsKPiArCj4g K8KgwqDCoMKgwqDCoMKgaWYgKGluZGV4ID4gcHNjLT5udW1fZGl2KQo+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoAo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAt RUlOVkFMOwo+ICvCoMKgwqDCoMKgwqDCoHJldHVybiBESVZfUk9VTkRfVVBfVUxMKHBhcmVudF9y YXRlLCBwc2MtPmRpdltpbmRleF0pOwo+IMKgfQo+IC1FWFBPUlRfU1lNQk9MKGNsa19zZXRfcmF0 ZSk7Cj4gwqAKPiAtbG9uZyBjbGtfcm91bmRfcmF0ZShzdHJ1Y3QgY2xrICpjbGssIHVuc2lnbmVk IGxvbmcgcmF0ZSkKPiArc3RhdGljIGxvbmcgZXA5M3h4X2Rpdl9yb3VuZF9yYXRlKHN0cnVjdCBj bGtfaHcgKmh3LCB1bnNpZ25lZCBsb25nIHJhdGUsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBsb25n ICpwYXJlbnRfcmF0ZSkKPiDCoHsKPiAtwqDCoMKgwqDCoMKgwqBXQVJOX09OKGNsayk7Cj4gLcKg wqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IGNsa19wc2MgKnBz YyA9IHRvX2Nsa19wc2MoaHcpOwo+ICvCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIGxvbmcgYmVzdCA9 IDAsIG5vdywgbWF4ZGl2Owo+ICvCoMKgwqDCoMKgwqDCoGludCBpOwo+ICsKPiArwqDCoMKgwqDC oMKgwqBtYXhkaXYgPSBwc2MtPmRpdltwc2MtPm51bV9kaXYgLSAxXTsKPiArCj4gK8KgwqDCoMKg wqDCoMKgZm9yIChpID0gMDsgaSA8IHBzYy0+bnVtX2RpdjsgaSsrKSB7Cj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGlmICgocmF0ZSAqIHBzYy0+ZGl2W2ldKSA9PSAqcGFyZW50X3Jh dGUpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1 cm4gRElWX1JPVU5EX1VQX1VMTCgodTY0KSpwYXJlbnRfcmF0ZSwgcHNjLT5kaXZbaV0pOwo+ICsK PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbm93ID0gRElWX1JPVU5EX1VQX1VMTCgo dTY0KSpwYXJlbnRfcmF0ZSwgcHNjLT5kaXZbaV0pOwo+ICsKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgaWYgKF9pc19iZXN0KHJhdGUsIG5vdywgYmVzdCkpCj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBiZXN0ID0gbm93Owo+ICvCoMKgwqDC oMKgwqDCoH0KPiArCj4gK8KgwqDCoMKgwqDCoMKgaWYgKCFiZXN0KQo+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBiZXN0ID0gRElWX1JPVU5EX1VQX1VMTCgqcGFyZW50X3JhdGUsIG1h eGRpdik7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoHJldHVybiBiZXN0Owo+IMKgfQo+IC1FWFBPUlRf U1lNQk9MKGNsa19yb3VuZF9yYXRlKTsKPiDCoAo+IC1pbnQgY2xrX3NldF9wYXJlbnQoc3RydWN0 IGNsayAqY2xrLCBzdHJ1Y3QgY2xrICpwYXJlbnQpCj4gK3N0YXRpYyBpbnQgZXA5M3h4X2Rpdl9z ZXRfcmF0ZShzdHJ1Y3QgY2xrX2h3ICpodywgdW5zaWduZWQgbG9uZyByYXRlLAo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVuc2ln bmVkIGxvbmcgcGFyZW50X3JhdGUpCj4gwqB7Cj4gLcKgwqDCoMKgwqDCoMKgV0FSTl9PTihjbGsp Owo+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBjbGtfcHNjICpwc2MgPSB0b19jbGtfcHNjKGh3KTsK PiArwqDCoMKgwqDCoMKgwqB1MzIgdmFsID0gX19yYXdfcmVhZGwocHNjLT5yZWcpICYgfnBzYy0+ bWFzazsKPiArwqDCoMKgwqDCoMKgwqBpbnQgaTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgZm9yIChp ID0gMDsgaSA8IHBzYy0+bnVtX2RpdjsgaSsrKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBpZiAocmF0ZSA9PSBwYXJlbnRfcmF0ZSAvIHBzYy0+ZGl2W2ldKSB7Cj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB2YWwgfD0gaSA8PCBwc2MtPnNo aWZ0Owo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJl YWs7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiArCj4gK8KgwqDCoMKgwqDC oMKgaWYgKGkgPT0gcHNjLT5udW1fZGl2KQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqByZXR1cm4gLUVJTlZBTDsKPiArCj4gK8KgwqDCoMKgwqDCoMKgZXA5M3h4X3N5c2Nvbl9zd2xv Y2tlZF93cml0ZSh2YWwsIHBzYy0+cmVnKTsKPiArCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiAw Owo+IMKgfQo+IC1FWFBPUlRfU1lNQk9MKGNsa19zZXRfcGFyZW50KTsKPiDCoAo+IC1zdHJ1Y3Qg Y2xrICpjbGtfZ2V0X3BhcmVudChzdHJ1Y3QgY2xrICpjbGspCj4gK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgY2xrX29wcyBlcDkzeHhfZGl2X29wcyA9IHsKPiArwqDCoMKgwqDCoMKgwqAuZW5hYmxlID0g ZXA5M3h4X2Nsa19lbmFibGUsCj4gK8KgwqDCoMKgwqDCoMKgLmRpc2FibGUgPSBlcDkzeHhfY2xr X2Rpc2FibGUsCj4gK8KgwqDCoMKgwqDCoMKgLmlzX2VuYWJsZWQgPSBlcDkzeHhfY2xrX2lzX2Vu YWJsZWQsCj4gK8KgwqDCoMKgwqDCoMKgLnJlY2FsY19yYXRlID0gZXA5M3h4X2Rpdl9yZWNhbGNf cmF0ZSwKPiArwqDCoMKgwqDCoMKgwqAucm91bmRfcmF0ZSA9IGVwOTN4eF9kaXZfcm91bmRfcmF0 ZSwKPiArwqDCoMKgwqDCoMKgwqAuc2V0X3JhdGUgPSBlcDkzeHhfZGl2X3NldF9yYXRlLAo+ICt9 Owo+ICsKPiArc3RhdGljIHN0cnVjdCBjbGtfaHcgKmNsa19od19yZWdpc3Rlcl9kaXYoY29uc3Qg Y2hhciAqbmFtZSwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uc3QgY2hhciAqcGFyZW50 X25hbWUsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHZvaWQgX19pb21lbSAqcmVnLAo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1OCBlbmFibGVfYml0LAo+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB1OCBzaGlmdCwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTggd2lkdGgsCj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNoYXIgKmNsa19kaXZpc29ycywKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgdTggbnVtX2RpdikKPiDCoHsKPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4g Y2xrLT5wYXJlbnQ7Cj4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IGNsa19pbml0X2RhdGEgaW5pdDsK PiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgY2xrX3BzYyAqcHNjOwo+ICvCoMKgwqDCoMKgwqDCoHN0 cnVjdCBjbGsgKmNsazsKPiArCj4gK8KgwqDCoMKgwqDCoMKgcHNjID0ga3phbGxvYyhzaXplb2Yo KnBzYyksIEdGUF9LRVJORUwpOwo+ICvCoMKgwqDCoMKgwqDCoGlmICghcHNjKQo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPiArCj4gK8Kg wqDCoMKgwqDCoMKgaW5pdC5uYW1lID0gbmFtZTsKPiArwqDCoMKgwqDCoMKgwqBpbml0Lm9wcyA9 ICZlcDkzeHhfZGl2X29wczsKPiArwqDCoMKgwqDCoMKgwqBpbml0LmZsYWdzID0gMDsKPiArwqDC oMKgwqDCoMKgwqBpbml0LnBhcmVudF9uYW1lcyA9IChwYXJlbnRfbmFtZSA/ICZwYXJlbnRfbmFt ZSA6IE5VTEwpOwo+ICvCoMKgwqDCoMKgwqDCoGluaXQubnVtX3BhcmVudHMgPSAxOwo+ICsKPiAr wqDCoMKgwqDCoMKgwqBwc2MtPnJlZyA9IHJlZzsKPiArwqDCoMKgwqDCoMKgwqBwc2MtPmJpdF9p ZHggPSBlbmFibGVfYml0Owo+ICvCoMKgwqDCoMKgwqDCoHBzYy0+bWFzayA9IEdFTk1BU0soc2hp ZnQgKyB3aWR0aCAtIDEsIHNoaWZ0KTsKPiArwqDCoMKgwqDCoMKgwqBwc2MtPnNoaWZ0ID0gc2hp ZnQ7Cj4gK8KgwqDCoMKgwqDCoMKgcHNjLT5kaXYgPSBjbGtfZGl2aXNvcnM7Cj4gK8KgwqDCoMKg wqDCoMKgcHNjLT5udW1fZGl2ID0gbnVtX2RpdjsKPiArwqDCoMKgwqDCoMKgwqBwc2MtPmxvY2sg PSAmY2xrX2xvY2s7Cj4gK8KgwqDCoMKgwqDCoMKgcHNjLT5ody5pbml0ID0gJmluaXQ7Cj4gKwo+ ICvCoMKgwqDCoMKgwqDCoGNsayA9IGNsa19yZWdpc3RlcihOVUxMLCAmcHNjLT5odyk7Cj4gK8Kg wqDCoMKgwqDCoMKgaWYgKElTX0VSUihjbGspKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBrZnJlZShwc2MpOwo+ICsKPiArwqDCoMKgwqDCoMKgwqByZXR1cm4gJnBzYy0+aHc7Cj4g wqB9Cj4gLUVYUE9SVF9TWU1CT0woY2xrX2dldF9wYXJlbnQpOwo+IMKgCj4gK3N0cnVjdCBlcDkz eHhfZ2F0ZSB7Cj4gK8KgwqDCoMKgwqDCoMKgdW5zaWduZWQgaW50IGJpdDsKPiArwqDCoMKgwqDC oMKgwqBjb25zdCBjaGFyICpkZXZfaWQ7Cj4gK8KgwqDCoMKgwqDCoMKgY29uc3QgY2hhciAqY29u X2lkOwo+ICt9Owo+IMKgCj4gLXN0YXRpYyBjaGFyIGZjbGtfZGl2aXNvcnNbXSA9IHsgMSwgMiwg NCwgOCwgMTYsIDEsIDEsIDEgfTsKPiAtc3RhdGljIGNoYXIgaGNsa19kaXZpc29yc1tdID0geyAx LCAyLCA0LCA1LCA2LCA4LCAxNiwgMzIgfTsKPiAtc3RhdGljIGNoYXIgcGNsa19kaXZpc29yc1td ID0geyAxLCAyLCA0LCA4IH07Cj4gK3N0YXRpYyBzdHJ1Y3QgZXA5M3h4X2dhdGUgZXA5M3h4X3Vh cnRzW10gPSB7Cj4gK8KgwqDCoMKgwqDCoMKge0VQOTNYWF9TWVNDT05fREVWQ0ZHX1UxRU4sICJh cGI6dWFydDEiLCBOVUxMfSwKPiArwqDCoMKgwqDCoMKgwqB7RVA5M1hYX1NZU0NPTl9ERVZDRkdf VTJFTiwgImFwYjp1YXJ0MiIsIE5VTEx9LAo+ICvCoMKgwqDCoMKgwqDCoHtFUDkzWFhfU1lTQ09O X0RFVkNGR19VM0VOLCAiYXBiOnVhcnQzIiwgTlVMTH0sCj4gK307Cj4gwqAKPiAtLyoKPiAtICog UExMIHJhdGUgPSAxNC43NDU2IE1IeiAqIChYMUZCRCArIDEpICogKFgyRkJEICsgMSkgLyAoWDJJ UEQgKyAxKSAvIDJeUFMKPiAtICovCj4gLXN0YXRpYyB1bnNpZ25lZCBsb25nIGNhbGNfcGxsX3Jh dGUodTMyIGNvbmZpZ193b3JkKQo+ICtzdGF0aWMgdm9pZCBfX2luaXQgZXA5M3h4X3VhcnRfY2xv Y2tfaW5pdCh2b2lkKQo+IMKgewo+IC3CoMKgwqDCoMKgwqDCoHVuc2lnbmVkIGxvbmcgbG9uZyBy YXRlOwo+IC3CoMKgwqDCoMKgwqDCoGludCBpOwo+ICvCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIGlu dCBpOwo+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBjbGtfaHcgKmh3Owo+ICvCoMKgwqDCoMKgwqDC oHUzMiB2YWx1ZTsKPiArwqDCoMKgwqDCoMKgwqB1bnNpZ25lZCBpbnQgY2xrX3VhcnRfZGl2Owo+ IMKgCj4gLcKgwqDCoMKgwqDCoMKgcmF0ZSA9IGNsa194dGFsaS5yYXRlOwo+IC3CoMKgwqDCoMKg wqDCoHJhdGUgKj0gKChjb25maWdfd29yZCA+PiAxMSkgJiAweDFmKSArIDE7wqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgLyogWDFGQkQgKi8KPiAtwqDCoMKgwqDCoMKgwqByYXRlICo9ICgo Y29uZmlnX3dvcmQgPj4gNSkgJiAweDNmKSArIDE7wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAvKiBYMkZCRCAqLwo+IC3CoMKgwqDCoMKgwqDCoGRvX2RpdihyYXRlLCAoY29uZmlnX3dv cmQgJiAweDFmKSArIDEpO8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBYMklQ RCAqLwo+IC3CoMKgwqDCoMKgwqDCoGZvciAoaSA9IDA7IGkgPCAoKGNvbmZpZ193b3JkID4+IDE2 KSAmIDMpOyBpKyspwqDCoMKgwqDCoMKgwqDCoMKgLyogUFMgKi8KPiAtwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgcmF0ZSA+Pj0gMTsKPiArwqDCoMKgwqDCoMKgwqB2YWx1ZSA9IF9fcmF3 X3JlYWRsKEVQOTNYWF9TWVNDT05fUFdSQ05UKTsKPiArwqDCoMKgwqDCoMKgwqBpZiAodmFsdWUg JiBFUDkzWFhfU1lTQ09OX1BXUkNOVF9VQVJUQkFVRCkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgY2xrX3VhcnRfZGl2ID0gMTsKPiArwqDCoMKgwqDCoMKgwqBlbHNlCj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNsa191YXJ0X2RpdiA9IDI7Cj4gwqAKPiAtwqDCoMKg wqDCoMKgwqByZXR1cm4gKHVuc2lnbmVkIGxvbmcpcmF0ZTsKPiArwqDCoMKgwqDCoMKgwqBodyA9 IGNsa19od19yZWdpc3Rlcl9maXhlZF9mYWN0b3IoTlVMTCwgInVhcnQiLCAieHRhbGkiLCAwLCAx LCBjbGtfdWFydF9kaXYpOwo+ICsKPiArwqDCoMKgwqDCoMKgwqAvKiBwYXJlbnRpbmcgdWFydCBn YXRlIGNsb2NrcyB0byB1YXJ0IGNsb2NrICovCj4gK8KgwqDCoMKgwqDCoMKgZm9yIChpID0gMDsg aSA8IEFSUkFZX1NJWkUoZXA5M3h4X3VhcnRzKTsgaSsrKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGh3ID0gZXA5M3h4X2Nsa19yZWdpc3Rlcl9nYXRlKGVwOTN4eF91YXJ0c1tp XS5kZXZfaWQsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCJ1YXJ0IiwKPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgRVA5M1hYX1NZU0NPTl9ERVZDRkcsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGVw OTN4eF91YXJ0c1tpXS5iaXQpOwo+ICsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg Y2xrX2h3X3JlZ2lzdGVyX2Nsa2RldihodywgTlVMTCwgZXA5M3h4X3VhcnRzW2ldLmRldl9pZCk7 Cj4gK8KgwqDCoMKgwqDCoMKgfQo+IMKgfQo+IMKgCj4gK3N0YXRpYyBzdHJ1Y3QgZXA5M3h4X2dh dGUgZXA5M3h4X2RtYXNbXSA9IHsKPiArwqDCoMKgwqDCoMKgwqB7RVA5M1hYX1NZU0NPTl9QV1JD TlRfRE1BX00yUDAsIE5VTEwsICJtMnAwIn0sCj4gK8KgwqDCoMKgwqDCoMKge0VQOTNYWF9TWVND T05fUFdSQ05UX0RNQV9NMlAxLCBOVUxMLCAibTJwMSJ9LAo+ICvCoMKgwqDCoMKgwqDCoHtFUDkz WFhfU1lTQ09OX1BXUkNOVF9ETUFfTTJQMiwgTlVMTCwgIm0ycDIifSwKPiArwqDCoMKgwqDCoMKg wqB7RVA5M1hYX1NZU0NPTl9QV1JDTlRfRE1BX00yUDMsIE5VTEwsICJtMnAzIn0sCj4gK8KgwqDC oMKgwqDCoMKge0VQOTNYWF9TWVNDT05fUFdSQ05UX0RNQV9NMlA0LCBOVUxMLCAibTJwNCJ9LAo+ ICvCoMKgwqDCoMKgwqDCoHtFUDkzWFhfU1lTQ09OX1BXUkNOVF9ETUFfTTJQNSwgTlVMTCwgIm0y cDUifSwKPiArwqDCoMKgwqDCoMKgwqB7RVA5M1hYX1NZU0NPTl9QV1JDTlRfRE1BX00yUDYsIE5V TEwsICJtMnA2In0sCj4gK8KgwqDCoMKgwqDCoMKge0VQOTNYWF9TWVNDT05fUFdSQ05UX0RNQV9N MlA3LCBOVUxMLCAibTJwNyJ9LAo+ICvCoMKgwqDCoMKgwqDCoHtFUDkzWFhfU1lTQ09OX1BXUkNO VF9ETUFfTTJQOCwgTlVMTCwgIm0ycDgifSwKPiArwqDCoMKgwqDCoMKgwqB7RVA5M1hYX1NZU0NP Tl9QV1JDTlRfRE1BX00yUDksIE5VTEwsICJtMnA5In0sCj4gK8KgwqDCoMKgwqDCoMKge0VQOTNY WF9TWVNDT05fUFdSQ05UX0RNQV9NMk0wLCBOVUxMLCAibTJtMCJ9LAo+ICvCoMKgwqDCoMKgwqDC oHtFUDkzWFhfU1lTQ09OX1BXUkNOVF9ETUFfTTJNMSwgTlVMTCwgIm0ybTEifSwKPiArfTsKPiAr Cj4gwqBzdGF0aWMgdm9pZCBfX2luaXQgZXA5M3h4X2RtYV9jbG9ja19pbml0KHZvaWQpCj4gwqB7 Cj4gLcKgwqDCoMKgwqDCoMKgY2xrX20ycDAucmF0ZSA9IGNsa19oLnJhdGU7Cj4gLcKgwqDCoMKg wqDCoMKgY2xrX20ycDEucmF0ZSA9IGNsa19oLnJhdGU7Cj4gLcKgwqDCoMKgwqDCoMKgY2xrX20y cDIucmF0ZSA9IGNsa19oLnJhdGU7Cj4gLcKgwqDCoMKgwqDCoMKgY2xrX20ycDMucmF0ZSA9IGNs a19oLnJhdGU7Cj4gLcKgwqDCoMKgwqDCoMKgY2xrX20ycDQucmF0ZSA9IGNsa19oLnJhdGU7Cj4g LcKgwqDCoMKgwqDCoMKgY2xrX20ycDUucmF0ZSA9IGNsa19oLnJhdGU7Cj4gLcKgwqDCoMKgwqDC oMKgY2xrX20ycDYucmF0ZSA9IGNsa19oLnJhdGU7Cj4gLcKgwqDCoMKgwqDCoMKgY2xrX20ycDcu cmF0ZSA9IGNsa19oLnJhdGU7Cj4gLcKgwqDCoMKgwqDCoMKgY2xrX20ycDgucmF0ZSA9IGNsa19o LnJhdGU7Cj4gLcKgwqDCoMKgwqDCoMKgY2xrX20ycDkucmF0ZSA9IGNsa19oLnJhdGU7Cj4gLcKg wqDCoMKgwqDCoMKgY2xrX20ybTAucmF0ZSA9IGNsa19oLnJhdGU7Cj4gLcKgwqDCoMKgwqDCoMKg Y2xrX20ybTEucmF0ZSA9IGNsa19oLnJhdGU7Cj4gK8KgwqDCoMKgwqDCoMKgdW5zaWduZWQgaW50 IGk7Cj4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IGNsa19odyAqaHc7Cj4gK8KgwqDCoMKgwqDCoMKg aW50IHJldDsKPiArCj4gK8KgwqDCoMKgwqDCoMKgZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUo ZXA5M3h4X2RtYXMpOyBpKyspIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaHcg PSBjbGtfaHdfcmVnaXN0ZXJfZ2F0ZShOVUxMLCBlcDkzeHhfZG1hc1tpXS5jb25faWQsCj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCJoY2xrIiwgMCwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgRVA5 M1hYX1NZU0NPTl9QV1JDTlQsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGVwOTN4eF9kbWFzW2ld LmJpdCwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgMCwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg JmNsa19sb2NrKTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldCA9IGNs a19od19yZWdpc3Rlcl9jbGtkZXYoaHcsIGVwOTN4eF9kbWFzW2ldLmNvbl9pZCwgTlVMTCk7Cj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChyZXQpCj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwcl9lcnIoIiVzOiBmYWlsZWQgdG8gcmVn aXN0ZXIgbG9va3VwICVzXG4iLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF9fZnVuY19fLCBlcDkzeHhfZG1hc1tpXS5jb25faWQp Owo+ICvCoMKgwqDCoMKgwqDCoH0KPiDCoH0KPiDCoAo+IMKgc3RhdGljIGludCBfX2luaXQgZXA5 M3h4X2Nsb2NrX2luaXQodm9pZCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgdTMyIHZhbHVlOwo+ ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBjbGtfaHcgKmh3Owo+ICvCoMKgwqDCoMKgwqDCoHVuc2ln bmVkIGxvbmcgY2xrX3BsbDFfcmF0ZTsKPiArwqDCoMKgwqDCoMKgwqB1bnNpZ25lZCBsb25nIGNs a19mX3JhdGU7Cj4gK8KgwqDCoMKgwqDCoMKgdW5zaWduZWQgbG9uZyBjbGtfaF9yYXRlOwo+ICvC oMKgwqDCoMKgwqDCoHVuc2lnbmVkIGxvbmcgY2xrX3BfcmF0ZTsKPiArwqDCoMKgwqDCoMKgwqB1 bnNpZ25lZCBsb25nIGNsa19wbGwyX3JhdGU7Cj4gK8KgwqDCoMKgwqDCoMKgdW5zaWduZWQgaW50 IGNsa19mX2RpdjsKPiArwqDCoMKgwqDCoMKgwqB1bnNpZ25lZCBpbnQgY2xrX2hfZGl2Owo+ICvC oMKgwqDCoMKgwqDCoHVuc2lnbmVkIGludCBjbGtfcF9kaXY7Cj4gK8KgwqDCoMKgwqDCoMKgdW5z aWduZWQgaW50IGNsa191c2JfZGl2Owo+ICvCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIGxvbmcgY2xr X3NwaV9kaXY7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoGh3ID0gY2xrX2h3X3JlZ2lzdGVyX2ZpeGVk X3JhdGUoTlVMTCwgInh0YWxpIiwgTlVMTCwgMCwgRVA5M1hYX0VYVF9DTEtfUkFURSk7Cj4gK8Kg wqDCoMKgwqDCoMKgY2xrX2h3X3JlZ2lzdGVyX2Nsa2RldihodywgTlVMTCwgInh0YWxpIik7Cj4g wqAKPiDCoMKgwqDCoMKgwqDCoMKgLyogRGV0ZXJtaW5lIHRoZSBib290bG9hZGVyIGNvbmZpZ3Vy ZWQgcGxsMSByYXRlICovCj4gwqDCoMKgwqDCoMKgwqDCoHZhbHVlID0gX19yYXdfcmVhZGwoRVA5 M1hYX1NZU0NPTl9DTEtTRVQxKTsKPiDCoMKgwqDCoMKgwqDCoMKgaWYgKCEodmFsdWUgJiBFUDkz WFhfU1lTQ09OX0NMS1NFVDFfTkJZUDEpKQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBjbGtfcGxsMS5yYXRlID0gY2xrX3h0YWxpLnJhdGU7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGNsa19wbGwxX3JhdGUgPSBFUDkzWFhfRVhUX0NMS19SQVRFOwo+IMKgwqDCoMKg wqDCoMKgwqBlbHNlCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNsa19wbGwxLnJh dGUgPSBjYWxjX3BsbF9yYXRlKHZhbHVlKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgY2xrX3BsbDFfcmF0ZSA9IGNhbGNfcGxsX3JhdGUoRVA5M1hYX0VYVF9DTEtfUkFURSwgdmFs dWUpOwo+ICsKPiArwqDCoMKgwqDCoMKgwqBodyA9IGNsa19od19yZWdpc3Rlcl9maXhlZF9yYXRl KE5VTEwsICJwbGwxIiwgInh0YWxpIiwgMCwgY2xrX3BsbDFfcmF0ZSk7Cj4gK8KgwqDCoMKgwqDC oMKgY2xrX2h3X3JlZ2lzdGVyX2Nsa2RldihodywgTlVMTCwgInBsbDEiKTsKPiDCoAo+IMKgwqDC oMKgwqDCoMKgwqAvKiBJbml0aWFsaXplIHRoZSBwbGwxIGRlcml2ZWQgY2xvY2tzICovCj4gLcKg wqDCoMKgwqDCoMKgY2xrX2YucmF0ZSA9IGNsa19wbGwxLnJhdGUgLyBmY2xrX2Rpdmlzb3JzWyh2 YWx1ZSA+PiAyNSkgJiAweDddOwo+IC3CoMKgwqDCoMKgwqDCoGNsa19oLnJhdGUgPSBjbGtfcGxs MS5yYXRlIC8gaGNsa19kaXZpc29yc1sodmFsdWUgPj4gMjApICYgMHg3XTsKPiAtwqDCoMKgwqDC oMKgwqBjbGtfcC5yYXRlID0gY2xrX2gucmF0ZSAvIHBjbGtfZGl2aXNvcnNbKHZhbHVlID4+IDE4 KSAmIDB4M107Cj4gK8KgwqDCoMKgwqDCoMKgY2xrX2ZfZGl2ID0gZmNsa19kaXZpc29yc1sodmFs dWUgPj4gMjUpICYgMHg3XTsKPiArwqDCoMKgwqDCoMKgwqBjbGtfaF9kaXYgPSBoY2xrX2Rpdmlz b3JzWyh2YWx1ZSA+PiAyMCkgJiAweDddOwo+ICvCoMKgwqDCoMKgwqDCoGNsa19wX2RpdiA9IHBj bGtfZGl2aXNvcnNbKHZhbHVlID4+IDE4KSAmIDB4M107Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoGh3 ID0gY2xrX2h3X3JlZ2lzdGVyX2ZpeGVkX2ZhY3RvcihOVUxMLCAiZmNsayIsICJwbGwxIiwgMCwg MSwgY2xrX2ZfZGl2KTsKPiArwqDCoMKgwqDCoMKgwqBjbGtfZl9yYXRlID0gY2xrX2dldF9yYXRl KGh3LT5jbGspOwo+ICvCoMKgwqDCoMKgwqDCoGh3ID0gY2xrX2h3X3JlZ2lzdGVyX2ZpeGVkX2Zh Y3RvcihOVUxMLCAiaGNsayIsICJwbGwxIiwgMCwgMSwgY2xrX2hfZGl2KTsKPiArwqDCoMKgwqDC oMKgwqBjbGtfaF9yYXRlID0gY2xrX2dldF9yYXRlKGh3LT5jbGspOwo+ICvCoMKgwqDCoMKgwqDC oGh3ID0gY2xrX2h3X3JlZ2lzdGVyX2ZpeGVkX2ZhY3RvcihOVUxMLCAicGNsayIsICJoY2xrIiwg MCwgMSwgY2xrX3BfZGl2KTsKPiArwqDCoMKgwqDCoMKgwqBjbGtfcF9yYXRlID0gY2xrX2dldF9y YXRlKGh3LT5jbGspOwo+ICsKPiArwqDCoMKgwqDCoMKgwqBjbGtfaHdfcmVnaXN0ZXJfY2xrZGV2 KGh3LCAiYXBiX3BjbGsiLCBOVUxMKTsKPiArCj4gwqDCoMKgwqDCoMKgwqDCoGVwOTN4eF9kbWFf Y2xvY2tfaW5pdCgpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoC8qIERldGVybWluZSB0aGUgYm9v dGxvYWRlciBjb25maWd1cmVkIHBsbDIgcmF0ZSAqLwo+IMKgwqDCoMKgwqDCoMKgwqB2YWx1ZSA9 IF9fcmF3X3JlYWRsKEVQOTNYWF9TWVNDT05fQ0xLU0VUMik7Cj4gwqDCoMKgwqDCoMKgwqDCoGlm ICghKHZhbHVlICYgRVA5M1hYX1NZU0NPTl9DTEtTRVQyX05CWVAyKSkKPiAtwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgY2xrX3BsbDIucmF0ZSA9IGNsa194dGFsaS5yYXRlOwo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjbGtfcGxsMl9yYXRlID0gRVA5M1hYX0VYVF9DTEtf UkFURTsKPiDCoMKgwqDCoMKgwqDCoMKgZWxzZSBpZiAodmFsdWUgJiBFUDkzWFhfU1lTQ09OX0NM S1NFVDJfUExMMl9FTikKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2xrX3BsbDIu cmF0ZSA9IGNhbGNfcGxsX3JhdGUodmFsdWUpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBjbGtfcGxsMl9yYXRlID0gY2FsY19wbGxfcmF0ZShFUDkzWFhfRVhUX0NMS19SQVRFLCB2 YWx1ZSk7Cj4gwqDCoMKgwqDCoMKgwqDCoGVsc2UKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgY2xrX3BsbDIucmF0ZSA9IDA7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGNsa19wbGwyX3JhdGUgPSAwOwo+ICsKPiArwqDCoMKgwqDCoMKgwqBodyA9IGNsa19od19yZWdp c3Rlcl9maXhlZF9yYXRlKE5VTEwsICJwbGwyIiwgInh0YWxpIiwgMCwgY2xrX3BsbDJfcmF0ZSk7 Cj4gK8KgwqDCoMKgwqDCoMKgY2xrX2h3X3JlZ2lzdGVyX2Nsa2RldihodywgTlVMTCwgInBsbDIi KTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqAvKiBJbml0aWFsaXplIHRoZSBwbGwyIGRlcml2ZWQg Y2xvY2tzICovCj4gLcKgwqDCoMKgwqDCoMKgY2xrX3VzYl9ob3N0LnJhdGUgPSBjbGtfcGxsMi5y YXRlIC8gKCgodmFsdWUgPj4gMjgpICYgMHhmKSArIDEpOwo+ICsKPiArwqDCoMKgwqDCoMKgwqAv Kgo+ICvCoMKgwqDCoMKgwqDCoCAqIFRoZXNlIGZvdXIgYml0cyBzZXQgdGhlIGRpdmlkZSByYXRp byBiZXR3ZWVuIHRoZSBQTEwyCj4gK8KgwqDCoMKgwqDCoMKgICogb3V0cHV0IGFuZCB0aGUgVVNC IGNsb2NrLgo+ICvCoMKgwqDCoMKgwqDCoCAqIDAwMDAgLSBEaXZpZGUgYnkgMQo+ICvCoMKgwqDC oMKgwqDCoCAqIDAwMDEgLSBEaXZpZGUgYnkgMgo+ICvCoMKgwqDCoMKgwqDCoCAqIDAwMTAgLSBE aXZpZGUgYnkgMwo+ICvCoMKgwqDCoMKgwqDCoCAqIDAwMTEgLSBEaXZpZGUgYnkgNAo+ICvCoMKg wqDCoMKgwqDCoCAqIDAxMDAgLSBEaXZpZGUgYnkgNQo+ICvCoMKgwqDCoMKgwqDCoCAqIDAxMDEg LSBEaXZpZGUgYnkgNgo+ICvCoMKgwqDCoMKgwqDCoCAqIDAxMTAgLSBEaXZpZGUgYnkgNwo+ICvC oMKgwqDCoMKgwqDCoCAqIDAxMTEgLSBEaXZpZGUgYnkgOAo+ICvCoMKgwqDCoMKgwqDCoCAqIDEw MDAgLSBEaXZpZGUgYnkgOQo+ICvCoMKgwqDCoMKgwqDCoCAqIDEwMDEgLSBEaXZpZGUgYnkgMTAK PiArwqDCoMKgwqDCoMKgwqAgKiAxMDEwIC0gRGl2aWRlIGJ5IDExCj4gK8KgwqDCoMKgwqDCoMKg ICogMTAxMSAtIERpdmlkZSBieSAxMgo+ICvCoMKgwqDCoMKgwqDCoCAqIDExMDAgLSBEaXZpZGUg YnkgMTMKPiArwqDCoMKgwqDCoMKgwqAgKiAxMTAxIC0gRGl2aWRlIGJ5IDE0Cj4gK8KgwqDCoMKg wqDCoMKgICogMTExMCAtIERpdmlkZSBieSAxNQo+ICvCoMKgwqDCoMKgwqDCoCAqIDExMTEgLSBE aXZpZGUgYnkgMQo+ICvCoMKgwqDCoMKgwqDCoCAqIE9uIHBvd2VyLW9uLXJlc2V0IHRoZXNlIGJp dHMgYXJlIHJlc2V0IHRvIDAwMDBiLgo+ICvCoMKgwqDCoMKgwqDCoCAqLwo+ICsKPiArwqDCoMKg wqDCoMKgwqBjbGtfdXNiX2RpdiA9ICgoKHZhbHVlID4+IDI4KSAmIDB4ZikgKyAxKTsKPiArwqDC oMKgwqDCoMKgwqBodyA9IGNsa19od19yZWdpc3Rlcl9maXhlZF9mYWN0b3IoTlVMTCwgInVzYl9j bGsiLCAicGxsMiIsIDAsIDEsIGNsa191c2JfZGl2KTsKPiArwqDCoMKgwqDCoMKgwqBodyA9IGNs a19od19yZWdpc3Rlcl9nYXRlKE5VTEwsICJvaGNpLXBsYXRmb3JtIiwKPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAidXNiX2Ns ayIsIDAsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgRVA5M1hYX1NZU0NPTl9QV1JDTlQsCj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgRVA5M1hYX1NZU0NP Tl9QV1JDTlRfVVNIX0VOLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDAsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgJmNsa19sb2NrKTsKPiArwqDCoMKg wqDCoMKgwqBjbGtfaHdfcmVnaXN0ZXJfY2xrZGV2KGh3LCBOVUxMLCAib2hjaS1wbGF0Zm9ybSIp Owo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoC8qCj4gwqDCoMKgwqDCoMKgwqDCoCAqIEVQOTN4eCBT U1AgY2xvY2sgcmF0ZSB3YXMgZG91YmxlZCBpbiB2ZXJzaW9uIEUyLiBGb3IgbW9yZSBpbmZvcm1h dGlvbgo+IMKgwqDCoMKgwqDCoMKgwqAgKiBzZWU6Cj4gwqDCoMKgwqDCoMKgwqDCoCAqwqDCoMKg wqAgaHR0cDovL3d3dy5jaXJydXMuY29tL2VuL3B1YnMvYXBwTm90ZS9BTjI3M1JFVjQucGRmCj4g wqDCoMKgwqDCoMKgwqDCoCAqLwo+ICvCoMKgwqDCoMKgwqDCoGNsa19zcGlfZGl2ID0gMTsKPiDC oMKgwqDCoMKgwqDCoMKgaWYgKGVwOTN4eF9jaGlwX3JldmlzaW9uKCkgPCBFUDkzWFhfQ0hJUF9S RVZfRTIpCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNsa19zcGkucmF0ZSAvPSAy Owo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjbGtfc3BpX2RpdiA9IDI7Cj4gK8Kg wqDCoMKgwqDCoMKgaHcgPSBjbGtfaHdfcmVnaXN0ZXJfZml4ZWRfZmFjdG9yKE5VTEwsICJlcDkz eHgtc3BpLjAiLCAieHRhbGkiLCAwLCAxLCBjbGtfc3BpX2Rpdik7Cj4gK8KgwqDCoMKgwqDCoMKg Y2xrX2h3X3JlZ2lzdGVyX2Nsa2RldihodywgTlVMTCwgImVwOTN4eC1zcGkuMCIpOwo+ICsKPiAr wqDCoMKgwqDCoMKgwqAvKiBwd20gY2xvY2sgKi8KPiArwqDCoMKgwqDCoMKgwqBodyA9IGNsa19o d19yZWdpc3Rlcl9maXhlZF9mYWN0b3IoTlVMTCwgInB3bV9jbGsiLCAieHRhbGkiLCAwLCAxLCAx KTsKPiArwqDCoMKgwqDCoMKgwqBjbGtfaHdfcmVnaXN0ZXJfY2xrZGV2KGh3LCAicHdtX2NsayIs IE5VTEwpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoHByX2luZm8oIlBMTDEgcnVubmluZyBhdCAl bGQgTUh6LCBQTEwyIGF0ICVsZCBNSHpcbiIsCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGNsa19wbGwxLnJhdGUgLyAxMDAwMDAwLCBjbGtfcGxsMi5yYXRlIC8gMTAwMDAwMCk7Cj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNsa19wbGwxX3JhdGUgLyAxMDAwMDAwLCBj bGtfcGxsMl9yYXRlIC8gMTAwMDAwMCk7Cj4gwqDCoMKgwqDCoMKgwqDCoHByX2luZm8oIkZDTEsg JWxkIE1IeiwgSENMSyAlbGQgTUh6LCBQQ0xLICVsZCBNSHpcbiIsCj4gLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGNsa19mLnJhdGUgLyAxMDAwMDAwLCBjbGtfaC5yYXRlIC8gMTAwMDAw MCwKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2xrX3AucmF0ZSAvIDEwMDAwMDAp Owo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjbGtfZl9yYXRlIC8gMTAwMDAwMCwg Y2xrX2hfcmF0ZSAvIDEwMDAwMDAsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNs a19wX3JhdGUgLyAxMDAwMDAwKTsKPiArCj4gKwo+ICvCoMKgwqDCoMKgwqDCoGVwOTN4eF91YXJ0 X2Nsb2NrX2luaXQoKTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgLyogdG91Y2hzY3JlZW4vYWRjIGNs b2NrICovCj4gK8KgwqDCoMKgwqDCoMKgaHcgPSBjbGtfaHdfcmVnaXN0ZXJfZGl2KCJlcDkzeHgt YWRjIiwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAieHRhbGkiLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEVQOTNYWF9TWVNDT05fS0VZVENIQ0xLRElW LAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoEVQOTNYWF9TWVNDT05fS0VZVENIQ0xLRElWX1RTRU4sCj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgRVA5M1hY X1NZU0NPTl9LRVlUQ0hDTEtESVZfQURJViwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAxLAo+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGFkY19kaXZpc29y cywKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBBUlJBWV9TSVpFKGFkY19kaXZpc29ycykpOwo+ICsKPiArwqDCoMKgwqDCoMKg wqBjbGtfaHdfcmVnaXN0ZXJfY2xrZGV2KGh3LCBOVUxMLCAiZXA5M3h4LWFkYyIpOwo+ICsKPiAr wqDCoMKgwqDCoMKgwqAvKiBrZXlwYWQgY2xvY2sgKi8KPiArwqDCoMKgwqDCoMKgwqBodyA9IGNs a19od19yZWdpc3Rlcl9kaXYoImVwOTN4eC1rZXlwYWQiLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCJ4dGFsaSIsCj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgRVA5M1hYX1NZU0NPTl9LRVlUQ0hDTEtESVYsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgRVA5M1hYX1NZU0NPTl9LRVlU Q0hDTEtESVZfS0VOLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoEVQOTNYWF9TWVNDT05fS0VZVENIQ0xLRElWX0tESVYsCj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgMSwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBhZGNfZGl2aXNvcnMsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgQVJSQVlfU0laRShhZGNfZGl2 aXNvcnMpKTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgY2xrX2h3X3JlZ2lzdGVyX2Nsa2Rldihodywg TlVMTCwgImVwOTN4eC1rZXlwYWQiKTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgLyogT24gcmVzZXQg UERJViBhbmQgVkRJViBpcyBzZXQgdG8gemVybywgd2hpbGUgUERJViB6ZXJvCj4gK8KgwqDCoMKg wqDCoMKgICogbWVhbnMgY2xvY2sgZGlzYWJsZSwgVkRJViBzaG91bGRuJ3QgYmUgemVyby4KPiAr wqDCoMKgwqDCoMKgwqAgKiBTbyBpIHNldCBib3RoIGRpdmlkZXJzIHRvIG1pbmltdW0uCj4gK8Kg wqDCoMKgwqDCoMKgICovCj4gK8KgwqDCoMKgwqDCoMKgLyogRU5BIC0gRW5hYmxlIENMSyBkaXZp ZGVyLiAqLwo+ICvCoMKgwqDCoMKgwqDCoC8qIFBESVYgLSAwMCAtIERpc2FibGUgY2xvY2sgKi8K PiArwqDCoMKgwqDCoMKgwqAvKiBWRElWIC0gYXQgbGVhc3QgMiAqLwo+ICvCoMKgwqDCoMKgwqDC oC8qIENoZWNrIGFuZCBlbmFibGUgdmlkZW8gY2xrIHJlZ2lzdGVycyAqLwo+ICvCoMKgwqDCoMKg wqDCoHZhbHVlID0gX19yYXdfcmVhZGwoRVA5M1hYX1NZU0NPTl9WSURDTEtESVYpOwo+ICvCoMKg wqDCoMKgwqDCoHZhbHVlIHw9ICgxIDw8IEVQOTNYWF9TWVNDT05fQ0xLRElWX1BESVZfU0hJRlQp IHwgMjsKPiArwqDCoMKgwqDCoMKgwqBlcDkzeHhfc3lzY29uX3N3bG9ja2VkX3dyaXRlKHZhbHVl LCBFUDkzWFhfU1lTQ09OX1ZJRENMS0RJVik7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoC8qIGNoZWNr IGFuZCBlbmFibGUgaTJzIGNsayByZWdpc3RlcnMgKi8KPiArwqDCoMKgwqDCoMKgwqB2YWx1ZSA9 IF9fcmF3X3JlYWRsKEVQOTNYWF9TWVNDT05fSTJTQ0xLRElWKTsKPiArwqDCoMKgwqDCoMKgwqB2 YWx1ZSB8PSAoMSA8PCBFUDkzWFhfU1lTQ09OX0NMS0RJVl9QRElWX1NISUZUKSB8IDI7Cj4gK8Kg wqDCoMKgwqDCoMKgZXA5M3h4X3N5c2Nvbl9zd2xvY2tlZF93cml0ZSh2YWx1ZSwgRVA5M1hYX1NZ U0NPTl9JMlNDTEtESVYpOwo+ICsKPiArwqDCoMKgwqDCoMKgwqAvKiB2aWRlbyBjbGsgKi8KPiAr wqDCoMKgwqDCoMKgwqBodyA9IGNsa19od19yZWdpc3Rlcl9kZGl2KCJlcDkzeHgtZmIiLAo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoEVQOTNYWF9TWVNDT05fVklEQ0xLRElWLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEVQOTNYWF9TWVNDT05fQ0xLRElW X0VOQUJMRSk7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoGNsa19od19yZWdpc3Rlcl9jbGtkZXYoaHcs IE5VTEwsICJlcDkzeHgtZmIiKTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgLyogaTJzIGNsayAqLwo+ ICvCoMKgwqDCoMKgwqDCoGh3ID0gY2xrX2h3X3JlZ2lzdGVyX2RkaXYoIm1jbGsiLAo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oEVQOTNYWF9TWVNDT05fSTJTQ0xLRElWLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEVQOTNYWF9TWVNDT05fQ0xLRElWX0VO QUJMRSk7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoGNsa19od19yZWdpc3Rlcl9jbGtkZXYoaHcsICJt Y2xrIiwgImVwOTN4eC1pMnMiKTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgLyogaTJzIHNjbGsgKi8K PiArI2RlZmluZSBFUDkzWFhfSTJTQ0xLRElWX1NESVZfU0hJRlTCoMKgwqDCoDE2Cj4gKyNkZWZp bmUgRVA5M1hYX0kyU0NMS0RJVl9TRElWX1dJRFRIwqDCoMKgwqAxCj4gK8KgwqDCoMKgwqDCoMKg aHcgPSBjbGtfaHdfcmVnaXN0ZXJfZGl2KCJzY2xrIiwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAibWNsayIsCj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg RVA5M1hYX1NZU0NPTl9JMlNDTEtESVYsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgRVA5M1hYX1NZU0NPTl9JMlNDTEtESVZf U0VOQSwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBFUDkzWFhfSTJTQ0xLRElWX1NESVZfU0hJRlQsCj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgRVA5M1hY X0kyU0NMS0RJVl9TRElWX1dJRFRILAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNjbGtfZGl2aXNvcnMsCj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgQVJS QVlfU0laRShzY2xrX2Rpdmlzb3JzKSk7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoGNsa19od19yZWdp c3Rlcl9jbGtkZXYoaHcsICJzY2xrIiwgImVwOTN4eC1pMnMiKTsKPiArCj4gK8KgwqDCoMKgwqDC oMKgLyogaTJzIGxyY2xrICovCj4gKyNkZWZpbmUgRVA5M1hYX0kyU0NMS0RJVl9MUkRJVjMyX1NI SUZUwqAxNwo+ICsjZGVmaW5lIEVQOTNYWF9JMlNDTEtESVZfTFJESVYzMl9XSURUSMKgMwo+ICvC oMKgwqDCoMKgwqDCoGh3ID0gY2xrX2h3X3JlZ2lzdGVyX2RpdigibHJjbGsiLAo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCJz Y2xrIiwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBFUDkzWFhfU1lTQ09OX0kyU0NMS0RJViwKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBFUDkzWFhfU1lT Q09OX0kyU0NMS0RJVl9TRU5BLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEVQOTNYWF9JMlNDTEtESVZfTFJESVYzMl9TSElG VCwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBFUDkzWFhfSTJTQ0xLRElWX0xSRElWMzJfV0lEVEgsCj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbHJjbGtf ZGl2aXNvcnMsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgQVJSQVlfU0laRShscmNsa19kaXZpc29ycykpOwo+ICsKPiArwqDC oMKgwqDCoMKgwqBjbGtfaHdfcmVnaXN0ZXJfY2xrZGV2KGh3LCAibHJjbGsiLCAiZXA5M3h4LWky cyIpOwo+ICsKPiArwqDCoMKgwqDCoMKgwqAvKiBJckRhIGNsayB1c2VzIHNhbWUgcGF0dGVybiBi dXQgbm8gaW5pdCBjb2RlIHByZXNlbnRzIGluIG9yaWdpbmFsIGNsb2NrIGRyaXZlciAqLwo+IMKg Cj4gLcKgwqDCoMKgwqDCoMKgY2xrZGV2X2FkZF90YWJsZShjbG9ja3MsIEFSUkFZX1NJWkUoY2xv Y2tzKSk7Cj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+IMKgfQo+IMKgcG9zdGNvcmVfaW5p dGNhbGwoZXA5M3h4X2Nsb2NrX2luaXQpOwo+IGRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWVw OTN4eC9jb3JlLmMgYi9hcmNoL2FybS9tYWNoLWVwOTN4eC9jb3JlLmMKPiBpbmRleCA2ZmIxOWEz OTNmZDIuLmJiYjc5ZjI2MzMzMSAxMDA2NDQKPiAtLS0gYS9hcmNoL2FybS9tYWNoLWVwOTN4eC9j b3JlLmMKPiArKysgYi9hcmNoL2FybS9tYWNoLWVwOTN4eC9jb3JlLmMKPiBAQCAtMjE0LDcgKzIx NCw3IEBAIHN0YXRpYyBpbnQgZXA5M3h4X29oY2lfcG93ZXJfb24oc3RydWN0IHBsYXRmb3JtX2Rl dmljZSAqcGRldikKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqByZXR1cm4gUFRSX0VSUihlcDkzeHhfb2hjaV9ob3N0X2Nsb2NrKTsKPiDCoMKgwqDCoMKg wqDCoMKgfQo+IMKgCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIGNsa19lbmFibGUoZXA5M3h4X29o Y2lfaG9zdF9jbG9jayk7Cj4gK8KgwqDCoMKgwqDCoMKgcmV0dXJuIGNsa19wcmVwYXJlX2VuYWJs ZShlcDkzeHhfb2hjaV9ob3N0X2Nsb2NrKTsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIHZvaWQgZXA5 M3h4X29oY2lfcG93ZXJfb2ZmKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gZGlmZiAt LWdpdCBhL2FyY2gvYXJtL21hY2gtZXA5M3h4L3NvYy5oIGIvYXJjaC9hcm0vbWFjaC1lcDkzeHgv c29jLmgKPiBpbmRleCBmMmRhY2UxYzkxNTQuLjk0ZWY3ZjI3NWY5NCAxMDA2NDQKPiAtLS0gYS9h cmNoL2FybS9tYWNoLWVwOTN4eC9zb2MuaAo+ICsrKyBiL2FyY2gvYXJtL21hY2gtZXA5M3h4L3Nv Yy5oCj4gQEAgLTExMSwxOSArMTExLDE5IEBACj4gwqAjZGVmaW5lIEVQOTNYWF9TWVNDT05fUFdS Q05UwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEVQOTNYWF9TWVNDT05fUkVHKDB4MDQpCj4gwqAjZGVm aW5lIEVQOTNYWF9TWVNDT05fUFdSQ05UX0ZJUl9FTsKgwqDCoMKgKDE8PDMxKQo+IMKgI2RlZmlu ZSBFUDkzWFhfU1lTQ09OX1BXUkNOVF9VQVJUQkFVRMKgwqAoMTw8MjkpCj4gLSNkZWZpbmUgRVA5 M1hYX1NZU0NPTl9QV1JDTlRfVVNIX0VOwqDCoMKgwqAoMTw8MjgpCj4gLSNkZWZpbmUgRVA5M1hY X1NZU0NPTl9QV1JDTlRfRE1BX00yTTHCoMKgKDE8PDI3KQo+IC0jZGVmaW5lIEVQOTNYWF9TWVND T05fUFdSQ05UX0RNQV9NMk0wwqDCoCgxPDwyNikKPiAtI2RlZmluZSBFUDkzWFhfU1lTQ09OX1BX UkNOVF9ETUFfTTJQOMKgwqAoMTw8MjUpCj4gLSNkZWZpbmUgRVA5M1hYX1NZU0NPTl9QV1JDTlRf RE1BX00yUDnCoMKgKDE8PDI0KQo+IC0jZGVmaW5lIEVQOTNYWF9TWVNDT05fUFdSQ05UX0RNQV9N MlA2wqDCoCgxPDwyMykKPiAtI2RlZmluZSBFUDkzWFhfU1lTQ09OX1BXUkNOVF9ETUFfTTJQN8Kg wqAoMTw8MjIpCj4gLSNkZWZpbmUgRVA5M1hYX1NZU0NPTl9QV1JDTlRfRE1BX00yUDTCoMKgKDE8 PDIxKQo+IC0jZGVmaW5lIEVQOTNYWF9TWVNDT05fUFdSQ05UX0RNQV9NMlA1wqDCoCgxPDwyMCkK PiAtI2RlZmluZSBFUDkzWFhfU1lTQ09OX1BXUkNOVF9ETUFfTTJQMsKgwqAoMTw8MTkpCj4gLSNk ZWZpbmUgRVA5M1hYX1NZU0NPTl9QV1JDTlRfRE1BX00yUDPCoMKgKDE8PDE4KQo+IC0jZGVmaW5l IEVQOTNYWF9TWVNDT05fUFdSQ05UX0RNQV9NMlAwwqDCoCgxPDwxNykKPiAtI2RlZmluZSBFUDkz WFhfU1lTQ09OX1BXUkNOVF9ETUFfTTJQMcKgwqAoMTw8MTYpCj4gKyNkZWZpbmUgRVA5M1hYX1NZ U0NPTl9QV1JDTlRfVVNIX0VOwqDCoMKgwqAyOAo+ICsjZGVmaW5lIEVQOTNYWF9TWVNDT05fUFdS Q05UX0RNQV9NMk0xwqDCoDI3Cj4gKyNkZWZpbmUgRVA5M1hYX1NZU0NPTl9QV1JDTlRfRE1BX00y TTDCoMKgMjYKPiArI2RlZmluZSBFUDkzWFhfU1lTQ09OX1BXUkNOVF9ETUFfTTJQOMKgwqAyNQo+ ICsjZGVmaW5lIEVQOTNYWF9TWVNDT05fUFdSQ05UX0RNQV9NMlA5wqDCoDI0Cj4gKyNkZWZpbmUg RVA5M1hYX1NZU0NPTl9QV1JDTlRfRE1BX00yUDbCoMKgMjMKPiArI2RlZmluZSBFUDkzWFhfU1lT Q09OX1BXUkNOVF9ETUFfTTJQN8KgwqAyMgo+ICsjZGVmaW5lIEVQOTNYWF9TWVNDT05fUFdSQ05U X0RNQV9NMlA0wqDCoDIxCj4gKyNkZWZpbmUgRVA5M1hYX1NZU0NPTl9QV1JDTlRfRE1BX00yUDXC oMKgMjAKPiArI2RlZmluZSBFUDkzWFhfU1lTQ09OX1BXUkNOVF9ETUFfTTJQMsKgwqAxOQo+ICsj ZGVmaW5lIEVQOTNYWF9TWVNDT05fUFdSQ05UX0RNQV9NMlAzwqDCoDE4Cj4gKyNkZWZpbmUgRVA5 M1hYX1NZU0NPTl9QV1JDTlRfRE1BX00yUDDCoMKgMTcKPiArI2RlZmluZSBFUDkzWFhfU1lTQ09O X1BXUkNOVF9ETUFfTTJQMcKgwqAxNgo+IMKgI2RlZmluZSBFUDkzWFhfU1lTQ09OX0hBTFTCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoEVQOTNYWF9TWVNDT05fUkVHKDB4MDgpCj4gwqAjZGVmaW5l IEVQOTNYWF9TWVNDT05fU1RBTkRCWcKgwqDCoMKgwqDCoMKgwqDCoMKgRVA5M1hYX1NZU0NPTl9S RUcoMHgwYykKPiDCoCNkZWZpbmUgRVA5M1hYX1NZU0NPTl9DTEtTRVQxwqDCoMKgwqDCoMKgwqDC oMKgwqBFUDkzWFhfU1lTQ09OX1JFRygweDIwKQo+IEBAIC0xMzksMTMgKzEzOSwxMyBAQAo+IMKg I2RlZmluZSBFUDkzWFhfU1lTQ09OX0RFVkNGR19HT05LwqDCoMKgwqDCoMKgKDE8PDI3KQo+IMKg I2RlZmluZSBFUDkzWFhfU1lTQ09OX0RFVkNGR19UT05HwqDCoMKgwqDCoMKgKDE8PDI2KQo+IMKg I2RlZmluZSBFUDkzWFhfU1lTQ09OX0RFVkNGR19NT05HwqDCoMKgwqDCoMKgKDE8PDI1KQo+IC0j ZGVmaW5lIEVQOTNYWF9TWVNDT05fREVWQ0ZHX1UzRU7CoMKgwqDCoMKgwqAoMTw8MjQpCj4gKyNk ZWZpbmUgRVA5M1hYX1NZU0NPTl9ERVZDRkdfVTNFTsKgwqDCoMKgwqDCoDI0Cj4gwqAjZGVmaW5l IEVQOTNYWF9TWVNDT05fREVWQ0ZHX0NQRU5BwqDCoMKgwqDCoCgxPDwyMykKPiDCoCNkZWZpbmUg RVA5M1hYX1NZU0NPTl9ERVZDRkdfQTJPTkfCoMKgwqDCoMKgKDE8PDIyKQo+IMKgI2RlZmluZSBF UDkzWFhfU1lTQ09OX0RFVkNGR19BMU9OR8KgwqDCoMKgwqAoMTw8MjEpCj4gLSNkZWZpbmUgRVA5 M1hYX1NZU0NPTl9ERVZDRkdfVTJFTsKgwqDCoMKgwqDCoCgxPDwyMCkKPiArI2RlZmluZSBFUDkz WFhfU1lTQ09OX0RFVkNGR19VMkVOwqDCoMKgwqDCoMKgMjAKPiDCoCNkZWZpbmUgRVA5M1hYX1NZ U0NPTl9ERVZDRkdfRVhWQ8KgwqDCoMKgwqDCoCgxPDwxOSkKPiAtI2RlZmluZSBFUDkzWFhfU1lT Q09OX0RFVkNGR19VMUVOwqDCoMKgwqDCoMKgKDE8PDE4KQo+ICsjZGVmaW5lIEVQOTNYWF9TWVND T05fREVWQ0ZHX1UxRU7CoMKgwqDCoMKgwqAxOAo+IMKgI2RlZmluZSBFUDkzWFhfU1lTQ09OX0RF VkNGR19USU7CoMKgwqDCoMKgwqDCoCgxPDwxNykKPiDCoCNkZWZpbmUgRVA5M1hYX1NZU0NPTl9E RVZDRkdfSEMzSU7CoMKgwqDCoMKgKDE8PDE1KQo+IMKgI2RlZmluZSBFUDkzWFhfU1lTQ09OX0RF VkNGR19IQzNFTsKgwqDCoMKgwqAoMTw8MTQpCj4gQEAgLTE2MywxMiArMTYzLDEyIEBACj4gwqAj ZGVmaW5lIEVQOTNYWF9TWVNDT05fREVWQ0ZHX0tFWVPCoMKgwqDCoMKgwqAoMTw8MSkKPiDCoCNk ZWZpbmUgRVA5M1hYX1NZU0NPTl9ERVZDRkdfU0hFTkHCoMKgwqDCoMKgKDE8PDApCj4gwqAjZGVm aW5lIEVQOTNYWF9TWVNDT05fVklEQ0xLRElWwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBFUDkzWFhfU1lTQ09OX1JFRygweDg0KQo+IC0jZGVmaW5lIEVQOTNYWF9TWVNDT05fQ0xLRElW X0VOQUJMRcKgwqDCoMKgKDE8PDE1KQo+ICsjZGVmaW5lIEVQOTNYWF9TWVNDT05fQ0xLRElWX0VO QUJMRcKgwqDCoMKgMTUKPiDCoCNkZWZpbmUgRVA5M1hYX1NZU0NPTl9DTEtESVZfRVNFTMKgwqDC oMKgwqDCoCgxPDwxNCkKPiDCoCNkZWZpbmUgRVA5M1hYX1NZU0NPTl9DTEtESVZfUFNFTMKgwqDC oMKgwqDCoCgxPDwxMykKPiDCoCNkZWZpbmUgRVA5M1hYX1NZU0NPTl9DTEtESVZfUERJVl9TSElG VMKgwqDCoMKgwqDCoMKgwqA4Cj4gwqAjZGVmaW5lIEVQOTNYWF9TWVNDT05fSTJTQ0xLRElWwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBFUDkzWFhfU1lTQ09OX1JFRygweDhjKQo+IC0j ZGVmaW5lIEVQOTNYWF9TWVNDT05fSTJTQ0xLRElWX1NFTkHCoMKgwqAoMTw8MzEpCj4gKyNkZWZp bmUgRVA5M1hYX1NZU0NPTl9JMlNDTEtESVZfU0VOQcKgwqDCoDMxCj4gwqAjZGVmaW5lIEVQOTNY WF9TWVNDT05fSTJTQ0xLRElWX09SSURFwqDCoCAoMTw8MjkpCj4gwqAjZGVmaW5lIEVQOTNYWF9T WVNDT05fSTJTQ0xLRElWX1NQT0zCoMKgwqAoMTw8MTkpCj4gwqAjZGVmaW5lIEVQOTNYWF9JMlND TEtESVZfU0RJVsKgwqDCoMKgwqDCoMKgwqDCoMKgKDEgPDwgMTYpCj4gQEAgLTE3Nyw5ICsxNzcs OSBAQAo+IMKgI2RlZmluZSBFUDkzWFhfSTJTQ0xLRElWX0xSRElWMTI4wqDCoMKgwqDCoMKgKDIg PDwgMTcpCj4gwqAjZGVmaW5lIEVQOTNYWF9JMlNDTEtESVZfTFJESVZfTUFTS8KgwqDCoMKgKDMg PDwgMTcpCj4gwqAjZGVmaW5lIEVQOTNYWF9TWVNDT05fS0VZVENIQ0xLRElWwqDCoMKgwqDCoEVQ OTNYWF9TWVNDT05fUkVHKDB4OTApCj4gLSNkZWZpbmUgRVA5M1hYX1NZU0NPTl9LRVlUQ0hDTEtE SVZfVFNFTsKgwqDCoMKgwqDCoMKgwqAoMTw8MzEpCj4gLSNkZWZpbmUgRVA5M1hYX1NZU0NPTl9L RVlUQ0hDTEtESVZfQURJVsKgwqDCoMKgwqDCoMKgwqAoMTw8MTYpCj4gLSNkZWZpbmUgRVA5M1hY X1NZU0NPTl9LRVlUQ0hDTEtESVZfS0VOwqAoMTw8MTUpCj4gKyNkZWZpbmUgRVA5M1hYX1NZU0NP Tl9LRVlUQ0hDTEtESVZfVFNFTsKgwqDCoMKgwqDCoMKgwqAzMQo+ICsjZGVmaW5lIEVQOTNYWF9T WVNDT05fS0VZVENIQ0xLRElWX0FESVbCoMKgwqDCoMKgwqDCoMKgMTYKPiArI2RlZmluZSBFUDkz WFhfU1lTQ09OX0tFWVRDSENMS0RJVl9LRU7CoDE1Cj4gwqAjZGVmaW5lIEVQOTNYWF9TWVNDT05f S0VZVENIQ0xLRElWX0tESVbCoMKgwqDCoMKgwqDCoMKgKDE8PDApCj4gwqAjZGVmaW5lIEVQOTNY WF9TWVNDT05fU1lTQ0ZHwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEVQOTNYWF9TWVNDT05fUkVHKDB4 OWMpCj4gwqAjZGVmaW5lIEVQOTNYWF9TWVNDT05fU1lTQ0ZHX1JFVl9NQVNLwqDCoCgweGYwMDAw MDAwKQoKLS0gCkFsZXhhbmRlciBTdmVyZGxpbi4KCgoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGlu dXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQu b3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=