From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp12.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms5.migadu.com with LMTPS id sCStNwhJpGL8cQAAbAwnHQ (envelope-from ) for ; Sat, 11 Jun 2022 09:49:28 +0200 Received: from aspmx1.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp12.migadu.com with LMTPS id 6ONbNwhJpGLJGAAAauVa8A (envelope-from ) for ; Sat, 11 Jun 2022 09:49:28 +0200 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 3D530F8D0 for ; Sat, 11 Jun 2022 09:49:28 +0200 (CEST) Received: from localhost ([::1]:49614 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nzvs7-0004eK-6x for larch@yhetil.org; Sat, 11 Jun 2022 03:49:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:53232) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nzvqv-0004cq-QX for emacs-orgmode@gnu.org; Sat, 11 Jun 2022 03:48:14 -0400 Received: from mail-lf1-x12f.google.com ([2a00:1450:4864:20::12f]:45847) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nzvqt-0008Qi-Ly for emacs-orgmode@gnu.org; Sat, 11 Jun 2022 03:48:13 -0400 Received: by mail-lf1-x12f.google.com with SMTP id c4so1648661lfj.12 for ; Sat, 11 Jun 2022 00:48:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vicarious-living-com.20210112.gappssmtp.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=An0DYfRxrbNExF1Le9mOR83bcoazsL1RNQnuoSAIVi4=; b=aXTc/x8VdkCXiWF2HN/Lj+syBlpcaVhLPerUm/y16dxuFlHRIY9Jb9ZqnIRVAQZFia A6ucmg90x8u3L6yQSZued/cX6JYJ4oL+aJV6qGgsNg/hdV8NuBsq5juS3iVnGBV843xa dcTYLWUsXYwuHDTVw/w9JBrlasQhoKbPiyxRZJuC02Wz+Db47L3ygUOng8HjEfJFst0b VGRTomnDGMqgNwPkld/+Cl1TeHz6h38u+2Y+FjF2uSeMYZu3+wnG5Ihp2n+IO5YVgPYA saYq4oGcNh3bTGbVKTX4Kx+IkH8CXFRtgMo6WW70RnQ+d3js4nTWNTe/6BUxC6mVAhT9 zPRw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=An0DYfRxrbNExF1Le9mOR83bcoazsL1RNQnuoSAIVi4=; b=6MppWEDht3EWqUvuTIZyM0nodRMxpFN3C+gGQfpyo6qCttwnvLK+oO8HAVq5neQN+x /z6d6aq3R7nti/UbNnYD2mubFWpVN9Ib7ZntY3Gn8uYKlXOTWD53JWQUb/gk7XZV+0qJ puVKSqa9LHgb8/FwytTwiVeUsxutgkQ7eVovxH/bEhn+Vo+Q48q1C/z5L/0yUaGzwrOf 0weGDiLBco67sKB0MzUgGk/8rVEaCZ26OQalYByaBHmbpiciDPWjlQlzlnnNKAl4APJ8 hO1oj7wuakuHLgepD3itS84fsX41Xbg2NcLHAR4zJ7ZLA4hExSZr3pBLsazlQ+6riJkY X+2g== X-Gm-Message-State: AOAM530fmw6vZnWRcJN/ZZwjPdoEKju64m5oeKSw555bUPRqIutpGJOc gg21rOZpwwXy0WcV1IVbwBQNy01k16xaZStrsBZtng== X-Google-Smtp-Source: ABdhPJyFW14VVXRGZ/6B6pgOi/iUyJ6Jq5w5d8bcRum/xzLT8AalSiutEpPTZV4zPB+tkAn+FrAw3bABn5sFBr7NFTo= X-Received: by 2002:a05:6512:3e11:b0:473:9f5f:feda with SMTP id i17-20020a0565123e1100b004739f5ffedamr29293219lfv.244.1654933689886; Sat, 11 Jun 2022 00:48:09 -0700 (PDT) MIME-Version: 1.0 References: <981938.1630590273@apollo2.minshall.org> <87czpqjqvw.fsf@localhost> <87zgkey55y.fsf@localhost> <8735i5u039.fsf@localhost> <87h74rq0ql.fsf@localhost> In-Reply-To: <87h74rq0ql.fsf@localhost> From: Ryan Scott Date: Sat, 11 Jun 2022 00:47:58 -0700 Message-ID: Subject: Re: [PATCH] Re: New source block results option for attaching file to node To: Ihor Radchenko Cc: numbchild@gmail.com, Greg Minshall , Timothy , emacs-orgmode@gnu.org Content-Type: multipart/mixed; boundary="000000000000b6976a05e12746aa" Received-SPF: none client-ip=2a00:1450:4864:20::12f; envelope-from=ryan@vicarious-living.com; helo=mail-lf1-x12f.google.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-orgmode@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+larch=yhetil.org@gnu.org Sender: "Emacs-orgmode" X-Migadu-Flow: FLOW_IN X-Migadu-To: larch@yhetil.org X-Migadu-Country: US ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1654933768; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:in-reply-to:in-reply-to: references:references:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=PlSN2QeYHMl2mbJNgmqFNE7EqmW2IKKDMoM1imIzgho=; b=aRIx5q86tRVwoWkr+cslj1/jbpUh650JTRXIEgWFI0xK24Y2cmMgRbeBz0EWU1odokBGEI ISURNsUwjoUCw0rXCFGrasVSEyfZEZU2m+F4SPYgMqHcYklu60bLc6wvH7oEYxABCDFcBq 1Cp2AG5l7QSbzLL8XGXaKSwhc4oGEFrgWvqv/PFKBp53ardQa7eEs2+LiiExQYQ/ekC/yh JRPXGZdho0QEh3jUeJobpAvwi9hYKMTJ8lqYTcDSBtk8iqmGLA8RHADvYCzK5zE7Ma+Xb9 ZY5NNBiXpZ3486anxTCA98GPR7D85tmGK2tBRWbaVHXkKEuInzOTmQhNBZ1Now== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1654933768; a=rsa-sha256; cv=none; b=XdMwB0dIPsbFK4UOZ9TuQ8RmlA99G1RonXundWn2gVax/FhuiPqEB8aahO1tSlgTti8+wx Gm8c2eUHvhtzD8JPbiIohpjYOXonLtGqkw8Qa6nToa1H2A8wZz85ozdRig1Zkb3UgheoC6 lE8O4v5FRc3xNgQqE0N+kNKdPB6fxnZYA0J6bzGj5DEQZ9eckmLga6Fq4T2NHO7tc7r2uF 8fJuPm0jH8G8PnoZFJQzw/ClSd+WRncAtdBRM4Hh4ZirqT42VJoZWY9D11P6xSvU166FFj RqJbFvt2dUC9fpl623+CnQjkGReqZkA5bIP4H3l+GhvxjKUdz3Z53ORphNtW5Q== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("body hash did not verify") header.d=vicarious-living-com.20210112.gappssmtp.com header.s=20210112 header.b="aXTc/x8V"; dmarc=none; spf=pass (aspmx1.migadu.com: domain of "emacs-orgmode-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="emacs-orgmode-bounces+larch=yhetil.org@gnu.org" X-Migadu-Spam-Score: 1.21 Authentication-Results: aspmx1.migadu.com; dkim=fail ("body hash did not verify") header.d=vicarious-living-com.20210112.gappssmtp.com header.s=20210112 header.b="aXTc/x8V"; dmarc=none; spf=pass (aspmx1.migadu.com: domain of "emacs-orgmode-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="emacs-orgmode-bounces+larch=yhetil.org@gnu.org" X-Migadu-Queue-Id: 3D530F8D0 X-Spam-Score: 1.21 X-Migadu-Scanner: scn1.migadu.com X-TUID: iezlEzOshSkh --000000000000b6976a05e12746aa Content-Type: multipart/alternative; boundary="000000000000b6976805e12746a8" --000000000000b6976805e12746a8 Content-Type: text/plain; charset="UTF-8" Had no experience with the :DIR: property or writing unit tests for Org, but I think I've got both covered now. The ID creation prompting now only happens if there is no result from org-attach-dir, which should address the :DIR: case. Let me know if there's anything about those tests that I should modify. Thanks, -ryan On Fri, Jun 10, 2022 at 9:31 PM Ihor Radchenko wrote: > Ryan Scott writes: > > > I believe I have addressed your feedback, Ihor. > > Attached is the latest version of the patch. > > > > - Merged latest master > > - :post is now handled correctly (verified with example of :post usage > > in the example at > https://orgmode.org/manual/Results-of-Evaluation.html) > > - Added "(with quotes)" to help make the NEWS entry clearer > > - Changed the attach directory detection to use a string prefix check > > > > Let me know what you think. > > Thanks for the updated patch! > > > + ((or '(:dir . attach) '(:dir . "'attach")) > > + (unless (org-id-get) > > + (if (or noninteractive (y-or-n-p (format "Create ID for > entry \"%s\"?" > > + (org-get-heading > t t t t)))) > > + (org-id-get-create) > > + (error "Can't attach to entry \"%s\". Entry has no ID" > > + (org-get-heading t t t t)))) > > + (setq params (append > > + `((:dir . ,(org-attach-dir nil t)) > > + (:mkdirp . "yes")) > > + (assq-delete-all :dir (assq-delete-all :mkdir > params))))) > > Note that entry does not need :ID: property to have an attachment dir. > There is also :DIR: property. > > Also, it would be useful to add a test. See test-ob-core/dir-mkdirp in > testing/lisp/test-ob.el > > Best, > Ihor > --000000000000b6976805e12746a8 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Had no experience with the :DIR: property or writing unit = tests for Org, but I think I've got both covered now.
The ID creati= on prompting now only happens if there is no result from org-attach-dir, wh= ich should address the :DIR: case.

Let me know if = there's anything about those tests that I should modify.

=
Thanks,
=C2=A0 -ryan

On Fri, Jun 10, 2022 at 9:31= PM Ihor Radchenko <yantar92@gmail= .com> wrote:
Ryan Scott <ryan@vicarious-living.com> writes:

> I believe I have addressed your feedback, Ihor.
> Attached is the latest version of the patch.
>
>=C2=A0 =C2=A0 - Merged latest master
>=C2=A0 =C2=A0 - :post is now handled correctly (verified with example o= f :post usage
>=C2=A0 =C2=A0 in the example at https://org= mode.org/manual/Results-of-Evaluation.html)
>=C2=A0 =C2=A0 - Added "(with quotes)" to help make the NEWS e= ntry clearer
>=C2=A0 =C2=A0 - Changed the attach directory detection to use a string = prefix check
>
> Let me know what you think.

Thanks for the updated patch!

> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ((or '(:dir . attach) '(:d= ir . "'attach"))
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(unless (org-id-get)
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(if (or noninteractiv= e (y-or-n-p (format "Create ID for entry \"%s\"?"
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (org-get-heading t t t t))))<= br> > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(org-id= -get-create)
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(error "C= an't attach to entry \"%s\". Entry has no ID"
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 (org-get-heading t t t t))))
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0(setq params (append
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0`((:dir . ,(org-attach-dir nil t))
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0(:mkdirp . "yes"))
> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0(assq-delete-all :dir (assq-delete-all :mkdir params))= )))

Note that entry does not need :ID: property to have an attachment dir.
There is also :DIR: property.

Also, it would be useful to add a test. See test-ob-core/dir-mkdirp in
testing/lisp/test-ob.el

Best,
Ihor
--000000000000b6976805e12746a8-- --000000000000b6976a05e12746aa Content-Type: application/octet-stream; name="org-src-block-results-attach-dir.patch" Content-Disposition: attachment; filename="org-src-block-results-attach-dir.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l49ko9420 RnJvbSA5YjZmMTY5ODU1NDMxNmFkOGRmNWY5ODYyODU2NGRhYzliMTg5Mjc2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSeWFuIFNjb3R0IDxyeWFuQDVwbUNhc3VhbC5jb20+CkRhdGU6 IEZyaSwgMTAgSnVuIDIwMjIgMDA6MDE6MzcgLTA3MDAKU3ViamVjdDogW1BBVENIXSBvYi1jb3Jl LmVsL2JhYmVsOiBTcGVjaWFsIGhhbmRsaW5nIGZvciBhdHRhY2htZW50IGxpbmtzIGluCiBzcmMg YmxvY2sKCiogb2ItY29yZS5lbCAob3JnLWJhYmVsLW1lcmdlLXBhcmFtcyk6IFNwZWNpZnlpbmcg dGhlIHN5bWJvbCAnYXR0YWNoYApvciBzdHJpbmcgIidhdHRhY2giIGFzIHRoZSB2YWx1ZSBvZiB0 aGUgYDpkaXInIGhlYWRlciBub3cgZnVuY3Rpb25zIGFzCiI6ZGlyIChvcmctYXR0YWNoLWRpciBu aWwgdCkgOm1rZGlycCB0Igoob3JnLWJhYmVsLXJlc3VsdC10by1maWxlKTogT3B0aW9uYWwgYFRZ UEUnIGFyZ3VtZW50IGFjY2VwdHMgc3ltYm9sCidhdHRhY2htZW50YCB0byBmaXh1cCB1cCBwYXRo cyB1bmRlciBgKG9yZy1hdHRhY2gtZGlyKScgYW5kIHVzZSB0aGUKbGluayB0eXBlICJhdHRhY2ht ZW50OiIgd2hlbiB0aGF0IGlzIGRldGVjdGVkLgoob3JnLWJhYmVsLWluc2VydC1yZXN1bHQpOiBQ YXNzIHN5bWJvbCBgYXR0YWNobWVudCcgYXMgYFRZUEUnIHRvCmBvcmctYmFiZWwtcmVzdWx0LXRv LWZpbGUnCiogb3JnLWF0dGFjaC5lbCAob3JnLWF0dGFjaC1kaXIpOiBBZGRlZCBhdXRvbG9hZCBo ZWFkZXIgdG8gc2ltcGxpZnkKZGVwZW5kZW5jaWVzIG5lY2Vzc2FyeSB0byBzdXBwb3J0IHRoaXMg ZmVhdHVyZSAoY2FsbGVkIGluCmBvcmctYmFiZWwtbWVyZ2UtcGFyYW1zJykuCiogdGVzdC1vYi5l bCAodGVzdC1vYi1jb3JlL2Rpci1hdHRhY2gpOiBBZGRlZCB1bml0IHRlc3QgZm9yIG5ldyBhdHRh Y2gKZmVhdHVyZQotLS0KIGRvYy9vcmctbWFudWFsLm9yZyAgICAgIHwgIDYgKysrKwogZXRjL09S Ry1ORVdTICAgICAgICAgICAgfCAgNyArKysrCiBsaXNwL29iLWNvcmUuZWwgICAgICAgICB8IDc4 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tCiBsaXNwL29yZy1hdHRh Y2guZWwgICAgICB8ICAxICsKIHRlc3RpbmcvbGlzcC90ZXN0LW9iLmVsIHwgNjYgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKwogNSBmaWxlcyBjaGFuZ2VkLCAxMzUgaW5zZXJ0aW9u cygrKSwgMjMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL29yZy1tYW51YWwub3JnIGIv ZG9jL29yZy1tYW51YWwub3JnCmluZGV4IDMyYTQ1Zjg4NC4uNWY5YjMzNTNiIDEwMDY0NAotLS0g YS9kb2Mvb3JnLW1hbnVhbC5vcmcKKysrIGIvZG9jL29yZy1tYW51YWwub3JnCkBAIC0xNzU0MSw2 ICsxNzU0MSwxMiBAQCBkaXJlY3Rvcnkgd2l0aCB7e3trYmQoTS14IGNkIFJFVCBESVJFQ1RPUlkp fX19LCBhbmQgdGhlbiBub3Qgc2V0dGluZwogPWRpcj0uICBVbmRlciB0aGUgc3VyZmFjZSwgPWRp cj0gc2ltcGx5IHNldHMgdGhlIHZhbHVlIG9mIHRoZSBFbWFjcwogdmFyaWFibGUgfmRlZmF1bHQt ZGlyZWN0b3J5fi4gIFNldHRpbmcgPW1rZGlycD0gaGVhZGVyIGFyZ3VtZW50IHRvCiBhIG5vbi1+ bmlsfiB2YWx1ZSBjcmVhdGVzIHRoZSBkaXJlY3RvcnksIGlmIG5lY2Vzc2FyeS4KK1NldHRpbmcg PWRpcj0gdG8gdGhlIHN5bWJvbCB+YXR0YWNofiBvciB0aGUgc3RyaW5nIH4iJ2F0dGFjaCJ+IHdp bGwKK3NldCA9ZGlyPSB0byB0aGUgZGlyZWN0b3J5IHJldHVybmVkIGJ5IH4ob3JnLWF0dGFjaC1k aXIpfiwgc2V0ID06bWtkaXIKK3llcz0sIGFuZCBpbnNlcnQgYW55IGZpbGUgcGF0aHMsIGFzIHdo ZW4gdXNpbmcgPTpyZXN1bHRzIGZpbGU9LCB3aGljaAorYXJlIHVuZGVyIHRoZSBub2RlJ3MgYXR0 YWNobWVudCBkaXJlY3RvcnkgdXNpbmcgPWF0dGFjaG1lbnQ6PSBsaW5rcworaW5zdGVhZCBvZiB0 aGUgdXN1YWwgPWZpbGU6PSBsaW5rcy4gQW55IHJldHVybmVkIHBhdGggb3V0c2lkZSBvZiB0aGUK K2F0dGFjaG1lbnQgZGlyZWN0b3J5IHdpbGwgdXNlID1maWxlOj0gbGlua3MgYXMgcGVyIHVzdWFs LgogCiBGb3IgZXhhbXBsZSwgdG8gc2F2ZSB0aGUgcGxvdCBmaWxlIGluIHRoZSA9V29yay89IGZv bGRlciBvZiB0aGUgaG9tZQogZGlyZWN0b3J5LS0tbm90aWNlIHRpbGRlIGlzIGV4cGFuZGVkOgpk aWZmIC0tZ2l0IGEvZXRjL09SRy1ORVdTIGIvZXRjL09SRy1ORVdTCmluZGV4IDM1YWY5NGY5Mi4u MGM4ODM3OGQ2IDEwMDY0NAotLS0gYS9ldGMvT1JHLU5FV1MKKysrIGIvZXRjL09SRy1ORVdTCkBA IC03OTUsNiArNzk1LDEzIEBAIEZpbmFsbHksIHRoZSBjbG9zdXJlcyBhcmUgb25seSBldmFsdWF0 ZWQgaWYgdGhleSdyZSBub3Qgb3ZlcnJpZGRlbiBmb3IKIGEgc291cmNlIGJsb2NrLiBUaGlzIGlt cHJvdmVzIGVmZmljaWVuY3kgaW4gY2FzZXMgd2hlcmUgdGhlIHJlc3VsdCBvZgogYSBjb21wdXRl LWV4cGVuc2l2ZSBjbG9zdXJlIHdvdWxkIG90aGVyd2lzZSBiZSBkaXNjYXJkZWQuCiAKKyoqKiBO ZXcgc3BlY2lhbCB2YWx1ZSB+J2F0dGFjaH4gZm9yIHNyYyBibG9jayA9OmRpcj0gb3B0aW9uCisK K1Bhc3NpbmcgdGhlIHN5bWJvbCB+YXR0YWNofiBvciBzdHJpbmcgPSInYXR0YWNoIj0gKHdpdGgg cXVvdGVzKSB0byB0aGUgPTpkaXI9CitvcHRpb24gb2YgYSBzcmMgYmxvY2sgaXMgbm93IGVxdWl2 YWxlbnQgdG8gPTpkaXIgKG9yZy1hdHRhY2gtZGlyKSA6bWtkaXIgeWVzPQorYW5kIGFueSBmaWxl IHJlc3VsdHMgd2l0aCBhIHBhdGggZGVzY2VuZGVkIGZyb20gdGhlIGF0dGFjaG1lbnQgZGlyZWN0 b3J5IHdpbGwKK3VzZSA9YXR0YWNobWVudDo9IHN0eWxlIGxpbmtzIGluc3RlYWQgb2YgdGhlIHN0 YW5kYXJkID1maWxlOj0gbGluayB0eXBlLgorCiAqKiBNaXNjZWxsYW5lb3VzCiAqKiogPW9yZy1i aWJ0ZXg9IGluY2x1ZGVzID1kb2k9IGFuZCA9dXJsPSBlbnRyaWVzIHdoZW4gZXhwb3J0aW5nIHRv IEJpQlRlWAogPWRvaT0gYW5kID11cmw9IGVudHJpZXMgaGF2ZSBiZWVuIG1hZGUgb3B0aW9uYWwg Zm9yIHNvbWUgcHVibGljYXRpb24KZGlmZiAtLWdpdCBhL2xpc3Avb2ItY29yZS5lbCBiL2xpc3Av b2ItY29yZS5lbAppbmRleCAwOWQ2YWRmZTAuLjM0MDAyYWMzZSAxMDA2NDQKLS0tIGEvbGlzcC9v Yi1jb3JlLmVsCisrKyBiL2xpc3Avb2ItY29yZS5lbApAQCAtODAxLDcgKzgwMSw4IEBAIGJsb2Nr LiIKIAkJICAgIChsZXQgKCgqdGhpcyogKGlmIChub3QgZmlsZSkgcmVzdWx0CiAJCQkJICAgIChv cmctYmFiZWwtcmVzdWx0LXRvLWZpbGUKIAkJCQkgICAgIGZpbGUKLQkJCQkgICAgIChvcmctYmFi ZWwtLWZpbGUtZGVzYyBwYXJhbXMgcmVzdWx0KSkpKSkKKwkJCQkgICAgIChvcmctYmFiZWwtLWZp bGUtZGVzYyBwYXJhbXMgcmVzdWx0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICdhdHRhY2htZW50KSkpKQogCQkgICAgICAoc2V0cSByZXN1bHQgKG9yZy1iYWJlbC1yZWYt cmVzb2x2ZSBwb3N0KSkKIAkJICAgICAgKHdoZW4gZmlsZQogCQkJKHNldHEgcmVzdWx0LXBhcmFt cyAocmVtb3ZlICJmaWxlIiByZXN1bHQtcGFyYW1zKSkpKSkpCkBAIC0yMjk4LDExICsyMjk5LDE0 IEBAIElORk8gbWF5IHByb3ZpZGUgdGhlIHZhbHVlcyBvZiB0aGVzZSBoZWFkZXIgYXJndW1lbnRz IChpbiB0aGUKICAgKGNvbmQgKChzdHJpbmdwIHJlc3VsdCkKIAkgKHNldHEgcmVzdWx0IChvcmct bm8tcHJvcGVydGllcyByZXN1bHQpKQogCSAod2hlbiAobWVtYmVyICJmaWxlIiByZXN1bHQtcGFy YW1zKQotCSAgIChzZXRxIHJlc3VsdCAob3JnLWJhYmVsLXJlc3VsdC10by1maWxlCi0JCQkgcmVz dWx0Ci0JCQkgKG9yZy1iYWJlbC0tZmlsZS1kZXNjIChudGggMiBpbmZvKSByZXN1bHQpKSkpKQor CSAgIChzZXRxIHJlc3VsdAorICAgICAgICAgICAgICAgICAob3JnLWJhYmVsLXJlc3VsdC10by1m aWxlCisJCSAgcmVzdWx0CisJCSAgKG9yZy1iYWJlbC0tZmlsZS1kZXNjIChudGggMiBpbmZvKSBy ZXN1bHQpCisgICAgICAgICAgICAgICAgICAnYXR0YWNobWVudCkpKSkKIAkoKGxpc3RwIHJlc3Vs dCkpCiAJKHQgKHNldHEgcmVzdWx0IChmb3JtYXQgIiVTIiByZXN1bHQpKSkpCisKICAgKGlmIChh bmQgcmVzdWx0LXBhcmFtcyAobWVtYmVyICJzaWxlbnQiIHJlc3VsdC1wYXJhbXMpKQogICAgICAg KHByb2duIChtZXNzYWdlIChyZXBsYWNlLXJlZ2V4cC1pbi1zdHJpbmcgIiUiICIlJSIgKGZvcm1h dCAiJVMiIHJlc3VsdCkpKQogCSAgICAgcmVzdWx0KQpAQCAtMjYwNSwyNyArMjYwOSw0MyBAQCBp biB0aGUgYnVmZmVyLiIKIAkJIChsaW5lLWJlZ2lubmluZy1wb3NpdGlvbiAyKSkKIAkgICAgIChw b2ludCkpKSkpKQogCi0oZGVmdW4gb3JnLWJhYmVsLXJlc3VsdC10by1maWxlIChyZXN1bHQgJm9w dGlvbmFsIGRlc2NyaXB0aW9uKQorKGRlZnVuIG9yZy1iYWJlbC1yZXN1bHQtdG8tZmlsZSAocmVz dWx0ICZvcHRpb25hbCBkZXNjcmlwdGlvbiB0eXBlKQogICAiQ29udmVydCBSRVNVTFQgaW50byBh biBPcmcgbGluayB3aXRoIG9wdGlvbmFsIERFU0NSSVBUSU9OLgogSWYgdGhlIGBkZWZhdWx0LWRp cmVjdG9yeScgaXMgZGlmZmVyZW50IGZyb20gdGhlIGNvbnRhaW5pbmcKLWZpbGUncyBkaXJlY3Rv cnkgdGhlbiBleHBhbmQgcmVsYXRpdmUgbGlua3MuIgorZmlsZSdzIGRpcmVjdG9yeSB0aGVuIGV4 cGFuZCByZWxhdGl2ZSBsaW5rcy4KKworSWYgdGhlIG9wdGlvbmFsIFRZUEUgaXMgcGFzc2VkIGFz ICdhdHRhY2htZW50YCBhbmQgdGhlIHBhdGggaXMgYQorZGVzY2VuZGFudCBvZiB0aGUgREVGQVVM VC1ESVJFQ1RPUlksIHRoZSBnZW5lcmF0ZWQgbGluayB3aWxsIGJlCitzcGVjaWZpZWQgYXMgYW4g YW4gXCJhdHRhY2htZW50OlwiIHN0eWxlIGxpbmsiCiAgICh3aGVuIChzdHJpbmdwIHJlc3VsdCkK LSAgICAobGV0ICgoc2FtZS1kaXJlY3Rvcnk/Ci0JICAgKGFuZCAoYnVmZmVyLWZpbGUtbmFtZSAo YnVmZmVyLWJhc2UtYnVmZmVyKSkKLQkJKG5vdCAoc3RyaW5nPSAoZXhwYW5kLWZpbGUtbmFtZSBk ZWZhdWx0LWRpcmVjdG9yeSkKLQkJCSAgICAgIChleHBhbmQtZmlsZS1uYW1lCi0JCQkgICAgICAg KGZpbGUtbmFtZS1kaXJlY3RvcnkKLQkJCSAgICAgICAgKGJ1ZmZlci1maWxlLW5hbWUgKGJ1ZmZl ci1iYXNlLWJ1ZmZlcikpKSkpKSkpKQotICAgICAgKGZvcm1hdCAiW1tmaWxlOiVzXSVzXSIKLQkg ICAgICAoaWYgKGFuZCBkZWZhdWx0LWRpcmVjdG9yeQotCQkgICAgICAgKGJ1ZmZlci1maWxlLW5h bWUgKGJ1ZmZlci1iYXNlLWJ1ZmZlcikpIHNhbWUtZGlyZWN0b3J5PykKLQkJICAoaWYgKGVxIG9y Zy1saW5rLWZpbGUtcGF0aC10eXBlICdhZGFwdGl2ZSkKLQkJICAgICAgKGZpbGUtcmVsYXRpdmUt bmFtZQotCQkgICAgICAgKGV4cGFuZC1maWxlLW5hbWUgcmVzdWx0IGRlZmF1bHQtZGlyZWN0b3J5 KQotCQkgICAgICAgKGZpbGUtbmFtZS1kaXJlY3RvcnkKLQkJCShidWZmZXItZmlsZS1uYW1lIChi dWZmZXItYmFzZS1idWZmZXIpKSkpCi0JCSAgICAoZXhwYW5kLWZpbGUtbmFtZSByZXN1bHQgZGVm YXVsdC1kaXJlY3RvcnkpKQotCQlyZXN1bHQpCisgICAgKGxldCogKChyZXN1bHQtZmlsZS1uYW1l IChleHBhbmQtZmlsZS1uYW1lIHJlc3VsdCkpCisgICAgICAgICAgIChiYXNlLWZpbGUtbmFtZSAo YnVmZmVyLWZpbGUtbmFtZSAoYnVmZmVyLWJhc2UtYnVmZmVyKSkpCisgICAgICAgICAgIChiYXNl LWRpcmVjdG9yeSAoZmlsZS1uYW1lLWRpcmVjdG9yeSBiYXNlLWZpbGUtbmFtZSkpCisgICAgICAg ICAgIChzYW1lLWRpcmVjdG9yeT8KKwkgICAgKGFuZCBiYXNlLWZpbGUtbmFtZQorCSAgICAgICAg IChub3QgKHN0cmluZz0gKGV4cGFuZC1maWxlLW5hbWUgZGVmYXVsdC1kaXJlY3RvcnkpCisJCQkg ICAgICAgKGV4cGFuZC1maWxlLW5hbWUKKwkJCSAgICAgICAgYmFzZS1kaXJlY3RvcnkpKSkpKQor ICAgICAgICAgICAocmVxdWVzdC1hdHRhY2htZW50IChlcSB0eXBlICdhdHRhY2htZW50KSkKKyAg ICAgICAgICAgKGluLWF0dGFjaC1kaXIgKGFuZCByZXF1ZXN0LWF0dGFjaG1lbnQKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLXByZWZpeC1wCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGRlZmF1bHQtZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJlc3VsdC1maWxlLW5hbWUpKSkpCisgICAgICAoZm9ybWF0ICJbWyVzOiVzXSVz XSIKKyAgICAgICAgICAgICAgKHBjYXNlIHR5cGUKKyAgICAgICAgICAgICAgICAoKGFuZCAnYXR0 YWNobWVudCAoZ3VhcmQgaW4tYXR0YWNoLWRpcikpICJhdHRhY2htZW50IikKKyAgICAgICAgICAg ICAgICAoXyAiZmlsZSIpKQorICAgICAgICAgICAgICAoaWYgKGFuZCByZXF1ZXN0LWF0dGFjaG1l bnQgaW4tYXR0YWNoLWRpcikKKyAgICAgICAgICAgICAgICAgIChmaWxlLXJlbGF0aXZlLW5hbWUg cmVzdWx0LWZpbGUtbmFtZSkKKwkgICAgICAgIChpZiAoYW5kIGRlZmF1bHQtZGlyZWN0b3J5CisJ CSAgICAgICAgIGJhc2UtZmlsZS1uYW1lIHNhbWUtZGlyZWN0b3J5PykKKwkJICAgIChpZiAoZXEg b3JnLWxpbmstZmlsZS1wYXRoLXR5cGUgJ2FkYXB0aXZlKQorCQkgICAgICAgIChmaWxlLXJlbGF0 aXZlLW5hbWUKKwkJICAgICAgICAgcmVzdWx0LWZpbGUtbmFtZQorICAgICAgICAgICAgICAgICAg ICAgICAgIChmaWxlLW5hbWUtZGlyZWN0b3J5CisJCQkgIGJhc2UtZmlsZS1uYW1lKSkKKwkJICAg ICAgcmVzdWx0LWZpbGUtbmFtZSkKKwkJICByZXN1bHQpKQogCSAgICAgIChpZiBkZXNjcmlwdGlv biAoY29uY2F0ICJbIiBkZXNjcmlwdGlvbiAiXSIpICIiKSkpKSkKIAogKGRlZnVuIG9yZy1iYWJl bC1leGFtcGxpZnktcmVnaW9uIChiZWcgZW5kICZvcHRpb25hbCByZXN1bHRzLXN3aXRjaGVzIGlu bGluZSkKQEAgLTI3NTYsMTAgKzI3NzYsMjIgQEAgcGFyYW1ldGVycyB3aGVuIG1lcmdpbmcgbGlz dHMuIgogCSAgIChzZXRxIGV4cG9ydHMgKGZ1bmNhbGwgbWVyZ2UKIAkJCQkgIGV4cG9ydHMtZXhj bHVzaXZlLWdyb3VwcwogCQkJCSAgZXhwb3J0cwotCQkJCSAgKHNwbGl0LXN0cmluZworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzcGxpdC1zdHJpbmcKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGNvbmQgKChhbmQgdmFsdWUgKGZ1bmN0aW9ucCB2YWx1ZSkp IChmdW5jYWxsIHZhbHVlKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKHZhbHVlIHZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAodCAiIikpKSkpKQorICAgICAgICAgICgob3IgJyg6ZGlyIC4gYXR0YWNoKSAnKDpkaXIgLiAi J2F0dGFjaCIpKQorICAgICAgICAgICAodW5sZXNzIChvcmctYXR0YWNoLWRpciBuaWwgdCkKKyAg ICAgICAgICAgICAodW5sZXNzIChvcmctaWQtZ2V0KQorICAgICAgICAgICAgICAgKGlmIChvciBu b25pbnRlcmFjdGl2ZSAoeS1vci1uLXAgKGZvcm1hdCAiQ3JlYXRlIElEIGZvciBlbnRyeSBcIiVz XCI/IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAob3JnLWdldC1oZWFkaW5nIHQgdCB0IHQpKSkpCisgICAgICAgICAgICAgICAgICAgKG9y Zy1pZC1nZXQtY3JlYXRlKQorICAgICAgICAgICAgICAgICAoZXJyb3IgIkNhbid0IGF0dGFjaCB0 byBlbnRyeSBcIiVzXCIuIEVudHJ5IGhhcyBubyBJRCIKKyAgICAgICAgICAgICAgICAgICAgICAg IChvcmctZ2V0LWhlYWRpbmcgdCB0IHQgdCkpKSkpCisgICAgICAgICAgIChzZXRxIHBhcmFtcyAo YXBwZW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgYCgoOmRpciAuICwob3JnLWF0dGFjaC1k aXIgbmlsIHQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKDpta2RpcnAgLiAieWVzIikp CisgICAgICAgICAgICAgICAgICAgICAgICAgKGFzc3EtZGVsZXRlLWFsbCA6ZGlyIChhc3NxLWRl bGV0ZS1hbGwgOm1rZGlyIHBhcmFtcykpKSkpCiAJICA7OyBSZWd1bGFyIGtleXdvcmRzOiBhbnkg dmFsdWUgb3ZlcndyaXRlcyB0aGUgcHJldmlvdXMgb25lLgogCSAgKF8gKHNldHEgcGFyYW1zIChj b25zIHBhaXIgKGFzc3EtZGVsZXRlLWFsbCAoY2FyIHBhaXIpIHBhcmFtcykpKSkpKSkKICAgICA7 OyBIYW5kbGUgYDp2YXInIGFuZCBjbGVhciBvdXQgY29sbmFtZXMgYW5kIHJvd25hbWVzIGZvciBy ZXBsYWNlZApkaWZmIC0tZ2l0IGEvbGlzcC9vcmctYXR0YWNoLmVsIGIvbGlzcC9vcmctYXR0YWNo LmVsCmluZGV4IDVlZTJiODRiMi4uNmEwNjFiMmIzIDEwMDY0NAotLS0gYS9saXNwL29yZy1hdHRh Y2guZWwKKysrIGIvbGlzcC9vcmctYXR0YWNoLmVsCkBAIC0zMjQsNiArMzI0LDcgQEAgU2hvd3Mg YSBsaXN0IG9mIGNvbW1hbmRzIGFuZCBwcm9tcHRzIGZvciBhbm90aGVyIGtleSB0byBleGVjdXRl IGEgY29tbWFuZC4iCiAJICAgIChjb21tYW5kLWV4ZWN1dGUgY29tbWFuZCkKIAkgIChlcnJvciAi Tm8gc3VjaCBhdHRhY2htZW50IGNvbW1hbmQ6ICVjIiBjKSkpKSkpCiAKKzs7OyMjI2F1dG9sb2Fk CiAoZGVmdW4gb3JnLWF0dGFjaC1kaXIgKCZvcHRpb25hbCBjcmVhdGUtaWYtbm90LWV4aXN0cy1w IG5vLWZzLWNoZWNrKQogICAiUmV0dXJuIHRoZSBkaXJlY3RvcnkgYXNzb2NpYXRlZCB3aXRoIHRo ZSBjdXJyZW50IG91dGxpbmUgbm9kZS4KIEZpcnN0IGNoZWNrIGZvciBESVIgcHJvcGVydHksIHRo ZW4gSUQgcHJvcGVydHkuCmRpZmYgLS1naXQgYS90ZXN0aW5nL2xpc3AvdGVzdC1vYi5lbCBiL3Rl c3RpbmcvbGlzcC90ZXN0LW9iLmVsCmluZGV4IGFhMDVmODdhMy4uMGMzNzgzMzYxIDEwMDY0NAot LS0gYS90ZXN0aW5nL2xpc3AvdGVzdC1vYi5lbAorKysgYi90ZXN0aW5nL2xpc3AvdGVzdC1vYi5l bApAQCAtMTc3MCw2ICsxNzcwLDcyIEBAIG5pbAogICAgICAgICAgICAgICAgIChmaWxlLW1vZGVz ICJ0LnNoIikKICAgICAgICAgICAgICAgKGRlbGV0ZS1maWxlICJ0LnNoIikpKSkpKQogCisoZXJ0 LWRlZnRlc3QgdGVzdC1vYi1jb3JlL2Rpci1hdHRhY2ggKCkKKyAgIlRlc3QgOmRpciBoZWFkZXIg dXNpbmcgc3BlY2lhbCAnYXR0YWNoIHZhbHVlIgorICAoc2hvdWxkCisgICAob3JnLXRlc3Qtd2l0 aC10ZW1wLXRleHQtaW4tZmlsZQorICAgICIqIFN5bWJvbAorPHBvaW50PiMrYmVnaW5fc3JjIGVs aXNwIDpkaXIgJ2F0dGFjaCA6cmVzdWx0cyBmaWxlCisoZi13cml0ZS10ZXh0IFwiYXR0YWNobWVu dCB0ZXN0aW5nXCIgJ3V0Zi04IFwidGVzdC50eHRcIikKK1widGVzdC50eHRcIgorIytlbmRfc3Jj IgorICAgIChvcmctYmFiZWwtZXhlY3V0ZS1zcmMtYmxvY2spCisgICAgKGdvdG8tY2hhciAob3Jn LWJhYmVsLXdoZXJlLWlzLXNyYy1ibG9jay1yZXN1bHQpKQorICAgIChmb3J3YXJkLWxpbmUpCisg ICAgKGFuZAorICAgICAoZmlsZS1leGlzdHMtcCAoZm9ybWF0ICIlcy90ZXN0LnR4dCIgKG9yZy1h dHRhY2gtZGlyIG5pbCB0KSkpCisgICAgIChzdHJpbmc9IChidWZmZXItc3Vic3RyaW5nLW5vLXBy b3BlcnRpZXMgKHBvaW50KSAobGluZS1lbmQtcG9zaXRpb24pKQorICAgICAgICAgICAgICAiW1th dHRhY2htZW50OnRlc3QudHh0XV0iKSkpKQorICAoc2hvdWxkCisgICAob3JnLXRlc3Qtd2l0aC10 ZW1wLXRleHQtaW4tZmlsZQorICAgICIqIFN0cmluZworPHBvaW50PiMrYmVnaW5fc3JjIGVsaXNw IDpkaXIgXCInYXR0YWNoXCIgOnJlc3VsdHMgZmlsZQorKGYtd3JpdGUtdGV4dCBcImF0dGFjaG1l bnQgdGVzdGluZ1wiICd1dGYtOCBcInRlc3QudHh0XCIpCitcInRlc3QudHh0XCIKKyMrZW5kX3Ny YyIKKyAgICAob3JnLWJhYmVsLWV4ZWN1dGUtc3JjLWJsb2NrKQorICAgIChnb3RvLWNoYXIgKG9y Zy1iYWJlbC13aGVyZS1pcy1zcmMtYmxvY2stcmVzdWx0KSkKKyAgICAoZm9yd2FyZC1saW5lKQor ICAgIChhbmQKKyAgICAgKGZpbGUtZXhpc3RzLXAgKGZvcm1hdCAiJXMvdGVzdC50eHQiIChvcmct YXR0YWNoLWRpciBuaWwgdCkpKQorICAgICAoc3RyaW5nPSAoYnVmZmVyLXN1YnN0cmluZy1uby1w cm9wZXJ0aWVzIChwb2ludCkgKGxpbmUtZW5kLXBvc2l0aW9uKSkKKyAgICAgICAgICAgICAgIltb YXR0YWNobWVudDp0ZXN0LnR4dF1dIikpKSkKKyAgKHNob3VsZAorICAgKG9yZy10ZXN0LXdpdGgt dGVtcC10ZXh0LWluLWZpbGUKKyAgICAiKiBFeGlzdGluZyBJRAorPHBvaW50PiMrYmVnaW5fc3Jj IGVsaXNwIDpkaXIgJ2F0dGFjaCA6cmVzdWx0cyBmaWxlCisoZi13cml0ZS10ZXh0IFwiYXR0YWNo bWVudCB0ZXN0aW5nXCIgJ3V0Zi04IFwidGVzdC50eHRcIikKK1widGVzdC50eHRcIgorIytlbmRf c3JjIgorICAgIChvcmctaWQtZ2V0LWNyZWF0ZSkKKyAgICAob3JnLWJhYmVsLWV4ZWN1dGUtc3Jj LWJsb2NrKQorICAgIChnb3RvLWNoYXIgKG9yZy1iYWJlbC13aGVyZS1pcy1zcmMtYmxvY2stcmVz dWx0KSkKKyAgICAoZm9yd2FyZC1saW5lKQorICAgIChhbmQKKyAgICAgKGZpbGUtZXhpc3RzLXAg KGZvcm1hdCAiJXMvdGVzdC50eHQiIChvcmctYXR0YWNoLWRpciBuaWwgdCkpKQorICAgICAoc3Ry aW5nPSAoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzIChwb2ludCkgKGxpbmUtZW5kLXBv c2l0aW9uKSkKKyAgICAgICAgICAgICAgIltbYXR0YWNobWVudDp0ZXN0LnR4dF1dIikpKSkKKyAg KHNob3VsZAorICAgKG9yZy10ZXN0LXdpdGgtdGVtcC10ZXh0LWluLWZpbGUKKyAgICAiKiBFeGlz dGluZyBESVIgcHJvcGVydHkKKzpQUk9QRVJUSUVTOgorOkRJUjogICAgICBjdXN0b20tYXR0YWNo LWRpcgorOkVORDoKKworPHBvaW50PiMrYmVnaW5fc3JjIGVsaXNwIDpkaXIgJ2F0dGFjaCA6cmVz dWx0cyBmaWxlCisoZi13cml0ZS10ZXh0IFwiYXR0YWNobWVudCB0ZXN0aW5nXCIgJ3V0Zi04IFwi dGVzdC50eHRcIikKK1widGVzdC50eHRcIgorIytlbmRfc3JjIgorICAgIChtZXNzYWdlICJESVI6 ICVzIiAob3JnLWF0dGFjaC1kaXIgdCkpCisgICAgKG9yZy1iYWJlbC1leGVjdXRlLXNyYy1ibG9j aykKKyAgICAoZ290by1jaGFyIChvcmctYmFiZWwtd2hlcmUtaXMtc3JjLWJsb2NrLXJlc3VsdCkp CisgICAgKGZvcndhcmQtbGluZSkKKyAgICAoYW5kCisgICAgIChmaWxlLWV4aXN0cy1wIChmb3Jt YXQgIiVzL3Rlc3QudHh0IiAob3JnLWF0dGFjaC1kaXIgbmlsIHQpKSkKKyAgICAgKHN0cmluZz0g KGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcyAocG9pbnQpIChsaW5lLWVuZC1wb3NpdGlv bikpCisgICAgICAgICAgICAgICJbW2F0dGFjaG1lbnQ6dGVzdC50eHRdXSIpKSkpCisgICkKKwog KGVydC1kZWZ0ZXN0IHRlc3Qtb2ItY29yZS9kaXItbWtkaXJwICgpCiAgICJUZXN0IDpta2RpcnAg d2l0aCA6ZGlyIGhlYWRlciBjb21iaW5hdGlvbi4iCiAgIChzaG91bGQtbm90Ci0tIAoyLjMzLjAu d2luZG93cy4yCgo= --000000000000b6976a05e12746aa--