From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 991B3223DE7 for ; Wed, 3 Jun 2026 14:49:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780498169; cv=none; b=hiitpfsalbw/lySCypG7D5RVM5B4ouRQE8te310jlnUhnYGblVE5J4I6mxPTIfvvFmildKHANUJzm3zFHU8ekZySj3icDqXMj/nCr/WrvlDdpHBtoyxv+A/ErcBMpxlBzM1XKBWa9erfvqTFpPw/RDlKgqsGQHZyja/5ryQiL48= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780498169; c=relaxed/simple; bh=EJQQNm5rtZ2thwVgPwzR0uA87KSh1/V22OMbEsoXK8E=; h=Message-ID:Subject:From:To:Cc:Date:In-Reply-To:References: Content-Type:MIME-Version; b=hxgzmYtVKjRzB+PLBT6KD4dWEVP5PEfAgg5EEnH3LmIC42gN/egUT33hZrStQuIHrlAabPl9eLUsVPfz4wuspml69R8z2ckaIRha8FfTN5xl5AsGImX4VHzJiPlia1zbw1Uo8dawQBJerZKiYEq8qKx5FjI3tDNaNHDRTmUd+zU= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=MkjEfukL; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=GwWfk5VK; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="MkjEfukL"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="GwWfk5VK" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1780498163; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=EJQQNm5rtZ2thwVgPwzR0uA87KSh1/V22OMbEsoXK8E=; b=MkjEfukLQs+hRcG1P4C3BAMB+bCHaH1Z8NahzZKZmuZMAYWtORH5jpQH+nH3j5Tb2jBBdB sQ4om80rCc95H7tbFjUEWlHiMKE2NJ+uWyS4UaLQX/KADuSJabBvWkkG1DYRqK/xBolgUw nvUsAJ9b0Q6E18y6y+dzQurgA7ZsBes= Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-63-IxEPs52fP1q7D2Hg83R3SQ-1; Wed, 03 Jun 2026 10:49:13 -0400 X-MC-Unique: IxEPs52fP1q7D2Hg83R3SQ-1 X-Mimecast-MFC-AGG-ID: IxEPs52fP1q7D2Hg83R3SQ_1780498152 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-490b9cd54f3so5717295e9.2 for ; Wed, 03 Jun 2026 07:49:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1780498152; x=1781102952; darn=vger.kernel.org; h=mime-version:user-agent:content-transfer-encoding:references :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject :date:message-id:reply-to; bh=EJQQNm5rtZ2thwVgPwzR0uA87KSh1/V22OMbEsoXK8E=; b=GwWfk5VKQGWOph859c+fYt/G+qGhVObpNFD++O5/VgH4aJUx51QZkRZm2TNb02Ka9O iL17SSNpG+15p3ji+fr8ELBT+m+OjsvC39TqrdvHkkbqWdGFiXbMcO1vzrN3j+AiBqjH 1nK92vWwLpyRbtT0MVIDYX+QA79A4d8C6hx4s0h806fVe5TuZEv9iHKeL4KqgDw4F2qQ IbPj0vgk5rWePoVWKSSRrzFXiJayLu4+KdXDAtmA33QIhfHBtsX/I/ltFGMYHK2kop3N EZThoUSEA8QaJuFkTucMCmuOtPzFlHoGSt0aAMvOX+kiUDIJHmbnVd0E87I9Z7NQA3Kh rLVw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780498152; x=1781102952; h=mime-version:user-agent:content-transfer-encoding:references :in-reply-to:date:cc:to:from:subject:message-id:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=EJQQNm5rtZ2thwVgPwzR0uA87KSh1/V22OMbEsoXK8E=; b=bP6UVanx/x3cl7fRg70PiDtZZBfp1rb1hYJ0mpUq4LpRKk1fP7ysqAm4mHun+mM7K3 mVtDBIAXVEvLfJRBvK7aNIF2Bd35zt5/UFn+j34sM5IdQBaoimkYklu5x7EUg477LHm/ EAnXQ/Jtzfp7vrLDZtIow3OrwHIIXjY8sb+4G3p/hvFhVKPqklI0qmMIg2usMS9FjKny vcVIvJfOIFMNd1co/vyAl/BHNqwjtNlWHVxKRhkAEvgc/4JjrF1n4jhFRaBIxLoo2oV1 inASR2mB+l0EzdNvf+O1RV1tj1fmIHlCivI5P6KxkhL9q40g+h2aPiyb86LFHZeq7j7f kbdQ== X-Forwarded-Encrypted: i=1; AFNElJ+I/VmVuHhznLqSmutqWwah9BxmrmFn+CRUj02N9nDIGqmfraIextJM9JAMJ3HJ4Py18+D7WNsE3ekmJuQ=@vger.kernel.org X-Gm-Message-State: AOJu0Yz34uFnv7EuW3Y6O1ZId41ED8WqIHemBzroIZSlbKuigw68IllY 8Ood/Qj9L8Bkqf0Gz4aihXYIPB7kY8Gn8t6QKaAkuwbpeBKiDmA5t04bvQtp+nU1ih+m7Ses1DU XrM0TFsuUF9t7i8mYyBXwRDRm04mu1qKt2lBE2aulHA3XGMX81PFPfphX+Qxpb+QFAw== X-Gm-Gg: Acq92OG/xQ6V4N/jL6GJCGZXW3dNXNGOi9wLtFUzM0XXg4zXQju2+qUIuuXsPLsPGKy mzJYv7TTC0CvFdU/2REWYdsj6tx4euTdVhbjl4Wdgr0KsmcuRlNuG3NPTwZthP2m+WjHzvzKch9 MTnSji+p8q4qCNdpf8jJ085pjbGg8pGX7ET+5mwf6YYdXi7VjwPDnBe93cdOTTu+zFL2lNFdZEH yi9aa7f+ysLjWI99hxiIo2K5pNaQJUBLq10hpIBSI8lZsbc69v7Epj3XDek4woYfVXcRMPqa870 M4dd/rTI6u0/tPIcxOegjCYaSeiajG6h4oVufs6o0V0MJpMRlq6D6P3eCrvNpUjfQOOsRSG4nLa DJdJP/BDrI1DEUt+ybrnX55E+1dh1dj6Fp5GL X-Received: by 2002:a05:600c:8184:b0:48a:93f8:dd02 with SMTP id 5b1f17b1804b1-490b5ecac6dmr58644635e9.14.1780498152080; Wed, 03 Jun 2026 07:49:12 -0700 (PDT) X-Received: by 2002:a05:600c:8184:b0:48a:93f8:dd02 with SMTP id 5b1f17b1804b1-490b5ecac6dmr58644185e9.14.1780498151619; Wed, 03 Jun 2026 07:49:11 -0700 (PDT) Received: from [192.168.1.167] ([185.168.96.228]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-490b63fbcb7sm58830415e9.15.2026.06.03.07.49.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Jun 2026 07:49:11 -0700 (PDT) Message-ID: <9e8309eda671e19579397ac14762f72f2c33466c.camel@redhat.com> Subject: Re: [PATCH v2 01/13] verification/rvgen: Switch LTL parser to Lark From: Gabriele Monaco To: Nam Cao Cc: Wander Lairson Costa , Steven Rostedt , linux-trace-kernel@vger.kernel.org, linux-kernel@vger.kernel.org Date: Wed, 03 Jun 2026 16:49:10 +0200 In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 User-Agent: Evolution 3.60.1 (3.60.1-1.fc44) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 T24gVGh1LCAyMDI2LTA1LTI4IGF0IDEwOjI3ICswMjAwLCBOYW0gQ2FvIHdyb3RlOgo+IFRoZSBM VEwgcGFyc2VyIGlzIGJ1aWx0IHVzaW5nIFBseS4gSG93ZXZlciwgUGx5IGlzIG5vIGxvbmdlcgo+ IG1haW50YWluZWQgWzFdLgo+IAo+IFN3aXRjaCB0byB1c2UgTGFyayBpbnN0ZWFkLiBJbiBhZGRp dGlvbiB0byBiZWluZyBhY3RpdmVseSBtYWludGFpbmVkLAo+IExhcmsKPiBhbHNvIG9mZmVycyBh ZGRpdGlvbmFsIGZlYXR1cmVzIChuYW1lbHksIGF1dG9tYXRpY2FsbHkgY3JlYXRpbmcgdGhlCj4g YWJzdHJhY3Qgc3ludGF4IHRyZWUpIHdoaWNoIG1ha2UgdGhlIHBhcnNlciBzaW1wbGVyLgo+IAo+ IExpbms6Cj4gaHR0cHM6Ly9naXRodWIuY29tL2RhYmVhei9wbHkvY29tbWl0LzlkN2M0MDA5OWUy M2ZmNzhmOWQ4NmVmNjlhMjZjMWU4YTgzZTcwNmEKPiDCoFsxXQo+IFNpZ25lZC1vZmYtYnk6IE5h bSBDYW8gPG5hbWNhb0BsaW51dHJvbml4LmRlPgo+IC0tLQoKUmV2aWV3ZWQtYnk6IEdhYnJpZWxl IE1vbmFjbyA8Z21vbmFjb0ByZWRoYXQuY29tPgoKPiB2MjoKPiDCoCAtIGZpeCBpZGVudGlmaWVy IHN0YXJ0aW5nIHdpdGggYSBkaWdpdCBpcyBhbGxvd2VkIFtXYW5kZXJdCj4gwqAgLSBmaXh1cCBh c3Qgbm9kZSB1aWQgW0dhYnJpZWxlXQo+IMKgIC0gRml4IHVwIExpdGVyYWwgQVNUIG5vZGUgY29u c3RydWN0aW9uIFtXYW5kZXIsIFNhc2hpa29dCj4gwqAgLSBGSXggdXAgdW5hcnkgb3AgZXJyb3Ig bWVzc2FnZSBbU2FzaGlrb10KPiDCoCAtIEFkZCBuaWNlIGV4Y2VwdGlvbiBoYW5kbGluZyBbR2Fi cmllbGVdCj4gLS0tCj4gwqB0b29scy92ZXJpZmljYXRpb24vcnZnZW4vX19tYWluX18ucHnCoMKg wqDCoCB8wqDCoCA1ICstCj4gwqB0b29scy92ZXJpZmljYXRpb24vcnZnZW4vcnZnZW4vbHRsMmJh LnB5IHwgMjAyICsrKysrKysrKy0tLS0tLS0tLS0tLQo+IC0tCj4gwqAyIGZpbGVzIGNoYW5nZWQs IDgyIGluc2VydGlvbnMoKyksIDEyNSBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvdG9v bHMvdmVyaWZpY2F0aW9uL3J2Z2VuL19fbWFpbl9fLnB5Cj4gYi90b29scy92ZXJpZmljYXRpb24v cnZnZW4vX19tYWluX18ucHkKPiBpbmRleCA1YzkyM2RjMTBkMGYuLjA5MTVjZjg2ZTQzYiAxMDA2 NDQKPiAtLS0gYS90b29scy92ZXJpZmljYXRpb24vcnZnZW4vX19tYWluX18ucHkKPiArKysgYi90 b29scy92ZXJpZmljYXRpb24vcnZnZW4vX19tYWluX18ucHkKPiBAQCAtMTQsNiArMTQsNyBAQCBp ZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgo+IMKgwqDCoMKgIGZyb20gcnZnZW4uY29udGFpbmVy IGltcG9ydCBDb250YWluZXIKPiDCoMKgwqDCoCBmcm9tIHJ2Z2VuLmx0bDJrIGltcG9ydCBsdGwy awo+IMKgwqDCoMKgIGZyb20gcnZnZW4uYXV0b21hdGEgaW1wb3J0IEF1dG9tYXRhRXJyb3IKPiAr wqDCoMKgIGZyb20gcnZnZW4ubHRsMmJhIGltcG9ydCBMVExFcnJvcgo+IMKgwqDCoMKgIGltcG9y dCBhcmdwYXJzZQo+IMKgwqDCoMKgIGltcG9ydCBzeXMKPiDCoAo+IEBAIC01Nyw4ICs1OCw4IEBA IGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgc3lzLmV4aXQoMSkKPiDCoMKgwqDCoMKgwqDCoMKgIGVsc2U6Cj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIG1vbml0b3IgPSBDb250YWluZXIodmFycyhwYXJhbXMpKQo+IC3CoMKgwqAg ZXhjZXB0IEF1dG9tYXRhRXJyb3IgYXMgZToKPiAtwqDCoMKgwqDCoMKgwqAgcHJpbnQoZiJUaGVy ZSB3YXMgYW4gZXJyb3IgcHJvY2Vzc2luZyB7cGFyYW1zLnNwZWN9OiB7ZX0iLAo+IGZpbGU9c3lz LnN0ZGVycikKPiArwqDCoMKgIGV4Y2VwdCAoQXV0b21hdGFFcnJvciwgTFRMRXJyb3IpIGFzIGU6 Cj4gK8KgwqDCoMKgwqDCoMKgIHByaW50KGYiVGhlcmUgd2FzIGFuIGVycm9yIHByb2Nlc3Npbmcg e3BhcmFtcy5zcGVjfTpcbntlfSIsCj4gZmlsZT1zeXMuc3RkZXJyKQo+IMKgwqDCoMKgwqDCoMKg wqAgc3lzLmV4aXQoMSkKPiDCoAo+IMKgwqDCoMKgIHByaW50KGYiV3JpdGluZyB0aGUgbW9uaXRv ciBpbnRvIHRoZSBkaXJlY3Rvcnkge21vbml0b3IubmFtZX0iKQo+IGRpZmYgLS1naXQgYS90b29s cy92ZXJpZmljYXRpb24vcnZnZW4vcnZnZW4vbHRsMmJhLnB5Cj4gYi90b29scy92ZXJpZmljYXRp b24vcnZnZW4vcnZnZW4vbHRsMmJhLnB5Cj4gaW5kZXggMDE2ZTdjZjkzYmJiLi43Y2ViZGE2MWJj ZTggMTAwNjQ0Cj4gLS0tIGEvdG9vbHMvdmVyaWZpY2F0aW9uL3J2Z2VuL3J2Z2VuL2x0bDJiYS5w eQo+ICsrKyBiL3Rvb2xzL3ZlcmlmaWNhdGlvbi9ydmdlbi9ydmdlbi9sdGwyYmEucHkKPiBAQCAt Nyw5ICs3LDcgQEAKPiDCoCMgaHR0cHM6Ly9kb2kub3JnLzEwLjEwMDcvOTc4LTAtMzg3LTM0ODky LTZfMQo+IMKgIyBXaXRoIGV4dHJhIG9wdGltaXphdGlvbnMKPiDCoAo+IC1mcm9tIHBseS5sZXgg aW1wb3J0IGxleAo+IC1mcm9tIHBseS55YWNjIGltcG9ydCB5YWNjCj4gLWZyb20gLmF1dG9tYXRh IGltcG9ydCBBdXRvbWF0YUVycm9yCj4gK2ltcG9ydCBsYXJrCj4gwqAKPiDCoCMgR3JhbW1hcjoK PiDCoCPCoAlsdGwgOjo9IG9wZCB8ICggbHRsICkgfCBsdGwgYmlub3AgbHRsIHwgdW5vcCBsdGwK PiBAQCAtMzAsNDIgKzI4LDQxIEBAIGZyb20gLmF1dG9tYXRhIGltcG9ydCBBdXRvbWF0YUVycm9y Cj4gwqAjwqDCoMKgwqDCoMKgIGltcGx5Cj4gwqAjwqDCoMKgwqDCoMKgIGVxdWl2YWxlbnQKPiDC oAo+IC10b2tlbnMgPSAoCj4gLcKgwqAgJ0FORCcsCj4gLcKgwqAgJ09SJywKPiAtwqDCoCAnSU1Q TFknLAo+IC3CoMKgICdVTlRJTCcsCj4gLcKgwqAgJ0FMV0FZUycsCj4gLcKgwqAgJ0VWRU5UVUFM TFknLAo+IC3CoMKgICdORVhUJywKPiAtwqDCoCAnVkFSSUFCTEUnLAo+IC3CoMKgICdMSVRFUkFM JywKPiAtwqDCoCAnTk9UJywKPiAtwqDCoCAnTFBBUkVOJywKPiAtwqDCoCAnUlBBUkVOJywKPiAt wqDCoCAnQVNTSUdOJywKPiAtKQo+IC0KPiAtdF9BTkQgPSByJ2FuZCcKPiAtdF9PUiA9IHInb3In Cj4gLXRfSU1QTFkgPSByJ2ltcGx5Jwo+IC10X1VOVElMID0gcid1bnRpbCcKPiAtdF9BTFdBWVMg PSByJ2Fsd2F5cycKPiAtdF9ORVhUID0gciduZXh0Jwo+IC10X0VWRU5UVUFMTFkgPSByJ2V2ZW50 dWFsbHknCj4gLXRfVkFSSUFCTEUgPSByJ1tBLVpfMC05XSsnCj4gLXRfTElURVJBTCA9IHIndHJ1 ZXxmYWxzZScKPiAtdF9OT1QgPSByJ25vdCcKPiAtdF9MUEFSRU4gPSByJ1woJwo+IC10X1JQQVJF TiA9IHInXCknCj4gLXRfQVNTSUdOID0gcic9Jwo+IC10X2lnbm9yZV9DT01NRU5UID0gcidcIy4q Jwo+IC10X2lnbm9yZSA9ICcgXHRcbicKPiAtCj4gLWRlZiB0X2Vycm9yKHQpOgo+IC3CoMKgwqAg cmFpc2UgQXV0b21hdGFFcnJvcihmIklsbGVnYWwgY2hhcmFjdGVyICd7dC52YWx1ZVswXX0nIikK PiAtCj4gLWxleGVyID0gbGV4KCkKPiArR1JBTU1BUiA9IHInJycKPiArc3RhcnQ6IGFzc2lnbisK PiArCj4gK2Fzc2lnbjogVkFSSUFCTEUgIj0iIF9sdGwKPiArCj4gK19sdGw6IF9vcGQgfCBiaW5v cCB8IHVub3AKPiArCj4gK19vcGQgOiBWQVJJQUJMRQo+ICvCoMKgwqDCoCB8IExJVEVSQUwKPiAr wqDCoMKgwqAgfCAiKCIgX2x0bCAiKSIKPiArCj4gK3Vub3A6IFVOT1AgX2x0bAo+ICtVTk9QOiAi YWx3YXlzIgo+ICvCoMKgwqDCoCB8ICJldmVudHVhbGx5Igo+ICvCoMKgwqDCoCB8ICJuZXh0Igo+ ICvCoMKgwqDCoCB8ICJub3QiCj4gKwo+ICtiaW5vcDogX29wZCBCSU5PUCBfbHRsCj4gK0JJTk9Q OiAidW50aWwiCj4gK8KgwqDCoMKgwqAgfCAiYW5kIgo+ICvCoMKgwqDCoMKgIHwgIm9yIgo+ICvC oMKgwqDCoMKgIHwgImltcGx5Igo+ICsKPiArVkFSSUFCTEU6IC9bQS1aX11bQS1aMC05X10qLwo+ ICtMSVRFUkFMOiAidHJ1ZSIgfCAiZmFsc2UiCj4gKwo+ICtDT01NRU5UOiAiIyIgLy4qLyAiXG4i Cj4gKyVpZ25vcmUgQ09NTUVOVAo+ICsKPiArJWltcG9ydCBjb21tb24uV1MKPiArJWlnbm9yZSBX Uwo+ICsnJycKPiArCj4gK2NsYXNzIExUTEVycm9yKEV4Y2VwdGlvbik6Cj4gK8KgwqDCoCAiRXhj ZXB0aW9uIHJhaXNlZCBmb3IgbWFsZm9ybWVkIGxpbmVhciB0ZW1wb3JhbCBsb2dpYyIKPiDCoAo+ IMKgY2xhc3MgR3JhcGhOb2RlOgo+IMKgwqDCoMKgIHVpZCA9IDAKPiBAQCAtOTcsNyArOTQsNyBA QCBjbGFzcyBHcmFwaE5vZGU6Cj4gwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gc2VsZi5pZCA8IG90 aGVyLmlkCj4gwqAKPiDCoGNsYXNzIEFTVE5vZGU6Cj4gLcKgwqDCoCB1aWQgPSAxCj4gK8KgwqDC oCB1aWQgPSAwCj4gwqAKPiDCoMKgwqDCoCBkZWYgX19pbml0X18oc2VsZiwgb3ApOgo+IMKgwqDC oMKgwqDCoMKgwqAgc2VsZi5vcCA9IG9wCj4gQEAgLTQzMyw5MCArNDMwLDQ5IEBAIGNsYXNzIExp dGVyYWw6Cj4gwqDCoMKgwqDCoMKgwqDCoCBub2RlLm9sZCB8PSB7bn0KPiDCoMKgwqDCoMKgwqDC oMKgIHJldHVybiBub2RlLmV4cGFuZChub2RlX3NldCkKPiDCoAo+IC1kZWYgcF9zcGVjKHApOgo+ IC3CoMKgwqAgJycnCj4gLcKgwqDCoCBzcGVjIDogYXNzaWduCj4gLcKgwqDCoMKgwqDCoMKgwqAg fCBhc3NpZ24gc3BlYwo+IC3CoMKgwqAgJycnCj4gLcKgwqDCoCBpZiBsZW4ocCkgPT0gMzoKPiAt wqDCoMKgwqDCoMKgwqAgcFsyXS5hcHBlbmQocFsxXSkKPiAtwqDCoMKgwqDCoMKgwqAgcFswXSA9 IHBbMl0KPiAtwqDCoMKgIGVsc2U6Cj4gLcKgwqDCoMKgwqDCoMKgIHBbMF0gPSBbcFsxXV0KPiAt Cj4gLWRlZiBwX2Fzc2lnbihwKToKPiAtwqDCoMKgICcnJwo+IC3CoMKgwqAgYXNzaWduIDogVkFS SUFCTEUgQVNTSUdOIGx0bAo+IC3CoMKgwqAgJycnCj4gLcKgwqDCoCBwWzBdID0gKHBbMV0sIHBb M10pCj4gLQo+IC1kZWYgcF9sdGwocCk6Cj4gLcKgwqDCoCAnJycKPiAtwqDCoMKgIGx0bCA6IG9w ZAo+IC3CoMKgwqDCoMKgwqDCoCB8IGJpbm9wCj4gLcKgwqDCoMKgwqDCoMKgIHwgdW5vcAo+IC3C oMKgwqAgJycnCj4gLcKgwqDCoCBwWzBdID0gcFsxXQo+IC0KPiAtZGVmIHBfb3BkKHApOgo+IC3C oMKgwqAgJycnCj4gLcKgwqDCoCBvcGQgOiBWQVJJQUJMRQo+IC3CoMKgwqDCoMKgwqDCoCB8IExJ VEVSQUwKPiAtwqDCoMKgwqDCoMKgwqAgfCBMUEFSRU4gbHRsIFJQQVJFTgo+IC3CoMKgwqAgJycn Cj4gLcKgwqDCoCBpZiBwWzFdID09ICJ0cnVlIjoKPiAtwqDCoMKgwqDCoMKgwqAgcFswXSA9IEFT VE5vZGUoTGl0ZXJhbChUcnVlKSkKPiAtwqDCoMKgIGVsaWYgcFsxXSA9PSAiZmFsc2UiOgo+IC3C oMKgwqDCoMKgwqDCoCBwWzBdID0gQVNUTm9kZShMaXRlcmFsKEZhbHNlKSkKPiAtwqDCoMKgIGVs aWYgcFsxXSA9PSAnKCc6Cj4gLcKgwqDCoMKgwqDCoMKgIHBbMF0gPSBwWzJdCj4gLcKgwqDCoCBl bHNlOgo+IC3CoMKgwqDCoMKgwqDCoCBwWzBdID0gQVNUTm9kZShWYXJpYWJsZShwWzFdKSkKPiAt Cj4gLWRlZiBwX3Vub3AocCk6Cj4gLcKgwqDCoCAnJycKPiAtwqDCoMKgIHVub3AgOiBBTFdBWVMg bHRsCj4gLcKgwqDCoMKgwqDCoMKgwqAgfCBFVkVOVFVBTExZIGx0bAo+IC3CoMKgwqDCoMKgwqDC oMKgIHwgTkVYVCBsdGwKPiAtwqDCoMKgwqDCoMKgwqDCoCB8IE5PVCBsdGwKPiAtwqDCoMKgICcn Jwo+IC3CoMKgwqAgaWYgcFsxXSA9PSAiYWx3YXlzIjoKPiAtwqDCoMKgwqDCoMKgwqAgb3AgPSBB bHdheXNPcChwWzJdKQo+IC3CoMKgwqAgZWxpZiBwWzFdID09ICJldmVudHVhbGx5IjoKPiAtwqDC oMKgwqDCoMKgwqAgb3AgPSBFdmVudHVhbGx5T3AocFsyXSkKPiAtwqDCoMKgIGVsaWYgcFsxXSA9 PSAibmV4dCI6Cj4gLcKgwqDCoMKgwqDCoMKgIG9wID0gTmV4dE9wKHBbMl0pCj4gLcKgwqDCoCBl bGlmIHBbMV0gPT0gIm5vdCI6Cj4gLcKgwqDCoMKgwqDCoMKgIG9wID0gTm90T3AocFsyXSkKPiAt wqDCoMKgIGVsc2U6Cj4gLcKgwqDCoMKgwqDCoMKgIHJhaXNlIEF1dG9tYXRhRXJyb3IoZiJJbnZh bGlkIHVuYXJ5IG9wZXJhdG9yIHtwWzFdfSIpCj4gLQo+IC3CoMKgwqAgcFswXSA9IEFTVE5vZGUo b3ApCj4gLQo+IC1kZWYgcF9iaW5vcChwKToKPiAtwqDCoMKgICcnJwo+IC3CoMKgwqAgYmlub3Ag OiBvcGQgVU5USUwgbHRsCj4gLcKgwqDCoMKgwqDCoMKgwqDCoCB8IG9wZCBBTkQgbHRsCj4gLcKg wqDCoMKgwqDCoMKgwqDCoCB8IG9wZCBPUiBsdGwKPiAtwqDCoMKgwqDCoMKgwqDCoMKgIHwgb3Bk IElNUExZIGx0bAo+IC3CoMKgwqAgJycnCj4gLcKgwqDCoCBpZiBwWzJdID09ICJhbmQiOgo+IC3C oMKgwqDCoMKgwqDCoCBvcCA9IEFuZE9wKHBbMV0sIHBbM10pCj4gLcKgwqDCoCBlbGlmIHBbMl0g PT0gInVudGlsIjoKPiAtwqDCoMKgwqDCoMKgwqAgb3AgPSBVbnRpbE9wKHBbMV0sIHBbM10pCj4g LcKgwqDCoCBlbGlmIHBbMl0gPT0gIm9yIjoKPiAtwqDCoMKgwqDCoMKgwqAgb3AgPSBPck9wKHBb MV0sIHBbM10pCj4gLcKgwqDCoCBlbGlmIHBbMl0gPT0gImltcGx5IjoKPiAtwqDCoMKgwqDCoMKg wqAgb3AgPSBJbXBseU9wKHBbMV0sIHBbM10pCj4gLcKgwqDCoCBlbHNlOgo+IC3CoMKgwqDCoMKg wqDCoCByYWlzZSBBdXRvbWF0YUVycm9yKGYiSW52YWxpZCBiaW5hcnkgb3BlcmF0b3Ige3BbMl19 IikKPiAtCj4gLcKgwqDCoCBwWzBdID0gQVNUTm9kZShvcCkKPiAtCj4gLXBhcnNlciA9IHlhY2Mo KQo+ICtjbGFzcyBUcmFuc2Zvcm0obGFyay52aXNpdG9ycy5UcmFuc2Zvcm1lcik6Cj4gK8KgwqDC oCBkZWYgdW5vcChzZWxmLCBub2RlKToKPiArwqDCoMKgwqDCoMKgwqAgaWYgbm9kZVswXSA9PSAi YWx3YXlzIjoKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gQVNUTm9kZShBbHdheXNP cChub2RlWzFdKSkKPiArwqDCoMKgwqDCoMKgwqAgaWYgbm9kZVswXSA9PSAiZXZlbnR1YWxseSI6 Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIEFTVE5vZGUoRXZlbnR1YWxseU9wKG5v ZGVbMV0pKQo+ICvCoMKgwqDCoMKgwqDCoCBpZiBub2RlWzBdID09ICJuZXh0IjoKPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gQVNUTm9kZShOZXh0T3Aobm9kZVsxXSkpCj4gK8KgwqDC oMKgwqDCoMKgIGlmIG5vZGVbMF0gPT0gIm5vdCI6Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAg cmV0dXJuIEFTVE5vZGUoTm90T3Aobm9kZVsxXSkpCj4gK8KgwqDCoMKgwqDCoMKgIHJhaXNlIFZh bHVlRXJyb3IoIlVua25vd24gb3BlcmF0b3IgJXMiICUgbm9kZVswXSkKPiArCj4gK8KgwqDCoCBk ZWYgYmlub3Aoc2VsZiwgbm9kZSk6Cj4gK8KgwqDCoMKgwqDCoMKgIGlmIG5vZGVbMV0gPT0gInVu dGlsIjoKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gQVNUTm9kZShVbnRpbE9wKG5v ZGVbMF0sIG5vZGVbMl0pKQo+ICvCoMKgwqDCoMKgwqDCoCBpZiBub2RlWzFdID09ICJhbmQiOgo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBBU1ROb2RlKEFuZE9wKG5vZGVbMF0sIG5v ZGVbMl0pKQo+ICvCoMKgwqDCoMKgwqDCoCBpZiBub2RlWzFdID09ICJvciI6Cj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgcmV0dXJuIEFTVE5vZGUoT3JPcChub2RlWzBdLCBub2RlWzJdKSkKPiAr wqDCoMKgwqDCoMKgwqAgaWYgbm9kZVsxXSA9PSAiaW1wbHkiOgo+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHJldHVybiBBU1ROb2RlKEltcGx5T3Aobm9kZVswXSwgbm9kZVsyXSkpCj4gK8KgwqDC oMKgwqDCoMKgIHJhaXNlIFZhbHVlRXJyb3IoIlVua25vd24gb3BlcmF0b3IgJXMiICUgbm9kZVsx XSkKPiArCj4gK8KgwqDCoCBkZWYgVkFSSUFCTEUoc2VsZiwgYXJncyk6Cj4gK8KgwqDCoMKgwqDC oMKgIHJldHVybiBBU1ROb2RlKFZhcmlhYmxlKGFyZ3MpKQo+ICsKPiArwqDCoMKgIGRlZiBMSVRF UkFMKHNlbGYsIGFyZ3MpOgo+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gQVNUTm9kZShMaXRlcmFs KGFyZ3MgPT0gInRydWUiKSkKPiArCj4gK8KgwqDCoCBkZWYgc3RhcnQoc2VsZiwgbm9kZSk6Cj4g K8KgwqDCoMKgwqDCoMKgIHJldHVybiBub2RlCj4gKwo+ICvCoMKgwqAgZGVmIGFzc2lnbihzZWxm LCBub2RlKToKPiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIG5vZGVbMF0ub3AubmFtZSwgbm9kZVsx XQo+ICsKPiArcGFyc2VyID0gbGFyay5MYXJrKEdSQU1NQVIpCj4gwqAKPiDCoGRlZiBwYXJzZV9s dGwoczogc3RyKSAtPiBBU1ROb2RlOgo+IC3CoMKgwqAgc3BlYyA9IHBhcnNlci5wYXJzZShzKQo+ ICvCoMKgwqAgdHJ5Ogo+ICvCoMKgwqDCoMKgwqDCoCBzcGVjID0gcGFyc2VyLnBhcnNlKHMpCj4g K8KgwqDCoCBleGNlcHQgbGFyay5leGNlcHRpb25zLlVuZXhwZWN0ZWRJbnB1dCBhcyBlOgo+ICvC oMKgwqDCoMKgwqDCoCByYWlzZSBMVExFcnJvcihzdHIoZSkpCj4gK8KgwqDCoCBzcGVjID0gVHJh bnNmb3JtKCkudHJhbnNmb3JtKHNwZWMpCj4gwqAKPiDCoMKgwqDCoCBydWxlID0gTm9uZQo+IMKg wqDCoMKgIHN1YmV4cHIgPSB7fQo+IEBAIC01MjgsNyArNDg0LDcgQEAgZGVmIHBhcnNlX2x0bChz OiBzdHIpIC0+IEFTVE5vZGU6Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN1YmV4cHJbYXNz aWduWzBdXSA9IGFzc2lnblsxXQo+IMKgCj4gwqDCoMKgwqAgaWYgcnVsZSBpcyBOb25lOgo+IC3C oMKgwqDCoMKgwqDCoCByYWlzZSBBdXRvbWF0YUVycm9yKCJQbGVhc2UgZGVmaW5lIHlvdXIgc3Bl Y2lmaWNhdGlvbiBpbiB0aGUKPiBcIlJVTEUgPSA8TFRMIHNwZWM+XCIgZm9ybWF0IikKPiArwqDC oMKgwqDCoMKgwqAgcmFpc2UgTFRMRXJyb3IoIlBsZWFzZSBkZWZpbmUgeW91ciBzcGVjaWZpY2F0 aW9uIGluIHRoZQo+IFwiUlVMRSA9IDxMVEwgc3BlYz5cIiBmb3JtYXQiKQo+IMKgCj4gwqDCoMKg wqAgZm9yIG5vZGUgaW4gcnVsZToKPiDCoMKgwqDCoMKgwqDCoMKgIGlmIG5vdCBpc2luc3RhbmNl KG5vZGUub3AsIFZhcmlhYmxlKToK