From unknown Wed Aug 20 05:15:37 2025 X-Loop: help-debbugs@gnu.org Subject: bug#31216: commit 217b8c2e0 produces 'Can't locate Date/Parse.pm in @INC Error' perl error Resent-From: George myglc2 Clemmer Original-Sender: "Debbugs-submit" Resent-CC: bug-guix@gnu.org Resent-Date: Thu, 19 Apr 2018 03:15:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 31216 X-GNU-PR-Package: guix X-GNU-PR-Keywords: To: 31216@debbugs.gnu.org X-Debbugs-Original-To: bug-guix@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.15241076995511 (code B ref -1); Thu, 19 Apr 2018 03:15:01 +0000 Received: (at submit) by debbugs.gnu.org; 19 Apr 2018 03:14:59 +0000 Received: from localhost ([127.0.0.1]:59957 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f902E-0001Qp-UE for submit@debbugs.gnu.org; Wed, 18 Apr 2018 23:14:59 -0400 Received: from eggs.gnu.org ([208.118.235.92]:37881) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f902C-0001Qa-HF for submit@debbugs.gnu.org; Wed, 18 Apr 2018 23:14:56 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1f9026-0006eH-Di for submit@debbugs.gnu.org; Wed, 18 Apr 2018 23:14:51 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-1.6 required=5.0 tests=BAYES_00, FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,T_DKIM_INVALID autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:37237) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1f9026-0006dq-48 for submit@debbugs.gnu.org; Wed, 18 Apr 2018 23:14:50 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57070) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1f9024-0007PY-Py for bug-guix@gnu.org; Wed, 18 Apr 2018 23:14:49 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1f9020-0006Xz-DR for bug-guix@gnu.org; Wed, 18 Apr 2018 23:14:47 -0400 Received: from mail-qk0-x22a.google.com ([2607:f8b0:400d:c09::22a]:35345) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1f901z-0006XS-Qd for bug-guix@gnu.org; Wed, 18 Apr 2018 23:14:44 -0400 Received: by mail-qk0-x22a.google.com with SMTP id c188so4074082qkg.2 for ; Wed, 18 Apr 2018 20:14:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=user-agent:from:to:subject:date:message-id:mime-version; bh=jzs28L19OC9ItlVFBPfuKTrWjIKY8iisxcUJqxxjV/4=; b=e4u7k4RMj0yoB4L0M1LKCyQeX++MztWyHtDsxsKhWzXBM1Hn7SQBbrbEHdhc9NvcxO lI0kH7YE449DXSK8FLba43de3KR48K36O3oLLtWOks4Z7WbpxSfRgWDJyH0nBQ30HKxH fOjl/j/nXnaDn1w1dkOKbkDt1S8QKYq4fxSJ9GceSgYnpKNANgokxme6i6rB03Pmp6pq cY8pcq15I+xyQt56ZPBuYDrnF9EuxDCnm+o8tn4LRMS2yfbpTgBoKIci/vAx5I+qoILT et20lMLAWnSTqrGKU9G8C+XByXRlr/VPqC+FqMq0awGagRqz2NO7LM4goWFRXOZsXENp r6fQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:user-agent:from:to:subject:date:message-id :mime-version; bh=jzs28L19OC9ItlVFBPfuKTrWjIKY8iisxcUJqxxjV/4=; b=IBofVdwQIJMe83XHoiml5JMPDfTF2dX2eD1GOD5mTUuWMcUCfLP4D0SiqCa4VKRGPh PJoV90aUagpixu5kh1gWO1Gz6u02SGAti4V1oVCaiRtoUS1kPSMwQAZr/2ayNClH8rYt baVUga5DN7jjaIga8Ys0tgIkaCDaRLCgkGLCXqNKIIt30q+vxbWJhPZ9cln3KtE8XAkb 3saHJ3m9YbTb8WV5eIKCBT1u3gLfHTR+Gcspv7NEPLwKoYiMKwpQAP488dRv3z2tRNpY WD8F8aC6ROcqZD+trzShhjz9lbEFqRQQ2CTiSEDgchQGQI8snx3P1KCbN7rpsux8f024 4WDQ== X-Gm-Message-State: ALQs6tC78vrPxyIZ28q83UWXTsL4DgDh5aH7xL9eqhUNROpsrZ/H2cOf ahkGkaseaZ11Oq4pUFMLCAqJsA== X-Google-Smtp-Source: AB8JxZq3UkLBLLPh+kaJdqF1p2azo50yo50K6+rF2bdLS4KxcKaWtlNMINyj8B4bNPKcH0iyHkf6rw== X-Received: by 10.55.31.129 with SMTP id n1mr4116309qkh.416.1524107683034; Wed, 18 Apr 2018 20:14:43 -0700 (PDT) Received: from g1 (c-73-167-118-254.hsd1.ma.comcast.net. [73.167.118.254]) by smtp.gmail.com with ESMTPSA id u63sm56408qkf.41.2018.04.18.20.14.41 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 18 Apr 2018 20:14:41 -0700 (PDT) User-agent: mu4e 1.0; emacs 25.3.1 From: George myglc2 Clemmer Date: Wed, 18 Apr 2018 23:14:40 -0400 Message-ID: <87r2nbubtr.fsf@gmail.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -3.8 (---) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -4.8 (----) --=-=-= Content-Type: text/plain Commit ... 217b8c2e0 * gnu: perl: Replace with 5.26.2 [fixes CVE-2018-{6797,6798,6913}]. ... caused the attached perl script that worked like this ... g1@g1 ~/.mail-mirror$ guix environment --ad-hoc perl perl-timedate make wget g1@g1 ~/.mail-mirror [env]$ perl mb2md-3.20.pl Usage: mb2md -h mb2md [-c] -m [-d destdir] mb2md [-c] -s sourcefile [-d destdir] mb2md [-c] -s sourcedir [-l wu-mailboxlist] [-R|-f somefolder] [-d destdir] [-r strip_extension] g1@g1 ~/.mail-mirror [env]$ ... to stop working ... g1@g1 ~/.mail-mirror$ guix environment --ad-hoc perl perl-timedate make wget g1@g1 ~/.mail-mirror [env]$ perl mb2md-3.20.pl Can't locate Date/Parse.pm in @INC (you may need to install the Date::Parse module) (@INC contains: /gnu/store/wpwb4ig3qhv3m7axjlid2c0f1jqzp09p-profile/lib/perl5/site_perl/5.26.2/x86_64-linux-thread-multi /gnu/store/wpwb4ig3qhv3m7axjlid2c0f1jqzp09p-profile/lib/perl5/site_perl/5.26.2 /gnu/store/wpwb4ig3qhv3m7axjlid2c0f1jqzp09p-profile/lib/perl5/site_perl /gnu/store/ynk3rg3i791i6k7rz2imbyj9wyfjrnrc-perl-5.26.2/lib/perl5/site_perl/5.26.2/x86_64-linux-thread-multi /gnu/store/ynk3rg3i791i6k7rz2imbyj9wyfjrnrc-perl-5.26.2/lib/perl5/site_perl/5.26.2 /gnu/store/ynk3rg3i791i6k7rz2imbyj9wyfjrnrc-perl-5.26.2/lib/perl5/5.26.2/x86_64-linux-thread-multi /gnu/store/ynk3rg3i791i6k7rz2imbyj9wyfjrnrc-perl-5.26.2/lib/perl5/5.26.2) at mb2md-3.20.pl line 385. BEGIN failed--compilation aborted at mb2md-3.20.pl line 385. g1@g1 ~/.mail-mirror [env]$ TIA - George --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=mb2md-3.20.pl Content-Transfer-Encoding: base64 IyEvdXNyL2Jpbi9wZXJsIC13CiMKIyAkSWQ6IG1iMm1kLnBsLHYgMS4yNiAyMDA0LzAzLzI4IDAw OjA5OjQ2IGp1cmkgRXhwICQKIwojIG1iMm1kLTMuMjAucGwgICAgICBDb252ZXJ0cyBNYm94IG1h aWxib3hlcyB0byBNYWlsZGlyIGZvcm1hdC4KIwojIFB1YmxpYyBkb21haW4uCiMKIyBjdXJyZW50 bHkgbWFpbnRhaW5lZCBieToKIyBKdXJpIEhhYmVybGFuZCA8anVyaUBrb3NjaGlrb2RlLmNvbT4K IyBpbml0aWFsbHkgd3JvdGUgYnk6CiMgUm9iaW4gV2hpdHRsZQojCiMgVGhpcyBzY3JpcHQncyB3 ZWIgYWJvZGUgaXMgaHR0cDovL2JhdGxldGguc2FwaWVudGktc2F0Lm9yZy9wcm9qZWN0cy9tYjJt ZC8gLgojIEZvciBhIGNoYW5nZWxvZyBzZWUgaHR0cDovL2JhdGxldGguc2FwaWVudGktc2F0Lm9y Zy9wcm9qZWN0cy9tYjJtZC9jaGFuZ2Vsb2cudHh0CiMKIyBUaGUgTWJveCAtPiBNYWlsZGlyIGlu bmVyIGxvb3AgaXMgYmFzZWQgb24gIHFtYWlsJ3Mgc2NyaXB0IG1ib3gybWFpbGRpciwgd2hpY2gK IyB3YXMga2x1ZGdlZCBieSBJdmFuIEtvaGxlciBpbiAxOTk3IGZyb20gY29udmVydGFuZGNyZWF0 ZSAocHVibGljIGRvbWFpbikKIyBieSBSdXNzZWwgTmVsc29uLiAgQm90aCB0aGVzZSBjb252ZXJ0 IGEgc2luZ2xlIG1haWxzcG9vbCBmaWxlLgojCiMgVGhlIHFtYWlsIGRpc3RyaWJ1dGlvbiBoYXMg YSBtYWlsZGlyMm1ib3guYyBwcm9ncmFtLgojCiMgV2hhdCBpcyBkb2VzOgojID09PT09PT09PT09 PT0KIwojIFJlYWRzIGEgZGlyZWN0b3J5IGZ1bGwgb2YgTWJveCBmb3JtYXQgbWFpbGJveGVzIGFu ZCBjcmVhdGVzIGEgc2V0IG9mCiMgTWFpbGRpciBmb3JtYXQgbWFpbGJveGVzLiAgU29tZSBkZXRh aWxzIG9mIHRoaXMgYXJlIHRvIHN1aXQgQ291cmllcgojIElNQVAncyBuYW1pbmcgY29udmVudGlv bnMgZm9yIE1haWxkaXIgbWFpbGJveGVzLgojCiMgICBodHRwOi8vd3d3LmludGVyNy5jb20vY291 cmllcmltYXAvCiMKIyBUaGlzIGlzIGludGVuZGVkIHRvIGF1dG9tYXRlIHRoZSBjb252ZXJzaW9u IG9mIHRoZSBvbGQKIyAvdmFyL3Nwb29sL21haWwvYmxhaCBmaWxlIC0gd2l0aCBvbmUgY2FsbCBv ZiB0aGlzIHNjcmlwdCAtIGFuZCB0bwojIGNvbnZlcnQgb25lIG9yIG1vcmUgbWFpbGJveGVzIGlu IGEgc3BlY2lmZWQgZGlyZWN0b3J5IHdpdGggc2VwYXJhdGUKIyBjYWxscyB3aXRoIG90aGVyIGNv bW1hbmQgbGluZSBhcmd1bWVudHMuCiMKIyBSdW4gdGhpcyBhcyB0aGUgdXNlciAtIGluIHRoZXNl IGV4YW1wbGVzICJibGFoIi4KCiMgVGhpcyB2ZXJzaW9uIHN1cHBvcnRzIGNvbnZlcnNpb24gb2Y6 CiMKIyAgICBEYXRlICAgIFRoZSBkYXRlLXRpbWUgaW4gdGhlICJGcm9tICIgbGluZSBvZiB0aGUg bWVzc2FnZSBpbiB0aGUKIyAgICAgICAgICAgIE1ib3ggZm9ybWF0IGlzIHRoZSBkYXRlIHdoZW4g dGhlIG1lc3NhZ2Ugd2FzICpyZWNlaXZlZCouCiMgICAgICAgICAgICBUaGlzIGlzIHRyYW5zZm9y bWVkIGludG8gdGhlIGRhdGUtdGltZSBvZiB0aGUgZmlsZSB3aGljaAojICAgICAgICAgICAgY29u dGFpbnMgdGhlIG1lc3NhZ2UgaW4gdGhlIE1haWxkaXIgbWFpbGJveC4KIwojICAgICAgICAgICAg VGhpcyByZWxpZXMgb24gdGhlIERhdGU6OlBhcnNlIHBlcmwgbW9kdWxlIGFuZCB0aGUgdXRpbWUK IyAgICAgICAgICAgIHBlcmwgZnVuY3Rpb24uCiMKIyAgICAgICAgICAgIFRoZSBzY3JpcHQgdHJp ZXMgdG8gY29wZSB3aXRoIGVycmFudCBmb3JtcyBvZiB0aGUKIyAgICAgICAgICAgIE1ib3ggIkZy b20gIiBsaW5lIHdoaWNoIGl0IG1heSBlbmNvdW50ZXIsIGJ1dCBpZgojICAgICAgICAgICAgdGhl cmUgaXMgc29tZXRoaW5nIHJlYWxseSBzY3Jld3kgaW4gYSBGcm9tIGxpbmUsCiMgICAgICAgICAg ICB0aGVuIHBlcmhhcHMgdGhlIHNjcmlwdCB3aWxsIGZhaWwgd2hlbiAidG91Y2giCiMgICAgICAg ICAgICBpcyBnaXZlbiBhbiBpbnZhbGlkIGRhdGUuICBQbGVhc2UgcmVwb3J0IHRoZQojICAgICAg ICAgICAgZXhhY3QgbmF0dXJlIG9mIGFueSBzdWNoICJGcm9tICIgbGluZSEKIwojCiMgICBGbGFn Z2VkCiMgICBSZXBsaWVkCiMgICBSZWFkID0gU2VlbgojICAgVGFnZ2VkIGZvciBEZWxldGlvbgoj CiMgICAgICAgICAgICBJbiB0aGUgTWJveCBtZXNzYWdlLCBmbGFncyBmb3IgdGhlc2UgYXJlIGZv dW5kIGluIHRoZQojICAgICAgICAgICAgIlN0YXR1czogTiIgb3IgIlgtU3RhdHVzOiBOIiBoZWFk ZXJzLCB3aGVyZSAiTiIgaXMgMAojICAgICAgICAgICAgb3IgbW9yZSBvZiB0aGUgZm9sbG93aW5n IGNoYXJhY3RlcnMgaW4gdGhlIGxlZnQgY29sdW1uLgojCiMgICAgICAgICAgICBUaGV5IGFyZSBj b252ZXJ0ZWQgdG8gY2hhcmFjdGVycyBpbiB0aGUgcmlnaHQgY29sdW1uLAojICAgICAgICAgICAg d2hpY2ggYmVjb21lIHRoZSBsYXN0IGNoYXJhY3RlcnMgb2YgdGhlIGZpbGUgbmFtZSwKIyAgICAg ICAgICAgIGZvbGxvd2luZyB0aGUgIjoyLCIgd2hpY2ggaW5kaWNhdGVzIElNQVAgbWVzc2FnZSBz dGF0dXMuCiMKIwojICAgICAgICAgICAgICAgIEYgLT4gRiAgICAgIEZsYWdnZWQKIyAgICAgICAg ICAgICAgICBBIC0+IFIgICAgICBSZXBsaWVkCiMgICAgICAgICAgICAgICAgUiAtPiBTICAgICAg UmVhZCA9IFNlZW4KIyAgICAgICAgICAgICAgICBEIC0+IFQgICAgICBUYWdnZWQgZm9yIERlbGV0 aW9uIChUcmFzaCkKIwojICAgICAgICAgICAgVGhpcyBpcyBiYXNlZCBvbiB0aGUgd29yayBvZiBQ aGlsaXAgTWFrIHdobyB3cm90ZSBhCiMgICAgICAgICAgICBjb21wbGV0ZWx5IHNlcGFyYXRlIE1i b3ggLT4gTWFpbGRpciBjb252ZXJ0ZXIgY2FsbGVkCiMgICAgICAgICAgICBwZXJmZWN0X21haWxk aXIgYW5kIHBvc3RlZCBpdCB0byB0aGUgTXV0dC11c2VycyBtYWlsaW5nCiMgICAgICAgICAgICBs aXN0IG9uIDI1IERlY2VtYmVyIDIwMDE6CiMKIyAgICAgICAgICAgICAgIGh0dHA6Ly93d3cubWFp bC1hcmNoaXZlLmNvbS9tdXR0LXVzZXJzQG11dHQub3JnL21zZzIxODcyLmh0bWwKIwojICAgICAg ICAgICAgTWljaGFlbCBCZXN0IG9yaWdpbmFsbHkgaW50ZWdyYXRlZCB0aG9zZSBjaGFuZ2VzIGlu dG8gbWIybWQuCiMKIwojICAgSW4gYWRkaXRpb24sIHRoZSBuYW1lcyBvZiB0aGUgbWVzc2FnZSBm aWxlcyBpbiB0aGUgTWFpbGRpciBhcmUgb2YgYQojICAgcmVndWxhciBsZW5ndGggYW5kIGFyZSBv ZiB0aGUgZm9ybToKIwojICAgICAgIDc2NTQzMjEuMDAwMTIzLm1ib3g6Mix4eHgKIwojICAgV2hl cmUgIjc2NTQzMjEiIGlzIHRoZSBVbml4IHRpbWUgaW4gc2Vjb25kcyB3aGVuIHRoZSBzY3JpcHQg d2FzCiMgICBydW4gYW5kICIwMDAxMjMiIGlzIHRoZSBzaXggemVyb2VzIHBhZGRlZCBtZXNzYWdl IG51bWJlciBhcwojICAgbWVzc2FnZXMgYXJlIGNvbnZlcnRlZCBmcm9tIHRoZSBNYm94IGZpbGUu ICAieHh4IiByZXByZXNlbnRzIHplcm8gb3IKIyAgIG1vcmUgb2YgdGhlIGFib3ZlIGZsYWdzIEYs IFIsIFMgb3IgVC4KIwojCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIwojIFVTQUdFCiMgPT09PT0KIwojIFJ1 biB0aGlzIGFzIHRoZSB1c2VyIG9mIHRoZSBtYWlsYm94ZXMsIG5vdCBhcyByb290LgojCiMKIyBt YjJtZCAtaAojIG1iMm1kIFstY10gLW0gWy1kIGRlc3RkaXJdCiMgbWIybWQgWy1jXSAtcyBzb3Vy Y2VmaWxlIFstZCBkZXN0ZGlyXQojIG1iMm1kIFstY10gLXMgc291cmNlZGlyIFstbCB3dS1tYWls Ym94bGlzdF0gWy1SfC1mIHNvbWVmb2xkZXJdIFstZCBkZXN0ZGlyXSBbLXIgc3RyaXBfZXh0ZW5z aW9uXQojCiMgIC1jICAgICAgICAgICAgdXNlIHRoZSBDb250ZW50LUxlbmd0aDogaGVhZGVycyAo aWYgcHJlc2VudCkgdG8gZmluZCB0aGUKIyAgICAgICAgICAgICAgICBiZWdpbm5pbmcgb2YgdGhl IG5leHQgbWVzc2FnZQojICAgICAgICAgICAgICAgIFVzZSB3aXRoIGNhdXRpb24hIFJlc3VsdHMg bWF5IGJlIHVucmVsaWFibGUuIEkgcmVjb21tZW5kIHRvIGRvCiMgICAgICAgICAgICAgICAgYSBy dW4gd2l0aG91dCAiLWMiIGZpcnN0IGFuZCBvbmx5IHVzZSBpdCBpZiB5b3UgYXJlIGNlcnRhaW4s CiMgICAgICAgICAgICAgICAgdGhhdCB0aGUgbWJveCBpbiBxdWVzdGlvbiByZWFsbHkgbmVlZHMg dGhlICItYyIgb3B0aW9uCiMKIyAgLW0gICAgICAgICAgICBJZiB0aGlzIGlzIHVzZWQgdGhlbiB0 aGUgc291cmNlIHdpbGwKIyAgICAgICAgICAgICAgICBiZSB0aGUgc2luZ2xlIG1haWxib3ggYXQg L3Zhci9zcG9vbC9tYWlsL2JsYWggZm9yCiMgICAgICAgICAgICAgICAgdXNlciBibGFoIGFuZCB0 aGUgZGVzdGluYXRpb24gbWFpbGJveCB3aWxsIGJlIHRoZQojICAgICAgICAgICAgICAgICJkZXN0 ZGlyIiBtYWlsYm94IGl0c2VsZi4KIwojCiMgIC1zIHNvdXJjZSAgICAgRGlyZWN0b3J5IG9yIGZp bGUgcmVsYXRpdmUgdG8gdGhlIHVzZXIncyBob21lIGRpcmVjdG9yeSwKIyAgICAgICAgICAgICAg ICB3aGljaCBpcyB3aGVyZSB0aGUgdGhlICJzb21lZm9sZGVycyIgZGlyZWN0b3JpZXMgYXJlIGxv Y2F0ZWQuCiMgICAgICAgICAgICAgICAgT3IgaWYgc3RhcnRpbmcgd2l0aCBhICIvIiBpdCBpcyB0 YWtlbiBhcyBhCiMgICAgICAgICAgICAgICAgYWJzb2x1dGUgcGF0aCwgZS5nLiAvbW50L29sZG1h aWwvdXNlcgojCiMgICAgICAgICAgICAgICAgb3IKIwojICAgICAgICAgICAgICAgIEEgc2luZ2xl IG1ib3ggZmlsZSB3aGljaCB3aWxsIGJlIGNvbnZlcnRlZCB0bwojICAgICAgICAgICAgICAgIHRo ZSBkZXN0ZGlyLgojCiMgIC1SCQkgSWYgZGVmaW5lZCwgZG8gbm90IHNraXAgZGlyZWN0b3JpZXMg Zm91bmQgaW4gYSBtYWlsYm94IAojCQkgZGlyZWN0b3J5LCBidXQgcnVucyByZWN1cnNpdmVseSBp bnRvIGVhY2ggb2YgdGhlbSwgCiMgCQkgY3JlYXRpbmcgYWxsIHdhbnRlZCBmb2xkZXJzIGluIE1h aWxkaXIuCiMJCSBJbmNvbXBhdGlibGUgd2l0aCAnLWYnCiMKIyAgLWYgc29tZWZvbGRlciBEaXJl Y3RvcmllcywgcmVsYXRpdmUgdG8gInNvdXJjZWRpciIgd2hlcmUgdGhlIE1ib3ggZmlsZXMKIyAg ICAgICAgICAgICAgICBhcmUuIEFsbCBtYWlsYm94ZXMgaW4gdGhlICJzb3VyY2VkaXIiCiMgICAg ICAgICAgICAgICAgZGlyZWN0b3J5IHdpbGwgYmUgY29udmVydGVkIGFuZCBwbGFjZWQgaW4gdGhl CiMgICAgICAgICAgICAgICAgImRlc3RkaXIiIGRpcmVjdG9yeS4gIChUeXBpY2FsbHkgdGhlIElu Ym94IGRpcmVjdG9yeQojICAgICAgICAgICAgICAgIHdoaWNoIGluIHRoaXMgaW5zdGFuY2UgaXMg YWxzbyBmdW5jdGlvbmluZyBhcyBhCiMgICAgICAgICAgICAgICAgZm9sZGVyIGZvciBvdGhlciBt YWlsYm94ZXMuKQojCiMgICAgICAgICAgICAgICAgVGhlICJzb21lZm9sZGVyIiBkaXJlY3RvcnkK IyAgICAgICAgICAgICAgICBuYW1lIHdpbGwgYmUgZW5jb2RlZCBpbnRvIHRoZSBuZXcgbWFpbGJv eGVzJyBuYW1lcy4KIyAgICAgICAgICAgICAgICBTZWUgdGhlIGV4YW1wbGVzIGJlbG93LgojCiMg ICAgICAgICAgICAgICAgVGhpcyBkb2VzIG5vdCBzYXZlIGFuIFVXIElNQVAgZHVtbXkgbWVzc2Fn ZSBmaWxlCiMgICAgICAgICAgICAgICAgYXQgdGhlIHN0YXJ0IG9mIHRoZSBNYm94IGZpbGUuICBT bWFsbCBjaGFuZ2VzCiMgICAgICAgICAgICAgICAgaW4gdGhlIGNvZGUgY291bGQgYWRhcHQgaXQg Zm9yIGxvb2tpbmcgZm9yCiMgICAgICAgICAgICAgICAgb3RoZXIgZGlzdGluY3RpdmUgcGF0dGVy bnMgb2YgZHVtbXkgbWVzc2FnZXMgdG9vLgojCiMgICAgICAgICAgICAgICAgRG9uJ3QgbGV0IHRo ZSBzb3VyY2UgZGlyZWN0b3J5IHlvdSBnaXZlIGFzICJzb21lZm9sZGVycyIKIyAgICAgICAgICAg ICAgICBjb250YWluIGFueSAiLiJzIGluIGl0cyBuYW1lLCB1bmxlc3MgeW91IHdhbnQgdG8KIyAg ICAgICAgICAgICAgICBjcmVhdGUgc3ViZm9sZGVycyBmcm9tIHRoZSBJTUFQIHVzZXIncyBwb2lu dCBvZgojICAgICAgICAgICAgICAgIHZpZXcuICBTZWUgdGhlIGV4YW1wbGUgYmVsb3cuCiMKIyAg ICAgICAgICAgICAgICBJbmNvbXBhdGlibGUgd2l0aCAnLWYnCiMKIwojICAtZCBkZXN0ZGlyICAg IERpcmVjdG9yeSB3aGVyZSB0aGUgTWFpbGRpciBmb3JtYXQgZGlyZWN0b3JpZXMgd2lsbCBiZSBj cmVhdGVkLgojICAgICAgICAgICAgICAgIElmIG5vdCBnaXZlbiwgdGhlbiB0aGUgZGVzdGluYXRp b24gd2lsbCBiZSB+L01haWxkaXIgLgojICAgICAgICAgICAgICAgIFR5cGljYWxseSwgdGhpcyBp cyB3aGF0IHRoZSBJTUFQIHNlcnZlciBzZWVzIGFzIHRoZQojICAgICAgICAgICAgICAgIEluYm94 IGFuZCB0aGUgZm9sZGVyIGZvciBhbGwgdXNlciBtYWlsYm94ZXMuCiMgICAgICAgICAgICAgICAg SWYgdGhpcyBiZWdpbnMgd2l0aCBhICcvJyB0aGUgcGF0aCBpcyBjb25zaWRlcmVkIHRvIGJlCiMg ICAgICAgICAgICAgICAgYWJzb2x1dGUsIG90aGVyd2lzZSBpdCBpcyByZWxhdGl2ZSB0byB0aGUg dXNlcnMKIyAgICAgICAgICAgICAgICBob21lIGRpcmVjdG9yeS4KIwojICAtciBzdHJpcF9leHQg IElmIGRlZmluZWQgdGhpcyBleHRlbnNpb24gd2lsbCBiZSBzdHJpcHBlZCBmcm9tCiMgICAgICAg ICAgICAgICAgdGhlIG9yaWdpbmFsIG1haWxib3ggZmlsZSBuYW1lIGJlZm9yZSBjcmVhdGluZwoj ICAgICAgICAgICAgICAgIHRoZSBjb3JyZXNwb25kaW5nIG1haWxkaXIuIFRoZSBleHRlbnNpb24g bXVzdCBiZQojICAgICAgICAgICAgICAgIGdpdmVuIHdpdGhvdXQgdGhlIGxlYWRpbmcgZG90ICgi LiIpLiBTZWUgdGhlIGV4YW1wbGUgYmVsb3cuCiMKIyAgLWwgV1UtZmlsZSAgICBGaWxlIGNvbnRh aW5pbmcgdGhlIGxpc3Qgb2Ygc3Vic2NyaWJlZCBmb2xkZXJzLiAgSWYKIyAgICAgICAgICAgICAg ICBtaWdyYXRpbmcgZnJvbSBXVS1JTUFQIHRoZSBsaXN0IG9mIHN1YnNjcmliZWQgZm9sZGVycyB3 aWxsCiMgICAgICAgICAgICAgICAgYmUgZm91bmQgaW4gdGhlIGZpbGUgY2FsbGVkIC5tYWlsYm94 bGlzdCBpbiB0aGUgdXNlcnMKIyAgICAgICAgICAgICAgICBob21lIGRpcmVjdG9yeS4gIFRoaXMg d2lsbCBjb252ZXJ0IGFsbCBzdWJzY3JpYmVkIGZvbGRlcnMKIyAgICAgICAgICAgICAgICBmb3Ig YSBzaW5nbGUgdXNlcjoKIyAgICAgICAgICAgICAgICAvYmluL21iMm1kIC1zIG1haWwgLWwgLm1h aWxib3hsaXN0IC1SIC1kIE1haWxkaXIKIyAgICAgICAgICAgICAgICBhbmQgZm9yIGFsbCB1c2Vy cyBpbiBhIGRpcmVjdG9yeSBhcyByb290IHlvdSBjYW4gZG8gdGhlCiMgICAgICAgICAgICAgICAg Zm9sbG93aW5nOgojICAgICAgICAgICAgICAgIGZvciBpIGluICo7IGRvIGVjaG8gJGk7c3UgLSAk aSAtYyAiL2Jpbi9tYjJtZCAtcyBtYWlsIC1sIC5tYWlsYm94bGlzdCAtUiAtZCBNYWlsZGlyIjtk b25lCiMKIwojICBFeGFtcGxlCiMgID09PT09PT0KIwojIFdlIGhhdmUgYSBidW5jaCBvZiBkaXJl Y3RvcmllcyBvZiBNYm94IG1haWxib3hlcyBsb2NhdGVkIGF0CiMgL2hvbWUvYmxhaC9vbGRtYWls LwojCiMgICAgIC9ob21lL2JsYWgvb2xkbWFpbC9mZmZmZgojICAgICAvaG9tZS9ibGFoL29sZG1h aWwvZ2dnZ2cKIyAgICAgL2hvbWUvYmxhaC9vbGRtYWlsL3h4eC9hYWFhCiMgICAgIC9ob21lL2Js YWgvb2xkbWFpbC94eHgvYmJiYgojICAgICAvaG9tZS9ibGFoL29sZG1haWwveHh4L2NjY2MKIyAg ICAgL2hvbWUvYmxhaC9vbGRtYWlsL3h4eC9kZGRkCiMgICAgIC9ob21lL2JsYWgvb2xkbWFpbC95 eXl5L2h1ZXkKIyAgICAgL2hvbWUvYmxhaC9vbGRtYWlsL3l5eXkvZHVleQojICAgICAvaG9tZS9i bGFoL29sZG1haWwveXl5eS9sb3VpZQojCiMgV2l0aCB0aGUgVVcgSU1BUCBzZXJ2ZXIsIGZmZmZm IGFuZCBnZ2dnZyB3b3VsZCBoYXZlIGFwcGVhcmVkIGluIHRoZSByb290CiMgb2YgdGhpcyBtYWls IHNlcnZlciwgYWxvbmcgd2l0aCB0aGUgSW5ib3guICBhYWFhLCBiYmJiIGV0Yywgd291bGQgaGF2 ZQojIGFwcGVhcmVkIGluIGEgZm9sZGVyIGNhbGxlZCB4eHggZnJvbSB0aGF0IHJvb3QsIGFuZCB4 eHggd2FzIGp1c3QgYSBmb2xkZXIKIyBub3QgYSBtYWlsYm94IGZvciBzdG9yaW5nIG1lc3NhZ2Vz LgojCiMgV2UgYWxzbyBoYXZlIHRoZSBtYWlsc3Bvb2wgSW5ib3ggYXQ6CiMKIyAgICAgL3Zhci9z cG9vbC9tYWlsL2JsYWgKIwojCiMgVG8gY29udmVydCB0aGVzZSwgYXMgdXNlciBibGFoLCB3ZSBn aXZlIHRoZSBmaXJzdCBjb21tYW5kOgojCiMgICAgbWIybWQgLW0KIwojIFRoZSBtYWluIE1haWxk aXIgZGlyZWN0b3J5IHdpbGwgYmUgY3JlYXRlZCBpZiBpdCBkb2VzIG5vdCBleGlzdC4KIyAoVGhp cyBpcyB0cnVlIG9mIGFueSBhcmd1bWVudCBvcHRpb25zLCBub3QganVzdCAiLW0iLikKIwojICAg IC9ob21lL2JsYWgvTWFpbGRpci8KIwojIEl0IGhhcyB0aGUgZm9sbG93aW5nIHN1YmRpcmVjdG9y aWVzOgojCiMgICAgL2hvbWUvYmxhaC9NYWlsZGlyL3RtcC8KIyAgICAvaG9tZS9ibGFoL01haWxk aXIvbmV3LwojICAgIC9ob21lL2JsYWgvTWFpbGRpci9jdXIvCiMKIyBUaGVuIC92YXIvc3Bvb2wv YmxhaCBmaWxlIGlzIHJlYWQsIHNwbGl0IGludG8gaW5kaXZpZHVhbCBmaWxlcyBhbmQKIyB3cml0 dGVuIGludG8gL2hvbWUvYmxhaC9NYWlsZGlyL2N1ci8gLgojCiMgTm93IHdlIGdpdmUgdGhlIHNl Y29uZCBjb21tYW5kOgojCiMgICAgbWIybWQgIC1zIG9sZG1haWwgLVIKIwojIFRoaXMgcmVhZHMg cmVjdXJzaXZlbHkgYWxsIE1ib3ggbWFpbGJveGVzIGFuZCBjcmVhdGVzOgojCiMgICAgL2hvbWUv YmxhaC9NYWlsZGlyLy5mZmZmZi8KIyAgICAvaG9tZS9ibGFoL01haWxkaXIvLmdnZ2dnLwojICAg IC9ob21lL2JsYWgvTWFpbGRpci8ueHh4LwojICAgIC9ob21lL2JsYWgvTWFpbGRpci8ueHh4LmFh YWEvCiMgICAgL2hvbWUvYmxhaC9NYWlsZGlyLy54eHguYmJiYi8KIyAgICAvaG9tZS9ibGFoL01h aWxkaXIvLnh4eC5jY2NjLwojICAgIC9ob21lL2JsYWgvTWFpbGRpci8ueHh4LmFhYWEvCiMgICAg L2hvbWUvYmxhaC9NYWlsZGlyLy55eXl5LwojICAgIC9ob21lL2JsYWgvTWFpbGRpci8ueXl5eS5o dWV5LwojICAgIC9ob21lL2JsYWgvTWFpbGRpci8ueXl5eS5kdWV5LwojICAgIC9ob21lL2JsYWgv TWFpbGRpci8ueXl5eS5sb3VpZS8KIwojICBUaGUgcmVzdWx0LCBmcm9tIHRoZSBJTUFQIGNsaWVu dCdzIHBvaW50IG9mIHZpZXcgaXM6CiMKIyAgICBJbmJveCAtLS0tLS0tLS0tLS0tLS0tLQojICAg ICAgICB8CiMgICAgICAgIHwgZmZmZmYgLS0tLS0tLS0tLS0KIyAgICAgICAgfCBnZ2dnZyAtLS0t LS0tLS0tLQojICAgICAgICB8CiMgICAgICAgIC0geHh4IC0tLS0tLS0tLS0tLS0KIyAgICAgICAg fCAgIHwgYWFhYSAtLS0tLS0tLQojICAgICAgICB8ICAgfCBiYmJiIC0tLS0tLS0tCiMgICAgICAg IHwgICB8IGNjY2MgLS0tLS0tLS0KIyAgICAgICAgfCAgIHwgZGRkZCAtLS0tLS0tLQojICAgICAg ICB8CiMgICAgICAgIC0geXl5eSAtLS0tLS0tLS0tLS0KIyAgICAgICAgICAgICB8IGh1ZXkgLS0t LS0tLQojICAgICAgICAgICAgIHwgZHVleSAtLS0tLS0tCiMgICAgICAgICAgICAgfCBsb3VpZSAt LS0tLS0KIwojIE5vdGUgdGhhdCBhbHRob3VnaCB+L01haWxkaXIvLnh4eC8gYW5kIH4vTWFpbGRp ci8ueXl5eSBtYXkgYXBwZWFyCiMgYXMgZm9sZGVycyB0byB0aGUgSU1BUCBjbGllbnQgdGhlIGFi b3ZlIGNvbW1hbmRzIHRvIG5vdCBnZW5lcmF0ZQojIGFueSBNYWlsZGlyIGZvbGRlcnMgb2YgdGhl c2UgbmFtZXMuICBUaGVzZSBhcmUgc2ltcGx5IGVsZW1lbnRzCiMgb2YgdGhlIG5hbWVzIG9mIG90 aGVyIE1haWxkaXIgZGlyZWN0b3JpZXMuIChpZiB5b3UgdXNlZCAnLVInLCB0aGV5IAojIHdoaWxs IGJlIGFibGUgdG8gYWN0IGFzIG5vcm1hbCBmb2xkZXJzLCBjb250YWluaW5nIG1lc3NhZ2VzIEFO RCBmb2xkZXJzKQojCiMgV2l0aCBhIHNlcGFyYXRlIHJ1biBvZiB0aGlzIHNjcmlwdCwgdXNpbmcg anVzdCB0aGUgIi1zIiBvcHRpb24KIyB3aXRob3V0ICItZiIgbm9yICItUiIsIGl0IHdvdWxkIGJl IHBvc3NpYmxlIHRvIGNyZWF0ZSBtYWlsYm94ZXMgd2hpY2gKIyBhcHBlYXIgYXQgdGhlIHNhbWUg bG9jYXRpb24gYXMgZmFyIGFzIHRoZSBJTUFQIGNsaWVudCBpcwojIGNvbmNlcm5lZC4gIEJ5IGhh dmluZyBNYm94IG1haWxib3hlcyBpbiBzb21lIGRpcmVjdG9yeToKIyB+L29sZG1haWwvbm5uLyBv ZiB0aGUgZm9ybToKIwojICAgICAvaG9tZS9ibGFoL29sZG1haWwvbm4veHh4eAojICAgICAvaG9t ZS9ibGFoL29sZG1haWwvbm4veXl5eXkKIwojIHRoZW4gdGhlIGNvbW1hbmQ6CiMKIyAgIG1iMm1k IC1zIG9sZG1haWwvbm4KIwojIHdpbGwgY3JlYXRlIHR3byBuZXcgTWFpbGRpcnM6CiMKIyAgICAv aG9tZS9ibGFoL01haWxkaXIvLnh4eC8KIyAgICAvaG9tZS9ibGFoL01haWxkaXIvLnl5eXkvCiMK IyBUaGVuIHdoYXQgdXNlZCB0byBiZSB0aGUgeHh4IGFuZCB5eXl5IGZvbGRlcnMgbm93IGZ1bmN0 aW9uIGFzCiMgbWFpbGJveGVzIHRvby4gIE5ldHNjYXBlIDQuNzcgbmVlZGVkIHRvIGJlIHB1dCB0 byBzbGVlcCBhbmQgZ2l2ZW4gRUNUCiMgdG8gcmVjb2duaXNlIHRoaXMgLSBkZWxldGluZyB0aGUg Y29udGVudHMgb2YgKFdpbjJrIGV4YW1wbGUpOgojCiMgICAgQzpcUHJvZ3JhbSBGaWxlc1xOZXRz Y2FwZVxVc2Vyc1x1dVxJbWFwTWFpbFxhYWEuYmJiLmNjY1wKIwojIHdoZXJlICJ1dSIgaXMgdGhl IHVzZXIgYW5kICJhYWEuYmJiLmNjYyIgaXMgdGhlIElNQVAgc2VydmVyCiMKIyBJIG9mdGVuIGZp bmQgdGhhdCBkZWxldGluZyBhbGwgdGhpcyBkaXJlY3RvcnkncyBjb250ZW50cywgZXhjZXB0CiMg InJ1bGVzLmRhdCIsIGZvcmNlcyBOZXRzY2FwZSBiYWNrIHRvIHJlYWxpdHkgYWZ0ZXIgaXRzIElN QVAgaW5uYXJkcwojIGhhdmUgYmVjb21lIHR3aXN0ZWQuICBUaGVuIG1heWJlIHVzZSBGaWxlID4g U3Vic2NyaWJlIC0gYnV0IHRoaXMKIyBzZWVtcyBpbmNhcGFibGUgb2Ygc3Vic2NyaWJpbmcgdG8g Zm9sZGVycy4KIwojIEZvciBPdXRsb29rIEV4cHJlc3MsIHNlbGVjdCB0aGUgbWFpbCBzZXJ2ZXIs IHRoZW4gY2xpY2sgdGhlCiMgIklNQVAgRm9sZGVycyIgYnV0dG9uIGFuZCB1c2UgIlJlc2V0IGxp c3QiLiAgSW4gdGhlICJBbGwiCiMgd2luZG93LCBzZWxlY3QgdGhlIG1haWxib3hlcyB5b3Ugd2Fu dCB0byBzZWUgaW4gbm9ybWFsCiMgdXNhZ2UuCiMKIwojIFRoaXMgc2NyaXB0IGRpZCBub3QgcmVj dXJzZSBzdWJkaXJlY3RvcmllcyBvciBkZWxldGUgb2xkIG1haWxib3hlcywgYmVmb3JlIGFkZGl0 aW9uIG9mIHRoZSAnLVInIHBhcmFtZXRlciA6KQojCiMgQmUgc3VyZSBub3QgdG8gYmUgYWNjZXNz aW5nIHRoZSBNYm94IG1haWxib3hlcyB3aGlsZSBydW5uaW5nIHRoaXMKIyBzY3JpcHQuICBJdCBk b2VzIG5vdCBhdHRlbXB0IHRvIGxvY2sgdGhlbS4gIExpa2V3aXNlLCBkb24ndCBydW4gdHdvCiMg Y29waWVzIG9mIHRoaXMgc2NyaXB0IGVpdGhlci4KIwojCiMgVHJpY2tpZXIgdXNhZ2UgLiAuIC4K IyA9PT09PT09PT09PT09PT09PT09PQojCiMgSWYgeW91IGhhdmUgYSBidW5jaCBvZiBtYWlsYm94 ZXMgaW4gYSBkaXJlY3Rvcnkgfi9vbGRtYWlsL2Rvb3JzLwojIGFuZCB5b3Ugd2FudCB0aGVtIHRv IGFwcGVhciBpbiBmb2xkZXJzIHN1Y2ggYXM6CiMKIyB+L01haWxkaXIvLm11c2ljLmJhbmRzLmRv b3JzLkppbQojIH4vTWFpbGRpci8ubXVzaWMuYmFuZHMuZG9vcnMuSm9obgojCiMgZXRjLiBzbyB0 aGV5IGFwcGVhciBpbiBhbiBJTUFQIGZvbGRlcjoKIwojICAgIEluYm94IC0tLS0tLS0tLS0tLS0t LS0tCiMgICAgICAgIHwgbXVzaWMKIyAgICAgICAgICAgICAgfCBiYW5kcwojICAgICAgICAgICAg ICAgICAgICB8IGRvb3JzCiMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgSmltCiMgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgSm9obgojICAgICAgICAgICAgICAgICAgICAgICAgICB8IFJv YmJpZQojICAgICAgICAgICAgICAgICAgICAgICAgICB8IFJheQojCiMgVGhlbiB5b3UgY291bGQg cmVuYW1lIHRoZSBzb3VyY2UgZGlyZWN0b3J5IHRvOgojCiMgIH4vb2xkbWFpbC9tdXNpYy5iYW5k cy5kb29ycy8KIwojIHRoZW4gdXNlOgojCiMgICBtYjJtZCAtcyBvbGRtYWlsIC1mIG11c2ljLmJh bmRzLmRvb3JzCiMKIwojIE9yIHNpbXBseSB1c2UgJy1SJyBzd2l0Y2ggd2l0aDoKIyAgIG1iMm1k IC1zIG9sZG1haWwgLVIKIwojCiMgU3RyaXBwaW5nIG1haWxib3ggZXh0ZW5zaW9uczoKIyA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PSAKIwojIElmIHlvdSB3YW50IHRvIGNvbnZlcnQgbWFp bGJveGVzIHRoYXQgY2FtZSBmb3IgZXhhbXBsZSBmcm9tCiMgYSBXaW5kb3dzIGJveCB0aGFuIHlv dSBtaWdodCB3YW50IHRvIHN0cmlwIHRoZSBleHRlbnNpb24gb2YKIyB0aGUgbWFpbGJveCBuYW1l IHNvIHRoYXQgaXQgd29uJ3QgY3JlYXRlIGEgc3ViZm9sZGVyIGluIHlvdXIKIyBtYWlsIGNsaWVu dHMgdmlldy4KIwojIEV4YW1wbGU6CiMgWW91IGhhdmUgc2V2ZXJhbCBtYWlsYm94ZXMgbmFtZWQg VHJhc2gubWJ4LCBTZW50Lm1ieCwgRHJhZnRzLm1ieAojIElmIHlvdSBkb24ndCBzdHJpcCB0aGUg ZXh0ZW5zaW9uICJtYngiIHlvdSB3aWxsIGdldCB0aGUgZm9sbG93aW5nCiMgaGllcmFyY2h5Ogoj CiMgSW5ib3gKIyAgICAgIHwKIyAgICAgICAtIFRyYXNoIAojICAgICAgfCAgICAgICB8IG1ieAoj ICAgICAgfAojICAgICAgIC0gU2VudCAKIyAgICAgIHwgICAgICAgfCBtYngKIyAgICAgIHwKIyAg ICAgICAtIERyYWZ0cyAKIyAgICAgICAgICAgICAgfCBtYngKIwojIFRoaXMgaXMgbW9yZSB0aGFu IHVnbHkhCiMgSnVzdCB1c2U6CiMgICBtYjJtZCAtcyBvbGRtYWlsIC1yIG1ieAojCiMgTm90ZTog ZG9uJ3Qgc3BlY2lmeSB0aGUgZG90ISBJdCB3aWxsIGJlIHN0cmlwcGVkIG9mZgojIGF1dG9tYWdp Y2FsbHkgOykKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKdXNlIHN0cmljdDsKdXNlIEdldG9w dDo6U3RkOwp1c2UgRGF0ZTo6UGFyc2U7CnVzZSBJTzo6SGFuZGxlOwp1c2UgRmNudGw7CgoJCSAg ICAjIHByaW50IHRoZSB1c2FnZSBtZXNzYWdlCnN1YiB1c2FnZSgpIHsKICAgIHByaW50ICJVc2Fn ZTpcbiI7CiAgICBwcmludCAiICAgICAgIG1iMm1kIC1oXG4iOwogICAgcHJpbnQgIiAgICAgICBt YjJtZCBbLWNdIC1tIFstZCBkZXN0ZGlyXVxuIjsKICAgIHByaW50ICIgICAgICAgbWIybWQgWy1j XSAtcyBzb3VyY2VmaWxlIFstZCBkZXN0ZGlyXVxuIjsKICAgIGRpZSAgICIgICAgICAgbWIybWQg Wy1jXSAtcyBzb3VyY2VkaXIgWy1sIHd1LW1haWxib3hsaXN0XSBbLVJ8LWYgc29tZWZvbGRlcl0g Wy1kIGRlc3RkaXJdIFstciBzdHJpcF9leHRlbnNpb25dXG4iOwp9CgkJICAgICMgZ2V0IG9wdGlv bnMKbXkgJW9wdHM7CmdldG9wdHMoJ2Q6ZjpjaG1zOnI6bDpSJywgXCVvcHRzKSB8fCB1c2FnZSgp Owp1c2FnZSgpIGlmICggZGVmaW5lZCgkb3B0c3tofSkKCXx8ICghZGVmaW5lZCgkb3B0c3ttfSkg JiYgIWRlZmluZWQoJG9wdHN7c30pKSApOwoKIyBHZXQgdWlkLCB1c2VybmFtZSBhbmQgaG9tZSBk aXIKbXkgKCRuYW1lLCAkcGFzc3dkLCAkdWlkLCAkZ2lkLCAkcXVvdGEsICRjb21tZW50LCAkZ2Nv cywgJGhvbWVkaXIsICRzaGVsbCkgPSBnZXRwd3VpZCgkPCk7CgojIEdldCBhcmd1bWVudHMgYW5k IGRldGVybWluZSBzb3VyY2UKIyBhbmQgdGFyZ2V0IGRpcmVjdG9yaWVzLgpteSAkbWJyb290ID0g dW5kZWY7CSMgdGhpcyBpcyB0aGUgYmFzZSBkaXJlY3RvcnkgZm9yIHRoZSBtYm94ZXMKbXkgJG1i ZGlyID0gdW5kZWY7CSMgdGhpcyBpcyBhbiBtYm94IGRpciByZWxhdGl2ZSB0byB0aGUgJG1icm9v dApteSAkbWJmaWxlID0gdW5kZWY7CSMgdGhpcyBpcyBhbiBtYm94IGZpbGUKbXkgJGRlc3QgPSB1 bmRlZjsKbXkgJHN0cmlwX2V4dCA9IHVuZGVmOwpteSAkdXNlX2NsID0gdW5kZWY7CSMgZGVmaW5l cyB3aGV0aGVyIHdlIHVzZSB0aGUgQ29udGVudC1MZW5ndGg6IGhlYWRlciBpZiBwcmVzZW50Cgoj IGlmIG9wdGlvbiAiLWMiIGlzIGdpdmVuLCB3ZSB1c2UgdGhlIENvbnRlbnQtTGVuZ3RoOiBoZWFk ZXIgaWYgcHJlc2VudAojIGRhbmdlcm91cyEgbWF5IGJlIHVucmVsaWFibGUsIGFzIHRoZSB3aG9s ZSBDTCBzdHVmZiBpcyBhIGJhZCBpZGVhCmlmIChkZWZpbmVkKCRvcHRze2N9KSkKewoJJHVzZV9j bCA9IDE7Cn0gZWxzZSB7CgkkdXNlX2NsID0gMDsKfQoKIyBmaXJzdCwgaWYgdGhlIHVzZXIgaGFz IGdvbmUgdGhlIC1tIG9wdGlvbgojIHdlIHNpbXBseSBjb252ZXJ0IHRoZWlyIG1haWxmaWxlCmlm IChkZWZpbmVkKCRvcHRze219KSkKewoJaWYgKGRlZmluZWQoJEVOVnsnTUFJTCd9KSkgewoJCSRt YmZpbGUgPSAkRU5WeydNQUlMJ307Cgl9IGVsc2lmICggLWYgIi92YXIvc3Bvb2wvbWFpbC8kbmFt ZSIgKSB7CgkJJG1iZmlsZSA9ICIvdmFyL3Nwb29sL21haWwvJG5hbWUiCgl9IGVsc2lmICggLWYg Ii92YXIvbWFpbC8kbmFtZSIgKSB7CgkJJG1iZmlsZSA9ICIvdmFyL21haWwvJG5hbWUiCgl9IGVs c2UgewoJCWRpZSgiSSBzZWFyY2hlZCBcJE1BSUwsIC92YXIvc3Bvb2wvbWFpbC8kbmFtZSBhbmQg L3Zhci9tYWlsLyRuYW1lLCAiLgoJCQkiYnV0IEkgY291bGRuJ3QgZmluZCB5b3VyIG1haWwgc3Bv b2wgZmlsZSAtICIpOwoJfQp9CiMgc2VlIGlmIHRoZSB1c2VyIGhhcyBzcGVjaWZpZWQgYSBzb3Vy Y2UgZGlyZWN0b3J5CmVsc2lmIChkZWZpbmVkKCRvcHRze3N9KSkKewoJIyBpZiBvcHRze3N9IGRv ZXNuJ3Qgc3RhcnQgd2l0aCBhICIvIiB0aGVuCgkjIGl0IGlzIGEgc3ViZGlyIG9mIHRoZSB1c2Vy cyAkaG9tZQoJIyBpZiBpdCBkb2VzIHN0YXJ0IHdpdGggYSAiLyIgdGhlbgoJIyBsZXQncyB0YWtl ICRtYnJvb3QgYXMgYSBhYnNvbHV0IHBhdGgKCSRvcHRze3N9ID0gIiRob21lZGlyLyRvcHRze3N9 IiBpZiAoJG9wdHN7c30gIX4gL15cLy8pOyAKCgkjIGNoZWNrIGlmIHRoZSBnaXZlbiBzb3VyY2Ug aXMgYSBtYm94IGZpbGUKCWlmICgtZiAkb3B0c3tzfSkKCXsKCQkkbWJmaWxlID0gJG9wdHN7c307 Cgl9CgoJIyBvdGhlcndpc2UgY2hlY2sgaWYgaXQgaXMgYSBkaXJlY3RvcnkKCWVsc2lmICgtZCAk b3B0c3tzfSkKCXsKCQkkbWJyb290ID0gJG9wdHN7c307CgkJIyBnZXQgcmlkIG9mIHRyYWlsaW5n IC8ncwoJCSRtYnJvb3QgPX4gcy9cLyQvLzsKCgkJIyBjaGVjayBpZiB3ZSBoYXZlIGEgc3BlY2lm aWVkIHN1YiBkaXJlY3RvcnksCgkJIyBvdGhlcndpc2UgdGhlIHN1YiBkaXJlY3RvcnkgaXMgJy4n CgkJaWYgKGRlZmluZWQoJG9wdHN7Zn0pKQoJCXsKCQkJJG1iZGlyID0gJG9wdHN7Zn07CgkJCSMg Z2V0IHJpZCBvZiB0cmFpbGluZyAvJ3MKCQkJJG1iZGlyID1+IHMvXC8kLy87CgkJfQoJfQoKCSMg b3RoZXJ3aXNlIHdlIGhhdmUgYW4gZXJyb3IKCWVsc2UKCXsKCQlkaWUoIkZhdGFsOiBTb3VyY2Ug aXMgbm90IGFuIG1ib3ggZmlsZSBvciBhIGRpcmVjdG9yeSFcbiIpOwoJfQp9CgoKIyBnZXQgdGhl IGRlc3QKZGVmaW5lZCgkb3B0c3tkfSkgJiYgKCRkZXN0ID0gJG9wdHN7ZH0pIHx8ICgkZGVzdCA9 ICJNYWlsZGlyIik7CiMgc2VlIGlmIHdlIGhhdmUgYW55dGhpbmcgdG8gc3RyaXAKZGVmaW5lZCgk b3B0c3tyfSkgJiYgKCRzdHJpcF9leHQgPSAkb3B0c3tyfSk7CiMgTm8gJy1mJyB3aXRoICctUicK aWYoKGRlZmluZWQoJG9wdHN7Un0pKSYmKGRlZmluZWQoJG9wdHN7Zn0pKSkgeyBkaWUgIk5vIHJl Y3Vyc2lvbiB3aXRoIFwiLWZcIiI7fQojIEdldCBsaXN0IG9mIGZvbGRlcnMKbXkgQGZsaXN0Owpp ZihkZWZpbmVkKCRvcHRze2x9KSkKewogICAgb3BlbiAoTElTVCwkb3B0c3tsfSkgb3IgZGllICJD b3VsZCBub3Qgb3BlbiBtYWlsYm94IGxpc3QgJG9wdHN7bH06ICQhIjsKICAgIEBmbGlzdD08TElT VD47CiAgICBjbG9zZSBMSVNUOwp9CgojIGlmIHRoZSBkZXN0aW5hdGlvbiBpcyByZWxhdGl2ZSB0 byB0aGUgaG9tZSBkaXIsCiMgY2hlY2sgdGhhdCB0aGUgaG9tZSBkaXIgZXhpc3RzCmRpZSgiRmF0 YWw6IGhvbWUgZGlyICRob21lZGlyIGRvZXNuJ3QgZXhpc3QuXG4iKSBpZiAoJGRlc3QgIX4gL15c Ly8gJiYgICEgLWUgJGhvbWVkaXIpOwoKIwojIGZvcm0gdGhlIGRlc3RpbmF0aW9uIHZhbHVlCiMg c2xhcCB0aGUgaG9tZSBkaXIgb24gdGhlIGZyb250IG9mIHRoZSBkZXN0IGlmIHRoZSBkZXN0IGRv ZXMgbm90IGJlZ2luCiMgd2l0aCBhICcvJwokZGVzdCA9ICIkaG9tZWRpci8kZGVzdCIgaWYgKCRk ZXN0ICF+IC9eXC8vKTsKIyBnZXQgcmlkIG9mIHRyYWlsaW5nIC8ncwokZGVzdCA9fiBzL1wvJC8v OwoKCiMgQ291bnQgdGhlIG51bWJlciBvZiBtYWlsYm94ZXMsIG9yCiMgYXQgbGVhc3QgZmlsZXMs IHdlIGZvdW5kLgpteSAkbWFpbGJveGNvdW50ID0gMDsKCiMgU2luY2Ugd2UnbGwgYmUgbWFraW5n IHN1YiBkaXJlY3RvcmllcyBvZiB0aGUgbWFpbgojIE1haWxkaXIsIHdlIG5lZWQgdG8gbWFrZSBz dXJlIHRoYXQgdGhlIG1haW4gbWFpbGRpcgojIGV4aXN0cwombWFpbGRpcm1ha2UoJGRlc3QpOwoK IyBOb3cgd2UgZG8gZGlmZmVyZW50IHRoaW5ncyBkZXBlbmRpbmcgb24gd2hldGhlciB3ZSBjb252 ZXJ0IG9uZSBtYm94CiMgZmlsZSBvciBhIGRpcmVjdG9yeSBvZiBtYm94IGZpbGVzCmlmIChkZWZp bmVkKCRtYmZpbGUpKQp7CglpZiAoIWlzYW1haWxib3hmaWxlKCRtYmZpbGUpKQogICAgICAgIHsK ICAgICAgICAgICAgICBwcmludCAiU2tpcHBpbmcgJG1iZmlsZTogbm90IGEgbWJveCBmaWxlXG4i OwogICAgICAgIH0KCWVsc2UKCXsKCSAgICAgIHByaW50ICJDb252ZXJ0aW5nICRtYmZpbGUgdG8g bWFpbGRpcjogJGRlc3RcbiI7CgkgICAgICAjIHRoaXMgaXMgZWFzeSwgd2UganVzdCBydW4gdGhl IGNvbnZlcnQgZnVuY3Rpb24KCSAgICAgICZjb252ZXJ0KCRtYmZpbGUsICRkZXN0KTsKCX0KfQoj IGlmICctZicgd2FzIHVzZWQgLi4uCmVsc2lmIChkZWZpbmVkKCRtYmRpcikpCnsKCXByaW50ICJD b252ZXJ0aW5nIG1ib3hkaXIvbWJkaXI6ICRtYnJvb3QvJG1iZGlyIHRvIG1haWxkaXI6ICRkZXN0 L1xuIjsKCQoJIyBOb3cgc2V0IG91ciBzb3VyY2UgZGlyZWN0b3J5CglteSAkc291cmNlZGlyID0g IiRtYnJvb3QvJG1iZGlyIjsKCgkjIGNoZWNrIHRoYXQgdGhlIGRpcmVjdG9yeSB3ZSBhcmUgc3Vw cG9zZWQgdG8gYmUgZmluZGluZyBtYm94CgkjIGZpbGVzIGluLCBleGlzdHMgYW5kIGlzIGEgZGly ZWN0b3J5CgktZSAkc291cmNlZGlyIG9yIGRpZSgiRmF0YWw6IE1CRElSIGRpcmVjdG9yeSAkc291 cmNlZGlyLyBkb2VzIG5vdCBleGlzdC5cbiIpOwoJLWQgJHNvdXJjZWRpciBvciBkaWUoIkZhdGFs OiBNQkRJUiAkc291cmNlZGlyIGlzIG5vdCBhIGRpcmVjdG9yeS5cbiIpOwoKCQoJJmNvbnZlcnRp dCgkbWJkaXIsIiIpOwp9CiMgRWxzZSwgbGV0J3Mgd29yayBpbiAkbWJyb290CmVsc2UKewoJb3Bl bmRpcihTRElSLCAkbWJyb290KQoJCW9yIGRpZSgiRmF0YWw6IENhbm5vdCBvcGVuIHNvdXJjZSBk aXJlY3RvcnkgJG1icm9vdC8gXG4iKTsKCgoJd2hpbGUgKG15ICRzb3VyY2VmaWxlID0gcmVhZGRp cihTRElSKSkKCXsKCQlpZiAoLWQgIiRtYnJvb3QvJHNvdXJjZWZpbGUiKSB7CgkJCSMgUmVjdXJz ZSBvbmx5IGlmIHJlcXVlc3RlZCAodG8gYmUgY2hhbmdlZCA/KQoJCQlpZiAoZGVmaW5lZCgkb3B0 c3tSfSkpIHsKCQkJCXByaW50ICJjb252ZXJ0aXQoJHNvdXJjZWZpbGUsXCJcIilcbiI7CgkJCQkm Y29udmVydGl0KCRzb3VyY2VmaWxlLCIiKTsKCQkJfSBlbHNlIHsKCQkJcHJpbnQoIiRzb3VyY2Vm aWxlIGlzIGEgZGlyZWN0b3J5LCBidXQgJy1SJyB3YXMgbm90IHVzZWQuLi4gc2tpcHBpbmdcbiIp OwoJCQl9CgkJfQogICAgCQllbHNpZiAoIS1mICIkbWJyb290LyRzb3VyY2VmaWxlIikKCQl7CgkJ CXByaW50ICJTa2lwcGluZyAkbWJyb290LyRzb3VyY2VmaWxlIDogbm90IGEgZmlsZSBub3IgYSBk aXJcbiI7CgkJCW5leHQ7CgkJfQoJCWVsc2lmICghaXNhbWFpbGJveGZpbGUoIiRtYnJvb3QvJHNv dXJjZWZpbGUiKSkKCQl7CgkJCXByaW50ICJTa2lwcGluZyAkbWJyb290LyRzb3VyY2VmaWxlIDog bm90IGEgbWJveCBmaWxlXG4iOwoJCQluZXh0OwoJCX0KCQllbHNlIAoJCXsKCQkJJmNvbnZlcnRp dCgkc291cmNlZmlsZSwiIik7CgkJfQoJfSAjIGVuZCBvZiAid2hpbGUgKCRzZmlsZSA9IHJlYWRk aXIoU0RJUikpIiBsb29wLgoJY2xvc2VkaXIoU0RJUik7CglwcmludGYoIiRtYWlsYm94Y291bnQg ZmlsZXMgcHJvY2Vzc2VkLlxuIik7Cn0KIwoKZXhpdCAwOwoKIyBNeSBkZWJidWdnaW5nIHBsYWNl aG9sZGVyIEkgY2FuIHB1dCBzb21ld2hlcmUgdG8gc2hvdyBob3cgZmFyIHRoZSBzY3JpcHQgcmFu LgojIGRpZSgiU28gZmFyIHNvIGdvb2QuXG5cbiIpOwoKIyBUaGUgaXNhbWFpbGJveGZpbGUgZnVu Y3Rpb24KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgCiMgSGVyZSB3ZSBjaGVjayBpZiB0aGUg ZmlsZSBpcyBhIG1haWxib3ggZmlsZSwgbm90IGFuIGFkZHJlc3MtYm9vayBvciAKIyBzb21ldGhp bmcgZWxzZS4KIyBJZiBmaWxlIGlzIGVtcHR5LCB3ZSBzYXkgaXQgaXMgYSBtYm94LCB0byBjcmVh dGUgaXQgZW1wdHkuCiMKIyBSZXR1cm5zIDEgaWYgZmlsZSBpcyBzYWlkIG1ib3gsIDAgZWxzZS4K c3ViIGlzYW1haWxib3hmaWxlIHsKCW15ICgkbWJ4ZmlsZSkgPSBAXzsKCXJldHVybiAxIGlmKC16 ICRtYnhmaWxlKTsKCXN5c29wZW4oTUJYRklMRSwgIiRtYnhmaWxlIiwgT19SRE9OTFkpIG9yIGRp ZSAiQ291bGQgbm90IG9wZW4gJG1ieGZpbGUgISBcbiI7Cgl3aGlsZSg8TUJYRklMRT4pIHsKCQlp ZiAoL15Gcm9tLykgewoJCQljbG9zZShNQlhGSUxFKTsKCQkJcmV0dXJuIDE7CgkJfQoJCWVsc2Ug ewoJCQljbG9zZShNQlhGSUxFKTsKCQkJcmV0dXJuIDA7CgkJfQoJfQp9CgojIFRoZSBjb252ZXJ0 aXQgZnVuY3Rpb24KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBmdW5jdGlvbiBj cmVhdGVzIGFsbCBzdWJkaXJzIGluIG1haWxkaXIsIGFuZCBjYWxscyBjb252ZXJ0KCkgCiMgZm9y IGVhY2ggbWJveCBmaWxlLgojIFllcywgaXQgYmVjb21lcyB0aGUgJ21haW4gbG9vcCcgOikKc3Vi IGNvbnZlcnRpdAp7CgkjIEdldCBzdWJkaXIgYXMgYXJndW1lbnQKCW15ICgkZGlyLCRvbGRwYXRo KSA9IEBfOwoJCgkkb2xkcGF0aCA9fiBzL1wvXC8vLzsKCgkjIFNraXAgZmlsZXMgYmVnaW5uaW5n IHdpdGggJy4nIHNpbmNlIHRoZXkgYXJlCgkjIG5vdCBub3JtYWxseSBtYm94IGZpbGVzIG5vciBk aXJzIChpbmNsdWRlcyAnLicgYW5kICcuLicpCglpZiAoJGRpciA9fiAvXlwuLykKCXsKCQlwcmlu dCAiU2tpcHBpbmcgJGRpciA6IG5hbWUgYmVnaW5zIHdpdGggYSAnLidcbiI7CgkJcmV0dXJuOwoJ fQoJbXkgJGRlc3RpbmF0aW9uZGlyID0gJGRpcjsKCW15ICR0ZW1wcGF0aCA9ICRvbGRwYXRoOwoK CSMgV2UgZG9uJ3Qgd2FudCB0byBoYXZlIC4ncyBpbiB0aGUgJHRhcmdldGZpbGUgZmlsZQoJIyBu YW1lIGJlY2F1c2UgdGhleSB3aWxsIGJlY29tZSBkaXJlY3RvcmllcyBpbiB0aGUKCSMgTWFpbGRp ci4gVGhlcmVmb3JlIHdlIGNvbnZlcnQgdGhlbSB0byBfJ3MKCSR0ZW1wcGF0aCA9fiBzL1wuL1xf L2c7CgkkZGVzdGluYXRpb25kaXIgPX4gcy9cLi9cXy9nOwoJCgkjIEFwcGVuZGluZyAkb2xkcGF0 aCA9PiBwYXRoIGlzIG9ubHkgbWlzc2luZyAkZGVzdAoJJGRlc3RpbmF0aW9uZGlyID0gIiR0ZW1w cGF0aC4kZGVzdGluYXRpb25kaXIiOwoKCSMgQ29udmVydGluZyAnLycgdG8gJy4nIGluICRkZXN0 aW5hdGlvbmRpcgoJJGRlc3RpbmF0aW9uZGlyID1+cy9cLysvXC4vZzsKCQoJIyBzb3VyY2UgZGly CglteSAkc3JjZGlyPSIkbWJyb290LyRvbGRwYXRoLyRkaXIiOwoKCXByaW50ZigiY29udmVydGl0 KCk6IENvbnZlcnRpbmcgJGRpciBpbiAkbWJyb290LyRvbGRwYXRoIHRvICRkZXN0LyRkZXN0aW5h dGlvbmRpclxuIik7CgkmbWFpbGRpcm1ha2UoIiRkZXN0LyRkZXN0aW5hdGlvbmRpciIpOwoJcHJp bnQoImRlc3RpbmF0aW9uID0gJGRlc3RpbmF0aW9uZGlyXG4iKTsKCWlmICgtZCAkc3JjZGlyKSB7 CgkJb3BlbmRpcihTVUJESVIsICIkc3JjZGlyIikgb3IgZGllICJjYW4ndCBvcGVuICRzcmNkaXIg IVxuIjsKCQlteSBAc3ViZGlybGlzdD1yZWFkZGlyKFNVQkRJUik7CgkJY2xvc2VkaXIoU1VCRElS KTsKCQlmb3JlYWNoIChAc3ViZGlybGlzdCkgewoJCQluZXh0IGlmICgvXlwuKyQvKTsKCQkJcHJp bnQoIlN1YjogJF9cbiIpOwoJCQlwcmludCgiY29udmVydGl0KCRfLFwiJG9sZHBhdGgvJGRpclwi KVxuIik7CgkJCSZjb252ZXJ0aXQoJF8sIiRvbGRwYXRoLyRkaXIiKTsKCQl9IAoJfSBlbHNlIHsK CQkjIFNvdXJjZSBmaWxlIHZlcmlmcyAuLi4uCgkJIwoJCXJldHVybiBpZihkZWZpbmVkKCRvcHRz e2x9KSAmJiAhaW5saXN0KCIkb2xkcGF0aC8kZGlyIixAZmxpc3QpKTsKCgkJaWYgKCFpc2FtYWls Ym94ZmlsZSgiJG1icm9vdC8kb2xkcGF0aC8kZGlyIikpCgkJewoJCQlwcmludCAiU2tpcHBpbmcg JGRpciAoaXMgbm90IG1ib3gpXG4iOwoJCQluZXh0OwoJCX0KCgkJIyB0YXJnZXQgZmlsZSB2ZXJp ZnMuLi4KCQkjCgkJIyBpZiAkc3RyaXBfZXh0ZW5zaW9uIGlzIGRlZmluZWQsCgkJIyBzdHJpcCBp dCBvZmYgdGhlICR0YXJnZXRmaWxlCgkgICAgCWRlZmluZWQoJHN0cmlwX2V4dCkgJiYgKCRkZXN0 aW5hdGlvbmRpciA9fiBzL1wuJHN0cmlwX2V4dCQvLyk7CgkJJmNvbnZlcnQoIiRtYnJvb3QvJG9s ZHBhdGgvJGRpciIsIiRkZXN0LyRkZXN0aW5hdGlvbmRpciIpOwoJCSRtYWlsYm94Y291bnQrKzsK CX0KfQojIFRoZSBtYWlsZGlybWFrZSBmdW5jdGlvbgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQojCiMgSXQgZG9lcyB0aGUgc2FtZSB0aGluZyB0aGF0IHRoZSBtYWlsZGlybWFrZSBiaW5hcnkg dGhhdCAKIyBjb21lcyB3aXRoIGNvdXJpZXItaW1hcCBkaXN0cmlidXRpb24KIwpzdWIgbWFpbGRp cm1ha2UKewoJZm9yZWFjaChAXykgewoJCS1kICRfIG9yIG1rZGlyICRfLDA3MDAgb3IgZGllKCJG YXRhbDogRGlyZWN0b3J5ICRfIGRvZXNuJ3QgZXhpc3QgYW5kIGNhbid0IGJlIGNyZWF0ZWQuXG4i KTsKCQoJCS1kICIkXy90bXAiIG9yIG1rZGlyKCIkXy90bXAiLDA3MDApIG9yIGRpZSgiRmF0YWw6 IFVuYWJsZSB0byBtYWtlICRfL3RtcC8gc3ViZGlyZWN0b3J5LlxuIik7CgkJLWQgIiRfL25ldyIg b3IgbWtkaXIoIiRfL25ldyIsMDcwMCkgb3IgZGllKCJGYXRhbDogVW5hYmxlIHRvIG1ha2UgJF8v bmV3LyBzdWJkaXJlY3RvcnkuXG4iKTsKCQktZCAiJF8vY3VyIiBvciBta2RpcigiJF8vY3VyIiww NzAwKSBvciBkaWUoIkZhdGFsOiBVbmFibGUgdG8gbWFrZSAkXy9jdXIvIHN1YmRpcmVjdG9yeS5c biIpOwoJfQp9CgojIFRoZSBpbmxpc3QgZnVuY3Rpb24KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KIwojIEl0IGNoZWNrcyB0aGF0IHRoZSBmb2xkZXIgdG8gYmUgY29udmVydGVkIGlzIGluIHRo ZSBsaXN0IG9mIHN1YnNjcmliZWQKIyBmb2xkZXJzIGluIFdVLUlNQVAKIwpzdWIgaW5saXN0CnsK CW15ICgkZmlsZSxAZmxpc3QpID0gQF87CglteSAkdmFsaWQgPSAwOwoJIyBHZXQgcmlkIG9mIHRo ZSBmaXJzdCAvIGlmIGFueQoJJGZpbGUgPX4gcy9eXC8vLzsKCWZvcmVhY2ggbXkgJGZvbGRlciAo QGZsaXN0KSB7CgkJY2hvbXAgJGZvbGRlcjsKCQlpZiAoJGZpbGUgZXEgJGZvbGRlcikgewoJCQkk dmFsaWQgPSAxOwoJCQlsYXN0OwoJCX0KCX0KCWlmICghJHZhbGlkKSB7CgkJcHJpbnQgIiRmaWxl IGlzIG5vdCBpbiBsaXN0XG4iOwoJfQoJZWxzZSB7CgkJcHJpbnQgIiRmaWxlIGlzIGluIGxpc3Rc biI7Cgl9CgoJcmV0dXJuICR2YWxpZDsKfQoJCiMgCgojIFRoZSBjb252ZXJ0IGZ1bmN0aW9uCiMg LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIGZ1bmN0aW9uIGRvZXMgdGhlIGRvd24gYW5k IGRpcnR5IHdvcmsgb2YKIyBhY3R1YWxseSBjb252ZXJ0aW5nIHRoZSBtYm94IHRvIGEgbWFpbGRp cgojCnN1YiBjb252ZXJ0CnsKCSMgZ2V0IHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGFzIGFy Z3VtZW50cwoJbXkgKCRtYm94LCAkbWFpbGRpcikgPSBAXzsKCglwcmludGYoIlNvdXJjZSBNYm94 IGlzICRtYm94XG4iKTsKICAgICAgICBwcmludGYoIlRhcmdldCBNYWlsZGlyIGlzICRtYWlsZGly IFxuIikgOwoKCSMgY3JlYXRlIHRoZSBkaXJlY3RvcmllcyBmb3IgdGhlIG5ldyBtYWlsZGlyCgkj CgkjIGlmIGl0IGlzIHRoZSByb290IG1haWxkaXIgKGllLiBjb252ZXJ0aW5nIHRoZSBpbmJveCkK CSMgdGhlc2UgYWxyZWFkeSBleGlzdCBidXQgdGhhdHMgbm90IGEgYmlnIGlzc3VlCgoJJm1haWxk aXJtYWtlKCRtYWlsZGlyKTsKCiAgICAgICAgIyBDaGFuZ2UgdG8gdGhlIHRhcmdldCBtYWlsYm94 IGRpcmVjdG9yeS4KCiAgICAgICAgY2hkaXIgIiRtYWlsZGlyIiA7CgogICAgICAgICAJICAgICMg Q29udmVydHMgYSBNYm94IHRvIG11bHRpcGxlIGZpbGVzCiAgICAgICAgICAgICAgICAgICAgIyBp biBhIE1haWxkaXIuCiAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGlzIGFkYXB0ZWQgZnJvbSBt Ym94Mm1haWxkaXIuCiAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMg T3BlbiB0aGUgTWJveCBtYWlsYm94IGZpbGUuCgoKICAgICAgICBpZiAoc3lzb3BlbihNQk9YLCAi JG1ib3giLCBPX1JET05MWSkpCiAgICAgICAgewogICAgICAgICAgICAjcHJpbnRmKCJDb252ZXJ0 aW5nIE1ib3ggICAkbWJveCAuIC4gLiAgXG4iKTsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAg ICAgIHsKICAgICAgICAgICAgZGllKCJGYXRhbDogdW5hYmxlIHRvIG9wZW4gaW5wdXQgbWFpbGJv eCBmaWxlOiAkbWJveCAhIFxuIik7CiAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIFRo aXMgbG9vcCBzY2FucyB0aGUgaW5wdXQgbWFpbGJveCBmb3IKICAgICAgICAgICAgICAgICAgICAj IGEgbGluZSBzdGFydGluZyB3aXRoICJGcm9tICIuICBUaGUKICAgICAgICAgICAgICAgICAgICAj ICJeIiBiZWZvcmUgaXQgaXMgcGF0dGVybi1tYXRjaGluZwogICAgICAgICAgICAgICAgICAgICMg bGluZ28gZm9yIGl0IGJlaW5nIGF0IHRoZSBzdGFydCBvZiBhCiAgICAgICAgICAgICAgICAgICAg IyBsaW5lLgogICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAjIEVhY2gg ZW1haWwgaW4gTWJveCBtYWlsYm94IHN0YXJ0cwogICAgICAgICAgICAgICAgICAgICMgd2l0aCBz dWNoIGEgbGluZSwgd2hpY2ggaXMgd2h5IGFueQogICAgICAgICAgICAgICAgICAgICMgc3VjaCBs aW5lIGluIHRoZSBib2R5IG9mIHRoZSBlbWFpbAogICAgICAgICAgICAgICAgICAgICMgaGFzIHRv IGhhdmUgYSAiPiIgcHV0IGluIGZyb250IG9mIGl0LgogICAgICAgICAgICAgICAgICAgICMKICAg ICAgICAgICAgICAgICAgICAjIFRoaXMgaXMgbm90IHJlcXVpcmVkIGluIGEgTWFpbGRpcgogICAg ICAgICAgICAgICAgICAgICMgbWFpbGJveCwgYW5kIHNvbWUgbWFqaWsgYmVsb3cKICAgICAgICAg ICAgICAgICAgICAjIGZpbmRzIGFueSBzdWNoIHF1b3RlZCAiPiBGcm9tInMgYW5kCiAgICAgICAg ICAgICAgICAgICAgIyBnZXRzIHJpZCBvZiB0aGUgIj4gIiBxdW90ZS4KICAgICAgICAgICAgICAg ICAgICAjCiAgICAgICAgICAgICAgICAgICAgIyBFYWNoIGVtYWlsIGlzIHB1dCBpbiBhIGZpbGUK ICAgICAgICAgICAgICAgICAgICAjIGluIHRoZSBjdXIvIHN1YmRpcmVjdG9yeSB3aXRoIGEKICAg ICAgICAgICAgICAgICAgICAjIG5hbWUgb2YgdGhlIGZvcm06CiAgICAgICAgICAgICAgICAgICAg IwogICAgICAgICAgICAgICAgICAgICMgICAgbm5ubm5ubm5uLmNjY2MubWJveDoyLFhYWFgKICAg ICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgIyB3aGVyZToKICAgICAgICAg ICAgICAgICAgICAjICAgICJubm5ubm5ubm4iIGlzIHRoZSBVbml4IHRpbWUgc2luY2UKICAgICAg ICAgICAgICAgICAgICAjICAgICAgIDE5NzAgd2hlbiB0aGlzIHNjcmlwdCBzdGFydGVkCiAgICAg ICAgICAgICAgICAgICAgIyAgICAgICBydW5uaW5nLCBpbmNyZW1lbnRlZCBieSAxIGZvcgogICAg ICAgICAgICAgICAgICAgICMgICAgICAgZXZlcnkgZW1haWwuICBUaGlzIGlzIHRvIGVuc3VyZQog ICAgICAgICAgICAgICAgICAgICMgICAgICAgdW5pcXVlIG5hbWVzIGZvciBlYWNoIG1lc3NhZ2UK ICAgICAgICAgICAgICAgICAgICAjICAgICAgIGZpbGUuCiAgICAgICAgICAgICAgICAgICAgIwog ICAgICAgICAgICAgICAgICAgICMgICAgIi5jY2NjIiBpcyB0aGUgbWVzc2FnZSBjb3VudCBvZgog ICAgICAgICAgICAgICAgICAgICMgICAgICAgbWVzc2FnZXMgZnJvbSB0aGlzIG1ib3guCiAgICAg ICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgICAgIi5tYm94IiBpcyBqdXN0 IHRvIGluZGljYXRlIHRoYXQKICAgICAgICAgICAgICAgICAgICAjICAgICAgIHRoaXMgbWVzc2Fn ZSB3YXMgY29udmVydGVkIGZyb20KICAgICAgICAgICAgICAgICAgICAjICAgICAgIGFuIE1ib3gg bWFpbGJveC4KICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgIyAgICAi OjIsIiBpcyB0aGUgc3RhcnQgb2YgcG90ZW50aWFsbHkKICAgICAgICAgICAgICAgICAgICAjICAg ICAgIG11bHRpcGxlIElNQVAgZmxhZyBjaGFyYWN0ZXJzCiAgICAgICAgICAgICAgICAgICAgIyAg ICAgICAiWFhYWCIsIGJ1dCBtYXkgYmUgZm9sbG93ZWQgYnkKICAgICAgICAgICAgICAgICAgICAj ICAgICAgIG5vdGhpbmcuCiAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAg ICMgVGhpcyBpcyBzb3J0LW9mICBjb21wbGlhbnQgd2l0aAogICAgICAgICAgICAgICAgICAgICMg dGhlIE1haWxkaXIgbmFtaW5nIGNvbnZlbnRpb25zCiAgICAgICAgICAgICAgICAgICAgIyBzcGVj aWZpZWQgYXQ6CiAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgaHR0 cDovL3d3dy5xbWFpbC5vcmcvbWFuL21hbjUvbWFpbGRpci5odG1sCiAgICAgICAgICAgICAgICAg ICAgIwogICAgICAgICAgICAgICAgICAgICMgVGhpcyBhcHByb2FjaCBkb2VzIG5vdCBpbnZvbHZl IHRoZQogICAgICAgICAgICAgICAgICAgICMgcHJvY2VzcyBJRCBvciB0aGUgaG9zdG5hbWUsIGJ1 dCBpdCBpcwogICAgICAgICAgICAgICAgICAgICMgcHJvYmFibHkgZ29vZCBlbm91Z2guCiAgICAg ICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgV2hlbiB0aGUgSU1BUCBzZXJ2 ZXIgbG9va3MgYXQgdGhpcwogICAgICAgICAgICAgICAgICAgICMgbWFpbGJveCwgaXQgd2lsbCBt b3ZlIHRoZSBmaWxlcyB0bwogICAgICAgICAgICAgICAgICAgICMgdGhlIGN1ci8gZGlyZWN0b3J5 IGFuZCBjaGFuZ2UgdGhlaXIKICAgICAgICAgICAgICAgICAgICAjIG5hbWVzIGFzIGl0IHBsZWFz ZXMuICBJbiB0aGUgY2FzZQogICAgICAgICAgICAgICAgICAgICMgb2YgQ291cmllciBJTUFQLCB0 aGUgbmFtZXMgd2lsbAogICAgICAgICAgICAgICAgICAgICMgYmVjb21lIGxpa2U6CiAgICAgICAg ICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgICA5OTUwOTY1NDEuMjUzNTEubWJv eDoyLFMKICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgIyB3aXRoIDI1 MzUxIGJlaW5nIENvdXJpZXIgSU1BUCdzCiAgICAgICAgICAgICAgICAgICAgIyBwcm9jZXNzIElE LiAgVGhlIDoyLCBpcyB0aGUgc3RhcnQKICAgICAgICAgICAgICAgICAgICAjIG9mIHRoZSBmbGFn cywgYW5kIHRoZSAiUyIgbWVhbnMKICAgICAgICAgICAgICAgICAgICAjIHRoYXQgdGhpcyBvbmUg aGFzIGJlZW4gc2VlbiBieQogICAgICAgICAgICAgICAgICAgICMgdGhlIHVzZXIuICAoQnV0IGlz IHRoaXMgdGhlIHNhbWUKICAgICAgICAgICAgICAgICAgICAjIG1lYW5pbmcgYXMgdGhlIHVzZXIg YWN0dWFsbHkKICAgICAgICAgICAgICAgICAgICAjIGhhdmluZyBvcGVuZWQgdGhlIG1lc3NhZ2Ug dG8gc2VlCiAgICAgICAgICAgICAgICAgICAgIyBpdHMgY29udGVudHMsIHJhdGhlciB0aGFuIGp1 c3QgdGhlCiAgICAgICAgICAgICAgICAgICAgIyBJTUFQIHNlcnZlciBoYXZpbmcgYmVlbiBhc2tl ZCB0bwogICAgICAgICAgICAgICAgICAgICMgbGlzdCB0aGUgbWVzc2FnZSdzIFN1YmplY3QgZXRj LgogICAgICAgICAgICAgICAgICAgICMgc28gdGhlIGNsaWVudCBjb3VsZCBsaXN0IGl0IGluIHRo ZQogICAgICAgICAgICAgICAgICAgICMgdmlzaWJsZSBJbmJveD8pCiAgICAgICAgICAgICAgICAg ICAgIwogICAgICAgICAgICAgICAgICAgICMgVGhpcyBjb250cmFzdHMgd2l0aCBhIG1lc3NhZ2UK ICAgICAgICAgICAgICAgICAgICAjIGNyZWF0ZWQgYnkgQ291cmllciBJTUFQLCBzYXkgd2l0aAog ICAgICAgICAgICAgICAgICAgICMgYSBtZXNzYWdlIGNvcHksIHdoaWNoIGlzIGxpa2U6CiAgICAg ICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgICA5OTUwOTY1NDEuMjUzNTEu emFpcixTPTE0Mjg1OjIsUwogICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAg ICAjIHdoZXJlICIsUz0xNDI4NSIgaXMgdGhlIHNpemUgb2YgdGhlCiAgICAgICAgICAgICAgICAg ICAgIyBtZXNzYWdlIGluIGJ5dGVzLgogICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAg ICAgICAgICAjIENvdXJpZXIgTWFpbGRyb3AncyBuYW1lcyBhcmUgc2ltaWxhcgogICAgICAgICAg ICAgICAgICAgICMgYnV0IGxhY2sgdGhlICI6MixYWFhYIiBmbGFncyAuIC4gLgogICAgICAgICAg ICAgICAgICAgICMgZXhjZXB0IGZvciBteSBtb2RpZmllZCBNYWlsZHJvcAogICAgICAgICAgICAg ICAgICAgICMgd2hpY2ggY2FuIGRlbGl2ZXIgdGhlbSB3aXRoIGEKICAgICAgICAgICAgICAgICAg ICAjICI6MixUIiAtIGZsYWdnZWQgZm9yIGRlbGV0aW9uLgogICAgICAgICAgICAgICAgICAgICMK ICAgICAgICAgICAgICAgICAgICAjIEkgaGF2ZSBleHRlbmRlZCB0aGUgbG9naWMgb2YgdGhlCiAg ICAgICAgICAgICAgICAgICAgIyBwZXItbWVzc2FnZSBpbm5lciBsb29wIHRvIHN0b3AKICAgICAg ICAgICAgICAgICAgICAjIHNhdmluZyBhIGZpbGUgZm9yIGEgbWVzc2FnZSB3aXRoOgogICAgICAg ICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAjIFN1YmplY3Q6IERPTidUIERFTEVU RSBUSElTIE1FU1NBR0UgLS0gRk9MREVSIElOVEVSTkFMIERBVEEKICAgICAgICAgICAgICAgICAg ICAjCiAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGlzIHRoZSBkdW1teSBtZXNzYWdlLCBhbHdh eXMKICAgICAgICAgICAgICAgICAgICAjIGF0IHRoZSBzdGFydCBvZiBhbiBNYm94IGZvcm1hdAog ICAgICAgICAgICAgICAgICAgICMgbWFpbGJveCBmaWxlIC0gYW5kIGlzIHB1dCB0aGVyZQogICAg ICAgICAgICAgICAgICAgICMgYnkgVVcgSU1BUEQuICBTaW5jZSBxdWl0ZSBhIGZldwogICAgICAg ICAgICAgICAgICAgICMgcGVvcGxlIHdpbGwgdXNlIHRoaXMgZm9yCiAgICAgICAgICAgICAgICAg ICAgIyBjb252ZXJ0aW5nIGZyb20gYSBVVyBzeXN0ZW0sCiAgICAgICAgICAgICAgICAgICAgIyBJ IGZpZ3VyZSBpdCBpcyB3b3J0aCBpdC4KICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAg ICAgICAgICAgIyBJIHdpbGwgbm90IHNhdmUgYW55IHN1Y2ggbWVzc2FnZQogICAgICAgICAgICAg ICAgICAgICMgZmlsZSBmb3IgdGhlIGR1bW15IG1lc3NhZ2UuCiAgICAgICAgICAgICAgICAgICAg IwogICAgICAgICAgICAgICAgICAgICMgUGxhbgogICAgICAgICAgICAgICAgICAgICMgLS0tLQog ICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAjIFdlIHdhbnQgdG8gcmVh ZCB0aGUgZW50aXJlIE1ib3ggZmlsZSwgd2hpbHN0CiAgICAgICAgICAgICAgICAgICAgIyBnb2lu ZyB0aHJvdWdoIGEgbG9vcCBmb3IgZWFjaCBtZXNzYWdlIHdlIGZpbmQuCiAgICAgICAgICAgICAg ICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgV2Ugd2FudCB0byByZWFkIGFsbCB0aGUgaGVh ZGVycyBvZiB0aGUgbWVzc2FnZSwKICAgICAgICAgICAgICAgICAgICAjIHN0YXJ0aW5nIHdpdGgg dGhlICJGcm9tICIgbGluZS4gICBGb3IgdGhhdCAiRnJvbSAiCiAgICAgICAgICAgICAgICAgICAg IyBsaW5lIHdlIHdhbnQgdG8gZ2V0IGEgZGF0ZS4KICAgICAgICAgICAgICAgICAgICAjCiAgICAg ICAgICAgICAgICAgICAgIyBGb3IgYWxsIG90aGVyIGhlYWRlciBsaW5lcywgd2Ugd2FudCB0byBz dG9yZSB0aGVtCiAgICAgICAgICAgICAgICAgICAgIyBpbiAkaGVhZGVycyB3aGlsc3QgcGFyc2lu ZyB0aGVtIHRvIGZpbmQ6CiAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAg ICMgICAxIC0gQW55IGZsYWdzIGluIHRoZSAiU3RhdHVzOiAiIG9yICJYLVN0YXR1czogIiBvcgog ICAgICAgICAgICAgICAgICAgICMgICAgICAgIlgtTW96aWxsYS1TdGF0dXM6ICIgbGluZXMuCiAg ICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgICAyIC0gQSBzdWJqZWN0 IGxpbmUgaW5kaWNhdGluZyB0aGlzIGlzIHRoZSBkdW1teSBtZXNzYWdlCiAgICAgICAgICAgICAg ICAgICAgIyAgICAgICBhdCB0aGUgc3RhcnQgKHR5cGljYWxseSwgYnV0IG5vdCBuZWNlc3Nhcmls eSkgb2YKICAgICAgICAgICAgICAgICAgICAjICAgICAgIHRoZSBNYm94LgogICAgICAgICAgICAg ICAgICAgICMKICAgICAgICAgICAgICAgICAgICAjIE9uY2Ugd2UgcmVhY2ggdGhlIGVuZCBvZiB0 aGUgaGVhZGVycywgd2Ugd2lsbCBjcnVuY2ggYW55CiAgICAgICAgICAgICAgICAgICAgIyBmbGFn cyB3ZSBmb3VuZCB0byBjcmVhdGUgYSBmaWxlIG5hbWUuICBUaGVuLCB1bmxlc3MgdGhpcyBpcwog ICAgICAgICAgICAgICAgICAgICMgdGhlIGR1bW15IG1lc3NhZ2Ugd2UgY3JlYXRlIHRoYXQgZmls ZSBhbmQgd3JpdGUgYWxsIHRoZQogICAgICAgICAgICAgICAgICAgICMgaGVhZGVycyB0byBpdC4K ICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgIyBUaGVuIHdlIGNvbnRp bnVlIHJlYWRpbmcgdGhlIE1ib3gsIGNvbnZlcnRpbmcgIj5Gcm9tICIgdG8KICAgICAgICAgICAg ICAgICAgICAjICJGcm9tICIgYW5kIHdyaXRpbmcgaXQgdG8gdGhlIGZpbGUsIHVudGlsIHdlIHJl YWNoIG9uZSBvZjoKICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgIyAg IDEgLSBBbm90aGVyICJGcm9tICIgbGluZSAoaW5kaWNhdGluZyB0aGUgc3RhcnQgb2YgYW5vdGhl cgogICAgICAgICAgICAgICAgICAgICMgICAgICAgbWVzc2FnZSkuCiAgICAgICAgICAgICAgICAg ICAgIwogICAgICAgICAgICAgICAgICAgICMgb3IKICAgICAgICAgICAgICAgICAgICAjCiAgICAg ICAgICAgICAgICAgICAgIyAgIDIgLSBUaGUgZW5kIG9mIHRoZSBNYm94LgogICAgICAgICAgICAg ICAgICAgICMKICAgICAgICAgICAgICAgICAgICAjIEluIHRoZSBmb3JtZXIgY2FzZSwgd2hpY2gg d2UgZGV0ZWN0IGF0IHRoZSBzdGFydCBvZiB0aGUgbG9vcAogICAgICAgICAgICAgICAgICAgICMg d2UgbmVlZCB0byBjbG9zZSB0aGUgZmlsZSBhbmQgdG91Y2ggaXQgdG8gYWx0ZXIgaXRzIGRhdGUt dGltZS4KICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgIyBJbiB0aGUg bGF0ZXIgY2FzZSwgd2UgYWxzbyBuZWVkIHRvIGNsb3NlIHRoZSBmaWxlIGFuZCB0b3VjaAogICAg ICAgICAgICAgICAgICAgICMgaXQgdG8gYWx0ZXIgaXRzIGRhdGUtdGltZSAtIGJ1dCB0aGlzIGlz IGJleW9uZCB0aGUgZW5kIG9mIHRoZQogICAgICAgICAgICAgICAgICAgICMgbG9vcC4KCgogICAg ICAgICAgICAgICAgICAgICMgVmFyaWFibGVzCiAgICAgICAgICAgICAgICAgICAgIyAtLS0tLS0t LS0KCiAgICAgICAgbXkgJG1lc3NhZ2Vjb3VudCA9IDA7CgogICAgICAgICAgICAgICAgICAgICMg Rm9yIGdlbmVyYXRpbmcgdW5pcXVlIGZpbGVuYW1lcyBmb3IKICAgICAgICAgICAgICAgICAgICAj IGVhY2ggbWVzc2FnZS4gIEluaXRpYWxpc2UgaXQgaGVyZSB3aXRoCiAgICAgICAgICAgICAgICAg ICAgIyBudW1lcmljIHRpbWUgaW4gc2Vjb25kcyBzaW5jZSAxOTcwLgogICAgICAgIG15ICR1bmlx dWUgPSB0aW1lOwoKICAgICAgICAgICAgICAgICAgICAjIE5hbWUgb2YgbWVzc2FnZSBmaWxlIHRv IGRlbGV0ZSBpZiB3ZSBmb3VuZCB0aGF0CiAgICAgICAgICAgICAgICAgICAgIyBpdCB3YXMgY3Jl YXRlZCBieSByZWFkaW5nIHRoZSBNYm94IGR1bW15IG1lc3NhZ2UuCgogICAgICAgIG15ICRkZWxl dGVkdW1teSA9ICcnOwoKICAgICAgICAgICAgICAgICAgICAjIFRvIHN0b3JlIHRoZSBjb21wbGV0 ZSAiRnJvbSAoYWRkcmVzcykgKGRhdGUtdGltZSkKICAgICAgICAgICAgICAgICAgICAjIHdoaWNo IGRlbGluZWF0ZXMgdGhlIHN0YXJ0IG9mIGVhY2ggbWVzc2FnZQogICAgICAgICAgICAgICAgICAg ICMgaW4gdGhlIE1ib3gKICAgICAgICBteSAkZnJvbWxpbmUgPSAnJzsKCgogICAgICAgICAgICAg ICAgICAgICMgU2V0IHRvIDEgd2hlbiB3ZSBhcmUgcmVhZGluZyB0aGUgaGVhZGVyIGxpbmVzLAog ICAgICAgICAgICAgICAgICAgICMgaW5jbHVkaW5nIHRoZSAiRnJvbSAiIGxpbmUuCiAgICAgICAg ICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgMCBtZWFucyB3ZSBhcmUgcmVhZGlu ZyB0aGUgbWVzc2FnZSBib2R5IGFuZCBsb29raW5nCiAgICAgICAgICAgICAgICAgICAgIyBmb3Ig YW5vdGhlciAiRnJvbSAiIGxpbmUuCgogICAgICAgIG15ICRpbmhlYWRlcnMgPSAwOwoKICAgICAg ICAgICAgICAgICAgICAjIFZhcmlhYmxlIHRvIGhvbGQgYWxsIGhlYWRlcnMgKGFwYXJ0IGZyb20K ICAgICAgICAgICAgICAgICAgICAjIHRoZSBmaXJzdCBsaW5lICJGcm9tIC4uLi4iIHdoaWNoIGlz IG5vdAogICAgICAgICAgICAgICAgICAgICMgcGFydCBvZiB0aGUgbWVzc2FnZSBpdHNlbGYuCiAg ICAgICAgbXkgJGhlYWRlcnMgPSAnJzsKCiAgICAgICAgICAgICAgICAgICAgIyBWYXJpYWJsZSB0 byBob2xkIHRoZSBhY2N1bXVsYXRlZCBjaGFyYWN0ZXJzCiAgICAgICAgICAgICAgICAgICAgIyB3 ZSBmaW5kIGluIGhlYWRlciBsaW5lcyBvZiB0aGUgdHlwZToKICAgICAgICAgICAgICAgICAgICAj CiAgICAgICAgICAgICAgICAgICAgIyAgICBTdGF0dXM6CiAgICAgICAgICAgICAgICAgICAgIyAg ICBYLVN0YXR1czoKICAgICAgICAgICAgICAgICAgICAjICAgIFgtTW96aWxsYS1TdGF0dXM6CiAg ICAgICAgICAgICAgICAgICAgIyAgICBYLUV2b2x1dGlvbjoKICAgICAgICBteSAkZmxhZ3MgPSAn JzsKCiAgICAgICAgICAgICAgICAgICAgIyBUbyBidWlsZCB0aGUgZmlsZSBuYW1lIGZvciB0aGUg bWVzc2FnZSBpbi4KICAgICAgICBteSAkbWVzc2FnZWZuID0gJyc7CgoKICAgICAgICAgICAgICAg ICAgICAjIFRoZSBkYXRlIHN0cmluZyBmcm9tIHRoZSAiRnJvbSAiIGxpbmUgb2YgZWFjaAogICAg ICAgICAgICAgICAgICAgICMgbWVzc2FnZSB3aWxsIGJlIHdyaXR0ZW4gaGVyZSAtIGFuZCB1c2Vk IGJ5CiAgICAgICAgICAgICAgICAgICAgIyB0b3VjaCB0byBhbHRlciB0aGUgZGF0ZS10aW1lIG9m IGVhY2ggbWVzc2FnZQogICAgICAgICAgICAgICAgICAgICMgZmlsZS4gIFB1dCBub24tZGF0ZSB0 ZXh0IGhlcmUgdG8gbWFrZSBpdAogICAgICAgICAgICAgICAgICAgICMgc3BpdCB0aGUgZHVtbXkg aWYgbXkgY29kZSBmYWlscyB0byBmaW5kIGEKICAgICAgICAgICAgICAgICAgICAjIGRhdGUgdG8g d3JpdGUgaW50byB0aGlzLgoKICAgICAgICBteSAkcmVjZWl2ZWRhdGUgPSAnQm9ndXMnOwoKCSMg VGhlIHN1YmplY3Qgb2YgdGhlIG1lc3NhZ2UKCW15ICRzdWJqZWN0ID0gJyc7CgoJbXkgJHByZXZp b3VzX2xpbmVfd2FzX2VtcHR5ID0gMTsKCiAgICAgICAgICAgICAgICAgICAgIyBXZSByZWNvcmQg dGhlIG1lc3NhZ2Ugc3RhcnQgbGluZSBoZXJlLCBmb3IgZXJyb3IKICAgICAgICAgICAgICAgICAg ICAjIHJlcG9ydGluZy4KICAgICAgICBteSAkc3RhcnRsaW5lOwoKICAgICAgICAgICAgICAgICAg ICAjIElmIGRlZmluZWQsIHdlIHVzZSB0aGlzIGFzIHRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gdGhl CiAgICAgICAgICAgICAgICAgICAgIyBtZXNzYWdlIGJvZHkgcmF0aGVyIHRoYW4gbG9va2luZyBm b3IgYSAvXkZyb20gLyBsaW5lLgogICAgICAgIG15ICRjb250ZW50bGVuZ3RoOwoKCQkJICAgICMg QSBGcm9tIGxpbmVzIGNhbiBlaXRoZXIgb2NjdXIgYXMgdGhlIGZpcnN0CgkJCSAgICAjIGxpbmUg b2YgYSBmaWxlLCBvciBhZnRlciBhbiBlbXB0eSBsaW5lLgoJCQkgICAgIyBNb3N0IG1haWwgc3lz dGVtcyB3aWxsIHF1b3RlIGFsbCBGcm9tIGxpbmVzCgkJICAgICAgICAgICAgIyBhcHBlYXJpbmcg aW4gdGhlIG1lc3NhZ2UsIGJ1dCBzb21lIHdpbGwgb25seQoJCQkgICAgIyBkbyBpdCB3aGVuIG5l Y2Vzc2FyeS4KCQkJICAgICMgU2luY2Ugd2UgaW5pdGlhbGlzZSB0aGUgdmFyaWFibGUgdG8gdHJ1 ZSwKCQkJICAgICMgd2UgZG9uJ3QgbmVlZCB0byBjaGVjayBmb3IgYmVnaW5uaW5nIG9mIGZpbGUu CgogICAgICAgIHdoaWxlKDxNQk9YPikKICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjIGV4Y2hhbmdlIHBvc3NpYmxlIFdpbmRvd3MgRU9MIChDUkxGKSB3aXRoIFVuaXggRU9M IChMRikKICAgICAgICAgICAgJF8gPX4gcy9cclxuJC9cbi87CgogICAgICAgICAgICBpZiAoIC9e RnJvbSAvCgkJJiYgJHByZXZpb3VzX2xpbmVfd2FzX2VtcHR5CgkJJiYgKCFkZWZpbmVkICRjb250 ZW50bGVuZ3RoKSAKCSAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICMgV2UgYXJlIHJlYWRpbmcgdGhlICJGcm9tICIgbGluZSB3aGljaCBoYXMgYW4KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICMgZW1haWwgYWRkcmVzcyBmb2xsb3dlZCBieSBhIHJl Y2VpdmUgZGF0ZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVHVybiBvbiB0aGUgJGlu aGVhZGVycyBmbGFnIHVudGlsIHdlIHJlYWNoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAj IHRoZSBlbmQgb2YgdGhlIGhlYWRlcnMuCgogICAgICAgICAgICAgICAgJGluaGVhZGVycyA9IDE7 CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyByZWNvcmQgdGhlIG1lc3NhZ2Ugc3RhcnQg bGluZQoKICAgICAgICAgICAgICAgICRzdGFydGxpbmUgPSAkLjsKCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAjIElmIHRoaXMgaXMgbm90IHRoZSBmaXJzdCBydW4gdGhyb3VnaCB0aGUgbG9v cAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB0aGVuIHRoaXMgbWVhbnMgd2UgaGF2ZSBh bHJlYWR5IGJlZW4gd29ya2luZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvbiBhIG1l c3NhZ2UuCgogICAgICAgICAgICAgICAgaWYgKCRtZXNzYWdlY291bnQgPiAwKQogICAgICAgICAg ICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBJZiBzbywgdGhlbiBjbG9zZSB0 aGF0IG1lc3NhZ2UgZmlsZSBhbmQgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB1 c2UgdXRpbWUgdG8gY2hhbmdlIGl0cyBkYXRlLXRpbWUuCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE5vdGUgdGhpcyBjb2RlIHNob3Vs ZCBiZSBkdXBsaWNhdGVkIHRvIGRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRoZSBz YW1lIHRoaW5nIGF0IHRoZSBlbmQgb2YgdGhlIHdoaWxlIGxvb3AKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICMgc2luY2Ugd2UgbXVzdCBjbG9zZSBhbmQgdG91Y2ggdGhlIGZpbmFsIG1lc3Nh Z2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZmlsZSB3ZSB3ZXJlIHdyaXRpbmcgd2hl biB3ZSBoaXQgdGhlIGVuZCBvZiB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgTWJv eCBmaWxlLgoKICAgICAgICAgICAgICAgICAgICBjbG9zZSAoT1VUKTsKCQkgICAgaWYgKCRtZXNz YWdlZm4gbmUgJycpIHsKCQkJbXkgJHQgPSBzdHIydGltZSgkcmVjZWl2ZWRhdGUpOwoJCQl1dGlt ZSAkdCwgJHQsICRtZXNzYWdlZm47CgkJICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAjIEJlY2F1c2Ugd2Ugb3BlbmVkIHRoZSBNYm94IGZpbGUgd2l0 aG91dCBhbnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdmFyaWFibGUsIEkgdGhpbmsg dGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgaXRzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAj IGN1cnJlbnQgbGluZSBpbiBQZXJsJ3MgZGVmYXVsdCB2YXJpYWJsZSAiJF8iLgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgIyBTbyBhbGwgc29ydHMgb2YgcGF0dGVybiBtYXRjaGluZyBtYWdp YyB3b3JrcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBkaXJlY3RseSBvbiBpdC4KCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAjIFdlIGFyZSBjdXJyZW50bHkgcmVhZGluZyB0aGUg Zmlyc3QgbGluZSBzdGFydGluZyB3aXRoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICJG cm9tICIgd2hpY2ggY29udGFpbnMgdGhlIGRhdGUgd2Ugd2FudC4KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVGhpcyB3aWxsIGJlIG9m IHRoZSBmb3JtOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgIyAgICAgRnJvbSBkZHVja0B0ZXN0Lm9yZyBXZWQgTm92IDI0IDExOjA1OjM1 IDE5OTkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICMgYXQgbGVhc3Qgd2l0aCBVVy1JTUFQLgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgIwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBIb3dldmVyLCBJIGRpZCBmaW5kIGEg bmFzdHkgZXhjZXB0aW9uIHRvIHRoaXMgaW4gbXkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICMgdGVzdHMsIG9mIHRoZSBmb3JtOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIyAgICJib3VuY2UtTXVzaWNOZXdzbGV0dGVyIDUtcnc9 dGVzdC5vcmciQGFubm91bmNlMi5tcDMuY29tCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAj CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFRoaXMgbWFrZXMgaXQgdHJpY2tpZXIgdG8g Z2V0IHJpZCBvZiB0aGUgZW1haWwgYWRkcmVzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICMgYnV0IEkgZGlkIGZpbmQgYSB3YXkuICBJIGNhbid0IHJ1bGUgb3V0IHRoYXQgdGhlcmUgd291 bGQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYmUgc29tZSBhZGRyZXNzIGxpa2UgdGhp cyB3aXRoIGFuICJAIiBpbiB0aGUgcXVvdGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAj IHBvcnRpb24gdG9vLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgIyBVbmZvcnR1bmF0ZWx5LCB0ZXN0aW5nIHdpdGggYW4gb2xkIEluYm94 IE1ib3ggZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSSBhbHNvIGZvdW5kIGFu IGluc3RhbmNlIHdoZXJlIHRoZSBlbWFpbCBhZGRyZXNzCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjIGhhZCBubyBAIHNpZ24gYXQgYWxsLiAgSXQgd2FzIGp1c3QgYW4gZW1haWwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICMgYWNjb3VudCBuYW1lLCB3aXRoIG5vIGhvc3QuCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEkg Y291bGQgc2VhcmNoIGZvciB0aGUgZGF5IG9mIHRoZSB3ZWVrLiAgSWYgSSBza2lwcGVkCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjIGF0IGxlYXN0IG9uZSB3b3JkIG9mIG5vbi13aGl0ZXNw YWNlICgxIG9yIG1vcmUgY29udGlndW91cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBu b24td2hpdGVzcGFjZSBjaGFyYWN0ZXJzKSB0aGVuIHNlYXJjaGVkIGZvciBhIGRheSBvZgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIyB0aGUgd2VlaywgdGhlbiBJIHNob3VsZCBiZSBhYmxl IHRvIGF2b2lkIGFsbW9zdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBldmVyeSBpbnN0 YW5jZSBvZiBhIGRheSBvZiB0aGUgd2VlayBhcHBlYXJpbmcgaW4KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICMgdGhlIGVtYWlsIGFkZHJlc3MuCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAjCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIERvIEkgbmVlZCBhIGZhaWxzYWZlIGFy cmFuZ2VtZW50IHRvIHByb3ZpZGUgc29tZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBv dGhlciBkYXRlIHRvIHRvdWNoIGlmIEkgZG9uJ3QgZ2V0IHdoYXQgc2VlbXMgbGlrZQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgIyBhIGRhdGUgaW4gbXkgcmVzdWx0aW5nIHN0cmluZz8gIEZv ciBub3csIG5vLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgIyBJIHdpbGwgdGFrZSBvbmUgYXBwcm9hY2ggaWYgdGhlcmUgaXMgYW4gQCBp biB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgIkZyb20gIiBsaW5lIGFuZCBhbm90 aGVyIChqdXN0IHNraXAgdGhlIGZpcnN0IHdvcmQKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICMgYWZ0ZXIgIkZyb20gIikgaWYgdGhlcmUgaXMgbm8gQCBpbiB0aGUgbGluZS4KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSWYgSSBr bmV3IG1vcmUgYWJvdXQgUGVybCBJIHdvdWxkIHByb2JhYmx5IGRvIGl0IGluCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjIGEgbW9yZSBlbGVnYW50IHdheS4KCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAjIENvcHkgdGhlIGN1cnJlbnQgbGluZSBpbnRvICRmcm9tbGluZS4KCiAgICAg ICAgICAgICAgICAkZnJvbWxpbmUgPSAkXzsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAj IE5vdyBnZXQgcmlkIG9mIHRoZSAiRnJvbSAiLiAiID1+IHMiIG1lYW5zIHN1YnN0aXR1dGUuCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAjIEZpbmQgdGhlIHdvcmQgIkZyb20gIiBhdCB0aGUg c3RhcnQgb2YgdGhlIGxpbmUgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHJlcGxh Y2UgaXQgd2l0aCBub3RoaW5nLiAgVGhlIG5vdGhpbmcgaXMgd2hhdCBpcwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgIyBiZXR3ZWVuIHRoZSBzZWNvbmQgYW5kIHRoaXJkIHNsYXNoLgoKICAg ICAgICAgICAgICAgICRmcm9tbGluZSA9fiBzL15Gcm9tIC8vIDsKCgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgIyBMaWtld2lzZSBnZXQgcmlkIG9mIHRoZSBlbWFpbCBhZGRyZXNzLgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGZpcnN0IHNlY3Rpb24gaXMgaWYgd2UgZGV0 ZXJtaW5lIHRoZXJlIGlzIG9uZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3IgbW9y ZSAuIC4gLiApICJAIiBjaGFyYWN0ZXJzIGluIHRoZSBsaW5lLCB3aGljaAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgIyB3b3VsZCBub3JtYWxseSBiZSB0aGUgY2FzZS4KCiAgICAgICAgICAg ICAgICBpZiAoJGZyb21saW5lID1+IG0vQC8pCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjIFRoZSBsaW5lIGhhcyBhdCBsZWFzdCBvbmUgIkAiIGluIGl0LCBz byB3ZSBhc3N1bWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdGhpcyBpcyBpbiB0aGUg bWlkZGxlIG9mIGFuIGVtYWlsIGFkZHJlc3MuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAj CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIElmIHRoZSBlbWFpbCBhZGRyZXNzIGhhZCBu byBzcGFjZXMsIHRoZW4gd2UgY291bGQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZ2V0 IHJpZCBvZiB0aGUgd2hvbGUgdGhpbmcgYnkgc2VhcmNoaW5nIGZvciBhbnkgbnVtYmVyCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjIG9mIG5vbi13aGl0ZXNwYWNlIGNoYXJhY3RlcnMgKFxT KSBjb250aWd1b3VzbHksIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB0aGVuIEkg dGhpbmsgYSBzcGFjZS4gIFN1YnNpdHV0ZSBub3RoaW5nIGZvciB0aGlzLgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAkZnJvbWxp bmUgPX4gcy8oXFMpKyAvLyAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjIEJ1dCB3ZSBuZWVkIHNvbWV0aGluZyB0byBtYXRjaCBh bnkgbnVtYmVyIG9mIG5vbi1ACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGNoYXJhY3Rl cnMsIHRoZW4gdGhlICJAIiBhbmQgdGhlbiBhbGwgdGhlIG5vbi13aGl0ZXNwYWNlCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAjIGNoYXJhY3RlcnMgZnJvbSB0aGVyZSAod2hpY2ggdGFrZXMg dXMgdG8gdGhlIGVuZCBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAidGVzdC5vcmci KSBhbmQgdGhlbiB0aGUgc3BhY2UgZm9sbG93aW5nIHRoYXQuCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEEgdHV0b3JpYWwgb24gcmVn dWxhciBleHByZXNzaW9ucyBpczoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICMgICAgaHR0cDovL3d3dy5wZXJsZG9jLmNvbS9wZXJsNS42 LjEvcG9kL3BlcmxyZXR1dC5odG1sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjIEdldCByaWQgb2YgYWxsIG5vbi1AIGNoYXJhY3RlcnMg dXAgdG8gdGhlIGZpcnN0ICJAIjoKCiAgICAgICAgICAgICAgICAgICAgJGZyb21saW5lID1+IHMv W15AXSsvLzsKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBHZXQgcmlkIG9mIHRoZSAi QCIuCgogICAgICAgICAgICAgICAgICAgICRmcm9tbGluZSA9fiBzL0AvLzsKICAgICAgICAgICAg ICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSWYgdGhlcmUgd2FzIGFuICJAIiBp biB0aGUgbGluZSwgdGhlbiB3ZSBoYXZlIG5vdwogICAgICAgICAgICAgICAgICAgICAgICAgICAg IyByZW1vdmVkIHRoZSBmaXJzdCBvbmUgKGxldHMgaG9wZSB0aGVyZSBhcmVuJ3QgbW9yZSEpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFuZCBldmVyeXRoaW5nIHdoaWNoIHByZWNlZGVk IGl0LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIwoJCQkgICAgIyB3ZSBub3cgcmVtb3Zl IGVpdGhlciBzb21ldGhpbmcgbGlrZQoJCQkgICAgIyAnKGZvbyBiYXIpJy4gZWcuICcobm8gbWFp bCBhZGRyZXNzKScsCgkJCSAgICAjIG9yIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlICdAJyB1cCB0byB0 aGUgdHJhaWxpbmcKCQkJICAgICMgdGltZXpvbmUKCQkJICAgICMKCQkJICAgICMgRklYTUU6IGFs bCB0aG9zZSByZWdleHAgc2hvdWxkIGJlIGNvbWJpbmVkIHRvIGp1c3Qgb25lIHNpbmdsZSBvbmUK CgkJJGZyb21saW5lID1+IHMvKFwoKFxTKnwgKStcKXxcUyspICovLzsKCgkJY2hvbXAgJGZyb21s aW5lOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgU3Rhc2ggdGhlIGRhdGUtdGltZSBm b3IgbGF0ZXIgdXNlLiAgV2Ugd2lsbCB1c2UgaXQKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICMgdG8gdG91Y2ggdGhlIGZpbGUgYWZ0ZXIgd2UgaGF2ZSBjbG9zZWQgaXQuCgogICAgICAgICAg ICAgICAgJHJlY2VpdmVkYXRlID0gJGZyb21saW5lOwoJCQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgIyBEZWJ1Z2dpbmcgbGluZXM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAjIHByaW50ICIkcmVjZWl2ZWRhdGUgaXMgdGhlIHJl Y2VpdmVkYXRlIG9mIG1lc3NhZ2UgJG1lc3NhZ2Vjb3VudC5cbiI7CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAjICRyZWNlaXZlZGF0ZSA9ICJXZWQgTm92IDI0IDExOjA1OjM1IDE5OTkiOwog ICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICAgICAgICAg IyBUbyBsb29rIGF0IHRoZSBleGFjdCBkYXRlLXRpbWUgb2YgZmlsZXM6CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgbHMgLWxGYSAt LWZ1bGwtdGltZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgIyBFbmQgb2YgaGFuZGxpbmcgdGhlICJGcm9tICIgbGluZS4KICAgICAgICAg ICAgfQoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE5vdyBwcm9jZXNzIGhlYWRlciBs aW5lcyB3aGljaCBhcmUgbm90IHRoZSAiRnJvbSAiIGxpbmUuCgogICAgICAgICAgICBpZiAoICAg ICgkaW5oZWFkZXJzIGVxIDEpCiAgICAgICAgICAgICAgICAgJiYgKCEgL15Gcm9tIC8pCiAgICAg ICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBO b3cgd2UgYXJlIHJlYWRpbmcgdGhlIGhlYWRlciBsaW5lcyBhZnRlciB0aGUgIkZyb20gIiBsaW5l LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBLZWVwIGxvb2tpbmcgZm9yIHRoZSBibGFu ayBsaW5lIHdoaWNoIGluZGljYXRlcyB0aGUgZW5kIG9mIHRoZQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgIyBoZWFkZXJzLgoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICIuPSIg bWVhbnMgYXBwZW5kIHRoZSBjdXJyZW50IGxpbmUgdG8gdGhlICRoZWFkZXJzCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjIHZhcmlhYmxlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAg IwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBGb3Igc29tZSByZWFzb24sIEkgd2FzIGdl dHRpbmcgdHdvIGJsYW5rIGxpbmVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGF0IHRo ZSBlbmQgb2YgdGhlIGhlYWRlcnMsIHJhdGhlciB0aGFuIG9uZSwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICMgc28gSSBkZWNpZGVkIG5vdCB0byByZWFkIGluIHRoZSBibGFuayBsaW5lCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAjIHdoaWNoIHRlcm1pbmF0ZXMgdGhlIGhlYWRlcnMu CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAjIERlbGV0ZSB0aGUgInVubGVzcyAoJF8gZXEgIlxuIikiIHRvIGdldCByaWQKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICMgb2YgdGhpcyBrbHVkZ2UuCgogICAgICAgICAgICAgICAgJGhl YWRlcnMgLj0gJF8gdW5sZXNzICgkXyBlcSAiXG4iKTsKCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjIE5vdyBzY2FuIHRoZSBsaW5lIGZvciB2YXJpb3VzIHN0YXR1cyBmbGFncwogICAgICAg ICAgICAgICAgICAgICAgICAgICAgIyBhbmQgdG8gZmluZSB0aGUgU3ViamVjdCBsaW5lLgoKICAg ICAgICAgICAgICAgICRmbGFncyAgLj0gJDEgaWYgL15TdGF0dXM6IChbQS1aXSspLzsKICAgICAg ICAgICAgICAgICRmbGFncyAgLj0gJDEgaWYgL15YLVN0YXR1czogKFtBLVpdKykvOwogICAgICAg ICAgICAgICAgaWYgKC9eWC1Nb3ppbGxhLVN0YXR1czogKFswLTlhLWZdezR9KS9pKQogICAgICAg ICAgICAgICAgewogICAgICAgICAgICAgICAgICAkZmxhZ3MgLj0gJ1InIGlmIChoZXgoJDEpICYg MHgwMDAxKTsKICAgICAgICAgICAgICAgICAgJGZsYWdzIC49ICdBJyBpZiAoaGV4KCQxKSAmIDB4 MDAwMik7CiAgICAgICAgICAgICAgICAgICRmbGFncyAuPSAnRCcgaWYgKGhleCgkMSkgJiAweDAw MDgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYoL15YXC1Fdm9sdXRpb246 XHMrXHd7OH1cLShcd3s0fSkvb2kpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg ICAgJGIgPSBwYWNrKCJINCIsICQxKTsgI3BhY2sgaXQgYXMgNCBkaWdpdCBoZXggKDB4MDAwMCkK ICAgICAgICAgICAgICAgICAgICAkYiA9IHVucGFjaygiQjMyIiwgJGIpOyAjdW5wYWNrIGludG8g Yml0IHN0cmluZwoKICAgICAgICAgICAgICAgICAgICAjICJ1c3VhbGx5IiBvbmx5IHRoZSByaWdo dCBtb3N0IHNpeCBiaXRzIGFyZSB1c2VkCiAgICAgICAgICAgICAgICAgICAgIyBob3dldmVyLCBJ IGhhdmUgY29tZSBhY3Jvc3MgYSBzZXZlbnRoIGJpdCBpbgogICAgICAgICAgICAgICAgICAgICMg YWJvdXQgMTUgKG91dCBvZiAxMCwwMDApIG1lc3NhZ2VzIHdpdGggdGhpcyBiaXQKICAgICAgICAg ICAgICAgICAgICAjIGFjdGl2YXRlZC4KICAgICAgICAgICAgICAgICAgICAjIEkgaGF2ZSBub3Qg Zm91bmQgYW55IGRvY3VtZW50YXRpb24gaW4gdGhlIHNvdXJjZS4KICAgICAgICAgICAgICAgICAg ICAjIElmIHlvdSBmaW5kIG91dCB3aGF0IGl0IGRvZXMsIHBsZWFzZSBsZXQgbWUga25vdy4KCiAg ICAgICAgICAgICAgICAgICAgIyBOb3RlczoKICAgICAgICAgICAgICAgICAgICAjICAgRXZvbHV0 aW9uIDEuNCBkb2VzIG1hcmsgZm9yd2FyZGVkIG1lc3NhZ2VzLgogICAgICAgICAgICAgICAgICAg ICMgICBUaGUgc2l4dGggYml0IGlzIHRvIGRlbm90ZSBhbiBhdHRhY2htZW50CgogICAgICAgICAg ICAgICAgICAgICRmbGFncyAuPSAnQScgaWYoJGIgPX4gL1swMV17MTV9MS8pOyAjcmVwbGllZAog ICAgICAgICAgICAgICAgICAgICRmbGFncyAuPSAnRCcgaWYoJGIgPX4gL1swMV17MTR9MVswMV17 MX0vKTsgI2RlbGV0ZWQKICAgICAgICAgICAgICAgICAgICAkZmxhZ3MgLj0gJ1QnIGlmKCRiID1+ IC9bMDFdezEzfTFbMDFdezJ9Lyk7ICNkcmFmdAogICAgICAgICAgICAgICAgICAgICRmbGFncyAu PSAnRicgaWYoJGIgPX4gL1swMV17MTJ9MVswMV17M30vKTsgI2ZsYWdnZWQKICAgICAgICAgICAg ICAgICAgICAkZmxhZ3MgLj0gJ1InIGlmKCRiID1+IC9bMDFdezExfTFbMDFdezR9Lyk7ICNzZWVu L3JlYWQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRzdWJqZWN0ID0gJDEgaWYg L15TdWJqZWN0OiAoLiopJC87CgkJaWYgKCR1c2VfY2wgZXEgMSkKCQl7CiAgICAgICAgICAgICAg ICAJJGNvbnRlbnRsZW5ndGggPSAkMSBpZiAvXkNvbnRlbnQtTGVuZ3RoOiAoXGQrKSQvOwoJCX0K CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE5vdyBsb29rIG91dCBmb3IgdGhlIGVuZCBv ZiB0aGUgaGVhZGVycyAtIGEgYmxhbmsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbGlu ZS4gIFdoZW4gd2UgZmluZCBpdCwgY3JlYXRlIHRoZSBmaWxlIG5hbWUgYW5kCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjIGFuYWx5c2UgdGhlIFN1YmplY3QgbGluZS4KCiAgICAgICAgICAg ICAgICBpZiAoJF8gZXEgIlxuIikKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICMgV2UgYXJlIGF0IHRoZSBlbmQgb2YgdGhlIGhlYWRlcnMuICBTZXQgdGhlCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAjICRpbmhlYWRlcnMgZmxhZyBiYWNrIHRvIDAuCgog ICAgICAgICAgICAgICAgICAgICRpbmhlYWRlcnMgPSAwOwoKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICMgSW5jbHVkZSB0aGUgY3VycmVudCBuZXdsaW5lIGluIHRoZSBjb250ZW50IGxlbmd0 aAoKICAgICAgICAgICAgICAgICAgICArKyRjb250ZW50bGVuZ3RoIGlmIGRlZmluZWQgJGNvbnRl bnRsZW5ndGg7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBDcmVhdGUgdGhlIGZpbGUg bmFtZSBmb3IgdGhlIGN1cnJlbnQgbWVzc2FnZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQSBzaW1wbGUgdmVyc2lvbiBvZiB0aGlz IHdvdWxkIGJlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgIyAgICRtZXNzYWdlZm4gPSAiY3VyLyR1bmlxdWUuJG1lc3NhZ2Vjb3VudC5t Ym94OjIsIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICMgVGhpcyB3b3VsZCBjcmVhdGUgbmFtZXMgd2l0aCAkbWVzc2FnZWNvdW50IHZh bHVlcyBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAxLCAyLCBldGMuICBCdXQgZm9y IG5lYXRuZXNzIHdoZW4gbG9va2luZyBhdCBhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAj IGRpcmVjdG9yeSBvZiBzdWNoIG1lc3NhZ2VzLCBzb3J0ZWQgYnkgZmlsZW5hbWUsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAjIEkgd2FudCB0byBoYXZlIGxlYWRpbmcgemVyb2VzIG9uIG1l c3NhZ2UgY291bnQsIHNvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRoYXQgdGhleSB3 b3VsZCBiZSAwMDAwMDEgZXRjLiAgVGhpcyBtYWtlcyB0aGVtCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAjIGFwcGVhciBpbiBtZXNzYWdlIG9yZGVyIHJhdGhlciB0aGFuIDEgYmVpbmcgYWZ0 ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgMTkgZXRjLiAgU28gdGhpcyBpcyBnb29k IGZvciB1cCB0byA5OTksOTk5IG1lc3NhZ2VzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAj IGluIGEgbWFpbGJveC4gIEl0IGlzIGEgY29zbWV0aWMgbWF0dGVyIGZvciBhIHBlcnNvbgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIyBsb29raW5nIGludG8gdGhlIE1haWxkaXIgZGlyZWN0 b3J5IG1hbnVhbGx5LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBUbyBkbyB0aGlzLCB1 c2Ugc3ByaW50ZiBpbnN0ZWFkIHdpdGggIiUwNmQiIGZvcgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgIyA2IGNoYXJhY3RlcnMgb2YgemVyby1wYWRkaW5nOgoKICAgICAgICAgICAgCQkkbWVz c2FnZWZuID0gc3ByaW50ZiAoImN1ci8lZC4lMDZkLm1ib3g6MiwiLCAkdW5pcXVlLCAkbWVzc2Fn ZWNvdW50KSA7CgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQXBwZW5kIGZsYWcgY2hh cmFjdGVycyB0byB0aGUgZW5kIG9mIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBm aWxlbmFtZSwgYWNjb3JkaW5nIHRvIGZsYWcgY2hhcmFjdGVycwogICAgICAgICAgICAgICAgICAg ICAgICAgICAgIyBjb2xsZWN0ZWQgZnJvbSB0aGUgbWVzc2FnZSBoZWFkZXJzCgogICAgICAgICAg ICAgICAgICAgICRtZXNzYWdlZm4gLj0gJ0YnIGlmICRmbGFncyA9fiAvRi87ICMgRmxhZ2dlZC4K ICAgICAgICAgICAgICAgICAgICAkbWVzc2FnZWZuIC49ICdSJyBpZiAkZmxhZ3MgPX4gL0EvOyAj IFJlcGxpZWQgdG8uCiAgICAgICAgICAgICAgICAgICAgJG1lc3NhZ2VmbiAuPSAnUycgaWYgJGZs YWdzID1+IC9SLzsgIyBTZWVuIG9yIFJlYWQuCiAgICAgICAgICAgICAgICAgICAgJG1lc3NhZ2Vm biAuPSAnVCcgaWYgJGZsYWdzID1+IC9ELzsgIyBUYWdnZWQgZm9yIGRlbGV0aW9uLgoKCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjIE9wZW5zIGZpbGVuYW1lICRtZXNzYWdlZm4gZm9yIG91 dHB1dCAoPikgd2l0aCBmaWxlaGFuZGxlIE9VVC4KCiAgICAgICAgICAgICAgICAgICAgb3BlbihP VVQsICI+JG1lc3NhZ2VmbiIpIG9yIGRpZSgiRmF0YWw6IHVuYWJsZSB0byBjcmVhdGUgbmV3IG1l c3NhZ2UgJG1lc3NhZ2VmbiIpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQ291bnQg dGhlIG1lc3NhZ2VzLgoKICAgICAgICAgICAgICAgICAgICAkbWVzc2FnZWNvdW50Kys7CgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIyBPbmx5IGZvciB0aGUgZmlyc3QgbWVzc2FnZSwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICMgY2hlY2sgdG8gc2VlIGlmIGl0IGlzIGEgZHVtbXku CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIERlbGV0ZSB0aGUgbWVzc2FnZSBmaWxlIHdl CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGp1c3QgY3JlYXRlZCBpZiBpdCB3YXMgZm9y IHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBkdW1teSBtZXNzYWdlIGF0IHRoZSBz dGFydAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvZiB0aGUgTWJveC4KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIHNl YXJjaCB0ZXJtcyBhcyByZXF1aXJlZC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVGhl IGxhc3QgMiBsaW5lcyBhcmUgZm9yIHJlbnQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAj CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICJtIiBtZWFucyBtYXRjaCB0aGUgcmVndWxh ciBleHByZXNzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBidXQgd2UgY2FuIGRv IHdpdGhvdXQgaXQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAjIERvIEkgbmVlZCB0byBlc2NhcGUgdGhlICcgaW4gIkRPTidUIj8KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICMgSSBkaWRuJ3QgaW4gdGhlIG9yaWdpbmFsIHZlcnNp b24uCgogICAgICAgICAgICAgICAgICAgIGlmICggICAoKCRtZXNzYWdlY291bnQgPT0gMSkgJiYg ZGVmaW5lZCgkc3ViamVjdCkpCiAgICAgICAgICAgICAgICAgICAgICAgICYmICgkc3ViamVjdCA9 fiBtL15ET04nVCBERUxFVEUgVEhJUyBNRVNTQUdFIC0tIEZPTERFUiBJTlRFUk5BTCBEQVRBLykK ICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAg ICAgICAgICAgICAgICAgICAgIyBTdGFzaCB0aGUgZmlsZSBuYW1lIG9mIHRoZSBkdW1teSBtZXNz YWdlIHNvIHdlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGNhbiBkZWxldGUgaXQgbGF0 ZXIuCgogICAgICAgICAgICAgICAgICAgICAgICAkZGVsZXRlZHVtbXkgPSAiJG1lc3NhZ2VmbiI7 CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgUHJp bnQgdGhlIGNvbGxlY3RlZCBoZWFkZXJzIHRvIHRoZSBtZXNzYWdlIGZpbGUuCgogICAgICAgICAg ICAgICAgICAgIHByaW50IE9VVCAiJGhlYWRlcnMiOwoKCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjIENsZWFyICRoZWFkZXJzIGFuZCAkZmxhZ3MgcmVhZHkgZm9yIHRoZSBuZXh0IG1lc3Nh Z2UuCgogICAgICAgICAgICAgICAgICAgICRoZWFkZXJzID0gJyc7CiAgICAgICAgICAgICAgICAg ICAgJGZsYWdzID0gJyc7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBFbmQgb2YgcHJv Y2Vzc2luZyB0aGUgaGVhZGVycyBvbmNlIHdlIGZvdW5kIHRoZQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgIyBibGFuayBsaW5lIHdoaWNoIHRlcm1pbmF0ZWQgdGhlbQogICAgICAgICAgICAg ICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgRW5kIG9mIGRlYWxpbmcgd2l0aCB0 aGUgaGVhZGVycy4KICAgICAgICAgICAgfQoKCiAgICAgICAgICAgIGlmICggJGluaGVhZGVycyBl cSAwKQogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBXZSBhcmUg bm93IHByb2Nlc3NpbmcgdGhlIG1lc3NhZ2UgYm9keS4KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgTm93IHdlIGhhdmUgcGFzc2VkIHRo ZSBoZWFkZXJzIHRvIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvdXRwdXQgZmls ZSwgd2Ugc2NhbiB1bnRpbCB0aGUgd2hpbGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMg bG9vcCBmaW5kcyBhbm90aGVyICJGcm9tICIgbGluZS4KCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjIERlY3JlbWVudCBvdXIgY29udGVudCBsZW5ndGggaWYgd2UncmUKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICMgdXNpbmcgaXQgdG8gZmluZCB0aGUgZW5kIG9mIHRoZSBtZXNzYWdl CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGJvZHkKCiAgICAgICAgICAgICAgICBpZiAo ZGVmaW5lZCAkY29udGVudGxlbmd0aCkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMg RGVjcmVtZW50IG91ciAkY29udGVudGxlbmd0aCB2YXJpYWJsZQoKICAgICAgICAgICAgICAgICAg ICAkY29udGVudGxlbmd0aCAtPSBsZW5ndGgoJF8pOwoKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICMgVGhlIHByb3BlciBlbmQgZm9yIGEgbWVzc2FnZSB3aXRoIENvbnRlbnQtTGVuZ3RoCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAjIHNwZWNpZmllZCBpcyB0aGUgJGNvbnRlbnRsZW5n dGggdmFyaWFibGUgc2hvdWxkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGJlIGV4YWN0 bHkgLTEgYW5kIHdlIHNob3VsZCBiZSBvbiBhIGJhcmUKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICMgbmV3bGluZS4gIE5vdGUgdGhhdCB0aGUgYmFyZSBuZXdsaW5lIGlzIG5vdAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgIyBwcmludGVkIHRvIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQg bWVzc2FnZSBhcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpdCdzIGFjdHVhbGx5IGEg bWVzc2FnZSBzZXBhcmF0b3IgaW4gdGhlIG1ib3gKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICMgZm9ybWF0IHJhdGhlciB0aGFuIHBhcnQgb2YgdGhlIG1lc3NhZ2UuICBUaGUKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICMgbmV4dCBsaW5lIF9zaG91bGRfIGJlIGEgRnJvbV8gbGluZSwg YnV0IGp1c3QgaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgY2FzZSB0aGUgQ29udGVu dC1MZW5ndGggaGVhZGVyIGlzIGluY29ycmVjdAogICAgICAgICAgICAgICAgICAgICAgICAgICAg IyAoZS5nLiBhIGNvcnJ1cHQgbWFpbGJveCksIHdlIGp1c3QgY29udGludWUKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICMgcHV0dGluZyBsaW5lcyBpbnRvIHRoZSBjdXJyZW50IG1lc3NhZ2Ug dW50aWwgd2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgc2VlIHRoZSBuZXh0IEZyb21f IGxpbmUuCgogICAgICAgICAgICAgICAgICAgIGlmICgkY29udGVudGxlbmd0aCA8IDApIHsKICAg ICAgICAgICAgICAgICAgICAgICAgaWYgKCRjb250ZW50bGVuZ3RoID09IC0xICYmICRfIGVxICJc biIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb250ZW50bGVuZ3RoID0gdW5kZWY7 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0OwoJCQl9CiAgICAgICAgICAgICAgICAg ICAgICAgICRjb250ZW50bGVuZ3RoID0gdW5kZWY7CiAgICAgICAgICAgICAgICAgICAgfQogICAg ICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICMgV2Ugd2FudCB0byBjb3B5IGV2ZXJ5IHBhcnQgb2YgdGhlIG1lc3Nh Z2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYm9keSB0byB0aGUgb3V0cHV0IGZpbGUs IGV4Y2VwdCBmb3IgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHF1b3RlZCAiPkZy b20gIiBsaW5lcywgd2hpY2ggd2FzIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB3 YXkgdGhlIElNQVAgc2VydmVyIGVuY29kZWQgYm9keSBsaW5lcwogICAgICAgICAgICAgICAgICAg ICAgICAgICAgIyBzdGFydGluZyB3aXRoICJGcm9tICIuCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFBhdHRlcm4gbWF0Y2hpbmcgUGVy bCBtYWppayB0bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBnZXQgcmlkIG9mIGFuIE1i b3ggcXVvdGVkIEZyb20uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjIFRoaXMgd29ya3Mgb24gdGhlIGRlZmF1bHQgdmFyaWFibGUgIiRf IiB3aGljaAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBjb250YWlucyB0aGUgdGV4dCBm cm9tIHRoZSBNYm94IG1haWxib3ggLSBJCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGd1 ZXNzIHRoaXMgaXMgdGhlIGNhc2UgYmVjYXVzZSBvZiBvdXIKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICMgKG9wZW4oTUJPWCAuLi4uKSBsaW5lIGFib3ZlLCB3aGljaCBkaWQgbm90CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjIGFzc2lnbiB0aGlzIHRvIGFueXRoaW5nIGVsc2UsIHNv IGl0IHdvdWxkIGdvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRvIHRoZSBkZWZhdWx0 IHZhcmlhYmxlLiAgVGhpcyBlbmFibGVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlu c2NydXRhYmx5IHRlcnNlIFBlcmxpc21zIHRvIGZvbGxvdy4KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgInMiIG1lYW5zICJTdWJzaXR1 dGUiIGFuZCBpdCBsb29rcyBmb3IgYW55CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9j Y3VycmVuY2Ugb2YgIj5Gcm9tIiBzdGFydGluZyBhdCB0aGUgc3RhcnQKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICMgb2YgdGhlIGxpbmUuICBXaGVuIGl0IGZpbmRzIHRoaXMsIGl0IHJlcGxh Y2VzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGl0IHdpdGggIkZyb20iLgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBTbyB0 aGlzIGZpbmRzIGFsbCBpbnN0YW5jZXMgaW4gdGhlIE1ib3ggbWVzc2FnZQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgIyB3aGVyZSB0aGUgb3JpZ2luYWwgbGluZSBzdGFydGVkIHdpdGggdGhl IHdvcmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgIkZyb20iIGJ1dCB3YXMgY29udmVy dGVkIHRvICI+RnJvbSIgaW4gb3JkZXIgdG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICMg bm90IGJlIG1pc3Rha2VuIGZvciB0aGUgIkZyb20gLi4uIiBsaW5lIHdoaWNoCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjIGlzIHVzZWQgdG8gZGVtYXJrIGVhY2ggbWVzc2FnZSBpbiB0aGUg TWJveC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVGhpcyB3YXMgd2FzIGEgZGVzdHJ1 Y3RpdmUgY29udmVyc2lvbiBiZWNhdXNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFu eSBtZXNzYWdlIHdoaWNoIG9yaWdpbmFsbHkgaGFkICI+RnJvbSIgYXQgdGhlCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjIHN0YXJ0IG9mIHRoZSBsaW5lLCBiZWZvcmUgYmVpbmcgcHV0IGlu dG8gdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE1ib3gsIHdpbGwgbm93IGhhdmUg dGhhdCBsaW5lIHdpdGhvdXQgdGhlICI+Ii4KCiAgICAgICAgICAgICAgICBzL14+RnJvbSAvRnJv bSAvOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgR2xvcmlvdXMgdGVyc25lc3MgaGVy ZS4gIFRoYW5rcyBTaW1vbiBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZXhwbGFp bmluZyB0aGlzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgIyAicHJpbnQgT1VUIiBtZWFucyBwcmludCB0aGUgZGVmYXVsdCB2YXJpYWJs ZSB0bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB0aGUgZmlsZSBvZiBmaWxlIGhhbmRs ZSBPVVQuICBUaGlzIGlzIHdoZXJlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRoZSBi dWxrIG9mIHRoZSBtZXNzYWdlIHRleHQgaXMgd3JpdHRlbiB0bwogICAgICAgICAgICAgICAgICAg ICAgICAgICAgIyB0aGUgb3V0cHV0IGZpbGUuCgogICAgICAgICAgICAgICAgcHJpbnQgT1VUIG9y IGRpZSgiRmF0YWw6IHVuYWJsZSB0byB3cml0ZSB0byBuZXcgbWVzc2FnZSB0byAkbWVzc2FnZWZu Iik7CgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgRW5kIG9mIHRoZSBpZiBzdGF0ZW1l bnQgZGVhbGluZyB3aXRoIG1lc3NhZ2UgYm9keS4KICAgICAgICAgICAgfQoKCSAgICAkcHJldmlv dXNfbGluZV93YXNfZW1wdHkgPSAoICRfIGVxICJcbiIgKTsKCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAjIEVuZCBvZiB3aGlsZSAoTUJPWCkgbG9vcC4KICAgICAgICB9CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjIENsb3NlIHRoZSBpbnB1dCBmaWxlLgoKICAgICAgICBjbG9zZShN Qk9YKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIENsb3NlIHRoZSBvdXRwdXQgZmls ZSwgYW5kIGR1cGxpY2F0ZSB0aGUgY29kZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBm cm9tIHRoZSBzdGFydCBvZiB0aGUgd2hpbGUgbG9vcCB3aGljaCB0b3VjaGVzCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjIHRoZSBkYXRlLXRpbWUgb2YgdGhlIG1vc3QgcmVjZW50IG1lc3Nh Z2UgZmlsZS4KCiAgICAgICAgY2xvc2UoT1VUKTsKICAgICAgICBpZiAoJG1lc3NhZ2VmbiBuZSAn JykgewoJICAgIG15ICR0ID0gc3RyMnRpbWUoJHJlY2VpdmVkYXRlKTsKCSAgICB1dGltZSAkdCwg JHQsICRtZXNzYWdlZm47Cgl9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZnRlciBh bGwgdGhlIG1lc3NhZ2VzIGhhdmUgYmVlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBj b252ZXJ0ZWQsIGNoZWNrIHRvIHNlZSBpZiB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICMgZmlyc3Qgb25lIHdhcyBhIGR1bW15LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBp ZiBzbywgZGVsZXRlIGl0IGFuZCBtYWtlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRo ZSBtZXNzYWdlIGNvdW50IG9uZSBsZXNzLgoKICAgICAgICBpZiAoJGRlbGV0ZWR1bW15IG5lICIi KQogICAgICAgIHsKICAgICAgICAgICAgcHJpbnRmKCJEdW1teSBtYWlsIHN5c3RlbSBmaXJzdCBt ZXNzYWdlIGRldGVjdGVkIGFuZCBub3Qgc2F2ZWQuXG4iKTsKICAgICAgICAgICAgdW5saW5rICRk ZWxldGVkdW1teTsKCiAgICAgICAgICAgICRtZXNzYWdlY291bnQtLTsKCiAgICAgICAgfQoKICAg ICAgICBwcmludGYoIiRtZXNzYWdlY291bnQgbWVzc2FnZXMuXG5cbiIpOwp9Cg== --=-=-=-- From unknown Wed Aug 20 05:15:37 2025 X-Loop: help-debbugs@gnu.org Subject: bug#31216: commit 217b8c2e0 produces 'Can't locate Date/Parse.pm in @INC Error' perl error Resent-From: Leo Famulari Original-Sender: "Debbugs-submit" Resent-CC: bug-guix@gnu.org Resent-Date: Thu, 19 Apr 2018 14:40:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 31216 X-GNU-PR-Package: guix X-GNU-PR-Keywords: To: George myglc2 Clemmer Cc: 31216@debbugs.gnu.org Received: via spool by 31216-submit@debbugs.gnu.org id=B31216.1524148755451 (code B ref 31216); Thu, 19 Apr 2018 14:40:01 +0000 Received: (at 31216) by debbugs.gnu.org; 19 Apr 2018 14:39:15 +0000 Received: from localhost ([127.0.0.1]:33036 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f9AiQ-00007D-PO for submit@debbugs.gnu.org; Thu, 19 Apr 2018 10:39:14 -0400 Received: from out3-smtp.messagingengine.com ([66.111.4.27]:45217) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f9AiO-000075-To for 31216@debbugs.gnu.org; Thu, 19 Apr 2018 10:39:13 -0400 Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.nyi.internal (Postfix) with ESMTP id 9CC7521453; Thu, 19 Apr 2018 10:39:12 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute4.internal (MEProxy); Thu, 19 Apr 2018 10:39:12 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=famulari.name; h=cc:content-type:date:from:in-reply-to:message-id:mime-version :references:subject:to:x-me-sender:x-me-sender:x-sasl-enc; s= mesmtp; bh=63Pzq6u0vxUskbgVEhtanBzEzmSbOna0wDr3KYV/kcI=; b=pIWau lhywtmZMcOiEmzpbBN/fkwLqJrlA4Qdbb1uxRsaRpNyXoir8tmDIPc6Qq+cpV/eP ipv9WJzEulIt+vl06tsarl1H/okeBaRCK/coqzBPaMEMnvVzMTCDMSUgVjGyZkCQ yMKC9+7a/TyfWmDVb3w5Lz2yG9E8A/2KQmIeO0= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-sender :x-me-sender:x-sasl-enc; s=fm2; bh=63Pzq6u0vxUskbgVEhtanBzEzmSbO na0wDr3KYV/kcI=; b=NGcXpM1k7TDfRX5B6dbINjgkAB6HpwmyCdE4IyUmD6ozL 0xiM3mfDvi80mkkliQP+tSoeKxO3TbLkUly+5BcXVozLgZyBX0qdX6vsuhPLpgwm O2l9NbGmk0EToo2VNsXBSqa+/pOjcfO7ZuRCwvsFMuj1t9hxHwdRQQxmwLRFUsOd 1V6wGp66ZeIir8X3f8H9MjvJEAlM014cwJOIcVjNnk46BRDXE7AWNP5tTD9JqrlY 4SYIz7gOYyr4muz31dNdMb/CxkWoSfeMycfzmmmtdqWX/qkfSp4ynopcTj6cFGPr dPzuEIdCw07ENU92nkfLB2MEN+inZqbGawTA9JhFA== X-ME-Sender: Received: from localhost (unknown [172.58.201.72]) by mail.messagingengine.com (Postfix) with ESMTPA id 51F61E442A; Thu, 19 Apr 2018 10:39:12 -0400 (EDT) Date: Thu, 19 Apr 2018 10:39:10 -0400 From: Leo Famulari Message-ID: <20180419143910.GB8699@jasmine.lan> References: <87r2nbubtr.fsf@gmail.com> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="qcHopEYAB45HaUaB" Content-Disposition: inline In-Reply-To: <87r2nbubtr.fsf@gmail.com> User-Agent: Mutt/1.9.5 (2018-04-13) X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) --qcHopEYAB45HaUaB Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Wed, Apr 18, 2018 at 11:14:40PM -0400, George myglc2 Clemmer wrote: > Commit ... >=20 > 217b8c2e0 * gnu: perl: Replace with 5.26.2 [fixes > CVE-2018-{6797,6798,6913}]. >=20 > ... caused the attached perl script that worked like this ... >=20 > g1@g1 ~/.mail-mirror$ guix environment --ad-hoc perl perl-timedate make w= get > g1@g1 ~/.mail-mirror [env]$ perl mb2md-3.20.pl > Usage: > mb2md -h > mb2md [-c] -m [-d destdir] > mb2md [-c] -s sourcefile [-d destdir] > mb2md [-c] -s sourcedir [-l wu-mailboxlist] [-R|-f somefolder] [-d= destdir] [-r strip_extension] > g1@g1 ~/.mail-mirror [env]$ >=20 >=20 > ... to stop working ... >=20 > g1@g1 ~/.mail-mirror$ guix environment --ad-hoc perl perl-timedate make = wget > g1@g1 ~/.mail-mirror [env]$ perl mb2md-3.20.pl > Can't locate Date/Parse.pm in @INC (you may need to install the Date::Par= se module) (@INC contains: /gnu/store/wpwb4ig3qhv3m7axjlid2c0f1jqzp09p-prof= ile/lib/perl5/site_perl/5.26.2/x86_64-linux-thread-multi /gnu/store/wpwb4ig= 3qhv3m7axjlid2c0f1jqzp09p-profile/lib/perl5/site_perl/5.26.2 /gnu/store/wpw= b4ig3qhv3m7axjlid2c0f1jqzp09p-profile/lib/perl5/site_perl /gnu/store/ynk3rg= 3i791i6k7rz2imbyj9wyfjrnrc-perl-5.26.2/lib/perl5/site_perl/5.26.2/x86_64-li= nux-thread-multi /gnu/store/ynk3rg3i791i6k7rz2imbyj9wyfjrnrc-perl-5.26.2/li= b/perl5/site_perl/5.26.2 /gnu/store/ynk3rg3i791i6k7rz2imbyj9wyfjrnrc-perl-5= =2E26.2/lib/perl5/5.26.2/x86_64-linux-thread-multi /gnu/store/ynk3rg3i791i6= k7rz2imbyj9wyfjrnrc-perl-5.26.2/lib/perl5/5.26.2) at mb2md-3.20.pl line 385. > BEGIN failed--compilation aborted at mb2md-3.20.pl line 385. > g1@g1 ~/.mail-mirror [env]$ >=20 > TIA - George I believe this is fixed by commit 44b98b00026e62766620dbc4330a305282d61069. Can you try again and let me know? --qcHopEYAB45HaUaB Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEsFFZSPHn08G5gDigJkb6MLrKfwgFAlrYqg4ACgkQJkb6MLrK fwgTfA//S83SncN7rm/apk4Bt/Br4StbTg7Xbts4DxTxsumR3iYLuyzo84ymvkPQ 3QCgEJfZTL8M78NGCPcLMG6THjeFLREElEzuOOwO+aCQJs0DBvpHY6olZAi3scSf lZKhTPLbWtfv0oW4EM/Yz0ekbcteaRQ7Tp4U/uXqnjLS5jRuFEKDXcv76jh50YDK df43gS1Fu2Kzl8n3GbZCZq7VQgmR8Kzfo3olqsXLvZbc9O/pz+4Gjc9YPd6bgaM0 JdP3XgohXiEnWGisicZz5Mc/1GYdMw3AYcpfUGZvEJALQoMO2yNgi7fe5z/MGwKH 1mVprxmazl1fx9uFJ+y135v99/jedhM3xFs/pmmOUcmSzorgkpdi9YWMyvGLGexh BksPvE30zjfW1Ivy+4PogB6u3UKLwx1ru4QO0zSvgJTNUr6qJUJ+R2bEKQtZg6Hc 5Z87M13UPwVkvQm4ZcmT/t20mAd8VXLHtHdAgn7pHeT/SRCn7mGDcs5gMCGrkotd 1srbJY98y/fnoRZGaneXsSPiYB3xfYIbBWVW2/N+pM1kkmA+WWVX/noFMiSpUPXT PehJwVaMIuHoyGe63Dl3BdDRTXFLN7IAYE3eH/d53aoJuVBpqZgtaaU6Y1W9lfE5 yEZMwgCrwic/K1iroQwwJouH3yz/Q/3Wwu5Chnx9yTh8ZocSBiI= =O0YB -----END PGP SIGNATURE----- --qcHopEYAB45HaUaB-- From unknown Wed Aug 20 05:15:37 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: George myglc2 Clemmer Subject: bug#31216: closed (Re: bug#31216: commit 217b8c2e0 produces 'Can't locate Date/Parse.pm in @INC Error' perl error) Message-ID: References: <87lgdj9o4l.fsf@fastmail.com> <87r2nbubtr.fsf@gmail.com> X-Gnu-PR-Message: they-closed 31216 X-Gnu-PR-Package: guix Reply-To: 31216@debbugs.gnu.org Date: Thu, 19 Apr 2018 16:07:02 +0000 Content-Type: multipart/mixed; boundary="----------=_1524154022-15988-1" This is a multi-part message in MIME format... ------------=_1524154022-15988-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #31216: commit 217b8c2e0 produces 'Can't locate Date/Parse.pm in @INC Error= ' perl error which was filed against the guix package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 31216@debbugs.gnu.org. --=20 31216: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D31216 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1524154022-15988-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 31216-done) by debbugs.gnu.org; 19 Apr 2018 16:06:55 +0000 Received: from localhost ([127.0.0.1]:33119 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f9C5H-00049Z-33 for submit@debbugs.gnu.org; Thu, 19 Apr 2018 12:06:55 -0400 Received: from out3-smtp.messagingengine.com ([66.111.4.27]:57679) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f9C5F-00049R-0y for 31216-done@debbugs.gnu.org; Thu, 19 Apr 2018 12:06:53 -0400 Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailout.nyi.internal (Postfix) with ESMTP id A5E3021DA1; Thu, 19 Apr 2018 12:06:52 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute5.internal (MEProxy); Thu, 19 Apr 2018 12:06:52 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastmail.com; h= content-type:date:from:in-reply-to:message-id:mime-version :references:subject:to:x-me-sender:x-me-sender:x-sasl-enc; s= fm2; bh=iWr1JJ3fwOc/eH9NliNkQsu/KiXuLjjVBJM8Yjp9HSs=; b=gousizHh faC+nCN2nXbsvjo3y5Eom1/lqWXdiqt4KPu+H1TRUkv82aPIqUOwLmeCkJuzoVT4 M6Cll2mkgAoM5UOy3EFlXg2cIXXk11zngSwe7b9J4RM1Mzarkwmm/5FvLQDbu2EV IWgdQrTZfWiFIYyTsfwZ2JalEf32soCjcAT9fakN2xTZ5dkq/72CmcUiINrvxA99 qP7J+L5ApHXZFLpSwT4KNMeMbcGYeNdU6sFTmRRu7M8IvD3E5279pwJr28Yf89jy JWWX5eniDufq8AmD3/d5YCPUHWZgfN++aAE2N5NiSrt482n3q6GCtt7FpXcYd9xd wyDis8md9SQxpw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-sender :x-me-sender:x-sasl-enc; s=fm2; bh=iWr1JJ3fwOc/eH9NliNkQsu/KiXuL jjVBJM8Yjp9HSs=; b=loMYxYBZxBodt181VliLSFisAGgGm8oGyhHT8rmIxTXNC ynWjXaWidl9N71LJTENqXOQZQQZ5oOrq751eknwYuHMCc4O/h2NKi+FJVEv/dI/K E4uCMVbxCNjdzCm+8mEaEYZL/8Zi4/KxUxYwnOOAwet0V49CDwbRv4pqPm82JkvK gmDzsoUHKlJQc8vJNANxXTCgDon+5lNdOFSusr5mBrANs4CreUeXvpEx+9G5b7dw 94DhPbTuBoOpJ1G8yyYAzoaZ2M8Lyb5gCA9mhttlENf3M8QbYlcdV22g7/ciDMsX KoZs6CTS7x37RZx6eir7FtK1pwiShH6CdewZf32+w== X-ME-Sender: Received: from localhost (228.92-221-162.customer.lyse.net [92.221.162.228]) by mail.messagingengine.com (Postfix) with ESMTPA id 33A1210265; Thu, 19 Apr 2018 12:06:52 -0400 (EDT) From: Marius Bakke To: George myglc2 Clemmer , 31216-done@debbugs.gnu.org Subject: Re: bug#31216: commit 217b8c2e0 produces 'Can't locate Date/Parse.pm in @INC Error' perl error In-Reply-To: <87r2nbubtr.fsf@gmail.com> References: <87r2nbubtr.fsf@gmail.com> User-Agent: Notmuch/0.26.1 (https://notmuchmail.org) Emacs/25.3.1 (x86_64-pc-linux-gnu) Date: Thu, 19 Apr 2018 18:06:50 +0200 Message-ID: <87lgdj9o4l.fsf@fastmail.com> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha512; protocol="application/pgp-signature" X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 31216-done X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) --=-=-= Content-Type: text/plain George myglc2 Clemmer writes: > Commit ... > > 217b8c2e0 * gnu: perl: Replace with 5.26.2 [fixes > CVE-2018-{6797,6798,6913}]. > > ... caused the attached perl script that worked like this ... > > g1@g1 ~/.mail-mirror$ guix environment --ad-hoc perl perl-timedate make wget > g1@g1 ~/.mail-mirror [env]$ perl mb2md-3.20.pl > Usage: > mb2md -h > mb2md [-c] -m [-d destdir] > mb2md [-c] -s sourcefile [-d destdir] > mb2md [-c] -s sourcedir [-l wu-mailboxlist] [-R|-f somefolder] [-d destdir] [-r strip_extension] > g1@g1 ~/.mail-mirror [env]$ > > > ... to stop working ... > > g1@g1 ~/.mail-mirror$ guix environment --ad-hoc perl perl-timedate make wget > g1@g1 ~/.mail-mirror [env]$ perl mb2md-3.20.pl > Can't locate Date/Parse.pm in @INC (you may need to install the Date::Parse module) (@INC contains: /gnu/store/wpwb4ig3qhv3m7axjlid2c0f1jqzp09p-profile/lib/perl5/site_perl/5.26.2/x86_64-linux-thread-multi /gnu/store/wpwb4ig3qhv3m7axjlid2c0f1jqzp09p-profile/lib/perl5/site_perl/5.26.2 /gnu/store/wpwb4ig3qhv3m7axjlid2c0f1jqzp09p-profile/lib/perl5/site_perl /gnu/store/ynk3rg3i791i6k7rz2imbyj9wyfjrnrc-perl-5.26.2/lib/perl5/site_perl/5.26.2/x86_64-linux-thread-multi /gnu/store/ynk3rg3i791i6k7rz2imbyj9wyfjrnrc-perl-5.26.2/lib/perl5/site_perl/5.26.2 /gnu/store/ynk3rg3i791i6k7rz2imbyj9wyfjrnrc-perl-5.26.2/lib/perl5/5.26.2/x86_64-linux-thread-multi /gnu/store/ynk3rg3i791i6k7rz2imbyj9wyfjrnrc-perl-5.26.2/lib/perl5/5.26.2) at mb2md-3.20.pl line 385. > BEGIN failed--compilation aborted at mb2md-3.20.pl line 385. > g1@g1 ~/.mail-mirror [env]$ Leo fixed this in 44b98b00026e62766620dbc4330a305282d61069. Sorry for the breakage! --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQEzBAEBCgAdFiEEu7At3yzq9qgNHeZDoqBt8qM6VPoFAlrYvpoACgkQoqBt8qM6 VPqrnAgAlOlEDp17BBp5ywWHXuFRmEplfQKahBjDuwZyodWSuzxRIuNMfVqxrKKp 5YTpqJAE4sW3zMVdGnmVwHR4Ad2aM2f9BY4BqzVmguFIYpN7/9JjPviMrthD0eAp zTcXQyvkRQnh2bzjqzPoY73FtZDlzA10WI0peJr5Df36Z+OaMz7fHVT1/YSxq63D a/fWilxWnQbkgUp6zOiBUFl+zvlI+UjO0OYg2pVTuDnkXjZIHNKXFOk5PdlGJ5N0 47AtT3CgF/8S0GhMHDKujxy+zIE4iQ+qBeHf0JFwnRmCUWm09yDo//46IGDs8P+T 0j9auKKqit5U008rhjWdujq20jk7qw== =XYLe -----END PGP SIGNATURE----- --=-=-=-- ------------=_1524154022-15988-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 19 Apr 2018 03:14:59 +0000 Received: from localhost ([127.0.0.1]:59957 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f902E-0001Qp-UE for submit@debbugs.gnu.org; Wed, 18 Apr 2018 23:14:59 -0400 Received: from eggs.gnu.org ([208.118.235.92]:37881) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f902C-0001Qa-HF for submit@debbugs.gnu.org; Wed, 18 Apr 2018 23:14:56 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1f9026-0006eH-Di for submit@debbugs.gnu.org; Wed, 18 Apr 2018 23:14:51 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-1.6 required=5.0 tests=BAYES_00, FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,T_DKIM_INVALID autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:37237) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1f9026-0006dq-48 for submit@debbugs.gnu.org; Wed, 18 Apr 2018 23:14:50 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57070) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1f9024-0007PY-Py for bug-guix@gnu.org; Wed, 18 Apr 2018 23:14:49 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1f9020-0006Xz-DR for bug-guix@gnu.org; Wed, 18 Apr 2018 23:14:47 -0400 Received: from mail-qk0-x22a.google.com ([2607:f8b0:400d:c09::22a]:35345) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1f901z-0006XS-Qd for bug-guix@gnu.org; Wed, 18 Apr 2018 23:14:44 -0400 Received: by mail-qk0-x22a.google.com with SMTP id c188so4074082qkg.2 for ; Wed, 18 Apr 2018 20:14:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=user-agent:from:to:subject:date:message-id:mime-version; bh=jzs28L19OC9ItlVFBPfuKTrWjIKY8iisxcUJqxxjV/4=; b=e4u7k4RMj0yoB4L0M1LKCyQeX++MztWyHtDsxsKhWzXBM1Hn7SQBbrbEHdhc9NvcxO lI0kH7YE449DXSK8FLba43de3KR48K36O3oLLtWOks4Z7WbpxSfRgWDJyH0nBQ30HKxH fOjl/j/nXnaDn1w1dkOKbkDt1S8QKYq4fxSJ9GceSgYnpKNANgokxme6i6rB03Pmp6pq cY8pcq15I+xyQt56ZPBuYDrnF9EuxDCnm+o8tn4LRMS2yfbpTgBoKIci/vAx5I+qoILT et20lMLAWnSTqrGKU9G8C+XByXRlr/VPqC+FqMq0awGagRqz2NO7LM4goWFRXOZsXENp r6fQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:user-agent:from:to:subject:date:message-id :mime-version; bh=jzs28L19OC9ItlVFBPfuKTrWjIKY8iisxcUJqxxjV/4=; b=IBofVdwQIJMe83XHoiml5JMPDfTF2dX2eD1GOD5mTUuWMcUCfLP4D0SiqCa4VKRGPh PJoV90aUagpixu5kh1gWO1Gz6u02SGAti4V1oVCaiRtoUS1kPSMwQAZr/2ayNClH8rYt baVUga5DN7jjaIga8Ys0tgIkaCDaRLCgkGLCXqNKIIt30q+vxbWJhPZ9cln3KtE8XAkb 3saHJ3m9YbTb8WV5eIKCBT1u3gLfHTR+Gcspv7NEPLwKoYiMKwpQAP488dRv3z2tRNpY WD8F8aC6ROcqZD+trzShhjz9lbEFqRQQ2CTiSEDgchQGQI8snx3P1KCbN7rpsux8f024 4WDQ== X-Gm-Message-State: ALQs6tC78vrPxyIZ28q83UWXTsL4DgDh5aH7xL9eqhUNROpsrZ/H2cOf ahkGkaseaZ11Oq4pUFMLCAqJsA== X-Google-Smtp-Source: AB8JxZq3UkLBLLPh+kaJdqF1p2azo50yo50K6+rF2bdLS4KxcKaWtlNMINyj8B4bNPKcH0iyHkf6rw== X-Received: by 10.55.31.129 with SMTP id n1mr4116309qkh.416.1524107683034; Wed, 18 Apr 2018 20:14:43 -0700 (PDT) Received: from g1 (c-73-167-118-254.hsd1.ma.comcast.net. [73.167.118.254]) by smtp.gmail.com with ESMTPSA id u63sm56408qkf.41.2018.04.18.20.14.41 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 18 Apr 2018 20:14:41 -0700 (PDT) User-agent: mu4e 1.0; emacs 25.3.1 From: George myglc2 Clemmer To: bug-guix@gnu.org Subject: commit 217b8c2e0 produces 'Can't locate Date/Parse.pm in @INC Error' perl error Date: Wed, 18 Apr 2018 23:14:40 -0400 Message-ID: <87r2nbubtr.fsf@gmail.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -3.8 (---) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -4.8 (----) --=-=-= Content-Type: text/plain Commit ... 217b8c2e0 * gnu: perl: Replace with 5.26.2 [fixes CVE-2018-{6797,6798,6913}]. ... caused the attached perl script that worked like this ... g1@g1 ~/.mail-mirror$ guix environment --ad-hoc perl perl-timedate make wget g1@g1 ~/.mail-mirror [env]$ perl mb2md-3.20.pl Usage: mb2md -h mb2md [-c] -m [-d destdir] mb2md [-c] -s sourcefile [-d destdir] mb2md [-c] -s sourcedir [-l wu-mailboxlist] [-R|-f somefolder] [-d destdir] [-r strip_extension] g1@g1 ~/.mail-mirror [env]$ ... to stop working ... g1@g1 ~/.mail-mirror$ guix environment --ad-hoc perl perl-timedate make wget g1@g1 ~/.mail-mirror [env]$ perl mb2md-3.20.pl Can't locate Date/Parse.pm in @INC (you may need to install the Date::Parse module) (@INC contains: /gnu/store/wpwb4ig3qhv3m7axjlid2c0f1jqzp09p-profile/lib/perl5/site_perl/5.26.2/x86_64-linux-thread-multi /gnu/store/wpwb4ig3qhv3m7axjlid2c0f1jqzp09p-profile/lib/perl5/site_perl/5.26.2 /gnu/store/wpwb4ig3qhv3m7axjlid2c0f1jqzp09p-profile/lib/perl5/site_perl /gnu/store/ynk3rg3i791i6k7rz2imbyj9wyfjrnrc-perl-5.26.2/lib/perl5/site_perl/5.26.2/x86_64-linux-thread-multi /gnu/store/ynk3rg3i791i6k7rz2imbyj9wyfjrnrc-perl-5.26.2/lib/perl5/site_perl/5.26.2 /gnu/store/ynk3rg3i791i6k7rz2imbyj9wyfjrnrc-perl-5.26.2/lib/perl5/5.26.2/x86_64-linux-thread-multi /gnu/store/ynk3rg3i791i6k7rz2imbyj9wyfjrnrc-perl-5.26.2/lib/perl5/5.26.2) at mb2md-3.20.pl line 385. BEGIN failed--compilation aborted at mb2md-3.20.pl line 385. g1@g1 ~/.mail-mirror [env]$ TIA - George --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=mb2md-3.20.pl Content-Transfer-Encoding: base64 IyEvdXNyL2Jpbi9wZXJsIC13CiMKIyAkSWQ6IG1iMm1kLnBsLHYgMS4yNiAyMDA0LzAzLzI4IDAw OjA5OjQ2IGp1cmkgRXhwICQKIwojIG1iMm1kLTMuMjAucGwgICAgICBDb252ZXJ0cyBNYm94IG1h aWxib3hlcyB0byBNYWlsZGlyIGZvcm1hdC4KIwojIFB1YmxpYyBkb21haW4uCiMKIyBjdXJyZW50 bHkgbWFpbnRhaW5lZCBieToKIyBKdXJpIEhhYmVybGFuZCA8anVyaUBrb3NjaGlrb2RlLmNvbT4K IyBpbml0aWFsbHkgd3JvdGUgYnk6CiMgUm9iaW4gV2hpdHRsZQojCiMgVGhpcyBzY3JpcHQncyB3 ZWIgYWJvZGUgaXMgaHR0cDovL2JhdGxldGguc2FwaWVudGktc2F0Lm9yZy9wcm9qZWN0cy9tYjJt ZC8gLgojIEZvciBhIGNoYW5nZWxvZyBzZWUgaHR0cDovL2JhdGxldGguc2FwaWVudGktc2F0Lm9y Zy9wcm9qZWN0cy9tYjJtZC9jaGFuZ2Vsb2cudHh0CiMKIyBUaGUgTWJveCAtPiBNYWlsZGlyIGlu bmVyIGxvb3AgaXMgYmFzZWQgb24gIHFtYWlsJ3Mgc2NyaXB0IG1ib3gybWFpbGRpciwgd2hpY2gK IyB3YXMga2x1ZGdlZCBieSBJdmFuIEtvaGxlciBpbiAxOTk3IGZyb20gY29udmVydGFuZGNyZWF0 ZSAocHVibGljIGRvbWFpbikKIyBieSBSdXNzZWwgTmVsc29uLiAgQm90aCB0aGVzZSBjb252ZXJ0 IGEgc2luZ2xlIG1haWxzcG9vbCBmaWxlLgojCiMgVGhlIHFtYWlsIGRpc3RyaWJ1dGlvbiBoYXMg YSBtYWlsZGlyMm1ib3guYyBwcm9ncmFtLgojCiMgV2hhdCBpcyBkb2VzOgojID09PT09PT09PT09 PT0KIwojIFJlYWRzIGEgZGlyZWN0b3J5IGZ1bGwgb2YgTWJveCBmb3JtYXQgbWFpbGJveGVzIGFu ZCBjcmVhdGVzIGEgc2V0IG9mCiMgTWFpbGRpciBmb3JtYXQgbWFpbGJveGVzLiAgU29tZSBkZXRh aWxzIG9mIHRoaXMgYXJlIHRvIHN1aXQgQ291cmllcgojIElNQVAncyBuYW1pbmcgY29udmVudGlv bnMgZm9yIE1haWxkaXIgbWFpbGJveGVzLgojCiMgICBodHRwOi8vd3d3LmludGVyNy5jb20vY291 cmllcmltYXAvCiMKIyBUaGlzIGlzIGludGVuZGVkIHRvIGF1dG9tYXRlIHRoZSBjb252ZXJzaW9u IG9mIHRoZSBvbGQKIyAvdmFyL3Nwb29sL21haWwvYmxhaCBmaWxlIC0gd2l0aCBvbmUgY2FsbCBv ZiB0aGlzIHNjcmlwdCAtIGFuZCB0bwojIGNvbnZlcnQgb25lIG9yIG1vcmUgbWFpbGJveGVzIGlu IGEgc3BlY2lmZWQgZGlyZWN0b3J5IHdpdGggc2VwYXJhdGUKIyBjYWxscyB3aXRoIG90aGVyIGNv bW1hbmQgbGluZSBhcmd1bWVudHMuCiMKIyBSdW4gdGhpcyBhcyB0aGUgdXNlciAtIGluIHRoZXNl IGV4YW1wbGVzICJibGFoIi4KCiMgVGhpcyB2ZXJzaW9uIHN1cHBvcnRzIGNvbnZlcnNpb24gb2Y6 CiMKIyAgICBEYXRlICAgIFRoZSBkYXRlLXRpbWUgaW4gdGhlICJGcm9tICIgbGluZSBvZiB0aGUg bWVzc2FnZSBpbiB0aGUKIyAgICAgICAgICAgIE1ib3ggZm9ybWF0IGlzIHRoZSBkYXRlIHdoZW4g dGhlIG1lc3NhZ2Ugd2FzICpyZWNlaXZlZCouCiMgICAgICAgICAgICBUaGlzIGlzIHRyYW5zZm9y bWVkIGludG8gdGhlIGRhdGUtdGltZSBvZiB0aGUgZmlsZSB3aGljaAojICAgICAgICAgICAgY29u dGFpbnMgdGhlIG1lc3NhZ2UgaW4gdGhlIE1haWxkaXIgbWFpbGJveC4KIwojICAgICAgICAgICAg VGhpcyByZWxpZXMgb24gdGhlIERhdGU6OlBhcnNlIHBlcmwgbW9kdWxlIGFuZCB0aGUgdXRpbWUK IyAgICAgICAgICAgIHBlcmwgZnVuY3Rpb24uCiMKIyAgICAgICAgICAgIFRoZSBzY3JpcHQgdHJp ZXMgdG8gY29wZSB3aXRoIGVycmFudCBmb3JtcyBvZiB0aGUKIyAgICAgICAgICAgIE1ib3ggIkZy b20gIiBsaW5lIHdoaWNoIGl0IG1heSBlbmNvdW50ZXIsIGJ1dCBpZgojICAgICAgICAgICAgdGhl cmUgaXMgc29tZXRoaW5nIHJlYWxseSBzY3Jld3kgaW4gYSBGcm9tIGxpbmUsCiMgICAgICAgICAg ICB0aGVuIHBlcmhhcHMgdGhlIHNjcmlwdCB3aWxsIGZhaWwgd2hlbiAidG91Y2giCiMgICAgICAg ICAgICBpcyBnaXZlbiBhbiBpbnZhbGlkIGRhdGUuICBQbGVhc2UgcmVwb3J0IHRoZQojICAgICAg ICAgICAgZXhhY3QgbmF0dXJlIG9mIGFueSBzdWNoICJGcm9tICIgbGluZSEKIwojCiMgICBGbGFn Z2VkCiMgICBSZXBsaWVkCiMgICBSZWFkID0gU2VlbgojICAgVGFnZ2VkIGZvciBEZWxldGlvbgoj CiMgICAgICAgICAgICBJbiB0aGUgTWJveCBtZXNzYWdlLCBmbGFncyBmb3IgdGhlc2UgYXJlIGZv dW5kIGluIHRoZQojICAgICAgICAgICAgIlN0YXR1czogTiIgb3IgIlgtU3RhdHVzOiBOIiBoZWFk ZXJzLCB3aGVyZSAiTiIgaXMgMAojICAgICAgICAgICAgb3IgbW9yZSBvZiB0aGUgZm9sbG93aW5n IGNoYXJhY3RlcnMgaW4gdGhlIGxlZnQgY29sdW1uLgojCiMgICAgICAgICAgICBUaGV5IGFyZSBj b252ZXJ0ZWQgdG8gY2hhcmFjdGVycyBpbiB0aGUgcmlnaHQgY29sdW1uLAojICAgICAgICAgICAg d2hpY2ggYmVjb21lIHRoZSBsYXN0IGNoYXJhY3RlcnMgb2YgdGhlIGZpbGUgbmFtZSwKIyAgICAg ICAgICAgIGZvbGxvd2luZyB0aGUgIjoyLCIgd2hpY2ggaW5kaWNhdGVzIElNQVAgbWVzc2FnZSBz dGF0dXMuCiMKIwojICAgICAgICAgICAgICAgIEYgLT4gRiAgICAgIEZsYWdnZWQKIyAgICAgICAg ICAgICAgICBBIC0+IFIgICAgICBSZXBsaWVkCiMgICAgICAgICAgICAgICAgUiAtPiBTICAgICAg UmVhZCA9IFNlZW4KIyAgICAgICAgICAgICAgICBEIC0+IFQgICAgICBUYWdnZWQgZm9yIERlbGV0 aW9uIChUcmFzaCkKIwojICAgICAgICAgICAgVGhpcyBpcyBiYXNlZCBvbiB0aGUgd29yayBvZiBQ aGlsaXAgTWFrIHdobyB3cm90ZSBhCiMgICAgICAgICAgICBjb21wbGV0ZWx5IHNlcGFyYXRlIE1i b3ggLT4gTWFpbGRpciBjb252ZXJ0ZXIgY2FsbGVkCiMgICAgICAgICAgICBwZXJmZWN0X21haWxk aXIgYW5kIHBvc3RlZCBpdCB0byB0aGUgTXV0dC11c2VycyBtYWlsaW5nCiMgICAgICAgICAgICBs aXN0IG9uIDI1IERlY2VtYmVyIDIwMDE6CiMKIyAgICAgICAgICAgICAgIGh0dHA6Ly93d3cubWFp bC1hcmNoaXZlLmNvbS9tdXR0LXVzZXJzQG11dHQub3JnL21zZzIxODcyLmh0bWwKIwojICAgICAg ICAgICAgTWljaGFlbCBCZXN0IG9yaWdpbmFsbHkgaW50ZWdyYXRlZCB0aG9zZSBjaGFuZ2VzIGlu dG8gbWIybWQuCiMKIwojICAgSW4gYWRkaXRpb24sIHRoZSBuYW1lcyBvZiB0aGUgbWVzc2FnZSBm aWxlcyBpbiB0aGUgTWFpbGRpciBhcmUgb2YgYQojICAgcmVndWxhciBsZW5ndGggYW5kIGFyZSBv ZiB0aGUgZm9ybToKIwojICAgICAgIDc2NTQzMjEuMDAwMTIzLm1ib3g6Mix4eHgKIwojICAgV2hl cmUgIjc2NTQzMjEiIGlzIHRoZSBVbml4IHRpbWUgaW4gc2Vjb25kcyB3aGVuIHRoZSBzY3JpcHQg d2FzCiMgICBydW4gYW5kICIwMDAxMjMiIGlzIHRoZSBzaXggemVyb2VzIHBhZGRlZCBtZXNzYWdl IG51bWJlciBhcwojICAgbWVzc2FnZXMgYXJlIGNvbnZlcnRlZCBmcm9tIHRoZSBNYm94IGZpbGUu ICAieHh4IiByZXByZXNlbnRzIHplcm8gb3IKIyAgIG1vcmUgb2YgdGhlIGFib3ZlIGZsYWdzIEYs IFIsIFMgb3IgVC4KIwojCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIwojIFVTQUdFCiMgPT09PT0KIwojIFJ1 biB0aGlzIGFzIHRoZSB1c2VyIG9mIHRoZSBtYWlsYm94ZXMsIG5vdCBhcyByb290LgojCiMKIyBt YjJtZCAtaAojIG1iMm1kIFstY10gLW0gWy1kIGRlc3RkaXJdCiMgbWIybWQgWy1jXSAtcyBzb3Vy Y2VmaWxlIFstZCBkZXN0ZGlyXQojIG1iMm1kIFstY10gLXMgc291cmNlZGlyIFstbCB3dS1tYWls Ym94bGlzdF0gWy1SfC1mIHNvbWVmb2xkZXJdIFstZCBkZXN0ZGlyXSBbLXIgc3RyaXBfZXh0ZW5z aW9uXQojCiMgIC1jICAgICAgICAgICAgdXNlIHRoZSBDb250ZW50LUxlbmd0aDogaGVhZGVycyAo aWYgcHJlc2VudCkgdG8gZmluZCB0aGUKIyAgICAgICAgICAgICAgICBiZWdpbm5pbmcgb2YgdGhl IG5leHQgbWVzc2FnZQojICAgICAgICAgICAgICAgIFVzZSB3aXRoIGNhdXRpb24hIFJlc3VsdHMg bWF5IGJlIHVucmVsaWFibGUuIEkgcmVjb21tZW5kIHRvIGRvCiMgICAgICAgICAgICAgICAgYSBy dW4gd2l0aG91dCAiLWMiIGZpcnN0IGFuZCBvbmx5IHVzZSBpdCBpZiB5b3UgYXJlIGNlcnRhaW4s CiMgICAgICAgICAgICAgICAgdGhhdCB0aGUgbWJveCBpbiBxdWVzdGlvbiByZWFsbHkgbmVlZHMg dGhlICItYyIgb3B0aW9uCiMKIyAgLW0gICAgICAgICAgICBJZiB0aGlzIGlzIHVzZWQgdGhlbiB0 aGUgc291cmNlIHdpbGwKIyAgICAgICAgICAgICAgICBiZSB0aGUgc2luZ2xlIG1haWxib3ggYXQg L3Zhci9zcG9vbC9tYWlsL2JsYWggZm9yCiMgICAgICAgICAgICAgICAgdXNlciBibGFoIGFuZCB0 aGUgZGVzdGluYXRpb24gbWFpbGJveCB3aWxsIGJlIHRoZQojICAgICAgICAgICAgICAgICJkZXN0 ZGlyIiBtYWlsYm94IGl0c2VsZi4KIwojCiMgIC1zIHNvdXJjZSAgICAgRGlyZWN0b3J5IG9yIGZp bGUgcmVsYXRpdmUgdG8gdGhlIHVzZXIncyBob21lIGRpcmVjdG9yeSwKIyAgICAgICAgICAgICAg ICB3aGljaCBpcyB3aGVyZSB0aGUgdGhlICJzb21lZm9sZGVycyIgZGlyZWN0b3JpZXMgYXJlIGxv Y2F0ZWQuCiMgICAgICAgICAgICAgICAgT3IgaWYgc3RhcnRpbmcgd2l0aCBhICIvIiBpdCBpcyB0 YWtlbiBhcyBhCiMgICAgICAgICAgICAgICAgYWJzb2x1dGUgcGF0aCwgZS5nLiAvbW50L29sZG1h aWwvdXNlcgojCiMgICAgICAgICAgICAgICAgb3IKIwojICAgICAgICAgICAgICAgIEEgc2luZ2xl IG1ib3ggZmlsZSB3aGljaCB3aWxsIGJlIGNvbnZlcnRlZCB0bwojICAgICAgICAgICAgICAgIHRo ZSBkZXN0ZGlyLgojCiMgIC1SCQkgSWYgZGVmaW5lZCwgZG8gbm90IHNraXAgZGlyZWN0b3JpZXMg Zm91bmQgaW4gYSBtYWlsYm94IAojCQkgZGlyZWN0b3J5LCBidXQgcnVucyByZWN1cnNpdmVseSBp bnRvIGVhY2ggb2YgdGhlbSwgCiMgCQkgY3JlYXRpbmcgYWxsIHdhbnRlZCBmb2xkZXJzIGluIE1h aWxkaXIuCiMJCSBJbmNvbXBhdGlibGUgd2l0aCAnLWYnCiMKIyAgLWYgc29tZWZvbGRlciBEaXJl Y3RvcmllcywgcmVsYXRpdmUgdG8gInNvdXJjZWRpciIgd2hlcmUgdGhlIE1ib3ggZmlsZXMKIyAg ICAgICAgICAgICAgICBhcmUuIEFsbCBtYWlsYm94ZXMgaW4gdGhlICJzb3VyY2VkaXIiCiMgICAg ICAgICAgICAgICAgZGlyZWN0b3J5IHdpbGwgYmUgY29udmVydGVkIGFuZCBwbGFjZWQgaW4gdGhl CiMgICAgICAgICAgICAgICAgImRlc3RkaXIiIGRpcmVjdG9yeS4gIChUeXBpY2FsbHkgdGhlIElu Ym94IGRpcmVjdG9yeQojICAgICAgICAgICAgICAgIHdoaWNoIGluIHRoaXMgaW5zdGFuY2UgaXMg YWxzbyBmdW5jdGlvbmluZyBhcyBhCiMgICAgICAgICAgICAgICAgZm9sZGVyIGZvciBvdGhlciBt YWlsYm94ZXMuKQojCiMgICAgICAgICAgICAgICAgVGhlICJzb21lZm9sZGVyIiBkaXJlY3RvcnkK IyAgICAgICAgICAgICAgICBuYW1lIHdpbGwgYmUgZW5jb2RlZCBpbnRvIHRoZSBuZXcgbWFpbGJv eGVzJyBuYW1lcy4KIyAgICAgICAgICAgICAgICBTZWUgdGhlIGV4YW1wbGVzIGJlbG93LgojCiMg ICAgICAgICAgICAgICAgVGhpcyBkb2VzIG5vdCBzYXZlIGFuIFVXIElNQVAgZHVtbXkgbWVzc2Fn ZSBmaWxlCiMgICAgICAgICAgICAgICAgYXQgdGhlIHN0YXJ0IG9mIHRoZSBNYm94IGZpbGUuICBT bWFsbCBjaGFuZ2VzCiMgICAgICAgICAgICAgICAgaW4gdGhlIGNvZGUgY291bGQgYWRhcHQgaXQg Zm9yIGxvb2tpbmcgZm9yCiMgICAgICAgICAgICAgICAgb3RoZXIgZGlzdGluY3RpdmUgcGF0dGVy bnMgb2YgZHVtbXkgbWVzc2FnZXMgdG9vLgojCiMgICAgICAgICAgICAgICAgRG9uJ3QgbGV0IHRo ZSBzb3VyY2UgZGlyZWN0b3J5IHlvdSBnaXZlIGFzICJzb21lZm9sZGVycyIKIyAgICAgICAgICAg ICAgICBjb250YWluIGFueSAiLiJzIGluIGl0cyBuYW1lLCB1bmxlc3MgeW91IHdhbnQgdG8KIyAg ICAgICAgICAgICAgICBjcmVhdGUgc3ViZm9sZGVycyBmcm9tIHRoZSBJTUFQIHVzZXIncyBwb2lu dCBvZgojICAgICAgICAgICAgICAgIHZpZXcuICBTZWUgdGhlIGV4YW1wbGUgYmVsb3cuCiMKIyAg ICAgICAgICAgICAgICBJbmNvbXBhdGlibGUgd2l0aCAnLWYnCiMKIwojICAtZCBkZXN0ZGlyICAg IERpcmVjdG9yeSB3aGVyZSB0aGUgTWFpbGRpciBmb3JtYXQgZGlyZWN0b3JpZXMgd2lsbCBiZSBj cmVhdGVkLgojICAgICAgICAgICAgICAgIElmIG5vdCBnaXZlbiwgdGhlbiB0aGUgZGVzdGluYXRp b24gd2lsbCBiZSB+L01haWxkaXIgLgojICAgICAgICAgICAgICAgIFR5cGljYWxseSwgdGhpcyBp cyB3aGF0IHRoZSBJTUFQIHNlcnZlciBzZWVzIGFzIHRoZQojICAgICAgICAgICAgICAgIEluYm94 IGFuZCB0aGUgZm9sZGVyIGZvciBhbGwgdXNlciBtYWlsYm94ZXMuCiMgICAgICAgICAgICAgICAg SWYgdGhpcyBiZWdpbnMgd2l0aCBhICcvJyB0aGUgcGF0aCBpcyBjb25zaWRlcmVkIHRvIGJlCiMg ICAgICAgICAgICAgICAgYWJzb2x1dGUsIG90aGVyd2lzZSBpdCBpcyByZWxhdGl2ZSB0byB0aGUg dXNlcnMKIyAgICAgICAgICAgICAgICBob21lIGRpcmVjdG9yeS4KIwojICAtciBzdHJpcF9leHQg IElmIGRlZmluZWQgdGhpcyBleHRlbnNpb24gd2lsbCBiZSBzdHJpcHBlZCBmcm9tCiMgICAgICAg ICAgICAgICAgdGhlIG9yaWdpbmFsIG1haWxib3ggZmlsZSBuYW1lIGJlZm9yZSBjcmVhdGluZwoj ICAgICAgICAgICAgICAgIHRoZSBjb3JyZXNwb25kaW5nIG1haWxkaXIuIFRoZSBleHRlbnNpb24g bXVzdCBiZQojICAgICAgICAgICAgICAgIGdpdmVuIHdpdGhvdXQgdGhlIGxlYWRpbmcgZG90ICgi LiIpLiBTZWUgdGhlIGV4YW1wbGUgYmVsb3cuCiMKIyAgLWwgV1UtZmlsZSAgICBGaWxlIGNvbnRh aW5pbmcgdGhlIGxpc3Qgb2Ygc3Vic2NyaWJlZCBmb2xkZXJzLiAgSWYKIyAgICAgICAgICAgICAg ICBtaWdyYXRpbmcgZnJvbSBXVS1JTUFQIHRoZSBsaXN0IG9mIHN1YnNjcmliZWQgZm9sZGVycyB3 aWxsCiMgICAgICAgICAgICAgICAgYmUgZm91bmQgaW4gdGhlIGZpbGUgY2FsbGVkIC5tYWlsYm94 bGlzdCBpbiB0aGUgdXNlcnMKIyAgICAgICAgICAgICAgICBob21lIGRpcmVjdG9yeS4gIFRoaXMg d2lsbCBjb252ZXJ0IGFsbCBzdWJzY3JpYmVkIGZvbGRlcnMKIyAgICAgICAgICAgICAgICBmb3Ig YSBzaW5nbGUgdXNlcjoKIyAgICAgICAgICAgICAgICAvYmluL21iMm1kIC1zIG1haWwgLWwgLm1h aWxib3hsaXN0IC1SIC1kIE1haWxkaXIKIyAgICAgICAgICAgICAgICBhbmQgZm9yIGFsbCB1c2Vy cyBpbiBhIGRpcmVjdG9yeSBhcyByb290IHlvdSBjYW4gZG8gdGhlCiMgICAgICAgICAgICAgICAg Zm9sbG93aW5nOgojICAgICAgICAgICAgICAgIGZvciBpIGluICo7IGRvIGVjaG8gJGk7c3UgLSAk aSAtYyAiL2Jpbi9tYjJtZCAtcyBtYWlsIC1sIC5tYWlsYm94bGlzdCAtUiAtZCBNYWlsZGlyIjtk b25lCiMKIwojICBFeGFtcGxlCiMgID09PT09PT0KIwojIFdlIGhhdmUgYSBidW5jaCBvZiBkaXJl Y3RvcmllcyBvZiBNYm94IG1haWxib3hlcyBsb2NhdGVkIGF0CiMgL2hvbWUvYmxhaC9vbGRtYWls LwojCiMgICAgIC9ob21lL2JsYWgvb2xkbWFpbC9mZmZmZgojICAgICAvaG9tZS9ibGFoL29sZG1h aWwvZ2dnZ2cKIyAgICAgL2hvbWUvYmxhaC9vbGRtYWlsL3h4eC9hYWFhCiMgICAgIC9ob21lL2Js YWgvb2xkbWFpbC94eHgvYmJiYgojICAgICAvaG9tZS9ibGFoL29sZG1haWwveHh4L2NjY2MKIyAg ICAgL2hvbWUvYmxhaC9vbGRtYWlsL3h4eC9kZGRkCiMgICAgIC9ob21lL2JsYWgvb2xkbWFpbC95 eXl5L2h1ZXkKIyAgICAgL2hvbWUvYmxhaC9vbGRtYWlsL3l5eXkvZHVleQojICAgICAvaG9tZS9i bGFoL29sZG1haWwveXl5eS9sb3VpZQojCiMgV2l0aCB0aGUgVVcgSU1BUCBzZXJ2ZXIsIGZmZmZm IGFuZCBnZ2dnZyB3b3VsZCBoYXZlIGFwcGVhcmVkIGluIHRoZSByb290CiMgb2YgdGhpcyBtYWls IHNlcnZlciwgYWxvbmcgd2l0aCB0aGUgSW5ib3guICBhYWFhLCBiYmJiIGV0Yywgd291bGQgaGF2 ZQojIGFwcGVhcmVkIGluIGEgZm9sZGVyIGNhbGxlZCB4eHggZnJvbSB0aGF0IHJvb3QsIGFuZCB4 eHggd2FzIGp1c3QgYSBmb2xkZXIKIyBub3QgYSBtYWlsYm94IGZvciBzdG9yaW5nIG1lc3NhZ2Vz LgojCiMgV2UgYWxzbyBoYXZlIHRoZSBtYWlsc3Bvb2wgSW5ib3ggYXQ6CiMKIyAgICAgL3Zhci9z cG9vbC9tYWlsL2JsYWgKIwojCiMgVG8gY29udmVydCB0aGVzZSwgYXMgdXNlciBibGFoLCB3ZSBn aXZlIHRoZSBmaXJzdCBjb21tYW5kOgojCiMgICAgbWIybWQgLW0KIwojIFRoZSBtYWluIE1haWxk aXIgZGlyZWN0b3J5IHdpbGwgYmUgY3JlYXRlZCBpZiBpdCBkb2VzIG5vdCBleGlzdC4KIyAoVGhp cyBpcyB0cnVlIG9mIGFueSBhcmd1bWVudCBvcHRpb25zLCBub3QganVzdCAiLW0iLikKIwojICAg IC9ob21lL2JsYWgvTWFpbGRpci8KIwojIEl0IGhhcyB0aGUgZm9sbG93aW5nIHN1YmRpcmVjdG9y aWVzOgojCiMgICAgL2hvbWUvYmxhaC9NYWlsZGlyL3RtcC8KIyAgICAvaG9tZS9ibGFoL01haWxk aXIvbmV3LwojICAgIC9ob21lL2JsYWgvTWFpbGRpci9jdXIvCiMKIyBUaGVuIC92YXIvc3Bvb2wv YmxhaCBmaWxlIGlzIHJlYWQsIHNwbGl0IGludG8gaW5kaXZpZHVhbCBmaWxlcyBhbmQKIyB3cml0 dGVuIGludG8gL2hvbWUvYmxhaC9NYWlsZGlyL2N1ci8gLgojCiMgTm93IHdlIGdpdmUgdGhlIHNl Y29uZCBjb21tYW5kOgojCiMgICAgbWIybWQgIC1zIG9sZG1haWwgLVIKIwojIFRoaXMgcmVhZHMg cmVjdXJzaXZlbHkgYWxsIE1ib3ggbWFpbGJveGVzIGFuZCBjcmVhdGVzOgojCiMgICAgL2hvbWUv YmxhaC9NYWlsZGlyLy5mZmZmZi8KIyAgICAvaG9tZS9ibGFoL01haWxkaXIvLmdnZ2dnLwojICAg IC9ob21lL2JsYWgvTWFpbGRpci8ueHh4LwojICAgIC9ob21lL2JsYWgvTWFpbGRpci8ueHh4LmFh YWEvCiMgICAgL2hvbWUvYmxhaC9NYWlsZGlyLy54eHguYmJiYi8KIyAgICAvaG9tZS9ibGFoL01h aWxkaXIvLnh4eC5jY2NjLwojICAgIC9ob21lL2JsYWgvTWFpbGRpci8ueHh4LmFhYWEvCiMgICAg L2hvbWUvYmxhaC9NYWlsZGlyLy55eXl5LwojICAgIC9ob21lL2JsYWgvTWFpbGRpci8ueXl5eS5o dWV5LwojICAgIC9ob21lL2JsYWgvTWFpbGRpci8ueXl5eS5kdWV5LwojICAgIC9ob21lL2JsYWgv TWFpbGRpci8ueXl5eS5sb3VpZS8KIwojICBUaGUgcmVzdWx0LCBmcm9tIHRoZSBJTUFQIGNsaWVu dCdzIHBvaW50IG9mIHZpZXcgaXM6CiMKIyAgICBJbmJveCAtLS0tLS0tLS0tLS0tLS0tLQojICAg ICAgICB8CiMgICAgICAgIHwgZmZmZmYgLS0tLS0tLS0tLS0KIyAgICAgICAgfCBnZ2dnZyAtLS0t LS0tLS0tLQojICAgICAgICB8CiMgICAgICAgIC0geHh4IC0tLS0tLS0tLS0tLS0KIyAgICAgICAg fCAgIHwgYWFhYSAtLS0tLS0tLQojICAgICAgICB8ICAgfCBiYmJiIC0tLS0tLS0tCiMgICAgICAg IHwgICB8IGNjY2MgLS0tLS0tLS0KIyAgICAgICAgfCAgIHwgZGRkZCAtLS0tLS0tLQojICAgICAg ICB8CiMgICAgICAgIC0geXl5eSAtLS0tLS0tLS0tLS0KIyAgICAgICAgICAgICB8IGh1ZXkgLS0t LS0tLQojICAgICAgICAgICAgIHwgZHVleSAtLS0tLS0tCiMgICAgICAgICAgICAgfCBsb3VpZSAt LS0tLS0KIwojIE5vdGUgdGhhdCBhbHRob3VnaCB+L01haWxkaXIvLnh4eC8gYW5kIH4vTWFpbGRp ci8ueXl5eSBtYXkgYXBwZWFyCiMgYXMgZm9sZGVycyB0byB0aGUgSU1BUCBjbGllbnQgdGhlIGFi b3ZlIGNvbW1hbmRzIHRvIG5vdCBnZW5lcmF0ZQojIGFueSBNYWlsZGlyIGZvbGRlcnMgb2YgdGhl c2UgbmFtZXMuICBUaGVzZSBhcmUgc2ltcGx5IGVsZW1lbnRzCiMgb2YgdGhlIG5hbWVzIG9mIG90 aGVyIE1haWxkaXIgZGlyZWN0b3JpZXMuIChpZiB5b3UgdXNlZCAnLVInLCB0aGV5IAojIHdoaWxs IGJlIGFibGUgdG8gYWN0IGFzIG5vcm1hbCBmb2xkZXJzLCBjb250YWluaW5nIG1lc3NhZ2VzIEFO RCBmb2xkZXJzKQojCiMgV2l0aCBhIHNlcGFyYXRlIHJ1biBvZiB0aGlzIHNjcmlwdCwgdXNpbmcg anVzdCB0aGUgIi1zIiBvcHRpb24KIyB3aXRob3V0ICItZiIgbm9yICItUiIsIGl0IHdvdWxkIGJl IHBvc3NpYmxlIHRvIGNyZWF0ZSBtYWlsYm94ZXMgd2hpY2gKIyBhcHBlYXIgYXQgdGhlIHNhbWUg bG9jYXRpb24gYXMgZmFyIGFzIHRoZSBJTUFQIGNsaWVudCBpcwojIGNvbmNlcm5lZC4gIEJ5IGhh dmluZyBNYm94IG1haWxib3hlcyBpbiBzb21lIGRpcmVjdG9yeToKIyB+L29sZG1haWwvbm5uLyBv ZiB0aGUgZm9ybToKIwojICAgICAvaG9tZS9ibGFoL29sZG1haWwvbm4veHh4eAojICAgICAvaG9t ZS9ibGFoL29sZG1haWwvbm4veXl5eXkKIwojIHRoZW4gdGhlIGNvbW1hbmQ6CiMKIyAgIG1iMm1k IC1zIG9sZG1haWwvbm4KIwojIHdpbGwgY3JlYXRlIHR3byBuZXcgTWFpbGRpcnM6CiMKIyAgICAv aG9tZS9ibGFoL01haWxkaXIvLnh4eC8KIyAgICAvaG9tZS9ibGFoL01haWxkaXIvLnl5eXkvCiMK IyBUaGVuIHdoYXQgdXNlZCB0byBiZSB0aGUgeHh4IGFuZCB5eXl5IGZvbGRlcnMgbm93IGZ1bmN0 aW9uIGFzCiMgbWFpbGJveGVzIHRvby4gIE5ldHNjYXBlIDQuNzcgbmVlZGVkIHRvIGJlIHB1dCB0 byBzbGVlcCBhbmQgZ2l2ZW4gRUNUCiMgdG8gcmVjb2duaXNlIHRoaXMgLSBkZWxldGluZyB0aGUg Y29udGVudHMgb2YgKFdpbjJrIGV4YW1wbGUpOgojCiMgICAgQzpcUHJvZ3JhbSBGaWxlc1xOZXRz Y2FwZVxVc2Vyc1x1dVxJbWFwTWFpbFxhYWEuYmJiLmNjY1wKIwojIHdoZXJlICJ1dSIgaXMgdGhl IHVzZXIgYW5kICJhYWEuYmJiLmNjYyIgaXMgdGhlIElNQVAgc2VydmVyCiMKIyBJIG9mdGVuIGZp bmQgdGhhdCBkZWxldGluZyBhbGwgdGhpcyBkaXJlY3RvcnkncyBjb250ZW50cywgZXhjZXB0CiMg InJ1bGVzLmRhdCIsIGZvcmNlcyBOZXRzY2FwZSBiYWNrIHRvIHJlYWxpdHkgYWZ0ZXIgaXRzIElN QVAgaW5uYXJkcwojIGhhdmUgYmVjb21lIHR3aXN0ZWQuICBUaGVuIG1heWJlIHVzZSBGaWxlID4g U3Vic2NyaWJlIC0gYnV0IHRoaXMKIyBzZWVtcyBpbmNhcGFibGUgb2Ygc3Vic2NyaWJpbmcgdG8g Zm9sZGVycy4KIwojIEZvciBPdXRsb29rIEV4cHJlc3MsIHNlbGVjdCB0aGUgbWFpbCBzZXJ2ZXIs IHRoZW4gY2xpY2sgdGhlCiMgIklNQVAgRm9sZGVycyIgYnV0dG9uIGFuZCB1c2UgIlJlc2V0IGxp c3QiLiAgSW4gdGhlICJBbGwiCiMgd2luZG93LCBzZWxlY3QgdGhlIG1haWxib3hlcyB5b3Ugd2Fu dCB0byBzZWUgaW4gbm9ybWFsCiMgdXNhZ2UuCiMKIwojIFRoaXMgc2NyaXB0IGRpZCBub3QgcmVj dXJzZSBzdWJkaXJlY3RvcmllcyBvciBkZWxldGUgb2xkIG1haWxib3hlcywgYmVmb3JlIGFkZGl0 aW9uIG9mIHRoZSAnLVInIHBhcmFtZXRlciA6KQojCiMgQmUgc3VyZSBub3QgdG8gYmUgYWNjZXNz aW5nIHRoZSBNYm94IG1haWxib3hlcyB3aGlsZSBydW5uaW5nIHRoaXMKIyBzY3JpcHQuICBJdCBk b2VzIG5vdCBhdHRlbXB0IHRvIGxvY2sgdGhlbS4gIExpa2V3aXNlLCBkb24ndCBydW4gdHdvCiMg Y29waWVzIG9mIHRoaXMgc2NyaXB0IGVpdGhlci4KIwojCiMgVHJpY2tpZXIgdXNhZ2UgLiAuIC4K IyA9PT09PT09PT09PT09PT09PT09PQojCiMgSWYgeW91IGhhdmUgYSBidW5jaCBvZiBtYWlsYm94 ZXMgaW4gYSBkaXJlY3Rvcnkgfi9vbGRtYWlsL2Rvb3JzLwojIGFuZCB5b3Ugd2FudCB0aGVtIHRv IGFwcGVhciBpbiBmb2xkZXJzIHN1Y2ggYXM6CiMKIyB+L01haWxkaXIvLm11c2ljLmJhbmRzLmRv b3JzLkppbQojIH4vTWFpbGRpci8ubXVzaWMuYmFuZHMuZG9vcnMuSm9obgojCiMgZXRjLiBzbyB0 aGV5IGFwcGVhciBpbiBhbiBJTUFQIGZvbGRlcjoKIwojICAgIEluYm94IC0tLS0tLS0tLS0tLS0t LS0tCiMgICAgICAgIHwgbXVzaWMKIyAgICAgICAgICAgICAgfCBiYW5kcwojICAgICAgICAgICAg ICAgICAgICB8IGRvb3JzCiMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgSmltCiMgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgSm9obgojICAgICAgICAgICAgICAgICAgICAgICAgICB8IFJv YmJpZQojICAgICAgICAgICAgICAgICAgICAgICAgICB8IFJheQojCiMgVGhlbiB5b3UgY291bGQg cmVuYW1lIHRoZSBzb3VyY2UgZGlyZWN0b3J5IHRvOgojCiMgIH4vb2xkbWFpbC9tdXNpYy5iYW5k cy5kb29ycy8KIwojIHRoZW4gdXNlOgojCiMgICBtYjJtZCAtcyBvbGRtYWlsIC1mIG11c2ljLmJh bmRzLmRvb3JzCiMKIwojIE9yIHNpbXBseSB1c2UgJy1SJyBzd2l0Y2ggd2l0aDoKIyAgIG1iMm1k IC1zIG9sZG1haWwgLVIKIwojCiMgU3RyaXBwaW5nIG1haWxib3ggZXh0ZW5zaW9uczoKIyA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PSAKIwojIElmIHlvdSB3YW50IHRvIGNvbnZlcnQgbWFp bGJveGVzIHRoYXQgY2FtZSBmb3IgZXhhbXBsZSBmcm9tCiMgYSBXaW5kb3dzIGJveCB0aGFuIHlv dSBtaWdodCB3YW50IHRvIHN0cmlwIHRoZSBleHRlbnNpb24gb2YKIyB0aGUgbWFpbGJveCBuYW1l IHNvIHRoYXQgaXQgd29uJ3QgY3JlYXRlIGEgc3ViZm9sZGVyIGluIHlvdXIKIyBtYWlsIGNsaWVu dHMgdmlldy4KIwojIEV4YW1wbGU6CiMgWW91IGhhdmUgc2V2ZXJhbCBtYWlsYm94ZXMgbmFtZWQg VHJhc2gubWJ4LCBTZW50Lm1ieCwgRHJhZnRzLm1ieAojIElmIHlvdSBkb24ndCBzdHJpcCB0aGUg ZXh0ZW5zaW9uICJtYngiIHlvdSB3aWxsIGdldCB0aGUgZm9sbG93aW5nCiMgaGllcmFyY2h5Ogoj CiMgSW5ib3gKIyAgICAgIHwKIyAgICAgICAtIFRyYXNoIAojICAgICAgfCAgICAgICB8IG1ieAoj ICAgICAgfAojICAgICAgIC0gU2VudCAKIyAgICAgIHwgICAgICAgfCBtYngKIyAgICAgIHwKIyAg ICAgICAtIERyYWZ0cyAKIyAgICAgICAgICAgICAgfCBtYngKIwojIFRoaXMgaXMgbW9yZSB0aGFu IHVnbHkhCiMgSnVzdCB1c2U6CiMgICBtYjJtZCAtcyBvbGRtYWlsIC1yIG1ieAojCiMgTm90ZTog ZG9uJ3Qgc3BlY2lmeSB0aGUgZG90ISBJdCB3aWxsIGJlIHN0cmlwcGVkIG9mZgojIGF1dG9tYWdp Y2FsbHkgOykKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKdXNlIHN0cmljdDsKdXNlIEdldG9w dDo6U3RkOwp1c2UgRGF0ZTo6UGFyc2U7CnVzZSBJTzo6SGFuZGxlOwp1c2UgRmNudGw7CgoJCSAg ICAjIHByaW50IHRoZSB1c2FnZSBtZXNzYWdlCnN1YiB1c2FnZSgpIHsKICAgIHByaW50ICJVc2Fn ZTpcbiI7CiAgICBwcmludCAiICAgICAgIG1iMm1kIC1oXG4iOwogICAgcHJpbnQgIiAgICAgICBt YjJtZCBbLWNdIC1tIFstZCBkZXN0ZGlyXVxuIjsKICAgIHByaW50ICIgICAgICAgbWIybWQgWy1j XSAtcyBzb3VyY2VmaWxlIFstZCBkZXN0ZGlyXVxuIjsKICAgIGRpZSAgICIgICAgICAgbWIybWQg Wy1jXSAtcyBzb3VyY2VkaXIgWy1sIHd1LW1haWxib3hsaXN0XSBbLVJ8LWYgc29tZWZvbGRlcl0g Wy1kIGRlc3RkaXJdIFstciBzdHJpcF9leHRlbnNpb25dXG4iOwp9CgkJICAgICMgZ2V0IG9wdGlv bnMKbXkgJW9wdHM7CmdldG9wdHMoJ2Q6ZjpjaG1zOnI6bDpSJywgXCVvcHRzKSB8fCB1c2FnZSgp Owp1c2FnZSgpIGlmICggZGVmaW5lZCgkb3B0c3tofSkKCXx8ICghZGVmaW5lZCgkb3B0c3ttfSkg JiYgIWRlZmluZWQoJG9wdHN7c30pKSApOwoKIyBHZXQgdWlkLCB1c2VybmFtZSBhbmQgaG9tZSBk aXIKbXkgKCRuYW1lLCAkcGFzc3dkLCAkdWlkLCAkZ2lkLCAkcXVvdGEsICRjb21tZW50LCAkZ2Nv cywgJGhvbWVkaXIsICRzaGVsbCkgPSBnZXRwd3VpZCgkPCk7CgojIEdldCBhcmd1bWVudHMgYW5k IGRldGVybWluZSBzb3VyY2UKIyBhbmQgdGFyZ2V0IGRpcmVjdG9yaWVzLgpteSAkbWJyb290ID0g dW5kZWY7CSMgdGhpcyBpcyB0aGUgYmFzZSBkaXJlY3RvcnkgZm9yIHRoZSBtYm94ZXMKbXkgJG1i ZGlyID0gdW5kZWY7CSMgdGhpcyBpcyBhbiBtYm94IGRpciByZWxhdGl2ZSB0byB0aGUgJG1icm9v dApteSAkbWJmaWxlID0gdW5kZWY7CSMgdGhpcyBpcyBhbiBtYm94IGZpbGUKbXkgJGRlc3QgPSB1 bmRlZjsKbXkgJHN0cmlwX2V4dCA9IHVuZGVmOwpteSAkdXNlX2NsID0gdW5kZWY7CSMgZGVmaW5l cyB3aGV0aGVyIHdlIHVzZSB0aGUgQ29udGVudC1MZW5ndGg6IGhlYWRlciBpZiBwcmVzZW50Cgoj IGlmIG9wdGlvbiAiLWMiIGlzIGdpdmVuLCB3ZSB1c2UgdGhlIENvbnRlbnQtTGVuZ3RoOiBoZWFk ZXIgaWYgcHJlc2VudAojIGRhbmdlcm91cyEgbWF5IGJlIHVucmVsaWFibGUsIGFzIHRoZSB3aG9s ZSBDTCBzdHVmZiBpcyBhIGJhZCBpZGVhCmlmIChkZWZpbmVkKCRvcHRze2N9KSkKewoJJHVzZV9j bCA9IDE7Cn0gZWxzZSB7CgkkdXNlX2NsID0gMDsKfQoKIyBmaXJzdCwgaWYgdGhlIHVzZXIgaGFz IGdvbmUgdGhlIC1tIG9wdGlvbgojIHdlIHNpbXBseSBjb252ZXJ0IHRoZWlyIG1haWxmaWxlCmlm IChkZWZpbmVkKCRvcHRze219KSkKewoJaWYgKGRlZmluZWQoJEVOVnsnTUFJTCd9KSkgewoJCSRt YmZpbGUgPSAkRU5WeydNQUlMJ307Cgl9IGVsc2lmICggLWYgIi92YXIvc3Bvb2wvbWFpbC8kbmFt ZSIgKSB7CgkJJG1iZmlsZSA9ICIvdmFyL3Nwb29sL21haWwvJG5hbWUiCgl9IGVsc2lmICggLWYg Ii92YXIvbWFpbC8kbmFtZSIgKSB7CgkJJG1iZmlsZSA9ICIvdmFyL21haWwvJG5hbWUiCgl9IGVs c2UgewoJCWRpZSgiSSBzZWFyY2hlZCBcJE1BSUwsIC92YXIvc3Bvb2wvbWFpbC8kbmFtZSBhbmQg L3Zhci9tYWlsLyRuYW1lLCAiLgoJCQkiYnV0IEkgY291bGRuJ3QgZmluZCB5b3VyIG1haWwgc3Bv b2wgZmlsZSAtICIpOwoJfQp9CiMgc2VlIGlmIHRoZSB1c2VyIGhhcyBzcGVjaWZpZWQgYSBzb3Vy Y2UgZGlyZWN0b3J5CmVsc2lmIChkZWZpbmVkKCRvcHRze3N9KSkKewoJIyBpZiBvcHRze3N9IGRv ZXNuJ3Qgc3RhcnQgd2l0aCBhICIvIiB0aGVuCgkjIGl0IGlzIGEgc3ViZGlyIG9mIHRoZSB1c2Vy cyAkaG9tZQoJIyBpZiBpdCBkb2VzIHN0YXJ0IHdpdGggYSAiLyIgdGhlbgoJIyBsZXQncyB0YWtl ICRtYnJvb3QgYXMgYSBhYnNvbHV0IHBhdGgKCSRvcHRze3N9ID0gIiRob21lZGlyLyRvcHRze3N9 IiBpZiAoJG9wdHN7c30gIX4gL15cLy8pOyAKCgkjIGNoZWNrIGlmIHRoZSBnaXZlbiBzb3VyY2Ug aXMgYSBtYm94IGZpbGUKCWlmICgtZiAkb3B0c3tzfSkKCXsKCQkkbWJmaWxlID0gJG9wdHN7c307 Cgl9CgoJIyBvdGhlcndpc2UgY2hlY2sgaWYgaXQgaXMgYSBkaXJlY3RvcnkKCWVsc2lmICgtZCAk b3B0c3tzfSkKCXsKCQkkbWJyb290ID0gJG9wdHN7c307CgkJIyBnZXQgcmlkIG9mIHRyYWlsaW5n IC8ncwoJCSRtYnJvb3QgPX4gcy9cLyQvLzsKCgkJIyBjaGVjayBpZiB3ZSBoYXZlIGEgc3BlY2lm aWVkIHN1YiBkaXJlY3RvcnksCgkJIyBvdGhlcndpc2UgdGhlIHN1YiBkaXJlY3RvcnkgaXMgJy4n CgkJaWYgKGRlZmluZWQoJG9wdHN7Zn0pKQoJCXsKCQkJJG1iZGlyID0gJG9wdHN7Zn07CgkJCSMg Z2V0IHJpZCBvZiB0cmFpbGluZyAvJ3MKCQkJJG1iZGlyID1+IHMvXC8kLy87CgkJfQoJfQoKCSMg b3RoZXJ3aXNlIHdlIGhhdmUgYW4gZXJyb3IKCWVsc2UKCXsKCQlkaWUoIkZhdGFsOiBTb3VyY2Ug aXMgbm90IGFuIG1ib3ggZmlsZSBvciBhIGRpcmVjdG9yeSFcbiIpOwoJfQp9CgoKIyBnZXQgdGhl IGRlc3QKZGVmaW5lZCgkb3B0c3tkfSkgJiYgKCRkZXN0ID0gJG9wdHN7ZH0pIHx8ICgkZGVzdCA9 ICJNYWlsZGlyIik7CiMgc2VlIGlmIHdlIGhhdmUgYW55dGhpbmcgdG8gc3RyaXAKZGVmaW5lZCgk b3B0c3tyfSkgJiYgKCRzdHJpcF9leHQgPSAkb3B0c3tyfSk7CiMgTm8gJy1mJyB3aXRoICctUicK aWYoKGRlZmluZWQoJG9wdHN7Un0pKSYmKGRlZmluZWQoJG9wdHN7Zn0pKSkgeyBkaWUgIk5vIHJl Y3Vyc2lvbiB3aXRoIFwiLWZcIiI7fQojIEdldCBsaXN0IG9mIGZvbGRlcnMKbXkgQGZsaXN0Owpp ZihkZWZpbmVkKCRvcHRze2x9KSkKewogICAgb3BlbiAoTElTVCwkb3B0c3tsfSkgb3IgZGllICJD b3VsZCBub3Qgb3BlbiBtYWlsYm94IGxpc3QgJG9wdHN7bH06ICQhIjsKICAgIEBmbGlzdD08TElT VD47CiAgICBjbG9zZSBMSVNUOwp9CgojIGlmIHRoZSBkZXN0aW5hdGlvbiBpcyByZWxhdGl2ZSB0 byB0aGUgaG9tZSBkaXIsCiMgY2hlY2sgdGhhdCB0aGUgaG9tZSBkaXIgZXhpc3RzCmRpZSgiRmF0 YWw6IGhvbWUgZGlyICRob21lZGlyIGRvZXNuJ3QgZXhpc3QuXG4iKSBpZiAoJGRlc3QgIX4gL15c Ly8gJiYgICEgLWUgJGhvbWVkaXIpOwoKIwojIGZvcm0gdGhlIGRlc3RpbmF0aW9uIHZhbHVlCiMg c2xhcCB0aGUgaG9tZSBkaXIgb24gdGhlIGZyb250IG9mIHRoZSBkZXN0IGlmIHRoZSBkZXN0IGRv ZXMgbm90IGJlZ2luCiMgd2l0aCBhICcvJwokZGVzdCA9ICIkaG9tZWRpci8kZGVzdCIgaWYgKCRk ZXN0ICF+IC9eXC8vKTsKIyBnZXQgcmlkIG9mIHRyYWlsaW5nIC8ncwokZGVzdCA9fiBzL1wvJC8v OwoKCiMgQ291bnQgdGhlIG51bWJlciBvZiBtYWlsYm94ZXMsIG9yCiMgYXQgbGVhc3QgZmlsZXMs IHdlIGZvdW5kLgpteSAkbWFpbGJveGNvdW50ID0gMDsKCiMgU2luY2Ugd2UnbGwgYmUgbWFraW5n IHN1YiBkaXJlY3RvcmllcyBvZiB0aGUgbWFpbgojIE1haWxkaXIsIHdlIG5lZWQgdG8gbWFrZSBz dXJlIHRoYXQgdGhlIG1haW4gbWFpbGRpcgojIGV4aXN0cwombWFpbGRpcm1ha2UoJGRlc3QpOwoK IyBOb3cgd2UgZG8gZGlmZmVyZW50IHRoaW5ncyBkZXBlbmRpbmcgb24gd2hldGhlciB3ZSBjb252 ZXJ0IG9uZSBtYm94CiMgZmlsZSBvciBhIGRpcmVjdG9yeSBvZiBtYm94IGZpbGVzCmlmIChkZWZp bmVkKCRtYmZpbGUpKQp7CglpZiAoIWlzYW1haWxib3hmaWxlKCRtYmZpbGUpKQogICAgICAgIHsK ICAgICAgICAgICAgICBwcmludCAiU2tpcHBpbmcgJG1iZmlsZTogbm90IGEgbWJveCBmaWxlXG4i OwogICAgICAgIH0KCWVsc2UKCXsKCSAgICAgIHByaW50ICJDb252ZXJ0aW5nICRtYmZpbGUgdG8g bWFpbGRpcjogJGRlc3RcbiI7CgkgICAgICAjIHRoaXMgaXMgZWFzeSwgd2UganVzdCBydW4gdGhl IGNvbnZlcnQgZnVuY3Rpb24KCSAgICAgICZjb252ZXJ0KCRtYmZpbGUsICRkZXN0KTsKCX0KfQoj IGlmICctZicgd2FzIHVzZWQgLi4uCmVsc2lmIChkZWZpbmVkKCRtYmRpcikpCnsKCXByaW50ICJD b252ZXJ0aW5nIG1ib3hkaXIvbWJkaXI6ICRtYnJvb3QvJG1iZGlyIHRvIG1haWxkaXI6ICRkZXN0 L1xuIjsKCQoJIyBOb3cgc2V0IG91ciBzb3VyY2UgZGlyZWN0b3J5CglteSAkc291cmNlZGlyID0g IiRtYnJvb3QvJG1iZGlyIjsKCgkjIGNoZWNrIHRoYXQgdGhlIGRpcmVjdG9yeSB3ZSBhcmUgc3Vw cG9zZWQgdG8gYmUgZmluZGluZyBtYm94CgkjIGZpbGVzIGluLCBleGlzdHMgYW5kIGlzIGEgZGly ZWN0b3J5CgktZSAkc291cmNlZGlyIG9yIGRpZSgiRmF0YWw6IE1CRElSIGRpcmVjdG9yeSAkc291 cmNlZGlyLyBkb2VzIG5vdCBleGlzdC5cbiIpOwoJLWQgJHNvdXJjZWRpciBvciBkaWUoIkZhdGFs OiBNQkRJUiAkc291cmNlZGlyIGlzIG5vdCBhIGRpcmVjdG9yeS5cbiIpOwoKCQoJJmNvbnZlcnRp dCgkbWJkaXIsIiIpOwp9CiMgRWxzZSwgbGV0J3Mgd29yayBpbiAkbWJyb290CmVsc2UKewoJb3Bl bmRpcihTRElSLCAkbWJyb290KQoJCW9yIGRpZSgiRmF0YWw6IENhbm5vdCBvcGVuIHNvdXJjZSBk aXJlY3RvcnkgJG1icm9vdC8gXG4iKTsKCgoJd2hpbGUgKG15ICRzb3VyY2VmaWxlID0gcmVhZGRp cihTRElSKSkKCXsKCQlpZiAoLWQgIiRtYnJvb3QvJHNvdXJjZWZpbGUiKSB7CgkJCSMgUmVjdXJz ZSBvbmx5IGlmIHJlcXVlc3RlZCAodG8gYmUgY2hhbmdlZCA/KQoJCQlpZiAoZGVmaW5lZCgkb3B0 c3tSfSkpIHsKCQkJCXByaW50ICJjb252ZXJ0aXQoJHNvdXJjZWZpbGUsXCJcIilcbiI7CgkJCQkm Y29udmVydGl0KCRzb3VyY2VmaWxlLCIiKTsKCQkJfSBlbHNlIHsKCQkJcHJpbnQoIiRzb3VyY2Vm aWxlIGlzIGEgZGlyZWN0b3J5LCBidXQgJy1SJyB3YXMgbm90IHVzZWQuLi4gc2tpcHBpbmdcbiIp OwoJCQl9CgkJfQogICAgCQllbHNpZiAoIS1mICIkbWJyb290LyRzb3VyY2VmaWxlIikKCQl7CgkJ CXByaW50ICJTa2lwcGluZyAkbWJyb290LyRzb3VyY2VmaWxlIDogbm90IGEgZmlsZSBub3IgYSBk aXJcbiI7CgkJCW5leHQ7CgkJfQoJCWVsc2lmICghaXNhbWFpbGJveGZpbGUoIiRtYnJvb3QvJHNv dXJjZWZpbGUiKSkKCQl7CgkJCXByaW50ICJTa2lwcGluZyAkbWJyb290LyRzb3VyY2VmaWxlIDog bm90IGEgbWJveCBmaWxlXG4iOwoJCQluZXh0OwoJCX0KCQllbHNlIAoJCXsKCQkJJmNvbnZlcnRp dCgkc291cmNlZmlsZSwiIik7CgkJfQoJfSAjIGVuZCBvZiAid2hpbGUgKCRzZmlsZSA9IHJlYWRk aXIoU0RJUikpIiBsb29wLgoJY2xvc2VkaXIoU0RJUik7CglwcmludGYoIiRtYWlsYm94Y291bnQg ZmlsZXMgcHJvY2Vzc2VkLlxuIik7Cn0KIwoKZXhpdCAwOwoKIyBNeSBkZWJidWdnaW5nIHBsYWNl aG9sZGVyIEkgY2FuIHB1dCBzb21ld2hlcmUgdG8gc2hvdyBob3cgZmFyIHRoZSBzY3JpcHQgcmFu LgojIGRpZSgiU28gZmFyIHNvIGdvb2QuXG5cbiIpOwoKIyBUaGUgaXNhbWFpbGJveGZpbGUgZnVu Y3Rpb24KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgCiMgSGVyZSB3ZSBjaGVjayBpZiB0aGUg ZmlsZSBpcyBhIG1haWxib3ggZmlsZSwgbm90IGFuIGFkZHJlc3MtYm9vayBvciAKIyBzb21ldGhp bmcgZWxzZS4KIyBJZiBmaWxlIGlzIGVtcHR5LCB3ZSBzYXkgaXQgaXMgYSBtYm94LCB0byBjcmVh dGUgaXQgZW1wdHkuCiMKIyBSZXR1cm5zIDEgaWYgZmlsZSBpcyBzYWlkIG1ib3gsIDAgZWxzZS4K c3ViIGlzYW1haWxib3hmaWxlIHsKCW15ICgkbWJ4ZmlsZSkgPSBAXzsKCXJldHVybiAxIGlmKC16 ICRtYnhmaWxlKTsKCXN5c29wZW4oTUJYRklMRSwgIiRtYnhmaWxlIiwgT19SRE9OTFkpIG9yIGRp ZSAiQ291bGQgbm90IG9wZW4gJG1ieGZpbGUgISBcbiI7Cgl3aGlsZSg8TUJYRklMRT4pIHsKCQlp ZiAoL15Gcm9tLykgewoJCQljbG9zZShNQlhGSUxFKTsKCQkJcmV0dXJuIDE7CgkJfQoJCWVsc2Ug ewoJCQljbG9zZShNQlhGSUxFKTsKCQkJcmV0dXJuIDA7CgkJfQoJfQp9CgojIFRoZSBjb252ZXJ0 aXQgZnVuY3Rpb24KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBmdW5jdGlvbiBj cmVhdGVzIGFsbCBzdWJkaXJzIGluIG1haWxkaXIsIGFuZCBjYWxscyBjb252ZXJ0KCkgCiMgZm9y IGVhY2ggbWJveCBmaWxlLgojIFllcywgaXQgYmVjb21lcyB0aGUgJ21haW4gbG9vcCcgOikKc3Vi IGNvbnZlcnRpdAp7CgkjIEdldCBzdWJkaXIgYXMgYXJndW1lbnQKCW15ICgkZGlyLCRvbGRwYXRo KSA9IEBfOwoJCgkkb2xkcGF0aCA9fiBzL1wvXC8vLzsKCgkjIFNraXAgZmlsZXMgYmVnaW5uaW5n IHdpdGggJy4nIHNpbmNlIHRoZXkgYXJlCgkjIG5vdCBub3JtYWxseSBtYm94IGZpbGVzIG5vciBk aXJzIChpbmNsdWRlcyAnLicgYW5kICcuLicpCglpZiAoJGRpciA9fiAvXlwuLykKCXsKCQlwcmlu dCAiU2tpcHBpbmcgJGRpciA6IG5hbWUgYmVnaW5zIHdpdGggYSAnLidcbiI7CgkJcmV0dXJuOwoJ fQoJbXkgJGRlc3RpbmF0aW9uZGlyID0gJGRpcjsKCW15ICR0ZW1wcGF0aCA9ICRvbGRwYXRoOwoK CSMgV2UgZG9uJ3Qgd2FudCB0byBoYXZlIC4ncyBpbiB0aGUgJHRhcmdldGZpbGUgZmlsZQoJIyBu YW1lIGJlY2F1c2UgdGhleSB3aWxsIGJlY29tZSBkaXJlY3RvcmllcyBpbiB0aGUKCSMgTWFpbGRp ci4gVGhlcmVmb3JlIHdlIGNvbnZlcnQgdGhlbSB0byBfJ3MKCSR0ZW1wcGF0aCA9fiBzL1wuL1xf L2c7CgkkZGVzdGluYXRpb25kaXIgPX4gcy9cLi9cXy9nOwoJCgkjIEFwcGVuZGluZyAkb2xkcGF0 aCA9PiBwYXRoIGlzIG9ubHkgbWlzc2luZyAkZGVzdAoJJGRlc3RpbmF0aW9uZGlyID0gIiR0ZW1w cGF0aC4kZGVzdGluYXRpb25kaXIiOwoKCSMgQ29udmVydGluZyAnLycgdG8gJy4nIGluICRkZXN0 aW5hdGlvbmRpcgoJJGRlc3RpbmF0aW9uZGlyID1+cy9cLysvXC4vZzsKCQoJIyBzb3VyY2UgZGly CglteSAkc3JjZGlyPSIkbWJyb290LyRvbGRwYXRoLyRkaXIiOwoKCXByaW50ZigiY29udmVydGl0 KCk6IENvbnZlcnRpbmcgJGRpciBpbiAkbWJyb290LyRvbGRwYXRoIHRvICRkZXN0LyRkZXN0aW5h dGlvbmRpclxuIik7CgkmbWFpbGRpcm1ha2UoIiRkZXN0LyRkZXN0aW5hdGlvbmRpciIpOwoJcHJp bnQoImRlc3RpbmF0aW9uID0gJGRlc3RpbmF0aW9uZGlyXG4iKTsKCWlmICgtZCAkc3JjZGlyKSB7 CgkJb3BlbmRpcihTVUJESVIsICIkc3JjZGlyIikgb3IgZGllICJjYW4ndCBvcGVuICRzcmNkaXIg IVxuIjsKCQlteSBAc3ViZGlybGlzdD1yZWFkZGlyKFNVQkRJUik7CgkJY2xvc2VkaXIoU1VCRElS KTsKCQlmb3JlYWNoIChAc3ViZGlybGlzdCkgewoJCQluZXh0IGlmICgvXlwuKyQvKTsKCQkJcHJp bnQoIlN1YjogJF9cbiIpOwoJCQlwcmludCgiY29udmVydGl0KCRfLFwiJG9sZHBhdGgvJGRpclwi KVxuIik7CgkJCSZjb252ZXJ0aXQoJF8sIiRvbGRwYXRoLyRkaXIiKTsKCQl9IAoJfSBlbHNlIHsK CQkjIFNvdXJjZSBmaWxlIHZlcmlmcyAuLi4uCgkJIwoJCXJldHVybiBpZihkZWZpbmVkKCRvcHRz e2x9KSAmJiAhaW5saXN0KCIkb2xkcGF0aC8kZGlyIixAZmxpc3QpKTsKCgkJaWYgKCFpc2FtYWls Ym94ZmlsZSgiJG1icm9vdC8kb2xkcGF0aC8kZGlyIikpCgkJewoJCQlwcmludCAiU2tpcHBpbmcg JGRpciAoaXMgbm90IG1ib3gpXG4iOwoJCQluZXh0OwoJCX0KCgkJIyB0YXJnZXQgZmlsZSB2ZXJp ZnMuLi4KCQkjCgkJIyBpZiAkc3RyaXBfZXh0ZW5zaW9uIGlzIGRlZmluZWQsCgkJIyBzdHJpcCBp dCBvZmYgdGhlICR0YXJnZXRmaWxlCgkgICAgCWRlZmluZWQoJHN0cmlwX2V4dCkgJiYgKCRkZXN0 aW5hdGlvbmRpciA9fiBzL1wuJHN0cmlwX2V4dCQvLyk7CgkJJmNvbnZlcnQoIiRtYnJvb3QvJG9s ZHBhdGgvJGRpciIsIiRkZXN0LyRkZXN0aW5hdGlvbmRpciIpOwoJCSRtYWlsYm94Y291bnQrKzsK CX0KfQojIFRoZSBtYWlsZGlybWFrZSBmdW5jdGlvbgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQojCiMgSXQgZG9lcyB0aGUgc2FtZSB0aGluZyB0aGF0IHRoZSBtYWlsZGlybWFrZSBiaW5hcnkg dGhhdCAKIyBjb21lcyB3aXRoIGNvdXJpZXItaW1hcCBkaXN0cmlidXRpb24KIwpzdWIgbWFpbGRp cm1ha2UKewoJZm9yZWFjaChAXykgewoJCS1kICRfIG9yIG1rZGlyICRfLDA3MDAgb3IgZGllKCJG YXRhbDogRGlyZWN0b3J5ICRfIGRvZXNuJ3QgZXhpc3QgYW5kIGNhbid0IGJlIGNyZWF0ZWQuXG4i KTsKCQoJCS1kICIkXy90bXAiIG9yIG1rZGlyKCIkXy90bXAiLDA3MDApIG9yIGRpZSgiRmF0YWw6 IFVuYWJsZSB0byBtYWtlICRfL3RtcC8gc3ViZGlyZWN0b3J5LlxuIik7CgkJLWQgIiRfL25ldyIg b3IgbWtkaXIoIiRfL25ldyIsMDcwMCkgb3IgZGllKCJGYXRhbDogVW5hYmxlIHRvIG1ha2UgJF8v bmV3LyBzdWJkaXJlY3RvcnkuXG4iKTsKCQktZCAiJF8vY3VyIiBvciBta2RpcigiJF8vY3VyIiww NzAwKSBvciBkaWUoIkZhdGFsOiBVbmFibGUgdG8gbWFrZSAkXy9jdXIvIHN1YmRpcmVjdG9yeS5c biIpOwoJfQp9CgojIFRoZSBpbmxpc3QgZnVuY3Rpb24KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KIwojIEl0IGNoZWNrcyB0aGF0IHRoZSBmb2xkZXIgdG8gYmUgY29udmVydGVkIGlzIGluIHRo ZSBsaXN0IG9mIHN1YnNjcmliZWQKIyBmb2xkZXJzIGluIFdVLUlNQVAKIwpzdWIgaW5saXN0CnsK CW15ICgkZmlsZSxAZmxpc3QpID0gQF87CglteSAkdmFsaWQgPSAwOwoJIyBHZXQgcmlkIG9mIHRo ZSBmaXJzdCAvIGlmIGFueQoJJGZpbGUgPX4gcy9eXC8vLzsKCWZvcmVhY2ggbXkgJGZvbGRlciAo QGZsaXN0KSB7CgkJY2hvbXAgJGZvbGRlcjsKCQlpZiAoJGZpbGUgZXEgJGZvbGRlcikgewoJCQkk dmFsaWQgPSAxOwoJCQlsYXN0OwoJCX0KCX0KCWlmICghJHZhbGlkKSB7CgkJcHJpbnQgIiRmaWxl IGlzIG5vdCBpbiBsaXN0XG4iOwoJfQoJZWxzZSB7CgkJcHJpbnQgIiRmaWxlIGlzIGluIGxpc3Rc biI7Cgl9CgoJcmV0dXJuICR2YWxpZDsKfQoJCiMgCgojIFRoZSBjb252ZXJ0IGZ1bmN0aW9uCiMg LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIGZ1bmN0aW9uIGRvZXMgdGhlIGRvd24gYW5k IGRpcnR5IHdvcmsgb2YKIyBhY3R1YWxseSBjb252ZXJ0aW5nIHRoZSBtYm94IHRvIGEgbWFpbGRp cgojCnN1YiBjb252ZXJ0CnsKCSMgZ2V0IHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGFzIGFy Z3VtZW50cwoJbXkgKCRtYm94LCAkbWFpbGRpcikgPSBAXzsKCglwcmludGYoIlNvdXJjZSBNYm94 IGlzICRtYm94XG4iKTsKICAgICAgICBwcmludGYoIlRhcmdldCBNYWlsZGlyIGlzICRtYWlsZGly IFxuIikgOwoKCSMgY3JlYXRlIHRoZSBkaXJlY3RvcmllcyBmb3IgdGhlIG5ldyBtYWlsZGlyCgkj CgkjIGlmIGl0IGlzIHRoZSByb290IG1haWxkaXIgKGllLiBjb252ZXJ0aW5nIHRoZSBpbmJveCkK CSMgdGhlc2UgYWxyZWFkeSBleGlzdCBidXQgdGhhdHMgbm90IGEgYmlnIGlzc3VlCgoJJm1haWxk aXJtYWtlKCRtYWlsZGlyKTsKCiAgICAgICAgIyBDaGFuZ2UgdG8gdGhlIHRhcmdldCBtYWlsYm94 IGRpcmVjdG9yeS4KCiAgICAgICAgY2hkaXIgIiRtYWlsZGlyIiA7CgogICAgICAgICAJICAgICMg Q29udmVydHMgYSBNYm94IHRvIG11bHRpcGxlIGZpbGVzCiAgICAgICAgICAgICAgICAgICAgIyBp biBhIE1haWxkaXIuCiAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGlzIGFkYXB0ZWQgZnJvbSBt Ym94Mm1haWxkaXIuCiAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMg T3BlbiB0aGUgTWJveCBtYWlsYm94IGZpbGUuCgoKICAgICAgICBpZiAoc3lzb3BlbihNQk9YLCAi JG1ib3giLCBPX1JET05MWSkpCiAgICAgICAgewogICAgICAgICAgICAjcHJpbnRmKCJDb252ZXJ0 aW5nIE1ib3ggICAkbWJveCAuIC4gLiAgXG4iKTsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAg ICAgIHsKICAgICAgICAgICAgZGllKCJGYXRhbDogdW5hYmxlIHRvIG9wZW4gaW5wdXQgbWFpbGJv eCBmaWxlOiAkbWJveCAhIFxuIik7CiAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIFRo aXMgbG9vcCBzY2FucyB0aGUgaW5wdXQgbWFpbGJveCBmb3IKICAgICAgICAgICAgICAgICAgICAj IGEgbGluZSBzdGFydGluZyB3aXRoICJGcm9tICIuICBUaGUKICAgICAgICAgICAgICAgICAgICAj ICJeIiBiZWZvcmUgaXQgaXMgcGF0dGVybi1tYXRjaGluZwogICAgICAgICAgICAgICAgICAgICMg bGluZ28gZm9yIGl0IGJlaW5nIGF0IHRoZSBzdGFydCBvZiBhCiAgICAgICAgICAgICAgICAgICAg IyBsaW5lLgogICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAjIEVhY2gg ZW1haWwgaW4gTWJveCBtYWlsYm94IHN0YXJ0cwogICAgICAgICAgICAgICAgICAgICMgd2l0aCBz dWNoIGEgbGluZSwgd2hpY2ggaXMgd2h5IGFueQogICAgICAgICAgICAgICAgICAgICMgc3VjaCBs aW5lIGluIHRoZSBib2R5IG9mIHRoZSBlbWFpbAogICAgICAgICAgICAgICAgICAgICMgaGFzIHRv IGhhdmUgYSAiPiIgcHV0IGluIGZyb250IG9mIGl0LgogICAgICAgICAgICAgICAgICAgICMKICAg ICAgICAgICAgICAgICAgICAjIFRoaXMgaXMgbm90IHJlcXVpcmVkIGluIGEgTWFpbGRpcgogICAg ICAgICAgICAgICAgICAgICMgbWFpbGJveCwgYW5kIHNvbWUgbWFqaWsgYmVsb3cKICAgICAgICAg ICAgICAgICAgICAjIGZpbmRzIGFueSBzdWNoIHF1b3RlZCAiPiBGcm9tInMgYW5kCiAgICAgICAg ICAgICAgICAgICAgIyBnZXRzIHJpZCBvZiB0aGUgIj4gIiBxdW90ZS4KICAgICAgICAgICAgICAg ICAgICAjCiAgICAgICAgICAgICAgICAgICAgIyBFYWNoIGVtYWlsIGlzIHB1dCBpbiBhIGZpbGUK ICAgICAgICAgICAgICAgICAgICAjIGluIHRoZSBjdXIvIHN1YmRpcmVjdG9yeSB3aXRoIGEKICAg ICAgICAgICAgICAgICAgICAjIG5hbWUgb2YgdGhlIGZvcm06CiAgICAgICAgICAgICAgICAgICAg IwogICAgICAgICAgICAgICAgICAgICMgICAgbm5ubm5ubm5uLmNjY2MubWJveDoyLFhYWFgKICAg ICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgIyB3aGVyZToKICAgICAgICAg ICAgICAgICAgICAjICAgICJubm5ubm5ubm4iIGlzIHRoZSBVbml4IHRpbWUgc2luY2UKICAgICAg ICAgICAgICAgICAgICAjICAgICAgIDE5NzAgd2hlbiB0aGlzIHNjcmlwdCBzdGFydGVkCiAgICAg ICAgICAgICAgICAgICAgIyAgICAgICBydW5uaW5nLCBpbmNyZW1lbnRlZCBieSAxIGZvcgogICAg ICAgICAgICAgICAgICAgICMgICAgICAgZXZlcnkgZW1haWwuICBUaGlzIGlzIHRvIGVuc3VyZQog ICAgICAgICAgICAgICAgICAgICMgICAgICAgdW5pcXVlIG5hbWVzIGZvciBlYWNoIG1lc3NhZ2UK ICAgICAgICAgICAgICAgICAgICAjICAgICAgIGZpbGUuCiAgICAgICAgICAgICAgICAgICAgIwog ICAgICAgICAgICAgICAgICAgICMgICAgIi5jY2NjIiBpcyB0aGUgbWVzc2FnZSBjb3VudCBvZgog ICAgICAgICAgICAgICAgICAgICMgICAgICAgbWVzc2FnZXMgZnJvbSB0aGlzIG1ib3guCiAgICAg ICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgICAgIi5tYm94IiBpcyBqdXN0 IHRvIGluZGljYXRlIHRoYXQKICAgICAgICAgICAgICAgICAgICAjICAgICAgIHRoaXMgbWVzc2Fn ZSB3YXMgY29udmVydGVkIGZyb20KICAgICAgICAgICAgICAgICAgICAjICAgICAgIGFuIE1ib3gg bWFpbGJveC4KICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgIyAgICAi OjIsIiBpcyB0aGUgc3RhcnQgb2YgcG90ZW50aWFsbHkKICAgICAgICAgICAgICAgICAgICAjICAg ICAgIG11bHRpcGxlIElNQVAgZmxhZyBjaGFyYWN0ZXJzCiAgICAgICAgICAgICAgICAgICAgIyAg ICAgICAiWFhYWCIsIGJ1dCBtYXkgYmUgZm9sbG93ZWQgYnkKICAgICAgICAgICAgICAgICAgICAj ICAgICAgIG5vdGhpbmcuCiAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAg ICMgVGhpcyBpcyBzb3J0LW9mICBjb21wbGlhbnQgd2l0aAogICAgICAgICAgICAgICAgICAgICMg dGhlIE1haWxkaXIgbmFtaW5nIGNvbnZlbnRpb25zCiAgICAgICAgICAgICAgICAgICAgIyBzcGVj aWZpZWQgYXQ6CiAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgaHR0 cDovL3d3dy5xbWFpbC5vcmcvbWFuL21hbjUvbWFpbGRpci5odG1sCiAgICAgICAgICAgICAgICAg ICAgIwogICAgICAgICAgICAgICAgICAgICMgVGhpcyBhcHByb2FjaCBkb2VzIG5vdCBpbnZvbHZl IHRoZQogICAgICAgICAgICAgICAgICAgICMgcHJvY2VzcyBJRCBvciB0aGUgaG9zdG5hbWUsIGJ1 dCBpdCBpcwogICAgICAgICAgICAgICAgICAgICMgcHJvYmFibHkgZ29vZCBlbm91Z2guCiAgICAg ICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgV2hlbiB0aGUgSU1BUCBzZXJ2 ZXIgbG9va3MgYXQgdGhpcwogICAgICAgICAgICAgICAgICAgICMgbWFpbGJveCwgaXQgd2lsbCBt b3ZlIHRoZSBmaWxlcyB0bwogICAgICAgICAgICAgICAgICAgICMgdGhlIGN1ci8gZGlyZWN0b3J5 IGFuZCBjaGFuZ2UgdGhlaXIKICAgICAgICAgICAgICAgICAgICAjIG5hbWVzIGFzIGl0IHBsZWFz ZXMuICBJbiB0aGUgY2FzZQogICAgICAgICAgICAgICAgICAgICMgb2YgQ291cmllciBJTUFQLCB0 aGUgbmFtZXMgd2lsbAogICAgICAgICAgICAgICAgICAgICMgYmVjb21lIGxpa2U6CiAgICAgICAg ICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgICA5OTUwOTY1NDEuMjUzNTEubWJv eDoyLFMKICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgIyB3aXRoIDI1 MzUxIGJlaW5nIENvdXJpZXIgSU1BUCdzCiAgICAgICAgICAgICAgICAgICAgIyBwcm9jZXNzIElE LiAgVGhlIDoyLCBpcyB0aGUgc3RhcnQKICAgICAgICAgICAgICAgICAgICAjIG9mIHRoZSBmbGFn cywgYW5kIHRoZSAiUyIgbWVhbnMKICAgICAgICAgICAgICAgICAgICAjIHRoYXQgdGhpcyBvbmUg aGFzIGJlZW4gc2VlbiBieQogICAgICAgICAgICAgICAgICAgICMgdGhlIHVzZXIuICAoQnV0IGlz IHRoaXMgdGhlIHNhbWUKICAgICAgICAgICAgICAgICAgICAjIG1lYW5pbmcgYXMgdGhlIHVzZXIg YWN0dWFsbHkKICAgICAgICAgICAgICAgICAgICAjIGhhdmluZyBvcGVuZWQgdGhlIG1lc3NhZ2Ug dG8gc2VlCiAgICAgICAgICAgICAgICAgICAgIyBpdHMgY29udGVudHMsIHJhdGhlciB0aGFuIGp1 c3QgdGhlCiAgICAgICAgICAgICAgICAgICAgIyBJTUFQIHNlcnZlciBoYXZpbmcgYmVlbiBhc2tl ZCB0bwogICAgICAgICAgICAgICAgICAgICMgbGlzdCB0aGUgbWVzc2FnZSdzIFN1YmplY3QgZXRj LgogICAgICAgICAgICAgICAgICAgICMgc28gdGhlIGNsaWVudCBjb3VsZCBsaXN0IGl0IGluIHRo ZQogICAgICAgICAgICAgICAgICAgICMgdmlzaWJsZSBJbmJveD8pCiAgICAgICAgICAgICAgICAg ICAgIwogICAgICAgICAgICAgICAgICAgICMgVGhpcyBjb250cmFzdHMgd2l0aCBhIG1lc3NhZ2UK ICAgICAgICAgICAgICAgICAgICAjIGNyZWF0ZWQgYnkgQ291cmllciBJTUFQLCBzYXkgd2l0aAog ICAgICAgICAgICAgICAgICAgICMgYSBtZXNzYWdlIGNvcHksIHdoaWNoIGlzIGxpa2U6CiAgICAg ICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgICA5OTUwOTY1NDEuMjUzNTEu emFpcixTPTE0Mjg1OjIsUwogICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAg ICAjIHdoZXJlICIsUz0xNDI4NSIgaXMgdGhlIHNpemUgb2YgdGhlCiAgICAgICAgICAgICAgICAg ICAgIyBtZXNzYWdlIGluIGJ5dGVzLgogICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAg ICAgICAgICAjIENvdXJpZXIgTWFpbGRyb3AncyBuYW1lcyBhcmUgc2ltaWxhcgogICAgICAgICAg ICAgICAgICAgICMgYnV0IGxhY2sgdGhlICI6MixYWFhYIiBmbGFncyAuIC4gLgogICAgICAgICAg ICAgICAgICAgICMgZXhjZXB0IGZvciBteSBtb2RpZmllZCBNYWlsZHJvcAogICAgICAgICAgICAg ICAgICAgICMgd2hpY2ggY2FuIGRlbGl2ZXIgdGhlbSB3aXRoIGEKICAgICAgICAgICAgICAgICAg ICAjICI6MixUIiAtIGZsYWdnZWQgZm9yIGRlbGV0aW9uLgogICAgICAgICAgICAgICAgICAgICMK ICAgICAgICAgICAgICAgICAgICAjIEkgaGF2ZSBleHRlbmRlZCB0aGUgbG9naWMgb2YgdGhlCiAg ICAgICAgICAgICAgICAgICAgIyBwZXItbWVzc2FnZSBpbm5lciBsb29wIHRvIHN0b3AKICAgICAg ICAgICAgICAgICAgICAjIHNhdmluZyBhIGZpbGUgZm9yIGEgbWVzc2FnZSB3aXRoOgogICAgICAg ICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAjIFN1YmplY3Q6IERPTidUIERFTEVU RSBUSElTIE1FU1NBR0UgLS0gRk9MREVSIElOVEVSTkFMIERBVEEKICAgICAgICAgICAgICAgICAg ICAjCiAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGlzIHRoZSBkdW1teSBtZXNzYWdlLCBhbHdh eXMKICAgICAgICAgICAgICAgICAgICAjIGF0IHRoZSBzdGFydCBvZiBhbiBNYm94IGZvcm1hdAog ICAgICAgICAgICAgICAgICAgICMgbWFpbGJveCBmaWxlIC0gYW5kIGlzIHB1dCB0aGVyZQogICAg ICAgICAgICAgICAgICAgICMgYnkgVVcgSU1BUEQuICBTaW5jZSBxdWl0ZSBhIGZldwogICAgICAg ICAgICAgICAgICAgICMgcGVvcGxlIHdpbGwgdXNlIHRoaXMgZm9yCiAgICAgICAgICAgICAgICAg ICAgIyBjb252ZXJ0aW5nIGZyb20gYSBVVyBzeXN0ZW0sCiAgICAgICAgICAgICAgICAgICAgIyBJ IGZpZ3VyZSBpdCBpcyB3b3J0aCBpdC4KICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAg ICAgICAgICAgIyBJIHdpbGwgbm90IHNhdmUgYW55IHN1Y2ggbWVzc2FnZQogICAgICAgICAgICAg ICAgICAgICMgZmlsZSBmb3IgdGhlIGR1bW15IG1lc3NhZ2UuCiAgICAgICAgICAgICAgICAgICAg IwogICAgICAgICAgICAgICAgICAgICMgUGxhbgogICAgICAgICAgICAgICAgICAgICMgLS0tLQog ICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAjIFdlIHdhbnQgdG8gcmVh ZCB0aGUgZW50aXJlIE1ib3ggZmlsZSwgd2hpbHN0CiAgICAgICAgICAgICAgICAgICAgIyBnb2lu ZyB0aHJvdWdoIGEgbG9vcCBmb3IgZWFjaCBtZXNzYWdlIHdlIGZpbmQuCiAgICAgICAgICAgICAg ICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgV2Ugd2FudCB0byByZWFkIGFsbCB0aGUgaGVh ZGVycyBvZiB0aGUgbWVzc2FnZSwKICAgICAgICAgICAgICAgICAgICAjIHN0YXJ0aW5nIHdpdGgg dGhlICJGcm9tICIgbGluZS4gICBGb3IgdGhhdCAiRnJvbSAiCiAgICAgICAgICAgICAgICAgICAg IyBsaW5lIHdlIHdhbnQgdG8gZ2V0IGEgZGF0ZS4KICAgICAgICAgICAgICAgICAgICAjCiAgICAg ICAgICAgICAgICAgICAgIyBGb3IgYWxsIG90aGVyIGhlYWRlciBsaW5lcywgd2Ugd2FudCB0byBz dG9yZSB0aGVtCiAgICAgICAgICAgICAgICAgICAgIyBpbiAkaGVhZGVycyB3aGlsc3QgcGFyc2lu ZyB0aGVtIHRvIGZpbmQ6CiAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAg ICMgICAxIC0gQW55IGZsYWdzIGluIHRoZSAiU3RhdHVzOiAiIG9yICJYLVN0YXR1czogIiBvcgog ICAgICAgICAgICAgICAgICAgICMgICAgICAgIlgtTW96aWxsYS1TdGF0dXM6ICIgbGluZXMuCiAg ICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgICAyIC0gQSBzdWJqZWN0 IGxpbmUgaW5kaWNhdGluZyB0aGlzIGlzIHRoZSBkdW1teSBtZXNzYWdlCiAgICAgICAgICAgICAg ICAgICAgIyAgICAgICBhdCB0aGUgc3RhcnQgKHR5cGljYWxseSwgYnV0IG5vdCBuZWNlc3Nhcmls eSkgb2YKICAgICAgICAgICAgICAgICAgICAjICAgICAgIHRoZSBNYm94LgogICAgICAgICAgICAg ICAgICAgICMKICAgICAgICAgICAgICAgICAgICAjIE9uY2Ugd2UgcmVhY2ggdGhlIGVuZCBvZiB0 aGUgaGVhZGVycywgd2Ugd2lsbCBjcnVuY2ggYW55CiAgICAgICAgICAgICAgICAgICAgIyBmbGFn cyB3ZSBmb3VuZCB0byBjcmVhdGUgYSBmaWxlIG5hbWUuICBUaGVuLCB1bmxlc3MgdGhpcyBpcwog ICAgICAgICAgICAgICAgICAgICMgdGhlIGR1bW15IG1lc3NhZ2Ugd2UgY3JlYXRlIHRoYXQgZmls ZSBhbmQgd3JpdGUgYWxsIHRoZQogICAgICAgICAgICAgICAgICAgICMgaGVhZGVycyB0byBpdC4K ICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgIyBUaGVuIHdlIGNvbnRp bnVlIHJlYWRpbmcgdGhlIE1ib3gsIGNvbnZlcnRpbmcgIj5Gcm9tICIgdG8KICAgICAgICAgICAg ICAgICAgICAjICJGcm9tICIgYW5kIHdyaXRpbmcgaXQgdG8gdGhlIGZpbGUsIHVudGlsIHdlIHJl YWNoIG9uZSBvZjoKICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgIyAg IDEgLSBBbm90aGVyICJGcm9tICIgbGluZSAoaW5kaWNhdGluZyB0aGUgc3RhcnQgb2YgYW5vdGhl cgogICAgICAgICAgICAgICAgICAgICMgICAgICAgbWVzc2FnZSkuCiAgICAgICAgICAgICAgICAg ICAgIwogICAgICAgICAgICAgICAgICAgICMgb3IKICAgICAgICAgICAgICAgICAgICAjCiAgICAg ICAgICAgICAgICAgICAgIyAgIDIgLSBUaGUgZW5kIG9mIHRoZSBNYm94LgogICAgICAgICAgICAg ICAgICAgICMKICAgICAgICAgICAgICAgICAgICAjIEluIHRoZSBmb3JtZXIgY2FzZSwgd2hpY2gg d2UgZGV0ZWN0IGF0IHRoZSBzdGFydCBvZiB0aGUgbG9vcAogICAgICAgICAgICAgICAgICAgICMg d2UgbmVlZCB0byBjbG9zZSB0aGUgZmlsZSBhbmQgdG91Y2ggaXQgdG8gYWx0ZXIgaXRzIGRhdGUt dGltZS4KICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgIyBJbiB0aGUg bGF0ZXIgY2FzZSwgd2UgYWxzbyBuZWVkIHRvIGNsb3NlIHRoZSBmaWxlIGFuZCB0b3VjaAogICAg ICAgICAgICAgICAgICAgICMgaXQgdG8gYWx0ZXIgaXRzIGRhdGUtdGltZSAtIGJ1dCB0aGlzIGlz IGJleW9uZCB0aGUgZW5kIG9mIHRoZQogICAgICAgICAgICAgICAgICAgICMgbG9vcC4KCgogICAg ICAgICAgICAgICAgICAgICMgVmFyaWFibGVzCiAgICAgICAgICAgICAgICAgICAgIyAtLS0tLS0t LS0KCiAgICAgICAgbXkgJG1lc3NhZ2Vjb3VudCA9IDA7CgogICAgICAgICAgICAgICAgICAgICMg Rm9yIGdlbmVyYXRpbmcgdW5pcXVlIGZpbGVuYW1lcyBmb3IKICAgICAgICAgICAgICAgICAgICAj IGVhY2ggbWVzc2FnZS4gIEluaXRpYWxpc2UgaXQgaGVyZSB3aXRoCiAgICAgICAgICAgICAgICAg ICAgIyBudW1lcmljIHRpbWUgaW4gc2Vjb25kcyBzaW5jZSAxOTcwLgogICAgICAgIG15ICR1bmlx dWUgPSB0aW1lOwoKICAgICAgICAgICAgICAgICAgICAjIE5hbWUgb2YgbWVzc2FnZSBmaWxlIHRv IGRlbGV0ZSBpZiB3ZSBmb3VuZCB0aGF0CiAgICAgICAgICAgICAgICAgICAgIyBpdCB3YXMgY3Jl YXRlZCBieSByZWFkaW5nIHRoZSBNYm94IGR1bW15IG1lc3NhZ2UuCgogICAgICAgIG15ICRkZWxl dGVkdW1teSA9ICcnOwoKICAgICAgICAgICAgICAgICAgICAjIFRvIHN0b3JlIHRoZSBjb21wbGV0 ZSAiRnJvbSAoYWRkcmVzcykgKGRhdGUtdGltZSkKICAgICAgICAgICAgICAgICAgICAjIHdoaWNo IGRlbGluZWF0ZXMgdGhlIHN0YXJ0IG9mIGVhY2ggbWVzc2FnZQogICAgICAgICAgICAgICAgICAg ICMgaW4gdGhlIE1ib3gKICAgICAgICBteSAkZnJvbWxpbmUgPSAnJzsKCgogICAgICAgICAgICAg ICAgICAgICMgU2V0IHRvIDEgd2hlbiB3ZSBhcmUgcmVhZGluZyB0aGUgaGVhZGVyIGxpbmVzLAog ICAgICAgICAgICAgICAgICAgICMgaW5jbHVkaW5nIHRoZSAiRnJvbSAiIGxpbmUuCiAgICAgICAg ICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgMCBtZWFucyB3ZSBhcmUgcmVhZGlu ZyB0aGUgbWVzc2FnZSBib2R5IGFuZCBsb29raW5nCiAgICAgICAgICAgICAgICAgICAgIyBmb3Ig YW5vdGhlciAiRnJvbSAiIGxpbmUuCgogICAgICAgIG15ICRpbmhlYWRlcnMgPSAwOwoKICAgICAg ICAgICAgICAgICAgICAjIFZhcmlhYmxlIHRvIGhvbGQgYWxsIGhlYWRlcnMgKGFwYXJ0IGZyb20K ICAgICAgICAgICAgICAgICAgICAjIHRoZSBmaXJzdCBsaW5lICJGcm9tIC4uLi4iIHdoaWNoIGlz IG5vdAogICAgICAgICAgICAgICAgICAgICMgcGFydCBvZiB0aGUgbWVzc2FnZSBpdHNlbGYuCiAg ICAgICAgbXkgJGhlYWRlcnMgPSAnJzsKCiAgICAgICAgICAgICAgICAgICAgIyBWYXJpYWJsZSB0 byBob2xkIHRoZSBhY2N1bXVsYXRlZCBjaGFyYWN0ZXJzCiAgICAgICAgICAgICAgICAgICAgIyB3 ZSBmaW5kIGluIGhlYWRlciBsaW5lcyBvZiB0aGUgdHlwZToKICAgICAgICAgICAgICAgICAgICAj CiAgICAgICAgICAgICAgICAgICAgIyAgICBTdGF0dXM6CiAgICAgICAgICAgICAgICAgICAgIyAg ICBYLVN0YXR1czoKICAgICAgICAgICAgICAgICAgICAjICAgIFgtTW96aWxsYS1TdGF0dXM6CiAg ICAgICAgICAgICAgICAgICAgIyAgICBYLUV2b2x1dGlvbjoKICAgICAgICBteSAkZmxhZ3MgPSAn JzsKCiAgICAgICAgICAgICAgICAgICAgIyBUbyBidWlsZCB0aGUgZmlsZSBuYW1lIGZvciB0aGUg bWVzc2FnZSBpbi4KICAgICAgICBteSAkbWVzc2FnZWZuID0gJyc7CgoKICAgICAgICAgICAgICAg ICAgICAjIFRoZSBkYXRlIHN0cmluZyBmcm9tIHRoZSAiRnJvbSAiIGxpbmUgb2YgZWFjaAogICAg ICAgICAgICAgICAgICAgICMgbWVzc2FnZSB3aWxsIGJlIHdyaXR0ZW4gaGVyZSAtIGFuZCB1c2Vk IGJ5CiAgICAgICAgICAgICAgICAgICAgIyB0b3VjaCB0byBhbHRlciB0aGUgZGF0ZS10aW1lIG9m IGVhY2ggbWVzc2FnZQogICAgICAgICAgICAgICAgICAgICMgZmlsZS4gIFB1dCBub24tZGF0ZSB0 ZXh0IGhlcmUgdG8gbWFrZSBpdAogICAgICAgICAgICAgICAgICAgICMgc3BpdCB0aGUgZHVtbXkg aWYgbXkgY29kZSBmYWlscyB0byBmaW5kIGEKICAgICAgICAgICAgICAgICAgICAjIGRhdGUgdG8g d3JpdGUgaW50byB0aGlzLgoKICAgICAgICBteSAkcmVjZWl2ZWRhdGUgPSAnQm9ndXMnOwoKCSMg VGhlIHN1YmplY3Qgb2YgdGhlIG1lc3NhZ2UKCW15ICRzdWJqZWN0ID0gJyc7CgoJbXkgJHByZXZp b3VzX2xpbmVfd2FzX2VtcHR5ID0gMTsKCiAgICAgICAgICAgICAgICAgICAgIyBXZSByZWNvcmQg dGhlIG1lc3NhZ2Ugc3RhcnQgbGluZSBoZXJlLCBmb3IgZXJyb3IKICAgICAgICAgICAgICAgICAg ICAjIHJlcG9ydGluZy4KICAgICAgICBteSAkc3RhcnRsaW5lOwoKICAgICAgICAgICAgICAgICAg ICAjIElmIGRlZmluZWQsIHdlIHVzZSB0aGlzIGFzIHRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gdGhl CiAgICAgICAgICAgICAgICAgICAgIyBtZXNzYWdlIGJvZHkgcmF0aGVyIHRoYW4gbG9va2luZyBm b3IgYSAvXkZyb20gLyBsaW5lLgogICAgICAgIG15ICRjb250ZW50bGVuZ3RoOwoKCQkJICAgICMg QSBGcm9tIGxpbmVzIGNhbiBlaXRoZXIgb2NjdXIgYXMgdGhlIGZpcnN0CgkJCSAgICAjIGxpbmUg b2YgYSBmaWxlLCBvciBhZnRlciBhbiBlbXB0eSBsaW5lLgoJCQkgICAgIyBNb3N0IG1haWwgc3lz dGVtcyB3aWxsIHF1b3RlIGFsbCBGcm9tIGxpbmVzCgkJICAgICAgICAgICAgIyBhcHBlYXJpbmcg aW4gdGhlIG1lc3NhZ2UsIGJ1dCBzb21lIHdpbGwgb25seQoJCQkgICAgIyBkbyBpdCB3aGVuIG5l Y2Vzc2FyeS4KCQkJICAgICMgU2luY2Ugd2UgaW5pdGlhbGlzZSB0aGUgdmFyaWFibGUgdG8gdHJ1 ZSwKCQkJICAgICMgd2UgZG9uJ3QgbmVlZCB0byBjaGVjayBmb3IgYmVnaW5uaW5nIG9mIGZpbGUu CgogICAgICAgIHdoaWxlKDxNQk9YPikKICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjIGV4Y2hhbmdlIHBvc3NpYmxlIFdpbmRvd3MgRU9MIChDUkxGKSB3aXRoIFVuaXggRU9M IChMRikKICAgICAgICAgICAgJF8gPX4gcy9cclxuJC9cbi87CgogICAgICAgICAgICBpZiAoIC9e RnJvbSAvCgkJJiYgJHByZXZpb3VzX2xpbmVfd2FzX2VtcHR5CgkJJiYgKCFkZWZpbmVkICRjb250 ZW50bGVuZ3RoKSAKCSAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICMgV2UgYXJlIHJlYWRpbmcgdGhlICJGcm9tICIgbGluZSB3aGljaCBoYXMgYW4KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICMgZW1haWwgYWRkcmVzcyBmb2xsb3dlZCBieSBhIHJl Y2VpdmUgZGF0ZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVHVybiBvbiB0aGUgJGlu aGVhZGVycyBmbGFnIHVudGlsIHdlIHJlYWNoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAj IHRoZSBlbmQgb2YgdGhlIGhlYWRlcnMuCgogICAgICAgICAgICAgICAgJGluaGVhZGVycyA9IDE7 CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyByZWNvcmQgdGhlIG1lc3NhZ2Ugc3RhcnQg bGluZQoKICAgICAgICAgICAgICAgICRzdGFydGxpbmUgPSAkLjsKCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAjIElmIHRoaXMgaXMgbm90IHRoZSBmaXJzdCBydW4gdGhyb3VnaCB0aGUgbG9v cAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB0aGVuIHRoaXMgbWVhbnMgd2UgaGF2ZSBh bHJlYWR5IGJlZW4gd29ya2luZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvbiBhIG1l c3NhZ2UuCgogICAgICAgICAgICAgICAgaWYgKCRtZXNzYWdlY291bnQgPiAwKQogICAgICAgICAg ICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBJZiBzbywgdGhlbiBjbG9zZSB0 aGF0IG1lc3NhZ2UgZmlsZSBhbmQgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB1 c2UgdXRpbWUgdG8gY2hhbmdlIGl0cyBkYXRlLXRpbWUuCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE5vdGUgdGhpcyBjb2RlIHNob3Vs ZCBiZSBkdXBsaWNhdGVkIHRvIGRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRoZSBz YW1lIHRoaW5nIGF0IHRoZSBlbmQgb2YgdGhlIHdoaWxlIGxvb3AKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICMgc2luY2Ugd2UgbXVzdCBjbG9zZSBhbmQgdG91Y2ggdGhlIGZpbmFsIG1lc3Nh Z2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZmlsZSB3ZSB3ZXJlIHdyaXRpbmcgd2hl biB3ZSBoaXQgdGhlIGVuZCBvZiB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgTWJv eCBmaWxlLgoKICAgICAgICAgICAgICAgICAgICBjbG9zZSAoT1VUKTsKCQkgICAgaWYgKCRtZXNz YWdlZm4gbmUgJycpIHsKCQkJbXkgJHQgPSBzdHIydGltZSgkcmVjZWl2ZWRhdGUpOwoJCQl1dGlt ZSAkdCwgJHQsICRtZXNzYWdlZm47CgkJICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAjIEJlY2F1c2Ugd2Ugb3BlbmVkIHRoZSBNYm94IGZpbGUgd2l0 aG91dCBhbnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdmFyaWFibGUsIEkgdGhpbmsg dGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgaXRzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAj IGN1cnJlbnQgbGluZSBpbiBQZXJsJ3MgZGVmYXVsdCB2YXJpYWJsZSAiJF8iLgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgIyBTbyBhbGwgc29ydHMgb2YgcGF0dGVybiBtYXRjaGluZyBtYWdp YyB3b3JrcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBkaXJlY3RseSBvbiBpdC4KCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAjIFdlIGFyZSBjdXJyZW50bHkgcmVhZGluZyB0aGUg Zmlyc3QgbGluZSBzdGFydGluZyB3aXRoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICJG cm9tICIgd2hpY2ggY29udGFpbnMgdGhlIGRhdGUgd2Ugd2FudC4KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVGhpcyB3aWxsIGJlIG9m IHRoZSBmb3JtOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgIyAgICAgRnJvbSBkZHVja0B0ZXN0Lm9yZyBXZWQgTm92IDI0IDExOjA1OjM1 IDE5OTkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICMgYXQgbGVhc3Qgd2l0aCBVVy1JTUFQLgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgIwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBIb3dldmVyLCBJIGRpZCBmaW5kIGEg bmFzdHkgZXhjZXB0aW9uIHRvIHRoaXMgaW4gbXkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICMgdGVzdHMsIG9mIHRoZSBmb3JtOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIyAgICJib3VuY2UtTXVzaWNOZXdzbGV0dGVyIDUtcnc9 dGVzdC5vcmciQGFubm91bmNlMi5tcDMuY29tCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAj CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFRoaXMgbWFrZXMgaXQgdHJpY2tpZXIgdG8g Z2V0IHJpZCBvZiB0aGUgZW1haWwgYWRkcmVzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICMgYnV0IEkgZGlkIGZpbmQgYSB3YXkuICBJIGNhbid0IHJ1bGUgb3V0IHRoYXQgdGhlcmUgd291 bGQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYmUgc29tZSBhZGRyZXNzIGxpa2UgdGhp cyB3aXRoIGFuICJAIiBpbiB0aGUgcXVvdGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAj IHBvcnRpb24gdG9vLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgIyBVbmZvcnR1bmF0ZWx5LCB0ZXN0aW5nIHdpdGggYW4gb2xkIEluYm94 IE1ib3ggZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSSBhbHNvIGZvdW5kIGFu IGluc3RhbmNlIHdoZXJlIHRoZSBlbWFpbCBhZGRyZXNzCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjIGhhZCBubyBAIHNpZ24gYXQgYWxsLiAgSXQgd2FzIGp1c3QgYW4gZW1haWwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICMgYWNjb3VudCBuYW1lLCB3aXRoIG5vIGhvc3QuCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEkg Y291bGQgc2VhcmNoIGZvciB0aGUgZGF5IG9mIHRoZSB3ZWVrLiAgSWYgSSBza2lwcGVkCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjIGF0IGxlYXN0IG9uZSB3b3JkIG9mIG5vbi13aGl0ZXNw YWNlICgxIG9yIG1vcmUgY29udGlndW91cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBu b24td2hpdGVzcGFjZSBjaGFyYWN0ZXJzKSB0aGVuIHNlYXJjaGVkIGZvciBhIGRheSBvZgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIyB0aGUgd2VlaywgdGhlbiBJIHNob3VsZCBiZSBhYmxl IHRvIGF2b2lkIGFsbW9zdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBldmVyeSBpbnN0 YW5jZSBvZiBhIGRheSBvZiB0aGUgd2VlayBhcHBlYXJpbmcgaW4KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICMgdGhlIGVtYWlsIGFkZHJlc3MuCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAjCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIERvIEkgbmVlZCBhIGZhaWxzYWZlIGFy cmFuZ2VtZW50IHRvIHByb3ZpZGUgc29tZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBv dGhlciBkYXRlIHRvIHRvdWNoIGlmIEkgZG9uJ3QgZ2V0IHdoYXQgc2VlbXMgbGlrZQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgIyBhIGRhdGUgaW4gbXkgcmVzdWx0aW5nIHN0cmluZz8gIEZv ciBub3csIG5vLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgIyBJIHdpbGwgdGFrZSBvbmUgYXBwcm9hY2ggaWYgdGhlcmUgaXMgYW4gQCBp biB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgIkZyb20gIiBsaW5lIGFuZCBhbm90 aGVyIChqdXN0IHNraXAgdGhlIGZpcnN0IHdvcmQKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICMgYWZ0ZXIgIkZyb20gIikgaWYgdGhlcmUgaXMgbm8gQCBpbiB0aGUgbGluZS4KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSWYgSSBr bmV3IG1vcmUgYWJvdXQgUGVybCBJIHdvdWxkIHByb2JhYmx5IGRvIGl0IGluCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjIGEgbW9yZSBlbGVnYW50IHdheS4KCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAjIENvcHkgdGhlIGN1cnJlbnQgbGluZSBpbnRvICRmcm9tbGluZS4KCiAgICAg ICAgICAgICAgICAkZnJvbWxpbmUgPSAkXzsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAj IE5vdyBnZXQgcmlkIG9mIHRoZSAiRnJvbSAiLiAiID1+IHMiIG1lYW5zIHN1YnN0aXR1dGUuCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAjIEZpbmQgdGhlIHdvcmQgIkZyb20gIiBhdCB0aGUg c3RhcnQgb2YgdGhlIGxpbmUgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHJlcGxh Y2UgaXQgd2l0aCBub3RoaW5nLiAgVGhlIG5vdGhpbmcgaXMgd2hhdCBpcwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgIyBiZXR3ZWVuIHRoZSBzZWNvbmQgYW5kIHRoaXJkIHNsYXNoLgoKICAg ICAgICAgICAgICAgICRmcm9tbGluZSA9fiBzL15Gcm9tIC8vIDsKCgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgIyBMaWtld2lzZSBnZXQgcmlkIG9mIHRoZSBlbWFpbCBhZGRyZXNzLgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGZpcnN0IHNlY3Rpb24gaXMgaWYgd2UgZGV0 ZXJtaW5lIHRoZXJlIGlzIG9uZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3IgbW9y ZSAuIC4gLiApICJAIiBjaGFyYWN0ZXJzIGluIHRoZSBsaW5lLCB3aGljaAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgIyB3b3VsZCBub3JtYWxseSBiZSB0aGUgY2FzZS4KCiAgICAgICAgICAg ICAgICBpZiAoJGZyb21saW5lID1+IG0vQC8pCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjIFRoZSBsaW5lIGhhcyBhdCBsZWFzdCBvbmUgIkAiIGluIGl0LCBz byB3ZSBhc3N1bWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdGhpcyBpcyBpbiB0aGUg bWlkZGxlIG9mIGFuIGVtYWlsIGFkZHJlc3MuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAj CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIElmIHRoZSBlbWFpbCBhZGRyZXNzIGhhZCBu byBzcGFjZXMsIHRoZW4gd2UgY291bGQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZ2V0 IHJpZCBvZiB0aGUgd2hvbGUgdGhpbmcgYnkgc2VhcmNoaW5nIGZvciBhbnkgbnVtYmVyCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjIG9mIG5vbi13aGl0ZXNwYWNlIGNoYXJhY3RlcnMgKFxT KSBjb250aWd1b3VzbHksIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB0aGVuIEkg dGhpbmsgYSBzcGFjZS4gIFN1YnNpdHV0ZSBub3RoaW5nIGZvciB0aGlzLgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAkZnJvbWxp bmUgPX4gcy8oXFMpKyAvLyAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjIEJ1dCB3ZSBuZWVkIHNvbWV0aGluZyB0byBtYXRjaCBh bnkgbnVtYmVyIG9mIG5vbi1ACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGNoYXJhY3Rl cnMsIHRoZW4gdGhlICJAIiBhbmQgdGhlbiBhbGwgdGhlIG5vbi13aGl0ZXNwYWNlCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAjIGNoYXJhY3RlcnMgZnJvbSB0aGVyZSAod2hpY2ggdGFrZXMg dXMgdG8gdGhlIGVuZCBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAidGVzdC5vcmci KSBhbmQgdGhlbiB0aGUgc3BhY2UgZm9sbG93aW5nIHRoYXQuCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEEgdHV0b3JpYWwgb24gcmVn dWxhciBleHByZXNzaW9ucyBpczoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICMgICAgaHR0cDovL3d3dy5wZXJsZG9jLmNvbS9wZXJsNS42 LjEvcG9kL3BlcmxyZXR1dC5odG1sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjIEdldCByaWQgb2YgYWxsIG5vbi1AIGNoYXJhY3RlcnMg dXAgdG8gdGhlIGZpcnN0ICJAIjoKCiAgICAgICAgICAgICAgICAgICAgJGZyb21saW5lID1+IHMv W15AXSsvLzsKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBHZXQgcmlkIG9mIHRoZSAi QCIuCgogICAgICAgICAgICAgICAgICAgICRmcm9tbGluZSA9fiBzL0AvLzsKICAgICAgICAgICAg ICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSWYgdGhlcmUgd2FzIGFuICJAIiBp biB0aGUgbGluZSwgdGhlbiB3ZSBoYXZlIG5vdwogICAgICAgICAgICAgICAgICAgICAgICAgICAg IyByZW1vdmVkIHRoZSBmaXJzdCBvbmUgKGxldHMgaG9wZSB0aGVyZSBhcmVuJ3QgbW9yZSEpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFuZCBldmVyeXRoaW5nIHdoaWNoIHByZWNlZGVk IGl0LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIwoJCQkgICAgIyB3ZSBub3cgcmVtb3Zl IGVpdGhlciBzb21ldGhpbmcgbGlrZQoJCQkgICAgIyAnKGZvbyBiYXIpJy4gZWcuICcobm8gbWFp bCBhZGRyZXNzKScsCgkJCSAgICAjIG9yIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlICdAJyB1cCB0byB0 aGUgdHJhaWxpbmcKCQkJICAgICMgdGltZXpvbmUKCQkJICAgICMKCQkJICAgICMgRklYTUU6IGFs bCB0aG9zZSByZWdleHAgc2hvdWxkIGJlIGNvbWJpbmVkIHRvIGp1c3Qgb25lIHNpbmdsZSBvbmUK CgkJJGZyb21saW5lID1+IHMvKFwoKFxTKnwgKStcKXxcUyspICovLzsKCgkJY2hvbXAgJGZyb21s aW5lOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgU3Rhc2ggdGhlIGRhdGUtdGltZSBm b3IgbGF0ZXIgdXNlLiAgV2Ugd2lsbCB1c2UgaXQKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICMgdG8gdG91Y2ggdGhlIGZpbGUgYWZ0ZXIgd2UgaGF2ZSBjbG9zZWQgaXQuCgogICAgICAgICAg ICAgICAgJHJlY2VpdmVkYXRlID0gJGZyb21saW5lOwoJCQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgIyBEZWJ1Z2dpbmcgbGluZXM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAjIHByaW50ICIkcmVjZWl2ZWRhdGUgaXMgdGhlIHJl Y2VpdmVkYXRlIG9mIG1lc3NhZ2UgJG1lc3NhZ2Vjb3VudC5cbiI7CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAjICRyZWNlaXZlZGF0ZSA9ICJXZWQgTm92IDI0IDExOjA1OjM1IDE5OTkiOwog ICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICAgICAgICAg IyBUbyBsb29rIGF0IHRoZSBleGFjdCBkYXRlLXRpbWUgb2YgZmlsZXM6CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgbHMgLWxGYSAt LWZ1bGwtdGltZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgIyBFbmQgb2YgaGFuZGxpbmcgdGhlICJGcm9tICIgbGluZS4KICAgICAgICAg ICAgfQoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE5vdyBwcm9jZXNzIGhlYWRlciBs aW5lcyB3aGljaCBhcmUgbm90IHRoZSAiRnJvbSAiIGxpbmUuCgogICAgICAgICAgICBpZiAoICAg ICgkaW5oZWFkZXJzIGVxIDEpCiAgICAgICAgICAgICAgICAgJiYgKCEgL15Gcm9tIC8pCiAgICAg ICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBO b3cgd2UgYXJlIHJlYWRpbmcgdGhlIGhlYWRlciBsaW5lcyBhZnRlciB0aGUgIkZyb20gIiBsaW5l LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBLZWVwIGxvb2tpbmcgZm9yIHRoZSBibGFu ayBsaW5lIHdoaWNoIGluZGljYXRlcyB0aGUgZW5kIG9mIHRoZQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgIyBoZWFkZXJzLgoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICIuPSIg bWVhbnMgYXBwZW5kIHRoZSBjdXJyZW50IGxpbmUgdG8gdGhlICRoZWFkZXJzCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjIHZhcmlhYmxlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAg IwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBGb3Igc29tZSByZWFzb24sIEkgd2FzIGdl dHRpbmcgdHdvIGJsYW5rIGxpbmVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGF0IHRo ZSBlbmQgb2YgdGhlIGhlYWRlcnMsIHJhdGhlciB0aGFuIG9uZSwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICMgc28gSSBkZWNpZGVkIG5vdCB0byByZWFkIGluIHRoZSBibGFuayBsaW5lCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAjIHdoaWNoIHRlcm1pbmF0ZXMgdGhlIGhlYWRlcnMu CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAjIERlbGV0ZSB0aGUgInVubGVzcyAoJF8gZXEgIlxuIikiIHRvIGdldCByaWQKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICMgb2YgdGhpcyBrbHVkZ2UuCgogICAgICAgICAgICAgICAgJGhl YWRlcnMgLj0gJF8gdW5sZXNzICgkXyBlcSAiXG4iKTsKCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjIE5vdyBzY2FuIHRoZSBsaW5lIGZvciB2YXJpb3VzIHN0YXR1cyBmbGFncwogICAgICAg ICAgICAgICAgICAgICAgICAgICAgIyBhbmQgdG8gZmluZSB0aGUgU3ViamVjdCBsaW5lLgoKICAg ICAgICAgICAgICAgICRmbGFncyAgLj0gJDEgaWYgL15TdGF0dXM6IChbQS1aXSspLzsKICAgICAg ICAgICAgICAgICRmbGFncyAgLj0gJDEgaWYgL15YLVN0YXR1czogKFtBLVpdKykvOwogICAgICAg ICAgICAgICAgaWYgKC9eWC1Nb3ppbGxhLVN0YXR1czogKFswLTlhLWZdezR9KS9pKQogICAgICAg ICAgICAgICAgewogICAgICAgICAgICAgICAgICAkZmxhZ3MgLj0gJ1InIGlmIChoZXgoJDEpICYg MHgwMDAxKTsKICAgICAgICAgICAgICAgICAgJGZsYWdzIC49ICdBJyBpZiAoaGV4KCQxKSAmIDB4 MDAwMik7CiAgICAgICAgICAgICAgICAgICRmbGFncyAuPSAnRCcgaWYgKGhleCgkMSkgJiAweDAw MDgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYoL15YXC1Fdm9sdXRpb246 XHMrXHd7OH1cLShcd3s0fSkvb2kpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg ICAgJGIgPSBwYWNrKCJINCIsICQxKTsgI3BhY2sgaXQgYXMgNCBkaWdpdCBoZXggKDB4MDAwMCkK ICAgICAgICAgICAgICAgICAgICAkYiA9IHVucGFjaygiQjMyIiwgJGIpOyAjdW5wYWNrIGludG8g Yml0IHN0cmluZwoKICAgICAgICAgICAgICAgICAgICAjICJ1c3VhbGx5IiBvbmx5IHRoZSByaWdo dCBtb3N0IHNpeCBiaXRzIGFyZSB1c2VkCiAgICAgICAgICAgICAgICAgICAgIyBob3dldmVyLCBJ IGhhdmUgY29tZSBhY3Jvc3MgYSBzZXZlbnRoIGJpdCBpbgogICAgICAgICAgICAgICAgICAgICMg YWJvdXQgMTUgKG91dCBvZiAxMCwwMDApIG1lc3NhZ2VzIHdpdGggdGhpcyBiaXQKICAgICAgICAg ICAgICAgICAgICAjIGFjdGl2YXRlZC4KICAgICAgICAgICAgICAgICAgICAjIEkgaGF2ZSBub3Qg Zm91bmQgYW55IGRvY3VtZW50YXRpb24gaW4gdGhlIHNvdXJjZS4KICAgICAgICAgICAgICAgICAg ICAjIElmIHlvdSBmaW5kIG91dCB3aGF0IGl0IGRvZXMsIHBsZWFzZSBsZXQgbWUga25vdy4KCiAg ICAgICAgICAgICAgICAgICAgIyBOb3RlczoKICAgICAgICAgICAgICAgICAgICAjICAgRXZvbHV0 aW9uIDEuNCBkb2VzIG1hcmsgZm9yd2FyZGVkIG1lc3NhZ2VzLgogICAgICAgICAgICAgICAgICAg ICMgICBUaGUgc2l4dGggYml0IGlzIHRvIGRlbm90ZSBhbiBhdHRhY2htZW50CgogICAgICAgICAg ICAgICAgICAgICRmbGFncyAuPSAnQScgaWYoJGIgPX4gL1swMV17MTV9MS8pOyAjcmVwbGllZAog ICAgICAgICAgICAgICAgICAgICRmbGFncyAuPSAnRCcgaWYoJGIgPX4gL1swMV17MTR9MVswMV17 MX0vKTsgI2RlbGV0ZWQKICAgICAgICAgICAgICAgICAgICAkZmxhZ3MgLj0gJ1QnIGlmKCRiID1+ IC9bMDFdezEzfTFbMDFdezJ9Lyk7ICNkcmFmdAogICAgICAgICAgICAgICAgICAgICRmbGFncyAu PSAnRicgaWYoJGIgPX4gL1swMV17MTJ9MVswMV17M30vKTsgI2ZsYWdnZWQKICAgICAgICAgICAg ICAgICAgICAkZmxhZ3MgLj0gJ1InIGlmKCRiID1+IC9bMDFdezExfTFbMDFdezR9Lyk7ICNzZWVu L3JlYWQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRzdWJqZWN0ID0gJDEgaWYg L15TdWJqZWN0OiAoLiopJC87CgkJaWYgKCR1c2VfY2wgZXEgMSkKCQl7CiAgICAgICAgICAgICAg ICAJJGNvbnRlbnRsZW5ndGggPSAkMSBpZiAvXkNvbnRlbnQtTGVuZ3RoOiAoXGQrKSQvOwoJCX0K CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE5vdyBsb29rIG91dCBmb3IgdGhlIGVuZCBv ZiB0aGUgaGVhZGVycyAtIGEgYmxhbmsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbGlu ZS4gIFdoZW4gd2UgZmluZCBpdCwgY3JlYXRlIHRoZSBmaWxlIG5hbWUgYW5kCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjIGFuYWx5c2UgdGhlIFN1YmplY3QgbGluZS4KCiAgICAgICAgICAg ICAgICBpZiAoJF8gZXEgIlxuIikKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICMgV2UgYXJlIGF0IHRoZSBlbmQgb2YgdGhlIGhlYWRlcnMuICBTZXQgdGhlCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAjICRpbmhlYWRlcnMgZmxhZyBiYWNrIHRvIDAuCgog ICAgICAgICAgICAgICAgICAgICRpbmhlYWRlcnMgPSAwOwoKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICMgSW5jbHVkZSB0aGUgY3VycmVudCBuZXdsaW5lIGluIHRoZSBjb250ZW50IGxlbmd0 aAoKICAgICAgICAgICAgICAgICAgICArKyRjb250ZW50bGVuZ3RoIGlmIGRlZmluZWQgJGNvbnRl bnRsZW5ndGg7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBDcmVhdGUgdGhlIGZpbGUg bmFtZSBmb3IgdGhlIGN1cnJlbnQgbWVzc2FnZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQSBzaW1wbGUgdmVyc2lvbiBvZiB0aGlz IHdvdWxkIGJlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgIyAgICRtZXNzYWdlZm4gPSAiY3VyLyR1bmlxdWUuJG1lc3NhZ2Vjb3VudC5t Ym94OjIsIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICMgVGhpcyB3b3VsZCBjcmVhdGUgbmFtZXMgd2l0aCAkbWVzc2FnZWNvdW50IHZh bHVlcyBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAxLCAyLCBldGMuICBCdXQgZm9y IG5lYXRuZXNzIHdoZW4gbG9va2luZyBhdCBhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAj IGRpcmVjdG9yeSBvZiBzdWNoIG1lc3NhZ2VzLCBzb3J0ZWQgYnkgZmlsZW5hbWUsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAjIEkgd2FudCB0byBoYXZlIGxlYWRpbmcgemVyb2VzIG9uIG1l c3NhZ2UgY291bnQsIHNvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRoYXQgdGhleSB3 b3VsZCBiZSAwMDAwMDEgZXRjLiAgVGhpcyBtYWtlcyB0aGVtCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAjIGFwcGVhciBpbiBtZXNzYWdlIG9yZGVyIHJhdGhlciB0aGFuIDEgYmVpbmcgYWZ0 ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgMTkgZXRjLiAgU28gdGhpcyBpcyBnb29k IGZvciB1cCB0byA5OTksOTk5IG1lc3NhZ2VzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAj IGluIGEgbWFpbGJveC4gIEl0IGlzIGEgY29zbWV0aWMgbWF0dGVyIGZvciBhIHBlcnNvbgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIyBsb29raW5nIGludG8gdGhlIE1haWxkaXIgZGlyZWN0 b3J5IG1hbnVhbGx5LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBUbyBkbyB0aGlzLCB1 c2Ugc3ByaW50ZiBpbnN0ZWFkIHdpdGggIiUwNmQiIGZvcgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgIyA2IGNoYXJhY3RlcnMgb2YgemVyby1wYWRkaW5nOgoKICAgICAgICAgICAgCQkkbWVz c2FnZWZuID0gc3ByaW50ZiAoImN1ci8lZC4lMDZkLm1ib3g6MiwiLCAkdW5pcXVlLCAkbWVzc2Fn ZWNvdW50KSA7CgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQXBwZW5kIGZsYWcgY2hh cmFjdGVycyB0byB0aGUgZW5kIG9mIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBm aWxlbmFtZSwgYWNjb3JkaW5nIHRvIGZsYWcgY2hhcmFjdGVycwogICAgICAgICAgICAgICAgICAg ICAgICAgICAgIyBjb2xsZWN0ZWQgZnJvbSB0aGUgbWVzc2FnZSBoZWFkZXJzCgogICAgICAgICAg ICAgICAgICAgICRtZXNzYWdlZm4gLj0gJ0YnIGlmICRmbGFncyA9fiAvRi87ICMgRmxhZ2dlZC4K ICAgICAgICAgICAgICAgICAgICAkbWVzc2FnZWZuIC49ICdSJyBpZiAkZmxhZ3MgPX4gL0EvOyAj IFJlcGxpZWQgdG8uCiAgICAgICAgICAgICAgICAgICAgJG1lc3NhZ2VmbiAuPSAnUycgaWYgJGZs YWdzID1+IC9SLzsgIyBTZWVuIG9yIFJlYWQuCiAgICAgICAgICAgICAgICAgICAgJG1lc3NhZ2Vm biAuPSAnVCcgaWYgJGZsYWdzID1+IC9ELzsgIyBUYWdnZWQgZm9yIGRlbGV0aW9uLgoKCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjIE9wZW5zIGZpbGVuYW1lICRtZXNzYWdlZm4gZm9yIG91 dHB1dCAoPikgd2l0aCBmaWxlaGFuZGxlIE9VVC4KCiAgICAgICAgICAgICAgICAgICAgb3BlbihP VVQsICI+JG1lc3NhZ2VmbiIpIG9yIGRpZSgiRmF0YWw6IHVuYWJsZSB0byBjcmVhdGUgbmV3IG1l c3NhZ2UgJG1lc3NhZ2VmbiIpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQ291bnQg dGhlIG1lc3NhZ2VzLgoKICAgICAgICAgICAgICAgICAgICAkbWVzc2FnZWNvdW50Kys7CgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIyBPbmx5IGZvciB0aGUgZmlyc3QgbWVzc2FnZSwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICMgY2hlY2sgdG8gc2VlIGlmIGl0IGlzIGEgZHVtbXku CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIERlbGV0ZSB0aGUgbWVzc2FnZSBmaWxlIHdl CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGp1c3QgY3JlYXRlZCBpZiBpdCB3YXMgZm9y IHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBkdW1teSBtZXNzYWdlIGF0IHRoZSBz dGFydAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvZiB0aGUgTWJveC4KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIHNl YXJjaCB0ZXJtcyBhcyByZXF1aXJlZC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVGhl IGxhc3QgMiBsaW5lcyBhcmUgZm9yIHJlbnQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAj CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICJtIiBtZWFucyBtYXRjaCB0aGUgcmVndWxh ciBleHByZXNzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBidXQgd2UgY2FuIGRv IHdpdGhvdXQgaXQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAjIERvIEkgbmVlZCB0byBlc2NhcGUgdGhlICcgaW4gIkRPTidUIj8KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICMgSSBkaWRuJ3QgaW4gdGhlIG9yaWdpbmFsIHZlcnNp b24uCgogICAgICAgICAgICAgICAgICAgIGlmICggICAoKCRtZXNzYWdlY291bnQgPT0gMSkgJiYg ZGVmaW5lZCgkc3ViamVjdCkpCiAgICAgICAgICAgICAgICAgICAgICAgICYmICgkc3ViamVjdCA9 fiBtL15ET04nVCBERUxFVEUgVEhJUyBNRVNTQUdFIC0tIEZPTERFUiBJTlRFUk5BTCBEQVRBLykK ICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAg ICAgICAgICAgICAgICAgICAgIyBTdGFzaCB0aGUgZmlsZSBuYW1lIG9mIHRoZSBkdW1teSBtZXNz YWdlIHNvIHdlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGNhbiBkZWxldGUgaXQgbGF0 ZXIuCgogICAgICAgICAgICAgICAgICAgICAgICAkZGVsZXRlZHVtbXkgPSAiJG1lc3NhZ2VmbiI7 CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgUHJp bnQgdGhlIGNvbGxlY3RlZCBoZWFkZXJzIHRvIHRoZSBtZXNzYWdlIGZpbGUuCgogICAgICAgICAg ICAgICAgICAgIHByaW50IE9VVCAiJGhlYWRlcnMiOwoKCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjIENsZWFyICRoZWFkZXJzIGFuZCAkZmxhZ3MgcmVhZHkgZm9yIHRoZSBuZXh0IG1lc3Nh Z2UuCgogICAgICAgICAgICAgICAgICAgICRoZWFkZXJzID0gJyc7CiAgICAgICAgICAgICAgICAg ICAgJGZsYWdzID0gJyc7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBFbmQgb2YgcHJv Y2Vzc2luZyB0aGUgaGVhZGVycyBvbmNlIHdlIGZvdW5kIHRoZQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgIyBibGFuayBsaW5lIHdoaWNoIHRlcm1pbmF0ZWQgdGhlbQogICAgICAgICAgICAg ICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgRW5kIG9mIGRlYWxpbmcgd2l0aCB0 aGUgaGVhZGVycy4KICAgICAgICAgICAgfQoKCiAgICAgICAgICAgIGlmICggJGluaGVhZGVycyBl cSAwKQogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBXZSBhcmUg bm93IHByb2Nlc3NpbmcgdGhlIG1lc3NhZ2UgYm9keS4KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgTm93IHdlIGhhdmUgcGFzc2VkIHRo ZSBoZWFkZXJzIHRvIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvdXRwdXQgZmls ZSwgd2Ugc2NhbiB1bnRpbCB0aGUgd2hpbGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMg bG9vcCBmaW5kcyBhbm90aGVyICJGcm9tICIgbGluZS4KCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjIERlY3JlbWVudCBvdXIgY29udGVudCBsZW5ndGggaWYgd2UncmUKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICMgdXNpbmcgaXQgdG8gZmluZCB0aGUgZW5kIG9mIHRoZSBtZXNzYWdl CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGJvZHkKCiAgICAgICAgICAgICAgICBpZiAo ZGVmaW5lZCAkY29udGVudGxlbmd0aCkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMg RGVjcmVtZW50IG91ciAkY29udGVudGxlbmd0aCB2YXJpYWJsZQoKICAgICAgICAgICAgICAgICAg ICAkY29udGVudGxlbmd0aCAtPSBsZW5ndGgoJF8pOwoKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICMgVGhlIHByb3BlciBlbmQgZm9yIGEgbWVzc2FnZSB3aXRoIENvbnRlbnQtTGVuZ3RoCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAjIHNwZWNpZmllZCBpcyB0aGUgJGNvbnRlbnRsZW5n dGggdmFyaWFibGUgc2hvdWxkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGJlIGV4YWN0 bHkgLTEgYW5kIHdlIHNob3VsZCBiZSBvbiBhIGJhcmUKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICMgbmV3bGluZS4gIE5vdGUgdGhhdCB0aGUgYmFyZSBuZXdsaW5lIGlzIG5vdAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgIyBwcmludGVkIHRvIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQg bWVzc2FnZSBhcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpdCdzIGFjdHVhbGx5IGEg bWVzc2FnZSBzZXBhcmF0b3IgaW4gdGhlIG1ib3gKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICMgZm9ybWF0IHJhdGhlciB0aGFuIHBhcnQgb2YgdGhlIG1lc3NhZ2UuICBUaGUKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICMgbmV4dCBsaW5lIF9zaG91bGRfIGJlIGEgRnJvbV8gbGluZSwg YnV0IGp1c3QgaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgY2FzZSB0aGUgQ29udGVu dC1MZW5ndGggaGVhZGVyIGlzIGluY29ycmVjdAogICAgICAgICAgICAgICAgICAgICAgICAgICAg IyAoZS5nLiBhIGNvcnJ1cHQgbWFpbGJveCksIHdlIGp1c3QgY29udGludWUKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICMgcHV0dGluZyBsaW5lcyBpbnRvIHRoZSBjdXJyZW50IG1lc3NhZ2Ug dW50aWwgd2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgc2VlIHRoZSBuZXh0IEZyb21f IGxpbmUuCgogICAgICAgICAgICAgICAgICAgIGlmICgkY29udGVudGxlbmd0aCA8IDApIHsKICAg ICAgICAgICAgICAgICAgICAgICAgaWYgKCRjb250ZW50bGVuZ3RoID09IC0xICYmICRfIGVxICJc biIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb250ZW50bGVuZ3RoID0gdW5kZWY7 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0OwoJCQl9CiAgICAgICAgICAgICAgICAg ICAgICAgICRjb250ZW50bGVuZ3RoID0gdW5kZWY7CiAgICAgICAgICAgICAgICAgICAgfQogICAg ICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICMgV2Ugd2FudCB0byBjb3B5IGV2ZXJ5IHBhcnQgb2YgdGhlIG1lc3Nh Z2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYm9keSB0byB0aGUgb3V0cHV0IGZpbGUs IGV4Y2VwdCBmb3IgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHF1b3RlZCAiPkZy b20gIiBsaW5lcywgd2hpY2ggd2FzIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB3 YXkgdGhlIElNQVAgc2VydmVyIGVuY29kZWQgYm9keSBsaW5lcwogICAgICAgICAgICAgICAgICAg ICAgICAgICAgIyBzdGFydGluZyB3aXRoICJGcm9tICIuCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFBhdHRlcm4gbWF0Y2hpbmcgUGVy bCBtYWppayB0bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBnZXQgcmlkIG9mIGFuIE1i b3ggcXVvdGVkIEZyb20uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjIFRoaXMgd29ya3Mgb24gdGhlIGRlZmF1bHQgdmFyaWFibGUgIiRf IiB3aGljaAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBjb250YWlucyB0aGUgdGV4dCBm cm9tIHRoZSBNYm94IG1haWxib3ggLSBJCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGd1 ZXNzIHRoaXMgaXMgdGhlIGNhc2UgYmVjYXVzZSBvZiBvdXIKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICMgKG9wZW4oTUJPWCAuLi4uKSBsaW5lIGFib3ZlLCB3aGljaCBkaWQgbm90CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjIGFzc2lnbiB0aGlzIHRvIGFueXRoaW5nIGVsc2UsIHNv IGl0IHdvdWxkIGdvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRvIHRoZSBkZWZhdWx0 IHZhcmlhYmxlLiAgVGhpcyBlbmFibGVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlu c2NydXRhYmx5IHRlcnNlIFBlcmxpc21zIHRvIGZvbGxvdy4KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgInMiIG1lYW5zICJTdWJzaXR1 dGUiIGFuZCBpdCBsb29rcyBmb3IgYW55CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9j Y3VycmVuY2Ugb2YgIj5Gcm9tIiBzdGFydGluZyBhdCB0aGUgc3RhcnQKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICMgb2YgdGhlIGxpbmUuICBXaGVuIGl0IGZpbmRzIHRoaXMsIGl0IHJlcGxh Y2VzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGl0IHdpdGggIkZyb20iLgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBTbyB0 aGlzIGZpbmRzIGFsbCBpbnN0YW5jZXMgaW4gdGhlIE1ib3ggbWVzc2FnZQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgIyB3aGVyZSB0aGUgb3JpZ2luYWwgbGluZSBzdGFydGVkIHdpdGggdGhl IHdvcmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgIkZyb20iIGJ1dCB3YXMgY29udmVy dGVkIHRvICI+RnJvbSIgaW4gb3JkZXIgdG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICMg bm90IGJlIG1pc3Rha2VuIGZvciB0aGUgIkZyb20gLi4uIiBsaW5lIHdoaWNoCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjIGlzIHVzZWQgdG8gZGVtYXJrIGVhY2ggbWVzc2FnZSBpbiB0aGUg TWJveC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVGhpcyB3YXMgd2FzIGEgZGVzdHJ1 Y3RpdmUgY29udmVyc2lvbiBiZWNhdXNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFu eSBtZXNzYWdlIHdoaWNoIG9yaWdpbmFsbHkgaGFkICI+RnJvbSIgYXQgdGhlCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjIHN0YXJ0IG9mIHRoZSBsaW5lLCBiZWZvcmUgYmVpbmcgcHV0IGlu dG8gdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE1ib3gsIHdpbGwgbm93IGhhdmUg dGhhdCBsaW5lIHdpdGhvdXQgdGhlICI+Ii4KCiAgICAgICAgICAgICAgICBzL14+RnJvbSAvRnJv bSAvOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgR2xvcmlvdXMgdGVyc25lc3MgaGVy ZS4gIFRoYW5rcyBTaW1vbiBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZXhwbGFp bmluZyB0aGlzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgIyAicHJpbnQgT1VUIiBtZWFucyBwcmludCB0aGUgZGVmYXVsdCB2YXJpYWJs ZSB0bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB0aGUgZmlsZSBvZiBmaWxlIGhhbmRs ZSBPVVQuICBUaGlzIGlzIHdoZXJlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRoZSBi dWxrIG9mIHRoZSBtZXNzYWdlIHRleHQgaXMgd3JpdHRlbiB0bwogICAgICAgICAgICAgICAgICAg ICAgICAgICAgIyB0aGUgb3V0cHV0IGZpbGUuCgogICAgICAgICAgICAgICAgcHJpbnQgT1VUIG9y IGRpZSgiRmF0YWw6IHVuYWJsZSB0byB3cml0ZSB0byBuZXcgbWVzc2FnZSB0byAkbWVzc2FnZWZu Iik7CgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgRW5kIG9mIHRoZSBpZiBzdGF0ZW1l bnQgZGVhbGluZyB3aXRoIG1lc3NhZ2UgYm9keS4KICAgICAgICAgICAgfQoKCSAgICAkcHJldmlv dXNfbGluZV93YXNfZW1wdHkgPSAoICRfIGVxICJcbiIgKTsKCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAjIEVuZCBvZiB3aGlsZSAoTUJPWCkgbG9vcC4KICAgICAgICB9CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjIENsb3NlIHRoZSBpbnB1dCBmaWxlLgoKICAgICAgICBjbG9zZShN Qk9YKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIENsb3NlIHRoZSBvdXRwdXQgZmls ZSwgYW5kIGR1cGxpY2F0ZSB0aGUgY29kZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBm cm9tIHRoZSBzdGFydCBvZiB0aGUgd2hpbGUgbG9vcCB3aGljaCB0b3VjaGVzCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjIHRoZSBkYXRlLXRpbWUgb2YgdGhlIG1vc3QgcmVjZW50IG1lc3Nh Z2UgZmlsZS4KCiAgICAgICAgY2xvc2UoT1VUKTsKICAgICAgICBpZiAoJG1lc3NhZ2VmbiBuZSAn JykgewoJICAgIG15ICR0ID0gc3RyMnRpbWUoJHJlY2VpdmVkYXRlKTsKCSAgICB1dGltZSAkdCwg JHQsICRtZXNzYWdlZm47Cgl9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZnRlciBh bGwgdGhlIG1lc3NhZ2VzIGhhdmUgYmVlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBj b252ZXJ0ZWQsIGNoZWNrIHRvIHNlZSBpZiB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICMgZmlyc3Qgb25lIHdhcyBhIGR1bW15LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBp ZiBzbywgZGVsZXRlIGl0IGFuZCBtYWtlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRo ZSBtZXNzYWdlIGNvdW50IG9uZSBsZXNzLgoKICAgICAgICBpZiAoJGRlbGV0ZWR1bW15IG5lICIi KQogICAgICAgIHsKICAgICAgICAgICAgcHJpbnRmKCJEdW1teSBtYWlsIHN5c3RlbSBmaXJzdCBt ZXNzYWdlIGRldGVjdGVkIGFuZCBub3Qgc2F2ZWQuXG4iKTsKICAgICAgICAgICAgdW5saW5rICRk ZWxldGVkdW1teTsKCiAgICAgICAgICAgICRtZXNzYWdlY291bnQtLTsKCiAgICAgICAgfQoKICAg ICAgICBwcmludGYoIiRtZXNzYWdlY291bnQgbWVzc2FnZXMuXG5cbiIpOwp9Cg== --=-=-=-- ------------=_1524154022-15988-1-- From unknown Wed Aug 20 05:15:37 2025 X-Loop: help-debbugs@gnu.org Subject: bug#31216: commit 217b8c2e0 produces 'Can't locate Date/Parse.pm in @INC Error' perl error Resent-From: Julien Lepiller Original-Sender: "Debbugs-submit" Resent-CC: bug-guix@gnu.org Resent-Date: Fri, 20 Apr 2018 12:43:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 31216 X-GNU-PR-Package: guix X-GNU-PR-Keywords: To: 31216@debbugs.gnu.org X-Debbugs-Original-To: bug-guix@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.152422814217572 (code B ref -1); Fri, 20 Apr 2018 12:43:02 +0000 Received: (at submit) by debbugs.gnu.org; 20 Apr 2018 12:42:22 +0000 Received: from localhost ([127.0.0.1]:33570 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f9VMn-0004ZG-G1 for submit@debbugs.gnu.org; Fri, 20 Apr 2018 08:42:20 -0400 Received: from eggs.gnu.org ([208.118.235.92]:49802) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f9VMj-0004Z2-F1 for submit@debbugs.gnu.org; Fri, 20 Apr 2018 08:42:14 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1f9VMd-0000jp-2N for submit@debbugs.gnu.org; Fri, 20 Apr 2018 08:42:08 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:43270) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1f9VMc-0000jP-Va for submit@debbugs.gnu.org; Fri, 20 Apr 2018 08:42:07 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40752) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1f9VMb-0004gD-Hw for bug-guix@gnu.org; Fri, 20 Apr 2018 08:42:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1f9VMY-0000ZD-Eb for bug-guix@gnu.org; Fri, 20 Apr 2018 08:42:05 -0400 Received: from lepiller.eu ([89.234.186.109]:44548) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1f9VMY-0000Q0-5E for bug-guix@gnu.org; Fri, 20 Apr 2018 08:42:02 -0400 Received: from localhost (static-176-182-42-79.ncc.abo.bbox.fr [176.182.42.79]) by lepiller.eu (OpenSMTPD) with ESMTPSA id 6b2e1813 (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO) for ; Fri, 20 Apr 2018 12:45:08 +0000 (UTC) Date: Fri, 20 Apr 2018 14:41:52 +0200 From: Julien Lepiller Message-ID: <20180420144145.18837a78@lepiller.eu> In-Reply-To: <20180419143910.GB8699@jasmine.lan> References: <87r2nbubtr.fsf@gmail.com> <20180419143910.GB8699@jasmine.lan> X-Mailer: Claws Mail 3.16.0 (GTK+ 2.24.32; x86_64-unknown-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -5.0 (-----) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Le Thu, 19 Apr 2018 10:39:10 -0400, Leo Famulari a =C3=A9crit : > On Wed, Apr 18, 2018 at 11:14:40PM -0400, George myglc2 Clemmer wrote: > > Commit ... > >=20 > > 217b8c2e0 * gnu: perl: Replace with 5.26.2 [fixes > > CVE-2018-{6797,6798,6913}]. > >=20 > > ... caused the attached perl script that worked like this ... > >=20 > > g1@g1 ~/.mail-mirror$ guix environment --ad-hoc perl perl-timedate > > make wget g1@g1 ~/.mail-mirror [env]$ perl mb2md-3.20.pl > > Usage: > > mb2md -h > > mb2md [-c] -m [-d destdir] > > mb2md [-c] -s sourcefile [-d destdir] > > mb2md [-c] -s sourcedir [-l wu-mailboxlist] [-R|-f > > somefolder] [-d destdir] [-r strip_extension] g1@g1 ~/.mail-mirror > > [env]$ > >=20 > >=20 > > ... to stop working ... > >=20 > > g1@g1 ~/.mail-mirror$ guix environment --ad-hoc perl perl-timedate > > make wget g1@g1 ~/.mail-mirror [env]$ perl mb2md-3.20.pl > > Can't locate Date/Parse.pm in @INC (you may need to install the > > Date::Parse module) (@INC > > contains: /gnu/store/wpwb4ig3qhv3m7axjlid2c0f1jqzp09p-profile/lib/perl5= /site_perl/5.26.2/x86_64-linux-thread-multi /gnu/store/wpwb4ig3qhv3m7axjlid= 2c0f1jqzp09p-profile/lib/perl5/site_perl/5.26.2 /gnu/store/wpwb4ig3qhv3m7ax= jlid2c0f1jqzp09p-profile/lib/perl5/site_perl /gnu/store/ynk3rg3i791i6k7rz2i= mbyj9wyfjrnrc-perl-5.26.2/lib/perl5/site_perl/5.26.2/x86_64-linux-thread-mu= lti /gnu/store/ynk3rg3i791i6k7rz2imbyj9wyfjrnrc-perl-5.26.2/lib/perl5/site_= perl/5.26.2 /gnu/store/ynk3rg3i791i6k7rz2imbyj9wyfjrnrc-perl-5.26.2/lib/per= l5/5.26.2/x86_64-linux-thread-multi /gnu/store/ynk3rg3i791i6k7rz2imbyj9wyfj= rnrc-perl-5.26.2/lib/perl5/5.26.2) > > at mb2md-3.20.pl line 385. BEGIN failed--compilation aborted at > > mb2md-3.20.pl line 385. g1@g1 ~/.mail-mirror [env]$ > >=20 > > TIA - George =20 >=20 > I believe this is fixed by commit > 44b98b00026e62766620dbc4330a305282d61069. >=20 > Can you try again and let me know? Hi, I don't think this is fully fixed. On current master, trying to run po4a (a perl application that guix now depends on to generate the translation of the manual), I get the following: [env]$ po4a-updatepo Can't locate Locale/Po4a/Po.pm in @INC (you may need to install the Locale::Po4a::Po module) (@INC contains: /gnu/store/b10z3mm4nyvzwq6b7537nhckmilbv7bm-po4a-0.47/lib/perl5/s= ite_perl /home/tyreunom/.guix-profile/lib/perl5/site_perl /home/tyreunom/.g= uix-profile/lib/perl5/site_perl /home/tyreunom/.guix-profile/lib/perl5/site= _perl /gnu/store/43vb2vnv7alwi40ms5qsb9i84rs0xb6s-perl-5.26.2/lib/perl5/sit= e_perl/5.26.2/x86_64-linux-thread-multi /gnu/store/43vb2vnv7alwi40ms5qsb9i8= 4rs0xb6s-perl-5.26.2/lib/perl5/site_perl/5.26.2 /gnu/store/43vb2vnv7alwi40m= s5qsb9i84rs0xb6s-perl-5.26.2/lib/perl5/5.26.2/x86_64-linux-thread-multi /gn= u/store/43vb2vnv7alwi40ms5qsb9i84rs0xb6s-perl-5.26.2/lib/perl5/5.26.2) at /gnu/store/b10z3mm4nyvzwq6b7537nhckmilbv7bm-po4a-0.47/bin/.po4a-updatepo= -real line 168. What fixed the issue was adding $GUIX_ENVIRONMENT/lib/perl5/site_perl/5.26.1 to the PERL5LIB variable. It used to work until very recently, but I wonder why the version number is 5.26.1 if perl is 5.26.2? From unknown Wed Aug 20 05:15:37 2025 X-Loop: help-debbugs@gnu.org Subject: bug#31216: commit 217b8c2e0 produces 'Can't locate Date/Parse.pm in @INC Error' perl error Resent-From: Leo Famulari Original-Sender: "Debbugs-submit" Resent-CC: bug-guix@gnu.org Resent-Date: Fri, 20 Apr 2018 23:47:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 31216 X-GNU-PR-Package: guix X-GNU-PR-Keywords: To: Julien Lepiller Cc: 31216@debbugs.gnu.org Received: via spool by 31216-submit@debbugs.gnu.org id=B31216.15242680099772 (code B ref 31216); Fri, 20 Apr 2018 23:47:01 +0000 Received: (at 31216) by debbugs.gnu.org; 20 Apr 2018 23:46:49 +0000 Received: from localhost ([127.0.0.1]:34434 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f9fjs-0002XY-Nz for submit@debbugs.gnu.org; Fri, 20 Apr 2018 19:46:48 -0400 Received: from out3-smtp.messagingengine.com ([66.111.4.27]:58935) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f9fjr-0002XR-AE for 31216@debbugs.gnu.org; Fri, 20 Apr 2018 19:46:47 -0400 Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.nyi.internal (Postfix) with ESMTP id B63BB219DD; Fri, 20 Apr 2018 19:46:46 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute4.internal (MEProxy); Fri, 20 Apr 2018 19:46:46 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=famulari.name; h=cc:content-type:date:from:in-reply-to:message-id:mime-version :references:subject:to:x-me-sender:x-me-sender:x-sasl-enc; s= mesmtp; bh=gKfrswM22rQ/t/d1AS8VDUsjFCkyfL/abyLgSx5vlY8=; b=gieTV RI1KMV/5/8uouj9FSVe4jp6XyyXCR5bUaLkPbgTulxdT5IQ/GgCdjtCYRSHpzdSZ /CYaVDXEXT6gGl51hnMOzw3Z6uS6psir8jo/borfrmRUsHGjzn0Q6m38dk4462Qb EMFGE6kLL+AcMwIQUKiagNhbRaLxZSMSEWwdtY= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-sender :x-me-sender:x-sasl-enc; s=fm2; bh=gKfrswM22rQ/t/d1AS8VDUsjFCkyf L/abyLgSx5vlY8=; b=PecSzpqgJoq0tiEYokk6jcAsA040VWg57NiKA3ajgyS/Y IoNeXUB/LylF1oj2YFhJNxPGiQcqg63DEJpmZDsyxJCK4DxWwE3nAeI7op5sFLIk fhv9dH9ChgUxtMIgi6fxWplGivhiKzFW5vjnfkLw0sXOdPmqZ0v/9TNHeUvtAUfW 4sGuIq+Swksyg8uz9InzZM+BwIaApcS03CpDykI5qYggFR65WvbGsV0cuNvCX9wY +mNcQORUKUnD2Fannq+9VVky14/4BaQ2Oslzhs0z9GUj2K2+19xJt5aV4qf2c39M DwNOj1Z6E0iiPlIIsj3NxxkFD7pUlqdbVBdIoadWQ== X-ME-Sender: Received: from localhost (96-90-54-211-static.hfc.comcastbusiness.net [96.90.54.211]) by mail.messagingengine.com (Postfix) with ESMTPA id 50F8910253; Fri, 20 Apr 2018 19:46:46 -0400 (EDT) Date: Fri, 20 Apr 2018 19:46:45 -0400 From: Leo Famulari Message-ID: <20180420234645.GA10925@jasmine.lan> References: <87r2nbubtr.fsf@gmail.com> <20180419143910.GB8699@jasmine.lan> <20180420144145.18837a78@lepiller.eu> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="ReaqsoxgOBHFXBhH" Content-Disposition: inline In-Reply-To: <20180420144145.18837a78@lepiller.eu> User-Agent: Mutt/1.9.5 (2018-04-13) X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) --ReaqsoxgOBHFXBhH Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Fri, Apr 20, 2018 at 02:41:52PM +0200, Julien Lepiller wrote: > Hi, I don't think this is fully fixed. On current master, trying to run > po4a (a perl application that guix now depends on to generate the > translation of the manual), I get the following: >=20 > [env]$ po4a-updatepo > Can't locate Locale/Po4a/Po.pm in @INC (you may need to install the > Locale::Po4a::Po module) (@INC > contains: /gnu/store/b10z3mm4nyvzwq6b7537nhckmilbv7bm-po4a-0.47/lib/perl5= /site_perl /home/tyreunom/.guix-profile/lib/perl5/site_perl /home/tyreunom/= =2Eguix-profile/lib/perl5/site_perl /home/tyreunom/.guix-profile/lib/perl5/= site_perl /gnu/store/43vb2vnv7alwi40ms5qsb9i84rs0xb6s-perl-5.26.2/lib/perl5= /site_perl/5.26.2/x86_64-linux-thread-multi /gnu/store/43vb2vnv7alwi40ms5qs= b9i84rs0xb6s-perl-5.26.2/lib/perl5/site_perl/5.26.2 /gnu/store/43vb2vnv7alw= i40ms5qsb9i84rs0xb6s-perl-5.26.2/lib/perl5/5.26.2/x86_64-linux-thread-multi= /gnu/store/43vb2vnv7alwi40ms5qsb9i84rs0xb6s-perl-5.26.2/lib/perl5/5.26.2) > at /gnu/store/b10z3mm4nyvzwq6b7537nhckmilbv7bm-po4a-0.47/bin/.po4a-update= po-real > line 168. >=20 > What fixed the issue was adding > $GUIX_ENVIRONMENT/lib/perl5/site_perl/5.26.1 to the PERL5LIB variable. >=20 > It used to work until very recently, but I wonder why the version number > is 5.26.1 if perl is 5.26.2? Okay, something still needs fixing but I'm not sure what. I won't be able to take a closer look until Monday. Anyone else is free to try :) --ReaqsoxgOBHFXBhH Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEsFFZSPHn08G5gDigJkb6MLrKfwgFAlrae+EACgkQJkb6MLrK fwhAog//eDLnqjGBM5Yr6UBzUKK4+0pESyE/8ImhWwb3wPDyZn3sTlI6rEPiZn3n 8PJ95EuFM/fhLEnovVRyTDrFBnZdxHRj00S/v0g4c8pnVGGrxRxcJkZBRxg/NrkJ v1dgwQ70CduQ/UsyfkCHgwlZFkV3dO+f8zU1tg1iulc8lXDgNxkav87ZsOw/cJHu PHzr7VJCvA2BAKaa45nXH7WHGSoIoUBolWxcQvF2iL6XSjLMrraH5qq4CLoxkNCE 8dFg5ahQGoghPHNQRClDoMxws1yxlP7xqjtH7szveU7W0nfEtmTuqLWS+VIE9WDi 2NFsMEP+jyfWo/LimL+DillrzDvy1g5n8TMucMjChMk2gMKBdqNcAbgv1dzDZRGg BFj2jHmxuTxOpcNPTUcZYJELlH10E9qhQ3XCMB/r7BoKQRErPO6uyGP25VPDulhT a/Tcn4b1gNRiqo1aQWlh1XJJ5ly1wRd5tWBk38+33snIcibcC2SZTNZpt2v8WYfU pp4z3YD/h0JrL34NCkgDyI2uoJxJeGdATUtRbGRc/n7s4tUuwjd8stjoOt4h3WDt V9b/JYIGwnXHY5O0249VZJxAHIRyAZ61BgX4TUjx69qObCZj4czggZVsKPPQZ7AH ZMCRW+iM49xILt2e9RFE+A0ZheqHOrDY9Xp808VnLLGAG50/HZA= =VQRs -----END PGP SIGNATURE----- --ReaqsoxgOBHFXBhH-- From unknown Wed Aug 20 05:15:37 2025 X-Loop: help-debbugs@gnu.org Subject: bug#31216: commit 217b8c2e0 produces 'Can't locate Date/Parse.pm in @INC Error' perl error Resent-From: Leo Famulari Original-Sender: "Debbugs-submit" Resent-CC: bug-guix@gnu.org Resent-Date: Fri, 20 Apr 2018 23:52:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 31216 X-GNU-PR-Package: guix X-GNU-PR-Keywords: To: Julien Lepiller Cc: 31216@debbugs.gnu.org Received: via spool by 31216-submit@debbugs.gnu.org id=B31216.152426828710181 (code B ref 31216); Fri, 20 Apr 2018 23:52:01 +0000 Received: (at 31216) by debbugs.gnu.org; 20 Apr 2018 23:51:27 +0000 Received: from localhost ([127.0.0.1]:34440 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f9foN-0002e9-AO for submit@debbugs.gnu.org; Fri, 20 Apr 2018 19:51:27 -0400 Received: from out3-smtp.messagingengine.com ([66.111.4.27]:40013) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f9foM-0002e2-CT for 31216@debbugs.gnu.org; Fri, 20 Apr 2018 19:51:26 -0400 Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.nyi.internal (Postfix) with ESMTP id 3CF2B21964; Fri, 20 Apr 2018 19:51:26 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute4.internal (MEProxy); Fri, 20 Apr 2018 19:51:26 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=famulari.name; h=cc:content-type:date:from:in-reply-to:message-id:mime-version :references:subject:to:x-me-sender:x-me-sender:x-sasl-enc; s= mesmtp; bh=x+QWUMZaz6GGvUDptYHA5qLIptEL8gkjncZ/sl6SU90=; b=Kd78s jdotuzXAL8yLswlpLoaNl914NyyFOEGmimdK8y/Nn09UU76XiiP/Ul/EN34nPf9M AVhIxSlMNv7dsN+3BzD6E6lOK2eT2l/FFUSuQxsbNv1zBDPYXrAGgUl0pQYqK74g 1DJum0VwzsfIQnDJ7bxk8DupkLKXaPlchY3Khs= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-sender :x-me-sender:x-sasl-enc; s=fm2; bh=x+QWUMZaz6GGvUDptYHA5qLIptEL8 gkjncZ/sl6SU90=; b=jO1LhnOpQBALV/dBakitsgxksnRTvW4B4jvL5XBORRShC E+lCFtu7rFaDkeq0uiN5s4zknDVLII/acVfIKBU7lIiZAfCL4g9aHR8R9gRhzII9 6YaN5Tw3XcblrYVSYv5gSLke0SePBAMl4rSJszsvOCVqezwCDGOHjLx1L+HX7wS0 0eegIxtjcUXsxkpCDpGSA0eAwj+3dWvxXk6iXZOTI49nvG6bRaNEN1xTxFCDy49l mKMCHScHeEe7FK5quJYN8BBxKfmNuOySfwAuOdpR5n04DYOrGVJc1Y6ChZsDBGQ7 FHsTmbXnr6PJP20ITeBeqLvxicTQnjA2UfjnXE2sw== X-ME-Sender: Received: from localhost (96-90-54-211-static.hfc.comcastbusiness.net [96.90.54.211]) by mail.messagingengine.com (Postfix) with ESMTPA id C06541025A; Fri, 20 Apr 2018 19:51:25 -0400 (EDT) Date: Fri, 20 Apr 2018 19:51:25 -0400 From: Leo Famulari Message-ID: <20180420235125.GA14153@jasmine.lan> References: <87r2nbubtr.fsf@gmail.com> <20180419143910.GB8699@jasmine.lan> <20180420144145.18837a78@lepiller.eu> <20180420234645.GA10925@jasmine.lan> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="sdtB3X0nJg68CQEu" Content-Disposition: inline In-Reply-To: <20180420234645.GA10925@jasmine.lan> User-Agent: Mutt/1.9.5 (2018-04-13) X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) --sdtB3X0nJg68CQEu Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Fri, Apr 20, 2018 at 07:46:45PM -0400, Leo Famulari wrote: > On Fri, Apr 20, 2018 at 02:41:52PM +0200, Julien Lepiller wrote: > > Hi, I don't think this is fully fixed. On current master, trying to run > > po4a (a perl application that guix now depends on to generate the > > translation of the manual), I get the following: > >=20 > > [env]$ po4a-updatepo > > Can't locate Locale/Po4a/Po.pm in @INC (you may need to install the > > Locale::Po4a::Po module) (@INC > > contains: /gnu/store/b10z3mm4nyvzwq6b7537nhckmilbv7bm-po4a-0.47/lib/per= l5/site_perl /home/tyreunom/.guix-profile/lib/perl5/site_perl /home/tyreuno= m/.guix-profile/lib/perl5/site_perl /home/tyreunom/.guix-profile/lib/perl5/= site_perl /gnu/store/43vb2vnv7alwi40ms5qsb9i84rs0xb6s-perl-5.26.2/lib/perl5= /site_perl/5.26.2/x86_64-linux-thread-multi /gnu/store/43vb2vnv7alwi40ms5qs= b9i84rs0xb6s-perl-5.26.2/lib/perl5/site_perl/5.26.2 /gnu/store/43vb2vnv7alw= i40ms5qsb9i84rs0xb6s-perl-5.26.2/lib/perl5/5.26.2/x86_64-linux-thread-multi= /gnu/store/43vb2vnv7alwi40ms5qsb9i84rs0xb6s-perl-5.26.2/lib/perl5/5.26.2) > > at /gnu/store/b10z3mm4nyvzwq6b7537nhckmilbv7bm-po4a-0.47/bin/.po4a-upda= tepo-real > > line 168. > >=20 > > What fixed the issue was adding > > $GUIX_ENVIRONMENT/lib/perl5/site_perl/5.26.1 to the PERL5LIB variable. > >=20 > > It used to work until very recently, but I wonder why the version number > > is 5.26.1 if perl is 5.26.2? >=20 > Okay, something still needs fixing but I'm not sure what. I won't be > able to take a closer look until Monday. Anyone else is free to try :) Btw, an easy way to start debugging would be to use `git bisect` to confirm which commit introduced the problem. --sdtB3X0nJg68CQEu Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEsFFZSPHn08G5gDigJkb6MLrKfwgFAlrafPwACgkQJkb6MLrK fwh4mhAAwVCOGbSwEoreMZGGaTy0sLGKdVeE3hCnKZMbodoGpwwGo/VafACWSUnq eXwkQHnMfWVnAL3HlOWJVazb2kHmAYaZvgIUM5vUdhjJKHe3Mk/dmmiLXEoROY/l PzAKIDirzUDJnYz9f1Qz2htm19RKNw8VKoaygwlvScWY03Db45N25Z2E8zoTlZCt LMPvKF9dXroe0To03AIMHOpuj6iUKLvurSDY707xuUvPke9ujSs9k2rSjAF9uYRr 01RYH+zTvBq8EbkwtVJOMwLaavf/aXD6iQTHlVajWRcAzdXObaSnNnHmHvsHkyoR FGEkuxvAGpEuuFX8JlLITeB55s0fAdtDUS+zcnFx7us0GGL35a6ojAd60/gGCQqQ OJpK+VvITZm3ud7RSRROsDkI/1RDU9jo2eeU5EGFuSAWnpNdNYbyG6SfHpD8KRx3 y9iMUxSW00/ZJibtaYKlEBLDrK8lk09q296kKG0xVmwjcMLeUFZL+wsbHQ4EJ3uM htZlKo/unULxweGWWPmoapBUcP3LrtyvcnSThEtjn+uEMfiUhsbFwUDki6Ipm8Y9 r1BXUqBD/5nKAw/bA0kHLPY3f+aZO7pB0LFewC61nlekpoul6VDvvDMg9SQ1VoY2 2hG9ljTuzHW5ys26x4B36mT3umbwixuGL13G8cABajvFrMTi8rU= =HlEn -----END PGP SIGNATURE----- --sdtB3X0nJg68CQEu-- From unknown Wed Aug 20 05:15:37 2025 X-Loop: help-debbugs@gnu.org Subject: bug#31216: commit 217b8c2e0 produces 'Can't locate Date/Parse.pm in @INC Error' perl error Resent-From: Mark H Weaver Original-Sender: "Debbugs-submit" Resent-CC: bug-guix@gnu.org Resent-Date: Sat, 21 Apr 2018 03:17:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 31216 X-GNU-PR-Package: guix X-GNU-PR-Keywords: To: Julien Lepiller Cc: 31216@debbugs.gnu.org Received: via spool by 31216-submit@debbugs.gnu.org id=B31216.152428058428093 (code B ref 31216); Sat, 21 Apr 2018 03:17:02 +0000 Received: (at 31216) by debbugs.gnu.org; 21 Apr 2018 03:16:24 +0000 Received: from localhost ([127.0.0.1]:34491 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f9j0i-0007J3-Gr for submit@debbugs.gnu.org; Fri, 20 Apr 2018 23:16:24 -0400 Received: from world.peace.net ([50.252.239.5]:50540) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f9j0g-0007Ir-Ni for 31216@debbugs.gnu.org; Fri, 20 Apr 2018 23:16:23 -0400 Received: from mhw by world.peace.net with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1f9j0a-00012N-6n; Fri, 20 Apr 2018 23:16:16 -0400 From: Mark H Weaver References: <87r2nbubtr.fsf@gmail.com> <20180419143910.GB8699@jasmine.lan> <20180420144145.18837a78@lepiller.eu> Date: Fri, 20 Apr 2018 23:15:15 -0400 In-Reply-To: <20180420144145.18837a78@lepiller.eu> (Julien Lepiller's message of "Fri, 20 Apr 2018 14:41:52 +0200") Message-ID: <877ep1z1vg.fsf@netris.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Hi, Julien Lepiller writes: > Le Thu, 19 Apr 2018 10:39:10 -0400, > Leo Famulari a =C3=A9crit : > >> I believe this is fixed by commit >> 44b98b00026e62766620dbc4330a305282d61069. >>=20 >> Can you try again and let me know? > > Hi, I don't think this is fully fixed. On current master, trying to run > po4a (a perl application that guix now depends on to generate the > translation of the manual), I get the following: > > [env]$ po4a-updatepo > Can't locate Locale/Po4a/Po.pm in @INC (you may need to install the > Locale::Po4a::Po module) (@INC > contains: > /gnu/store/b10z3mm4nyvzwq6b7537nhckmilbv7bm-po4a-0.47/lib/perl5/site_perl > /home/tyreunom/.guix-profile/lib/perl5/site_perl > /home/tyreunom/.guix-profile/lib/perl5/site_perl > /home/tyreunom/.guix-profile/lib/perl5/site_perl > /gnu/store/43vb2vnv7alwi40ms5qsb9i84rs0xb6s-perl-5.26.2/lib/perl5/site_pe= rl/5.26.2/x86_64-linux-thread-multi > /gnu/store/43vb2vnv7alwi40ms5qsb9i84rs0xb6s-perl-5.26.2/lib/perl5/site_pe= rl/5.26.2 > /gnu/store/43vb2vnv7alwi40ms5qsb9i84rs0xb6s-perl-5.26.2/lib/perl5/5.26.2/= x86_64-linux-thread-multi > /gnu/store/43vb2vnv7alwi40ms5qsb9i84rs0xb6s-perl-5.26.2/lib/perl5/5.26.2) > at /gnu/store/b10z3mm4nyvzwq6b7537nhckmilbv7bm-po4a-0.47/bin/.po4a-update= po-real > line 168. > > What fixed the issue was adding > $GUIX_ENVIRONMENT/lib/perl5/site_perl/5.26.1 to the PERL5LIB variable. > > It used to work until very recently, but I wonder why the version number > is 5.26.1 if perl is 5.26.2? It's because perl is grafted: perl-5.26.1 is still used for building packages, but then after everything is built, references to perl-5.26.1 are replaced with references to perl-5.26.2 by grafting. The problem we're having with grafting perl is that grafting can only rewrite a single component of the referenced filenames, namely the directory name within /gnu/store. In the case of perl this is not enough because the precise Perl version number is included in subdirectory names as well. Commit 44b98b00026e62766620dbc4330a305282d61069 attempts to fix the problem by installing a symlink $OUT/lib/perl5/5.26.1 in the perl-5.26.2 directory, and that certainly fixed many problems. The problem here with p04a is that there's a second symlink that we need: $OUT/lib/perl5/site_perl/5.26.1, and possibly a third for $OUT/bin/perl5.26.1. I'm testing a patch now and will push it soon. Mark From unknown Wed Aug 20 05:15:37 2025 X-Loop: help-debbugs@gnu.org Subject: bug#31216: commit 217b8c2e0 produces 'Can't locate Date/Parse.pm in @INC Error' perl error Resent-From: Mark H Weaver Original-Sender: "Debbugs-submit" Resent-CC: bug-guix@gnu.org Resent-Date: Sat, 21 Apr 2018 03:35:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 31216 X-GNU-PR-Package: guix X-GNU-PR-Keywords: To: Julien Lepiller Cc: 31216@debbugs.gnu.org Received: via spool by 31216-submit@debbugs.gnu.org id=B31216.152428165629649 (code B ref 31216); Sat, 21 Apr 2018 03:35:02 +0000 Received: (at 31216) by debbugs.gnu.org; 21 Apr 2018 03:34:16 +0000 Received: from localhost ([127.0.0.1]:34495 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f9jI0-0007i9-3j for submit@debbugs.gnu.org; Fri, 20 Apr 2018 23:34:16 -0400 Received: from world.peace.net ([50.252.239.5]:50556) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f9jHw-0007hv-Ox for 31216@debbugs.gnu.org; Fri, 20 Apr 2018 23:34:12 -0400 Received: from mhw by world.peace.net with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1f9jHr-000145-39; Fri, 20 Apr 2018 23:34:07 -0400 From: Mark H Weaver References: <87r2nbubtr.fsf@gmail.com> <20180419143910.GB8699@jasmine.lan> <20180420144145.18837a78@lepiller.eu> Date: Fri, 20 Apr 2018 23:33:07 -0400 In-Reply-To: <20180420144145.18837a78@lepiller.eu> (Julien Lepiller's message of "Fri, 20 Apr 2018 14:41:52 +0200") Message-ID: <87zi1xxmh8.fsf@netris.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) I just pushed commit 5618193694b08855488b29fae1db42f05ca6deaf to 'master', which I hope will fix the remaining problems with our grafted perl. Can you verify and let us know? Mark From unknown Wed Aug 20 05:15:37 2025 X-Loop: help-debbugs@gnu.org Subject: bug#31216: commit 217b8c2e0 produces 'Can't locate Date/Parse.pm in @INC Error' perl error Resent-From: Mark H Weaver Original-Sender: "Debbugs-submit" Resent-CC: bug-guix@gnu.org Resent-Date: Sat, 21 Apr 2018 05:06:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 31216 X-GNU-PR-Package: guix X-GNU-PR-Keywords: To: Julien Lepiller Cc: 31216@debbugs.gnu.org Received: via spool by 31216-submit@debbugs.gnu.org id=B31216.15242871495046 (code B ref 31216); Sat, 21 Apr 2018 05:06:02 +0000 Received: (at 31216) by debbugs.gnu.org; 21 Apr 2018 05:05:49 +0000 Received: from localhost ([127.0.0.1]:34505 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f9kiX-0001JH-SK for submit@debbugs.gnu.org; Sat, 21 Apr 2018 01:05:49 -0400 Received: from world.peace.net ([50.252.239.5]:50576) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f9kiS-0001J0-Lv for 31216@debbugs.gnu.org; Sat, 21 Apr 2018 01:05:44 -0400 Received: from mhw by world.peace.net with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1f9kiM-0001Ez-Dm; Sat, 21 Apr 2018 01:05:34 -0400 From: Mark H Weaver References: <87r2nbubtr.fsf@gmail.com> <20180419143910.GB8699@jasmine.lan> <20180420144145.18837a78@lepiller.eu> <87zi1xxmh8.fsf@netris.org> Date: Sat, 21 Apr 2018 01:04:33 -0400 In-Reply-To: <87zi1xxmh8.fsf@netris.org> (Mark H. Weaver's message of "Fri, 20 Apr 2018 23:33:07 -0400") Message-ID: <87vaclxi8u.fsf@netris.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Unfortunately, the compatibility symlinks are not sufficient. The problem is that other perl packages such a po4a are installing their modules into $out/lib/perl5/site_perl/5.26.1, which conflicts with the compatibility symlink that we're installing in perl. When perl and po4a are put together into a profile, po4a has a directory /lib/perl5/site_perl/5.26.1 and perl has its compatibility symlink in the same relative location. The (guix build union) code follows perl's symlink to its target directory /lib/perl5/site_perl/5.26.2 and merges that with /lib/perl5/site_perl/5.26.1 to form /lib/perl5/site_perl/5.26.1, but that not in any of the paths. I'm now trying a different approach: hack the replacement perl to think it is version 5.26.1, although it is actually 5.26.2. I'll report back soon. Mark From unknown Wed Aug 20 05:15:37 2025 X-Loop: help-debbugs@gnu.org Subject: bug#31216: commit 217b8c2e0 produces 'Can't locate Date/Parse.pm in @INC Error' perl error Resent-From: Mark H Weaver Original-Sender: "Debbugs-submit" Resent-CC: bug-guix@gnu.org Resent-Date: Sat, 21 Apr 2018 05:26:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 31216 X-GNU-PR-Package: guix X-GNU-PR-Keywords: To: Julien Lepiller Cc: 31216@debbugs.gnu.org Received: via spool by 31216-submit@debbugs.gnu.org id=B31216.15242883337153 (code B ref 31216); Sat, 21 Apr 2018 05:26:01 +0000 Received: (at 31216) by debbugs.gnu.org; 21 Apr 2018 05:25:33 +0000 Received: from localhost ([127.0.0.1]:34509 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f9l1g-0001rJ-R4 for submit@debbugs.gnu.org; Sat, 21 Apr 2018 01:25:32 -0400 Received: from world.peace.net ([50.252.239.5]:50584) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f9l1f-0001r6-Hh for 31216@debbugs.gnu.org; Sat, 21 Apr 2018 01:25:31 -0400 Received: from mhw by world.peace.net with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1f9l1Z-0001HJ-C4; Sat, 21 Apr 2018 01:25:25 -0400 From: Mark H Weaver References: <87r2nbubtr.fsf@gmail.com> <20180419143910.GB8699@jasmine.lan> <20180420144145.18837a78@lepiller.eu> <87zi1xxmh8.fsf@netris.org> Date: Sat, 21 Apr 2018 01:24:25 -0400 In-Reply-To: <87zi1xxmh8.fsf@netris.org> (Mark H. Weaver's message of "Fri, 20 Apr 2018 23:33:07 -0400") Message-ID: <87r2n9xhbq.fsf@netris.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) I've now pushed another commit b5178b325409b1eaf953f8f3007a180cbd27b167 to master, which changes the replacement perl to think it is version 5.26.1, although it's actually version 5.26.2. With this fix, I'm now able to build guix without 'po4a' reporting errors. Please try it out and let me know if there are still problems. Mark From unknown Wed Aug 20 05:15:37 2025 X-Loop: help-debbugs@gnu.org Subject: bug#31216: commit 217b8c2e0 produces 'Can't locate Date/Parse.pm in @INC Error' perl error Resent-From: Leo Famulari Original-Sender: "Debbugs-submit" Resent-CC: bug-guix@gnu.org Resent-Date: Sun, 22 Apr 2018 17:43:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 31216 X-GNU-PR-Package: guix X-GNU-PR-Keywords: To: Mark H Weaver Cc: Julien Lepiller , 31216@debbugs.gnu.org Received: via spool by 31216-submit@debbugs.gnu.org id=B31216.15244189534391 (code B ref 31216); Sun, 22 Apr 2018 17:43:02 +0000 Received: (at 31216) by debbugs.gnu.org; 22 Apr 2018 17:42:33 +0000 Received: from localhost ([127.0.0.1]:36006 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fAJ0T-00018l-2c for submit@debbugs.gnu.org; Sun, 22 Apr 2018 13:42:33 -0400 Received: from out3-smtp.messagingengine.com ([66.111.4.27]:60971) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fAJ0S-00018e-6G for 31216@debbugs.gnu.org; Sun, 22 Apr 2018 13:42:32 -0400 Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.nyi.internal (Postfix) with ESMTP id 0B41C20FDA; Sun, 22 Apr 2018 13:42:32 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute4.internal (MEProxy); Sun, 22 Apr 2018 13:42:32 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=famulari.name; h=cc:content-type:date:from:in-reply-to:message-id:mime-version :references:subject:to:x-me-sender:x-me-sender:x-sasl-enc; s= mesmtp; bh=nvLUuAJDDcZeaQyaeTNPUjz6syeZUKJFsHsUHAp1zN0=; b=Glm7x b3hqdIFSHmjCdugu3eOf/0jR9dDdBXqvii+Xwn3ymRdgsY0L84cVHv1NjjRQ0QWX WdKdfJnQUL4pBrmuLTWrfgE5BPzxc380a8IkPV9hyZAjoQgKKum/6zp+KCPaw7fQ Cs2MJu4c65RkFLsGQgFxclDilfhVuA2G7u2kaA= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-sender :x-me-sender:x-sasl-enc; s=fm2; bh=nvLUuAJDDcZeaQyaeTNPUjz6syeZU KJFsHsUHAp1zN0=; b=WStoNTaA4PTAp9Sb9SHYNodgr0MElUsy5VnI//Qr/JbAR bGBxcfLrmtvHafOjIhM8hAB/7cJcR6WuGP3iWMv7oXBAyz1KYPwHkvKrr9m+LPnc Y9o2h4umAzfINmXrx806Wdq3CbSCdoM7l7qB30kty+aeesM0G5uFXTPNkgMgC1wE SFRoKLFuGMNlK9TrFsblGO7YVp1PxT8PosSy81wAqBAQ3ZTAnwuiZv2A0RsFB1Yy +L5hkV961b0nmQvz3JsF0dp3yTkx3Gt7XypXlOvSYbLc97zUcMGdNn/71Z+jbzwc af28Or9AYn3x08Otxy/azx2b+Jpd7B29Ipf0KyYjQ== X-ME-Sender: Received: from localhost (c-76-124-202-137.hsd1.pa.comcast.net [76.124.202.137]) by mail.messagingengine.com (Postfix) with ESMTPA id B60C71025D; Sun, 22 Apr 2018 13:42:31 -0400 (EDT) Date: Sun, 22 Apr 2018 13:42:30 -0400 From: Leo Famulari Message-ID: <20180422174230.GB22903@jasmine.lan> References: <87r2nbubtr.fsf@gmail.com> <20180419143910.GB8699@jasmine.lan> <20180420144145.18837a78@lepiller.eu> <87zi1xxmh8.fsf@netris.org> <87r2n9xhbq.fsf@netris.org> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="aVD9QWMuhilNxW9f" Content-Disposition: inline In-Reply-To: <87r2n9xhbq.fsf@netris.org> User-Agent: Mutt/1.9.5 (2018-04-13) X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) --aVD9QWMuhilNxW9f Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Sat, Apr 21, 2018 at 01:24:25AM -0400, Mark H Weaver wrote: > I've now pushed another commit b5178b325409b1eaf953f8f3007a180cbd27b167 > to master, which changes the replacement perl to think it is version > 5.26.1, although it's actually version 5.26.2. With this fix, I'm now > able to build guix without 'po4a' reporting errors. >=20 > Please try it out and let me know if there are still problems. Thanks! I guess one lesson is that we may want to limit Perl grafts to specific bug-fix patches rather than a full upgrade. --aVD9QWMuhilNxW9f Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEsFFZSPHn08G5gDigJkb6MLrKfwgFAlrcyYYACgkQJkb6MLrK fwheoRAAryzTzkzp0uL+oDRvupuLLgDizIoZytFdSyUuCrLr6qxOw0wqqGozQQ1W 3CE20TXaNZ87J1Pd22o+7hF4tKIZE4xrGo5OZ4cFbaHQ2M19q9d2KHZh8dKk5AFW zq9vxXT/G47UPx3SOUX5Q/TkvLjP1846SVb4KB0L/T49hhGRnWrJoUpbT1MgNkhN NVyeK++aTX4zx8p8JsbOfaM1TY/3Dchni7ejBObdorwMTgwetW3j3oANSvT9xdFe 9G36s6+h6KwHy5C026prFza2/t3OSogED/EzkJDKz1SZiQD2cOnIeZs1hQyP/wjy QWmumCTzhhfJBQ5xELFurwoV3bBHWArypdhA9phghF4+ELQGUkPQzezmPaXuEblN fn/PHYhzrSFFmiyRg4JBo/UWOXMzvUGFPVXriLYD3tJHuqs83qq5B6GWySc3x5Ok rTx8rdwl5iy9RJfgDOQBh3Dpb9a/LGYYCe7qYqD+OuDgfWOeQrsXLT7ec7o7L/Ih FStRG91QzoSoiCP/D0xHdWxw0E8mATh0FQoyyAFHolV9trejpSpmrJ4NxrK4Icpw Vq8bMbFWYXX1BvYzEunEL3iPhvwkPDmpSOktMdWDnosfoZxelV34DsINWK3Jw3ek KT0ackgndFTjNcsIMSEAw8dS8jRm9BlpMrwe8eAa5CD2L4nI8Sw= =ezv+ -----END PGP SIGNATURE----- --aVD9QWMuhilNxW9f-- From unknown Wed Aug 20 05:15:37 2025 X-Loop: help-debbugs@gnu.org Subject: bug#31216: commit 217b8c2e0 produces 'Can't locate Date/Parse.pm in @INC Error' perl error Resent-From: Mark H Weaver Original-Sender: "Debbugs-submit" Resent-CC: bug-guix@gnu.org Resent-Date: Wed, 25 Apr 2018 01:38:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 31216 X-GNU-PR-Package: guix X-GNU-PR-Keywords: To: Julien Lepiller Cc: 31216-done@debbugs.gnu.org Received: via spool by 31216-done@debbugs.gnu.org id=D31216.152462024732657 (code D ref 31216); Wed, 25 Apr 2018 01:38:02 +0000 Received: (at 31216-done) by debbugs.gnu.org; 25 Apr 2018 01:37:27 +0000 Received: from localhost ([127.0.0.1]:38607 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fB9N9-0008Uf-Cx for submit@debbugs.gnu.org; Tue, 24 Apr 2018 21:37:27 -0400 Received: from world.peace.net ([64.112.178.59]:54208) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fB9N7-0008US-OA for 31216-done@debbugs.gnu.org; Tue, 24 Apr 2018 21:37:26 -0400 Received: from mhw by world.peace.net with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1fB9N1-0002dr-Ci; Tue, 24 Apr 2018 21:37:19 -0400 From: Mark H Weaver References: <87r2nbubtr.fsf@gmail.com> <20180419143910.GB8699@jasmine.lan> <20180420144145.18837a78@lepiller.eu> <87zi1xxmh8.fsf@netris.org> <87r2n9xhbq.fsf@netris.org> Date: Tue, 24 Apr 2018 21:36:17 -0400 In-Reply-To: <87r2n9xhbq.fsf@netris.org> (Mark H. Weaver's message of "Sat, 21 Apr 2018 01:24:25 -0400") Message-ID: <87efj42hke.fsf@netris.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) I'm closing this bug now, but feel free to reopen it if you find that there are still problems. Mark From unknown Wed Aug 20 05:15:37 2025 X-Loop: help-debbugs@gnu.org Subject: bug#31216: commit 217b8c2e0 produces 'Can't locate Date/Parse.pm in @INC Error' perl error Resent-From: myglc2@gmail.com Original-Sender: "Debbugs-submit" Resent-CC: bug-guix@gnu.org Resent-Date: Wed, 25 Apr 2018 13:35:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 31216 X-GNU-PR-Package: guix X-GNU-PR-Keywords: To: Mark H Weaver Cc: 31216-done@debbugs.gnu.org, Julien Lepiller , 31216@debbugs.gnu.org Received: via spool by 31216-submit@debbugs.gnu.org id=B31216.152466325916140 (code B ref 31216); Wed, 25 Apr 2018 13:35:01 +0000 Received: (at 31216) by debbugs.gnu.org; 25 Apr 2018 13:34:19 +0000 Received: from localhost ([127.0.0.1]:38865 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fBKYt-0004CB-Bk for submit@debbugs.gnu.org; Wed, 25 Apr 2018 09:34:19 -0400 Received: from mail-qt0-f173.google.com ([209.85.216.173]:41305) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fBKYq-0004Bs-DV; Wed, 25 Apr 2018 09:34:17 -0400 Received: by mail-qt0-f173.google.com with SMTP id d3-v6so26771510qth.8; Wed, 25 Apr 2018 06:34:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=IdUrpj2Mc0i5hbPxYAqVOt+iaBoprM4QdnjNo/lDvks=; b=eFejRtRC3yuDVXk06RJV76LD2FfRi4WdIHSfemsV28NRCkc9MqVvM3PGsivE1Gszt+ 9iGTRM4G3YnEPbQ5L4e8ru8Hl5tiVW6qXLJ4iWNydW7lfVXDhOutR484q/piRYXhQehY YQc+Z6nqiNXDBC3aBdIlzxoTGvTQVyyCyy722GGdMe/z9yZlhJQZtvNAEXnRT6fHnySA LHtssW3q3u7yHne8P7dxcK9OZtTsBrYWdK7Kg33aRgZvIsG8Oy1ey0CmgYi1jEG19Xg9 06DQnMWmGP2uLEdIjE/kU2gsMZ+IVsC10jfFWZ9m19igSYGXyiB5emTiPI+dAy2Rbcqb RIpg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=IdUrpj2Mc0i5hbPxYAqVOt+iaBoprM4QdnjNo/lDvks=; b=uWbVZcX4PVoWnyArD51mSJcjT/juutZFHOWqAaEbcccBJ9ZeZkXqnZJ88UYqlGoGM9 Xi91Yf8ztvbPMeWHF34rlMXnuf1GR+S3/YPqgwRPs7QRz+KFgZ7nS41XmcJZl6O4mcJu qU3gRTiZO3ZZ2j45OWJPz7arviWd3P0JlCAOx5qvT86hx5EAquO4SAuejl2OIW3Wt+11 0n7YJQQiLUHAQt8Wg7t99tskCvGbyPSnGd5QByIjVnRIMqjbyWEYEAo/UfmMo7THD6dS /A9yFeBxeIWHyUkBbOyoWOlI2UTcsmXVP4DlfWQcnljgg1n9yGNzm1IxnZmSr6EFechk y39A== X-Gm-Message-State: ALQs6tAFkKih7euSJYFR97VKHHW1f/DRUavBiJ13znh5NBsIc5OZxZkh Ddf2Pkznrx2EpB4SUWMjzSu5aQ== X-Google-Smtp-Source: AB8JxZpPBt2uPhR6xAePxuPo/x9QWqYqdtbFTsndaDIVzLfuDXyYIBUW7dOZRVEeVcquJ3ZWUco18w== X-Received: by 2002:aed:2ba3:: with SMTP id e32-v6mr31671143qtd.272.1524663250542; Wed, 25 Apr 2018 06:34:10 -0700 (PDT) Received: from g1 (c-73-167-118-254.hsd1.ma.comcast.net. [73.167.118.254]) by smtp.gmail.com with ESMTPSA id x28-v6sm1480071qtx.95.2018.04.25.06.34.08 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 25 Apr 2018 06:34:08 -0700 (PDT) From: myglc2@gmail.com References: <87r2nbubtr.fsf@gmail.com> <20180419143910.GB8699@jasmine.lan> <20180420144145.18837a78@lepiller.eu> <87zi1xxmh8.fsf@netris.org> <87r2n9xhbq.fsf@netris.org> <87efj42hke.fsf@netris.org> Date: Wed, 25 Apr 2018 09:34:07 -0400 In-Reply-To: <87efj42hke.fsf@netris.org> (Mark H. Weaver's message of "Tue, 24 Apr 2018 21:36:17 -0400") Message-ID: <8736zjfm0g.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.3 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: 0.3 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.7 (/) --=-=-= Content-Type: text/plain On 04/24/2018 at 21:36 Mark H Weaver writes: > I'm closing this bug now, but feel free to reopen it if you find that > there are still problems. > > Mark Hello Mark, Still see the problem. Using "b24b19e3f gnu: retroarch: Update to 1.7.2." to build "guix (GNU Guix) 0.14.0.4418-b24b1" ... g1@g1 ~/src/guix$ guix environment --ad-hoc perl perl-timedate make substitute: updating list of substitutes from 'https://mirror.hydra.gnu.org'... 100.0% The following derivations will be built: /gnu/store/ayrxnbdb7b6fksg2bmf0f1zx6cynxzhh-profile.drv /gnu/store/xhzz6r8y2kqr6d58dlm2ijylb8z3q2s5-info-dir.drv /gnu/store/bxq1by3s2x0r742mz0h03wbr228gms0y-ca-certificate-bundle.drv /gnu/store/36l3lw3dlp239ds0giv9w1zn92j80g3n-fonts-dir.drv /gnu/store/5k76cb350q3ym35pn1jd9rd8gx37hqn0-manual-database.drv Creating manual page database... 794 entries processed in 0.8 s g1@g1 ~/src/guix [env]$ perl ~/.mail-mirror/mb2md-3.20.pl Can't locate Date/Parse.pm in @INC (you may need to install the Date::Parse module) (@INC contains: /gnu/store/7dckxj5l8kxcacm56k0yn3r62hrsj4if-profile/lib/perl5/site_perl/5.26.2/x86_64-linux-thread-multi /gnu/store/7dckxj5l8kxcacm56k0yn3r62hrsj4if-profile/lib/perl5/site_perl/5.26.2 /gnu/store/7dckxj5l8kxcacm56k0yn3r62hrsj4if-profile/lib/perl5/site_perl /gnu/store/ynk3rg3i791i6k7rz2imbyj9wyfjrnrc-perl-5.26.2/lib/perl5/site_perl/5.26.2/x86_64-linux-thread-multi /gnu/store/ynk3rg3i791i6k7rz2imbyj9wyfjrnrc-perl-5.26.2/lib/perl5/site_perl/5.26.2 /gnu/store/ynk3rg3i791i6k7rz2imbyj9wyfjrnrc-perl-5.26.2/lib/perl5/5.26.2/x86_64-linux-thread-multi /gnu/store/ynk3rg3i791i6k7rz2imbyj9wyfjrnrc-perl-5.26.2/lib/perl5/5.26.2) at /home/g1/.mail-mirror/mb2md-3.20.pl line 385. BEGIN failed--compilation aborted at /home/g1/.mail-mirror/mb2md-3.20.pl line 385. The offencing script is attached. TIA - George --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=mb2md-3.20.pl Content-Transfer-Encoding: base64 IyEvdXNyL2Jpbi9wZXJsIC13CiMKIyAkSWQ6IG1iMm1kLnBsLHYgMS4yNiAyMDA0LzAzLzI4IDAw OjA5OjQ2IGp1cmkgRXhwICQKIwojIG1iMm1kLTMuMjAucGwgICAgICBDb252ZXJ0cyBNYm94IG1h aWxib3hlcyB0byBNYWlsZGlyIGZvcm1hdC4KIwojIFB1YmxpYyBkb21haW4uCiMKIyBjdXJyZW50 bHkgbWFpbnRhaW5lZCBieToKIyBKdXJpIEhhYmVybGFuZCA8anVyaUBrb3NjaGlrb2RlLmNvbT4K IyBpbml0aWFsbHkgd3JvdGUgYnk6CiMgUm9iaW4gV2hpdHRsZQojCiMgVGhpcyBzY3JpcHQncyB3 ZWIgYWJvZGUgaXMgaHR0cDovL2JhdGxldGguc2FwaWVudGktc2F0Lm9yZy9wcm9qZWN0cy9tYjJt ZC8gLgojIEZvciBhIGNoYW5nZWxvZyBzZWUgaHR0cDovL2JhdGxldGguc2FwaWVudGktc2F0Lm9y Zy9wcm9qZWN0cy9tYjJtZC9jaGFuZ2Vsb2cudHh0CiMKIyBUaGUgTWJveCAtPiBNYWlsZGlyIGlu bmVyIGxvb3AgaXMgYmFzZWQgb24gIHFtYWlsJ3Mgc2NyaXB0IG1ib3gybWFpbGRpciwgd2hpY2gK IyB3YXMga2x1ZGdlZCBieSBJdmFuIEtvaGxlciBpbiAxOTk3IGZyb20gY29udmVydGFuZGNyZWF0 ZSAocHVibGljIGRvbWFpbikKIyBieSBSdXNzZWwgTmVsc29uLiAgQm90aCB0aGVzZSBjb252ZXJ0 IGEgc2luZ2xlIG1haWxzcG9vbCBmaWxlLgojCiMgVGhlIHFtYWlsIGRpc3RyaWJ1dGlvbiBoYXMg YSBtYWlsZGlyMm1ib3guYyBwcm9ncmFtLgojCiMgV2hhdCBpcyBkb2VzOgojID09PT09PT09PT09 PT0KIwojIFJlYWRzIGEgZGlyZWN0b3J5IGZ1bGwgb2YgTWJveCBmb3JtYXQgbWFpbGJveGVzIGFu ZCBjcmVhdGVzIGEgc2V0IG9mCiMgTWFpbGRpciBmb3JtYXQgbWFpbGJveGVzLiAgU29tZSBkZXRh aWxzIG9mIHRoaXMgYXJlIHRvIHN1aXQgQ291cmllcgojIElNQVAncyBuYW1pbmcgY29udmVudGlv bnMgZm9yIE1haWxkaXIgbWFpbGJveGVzLgojCiMgICBodHRwOi8vd3d3LmludGVyNy5jb20vY291 cmllcmltYXAvCiMKIyBUaGlzIGlzIGludGVuZGVkIHRvIGF1dG9tYXRlIHRoZSBjb252ZXJzaW9u IG9mIHRoZSBvbGQKIyAvdmFyL3Nwb29sL21haWwvYmxhaCBmaWxlIC0gd2l0aCBvbmUgY2FsbCBv ZiB0aGlzIHNjcmlwdCAtIGFuZCB0bwojIGNvbnZlcnQgb25lIG9yIG1vcmUgbWFpbGJveGVzIGlu IGEgc3BlY2lmZWQgZGlyZWN0b3J5IHdpdGggc2VwYXJhdGUKIyBjYWxscyB3aXRoIG90aGVyIGNv bW1hbmQgbGluZSBhcmd1bWVudHMuCiMKIyBSdW4gdGhpcyBhcyB0aGUgdXNlciAtIGluIHRoZXNl IGV4YW1wbGVzICJibGFoIi4KCiMgVGhpcyB2ZXJzaW9uIHN1cHBvcnRzIGNvbnZlcnNpb24gb2Y6 CiMKIyAgICBEYXRlICAgIFRoZSBkYXRlLXRpbWUgaW4gdGhlICJGcm9tICIgbGluZSBvZiB0aGUg bWVzc2FnZSBpbiB0aGUKIyAgICAgICAgICAgIE1ib3ggZm9ybWF0IGlzIHRoZSBkYXRlIHdoZW4g dGhlIG1lc3NhZ2Ugd2FzICpyZWNlaXZlZCouCiMgICAgICAgICAgICBUaGlzIGlzIHRyYW5zZm9y bWVkIGludG8gdGhlIGRhdGUtdGltZSBvZiB0aGUgZmlsZSB3aGljaAojICAgICAgICAgICAgY29u dGFpbnMgdGhlIG1lc3NhZ2UgaW4gdGhlIE1haWxkaXIgbWFpbGJveC4KIwojICAgICAgICAgICAg VGhpcyByZWxpZXMgb24gdGhlIERhdGU6OlBhcnNlIHBlcmwgbW9kdWxlIGFuZCB0aGUgdXRpbWUK IyAgICAgICAgICAgIHBlcmwgZnVuY3Rpb24uCiMKIyAgICAgICAgICAgIFRoZSBzY3JpcHQgdHJp ZXMgdG8gY29wZSB3aXRoIGVycmFudCBmb3JtcyBvZiB0aGUKIyAgICAgICAgICAgIE1ib3ggIkZy b20gIiBsaW5lIHdoaWNoIGl0IG1heSBlbmNvdW50ZXIsIGJ1dCBpZgojICAgICAgICAgICAgdGhl cmUgaXMgc29tZXRoaW5nIHJlYWxseSBzY3Jld3kgaW4gYSBGcm9tIGxpbmUsCiMgICAgICAgICAg ICB0aGVuIHBlcmhhcHMgdGhlIHNjcmlwdCB3aWxsIGZhaWwgd2hlbiAidG91Y2giCiMgICAgICAg ICAgICBpcyBnaXZlbiBhbiBpbnZhbGlkIGRhdGUuICBQbGVhc2UgcmVwb3J0IHRoZQojICAgICAg ICAgICAgZXhhY3QgbmF0dXJlIG9mIGFueSBzdWNoICJGcm9tICIgbGluZSEKIwojCiMgICBGbGFn Z2VkCiMgICBSZXBsaWVkCiMgICBSZWFkID0gU2VlbgojICAgVGFnZ2VkIGZvciBEZWxldGlvbgoj CiMgICAgICAgICAgICBJbiB0aGUgTWJveCBtZXNzYWdlLCBmbGFncyBmb3IgdGhlc2UgYXJlIGZv dW5kIGluIHRoZQojICAgICAgICAgICAgIlN0YXR1czogTiIgb3IgIlgtU3RhdHVzOiBOIiBoZWFk ZXJzLCB3aGVyZSAiTiIgaXMgMAojICAgICAgICAgICAgb3IgbW9yZSBvZiB0aGUgZm9sbG93aW5n IGNoYXJhY3RlcnMgaW4gdGhlIGxlZnQgY29sdW1uLgojCiMgICAgICAgICAgICBUaGV5IGFyZSBj b252ZXJ0ZWQgdG8gY2hhcmFjdGVycyBpbiB0aGUgcmlnaHQgY29sdW1uLAojICAgICAgICAgICAg d2hpY2ggYmVjb21lIHRoZSBsYXN0IGNoYXJhY3RlcnMgb2YgdGhlIGZpbGUgbmFtZSwKIyAgICAg ICAgICAgIGZvbGxvd2luZyB0aGUgIjoyLCIgd2hpY2ggaW5kaWNhdGVzIElNQVAgbWVzc2FnZSBz dGF0dXMuCiMKIwojICAgICAgICAgICAgICAgIEYgLT4gRiAgICAgIEZsYWdnZWQKIyAgICAgICAg ICAgICAgICBBIC0+IFIgICAgICBSZXBsaWVkCiMgICAgICAgICAgICAgICAgUiAtPiBTICAgICAg UmVhZCA9IFNlZW4KIyAgICAgICAgICAgICAgICBEIC0+IFQgICAgICBUYWdnZWQgZm9yIERlbGV0 aW9uIChUcmFzaCkKIwojICAgICAgICAgICAgVGhpcyBpcyBiYXNlZCBvbiB0aGUgd29yayBvZiBQ aGlsaXAgTWFrIHdobyB3cm90ZSBhCiMgICAgICAgICAgICBjb21wbGV0ZWx5IHNlcGFyYXRlIE1i b3ggLT4gTWFpbGRpciBjb252ZXJ0ZXIgY2FsbGVkCiMgICAgICAgICAgICBwZXJmZWN0X21haWxk aXIgYW5kIHBvc3RlZCBpdCB0byB0aGUgTXV0dC11c2VycyBtYWlsaW5nCiMgICAgICAgICAgICBs aXN0IG9uIDI1IERlY2VtYmVyIDIwMDE6CiMKIyAgICAgICAgICAgICAgIGh0dHA6Ly93d3cubWFp bC1hcmNoaXZlLmNvbS9tdXR0LXVzZXJzQG11dHQub3JnL21zZzIxODcyLmh0bWwKIwojICAgICAg ICAgICAgTWljaGFlbCBCZXN0IG9yaWdpbmFsbHkgaW50ZWdyYXRlZCB0aG9zZSBjaGFuZ2VzIGlu dG8gbWIybWQuCiMKIwojICAgSW4gYWRkaXRpb24sIHRoZSBuYW1lcyBvZiB0aGUgbWVzc2FnZSBm aWxlcyBpbiB0aGUgTWFpbGRpciBhcmUgb2YgYQojICAgcmVndWxhciBsZW5ndGggYW5kIGFyZSBv ZiB0aGUgZm9ybToKIwojICAgICAgIDc2NTQzMjEuMDAwMTIzLm1ib3g6Mix4eHgKIwojICAgV2hl cmUgIjc2NTQzMjEiIGlzIHRoZSBVbml4IHRpbWUgaW4gc2Vjb25kcyB3aGVuIHRoZSBzY3JpcHQg d2FzCiMgICBydW4gYW5kICIwMDAxMjMiIGlzIHRoZSBzaXggemVyb2VzIHBhZGRlZCBtZXNzYWdl IG51bWJlciBhcwojICAgbWVzc2FnZXMgYXJlIGNvbnZlcnRlZCBmcm9tIHRoZSBNYm94IGZpbGUu ICAieHh4IiByZXByZXNlbnRzIHplcm8gb3IKIyAgIG1vcmUgb2YgdGhlIGFib3ZlIGZsYWdzIEYs IFIsIFMgb3IgVC4KIwojCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIwojIFVTQUdFCiMgPT09PT0KIwojIFJ1 biB0aGlzIGFzIHRoZSB1c2VyIG9mIHRoZSBtYWlsYm94ZXMsIG5vdCBhcyByb290LgojCiMKIyBt YjJtZCAtaAojIG1iMm1kIFstY10gLW0gWy1kIGRlc3RkaXJdCiMgbWIybWQgWy1jXSAtcyBzb3Vy Y2VmaWxlIFstZCBkZXN0ZGlyXQojIG1iMm1kIFstY10gLXMgc291cmNlZGlyIFstbCB3dS1tYWls Ym94bGlzdF0gWy1SfC1mIHNvbWVmb2xkZXJdIFstZCBkZXN0ZGlyXSBbLXIgc3RyaXBfZXh0ZW5z aW9uXQojCiMgIC1jICAgICAgICAgICAgdXNlIHRoZSBDb250ZW50LUxlbmd0aDogaGVhZGVycyAo aWYgcHJlc2VudCkgdG8gZmluZCB0aGUKIyAgICAgICAgICAgICAgICBiZWdpbm5pbmcgb2YgdGhl IG5leHQgbWVzc2FnZQojICAgICAgICAgICAgICAgIFVzZSB3aXRoIGNhdXRpb24hIFJlc3VsdHMg bWF5IGJlIHVucmVsaWFibGUuIEkgcmVjb21tZW5kIHRvIGRvCiMgICAgICAgICAgICAgICAgYSBy dW4gd2l0aG91dCAiLWMiIGZpcnN0IGFuZCBvbmx5IHVzZSBpdCBpZiB5b3UgYXJlIGNlcnRhaW4s CiMgICAgICAgICAgICAgICAgdGhhdCB0aGUgbWJveCBpbiBxdWVzdGlvbiByZWFsbHkgbmVlZHMg dGhlICItYyIgb3B0aW9uCiMKIyAgLW0gICAgICAgICAgICBJZiB0aGlzIGlzIHVzZWQgdGhlbiB0 aGUgc291cmNlIHdpbGwKIyAgICAgICAgICAgICAgICBiZSB0aGUgc2luZ2xlIG1haWxib3ggYXQg L3Zhci9zcG9vbC9tYWlsL2JsYWggZm9yCiMgICAgICAgICAgICAgICAgdXNlciBibGFoIGFuZCB0 aGUgZGVzdGluYXRpb24gbWFpbGJveCB3aWxsIGJlIHRoZQojICAgICAgICAgICAgICAgICJkZXN0 ZGlyIiBtYWlsYm94IGl0c2VsZi4KIwojCiMgIC1zIHNvdXJjZSAgICAgRGlyZWN0b3J5IG9yIGZp bGUgcmVsYXRpdmUgdG8gdGhlIHVzZXIncyBob21lIGRpcmVjdG9yeSwKIyAgICAgICAgICAgICAg ICB3aGljaCBpcyB3aGVyZSB0aGUgdGhlICJzb21lZm9sZGVycyIgZGlyZWN0b3JpZXMgYXJlIGxv Y2F0ZWQuCiMgICAgICAgICAgICAgICAgT3IgaWYgc3RhcnRpbmcgd2l0aCBhICIvIiBpdCBpcyB0 YWtlbiBhcyBhCiMgICAgICAgICAgICAgICAgYWJzb2x1dGUgcGF0aCwgZS5nLiAvbW50L29sZG1h aWwvdXNlcgojCiMgICAgICAgICAgICAgICAgb3IKIwojICAgICAgICAgICAgICAgIEEgc2luZ2xl IG1ib3ggZmlsZSB3aGljaCB3aWxsIGJlIGNvbnZlcnRlZCB0bwojICAgICAgICAgICAgICAgIHRo ZSBkZXN0ZGlyLgojCiMgIC1SCQkgSWYgZGVmaW5lZCwgZG8gbm90IHNraXAgZGlyZWN0b3JpZXMg Zm91bmQgaW4gYSBtYWlsYm94IAojCQkgZGlyZWN0b3J5LCBidXQgcnVucyByZWN1cnNpdmVseSBp bnRvIGVhY2ggb2YgdGhlbSwgCiMgCQkgY3JlYXRpbmcgYWxsIHdhbnRlZCBmb2xkZXJzIGluIE1h aWxkaXIuCiMJCSBJbmNvbXBhdGlibGUgd2l0aCAnLWYnCiMKIyAgLWYgc29tZWZvbGRlciBEaXJl Y3RvcmllcywgcmVsYXRpdmUgdG8gInNvdXJjZWRpciIgd2hlcmUgdGhlIE1ib3ggZmlsZXMKIyAg ICAgICAgICAgICAgICBhcmUuIEFsbCBtYWlsYm94ZXMgaW4gdGhlICJzb3VyY2VkaXIiCiMgICAg ICAgICAgICAgICAgZGlyZWN0b3J5IHdpbGwgYmUgY29udmVydGVkIGFuZCBwbGFjZWQgaW4gdGhl CiMgICAgICAgICAgICAgICAgImRlc3RkaXIiIGRpcmVjdG9yeS4gIChUeXBpY2FsbHkgdGhlIElu Ym94IGRpcmVjdG9yeQojICAgICAgICAgICAgICAgIHdoaWNoIGluIHRoaXMgaW5zdGFuY2UgaXMg YWxzbyBmdW5jdGlvbmluZyBhcyBhCiMgICAgICAgICAgICAgICAgZm9sZGVyIGZvciBvdGhlciBt YWlsYm94ZXMuKQojCiMgICAgICAgICAgICAgICAgVGhlICJzb21lZm9sZGVyIiBkaXJlY3RvcnkK IyAgICAgICAgICAgICAgICBuYW1lIHdpbGwgYmUgZW5jb2RlZCBpbnRvIHRoZSBuZXcgbWFpbGJv eGVzJyBuYW1lcy4KIyAgICAgICAgICAgICAgICBTZWUgdGhlIGV4YW1wbGVzIGJlbG93LgojCiMg ICAgICAgICAgICAgICAgVGhpcyBkb2VzIG5vdCBzYXZlIGFuIFVXIElNQVAgZHVtbXkgbWVzc2Fn ZSBmaWxlCiMgICAgICAgICAgICAgICAgYXQgdGhlIHN0YXJ0IG9mIHRoZSBNYm94IGZpbGUuICBT bWFsbCBjaGFuZ2VzCiMgICAgICAgICAgICAgICAgaW4gdGhlIGNvZGUgY291bGQgYWRhcHQgaXQg Zm9yIGxvb2tpbmcgZm9yCiMgICAgICAgICAgICAgICAgb3RoZXIgZGlzdGluY3RpdmUgcGF0dGVy bnMgb2YgZHVtbXkgbWVzc2FnZXMgdG9vLgojCiMgICAgICAgICAgICAgICAgRG9uJ3QgbGV0IHRo ZSBzb3VyY2UgZGlyZWN0b3J5IHlvdSBnaXZlIGFzICJzb21lZm9sZGVycyIKIyAgICAgICAgICAg ICAgICBjb250YWluIGFueSAiLiJzIGluIGl0cyBuYW1lLCB1bmxlc3MgeW91IHdhbnQgdG8KIyAg ICAgICAgICAgICAgICBjcmVhdGUgc3ViZm9sZGVycyBmcm9tIHRoZSBJTUFQIHVzZXIncyBwb2lu dCBvZgojICAgICAgICAgICAgICAgIHZpZXcuICBTZWUgdGhlIGV4YW1wbGUgYmVsb3cuCiMKIyAg ICAgICAgICAgICAgICBJbmNvbXBhdGlibGUgd2l0aCAnLWYnCiMKIwojICAtZCBkZXN0ZGlyICAg IERpcmVjdG9yeSB3aGVyZSB0aGUgTWFpbGRpciBmb3JtYXQgZGlyZWN0b3JpZXMgd2lsbCBiZSBj cmVhdGVkLgojICAgICAgICAgICAgICAgIElmIG5vdCBnaXZlbiwgdGhlbiB0aGUgZGVzdGluYXRp b24gd2lsbCBiZSB+L01haWxkaXIgLgojICAgICAgICAgICAgICAgIFR5cGljYWxseSwgdGhpcyBp cyB3aGF0IHRoZSBJTUFQIHNlcnZlciBzZWVzIGFzIHRoZQojICAgICAgICAgICAgICAgIEluYm94 IGFuZCB0aGUgZm9sZGVyIGZvciBhbGwgdXNlciBtYWlsYm94ZXMuCiMgICAgICAgICAgICAgICAg SWYgdGhpcyBiZWdpbnMgd2l0aCBhICcvJyB0aGUgcGF0aCBpcyBjb25zaWRlcmVkIHRvIGJlCiMg ICAgICAgICAgICAgICAgYWJzb2x1dGUsIG90aGVyd2lzZSBpdCBpcyByZWxhdGl2ZSB0byB0aGUg dXNlcnMKIyAgICAgICAgICAgICAgICBob21lIGRpcmVjdG9yeS4KIwojICAtciBzdHJpcF9leHQg IElmIGRlZmluZWQgdGhpcyBleHRlbnNpb24gd2lsbCBiZSBzdHJpcHBlZCBmcm9tCiMgICAgICAg ICAgICAgICAgdGhlIG9yaWdpbmFsIG1haWxib3ggZmlsZSBuYW1lIGJlZm9yZSBjcmVhdGluZwoj ICAgICAgICAgICAgICAgIHRoZSBjb3JyZXNwb25kaW5nIG1haWxkaXIuIFRoZSBleHRlbnNpb24g bXVzdCBiZQojICAgICAgICAgICAgICAgIGdpdmVuIHdpdGhvdXQgdGhlIGxlYWRpbmcgZG90ICgi LiIpLiBTZWUgdGhlIGV4YW1wbGUgYmVsb3cuCiMKIyAgLWwgV1UtZmlsZSAgICBGaWxlIGNvbnRh aW5pbmcgdGhlIGxpc3Qgb2Ygc3Vic2NyaWJlZCBmb2xkZXJzLiAgSWYKIyAgICAgICAgICAgICAg ICBtaWdyYXRpbmcgZnJvbSBXVS1JTUFQIHRoZSBsaXN0IG9mIHN1YnNjcmliZWQgZm9sZGVycyB3 aWxsCiMgICAgICAgICAgICAgICAgYmUgZm91bmQgaW4gdGhlIGZpbGUgY2FsbGVkIC5tYWlsYm94 bGlzdCBpbiB0aGUgdXNlcnMKIyAgICAgICAgICAgICAgICBob21lIGRpcmVjdG9yeS4gIFRoaXMg d2lsbCBjb252ZXJ0IGFsbCBzdWJzY3JpYmVkIGZvbGRlcnMKIyAgICAgICAgICAgICAgICBmb3Ig YSBzaW5nbGUgdXNlcjoKIyAgICAgICAgICAgICAgICAvYmluL21iMm1kIC1zIG1haWwgLWwgLm1h aWxib3hsaXN0IC1SIC1kIE1haWxkaXIKIyAgICAgICAgICAgICAgICBhbmQgZm9yIGFsbCB1c2Vy cyBpbiBhIGRpcmVjdG9yeSBhcyByb290IHlvdSBjYW4gZG8gdGhlCiMgICAgICAgICAgICAgICAg Zm9sbG93aW5nOgojICAgICAgICAgICAgICAgIGZvciBpIGluICo7IGRvIGVjaG8gJGk7c3UgLSAk aSAtYyAiL2Jpbi9tYjJtZCAtcyBtYWlsIC1sIC5tYWlsYm94bGlzdCAtUiAtZCBNYWlsZGlyIjtk b25lCiMKIwojICBFeGFtcGxlCiMgID09PT09PT0KIwojIFdlIGhhdmUgYSBidW5jaCBvZiBkaXJl Y3RvcmllcyBvZiBNYm94IG1haWxib3hlcyBsb2NhdGVkIGF0CiMgL2hvbWUvYmxhaC9vbGRtYWls LwojCiMgICAgIC9ob21lL2JsYWgvb2xkbWFpbC9mZmZmZgojICAgICAvaG9tZS9ibGFoL29sZG1h aWwvZ2dnZ2cKIyAgICAgL2hvbWUvYmxhaC9vbGRtYWlsL3h4eC9hYWFhCiMgICAgIC9ob21lL2Js YWgvb2xkbWFpbC94eHgvYmJiYgojICAgICAvaG9tZS9ibGFoL29sZG1haWwveHh4L2NjY2MKIyAg ICAgL2hvbWUvYmxhaC9vbGRtYWlsL3h4eC9kZGRkCiMgICAgIC9ob21lL2JsYWgvb2xkbWFpbC95 eXl5L2h1ZXkKIyAgICAgL2hvbWUvYmxhaC9vbGRtYWlsL3l5eXkvZHVleQojICAgICAvaG9tZS9i bGFoL29sZG1haWwveXl5eS9sb3VpZQojCiMgV2l0aCB0aGUgVVcgSU1BUCBzZXJ2ZXIsIGZmZmZm IGFuZCBnZ2dnZyB3b3VsZCBoYXZlIGFwcGVhcmVkIGluIHRoZSByb290CiMgb2YgdGhpcyBtYWls IHNlcnZlciwgYWxvbmcgd2l0aCB0aGUgSW5ib3guICBhYWFhLCBiYmJiIGV0Yywgd291bGQgaGF2 ZQojIGFwcGVhcmVkIGluIGEgZm9sZGVyIGNhbGxlZCB4eHggZnJvbSB0aGF0IHJvb3QsIGFuZCB4 eHggd2FzIGp1c3QgYSBmb2xkZXIKIyBub3QgYSBtYWlsYm94IGZvciBzdG9yaW5nIG1lc3NhZ2Vz LgojCiMgV2UgYWxzbyBoYXZlIHRoZSBtYWlsc3Bvb2wgSW5ib3ggYXQ6CiMKIyAgICAgL3Zhci9z cG9vbC9tYWlsL2JsYWgKIwojCiMgVG8gY29udmVydCB0aGVzZSwgYXMgdXNlciBibGFoLCB3ZSBn aXZlIHRoZSBmaXJzdCBjb21tYW5kOgojCiMgICAgbWIybWQgLW0KIwojIFRoZSBtYWluIE1haWxk aXIgZGlyZWN0b3J5IHdpbGwgYmUgY3JlYXRlZCBpZiBpdCBkb2VzIG5vdCBleGlzdC4KIyAoVGhp cyBpcyB0cnVlIG9mIGFueSBhcmd1bWVudCBvcHRpb25zLCBub3QganVzdCAiLW0iLikKIwojICAg IC9ob21lL2JsYWgvTWFpbGRpci8KIwojIEl0IGhhcyB0aGUgZm9sbG93aW5nIHN1YmRpcmVjdG9y aWVzOgojCiMgICAgL2hvbWUvYmxhaC9NYWlsZGlyL3RtcC8KIyAgICAvaG9tZS9ibGFoL01haWxk aXIvbmV3LwojICAgIC9ob21lL2JsYWgvTWFpbGRpci9jdXIvCiMKIyBUaGVuIC92YXIvc3Bvb2wv YmxhaCBmaWxlIGlzIHJlYWQsIHNwbGl0IGludG8gaW5kaXZpZHVhbCBmaWxlcyBhbmQKIyB3cml0 dGVuIGludG8gL2hvbWUvYmxhaC9NYWlsZGlyL2N1ci8gLgojCiMgTm93IHdlIGdpdmUgdGhlIHNl Y29uZCBjb21tYW5kOgojCiMgICAgbWIybWQgIC1zIG9sZG1haWwgLVIKIwojIFRoaXMgcmVhZHMg cmVjdXJzaXZlbHkgYWxsIE1ib3ggbWFpbGJveGVzIGFuZCBjcmVhdGVzOgojCiMgICAgL2hvbWUv YmxhaC9NYWlsZGlyLy5mZmZmZi8KIyAgICAvaG9tZS9ibGFoL01haWxkaXIvLmdnZ2dnLwojICAg IC9ob21lL2JsYWgvTWFpbGRpci8ueHh4LwojICAgIC9ob21lL2JsYWgvTWFpbGRpci8ueHh4LmFh YWEvCiMgICAgL2hvbWUvYmxhaC9NYWlsZGlyLy54eHguYmJiYi8KIyAgICAvaG9tZS9ibGFoL01h aWxkaXIvLnh4eC5jY2NjLwojICAgIC9ob21lL2JsYWgvTWFpbGRpci8ueHh4LmFhYWEvCiMgICAg L2hvbWUvYmxhaC9NYWlsZGlyLy55eXl5LwojICAgIC9ob21lL2JsYWgvTWFpbGRpci8ueXl5eS5o dWV5LwojICAgIC9ob21lL2JsYWgvTWFpbGRpci8ueXl5eS5kdWV5LwojICAgIC9ob21lL2JsYWgv TWFpbGRpci8ueXl5eS5sb3VpZS8KIwojICBUaGUgcmVzdWx0LCBmcm9tIHRoZSBJTUFQIGNsaWVu dCdzIHBvaW50IG9mIHZpZXcgaXM6CiMKIyAgICBJbmJveCAtLS0tLS0tLS0tLS0tLS0tLQojICAg ICAgICB8CiMgICAgICAgIHwgZmZmZmYgLS0tLS0tLS0tLS0KIyAgICAgICAgfCBnZ2dnZyAtLS0t LS0tLS0tLQojICAgICAgICB8CiMgICAgICAgIC0geHh4IC0tLS0tLS0tLS0tLS0KIyAgICAgICAg fCAgIHwgYWFhYSAtLS0tLS0tLQojICAgICAgICB8ICAgfCBiYmJiIC0tLS0tLS0tCiMgICAgICAg IHwgICB8IGNjY2MgLS0tLS0tLS0KIyAgICAgICAgfCAgIHwgZGRkZCAtLS0tLS0tLQojICAgICAg ICB8CiMgICAgICAgIC0geXl5eSAtLS0tLS0tLS0tLS0KIyAgICAgICAgICAgICB8IGh1ZXkgLS0t LS0tLQojICAgICAgICAgICAgIHwgZHVleSAtLS0tLS0tCiMgICAgICAgICAgICAgfCBsb3VpZSAt LS0tLS0KIwojIE5vdGUgdGhhdCBhbHRob3VnaCB+L01haWxkaXIvLnh4eC8gYW5kIH4vTWFpbGRp ci8ueXl5eSBtYXkgYXBwZWFyCiMgYXMgZm9sZGVycyB0byB0aGUgSU1BUCBjbGllbnQgdGhlIGFi b3ZlIGNvbW1hbmRzIHRvIG5vdCBnZW5lcmF0ZQojIGFueSBNYWlsZGlyIGZvbGRlcnMgb2YgdGhl c2UgbmFtZXMuICBUaGVzZSBhcmUgc2ltcGx5IGVsZW1lbnRzCiMgb2YgdGhlIG5hbWVzIG9mIG90 aGVyIE1haWxkaXIgZGlyZWN0b3JpZXMuIChpZiB5b3UgdXNlZCAnLVInLCB0aGV5IAojIHdoaWxs IGJlIGFibGUgdG8gYWN0IGFzIG5vcm1hbCBmb2xkZXJzLCBjb250YWluaW5nIG1lc3NhZ2VzIEFO RCBmb2xkZXJzKQojCiMgV2l0aCBhIHNlcGFyYXRlIHJ1biBvZiB0aGlzIHNjcmlwdCwgdXNpbmcg anVzdCB0aGUgIi1zIiBvcHRpb24KIyB3aXRob3V0ICItZiIgbm9yICItUiIsIGl0IHdvdWxkIGJl IHBvc3NpYmxlIHRvIGNyZWF0ZSBtYWlsYm94ZXMgd2hpY2gKIyBhcHBlYXIgYXQgdGhlIHNhbWUg bG9jYXRpb24gYXMgZmFyIGFzIHRoZSBJTUFQIGNsaWVudCBpcwojIGNvbmNlcm5lZC4gIEJ5IGhh dmluZyBNYm94IG1haWxib3hlcyBpbiBzb21lIGRpcmVjdG9yeToKIyB+L29sZG1haWwvbm5uLyBv ZiB0aGUgZm9ybToKIwojICAgICAvaG9tZS9ibGFoL29sZG1haWwvbm4veHh4eAojICAgICAvaG9t ZS9ibGFoL29sZG1haWwvbm4veXl5eXkKIwojIHRoZW4gdGhlIGNvbW1hbmQ6CiMKIyAgIG1iMm1k IC1zIG9sZG1haWwvbm4KIwojIHdpbGwgY3JlYXRlIHR3byBuZXcgTWFpbGRpcnM6CiMKIyAgICAv aG9tZS9ibGFoL01haWxkaXIvLnh4eC8KIyAgICAvaG9tZS9ibGFoL01haWxkaXIvLnl5eXkvCiMK IyBUaGVuIHdoYXQgdXNlZCB0byBiZSB0aGUgeHh4IGFuZCB5eXl5IGZvbGRlcnMgbm93IGZ1bmN0 aW9uIGFzCiMgbWFpbGJveGVzIHRvby4gIE5ldHNjYXBlIDQuNzcgbmVlZGVkIHRvIGJlIHB1dCB0 byBzbGVlcCBhbmQgZ2l2ZW4gRUNUCiMgdG8gcmVjb2duaXNlIHRoaXMgLSBkZWxldGluZyB0aGUg Y29udGVudHMgb2YgKFdpbjJrIGV4YW1wbGUpOgojCiMgICAgQzpcUHJvZ3JhbSBGaWxlc1xOZXRz Y2FwZVxVc2Vyc1x1dVxJbWFwTWFpbFxhYWEuYmJiLmNjY1wKIwojIHdoZXJlICJ1dSIgaXMgdGhl IHVzZXIgYW5kICJhYWEuYmJiLmNjYyIgaXMgdGhlIElNQVAgc2VydmVyCiMKIyBJIG9mdGVuIGZp bmQgdGhhdCBkZWxldGluZyBhbGwgdGhpcyBkaXJlY3RvcnkncyBjb250ZW50cywgZXhjZXB0CiMg InJ1bGVzLmRhdCIsIGZvcmNlcyBOZXRzY2FwZSBiYWNrIHRvIHJlYWxpdHkgYWZ0ZXIgaXRzIElN QVAgaW5uYXJkcwojIGhhdmUgYmVjb21lIHR3aXN0ZWQuICBUaGVuIG1heWJlIHVzZSBGaWxlID4g U3Vic2NyaWJlIC0gYnV0IHRoaXMKIyBzZWVtcyBpbmNhcGFibGUgb2Ygc3Vic2NyaWJpbmcgdG8g Zm9sZGVycy4KIwojIEZvciBPdXRsb29rIEV4cHJlc3MsIHNlbGVjdCB0aGUgbWFpbCBzZXJ2ZXIs IHRoZW4gY2xpY2sgdGhlCiMgIklNQVAgRm9sZGVycyIgYnV0dG9uIGFuZCB1c2UgIlJlc2V0IGxp c3QiLiAgSW4gdGhlICJBbGwiCiMgd2luZG93LCBzZWxlY3QgdGhlIG1haWxib3hlcyB5b3Ugd2Fu dCB0byBzZWUgaW4gbm9ybWFsCiMgdXNhZ2UuCiMKIwojIFRoaXMgc2NyaXB0IGRpZCBub3QgcmVj dXJzZSBzdWJkaXJlY3RvcmllcyBvciBkZWxldGUgb2xkIG1haWxib3hlcywgYmVmb3JlIGFkZGl0 aW9uIG9mIHRoZSAnLVInIHBhcmFtZXRlciA6KQojCiMgQmUgc3VyZSBub3QgdG8gYmUgYWNjZXNz aW5nIHRoZSBNYm94IG1haWxib3hlcyB3aGlsZSBydW5uaW5nIHRoaXMKIyBzY3JpcHQuICBJdCBk b2VzIG5vdCBhdHRlbXB0IHRvIGxvY2sgdGhlbS4gIExpa2V3aXNlLCBkb24ndCBydW4gdHdvCiMg Y29waWVzIG9mIHRoaXMgc2NyaXB0IGVpdGhlci4KIwojCiMgVHJpY2tpZXIgdXNhZ2UgLiAuIC4K IyA9PT09PT09PT09PT09PT09PT09PQojCiMgSWYgeW91IGhhdmUgYSBidW5jaCBvZiBtYWlsYm94 ZXMgaW4gYSBkaXJlY3Rvcnkgfi9vbGRtYWlsL2Rvb3JzLwojIGFuZCB5b3Ugd2FudCB0aGVtIHRv IGFwcGVhciBpbiBmb2xkZXJzIHN1Y2ggYXM6CiMKIyB+L01haWxkaXIvLm11c2ljLmJhbmRzLmRv b3JzLkppbQojIH4vTWFpbGRpci8ubXVzaWMuYmFuZHMuZG9vcnMuSm9obgojCiMgZXRjLiBzbyB0 aGV5IGFwcGVhciBpbiBhbiBJTUFQIGZvbGRlcjoKIwojICAgIEluYm94IC0tLS0tLS0tLS0tLS0t LS0tCiMgICAgICAgIHwgbXVzaWMKIyAgICAgICAgICAgICAgfCBiYW5kcwojICAgICAgICAgICAg ICAgICAgICB8IGRvb3JzCiMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgSmltCiMgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgSm9obgojICAgICAgICAgICAgICAgICAgICAgICAgICB8IFJv YmJpZQojICAgICAgICAgICAgICAgICAgICAgICAgICB8IFJheQojCiMgVGhlbiB5b3UgY291bGQg cmVuYW1lIHRoZSBzb3VyY2UgZGlyZWN0b3J5IHRvOgojCiMgIH4vb2xkbWFpbC9tdXNpYy5iYW5k cy5kb29ycy8KIwojIHRoZW4gdXNlOgojCiMgICBtYjJtZCAtcyBvbGRtYWlsIC1mIG11c2ljLmJh bmRzLmRvb3JzCiMKIwojIE9yIHNpbXBseSB1c2UgJy1SJyBzd2l0Y2ggd2l0aDoKIyAgIG1iMm1k IC1zIG9sZG1haWwgLVIKIwojCiMgU3RyaXBwaW5nIG1haWxib3ggZXh0ZW5zaW9uczoKIyA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PSAKIwojIElmIHlvdSB3YW50IHRvIGNvbnZlcnQgbWFp bGJveGVzIHRoYXQgY2FtZSBmb3IgZXhhbXBsZSBmcm9tCiMgYSBXaW5kb3dzIGJveCB0aGFuIHlv dSBtaWdodCB3YW50IHRvIHN0cmlwIHRoZSBleHRlbnNpb24gb2YKIyB0aGUgbWFpbGJveCBuYW1l IHNvIHRoYXQgaXQgd29uJ3QgY3JlYXRlIGEgc3ViZm9sZGVyIGluIHlvdXIKIyBtYWlsIGNsaWVu dHMgdmlldy4KIwojIEV4YW1wbGU6CiMgWW91IGhhdmUgc2V2ZXJhbCBtYWlsYm94ZXMgbmFtZWQg VHJhc2gubWJ4LCBTZW50Lm1ieCwgRHJhZnRzLm1ieAojIElmIHlvdSBkb24ndCBzdHJpcCB0aGUg ZXh0ZW5zaW9uICJtYngiIHlvdSB3aWxsIGdldCB0aGUgZm9sbG93aW5nCiMgaGllcmFyY2h5Ogoj CiMgSW5ib3gKIyAgICAgIHwKIyAgICAgICAtIFRyYXNoIAojICAgICAgfCAgICAgICB8IG1ieAoj ICAgICAgfAojICAgICAgIC0gU2VudCAKIyAgICAgIHwgICAgICAgfCBtYngKIyAgICAgIHwKIyAg ICAgICAtIERyYWZ0cyAKIyAgICAgICAgICAgICAgfCBtYngKIwojIFRoaXMgaXMgbW9yZSB0aGFu IHVnbHkhCiMgSnVzdCB1c2U6CiMgICBtYjJtZCAtcyBvbGRtYWlsIC1yIG1ieAojCiMgTm90ZTog ZG9uJ3Qgc3BlY2lmeSB0aGUgZG90ISBJdCB3aWxsIGJlIHN0cmlwcGVkIG9mZgojIGF1dG9tYWdp Y2FsbHkgOykKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKdXNlIHN0cmljdDsKdXNlIEdldG9w dDo6U3RkOwp1c2UgRGF0ZTo6UGFyc2U7CnVzZSBJTzo6SGFuZGxlOwp1c2UgRmNudGw7CgoJCSAg ICAjIHByaW50IHRoZSB1c2FnZSBtZXNzYWdlCnN1YiB1c2FnZSgpIHsKICAgIHByaW50ICJVc2Fn ZTpcbiI7CiAgICBwcmludCAiICAgICAgIG1iMm1kIC1oXG4iOwogICAgcHJpbnQgIiAgICAgICBt YjJtZCBbLWNdIC1tIFstZCBkZXN0ZGlyXVxuIjsKICAgIHByaW50ICIgICAgICAgbWIybWQgWy1j XSAtcyBzb3VyY2VmaWxlIFstZCBkZXN0ZGlyXVxuIjsKICAgIGRpZSAgICIgICAgICAgbWIybWQg Wy1jXSAtcyBzb3VyY2VkaXIgWy1sIHd1LW1haWxib3hsaXN0XSBbLVJ8LWYgc29tZWZvbGRlcl0g Wy1kIGRlc3RkaXJdIFstciBzdHJpcF9leHRlbnNpb25dXG4iOwp9CgkJICAgICMgZ2V0IG9wdGlv bnMKbXkgJW9wdHM7CmdldG9wdHMoJ2Q6ZjpjaG1zOnI6bDpSJywgXCVvcHRzKSB8fCB1c2FnZSgp Owp1c2FnZSgpIGlmICggZGVmaW5lZCgkb3B0c3tofSkKCXx8ICghZGVmaW5lZCgkb3B0c3ttfSkg JiYgIWRlZmluZWQoJG9wdHN7c30pKSApOwoKIyBHZXQgdWlkLCB1c2VybmFtZSBhbmQgaG9tZSBk aXIKbXkgKCRuYW1lLCAkcGFzc3dkLCAkdWlkLCAkZ2lkLCAkcXVvdGEsICRjb21tZW50LCAkZ2Nv cywgJGhvbWVkaXIsICRzaGVsbCkgPSBnZXRwd3VpZCgkPCk7CgojIEdldCBhcmd1bWVudHMgYW5k IGRldGVybWluZSBzb3VyY2UKIyBhbmQgdGFyZ2V0IGRpcmVjdG9yaWVzLgpteSAkbWJyb290ID0g dW5kZWY7CSMgdGhpcyBpcyB0aGUgYmFzZSBkaXJlY3RvcnkgZm9yIHRoZSBtYm94ZXMKbXkgJG1i ZGlyID0gdW5kZWY7CSMgdGhpcyBpcyBhbiBtYm94IGRpciByZWxhdGl2ZSB0byB0aGUgJG1icm9v dApteSAkbWJmaWxlID0gdW5kZWY7CSMgdGhpcyBpcyBhbiBtYm94IGZpbGUKbXkgJGRlc3QgPSB1 bmRlZjsKbXkgJHN0cmlwX2V4dCA9IHVuZGVmOwpteSAkdXNlX2NsID0gdW5kZWY7CSMgZGVmaW5l cyB3aGV0aGVyIHdlIHVzZSB0aGUgQ29udGVudC1MZW5ndGg6IGhlYWRlciBpZiBwcmVzZW50Cgoj IGlmIG9wdGlvbiAiLWMiIGlzIGdpdmVuLCB3ZSB1c2UgdGhlIENvbnRlbnQtTGVuZ3RoOiBoZWFk ZXIgaWYgcHJlc2VudAojIGRhbmdlcm91cyEgbWF5IGJlIHVucmVsaWFibGUsIGFzIHRoZSB3aG9s ZSBDTCBzdHVmZiBpcyBhIGJhZCBpZGVhCmlmIChkZWZpbmVkKCRvcHRze2N9KSkKewoJJHVzZV9j bCA9IDE7Cn0gZWxzZSB7CgkkdXNlX2NsID0gMDsKfQoKIyBmaXJzdCwgaWYgdGhlIHVzZXIgaGFz IGdvbmUgdGhlIC1tIG9wdGlvbgojIHdlIHNpbXBseSBjb252ZXJ0IHRoZWlyIG1haWxmaWxlCmlm IChkZWZpbmVkKCRvcHRze219KSkKewoJaWYgKGRlZmluZWQoJEVOVnsnTUFJTCd9KSkgewoJCSRt YmZpbGUgPSAkRU5WeydNQUlMJ307Cgl9IGVsc2lmICggLWYgIi92YXIvc3Bvb2wvbWFpbC8kbmFt ZSIgKSB7CgkJJG1iZmlsZSA9ICIvdmFyL3Nwb29sL21haWwvJG5hbWUiCgl9IGVsc2lmICggLWYg Ii92YXIvbWFpbC8kbmFtZSIgKSB7CgkJJG1iZmlsZSA9ICIvdmFyL21haWwvJG5hbWUiCgl9IGVs c2UgewoJCWRpZSgiSSBzZWFyY2hlZCBcJE1BSUwsIC92YXIvc3Bvb2wvbWFpbC8kbmFtZSBhbmQg L3Zhci9tYWlsLyRuYW1lLCAiLgoJCQkiYnV0IEkgY291bGRuJ3QgZmluZCB5b3VyIG1haWwgc3Bv b2wgZmlsZSAtICIpOwoJfQp9CiMgc2VlIGlmIHRoZSB1c2VyIGhhcyBzcGVjaWZpZWQgYSBzb3Vy Y2UgZGlyZWN0b3J5CmVsc2lmIChkZWZpbmVkKCRvcHRze3N9KSkKewoJIyBpZiBvcHRze3N9IGRv ZXNuJ3Qgc3RhcnQgd2l0aCBhICIvIiB0aGVuCgkjIGl0IGlzIGEgc3ViZGlyIG9mIHRoZSB1c2Vy cyAkaG9tZQoJIyBpZiBpdCBkb2VzIHN0YXJ0IHdpdGggYSAiLyIgdGhlbgoJIyBsZXQncyB0YWtl ICRtYnJvb3QgYXMgYSBhYnNvbHV0IHBhdGgKCSRvcHRze3N9ID0gIiRob21lZGlyLyRvcHRze3N9 IiBpZiAoJG9wdHN7c30gIX4gL15cLy8pOyAKCgkjIGNoZWNrIGlmIHRoZSBnaXZlbiBzb3VyY2Ug aXMgYSBtYm94IGZpbGUKCWlmICgtZiAkb3B0c3tzfSkKCXsKCQkkbWJmaWxlID0gJG9wdHN7c307 Cgl9CgoJIyBvdGhlcndpc2UgY2hlY2sgaWYgaXQgaXMgYSBkaXJlY3RvcnkKCWVsc2lmICgtZCAk b3B0c3tzfSkKCXsKCQkkbWJyb290ID0gJG9wdHN7c307CgkJIyBnZXQgcmlkIG9mIHRyYWlsaW5n IC8ncwoJCSRtYnJvb3QgPX4gcy9cLyQvLzsKCgkJIyBjaGVjayBpZiB3ZSBoYXZlIGEgc3BlY2lm aWVkIHN1YiBkaXJlY3RvcnksCgkJIyBvdGhlcndpc2UgdGhlIHN1YiBkaXJlY3RvcnkgaXMgJy4n CgkJaWYgKGRlZmluZWQoJG9wdHN7Zn0pKQoJCXsKCQkJJG1iZGlyID0gJG9wdHN7Zn07CgkJCSMg Z2V0IHJpZCBvZiB0cmFpbGluZyAvJ3MKCQkJJG1iZGlyID1+IHMvXC8kLy87CgkJfQoJfQoKCSMg b3RoZXJ3aXNlIHdlIGhhdmUgYW4gZXJyb3IKCWVsc2UKCXsKCQlkaWUoIkZhdGFsOiBTb3VyY2Ug aXMgbm90IGFuIG1ib3ggZmlsZSBvciBhIGRpcmVjdG9yeSFcbiIpOwoJfQp9CgoKIyBnZXQgdGhl IGRlc3QKZGVmaW5lZCgkb3B0c3tkfSkgJiYgKCRkZXN0ID0gJG9wdHN7ZH0pIHx8ICgkZGVzdCA9 ICJNYWlsZGlyIik7CiMgc2VlIGlmIHdlIGhhdmUgYW55dGhpbmcgdG8gc3RyaXAKZGVmaW5lZCgk b3B0c3tyfSkgJiYgKCRzdHJpcF9leHQgPSAkb3B0c3tyfSk7CiMgTm8gJy1mJyB3aXRoICctUicK aWYoKGRlZmluZWQoJG9wdHN7Un0pKSYmKGRlZmluZWQoJG9wdHN7Zn0pKSkgeyBkaWUgIk5vIHJl Y3Vyc2lvbiB3aXRoIFwiLWZcIiI7fQojIEdldCBsaXN0IG9mIGZvbGRlcnMKbXkgQGZsaXN0Owpp ZihkZWZpbmVkKCRvcHRze2x9KSkKewogICAgb3BlbiAoTElTVCwkb3B0c3tsfSkgb3IgZGllICJD b3VsZCBub3Qgb3BlbiBtYWlsYm94IGxpc3QgJG9wdHN7bH06ICQhIjsKICAgIEBmbGlzdD08TElT VD47CiAgICBjbG9zZSBMSVNUOwp9CgojIGlmIHRoZSBkZXN0aW5hdGlvbiBpcyByZWxhdGl2ZSB0 byB0aGUgaG9tZSBkaXIsCiMgY2hlY2sgdGhhdCB0aGUgaG9tZSBkaXIgZXhpc3RzCmRpZSgiRmF0 YWw6IGhvbWUgZGlyICRob21lZGlyIGRvZXNuJ3QgZXhpc3QuXG4iKSBpZiAoJGRlc3QgIX4gL15c Ly8gJiYgICEgLWUgJGhvbWVkaXIpOwoKIwojIGZvcm0gdGhlIGRlc3RpbmF0aW9uIHZhbHVlCiMg c2xhcCB0aGUgaG9tZSBkaXIgb24gdGhlIGZyb250IG9mIHRoZSBkZXN0IGlmIHRoZSBkZXN0IGRv ZXMgbm90IGJlZ2luCiMgd2l0aCBhICcvJwokZGVzdCA9ICIkaG9tZWRpci8kZGVzdCIgaWYgKCRk ZXN0ICF+IC9eXC8vKTsKIyBnZXQgcmlkIG9mIHRyYWlsaW5nIC8ncwokZGVzdCA9fiBzL1wvJC8v OwoKCiMgQ291bnQgdGhlIG51bWJlciBvZiBtYWlsYm94ZXMsIG9yCiMgYXQgbGVhc3QgZmlsZXMs IHdlIGZvdW5kLgpteSAkbWFpbGJveGNvdW50ID0gMDsKCiMgU2luY2Ugd2UnbGwgYmUgbWFraW5n IHN1YiBkaXJlY3RvcmllcyBvZiB0aGUgbWFpbgojIE1haWxkaXIsIHdlIG5lZWQgdG8gbWFrZSBz dXJlIHRoYXQgdGhlIG1haW4gbWFpbGRpcgojIGV4aXN0cwombWFpbGRpcm1ha2UoJGRlc3QpOwoK IyBOb3cgd2UgZG8gZGlmZmVyZW50IHRoaW5ncyBkZXBlbmRpbmcgb24gd2hldGhlciB3ZSBjb252 ZXJ0IG9uZSBtYm94CiMgZmlsZSBvciBhIGRpcmVjdG9yeSBvZiBtYm94IGZpbGVzCmlmIChkZWZp bmVkKCRtYmZpbGUpKQp7CglpZiAoIWlzYW1haWxib3hmaWxlKCRtYmZpbGUpKQogICAgICAgIHsK ICAgICAgICAgICAgICBwcmludCAiU2tpcHBpbmcgJG1iZmlsZTogbm90IGEgbWJveCBmaWxlXG4i OwogICAgICAgIH0KCWVsc2UKCXsKCSAgICAgIHByaW50ICJDb252ZXJ0aW5nICRtYmZpbGUgdG8g bWFpbGRpcjogJGRlc3RcbiI7CgkgICAgICAjIHRoaXMgaXMgZWFzeSwgd2UganVzdCBydW4gdGhl IGNvbnZlcnQgZnVuY3Rpb24KCSAgICAgICZjb252ZXJ0KCRtYmZpbGUsICRkZXN0KTsKCX0KfQoj IGlmICctZicgd2FzIHVzZWQgLi4uCmVsc2lmIChkZWZpbmVkKCRtYmRpcikpCnsKCXByaW50ICJD b252ZXJ0aW5nIG1ib3hkaXIvbWJkaXI6ICRtYnJvb3QvJG1iZGlyIHRvIG1haWxkaXI6ICRkZXN0 L1xuIjsKCQoJIyBOb3cgc2V0IG91ciBzb3VyY2UgZGlyZWN0b3J5CglteSAkc291cmNlZGlyID0g IiRtYnJvb3QvJG1iZGlyIjsKCgkjIGNoZWNrIHRoYXQgdGhlIGRpcmVjdG9yeSB3ZSBhcmUgc3Vw cG9zZWQgdG8gYmUgZmluZGluZyBtYm94CgkjIGZpbGVzIGluLCBleGlzdHMgYW5kIGlzIGEgZGly ZWN0b3J5CgktZSAkc291cmNlZGlyIG9yIGRpZSgiRmF0YWw6IE1CRElSIGRpcmVjdG9yeSAkc291 cmNlZGlyLyBkb2VzIG5vdCBleGlzdC5cbiIpOwoJLWQgJHNvdXJjZWRpciBvciBkaWUoIkZhdGFs OiBNQkRJUiAkc291cmNlZGlyIGlzIG5vdCBhIGRpcmVjdG9yeS5cbiIpOwoKCQoJJmNvbnZlcnRp dCgkbWJkaXIsIiIpOwp9CiMgRWxzZSwgbGV0J3Mgd29yayBpbiAkbWJyb290CmVsc2UKewoJb3Bl bmRpcihTRElSLCAkbWJyb290KQoJCW9yIGRpZSgiRmF0YWw6IENhbm5vdCBvcGVuIHNvdXJjZSBk aXJlY3RvcnkgJG1icm9vdC8gXG4iKTsKCgoJd2hpbGUgKG15ICRzb3VyY2VmaWxlID0gcmVhZGRp cihTRElSKSkKCXsKCQlpZiAoLWQgIiRtYnJvb3QvJHNvdXJjZWZpbGUiKSB7CgkJCSMgUmVjdXJz ZSBvbmx5IGlmIHJlcXVlc3RlZCAodG8gYmUgY2hhbmdlZCA/KQoJCQlpZiAoZGVmaW5lZCgkb3B0 c3tSfSkpIHsKCQkJCXByaW50ICJjb252ZXJ0aXQoJHNvdXJjZWZpbGUsXCJcIilcbiI7CgkJCQkm Y29udmVydGl0KCRzb3VyY2VmaWxlLCIiKTsKCQkJfSBlbHNlIHsKCQkJcHJpbnQoIiRzb3VyY2Vm aWxlIGlzIGEgZGlyZWN0b3J5LCBidXQgJy1SJyB3YXMgbm90IHVzZWQuLi4gc2tpcHBpbmdcbiIp OwoJCQl9CgkJfQogICAgCQllbHNpZiAoIS1mICIkbWJyb290LyRzb3VyY2VmaWxlIikKCQl7CgkJ CXByaW50ICJTa2lwcGluZyAkbWJyb290LyRzb3VyY2VmaWxlIDogbm90IGEgZmlsZSBub3IgYSBk aXJcbiI7CgkJCW5leHQ7CgkJfQoJCWVsc2lmICghaXNhbWFpbGJveGZpbGUoIiRtYnJvb3QvJHNv dXJjZWZpbGUiKSkKCQl7CgkJCXByaW50ICJTa2lwcGluZyAkbWJyb290LyRzb3VyY2VmaWxlIDog bm90IGEgbWJveCBmaWxlXG4iOwoJCQluZXh0OwoJCX0KCQllbHNlIAoJCXsKCQkJJmNvbnZlcnRp dCgkc291cmNlZmlsZSwiIik7CgkJfQoJfSAjIGVuZCBvZiAid2hpbGUgKCRzZmlsZSA9IHJlYWRk aXIoU0RJUikpIiBsb29wLgoJY2xvc2VkaXIoU0RJUik7CglwcmludGYoIiRtYWlsYm94Y291bnQg ZmlsZXMgcHJvY2Vzc2VkLlxuIik7Cn0KIwoKZXhpdCAwOwoKIyBNeSBkZWJidWdnaW5nIHBsYWNl aG9sZGVyIEkgY2FuIHB1dCBzb21ld2hlcmUgdG8gc2hvdyBob3cgZmFyIHRoZSBzY3JpcHQgcmFu LgojIGRpZSgiU28gZmFyIHNvIGdvb2QuXG5cbiIpOwoKIyBUaGUgaXNhbWFpbGJveGZpbGUgZnVu Y3Rpb24KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgCiMgSGVyZSB3ZSBjaGVjayBpZiB0aGUg ZmlsZSBpcyBhIG1haWxib3ggZmlsZSwgbm90IGFuIGFkZHJlc3MtYm9vayBvciAKIyBzb21ldGhp bmcgZWxzZS4KIyBJZiBmaWxlIGlzIGVtcHR5LCB3ZSBzYXkgaXQgaXMgYSBtYm94LCB0byBjcmVh dGUgaXQgZW1wdHkuCiMKIyBSZXR1cm5zIDEgaWYgZmlsZSBpcyBzYWlkIG1ib3gsIDAgZWxzZS4K c3ViIGlzYW1haWxib3hmaWxlIHsKCW15ICgkbWJ4ZmlsZSkgPSBAXzsKCXJldHVybiAxIGlmKC16 ICRtYnhmaWxlKTsKCXN5c29wZW4oTUJYRklMRSwgIiRtYnhmaWxlIiwgT19SRE9OTFkpIG9yIGRp ZSAiQ291bGQgbm90IG9wZW4gJG1ieGZpbGUgISBcbiI7Cgl3aGlsZSg8TUJYRklMRT4pIHsKCQlp ZiAoL15Gcm9tLykgewoJCQljbG9zZShNQlhGSUxFKTsKCQkJcmV0dXJuIDE7CgkJfQoJCWVsc2Ug ewoJCQljbG9zZShNQlhGSUxFKTsKCQkJcmV0dXJuIDA7CgkJfQoJfQp9CgojIFRoZSBjb252ZXJ0 aXQgZnVuY3Rpb24KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBmdW5jdGlvbiBj cmVhdGVzIGFsbCBzdWJkaXJzIGluIG1haWxkaXIsIGFuZCBjYWxscyBjb252ZXJ0KCkgCiMgZm9y IGVhY2ggbWJveCBmaWxlLgojIFllcywgaXQgYmVjb21lcyB0aGUgJ21haW4gbG9vcCcgOikKc3Vi IGNvbnZlcnRpdAp7CgkjIEdldCBzdWJkaXIgYXMgYXJndW1lbnQKCW15ICgkZGlyLCRvbGRwYXRo KSA9IEBfOwoJCgkkb2xkcGF0aCA9fiBzL1wvXC8vLzsKCgkjIFNraXAgZmlsZXMgYmVnaW5uaW5n IHdpdGggJy4nIHNpbmNlIHRoZXkgYXJlCgkjIG5vdCBub3JtYWxseSBtYm94IGZpbGVzIG5vciBk aXJzIChpbmNsdWRlcyAnLicgYW5kICcuLicpCglpZiAoJGRpciA9fiAvXlwuLykKCXsKCQlwcmlu dCAiU2tpcHBpbmcgJGRpciA6IG5hbWUgYmVnaW5zIHdpdGggYSAnLidcbiI7CgkJcmV0dXJuOwoJ fQoJbXkgJGRlc3RpbmF0aW9uZGlyID0gJGRpcjsKCW15ICR0ZW1wcGF0aCA9ICRvbGRwYXRoOwoK CSMgV2UgZG9uJ3Qgd2FudCB0byBoYXZlIC4ncyBpbiB0aGUgJHRhcmdldGZpbGUgZmlsZQoJIyBu YW1lIGJlY2F1c2UgdGhleSB3aWxsIGJlY29tZSBkaXJlY3RvcmllcyBpbiB0aGUKCSMgTWFpbGRp ci4gVGhlcmVmb3JlIHdlIGNvbnZlcnQgdGhlbSB0byBfJ3MKCSR0ZW1wcGF0aCA9fiBzL1wuL1xf L2c7CgkkZGVzdGluYXRpb25kaXIgPX4gcy9cLi9cXy9nOwoJCgkjIEFwcGVuZGluZyAkb2xkcGF0 aCA9PiBwYXRoIGlzIG9ubHkgbWlzc2luZyAkZGVzdAoJJGRlc3RpbmF0aW9uZGlyID0gIiR0ZW1w cGF0aC4kZGVzdGluYXRpb25kaXIiOwoKCSMgQ29udmVydGluZyAnLycgdG8gJy4nIGluICRkZXN0 aW5hdGlvbmRpcgoJJGRlc3RpbmF0aW9uZGlyID1+cy9cLysvXC4vZzsKCQoJIyBzb3VyY2UgZGly CglteSAkc3JjZGlyPSIkbWJyb290LyRvbGRwYXRoLyRkaXIiOwoKCXByaW50ZigiY29udmVydGl0 KCk6IENvbnZlcnRpbmcgJGRpciBpbiAkbWJyb290LyRvbGRwYXRoIHRvICRkZXN0LyRkZXN0aW5h dGlvbmRpclxuIik7CgkmbWFpbGRpcm1ha2UoIiRkZXN0LyRkZXN0aW5hdGlvbmRpciIpOwoJcHJp bnQoImRlc3RpbmF0aW9uID0gJGRlc3RpbmF0aW9uZGlyXG4iKTsKCWlmICgtZCAkc3JjZGlyKSB7 CgkJb3BlbmRpcihTVUJESVIsICIkc3JjZGlyIikgb3IgZGllICJjYW4ndCBvcGVuICRzcmNkaXIg IVxuIjsKCQlteSBAc3ViZGlybGlzdD1yZWFkZGlyKFNVQkRJUik7CgkJY2xvc2VkaXIoU1VCRElS KTsKCQlmb3JlYWNoIChAc3ViZGlybGlzdCkgewoJCQluZXh0IGlmICgvXlwuKyQvKTsKCQkJcHJp bnQoIlN1YjogJF9cbiIpOwoJCQlwcmludCgiY29udmVydGl0KCRfLFwiJG9sZHBhdGgvJGRpclwi KVxuIik7CgkJCSZjb252ZXJ0aXQoJF8sIiRvbGRwYXRoLyRkaXIiKTsKCQl9IAoJfSBlbHNlIHsK CQkjIFNvdXJjZSBmaWxlIHZlcmlmcyAuLi4uCgkJIwoJCXJldHVybiBpZihkZWZpbmVkKCRvcHRz e2x9KSAmJiAhaW5saXN0KCIkb2xkcGF0aC8kZGlyIixAZmxpc3QpKTsKCgkJaWYgKCFpc2FtYWls Ym94ZmlsZSgiJG1icm9vdC8kb2xkcGF0aC8kZGlyIikpCgkJewoJCQlwcmludCAiU2tpcHBpbmcg JGRpciAoaXMgbm90IG1ib3gpXG4iOwoJCQluZXh0OwoJCX0KCgkJIyB0YXJnZXQgZmlsZSB2ZXJp ZnMuLi4KCQkjCgkJIyBpZiAkc3RyaXBfZXh0ZW5zaW9uIGlzIGRlZmluZWQsCgkJIyBzdHJpcCBp dCBvZmYgdGhlICR0YXJnZXRmaWxlCgkgICAgCWRlZmluZWQoJHN0cmlwX2V4dCkgJiYgKCRkZXN0 aW5hdGlvbmRpciA9fiBzL1wuJHN0cmlwX2V4dCQvLyk7CgkJJmNvbnZlcnQoIiRtYnJvb3QvJG9s ZHBhdGgvJGRpciIsIiRkZXN0LyRkZXN0aW5hdGlvbmRpciIpOwoJCSRtYWlsYm94Y291bnQrKzsK CX0KfQojIFRoZSBtYWlsZGlybWFrZSBmdW5jdGlvbgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQojCiMgSXQgZG9lcyB0aGUgc2FtZSB0aGluZyB0aGF0IHRoZSBtYWlsZGlybWFrZSBiaW5hcnkg dGhhdCAKIyBjb21lcyB3aXRoIGNvdXJpZXItaW1hcCBkaXN0cmlidXRpb24KIwpzdWIgbWFpbGRp cm1ha2UKewoJZm9yZWFjaChAXykgewoJCS1kICRfIG9yIG1rZGlyICRfLDA3MDAgb3IgZGllKCJG YXRhbDogRGlyZWN0b3J5ICRfIGRvZXNuJ3QgZXhpc3QgYW5kIGNhbid0IGJlIGNyZWF0ZWQuXG4i KTsKCQoJCS1kICIkXy90bXAiIG9yIG1rZGlyKCIkXy90bXAiLDA3MDApIG9yIGRpZSgiRmF0YWw6 IFVuYWJsZSB0byBtYWtlICRfL3RtcC8gc3ViZGlyZWN0b3J5LlxuIik7CgkJLWQgIiRfL25ldyIg b3IgbWtkaXIoIiRfL25ldyIsMDcwMCkgb3IgZGllKCJGYXRhbDogVW5hYmxlIHRvIG1ha2UgJF8v bmV3LyBzdWJkaXJlY3RvcnkuXG4iKTsKCQktZCAiJF8vY3VyIiBvciBta2RpcigiJF8vY3VyIiww NzAwKSBvciBkaWUoIkZhdGFsOiBVbmFibGUgdG8gbWFrZSAkXy9jdXIvIHN1YmRpcmVjdG9yeS5c biIpOwoJfQp9CgojIFRoZSBpbmxpc3QgZnVuY3Rpb24KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KIwojIEl0IGNoZWNrcyB0aGF0IHRoZSBmb2xkZXIgdG8gYmUgY29udmVydGVkIGlzIGluIHRo ZSBsaXN0IG9mIHN1YnNjcmliZWQKIyBmb2xkZXJzIGluIFdVLUlNQVAKIwpzdWIgaW5saXN0CnsK CW15ICgkZmlsZSxAZmxpc3QpID0gQF87CglteSAkdmFsaWQgPSAwOwoJIyBHZXQgcmlkIG9mIHRo ZSBmaXJzdCAvIGlmIGFueQoJJGZpbGUgPX4gcy9eXC8vLzsKCWZvcmVhY2ggbXkgJGZvbGRlciAo QGZsaXN0KSB7CgkJY2hvbXAgJGZvbGRlcjsKCQlpZiAoJGZpbGUgZXEgJGZvbGRlcikgewoJCQkk dmFsaWQgPSAxOwoJCQlsYXN0OwoJCX0KCX0KCWlmICghJHZhbGlkKSB7CgkJcHJpbnQgIiRmaWxl IGlzIG5vdCBpbiBsaXN0XG4iOwoJfQoJZWxzZSB7CgkJcHJpbnQgIiRmaWxlIGlzIGluIGxpc3Rc biI7Cgl9CgoJcmV0dXJuICR2YWxpZDsKfQoJCiMgCgojIFRoZSBjb252ZXJ0IGZ1bmN0aW9uCiMg LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIGZ1bmN0aW9uIGRvZXMgdGhlIGRvd24gYW5k IGRpcnR5IHdvcmsgb2YKIyBhY3R1YWxseSBjb252ZXJ0aW5nIHRoZSBtYm94IHRvIGEgbWFpbGRp cgojCnN1YiBjb252ZXJ0CnsKCSMgZ2V0IHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGFzIGFy Z3VtZW50cwoJbXkgKCRtYm94LCAkbWFpbGRpcikgPSBAXzsKCglwcmludGYoIlNvdXJjZSBNYm94 IGlzICRtYm94XG4iKTsKICAgICAgICBwcmludGYoIlRhcmdldCBNYWlsZGlyIGlzICRtYWlsZGly IFxuIikgOwoKCSMgY3JlYXRlIHRoZSBkaXJlY3RvcmllcyBmb3IgdGhlIG5ldyBtYWlsZGlyCgkj CgkjIGlmIGl0IGlzIHRoZSByb290IG1haWxkaXIgKGllLiBjb252ZXJ0aW5nIHRoZSBpbmJveCkK CSMgdGhlc2UgYWxyZWFkeSBleGlzdCBidXQgdGhhdHMgbm90IGEgYmlnIGlzc3VlCgoJJm1haWxk aXJtYWtlKCRtYWlsZGlyKTsKCiAgICAgICAgIyBDaGFuZ2UgdG8gdGhlIHRhcmdldCBtYWlsYm94 IGRpcmVjdG9yeS4KCiAgICAgICAgY2hkaXIgIiRtYWlsZGlyIiA7CgogICAgICAgICAJICAgICMg Q29udmVydHMgYSBNYm94IHRvIG11bHRpcGxlIGZpbGVzCiAgICAgICAgICAgICAgICAgICAgIyBp biBhIE1haWxkaXIuCiAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGlzIGFkYXB0ZWQgZnJvbSBt Ym94Mm1haWxkaXIuCiAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMg T3BlbiB0aGUgTWJveCBtYWlsYm94IGZpbGUuCgoKICAgICAgICBpZiAoc3lzb3BlbihNQk9YLCAi JG1ib3giLCBPX1JET05MWSkpCiAgICAgICAgewogICAgICAgICAgICAjcHJpbnRmKCJDb252ZXJ0 aW5nIE1ib3ggICAkbWJveCAuIC4gLiAgXG4iKTsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAg ICAgIHsKICAgICAgICAgICAgZGllKCJGYXRhbDogdW5hYmxlIHRvIG9wZW4gaW5wdXQgbWFpbGJv eCBmaWxlOiAkbWJveCAhIFxuIik7CiAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIFRo aXMgbG9vcCBzY2FucyB0aGUgaW5wdXQgbWFpbGJveCBmb3IKICAgICAgICAgICAgICAgICAgICAj IGEgbGluZSBzdGFydGluZyB3aXRoICJGcm9tICIuICBUaGUKICAgICAgICAgICAgICAgICAgICAj ICJeIiBiZWZvcmUgaXQgaXMgcGF0dGVybi1tYXRjaGluZwogICAgICAgICAgICAgICAgICAgICMg bGluZ28gZm9yIGl0IGJlaW5nIGF0IHRoZSBzdGFydCBvZiBhCiAgICAgICAgICAgICAgICAgICAg IyBsaW5lLgogICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAjIEVhY2gg ZW1haWwgaW4gTWJveCBtYWlsYm94IHN0YXJ0cwogICAgICAgICAgICAgICAgICAgICMgd2l0aCBz dWNoIGEgbGluZSwgd2hpY2ggaXMgd2h5IGFueQogICAgICAgICAgICAgICAgICAgICMgc3VjaCBs aW5lIGluIHRoZSBib2R5IG9mIHRoZSBlbWFpbAogICAgICAgICAgICAgICAgICAgICMgaGFzIHRv IGhhdmUgYSAiPiIgcHV0IGluIGZyb250IG9mIGl0LgogICAgICAgICAgICAgICAgICAgICMKICAg ICAgICAgICAgICAgICAgICAjIFRoaXMgaXMgbm90IHJlcXVpcmVkIGluIGEgTWFpbGRpcgogICAg ICAgICAgICAgICAgICAgICMgbWFpbGJveCwgYW5kIHNvbWUgbWFqaWsgYmVsb3cKICAgICAgICAg ICAgICAgICAgICAjIGZpbmRzIGFueSBzdWNoIHF1b3RlZCAiPiBGcm9tInMgYW5kCiAgICAgICAg ICAgICAgICAgICAgIyBnZXRzIHJpZCBvZiB0aGUgIj4gIiBxdW90ZS4KICAgICAgICAgICAgICAg ICAgICAjCiAgICAgICAgICAgICAgICAgICAgIyBFYWNoIGVtYWlsIGlzIHB1dCBpbiBhIGZpbGUK ICAgICAgICAgICAgICAgICAgICAjIGluIHRoZSBjdXIvIHN1YmRpcmVjdG9yeSB3aXRoIGEKICAg ICAgICAgICAgICAgICAgICAjIG5hbWUgb2YgdGhlIGZvcm06CiAgICAgICAgICAgICAgICAgICAg IwogICAgICAgICAgICAgICAgICAgICMgICAgbm5ubm5ubm5uLmNjY2MubWJveDoyLFhYWFgKICAg ICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgIyB3aGVyZToKICAgICAgICAg ICAgICAgICAgICAjICAgICJubm5ubm5ubm4iIGlzIHRoZSBVbml4IHRpbWUgc2luY2UKICAgICAg ICAgICAgICAgICAgICAjICAgICAgIDE5NzAgd2hlbiB0aGlzIHNjcmlwdCBzdGFydGVkCiAgICAg ICAgICAgICAgICAgICAgIyAgICAgICBydW5uaW5nLCBpbmNyZW1lbnRlZCBieSAxIGZvcgogICAg ICAgICAgICAgICAgICAgICMgICAgICAgZXZlcnkgZW1haWwuICBUaGlzIGlzIHRvIGVuc3VyZQog ICAgICAgICAgICAgICAgICAgICMgICAgICAgdW5pcXVlIG5hbWVzIGZvciBlYWNoIG1lc3NhZ2UK ICAgICAgICAgICAgICAgICAgICAjICAgICAgIGZpbGUuCiAgICAgICAgICAgICAgICAgICAgIwog ICAgICAgICAgICAgICAgICAgICMgICAgIi5jY2NjIiBpcyB0aGUgbWVzc2FnZSBjb3VudCBvZgog ICAgICAgICAgICAgICAgICAgICMgICAgICAgbWVzc2FnZXMgZnJvbSB0aGlzIG1ib3guCiAgICAg ICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgICAgIi5tYm94IiBpcyBqdXN0 IHRvIGluZGljYXRlIHRoYXQKICAgICAgICAgICAgICAgICAgICAjICAgICAgIHRoaXMgbWVzc2Fn ZSB3YXMgY29udmVydGVkIGZyb20KICAgICAgICAgICAgICAgICAgICAjICAgICAgIGFuIE1ib3gg bWFpbGJveC4KICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgIyAgICAi OjIsIiBpcyB0aGUgc3RhcnQgb2YgcG90ZW50aWFsbHkKICAgICAgICAgICAgICAgICAgICAjICAg ICAgIG11bHRpcGxlIElNQVAgZmxhZyBjaGFyYWN0ZXJzCiAgICAgICAgICAgICAgICAgICAgIyAg ICAgICAiWFhYWCIsIGJ1dCBtYXkgYmUgZm9sbG93ZWQgYnkKICAgICAgICAgICAgICAgICAgICAj ICAgICAgIG5vdGhpbmcuCiAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAg ICMgVGhpcyBpcyBzb3J0LW9mICBjb21wbGlhbnQgd2l0aAogICAgICAgICAgICAgICAgICAgICMg dGhlIE1haWxkaXIgbmFtaW5nIGNvbnZlbnRpb25zCiAgICAgICAgICAgICAgICAgICAgIyBzcGVj aWZpZWQgYXQ6CiAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgaHR0 cDovL3d3dy5xbWFpbC5vcmcvbWFuL21hbjUvbWFpbGRpci5odG1sCiAgICAgICAgICAgICAgICAg ICAgIwogICAgICAgICAgICAgICAgICAgICMgVGhpcyBhcHByb2FjaCBkb2VzIG5vdCBpbnZvbHZl IHRoZQogICAgICAgICAgICAgICAgICAgICMgcHJvY2VzcyBJRCBvciB0aGUgaG9zdG5hbWUsIGJ1 dCBpdCBpcwogICAgICAgICAgICAgICAgICAgICMgcHJvYmFibHkgZ29vZCBlbm91Z2guCiAgICAg ICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgV2hlbiB0aGUgSU1BUCBzZXJ2 ZXIgbG9va3MgYXQgdGhpcwogICAgICAgICAgICAgICAgICAgICMgbWFpbGJveCwgaXQgd2lsbCBt b3ZlIHRoZSBmaWxlcyB0bwogICAgICAgICAgICAgICAgICAgICMgdGhlIGN1ci8gZGlyZWN0b3J5 IGFuZCBjaGFuZ2UgdGhlaXIKICAgICAgICAgICAgICAgICAgICAjIG5hbWVzIGFzIGl0IHBsZWFz ZXMuICBJbiB0aGUgY2FzZQogICAgICAgICAgICAgICAgICAgICMgb2YgQ291cmllciBJTUFQLCB0 aGUgbmFtZXMgd2lsbAogICAgICAgICAgICAgICAgICAgICMgYmVjb21lIGxpa2U6CiAgICAgICAg ICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgICA5OTUwOTY1NDEuMjUzNTEubWJv eDoyLFMKICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgIyB3aXRoIDI1 MzUxIGJlaW5nIENvdXJpZXIgSU1BUCdzCiAgICAgICAgICAgICAgICAgICAgIyBwcm9jZXNzIElE LiAgVGhlIDoyLCBpcyB0aGUgc3RhcnQKICAgICAgICAgICAgICAgICAgICAjIG9mIHRoZSBmbGFn cywgYW5kIHRoZSAiUyIgbWVhbnMKICAgICAgICAgICAgICAgICAgICAjIHRoYXQgdGhpcyBvbmUg aGFzIGJlZW4gc2VlbiBieQogICAgICAgICAgICAgICAgICAgICMgdGhlIHVzZXIuICAoQnV0IGlz IHRoaXMgdGhlIHNhbWUKICAgICAgICAgICAgICAgICAgICAjIG1lYW5pbmcgYXMgdGhlIHVzZXIg YWN0dWFsbHkKICAgICAgICAgICAgICAgICAgICAjIGhhdmluZyBvcGVuZWQgdGhlIG1lc3NhZ2Ug dG8gc2VlCiAgICAgICAgICAgICAgICAgICAgIyBpdHMgY29udGVudHMsIHJhdGhlciB0aGFuIGp1 c3QgdGhlCiAgICAgICAgICAgICAgICAgICAgIyBJTUFQIHNlcnZlciBoYXZpbmcgYmVlbiBhc2tl ZCB0bwogICAgICAgICAgICAgICAgICAgICMgbGlzdCB0aGUgbWVzc2FnZSdzIFN1YmplY3QgZXRj LgogICAgICAgICAgICAgICAgICAgICMgc28gdGhlIGNsaWVudCBjb3VsZCBsaXN0IGl0IGluIHRo ZQogICAgICAgICAgICAgICAgICAgICMgdmlzaWJsZSBJbmJveD8pCiAgICAgICAgICAgICAgICAg ICAgIwogICAgICAgICAgICAgICAgICAgICMgVGhpcyBjb250cmFzdHMgd2l0aCBhIG1lc3NhZ2UK ICAgICAgICAgICAgICAgICAgICAjIGNyZWF0ZWQgYnkgQ291cmllciBJTUFQLCBzYXkgd2l0aAog ICAgICAgICAgICAgICAgICAgICMgYSBtZXNzYWdlIGNvcHksIHdoaWNoIGlzIGxpa2U6CiAgICAg ICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgICA5OTUwOTY1NDEuMjUzNTEu emFpcixTPTE0Mjg1OjIsUwogICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAg ICAjIHdoZXJlICIsUz0xNDI4NSIgaXMgdGhlIHNpemUgb2YgdGhlCiAgICAgICAgICAgICAgICAg ICAgIyBtZXNzYWdlIGluIGJ5dGVzLgogICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAg ICAgICAgICAjIENvdXJpZXIgTWFpbGRyb3AncyBuYW1lcyBhcmUgc2ltaWxhcgogICAgICAgICAg ICAgICAgICAgICMgYnV0IGxhY2sgdGhlICI6MixYWFhYIiBmbGFncyAuIC4gLgogICAgICAgICAg ICAgICAgICAgICMgZXhjZXB0IGZvciBteSBtb2RpZmllZCBNYWlsZHJvcAogICAgICAgICAgICAg ICAgICAgICMgd2hpY2ggY2FuIGRlbGl2ZXIgdGhlbSB3aXRoIGEKICAgICAgICAgICAgICAgICAg ICAjICI6MixUIiAtIGZsYWdnZWQgZm9yIGRlbGV0aW9uLgogICAgICAgICAgICAgICAgICAgICMK ICAgICAgICAgICAgICAgICAgICAjIEkgaGF2ZSBleHRlbmRlZCB0aGUgbG9naWMgb2YgdGhlCiAg ICAgICAgICAgICAgICAgICAgIyBwZXItbWVzc2FnZSBpbm5lciBsb29wIHRvIHN0b3AKICAgICAg ICAgICAgICAgICAgICAjIHNhdmluZyBhIGZpbGUgZm9yIGEgbWVzc2FnZSB3aXRoOgogICAgICAg ICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAjIFN1YmplY3Q6IERPTidUIERFTEVU RSBUSElTIE1FU1NBR0UgLS0gRk9MREVSIElOVEVSTkFMIERBVEEKICAgICAgICAgICAgICAgICAg ICAjCiAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGlzIHRoZSBkdW1teSBtZXNzYWdlLCBhbHdh eXMKICAgICAgICAgICAgICAgICAgICAjIGF0IHRoZSBzdGFydCBvZiBhbiBNYm94IGZvcm1hdAog ICAgICAgICAgICAgICAgICAgICMgbWFpbGJveCBmaWxlIC0gYW5kIGlzIHB1dCB0aGVyZQogICAg ICAgICAgICAgICAgICAgICMgYnkgVVcgSU1BUEQuICBTaW5jZSBxdWl0ZSBhIGZldwogICAgICAg ICAgICAgICAgICAgICMgcGVvcGxlIHdpbGwgdXNlIHRoaXMgZm9yCiAgICAgICAgICAgICAgICAg ICAgIyBjb252ZXJ0aW5nIGZyb20gYSBVVyBzeXN0ZW0sCiAgICAgICAgICAgICAgICAgICAgIyBJ IGZpZ3VyZSBpdCBpcyB3b3J0aCBpdC4KICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAg ICAgICAgICAgIyBJIHdpbGwgbm90IHNhdmUgYW55IHN1Y2ggbWVzc2FnZQogICAgICAgICAgICAg ICAgICAgICMgZmlsZSBmb3IgdGhlIGR1bW15IG1lc3NhZ2UuCiAgICAgICAgICAgICAgICAgICAg IwogICAgICAgICAgICAgICAgICAgICMgUGxhbgogICAgICAgICAgICAgICAgICAgICMgLS0tLQog ICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAjIFdlIHdhbnQgdG8gcmVh ZCB0aGUgZW50aXJlIE1ib3ggZmlsZSwgd2hpbHN0CiAgICAgICAgICAgICAgICAgICAgIyBnb2lu ZyB0aHJvdWdoIGEgbG9vcCBmb3IgZWFjaCBtZXNzYWdlIHdlIGZpbmQuCiAgICAgICAgICAgICAg ICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgV2Ugd2FudCB0byByZWFkIGFsbCB0aGUgaGVh ZGVycyBvZiB0aGUgbWVzc2FnZSwKICAgICAgICAgICAgICAgICAgICAjIHN0YXJ0aW5nIHdpdGgg dGhlICJGcm9tICIgbGluZS4gICBGb3IgdGhhdCAiRnJvbSAiCiAgICAgICAgICAgICAgICAgICAg IyBsaW5lIHdlIHdhbnQgdG8gZ2V0IGEgZGF0ZS4KICAgICAgICAgICAgICAgICAgICAjCiAgICAg ICAgICAgICAgICAgICAgIyBGb3IgYWxsIG90aGVyIGhlYWRlciBsaW5lcywgd2Ugd2FudCB0byBz dG9yZSB0aGVtCiAgICAgICAgICAgICAgICAgICAgIyBpbiAkaGVhZGVycyB3aGlsc3QgcGFyc2lu ZyB0aGVtIHRvIGZpbmQ6CiAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAg ICMgICAxIC0gQW55IGZsYWdzIGluIHRoZSAiU3RhdHVzOiAiIG9yICJYLVN0YXR1czogIiBvcgog ICAgICAgICAgICAgICAgICAgICMgICAgICAgIlgtTW96aWxsYS1TdGF0dXM6ICIgbGluZXMuCiAg ICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgICAyIC0gQSBzdWJqZWN0 IGxpbmUgaW5kaWNhdGluZyB0aGlzIGlzIHRoZSBkdW1teSBtZXNzYWdlCiAgICAgICAgICAgICAg ICAgICAgIyAgICAgICBhdCB0aGUgc3RhcnQgKHR5cGljYWxseSwgYnV0IG5vdCBuZWNlc3Nhcmls eSkgb2YKICAgICAgICAgICAgICAgICAgICAjICAgICAgIHRoZSBNYm94LgogICAgICAgICAgICAg ICAgICAgICMKICAgICAgICAgICAgICAgICAgICAjIE9uY2Ugd2UgcmVhY2ggdGhlIGVuZCBvZiB0 aGUgaGVhZGVycywgd2Ugd2lsbCBjcnVuY2ggYW55CiAgICAgICAgICAgICAgICAgICAgIyBmbGFn cyB3ZSBmb3VuZCB0byBjcmVhdGUgYSBmaWxlIG5hbWUuICBUaGVuLCB1bmxlc3MgdGhpcyBpcwog ICAgICAgICAgICAgICAgICAgICMgdGhlIGR1bW15IG1lc3NhZ2Ugd2UgY3JlYXRlIHRoYXQgZmls ZSBhbmQgd3JpdGUgYWxsIHRoZQogICAgICAgICAgICAgICAgICAgICMgaGVhZGVycyB0byBpdC4K ICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgIyBUaGVuIHdlIGNvbnRp bnVlIHJlYWRpbmcgdGhlIE1ib3gsIGNvbnZlcnRpbmcgIj5Gcm9tICIgdG8KICAgICAgICAgICAg ICAgICAgICAjICJGcm9tICIgYW5kIHdyaXRpbmcgaXQgdG8gdGhlIGZpbGUsIHVudGlsIHdlIHJl YWNoIG9uZSBvZjoKICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgIyAg IDEgLSBBbm90aGVyICJGcm9tICIgbGluZSAoaW5kaWNhdGluZyB0aGUgc3RhcnQgb2YgYW5vdGhl cgogICAgICAgICAgICAgICAgICAgICMgICAgICAgbWVzc2FnZSkuCiAgICAgICAgICAgICAgICAg ICAgIwogICAgICAgICAgICAgICAgICAgICMgb3IKICAgICAgICAgICAgICAgICAgICAjCiAgICAg ICAgICAgICAgICAgICAgIyAgIDIgLSBUaGUgZW5kIG9mIHRoZSBNYm94LgogICAgICAgICAgICAg ICAgICAgICMKICAgICAgICAgICAgICAgICAgICAjIEluIHRoZSBmb3JtZXIgY2FzZSwgd2hpY2gg d2UgZGV0ZWN0IGF0IHRoZSBzdGFydCBvZiB0aGUgbG9vcAogICAgICAgICAgICAgICAgICAgICMg d2UgbmVlZCB0byBjbG9zZSB0aGUgZmlsZSBhbmQgdG91Y2ggaXQgdG8gYWx0ZXIgaXRzIGRhdGUt dGltZS4KICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgIyBJbiB0aGUg bGF0ZXIgY2FzZSwgd2UgYWxzbyBuZWVkIHRvIGNsb3NlIHRoZSBmaWxlIGFuZCB0b3VjaAogICAg ICAgICAgICAgICAgICAgICMgaXQgdG8gYWx0ZXIgaXRzIGRhdGUtdGltZSAtIGJ1dCB0aGlzIGlz IGJleW9uZCB0aGUgZW5kIG9mIHRoZQogICAgICAgICAgICAgICAgICAgICMgbG9vcC4KCgogICAg ICAgICAgICAgICAgICAgICMgVmFyaWFibGVzCiAgICAgICAgICAgICAgICAgICAgIyAtLS0tLS0t LS0KCiAgICAgICAgbXkgJG1lc3NhZ2Vjb3VudCA9IDA7CgogICAgICAgICAgICAgICAgICAgICMg Rm9yIGdlbmVyYXRpbmcgdW5pcXVlIGZpbGVuYW1lcyBmb3IKICAgICAgICAgICAgICAgICAgICAj IGVhY2ggbWVzc2FnZS4gIEluaXRpYWxpc2UgaXQgaGVyZSB3aXRoCiAgICAgICAgICAgICAgICAg ICAgIyBudW1lcmljIHRpbWUgaW4gc2Vjb25kcyBzaW5jZSAxOTcwLgogICAgICAgIG15ICR1bmlx dWUgPSB0aW1lOwoKICAgICAgICAgICAgICAgICAgICAjIE5hbWUgb2YgbWVzc2FnZSBmaWxlIHRv IGRlbGV0ZSBpZiB3ZSBmb3VuZCB0aGF0CiAgICAgICAgICAgICAgICAgICAgIyBpdCB3YXMgY3Jl YXRlZCBieSByZWFkaW5nIHRoZSBNYm94IGR1bW15IG1lc3NhZ2UuCgogICAgICAgIG15ICRkZWxl dGVkdW1teSA9ICcnOwoKICAgICAgICAgICAgICAgICAgICAjIFRvIHN0b3JlIHRoZSBjb21wbGV0 ZSAiRnJvbSAoYWRkcmVzcykgKGRhdGUtdGltZSkKICAgICAgICAgICAgICAgICAgICAjIHdoaWNo IGRlbGluZWF0ZXMgdGhlIHN0YXJ0IG9mIGVhY2ggbWVzc2FnZQogICAgICAgICAgICAgICAgICAg ICMgaW4gdGhlIE1ib3gKICAgICAgICBteSAkZnJvbWxpbmUgPSAnJzsKCgogICAgICAgICAgICAg ICAgICAgICMgU2V0IHRvIDEgd2hlbiB3ZSBhcmUgcmVhZGluZyB0aGUgaGVhZGVyIGxpbmVzLAog ICAgICAgICAgICAgICAgICAgICMgaW5jbHVkaW5nIHRoZSAiRnJvbSAiIGxpbmUuCiAgICAgICAg ICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgMCBtZWFucyB3ZSBhcmUgcmVhZGlu ZyB0aGUgbWVzc2FnZSBib2R5IGFuZCBsb29raW5nCiAgICAgICAgICAgICAgICAgICAgIyBmb3Ig YW5vdGhlciAiRnJvbSAiIGxpbmUuCgogICAgICAgIG15ICRpbmhlYWRlcnMgPSAwOwoKICAgICAg ICAgICAgICAgICAgICAjIFZhcmlhYmxlIHRvIGhvbGQgYWxsIGhlYWRlcnMgKGFwYXJ0IGZyb20K ICAgICAgICAgICAgICAgICAgICAjIHRoZSBmaXJzdCBsaW5lICJGcm9tIC4uLi4iIHdoaWNoIGlz IG5vdAogICAgICAgICAgICAgICAgICAgICMgcGFydCBvZiB0aGUgbWVzc2FnZSBpdHNlbGYuCiAg ICAgICAgbXkgJGhlYWRlcnMgPSAnJzsKCiAgICAgICAgICAgICAgICAgICAgIyBWYXJpYWJsZSB0 byBob2xkIHRoZSBhY2N1bXVsYXRlZCBjaGFyYWN0ZXJzCiAgICAgICAgICAgICAgICAgICAgIyB3 ZSBmaW5kIGluIGhlYWRlciBsaW5lcyBvZiB0aGUgdHlwZToKICAgICAgICAgICAgICAgICAgICAj CiAgICAgICAgICAgICAgICAgICAgIyAgICBTdGF0dXM6CiAgICAgICAgICAgICAgICAgICAgIyAg ICBYLVN0YXR1czoKICAgICAgICAgICAgICAgICAgICAjICAgIFgtTW96aWxsYS1TdGF0dXM6CiAg ICAgICAgICAgICAgICAgICAgIyAgICBYLUV2b2x1dGlvbjoKICAgICAgICBteSAkZmxhZ3MgPSAn JzsKCiAgICAgICAgICAgICAgICAgICAgIyBUbyBidWlsZCB0aGUgZmlsZSBuYW1lIGZvciB0aGUg bWVzc2FnZSBpbi4KICAgICAgICBteSAkbWVzc2FnZWZuID0gJyc7CgoKICAgICAgICAgICAgICAg ICAgICAjIFRoZSBkYXRlIHN0cmluZyBmcm9tIHRoZSAiRnJvbSAiIGxpbmUgb2YgZWFjaAogICAg ICAgICAgICAgICAgICAgICMgbWVzc2FnZSB3aWxsIGJlIHdyaXR0ZW4gaGVyZSAtIGFuZCB1c2Vk IGJ5CiAgICAgICAgICAgICAgICAgICAgIyB0b3VjaCB0byBhbHRlciB0aGUgZGF0ZS10aW1lIG9m IGVhY2ggbWVzc2FnZQogICAgICAgICAgICAgICAgICAgICMgZmlsZS4gIFB1dCBub24tZGF0ZSB0 ZXh0IGhlcmUgdG8gbWFrZSBpdAogICAgICAgICAgICAgICAgICAgICMgc3BpdCB0aGUgZHVtbXkg aWYgbXkgY29kZSBmYWlscyB0byBmaW5kIGEKICAgICAgICAgICAgICAgICAgICAjIGRhdGUgdG8g d3JpdGUgaW50byB0aGlzLgoKICAgICAgICBteSAkcmVjZWl2ZWRhdGUgPSAnQm9ndXMnOwoKCSMg VGhlIHN1YmplY3Qgb2YgdGhlIG1lc3NhZ2UKCW15ICRzdWJqZWN0ID0gJyc7CgoJbXkgJHByZXZp b3VzX2xpbmVfd2FzX2VtcHR5ID0gMTsKCiAgICAgICAgICAgICAgICAgICAgIyBXZSByZWNvcmQg dGhlIG1lc3NhZ2Ugc3RhcnQgbGluZSBoZXJlLCBmb3IgZXJyb3IKICAgICAgICAgICAgICAgICAg ICAjIHJlcG9ydGluZy4KICAgICAgICBteSAkc3RhcnRsaW5lOwoKICAgICAgICAgICAgICAgICAg ICAjIElmIGRlZmluZWQsIHdlIHVzZSB0aGlzIGFzIHRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gdGhl CiAgICAgICAgICAgICAgICAgICAgIyBtZXNzYWdlIGJvZHkgcmF0aGVyIHRoYW4gbG9va2luZyBm b3IgYSAvXkZyb20gLyBsaW5lLgogICAgICAgIG15ICRjb250ZW50bGVuZ3RoOwoKCQkJICAgICMg QSBGcm9tIGxpbmVzIGNhbiBlaXRoZXIgb2NjdXIgYXMgdGhlIGZpcnN0CgkJCSAgICAjIGxpbmUg b2YgYSBmaWxlLCBvciBhZnRlciBhbiBlbXB0eSBsaW5lLgoJCQkgICAgIyBNb3N0IG1haWwgc3lz dGVtcyB3aWxsIHF1b3RlIGFsbCBGcm9tIGxpbmVzCgkJICAgICAgICAgICAgIyBhcHBlYXJpbmcg aW4gdGhlIG1lc3NhZ2UsIGJ1dCBzb21lIHdpbGwgb25seQoJCQkgICAgIyBkbyBpdCB3aGVuIG5l Y2Vzc2FyeS4KCQkJICAgICMgU2luY2Ugd2UgaW5pdGlhbGlzZSB0aGUgdmFyaWFibGUgdG8gdHJ1 ZSwKCQkJICAgICMgd2UgZG9uJ3QgbmVlZCB0byBjaGVjayBmb3IgYmVnaW5uaW5nIG9mIGZpbGUu CgogICAgICAgIHdoaWxlKDxNQk9YPikKICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjIGV4Y2hhbmdlIHBvc3NpYmxlIFdpbmRvd3MgRU9MIChDUkxGKSB3aXRoIFVuaXggRU9M IChMRikKICAgICAgICAgICAgJF8gPX4gcy9cclxuJC9cbi87CgogICAgICAgICAgICBpZiAoIC9e RnJvbSAvCgkJJiYgJHByZXZpb3VzX2xpbmVfd2FzX2VtcHR5CgkJJiYgKCFkZWZpbmVkICRjb250 ZW50bGVuZ3RoKSAKCSAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICMgV2UgYXJlIHJlYWRpbmcgdGhlICJGcm9tICIgbGluZSB3aGljaCBoYXMgYW4KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICMgZW1haWwgYWRkcmVzcyBmb2xsb3dlZCBieSBhIHJl Y2VpdmUgZGF0ZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVHVybiBvbiB0aGUgJGlu aGVhZGVycyBmbGFnIHVudGlsIHdlIHJlYWNoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAj IHRoZSBlbmQgb2YgdGhlIGhlYWRlcnMuCgogICAgICAgICAgICAgICAgJGluaGVhZGVycyA9IDE7 CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyByZWNvcmQgdGhlIG1lc3NhZ2Ugc3RhcnQg bGluZQoKICAgICAgICAgICAgICAgICRzdGFydGxpbmUgPSAkLjsKCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAjIElmIHRoaXMgaXMgbm90IHRoZSBmaXJzdCBydW4gdGhyb3VnaCB0aGUgbG9v cAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB0aGVuIHRoaXMgbWVhbnMgd2UgaGF2ZSBh bHJlYWR5IGJlZW4gd29ya2luZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvbiBhIG1l c3NhZ2UuCgogICAgICAgICAgICAgICAgaWYgKCRtZXNzYWdlY291bnQgPiAwKQogICAgICAgICAg ICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBJZiBzbywgdGhlbiBjbG9zZSB0 aGF0IG1lc3NhZ2UgZmlsZSBhbmQgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB1 c2UgdXRpbWUgdG8gY2hhbmdlIGl0cyBkYXRlLXRpbWUuCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE5vdGUgdGhpcyBjb2RlIHNob3Vs ZCBiZSBkdXBsaWNhdGVkIHRvIGRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRoZSBz YW1lIHRoaW5nIGF0IHRoZSBlbmQgb2YgdGhlIHdoaWxlIGxvb3AKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICMgc2luY2Ugd2UgbXVzdCBjbG9zZSBhbmQgdG91Y2ggdGhlIGZpbmFsIG1lc3Nh Z2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZmlsZSB3ZSB3ZXJlIHdyaXRpbmcgd2hl biB3ZSBoaXQgdGhlIGVuZCBvZiB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgTWJv eCBmaWxlLgoKICAgICAgICAgICAgICAgICAgICBjbG9zZSAoT1VUKTsKCQkgICAgaWYgKCRtZXNz YWdlZm4gbmUgJycpIHsKCQkJbXkgJHQgPSBzdHIydGltZSgkcmVjZWl2ZWRhdGUpOwoJCQl1dGlt ZSAkdCwgJHQsICRtZXNzYWdlZm47CgkJICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAjIEJlY2F1c2Ugd2Ugb3BlbmVkIHRoZSBNYm94IGZpbGUgd2l0 aG91dCBhbnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdmFyaWFibGUsIEkgdGhpbmsg dGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgaXRzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAj IGN1cnJlbnQgbGluZSBpbiBQZXJsJ3MgZGVmYXVsdCB2YXJpYWJsZSAiJF8iLgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgIyBTbyBhbGwgc29ydHMgb2YgcGF0dGVybiBtYXRjaGluZyBtYWdp YyB3b3JrcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBkaXJlY3RseSBvbiBpdC4KCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAjIFdlIGFyZSBjdXJyZW50bHkgcmVhZGluZyB0aGUg Zmlyc3QgbGluZSBzdGFydGluZyB3aXRoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICJG cm9tICIgd2hpY2ggY29udGFpbnMgdGhlIGRhdGUgd2Ugd2FudC4KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVGhpcyB3aWxsIGJlIG9m IHRoZSBmb3JtOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgIyAgICAgRnJvbSBkZHVja0B0ZXN0Lm9yZyBXZWQgTm92IDI0IDExOjA1OjM1 IDE5OTkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICMgYXQgbGVhc3Qgd2l0aCBVVy1JTUFQLgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgIwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBIb3dldmVyLCBJIGRpZCBmaW5kIGEg bmFzdHkgZXhjZXB0aW9uIHRvIHRoaXMgaW4gbXkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICMgdGVzdHMsIG9mIHRoZSBmb3JtOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIyAgICJib3VuY2UtTXVzaWNOZXdzbGV0dGVyIDUtcnc9 dGVzdC5vcmciQGFubm91bmNlMi5tcDMuY29tCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAj CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFRoaXMgbWFrZXMgaXQgdHJpY2tpZXIgdG8g Z2V0IHJpZCBvZiB0aGUgZW1haWwgYWRkcmVzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICMgYnV0IEkgZGlkIGZpbmQgYSB3YXkuICBJIGNhbid0IHJ1bGUgb3V0IHRoYXQgdGhlcmUgd291 bGQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYmUgc29tZSBhZGRyZXNzIGxpa2UgdGhp cyB3aXRoIGFuICJAIiBpbiB0aGUgcXVvdGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAj IHBvcnRpb24gdG9vLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgIyBVbmZvcnR1bmF0ZWx5LCB0ZXN0aW5nIHdpdGggYW4gb2xkIEluYm94 IE1ib3ggZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSSBhbHNvIGZvdW5kIGFu IGluc3RhbmNlIHdoZXJlIHRoZSBlbWFpbCBhZGRyZXNzCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjIGhhZCBubyBAIHNpZ24gYXQgYWxsLiAgSXQgd2FzIGp1c3QgYW4gZW1haWwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICMgYWNjb3VudCBuYW1lLCB3aXRoIG5vIGhvc3QuCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEkg Y291bGQgc2VhcmNoIGZvciB0aGUgZGF5IG9mIHRoZSB3ZWVrLiAgSWYgSSBza2lwcGVkCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjIGF0IGxlYXN0IG9uZSB3b3JkIG9mIG5vbi13aGl0ZXNw YWNlICgxIG9yIG1vcmUgY29udGlndW91cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBu b24td2hpdGVzcGFjZSBjaGFyYWN0ZXJzKSB0aGVuIHNlYXJjaGVkIGZvciBhIGRheSBvZgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIyB0aGUgd2VlaywgdGhlbiBJIHNob3VsZCBiZSBhYmxl IHRvIGF2b2lkIGFsbW9zdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBldmVyeSBpbnN0 YW5jZSBvZiBhIGRheSBvZiB0aGUgd2VlayBhcHBlYXJpbmcgaW4KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICMgdGhlIGVtYWlsIGFkZHJlc3MuCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAjCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIERvIEkgbmVlZCBhIGZhaWxzYWZlIGFy cmFuZ2VtZW50IHRvIHByb3ZpZGUgc29tZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBv dGhlciBkYXRlIHRvIHRvdWNoIGlmIEkgZG9uJ3QgZ2V0IHdoYXQgc2VlbXMgbGlrZQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgIyBhIGRhdGUgaW4gbXkgcmVzdWx0aW5nIHN0cmluZz8gIEZv ciBub3csIG5vLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgIyBJIHdpbGwgdGFrZSBvbmUgYXBwcm9hY2ggaWYgdGhlcmUgaXMgYW4gQCBp biB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgIkZyb20gIiBsaW5lIGFuZCBhbm90 aGVyIChqdXN0IHNraXAgdGhlIGZpcnN0IHdvcmQKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICMgYWZ0ZXIgIkZyb20gIikgaWYgdGhlcmUgaXMgbm8gQCBpbiB0aGUgbGluZS4KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSWYgSSBr bmV3IG1vcmUgYWJvdXQgUGVybCBJIHdvdWxkIHByb2JhYmx5IGRvIGl0IGluCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjIGEgbW9yZSBlbGVnYW50IHdheS4KCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAjIENvcHkgdGhlIGN1cnJlbnQgbGluZSBpbnRvICRmcm9tbGluZS4KCiAgICAg ICAgICAgICAgICAkZnJvbWxpbmUgPSAkXzsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAj IE5vdyBnZXQgcmlkIG9mIHRoZSAiRnJvbSAiLiAiID1+IHMiIG1lYW5zIHN1YnN0aXR1dGUuCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAjIEZpbmQgdGhlIHdvcmQgIkZyb20gIiBhdCB0aGUg c3RhcnQgb2YgdGhlIGxpbmUgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHJlcGxh Y2UgaXQgd2l0aCBub3RoaW5nLiAgVGhlIG5vdGhpbmcgaXMgd2hhdCBpcwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgIyBiZXR3ZWVuIHRoZSBzZWNvbmQgYW5kIHRoaXJkIHNsYXNoLgoKICAg ICAgICAgICAgICAgICRmcm9tbGluZSA9fiBzL15Gcm9tIC8vIDsKCgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgIyBMaWtld2lzZSBnZXQgcmlkIG9mIHRoZSBlbWFpbCBhZGRyZXNzLgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGZpcnN0IHNlY3Rpb24gaXMgaWYgd2UgZGV0 ZXJtaW5lIHRoZXJlIGlzIG9uZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3IgbW9y ZSAuIC4gLiApICJAIiBjaGFyYWN0ZXJzIGluIHRoZSBsaW5lLCB3aGljaAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgIyB3b3VsZCBub3JtYWxseSBiZSB0aGUgY2FzZS4KCiAgICAgICAgICAg ICAgICBpZiAoJGZyb21saW5lID1+IG0vQC8pCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjIFRoZSBsaW5lIGhhcyBhdCBsZWFzdCBvbmUgIkAiIGluIGl0LCBz byB3ZSBhc3N1bWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdGhpcyBpcyBpbiB0aGUg bWlkZGxlIG9mIGFuIGVtYWlsIGFkZHJlc3MuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAj CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIElmIHRoZSBlbWFpbCBhZGRyZXNzIGhhZCBu byBzcGFjZXMsIHRoZW4gd2UgY291bGQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZ2V0 IHJpZCBvZiB0aGUgd2hvbGUgdGhpbmcgYnkgc2VhcmNoaW5nIGZvciBhbnkgbnVtYmVyCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjIG9mIG5vbi13aGl0ZXNwYWNlIGNoYXJhY3RlcnMgKFxT KSBjb250aWd1b3VzbHksIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB0aGVuIEkg dGhpbmsgYSBzcGFjZS4gIFN1YnNpdHV0ZSBub3RoaW5nIGZvciB0aGlzLgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAkZnJvbWxp bmUgPX4gcy8oXFMpKyAvLyAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjIEJ1dCB3ZSBuZWVkIHNvbWV0aGluZyB0byBtYXRjaCBh bnkgbnVtYmVyIG9mIG5vbi1ACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGNoYXJhY3Rl cnMsIHRoZW4gdGhlICJAIiBhbmQgdGhlbiBhbGwgdGhlIG5vbi13aGl0ZXNwYWNlCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAjIGNoYXJhY3RlcnMgZnJvbSB0aGVyZSAod2hpY2ggdGFrZXMg dXMgdG8gdGhlIGVuZCBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAidGVzdC5vcmci KSBhbmQgdGhlbiB0aGUgc3BhY2UgZm9sbG93aW5nIHRoYXQuCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEEgdHV0b3JpYWwgb24gcmVn dWxhciBleHByZXNzaW9ucyBpczoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICMgICAgaHR0cDovL3d3dy5wZXJsZG9jLmNvbS9wZXJsNS42 LjEvcG9kL3BlcmxyZXR1dC5odG1sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjIEdldCByaWQgb2YgYWxsIG5vbi1AIGNoYXJhY3RlcnMg dXAgdG8gdGhlIGZpcnN0ICJAIjoKCiAgICAgICAgICAgICAgICAgICAgJGZyb21saW5lID1+IHMv W15AXSsvLzsKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBHZXQgcmlkIG9mIHRoZSAi QCIuCgogICAgICAgICAgICAgICAgICAgICRmcm9tbGluZSA9fiBzL0AvLzsKICAgICAgICAgICAg ICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSWYgdGhlcmUgd2FzIGFuICJAIiBp biB0aGUgbGluZSwgdGhlbiB3ZSBoYXZlIG5vdwogICAgICAgICAgICAgICAgICAgICAgICAgICAg IyByZW1vdmVkIHRoZSBmaXJzdCBvbmUgKGxldHMgaG9wZSB0aGVyZSBhcmVuJ3QgbW9yZSEpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFuZCBldmVyeXRoaW5nIHdoaWNoIHByZWNlZGVk IGl0LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIwoJCQkgICAgIyB3ZSBub3cgcmVtb3Zl IGVpdGhlciBzb21ldGhpbmcgbGlrZQoJCQkgICAgIyAnKGZvbyBiYXIpJy4gZWcuICcobm8gbWFp bCBhZGRyZXNzKScsCgkJCSAgICAjIG9yIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlICdAJyB1cCB0byB0 aGUgdHJhaWxpbmcKCQkJICAgICMgdGltZXpvbmUKCQkJICAgICMKCQkJICAgICMgRklYTUU6IGFs bCB0aG9zZSByZWdleHAgc2hvdWxkIGJlIGNvbWJpbmVkIHRvIGp1c3Qgb25lIHNpbmdsZSBvbmUK CgkJJGZyb21saW5lID1+IHMvKFwoKFxTKnwgKStcKXxcUyspICovLzsKCgkJY2hvbXAgJGZyb21s aW5lOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgU3Rhc2ggdGhlIGRhdGUtdGltZSBm b3IgbGF0ZXIgdXNlLiAgV2Ugd2lsbCB1c2UgaXQKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICMgdG8gdG91Y2ggdGhlIGZpbGUgYWZ0ZXIgd2UgaGF2ZSBjbG9zZWQgaXQuCgogICAgICAgICAg ICAgICAgJHJlY2VpdmVkYXRlID0gJGZyb21saW5lOwoJCQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgIyBEZWJ1Z2dpbmcgbGluZXM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAjIHByaW50ICIkcmVjZWl2ZWRhdGUgaXMgdGhlIHJl Y2VpdmVkYXRlIG9mIG1lc3NhZ2UgJG1lc3NhZ2Vjb3VudC5cbiI7CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAjICRyZWNlaXZlZGF0ZSA9ICJXZWQgTm92IDI0IDExOjA1OjM1IDE5OTkiOwog ICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICAgICAgICAg IyBUbyBsb29rIGF0IHRoZSBleGFjdCBkYXRlLXRpbWUgb2YgZmlsZXM6CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgbHMgLWxGYSAt LWZ1bGwtdGltZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgIyBFbmQgb2YgaGFuZGxpbmcgdGhlICJGcm9tICIgbGluZS4KICAgICAgICAg ICAgfQoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE5vdyBwcm9jZXNzIGhlYWRlciBs aW5lcyB3aGljaCBhcmUgbm90IHRoZSAiRnJvbSAiIGxpbmUuCgogICAgICAgICAgICBpZiAoICAg ICgkaW5oZWFkZXJzIGVxIDEpCiAgICAgICAgICAgICAgICAgJiYgKCEgL15Gcm9tIC8pCiAgICAg ICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBO b3cgd2UgYXJlIHJlYWRpbmcgdGhlIGhlYWRlciBsaW5lcyBhZnRlciB0aGUgIkZyb20gIiBsaW5l LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBLZWVwIGxvb2tpbmcgZm9yIHRoZSBibGFu ayBsaW5lIHdoaWNoIGluZGljYXRlcyB0aGUgZW5kIG9mIHRoZQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgIyBoZWFkZXJzLgoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICIuPSIg bWVhbnMgYXBwZW5kIHRoZSBjdXJyZW50IGxpbmUgdG8gdGhlICRoZWFkZXJzCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjIHZhcmlhYmxlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAg IwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBGb3Igc29tZSByZWFzb24sIEkgd2FzIGdl dHRpbmcgdHdvIGJsYW5rIGxpbmVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGF0IHRo ZSBlbmQgb2YgdGhlIGhlYWRlcnMsIHJhdGhlciB0aGFuIG9uZSwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICMgc28gSSBkZWNpZGVkIG5vdCB0byByZWFkIGluIHRoZSBibGFuayBsaW5lCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAjIHdoaWNoIHRlcm1pbmF0ZXMgdGhlIGhlYWRlcnMu CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAjIERlbGV0ZSB0aGUgInVubGVzcyAoJF8gZXEgIlxuIikiIHRvIGdldCByaWQKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICMgb2YgdGhpcyBrbHVkZ2UuCgogICAgICAgICAgICAgICAgJGhl YWRlcnMgLj0gJF8gdW5sZXNzICgkXyBlcSAiXG4iKTsKCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjIE5vdyBzY2FuIHRoZSBsaW5lIGZvciB2YXJpb3VzIHN0YXR1cyBmbGFncwogICAgICAg ICAgICAgICAgICAgICAgICAgICAgIyBhbmQgdG8gZmluZSB0aGUgU3ViamVjdCBsaW5lLgoKICAg ICAgICAgICAgICAgICRmbGFncyAgLj0gJDEgaWYgL15TdGF0dXM6IChbQS1aXSspLzsKICAgICAg ICAgICAgICAgICRmbGFncyAgLj0gJDEgaWYgL15YLVN0YXR1czogKFtBLVpdKykvOwogICAgICAg ICAgICAgICAgaWYgKC9eWC1Nb3ppbGxhLVN0YXR1czogKFswLTlhLWZdezR9KS9pKQogICAgICAg ICAgICAgICAgewogICAgICAgICAgICAgICAgICAkZmxhZ3MgLj0gJ1InIGlmIChoZXgoJDEpICYg MHgwMDAxKTsKICAgICAgICAgICAgICAgICAgJGZsYWdzIC49ICdBJyBpZiAoaGV4KCQxKSAmIDB4 MDAwMik7CiAgICAgICAgICAgICAgICAgICRmbGFncyAuPSAnRCcgaWYgKGhleCgkMSkgJiAweDAw MDgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYoL15YXC1Fdm9sdXRpb246 XHMrXHd7OH1cLShcd3s0fSkvb2kpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg ICAgJGIgPSBwYWNrKCJINCIsICQxKTsgI3BhY2sgaXQgYXMgNCBkaWdpdCBoZXggKDB4MDAwMCkK ICAgICAgICAgICAgICAgICAgICAkYiA9IHVucGFjaygiQjMyIiwgJGIpOyAjdW5wYWNrIGludG8g Yml0IHN0cmluZwoKICAgICAgICAgICAgICAgICAgICAjICJ1c3VhbGx5IiBvbmx5IHRoZSByaWdo dCBtb3N0IHNpeCBiaXRzIGFyZSB1c2VkCiAgICAgICAgICAgICAgICAgICAgIyBob3dldmVyLCBJ IGhhdmUgY29tZSBhY3Jvc3MgYSBzZXZlbnRoIGJpdCBpbgogICAgICAgICAgICAgICAgICAgICMg YWJvdXQgMTUgKG91dCBvZiAxMCwwMDApIG1lc3NhZ2VzIHdpdGggdGhpcyBiaXQKICAgICAgICAg ICAgICAgICAgICAjIGFjdGl2YXRlZC4KICAgICAgICAgICAgICAgICAgICAjIEkgaGF2ZSBub3Qg Zm91bmQgYW55IGRvY3VtZW50YXRpb24gaW4gdGhlIHNvdXJjZS4KICAgICAgICAgICAgICAgICAg ICAjIElmIHlvdSBmaW5kIG91dCB3aGF0IGl0IGRvZXMsIHBsZWFzZSBsZXQgbWUga25vdy4KCiAg ICAgICAgICAgICAgICAgICAgIyBOb3RlczoKICAgICAgICAgICAgICAgICAgICAjICAgRXZvbHV0 aW9uIDEuNCBkb2VzIG1hcmsgZm9yd2FyZGVkIG1lc3NhZ2VzLgogICAgICAgICAgICAgICAgICAg ICMgICBUaGUgc2l4dGggYml0IGlzIHRvIGRlbm90ZSBhbiBhdHRhY2htZW50CgogICAgICAgICAg ICAgICAgICAgICRmbGFncyAuPSAnQScgaWYoJGIgPX4gL1swMV17MTV9MS8pOyAjcmVwbGllZAog ICAgICAgICAgICAgICAgICAgICRmbGFncyAuPSAnRCcgaWYoJGIgPX4gL1swMV17MTR9MVswMV17 MX0vKTsgI2RlbGV0ZWQKICAgICAgICAgICAgICAgICAgICAkZmxhZ3MgLj0gJ1QnIGlmKCRiID1+ IC9bMDFdezEzfTFbMDFdezJ9Lyk7ICNkcmFmdAogICAgICAgICAgICAgICAgICAgICRmbGFncyAu PSAnRicgaWYoJGIgPX4gL1swMV17MTJ9MVswMV17M30vKTsgI2ZsYWdnZWQKICAgICAgICAgICAg ICAgICAgICAkZmxhZ3MgLj0gJ1InIGlmKCRiID1+IC9bMDFdezExfTFbMDFdezR9Lyk7ICNzZWVu L3JlYWQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRzdWJqZWN0ID0gJDEgaWYg L15TdWJqZWN0OiAoLiopJC87CgkJaWYgKCR1c2VfY2wgZXEgMSkKCQl7CiAgICAgICAgICAgICAg ICAJJGNvbnRlbnRsZW5ndGggPSAkMSBpZiAvXkNvbnRlbnQtTGVuZ3RoOiAoXGQrKSQvOwoJCX0K CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE5vdyBsb29rIG91dCBmb3IgdGhlIGVuZCBv ZiB0aGUgaGVhZGVycyAtIGEgYmxhbmsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbGlu ZS4gIFdoZW4gd2UgZmluZCBpdCwgY3JlYXRlIHRoZSBmaWxlIG5hbWUgYW5kCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjIGFuYWx5c2UgdGhlIFN1YmplY3QgbGluZS4KCiAgICAgICAgICAg ICAgICBpZiAoJF8gZXEgIlxuIikKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICMgV2UgYXJlIGF0IHRoZSBlbmQgb2YgdGhlIGhlYWRlcnMuICBTZXQgdGhlCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAjICRpbmhlYWRlcnMgZmxhZyBiYWNrIHRvIDAuCgog ICAgICAgICAgICAgICAgICAgICRpbmhlYWRlcnMgPSAwOwoKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICMgSW5jbHVkZSB0aGUgY3VycmVudCBuZXdsaW5lIGluIHRoZSBjb250ZW50IGxlbmd0 aAoKICAgICAgICAgICAgICAgICAgICArKyRjb250ZW50bGVuZ3RoIGlmIGRlZmluZWQgJGNvbnRl bnRsZW5ndGg7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBDcmVhdGUgdGhlIGZpbGUg bmFtZSBmb3IgdGhlIGN1cnJlbnQgbWVzc2FnZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQSBzaW1wbGUgdmVyc2lvbiBvZiB0aGlz IHdvdWxkIGJlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgIyAgICRtZXNzYWdlZm4gPSAiY3VyLyR1bmlxdWUuJG1lc3NhZ2Vjb3VudC5t Ym94OjIsIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICMgVGhpcyB3b3VsZCBjcmVhdGUgbmFtZXMgd2l0aCAkbWVzc2FnZWNvdW50IHZh bHVlcyBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAxLCAyLCBldGMuICBCdXQgZm9y IG5lYXRuZXNzIHdoZW4gbG9va2luZyBhdCBhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAj IGRpcmVjdG9yeSBvZiBzdWNoIG1lc3NhZ2VzLCBzb3J0ZWQgYnkgZmlsZW5hbWUsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAjIEkgd2FudCB0byBoYXZlIGxlYWRpbmcgemVyb2VzIG9uIG1l c3NhZ2UgY291bnQsIHNvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRoYXQgdGhleSB3 b3VsZCBiZSAwMDAwMDEgZXRjLiAgVGhpcyBtYWtlcyB0aGVtCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAjIGFwcGVhciBpbiBtZXNzYWdlIG9yZGVyIHJhdGhlciB0aGFuIDEgYmVpbmcgYWZ0 ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgMTkgZXRjLiAgU28gdGhpcyBpcyBnb29k IGZvciB1cCB0byA5OTksOTk5IG1lc3NhZ2VzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAj IGluIGEgbWFpbGJveC4gIEl0IGlzIGEgY29zbWV0aWMgbWF0dGVyIGZvciBhIHBlcnNvbgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIyBsb29raW5nIGludG8gdGhlIE1haWxkaXIgZGlyZWN0 b3J5IG1hbnVhbGx5LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBUbyBkbyB0aGlzLCB1 c2Ugc3ByaW50ZiBpbnN0ZWFkIHdpdGggIiUwNmQiIGZvcgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgIyA2IGNoYXJhY3RlcnMgb2YgemVyby1wYWRkaW5nOgoKICAgICAgICAgICAgCQkkbWVz c2FnZWZuID0gc3ByaW50ZiAoImN1ci8lZC4lMDZkLm1ib3g6MiwiLCAkdW5pcXVlLCAkbWVzc2Fn ZWNvdW50KSA7CgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQXBwZW5kIGZsYWcgY2hh cmFjdGVycyB0byB0aGUgZW5kIG9mIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBm aWxlbmFtZSwgYWNjb3JkaW5nIHRvIGZsYWcgY2hhcmFjdGVycwogICAgICAgICAgICAgICAgICAg ICAgICAgICAgIyBjb2xsZWN0ZWQgZnJvbSB0aGUgbWVzc2FnZSBoZWFkZXJzCgogICAgICAgICAg ICAgICAgICAgICRtZXNzYWdlZm4gLj0gJ0YnIGlmICRmbGFncyA9fiAvRi87ICMgRmxhZ2dlZC4K ICAgICAgICAgICAgICAgICAgICAkbWVzc2FnZWZuIC49ICdSJyBpZiAkZmxhZ3MgPX4gL0EvOyAj IFJlcGxpZWQgdG8uCiAgICAgICAgICAgICAgICAgICAgJG1lc3NhZ2VmbiAuPSAnUycgaWYgJGZs YWdzID1+IC9SLzsgIyBTZWVuIG9yIFJlYWQuCiAgICAgICAgICAgICAgICAgICAgJG1lc3NhZ2Vm biAuPSAnVCcgaWYgJGZsYWdzID1+IC9ELzsgIyBUYWdnZWQgZm9yIGRlbGV0aW9uLgoKCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjIE9wZW5zIGZpbGVuYW1lICRtZXNzYWdlZm4gZm9yIG91 dHB1dCAoPikgd2l0aCBmaWxlaGFuZGxlIE9VVC4KCiAgICAgICAgICAgICAgICAgICAgb3BlbihP VVQsICI+JG1lc3NhZ2VmbiIpIG9yIGRpZSgiRmF0YWw6IHVuYWJsZSB0byBjcmVhdGUgbmV3IG1l c3NhZ2UgJG1lc3NhZ2VmbiIpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQ291bnQg dGhlIG1lc3NhZ2VzLgoKICAgICAgICAgICAgICAgICAgICAkbWVzc2FnZWNvdW50Kys7CgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIyBPbmx5IGZvciB0aGUgZmlyc3QgbWVzc2FnZSwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICMgY2hlY2sgdG8gc2VlIGlmIGl0IGlzIGEgZHVtbXku CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIERlbGV0ZSB0aGUgbWVzc2FnZSBmaWxlIHdl CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGp1c3QgY3JlYXRlZCBpZiBpdCB3YXMgZm9y IHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBkdW1teSBtZXNzYWdlIGF0IHRoZSBz dGFydAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvZiB0aGUgTWJveC4KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIHNl YXJjaCB0ZXJtcyBhcyByZXF1aXJlZC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVGhl IGxhc3QgMiBsaW5lcyBhcmUgZm9yIHJlbnQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAj CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICJtIiBtZWFucyBtYXRjaCB0aGUgcmVndWxh ciBleHByZXNzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBidXQgd2UgY2FuIGRv IHdpdGhvdXQgaXQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAjIERvIEkgbmVlZCB0byBlc2NhcGUgdGhlICcgaW4gIkRPTidUIj8KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICMgSSBkaWRuJ3QgaW4gdGhlIG9yaWdpbmFsIHZlcnNp b24uCgogICAgICAgICAgICAgICAgICAgIGlmICggICAoKCRtZXNzYWdlY291bnQgPT0gMSkgJiYg ZGVmaW5lZCgkc3ViamVjdCkpCiAgICAgICAgICAgICAgICAgICAgICAgICYmICgkc3ViamVjdCA9 fiBtL15ET04nVCBERUxFVEUgVEhJUyBNRVNTQUdFIC0tIEZPTERFUiBJTlRFUk5BTCBEQVRBLykK ICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAg ICAgICAgICAgICAgICAgICAgIyBTdGFzaCB0aGUgZmlsZSBuYW1lIG9mIHRoZSBkdW1teSBtZXNz YWdlIHNvIHdlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGNhbiBkZWxldGUgaXQgbGF0 ZXIuCgogICAgICAgICAgICAgICAgICAgICAgICAkZGVsZXRlZHVtbXkgPSAiJG1lc3NhZ2VmbiI7 CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgUHJp bnQgdGhlIGNvbGxlY3RlZCBoZWFkZXJzIHRvIHRoZSBtZXNzYWdlIGZpbGUuCgogICAgICAgICAg ICAgICAgICAgIHByaW50IE9VVCAiJGhlYWRlcnMiOwoKCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjIENsZWFyICRoZWFkZXJzIGFuZCAkZmxhZ3MgcmVhZHkgZm9yIHRoZSBuZXh0IG1lc3Nh Z2UuCgogICAgICAgICAgICAgICAgICAgICRoZWFkZXJzID0gJyc7CiAgICAgICAgICAgICAgICAg ICAgJGZsYWdzID0gJyc7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBFbmQgb2YgcHJv Y2Vzc2luZyB0aGUgaGVhZGVycyBvbmNlIHdlIGZvdW5kIHRoZQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgIyBibGFuayBsaW5lIHdoaWNoIHRlcm1pbmF0ZWQgdGhlbQogICAgICAgICAgICAg ICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgRW5kIG9mIGRlYWxpbmcgd2l0aCB0 aGUgaGVhZGVycy4KICAgICAgICAgICAgfQoKCiAgICAgICAgICAgIGlmICggJGluaGVhZGVycyBl cSAwKQogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBXZSBhcmUg bm93IHByb2Nlc3NpbmcgdGhlIG1lc3NhZ2UgYm9keS4KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgTm93IHdlIGhhdmUgcGFzc2VkIHRo ZSBoZWFkZXJzIHRvIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvdXRwdXQgZmls ZSwgd2Ugc2NhbiB1bnRpbCB0aGUgd2hpbGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMg bG9vcCBmaW5kcyBhbm90aGVyICJGcm9tICIgbGluZS4KCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjIERlY3JlbWVudCBvdXIgY29udGVudCBsZW5ndGggaWYgd2UncmUKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICMgdXNpbmcgaXQgdG8gZmluZCB0aGUgZW5kIG9mIHRoZSBtZXNzYWdl CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGJvZHkKCiAgICAgICAgICAgICAgICBpZiAo ZGVmaW5lZCAkY29udGVudGxlbmd0aCkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMg RGVjcmVtZW50IG91ciAkY29udGVudGxlbmd0aCB2YXJpYWJsZQoKICAgICAgICAgICAgICAgICAg ICAkY29udGVudGxlbmd0aCAtPSBsZW5ndGgoJF8pOwoKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICMgVGhlIHByb3BlciBlbmQgZm9yIGEgbWVzc2FnZSB3aXRoIENvbnRlbnQtTGVuZ3RoCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAjIHNwZWNpZmllZCBpcyB0aGUgJGNvbnRlbnRsZW5n dGggdmFyaWFibGUgc2hvdWxkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGJlIGV4YWN0 bHkgLTEgYW5kIHdlIHNob3VsZCBiZSBvbiBhIGJhcmUKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICMgbmV3bGluZS4gIE5vdGUgdGhhdCB0aGUgYmFyZSBuZXdsaW5lIGlzIG5vdAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgIyBwcmludGVkIHRvIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQg bWVzc2FnZSBhcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpdCdzIGFjdHVhbGx5IGEg bWVzc2FnZSBzZXBhcmF0b3IgaW4gdGhlIG1ib3gKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICMgZm9ybWF0IHJhdGhlciB0aGFuIHBhcnQgb2YgdGhlIG1lc3NhZ2UuICBUaGUKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICMgbmV4dCBsaW5lIF9zaG91bGRfIGJlIGEgRnJvbV8gbGluZSwg YnV0IGp1c3QgaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgY2FzZSB0aGUgQ29udGVu dC1MZW5ndGggaGVhZGVyIGlzIGluY29ycmVjdAogICAgICAgICAgICAgICAgICAgICAgICAgICAg IyAoZS5nLiBhIGNvcnJ1cHQgbWFpbGJveCksIHdlIGp1c3QgY29udGludWUKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICMgcHV0dGluZyBsaW5lcyBpbnRvIHRoZSBjdXJyZW50IG1lc3NhZ2Ug dW50aWwgd2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgc2VlIHRoZSBuZXh0IEZyb21f IGxpbmUuCgogICAgICAgICAgICAgICAgICAgIGlmICgkY29udGVudGxlbmd0aCA8IDApIHsKICAg ICAgICAgICAgICAgICAgICAgICAgaWYgKCRjb250ZW50bGVuZ3RoID09IC0xICYmICRfIGVxICJc biIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb250ZW50bGVuZ3RoID0gdW5kZWY7 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0OwoJCQl9CiAgICAgICAgICAgICAgICAg ICAgICAgICRjb250ZW50bGVuZ3RoID0gdW5kZWY7CiAgICAgICAgICAgICAgICAgICAgfQogICAg ICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICMgV2Ugd2FudCB0byBjb3B5IGV2ZXJ5IHBhcnQgb2YgdGhlIG1lc3Nh Z2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYm9keSB0byB0aGUgb3V0cHV0IGZpbGUs IGV4Y2VwdCBmb3IgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHF1b3RlZCAiPkZy b20gIiBsaW5lcywgd2hpY2ggd2FzIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB3 YXkgdGhlIElNQVAgc2VydmVyIGVuY29kZWQgYm9keSBsaW5lcwogICAgICAgICAgICAgICAgICAg ICAgICAgICAgIyBzdGFydGluZyB3aXRoICJGcm9tICIuCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFBhdHRlcm4gbWF0Y2hpbmcgUGVy bCBtYWppayB0bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBnZXQgcmlkIG9mIGFuIE1i b3ggcXVvdGVkIEZyb20uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjIFRoaXMgd29ya3Mgb24gdGhlIGRlZmF1bHQgdmFyaWFibGUgIiRf IiB3aGljaAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBjb250YWlucyB0aGUgdGV4dCBm cm9tIHRoZSBNYm94IG1haWxib3ggLSBJCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGd1 ZXNzIHRoaXMgaXMgdGhlIGNhc2UgYmVjYXVzZSBvZiBvdXIKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICMgKG9wZW4oTUJPWCAuLi4uKSBsaW5lIGFib3ZlLCB3aGljaCBkaWQgbm90CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjIGFzc2lnbiB0aGlzIHRvIGFueXRoaW5nIGVsc2UsIHNv IGl0IHdvdWxkIGdvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRvIHRoZSBkZWZhdWx0 IHZhcmlhYmxlLiAgVGhpcyBlbmFibGVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlu c2NydXRhYmx5IHRlcnNlIFBlcmxpc21zIHRvIGZvbGxvdy4KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgInMiIG1lYW5zICJTdWJzaXR1 dGUiIGFuZCBpdCBsb29rcyBmb3IgYW55CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9j Y3VycmVuY2Ugb2YgIj5Gcm9tIiBzdGFydGluZyBhdCB0aGUgc3RhcnQKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICMgb2YgdGhlIGxpbmUuICBXaGVuIGl0IGZpbmRzIHRoaXMsIGl0IHJlcGxh Y2VzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGl0IHdpdGggIkZyb20iLgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBTbyB0 aGlzIGZpbmRzIGFsbCBpbnN0YW5jZXMgaW4gdGhlIE1ib3ggbWVzc2FnZQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgIyB3aGVyZSB0aGUgb3JpZ2luYWwgbGluZSBzdGFydGVkIHdpdGggdGhl IHdvcmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgIkZyb20iIGJ1dCB3YXMgY29udmVy dGVkIHRvICI+RnJvbSIgaW4gb3JkZXIgdG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICMg bm90IGJlIG1pc3Rha2VuIGZvciB0aGUgIkZyb20gLi4uIiBsaW5lIHdoaWNoCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjIGlzIHVzZWQgdG8gZGVtYXJrIGVhY2ggbWVzc2FnZSBpbiB0aGUg TWJveC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVGhpcyB3YXMgd2FzIGEgZGVzdHJ1 Y3RpdmUgY29udmVyc2lvbiBiZWNhdXNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFu eSBtZXNzYWdlIHdoaWNoIG9yaWdpbmFsbHkgaGFkICI+RnJvbSIgYXQgdGhlCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjIHN0YXJ0IG9mIHRoZSBsaW5lLCBiZWZvcmUgYmVpbmcgcHV0IGlu dG8gdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE1ib3gsIHdpbGwgbm93IGhhdmUg dGhhdCBsaW5lIHdpdGhvdXQgdGhlICI+Ii4KCiAgICAgICAgICAgICAgICBzL14+RnJvbSAvRnJv bSAvOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgR2xvcmlvdXMgdGVyc25lc3MgaGVy ZS4gIFRoYW5rcyBTaW1vbiBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZXhwbGFp bmluZyB0aGlzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgIyAicHJpbnQgT1VUIiBtZWFucyBwcmludCB0aGUgZGVmYXVsdCB2YXJpYWJs ZSB0bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB0aGUgZmlsZSBvZiBmaWxlIGhhbmRs ZSBPVVQuICBUaGlzIGlzIHdoZXJlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRoZSBi dWxrIG9mIHRoZSBtZXNzYWdlIHRleHQgaXMgd3JpdHRlbiB0bwogICAgICAgICAgICAgICAgICAg ICAgICAgICAgIyB0aGUgb3V0cHV0IGZpbGUuCgogICAgICAgICAgICAgICAgcHJpbnQgT1VUIG9y IGRpZSgiRmF0YWw6IHVuYWJsZSB0byB3cml0ZSB0byBuZXcgbWVzc2FnZSB0byAkbWVzc2FnZWZu Iik7CgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgRW5kIG9mIHRoZSBpZiBzdGF0ZW1l bnQgZGVhbGluZyB3aXRoIG1lc3NhZ2UgYm9keS4KICAgICAgICAgICAgfQoKCSAgICAkcHJldmlv dXNfbGluZV93YXNfZW1wdHkgPSAoICRfIGVxICJcbiIgKTsKCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAjIEVuZCBvZiB3aGlsZSAoTUJPWCkgbG9vcC4KICAgICAgICB9CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjIENsb3NlIHRoZSBpbnB1dCBmaWxlLgoKICAgICAgICBjbG9zZShN Qk9YKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIENsb3NlIHRoZSBvdXRwdXQgZmls ZSwgYW5kIGR1cGxpY2F0ZSB0aGUgY29kZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBm cm9tIHRoZSBzdGFydCBvZiB0aGUgd2hpbGUgbG9vcCB3aGljaCB0b3VjaGVzCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjIHRoZSBkYXRlLXRpbWUgb2YgdGhlIG1vc3QgcmVjZW50IG1lc3Nh Z2UgZmlsZS4KCiAgICAgICAgY2xvc2UoT1VUKTsKICAgICAgICBpZiAoJG1lc3NhZ2VmbiBuZSAn JykgewoJICAgIG15ICR0ID0gc3RyMnRpbWUoJHJlY2VpdmVkYXRlKTsKCSAgICB1dGltZSAkdCwg JHQsICRtZXNzYWdlZm47Cgl9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZnRlciBh bGwgdGhlIG1lc3NhZ2VzIGhhdmUgYmVlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBj b252ZXJ0ZWQsIGNoZWNrIHRvIHNlZSBpZiB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICMgZmlyc3Qgb25lIHdhcyBhIGR1bW15LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBp ZiBzbywgZGVsZXRlIGl0IGFuZCBtYWtlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRo ZSBtZXNzYWdlIGNvdW50IG9uZSBsZXNzLgoKICAgICAgICBpZiAoJGRlbGV0ZWR1bW15IG5lICIi KQogICAgICAgIHsKICAgICAgICAgICAgcHJpbnRmKCJEdW1teSBtYWlsIHN5c3RlbSBmaXJzdCBt ZXNzYWdlIGRldGVjdGVkIGFuZCBub3Qgc2F2ZWQuXG4iKTsKICAgICAgICAgICAgdW5saW5rICRk ZWxldGVkdW1teTsKCiAgICAgICAgICAgICRtZXNzYWdlY291bnQtLTsKCiAgICAgICAgfQoKICAg ICAgICBwcmludGYoIiRtZXNzYWdlY291bnQgbWVzc2FnZXMuXG5cbiIpOwp9Cg== --=-=-=-- From unknown Wed Aug 20 05:15:37 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: George myglc2 Clemmer Subject: bug#31216: closed (Re: bug#31216: commit 217b8c2e0 produces 'Can't locate Date/Parse.pm in @INC Error' perl error) Message-ID: References: <878t9a8cgp.fsf@fastmail.com> <87r2nbubtr.fsf@gmail.com> X-Gnu-PR-Message: they-closed 31216 X-Gnu-PR-Package: guix Reply-To: 31216@debbugs.gnu.org Date: Thu, 26 Apr 2018 10:55:02 +0000 Content-Type: multipart/mixed; boundary="----------=_1524740102-15993-1" This is a multi-part message in MIME format... ------------=_1524740102-15993-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #31216: commit 217b8c2e0 produces 'Can't locate Date/Parse.pm in @INC Error= ' perl error which was filed against the guix package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 31216@debbugs.gnu.org. --=20 31216: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D31216 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1524740102-15993-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 31216-done) by debbugs.gnu.org; 26 Apr 2018 10:54:35 +0000 Received: from localhost ([127.0.0.1]:39965 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fBeXr-00049B-2l for submit@debbugs.gnu.org; Thu, 26 Apr 2018 06:54:35 -0400 Received: from out2-smtp.messagingengine.com ([66.111.4.26]:46719) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fBeXp-000493-5O for 31216-done@debbugs.gnu.org; Thu, 26 Apr 2018 06:54:33 -0400 Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailout.nyi.internal (Postfix) with ESMTP id 99A3D218C3; Thu, 26 Apr 2018 06:54:32 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute5.internal (MEProxy); Thu, 26 Apr 2018 06:54:32 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastmail.com; h= cc:content-type:date:from:in-reply-to:message-id:mime-version :references:subject:to:x-me-sender:x-me-sender:x-sasl-enc; s= fm2; bh=FjwWLyss2YZRfAO7tFLYNbmmNOjqSUh+UXgvyEXIsbg=; b=Sc3DhVqX 8glC/OKTp6QSd3D3KdcA7j+Vk68i0GRDCdT9mj5OJiBG32C0jSR6hN9CeY/ag6rc tn/nLRmluveAat4Ld2vNr2hFA6pMLoiJ8h57kkS4NE0BQpX6XyuoEMM3UEHRCGV9 4ueSzgEw+R3uJEn0149qeIqQkdxdjKhu45MvhC1mLLtRn7cjjbs1nBKoMR38OVT/ dc0EOOMFTp77Q1/sjBcik3vnsCuLQEeUi8D5m6rXTkPfMDkaR/S0sGLsHggs4mV9 rF2wf4qfdoU7IACs24rzFNzxnm8JVidCHlcYFk0XMr4lM5v0jvm1SgL6Zm+pCtcp hlgMJ6NnAtUiSQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-sender :x-me-sender:x-sasl-enc; s=fm2; bh=FjwWLyss2YZRfAO7tFLYNbmmNOjqS Uh+UXgvyEXIsbg=; b=dsuGpygnJtHJytprOxDH0UzG3hWYoTC6S/x6aI2DZsxC7 NR3815v+o62PIs7dBLSoG/AcvkZsDyVK1DEfhhsTQ5WCq6WoOVHU24t/93yEI0hH K25R4SDRu+g7nBkBibnK/yC34/LPvJraACWBJK1scVl4yV8PA9QDegw+UiGC04dE pWduIQCkdginZ9D7VqAt4iDHEssXK6wX0NMCtDzNTYmdkVlVJ7tNww3X8mQW8rh6 qNaUUBLqahFvoOM2o8KdnNqmd1Hn6nsYjvR8/YpRO0kPzx0hJGCpacc1yispiCnx Tg2M8LrAZ+NQY7q7ugv39JcNcY79W1zKt2yR/4NfQ== X-ME-Sender: Received: from localhost (228.92-221-162.customer.lyse.net [92.221.162.228]) by mail.messagingengine.com (Postfix) with ESMTPA id 1E6FA10256; Thu, 26 Apr 2018 06:54:32 -0400 (EDT) From: Marius Bakke To: myglc2@gmail.com, Mark H Weaver Subject: Re: bug#31216: commit 217b8c2e0 produces 'Can't locate Date/Parse.pm in @INC Error' perl error In-Reply-To: <8736zjfm0g.fsf@gmail.com> References: <87r2nbubtr.fsf@gmail.com> <20180419143910.GB8699@jasmine.lan> <20180420144145.18837a78@lepiller.eu> <87zi1xxmh8.fsf@netris.org> <87r2n9xhbq.fsf@netris.org> <87efj42hke.fsf@netris.org> <8736zjfm0g.fsf@gmail.com> User-Agent: Notmuch/0.26.1 (https://notmuchmail.org) Emacs/25.3.1 (x86_64-pc-linux-gnu) Date: Thu, 26 Apr 2018 12:54:30 +0200 Message-ID: <878t9a8cgp.fsf@fastmail.com> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha512; protocol="application/pgp-signature" X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 31216-done Cc: 31216-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) --=-=-= Content-Type: text/plain myglc2@gmail.com writes: > On 04/24/2018 at 21:36 Mark H Weaver writes: > >> I'm closing this bug now, but feel free to reopen it if you find that >> there are still problems. >> >> Mark > > Hello Mark, > > Still see the problem. Using "b24b19e3f gnu: retroarch: Update to > 1.7.2." to build "guix (GNU Guix) 0.14.0.4418-b24b1" ... > > g1@g1 ~/src/guix$ guix environment --ad-hoc perl perl-timedate make > substitute: updating list of substitutes from 'https://mirror.hydra.gnu.org'... 100.0% > The following derivations will be built: > /gnu/store/ayrxnbdb7b6fksg2bmf0f1zx6cynxzhh-profile.drv > /gnu/store/xhzz6r8y2kqr6d58dlm2ijylb8z3q2s5-info-dir.drv > /gnu/store/bxq1by3s2x0r742mz0h03wbr228gms0y-ca-certificate-bundle.drv > /gnu/store/36l3lw3dlp239ds0giv9w1zn92j80g3n-fonts-dir.drv > /gnu/store/5k76cb350q3ym35pn1jd9rd8gx37hqn0-manual-database.drv > Creating manual page database... > 794 entries processed in 0.8 s > g1@g1 ~/src/guix [env]$ perl ~/.mail-mirror/mb2md-3.20.pl > Can't locate Date/Parse.pm in @INC (you may need to install the Date::Parse module) (@INC contains: /gnu/store/7dckxj5l8kxcacm56k0yn3r62hrsj4if-profile/lib/perl5/site_perl/5.26.2/x86_64-linux-thread-multi /gnu/store/7dckxj5l8kxcacm56k0yn3r62hrsj4if-profile/lib/perl5/site_perl/5.26.2 /gnu/store/7dckxj5l8kxcacm56k0yn3r62hrsj4if-profile/lib/perl5/site_perl /gnu/store/ynk3rg3i791i6k7rz2imbyj9wyfjrnrc-perl-5.26.2/lib/perl5/site_perl/5.26.2/x86_64-linux-thread-multi /gnu/store/ynk3rg3i791i6k7rz2imbyj9wyfjrnrc-perl-5.26.2/lib/perl5/site_perl/5.26.2 /gnu/store/ynk3rg3i791i6k7rz2imbyj9wyfjrnrc-perl-5.26.2/lib/perl5/5.26.2/x86_64-linux-thread-multi /gnu/store/ynk3rg3i791i6k7rz2imbyj9wyfjrnrc-perl-5.26.2/lib/perl5/5.26.2) at /home/g1/.mail-mirror/mb2md-3.20.pl line 385. > BEGIN failed--compilation aborted at /home/g1/.mail-mirror/mb2md-3.20.pl > line 385. > > The offencing script is attached. Hi George, I believe this should be fixed with 28cae3389146ee575e29c6dfd77987883503568e. Again sorry for the breakage, and thank you for reporting these issues :-) --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQEzBAEBCgAdFiEEu7At3yzq9qgNHeZDoqBt8qM6VPoFAlrhr+YACgkQoqBt8qM6 VPpzzQgAx0MOEnWEU1xN+w/Bm8e1QxwP0d0RhYya9VKIeubhyk+L56j1dlr75Dvp 0GCmQA+vpgds1DK1BXJ1aoA0eFQeALtizZ3PdaIOX+Zmg0pjcBaekjL9zdfSauTX 6/F0fYrAoK37ZvRaMFcwuvPkbdxiotaOOl27DNt48aRWE/hKcB7fN3SR7pJiWzLu 2ljz7hQykm1AWyoO+Ko/bxiE/ynoHAep/z7R0tPsNxjhz3EX2CXNMl2/+vB/U2xq n27pZ1/AOM9hBtwtMa3y2c4+GEqrLWNtAmgCiVVHGBsKcR0jS0DHrYkgcewAu7H3 4cSLiG9OoKrsUL9a2owTpRRQDtva4A== =Fm1A -----END PGP SIGNATURE----- --=-=-=-- ------------=_1524740102-15993-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 19 Apr 2018 03:14:59 +0000 Received: from localhost ([127.0.0.1]:59957 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f902E-0001Qp-UE for submit@debbugs.gnu.org; Wed, 18 Apr 2018 23:14:59 -0400 Received: from eggs.gnu.org ([208.118.235.92]:37881) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f902C-0001Qa-HF for submit@debbugs.gnu.org; Wed, 18 Apr 2018 23:14:56 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1f9026-0006eH-Di for submit@debbugs.gnu.org; Wed, 18 Apr 2018 23:14:51 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-1.6 required=5.0 tests=BAYES_00, FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,T_DKIM_INVALID autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:37237) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1f9026-0006dq-48 for submit@debbugs.gnu.org; Wed, 18 Apr 2018 23:14:50 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57070) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1f9024-0007PY-Py for bug-guix@gnu.org; Wed, 18 Apr 2018 23:14:49 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1f9020-0006Xz-DR for bug-guix@gnu.org; Wed, 18 Apr 2018 23:14:47 -0400 Received: from mail-qk0-x22a.google.com ([2607:f8b0:400d:c09::22a]:35345) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1f901z-0006XS-Qd for bug-guix@gnu.org; Wed, 18 Apr 2018 23:14:44 -0400 Received: by mail-qk0-x22a.google.com with SMTP id c188so4074082qkg.2 for ; Wed, 18 Apr 2018 20:14:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=user-agent:from:to:subject:date:message-id:mime-version; bh=jzs28L19OC9ItlVFBPfuKTrWjIKY8iisxcUJqxxjV/4=; b=e4u7k4RMj0yoB4L0M1LKCyQeX++MztWyHtDsxsKhWzXBM1Hn7SQBbrbEHdhc9NvcxO lI0kH7YE449DXSK8FLba43de3KR48K36O3oLLtWOks4Z7WbpxSfRgWDJyH0nBQ30HKxH fOjl/j/nXnaDn1w1dkOKbkDt1S8QKYq4fxSJ9GceSgYnpKNANgokxme6i6rB03Pmp6pq cY8pcq15I+xyQt56ZPBuYDrnF9EuxDCnm+o8tn4LRMS2yfbpTgBoKIci/vAx5I+qoILT et20lMLAWnSTqrGKU9G8C+XByXRlr/VPqC+FqMq0awGagRqz2NO7LM4goWFRXOZsXENp r6fQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:user-agent:from:to:subject:date:message-id :mime-version; bh=jzs28L19OC9ItlVFBPfuKTrWjIKY8iisxcUJqxxjV/4=; b=IBofVdwQIJMe83XHoiml5JMPDfTF2dX2eD1GOD5mTUuWMcUCfLP4D0SiqCa4VKRGPh PJoV90aUagpixu5kh1gWO1Gz6u02SGAti4V1oVCaiRtoUS1kPSMwQAZr/2ayNClH8rYt baVUga5DN7jjaIga8Ys0tgIkaCDaRLCgkGLCXqNKIIt30q+vxbWJhPZ9cln3KtE8XAkb 3saHJ3m9YbTb8WV5eIKCBT1u3gLfHTR+Gcspv7NEPLwKoYiMKwpQAP488dRv3z2tRNpY WD8F8aC6ROcqZD+trzShhjz9lbEFqRQQ2CTiSEDgchQGQI8snx3P1KCbN7rpsux8f024 4WDQ== X-Gm-Message-State: ALQs6tC78vrPxyIZ28q83UWXTsL4DgDh5aH7xL9eqhUNROpsrZ/H2cOf ahkGkaseaZ11Oq4pUFMLCAqJsA== X-Google-Smtp-Source: AB8JxZq3UkLBLLPh+kaJdqF1p2azo50yo50K6+rF2bdLS4KxcKaWtlNMINyj8B4bNPKcH0iyHkf6rw== X-Received: by 10.55.31.129 with SMTP id n1mr4116309qkh.416.1524107683034; Wed, 18 Apr 2018 20:14:43 -0700 (PDT) Received: from g1 (c-73-167-118-254.hsd1.ma.comcast.net. [73.167.118.254]) by smtp.gmail.com with ESMTPSA id u63sm56408qkf.41.2018.04.18.20.14.41 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 18 Apr 2018 20:14:41 -0700 (PDT) User-agent: mu4e 1.0; emacs 25.3.1 From: George myglc2 Clemmer To: bug-guix@gnu.org Subject: commit 217b8c2e0 produces 'Can't locate Date/Parse.pm in @INC Error' perl error Date: Wed, 18 Apr 2018 23:14:40 -0400 Message-ID: <87r2nbubtr.fsf@gmail.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -3.8 (---) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -4.8 (----) --=-=-= Content-Type: text/plain Commit ... 217b8c2e0 * gnu: perl: Replace with 5.26.2 [fixes CVE-2018-{6797,6798,6913}]. ... caused the attached perl script that worked like this ... g1@g1 ~/.mail-mirror$ guix environment --ad-hoc perl perl-timedate make wget g1@g1 ~/.mail-mirror [env]$ perl mb2md-3.20.pl Usage: mb2md -h mb2md [-c] -m [-d destdir] mb2md [-c] -s sourcefile [-d destdir] mb2md [-c] -s sourcedir [-l wu-mailboxlist] [-R|-f somefolder] [-d destdir] [-r strip_extension] g1@g1 ~/.mail-mirror [env]$ ... to stop working ... g1@g1 ~/.mail-mirror$ guix environment --ad-hoc perl perl-timedate make wget g1@g1 ~/.mail-mirror [env]$ perl mb2md-3.20.pl Can't locate Date/Parse.pm in @INC (you may need to install the Date::Parse module) (@INC contains: /gnu/store/wpwb4ig3qhv3m7axjlid2c0f1jqzp09p-profile/lib/perl5/site_perl/5.26.2/x86_64-linux-thread-multi /gnu/store/wpwb4ig3qhv3m7axjlid2c0f1jqzp09p-profile/lib/perl5/site_perl/5.26.2 /gnu/store/wpwb4ig3qhv3m7axjlid2c0f1jqzp09p-profile/lib/perl5/site_perl /gnu/store/ynk3rg3i791i6k7rz2imbyj9wyfjrnrc-perl-5.26.2/lib/perl5/site_perl/5.26.2/x86_64-linux-thread-multi /gnu/store/ynk3rg3i791i6k7rz2imbyj9wyfjrnrc-perl-5.26.2/lib/perl5/site_perl/5.26.2 /gnu/store/ynk3rg3i791i6k7rz2imbyj9wyfjrnrc-perl-5.26.2/lib/perl5/5.26.2/x86_64-linux-thread-multi /gnu/store/ynk3rg3i791i6k7rz2imbyj9wyfjrnrc-perl-5.26.2/lib/perl5/5.26.2) at mb2md-3.20.pl line 385. BEGIN failed--compilation aborted at mb2md-3.20.pl line 385. g1@g1 ~/.mail-mirror [env]$ TIA - George --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=mb2md-3.20.pl Content-Transfer-Encoding: base64 IyEvdXNyL2Jpbi9wZXJsIC13CiMKIyAkSWQ6IG1iMm1kLnBsLHYgMS4yNiAyMDA0LzAzLzI4IDAw OjA5OjQ2IGp1cmkgRXhwICQKIwojIG1iMm1kLTMuMjAucGwgICAgICBDb252ZXJ0cyBNYm94IG1h aWxib3hlcyB0byBNYWlsZGlyIGZvcm1hdC4KIwojIFB1YmxpYyBkb21haW4uCiMKIyBjdXJyZW50 bHkgbWFpbnRhaW5lZCBieToKIyBKdXJpIEhhYmVybGFuZCA8anVyaUBrb3NjaGlrb2RlLmNvbT4K IyBpbml0aWFsbHkgd3JvdGUgYnk6CiMgUm9iaW4gV2hpdHRsZQojCiMgVGhpcyBzY3JpcHQncyB3 ZWIgYWJvZGUgaXMgaHR0cDovL2JhdGxldGguc2FwaWVudGktc2F0Lm9yZy9wcm9qZWN0cy9tYjJt ZC8gLgojIEZvciBhIGNoYW5nZWxvZyBzZWUgaHR0cDovL2JhdGxldGguc2FwaWVudGktc2F0Lm9y Zy9wcm9qZWN0cy9tYjJtZC9jaGFuZ2Vsb2cudHh0CiMKIyBUaGUgTWJveCAtPiBNYWlsZGlyIGlu bmVyIGxvb3AgaXMgYmFzZWQgb24gIHFtYWlsJ3Mgc2NyaXB0IG1ib3gybWFpbGRpciwgd2hpY2gK IyB3YXMga2x1ZGdlZCBieSBJdmFuIEtvaGxlciBpbiAxOTk3IGZyb20gY29udmVydGFuZGNyZWF0 ZSAocHVibGljIGRvbWFpbikKIyBieSBSdXNzZWwgTmVsc29uLiAgQm90aCB0aGVzZSBjb252ZXJ0 IGEgc2luZ2xlIG1haWxzcG9vbCBmaWxlLgojCiMgVGhlIHFtYWlsIGRpc3RyaWJ1dGlvbiBoYXMg YSBtYWlsZGlyMm1ib3guYyBwcm9ncmFtLgojCiMgV2hhdCBpcyBkb2VzOgojID09PT09PT09PT09 PT0KIwojIFJlYWRzIGEgZGlyZWN0b3J5IGZ1bGwgb2YgTWJveCBmb3JtYXQgbWFpbGJveGVzIGFu ZCBjcmVhdGVzIGEgc2V0IG9mCiMgTWFpbGRpciBmb3JtYXQgbWFpbGJveGVzLiAgU29tZSBkZXRh aWxzIG9mIHRoaXMgYXJlIHRvIHN1aXQgQ291cmllcgojIElNQVAncyBuYW1pbmcgY29udmVudGlv bnMgZm9yIE1haWxkaXIgbWFpbGJveGVzLgojCiMgICBodHRwOi8vd3d3LmludGVyNy5jb20vY291 cmllcmltYXAvCiMKIyBUaGlzIGlzIGludGVuZGVkIHRvIGF1dG9tYXRlIHRoZSBjb252ZXJzaW9u IG9mIHRoZSBvbGQKIyAvdmFyL3Nwb29sL21haWwvYmxhaCBmaWxlIC0gd2l0aCBvbmUgY2FsbCBv ZiB0aGlzIHNjcmlwdCAtIGFuZCB0bwojIGNvbnZlcnQgb25lIG9yIG1vcmUgbWFpbGJveGVzIGlu IGEgc3BlY2lmZWQgZGlyZWN0b3J5IHdpdGggc2VwYXJhdGUKIyBjYWxscyB3aXRoIG90aGVyIGNv bW1hbmQgbGluZSBhcmd1bWVudHMuCiMKIyBSdW4gdGhpcyBhcyB0aGUgdXNlciAtIGluIHRoZXNl IGV4YW1wbGVzICJibGFoIi4KCiMgVGhpcyB2ZXJzaW9uIHN1cHBvcnRzIGNvbnZlcnNpb24gb2Y6 CiMKIyAgICBEYXRlICAgIFRoZSBkYXRlLXRpbWUgaW4gdGhlICJGcm9tICIgbGluZSBvZiB0aGUg bWVzc2FnZSBpbiB0aGUKIyAgICAgICAgICAgIE1ib3ggZm9ybWF0IGlzIHRoZSBkYXRlIHdoZW4g dGhlIG1lc3NhZ2Ugd2FzICpyZWNlaXZlZCouCiMgICAgICAgICAgICBUaGlzIGlzIHRyYW5zZm9y bWVkIGludG8gdGhlIGRhdGUtdGltZSBvZiB0aGUgZmlsZSB3aGljaAojICAgICAgICAgICAgY29u dGFpbnMgdGhlIG1lc3NhZ2UgaW4gdGhlIE1haWxkaXIgbWFpbGJveC4KIwojICAgICAgICAgICAg VGhpcyByZWxpZXMgb24gdGhlIERhdGU6OlBhcnNlIHBlcmwgbW9kdWxlIGFuZCB0aGUgdXRpbWUK IyAgICAgICAgICAgIHBlcmwgZnVuY3Rpb24uCiMKIyAgICAgICAgICAgIFRoZSBzY3JpcHQgdHJp ZXMgdG8gY29wZSB3aXRoIGVycmFudCBmb3JtcyBvZiB0aGUKIyAgICAgICAgICAgIE1ib3ggIkZy b20gIiBsaW5lIHdoaWNoIGl0IG1heSBlbmNvdW50ZXIsIGJ1dCBpZgojICAgICAgICAgICAgdGhl cmUgaXMgc29tZXRoaW5nIHJlYWxseSBzY3Jld3kgaW4gYSBGcm9tIGxpbmUsCiMgICAgICAgICAg ICB0aGVuIHBlcmhhcHMgdGhlIHNjcmlwdCB3aWxsIGZhaWwgd2hlbiAidG91Y2giCiMgICAgICAg ICAgICBpcyBnaXZlbiBhbiBpbnZhbGlkIGRhdGUuICBQbGVhc2UgcmVwb3J0IHRoZQojICAgICAg ICAgICAgZXhhY3QgbmF0dXJlIG9mIGFueSBzdWNoICJGcm9tICIgbGluZSEKIwojCiMgICBGbGFn Z2VkCiMgICBSZXBsaWVkCiMgICBSZWFkID0gU2VlbgojICAgVGFnZ2VkIGZvciBEZWxldGlvbgoj CiMgICAgICAgICAgICBJbiB0aGUgTWJveCBtZXNzYWdlLCBmbGFncyBmb3IgdGhlc2UgYXJlIGZv dW5kIGluIHRoZQojICAgICAgICAgICAgIlN0YXR1czogTiIgb3IgIlgtU3RhdHVzOiBOIiBoZWFk ZXJzLCB3aGVyZSAiTiIgaXMgMAojICAgICAgICAgICAgb3IgbW9yZSBvZiB0aGUgZm9sbG93aW5n IGNoYXJhY3RlcnMgaW4gdGhlIGxlZnQgY29sdW1uLgojCiMgICAgICAgICAgICBUaGV5IGFyZSBj b252ZXJ0ZWQgdG8gY2hhcmFjdGVycyBpbiB0aGUgcmlnaHQgY29sdW1uLAojICAgICAgICAgICAg d2hpY2ggYmVjb21lIHRoZSBsYXN0IGNoYXJhY3RlcnMgb2YgdGhlIGZpbGUgbmFtZSwKIyAgICAg ICAgICAgIGZvbGxvd2luZyB0aGUgIjoyLCIgd2hpY2ggaW5kaWNhdGVzIElNQVAgbWVzc2FnZSBz dGF0dXMuCiMKIwojICAgICAgICAgICAgICAgIEYgLT4gRiAgICAgIEZsYWdnZWQKIyAgICAgICAg ICAgICAgICBBIC0+IFIgICAgICBSZXBsaWVkCiMgICAgICAgICAgICAgICAgUiAtPiBTICAgICAg UmVhZCA9IFNlZW4KIyAgICAgICAgICAgICAgICBEIC0+IFQgICAgICBUYWdnZWQgZm9yIERlbGV0 aW9uIChUcmFzaCkKIwojICAgICAgICAgICAgVGhpcyBpcyBiYXNlZCBvbiB0aGUgd29yayBvZiBQ aGlsaXAgTWFrIHdobyB3cm90ZSBhCiMgICAgICAgICAgICBjb21wbGV0ZWx5IHNlcGFyYXRlIE1i b3ggLT4gTWFpbGRpciBjb252ZXJ0ZXIgY2FsbGVkCiMgICAgICAgICAgICBwZXJmZWN0X21haWxk aXIgYW5kIHBvc3RlZCBpdCB0byB0aGUgTXV0dC11c2VycyBtYWlsaW5nCiMgICAgICAgICAgICBs aXN0IG9uIDI1IERlY2VtYmVyIDIwMDE6CiMKIyAgICAgICAgICAgICAgIGh0dHA6Ly93d3cubWFp bC1hcmNoaXZlLmNvbS9tdXR0LXVzZXJzQG11dHQub3JnL21zZzIxODcyLmh0bWwKIwojICAgICAg ICAgICAgTWljaGFlbCBCZXN0IG9yaWdpbmFsbHkgaW50ZWdyYXRlZCB0aG9zZSBjaGFuZ2VzIGlu dG8gbWIybWQuCiMKIwojICAgSW4gYWRkaXRpb24sIHRoZSBuYW1lcyBvZiB0aGUgbWVzc2FnZSBm aWxlcyBpbiB0aGUgTWFpbGRpciBhcmUgb2YgYQojICAgcmVndWxhciBsZW5ndGggYW5kIGFyZSBv ZiB0aGUgZm9ybToKIwojICAgICAgIDc2NTQzMjEuMDAwMTIzLm1ib3g6Mix4eHgKIwojICAgV2hl cmUgIjc2NTQzMjEiIGlzIHRoZSBVbml4IHRpbWUgaW4gc2Vjb25kcyB3aGVuIHRoZSBzY3JpcHQg d2FzCiMgICBydW4gYW5kICIwMDAxMjMiIGlzIHRoZSBzaXggemVyb2VzIHBhZGRlZCBtZXNzYWdl IG51bWJlciBhcwojICAgbWVzc2FnZXMgYXJlIGNvbnZlcnRlZCBmcm9tIHRoZSBNYm94IGZpbGUu ICAieHh4IiByZXByZXNlbnRzIHplcm8gb3IKIyAgIG1vcmUgb2YgdGhlIGFib3ZlIGZsYWdzIEYs IFIsIFMgb3IgVC4KIwojCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIwojIFVTQUdFCiMgPT09PT0KIwojIFJ1 biB0aGlzIGFzIHRoZSB1c2VyIG9mIHRoZSBtYWlsYm94ZXMsIG5vdCBhcyByb290LgojCiMKIyBt YjJtZCAtaAojIG1iMm1kIFstY10gLW0gWy1kIGRlc3RkaXJdCiMgbWIybWQgWy1jXSAtcyBzb3Vy Y2VmaWxlIFstZCBkZXN0ZGlyXQojIG1iMm1kIFstY10gLXMgc291cmNlZGlyIFstbCB3dS1tYWls Ym94bGlzdF0gWy1SfC1mIHNvbWVmb2xkZXJdIFstZCBkZXN0ZGlyXSBbLXIgc3RyaXBfZXh0ZW5z aW9uXQojCiMgIC1jICAgICAgICAgICAgdXNlIHRoZSBDb250ZW50LUxlbmd0aDogaGVhZGVycyAo aWYgcHJlc2VudCkgdG8gZmluZCB0aGUKIyAgICAgICAgICAgICAgICBiZWdpbm5pbmcgb2YgdGhl IG5leHQgbWVzc2FnZQojICAgICAgICAgICAgICAgIFVzZSB3aXRoIGNhdXRpb24hIFJlc3VsdHMg bWF5IGJlIHVucmVsaWFibGUuIEkgcmVjb21tZW5kIHRvIGRvCiMgICAgICAgICAgICAgICAgYSBy dW4gd2l0aG91dCAiLWMiIGZpcnN0IGFuZCBvbmx5IHVzZSBpdCBpZiB5b3UgYXJlIGNlcnRhaW4s CiMgICAgICAgICAgICAgICAgdGhhdCB0aGUgbWJveCBpbiBxdWVzdGlvbiByZWFsbHkgbmVlZHMg dGhlICItYyIgb3B0aW9uCiMKIyAgLW0gICAgICAgICAgICBJZiB0aGlzIGlzIHVzZWQgdGhlbiB0 aGUgc291cmNlIHdpbGwKIyAgICAgICAgICAgICAgICBiZSB0aGUgc2luZ2xlIG1haWxib3ggYXQg L3Zhci9zcG9vbC9tYWlsL2JsYWggZm9yCiMgICAgICAgICAgICAgICAgdXNlciBibGFoIGFuZCB0 aGUgZGVzdGluYXRpb24gbWFpbGJveCB3aWxsIGJlIHRoZQojICAgICAgICAgICAgICAgICJkZXN0 ZGlyIiBtYWlsYm94IGl0c2VsZi4KIwojCiMgIC1zIHNvdXJjZSAgICAgRGlyZWN0b3J5IG9yIGZp bGUgcmVsYXRpdmUgdG8gdGhlIHVzZXIncyBob21lIGRpcmVjdG9yeSwKIyAgICAgICAgICAgICAg ICB3aGljaCBpcyB3aGVyZSB0aGUgdGhlICJzb21lZm9sZGVycyIgZGlyZWN0b3JpZXMgYXJlIGxv Y2F0ZWQuCiMgICAgICAgICAgICAgICAgT3IgaWYgc3RhcnRpbmcgd2l0aCBhICIvIiBpdCBpcyB0 YWtlbiBhcyBhCiMgICAgICAgICAgICAgICAgYWJzb2x1dGUgcGF0aCwgZS5nLiAvbW50L29sZG1h aWwvdXNlcgojCiMgICAgICAgICAgICAgICAgb3IKIwojICAgICAgICAgICAgICAgIEEgc2luZ2xl IG1ib3ggZmlsZSB3aGljaCB3aWxsIGJlIGNvbnZlcnRlZCB0bwojICAgICAgICAgICAgICAgIHRo ZSBkZXN0ZGlyLgojCiMgIC1SCQkgSWYgZGVmaW5lZCwgZG8gbm90IHNraXAgZGlyZWN0b3JpZXMg Zm91bmQgaW4gYSBtYWlsYm94IAojCQkgZGlyZWN0b3J5LCBidXQgcnVucyByZWN1cnNpdmVseSBp bnRvIGVhY2ggb2YgdGhlbSwgCiMgCQkgY3JlYXRpbmcgYWxsIHdhbnRlZCBmb2xkZXJzIGluIE1h aWxkaXIuCiMJCSBJbmNvbXBhdGlibGUgd2l0aCAnLWYnCiMKIyAgLWYgc29tZWZvbGRlciBEaXJl Y3RvcmllcywgcmVsYXRpdmUgdG8gInNvdXJjZWRpciIgd2hlcmUgdGhlIE1ib3ggZmlsZXMKIyAg ICAgICAgICAgICAgICBhcmUuIEFsbCBtYWlsYm94ZXMgaW4gdGhlICJzb3VyY2VkaXIiCiMgICAg ICAgICAgICAgICAgZGlyZWN0b3J5IHdpbGwgYmUgY29udmVydGVkIGFuZCBwbGFjZWQgaW4gdGhl CiMgICAgICAgICAgICAgICAgImRlc3RkaXIiIGRpcmVjdG9yeS4gIChUeXBpY2FsbHkgdGhlIElu Ym94IGRpcmVjdG9yeQojICAgICAgICAgICAgICAgIHdoaWNoIGluIHRoaXMgaW5zdGFuY2UgaXMg YWxzbyBmdW5jdGlvbmluZyBhcyBhCiMgICAgICAgICAgICAgICAgZm9sZGVyIGZvciBvdGhlciBt YWlsYm94ZXMuKQojCiMgICAgICAgICAgICAgICAgVGhlICJzb21lZm9sZGVyIiBkaXJlY3RvcnkK IyAgICAgICAgICAgICAgICBuYW1lIHdpbGwgYmUgZW5jb2RlZCBpbnRvIHRoZSBuZXcgbWFpbGJv eGVzJyBuYW1lcy4KIyAgICAgICAgICAgICAgICBTZWUgdGhlIGV4YW1wbGVzIGJlbG93LgojCiMg ICAgICAgICAgICAgICAgVGhpcyBkb2VzIG5vdCBzYXZlIGFuIFVXIElNQVAgZHVtbXkgbWVzc2Fn ZSBmaWxlCiMgICAgICAgICAgICAgICAgYXQgdGhlIHN0YXJ0IG9mIHRoZSBNYm94IGZpbGUuICBT bWFsbCBjaGFuZ2VzCiMgICAgICAgICAgICAgICAgaW4gdGhlIGNvZGUgY291bGQgYWRhcHQgaXQg Zm9yIGxvb2tpbmcgZm9yCiMgICAgICAgICAgICAgICAgb3RoZXIgZGlzdGluY3RpdmUgcGF0dGVy bnMgb2YgZHVtbXkgbWVzc2FnZXMgdG9vLgojCiMgICAgICAgICAgICAgICAgRG9uJ3QgbGV0IHRo ZSBzb3VyY2UgZGlyZWN0b3J5IHlvdSBnaXZlIGFzICJzb21lZm9sZGVycyIKIyAgICAgICAgICAg ICAgICBjb250YWluIGFueSAiLiJzIGluIGl0cyBuYW1lLCB1bmxlc3MgeW91IHdhbnQgdG8KIyAg ICAgICAgICAgICAgICBjcmVhdGUgc3ViZm9sZGVycyBmcm9tIHRoZSBJTUFQIHVzZXIncyBwb2lu dCBvZgojICAgICAgICAgICAgICAgIHZpZXcuICBTZWUgdGhlIGV4YW1wbGUgYmVsb3cuCiMKIyAg ICAgICAgICAgICAgICBJbmNvbXBhdGlibGUgd2l0aCAnLWYnCiMKIwojICAtZCBkZXN0ZGlyICAg IERpcmVjdG9yeSB3aGVyZSB0aGUgTWFpbGRpciBmb3JtYXQgZGlyZWN0b3JpZXMgd2lsbCBiZSBj cmVhdGVkLgojICAgICAgICAgICAgICAgIElmIG5vdCBnaXZlbiwgdGhlbiB0aGUgZGVzdGluYXRp b24gd2lsbCBiZSB+L01haWxkaXIgLgojICAgICAgICAgICAgICAgIFR5cGljYWxseSwgdGhpcyBp cyB3aGF0IHRoZSBJTUFQIHNlcnZlciBzZWVzIGFzIHRoZQojICAgICAgICAgICAgICAgIEluYm94 IGFuZCB0aGUgZm9sZGVyIGZvciBhbGwgdXNlciBtYWlsYm94ZXMuCiMgICAgICAgICAgICAgICAg SWYgdGhpcyBiZWdpbnMgd2l0aCBhICcvJyB0aGUgcGF0aCBpcyBjb25zaWRlcmVkIHRvIGJlCiMg ICAgICAgICAgICAgICAgYWJzb2x1dGUsIG90aGVyd2lzZSBpdCBpcyByZWxhdGl2ZSB0byB0aGUg dXNlcnMKIyAgICAgICAgICAgICAgICBob21lIGRpcmVjdG9yeS4KIwojICAtciBzdHJpcF9leHQg IElmIGRlZmluZWQgdGhpcyBleHRlbnNpb24gd2lsbCBiZSBzdHJpcHBlZCBmcm9tCiMgICAgICAg ICAgICAgICAgdGhlIG9yaWdpbmFsIG1haWxib3ggZmlsZSBuYW1lIGJlZm9yZSBjcmVhdGluZwoj ICAgICAgICAgICAgICAgIHRoZSBjb3JyZXNwb25kaW5nIG1haWxkaXIuIFRoZSBleHRlbnNpb24g bXVzdCBiZQojICAgICAgICAgICAgICAgIGdpdmVuIHdpdGhvdXQgdGhlIGxlYWRpbmcgZG90ICgi LiIpLiBTZWUgdGhlIGV4YW1wbGUgYmVsb3cuCiMKIyAgLWwgV1UtZmlsZSAgICBGaWxlIGNvbnRh aW5pbmcgdGhlIGxpc3Qgb2Ygc3Vic2NyaWJlZCBmb2xkZXJzLiAgSWYKIyAgICAgICAgICAgICAg ICBtaWdyYXRpbmcgZnJvbSBXVS1JTUFQIHRoZSBsaXN0IG9mIHN1YnNjcmliZWQgZm9sZGVycyB3 aWxsCiMgICAgICAgICAgICAgICAgYmUgZm91bmQgaW4gdGhlIGZpbGUgY2FsbGVkIC5tYWlsYm94 bGlzdCBpbiB0aGUgdXNlcnMKIyAgICAgICAgICAgICAgICBob21lIGRpcmVjdG9yeS4gIFRoaXMg d2lsbCBjb252ZXJ0IGFsbCBzdWJzY3JpYmVkIGZvbGRlcnMKIyAgICAgICAgICAgICAgICBmb3Ig YSBzaW5nbGUgdXNlcjoKIyAgICAgICAgICAgICAgICAvYmluL21iMm1kIC1zIG1haWwgLWwgLm1h aWxib3hsaXN0IC1SIC1kIE1haWxkaXIKIyAgICAgICAgICAgICAgICBhbmQgZm9yIGFsbCB1c2Vy cyBpbiBhIGRpcmVjdG9yeSBhcyByb290IHlvdSBjYW4gZG8gdGhlCiMgICAgICAgICAgICAgICAg Zm9sbG93aW5nOgojICAgICAgICAgICAgICAgIGZvciBpIGluICo7IGRvIGVjaG8gJGk7c3UgLSAk aSAtYyAiL2Jpbi9tYjJtZCAtcyBtYWlsIC1sIC5tYWlsYm94bGlzdCAtUiAtZCBNYWlsZGlyIjtk b25lCiMKIwojICBFeGFtcGxlCiMgID09PT09PT0KIwojIFdlIGhhdmUgYSBidW5jaCBvZiBkaXJl Y3RvcmllcyBvZiBNYm94IG1haWxib3hlcyBsb2NhdGVkIGF0CiMgL2hvbWUvYmxhaC9vbGRtYWls LwojCiMgICAgIC9ob21lL2JsYWgvb2xkbWFpbC9mZmZmZgojICAgICAvaG9tZS9ibGFoL29sZG1h aWwvZ2dnZ2cKIyAgICAgL2hvbWUvYmxhaC9vbGRtYWlsL3h4eC9hYWFhCiMgICAgIC9ob21lL2Js YWgvb2xkbWFpbC94eHgvYmJiYgojICAgICAvaG9tZS9ibGFoL29sZG1haWwveHh4L2NjY2MKIyAg ICAgL2hvbWUvYmxhaC9vbGRtYWlsL3h4eC9kZGRkCiMgICAgIC9ob21lL2JsYWgvb2xkbWFpbC95 eXl5L2h1ZXkKIyAgICAgL2hvbWUvYmxhaC9vbGRtYWlsL3l5eXkvZHVleQojICAgICAvaG9tZS9i bGFoL29sZG1haWwveXl5eS9sb3VpZQojCiMgV2l0aCB0aGUgVVcgSU1BUCBzZXJ2ZXIsIGZmZmZm IGFuZCBnZ2dnZyB3b3VsZCBoYXZlIGFwcGVhcmVkIGluIHRoZSByb290CiMgb2YgdGhpcyBtYWls IHNlcnZlciwgYWxvbmcgd2l0aCB0aGUgSW5ib3guICBhYWFhLCBiYmJiIGV0Yywgd291bGQgaGF2 ZQojIGFwcGVhcmVkIGluIGEgZm9sZGVyIGNhbGxlZCB4eHggZnJvbSB0aGF0IHJvb3QsIGFuZCB4 eHggd2FzIGp1c3QgYSBmb2xkZXIKIyBub3QgYSBtYWlsYm94IGZvciBzdG9yaW5nIG1lc3NhZ2Vz LgojCiMgV2UgYWxzbyBoYXZlIHRoZSBtYWlsc3Bvb2wgSW5ib3ggYXQ6CiMKIyAgICAgL3Zhci9z cG9vbC9tYWlsL2JsYWgKIwojCiMgVG8gY29udmVydCB0aGVzZSwgYXMgdXNlciBibGFoLCB3ZSBn aXZlIHRoZSBmaXJzdCBjb21tYW5kOgojCiMgICAgbWIybWQgLW0KIwojIFRoZSBtYWluIE1haWxk aXIgZGlyZWN0b3J5IHdpbGwgYmUgY3JlYXRlZCBpZiBpdCBkb2VzIG5vdCBleGlzdC4KIyAoVGhp cyBpcyB0cnVlIG9mIGFueSBhcmd1bWVudCBvcHRpb25zLCBub3QganVzdCAiLW0iLikKIwojICAg IC9ob21lL2JsYWgvTWFpbGRpci8KIwojIEl0IGhhcyB0aGUgZm9sbG93aW5nIHN1YmRpcmVjdG9y aWVzOgojCiMgICAgL2hvbWUvYmxhaC9NYWlsZGlyL3RtcC8KIyAgICAvaG9tZS9ibGFoL01haWxk aXIvbmV3LwojICAgIC9ob21lL2JsYWgvTWFpbGRpci9jdXIvCiMKIyBUaGVuIC92YXIvc3Bvb2wv YmxhaCBmaWxlIGlzIHJlYWQsIHNwbGl0IGludG8gaW5kaXZpZHVhbCBmaWxlcyBhbmQKIyB3cml0 dGVuIGludG8gL2hvbWUvYmxhaC9NYWlsZGlyL2N1ci8gLgojCiMgTm93IHdlIGdpdmUgdGhlIHNl Y29uZCBjb21tYW5kOgojCiMgICAgbWIybWQgIC1zIG9sZG1haWwgLVIKIwojIFRoaXMgcmVhZHMg cmVjdXJzaXZlbHkgYWxsIE1ib3ggbWFpbGJveGVzIGFuZCBjcmVhdGVzOgojCiMgICAgL2hvbWUv YmxhaC9NYWlsZGlyLy5mZmZmZi8KIyAgICAvaG9tZS9ibGFoL01haWxkaXIvLmdnZ2dnLwojICAg IC9ob21lL2JsYWgvTWFpbGRpci8ueHh4LwojICAgIC9ob21lL2JsYWgvTWFpbGRpci8ueHh4LmFh YWEvCiMgICAgL2hvbWUvYmxhaC9NYWlsZGlyLy54eHguYmJiYi8KIyAgICAvaG9tZS9ibGFoL01h aWxkaXIvLnh4eC5jY2NjLwojICAgIC9ob21lL2JsYWgvTWFpbGRpci8ueHh4LmFhYWEvCiMgICAg L2hvbWUvYmxhaC9NYWlsZGlyLy55eXl5LwojICAgIC9ob21lL2JsYWgvTWFpbGRpci8ueXl5eS5o dWV5LwojICAgIC9ob21lL2JsYWgvTWFpbGRpci8ueXl5eS5kdWV5LwojICAgIC9ob21lL2JsYWgv TWFpbGRpci8ueXl5eS5sb3VpZS8KIwojICBUaGUgcmVzdWx0LCBmcm9tIHRoZSBJTUFQIGNsaWVu dCdzIHBvaW50IG9mIHZpZXcgaXM6CiMKIyAgICBJbmJveCAtLS0tLS0tLS0tLS0tLS0tLQojICAg ICAgICB8CiMgICAgICAgIHwgZmZmZmYgLS0tLS0tLS0tLS0KIyAgICAgICAgfCBnZ2dnZyAtLS0t LS0tLS0tLQojICAgICAgICB8CiMgICAgICAgIC0geHh4IC0tLS0tLS0tLS0tLS0KIyAgICAgICAg fCAgIHwgYWFhYSAtLS0tLS0tLQojICAgICAgICB8ICAgfCBiYmJiIC0tLS0tLS0tCiMgICAgICAg IHwgICB8IGNjY2MgLS0tLS0tLS0KIyAgICAgICAgfCAgIHwgZGRkZCAtLS0tLS0tLQojICAgICAg ICB8CiMgICAgICAgIC0geXl5eSAtLS0tLS0tLS0tLS0KIyAgICAgICAgICAgICB8IGh1ZXkgLS0t LS0tLQojICAgICAgICAgICAgIHwgZHVleSAtLS0tLS0tCiMgICAgICAgICAgICAgfCBsb3VpZSAt LS0tLS0KIwojIE5vdGUgdGhhdCBhbHRob3VnaCB+L01haWxkaXIvLnh4eC8gYW5kIH4vTWFpbGRp ci8ueXl5eSBtYXkgYXBwZWFyCiMgYXMgZm9sZGVycyB0byB0aGUgSU1BUCBjbGllbnQgdGhlIGFi b3ZlIGNvbW1hbmRzIHRvIG5vdCBnZW5lcmF0ZQojIGFueSBNYWlsZGlyIGZvbGRlcnMgb2YgdGhl c2UgbmFtZXMuICBUaGVzZSBhcmUgc2ltcGx5IGVsZW1lbnRzCiMgb2YgdGhlIG5hbWVzIG9mIG90 aGVyIE1haWxkaXIgZGlyZWN0b3JpZXMuIChpZiB5b3UgdXNlZCAnLVInLCB0aGV5IAojIHdoaWxs IGJlIGFibGUgdG8gYWN0IGFzIG5vcm1hbCBmb2xkZXJzLCBjb250YWluaW5nIG1lc3NhZ2VzIEFO RCBmb2xkZXJzKQojCiMgV2l0aCBhIHNlcGFyYXRlIHJ1biBvZiB0aGlzIHNjcmlwdCwgdXNpbmcg anVzdCB0aGUgIi1zIiBvcHRpb24KIyB3aXRob3V0ICItZiIgbm9yICItUiIsIGl0IHdvdWxkIGJl IHBvc3NpYmxlIHRvIGNyZWF0ZSBtYWlsYm94ZXMgd2hpY2gKIyBhcHBlYXIgYXQgdGhlIHNhbWUg bG9jYXRpb24gYXMgZmFyIGFzIHRoZSBJTUFQIGNsaWVudCBpcwojIGNvbmNlcm5lZC4gIEJ5IGhh dmluZyBNYm94IG1haWxib3hlcyBpbiBzb21lIGRpcmVjdG9yeToKIyB+L29sZG1haWwvbm5uLyBv ZiB0aGUgZm9ybToKIwojICAgICAvaG9tZS9ibGFoL29sZG1haWwvbm4veHh4eAojICAgICAvaG9t ZS9ibGFoL29sZG1haWwvbm4veXl5eXkKIwojIHRoZW4gdGhlIGNvbW1hbmQ6CiMKIyAgIG1iMm1k IC1zIG9sZG1haWwvbm4KIwojIHdpbGwgY3JlYXRlIHR3byBuZXcgTWFpbGRpcnM6CiMKIyAgICAv aG9tZS9ibGFoL01haWxkaXIvLnh4eC8KIyAgICAvaG9tZS9ibGFoL01haWxkaXIvLnl5eXkvCiMK IyBUaGVuIHdoYXQgdXNlZCB0byBiZSB0aGUgeHh4IGFuZCB5eXl5IGZvbGRlcnMgbm93IGZ1bmN0 aW9uIGFzCiMgbWFpbGJveGVzIHRvby4gIE5ldHNjYXBlIDQuNzcgbmVlZGVkIHRvIGJlIHB1dCB0 byBzbGVlcCBhbmQgZ2l2ZW4gRUNUCiMgdG8gcmVjb2duaXNlIHRoaXMgLSBkZWxldGluZyB0aGUg Y29udGVudHMgb2YgKFdpbjJrIGV4YW1wbGUpOgojCiMgICAgQzpcUHJvZ3JhbSBGaWxlc1xOZXRz Y2FwZVxVc2Vyc1x1dVxJbWFwTWFpbFxhYWEuYmJiLmNjY1wKIwojIHdoZXJlICJ1dSIgaXMgdGhl IHVzZXIgYW5kICJhYWEuYmJiLmNjYyIgaXMgdGhlIElNQVAgc2VydmVyCiMKIyBJIG9mdGVuIGZp bmQgdGhhdCBkZWxldGluZyBhbGwgdGhpcyBkaXJlY3RvcnkncyBjb250ZW50cywgZXhjZXB0CiMg InJ1bGVzLmRhdCIsIGZvcmNlcyBOZXRzY2FwZSBiYWNrIHRvIHJlYWxpdHkgYWZ0ZXIgaXRzIElN QVAgaW5uYXJkcwojIGhhdmUgYmVjb21lIHR3aXN0ZWQuICBUaGVuIG1heWJlIHVzZSBGaWxlID4g U3Vic2NyaWJlIC0gYnV0IHRoaXMKIyBzZWVtcyBpbmNhcGFibGUgb2Ygc3Vic2NyaWJpbmcgdG8g Zm9sZGVycy4KIwojIEZvciBPdXRsb29rIEV4cHJlc3MsIHNlbGVjdCB0aGUgbWFpbCBzZXJ2ZXIs IHRoZW4gY2xpY2sgdGhlCiMgIklNQVAgRm9sZGVycyIgYnV0dG9uIGFuZCB1c2UgIlJlc2V0IGxp c3QiLiAgSW4gdGhlICJBbGwiCiMgd2luZG93LCBzZWxlY3QgdGhlIG1haWxib3hlcyB5b3Ugd2Fu dCB0byBzZWUgaW4gbm9ybWFsCiMgdXNhZ2UuCiMKIwojIFRoaXMgc2NyaXB0IGRpZCBub3QgcmVj dXJzZSBzdWJkaXJlY3RvcmllcyBvciBkZWxldGUgb2xkIG1haWxib3hlcywgYmVmb3JlIGFkZGl0 aW9uIG9mIHRoZSAnLVInIHBhcmFtZXRlciA6KQojCiMgQmUgc3VyZSBub3QgdG8gYmUgYWNjZXNz aW5nIHRoZSBNYm94IG1haWxib3hlcyB3aGlsZSBydW5uaW5nIHRoaXMKIyBzY3JpcHQuICBJdCBk b2VzIG5vdCBhdHRlbXB0IHRvIGxvY2sgdGhlbS4gIExpa2V3aXNlLCBkb24ndCBydW4gdHdvCiMg Y29waWVzIG9mIHRoaXMgc2NyaXB0IGVpdGhlci4KIwojCiMgVHJpY2tpZXIgdXNhZ2UgLiAuIC4K IyA9PT09PT09PT09PT09PT09PT09PQojCiMgSWYgeW91IGhhdmUgYSBidW5jaCBvZiBtYWlsYm94 ZXMgaW4gYSBkaXJlY3Rvcnkgfi9vbGRtYWlsL2Rvb3JzLwojIGFuZCB5b3Ugd2FudCB0aGVtIHRv IGFwcGVhciBpbiBmb2xkZXJzIHN1Y2ggYXM6CiMKIyB+L01haWxkaXIvLm11c2ljLmJhbmRzLmRv b3JzLkppbQojIH4vTWFpbGRpci8ubXVzaWMuYmFuZHMuZG9vcnMuSm9obgojCiMgZXRjLiBzbyB0 aGV5IGFwcGVhciBpbiBhbiBJTUFQIGZvbGRlcjoKIwojICAgIEluYm94IC0tLS0tLS0tLS0tLS0t LS0tCiMgICAgICAgIHwgbXVzaWMKIyAgICAgICAgICAgICAgfCBiYW5kcwojICAgICAgICAgICAg ICAgICAgICB8IGRvb3JzCiMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgSmltCiMgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgSm9obgojICAgICAgICAgICAgICAgICAgICAgICAgICB8IFJv YmJpZQojICAgICAgICAgICAgICAgICAgICAgICAgICB8IFJheQojCiMgVGhlbiB5b3UgY291bGQg cmVuYW1lIHRoZSBzb3VyY2UgZGlyZWN0b3J5IHRvOgojCiMgIH4vb2xkbWFpbC9tdXNpYy5iYW5k cy5kb29ycy8KIwojIHRoZW4gdXNlOgojCiMgICBtYjJtZCAtcyBvbGRtYWlsIC1mIG11c2ljLmJh bmRzLmRvb3JzCiMKIwojIE9yIHNpbXBseSB1c2UgJy1SJyBzd2l0Y2ggd2l0aDoKIyAgIG1iMm1k IC1zIG9sZG1haWwgLVIKIwojCiMgU3RyaXBwaW5nIG1haWxib3ggZXh0ZW5zaW9uczoKIyA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PSAKIwojIElmIHlvdSB3YW50IHRvIGNvbnZlcnQgbWFp bGJveGVzIHRoYXQgY2FtZSBmb3IgZXhhbXBsZSBmcm9tCiMgYSBXaW5kb3dzIGJveCB0aGFuIHlv dSBtaWdodCB3YW50IHRvIHN0cmlwIHRoZSBleHRlbnNpb24gb2YKIyB0aGUgbWFpbGJveCBuYW1l IHNvIHRoYXQgaXQgd29uJ3QgY3JlYXRlIGEgc3ViZm9sZGVyIGluIHlvdXIKIyBtYWlsIGNsaWVu dHMgdmlldy4KIwojIEV4YW1wbGU6CiMgWW91IGhhdmUgc2V2ZXJhbCBtYWlsYm94ZXMgbmFtZWQg VHJhc2gubWJ4LCBTZW50Lm1ieCwgRHJhZnRzLm1ieAojIElmIHlvdSBkb24ndCBzdHJpcCB0aGUg ZXh0ZW5zaW9uICJtYngiIHlvdSB3aWxsIGdldCB0aGUgZm9sbG93aW5nCiMgaGllcmFyY2h5Ogoj CiMgSW5ib3gKIyAgICAgIHwKIyAgICAgICAtIFRyYXNoIAojICAgICAgfCAgICAgICB8IG1ieAoj ICAgICAgfAojICAgICAgIC0gU2VudCAKIyAgICAgIHwgICAgICAgfCBtYngKIyAgICAgIHwKIyAg ICAgICAtIERyYWZ0cyAKIyAgICAgICAgICAgICAgfCBtYngKIwojIFRoaXMgaXMgbW9yZSB0aGFu IHVnbHkhCiMgSnVzdCB1c2U6CiMgICBtYjJtZCAtcyBvbGRtYWlsIC1yIG1ieAojCiMgTm90ZTog ZG9uJ3Qgc3BlY2lmeSB0aGUgZG90ISBJdCB3aWxsIGJlIHN0cmlwcGVkIG9mZgojIGF1dG9tYWdp Y2FsbHkgOykKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKdXNlIHN0cmljdDsKdXNlIEdldG9w dDo6U3RkOwp1c2UgRGF0ZTo6UGFyc2U7CnVzZSBJTzo6SGFuZGxlOwp1c2UgRmNudGw7CgoJCSAg ICAjIHByaW50IHRoZSB1c2FnZSBtZXNzYWdlCnN1YiB1c2FnZSgpIHsKICAgIHByaW50ICJVc2Fn ZTpcbiI7CiAgICBwcmludCAiICAgICAgIG1iMm1kIC1oXG4iOwogICAgcHJpbnQgIiAgICAgICBt YjJtZCBbLWNdIC1tIFstZCBkZXN0ZGlyXVxuIjsKICAgIHByaW50ICIgICAgICAgbWIybWQgWy1j XSAtcyBzb3VyY2VmaWxlIFstZCBkZXN0ZGlyXVxuIjsKICAgIGRpZSAgICIgICAgICAgbWIybWQg Wy1jXSAtcyBzb3VyY2VkaXIgWy1sIHd1LW1haWxib3hsaXN0XSBbLVJ8LWYgc29tZWZvbGRlcl0g Wy1kIGRlc3RkaXJdIFstciBzdHJpcF9leHRlbnNpb25dXG4iOwp9CgkJICAgICMgZ2V0IG9wdGlv bnMKbXkgJW9wdHM7CmdldG9wdHMoJ2Q6ZjpjaG1zOnI6bDpSJywgXCVvcHRzKSB8fCB1c2FnZSgp Owp1c2FnZSgpIGlmICggZGVmaW5lZCgkb3B0c3tofSkKCXx8ICghZGVmaW5lZCgkb3B0c3ttfSkg JiYgIWRlZmluZWQoJG9wdHN7c30pKSApOwoKIyBHZXQgdWlkLCB1c2VybmFtZSBhbmQgaG9tZSBk aXIKbXkgKCRuYW1lLCAkcGFzc3dkLCAkdWlkLCAkZ2lkLCAkcXVvdGEsICRjb21tZW50LCAkZ2Nv cywgJGhvbWVkaXIsICRzaGVsbCkgPSBnZXRwd3VpZCgkPCk7CgojIEdldCBhcmd1bWVudHMgYW5k IGRldGVybWluZSBzb3VyY2UKIyBhbmQgdGFyZ2V0IGRpcmVjdG9yaWVzLgpteSAkbWJyb290ID0g dW5kZWY7CSMgdGhpcyBpcyB0aGUgYmFzZSBkaXJlY3RvcnkgZm9yIHRoZSBtYm94ZXMKbXkgJG1i ZGlyID0gdW5kZWY7CSMgdGhpcyBpcyBhbiBtYm94IGRpciByZWxhdGl2ZSB0byB0aGUgJG1icm9v dApteSAkbWJmaWxlID0gdW5kZWY7CSMgdGhpcyBpcyBhbiBtYm94IGZpbGUKbXkgJGRlc3QgPSB1 bmRlZjsKbXkgJHN0cmlwX2V4dCA9IHVuZGVmOwpteSAkdXNlX2NsID0gdW5kZWY7CSMgZGVmaW5l cyB3aGV0aGVyIHdlIHVzZSB0aGUgQ29udGVudC1MZW5ndGg6IGhlYWRlciBpZiBwcmVzZW50Cgoj IGlmIG9wdGlvbiAiLWMiIGlzIGdpdmVuLCB3ZSB1c2UgdGhlIENvbnRlbnQtTGVuZ3RoOiBoZWFk ZXIgaWYgcHJlc2VudAojIGRhbmdlcm91cyEgbWF5IGJlIHVucmVsaWFibGUsIGFzIHRoZSB3aG9s ZSBDTCBzdHVmZiBpcyBhIGJhZCBpZGVhCmlmIChkZWZpbmVkKCRvcHRze2N9KSkKewoJJHVzZV9j bCA9IDE7Cn0gZWxzZSB7CgkkdXNlX2NsID0gMDsKfQoKIyBmaXJzdCwgaWYgdGhlIHVzZXIgaGFz IGdvbmUgdGhlIC1tIG9wdGlvbgojIHdlIHNpbXBseSBjb252ZXJ0IHRoZWlyIG1haWxmaWxlCmlm IChkZWZpbmVkKCRvcHRze219KSkKewoJaWYgKGRlZmluZWQoJEVOVnsnTUFJTCd9KSkgewoJCSRt YmZpbGUgPSAkRU5WeydNQUlMJ307Cgl9IGVsc2lmICggLWYgIi92YXIvc3Bvb2wvbWFpbC8kbmFt ZSIgKSB7CgkJJG1iZmlsZSA9ICIvdmFyL3Nwb29sL21haWwvJG5hbWUiCgl9IGVsc2lmICggLWYg Ii92YXIvbWFpbC8kbmFtZSIgKSB7CgkJJG1iZmlsZSA9ICIvdmFyL21haWwvJG5hbWUiCgl9IGVs c2UgewoJCWRpZSgiSSBzZWFyY2hlZCBcJE1BSUwsIC92YXIvc3Bvb2wvbWFpbC8kbmFtZSBhbmQg L3Zhci9tYWlsLyRuYW1lLCAiLgoJCQkiYnV0IEkgY291bGRuJ3QgZmluZCB5b3VyIG1haWwgc3Bv b2wgZmlsZSAtICIpOwoJfQp9CiMgc2VlIGlmIHRoZSB1c2VyIGhhcyBzcGVjaWZpZWQgYSBzb3Vy Y2UgZGlyZWN0b3J5CmVsc2lmIChkZWZpbmVkKCRvcHRze3N9KSkKewoJIyBpZiBvcHRze3N9IGRv ZXNuJ3Qgc3RhcnQgd2l0aCBhICIvIiB0aGVuCgkjIGl0IGlzIGEgc3ViZGlyIG9mIHRoZSB1c2Vy cyAkaG9tZQoJIyBpZiBpdCBkb2VzIHN0YXJ0IHdpdGggYSAiLyIgdGhlbgoJIyBsZXQncyB0YWtl ICRtYnJvb3QgYXMgYSBhYnNvbHV0IHBhdGgKCSRvcHRze3N9ID0gIiRob21lZGlyLyRvcHRze3N9 IiBpZiAoJG9wdHN7c30gIX4gL15cLy8pOyAKCgkjIGNoZWNrIGlmIHRoZSBnaXZlbiBzb3VyY2Ug aXMgYSBtYm94IGZpbGUKCWlmICgtZiAkb3B0c3tzfSkKCXsKCQkkbWJmaWxlID0gJG9wdHN7c307 Cgl9CgoJIyBvdGhlcndpc2UgY2hlY2sgaWYgaXQgaXMgYSBkaXJlY3RvcnkKCWVsc2lmICgtZCAk b3B0c3tzfSkKCXsKCQkkbWJyb290ID0gJG9wdHN7c307CgkJIyBnZXQgcmlkIG9mIHRyYWlsaW5n IC8ncwoJCSRtYnJvb3QgPX4gcy9cLyQvLzsKCgkJIyBjaGVjayBpZiB3ZSBoYXZlIGEgc3BlY2lm aWVkIHN1YiBkaXJlY3RvcnksCgkJIyBvdGhlcndpc2UgdGhlIHN1YiBkaXJlY3RvcnkgaXMgJy4n CgkJaWYgKGRlZmluZWQoJG9wdHN7Zn0pKQoJCXsKCQkJJG1iZGlyID0gJG9wdHN7Zn07CgkJCSMg Z2V0IHJpZCBvZiB0cmFpbGluZyAvJ3MKCQkJJG1iZGlyID1+IHMvXC8kLy87CgkJfQoJfQoKCSMg b3RoZXJ3aXNlIHdlIGhhdmUgYW4gZXJyb3IKCWVsc2UKCXsKCQlkaWUoIkZhdGFsOiBTb3VyY2Ug aXMgbm90IGFuIG1ib3ggZmlsZSBvciBhIGRpcmVjdG9yeSFcbiIpOwoJfQp9CgoKIyBnZXQgdGhl IGRlc3QKZGVmaW5lZCgkb3B0c3tkfSkgJiYgKCRkZXN0ID0gJG9wdHN7ZH0pIHx8ICgkZGVzdCA9 ICJNYWlsZGlyIik7CiMgc2VlIGlmIHdlIGhhdmUgYW55dGhpbmcgdG8gc3RyaXAKZGVmaW5lZCgk b3B0c3tyfSkgJiYgKCRzdHJpcF9leHQgPSAkb3B0c3tyfSk7CiMgTm8gJy1mJyB3aXRoICctUicK aWYoKGRlZmluZWQoJG9wdHN7Un0pKSYmKGRlZmluZWQoJG9wdHN7Zn0pKSkgeyBkaWUgIk5vIHJl Y3Vyc2lvbiB3aXRoIFwiLWZcIiI7fQojIEdldCBsaXN0IG9mIGZvbGRlcnMKbXkgQGZsaXN0Owpp ZihkZWZpbmVkKCRvcHRze2x9KSkKewogICAgb3BlbiAoTElTVCwkb3B0c3tsfSkgb3IgZGllICJD b3VsZCBub3Qgb3BlbiBtYWlsYm94IGxpc3QgJG9wdHN7bH06ICQhIjsKICAgIEBmbGlzdD08TElT VD47CiAgICBjbG9zZSBMSVNUOwp9CgojIGlmIHRoZSBkZXN0aW5hdGlvbiBpcyByZWxhdGl2ZSB0 byB0aGUgaG9tZSBkaXIsCiMgY2hlY2sgdGhhdCB0aGUgaG9tZSBkaXIgZXhpc3RzCmRpZSgiRmF0 YWw6IGhvbWUgZGlyICRob21lZGlyIGRvZXNuJ3QgZXhpc3QuXG4iKSBpZiAoJGRlc3QgIX4gL15c Ly8gJiYgICEgLWUgJGhvbWVkaXIpOwoKIwojIGZvcm0gdGhlIGRlc3RpbmF0aW9uIHZhbHVlCiMg c2xhcCB0aGUgaG9tZSBkaXIgb24gdGhlIGZyb250IG9mIHRoZSBkZXN0IGlmIHRoZSBkZXN0IGRv ZXMgbm90IGJlZ2luCiMgd2l0aCBhICcvJwokZGVzdCA9ICIkaG9tZWRpci8kZGVzdCIgaWYgKCRk ZXN0ICF+IC9eXC8vKTsKIyBnZXQgcmlkIG9mIHRyYWlsaW5nIC8ncwokZGVzdCA9fiBzL1wvJC8v OwoKCiMgQ291bnQgdGhlIG51bWJlciBvZiBtYWlsYm94ZXMsIG9yCiMgYXQgbGVhc3QgZmlsZXMs IHdlIGZvdW5kLgpteSAkbWFpbGJveGNvdW50ID0gMDsKCiMgU2luY2Ugd2UnbGwgYmUgbWFraW5n IHN1YiBkaXJlY3RvcmllcyBvZiB0aGUgbWFpbgojIE1haWxkaXIsIHdlIG5lZWQgdG8gbWFrZSBz dXJlIHRoYXQgdGhlIG1haW4gbWFpbGRpcgojIGV4aXN0cwombWFpbGRpcm1ha2UoJGRlc3QpOwoK IyBOb3cgd2UgZG8gZGlmZmVyZW50IHRoaW5ncyBkZXBlbmRpbmcgb24gd2hldGhlciB3ZSBjb252 ZXJ0IG9uZSBtYm94CiMgZmlsZSBvciBhIGRpcmVjdG9yeSBvZiBtYm94IGZpbGVzCmlmIChkZWZp bmVkKCRtYmZpbGUpKQp7CglpZiAoIWlzYW1haWxib3hmaWxlKCRtYmZpbGUpKQogICAgICAgIHsK ICAgICAgICAgICAgICBwcmludCAiU2tpcHBpbmcgJG1iZmlsZTogbm90IGEgbWJveCBmaWxlXG4i OwogICAgICAgIH0KCWVsc2UKCXsKCSAgICAgIHByaW50ICJDb252ZXJ0aW5nICRtYmZpbGUgdG8g bWFpbGRpcjogJGRlc3RcbiI7CgkgICAgICAjIHRoaXMgaXMgZWFzeSwgd2UganVzdCBydW4gdGhl IGNvbnZlcnQgZnVuY3Rpb24KCSAgICAgICZjb252ZXJ0KCRtYmZpbGUsICRkZXN0KTsKCX0KfQoj IGlmICctZicgd2FzIHVzZWQgLi4uCmVsc2lmIChkZWZpbmVkKCRtYmRpcikpCnsKCXByaW50ICJD b252ZXJ0aW5nIG1ib3hkaXIvbWJkaXI6ICRtYnJvb3QvJG1iZGlyIHRvIG1haWxkaXI6ICRkZXN0 L1xuIjsKCQoJIyBOb3cgc2V0IG91ciBzb3VyY2UgZGlyZWN0b3J5CglteSAkc291cmNlZGlyID0g IiRtYnJvb3QvJG1iZGlyIjsKCgkjIGNoZWNrIHRoYXQgdGhlIGRpcmVjdG9yeSB3ZSBhcmUgc3Vw cG9zZWQgdG8gYmUgZmluZGluZyBtYm94CgkjIGZpbGVzIGluLCBleGlzdHMgYW5kIGlzIGEgZGly ZWN0b3J5CgktZSAkc291cmNlZGlyIG9yIGRpZSgiRmF0YWw6IE1CRElSIGRpcmVjdG9yeSAkc291 cmNlZGlyLyBkb2VzIG5vdCBleGlzdC5cbiIpOwoJLWQgJHNvdXJjZWRpciBvciBkaWUoIkZhdGFs OiBNQkRJUiAkc291cmNlZGlyIGlzIG5vdCBhIGRpcmVjdG9yeS5cbiIpOwoKCQoJJmNvbnZlcnRp dCgkbWJkaXIsIiIpOwp9CiMgRWxzZSwgbGV0J3Mgd29yayBpbiAkbWJyb290CmVsc2UKewoJb3Bl bmRpcihTRElSLCAkbWJyb290KQoJCW9yIGRpZSgiRmF0YWw6IENhbm5vdCBvcGVuIHNvdXJjZSBk aXJlY3RvcnkgJG1icm9vdC8gXG4iKTsKCgoJd2hpbGUgKG15ICRzb3VyY2VmaWxlID0gcmVhZGRp cihTRElSKSkKCXsKCQlpZiAoLWQgIiRtYnJvb3QvJHNvdXJjZWZpbGUiKSB7CgkJCSMgUmVjdXJz ZSBvbmx5IGlmIHJlcXVlc3RlZCAodG8gYmUgY2hhbmdlZCA/KQoJCQlpZiAoZGVmaW5lZCgkb3B0 c3tSfSkpIHsKCQkJCXByaW50ICJjb252ZXJ0aXQoJHNvdXJjZWZpbGUsXCJcIilcbiI7CgkJCQkm Y29udmVydGl0KCRzb3VyY2VmaWxlLCIiKTsKCQkJfSBlbHNlIHsKCQkJcHJpbnQoIiRzb3VyY2Vm aWxlIGlzIGEgZGlyZWN0b3J5LCBidXQgJy1SJyB3YXMgbm90IHVzZWQuLi4gc2tpcHBpbmdcbiIp OwoJCQl9CgkJfQogICAgCQllbHNpZiAoIS1mICIkbWJyb290LyRzb3VyY2VmaWxlIikKCQl7CgkJ CXByaW50ICJTa2lwcGluZyAkbWJyb290LyRzb3VyY2VmaWxlIDogbm90IGEgZmlsZSBub3IgYSBk aXJcbiI7CgkJCW5leHQ7CgkJfQoJCWVsc2lmICghaXNhbWFpbGJveGZpbGUoIiRtYnJvb3QvJHNv dXJjZWZpbGUiKSkKCQl7CgkJCXByaW50ICJTa2lwcGluZyAkbWJyb290LyRzb3VyY2VmaWxlIDog bm90IGEgbWJveCBmaWxlXG4iOwoJCQluZXh0OwoJCX0KCQllbHNlIAoJCXsKCQkJJmNvbnZlcnRp dCgkc291cmNlZmlsZSwiIik7CgkJfQoJfSAjIGVuZCBvZiAid2hpbGUgKCRzZmlsZSA9IHJlYWRk aXIoU0RJUikpIiBsb29wLgoJY2xvc2VkaXIoU0RJUik7CglwcmludGYoIiRtYWlsYm94Y291bnQg ZmlsZXMgcHJvY2Vzc2VkLlxuIik7Cn0KIwoKZXhpdCAwOwoKIyBNeSBkZWJidWdnaW5nIHBsYWNl aG9sZGVyIEkgY2FuIHB1dCBzb21ld2hlcmUgdG8gc2hvdyBob3cgZmFyIHRoZSBzY3JpcHQgcmFu LgojIGRpZSgiU28gZmFyIHNvIGdvb2QuXG5cbiIpOwoKIyBUaGUgaXNhbWFpbGJveGZpbGUgZnVu Y3Rpb24KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgCiMgSGVyZSB3ZSBjaGVjayBpZiB0aGUg ZmlsZSBpcyBhIG1haWxib3ggZmlsZSwgbm90IGFuIGFkZHJlc3MtYm9vayBvciAKIyBzb21ldGhp bmcgZWxzZS4KIyBJZiBmaWxlIGlzIGVtcHR5LCB3ZSBzYXkgaXQgaXMgYSBtYm94LCB0byBjcmVh dGUgaXQgZW1wdHkuCiMKIyBSZXR1cm5zIDEgaWYgZmlsZSBpcyBzYWlkIG1ib3gsIDAgZWxzZS4K c3ViIGlzYW1haWxib3hmaWxlIHsKCW15ICgkbWJ4ZmlsZSkgPSBAXzsKCXJldHVybiAxIGlmKC16 ICRtYnhmaWxlKTsKCXN5c29wZW4oTUJYRklMRSwgIiRtYnhmaWxlIiwgT19SRE9OTFkpIG9yIGRp ZSAiQ291bGQgbm90IG9wZW4gJG1ieGZpbGUgISBcbiI7Cgl3aGlsZSg8TUJYRklMRT4pIHsKCQlp ZiAoL15Gcm9tLykgewoJCQljbG9zZShNQlhGSUxFKTsKCQkJcmV0dXJuIDE7CgkJfQoJCWVsc2Ug ewoJCQljbG9zZShNQlhGSUxFKTsKCQkJcmV0dXJuIDA7CgkJfQoJfQp9CgojIFRoZSBjb252ZXJ0 aXQgZnVuY3Rpb24KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBmdW5jdGlvbiBj cmVhdGVzIGFsbCBzdWJkaXJzIGluIG1haWxkaXIsIGFuZCBjYWxscyBjb252ZXJ0KCkgCiMgZm9y IGVhY2ggbWJveCBmaWxlLgojIFllcywgaXQgYmVjb21lcyB0aGUgJ21haW4gbG9vcCcgOikKc3Vi IGNvbnZlcnRpdAp7CgkjIEdldCBzdWJkaXIgYXMgYXJndW1lbnQKCW15ICgkZGlyLCRvbGRwYXRo KSA9IEBfOwoJCgkkb2xkcGF0aCA9fiBzL1wvXC8vLzsKCgkjIFNraXAgZmlsZXMgYmVnaW5uaW5n IHdpdGggJy4nIHNpbmNlIHRoZXkgYXJlCgkjIG5vdCBub3JtYWxseSBtYm94IGZpbGVzIG5vciBk aXJzIChpbmNsdWRlcyAnLicgYW5kICcuLicpCglpZiAoJGRpciA9fiAvXlwuLykKCXsKCQlwcmlu dCAiU2tpcHBpbmcgJGRpciA6IG5hbWUgYmVnaW5zIHdpdGggYSAnLidcbiI7CgkJcmV0dXJuOwoJ fQoJbXkgJGRlc3RpbmF0aW9uZGlyID0gJGRpcjsKCW15ICR0ZW1wcGF0aCA9ICRvbGRwYXRoOwoK CSMgV2UgZG9uJ3Qgd2FudCB0byBoYXZlIC4ncyBpbiB0aGUgJHRhcmdldGZpbGUgZmlsZQoJIyBu YW1lIGJlY2F1c2UgdGhleSB3aWxsIGJlY29tZSBkaXJlY3RvcmllcyBpbiB0aGUKCSMgTWFpbGRp ci4gVGhlcmVmb3JlIHdlIGNvbnZlcnQgdGhlbSB0byBfJ3MKCSR0ZW1wcGF0aCA9fiBzL1wuL1xf L2c7CgkkZGVzdGluYXRpb25kaXIgPX4gcy9cLi9cXy9nOwoJCgkjIEFwcGVuZGluZyAkb2xkcGF0 aCA9PiBwYXRoIGlzIG9ubHkgbWlzc2luZyAkZGVzdAoJJGRlc3RpbmF0aW9uZGlyID0gIiR0ZW1w cGF0aC4kZGVzdGluYXRpb25kaXIiOwoKCSMgQ29udmVydGluZyAnLycgdG8gJy4nIGluICRkZXN0 aW5hdGlvbmRpcgoJJGRlc3RpbmF0aW9uZGlyID1+cy9cLysvXC4vZzsKCQoJIyBzb3VyY2UgZGly CglteSAkc3JjZGlyPSIkbWJyb290LyRvbGRwYXRoLyRkaXIiOwoKCXByaW50ZigiY29udmVydGl0 KCk6IENvbnZlcnRpbmcgJGRpciBpbiAkbWJyb290LyRvbGRwYXRoIHRvICRkZXN0LyRkZXN0aW5h dGlvbmRpclxuIik7CgkmbWFpbGRpcm1ha2UoIiRkZXN0LyRkZXN0aW5hdGlvbmRpciIpOwoJcHJp bnQoImRlc3RpbmF0aW9uID0gJGRlc3RpbmF0aW9uZGlyXG4iKTsKCWlmICgtZCAkc3JjZGlyKSB7 CgkJb3BlbmRpcihTVUJESVIsICIkc3JjZGlyIikgb3IgZGllICJjYW4ndCBvcGVuICRzcmNkaXIg IVxuIjsKCQlteSBAc3ViZGlybGlzdD1yZWFkZGlyKFNVQkRJUik7CgkJY2xvc2VkaXIoU1VCRElS KTsKCQlmb3JlYWNoIChAc3ViZGlybGlzdCkgewoJCQluZXh0IGlmICgvXlwuKyQvKTsKCQkJcHJp bnQoIlN1YjogJF9cbiIpOwoJCQlwcmludCgiY29udmVydGl0KCRfLFwiJG9sZHBhdGgvJGRpclwi KVxuIik7CgkJCSZjb252ZXJ0aXQoJF8sIiRvbGRwYXRoLyRkaXIiKTsKCQl9IAoJfSBlbHNlIHsK CQkjIFNvdXJjZSBmaWxlIHZlcmlmcyAuLi4uCgkJIwoJCXJldHVybiBpZihkZWZpbmVkKCRvcHRz e2x9KSAmJiAhaW5saXN0KCIkb2xkcGF0aC8kZGlyIixAZmxpc3QpKTsKCgkJaWYgKCFpc2FtYWls Ym94ZmlsZSgiJG1icm9vdC8kb2xkcGF0aC8kZGlyIikpCgkJewoJCQlwcmludCAiU2tpcHBpbmcg JGRpciAoaXMgbm90IG1ib3gpXG4iOwoJCQluZXh0OwoJCX0KCgkJIyB0YXJnZXQgZmlsZSB2ZXJp ZnMuLi4KCQkjCgkJIyBpZiAkc3RyaXBfZXh0ZW5zaW9uIGlzIGRlZmluZWQsCgkJIyBzdHJpcCBp dCBvZmYgdGhlICR0YXJnZXRmaWxlCgkgICAgCWRlZmluZWQoJHN0cmlwX2V4dCkgJiYgKCRkZXN0 aW5hdGlvbmRpciA9fiBzL1wuJHN0cmlwX2V4dCQvLyk7CgkJJmNvbnZlcnQoIiRtYnJvb3QvJG9s ZHBhdGgvJGRpciIsIiRkZXN0LyRkZXN0aW5hdGlvbmRpciIpOwoJCSRtYWlsYm94Y291bnQrKzsK CX0KfQojIFRoZSBtYWlsZGlybWFrZSBmdW5jdGlvbgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQojCiMgSXQgZG9lcyB0aGUgc2FtZSB0aGluZyB0aGF0IHRoZSBtYWlsZGlybWFrZSBiaW5hcnkg dGhhdCAKIyBjb21lcyB3aXRoIGNvdXJpZXItaW1hcCBkaXN0cmlidXRpb24KIwpzdWIgbWFpbGRp cm1ha2UKewoJZm9yZWFjaChAXykgewoJCS1kICRfIG9yIG1rZGlyICRfLDA3MDAgb3IgZGllKCJG YXRhbDogRGlyZWN0b3J5ICRfIGRvZXNuJ3QgZXhpc3QgYW5kIGNhbid0IGJlIGNyZWF0ZWQuXG4i KTsKCQoJCS1kICIkXy90bXAiIG9yIG1rZGlyKCIkXy90bXAiLDA3MDApIG9yIGRpZSgiRmF0YWw6 IFVuYWJsZSB0byBtYWtlICRfL3RtcC8gc3ViZGlyZWN0b3J5LlxuIik7CgkJLWQgIiRfL25ldyIg b3IgbWtkaXIoIiRfL25ldyIsMDcwMCkgb3IgZGllKCJGYXRhbDogVW5hYmxlIHRvIG1ha2UgJF8v bmV3LyBzdWJkaXJlY3RvcnkuXG4iKTsKCQktZCAiJF8vY3VyIiBvciBta2RpcigiJF8vY3VyIiww NzAwKSBvciBkaWUoIkZhdGFsOiBVbmFibGUgdG8gbWFrZSAkXy9jdXIvIHN1YmRpcmVjdG9yeS5c biIpOwoJfQp9CgojIFRoZSBpbmxpc3QgZnVuY3Rpb24KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KIwojIEl0IGNoZWNrcyB0aGF0IHRoZSBmb2xkZXIgdG8gYmUgY29udmVydGVkIGlzIGluIHRo ZSBsaXN0IG9mIHN1YnNjcmliZWQKIyBmb2xkZXJzIGluIFdVLUlNQVAKIwpzdWIgaW5saXN0CnsK CW15ICgkZmlsZSxAZmxpc3QpID0gQF87CglteSAkdmFsaWQgPSAwOwoJIyBHZXQgcmlkIG9mIHRo ZSBmaXJzdCAvIGlmIGFueQoJJGZpbGUgPX4gcy9eXC8vLzsKCWZvcmVhY2ggbXkgJGZvbGRlciAo QGZsaXN0KSB7CgkJY2hvbXAgJGZvbGRlcjsKCQlpZiAoJGZpbGUgZXEgJGZvbGRlcikgewoJCQkk dmFsaWQgPSAxOwoJCQlsYXN0OwoJCX0KCX0KCWlmICghJHZhbGlkKSB7CgkJcHJpbnQgIiRmaWxl IGlzIG5vdCBpbiBsaXN0XG4iOwoJfQoJZWxzZSB7CgkJcHJpbnQgIiRmaWxlIGlzIGluIGxpc3Rc biI7Cgl9CgoJcmV0dXJuICR2YWxpZDsKfQoJCiMgCgojIFRoZSBjb252ZXJ0IGZ1bmN0aW9uCiMg LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIGZ1bmN0aW9uIGRvZXMgdGhlIGRvd24gYW5k IGRpcnR5IHdvcmsgb2YKIyBhY3R1YWxseSBjb252ZXJ0aW5nIHRoZSBtYm94IHRvIGEgbWFpbGRp cgojCnN1YiBjb252ZXJ0CnsKCSMgZ2V0IHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGFzIGFy Z3VtZW50cwoJbXkgKCRtYm94LCAkbWFpbGRpcikgPSBAXzsKCglwcmludGYoIlNvdXJjZSBNYm94 IGlzICRtYm94XG4iKTsKICAgICAgICBwcmludGYoIlRhcmdldCBNYWlsZGlyIGlzICRtYWlsZGly IFxuIikgOwoKCSMgY3JlYXRlIHRoZSBkaXJlY3RvcmllcyBmb3IgdGhlIG5ldyBtYWlsZGlyCgkj CgkjIGlmIGl0IGlzIHRoZSByb290IG1haWxkaXIgKGllLiBjb252ZXJ0aW5nIHRoZSBpbmJveCkK CSMgdGhlc2UgYWxyZWFkeSBleGlzdCBidXQgdGhhdHMgbm90IGEgYmlnIGlzc3VlCgoJJm1haWxk aXJtYWtlKCRtYWlsZGlyKTsKCiAgICAgICAgIyBDaGFuZ2UgdG8gdGhlIHRhcmdldCBtYWlsYm94 IGRpcmVjdG9yeS4KCiAgICAgICAgY2hkaXIgIiRtYWlsZGlyIiA7CgogICAgICAgICAJICAgICMg Q29udmVydHMgYSBNYm94IHRvIG11bHRpcGxlIGZpbGVzCiAgICAgICAgICAgICAgICAgICAgIyBp biBhIE1haWxkaXIuCiAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGlzIGFkYXB0ZWQgZnJvbSBt Ym94Mm1haWxkaXIuCiAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMg T3BlbiB0aGUgTWJveCBtYWlsYm94IGZpbGUuCgoKICAgICAgICBpZiAoc3lzb3BlbihNQk9YLCAi JG1ib3giLCBPX1JET05MWSkpCiAgICAgICAgewogICAgICAgICAgICAjcHJpbnRmKCJDb252ZXJ0 aW5nIE1ib3ggICAkbWJveCAuIC4gLiAgXG4iKTsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAg ICAgIHsKICAgICAgICAgICAgZGllKCJGYXRhbDogdW5hYmxlIHRvIG9wZW4gaW5wdXQgbWFpbGJv eCBmaWxlOiAkbWJveCAhIFxuIik7CiAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIFRo aXMgbG9vcCBzY2FucyB0aGUgaW5wdXQgbWFpbGJveCBmb3IKICAgICAgICAgICAgICAgICAgICAj IGEgbGluZSBzdGFydGluZyB3aXRoICJGcm9tICIuICBUaGUKICAgICAgICAgICAgICAgICAgICAj ICJeIiBiZWZvcmUgaXQgaXMgcGF0dGVybi1tYXRjaGluZwogICAgICAgICAgICAgICAgICAgICMg bGluZ28gZm9yIGl0IGJlaW5nIGF0IHRoZSBzdGFydCBvZiBhCiAgICAgICAgICAgICAgICAgICAg IyBsaW5lLgogICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAjIEVhY2gg ZW1haWwgaW4gTWJveCBtYWlsYm94IHN0YXJ0cwogICAgICAgICAgICAgICAgICAgICMgd2l0aCBz dWNoIGEgbGluZSwgd2hpY2ggaXMgd2h5IGFueQogICAgICAgICAgICAgICAgICAgICMgc3VjaCBs aW5lIGluIHRoZSBib2R5IG9mIHRoZSBlbWFpbAogICAgICAgICAgICAgICAgICAgICMgaGFzIHRv IGhhdmUgYSAiPiIgcHV0IGluIGZyb250IG9mIGl0LgogICAgICAgICAgICAgICAgICAgICMKICAg ICAgICAgICAgICAgICAgICAjIFRoaXMgaXMgbm90IHJlcXVpcmVkIGluIGEgTWFpbGRpcgogICAg ICAgICAgICAgICAgICAgICMgbWFpbGJveCwgYW5kIHNvbWUgbWFqaWsgYmVsb3cKICAgICAgICAg ICAgICAgICAgICAjIGZpbmRzIGFueSBzdWNoIHF1b3RlZCAiPiBGcm9tInMgYW5kCiAgICAgICAg ICAgICAgICAgICAgIyBnZXRzIHJpZCBvZiB0aGUgIj4gIiBxdW90ZS4KICAgICAgICAgICAgICAg ICAgICAjCiAgICAgICAgICAgICAgICAgICAgIyBFYWNoIGVtYWlsIGlzIHB1dCBpbiBhIGZpbGUK ICAgICAgICAgICAgICAgICAgICAjIGluIHRoZSBjdXIvIHN1YmRpcmVjdG9yeSB3aXRoIGEKICAg ICAgICAgICAgICAgICAgICAjIG5hbWUgb2YgdGhlIGZvcm06CiAgICAgICAgICAgICAgICAgICAg IwogICAgICAgICAgICAgICAgICAgICMgICAgbm5ubm5ubm5uLmNjY2MubWJveDoyLFhYWFgKICAg ICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgIyB3aGVyZToKICAgICAgICAg ICAgICAgICAgICAjICAgICJubm5ubm5ubm4iIGlzIHRoZSBVbml4IHRpbWUgc2luY2UKICAgICAg ICAgICAgICAgICAgICAjICAgICAgIDE5NzAgd2hlbiB0aGlzIHNjcmlwdCBzdGFydGVkCiAgICAg ICAgICAgICAgICAgICAgIyAgICAgICBydW5uaW5nLCBpbmNyZW1lbnRlZCBieSAxIGZvcgogICAg ICAgICAgICAgICAgICAgICMgICAgICAgZXZlcnkgZW1haWwuICBUaGlzIGlzIHRvIGVuc3VyZQog ICAgICAgICAgICAgICAgICAgICMgICAgICAgdW5pcXVlIG5hbWVzIGZvciBlYWNoIG1lc3NhZ2UK ICAgICAgICAgICAgICAgICAgICAjICAgICAgIGZpbGUuCiAgICAgICAgICAgICAgICAgICAgIwog ICAgICAgICAgICAgICAgICAgICMgICAgIi5jY2NjIiBpcyB0aGUgbWVzc2FnZSBjb3VudCBvZgog ICAgICAgICAgICAgICAgICAgICMgICAgICAgbWVzc2FnZXMgZnJvbSB0aGlzIG1ib3guCiAgICAg ICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgICAgIi5tYm94IiBpcyBqdXN0 IHRvIGluZGljYXRlIHRoYXQKICAgICAgICAgICAgICAgICAgICAjICAgICAgIHRoaXMgbWVzc2Fn ZSB3YXMgY29udmVydGVkIGZyb20KICAgICAgICAgICAgICAgICAgICAjICAgICAgIGFuIE1ib3gg bWFpbGJveC4KICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgIyAgICAi OjIsIiBpcyB0aGUgc3RhcnQgb2YgcG90ZW50aWFsbHkKICAgICAgICAgICAgICAgICAgICAjICAg ICAgIG11bHRpcGxlIElNQVAgZmxhZyBjaGFyYWN0ZXJzCiAgICAgICAgICAgICAgICAgICAgIyAg ICAgICAiWFhYWCIsIGJ1dCBtYXkgYmUgZm9sbG93ZWQgYnkKICAgICAgICAgICAgICAgICAgICAj ICAgICAgIG5vdGhpbmcuCiAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAg ICMgVGhpcyBpcyBzb3J0LW9mICBjb21wbGlhbnQgd2l0aAogICAgICAgICAgICAgICAgICAgICMg dGhlIE1haWxkaXIgbmFtaW5nIGNvbnZlbnRpb25zCiAgICAgICAgICAgICAgICAgICAgIyBzcGVj aWZpZWQgYXQ6CiAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgaHR0 cDovL3d3dy5xbWFpbC5vcmcvbWFuL21hbjUvbWFpbGRpci5odG1sCiAgICAgICAgICAgICAgICAg ICAgIwogICAgICAgICAgICAgICAgICAgICMgVGhpcyBhcHByb2FjaCBkb2VzIG5vdCBpbnZvbHZl IHRoZQogICAgICAgICAgICAgICAgICAgICMgcHJvY2VzcyBJRCBvciB0aGUgaG9zdG5hbWUsIGJ1 dCBpdCBpcwogICAgICAgICAgICAgICAgICAgICMgcHJvYmFibHkgZ29vZCBlbm91Z2guCiAgICAg ICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgV2hlbiB0aGUgSU1BUCBzZXJ2 ZXIgbG9va3MgYXQgdGhpcwogICAgICAgICAgICAgICAgICAgICMgbWFpbGJveCwgaXQgd2lsbCBt b3ZlIHRoZSBmaWxlcyB0bwogICAgICAgICAgICAgICAgICAgICMgdGhlIGN1ci8gZGlyZWN0b3J5 IGFuZCBjaGFuZ2UgdGhlaXIKICAgICAgICAgICAgICAgICAgICAjIG5hbWVzIGFzIGl0IHBsZWFz ZXMuICBJbiB0aGUgY2FzZQogICAgICAgICAgICAgICAgICAgICMgb2YgQ291cmllciBJTUFQLCB0 aGUgbmFtZXMgd2lsbAogICAgICAgICAgICAgICAgICAgICMgYmVjb21lIGxpa2U6CiAgICAgICAg ICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgICA5OTUwOTY1NDEuMjUzNTEubWJv eDoyLFMKICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgIyB3aXRoIDI1 MzUxIGJlaW5nIENvdXJpZXIgSU1BUCdzCiAgICAgICAgICAgICAgICAgICAgIyBwcm9jZXNzIElE LiAgVGhlIDoyLCBpcyB0aGUgc3RhcnQKICAgICAgICAgICAgICAgICAgICAjIG9mIHRoZSBmbGFn cywgYW5kIHRoZSAiUyIgbWVhbnMKICAgICAgICAgICAgICAgICAgICAjIHRoYXQgdGhpcyBvbmUg aGFzIGJlZW4gc2VlbiBieQogICAgICAgICAgICAgICAgICAgICMgdGhlIHVzZXIuICAoQnV0IGlz IHRoaXMgdGhlIHNhbWUKICAgICAgICAgICAgICAgICAgICAjIG1lYW5pbmcgYXMgdGhlIHVzZXIg YWN0dWFsbHkKICAgICAgICAgICAgICAgICAgICAjIGhhdmluZyBvcGVuZWQgdGhlIG1lc3NhZ2Ug dG8gc2VlCiAgICAgICAgICAgICAgICAgICAgIyBpdHMgY29udGVudHMsIHJhdGhlciB0aGFuIGp1 c3QgdGhlCiAgICAgICAgICAgICAgICAgICAgIyBJTUFQIHNlcnZlciBoYXZpbmcgYmVlbiBhc2tl ZCB0bwogICAgICAgICAgICAgICAgICAgICMgbGlzdCB0aGUgbWVzc2FnZSdzIFN1YmplY3QgZXRj LgogICAgICAgICAgICAgICAgICAgICMgc28gdGhlIGNsaWVudCBjb3VsZCBsaXN0IGl0IGluIHRo ZQogICAgICAgICAgICAgICAgICAgICMgdmlzaWJsZSBJbmJveD8pCiAgICAgICAgICAgICAgICAg ICAgIwogICAgICAgICAgICAgICAgICAgICMgVGhpcyBjb250cmFzdHMgd2l0aCBhIG1lc3NhZ2UK ICAgICAgICAgICAgICAgICAgICAjIGNyZWF0ZWQgYnkgQ291cmllciBJTUFQLCBzYXkgd2l0aAog ICAgICAgICAgICAgICAgICAgICMgYSBtZXNzYWdlIGNvcHksIHdoaWNoIGlzIGxpa2U6CiAgICAg ICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgICA5OTUwOTY1NDEuMjUzNTEu emFpcixTPTE0Mjg1OjIsUwogICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAg ICAjIHdoZXJlICIsUz0xNDI4NSIgaXMgdGhlIHNpemUgb2YgdGhlCiAgICAgICAgICAgICAgICAg ICAgIyBtZXNzYWdlIGluIGJ5dGVzLgogICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAg ICAgICAgICAjIENvdXJpZXIgTWFpbGRyb3AncyBuYW1lcyBhcmUgc2ltaWxhcgogICAgICAgICAg ICAgICAgICAgICMgYnV0IGxhY2sgdGhlICI6MixYWFhYIiBmbGFncyAuIC4gLgogICAgICAgICAg ICAgICAgICAgICMgZXhjZXB0IGZvciBteSBtb2RpZmllZCBNYWlsZHJvcAogICAgICAgICAgICAg ICAgICAgICMgd2hpY2ggY2FuIGRlbGl2ZXIgdGhlbSB3aXRoIGEKICAgICAgICAgICAgICAgICAg ICAjICI6MixUIiAtIGZsYWdnZWQgZm9yIGRlbGV0aW9uLgogICAgICAgICAgICAgICAgICAgICMK ICAgICAgICAgICAgICAgICAgICAjIEkgaGF2ZSBleHRlbmRlZCB0aGUgbG9naWMgb2YgdGhlCiAg ICAgICAgICAgICAgICAgICAgIyBwZXItbWVzc2FnZSBpbm5lciBsb29wIHRvIHN0b3AKICAgICAg ICAgICAgICAgICAgICAjIHNhdmluZyBhIGZpbGUgZm9yIGEgbWVzc2FnZSB3aXRoOgogICAgICAg ICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAjIFN1YmplY3Q6IERPTidUIERFTEVU RSBUSElTIE1FU1NBR0UgLS0gRk9MREVSIElOVEVSTkFMIERBVEEKICAgICAgICAgICAgICAgICAg ICAjCiAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGlzIHRoZSBkdW1teSBtZXNzYWdlLCBhbHdh eXMKICAgICAgICAgICAgICAgICAgICAjIGF0IHRoZSBzdGFydCBvZiBhbiBNYm94IGZvcm1hdAog ICAgICAgICAgICAgICAgICAgICMgbWFpbGJveCBmaWxlIC0gYW5kIGlzIHB1dCB0aGVyZQogICAg ICAgICAgICAgICAgICAgICMgYnkgVVcgSU1BUEQuICBTaW5jZSBxdWl0ZSBhIGZldwogICAgICAg ICAgICAgICAgICAgICMgcGVvcGxlIHdpbGwgdXNlIHRoaXMgZm9yCiAgICAgICAgICAgICAgICAg ICAgIyBjb252ZXJ0aW5nIGZyb20gYSBVVyBzeXN0ZW0sCiAgICAgICAgICAgICAgICAgICAgIyBJ IGZpZ3VyZSBpdCBpcyB3b3J0aCBpdC4KICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAg ICAgICAgICAgIyBJIHdpbGwgbm90IHNhdmUgYW55IHN1Y2ggbWVzc2FnZQogICAgICAgICAgICAg ICAgICAgICMgZmlsZSBmb3IgdGhlIGR1bW15IG1lc3NhZ2UuCiAgICAgICAgICAgICAgICAgICAg IwogICAgICAgICAgICAgICAgICAgICMgUGxhbgogICAgICAgICAgICAgICAgICAgICMgLS0tLQog ICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAjIFdlIHdhbnQgdG8gcmVh ZCB0aGUgZW50aXJlIE1ib3ggZmlsZSwgd2hpbHN0CiAgICAgICAgICAgICAgICAgICAgIyBnb2lu ZyB0aHJvdWdoIGEgbG9vcCBmb3IgZWFjaCBtZXNzYWdlIHdlIGZpbmQuCiAgICAgICAgICAgICAg ICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgV2Ugd2FudCB0byByZWFkIGFsbCB0aGUgaGVh ZGVycyBvZiB0aGUgbWVzc2FnZSwKICAgICAgICAgICAgICAgICAgICAjIHN0YXJ0aW5nIHdpdGgg dGhlICJGcm9tICIgbGluZS4gICBGb3IgdGhhdCAiRnJvbSAiCiAgICAgICAgICAgICAgICAgICAg IyBsaW5lIHdlIHdhbnQgdG8gZ2V0IGEgZGF0ZS4KICAgICAgICAgICAgICAgICAgICAjCiAgICAg ICAgICAgICAgICAgICAgIyBGb3IgYWxsIG90aGVyIGhlYWRlciBsaW5lcywgd2Ugd2FudCB0byBz dG9yZSB0aGVtCiAgICAgICAgICAgICAgICAgICAgIyBpbiAkaGVhZGVycyB3aGlsc3QgcGFyc2lu ZyB0aGVtIHRvIGZpbmQ6CiAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAg ICMgICAxIC0gQW55IGZsYWdzIGluIHRoZSAiU3RhdHVzOiAiIG9yICJYLVN0YXR1czogIiBvcgog ICAgICAgICAgICAgICAgICAgICMgICAgICAgIlgtTW96aWxsYS1TdGF0dXM6ICIgbGluZXMuCiAg ICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgICAyIC0gQSBzdWJqZWN0 IGxpbmUgaW5kaWNhdGluZyB0aGlzIGlzIHRoZSBkdW1teSBtZXNzYWdlCiAgICAgICAgICAgICAg ICAgICAgIyAgICAgICBhdCB0aGUgc3RhcnQgKHR5cGljYWxseSwgYnV0IG5vdCBuZWNlc3Nhcmls eSkgb2YKICAgICAgICAgICAgICAgICAgICAjICAgICAgIHRoZSBNYm94LgogICAgICAgICAgICAg ICAgICAgICMKICAgICAgICAgICAgICAgICAgICAjIE9uY2Ugd2UgcmVhY2ggdGhlIGVuZCBvZiB0 aGUgaGVhZGVycywgd2Ugd2lsbCBjcnVuY2ggYW55CiAgICAgICAgICAgICAgICAgICAgIyBmbGFn cyB3ZSBmb3VuZCB0byBjcmVhdGUgYSBmaWxlIG5hbWUuICBUaGVuLCB1bmxlc3MgdGhpcyBpcwog ICAgICAgICAgICAgICAgICAgICMgdGhlIGR1bW15IG1lc3NhZ2Ugd2UgY3JlYXRlIHRoYXQgZmls ZSBhbmQgd3JpdGUgYWxsIHRoZQogICAgICAgICAgICAgICAgICAgICMgaGVhZGVycyB0byBpdC4K ICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgIyBUaGVuIHdlIGNvbnRp bnVlIHJlYWRpbmcgdGhlIE1ib3gsIGNvbnZlcnRpbmcgIj5Gcm9tICIgdG8KICAgICAgICAgICAg ICAgICAgICAjICJGcm9tICIgYW5kIHdyaXRpbmcgaXQgdG8gdGhlIGZpbGUsIHVudGlsIHdlIHJl YWNoIG9uZSBvZjoKICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgIyAg IDEgLSBBbm90aGVyICJGcm9tICIgbGluZSAoaW5kaWNhdGluZyB0aGUgc3RhcnQgb2YgYW5vdGhl cgogICAgICAgICAgICAgICAgICAgICMgICAgICAgbWVzc2FnZSkuCiAgICAgICAgICAgICAgICAg ICAgIwogICAgICAgICAgICAgICAgICAgICMgb3IKICAgICAgICAgICAgICAgICAgICAjCiAgICAg ICAgICAgICAgICAgICAgIyAgIDIgLSBUaGUgZW5kIG9mIHRoZSBNYm94LgogICAgICAgICAgICAg ICAgICAgICMKICAgICAgICAgICAgICAgICAgICAjIEluIHRoZSBmb3JtZXIgY2FzZSwgd2hpY2gg d2UgZGV0ZWN0IGF0IHRoZSBzdGFydCBvZiB0aGUgbG9vcAogICAgICAgICAgICAgICAgICAgICMg d2UgbmVlZCB0byBjbG9zZSB0aGUgZmlsZSBhbmQgdG91Y2ggaXQgdG8gYWx0ZXIgaXRzIGRhdGUt dGltZS4KICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgIyBJbiB0aGUg bGF0ZXIgY2FzZSwgd2UgYWxzbyBuZWVkIHRvIGNsb3NlIHRoZSBmaWxlIGFuZCB0b3VjaAogICAg ICAgICAgICAgICAgICAgICMgaXQgdG8gYWx0ZXIgaXRzIGRhdGUtdGltZSAtIGJ1dCB0aGlzIGlz IGJleW9uZCB0aGUgZW5kIG9mIHRoZQogICAgICAgICAgICAgICAgICAgICMgbG9vcC4KCgogICAg ICAgICAgICAgICAgICAgICMgVmFyaWFibGVzCiAgICAgICAgICAgICAgICAgICAgIyAtLS0tLS0t LS0KCiAgICAgICAgbXkgJG1lc3NhZ2Vjb3VudCA9IDA7CgogICAgICAgICAgICAgICAgICAgICMg Rm9yIGdlbmVyYXRpbmcgdW5pcXVlIGZpbGVuYW1lcyBmb3IKICAgICAgICAgICAgICAgICAgICAj IGVhY2ggbWVzc2FnZS4gIEluaXRpYWxpc2UgaXQgaGVyZSB3aXRoCiAgICAgICAgICAgICAgICAg ICAgIyBudW1lcmljIHRpbWUgaW4gc2Vjb25kcyBzaW5jZSAxOTcwLgogICAgICAgIG15ICR1bmlx dWUgPSB0aW1lOwoKICAgICAgICAgICAgICAgICAgICAjIE5hbWUgb2YgbWVzc2FnZSBmaWxlIHRv IGRlbGV0ZSBpZiB3ZSBmb3VuZCB0aGF0CiAgICAgICAgICAgICAgICAgICAgIyBpdCB3YXMgY3Jl YXRlZCBieSByZWFkaW5nIHRoZSBNYm94IGR1bW15IG1lc3NhZ2UuCgogICAgICAgIG15ICRkZWxl dGVkdW1teSA9ICcnOwoKICAgICAgICAgICAgICAgICAgICAjIFRvIHN0b3JlIHRoZSBjb21wbGV0 ZSAiRnJvbSAoYWRkcmVzcykgKGRhdGUtdGltZSkKICAgICAgICAgICAgICAgICAgICAjIHdoaWNo IGRlbGluZWF0ZXMgdGhlIHN0YXJ0IG9mIGVhY2ggbWVzc2FnZQogICAgICAgICAgICAgICAgICAg ICMgaW4gdGhlIE1ib3gKICAgICAgICBteSAkZnJvbWxpbmUgPSAnJzsKCgogICAgICAgICAgICAg ICAgICAgICMgU2V0IHRvIDEgd2hlbiB3ZSBhcmUgcmVhZGluZyB0aGUgaGVhZGVyIGxpbmVzLAog ICAgICAgICAgICAgICAgICAgICMgaW5jbHVkaW5nIHRoZSAiRnJvbSAiIGxpbmUuCiAgICAgICAg ICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgMCBtZWFucyB3ZSBhcmUgcmVhZGlu ZyB0aGUgbWVzc2FnZSBib2R5IGFuZCBsb29raW5nCiAgICAgICAgICAgICAgICAgICAgIyBmb3Ig YW5vdGhlciAiRnJvbSAiIGxpbmUuCgogICAgICAgIG15ICRpbmhlYWRlcnMgPSAwOwoKICAgICAg ICAgICAgICAgICAgICAjIFZhcmlhYmxlIHRvIGhvbGQgYWxsIGhlYWRlcnMgKGFwYXJ0IGZyb20K ICAgICAgICAgICAgICAgICAgICAjIHRoZSBmaXJzdCBsaW5lICJGcm9tIC4uLi4iIHdoaWNoIGlz IG5vdAogICAgICAgICAgICAgICAgICAgICMgcGFydCBvZiB0aGUgbWVzc2FnZSBpdHNlbGYuCiAg ICAgICAgbXkgJGhlYWRlcnMgPSAnJzsKCiAgICAgICAgICAgICAgICAgICAgIyBWYXJpYWJsZSB0 byBob2xkIHRoZSBhY2N1bXVsYXRlZCBjaGFyYWN0ZXJzCiAgICAgICAgICAgICAgICAgICAgIyB3 ZSBmaW5kIGluIGhlYWRlciBsaW5lcyBvZiB0aGUgdHlwZToKICAgICAgICAgICAgICAgICAgICAj CiAgICAgICAgICAgICAgICAgICAgIyAgICBTdGF0dXM6CiAgICAgICAgICAgICAgICAgICAgIyAg ICBYLVN0YXR1czoKICAgICAgICAgICAgICAgICAgICAjICAgIFgtTW96aWxsYS1TdGF0dXM6CiAg ICAgICAgICAgICAgICAgICAgIyAgICBYLUV2b2x1dGlvbjoKICAgICAgICBteSAkZmxhZ3MgPSAn JzsKCiAgICAgICAgICAgICAgICAgICAgIyBUbyBidWlsZCB0aGUgZmlsZSBuYW1lIGZvciB0aGUg bWVzc2FnZSBpbi4KICAgICAgICBteSAkbWVzc2FnZWZuID0gJyc7CgoKICAgICAgICAgICAgICAg ICAgICAjIFRoZSBkYXRlIHN0cmluZyBmcm9tIHRoZSAiRnJvbSAiIGxpbmUgb2YgZWFjaAogICAg ICAgICAgICAgICAgICAgICMgbWVzc2FnZSB3aWxsIGJlIHdyaXR0ZW4gaGVyZSAtIGFuZCB1c2Vk IGJ5CiAgICAgICAgICAgICAgICAgICAgIyB0b3VjaCB0byBhbHRlciB0aGUgZGF0ZS10aW1lIG9m IGVhY2ggbWVzc2FnZQogICAgICAgICAgICAgICAgICAgICMgZmlsZS4gIFB1dCBub24tZGF0ZSB0 ZXh0IGhlcmUgdG8gbWFrZSBpdAogICAgICAgICAgICAgICAgICAgICMgc3BpdCB0aGUgZHVtbXkg aWYgbXkgY29kZSBmYWlscyB0byBmaW5kIGEKICAgICAgICAgICAgICAgICAgICAjIGRhdGUgdG8g d3JpdGUgaW50byB0aGlzLgoKICAgICAgICBteSAkcmVjZWl2ZWRhdGUgPSAnQm9ndXMnOwoKCSMg VGhlIHN1YmplY3Qgb2YgdGhlIG1lc3NhZ2UKCW15ICRzdWJqZWN0ID0gJyc7CgoJbXkgJHByZXZp b3VzX2xpbmVfd2FzX2VtcHR5ID0gMTsKCiAgICAgICAgICAgICAgICAgICAgIyBXZSByZWNvcmQg dGhlIG1lc3NhZ2Ugc3RhcnQgbGluZSBoZXJlLCBmb3IgZXJyb3IKICAgICAgICAgICAgICAgICAg ICAjIHJlcG9ydGluZy4KICAgICAgICBteSAkc3RhcnRsaW5lOwoKICAgICAgICAgICAgICAgICAg ICAjIElmIGRlZmluZWQsIHdlIHVzZSB0aGlzIGFzIHRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gdGhl CiAgICAgICAgICAgICAgICAgICAgIyBtZXNzYWdlIGJvZHkgcmF0aGVyIHRoYW4gbG9va2luZyBm b3IgYSAvXkZyb20gLyBsaW5lLgogICAgICAgIG15ICRjb250ZW50bGVuZ3RoOwoKCQkJICAgICMg QSBGcm9tIGxpbmVzIGNhbiBlaXRoZXIgb2NjdXIgYXMgdGhlIGZpcnN0CgkJCSAgICAjIGxpbmUg b2YgYSBmaWxlLCBvciBhZnRlciBhbiBlbXB0eSBsaW5lLgoJCQkgICAgIyBNb3N0IG1haWwgc3lz dGVtcyB3aWxsIHF1b3RlIGFsbCBGcm9tIGxpbmVzCgkJICAgICAgICAgICAgIyBhcHBlYXJpbmcg aW4gdGhlIG1lc3NhZ2UsIGJ1dCBzb21lIHdpbGwgb25seQoJCQkgICAgIyBkbyBpdCB3aGVuIG5l Y2Vzc2FyeS4KCQkJICAgICMgU2luY2Ugd2UgaW5pdGlhbGlzZSB0aGUgdmFyaWFibGUgdG8gdHJ1 ZSwKCQkJICAgICMgd2UgZG9uJ3QgbmVlZCB0byBjaGVjayBmb3IgYmVnaW5uaW5nIG9mIGZpbGUu CgogICAgICAgIHdoaWxlKDxNQk9YPikKICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjIGV4Y2hhbmdlIHBvc3NpYmxlIFdpbmRvd3MgRU9MIChDUkxGKSB3aXRoIFVuaXggRU9M IChMRikKICAgICAgICAgICAgJF8gPX4gcy9cclxuJC9cbi87CgogICAgICAgICAgICBpZiAoIC9e RnJvbSAvCgkJJiYgJHByZXZpb3VzX2xpbmVfd2FzX2VtcHR5CgkJJiYgKCFkZWZpbmVkICRjb250 ZW50bGVuZ3RoKSAKCSAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICMgV2UgYXJlIHJlYWRpbmcgdGhlICJGcm9tICIgbGluZSB3aGljaCBoYXMgYW4KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICMgZW1haWwgYWRkcmVzcyBmb2xsb3dlZCBieSBhIHJl Y2VpdmUgZGF0ZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVHVybiBvbiB0aGUgJGlu aGVhZGVycyBmbGFnIHVudGlsIHdlIHJlYWNoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAj IHRoZSBlbmQgb2YgdGhlIGhlYWRlcnMuCgogICAgICAgICAgICAgICAgJGluaGVhZGVycyA9IDE7 CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyByZWNvcmQgdGhlIG1lc3NhZ2Ugc3RhcnQg bGluZQoKICAgICAgICAgICAgICAgICRzdGFydGxpbmUgPSAkLjsKCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAjIElmIHRoaXMgaXMgbm90IHRoZSBmaXJzdCBydW4gdGhyb3VnaCB0aGUgbG9v cAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB0aGVuIHRoaXMgbWVhbnMgd2UgaGF2ZSBh bHJlYWR5IGJlZW4gd29ya2luZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvbiBhIG1l c3NhZ2UuCgogICAgICAgICAgICAgICAgaWYgKCRtZXNzYWdlY291bnQgPiAwKQogICAgICAgICAg ICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBJZiBzbywgdGhlbiBjbG9zZSB0 aGF0IG1lc3NhZ2UgZmlsZSBhbmQgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB1 c2UgdXRpbWUgdG8gY2hhbmdlIGl0cyBkYXRlLXRpbWUuCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE5vdGUgdGhpcyBjb2RlIHNob3Vs ZCBiZSBkdXBsaWNhdGVkIHRvIGRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRoZSBz YW1lIHRoaW5nIGF0IHRoZSBlbmQgb2YgdGhlIHdoaWxlIGxvb3AKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICMgc2luY2Ugd2UgbXVzdCBjbG9zZSBhbmQgdG91Y2ggdGhlIGZpbmFsIG1lc3Nh Z2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZmlsZSB3ZSB3ZXJlIHdyaXRpbmcgd2hl biB3ZSBoaXQgdGhlIGVuZCBvZiB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgTWJv eCBmaWxlLgoKICAgICAgICAgICAgICAgICAgICBjbG9zZSAoT1VUKTsKCQkgICAgaWYgKCRtZXNz YWdlZm4gbmUgJycpIHsKCQkJbXkgJHQgPSBzdHIydGltZSgkcmVjZWl2ZWRhdGUpOwoJCQl1dGlt ZSAkdCwgJHQsICRtZXNzYWdlZm47CgkJICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAjIEJlY2F1c2Ugd2Ugb3BlbmVkIHRoZSBNYm94IGZpbGUgd2l0 aG91dCBhbnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdmFyaWFibGUsIEkgdGhpbmsg dGhpcyBtZWFucyB0aGF0IHdlIGhhdmUgaXRzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAj IGN1cnJlbnQgbGluZSBpbiBQZXJsJ3MgZGVmYXVsdCB2YXJpYWJsZSAiJF8iLgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgIyBTbyBhbGwgc29ydHMgb2YgcGF0dGVybiBtYXRjaGluZyBtYWdp YyB3b3JrcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBkaXJlY3RseSBvbiBpdC4KCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAjIFdlIGFyZSBjdXJyZW50bHkgcmVhZGluZyB0aGUg Zmlyc3QgbGluZSBzdGFydGluZyB3aXRoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICJG cm9tICIgd2hpY2ggY29udGFpbnMgdGhlIGRhdGUgd2Ugd2FudC4KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVGhpcyB3aWxsIGJlIG9m IHRoZSBmb3JtOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgIyAgICAgRnJvbSBkZHVja0B0ZXN0Lm9yZyBXZWQgTm92IDI0IDExOjA1OjM1 IDE5OTkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICMgYXQgbGVhc3Qgd2l0aCBVVy1JTUFQLgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgIwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBIb3dldmVyLCBJIGRpZCBmaW5kIGEg bmFzdHkgZXhjZXB0aW9uIHRvIHRoaXMgaW4gbXkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICMgdGVzdHMsIG9mIHRoZSBmb3JtOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIyAgICJib3VuY2UtTXVzaWNOZXdzbGV0dGVyIDUtcnc9 dGVzdC5vcmciQGFubm91bmNlMi5tcDMuY29tCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAj CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFRoaXMgbWFrZXMgaXQgdHJpY2tpZXIgdG8g Z2V0IHJpZCBvZiB0aGUgZW1haWwgYWRkcmVzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICMgYnV0IEkgZGlkIGZpbmQgYSB3YXkuICBJIGNhbid0IHJ1bGUgb3V0IHRoYXQgdGhlcmUgd291 bGQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYmUgc29tZSBhZGRyZXNzIGxpa2UgdGhp cyB3aXRoIGFuICJAIiBpbiB0aGUgcXVvdGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAj IHBvcnRpb24gdG9vLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgIyBVbmZvcnR1bmF0ZWx5LCB0ZXN0aW5nIHdpdGggYW4gb2xkIEluYm94 IE1ib3ggZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSSBhbHNvIGZvdW5kIGFu IGluc3RhbmNlIHdoZXJlIHRoZSBlbWFpbCBhZGRyZXNzCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjIGhhZCBubyBAIHNpZ24gYXQgYWxsLiAgSXQgd2FzIGp1c3QgYW4gZW1haWwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICMgYWNjb3VudCBuYW1lLCB3aXRoIG5vIGhvc3QuCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEkg Y291bGQgc2VhcmNoIGZvciB0aGUgZGF5IG9mIHRoZSB3ZWVrLiAgSWYgSSBza2lwcGVkCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjIGF0IGxlYXN0IG9uZSB3b3JkIG9mIG5vbi13aGl0ZXNw YWNlICgxIG9yIG1vcmUgY29udGlndW91cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBu b24td2hpdGVzcGFjZSBjaGFyYWN0ZXJzKSB0aGVuIHNlYXJjaGVkIGZvciBhIGRheSBvZgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIyB0aGUgd2VlaywgdGhlbiBJIHNob3VsZCBiZSBhYmxl IHRvIGF2b2lkIGFsbW9zdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBldmVyeSBpbnN0 YW5jZSBvZiBhIGRheSBvZiB0aGUgd2VlayBhcHBlYXJpbmcgaW4KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICMgdGhlIGVtYWlsIGFkZHJlc3MuCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAjCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIERvIEkgbmVlZCBhIGZhaWxzYWZlIGFy cmFuZ2VtZW50IHRvIHByb3ZpZGUgc29tZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBv dGhlciBkYXRlIHRvIHRvdWNoIGlmIEkgZG9uJ3QgZ2V0IHdoYXQgc2VlbXMgbGlrZQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgIyBhIGRhdGUgaW4gbXkgcmVzdWx0aW5nIHN0cmluZz8gIEZv ciBub3csIG5vLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgIyBJIHdpbGwgdGFrZSBvbmUgYXBwcm9hY2ggaWYgdGhlcmUgaXMgYW4gQCBp biB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgIkZyb20gIiBsaW5lIGFuZCBhbm90 aGVyIChqdXN0IHNraXAgdGhlIGZpcnN0IHdvcmQKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICMgYWZ0ZXIgIkZyb20gIikgaWYgdGhlcmUgaXMgbm8gQCBpbiB0aGUgbGluZS4KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSWYgSSBr bmV3IG1vcmUgYWJvdXQgUGVybCBJIHdvdWxkIHByb2JhYmx5IGRvIGl0IGluCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjIGEgbW9yZSBlbGVnYW50IHdheS4KCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAjIENvcHkgdGhlIGN1cnJlbnQgbGluZSBpbnRvICRmcm9tbGluZS4KCiAgICAg ICAgICAgICAgICAkZnJvbWxpbmUgPSAkXzsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAj IE5vdyBnZXQgcmlkIG9mIHRoZSAiRnJvbSAiLiAiID1+IHMiIG1lYW5zIHN1YnN0aXR1dGUuCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAjIEZpbmQgdGhlIHdvcmQgIkZyb20gIiBhdCB0aGUg c3RhcnQgb2YgdGhlIGxpbmUgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHJlcGxh Y2UgaXQgd2l0aCBub3RoaW5nLiAgVGhlIG5vdGhpbmcgaXMgd2hhdCBpcwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgIyBiZXR3ZWVuIHRoZSBzZWNvbmQgYW5kIHRoaXJkIHNsYXNoLgoKICAg ICAgICAgICAgICAgICRmcm9tbGluZSA9fiBzL15Gcm9tIC8vIDsKCgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgIyBMaWtld2lzZSBnZXQgcmlkIG9mIHRoZSBlbWFpbCBhZGRyZXNzLgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGZpcnN0IHNlY3Rpb24gaXMgaWYgd2UgZGV0 ZXJtaW5lIHRoZXJlIGlzIG9uZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3IgbW9y ZSAuIC4gLiApICJAIiBjaGFyYWN0ZXJzIGluIHRoZSBsaW5lLCB3aGljaAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgIyB3b3VsZCBub3JtYWxseSBiZSB0aGUgY2FzZS4KCiAgICAgICAgICAg ICAgICBpZiAoJGZyb21saW5lID1+IG0vQC8pCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjIFRoZSBsaW5lIGhhcyBhdCBsZWFzdCBvbmUgIkAiIGluIGl0LCBz byB3ZSBhc3N1bWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdGhpcyBpcyBpbiB0aGUg bWlkZGxlIG9mIGFuIGVtYWlsIGFkZHJlc3MuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAj CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIElmIHRoZSBlbWFpbCBhZGRyZXNzIGhhZCBu byBzcGFjZXMsIHRoZW4gd2UgY291bGQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZ2V0 IHJpZCBvZiB0aGUgd2hvbGUgdGhpbmcgYnkgc2VhcmNoaW5nIGZvciBhbnkgbnVtYmVyCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjIG9mIG5vbi13aGl0ZXNwYWNlIGNoYXJhY3RlcnMgKFxT KSBjb250aWd1b3VzbHksIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB0aGVuIEkg dGhpbmsgYSBzcGFjZS4gIFN1YnNpdHV0ZSBub3RoaW5nIGZvciB0aGlzLgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAkZnJvbWxp bmUgPX4gcy8oXFMpKyAvLyAgICA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjIEJ1dCB3ZSBuZWVkIHNvbWV0aGluZyB0byBtYXRjaCBh bnkgbnVtYmVyIG9mIG5vbi1ACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGNoYXJhY3Rl cnMsIHRoZW4gdGhlICJAIiBhbmQgdGhlbiBhbGwgdGhlIG5vbi13aGl0ZXNwYWNlCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAjIGNoYXJhY3RlcnMgZnJvbSB0aGVyZSAod2hpY2ggdGFrZXMg dXMgdG8gdGhlIGVuZCBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAidGVzdC5vcmci KSBhbmQgdGhlbiB0aGUgc3BhY2UgZm9sbG93aW5nIHRoYXQuCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEEgdHV0b3JpYWwgb24gcmVn dWxhciBleHByZXNzaW9ucyBpczoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICMgICAgaHR0cDovL3d3dy5wZXJsZG9jLmNvbS9wZXJsNS42 LjEvcG9kL3BlcmxyZXR1dC5odG1sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjIEdldCByaWQgb2YgYWxsIG5vbi1AIGNoYXJhY3RlcnMg dXAgdG8gdGhlIGZpcnN0ICJAIjoKCiAgICAgICAgICAgICAgICAgICAgJGZyb21saW5lID1+IHMv W15AXSsvLzsKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBHZXQgcmlkIG9mIHRoZSAi QCIuCgogICAgICAgICAgICAgICAgICAgICRmcm9tbGluZSA9fiBzL0AvLzsKICAgICAgICAgICAg ICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSWYgdGhlcmUgd2FzIGFuICJAIiBp biB0aGUgbGluZSwgdGhlbiB3ZSBoYXZlIG5vdwogICAgICAgICAgICAgICAgICAgICAgICAgICAg IyByZW1vdmVkIHRoZSBmaXJzdCBvbmUgKGxldHMgaG9wZSB0aGVyZSBhcmVuJ3QgbW9yZSEpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFuZCBldmVyeXRoaW5nIHdoaWNoIHByZWNlZGVk IGl0LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIwoJCQkgICAgIyB3ZSBub3cgcmVtb3Zl IGVpdGhlciBzb21ldGhpbmcgbGlrZQoJCQkgICAgIyAnKGZvbyBiYXIpJy4gZWcuICcobm8gbWFp bCBhZGRyZXNzKScsCgkJCSAgICAjIG9yIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlICdAJyB1cCB0byB0 aGUgdHJhaWxpbmcKCQkJICAgICMgdGltZXpvbmUKCQkJICAgICMKCQkJICAgICMgRklYTUU6IGFs bCB0aG9zZSByZWdleHAgc2hvdWxkIGJlIGNvbWJpbmVkIHRvIGp1c3Qgb25lIHNpbmdsZSBvbmUK CgkJJGZyb21saW5lID1+IHMvKFwoKFxTKnwgKStcKXxcUyspICovLzsKCgkJY2hvbXAgJGZyb21s aW5lOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgU3Rhc2ggdGhlIGRhdGUtdGltZSBm b3IgbGF0ZXIgdXNlLiAgV2Ugd2lsbCB1c2UgaXQKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICMgdG8gdG91Y2ggdGhlIGZpbGUgYWZ0ZXIgd2UgaGF2ZSBjbG9zZWQgaXQuCgogICAgICAgICAg ICAgICAgJHJlY2VpdmVkYXRlID0gJGZyb21saW5lOwoJCQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgIyBEZWJ1Z2dpbmcgbGluZXM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAjIHByaW50ICIkcmVjZWl2ZWRhdGUgaXMgdGhlIHJl Y2VpdmVkYXRlIG9mIG1lc3NhZ2UgJG1lc3NhZ2Vjb3VudC5cbiI7CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAjICRyZWNlaXZlZGF0ZSA9ICJXZWQgTm92IDI0IDExOjA1OjM1IDE5OTkiOwog ICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICAgICAgICAg IyBUbyBsb29rIGF0IHRoZSBleGFjdCBkYXRlLXRpbWUgb2YgZmlsZXM6CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgbHMgLWxGYSAt LWZ1bGwtdGltZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgIyBFbmQgb2YgaGFuZGxpbmcgdGhlICJGcm9tICIgbGluZS4KICAgICAgICAg ICAgfQoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE5vdyBwcm9jZXNzIGhlYWRlciBs aW5lcyB3aGljaCBhcmUgbm90IHRoZSAiRnJvbSAiIGxpbmUuCgogICAgICAgICAgICBpZiAoICAg ICgkaW5oZWFkZXJzIGVxIDEpCiAgICAgICAgICAgICAgICAgJiYgKCEgL15Gcm9tIC8pCiAgICAg ICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBO b3cgd2UgYXJlIHJlYWRpbmcgdGhlIGhlYWRlciBsaW5lcyBhZnRlciB0aGUgIkZyb20gIiBsaW5l LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBLZWVwIGxvb2tpbmcgZm9yIHRoZSBibGFu ayBsaW5lIHdoaWNoIGluZGljYXRlcyB0aGUgZW5kIG9mIHRoZQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgIyBoZWFkZXJzLgoKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICIuPSIg bWVhbnMgYXBwZW5kIHRoZSBjdXJyZW50IGxpbmUgdG8gdGhlICRoZWFkZXJzCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjIHZhcmlhYmxlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAg IwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBGb3Igc29tZSByZWFzb24sIEkgd2FzIGdl dHRpbmcgdHdvIGJsYW5rIGxpbmVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGF0IHRo ZSBlbmQgb2YgdGhlIGhlYWRlcnMsIHJhdGhlciB0aGFuIG9uZSwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICMgc28gSSBkZWNpZGVkIG5vdCB0byByZWFkIGluIHRoZSBibGFuayBsaW5lCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAjIHdoaWNoIHRlcm1pbmF0ZXMgdGhlIGhlYWRlcnMu CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAjIERlbGV0ZSB0aGUgInVubGVzcyAoJF8gZXEgIlxuIikiIHRvIGdldCByaWQKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICMgb2YgdGhpcyBrbHVkZ2UuCgogICAgICAgICAgICAgICAgJGhl YWRlcnMgLj0gJF8gdW5sZXNzICgkXyBlcSAiXG4iKTsKCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjIE5vdyBzY2FuIHRoZSBsaW5lIGZvciB2YXJpb3VzIHN0YXR1cyBmbGFncwogICAgICAg ICAgICAgICAgICAgICAgICAgICAgIyBhbmQgdG8gZmluZSB0aGUgU3ViamVjdCBsaW5lLgoKICAg ICAgICAgICAgICAgICRmbGFncyAgLj0gJDEgaWYgL15TdGF0dXM6IChbQS1aXSspLzsKICAgICAg ICAgICAgICAgICRmbGFncyAgLj0gJDEgaWYgL15YLVN0YXR1czogKFtBLVpdKykvOwogICAgICAg ICAgICAgICAgaWYgKC9eWC1Nb3ppbGxhLVN0YXR1czogKFswLTlhLWZdezR9KS9pKQogICAgICAg ICAgICAgICAgewogICAgICAgICAgICAgICAgICAkZmxhZ3MgLj0gJ1InIGlmIChoZXgoJDEpICYg MHgwMDAxKTsKICAgICAgICAgICAgICAgICAgJGZsYWdzIC49ICdBJyBpZiAoaGV4KCQxKSAmIDB4 MDAwMik7CiAgICAgICAgICAgICAgICAgICRmbGFncyAuPSAnRCcgaWYgKGhleCgkMSkgJiAweDAw MDgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYoL15YXC1Fdm9sdXRpb246 XHMrXHd7OH1cLShcd3s0fSkvb2kpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg ICAgJGIgPSBwYWNrKCJINCIsICQxKTsgI3BhY2sgaXQgYXMgNCBkaWdpdCBoZXggKDB4MDAwMCkK ICAgICAgICAgICAgICAgICAgICAkYiA9IHVucGFjaygiQjMyIiwgJGIpOyAjdW5wYWNrIGludG8g Yml0IHN0cmluZwoKICAgICAgICAgICAgICAgICAgICAjICJ1c3VhbGx5IiBvbmx5IHRoZSByaWdo dCBtb3N0IHNpeCBiaXRzIGFyZSB1c2VkCiAgICAgICAgICAgICAgICAgICAgIyBob3dldmVyLCBJ IGhhdmUgY29tZSBhY3Jvc3MgYSBzZXZlbnRoIGJpdCBpbgogICAgICAgICAgICAgICAgICAgICMg YWJvdXQgMTUgKG91dCBvZiAxMCwwMDApIG1lc3NhZ2VzIHdpdGggdGhpcyBiaXQKICAgICAgICAg ICAgICAgICAgICAjIGFjdGl2YXRlZC4KICAgICAgICAgICAgICAgICAgICAjIEkgaGF2ZSBub3Qg Zm91bmQgYW55IGRvY3VtZW50YXRpb24gaW4gdGhlIHNvdXJjZS4KICAgICAgICAgICAgICAgICAg ICAjIElmIHlvdSBmaW5kIG91dCB3aGF0IGl0IGRvZXMsIHBsZWFzZSBsZXQgbWUga25vdy4KCiAg ICAgICAgICAgICAgICAgICAgIyBOb3RlczoKICAgICAgICAgICAgICAgICAgICAjICAgRXZvbHV0 aW9uIDEuNCBkb2VzIG1hcmsgZm9yd2FyZGVkIG1lc3NhZ2VzLgogICAgICAgICAgICAgICAgICAg ICMgICBUaGUgc2l4dGggYml0IGlzIHRvIGRlbm90ZSBhbiBhdHRhY2htZW50CgogICAgICAgICAg ICAgICAgICAgICRmbGFncyAuPSAnQScgaWYoJGIgPX4gL1swMV17MTV9MS8pOyAjcmVwbGllZAog ICAgICAgICAgICAgICAgICAgICRmbGFncyAuPSAnRCcgaWYoJGIgPX4gL1swMV17MTR9MVswMV17 MX0vKTsgI2RlbGV0ZWQKICAgICAgICAgICAgICAgICAgICAkZmxhZ3MgLj0gJ1QnIGlmKCRiID1+ IC9bMDFdezEzfTFbMDFdezJ9Lyk7ICNkcmFmdAogICAgICAgICAgICAgICAgICAgICRmbGFncyAu PSAnRicgaWYoJGIgPX4gL1swMV17MTJ9MVswMV17M30vKTsgI2ZsYWdnZWQKICAgICAgICAgICAg ICAgICAgICAkZmxhZ3MgLj0gJ1InIGlmKCRiID1+IC9bMDFdezExfTFbMDFdezR9Lyk7ICNzZWVu L3JlYWQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRzdWJqZWN0ID0gJDEgaWYg L15TdWJqZWN0OiAoLiopJC87CgkJaWYgKCR1c2VfY2wgZXEgMSkKCQl7CiAgICAgICAgICAgICAg ICAJJGNvbnRlbnRsZW5ndGggPSAkMSBpZiAvXkNvbnRlbnQtTGVuZ3RoOiAoXGQrKSQvOwoJCX0K CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE5vdyBsb29rIG91dCBmb3IgdGhlIGVuZCBv ZiB0aGUgaGVhZGVycyAtIGEgYmxhbmsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbGlu ZS4gIFdoZW4gd2UgZmluZCBpdCwgY3JlYXRlIHRoZSBmaWxlIG5hbWUgYW5kCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjIGFuYWx5c2UgdGhlIFN1YmplY3QgbGluZS4KCiAgICAgICAgICAg ICAgICBpZiAoJF8gZXEgIlxuIikKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICMgV2UgYXJlIGF0IHRoZSBlbmQgb2YgdGhlIGhlYWRlcnMuICBTZXQgdGhlCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAjICRpbmhlYWRlcnMgZmxhZyBiYWNrIHRvIDAuCgog ICAgICAgICAgICAgICAgICAgICRpbmhlYWRlcnMgPSAwOwoKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICMgSW5jbHVkZSB0aGUgY3VycmVudCBuZXdsaW5lIGluIHRoZSBjb250ZW50IGxlbmd0 aAoKICAgICAgICAgICAgICAgICAgICArKyRjb250ZW50bGVuZ3RoIGlmIGRlZmluZWQgJGNvbnRl bnRsZW5ndGg7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBDcmVhdGUgdGhlIGZpbGUg bmFtZSBmb3IgdGhlIGN1cnJlbnQgbWVzc2FnZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQSBzaW1wbGUgdmVyc2lvbiBvZiB0aGlz IHdvdWxkIGJlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgIyAgICRtZXNzYWdlZm4gPSAiY3VyLyR1bmlxdWUuJG1lc3NhZ2Vjb3VudC5t Ym94OjIsIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICMgVGhpcyB3b3VsZCBjcmVhdGUgbmFtZXMgd2l0aCAkbWVzc2FnZWNvdW50IHZh bHVlcyBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAxLCAyLCBldGMuICBCdXQgZm9y IG5lYXRuZXNzIHdoZW4gbG9va2luZyBhdCBhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAj IGRpcmVjdG9yeSBvZiBzdWNoIG1lc3NhZ2VzLCBzb3J0ZWQgYnkgZmlsZW5hbWUsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAjIEkgd2FudCB0byBoYXZlIGxlYWRpbmcgemVyb2VzIG9uIG1l c3NhZ2UgY291bnQsIHNvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRoYXQgdGhleSB3 b3VsZCBiZSAwMDAwMDEgZXRjLiAgVGhpcyBtYWtlcyB0aGVtCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAjIGFwcGVhciBpbiBtZXNzYWdlIG9yZGVyIHJhdGhlciB0aGFuIDEgYmVpbmcgYWZ0 ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgMTkgZXRjLiAgU28gdGhpcyBpcyBnb29k IGZvciB1cCB0byA5OTksOTk5IG1lc3NhZ2VzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAj IGluIGEgbWFpbGJveC4gIEl0IGlzIGEgY29zbWV0aWMgbWF0dGVyIGZvciBhIHBlcnNvbgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIyBsb29raW5nIGludG8gdGhlIE1haWxkaXIgZGlyZWN0 b3J5IG1hbnVhbGx5LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBUbyBkbyB0aGlzLCB1 c2Ugc3ByaW50ZiBpbnN0ZWFkIHdpdGggIiUwNmQiIGZvcgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgIyA2IGNoYXJhY3RlcnMgb2YgemVyby1wYWRkaW5nOgoKICAgICAgICAgICAgCQkkbWVz c2FnZWZuID0gc3ByaW50ZiAoImN1ci8lZC4lMDZkLm1ib3g6MiwiLCAkdW5pcXVlLCAkbWVzc2Fn ZWNvdW50KSA7CgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQXBwZW5kIGZsYWcgY2hh cmFjdGVycyB0byB0aGUgZW5kIG9mIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBm aWxlbmFtZSwgYWNjb3JkaW5nIHRvIGZsYWcgY2hhcmFjdGVycwogICAgICAgICAgICAgICAgICAg ICAgICAgICAgIyBjb2xsZWN0ZWQgZnJvbSB0aGUgbWVzc2FnZSBoZWFkZXJzCgogICAgICAgICAg ICAgICAgICAgICRtZXNzYWdlZm4gLj0gJ0YnIGlmICRmbGFncyA9fiAvRi87ICMgRmxhZ2dlZC4K ICAgICAgICAgICAgICAgICAgICAkbWVzc2FnZWZuIC49ICdSJyBpZiAkZmxhZ3MgPX4gL0EvOyAj IFJlcGxpZWQgdG8uCiAgICAgICAgICAgICAgICAgICAgJG1lc3NhZ2VmbiAuPSAnUycgaWYgJGZs YWdzID1+IC9SLzsgIyBTZWVuIG9yIFJlYWQuCiAgICAgICAgICAgICAgICAgICAgJG1lc3NhZ2Vm biAuPSAnVCcgaWYgJGZsYWdzID1+IC9ELzsgIyBUYWdnZWQgZm9yIGRlbGV0aW9uLgoKCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjIE9wZW5zIGZpbGVuYW1lICRtZXNzYWdlZm4gZm9yIG91 dHB1dCAoPikgd2l0aCBmaWxlaGFuZGxlIE9VVC4KCiAgICAgICAgICAgICAgICAgICAgb3BlbihP VVQsICI+JG1lc3NhZ2VmbiIpIG9yIGRpZSgiRmF0YWw6IHVuYWJsZSB0byBjcmVhdGUgbmV3IG1l c3NhZ2UgJG1lc3NhZ2VmbiIpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQ291bnQg dGhlIG1lc3NhZ2VzLgoKICAgICAgICAgICAgICAgICAgICAkbWVzc2FnZWNvdW50Kys7CgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIyBPbmx5IGZvciB0aGUgZmlyc3QgbWVzc2FnZSwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICMgY2hlY2sgdG8gc2VlIGlmIGl0IGlzIGEgZHVtbXku CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIERlbGV0ZSB0aGUgbWVzc2FnZSBmaWxlIHdl CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGp1c3QgY3JlYXRlZCBpZiBpdCB3YXMgZm9y IHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBkdW1teSBtZXNzYWdlIGF0IHRoZSBz dGFydAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvZiB0aGUgTWJveC4KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIHNl YXJjaCB0ZXJtcyBhcyByZXF1aXJlZC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVGhl IGxhc3QgMiBsaW5lcyBhcmUgZm9yIHJlbnQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAj CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICJtIiBtZWFucyBtYXRjaCB0aGUgcmVndWxh ciBleHByZXNzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBidXQgd2UgY2FuIGRv IHdpdGhvdXQgaXQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAjIERvIEkgbmVlZCB0byBlc2NhcGUgdGhlICcgaW4gIkRPTidUIj8KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICMgSSBkaWRuJ3QgaW4gdGhlIG9yaWdpbmFsIHZlcnNp b24uCgogICAgICAgICAgICAgICAgICAgIGlmICggICAoKCRtZXNzYWdlY291bnQgPT0gMSkgJiYg ZGVmaW5lZCgkc3ViamVjdCkpCiAgICAgICAgICAgICAgICAgICAgICAgICYmICgkc3ViamVjdCA9 fiBtL15ET04nVCBERUxFVEUgVEhJUyBNRVNTQUdFIC0tIEZPTERFUiBJTlRFUk5BTCBEQVRBLykK ICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAg ICAgICAgICAgICAgICAgICAgIyBTdGFzaCB0aGUgZmlsZSBuYW1lIG9mIHRoZSBkdW1teSBtZXNz YWdlIHNvIHdlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGNhbiBkZWxldGUgaXQgbGF0 ZXIuCgogICAgICAgICAgICAgICAgICAgICAgICAkZGVsZXRlZHVtbXkgPSAiJG1lc3NhZ2VmbiI7 CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgUHJp bnQgdGhlIGNvbGxlY3RlZCBoZWFkZXJzIHRvIHRoZSBtZXNzYWdlIGZpbGUuCgogICAgICAgICAg ICAgICAgICAgIHByaW50IE9VVCAiJGhlYWRlcnMiOwoKCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjIENsZWFyICRoZWFkZXJzIGFuZCAkZmxhZ3MgcmVhZHkgZm9yIHRoZSBuZXh0IG1lc3Nh Z2UuCgogICAgICAgICAgICAgICAgICAgICRoZWFkZXJzID0gJyc7CiAgICAgICAgICAgICAgICAg ICAgJGZsYWdzID0gJyc7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBFbmQgb2YgcHJv Y2Vzc2luZyB0aGUgaGVhZGVycyBvbmNlIHdlIGZvdW5kIHRoZQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgIyBibGFuayBsaW5lIHdoaWNoIHRlcm1pbmF0ZWQgdGhlbQogICAgICAgICAgICAg ICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgRW5kIG9mIGRlYWxpbmcgd2l0aCB0 aGUgaGVhZGVycy4KICAgICAgICAgICAgfQoKCiAgICAgICAgICAgIGlmICggJGluaGVhZGVycyBl cSAwKQogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBXZSBhcmUg bm93IHByb2Nlc3NpbmcgdGhlIG1lc3NhZ2UgYm9keS4KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgTm93IHdlIGhhdmUgcGFzc2VkIHRo ZSBoZWFkZXJzIHRvIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvdXRwdXQgZmls ZSwgd2Ugc2NhbiB1bnRpbCB0aGUgd2hpbGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMg bG9vcCBmaW5kcyBhbm90aGVyICJGcm9tICIgbGluZS4KCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjIERlY3JlbWVudCBvdXIgY29udGVudCBsZW5ndGggaWYgd2UncmUKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICMgdXNpbmcgaXQgdG8gZmluZCB0aGUgZW5kIG9mIHRoZSBtZXNzYWdl CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGJvZHkKCiAgICAgICAgICAgICAgICBpZiAo ZGVmaW5lZCAkY29udGVudGxlbmd0aCkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMg RGVjcmVtZW50IG91ciAkY29udGVudGxlbmd0aCB2YXJpYWJsZQoKICAgICAgICAgICAgICAgICAg ICAkY29udGVudGxlbmd0aCAtPSBsZW5ndGgoJF8pOwoKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICMgVGhlIHByb3BlciBlbmQgZm9yIGEgbWVzc2FnZSB3aXRoIENvbnRlbnQtTGVuZ3RoCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAjIHNwZWNpZmllZCBpcyB0aGUgJGNvbnRlbnRsZW5n dGggdmFyaWFibGUgc2hvdWxkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGJlIGV4YWN0 bHkgLTEgYW5kIHdlIHNob3VsZCBiZSBvbiBhIGJhcmUKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICMgbmV3bGluZS4gIE5vdGUgdGhhdCB0aGUgYmFyZSBuZXdsaW5lIGlzIG5vdAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgIyBwcmludGVkIHRvIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQg bWVzc2FnZSBhcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpdCdzIGFjdHVhbGx5IGEg bWVzc2FnZSBzZXBhcmF0b3IgaW4gdGhlIG1ib3gKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICMgZm9ybWF0IHJhdGhlciB0aGFuIHBhcnQgb2YgdGhlIG1lc3NhZ2UuICBUaGUKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICMgbmV4dCBsaW5lIF9zaG91bGRfIGJlIGEgRnJvbV8gbGluZSwg YnV0IGp1c3QgaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgY2FzZSB0aGUgQ29udGVu dC1MZW5ndGggaGVhZGVyIGlzIGluY29ycmVjdAogICAgICAgICAgICAgICAgICAgICAgICAgICAg IyAoZS5nLiBhIGNvcnJ1cHQgbWFpbGJveCksIHdlIGp1c3QgY29udGludWUKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICMgcHV0dGluZyBsaW5lcyBpbnRvIHRoZSBjdXJyZW50IG1lc3NhZ2Ug dW50aWwgd2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgc2VlIHRoZSBuZXh0IEZyb21f IGxpbmUuCgogICAgICAgICAgICAgICAgICAgIGlmICgkY29udGVudGxlbmd0aCA8IDApIHsKICAg ICAgICAgICAgICAgICAgICAgICAgaWYgKCRjb250ZW50bGVuZ3RoID09IC0xICYmICRfIGVxICJc biIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb250ZW50bGVuZ3RoID0gdW5kZWY7 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0OwoJCQl9CiAgICAgICAgICAgICAgICAg ICAgICAgICRjb250ZW50bGVuZ3RoID0gdW5kZWY7CiAgICAgICAgICAgICAgICAgICAgfQogICAg ICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICMgV2Ugd2FudCB0byBjb3B5IGV2ZXJ5IHBhcnQgb2YgdGhlIG1lc3Nh Z2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYm9keSB0byB0aGUgb3V0cHV0IGZpbGUs IGV4Y2VwdCBmb3IgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHF1b3RlZCAiPkZy b20gIiBsaW5lcywgd2hpY2ggd2FzIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB3 YXkgdGhlIElNQVAgc2VydmVyIGVuY29kZWQgYm9keSBsaW5lcwogICAgICAgICAgICAgICAgICAg ICAgICAgICAgIyBzdGFydGluZyB3aXRoICJGcm9tICIuCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFBhdHRlcm4gbWF0Y2hpbmcgUGVy bCBtYWppayB0bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBnZXQgcmlkIG9mIGFuIE1i b3ggcXVvdGVkIEZyb20uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjIFRoaXMgd29ya3Mgb24gdGhlIGRlZmF1bHQgdmFyaWFibGUgIiRf IiB3aGljaAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBjb250YWlucyB0aGUgdGV4dCBm cm9tIHRoZSBNYm94IG1haWxib3ggLSBJCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGd1 ZXNzIHRoaXMgaXMgdGhlIGNhc2UgYmVjYXVzZSBvZiBvdXIKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICMgKG9wZW4oTUJPWCAuLi4uKSBsaW5lIGFib3ZlLCB3aGljaCBkaWQgbm90CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjIGFzc2lnbiB0aGlzIHRvIGFueXRoaW5nIGVsc2UsIHNv IGl0IHdvdWxkIGdvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRvIHRoZSBkZWZhdWx0 IHZhcmlhYmxlLiAgVGhpcyBlbmFibGVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlu c2NydXRhYmx5IHRlcnNlIFBlcmxpc21zIHRvIGZvbGxvdy4KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgInMiIG1lYW5zICJTdWJzaXR1 dGUiIGFuZCBpdCBsb29rcyBmb3IgYW55CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9j Y3VycmVuY2Ugb2YgIj5Gcm9tIiBzdGFydGluZyBhdCB0aGUgc3RhcnQKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICMgb2YgdGhlIGxpbmUuICBXaGVuIGl0IGZpbmRzIHRoaXMsIGl0IHJlcGxh Y2VzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGl0IHdpdGggIkZyb20iLgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBTbyB0 aGlzIGZpbmRzIGFsbCBpbnN0YW5jZXMgaW4gdGhlIE1ib3ggbWVzc2FnZQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgIyB3aGVyZSB0aGUgb3JpZ2luYWwgbGluZSBzdGFydGVkIHdpdGggdGhl IHdvcmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgIkZyb20iIGJ1dCB3YXMgY29udmVy dGVkIHRvICI+RnJvbSIgaW4gb3JkZXIgdG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICMg bm90IGJlIG1pc3Rha2VuIGZvciB0aGUgIkZyb20gLi4uIiBsaW5lIHdoaWNoCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjIGlzIHVzZWQgdG8gZGVtYXJrIGVhY2ggbWVzc2FnZSBpbiB0aGUg TWJveC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVGhpcyB3YXMgd2FzIGEgZGVzdHJ1 Y3RpdmUgY29udmVyc2lvbiBiZWNhdXNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFu eSBtZXNzYWdlIHdoaWNoIG9yaWdpbmFsbHkgaGFkICI+RnJvbSIgYXQgdGhlCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjIHN0YXJ0IG9mIHRoZSBsaW5lLCBiZWZvcmUgYmVpbmcgcHV0IGlu dG8gdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE1ib3gsIHdpbGwgbm93IGhhdmUg dGhhdCBsaW5lIHdpdGhvdXQgdGhlICI+Ii4KCiAgICAgICAgICAgICAgICBzL14+RnJvbSAvRnJv bSAvOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgR2xvcmlvdXMgdGVyc25lc3MgaGVy ZS4gIFRoYW5rcyBTaW1vbiBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZXhwbGFp bmluZyB0aGlzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgIyAicHJpbnQgT1VUIiBtZWFucyBwcmludCB0aGUgZGVmYXVsdCB2YXJpYWJs ZSB0bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB0aGUgZmlsZSBvZiBmaWxlIGhhbmRs ZSBPVVQuICBUaGlzIGlzIHdoZXJlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRoZSBi dWxrIG9mIHRoZSBtZXNzYWdlIHRleHQgaXMgd3JpdHRlbiB0bwogICAgICAgICAgICAgICAgICAg ICAgICAgICAgIyB0aGUgb3V0cHV0IGZpbGUuCgogICAgICAgICAgICAgICAgcHJpbnQgT1VUIG9y IGRpZSgiRmF0YWw6IHVuYWJsZSB0byB3cml0ZSB0byBuZXcgbWVzc2FnZSB0byAkbWVzc2FnZWZu Iik7CgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgRW5kIG9mIHRoZSBpZiBzdGF0ZW1l bnQgZGVhbGluZyB3aXRoIG1lc3NhZ2UgYm9keS4KICAgICAgICAgICAgfQoKCSAgICAkcHJldmlv dXNfbGluZV93YXNfZW1wdHkgPSAoICRfIGVxICJcbiIgKTsKCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAjIEVuZCBvZiB3aGlsZSAoTUJPWCkgbG9vcC4KICAgICAgICB9CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjIENsb3NlIHRoZSBpbnB1dCBmaWxlLgoKICAgICAgICBjbG9zZShN Qk9YKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIENsb3NlIHRoZSBvdXRwdXQgZmls ZSwgYW5kIGR1cGxpY2F0ZSB0aGUgY29kZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBm cm9tIHRoZSBzdGFydCBvZiB0aGUgd2hpbGUgbG9vcCB3aGljaCB0b3VjaGVzCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjIHRoZSBkYXRlLXRpbWUgb2YgdGhlIG1vc3QgcmVjZW50IG1lc3Nh Z2UgZmlsZS4KCiAgICAgICAgY2xvc2UoT1VUKTsKICAgICAgICBpZiAoJG1lc3NhZ2VmbiBuZSAn JykgewoJICAgIG15ICR0ID0gc3RyMnRpbWUoJHJlY2VpdmVkYXRlKTsKCSAgICB1dGltZSAkdCwg JHQsICRtZXNzYWdlZm47Cgl9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZnRlciBh bGwgdGhlIG1lc3NhZ2VzIGhhdmUgYmVlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBj b252ZXJ0ZWQsIGNoZWNrIHRvIHNlZSBpZiB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICMgZmlyc3Qgb25lIHdhcyBhIGR1bW15LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBp ZiBzbywgZGVsZXRlIGl0IGFuZCBtYWtlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRo ZSBtZXNzYWdlIGNvdW50IG9uZSBsZXNzLgoKICAgICAgICBpZiAoJGRlbGV0ZWR1bW15IG5lICIi KQogICAgICAgIHsKICAgICAgICAgICAgcHJpbnRmKCJEdW1teSBtYWlsIHN5c3RlbSBmaXJzdCBt ZXNzYWdlIGRldGVjdGVkIGFuZCBub3Qgc2F2ZWQuXG4iKTsKICAgICAgICAgICAgdW5saW5rICRk ZWxldGVkdW1teTsKCiAgICAgICAgICAgICRtZXNzYWdlY291bnQtLTsKCiAgICAgICAgfQoKICAg ICAgICBwcmludGYoIiRtZXNzYWdlY291bnQgbWVzc2FnZXMuXG5cbiIpOwp9Cg== --=-=-=-- ------------=_1524740102-15993-1-- From unknown Wed Aug 20 05:15:37 2025 X-Loop: help-debbugs@gnu.org Subject: bug#31216: commit 217b8c2e0 produces 'Can't locate Date/Parse.pm in @INC Error' perl error Resent-From: George myglc2 Clemmer Original-Sender: "Debbugs-submit" Resent-CC: bug-guix@gnu.org Resent-Date: Thu, 26 Apr 2018 12:52:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 31216 X-GNU-PR-Package: guix X-GNU-PR-Keywords: To: Marius Bakke Cc: Mark H Weaver , 31216-done@debbugs.gnu.org Received: via spool by 31216-done@debbugs.gnu.org id=D31216.15247471029076 (code D ref 31216); Thu, 26 Apr 2018 12:52:01 +0000 Received: (at 31216-done) by debbugs.gnu.org; 26 Apr 2018 12:51:42 +0000 Received: from localhost ([127.0.0.1]:40077 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fBgNA-0002MI-Ta for submit@debbugs.gnu.org; Thu, 26 Apr 2018 08:51:42 -0400 Received: from mail-qt0-f181.google.com ([209.85.216.181]:46240) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fBgN9-0002M1-7M for 31216-done@debbugs.gnu.org; Thu, 26 Apr 2018 08:51:39 -0400 Received: by mail-qt0-f181.google.com with SMTP id m16-v6so7831743qtg.13 for <31216-done@debbugs.gnu.org>; Thu, 26 Apr 2018 05:51:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=references:user-agent:from:to:cc:subject:in-reply-to:date :message-id:mime-version; bh=0310huT7dy8j1WZoDdcmf4fc9Sh/hXB4GPCnD5BC5Xc=; b=mks4b3WW/QEj8yfXzxMGJsacyit6J1rQ8ZorE432yXQgQmEeC0Gndpgf3RwClxxNC/ 4DwpcXZzsBbHTXhQJTEAnCwpFsf6A7X6/YaAeIZwv3lfY773+vi92MtmSOZDcDOkgFqe 5oOu8wnZpFsVJ5n2vizbPrwpEA7Mz5pYe5Py3hpJju3ffE28G4CoBmPjoBd6VfdurMpW +CqMfeUCW0fopRB8l9idtZDHGA4hH3R1/z9dDIhJPfqmzTh6MZNBm8YkAtDHAU+9UDeC SV9T846yu0OypgkThM4zr406vvtV/SfN1JPl4FAlEKlFdVPmsPXjgj1Imm131ev59nZl ScIg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:references:user-agent:from:to:cc:subject :in-reply-to:date:message-id:mime-version; bh=0310huT7dy8j1WZoDdcmf4fc9Sh/hXB4GPCnD5BC5Xc=; b=cnm7LLyfwJoEz/4FA1Q5mYgunJR94zjBC+oGzYwON+Bb2fD9VR7nc2VzYqFmdZtbvy O0dLHCyzasU+JwYOa5wf4epjIFfs2ecXzvonMjafM/gcC0N5vhwszM49AFcEJIN0VBec JPxQGjS+2wqyNVgXrSr7kSeOZjVVhjh86Cqe7Cv4a+UjT3Mbfui1dW8Y9k3Z4NAXWSic UzZv4WQk4bl+ZB3chOOCef46dFpyJROzmoCU750aoo2G8YnQWpatjhRwGGo07QixcUmq vtdgZ7PAS147jhr/48ggtYKlNC3t0lfQc7bpGE16EzkGKEGd5R8QvrwP0g/t04pjXCYL uv9Q== X-Gm-Message-State: ALQs6tBerKhGXgyjoPilEG8SIwIA3DBTgI2ZIgCnDaBhA1/a3qhx9+TN B6A2bQ7AXIUm16y0nGzrjWfv9g== X-Google-Smtp-Source: AB8JxZqA4bjUvXijxfgsLPtij49o+rJpVL//7AlRhGQVNZD+9UzSwCllMn2+niGxnUoim6+xcMy9wQ== X-Received: by 2002:aed:21a3:: with SMTP id l32-v6mr9101878qtc.213.1524747093447; Thu, 26 Apr 2018 05:51:33 -0700 (PDT) Received: from g1 (c-73-167-118-254.hsd1.ma.comcast.net. [73.167.118.254]) by smtp.gmail.com with ESMTPSA id n66sm806354qkd.7.2018.04.26.05.51.32 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 26 Apr 2018 05:51:32 -0700 (PDT) References: <87r2nbubtr.fsf@gmail.com> <20180419143910.GB8699@jasmine.lan> <20180420144145.18837a78@lepiller.eu> <87zi1xxmh8.fsf@netris.org> <87r2n9xhbq.fsf@netris.org> <87efj42hke.fsf@netris.org> <8736zjfm0g.fsf@gmail.com> <878t9a8cgp.fsf@fastmail.com> User-agent: mu4e 1.0; emacs 25.3.1 From: George myglc2 Clemmer In-reply-to: <878t9a8cgp.fsf@fastmail.com> Date: Thu, 26 Apr 2018 08:51:31 -0400 Message-ID: <87604e9lm4.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.2 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.8 (/) On 04/26/2018 at 10:54 Marius Bakke writes: > I believe this should be fixed with > 28cae3389146ee575e29c6dfd77987883503568e. Again sorry for the breakage, > and thank you for reporting these issues :-) Hi Marius, Yes that fixed it. No need to be sorry. Many thanks! - George