Received: from malur.postgresql.org ([2a02:16a8:dc51::56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1fSwzv-0005DS-8I for pgadmin-hackers@arkaria.postgresql.org; Wed, 13 Jun 2018 04:03:03 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1fSwzt-0007yA-9T for pgadmin-hackers@arkaria.postgresql.org; Wed, 13 Jun 2018 04:03:01 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1fSwzs-0007y0-Sg for pgadmin-hackers@lists.postgresql.org; Wed, 13 Jun 2018 04:03:01 +0000 Received: from mail-ot0-x242.google.com ([2607:f8b0:4003:c0f::242]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1fSwzj-0001yJ-7L for pgadmin-hackers@postgresql.org; Wed, 13 Jun 2018 04:02:59 +0000 Received: by mail-ot0-x242.google.com with SMTP id q17-v6so1404380otg.2 for ; Tue, 12 Jun 2018 21:02:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=PAiXg3BlOinufrCEi37aIns3iltJdDdZKXCVOl/x0IY=; b=q/oXHG0HL3b3RwSlJYsxwHZp5nmAwI7k+dA1ySBV1q2d1iVOtqqwCPEmUkIL9zcvbS zA2jjj+QGP9eofKYE/Jo28+LwwkD67w2uZ3kCJ2omzRHaW8TaxgkuRN213BI0QvHYW4I +Psqim31xIEkYTgT6o4HtJGlTG5wbccAnqpPtyt/RdKxoM2eMZ2DI6qhY+bJr5U3idkX MPRukLqKHB6YUJpuH8rklphV9TCNiz+3PlTbHRQjRf2H+4Um1o7JptU5FnJ4NxhcDgaq RMaLHNbzq0WRYRFM4EuaxIyE4ip/i/qZQtkO6sSi7V8GlxG5ikXKakufNAx29me9OkIT 7VuQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=PAiXg3BlOinufrCEi37aIns3iltJdDdZKXCVOl/x0IY=; b=ACtiWyghxktxJvPTxvOauwnU7InOWGEfzfLHE6mvh64PTynArY2Gt5ik55lXpM9WjM V6X28ct4V0cljUAH+Mh1NHaVX5LtsGbM5C90NGNOkkBad7LYzrL+FjyEGu+TrSK82bYx V6S1fAjSZbElPYcRW4ea2HIVLzsBmP761RoJ1VrNRnTJrgHXSnef1ycUyLM0AINhHrFd n4FZKZuYrrQHQYNF0qSw9ywzkygy5tyLdIh7dRMSJ7I+BSKVxEmmfu5ax6cOCMN0jvH8 494+aHXvz2s/QIU98iRgurQmF9sAobqzr+l0EhSbOL8EiDUx2w/NocY//SqV8ork7N1I l20w== X-Gm-Message-State: APt69E15fjGU8U5as2KFM3269/qCmwMa/uOJSeGrTNiHbN8HnhIoKThM nma66DdxZWzQzJP+oeq7AYFj6Pa+OE+jVi+/wEkdWw== X-Google-Smtp-Source: ADUXVKKv85yvPBhKpKGo4ZZF9GbCAoikPTP1PcesoMLqOr5btFd6RM1i3PmQBJKPvRwauO9Y4E/8DRyhuHIxLDDAEmw= X-Received: by 2002:a9d:2010:: with SMTP id n16-v6mr1936702ota.275.1528862568689; Tue, 12 Jun 2018 21:02:48 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a4a:4081:0:0:0:0:0 with HTTP; Tue, 12 Jun 2018 21:02:48 -0700 (PDT) In-Reply-To: References: From: Khushboo Vashi Date: Wed, 13 Jun 2018 09:32:48 +0530 Message-ID: Subject: Re: [pgAdmin4][Patch]: RM 3362 - Fix the functions for PG v11, and add support procedure for PG v11 To: Victoria Henry Cc: Dave Page , pgadmin-hackers Content-Type: multipart/mixed; boundary="0000000000005165ed056e7e0e5e" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --0000000000005165ed056e7e0e5e Content-Type: multipart/alternative; boundary="0000000000005165e8056e7e0e5c" --0000000000005165e8056e7e0e5c Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Victoria, The updated patch is attached. On Tue, Jun 12, 2018 at 9:36 PM, Victoria Henry wrote: > Hi Khushboo, > > The following change is allowing the creation of procedures in postgresql > versions less then 11 and also GreenPlum > > --- a/web/pgadmin/browser/server_groups/servers/databases/schemas/functio= ns/static/js/procedure.js > +++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/functio= ns/static/js/procedure.js > @@ -71,11 +71,7 @@ define('pgadmin.node.procedure', [ > if ('catalog' in node_hierarchy) > return false; > > - // Procedures supported only in PPAS > - return ( > - 'server' in node_hierarchy && > - node_hierarchy['server'].server_type =3D=3D 'ppas' > - ); > + return true; > > Fixed. > Now that the Procedures are a thing in Postgresql maybe they should live > in their own module. > The main functionalities of the functions and procedures are almost same and we have inherited most of the things from function itself. So, as per me they should live in one module. > In the tests for trigger functions we are not consistent on the naming of > the utils , in some places we call it funcs_utils in others > trigger_funcs_utils. > Fixed. > Thanks > =E2=80=8B > Victoria & Joao > > Thanks, Khushboo > On Tue, Jun 12, 2018 at 3:10 AM Khushboo Vashi < > khushboo.vashi@enterprisedb.com> wrote: > >> Hi, >> >> Please find the attached updated patch. >> >> On Fri, Jun 8, 2018 at 2:21 PM, Dave Page wrote: >> >>> Hi >>> >>> On Thu, Jun 7, 2018 at 11:27 AM, Khushboo Vashi < >>> khushboo.vashi@enterprisedb.com> wrote: >>> >>>> Hi, >>>> >>>> Please ignore my previous patch, find the attached updated one. >>>> >>> >>> I found a couple of issues with this: >>> >>> - Clicking the + button on the Parameters tab does nothing in either >>> Create or Edit modes >>> >>> Fixed >> >>> - The debugger fails to start (though, perhaps that's because the plugi= n >>> doesn't have Ashesh's latest patches in it). >>> >>> FYI, I was trying to test the debugger with: >>> >>> -- PROCEDURE: public.dummy_proc(integer) >>> >>> -- DROP PROCEDURE public.dummy_proc(integer); >>> >>> CREATE OR REPLACE PROCEDURE public.dummy_proc( >>> id integer) >>> LANGUAGE 'plpgsql' >>> >>> AS $BODY$BEGIN >>> raise notice 'id is %', id; >>> END;$BODY$; >>> >>> Fixed. Tested with the latest code of the plugin. >> >>> Thanks! >>> >>> Thanks, >> Khushboo >> >>> -- >>> Dave Page >>> Blog: http://pgsnake.blogspot.com >>> Twitter: @pgsnake >>> >>> EnterpriseDB UK: http://www.enterprisedb.com >>> The Enterprise PostgreSQL Company >>> >> >> --0000000000005165e8056e7e0e5c Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Victoria,

The updated patch is attac= hed.

On T= ue, Jun 12, 2018 at 9:36 PM, Victoria Henry <vhenry@pivotal.io> wrote:
=

Hi Khushboo,

The following change is allowin= g the creation of procedures in postgresql versions less then 11 and also G= reenPlum

--- a/web/pgadmin/br=
owser/server_groups/servers/databases/schemas/functions/static/js=
/procedure.js
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas=
/functions/static/js/procedure.js
@@ -71,11 +71,7 @@ define('pgadmin.node.procedure', [
         if ('catalog' in node_hierarchy)
           return false;

-        // Procedures supported only in PPAS
-        return (
-          'server' in node_hierarchy &&
-            node_hierarchy['server'].server_type =3D=3D '=
ppas'
-        );
+        return true;

Fixed.=C2=A0

Now that the Procedures are a thing in = Postgresql maybe they should live in their own module.=C2=A0

The main functionalities of the functions and procedures= are almost same and we have inherited most of the things from function its= elf.=C2=A0
So, as per me they should live in one module.

In = the tests for trigger functions we are not consistent on the naming of the = utils , in some places we call it funcs_utils in ot= hers trigger_funcs_utils.

Fixed.=C2=A0
<= div class=3D"m_9065116914068347774markdown-here-wrapper">

Thanks

=E2=80=8B
Victori= a & Joao

<= /div>
Thanks,
Khushboo=C2=A0
On Tue, Jun 12, 2018 at 3:10 AM Khushboo Vashi &l= t;khus= hboo.vashi@enterprisedb.com> wrote:
Hi,

Please fin= d the attached updated patch.

On Fri, Jun 8, 2018 at 2:21 PM, Dave Page <dpage@pgadmin.= org> wrote:
Hi

On = Thu, Jun 7, 2018 at 11:27 AM, Khushboo Vashi <khushboo.vash= i@enterprisedb.com> wrote:
Hi,

<= div>Please ignore my previous patch, find the attached updated one.

I found a couple of issues with= this:

- Clicking the + button on the Parameters t= ab does nothing in either Create or Edit modes

Fixed=C2=A0
- The debugger fails to start (though, perhaps that's beca= use the plugin doesn't have Ashesh's latest patches in it).

FYI, I was trying to test the debugger with:
-- PROCEDURE: public.dummy_proc(integer)

-- DROP PROCEDURE public.dummy_proc(integer);

=
CREATE OR REPLACE=C2=A0 PROCEDURE public.dummy_proc(
id integer)
LANGUAGE 'p= lpgsql'

AS $BODY$BEGIN
=C2=A0 raise = notice 'id is %', id;
END;$BODY$;

Fixed. Tested with the latest code o= f the plugin.
Thanks!
=

=
Thanks,
Khushboo=C2=A0
<= div dir=3D"ltr">
--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnak= e

EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Compa= ny


--0000000000005165e8056e7e0e5c-- --0000000000005165ed056e7e0e5e Content-Type: text/x-patch; charset="US-ASCII"; name="RM_3362_ver3.patch" Content-Disposition: attachment; filename="RM_3362_ver3.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_jicla0t10 ZGlmZiAtLWdpdCBhL2RvY3MvZW5fVVMvcHJvY2VkdXJlX2RpYWxvZy5yc3QgYi9kb2NzL2VuX1VT L3Byb2NlZHVyZV9kaWFsb2cucnN0CmluZGV4IGRhNWYzNGYuLjgyYzIyMjcgMTAwNjQ0Ci0tLSBh L2RvY3MvZW5fVVMvcHJvY2VkdXJlX2RpYWxvZy5yc3QKKysrIGIvZG9jcy9lbl9VUy9wcm9jZWR1 cmVfZGlhbG9nLnJzdApAQCAtNCw3ICs0LDcgQEAKIFRoZSBQcm9jZWR1cmUgRGlhbG9nCiAqKioq KioqKioqKioqKioqKioqKgogCi1Vc2UgdGhlICpQcm9jZWR1cmUqIGRpYWxvZyB0byBjcmVhdGUg YSBwcm9jZWR1cmU7IHByb2NlZHVyZXMgYXJlIHN1cHBvcnRlZCBieSBFREIgUG9zdGdyZXMgQWR2 YW5jZWQgU2VydmVyLiBUaGUgKlByb2NlZHVyZSogZGlhbG9nIGFsbG93cyB5b3UgdG8gaW1wbGVt ZW50IG9wdGlvbnMgb2YgdGhlIENSRUFURSBQUk9DRURVUkUgY29tbWFuZDsgZm9yIG1vcmUgaW5m b3JtYXRpb24gYWJvdXQgdGhlIENSRUFURSBQUk9DRURVUkUgU1FMIGNvbW1hbmQsIHBsZWFzZSBz ZWUgdGhlIERhdGFiYXNlIENvbXBhdGliaWxpdHkgZm9yIE9yYWNsZSBEZXZlbG9wZXIncywgYXZh aWxhYmxlIGF0OgorVXNlIHRoZSAqUHJvY2VkdXJlKiBkaWFsb2cgdG8gY3JlYXRlIGEgcHJvY2Vk dXJlOyBwcm9jZWR1cmVzIGFyZSBzdXBwb3J0ZWQgYnkgUG9zdGdyZVNRTCB2MTEgYW5kIEVEQiBQ b3N0Z3JlcyBBZHZhbmNlZCBTZXJ2ZXIuIFRoZSAqUHJvY2VkdXJlKiBkaWFsb2cgYWxsb3dzIHlv dSB0byBpbXBsZW1lbnQgb3B0aW9ucyBvZiB0aGUgQ1JFQVRFIFBST0NFRFVSRSBjb21tYW5kOyBm b3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgQ1JFQVRFIFBST0NFRFVSRSBTUUwgY29tbWFu ZCwgcGxlYXNlIHNlZSB0aGUgRGF0YWJhc2UgQ29tcGF0aWJpbGl0eSBmb3IgT3JhY2xlIERldmVs b3BlcidzLCBhdmFpbGFibGUgYXQ6CiAKICAgICAgaHR0cDovL3d3dy5lbnRlcnByaXNlZGIuY29t CiAKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL2Z1bmN0aW9ucy9fX2luaXRfXy5weSBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z1bmN0aW9ucy9f X2luaXRfXy5weQppbmRleCBkOGU3YTY4Li43YjJiYTJkIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdW5jdGlv bnMvX19pbml0X18ucHkKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVuY3Rpb25zL19faW5pdF9fLnB5CkBAIC0xNTAyLDcg KzE1MDIsMTAgQEAgY2xhc3MgRnVuY3Rpb25WaWV3KFBHQ2hpbGROb2RlVmlldywgRGF0YVR5cGVS ZWFkZXIpOgogICAgICAgICAgICAgbmFtZSA9IG5hbWUucmVwbGFjZShhcmcsIGZvcm1hdHRlZF9h cmcpCiAKICAgICAgICAgbmFtZSA9IG5hbWUucmVwbGFjZSgnKScsICdcbiknKQotICAgICAgICBz cWwgPSAiRVhFQyB7MH0iLmZvcm1hdChuYW1lKQorICAgICAgICBpZiBzZWxmLm1hbmFnZXIuc2Vy dmVyX3R5cGUgPT0gJ3BnJzoKKyAgICAgICAgICAgIHNxbCA9ICJDQUxMIHswfSIuZm9ybWF0KG5h bWUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzcWwgPSAiRVhFQyB7MH0iLmZvcm1hdChu YW1lKQogCiAgICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKHJlc3BvbnNlPXNxbCkKIApAQCAt MTU5MiwxMCArMTU5NSwxMSBAQCBjbGFzcyBQcm9jZWR1cmVNb2R1bGUoU2NoZW1hQ2hpbGRNb2R1 bGUpOgogICAgICAgICAiIiIKICAgICAgICAgc3VwZXIoUHJvY2VkdXJlTW9kdWxlLCBzZWxmKS5f X2luaXRfXygqYXJncywgKiprd2FyZ3MpCiAKLSAgICAgICAgc2VsZi5taW5fdmVyID0gOTAxMDAK KyAgICAgICAgc2VsZi5taW5fdmVyID0gMTEwMDAwCiAgICAgICAgIHNlbGYubWF4X3ZlciA9IE5v bmUKKyAgICAgICAgc2VsZi5taW5fcHBhc3ZlciA9IDkwMTAwCiAgICAgICAgIHNlbGYubWluX2dw ZGJ2ZXIgPSAxMDAwMDAwMDAwCi0gICAgICAgIHNlbGYuc2VydmVyX3R5cGUgPSBbJ3BwYXMnXQor ICAgICAgICBzZWxmLnNlcnZlcl90eXBlID0gWydwZycsICdwcGFzJ10KIAogICAgIGRlZiBnZXRf bm9kZXMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCk6CiAgICAgICAgICIiIgpkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZnVuY3Rpb25zL3N0YXRpYy9qcy9wcm9jZWR1cmUuanMgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdW5jdGlvbnMvc3Rh dGljL2pzL3Byb2NlZHVyZS5qcwppbmRleCAwNDFiNTA5Li43NjVkNmUyIDEwMDY0NAotLS0gYS93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9mdW5jdGlvbnMvc3RhdGljL2pzL3Byb2NlZHVyZS5qcworKysgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdW5jdGlvbnMvc3Rh dGljL2pzL3Byb2NlZHVyZS5qcwpAQCAtNzEsMTAgKzcxLDEzIEBAIGRlZmluZSgncGdhZG1pbi5u b2RlLnByb2NlZHVyZScsIFsKICAgICAgICAgaWYgKCdjYXRhbG9nJyBpbiBub2RlX2hpZXJhcmNo eSkKICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgLy8gUHJvY2VkdXJlcyBzdXBw b3J0ZWQgb25seSBpbiBQUEFTCisgICAgICAgIC8vIFByb2NlZHVyZXMgc3VwcG9ydGVkIG9ubHkg aW4gUFBBUyBhbmQgUEcgPj0gMTEKICAgICAgICAgcmV0dXJuICgKLSAgICAgICAgICAnc2VydmVy JyBpbiBub2RlX2hpZXJhcmNoeSAmJgotICAgICAgICAgICAgbm9kZV9oaWVyYXJjaHlbJ3NlcnZl ciddLnNlcnZlcl90eXBlID09ICdwcGFzJworICAgICAgICAgICdzZXJ2ZXInIGluIG5vZGVfaGll cmFyY2h5ICYmICgKKyAgICAgICAgICBub2RlX2hpZXJhcmNoeVsnc2VydmVyJ10uc2VydmVyX3R5 cGUgPT0gJ3BwYXMnIHx8CisgICAgICAgICAgICAobm9kZV9oaWVyYXJjaHlbJ3NlcnZlciddLnNl cnZlcl90eXBlID09ICdwZycgJiYKKyAgICAgICAgICAgICBub2RlX2hpZXJhcmNoeVsnc2VydmVy J10udmVyc2lvbiA+PSAxMTAwMDApCisgICAgICAgICAgKQogICAgICAgICApOwogICAgICAgfSwK ICAgICAgIG1vZGVsOiBGdW5jdGlvbi5tb2RlbC5leHRlbmQoewpAQCAtMTAzLDIwICsxMDYsMjQg QEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUucHJvY2VkdXJlJywgWwogICAgICAgICAgICAgcmV0dXJu IHRydWU7CiAgICAgICAgICAgfQogICAgICAgICAgIHN3aXRjaCh0aGlzLm5hbWUpewotICAgICAg ICAgIGNhc2UgJ3Byb3ZvbGF0aWxpdHknOgorICAgICAgICAgIGNhc2UgJ3Byb3ZvbGF0aWxlJzoK ICAgICAgICAgICBjYXNlICdwcm9pc3N0cmljdCc6Ci0gICAgICAgICAgY2FzZSAncHJvc2VjZGVm JzoKICAgICAgICAgICBjYXNlICdwcm9jb3N0JzoKICAgICAgICAgICBjYXNlICdwcm9sZWFrcHJv b2YnOgorICAgICAgICAgICAgcmV0dXJuICh0aGlzLm5vZGVfaW5mby5zZXJ2ZXIudmVyc2lvbiA8 IDkwNTAwIHx8IHRoaXMubm9kZV9pbmZvLnNlcnZlci5zZXJ2ZXJfdHlwZSAhPSAncHBhcycpOwog ICAgICAgICAgIGNhc2UgJ3ZhcmlhYmxlcyc6CisgICAgICAgICAgY2FzZSAncHJvc2VjZGVmJzoK ICAgICAgICAgICAgIHJldHVybiB0aGlzLm5vZGVfaW5mby5zZXJ2ZXIudmVyc2lvbiA8IDkwNTAw OwogICAgICAgICAgIGNhc2UgJ3Byb3Jvd3MnOgogICAgICAgICAgICAgdmFyIHNlcnZlciA9IHRo aXMubm9kZV9pbmZvLnNlcnZlcjsKICAgICAgICAgICAgIHJldHVybiAhKHNlcnZlci52ZXJzaW9u ID49IDkwNTAwICYmIG0uZ2V0KCdwcm9yZXRzZXQnKSA9PSB0cnVlKTsKICAgICAgICAgICBjYXNl ICdmdW5jb3duZXInOgotICAgICAgICAgIGNhc2UgJ2xhbm5hbWUnOgogICAgICAgICAgIGNhc2Ug J3Byb2FyZ3MnOgogICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgY2FzZSAncHJv cGFyYWxsZWwnOgorICAgICAgICAgICAgcmV0dXJuICh0aGlzLm5vZGVfaW5mby5zZXJ2ZXIudmVy c2lvbiA8IDkwNjAwIHx8IHRoaXMubm9kZV9pbmZvLnNlcnZlci5zZXJ2ZXJfdHlwZSAhPSAncHBh cycpOworICAgICAgICAgIGNhc2UgJ2xhbm5hbWUnOgorICAgICAgICAgICAgcmV0dXJuIHRoaXMu bm9kZV9pbmZvLnNlcnZlci52ZXJzaW9uIDwgMTEwMDAwOwogICAgICAgICAgIGRlZmF1bHQ6CiAg ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVu Y3Rpb25zL3RlbXBsYXRlcy9mdW5jdGlvbi9wZy9zcWwvMTFfcGx1cy9jb2xsX3N0YXRzLnNxbCBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL2Z1bmN0aW9ucy90ZW1wbGF0ZXMvZnVuY3Rpb24vcGcvc3FsLzExX3BsdXMvY29sbF9zdGF0 cy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2M0ZjczNAotLS0gL2Rl di9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL2Z1bmN0aW9ucy90ZW1wbGF0ZXMvZnVuY3Rpb24vcGcvc3FsLzExX3Bs dXMvY29sbF9zdGF0cy5zcWwKQEAgLTAsMCArMSwyMCBAQAorU0VMRUNUCisgICAgZnVuY25hbWUg QVMge3sgY29ubnxxdElkZW50KF8oJ05hbWUnKSkgfX0sCisgICAgY2FsbHMgQVMge3sgY29ubnxx dElkZW50KF8oJ051bWJlciBvZiBjYWxscycpKSB9fSwKKyAgICB0b3RhbF90aW1lIEFTIHt7IGNv bm58cXRJZGVudChfKCdUb3RhbCB0aW1lJykpIH19LAorICAgIHNlbGZfdGltZSBBUyB7eyBjb25u fHF0SWRlbnQoXygnU2VsZiB0aW1lJykpIH19CitGUk9NCisgICAgcGdfc3RhdF91c2VyX2Z1bmN0 aW9ucworV0hFUkUKKyAgICBzY2hlbWFuYW1lID0ge3tzY2hlbWFfbmFtZXxxdExpdGVyYWx9fQor ICAgIEFORCBmdW5jaWQgSU4gKAorICAgICAgICBTRUxFQ1QgcC5vaWQKKyAgICAgICAgRlJPTQor ICAgICAgICAgICAgcGdfcHJvYyBwCisgICAgICAgIEpPSU4KKyAgICAgICAgICAgIHBnX3R5cGUg dHlwIE9OIHR5cC5vaWQ9cC5wcm9yZXR0eXBlCisgICAgICAgIFdIRVJFCisgICAgICAgICAgICBw LnByb2tpbmQgSU4gKCdmJywgJ3cnKQorICAgICAgICAgICAgQU5EIHR5cG5hbWUgTk9UIElOICgn dHJpZ2dlcicsICdldmVudF90cmlnZ2VyJykKKyAgICApCitPUkRFUiBCWSBmdW5jbmFtZTsKZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL2Z1bmN0aW9ucy90ZW1wbGF0ZXMvZnVuY3Rpb24vcGcvc3FsLzExX3BsdXMv Y3JlYXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL2Z1bmN0aW9ucy90ZW1wbGF0ZXMvZnVuY3Rpb24vcGcvc3FsLzExX3Bs dXMvY3JlYXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMWNkZjUx Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVuY3Rpb25zL3RlbXBsYXRlcy9mdW5jdGlvbi9wZy9z cWwvMTFfcGx1cy9jcmVhdGUuc3FsCkBAIC0wLDAgKzEsNzAgQEAKK3slIGltcG9ydCAnbWFjcm9z L2Z1bmN0aW9ucy9zZWN1cml0eS5tYWNyb3MnIGFzIFNFQ0xBQkVMICV9Cit7JSBpbXBvcnQgJ21h Y3Jvcy9mdW5jdGlvbnMvcHJpdmlsZWdlLm1hY3JvcycgYXMgUFJJVklMRUdFICV9Cit7JSBpbXBv cnQgJ21hY3Jvcy9mdW5jdGlvbnMvdmFyaWFibGUubWFjcm9zJyBhcyBWQVJJQUJMRSAlfQoreyUg c2V0IGlzX2NvbHVtbnMgPSBbXSAlfQoreyUgaWYgZGF0YSAlfQoreyUgaWYgcXVlcnlfZm9yID09 ICdzcWxfcGFuZWwnIGFuZCBmdW5jX2RlZiBpcyBkZWZpbmVkICV9CitDUkVBVEV7JSBpZiBxdWVy eV90eXBlIGlzIGRlZmluZWQgJX17eycgT1IgUkVQTEFDRSd9fXslIGVuZGlmICV9IEZVTkNUSU9O IHt7ZnVuY19kZWZ9fQoreyUgZWxzZSAlfQorQ1JFQVRFeyUgaWYgcXVlcnlfdHlwZSBpcyBkZWZp bmVkICV9e3snIE9SIFJFUExBQ0UnfX17JSBlbmRpZiAlfSBGVU5DVElPTiB7eyBjb25ufHF0SWRl bnQoZGF0YS5wcm9uYW1lc3BhY2UsIGRhdGEubmFtZSkgfX0oeyUgaWYgZGF0YS5hcmd1bWVudHMg JX0KK3slIGZvciBwIGluIGRhdGEuYXJndW1lbnRzICV9eyUgaWYgcC5hcmdtb2RlICV9e3twLmFy Z21vZGV9fSB7JSBlbmRpZiAlfXslIGlmIHAuYXJnbmFtZSAlfXt7IGNvbm58cXRJZGVudChwLmFy Z25hbWUpIH19IHslIGVuZGlmICV9eyUgaWYgcC5hcmd0eXBlICV9e3sgY29ubnxxdFR5cGVJZGVu dChwLmFyZ3R5cGUpIH19eyUgZW5kaWYgJX17JSBpZiBwLmFyZ2RlZnZhbCAlfSBERUZBVUxUIHt7 cC5hcmdkZWZ2YWx9fXslIGVuZGlmICV9Cit7JSBpZiBub3QgbG9vcC5sYXN0ICV9LCB7JSBlbmRp ZiAlfQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAtJX0KKykKK3slIGVuZGlmICV9CisgICAgUkVU VVJOU3slIGlmIGRhdGEucHJvcmV0c2V0IGFuZCAoZGF0YS5wcm9yZXR0eXBlbmFtZS5zdGFydHN3 aXRoKCdTRVRPRiAnKSBvciBkYXRhLnByb3JldHR5cGVuYW1lLnN0YXJ0c3dpdGgoJ1RBQkxFJykp ICV9IHt7IGRhdGEucHJvcmV0dHlwZW5hbWUgfX0geyUgZWxpZiBkYXRhLnByb3JldHNldCAlfSBT RVRPRiB7eyBjb25ufHF0VHlwZUlkZW50KGRhdGEucHJvcmV0dHlwZW5hbWUpIH19eyUgZWxzZSAl fSB7eyBjb25ufHF0VHlwZUlkZW50KGRhdGEucHJvcmV0dHlwZW5hbWUpIH19eyUgZW5kaWYgJX0K KworICAgIExBTkdVQUdFIHt7IGRhdGEubGFubmFtZXxxdExpdGVyYWwgfX0KK3slIGlmIGRhdGEu cHJvY29zdCAlfQorCisgICAgQ09TVCB7e2RhdGEucHJvY29zdH19Cit7JSBlbmRpZiAlfQorICAg IHslIGlmIGRhdGEucHJvdm9sYXRpbGUgJX17JSBpZiBkYXRhLnByb3ZvbGF0aWxlID09ICdpJyAl fUlNTVVUQUJMRXslIGVsaWYgZGF0YS5wcm92b2xhdGlsZSA9PSAncycgJX1TVEFCTEV7JSBlbHNl ICV9Vk9MQVRJTEV7JSBlbmRpZiAlfSB7JSBlbmRpZiAlfXslIGlmIGRhdGEucHJvbGVha3Byb29m ICV9TEVBS1BST09GIHslIGVuZGlmICV9Cit7JSBpZiBkYXRhLnByb2lzc3RyaWN0ICV9U1RSSUNU IHslIGVuZGlmICV9Cit7JSBpZiBkYXRhLnByb3NlY2RlZiAlfVNFQ1VSSVRZIERFRklORVIgeyUg ZW5kaWYgJX0KK3slIGlmIGRhdGEucHJvaXN3aW5kb3cgJX1XSU5ET1cgeyUgZW5kaWYgJX0KK3sl IGlmIGRhdGEucHJvcGFyYWxsZWwgYW5kIChkYXRhLnByb3BhcmFsbGVsID09ICdyJyBvciBkYXRh LnByb3BhcmFsbGVsID09ICdzJykgJX0KK3slIGlmIGRhdGEucHJvcGFyYWxsZWwgPT0gJ3InICV9 UEFSQUxMRUwgUkVTVFJJQ1RFRHslIGVsaWYgZGF0YS5wcm9wYXJhbGxlbCA9PSAncycgJX1QQVJB TExFTCBTQUZFeyUgZW5kaWYgJX17JSBlbmRpZiAtJX0KK3slIGlmIGRhdGEucHJvcm93cyBhbmQg KGRhdGEucHJvcm93cyB8IGludCkgPiAwICV9CisKKyAgICBST1dTIHt7ZGF0YS5wcm9yb3dzfX17 JSBlbmRpZiAtJX17JSBpZiBkYXRhLnZhcmlhYmxlcyAlfXslIGZvciB2IGluIGRhdGEudmFyaWFi bGVzICV9CisKKyAgICBTRVQge3sgY29ubnxxdElkZW50KHYubmFtZSkgfX09e3sgdi52YWx1ZXxx dExpdGVyYWwgfX17JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9CisKK0FTIHslIGlmIGRhdGEubGFu bmFtZSA9PSAnYycgJX0KK3t7IGRhdGEucHJvYmlufHF0TGl0ZXJhbCB9fSwge3sgZGF0YS5wcm9z cmNfY3xxdExpdGVyYWwgfX0KK3slIGVsc2UgJX0KKyRCT0RZJAore3sgZGF0YS5wcm9zcmMgfX0K KyRCT0RZJHslIGVuZGlmIC0lfTsKK3slIGlmIGRhdGEuZnVuY293bmVyICV9CisKK0FMVEVSIEZV TkNUSU9OIHt7IGNvbm58cXRJZGVudChkYXRhLnByb25hbWVzcGFjZSwgZGF0YS5uYW1lKSB9fSh7 e2RhdGEuZnVuY19hcmdzX3dpdGhvdXR9fSkKKyAgICBPV05FUiBUTyB7eyBjb25ufHF0SWRlbnQo ZGF0YS5mdW5jb3duZXIpIH19OworeyUgZW5kaWYgLSV9Cit7JSBpZiBkYXRhLmFjbCAlfQoreyUg Zm9yIHAgaW4gZGF0YS5hY2wgJX0KKwore3sgUFJJVklMRUdFLlNFVChjb25uLCAiRlVOQ1RJT04i LCBwLmdyYW50ZWUsIGRhdGEubmFtZSwgcC53aXRob3V0X2dyYW50LCBwLndpdGhfZ3JhbnQsIGRh dGEucHJvbmFtZXNwYWNlLCBkYXRhLmZ1bmNfYXJnc193aXRob3V0KX19Cit7JSBlbmRmb3IgJX17 JSBlbmRpZiAlfQoreyUgaWYgZGF0YS5yZXZva2VfYWxsICV9CisKK3t7IFBSSVZJTEVHRS5VTlNF VEFMTChjb25uLCAiRlVOQ1RJT04iLCAiUFVCTElDIiwgZGF0YS5uYW1lLCBkYXRhLnByb25hbWVz cGFjZSwgZGF0YS5mdW5jX2FyZ3Nfd2l0aG91dCl9fQoreyUgZW5kaWYgJX0KK3slIGlmIGRhdGEu ZGVzY3JpcHRpb24gJX0KKworQ09NTUVOVCBPTiBGVU5DVElPTiB7eyBjb25ufHF0SWRlbnQoZGF0 YS5wcm9uYW1lc3BhY2UsIGRhdGEubmFtZSkgfX0oe3tkYXRhLmZ1bmNfYXJnc193aXRob3V0fX0p CisgICAgSVMge3sgZGF0YS5kZXNjcmlwdGlvbnxxdExpdGVyYWwgIH19OworeyUgZW5kaWYgLSV9 Cit7JSBpZiBkYXRhLnNlY2xhYmVscyAlfQoreyUgZm9yIHIgaW4gZGF0YS5zZWNsYWJlbHMgJX0K K3slIGlmIHIubGFiZWwgYW5kIHIucHJvdmlkZXIgJX0KKwore3sgU0VDTEFCRUwuU0VUKGNvbm4s ICdGVU5DVElPTicsIGRhdGEubmFtZSwgci5wcm92aWRlciwgci5sYWJlbCwgZGF0YS5wcm9uYW1l c3BhY2UsIGRhdGEuZnVuY19hcmdzX3dpdGhvdXQpIH19Cit7JSBlbmRpZiAlfQoreyUgZW5kZm9y ICV9Cit7JSBlbmRpZiAtJX0KKworeyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z1bmN0aW9u cy90ZW1wbGF0ZXMvZnVuY3Rpb24vcGcvc3FsLzExX3BsdXMvZGVsZXRlLnNxbCBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z1bmN0 aW9ucy90ZW1wbGF0ZXMvZnVuY3Rpb24vcGcvc3FsLzExX3BsdXMvZGVsZXRlLnNxbApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDAwNDRjCi0tLSAvZGV2L251bGwKKysrIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvZnVuY3Rpb25zL3RlbXBsYXRlcy9mdW5jdGlvbi9wZy9zcWwvMTFfcGx1cy9kZWxldGUuc3Fs CkBAIC0wLDAgKzEsMjEgQEAKK3slIGlmIHNjaWQgYW5kIGZuaWQgJX0KK1NFTEVDVAorICAgIHBy LnByb25hbWUgYXMgbmFtZSwgJygnIHx8IENPQUxFU0NFKHBnX2NhdGFsb2cKKyAgICAucGdfZ2V0 X2Z1bmN0aW9uX2lkZW50aXR5X2FyZ3VtZW50cyhwci5vaWQpLCAnJykgfHwgJyknIGFzIGZ1bmNf YXJncywKKyAgICBuc3BuYW1lCitGUk9NCisgICAgcGdfcHJvYyBwcgorSk9JTgorICAgIHBnX3R5 cGUgdHlwIE9OIHR5cC5vaWQ9cHJvcmV0dHlwZQorSk9JTgorICAgIHBnX25hbWVzcGFjZSBuc3Ag T04gbnNwLm9pZD1wci5wcm9uYW1lc3BhY2UKK1dIRVJFCisgICAgcHIucHJva2luZCBJTiAoJ2Yn LCAndycpCisgICAgQU5EIHByb25hbWVzcGFjZSA9IHt7c2NpZH19OjpvaWQKKyAgICBBTkQgdHlw bmFtZSBOT1QgSU4gKCd0cmlnZ2VyJywgJ2V2ZW50X3RyaWdnZXInKQorICAgIEFORCBwci5vaWQg PSB7e2ZuaWR9fTsKK3slIGVuZGlmICV9CisKK3slIGlmIG5hbWUgJX0KK0RST1AgRlVOQ1RJT04g e3sgY29ubnxxdElkZW50KG5zcG5hbWUsIG5hbWUpIH19e3tmdW5jX2FyZ3N9fXslIGlmIGNhc2Nh ZGUgJX0gQ0FTQ0FERXslIGVuZGlmICV9OworeyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z1 bmN0aW9ucy90ZW1wbGF0ZXMvZnVuY3Rpb24vcGcvc3FsLzExX3BsdXMvZ2V0X2RlZmluaXRpb24u c3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvZnVuY3Rpb25zL3RlbXBsYXRlcy9mdW5jdGlvbi9wZy9zcWwvMTFfcGx1cy9nZXRf ZGVmaW5pdGlvbi5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWIyNWRi ZgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z1bmN0aW9ucy90ZW1wbGF0ZXMvZnVuY3Rpb24vcGcv c3FsLzExX3BsdXMvZ2V0X2RlZmluaXRpb24uc3FsCkBAIC0wLDAgKzEsMTUgQEAKK1NFTEVDVAor ICAgIHBnX2dldF9mdW5jdGlvbmRlZih7e2ZuaWR9fTo6b2lkKSBBUyBmdW5jX2RlZiwKKyAgICBD T0FMRVNDRShwZ19jYXRhbG9nLnBnX2dldF9mdW5jdGlvbl9pZGVudGl0eV9hcmd1bWVudHMocHIu b2lkKSwgJycpIGFzCisgICAgZnVuY193aXRoX2lkZW50aXR5X2FyZ3VtZW50cywKKyAgICBuc3Bu YW1lLAorICAgIHByLnByb25hbWUgYXMgcHJvbmFtZSwKKyAgICBDT0FMRVNDRShwZ19jYXRhbG9n LnBnX2dldF9mdW5jdGlvbl9hcmd1bWVudHMocHIub2lkKSwgJycpIGFzIGZ1bmNfYXJncworRlJP TQorICAgIHBnX3Byb2MgcHIKK0pPSU4KKyAgICBwZ19uYW1lc3BhY2UgbnNwIE9OIG5zcC5vaWQ9 cHIucHJvbmFtZXNwYWNlCitXSEVSRQorICAgIHByLnByb2tpbmQgSU4gKCdmJywgJ3cnKQorICAg IEFORCBwcm9uYW1lc3BhY2UgPSB7e3NjaWR9fTo6b2lkCisgICAgQU5EIHByLm9pZCA9IHt7Zm5p ZH19OjpvaWQ7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdW5jdGlvbnMvdGVtcGxhdGVzL2Z1bmN0aW9uL3Bn L3NxbC8xMV9wbHVzL2dldF9vaWQuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVuY3Rpb25zL3RlbXBsYXRlcy9mdW5jdGlv bi9wZy9zcWwvMTFfcGx1cy9nZXRfb2lkLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi45M2EyMTA3Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVuY3Rpb25zL3RlbXBsYXRl cy9mdW5jdGlvbi9wZy9zcWwvMTFfcGx1cy9nZXRfb2lkLnNxbApAQCAtMCwwICsxLDE3IEBACitT RUxFQ1QKKyAgICBwci5vaWQsIHByLnByb25hbWUgfHwgJygnIHx8IENPQUxFU0NFKHBnX2NhdGFs b2cKKyAgICAucGdfZ2V0X2Z1bmN0aW9uX2lkZW50aXR5X2FyZ3VtZW50cyhwci5vaWQpLCAnJykg fHwgJyknIGFzIG5hbWUsCisgICAgbGFubmFtZSwgcGdfZ2V0X3VzZXJieWlkKHByb293bmVyKSBh cyBmdW5jb3duZXIsIHByLnByb25hbWVzcGFjZSBhcyBuc3AKK0ZST00KKyAgICBwZ19wcm9jIHBy CitKT0lOCisgICAgcGdfdHlwZSB0eXAgT04gdHlwLm9pZD1wcm9yZXR0eXBlCitKT0lOCisgICAg cGdfbGFuZ3VhZ2UgbG5nIE9OIGxuZy5vaWQ9cHJvbGFuZworSk9JTgorICAgIHBnX25hbWVzcGFj ZSBuc3AgT04gbnNwLm9pZD1wci5wcm9uYW1lc3BhY2UKKyAgICBBTkQgbnNwLm5zcG5hbWU9e3sg bnNwbmFtZXxxdExpdGVyYWwgfX0KK1dIRVJFCisgICAgcHIucHJva2luZCBJTiAoJ2YnLCAndycp CisgICAgQU5EIHR5cG5hbWUgTk9UIElOICgndHJpZ2dlcicsICdldmVudF90cmlnZ2VyJykKKyAg ICBBTkQgcHIucHJvbmFtZSA9IHt7IG5hbWV8cXRMaXRlcmFsIH19OwpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv ZnVuY3Rpb25zL3RlbXBsYXRlcy9mdW5jdGlvbi9wZy9zcWwvMTFfcGx1cy9ub2RlLnNxbCBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L2Z1bmN0aW9ucy90ZW1wbGF0ZXMvZnVuY3Rpb24vcGcvc3FsLzExX3BsdXMvbm9kZS5zcWwKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWRhZThkMQotLS0gL2Rldi9udWxsCisr KyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL2Z1bmN0aW9ucy90ZW1wbGF0ZXMvZnVuY3Rpb24vcGcvc3FsLzExX3BsdXMvbm9kZS5z cWwKQEAgLTAsMCArMSwyMiBAQAorU0VMRUNUCisgICAgcHIub2lkLCBwci5wcm9uYW1lIHx8ICco JyB8fCBDT0FMRVNDRShwZ19jYXRhbG9nLnBnX2dldF9mdW5jdGlvbl9pZGVudGl0eV9hcmd1bWVu dHMocHIub2lkKSwgJycpIHx8ICcpJyBhcyBuYW1lLAorICAgIGxhbm5hbWUsIHBnX2dldF91c2Vy YnlpZChwcm9vd25lcikgYXMgZnVuY293bmVyLCBkZXNjcmlwdGlvbgorRlJPTQorICAgIHBnX3By b2MgcHIKK0pPSU4KKyAgICBwZ190eXBlIHR5cCBPTiB0eXAub2lkPXByb3JldHR5cGUKK0pPSU4K KyAgICBwZ19sYW5ndWFnZSBsbmcgT04gbG5nLm9pZD1wcm9sYW5nCitMRUZUIE9VVEVSIEpPSU4K KyAgICBwZ19kZXNjcmlwdGlvbiBkZXMgT04gKGRlcy5vYmpvaWQ9cHIub2lkIEFORCBkZXMuY2xh c3NvaWQ9J3BnX3Byb2MnOjpyZWdjbGFzcykKK1dIRVJFCisgICBwci5wcm9raW5kIElOICgnZics ICd3JykKK3slIGlmIGZuaWQgJX0KKyAgICBBTkQgcHIub2lkID0ge3sgZm5pZHxxdExpdGVyYWwg fX0KK3slIGVuZGlmICV9Cit7JSBpZiBzY2lkICV9CisgICAgQU5EIHByb25hbWVzcGFjZSA9IHt7 c2NpZH19OjpvaWQKK3slIGVuZGlmICV9CisgICAgQU5EIHR5cG5hbWUgTk9UIElOICgndHJpZ2dl cicsICdldmVudF90cmlnZ2VyJykKK09SREVSIEJZCisgICAgcHJvbmFtZTsKZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL2Z1bmN0aW9ucy90ZW1wbGF0ZXMvZnVuY3Rpb24vcGcvc3FsLzExX3BsdXMvcHJvcGVydGll cy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9mdW5jdGlvbnMvdGVtcGxhdGVzL2Z1bmN0aW9uL3BnL3NxbC8xMV9wbHVzL3By b3BlcnRpZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwYzJjYTAK LS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdW5jdGlvbnMvdGVtcGxhdGVzL2Z1bmN0aW9uL3BnL3Nx bC8xMV9wbHVzL3Byb3BlcnRpZXMuc3FsCkBAIC0wLDAgKzEsMzMgQEAKK1NFTEVDVAorICAgIHBy Lm9pZCwgcHIueG1pbiwgcHIuKiwgcHIucHJvc3JjIEFTIHByb3NyY19jLAorICAgIHByLnByb25h bWUgQVMgbmFtZSwgcGdfZ2V0X2Z1bmN0aW9uX3Jlc3VsdChwci5vaWQpIEFTIHByb3JldHR5cGVu YW1lLAorICAgIHR5cG5zLm5zcG5hbWUgQVMgdHlwbnNwLCBsYW5uYW1lLCBwcm9hcmduYW1lcywg b2lkdmVjdG9ydHlwZXMocHJvYXJndHlwZXMpIEFTIHByb2FyZ3R5cGVuYW1lcywKKyAgICBwZ19n ZXRfZXhwcihwcm9hcmdkZWZhdWx0cywgJ3BnX2NhdGFsb2cucGdfY2xhc3MnOjpyZWdjbGFzcykg QVMgcHJvYXJnZGVmYXVsdHZhbHMsCisgICAgcHJvbmFyZ2RlZmF1bHRzLCBwcm9jb25maWcsIHBn X2dldF91c2VyYnlpZChwcm9vd25lcikgQVMgZnVuY293bmVyLCBkZXNjcmlwdGlvbiwKKyAgICBD QVNFIFdIRU4gcHIucHJva2luZCA9ICd3JyBUSEVOIFRSVUUgRUxTRSBGQUxTRSBFTkQgQVMgcHJv aXN3aW5kb3csCisgICAgKFNFTEVDVAorICAgICAgICBhcnJheV9hZ2cocHJvdmlkZXIgfHwgJz0n IHx8IGxhYmVsKQorICAgIEZST00KKyAgICAgICAgcGdfc2VjbGFiZWwgc2wxCisgICAgV0hFUkUK KyAgICAgICAgc2wxLm9iam9pZD1wci5vaWQpIEFTIHNlY2xhYmVscworRlJPTQorICAgIHBnX3By b2MgcHIKK0pPSU4KKyAgICBwZ190eXBlIHR5cCBPTiB0eXAub2lkPXByb3JldHR5cGUKK0pPSU4K KyAgICBwZ19uYW1lc3BhY2UgdHlwbnMgT04gdHlwbnMub2lkPXR5cC50eXBuYW1lc3BhY2UKK0pP SU4KKyAgICBwZ19sYW5ndWFnZSBsbmcgT04gbG5nLm9pZD1wcm9sYW5nCitMRUZUIE9VVEVSIEpP SU4KKyAgICBwZ19kZXNjcmlwdGlvbiBkZXMgT04gKGRlcy5vYmpvaWQ9cHIub2lkIEFORCBkZXMu Y2xhc3NvaWQ9J3BnX3Byb2MnOjpyZWdjbGFzcykKK1dIRVJFCisgICAgcHIucHJva2luZCBJTiAo J2YnLCAndycpCit7JSBpZiBmbmlkICV9CisgICAgQU5EIHByLm9pZCA9IHt7Zm5pZH19OjpvaWQK K3slIGVsc2UgJX0KKyAgICBBTkQgcHJvbmFtZXNwYWNlID0ge3tzY2lkfX06Om9pZAoreyUgZW5k aWYgJX0KKyAgICBBTkQgdHlwbmFtZSBOT1QgSU4gKCd0cmlnZ2VyJywgJ2V2ZW50X3RyaWdnZXIn KQorT1JERVIgQlkKKyAgICBwcm9uYW1lOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVuY3Rpb25zL3RlbXBs YXRlcy9mdW5jdGlvbi9wZy9zcWwvMTFfcGx1cy91cGRhdGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVuY3Rpb25zL3Rl bXBsYXRlcy9mdW5jdGlvbi9wZy9zcWwvMTFfcGx1cy91cGRhdGUuc3FsCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyYmQyNGIKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdW5j dGlvbnMvdGVtcGxhdGVzL2Z1bmN0aW9uL3BnL3NxbC8xMV9wbHVzL3VwZGF0ZS5zcWwKQEAgLTAs MCArMSwxMTYgQEAKK3slIGltcG9ydCAnbWFjcm9zL2Z1bmN0aW9ucy9zZWN1cml0eS5tYWNyb3Mn IGFzIFNFQ0xBQkVMICV9Cit7JSBpbXBvcnQgJ21hY3Jvcy9mdW5jdGlvbnMvcHJpdmlsZWdlLm1h Y3JvcycgYXMgUFJJVklMRUdFICV9Cit7JSBpbXBvcnQgJ21hY3Jvcy9mdW5jdGlvbnMvdmFyaWFi bGUubWFjcm9zJyBhcyBWQVJJQUJMRSAlfXslIGlmIGRhdGEgJX0KK3slIHNldCBuYW1lID0gb19k YXRhLm5hbWUgJX0KK3slIGlmIGRhdGEubmFtZSAlfQoreyUgaWYgZGF0YS5uYW1lICE9IG9fZGF0 YS5uYW1lICV9CitBTFRFUiBGVU5DVElPTiB7eyBjb25ufHF0SWRlbnQob19kYXRhLnByb25hbWVz cGFjZSwgb19kYXRhLm5hbWUpIH19KHt7CitvX2RhdGEucHJvYXJndHlwZW5hbWVzIH19KQorICAg IFJFTkFNRSBUTyB7eyBjb25ufHF0SWRlbnQoZGF0YS5uYW1lKSB9fTsKK3slIHNldCBuYW1lID0g ZGF0YS5uYW1lICV9Cit7JSBlbmRpZiAlfQoreyUgZW5kaWYgLSV9Cit7JSBpZiBkYXRhLmNoYW5n ZV9mdW5jICAlfQorCitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiB7eyBjb25ufHF0SWRlbnQo b19kYXRhLnByb25hbWVzcGFjZSwgbmFtZSkgfX0oeyUgaWYgZGF0YS5hcmd1bWVudHMgJX0KK3sl IGZvciBwIGluIGRhdGEuYXJndW1lbnRzICV9eyUgaWYgcC5hcmdtb2RlICV9e3twLmFyZ21vZGV9 fSB7JSBlbmRpZiAlfXslIGlmIHAuYXJnbmFtZSAlfXt7IGNvbm58cXRJZGVudChwLmFyZ25hbWUp IH19IHslIGVuZGlmICV9eyUgaWYgcC5hcmd0eXBlICV9e3sgY29ubnxxdFR5cGVJZGVudChwLmFy Z3R5cGUpIH19eyUgZW5kaWYgJX17JSBpZiBwLmFyZ2RlZnZhbCAlfSBERUZBVUxUIHt7cC5hcmdk ZWZ2YWx9fXslIGVuZGlmICV9Cit7JSBpZiBub3QgbG9vcC5sYXN0ICV9LHslIGVuZGlmICV9Cit7 JSBlbmRmb3IgJX0KK3slIGVuZGlmIC0lfQorKQorICAgIFJFVFVSTlMge3sgb19kYXRhLnByb3Jl dHR5cGVuYW1lIH19Cit7JSBpZiAnbGFubmFtZScgaW4gZGF0YSAlfQorICAgIExBTkdVQUdFIHt7 IGRhdGEubGFubmFtZXxxdExpdGVyYWwgfX0geyUgZWxzZSAlfQorICAgIExBTkdVQUdFIHt7IG9f ZGF0YS5sYW5uYW1lfHF0TGl0ZXJhbCB9fQorICAgIHslIGVuZGlmICV9eyUgaWYgJ3Byb3ZvbGF0 aWxlJyBpbiBkYXRhIGFuZCBkYXRhLnByb3ZvbGF0aWxlICV9e3sgZGF0YS5wcm92b2xhdGlsZSB9 fSB7JSBlbGlmICdwcm92b2xhdGlsZScgbm90IGluIGRhdGEgYW5kIG9fZGF0YS5wcm92b2xhdGls ZSAlfXt7IG9fZGF0YS5wcm92b2xhdGlsZSB9fXslIGVuZGlmICV9Cit7JSBpZiAoJ3Byb2xlYWtw cm9vZicgaW4gZGF0YSBhbmQgZGF0YS5wcm9sZWFrcHJvb2YpIG9yICgncHJvbGVha3Byb29mJyBu b3QgaW4gZGF0YSBhbmQgb19kYXRhLnByb2xlYWtwcm9vZikgJX0gTEVBS1BST09GeyUgZWxpZiAn cHJvbGVha3Byb29mJyBpbiBkYXRhIGFuZCBub3QgZGF0YS5wcm9sZWFrcHJvb2YgJX0gTk9UIExF QUtQUk9PRnslIGVuZGlmICV9Cit7JSBpZiAoJ3Byb2lzc3RyaWN0JyBpbiBkYXRhIGFuZCBkYXRh LnByb2lzc3RyaWN0KSBvciAoJ3Byb2lzc3RyaWN0JyBub3QgaW4gZGF0YSBhbmQgb19kYXRhLnBy b2lzc3RyaWN0KSAlfSBTVFJJQ1R7JSBlbmRpZiAlfQoreyUgaWYgKCdwcm9zZWNkZWYnIGluIGRh dGEgYW5kIGRhdGEucHJvc2VjZGVmKSBvciAoJ3Byb3NlY2RlZicgbm90IGluIGRhdGEgYW5kIG9f ZGF0YS5wcm9zZWNkZWYpICV9IFNFQ1VSSVRZIERFRklORVJ7JSBlbmRpZiAlfQoreyUgaWYgKCdw cm9pc3dpbmRvdycgaW4gZGF0YSBhbmQgZGF0YS5wcm9pc3dpbmRvdykgb3IgKCdwcm9pc3dpbmRv dycgbm90IGluIGRhdGEgYW5kIG9fZGF0YS5wcm9pc3dpbmRvdykgJX0gV0lORE9XeyUgZW5kaWYg JX0KKworICAgIHslIGlmICdwcm9wYXJhbGxlbCcgaW4gZGF0YSBhbmQgZGF0YS5wcm9wYXJhbGxl bCAlfVBBUkFMTEVMIHt7IGRhdGEucHJvcGFyYWxsZWwgfX17JSBlbGlmICdwcm9wYXJhbGxlbCcg bm90IGluIGRhdGEgYW5kIG9fZGF0YS5wcm9wYXJhbGxlbCAlfVBBUkFMTEVMIHt7IG9fZGF0YS5w cm9wYXJhbGxlbCB9fXslIGVuZGlmICV9CisKKyAgICB7JSBpZiBkYXRhLnByb2Nvc3QgJX1DT1NU IHt7ZGF0YS5wcm9jb3N0fX17JSBlbGlmIG9fZGF0YS5wcm9jb3N0ICV9Q09TVCB7e29fZGF0YS5w cm9jb3N0fX17JSBlbmRpZiAlfXslIGlmIGRhdGEucHJvcm93cyAlfQorCisgICAgUk9XUyB7e2Rh dGEucHJvcm93c319eyUgZWxpZiBkYXRhLnByb3Jvd3MgaXMgbm90IGRlZmluZWQgYW5kIG9fZGF0 YS5wcm9yb3dzIGFuZCBvX2RhdGEucHJvcm93cyAhPSAnMCcgJX0gICAgUk9XUyB7e29fZGF0YS5w cm9yb3dzfX0geyVlbmRpZiAtJX17JSBpZiBkYXRhLm1lcmdlZF92YXJpYWJsZXMgJX17JSBmb3Ig diBpbiBkYXRhLm1lcmdlZF92YXJpYWJsZXMgJX0KKworICAgIFNFVCB7eyBjb25ufHF0SWRlbnQo di5uYW1lKSB9fT17eyB2LnZhbHVlfHF0TGl0ZXJhbCB9fXslIGVuZGZvciAtJX0KKyAgICB7JSBl bmRpZiAlfQorCitBUyB7JSBpZiAncHJvYmluJyBpbiBkYXRhIG9yICdwcm9zcmNfYycgaW4gZGF0 YSAlfQoreyUgaWYgJ3Byb2JpbicgaW4gZGF0YSAlfXt7IGRhdGEucHJvYmlufHF0TGl0ZXJhbCB9 fXslIGVsc2UgJX17eyBvX2RhdGEucHJvYmlufHF0TGl0ZXJhbCB9fXslIGVuZGlmICV9LCB7JSBp ZiAncHJvc3JjX2MnIGluIGRhdGEgJX17eyBkYXRhLnByb3NyY19jfHF0TGl0ZXJhbCB9fXslIGVs c2UgJX17eyBvX2RhdGEucHJvc3JjX2N8cXRMaXRlcmFsIH19eyUgZW5kaWYgJX17JSBlbGlmICdw cm9zcmMnIGluIGRhdGEgJX0KKyRCT0RZJHt7IGRhdGEucHJvc3JjIH19JEJPRFkkeyUgZWxpZiBv X2RhdGEubGFubmFtZSA9PSAnYycgJX0KK3t7IG9fZGF0YS5wcm9iaW58cXRMaXRlcmFsIH19LCB7 eyBvX2RhdGEucHJvc3JjX2N8cXRMaXRlcmFsIH19eyUgZWxzZSAlfQorJEJPRFkke3sgb19kYXRh LnByb3NyYyB9fSRCT0RZJHslIGVuZGlmIC0lfTsKK3slIGVuZGlmIC0lfQoreyUgaWYgZGF0YS5m dW5jb3duZXIgJX0KKworQUxURVIgRlVOQ1RJT04ge3sgY29ubnxxdElkZW50KG9fZGF0YS5wcm9u YW1lc3BhY2UsIG5hbWUpIH19KHt7b19kYXRhLnByb2FyZ3R5cGVuYW1lcyB9fSkKKyAgICBPV05F UiBUTyB7eyBjb25ufHF0SWRlbnQoZGF0YS5mdW5jb3duZXIpIH19OworeyUgZW5kaWYgLSV9Cit7 IyBUaGUgU1FMIGdlbmVyYXRlZCBiZWxvdyB3aWxsIGNoYW5nZSBwcml2aWxlZGdlcyAjfQoreyUg aWYgZGF0YS5hY2wgJX0KK3slIGlmICdkZWxldGVkJyBpbiBkYXRhLmFjbCAlfQoreyUgZm9yIHBy aXYgaW4gZGF0YS5hY2wuZGVsZXRlZCAlfQorCit7eyBQUklWSUxFR0UuVU5TRVRBTEwoY29ubiwg J0ZVTkNUSU9OJywgcHJpdi5ncmFudGVlLCBuYW1lLCBvX2RhdGEucHJvbmFtZXNwYWNlLCBvX2Rh dGEucHJvYXJndHlwZW5hbWVzKSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAtJX0KK3slIGlm ICdjaGFuZ2VkJyBpbiBkYXRhLmRhdGFjbCAlfQoreyUgZm9yIHByaXYgaW4gZGF0YS5hY2wuY2hh bmdlZCAlfQorCit7eyBQUklWSUxFR0UuVU5TRVRBTEwoY29ubiwgJ0ZVTkNUSU9OJywgcHJpdi5n cmFudGVlLCBuYW1lLCBvX2RhdGEucHJvbmFtZXNwYWNlLCBvX2RhdGEucHJvYXJndHlwZW5hbWVz KSB9fQorCit7eyBQUklWSUxFR0UuU0VUKGNvbm4sICdGVU5DVElPTicsIHByaXYuZ3JhbnRlZSwg bmFtZSwgcHJpdi53aXRob3V0X2dyYW50LCBwcml2LndpdGhfZ3JhbnQsIG9fZGF0YS5wcm9uYW1l c3BhY2UsIG9fZGF0YS5wcm9hcmd0eXBlbmFtZXMpIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlm IC0lfQoreyUgaWYgJ2FkZGVkJyBpbiBkYXRhLmFjbCAlfQoreyUgZm9yIHByaXYgaW4gZGF0YS5h Y2wuYWRkZWQgJX0KKwore3sgUFJJVklMRUdFLlNFVChjb25uLCAnRlVOQ1RJT04nLCBwcml2Lmdy YW50ZWUsIG5hbWUsIHByaXYud2l0aG91dF9ncmFudCwgcHJpdi53aXRoX2dyYW50LCBvX2RhdGEu cHJvbmFtZXNwYWNlLCBvX2RhdGEucHJvYXJndHlwZW5hbWVzKSB9fQoreyUgZW5kZm9yICV9eyUg ZW5kaWYgLSV9Cit7JSBlbmRpZiAtJX0KK3slIGlmIGRhdGEuY2hhbmdlX2Z1bmMgPT0gRmFsc2Ug JX0KK3slIGlmIGRhdGEudmFyaWFibGVzICV9Cit7JSBpZiAnZGVsZXRlZCcgaW4gZGF0YS52YXJp YWJsZXMgYW5kIGRhdGEudmFyaWFibGVzLmRlbGV0ZWR8bGVuZ3RoID4gMCAlfQorCit7eyBWQVJJ QUJMRS5VTlNFVChjb25uLCAnRlVOQ1RJT04nLCBuYW1lLCBkYXRhLnZhcmlhYmxlcy5kZWxldGVk LCBvX2RhdGEucHJvbmFtZXNwYWNlLCBvX2RhdGEucHJvYXJndHlwZW5hbWVzKSB9fQoreyUgZW5k aWYgLSV9Cit7JSBpZiAnbWVyZ2VkX3ZhcmlhYmxlcycgaW4gZGF0YSBhbmQgZGF0YS5tZXJnZWRf dmFyaWFibGVzfGxlbmd0aCA+IDAgJX0KKwore3sgVkFSSUFCTEUuU0VUKGNvbm4sICdGVU5DVElP TicsIG5hbWUsIGRhdGEubWVyZ2VkX3ZhcmlhYmxlcywgb19kYXRhLnByb25hbWVzcGFjZSwgb19k YXRhLnByb2FyZ3R5cGVuYW1lcykgfX0KK3slIGVuZGlmIC0lfQoreyUgZW5kaWYgLSV9Cit7JSBl bmRpZiAtJX0KK3slIHNldCBzZWNsYWJlbHMgPSBkYXRhLnNlY2xhYmVscyAlfQoreyUgaWYgJ2Rl bGV0ZWQnIGluIHNlY2xhYmVscyBhbmQgc2VjbGFiZWxzLmRlbGV0ZWR8bGVuZ3RoID4gMCAlfQor eyUgZm9yIHIgaW4gc2VjbGFiZWxzLmRlbGV0ZWQgJX0KKwore3sgU0VDTEFCRUwuVU5TRVQoY29u biwgJ0ZVTkNUSU9OJywgbmFtZSwgci5wcm92aWRlciwgb19kYXRhLnByb25hbWVzcGFjZSwgb19k YXRhLnByb2FyZ3R5cGVuYW1lcykgfX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgLSV9Cit7JSBp ZiAnYWRkZWQnIGluIHNlY2xhYmVscyBhbmQgc2VjbGFiZWxzLmFkZGVkfGxlbmd0aCA+IDAgJX0K K3slIGZvciByIGluIHNlY2xhYmVscy5hZGRlZCAlfQorCit7eyBTRUNMQUJFTC5TRVQoY29ubiwg J0ZVTkNUSU9OJywgbmFtZSwgci5wcm92aWRlciwgci5sYWJlbCwgb19kYXRhLnByb25hbWVzcGFj ZSwgb19kYXRhLnByb2FyZ3R5cGVuYW1lcykgfX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgLSV9 Cit7JSBpZiAnY2hhbmdlZCcgaW4gc2VjbGFiZWxzIGFuZCBzZWNsYWJlbHMuY2hhbmdlZHxsZW5n dGggPiAwICV9Cit7JSBmb3IgciBpbiBzZWNsYWJlbHMuY2hhbmdlZCAlfQorCit7eyBTRUNMQUJF TC5TRVQoY29ubiwgJ0ZVTkNUSU9OJywgbmFtZSwgci5wcm92aWRlciwgci5sYWJlbCwgb19kYXRh LnByb25hbWVzcGFjZSwgb19kYXRhLnByb2FyZ3R5cGVuYW1lcykgfX0KK3slIGVuZGZvciAlfQor eyUgZW5kaWYgLSV9Cit7JSBpZiBkYXRhLmRlc2NyaXB0aW9uIGlzIGRlZmluZWQgYW5kIGRhdGEu ZGVzY3JpcHRpb24gIT0gb19kYXRhLmRlc2NyaXB0aW9uJX0KKworQ09NTUVOVCBPTiBGVU5DVElP TiB7eyBjb25ufHF0SWRlbnQob19kYXRhLnByb25hbWVzcGFjZSwgbmFtZSkgfX0oe3tvX2RhdGEu cHJvYXJndHlwZW5hbWVzIH19KQorICAgIElTIHt7IGRhdGEuZGVzY3JpcHRpb258cXRMaXRlcmFs IH19OworeyUgZW5kaWYgLSV9CisKK3slIGlmIGRhdGEucHJvbmFtZXNwYWNlICV9CisKK0FMVEVS IEZVTkNUSU9OIHt7IGNvbm58cXRJZGVudChvX2RhdGEucHJvbmFtZXNwYWNlLCBuYW1lKSB9fSh7 e29fZGF0YS5wcm9hcmd0eXBlbmFtZXMgfX0pCisgICAgU0VUIFNDSEVNQSB7eyBjb25ufHF0SWRl bnQoZGF0YS5wcm9uYW1lc3BhY2UpIH19OworeyUgZW5kaWYgLSV9CisKK3slIGVuZGlmICV9CmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy9mdW5jdGlvbnMvdGVtcGxhdGVzL2Z1bmN0aW9uL3BwYXMvc3FsLzkuMl9w bHVzL2NyZWF0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy9mdW5jdGlvbnMvdGVtcGxhdGVzL2Z1bmN0aW9uL3BwYXMvc3Fs LzkuMl9wbHVzL2NyZWF0ZS5zcWwKaW5kZXggMjEzNjUyYy4uMTZjMDg4ZiAxMDA2NDQKLS0tIGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvZnVuY3Rpb25zL3RlbXBsYXRlcy9mdW5jdGlvbi9wcGFzL3NxbC85LjJfcGx1cy9jcmVhdGUu c3FsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL2Z1bmN0aW9ucy90ZW1wbGF0ZXMvZnVuY3Rpb24vcHBhcy9zcWwvOS4yX3Bs dXMvY3JlYXRlLnNxbApAQCAtMTMsNyArMTMsNyBAQCBDUkVBVEV7JSBpZiBxdWVyeV90eXBlIGlz IGRlZmluZWQgJX17eycgT1IgUkVQTEFDRSd9fXslIGVuZGlmICV9IEZVTkNUSU9OIHt7IGNvbgog eyUgZW5kaWYgLSV9CiApCiB7JSBlbmRpZiAtJX0KLSAgICBSRVRVUk5TeyUgaWYgZGF0YS5wcm9y ZXRzZXQgKGRhdGEucHJvcmV0dHlwZW5hbWUuc3RhcnRzd2l0aCgnU0VUT0YgJykgb3IgZGF0YS5w cm9yZXR0eXBlbmFtZS5zdGFydHN3aXRoKCdUQUJMRScpKSAlfSB7eyBkYXRhLnByb3JldHR5cGVu YW1lIH19IHslIGVsaWYgZGF0YS5wcm9yZXRzZXQgJX0gU0VUT0Yge3sgY29ubnxxdFR5cGVJZGVu dChkYXRhLnByb3JldHR5cGVuYW1lKSB9fXslIGVsc2UgJX0ge3sgY29ubnxxdFR5cGVJZGVudChk YXRhLnByb3JldHR5cGVuYW1lKSB9fXslIGVuZGlmICV9CisgICAgUkVUVVJOU3slIGlmIGRhdGEu cHJvcmV0c2V0IGFuZCAoZGF0YS5wcm9yZXR0eXBlbmFtZS5zdGFydHN3aXRoKCdTRVRPRiAnKSBv ciBkYXRhLnByb3JldHR5cGVuYW1lLnN0YXJ0c3dpdGgoJ1RBQkxFJykpICV9IHt7IGRhdGEucHJv cmV0dHlwZW5hbWUgfX0geyUgZWxpZiBkYXRhLnByb3JldHNldCAlfSBTRVRPRiB7eyBjb25ufHF0 VHlwZUlkZW50KGRhdGEucHJvcmV0dHlwZW5hbWUpIH19eyUgZWxzZSAlfSB7eyBjb25ufHF0VHlw ZUlkZW50KGRhdGEucHJvcmV0dHlwZW5hbWUpIH19eyUgZW5kaWYgJX0KIAogICAgIExBTkdVQUdF IHt7IGRhdGEubGFubmFtZXxxdExpdGVyYWwgfX0KIHslIGlmIGRhdGEucHJvY29zdCAlfQpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvZnVuY3Rpb25zL3RlbXBsYXRlcy9wcm9jZWR1cmUvcGcvc3FsL2RlZmF1bHQv YWNsLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL2Z1bmN0aW9ucy90ZW1wbGF0ZXMvcHJvY2VkdXJlL3BnL3NxbC9kZWZhdWx0 L2FjbC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmU3YWFlNQotLS0g L2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL2Z1bmN0aW9ucy90ZW1wbGF0ZXMvcHJvY2VkdXJlL3BnL3NxbC9k ZWZhdWx0L2FjbC5zcWwKQEAgLTAsMCArMSwzNSBAQAorU0VMRUNUCisgICAgQ09BTEVTQ0UoZ3Qu cm9sbmFtZSwgJ1BVQkxJQycpIEFTIGdyYW50ZWUsCisgICAgZy5yb2xuYW1lIEFTIGdyYW50b3Is IGFycmF5X2FnZyhwcml2aWxlZ2VfdHlwZSkgQVMgcHJpdmlsZWdlcywKKyAgICBhcnJheV9hZ2co aXNfZ3JhbnRhYmxlKSBBUyBncmFudGFibGUKK0ZST00KKyAgICAoU0VMRUNUCisgICAgICAgIGQu Z3JhbnRlZSwgZC5ncmFudG9yLCBkLmlzX2dyYW50YWJsZSwKKyAgICAgICAgQ0FTRSBkLnByaXZp bGVnZV90eXBlCisgICAgICAgIFdIRU4gJ0NPTk5FQ1QnIFRIRU4gJ2MnCisgICAgICAgIFdIRU4g J0NSRUFURScgVEhFTiAnQycKKyAgICAgICAgV0hFTiAnREVMRVRFJyBUSEVOICdkJworICAgICAg ICBXSEVOICdFWEVDVVRFJyBUSEVOICdYJworICAgICAgICBXSEVOICdJTlNFUlQnIFRIRU4gJ2En CisgICAgICAgIFdIRU4gJ1JFRkVSRU5DRVMnIFRIRU4gJ3gnCisgICAgICAgIFdIRU4gJ1NFTEVD VCcgVEhFTiAncicKKyAgICAgICAgV0hFTiAnVEVNUE9SQVJZJyBUSEVOICdUJworICAgICAgICBX SEVOICdUUklHR0VSJyBUSEVOICd0JworICAgICAgICBXSEVOICdUUlVOQ0FURScgVEhFTiAnRCcK KyAgICAgICAgV0hFTiAnVVBEQVRFJyBUSEVOICd3JworICAgICAgICBXSEVOICdVU0FHRScgVEhF TiAnVScKKyAgICAgICAgRUxTRSAnVU5LTk9XTicKKyAgICAgICAgRU5EIEFTIHByaXZpbGVnZV90 eXBlCisgICAgRlJPTQorICAgICAgICAoU0VMRUNUCisgICAgICAgICAgICAoZCkuZ3JhbnRlZSBB UyBncmFudGVlLCAoZCkuZ3JhbnRvciBBUyBncmFudG9yLAorICAgICAgICAgICAgKGQpLmlzX2dy YW50YWJsZSBBUyBpc19ncmFudGFibGUsCisgICAgICAgICAgICAoZCkucHJpdmlsZWdlX3R5cGUg QVMgcHJpdmlsZWdlX3R5cGUKKyAgICAgICAgRlJPTQorICAgICAgICAgICAgKFNFTEVDVCBhY2xl eHBsb2RlKGRiLnByb2FjbCkgQVMgZCBGUk9NIHBnX3Byb2MgZGIKKyAgICAgICAgICAgIFdIRVJF IGRiLm9pZCA9IHt7Zm5pZH19OjpPSUQpIGEKKyAgICAgICAgKSBkCisgICAgKSBkCisgICAgTEVG VCBKT0lOIHBnX2NhdGFsb2cucGdfcm9sZXMgZyBPTiAoZC5ncmFudG9yID0gZy5vaWQpCisgICAg TEVGVCBKT0lOIHBnX2NhdGFsb2cucGdfcm9sZXMgZ3QgT04gKGQuZ3JhbnRlZSA9IGd0Lm9pZCkK K0dST1VQIEJZIGcucm9sbmFtZSwgZ3Qucm9sbmFtZTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z1bmN0aW9u cy90ZW1wbGF0ZXMvcHJvY2VkdXJlL3BnL3NxbC9kZWZhdWx0L2NvbGxfc3RhdHMuc3FsIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv ZnVuY3Rpb25zL3RlbXBsYXRlcy9wcm9jZWR1cmUvcGcvc3FsL2RlZmF1bHQvY29sbF9zdGF0cy5z cWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTkyNDY3OQotLS0gL2Rldi9u dWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL2Z1bmN0aW9ucy90ZW1wbGF0ZXMvcHJvY2VkdXJlL3BnL3NxbC9kZWZhdWx0 L2NvbGxfc3RhdHMuc3FsCkBAIC0wLDAgKzEsMjAgQEAKK1NFTEVDVAorICAgIGZ1bmNuYW1lIEFT IHt7IGNvbm58cXRJZGVudChfKCdOYW1lJykpIH19LAorICAgIGNhbGxzIEFTIHt7IGNvbm58cXRJ ZGVudChfKCdOdW1iZXIgb2YgY2FsbHMnKSkgfX0sCisgICAgdG90YWxfdGltZSBBUyB7eyBjb25u fHF0SWRlbnQoXygnVG90YWwgdGltZScpKSB9fSwKKyAgICBzZWxmX3RpbWUgQVMge3sgY29ubnxx dElkZW50KF8oJ1NlbGYgdGltZScpKSB9fQorRlJPTQorICAgIHBnX3N0YXRfdXNlcl9mdW5jdGlv bnMKK1dIRVJFCisgICAgc2NoZW1hbmFtZSA9IHt7c2NoZW1hX25hbWV8cXRMaXRlcmFsfX0KKyAg ICBBTkQgZnVuY2lkIElOICgKKyAgICAgICAgU0VMRUNUIHAub2lkCisgICAgICAgIEZST00KKyAg ICAgICAgICAgIHBnX3Byb2MgcAorICAgICAgICBKT0lOCisgICAgICAgICAgICBwZ190eXBlIHR5 cCBPTiB0eXAub2lkPXAucHJvcmV0dHlwZQorICAgICAgICBXSEVSRQorICAgICAgICAgICAgcC5w cm9raW5kID0gJ3AnOjpjaGFyCisgICAgICAgICAgICBBTkQgdHlwbmFtZSBOT1QgSU4gKCd0cmln Z2VyJywgJ2V2ZW50X3RyaWdnZXInKQorICAgICkKK09SREVSIEJZIGZ1bmNuYW1lOwpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvZnVuY3Rpb25zL3RlbXBsYXRlcy9wcm9jZWR1cmUvcGcvc3FsL2RlZmF1bHQvY3Jl YXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL2Z1bmN0aW9ucy90ZW1wbGF0ZXMvcHJvY2VkdXJlL3BnL3NxbC9kZWZhdWx0 L2NyZWF0ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Y5MTUxZgot LS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z1bmN0aW9ucy90ZW1wbGF0ZXMvcHJvY2VkdXJlL3BnL3Nx bC9kZWZhdWx0L2NyZWF0ZS5zcWwKQEAgLTAsMCArMSw1MCBAQAoreyUgaW1wb3J0ICdtYWNyb3Mv ZnVuY3Rpb25zL3NlY3VyaXR5Lm1hY3JvcycgYXMgU0VDTEFCRUwgJX0KK3slIGltcG9ydCAnbWFj cm9zL2Z1bmN0aW9ucy9wcml2aWxlZ2UubWFjcm9zJyBhcyBQUklWSUxFR0UgJX0KK3slIGltcG9y dCAnbWFjcm9zL2Z1bmN0aW9ucy92YXJpYWJsZS5tYWNyb3MnIGFzIFZBUklBQkxFICV9Cit7JSBz ZXQgaXNfY29sdW1ucyA9IFtdICV9Cit7JSBpZiBkYXRhICV9Cit7JSBpZiBxdWVyeV9mb3IgPT0g J3NxbF9wYW5lbCcgYW5kIGZ1bmNfZGVmIGlzIGRlZmluZWQgJX0KK0NSRUFURSBPUiBSRVBMQUNF ICBQUk9DRURVUkUge3tmdW5jX2RlZn19Cit7JSBlbHNlICV9CitDUkVBVEUgT1IgUkVQTEFDRSBQ Uk9DRURVUkUge3sgY29ubnxxdElkZW50KGRhdGEucHJvbmFtZXNwYWNlLCBkYXRhLm5hbWUpIH19 eyUgaWYgZGF0YS5hcmd1bWVudHMgaXMgZGVmaW5lZCAlfQorKHslIGZvciBwIGluIGRhdGEuYXJn dW1lbnRzICV9eyUgaWYgcC5hcmdtb2RlICV9e3twLmFyZ21vZGV9fSB7JSBlbmRpZiAlfXslIGlm IHAuYXJnbmFtZSAlfXt7IGNvbm58cXRJZGVudChwLmFyZ25hbWUpfX0geyUgZW5kaWYgJX17JSBp ZiBwLmFyZ3R5cGUgJX17eyBjb25ufHF0VHlwZUlkZW50KHAuYXJndHlwZSkgfX17JSBlbmRpZiAl fXslIGlmIHAuYXJnZGVmdmFsICV9IERFRkFVTFQge3twLmFyZ2RlZnZhbH19eyUgZW5kaWYgJX0K K3slIGlmIG5vdCBsb29wLmxhc3QgJX0sIHslIGVuZGlmICV9Cit7JSBlbmRmb3IgLSV9Cit7JSBl bmRpZiAlfQorKQoreyUgZW5kaWYgJX0KK0xBTkdVQUdFIHt7IGRhdGEubGFubmFtZXxxdExpdGVy YWwgfX0KK3slIGlmIGRhdGEucHJvc2VjZGVmICV9U0VDVVJJVFkgREVGSU5FUiB7JSBlbmRpZiAl fQoreyUgaWYgZGF0YS52YXJpYWJsZXMgJX17JSBmb3IgdiBpbiBkYXRhLnZhcmlhYmxlcyAlfQor CitTRVQge3sgY29ubnxxdElkZW50KHYubmFtZSkgfX09e3sgdi52YWx1ZXxxdExpdGVyYWwgfX17 JSBlbmRmb3IgLSV9Cit7JSBlbmRpZiAlfQorCitBUyB7JSBpZiBkYXRhLmxhbm5hbWUgPT0gJ2Mn ICV9Cit7eyBkYXRhLnByb2JpbnxxdExpdGVyYWwgfX0sIHt7IGRhdGEucHJvc3JjX2N8cXRMaXRl cmFsIH19Cit7JSBlbHNlICV9CiskQk9EWSR7eyBkYXRhLnByb3NyYyB9fSRCT0RZJHslIGVuZGlm IC0lfTsKK3slIGlmIGRhdGEuYWNsIGFuZCBub3QgaXNfc3FsICV9Cit7JSBmb3IgcCBpbiBkYXRh LmFjbCAlfQorCit7eyBQUklWSUxFR0UuU0VUKGNvbm4sICJQUk9DRURVUkUiLCBwLmdyYW50ZWUs IGRhdGEubmFtZSwgcC53aXRob3V0X2dyYW50LCBwLndpdGhfZ3JhbnQsIGRhdGEucHJvbmFtZXNw YWNlLCBkYXRhLmZ1bmNfYXJnc193aXRob3V0KX19Cit7JSBlbmRmb3IgJX17JSBlbmRpZiAlfQor eyUgaWYgZGF0YS5yZXZva2VfYWxsICV9CisKK3t7IFBSSVZJTEVHRS5VTlNFVEFMTChjb25uLCAi UFJPQ0VEVVJFIiwgIlBVQkxJQyIsIGRhdGEubmFtZSwgZGF0YS5wcm9uYW1lc3BhY2UsIGRhdGEu ZnVuY19hcmdzX3dpdGhvdXQpfX0KK3slIGVuZGlmICV9Cit7JSBpZiBkYXRhLmRlc2NyaXB0aW9u ICV9CisKK0NPTU1FTlQgT04gUFJPQ0VEVVJFIHt7IGNvbm58cXRJZGVudChkYXRhLnByb25hbWVz cGFjZSwgZGF0YS5uYW1lKSB9fQorICAgIElTIHt7IGRhdGEuZGVzY3JpcHRpb258cXRMaXRlcmFs ICB9fTsKK3slIGVuZGlmIC0lfQoreyUgaWYgZGF0YS5zZWNsYWJlbHMgJX0KK3slIGZvciByIGlu IGRhdGEuc2VjbGFiZWxzICV9Cit7JSBpZiByLmxhYmVsIGFuZCByLnByb3ZpZGVyICV9CisKK3t7 IFNFQ0xBQkVMLlNFVChjb25uLCAnUFJPQ0VEVVJFJywgZGF0YS5uYW1lLCByLnByb3ZpZGVyLCBy LmxhYmVsLCBkYXRhLnByb25hbWVzcGFjZSwgZGF0YS5mdW5jX2FyZ3Nfd2l0aG91dCkgfX0KK3sl IGVuZGlmICV9Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmIC0lfQorCit7JSBlbmRpZiAlfQpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvZnVuY3Rpb25zL3RlbXBsYXRlcy9wcm9jZWR1cmUvcGcvc3FsL2RlZmF1bHQv ZGVsZXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL2Z1bmN0aW9ucy90ZW1wbGF0ZXMvcHJvY2VkdXJlL3BnL3NxbC9kZWZh dWx0L2RlbGV0ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjRmY2Rj MgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z1bmN0aW9ucy90ZW1wbGF0ZXMvcHJvY2VkdXJlL3Bn L3NxbC9kZWZhdWx0L2RlbGV0ZS5zcWwKQEAgLTAsMCArMSwyMSBAQAoreyUgaWYgc2NpZCBhbmQg Zm5pZCAlfQorU0VMRUNUCisgICAgcHIucHJvbmFtZSBhcyBuYW1lLCAnKCcgfHwgQ09BTEVTQ0Uo cGdfY2F0YWxvZworICAgIC5wZ19nZXRfZnVuY3Rpb25faWRlbnRpdHlfYXJndW1lbnRzKHByLm9p ZCksICcnKSB8fCAnKScgYXMgZnVuY19hcmdzLAorICAgIG5zcG5hbWUKK0ZST00KKyAgICBwZ19w cm9jIHByCitKT0lOCisgICAgcGdfdHlwZSB0eXAgT04gdHlwLm9pZD1wcm9yZXR0eXBlCitKT0lO CisgICAgcGdfbmFtZXNwYWNlIG5zcCBPTiBuc3Aub2lkPXByLnByb25hbWVzcGFjZQorV0hFUkUK KyAgICBwci5wcm9raW5kID0gJ3AnOjpjaGFyCisgICAgQU5EIHByb25hbWVzcGFjZSA9IHt7c2Np ZH19OjpvaWQKKyAgICBBTkQgdHlwbmFtZSBOT1QgSU4gKCd0cmlnZ2VyJywgJ2V2ZW50X3RyaWdn ZXInKQorICAgIEFORCBwci5vaWQgPSB7e2ZuaWR9fTsKK3slIGVuZGlmICV9CisKK3slIGlmIG5h bWUgJX0KK0RST1AgUFJPQ0VEVVJFIHt7IGNvbm58cXRJZGVudChuc3BuYW1lLCBuYW1lKSB9fTsK K3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdW5jdGlvbnMvdGVtcGxhdGVzL3Byb2NlZHVy ZS9wZy9zcWwvZGVmYXVsdC9nZXRfZGVmaW5pdGlvbi5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdW5jdGlvbnMvdGVtcGxh dGVzL3Byb2NlZHVyZS9wZy9zcWwvZGVmYXVsdC9nZXRfZGVmaW5pdGlvbi5zcWwKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGMyZTlkOQotLS0gL2Rldi9udWxsCisrKyBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L2Z1bmN0aW9ucy90ZW1wbGF0ZXMvcHJvY2VkdXJlL3BnL3NxbC9kZWZhdWx0L2dldF9kZWZpbml0 aW9uLnNxbApAQCAtMCwwICsxLDE1IEBACitTRUxFQ1QKKyAgICBwZ19nZXRfZnVuY3Rpb25kZWYo e3tmbmlkfX06Om9pZCkgQVMgZnVuY19kZWYsCisgICAgQ09BTEVTQ0UocGdfY2F0YWxvZy5wZ19n ZXRfZnVuY3Rpb25faWRlbnRpdHlfYXJndW1lbnRzKHByLm9pZCksICcnKSBhcworICAgIGZ1bmNf d2l0aF9pZGVudGl0eV9hcmd1bWVudHMsCisgICAgbnNwbmFtZSwKKyAgICBwci5wcm9uYW1lIGFz IHByb25hbWUsCisgICAgQ09BTEVTQ0UocGdfY2F0YWxvZy5wZ19nZXRfZnVuY3Rpb25fYXJndW1l bnRzKHByLm9pZCksICcnKSBhcyBmdW5jX2FyZ3MKK0ZST00KKyAgICBwZ19wcm9jIHByCitKT0lO CisgICAgcGdfbmFtZXNwYWNlIG5zcCBPTiBuc3Aub2lkPXByLnByb25hbWVzcGFjZQorV0hFUkUK KyAgICBwci5wcm9raW5kID0gJ3AnOjpjaGFyCisgICAgQU5EIHByb25hbWVzcGFjZSA9IHt7c2Np ZH19OjpvaWQKKyAgICBBTkQgcHIub2lkID0ge3tmbmlkfX06Om9pZDsKZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L2Z1bmN0aW9ucy90ZW1wbGF0ZXMvcHJvY2VkdXJlL3BnL3NxbC9kZWZhdWx0L2dldF9sYW5ndWFn ZXMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvZnVuY3Rpb25zL3RlbXBsYXRlcy9wcm9jZWR1cmUvcGcvc3FsL2RlZmF1bHQv Z2V0X2xhbmd1YWdlcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjgx ZGRmYgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z1bmN0aW9ucy90ZW1wbGF0ZXMvcHJvY2VkdXJl L3BnL3NxbC9kZWZhdWx0L2dldF9sYW5ndWFnZXMuc3FsCkBAIC0wLDAgKzEsNCBAQAorU0VMRUNU CisgICAgbGFubmFtZSBhcyBsYWJlbCwgbGFubmFtZSBhcyB2YWx1ZQorRlJPTQorICAgIHBnX2xh bmd1YWdlOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVuY3Rpb25zL3RlbXBsYXRlcy9wcm9jZWR1cmUvcGcv c3FsL2RlZmF1bHQvZ2V0X29pZC5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdW5jdGlvbnMvdGVtcGxhdGVzL3Byb2NlZHVy ZS9wZy9zcWwvZGVmYXVsdC9nZXRfb2lkLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi5iZTk4YjUzCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVuY3Rpb25zL3RlbXBsYXRl cy9wcm9jZWR1cmUvcGcvc3FsL2RlZmF1bHQvZ2V0X29pZC5zcWwKQEAgLTAsMCArMSwxNyBAQAor U0VMRUNUCisgICAgcHIub2lkLCBwci5wcm9uYW1lIHx8ICcoJyB8fCBDT0FMRVNDRShwZ19jYXRh bG9nCisgICAgLnBnX2dldF9mdW5jdGlvbl9pZGVudGl0eV9hcmd1bWVudHMocHIub2lkKSwgJycp IHx8ICcpJyBhcyBuYW1lLAorICAgIGxhbm5hbWUsIHBnX2dldF91c2VyYnlpZChwcm9vd25lcikg YXMgZnVuY293bmVyLCBwci5wcm9uYW1lc3BhY2UgQVMgbnNwCitGUk9NCisgICAgcGdfcHJvYyBw cgorSk9JTgorICAgIHBnX3R5cGUgdHlwIE9OIHR5cC5vaWQ9cHJvcmV0dHlwZQorSk9JTgorICAg IHBnX2xhbmd1YWdlIGxuZyBPTiBsbmcub2lkPXByb2xhbmcKK0pPSU4KKyAgICBwZ19uYW1lc3Bh Y2UgbnNwIE9OIG5zcC5vaWQ9cHIucHJvbmFtZXNwYWNlCisgICAgQU5EIG5zcC5uc3BuYW1lPXt7 IG5zcG5hbWV8cXRMaXRlcmFsIH19CitXSEVSRQorICAgIHByLnByb2tpbmQgPSAncCc6OmNoYXIK KyAgICBBTkQgdHlwbmFtZSBOT1QgSU4gKCd0cmlnZ2VyJywgJ2V2ZW50X3RyaWdnZXInKQorICAg IEFORCBwci5wcm9uYW1lID0ge3sgbmFtZXxxdExpdGVyYWwgfX07CmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9m dW5jdGlvbnMvdGVtcGxhdGVzL3Byb2NlZHVyZS9wZy9zcWwvZGVmYXVsdC9nZXRfb3V0X3R5cGVz LnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL2Z1bmN0aW9ucy90ZW1wbGF0ZXMvcHJvY2VkdXJlL3BnL3NxbC9kZWZhdWx0L2dl dF9vdXRfdHlwZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0YTEx ODcKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdW5jdGlvbnMvdGVtcGxhdGVzL3Byb2NlZHVyZS9w Zy9zcWwvZGVmYXVsdC9nZXRfb3V0X3R5cGVzLnNxbApAQCAtMCwwICsxLDYgQEAKK1NFTEVDVAor ICAgIGZvcm1hdF90eXBlKG9pZCwgTlVMTCkgQVMgb3V0X2FyZ190eXBlCitGUk9NCisgICAgcGdf dHlwZQorV0hFUkUKKyAgICBvaWQgPSB7eyBvdXRfYXJnX29pZCB9fTo6b2lkOwpkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZnVuY3Rpb25zL3RlbXBsYXRlcy9wcm9jZWR1cmUvcGcvc3FsL2RlZmF1bHQvZ2V0X3Nj aGVtYS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy9mdW5jdGlvbnMvdGVtcGxhdGVzL3Byb2NlZHVyZS9wZy9zcWwvZGVmYXVs dC9nZXRfc2NoZW1hLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMjdk NGI5Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVuY3Rpb25zL3RlbXBsYXRlcy9wcm9jZWR1cmUv cGcvc3FsL2RlZmF1bHQvZ2V0X3NjaGVtYS5zcWwKQEAgLTAsMCArMSw2IEBACitTRUxFQ1QKKyAg ICBuc3BuYW1lCitGUk9NCisgICAgcGdfbmFtZXNwYWNlCitXSEVSRQorICAgIG9pZCA9IHt7IHNj aWQgfX06Om9pZDsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z1bmN0aW9ucy90ZW1wbGF0ZXMvcHJvY2VkdXJl L3BnL3NxbC9kZWZhdWx0L2dldF90eXBlcy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdW5jdGlvbnMvdGVtcGxhdGVzL3By b2NlZHVyZS9wZy9zcWwvZGVmYXVsdC9nZXRfdHlwZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLjJhNTU4MmUKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdW5jdGlvbnMv dGVtcGxhdGVzL3Byb2NlZHVyZS9wZy9zcWwvZGVmYXVsdC9nZXRfdHlwZXMuc3FsCkBAIC0wLDAg KzEsMjAgQEAKK1NFTEVDVAorICAgICoKK0ZST00KKyAgICAoU0VMRUNUCisgICAgICAgIGZvcm1h dF90eXBlKHQub2lkLE5VTEwpIEFTIHR5cG5hbWUsCisgICAgICAgIENBU0UgV0hFTiB0eXBlbGVt ID4gMCBUSEVOIHR5cGVsZW0gRUxTRSB0Lm9pZCBFTkQgYXMgZWxlbW9pZCwgdHlwbGVuLCB0eXB0 eXBlLCB0Lm9pZCwgbnNwbmFtZSwKKyAgICAgICAgKFNFTEVDVCBDT1VOVCgxKSBGUk9NIHBnX3R5 cGUgdDIgV0hFUkUgdDIudHlwbmFtZSA9IHQudHlwbmFtZSkgPiAxIEFTIGlzZHVwCisgICAgRlJP TQorICAgICAgICBwZ190eXBlIHQKKyAgICBKT0lOCisgICAgICAgIHBnX25hbWVzcGFjZSBuc3Ag T04gdHlwbmFtZXNwYWNlPW5zcC5vaWQKKyAgICBXSEVSRQorICAgICAgICAoTk9UICh0eXBuYW1l ID0gJ3Vua25vd24nIEFORCBuc3BuYW1lID0gJ3BnX2NhdGFsb2cnKSkKKyAgICBBTkQKKyAgICAg ICAgKAorICAgICAgICAgICAgdHlwdHlwZSBJTiAoJ2InLCAnYycsICdkJywgJ2UnLCAncCcsICdy JykKKyAgICAgICAgICAgIEFORCB0eXBuYW1lIE5PVCBJTiAoJ2FueScsICd0cmlnZ2VyJywgJ2xh bmd1YWdlX2hhbmRsZXInLCAnZXZlbnRfdHJpZ2dlcicpCisgICAgICAgICkKKyAgICApIEFTIGR1 bW15CitPUkRFUiBCWSBuc3BuYW1lIDw+ICdwZ19jYXRhbG9nJywgbnNwbmFtZSA8PiAncHVibGlj JywgbnNwbmFtZSwgMTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z1bmN0aW9ucy90ZW1wbGF0ZXMvcHJvY2Vk dXJlL3BnL3NxbC9kZWZhdWx0L25vZGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVuY3Rpb25zL3RlbXBsYXRlcy9wcm9j ZWR1cmUvcGcvc3FsL2RlZmF1bHQvbm9kZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uODlkYzc2OAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z1bmN0aW9ucy90ZW1wbGF0 ZXMvcHJvY2VkdXJlL3BnL3NxbC9kZWZhdWx0L25vZGUuc3FsCkBAIC0wLDAgKzEsMjkgQEAKK1NF TEVDVAorICAgIHByLm9pZCwKKyAgICBDQVNFIFdIRU4KKyAgICAgICAgcGdfY2F0YWxvZy5wZ19n ZXRfZnVuY3Rpb25faWRlbnRpdHlfYXJndW1lbnRzKHByLm9pZCkgPD4gJycKKyAgICBUSEVOCisg ICAgICAgIHByLnByb25hbWUgfHwgJygnIHx8IHBnX2NhdGFsb2cucGdfZ2V0X2Z1bmN0aW9uX2lk ZW50aXR5X2FyZ3VtZW50cyhwci5vaWQpIHx8ICcpJworICAgIEVMU0UKKyAgICAgICAgcHIucHJv bmFtZQorICAgIEVORCBBUyBuYW1lLAorICAgIGxhbm5hbWUsIHBnX2dldF91c2VyYnlpZChwcm9v d25lcikgQVMgZnVuY293bmVyLCBkZXNjcmlwdGlvbgorRlJPTQorICAgIHBnX3Byb2MgcHIKK0pP SU4KKyAgICBwZ190eXBlIHR5cCBPTiB0eXAub2lkPXByb3JldHR5cGUKK0pPSU4KKyAgICBwZ19s YW5ndWFnZSBsbmcgT04gbG5nLm9pZD1wcm9sYW5nCitMRUZUIE9VVEVSIEpPSU4KKyAgICBwZ19k ZXNjcmlwdGlvbiBkZXMgT04gKGRlcy5vYmpvaWQ9cHIub2lkIEFORCBkZXMuY2xhc3NvaWQ9J3Bn X3Byb2MnOjpyZWdjbGFzcykKK1dIRVJFCisgICAgcHIucHJva2luZCA9ICdwJzo6Y2hhcgoreyUg aWYgZm5pZCAlfQorICAgIEFORCBwci5vaWQgPSB7eyBmbmlkfHF0TGl0ZXJhbCB9fQoreyUgZW5k aWYgJX0KK3slIGlmIHNjaWQgJX0KKyAgICBBTkQgcHJvbmFtZXNwYWNlID0ge3tzY2lkfX06Om9p ZAoreyUgZW5kaWYgJX0KKyAgICBBTkQgdHlwbmFtZSBOT1QgSU4gKCd0cmlnZ2VyJywgJ2V2ZW50 X3RyaWdnZXInKQorT1JERVIgQlkKKyAgICBwcm9uYW1lOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVuY3Rp b25zL3RlbXBsYXRlcy9wcm9jZWR1cmUvcGcvc3FsL2RlZmF1bHQvcHJvcGVydGllcy5zcWwgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9mdW5jdGlvbnMvdGVtcGxhdGVzL3Byb2NlZHVyZS9wZy9zcWwvZGVmYXVsdC9wcm9wZXJ0aWVz LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OWJlYTg2Ci0tLSAvZGV2 L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvZnVuY3Rpb25zL3RlbXBsYXRlcy9wcm9jZWR1cmUvcGcvc3FsL2RlZmF1 bHQvcHJvcGVydGllcy5zcWwKQEAgLTAsMCArMSwzOSBAQAorU0VMRUNUCisgICAgcHIub2lkLCBw ci54bWluLCBwci4qLCBwci5wcm9zcmMgQVMgcHJvc3JjX2MsCisgICAgcHIucHJvbmFtZSBBUyBu YW1lLCBwZ19nZXRfZnVuY3Rpb25fcmVzdWx0KHByLm9pZCkgQVMgcHJvcmV0dHlwZW5hbWUsCisg ICAgdHlwbnMubnNwbmFtZSBBUyB0eXBuc3AsIGxhbm5hbWUsIHByb2FyZ25hbWVzLCBvaWR2ZWN0 b3J0eXBlcyhwcm9hcmd0eXBlcykgQVMgcHJvYXJndHlwZW5hbWVzLAorICAgIHBnX2dldF9leHBy KHByb2FyZ2RlZmF1bHRzLCAncGdfY2F0YWxvZy5wZ19jbGFzcyc6OnJlZ2NsYXNzKSBBUyBwcm9h cmdkZWZhdWx0dmFscywKKyAgICBwcm9uYXJnZGVmYXVsdHMsIHByb2NvbmZpZywgcGdfZ2V0X3Vz ZXJieWlkKHByb293bmVyKSBBUyBmdW5jb3duZXIsIGRlc2NyaXB0aW9uLAorICAgIChDQVNFIFdI RU4KKyAgICAgICAgcGdfY2F0YWxvZy5wZ19nZXRfZnVuY3Rpb25faWRlbnRpdHlfYXJndW1lbnRz KHByLm9pZCkgPD4gJycKKyAgICBUSEVOCisgICAgICAgIHByLnByb25hbWUgfHwgJygnIHx8IHBn X2NhdGFsb2cucGdfZ2V0X2Z1bmN0aW9uX2lkZW50aXR5X2FyZ3VtZW50cyhwci5vaWQpIHx8ICcp JworICAgIEVMU0UKKyAgICAgICAgcHIucHJvbmFtZQorICAgIEVORCkgQVMgbmFtZV93aXRoX2Fy Z3MsCisgICAgKFNFTEVDVAorICAgICAgICBhcnJheV9hZ2cocHJvdmlkZXIgfHwgJz0nIHx8IGxh YmVsKQorICAgIEZST00KKyAgICAgICAgcGdfc2VjbGFiZWwgc2wxCisgICAgV0hFUkUKKyAgICAg ICAgc2wxLm9iam9pZD1wci5vaWQpIEFTIHNlY2xhYmVscworRlJPTQorICAgIHBnX3Byb2MgcHIK K0pPSU4KKyAgICBwZ190eXBlIHR5cCBPTiB0eXAub2lkPXByb3JldHR5cGUKK0pPSU4KKyAgICBw Z19uYW1lc3BhY2UgdHlwbnMgT04gdHlwbnMub2lkPXR5cC50eXBuYW1lc3BhY2UKK0pPSU4KKyAg ICBwZ19sYW5ndWFnZSBsbmcgT04gbG5nLm9pZD1wcm9sYW5nCitMRUZUIE9VVEVSIEpPSU4KKyAg ICBwZ19kZXNjcmlwdGlvbiBkZXMgT04gKGRlcy5vYmpvaWQ9cHIub2lkIEFORCBkZXMuY2xhc3Nv aWQ9J3BnX3Byb2MnOjpyZWdjbGFzcykKK1dIRVJFCisgICAgcHIucHJva2luZCA9ICdwJworICAg IEFORCB0eXBuYW1lIE5PVCBJTiAoJ3RyaWdnZXInLCAnZXZlbnRfdHJpZ2dlcicpCit7JSBpZiBm bmlkICV9CisgICAgQU5EIHByLm9pZCA9IHt7Zm5pZH19OjpvaWQKK3slIGVsc2UgJX0KKyAgICBB TkQgcHJvbmFtZXNwYWNlID0ge3tzY2lkfX06Om9pZAoreyUgZW5kaWYgJX0KK09SREVSIEJZCisg ICAgcHJvbmFtZTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z1bmN0aW9ucy90ZW1wbGF0ZXMvcHJvY2VkdXJl L3BnL3NxbC9kZWZhdWx0L3N0YXRzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z1bmN0aW9ucy90ZW1wbGF0ZXMvcHJvY2Vk dXJlL3BnL3NxbC9kZWZhdWx0L3N0YXRzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi4yZTI3NmI2Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVuY3Rpb25zL3RlbXBsYXRl cy9wcm9jZWR1cmUvcGcvc3FsL2RlZmF1bHQvc3RhdHMuc3FsCkBAIC0wLDAgKzEsOCBAQAorU0VM RUNUCisgICAgY2FsbHMgQVMge3sgY29ubnxxdElkZW50KF8oJ051bWJlciBvZiBjYWxscycpKSB9 fSwKKyAgICB0b3RhbF90aW1lIEFTIHt7IGNvbm58cXRJZGVudChfKCdUb3RhbCB0aW1lJykpIH19 LAorICAgIHNlbGZfdGltZSBBUyB7eyBjb25ufHF0SWRlbnQoXygnU2VsZiB0aW1lJykpIH19CitG Uk9NCisgICAgcGdfc3RhdF91c2VyX2Z1bmN0aW9ucworV0hFUkUKKyAgICBmdW5jaWQgPSB7e2Zu aWR9fTo6T0lECmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdW5jdGlvbnMvdGVtcGxhdGVzL3Byb2NlZHVyZS9w Zy9zcWwvZGVmYXVsdC91cGRhdGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVuY3Rpb25zL3RlbXBsYXRlcy9wcm9jZWR1 cmUvcGcvc3FsL2RlZmF1bHQvdXBkYXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi5lMTYyOWU5Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVuY3Rpb25zL3RlbXBsYXRl cy9wcm9jZWR1cmUvcGcvc3FsL2RlZmF1bHQvdXBkYXRlLnNxbApAQCAtMCwwICsxLDEwNiBAQAor eyUgaW1wb3J0ICdtYWNyb3MvZnVuY3Rpb25zL3NlY3VyaXR5Lm1hY3JvcycgYXMgU0VDTEFCRUwg JX0KK3slIGltcG9ydCAnbWFjcm9zL2Z1bmN0aW9ucy9wcml2aWxlZ2UubWFjcm9zJyBhcyBQUklW SUxFR0UgJX17JSBpZiBkYXRhICV9Cit7JSBzZXQgbmFtZSA9IG9fZGF0YS5uYW1lICV9Cit7JSBp ZiBkYXRhLm5hbWUgJX0KK3slIGlmIGRhdGEubmFtZSAhPSBvX2RhdGEubmFtZSAlfQorQUxURVIg UFJPQ0VEVVJFIHt7IGNvbm58cXRJZGVudChvX2RhdGEucHJvbmFtZXNwYWNlLCBvX2RhdGEubmFt ZSkgfX17JSBpZiBvX2RhdGEucHJvYXJndHlwZW5hbWVzICV9KHt7IG9fZGF0YS5wcm9hcmd0eXBl bmFtZXMgfX0peyUgZW5kaWYgJX0KKworICAgIFJFTkFNRSBUTyB7eyBjb25ufHF0SWRlbnQoZGF0 YS5uYW1lKSB9fTsKK3slIHNldCBuYW1lID0gZGF0YS5uYW1lICV9Cit7JSBlbmRpZiAlfQorCit7 JSBlbmRpZiAtJX0KK3slIGlmIGRhdGEuY2hhbmdlX2Z1bmMgICV9CitDUkVBVEUgT1IgUkVQTEFD RSBQUk9DRURVUkUge3sgY29ubnxxdElkZW50KG9fZGF0YS5wcm9uYW1lc3BhY2UsIG5hbWUpIH19 KHslIGlmIGRhdGEuYXJndW1lbnRzICV9eyUgZm9yIHAgaW4gZGF0YS5hcmd1bWVudHMgJX17JSBp ZiBwLmFyZ21vZGUgJX17e3AuYXJnbW9kZX19IHslIGVuZGlmICV9eyUgaWYgcC5hcmduYW1lICV9 e3sgY29ubnxxdElkZW50KHAuYXJnbmFtZSkgfX0geyUgZW5kaWYgJX17JSBpZiBwLmFyZ3R5cGUg JX17eyBjb25ufHF0VHlwZUlkZW50KHAuYXJndHlwZSkgfX17JSBlbmRpZiAlfXslIGlmIHAuYXJn ZGVmdmFsICV9IERFRkFVTFQge3twLmFyZ2RlZnZhbH19eyUgZW5kaWYgJX0KK3slIGlmIG5vdCBs b29wLmxhc3QgJX0sIHslIGVuZGlmICV9Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9CispCit7 JSBpZiAnbGFubmFtZScgaW4gZGF0YSAlfQorICAgIExBTkdVQUdFIHt7IGRhdGEubGFubmFtZXxx dExpdGVyYWwgfX0geyUgZWxzZSAlfQorICAgIExBTkdVQUdFIHt7IG9fZGF0YS5sYW5uYW1lfHF0 TGl0ZXJhbCB9fQorICAgIHslIGVuZGlmICV9Cit7JSBpZiAoJ3Byb3NlY2RlZicgaW4gZGF0YSBh bmQgZGF0YS5wcm9zZWNkZWYpIG9yICgncHJvc2VjZGVmJyBub3QgaW4gZGF0YSBhbmQgb19kYXRh LnByb3NlY2RlZikgJX1TRUNVUklUWSBERUZJTkVSeyUgZW5kaWYgJX0KK3slIGlmIGRhdGEubWVy Z2VkX3ZhcmlhYmxlcyAlfXslIGZvciB2IGluIGRhdGEubWVyZ2VkX3ZhcmlhYmxlcyAlfQorCisg ICAgU0VUIHt7IGNvbm58cXRJZGVudCh2Lm5hbWUpIH19PXt7IHYudmFsdWV8cXRMaXRlcmFsIH19 eyUgZW5kZm9yIC0lfQorICAgIHslIGVuZGlmICV9CisKK0FTIHslIGlmICdwcm9iaW4nIGluIGRh dGEgb3IgJ3Byb3NyY19jJyBpbiBkYXRhICV9Cit7JSBpZiAncHJvYmluJyBpbiBkYXRhICV9e3sg ZGF0YS5wcm9iaW58cXRMaXRlcmFsIH19eyUgZWxzZSAlfXt7IG9fZGF0YS5wcm9iaW58cXRMaXRl cmFsIH19eyUgZW5kaWYgJX0sIHslIGlmICdwcm9zcmNfYycgaW4gZGF0YSAlfXt7IGRhdGEucHJv c3JjX2N8cXRMaXRlcmFsIH19eyUgZWxzZSAlfXt7IG9fZGF0YS5wcm9zcmNfY3xxdExpdGVyYWwg fX17JSBlbmRpZiAlfXslIGVsaWYgJ3Byb3NyYycgaW4gZGF0YSAlfQorJEJPRFkke3sgZGF0YS5w cm9zcmMgfX0kQk9EWSR7JSBlbGlmIG9fZGF0YS5sYW5uYW1lID09ICdjJyAlfQore3sgb19kYXRh LnByb2JpbnxxdExpdGVyYWwgfX0sIHt7IG9fZGF0YS5wcm9zcmNfY3xxdExpdGVyYWwgfX17JSBl bHNlICV9CiskQk9EWSR7eyBvX2RhdGEucHJvc3JjIH19JEJPRFkkeyUgZW5kaWYgLSV9OworeyUg ZW5kaWYgLSV9Cit7JSBpZiBkYXRhLmZ1bmNvd25lciAlfQorCitBTFRFUiBQUk9DRURVUkUge3sg Y29ubnxxdElkZW50KG9fZGF0YS5wcm9uYW1lc3BhY2UsIG5hbWUpIH19eyUgaWYgb19kYXRhLnBy b2FyZ3R5cGVuYW1lcyAlfSh7eyBvX2RhdGEucHJvYXJndHlwZW5hbWVzIH19KXslIGVuZGlmICV9 CisgICAgT1dORVIgVE8ge3sgZGF0YS5mdW5jb3duZXIgfX07Cit7JSBlbmRpZiAtJX0KK3sjIFRo ZSBTUUwgZ2VuZXJhdGVkIGJlbG93IHdpbGwgY2hhbmdlIHByaXZpbGVkZ2VzICN9Cit7JSBpZiBk YXRhLmFjbCAlfQoreyUgaWYgJ2RlbGV0ZWQnIGluIGRhdGEuYWNsICV9Cit7JSBmb3IgcHJpdiBp biBkYXRhLmFjbC5kZWxldGVkICV9CisKK3t7IFBSSVZJTEVHRS5VTlNFVEFMTChjb25uLCAnUFJP Q0VEVVJFJywgcHJpdi5ncmFudGVlLCBuYW1lLCBvX2RhdGEucHJvbmFtZXNwYWNlLCBvX2RhdGEu cHJvYXJndHlwZW5hbWVzKSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAtJX0KK3slIGlmICdj aGFuZ2VkJyBpbiBkYXRhLmRhdGFjbCAlfQoreyUgZm9yIHByaXYgaW4gZGF0YS5hY2wuY2hhbmdl ZCAlfQorCit7eyBQUklWSUxFR0UuVU5TRVRBTEwoY29ubiwgJ1BST0NFRFVSRScsIHByaXYuZ3Jh bnRlZSwgbmFtZSwgb19kYXRhLnByb25hbWVzcGFjZSwgb19kYXRhLnByb2FyZ3R5cGVuYW1lcykg fX0KKwore3sgUFJJVklMRUdFLlNFVChjb25uLCAnUFJPQ0VEVVJFJywgcHJpdi5ncmFudGVlLCBu YW1lLCBwcml2LndpdGhvdXRfZ3JhbnQsCisgcHJpdi53aXRoX2dyYW50LCBvX2RhdGEucHJvbmFt ZXNwYWNlLCBvX2RhdGEucHJvYXJndHlwZW5hbWVzKSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRp ZiAtJX0KK3slIGlmICdhZGRlZCcgaW4gZGF0YS5hY2wgJX0KK3slIGZvciBwcml2IGluIGRhdGEu YWNsLmFkZGVkICV9CisKK3t7IFBSSVZJTEVHRS5TRVQoY29ubiwgJ1BST0NFRFVSRScsIHByaXYu Z3JhbnRlZSwgbmFtZSwgcHJpdi53aXRob3V0X2dyYW50LCBwcml2LndpdGhfZ3JhbnQsIG9fZGF0 YS5wcm9uYW1lc3BhY2UsIG9fZGF0YS5wcm9hcmd0eXBlbmFtZXMpIH19Cit7JSBlbmRmb3IgJX0K K3slIGVuZGlmICV9Cit7JSBlbmRpZiAtJX0KK3slIGlmIGRhdGEuY2hhbmdlX2Z1bmMgPT0gRmFs c2UgJX0KK3slIGlmIGRhdGEudmFyaWFibGVzICV9Cit7JSBpZiAnZGVsZXRlZCcgaW4gZGF0YS52 YXJpYWJsZXMgYW5kIGRhdGEudmFyaWFibGVzLmRlbGV0ZWR8bGVuZ3RoID4gMCAlfQorCit7eyBW QVJJQUJMRS5VTlNFVChjb25uLCAnRlVOQ1RJT04nLCBuYW1lLCBkYXRhLnZhcmlhYmxlcy5kZWxl dGVkLCBvX2RhdGEucHJvbmFtZXNwYWNlLCBvX2RhdGEucHJvYXJndHlwZW5hbWVzKSB9fQoreyUg ZW5kaWYgLSV9Cit7JSBpZiAnbWVyZ2VkX3ZhcmlhYmxlcycgaW4gZGF0YSBhbmQgZGF0YS5tZXJn ZWRfdmFyaWFibGVzfGxlbmd0aCA+IDAgJX0KKwore3sgVkFSSUFCTEUuU0VUKGNvbm4sICdGVU5D VElPTicsIG5hbWUsIGRhdGEubWVyZ2VkX3ZhcmlhYmxlcywgb19kYXRhLnByb25hbWVzcGFjZSwg b19kYXRhLnByb2FyZ3R5cGVuYW1lcykgfX0KK3slIGVuZGlmIC0lfQoreyUgZW5kaWYgLSV9Cit7 JSBlbmRpZiAtJX0KK3slIHNldCBzZWNsYWJlbHMgPSBkYXRhLnNlY2xhYmVscyAlfQoreyUgaWYg J2RlbGV0ZWQnIGluIHNlY2xhYmVscyBhbmQgc2VjbGFiZWxzLmRlbGV0ZWR8bGVuZ3RoID4gMCAl fQoreyUgZm9yIHIgaW4gc2VjbGFiZWxzLmRlbGV0ZWQgJX0KKwore3sgU0VDTEFCRUwuVU5TRVQo Y29ubiwgJ1BST0NFRFVSRScsIG5hbWUsIHIucHJvdmlkZXIsIG9fZGF0YS5wcm9uYW1lc3BhY2Us IG9fZGF0YS5wcm9hcmd0eXBlbmFtZXMpIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmIC0lfQor eyUgaWYgJ2FkZGVkJyBpbiBzZWNsYWJlbHMgYW5kIHNlY2xhYmVscy5hZGRlZHxsZW5ndGggPiAw ICV9Cit7JSBmb3IgciBpbiBzZWNsYWJlbHMuYWRkZWQgJX0KKwore3sgU0VDTEFCRUwuU0VUKGNv bm4sICdQUk9DRURVUkUnLCBuYW1lLCByLnByb3ZpZGVyLCByLmxhYmVsLCBvX2RhdGEucHJvbmFt ZXNwYWNlLCBvX2RhdGEucHJvYXJndHlwZW5hbWVzKSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRp ZiAtJX0KK3slIGlmICdjaGFuZ2VkJyBpbiBzZWNsYWJlbHMgYW5kIHNlY2xhYmVscy5jaGFuZ2Vk fGxlbmd0aCA+IDAgJX0KK3slIGZvciByIGluIHNlY2xhYmVscy5jaGFuZ2VkICV9CisKK3t7IFNF Q0xBQkVMLlNFVChjb25uLCAnUFJPQ0VEVVJFJywgbmFtZSwgci5wcm92aWRlciwgci5sYWJlbCwg b19kYXRhLnByb25hbWVzcGFjZSwgb19kYXRhLnByb2FyZ3R5cGVuYW1lcykgfX0KK3slIGVuZGZv ciAlfQoreyUgZW5kaWYgLSV9Cit7JSBpZiBkYXRhLmRlc2NyaXB0aW9uIGlzIGRlZmluZWQgYW5k IGRhdGEuZGVzY3JpcHRpb24gIT0gb19kYXRhLmRlc2NyaXB0aW9uJX0KKworQ09NTUVOVCBPTiBQ Uk9DRURVUkUge3sgY29ubnxxdElkZW50KG9fZGF0YS5wcm9uYW1lc3BhY2UsIG5hbWUpIH19Cisg ICAgSVMge3sgZGF0YS5kZXNjcmlwdGlvbnxxdExpdGVyYWwgfX07Cit7JSBlbmRpZiAtJX0KK3sl IGlmIGRhdGEucHJvbmFtZXNwYWNlICV9CisKK0FMVEVSIFBST0NFRFVSRSB7eyBjb25ufHF0SWRl bnQob19kYXRhLnByb25hbWVzcGFjZSwgbmFtZSkgfX0KKyAgICBTRVQgU0NIRU1BIHt7IGNvbm58 cXRJZGVudChkYXRhLnByb25hbWVzcGFjZSkgfX07Cit7JSBlbmRpZiAtJX0KKworeyUgZW5kaWYg JX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL2Z1bmN0aW9ucy90ZW1wbGF0ZXMvcHJvY2VkdXJlL3BnL3NxbC9k ZWZhdWx0L3ZhcmlhYmxlcy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdW5jdGlvbnMvdGVtcGxhdGVzL3Byb2NlZHVyZS9w Zy9zcWwvZGVmYXVsdC92YXJpYWJsZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLjUyMzNjNzEKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdW5jdGlvbnMvdGVtcGxhdGVz L3Byb2NlZHVyZS9wZy9zcWwvZGVmYXVsdC92YXJpYWJsZXMuc3FsCkBAIC0wLDAgKzEsNiBAQAor U0VMRUNUCisgICAgbmFtZSwgdmFydHlwZSwgbWluX3ZhbCwgbWF4X3ZhbCwgZW51bXZhbHMKK0ZS T00KKyAgICBwZ19zZXR0aW5ncworV0hFUkUKKyAgICBjb250ZXh0IGluICgndXNlcicsICdzdXBl cnVzZXInKTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z1bmN0aW9ucy90ZW1wbGF0ZXMvdHJpZ2dlcl9mdW5j dGlvbi9wZy9zcWwvMTFfcGx1cy9jb2xsX3N0YXRzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z1bmN0aW9ucy90ZW1wbGF0 ZXMvdHJpZ2dlcl9mdW5jdGlvbi9wZy9zcWwvMTFfcGx1cy9jb2xsX3N0YXRzLnNxbApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDhjZWNkCi0tLSAvZGV2L251bGwKKysrIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvZnVuY3Rpb25zL3RlbXBsYXRlcy90cmlnZ2VyX2Z1bmN0aW9uL3BnL3NxbC8xMV9wbHVzL2Nv bGxfc3RhdHMuc3FsCkBAIC0wLDAgKzEsMjAgQEAKK1NFTEVDVAorICAgIGZ1bmNuYW1lIEFTIHt7 IGNvbm58cXRJZGVudChfKCdOYW1lJykpIH19LAorICAgIGNhbGxzIEFTIHt7IGNvbm58cXRJZGVu dChfKCdOdW1iZXIgb2YgY2FsbHMnKSkgfX0sCisgICAgdG90YWxfdGltZSBBUyB7eyBjb25ufHF0 SWRlbnQoXygnVG90YWwgdGltZScpKSB9fSwKKyAgICBzZWxmX3RpbWUgQVMge3sgY29ubnxxdElk ZW50KF8oJ1NlbGYgdGltZScpKSB9fQorRlJPTQorICAgIHBnX3N0YXRfdXNlcl9mdW5jdGlvbnMK K1dIRVJFCisgICAgc2NoZW1hbmFtZSA9IHt7c2NoZW1hX25hbWV8cXRMaXRlcmFsfX0KKyAgICBB TkQgZnVuY2lkIElOICgKKyAgICAgICAgU0VMRUNUIHAub2lkCisgICAgICAgIEZST00KKyAgICAg ICAgICAgIHBnX3Byb2MgcAorICAgICAgICBKT0lOCisgICAgICAgICAgICBwZ190eXBlIHR5cCBP TiB0eXAub2lkPXAucHJvcmV0dHlwZQorICAgICAgICBXSEVSRQorICAgICAgICAgICAgcC5wcm9r aW5kIElOICgnZicsICd3JykKKyAgICAgICAgICAgIEFORCB0eXBuYW1lID0gJ3RyaWdnZXInCisg ICAgKQorT1JERVIgQlkgZnVuY25hbWU7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdW5jdGlvbnMvdGVtcGxh dGVzL3RyaWdnZXJfZnVuY3Rpb24vcGcvc3FsLzExX3BsdXMvY3JlYXRlLnNxbCBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z1bmN0 aW9ucy90ZW1wbGF0ZXMvdHJpZ2dlcl9mdW5jdGlvbi9wZy9zcWwvMTFfcGx1cy9jcmVhdGUuc3Fs Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwNDk5YTkKLS0tIC9kZXYvbnVs bAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9mdW5jdGlvbnMvdGVtcGxhdGVzL3RyaWdnZXJfZnVuY3Rpb24vcGcvc3FsLzEx X3BsdXMvY3JlYXRlLnNxbApAQCAtMCwwICsxLDU3IEBACit7JSBpbXBvcnQgJ21hY3Jvcy9mdW5j dGlvbnMvc2VjdXJpdHkubWFjcm9zJyBhcyBTRUNMQUJFTCAlfQoreyUgaW1wb3J0ICdtYWNyb3Mv ZnVuY3Rpb25zL3ByaXZpbGVnZS5tYWNyb3MnIGFzIFBSSVZJTEVHRSAlfQoreyUgaW1wb3J0ICdt YWNyb3MvZnVuY3Rpb25zL3ZhcmlhYmxlLm1hY3JvcycgYXMgVkFSSUFCTEUgJX0KK3slIHNldCBp c19jb2x1bW5zID0gW10gJX0KK3slIGlmIGRhdGEgJX0KK0NSRUFURSBGVU5DVElPTiB7eyBjb25u fHF0SWRlbnQoZGF0YS5wcm9uYW1lc3BhY2UsIGRhdGEubmFtZSkgfX0oeyUgaWYgZGF0YS5wcm9h cmduYW1lcyAlfXt7ZGF0YS5wcm9hcmduYW1lc319eyUgZW5kaWYgJX0pCisgICAgUkVUVVJOU3sl IGlmIGRhdGEucHJvcmV0c2V0ICV9IFNFVE9GeyUgZW5kaWYgJX0ge3sgY29ubnxxdFR5cGVJZGVu dChkYXRhLnByb3JldHR5cGVuYW1lKSB9fQorICAgIExBTkdVQUdFIHt7IGRhdGEubGFubmFtZXxx dExpdGVyYWwgfX0KK3slIGlmIGRhdGEucHJvY29zdCAlfQorICAgIENPU1Qge3tkYXRhLnByb2Nv c3R9fQoreyUgZW5kaWYgJX0KKyAgICB7JSBpZiBkYXRhLnByb3ZvbGF0aWxlICV9eyUgaWYgZGF0 YS5wcm92b2xhdGlsZSA9PSAnaScgJX1JTU1VVEFCTEV7JSBlbGlmIGRhdGEucHJvdm9sYXRpbGUg PT0gJ3MnICV9U1RBQkxFeyUgZWxzZSAlfVZPTEFUSUxFeyUgZW5kaWYgJX0geyUgZW5kaWYgJX17 JSBpZiBkYXRhLnByb2xlYWtwcm9vZiAlfUxFQUtQUk9PRiB7JSBlbHNlICV9Tk9UIExFQUtQUk9P RiB7JSBlbmRpZiAlfQoreyUgaWYgZGF0YS5wcm9pc3N0cmljdCAlfVNUUklDVCB7JSBlbmRpZiAl fQoreyUgaWYgZGF0YS5wcm9zZWNkZWYgJX1TRUNVUklUWSBERUZJTkVSIHslIGVuZGlmICV9Cit7 JSBpZiBkYXRhLnByb2lzd2luZG93ICV9V0lORE9XeyUgZW5kaWYgJX0KK3slIGlmIGRhdGEucHJv cm93cyBhbmQgKGRhdGEucHJvcm93cyB8IGludCkgPiAwICV9CisKKyAgICBST1dTIHt7ZGF0YS5w cm9yb3dzfX17JSBlbmRpZiAtJX17JSBpZiBkYXRhLnZhcmlhYmxlcyAlfXslIGZvciB2IGluIGRh dGEudmFyaWFibGVzICV9CisKKyAgICBTRVQge3sgY29ubnxxdElkZW50KHYubmFtZSkgfX09e3sg di52YWx1ZXxxdExpdGVyYWwgfX17JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9CisKK0FTIHslIGlm IGRhdGEubGFubmFtZSA9PSAnYycgJX0KK3t7IGRhdGEucHJvYmlufHF0TGl0ZXJhbCB9fSwge3sg ZGF0YS5wcm9zcmNfY3xxdExpdGVyYWwgfX0KK3slIGVsc2UgJX0KKyRCT0RZJAore3sgZGF0YS5w cm9zcmMgfX0KKyRCT0RZJHslIGVuZGlmIC0lfTsKK3slIGlmIGRhdGEuZnVuY293bmVyICV9CisK K0FMVEVSIEZVTkNUSU9OIHt7IGNvbm58cXRJZGVudChkYXRhLnByb25hbWVzcGFjZSwgZGF0YS5u YW1lKSB9fSh7e2RhdGEuZnVuY19hcmdzfX0pCisgICAgT1dORVIgVE8ge3sgY29ubnxxdElkZW50 KGRhdGEuZnVuY293bmVyKSB9fTsKK3slIGVuZGlmIC0lfQoreyUgaWYgZGF0YS5hY2wgJX0KK3sl IGZvciBwIGluIGRhdGEuYWNsICV9CisKK3t7IFBSSVZJTEVHRS5TRVQoY29ubiwgIkZVTkNUSU9O IiwgcC5ncmFudGVlLCBkYXRhLm5hbWUsIHAud2l0aG91dF9ncmFudCwgcC53aXRoX2dyYW50LCBk YXRhLnByb25hbWVzcGFjZSwgZGF0YS5mdW5jX2FyZ3MpfX0KK3slIGVuZGZvciAlfXslIGVuZGlm ICV9Cit7JSBpZiBkYXRhLnJldm9rZV9hbGwgJX0KKwore3sgUFJJVklMRUdFLlVOU0VUQUxMKGNv bm4sICJGVU5DVElPTiIsICJQVUJMSUMiLCBkYXRhLm5hbWUsIGRhdGEucHJvbmFtZXNwYWNlLCBk YXRhLmZ1bmNfYXJnc193aXRob3V0KX19Cit7JSBlbmRpZiAlfQoreyUgaWYgZGF0YS5kZXNjcmlw dGlvbiAlfQorCitDT01NRU5UIE9OIEZVTkNUSU9OIHt7IGNvbm58cXRJZGVudChkYXRhLnByb25h bWVzcGFjZSwgZGF0YS5uYW1lKSB9fSh7e2RhdGEuZnVuY19hcmdzfX0pCisgICAgSVMge3sgZGF0 YS5kZXNjcmlwdGlvbnxxdExpdGVyYWwgIH19OworeyUgZW5kaWYgLSV9Cit7JSBpZiBkYXRhLnNl Y2xhYmVscyAlfQoreyUgZm9yIHIgaW4gZGF0YS5zZWNsYWJlbHMgJX0KK3slIGlmIHIubGFiZWwg YW5kIHIucHJvdmlkZXIgJX0KKwore3sgU0VDTEFCRUwuU0VUKGNvbm4sICdGVU5DVElPTicsIGRh dGEubmFtZSwgci5wcm92aWRlciwgci5sYWJlbCwgZGF0YS5wcm9uYW1lc3BhY2UsIGRhdGEuZnVu Y19hcmdzKSB9fQoreyUgZW5kaWYgJX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgLSV9CisKK3sl IGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdW5jdGlvbnMvdGVtcGxhdGVzL3RyaWdnZXJfZnVu Y3Rpb24vcGcvc3FsLzExX3BsdXMvZGVsZXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z1bmN0aW9ucy90ZW1wbGF0ZXMv dHJpZ2dlcl9mdW5jdGlvbi9wZy9zcWwvMTFfcGx1cy9kZWxldGUuc3FsCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3ZjkwNmIKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdW5j dGlvbnMvdGVtcGxhdGVzL3RyaWdnZXJfZnVuY3Rpb24vcGcvc3FsLzExX3BsdXMvZGVsZXRlLnNx bApAQCAtMCwwICsxLDIxIEBACit7JSBpZiBzY2lkIGFuZCBmbmlkICV9CitTRUxFQ1QKKyAgICBw ci5wcm9uYW1lIGFzIG5hbWUsICcoJyB8fCBDT0FMRVNDRShwZ19jYXRhbG9nCisgICAgLnBnX2dl dF9mdW5jdGlvbl9pZGVudGl0eV9hcmd1bWVudHMocHIub2lkKSwgJycpIHx8ICcpJyBhcyBmdW5j X2FyZ3MsCisgICAgbnNwbmFtZQorRlJPTQorICAgIHBnX3Byb2MgcHIKK0pPSU4KKyAgICBwZ190 eXBlIHR5cCBPTiB0eXAub2lkPXByb3JldHR5cGUKK0pPSU4KKyAgICBwZ19uYW1lc3BhY2UgbnNw IE9OIG5zcC5vaWQ9cHIucHJvbmFtZXNwYWNlCitXSEVSRQorICAgIHByLnByb2tpbmQgSU4gKCdm JywgJ3cnKQorICAgIEFORCBwcm9uYW1lc3BhY2UgPSB7e3NjaWR9fTo6b2lkCisgICAgQU5EIHR5 cG5hbWUgSU4gKCd0cmlnZ2VyJywgJ2V2ZW50X3RyaWdnZXInKQorICAgIEFORCBwci5vaWQgPSB7 e2ZuaWR9fTsKK3slIGVuZGlmICV9CisKK3slIGlmIG5hbWUgJX0KK0RST1AgRlVOQ1RJT04ge3sg Y29ubnxxdElkZW50KG5zcG5hbWUsIG5hbWUpIH19e3tmdW5jX2FyZ3N9fXslIGlmIGNhc2NhZGUg JX0gQ0FTQ0FERXslIGVuZGlmICV9OworeyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z1bmN0 aW9ucy90ZW1wbGF0ZXMvdHJpZ2dlcl9mdW5jdGlvbi9wZy9zcWwvMTFfcGx1cy9nZXRfZGVmaW5p dGlvbi5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy9mdW5jdGlvbnMvdGVtcGxhdGVzL3RyaWdnZXJfZnVuY3Rpb24vcGcvc3Fs LzExX3BsdXMvZ2V0X2RlZmluaXRpb24uc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLmFiMjVkYmYKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdW5jdGlvbnMvdGVtcGxhdGVz L3RyaWdnZXJfZnVuY3Rpb24vcGcvc3FsLzExX3BsdXMvZ2V0X2RlZmluaXRpb24uc3FsCkBAIC0w LDAgKzEsMTUgQEAKK1NFTEVDVAorICAgIHBnX2dldF9mdW5jdGlvbmRlZih7e2ZuaWR9fTo6b2lk KSBBUyBmdW5jX2RlZiwKKyAgICBDT0FMRVNDRShwZ19jYXRhbG9nLnBnX2dldF9mdW5jdGlvbl9p ZGVudGl0eV9hcmd1bWVudHMocHIub2lkKSwgJycpIGFzCisgICAgZnVuY193aXRoX2lkZW50aXR5 X2FyZ3VtZW50cywKKyAgICBuc3BuYW1lLAorICAgIHByLnByb25hbWUgYXMgcHJvbmFtZSwKKyAg ICBDT0FMRVNDRShwZ19jYXRhbG9nLnBnX2dldF9mdW5jdGlvbl9hcmd1bWVudHMocHIub2lkKSwg JycpIGFzIGZ1bmNfYXJncworRlJPTQorICAgIHBnX3Byb2MgcHIKK0pPSU4KKyAgICBwZ19uYW1l c3BhY2UgbnNwIE9OIG5zcC5vaWQ9cHIucHJvbmFtZXNwYWNlCitXSEVSRQorICAgIHByLnByb2tp bmQgSU4gKCdmJywgJ3cnKQorICAgIEFORCBwcm9uYW1lc3BhY2UgPSB7e3NjaWR9fTo6b2lkCisg ICAgQU5EIHByLm9pZCA9IHt7Zm5pZH19OjpvaWQ7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdW5jdGlvbnMv dGVtcGxhdGVzL3RyaWdnZXJfZnVuY3Rpb24vcGcvc3FsLzExX3BsdXMvZ2V0X29pZC5zcWwgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9mdW5jdGlvbnMvdGVtcGxhdGVzL3RyaWdnZXJfZnVuY3Rpb24vcGcvc3FsLzExX3BsdXMvZ2V0 X29pZC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDEzZGY5MQotLS0g L2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL2Z1bmN0aW9ucy90ZW1wbGF0ZXMvdHJpZ2dlcl9mdW5jdGlvbi9w Zy9zcWwvMTFfcGx1cy9nZXRfb2lkLnNxbApAQCAtMCwwICsxLDE4IEBACitTRUxFQ1QKKyAgICBw ci5vaWQsIHByLnByb25hbWUgfHwgJygnIHx8IENPQUxFU0NFKHBnX2NhdGFsb2cKKyAgICAucGdf Z2V0X2Z1bmN0aW9uX2lkZW50aXR5X2FyZ3VtZW50cyhwci5vaWQpLCAnJykgfHwgJyknIGFzIG5h bWUsCisgICAgbGFubmFtZSwgcGdfZ2V0X3VzZXJieWlkKHByb293bmVyKSBhcyBmdW5jb3duZXIs IHByLnByb25hbWVzcGFjZSBBUyBuc3AKK0ZST00KKyAgICBwZ19wcm9jIHByCitKT0lOCisgICAg cGdfdHlwZSB0eXAgT04gdHlwLm9pZD1wcm9yZXR0eXBlCitKT0lOCisgICAgcGdfbGFuZ3VhZ2Ug bG5nIE9OIGxuZy5vaWQ9cHJvbGFuZworSk9JTgorICAgIHBnX25hbWVzcGFjZSBuc3AgT04gbnNw Lm9pZD1wci5wcm9uYW1lc3BhY2UKKyAgICBBTkQgbnNwLm5zcG5hbWU9e3sgbnNwbmFtZXxxdExp dGVyYWwgfX0KK1dIRVJFCisgICAgcHIucHJva2luZCBJTiAoJ2YnLCAndycpCisgICAgQU5EIHR5 cG5hbWUgSU4gKCd0cmlnZ2VyJywgJ2V2ZW50X3RyaWdnZXInKQorICAgIEFORCBsYW5uYW1lIE5P VCBJTiAoJ2VkYnNwbCcsICdzcWwnLCAnaW50ZXJuYWwnKQorICAgIEFORCBwci5wcm9uYW1lID0g e3sgbmFtZXxxdExpdGVyYWwgfX07CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdW5jdGlvbnMvdGVtcGxhdGVz L3RyaWdnZXJfZnVuY3Rpb24vcGcvc3FsLzExX3BsdXMvbm9kZS5zcWwgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdW5jdGlvbnMv dGVtcGxhdGVzL3RyaWdnZXJfZnVuY3Rpb24vcGcvc3FsLzExX3BsdXMvbm9kZS5zcWwKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTVkN2M1NAotLS0gL2Rldi9udWxsCisrKyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL2Z1bmN0aW9ucy90ZW1wbGF0ZXMvdHJpZ2dlcl9mdW5jdGlvbi9wZy9zcWwvMTFfcGx1cy9u b2RlLnNxbApAQCAtMCwwICsxLDIzIEBACitTRUxFQ1QKKyAgICBwci5vaWQsIHByLnByb25hbWUg fHwgJygpJyBhcyBuYW1lLAorICAgIGxhbm5hbWUsIHBnX2dldF91c2VyYnlpZChwcm9vd25lcikg YXMgZnVuY293bmVyLCBkZXNjcmlwdGlvbgorRlJPTQorICAgIHBnX3Byb2MgcHIKK0pPSU4KKyAg ICBwZ190eXBlIHR5cCBPTiB0eXAub2lkPXByb3JldHR5cGUKK0pPSU4KKyAgICBwZ19sYW5ndWFn ZSBsbmcgT04gbG5nLm9pZD1wcm9sYW5nCitMRUZUIE9VVEVSIEpPSU4KKyAgICBwZ19kZXNjcmlw dGlvbiBkZXMgT04gKGRlcy5vYmpvaWQ9cHIub2lkIEFORCBkZXMuY2xhc3NvaWQ9J3BnX3Byb2Mn OjpyZWdjbGFzcykKK1dIRVJFCisgICAgcHIucHJva2luZCBJTiAoJ2YnLCAndycpCit7JSBpZiBm bmlkICV9CisgICAgQU5EIHByLm9pZCA9IHt7IGZuaWR8cXRMaXRlcmFsIH19Cit7JSBlbmRpZiAl fQoreyUgaWYgc2NpZCAlfQorICAgIEFORCBwcm9uYW1lc3BhY2UgPSB7e3NjaWR9fTo6b2lkCit7 JSBlbmRpZiAlfQorICAgIEFORCB0eXBuYW1lIElOICgndHJpZ2dlcicsICdldmVudF90cmlnZ2Vy JykKKyAgICBBTkQgbGFubmFtZSBOT1QgSU4gKCdlZGJzcGwnLCAnc3FsJywgJ2ludGVybmFsJykK K09SREVSIEJZCisgICAgcHJvbmFtZTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z1bmN0aW9ucy90ZW1wbGF0 ZXMvdHJpZ2dlcl9mdW5jdGlvbi9wZy9zcWwvMTFfcGx1cy9wcm9wZXJ0aWVzLnNxbCBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z1 bmN0aW9ucy90ZW1wbGF0ZXMvdHJpZ2dlcl9mdW5jdGlvbi9wZy9zcWwvMTFfcGx1cy9wcm9wZXJ0 aWVzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOWQ3ODY2Ci0tLSAv ZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvZnVuY3Rpb25zL3RlbXBsYXRlcy90cmlnZ2VyX2Z1bmN0aW9uL3Bn L3NxbC8xMV9wbHVzL3Byb3BlcnRpZXMuc3FsCkBAIC0wLDAgKzEsMzMgQEAKK1NFTEVDVAorICAg IHByLm9pZCwgcHIueG1pbiwgcHIuKiwgcHIucHJvc3JjIEFTIHByb3NyY19jLAorICAgIHByLnBy b25hbWUgQVMgbmFtZSwgcGdfZ2V0X2Z1bmN0aW9uX3Jlc3VsdChwci5vaWQpIEFTIHByb3JldHR5 cGVuYW1lLAorICAgIHR5cG5zLm5zcG5hbWUgQVMgdHlwbnNwLCBsYW5uYW1lLCBwcm9hcmduYW1l cywgb2lkdmVjdG9ydHlwZXMocHJvYXJndHlwZXMpIEFTIHByb2FyZ3R5cGVuYW1lcywKKyAgICBw Z19nZXRfZXhwcihwcm9hcmdkZWZhdWx0cywgJ3BnX2NhdGFsb2cucGdfY2xhc3MnOjpyZWdjbGFz cykgQVMgcHJvYXJnZGVmYXVsdHZhbHMsCisgICAgcHJvbmFyZ2RlZmF1bHRzLCBwcm9jb25maWcs IHBnX2dldF91c2VyYnlpZChwcm9vd25lcikgQVMgZnVuY293bmVyLCBkZXNjcmlwdGlvbiwKKyAg ICAoU0VMRUNUCisgICAgICAgIGFycmF5X2FnZyhwcm92aWRlciB8fCAnPScgfHwgbGFiZWwpCisg ICAgRlJPTQorICAgICAgICBwZ19zZWNsYWJlbCBzbDEKKyAgICBXSEVSRQorICAgICAgICBzbDEu b2Jqb2lkPXByLm9pZCkgQVMgc2VjbGFiZWxzCitGUk9NCisgICAgcGdfcHJvYyBwcgorSk9JTgor ICAgIHBnX3R5cGUgdHlwIE9OIHR5cC5vaWQ9cHJvcmV0dHlwZQorSk9JTgorICAgIHBnX25hbWVz cGFjZSB0eXBucyBPTiB0eXBucy5vaWQ9dHlwLnR5cG5hbWVzcGFjZQorSk9JTgorICAgIHBnX2xh bmd1YWdlIGxuZyBPTiBsbmcub2lkPXByb2xhbmcKK0xFRlQgT1VURVIgSk9JTgorICAgIHBnX2Rl c2NyaXB0aW9uIGRlcyBPTiAoZGVzLm9iam9pZD1wci5vaWQgQU5EIGRlcy5jbGFzc29pZD0ncGdf cHJvYyc6OnJlZ2NsYXNzKQorV0hFUkUKKyAgICBwci5wcm9raW5kIElOICgnZicsICd3JykKKyAg ICBBTkQgdHlwbmFtZSBJTiAoJ3RyaWdnZXInLCAnZXZlbnRfdHJpZ2dlcicpCisgICAgQU5EIGxh bm5hbWUgTk9UIElOICgnZWRic3BsJywgJ3NxbCcsICdpbnRlcm5hbCcpCit7JSBpZiBmbmlkICV9 CisgICAgQU5EIHByLm9pZCA9IHt7Zm5pZH19OjpvaWQKK3slIGVsc2UgJX0KKyAgICBBTkQgcHJv bmFtZXNwYWNlID0ge3tzY2lkfX06Om9pZAoreyUgZW5kaWYgJX0KK09SREVSIEJZCisgICAgcHJv bmFtZTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z1bmN0aW9ucy90ZW1wbGF0ZXMvdHJpZ2dlcl9mdW5jdGlv bi9wZy9zcWwvMTFfcGx1cy91cGRhdGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVuY3Rpb25zL3RlbXBsYXRlcy90cmln Z2VyX2Z1bmN0aW9uL3BnL3NxbC8xMV9wbHVzL3VwZGF0ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uNDEzYmU2MgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z1bmN0aW9u cy90ZW1wbGF0ZXMvdHJpZ2dlcl9mdW5jdGlvbi9wZy9zcWwvMTFfcGx1cy91cGRhdGUuc3FsCkBA IC0wLDAgKzEsMTA5IEBACit7JSBpbXBvcnQgJ21hY3Jvcy9mdW5jdGlvbnMvc2VjdXJpdHkubWFj cm9zJyBhcyBTRUNMQUJFTCAlfQoreyUgaW1wb3J0ICdtYWNyb3MvZnVuY3Rpb25zL3ByaXZpbGVn ZS5tYWNyb3MnIGFzIFBSSVZJTEVHRSAlfQoreyUgaW1wb3J0ICdtYWNyb3MvZnVuY3Rpb25zL3Zh cmlhYmxlLm1hY3JvcycgYXMgVkFSSUFCTEUgJX17JSBpZiBkYXRhICV9Cit7JSBzZXQgbmFtZSA9 IG9fZGF0YS5uYW1lICV9Cit7JSBpZiBkYXRhLm5hbWUgJX0KK3slIGlmIGRhdGEubmFtZSAhPSBv X2RhdGEubmFtZSAlfQorQUxURVIgRlVOQ1RJT04ge3sgY29ubnxxdElkZW50KG9fZGF0YS5wcm9u YW1lc3BhY2UsIG9fZGF0YS5uYW1lKSB9fSh7eworb19kYXRhLnByb2FyZ3R5cGVuYW1lcyB9fSkK KyAgICBSRU5BTUUgVE8ge3sgY29ubnxxdElkZW50KGRhdGEubmFtZSkgfX07Cit7JSBzZXQgbmFt ZSA9IGRhdGEubmFtZSAlfQoreyUgZW5kaWYgJX0KK3slIGVuZGlmIC0lfQoreyUgaWYgZGF0YS5j aGFuZ2VfZnVuYyAgJX0KKworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04ge3sgY29ubnxxdElk ZW50KG9fZGF0YS5wcm9uYW1lc3BhY2UsIG5hbWUpIH19KCkKKyAgICBSRVRVUk5TIHt7IG9fZGF0 YS5wcm9yZXR0eXBlbmFtZSB9fQoreyUgaWYgJ2xhbm5hbWUnIGluIGRhdGEgJX0KKyAgICBMQU5H VUFHRSB7eyBkYXRhLmxhbm5hbWV8cXRMaXRlcmFsIH19IHslIGVsc2UgJX0KKyAgICBMQU5HVUFH RSB7eyBvX2RhdGEubGFubmFtZXxxdExpdGVyYWwgfX0KKyAgICB7JSBlbmRpZiAlfXslIGlmICdw cm92b2xhdGlsZScgaW4gZGF0YSBhbmQgZGF0YS5wcm92b2xhdGlsZSAlfXt7IGRhdGEucHJvdm9s YXRpbGUgfX0geyUgZWxpZiAncHJvdm9sYXRpbGUnIG5vdCBpbiBkYXRhIGFuZCBvX2RhdGEucHJv dm9sYXRpbGUgJX17eyBvX2RhdGEucHJvdm9sYXRpbGUgfX17JSBlbmRpZiAlfQoreyUgaWYgKCdw cm9sZWFrcHJvb2YnIGluIGRhdGEgYW5kIGRhdGEucHJvbGVha3Byb29mKSBvciAoJ3Byb2xlYWtw cm9vZicgbm90IGluIGRhdGEgYW5kIG9fZGF0YS5wcm9sZWFrcHJvb2YpICV9IExFQUtQUk9PRnsl IGVsaWYgJ3Byb2xlYWtwcm9vZicgaW4gZGF0YSBhbmQgbm90IGRhdGEucHJvbGVha3Byb29mICV9 IE5PVCBMRUFLUFJPT0Z7JSBlbmRpZiAlfQoreyUgaWYgKCdwcm9pc3N0cmljdCcgaW4gZGF0YSBh bmQgZGF0YS5wcm9pc3N0cmljdCkgb3IgKCdwcm9pc3N0cmljdCcgbm90IGluIGRhdGEgYW5kIG9f ZGF0YS5wcm9pc3N0cmljdCkgJX0gU1RSSUNUeyUgZW5kaWYgJX0KK3slIGlmICgncHJvc2VjZGVm JyBpbiBkYXRhIGFuZCBkYXRhLnByb3NlY2RlZikgb3IgKCdwcm9zZWNkZWYnIG5vdCBpbiBkYXRh IGFuZCBvX2RhdGEucHJvc2VjZGVmKSAlfSBTRUNVUklUWSBERUZJTkVSeyUgZW5kaWYgJX0KK3sl IGlmICgncHJvaXN3aW5kb3cnIGluIGRhdGEgYW5kIGRhdGEucHJvaXN3aW5kb3cpIG9yICgncHJv aXN3aW5kb3cnIG5vdCBpbiBkYXRhIGFuZCBvX2RhdGEucHJvaXN3aW5kb3cpICV9IFdJTkRPV3sl IGVuZGlmICV9CisKKyAgICB7JSBpZiBkYXRhLnByb2Nvc3QgJX1DT1NUIHt7ZGF0YS5wcm9jb3N0 fX17JSBlbGlmIG9fZGF0YS5wcm9jb3N0ICV9Q09TVCB7e29fZGF0YS5wcm9jb3N0fX17JSBlbmRp ZiAlfXslIGlmIGRhdGEucHJvcm93cyAlfQorCisgICAgUk9XUyB7e2RhdGEucHJvcm93c319eyUg ZWxpZiBkYXRhLnByb3Jvd3MgaXMgbm90IGRlZmluZWQgYW5kIG9fZGF0YS5wcm9yb3dzIGFuZCBv X2RhdGEucHJvcm93cyAhPSAnMCcgJX0gICAgUk9XUyB7e29fZGF0YS5wcm9yb3dzfX0geyVlbmRp ZiAtJX17JSBpZiBkYXRhLm1lcmdlZF92YXJpYWJsZXMgJX17JSBmb3IgdiBpbiBkYXRhLm1lcmdl ZF92YXJpYWJsZXMgJX0KKworICAgIFNFVCB7eyBjb25ufHF0SWRlbnQodi5uYW1lKSB9fT17eyB2 LnZhbHVlfHF0TGl0ZXJhbCB9fXslIGVuZGZvciAtJX0KKyAgICB7JSBlbmRpZiAlfQorCitBUyB7 JSBpZiAncHJvYmluJyBpbiBkYXRhIG9yICdwcm9zcmNfYycgaW4gZGF0YSAlfQoreyUgaWYgJ3By b2JpbicgaW4gZGF0YSAlfXt7IGRhdGEucHJvYmlufHF0TGl0ZXJhbCB9fXslIGVsc2UgJX17eyBv X2RhdGEucHJvYmlufHF0TGl0ZXJhbCB9fXslIGVuZGlmICV9LCB7JSBpZiAncHJvc3JjX2MnIGlu IGRhdGEgJX17eyBkYXRhLnByb3NyY19jfHF0TGl0ZXJhbCB9fXslIGVsc2UgJX17eyBvX2RhdGEu cHJvc3JjX2N8cXRMaXRlcmFsIH19eyUgZW5kaWYgJX17JSBlbGlmICdwcm9zcmMnIGluIGRhdGEg JX0KKyRCT0RZJHt7IGRhdGEucHJvc3JjIH19JEJPRFkkeyUgZWxpZiBvX2RhdGEubGFubmFtZSA9 PSAnYycgJX0KK3t7IG9fZGF0YS5wcm9iaW58cXRMaXRlcmFsIH19LCB7eyBvX2RhdGEucHJvc3Jj X2N8cXRMaXRlcmFsIH19eyUgZWxzZSAlfQorJEJPRFkke3sgb19kYXRhLnByb3NyYyB9fSRCT0RZ JHslIGVuZGlmIC0lfTsKK3slIGVuZGlmIC0lfQoreyUgaWYgZGF0YS5mdW5jb3duZXIgJX0KKwor QUxURVIgRlVOQ1RJT04ge3sgY29ubnxxdElkZW50KG9fZGF0YS5wcm9uYW1lc3BhY2UsIG5hbWUp IH19KHt7b19kYXRhLnByb2FyZ3R5cGVuYW1lcyB9fSkKKyAgICBPV05FUiBUTyB7eyBjb25ufHF0 SWRlbnQoZGF0YS5mdW5jb3duZXIpIH19OworeyUgZW5kaWYgLSV9Cit7IyBUaGUgU1FMIGdlbmVy YXRlZCBiZWxvdyB3aWxsIGNoYW5nZSBwcml2aWxlZGdlcyAjfQoreyUgaWYgZGF0YS5hY2wgJX0K K3slIGlmICdkZWxldGVkJyBpbiBkYXRhLmFjbCAlfQoreyUgZm9yIHByaXYgaW4gZGF0YS5hY2wu ZGVsZXRlZCAlfQorCit7eyBQUklWSUxFR0UuVU5TRVRBTEwoY29ubiwgJ0ZVTkNUSU9OJywgcHJp di5ncmFudGVlLCBuYW1lLCBvX2RhdGEucHJvbmFtZXNwYWNlLCBvX2RhdGEucHJvYXJndHlwZW5h bWVzKSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAtJX0KK3slIGlmICdjaGFuZ2VkJyBpbiBk YXRhLmRhdGFjbCAlfQoreyUgZm9yIHByaXYgaW4gZGF0YS5hY2wuY2hhbmdlZCAlfQorCit7eyBQ UklWSUxFR0UuVU5TRVRBTEwoY29ubiwgJ0ZVTkNUSU9OJywgcHJpdi5ncmFudGVlLCBuYW1lLCBv X2RhdGEucHJvbmFtZXNwYWNlLCBvX2RhdGEucHJvYXJndHlwZW5hbWVzKSB9fQorCit7eyBQUklW SUxFR0UuU0VUKGNvbm4sICdGVU5DVElPTicsIHByaXYuZ3JhbnRlZSwgbmFtZSwgcHJpdi53aXRo b3V0X2dyYW50LCBwcml2LndpdGhfZ3JhbnQsIG9fZGF0YS5wcm9uYW1lc3BhY2UsIG9fZGF0YS5w cm9hcmd0eXBlbmFtZXMpIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmIC0lfQoreyUgaWYgJ2Fk ZGVkJyBpbiBkYXRhLmFjbCAlfQoreyUgZm9yIHByaXYgaW4gZGF0YS5hY2wuYWRkZWQgJX0KKwor e3sgUFJJVklMRUdFLlNFVChjb25uLCAnRlVOQ1RJT04nLCBwcml2LmdyYW50ZWUsIG5hbWUsIHBy aXYud2l0aG91dF9ncmFudCwgcHJpdi53aXRoX2dyYW50LCBvX2RhdGEucHJvbmFtZXNwYWNlLCBv X2RhdGEucHJvYXJndHlwZW5hbWVzKSB9fQoreyUgZW5kZm9yICV9eyUgZW5kaWYgLSV9Cit7JSBl bmRpZiAtJX0KK3slIGlmIGRhdGEuY2hhbmdlX2Z1bmMgPT0gRmFsc2UgJX0KK3slIGlmIGRhdGEu dmFyaWFibGVzICV9Cit7JSBpZiAnZGVsZXRlZCcgaW4gZGF0YS52YXJpYWJsZXMgYW5kIGRhdGEu dmFyaWFibGVzLmRlbGV0ZWR8bGVuZ3RoID4gMCAlfQorCit7eyBWQVJJQUJMRS5VTlNFVChjb25u LCAnRlVOQ1RJT04nLCBuYW1lLCBkYXRhLnZhcmlhYmxlcy5kZWxldGVkLCBvX2RhdGEucHJvbmFt ZXNwYWNlLCBvX2RhdGEucHJvYXJndHlwZW5hbWVzKSB9fQoreyUgZW5kaWYgLSV9Cit7JSBpZiAn bWVyZ2VkX3ZhcmlhYmxlcycgaW4gZGF0YSBhbmQgZGF0YS5tZXJnZWRfdmFyaWFibGVzfGxlbmd0 aCA+IDAgJX0KKwore3sgVkFSSUFCTEUuU0VUKGNvbm4sICdGVU5DVElPTicsIG5hbWUsIGRhdGEu bWVyZ2VkX3ZhcmlhYmxlcywgb19kYXRhLnByb25hbWVzcGFjZSwgb19kYXRhLnByb2FyZ3R5cGVu YW1lcykgfX0KK3slIGVuZGlmIC0lfQoreyUgZW5kaWYgLSV9Cit7JSBlbmRpZiAtJX0KK3slIHNl dCBzZWNsYWJlbHMgPSBkYXRhLnNlY2xhYmVscyAlfQoreyUgaWYgJ2RlbGV0ZWQnIGluIHNlY2xh YmVscyBhbmQgc2VjbGFiZWxzLmRlbGV0ZWR8bGVuZ3RoID4gMCAlfQoreyUgZm9yIHIgaW4gc2Vj bGFiZWxzLmRlbGV0ZWQgJX0KKwore3sgU0VDTEFCRUwuVU5TRVQoY29ubiwgJ0ZVTkNUSU9OJywg bmFtZSwgci5wcm92aWRlciwgb19kYXRhLnByb25hbWVzcGFjZSwgb19kYXRhLnByb2FyZ3R5cGVu YW1lcykgfX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgLSV9Cit7JSBpZiAnYWRkZWQnIGluIHNl Y2xhYmVscyBhbmQgc2VjbGFiZWxzLmFkZGVkfGxlbmd0aCA+IDAgJX0KK3slIGZvciByIGluIHNl Y2xhYmVscy5hZGRlZCAlfQorCit7eyBTRUNMQUJFTC5TRVQoY29ubiwgJ0ZVTkNUSU9OJywgbmFt ZSwgci5wcm92aWRlciwgci5sYWJlbCwgb19kYXRhLnByb25hbWVzcGFjZSwgb19kYXRhLnByb2Fy Z3R5cGVuYW1lcykgfX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgLSV9Cit7JSBpZiAnY2hhbmdl ZCcgaW4gc2VjbGFiZWxzIGFuZCBzZWNsYWJlbHMuY2hhbmdlZHxsZW5ndGggPiAwICV9Cit7JSBm b3IgciBpbiBzZWNsYWJlbHMuY2hhbmdlZCAlfQorCit7eyBTRUNMQUJFTC5TRVQoY29ubiwgJ0ZV TkNUSU9OJywgbmFtZSwgci5wcm92aWRlciwgci5sYWJlbCwgb19kYXRhLnByb25hbWVzcGFjZSwg b19kYXRhLnByb2FyZ3R5cGVuYW1lcykgfX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgLSV9Cit7 JSBpZiBkYXRhLmRlc2NyaXB0aW9uIGlzIGRlZmluZWQgYW5kIGRhdGEuZGVzY3JpcHRpb24gIT0g b19kYXRhLmRlc2NyaXB0aW9uJX0KKworQ09NTUVOVCBPTiBGVU5DVElPTiB7eyBjb25ufHF0SWRl bnQob19kYXRhLnByb25hbWVzcGFjZSwgbmFtZSkgfX0oe3tvX2RhdGEucHJvYXJndHlwZW5hbWVz IH19KQorICAgIElTIHt7IGRhdGEuZGVzY3JpcHRpb258cXRMaXRlcmFsIH19OworeyUgZW5kaWYg LSV9CisKK3slIGlmIGRhdGEucHJvbmFtZXNwYWNlICV9CisKK0FMVEVSIEZVTkNUSU9OIHt7IGNv bm58cXRJZGVudChvX2RhdGEucHJvbmFtZXNwYWNlLCBuYW1lKSB9fSh7e29fZGF0YS5wcm9hcmd0 eXBlbmFtZXMgfX0pCisgICAgU0VUIFNDSEVNQSB7eyBjb25ufHF0SWRlbnQoZGF0YS5wcm9uYW1l c3BhY2UpIH19OworeyUgZW5kaWYgLSV9CisKK3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9m dW5jdGlvbnMvdGVzdHMvdGVzdF9mdW5jdGlvbl9hZGQucHkgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdW5jdGlvbnMvdGVzdHMv dGVzdF9mdW5jdGlvbl9hZGQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u NzFlZTI4NQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z1bmN0aW9ucy90ZXN0cy90ZXN0X2Z1bmN0 aW9uX2FkZC5weQpAQCAtMCwwICsxLDgwIEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0Fk bWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgs IFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNl ZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitp bXBvcnQganNvbgoraW1wb3J0IHV1aWQKKworCitmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJf Z3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLnRlc3RzIGltcG9ydCB1dGlscyBhcyBcCisgICAgZGF0 YWJhc2VfdXRpbHMKK2Zyb20gcGdhZG1pbi51dGlscy5yb3V0ZSBpbXBvcnQgQmFzZVRlc3RHZW5l cmF0b3IKK2Zyb20gcmVncmVzc2lvbi5weXRob25fdGVzdF91dGlscyBpbXBvcnQgdGVzdF91dGls cyBhcyB1dGlscworZnJvbSAuIGltcG9ydCB1dGlscyBhcyBmdW5jc191dGlscworCisKK2NsYXNz IEZ1bmN0aW9uQWRkVGVzdENhc2UoQmFzZVRlc3RHZW5lcmF0b3IpOgorICAgICIiIiBUaGlzIGNs YXNzIHdpbGwgYWRkIG5ldyBmdW5jdGlvbiB1bmRlciBzY2hlbWEgbm9kZS4gIiIiCisgICAgc2Nl bmFyaW9zID0gWworICAgICAgICAjIEZldGNoaW5nIGRlZmF1bHQgVVJMIGZvciBmdW5jdGlvbiBu b2RlLgorICAgICAgICAoJ0ZldGNoIEZ1bmN0aW9uIE5vZGUgVVJMJywgZGljdCgKKyAgICAgICAg ICAgIHVybD0nL2Jyb3dzZXIvZnVuY3Rpb24vb2JqLycpKQorICAgIF0KKworICAgIGRlZiBydW5U ZXN0KHNlbGYpOgorICAgICAgICAiIiIgVGhpcyBmdW5jdGlvbiB3aWxsIGFkZCBmdW5jdGlvbiB1 bmRlciBzY2hlbWEgbm9kZS4gIiIiCisgICAgICAgIHN1cGVyKEZ1bmN0aW9uQWRkVGVzdENhc2Us IHNlbGYpLnJ1blRlc3QoKQorICAgICAgICBzZWxmID0gZnVuY3NfdXRpbHMuc2V0X3VwKHNlbGYp CisgICAgICAgIGRiX3VzZXIgPSBzZWxmLnNlcnZlclsidXNlcm5hbWUiXQorICAgICAgICBkYXRh ID0geworICAgICAgICAgICAgImFjbCI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg ICAgICAgICAgICJncmFudGVlIjogZGJfdXNlciwKKyAgICAgICAgICAgICAgICAgICAgImdyYW50 b3IiOiBkYl91c2VyLAorICAgICAgICAgICAgICAgICAgICAicHJpdmlsZWdlcyI6CisgICAgICAg ICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAicHJpdmlsZWdlX3R5cGUiOiAiWCIsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJwcml2aWxlZ2UiOiBUcnVlLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAid2l0aF9ncmFudCI6IFRydWUKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAg fQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJhcmd1bWVudHMiOiBbXSwKKyAgICAgICAg ICAgICJmdW5jb3duZXIiOiBkYl91c2VyLAorICAgICAgICAgICAgImxhbm5hbWUiOiAic3FsIiwK KyAgICAgICAgICAgICJuYW1lIjogInRlc3RfZnVuY3Rpb24iLAorICAgICAgICAgICAgIm9wdGlv bnMiOiBbXSwKKyAgICAgICAgICAgICJwcm9sZWFrcHJvb2YiOiBUcnVlLAorICAgICAgICAgICAg InByb25hbWVzcGFjZSI6IDIyMDAsCisgICAgICAgICAgICAicHJvcmV0dHlwZW5hbWUiOiAiaW50 ZWdlciIsCisgICAgICAgICAgICAicHJvc2VjZGVmIjogVHJ1ZSwKKyAgICAgICAgICAgICJwcm9z cmMiOiAiU0VMRUNUIDE7IiwKKyAgICAgICAgICAgICJwcm9iaW4iOiAiJGxpYmRpci8iLAorICAg ICAgICAgICAgInByb3ZvbGF0aWxlIjogInMiLAorICAgICAgICAgICAgInNlY2xhYmVscyI6IFtd LAorICAgICAgICAgICAgInZhcmlhYmxlcyI6IFtdCisgICAgICAgIH0KKworICAgICAgICBkYXRh WyJuYW1lIl0gPSAidGVzdF9mdW5jdGlvbl9hZGRfJXMiICUgc3RyKHV1aWQudXVpZDQoKSlbMTo4 XQorICAgICAgICBpZiBzZWxmLnNjaGVtYV9pZDoKKyAgICAgICAgICAgIGRhdGFbJ3Byb25hbWVz cGFjZSddID0gc2VsZi5zY2hlbWFfaWQKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYu c2NoZW1hX2lkID0gZGF0YVsncHJvbmFtZXNwYWNlJ10KKyAgICAgICAgcmVzcG9uc2UgPSBzZWxm LnRlc3Rlci5wb3N0KAorICAgICAgICAgICAgc2VsZi51cmwgKyBzdHIodXRpbHMuU0VSVkVSX0dS T1VQKSArICcvJyArCisgICAgICAgICAgICBzdHIoc2VsZi5zZXJ2ZXJfaWQpICsgJy8nICsgc3Ry KHNlbGYuZGJfaWQpICsKKyAgICAgICAgICAgICcvJyArIHN0cihzZWxmLnNjaGVtYV9pZCkgKyAn LycsCisgICAgICAgICAgICBkYXRhPWpzb24uZHVtcHMoZGF0YSksCisgICAgICAgICAgICBjb250 ZW50X3R5cGU9J2h0bWwvanNvbicKKyAgICAgICAgKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1 YWxzKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCisgICAgICAgICMgRGlzY29ubmVjdCB0aGUg ZGF0YWJhc2UKKyAgICAgICAgZGF0YWJhc2VfdXRpbHMuZGlzY29ubmVjdF9kYXRhYmFzZShzZWxm LCBzZWxmLnNlcnZlcl9pZCwgc2VsZi5kYl9pZCkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z1bmN0aW9ucy90 ZXN0cy90ZXN0X2Z1bmN0aW9uX2RlbGV0ZS5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z1bmN0aW9ucy90ZXN0cy90ZXN0X2Z1 bmN0aW9uX2RlbGV0ZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OWE4 OWZhCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVuY3Rpb25zL3Rlc3RzL3Rlc3RfZnVuY3Rpb25f ZGVsZXRlLnB5CkBAIC0wLDAgKzEsNDkgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRt aW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwg VGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2Vk IHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2lt cG9ydCB1dWlkCisKK2Zyb20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5k YXRhYmFzZXMudGVzdHMgaW1wb3J0IHV0aWxzIGFzIFwKKyAgICBkYXRhYmFzZV91dGlscworZnJv bSBwZ2FkbWluLnV0aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVzdEdlbmVyYXRvcgorZnJvbSByZWdy ZXNzaW9uLnB5dGhvbl90ZXN0X3V0aWxzIGltcG9ydCB0ZXN0X3V0aWxzIGFzIHV0aWxzCitmcm9t IC4gaW1wb3J0IHV0aWxzIGFzIGZ1bmNzX3V0aWxzCisKKworY2xhc3MgRnVuY3Rpb25EZWxldGVU ZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6CisgICAgIiIiIFRoaXMgY2xhc3Mgd2lsbCBkZWxl dGUgdGhlIGZ1bmN0aW9uIHVuZGVyIHNjaGVtYSBub2RlLiAiIiIKKyAgICBzY2VuYXJpb3MgPSBb CisgICAgICAgICMgRmV0Y2hpbmcgZGVmYXVsdCBVUkwgZm9yIGZ1bmN0aW9uIG5vZGUuCisgICAg ICAgICgnRmV0Y2ggRnVuY3Rpb24gTm9kZSBVUkwnLAorICAgICAgICAgZGljdCh1cmw9Jy9icm93 c2VyL2Z1bmN0aW9uL29iai8nKSkKKyAgICBdCisKKyAgICBkZWYgcnVuVGVzdChzZWxmKToKKyAg ICAgICAgIiIiIFRoaXMgZnVuY3Rpb24gd2lsbCBkZWxldGUgZnVuY3Rpb24gdW5kZXIgZGF0YWJh c2Ugbm9kZS4gIiIiCisgICAgICAgIHN1cGVyKEZ1bmN0aW9uRGVsZXRlVGVzdENhc2UsIHNlbGYp LnNldFVwKCkKKyAgICAgICAgc2VsZiA9IGZ1bmNzX3V0aWxzLnNldF91cChzZWxmKQorCisgICAg ICAgIGZ1bmNfbmFtZSA9ICJ0ZXN0X2Z1bmN0aW9uX2RlbGV0ZV8lcyIgJSBzdHIodXVpZC51dWlk NCgpKVsxOjhdCisgICAgICAgIGZ1bmN0aW9uX2luZm8gPSBmdW5jc191dGlscy5jcmVhdGVfZnVu Y3Rpb24oCisgICAgICAgICAgICBzZWxmLnNlcnZlciwgc2VsZi5kYl9uYW1lLCBzZWxmLnNjaGVt YV9uYW1lLCBmdW5jX25hbWUpCisKKyAgICAgICAgZnVuY19pZCA9IGZ1bmN0aW9uX2luZm9bMF0K KyAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnRlc3Rlci5kZWxldGUoCisgICAgICAgICAgICBzZWxm LnVybCArIHN0cih1dGlscy5TRVJWRVJfR1JPVVApICsgJy8nICsKKyAgICAgICAgICAgIHN0cihz ZWxmLnNlcnZlcl9pZCkgKyAnLycgKworICAgICAgICAgICAgc3RyKHNlbGYuZGJfaWQpICsgJy8n ICsKKyAgICAgICAgICAgIHN0cihzZWxmLnNjaGVtYV9pZCkgKyAnLycgKyBzdHIoZnVuY19pZCks CisgICAgICAgICAgICBjb250ZW50X3R5cGU9J2h0bWwvanNvbicKKyAgICAgICAgKQorICAgICAg ICBzZWxmLmFzc2VydEVxdWFscyhyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQorICAgICAgICAj IERpc2Nvbm5lY3QgdGhlIGRhdGFiYXNlCisgICAgICAgIGRhdGFiYXNlX3V0aWxzLmRpc2Nvbm5l Y3RfZGF0YWJhc2Uoc2VsZiwgc2VsZi5zZXJ2ZXJfaWQsIHNlbGYuZGJfaWQpCisKKyAgICBkZWYg dGVhckRvd24oc2VsZik6CisgICAgICAgIHBhc3MKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z1bmN0aW9ucy90 ZXN0cy90ZXN0X2Z1bmN0aW9uX2dldC5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z1bmN0aW9ucy90ZXN0cy90ZXN0X2Z1bmN0 aW9uX2dldC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMmE1NTg1Ci0t LSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVuY3Rpb25zL3Rlc3RzL3Rlc3RfZnVuY3Rpb25fZ2V0LnB5 CkBAIC0wLDAgKzEsNDkgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBv c3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRt aW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRo ZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2ltcG9ydCB1dWlk CisKK2Zyb20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMu dGVzdHMgaW1wb3J0IHV0aWxzIGFzIFwKKyAgICBkYXRhYmFzZV91dGlscworZnJvbSBwZ2FkbWlu LnV0aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVzdEdlbmVyYXRvcgorZnJvbSByZWdyZXNzaW9uLnB5 dGhvbl90ZXN0X3V0aWxzIGltcG9ydCB0ZXN0X3V0aWxzIGFzIHV0aWxzCitmcm9tIC4gaW1wb3J0 IHV0aWxzIGFzIGZ1bmNzX3V0aWxzCisKKworY2xhc3MgRnVuY3Rpb25HZXRUZXN0Q2FzZShCYXNl VGVzdEdlbmVyYXRvcik6CisgICAgIiIiVGhpcyBjbGFzcyB3aWxsIGZldGNoIGFkZGVkIGZ1bmN0 aW9uIHVuZGVyIHNjaGVtYSBub2RlLiIiIgorICAgIHNraXBfb25fZGF0YWJhc2UgPSBbJ2dwZGIn XQorICAgIHNjZW5hcmlvcyA9IFsKKyAgICAgICAgIyBGZXRjaGluZyBkZWZhdWx0IFVSTCBmb3Ig ZnVuY3Rpb24gbm9kZS4KKyAgICAgICAgKCdGZXRjaCBGdW5jdGlvbiBOb2RlIFVSTCcsCisgICAg ICAgICBkaWN0KHVybD0nL2Jyb3dzZXIvZnVuY3Rpb24vb2JqLycpKQorICAgIF0KKworICAgIGRl ZiBydW5UZXN0KHNlbGYpOgorICAgICAgICAiIiIgVGhpcyBmdW5jdGlvbiB3aWxsIGRlbGV0ZSBm dW5jdGlvbiB1bmRlciBkYXRhYmFzZSBub2RlLiAiIiIKKyAgICAgICAgc3VwZXIoRnVuY3Rpb25H ZXRUZXN0Q2FzZSwgc2VsZikuc2V0VXAoKQorICAgICAgICBzZWxmID0gZnVuY3NfdXRpbHMuc2V0 X3VwKHNlbGYpCisKKyAgICAgICAgZnVuY19uYW1lID0gInRlc3RfZnVuY3Rpb25fZ2V0XyVzIiAl IHN0cih1dWlkLnV1aWQ0KCkpWzE6OF0KKyAgICAgICAgZnVuY3Rpb25faW5mbyA9IGZ1bmNzX3V0 aWxzLmNyZWF0ZV9mdW5jdGlvbigKKyAgICAgICAgICAgIHNlbGYuc2VydmVyLCBzZWxmLmRiX25h bWUsIHNlbGYuc2NoZW1hX25hbWUsIGZ1bmNfbmFtZSkKKworICAgICAgICB0cmlnZ2VyX2Z1bmNf aWQgPSBmdW5jdGlvbl9pbmZvWzBdCisgICAgICAgIHJlc3BvbnNlID0gc2VsZi50ZXN0ZXIuZ2V0 KAorICAgICAgICAgICAgc2VsZi51cmwgKyBzdHIodXRpbHMuU0VSVkVSX0dST1VQKSArICcvJyAr CisgICAgICAgICAgICBzdHIoc2VsZi5zZXJ2ZXJfaWQpICsgJy8nICsKKyAgICAgICAgICAgIHN0 cihzZWxmLmRiX2lkKSArICcvJyArCisgICAgICAgICAgICBzdHIoc2VsZi5zY2hlbWFfaWQpICsg Jy8nICsgc3RyKHRyaWdnZXJfZnVuY19pZCksCisgICAgICAgICAgICBjb250ZW50X3R5cGU9J2h0 bWwvanNvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3BvbnNlLnN0YXR1c19jb2Rl LCAyMDApCisgICAgICAgICMgRGlzY29ubmVjdCB0aGUgZGF0YWJhc2UKKyAgICAgICAgZGF0YWJh c2VfdXRpbHMuZGlzY29ubmVjdF9kYXRhYmFzZShzZWxmLCBzZWxmLnNlcnZlcl9pZCwgc2VsZi5k Yl9pZCkKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgcGFzcwpkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZnVuY3Rpb25zL3Rlc3RzL3Rlc3RfZnVuY3Rpb25fcHV0LnB5IGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVuY3Rpb25z L3Rlc3RzL3Rlc3RfZnVuY3Rpb25fcHV0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLjg1NjU2ODcKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdW5jdGlvbnMvdGVzdHMvdGVz dF9mdW5jdGlvbl9wdXQucHkKQEAgLTAsMCArMSw1NyBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMK KyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMg LSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMg cmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKKworaW1wb3J0IGpzb24KK2ltcG9ydCB1dWlkCisKK2Zyb20gcGdhZG1pbi5icm93c2VyLnNl cnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMudGVzdHMgaW1wb3J0IHV0aWxzIGFzIFwKKyAg ICBkYXRhYmFzZV91dGlscworZnJvbSBwZ2FkbWluLnV0aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVz dEdlbmVyYXRvcgorZnJvbSByZWdyZXNzaW9uLnB5dGhvbl90ZXN0X3V0aWxzIGltcG9ydCB0ZXN0 X3V0aWxzIGFzIHV0aWxzCitmcm9tIC4gaW1wb3J0IHV0aWxzIGFzIGZ1bmNzX3V0aWxzCisKKwor Y2xhc3MgRnVuY3Rpb25QdXRUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6CisgICAgIiIiIFRo aXMgY2xhc3Mgd2lsbCB1cGRhdGUgbmV3IGZ1bmN0aW9uIHVuZGVyIHNjaGVtYSBub2RlLiAiIiIK KyAgICBza2lwX29uX2RhdGFiYXNlID0gWydncGRiJ10KKyAgICBzY2VuYXJpb3MgPSBbCisgICAg ICAgICMgRmV0Y2hpbmcgZGVmYXVsdCBVUkwgZm9yIGZ1bmN0aW9uIG5vZGUuCisgICAgICAgICgn RmV0Y2ggRnVuY3Rpb24gTm9kZSBVUkwnLAorICAgICAgICAgZGljdCh1cmw9Jy9icm93c2VyL2Z1 bmN0aW9uL29iai8nKSkKKyAgICBdCisKKyAgICBkZWYgcnVuVGVzdChzZWxmKToKKyAgICAgICAg IiIiIFRoaXMgZnVuY3Rpb24gd2lsbCB1cGRhdGUgZnVuY3Rpb24gdW5kZXIgZGF0YWJhc2Ugbm9k ZS4gIiIiCisgICAgICAgIHN1cGVyKEZ1bmN0aW9uUHV0VGVzdENhc2UsIHNlbGYpLnNldFVwKCkK KyAgICAgICAgc2VsZiA9IGZ1bmNzX3V0aWxzLnNldF91cChzZWxmKQorCisgICAgICAgIGZ1bmNf bmFtZSA9ICJ0ZXN0X2V2ZW50X2RlbGV0ZV8lcyIgJSBzdHIodXVpZC51dWlkNCgpKVsxOjhdCisg ICAgICAgIGZ1bmN0aW9uX2luZm8gPSBmdW5jc191dGlscy5jcmVhdGVfZnVuY3Rpb24oCisgICAg ICAgICAgICBzZWxmLnNlcnZlciwgc2VsZi5kYl9uYW1lLCBzZWxmLnNjaGVtYV9uYW1lLCBmdW5j X25hbWUpCisKKyAgICAgICAgZnVuY19pZCA9IGZ1bmN0aW9uX2luZm9bMF0KKworICAgICAgICBk YXRhID0geworICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRoaXMgaXMgYSBwcm9jZWR1cmUg dXBkYXRlIGNvbW1lbnQiLAorICAgICAgICAgICAgImlkIjogZnVuY19pZAorICAgICAgICB9CisK KyAgICAgICAgcHV0X3Jlc3BvbnNlID0gc2VsZi50ZXN0ZXIucHV0KAorICAgICAgICAgICAgc2Vs Zi51cmwgKyBzdHIodXRpbHMuU0VSVkVSX0dST1VQKSArCisgICAgICAgICAgICAnLycgKyBzdHIo c2VsZi5zZXJ2ZXJfaWQpICsgJy8nICsgc3RyKHNlbGYuZGJfaWQpICsgJy8nICsKKyAgICAgICAg ICAgIHN0cihzZWxmLnNjaGVtYV9pZCkgKyAnLycgKworICAgICAgICAgICAgc3RyKGZ1bmNfaWQp LAorICAgICAgICAgICAgZGF0YT1qc29uLmR1bXBzKGRhdGEpLAorICAgICAgICAgICAgZm9sbG93 X3JlZGlyZWN0cz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwdXRfcmVzcG9uc2Uu c3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAgIyBEaXNjb25uZWN0IHRoZSBkYXRhYmFzZQorICAg ICAgICBkYXRhYmFzZV91dGlscy5kaXNjb25uZWN0X2RhdGFiYXNlKHNlbGYsIHNlbGYuc2VydmVy X2lkLCBzZWxmLmRiX2lkKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBwYXNz CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy9mdW5jdGlvbnMvdGVzdHMvdGVzdF9wcm9jZWR1cmVfYWRkLnB5IGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvZnVuY3Rpb25zL3Rlc3RzL3Rlc3RfcHJvY2VkdXJlX2FkZC5weQpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi5iNWNkZjE3Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVuY3Rp b25zL3Rlc3RzL3Rlc3RfcHJvY2VkdXJlX2FkZC5weQpAQCAtMCwwICsxLDkwIEBACisjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHly aWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKyMgVGhp cyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworCitpbXBvcnQganNvbgoraW1wb3J0IHV1aWQKKworZnJvbSBwZ2Fk bWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy50ZXN0cyBpbXBvcnQg dXRpbHMgYXMgXAorICAgIGRhdGFiYXNlX3V0aWxzCitmcm9tIHBnYWRtaW4udXRpbHMucm91dGUg aW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCitmcm9tIHJlZ3Jlc3Npb24ucHl0aG9uX3Rlc3RfdXRp bHMgaW1wb3J0IHRlc3RfdXRpbHMgYXMgdXRpbHMKK2Zyb20gLiBpbXBvcnQgdXRpbHMgYXMgZnVu Y3NfdXRpbHMKKworCitjbGFzcyBQcm9jZWR1cmVBZGRUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRv cik6CisgICAgIiIiIFRoaXMgY2xhc3Mgd2lsbCBhZGQgbmV3IHByb2NlZHVyZSB1bmRlciBzY2hl bWEgbm9kZS4gIiIiCisgICAgc2tpcF9vbl9kYXRhYmFzZSA9IFsnZ3BkYiddCisgICAgc2NlbmFy aW9zID0gWworICAgICAgICAjIEZldGNoaW5nIGRlZmF1bHQgVVJMIGZvciBwcm9jZWR1cmUgbm9k ZS4KKyAgICAgICAgKCdGZXRjaCBQcm9jZWR1cmUgTm9kZSBVUkwnLCBkaWN0KAorICAgICAgICAg ICAgdXJsPScvYnJvd3Nlci9wcm9jZWR1cmUvb2JqLycpKQorICAgIF0KKworICAgIGRlZiBydW5U ZXN0KHNlbGYpOgorICAgICAgICAiIiIgVGhpcyBmdW5jdGlvbiB3aWxsIGFkZCBwcm9jZWR1cmUg dW5kZXIgc2NoZW1hIG5vZGUuICIiIgorICAgICAgICBzdXBlcihQcm9jZWR1cmVBZGRUZXN0Q2Fz ZSwgc2VsZikuc2V0VXAoKQorICAgICAgICBzZWxmID0gZnVuY3NfdXRpbHMuc2V0X3VwKHNlbGYp CisKKyAgICAgICAgaWYgc2VsZi5zZXJ2ZXJfdHlwZSA9PSAicGciIGFuZFwKKyAgICAgICAgICAg ICAgICBzZWxmLnNlcnZlcl92ZXJzaW9uIDwgMTEwMDAwOgorICAgICAgICAgICAgbWVzc2FnZSA9 ICJQcm9jZWR1cmVzIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IFBHIDwgMTEwMDAwLiIKKyAgICAgICAg ICAgIHNlbGYuc2tpcFRlc3QobWVzc2FnZSkKKworICAgICAgICBkYl91c2VyID0gc2VsZi5zZXJ2 ZXJbInVzZXJuYW1lIl0KKyAgICAgICAgZGF0YSA9IHsKKyAgICAgICAgICAgICJhY2wiOiBbCisg ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZ3JhbnRlZSI6IGRiX3VzZXIs CisgICAgICAgICAgICAgICAgICAgICJncmFudG9yIjogZGJfdXNlciwKKyAgICAgICAgICAgICAg ICAgICAgInByaXZpbGVnZXMiOgorICAgICAgICAgICAgICAgICAgICAgICAgWworICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBy aXZpbGVnZV90eXBlIjogIlgiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHJp dmlsZWdlIjogVHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndpdGhfZ3Jh bnQiOiBUcnVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg ICAgICAgICAgXQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAg ICAiYXJndW1lbnRzIjogW10sCisgICAgICAgICAgICAiZnVuY293bmVyIjogZGJfdXNlciwKKyAg ICAgICAgICAgICJsYW5uYW1lIjogInNxbCIsCisgICAgICAgICAgICAibmFtZSI6ICJ0ZXN0X3Bn XzExX3Byb2MiLAorICAgICAgICAgICAgIm9wdGlvbnMiOiBbXSwKKyAgICAgICAgICAgICJwcm9s ZWFrcHJvb2YiOiBUcnVlLAorICAgICAgICAgICAgInByb25hbWVzcGFjZSI6IDIyMDAsCisgICAg ICAgICAgICAicHJvc2VjZGVmIjogVHJ1ZSwKKyAgICAgICAgICAgICJwcm9zcmMiOiAiQkVHSU4g UkFJU0UgRVhDRVBUSU9OICdjb21tYW5kICUgaXMgZGlzYWJsZWQnLCIKKyAgICAgICAgICAgICAg ICAgICAgICAiIHRnX3RhZzsgRU5EOyIsCisgICAgICAgICAgICAic2VjbGFiZWxzIjogW10sCisg ICAgICAgICAgICAidmFyaWFibGVzIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg ICAgICAgICAgIm5hbWUiOiAiZW5hYmxlX3NvcnQiLAorICAgICAgICAgICAgICAgICAgICAidmFs dWUiOiBUcnVlCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXQorICAgICAgICB9CisK KyAgICAgICAgZGF0YVsibmFtZSJdID0gInRlc3RfcHJvY19hZGRfJXMiICUgc3RyKHV1aWQudXVp ZDQoKSlbMTo4XQorICAgICAgICBpZiBzZWxmLnNlcnZlcl90eXBlID09ICdwZyc6CisgICAgICAg ICAgICBkYXRhWydwcm9zcmMnXSA9ICdTRUxFQ1QgMTsnCisgICAgICAgIGlmIHNlbGYuc2NoZW1h X2lkOgorICAgICAgICAgICAgZGF0YVsncHJvbmFtZXNwYWNlJ10gPSBzZWxmLnNjaGVtYV9pZAor ICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5zY2hlbWFfaWQgPSBkYXRhWydwcm9uYW1l c3BhY2UnXQorICAgICAgICByZXNwb25zZSA9IHNlbGYudGVzdGVyLnBvc3QoCisgICAgICAgICAg ICBzZWxmLnVybCArIHN0cih1dGlscy5TRVJWRVJfR1JPVVApICsgJy8nICsKKyAgICAgICAgICAg IHN0cihzZWxmLnNlcnZlcl9pZCkgKyAnLycgKyBzdHIoc2VsZi5kYl9pZCkgKyAnLycgKworICAg ICAgICAgICAgc3RyKHNlbGYuc2NoZW1hX2lkKSArICcvJywgZGF0YT1qc29uLmR1bXBzKGRhdGEp LAorICAgICAgICAgICAgY29udGVudF90eXBlPSdodG1sL2pzb24nCisgICAgICAgICkKKworICAg ICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQorICAgICAg ICAjIERpc2Nvbm5lY3QgdGhlIGRhdGFiYXNlCisgICAgICAgIGRhdGFiYXNlX3V0aWxzLmRpc2Nv bm5lY3RfZGF0YWJhc2Uoc2VsZiwgc2VsZi5zZXJ2ZXJfaWQsIHNlbGYuZGJfaWQpCmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy9mdW5jdGlvbnMvdGVzdHMvdGVzdF9wcm9jZWR1cmVfZGVsZXRlLnB5IGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVu Y3Rpb25zL3Rlc3RzL3Rlc3RfcHJvY2VkdXJlX2RlbGV0ZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi40NTU2YjlmCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVuY3Rpb25z L3Rlc3RzL3Rlc3RfcHJvY2VkdXJlX2RlbGV0ZS5weQpAQCAtMCwwICsxLDU2IEBACisjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHly aWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKyMgVGhp cyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworCitpbXBvcnQgdXVpZAorCitmcm9tIHBnYWRtaW4uYnJvd3Nlci5z ZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLnRlc3RzIGltcG9ydCB1dGlscyBhcyBcCisg ICAgZGF0YWJhc2VfdXRpbHMKK2Zyb20gcGdhZG1pbi51dGlscy5yb3V0ZSBpbXBvcnQgQmFzZVRl c3RHZW5lcmF0b3IKK2Zyb20gcmVncmVzc2lvbi5weXRob25fdGVzdF91dGlscyBpbXBvcnQgdGVz dF91dGlscyBhcyB1dGlscworZnJvbSAuIGltcG9ydCB1dGlscyBhcyBmdW5jc191dGlscworCisK K2NsYXNzIHByb2NlZHVyZURlbGV0ZVRlc3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9yKToKKyAgICAi IiIgVGhpcyBjbGFzcyB3aWxsIGRlbGV0ZSB0aGUgcHJvY2VkdXJlIHVuZGVyIHNjaGVtYSBub2Rl LiAiIiIKKyAgICBza2lwX29uX2RhdGFiYXNlID0gWydncGRiJ10KKyAgICBzY2VuYXJpb3MgPSBb CisgICAgICAgICMgRmV0Y2hpbmcgZGVmYXVsdCBVUkwgZm9yIHByb2NlZHVyZSBub2RlLgorICAg ICAgICAoJ0ZldGNoIFByb2NlZHVyZSBOb2RlIFVSTCcsCisgICAgICAgICBkaWN0KHVybD0nL2Jy b3dzZXIvcHJvY2VkdXJlL29iai8nKSkKKyAgICBdCisKKyAgICBkZWYgcnVuVGVzdChzZWxmKToK KyAgICAgICAgIiIiIFRoaXMgZnVuY3Rpb24gd2lsbCBkZWxldGUgcHJvY2VkdXJlIHVuZGVyIGRh dGFiYXNlIG5vZGUuICIiIgorICAgICAgICBzdXBlcihwcm9jZWR1cmVEZWxldGVUZXN0Q2FzZSwg c2VsZikuc2V0VXAoKQorICAgICAgICBzZWxmID0gZnVuY3NfdXRpbHMuc2V0X3VwKHNlbGYpCisK KyAgICAgICAgaWYgc2VsZi5zZXJ2ZXJfdHlwZSA9PSAicGciIGFuZFwKKyAgICAgICAgICAgICAg ICBzZWxmLnNlcnZlcl92ZXJzaW9uIDwgMTEwMDAwOgorICAgICAgICAgICAgbWVzc2FnZSA9ICJQ cm9jZWR1cmVzIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IFBHIDwgMTEwMDAwLiIKKyAgICAgICAgICAg IHNlbGYuc2tpcFRlc3QobWVzc2FnZSkKKworICAgICAgICBmdW5jX25hbWUgPSAidGVzdF9wcm9j ZWR1cmVfZGVsZXRlXyVzIiAlIHN0cih1dWlkLnV1aWQ0KCkpWzE6OF0KKyAgICAgICAgcHJvY19p bmZvID0gZnVuY3NfdXRpbHMuY3JlYXRlX3Byb2NlZHVyZSgKKyAgICAgICAgICAgIHNlbGYuc2Vy dmVyLCBzZWxmLmRiX25hbWUsIHNlbGYuc2NoZW1hX25hbWUsIGZ1bmNfbmFtZSwKKyAgICAgICAg ICAgIHNlbGYuc2VydmVyX3R5cGUpCisKKyAgICAgICAgcHJvY19pZCA9IHByb2NfaW5mb1swXQor ICAgICAgICByZXNwb25zZSA9IHNlbGYudGVzdGVyLmRlbGV0ZSgKKyAgICAgICAgICAgIHNlbGYu dXJsICsgc3RyKHV0aWxzLlNFUlZFUl9HUk9VUCkgKyAnLycgKworICAgICAgICAgICAgc3RyKHNl bGYuc2VydmVyX2lkKSArICcvJyArCisgICAgICAgICAgICBzdHIoc2VsZi5kYl9pZCkgKyAnLycg KworICAgICAgICAgICAgc3RyKHNlbGYuc2NoZW1hX2lkKSArICcvJyArIHN0cihwcm9jX2lkKSwK KyAgICAgICAgICAgIGNvbnRlbnRfdHlwZT0naHRtbC9qc29uJworICAgICAgICApCisgICAgICAg IHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCisgICAgICAgICMg RGlzY29ubmVjdCB0aGUgZGF0YWJhc2UKKyAgICAgICAgZGF0YWJhc2VfdXRpbHMuZGlzY29ubmVj dF9kYXRhYmFzZShzZWxmLCBzZWxmLnNlcnZlcl9pZCwgc2VsZi5kYl9pZCkKKworICAgIGRlZiB0 ZWFyRG93bihzZWxmKToKKyAgICAgICAgcGFzcwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVuY3Rpb25zL3Rl c3RzL3Rlc3RfcHJvY2VkdXJlX2dldC5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z1bmN0aW9ucy90ZXN0cy90ZXN0X3Byb2Nl ZHVyZV9nZXQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmIxNTg3OAot LS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z1bmN0aW9ucy90ZXN0cy90ZXN0X3Byb2NlZHVyZV9nZXQu cHkKQEAgLTAsMCArMSw1NSBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0g UG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdB ZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIg dGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworaW1wb3J0IHV1 aWQKKworZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNl cy50ZXN0cyBpbXBvcnQgdXRpbHMgYXMgXAorICAgIGRhdGFiYXNlX3V0aWxzCitmcm9tIHBnYWRt aW4udXRpbHMucm91dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCitmcm9tIHJlZ3Jlc3Npb24u cHl0aG9uX3Rlc3RfdXRpbHMgaW1wb3J0IHRlc3RfdXRpbHMgYXMgdXRpbHMKK2Zyb20gLiBpbXBv cnQgdXRpbHMgYXMgZnVuY3NfdXRpbHMKKworCitjbGFzcyBQcm9jZWR1cmVHZXRUZXN0Q2FzZShC YXNlVGVzdEdlbmVyYXRvcik6CisgICAgIiIiVGhpcyBjbGFzcyB3aWxsIGZldGNoIGFkZGVkIHBy b2NlZHVyZSB1bmRlciBzY2hlbWEgbm9kZS4iIiIKKyAgICBza2lwX29uX2RhdGFiYXNlID0gWydn cGRiJ10KKyAgICBzY2VuYXJpb3MgPSBbCisgICAgICAgICMgRmV0Y2hpbmcgZGVmYXVsdCBVUkwg Zm9yIHByb2NlZHVyZSBub2RlLgorICAgICAgICAoJ0ZldGNoIFByb2NlZHVyZSBOb2RlIFVSTCcs CisgICAgICAgICBkaWN0KHVybD0nL2Jyb3dzZXIvcHJvY2VkdXJlL29iai8nKSkKKyAgICBdCisK KyAgICBkZWYgcnVuVGVzdChzZWxmKToKKyAgICAgICAgIiIiIFRoaXMgZnVuY3Rpb24gd2lsbCBn ZXQgcHJvY2VkdXJlIHVuZGVyIGRhdGFiYXNlIG5vZGUuICIiIgorICAgICAgICBzdXBlcihQcm9j ZWR1cmVHZXRUZXN0Q2FzZSwgc2VsZikuc2V0VXAoKQorICAgICAgICBzZWxmID0gZnVuY3NfdXRp bHMuc2V0X3VwKHNlbGYpCisKKyAgICAgICAgaWYgc2VsZi5zZXJ2ZXJfdHlwZSA9PSAicGciIGFu ZFwKKyAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl92ZXJzaW9uIDwgMTEwMDAwOgorICAgICAg ICAgICAgbWVzc2FnZSA9ICJQcm9jZWR1cmVzIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IFBHIDwgMTEw MDAwLiIKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QobWVzc2FnZSkKKworICAgICAgICBmdW5j X25hbWUgPSAidGVzdF9wcm9jZWR1cmVfZ2V0XyVzIiAlIHN0cih1dWlkLnV1aWQ0KCkpWzE6OF0K KyAgICAgICAgcHJvY19pbmZvID0gZnVuY3NfdXRpbHMuY3JlYXRlX3Byb2NlZHVyZSgKKyAgICAg ICAgICAgIHNlbGYuc2VydmVyLCBzZWxmLmRiX25hbWUsIHNlbGYuc2NoZW1hX25hbWUsIGZ1bmNf bmFtZSwKKyAgICAgICAgICAgIHNlbGYuc2VydmVyX3R5cGUpCisKKyAgICAgICAgcHJvY19pZCA9 IHByb2NfaW5mb1swXQorICAgICAgICByZXNwb25zZSA9IHNlbGYudGVzdGVyLmdldCgKKyAgICAg ICAgICAgIHNlbGYudXJsICsgc3RyKHV0aWxzLlNFUlZFUl9HUk9VUCkgKyAnLycgKworICAgICAg ICAgICAgc3RyKHNlbGYuc2VydmVyX2lkKSArICcvJyArCisgICAgICAgICAgICBzdHIoc2VsZi5k Yl9pZCkgKyAnLycgKworICAgICAgICAgICAgc3RyKHNlbGYuc2NoZW1hX2lkKSArICcvJyArIHN0 cihwcm9jX2lkKSwKKyAgICAgICAgICAgIGNvbnRlbnRfdHlwZT0naHRtbC9qc29uJykKKyAgICAg ICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAg IyBEaXNjb25uZWN0IHRoZSBkYXRhYmFzZQorICAgICAgICBkYXRhYmFzZV91dGlscy5kaXNjb25u ZWN0X2RhdGFiYXNlKHNlbGYsIHNlbGYuc2VydmVyX2lkLCBzZWxmLmRiX2lkKQorCisgICAgZGVm IHRlYXJEb3duKHNlbGYpOgorICAgICAgICBwYXNzCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdW5jdGlvbnMv dGVzdHMvdGVzdF9wcm9jZWR1cmVfcHV0LnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVuY3Rpb25zL3Rlc3RzL3Rlc3RfcHJv Y2VkdXJlX3B1dC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43M2JhMWFl Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVuY3Rpb25zL3Rlc3RzL3Rlc3RfcHJvY2VkdXJlX3B1 dC5weQpAQCAtMCwwICsxLDYyIEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQg LSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBw Z0FkbWluIERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRl ciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitpbXBvcnQg anNvbgoraW1wb3J0IHV1aWQKKworZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5z ZXJ2ZXJzLmRhdGFiYXNlcy50ZXN0cyBpbXBvcnQgdXRpbHMgYXMgXAorICAgIGRhdGFiYXNlX3V0 aWxzCitmcm9tIHBnYWRtaW4udXRpbHMucm91dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCitm cm9tIHJlZ3Jlc3Npb24ucHl0aG9uX3Rlc3RfdXRpbHMgaW1wb3J0IHRlc3RfdXRpbHMgYXMgdXRp bHMKK2Zyb20gLiBpbXBvcnQgdXRpbHMgYXMgZnVuY3NfdXRpbHMKKworCitjbGFzcyBQcm9jZWR1 cmVQdXRUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6CisgICAgIiIiIFRoaXMgY2xhc3Mgd2ls bCB1cGRhdGUgbmV3IHByb2NlZHVyZSB1bmRlciBzY2hlbWEgbm9kZS4gIiIiCisgICAgc2tpcF9v bl9kYXRhYmFzZSA9IFsnZ3BkYiddCisgICAgc2NlbmFyaW9zID0gWworICAgICAgICAjIEZldGNo aW5nIGRlZmF1bHQgVVJMIGZvciBwcm9jZWR1cmUgbm9kZS4KKyAgICAgICAgKCdGZXRjaCBQcm9j ZWR1cmUgTm9kZSBVUkwnLAorICAgICAgICAgZGljdCh1cmw9Jy9icm93c2VyL3Byb2NlZHVyZS9v YmovJykpCisgICAgXQorCisgICAgZGVmIHJ1blRlc3Qoc2VsZik6CisgICAgICAgICIiIiBUaGlz IGZ1bmN0aW9uIHdpbGwgdXBkYXRlIHByb2NlZHVyZSB1bmRlciBkYXRhYmFzZSBub2RlLiAiIiIK KyAgICAgICAgc3VwZXIoUHJvY2VkdXJlUHV0VGVzdENhc2UsIHNlbGYpLnNldFVwKCkKKyAgICAg ICAgc2VsZiA9IGZ1bmNzX3V0aWxzLnNldF91cChzZWxmKQorCisgICAgICAgIGlmIHNlbGYuc2Vy dmVyX3R5cGUgPT0gInBnIiBhbmRcCisgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfdmVyc2lv biA8IDExMDAwMDoKKyAgICAgICAgICAgIG1lc3NhZ2UgPSAiUHJvY2VkdXJlcyBhcmUgbm90IHN1 cHBvcnRlZCBieSBQRyA8IDExMDAwMC4iCisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KG1lc3Nh Z2UpCisKKyAgICAgICAgZnVuY19uYW1lID0gInRlc3RfcHJvY2VkdXJlX3B1dF8lcyIgJSBzdHIo dXVpZC51dWlkNCgpKVsxOjhdCisgICAgICAgIHByb2NfaW5mbyA9IGZ1bmNzX3V0aWxzLmNyZWF0 ZV9wcm9jZWR1cmUoCisgICAgICAgICAgICBzZWxmLnNlcnZlciwgc2VsZi5kYl9uYW1lLCBzZWxm LnNjaGVtYV9uYW1lLCBmdW5jX25hbWUsCisgICAgICAgICAgICBzZWxmLnNlcnZlcl90eXBlKQor CisgICAgICAgIHByb2NfaWQgPSBwcm9jX2luZm9bMF0KKyAgICAgICAgZGF0YSA9IHsKKyAgICAg ICAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGlzIGlzIHByb2NlZHVyZSB1cGRhdGUgY29tbWVudCIs CisgICAgICAgICAgICAiaWQiOiBwcm9jX2lkCisgICAgICAgIH0KKworICAgICAgICBwdXRfcmVz cG9uc2UgPSBzZWxmLnRlc3Rlci5wdXQoCisgICAgICAgICAgICBzZWxmLnVybCArIHN0cih1dGls cy5TRVJWRVJfR1JPVVApICsKKyAgICAgICAgICAgICcvJyArIHN0cihzZWxmLnNlcnZlcl9pZCkg KyAnLycgKyBzdHIoc2VsZi5kYl9pZCkgKyAnLycgKworICAgICAgICAgICAgc3RyKHNlbGYuc2No ZW1hX2lkKSArICcvJyArCisgICAgICAgICAgICBzdHIocHJvY19pZCksCisgICAgICAgICAgICBk YXRhPWpzb24uZHVtcHMoZGF0YSksCisgICAgICAgICAgICBmb2xsb3dfcmVkaXJlY3RzPVRydWUp CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHB1dF9yZXNwb25zZS5zdGF0dXNfY29kZSwgMjAw KQorICAgICAgICAjIERpc2Nvbm5lY3QgdGhlIGRhdGFiYXNlCisgICAgICAgIGRhdGFiYXNlX3V0 aWxzLmRpc2Nvbm5lY3RfZGF0YWJhc2Uoc2VsZiwgc2VsZi5zZXJ2ZXJfaWQsIHNlbGYuZGJfaWQp CisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIHBhc3MKZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L2Z1bmN0aW9ucy90ZXN0cy90ZXN0X3RyaWdnZXJfZnVuY19hZGQucHkgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdW5jdGlvbnMv dGVzdHMvdGVzdF90cmlnZ2VyX2Z1bmNfYWRkLnB5CmluZGV4IGQyMzhiZjAuLmU5OWY3YzMgMTAw NjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL2Z1bmN0aW9ucy90ZXN0cy90ZXN0X3RyaWdnZXJfZnVuY19hZGQucHkKKysr IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZnVuY3Rpb25zL3Rlc3RzL3Rlc3RfdHJpZ2dlcl9mdW5jX2FkZC5weQpAQCAtMTAsMTQg KzEwLDExIEBACiBpbXBvcnQganNvbgogaW1wb3J0IHV1aWQKIAotZnJvbSBwZ2FkbWluLmJyb3dz ZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy5zY2hlbWFzLnRlc3RzIGltcG9ydCBc Ci0gICAgdXRpbHMgYXMgc2NoZW1hX3V0aWxzCiBmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJf Z3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLnRlc3RzIGltcG9ydCB1dGlscyBhcyBcCiAgICAgZGF0 YWJhc2VfdXRpbHMKLWZyb20gcGdhZG1pbi51dGlscyBpbXBvcnQgc2VydmVyX3V0aWxzIGFzIHNl cnZlcl91dGlscwogZnJvbSBwZ2FkbWluLnV0aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVzdEdlbmVy YXRvcgotZnJvbSByZWdyZXNzaW9uIGltcG9ydCBwYXJlbnRfbm9kZV9kaWN0CiBmcm9tIHJlZ3Jl c3Npb24ucHl0aG9uX3Rlc3RfdXRpbHMgaW1wb3J0IHRlc3RfdXRpbHMgYXMgdXRpbHMKK2Zyb20g LiBpbXBvcnQgdXRpbHMgYXMgZnVuY3NfdXRpbHMKIAogCiBjbGFzcyBUcmlnZ2VyRnVuY0FkZFRl c3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9yKToKQEAgLTMyLDMwICsyOSw3IEBAIGNsYXNzIFRyaWdn ZXJGdW5jQWRkVGVzdENhc2UoQmFzZVRlc3RHZW5lcmF0b3IpOgogICAgIGRlZiBydW5UZXN0KHNl bGYpOgogICAgICAgICAiIiIgVGhpcyBmdW5jdGlvbiB3aWxsIGFkZCB0cmlnZ2VyIGZ1bmN0aW9u IHVuZGVyIHNjaGVtYSBub2RlLiAiIiIKICAgICAgICAgc3VwZXIoVHJpZ2dlckZ1bmNBZGRUZXN0 Q2FzZSwgc2VsZikucnVuVGVzdCgpCi0gICAgICAgIGRiX25hbWUgPSBwYXJlbnRfbm9kZV9kaWN0 WyJkYXRhYmFzZSJdWy0xXVsiZGJfbmFtZSJdCi0gICAgICAgIHNjaGVtYV9pbmZvID0gcGFyZW50 X25vZGVfZGljdFsic2NoZW1hIl1bLTFdCi0gICAgICAgIHNlcnZlcl9pZCA9IHNjaGVtYV9pbmZv WyJzZXJ2ZXJfaWQiXQotICAgICAgICBkYl9pZCA9IHNjaGVtYV9pbmZvWyJkYl9pZCJdCi0gICAg ICAgIHByb3JldHR5cGVuYW1lID0gImV2ZW50X3RyaWdnZXIvdHJpZ2dlciIKLSAgICAgICAgc2Vy dmVyX2NvbiA9IHNlcnZlcl91dGlscy5jb25uZWN0X3NlcnZlcihzZWxmLCBzZXJ2ZXJfaWQpCi0g ICAgICAgIGlmIG5vdCBzZXJ2ZXJfY29uWyJpbmZvIl0gPT0gIlNlcnZlciBjb25uZWN0ZWQuIjoK LSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ291bGQgbm90IGNvbm5lY3QgdG8gc2VydmVy IHRvIGFkZCByZXNvdXJjZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImdyb3Vwcy4i KQotICAgICAgICBpZiAidHlwZSIgaW4gc2VydmVyX2NvblsiZGF0YSJdOgotICAgICAgICAgICAg aWYgc2VydmVyX2NvblsiZGF0YSJdWyJ2ZXJzaW9uIl0gPCA5MDMwMDoKLSAgICAgICAgICAgICAg ICBwcm9yZXR0eXBlbmFtZSA9ICJ0cmlnZ2VyIgotCi0gICAgICAgIGRiX2NvbiA9IGRhdGFiYXNl X3V0aWxzLmNvbm5lY3RfZGF0YWJhc2Uoc2VsZiwgdXRpbHMuU0VSVkVSX0dST1VQLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9pZCwgZGJf aWQpCi0gICAgICAgIGlmIG5vdCBkYl9jb25bJ2RhdGEnXVsiY29ubmVjdGVkIl06Ci0gICAgICAg ICAgICByYWlzZSBFeGNlcHRpb24oIkNvdWxkIG5vdCBjb25uZWN0IHRvIGRhdGFiYXNlIHRvIGFk ZCBhIGZ1bmN0aW9uLiIpCi0gICAgICAgIHNjaGVtYV9pZCA9IHNjaGVtYV9pbmZvWyJzY2hlbWFf aWQiXQotICAgICAgICBzY2hlbWFfbmFtZSA9IHNjaGVtYV9pbmZvWyJzY2hlbWFfbmFtZSJdCi0g ICAgICAgIHNjaGVtYV9yZXNwb25zZSA9IHNjaGVtYV91dGlscy52ZXJpZnlfc2NoZW1hcyhzZWxm LnNlcnZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGRiX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzY2hlbWFfbmFtZSkKLSAgICAgICAgaWYgbm90IHNjaGVtYV9yZXNwb25z ZToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ291bGQgbm90IGZpbmQgdGhlIHNjaGVt YSB0byBhZGQgYSBmdW5jdGlvbi4iKQorICAgICAgICBzZWxmID0gZnVuY3NfdXRpbHMuc2V0X3Vw KHNlbGYpCiAgICAgICAgIGRiX3VzZXIgPSBzZWxmLnNlcnZlclsidXNlcm5hbWUiXQogICAgICAg ICBkYXRhID0gewogICAgICAgICAgICAgImFjbCI6IFsKQEAgLTc5LDcgKzUzLDcgQEAgY2xhc3Mg VHJpZ2dlckZ1bmNBZGRUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6CiAgICAgICAgICAgICAi b3B0aW9ucyI6IFtdLAogICAgICAgICAgICAgInByb2xlYWtwcm9vZiI6IFRydWUsCiAgICAgICAg ICAgICAicHJvbmFtZXNwYWNlIjogMjIwMCwKLSAgICAgICAgICAgICJwcm9yZXR0eXBlbmFtZSI6 IHByb3JldHR5cGVuYW1lLAorICAgICAgICAgICAgInByb3JldHR5cGVuYW1lIjogc2VsZi5wcm9y ZXR0eXBlbmFtZSwKICAgICAgICAgICAgICJwcm9zZWNkZWYiOiBUcnVlLAogICAgICAgICAgICAg InByb3NyYyI6ICJCRUdJTiBSQUlTRSBFWENFUFRJT04gJ2NvbW1hbmQgJSBpcyBkaXNhYmxlZCcs IgogICAgICAgICAgICAgICAgICAgICAgICIgdGdfdGFnOyBFTkQ7IiwKQEAgLTk4LDE2ICs3Miwx NyBAQCBjbGFzcyBUcmlnZ2VyRnVuY0FkZFRlc3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9yKToKICAg ICAgICAgZm9yIGZ1bmNfdHlwZSBpbiB0cmlnZ2VyX2Z1bmNfdHlwZXM6CiAgICAgICAgICAgICBk YXRhWydwcm9yZXR0eXBlbmFtZSddID0gZnVuY190eXBlCiAgICAgICAgICAgICBkYXRhWyJuYW1l Il0gPSAidGVzdF9ldmVudF9hZGRfJXMiICUgc3RyKHV1aWQudXVpZDQoKSlbMTo4XQotICAgICAg ICAgICAgaWYgc2NoZW1hX2lkOgotICAgICAgICAgICAgICAgIGRhdGFbJ3Byb25hbWVzcGFjZSdd ID0gc2NoZW1hX2lkCisgICAgICAgICAgICBpZiBzZWxmLnNjaGVtYV9pZDoKKyAgICAgICAgICAg ICAgICBkYXRhWydwcm9uYW1lc3BhY2UnXSA9IHNlbGYuc2NoZW1hX2lkCiAgICAgICAgICAgICBl bHNlOgotICAgICAgICAgICAgICAgIHNjaGVtYV9pZCA9IGRhdGFbJ3Byb25hbWVzcGFjZSddCisg ICAgICAgICAgICAgICAgc2VsZi5zY2hlbWFfaWQgPSBkYXRhWydwcm9uYW1lc3BhY2UnXQogICAg ICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnRlc3Rlci5wb3N0KAogICAgICAgICAgICAgICAgIHNl bGYudXJsICsgc3RyKHV0aWxzLlNFUlZFUl9HUk9VUCkgKyAnLycgKwotICAgICAgICAgICAgICAg IHN0cihzZXJ2ZXJfaWQpICsgJy8nICsgc3RyKGRiX2lkKSArICcvJyArIHN0cihzY2hlbWFfaWQp ICsKKyAgICAgICAgICAgICAgICBzdHIoc2VsZi5zZXJ2ZXJfaWQpICsgJy8nICsgc3RyKHNlbGYu ZGJfaWQpICsKKyAgICAgICAgICAgICAgICAnLycgKyBzdHIoc2VsZi5zY2hlbWFfaWQpICsKICAg ICAgICAgICAgICAgICAnLycsIGRhdGE9anNvbi5kdW1wcyhkYXRhKSwgY29udGVudF90eXBlPSdo dG1sL2pzb24nCiAgICAgICAgICAgICApCiAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz KHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCiAgICAgICAgICMgRGlzY29ubmVjdCB0aGUgZGF0 YWJhc2UKLSAgICAgICAgZGF0YWJhc2VfdXRpbHMuZGlzY29ubmVjdF9kYXRhYmFzZShzZWxmLCBz ZXJ2ZXJfaWQsIGRiX2lkKQorICAgICAgICBkYXRhYmFzZV91dGlscy5kaXNjb25uZWN0X2RhdGFi YXNlKHNlbGYsIHNlbGYuc2VydmVyX2lkLCBzZWxmLmRiX2lkKQpkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVu Y3Rpb25zL3Rlc3RzL3Rlc3RfdHJpZ2dlcl9mdW5jX2RlbGV0ZS5weSBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z1bmN0aW9ucy90 ZXN0cy90ZXN0X3RyaWdnZXJfZnVuY19kZWxldGUucHkKaW5kZXggM2QxZmU5Zi4uZTJmYWE0YyAx MDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvZnVuY3Rpb25zL3Rlc3RzL3Rlc3RfdHJpZ2dlcl9mdW5jX2RlbGV0ZS5w eQorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9mdW5jdGlvbnMvdGVzdHMvdGVzdF90cmlnZ2VyX2Z1bmNfZGVsZXRlLnB5CkBA IC05LDE1ICs5LDExIEBACiAKIGltcG9ydCB1dWlkCiAKLWZyb20gcGdhZG1pbi5icm93c2VyLnNl cnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMuc2NoZW1hcy50ZXN0cyBpbXBvcnQgXAotICAg IHV0aWxzIGFzIHNjaGVtYV91dGlscwogZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vw cy5zZXJ2ZXJzLmRhdGFiYXNlcy50ZXN0cyBpbXBvcnQgdXRpbHMgYXMgXAogICAgIGRhdGFiYXNl X3V0aWxzCi1mcm9tIHBnYWRtaW4udXRpbHMgaW1wb3J0IHNlcnZlcl91dGlscyBhcyBzZXJ2ZXJf dXRpbHMKIGZyb20gcGdhZG1pbi51dGlscy5yb3V0ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IK LWZyb20gcmVncmVzc2lvbiBpbXBvcnQgcGFyZW50X25vZGVfZGljdAogZnJvbSByZWdyZXNzaW9u LnB5dGhvbl90ZXN0X3V0aWxzIGltcG9ydCB0ZXN0X3V0aWxzIGFzIHV0aWxzCi1mcm9tIC4gaW1w b3J0IHV0aWxzIGFzIHRyaWdnZXJfZnVuY3NfdXRpbHMKK2Zyb20gLiBpbXBvcnQgdXRpbHMgYXMg ZnVuY3NfdXRpbHMKIAogCiBjbGFzcyBUcmlnZ2VyRnVuY0RlbGV0ZVRlc3RDYXNlKEJhc2VUZXN0 R2VuZXJhdG9yKToKQEAgLTI5LDQ5ICsyNSwyNyBAQCBjbGFzcyBUcmlnZ2VyRnVuY0RlbGV0ZVRl c3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9yKToKICAgICAgICAgIGRpY3QodXJsPScvYnJvd3Nlci90 cmlnZ2VyX2Z1bmN0aW9uL29iai8nKSkKICAgICBdCiAKLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0g ICAgICAgIHN1cGVyKFRyaWdnZXJGdW5jRGVsZXRlVGVzdENhc2UsIHNlbGYpLnNldFVwKCkKLSAg ICAgICAgc2VsZi5kYl9uYW1lID0gcGFyZW50X25vZGVfZGljdFsiZGF0YWJhc2UiXVstMV1bImRi X25hbWUiXQotICAgICAgICBzZWxmLnNjaGVtYV9uYW1lID0gcGFyZW50X25vZGVfZGljdFsic2No ZW1hIl1bLTFdWyJzY2hlbWFfbmFtZSJdCi0gICAgICAgIHNlbGYuc2NoZW1hX2lkID0gcGFyZW50 X25vZGVfZGljdFsic2NoZW1hIl1bLTFdWyJzY2hlbWFfaWQiXQotCiAgICAgZGVmIHJ1blRlc3Qo c2VsZik6CiAgICAgICAgICIiIiBUaGlzIGZ1bmN0aW9uIHdpbGwgZGVsZXRlIHRyaWdnZXIgZnVu Y3Rpb24gdW5kZXIgZGF0YWJhc2Ugbm9kZS4gIiIiCi0gICAgICAgIHNjaGVtYV9pbmZvID0gcGFy ZW50X25vZGVfZGljdFsic2NoZW1hIl1bLTFdCi0gICAgICAgIHNlcnZlcl9pZCA9IHNjaGVtYV9p bmZvWyJzZXJ2ZXJfaWQiXQotICAgICAgICBkYl9pZCA9IHNjaGVtYV9pbmZvWyJkYl9pZCJdCisg ICAgICAgIHN1cGVyKFRyaWdnZXJGdW5jRGVsZXRlVGVzdENhc2UsIHNlbGYpLnNldFVwKCkKKyAg ICAgICAgc2VsZiA9IGZ1bmNzX3V0aWxzLnNldF91cChzZWxmKQorCiAgICAgICAgIGZ1bmNfbmFt ZSA9ICJ0ZXN0X2V2ZW50X2RlbGV0ZV8lcyIgJSBzdHIodXVpZC51dWlkNCgpKVsxOjhdCi0gICAg ICAgIHNlcnZlcl9jb24gPSBzZXJ2ZXJfdXRpbHMuY29ubmVjdF9zZXJ2ZXIoc2VsZiwgc2VydmVy X2lkKQotICAgICAgICBpZiBub3Qgc2VydmVyX2NvblsiaW5mbyJdID09ICJTZXJ2ZXIgY29ubmVj dGVkLiI6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNvdWxkIG5vdCBjb25uZWN0IHRv IHNlcnZlciB0byBhZGQgcmVzb3VyY2UgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJn cm91cHMuIikKLSAgICAgICAgc2VydmVyX3ZlcnNpb24gPSAwCi0gICAgICAgIGlmICJ0eXBlIiBp biBzZXJ2ZXJfY29uWyJkYXRhIl06Ci0gICAgICAgICAgICBpZiBzZXJ2ZXJfY29uWyJkYXRhIl1b InZlcnNpb24iXSA8IDkwMzAwOgotICAgICAgICAgICAgICAgIHNlcnZlcl92ZXJzaW9uID0gc2Vy dmVyX2NvblsiZGF0YSJdWyJ2ZXJzaW9uIl0KLSAgICAgICAgc2VsZi5mdW5jdGlvbl9pbmZvID0g dHJpZ2dlcl9mdW5jc191dGlscy5jcmVhdGVfdHJpZ2dlcl9mdW5jdGlvbigKKyAgICAgICAgZnVu Y3Rpb25faW5mbyA9IGZ1bmNzX3V0aWxzLmNyZWF0ZV90cmlnZ2VyX2Z1bmN0aW9uKAogICAgICAg ICAgICAgc2VsZi5zZXJ2ZXIsIHNlbGYuZGJfbmFtZSwgc2VsZi5zY2hlbWFfbmFtZSwgZnVuY19u YW1lLAotICAgICAgICAgICAgc2VydmVyX3ZlcnNpb24pCisgICAgICAgICAgICBzZWxmLnNlcnZl cl92ZXJzaW9uKQogCi0gICAgICAgIGRiX2NvbiA9IGRhdGFiYXNlX3V0aWxzLmNvbm5lY3RfZGF0 YWJhc2Uoc2VsZiwgdXRpbHMuU0VSVkVSX0dST1VQLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9pZCwgZGJfaWQpCi0gICAgICAgIGlmIG5v dCBkYl9jb25bJ2RhdGEnXVsiY29ubmVjdGVkIl06Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRp b24oIkNvdWxkIG5vdCBjb25uZWN0IHRvIGRhdGFiYXNlIHRvIGFkZCBjb2xsYXRpb24uIikKLSAg ICAgICAgc2NoZW1hX3Jlc3BvbnNlID0gc2NoZW1hX3V0aWxzLnZlcmlmeV9zY2hlbWFzKHNlbGYu c2VydmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2VsZi5kYl9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2VsZi5zY2hlbWFfbmFtZSkKLSAgICAgICAgaWYgbm90IHNjaGVt YV9yZXNwb25zZToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ291bGQgbm90IGZpbmQg dGhlIHNjaGVtYSB0byBhZGQgdGhlIGNvbGxhdGlvbi4iKQotICAgICAgICB0cmlnZ2VyX2Z1bmNf aWQgPSBzZWxmLmZ1bmN0aW9uX2luZm9bMF0KKyAgICAgICAgdHJpZ2dlcl9mdW5jX2lkID0gZnVu Y3Rpb25faW5mb1swXQogICAgICAgICByZXNwb25zZSA9IHNlbGYudGVzdGVyLmRlbGV0ZSgKLSAg ICAgICAgICAgIHNlbGYudXJsICsgc3RyKHV0aWxzLlNFUlZFUl9HUk9VUCkgKyAnLycgKyBzdHIo c2VydmVyX2lkKSArICcvJyArCi0gICAgICAgICAgICBzdHIoZGJfaWQpICsgJy8nICsKKyAgICAg ICAgICAgIHNlbGYudXJsICsgc3RyKHV0aWxzLlNFUlZFUl9HUk9VUCkgKyAnLycgKworICAgICAg ICAgICAgc3RyKHNlbGYuc2VydmVyX2lkKSArICcvJyArCisgICAgICAgICAgICBzdHIoc2VsZi5k Yl9pZCkgKyAnLycgKwogICAgICAgICAgICAgc3RyKHNlbGYuc2NoZW1hX2lkKSArICcvJyArIHN0 cih0cmlnZ2VyX2Z1bmNfaWQpLAogICAgICAgICAgICAgY29udGVudF90eXBlPSdodG1sL2pzb24n CiAgICAgICAgICkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzcG9uc2Uuc3RhdHVzX2Nv ZGUsIDIwMCkKICAgICAgICAgIyBEaXNjb25uZWN0IHRoZSBkYXRhYmFzZQotICAgICAgICBkYXRh YmFzZV91dGlscy5kaXNjb25uZWN0X2RhdGFiYXNlKHNlbGYsIHNlcnZlcl9pZCwgZGJfaWQpCisg ICAgICAgIGRhdGFiYXNlX3V0aWxzLmRpc2Nvbm5lY3RfZGF0YWJhc2Uoc2VsZiwgc2VsZi5zZXJ2 ZXJfaWQsIHNlbGYuZGJfaWQpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHBh c3MKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL2Z1bmN0aW9ucy90ZXN0cy90ZXN0X3RyaWdnZXJfZnVuY19nZXQu cHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy9mdW5jdGlvbnMvdGVzdHMvdGVzdF90cmlnZ2VyX2Z1bmNfZ2V0LnB5CmluZGV4IDdl YjBkMmEuLjUzZmRiZWIgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z1bmN0aW9ucy90ZXN0cy90ZXN0X3RyaWdn ZXJfZnVuY19nZXQucHkKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVuY3Rpb25zL3Rlc3RzL3Rlc3RfdHJpZ2dlcl9mdW5j X2dldC5weQpAQCAtOSwxNSArOSwxMSBAQAogCiBpbXBvcnQgdXVpZAogCi1mcm9tIHBnYWRtaW4u YnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLnNjaGVtYXMudGVzdHMgaW1w b3J0IFwKLSAgICB1dGlscyBhcyBzY2hlbWFfdXRpbHMKIGZyb20gcGdhZG1pbi5icm93c2VyLnNl cnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMudGVzdHMgaW1wb3J0IHV0aWxzIGFzIFwKICAg ICBkYXRhYmFzZV91dGlscwotZnJvbSBwZ2FkbWluLnV0aWxzIGltcG9ydCBzZXJ2ZXJfdXRpbHMg YXMgc2VydmVyX3V0aWxzCiBmcm9tIHBnYWRtaW4udXRpbHMucm91dGUgaW1wb3J0IEJhc2VUZXN0 R2VuZXJhdG9yCi1mcm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHBhcmVudF9ub2RlX2RpY3QKIGZyb20g cmVncmVzc2lvbi5weXRob25fdGVzdF91dGlscyBpbXBvcnQgdGVzdF91dGlscyBhcyB1dGlscwot ZnJvbSAuIGltcG9ydCB1dGlscyBhcyB0cmlnZ2VyX2Z1bmNzX3V0aWxzCitmcm9tIC4gaW1wb3J0 IHV0aWxzIGFzIGZ1bmNzX3V0aWxzCiAKIAogY2xhc3MgVHJpZ2dlckZ1bmNHZXRUZXN0Q2FzZShC YXNlVGVzdEdlbmVyYXRvcik6CkBAIC0yOSw0OSArMjUsMjYgQEAgY2xhc3MgVHJpZ2dlckZ1bmNH ZXRUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6CiAgICAgICAgICBkaWN0KHVybD0nL2Jyb3dz ZXIvdHJpZ2dlcl9mdW5jdGlvbi9vYmovJykpCiAgICAgXQogCi0gICAgZGVmIHNldFVwKHNlbGYp OgotICAgICAgICBzdXBlcihUcmlnZ2VyRnVuY0dldFRlc3RDYXNlLCBzZWxmKS5zZXRVcCgpCi0g ICAgICAgIHNlbGYuZGJfbmFtZSA9IHBhcmVudF9ub2RlX2RpY3RbImRhdGFiYXNlIl1bLTFdWyJk Yl9uYW1lIl0KLSAgICAgICAgc2VsZi5zY2hlbWFfbmFtZSA9IHBhcmVudF9ub2RlX2RpY3RbInNj aGVtYSJdWy0xXVsic2NoZW1hX25hbWUiXQotICAgICAgICBzZWxmLnNjaGVtYV9pZCA9IHBhcmVu dF9ub2RlX2RpY3RbInNjaGVtYSJdWy0xXVsic2NoZW1hX2lkIl0KLQogICAgIGRlZiBydW5UZXN0 KHNlbGYpOgogICAgICAgICAiIiIgVGhpcyBmdW5jdGlvbiB3aWxsIGRlbGV0ZSB0cmlnZ2VyIGZ1 bmN0aW9uIHVuZGVyIGRhdGFiYXNlIG5vZGUuICIiIgotICAgICAgICBzY2hlbWFfaW5mbyA9IHBh cmVudF9ub2RlX2RpY3RbInNjaGVtYSJdWy0xXQotICAgICAgICBzZXJ2ZXJfaWQgPSBzY2hlbWFf aW5mb1sic2VydmVyX2lkIl0KLSAgICAgICAgZGJfaWQgPSBzY2hlbWFfaW5mb1siZGJfaWQiXQot ICAgICAgICBmdW5jX25hbWUgPSAidGVzdF9ldmVudF9nZXRfJXMiICUgc3RyKHV1aWQudXVpZDQo KSlbMTo4XQotICAgICAgICBkYl91c2VyID0gc2VsZi5zZXJ2ZXJbInVzZXJuYW1lIl0KLSAgICAg ICAgc2VydmVyX2NvbiA9IHNlcnZlcl91dGlscy5jb25uZWN0X3NlcnZlcihzZWxmLCBzZXJ2ZXJf aWQpCi0gICAgICAgIGlmIG5vdCBzZXJ2ZXJfY29uWyJpbmZvIl0gPT0gIlNlcnZlciBjb25uZWN0 ZWQuIjoKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ291bGQgbm90IGNvbm5lY3QgdG8g c2VydmVyIHRvIGFkZCByZXNvdXJjZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImdy b3Vwcy4iKQotICAgICAgICBzZXJ2ZXJfdmVyc2lvbiA9IDAKLSAgICAgICAgaWYgInR5cGUiIGlu IHNlcnZlcl9jb25bImRhdGEiXToKLSAgICAgICAgICAgIGlmIHNlcnZlcl9jb25bImRhdGEiXVsi dmVyc2lvbiJdIDwgOTAzMDA6Ci0gICAgICAgICAgICAgICAgc2VydmVyX3ZlcnNpb24gPSBzZXJ2 ZXJfY29uWyJkYXRhIl1bInZlcnNpb24iXQotICAgICAgICBzZWxmLmZ1bmN0aW9uX2luZm8gPSB0 cmlnZ2VyX2Z1bmNzX3V0aWxzLmNyZWF0ZV90cmlnZ2VyX2Z1bmN0aW9uKAorICAgICAgICBzdXBl cihUcmlnZ2VyRnVuY0dldFRlc3RDYXNlLCBzZWxmKS5zZXRVcCgpCisgICAgICAgIHNlbGYgPSBm dW5jc191dGlscy5zZXRfdXAoc2VsZikKKworICAgICAgICBmdW5jX25hbWUgPSAidGVzdF9ldmVu dF9kZWxldGVfJXMiICUgc3RyKHV1aWQudXVpZDQoKSlbMTo4XQorICAgICAgICBmdW5jdGlvbl9p bmZvID0gZnVuY3NfdXRpbHMuY3JlYXRlX3RyaWdnZXJfZnVuY3Rpb24oCiAgICAgICAgICAgICBz ZWxmLnNlcnZlciwgc2VsZi5kYl9uYW1lLCBzZWxmLnNjaGVtYV9uYW1lLCBmdW5jX25hbWUsCi0g ICAgICAgICAgICBzZXJ2ZXJfdmVyc2lvbikKKyAgICAgICAgICAgIHNlbGYuc2VydmVyX3ZlcnNp b24pCiAKLSAgICAgICAgZGJfY29uID0gZGF0YWJhc2VfdXRpbHMuY29ubmVjdF9kYXRhYmFzZShz ZWxmLCB1dGlscy5TRVJWRVJfR1JPVVAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2VydmVyX2lkLCBkYl9pZCkKLSAgICAgICAgaWYgbm90IGRiX2Nv blsnZGF0YSddWyJjb25uZWN0ZWQiXToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ291 bGQgbm90IGNvbm5lY3QgdG8gZGF0YWJhc2UgdG8gYWRkIGNvbGxhdGlvbi4iKQotICAgICAgICBz Y2hlbWFfcmVzcG9uc2UgPSBzY2hlbWFfdXRpbHMudmVyaWZ5X3NjaGVtYXMoc2VsZi5zZXJ2ZXIs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz ZWxmLmRiX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzZWxmLnNjaGVtYV9uYW1lKQotICAgICAgICBpZiBub3Qgc2NoZW1hX3Jlc3Bv bnNlOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJDb3VsZCBub3QgZmluZCB0aGUgc2No ZW1hIHRvIGFkZCB0aGUgY29sbGF0aW9uLiIpCi0gICAgICAgIHRyaWdnZXJfZnVuY19pZCA9IHNl bGYuZnVuY3Rpb25faW5mb1swXQorICAgICAgICB0cmlnZ2VyX2Z1bmNfaWQgPSBmdW5jdGlvbl9p bmZvWzBdCiAgICAgICAgIHJlc3BvbnNlID0gc2VsZi50ZXN0ZXIuZ2V0KAotICAgICAgICAgICAg c2VsZi51cmwgKyBzdHIodXRpbHMuU0VSVkVSX0dST1VQKSArICcvJyArIHN0cihzZXJ2ZXJfaWQp ICsgJy8nICsKLSAgICAgICAgICAgIHN0cihkYl9pZCkgKyAnLycgKworICAgICAgICAgICAgc2Vs Zi51cmwgKyBzdHIodXRpbHMuU0VSVkVSX0dST1VQKSArICcvJyArCisgICAgICAgICAgICBzdHIo c2VsZi5zZXJ2ZXJfaWQpICsgJy8nICsKKyAgICAgICAgICAgIHN0cihzZWxmLmRiX2lkKSArICcv JyArCiAgICAgICAgICAgICBzdHIoc2VsZi5zY2hlbWFfaWQpICsgJy8nICsgc3RyKHRyaWdnZXJf ZnVuY19pZCksCiAgICAgICAgICAgICBjb250ZW50X3R5cGU9J2h0bWwvanNvbicpCiAgICAgICAg IHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCiAgICAgICAgICMg RGlzY29ubmVjdCB0aGUgZGF0YWJhc2UKLSAgICAgICAgZGF0YWJhc2VfdXRpbHMuZGlzY29ubmVj dF9kYXRhYmFzZShzZWxmLCBzZXJ2ZXJfaWQsIGRiX2lkKQorICAgICAgICBkYXRhYmFzZV91dGls cy5kaXNjb25uZWN0X2RhdGFiYXNlKHNlbGYsIHNlbGYuc2VydmVyX2lkLCBzZWxmLmRiX2lkKQog CiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBwYXNzCmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9m dW5jdGlvbnMvdGVzdHMvdGVzdF90cmlnZ2VyX2Z1bmNfcHV0LnB5IGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVuY3Rpb25zL3Rl c3RzL3Rlc3RfdHJpZ2dlcl9mdW5jX3B1dC5weQppbmRleCA2M2Q0YzA4Li5mMTEzNmQ1IDEwMDY0 NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9mdW5jdGlvbnMvdGVzdHMvdGVzdF90cmlnZ2VyX2Z1bmNfcHV0LnB5CisrKyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL2Z1bmN0aW9ucy90ZXN0cy90ZXN0X3RyaWdnZXJfZnVuY19wdXQucHkKQEAgLTEwLDE1ICsx MCwxMSBAQAogaW1wb3J0IGpzb24KIGltcG9ydCB1dWlkCiAKLWZyb20gcGdhZG1pbi5icm93c2Vy LnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMuc2NoZW1hcy50ZXN0cyBpbXBvcnQgXAot ICAgIHV0aWxzIGFzIHNjaGVtYV91dGlscwogZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dy b3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy50ZXN0cyBpbXBvcnQgdXRpbHMgYXMgXAogICAgIGRhdGFi YXNlX3V0aWxzCi1mcm9tIHBnYWRtaW4udXRpbHMgaW1wb3J0IHNlcnZlcl91dGlscyBhcyBzZXJ2 ZXJfdXRpbHMKIGZyb20gcGdhZG1pbi51dGlscy5yb3V0ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0 b3IKLWZyb20gcmVncmVzc2lvbiBpbXBvcnQgcGFyZW50X25vZGVfZGljdAogZnJvbSByZWdyZXNz aW9uLnB5dGhvbl90ZXN0X3V0aWxzIGltcG9ydCB0ZXN0X3V0aWxzIGFzIHV0aWxzCi1mcm9tIC4g aW1wb3J0IHV0aWxzIGFzIHRyaWdnZXJfZnVuY3NfdXRpbHMKK2Zyb20gLiBpbXBvcnQgdXRpbHMg YXMgZnVuY3NfdXRpbHMKIAogCiBjbGFzcyBUcmlnZ2VyRnVuY1B1dFRlc3RDYXNlKEJhc2VUZXN0 R2VuZXJhdG9yKToKQEAgLTMwLDYzICsyNiwzMyBAQCBjbGFzcyBUcmlnZ2VyRnVuY1B1dFRlc3RD YXNlKEJhc2VUZXN0R2VuZXJhdG9yKToKICAgICAgICAgIGRpY3QodXJsPScvYnJvd3Nlci90cmln Z2VyX2Z1bmN0aW9uL29iai8nKSkKICAgICBdCiAKLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAg ICAgIHN1cGVyKFRyaWdnZXJGdW5jUHV0VGVzdENhc2UsIHNlbGYpLnNldFVwKCkKLSAgICAgICAg c2VsZi5kYl9uYW1lID0gcGFyZW50X25vZGVfZGljdFsiZGF0YWJhc2UiXVstMV1bImRiX25hbWUi XQotICAgICAgICBzZWxmLnNjaGVtYV9uYW1lID0gcGFyZW50X25vZGVfZGljdFsic2NoZW1hIl1b LTFdWyJzY2hlbWFfbmFtZSJdCi0gICAgICAgIHNlbGYuc2NoZW1hX2lkID0gcGFyZW50X25vZGVf ZGljdFsic2NoZW1hIl1bLTFdWyJzY2hlbWFfaWQiXQotCiAgICAgZGVmIHJ1blRlc3Qoc2VsZik6 CiAgICAgICAgICIiIiBUaGlzIGZ1bmN0aW9uIHdpbGwgdXBkYXRlIHRyaWdnZXIgZnVuY3Rpb24g dW5kZXIgZGF0YWJhc2Ugbm9kZS4gIiIiCi0gICAgICAgIHNjaGVtYV9pbmZvID0gcGFyZW50X25v ZGVfZGljdFsic2NoZW1hIl1bLTFdCi0gICAgICAgIHNlcnZlcl9pZCA9IHNjaGVtYV9pbmZvWyJz ZXJ2ZXJfaWQiXQotICAgICAgICBkYl9pZCA9IHNjaGVtYV9pbmZvWyJkYl9pZCJdCi0gICAgICAg IGZ1bmNfbmFtZSA9ICJ0ZXN0X2V2ZW50X3B1dF8lcyIgJSBzdHIodXVpZC51dWlkNCgpKVsxOjhd Ci0gICAgICAgIHNlcnZlcl9jb24gPSBzZXJ2ZXJfdXRpbHMuY29ubmVjdF9zZXJ2ZXIoc2VsZiwg c2VydmVyX2lkKQotICAgICAgICBpZiBub3Qgc2VydmVyX2NvblsiaW5mbyJdID09ICJTZXJ2ZXIg Y29ubmVjdGVkLiI6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNvdWxkIG5vdCBjb25u ZWN0IHRvIHNlcnZlciB0byBhZGQgcmVzb3VyY2UgIgotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJncm91cHMuIikKLSAgICAgICAgc2VydmVyX3ZlcnNpb24gPSAwCi0gICAgICAgIGlmICJ0 eXBlIiBpbiBzZXJ2ZXJfY29uWyJkYXRhIl06Ci0gICAgICAgICAgICBpZiBzZXJ2ZXJfY29uWyJk YXRhIl1bInZlcnNpb24iXSA8IDkwMzAwOgotICAgICAgICAgICAgICAgIHNlcnZlcl92ZXJzaW9u ID0gc2VydmVyX2NvblsiZGF0YSJdWyJ2ZXJzaW9uIl0KLSAgICAgICAgc2VsZi5mdW5jdGlvbl9p bmZvID0gdHJpZ2dlcl9mdW5jc191dGlscy5jcmVhdGVfdHJpZ2dlcl9mdW5jdGlvbigKKyAgICAg ICAgc3VwZXIoVHJpZ2dlckZ1bmNQdXRUZXN0Q2FzZSwgc2VsZikuc2V0VXAoKQorICAgICAgICBz ZWxmID0gZnVuY3NfdXRpbHMuc2V0X3VwKHNlbGYpCisKKyAgICAgICAgZnVuY19uYW1lID0gInRl c3RfZXZlbnRfZGVsZXRlXyVzIiAlIHN0cih1dWlkLnV1aWQ0KCkpWzE6OF0KKyAgICAgICAgZnVu Y3Rpb25faW5mbyA9IGZ1bmNzX3V0aWxzLmNyZWF0ZV90cmlnZ2VyX2Z1bmN0aW9uKAogICAgICAg ICAgICAgc2VsZi5zZXJ2ZXIsIHNlbGYuZGJfbmFtZSwgc2VsZi5zY2hlbWFfbmFtZSwgZnVuY19u YW1lLAotICAgICAgICAgICAgc2VydmVyX3ZlcnNpb24pCi0gICAgICAgIGRiX2NvbiA9IGRhdGFi YXNlX3V0aWxzLmNvbm5lY3RfZGF0YWJhc2Uoc2VsZiwgdXRpbHMuU0VSVkVSX0dST1VQLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9pZCwg ZGJfaWQpCi0gICAgICAgIGlmIG5vdCBkYl9jb25bJ2RhdGEnXVsiY29ubmVjdGVkIl06Ci0gICAg ICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNvdWxkIG5vdCBjb25uZWN0IHRvIGRhdGFiYXNlIHRv IGFkZCBjb2xsYXRpb24uIikKLSAgICAgICAgc2NoZW1hX3Jlc3BvbnNlID0gc2NoZW1hX3V0aWxz LnZlcmlmeV9zY2hlbWFzKHNlbGYuc2VydmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kYl9uYW1lLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zY2hlbWFfbmFtZSkK LSAgICAgICAgaWYgbm90IHNjaGVtYV9yZXNwb25zZToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2Vw dGlvbigiQ291bGQgbm90IGZpbmQgdGhlIHNjaGVtYSB0byBhZGQgdGhlIGNvbGxhdGlvbi4iKQot ICAgICAgICBmdW5jX25hbWUgPSBzZWxmLmZ1bmN0aW9uX2luZm9bMV0KLSAgICAgICAgZnVuY19y ZXNwb25zZSA9IHRyaWdnZXJfZnVuY3NfdXRpbHMudmVyaWZ5X3RyaWdnZXJfZnVuY3Rpb24oCi0g ICAgICAgICAgICBzZWxmLnNlcnZlciwKLSAgICAgICAgICAgIHNlbGYuZGJfbmFtZSwKLSAgICAg ICAgICAgIGZ1bmNfbmFtZSkKLSAgICAgICAgaWYgbm90IGZ1bmNfcmVzcG9uc2U6Ci0gICAgICAg ICAgICByYWlzZSBFeGNlcHRpb24oIkNvdWxkIG5vdCBmaW5kIHRoZSB0cmlnZ2VyIGZ1bmN0aW9u IHRvIHVwZGF0ZSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGl0J3MgZGV0YWlscy4i KQorICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfdmVyc2lvbikKKworICAgICAgICB0cmlnZ2VyX2Z1 bmNfaWQgPSBmdW5jdGlvbl9pbmZvWzBdCiAKLSAgICAgICAgdHJpZ2dlcl9mdW5jX2lkID0gc2Vs Zi5mdW5jdGlvbl9pbmZvWzBdCiAgICAgICAgIGRhdGEgPSB7Ci0gICAgICAgICAgICAiZGVzY3Jp cHRpb24iOiAiVGhpcyBpcyB0cmlnZ2VyIGZ1bmN0aW9uIHVwZGF0ZSBjb21tZW50IiwKKyAgICAg ICAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGlzIGlzIGEgdHJpZ2dlciBmdW5jdGlvbiB1cGRhdGUg Y29tbWVudCIsCiAgICAgICAgICAgICAiaWQiOiB0cmlnZ2VyX2Z1bmNfaWQKICAgICAgICAgfQog CiAgICAgICAgIHB1dF9yZXNwb25zZSA9IHNlbGYudGVzdGVyLnB1dCgKICAgICAgICAgICAgIHNl bGYudXJsICsgc3RyKHV0aWxzLlNFUlZFUl9HUk9VUCkgKwotICAgICAgICAgICAgJy8nICsgc3Ry KHNlcnZlcl9pZCkgKyAnLycgKyBzdHIoZGJfaWQpICsgJy8nICsKKyAgICAgICAgICAgICcvJyAr IHN0cihzZWxmLnNlcnZlcl9pZCkgKyAnLycgKyBzdHIoc2VsZi5kYl9pZCkgKyAnLycgKwogICAg ICAgICAgICAgc3RyKHNlbGYuc2NoZW1hX2lkKSArICcvJyArCiAgICAgICAgICAgICBzdHIodHJp Z2dlcl9mdW5jX2lkKSwKICAgICAgICAgICAgIGRhdGE9anNvbi5kdW1wcyhkYXRhKSwKICAgICAg ICAgICAgIGZvbGxvd19yZWRpcmVjdHM9VHJ1ZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo cHV0X3Jlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCiAgICAgICAgICMgRGlzY29ubmVjdCB0aGUg ZGF0YWJhc2UKLSAgICAgICAgZGF0YWJhc2VfdXRpbHMuZGlzY29ubmVjdF9kYXRhYmFzZShzZWxm LCBzZXJ2ZXJfaWQsIGRiX2lkKQorICAgICAgICBkYXRhYmFzZV91dGlscy5kaXNjb25uZWN0X2Rh dGFiYXNlKHNlbGYsIHNlbGYuc2VydmVyX2lkLCBzZWxmLmRiX2lkKQogCiAgICAgZGVmIHRlYXJE b3duKHNlbGYpOgogICAgICAgICBwYXNzCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdW5jdGlvbnMvdGVzdHMv dXRpbHMucHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy9mdW5jdGlvbnMvdGVzdHMvdXRpbHMucHkKaW5kZXggNGZhY2Y2MC4uMzYw NmI0NSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVuY3Rpb25zL3Rlc3RzL3V0aWxzLnB5CisrKyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z1 bmN0aW9ucy90ZXN0cy91dGlscy5weQpAQCAtMTMsNiArMTMsMTEgQEAgaW1wb3J0IHN5cwogaW1w b3J0IHRyYWNlYmFjawogCiBmcm9tIHJlZ3Jlc3Npb24ucHl0aG9uX3Rlc3RfdXRpbHMgaW1wb3J0 IHRlc3RfdXRpbHMgYXMgdXRpbHMKK2Zyb20gcGdhZG1pbi51dGlscyBpbXBvcnQgc2VydmVyX3V0 aWxzIGFzIHNlcnZlcl91dGlscworZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5z ZXJ2ZXJzLmRhdGFiYXNlcy5zY2hlbWFzLnRlc3RzIGltcG9ydCBcCisgICAgdXRpbHMgYXMgc2No ZW1hX3V0aWxzCitmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0 YWJhc2VzLnRlc3RzIGltcG9ydCB1dGlscyBhcyBcCisgICAgZGF0YWJhc2VfdXRpbHMKIAogCiBk ZWYgY3JlYXRlX3RyaWdnZXJfZnVuY3Rpb24oc2VydmVyLCBkYl9uYW1lLCBzY2hlbWFfbmFtZSwg ZnVuY19uYW1lLApAQCAtOTIsMyArOTcsMTE4IEBAIGRlZiB2ZXJpZnlfdHJpZ2dlcl9mdW5jdGlv bihzZXJ2ZXIsIGRiX25hbWUsIGZ1bmNfbmFtZSk6CiAgICAgZnVuY3Rpb25zID0gcGdfY3Vyc29y LmZldGNob25lKCkKICAgICBjb25uZWN0aW9uLmNsb3NlKCkKICAgICByZXR1cm4gZnVuY3Rpb25z CisKKworZGVmIGNyZWF0ZV9wcm9jZWR1cmUoc2VydmVyLCBkYl9uYW1lLCBzY2hlbWFfbmFtZSwg ZnVuY19uYW1lLCBzX3R5cGUpOgorICAgICIiIlRoaXMgZnVuY3Rpb24gYWRkIHRoZSBwcm9jZWR1 cmUgdG8gc2NoZW1hIiIiCisgICAgdHJ5OgorICAgICAgICBjb25uZWN0aW9uID0gdXRpbHMuZ2V0 X2RiX2Nvbm5lY3Rpb24oZGJfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNlcnZlclsndXNlcm5hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNlcnZlclsnZGJfcGFzc3dvcmQnXSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlclsnaG9zdCddLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyWydwb3J0J10sCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJbJ3NzbG1v ZGUnXSkKKyAgICAgICAgcGdfY3Vyc29yID0gY29ubmVjdGlvbi5jdXJzb3IoKQorICAgICAgICBp ZiBzX3R5cGUgPT0gJ3BnJzoKKyAgICAgICAgICAgIHF1ZXJ5ID0gIkNSRUFURSBQUk9DRURVUkUg IiArIHNjaGVtYV9uYW1lICsgIi4iICsgZnVuY19uYW1lICsgXAorICAgICAgICAgICAgICAgICAg ICAiKCkiIFwKKyAgICAgICAgICAgICAgICAgICAgIiBMQU5HVUFHRSAnc3FsJyIgXAorICAgICAg ICAgICAgICAgICAgICAiIFNFQ1VSSVRZIERFRklORVIgQVMgJCQiIFwKKyAgICAgICAgICAgICAg ICAgICAgIiBTRUxFQ1QgMTsgJCQ7IgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcXVlcnkg PSAiQ1JFQVRFIFBST0NFRFVSRSAiICsgc2NoZW1hX25hbWUgKyAiLiIgKyBmdW5jX25hbWUgKyBc CisgICAgICAgICAgICAgICAgICAgICIoKSIgXAorICAgICAgICAgICAgICAgICAgICAiIFNFQ1VS SVRZIERFRklORVIgQVMgJEJPRFkkIEJFR0lOIiBcCisgICAgICAgICAgICAgICAgICAgICIgTlVM TDsgRU5EOyAkQk9EWSQiCisgICAgICAgIHBnX2N1cnNvci5leGVjdXRlKHF1ZXJ5KQorICAgICAg ICBjb25uZWN0aW9uLmNvbW1pdCgpCisgICAgICAgICMgR2V0ICdvaWQnIGZyb20gbmV3bHkgY3Jl YXRlZCBmdW5jdGlvbgorICAgICAgICBwZ19jdXJzb3IuZXhlY3V0ZSgiU0VMRUNUIHByby5vaWQs IHByby5wcm9uYW1lIEZST00iCisgICAgICAgICAgICAgICAgICAgICAgICAgICIgcGdfcHJvYyBw cm8gV0hFUkUgcHJvLnByb25hbWU9JyVzJyIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICBm dW5jX25hbWUpCisgICAgICAgIGZ1bmN0aW9ucyA9IHBnX2N1cnNvci5mZXRjaG9uZSgpCisgICAg ICAgIGNvbm5lY3Rpb24uY2xvc2UoKQorICAgICAgICByZXR1cm4gZnVuY3Rpb25zCisgICAgZXhj ZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YyhmaWxlPXN5cy5zdGRl cnIpCisKKworZGVmIGNyZWF0ZV9mdW5jdGlvbihzZXJ2ZXIsIGRiX25hbWUsIHNjaGVtYV9uYW1l LCBmdW5jX25hbWUpOgorICAgICIiIlRoaXMgZnVuY3Rpb24gYWRkIHRoZSBwcm9jZWR1cmUgdG8g c2NoZW1hIiIiCisgICAgdHJ5OgorICAgICAgICBjb25uZWN0aW9uID0gdXRpbHMuZ2V0X2RiX2Nv bm5lY3Rpb24oZGJfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNlcnZlclsndXNlcm5hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNlcnZlclsnZGJfcGFzc3dvcmQnXSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlclsnaG9zdCddLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyWydwb3J0J10sCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJbJ3NzbG1vZGUnXSkK KyAgICAgICAgcGdfY3Vyc29yID0gY29ubmVjdGlvbi5jdXJzb3IoKQorICAgICAgICBxdWVyeSA9 ICJDUkVBVEUgRlVOQ1RJT04gIiArIHNjaGVtYV9uYW1lICsgIi4iICsgZnVuY19uYW1lICsgXAor ICAgICAgICAgICAgICAgICIoKSIgXAorICAgICAgICAgICAgICAgICIgUkVUVVJOUyBpbnRlZ2Vy IExBTkdVQUdFICdzcWwnIFNUQUJMRSBMRUFLUFJPT0YiIFwKKyAgICAgICAgICAgICAgICAiIFNF Q1VSSVRZIERFRklORVIgQVMgJCQiIFwKKyAgICAgICAgICAgICAgICAiIFNFTEVDVCAxOyAkJDsi CisgICAgICAgIHBnX2N1cnNvci5leGVjdXRlKHF1ZXJ5KQorICAgICAgICBjb25uZWN0aW9uLmNv bW1pdCgpCisgICAgICAgICMgR2V0ICdvaWQnIGZyb20gbmV3bHkgY3JlYXRlZCBmdW5jdGlvbgor ICAgICAgICBwZ19jdXJzb3IuZXhlY3V0ZSgiU0VMRUNUIHByby5vaWQsIHByby5wcm9uYW1lIEZS T00iCisgICAgICAgICAgICAgICAgICAgICAgICAgICIgcGdfcHJvYyBwcm8gV0hFUkUgcHJvLnBy b25hbWU9JyVzJyIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jX25hbWUpCisgICAg ICAgIGZ1bmN0aW9ucyA9IHBnX2N1cnNvci5mZXRjaG9uZSgpCisgICAgICAgIGNvbm5lY3Rpb24u Y2xvc2UoKQorICAgICAgICByZXR1cm4gZnVuY3Rpb25zCisgICAgZXhjZXB0IEV4Y2VwdGlvbjoK KyAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YyhmaWxlPXN5cy5zdGRlcnIpCisKKworZGVmIHZl cmlmeV9wcm9jZWR1cmUoc2VydmVyLCBkYl9uYW1lLCBwcm9jX25hbWUpOgorICAgICIiIlRoaXMg ZnVuY3Rpb24gdmVyaWZpZXMgdGhlIHByb2NlZHVyZSBpbiBkYiIiIgorICAgIGNvbm5lY3Rpb24g PSB1dGlscy5nZXRfZGJfY29ubmVjdGlvbihkYl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJbJ3VzZXJuYW1lJ10sCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlclsnZGJfcGFzc3dvcmQnXSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyWydob3N0J10sCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlclsncG9ydCddLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJbJ3NzbG1vZGUnXSkKKyAg ICBwZ19jdXJzb3IgPSBjb25uZWN0aW9uLmN1cnNvcigpCisgICAgcGdfY3Vyc29yLmV4ZWN1dGUo IlNFTEVDVCBwcm8ub2lkLCBwcm8ucHJvbmFtZSBGUk9NIgorICAgICAgICAgICAgICAgICAgICAg ICIgcGdfcHJvYyBwcm8gV0hFUkUgcHJvLnByb25hbWU9JyVzJyIgJQorICAgICAgICAgICAgICAg ICAgICAgIHByb2NfbmFtZSkKKyAgICBwcm9jcyA9IHBnX2N1cnNvci5mZXRjaG9uZSgpCisgICAg Y29ubmVjdGlvbi5jbG9zZSgpCisgICAgcmV0dXJuIHByb2NzCisKKworZGVmIHNldF91cChvYmop OgorICAgICIiIkNvbW1vbiBzZXQgdXAgZnVuY3Rpb24iIiIKKyAgICBmcm9tIHJlZ3Jlc3Npb24g aW1wb3J0IHBhcmVudF9ub2RlX2RpY3QKKworICAgIG9iai5kYl9uYW1lID0gcGFyZW50X25vZGVf ZGljdFsiZGF0YWJhc2UiXVstMV1bImRiX25hbWUiXQorICAgIHNjaGVtYV9pbmZvID0gcGFyZW50 X25vZGVfZGljdFsic2NoZW1hIl1bLTFdCisgICAgb2JqLnNlcnZlcl9pZCA9IHNjaGVtYV9pbmZv WyJzZXJ2ZXJfaWQiXQorICAgIG9iai5kYl9pZCA9IHNjaGVtYV9pbmZvWyJkYl9pZCJdCisgICAg b2JqLnByb3JldHR5cGVuYW1lID0gImV2ZW50X3RyaWdnZXIvdHJpZ2dlciIKKyAgICBzZXJ2ZXJf Y29uID0gc2VydmVyX3V0aWxzLmNvbm5lY3Rfc2VydmVyKG9iaiwgb2JqLnNlcnZlcl9pZCkKKwor ICAgIGlmIG5vdCBzZXJ2ZXJfY29uWyJpbmZvIl0gPT0gIlNlcnZlciBjb25uZWN0ZWQuIjoKKyAg ICAgICAgcmFpc2UgRXhjZXB0aW9uKCJDb3VsZCBub3QgY29ubmVjdCB0byBzZXJ2ZXIuIikKKyAg ICBpZiAidmVyc2lvbiIgaW4gc2VydmVyX2NvblsiZGF0YSJdOgorICAgICAgICBvYmouc2VydmVy X3ZlcnNpb24gPSBzZXJ2ZXJfY29uWyJkYXRhIl1bInZlcnNpb24iXQorICAgICAgICBpZiBzZXJ2 ZXJfY29uWyJkYXRhIl1bInZlcnNpb24iXSA8IDkwMzAwOgorICAgICAgICAgICAgb2JqLnByb3Jl dHR5cGVuYW1lID0gInRyaWdnZXIiCisgICAgaWYgInR5cGUiIGluIHNlcnZlcl9jb25bImRhdGEi XToKKyAgICAgICAgb2JqLnNlcnZlcl90eXBlID0gc2VydmVyX2NvblsiZGF0YSJdWyJ0eXBlIl0K KworICAgIGRiX2NvbiA9IGRhdGFiYXNlX3V0aWxzLmNvbm5lY3RfZGF0YWJhc2Uob2JqLCB1dGls cy5TRVJWRVJfR1JPVVAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBvYmouc2VydmVyX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgb2JqLmRiX2lkKQorICAgIGlmIG5vdCBkYl9jb25bJ2RhdGEnXVsiY29ubmVjdGVk Il06CisgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ291bGQgbm90IGNvbm5lY3QgdG8gZGF0YWJh c2UuIikKKyAgICBvYmouc2NoZW1hX2lkID0gc2NoZW1hX2luZm9bInNjaGVtYV9pZCJdCisgICAg b2JqLnNjaGVtYV9uYW1lID0gc2NoZW1hX2luZm9bInNjaGVtYV9uYW1lIl0KKyAgICBzY2hlbWFf cmVzcG9uc2UgPSBzY2hlbWFfdXRpbHMudmVyaWZ5X3NjaGVtYXMob2JqLnNlcnZlciwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqLmRiX25hbWUs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iai5z Y2hlbWFfbmFtZSkKKyAgICBpZiBub3Qgc2NoZW1hX3Jlc3BvbnNlOgorICAgICAgICByYWlzZSBF eGNlcHRpb24oIkNvdWxkIG5vdCBmaW5kIHRoZSBzY2hlbWEuIikKKworICAgIHJldHVybiBvYmoK ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvdXRpbHMucHkgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3V0aWxzLnB5CmluZGV4IDAwYTcyZGQuLjdmNmYxOWMgMTAwNjQ0Ci0tLSBhL3dlYi9w Z2FkbWluL2Jyb3dzZXIvdXRpbHMucHkKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci91dGlscy5w eQpAQCAtNTEsNyArNTEsOSBAQCBjbGFzcyBQR0NoaWxkTW9kdWxlKG9iamVjdCk6CiAKICAgICBk ZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgc2VsZi5taW5fdmVy ID0gMAotICAgICAgICBzZWxmLm1heF92ZXIgPSAxMDAwMDAwMDAwCisgICAgICAgIHNlbGYubWF4 X3ZlciA9IDExMDAwMDAwMDAKKyAgICAgICAgc2VsZi5taW5fcHBhc3ZlciA9IDAKKyAgICAgICAg c2VsZi5tYXhfcHBhc3ZlciA9IDExMDAwMDAwMDAKICAgICAgICAgc2VsZi5zZXJ2ZXJfdHlwZSA9 IE5vbmUKICAgICAgICAgc2VsZi5taW5fZ3BkYnZlciA9IDgwMzIzCiAgICAgICAgIHNlbGYubWF4 X2dwZGJ2ZXIgPSAxMDAwMDAwMDAwCkBAIC03Miw2ICs3NCw5IEBAIGNsYXNzIFBHQ2hpbGRNb2R1 bGUob2JqZWN0KToKICAgICAgICAgaWYgc2VsZi5zZXJ2ZXJfdHlwZSBpcyBOb25lIG9yIG1hbmFn ZXIuc2VydmVyX3R5cGUgaW4gc2VsZi5zZXJ2ZXJfdHlwZToKICAgICAgICAgICAgIG1pbl9zZXJ2 ZXJfdmVyc2lvbiA9IHNlbGYubWluX3ZlcgogICAgICAgICAgICAgbWF4X3NlcnZlcl92ZXJzaW9u ID0gc2VsZi5tYXhfdmVyCisgICAgICAgICAgICBpZiBtYW5hZ2VyLnNlcnZlcl90eXBlID09ICdw cGFzJzoKKyAgICAgICAgICAgICAgICBtaW5fc2VydmVyX3ZlcnNpb24gPSBzZWxmLm1pbl9wcGFz dmVyCisgICAgICAgICAgICAgICAgbWF4X3NlcnZlcl92ZXJzaW9uID0gc2VsZi5tYXhfcHBhc3Zl cgogICAgICAgICAgICAgaWYgbWFuYWdlci5zZXJ2ZXJfdHlwZSA9PSAnZ3BkYic6CiAgICAgICAg ICAgICAgICAgbWluX3NlcnZlcl92ZXJzaW9uID0gc2VsZi5taW5fZ3BkYnZlcgogICAgICAgICAg ICAgICAgIG1heF9zZXJ2ZXJfdmVyc2lvbiA9IHNlbGYubWF4X2dwZGJ2ZXIKZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL3Rvb2xzL2RlYnVnZ2VyL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vdG9v bHMvZGVidWdnZXIvX19pbml0X18ucHkKaW5kZXggYzBlODlmNS4uMWJmNzk3YyAxMDA2NDQKLS0t IGEvd2ViL3BnYWRtaW4vdG9vbHMvZGVidWdnZXIvX19pbml0X18ucHkKKysrIGIvd2ViL3BnYWRt aW4vdG9vbHMvZGVidWdnZXIvX19pbml0X18ucHkKQEAgLTM2NSw4ICszNjUsMTEgQEAgZGVmIGlu aXRfZnVuY3Rpb24obm9kZV90eXBlLCBzaWQsIGRpZCwgc2NpZCwgZmlkLCB0cmlkPU5vbmUpOgog CiAgICAgIyBDaGVjayBzZXJ2ZXIgdHlwZSBpcyBwcGFzIG9yIG5vdAogICAgIHBwYXNfc2VydmVy ID0gRmFsc2UKKyAgICBpc19wcm9jX3N1cHBvcnRlZCA9IEZhbHNlCiAgICAgaWYgc2VydmVyX3R5 cGUgPT0gJ3BwYXMnOgogICAgICAgICBwcGFzX3NlcnZlciA9IFRydWUKKyAgICBlbHNlOgorICAg ICAgICBpc19wcm9jX3N1cHBvcnRlZCA9IFRydWUgaWYgbWFuYWdlci52ZXJzaW9uID49IDExMDAw MCBlbHNlIEZhbHNlCiAKICAgICAjIFNldCB0aGUgdGVtcGxhdGUgcGF0aCByZXF1aXJlZCB0byBy ZWFkIHRoZSBzcWwgZmlsZXMKICAgICB0ZW1wbGF0ZV9wYXRoID0gJ2RlYnVnZ2VyL3NxbCcKQEAg LTM5NSw3ICszOTgsMTAgQEAgZGVmIGluaXRfZnVuY3Rpb24obm9kZV90eXBlLCBzaWQsIGRpZCwg c2NpZCwgZmlkLCB0cmlkPU5vbmUpOgogICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgKICAgICAg ICAgIi8iLmpvaW4oW3RlbXBsYXRlX3BhdGgsICdnZXRfZnVuY3Rpb25fZGVidWdfaW5mby5zcWwn XSksCiAgICAgICAgIGlzX3BwYXNfZGF0YWJhc2U9cHBhc19zZXJ2ZXIsCi0gICAgICAgIGhhc0Zl YXR1cmVGdW5jdGlvbkRlZmF1bHRzPVRydWUsIGZpZD1maWQKKyAgICAgICAgaGFzRmVhdHVyZUZ1 bmN0aW9uRGVmYXVsdHM9VHJ1ZSwKKyAgICAgICAgZmlkPWZpZCwKKyAgICAgICAgaXNfcHJvY19z dXBwb3J0ZWQ9aXNfcHJvY19zdXBwb3J0ZWQKKwogICAgICkKICAgICBzdGF0dXMsIHJfc2V0ID0g Y29ubi5leGVjdXRlX2RpY3Qoc3FsKQogICAgIGlmIG5vdCBzdGF0dXM6CkBAIC01MDksNiArNTE1 LDcgQEAgZGVmIGluaXRfZnVuY3Rpb24obm9kZV90eXBlLCBzaWQsIGRpZCwgc2NpZCwgZmlkLCB0 cmlkPU5vbmUpOgogICAgICAgICAnb2lkJzogZmlkLAogICAgICAgICAnbmFtZSc6IHJfc2V0Wydy b3dzJ11bMF1bJ25hbWUnXSwKICAgICAgICAgJ2lzX2Z1bmMnOiByX3NldFsncm93cyddWzBdWydp c2Z1bmMnXSwKKyAgICAgICAgJ2lzX3BwYXNfZGF0YWJhc2UnOiBwcGFzX3NlcnZlciwKICAgICAg ICAgJ2lzX2NhbGxhYmxlJzogRmFsc2UsCiAgICAgICAgICdzY2hlbWEnOiByX3NldFsncm93cydd WzBdWydzY2hlbWFuYW1lJ10sCiAgICAgICAgICdsYW5ndWFnZSc6IHJfc2V0Wydyb3dzJ11bMF1b J2xhbm5hbWUnXSwKQEAgLTc2NSw2ICs3NzIsNyBAQCBkZWYgaW5pdGlhbGl6ZV90YXJnZXQoZGVi dWdfdHlwZSwgc2lkLCBkaWQsIHNjaWQsIGZ1bmNfaWQsIHRyaV9pZD1Ob25lKToKICAgICAgICAg J29pZCc6IGZ1bmNfZGF0YVsnb2lkJ10sCiAgICAgICAgICduYW1lJzogZnVuY19kYXRhWyduYW1l J10sCiAgICAgICAgICdpc19mdW5jJzogZnVuY19kYXRhWydpc19mdW5jJ10sCisgICAgICAgICdp c19wcGFzX2RhdGFiYXNlJzogZnVuY19kYXRhWydpc19wcGFzX2RhdGFiYXNlJ10sCiAgICAgICAg ICdpc19jYWxsYWJsZSc6IGZ1bmNfZGF0YVsnaXNfY2FsbGFibGUnXSwKICAgICAgICAgJ3NjaGVt YSc6IGZ1bmNfZGF0YVsnc2NoZW1hJ10sCiAgICAgICAgICdsYW5ndWFnZSc6IGZ1bmNfZGF0YVsn bGFuZ3VhZ2UnXSwKQEAgLTEwNjIsNyArMTA3MCw4IEBAIGRlZiBzdGFydF9kZWJ1Z2dlcl9saXN0 ZW5lcih0cmFuc19pZCk6CiAgICAgICAgICAgICAgICAgICAgIGZ1bmNfbmFtZT1mdW5jX25hbWUs CiAgICAgICAgICAgICAgICAgICAgIGlzX2Z1bmM9c2Vzc2lvbl9mdW5jdGlvbl9kYXRhWydpc19m dW5jJ10sCiAgICAgICAgICAgICAgICAgICAgIHJldF90eXBlPXNlc3Npb25fZnVuY3Rpb25fZGF0 YVsncmV0dXJuX3R5cGUnXSwKLSAgICAgICAgICAgICAgICAgICAgZGF0YT1zZXNzaW9uX2Z1bmN0 aW9uX2RhdGFbJ2FyZ3NfdmFsdWUnXQorICAgICAgICAgICAgICAgICAgICBkYXRhPXNlc3Npb25f ZnVuY3Rpb25fZGF0YVsnYXJnc192YWx1ZSddLAorICAgICAgICAgICAgICAgICAgICBpc19wcGFz X2RhdGFiYXNlPXNlc3Npb25fZnVuY3Rpb25fZGF0YVsnaXNfcHBhc19kYXRhYmFzZSddCiAgICAg ICAgICAgICAgICAgKQogCiAgICAgICAgICAgICBzdGF0dXMsIHJlc3VsdCA9IGNvbm4uZXhlY3V0 ZV9hc3luYyhzdHJfcXVlcnkpCkBAIC0xOTQ2LDggKzE5NTUsOSBAQCBkZWYgcG9sbF9lbmRfZXhl Y3V0aW9uX3Jlc3VsdCh0cmFuc19pZCk6CiAgICAgICAgIHN0YXR1cywgcmVzdWx0ID0gY29ubi5w b2xsKCkKICAgICAgICAgc2Vzc2lvbl9mdW5jdGlvbl9kYXRhID0gc2Vzc2lvblsnZnVuY3Rpb25E YXRhJ11bc3RyKHRyYW5zX2lkKV0KICAgICAgICAgaWYgc3RhdHVzID09IEFTWU5DX09LIGFuZCBc Ci0gICAgICAgICAgICAgICAgbm90IHNlc3Npb25fZnVuY3Rpb25fZGF0YVsnaXNfZnVuYyddIGFu ZCBcCi0gICAgICAgICAgICAgICAgc2Vzc2lvbl9mdW5jdGlvbl9kYXRhWydsYW5ndWFnZSddID09 ICdlZGJzcGwnOgorICAgICAgICAgICAgbm90IHNlc3Npb25fZnVuY3Rpb25fZGF0YVsnaXNfZnVu YyddIGFuZFwKKyAgICAgICAgICAgIChzZXNzaW9uX2Z1bmN0aW9uX2RhdGFbJ2xhbmd1YWdlJ10g PT0gJ2VkYnNwbCcgb3IKKyAgICAgICAgICAgICAgICBzZXNzaW9uX2Z1bmN0aW9uX2RhdGFbJ2xh bmd1YWdlJ10gPT0gJ3BscGdzcWwnKToKICAgICAgICAgICAgIHN0YXR1cyA9ICdTdWNjZXNzJwog ICAgICAgICAgICAgYWRkaXRpb25hbF9tc2dzID0gY29ubi5tZXNzYWdlcygpCiAgICAgICAgICAg ICBpZiBsZW4oYWRkaXRpb25hbF9tc2dzKSA+IDA6CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90 b29scy9kZWJ1Z2dlci90ZW1wbGF0ZXMvZGVidWdnZXIvc3FsL2V4ZWN1dGVfcGxwZ3NxbC5zcWwg Yi93ZWIvcGdhZG1pbi90b29scy9kZWJ1Z2dlci90ZW1wbGF0ZXMvZGVidWdnZXIvc3FsL2V4ZWN1 dGVfcGxwZ3NxbC5zcWwKaW5kZXggYjgyNTc4Yi4uMTM0YTE3ZiAxMDA2NDQKLS0tIGEvd2ViL3Bn YWRtaW4vdG9vbHMvZGVidWdnZXIvdGVtcGxhdGVzL2RlYnVnZ2VyL3NxbC9leGVjdXRlX3BscGdz cWwuc3FsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2RlYnVnZ2VyL3RlbXBsYXRlcy9kZWJ1Z2dl ci9zcWwvZXhlY3V0ZV9wbHBnc3FsLnNxbApAQCAtMSw2ICsxLDggQEAKIHsjIyMgQ3JlYXRlIGV4 ZWN1dGVyIGZ1bmN0aW9uIGZvciBwbHBnc3FsIGZ1bmN0aW9uIGRlYnVnZ2luZyAjIyN9Ci17JSBp ZiBub3QgaXNfZnVuYyAlfQoreyUgaWYgaXNfcHBhc19kYXRhYmFzZSBhbmQgbm90IGlzX2Z1bmMg JX0KICAgICBFWEVDIHt7IGZ1bmNfbmFtZSB9fSAoCit7JSBlbGlmIG5vdCBpc19mdW5jICV9Cisg ICAgQ0FMTCB7eyBmdW5jX25hbWUgfX0gKAogeyUgZWxpZiByZXRfdHlwZSA9PSAncmVjb3JkJyAl fQogICAgIFNFTEVDVCB7eyBmdW5jX25hbWUgfX0gKAogeyUgZWxzZSAlfQpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vdG9vbHMvZGVidWdnZXIvdGVtcGxhdGVzL2RlYnVnZ2VyL3NxbC9nZXRfZnVu Y3Rpb25fZGVidWdfaW5mby5zcWwgYi93ZWIvcGdhZG1pbi90b29scy9kZWJ1Z2dlci90ZW1wbGF0 ZXMvZGVidWdnZXIvc3FsL2dldF9mdW5jdGlvbl9kZWJ1Z19pbmZvLnNxbAppbmRleCA3MDFmNWVl Li4yODA3Y2FkIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9kZWJ1Z2dlci90ZW1wbGF0 ZXMvZGVidWdnZXIvc3FsL2dldF9mdW5jdGlvbl9kZWJ1Z19pbmZvLnNxbAorKysgYi93ZWIvcGdh ZG1pbi90b29scy9kZWJ1Z2dlci90ZW1wbGF0ZXMvZGVidWdnZXIvc3FsL2dldF9mdW5jdGlvbl9k ZWJ1Z19pbmZvLnNxbApAQCAtNDEsNyArNDEsMTEgQEAgU0VMRUNUCiAgICAgICAgIDAgQVMgcGtn Y29uc29pZCwKICAgICAgICAgbi5vaWQgICAgIEFTIHNjaGVtYSwKICAgICAgICAgbi5uc3BuYW1l IEFTIHNjaGVtYW5hbWUsCi0gICAgICAgIHRydWUgQVMgaXNmdW5jLAorICAgICAgICB7JSBpZiBp c19wcm9jX3N1cHBvcnRlZCAlfQorICAgICAgICBDQVNFIFdIRU4gcC5wcm9raW5kIGluICgnZics ICd3JykgVEhFTiBUUlVFIEVMU0UgRkFMU0UgRU5EIEFTIGlzZnVuYywKKyAgICAgICAgeyUgZWxz ZSAlfQorICAgICAgICBUUlVFIEFTIGlzZnVuYywKKyAgICAgICAgeyUgZW5kaWYgJX0KICAgICB7 JWVuZGlmJX0KICAgICBwZ19jYXRhbG9nLnBnX2dldF9mdW5jdGlvbl9pZGVudGl0eV9hcmd1bWVu dHMocC5vaWQpIEFTIHNpZ25hdHVyZSwKIApAQCAtNjEsNCArNjUsNCBAQCBGUk9NCiB7JSBlbmRp ZiAlfQogeyUgaWYgZmlkICV9CiBXSEVSRSBwLm9pZCA9IHt7ZmlkfX06Om9pZDsKLXslIGVuZGlm ICV9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQoreyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL3V0aWxzL3ZlcnNpb25lZF90ZW1wbGF0ZV9sb2FkZXIucHkgYi93ZWIvcGdh ZG1pbi91dGlscy92ZXJzaW9uZWRfdGVtcGxhdGVfbG9hZGVyLnB5CmluZGV4IDM0ODE5NzguLmRh ZGFlYmEgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3V0aWxzL3ZlcnNpb25lZF90ZW1wbGF0ZV9s b2FkZXIucHkKKysrIGIvd2ViL3BnYWRtaW4vdXRpbHMvdmVyc2lvbmVkX3RlbXBsYXRlX2xvYWRl ci5weQpAQCAtNzUsNyArNzUsOCBAQCBkZWYgZ2V0X3ZlcnNpb25fbWFwcGluZyh0ZW1wbGF0ZSk6 CiAgICAgICAgICAgICB7J25hbWUnOiAiZGVmYXVsdCIsICdudW1iZXInOiAwfQogICAgICAgICAp CiAKLSAgICByZXR1cm4gKHsnbmFtZSc6ICIxMF9wbHVzIiwgJ251bWJlcic6IDEwMDAwMH0sCisg ICAgcmV0dXJuICh7J25hbWUnOiAiMTFfcGx1cyIsICdudW1iZXInOiAxMTAwMDB9LAorICAgICAg ICAgICAgeyduYW1lJzogIjEwX3BsdXMiLCAnbnVtYmVyJzogMTAwMDAwfSwKICAgICAgICAgICAg IHsnbmFtZSc6ICI5LjZfcGx1cyIsICdudW1iZXInOiA5MDYwMH0sCiAgICAgICAgICAgICB7J25h bWUnOiAiOS41X3BsdXMiLCAnbnVtYmVyJzogOTA1MDB9LAogICAgICAgICAgICAgeyduYW1lJzog IjkuNF9wbHVzIiwgJ251bWJlcic6IDkwNDAwfSwK --0000000000005165ed056e7e0e5e--