From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id E5DFFC77B7A for ; Tue, 30 May 2023 01:09:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:References:Cc:To:From:Subject: MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=+TTDFHBAtmTI9eW/LPUSMn162xo68dpLmNtpgMQs4BY=; b=FcNHjRhAmltHi6 vcxrjMwowK16+3nHygyKJojoqlFZT0p43GUhAPwaF/DPhbhm5596NKSOoGCOkcm4LR7utt+vR+RME vpSS7jFiI3r5qD/MqT9iTRnm5vWeLJkc7Hi+a/tjOCf/p4ZSdKE/wY9kwe0EOebL493xXHa0obAE7 qSGvange4Y5lN5rfHwAZtuJ5Ux59QZ5lj/1d6SMEGYLgLWED2ddVs9xXWVFhD8B1TctKVekNMjMWT 9szctQhKSOZTFe6+SP6lZUzi9kcLfPtyqrZABhu8KgVfo9ZffldjKBrMAFP6WC8qpHG4QggjYU7FF WaG9EAnKY/X9nhTpZLtw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1q3nra-00C4gH-2x; Tue, 30 May 2023 01:09:26 +0000 Received: from mail-pj1-x1031.google.com ([2607:f8b0:4864:20::1031]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1q3nrX-00C4fI-34 for linux-arm-kernel@lists.infradead.org; Tue, 30 May 2023 01:09:25 +0000 Received: by mail-pj1-x1031.google.com with SMTP id 98e67ed59e1d1-2568befcf1dso912565a91.0 for ; Mon, 29 May 2023 18:09:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1685408962; x=1688000962; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:from:subject:user-agent:mime-version:date:message-id:from:to :cc:subject:date:message-id:reply-to; bh=d1wG3ZzBNrC3Iuv0Sazp7NPX3sgvbpQA8Twr3uxU34s=; b=kXw1U6akBeszmRiZ1MVvqGt5eDQuWhg17xwHKHH1jEX/9yaFkD1SOvWX/DEiaSJ8V9 a39ZEYAGgARyRX7UhQmHCk6Ej8CON2madP8nOXK+2PwuqPMl7c39mDtdlgUY2qONvt4O 17GOFsEwtbE1glmbzKXvHUnmFP86NdwnWvazFzlNQSlmKMm0RxUAnSXNw3RXzsnw3mma adXNWyoyVDsjz+4PA2AMk3EJ9+cLtETJoBicLQLeaR+5EPBiZN0vSR7ej7T6bl5azXNN gXCpv+CXrKKrWXCo74OPAUXxjC/6Kj8uND/4IW5e5bLShDEOZKg7DeX93UwgYWKlPIGn TYuA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685408962; x=1688000962; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:from:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=d1wG3ZzBNrC3Iuv0Sazp7NPX3sgvbpQA8Twr3uxU34s=; b=FV4wLiFCnbKanJqdynu9iTnQnShMsn/XyEuG+h6H5ue3Hbc9ULsAYl7DP8bNBXOUTS RMt0Cv4FE9gw42ufYETYtloS3kw95cIV46DRm8nIU4Fcg+DEmc4VhPjZpZsE/MpGnaZa Ju7sXs+JS02mCMW8VOtgA92tkBjGumVHvoZxvqa7gZK8wmKRlcDFXdPJZsiGz6aF9O6P GzFAfKzm1jvWM0CxDiolspDQRs0CJgPyrOSsh1kX4Zh/md8MERaQLOkaPzGEoC9YTV3C cv+7R/j7DYxbcRlIqZFbXVH+MoGRkpfsPqb+J7+EbSWd+I44mLIVJgmIMSwLWMRqwQbI tL6w== X-Gm-Message-State: AC+VfDw079J6yybgJBptGPZre5ajELeTRDf97X+vqB0sGGD0bmusv/HW Thl0KfGYIArJTXqGUItO88M= X-Google-Smtp-Source: ACHHUZ4lRcccoA8lGODePVC271WFd12PsoH9zTA9AafQ4ZPdWcMilHiDIITrvpbD1M0gojDXw1+KCw== X-Received: by 2002:a17:90b:3a91:b0:24e:3752:194f with SMTP id om17-20020a17090b3a9100b0024e3752194fmr9899966pjb.21.1685408961878; Mon, 29 May 2023 18:09:21 -0700 (PDT) Received: from [172.19.1.47] (60-250-192-107.hinet-ip.hinet.net. [60.250.192.107]) by smtp.gmail.com with ESMTPSA id b1-20020a17090a100100b002532eef4fc5sm8271339pja.34.2023.05.29.18.09.17 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 29 May 2023 18:09:21 -0700 (PDT) Message-ID: Date: Tue, 30 May 2023 09:09:16 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.11.0 Subject: Re: [PATCH v11 10/10] tty: serial: Add Nuvoton ma35d1 serial driver support From: Jacky Huang To: Jiri Slaby , robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, lee@kernel.org, mturquette@baylibre.com, sboyd@kernel.org, p.zabel@pengutronix.de, gregkh@linuxfoundation.org, tmaimon77@gmail.com, catalin.marinas@arm.com, will@kernel.org Cc: devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-serial@vger.kernel.org, arnd@arndb.de, soc@kernel.org, schung@nuvoton.com, mjchen@nuvoton.com, Jacky Huang References: <20230516075217.205401-1-ychuang570808@gmail.com> <20230516075217.205401-11-ychuang570808@gmail.com> <3d4acb20-c80e-fd39-c0d0-e9b1e0309d81@kernel.org> Content-Language: en-US In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230529_180923_988503_2EDA6C63 X-CRM114-Status: GOOD ( 29.95 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org RGVhciBKaXJpLAoKCk9uIDIwMjMvNS8yNCDkuIvljYggMDQ6MzQsIEphY2t5IEh1YW5nIHdyb3Rl Ogo+IERlYXIgSmlyaSwKPgo+IFRoYW5rcyBmb3IgeW91ciBhZHZpY2UuCj4KPiBPbiAyMDIzLzUv MjQg5LiL5Y2IIDAzOjQyLCBKaXJpIFNsYWJ5IHdyb3RlOgo+PiBPbiAxNi4gMDUuIDIzLCA5OjUy LCBKYWNreSBIdWFuZyB3cm90ZToKPj4+ICtzdGF0aWMgdm9pZCBtYTM1ZDFzZXJpYWxfY29uZmln X3BvcnQoc3RydWN0IHVhcnRfcG9ydCAqcG9ydCwgaW50IAo+Pj4gZmxhZ3MpCj4+PiArewo+Pj4g K8KgwqDCoCAvKgo+Pj4gK8KgwqDCoMKgICogRHJpdmVyIGNvcmUgZm9yIHNlcmlhbCBwb3J0cyBm b3JjZXMgYSBub24temVybyB2YWx1ZSBmb3IgCj4+PiBwb3J0IHR5cGUuCj4+PiArwqDCoMKgwqAg KiBXcml0ZSBhbiBhcmJpdHJhcnkgdmFsdWUgaGVyZSB0byBhY2NvbW1vZGF0ZSB0aGUgc2VyaWFs IGNvcmUgCj4+PiBkcml2ZXIsCj4+PiArwqDCoMKgwqAgKiBhcyBJRCBwYXJ0IG9mIFVBUEkgaXMg cmVkdW5kYW50Lgo+Pj4gK8KgwqDCoMKgICovCj4+PiArwqDCoMKgIHBvcnQtPnR5cGUgPSAxOwo+ Pgo+PiBTbyB0aGlzIDEgdHJhbnNsYXRlcyB0byBQT1JUXzgyNTAuIFdoeSBub3QgdG8gdXNlIGl0 IGRpcmVjdGx5PyBPciAKPj4gc29tZXRoaW5nIG1vcmUgc2FuZXIgbGlrZSBQT1JUXzE2NTUwQT8K Pj4KPiBJdCdzIG5vdCBhY3R1YWxseSA4MjUwIG9yIDE2NTUwQS4KPiBDYW4gd2UgYWRkIHRoZSBm b2xsb3dpbmcgZGVmaW5pdGlvbiB0byAKPiAnaW5jbHVkZS91YXBpL2xpbnV4L3NlcmlhbF9jb3Jl LmgnIGFuZCB1c2UgUE9SVF9NQTM1IGluc3RlYWQ/Cj4KPiAjZGVmaW5lIFBPUlRfTUEzNcKgwqDC oCAxMjQKPgo+Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRpYyBpbnQgbWEzNWQxc2VyaWFsX3Zlcmlm eV9wb3J0KHN0cnVjdCB1YXJ0X3BvcnQgKnBvcnQsIHN0cnVjdCAKPj4+IHNlcmlhbF9zdHJ1Y3Qg KnNlcikKPj4+ICt7Cj4+PiArwqDCoMKgIGlmIChwb3J0LT50eXBlICE9IFBPUlRfVU5LTk9XTiAm JiBzZXItPnR5cGUgIT0gMSkKPj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVJTlZBTDsKPj4+ ICsKPj4+ICvCoMKgwqAgcmV0dXJuIDA7Cj4+PiArfQo+PiAuLi4KPj4+ICtzdGF0aWMgaW50IF9f aW5pdCBtYTM1ZDFzZXJpYWxfY29uc29sZV9zZXR1cChzdHJ1Y3QgY29uc29sZSAqY28sIAo+Pj4g Y2hhciAqb3B0aW9ucykKPj4+ICt7Cj4+PiArwqDCoMKgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAg PSBtYTM1ZDFzZXJpYWxfdWFydF9ub2Rlc1tjby0+aW5kZXhdOwo+Pj4gK8KgwqDCoCBzdHJ1Y3Qg dWFydF9tYTM1ZDFfcG9ydCAqcCA9ICZtYTM1ZDFzZXJpYWxfcG9ydHNbY28tPmluZGV4XTsKPj4+ ICvCoMKgwqAgdTMyIHZhbDMyWzRdOwo+Pj4gK8KgwqDCoCBzdHJ1Y3QgdWFydF9wb3J0ICpwb3J0 Owo+Pj4gK8KgwqDCoCBpbnQgYmF1ZCA9IDExNTIwMDsKPj4+ICvCoMKgwqAgaW50IGJpdHMgPSA4 Owo+Pj4gK8KgwqDCoCBpbnQgcGFyaXR5ID0gJ24nOwo+Pj4gK8KgwqDCoCBpbnQgZmxvdyA9ICdu JzsKPj4+ICsKPj4+ICvCoMKgwqAgLyoKPj4+ICvCoMKgwqDCoCAqIENoZWNrIHdoZXRoZXIgYW4g aW52YWxpZCB1YXJ0IG51bWJlciBoYXMgYmVlbiBzcGVjaWZpZWQsIGFuZAo+Pgo+PiBZb3UgZGVy ZWZlcmVuY2VkIG1hMzVkMXNlcmlhbF91YXJ0X25vZGVzIGFscmVhZHkuIERvZXNuJ3QgCj4+IGNv bnNvbGU9dHR5TlZUMTAwMCAob3Igc29tZXRoaW5nIGxpa2UgdGhhdCkgY3Jhc2ggdGhlIHN5c3Rl bT8KPj4KPgo+IEkgd2lsbCBhZGQgdGhlIGZvbGxvd2luZyBjaGVjayBiZWZvcmUgbnAgPSAKPiAi bWEzNWQxc2VyaWFsX3VhcnRfbm9kZXNbY28tPmluZGV4XSIuCj4KPiBpZiAoY28tPmluZGV4IDwg MCB8fCBjby0+aW5kZXggPj0gTUEzNV9VQVJUX05SKQo+IMKgwqAgwqByZXR1cm4gLUVJTlZBTDsK Pgo+Cj4+PiArwqDCoMKgwqAgKiBpZiBzbywgc2VhcmNoIGZvciB0aGUgZmlyc3QgYXZhaWxhYmxl IHBvcnQgdGhhdCBkb2VzIGhhdmUKPj4+ICvCoMKgwqDCoCAqIGNvbnNvbGUgc3VwcG9ydC4KPj4K Pj4gVGhlIGNvZGUgYmVsb3cgZG9lc24ndCBtYXRjaCB0aGlzIGNvbW1lbnQuCj4KPiBZZXMsIEkg d2lsbCByZW1vdmUgdGhlIGFib3ZlIGNvbW1lbnQuCj4KPj4KPj4+ICvCoMKgwqDCoCAqLwo+Pj4g K8KgwqDCoCBpZiAoKGNvLT5pbmRleCA8IDApIHx8IChjby0+aW5kZXggPj0gTUEzNV9VQVJUX05S KSkgewo+Pj4gK8KgwqDCoMKgwqDCoMKgIHByX2RlYnVnKCJDb25zb2xlIFBvcnQleCBvdXQgb2Yg cmFuZ2VcbiIsIGNvLT5pbmRleCk7Cj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FSU5WQUw7 Cj4+PiArwqDCoMKgIH0KPj4+ICsKPj4+ICvCoMKgwqAgaWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMy X2FycmF5KG5wLCAicmVnIiwgdmFsMzIsIDQpICE9IDApCj4+Cj4+IFNob3VsZG4ndCB0aGF0IDQg YmUgQVJSQVlfU0laRSh2YWwzMikgaW5zdGVhZD8KPj4KPgo+IFdpbGwgYmUgZml4ZWQuCj4KPj4+ ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVJTlZBTDsKPj4KPj4gT25lIFxuIGhlcmUgcGxlYXNl Lgo+Pgo+Cj4gT2theSwgSSB3aWxsIGFkZCBpdC4KPgo+Pj4gK8KgwqDCoCBwLT5wb3J0LmlvYmFz ZSA9IHZhbDMyWzFdOwo+Pj4gK8KgwqDCoCBwLT5wb3J0Lm1lbWJhc2UgPSBpb3JlbWFwKHAtPnBv cnQuaW9iYXNlLCBNQTM1X1VBUlRfUkVHX1NJWkUpOwo+Pgo+PiBXaGF0IGlmIHRoaXMgZmFpbHM/ Cj4+Cj4KPiBJIHdpbGwgYWRkIGEgY2hlY2sgZm9yIHRoZSByZXR1cm4gdmFsdWUuCj4KPj4+ICvC oMKgwqAgcC0+cG9ydC5vcHMgPSAmbWEzNWQxc2VyaWFsX29wczsKPj4+ICvCoMKgwqAgcC0+cG9y dC5saW5lID0gMDsKPj4+ICvCoMKgwqAgcC0+cG9ydC51YXJ0Y2xrID0gTUEzNV9VQVJUX0NPTlNP TEVfQ0xLOwo+Pj4gKwo+Pj4gK8KgwqDCoCBwb3J0ID0gJm1hMzVkMXNlcmlhbF9wb3J0c1tjby0+ aW5kZXhdLnBvcnQ7Cj4+Cj4+IElzbid0IHRoaXM6Cj4+IMKgIHBvcnQgPSAmcC0+cG9ydDsKPj4g Pwo+Pgo+PiBFaXRoZXIgdXNlIHBvcnQgb24gYWxsIGFib3ZlIGxpbmVzIG9yIGRyb3AgdGhlICJw b3J0IiB2YXJpYWJsZSAKPj4gY29tcGxldGVseSBhbmQgdXNlICJwLT5wb3J0IiBiZWxvdyBpbnN0 ZWFkLgo+Pgo+Cj4gSSB3aWxsIHJlbW92ZSBwb3J0IHZhcmlhYmxlIGFuZCB1c2UgcC0+cG9ydCBv bmx5Lgo+Cj4+PiArCj4+PiArwqDCoMKgIGlmIChvcHRpb25zKQo+Pj4gK8KgwqDCoMKgwqDCoMKg IHVhcnRfcGFyc2Vfb3B0aW9ucyhvcHRpb25zLCAmYmF1ZCwgJnBhcml0eSwgJmJpdHMsICZmbG93 KTsKPj4+ICsKPj4+ICvCoMKgwqAgcmV0dXJuIHVhcnRfc2V0X29wdGlvbnMocG9ydCwgY28sIGJh dWQsIHBhcml0eSwgYml0cywgZmxvdyk7Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRpYyBzdHJ1Y3Qg Y29uc29sZSBtYTM1ZDFzZXJpYWxfY29uc29sZSA9IHsKPj4+ICvCoMKgwqAgLm5hbWXCoMKgwqAg PSAidHR5TlZUIiwKPj4+ICvCoMKgwqAgLndyaXRlwqDCoCA9IG1hMzVkMXNlcmlhbF9jb25zb2xl X3dyaXRlLAo+Pj4gK8KgwqDCoCAuZGV2aWNlwqAgPSB1YXJ0X2NvbnNvbGVfZGV2aWNlLAo+Pj4g K8KgwqDCoCAuc2V0dXDCoMKgID0gbWEzNWQxc2VyaWFsX2NvbnNvbGVfc2V0dXAsCj4+PiArwqDC oMKgIC5mbGFnc8KgwqAgPSBDT05fUFJJTlRCVUZGRVIgfCBDT05fRU5BQkxFRCwKPj4+ICvCoMKg wqAgLmluZGV4wqDCoCA9IC0xLAo+Pj4gK8KgwqDCoCAuZGF0YcKgwqDCoCA9ICZtYTM1ZDFzZXJp YWxfcmVnLAo+Pgo+PiBJIGRvbid0IHNlZSBjb25zb2xlLT5kYXRhIHVzZWQgYW55d2hlcmUgaW4g dGhlIGRyaXZlcj8KPj4KPgo+IEkgd2lsbCByZW1vdmUgaXQuCj4KCkkgcmVtb3ZlZCB0aGUgIiAu ZGF0YcKgwqDCoCA9ICZtYTM1ZDFzZXJpYWxfcmVnIiwgYnV0IGtlcm5lbCBjcmFzaGVkIGluIAon ZHJpdmVycy90dHkvc2VyaWFsL3NlcmlhbF9jb3JlLmMnLgoKVGhlIHZhcmlhYmxlICdwJyBvZsKg IHVhcnRfY29uc29sZV9kZXZpY2UoKSByZWZlciB0byBhIE5VTEwsIGJlY2F1c2UgCmNvLT5kYXRh IGlzIE5VTEwuCkFzIGEgcmVzdWx0LCBrZXJuZWwgY3Jhc2hlZCBhdCAncC0+dHR5X2RyaXZlcicu CgpzdHJ1Y3QgdHR5X2RyaXZlciAqdWFydF9jb25zb2xlX2RldmljZShzdHJ1Y3QgY29uc29sZSAq Y28sIGludCAqaW5kZXgpCnsKIMKgwqAgwqBzdHJ1Y3QgdWFydF9kcml2ZXIgKnAgPSBjby0+ZGF0 YTsKIMKgwqAgwqAqaW5kZXggPSBjby0+aW5kZXg7CiDCoMKgIMKgcmV0dXJuIHAtPnR0eV9kcml2 ZXI7Cn0KCldlIHNlZW0gdG8gYmUgdW5hYmxlIHRvIHJlbW92ZSBpdC4KSWYgdGhlcmUgYXJlIG5v IG90aGVyIGNvbnNpZGVyYXRpb25zLCBJIHdpbGwga2VlcCBpdCBpbiB0aGUgbmV4dCB2ZXJzaW9u LgoKPj4+ICt9Owo+PiAuLi4KPj4+ICtzdGF0aWMgaW50IG1hMzVkMXNlcmlhbF9wcm9iZShzdHJ1 Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+Pj4gK3sKPj4+ICvCoMKgwqAgc3RydWN0IHJlc291 cmNlICpyZXNfbWVtOwo+Pj4gK8KgwqDCoCBzdHJ1Y3QgdWFydF9tYTM1ZDFfcG9ydCAqdXA7Cj4+ PiArwqDCoMKgIGludCByZXQgPSAwOwo+Pj4gKwo+Pj4gK8KgwqDCoCBpZiAocGRldi0+ZGV2Lm9m X25vZGUpIHsKPj4+ICvCoMKgwqDCoMKgwqDCoCByZXQgPSBvZl9hbGlhc19nZXRfaWQocGRldi0+ ZGV2Lm9mX25vZGUsICJzZXJpYWwiKTsKPj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAocmV0IDwgMCkg ewo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGV2X2VycigmcGRldi0+ZGV2LCAiZmFpbGVk IHRvIGdldCBhbGlhcy9wZGV2IGlkLCBlcnJubyAKPj4+ICVkXG4iLCByZXQpOwo+Pj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJldDsKPj4+ICvCoMKgwqDCoMKgwqDCoCB9Cj4+PiAr wqDCoMKgIH0KPj4+ICvCoMKgwqAgdXAgPSAmbWEzNWQxc2VyaWFsX3BvcnRzW3JldF07Cj4+PiAr wqDCoMKgIHVwLT5wb3J0LmxpbmUgPSByZXQ7Cj4+PiArwqDCoMKgIHJlc19tZW0gPSBwbGF0Zm9y bV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9NRU0sIDApOwo+Pj4gK8KgwqDCoCBpZiAo IXJlc19tZW0pCj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FTk9ERVY7Cj4+PiArCj4+PiAr wqDCoMKgIHVwLT5wb3J0LmlvYmFzZSA9IHJlc19tZW0tPnN0YXJ0Owo+Pj4gK8KgwqDCoCB1cC0+ cG9ydC5tZW1iYXNlID0gaW9yZW1hcCh1cC0+cG9ydC5pb2Jhc2UsIE1BMzVfVUFSVF9SRUdfU0la RSk7Cj4+Cj4+IENoZWNrIHRoaXMgdG9vLgo+Pgo+Cj4gT2theSwgc3VyZS4KPgo+Pj4gK8KgwqDC oCB1cC0+cG9ydC5vcHMgPSAmbWEzNWQxc2VyaWFsX29wczsKPj4+ICsKPj4+ICvCoMKgwqAgc3Bp bl9sb2NrX2luaXQoJnVwLT5wb3J0LmxvY2spOwo+Pj4gKwo+Pj4gK8KgwqDCoCB1cC0+Y2xrID0g b2ZfY2xrX2dldChwZGV2LT5kZXYub2Zfbm9kZSwgMCk7Cj4+PiArwqDCoMKgIGlmIChJU19FUlIo dXAtPmNsaykpIHsKPj4+ICvCoMKgwqDCoMKgwqDCoCByZXQgPSBQVFJfRVJSKHVwLT5jbGspOwo+ Pj4gK8KgwqDCoMKgwqDCoMKgIGRldl9lcnIoJnBkZXYtPmRldiwgImZhaWxlZCB0byBnZXQgY29y ZSBjbGs6ICVkXG4iLCByZXQpOwo+Pj4gK8KgwqDCoMKgwqDCoMKgIGdvdG8gZXJyX2lvdW5tYXA7 Cj4+PiArwqDCoMKgIH0KPj4+ICsKPj4+ICvCoMKgwqAgcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxl KHVwLT5jbGspOwo+Pj4gK8KgwqDCoCBpZiAocmV0KQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGdvdG8g ZXJyX2lvdW5tYXA7Cj4+PiArCj4+PiArwqDCoMKgIGlmICh1cC0+cG9ydC5saW5lICE9IDApCj4+ PiArwqDCoMKgwqDCoMKgwqAgdXAtPnBvcnQudWFydGNsayA9IGNsa19nZXRfcmF0ZSh1cC0+Y2xr KTsKPj4+ICsKPj4+ICvCoMKgwqAgcmV0ID0gcGxhdGZvcm1fZ2V0X2lycShwZGV2LCAwKTsKPj4+ ICvCoMKgwqAgaWYgKHJldCA8IDApCj4+PiArwqDCoMKgwqDCoMKgwqAgZ290byBlcnJfY2xrX2Rp c2FibGU7Cj4+PiArCj4+PiArwqDCoMKgIHVwLT5wb3J0LmlycSA9IHJldDsKPj4+ICvCoMKgwqAg dXAtPnBvcnQuZGV2ID0gJnBkZXYtPmRldjsKPj4+ICvCoMKgwqAgdXAtPnBvcnQuZmxhZ3MgPSBV UEZfQk9PVF9BVVRPQ09ORjsKPj4+ICsKPj4+ICvCoMKgwqAgcGxhdGZvcm1fc2V0X2RydmRhdGEo cGRldiwgdXApOwo+Pj4gKwo+Pj4gK8KgwqDCoCByZXQgPSB1YXJ0X2FkZF9vbmVfcG9ydCgmbWEz NWQxc2VyaWFsX3JlZywgJnVwLT5wb3J0KTsKPj4+ICvCoMKgwqAgaWYgKHJldCA8IDApCj4+PiAr wqDCoMKgwqDCoMKgwqAgZ290byBlcnJfZnJlZV9pcnE7Cj4+PiArCj4+PiArwqDCoMKgIHJldHVy biAwOwo+Pj4gKwo+Pj4gK2Vycl9mcmVlX2lycToKPj4+ICvCoMKgwqAgZnJlZV9pcnEodXAtPnBv cnQuaXJxLCAmdXAtPnBvcnQpOwo+Pj4gKwo+Pj4gK2Vycl9jbGtfZGlzYWJsZToKPj4+ICvCoMKg wqAgY2xrX2Rpc2FibGVfdW5wcmVwYXJlKHVwLT5jbGspOwo+Pj4gKwo+Pj4gK2Vycl9pb3VubWFw Ogo+Pj4gK8KgwqDCoCBpb3VubWFwKHVwLT5wb3J0Lm1lbWJhc2UpOwo+Pj4gK8KgwqDCoCByZXR1 cm4gcmV0Owo+Pj4gK30KPj4KPj4gdGhhbmtzLAo+Cj4gQmVzdCByZWdhcmRzLAo+IEphY2t5IEh1 YW5nCj4KCkJlc3QgcmVnYXJkcywKSmFja3kgSHVhbmcKCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdAps aW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVh ZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==