From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: =?UTF-8?Q?Cl=c3=a9ment_Pit--Claudel?= Newsgroups: gmane.emacs.devel Subject: Documentation on debugging regexp performance Date: Thu, 21 Jan 2016 00:29:58 -0500 Message-ID: <56A06CD6.2090707@gmail.com> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="9CU6VUeFpMjhTQw4Sqj5g79ibpjCwJTI1" X-Trace: ger.gmane.org 1453354255 28516 80.91.229.3 (21 Jan 2016 05:30:55 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Thu, 21 Jan 2016 05:30:55 +0000 (UTC) To: Emacs developers Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Thu Jan 21 06:30:46 2016 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1aM7pU-0001ji-1p for ged-emacs-devel@m.gmane.org; Thu, 21 Jan 2016 06:30:44 +0100 Original-Received: from localhost ([::1]:46058 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aM7pT-0007Zc-D2 for ged-emacs-devel@m.gmane.org; Thu, 21 Jan 2016 00:30:43 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:41726) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aM7p4-0007ZQ-Gx for emacs-devel@gnu.org; Thu, 21 Jan 2016 00:30:21 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aM7p1-0005Bg-47 for emacs-devel@gnu.org; Thu, 21 Jan 2016 00:30:18 -0500 Original-Received: from mout.kundenserver.de ([217.72.192.75]:53613) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aM7p0-0005BW-Jf for emacs-devel@gnu.org; Thu, 21 Jan 2016 00:30:15 -0500 Original-Received: from [172.17.100.143] ([24.129.143.85]) by mrelayeu.kundenserver.de (mreue103) with ESMTPSA (Nemesis) id 0Ld3z6-1ZeELc0hSi-00iB8G for ; Thu, 21 Jan 2016 06:30:13 +0100 X-Enigmail-Draft-Status: N1110 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.5.1 X-Provags-ID: V03:K0:jQKT6JKJIUU70OnW1fGV13SFvmcz6k5KpQ/Peckw+9OoGdddTxq 6WWUottcilzUncOAlyUuxYQzz2vmnW9lur7aAfCpBEApuq40G2DRYgF6kBPj+UtqzvvWYv/ Pi1yDkBFNiOsPFg0fLekxehpma95EoRU0elRP4qgScaD+jeuq953Z1L/ZlZlek7lA1Xt44e Uaietl1l3FkMJgOTsNqKQ== X-UI-Out-Filterresults: notjunk:1;V01:K0:eXW6biMxUyI=:Lo4qB9a8y3dQzBTcQkuS/j Jkq62VruPvuTAjBmaY1aGnPMyGIcwtdZpFbNKjhTlnQvaTbJbWrn39JOAXHCz2XYptr5u5LVc o9GtuWTngB5n0ZEc335j+7e6/ZAnsLk9GP9Ln+PbsR1xReuVlEF1Zg8kkeukHEWroD7/ytbQI UWS/kQuAYM8iAqDrk1fS9/cA+kt8X3OOU/oY2jFw9iq/hfXsRMauopXaT/leHIlagJ7IIL3ok 2OdI/xLcVanAeG0Rm5IzujwQVVecGXwI2+7AomIItgtyvCeqcW0eCEoY972gAyjue5G2lagAc Q6Y+WxQYohbXlz01m6MH9CWQn4f0PuF6GPkI2nHtXncpTuxJZw2V+pdohqheQJhOlOFKGHcFp 50vCBxYpLL3bZzFntoY+Bwp56gtlOBdNPdV9vpVPjwkaoyAoyYbbDqe1DF7hBt6MrAZyTFwtd ipMooPQ7v4UboV2v7FuXQPpHdPQlSGuoqaKg3x+BPAb82dDADPgMqwBoqL6OtKE+1xNjq3M1+ 8zccVDXjjVp4dCqlp8RkhtLpxL/3zBEZVqpojQK0TmRstBDAF3PLb+PlVm88sTr1up3o7bZqd JnUWpruELg+nBMwrGjiy+3BIWK8E0sl4QhTaJoZX14F9oBBN6SxvIeBwdtbRWPW7tuf2PYP17 Dh+qcCnlbTtR6wUmG/5a7YE9REqCR6LnPllLg8z8m+zRKl7RHhkkQ7OEAp4gSeKSuoU8= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 217.72.192.75 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:198490 Archived-At: This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --9CU6VUeFpMjhTQw4Sqj5g79ibpjCwJTI1 Content-Type: multipart/mixed; boundary="------------080501000809020908040802" This is a multi-part message in MIME format. --------------080501000809020908040802 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hi emacs-devel, I'm running into a surprising regular expressions issue. I have attached = a file (~50k) in which (re-search-forward " +[^:=3D]+ +:=3D?") seems to= be extremely slow. (I killed it after 30 seconds). Truncating the file t= o its first 20 lines reduces the time for re-search-forward to about a se= cond, which is still extremely slow.=20 Are there good resources on how to rewrite regexps to make them Emacs-fri= endly? I didn't find such documentation, and I'm puzzled as to what could= make the regexp above hard to re-search-forward for. Cheers, Cl=C3=A9ment. --------------080501000809020908040802 Content-Type: text/plain; charset=UTF-8; name="large-goal" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="large-goal" VmVjdG9yLnQgbWV0aFNpZyAoUyBxMCkgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbWF0Y2gKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB2MCBhcyB2JzAgaW4gKFZlY3Rvci50IF8gbTApCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAobWF0Y2ggbTAgYXMgbTEgcmV0dXJuICguLiAtPiAuLikgd2l0 aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTyA9PiBm dW4gXyA6IFZlY3Rvci50IG1ldGhTaWcgTyA9PiBGYWxzZSAtPiBUcnVlCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTIG4wID0+IGZ1biBfIDogVmVj dG9yLnQgbWV0aFNpZyAuLiA9PiBGaW4udCBuMCAtPiBtZXRoU2lnCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kIHYnMCkKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgd2l0aAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IFZlY3Rvci5uaWwgPT4gZnVuIGRldmlsIDogRmFsc2UgPT4gbWF0 Y2ggZGV2aWwgcmV0dXJuIFRydWUgd2l0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGVuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8IFZlY3Rvci5jb25zIF8gbjAgdDAgPT4gZnVuIHAxIDogRmluLnQgbjAg PT4gbnRoX2ZpeCBuMCB0MCBwMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBlbmQgcCcwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kIHYn KSBuIHQgcDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCBwJwogICAgICAgICAg ICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAoVmVjdG9yRGVm LmNvbnMgbWV0aFNpZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCdWlsZF9tZXRo U2lnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFN0cmluZyAoQXNjaWkgZmFs c2UgZmFsc2UgdHJ1ZSBmYWxzZSB0cnVlIHRydWUgdHJ1ZSBmYWxzZSkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoU3RyaW5nIChBc2NpaSB0cnVlIHRydWUgdHJ1ZSB0 cnVlIGZhbHNlIHRydWUgdHJ1ZSBmYWxzZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoU3RyaW5nIChBc2NpaSB0cnVlIHRydWUgdHJ1ZSB0cnVlIHRydWUgZmFs c2UgdHJ1ZSBmYWxzZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoU3RyaW5nIChBc2NpaSB0cnVlIHRydWUgZmFsc2UgZmFsc2UgdHJ1ZSB0cnVlIHRydWUg ZmFsc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFN0 cmluZyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo QXNjaWkgZmFsc2UgZmFsc2UgdHJ1ZSBmYWxzZSB0cnVlIHRydWUgdHJ1ZSBmYWxzZSkKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU3RyaW5nIAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChBc2Np aSBmYWxzZSB0cnVlIGZhbHNlIGZhbHNlIHRydWUgdHJ1ZSB0cnVlIGZhbHNlKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTdHJpbmcgCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFzY2lp IHRydWUgZmFsc2UgZmFsc2UgdHJ1ZSBmYWxzZSB0cnVlIHRydWUgZmFsc2UpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFN0cmluZyAKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQXNjaWkg ZmFsc2UgdHJ1ZSB0cnVlIHRydWUgZmFsc2UgdHJ1ZSB0cnVlIGZhbHNlKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTdHJpbmcgCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFzY2lpIHRy dWUgdHJ1ZSB0cnVlIGZhbHNlIGZhbHNlIHRydWUgdHJ1ZSBmYWxzZSkgRW1wdHlTdHJpbmcp KSkpKSkpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQG5pbCBUeXBlKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChAU29tZSBUeXBlCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggSFNMTSByZXR1cm4gVHlwZSB3aXRoCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCdWlsZF9TdHJpbmdMaWtlTWlu IFN0cmluZzAgXyBfID0+IFN0cmluZzAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBlbmQpKSAoUyAoUyAoUyAoUyAoUyAoUyBPKSkpKSkpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKFZlY3RvckRlZi5jb25zIG1ldGhTaWcKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoQnVpbGRfbWV0aFNpZwogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChTdHJpbmcgKEFzY2lpIHRydWUgdHJ1ZSBmYWxzZSBmYWxzZSBmYWxzZSB0 cnVlIHRydWUgZmFsc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KFN0cmluZyAoQXNjaWkgZmFsc2UgZmFsc2UgZmFsc2UgdHJ1ZSBmYWxzZSB0cnVlIHRydWUg ZmFsc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFN0cmlu ZyAoQXNjaWkgdHJ1ZSBmYWxzZSBmYWxzZSBmYWxzZSBmYWxzZSB0cnVlIHRydWUgZmFsc2Up CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFN0cmluZyAK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQXNjaWkg ZmFsc2UgdHJ1ZSBmYWxzZSBmYWxzZSB0cnVlIHRydWUgdHJ1ZSBmYWxzZSkKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU3RyaW5nIAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChBc2NpaSB0cnVl IHRydWUgdHJ1ZSB0cnVlIHRydWUgZmFsc2UgdHJ1ZSBmYWxzZSkKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU3RyaW5nIAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChBc2NpaSB0cnVlIGZh bHNlIGZhbHNlIGZhbHNlIGZhbHNlIHRydWUgdHJ1ZSBmYWxzZSkKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU3RyaW5nIAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChBc2NpaSBmYWxzZSBm YWxzZSB0cnVlIGZhbHNlIHRydWUgdHJ1ZSB0cnVlIGZhbHNlKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTdHJpbmcgCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFzY2lpIHRydWUgdHJ1 ZSB0cnVlIHRydWUgdHJ1ZSBmYWxzZSB0cnVlIGZhbHNlKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTdHJpbmcgCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFzY2lpIHRydWUgZmFsc2Ug dHJ1ZSB0cnVlIGZhbHNlIHRydWUgdHJ1ZSBmYWxzZSkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU3RyaW5nICguLikgKC4uKSkpKSkpKSkp KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQGNvbnMgVHlwZSBuYXQg KEBjb25zIFR5cGUgKGFzY2lpIC0+IGJvb2wpIChAbmlsIFR5cGUpKSkgCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKEBTb21lIFR5cGUgYm9vbCkpIAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChTIChTIChTIChTIChTIE8pKSkpKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChWZWN0b3JEZWYuY29ucyBtZXRoU2lnCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKEJ1aWxkX21ldGhTaWcKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoU3RyaW5nIChBc2NpaSB0cnVlIHRydWUgdHJ1 ZSBmYWxzZSBmYWxzZSB0cnVlIHRydWUgZmFsc2UpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKFN0cmluZyAoQXNjaWkgdHJ1ZSBmYWxzZSB0cnVlIGZhbHNl IGZhbHNlIHRydWUgdHJ1ZSBmYWxzZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoU3RyaW5nIChBc2NpaSBmYWxzZSBmYWxzZSB0cnVlIGZhbHNlIHRy dWUgdHJ1ZSB0cnVlIGZhbHNlKSBFbXB0eVN0cmluZykpKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChAY29ucyBUeXBlIG5hdCAoQG5pbCBUeXBlKSkgCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEBTb21lIFR5cGUgYXNjaWkpKSAK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUyAoUyAoUyAoUyBPKSkpKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChWZWN0b3JEZWYuY29ucyBtZXRo U2lnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEJ1aWxkX21ldGhT aWcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU3RyaW5nIChB c2NpaSBmYWxzZSBmYWxzZSB0cnVlIHRydWUgZmFsc2UgdHJ1ZSB0cnVlIGZhbHNlKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTdHJpbmcgCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFzY2lpIHRydWUg ZmFsc2UgdHJ1ZSBmYWxzZSBmYWxzZSB0cnVlIHRydWUgZmFsc2UpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFN0cmluZyAKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQXNjaWkgZmFsc2UgdHJ1 ZSB0cnVlIHRydWUgZmFsc2UgdHJ1ZSB0cnVlIGZhbHNlKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTdHJpbmcgCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFzY2lpIHRydWUgdHJ1ZSB0 cnVlIGZhbHNlIGZhbHNlIHRydWUgdHJ1ZSBmYWxzZSkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU3RyaW5nIAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChBc2NpaSBmYWxzZSBmYWxzZSB0 cnVlIGZhbHNlIHRydWUgdHJ1ZSB0cnVlIGZhbHNlKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTdHJpbmcgCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFzY2lpIGZhbHNlIGZhbHNlIGZh bHNlIHRydWUgZmFsc2UgdHJ1ZSB0cnVlIGZhbHNlKSBFbXB0eVN0cmluZykpKSkpKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChAbmlsIFR5cGUpIAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChAU29tZSBUeXBlIG5hdCkp IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTIChTIChTIE8pKSkK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVmVjdG9yRGVmLmNvbnMg bWV0aFNpZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCdWls ZF9tZXRoU2lnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KFN0cmluZyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoQXNjaWkgZmFsc2UgZmFsc2UgdHJ1ZSBmYWxzZSB0cnVlIHRydWUgdHJ1ZSBmYWxzZSkK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU3RyaW5n IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChB c2NpaSB0cnVlIGZhbHNlIGZhbHNlIGZhbHNlIGZhbHNlIHRydWUgdHJ1ZSBmYWxzZSkKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU3RyaW5n IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChB c2NpaSB0cnVlIHRydWUgZmFsc2UgdHJ1ZSBmYWxzZSB0cnVlIHRydWUgZmFsc2UpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFN0cmluZyAK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQXNj aWkgdHJ1ZSBmYWxzZSB0cnVlIGZhbHNlIGZhbHNlIHRydWUgdHJ1ZSBmYWxzZSkgRW1wdHlT dHJpbmcpKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KEBjb25zIFR5cGUgbmF0IChAbmlsIFR5cGUpKSAKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoQE5vbmUgVHlwZSkpIAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChTIChTIE8pKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChWZWN0b3JEZWYuY29ucyBtZXRoU2lnCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEJ1aWxkX21ldGhTaWcKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU3RyaW5nIAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChBc2NpaSBm YWxzZSBmYWxzZSB0cnVlIGZhbHNlIGZhbHNlIHRydWUgdHJ1ZSBmYWxzZSkKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU3RyaW5nIAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChBc2NpaSBm YWxzZSB0cnVlIGZhbHNlIGZhbHNlIHRydWUgdHJ1ZSB0cnVlIGZhbHNlKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTdHJpbmcgCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFzY2lpIHRy dWUgdHJ1ZSB0cnVlIHRydWUgZmFsc2UgdHJ1ZSB0cnVlIGZhbHNlKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTdHJpbmcgCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFzY2lpIGZhbHNl IGZhbHNlIGZhbHNlIGZhbHNlIHRydWUgdHJ1ZSB0cnVlIGZhbHNlKSBFbXB0eVN0cmluZykp KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQGNv bnMgVHlwZSBuYXQgKEBuaWwgVHlwZSkpIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChATm9uZSBUeXBlKSkgCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKFMgTykKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoVmVjdG9yRGVmLmNvbnMgbWV0aFNpZwogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCdWlsZF9tZXRoU2lnCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFN0cmlu ZyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo QXNjaWkgdHJ1ZSB0cnVlIGZhbHNlIGZhbHNlIHRydWUgdHJ1ZSB0cnVlIGZhbHNlKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTdHJpbmcg CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFz Y2lpIGZhbHNlIGZhbHNlIGZhbHNlIGZhbHNlIHRydWUgdHJ1ZSB0cnVlIGZhbHNlKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTdHJpbmcg CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFz Y2lpIGZhbHNlIGZhbHNlIHRydWUgdHJ1ZSBmYWxzZSB0cnVlIHRydWUgZmFsc2UpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFN0cmluZyAK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQXNj aWkgdHJ1ZSBmYWxzZSBmYWxzZSB0cnVlIGZhbHNlIHRydWUgdHJ1ZSBmYWxzZSkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU3RyaW5nICgu LikgKC4uKSkpKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKEBjb25zIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFR5cGUgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHByb2QgbmF0IChwcm9kIG5hdCBuYXQpKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChAY29ucyBUeXBlIG5hdCAo QGNvbnMgVHlwZSBuYXQgKEBuaWwgVHlwZSkpKSkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoQFNvbWUgVHlwZSAobGlzdCBuYXQpKSkgTyAK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVmVjdG9y RGVmLm5pbCBtZXRoU2lnKSkpKSkpKSkgCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy biAobGlzdCBUeXBlKQogICAgICAgICAgICAgICAgICAgICAgd2l0aAogICAgICAgICAgICAg ICAgICAgICAgfCBCdWlsZF9tZXRoU2lnIF8gbWV0aERvbSBfID0+IG1ldGhEb20KICAgICAg ICAgICAgICAgICAgICAgIGVuZAogICAgICAgICAgICAgICAgICAgICAgbWF0Y2gKICAgICAg ICAgICAgICAgICAgICAgICAgbWF0Y2ggaWR4IGluIChGaW4udCBtJykgcmV0dXJuIChWZWN0 b3IudCBtZXRoU2lnIG0nIC0+IG1ldGhTaWcpIHdpdGgKICAgICAgICAgICAgICAgICAgICAg ICAgfCBGaW4uRjEgcSA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuIHYgOiBW ZWN0b3IudCBtZXRoU2lnIChTIHEpID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBt YXRjaAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGFzIHYnIGluIChWZWN0b3Iu dCBfIG0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBtIGFzIG0wIHJldHVybiAoVmVjdG9yLnQg bWV0aFNpZyBtMCAtPiBUeXBlKSB3aXRoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgTyA9PiBmdW4gXyA6IFZlY3Rvci50IG1ldGhTaWcgTyA9PiBGYWxzZSAtPiBUcnVl CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUyBuID0+IGZ1biBfIDogVmVj dG9yLnQgbWV0aFNpZyAoUyBuKSA9PiBtZXRoU2lnCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGVuZCB2JykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGgKICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgVmVjdG9yLm5pbCA9PiBmdW4gZGV2aWwgOiBG YWxzZSA9PiBtYXRjaCBkZXZpbCByZXR1cm4gVHJ1ZSB3aXRoCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8IFZlY3Rvci5jb25zIGggbiBfID0+IGgKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGVuZAogICAgICAgICAgICAgICAgICAgICAgICB8IEZpbi5GUyBxIHAnID0+ CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW4gdiA6IFZlY3Rvci50IG1ldGhTaWcg KFMgcSkgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHYgYXMgdicgaW4gKFZlY3Rvci50IF8gbSkKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKG1hdGNoIG0gYXMgbTAgcmV0dXJuIChWZWN0b3IudCBtZXRoU2lnIG0wIC0+IFR5 cGUpIHdpdGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBPID0+IGZ1biBf IDogVmVjdG9yLnQgbWV0aFNpZyBPID0+IEZhbHNlIC0+IFRydWUKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCBTIG4gPT4gZnVuIF8gOiBWZWN0b3IudCBtZXRoU2lnIChT IG4pID0+IEZpbi50IG4gLT4gbWV0aFNpZwogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBlbmQgdicpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8IFZlY3Rvci5uaWwgPT4gZnVuIGRldmlsIDogRmFsc2Ug PT4gbWF0Y2ggZGV2aWwgcmV0dXJuIFRydWUgd2l0aAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCBWZWN0b3IuY29ucyBfIG4gdCA9PgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGZ1biBwMCA6IEZpbi50IG4gPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoZml4IG50aF9maXggKG0gOiBuYXQpICh2JyA6IFZlY3Rvci50IG1ldGhTaWcgbSkg KHAgOiBGaW4udCBtKSB7c3RydWN0IHYnfSA6CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbWV0aFNpZyA6PQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG1hdGNoIHAgaW4gKEZpbi50IG0nKSByZXR1cm4gKFZlY3Rvci50IG1ldGhTaWcgbScgLT4g bWV0aFNpZykgd2l0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRmlu LkYxIHEwID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1biB2 MCA6IFZlY3Rvci50IG1ldGhTaWcgKFMgcTApID0+CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG1hdGNoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdjAgYXMgdicwIGluIChWZWN0b3IudCBfIG0wKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIG0wIGFzIG0xIHJldHVybiAoVmVjdG9yLnQg bWV0aFNpZyBtMSAtPiBUeXBlKSB3aXRoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCBPID0+IGZ1biBfIDogVmVjdG9yLnQgbWV0aFNpZyBPID0+IEZh bHNlIC0+IFRydWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8IFMgbjAgPT4gZnVuIF8gOiBWZWN0b3IudCBtZXRoU2lnICguLikgPT4gbWV0aFNpZwog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCB2JzApCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGgKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBWZWN0b3IubmlsID0+IGZ1biBkZXZpbCA6 IEZhbHNlID0+IG1hdGNoIGRldmlsIHJldHVybiBUcnVlIHdpdGgKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCBWZWN0b3IuY29ucyBoIG4wIF8gPT4gaAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8IEZpbi5GUyBxMCBwJzAgPT4KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZnVuIHYwIDogVmVjdG9yLnQgbWV0aFNpZyAoUyBx MCkgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MCBhcyB2JzAgaW4gKFZl Y3Rvci50IF8gbTApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cmV0dXJuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0 Y2ggbTAgYXMgbTEgcmV0dXJuICguLiAtPiAuLikgd2l0aAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgTyA9PiBmdW4gXyA6IFZlY3Rvci50IG1ldGhT aWcgTyA9PiBGYWxzZSAtPiBUcnVlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCBTIG4wID0+IGZ1biBfIDogVmVjdG9yLnQgbWV0aFNpZyAuLiA9PiBG aW4udCBuMCAtPiBtZXRoU2lnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZW5kIHYnMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgd2l0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFZlY3Rv ci5uaWwgPT4gZnVuIGRldmlsIDogRmFsc2UgPT4gbWF0Y2ggZGV2aWwgcmV0dXJuIFRydWUg d2l0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGVuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFZlY3Rvci5j b25zIF8gbjAgdDAgPT4gZnVuIHAxIDogRmluLnQgbjAgPT4gbnRoX2ZpeCBuMCB0MCBwMQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQgcCcwCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kIHYnKSBuIHQgcDAKICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGVuZCBwJwogICAgICAgICAgICAgICAgICAgICAgICBlbmQKICAg ICAgICAgICAgICAgICAgICAgICAgICAoVmVjdG9yRGVmLmNvbnMgbWV0aFNpZwogICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChCdWlsZF9tZXRoU2lnCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKFN0cmluZyAoQXNjaWkgZmFsc2UgZmFsc2UgdHJ1ZSBmYWxzZSB0 cnVlIHRydWUgdHJ1ZSBmYWxzZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoU3RyaW5nIChBc2NpaSB0cnVlIHRydWUgdHJ1ZSB0cnVlIGZhbHNlIHRydWUgdHJ1ZSBm YWxzZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU3RyaW5nIChB c2NpaSB0cnVlIHRydWUgdHJ1ZSB0cnVlIHRydWUgZmFsc2UgdHJ1ZSBmYWxzZSkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU3RyaW5nIChBc2NpaSB0cnVl IHRydWUgZmFsc2UgZmFsc2UgdHJ1ZSB0cnVlIHRydWUgZmFsc2UpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFN0cmluZyAKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQXNjaWkgZmFsc2UgZmFsc2UgdHJ1 ZSBmYWxzZSB0cnVlIHRydWUgdHJ1ZSBmYWxzZSkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoU3RyaW5nIAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChBc2NpaSBmYWxzZSB0cnVlIGZhbHNlIGZh bHNlIHRydWUgdHJ1ZSB0cnVlIGZhbHNlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChTdHJpbmcgCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFzY2lpIHRydWUgZmFsc2UgZmFsc2UgdHJ1 ZSBmYWxzZSB0cnVlIHRydWUgZmFsc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKFN0cmluZyAKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoQXNjaWkgZmFsc2UgdHJ1ZSB0cnVlIHRydWUg ZmFsc2UgdHJ1ZSB0cnVlIGZhbHNlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChTdHJpbmcgCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKEFzY2lpIHRydWUgdHJ1ZSB0cnVlIGZhbHNlIGZh bHNlIHRydWUgdHJ1ZSBmYWxzZSkgRW1wdHlTdHJpbmcpKSkpKSkpKSkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoQG5pbCBUeXBlKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChAU29tZSBUeXBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbWF0Y2ggSFNMTSByZXR1cm4gVHlwZSB3aXRoCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCBCdWlsZF9TdHJpbmdMaWtlTWluIFN0cmluZzAgXyBfID0+IFN0cmlu ZzAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpKSAoUyAoUyAoUyAo UyAoUyAoUyBPKSkpKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFZlY3RvckRl Zi5jb25zIG1ldGhTaWcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQnVpbGRf bWV0aFNpZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTdHJpbmcgKEFz Y2lpIHRydWUgdHJ1ZSBmYWxzZSBmYWxzZSBmYWxzZSB0cnVlIHRydWUgZmFsc2UpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFN0cmluZyAoQXNjaWkgZmFsc2Ug ZmFsc2UgZmFsc2UgdHJ1ZSBmYWxzZSB0cnVlIHRydWUgZmFsc2UpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKFN0cmluZyAoQXNjaWkgdHJ1ZSBmYWxzZSBm YWxzZSBmYWxzZSBmYWxzZSB0cnVlIHRydWUgZmFsc2UpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKFN0cmluZyAKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoQXNjaWkgZmFsc2UgdHJ1ZSBmYWxzZSBmYWxz ZSB0cnVlIHRydWUgdHJ1ZSBmYWxzZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoU3RyaW5nIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChBc2NpaSB0cnVlIHRydWUgdHJ1ZSB0cnVlIHRydWUg ZmFsc2UgdHJ1ZSBmYWxzZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoU3RyaW5nIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChBc2NpaSB0cnVlIGZhbHNlIGZhbHNlIGZhbHNlIGZhbHNl IHRydWUgdHJ1ZSBmYWxzZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoU3RyaW5nIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChBc2NpaSBmYWxzZSBmYWxzZSB0cnVlIGZhbHNlIHRydWUg dHJ1ZSB0cnVlIGZhbHNlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChTdHJpbmcgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKEFzY2lpIHRydWUgdHJ1ZSB0cnVlIHRydWUgdHJ1ZSBmYWxz ZSB0cnVlIGZhbHNlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChTdHJpbmcgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKEFzY2lpIHRydWUgZmFsc2UgdHJ1ZSB0cnVlIGZhbHNlIHRydWUg dHJ1ZSBmYWxzZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoU3RyaW5nICguLikgKC4uKSkpKSkpKSkpKSkKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoQGNvbnMgVHlwZSBuYXQgKEBjb25zIFR5cGUgKGFzY2lpIC0+ IGJvb2wpIChAbmlsIFR5cGUpKSkgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKEBTb21lIFR5cGUgYm9vbCkpIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChTIChTIChTIChTIChTIE8pKSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChWZWN0b3JEZWYuY29ucyBtZXRoU2lnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKEJ1aWxkX21ldGhTaWcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoU3RyaW5nIChBc2NpaSB0cnVlIHRydWUgdHJ1ZSBmYWxzZSBmYWxzZSB0cnVlIHRy dWUgZmFsc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFN0 cmluZyAoQXNjaWkgdHJ1ZSBmYWxzZSB0cnVlIGZhbHNlIGZhbHNlIHRydWUgdHJ1ZSBmYWxz ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU3RyaW5n IChBc2NpaSBmYWxzZSBmYWxzZSB0cnVlIGZhbHNlIHRydWUgdHJ1ZSB0cnVlIGZhbHNlKSBF bXB0eVN0cmluZykpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChA Y29ucyBUeXBlIG5hdCAoQG5pbCBUeXBlKSkgCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKEBTb21lIFR5cGUgYXNjaWkpKSAKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoUyAoUyAoUyAoUyBPKSkpKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChWZWN0b3JEZWYuY29ucyBtZXRoU2lnCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKEJ1aWxkX21ldGhTaWcKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoU3RyaW5nIChBc2NpaSBmYWxzZSBmYWxzZSB0cnVl IHRydWUgZmFsc2UgdHJ1ZSB0cnVlIGZhbHNlKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChTdHJpbmcgCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKEFzY2lpIHRydWUgZmFsc2UgdHJ1ZSBmYWxzZSBmYWxz ZSB0cnVlIHRydWUgZmFsc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKFN0cmluZyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoQXNjaWkgZmFsc2UgdHJ1ZSB0cnVlIHRydWUgZmFsc2UgdHJ1 ZSB0cnVlIGZhbHNlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChTdHJpbmcgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKEFzY2lpIHRydWUgdHJ1ZSB0cnVlIGZhbHNlIGZhbHNlIHRydWUg dHJ1ZSBmYWxzZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoU3RyaW5nIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChBc2NpaSBmYWxzZSBmYWxzZSB0cnVlIGZhbHNlIHRydWUgdHJ1ZSB0 cnVlIGZhbHNlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChTdHJpbmcgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKEFzY2lpIGZhbHNlIGZhbHNlIGZhbHNlIHRydWUgZmFsc2UgdHJ1ZSB0 cnVlIGZhbHNlKSBFbXB0eVN0cmluZykpKSkpKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChAbmlsIFR5cGUpIAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChAU29tZSBUeXBlIG5hdCkpIAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChTIChTIChTIE8pKSkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoVmVjdG9yRGVmLmNvbnMgbWV0aFNpZwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCdWlsZF9tZXRoU2lnCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFN0cmluZyAKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQXNjaWkgZmFsc2UgZmFsc2Ug dHJ1ZSBmYWxzZSB0cnVlIHRydWUgdHJ1ZSBmYWxzZSkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoU3RyaW5nIAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChBc2NpaSB0cnVlIGZhbHNlIGZhbHNl IGZhbHNlIGZhbHNlIHRydWUgdHJ1ZSBmYWxzZSkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoU3RyaW5nIAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChBc2NpaSB0cnVlIHRydWUgZmFsc2Ug dHJ1ZSBmYWxzZSB0cnVlIHRydWUgZmFsc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKFN0cmluZyAKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQXNjaWkgdHJ1ZSBmYWxzZSB0cnVlIGZh bHNlIGZhbHNlIHRydWUgdHJ1ZSBmYWxzZSkgRW1wdHlTdHJpbmcpKSkpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEBjb25zIFR5cGUgbmF0IChAbmls IFR5cGUpKSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo QE5vbmUgVHlwZSkpIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChTIChTIE8pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChW ZWN0b3JEZWYuY29ucyBtZXRoU2lnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKEJ1aWxkX21ldGhTaWcKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoU3RyaW5nIAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChBc2NpaSBmYWxzZSBmYWxzZSB0cnVlIGZhbHNl IGZhbHNlIHRydWUgdHJ1ZSBmYWxzZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoU3RyaW5nIAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChBc2NpaSBmYWxzZSB0cnVlIGZhbHNlIGZhbHNl IHRydWUgdHJ1ZSB0cnVlIGZhbHNlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChTdHJpbmcgCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKEFzY2lpIHRydWUgdHJ1ZSB0cnVlIHRydWUgZmFs c2UgdHJ1ZSB0cnVlIGZhbHNlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChTdHJpbmcgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKEFzY2lpIGZhbHNlIGZhbHNlIGZhbHNlIGZhbHNlIHRy dWUgdHJ1ZSB0cnVlIGZhbHNlKSBFbXB0eVN0cmluZykpKSkKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQGNvbnMgVHlwZSBuYXQgKEBuaWwgVHlw ZSkpIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChA Tm9uZSBUeXBlKSkgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKFMgTykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo VmVjdG9yRGVmLmNvbnMgbWV0aFNpZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChCdWlsZF9tZXRoU2lnCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKFN0cmluZyAKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQXNjaWkgdHJ1ZSB0cnVlIGZhbHNl IGZhbHNlIHRydWUgdHJ1ZSB0cnVlIGZhbHNlKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChTdHJpbmcgCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFzY2lpIGZhbHNlIGZhbHNlIGZhbHNl IGZhbHNlIHRydWUgdHJ1ZSB0cnVlIGZhbHNlKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChTdHJpbmcgCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFzY2lpIGZhbHNlIGZhbHNlIHRydWUg dHJ1ZSBmYWxzZSB0cnVlIHRydWUgZmFsc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKFN0cmluZyAKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQXNjaWkgdHJ1ZSBmYWxzZSBmYWxzZSB0 cnVlIGZhbHNlIHRydWUgdHJ1ZSBmYWxzZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoU3RyaW5nICguLikgKC4uKSkpKSkpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEBjb25zIAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb2Qg bmF0IChwcm9kIG5hdCBuYXQpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChAY29ucyBUeXBlIG5hdCAoQGNvbnMgVHlwZSBuYXQgKEBuaWwg VHlwZSkpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoQFNvbWUgVHlwZSAobGlzdCBuYXQpKSkgTyAKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoVmVjdG9yRGVmLm5pbCBtZXRoU2lnKSkpKSkp KSkgCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAob3B0aW9uIFR5cGUpCiAgICAg ICAgICAgICAgICAgICAgICB3aXRoCiAgICAgICAgICAgICAgICAgICAgICB8IEJ1aWxkX21l dGhTaWcgXyBfIG1ldGhDb2QgPT4gbWV0aENvZAogICAgICAgICAgICAgICAgICAgICAgZW5k KQogICAgICAgICAgICAgICAgICAgICAoQEZpbi5GUyAoUyAoUyAoUyAoUyAoUyAoUyBPKSkp KSkpCiAgICAgICAgICAgICAgICAgICAgICAgIChARmluLkZTIChTIChTIChTIChTIChTIE8p KSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAoQEZpbi5GUyAoUyAoUyAoUyAoUyBP KSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQEZpbi5GUyAoUyAoUyAoUyBP KSkpIChARmluLkZTIChTIChTIE8pKSAoQEZpbi5GUyAoUyBPKSAoQEZpbi5GMSBPKSkpKSkp KSkpCiAgICAgICAgICAgICAgIChAc25kIChsaXN0IFR5cGUpIChvcHRpb24gVHlwZSkKICAg ICAgICAgICAgICAgICAgKChmdW4gaWR4IDogRmluLnQgKFMgKFMgKFMgKFMgKFMgKFMgKFMg TykpKSkpKSkgPT4KICAgICAgICAgICAgICAgICAgICBAcGFpciAobGlzdCBUeXBlKSAob3B0 aW9uIFR5cGUpCiAgICAgICAgICAgICAgICAgICAgICBtYXRjaAogICAgICAgICAgICAgICAg ICAgICAgICBtYXRjaCBpZHggaW4gKEZpbi50IG0nKSByZXR1cm4gKFZlY3Rvci50IG1ldGhT aWcgbScgLT4gbWV0aFNpZykgd2l0aAogICAgICAgICAgICAgICAgICAgICAgICB8IEZpbi5G MSBxID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW4gdiA6IFZlY3Rvci50IG1l dGhTaWcgKFMgcSkgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHYgYXMgdicgaW4gKFZlY3Rvci50IF8gbSkKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKG1hdGNoIG0gYXMgbTAgcmV0dXJuIChWZWN0b3IudCBtZXRoU2lnIG0w IC0+IFR5cGUpIHdpdGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBPID0+ IGZ1biBfIDogVmVjdG9yLnQgbWV0aFNpZyBPID0+IEZhbHNlIC0+IFRydWUKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCBTIG4gPT4gZnVuIF8gOiBWZWN0b3IudCBtZXRo U2lnIChTIG4pID0+IG1ldGhTaWcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZW5kIHYnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCBWZWN0b3IubmlsID0+IGZ1biBkZXZpbCA6IEZhbHNlID0+IG1h dGNoIGRldmlsIHJldHVybiBUcnVlIHdpdGgKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgVmVjdG9yLmNvbnMgaCBuIF8gPT4gaAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ZW5kCiAgICAgICAgICAgICAgICAgICAgICAgIHwgRmluLkZTIHEgcCcgPT4KICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGZ1biB2IDogVmVjdG9yLnQgbWV0aFNpZyAoUyBxKSA9Pgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdiBhcyB2JyBpbiAoVmVjdG9yLnQgXyBtKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0 Y2ggbSBhcyBtMCByZXR1cm4gKFZlY3Rvci50IG1ldGhTaWcgbTAgLT4gVHlwZSkgd2l0aAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE8gPT4gZnVuIF8gOiBWZWN0b3Iu dCBtZXRoU2lnIE8gPT4gRmFsc2UgLT4gVHJ1ZQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8IFMgbiA9PiBmdW4gXyA6IFZlY3Rvci50IG1ldGhTaWcgKFMgbikgPT4gRmlu LnQgbiAtPiBtZXRoU2lnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCB2 JykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGgKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgVmVjdG9yLm5pbCA9PiBmdW4gZGV2aWwgOiBGYWxzZSA9PiBtYXRjaCBk ZXZpbCByZXR1cm4gVHJ1ZSB3aXRoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFZl Y3Rvci5jb25zIF8gbiB0ID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVu IHAwIDogRmluLnQgbiA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaXgg bnRoX2ZpeCAobSA6IG5hdCkgKHYnIDogVmVjdG9yLnQgbWV0aFNpZyBtKSAocCA6IEZpbi50 IG0pIHtzdHJ1Y3Qgdid9IDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt ZXRoU2lnIDo9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggcCBp biAoRmluLnQgbScpIHJldHVybiAoVmVjdG9yLnQgbWV0aFNpZyBtJyAtPiBtZXRoU2lnKSB3 aXRoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBGaW4uRjEgcTAgPT4K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuIHYwIDogVmVjdG9y LnQgbWV0aFNpZyAoUyBxMCkgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbWF0Y2gKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2 MCBhcyB2JzAgaW4gKFZlY3Rvci50IF8gbTApCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAobWF0Y2ggbTAgYXMgbTEgcmV0dXJuIChWZWN0b3IudCBtZXRoU2lnIG0x IC0+IFR5cGUpIHdpdGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8IE8gPT4gZnVuIF8gOiBWZWN0b3IudCBtZXRoU2lnIE8gPT4gRmFsc2UgLT4gVHJ1 ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUyBuMCA9 PiBmdW4gXyA6IFZlY3Rvci50IG1ldGhTaWcgKC4uKSA9PiBtZXRoU2lnCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kIHYnMCkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8IFZlY3Rvci5uaWwgPT4gZnVuIGRldmlsIDogRmFsc2UgPT4g bWF0Y2ggZGV2aWwgcmV0dXJuIFRydWUgd2l0aAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGVuZAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IFZlY3Rvci5jb25zIGggbjAgXyA9PiBoCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGVuZAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgRmluLkZTIHEwIHAnMCA9PgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBmdW4gdjAgOiBWZWN0b3IudCBtZXRoU2lnIChTIHEwKSA9PgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYwIGFzIHYnMCBpbiAoVmVjdG9yLnQgXyBt MCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBtMCBhcyBt MSByZXR1cm4gKC4uIC0+IC4uKSB3aXRoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCBPID0+IGZ1biBfIDogVmVjdG9yLnQgbWV0aFNpZyBPID0+IEZh bHNlIC0+IFRydWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8IFMgbjAgPT4gZnVuIF8gOiBWZWN0b3IudCBtZXRoU2lnIC4uID0+IEZpbi50IG4wIC0+ IG1ldGhTaWcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl bmQgdicwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVmVjdG9yLm5pbCA9PiBm dW4gZGV2aWwgOiBGYWxzZSA9PiBtYXRjaCBkZXZpbCByZXR1cm4gVHJ1ZSB3aXRoCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVmVjdG9yLmNvbnMgXyBuMCB0 MCA9PiBmdW4gcDEgOiBGaW4udCBuMCA9PiBudGhfZml4IG4wIHQwIHAxCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCBwJzAKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBlbmQgdicpIG4gdCBwMAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgZW5kIHAnCiAgICAgICAgICAgICAgICAgICAgICAgIGVuZAogICAgICAgICAgICAg ICAgICAgICAgICAgIChWZWN0b3JEZWYuY29ucyBtZXRoU2lnCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKEJ1aWxkX21ldGhTaWcKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoU3RyaW5nIChBc2NpaSBmYWxzZSBmYWxzZSB0cnVlIGZhbHNlIHRydWUgdHJ1ZSB0 cnVlIGZhbHNlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTdHJpbmcg KEFzY2lpIHRydWUgdHJ1ZSB0cnVlIHRydWUgZmFsc2UgdHJ1ZSB0cnVlIGZhbHNlKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTdHJpbmcgKEFzY2lpIHRydWUg dHJ1ZSB0cnVlIHRydWUgdHJ1ZSBmYWxzZSB0cnVlIGZhbHNlKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChTdHJpbmcgKEFzY2lpIHRydWUgdHJ1ZSBmYWxz ZSBmYWxzZSB0cnVlIHRydWUgdHJ1ZSBmYWxzZSkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoU3RyaW5nIAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChBc2NpaSBmYWxzZSBmYWxzZSB0cnVlIGZhbHNlIHRy dWUgdHJ1ZSB0cnVlIGZhbHNlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChTdHJpbmcgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKEFzY2lpIGZhbHNlIHRydWUgZmFsc2UgZmFsc2UgdHJ1ZSB0 cnVlIHRydWUgZmFsc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKFN0cmluZyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoQXNjaWkgdHJ1ZSBmYWxzZSBmYWxzZSB0cnVlIGZhbHNlIHRy dWUgdHJ1ZSBmYWxzZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoU3RyaW5nIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChBc2NpaSBmYWxzZSB0cnVlIHRydWUgdHJ1ZSBmYWxzZSB0cnVl IHRydWUgZmFsc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKFN0cmluZyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoQXNjaWkgdHJ1ZSB0cnVlIHRydWUgZmFsc2UgZmFsc2UgdHJ1ZSB0 cnVlIGZhbHNlKSBFbXB0eVN0cmluZykpKSkpKSkpKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChAbmlsIFR5cGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KEBTb21lIFR5cGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBI U0xNIHJldHVybiBUeXBlIHdpdGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8IEJ1aWxkX1N0cmluZ0xpa2VNaW4gU3RyaW5nMCBfIF8gPT4gU3RyaW5nMAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkpIChTIChTIChTIChTIChTIChTIE8p KSkpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVmVjdG9yRGVmLmNvbnMgbWV0 aFNpZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCdWlsZF9tZXRoU2lnCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFN0cmluZyAoQXNjaWkgdHJ1ZSB0 cnVlIGZhbHNlIGZhbHNlIGZhbHNlIHRydWUgdHJ1ZSBmYWxzZSkKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoU3RyaW5nIChBc2NpaSBmYWxzZSBmYWxzZSBmYWxz ZSB0cnVlIGZhbHNlIHRydWUgdHJ1ZSBmYWxzZSkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoU3RyaW5nIChBc2NpaSB0cnVlIGZhbHNlIGZhbHNlIGZhbHNl IGZhbHNlIHRydWUgdHJ1ZSBmYWxzZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoU3RyaW5nIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChBc2NpaSBmYWxzZSB0cnVlIGZhbHNlIGZhbHNlIHRydWUgdHJ1 ZSB0cnVlIGZhbHNlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChTdHJpbmcgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKEFzY2lpIHRydWUgdHJ1ZSB0cnVlIHRydWUgdHJ1ZSBmYWxzZSB0cnVl IGZhbHNlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChTdHJpbmcgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKEFzY2lpIHRydWUgZmFsc2UgZmFsc2UgZmFsc2UgZmFsc2UgdHJ1ZSB0cnVl IGZhbHNlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChTdHJpbmcgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKEFzY2lpIGZhbHNlIGZhbHNlIHRydWUgZmFsc2UgdHJ1ZSB0cnVlIHRydWUg ZmFsc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKFN0cmluZyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoQXNjaWkgdHJ1ZSB0cnVlIHRydWUgdHJ1ZSB0cnVlIGZhbHNlIHRydWUgZmFs c2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KFN0cmluZyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoQXNjaWkgdHJ1ZSBmYWxzZSB0cnVlIHRydWUgZmFsc2UgdHJ1ZSB0cnVlIGZhbHNl KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChT dHJpbmcgKC4uKSAoLi4pKSkpKSkpKSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChAY29ucyBUeXBlIG5hdCAoQGNvbnMgVHlwZSAoYXNjaWkgLT4gYm9vbCkgKEBu aWwgVHlwZSkpKSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQFNvbWUg VHlwZSBib29sKSkgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFMgKFMgKFMg KFMgKFMgTykpKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFZlY3RvckRl Zi5jb25zIG1ldGhTaWcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQnVp bGRfbWV0aFNpZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTdHJp bmcgKEFzY2lpIHRydWUgdHJ1ZSB0cnVlIGZhbHNlIGZhbHNlIHRydWUgdHJ1ZSBmYWxzZSkK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU3RyaW5nIChBc2Np aSB0cnVlIGZhbHNlIHRydWUgZmFsc2UgZmFsc2UgdHJ1ZSB0cnVlIGZhbHNlKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTdHJpbmcgKEFzY2lpIGZh bHNlIGZhbHNlIHRydWUgZmFsc2UgdHJ1ZSB0cnVlIHRydWUgZmFsc2UpIEVtcHR5U3RyaW5n KSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEBjb25zIFR5cGUg bmF0IChAbmlsIFR5cGUpKSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoQFNvbWUgVHlwZSBhc2NpaSkpIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChTIChTIChTIChTIE8pKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKFZlY3RvckRlZi5jb25zIG1ldGhTaWcKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoQnVpbGRfbWV0aFNpZwogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChTdHJpbmcgKEFzY2lpIGZhbHNlIGZhbHNlIHRydWUgdHJ1ZSBmYWxz ZSB0cnVlIHRydWUgZmFsc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKFN0cmluZyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoQXNjaWkgdHJ1ZSBmYWxzZSB0cnVlIGZhbHNlIGZhbHNlIHRydWUgdHJ1 ZSBmYWxzZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoU3RyaW5nIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChBc2NpaSBmYWxzZSB0cnVlIHRydWUgdHJ1ZSBmYWxzZSB0cnVlIHRydWUgZmFs c2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KFN0cmluZyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoQXNjaWkgdHJ1ZSB0cnVlIHRydWUgZmFsc2UgZmFsc2UgdHJ1ZSB0cnVlIGZhbHNl KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChT dHJpbmcgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKEFzY2lpIGZhbHNlIGZhbHNlIHRydWUgZmFsc2UgdHJ1ZSB0cnVlIHRydWUgZmFsc2Up CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFN0 cmluZyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoQXNjaWkgZmFsc2UgZmFsc2UgZmFsc2UgdHJ1ZSBmYWxzZSB0cnVlIHRydWUgZmFsc2Up IEVtcHR5U3RyaW5nKSkpKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKEBuaWwgVHlwZSkgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKEBTb21lIFR5cGUgbmF0KSkgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKFMgKFMgKFMgTykpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChWZWN0b3JEZWYuY29ucyBtZXRoU2lnCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKEJ1aWxkX21ldGhTaWcKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoU3RyaW5nIAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChBc2NpaSBmYWxzZSBmYWxzZSB0cnVlIGZhbHNl IHRydWUgdHJ1ZSB0cnVlIGZhbHNlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChTdHJpbmcgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKEFzY2lpIHRydWUgZmFsc2UgZmFsc2UgZmFsc2UgZmFs c2UgdHJ1ZSB0cnVlIGZhbHNlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChTdHJpbmcgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKEFzY2lpIHRydWUgdHJ1ZSBmYWxzZSB0cnVlIGZhbHNl IHRydWUgdHJ1ZSBmYWxzZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoU3RyaW5nIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChBc2NpaSB0cnVlIGZhbHNlIHRydWUgZmFsc2UgZmFsc2Ug dHJ1ZSB0cnVlIGZhbHNlKSBFbXB0eVN0cmluZykpKSkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoQGNvbnMgVHlwZSBuYXQgKEBuaWwgVHlwZSkpIAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChATm9uZSBUeXBl KSkgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFMgKFMgTykp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFZlY3RvckRlZi5j b25zIG1ldGhTaWcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoQnVpbGRfbWV0aFNpZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChTdHJpbmcgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKEFzY2lpIGZhbHNlIGZhbHNlIHRydWUgZmFsc2UgZmFsc2UgdHJ1 ZSB0cnVlIGZhbHNlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChTdHJpbmcgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKEFzY2lpIGZhbHNlIHRydWUgZmFsc2UgZmFsc2UgdHJ1ZSB0cnVl IHRydWUgZmFsc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKFN0cmluZyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoQXNjaWkgdHJ1ZSB0cnVlIHRydWUgdHJ1ZSBmYWxzZSB0cnVlIHRy dWUgZmFsc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKFN0cmluZyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoQXNjaWkgZmFsc2UgZmFsc2UgZmFsc2UgZmFsc2UgdHJ1ZSB0cnVlIHRy dWUgZmFsc2UpIEVtcHR5U3RyaW5nKSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChAY29ucyBUeXBlIG5hdCAoQG5pbCBUeXBlKSkgCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEBOb25lIFR5cGUp KSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUyBPKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChWZWN0b3JEZWYu Y29ucyBtZXRoU2lnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKEJ1aWxkX21ldGhTaWcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoU3RyaW5nIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChBc2NpaSB0cnVlIHRydWUgZmFsc2UgZmFsc2UgdHJ1 ZSB0cnVlIHRydWUgZmFsc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKFN0cmluZyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoQXNjaWkgZmFsc2UgZmFsc2UgZmFsc2UgZmFsc2UgdHJ1 ZSB0cnVlIHRydWUgZmFsc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKFN0cmluZyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoQXNjaWkgZmFsc2UgZmFsc2UgdHJ1ZSB0cnVlIGZhbHNl IHRydWUgdHJ1ZSBmYWxzZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoU3RyaW5nIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChBc2NpaSB0cnVlIGZhbHNlIGZhbHNlIHRydWUgZmFsc2Ug dHJ1ZSB0cnVlIGZhbHNlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChTdHJpbmcgKC4uKSAoLi4pKSkpKSkKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQGNvbnMgCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvZCBuYXQgKHByb2Qg bmF0IG5hdCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKEBjb25zIFR5cGUgbmF0IChAY29ucyBUeXBlIG5hdCAoQG5pbCBUeXBlKSkpKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChAU29t ZSBUeXBlIChsaXN0IG5hdCkpKSBPIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChWZWN0b3JEZWYubmlsIG1ldGhTaWcpKSkpKSkpKSAKICAgICAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIChsaXN0IFR5cGUpCiAgICAgICAgICAgICAgICAg ICAgICB3aXRoCiAgICAgICAgICAgICAgICAgICAgICB8IEJ1aWxkX21ldGhTaWcgXyBtZXRo RG9tIF8gPT4gbWV0aERvbQogICAgICAgICAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAg ICAgICAgICAgICBtYXRjaAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBpZHggaW4g KEZpbi50IG0nKSByZXR1cm4gKFZlY3Rvci50IG1ldGhTaWcgbScgLT4gbWV0aFNpZykgd2l0 aAogICAgICAgICAgICAgICAgICAgICAgICB8IEZpbi5GMSBxID0+CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICBmdW4gdiA6IFZlY3Rvci50IG1ldGhTaWcgKFMgcSkgPT4KICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG1hdGNoCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHYgYXMgdicgaW4gKFZlY3Rvci50IF8gbSkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcmV0dXJuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIG0g YXMgbTAgcmV0dXJuIChWZWN0b3IudCBtZXRoU2lnIG0wIC0+IFR5cGUpIHdpdGgKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBPID0+IGZ1biBfIDogVmVjdG9yLnQgbWV0 aFNpZyBPID0+IEZhbHNlIC0+IFRydWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCBTIG4gPT4gZnVuIF8gOiBWZWN0b3IudCBtZXRoU2lnIChTIG4pID0+IG1ldGhTaWcK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kIHYnKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgd2l0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBWZWN0 b3IubmlsID0+IGZ1biBkZXZpbCA6IEZhbHNlID0+IG1hdGNoIGRldmlsIHJldHVybiBUcnVl IHdpdGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBlbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVmVjdG9yLmNvbnMgaCBuIF8g PT4gaAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgICAgICAg ICAgICAgIHwgRmluLkZTIHEgcCcgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1 biB2IDogVmVjdG9yLnQgbWV0aFNpZyAoUyBxKSA9PgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgbWF0Y2gKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiBhcyB2JyBpbiAo VmVjdG9yLnQgXyBtKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggbSBhcyBtMCByZXR1cm4gKFZl Y3Rvci50IG1ldGhTaWcgbTAgLT4gVHlwZSkgd2l0aAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8IE8gPT4gZnVuIF8gOiBWZWN0b3IudCBtZXRoU2lnIE8gPT4gRmFsc2Ug LT4gVHJ1ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFMgbiA9PiBmdW4g XyA6IFZlY3Rvci50IG1ldGhTaWcgKFMgbikgPT4gRmluLnQgbiAtPiBtZXRoU2lnCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCB2JykKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHdpdGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVmVjdG9yLm5p bCA9PiBmdW4gZGV2aWwgOiBGYWxzZSA9PiBtYXRjaCBkZXZpbCByZXR1cm4gVHJ1ZSB3aXRo CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5k CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFZlY3Rvci5jb25zIF8gbiB0ID0+CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuIHAwIDogRmluLnQgbiA9PgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaXggbnRoX2ZpeCAobSA6IG5hdCkgKHYn IDogVmVjdG9yLnQgbWV0aFNpZyBtKSAocCA6IEZpbi50IG0pIHtzdHJ1Y3Qgdid9IDoKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRoU2lnIDo9CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggcCBpbiAoRmluLnQgbScpIHJldHVybiAo VmVjdG9yLnQgbWV0aFNpZyBtJyAtPiBtZXRoU2lnKSB3aXRoCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCBGaW4uRjEgcTAgPT4KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZnVuIHYwIDogVmVjdG9yLnQgbWV0aFNpZyAoUyBxMCkgPT4K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MCBhcyB2JzAgaW4gKFZlY3Rvci50 IF8gbTApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggbTAg YXMgbTEgcmV0dXJuIChWZWN0b3IudCBtZXRoU2lnIG0xIC0+IFR5cGUpIHdpdGgKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE8gPT4gZnVuIF8gOiBW ZWN0b3IudCBtZXRoU2lnIE8gPT4gRmFsc2UgLT4gVHJ1ZQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgUyBuMCA9PiBmdW4gXyA6IFZlY3Rvci50IG1l dGhTaWcgKC4uKSA9PiBtZXRoU2lnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZW5kIHYnMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgd2l0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFZl Y3Rvci5uaWwgPT4gZnVuIGRldmlsIDogRmFsc2UgPT4gbWF0Y2ggZGV2aWwgcmV0dXJuIFRy dWUgd2l0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGVuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFZlY3Rv ci5jb25zIGggbjAgXyA9PiBoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGVuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRmluLkZTIHEw IHAnMCA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW4gdjAg OiBWZWN0b3IudCBtZXRoU2lnIChTIHEwKSA9PgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBtYXRjaAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHYwIGFzIHYnMCBpbiAoVmVjdG9yLnQgXyBtMCkKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChtYXRjaCBtMCBhcyBtMSByZXR1cm4gKC4uIC0+IC4uKSB3 aXRoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBPID0+ IGZ1biBfIDogVmVjdG9yLnQgbWV0aFNpZyBPID0+IEZhbHNlIC0+IFRydWUKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFMgbjAgPT4gZnVuIF8gOiBW ZWN0b3IudCBtZXRoU2lnIC4uID0+IEZpbi50IG4wIC0+IG1ldGhTaWcKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQgdicwKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgVmVjdG9yLm5pbCA9PiBmdW4gZGV2aWwgOiBGYWxzZSA9PiBt YXRjaCBkZXZpbCByZXR1cm4gVHJ1ZSB3aXRoCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgVmVjdG9yLmNvbnMgXyBuMCB0MCA9PiBmdW4gcDEgOiBGaW4udCBu MCA9PiBudGhfZml4IG4wIHQwIHAxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGVuZCBwJzAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQg dicpIG4gdCBwMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kIHAnCiAgICAgICAg ICAgICAgICAgICAgICAgIGVuZAogICAgICAgICAgICAgICAgICAgICAgICAgIChWZWN0b3JE ZWYuY29ucyBtZXRoU2lnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEJ1aWxkX21l dGhTaWcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU3RyaW5nIChBc2NpaSBm YWxzZSBmYWxzZSB0cnVlIGZhbHNlIHRydWUgdHJ1ZSB0cnVlIGZhbHNlKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChTdHJpbmcgKEFzY2lpIHRydWUgdHJ1ZSB0cnVl IHRydWUgZmFsc2UgdHJ1ZSB0cnVlIGZhbHNlKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChTdHJpbmcgKEFzY2lpIHRydWUgdHJ1ZSB0cnVlIHRydWUgdHJ1ZSBm YWxzZSB0cnVlIGZhbHNlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChTdHJpbmcgKEFzY2lpIHRydWUgdHJ1ZSBmYWxzZSBmYWxzZSB0cnVlIHRydWUgdHJ1 ZSBmYWxzZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo U3RyaW5nIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChBc2NpaSBmYWxzZSBmYWxzZSB0cnVlIGZhbHNlIHRydWUgdHJ1ZSB0cnVlIGZhbHNlKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTdHJpbmcg CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFz Y2lpIGZhbHNlIHRydWUgZmFsc2UgZmFsc2UgdHJ1ZSB0cnVlIHRydWUgZmFsc2UpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFN0cmluZyAK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQXNj aWkgdHJ1ZSBmYWxzZSBmYWxzZSB0cnVlIGZhbHNlIHRydWUgdHJ1ZSBmYWxzZSkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU3RyaW5nIAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChBc2Np aSBmYWxzZSB0cnVlIHRydWUgdHJ1ZSBmYWxzZSB0cnVlIHRydWUgZmFsc2UpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFN0cmluZyAKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQXNjaWkg dHJ1ZSB0cnVlIHRydWUgZmFsc2UgZmFsc2UgdHJ1ZSB0cnVlIGZhbHNlKSBFbXB0eVN0cmlu ZykpKSkpKSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChAbmlsIFR5cGUp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEBTb21lIFR5cGUKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBIU0xNIHJldHVybiBUeXBlIHdpdGgK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJ1aWxkX1N0cmluZ0xpa2VN aW4gU3RyaW5nMCBfIF8gPT4gU3RyaW5nMAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGVuZCkpIChTIChTIChTIChTIChTIChTIE8pKSkpKSkKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoVmVjdG9yRGVmLmNvbnMgbWV0aFNpZwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChCdWlsZF9tZXRoU2lnCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKFN0cmluZyAoQXNjaWkgdHJ1ZSB0cnVlIGZhbHNlIGZhbHNlIGZhbHNl IHRydWUgdHJ1ZSBmYWxzZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoU3RyaW5nIChBc2NpaSBmYWxzZSBmYWxzZSBmYWxzZSB0cnVlIGZhbHNlIHRydWUgdHJ1 ZSBmYWxzZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU3Ry aW5nIChBc2NpaSB0cnVlIGZhbHNlIGZhbHNlIGZhbHNlIGZhbHNlIHRydWUgdHJ1ZSBmYWxz ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU3RyaW5n IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChBc2Np aSBmYWxzZSB0cnVlIGZhbHNlIGZhbHNlIHRydWUgdHJ1ZSB0cnVlIGZhbHNlKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTdHJpbmcgCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFzY2lpIHRy dWUgdHJ1ZSB0cnVlIHRydWUgdHJ1ZSBmYWxzZSB0cnVlIGZhbHNlKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTdHJpbmcgCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFzY2lpIHRydWUg ZmFsc2UgZmFsc2UgZmFsc2UgZmFsc2UgdHJ1ZSB0cnVlIGZhbHNlKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTdHJpbmcgCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFzY2lpIGZhbHNl IGZhbHNlIHRydWUgZmFsc2UgdHJ1ZSB0cnVlIHRydWUgZmFsc2UpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFN0cmluZyAKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQXNjaWkgdHJ1ZSB0 cnVlIHRydWUgdHJ1ZSB0cnVlIGZhbHNlIHRydWUgZmFsc2UpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFN0cmluZyAKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQXNjaWkgdHJ1ZSBmYWxz ZSB0cnVlIHRydWUgZmFsc2UgdHJ1ZSB0cnVlIGZhbHNlKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTdHJpbmcgKC4uKSAoLi4pKSkpKSkp KSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChAY29ucyBUeXBlIG5h dCAoQGNvbnMgVHlwZSAoYXNjaWkgLT4gYm9vbCkgKEBuaWwgVHlwZSkpKSAKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoQFNvbWUgVHlwZSBib29sKSkgCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKFMgKFMgKFMgKFMgKFMgTykpKSkpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKFZlY3RvckRlZi5jb25zIG1ldGhTaWcKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQnVpbGRfbWV0aFNpZwogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTdHJpbmcgKEFzY2lpIHRydWUgdHJ1ZSB0 cnVlIGZhbHNlIGZhbHNlIHRydWUgdHJ1ZSBmYWxzZSkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoU3RyaW5nIChBc2NpaSB0cnVlIGZhbHNlIHRydWUgZmFs c2UgZmFsc2UgdHJ1ZSB0cnVlIGZhbHNlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChTdHJpbmcgKEFzY2lpIGZhbHNlIGZhbHNlIHRydWUgZmFsc2Ug dHJ1ZSB0cnVlIHRydWUgZmFsc2UpIEVtcHR5U3RyaW5nKSkpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKEBjb25zIFR5cGUgbmF0IChAbmlsIFR5cGUpKSAKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQFNvbWUgVHlwZSBhc2NpaSkp IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTIChTIChTIChTIE8pKSkp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFZlY3RvckRlZi5jb25zIG1l dGhTaWcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQnVpbGRfbWV0 aFNpZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTdHJpbmcg KEFzY2lpIGZhbHNlIGZhbHNlIHRydWUgdHJ1ZSBmYWxzZSB0cnVlIHRydWUgZmFsc2UpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFN0cmluZyAKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQXNjaWkgdHJ1 ZSBmYWxzZSB0cnVlIGZhbHNlIGZhbHNlIHRydWUgdHJ1ZSBmYWxzZSkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU3RyaW5nIAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChBc2NpaSBmYWxzZSB0 cnVlIHRydWUgdHJ1ZSBmYWxzZSB0cnVlIHRydWUgZmFsc2UpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFN0cmluZyAKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQXNjaWkgdHJ1ZSB0cnVl IHRydWUgZmFsc2UgZmFsc2UgdHJ1ZSB0cnVlIGZhbHNlKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTdHJpbmcgCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFzY2lpIGZhbHNlIGZhbHNl IHRydWUgZmFsc2UgdHJ1ZSB0cnVlIHRydWUgZmFsc2UpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFN0cmluZyAKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQXNjaWkgZmFsc2UgZmFsc2Ug ZmFsc2UgdHJ1ZSBmYWxzZSB0cnVlIHRydWUgZmFsc2UpIEVtcHR5U3RyaW5nKSkpKSkpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEBuaWwgVHlwZSkgCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEBTb21lIFR5cGUgbmF0 KSkgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFMgKFMgKFMgTykp KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChWZWN0b3JEZWYuY29u cyBtZXRoU2lnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEJ1 aWxkX21ldGhTaWcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoU3RyaW5nIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChBc2NpaSBmYWxzZSBmYWxzZSB0cnVlIGZhbHNlIHRydWUgdHJ1ZSB0cnVlIGZhbHNl KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTdHJp bmcgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KEFzY2lpIHRydWUgZmFsc2UgZmFsc2UgZmFsc2UgZmFsc2UgdHJ1ZSB0cnVlIGZhbHNlKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTdHJp bmcgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KEFzY2lpIHRydWUgdHJ1ZSBmYWxzZSB0cnVlIGZhbHNlIHRydWUgdHJ1ZSBmYWxzZSkKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU3RyaW5n IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChB c2NpaSB0cnVlIGZhbHNlIHRydWUgZmFsc2UgZmFsc2UgdHJ1ZSB0cnVlIGZhbHNlKSBFbXB0 eVN0cmluZykpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoQGNvbnMgVHlwZSBuYXQgKEBuaWwgVHlwZSkpIAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChATm9uZSBUeXBlKSkgCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKFMgKFMgTykpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKFZlY3RvckRlZi5jb25zIG1ldGhTaWcKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQnVpbGRfbWV0aFNpZwogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTdHJpbmcgCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFzY2lp IGZhbHNlIGZhbHNlIHRydWUgZmFsc2UgZmFsc2UgdHJ1ZSB0cnVlIGZhbHNlKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTdHJpbmcgCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFzY2lp IGZhbHNlIHRydWUgZmFsc2UgZmFsc2UgdHJ1ZSB0cnVlIHRydWUgZmFsc2UpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFN0cmluZyAKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQXNjaWkg dHJ1ZSB0cnVlIHRydWUgdHJ1ZSBmYWxzZSB0cnVlIHRydWUgZmFsc2UpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFN0cmluZyAKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQXNjaWkgZmFs c2UgZmFsc2UgZmFsc2UgZmFsc2UgdHJ1ZSB0cnVlIHRydWUgZmFsc2UpIEVtcHR5U3RyaW5n KSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChA Y29ucyBUeXBlIG5hdCAoQG5pbCBUeXBlKSkgCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKEBOb25lIFR5cGUpKSAKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoUyBPKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChWZWN0b3JEZWYuY29ucyBtZXRoU2lnCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEJ1aWxkX21ldGhTaWcK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU3Ry aW5nIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChBc2NpaSB0cnVlIHRydWUgZmFsc2UgZmFsc2UgdHJ1ZSB0cnVlIHRydWUgZmFsc2UpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFN0cmlu ZyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo QXNjaWkgZmFsc2UgZmFsc2UgZmFsc2UgZmFsc2UgdHJ1ZSB0cnVlIHRydWUgZmFsc2UpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFN0cmlu ZyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo QXNjaWkgZmFsc2UgZmFsc2UgdHJ1ZSB0cnVlIGZhbHNlIHRydWUgdHJ1ZSBmYWxzZSkKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU3RyaW5n IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChB c2NpaSB0cnVlIGZhbHNlIGZhbHNlIHRydWUgZmFsc2UgdHJ1ZSB0cnVlIGZhbHNlKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTdHJpbmcg KC4uKSAoLi4pKSkpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoQGNvbnMgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgVHlwZSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAocHJvZCBuYXQgKHByb2QgbmF0IG5hdCkpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEBjb25zIFR5cGUgbmF0 IChAY29ucyBUeXBlIG5hdCAoQG5pbCBUeXBlKSkpKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChAU29tZSBUeXBlIChsaXN0IG5hdCkpKSBP IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChWZWN0 b3JEZWYubmlsIG1ldGhTaWcpKSkpKSkpKSAKICAgICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIChvcHRpb24gVHlwZSkKICAgICAgICAgICAgICAgICAgICAgIHdpdGgKICAgICAgICAg ICAgICAgICAgICAgIHwgQnVpbGRfbWV0aFNpZyBfIF8gbWV0aENvZCA9PiBtZXRoQ29kCiAg ICAgICAgICAgICAgICAgICAgICBlbmQpCiAgICAgICAgICAgICAgICAgICAgIChARmluLkZT IChTIChTIChTIChTIChTIChTIE8pKSkpKSkKICAgICAgICAgICAgICAgICAgICAgICAgKEBG aW4uRlMgKFMgKFMgKFMgKFMgKFMgTykpKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAg IChARmluLkZTIChTIChTIChTIChTIE8pKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChARmluLkZTIChTIChTIChTIE8pKSkgKEBGaW4uRlMgKFMgKFMgTykpIChARmluLkZT IChTIE8pIChARmluLkYxIE8pKSkpKSkpKSkpKQogICAgICAgICAobWV0aENvZAogICAgICAg ICAgICAoQnVpbGRfbWV0aFNpZwogICAgICAgICAgICAgICAoU3RyaW5nIChBc2NpaSB0cnVl IHRydWUgZmFsc2UgZmFsc2UgdHJ1ZSB0cnVlIHRydWUgZmFsc2UpCiAgICAgICAgICAgICAg ICAgIChTdHJpbmcgKEFzY2lpIGZhbHNlIGZhbHNlIGZhbHNlIGZhbHNlIHRydWUgdHJ1ZSB0 cnVlIGZhbHNlKQogICAgICAgICAgICAgICAgICAgICAoU3RyaW5nIChBc2NpaSBmYWxzZSBm YWxzZSB0cnVlIHRydWUgZmFsc2UgdHJ1ZSB0cnVlIGZhbHNlKQogICAgICAgICAgICAgICAg ICAgICAgICAoU3RyaW5nIChBc2NpaSB0cnVlIGZhbHNlIGZhbHNlIHRydWUgZmFsc2UgdHJ1 ZSB0cnVlIGZhbHNlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAoU3RyaW5nIChBc2Np aSBmYWxzZSBmYWxzZSB0cnVlIGZhbHNlIHRydWUgdHJ1ZSB0cnVlIGZhbHNlKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoU3RyaW5nIChBc2NpaSB0cnVlIHRydWUgZmFsc2Ug ZmFsc2UgdHJ1ZSB0cnVlIHRydWUgZmFsc2UpIEVtcHR5U3RyaW5nKSkpKSkpCiAgICAgICAg ICAgICAgIChAZnN0IChsaXN0IFR5cGUpIChvcHRpb24gVHlwZSkKICAgICAgICAgICAgICAg ICAgKChmdW4gaWR4IDogRmluLnQgKFMgKFMgKFMgKFMgKFMgKFMgKFMgTykpKSkpKSkgPT4K ICAgICAgICAgICAgICAgICAgICBAcGFpciAobGlzdCBUeXBlKSAob3B0aW9uIFR5cGUpCiAg ICAgICAgICAgICAgICAgICAgICBtYXRjaAogICAgICAgICAgICAgICAgICAgICAgICBtYXRj aCBpZHggaW4gKEZpbi50IG0nKSByZXR1cm4gKFZlY3Rvci50IG1ldGhTaWcgbScgLT4gbWV0 aFNpZykgd2l0aAogICAgICAgICAgICAgICAgICAgICAgICB8IEZpbi5GMSBxID0+CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICBmdW4gdiA6IFZlY3Rvci50IG1ldGhTaWcgKFMgcSkg PT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHYgYXMgdicgaW4gKFZlY3Rvci50IF8gbSkKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KG1hdGNoIG0gYXMgbTAgcmV0dXJuIChWZWN0b3IudCBtZXRoU2lnIG0wIC0+IFR5cGUpIHdp dGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBPID0+IGZ1biBfIDogVmVj dG9yLnQgbWV0aFNpZyBPID0+IEZhbHNlIC0+IFRydWUKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCBTIG4gPT4gZnVuIF8gOiBWZWN0b3IudCBtZXRoU2lnIChTIG4pID0+ IG1ldGhTaWcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kIHYnKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgd2l0aAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCBWZWN0b3IubmlsID0+IGZ1biBkZXZpbCA6IEZhbHNlID0+IG1hdGNoIGRldmlsIHJl dHVybiBUcnVlIHdpdGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBlbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVmVjdG9yLmNv bnMgaCBuIF8gPT4gaAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kCiAgICAgICAg ICAgICAgICAgICAgICAgIHwgRmluLkZTIHEgcCcgPT4K --------------080501000809020908040802-- --9CU6VUeFpMjhTQw4Sqj5g79ibpjCwJTI1 Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (GNU/Linux) iQIcBAEBAgAGBQJWoGzhAAoJEPqg+cTm90wjylkP/RP2ZjhHwy9HP9KZTyaUopne To2rfe3Q7mCJRRvXztxZIuHIoBDeV+14irN3ZORfCtadM0muW9yESoz+TRttV4Si cMvs0+gY2rDB2qQ5FAAEin5vgbm/yZQcMAi6Z6hCVkaA1jjgVOsQTEXZsnOyu+XI NjcBuIQmugYYe+pI+1rS1LYSz6Tj7Lao+39BO4Q76MoTqDFQNYWamh6Cxx91E2xH WDJEn1LQupF9MiEQ4QyQ1SBz9ACdN0ssPEMD8GGmwxHNc4k0QzIot5k3WBoCHC4K yPcrGp6Wy4HISUWZ0gy+zyQ6Y7LB7wNONjBxr6wSYQr9iyrKlxKyYf87AZoJB6b0 K4n1GCIuoh6+yv9fHKOTU18wD04jdxBYAO6L7gRuidaqjYIOIwddgFSy/zKGgNbH 1469RsWPJ4WFMkebzFI8ZUIx97XTDg8GD1QGBAAW4qMjLGzcNJEo1alrJ48Mu5DR 1AOsEumKSOibk6KFQqFG1LoOCdG0a2LozsDjoWJCsXcgMjSQOpZT5ixK446WaBBf l3e1mD8bDlhaqSjPo4wQ0Xn40eTqw7f9vDbAqJmw+YHu8Kh4kOAaJ7RJf92ME+nh ahMfGHvzgB/zIS9yFNMcA90gvycUdHkzjqZrTm+IUlulnCYlBt77SrMKv2LJMloi xtloBo+zWiy6ieI0fb8e =4ewd -----END PGP SIGNATURE----- --9CU6VUeFpMjhTQw4Sqj5g79ibpjCwJTI1--