From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Jens Schmidt via "Bug reports for GNU Emacs, the Swiss army knife of text editors" Newsgroups: gmane.emacs.bugs Subject: bug#63627: Improve plstore.el and fix various issues of it Date: Wed, 30 Aug 2023 21:28:10 +0200 Message-ID: <0101e7f1-970b-297c-836f-e9c0aa5e38a0@vodafonemail.de> References: <2063d5d2-ae9e-020a-3c19-54508ddbabab@vodafonemail.de> <37949bc5-c572-ff98-ebe6-9217ab7067cc@vodafonemail.de> <83cz2gfypg.fsf@gnu.org> Reply-To: Jens Schmidt Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------VJ9st0f80F5OwGp1fgyvbFCx" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="27398"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.14.0 Cc: 63627@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Wed Aug 30 21:29:10 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 1qbQsH-0006tM-O3 for geb-bug-gnu-emacs@m.gmane-mx.org; Wed, 30 Aug 2023 21:29:10 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qbQs8-0002h5-Uk; Wed, 30 Aug 2023 15:29:00 -0400 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 1qbQs5-0002gF-QO for bug-gnu-emacs@gnu.org; Wed, 30 Aug 2023 15:28:58 -0400 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 1qbQs2-0004gI-DC for bug-gnu-emacs@gnu.org; Wed, 30 Aug 2023 15:28:55 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1qbQsA-0003bk-30 for bug-gnu-emacs@gnu.org; Wed, 30 Aug 2023 15:29:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Jens Schmidt Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 30 Aug 2023 19:29:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 63627 X-GNU-PR-Package: emacs Original-Received: via spool by 63627-submit@debbugs.gnu.org id=B63627.169342372613845 (code B ref 63627); Wed, 30 Aug 2023 19:29:02 +0000 Original-Received: (at 63627) by debbugs.gnu.org; 30 Aug 2023 19:28:46 +0000 Original-Received: from localhost ([127.0.0.1]:54101 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qbQrs-0003bB-6s for submit@debbugs.gnu.org; Wed, 30 Aug 2023 15:28:46 -0400 Original-Received: from mr6.vodafonemail.de ([145.253.228.166]:38934) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qbQrn-0003av-9G for 63627@debbugs.gnu.org; Wed, 30 Aug 2023 15:28:42 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vodafonemail.de; s=vfde-mb-mr2-21dec; t=1693423706; bh=SMbO00JQFx3B2abi2MUvL/vERnFD/Zt1xpe4iSzlxrY=; h=Content-Type:Message-ID:Date:User-Agent:Subject:Content-Language: To:References:From:In-Reply-To:From; b=M3IxeG0+iU4SSH8A247qfbLqgSVQZo7D/DXBj2/n3gwBAvBixpcdkCDMqq+f+sECQ 3fNinoyazJZiYbU8uuxJZbSNXuSqtCnbtmZPQ9QpWZkGaSq3g9iAofNRWzJs7yZKDy pcldIyaKjgXNNR9QlGggXDEFTtNVUurXpIw5RohY= Original-Received: from smtp.vodafone.de (unknown [10.0.0.2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by mr6.vodafonemail.de (Postfix) with ESMTPS id 4RbZ8T75nPz1y3S; Wed, 30 Aug 2023 19:28:25 +0000 (UTC) Original-Received: from [192.168.0.138] (unknown [86.33.72.162]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp.vodafone.de (Postfix) with ESMTPSA id 4RbZ8J2nnkzHnHf; Wed, 30 Aug 2023 19:28:13 +0000 (UTC) Content-Language: de-DE-frami, en-US In-Reply-To: <83cz2gfypg.fsf@gnu.org> X-purgate-type: clean X-purgate: clean X-purgate-size: 52126 X-purgate-ID: 155817::1693423701-1D7FF94E-56EBC6F0/0/0 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:268751 Archived-At: This is a multi-part message in MIME format. --------------VJ9st0f80F5OwGp1fgyvbFCx Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 2023-05-31 14:54, Eli Zaretskii wrote: >> Date: Mon, 22 May 2023 22:11:19 +0200 >> From: Jens Schmidt via "Bug reports for GNU Emacs, >> the Swiss army knife of text editors" >> >> All of these changes so far are doc fixes or message changes, none of >> them touches any code. Not sure whether they qualify for emacs-29, but >> I guess it would be easier to have them there to have the diff context >> ready for any following bug fixes. > > Thanks, installed on the emacs-29 branch. Next set of patches, I hope they are still eligible for emacs-29. The first patch fixes more documentation and terminology issues in plstore.el, still without touching any code. The second patch comprise ERT tests for plstore.el. Since that requires interaction with GnuPG, these tests are rather platform-dependent. Test setup should ensure that all tests are skipped if GnuPG is missing or not appropriate for the tests. Please check. Thanks. --------------VJ9st0f80F5OwGp1fgyvbFCx Content-Type: text/x-patch; charset=UTF-8; name="0001-Add-documentation-to-plstore.el.patch" Content-Disposition: attachment; filename="0001-Add-documentation-to-plstore.el.patch" Content-Transfer-Encoding: base64 RnJvbSA0MWM5MmU0NTIyZmI3NTM1YWExODc0NmFhOTliYzdjNWQ2NWI2MGUyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKZW5zIFNjaG1pZHQgPGpzY2htaWR0NGdudUB2b2Rh Zm9uZW1haWwuZGU+CkRhdGU6IFdlZCwgMTYgQXVnIDIwMjMgMjM6MzE6MzAgKzAyMDAKU3Vi amVjdDogW1BBVENIIDEvMl0gQWRkIGRvY3VtZW50YXRpb24gdG8gcGxzdG9yZS5lbAoKKiBs aXNwL3Bsc3RvcmUuZWw6IEFkZCBsaW5rIHRvIGVwYSBtYW51YWwuICBEZXNjcmliZSBtb3Jl CnJlc3RyaWN0aW9ucy4gIEZpeCBhIHR5cG8gaW4gdGhlIGV4YW1wbGVzLiAgRml4IHRlcm1p bm9sb2d5LiAgTWFyawpGSVhNRXMgYXMgc3VjaC4KKiBsaXNwL3Bsc3RvcmUuZWwgKHBsc3Rv cmUtc2F2ZSk6IERlc2NyaWJlIGVkZ2UgY2FzZSB3aGVuIG5vIHJlY2lwaWVudAptYXRjaGVz IGFuZCBtYXJrIGFzIEZJWE1FLiAgKEJ1ZyM2MzYyNykKLS0tCiBsaXNwL3Bsc3RvcmUuZWwg fCAzOSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0KIDEgZmlsZSBj aGFuZ2VkLCAzMCBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L2xpc3AvcGxzdG9yZS5lbCBiL2xpc3AvcGxzdG9yZS5lbAppbmRleCBkMThkNDYxZDdkMS4u N2RjOTkxYWVlYzcgMTAwNjQ0Ci0tLSBhL2xpc3AvcGxzdG9yZS5lbAorKysgYi9saXNwL3Bs c3RvcmUuZWwKQEAgLTI0LDE0ICsyNCwzMSBAQAogCiA7OyBQbGlzdCBiYXNlZCBkYXRhIHN0 b3JlIHByb3ZpZGluZyBzZWFyY2ggYW5kIHBhcnRpYWwgZW5jcnlwdGlvbi4KIDs7Ci07OyBC eSBkZWZhdWx0LCB0aGlzIHBhY2thZ2UgdXNlcyBzeW1tZXRyaWMgZW5jcnlwdGlvbiwgd2hp Y2ggbWVhbnMKKzs7IEJ5IGRlZmF1bHQsIHRoaXMgbGlicmFyeSB1c2VzIHN5bW1ldHJpYyBl bmNyeXB0aW9uLCB3aGljaCBtZWFucwogOzsgdGhhdCB5b3UgaGF2ZSB0byBlbnRlciB0aGUg cGFzc3dvcmQgcHJvdGVjdGluZyB5b3VyIHN0b3JlIG1vcmUKIDs7IG9mdGVuIHRoYW4geW91 IHByb2JhYmx5IGV4cGVjdCB0by4gIFRvIHVzZSBwdWJsaWMga2V5IGVuY3J5cHRpb24KLTs7 IHdpdGggdGhpcyBwYWNrYWdlLCBjcmVhdGUgYSBHbnVQRyBrZXkgYW5kIGN1c3RvbWl6ZSB1 c2VyIG9wdGlvbgorOzsgd2l0aCB0aGlzIGxpYnJhcnksIGNyZWF0ZSBhIEdudVBHIGtleSBh bmQgY3VzdG9taXplIHVzZXIgb3B0aW9uCiA7OyBgcGxzdG9yZS1lbmNyeXB0LXRvJyB0byB1 c2UgaXQuICBZb3UgY2FuIHRoZW4gY29uZmlndXJlIHRoZSBHbnVQRwogOzsgYWdlbnQgdG8g YWRqdXN0IGNhY2hpbmcgYW5kIGV4cGlyYXRpb24gb2YgdGhlIHBhc3NwaHJhc2UgZm9yIHlv dXIKIDs7IHN0b3JlLgogOzsKKzs7IFlvdSBjYW4gcmVhZCBtb3JlIG9uIHRoZXNlIHRvcGlj cyBpbiB0aGUgRWFzeVBHIEFzc2lzdGFudCB1c2VyJ3MKKzs7IG1hbnVhbCAoSW5mbyBub2Rl IGAoZXBhKScpLCBvZiB3aGljaCBtdWNoIGluZm9ybWF0aW9uIGFsc28gYXBwbGllcworOzsg dG8gdGhpcyBsaWJyYXJ5LiAgTW9zdCBub3RhYmx5OgorOzsKKzs7IC0gSW5mbyBub2RlIGAo ZXBhKUdudVBHIHZlcnNpb24gY29tcGF0aWJpbGl0eScKKzs7IC0gSW5mbyBub2RlIGAoZXBh KUdudVBHIFBpbmVudHJ5JworOzsgLSBJbmZvIG5vZGUgYChlcGEpQ2FjaGluZyBQYXNzcGhy YXNlcycKKzs7Cis7OyBVc2Ugb25seSBrZXl3b3JkIHN5bWJvbHMgKHN0YXJ0aW5nIHdpdGgg YSBjb2xvbikgYXMgcHJvcGVydHkgbmFtZXMKKzs7IGluIGFueSBwbGlzdCBzdG9yZWQgd2l0 aCB0aGlzIGxpYnJhcnkuICBXaGlsZSB0aGlzIGxpYnJhcnkgZG9lcyBub3QKKzs7IGFjdGl2 ZWx5IGVuZm9yY2UgdGhlIHVzZSBvZiBrZXl3b3JkIHN5bWJvbHMsIGl0IHNpbGVudGx5IGFz c3VtZXMKKzs7IHRoYXQgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiBhbGwgcHJvcGVydHkgbmFt ZXMgY2FuIGJlIGRpc2NhcmRlZAorOzsgd2l0aG91dCBzYWNyaWZpY2luZyB1bmlxdWVuZXNz IG9mIG5hbWVzIChGSVhNRSkuICBMaWtld2lzZSwgdGhpcworOzsgbGlicmFyeSBkb2VzIG5v dCBlbmZvcmNlIHRoYXQgdGhlIHBsaXN0cyBwcm92aWRlZCBhcyBpbnB1dCBhcmUKKzs7IGFj dHVhbGx5IHZhbGlkIGFuZCBjYW4gYmVoYXZlIGluIHVuZGVmaW5lZCB3YXlzIGlmIHRoZXkg YXJlIG5vdAorOzsgKEZJWE1FKS4KKzs7CiA7OyBDcmVhdGluZzoKIDs7CiA7OyA7OyBPcGVu IGEgbmV3IHN0b3JlIGFzc29jaWF0ZWQgd2l0aCB+Ly5lbWFjcy5kL2F1dGgucGxpc3QuCkBA IC01Miw4ICs2OSw4IEBACiA7OyAocGxzdG9yZS1jbG9zZSBzdG9yZSkKIDs7CiA7OyBBdm9p ZCBtYXJraW5nIG9uZSBwcm9wZXJ0eSBib3RoIGFzIHB1YmxpYyAqYW5kKiBzZWNyZXQsIGFz IHRoZQotOzsgYmVoYXZpb3Igb2YgdGhpcyBwYWNrYWdlIHdpdGggcmVzcGVjdCB0byBzdWNo IGR1cGxpY2F0ZSBwcm9wZXJ0aWVzCi07OyBpcyBub3QgKHlldCkgZGVmaW5lZC4KKzs7IGJl aGF2aW9yIG9mIHRoaXMgbGlicmFyeSB3aXRoIHJlc3BlY3QgdG8gc3VjaCBkdXBsaWNhdGUg cHJvcGVydGllcworOzsgaXMgbm90IGRlZmluZWQgKEZJWE1FKS4KIDs7CiA7OyBTZWFyY2hp bmc6CiA7OwpAQCAtNzEsNyArODgsNyBAQAogOzsgOzsgV2hpbGUgdGhlIGVudHJ5ICJiYXoi IGFzc29jaWF0ZWQgd2l0aCAiYmF6LmV4YW1wbGUub3JnIiBoYXMgYWxzbwogOzsgOzsgYSBz ZWNyZXQgcHJvcGVydHkgYDpwYXNzd29yZCcsIGl0IGlzIGVuY3J5cHRlZCB0b2dldGhlciB3 aXRoCiA7OyA7OyBgOnVzZXInIG9mICJiYXIiLCBzbyBubyBuZWVkIHRvIGRlY3J5cHQgdGhl IHNlY3JldC4KLTs7IChwbHN0b3JlLWZpbmQgc3RvcmUgJyg6aG9zdCAoImJhci5leGFtcGxl Lm9yZyIpKSkKKzs7IChwbHN0b3JlLWZpbmQgc3RvcmUgJyg6aG9zdCAoImJhei5leGFtcGxl Lm9yZyIpKSkKIDs7CiA7OyAocGxzdG9yZS1jbG9zZSBzdG9yZSkKIDs7CkBAIC04Nyw4ICsx MDQsOCBAQAogOzsgYDpzZWNyZXQtJyBwcmVmaXgpIGlzIG1hcmtlZCBhcyBzZWNyZXQuICBU aHVzLCB3aGVuIHlvdSBzYXZlIHRoZQogOzsgYnVmZmVyLCB0aGUgYDpzZWNyZXQtdXNlcicg cHJvcGVydHkgaXMgZW5jcnlwdGVkIGFzIGA6dXNlcicuICBEbwogOzsgbm90IHVzZSBhIHBy b3BlcnR5IGNvbnNpc3Rpbmcgc29sZWx5IG9mIHRoZSBwcmVmaXgsIGFzIHRoZSBiZWhhdmlv cgotOzsgb2YgdGhpcyBwYWNrYWdlIHdpdGggcmVzcGVjdCB0byBzdWNoIHByb3BlcnRpZXMg aXMgbm90ICh5ZXQpCi07OyBkZWZpbmVkLgorOzsgb2YgdGhpcyBsaWJyYXJ5IHdpdGggcmVz cGVjdCB0byBzdWNoIHByb3BlcnRpZXMgaXMgbm90IGRlZmluZWQKKzs7IChGSVhNRSkuCiA7 OwogOzsgWW91IGNhbiB0b2dnbGUgdGhlIHZpZXcgYmV0d2VlbiBlbmNyeXB0ZWQgZm9ybSBh bmQgdGhlIGRlY3J5cHRlZAogOzsgZm9ybSB3aXRoIEMtYyBDLWMuCkBAIC0xMDEsNyArMTE4 LDcgQEAKIDs7IEludGVybmFsczoKIDs7CiA7OyBUaGlzIGlzIGluZm9ybWF0aW9uIG9uIHRo ZSBpbnRlcm5hbCBkYXRhIHN0cnVjdHVyZSBhbmQgZnVuY3Rpb25zIG9mCi07OyB0aGlzIHBh Y2thZ2UuICBOb25lIG9mIGl0IHNob3VsZCBiZSBuZWNlc3NhcnkgdG8gYWN0dWFsbHkgdXNl IGl0LgorOzsgdGhpcyBsaWJyYXJ5LiAgTm9uZSBvZiBpdCBzaG91bGQgYmUgbmVjZXNzYXJ5 IHRvIGFjdHVhbGx5IHVzZSBpdC4KIDs7IEZvciBlYXNpZXIgcmVhZGluZywgd2UgdXN1YWxs eSBkbyBub3QgZGlzdGluZ3Vpc2ggaW4gdGhpcyBpbnRlcm5hbAogOzsgZG9jdW1lbnRhdGlv biBiZXR3ZWVuIGEgTGlzcCBvYmplY3QgYW5kIGl0cyBwcmludGVkIHJlcHJlc2VudGF0aW9u LgogOzsKQEAgLTU4OSw3ICs2MDYsMTEgQEAgcGxzdG9yZS0taW5zZXJ0LWJ1ZmZlcgogCShp bnNlcnQgIjs7OyBzZWNyZXQgZW50cmllc1xuIiAocHAtdG8tc3RyaW5nIGNpcGhlcikpKSkp CiAKIChkZWZ1biBwbHN0b3JlLXNhdmUgKHBsc3RvcmUpCi0gICJTYXZlIFBMU1RPUkUgdG8g aXRzIGFzc29jaWF0ZWQgZmlsZS4iCisgICJTYXZlIFBMU1RPUkUgdG8gaXRzIGFzc29jaWF0 ZWQgZmlsZS4KK1NhdmUgd2l0aCBzeW1tZXRyaWMgZW5jcnlwdGlvbiBvciBwdWJsaWMga2V5 IGVuY3J5cHRpb24gZGVwZW5kaW5nCitvbiBgcGxzdG9yZS1lbmNyeXB0LXRvJy4gIElmIGBw bHN0b3JlLWVuY3J5cHQtdG8nIGlzIG5vbi1uaWwgYnV0Citub25lIG9mIHRoZSByZWNpcGll bnRzIGZyb20gYHBsc3RvcmUtZW5jcnlwdC10bycgbWF0Y2hlcyBhbnkKK0dudVBHIGtleSwg c2lsZW50bHkgc2F2ZSB3aXRoIHN5bW1ldHJpYyBlbmNyeXB0aW9uLiIgOyAoRklYTUUpCiAg ICh3aXRoLWN1cnJlbnQtYnVmZmVyIChwbHN0b3JlLS1nZXQtYnVmZmVyIHBsc3RvcmUpCiAg ICAgKGVyYXNlLWJ1ZmZlcikKICAgICAocGxzdG9yZS0taW5zZXJ0LWJ1ZmZlciBwbHN0b3Jl KQotLSAKMi4zMC4yCgo= --------------VJ9st0f80F5OwGp1fgyvbFCx Content-Type: text/x-patch; charset=UTF-8; name="0002-Add-tests-for-plstore.el.patch" Content-Disposition: attachment; filename="0002-Add-tests-for-plstore.el.patch" Content-Transfer-Encoding: base64 RnJvbSAzYjhkNjI5ZDdiM2FiNjM4ZTE2NGNlMjkyYjZiYTYzMDBlOWRlNzQwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKZW5zIFNjaG1pZHQgPGpzY2htaWR0NGdudUB2b2Rh Zm9uZW1haWwuZGU+CkRhdGU6IFdlZCwgMTYgQXVnIDIwMjMgMjM6NDI6MTEgKzAyMDAKU3Vi amVjdDogW1BBVENIIDIvMl0gQWRkIHRlc3RzIGZvciBwbHN0b3JlLmVsCgoqIHRlc3QvbGlz cC9wbHN0b3JlLXJlc291cmNlcy9wbHN0b3JlLXRlc3RzLnB1YmtleToKKiB0ZXN0L2xpc3Av cGxzdG9yZS1yZXNvdXJjZXMvcGxzdG9yZS10ZXN0cy5zZWNrZXk6CiogdGVzdC9saXNwL3Bs c3RvcmUtdGVzdHMuZWw6IEFkZCBuZXcgZmlsZXMuICAoQnVnIzYzNjI3KQotLS0KIC4uLi9w bHN0b3JlLXJlc291cmNlcy9wbHN0b3JlLXRlc3RzLnB1YmtleSAgICB8ICA0MCArKwogLi4u L3Bsc3RvcmUtcmVzb3VyY2VzL3Bsc3RvcmUtdGVzdHMuc2Vja2V5ICAgIHwgIDgzICsrKwog dGVzdC9saXNwL3Bsc3RvcmUtdGVzdHMuZWwgICAgICAgICAgICAgICAgICAgIHwgNTM1ICsr KysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCA2NTggaW5zZXJ0aW9ucygrKQog Y3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3QvbGlzcC9wbHN0b3JlLXJlc291cmNlcy9wbHN0b3Jl LXRlc3RzLnB1YmtleQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3QvbGlzcC9wbHN0b3JlLXJl c291cmNlcy9wbHN0b3JlLXRlc3RzLnNlY2tleQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3Qv bGlzcC9wbHN0b3JlLXRlc3RzLmVsCgpkaWZmIC0tZ2l0IGEvdGVzdC9saXNwL3Bsc3RvcmUt cmVzb3VyY2VzL3Bsc3RvcmUtdGVzdHMucHVia2V5IGIvdGVzdC9saXNwL3Bsc3RvcmUtcmVz b3VyY2VzL3Bsc3RvcmUtdGVzdHMucHVia2V5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwLi5mMDA2Y2U5YzA3MQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvbGlz cC9wbHN0b3JlLXJlc291cmNlcy9wbHN0b3JlLXRlc3RzLnB1YmtleQpAQCAtMCwwICsxLDQw IEBACistLS0tLUJFR0lOIFBHUCBQVUJMSUMgS0VZIEJMT0NLLS0tLS0KKworbVFHTkJHU0Iv cG9CREFDa1NrTnJnNW5rTjFKNEJvSlRncWtTUVFhODlCODhoUCtDODNVdUtaWjkwWTJSeVNi QworSVI4T25BUmltdE9hb2tFbitrM2dNWWlWRHhtWWNQY0NNNU9ZdDFkaUJ5amJ2MDE4TVl5 cStzUFRXdmZqU0xRTQorazRaRUhobzR1Y1NkUDh1K2pnYlRZOG4rcUljbzA3a1hSMExqQjRE NWN2d0hQc1ltT2FYY2kyRGlQYVZaMktTQgorUHFJWEhMMmpYV1pLbzd5QXdSeW0rZ1A3U09B WElSYkk1Rmduam00Ujh4UFpJOWk2N2hzVnJuNGlMRXZOZFBYTgorQzRuWlZzS3NoV0Nma281 SURBc3laUitTVmZvWFlqK0Jwd2VHWmhwY0FPclV1cEdIYWdEVWh2cVk5RER6MzUySgorcFd1 Lzg1Mm9NZlRWdlY2aDNKZXZuaVBkMlpCUFdLT3l0ZVlCV1ArN0N5NktFOHdFRVhUVHB5b0dO OVVWY1h1cAorSnJiMnJsa21sSUJpN3JSc3NnVy91RW5mVGlOaUNGNXk5MHRwdmRsMGtIaHVX VTFNeDQrSnFZRk9qWGk3SXBDQQora3lPYlc0blowaVpyeHQ1eVZxaTJyMDBGSkNoTVdPcnp1 UHRhUWdFTHlKTEhWU09qZXhlZ3BQVHY1NmRWK0VrbworRHZ5NDBQc0d4Q21nVVI4QUVRRUFB YlFTY0d4emRHOXlaUzEwWlhOMGN5MXlZM0IwaVFIT0JCTUJDZ0E0RmlFRQorQWFoVnpUalYr TXdkVVFkMUhCY1NLQzRDWWtRRkFtU0IvcG9DR3dNRkN3a0lCd0lHRlFvSkNBc0NCQllDQXdF QworSGdFQ0Y0QUFDZ2tRSEJjU0tDNENZa1J4bXd2K09tRmdVOEpzQkdaR2oxMi9SQlF1NHdY d3J5UzJyNUFKZjZDcAorUkNMRDBpbEVlNXdYM3p2SnUxdnBTeWM3OXhUU3ZsWGYvdGhSQ0hm Z1h3K20rSWtZMTAxcnQycFZFQkhnTEM5OAorcWwwSkR2WTVkc2QwUzk4Yk1naWxVTEZHZ1N2 ZkpZeFkrWmxnZjRqaVd1bzNiLzQzV2U0SWJDWHBGN0MyMzU2VQorckpFSW1abzdQQy93YnNi NFZVVFVBQ0xsYXNwb1hCeXowR3JudnpwZlFqbW9aSExRbEt0TU4xRVpuUUxvb3h2LworMENL bUJSWEQwOHJKck80Nit3Z1RLS3B0eGQ1aGdtQ0huUklibWFQM0kxbnZOREtwMUJJTlVZSkVz Vk5CRVF1VQorc1NjSFdYZGJ6YjY0emh5UXZ5bmFkODV0ZFArc3JWY1JUQ0poaVRKdTdWQUZn RHZxWEs4Q1o2QXBTdnF3Tjl4YQorZXV3NExqWmk0VGpBNVFkOVNXVXlQL1ROdGlxZzhTc2lw alJ2Q2VFN1VmVjdqQS9XNjN1S2dzYkE0OFFZMzM3TworYjY5YkE1SFF1QmJzTmQxb0Y3NG1s RWQwcS9zT29nNmhWeHpUMkZwbE9USmZVbE5oUUs2UWN3UTVIb2lNT2FmSQorOFdTRFZhQWdl d2pCZnBRemhjZDBMSUs2b0t6cXVRR05CR1NCL3BvQkRBREI5aW9FK284bWZ5YkVjZTJhR21x OAorNG91d2I1azNOSEF0MytkNEFjVlErcHJDZTRIeTJFeHlrK2lpRGxlQXQ2TFgyc2YyZVM3 K05aMVJzRFNOUzhpTAorNWR3UndGb1RjN2NWYTJzejZFUHRIQnB3d2ZkQmFpaHp5U3hkS2w0 TUVldnIyc2tBY0JKN3ZDMkFMaEEwMi85OAorN0NSR3hFczgvWm9mNjMvTmxNSkhkTDlFa3Rz bDRkbTZTaVNpamNKbGlrTUw2cUE3RHBONitsN1NYazBvdDFBVAorTktHTW1tWTVuM3JwRXU2 eUtLZDhrTld4bHJobFNER1BYUGlqQnp5T0VsS0c3dmZ1emFNYmlzeEdCYUlGNDRxYgorbjI0 bndYeGxTbWlvdEpIc1YrSGZ4b0phR0lKd2hkK0JXMzVGRkxnR0xKMUYrVHdVUGhQbnYrTjBi NG10ZWJCcworTWp3YnlGQ1NHTWtQN21NUHRzTmxUUmFXbFgwRms1U1I3ZWVQaFMyK3dhL0Nm WVBFT3J3ZjVtcHN1LzY1c0FtSQorcUJLdU56N3hza3V3Q3Y1U0pHOVhkTFlIYkpjS3hUUWFK Tk9pekhpUkNMVDJ0SHFMYkYrQjdrRVpybSt1RFdMVQorWE9lOFlaUlZRbHRyeXV3dHU3SGVh TmExYU9DWFRnVGZiQzRFMi81bXlHRUFFUUVBQVlrQnRnUVlBUW9BSUJZaAorQkFHb1ZjMDQx ZmpNSFZFSGRSd1hFaWd1QW1KRUJRSmtnZjZhQWhzTUFBb0pFQndYRWlndUFtSkVyTDhMK3dh QQorSlJ2TGdnejFzK1N6bnlWM2lYcXE5Zk9KMUVUYnUxM3NKMCtLT2loOXBuNXRiTjllRGdI Mzl3bWlQdyt3WlRNaQorTHUrTEl5MDdnRU1zVndqSzZCOWtoWDBsd1hIZ1dDZEVnajhsZTJj MDBzUXBVSEVKeDZ3Qnd3dTJtazR4Yk9TZworVTFZNU5vOElSaEpZQytmY2hXcU90SllBa0Ji cFJrQ1BubFZ3RW9EbkY0L1MxdTZoTkJQTTdNcUpWSWMwN2c5ZgorMUVpVk96Ty9YVjVKdDhu Z1pyMEJhQ2E5TEhGQ3hJeVNIMm5rT08yYWtuZStUUy9ickdSbXlDNGNLSWQ1dmY3YQorTktG N2plUGgzSlN1aTluQXo2a3FxV3FDUFFUUEZOOXdHTkI5TVBMc1hvT1U4dWNqQ05aMDI3UzF6 L1F1RFF2dAorSkNmUjFOSUNIeGpnNlVBSUk1Z1QvWHc5Q0dsajNBQi9zT1ZJMGtoaTluV3RJ OGo3a2dtQkEzM2Z0aHVKV0Q5ZAorWGtMd3BWcjZjOE5MSDVvaTdXSFZBSk04UXovUU9aZUlo RjUrQ0Y0S1ZqNXFxTkJzWmNTZk1RTGpBSHd4K1VlWQorUEFwUjBaMmJYalNwY1QxaFRKVmcy a3dtS2o3T2w2RnZBZ095c3NDaTVqTVdtR1hNaW55N3pmRjg2QUthT0E9PQorPTBneC8KKy0t LS0tRU5EIFBHUCBQVUJMSUMgS0VZIEJMT0NLLS0tLS0KZGlmZiAtLWdpdCBhL3Rlc3QvbGlz cC9wbHN0b3JlLXJlc291cmNlcy9wbHN0b3JlLXRlc3RzLnNlY2tleSBiL3Rlc3QvbGlzcC9w bHN0b3JlLXJlc291cmNlcy9wbHN0b3JlLXRlc3RzLnNlY2tleQpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYTE0OGM5YzIwMjYKLS0tIC9kZXYvbnVsbAorKysg Yi90ZXN0L2xpc3AvcGxzdG9yZS1yZXNvdXJjZXMvcGxzdG9yZS10ZXN0cy5zZWNrZXkKQEAg LTAsMCArMSw4MyBAQAorLS0tLS1CRUdJTiBQR1AgUFJJVkFURSBLRVkgQkxPQ0stLS0tLQor CitsUVdHQkdTQi9wb0JEQUNrU2tOcmc1bmtOMUo0Qm9KVGdxa1NRUWE4OUI4OGhQK0M4M1V1 S1paOTBZMlJ5U2JDCitJUjhPbkFSaW10T2Fva0VuK2szZ01ZaVZEeG1ZY1BjQ001T1l0MWRp QnlqYnYwMThNWXlxK3NQVFd2ZmpTTFFNCitrNFpFSGhvNHVjU2RQOHUramdiVFk4bitxSWNv MDdrWFIwTGpCNEQ1Y3Z3SFBzWW1PYVhjaTJEaVBhVloyS1NCCitQcUlYSEwyalhXWktvN3lB d1J5bStnUDdTT0FYSVJiSTVGZ25qbTRSOHhQWkk5aTY3aHNWcm40aUxFdk5kUFhOCitDNG5a VnNLc2hXQ2ZrbzVJREFzeVpSK1NWZm9YWWorQnB3ZUdaaHBjQU9yVXVwR0hhZ0RVaHZxWTlE RHozNTJKCitwV3UvODUyb01mVFZ2VjZoM0pldm5pUGQyWkJQV0tPeXRlWUJXUCs3Q3k2S0U4 d0VFWFRUcHlvR045VVZjWHVwCitKcmIycmxrbWxJQmk3clJzc2dXL3VFbmZUaU5pQ0Y1eTkw dHB2ZGwwa0hodVdVMU14NCtKcVlGT2pYaTdJcENBCitreU9iVzRuWjBpWnJ4dDV5VnFpMnIw MEZKQ2hNV09yenVQdGFRZ0VMeUpMSFZTT2pleGVncFBUdjU2ZFYrRWtvCitEdnk0MFBzR3hD bWdVUjhBRVFFQUFmNEhBd0xoYVJsTHk0dTRGZjk2dW9STFRhTjhURWx6NTVPTEJ0NGVzalRs CittZWZVVm5ZSS9PQmxUaXpCanRtT0QwUnA2U2Y1YTk0TDBnL1pMSTdPVjlKWHdGUEtTOFgy T2pjb3F3QXB6czVOCitYNjFGcDNKb0g2aTVscWg2cW9URUxhejZoUHFlRU05N29CZGxzNm04 MDhsNzZ6dERuekZWWENPdTQxZ0d3ZXYrCisvUzdrZHdpMitqeDNPa0w0UCthM1BFVTQ1SVhj NHZ2UnRieTNnRkFaNnlOMEtoL1NFUzh3QUNUeVhyaUo4YzV4CitMWjYrcXRuQXlNZE1IZjE3 WXdDbTNTaXNyMytlNlJUdDRydVdSUWp5cDNnVnNUOWVUQ3F6dXlVaFFSaDl2bmpzCitYeGpZ UHp4dW81TUt5WlhnWjNEK1dscDdSTjFUbS9zOEo1dWc1MTdvWGxKRVlFS1ZPei9NUFNPd3pr REYxc2tmCitBNks5cEMvb3M1Y2Y2Z3gxTnFpYXNQR3JkMkdIUnJnNnFFZTBnMnhxVkpQVm5H WldiNnU5Um1Kc0pVOE9IK3lBCit6MXYxL1p5Z2RNMkhPdHd0L3BaVHBrNEpCZ0dJUGhuQlFC WkM1WEJtY3IwelZXWGZSSXlSaExVdEwxUUFHTHFtCitiS29kaTNQcVk0K3AxK1FkOVNBZUcr eTBPbWZxQWpnaE5pa3YyY3NlaEtHN1MwRG9DZFEwa3U4WXNUcXpGTE83CitlUjE1c0tKckZM aHllclJ3bEU3V2pDc1FDMkRYcURURmRJUWt6OWowSmttdjJVVEV6bGxtaksrak5jUDRpZUhY CitCU25mdC9sVXZMVkZJWFAvNU1UTWJPcnVTUkVTMnZ0WDdxN3R2NjJRYzZLakNaS0NIOGdo aysxNTUyWmREa0ZiCittTmhhaStYSjdKRUNseDg1VmpBbXdlaDRYd3FUSHRDTHNSMnpIdHRF Y3RiOWpUMWZBSzNWTkpXT3Fwbmk5LzNHCitFdmhERDBxVk82OUZuMDAyUWxOaHdEeTBXeFFw cUgza0tlRWIxLzUvUW5hRjB4Rnoxbk00OHk3aUcrSVRVZG9PCit0V1VLeHFWdXc4eW50azhO Z21rYzhuMGViQkt4TFUwc0RRVmlZU0tHSk9BUzNodFk1RG92cTRLVkRYeFcrL2l3Cis4M1lM YWl2dkRHM0dyMTZ1eXNpSEF2Tm5LOTFTdFdQT3ZLdnR4RTVBRHczOW1jTW5Pa0NGMS9xNHFE YWZCM1JHCisrN2JYclhQRXV1WVE0Q0NGTzZ2K2cwYUhxUXhGeC9DcmUzODA0Q3NJQmczeUtO NUFYeE82ckpVY0tUeXRDMHpKCitjSlhEYlpaVjA1Q0JEZzN4KzZ4Sm4ya1BrMG9UZS91Q1NZ TjZ4V1BpSmk0UmpTOVVML0FUaXIvMm00ejcvbzE4CityVlVyMW9aOC9IdEpvUGV6ZmhOdEpx cWJEdStRM0RrcUVmWExkQkRNRjcxdlQvMHpVTXZvRTZsOThWTUFxNndtCitQaHJrMjk5bWdy MUVRT1lUV0tBbmJYUTFnS2gySndlZ2JKRzczOE13WXRpeGtwNklURFB3NzFqNXgvU1lpbkhq CitXZVRaOXNvb3VmWHl3NlA3SmhxUktyWmJHUndiREFvNGhDTUpBeWkyWjFWTXVSN0lIMHRm NUE0bzQ2bDkxSXpoCis5WjRSZXdsUzVidG8zVFBoVUd3ZkQrM3d5d2p0aVQ3ZC9YcC9JZ21o RWtjWGRzakJObHo0ZjlvVlgvWnRzVWo5CitCUFJBZWVSUGNBMkdnekZORkdmNGl5aWR6Z2lF SmxxSUdiUVNjR3h6ZEc5eVpTMTBaWE4wY3kxeVkzQjBpUUhPCitCQk1CQ2dBNEZpRUVBYWhW elRqVitNd2RVUWQxSEJjU0tDNENZa1FGQW1TQi9wb0NHd01GQ3drSUJ3SUdGUW9KCitDQXND QkJZQ0F3RUNIZ0VDRjRBQUNna1FIQmNTS0M0Q1lrUnhtd3YrT21GZ1U4SnNCR1pHajEyL1JC UXU0d1h3CityeVMycjVBSmY2Q3BSQ0xEMGlsRWU1d1gzenZKdTF2cFN5Yzc5eFRTdmxYZi90 aFJDSGZnWHcrbStJa1kxMDFyCit0MnBWRUJIZ0xDOThxbDBKRHZZNWRzZDBTOThiTWdpbFVM RkdnU3ZmSll4WStabGdmNGppV3VvM2IvNDNXZTRJCitiQ1hwRjdDMjM1NlVySkVJbVpvN1BD L3dic2I0VlVUVUFDTGxhc3BvWEJ5ejBHcm52enBmUWptb1pITFFsS3RNCitOMUVablFMb294 di8wQ0ttQlJYRDA4ckpyTzQ2K3dnVEtLcHR4ZDVoZ21DSG5SSWJtYVAzSTFudk5ES3AxQklO CitVWUpFc1ZOQkVRdVVzU2NIV1hkYnpiNjR6aHlRdnluYWQ4NXRkUCtzclZjUlRDSmhpVEp1 N1ZBRmdEdnFYSzhDCitaNkFwU3Zxd045eGFldXc0TGpaaTRUakE1UWQ5U1dVeVAvVE50aXFn OFNzaXBqUnZDZUU3VWZWN2pBL1c2M3VLCitnc2JBNDhRWTMzN09iNjliQTVIUXVCYnNOZDFv Rjc0bWxFZDBxL3NPb2c2aFZ4elQyRnBsT1RKZlVsTmhRSzZRCitjd1E1SG9pTU9hZkk4V1NE VmFBZ2V3akJmcFF6aGNkMExJSzZvS3pxblFXR0JHU0IvcG9CREFEQjlpb0UrbzhtCitmeWJF Y2UyYUdtcTg0b3V3YjVrM05IQXQzK2Q0QWNWUStwckNlNEh5MkV4eWsraWlEbGVBdDZMWDJz ZjJlUzcrCitOWjFSc0RTTlM4aUw1ZHdSd0ZvVGM3Y1ZhMnN6NkVQdEhCcHd3ZmRCYWloenlT eGRLbDRNRWV2cjJza0FjQko3Cit2QzJBTGhBMDIvOTg3Q1JHeEVzOC9ab2Y2My9ObE1KSGRM OUVrdHNsNGRtNlNpU2lqY0psaWtNTDZxQTdEcE42CisrbDdTWGswb3QxQVROS0dNbW1ZNW4z cnBFdTZ5S0tkOGtOV3hscmhsU0RHUFhQaWpCenlPRWxLRzd2ZnV6YU1iCitpc3hHQmFJRjQ0 cWJuMjRud1h4bFNtaW90SkhzVitIZnhvSmFHSUp3aGQrQlczNUZGTGdHTEoxRitUd1VQaFBu Cit2K04wYjRtdGViQnNNandieUZDU0dNa1A3bU1QdHNObFRSYVdsWDBGazVTUjdlZVBoUzIr d2EvQ2ZZUEVPcndmCis1bXBzdS82NXNBbUlxQkt1Tno3eHNrdXdDdjVTSkc5WGRMWUhiSmNL eFRRYUpOT2l6SGlSQ0xUMnRIcUxiRitCCis3a0Vacm0rdURXTFVYT2U4WVpSVlFsdHJ5dXd0 dTdIZWFOYTFhT0NYVGdUZmJDNEUyLzVteUdFQUVRRUFBZjRICitBd0tjWnlpcm5WeE9yUDlo Wk5nbm9pZDBHS0FqcTE0ZG53V2lmdVRDSndRTnBqb0k5dU1aaWd2dkxtVGxhUlk5CitnbCt5 alNIL1krYVR5QTdKYS9UNk9hbDhXYjYwSEYvUlR0eXdESW1WbWJqWEhOcHpKOXRHcmJObjhj Z3JIenJwCituallCeUtueUU2UDhMV21sQWYxVUJ0TXlEd0dsSkpLbkxQb21JZ2g0UkFsbExN RXFYU2NiNGowVFl0Y3BxL2dGCitHSEUyNzFhTDArY0hSRUJoYUlFRC9CMlJmV1YxVDFsWThU NEZ2cHB1R0J5L0VxcnRpRFRlRVBodkpDZ2QzS1l0Cis1YkZua3RUa014WkNYWjRSRkE3eDdh ZDdEUjFEb05IVWI0OGxuU3kwYmpYanlEckZTSXc5YWNkcXJHdDFaaVpoCisxS3l1M0lOQzNp dEFLbld3MEpXZ1hQVnEzUUNPdGpYZ0VkUElpQXh3bU92bnNrQU1RR1c0M0IvRFBnbnBPbmNo CitsUDUwS0xYeXVkYnZkQVZkZXdqR2lhQzUva1F6UU9FTWxJZHNuTzBVQi82TnREcUU1RThN VUlmWHRua2FmRG1BCitjUC84WXdXbEg3M2xvNWJFNkFWekFYcWx5eXE2bFhvL0JPcVk0NHRE QXJYRWVhdVppVVZQdTN2dEhiM1lnR3FoCitlVFh6OE50RGtXWnNNUTkrSVREbGo4aE5zRVQr cGEzc1ZFL0Zsek5RTUxRd3RVbmpPQSt3T1crbGJmRWpocjgvCit4MS9UckY4Y0hhQ2VPdWhX Umw2eUpORE43UEJ0SitBZ0FNeEdhQ2l5L0NjQnlBTzM4Y1NhRHBMRDM3TjJab3ZOCitjZ2lr YkNOVnNBTE0wWmJJcjk3OU9HbW1XVzJqSzN0clhCR3ZFNEsxVFVadU45ai9HRy9xNjZkbjdj SXA5Vkp3CitJK1hpQU1DTEtheHlBV0VIcWVxcHB2THNLY3cvSEFXa1EycEpzVHBjQ3hqOGZh bXVVSTkzMDJsTk9kZzdTZkxpCitGRHRNVlBkbk10enpaVEh3VGFrbE16cEVJQ2V4OEJMT2F6 R1Zqa3AwQ3FuSTZ0d2pidkJKa1ZpWFFNUnR0dGRKCitQK3IvaFNmTkR5aHFWajBPNGlpTG8r UzZHRXBCUVlKbC90MHdsbi9OdmdlUTJ5TklqL3ZleERYOTEwdTFFbXoyCitEcU10eWdmVllY QjBnZ0VlN3VlTUJjUnIrcElhbUlSaUIyWUxPcDNOUzR3TGlpekxqSGdXM09ieUQvYUptbHJG CitkbTRkMWhYVW0wS2dxM2wyK1YvOXA4Wm1VRHFoL09FK0lCYW5BdktTU25qb1FnVjNKSXQ5 eWFnRTNLQ1NheUNDCitUZnhlMEZXMzdYbDVDOWNJa24vbGdkYWNNRFJ3SFVacDlNT3I4VUtP L3RubWFCcktPYldhY3VtWXJFL1FRV0Y4CitneGx2WnJzc3FNYTA5UXBMN1pWcU53V1JVWit6 SUNtL2FzTElZZ3dEWmRtUUlwa1NFSlBLK0gzeW11WmQyRVZ0Cis5KzhwK0crQmdqU0Q4QnFS WnhhOUk3MXhJTXVFQWpPVlY1cTk5dTJMd3lESkh1OGpJZ3plQ0dQZEo3UEJHbjgrCitCa09W ampPcmQvK2pLb2tnUGlpRThKbUthS0thL2xMVXdSZ0FjRlNVNFQ2L0pwcFRoZEdFMjUwQ3pC NTBJS2VnCis2NFVoSDZoWWxQeUtDclcyM1VJWmkrQXRZUXU0TjRBZXFzWXMzeWZRMGZGTGd5 N1hvSGR2SmhKMXJNQkQ2U3c3Cis0bGhRMDN1TG00a0J0Z1FZQVFvQUlCWWhCQUdvVmMwNDFm ak1IVkVIZFJ3WEVpZ3VBbUpFQlFKa2dmNmFBaHNNCitBQW9KRUJ3WEVpZ3VBbUpFckw4TCt3 YUFKUnZMZ2d6MXMrU3pueVYzaVhxcTlmT0oxRVRidTEzc0owK0tPaWg5CitwbjV0Yk45ZURn SDM5d21pUHcrd1pUTWlMdStMSXkwN2dFTXNWd2pLNkI5a2hYMGx3WEhnV0NkRWdqOGxlMmMw Ciswc1FwVUhFSng2d0J3d3UybWs0eGJPU2dVMVk1Tm84SVJoSllDK2ZjaFdxT3RKWUFrQmJw UmtDUG5sVndFb0RuCitGNC9TMXU2aE5CUE03TXFKVkljMDdnOWYxRWlWT3pPL1hWNUp0OG5n WnIwQmFDYTlMSEZDeEl5U0gybmtPTzJhCitrbmUrVFMvYnJHUm15QzRjS0lkNXZmN2FOS0Y3 amVQaDNKU3VpOW5BejZrcXFXcUNQUVRQRk45d0dOQjlNUExzCitYb09VOHVjakNOWjAyN1Mx ei9RdURRdnRKQ2ZSMU5JQ0h4amc2VUFJSTVnVC9YdzlDR2xqM0FCL3NPVkkwa2hpCis5bld0 SThqN2tnbUJBMzNmdGh1SldEOWRYa0x3cFZyNmM4TkxINW9pN1dIVkFKTThRei9RT1plSWhG NStDRjRLCitWajVxcU5Cc1pjU2ZNUUxqQUh3eCtVZVlQQXBSMFoyYlhqU3BjVDFoVEpWZzJr d21LajdPbDZGdkFnT3lzc0NpCis1ak1XbUdYTWlueTd6ZkY4NkFLYU9BPT0KKz1WbVZ0Cist LS0tLUVORCBQR1AgUFJJVkFURSBLRVkgQkxPQ0stLS0tLQpkaWZmIC0tZ2l0IGEvdGVzdC9s aXNwL3Bsc3RvcmUtdGVzdHMuZWwgYi90ZXN0L2xpc3AvcGxzdG9yZS10ZXN0cy5lbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZGExZmU2MTYzZDUKLS0tIC9k ZXYvbnVsbAorKysgYi90ZXN0L2xpc3AvcGxzdG9yZS10ZXN0cy5lbApAQCAtMCwwICsxLDUz NSBAQAorOzs7IHBsc3RvcmUtdGVzdHMuZWwgLS0tIFRlc3Qgc3VpdGUgZm9yIHBsc3RvcmUu ZWwgLSotIGxleGljYWwtYmluZGluZzogdCAtKi0KKworOzsgQ29weXJpZ2h0IChDKSAyMDIz IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCis7OyBBdXRob3I6IEplbnMgU2No bWlkdCA8anNjaG1pZHQ0Z251QHZvZGFmb25lbWFpbC5kZT4KKzs7IEtleXdvcmRzOiBQR1As IEdudVBHCisKKzs7IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBFbWFjcy4KKworOzsgR05V IEVtYWNzIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKKzs7IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cis7OyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorOzsgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworOzsgR05VIEVtYWNzIGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCis7OyBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgorOzsgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQorOzsgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KKworOzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKzs7IGFsb25nIHdpdGggR05VIEVtYWNzLiAg SWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKworOzs7IENv bW1lbnRhcnk6CisKKzs7IFRoZXNlIHRlc3RzIGRlcGVuZCBvbiBFUEcgZmluZGluZyBhIHVz YWJsZSBHbnVQRyBjb25maWd1cmF0aW9uIHdpdGgKKzs7IGEgc3VmZmljaWVudGx5IG5ldyBH bnVQRyB2ZXJzaW9uLCBzZWUgYHBsc3RvcmUtdGVzdHMtc2V0LXVwLWVwZycuCis7OyBJZiBF UEcgY2Fubm90IGZpbmQgYW55LCB0aGlzIHRlc3Qgc3VpdGUgc2tpcHMgYWxsIHRlc3RzIHJl cXVpcmluZworOzsgR251UEcuCisKKzs7OyBDb2RlOgorCisocmVxdWlyZSAnY2wtbGliKQor KHJlcXVpcmUgJ2VydCkKKyhyZXF1aXJlICdlcnQteCkKKyhyZXF1aXJlICdwbHN0b3JlKQor CisoZGVmY29uc3QgcGxzdG9yZS10ZXN0cy1yZWNpcGllbnQgInBsc3RvcmUtdGVzdHMtcmNw dCIpCisKKyhkZWZjb25zdCBwbHN0b3JlLXRlc3RzLXJlY2lwaWVudC1wYXNzcGhyYXNlICJw bHN0b3JlLXRlc3RzLXBhc3NwaHJhc2UiKQorCisMCisKKzs7OyBwbGlzdCBhbmQgYWxpc3Qg aGFuZGxpbmcuCisKKzs7IFJldHVybiB3aGV0aGVyIE9CSkVDVCBpcyBhIHZhbGlkIHBsc3Rv cmUgYWxpc3QuICBUaGF0IGlzLCBhCis7OyBzdHJpbmctaW5kZXhlZCBhbGlzdCBvZiBwbGlz dHMgaGF2aW5nIGtleXdvcmQgc3ltYm9scyBhcyBwcm9wZXJ0eQorOzsgbmFtZXMuCisoZGVm dW4gcGxzdG9yZS10ZXN0cy1hbGlzdC1wIChvYmplY3QpCisgIChhbmQgKGxpc3RwIG9iamVj dCkKKyAgICAgICAoY2wtZXZlcnkKKyAgICAgICAgKGxhbWJkYSAoZW50cnkpCisgICAgICAg ICAgKGFuZAorICAgICAgICAgICAoY29uc3AgZW50cnkpCisgICAgICAgICAgIChzdHJpbmdw IChjYXIgZW50cnkpKQorICAgICAgICAgICAobGlzdHAgKGNkciBlbnRyeSkpCisgICAgICAg ICAgIChjbC1sb29wCisgICAgICAgICAgICBmb3IgbWVtYmVyIG9uIChjZHIgZW50cnkpIGJ5 ICMnY2RkcgorICAgICAgICAgICAgZm9yIHBuYW1lICA9IChjYXIgbWVtYmVyKQorICAgICAg ICAgICAgZm9yIGt3c3ltcCA9IChhbmQgKHN5bWJvbHAgcG5hbWUpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoZXEgKGFyZWYgKHN5bWJvbC1uYW1lIHBuYW1lKSAwKSA/Oikp CisgICAgICAgICAgICB1bmxlc3Mga3dzeW1wIHJldHVybiBuaWwKKyAgICAgICAgICAgIGZp bmFsbHkgcmV0dXJuIHQpKSkKKyAgICAgICAgb2JqZWN0KSkpCisKKzs7IFNvcnQgUExJU1Qg aW4gYSBzdGFibGUgbWFubmVyIGFuZCByZXR1cm4gdGhlIHJlc3VsdCBhcyBhIG5ldyBwbGlz dC4KKzs7IEFzc3VtZSB0aGF0IGFsbCBwcm9wZXJ0eSBuYW1lcyBhcmUgc3ltYm9scyBhbmQg ZGVmYXVsdCBhIG1pc3NpbmcKKzs7IHRyYWlsaW5nIHByb3BlcnR5IHZhbHVlIHRvIG5pbC4K KyhkZWZ1biBwbHN0b3JlLXRlc3RzLXBsaXN0LXNvcnQgKHBsaXN0KQorICA7OyBLZWVwIHRo aXMgcmVhZGFibGUgaW5zdGVhZCBvZiBmdW5jdGlvbmFsOiBDb252ZXJ0IFBMSVNUIHRvIGFu CisgIDs7IGFsaXN0LCBzb3J0IHRoYXQsIGFuZCBjb252ZXJ0IHRoZSBzb3J0ZWQgYWxpc3Qg YmFjayB0byBhIHBsaXN0LgorICAobGV0IChhbGlzdCkKKyAgICAoc2V0cSBhbGlzdAorICAg ICAgICAgIChjbC1sb29wCisgICAgICAgICAgIGZvciBtZW1iZXIgb24gcGxpc3QgYnkgIydj ZGRyCisgICAgICAgICAgIGNvbGxlY3QgKGNvbnMgKHN5bWJvbC1uYW1lIChjYXIgbWVtYmVy KSkgKGNhZHIgbWVtYmVyKSkpKQorICAgIChzZXRxIGFsaXN0CisgICAgICAgICAgKGNsLXN0 YWJsZS1zb3J0IGFsaXN0CisgICAgICAgICAgICMnc3RyaW5nLWxlc3NwIDprZXkgIydjYXIp KQorICAgIChzZXRxIHBsaXN0CisgICAgICAgICAgKGNsLWxvb3AKKyAgICAgICAgICAgZm9y IChrZXkgLiB2YWx1ZSkgaW4gYWxpc3QKKyAgICAgICAgICAgY29sbGVjdCAoaW50ZXJuIGtl eSkKKyAgICAgICAgICAgY29sbGVjdCB2YWx1ZSkpCisgICAgcGxpc3QpKQorCis7OyBTb3J0 IHBsc3RvcmUgYWxpc3QgQUxJU1QgYm90aCBvbiBhbGlzdCBhbmQgb24gcGxpc3QgbGV2ZWwu ICBTb3J0IGl0Cis7OyBpbiBhIHN0YWJsZSBtYW5uZXIgb24gYWxsIGxldmVscyBhbmQgcmV0 dXJuIHRoZSByZXN1bHQgYXMgYSBuZXcKKzs7IGFsaXN0LCB3aXRob3V0IG1vZGlmeWluZyBB TElTVC4KKyhkZWZ1biBwbHN0b3JlLXRlc3RzLWFsaXN0LXNvcnQgKGFsaXN0KQorICAoY2wt c3RhYmxlLXNvcnQKKyAgIChtYXBjYXIKKyAgICAobGFtYmRhIChlbnRyeSkKKyAgICAgIChj b25zIChjYXIgZW50cnkpCisgICAgICAgICAgICAocGxzdG9yZS10ZXN0cy1wbGlzdC1zb3J0 IChjZHIgZW50cnkpKSkpCisgICAgYWxpc3QpCisgICAjJ3N0cmluZy1sZXNzcCA6a2V5ICMn Y2FyKSkKKworOzsgUmV0dXJuIHdoZXRoZXIgQUxJU1QgaXMgYSBwbHN0b3JlIGFsaXN0IGFu ZCB3aGV0aGVyIGl0IGVxdWFscworOzsgKGFmdGVyIHBsc3RvcmUtYWxpc3Qtc29ydGluZykg UkVGLUFMSVNULgorKGRlZnVuIHBsc3RvcmUtdGVzdHMtYWxpc3RzLWVxdWFsLXAgKGFsaXN0 IHJlZi1hbGlzdCkKKyAgKGFuZAorICAgKHBsc3RvcmUtdGVzdHMtYWxpc3QtcCBhbGlzdCkK KyAgIChlcXVhbCAocGxzdG9yZS10ZXN0cy1hbGlzdC1zb3J0IGFsaXN0KSByZWYtYWxpc3Qp KSkKKworDAorCis7OzsgUGFzc3BocmFzZSBoYW5kbGluZy4KKworOzsgVGhlIGl0ZW1zIG9u IHRoaXMgcGFnZSBjYXJlIGFib3V0OgorOzsKKzs7IC0gUHJvdmlkaW5nIHNvbWUgcmVzcG9u c2UgdG8gbG9vcGJhY2tlZCBwYXNzcGhyYXNlIHJlcXVlc3RzOyBhbmQKKzs7Cis7OyAtIHRy YWNraW5nIHdoZXRoZXIgYW5kIHdoaWNoIHJlc3BvbnNlcyBoYXZlIGJlZW4gcHJvdmlkZWQg ZHVyaW5nCis7OyAgIGV4ZWN1dGlvbiBvZiBzb21lIGZvcm0uCisKKzs7IFJlc3BvbnNlIHRv IHByb3ZpZGUgdG8gcGFzc3BocmFzZSByZXF1ZXN0cyBkb25lIHRocm91Z2ggZnVuY3Rpb24K Kzs7IGBwbHN0b3JlLXRlc3RzLWhhbmRsZS1wYXNzcGhyYXNlLXJlcXVlc3QnLiAgT25lIG9m OgorOzsKKzs7IC0gYG9rJzogcHJvdmlkZSB0aGUgY29ycmVjdCBwYXNzcGhyYXNlIGZyb20K Kzs7ICAgYHBsc3RvcmUtdGVzdHMtcmVjaXBpZW50LXBhc3NwaHJhc2UnCis7OworOzsgLSBg d3JvbmcnOiBwcm92aWRlIGFuIGludmFsaWQgKGVtcHR5KSBwYXNzcGhyYXNlCis7OworOzsg LSBgcXVpdCc6IHF1aXQgcGFzc3BocmFzZSByZXF1ZXN0IHdpdGggZnVuY3Rpb24gYGtleWJv YXJkLXF1aXQnCis7OworOzsgLSBhbnkgb3RoZXIgc3ltYm9sOiBzaWduYWwgYW4gZXJyb3IK Kzs7Cis7OyBMZXQtYm91bmQgYnkgbWFjcm8gYHdpdGgtcGxzdG9yZS10ZXN0cy1wYXNzcGhy YXNlJyBhbmQgKGFzIGRlZmF1bHQpCis7OyBieSBtYWNybyBgd2l0aC1wbHN0b3JlLXRlc3Rz Jy4KKyhkZWZ2YXIgcGxzdG9yZS10ZXN0cy1wYXNzcGhyYXNlLXJlc3BvbnNlIG5pbCkKKwor OzsgSGlzdG9yeSBvZiBwYXNzcGhyYXNlIHJlc3BvbnNlcyBwcm92aWRlZCB0aHJvdWdoIGZ1 bmN0aW9uCis7OyBgcGxzdG9yZS10ZXN0cy1oYW5kbGUtcGFzc3BocmFzZS1yZXF1ZXN0Jy4g IFRoaXMgaXMgYSBzdGFjayBvZgorOzsgc3RhY2tzIG9mIHRoZSBjb2xsZWN0ZWQgcGFzc3Bo cmFzZSByZXNwb25zZXMuCisoZGVmdmFyIHBsc3RvcmUtdGVzdHMtcGFzc3BocmFzZS1oaXN0 b3J5IG5pbCkKKworOzsgSGFuZGxlIGEgcGFzc3BocmFzZSByZXF1ZXN0IGFjY29yZGluZyB0 bworOzsgYHBsc3RvcmUtdGVzdHMtcGFzc3BocmFzZS1yZXNwb25zZScgYW5kIHJlY29yZCB0 aGUgcHJvdmlkZWQKKzs7IHJlc3BvbnNlIGluIGBwbHN0b3JlLXRlc3RzLXBhc3NwaHJhc2Ut aGlzdG9yeScuCisoZGVmdW4gcGxzdG9yZS10ZXN0cy1oYW5kbGUtcGFzc3BocmFzZS1yZXF1 ZXN0ICgpCisgIChwdXNoIHBsc3RvcmUtdGVzdHMtcGFzc3BocmFzZS1yZXNwb25zZQorICAg ICAgICAoY2FyIHBsc3RvcmUtdGVzdHMtcGFzc3BocmFzZS1oaXN0b3J5KSkKKyAgKHBjYXNl IHBsc3RvcmUtdGVzdHMtcGFzc3BocmFzZS1yZXNwb25zZQorICAgICgnb2sgICAgKGNvcHkt c2VxdWVuY2UgcGxzdG9yZS10ZXN0cy1yZWNpcGllbnQtcGFzc3BocmFzZSkpCisgICAgKCd3 cm9uZyAiIikKKyAgICAoJ3F1aXQgIChrZXlib2FyZC1xdWl0KSkKKyAgICAoXyAgICAgIChl cnJvciAiSW52YWxpZCBwYXNzcGhyYXNlIHJlcXVlc3QiKSkpKQorCis7OyBMZXQtYmluZCBg cGxzdG9yZS10ZXN0cy1wYXNzcGhyYXNlLXJlc3BvbnNlJyB0byBwcm92aWRlIFJFU1BPTlNF IHRvCis7OyBhbGwgcGFzc3BocmFzZSByZXF1ZXN0cyBkb25lIGR1cmluZyBleGVjdXRpb24g b2YgQk9EWS4gIElmCis7OyBQQVNTUEhSQVNFLUVYUEVDVEVEIGVxdWFscyBgbm8nLCBlbnN1 cmUgdGhhdCBubyBwYXNzcGhyYXNlcyBoYXZlCis7OyBiZWVuIHJlcXVlc3RlZCBkdXJpbmcg ZXhlY3V0aW9uIG9mIEJPRFksIGlmIGl0IGVxdWFscyBgeWVzJywgZW5zdXJlCis7OyB0aGF0 IGF0IGxlYXN0IG9uZSBwYXNzcGhyYXNlIGhhcyBiZWVuIHJlcXVlc3RlZCwgb3RoZXJ3aXNl IGRvIG5vdAorOzsgYXNzdW1lIGFueXRoaW5nIG9uIHRoZSBudW1iZXIgb2YgcGFzc3BocmFz ZSByZXF1ZXN0cy4KKzs7Cis7OyBUaGlzIG1hY3JvIGlzIG1vc3RseSBpbnRlbmRlZCB0byB0 ZXN0IGZvciAqYWJzZW5jZSogb2YgcGFzc3BocmFzZQorOzsgcmVxdWVzdHMsIHNpbmNlIGxp YnJhcnkgYHBsc3RvcmUnIHByb21pc2VzIHRvIHVzZSBkZWNyeXB0aW9uIGFuZAorOzsgZW5j cnlwdGlvbiAoYW5kLCBhY2NvcmRpbmdseSwgdG8gcmVxdWVzdCBwYXNzcGhyYXNlcykgb25s eSB3aGVuCis7OyBhY3R1YWxseSBuZWVkZWQuCis7OworOzsgVGhpcyBjb3VsZCBiZSBleHRl bmRlZCB0byB0cmFjayBwcmVzZW5jZSBvciBhYnNlbmNlIG9mIHJlcXVlc3RzCis7OyBldmVu IG1vcmUgY2xvc2VseSwgYnV0IHRoZSBydWxlcyB3aGVuIHRvIGV4cGVjdCByZXF1ZXN0cyBh bmQgd2hlbgorOzsgbm90IGRlcGVuZCBvbiBhZ2VudCBjYWNoaW5nIGFuZCBvbiBlbmNyeXB0 aW9uIHR5cGUsIHdoaWNoIHdvdWxkCis7OyBtYWtlIHN1Y2ggdGVzdHMgcmF0aGVyIHRyaWNr eS4KKyhjbC1kZWZtYWNybyB3aXRoLXBsc3RvcmUtdGVzdHMtcGFzc3BocmFzZSAoKCZrZXkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXNwb25z ZSAnJ29rKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KHBhc3NwaHJhc2UtZXhwZWN0ZWQgJydtYXliZSkpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICZyZXN0IGJvZHkpCisgIChkZWNsYXJlIChpbmRlbnQg MSkgKGRlYnVnIChzZXhwIGJvZHkpKSkKKyAgYCh1bndpbmQtcHJvdGVjdAorICAgICAgIChs ZXQgKChwbHN0b3JlLXRlc3RzLXBhc3NwaHJhc2UtcmVzcG9uc2UgLHJlc3BvbnNlKSkKKyAg ICAgICAgIChwdXNoIG5pbCBwbHN0b3JlLXRlc3RzLXBhc3NwaHJhc2UtaGlzdG9yeSkKKyAg ICAgICAgICxAYm9keQorICAgICAgICAgKHdoZW4gKGVxICxwYXNzcGhyYXNlLWV4cGVjdGVk ICdubykKKyAgICAgICAgICAgKHNob3VsZCAobm90IChjYXIgcGxzdG9yZS10ZXN0cy1wYXNz cGhyYXNlLWhpc3RvcnkpKSkpCisgICAgICAgICAod2hlbiAoZXEgLHBhc3NwaHJhc2UtZXhw ZWN0ZWQgJ3llcykKKyAgICAgICAgICAgKHNob3VsZCAoY2FyIHBsc3RvcmUtdGVzdHMtcGFz c3BocmFzZS1oaXN0b3J5KSkpKQorICAgICAocG9wIHBsc3RvcmUtdGVzdHMtcGFzc3BocmFz ZS1oaXN0b3J5KSkpCisKKwwKKworOzs7IFRlc3QgZXhlY3V0aW9uIGluZnJhc3RydWN0dXJl LgorCis7OyBDcmVhdGUgYW5kIHJldHVybiBhIG5ldyBwbHN0b3JlIHRlc3QgZW52aXJvbm1l bnQgZnJvbSBURVNURElSLgorOzsKKzs7IFRoZSB0ZXN0IGVudmlyb25tZW50IGlzIGEgcGxp c3Qgd2hpY2ggZ2V0cyBzdWNjZXNzaXZlbHkgZmlsbGVkIGJ5Cis7OyB0aGUgc2V0dXAgZnVu Y3Rpb25zIGJlbG93IHdpdGggdGhlIGZvbGxvd2luZyBtZW1iZXJzOgorOzsKKzs7ICAgOnN0 YXR1cworOzsgICAgIFN5bWJvbCBkZXNjcmliaW5nIGVudmlyb25tZW50IHN0YXR1cy4gIE9u ZSBvZiBgaW5pdGlhbCcsCis7OyAgICAgYGVwZy1zZXQtdXAnLCBgZ3BnLWhvbWUtZGlyZWN0 b3J5LXNldC11cCcsIGBza2lwLXRlc3RzJy4KKzs7ICAgOnNraXAtcmVhc29uCis7OyAgICAg U3RyaW5nIGRlc2NyaWJpbmcgdGhlIHJlYXNvbiBmb3IgdGhlIHRlc3RzIHRvIGJlIHNraXBw ZWQgaWYKKzs7ICAgICBzdGF0dXMgZXF1YWxzIGBza2lwLXRlc3RzJywgb3RoZXJ3aXNlIG5p bC4KKzs7ICAgOmVwZy1ob21lZGlyLCA6ZXBnLWNvbmZpZywgOmVwZy1jb250ZXh0Cis7OyAg ICAgU2VsZi1leHBsYWluaW5nLgorOzsKKzs7IFRoZSBFUEcgY29uZmlndXJhdGlvbiBhbmQg Y29udGV4dCBzdG9yZWQgaW4gdGhlIHBsc3RvcmUgdGVzdAorOzsgZW52aXJvbm1lbnQgYXJl IHVzZWQgb25seSBmb3IgdGhlIGtleSBtYW5hZ2VtZW50IGRvbmUgYnkgdGhpcyB0ZXN0Cis7 OyBzdWl0ZSwgYW5kIG5vdCBmb3IgdGhlIGVuY3J5cHRpb24gYW5kIGRlY3J5cHRpb24gb3Bl cmF0aW9ucyBkb25lIGJ5Cis7OyBwbHN0b3JlLiAgRm9yIHRoZXNlLCBwbHN0b3JlIHNldHMg dXAgaXRzIG93biBFUEcgY29udGV4dCBtYWlubHkKKzs7IGZyb20gYGVwZy1ncGctaG9tZS1k aXJlY3RvcnknIGFuZCBgZXBnLXBpbmVudHJ5LW1vZGUnLCB3aGljaCBtYWNybworOzsgYHdp dGgtcGxzdG9yZS10ZXN0cycgc2V0cyBhcyBuZWVkZWQuCisoZGVmdW4gcGxzdG9yZS10ZXN0 cy1tYWtlLWVudmlyb25tZW50ICh0ZXN0ZGlyKQorICAobGlzdAorICAgOnN0YXR1cyAgICAg ICdpbml0aWFsCisgICA6c2tpcC1yZWFzb24gbmlsCisgICA6ZXBnLWhvbWVkaXIgKGV4cGFu ZC1maWxlLW5hbWUgIi5nbnVwZyIgdGVzdGRpcikpKQorCis7OyBTZXQgdXAgRVBHLCBkZXRl cm1pbmUgYSB1c2FibGUgR251UEcgY29uZmlndXJhdGlvbiwgYW5kIHN0b3JlIHRoZQorOzsg cmVzdWx0aW5nIGluZm9ybWF0aW9uIGluIHBsc3RvcmUgdGVzdCBlbnZpcm9ubWVudCBFTlZJ Uk9OTUVOVC4KKzs7Cis7OyBHbnVQRyAyLjEuNSBzaG91bGQgYWxyZWFkeSBoYXZlIGEgdXNh YmxlIGxvb3BiYWNrIHBpbmVudHJ5IChzZWUKKzs7IEluZm8gbm9kZSBgKGVwYSkgR251UEcg dmVyc2lvbiBjb21wYXRpYmlsaXR5KScsIGJ1dAorOzsgYGVwZy1ncGcyLW1pbmltdW0tdmVy c2lvbicgbWVudGlvbnMgMi4xLjYsIHNvIHJlcXVpcmUgdGhhdC4KKyhkZWZ1biBwbHN0b3Jl LXRlc3RzLXNldC11cC1lcGcgKGVudmlyb25tZW50KQorICAoaWYtbGV0ICgoY29uZmlnIChl cGctZmluZC1jb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgICAgICdPcGVuUEdQIG5p bAorICAgICAgICAgICAgICAgICAgICAnKChPcGVuUEdQIGVwZy1ncGctcHJvZ3JhbQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiZ3BnIiAgLiAiMi4xLjYiKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICgiZ3BnMiIgLiAiMi4xLjYiKSkpKSkKKyAgICAg ICAgICAgKGNvbnRleHQgKGVwZy1tYWtlLWNvbnRleHQgJ09wZW5QR1ApKSkKKyAgICAgIChw cm9nbgorICAgICAgICAoc2V0ZiAoZXBnLWNvbnRleHQtcHJvZ3JhbSBjb250ZXh0KQorICAg ICAgICAgICAgICAoYWxpc3QtZ2V0ICdwcm9ncmFtIGNvbmZpZykpCisgICAgICAgIChzZXRm IChlcGctY29udGV4dC1ob21lLWRpcmVjdG9yeSBjb250ZXh0KQorICAgICAgICAgICAgICAo cGxpc3QtZ2V0IGVudmlyb25tZW50IDplcGctaG9tZWRpcikpCisgICAgICAgIChzZXRmIChl cGctY29udGV4dC1waW5lbnRyeS1tb2RlIGNvbnRleHQpICdsb29wYmFjaykKKyAgICAgICAg KHBsaXN0LXB1dCBlbnZpcm9ubWVudCA6ZXBnLWNvbmZpZyAgY29uZmlnKQorICAgICAgICAo cGxpc3QtcHV0IGVudmlyb25tZW50IDplcGctY29udGV4dCBjb250ZXh0KQorICAgICAgICAo cGxpc3QtcHV0IGVudmlyb25tZW50IDpzdGF0dXMgICAgICdlcGctc2V0LXVwKSkKKyAgICAo cGxpc3QtcHV0IGVudmlyb25tZW50IDpzdGF0dXMgICAgICAnc2tpcC10ZXN0cykKKyAgICAo cGxpc3QtcHV0IGVudmlyb25tZW50IDpza2lwLXJlYXNvbiAibm8gdXNhYmxlIEdudVBHIGNv bmZpZ3VyYXRpb24iKSkpCisKKzs7IFNldCB1cCBhIEdudVBHIGhvbWUgZGlyZWN0b3J5IGZv ciBvdXIgdGVzdHMgYmVsb3cgdGhlIHBhdGggcG9pbnRlZAorOzsgdG8gYnkgbWVtYmVyIGA6 ZXBnLWhvbWVkaXInIGluIHBsc3RvcmUgdGVzdCBlbnZpcm9ubWVudAorOzsgRU5WSVJPTk1F TlQuICBVc2UgdGhlIHByZWRlZmluZWQgcHVibGljIGFuZCBwcml2YXRlIGtleSBmcm9tIHRo ZQorOzsgRVJUIHJlc291cmNlcyB0byBkbyBzby4gIFBlcmZvcm0gYSBmaW5hbCBlbmNyeXB0 LWRlY3J5cHQgcm91bmQtdHJpcAorOzsgdGVzdC4KKzs7Cis7OyBUaGUga2V5cyB1c2VkIGJl bG93IGhhdmUgYmVlbiBjcmVhdGVkIHdpdGggR251UEcgMi4yLjcgYW5kIGV4cG9ydGVkCis7 OyB0byB0aGUgRVJUIHJlc291cmNlIGRpcmVjdG9yeSBhcyBmb2xsb3dzOgorOzsKKzs7ICAg bWtkaXIgLmdudXBndG1waG9tZSAmJiBjaG1vZCAwNzAwIC5nbnVwZ3RtcGhvbWUKKzs7ICAg ZWNobyBwbHN0b3JlLXRlc3RzLXBhc3NwaHJhc2UgfAorOzsgICBncGcgLS1ob21lZGlyIC5n bnVwZ3RtcGhvbWUgLS1xdWlldCBcCis7OyAgICAgICAtLXBpbmVudHJ5LW1vZGUgbG9vcGJh Y2sgLS1wYXNzcGhyYXNlLWZkIDAgXAorOzsgICAgICAgLS1xdWljay1nZW5lcmF0ZS1rZXkg cGxzdG9yZS10ZXN0cy1yY3B0IGRlZmF1bHQgZGVmYXVsdCAwCis7OyAgIGdwZyAtLWhvbWVk aXIgLmdudXBndG1waG9tZSAtLXF1aWV0IFwKKzs7ICAgICAgIC0tYXJtb3IgLS1leHBvcnQg cGxzdG9yZS10ZXN0cy1yY3B0IFwKKzs7ICAgICAgID4gdGVzdC9saXNwL3Bsc3RvcmUtcmVz b3VyY2VzL3Bsc3RvcmUtdGVzdHMucHVia2V5Cis7OyAgIGVjaG8gcGxzdG9yZS10ZXN0cy1w YXNzcGhyYXNlIHwKKzs7ICAgZ3BnIC0taG9tZWRpciAuZ251cGd0bXBob21lIC0tcXVpZXQg XAorOzsgICAgICAgLS1waW5lbnRyeS1tb2RlIGxvb3BiYWNrIC0tcGFzc3BocmFzZS1mZCAw IFwKKzs7ICAgICAgIC0tYXJtb3IgLS1leHBvcnQtc2VjcmV0LWtleSBwbHN0b3JlLXRlc3Rz LXJjcHQgXAorOzsgICAgICAgPiB0ZXN0L2xpc3AvcGxzdG9yZS1yZXNvdXJjZXMvcGxzdG9y ZS10ZXN0cy5zZWNrZXkKKzs7ICAgcm0gLXJmIC5nbnVwZ3RtcGhvbWUKKyhkZWZ1biBwbHN0 b3JlLXRlc3RzLXNldC11cC1ncGctaG9tZS1kaXJlY3RvcnkgKGVudmlyb25tZW50KQorICAo bGV0ICgoaG9tZWRpciAocGxpc3QtZ2V0IGVudmlyb25tZW50IDplcGctaG9tZWRpcikpCisg ICAgICAgIChjb250ZXh0IChwbGlzdC1nZXQgZW52aXJvbm1lbnQgOmVwZy1jb250ZXh0KSkK KyAgICAgICAga2V5IChzdGF0ZSAwKSB0aW1lb3V0LXRpbWVyKQorCisgICAgOzsgQ3JlYXRl IEdudVBHIGhvbWUgZGlyZWN0b3J5LgorICAgIChtYWtlLWRpcmVjdG9yeSBob21lZGlyKQor ICAgIChzZXQtZmlsZS1tb2RlcyBob21lZGlyICNvMDcwMCkKKworICAgIDs7IENvbmZpZ3Vy ZSBwYXNzcGhyYXNlIGhhbmRsaW5nIHRvIHNvbWUgc2FuZSBkZWZhdWx0cywgZXZlbiBpZgor ICAgIDs7IHRoZXNlIHNob3VsZCBiZSBhbHJlYWR5IGluIGVmZmVjdCBhcyBHbnVQRyBhZ2Vu dCBkZWZhdWx0cywKKyAgICA7OyBzaW5jZSB0aGUgR251UEcgYWdlbnQgZ2V0cyBzdGFydGVk IGFuZXcgZm9yIGV2ZXJ5IG5ldyBHbnVQRworICAgIDs7IGhvbWUgZGlyZWN0b3J5LgorICAg ICh3aXRoLXRlbXAtZmlsZSAoZXhwYW5kLWZpbGUtbmFtZSAiZ3BnLWFnZW50LmNvbmYiIGhv bWVkaXIpCisgICAgICAoaW5zZXJ0ICJhbGxvdy1sb29wYmFjay1waW5lbnRyeVxuIikKKyAg ICAgIChpbnNlcnQgImRlZmF1bHQtY2FjaGUtdHRsIDYwMFxuIikKKyAgICAgIChpbnNlcnQg Im1heC1jYWNoZS10dGwgNzIwMFxuIikpCisKKyAgICA7OyBJbXBvcnQgYW5kIGNvbmZpZ3Vy ZSBrZXlzLiAgVGhpcyBzdGVwLCBtb3N0IG5vdGFibHkgdGhlIGltcG9ydAorICAgIDs7IG9m IHRoZSBwcml2YXRlIGtleSwgaXMgZXhwZW5zaXZlIGluIHRlcm1zIG9mIHdhbGwtY2xvY2sg dGltZS4KKyAgICAoc2V0ZiAoZXBnLWNvbnRleHQtcGFzc3BocmFzZS1jYWxsYmFjayBjb250 ZXh0KQorICAgICAgICAgICcoKGxhbWJkYSAoXyBfIF8pIChjb3B5LXNlcXVlbmNlIHBsc3Rv cmUtdGVzdHMtcmVjaXBpZW50LXBhc3NwaHJhc2UpKSkpCisgICAgKGVwZy1pbXBvcnQta2V5 cy1mcm9tLWZpbGUgY29udGV4dCAoZXJ0LXJlc291cmNlLWZpbGUgInBsc3RvcmUtdGVzdHMu cHVia2V5IikpCisgICAgKGVwZy1pbXBvcnQta2V5cy1mcm9tLWZpbGUgY29udGV4dCAoZXJ0 LXJlc291cmNlLWZpbGUgInBsc3RvcmUtdGVzdHMuc2Vja2V5IikpCisgICAgKHNldHEga2V5 IChjYXItc2FmZSAoZXBnLWxpc3Qta2V5cyBjb250ZXh0IHBsc3RvcmUtdGVzdHMtcmVjaXBp ZW50KSkpCisgICAgKGNsLWFzc2VydCAoY2wtdHlwZXAga2V5ICdlcGcta2V5KSkKKyAgICA7 OyBUcnVzdCBmaXJzdCBzdWJrZXkgb2YgS0VZIHVsdGltYXRlbHkuCisgICAgKGVwZy1lZGl0 LWtleQorICAgICBjb250ZXh0IGtleQorICAgICAobGFtYmRhIChjb250ZXh0IHN0YXR1cyBz dHJpbmcgX2hhbmRiYWNrKQorICAgICAgIChwY2FzZSAodmVjdG9yIHN0YXRlIHN0YXR1cyBz dHJpbmcpCisgICAgICAgICAoYFswICAiS0VZX0NPTlNJREVSRUQiICxfXSkKKyAgICAgICAg ICgnWzEgICJHRVRfTElORSIgImtleWVkaXQucHJvbXB0Il0KKyAgICAgICAgICAocHJvY2Vz cy1zZW5kLXN0cmluZyAoZXBnLWNvbnRleHQtcHJvY2VzcyBjb250ZXh0KSAiMVxuIikpCisg ICAgICAgICAoJ1syICAiR09UX0lUIiAiIl0pCisgICAgICAgICAoJ1szICAiR0VUX0xJTkUi ICJrZXllZGl0LnByb21wdCJdCisgICAgICAgICAgKHByb2Nlc3Mtc2VuZC1zdHJpbmcgKGVw Zy1jb250ZXh0LXByb2Nlc3MgY29udGV4dCkgInRydXN0XG4iKSkKKyAgICAgICAgICgnWzQg ICJHT1RfSVQiICIiXSkKKyAgICAgICAgICgnWzUgICJHRVRfTElORSIgImVkaXRfb3duZXJ0 cnVzdC52YWx1ZSJdCisgICAgICAgICAgKHByb2Nlc3Mtc2VuZC1zdHJpbmcgKGVwZy1jb250 ZXh0LXByb2Nlc3MgY29udGV4dCkgIjVcbiIpKQorICAgICAgICAgKCdbNiAgIkdPVF9JVCIg IiJdKQorICAgICAgICAgKCdbNyAgIkdFVF9CT09MIiAiZWRpdF9vd25lcnRydXN0LnNldF91 bHRpbWF0ZS5va2F5Il0KKyAgICAgICAgICAocHJvY2Vzcy1zZW5kLXN0cmluZyAoZXBnLWNv bnRleHQtcHJvY2VzcyBjb250ZXh0KSAieWVzXG4iKSkKKyAgICAgICAgICgnWzggICJHT1Rf SVQiICIiXSkKKyAgICAgICAgICgnWzkgICJHRVRfTElORSIgImtleWVkaXQucHJvbXB0Il0K KyAgICAgICAgICAocHJvY2Vzcy1zZW5kLXN0cmluZyAoZXBnLWNvbnRleHQtcHJvY2VzcyBj b250ZXh0KSAicXVpdFxuIikpCisgICAgICAgICAoJ1sxMCAiR09UX0lUIiAiIl0pCisgICAg ICAgICAoXworICAgICAgICAgIChlcnJvciAiS2V5IGVkaXQgcHJvdG9jb2wgZXJyb3IgaW4g c3RhdGUgJWQiIHN0YXRlKSkpCisgICAgICAgKHNldHEgc3RhdGUgKDErIHN0YXRlKSkpCisg ICAgIG5pbCkKKworICAgIDs7IEVuc3VyZSBhbiBlbmNyeXB0LWRlY3J5cHQgcm91bmQtdHJp cCB3b3JrcywgaW4gcGFydGljdWxhcgorICAgIDs7IHdpdGhvdXQgaGFuZ3MgcmVsYXRlZCB0 byBHbnVQRyAyLjQuKiBhbmQgaXRzIGJ1ZyBUNjQ4MS4KKyAgICAodW53aW5kLXByb3RlY3QK KyAgICAgICAgKHByb2duCisgICAgICAgICAgKHNldHEgdGltZW91dC10aW1lcgorICAgICAg ICAgICAgICAgIChydW4tYXQtdGltZQorICAgICAgICAgICAgICAgICA1IG5pbAorICAgICAg ICAgICAgICAgICAobGFtYmRhICgpCisgICAgICAgICAgICAgICAgICAgKHdoZW4tbGV0Cisg ICAgICAgICAgICAgICAgICAgICAgICgocHJvY2VzcyAoZXBnLWNvbnRleHQtcHJvY2VzcyBj b250ZXh0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICgoZXEgKHByb2Nlc3Mtc3RhdHVz IHByb2Nlc3MpICdydW4pKSkKKyAgICAgICAgICAgICAgICAgICAgIChraWxsLXByb2Nlc3Mg cHJvY2VzcykKKyAgICAgICAgICAgICAgICAgICAgIChwbGlzdC1wdXQgZW52aXJvbm1lbnQg OnN0YXR1cyAgICAgICdza2lwLXRlc3RzKQorICAgICAgICAgICAgICAgICAgICAgKHBsaXN0 LXB1dCBlbnZpcm9ubWVudCA6c2tpcC1yZWFzb24gIkdudVBHIHByb2Nlc3MgdGltZW91dCIp KSkpKQorICAgICAgICAgIChwY2FzZSAoY29uZGl0aW9uLWNhc2UgZXJyCisgICAgICAgICAg ICAgICAgICAgICAoZXF1YWwKKyAgICAgICAgICAgICAgICAgICAgICAoZXBnLWRlY3J5cHQt c3RyaW5nCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQKKyAgICAgICAgICAgICAg ICAgICAgICAgKGVwZy1lbmNyeXB0LXN0cmluZworICAgICAgICAgICAgICAgICAgICAgICAg Y29udGV4dCAiZm9vYmFyYmF6IiAobGlzdCBrZXkpKSkKKyAgICAgICAgICAgICAgICAgICAg ICAiZm9vYmFyYmF6IikKKyAgICAgICAgICAgICAgICAgICAoZXJyb3IgZXJyKSkKKyAgICAg ICAgICAgICgndCAgIChwbGlzdC1wdXQgZW52aXJvbm1lbnQgOnN0YXR1cyAnZ3BnLWhvbWUt ZGlyZWN0b3J5LXNldC11cCkpCisgICAgICAgICAgICAoJ25pbCAocGxpc3QtcHV0IGVudmly b25tZW50IDpzdGF0dXMgICAgICAnc2tpcC10ZXN0cykKKyAgICAgICAgICAgICAgICAgIChw bGlzdC1wdXQgZW52aXJvbm1lbnQgOnNraXAtcmVhc29uICJHbnVQRyByb3VuZC10cmlwIGZh aWx1cmUiKSkKKyAgICAgICAgICAgIChlcnIgICh1bmxlc3MgKGVxIChwbGlzdC1nZXQgZW52 aXJvbm1lbnQgOnN0YXR1cykgJ3NraXAtdGVzdHMpCisgICAgICAgICAgICAgICAgICAgIChw bGlzdC1wdXQgZW52aXJvbm1lbnQgOnN0YXR1cyAgICAgICdza2lwLXRlc3RzKQorICAgICAg ICAgICAgICAgICAgICAocGxpc3QtcHV0IGVudmlyb25tZW50IDpza2lwLXJlYXNvbiAoZXJy b3ItbWVzc2FnZS1zdHJpbmcgZXJyKSkpKSkpCisgICAgICAoY2FuY2VsLXRpbWVyIHRpbWVv dXQtdGltZXIpKSkpCisKKzs7IFNldCB1cCBwbHN0b3JlIHRlc3QgZW52aXJvbm1lbnQgYW5k IGV4ZWN1dGUgQk9EWS4gIEV4ZWN1dGUgQk9EWQorOzsgd2l0aCBzeW1tZXRyaWMgZW5jcnlw dGlvbiBpZiBFTkNSWVBUSU9OLVRZUEUgZXF1YWxzIGBzeW1tZXRyaWMnLAorOzsgd2l0aCBw dWJsaWMta2V5IGVuY3J5cHRpb24gaWYgRU5DUllQVElPTi1UWVBFIGVxdWFscyBgcHVibGlj LWtleScsCis7OyBvdGhlcndpc2UgZXhlY3V0ZSBCT0RZIG9uY2UgZm9yIGVhY2ggb2YgdGhl c2UgZW5jcnlwdGlvbiB0eXBlcy4KKzs7Cis7OyBCT0RZIGNhbiB1c2UgdGhlIGZvbGxvd2lu ZyBsZXhpY2FsIHZhcmlhYmxlczoKKzs7Cis7OyAgIGBwbHN0b3JlLWVuY3J5cHQtdG8nCis7 OyAgICAgTm9uLW5pbCBmb3IgcHVibGljLWtleSBlbmNyeXB0aW9uLCBuaWwgZm9yIHN5bW1l dHJpYworOzsgICAgIGVuY3J5cHRpb24uCis7OworOzsgICBgcGxzdG9yZS10ZXN0LWRpcmVj dG9yeScKKzs7ICAgICBQb2ludHMgdG8gYSB0ZXN0IGRpcmVjdG9yeSB3aGljaCBpcyByZW1v dmVkIGFmdGVyIHRoZSB0ZXN0LgorOzsgICAgIFRoZSB0ZXN0IGRpcmVjdG9yeSBpcyBpbml0 aWFsbHkgZW1wdHkgZXhjZXB0IGZvciB0aGUgIi5nbnVwZyIKKzs7ICAgICBHbnVQRyBob21l IGRpcmVjdG9yeS4KKzs7Cis7OyAgIGBwbHN0b3JlLXRlc3QtZmlsZScKKzs7ICAgICBQb2lu dHMgdG8gYSBub24tZXhpc3RlbnQgZmlsZSBiZWxvdyBhYm92ZSBkaXJlY3RvcnkuCis7OyAg ICAgSW5pdGlhbGl6ZWQgdG8gYSBkaWZmZXJlbnQgZmlsZSBuYW1lIGZvciBlYWNoIGV4ZWN1 dGlvbiBvZgorOzsgICAgIEJPRFkuCis7OworOzsgICBgcGxzdG9yZScKKzs7ICAgICBTY3Jh dGNoIHZhcmlhYmxlIGluaXRpYWxpemVkIHRvIG5pbCBmb3IgZWFjaCBleGVjdXRpb24gb2Yg Qk9EWS4KKzs7Cis7OyBBbnkgZm9ybSBpbiBCT0RZIHRoYXQgcG90ZW50aWFsbHkgcmVxdWVz dHMgYSBwYXNzcGhyYXNlIG11c3QgYmUKKzs7IHdyYXBwZWQgaW50byBhbiBhcHByb3ByaWF0 ZSBgd2l0aC1wbHN0b3JlLXRlc3RzLXBhc3NwaHJhc2UnIG1hY3JvLgorOzsgUGFzc3BocmFz ZSByZXF1ZXN0cyBkb25lIG91dHNpZGUgdGhhdCBtYWNybyByZXN1bHQgaW4gYW4gZXJyb3IK Kzs7IGJlaW5nIHNpZ25hbGVkLgorOzsKKzs7IFRlc3QgZW52aXJvbm1lbnQgc2V0dXAgaW5j bHVkZXMgY3JlYXRpb24gb2YgYSB0ZW1wb3JhcnkgR251UEcgaG9tZQorOzsgZGlyZWN0b3J5 IGFuZCBzdGFydHVwIG9mIGEgY29ycmVzcG9uZGluZyBHbnVQRyBhZ2VudCwgd2hpY2ggaXMg YQorOzsgc29tZXdoYXQgZXhwZW5zaXZlIHByb2Nlc3MgaW4gdGVybXMgb2Ygd2FsbC1jbG9j ayB0aW1lLgorOzsKKzs7IFN0YXJ0ZWQgd29ya2luZyBvZmYgYSBzaW1pbGFyIG1hY3JvIGFu ZCB0aGUgdGVzdCByZXNvdXJjZXMgZnJvbQorOzsgZXBnLXRlc3RzLmVsLCBidXQgdGhlcmUg aXMgbm90IG11Y2ggbGVmdCBmcm9tIHRoYXQsIHByb2JhYmx5LgorKGNsLWRlZm1hY3JvIHdp dGgtcGxzdG9yZS10ZXN0cyAoKCZrZXkgZW5jcnlwdGlvbi10eXBlKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJnJlc3QgYm9keSkKKyAgKGRlY2xhcmUgKGluZGVudCAx KSAoZGVidWcgKHNleHAgYm9keSkpKQorICBgKGVydC13aXRoLXRlbXAtZGlyZWN0b3J5IHRl c3RkaXIKKyAgICAgKGxldCAoKGVudmlyb25tZW50IChwbHN0b3JlLXRlc3RzLW1ha2UtZW52 aXJvbm1lbnQgdGVzdGRpcikpKQorICAgICAgIDs7IFNldCB1cCBwbHN0b3JlIHRlc3QgZW52 aXJvbm1lbnQuCisgICAgICAgKHdoZW4gKGVxIChwbGlzdC1nZXQgZW52aXJvbm1lbnQgOnN0 YXR1cykgJ2luaXRpYWwpCisgICAgICAgICAocGxzdG9yZS10ZXN0cy1zZXQtdXAtZXBnIGVu dmlyb25tZW50KSkKKyAgICAgICAod2hlbiAoZXEgKHBsaXN0LWdldCBlbnZpcm9ubWVudCA6 c3RhdHVzKSAnZXBnLXNldC11cCkKKyAgICAgICAgIChwbHN0b3JlLXRlc3RzLXNldC11cC1n cGctaG9tZS1kaXJlY3RvcnkgZW52aXJvbm1lbnQpKQorICAgICAgICh3aGVuIChlcSAocGxp c3QtZ2V0IGVudmlyb25tZW50IDpzdGF0dXMpICdza2lwLXRlc3RzKQorICAgICAgICAgKGVy dC1za2lwIChmb3JtYXQgIkVQRyBvciBHbnVQRyBzZXR1cCBmYWlsZWQgKCVzKSIKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIChwbGlzdC1nZXQgZW52aXJvbm1lbnQgOnNraXAtcmVh c29uKSkpKQorICAgICAgIChjbC1hc3NlcnQgKGVxIChwbGlzdC1nZXQgZW52aXJvbm1lbnQg OnN0YXR1cykKKyAgICAgICAgICAgICAgICAgICAgICAnZ3BnLWhvbWUtZGlyZWN0b3J5LXNl dC11cCkpCisKKyAgICAgICAoZG9saXN0IChyZWNpcGllbnQKKyAgICAgICAgICAgICAgICAo cGNhc2UgLGVuY3J5cHRpb24tdHlwZQorICAgICAgICAgICAgICAgICAgKCdzeW1tZXRyaWMg IChsaXN0IG5pbCkpCisgICAgICAgICAgICAgICAgICAoJ3B1YmxpYy1rZXkgKGxpc3QgcGxz dG9yZS10ZXN0cy1yZWNpcGllbnQpKQorICAgICAgICAgICAgICAgICAgKF8gICAgICAgICAg IChsaXN0IG5pbCBwbHN0b3JlLXRlc3RzLXJlY2lwaWVudCkpKSkKKyAgICAgICAgIChsZXQg KDs7IFNpbGVuY2UgcGxzdG9yZS4KKyAgICAgICAgICAgICAgIChpbmhpYml0LW1lc3NhZ2Ug dCkKKyAgICAgICAgICAgICAgIDs7IFNldCB1cCBFUEcgKGZvciB1c2UgYnkgcGxzdG9yZSkg YW5kIHBsc3RvcmUgaXRzZWxmLgorICAgICAgICAgICAgICAgKGVwZy1ncGctaG9tZS1kaXJl Y3RvcnkgKHBsaXN0LWdldCBlbnZpcm9ubWVudCA6ZXBnLWhvbWVkaXIpKQorICAgICAgICAg ICAgICAgKGVwZy1waW5lbnRyeS1tb2RlICdsb29wYmFjaykKKyAgICAgICAgICAgICAgIChw bHN0b3JlLWVuY3J5cHQtdG8gcmVjaXBpZW50KQorICAgICAgICAgICAgICAgKHBsc3RvcmUt c2VsZWN0LWtleXMgJ3NpbGVudCkKKyAgICAgICAgICAgICAgIDs7IFByZXBhcmUgdGhlc2Ug dG8gZGV0ZWN0IHBhc3NwaHJhc2UgcmVxdWVzdHMgZG9uZQorICAgICAgICAgICAgICAgOzsg b3V0c2lkZSBvZiBhbnkgYHdpdGgtcGxzdG9yZS10ZXN0cy1wYXNzcGhyYXNlJworICAgICAg ICAgICAgICAgOzsgbWFjcm9zLgorICAgICAgICAgICAgICAgKHBsc3RvcmUtdGVzdHMtcGFz c3BocmFzZS1yZXNwb25zZSAnZXJyb3IpCisgICAgICAgICAgICAgICAocGxzdG9yZS10ZXN0 cy1wYXNzcGhyYXNlLWhpc3RvcnkgJyhuaWwpKQorICAgICAgICAgICAgICAgOzsgUHJvdmlk ZSB1dGlsaXR5IHZhcmlhYmxlcyBmb3IgQk9EWS4KKyAgICAgICAgICAgICAgIChwbHN0b3Jl LXRlc3QtZGlyZWN0b3J5IHRlc3RkaXIpCisgICAgICAgICAgICAgICAocGxzdG9yZS10ZXN0 LWZpbGUKKyAgICAgICAgICAgICAgICAoZXhwYW5kLWZpbGUtbmFtZSAoaWYgcGxzdG9yZS1l bmNyeXB0LXRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb3Jt YXQgImF1dGguJXMucGxpc3QiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcGxzdG9yZS1lbmNyeXB0LXRvKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgImF1dGguc3ltbWV0cmljLnBsaXN0IikKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB0ZXN0ZGlyKSkKKyAgICAgICAgICAgICAgIChwbHN0b3Jl IG5pbCkpCisgICAgICAgICAgIChjbC1sZXRmCisgICAgICAgICAgICAgICAoKChzeW1ib2wt ZnVuY3Rpb24gJ3Bsc3RvcmUtcGFzc3BocmFzZS1jYWxsYmFjay1mdW5jdGlvbikKKyAgICAg ICAgICAgICAgICAgKGxhbWJkYSAoXyBfIF8pIChwbHN0b3JlLXRlc3RzLWhhbmRsZS1wYXNz cGhyYXNlLXJlcXVlc3QpKSkpCisgICAgICAgICAgICAgOzsgU2lsZW5jZSBieXRlIGNvbXBp bGVyIHdhcm5pbmdzIHJlbGF0ZWQgdG8gdW51c2VkCisgICAgICAgICAgICAgOzsgbGV4aWNh bCB1dGlsaXR5IHZhcmlhYmxlcy4KKyAgICAgICAgICAgICAod2hlbiBuaWwKKyAgICAgICAg ICAgICAgIChpZ25vcmUgcGxzdG9yZS10ZXN0LWRpcmVjdG9yeQorICAgICAgICAgICAgICAg ICAgICAgICBwbHN0b3JlLXRlc3QtZmlsZQorICAgICAgICAgICAgICAgICAgICAgICBwbHN0 b3JlKSkKKyAgICAgICAgICAgICAsQGJvZHkpCisgICAgICAgICAgIChzaG91bGQgKGVxdWFs IHBsc3RvcmUtdGVzdHMtcGFzc3BocmFzZS1oaXN0b3J5ICcobmlsKSkpKSkpKSkKKworDAor Cis7OzsgVGhlIHRlc3RzIQorCis7OyBFbnN1cmUgdGhlIHRlc3QgcHJpbWl0aXZlcyB3b3Jr IGFzIGludGVuZGVkLgorKGVydC1kZWZ0ZXN0IHBsc3RvcmUtcHJpbWl0aXZlcyAoKQorICA7 OyBwbHN0b3JlLXRlc3RzLWFsaXN0LXAKKyAgKHNob3VsZCAgICAgKHBsc3RvcmUtdGVzdHMt YWxpc3QtcCBuaWwpKQorICAoc2hvdWxkLW5vdCAocGxzdG9yZS10ZXN0cy1hbGlzdC1wICdm b28pKQorICAoc2hvdWxkLW5vdCAocGxzdG9yZS10ZXN0cy1hbGlzdC1wICcoZm9vKSkpCisg IChzaG91bGQtbm90IChwbHN0b3JlLXRlc3RzLWFsaXN0LXAgJygoZm9vICAgLiBmb28pKSkp CisgIChzaG91bGQtbm90IChwbHN0b3JlLXRlc3RzLWFsaXN0LXAgJygoImZvbyIgLiBmb28p KSkpCisgIChzaG91bGQtbm90IChwbHN0b3JlLXRlc3RzLWFsaXN0LXAgJygoImZvbyIgLiAo ImZvbyIpKSkpKQorICAoc2hvdWxkLW5vdCAocGxzdG9yZS10ZXN0cy1hbGlzdC1wICcoKCJm b28iIC4gKGZvbykpKSkpCisgIChzaG91bGQgICAgIChwbHN0b3JlLXRlc3RzLWFsaXN0LXAg JygoImZvbyIgLiAoOmZvbykpKSkpCisgIDs7IHBsc3RvcmUtdGVzdHMtcGxpc3Qtc29ydAor ICAoc2hvdWxkIChlcXVhbCAocGxzdG9yZS10ZXN0cy1wbGlzdC1zb3J0IG5pbCkgbmlsKSkK KyAgKHNob3VsZCAoZXF1YWwgKHBsc3RvcmUtdGVzdHMtcGxpc3Qtc29ydCAnKDpmb28gImZv byIpKSAnKDpmb28gImZvbyIpKSkKKyAgKHNob3VsZCAoZXF1YWwgKHBsc3RvcmUtdGVzdHMt cGxpc3Qtc29ydCAnKDpmb28gImZvbyIgOmJhciAiYmFyIikpICcoOmJhciAiYmFyIiA6Zm9v ICJmb28iKSkpCisgIChsZXQqICgocGxpc3QgJyg6Zm9vICJmb28iIDpiYXogImJheiIgOmJh ciAiYmFyIikpCisgICAgICAgICAoY2FycyAgKGNvcHktc2VxdWVuY2UgcGxpc3QpKQorICAg ICAgICAgKGNkcnMgIChjbC1tYXBsaXN0ICMnaWRlbnRpdHkgcGxpc3QpKSkKKyAgICAocGxz dG9yZS10ZXN0cy1wbGlzdC1zb3J0IHBsaXN0KQorICAgIChzaG91bGQgKGFuZCAoY2wtZXZl cnkgIydlcSBwbGlzdCBjYXJzKQorICAgICAgICAgICAgICAgICAoY2wtZXZlcnkgIydlcSAo Y2wtbWFwbGlzdCAjJ2lkZW50aXR5IHBsaXN0KSBjZHJzKSkpKQorICA7OyBwbHN0b3JlLXRl c3RzLWFsaXN0LXNvcnQKKyAgKHNob3VsZCAoZXF1YWwgKHBsc3RvcmUtdGVzdHMtYWxpc3Qt c29ydCBuaWwpIG5pbCkpCisgIChzaG91bGQgKGVxdWFsIChwbHN0b3JlLXRlc3RzLWFsaXN0 LXNvcnQgJygoImZvbyIpKSkgJygoImZvbyIpKSkpCisgIChzaG91bGQgKGVxdWFsIChwbHN0 b3JlLXRlc3RzLWFsaXN0LXNvcnQgJygoImZvbyIpICgiYmFyIikpKSAnKCgiYmFyIikgKCJm b28iKSkpKQorICAoc2hvdWxkIChlcXVhbCAocGxzdG9yZS10ZXN0cy1hbGlzdC1zb3J0Cisg ICAgICAgICAgICAgICAgICAnKCgiZm9vIiAuICg6Zm9vICJmb28iKSkKKyAgICAgICAgICAg ICAgICAgICAgKCJiYXoiIC4gKDpmb28gImZvbyIgOmJheiAiYmF6IiA6YmFyICJiYXIiKSkK KyAgICAgICAgICAgICAgICAgICAgKCJiYXIiIC4gKDpmb28gImZvbyIgOmJhciAiYmFyIikp KSkKKyAgICAgICAgICAgICAgICAgJygoImJhciIgIC4gKDpiYXIgImJhciIgOmZvbyAiZm9v IikpCisgICAgICAgICAgICAgICAgICAgKCJiYXoiICAuICg6YmFyICJiYXIiIDpiYXogImJh eiIgOmZvbyAiZm9vIikpCisgICAgICAgICAgICAgICAgICAgKCJmb28iICAuICg6Zm9vICJm b28iKSkpKSkKKyAgKGxldCogKChhbGlzdCAnKCgiZm9vIikgKCJiYXoiKSAoImJhciIpKSkK KyAgICAgICAgIChjYXJzICAoY29weS1zZXF1ZW5jZSBhbGlzdCkpCisgICAgICAgICAoY2Ry cyAgKGNsLW1hcGxpc3QgIydpZGVudGl0eSBhbGlzdCkpKQorICAgIChwbHN0b3JlLXRlc3Rz LWFsaXN0LXNvcnQgYWxpc3QpCisgICAgKHNob3VsZCAoYW5kIChjbC1ldmVyeSAjJ2VxIGFs aXN0IGNhcnMpCisgICAgICAgICAgICAgICAgIChjbC1ldmVyeSAjJ2VxIChjbC1tYXBsaXN0 ICMnaWRlbnRpdHkgYWxpc3QpIGNkcnMpKSkpKQorCis7OyBFbnN1cmUgcGFzc3BocmFzZSBo YW5kbGluZyB3b3JrcyBhcyBpbnRlbmRlZC4KKyhlcnQtZGVmdGVzdCBwbHN0b3JlLXBhc3Nw aHJhc2UtaGFuZGxpbmcgKCkKKyAgKHdpdGgtcGxzdG9yZS10ZXN0cy1wYXNzcGhyYXNlICg6 cGFzc3BocmFzZS1leHBlY3RlZCAnbWF5YmUpCisgICAgKHNob3VsZCAoc3RyaW5nPSAocGxz dG9yZS10ZXN0cy1oYW5kbGUtcGFzc3BocmFzZS1yZXF1ZXN0KQorICAgICAgICAgICAgICAg ICAgICAgcGxzdG9yZS10ZXN0cy1yZWNpcGllbnQtcGFzc3BocmFzZSkpKQorICAod2l0aC1w bHN0b3JlLXRlc3RzLXBhc3NwaHJhc2UgKDpyZXNwb25zZSAnb2sKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA6cGFzc3BocmFzZS1leHBlY3RlZCAnbWF5YmUpCisgICAg KHNob3VsZCAoc3RyaW5nPSAocGxzdG9yZS10ZXN0cy1oYW5kbGUtcGFzc3BocmFzZS1yZXF1 ZXN0KQorICAgICAgICAgICAgICAgICAgICAgcGxzdG9yZS10ZXN0cy1yZWNpcGllbnQtcGFz c3BocmFzZSkpKQorICAod2l0aC1wbHN0b3JlLXRlc3RzLXBhc3NwaHJhc2UgKDpyZXNwb25z ZSAnd3JvbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6cGFzc3BocmFz ZS1leHBlY3RlZCAnbWF5YmUpCisgICAgKHNob3VsZCAoc3RyaW5nPSAocGxzdG9yZS10ZXN0 cy1oYW5kbGUtcGFzc3BocmFzZS1yZXF1ZXN0KSAiIikpKQorICAod2l0aC1wbHN0b3JlLXRl c3RzLXBhc3NwaHJhc2UgKDpyZXNwb25zZSAncXVpdAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDpwYXNzcGhyYXNlLWV4cGVjdGVkICdtYXliZSkKKyAgICAoc2hvdWxk IChjb25kaXRpb24tY2FzZSBuaWwKKyAgICAgICAgICAgICAgICAocGxzdG9yZS10ZXN0cy1o YW5kbGUtcGFzc3BocmFzZS1yZXF1ZXN0KQorICAgICAgICAgICAgICAocXVpdCB0KSAoOnN1 Y2Nlc3MgbmlsKSkpKQorICAod2l0aC1wbHN0b3JlLXRlc3RzLXBhc3NwaHJhc2UgKDpwYXNz cGhyYXNlLWV4cGVjdGVkICdubykpCisgICh3aXRoLXBsc3RvcmUtdGVzdHMtcGFzc3BocmFz ZSAoOnJlc3BvbnNlICdvaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpw YXNzcGhyYXNlLWV4cGVjdGVkICd5ZXMpCisgICAgKHBsc3RvcmUtdGVzdHMtaGFuZGxlLXBh c3NwaHJhc2UtcmVxdWVzdCkpKQorCis7OyBFbnN1cmUgdGhlIGV4YW1wbGVzIGZyb20gdGhl IHBsc3RvcmUuZWwgaGVhZGVyIGNvbWUgdGhyb3VnaCB3aXRob3V0Cis7OyBlcnJvcnMuCiso ZXJ0LWRlZnRlc3QgcGxzdG9yZS1leGFtcGxlLTAxICgpCisgICh3aXRoLXBsc3RvcmUtdGVz dHMgKDplbmNyeXB0aW9uLXR5cGUgJ2JvdGgpCisgICAgKHNldHEgcGxzdG9yZSAocGxzdG9y ZS1vcGVuIHBsc3RvcmUtdGVzdC1maWxlKSkKKyAgICAocGxzdG9yZS1wdXQgcGxzdG9yZSAi Zm9vIiAnKDpob3N0ICJmb28uZXhhbXBsZS5vcmciIDpwb3J0IDgwKSBuaWwpCisgICAgKHBs c3RvcmUtc2F2ZSBwbHN0b3JlKQorICAgIChwbHN0b3JlLXB1dCBwbHN0b3JlICJiYXIiICco Omhvc3QgImJhci5leGFtcGxlLm9yZyIpICcoOnVzZXIgInRlc3QiKSkKKyAgICAocGxzdG9y ZS1wdXQgcGxzdG9yZSAiYmF6IiAnKDpob3N0ICJiYXouZXhhbXBsZS5vcmciKSAnKDpwYXNz d29yZCAidGVzdCIpKQorICAgIDs7IHN5bW1ldHJpYyBlbmNyeXB0aW9uOiAneWVzCisgICAg OzsgcHVibGljLWtleSBlbmNyeXB0aW9uOiAnbm8KKyAgICAod2l0aC1wbHN0b3JlLXRlc3Rz LXBhc3NwaHJhc2UgKDpwYXNzcGhyYXNlLWV4cGVjdGVkICdtYXliZSkKKyAgICAgIChwbHN0 b3JlLXNhdmUgcGxzdG9yZSkpCisgICAgKHBsc3RvcmUtY2xvc2UgcGxzdG9yZSkKKworICAg IChzaG91bGQKKyAgICAgKD4gKGZpbGUtYXR0cmlidXRlLXNpemUgKGZpbGUtYXR0cmlidXRl cyBwbHN0b3JlLXRlc3QtZmlsZSkpIDApKQorCisgICAgKHNldHEgcGxzdG9yZSAocGxzdG9y ZS1vcGVuIHBsc3RvcmUtdGVzdC1maWxlKSkKKyAgICAoc2hvdWxkCisgICAgIChwbHN0b3Jl LXRlc3RzLWFsaXN0cy1lcXVhbC1wCisgICAgICAocGxzdG9yZS1maW5kIHBsc3RvcmUgJyg6 aG9zdCAoImZvby5leGFtcGxlLm9yZyIpKSkKKyAgICAgICcoKCJmb28iIC4gKDpob3N0ICJm b28uZXhhbXBsZS5vcmciIDpwb3J0IDgwKSkpKSkKKyAgICA7OyBzeW1tZXRyaWMgZGVjcnlw dGlvbjogJ25vIChhZ2VudCBjYWNoZSkKKyAgICA7OyBwdWJsaWMta2V5IGRlY3J5cHRpb246 ICd5ZXMKKyAgICAod2l0aC1wbHN0b3JlLXRlc3RzLXBhc3NwaHJhc2UgKDpwYXNzcGhyYXNl LWV4cGVjdGVkICdtYXliZSkKKyAgICAgIChzaG91bGQKKyAgICAgICAocGxzdG9yZS10ZXN0 cy1hbGlzdHMtZXF1YWwtcAorICAgICAgICAocGxzdG9yZS1maW5kIHBsc3RvcmUgJyg6aG9z dCAoImJhci5leGFtcGxlLm9yZyIpKSkKKyAgICAgICAgJygoImJhciIgLiAoOmhvc3QgImJh ci5leGFtcGxlLm9yZyIgOnVzZXIgInRlc3QiKSkpKSkpCisgICAgOzsgc3ltbWV0cmljIGRl Y3J5cHRpb246ICdubyAoYWdlbnQgY2FjaGUpCisgICAgOzsgcHVibGljLWtleSBkZWNyeXB0 aW9uOiAnbm8gKGFnZW50IGNhY2hlKQorICAgICh3aXRoLXBsc3RvcmUtdGVzdHMtcGFzc3Bo cmFzZSAoOnBhc3NwaHJhc2UtZXhwZWN0ZWQgJ25vKQorICAgICAgKHNob3VsZAorICAgICAg IChwbHN0b3JlLXRlc3RzLWFsaXN0cy1lcXVhbC1wCisgICAgICAgIChwbHN0b3JlLWZpbmQg cGxzdG9yZSAnKDpob3N0ICgiYmF6LmV4YW1wbGUub3JnIikpKQorICAgICAgICAnKCgiYmF6 IiAuICg6aG9zdCAiYmF6LmV4YW1wbGUub3JnIiA6cGFzc3dvcmQgInRlc3QiKSkpKSkpCisg ICAgKHBsc3RvcmUtY2xvc2UgcGxzdG9yZSkpKQorCisocHJvdmlkZSAncGxzdG9yZS10ZXN0 cykKKworOzs7IHBsc3RvcmUtdGVzdHMuZWwgZW5kcyBoZXJlCi0tIAoyLjMwLjIKCg== --------------VJ9st0f80F5OwGp1fgyvbFCx--