From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Okamsn via "Bug reports for GNU Emacs, the Swiss army knife of text editors" Newsgroups: gmane.emacs.bugs Subject: bug#67611: [PATCH] Add a Pcase pattern `cl-lambda` equivalent to `cl-destructuring-bind` Date: Sun, 03 Dec 2023 20:33:35 +0000 Message-ID: <277dd49a-e96d-4faf-a22e-aca952354a37@protonmail.com> Reply-To: Okamsn Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="b1_TJ92SD8NGM37oLvDrnzOJ5ksQWEvU5jEnoHfJPwkcjE" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="3338"; mail-complaints-to="usenet@ciao.gmane.io" Cc: Stefan Monnier To: 67611@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Sun Dec 03 21:35:11 2023 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1r9tBF-0000cg-KO for geb-bug-gnu-emacs@m.gmane-mx.org; Sun, 03 Dec 2023 21:35:09 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1r9tAz-0002MW-KH; Sun, 03 Dec 2023 15:34:53 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1r9tAy-0002ML-9J for bug-gnu-emacs@gnu.org; Sun, 03 Dec 2023 15:34:52 -0500 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1r9tAy-0002Gh-0F for bug-gnu-emacs@gnu.org; Sun, 03 Dec 2023 15:34:52 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1r9tB7-0006dl-SR for bug-gnu-emacs@gnu.org; Sun, 03 Dec 2023 15:35:01 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Okamsn Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 03 Dec 2023 20:35:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 67611 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.170163566725476 (code B ref -1); Sun, 03 Dec 2023 20:35:01 +0000 Original-Received: (at submit) by debbugs.gnu.org; 3 Dec 2023 20:34:27 +0000 Original-Received: from localhost ([127.0.0.1]:32832 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1r9tAX-0006cm-Um for submit@debbugs.gnu.org; Sun, 03 Dec 2023 15:34:27 -0500 Original-Received: from lists.gnu.org ([2001:470:142::17]:48282) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1r9tAR-0006cU-Mg for submit@debbugs.gnu.org; Sun, 03 Dec 2023 15:34:24 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1r9tAB-0002Im-U4 for bug-gnu-emacs@gnu.org; Sun, 03 Dec 2023 15:34:03 -0500 Original-Received: from mail-4316.protonmail.ch ([185.70.43.16]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1r9tA7-0002Br-Ie for bug-gnu-emacs@gnu.org; Sun, 03 Dec 2023 15:34:03 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com; s=protonmail3; t=1701635634; x=1701894834; bh=X2WCsbkau0mgG/FEVaIEzsg5CvdsVYkrsXlJq/+EPe8=; h=Date:To:From:Cc:Subject:Message-ID:Feedback-ID:From:To:Cc:Date: Subject:Reply-To:Feedback-ID:Message-ID:BIMI-Selector; b=OoV+beY8BBviqD5GPi+mS4l3ylwSkcFkJzuTC8Io7kk33DxSuzeamd4NVwMXL3jIM y03zRBmg6i+6Am+5vDnZaxdlgk7dMEVw+O/iarH+/LQzAJEIFWoTnOYef4mblKm5FJ 9U6RWs5qkV8+gt6QO5LrcAG6mdeq7gE9rzkZKFq9GXOgKUagWnhY26EIUVzH5u3fko NwME0ySiq4weGNMhs2KVzLgyM8uoZC2qLXdwOPqdxvdIN9hPs+W+wuH2IU3wD7hnGz jt/WvOz/RSLoJ/dG5ZZhx8k9/HTQX8RWwwODzTekpJVRkO+HXRMAQPdsP48yw1HclD RhOyPfXOpjuZg== Feedback-ID: 25935600:user:proton Received-SPF: pass client-ip=185.70.43.16; envelope-from=okamsn@protonmail.com; helo=mail-4316.protonmail.ch X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_MSPIKE_H5=-1, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:275451 Archived-At: This is a multi-part message in MIME format. --b1_TJ92SD8NGM37oLvDrnzOJ5ksQWEvU5jEnoHfJPwkcjE Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hello, The attached patch adds the pattern `cl-lambda` for Pcase, which works=20 like `cl-destructuring-bind`. There are two differences with the lambda=20 lists: 1. It does not support `&environment` 2. Without `&allow-other-keys` or `:allow-other-keys t`, the pattern=20 will fail to match if their are unmatched keys in EXPVAL, but it does=20 not throw an error. The variable that would be bound in the lambda list can be Pcase=20 patterns themselves, with two exceptions: 1. Using a sub-pattern as the cdr of a dotted list, like "(cl-lambda (a=20 . `(,b . ,c))" doesn't work, since the pattern won't always look like a=20 dotted list. 2. For constructs that use a sub-list to provide additional values, such=20 as `&optional`, `&key`, and `&aux`, the sub-pattern only works inside=20 the sub-list. For example, one could do "(cl-lambda (&optional (`(,a=20 ,b))" but not "(cl-lambda (&optional `(,a ,b)))". The pattern is useful when one wants to combine the features of `pcase`=20 and `cl-destructuring-bind`, such combining the optional values with the=20 `pred` or `guard` patterns. Thank you. --b1_TJ92SD8NGM37oLvDrnzOJ5ksQWEvU5jEnoHfJPwkcjE Content-Type: text/x-patch; charset=UTF-8; name=0001-Add-the-Pcase-pattern-cl-lambda-for-matching-lambda-.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=0001-Add-the-Pcase-pattern-cl-lambda-for-matching-lambda-.patch RnJvbSBhMTZiZjFkZWQ1ODdiN2NjOTc0ZGFmYTVmNzI0MjdmM2ExZjZjNWZmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBFYXJsIEh5YXR0IDxva2Ftc25AcHJvdG9ubWFpbC5jb20+CkRh dGU6IFNhdCwgMjUgTm92IDIwMjMgMTM6MDA6MDMgLTA1MDAKU3ViamVjdDogW1BBVENIXSBBZGQg dGhlIFBjYXNlIHBhdHRlcm4gYGNsLWxhbWJkYScgZm9yIG1hdGNoaW5nIGxhbWJkYSBsaXN0LgoK VGhpcyBwYXR0ZXJuIG1hdGNoZXMgZnVuY3Rpb24gYXJndW1lbnQgbGlzdHMgYXMgZGVzY3JpYmVk IGluIHRoZSBJbmZvCm5vZGUgYChjbClBcmd1bWVudCBMaXN0cycuCgoqIGxpc3AvZW1hY3MtbGlz cC9jbC1tYWNzLmVsIChjbC1sYW1iZGEtLXBjYXNlLW1hY3JvZXhwYW5kZXIpCihjbC1sYW1iZGEs IGNsLS1wY2FzZS1sYW1iZGEtbGlzdC1nZXQtdmFyLWdyb3VwcykKKGNsLS1wY2FzZS1jbC1sYW1i ZGEtcG9zaXRpb25hbC1wYXR0ZXJuKQooY2wtLXBjYXNlLWNsLWxhbWJkYS1wbGlzdC1rZXlzKQoo Y2wtLXBjYXNlLWNsLWxhbWJkYS0ma2V5LXBhdHRlcm4pCihjbC0tcGNhc2UtY2wtbGFtYmRhLSZh dXgtcGF0dGVybik6CkFkZCBwYXR0ZXJuIGFuZCBzdXBwb3J0aW5nIGZ1bmN0aW9ucy4KCiogdGVz dC9saXNwL2VtYWNzLWxpc3AvcGNhc2UtdGVzdHMuZWw6CihwY2FzZS10ZXN0cy1jbC1sYW1iZGEt Jndob2xlLXNob3VsZC1lcnJvcikKKHBjYXNlLXRlc3RzLWNsLWxhbWJkYS0md2hvbGUpCihwY2Fz ZS10ZXN0cy1jbC1sYW1iZGEtcG9zLCBwY2FzZS10ZXN0cy1jbC1sYW1iZGEtcG9zLXN1Yi1wYXR0 ZXJucykKKHBjYXNlLXRlc3RzLWNsLWxhbWJkYS0mb3B0aW9uYWwtc2hvdWxkLWVycm9yKQoocGNh c2UtdGVzdHMtY2wtbGFtYmRhLSZvcHRpb25hbCkKKHBjYXNlLXRlc3RzLWNsLWxhbWJkYS0mb3B0 aW9uYWwtc3ViLXBhdHRlcm5zKQoocGNhc2UtdGVzdHMtY2wtbGFtYmRhLSZyZXN0LXNob3VsZC1l cnJvcikKKHBjYXNlLXRlc3RzLWNsLWxhbWJkYS0mcmVzdC1ub25saXN0LWNkcikKKHBjYXNlLXRl c3RzLWNsLWxhbWJkYS0mcmVzdC13aXRoLSZ3aG9sZSkKKHBjYXNlLXRlc3RzLWNsLWxhbWJkYS0m cmVzdC1vbmx5KQoocGNhc2UtdGVzdHMtY2wtbGFtYmRhLSZyZXN0LWFmdGVyLSZvcHRpb25hbCkK KHBjYXNlLXRlc3RzLWNsLWxhbWJkYS0mcmVzdC1zdWItcGF0dGVybnMpCihwY2FzZS10ZXN0cy1j bC1sYW1iZGEtJmtleS1zaG91bGQtZXJyb3IpCihwY2FzZS10ZXN0cy1jbC1sYW1iZGEtJmtleS1l eGFjdCkKKHBjYXNlLXRlc3RzLWNsLWxhbWJkYS0ma2V5LXBlcm1pc3NpdmUpCihwY2FzZS10ZXN0 cy1jbC1sYW1iZGEtJmtleS1ub3QtZmlyc3QpCihwY2FzZS10ZXN0cy1jbC1sYW1iZGEtJmtleS1m dWxsLWZvcm0pCihwY2FzZS10ZXN0cy1jbC1sYW1iZGEtJmtleS1zdWItcGF0dGVybnMpCihwY2Fz ZS10ZXN0cy1jbC1sYW1iZGEtJmF1eC1zaG91bGQtZXJyb3IpCihwY2FzZS10ZXN0cy1jbC1sYW1i ZGEtJmF1eCkKKHBjYXNlLXRlc3RzLWNsLWxhbWJkYS0mYXV4LXN1Yi1wYXR0ZXJucykKKHBjYXNl LXRlc3RzLWNsLWxhbWJkYS1hbGwpOgpBZGQgdGVzdHMuCi0tLQogbGlzcC9lbWFjcy1saXNwL2Ns LW1hY3MuZWwgICAgICAgICAgfCAzMjUgKysrKysrKysrKysrKysrKysrCiB0ZXN0L2xpc3AvZW1h Y3MtbGlzcC9wY2FzZS10ZXN0cy5lbCB8IDUxNSArKysrKysrKysrKysrKysrKysrKysrKysrKysr CiAyIGZpbGVzIGNoYW5nZWQsIDg0MCBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvbGlzcC9l bWFjcy1saXNwL2NsLW1hY3MuZWwgYi9saXNwL2VtYWNzLWxpc3AvY2wtbWFjcy5lbAppbmRleCA3 YzIwN2QzNzJmYy4uMDBjMTBmNjQ1OGYgMTAwNjQ0Ci0tLSBhL2xpc3AvZW1hY3MtbGlzcC9jbC1t YWNzLmVsCisrKyBiL2xpc3AvZW1hY3MtbGlzcC9jbC1tYWNzLmVsCkBAIC0zODI1LDYgKzM4MjUs MzMxIEBAIGNsLXR5cGUKIFRZUEUgaXMgYSB0eXBlIGRlc2NyaXB0b3IgYXMgYWNjZXB0ZWQgYnkg YGNsLXR5cGVwJywgd2hpY2ggc2VlLiIKICAgYChwcmVkIChwY2FzZS0tZmxpcCBjbC10eXBlcCAn LHR5cGUpKSkKIAorOzs7IFBjYXNlIGxhbWJkYS1saXN0IHBhdHRlcm4KKworOzsgVGhpcyBwYXR0 ZXJuIGlzIGxpa2UgYGNsLWRlc3RydWN0dXJpbmctYmluZCcsIGJ1dCB3aXRoIGBwY2FzZScuICBX ZQorOzsgY2FuJ3QgdXNlIGBjbC0tZG8tYXJnbGlzdCcgZm9yIHRoaXMsIGJlY2F1c2UgYGNsLS1k by1hcmdsaXN0JyB1c2VzCis7OyBgcG9wJyB0byBtb2RpZnkgZWFybGllciB2YXJpYWJsZXMgd2hp bGUgc2V0dGluZyBsYXRlciBvbmVzLCB3aGljaAorOzsgZG9lc24ndCBzZWVtIHRvIHdvcmsgd2l0 aCBgcGNhc2UnLgorCisoZGVmY29uc3QgY2wtLXBjYXNlLWxhbWJkYS1saXN0LWNvbnN0cnVjdHMK KyAgJygmd2hvbGUgJm9wdGlvbmFsICZyZXN0ICZrZXkgJmFsbG93LW90aGVyLWtleXMgJmF1eCkK KyAgIlN5bWJvbHMgdGhhdCBjaGFuZ2UgaG93IHRoZSBmb2xsb3dpbmcgZWxlbWVudHMgYXJlIHVu ZGVyc3Rvb2QuIikKKworKGRlZmluZS1lcnJvciAnY2wtLXBjYXNlLWxhbWJkYS1saXN0LWJhZC1s YW1iZGEtbGlzdAorICAgICAgICAgICAgICAiRXJyb3IgaW4gYGNsLWxhbWJkYScgcGF0dGVybi4i KQorCisoZGVmdW4gY2wtLXBjYXNlLWNsLWxhbWJkYS12YXItZ3JvdXBzIChsYW1iZGEtbGlzdCkK KyAgIlJldHVybiB0aGUgYWxpc3Qgb2YgdmFyaWFibGUgZ3JvdXBzIGluIExBTUJEQS1MSVNULgor CitMaXN0cyBhcmUgb2YgdGhlIGZvcm0KK2AoWyZ3aG9sZSBXSE9MRS1WQVJdIFtQT1MtVkFSU10g WyZvcHRpb25hbCBPUFQtVkFSU10gWyZyZXN0IFJFU1QtVkFSXQorWyZrZXkgS0VZLVZBUlNdIFsm YXV4IEFVWC1WQVJTXSknLiIKKyAgKGxldCAoKHdob2xlLXZhcikgKHByb2Nlc3Npbmctd2hvbGUp CisgICAgICAgIChwb3MtdmFyKQorICAgICAgICAob3B0LXZhcikgKHByb2Nlc3Npbmctb3B0cykK KyAgICAgICAgKHJlc3QtdmFyKSAocHJvY2Vzc2luZy1yZXN0KSAoZG90dGVkLXJlc3QtdmFyKQor ICAgICAgICAoa2V5LXZhcikgKHByb2Nlc3Npbmcta2V5cykgKGFsbG93LW90aGVyLWtleXMpCisg ICAgICAgIChhdXgtdmFyKSAocHJvY2Vzc2luZy1hdXhzKQorICAgICAgICAocmVtYWluaW5nLWxp c3QgKGNsLWNvcHktbGlzdCBsYW1iZGEtbGlzdCkpKQorCisgICAgKHdoZW4gKG5vdCAocHJvcGVy LWxpc3QtcCByZW1haW5pbmctbGlzdCkpCisgICAgICAoY2wtc2hpZnRmIGRvdHRlZC1yZXN0LXZh cgorICAgICAgICAgICAgICAgICAoY2RyIChsYXN0IHJlbWFpbmluZy1saXN0KSkKKyAgICAgICAg ICAgICAgICAgbmlsKSkKKworICAgIChjbC1mbGV0ICgobWlzc2luZy1hZnRlciAoY2RyKSAob3Ig KG51bGwgY2RyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lbXEg KGNhciBjZHIpIGNsLS1wY2FzZS1sYW1iZGEtbGlzdC1jb25zdHJ1Y3RzKSkpCisgICAgICAgICAg ICAgIChzdG9wLXByb2Nlc3NpbmcgKCkgKHNldHEgcHJvY2Vzc2luZy13aG9sZSBuaWwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzaW5nLW9wdHMgbmlsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2luZy1yZXN0IG5p bAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3Npbmcta2V5 cyBuaWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzaW5n LWF1eHMgbmlsKSkpCisgICAgICAoY2wtbG9vcAorICAgICAgIGZvciAoZmlyc3QgLiByZXN0KSBv biBsYW1iZGEtbGlzdAorICAgICAgIGRvCisgICAgICAgKHBjYXNlIGZpcnN0CisgICAgICAgICAo JyZ3aG9sZQorICAgICAgICAgIChpZiAob3IgKG1pc3NpbmctYWZ0ZXIgcmVzdCkKKyAgICAgICAg ICAgICAgICAgIHdob2xlLXZhciBwb3MtdmFyIG9wdC12YXIKKyAgICAgICAgICAgICAgICAgIHJl c3QtdmFyIGtleS12YXIgYWxsb3ctb3RoZXIta2V5cyBhdXgtdmFyKQorICAgICAgICAgICAgICAo c2lnbmFsICdjbC0tcGNhc2UtbGFtYmRhLWxpc3QtYmFkLWxhbWJkYS1saXN0IChsaXN0IGxhbWJk YS1saXN0KSkKKyAgICAgICAgICAgIChzdG9wLXByb2Nlc3NpbmcpCisgICAgICAgICAgICAoc2V0 cSBwcm9jZXNzaW5nLXdob2xlIHQpKSkKKworICAgICAgICAgKCcmb3B0aW9uYWwKKyAgICAgICAg ICAoaWYgKG9yIChtaXNzaW5nLWFmdGVyIHJlc3QpCisgICAgICAgICAgICAgICAgICBvcHQtdmFy IHJlc3QtdmFyIGtleS12YXIgYWxsb3ctb3RoZXIta2V5cyBhdXgtdmFyKQorICAgICAgICAgICAg ICAoc2lnbmFsICdjbC0tcGNhc2UtbGFtYmRhLWxpc3QtYmFkLWxhbWJkYS1saXN0CisgICAgICAg ICAgICAgICAgICAgICAgKGxpc3QgbGFtYmRhLWxpc3QpKQorICAgICAgICAgICAgKHN0b3AtcHJv Y2Vzc2luZykKKyAgICAgICAgICAgIChzZXRxIHByb2Nlc3Npbmctb3B0cyB0KSkpCisKKyAgICAg ICAgICgob3IgJyZyZXN0ICcmYm9keSkKKyAgICAgICAgICAoaWYgKG9yIChtaXNzaW5nLWFmdGVy IHJlc3QpCisgICAgICAgICAgICAgICAgICByZXN0LXZhciBrZXktdmFyIGFsbG93LW90aGVyLWtl eXMgYXV4LXZhcgorICAgICAgICAgICAgICAgICAgZG90dGVkLXJlc3QtdmFyKQorICAgICAgICAg ICAgICAoc2lnbmFsICdjbC0tcGNhc2UtbGFtYmRhLWxpc3QtYmFkLWxhbWJkYS1saXN0CisgICAg ICAgICAgICAgICAgICAgICAgKGxpc3QgbGFtYmRhLWxpc3QpKQorICAgICAgICAgICAgKHN0b3At cHJvY2Vzc2luZykKKyAgICAgICAgICAgIChzZXRxIHByb2Nlc3NpbmctcmVzdCB0KSkpCisKKyAg ICAgICAgICgnJmtleQorICAgICAgICAgIChpZiAob3IgKG1pc3NpbmctYWZ0ZXIgcmVzdCkKKyAg ICAgICAgICAgICAgICAgIGtleS12YXIgYWxsb3ctb3RoZXIta2V5cyBhdXgtdmFyCisgICAgICAg ICAgICAgICAgICBkb3R0ZWQtcmVzdC12YXIpCisgICAgICAgICAgICAgIChzaWduYWwgJ2NsLS1w Y2FzZS1sYW1iZGEtbGlzdC1iYWQtbGFtYmRhLWxpc3QKKyAgICAgICAgICAgICAgICAgICAgICAo bGlzdCBsYW1iZGEtbGlzdCkpCisgICAgICAgICAgICAoc3RvcC1wcm9jZXNzaW5nKQorICAgICAg ICAgICAgKHNldHEgcHJvY2Vzc2luZy1rZXlzIHQpKSkKKworICAgICAgICAgKCcmYWxsb3ctb3Ro ZXIta2V5cworICAgICAgICAgIChpZiAob3IgKG5vdCBwcm9jZXNzaW5nLWtleXMpCisgICAgICAg ICAgICAgICAgICBhbGxvdy1vdGhlci1rZXlzCisgICAgICAgICAgICAgICAgICBkb3R0ZWQtcmVz dC12YXIpCisgICAgICAgICAgICAgIChzaWduYWwgJ2NsLS1wY2FzZS1sYW1iZGEtbGlzdC1iYWQt bGFtYmRhLWxpc3QKKyAgICAgICAgICAgICAgICAgICAgICAobGlzdCBsYW1iZGEtbGlzdCkpCisg ICAgICAgICAgICAoc3RvcC1wcm9jZXNzaW5nKQorICAgICAgICAgICAgKHNldHEgYWxsb3ctb3Ro ZXIta2V5cyB0KSkpCisKKyAgICAgICAgICgnJmF1eAorICAgICAgICAgIChpZiAob3IgKG1pc3Np bmctYWZ0ZXIgcmVzdCkKKyAgICAgICAgICAgICAgICAgIGF1eC12YXIKKyAgICAgICAgICAgICAg ICAgIGRvdHRlZC1yZXN0LXZhcikKKyAgICAgICAgICAgICAgKHNpZ25hbCAnY2wtLXBjYXNlLWxh bWJkYS1saXN0LWJhZC1sYW1iZGEtbGlzdAorICAgICAgICAgICAgICAgICAgICAgIChsaXN0IGxh bWJkYS1saXN0KSkKKyAgICAgICAgICAgIChzdG9wLXByb2Nlc3NpbmcpCisgICAgICAgICAgICAo c2V0cSBwcm9jZXNzaW5nLWF1eHMgdCkpKQorCisgICAgICAgICAoKGd1YXJkIHByb2Nlc3Npbmct d2hvbGUpCisgICAgICAgICAgKHNldHEgd2hvbGUtdmFyIGZpcnN0CisgICAgICAgICAgICAgICAg cHJvY2Vzc2luZy13aG9sZSBuaWwpKQorCisgICAgICAgICAoKGd1YXJkIHByb2Nlc3NpbmctcmVz dCkKKyAgICAgICAgICAoc2V0cSByZXN0LXZhciBmaXJzdAorICAgICAgICAgICAgICAgIHByb2Nl c3NpbmctcmVzdCBuaWwpKQorCisgICAgICAgICAoKGd1YXJkIHByb2Nlc3Npbmctb3B0cykKKyAg ICAgICAgICAocHVzaCBmaXJzdCBvcHQtdmFyKSkKKworICAgICAgICAgKChndWFyZCBwcm9jZXNz aW5nLWtleXMpCisgICAgICAgICAgKHB1c2ggZmlyc3Qga2V5LXZhcikpCisKKyAgICAgICAgICgo Z3VhcmQgcHJvY2Vzc2luZy1hdXhzKQorICAgICAgICAgIChwdXNoIGZpcnN0IGF1eC12YXIpKQor CisgICAgICAgICAoJyZlbnZpcm9ubWVudAorICAgICAgICAgIChzaWduYWwgJ2NsLS1wY2FzZS1s YW1iZGEtbGlzdC1iYWQtbGFtYmRhLWxpc3QKKyAgICAgICAgICAgICAgICAgIChsaXN0IGxhbWJk YS1saXN0KSkpCisKKyAgICAgICAgIChfCisgICAgICAgICAgKGlmIChvciBvcHQtdmFyIHJlc3Qt dmFyIGtleS12YXIgYXV4LXZhcgorICAgICAgICAgICAgICAgICAgYWxsb3ctb3RoZXIta2V5cykK KyAgICAgICAgICAgICAgKHNpZ25hbCAnY2wtLXBjYXNlLWxhbWJkYS1saXN0LWJhZC1sYW1iZGEt bGlzdAorICAgICAgICAgICAgICAgICAgICAgIChsaXN0IGxhbWJkYS1saXN0KSkKKyAgICAgICAg ICAgIChwdXNoIGZpcnN0IHBvcy12YXIpKSkpKSkKKworICAgIGAoKHdob2xlIC4gLHdob2xlLXZh cikKKyAgICAgIChwb3MgLiAsKG5yZXZlcnNlIHBvcy12YXIpKQorICAgICAgKG9wdCAuICwobnJl dmVyc2Ugb3B0LXZhcikpCisgICAgICAocmVzdCAuICwob3IgZG90dGVkLXJlc3QtdmFyIHJlc3Qt dmFyKSkKKyAgICAgIChrZXkgLiAsKG5yZXZlcnNlIGtleS12YXIpKQorICAgICAgKGFsbG93LW90 aGVyLWtleXMgLiAsYWxsb3ctb3RoZXIta2V5cykKKyAgICAgIChhdXggLiAsKG5yZXZlcnNlIGF1 eC12YXIpKSkpKQorCisoZGVmdW4gY2wtLXBjYXNlLWNsLWxhbWJkYS1wb3NpdGlvbmFsLXBhdHRl cm4gKHBvcy12YXJzIG9wdC12YXJzIHJlc3QtdmFyIGtleS12YXJzKQorICAiQnVpbGQgYSBwYXR0 ZXJuIGZvciB0aGUgcG9zaXRpb25hbCwgYCZvcHRpb25hbCcsIGFuZCBgJnJlc3QnIHZhcmlhYmxl cy4KKworUE9TLVZBUlMgaXMgdGhlIGxpc3Qgb2YgdGhlIHBvc2l0aW9uYWwgdmFyaWFibGVzLiAg T1BULVZBUlMgaXMgdGhlIGxpc3Qgb2YKK3RoZSBvcHRpb25hbCB2YXJpYWJsZXMuICBSRVNULVZB UiBpcyB0aGUgYCZyZXN0JyB2YXJpYWJsZS4iCisgIDs7IEEgbW9kaWZpZWQgdmVyc2lvbiBvZiB0 aGUgYmFjay1xdW90ZSBwYXR0ZXJuIHRvIGJldHRlciB3b3JrIHdpdGgKKyAgOzsgb3B0aW9uYWwg dmFsdWVzLgorICAoY29uZAorICAgKHBvcy12YXJzIGAoYW5kIChwcmVkIGNvbnNwKQorICAgICAg ICAgICAgICAgICAgIChhcHAgY2FyLXNhZmUgLChjYXIgcG9zLXZhcnMpKQorICAgICAgICAgICAg ICAgICAgIChhcHAgY2RyLXNhZmUgLChjbC0tcGNhc2UtY2wtbGFtYmRhLXBvc2l0aW9uYWwtcGF0 dGVybgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2RyIHBvcy12YXJzKSBv cHQtdmFycworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0LXZhciBrZXkt dmFycykpKSkKKyAgIChvcHQtdmFycyAocGNhc2UtbGV0ICgoKG9yIGAoLHZhciAsZGVmYXVsdCAs c3VwcGxpZWQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgKCx2YXIgLGRlZmF1bHQp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgKCx2YXIpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB2YXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgIChjYXIgb3B0LXZh cnMpKSkKKyAgICAgICAgICAgICAgIGAoYW5kIChwcmVkIGxpc3RwKQorICAgICAgICAgICAgICAg ICAgICAgKGFwcCBjYXItc2FmZSAob3IgKGFuZCAocHJlZCBudWxsKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsQCh3aGVuIHN1cHBsaWVkIGAoKGxldCAsc3Vw cGxpZWQgbmlsKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICxAKHdoZW4gZGVmYXVsdCBgKChsZXQgLHZhciAsZGVmYXVsdCkpKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICwoaWYgc3VwcGxpZWQKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYChhbmQgKGxldCAsc3VwcGxpZWQgdCkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLHZhcikKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcikpKQorICAgICAgICAgICAg ICAgICAgICAgKGFwcCBjZHItc2FmZSAsKGNsLS1wY2FzZS1jbC1sYW1iZGEtcG9zaXRpb25hbC1w YXR0ZXJuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsIChjZHIgb3B0 LXZhcnMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdC12YXIga2V5 LXZhcnMpKSkpKQorICAgKHJlc3QtdmFyIHJlc3QtdmFyKQorICAgOzsgYHBjYXNlJyBhbGxvd3Mg YCgsYSAsYikgdG8gbWF0Y2ggKDEgMiAzKSwgc28gd2UgbmVlZCB0byBtYWtlCisgICA7OyBzdXJl IHRoZXJlIGFyZW4ndCBtb3JlIHZhbHVlcyBsZWZ0LiAgSG93ZXZlciwgaWYgd2UgYXJlIHVzaW5n CisgICA7OyBgJmtleScsIHRoZW4gd2UgYWxsb3cgbW9yZSB2YWx1ZXMuCisgICAoa2V5LXZhcnMg J18pCisgICAodCAnKHByZWQgbnVsbCkpKSkKKworOzs7IyMjYXV0b2xvYWQKKyhkZWZ1biBjbC0t cGNhc2UtY2wtbGFtYmRhLXBsaXN0LWtleXMgKGxpc3QpCisgICJHZXQgZXZlcnkgb3RoZXIgZWxl bWVudCBpbiBMSVNULCB0byBnZXQgdGhlIGtleXMgaW4gYSBwcm9wZXJ0eSBsaXN0LiIKKyAgKGNs LWxvb3AgZm9yIGtleSBpbiBsaXN0IGJ5ICMnY2RkciBjb2xsZWN0IGtleSkpCisKKyhkZWZ1biBj bC0tcGNhc2UtY2wtbGFtYmRhLSZrZXktcGF0dGVybiAoa2V5LXZhcnMgYWxsb3ctb3RoZXIta2V5 cyBwbGlzdC12YXIpCisgICJCdWlsZCBhIGBwY2FzZScgcGF0dGVybiBmb3IgdGhlIGAma2V5JyB2 YXJpYWJsZXMuCisKK0tFWS1WQVJTIGFyZSB0aGUgZm9ybXMgb2YgdGhlIGtleSB2YXJpYWJsZXMu ICBBTExPVy1PVEhFUi1LRVlTIGlzCit3aGV0aGVyIGAmYWxsb3ctb3RoZXIta2V5cycgd2FzIHVz ZWQuICBQTElTVC1WQVIgaXMgdGhlIHZhcmlhYmxlCitob2xkaW5nIHRoZSBwcm9wZXJ0eSBsaXN0 LiIKKyAgKGxldCogKChzcGVjaWZpZWQta2V5cyBuaWwpCisgICAgICAgICAocGF0LWxpc3QKKyAg ICAgICAgICAoY2wtbG9vcAorICAgICAgICAgICBmb3IgYmluZCBpbiBrZXktdmFycworICAgICAg ICAgICBhcHBlbmQgKHBjYXNlLWxldCogKCgob3IgKG9yIGAoKCxrZXkgLHZhcikgLGRlZmF1bHQg LHN1cHBsaWVkKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAoKCxr ZXkgLHZhcikgLGRlZmF1bHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYCgoLGtleSAsdmFyKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo YW5kIChvciBgKCx2YXIgLGRlZmF1bHQgLHN1cHBsaWVkKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYCgsdmFyICxkZWZhdWx0KQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCgsdmFyKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFuZCAocHJlZCBzeW1ib2xwKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIpKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBTdHJpcCBhIGxlYWRpbmcgdW5kZXJz Y29yZSwgc2luY2UgaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Ozsgb25seSBtZWFucyB0aGF0IHRoaXMgYXJndW1lbnQgaXMKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgOzsgdW51c2VkLCBidXQgc2hvdWxkbid0IGFmZmVjdCB0aGUK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsga2V5J3MgbmFtZSAo YnVnIzEyMzY3KS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxl dCBrZXkgKGludGVybgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGZvcm1hdCAiOiVzIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0ICgobmFtZSAoc3ltYm9sLW5hbWUgdmFyKSkp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGlmIChlcSA/XyAoYXJlZiBuYW1lIDApKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3Vic3RyaW5nIG5hbWUg MSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG5hbWUpKSkpKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJp bmQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0LWtleSAobWFjcm9leHAt Y29uc3QtcCBrZXkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1c2VkLWtleSAo aWYgY29uc3Qta2V5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBrZXkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2Vuc3lt IChmb3JtYXQgInBsaXN0LWtleS0lcyIgdmFyKSkpKSkKKyAgICAgICAgICAgICAgICAgICAgKHVu bGVzcyBhbGxvdy1vdGhlci1rZXlzCisgICAgICAgICAgICAgICAgICAgICAgKHB1c2gga2V5IHNw ZWNpZmllZC1rZXlzKSkKKyAgICAgICAgICAgICAgICAgICAgYCgsQCh1bmxlc3MgKGVxdWFsIHVz ZWQta2V5IGtleSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYCgobGV0ICx1c2VkLWtleSAs a2V5KSkpCisgICAgICAgICAgICAgICAgICAgICAgLEAoY29uZAorICAgICAgICAgICAgICAgICAg ICAgICAgIChzdXBwbGllZAorICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0ICgoa2V5LWZv dW5kIChnZW5zeW0gImtleS1mb3VuZCIpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBg KChsZXQgLGtleS1mb3VuZCAocGxpc3QtbWVtYmVyICxwbGlzdC12YXIgLHVzZWQta2V5CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj J2VxdWFsKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvciAoYW5kIChndWFyZCAs a2V5LWZvdW5kKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAs dmFyIChjYWRyICxrZXktZm91bmQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGxldCAsc3VwcGxpZWQgdCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGFuZCAobGV0ICx2YXIgLGRlZmF1bHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAobGV0ICxzdXBwbGllZCBuaWwpKSkpKSkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAoZGVmYXVsdAorICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0ICgoa2V5LWZvdW5k IChnZW5zeW0gImtleS1mb3VuZCIpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBgKChs ZXQgLHZhcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYtbGV0ICgoLGtleS1m b3VuZCAocGxpc3QtbWVtYmVyICxwbGlzdC12YXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsdXNlZC1rZXkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAjJ2VxdWFsKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2wt c2Vjb25kICxrZXktZm91bmQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLGRl ZmF1bHQpKSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICh0CisgICAgICAgICAgICAgICAg ICAgICAgICAgIGAoKGxldCAsdmFyICAocGxpc3QtZ2V0ICxwbGlzdC12YXIgLHVzZWQta2V5ICMn ZXF1YWwpKSkpKSkpKSkpCisgICAgYChhbmQgLEAodW5sZXNzIGFsbG93LW90aGVyLWtleXMKKyAg ICAgICAgICAgICAgYCgoZ3VhcmQgKG9yIChudWxsIChjbC1zZXQtZGlmZmVyZW5jZSAoY2wtLXBj YXNlLWNsLWxhbWJkYS1wbGlzdC1rZXlzICxwbGlzdC12YXIpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpc3QgLEBzcGVjaWZpZWQta2V5cykK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6dGVz dCAjJ2VxdWFsKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChwbGlzdC1nZXQgLHBsaXN0 LXZhciA6YWxsb3ctb3RoZXIta2V5cykpKSkpCisgICAgICAgICAgLEBwYXQtbGlzdCkpKQorCiso ZGVmdW4gY2wtLXBjYXNlLWNsLWxhbWJkYS0mYXV4LXBhdHRlcm4gKGF1eC12YXJzKQorICAiQnVp bGQgYHBjYXNlJyBwYXR0ZXJuIGZvciBgJmF1eCcgdmFyaWFibGVzLgorCitBVVgtVkFSUyBpcyB0 aGUgbGlzdCBvZiBiaW5kaW5ncy4iCisgIGAoYW5kICxAKGNsLWxvb3AgZm9yIGJpbmQgaW4gYXV4 LXZhcnMKKyAgICAgICAgICAgICAgICAgICBjb2xsZWN0IChwY2FzZS1sZXQgKCgob3IgYCgsdmFy ICx2YWwpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAoLHZh cikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmQpKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBgKGxldCAsdmFyICx2YWwpKSkpKQorCis7OzsjIyNhdXRvbG9hZAor KHBjYXNlLWRlZm1hY3JvIGNsLWxhbWJkYSAobGFtYmRhLWxpc3QpCisgICJNYXRjaCBhIENMIGxh bWJkYSBsaXN0LiAgU2VlIHRoZSBJbmZvIG5vZGUgYChjbClBcmd1bWVudCBMaXN0cycuCisKK1Ro aXMgcGF0dGVybiBkb2VzIG5vdCBzdXBwb3J0IGAmZW52aXJvbm1lbnQnLgorCitgJmtleScgd2ls bCBmYWlsIHRvIG1hdGNoIGlmIHRoZXJlIGFyZSBtb3JlIGtleXMgaW4gdGhlIHBsaXN0Cit0aGVu IHNwZWNpZmllZCwgdW5sZXNzIGAmYWxsb3ctb3RoZXIta2V5cycgaXMgZ2l2ZW4gb3IgdW5sZXNz IHRoZQorcGxpc3QgYXNzb2NpYXRlcyB0aGUga2V5IGA6YWxsb3ctb3RoZXIta2V5cycgd2l0aCBh IG5vbi1uaWwKK3ZhbHVlLiAgVW5saWtlIGBjbC1kZXN0cnVjdHVyaW5nLWJpbmQnLCB0aGlzIHBh dHRlcm4gZG9lcyBub3QKK3NpZ25hbCBhbiBlcnJvciBpZiB0aGVyZSBhcmUgdW5tYXRjaGVkIGtl eXMgaW4gdGhlIHBsaXN0LgorCitVbmxpa2UgdGhlIGJhY2stcXVvdGUgcGF0dGVybiwgdGhlIHBh dHRlcm4gd2lsbCBmYWlsIHRvIG1hdGNoIGlmIHRoZQorbm9uLW9wdGlvbmFsIHBhcnQgb2YgTEFN QkRBLUxJU1QgaXMgc2hvcnRlciB0aGFuIEVYUFZBTC4KKworRm9yIHRoaXMgYHBjYXNlJyBwYXR0 ZXJuLCB0aGUgdmFyaWFibGVzIGluIExBTUJEQS1MSVNUIGNhbgordGhlbXNlbHZlcyBiZSBgcGNh c2UnIHBhdHRlcm5zLCBpbnN0ZWFkIG9mIGp1c3Qgc3ltYm9scyBhcyBpbiBhCitub3JtYWwgQ0wg bGFtYmRhIGxpc3QuICBIb3dldmVyLCBsYW1iZGEtbGlzdCBjb25zdHJ1Y3RzIGxpa2UKK2Amb3B0 aW9uYWwnLCBgJmtleScsIGFuZCBgJmF1eCcgdXNlIHN1Yi1saXN0cyB0byBzcGVjaWZ5IGRlZmF1 bHQKK3ZhbHVlcyBhbmQgb3RoZXIgZmVhdHVyZXMuICBGb3IgZXhhbXBsZSwKKworICAgIChjbC1s YW1iZGEgKCZvcHRpb25hbCAob3B0MSBkZWZhdWx0MSBvcHQxLXN1cHBsaWVkKSkpCisKK1RoZXJl Zm9yZSwgdG8gYXZvaWQgYW1iaWd1aXR5LCB0aGUgdXNlIG9mIHN1Yi1wYXR0ZXJucyBjYW4gb25s eQorYmUgZG9uZSB3aXRoaW4gdGhlIHN1Yi1saXN0IGZvciB0aG9zZSBjb25zdHJ1Y3RzLiAgRm9y IGV4YW1wbGUsCisKKyAgICAoY2wtbGFtYmRhICgmb3B0aW9uYWwgKChhbmQgb3B0MSAoZ3VhcmQg KGxpc3RwIG9wdDEpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pbCkpKQorCitGb3Ig c2ltaWxhciByZWFzb25zLCB0aGUgY2RyIG9mIGEgZG90dGVkIGxpc3QgKGFzIG9wcG9zZWQgdG8g dGhlCitlbGVtZW50IGZvbGxvd2luZyBgJnJlc3QnKSBmb3IgdGhlIHJlbWFpbmRlciBvZiBhIGxp c3QgY2Fubm90IGJlCithIHN1Yi1wYXR0ZXJuLiIKKyAgKGxldCogKChncm91cHMgKGNsLS1wY2Fz ZS1jbC1sYW1iZGEtdmFyLWdyb3VwcyBsYW1iZGEtbGlzdCkpCisgICAgICAgICAod2hvbGUtdmFy IChhbGlzdC1nZXQgJ3dob2xlIGdyb3VwcykpCisgICAgICAgICAocG9zLXZhcnMgKGFsaXN0LWdl dCAncG9zIGdyb3VwcykpCisgICAgICAgICAob3B0LXZhcnMgKGFsaXN0LWdldCAnb3B0IGdyb3Vw cykpCisgICAgICAgICAocmVzdC12YXIgKGFsaXN0LWdldCAncmVzdCBncm91cHMpKQorICAgICAg ICAgKGtleS12YXJzIChhbGlzdC1nZXQgJ2tleSBncm91cHMpKQorICAgICAgICAgKGFsbG93LW90 aGVyLWtleXMgKGFsaXN0LWdldCAnYWxsb3ctb3RoZXIta2V5cyBncm91cHMpKQorICAgICAgICAg KGF1eC12YXJzIChhbGlzdC1nZXQgJ2F1eCBncm91cHMpKSkKKyAgICAocmVtcSBuaWwKKyAgICAg ICAgICBgKGFuZCAocHJlZCBsaXN0cCkKKyAgICAgICAgICAgICAgICAsKHdoZW4gd2hvbGUtdmFy CisgICAgICAgICAgICAgICAgICAgd2hvbGUtdmFyKQorICAgICAgICAgICAgICAgICwod2hlbiAo b3IgcG9zLXZhcnMgb3B0LXZhcnMgcmVzdC12YXIpCisgICAgICAgICAgICAgICAgICAgKGNsLS1w Y2FzZS1jbC1sYW1iZGEtcG9zaXRpb25hbC1wYXR0ZXJuCisgICAgICAgICAgICAgICAgICAgIHBv cy12YXJzIG9wdC12YXJzCisgICAgICAgICAgICAgICAgICAgIHJlc3QtdmFyIGtleS12YXJzKSkK KyAgICAgICAgICAgICAgICAsQCh3aGVuIGtleS12YXJzCisgICAgICAgICAgICAgICAgICAgIChs ZXQgKChwbGlzdC12YXIgKGdlbnN5bSAibWF5YmUtcGxpc3QiKSkpCisgICAgICAgICAgICAgICAg ICAgICAgKGNvbmQKKyAgICAgICAgICAgICAgICAgICAgICAgKHJlc3QtdmFyCisgICAgICAgICAg ICAgICAgICAgICAgICAobGlzdCAoY2wtLXBjYXNlLWNsLWxhbWJkYS0ma2V5LXBhdHRlcm4KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXktdmFycyBhbGxvdy1vdGhlci1rZXlzCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdC12YXIpKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgKChvciBwb3MtdmFycyBvcHQtdmFycykKKyAgICAgICAgICAgICAgICAgICAgICAg IChpZiB3aG9sZS12YXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBgKChsZXQgLHBsaXN0 LXZhciAobnRoY2RyICwoKyAobGVuZ3RoIHBvcy12YXJzKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZW5ndGggb3B0LXZhcnMpKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLHdo b2xlLXZhcikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsKGNsLS1wY2FzZS1jbC1s YW1iZGEtJmtleS1wYXR0ZXJuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleS12 YXJzIGFsbG93LW90aGVyLWtleXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxp c3QtdmFyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYCgoYXBwIChudGhjZHIgLCgrIChs ZW5ndGggcG9zLXZhcnMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAobGVuZ3RoIG9wdC12YXJzKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAscGxpc3QtdmFyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICwoY2wtLXBjYXNlLWNs LWxhbWJkYS0ma2V5LXBhdHRlcm4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleS12 YXJzIGFsbG93LW90aGVyLWtleXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsaXN0 LXZhcikpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgKHQKKyAgICAgICAgICAgICAgICAgICAg ICAgIGAoKGFuZCAscGxpc3QtdmFyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLChj bC0tcGNhc2UtY2wtbGFtYmRhLSZrZXktcGF0dGVybgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAga2V5LXZhcnMgYWxsb3ctb3RoZXIta2V5cworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcGxpc3QtdmFyKSkpKSkpKQorICAgICAgICAgICAgICAgICwod2hlbiBhdXgt dmFycworICAgICAgICAgICAgICAgICAgIChjbC0tcGNhc2UtY2wtbGFtYmRhLSZhdXgtcGF0dGVy biBhdXgtdmFycykpKSkpKQorCiA7OyBMb2NhbCB2YXJpYWJsZXM6CiA7OyBnZW5lcmF0ZWQtYXV0 b2xvYWQtZmlsZTogImNsLWxvYWRkZWZzLmVsIgogOzsgRW5kOgpkaWZmIC0tZ2l0IGEvdGVzdC9s aXNwL2VtYWNzLWxpc3AvcGNhc2UtdGVzdHMuZWwgYi90ZXN0L2xpc3AvZW1hY3MtbGlzcC9wY2Fz ZS10ZXN0cy5lbAppbmRleCA3OTllOGQzNjY0Ny4uOWMzMjI1OWU5NTMgMTAwNjQ0Ci0tLSBhL3Rl c3QvbGlzcC9lbWFjcy1saXNwL3BjYXNlLXRlc3RzLmVsCisrKyBiL3Rlc3QvbGlzcC9lbWFjcy1s aXNwL3BjYXNlLXRlc3RzLmVsCkBAIC0xNjAsNCArMTYwLDUxOSBAQCBwY2FzZS10ZXN0cy1zZXRx CiAgIChzaG91bGQtZXJyb3IgKHBjYXNlLXNldHEgYSkKICAgICAgICAgICAgICAgICA6dHlwZSAn KHdyb25nLW51bWJlci1vZi1hcmd1bWVudHMpKSkKIAorOzs7IFRlc3RzIGZvciB0aGUgYGNsLWxh bWJkYScgYHBjYXNlJyBwYXR0ZXJuLgorCisoZXJ0LWRlZnRlc3QgcGNhc2UtdGVzdHMtY2wtbGFt YmRhLSZ3aG9sZS1zaG91bGQtZXJyb3IgKCkKKyAgImAmd2hvbGUnIG11c3QgY29tZSBmaXJzdCBp ZiBnaXZlbiwgYW5kIG11c3QgYmUgZm9sbG93ZWQgYnkgYSBwYXR0ZXIuIgorICAoc2hvdWxkLWVy cm9yIChwY2FzZSAobGlzdCAxIDIgMykKKyAgICAgICAgICAgICAgICAgICgoY2wtbGFtYmRhICgm d2hvbGUpKQorICAgICAgICAgICAgICAgICAgIChsaXN0IGEgYiBjKSkpCisgICAgICAgICAgICAg ICAgOnR5cGUgJ2NsLS1wY2FzZS1sYW1iZGEtbGlzdC1iYWQtbGFtYmRhLWxpc3QpCisKKyAgKHNo b3VsZC1lcnJvciAocGNhc2UgKGxpc3QgMSAyIDMpCisgICAgICAgICAgICAgICAgICAoKGNsLWxh bWJkYSAoYSBiICZ3aG9sZSBjKSkKKyAgICAgICAgICAgICAgICAgICAobGlzdCBhIGIgYykpKQor ICAgICAgICAgICAgICAgIDp0eXBlICdjbC0tcGNhc2UtbGFtYmRhLWxpc3QtYmFkLWxhbWJkYS1s aXN0KQorCisgIChzaG91bGQtZXJyb3IgKHBjYXNlIChsaXN0IDEgMiAzKQorICAgICAgICAgICAg ICAgICAgKChjbC1sYW1iZGEgKCZyZXN0IGEgJndob2xlIGMpKQorICAgICAgICAgICAgICAgICAg IChsaXN0IGEgYiBjKSkpCisgICAgICAgICAgICAgICAgOnR5cGUgJ2NsLS1wY2FzZS1sYW1iZGEt bGlzdC1iYWQtbGFtYmRhLWxpc3QpCisKKyAgKHNob3VsZC1lcnJvciAocGNhc2UgKGxpc3QgMSAy IDMpCisgICAgICAgICAgICAgICAgICAoKGNsLWxhbWJkYSAoJmtleSBhICZ3aG9sZSBjKSkKKyAg ICAgICAgICAgICAgICAgICAobGlzdCBhIGIgYykpKQorICAgICAgICAgICAgICAgIDp0eXBlICdj bC0tcGNhc2UtbGFtYmRhLWxpc3QtYmFkLWxhbWJkYS1saXN0KQorCisgIChzaG91bGQtZXJyb3Ig KHBjYXNlIChsaXN0IDEgMiAzKQorICAgICAgICAgICAgICAgICAgKChjbC1sYW1iZGEgKCZhdXgg KGEgMSkgJndob2xlIGMpKQorICAgICAgICAgICAgICAgICAgIChsaXN0IGEgYiBjKSkpCisgICAg ICAgICAgICAgICAgOnR5cGUgJ2NsLS1wY2FzZS1sYW1iZGEtbGlzdC1iYWQtbGFtYmRhLWxpc3Qp CisKKyAgKHNob3VsZC1lcnJvciAocGNhc2UgKGxpc3QgMSAyIDMpCisgICAgICAgICAgICAgICAg ICAoKGNsLWxhbWJkYSAoJm9wdGlvbmFsIChhIDEpICZ3aG9sZSBjKSkKKyAgICAgICAgICAgICAg ICAgICAobGlzdCBhIGIgYykpKQorICAgICAgICAgICAgICAgIDp0eXBlICdjbC0tcGNhc2UtbGFt YmRhLWxpc3QtYmFkLWxhbWJkYS1saXN0KQorCisgIChzaG91bGQtZXJyb3IgKHBjYXNlIChsaXN0 IDEgMiAzKQorICAgICAgICAgICAgICAgICAgKChjbC1sYW1iZGEgKCZ3aG9sZSB3aG9sZTEgJndo b2xlIHdob2xlMikpCisgICAgICAgICAgICAgICAgICAgKGxpc3Qgd2hvbGUxIHdob2xlMikpKQor ICAgICAgICAgICAgICAgIDp0eXBlICdjbC0tcGNhc2UtbGFtYmRhLWxpc3QtYmFkLWxhbWJkYS1s aXN0KSkKKworKGVydC1kZWZ0ZXN0IHBjYXNlLXRlc3RzLWNsLWxhbWJkYS0md2hvbGUgKCkKKyAg ImAmd2hvbGUnIGNhbiBiZSBhIGBwY2FzZScgcGF0dGVybi4iCisgIChzaG91bGQgKGVxdWFsIChs aXN0IChsaXN0IDEgMiAzKSAxIDIgMykKKyAgICAgICAgICAgICAgICAgKHBjYXNlIChsaXN0IDEg MiAzKQorICAgICAgICAgICAgICAgICAgICgoY2wtbGFtYmRhICgmd2hvbGUgd2hvbGUgYSBiIGMp KQorICAgICAgICAgICAgICAgICAgICAobGlzdCB3aG9sZSBhIGIgYykpKSkpCisKKyAgKHNob3Vs ZCAoZXF1YWwgKGxpc3QgMSAyIDMgMSAyIDMpCisgICAgICAgICAgICAgICAgIChwY2FzZSAobGlz dCAxIDIgMykKKyAgICAgICAgICAgICAgICAgICAoKGNsLWxhbWJkYSAoJndob2xlIGAoLGEwICxi MCAsYzApIGEgYiBjKSkKKyAgICAgICAgICAgICAgICAgICAgKGxpc3QgYTAgYjAgYzAgYSBiIGMp KSkpKSkKKworKGVydC1kZWZ0ZXN0IHBjYXNlLXRlc3RzLWNsLWxhbWJkYS1wb3MgKCkKKyAgIlBv c2l0aW9uYWwgdmFyaWFibGVzIG11c3QgbWF0Y2ggdGhlIGxlbmd0aCBvZiBFWFBWQUwuIgorICAo c2hvdWxkIChlcXVhbCAobGlzdCAxIDIgMykKKyAgICAgICAgICAgICAgICAgKHBjYXNlIChsaXN0 IDEgMiAzKQorICAgICAgICAgICAgICAgICAgICgoY2wtbGFtYmRhIChhIGIgYykpCisgICAgICAg ICAgICAgICAgICAgIChsaXN0IGEgYiBjKSkpKSkKKworICAoc2hvdWxkIChlcXVhbCBuaWwKKyAg ICAgICAgICAgICAgICAgKHBjYXNlIChsaXN0IChsaXN0IDEpKQorICAgICAgICAgICAgICAgICAg ICgoY2wtbGFtYmRhIChhIGIpKQorICAgICAgICAgICAgICAgICAgICAobGlzdCBhIGIpKSkpKQor CisgIChzaG91bGQgKGVxdWFsIG5pbAorICAgICAgICAgICAgICAgICAocGNhc2UgKGxpc3QgKGxp c3QgMSAyIDMpKQorICAgICAgICAgICAgICAgICAgICgoY2wtbGFtYmRhIChhIGIpKQorICAgICAg ICAgICAgICAgICAgICAobGlzdCBhIGIpKSkpKSkKKworKGVydC1kZWZ0ZXN0IHBjYXNlLXRlc3Rz LWNsLWxhbWJkYS1wb3Mtc3ViLXBhdHRlcm5zICgpCisgIChzaG91bGQgKGVxdWFsIChsaXN0IDEg MiAzIDQpCisgICAgICAgICAgICAgICAgIChwY2FzZSAobGlzdCAxIDIgKGxpc3QgMyA0KSkKKyAg ICAgICAgICAgICAgICAgICAoKGNsLWxhbWJkYSAoYSBiIChjbC1sYW1iZGEgKGMgZCkpKSkKKyAg ICAgICAgICAgICAgICAgICAgKGxpc3QgYSBiIGMgZCkpKSkpCisKKyAgKHNob3VsZCAoZXF1YWwg KGxpc3QgMSAyKQorICAgICAgICAgICAgICAgICAocGNhc2UgKGxpc3QgKGxpc3QgMSAyKSkKKyAg ICAgICAgICAgICAgICAgICAoKGNsLWxhbWJkYSAoYCgsYSAsYikpKQorICAgICAgICAgICAgICAg ICAgICAobGlzdCBhIGIpKSkpKSkKKworKGVydC1kZWZ0ZXN0IHBjYXNlLXRlc3RzLWNsLWxhbWJk YS0mb3B0aW9uYWwtc2hvdWxkLWVycm9yICgpCisgICJgJm9wdGlvbmFsJyBjYW5ub3QgYmUgdXNl ZCBhZnRlciBgJm9wdGlvbmFsJywgYCZyZXN0JywgYCZrZXknLCBhbmQgYCZhdXgnLiIKKyAgKHNo b3VsZC1lcnJvciAoZXF1YWwgKGxpc3QgMSAyIDMpCisgICAgICAgICAgICAgICAgICAgICAgIChw Y2FzZSAobGlzdCAxIDIgMykKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKGNsLWxhbWJkYSAo JnJlc3QgYSAmb3B0aW9uYWwgYiBjKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpc3Qg YSBiIGMpKSkpCisgICAgICAgICAgICAgICAgOnR5cGUgJ2NsLS1wY2FzZS1sYW1iZGEtbGlzdC1i YWQtbGFtYmRhLWxpc3QpCisKKyAgKHNob3VsZC1lcnJvciAocGNhc2UgKGxpc3QgMSAyIDMpCisg ICAgICAgICAgICAgICAgICAoKGNsLWxhbWJkYSAoJmJvZHkgYSAmb3B0aW9uYWwgYiBjKSkKKyAg ICAgICAgICAgICAgICAgICAobGlzdCBhIGIgYykpKQorICAgICAgICAgICAgICAgIDp0eXBlICdj bC0tcGNhc2UtbGFtYmRhLWxpc3QtYmFkLWxhbWJkYS1saXN0KQorCisgIChzaG91bGQtZXJyb3Ig KHBjYXNlIChsaXN0IDEgMiAzKQorICAgICAgICAgICAgICAgICAgKChjbC1sYW1iZGEgKCZrZXkg YSAmb3B0aW9uYWwgYiBjKSkKKyAgICAgICAgICAgICAgICAgICAobGlzdCBhIGIgYykpKQorICAg ICAgICAgICAgICAgIDp0eXBlICdjbC0tcGNhc2UtbGFtYmRhLWxpc3QtYmFkLWxhbWJkYS1saXN0 KQorCisgIChzaG91bGQtZXJyb3IgKHBjYXNlIChsaXN0IDEgMiAzKQorICAgICAgICAgICAgICAg ICAgKChjbC1sYW1iZGEgKCZhbGxvdy1vdGhlci1rZXlzICZvcHRpb25hbCBiIGMpKQorICAgICAg ICAgICAgICAgICAgIChsaXN0IGEgYiBjKSkpCisgICAgICAgICAgICAgICAgOnR5cGUgJ2NsLS1w Y2FzZS1sYW1iZGEtbGlzdC1iYWQtbGFtYmRhLWxpc3QpCisKKyAgKHNob3VsZC1lcnJvciAocGNh c2UgKGxpc3QgMSAyIDMpCisgICAgICAgICAgICAgICAgICAoKGNsLWxhbWJkYSAoJmF1eCAoYSAx KSAmb3B0aW9uYWwgYiBjKSkKKyAgICAgICAgICAgICAgICAgICAobGlzdCBhIGIgYykpKQorICAg ICAgICAgICAgICAgIDp0eXBlICdjbC0tcGNhc2UtbGFtYmRhLWxpc3QtYmFkLWxhbWJkYS1saXN0 KQorCisgIChzaG91bGQtZXJyb3IgKHBjYXNlIChsaXN0IDEgMiAzKQorICAgICAgICAgICAgICAg ICAgKChjbC1sYW1iZGEgKCZvcHRpb25hbCBhICZvcHRpb25hbCBiIGMpKQorICAgICAgICAgICAg ICAgICAgIChsaXN0IGEgYiBjKSkpCisgICAgICAgICAgICAgICAgOnR5cGUgJ2NsLS1wY2FzZS1s YW1iZGEtbGlzdC1iYWQtbGFtYmRhLWxpc3QpKQorCisoZXJ0LWRlZnRlc3QgcGNhc2UtdGVzdHMt Y2wtbGFtYmRhLSZvcHRpb25hbCAoKQorICAoc2hvdWxkIChlcXVhbCAobGlzdCAxIDIgMykKKyAg ICAgICAgICAgICAgICAgKHBjYXNlIChsaXN0IDEgMiAzKQorICAgICAgICAgICAgICAgICAgICgo Y2wtbGFtYmRhIChhIGIgJm9wdGlvbmFsIGMpKQorICAgICAgICAgICAgICAgICAgICAobGlzdCBh IGIgYykpKSkpCisKKyAgKHNob3VsZCAoZXF1YWwgKGxpc3QgMSAyIG5pbCkKKyAgICAgICAgICAg ICAgICAgKHBjYXNlIChsaXN0IDEgMikKKyAgICAgICAgICAgICAgICAgICAoKGNsLWxhbWJkYSAo YSBiICZvcHRpb25hbCBjKSkKKyAgICAgICAgICAgICAgICAgICAgKGxpc3QgYSBiIGMpKSkpKQor CisgIChzaG91bGQgKGVxdWFsIChsaXN0IDEgMiAxMykKKyAgICAgICAgICAgICAgICAgKHBjYXNl IChsaXN0IDEgMikKKyAgICAgICAgICAgICAgICAgICAoKGNsLWxhbWJkYSAoYSBiICZvcHRpb25h bCAoYyAxMykpKQorICAgICAgICAgICAgICAgICAgICAobGlzdCBhIGIgYykpKSkpCisKKyAgKHNo b3VsZCAoZXF1YWwgKGxpc3QgMSAyIDEzIG5pbCkKKyAgICAgICAgICAgICAgICAgKHBjYXNlIChs aXN0IDEgMikKKyAgICAgICAgICAgICAgICAgICAoKGNsLWxhbWJkYSAoYSBiICZvcHRpb25hbCAo YyAxMyBjLXN1cHBsaWVkKSkpCisgICAgICAgICAgICAgICAgICAgIChsaXN0IGEgYiBjIGMtc3Vw cGxpZWQpKSkpKQorCisgIChzaG91bGQgKGVxdWFsIChsaXN0IDEgMiAzIHQpCisgICAgICAgICAg ICAgICAgIChwY2FzZSAobGlzdCAxIDIgMykKKyAgICAgICAgICAgICAgICAgICAoKGNsLWxhbWJk YSAoYSBiICZvcHRpb25hbCAoYyAxMyBjLXN1cHBsaWVkKSkpCisgICAgICAgICAgICAgICAgICAg IChsaXN0IGEgYiBjIGMtc3VwcGxpZWQpKSkpKSkKKworKGVydC1kZWZ0ZXN0IHBjYXNlLXRlc3Rz LWNsLWxhbWJkYS0mb3B0aW9uYWwtc3ViLXBhdHRlcm5zICgpCisgICJUZXN0IHVzaW5nIHN1Yi1w YXR0ZXJucyBpbiBgY2wtbGFtYmRhJyBwYXR0ZXJuLgorU3ViLXBhdHRlcm5zIG11c3QgYmUgY29u dGFpbmVkIHdpdGhpbiBhIHN1Yi1saXN0LCBzaW5jZSBhIHN1Yi1saXN0CithbHNvIHByb3ZpZGVz IGEgZGVmYXVsdCB2YWx1ZS4iCisgIChzaG91bGQtZXJyb3IgKHBjYXNlIChsaXN0IDEgMiAobGlz dCAzIDQpKQorICAgICAgICAgICAgICAgICAgKChjbC1sYW1iZGEgKGEgYiAmb3B0aW9uYWwgYCgs YyAsZCkpKQorICAgICAgICAgICAgICAgICAgIChsaXN0IGEgYiBjIGQpKSkpCisKKyAgKHNob3Vs ZCAoZXF1YWwgKGxpc3QgMSAyIDMzKQorICAgICAgICAgICAgICAgICAocGNhc2UgKGxpc3QgMSAy KQorICAgICAgICAgICAgICAgICAgICgoY2wtbGFtYmRhIChhIGIgJm9wdGlvbmFsICgoYW5kIG9w dDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo Z3VhcmQgKG51bWJlcnAgb3B0MSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAzMykpKQorICAgICAgICAgICAgICAgICAgICAobGlzdCBhIGIgb3B0MSkp KSkpCisKKyAgKHNob3VsZCAoZXF1YWwgbmlsCisgICAgICAgICAgICAgICAgIChwY2FzZSAobGlz dCAxIDIgJ25vdC1udW0pCisgICAgICAgICAgICAgICAgICAgKChjbC1sYW1iZGEgKGEgYiAmb3B0 aW9uYWwgKChhbmQgb3B0MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChndWFyZCAobnVtYmVycCBvcHQxKSkpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMzKSkpCisgICAgICAgICAgICAgICAgICAgIChs aXN0IGEgYiBvcHQxKSkpKSkKKworICAoc2hvdWxkIChlcXVhbCBuaWwKKyAgICAgICAgICAgICAg ICAgKHBjYXNlIChsaXN0IDEgMiBuaWwpCisgICAgICAgICAgICAgICAgICAgKChjbC1sYW1iZGEg KGEgYiAmb3B0aW9uYWwgKChhbmQgb3B0MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChndWFyZCAobnVtYmVycCBvcHQxKSkpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdub3QtbnVtKSkpCisgICAgICAg ICAgICAgICAgICAgIChsaXN0IGEgYiBvcHQxKSkpKSkKKworICAoc2hvdWxkIChlcXVhbCAobGlz dCAxIDIgMyA0KQorICAgICAgICAgICAgICAgICAocGNhc2UgKGxpc3QgMSAyIChsaXN0IDMgNCkp CisgICAgICAgICAgICAgICAgICAgKChjbC1sYW1iZGEgKGEgYiAmb3B0aW9uYWwgKGAoLGMgLGQp KSkpCisgICAgICAgICAgICAgICAgICAgIChsaXN0IGEgYiBjIGQpKSkpKQorCisgIChzaG91bGQg KGVxdWFsIChsaXN0IDEgMiBuaWwgbmlsKQorICAgICAgICAgICAgICAgICAocGNhc2UgKGxpc3Qg MSAyKQorICAgICAgICAgICAgICAgICAgICgoY2wtbGFtYmRhIChhIGIgJm9wdGlvbmFsIChgKCxj ICxkKSkpKQorICAgICAgICAgICAgICAgICAgICAobGlzdCBhIGIgYyBkKSkpKSkKKworICAoc2hv dWxkIChlcXVhbCAobGlzdCAxIDIgMTMgMTQpCisgICAgICAgICAgICAgICAgIChwY2FzZSAobGlz dCAxIDIpCisgICAgICAgICAgICAgICAgICAgKChjbC1sYW1iZGEgKGEgYiAmb3B0aW9uYWwgKGAo LGMgLGQpIChsaXN0IDEzIDE0KSkpKQorICAgICAgICAgICAgICAgICAgICAobGlzdCBhIGIgYyBk KSkpKSkKKworICAoc2hvdWxkIChlcXVhbCAobGlzdCAxIDIgMTMgMTQpCisgICAgICAgICAgICAg ICAgIChwY2FzZSAobGlzdCAxIDIpCisgICAgICAgICAgICAgICAgICAgKChjbC1sYW1iZGEgKCBh IGIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvcHRpb25hbCAoKGNsLWxhbWJk YSAoYyAmb3B0aW9uYWwgKGQgMTQpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGxpc3QgMTMpKSkpCisgICAgICAgICAgICAgICAgICAgIChsaXN0IGEgYiBj IGQpKSkpKQorCisgIChzaG91bGQgKGVxdWFsIChsaXN0IDEgMiAxMyAxNCBuaWwpCisgICAgICAg ICAgICAgICAgIChwY2FzZSAobGlzdCAxIDIpCisgICAgICAgICAgICAgICAgICAgKChjbC1sYW1i ZGEgKGEgYiAmb3B0aW9uYWwgKGAoLGMgLGQpIChsaXN0IDEzIDE0KSBjZC1zdXBwbGllZCkpKQor ICAgICAgICAgICAgICAgICAgICAobGlzdCBhIGIgYyBkIGNkLXN1cHBsaWVkKSkpKSkKKworICAo c2hvdWxkIChlcXVhbCAobGlzdCAxIDIgMTMgMTQgbmlsIHQgbmlsKQorICAgICAgICAgICAgICAg ICAocGNhc2UgKGxpc3QgMSAyKQorICAgICAgICAgICAgICAgICAgICgoY2wtbGFtYmRhICggYSBi CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3B0aW9uYWwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICgoY2wtbGFtYmRhICgmb3B0aW9uYWwgKGMgMjcgYy1zdWIt c3VwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoZCAxNCBkLXN1Yi1zdXApKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAobGlzdCAxMykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZC1zdXBwbGll ZCkpKQorICAgICAgICAgICAgICAgICAgICAobGlzdCBhIGIgYyBkIGNkLXN1cHBsaWVkIGMtc3Vi LXN1cCBkLXN1Yi1zdXApKSkpKSkKKworKGVydC1kZWZ0ZXN0IHBjYXNlLXRlc3RzLWNsLWxhbWJk YS0mcmVzdC1zaG91bGQtZXJyb3IgKCkKKyAgImAmcmVzdCcgKGAmYm9keScsIGAuJykgY2Fubm90 IGJlIHVzZWQgYWZ0ZXIgYCZyZXN0JywgYCZib2R5JywgYCZrZXknLGFuZCBgJmF1eCcuIgorICAo c2hvdWxkLWVycm9yIChlcXVhbCAobGlzdCAxIDIgMykKKyAgICAgICAgICAgICAgICAgICAgICAg KHBjYXNlIChsaXN0IDEgMiAzKQorICAgICAgICAgICAgICAgICAgICAgICAgICgoY2wtbGFtYmRh ICgmcmVzdCBhICZyZXN0IGIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAobGlzdCBhIGIg YykpKSkKKyAgICAgICAgICAgICAgICA6dHlwZSAnY2wtLXBjYXNlLWxhbWJkYS1saXN0LWJhZC1s YW1iZGEtbGlzdCkKKworICAoc2hvdWxkLWVycm9yIChlcXVhbCAobGlzdCAxIDIgMykKKyAgICAg ICAgICAgICAgICAgICAgICAgKHBjYXNlIChsaXN0IDEgMiAzKQorICAgICAgICAgICAgICAgICAg ICAgICAgICgoY2wtbGFtYmRhICgmYm9keSBhICZib2R5IGIpKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAobGlzdCBhIGIgYykpKSkKKyAgICAgICAgICAgICAgICA6dHlwZSAnY2wtLXBjYXNl LWxhbWJkYS1saXN0LWJhZC1sYW1iZGEtbGlzdCkKKworICAoc2hvdWxkLWVycm9yIChlcXVhbCAo bGlzdCAxIDIgMykKKyAgICAgICAgICAgICAgICAgICAgICAgKHBjYXNlIChsaXN0IDEgMiAzKQor ICAgICAgICAgICAgICAgICAgICAgICAgICgoY2wtbGFtYmRhICgmYm9keSBhIC4gYikpCisgICAg ICAgICAgICAgICAgICAgICAgICAgIChsaXN0IGEgYiBjKSkpKQorICAgICAgICAgICAgICAgIDp0 eXBlICdjbC0tcGNhc2UtbGFtYmRhLWxpc3QtYmFkLWxhbWJkYS1saXN0KQorCisgIChzaG91bGQt ZXJyb3IgKHBjYXNlIChsaXN0IDEgMiAzKQorICAgICAgICAgICAgICAgICAgKChjbC1sYW1iZGEg KCZib2R5IGEgJnJlc3QgYikpCisgICAgICAgICAgICAgICAgICAgKGxpc3QgYSBiIGMpKSkKKyAg ICAgICAgICAgICAgICA6dHlwZSAnY2wtLXBjYXNlLWxhbWJkYS1saXN0LWJhZC1sYW1iZGEtbGlz dCkKKworICAoc2hvdWxkLWVycm9yIChwY2FzZSAobGlzdCAxIDIgMykKKyAgICAgICAgICAgICAg ICAgICgoY2wtbGFtYmRhICgmcmVzdCBhICZib2R5IGIpKQorICAgICAgICAgICAgICAgICAgIChs aXN0IGEgYiBjKSkpCisgICAgICAgICAgICAgICAgOnR5cGUgJ2NsLS1wY2FzZS1sYW1iZGEtbGlz dC1iYWQtbGFtYmRhLWxpc3QpCisKKyAgKHNob3VsZC1lcnJvciAocGNhc2UgKGxpc3QgMSAyIDMp CisgICAgICAgICAgICAgICAgICAoKGNsLWxhbWJkYSAoJmtleSBhICZyZXN0IGIpKQorICAgICAg ICAgICAgICAgICAgIChsaXN0IGEgYiBjKSkpCisgICAgICAgICAgICAgICAgOnR5cGUgJ2NsLS1w Y2FzZS1sYW1iZGEtbGlzdC1iYWQtbGFtYmRhLWxpc3QpCisKKyAgKHNob3VsZC1lcnJvciAocGNh c2UgKGxpc3QgMSAyIDMpCisgICAgICAgICAgICAgICAgICAoKGNsLWxhbWJkYSAoJmtleSBhICZi b2R5IGIpKQorICAgICAgICAgICAgICAgICAgIChsaXN0IGEgYiBjKSkpCisgICAgICAgICAgICAg ICAgOnR5cGUgJ2NsLS1wY2FzZS1sYW1iZGEtbGlzdC1iYWQtbGFtYmRhLWxpc3QpCisKKyAgKHNo b3VsZC1lcnJvciAocGNhc2UgKGxpc3QgMSAyIDMpCisgICAgICAgICAgICAgICAgICAoKGNsLWxh bWJkYSAoJmtleSBhIC4gYikpCisgICAgICAgICAgICAgICAgICAgKGxpc3QgYSBiIGMpKSkKKyAg ICAgICAgICAgICAgICA6dHlwZSAnY2wtLXBjYXNlLWxhbWJkYS1saXN0LWJhZC1sYW1iZGEtbGlz dCkKKworICAoc2hvdWxkLWVycm9yIChwY2FzZSAobGlzdCAxIDIgMykKKyAgICAgICAgICAgICAg ICAgICgoY2wtbGFtYmRhICgmYWxsb3ctb3RoZXIta2V5cyAmcmVzdCBiKSkKKyAgICAgICAgICAg ICAgICAgICAobGlzdCBhIGIgYykpKQorICAgICAgICAgICAgICAgIDp0eXBlICdjbC0tcGNhc2Ut bGFtYmRhLWxpc3QtYmFkLWxhbWJkYS1saXN0KQorCisgIChzaG91bGQtZXJyb3IgKHBjYXNlIChs aXN0IDEgMiAzKQorICAgICAgICAgICAgICAgICAgKChjbC1sYW1iZGEgKCZhbGxvdy1vdGhlci1r ZXlzICZib2R5IGIpKQorICAgICAgICAgICAgICAgICAgIChsaXN0IGEgYiBjKSkpCisgICAgICAg ICAgICAgICAgOnR5cGUgJ2NsLS1wY2FzZS1sYW1iZGEtbGlzdC1iYWQtbGFtYmRhLWxpc3QpCisK KyAgKHNob3VsZC1lcnJvciAocGNhc2UgKGxpc3QgMSAyIDMpCisgICAgICAgICAgICAgICAgICAo KGNsLWxhbWJkYSAoJmFsbG93LW90aGVyLWtleXMgLiBiKSkKKyAgICAgICAgICAgICAgICAgICAo bGlzdCBhIGIgYykpKQorICAgICAgICAgICAgICAgIDp0eXBlICdjbC0tcGNhc2UtbGFtYmRhLWxp c3QtYmFkLWxhbWJkYS1saXN0KQorCisgIChzaG91bGQtZXJyb3IgKHBjYXNlIChsaXN0IDEgMiAz KQorICAgICAgICAgICAgICAgICAgKChjbC1sYW1iZGEgKCZhdXggKGEgMSkgJnJlc3QgYikpCisg ICAgICAgICAgICAgICAgICAgKGxpc3QgYSBiIGMpKSkKKyAgICAgICAgICAgICAgICA6dHlwZSAn Y2wtLXBjYXNlLWxhbWJkYS1saXN0LWJhZC1sYW1iZGEtbGlzdCkKKworICAoc2hvdWxkLWVycm9y IChwY2FzZSAobGlzdCAxIDIgMykKKyAgICAgICAgICAgICAgICAgICgoY2wtbGFtYmRhICgmYXV4 IChhIDEpICZib2R5IGIpKQorICAgICAgICAgICAgICAgICAgIChsaXN0IGEgYiBjKSkpCisgICAg ICAgICAgICAgICAgOnR5cGUgJ2NsLS1wY2FzZS1sYW1iZGEtbGlzdC1iYWQtbGFtYmRhLWxpc3Qp CisKKyAgKHNob3VsZC1lcnJvciAocGNhc2UgKGxpc3QgMSAyIDMpCisgICAgICAgICAgICAgICAg ICAoKGNsLWxhbWJkYSAoJmF1eCAoYSAxKSAuIGIpKQorICAgICAgICAgICAgICAgICAgIChsaXN0 IGEgYiBjKSkpCisgICAgICAgICAgICAgICAgOnR5cGUgJ2NsLS1wY2FzZS1sYW1iZGEtbGlzdC1i YWQtbGFtYmRhLWxpc3QpKQorCisoZXJ0LWRlZnRlc3QgcGNhc2UtdGVzdHMtY2wtbGFtYmRhLSZy ZXN0LW5vbmxpc3QtY2RyICgpCisgIChzaG91bGQgKGVxdWFsIChsaXN0IDEgMikKKyAgICAgICAg ICAgICAgICAgKHBjYXNlIChjb25zIDEgMikKKyAgICAgICAgICAgICAgICAgICAoKGNsLWxhbWJk YSAoYSAmcmVzdCBiKSkKKyAgICAgICAgICAgICAgICAgICAgKGxpc3QgYSBiKSkpKSkKKworICAo c2hvdWxkIChlcXVhbCAobGlzdCAxIDIpCisgICAgICAgICAgICAgICAgIChwY2FzZSAoY29ucyAx IDIpCisgICAgICAgICAgICAgICAgICAgKChjbC1sYW1iZGEgKGEgJmJvZHkgYikpCisgICAgICAg ICAgICAgICAgICAgIChsaXN0IGEgYikpKSkpCisKKyAgKHNob3VsZCAoZXF1YWwgKGxpc3QgMSAy KQorICAgICAgICAgICAgICAgICAocGNhc2UgKGNvbnMgMSAyKQorICAgICAgICAgICAgICAgICAg ICgoY2wtbGFtYmRhIChhIC4gYikpCisgICAgICAgICAgICAgICAgICAgIChsaXN0IGEgYikpKSkp KQorCisoZXJ0LWRlZnRlc3QgcGNhc2UtdGVzdHMtY2wtbGFtYmRhLSZyZXN0LXdpdGgtJndob2xl ICgpCisgIChzaG91bGQgKGVxdWFsIChsaXN0IChjb25zIDEgMikgMSAyKQorICAgICAgICAgICAg ICAgICAocGNhc2UgKGNvbnMgMSAyKQorICAgICAgICAgICAgICAgICAgICgoY2wtbGFtYmRhICgm d2hvbGUgd2hvbGUgYSAmcmVzdCBiKSkKKyAgICAgICAgICAgICAgICAgICAgKGxpc3Qgd2hvbGUg YSBiKSkpKSkKKworICAoc2hvdWxkIChlcXVhbCAobGlzdCAoY29ucyAxIDIpIDEgMikKKyAgICAg ICAgICAgICAgICAgKHBjYXNlIChjb25zIDEgMikKKyAgICAgICAgICAgICAgICAgICAoKGNsLWxh bWJkYSAoJndob2xlIHdob2xlIGEgJmJvZHkgYikpCisgICAgICAgICAgICAgICAgICAgIChsaXN0 IHdob2xlIGEgYikpKSkpCisKKyAgKHNob3VsZCAoZXF1YWwgKGxpc3QgKGNvbnMgMSAyKSAxIDIp CisgICAgICAgICAgICAgICAgIChwY2FzZSAoY29ucyAxIDIpCisgICAgICAgICAgICAgICAgICAg KChjbC1sYW1iZGEgKCZ3aG9sZSB3aG9sZSBhIC4gYikpCisgICAgICAgICAgICAgICAgICAgIChs aXN0IHdob2xlIGEgYikpKSkpKQorCisoZXJ0LWRlZnRlc3QgcGNhc2UtdGVzdHMtY2wtbGFtYmRh LSZyZXN0LW9ubHkgKCkKKyAgIlVzaW5nIG9ubHkgYCZyZXN0JyBzaG91bGQgd29yayBsaWtlIGAm d2hvbGUnLiIKKyAgKHNob3VsZCAoZXF1YWwgKGxpc3QgKGxpc3QgMSAyKSkKKyAgICAgICAgICAg ICAgICAgKHBjYXNlIChsaXN0IDEgMikKKyAgICAgICAgICAgICAgICAgICAoKGNsLWxhbWJkYSAo JnJlc3QgYSkpCisgICAgICAgICAgICAgICAgICAgIChsaXN0IGEpKSkpKQorCisgIChzaG91bGQg KGVxdWFsIChsaXN0IChjb25zIDEgMikpCisgICAgICAgICAgICAgICAgIChwY2FzZSAoY29ucyAx IDIpCisgICAgICAgICAgICAgICAgICAgKChjbC1sYW1iZGEgKCZib2R5IGEpKQorICAgICAgICAg ICAgICAgICAgICAobGlzdCBhKSkpKSkpCisKKyhlcnQtZGVmdGVzdCBwY2FzZS10ZXN0cy1jbC1s YW1iZGEtJnJlc3QtYWZ0ZXItJm9wdGlvbmFsICgpCisgIChzaG91bGQgKGVxdWFsIChsaXN0IDEg MiAzIChsaXN0IDQgNSkpCisgICAgICAgICAgICAgICAgIChwY2FzZSAobGlzdCAxIDIgMyA0IDUp CisgICAgICAgICAgICAgICAgICAgKChjbC1sYW1iZGEgKCZvcHRpb25hbCBhIGIgYyAmcmVzdCBk KSkKKyAgICAgICAgICAgICAgICAgICAgKGxpc3QgYSBiIGMgZCkpKSkpCisKKyAgKHNob3VsZCAo ZXF1YWwgKGxpc3QgMSAyIDMgKGxpc3QgNCA1KSkKKyAgICAgICAgICAgICAgICAgKHBjYXNlIChs aXN0IDEgMiAzIDQgNSkKKyAgICAgICAgICAgICAgICAgICAoKGNsLWxhbWJkYSAoJm9wdGlvbmFs IGEgYiBjICZib2R5IGQpKQorICAgICAgICAgICAgICAgICAgICAobGlzdCBhIGIgYyBkKSkpKSkK KworICAoc2hvdWxkIChlcXVhbCAobGlzdCAxIDIgMyAobGlzdCA0IDUpKQorICAgICAgICAgICAg ICAgICAocGNhc2UgKGxpc3QgMSAyIDMgNCA1KQorICAgICAgICAgICAgICAgICAgICgoY2wtbGFt YmRhICgmb3B0aW9uYWwgYSBiIGMgLiBkKSkKKyAgICAgICAgICAgICAgICAgICAgKGxpc3QgYSBi IGMgZCkpKSkpKQorCisoZXJ0LWRlZnRlc3QgcGNhc2UtdGVzdHMtY2wtbGFtYmRhLSZyZXN0LXN1 Yi1wYXR0ZXJucyAoKQorICA7OyBXZSBjYW4ndCBkbyAoYSAuIGAoLGIgLiAsYykpLCBzbyB3ZSBk b24ndCB0ZXN0IHRoYXQuCisgIChzaG91bGQgKGVxdWFsIChsaXN0IDEgMiAzKQorICAgICAgICAg ICAgICAgICAocGNhc2UgKGxpc3QgMSAyIDMpCisgICAgICAgICAgICAgICAgICAgKChjbC1sYW1i ZGEgKGEgJnJlc3QgKGNsLWxhbWJkYSAoYiBjKSkpKQorICAgICAgICAgICAgICAgICAgICAobGlz dCBhIGIgYykpKSkpCisKKyAgKHNob3VsZCAoZXF1YWwgKGxpc3QgMSAyIDMpCisgICAgICAgICAg ICAgICAgIChwY2FzZSAobGlzdCAxIDIgMykKKyAgICAgICAgICAgICAgICAgICAoKGNsLWxhbWJk YSAoYSAmYm9keSBgKCxiICxjKSkpCisgICAgICAgICAgICAgICAgICAgIChsaXN0IGEgYiBjKSkp KSkpCisKKyhlcnQtZGVmdGVzdCBwY2FzZS10ZXN0cy1jbC1sYW1iZGEtJmtleS1zaG91bGQtZXJy b3IgKCkKKyAgImAma2V5JyBjYW5ub3QgYmUgdXNlZCBhZnRlciBgJmtleScsIGAmYWxsb3ctb3Ro ZXIta2V5cycsIGFuZCBgJmF1eCcuIgorICAoc2hvdWxkLWVycm9yIChwY2FzZSAobGlzdCA6YSAx IDpiIDIpCisgICAgICAgICAgICAgICAgICAoKGNsLWxhbWJkYSAoJmtleSBhICZrZXkgYikpCisg ICAgICAgICAgICAgICAgICAgKGxpc3QgYSBiKSkpCisgICAgICAgICAgICAgICAgOnR5cGUgJ2Ns LS1wY2FzZS1sYW1iZGEtbGlzdC1iYWQtbGFtYmRhLWxpc3QpCisKKyAgKHNob3VsZC1lcnJvciAo cGNhc2UgKGxpc3QgOmEgMSA6YiAyKQorICAgICAgICAgICAgICAgICAgKChjbC1sYW1iZGEgKCZh dXggKGEgMSkgJmtleSBiKSkKKyAgICAgICAgICAgICAgICAgICAobGlzdCBhIGIpKSkKKyAgICAg ICAgICAgICAgICA6dHlwZSAnY2wtLXBjYXNlLWxhbWJkYS1saXN0LWJhZC1sYW1iZGEtbGlzdCkK KworICAoc2hvdWxkLWVycm9yIChwY2FzZSAobGlzdCA6YSAxIDpiIDIpCisgICAgICAgICAgICAg ICAgICAoKGNsLWxhbWJkYSAoJmFsbG93LW90aGVyLWtleXMgJmtleSBiKSkKKyAgICAgICAgICAg ICAgICAgICAobGlzdCBhIGIpKSkKKyAgICAgICAgICAgICAgICA6dHlwZSAnY2wtLXBjYXNlLWxh bWJkYS1saXN0LWJhZC1sYW1iZGEtbGlzdCkpCisKKyhlcnQtZGVmdGVzdCBwY2FzZS10ZXN0cy1j bC1sYW1iZGEtJmtleS1leGFjdCAoKQorICAiYCZrZXknIGRvZXNuJ3QgbWF0Y2ggdW5zcGVjaWZp ZWQga2V5cyB1bmxlc3MgYCZhbGxvdy1vdGhlci1rZXlzJyBvciBgOmFsbG93LW90aGVyLWtleXMn IGlzIGdpdmVuLiIKKyAgKHNob3VsZCAoZXF1YWwgKGxpc3QgMSAyKQorICAgICAgICAgICAgICAg ICAocGNhc2UgKGxpc3QgOmEgMSA6YiAyKQorICAgICAgICAgICAgICAgICAgICgoY2wtbGFtYmRh ICgma2V5IGEgYikpCisgICAgICAgICAgICAgICAgICAgIChsaXN0IGEgYikpKSkpCisKKyAgKHNo b3VsZCAoZXF1YWwgbmlsCisgICAgICAgICAgICAgICAgIChwY2FzZSAobGlzdCA6YSAxIDpiIDIg OmMgMykKKyAgICAgICAgICAgICAgICAgICAoKGNsLWxhbWJkYSAoJmtleSBhIGIpKQorICAgICAg ICAgICAgICAgICAgICAobGlzdCBhIGIpKSkpKQorCisgIChzaG91bGQgKGVxdWFsIChsaXN0IDEg MiBuaWwpCisgICAgICAgICAgICAgICAgIChwY2FzZSAobGlzdCA6YSAxIDpiIDIpCisgICAgICAg ICAgICAgICAgICAgKChjbC1sYW1iZGEgKCZrZXkgYSBiIGMpKQorICAgICAgICAgICAgICAgICAg ICAobGlzdCBhIGIgYykpKSkpKQorCisoZXJ0LWRlZnRlc3QgcGNhc2UtdGVzdHMtY2wtbGFtYmRh LSZrZXktcGVybWlzc2l2ZSAoKQorICAiYCZrZXknIGRvZXNuJ3QgbWF0Y2ggdW5zcGVjaWZpZWQg a2V5cyB1bmxlc3MgYCZhbGxvdy1vdGhlci1rZXlzJyBvciBgOmFsbG93LW90aGVyLWtleXMnIGlz IGdpdmVuLiIKKyAgKHNob3VsZCAoZXF1YWwgKGxpc3QgMSAyKQorICAgICAgICAgICAgICAgICAo cGNhc2UgKGxpc3QgOmEgMSA6YiAyIDpjIDMpCisgICAgICAgICAgICAgICAgICAgKChjbC1sYW1i ZGEgKCZrZXkgYSBiICZhbGxvdy1vdGhlci1rZXlzKSkKKyAgICAgICAgICAgICAgICAgICAgKGxp c3QgYSBiKSkpKSkKKworICAoc2hvdWxkIChlcXVhbCAobGlzdCAxIDIpCisgICAgICAgICAgICAg ICAgIChwY2FzZSAobGlzdCA6YSAxIDpiIDIgOmMgMyA6YWxsb3ctb3RoZXIta2V5cyB0KQorICAg ICAgICAgICAgICAgICAgICgoY2wtbGFtYmRhICgma2V5IGEgYikpCisgICAgICAgICAgICAgICAg ICAgIChsaXN0IGEgYikpKSkpKQorCisoZXJ0LWRlZnRlc3QgcGNhc2UtdGVzdHMtY2wtbGFtYmRh LSZrZXktbm90LWZpcnN0ICgpCisgICJUaGUgcGxpc3Qgc2hvdWxkIGJlIGFmdGVyIHBvc2l0aW9u YWwgdmFsdWVzIGFuZCBlcXVhbCB0byBgJnJlc3QnLiIKKyAgKHNob3VsZCAoZXF1YWwgKGxpc3Qg MSAyIDMgMTEgMjIpCisgICAgICAgICAgICAgICAgIChwY2FzZSAobGlzdCAxIDIgMyA6azEgMTEg OmsyIDIyKQorICAgICAgICAgICAgICAgICAgICgoY2wtbGFtYmRhIChhIGIgYyAma2V5IGsxIGsy KSkKKyAgICAgICAgICAgICAgICAgICAgKGxpc3QgYSBiIGMgazEgazIpKSkpKQorCisgIChzaG91 bGQgKGVxdWFsIChsaXN0IDEgMiAzIChsaXN0IDprMSAxMSA6azIgMjIpIDExIDIyKQorICAgICAg ICAgICAgICAgICAocGNhc2UgKGxpc3QgMSAyIDMgOmsxIDExIDprMiAyMikKKyAgICAgICAgICAg ICAgICAgICAoKGNsLWxhbWJkYSAoYSBiIGMgJnJlc3QgcjEgJmtleSBrMSBrMikpCisgICAgICAg ICAgICAgICAgICAgIChsaXN0IGEgYiBjIHIxIGsxIGsyKSkpKSkpCisKKyhlcnQtZGVmdGVzdCBw Y2FzZS10ZXN0cy1jbC1sYW1iZGEtJmtleS1mdWxsLWZvcm0gKCkKKyAgKHNob3VsZCAoZXF1YWwg KGxpc3QgMSAyKQorICAgICAgICAgICAgICAgICAocGNhc2UgKGxpc3QgOmEgMSA6YiAyKQorICAg ICAgICAgICAgICAgICAgICgoY2wtbGFtYmRhICgma2V5IGEgKGIgMTMpKSkKKyAgICAgICAgICAg ICAgICAgICAgKGxpc3QgYSBiKSkpKSkKKworICAoc2hvdWxkIChlcXVhbCAobGlzdCAxIDEzKQor ICAgICAgICAgICAgICAgICAocGNhc2UgKGxpc3QgOmEgMSkKKyAgICAgICAgICAgICAgICAgICAo KGNsLWxhbWJkYSAoJmtleSBhIChiIDEzKSkpCisgICAgICAgICAgICAgICAgICAgIChsaXN0IGEg YikpKSkpCisKKyAgKHNob3VsZCAoZXF1YWwgKGxpc3QgMSAxMyBuaWwpCisgICAgICAgICAgICAg ICAgIChwY2FzZSAobGlzdCA6YSAxKQorICAgICAgICAgICAgICAgICAgICgoY2wtbGFtYmRhICgm a2V5IGEgKGIgMTMgYi1zdXBwbGllZCkpKQorICAgICAgICAgICAgICAgICAgICAobGlzdCBhIGIg Yi1zdXBwbGllZCkpKSkpCisKKyAgKHNob3VsZCAoZXF1YWwgKGxpc3QgMSAyIHQpCisgICAgICAg ICAgICAgICAgIChwY2FzZSAobGlzdCA6YSAxIDpiIDIpCisgICAgICAgICAgICAgICAgICAgKChj bC1sYW1iZGEgKCZrZXkgYSAoYiAxMyBiLXN1cHBsaWVkKSkpCisgICAgICAgICAgICAgICAgICAg IChsaXN0IGEgYiBiLXN1cHBsaWVkKSkpKSkKKworICAoc2hvdWxkIChlcXVhbCAobGlzdCAxIDIg dCkKKyAgICAgICAgICAgICAgICAgKHBjYXNlIChsaXN0IDphIDEgOmJhdCAyKQorICAgICAgICAg ICAgICAgICAgICgoY2wtbGFtYmRhICgma2V5IGEgKCg6YmF0IGIpIDEzIGItc3VwcGxpZWQpKSkK KyAgICAgICAgICAgICAgICAgICAgKGxpc3QgYSBiIGItc3VwcGxpZWQpKSkpKQorCisgIChzaG91 bGQgKGVxdWFsIChsaXN0IDEgMiB0KQorICAgICAgICAgICAgICAgICAobGV0ICgoa2V5IDpiYXQp KQorICAgICAgICAgICAgICAgICAgIChwY2FzZSAobGlzdCA6YSAxIDpiYXQgMikKKyAgICAgICAg ICAgICAgICAgICAgICgoY2wtbGFtYmRhICgma2V5IGEgKChrZXkgYikgMTMgYi1zdXBwbGllZCkp KQorICAgICAgICAgICAgICAgICAgICAgIChsaXN0IGEgYiBiLXN1cHBsaWVkKSkpKSkpKQorCiso ZXJ0LWRlZnRlc3QgcGNhc2UtdGVzdHMtY2wtbGFtYmRhLSZrZXktc3ViLXBhdHRlcm5zICgpCisg IChzaG91bGQgKGVxdWFsICcoMSAyICg6YyA3NyA6ZSBzaG91bGQtaWdub3JlKSBuaWwgNzcgdCA5 OSBuaWwpCisgICAgICAgICAgICAgICAgIChwY2FzZSAnKDphYiAoMSAyKSkKKyAgICAgICAgICAg ICAgICAgICAoKGNsLWxhbWJkYSAoJmtleQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoKDphYiBgKCxhICxiKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoOmNk IChjbC1sYW1iZGEgKCAmd2hvbGUgY2QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICZrZXkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChjIDg4IGMtc3VwcCkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoOmQgZCkgOTkgZC1zdXBwKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmFsbG93LW90aGVyLWtl eXMpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaXN0IDpjIDc3IDplICdz aG91bGQtaWdub3JlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Qtc3VwcCkp KQorICAgICAgICAgICAgICAgICAgICAobGlzdCBhIGIgY2QgY2Qtc3VwcCBjIGMtc3VwcCBkIGQt c3VwcCkpKSkpCisKKyAgKHNob3VsZCAoZXF1YWwgJyggMSAyICg6YyA3NyA6ZSBzaG91bGQtaWdu b3JlIDphbGxvdy1vdGhlci1rZXlzIHQpIG5pbAorICAgICAgICAgICAgICAgICAgICA3NyB0IDk5 IG5pbCkKKyAgICAgICAgICAgICAgICAgKHBjYXNlICcoOmFiICgxIDIpKQorICAgICAgICAgICAg ICAgICAgICgoY2wtbGFtYmRhICgma2V5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICgoOmFiIGAoLGEgLGIpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCg6Y2Qg KGNsLWxhbWJkYSAoICZ3aG9sZSBjZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJmtleQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGMgODggYy1zdXBwKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKCg6ZCBkKSA5OSBkLXN1cHApKSkpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAobGlzdCA6YyA3NyA6ZSAnc2hvdWxkLWlnbm9yZQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmFsbG93LW90aGVyLWtleXMg dCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNkLXN1cHApKSkKKyAgICAgICAg ICAgICAgICAgICAgKGxpc3QgYSBiIGNkIGNkLXN1cHAgYyBjLXN1cHAgZCBkLXN1cHApKSkpKQor CisgIChzaG91bGQgKGVxdWFsIG5pbAorICAgICAgICAgICAgICAgICAocGNhc2UgJyg6YWIgKDEg MikpCisgICAgICAgICAgICAgICAgICAgKChjbC1sYW1iZGEgKCZrZXkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKCg6YWIgYCgsYSAsYikpKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoKDpjZCAoY2wtbGFtYmRhICggJndob2xlIGNkCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAma2V5CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYyA4OCBjLXN1cHApCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKDpkIGQpIDk5IGQt c3VwcCkpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaXN0IDpjIDc3IDpl ICdzaG91bGQtZmFpbCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNkLXN1cHAp KSkKKyAgICAgICAgICAgICAgICAgICAgKGxpc3QgYSBiIGNkIGNkLXN1cHAgYyBjLXN1cHAgZCBk LXN1cHApKSkpKSkKKworKGVydC1kZWZ0ZXN0IHBjYXNlLXRlc3RzLWNsLWxhbWJkYS0mYXV4LXNo b3VsZC1lcnJvciAoKQorICAiYCZhdXgnIGNhbm5vdCBiZSB1c2VkIGFmdGVyIGAmYXV4Jy4iCisg IChzaG91bGQtZXJyb3IgKHBjYXNlIG5pbAorICAgICAgICAgICAgICAgICAgKChjbC1sYW1iZGEg KCZhdXggYSAmYXV4IGIpKQorICAgICAgICAgICAgICAgICAgIChsaXN0IGEgYikpKQorICAgICAg ICAgICAgICAgIDp0eXBlICdjbC0tcGNhc2UtbGFtYmRhLWxpc3QtYmFkLWxhbWJkYS1saXN0KSkK KworKGVydC1kZWZ0ZXN0IHBjYXNlLXRlc3RzLWNsLWxhbWJkYS0mYXV4ICgpCisgIChzaG91bGQg KGVxdWFsIChsaXN0IDEgMiBuaWwgbmlsKQorICAgICAgICAgICAgICAgICAocGNhc2UgbmlsCisg ICAgICAgICAgICAgICAgICAgKChjbC1sYW1iZGEgKCZhdXggKGEgMSkgKGIgMikgKGMpIGQpKQor ICAgICAgICAgICAgICAgICAgICAobGlzdCBhIGIgYyBkKSkpKSkKKworICAoc2hvdWxkIChlcXVh bCAobGlzdCAwIDEgMiBuaWwgbmlsKQorICAgICAgICAgICAgICAgICAocGNhc2UgKGxpc3QgMCkK KyAgICAgICAgICAgICAgICAgICAoKGNsLWxhbWJkYSAoejAgJmF1eCAoYSAxKSAoYiAyKSAoYykg ZCkpCisgICAgICAgICAgICAgICAgICAgIChsaXN0IHowIGEgYiBjIGQpKSkpKSkKKworKGVydC1k ZWZ0ZXN0IHBjYXNlLXRlc3RzLWNsLWxhbWJkYS0mYXV4LXN1Yi1wYXR0ZXJucyAoKQorICAoc2hv dWxkIChlcXVhbCAobGlzdCAxIDIpCisgICAgICAgICAgICAgICAgIChwY2FzZSBuaWwKKyAgICAg ICAgICAgICAgICAgICAoKGNsLWxhbWJkYSAoJmF1eCAoYCgsYSAsYikgKGxpc3QgMSAyKSkpKQor ICAgICAgICAgICAgICAgICAgICAobGlzdCBhIGIgKSkpKSkpCisKKyhlcnQtZGVmdGVzdCBwY2Fz ZS10ZXN0cy1jbC1sYW1iZGEtYWxsICgpCisgIChzaG91bGQgKGVxdWFsICcoMSAyIDMgNCA1ICg6 azEgMTExIDprMiAyMjIpIDExMSAyMjIgMzMzIDQ0NCkKKyAgICAgICAgICAgICAgICAgKHBjYXNl IChsaXN0IDEgMiAzIDQgNSA6azEgMTExIDprMiAyMjIpCisgICAgICAgICAgICAgICAgICAgKChj bC1sYW1iZGEgKCBhIGIgYworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm9wdGlv bmFsIGQgZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlc3QgcgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJmtleSBrMSBrMgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJmF1eCAoeDEgMzMzKSAoeDIgNDQ0KSkpCisgICAgICAgICAgICAgICAg ICAgIChsaXN0IGEgYiBjIGQgZSByIGsxIGsyIHgxIHgyKSkpKSkpCisKIDs7OyBwY2FzZS10ZXN0 cy5lbCBlbmRzIGhlcmUuCi0tIAoyLjM0LjEKCg== --b1_TJ92SD8NGM37oLvDrnzOJ5ksQWEvU5jEnoHfJPwkcjE--