Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dDXBz-0004gd-5J for pgadmin-hackers@arkaria.postgresql.org; Wed, 24 May 2017 14:23:15 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1dDXBy-0006dV-KG for pgadmin-hackers@arkaria.postgresql.org; Wed, 24 May 2017 14:23:14 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1dDXBX-0006E1-6i for pgadmin-hackers@postgresql.org; Wed, 24 May 2017 14:22:47 +0000 Received: from mail-vk0-x22b.google.com ([2607:f8b0:400c:c05::22b]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1dDXBP-0007rW-G4 for pgadmin-hackers@postgresql.org; Wed, 24 May 2017 14:22:45 +0000 Received: by mail-vk0-x22b.google.com with SMTP id x71so75986288vkd.0 for ; Wed, 24 May 2017 07:22:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pivotal-io.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=JfWZF1p5Cu83wM81m72sh/DDxrnDH0grjVcMraIULuk=; b=UsIAMcqSnDoVp6c0ctwYP7GobfYfIvOe5/ITWif9ZDg2O4oVgz4B7pVbT9IqHT3IVe UQxR8i8RT4KgLDcsQkEG8iWUVsygXeqcEjrsjS2v3/vlPkWXbYn/OBAzjuTuA/aPrihH JfHQnUxYdVwLtm9XuqqWsPJCLcDgUo1kXbfRHu/dteAc1holFFTnZ/rNqsqxJW72NJPz k9eZlWWghJrGj4W+VY2wRLxLuGC5owZECbe1e3B5I2s9/3t8Te+OzfLX5FBQrg6z010K Uk0vWySk02xFbDhRnLZVbRbUxC34HBg31GB1L1oD21IH6LSz6Vj6O8LrIJYyKCNzeoyO 0+3Q== 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=JfWZF1p5Cu83wM81m72sh/DDxrnDH0grjVcMraIULuk=; b=JnzzCRbqJAljiILFAuVXo9fkeMwaBG9FqFnBcVsZrkwrW4nQuGacAkBl1HVcawNtb2 aL5q66X04TRrgf+O/ZYY70w+/nfdIT4vcSK4o4mBq+mGlZyGol+PBioZpSVWoDnGBSpG zGKqxifsobfPw5owUJ26NdJzkmIJQfeuZAFB6HfziOkbE2lSumRNE7VB6sxu/TWghvUa h094ciyDIoHlt0NsXPiCpA57dldx0i7t5v+/RJ1DdhooO9CNU05Vt2zV0mH2kdZcbFp0 cSxnolDwIYTBx8gJ7RerjAmnG36MRLr7mSZ/UVkwO0WzDHgXyo32qCSkJWlYdZh/0/r2 RdKQ== X-Gm-Message-State: AODbwcAI6GlyPPrOnTh5rU35Bqfsj0JewuLPzR3DTLH2iJHahOjsoWrf WZrlA7kf4okFZ+VmDMRGDuprQZF6KrhhZtI= X-Received: by 10.31.15.12 with SMTP id 12mr3970629vkp.58.1495635757438; Wed, 24 May 2017 07:22:37 -0700 (PDT) MIME-Version: 1.0 Received: by 10.103.47.13 with HTTP; Wed, 24 May 2017 07:22:36 -0700 (PDT) In-Reply-To: References: From: Joao Pedro De Almeida Pereira Date: Wed, 24 May 2017 10:22:36 -0400 Message-ID: Subject: Re: [pgAdmin4] [PATCH] History Tab rewrite in React To: Matthew Kleiman Cc: Dave Page , Murtuza Zabuawala , pgadmin-hackers Content-Type: multipart/mixed; boundary="001a1143581409af00055045d62d" X-Pg-Spam-Score: -2.6 (--) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgadmin-hackers Precedence: bulk Sender: pgadmin-hackers-owner@postgresql.org --001a1143581409af00055045d62d Content-Type: multipart/alternative; boundary="001a1143581409aefb055045d62b" --001a1143581409aefb055045d62b Content-Type: text/plain; charset="UTF-8" Hi Hackers! Please find attached the two patches, now including a new grunt task to run the tests only once that can be used in CI. For development, use grunt test, for ci or to run tests only once, use grunt test-ci. This is documented in the README file. Also note, these patches were generated using git diff as per https://www.pgadmin.org/docs/pgadmin4/dev/submitting_patches.html. Sorry for any inconvenience from generating a patch in an alternate manner earlier. Thanks, Joao & Matt On Wed, May 24, 2017 at 9:36 AM, Matthew Kleiman wrote: > Hi Dave, > > This one is our bad! We didn't create a grunt task to run the tests only > once, as you would in CI. grunt tests currently runs the tests and > continues to watch for changes, running the tests again each time the > source code is modified. We will create a task that is suitable to run in > CI. > > In the meantime, if you have any free time during the day today and would > like to schedule a sync call with us, that would help us to tighten the > feedback loop. > > Thanks, > Joao & Matt > > On Tue, May 23, 2017 at 4:44 PM, Dave Page wrote: > >> On Tue, May 23, 2017 at 12:12 PM, Joao Pedro De Almeida Pereira >> wrote: >> > Okay >> > >> > Can you try removing web/node_modules and web/yarn.lock, and running >> > $ yarn install >> > $ grunt tests >> > >> > We think this might be due to a bad version of phantomjs-prebuilt. >> > >> > If that still fails, can you try running grunt as "yarn run grunt >> tests"? >> >> I'm on a different machine now, and here grunt just seems to never >> exit when it's doing anything. For example, I ran this a few minutes >> ago, it finished in seconds and has been sitting here ever since: >> >> (pgadmin4)snake:web dpage$ grunt tests >> Running "eslint:target" (eslint) task >> >> Running "karma:unit" (karma) task >> >> webpack: Compiled successfully. >> webpack: Compiling... >> webpack: wait until bundle finished: >> webpack: wait until bundle finished: >> webpack: wait until bundle finished: >> webpack: wait until bundle finished: >> webpack: wait until bundle finished: >> webpack: wait until bundle finished: >> webpack: wait until bundle finished: >> webpack: wait until bundle finished: >> webpack: wait until bundle finished: >> webpack: wait until bundle finished: >> webpack: wait until bundle finished: >> webpack: wait until bundle finished: >> (node:4902) DeprecationWarning: loaderUtils.parseQuery() received a >> non-string value which can be problematic, see >> https://github.com/webpack/loader-utils/issues/56 >> parseQuery() will be replaced with getOptions() in the next major >> version of loader-utils. >> 23 05 2017 16:41:54.549:WARN [karma]: No captured browser, open >> http://localhost:9876/ >> >> webpack: Compiled successfully. >> PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 87 of 88 (skipped 1) >> SUCCESS (1.353 secs / 1.328 secs) >> >> I'm quite unimpressed with it so far :-( >> >> -- >> Dave Page >> Blog: http://pgsnake.blogspot.com >> Twitter: @pgsnake >> >> EnterpriseDB UK: http://www.enterprisedb.com >> The Enterprise PostgreSQL Company >> > > --001a1143581409aefb055045d62b Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Hackers!

Please find attached the tw= o patches, now including a new grunt task to run the tests only once that c= an be used in CI.=C2=A0 For development, use grunt test, for ci or to run tests only once, use grunt test-ci.=C2=A0 This is documented in= the README file.

Also note, these patches were ge= nerated using git diff as per=C2=A0https://www.pgadmin.org/docs/pgadmin4= /dev/submitting_patches.html. Sorry for any inconvenience from generati= ng a patch in an alternate manner earlier.

Thanks,=
Joao & Matt

On Wed, May 24, 2017 at 9:36 AM, Matthew Kleiman <m= kleiman@pivotal.io> wrote:
=
Hi Dave,

This one is our bad! We didn&#= 39;t create a grunt task to run the tests only once, as you would in CI. gr= unt tests currently runs the tests and continues to watch for changes, runn= ing the tests again each time the source code is modified. We will create a= task that is suitable to run in CI.

In the meanti= me, if you have any free time during the day today and would like to schedu= le a sync call with us, that would help us to tighten the feedback loop.

Thanks,
Joao & Matt

On Tue, May 23, 2017 at 4:44 PM, Dave Page <dpage@pgadmin= .org> wrote:
On Tue, = May 23, 2017 at 12:12 PM, Joao Pedro De Almeida Pereira
<jdeal= meidapereira@pivotal.io> wrote:
> Okay
>
> Can you try removing web/node_modules and web/yarn.lock, and running > $ yarn install
> $ grunt tests
>
> We think this might be due to a bad version of phantomjs-prebuilt.
>
> If that still fails, can you try running grunt as "yarn run grunt= tests"?

I'm on a different machine now, and here grunt just seems to nev= er
exit when it's doing anything. For example, I ran this a few minutes
ago, it finished in seconds and has been sitting here ever since:

(pgadmin4)snake:web dpage$ grunt tests
Running "eslint:target" (eslint) task

Running "karma:unit" (karma) task

webpack: Compiled successfully.
webpack: Compiling...
webpack: wait until bundle finished:
webpack: wait until bundle finished:
webpack: wait until bundle finished:
webpack: wait until bundle finished:
webpack: wait until bundle finished:
webpack: wait until bundle finished:
webpack: wait until bundle finished:
webpack: wait until bundle finished:
webpack: wait until bundle finished:
webpack: wait until bundle finished:
webpack: wait until bundle finished:
webpack: wait until bundle finished:
(node:4902) DeprecationWarning: loaderUtils.parseQuery() received a<= br> non-string value which can be problematic, see
https://github.com/webpack/loader-utils/issues= /56
parseQuery() will be replaced with getOptions() in the next major
version of loader-utils.
23 05 2017 16:41:54.549:WARN [karma]: No captured browser, open
http://localhost:9876/

webpack: Compiled successfully.
PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 87 of 88 (skipped 1)
SUCCESS (1.353 secs / 1.328 secs)

I'm quite unimpressed with it so far :-(

--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake

EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company


--001a1143581409aefb055045d62b-- --001a1143581409af00055045d62d Content-Type: text/plain; charset="US-ASCII"; name="0001-Bring-React-into-the-codebase.diff" Content-Disposition: attachment; filename="0001-Bring-React-into-the-codebase.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_j332xcax0 ZGlmZiAtLWdpdCBhL3dlYi8uZXNsaW50cmMuanMgYi93ZWIvLmVzbGludHJj LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi5jNjA1 NjlkYgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi8uZXNsaW50cmMuanMKQEAg LTAsMCArMSw0NSBAQAorbW9kdWxlLmV4cG9ydHMgPSB7CisgICdlbnYnOiB7 CisgICAgJ2Jyb3dzZXInOiB0cnVlLAorICAgICdlczYnOiB0cnVlLAorICAg ICdhbWQnOiB0cnVlLAorICAgICdqYXNtaW5lJzogdHJ1ZSwKKyAgfSwKKyAg J2V4dGVuZHMnOiAnZXNsaW50OnJlY29tbWVuZGVkJywKKyAgJ3BhcnNlck9w dGlvbnMnOiB7CisgICAgJ2VjbWFGZWF0dXJlcyc6IHsKKyAgICAgICdleHBl cmltZW50YWxPYmplY3RSZXN0U3ByZWFkJzogdHJ1ZSwKKyAgICAgICdqc3gn OiB0cnVlCisgICAgfSwKKyAgICAnc291cmNlVHlwZSc6ICdtb2R1bGUnCisg IH0sCisgICdwbHVnaW5zJzogWworICAgICdyZWFjdCcKKyAgXSwKKyAgJ2ds b2JhbHMnOiB7CisgICAgJ18nOiB0cnVlLAorICAgICdtb2R1bGUnOiB0cnVl LAorICB9LAorICAncnVsZXMnOiB7CisgICAgJ2luZGVudCc6IFsKKyAgICAg ICdlcnJvcicsCisgICAgICAyCisgICAgXSwKKyAgICAnbGluZWJyZWFrLXN0 eWxlJzogWworICAgICAgJ2Vycm9yJywKKyAgICAgICd1bml4JworICAgIF0s CisgICAgJ3F1b3Rlcyc6IFsKKyAgICAgICdlcnJvcicsCisgICAgICAnc2lu Z2xlJworICAgIF0sCisgICAgJ3NlbWknOiBbCisgICAgICAnZXJyb3InLAor ICAgICAgJ2Fsd2F5cycKKyAgICBdLAorICAgICdjb21tYS1kYW5nbGUnOiBb CisgICAgICAnZXJyb3InLAorICAgICAgJ2Fsd2F5cy1tdWx0aWxpbmUnCisg ICAgXQorICB9Cit9OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm ZiAtLWdpdCBhL3dlYi9HcnVudGZpbGUuanMgYi93ZWIvR3J1bnRmaWxlLmpz Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi43OWI4Mjc2 ZAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9HcnVudGZpbGUuanMKQEAgLTAs MCArMSw2NyBAQAorY29uc3Qgd2VicGFja0NvbmZpZyA9IHJlcXVpcmUoJy4v d2VicGFjay5jb25maWcuanMnKTsKKwordmFyIHNyY0ZpbGVzID0gWworICAn cGdhZG1pbi9zdGF0aWMvanN4LyouanN4JywKKyAgJ3BnYWRtaW4vc3RhdGlj L2pzL3NlbGVjdGlvbi8qLmpzJywKKyAgJ3JlZ3Jlc3Npb24vamF2YXNjcmlw dC8qKi5qcycsCisgICdyZWdyZXNzaW9uL2phdmFzY3JpcHQvKiovKi5qcycs CisgICcqLmpzJywKK107CisKK21vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24g KGdydW50KSB7CisgIGdydW50LmluaXRDb25maWcoeworICAgIHdhdGNoOiB7 CisgICAgICBmaWxlczogc3JjRmlsZXMsCisgICAgICB0YXNrczogWydlc2xp bnQnLCAnd2VicGFjayddLAorICAgIH0sCisgICAgYmFiZWw6IHsKKyAgICAg IG9wdGlvbnM6IHsKKyAgICAgICAgc291cmNlTWFwOiB0cnVlLAorICAgICAg ICBwcmVzZXRzOiBbJ3JlYWN0JywgJ2VzMjAxNSddLAorICAgICAgfSwKKyAg ICAgIGRpc3Q6IHsKKyAgICAgICAgZmlsZXM6IHsKKyAgICAgICAgICAncGdh ZG1pbi9zdGF0aWMvanMvZ2VuZXJhdGVkL3JlYWN0Q29tcG9uZW50cy5qcyc6 ICdwZ2FkbWluL3N0YXRpYy9qc3gvY29tcG9uZW50cy5qc3gnLAorICAgICAg ICB9LAorICAgICAgfSwKKyAgICB9LAorICAgIHdlYnBhY2s6IHsKKyAgICAg IGFwcDogd2VicGFja0NvbmZpZywKKyAgICB9LAorICAgIGVzbGludDogewor ICAgICAgdGFyZ2V0OiBzcmNGaWxlcywKKyAgICB9LAorICAgIGthcm1hOiB7 CisgICAgICBkZXY6IHsKKyAgICAgICAgY29uZmlnRmlsZTogJ2thcm1hLmNv bmYuanMnLAorICAgICAgfSwKKyAgICAgIGNpOiB7CisgICAgICAgIGNvbmZp Z0ZpbGU6ICdrYXJtYS5jb25mLmpzJywKKyAgICAgICAgc2luZ2xlUnVuOiB0 cnVlLAorICAgICAgfSwKKyAgICB9LAorICAgIHVnbGlmeTogeworICAgICAg bXlfdGFyZ2V0OiB7CisgICAgICAgIGZpbGVzOiBbeworICAgICAgICAgIGV4 cGFuZDogdHJ1ZSwKKyAgICAgICAgICBjd2Q6ICdwZ2FkbWluL3N0YXRpYy9q cy9nZW5lcmF0ZWQnLAorICAgICAgICAgIHNyYzogJyoqLyouanMnLAorICAg ICAgICAgIGRlc3Q6ICdwZ2FkbWluL3N0YXRpYy9qcy9nZW5lcmF0ZWQnLAor ICAgICAgICB9XSwKKyAgICAgIH0sCisgICAgfSwKKyAgfSk7CisKKyAgZ3J1 bnQubG9hZE5wbVRhc2tzKCdncnVudC1jb250cmliLXdhdGNoJyk7CisgIGdy dW50LmxvYWROcG1UYXNrcygnZ3J1bnQtd2VicGFjaycpOworICBncnVudC5s b2FkTnBtVGFza3MoJ2dydW50LWVzbGludCcpOworICBncnVudC5sb2FkTnBt VGFza3MoJ2dydW50LWthcm1hJyk7CisgIGdydW50LmxvYWROcG1UYXNrcygn Z3J1bnQtY29udHJpYi11Z2xpZnknKTsKKworICBncnVudC5yZWdpc3RlclRh c2soJ3Rlc3QnLCBbJ2VzbGludCcsICdrYXJtYTpkZXYnXSk7CisgIGdydW50 LnJlZ2lzdGVyVGFzaygndGVzdC1jaScsIFsnZXNsaW50JywgJ2thcm1hOmNp J10pOworCisgIGdydW50LnJlZ2lzdGVyVGFzaygnYnVuZGxlJywgWydlc2xp bnQnLCAnd2VicGFjayddKTsKKyAgZ3J1bnQucmVnaXN0ZXJUYXNrKCdkZWZh dWx0JywgWydidW5kbGUnLCAnd2F0Y2gnXSk7CisgIGdydW50LnJlZ2lzdGVy VGFzaygnbWluaWZ5JywgWydidW5kbGUnLCAndWdsaWZ5J10pOworfTsKZGlm ZiAtLWdpdCBhL3dlYi9rYXJtYS5jb25mLmpzIGIvd2ViL2thcm1hLmNvbmYu anMKaW5kZXggOTU2MTNmNzcuLjdmYTUxYjUwIDEwMDY0NAotLS0gYS93ZWIv a2FybWEuY29uZi5qcworKysgYi93ZWIva2FybWEuY29uZi5qcwpAQCAtMSw3 NSArMSwzNCBAQAotLy8gS2FybWEgY29uZmlndXJhdGlvbgotLy8gR2VuZXJh dGVkIG9uIFdlZCBNYXIgMDEgMjAxNyAxNDoxOToyOCBHTVQtMDUwMCAoRVNU KQorY29uc3Qgd2VicGFja0NvbmZpZyA9IHJlcXVpcmUoJy4vd2VicGFjay50 ZXN0LmNvbmZpZy5qcycpOwogCi1tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9u KGNvbmZpZykgeworbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoY29uZmln KSB7CiAgIGNvbmZpZy5zZXQoewotCi0gICAgLy8gYmFzZSBwYXRoIHRoYXQg d2lsbCBiZSB1c2VkIHRvIHJlc29sdmUgYWxsIHBhdHRlcm5zIChlZy4gZmls ZXMsIGV4Y2x1ZGUpCi0gICAgYmFzZVBhdGg6ICcnLAotCi0KLSAgICAvLyBm cmFtZXdvcmtzIHRvIHVzZQotICAgIC8vIGF2YWlsYWJsZSBmcmFtZXdvcmtz OiBodHRwczovL25wbWpzLm9yZy9icm93c2Uva2V5d29yZC9rYXJtYS1hZGFw dGVyCi0gICAgZnJhbWV3b3JrczogWydqYXNtaW5lJywgJ3JlcXVpcmVqcydd LAotCi0KLSAgICAvLyBsaXN0IG9mIGZpbGVzIC8gcGF0dGVybnMgdG8gbG9h ZCBpbiB0aGUgYnJvd3NlcgotICAgIGZpbGVzOiBbCi0gICAgICAncmVncmVz c2lvbi9qYXZhc2NyaXB0L3Rlc3QtbWFpbi5qcycsCi0gICAgICB7cGF0dGVy bjogJ3JlZ3Jlc3Npb24vamF2YXNjcmlwdC8qKi8qLmpzJywgaW5jbHVkZWQ6 IGZhbHNlfSwKLSAgICAgIHtwYXR0ZXJuOiAncGdhZG1pbi9zdGF0aWMvdmVu ZG9yLyoqLyouanMnLCBpbmNsdWRlZDogZmFsc2V9LAotICAgICAge3BhdHRl cm46ICdwZ2FkbWluL3N0YXRpYy9qcy8qKi8qLmpzJywgaW5jbHVkZWQ6IGZh bHNlfQorICAgIGZyYW1ld29ya3M6IFsnamFzbWluZSddLAorICAgIHBsdWdp bnM6IFsKKyAgICAgICdrYXJtYS13ZWJwYWNrJywKKyAgICAgICdrYXJtYS1w aGFudG9tanMtbGF1bmNoZXInLAorICAgICAgJ2thcm1hLWphc21pbmUnLAor ICAgICAgJ2thcm1hLWphc21pbmUtaHRtbC1yZXBvcnRlcicsCiAgICAgXSwK LQotCi0gICAgLy8gbGlzdCBvZiBmaWxlcyB0byBleGNsdWRlCi0gICAgZXhj bHVkZTogWwotICAgICAgJ3BnYWRtaW4vc3RhdGljL2pzL3BnYWRtaW4uanMn LAotICAgICAgJ3BnYWRtaW4vc3RhdGljL3ZlbmRvci8qKi8qW1R0XWVzdC5q cycsCi0gICAgICAncGdhZG1pbi9zdGF0aWMvdmVuZG9yLyoqLypbU3NdcGVj LmpzJworICAgIGZpbGVzOiBbCisgICAgICB7cGF0dGVybjogJ3BnYWRtaW4v c3RhdGljLyoqLyouanMnLCBpbmNsdWRlZDogZmFsc2V9LAorICAgICAgJ3Jl Z3Jlc3Npb24vamF2YXNjcmlwdC8qKi8qLmpzeCcsCisgICAgICAncmVncmVz c2lvbi9qYXZhc2NyaXB0LyoqLyouanMnLAogICAgIF0sCi0KLQotICAgIC8v IHByZXByb2Nlc3MgbWF0Y2hpbmcgZmlsZXMgYmVmb3JlIHNlcnZpbmcgdGhl bSB0byB0aGUgYnJvd3NlcgotICAgIC8vIGF2YWlsYWJsZSBwcmVwcm9jZXNz b3JzOiBodHRwczovL25wbWpzLm9yZy9icm93c2Uva2V5d29yZC9rYXJtYS1w cmVwcm9jZXNzb3IKICAgICBwcmVwcm9jZXNzb3JzOiB7CisgICAgICAncmVn cmVzc2lvbi9qYXZhc2NyaXB0LyoqLyouanMnOiBbJ3dlYnBhY2snXSwKKyAg ICAgIC8vICdyZWdyZXNzaW9uL2phdmFzY3JpcHQvKiovKi5qc3gnOiBbJ3dl YnBhY2snXSwKICAgICB9LAotCi0KLSAgICAvLyB0ZXN0IHJlc3VsdHMgcmVw b3J0ZXIgdG8gdXNlCi0gICAgLy8gcG9zc2libGUgdmFsdWVzOiAnZG90cycs ICdwcm9ncmVzcycKLSAgICAvLyBhdmFpbGFibGUgcmVwb3J0ZXJzOiBodHRw czovL25wbWpzLm9yZy9icm93c2Uva2V5d29yZC9rYXJtYS1yZXBvcnRlcgot ICAgIHJlcG9ydGVyczogWydwcm9ncmVzcyddLAotCi0KLSAgICAvLyB3ZWIg c2VydmVyIHBvcnQKKyAgICB3ZWJwYWNrOiB3ZWJwYWNrQ29uZmlnLAorICAg IHdlYnBhY2tNaWRkbGV3YXJlOiB7CisgICAgICBzdGF0czogJ2Vycm9ycy1v bmx5JywKKyAgICB9LAorICAgIHJlcG9ydGVyczogWydwcm9ncmVzcycsICdr amh0bWwnXSwKICAgICBwb3J0OiA5ODc2LAotCi0KLSAgICAvLyBlbmFibGUg LyBkaXNhYmxlIGNvbG9ycyBpbiB0aGUgb3V0cHV0IChyZXBvcnRlcnMgYW5k IGxvZ3MpCiAgICAgY29sb3JzOiB0cnVlLAotCi0KLSAgICAvLyBsZXZlbCBv ZiBsb2dnaW5nCi0gICAgLy8gcG9zc2libGUgdmFsdWVzOiBjb25maWcuTE9H X0RJU0FCTEUgfHwgY29uZmlnLkxPR19FUlJPUiB8fCBjb25maWcuTE9HX1dB Uk4gfHwgY29uZmlnLkxPR19JTkZPIHx8IGNvbmZpZy5MT0dfREVCVUcKLSAg ICBsb2dMZXZlbDogY29uZmlnLkxPR19JTkZPLAotCi0KLSAgICAvLyBlbmFi bGUgLyBkaXNhYmxlIHdhdGNoaW5nIGZpbGUgYW5kIGV4ZWN1dGluZyB0ZXN0 cyB3aGVuZXZlciBhbnkgZmlsZSBjaGFuZ2VzCi0gICAgYXV0b1dhdGNoOiBm YWxzZSwKLQotCi0gICAgLy8gc3RhcnQgdGhlc2UgYnJvd3NlcnMKLSAgICAv LyBhdmFpbGFibGUgYnJvd3NlciBsYXVuY2hlcnM6IGh0dHBzOi8vbnBtanMu b3JnL2Jyb3dzZS9rZXl3b3JkL2thcm1hLWxhdW5jaGVyCisgICAgbG9nTGV2 ZWw6IGNvbmZpZy5MT0dfV0FSTiwKKyAgICBhdXRvV2F0Y2g6IHRydWUsCiAg ICAgYnJvd3NlcnM6IFsnUGhhbnRvbUpTJ10sCi0KLQotICAgIC8vIENvbnRp bnVvdXMgSW50ZWdyYXRpb24gbW9kZQotICAgIC8vIGlmIHRydWUsIEthcm1h IGNhcHR1cmVzIGJyb3dzZXJzLCBydW5zIHRoZSB0ZXN0cyBhbmQgZXhpdHMK LSAgICBzaW5nbGVSdW46IHRydWUsCi0KLSAgICAvLyBDb25jdXJyZW5jeSBs ZXZlbAotICAgIC8vIGhvdyBtYW55IGJyb3dzZXIgc2hvdWxkIGJlIHN0YXJ0 ZWQgc2ltdWx0YW5lb3VzCi0gICAgY29uY3VycmVuY3k6IEluZmluaXR5Ci0g IH0pCi19CisgICAgc2luZ2xlUnVuOiBmYWxzZSwKKyAgICBjb25jdXJyZW5j eTogSW5maW5pdHksCisgIH0pOworfTsKZGlmZiAtLWdpdCBhL3dlYi9wYWNr YWdlLmpzb24gYi93ZWIvcGFja2FnZS5qc29uCmluZGV4IDgwZTRlNWFkLi43 NjBlMWUwYyAxMDA2NDQKLS0tIGEvd2ViL3BhY2thZ2UuanNvbgorKysgYi93 ZWIvcGFja2FnZS5qc29uCkBAIC0xLDEwICsxLDQ0IEBACiB7CiAgICJkZXZE ZXBlbmRlbmNpZXMiOiB7Ci0gICAgImphc21pbmUtY29yZSI6ICJeMi41LjIi LAotICAgICJrYXJtYSI6ICJeMS41LjAiLAotICAgICJrYXJtYS1qYXNtaW5l IjogIl4xLjEuMCIsCi0gICAgImthcm1hLXBoYW50b21qcy1sYXVuY2hlciI6 ICJeMS4wLjIiLAotICAgICJrYXJtYS1yZXF1aXJlanMiOiAiXjEuMS4wIiwK LSAgICAicmVxdWlyZWpzIjogIl4yLjMuMyIKKyAgICAiYmFiZWwtY29yZSI6 ICJ+Ni4yNC4wIiwKKyAgICAiYmFiZWwtbG9hZGVyIjogIn42LjQuMSIsCisg ICAgImJhYmVsLXByZXNldC1lczIwMTUiOiAifjYuMjQuMCIsCisgICAgImJh YmVsLXByZXNldC1yZWFjdCI6ICJ+Ni4yMy4wIiwKKyAgICAiZW56eW1lIjog In4yLjguMiIsCisgICAgImVzbGludCI6ICJeMy4xOS4wIiwKKyAgICAiZXNs aW50LXBsdWdpbi1yZWFjdCI6ICJeNi4xMC4zIiwKKyAgICAiZ3J1bnQiOiAi fjEuMC4xIiwKKyAgICAiZ3J1bnQtY29udHJpYi11Z2xpZnkiOiAiXjMuMC4w IiwKKyAgICAiZ3J1bnQtY29udHJpYi13YXRjaCI6ICJ+MS4wLjAiLAorICAg ICJncnVudC1lc2xpbnQiOiAiXjE5LjAuMCIsCisgICAgImdydW50LWthcm1h IjogIl4yLjAuMCIsCisgICAgImdydW50LXdlYnBhY2siOiAifjIuMC4xIiwK KyAgICAiamFzbWluZS1jb3JlIjogIn4yLjUuMiIsCisgICAgImthcm1hIjog In4xLjUuMCIsCisgICAgImthcm1hLWJhYmVsLXByZXByb2Nlc3NvciI6ICJe Ni4wLjEiLAorICAgICJrYXJtYS1icm93c2VyaWZ5IjogIn41LjEuMSIsCisg ICAgImthcm1hLWphc21pbmUiOiAifjEuMS4wIiwKKyAgICAia2FybWEtamFz bWluZS1odG1sLXJlcG9ydGVyIjogIn4wLjIuMiIsCisgICAgImthcm1hLXBo YW50b21qcy1sYXVuY2hlciI6ICJ+MS4wLjIiLAorICAgICJrYXJtYS1yZXF1 aXJlanMiOiAifjEuMS4wIiwKKyAgICAia2FybWEtc291cmNlbWFwLWxvYWRl ciI6ICJ+MC4zLjciLAorICAgICJrYXJtYS13ZWJwYWNrIjogIn4yLjAuMyIs CisgICAgInJlYWN0LWFkZG9ucy10ZXN0LXV0aWxzIjogIn4xNS40LjIiLAor ICAgICJ3ZWJwYWNrIjogIn4yLjMuMSIKKyAgfSwKKyAgImRlcGVuZGVuY2ll cyI6IHsKKyAgICAiYXhpb3MiOiAiXjAuMTYuMSIsCisgICAgImJhYmVsLXBs dWdpbi10cmFuc2Zvcm0tZXMyMDE1LW1vZHVsZXMtYW1kIjogIl42LjI0LjEi LAorICAgICJiYWJlbC1wb2x5ZmlsbCI6ICJeNi4yMy4wIiwKKyAgICAiYmFi ZWwtcHJlc2V0LWVzMjAxNS13aXRob3V0LXN0cmljdCI6ICJ+MC4wLjQiLAor ICAgICJiYWJlbGlmeSI6ICJ+Ny4zLjAiLAorICAgICJicm93c2VyaWZ5Ijog In4xNC4xLjAiLAorICAgICJleHBvcnRzLWxvYWRlciI6ICJ+MC42LjQiLAor ICAgICJpbXBvcnRzLWxvYWRlciI6ICJnaXQraHR0cHM6Ly9naXRodWIuY29t L3dlYnBhY2stY29udHJpYi9pbXBvcnRzLWxvYWRlci5naXQjNDRkNmY0ODQ2 M2IyNTZhMTdjMWJhNmZkOWI1Y2MxNDQ5YjRlMzc5ZCIsCisgICAgInJlYWN0 IjogIn4xNS40LjIiLAorICAgICJyZWFjdC1kb20iOiAifjE1LjQuMiIsCisg ICAgInJlcXVpcmVqcyI6ICJ+Mi4zLjMiLAorICAgICJ1bmRlcnNjb3JlIjog In4xLjguMyIsCisgICAgIndhdGNoaWZ5IjogIn4zLjkuMCIKICAgfQogfQpk aWZmIC0tZ2l0IGEvd2ViL3BnQWRtaW40LnB5IGIvd2ViL3BnQWRtaW40LnB5 CmluZGV4IDI0ZTE1NjRhLi5lNTZhNmJiZSAxMDA2NDQKLS0tIGEvd2ViL3Bn QWRtaW40LnB5CisrKyBiL3dlYi9wZ0FkbWluNC5weQpAQCAtMTQsMjUgKzE0 LDQwIEBAIHRvIHN0YXJ0IGEgd2ViIHNlcnZlci4iIiIKIGltcG9ydCBvcwog aW1wb3J0IHN5cwogCi0jIFdlIG5lZWQgdG8gaW5jbHVkZSB0aGUgcm9vdCBk aXJlY3RvcnkgaW4gc3lzLnBhdGggdG8gZW5zdXJlIHRoYXQgd2UgY2FuCi0j IGZpbmQgZXZlcnl0aGluZyB3ZSBuZWVkIHdoZW4gcnVubmluZyBpbiB0aGUg c3RhbmRhbG9uZSBydW50aW1lLgorZnJvbSBwZ2FkbWluLnRvb2xzLmphdmFz Y3JpcHQuamF2YXNjcmlwdF9idW5kbGVyIGltcG9ydCBKYXZhc2NyaXB0QnVu ZGxlciwgSnNTdGF0ZQorCiByb290ID0gb3MucGF0aC5kaXJuYW1lKG9zLnBh dGgucmVhbHBhdGgoX19maWxlX18pKQogaWYgc3lzLnBhdGhbMF0gIT0gcm9v dDoKICAgICBzeXMucGF0aC5pbnNlcnQoMCwgcm9vdCkKIAogaW1wb3J0IGNv bmZpZwogZnJvbSBwZ2FkbWluIGltcG9ydCBjcmVhdGVfYXBwCitmcm9tIHBn YWRtaW4udXRpbHMgaW1wb3J0IHUsIGZzX2VuY29kaW5nLCBmaWxlX3F1b3Rl CiAKICMgR2V0IHRoZSBjb25maWcgZGF0YWJhc2Ugc2NoZW1hIHZlcnNpb24u IFdlIHN0b3JlIHRoaXMgaW4gcGdhZG1pbi5tb2RlbAogIyBhcyBpdCB0dXJu cyBvdXQgdGhhdCBwdXR0aW5nIGl0IGluIHRoZSBjb25maWcgZmlsZXMgaXNu J3QgYSBncmVhdCBpZGVhCiBmcm9tIHBnYWRtaW4ubW9kZWwgaW1wb3J0IFND SEVNQV9WRVJTSU9OCiBjb25maWcuU0VUVElOR1NfU0NIRU1BX1ZFUlNJT04g PSBTQ0hFTUFfVkVSU0lPTgogCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIworIyBTYW5pdHkgY2hlY2tzCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworCisjIENoZWNrIGlmIHRoZSBkYXRhYmFzZSBleGlzdHMuIElm IGl0IGRvZXMgbm90LCBjcmVhdGUgaXQuCitpZiBub3Qgb3MucGF0aC5pc2Zp bGUoY29uZmlnLlNRTElURV9QQVRIKToKKyAgICBzZXR1cGZpbGUgPSBvcy5w YXRoLmpvaW4oCisgICAgICAgIG9zLnBhdGguZGlybmFtZShvcy5wYXRoLnJl YWxwYXRoKHUoX19maWxlX18sIGZzX2VuY29kaW5nKSkpLCB1J3NldHVwLnB5 JworICAgICkKKyAgICBleGVjKG9wZW4oZmlsZV9xdW90ZShzZXR1cGZpbGUp LCAncicpLnJlYWQoKSkKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKLSMgU2VydmVyIHN0YXJ1cAorIyBTZXJ2ZXIgc3RhcnR1cAogIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAorIyBCdWlsZCBKYXZhc2NyaXB0 IGZpbGVzCitqYXZhc2NyaXB0QnVuZGxlciA9IEphdmFzY3JpcHRCdW5kbGVy KCkKK2phdmFzY3JpcHRCdW5kbGVyLmJ1bmRsZSgpCisKICMgQ3JlYXRlIHRo ZSBhcHAhCiBhcHAgPSBjcmVhdGVfYXBwKCkKIApAQCAtNDEsNiArNTYsMTMg QEAgaWYgY29uZmlnLkRFQlVHOgogZWxzZToKICAgICBhcHAuZGVidWcgPSBG YWxzZQogCisjIHJlc3BvbmQgdG8gSlMKK2lmIGphdmFzY3JpcHRCdW5kbGVy LnJlcG9ydCgpID09IEpzU3RhdGUuTk9ORToKKyAgICBhcHAubG9nZ2VyLmVy cm9yKCJVbmFibGUgdG8gZ2VuZXJhdGUgamF2YXNjcmlwdCIpCisgICAgYXBw LmxvZ2dlci5lcnJvcigiVG8gcnVuIHRoZSBhcHAgZW5zdXJlIHRoYXQgZ3J1 bnQgaXMgaW5zdGFsbGVkIGdsb2JhbGx5ICIKKyAgICAgICAgICAgICAgICAg ICAgICJhbmQgdGhhdCB5YXJuIGluc3RhbGwgY29tbWFuZCBydW5zIHN1Y2Nl c3NmdWxseSIpCisgICAgcmFpc2UgRXhjZXB0aW9uKCJObyBnZW5lcmF0ZWQg amF2YXNjcmlwdCwgYWJvcnRpbmciKQorCiAjIFN0YXJ0IHRoZSB3ZWIgc2Vy dmVyLiBUaGUgcG9ydCBudW1iZXIgc2hvdWxkIGhhdmUgYWxyZWFkeSBiZWVu IHNldCBieSB0aGUKICMgcnVudGltZSBpZiB3ZSdyZSBydW5uaW5nIGluIGRl c2t0b3AgbW9kZSwgb3RoZXJ3aXNlIHdlJ2xsIGp1c3QgdXNlIHRoZQogIyBG bGFzayBkZWZhdWx0LgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zdGF0aWMvdmVuZG9yL2FjaVRyZWUvanF1ZXJ5LmFjaVBsdWdpbi5taW4u anMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3N0YXRpYy92ZW5kb3IvYWNpVHJl ZS9qcXVlcnkuYWNpUGx1Z2luLm1pbi5qcwppbmRleCBiMzE1YTg1Ny4uZWEz ZmQ0MTIgMTAwNzU1Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGlj L3ZlbmRvci9hY2lUcmVlL2pxdWVyeS5hY2lQbHVnaW4ubWluLmpzCisrKyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL3ZlbmRvci9hY2lUcmVlL2px dWVyeS5hY2lQbHVnaW4ubWluLmpzCkBAIC05LDQgKzksNCBAQAogICogUmVx dWlyZSBqUXVlcnkgTGlicmFyeSA+PSB2MS4yLjMgaHR0cDovL2pxdWVyeS5j b20KICAqLwogCi0oZnVuY3Rpb24oZCxjLGUpe2lmKHR5cGVvZiBhY2lQbHVn aW5DbGFzcyE9PSJ1bmRlZmluZWQiKXtyZXR1cm59dmFyIGE7dGhpcy5hY2lQ bHVnaW5DbGFzcz1mdW5jdGlvbigpe307YWNpUGx1Z2luQ2xhc3MuZXh0ZW5k PWZ1bmN0aW9uKGcsail7aS5leHRlbmQ9YXJndW1lbnRzLmNhbGxlZTtmdW5j dGlvbiBpKCl7aWYoYSl7dGhpcy5faW5zdGFuY2U9e307cmV0dXJuIHRoaXMu X19jb25zdHJ1Y3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfX1hPWZhbHNlO2ku cHJvdG90eXBlPW5ldyB0aGlzKCk7YT10cnVlO3ZhciBoPXRoaXMucHJvdG90 eXBlO2Zvcih2YXIgZiBpbiBnKXtpLnByb3RvdHlwZVtmXT0oKHR5cGVvZiBn W2ZdPT0iZnVuY3Rpb24iKSYmKGYhPSJwcm94eSIpKT8oZnVuY3Rpb24oayl7 cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHA9dGhpcy5fcGFyZW50O3RoaXMuX3Bh cmVudD1oO3ZhciBuPXRoaXMuX3N1cGVyO3RoaXMuX3N1cGVyPWhba107dmFy IG89dGhpcy5fcHJpdmF0ZTtpZih0aGlzLl9pbnN0YW5jZSYmail7dmFyIG09 dGhpcy5faW5zdGFuY2UuX3ByaXZhdGU7aWYobVtqXT09PWUpe21bal09e25h bWVTcGFjZToiLiIran19dGhpcy5fcHJpdmF0ZT1tW2pdfXZhciBsPWdba10u YXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMuX3BhcmVudD1wO3RoaXMuX3N1 cGVyPW47dGhpcy5fcHJpdmF0ZT1vO3JldHVybiBsfX0pKGYpOmdbZl19cmV0 dXJuIGl9O3ZhciBiPTA7YWNpUGx1Z2luQ2xhc3MuYWNpUGx1Z2luVWk9YWNp UGx1Z2luQ2xhc3MuZXh0ZW5kKHtfX2NvbnN0cnVjdDpmdW5jdGlvbihrLGws aSxoLGope3ZhciBmPSIuIitrO3ZhciBnPWwuZGF0YShmKTtpZihnKXt0aGlz Ll9pbnN0YW5jZT1nLl9pbnN0YW5jZTtyZXR1cm4gZy5fX3JlcXVlc3QoaSxo LGopfWwuZGF0YShmLHRoaXMpO2QuZXh0ZW5kKHRydWUsdGhpcy5faW5zdGFu Y2Use19wcml2YXRlOnt9LG5hbWVTcGFjZTpmLGpRdWVyeTpsLG9wdGlvbnM6 ZC5leHRlbmQodHJ1ZSx7fSxkLmZuW2tdLmRlZmF1bHRzLCh0eXBlb2YgaT09 Im9iamVjdCIpP2k6e30pLGluZGV4OmIrKyx3YXNJbml0OmZhbHNlfSk7dGhp cy5fX2V4dGVuZCgpO3JldHVybiB0aGlzLl9fcmVxdWVzdChpLGgsail9LF9f ZXh0ZW5kOmZ1bmN0aW9uKCl7fSxfX3JlcXVlc3Q6ZnVuY3Rpb24oZyxmLGgp e2lmKChnPT09ZSl8fCh0eXBlb2YgZz09Im9iamVjdCIpKXtpZih0aGlzLl9p bnN0YW5jZS5vcHRpb25zLmF1dG9Jbml0KXt0aGlzLmluaXQoKX19ZWxzZXtp Zih0eXBlb2YgZz09InN0cmluZyIpe3N3aXRjaChnKXtjYXNlImluaXQiOnRo aXMuaW5pdCgpO2JyZWFrO2Nhc2UiYXBpIjpyZXR1cm57b2JqZWN0OnRoaXN9 O2Nhc2Uib3B0aW9ucyI6aWYoZj09PWUpe3JldHVybntvYmplY3Q6dGhpcy5v cHRpb25zKCl9fWVsc2V7aWYodHlwZW9mIGY9PSJzdHJpbmciKXtyZXR1cm57 b2JqZWN0OnRoaXMub3B0aW9ucyhmKX19ZWxzZXt0aGlzLm9wdGlvbnMoZil9 fWJyZWFrO2Nhc2Uib3B0aW9uIjp0aGlzLm9wdGlvbihmLGgpO2JyZWFrO2Nh c2UiZGVzdHJveSI6dGhpcy5kZXN0cm95KCk7YnJlYWt9fX1yZXR1cm4gdGhp cy5faW5zdGFuY2UualF1ZXJ5fSxwcm94eTpmdW5jdGlvbihqLGgpe3ZhciBt PWMuQXJyYXkucHJvdG90eXBlLnNsaWNlO3ZhciBmPW0uY2FsbChhcmd1bWVu dHMsMik7dmFyIGk9dGhpcyxnPWkuX3BhcmVudCxsPWkuX3N1cGVyLGs9aS5f cHJpdmF0ZTtyZXR1cm4gZnVuY3Rpb24oKXtpLl9wYXJlbnQ9ZztpLl9zdXBl cj1sO2kuX3ByaXZhdGU9aztyZXR1cm4gai5hcHBseShpLGg/Zi5jb25jYXQo W3RoaXNdLG0uY2FsbChhcmd1bWVudHMpKTpmLmNvbmNhdChtLmNhbGwoYXJn dW1lbnRzKSkpfX0saW5pdDpmdW5jdGlvbigpe2lmKCF0aGlzLl9pbnN0YW5j ZS53YXNJbml0KXt0aGlzLl9pbnN0YW5jZS53YXNJbml0PXRydWU7cmV0dXJu IHRydWV9cmV0dXJuIGZhbHNlfSx3YXNJbml0OmZ1bmN0aW9uKCl7cmV0dXJu IHRoaXMuX2luc3RhbmNlLndhc0luaXR9LF9fcGFyZW50OmZ1bmN0aW9uKGgs ZixsKXt2YXIgbT1mLnNwbGl0KCIuIik7aWYobS5sZW5ndGg+MSl7dmFyIGo9 aCxrO2Zvcih2YXIgZyBpbiBtKXtrPWo7aj1qW21bZ11dfWwubmFtZT1tW2dd O3JldHVybiBrfWwubmFtZT1mO3JldHVybiBofSxvcHRpb25zOmZ1bmN0aW9u KGYpe2lmKGYpe3ZhciBpPXtuYW1lOm51bGx9O3ZhciBoO2lmKHR5cGVvZiBm PT0ic3RyaW5nIil7aD10aGlzLl9fcGFyZW50KHRoaXMuX2luc3RhbmNlLm9w dGlvbnMsZixpKTtyZXR1cm4gaFtpLm5hbWVdfWVsc2V7Zm9yKHZhciBnIGlu IGYpe2g9dGhpcy5fX3BhcmVudCh0aGlzLl9pbnN0YW5jZS5vcHRpb25zLGcs aSk7aFtpLm5hbWVdPWZbZ119fX1lbHNle3JldHVybiB0aGlzLl9pbnN0YW5j ZS5vcHRpb25zfX0sb3B0aW9uOmZ1bmN0aW9uKGcsaSl7dmFyIGg9e25hbWU6 bnVsbH07dmFyIGY9dGhpcy5fX3BhcmVudCh0aGlzLl9pbnN0YW5jZS5vcHRp b25zLGcsaCk7ZltoLm5hbWVdPWl9LGRlc3Ryb3k6ZnVuY3Rpb24oKXtpZih0 aGlzLl9pbnN0YW5jZS53YXNJbml0KXt0aGlzLl9pbnN0YW5jZS53YXNJbml0 PWZhbHNlO3RoaXMuX2luc3RhbmNlLmpRdWVyeS5yZW1vdmVEYXRhKHRoaXMu X2luc3RhbmNlLm5hbWVTcGFjZSk7cmV0dXJuIHRydWV9cmV0dXJuIGZhbHNl fX0pO2FjaVBsdWdpbkNsYXNzLnBsdWdpbnM9e307YWNpUGx1Z2luQ2xhc3Mu cHVibGlzaD1mdW5jdGlvbihmLGcpe2QuZm5bZl09ZnVuY3Rpb24oaixtLG4p e3ZhciBoPW51bGw7Zm9yKHZhciBsPTAsaz10aGlzLmxlbmd0aDtsPGs7bCsr KXtoPW5ldyBhY2lQbHVnaW5DbGFzcy5wbHVnaW5zW2ZdKGYsZCh0aGlzW2xd KSxqLG0sbik7aWYoIShoIGluc3RhbmNlb2YgZCkpe3JldHVybiBoLm9iamVj dH19cmV0dXJuIHRoaXN9O2QuZm5bZl0uZGVmYXVsdHM9ZC5leHRlbmQodHJ1 ZSx7YXV0b0luaXQ6dHJ1ZX0sKHR5cGVvZiBnPT0ib2JqZWN0Iik/Zzp7fSl9 O2FjaVBsdWdpbkNsYXNzLmRlZmF1bHRzPWZ1bmN0aW9uKGYsZyl7ZC5leHRl bmQodHJ1ZSxkLmZuW2ZdLmRlZmF1bHRzLCh0eXBlb2YgZz09Im9iamVjdCIp P2c6e30pfX0pKGpRdWVyeSx0aGlzKTsKKyhmdW5jdGlvbihkLGMsZSl7aWYo dHlwZW9mIGFjaVBsdWdpbkNsYXNzIT09InVuZGVmaW5lZCIpe3JldHVybn12 YXIgYTt3aW5kb3cuYWNpUGx1Z2luQ2xhc3M9ZnVuY3Rpb24oKXt9O2FjaVBs dWdpbkNsYXNzLmV4dGVuZD1mdW5jdGlvbihnLGope2kuZXh0ZW5kPWFyZ3Vt ZW50cy5jYWxsZWU7ZnVuY3Rpb24gaSgpe2lmKGEpe3RoaXMuX2luc3RhbmNl PXt9O3JldHVybiB0aGlzLl9fY29uc3RydWN0LmFwcGx5KHRoaXMsYXJndW1l bnRzKX19YT1mYWxzZTtpLnByb3RvdHlwZT1uZXcgdGhpcygpO2E9dHJ1ZTt2 YXIgaD10aGlzLnByb3RvdHlwZTtmb3IodmFyIGYgaW4gZyl7aS5wcm90b3R5 cGVbZl09KCh0eXBlb2YgZ1tmXT09ImZ1bmN0aW9uIikmJihmIT0icHJveHki KSk/KGZ1bmN0aW9uKGspe3JldHVybiBmdW5jdGlvbigpe3ZhciBwPXRoaXMu X3BhcmVudDt0aGlzLl9wYXJlbnQ9aDt2YXIgbj10aGlzLl9zdXBlcjt0aGlz Ll9zdXBlcj1oW2tdO3ZhciBvPXRoaXMuX3ByaXZhdGU7aWYodGhpcy5faW5z dGFuY2UmJmope3ZhciBtPXRoaXMuX2luc3RhbmNlLl9wcml2YXRlO2lmKG1b al09PT1lKXttW2pdPXtuYW1lU3BhY2U6Ii4iK2p9fXRoaXMuX3ByaXZhdGU9 bVtqXX12YXIgbD1nW2tdLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLl9w YXJlbnQ9cDt0aGlzLl9zdXBlcj1uO3RoaXMuX3ByaXZhdGU9bztyZXR1cm4g bH19KShmKTpnW2ZdfXJldHVybiBpfTt2YXIgYj0wO2FjaVBsdWdpbkNsYXNz LmFjaVBsdWdpblVpPWFjaVBsdWdpbkNsYXNzLmV4dGVuZCh7X19jb25zdHJ1 Y3Q6ZnVuY3Rpb24oayxsLGksaCxqKXt2YXIgZj0iLiIrazt2YXIgZz1sLmRh dGEoZik7aWYoZyl7dGhpcy5faW5zdGFuY2U9Zy5faW5zdGFuY2U7cmV0dXJu IGcuX19yZXF1ZXN0KGksaCxqKX1sLmRhdGEoZix0aGlzKTtkLmV4dGVuZCh0 cnVlLHRoaXMuX2luc3RhbmNlLHtfcHJpdmF0ZTp7fSxuYW1lU3BhY2U6Zixq UXVlcnk6bCxvcHRpb25zOmQuZXh0ZW5kKHRydWUse30sZC5mbltrXS5kZWZh dWx0cywodHlwZW9mIGk9PSJvYmplY3QiKT9pOnt9KSxpbmRleDpiKyssd2Fz SW5pdDpmYWxzZX0pO3RoaXMuX19leHRlbmQoKTtyZXR1cm4gdGhpcy5fX3Jl cXVlc3QoaSxoLGopfSxfX2V4dGVuZDpmdW5jdGlvbigpe30sX19yZXF1ZXN0 OmZ1bmN0aW9uKGcsZixoKXtpZigoZz09PWUpfHwodHlwZW9mIGc9PSJvYmpl Y3QiKSl7aWYodGhpcy5faW5zdGFuY2Uub3B0aW9ucy5hdXRvSW5pdCl7dGhp cy5pbml0KCl9fWVsc2V7aWYodHlwZW9mIGc9PSJzdHJpbmciKXtzd2l0Y2go Zyl7Y2FzZSJpbml0Ijp0aGlzLmluaXQoKTticmVhaztjYXNlImFwaSI6cmV0 dXJue29iamVjdDp0aGlzfTtjYXNlIm9wdGlvbnMiOmlmKGY9PT1lKXtyZXR1 cm57b2JqZWN0OnRoaXMub3B0aW9ucygpfX1lbHNle2lmKHR5cGVvZiBmPT0i c3RyaW5nIil7cmV0dXJue29iamVjdDp0aGlzLm9wdGlvbnMoZil9fWVsc2V7 dGhpcy5vcHRpb25zKGYpfX1icmVhaztjYXNlIm9wdGlvbiI6dGhpcy5vcHRp b24oZixoKTticmVhaztjYXNlImRlc3Ryb3kiOnRoaXMuZGVzdHJveSgpO2Jy ZWFrfX19cmV0dXJuIHRoaXMuX2luc3RhbmNlLmpRdWVyeX0scHJveHk6ZnVu Y3Rpb24oaixoKXt2YXIgbT1jLkFycmF5LnByb3RvdHlwZS5zbGljZTt2YXIg Zj1tLmNhbGwoYXJndW1lbnRzLDIpO3ZhciBpPXRoaXMsZz1pLl9wYXJlbnQs bD1pLl9zdXBlcixrPWkuX3ByaXZhdGU7cmV0dXJuIGZ1bmN0aW9uKCl7aS5f cGFyZW50PWc7aS5fc3VwZXI9bDtpLl9wcml2YXRlPWs7cmV0dXJuIGouYXBw bHkoaSxoP2YuY29uY2F0KFt0aGlzXSxtLmNhbGwoYXJndW1lbnRzKSk6Zi5j b25jYXQobS5jYWxsKGFyZ3VtZW50cykpKX19LGluaXQ6ZnVuY3Rpb24oKXtp ZighdGhpcy5faW5zdGFuY2Uud2FzSW5pdCl7dGhpcy5faW5zdGFuY2Uud2Fz SW5pdD10cnVlO3JldHVybiB0cnVlfXJldHVybiBmYWxzZX0sd2FzSW5pdDpm dW5jdGlvbigpe3JldHVybiB0aGlzLl9pbnN0YW5jZS53YXNJbml0fSxfX3Bh cmVudDpmdW5jdGlvbihoLGYsbCl7dmFyIG09Zi5zcGxpdCgiLiIpO2lmKG0u bGVuZ3RoPjEpe3ZhciBqPWgsaztmb3IodmFyIGcgaW4gbSl7az1qO2o9altt W2ddXX1sLm5hbWU9bVtnXTtyZXR1cm4ga31sLm5hbWU9ZjtyZXR1cm4gaH0s b3B0aW9uczpmdW5jdGlvbihmKXtpZihmKXt2YXIgaT17bmFtZTpudWxsfTt2 YXIgaDtpZih0eXBlb2YgZj09InN0cmluZyIpe2g9dGhpcy5fX3BhcmVudCh0 aGlzLl9pbnN0YW5jZS5vcHRpb25zLGYsaSk7cmV0dXJuIGhbaS5uYW1lXX1l bHNle2Zvcih2YXIgZyBpbiBmKXtoPXRoaXMuX19wYXJlbnQodGhpcy5faW5z dGFuY2Uub3B0aW9ucyxnLGkpO2hbaS5uYW1lXT1mW2ddfX19ZWxzZXtyZXR1 cm4gdGhpcy5faW5zdGFuY2Uub3B0aW9uc319LG9wdGlvbjpmdW5jdGlvbihn LGkpe3ZhciBoPXtuYW1lOm51bGx9O3ZhciBmPXRoaXMuX19wYXJlbnQodGhp cy5faW5zdGFuY2Uub3B0aW9ucyxnLGgpO2ZbaC5uYW1lXT1pfSxkZXN0cm95 OmZ1bmN0aW9uKCl7aWYodGhpcy5faW5zdGFuY2Uud2FzSW5pdCl7dGhpcy5f aW5zdGFuY2Uud2FzSW5pdD1mYWxzZTt0aGlzLl9pbnN0YW5jZS5qUXVlcnku cmVtb3ZlRGF0YSh0aGlzLl9pbnN0YW5jZS5uYW1lU3BhY2UpO3JldHVybiB0 cnVlfXJldHVybiBmYWxzZX19KTthY2lQbHVnaW5DbGFzcy5wbHVnaW5zPXt9 O2FjaVBsdWdpbkNsYXNzLnB1Ymxpc2g9ZnVuY3Rpb24oZixnKXtkLmZuW2Zd PWZ1bmN0aW9uKGosbSxuKXt2YXIgaD1udWxsO2Zvcih2YXIgbD0wLGs9dGhp cy5sZW5ndGg7bDxrO2wrKyl7aD1uZXcgYWNpUGx1Z2luQ2xhc3MucGx1Z2lu c1tmXShmLGQodGhpc1tsXSksaixtLG4pO2lmKCEoaCBpbnN0YW5jZW9mIGQp KXtyZXR1cm4gaC5vYmplY3R9fXJldHVybiB0aGlzfTtkLmZuW2ZdLmRlZmF1 bHRzPWQuZXh0ZW5kKHRydWUse2F1dG9Jbml0OnRydWV9LCh0eXBlb2YgZz09 Im9iamVjdCIpP2c6e30pfTthY2lQbHVnaW5DbGFzcy5kZWZhdWx0cz1mdW5j dGlvbihmLGcpe2QuZXh0ZW5kKHRydWUsZC5mbltmXS5kZWZhdWx0cywodHlw ZW9mIGc9PSJvYmplY3QiKT9nOnt9KX19KShqUXVlcnksdGhpcyk7CmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3V0aWxzLnB5IGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci91dGlscy5weQppbmRleCA3MDhiZmRmYi4uOTkzYTVj NmYgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvdXRpbHMucHkK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci91dGlscy5weQpAQCAtMjQxLDYg KzI0MSw3IEBAIGNsYXNzIE5vZGVWaWV3KHdpdGhfbWV0YWNsYXNzKE1ldGhv ZFZpZXdUeXBlLCBWaWV3KSk6CiAKICAgICAgICAgY29tbWFuZHMgPSBjbHMu Z2VuZXJhdGVfb3BzKCkKIAorCiAgICAgICAgIGZvciBjIGluIGNvbW1hbmRz OgogICAgICAgICAgICAgaWYgY1snd2l0aF9pZCddOgogICAgICAgICAgICAg ICAgIGJsdWVwcmludC5hZGRfdXJsX3J1bGUoCmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9zdGF0aWMvanMvc2VsZWN0aW9uL2NsaXBib2FyZC5qcyBiL3dl Yi9wZ2FkbWluL3N0YXRpYy9qcy9zZWxlY3Rpb24vY2xpcGJvYXJkLmpzCmlu ZGV4IDllMjBkYTdlLi45Nzk0YWU3ZSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRt aW4vc3RhdGljL2pzL3NlbGVjdGlvbi9jbGlwYm9hcmQuanMKKysrIGIvd2Vi L3BnYWRtaW4vc3RhdGljL2pzL3NlbGVjdGlvbi9jbGlwYm9hcmQuanMKQEAg LTEsNyArMSw3IEBACiBkZWZpbmUoWydzb3VyY2VzL2dldHRleHQnLCAnYWxl cnRpZnknXSwgZnVuY3Rpb24gKGdldHRleHQsIGFsZXJ0aWZ5KSB7CiAgIHZh ciBjbGlwYm9hcmQgPSB7CiAgICAgY29weVRleHRUb0NsaXBib2FyZDogZnVu Y3Rpb24gKHRleHQpIHsKLSAgICAgIHZhciB0ZXh0QXJlYSA9IGRvY3VtZW50 LmNyZWF0ZUVsZW1lbnQoInRleHRhcmVhIik7CisgICAgICB2YXIgdGV4dEFy ZWEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZXh0YXJlYScpOwogCiAg ICAgICAvLwogICAgICAgLy8gKioqIFRoaXMgc3R5bGluZyBpcyBhbiBleHRy YSBzdGVwIHdoaWNoIGlzIGxpa2VseSBub3QgcmVxdWlyZWQuICoqKgpAQCAt NTUsNyArNTUsNyBAQCBkZWZpbmUoWydzb3VyY2VzL2dldHRleHQnLCAnYWxl cnRpZnknXSwgZnVuY3Rpb24gKGdldHRleHQsIGFsZXJ0aWZ5KSB7CiAgICAg ICB9CiAKICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGV4dEFy ZWEpOwotICAgIH0KKyAgICB9LAogICB9OwogICByZXR1cm4gY2xpcGJvYXJk OwogfSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3NlbGVjdGlvbi9jb2x1bW5fc2Vs ZWN0b3IuanMgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvc2VsZWN0aW9uL2Nv bHVtbl9zZWxlY3Rvci5qcwppbmRleCBjODliM2ZhOC4uYTgxYjY5MTggMTAw NjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9zZWxlY3Rpb24vY29s dW1uX3NlbGVjdG9yLmpzCisrKyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9z ZWxlY3Rpb24vY29sdW1uX3NlbGVjdG9yLmpzCkBAIC0yLDE4ICsyLDE4IEBA IGRlZmluZShbJ2pxdWVyeScsICdzb3VyY2VzL3NlbGVjdGlvbi9yYW5nZV9z ZWxlY3Rpb25faGVscGVyJywgJ3NsaWNrZ3JpZCddLCBmdW5jCiAgIHZhciBD b2x1bW5TZWxlY3RvciA9IGZ1bmN0aW9uICgpIHsKICAgICB2YXIgaW5pdCA9 IGZ1bmN0aW9uIChncmlkKSB7CiAgICAgICBncmlkLm9uSGVhZGVyQ2xpY2su c3Vic2NyaWJlKGZ1bmN0aW9uIChldmVudCwgZXZlbnRBcmd1bWVudCkgewot ICAgICAgICAgIHZhciBjb2x1bW4gPSBldmVudEFyZ3VtZW50LmNvbHVtbjsK KyAgICAgICAgdmFyIGNvbHVtbiA9IGV2ZW50QXJndW1lbnQuY29sdW1uOwog Ci0gICAgICAgICAgaWYgKGNvbHVtbi5zZWxlY3RhYmxlICE9PSBmYWxzZSkg eworICAgICAgICBpZiAoY29sdW1uLnNlbGVjdGFibGUgIT09IGZhbHNlKSB7 CiAKLSAgICAgICAgICAgIGlmICghY2xpY2tlZENoZWNrYm94KGV2ZW50KSkg ewotICAgICAgICAgICAgICB2YXIgJGNoZWNrYm94ID0gJCgiW2RhdGEtaWQ9 J2NoZWNrYm94LSIgKyBjb2x1bW4uaWQgKyAiJ10iKTsKLSAgICAgICAgICAg ICAgdG9nZ2xlQ2hlY2tib3goJGNoZWNrYm94KTsKLSAgICAgICAgICAgIH0K LQotICAgICAgICAgICAgdXBkYXRlUmFuZ2VzKGdyaWQsIGNvbHVtbi5pZCk7 CisgICAgICAgICAgaWYgKCFjbGlja2VkQ2hlY2tib3goZXZlbnQpKSB7Cisg ICAgICAgICAgICB2YXIgJGNoZWNrYm94ID0gJCgnW2RhdGEtaWQ9XCdjaGVj a2JveC0nICsgY29sdW1uLmlkICsgJ1wnXScpOworICAgICAgICAgICAgdG9n Z2xlQ2hlY2tib3goJGNoZWNrYm94KTsKICAgICAgICAgICB9CisKKyAgICAg ICAgICB1cGRhdGVSYW5nZXMoZ3JpZCwgY29sdW1uLmlkKTsKICAgICAgICAg fQorICAgICAgfQogICAgICAgKTsKICAgICAgIGdyaWQuZ2V0U2VsZWN0aW9u TW9kZWwoKS5vblNlbGVjdGVkUmFuZ2VzQ2hhbmdlZAogICAgICAgICAuc3Vi c2NyaWJlKGhhbmRsZVNlbGVjdGVkUmFuZ2VzQ2hhbmdlZC5iaW5kKG51bGws IGdyaWQpKTsKQEAgLTUyLDE0ICs1MiwxNCBAQCBkZWZpbmUoWydqcXVlcnkn LCAnc291cmNlcy9zZWxlY3Rpb24vcmFuZ2Vfc2VsZWN0aW9uX2hlbHBlcics ICdzbGlja2dyaWQnXSwgZnVuYwogICAgIH07CiAKICAgICB2YXIgY2xpY2tl ZENoZWNrYm94ID0gZnVuY3Rpb24gKGUpIHsKLSAgICAgIHJldHVybiBlLnRh cmdldC50eXBlID09ICJjaGVja2JveCIKKyAgICAgIHJldHVybiBlLnRhcmdl dC50eXBlID09ICdjaGVja2JveCc7CiAgICAgfTsKIAogICAgIHZhciB0b2dn bGVDaGVja2JveCA9IGZ1bmN0aW9uIChjaGVja2JveCkgewotICAgICAgaWYg KGNoZWNrYm94LnByb3AoImNoZWNrZWQiKSkgewotICAgICAgICBjaGVja2Jv eC5wcm9wKCJjaGVja2VkIiwgZmFsc2UpCisgICAgICBpZiAoY2hlY2tib3gu cHJvcCgnY2hlY2tlZCcpKSB7CisgICAgICAgIGNoZWNrYm94LnByb3AoJ2No ZWNrZWQnLCBmYWxzZSk7CiAgICAgICB9IGVsc2UgewotICAgICAgICBjaGVj a2JveC5wcm9wKCJjaGVja2VkIiwgdHJ1ZSkKKyAgICAgICAgY2hlY2tib3gu cHJvcCgnY2hlY2tlZCcsIHRydWUpOwogICAgICAgfQogICAgIH07CiAKQEAg LTY3LDE1ICs2NywxNSBAQCBkZWZpbmUoWydqcXVlcnknLCAnc291cmNlcy9z ZWxlY3Rpb24vcmFuZ2Vfc2VsZWN0aW9uX2hlbHBlcicsICdzbGlja2dyaWQn XSwgZnVuYwogICAgICAgcmV0dXJuIF8ubWFwKGNvbHVtbkRlZmluaXRpb25z LCBmdW5jdGlvbiAoY29sdW1uRGVmaW5pdGlvbikgewogICAgICAgICBpZiAo Y29sdW1uRGVmaW5pdGlvbi5zZWxlY3RhYmxlICE9PSBmYWxzZSkgewogICAg ICAgICAgIHZhciBuYW1lID0KLSAgICAgICAgICAgICI8c3BhbiBkYXRhLWNl bGwtdHlwZT0nY29sdW1uLWhlYWRlci1yb3cnICIgKwotICAgICAgICAgICAg IiAgICAgICBkYXRhLXRlc3Q9J291dHB1dC1jb2x1bW4taGVhZGVyJz4iICsK LSAgICAgICAgICAgICIgIDxpbnB1dCBkYXRhLWlkPSdjaGVja2JveC0iICsg Y29sdW1uRGVmaW5pdGlvbi5pZCArICInICIgKwotICAgICAgICAgICAgIiAg ICAgICAgIGRhdGEtY29sdW1uLWlkPSciICsgY29sdW1uRGVmaW5pdGlvbi5p ZCArICInICIgKwotICAgICAgICAgICAgIiAgICAgICAgIHR5cGU9J2NoZWNr Ym94Jy8+IiArCi0gICAgICAgICAgICAiICA8c3BhbiBjbGFzcz0nY29sdW1u LWRlc2NyaXB0aW9uJz4iICsgY29sdW1uRGVmaW5pdGlvbi5uYW1lICsgIjwv c3Bhbj4iICsKLSAgICAgICAgICAgICI8L3NwYW4+IjsKKyAgICAgICAgICAg ICc8c3BhbiBkYXRhLWNlbGwtdHlwZT1cJ2NvbHVtbi1oZWFkZXItcm93XCcg JyArCisgICAgICAgICAgICAnICAgICAgIGRhdGEtdGVzdD1cJ291dHB1dC1j b2x1bW4taGVhZGVyXCc+JyArCisgICAgICAgICAgICAnICA8aW5wdXQgZGF0 YS1pZD1cJ2NoZWNrYm94LScgKyBjb2x1bW5EZWZpbml0aW9uLmlkICsgJ1wn ICcgKworICAgICAgICAgICAgJyAgICAgICAgIGRhdGEtY29sdW1uLWlkPVwn JyArIGNvbHVtbkRlZmluaXRpb24uaWQgKyAnXCcgJyArCisgICAgICAgICAg ICAnICAgICAgICAgdHlwZT1cJ2NoZWNrYm94XCcvPicgKworICAgICAgICAg ICAgJyAgPHNwYW4gY2xhc3M9XCdjb2x1bW4tZGVzY3JpcHRpb25cJz4nICsg Y29sdW1uRGVmaW5pdGlvbi5uYW1lICsgJzwvc3Bhbj4nICsKKyAgICAgICAg ICAgICc8L3NwYW4+JzsKICAgICAgICAgICByZXR1cm4gXy5leHRlbmQoY29s dW1uRGVmaW5pdGlvbiwgewotICAgICAgICAgICAgbmFtZTogbmFtZQorICAg ICAgICAgICAgbmFtZTogbmFtZSwKICAgICAgICAgICB9KTsKICAgICAgICAg fSBlbHNlIHsKICAgICAgICAgICByZXR1cm4gY29sdW1uRGVmaW5pdGlvbjsK QEAgLTg0LDggKzg0LDggQEAgZGVmaW5lKFsnanF1ZXJ5JywgJ3NvdXJjZXMv c2VsZWN0aW9uL3JhbmdlX3NlbGVjdGlvbl9oZWxwZXInLCAnc2xpY2tncmlk J10sIGZ1bmMKICAgICB9OwogCiAgICAgJC5leHRlbmQodGhpcywgewotICAg ICAgImluaXQiOiBpbml0LAotICAgICAgImdldENvbHVtbkRlZmluaXRpb25z V2l0aENoZWNrYm94ZXMiOiBnZXRDb2x1bW5EZWZpbml0aW9uc1dpdGhDaGVj a2JveGVzCisgICAgICAnaW5pdCc6IGluaXQsCisgICAgICAnZ2V0Q29sdW1u RGVmaW5pdGlvbnNXaXRoQ2hlY2tib3hlcyc6IGdldENvbHVtbkRlZmluaXRp b25zV2l0aENoZWNrYm94ZXMsCiAgICAgfSk7CiAgIH07CiAgIHJldHVybiBD b2x1bW5TZWxlY3RvcjsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRp Yy9qcy9zZWxlY3Rpb24vY29weV9kYXRhLmpzIGIvd2ViL3BnYWRtaW4vc3Rh dGljL2pzL3NlbGVjdGlvbi9jb3B5X2RhdGEuanMKaW5kZXggMDE4ZWZlYWQu LjBjY2Q0Yjk2IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMv c2VsZWN0aW9uL2NvcHlfZGF0YS5qcworKysgYi93ZWIvcGdhZG1pbi9zdGF0 aWMvanMvc2VsZWN0aW9uL2NvcHlfZGF0YS5qcwpAQCAtNSw0OCArNSw0OCBA QCBkZWZpbmUoWwogICAnc291cmNlcy9zZWxlY3Rpb24vcmFuZ2Vfc2VsZWN0 aW9uX2hlbHBlcicsCiAgICdzb3VyY2VzL3NlbGVjdGlvbi9yYW5nZV9ib3Vu ZGFyeV9uYXZpZ2F0b3InXSwKICAgZnVuY3Rpb24gKCQsIF8sIGNsaXBib2Fy ZCwgUmFuZ2VTZWxlY3Rpb25IZWxwZXIsIHJhbmdlQm91bmRhcnlOYXZpZ2F0 b3IpIHsKLSAgdmFyIGNvcHlEYXRhID0gZnVuY3Rpb24gKCkgewotICAgIHZh ciBzZWxmID0gdGhpczsKLQotICAgIHZhciBncmlkID0gc2VsZi5zbGlja2dy aWQ7Ci0gICAgdmFyIGNvbHVtbkRlZmluaXRpb25zID0gZ3JpZC5nZXRDb2x1 bW5zKCk7Ci0gICAgdmFyIHNlbGVjdGVkUmFuZ2VzID0gZ3JpZC5nZXRTZWxl Y3Rpb25Nb2RlbCgpLmdldFNlbGVjdGVkUmFuZ2VzKCk7Ci0gICAgdmFyIGRh dGEgPSBncmlkLmdldERhdGEoKTsKLSAgICB2YXIgcm93cyA9IGdyaWQuZ2V0 U2VsZWN0ZWRSb3dzKCk7CisgICAgdmFyIGNvcHlEYXRhID0gZnVuY3Rpb24g KCkgeworICAgICAgdmFyIHNlbGYgPSB0aGlzOworCisgICAgICB2YXIgZ3Jp ZCA9IHNlbGYuc2xpY2tncmlkOworICAgICAgdmFyIGNvbHVtbkRlZmluaXRp b25zID0gZ3JpZC5nZXRDb2x1bW5zKCk7CisgICAgICB2YXIgc2VsZWN0ZWRS YW5nZXMgPSBncmlkLmdldFNlbGVjdGlvbk1vZGVsKCkuZ2V0U2VsZWN0ZWRS YW5nZXMoKTsKKyAgICAgIHZhciBkYXRhID0gZ3JpZC5nZXREYXRhKCk7Cisg ICAgICB2YXIgcm93cyA9IGdyaWQuZ2V0U2VsZWN0ZWRSb3dzKCk7CisKKwor ICAgICAgaWYgKGFsbFRoZVJhbmdlc0FyZUZ1bGxSb3dzKHNlbGVjdGVkUmFu Z2VzLCBjb2x1bW5EZWZpbml0aW9ucykpIHsKKyAgICAgICAgc2VsZi5jb3Bp ZWRfcm93cyA9IHJvd3MubWFwKGZ1bmN0aW9uIChyb3dJbmRleCkgeworICAg ICAgICAgIHJldHVybiBkYXRhW3Jvd0luZGV4XTsKKyAgICAgICAgfSk7Cisg ICAgICAgIHNldFBhc3RlUm93QnV0dG9uRW5hYmxlbWVudChzZWxmLmNhbl9l ZGl0LCB0cnVlKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHNlbGYuY29w aWVkX3Jvd3MgPSBbXTsKKyAgICAgICAgc2V0UGFzdGVSb3dCdXR0b25FbmFi bGVtZW50KHNlbGYuY2FuX2VkaXQsIGZhbHNlKTsKKyAgICAgIH0KKworICAg ICAgdmFyIGNzdlRleHQgPSByYW5nZUJvdW5kYXJ5TmF2aWdhdG9yLnJhbmdl c1RvQ3N2KGRhdGEsIGNvbHVtbkRlZmluaXRpb25zLCBzZWxlY3RlZFJhbmdl cyk7CisgICAgICBpZiAoY3N2VGV4dCkgeworICAgICAgICBjbGlwYm9hcmQu Y29weVRleHRUb0NsaXBib2FyZChjc3ZUZXh0KTsKKyAgICAgIH0KKyAgICB9 OworCisgICAgdmFyIHNldFBhc3RlUm93QnV0dG9uRW5hYmxlbWVudCA9IGZ1 bmN0aW9uIChjYW5FZGl0RmxhZywgaXNFbmFibGVkKSB7CisgICAgICBpZiAo Y2FuRWRpdEZsYWcpIHsKKyAgICAgICAgJCgnI2J0bi1wYXN0ZS1yb3cnKS5w cm9wKCdkaXNhYmxlZCcsICFpc0VuYWJsZWQpOworICAgICAgfQorICAgIH07 CisKKyAgICB2YXIgYWxsVGhlUmFuZ2VzQXJlRnVsbFJvd3MgPSBmdW5jdGlv biAocmFuZ2VzLCBjb2x1bW5EZWZpbml0aW9ucykgeworICAgICAgdmFyIGNv bFJhbmdlQm91bmRzID0gcmFuZ2VzLm1hcChmdW5jdGlvbiAocmFuZ2UpIHsK KyAgICAgICAgcmV0dXJuIFtyYW5nZS5mcm9tQ2VsbCwgcmFuZ2UudG9DZWxs XTsKKyAgICAgIH0pOwogCisgICAgICBpZihSYW5nZVNlbGVjdGlvbkhlbHBl ci5pc0ZpcnN0Q29sdW1uRGF0YShjb2x1bW5EZWZpbml0aW9ucykpIHsKKyAg ICAgICAgcmV0dXJuIF8uaXNFcXVhbChfLnVuaW9uLmFwcGx5KG51bGwsIGNv bFJhbmdlQm91bmRzKSwgWzAsIGNvbHVtbkRlZmluaXRpb25zLmxlbmd0aCAt IDFdKTsKKyAgICAgIH0KKyAgICAgIHJldHVybiBfLmlzRXF1YWwoXy51bmlv bi5hcHBseShudWxsLCBjb2xSYW5nZUJvdW5kcyksIFsxLCBjb2x1bW5EZWZp bml0aW9ucy5sZW5ndGggLSAxXSk7CisgICAgfTsKIAotICAgIGlmIChhbGxU aGVSYW5nZXNBcmVGdWxsUm93cyhzZWxlY3RlZFJhbmdlcywgY29sdW1uRGVm aW5pdGlvbnMpKSB7Ci0gICAgICBzZWxmLmNvcGllZF9yb3dzID0gcm93cy5t YXAoZnVuY3Rpb24gKHJvd0luZGV4KSB7Ci0gICAgICAgIHJldHVybiBkYXRh W3Jvd0luZGV4XTsKLSAgICAgIH0pOwotICAgICAgc2V0UGFzdGVSb3dCdXR0 b25FbmFibGVtZW50KHNlbGYuY2FuX2VkaXQsIHRydWUpOwotICAgIH0gZWxz ZSB7Ci0gICAgICBzZWxmLmNvcGllZF9yb3dzID0gW107Ci0gICAgICBzZXRQ YXN0ZVJvd0J1dHRvbkVuYWJsZW1lbnQoc2VsZi5jYW5fZWRpdCwgZmFsc2Up OwotICAgIH0KLQotICAgIHZhciBjc3ZUZXh0ID0gcmFuZ2VCb3VuZGFyeU5h dmlnYXRvci5yYW5nZXNUb0NzdihkYXRhLCBjb2x1bW5EZWZpbml0aW9ucywg c2VsZWN0ZWRSYW5nZXMpOwotICAgIGlmIChjc3ZUZXh0KSB7Ci0gICAgICBj bGlwYm9hcmQuY29weVRleHRUb0NsaXBib2FyZChjc3ZUZXh0KTsKLSAgICB9 Ci0gIH07Ci0KLSAgdmFyIHNldFBhc3RlUm93QnV0dG9uRW5hYmxlbWVudCA9 IGZ1bmN0aW9uIChjYW5FZGl0RmxhZywgaXNFbmFibGVkKSB7Ci0gICAgaWYg KGNhbkVkaXRGbGFnKSB7Ci0gICAgICAkKCIjYnRuLXBhc3RlLXJvdyIpLnBy b3AoJ2Rpc2FibGVkJywgIWlzRW5hYmxlZCk7Ci0gICAgfQotICB9OwotCi0g IHZhciBhbGxUaGVSYW5nZXNBcmVGdWxsUm93cyA9IGZ1bmN0aW9uIChyYW5n ZXMsIGNvbHVtbkRlZmluaXRpb25zKSB7Ci0gICAgdmFyIGNvbFJhbmdlQm91 bmRzID0gcmFuZ2VzLm1hcChmdW5jdGlvbiAocmFuZ2UpIHsKLSAgICAgIHJl dHVybiBbcmFuZ2UuZnJvbUNlbGwsIHJhbmdlLnRvQ2VsbF07Ci0gICAgfSk7 Ci0KLSAgICBpZihSYW5nZVNlbGVjdGlvbkhlbHBlci5pc0ZpcnN0Q29sdW1u RGF0YShjb2x1bW5EZWZpbml0aW9ucykpIHsKLSAgICAgIHJldHVybiBfLmlz RXF1YWwoXy51bmlvbi5hcHBseShudWxsLCBjb2xSYW5nZUJvdW5kcyksIFsw LCBjb2x1bW5EZWZpbml0aW9ucy5sZW5ndGggLSAxXSk7Ci0gICAgfQotICAg IHJldHVybiBfLmlzRXF1YWwoXy51bmlvbi5hcHBseShudWxsLCBjb2xSYW5n ZUJvdW5kcyksIFsxLCBjb2x1bW5EZWZpbml0aW9ucy5sZW5ndGggLSAxXSk7 Ci0gIH07Ci0KLSAgcmV0dXJuIGNvcHlEYXRhOwotfSk7CisgICAgcmV0dXJu IGNvcHlEYXRhOworICB9KTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0 YXRpYy9qcy9zZWxlY3Rpb24vZ3JpZF9zZWxlY3Rvci5qcyBiL3dlYi9wZ2Fk bWluL3N0YXRpYy9qcy9zZWxlY3Rpb24vZ3JpZF9zZWxlY3Rvci5qcwppbmRl eCAzMWFlZTY5Zi4uNjMxN2Y0NGUgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWlu L3N0YXRpYy9qcy9zZWxlY3Rpb24vZ3JpZF9zZWxlY3Rvci5qcworKysgYi93 ZWIvcGdhZG1pbi9zdGF0aWMvanMvc2VsZWN0aW9uL2dyaWRfc2VsZWN0b3Iu anMKQEAgLTMxLDcgKzMxLDcgQEAgZGVmaW5lKFsnanF1ZXJ5JywgJ3NvdXJj ZXMvc2VsZWN0aW9uL2NvbHVtbl9zZWxlY3RvcicsICdzb3VyY2VzL3NlbGVj dGlvbi9yb3dfc2UKICAgICAgIH07CiAKICAgICAgIGZ1bmN0aW9uIGhhbmRs ZVNlbGVjdGVkUmFuZ2VzQ2hhbmdlZChncmlkKSB7Ci0gICAgICAgICQoIltk YXRhLWlkPSdjaGVja2JveC1zZWxlY3QtYWxsJ10iKS5wcm9wKCJjaGVja2Vk IiwgaXNFbnRpcmVHcmlkU2VsZWN0ZWQoZ3JpZCkpOworICAgICAgICAkKCdb ZGF0YS1pZD1cJ2NoZWNrYm94LXNlbGVjdC1hbGxcJ10nKS5wcm9wKCdjaGVj a2VkJywgaXNFbnRpcmVHcmlkU2VsZWN0ZWQoZ3JpZCkpOwogICAgICAgfQog CiAgICAgICBmdW5jdGlvbiBpc0VudGlyZUdyaWRTZWxlY3RlZChncmlkKSB7 CkBAIC00NCw3ICs0NCw3IEBAIGRlZmluZShbJ2pxdWVyeScsICdzb3VyY2Vz L3NlbGVjdGlvbi9jb2x1bW5fc2VsZWN0b3InLCAnc291cmNlcy9zZWxlY3Rp b24vcm93X3NlCiAgICAgICAgIGlmIChpc0VudGlyZUdyaWRTZWxlY3RlZChn cmlkKSkgewogICAgICAgICAgIGRlc2VsZWN0KGdyaWQpOwogICAgICAgICB9 IGVsc2UgewotICAgICAgICAgIHNlbGVjdEFsbChncmlkKQorICAgICAgICAg IHNlbGVjdEFsbChncmlkKTsKICAgICAgICAgfQogICAgICAgfQogCkBAIC03 MCw4ICs3MCw4IEBAIGRlZmluZShbJ2pxdWVyeScsICdzb3VyY2VzL3NlbGVj dGlvbi9jb2x1bW5fc2VsZWN0b3InLCAnc291cmNlcy9zZWxlY3Rpb24vcm93 X3NlCiAgICAgICB9CiAKICAgICAgICQuZXh0ZW5kKHRoaXMsIHsKLSAgICAg ICAgImluaXQiOiBpbml0LAotICAgICAgICAiZ2V0Q29sdW1uRGVmaW5pdGlv bnNXaXRoQ2hlY2tib3hlcyI6IGdldENvbHVtbkRlZmluaXRpb25zV2l0aENo ZWNrYm94ZXMKKyAgICAgICAgJ2luaXQnOiBpbml0LAorICAgICAgICAnZ2V0 Q29sdW1uRGVmaW5pdGlvbnNXaXRoQ2hlY2tib3hlcyc6IGdldENvbHVtbkRl ZmluaXRpb25zV2l0aENoZWNrYm94ZXMsCiAgICAgICB9KTsKICAgICB9Owog CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvc2VsZWN0aW9u L3JhbmdlX2JvdW5kYXJ5X25hdmlnYXRvci5qcyBiL3dlYi9wZ2FkbWluL3N0 YXRpYy9qcy9zZWxlY3Rpb24vcmFuZ2VfYm91bmRhcnlfbmF2aWdhdG9yLmpz CmluZGV4IGEyNjhkMjQ1Li5mNjk1NDBiOSAxMDA2NDQKLS0tIGEvd2ViL3Bn YWRtaW4vc3RhdGljL2pzL3NlbGVjdGlvbi9yYW5nZV9ib3VuZGFyeV9uYXZp Z2F0b3IuanMKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3NlbGVjdGlv bi9yYW5nZV9ib3VuZGFyeV9uYXZpZ2F0b3IuanMKQEAgLTk5LDEzICs5OSwx MyBAQCBkZWZpbmUoWydzb3VyY2VzL3NlbGVjdGlvbi9yYW5nZV9zZWxlY3Rp b25faGVscGVyJ10sIGZ1bmN0aW9uIChSYW5nZVNlbGVjdGlvbkhlbAogICAg ICAgdmFyIHZhbCA9IGRhdGFbcm93SWRdW2NvbHVtbkRlZmluaXRpb25zW2Nv bElkXS5wb3NdOwogCiAgICAgICBpZiAodmFsICYmIF8uaXNPYmplY3QodmFs KSkgewotICAgICAgICB2YWwgPSAiJyIgKyBKU09OLnN0cmluZ2lmeSh2YWwp ICsgIiciOwotICAgICAgfSBlbHNlIGlmICh2YWwgJiYgdHlwZW9mIHZhbCAh PSAibnVtYmVyIiAmJiB0eXBlb2YgdmFsICE9ICJib29sZWFuIikgewotICAg ICAgICB2YWwgPSAiJyIgKyB2YWwudG9TdHJpbmcoKSArICInIjsKKyAgICAg ICAgdmFsID0gJ1wnJyArIEpTT04uc3RyaW5naWZ5KHZhbCkgKyAnXCcnOwor ICAgICAgfSBlbHNlIGlmICh2YWwgJiYgdHlwZW9mIHZhbCAhPSAnbnVtYmVy JyAmJiB0eXBlb2YgdmFsICE9ICdib29sZWFuJykgeworICAgICAgICB2YWwg PSAnXCcnICsgdmFsLnRvU3RyaW5nKCkgKyAnXCcnOwogICAgICAgfSBlbHNl IGlmIChfLmlzTnVsbCh2YWwpIHx8IF8uaXNVbmRlZmluZWQodmFsKSkgewog ICAgICAgICB2YWwgPSAnJzsKICAgICAgIH0KICAgICAgIHJldHVybiB2YWw7 Ci0gICAgfQorICAgIH0sCiAgIH07CiB9KTsKXCBObyBuZXdsaW5lIGF0IGVu ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMv c2VsZWN0aW9uL3JhbmdlX3NlbGVjdGlvbl9oZWxwZXIuanMgYi93ZWIvcGdh ZG1pbi9zdGF0aWMvanMvc2VsZWN0aW9uL3JhbmdlX3NlbGVjdGlvbl9oZWxw ZXIuanMKaW5kZXggMzFhZDNiZjcuLjRiZDU1OTc1IDEwMDY0NAotLS0gYS93 ZWIvcGdhZG1pbi9zdGF0aWMvanMvc2VsZWN0aW9uL3JhbmdlX3NlbGVjdGlv bl9oZWxwZXIuanMKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3NlbGVj dGlvbi9yYW5nZV9zZWxlY3Rpb25faGVscGVyLmpzCkBAIC04LDE0ICs4LDE0 IEBAIGRlZmluZShbJ3NsaWNrZ3JpZCddLCBmdW5jdGlvbiAoKSB7CiAKICAg dmFyIGlzUmFuZ2VTZWxlY3RlZCA9IGZ1bmN0aW9uIChzZWxlY3RlZFJhbmdl cywgcmFuZ2UpIHsKICAgICByZXR1cm4gXy5hbnkoc2VsZWN0ZWRSYW5nZXMs IGZ1bmN0aW9uIChzZWxlY3RlZFJhbmdlKSB7Ci0gICAgICByZXR1cm4gaXNT YW1lUmFuZ2Uoc2VsZWN0ZWRSYW5nZSwgcmFuZ2UpCi0gICAgfSkKKyAgICAg IHJldHVybiBpc1NhbWVSYW5nZShzZWxlY3RlZFJhbmdlLCByYW5nZSk7Cisg ICAgfSk7CiAgIH07CiAKICAgdmFyIHJlbW92ZVJhbmdlID0gZnVuY3Rpb24g KHNlbGVjdGVkUmFuZ2VzLCByYW5nZSkgewogICAgIHJldHVybiBfLmZpbHRl cihzZWxlY3RlZFJhbmdlcywgZnVuY3Rpb24gKHNlbGVjdGVkUmFuZ2UpIHsK LSAgICAgIHJldHVybiAhKGlzU2FtZVJhbmdlKHNlbGVjdGVkUmFuZ2UsIHJh bmdlKSkKLSAgICB9KQorICAgICAgcmV0dXJuICEoaXNTYW1lUmFuZ2Uoc2Vs ZWN0ZWRSYW5nZSwgcmFuZ2UpKTsKKyAgICB9KTsKICAgfTsKIAogICB2YXIg YWRkUmFuZ2UgPSBmdW5jdGlvbiAocmFuZ2VzLCByYW5nZSkgewpAQCAtMjYs MTUgKzI2LDE1IEBAIGRlZmluZShbJ3NsaWNrZ3JpZCddLCBmdW5jdGlvbiAo KSB7CiAgIHZhciBhcmVBbGxSYW5nZXNSb3dzID0gZnVuY3Rpb24gKHJhbmdl cywgZ3JpZCkgewogICAgIHJldHVybiBfLmV2ZXJ5KHJhbmdlcywgZnVuY3Rp b24gKHJhbmdlKSB7CiAgICAgICByZXR1cm4gcmFuZ2UuZnJvbVJvdyA9PSBy YW5nZS50b1JvdyAmJgotICAgICAgICByYW5nZS5mcm9tQ2VsbCA9PSAxICYm IHJhbmdlLnRvQ2VsbCA9PSBncmlkLmdldENvbHVtbnMoKS5sZW5ndGggLSAx Ci0gICAgfSkKKyAgICAgICAgcmFuZ2UuZnJvbUNlbGwgPT0gMSAmJiByYW5n ZS50b0NlbGwgPT0gZ3JpZC5nZXRDb2x1bW5zKCkubGVuZ3RoIC0gMTsKKyAg ICB9KTsKICAgfTsKIAogICB2YXIgYXJlQWxsUmFuZ2VzQ29sdW1ucyA9IGZ1 bmN0aW9uIChyYW5nZXMsIGdyaWQpIHsKICAgICByZXR1cm4gXy5ldmVyeShy YW5nZXMsIGZ1bmN0aW9uIChyYW5nZSkgewogICAgICAgcmV0dXJuIHJhbmdl LmZyb21DZWxsID09IHJhbmdlLnRvQ2VsbCAmJgotICAgICAgICByYW5nZS5m cm9tUm93ID09IDAgJiYgcmFuZ2UudG9Sb3cgPT0gZ3JpZC5nZXREYXRhTGVu Z3RoKCkgLSAxCi0gICAgfSkKKyAgICAgICAgcmFuZ2UuZnJvbVJvdyA9PSAw ICYmIHJhbmdlLnRvUm93ID09IGdyaWQuZ2V0RGF0YUxlbmd0aCgpIC0gMTsK KyAgICB9KTsKICAgfTsKIAogICB2YXIgcmFuZ2VGb3JSb3cgPSBmdW5jdGlv biAoZ3JpZCwgcm93SWQpIHsKQEAgLTQ2LDggKzQ2LDggQEAgZGVmaW5lKFsn c2xpY2tncmlkJ10sIGZ1bmN0aW9uICgpIHsKICAgfTsKIAogICBmdW5jdGlv biByYW5nZUZvckNvbHVtbihncmlkLCBjb2x1bW5JbmRleCkgewotICAgIHJl dHVybiBuZXcgU2xpY2suUmFuZ2UoMCwgY29sdW1uSW5kZXgsIGdyaWQuZ2V0 RGF0YUxlbmd0aCgpIC0gMSwgY29sdW1uSW5kZXgpCi0gIH07CisgICAgcmV0 dXJuIG5ldyBTbGljay5SYW5nZSgwLCBjb2x1bW5JbmRleCwgZ3JpZC5nZXRE YXRhTGVuZ3RoKCkgLSAxLCBjb2x1bW5JbmRleCk7CisgIH0KIAogICB2YXIg Z2V0UmFuZ2VPZldob2xlR3JpZCA9IGZ1bmN0aW9uIChncmlkKSB7CiAgICAg cmV0dXJuIG5ldyBTbGljay5SYW5nZSgwLCAxLCBncmlkLmdldERhdGFMZW5n dGgoKSAtIDEsIGdyaWQuZ2V0Q29sdW1ucygpLmxlbmd0aCAtIDEpOwpAQCAt NzMsNiArNzMsNiBAQCBkZWZpbmUoWydzbGlja2dyaWQnXSwgZnVuY3Rpb24g KCkgewogICAgIHJhbmdlRm9yQ29sdW1uOiByYW5nZUZvckNvbHVtbiwKICAg ICBpc0VudGlyZUdyaWRTZWxlY3RlZDogaXNFbnRpcmVHcmlkU2VsZWN0ZWQs CiAgICAgZ2V0UmFuZ2VPZldob2xlR3JpZDogZ2V0UmFuZ2VPZldob2xlR3Jp ZCwKLSAgICBpc0ZpcnN0Q29sdW1uRGF0YTogaXNGaXJzdENvbHVtbkRhdGEK LSAgfQorICAgIGlzRmlyc3RDb2x1bW5EYXRhOiBpc0ZpcnN0Q29sdW1uRGF0 YSwKKyAgfTsKIH0pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9zZWxlY3Rpb24vcm93 X3NlbGVjdG9yLmpzIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3NlbGVjdGlv bi9yb3dfc2VsZWN0b3IuanMKaW5kZXggNzZhOGMxYTcuLjU4M2Y4YTc1IDEw MDY0NAotLS0gYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvc2VsZWN0aW9uL3Jv d19zZWxlY3Rvci5qcworKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvc2Vs ZWN0aW9uL3Jvd19zZWxlY3Rvci5qcwpAQCAtOCwxOCArOCwxOCBAQCBkZWZp bmUoWydqcXVlcnknLCAnc291cmNlcy9zZWxlY3Rpb24vcmFuZ2Vfc2VsZWN0 aW9uX2hlbHBlcicsICdzbGlja2dyaWQnXSwgZnVuYwogICAgICAgZ3JpZC5n ZXRTZWxlY3Rpb25Nb2RlbCgpCiAgICAgICAgIC5vblNlbGVjdGVkUmFuZ2Vz Q2hhbmdlZC5zdWJzY3JpYmUoaGFuZGxlU2VsZWN0ZWRSYW5nZXNDaGFuZ2Vk LmJpbmQobnVsbCwgZ3JpZCkpOwogICAgICAgZ3JpZEV2ZW50QnVzCi0gICAg ICAgIC5zdWJzY3JpYmUoZ3JpZC5vbkNsaWNrLCBoYW5kbGVDbGljay5iaW5k KG51bGwsIGdyaWQpKQorICAgICAgICAuc3Vic2NyaWJlKGdyaWQub25DbGlj aywgaGFuZGxlQ2xpY2suYmluZChudWxsLCBncmlkKSk7CiAgICAgfTsKIAog ICAgIHZhciBoYW5kbGVDbGljayA9IGZ1bmN0aW9uIChncmlkLCBldmVudCwg YXJncykgewogICAgICAgaWYgKGdyaWQuZ2V0Q29sdW1ucygpW2FyZ3MuY2Vs bF0uaWQgPT09ICdyb3ctaGVhZGVyLWNvbHVtbicpIHsKLSAgICAgICAgaWYg KGV2ZW50LnRhcmdldC50eXBlICE9ICJjaGVja2JveCIpIHsKKyAgICAgICAg aWYgKGV2ZW50LnRhcmdldC50eXBlICE9ICdjaGVja2JveCcpIHsKICAgICAg ICAgICB2YXIgY2hlY2tib3ggPSAkKGV2ZW50LnRhcmdldCkuZmluZCgnaW5w dXRbdHlwZT0iY2hlY2tib3giXScpOwogICAgICAgICAgIHRvZ2dsZUNoZWNr Ym94KCQoY2hlY2tib3gpKTsKICAgICAgICAgfQogICAgICAgICB1cGRhdGVS YW5nZXMoZ3JpZCwgYXJncy5yb3cpOwogICAgICAgfQotICAgIH0KKyAgICB9 OwogCiAgICAgdmFyIGhhbmRsZVNlbGVjdGVkUmFuZ2VzQ2hhbmdlZCA9IGZ1 bmN0aW9uIChncmlkLCBldmVudCwgcmFuZ2VzKSB7CiAgICAgICAkKCdbZGF0 YS1jZWxsLXR5cGU9InJvdy1oZWFkZXItY2hlY2tib3giXTpjaGVja2VkJykK QEAgLTMyLDcgKzMyLDcgQEAgZGVmaW5lKFsnanF1ZXJ5JywgJ3NvdXJjZXMv c2VsZWN0aW9uL3JhbmdlX3NlbGVjdGlvbl9oZWxwZXInLCAnc2xpY2tncmlk J10sIGZ1bmMKICAgICAgICAgICAgIHRvZ2dsZUNoZWNrYm94KCRjaGVja2Jv eCk7CiAgICAgICAgICAgfQogICAgICAgICB9KTsKLSAgICB9CisgICAgfTsK IAogICAgIHZhciB1cGRhdGVSYW5nZXMgPSBmdW5jdGlvbiAoZ3JpZCwgcm93 SWQpIHsKICAgICAgIHZhciBzZWxlY3Rpb25Nb2RlbCA9IGdyaWQuZ2V0U2Vs ZWN0aW9uTW9kZWwoKTsKQEAgLTUxLDEzICs1MSwxMyBAQCBkZWZpbmUoWydq cXVlcnknLCAnc291cmNlcy9zZWxlY3Rpb24vcmFuZ2Vfc2VsZWN0aW9uX2hl bHBlcicsICdzbGlja2dyaWQnXSwgZnVuYwogICAgICAgICB9CiAgICAgICB9 CiAgICAgICBzZWxlY3Rpb25Nb2RlbC5zZXRTZWxlY3RlZFJhbmdlcyhuZXdS YW5nZXMpOwotICAgIH0KKyAgICB9OwogCiAgICAgdmFyIHRvZ2dsZUNoZWNr Ym94ID0gZnVuY3Rpb24gKGNoZWNrYm94KSB7Ci0gICAgICBpZiAoY2hlY2ti b3gucHJvcCgiY2hlY2tlZCIpKSB7Ci0gICAgICAgIGNoZWNrYm94LnByb3Ao ImNoZWNrZWQiLCBmYWxzZSkKKyAgICAgIGlmIChjaGVja2JveC5wcm9wKCdj aGVja2VkJykpIHsKKyAgICAgICAgY2hlY2tib3gucHJvcCgnY2hlY2tlZCcs IGZhbHNlKTsKICAgICAgIH0gZWxzZSB7Ci0gICAgICAgIGNoZWNrYm94LnBy b3AoImNoZWNrZWQiLCB0cnVlKQorICAgICAgICBjaGVja2JveC5wcm9wKCdj aGVja2VkJywgdHJ1ZSk7CiAgICAgICB9CiAgICAgfTsKIApAQCAtNzAsMTUg KzcwLDE1IEBAIGRlZmluZShbJ2pxdWVyeScsICdzb3VyY2VzL3NlbGVjdGlv bi9yYW5nZV9zZWxlY3Rpb25faGVscGVyJywgJ3NsaWNrZ3JpZCddLCBmdW5j CiAgICAgICAgIGZvcm1hdHRlcjogZnVuY3Rpb24gKHJvd0luZGV4KSB7CiAg ICAgICAgICAgcmV0dXJuICc8aW5wdXQgdHlwZT0iY2hlY2tib3giICcgKwog ICAgICAgICAgICAgJ2RhdGEtcm93PSInICsgcm93SW5kZXggKyAnIiAnICsK LSAgICAgICAgICAgICdkYXRhLWNlbGwtdHlwZT0icm93LWhlYWRlci1jaGVj a2JveCIvPicKLSAgICAgICAgfQorICAgICAgICAgICAgJ2RhdGEtY2VsbC10 eXBlPSJyb3ctaGVhZGVyLWNoZWNrYm94Ii8+JzsKKyAgICAgICAgfSwKICAg ICAgIH0pOwogICAgICAgcmV0dXJuIGNvbHVtbkRlZmluaXRpb25zOwogICAg IH07CiAKICAgICAkLmV4dGVuZCh0aGlzLCB7Ci0gICAgICAiaW5pdCI6IGlu aXQsCi0gICAgICAiZ2V0Q29sdW1uRGVmaW5pdGlvbnNXaXRoQ2hlY2tib3hl cyI6IGdldENvbHVtbkRlZmluaXRpb25zV2l0aENoZWNrYm94ZXMKKyAgICAg ICdpbml0JzogaW5pdCwKKyAgICAgICdnZXRDb2x1bW5EZWZpbml0aW9uc1dp dGhDaGVja2JveGVzJzogZ2V0Q29sdW1uRGVmaW5pdGlvbnNXaXRoQ2hlY2ti b3hlcywKICAgICB9KTsKICAgfTsKICAgcmV0dXJuIFJvd1NlbGVjdG9yOwpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzeC9jb21wb25lbnRz LmpzeCBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qc3gvY29tcG9uZW50cy5qc3gK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjViY2I1MjA4 Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzeC9j b21wb25lbnRzLmpzeApAQCAtMCwwICsxLDggQEAKKworaW1wb3J0IFJlYWN0 IGZyb20gJ3JlYWN0JzsKK2ltcG9ydCB7cmVuZGVyfSBmcm9tICdyZWFjdC1k b20nOworCitleHBvcnQgeworICByZW5kZXIsCisgIFJlYWN0LAorfTsKXCBO byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdh ZG1pbi90b29scy9qYXZhc2NyaXB0L19faW5pdF9fLnB5IGIvd2ViL3BnYWRt aW4vdG9vbHMvamF2YXNjcmlwdC9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMC4uOWU1NWQyYjIKLS0tIC9kZXYvbnVs bAorKysgYi93ZWIvcGdhZG1pbi90b29scy9qYXZhc2NyaXB0L19faW5pdF9f LnB5CkBAIC0wLDAgKzEsNiBAQAorIworIyBwZ0FkbWluIDQgLSBQb3N0Z3Jl U1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTcsIFRo ZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBp cyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9qYXZhc2NyaXB0L2phdmFz Y3JpcHRfYnVuZGxlci5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL2phdmFzY3Jp cHQvamF2YXNjcmlwdF9idW5kbGVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwLi5kNzRlM2NiZQotLS0gL2Rldi9udWxsCisrKyBi L3dlYi9wZ2FkbWluL3Rvb2xzL2phdmFzY3JpcHQvamF2YXNjcmlwdF9idW5k bGVyLnB5CkBAIC0wLDAgKzEsNjMgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMK KyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxNywgVGhlIHBnQWRtaW4g RGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2Vk IHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCisKK2ltcG9ydCBvcworZnJvbSBjb250ZXh0 bGliIGltcG9ydCBjb250ZXh0bWFuYWdlcgorZnJvbSBzdWJwcm9jZXNzIGlt cG9ydCBjYWxsCitmcm9tIHBnYWRtaW4udXRpbHMgaW1wb3J0IHUsIGZzX2Vu Y29kaW5nLCBmaWxlX3F1b3RlCisKKworIyBlbnVtLWxpa2UgZm9yIHRyYWNr aW5nIHdoZXRoZXIgd2UgaGF2ZQorY2xhc3MgSnNTdGF0ZToKKyAgICBOT05F ID0gMAorICAgIE9MRCA9IDEKKyAgICBORVcgPSAyCisKKworY2xhc3MgSmF2 YXNjcmlwdEJ1bmRsZXI6CisgICAgIiIiQnVpbGRzIEphdmFzY3JpcHQgYnVu ZGxlIGZpbGVzIGJ5IGRlbGVnYXRpbmcgdG8gd2VicGFjayIiIgorCisgICAg ZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLmpzU3RhdGUgPSBK c1N0YXRlLk5PTkUKKworICAgIGRlZiBidW5kbGUoc2VsZik6CisgICAgICAg IHRyeToKKyAgICAgICAgICAgIHRyeV9idWlsZGluZ19qcygpCisgICAgICAg ICAgICBzZWxmLmpzU3RhdGUgPSBKc1N0YXRlLk5FVworICAgICAgICBleGNl cHQgT1NFcnJvcjoKKyAgICAgICAgICAgIHdlYmRpcl9wYXRoKCkKKyAgICAg ICAgICAgIGdlbmVyYXRlZEphdmFzY3JpcHREaXIgPSBvcy5wYXRoLmpvaW4o d2ViZGlyX3BhdGgoKSwgJ3BnYWRtaW4nLCAnc3RhdGljJywgJ2pzJywgJ2dl bmVyYXRlZCcpCisgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhnZW5l cmF0ZWRKYXZhc2NyaXB0RGlyKSBhbmQgb3MubGlzdGRpcihnZW5lcmF0ZWRK YXZhc2NyaXB0RGlyKToKKyAgICAgICAgICAgICAgICBzZWxmLmpzU3RhdGUg PSBKc1N0YXRlLk9MRAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAg ICAgICBzZWxmLmpzU3RhdGUgPSBKc1N0YXRlLk5PTkUKKworICAgIGRlZiBy ZXBvcnQoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmpzU3RhdGUKKwor CitAY29udGV4dG1hbmFnZXIKK2RlZiBwdXNoZChuZXdfZGlyKToKKyAgICBw cmV2aW91c19kaXIgPSBvcy5nZXRjd2QoKQorICAgIG9zLmNoZGlyKG5ld19k aXIpCisgICAgeWllbGQKKyAgICBvcy5jaGRpcihwcmV2aW91c19kaXIpCisK KworZGVmIHdlYmRpcl9wYXRoKCk6CisgICAgZGlybmFtZSA9IG9zLnBhdGgu ZGlybmFtZQorICAgIHRoaXNQYXRoID0gb3MucGF0aC5yZWFscGF0aCh1KF9f ZmlsZV9fLCBmc19lbmNvZGluZykpCisgICAgcmV0dXJuIGRpcm5hbWUoZGly bmFtZShkaXJuYW1lKGRpcm5hbWUodGhpc1BhdGgpKSkpCisKKworZGVmIHRy eV9idWlsZGluZ19qcygpOgorICAgIG5vZGVfbW9kdWxlc19kaXIgPSBvcy5w YXRoLmpvaW4od2ViZGlyX3BhdGgoKSwgJ25vZGVfbW9kdWxlcycsICcuYmlu JykKKyAgICB3aXRoIHB1c2hkKG5vZGVfbW9kdWxlc19kaXIpOgorICAgICAg ICBpZiBjYWxsKFsnZ3J1bnQnLCAnd2VicGFjayddKSAhPSAwOgorICAgICAg ICAgICAgcmFpc2UgT1NFcnJvcignRXJyb3IgZXhlY3V0aW5nIGdydW50JykK ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2phdmFzY3JpcHQvdGVz dHMvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi90b29scy9qYXZhc2NyaXB0 L3Rlc3RzL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwLi45ZTU1ZDJiMgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9w Z2FkbWluL3Rvb2xzL2phdmFzY3JpcHQvdGVzdHMvX19pbml0X18ucHkKQEAg LTAsMCArMSw2IEBACisjCisjIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9v bHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxNywgVGhlIHBnQWRt aW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVh c2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2phdmFzY3JpcHQvdGVzdHMvdGVzdF9q YXZhc2NyaXB0X2J1bmRsZXIucHkgYi93ZWIvcGdhZG1pbi90b29scy9qYXZh c2NyaXB0L3Rlc3RzL3Rlc3RfamF2YXNjcmlwdF9idW5kbGVyLnB5Cm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi44Yzg1MzNjNAotLS0g L2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2phdmFzY3JpcHQv dGVzdHMvdGVzdF9qYXZhc2NyaXB0X2J1bmRsZXIucHkKQEAgLTAsMCArMSwx MTQgQEAKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIwor IyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE3LCBUaGUgcGdBZG1pbiBEZXZl bG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5k ZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworCitpbXBvcnQgc3lzCisK K2Zyb20gcGdhZG1pbi51dGlscy5yb3V0ZSBpbXBvcnQgQmFzZVRlc3RHZW5l cmF0b3IKK2lmIHN5cy52ZXJzaW9uX2luZm8gPCAoMywgMyk6CisgICAgaW1w b3J0IG1vY2sKK2Vsc2U6CisgICAgaW1wb3J0IHVuaXR0ZXN0Lm1vY2sgYXMg bW9jaworCisKK2NsYXNzIEphdmFzY3JpcHRCdW5kbGVyVGVzdENhc2UoQmFz ZVRlc3RHZW5lcmF0b3IpOgorICAgICIiIlRoaXMgdGVzdHMgdGhhdCB0aGUg amF2YXNjcmlwdCBidW5kbGVyIHRvb2wgY2F1c2VzIGdydW50IHRvIGJ1aWxk LAorICAgIGFuZCBjYW4gYmUgaW52b2tlZCBiZWZvcmUgYW5kIGFmdGVyIGFw cCBzdGFydCBjb3JyZWN0bHkiIiIKKworICAgIHNjZW5hcmlvcyA9IFsoJ3Nj ZW5hcmlvIG5hbWU6IEphdmFzY3JpcHRCdW5kbGVyVGVzdENhc2UnLCBkaWN0 KCkpXQorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLm1v Y2tTdWJwcm9jZXNzID0gbW9jay5Nb2NrKCkKKyAgICAgICAgc2VsZi5tb2Nr T3MgPSBtb2NrLk1vY2soKQorICAgICAgICBzeXMubW9kdWxlc1snc3VicHJv Y2VzcyddID0gc2VsZi5tb2NrU3VicHJvY2VzcworICAgICAgICBzeXMubW9k dWxlc1snb3MnXSA9IHNlbGYubW9ja09zCisKKyAgICBkZWYgcnVuVGVzdChz ZWxmKToKKyAgICAgICAgZnJvbSBwZ2FkbWluLnRvb2xzLmphdmFzY3JpcHQu amF2YXNjcmlwdF9idW5kbGVyIGltcG9ydCBKYXZhc2NyaXB0QnVuZGxlcgor ICAgICAgICBmcm9tIHBnYWRtaW4udG9vbHMuamF2YXNjcmlwdC5qYXZhc2Ny aXB0X2J1bmRsZXIgaW1wb3J0IEpzU3RhdGUKKyAgICAgICAgc2VsZi5KYXZh c2NyaXB0QnVuZGxlciA9IEphdmFzY3JpcHRCdW5kbGVyCisgICAgICAgIHNl bGYuSnNTdGF0ZSA9IEpzU3RhdGUKKworICAgICAgICBzZWxmLl9idW5kbGlu Z19zdWNjZWVkcygpCisgICAgICAgIHNlbGYucmVzZXRUZXN0U3RhdGUoKQor ICAgICAgICBzZWxmLl9idW5kbGluZ19mYWlsc19hbmRfdGhlcmVfaXNfbm9f ZXhpc3RpbmdfYnVuZGxlKCkKKyAgICAgICAgc2VsZi5yZXNldFRlc3RTdGF0 ZSgpCisgICAgICAgIHNlbGYuX2J1bmRsaW5nX2ZhaWxzX3doZW5fZ3J1bnRf cmV0dXJuc19ub256ZXJvKCkKKyAgICAgICAgc2VsZi5yZXNldFRlc3RTdGF0 ZSgpCisgICAgICAgIHNlbGYuX2J1bmRsaW5nX2ZhaWxzX2FuZF90aGVyZV9p c19ub19leGlzdGluZ19idW5kbGVfZGlyZWN0b3J5KCkKKyAgICAgICAgc2Vs Zi5yZXNldFRlc3RTdGF0ZSgpCisgICAgICAgIHNlbGYuX2J1bmRsaW5nX2Zh aWxzX2J1dF90aGVyZV93YXNfZXhpc3RpbmdfYnVuZGxlKCkKKyAgICAgICAg c2VsZi5yZXNldFRlc3RTdGF0ZSgpCisKKyAgICBkZWYgcmVzZXRUZXN0U3Rh dGUoc2VsZik6CisgICAgICAgIHNlbGYubW9ja1N1YnByb2Nlc3MucmVzZXRf bW9jaygpCisgICAgICAgIHNlbGYubW9ja1N1YnByb2Nlc3MuY2FsbC5zaWRl X2VmZmVjdCA9IE5vbmUKKyAgICAgICAgc2VsZi5tb2NrT3MucmVzZXRfbW9j aygpCisgICAgICAgIHNlbGYubW9ja09zLmxpc3RkaXIuc2lkZV9lZmZlY3Qg PSBOb25lCisgICAgICAgIHNlbGYubW9ja09zLnBhdGguZXhpc3RzLnNpZGVf ZWZmZWN0ID0gTm9uZQorCisgICAgZGVmIF9idW5kbGluZ19zdWNjZWVkcyhz ZWxmKToKKyAgICAgICAgamF2YXNjcmlwdEJ1bmRsZXIgPSBzZWxmLkphdmFz Y3JpcHRCdW5kbGVyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4o c2VsZi5tb2NrU3VicHJvY2Vzcy5tZXRob2RfY2FsbHMpLCAwKQorICAgICAg ICBzZWxmLm1vY2tTdWJwcm9jZXNzLmNhbGwucmV0dXJuX3ZhbHVlID0gMAor CisgICAgICAgIHNlbGYubW9ja09zLmxpc3RkaXIucmV0dXJuX3ZhbHVlID0g W3UnaGlzdG9yeS5qcycsIHUncmVhY3RDb21wb25lbnRzLmpzJ10KKworICAg ICAgICBqYXZhc2NyaXB0QnVuZGxlci5idW5kbGUoKQorICAgICAgICBzZWxm Lm1vY2tTdWJwcm9jZXNzLmNhbGwuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgo WydncnVudCcsICd3ZWJwYWNrJ10pCisKKyAgICAgICAgcmVwb3J0ZWRTdGF0 ZSA9IGphdmFzY3JpcHRCdW5kbGVyLnJlcG9ydCgpCisgICAgICAgIGV4cGVj dGVkU3RhdGUgPSBzZWxmLkpzU3RhdGUuTkVXCisgICAgICAgIHNlbGYuYXNz ZXJ0RXF1YWwocmVwb3J0ZWRTdGF0ZSwgZXhwZWN0ZWRTdGF0ZSkKKworICAg IGRlZiBfYnVuZGxpbmdfZmFpbHNfd2hlbl9ncnVudF9yZXR1cm5zX25vbnpl cm8oc2VsZik6CisgICAgICAgIGphdmFzY3JpcHRCdW5kbGVyID0gc2VsZi5K YXZhc2NyaXB0QnVuZGxlcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo bGVuKHNlbGYubW9ja1N1YnByb2Nlc3MubWV0aG9kX2NhbGxzKSwgMCkKKyAg ICAgICAgc2VsZi5tb2NrT3MubGlzdGRpci5yZXR1cm5fdmFsdWUgPSBbXQor ICAgICAgICBzZWxmLm1vY2tTdWJwcm9jZXNzLmNhbGwucmV0dXJuX3ZhbHVl ID0gOTkKKworICAgICAgICBqYXZhc2NyaXB0QnVuZGxlci5idW5kbGUoKQor CisgICAgICAgIHJlcG9ydGVkU3RhdGUgPSBqYXZhc2NyaXB0QnVuZGxlci5y ZXBvcnQoKQorICAgICAgICBleHBlY3RlZFN0YXRlID0gc2VsZi5Kc1N0YXRl Lk5PTkUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXBvcnRlZFN0YXRl LCBleHBlY3RlZFN0YXRlKQorCisgICAgZGVmIF9idW5kbGluZ19mYWlsc19h bmRfdGhlcmVfaXNfbm9fZXhpc3RpbmdfYnVuZGxlKHNlbGYpOgorICAgICAg ICBqYXZhc2NyaXB0QnVuZGxlciA9IHNlbGYuSmF2YXNjcmlwdEJ1bmRsZXIo KQorICAgICAgICBzZWxmLm1vY2tTdWJwcm9jZXNzLmNhbGwuc2lkZV9lZmZl Y3QgPSBPU0Vycm9yKCJtb2NrIGV4Y2VwdGlvbiBiZWhhdmlvciIpCisgICAg ICAgIHNlbGYubW9ja09zLnBhdGguZXhpc3RzLnJldHVybl92YWx1ZSA9IFRy dWUKKyAgICAgICAgc2VsZi5tb2NrT3MubGlzdGRpci5yZXR1cm5fdmFsdWUg PSBbXQorCisgICAgICAgIGphdmFzY3JpcHRCdW5kbGVyLmJ1bmRsZSgpCisK KyAgICAgICAgcmVwb3J0ZWRTdGF0ZSA9IGphdmFzY3JpcHRCdW5kbGVyLnJl cG9ydCgpCisgICAgICAgIGV4cGVjdGVkU3RhdGUgPSBzZWxmLkpzU3RhdGUu Tk9ORQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcG9ydGVkU3RhdGUs IGV4cGVjdGVkU3RhdGUpCisKKyAgICBkZWYgX2J1bmRsaW5nX2ZhaWxzX2Fu ZF90aGVyZV9pc19ub19leGlzdGluZ19idW5kbGVfZGlyZWN0b3J5KHNlbGYp OgorICAgICAgICBqYXZhc2NyaXB0QnVuZGxlciA9IHNlbGYuSmF2YXNjcmlw dEJ1bmRsZXIoKQorICAgICAgICBzZWxmLm1vY2tTdWJwcm9jZXNzLmNhbGwu c2lkZV9lZmZlY3QgPSBPU0Vycm9yKCJtb2NrIGV4Y2VwdGlvbiBiZWhhdmlv ciIpCisgICAgICAgIHNlbGYubW9ja09zLnBhdGguZXhpc3RzLnJldHVybl92 YWx1ZSA9IEZhbHNlCisgICAgICAgIHNlbGYubW9ja09zLmxpc3RkaXIuc2lk ZV9lZmZlY3QgPSBPU0Vycm9yKCJtb2NrIGV4Y2VwdGlvbiBiZWhhdmlvciIp CisKKyAgICAgICAgamF2YXNjcmlwdEJ1bmRsZXIuYnVuZGxlKCkKKworICAg ICAgICByZXBvcnRlZFN0YXRlID0gamF2YXNjcmlwdEJ1bmRsZXIucmVwb3J0 KCkKKyAgICAgICAgZXhwZWN0ZWRTdGF0ZSA9IHNlbGYuSnNTdGF0ZS5OT05F CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwb3J0ZWRTdGF0ZSwgZXhw ZWN0ZWRTdGF0ZSkKKworICAgIGRlZiBfYnVuZGxpbmdfZmFpbHNfYnV0X3Ro ZXJlX3dhc19leGlzdGluZ19idW5kbGUoc2VsZik6CisgICAgICAgIGphdmFz Y3JpcHRCdW5kbGVyID0gc2VsZi5KYXZhc2NyaXB0QnVuZGxlcigpCisgICAg ICAgIHNlbGYubW9ja1N1YnByb2Nlc3MuY2FsbC5zaWRlX2VmZmVjdCA9IE9T RXJyb3IoIm1vY2sgZXhjZXB0aW9uIGJlaGF2aW9yIikKKyAgICAgICAgc2Vs Zi5tb2NrT3MucGF0aC5leGlzdHMucmV0dXJuX3ZhbHVlID0gVHJ1ZQorICAg ICAgICBzZWxmLm1vY2tPcy5saXN0ZGlyLnJldHVybl92YWx1ZSA9IFt1J2hp c3RvcnkuanMnLCB1J3JlYWN0Q29tcG9uZW50cy5qcyddCisKKyAgICAgICAg amF2YXNjcmlwdEJ1bmRsZXIuYnVuZGxlKCkKKyAgICAgICAgc2VsZi5tb2Nr U3VicHJvY2Vzcy5jYWxsLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKFsnZ3J1 bnQnLCAnd2VicGFjayddKQorCisgICAgICAgIHJlcG9ydGVkU3RhdGUgPSBq YXZhc2NyaXB0QnVuZGxlci5yZXBvcnQoKQorICAgICAgICBleHBlY3RlZFN0 YXRlID0gc2VsZi5Kc1N0YXRlLk9MRAorICAgICAgICBzZWxmLmFzc2VydEVx dWFsKHJlcG9ydGVkU3RhdGUsIGV4cGVjdGVkU3RhdGUpCmRpZmYgLS1naXQg YS93ZWIvcmVncmVzc2lvbi9SRUFETUUgYi93ZWIvcmVncmVzc2lvbi9SRUFE TUUKaW5kZXggZjBkNzI4MmUuLjkyZWE1NzE1IDEwMDY0NAotLS0gYS93ZWIv cmVncmVzc2lvbi9SRUFETUUKKysrIGIvd2ViL3JlZ3Jlc3Npb24vUkVBRE1F CkBAIC0xNzcsMTYgKzE3NywyMCBAQCBKYXZhc2NyaXB0IFRlc3RzOgogCiAg ICAgc3VkbyBwb3J0IGluc3RhbGwgbm9kZWpzNyB5YXJuCiAKKy0gU2VlIGFs c28gdGhlIHRvcC1sZXZlbCBwZ2FkbWluL1JFQURNRSA6IEJ1bmRsaW5nIEph dmFzY3JpcHQKKwogLSBKYXZhc2NyaXB0IHRlc3RzIG11c3QgYmUgcnVuIGZy b20gdGhlIHdlYiBkaXJlY3RvcnkgKHNpbmNlIHRoYXQgaXMgd2hlcmUgbm9k ZV9tb2R1bGVzIGFuZCBrYXJtYS5jb25mIHJlc2lkZSk6CiAKICAgICBjZCB3 ZWIvCiAKIC0gSW5zdGFsbCB0aGUgSlMgbW9kdWxlcyByZXF1aXJlZCBmb3Ig dGVzdGluZzoKIAotICAgIHlhcm4KKyAgICB5YXJuIGluc3RhbGwKIAogLSBO b3cgcnVuIHRoZSB0ZXN0czoKIAotICAgIHlhcm4gcnVuIGthcm1hIHN0YXJ0 IC0tc2luZ2xlLXJ1bgorICAgZ3J1bnQgdGVzdC1jaQogCistIFdoaWxlIGRl dmVsb3BpbmcgcnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZCB0byB3YXRjaCBm b3IgZmlsZSBjaGFuZ2VzIGFuZCBjb250aW51YWxseSBydW4gdGVzdHM6CiAK KyAgIGdydW50IHRlc3QKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL2ph dmFzY3JpcHQvZmFrZV90cmFuc2xhdGlvbnMuanMgYi93ZWIvcmVncmVzc2lv bi9qYXZhc2NyaXB0L2Zha2VfdHJhbnNsYXRpb25zLmpzCmluZGV4IDk1MTZm ZDYzLi5hM2Q0ZjViZCAxMDA2NDQKLS0tIGEvd2ViL3JlZ3Jlc3Npb24vamF2 YXNjcmlwdC9mYWtlX3RyYW5zbGF0aW9ucy5qcworKysgYi93ZWIvcmVncmVz c2lvbi9qYXZhc2NyaXB0L2Zha2VfdHJhbnNsYXRpb25zLmpzCkBAIC04LDUg KzgsNSBAQAogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIAogZGVm aW5lKGZ1bmN0aW9uICgpIHsKLSAgcmV0dXJuIHt9CisgIHJldHVybiB7fTsK IH0pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh L3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvZ2V0dGV4dF9zcGVjLmpzIGIv d2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9nZXR0ZXh0X3NwZWMuanMKaW5k ZXggMmNlOThhMjMuLjU0ZmM0OThkIDEwMDY0NAotLS0gYS93ZWIvcmVncmVz c2lvbi9qYXZhc2NyaXB0L2dldHRleHRfc3BlYy5qcworKysgYi93ZWIvcmVn cmVzc2lvbi9qYXZhc2NyaXB0L2dldHRleHRfc3BlYy5qcwpAQCAtNyw0NSAr Nyw0NiBAQAogLy8KIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAK LWRlZmluZShbInNvdXJjZXMvZ2V0dGV4dCIsICJ0cmFuc2xhdGlvbnMiXSwg ZnVuY3Rpb24gKGdldHRleHQsIHRyYW5zbGF0aW9ucykgewotICBkZXNjcmli ZSgidHJhbnNsYXRlIiwgZnVuY3Rpb24gKCkgewotICAgIGRlc2NyaWJlKCJ3 aGVuIHRoZXJlIGlzIG5vIHRyYW5zbGF0aW9uIiwgZnVuY3Rpb24gKCkgewot ICAgICAgaXQoInJldHVybnMgdGhlIG9yaWdpbmFsIHN0cmluZyIsIGZ1bmN0 aW9uICgpIHsKLSAgICAgICAgZXhwZWN0KGdldHRleHQoInNvbWV0aGluZyB0 byBiZSB0cmFuc2xhdGVkIikpLnRvRXF1YWwoInNvbWV0aGluZyB0byBiZSB0 cmFuc2xhdGVkIik7Ci0gICAgICB9KTsKLQotICAgICAgZGVzY3JpYmUoIndo ZW4gdGhlcmUgYXJlIHN1YnN0aXR1dGlvbnMiLCBmdW5jdGlvbiAoKSB7Ci0g ICAgICAgIGl0KCJpbnRlcnBvbGF0ZXMgYSBzdWJzdGl0dXRpb24iLCBmdW5j dGlvbiAoKSB7Ci0gICAgICAgICAgZXhwZWN0KGdldHRleHQoInRyYW5zbGF0 ZSB0ZXh0IGZvciAlKHBlcnNvbilzIiwgeyJwZXJzb24iOiAiU2FyYWgifSkp LnRvRXF1YWwoInRyYW5zbGF0ZSB0ZXh0IGZvciBTYXJhaCIpCi0gICAgICAg IH0pOwotCi0gICAgICAgIGl0KCJpbnRlcnBvbGF0ZXMgbXVsdGlwbGUgc3Vi c3RpdHV0aW9ucyIsIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICBleHBlY3Qo Z2V0dGV4dCgidHJhbnNsYXRlICclKHRleHQpcycgZm9yICUocGVyc29uKXMi LAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAidGV4dCI6ICJjb25z dGl0dXRpb24iLAotICAgICAgICAgICAgICAicGVyc29uIjogIlNhcmFoIgot ICAgICAgICAgICAgfQotICAgICAgICAgICkpLnRvRXF1YWwoInRyYW5zbGF0 ZSAnY29uc3RpdHV0aW9uJyBmb3IgU2FyYWgiKQotICAgICAgICB9KTsKLSAg ICAgIH0pOworaW1wb3J0IGdldHRleHQgZnJvbSAnc291cmNlcy9nZXR0ZXh0 JzsKK2ltcG9ydCB0cmFuc2xhdGlvbnMgZnJvbSAndHJhbnNsYXRpb25zJzsK IAorZGVzY3JpYmUoJ3RyYW5zbGF0ZScsIGZ1bmN0aW9uICgpIHsKKyAgZGVz Y3JpYmUoJ3doZW4gdGhlcmUgaXMgbm8gdHJhbnNsYXRpb24nLCBmdW5jdGlv biAoKSB7CisgICAgaXQoJ3JldHVybnMgdGhlIG9yaWdpbmFsIHN0cmluZycs IGZ1bmN0aW9uICgpIHsKKyAgICAgIGV4cGVjdChnZXR0ZXh0KCdzb21ldGhp bmcgdG8gYmUgdHJhbnNsYXRlZCcpKS50b0VxdWFsKCdzb21ldGhpbmcgdG8g YmUgdHJhbnNsYXRlZCcpOwogICAgIH0pOwogCi0gICAgZGVzY3JpYmUoIndo ZW4gdGhlcmUgaXMgYSB0cmFuc2xhdGlvbiIsIGZ1bmN0aW9uICgpIHsKLSAg ICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkgewotICAgICAgICB0cmFuc2xh dGlvbnNbJ3NvbWV0aGluZyB0byBiZSB0cmFuc2xhdGVkJ10gPSAnZXR3YXMg enVtIHVlYmVyc2V0emVuJzsKLSAgICAgICAgdHJhbnNsYXRpb25zWydhbm90 aGVyIHRyYW5zbGF0aW9uIGZvciAlKHBlcnNvbilzJ10gPSAnZWluZSB3ZWl0 ZXJlIFVlYmVyc2V0enVuZyBmdWVyICUocGVyc29uKXMnOworICAgIGRlc2Ny aWJlKCd3aGVuIHRoZXJlIGFyZSBzdWJzdGl0dXRpb25zJywgZnVuY3Rpb24g KCkgeworICAgICAgaXQoJ2ludGVycG9sYXRlcyBhIHN1YnN0aXR1dGlvbics IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgZXhwZWN0KGdldHRleHQoJ3RyYW5z bGF0ZSB0ZXh0IGZvciAlKHBlcnNvbilzJywgeydwZXJzb24nOiAnU2FyYWgn fSkpLnRvRXF1YWwoJ3RyYW5zbGF0ZSB0ZXh0IGZvciBTYXJhaCcpOwogICAg ICAgfSk7CiAKLSAgICAgIGl0KCJyZXR1cm5zIHRoZSB0cmFuc2xhdGlvbiIs IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgZXhwZWN0KGdldHRleHQoInNvbWV0 aGluZyB0byBiZSB0cmFuc2xhdGVkIikpLnRvRXF1YWwoImV0d2FzIHp1bSB1 ZWJlcnNldHplbiIpOworICAgICAgaXQoJ2ludGVycG9sYXRlcyBtdWx0aXBs ZSBzdWJzdGl0dXRpb25zJywgZnVuY3Rpb24gKCkgeworICAgICAgICBleHBl Y3QoZ2V0dGV4dCgndHJhbnNsYXRlIFwnJSh0ZXh0KXNcJyBmb3IgJShwZXJz b24pcycsCisgICAgICAgICAgeworICAgICAgICAgICAgJ3RleHQnOiAnY29u c3RpdHV0aW9uJywKKyAgICAgICAgICAgICdwZXJzb24nOiAnU2FyYWgnLAor ICAgICAgICAgIH0KKyAgICAgICAgKSkudG9FcXVhbCgndHJhbnNsYXRlIFwn Y29uc3RpdHV0aW9uXCcgZm9yIFNhcmFoJyk7CiAgICAgICB9KTsKKyAgICB9 KTsKKworICB9KTsKKworICBkZXNjcmliZSgnd2hlbiB0aGVyZSBpcyBhIHRy YW5zbGF0aW9uJywgZnVuY3Rpb24gKCkgeworICAgIGJlZm9yZUVhY2goZnVu Y3Rpb24gKCkgeworICAgICAgdHJhbnNsYXRpb25zWydzb21ldGhpbmcgdG8g YmUgdHJhbnNsYXRlZCddID0gJ2V0d2FzIHp1bSB1ZWJlcnNldHplbic7Cisg ICAgICB0cmFuc2xhdGlvbnNbJ2Fub3RoZXIgdHJhbnNsYXRpb24gZm9yICUo cGVyc29uKXMnXSA9ICdlaW5lIHdlaXRlcmUgVWViZXJzZXR6dW5nIGZ1ZXIg JShwZXJzb24pcyc7CisgICAgfSk7CisKKyAgICBpdCgncmV0dXJucyB0aGUg dHJhbnNsYXRpb24nLCBmdW5jdGlvbiAoKSB7CisgICAgICBleHBlY3QoZ2V0 dGV4dCgnc29tZXRoaW5nIHRvIGJlIHRyYW5zbGF0ZWQnKSkudG9FcXVhbCgn ZXR3YXMgenVtIHVlYmVyc2V0emVuJyk7CisgICAgfSk7CiAKLSAgICAgIGRl c2NyaWJlKCJ3aGVuIHRoZXJlIGlzIGEgc3Vic3RpdHV0aW9uIiwgZnVuY3Rp b24gKCkgewotICAgICAgICBpdCgiaW50ZXJwb2xhdGVzIHRoZSBzdWJzdGl0 dXRpb24iLCBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgZXhwZWN0KGdldHRl eHQoImFub3RoZXIgdHJhbnNsYXRpb24gZm9yICUocGVyc29uKXMiLCB7InBl cnNvbiI6ICJTYXJhaCJ9KSkKLSAgICAgICAgICAgIC50b0VxdWFsKCJlaW5l IHdlaXRlcmUgVWViZXJzZXR6dW5nIGZ1ZXIgU2FyYWgiKTsKLSAgICAgICAg fSk7CisgICAgZGVzY3JpYmUoJ3doZW4gdGhlcmUgaXMgYSBzdWJzdGl0dXRp b24nLCBmdW5jdGlvbiAoKSB7CisgICAgICBpdCgnaW50ZXJwb2xhdGVzIHRo ZSBzdWJzdGl0dXRpb24nLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIGV4cGVj dChnZXR0ZXh0KCdhbm90aGVyIHRyYW5zbGF0aW9uIGZvciAlKHBlcnNvbilz JywgeydwZXJzb24nOiAnU2FyYWgnfSkpCisgICAgICAgICAgLnRvRXF1YWwo J2VpbmUgd2VpdGVyZSBVZWJlcnNldHp1bmcgZnVlciBTYXJhaCcpOwogICAg ICAgfSk7CiAgICAgfSk7CiAgIH0pOwpkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jl c3Npb24vamF2YXNjcmlwdC9qYXNtaW5lX2NhcHR1cmVfd2FybmluZ3NfYmVm b3JlYWxsLmpzIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9qYXNtaW5l X2NhcHR1cmVfd2FybmluZ3NfYmVmb3JlYWxsLmpzCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwLi5hODNlNmY2MQotLS0gL2Rldi9udWxs CisrKyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvamFzbWluZV9jYXB0 dXJlX3dhcm5pbmdzX2JlZm9yZWFsbC5qcwpAQCAtMCwwICsxLDIzIEBACisv Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIHBnQWRtaW4g NCAtIFBvc3RncmVTUUwgVG9vbHMKKy8vCisvLyBDb3B5cmlnaHQgKEMpIDIw MTMgLSAyMDE3LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisvLyBU aGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FM IExpY2VuY2UKKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwor CisvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovCisKK2JlZm9yZUFs bChmdW5jdGlvbiAoKSB7CisgIHNweU9uKGNvbnNvbGUsICd3YXJuJykuYW5k LmNhbGxUaHJvdWdoKCk7CisgIHNweU9uKGNvbnNvbGUsICdlcnJvcicpLmFu ZC5jYWxsVGhyb3VnaCgpOworfSk7CisKK2FmdGVyRWFjaChmdW5jdGlvbiAo ZG9uZSkgeworICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKKyAgICBleHBl Y3QoY29uc29sZS53YXJuKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpOworICAg IGV4cGVjdChjb25zb2xlLmVycm9yKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgp OworICAgIGRvbmUoKTsKKyAgfSwgMCk7Cit9KTsKXCBObyBuZXdsaW5lIGF0 IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcmVncmVzc2lvbi9qYXZh c2NyaXB0L3NlbGVjdGlvbi9jb2x1bW5fc2VsZWN0b3Jfc3BlYy5qcyBiL3dl Yi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvc2VsZWN0aW9uL2NvbHVtbl9zZWxl Y3Rvcl9zcGVjLmpzCmluZGV4IDk0N2Y0ODUyLi4yY2JhMGFmNSAxMDA2NDQK LS0tIGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9zZWxlY3Rpb24vY29s dW1uX3NlbGVjdG9yX3NwZWMuanMKKysrIGIvd2ViL3JlZ3Jlc3Npb24vamF2 YXNjcmlwdC9zZWxlY3Rpb24vY29sdW1uX3NlbGVjdG9yX3NwZWMuanMKQEAg LTEsMjM1ICsxLDI0MyBAQAotZGVmaW5lKAotICBbImpxdWVyeSIsCi0gICAg InVuZGVyc2NvcmUiLAotICAgICJzbGlja2dyaWQvc2xpY2suZ3JpZCIsCi0g ICAgInNvdXJjZXMvc2VsZWN0aW9uL2NvbHVtbl9zZWxlY3RvciIsCi0gICAg InNsaWNrZ3JpZC9zbGljay5yb3dzZWxlY3Rpb25tb2RlbCIsCi0gICAgInNs aWNrZ3JpZCIKLSAgXSwKLSAgZnVuY3Rpb24gKCQsIF8sIFNsaWNrR3JpZCwg Q29sdW1uU2VsZWN0b3IsIFJvd1NlbGVjdGlvbk1vZGVsLCBTbGljaykgewot ICAgIGRlc2NyaWJlKCJDb2x1bW5TZWxlY3RvciIsIGZ1bmN0aW9uICgpIHsK LSAgICAgIHZhciBjb250YWluZXIsIGRhdGEsIGNvbHVtbnMsIG9wdGlvbnM7 CisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIHBnQWRt aW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKy8vCisvLyBDb3B5cmlnaHQgKEMp IDIwMTMgLSAyMDE3LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisv LyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3Jl U1FMIExpY2VuY2UKKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v LworCitpbXBvcnQgJCBmcm9tICdqcXVlcnknOworCitpbXBvcnQgU2xpY2sg ZnJvbSAnc2xpY2tncmlkJzsKK2ltcG9ydCAnc2xpY2tncmlkLmdyaWQnOwor CitpbXBvcnQgUm93U2VsZWN0aW9uTW9kZWwgZnJvbSAnLi4vLi4vLi4vcGdh ZG1pbi9zdGF0aWMvdmVuZG9yL3NsaWNrZ3JpZC9wbHVnaW5zL3NsaWNrLnJv d3NlbGVjdGlvbm1vZGVsJzsKK2ltcG9ydCBDb2x1bW5TZWxlY3RvciBmcm9t ICcuLi8uLi8uLi9wZ2FkbWluL3N0YXRpYy9qcy9zZWxlY3Rpb24vY29sdW1u X3NlbGVjdG9yJzsKKworCitkZXNjcmliZSgnQ29sdW1uU2VsZWN0b3InLCBm dW5jdGlvbiAoKSB7CisgIHZhciBjb250YWluZXIsIGRhdGEsIGNvbHVtbnMs IG9wdGlvbnM7CisgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkgeworICAgIGNv bnRhaW5lciA9ICQoJzxkaXY+PC9kaXY+Jyk7CisgICAgY29udGFpbmVyLmhl aWdodCg5OTk5KTsKKworICAgIGRhdGEgPSBbeydzb21lLWNvbHVtbi1uYW1l JzogJ2ZpcnN0IHZhbHVlJywgJ3NlY29uZCBjb2x1bW4nOiAnc2Vjb25kIHZh bHVlJ31dOworCisgICAgY29sdW1ucyA9IFsKKyAgICAgIHsKKyAgICAgICAg aWQ6ICcxJywKKyAgICAgICAgbmFtZTogJ3NvbWUtY29sdW1uLW5hbWUnLAor ICAgICAgfSwKKyAgICAgIHsKKyAgICAgICAgaWQ6ICcyJywKKyAgICAgICAg bmFtZTogJ3NlY29uZCBjb2x1bW4nLAorICAgICAgfSwKKyAgICAgIHsKKyAg ICAgICAgbmFtZTogJ3NvbWUtbm9uLXNlbGVjdGFibGUtY29sdW1uJywKKyAg ICAgICAgc2VsZWN0YWJsZTogZmFsc2UsCisgICAgICB9LAorICAgIF07Cisg IH0pOworCisgIGRlc2NyaWJlKCd3aGVuIGEgY29sdW1uIGlzIG5vdCBzZWxl Y3RhYmxlJywgZnVuY3Rpb24gKCkgeworICAgIGl0KCdkb2VzIG5vdCBjcmVh dGUgYSBjaGVja2JveCBmb3Igc2VsZWN0aW5nIHRoZSBjb2x1bW4nLCBmdW5j dGlvbiAoKSB7CisgICAgICB2YXIgY2hlY2tib3hDb2x1bW4gPSB7CisgICAg ICAgIG5hbWU6ICdzb21lLWNvbHVtbi1uYW1lLTQnLAorICAgICAgICBzZWxl Y3RhYmxlOiBmYWxzZSwKKyAgICAgIH07CisgICAgICBjb2x1bW5zLnB1c2go Y2hlY2tib3hDb2x1bW4pOworCisgICAgICBzZXR1cEdyaWQoY29sdW1ucyk7 CisKKyAgICAgIGV4cGVjdChjb250YWluZXIuZmluZCgnLnNsaWNrLWhlYWRl ci1jb2x1bW5zIGlucHV0JykubGVuZ3RoKS50b0JlKDIpOworICAgIH0pOwor ICB9KTsKKworICBpdCgncmVuZGVycyBhIGNoZWNrYm94IGluIHRoZSBjb2x1 bW4gaGVhZGVyJywgZnVuY3Rpb24gKCkgeworICAgIHNldHVwR3JpZChjb2x1 bW5zKTsKKworICAgIGV4cGVjdChjb250YWluZXIuZmluZCgnLnNsaWNrLWhl YWRlci1jb2x1bW5zIGlucHV0JykubGVuZ3RoKS50b0JlKDIpOworICB9KTsK KworICBpdCgnZGlzcGxheXMgdGhlIG5hbWUgb2YgdGhlIGNvbHVtbicsIGZ1 bmN0aW9uICgpIHsKKyAgICBzZXR1cEdyaWQoY29sdW1ucyk7CisKKyAgICBl eHBlY3QoJChjb250YWluZXIuZmluZCgnLnNsaWNrLWhlYWRlci1jb2x1bW5z IC5zbGljay1jb2x1bW4tbmFtZScpWzBdKS50ZXh0KCkpCisgICAgICAudG9D b250YWluKCdzb21lLWNvbHVtbi1uYW1lJyk7CisgICAgZXhwZWN0KCQoY29u dGFpbmVyLmZpbmQoJy5zbGljay1oZWFkZXItY29sdW1ucyAuc2xpY2stY29s dW1uLW5hbWUnKVsxXSkudGV4dCgpKQorICAgICAgLnRvQ29udGFpbignc2Vj b25kIGNvbHVtbicpOworICB9KTsKKworICBpdCgncHJlc2VydmVzIHRoZSBv dGhlciBhdHRyaWJ1dGVzIG9mIGNvbHVtbiBkZWZpbml0aW9ucycsIGZ1bmN0 aW9uICgpIHsKKyAgICB2YXIgY29sdW1uU2VsZWN0b3IgPSBuZXcgQ29sdW1u U2VsZWN0b3IoKTsKKyAgICB2YXIgc2VsZWN0YWJsZUNvbHVtbnMgPSBjb2x1 bW5TZWxlY3Rvci5nZXRDb2x1bW5EZWZpbml0aW9uc1dpdGhDaGVja2JveGVz KGNvbHVtbnMpOworCisgICAgZXhwZWN0KHNlbGVjdGFibGVDb2x1bW5zWzBd LmlkKS50b0JlKCcxJyk7CisgIH0pOworCisgIGRlc2NyaWJlKCdzZWxlY3Rp bmcgY29sdW1ucycsIGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgZ3JpZCwgcm93 U2VsZWN0aW9uTW9kZWw7CisgICAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7 CisgICAgICB2YXIgY29sdW1uU2VsZWN0b3IgPSBuZXcgQ29sdW1uU2VsZWN0 b3IoKTsKKyAgICAgIGNvbHVtbnMgPSBjb2x1bW5TZWxlY3Rvci5nZXRDb2x1 bW5EZWZpbml0aW9uc1dpdGhDaGVja2JveGVzKGNvbHVtbnMpOworICAgICAg ZGF0YSA9IFtdOworICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgaSsr KSB7CisgICAgICAgIGRhdGEucHVzaCh7J3NvbWUtY29sdW1uLW5hbWUnOiAn c29tZS12YWx1ZS0nICsgaSwgJ3NlY29uZCBjb2x1bW4nOiAnc2Vjb25kIHZh bHVlICcgKyBpfSk7CisgICAgICB9CisgICAgICBncmlkID0gbmV3IFNsaWNr LkdyaWQoY29udGFpbmVyLCBkYXRhLCBjb2x1bW5zLCBvcHRpb25zKTsKKwor ICAgICAgcm93U2VsZWN0aW9uTW9kZWwgPSBuZXcgUm93U2VsZWN0aW9uTW9k ZWwoKTsKKyAgICAgIGdyaWQuc2V0U2VsZWN0aW9uTW9kZWwocm93U2VsZWN0 aW9uTW9kZWwpOworCisgICAgICBncmlkLnJlZ2lzdGVyUGx1Z2luKGNvbHVt blNlbGVjdG9yKTsKKyAgICAgIGdyaWQuaW52YWxpZGF0ZSgpOworICAgICAg JCgnYm9keScpLmFwcGVuZChjb250YWluZXIpOworICAgIH0pOworCisgICAg YWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHsKKyAgICAgICQoJ2JvZHknKS5maW5k KGNvbnRhaW5lcikucmVtb3ZlKCk7CisgICAgfSk7CisKKyAgICBkZXNjcmli ZSgnd2hlbiB0aGUgdXNlciBjbGlja3MgYSBjb2x1bW4gaGVhZGVyJywgZnVu Y3Rpb24gKCkgeworICAgICAgaXQoJ3NlbGVjdHMgdGhlIGNvbHVtbicsIGZ1 bmN0aW9uICgpIHsKKyAgICAgICAgY29udGFpbmVyLmZpbmQoJy5zbGljay1o ZWFkZXItY29sdW1uJylbMF0uY2xpY2soKTsKKyAgICAgICAgdmFyIHNlbGVj dGVkUmFuZ2VzID0gcm93U2VsZWN0aW9uTW9kZWwuZ2V0U2VsZWN0ZWRSYW5n ZXMoKTsKKyAgICAgICAgZXhwZWN0T25seVRoZUZpcnN0Q29sdW1uVG9CZVNl bGVjdGVkKHNlbGVjdGVkUmFuZ2VzKTsKKyAgICAgIH0pOworICAgIH0pOwor CisgICAgZGVzY3JpYmUoJ3doZW4gdGhlIHVzZXIgY2xpY2tzIGFkZGl0aW9u YWwgY29sdW1uIGhlYWRlcnMnLCBmdW5jdGlvbiAoKSB7CisgICAgICBiZWZv cmVFYWNoKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgY29udGFpbmVyLmZpbmQo Jy5zbGljay1oZWFkZXItY29sdW1uJylbMV0uY2xpY2soKTsKKyAgICAgIH0p OworCisgICAgICBpdCgnc2VsZWN0cyBhZGRpdGlvbmFsIGNvbHVtbnMnLCBm dW5jdGlvbiAoKSB7CisgICAgICAgIGNvbnRhaW5lci5maW5kKCcuc2xpY2st aGVhZGVyLWNvbHVtbicpWzBdLmNsaWNrKCk7CisKKyAgICAgICAgdmFyIHNl bGVjdGVkUmFuZ2VzID0gcm93U2VsZWN0aW9uTW9kZWwuZ2V0U2VsZWN0ZWRS YW5nZXMoKTsKKyAgICAgICAgdmFyIGNvbHVtbjEgPSBzZWxlY3RlZFJhbmdl c1swXTsKKworICAgICAgICBleHBlY3Qoc2VsZWN0ZWRSYW5nZXMubGVuZ3Ro KS50b0VxdWFsKDIpOworICAgICAgICBleHBlY3QoY29sdW1uMS5mcm9tQ2Vs bCkudG9CZSgxKTsKKyAgICAgICAgZXhwZWN0KGNvbHVtbjEudG9DZWxsKS50 b0JlKDEpOworCisgICAgICAgIHZhciBjb2x1bW4yID0gc2VsZWN0ZWRSYW5n ZXNbMV07CisKKyAgICAgICAgZXhwZWN0KGNvbHVtbjIuZnJvbUNlbGwpLnRv QmUoMCk7CisgICAgICAgIGV4cGVjdChjb2x1bW4yLnRvQ2VsbCkudG9CZSgw KTsKKyAgICAgIH0pOworICAgIH0pOworCisgICAgZGVzY3JpYmUoJ3doZW4g dGhlIHVzZXIgY2xpY2tzIGEgY29sdW1uIGhlYWRlciBjaGVja2JveCcsIGZ1 bmN0aW9uICgpIHsKKyAgICAgIGl0KCdzZWxlY3RzIHRoZSBjb2x1bW4nLCBm dW5jdGlvbiAoKSB7CisgICAgICAgIGNvbnRhaW5lci5maW5kKCcuc2xpY2st aGVhZGVyLWNvbHVtbnMgaW5wdXQnKVswXS5jbGljaygpOworCisgICAgICAg IHZhciBzZWxlY3RlZFJhbmdlcyA9IHJvd1NlbGVjdGlvbk1vZGVsLmdldFNl bGVjdGVkUmFuZ2VzKCk7CisgICAgICAgIGV4cGVjdE9ubHlUaGVGaXJzdENv bHVtblRvQmVTZWxlY3RlZChzZWxlY3RlZFJhbmdlcyk7CisgICAgICB9KTsK KworICAgICAgaXQoJ2NoZWNrcyB0aGUgY2hlY2tib3gnLCBmdW5jdGlvbiAo KSB7CisgICAgICAgIGNvbnRhaW5lci5maW5kKCcuc2xpY2staGVhZGVyLWNv bHVtbicpWzFdLmNsaWNrKCk7CisgICAgICAgIGV4cGVjdCgkKGNvbnRhaW5l ci5maW5kKCcuc2xpY2staGVhZGVyLWNvbHVtbnMgaW5wdXQnKVsxXSkuaXMo JzpjaGVja2VkJykpLnRvQmVUcnV0aHkoKTsKKyAgICAgIH0pOworICAgIH0p OworCisgICAgZGVzY3JpYmUoJ3doZW4gYSByb3cgaXMgc2VsZWN0ZWQnLCBm dW5jdGlvbiAoKSB7CiAgICAgICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHsK LSAgICAgICAgY29udGFpbmVyID0gJCgiPGRpdj48L2Rpdj4iKTsKLSAgICAg ICAgY29udGFpbmVyLmhlaWdodCg5OTk5KTsKLQotICAgICAgICBkYXRhID0g W3snc29tZS1jb2x1bW4tbmFtZSc6ICdmaXJzdCB2YWx1ZScsICdzZWNvbmQg Y29sdW1uJzogJ3NlY29uZCB2YWx1ZSd9XTsKLQotICAgICAgICBjb2x1bW5z ID0gWwotICAgICAgICAgIHsKLSAgICAgICAgICAgIGlkOiAnMScsCi0gICAg ICAgICAgICBuYW1lOiAnc29tZS1jb2x1bW4tbmFtZScsCi0gICAgICAgICAg fSwKLSAgICAgICAgICB7Ci0gICAgICAgICAgICBpZDogJzInLAotICAgICAg ICAgICAgbmFtZTogJ3NlY29uZCBjb2x1bW4nLAotICAgICAgICAgIH0sCi0g ICAgICAgICAgewotICAgICAgICAgICAgbmFtZTogJ3NvbWUtbm9uLXNlbGVj dGFibGUtY29sdW1uJywKLSAgICAgICAgICAgIHNlbGVjdGFibGU6IGZhbHNl Ci0gICAgICAgICAgfQotICAgICAgICBdCisgICAgICAgIHZhciBzZWxlY3Rl ZFJhbmdlcyA9IFtuZXcgU2xpY2suUmFuZ2UoMCwgMCwgMCwgMSldOworICAg ICAgICByb3dTZWxlY3Rpb25Nb2RlbC5zZXRTZWxlY3RlZFJhbmdlcyhzZWxl Y3RlZFJhbmdlcyk7CiAgICAgICB9KTsKIAotICAgICAgZGVzY3JpYmUoIndo ZW4gYSBjb2x1bW4gaXMgbm90IHNlbGVjdGFibGUiLCBmdW5jdGlvbiAoKSB7 Ci0gICAgICAgIGl0KCJkb2VzIG5vdCBjcmVhdGUgYSBjaGVja2JveCBmb3Ig c2VsZWN0aW5nIHRoZSBjb2x1bW4iLCBmdW5jdGlvbiAoKSB7Ci0gICAgICAg ICAgdmFyIGNoZWNrYm94Q29sdW1uID0gewotICAgICAgICAgICAgbmFtZTog J3NvbWUtY29sdW1uLW5hbWUtNCcsCi0gICAgICAgICAgICBzZWxlY3RhYmxl OiBmYWxzZQotICAgICAgICAgIH07Ci0gICAgICAgICAgY29sdW1ucy5wdXNo KGNoZWNrYm94Q29sdW1uKTsKKyAgICAgIGl0KCdkZXNlbGVjdHMgdGhlIHJv dycsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgY29udGFpbmVyLmZpbmQoJy5z bGljay1oZWFkZXItY29sdW1uJylbMV0uY2xpY2soKTsKKyAgICAgICAgdmFy IHNlbGVjdGVkUmFuZ2VzID0gcm93U2VsZWN0aW9uTW9kZWwuZ2V0U2VsZWN0 ZWRSYW5nZXMoKTsKIAotICAgICAgICAgIHNldHVwR3JpZChjb2x1bW5zKTsK KyAgICAgICAgZXhwZWN0KHNlbGVjdGVkUmFuZ2VzLmxlbmd0aCkudG9CZSgx KTsKIAotICAgICAgICAgIGV4cGVjdChjb250YWluZXIuZmluZCgnLnNsaWNr LWhlYWRlci1jb2x1bW5zIGlucHV0JykubGVuZ3RoKS50b0JlKDIpCi0gICAg ICAgIH0pOworICAgICAgICB2YXIgY29sdW1uID0gc2VsZWN0ZWRSYW5nZXNb MF07CisKKyAgICAgICAgZXhwZWN0KGNvbHVtbi5mcm9tQ2VsbCkudG9CZSgx KTsKKyAgICAgICAgZXhwZWN0KGNvbHVtbi50b0NlbGwpLnRvQmUoMSk7Cisg ICAgICAgIGV4cGVjdChjb2x1bW4uZnJvbVJvdykudG9CZSgwKTsKKyAgICAg ICAgZXhwZWN0KGNvbHVtbi50b1JvdykudG9CZSg5KTsKICAgICAgIH0pOwor ICAgIH0pOwogCi0gICAgICBpdCgicmVuZGVycyBhIGNoZWNrYm94IGluIHRo ZSBjb2x1bW4gaGVhZGVyIiwgZnVuY3Rpb24gKCkgewotICAgICAgICBzZXR1 cEdyaWQoY29sdW1ucyk7CisgICAgZGVzY3JpYmUoJ2NsaWNraW5nIGEgc2Vj b25kIHRpbWUnLCBmdW5jdGlvbiAoKSB7CisgICAgICBiZWZvcmVFYWNoKGZ1 bmN0aW9uICgpIHsKKyAgICAgICAgY29udGFpbmVyLmZpbmQoJy5zbGljay1o ZWFkZXItY29sdW1uJylbMV0uY2xpY2soKTsKKyAgICAgIH0pOwogCi0gICAg ICAgIGV4cGVjdChjb250YWluZXIuZmluZCgnLnNsaWNrLWhlYWRlci1jb2x1 bW5zIGlucHV0JykubGVuZ3RoKS50b0JlKDIpCisgICAgICBpdCgndW5jaGVj a3MgY2hlY2tib3gnLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIGNvbnRhaW5l ci5maW5kKCcuc2xpY2staGVhZGVyLWNvbHVtbicpWzFdLmNsaWNrKCk7Cisg ICAgICAgIGV4cGVjdCgkKGNvbnRhaW5lci5maW5kKCcuc2xpY2staGVhZGVy LWNvbHVtbnMgaW5wdXQnKVsxXSkuaXMoJzpjaGVja2VkJykpLnRvQmVGYWxz eSgpOwogICAgICAgfSk7CiAKLSAgICAgIGl0KCJkaXNwbGF5cyB0aGUgbmFt ZSBvZiB0aGUgY29sdW1uIiwgZnVuY3Rpb24gKCkgewotICAgICAgICBzZXR1 cEdyaWQoY29sdW1ucyk7CisgICAgICBpdCgnZGVzZWxlY3RzIHRoZSBjb2x1 bW4nLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIGNvbnRhaW5lci5maW5kKCcu c2xpY2staGVhZGVyLWNvbHVtbicpWzFdLmNsaWNrKCk7CisgICAgICAgIHZh ciBzZWxlY3RlZFJhbmdlcyA9IHJvd1NlbGVjdGlvbk1vZGVsLmdldFNlbGVj dGVkUmFuZ2VzKCk7CiAKLSAgICAgICAgZXhwZWN0KCQoY29udGFpbmVyLmZp bmQoJy5zbGljay1oZWFkZXItY29sdW1ucyAuc2xpY2stY29sdW1uLW5hbWUn KVswXSkudGV4dCgpKQotICAgICAgICAgIC50b0NvbnRhaW4oJ3NvbWUtY29s dW1uLW5hbWUnKTsKLSAgICAgICAgZXhwZWN0KCQoY29udGFpbmVyLmZpbmQo Jy5zbGljay1oZWFkZXItY29sdW1ucyAuc2xpY2stY29sdW1uLW5hbWUnKVsx XSkudGV4dCgpKQotICAgICAgICAgIC50b0NvbnRhaW4oJ3NlY29uZCBjb2x1 bW4nKTsKKyAgICAgICAgZXhwZWN0KHNlbGVjdGVkUmFuZ2VzLmxlbmd0aCku dG9FcXVhbCgwKTsKICAgICAgIH0pOworICAgIH0pOwogCi0gICAgICBpdCgi cHJlc2VydmVzIHRoZSBvdGhlciBhdHRyaWJ1dGVzIG9mIGNvbHVtbiBkZWZp bml0aW9ucyIsIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgdmFyIGNvbHVtblNl bGVjdG9yID0gbmV3IENvbHVtblNlbGVjdG9yKCk7Ci0gICAgICAgIHZhciBz ZWxlY3RhYmxlQ29sdW1ucyA9IGNvbHVtblNlbGVjdG9yLmdldENvbHVtbkRl ZmluaXRpb25zV2l0aENoZWNrYm94ZXMoY29sdW1ucyk7CisgICAgZGVzY3Jp YmUoJ3doZW4gdGhlIGNvbHVtbiBpcyBub3Qgc2VsZWN0YWJsZScsIGZ1bmN0 aW9uICgpIHsKKyAgICAgIGl0KCdkb2VzIG5vdCBzZWxlY3QgdGhlIGNvbHVt bicsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgJChjb250YWluZXIuZmluZCgn LnNsaWNrLWhlYWRlci1jb2x1bW46Y29udGFpbnMoc29tZS1ub24tc2VsZWN0 YWJsZS1jb2x1bW4pJykpLmNsaWNrKCk7CisgICAgICAgIHZhciBzZWxlY3Rl ZFJhbmdlcyA9IHJvd1NlbGVjdGlvbk1vZGVsLmdldFNlbGVjdGVkUmFuZ2Vz KCk7CiAKLSAgICAgICAgZXhwZWN0KHNlbGVjdGFibGVDb2x1bW5zWzBdLmlk KS50b0JlKCcxJyk7CisgICAgICAgIGV4cGVjdChzZWxlY3RlZFJhbmdlcy5s ZW5ndGgpLnRvRXF1YWwoMCk7CiAgICAgICB9KTsKKyAgICB9KTsKIAotICAg ICAgZGVzY3JpYmUoInNlbGVjdGluZyBjb2x1bW5zIiwgZnVuY3Rpb24gKCkg ewotICAgICAgICB2YXIgZ3JpZCwgcm93U2VsZWN0aW9uTW9kZWw7Ci0gICAg ICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkgewotICAgICAgICAgIHZhciBj b2x1bW5TZWxlY3RvciA9IG5ldyBDb2x1bW5TZWxlY3RvcigpOwotICAgICAg ICAgIGNvbHVtbnMgPSBjb2x1bW5TZWxlY3Rvci5nZXRDb2x1bW5EZWZpbml0 aW9uc1dpdGhDaGVja2JveGVzKGNvbHVtbnMpOwotICAgICAgICAgIGRhdGEg PSBbXTsKLSAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwOyBpKysp IHsKLSAgICAgICAgICAgIGRhdGEucHVzaCh7J3NvbWUtY29sdW1uLW5hbWUn OiAnc29tZS12YWx1ZS0nICsgaSwgJ3NlY29uZCBjb2x1bW4nOiAnc2Vjb25k IHZhbHVlICcgKyBpfSk7Ci0gICAgICAgICAgfQotICAgICAgICAgIGdyaWQg PSBuZXcgU2xpY2tHcmlkKGNvbnRhaW5lciwgZGF0YSwgY29sdW1ucywgb3B0 aW9ucyk7Ci0KLSAgICAgICAgICByb3dTZWxlY3Rpb25Nb2RlbCA9IG5ldyBS b3dTZWxlY3Rpb25Nb2RlbCgpOwotICAgICAgICAgIGdyaWQuc2V0U2VsZWN0 aW9uTW9kZWwocm93U2VsZWN0aW9uTW9kZWwpOwotCi0gICAgICAgICAgZ3Jp ZC5yZWdpc3RlclBsdWdpbihjb2x1bW5TZWxlY3Rvcik7Ci0gICAgICAgICAg Z3JpZC5pbnZhbGlkYXRlKCk7Ci0gICAgICAgICAgJCgiYm9keSIpLmFwcGVu ZChjb250YWluZXIpOwotICAgICAgICB9KTsKLQotICAgICAgICBhZnRlckVh Y2goZnVuY3Rpb24gKCkgewotICAgICAgICAgICQoImJvZHkiKS5maW5kKGNv bnRhaW5lcikucmVtb3ZlKCk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGRl c2NyaWJlKCJ3aGVuIHRoZSB1c2VyIGNsaWNrcyBhIGNvbHVtbiBoZWFkZXIi LCBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgaXQoInNlbGVjdHMgdGhlIGNv bHVtbiIsIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIGNvbnRhaW5lci5m aW5kKCcuc2xpY2staGVhZGVyLWNvbHVtbicpWzBdLmNsaWNrKCk7Ci0gICAg ICAgICAgICB2YXIgc2VsZWN0ZWRSYW5nZXMgPSByb3dTZWxlY3Rpb25Nb2Rl bC5nZXRTZWxlY3RlZFJhbmdlcygpOwotICAgICAgICAgICAgZXhwZWN0T25s eVRoZUZpcnN0Q29sdW1uVG9CZVNlbGVjdGVkKHNlbGVjdGVkUmFuZ2VzKTsK LSAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgZGVzY3Jp YmUoIndoZW4gdGhlIHVzZXIgY2xpY2tzIGFkZGl0aW9uYWwgY29sdW1uIGhl YWRlcnMiLCBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgYmVmb3JlRWFjaChm dW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICBjb250YWluZXIuZmluZCgnLnNs aWNrLWhlYWRlci1jb2x1bW4nKVsxXS5jbGljaygpOwotICAgICAgICAgIH0p OwotCi0gICAgICAgICAgaXQoInNlbGVjdHMgYWRkaXRpb25hbCBjb2x1bW5z IiwgZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgY29udGFpbmVyLmZpbmQo Jy5zbGljay1oZWFkZXItY29sdW1uJylbMF0uY2xpY2soKTsKLQotICAgICAg ICAgICAgdmFyIHNlbGVjdGVkUmFuZ2VzID0gcm93U2VsZWN0aW9uTW9kZWwu Z2V0U2VsZWN0ZWRSYW5nZXMoKTsKLSAgICAgICAgICAgIHZhciBjb2x1bW4x ID0gc2VsZWN0ZWRSYW5nZXNbMF07Ci0KLSAgICAgICAgICAgIGV4cGVjdChz ZWxlY3RlZFJhbmdlcy5sZW5ndGgpLnRvRXF1YWwoMik7Ci0gICAgICAgICAg ICBleHBlY3QoY29sdW1uMS5mcm9tQ2VsbCkudG9CZSgxKTsKLSAgICAgICAg ICAgIGV4cGVjdChjb2x1bW4xLnRvQ2VsbCkudG9CZSgxKTsKLQotICAgICAg ICAgICAgdmFyIGNvbHVtbjIgPSBzZWxlY3RlZFJhbmdlc1sxXTsKLQotICAg ICAgICAgICAgZXhwZWN0KGNvbHVtbjIuZnJvbUNlbGwpLnRvQmUoMCk7Ci0g ICAgICAgICAgICBleHBlY3QoY29sdW1uMi50b0NlbGwpLnRvQmUoMCk7Ci0g ICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGRlc2NyaWJl KCJ3aGVuIHRoZSB1c2VyIGNsaWNrcyBhIGNvbHVtbiBoZWFkZXIgY2hlY2ti b3giLCBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgaXQoInNlbGVjdHMgdGhl IGNvbHVtbiIsIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIGNvbnRhaW5l ci5maW5kKCcuc2xpY2staGVhZGVyLWNvbHVtbnMgaW5wdXQnKVswXS5jbGlj aygpOwotCi0gICAgICAgICAgICB2YXIgc2VsZWN0ZWRSYW5nZXMgPSByb3dT ZWxlY3Rpb25Nb2RlbC5nZXRTZWxlY3RlZFJhbmdlcygpOwotICAgICAgICAg ICAgZXhwZWN0T25seVRoZUZpcnN0Q29sdW1uVG9CZVNlbGVjdGVkKHNlbGVj dGVkUmFuZ2VzKTsKLSAgICAgICAgICB9KTsKLQotICAgICAgICAgIGl0KCJj aGVja3MgdGhlIGNoZWNrYm94IiwgZnVuY3Rpb24gKCkgewotICAgICAgICAg ICAgY29udGFpbmVyLmZpbmQoJy5zbGljay1oZWFkZXItY29sdW1uJylbMV0u Y2xpY2soKTsKLSAgICAgICAgICAgIGV4cGVjdCgkKGNvbnRhaW5lci5maW5k KCcuc2xpY2staGVhZGVyLWNvbHVtbnMgaW5wdXQnKVsxXSkuaXMoJzpjaGVj a2VkJykpLnRvQmVUcnV0aHkoKTsKLSAgICAgICAgICB9KTsKLSAgICAgICAg fSk7Ci0KLSAgICAgICAgZGVzY3JpYmUoIndoZW4gYSByb3cgaXMgc2VsZWN0 ZWQiLCBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgYmVmb3JlRWFjaChmdW5j dGlvbiAoKSB7Ci0gICAgICAgICAgICB2YXIgc2VsZWN0ZWRSYW5nZXMgPSBb bmV3IFNsaWNrLlJhbmdlKDAsIDAsIDAsIDEpXTsKLSAgICAgICAgICAgIHJv d1NlbGVjdGlvbk1vZGVsLnNldFNlbGVjdGVkUmFuZ2VzKHNlbGVjdGVkUmFu Z2VzKTsKLSAgICAgICAgICB9KTsKLQotICAgICAgICAgIGl0KCJkZXNlbGVj dHMgdGhlIHJvdyIsIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIGNvbnRh aW5lci5maW5kKCcuc2xpY2staGVhZGVyLWNvbHVtbicpWzFdLmNsaWNrKCk7 Ci0gICAgICAgICAgICB2YXIgc2VsZWN0ZWRSYW5nZXMgPSByb3dTZWxlY3Rp b25Nb2RlbC5nZXRTZWxlY3RlZFJhbmdlcygpOwotCi0gICAgICAgICAgICBl eHBlY3Qoc2VsZWN0ZWRSYW5nZXMubGVuZ3RoKS50b0JlKDEpOwotCi0gICAg ICAgICAgICB2YXIgY29sdW1uID0gc2VsZWN0ZWRSYW5nZXNbMF07Ci0KLSAg ICAgICAgICAgIGV4cGVjdChjb2x1bW4uZnJvbUNlbGwpLnRvQmUoMSk7Ci0g ICAgICAgICAgICBleHBlY3QoY29sdW1uLnRvQ2VsbCkudG9CZSgxKTsKLSAg ICAgICAgICAgIGV4cGVjdChjb2x1bW4uZnJvbVJvdykudG9CZSgwKTsKLSAg ICAgICAgICAgIGV4cGVjdChjb2x1bW4udG9Sb3cpLnRvQmUoOSk7Ci0gICAg ICAgICAgfSkKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgZGVzY3JpYmUoImNs aWNraW5nIGEgc2Vjb25kIHRpbWUiLCBmdW5jdGlvbiAoKSB7Ci0gICAgICAg ICAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICBjb250 YWluZXIuZmluZCgnLnNsaWNrLWhlYWRlci1jb2x1bW4nKVsxXS5jbGljaygp OwotICAgICAgICAgIH0pOwotCi0gICAgICAgICAgaXQoInVuY2hlY2tzIGNo ZWNrYm94IiwgZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgY29udGFpbmVy LmZpbmQoJy5zbGljay1oZWFkZXItY29sdW1uJylbMV0uY2xpY2soKTsKLSAg ICAgICAgICAgIGV4cGVjdCgkKGNvbnRhaW5lci5maW5kKCcuc2xpY2staGVh ZGVyLWNvbHVtbnMgaW5wdXQnKVsxXSkuaXMoJzpjaGVja2VkJykpLnRvQmVG YWxzeSgpOwotICAgICAgICAgIH0pOwotCi0gICAgICAgICAgaXQoImRlc2Vs ZWN0cyB0aGUgY29sdW1uIiwgZnVuY3Rpb24gKCkgewotICAgICAgICAgICAg Y29udGFpbmVyLmZpbmQoJy5zbGljay1oZWFkZXItY29sdW1uJylbMV0uY2xp Y2soKTsKLSAgICAgICAgICAgIHZhciBzZWxlY3RlZFJhbmdlcyA9IHJvd1Nl bGVjdGlvbk1vZGVsLmdldFNlbGVjdGVkUmFuZ2VzKCk7Ci0KLSAgICAgICAg ICAgIGV4cGVjdChzZWxlY3RlZFJhbmdlcy5sZW5ndGgpLnRvRXF1YWwoMCk7 Ci0gICAgICAgICAgfSkKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgZGVzY3Jp YmUoIndoZW4gdGhlIGNvbHVtbiBpcyBub3Qgc2VsZWN0YWJsZSIsIGZ1bmN0 aW9uICgpIHsKLSAgICAgICAgICBpdCgiZG9lcyBub3Qgc2VsZWN0IHRoZSBj b2x1bW4iLCBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAkKGNvbnRhaW5l ci5maW5kKCcuc2xpY2staGVhZGVyLWNvbHVtbjpjb250YWlucyhzb21lLW5v bi1zZWxlY3RhYmxlLWNvbHVtbiknKSkuY2xpY2soKTsKLSAgICAgICAgICAg IHZhciBzZWxlY3RlZFJhbmdlcyA9IHJvd1NlbGVjdGlvbk1vZGVsLmdldFNl bGVjdGVkUmFuZ2VzKCk7Ci0KLSAgICAgICAgICAgIGV4cGVjdChzZWxlY3Rl ZFJhbmdlcy5sZW5ndGgpLnRvRXF1YWwoMCk7Ci0gICAgICAgICAgfSk7Ci0g ICAgICAgIH0pOwotCi0gICAgICAgIGRlc2NyaWJlKCJ3aGVuIHRoZSBjb2x1 bW4gaXMgZGVzZWxlY3RlZCB0aHJvdWdoIHNldFNlbGVjdGVkUmFuZ2VzIiwg ZnVuY3Rpb24gKCkgewotICAgICAgICAgIGJlZm9yZUVhY2goZnVuY3Rpb24g KCkgewotICAgICAgICAgICAgY29udGFpbmVyLmZpbmQoJy5zbGljay1oZWFk ZXItY29sdW1uJylbMV0uY2xpY2soKTsKLSAgICAgICAgICB9KTsKLQotICAg ICAgICAgIGl0KCJ1bmNoZWNrcyB0aGUgY2hlY2tib3giLCBmdW5jdGlvbiAo KSB7Ci0gICAgICAgICAgICByb3dTZWxlY3Rpb25Nb2RlbC5zZXRTZWxlY3Rl ZFJhbmdlcyhbXSk7Ci0KLSAgICAgICAgICAgIGV4cGVjdCgkKGNvbnRhaW5l ci5maW5kKCcuc2xpY2staGVhZGVyLWNvbHVtbnMgaW5wdXQnKVsxXSkKLSAg ICAgICAgICAgICAgLmlzKCc6Y2hlY2tlZCcpKS50b0JlRmFsc3koKTsKLSAg ICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgZGVzY3JpYmUo IndoZW4gYSBub24tY29sdW1uIHJhbmdlIHdhcyBhbHJlYWR5IHNlbGVjdGVk IiwgZnVuY3Rpb24gKCkgewotICAgICAgICAgIGJlZm9yZUVhY2goZnVuY3Rp b24gKCkgewotICAgICAgICAgICAgdmFyIHNlbGVjdGVkUmFuZ2VzID0gW25l dyBTbGljay5SYW5nZSgwLCAwLCAxLCAwKV07Ci0gICAgICAgICAgICByb3dT ZWxlY3Rpb25Nb2RlbC5zZXRTZWxlY3RlZFJhbmdlcyhzZWxlY3RlZFJhbmdl cyk7Ci0gICAgICAgICAgfSk7Ci0KLSAgICAgICAgICBpdCgiZGVzZWxlY3Rz IHRoZSBub24tY29sdW1uIHJhbmdlIiwgZnVuY3Rpb24gKCkgewotICAgICAg ICAgICAgY29udGFpbmVyLmZpbmQoJy5zbGljay1oZWFkZXItY29sdW1uJylb MF0uY2xpY2soKTsKLQotICAgICAgICAgICAgdmFyIHNlbGVjdGVkUmFuZ2Vz ID0gcm93U2VsZWN0aW9uTW9kZWwuZ2V0U2VsZWN0ZWRSYW5nZXMoKTsKLSAg ICAgICAgICAgIGV4cGVjdE9ubHlUaGVGaXJzdENvbHVtblRvQmVTZWxlY3Rl ZChzZWxlY3RlZFJhbmdlcyk7Ci0gICAgICAgICAgfSkKLSAgICAgICAgfSk7 CisgICAgZGVzY3JpYmUoJ3doZW4gdGhlIGNvbHVtbiBpcyBkZXNlbGVjdGVk IHRocm91Z2ggc2V0U2VsZWN0ZWRSYW5nZXMnLCBmdW5jdGlvbiAoKSB7Cisg ICAgICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgY29udGFp bmVyLmZpbmQoJy5zbGljay1oZWFkZXItY29sdW1uJylbMV0uY2xpY2soKTsK ICAgICAgIH0pOwogCi0gICAgICB2YXIgc2V0dXBHcmlkID0gZnVuY3Rpb24g KGNvbHVtbnMpIHsKLSAgICAgICAgdmFyIGNvbHVtblNlbGVjdG9yID0gbmV3 IENvbHVtblNlbGVjdG9yKCk7Ci0gICAgICAgIGNvbHVtbnMgPSBjb2x1bW5T ZWxlY3Rvci5nZXRDb2x1bW5EZWZpbml0aW9uc1dpdGhDaGVja2JveGVzKGNv bHVtbnMpOwotICAgICAgICB2YXIgZ3JpZCA9IG5ldyBTbGlja0dyaWQoY29u dGFpbmVyLCBkYXRhLCBjb2x1bW5zLCBvcHRpb25zKTsKKyAgICAgIGl0KCd1 bmNoZWNrcyB0aGUgY2hlY2tib3gnLCBmdW5jdGlvbiAoKSB7CisgICAgICAg IHJvd1NlbGVjdGlvbk1vZGVsLnNldFNlbGVjdGVkUmFuZ2VzKFtdKTsKIAot ICAgICAgICB2YXIgcm93U2VsZWN0aW9uTW9kZWwgPSBuZXcgUm93U2VsZWN0 aW9uTW9kZWwoKTsKLSAgICAgICAgZ3JpZC5zZXRTZWxlY3Rpb25Nb2RlbChy b3dTZWxlY3Rpb25Nb2RlbCk7CisgICAgICAgIGV4cGVjdCgkKGNvbnRhaW5l ci5maW5kKCcuc2xpY2staGVhZGVyLWNvbHVtbnMgaW5wdXQnKVsxXSkKKyAg ICAgICAgICAuaXMoJzpjaGVja2VkJykpLnRvQmVGYWxzeSgpOworICAgICAg fSk7CisgICAgfSk7CiAKLSAgICAgICAgZ3JpZC5yZWdpc3RlclBsdWdpbihj b2x1bW5TZWxlY3Rvcik7Ci0gICAgICAgIGdyaWQuaW52YWxpZGF0ZSgpOwot ICAgICAgfTsKKyAgICBkZXNjcmliZSgnd2hlbiBhIG5vbi1jb2x1bW4gcmFu Z2Ugd2FzIGFscmVhZHkgc2VsZWN0ZWQnLCBmdW5jdGlvbiAoKSB7CisgICAg ICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdmFyIHNlbGVj dGVkUmFuZ2VzID0gW25ldyBTbGljay5SYW5nZSgwLCAwLCAxLCAwKV07Cisg ICAgICAgIHJvd1NlbGVjdGlvbk1vZGVsLnNldFNlbGVjdGVkUmFuZ2VzKHNl bGVjdGVkUmFuZ2VzKTsKKyAgICAgIH0pOwogCi0gICAgICBmdW5jdGlvbiBl eHBlY3RPbmx5VGhlRmlyc3RDb2x1bW5Ub0JlU2VsZWN0ZWQoc2VsZWN0ZWRS YW5nZXMpIHsKLSAgICAgICAgdmFyIHJvdyA9IHNlbGVjdGVkUmFuZ2VzWzBd OworICAgICAgaXQoJ2Rlc2VsZWN0cyB0aGUgbm9uLWNvbHVtbiByYW5nZScs IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgY29udGFpbmVyLmZpbmQoJy5zbGlj ay1oZWFkZXItY29sdW1uJylbMF0uY2xpY2soKTsKIAotICAgICAgICBleHBl Y3Qoc2VsZWN0ZWRSYW5nZXMubGVuZ3RoKS50b0VxdWFsKDEpOwotICAgICAg ICBleHBlY3Qocm93LmZyb21DZWxsKS50b0JlKDApOwotICAgICAgICBleHBl Y3Qocm93LnRvQ2VsbCkudG9CZSgwKTsKLSAgICAgICAgZXhwZWN0KHJvdy5m cm9tUm93KS50b0JlKDApOwotICAgICAgICBleHBlY3Qocm93LnRvUm93KS50 b0JlKDkpOwotICAgICAgfQorICAgICAgICB2YXIgc2VsZWN0ZWRSYW5nZXMg PSByb3dTZWxlY3Rpb25Nb2RlbC5nZXRTZWxlY3RlZFJhbmdlcygpOworICAg ICAgICBleHBlY3RPbmx5VGhlRmlyc3RDb2x1bW5Ub0JlU2VsZWN0ZWQoc2Vs ZWN0ZWRSYW5nZXMpOworICAgICAgfSk7CiAgICAgfSk7CiAgIH0pOworCisg IHZhciBzZXR1cEdyaWQgPSBmdW5jdGlvbiAoY29sdW1ucykgeworICAgIHZh ciBjb2x1bW5TZWxlY3RvciA9IG5ldyBDb2x1bW5TZWxlY3RvcigpOworICAg IGNvbHVtbnMgPSBjb2x1bW5TZWxlY3Rvci5nZXRDb2x1bW5EZWZpbml0aW9u c1dpdGhDaGVja2JveGVzKGNvbHVtbnMpOworICAgIHZhciBncmlkID0gbmV3 IFNsaWNrLkdyaWQoY29udGFpbmVyLCBkYXRhLCBjb2x1bW5zLCBvcHRpb25z KTsKKworICAgIHZhciByb3dTZWxlY3Rpb25Nb2RlbCA9IG5ldyBSb3dTZWxl Y3Rpb25Nb2RlbCgpOworICAgIGdyaWQuc2V0U2VsZWN0aW9uTW9kZWwocm93 U2VsZWN0aW9uTW9kZWwpOworCisgICAgZ3JpZC5yZWdpc3RlclBsdWdpbihj b2x1bW5TZWxlY3Rvcik7CisgICAgZ3JpZC5pbnZhbGlkYXRlKCk7CisgIH07 CisKKyAgZnVuY3Rpb24gZXhwZWN0T25seVRoZUZpcnN0Q29sdW1uVG9CZVNl bGVjdGVkKHNlbGVjdGVkUmFuZ2VzKSB7CisgICAgdmFyIHJvdyA9IHNlbGVj dGVkUmFuZ2VzWzBdOworCisgICAgZXhwZWN0KHNlbGVjdGVkUmFuZ2VzLmxl bmd0aCkudG9FcXVhbCgxKTsKKyAgICBleHBlY3Qocm93LmZyb21DZWxsKS50 b0JlKDApOworICAgIGV4cGVjdChyb3cudG9DZWxsKS50b0JlKDApOworICAg IGV4cGVjdChyb3cuZnJvbVJvdykudG9CZSgwKTsKKyAgICBleHBlY3Qocm93 LnRvUm93KS50b0JlKDkpOworICB9Cit9KTsKZGlmZiAtLWdpdCBhL3dlYi9y ZWdyZXNzaW9uL2phdmFzY3JpcHQvc2VsZWN0aW9uL2NvcHlfZGF0YV9zcGVj LmpzIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9zZWxlY3Rpb24vY29w eV9kYXRhX3NwZWMuanMKaW5kZXggYWZmYWQ2NmUuLmZmYjBkZWNhIDEwMDY0 NAotLS0gYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3NlbGVjdGlvbi9j b3B5X2RhdGFfc3BlYy5qcworKysgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2Ny aXB0L3NlbGVjdGlvbi9jb3B5X2RhdGFfc3BlYy5qcwpAQCAtMSwxMTkgKzEs MTI4IEBACi1kZWZpbmUoCi0gIFsianF1ZXJ5IiwKLSAgICAic2xpY2tncmlk L3NsaWNrLmdyaWQiLAotICAgICJzbGlja2dyaWQvc2xpY2sucm93c2VsZWN0 aW9ubW9kZWwiLAotICAgICJzb3VyY2VzL3NlbGVjdGlvbi9jb3B5X2RhdGEi LAotICAgICJzb3VyY2VzL3NlbGVjdGlvbi9jbGlwYm9hcmQiLAotICAgICJz b3VyY2VzL3NlbGVjdGlvbi9yYW5nZV9zZWxlY3Rpb25faGVscGVyIgotICBd LAotICBmdW5jdGlvbiAoJCwgU2xpY2tHcmlkLCBSb3dTZWxlY3Rpb25Nb2Rl bCwgY29weURhdGEsIGNsaXBib2FyZCwgUmFuZ2VTZWxlY3Rpb25IZWxwZXIp IHsKLSAgICBkZXNjcmliZSgnY29weURhdGEnLCBmdW5jdGlvbiAoKSB7Ci0g ICAgICB2YXIgZ3JpZCwgc3FsRWRpdG9yOwotCi0gICAgICBiZWZvcmVFYWNo KGZ1bmN0aW9uICgpIHsKLSAgICAgICAgdmFyIGRhdGEgPSBbWzEsICJsZW9w b3JkIiwgIjEyIl0sCi0gICAgICAgICAgWzIsICJsaW9uIiwgIjEzIl0sCi0g ICAgICAgICAgWzMsICJwdW1hIiwgIjkiXV07Ci0KLSAgICAgICAgdmFyIGNv bHVtbnMgPSBbewotICAgICAgICAgICAgbmFtZTogImlkIiwKLSAgICAgICAg ICAgIHBvczogMCwKLSAgICAgICAgICAgIGxhYmVsOiAiaWQ8YnI+IG51bWVy aWMiLAotICAgICAgICAgICAgY2VsbDogIm51bWJlciIsCi0gICAgICAgICAg ICBjYW5fZWRpdDogZmFsc2UsCi0gICAgICAgICAgICB0eXBlOiAibnVtZXJp YyIKLSAgICAgICAgICB9LCB7Ci0gICAgICAgICAgICBuYW1lOiAiYnJhbmQi LAotICAgICAgICAgICAgcG9zOiAxLAotICAgICAgICAgICAgbGFiZWw6ICJm bGF2b3I8YnI+IGNoYXJhY3RlciB2YXJ5aW5nIiwKLSAgICAgICAgICAgIGNl bGw6ICJzdHJpbmciLAotICAgICAgICAgICAgY2FuX2VkaXQ6IGZhbHNlLAot ICAgICAgICAgICAgdHlwZTogImNoYXJhY3RlciB2YXJ5aW5nIgotICAgICAg ICAgIH0sIHsKLSAgICAgICAgICAgIG5hbWU6ICJzaXplIiwKLSAgICAgICAg ICAgIHBvczogMiwKLSAgICAgICAgICAgIGxhYmVsOiAic2l6ZTxicj4gbnVt ZXJpYyIsCi0gICAgICAgICAgICBjZWxsOiAibnVtYmVyIiwKLSAgICAgICAg ICAgIGNhbl9lZGl0OiBmYWxzZSwKLSAgICAgICAgICAgIHR5cGU6ICJudW1l cmljIgotICAgICAgICAgIH0KLSAgICAgICAgICBdCi0gICAgICAgIDsKLSAg ICAgICAgdmFyIGdyaWRDb250YWluZXIgPSAkKCI8ZGl2IGlkPSdncmlkJz48 L2Rpdj4iKTsKLSAgICAgICAgJCgiYm9keSIpLmFwcGVuZChncmlkQ29udGFp bmVyKTsKLSAgICAgICAgJCgiYm9keSIpLmFwcGVuZCgiPGJ1dHRvbiBpZD0n YnRuLXBhc3RlLXJvdycgZGlzYWJsZWQ+PC9idXR0b24+Iik7Ci0gICAgICAg IGdyaWQgPSBuZXcgU2xpY2suR3JpZCgiI2dyaWQiLCBkYXRhLCBjb2x1bW5z LCB7fSk7Ci0gICAgICAgIGdyaWQuc2V0U2VsZWN0aW9uTW9kZWwobmV3IFNs aWNrLlJvd1NlbGVjdGlvbk1vZGVsKHtzZWxlY3RBY3RpdmVSb3c6IGZhbHNl fSkpOwotICAgICAgICBzcWxFZGl0b3IgPSB7c2xpY2tncmlkOiBncmlkfTsK LSAgICAgIH0pOworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8v CisvLyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisvLworLy8gQ29w eXJpZ2h0IChDKSAyMDEzIC0gMjAxNywgVGhlIHBnQWRtaW4gRGV2ZWxvcG1l bnQgVGVhbQorLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0 aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisvLworLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8KKworaW1wb3J0ICQgZnJvbSAnanF1ZXJ5JzsKKworaW1w b3J0IFNsaWNrIGZyb20gJ3NsaWNrZ3JpZCc7CitpbXBvcnQgJ3NsaWNrZ3Jp ZC5ncmlkJzsKKworaW1wb3J0IGNsaXBib2FyZCBmcm9tICcuLi8uLi8uLi9w Z2FkbWluL3N0YXRpYy9qcy9zZWxlY3Rpb24vY2xpcGJvYXJkJzsKK2ltcG9y dCBjb3B5RGF0YSBmcm9tICcuLi8uLi8uLi9wZ2FkbWluL3N0YXRpYy9qcy9z ZWxlY3Rpb24vY29weV9kYXRhJzsKKworaW1wb3J0IFJhbmdlU2VsZWN0aW9u SGVscGVyIGZyb20gJ3NvdXJjZXMvc2VsZWN0aW9uL3JhbmdlX3NlbGVjdGlv bl9oZWxwZXInOworCitkZXNjcmliZSgnY29weURhdGEnLCBmdW5jdGlvbiAo KSB7CisgIHZhciBncmlkLCBzcWxFZGl0b3I7CisKKyAgYmVmb3JlRWFjaChm dW5jdGlvbiAoKSB7CisgICAgdmFyIGRhdGEgPSBbWzEsICdsZW9wb3JkJywg JzEyJ10sCisgICAgICBbMiwgJ2xpb24nLCAnMTMnXSwKKyAgICAgIFszLCAn cHVtYScsICc5J11dOworCisgICAgdmFyIGNvbHVtbnMgPSBbeworICAgICAg bmFtZTogJ2lkJywKKyAgICAgIHBvczogMCwKKyAgICAgIGxhYmVsOiAnaWQ8 YnI+IG51bWVyaWMnLAorICAgICAgY2VsbDogJ251bWJlcicsCisgICAgICBj YW5fZWRpdDogZmFsc2UsCisgICAgICB0eXBlOiAnbnVtZXJpYycsCisgICAg fSwgeworICAgICAgbmFtZTogJ2JyYW5kJywKKyAgICAgIHBvczogMSwKKyAg ICAgIGxhYmVsOiAnZmxhdm9yPGJyPiBjaGFyYWN0ZXIgdmFyeWluZycsCisg ICAgICBjZWxsOiAnc3RyaW5nJywKKyAgICAgIGNhbl9lZGl0OiBmYWxzZSwK KyAgICAgIHR5cGU6ICdjaGFyYWN0ZXIgdmFyeWluZycsCisgICAgfSwgewor ICAgICAgbmFtZTogJ3NpemUnLAorICAgICAgcG9zOiAyLAorICAgICAgbGFi ZWw6ICdzaXplPGJyPiBudW1lcmljJywKKyAgICAgIGNlbGw6ICdudW1iZXIn LAorICAgICAgY2FuX2VkaXQ6IGZhbHNlLAorICAgICAgdHlwZTogJ251bWVy aWMnLAorICAgIH0sCisgICAgXQorICAgICAgOworICAgIHZhciBncmlkQ29u dGFpbmVyID0gJCgnPGRpdiBpZD1cJ2dyaWRcJz48L2Rpdj4nKTsKKyAgICAk KCdib2R5JykuYXBwZW5kKGdyaWRDb250YWluZXIpOworICAgICQoJ2JvZHkn KS5hcHBlbmQoJzxidXR0b24gaWQ9XCdidG4tcGFzdGUtcm93XCcgZGlzYWJs ZWQ+PC9idXR0b24+Jyk7CisgICAgZ3JpZCA9IG5ldyBTbGljay5HcmlkKCcj Z3JpZCcsIGRhdGEsIGNvbHVtbnMsIHt9KTsKKyAgICBncmlkLnNldFNlbGVj dGlvbk1vZGVsKG5ldyBTbGljay5Sb3dTZWxlY3Rpb25Nb2RlbCh7c2VsZWN0 QWN0aXZlUm93OiBmYWxzZX0pKTsKKyAgICBzcWxFZGl0b3IgPSB7c2xpY2tn cmlkOiBncmlkfTsKKyAgfSk7CiAKLSAgICAgIGFmdGVyRWFjaChmdW5jdGlv bigpIHsKLSAgICAgICAgJCgiYm9keSIpLnJlbW92ZSgnI2dyaWQnKTsKLSAg ICAgICAgJCgiYm9keSIpLnJlbW92ZSgnI2J0bi1wYXN0ZS1yb3cnKTsKLSAg ICAgIH0pOworICBhZnRlckVhY2goZnVuY3Rpb24gKCkgeworICAgICQoJ2Jv ZHknKS5yZW1vdmUoJyNncmlkJyk7CisgICAgJCgnYm9keScpLnJlbW92ZSgn I2J0bi1wYXN0ZS1yb3cnKTsKKyAgfSk7CiAKLSAgICAgIGRlc2NyaWJlKCJ3 aGVuIHJvd3MgYXJlIHNlbGVjdGVkIiwgZnVuY3Rpb24gKCkgewotICAgICAg ICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICBncmlkLmdl dFNlbGVjdGlvbk1vZGVsKCkuc2V0U2VsZWN0ZWRSYW5nZXMoWwotICAgICAg ICAgICAgUmFuZ2VTZWxlY3Rpb25IZWxwZXIucmFuZ2VGb3JSb3coZ3JpZCwg MCksCi0gICAgICAgICAgICBSYW5nZVNlbGVjdGlvbkhlbHBlci5yYW5nZUZv clJvdyhncmlkLCAyKV0KLSAgICAgICAgICApOwotICAgICAgICB9KTsKKyAg ZGVzY3JpYmUoJ3doZW4gcm93cyBhcmUgc2VsZWN0ZWQnLCBmdW5jdGlvbiAo KSB7CisgICAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7CisgICAgICBncmlk LmdldFNlbGVjdGlvbk1vZGVsKCkuc2V0U2VsZWN0ZWRSYW5nZXMoWworICAg ICAgICBSYW5nZVNlbGVjdGlvbkhlbHBlci5yYW5nZUZvclJvdyhncmlkLCAw KSwKKyAgICAgICAgUmFuZ2VTZWxlY3Rpb25IZWxwZXIucmFuZ2VGb3JSb3co Z3JpZCwgMildCisgICAgICApOworICAgIH0pOwogCi0gICAgICAgIGl0KCJj b3BpZXMgdGhlbSIsIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICBzcHlPbihj bGlwYm9hcmQsICdjb3B5VGV4dFRvQ2xpcGJvYXJkJyk7CisgICAgaXQoJ2Nv cGllcyB0aGVtJywgZnVuY3Rpb24gKCkgeworICAgICAgc3B5T24oY2xpcGJv YXJkLCAnY29weVRleHRUb0NsaXBib2FyZCcpOwogCi0gICAgICAgICAgY29w eURhdGEuYXBwbHkoc3FsRWRpdG9yKTsKKyAgICAgIGNvcHlEYXRhLmFwcGx5 KHNxbEVkaXRvcik7CiAKLSAgICAgICAgICBleHBlY3Qoc3FsRWRpdG9yLmNv cGllZF9yb3dzLmxlbmd0aCkudG9CZSgyKTsKKyAgICAgIGV4cGVjdChzcWxF ZGl0b3IuY29waWVkX3Jvd3MubGVuZ3RoKS50b0JlKDIpOwogCi0gICAgICAg ICAgZXhwZWN0KGNsaXBib2FyZC5jb3B5VGV4dFRvQ2xpcGJvYXJkKS50b0hh dmVCZWVuQ2FsbGVkKCk7Ci0gICAgICAgICAgZXhwZWN0KGNsaXBib2FyZC5j b3B5VGV4dFRvQ2xpcGJvYXJkLmNhbGxzLm1vc3RSZWNlbnQoKS5hcmdzWzBd KS50b0NvbnRhaW4oIjEsJ2xlb3BvcmQnLCcxMiciKTsKLSAgICAgICAgICBl eHBlY3QoY2xpcGJvYXJkLmNvcHlUZXh0VG9DbGlwYm9hcmQuY2FsbHMubW9z dFJlY2VudCgpLmFyZ3NbMF0pLnRvQ29udGFpbigiMywncHVtYScsJzknIik7 Ci0gICAgICAgIH0pOworICAgICAgZXhwZWN0KGNsaXBib2FyZC5jb3B5VGV4 dFRvQ2xpcGJvYXJkKS50b0hhdmVCZWVuQ2FsbGVkKCk7CisgICAgICBleHBl Y3QoY2xpcGJvYXJkLmNvcHlUZXh0VG9DbGlwYm9hcmQuY2FsbHMubW9zdFJl Y2VudCgpLmFyZ3NbMF0pLnRvQ29udGFpbignMSxcJ2xlb3BvcmRcJyxcJzEy XCcnKTsKKyAgICAgIGV4cGVjdChjbGlwYm9hcmQuY29weVRleHRUb0NsaXBi b2FyZC5jYWxscy5tb3N0UmVjZW50KCkuYXJnc1swXSkudG9Db250YWluKCcz LFwncHVtYVwnLFwnOVwnJyk7CisgICAgfSk7CiAKLSAgICAgICAgZGVzY3Jp YmUoIndoZW4gdGhlIHVzZXIgY2FuIGVkaXQgdGhlIGdyaWQiLCBmdW5jdGlv biAoKSB7Ci0gICAgICAgICAgaXQoImVuYWJsZXMgdGhlIHBhc3RlIHJvdyBi dXR0b24iLCBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICBjb3B5RGF0YS5h cHBseShfLmV4dGVuZCh7Y2FuX2VkaXQ6IHRydWV9LCBzcWxFZGl0b3IpKTsK KyAgICBkZXNjcmliZSgnd2hlbiB0aGUgdXNlciBjYW4gZWRpdCB0aGUgZ3Jp ZCcsIGZ1bmN0aW9uICgpIHsKKyAgICAgIGl0KCdlbmFibGVzIHRoZSBwYXN0 ZSByb3cgYnV0dG9uJywgZnVuY3Rpb24gKCkgeworICAgICAgICBjb3B5RGF0 YS5hcHBseShfLmV4dGVuZCh7Y2FuX2VkaXQ6IHRydWV9LCBzcWxFZGl0b3Ip KTsKIAotICAgICAgICAgICAgZXhwZWN0KCQoIiNidG4tcGFzdGUtcm93Iiku cHJvcCgnZGlzYWJsZWQnKSkudG9CZShmYWxzZSk7Ci0gICAgICAgICAgfSk7 Ci0gICAgICAgIH0pOworICAgICAgICBleHBlY3QoJCgnI2J0bi1wYXN0ZS1y b3cnKS5wcm9wKCdkaXNhYmxlZCcpKS50b0JlKGZhbHNlKTsKICAgICAgIH0p OworICAgIH0pOworICB9KTsKIAotICAgICAgZGVzY3JpYmUoIndoZW4gYSBj b2x1bW4gaXMgc2VsZWN0ZWQiLCBmdW5jdGlvbiAoKSB7Ci0gICAgICAgIGJl Zm9yZUVhY2goZnVuY3Rpb24gKCkgewotICAgICAgICAgIHZhciBmaXJzdENv bHVtbiA9IG5ldyBTbGljay5SYW5nZSgwLCAwLCAyLCAwKTsKLSAgICAgICAg ICBncmlkLmdldFNlbGVjdGlvbk1vZGVsKCkuc2V0U2VsZWN0ZWRSYW5nZXMo W2ZpcnN0Q29sdW1uXSkKLSAgICAgICAgfSk7CisgIGRlc2NyaWJlKCd3aGVu IGEgY29sdW1uIGlzIHNlbGVjdGVkJywgZnVuY3Rpb24gKCkgeworICAgIGJl Zm9yZUVhY2goZnVuY3Rpb24gKCkgeworICAgICAgdmFyIGZpcnN0Q29sdW1u ID0gbmV3IFNsaWNrLlJhbmdlKDAsIDAsIDIsIDApOworICAgICAgZ3JpZC5n ZXRTZWxlY3Rpb25Nb2RlbCgpLnNldFNlbGVjdGVkUmFuZ2VzKFtmaXJzdENv bHVtbl0pOworICAgIH0pOwogCi0gICAgICAgIGl0KCJjb3BpZXMgdGV4dCB0 byB0aGUgY2xpcGJvYXJkIiwgZnVuY3Rpb24gKCkgewotICAgICAgICAgIHNw eU9uKGNsaXBib2FyZCwgJ2NvcHlUZXh0VG9DbGlwYm9hcmQnKTsKKyAgICBp dCgnY29waWVzIHRleHQgdG8gdGhlIGNsaXBib2FyZCcsIGZ1bmN0aW9uICgp IHsKKyAgICAgIHNweU9uKGNsaXBib2FyZCwgJ2NvcHlUZXh0VG9DbGlwYm9h cmQnKTsKIAotICAgICAgICAgIGNvcHlEYXRhLmFwcGx5KHNxbEVkaXRvcik7 CisgICAgICBjb3B5RGF0YS5hcHBseShzcWxFZGl0b3IpOwogCi0gICAgICAg ICAgZXhwZWN0KGNsaXBib2FyZC5jb3B5VGV4dFRvQ2xpcGJvYXJkKS50b0hh dmVCZWVuQ2FsbGVkKCk7CisgICAgICBleHBlY3QoY2xpcGJvYXJkLmNvcHlU ZXh0VG9DbGlwYm9hcmQpLnRvSGF2ZUJlZW5DYWxsZWQoKTsKIAotICAgICAg ICAgIHZhciBjb3B5QXJnID0gY2xpcGJvYXJkLmNvcHlUZXh0VG9DbGlwYm9h cmQuY2FsbHMubW9zdFJlY2VudCgpLmFyZ3NbMF07Ci0gICAgICAgICAgdmFy IHJvd1N0cmluZ3MgPSBjb3B5QXJnLnNwbGl0KCdcbicpOwotICAgICAgICAg IGV4cGVjdChyb3dTdHJpbmdzWzBdKS50b0JlKCIxIik7Ci0gICAgICAgICAg ZXhwZWN0KHJvd1N0cmluZ3NbMV0pLnRvQmUoIjIiKTsKLSAgICAgICAgICBl eHBlY3Qocm93U3RyaW5nc1syXSkudG9CZSgiMyIpOwotICAgICAgICB9KTsK KyAgICAgIHZhciBjb3B5QXJnID0gY2xpcGJvYXJkLmNvcHlUZXh0VG9DbGlw Ym9hcmQuY2FsbHMubW9zdFJlY2VudCgpLmFyZ3NbMF07CisgICAgICB2YXIg cm93U3RyaW5ncyA9IGNvcHlBcmcuc3BsaXQoJ1xuJyk7CisgICAgICBleHBl Y3Qocm93U3RyaW5nc1swXSkudG9CZSgnMScpOworICAgICAgZXhwZWN0KHJv d1N0cmluZ3NbMV0pLnRvQmUoJzInKTsKKyAgICAgIGV4cGVjdChyb3dTdHJp bmdzWzJdKS50b0JlKCczJyk7CisgICAgfSk7CiAKLSAgICAgICAgaXQoInNl dHMgY29waWVkX3Jvd3MgdG8gZW1wdHkiLCBmdW5jdGlvbiAoKSB7Ci0gICAg ICAgICAgY29weURhdGEuYXBwbHkoc3FsRWRpdG9yKTsKKyAgICBpdCgnc2V0 cyBjb3BpZWRfcm93cyB0byBlbXB0eScsIGZ1bmN0aW9uICgpIHsKKyAgICAg IGNvcHlEYXRhLmFwcGx5KHNxbEVkaXRvcik7CiAKLSAgICAgICAgICBleHBl Y3Qoc3FsRWRpdG9yLmNvcGllZF9yb3dzLmxlbmd0aCkudG9CZSgwKTsKLSAg ICAgICAgfSk7CisgICAgICBleHBlY3Qoc3FsRWRpdG9yLmNvcGllZF9yb3dz Lmxlbmd0aCkudG9CZSgwKTsKKyAgICB9KTsKIAotICAgICAgICBkZXNjcmli ZSgid2hlbiB0aGUgdXNlciBjYW4gZWRpdCB0aGUgZ3JpZCIsIGZ1bmN0aW9u ICgpIHsKLSAgICAgICAgICBpdCgiZGlzYWJsZXMgdGhlIHBhc3RlIHJvdyBi dXR0b24iLCBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICBjb3B5RGF0YS5h cHBseShfLmV4dGVuZCh7Y2FuX2VkaXQ6IHRydWV9LCBzcWxFZGl0b3IpKTsK KyAgICBkZXNjcmliZSgnd2hlbiB0aGUgdXNlciBjYW4gZWRpdCB0aGUgZ3Jp ZCcsIGZ1bmN0aW9uICgpIHsKKyAgICAgIGl0KCdkaXNhYmxlcyB0aGUgcGFz dGUgcm93IGJ1dHRvbicsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgY29weURh dGEuYXBwbHkoXy5leHRlbmQoe2Nhbl9lZGl0OiB0cnVlfSwgc3FsRWRpdG9y KSk7CiAKLSAgICAgICAgICAgIGV4cGVjdCgkKCIjYnRuLXBhc3RlLXJvdyIp LnByb3AoJ2Rpc2FibGVkJykpLnRvQmUodHJ1ZSk7Ci0gICAgICAgICAgfSk7 Ci0gICAgICAgIH0pOworICAgICAgICBleHBlY3QoJCgnI2J0bi1wYXN0ZS1y b3cnKS5wcm9wKCdkaXNhYmxlZCcpKS50b0JlKHRydWUpOwogICAgICAgfSk7 CiAgICAgfSk7CiAgIH0pOworfSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg ZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9z ZWxlY3Rpb24vZ3JpZF9zZWxlY3Rvcl9zcGVjLmpzIGIvd2ViL3JlZ3Jlc3Np b24vamF2YXNjcmlwdC9zZWxlY3Rpb24vZ3JpZF9zZWxlY3Rvcl9zcGVjLmpz CmluZGV4IGE3NGE2NmY5Li4yMjg4NmI3NyAxMDA2NDQKLS0tIGEvd2ViL3Jl Z3Jlc3Npb24vamF2YXNjcmlwdC9zZWxlY3Rpb24vZ3JpZF9zZWxlY3Rvcl9z cGVjLmpzCisrKyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvc2VsZWN0 aW9uL2dyaWRfc2VsZWN0b3Jfc3BlYy5qcwpAQCAtMSwxMjYgKzEsMTI3IEBA Ci1kZWZpbmUoWyJqcXVlcnkiLAotICAgICJ1bmRlcnNjb3JlIiwKLSAgICAi c2xpY2tncmlkL3NsaWNrLmdyaWQiLAotICAgICJzbGlja2dyaWQvc2xpY2su cm93c2VsZWN0aW9ubW9kZWwiLAotICAgICJzb3VyY2VzL3NlbGVjdGlvbi9n cmlkX3NlbGVjdG9yIgotICBdLAotICBmdW5jdGlvbiAoJCwgXywgU2xpY2tH cmlkLCBSb3dTZWxlY3Rpb25Nb2RlbCwgR3JpZFNlbGVjdG9yKSB7Ci0gICAg ZGVzY3JpYmUoIkdyaWRTZWxlY3RvciIsIGZ1bmN0aW9uICgpIHsKLSAgICAg IHZhciBjb250YWluZXIsIGRhdGEsIGNvbHVtbnMsIGdyaWRTZWxlY3Rvciwg cm93U2VsZWN0aW9uTW9kZWw7CitpbXBvcnQgJCBmcm9tICdqcXVlcnknOwog Ci0gICAgICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHsKLSAgICAgICAgY29u dGFpbmVyID0gJCgiPGRpdj48L2Rpdj4iKTsKLSAgICAgICAgY29udGFpbmVy LmhlaWdodCg5OTk5KTsKLSAgICAgICAgY29sdW1ucyA9IFt7Ci0gICAgICAg ICAgaWQ6ICcxJywKLSAgICAgICAgICBuYW1lOiAnc29tZS1jb2x1bW4tbmFt ZScsCi0gICAgICAgIH0sIHsKLSAgICAgICAgICBpZDogJzInLAotICAgICAg ICAgIG5hbWU6ICdzZWNvbmQgY29sdW1uJywKLSAgICAgICAgfV07Ci0KLSAg ICAgICAgZ3JpZFNlbGVjdG9yID0gbmV3IEdyaWRTZWxlY3RvcigpOwotICAg ICAgICBjb2x1bW5zID0gZ3JpZFNlbGVjdG9yLmdldENvbHVtbkRlZmluaXRp b25zV2l0aENoZWNrYm94ZXMoY29sdW1ucyk7Ci0KLSAgICAgICAgZGF0YSA9 IFtdOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwOyBpKyspIHsK LSAgICAgICAgICBkYXRhLnB1c2goeydzb21lLWNvbHVtbi1uYW1lJzogJ3Nv bWUtdmFsdWUtJyArIGksICdzZWNvbmQgY29sdW1uJzogJ3NlY29uZCB2YWx1 ZSAnICsgaX0pOwotICAgICAgICB9Ci0gICAgICAgIHZhciBncmlkID0gbmV3 IFNsaWNrR3JpZChjb250YWluZXIsIGRhdGEsIGNvbHVtbnMpOwotCi0gICAg ICAgIHJvd1NlbGVjdGlvbk1vZGVsID0gbmV3IFJvd1NlbGVjdGlvbk1vZGVs KCk7Ci0gICAgICAgIGdyaWQuc2V0U2VsZWN0aW9uTW9kZWwocm93U2VsZWN0 aW9uTW9kZWwpOwotCi0gICAgICAgIGdyaWQucmVnaXN0ZXJQbHVnaW4oZ3Jp ZFNlbGVjdG9yKTsKLSAgICAgICAgZ3JpZC5pbnZhbGlkYXRlKCk7Ci0KLSAg ICAgICAgJCgiYm9keSIpLmFwcGVuZChjb250YWluZXIpOwotICAgICAgfSk7 CitpbXBvcnQgU2xpY2sgZnJvbSAnc2xpY2tncmlkJzsKK2ltcG9ydCAnc2xp Y2tncmlkLmdyaWQnOwogCi0gICAgICBhZnRlckVhY2goZnVuY3Rpb24gKCkg ewotICAgICAgICAkKCJib2R5IikuZmluZChjb250YWluZXIpLnJlbW92ZSgp OwotICAgICAgfSk7CitpbXBvcnQgUm93U2VsZWN0aW9uTW9kZWwgZnJvbSAn c2xpY2tncmlkLnJvd3NlbGVjdGlvbm1vZGVsJzsKIAotICAgICAgaXQoInJl bmRlcnMgYW4gYWRkaXRpb25hbCBjb2x1bW4gb24gdGhlIGxlZnQgZm9yIHNl bGVjdGluZyByb3dzIiwgZnVuY3Rpb24gKCkgewotICAgICAgICBleHBlY3Qo Y29sdW1ucy5sZW5ndGgpLnRvQmUoMyk7CitpbXBvcnQgR3JpZFNlbGVjdG9y IGZyb20gJ3NvdXJjZXMvc2VsZWN0aW9uL2dyaWRfc2VsZWN0b3InOwogCi0g ICAgICAgIHZhciBsZWZ0bW9zdENvbHVtbiA9IGNvbHVtbnNbMF07Ci0gICAg ICAgIGV4cGVjdChsZWZ0bW9zdENvbHVtbi5pZCkudG9CZSgncm93LWhlYWRl ci1jb2x1bW4nKTsKLSAgICAgIH0pOworZGVzY3JpYmUoJ0dyaWRTZWxlY3Rv cicsIGZ1bmN0aW9uICgpIHsKKyAgdmFyIGNvbnRhaW5lciwgZGF0YSwgY29s dW1ucywgZ3JpZFNlbGVjdG9yLCByb3dTZWxlY3Rpb25Nb2RlbDsKIAotICAg ICAgaXQoInJlbmRlcnMgY2hlY2tib3hlcyBmb3Igc2VsZWN0aW5nIGNvbHVt bnMiLCBmdW5jdGlvbiAoKSB7Ci0gICAgICAgIGV4cGVjdChjb250YWluZXIu ZmluZCgnW2RhdGEtdGVzdD0ib3V0cHV0LWNvbHVtbi1oZWFkZXIiXSBpbnB1 dCcpLmxlbmd0aCkudG9CZSgyKQotICAgICAgfSk7CisgIGJlZm9yZUVhY2go ZnVuY3Rpb24gKCkgeworICAgIGNvbnRhaW5lciA9ICQoJzxkaXY+PC9kaXY+ Jyk7CisgICAgY29udGFpbmVyLmhlaWdodCg5OTk5KTsKKyAgICBjb2x1bW5z ID0gW3sKKyAgICAgIGlkOiAnMScsCisgICAgICBuYW1lOiAnc29tZS1jb2x1 bW4tbmFtZScsCisgICAgfSwgeworICAgICAgaWQ6ICcyJywKKyAgICAgIG5h bWU6ICdzZWNvbmQgY29sdW1uJywKKyAgICB9XTsKIAotICAgICAgaXQoInJl bmRlcnMgYSBjaGVja2JveCBmb3Igc2VsZWN0aW5nIGFsbCB0aGUgY2VsbHMi LCBmdW5jdGlvbiAoKSB7Ci0gICAgICAgIGV4cGVjdChjb250YWluZXIuZmlu ZCgiW3RpdGxlPSdTZWxlY3QvRGVzZWxlY3QgQWxsJ10iKS5sZW5ndGgpLnRv QmUoMSk7Ci0gICAgICB9KTsKKyAgICBncmlkU2VsZWN0b3IgPSBuZXcgR3Jp ZFNlbGVjdG9yKCk7CisgICAgY29sdW1ucyA9IGdyaWRTZWxlY3Rvci5nZXRD b2x1bW5EZWZpbml0aW9uc1dpdGhDaGVja2JveGVzKGNvbHVtbnMpOworCisg ICAgZGF0YSA9IFtdOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTA7IGkr KykgeworICAgICAgZGF0YS5wdXNoKHsnc29tZS1jb2x1bW4tbmFtZSc6ICdz b21lLXZhbHVlLScgKyBpLCAnc2Vjb25kIGNvbHVtbic6ICdzZWNvbmQgdmFs dWUgJyArIGl9KTsKKyAgICB9CisgICAgdmFyIGdyaWQgPSBuZXcgU2xpY2su R3JpZChjb250YWluZXIsIGRhdGEsIGNvbHVtbnMpOworCisgICAgcm93U2Vs ZWN0aW9uTW9kZWwgPSBuZXcgUm93U2VsZWN0aW9uTW9kZWwoKTsKKyAgICBn cmlkLnNldFNlbGVjdGlvbk1vZGVsKHJvd1NlbGVjdGlvbk1vZGVsKTsKKwor ICAgIGdyaWQucmVnaXN0ZXJQbHVnaW4oZ3JpZFNlbGVjdG9yKTsKKyAgICBn cmlkLmludmFsaWRhdGUoKTsKKworICAgICQoJ2JvZHknKS5hcHBlbmQoY29u dGFpbmVyKTsKKyAgfSk7CisKKyAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHsK KyAgICAkKCdib2R5JykuZmluZChjb250YWluZXIpLnJlbW92ZSgpOworICB9 KTsKKworICBpdCgncmVuZGVycyBhbiBhZGRpdGlvbmFsIGNvbHVtbiBvbiB0 aGUgbGVmdCBmb3Igc2VsZWN0aW5nIHJvd3MnLCBmdW5jdGlvbiAoKSB7Cisg ICAgZXhwZWN0KGNvbHVtbnMubGVuZ3RoKS50b0JlKDMpOworCisgICAgdmFy IGxlZnRtb3N0Q29sdW1uID0gY29sdW1uc1swXTsKKyAgICBleHBlY3QobGVm dG1vc3RDb2x1bW4uaWQpLnRvQmUoJ3Jvdy1oZWFkZXItY29sdW1uJyk7Cisg IH0pOworCisgIGl0KCdyZW5kZXJzIGNoZWNrYm94ZXMgZm9yIHNlbGVjdGlu ZyBjb2x1bW5zJywgZnVuY3Rpb24gKCkgeworICAgIGV4cGVjdChjb250YWlu ZXIuZmluZCgnW2RhdGEtdGVzdD0ib3V0cHV0LWNvbHVtbi1oZWFkZXIiXSBp bnB1dCcpLmxlbmd0aCkudG9CZSgyKTsKKyAgfSk7CisKKyAgaXQoJ3JlbmRl cnMgYSBjaGVja2JveCBmb3Igc2VsZWN0aW5nIGFsbCB0aGUgY2VsbHMnLCBm dW5jdGlvbiAoKSB7CisgICAgZXhwZWN0KGNvbnRhaW5lci5maW5kKCdbdGl0 bGU9XCdTZWxlY3QvRGVzZWxlY3QgQWxsXCddJykubGVuZ3RoKS50b0JlKDEp OworICB9KTsKKworICBkZXNjcmliZSgnd2hlbiB0aGUgY2VsbCBmb3IgdGhl IHNlbGVjdC9kZXNlbGVjdCBhbGwgaXMgY2xpY2tlZCcsIGZ1bmN0aW9uICgp IHsKKyAgICBpdCgnc2VsZWN0cyB0aGUgd2hvbGUgZ3JpZCcsIGZ1bmN0aW9u ICgpIHsKKyAgICAgIGNvbnRhaW5lci5maW5kKCdbdGl0bGU9XCdTZWxlY3Qv RGVzZWxlY3QgQWxsXCddJykucGFyZW50KCkuY2xpY2soKTsKKworICAgICAg dmFyIHNlbGVjdGVkUmFuZ2VzID0gcm93U2VsZWN0aW9uTW9kZWwuZ2V0U2Vs ZWN0ZWRSYW5nZXMoKTsKKyAgICAgIGV4cGVjdChzZWxlY3RlZFJhbmdlcy5s ZW5ndGgpLnRvQmUoMSk7CisgICAgICB2YXIgc2VsZWN0ZWRSYW5nZSA9IHNl bGVjdGVkUmFuZ2VzWzBdOworICAgICAgZXhwZWN0KHNlbGVjdGVkUmFuZ2Uu ZnJvbUNlbGwpLnRvQmUoMSk7CisgICAgICBleHBlY3Qoc2VsZWN0ZWRSYW5n ZS50b0NlbGwpLnRvQmUoMik7CisgICAgICBleHBlY3Qoc2VsZWN0ZWRSYW5n ZS5mcm9tUm93KS50b0JlKDApOworICAgICAgZXhwZWN0KHNlbGVjdGVkUmFu Z2UudG9Sb3cpLnRvQmUoOSk7CisgICAgfSk7CisKKyAgICBpdCgnY2hlY2tz IHRoZSBjaGVja2JveCcsIGZ1bmN0aW9uICgpIHsKKyAgICAgIGNvbnRhaW5l ci5maW5kKCdbdGl0bGU9XCdTZWxlY3QvRGVzZWxlY3QgQWxsXCddJykucGFy ZW50KCkuY2xpY2soKTsKKworICAgICAgZXhwZWN0KCQoY29udGFpbmVyLmZp bmQoJ1tkYXRhLWlkPVwnY2hlY2tib3gtc2VsZWN0LWFsbFwnXScpKS5pcygn OmNoZWNrZWQnKSkudG9CZVRydXRoeSgpOworICAgIH0pOworICB9KTsKIAot ICAgICAgZGVzY3JpYmUoIndoZW4gdGhlIGNlbGwgZm9yIHRoZSBzZWxlY3Qv ZGVzZWxlY3QgYWxsIGlzIGNsaWNrZWQiLCBmdW5jdGlvbiAoKSB7Ci0gICAg ICAgIGl0KCJzZWxlY3RzIHRoZSB3aG9sZSBncmlkIiwgZnVuY3Rpb24gKCkg ewotICAgICAgICAgIGNvbnRhaW5lci5maW5kKCJbdGl0bGU9J1NlbGVjdC9E ZXNlbGVjdCBBbGwnXSIpLnBhcmVudCgpLmNsaWNrKCk7CisgIGRlc2NyaWJl KCd3aGVuIHRoZSBtYWluIGNoZWNrYm94IGluIHRoZSBjb3JuZXIgZ2V0cyBz ZWxlY3RlZCcsIGZ1bmN0aW9uICgpIHsKKyAgICBpdCgndW5jaGVja3MgYWxs IHRoZSBjb2x1bW5zJywgZnVuY3Rpb24gKCkgeworICAgICAgY29udGFpbmVy LmZpbmQoJ1t0aXRsZT1cJ1NlbGVjdC9EZXNlbGVjdCBBbGxcJ10nKS5jbGlj aygpOwogCi0gICAgICAgICAgdmFyIHNlbGVjdGVkUmFuZ2VzID0gcm93U2Vs ZWN0aW9uTW9kZWwuZ2V0U2VsZWN0ZWRSYW5nZXMoKTsKLSAgICAgICAgICBl eHBlY3Qoc2VsZWN0ZWRSYW5nZXMubGVuZ3RoKS50b0JlKDEpOwotICAgICAg ICAgIHZhciBzZWxlY3RlZFJhbmdlID0gc2VsZWN0ZWRSYW5nZXNbMF07Ci0g ICAgICAgICAgZXhwZWN0KHNlbGVjdGVkUmFuZ2UuZnJvbUNlbGwpLnRvQmUo MSk7Ci0gICAgICAgICAgZXhwZWN0KHNlbGVjdGVkUmFuZ2UudG9DZWxsKS50 b0JlKDIpOwotICAgICAgICAgIGV4cGVjdChzZWxlY3RlZFJhbmdlLmZyb21S b3cpLnRvQmUoMCk7Ci0gICAgICAgICAgZXhwZWN0KHNlbGVjdGVkUmFuZ2Uu dG9Sb3cpLnRvQmUoOSk7Ci0gICAgICAgIH0pOworICAgICAgZXhwZWN0KCQo Y29udGFpbmVyLmZpbmQoJy5zbGljay1oZWFkZXItY29sdW1ucyBpbnB1dCcp WzFdKS5pcygnOmNoZWNrZWQnKSkudG9CZUZhbHN5KCk7CisgICAgICBleHBl Y3QoJChjb250YWluZXIuZmluZCgnLnNsaWNrLWhlYWRlci1jb2x1bW5zIGlu cHV0JylbMl0pLmlzKCc6Y2hlY2tlZCcpKS50b0JlRmFsc3koKTsKKyAgICB9 KTsKIAotICAgICAgICBpdCgiY2hlY2tzIHRoZSBjaGVja2JveCIsIGZ1bmN0 aW9uICgpIHsKLSAgICAgICAgICBjb250YWluZXIuZmluZCgiW3RpdGxlPSdT ZWxlY3QvRGVzZWxlY3QgQWxsJ10iKS5wYXJlbnQoKS5jbGljaygpOworICAg IGl0KCdzZWxlY3RzIGFsbCB0aGUgY2VsbHMnLCBmdW5jdGlvbiAoKSB7Cisg ICAgICBjb250YWluZXIuZmluZCgnW3RpdGxlPVwnU2VsZWN0L0Rlc2VsZWN0 IEFsbFwnXScpLmNsaWNrKCk7CisKKyAgICAgIHZhciBzZWxlY3RlZFJhbmdl cyA9IHJvd1NlbGVjdGlvbk1vZGVsLmdldFNlbGVjdGVkUmFuZ2VzKCk7Cisg ICAgICBleHBlY3Qoc2VsZWN0ZWRSYW5nZXMubGVuZ3RoKS50b0JlKDEpOwor ICAgICAgdmFyIHNlbGVjdGVkUmFuZ2UgPSBzZWxlY3RlZFJhbmdlc1swXTsK KyAgICAgIGV4cGVjdChzZWxlY3RlZFJhbmdlLmZyb21DZWxsKS50b0JlKDEp OworICAgICAgZXhwZWN0KHNlbGVjdGVkUmFuZ2UudG9DZWxsKS50b0JlKDIp OworICAgICAgZXhwZWN0KHNlbGVjdGVkUmFuZ2UuZnJvbVJvdykudG9CZSgw KTsKKyAgICAgIGV4cGVjdChzZWxlY3RlZFJhbmdlLnRvUm93KS50b0JlKDkp OworICAgIH0pOwogCi0gICAgICAgICAgZXhwZWN0KCQoY29udGFpbmVyLmZp bmQoIltkYXRhLWlkPSdjaGVja2JveC1zZWxlY3QtYWxsJ10iKSkuaXMoJzpj aGVja2VkJykpLnRvQmVUcnV0aHkoKTsKLSAgICAgICAgfSkKKyAgICBkZXNj cmliZSgnd2hlbiB0aGUgbWFpbiBjaGVja2JveCBpbiB0aGUgY29ybmVyIGdl dHMgZGVzZWxlY3RlZCcsIGZ1bmN0aW9uICgpIHsKKyAgICAgIGJlZm9yZUVh Y2goZnVuY3Rpb24gKCkgeworICAgICAgICBjb250YWluZXIuZmluZCgnW3Rp dGxlPVwnU2VsZWN0L0Rlc2VsZWN0IEFsbFwnXScpLmNsaWNrKCk7CiAgICAg ICB9KTsKIAotICAgICAgZGVzY3JpYmUoIndoZW4gdGhlIG1haW4gY2hlY2ti b3ggaW4gdGhlIGNvcm5lciBnZXRzIHNlbGVjdGVkIiwgZnVuY3Rpb24gKCkg ewotICAgICAgICBpdCgidW5jaGVja3MgYWxsIHRoZSBjb2x1bW5zIiwgZnVu Y3Rpb24gKCkgewotICAgICAgICAgIGNvbnRhaW5lci5maW5kKCJbdGl0bGU9 J1NlbGVjdC9EZXNlbGVjdCBBbGwnXSIpLmNsaWNrKCk7Ci0KLSAgICAgICAg ICBleHBlY3QoJChjb250YWluZXIuZmluZCgnLnNsaWNrLWhlYWRlci1jb2x1 bW5zIGlucHV0JylbMV0pLmlzKCc6Y2hlY2tlZCcpKS50b0JlRmFsc3koKTsK LSAgICAgICAgICBleHBlY3QoJChjb250YWluZXIuZmluZCgnLnNsaWNrLWhl YWRlci1jb2x1bW5zIGlucHV0JylbMl0pLmlzKCc6Y2hlY2tlZCcpKS50b0Jl RmFsc3koKTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgaXQoInNlbGVjdHMg YWxsIHRoZSBjZWxscyIsIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICBjb250 YWluZXIuZmluZCgiW3RpdGxlPSdTZWxlY3QvRGVzZWxlY3QgQWxsJ10iKS5j bGljaygpOwotCi0gICAgICAgICAgdmFyIHNlbGVjdGVkUmFuZ2VzID0gcm93 U2VsZWN0aW9uTW9kZWwuZ2V0U2VsZWN0ZWRSYW5nZXMoKTsKLSAgICAgICAg ICBleHBlY3Qoc2VsZWN0ZWRSYW5nZXMubGVuZ3RoKS50b0JlKDEpOwotICAg ICAgICAgIHZhciBzZWxlY3RlZFJhbmdlID0gc2VsZWN0ZWRSYW5nZXNbMF07 Ci0gICAgICAgICAgZXhwZWN0KHNlbGVjdGVkUmFuZ2UuZnJvbUNlbGwpLnRv QmUoMSk7Ci0gICAgICAgICAgZXhwZWN0KHNlbGVjdGVkUmFuZ2UudG9DZWxs KS50b0JlKDIpOwotICAgICAgICAgIGV4cGVjdChzZWxlY3RlZFJhbmdlLmZy b21Sb3cpLnRvQmUoMCk7Ci0gICAgICAgICAgZXhwZWN0KHNlbGVjdGVkUmFu Z2UudG9Sb3cpLnRvQmUoOSk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGRl c2NyaWJlKCJ3aGVuIHRoZSBtYWluIGNoZWNrYm94IGluIHRoZSBjb3JuZXIg Z2V0cyBkZXNlbGVjdGVkIiwgZnVuY3Rpb24gKCkgewotICAgICAgICAgIGJl Zm9yZUVhY2goZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgY29udGFpbmVy LmZpbmQoIlt0aXRsZT0nU2VsZWN0L0Rlc2VsZWN0IEFsbCddIikuY2xpY2so KTsKLSAgICAgICAgICB9KTsKLQotICAgICAgICAgIGl0KCJkZXNlbGVjdHMg YWxsIHRoZSBjZWxscyIsIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIGNv bnRhaW5lci5maW5kKCJbdGl0bGU9J1NlbGVjdC9EZXNlbGVjdCBBbGwnXSIp LmNsaWNrKCk7Ci0KLSAgICAgICAgICAgIHZhciBzZWxlY3RlZFJhbmdlcyA9 IHJvd1NlbGVjdGlvbk1vZGVsLmdldFNlbGVjdGVkUmFuZ2VzKCk7Ci0gICAg ICAgICAgICBleHBlY3Qoc2VsZWN0ZWRSYW5nZXMubGVuZ3RoKS50b0JlKDAp OwotICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLQotICAgICAgICBkZXNj cmliZSgiYW5kIHRoZW4gdGhlIHVuZGVybHlpbmcgc2VsZWN0aW9uIGNoYW5n ZXMiLCBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgYmVmb3JlRWFjaChmdW5j dGlvbiAoKSB7Ci0gICAgICAgICAgICBjb250YWluZXIuZmluZCgiW3RpdGxl PSdTZWxlY3QvRGVzZWxlY3QgQWxsJ10iKS5jbGljaygpOwotICAgICAgICAg IH0pOwotCi0gICAgICAgICAgaXQoInVuY2hlY2tzIHRoZSBtYWluIGNoZWNr Ym94IiwgZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgdmFyIHJhbmdlcyA9 IFtuZXcgU2xpY2suUmFuZ2UoMCwgMCwgMCwgMSldOwotICAgICAgICAgICAg cm93U2VsZWN0aW9uTW9kZWwuc2V0U2VsZWN0ZWRSYW5nZXMocmFuZ2VzKTsK LQotICAgICAgICAgICAgZXhwZWN0KCQoY29udGFpbmVyLmZpbmQoIlt0aXRs ZT0nU2VsZWN0L0Rlc2VsZWN0IEFsbCddIikpLmlzKCc6Y2hlY2tlZCcpKS50 b0JlRmFsc3koKTsKLSAgICAgICAgICB9KTsKLSAgICAgICAgfSk7CisgICAg ICBpdCgnZGVzZWxlY3RzIGFsbCB0aGUgY2VsbHMnLCBmdW5jdGlvbiAoKSB7 CisgICAgICAgIGNvbnRhaW5lci5maW5kKCdbdGl0bGU9XCdTZWxlY3QvRGVz ZWxlY3QgQWxsXCddJykuY2xpY2soKTsKKworICAgICAgICB2YXIgc2VsZWN0 ZWRSYW5nZXMgPSByb3dTZWxlY3Rpb25Nb2RlbC5nZXRTZWxlY3RlZFJhbmdl cygpOworICAgICAgICBleHBlY3Qoc2VsZWN0ZWRSYW5nZXMubGVuZ3RoKS50 b0JlKDApOworICAgICAgfSk7CisgICAgfSk7CisKKyAgICBkZXNjcmliZSgn YW5kIHRoZW4gdGhlIHVuZGVybHlpbmcgc2VsZWN0aW9uIGNoYW5nZXMnLCBm dW5jdGlvbiAoKSB7CisgICAgICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHsK KyAgICAgICAgY29udGFpbmVyLmZpbmQoJ1t0aXRsZT1cJ1NlbGVjdC9EZXNl bGVjdCBBbGxcJ10nKS5jbGljaygpOworICAgICAgfSk7CisKKyAgICAgIGl0 KCd1bmNoZWNrcyB0aGUgbWFpbiBjaGVja2JveCcsIGZ1bmN0aW9uICgpIHsK KyAgICAgICAgdmFyIHJhbmdlcyA9IFtuZXcgU2xpY2suUmFuZ2UoMCwgMCwg MCwgMSldOworICAgICAgICByb3dTZWxlY3Rpb25Nb2RlbC5zZXRTZWxlY3Rl ZFJhbmdlcyhyYW5nZXMpOworCisgICAgICAgIGV4cGVjdCgkKGNvbnRhaW5l ci5maW5kKCdbdGl0bGU9XCdTZWxlY3QvRGVzZWxlY3QgQWxsXCddJykpLmlz KCc6Y2hlY2tlZCcpKS50b0JlRmFsc3koKTsKICAgICAgIH0pOwogICAgIH0p OwogICB9KTsKK30pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm ZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvc2VsZWN0aW9u L3JhbmdlX2JvdW5kYXJ5X25hdmlnYXRvcl9zcGVjLmpzIGIvd2ViL3JlZ3Jl c3Npb24vamF2YXNjcmlwdC9zZWxlY3Rpb24vcmFuZ2VfYm91bmRhcnlfbmF2 aWdhdG9yX3NwZWMuanMKaW5kZXggODM3NmQwYTcuLjZlOTE3M2QxIDEwMDY0 NAotLS0gYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3NlbGVjdGlvbi9y YW5nZV9ib3VuZGFyeV9uYXZpZ2F0b3Jfc3BlYy5qcworKysgYi93ZWIvcmVn cmVzc2lvbi9qYXZhc2NyaXB0L3NlbGVjdGlvbi9yYW5nZV9ib3VuZGFyeV9u YXZpZ2F0b3Jfc3BlYy5qcwpAQCAtMSw4ICsxLDIwIEBACi1kZWZpbmUoWydz b3VyY2VzL3NlbGVjdGlvbi9yYW5nZV9ib3VuZGFyeV9uYXZpZ2F0b3InXSwg ZnVuY3Rpb24gKHJhbmdlQm91bmRhcnlOYXZpZ2F0b3IpIHsKLQotICBkZXNj cmliZSgiI2dldFVuaW9uIiwgZnVuY3Rpb24gKCkgewotICAgIGRlc2NyaWJl KCJ3aGVuIHRoZSByYW5nZXMgY29tcGxldGVseSBvdmVybGFwIiwgZnVuY3Rp b24gKCkgewotICAgICAgaXQoInJldHVybnMgYSBsaXN0IHdpdGggdGhhdCBy YW5nZSIsIGZ1bmN0aW9uICgpIHsKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scwor Ly8KKy8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTcsIFRoZSBwZ0FkbWlu IERldmVsb3BtZW50IFRlYW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFz ZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorLy8KKy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK2ltcG9ydCByYW5nZUJvdW5kYXJ5 TmF2aWdhdG9yIGZyb20gJ3NvdXJjZXMvc2VsZWN0aW9uL3JhbmdlX2JvdW5k YXJ5X25hdmlnYXRvcic7CitpbXBvcnQgU2xpY2sgZnJvbSAnc2xpY2tncmlk JzsKKworZGVzY3JpYmUoJ1JhbmdlQm91bmRhcnlOYXZpZ2F0b3InLCBmdW5j dGlvbiAoKSB7CisKKyAgZGVzY3JpYmUoJyNnZXRVbmlvbicsIGZ1bmN0aW9u ICgpIHsKKyAgICBkZXNjcmliZSgnd2hlbiB0aGUgcmFuZ2VzIGNvbXBsZXRl bHkgb3ZlcmxhcCcsIGZ1bmN0aW9uICgpIHsKKyAgICAgIGl0KCdyZXR1cm5z IGEgbGlzdCB3aXRoIHRoYXQgcmFuZ2UnLCBmdW5jdGlvbiAoKSB7CiAgICAg ICAgIHZhciByYW5nZXMgPSBbWzEsIDRdLCBbMSwgNF0sIFsxLCA0XV07CiAK ICAgICAgICAgdmFyIHVuaW9uID0gcmFuZ2VCb3VuZGFyeU5hdmlnYXRvci5n ZXRVbmlvbihyYW5nZXMpOwpAQCAtMTEsOCArMjMsOCBAQCBkZWZpbmUoWydz b3VyY2VzL3NlbGVjdGlvbi9yYW5nZV9ib3VuZGFyeV9uYXZpZ2F0b3InXSwg ZnVuY3Rpb24gKHJhbmdlQm91bmRhcnlOYQogICAgICAgfSk7CiAgICAgfSk7 CiAKLSAgICBkZXNjcmliZSgid2hlbiB0aGUgcmFuZ2VzIGFsbCBvdmVybGFw IHBhcnRpYWxseSBvciB0b3VjaCIsIGZ1bmN0aW9uICgpIHsKLSAgICAgIGl0 KCJyZXR1cm5zIG9uZSBsb25nIHJhbmdlIiwgZnVuY3Rpb24gKCkgeworICAg IGRlc2NyaWJlKCd3aGVuIHRoZSByYW5nZXMgYWxsIG92ZXJsYXAgcGFydGlh bGx5IG9yIHRvdWNoJywgZnVuY3Rpb24gKCkgeworICAgICAgaXQoJ3JldHVy bnMgb25lIGxvbmcgcmFuZ2UnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgIHZh ciByYW5nZUJvdW5kcyA9IFtbMywgNl0sIFsxLCA0XSwgWzcsIDE0XV07CiAK ICAgICAgICAgdmFyIHVuaW9uID0gcmFuZ2VCb3VuZGFyeU5hdmlnYXRvci5n ZXRVbmlvbihyYW5nZUJvdW5kcyk7CkBAIC0yMCw3ICszMiw3IEBAIGRlZmlu ZShbJ3NvdXJjZXMvc2VsZWN0aW9uL3JhbmdlX2JvdW5kYXJ5X25hdmlnYXRv ciddLCBmdW5jdGlvbiAocmFuZ2VCb3VuZGFyeU5hCiAgICAgICAgIGV4cGVj dCh1bmlvbikudG9FcXVhbChbWzEsIDE0XV0pOwogICAgICAgfSk7CiAKLSAg ICAgIGl0KCJyZXR1cm5zIHRoZW0gaW4gb3JkZXIgZnJvbSBsb3dlc3QgdG8g aGlnaGVzdCIsIGZ1bmN0aW9uICgpIHsKKyAgICAgIGl0KCdyZXR1cm5zIHRo ZW0gaW4gb3JkZXIgZnJvbSBsb3dlc3QgdG8gaGlnaGVzdCcsIGZ1bmN0aW9u ICgpIHsKICAgICAgICAgdmFyIHJhbmdlQm91bmRzID0gW1szLCA2XSwgWzIs IDNdLCBbMTAsIDEyXV07CiAKICAgICAgICAgdmFyIHVuaW9uID0gcmFuZ2VC b3VuZGFyeU5hdmlnYXRvci5nZXRVbmlvbihyYW5nZUJvdW5kcyk7CkBAIC0y OCw5ICs0MCw5IEBAIGRlZmluZShbJ3NvdXJjZXMvc2VsZWN0aW9uL3Jhbmdl X2JvdW5kYXJ5X25hdmlnYXRvciddLCBmdW5jdGlvbiAocmFuZ2VCb3VuZGFy eU5hCiAgICAgICAgIGV4cGVjdCh1bmlvbikudG9FcXVhbChbWzIsIDZdLCBb MTAsIDEyXV0pOwogICAgICAgfSk7CiAKLSAgICAgIGRlc2NyaWJlKCJ3aGVu IG9uZSByYW5nZSBjb21wbGV0ZWx5IG92ZXJsYXBzIGFub3RoZXIiLCBmdW5j dGlvbigpIHsKKyAgICAgIGRlc2NyaWJlKCd3aGVuIG9uZSByYW5nZSBjb21w bGV0ZWx5IG92ZXJsYXBzIGFub3RoZXInLCBmdW5jdGlvbigpIHsKIAotICAg ICAgICBpdCgicmV0dXJucyB0aGVtIGluIG9yZGVyIGZyb20gbG93ZXN0IHRv IGhpZ2hlc3QiLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIGl0KCdyZXR1cm5z IHRoZW0gaW4gb3JkZXIgZnJvbSBsb3dlc3QgdG8gaGlnaGVzdCcsIGZ1bmN0 aW9uICgpIHsKICAgICAgICAgICB2YXIgcmFuZ2VCb3VuZHMgPSBbWzksIDE0 XSwgWzIsIDNdLCBbMTEsIDEzXV07CiAKICAgICAgICAgICB2YXIgdW5pb24g PSByYW5nZUJvdW5kYXJ5TmF2aWdhdG9yLmdldFVuaW9uKHJhbmdlQm91bmRz KTsKQEAgLTM5LDE5ICs1MSwxOSBAQCBkZWZpbmUoWydzb3VyY2VzL3NlbGVj dGlvbi9yYW5nZV9ib3VuZGFyeV9uYXZpZ2F0b3InXSwgZnVuY3Rpb24gKHJh bmdlQm91bmRhcnlOYQogICAgICAgICB9KTsKICAgICAgIH0pOwogCi0gICAg ICBkZXNjcmliZSgid2hlbiBvbmUgcmFuZ2UgaXMgYSBzdWJzZXQgb2YgYW5v dGhlciIsIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgaXQoInJldHVybnMgdGhl IGxhcmdlciByYW5nZSIsIGZ1bmN0aW9uICgpIHsKKyAgICAgIGRlc2NyaWJl KCd3aGVuIG9uZSByYW5nZSBpcyBhIHN1YnNldCBvZiBhbm90aGVyJywgZnVu Y3Rpb24gKCkgeworICAgICAgICBpdCgncmV0dXJucyB0aGUgbGFyZ2VyIHJh bmdlJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgIHZhciByYW5nZUJvdW5k cyA9IFtbMiwgNl0sIFsxLCAxNF0sIFs4LCAxMF1dOwogCiAgICAgICAgICAg dmFyIHVuaW9uID0gcmFuZ2VCb3VuZGFyeU5hdmlnYXRvci5nZXRVbmlvbihy YW5nZUJvdW5kcyk7CiAKICAgICAgICAgICBleHBlY3QodW5pb24pLnRvRXF1 YWwoW1sxLCAxNF1dKTsKLSAgICAgICAgfSkKLSAgICAgIH0pCisgICAgICAg IH0pOworICAgICAgfSk7CiAgICAgfSk7CiAKLSAgICBkZXNjcmliZSgid2hl biB0aGUgcmFuZ2VzIGRvIG5vdCB0b3VjaCIsIGZ1bmN0aW9uICgpIHsKLSAg ICAgIGl0KCJyZXR1cm5zIHRoZW0gaW4gb3JkZXIgZnJvbSBsb3dlc3QgdG8g aGlnaGVzdCIsIGZ1bmN0aW9uICgpIHsKKyAgICBkZXNjcmliZSgnd2hlbiB0 aGUgcmFuZ2VzIGRvIG5vdCB0b3VjaCcsIGZ1bmN0aW9uICgpIHsKKyAgICAg IGl0KCdyZXR1cm5zIHRoZW0gaW4gb3JkZXIgZnJvbSBsb3dlc3QgdG8gaGln aGVzdCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgdmFyIHJhbmdlQm91bmRz ID0gW1szLCA2XSwgWzEsIDFdLCBbOCwgMTBdXTsKIAogICAgICAgICB2YXIg dW5pb24gPSByYW5nZUJvdW5kYXJ5TmF2aWdhdG9yLmdldFVuaW9uKHJhbmdl Qm91bmRzKTsKQEAgLTYyLDggKzc0LDggQEAgZGVmaW5lKFsnc291cmNlcy9z ZWxlY3Rpb24vcmFuZ2VfYm91bmRhcnlfbmF2aWdhdG9yJ10sIGZ1bmN0aW9u IChyYW5nZUJvdW5kYXJ5TmEKICAgfSk7CiAKIAotICBkZXNjcmliZSgiI21h cERpbWVuc2lvbkJvdW5kYXJ5VW5pb24iLCBmdW5jdGlvbiAoKSB7Ci0gICAg aXQoInJldHVybnMgYSBsaXN0IG9mIHRoZSByZXN1bHRzIG9mIHRoZSBjYWxs YmFjayIsIGZ1bmN0aW9uICgpIHsKKyAgZGVzY3JpYmUoJyNtYXBEaW1lbnNp b25Cb3VuZGFyeVVuaW9uJywgZnVuY3Rpb24gKCkgeworICAgIGl0KCdyZXR1 cm5zIGEgbGlzdCBvZiB0aGUgcmVzdWx0cyBvZiB0aGUgY2FsbGJhY2snLCBm dW5jdGlvbiAoKSB7CiAgICAgICB2YXIgcmFuZ2VCb3VuZHMgPSBbWzAsIDFd LCBbMywgM11dOwogICAgICAgdmFyIGNhbGxiYWNrID0gZnVuY3Rpb24gKCkg ewogICAgICAgICByZXR1cm4gJ2hlbGxvJzsKQEAgLTcyLDcgKzg0LDcgQEAg ZGVmaW5lKFsnc291cmNlcy9zZWxlY3Rpb24vcmFuZ2VfYm91bmRhcnlfbmF2 aWdhdG9yJ10sIGZ1bmN0aW9uIChyYW5nZUJvdW5kYXJ5TmEKICAgICAgIGV4 cGVjdChyZXN1bHQpLnRvRXF1YWwoWydoZWxsbycsICdoZWxsbycsICdoZWxs byddKTsKICAgICB9KTsKIAotICAgIGl0KCJjYWxscyB0aGUgY2FsbGJhY2sg d2l0aCBlYWNoIGluZGV4IGluIHRoZSBkaW1lbnNpb24iLCBmdW5jdGlvbiAo KSB7CisgICAgaXQoJ2NhbGxzIHRoZSBjYWxsYmFjayB3aXRoIGVhY2ggaW5k ZXggaW4gdGhlIGRpbWVuc2lvbicsIGZ1bmN0aW9uICgpIHsKICAgICAgIHZh ciByYW5nZUJvdW5kcyA9IFtbMCwgMV0sIFszLCAzXV07CiAgICAgICB2YXIg Y2FsbGJhY2sgPSBqYXNtaW5lLmNyZWF0ZVNweSgnY2FsbGJhY2tTcHknKTsK ICAgICAgIHJhbmdlQm91bmRhcnlOYXZpZ2F0b3IubWFwRGltZW5zaW9uQm91 bmRhcnlVbmlvbihyYW5nZUJvdW5kcywgY2FsbGJhY2spOwpAQCAtODAsNyAr OTIsNyBAQCBkZWZpbmUoWydzb3VyY2VzL3NlbGVjdGlvbi9yYW5nZV9ib3Vu ZGFyeV9uYXZpZ2F0b3InXSwgZnVuY3Rpb24gKHJhbmdlQm91bmRhcnlOYQog ICAgIH0pOwogICB9KTsKIAotICBkZXNjcmliZSgiI21hcE92ZXIyREFycmF5 IiwgZnVuY3Rpb24gKCkgeworICBkZXNjcmliZSgnI21hcE92ZXIyREFycmF5 JywgZnVuY3Rpb24gKCkgewogICAgIHZhciBkYXRhLCByb3dDb2xsZWN0b3Is IHByb2Nlc3NDZWxsOwogICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkgewog ICAgICAgZGF0YSA9IFtbMCwgMSwgMiwgM10sIFsyLCAyLCAyLCAyXSwgWzQs IDUsIDYsIDddXTsKQEAgLTkyLDY2ICsxMDQsNjYgQEAgZGVmaW5lKFsnc291 cmNlcy9zZWxlY3Rpb24vcmFuZ2VfYm91bmRhcnlfbmF2aWdhdG9yJ10sIGZ1 bmN0aW9uIChyYW5nZUJvdW5kYXJ5TmEKICAgICAgIH07CiAgICAgfSk7CiAK LSAgICBpdCgiY2FsbHMgdGhlIGNhbGxiYWNrIGZvciBlYWNoIGl0ZW0gaW4g dGhlIHJhbmdlcyIsIGZ1bmN0aW9uICgpIHsKKyAgICBpdCgnY2FsbHMgdGhl IGNhbGxiYWNrIGZvciBlYWNoIGl0ZW0gaW4gdGhlIHJhbmdlcycsIGZ1bmN0 aW9uICgpIHsKICAgICAgIHZhciByb3dSYW5nZXMgPSBbWzAsIDBdLCBbMiwg Ml1dOwogICAgICAgdmFyIGNvbFJhbmdlcyA9IFtbMCwgM11dOwogCiAgICAg ICB2YXIgc2VsZWN0aW9uUmVzdWx0ID0gcmFuZ2VCb3VuZGFyeU5hdmlnYXRv ci5tYXBPdmVyMkRBcnJheShyb3dSYW5nZXMsIGNvbFJhbmdlcywgcHJvY2Vz c0NlbGwsIHJvd0NvbGxlY3Rvcik7CiAKLSAgICAgIGV4cGVjdChzZWxlY3Rp b25SZXN1bHQpLnRvRXF1YWwoWyJbMCwxLDIsM10iLCAiWzQsNSw2LDddIl0p OworICAgICAgZXhwZWN0KHNlbGVjdGlvblJlc3VsdCkudG9FcXVhbChbJ1sw LDEsMiwzXScsICdbNCw1LDYsN10nXSk7CiAgICAgfSk7CiAKLSAgICBkZXNj cmliZSgid2hlbiB0aGUgcmFuZ2VzIGFyZSBvdXQgb2Ygb3JkZXIvZHVwbGlj YXRlZCIsIGZ1bmN0aW9uICgpIHsKKyAgICBkZXNjcmliZSgnd2hlbiB0aGUg cmFuZ2VzIGFyZSBvdXQgb2Ygb3JkZXIvZHVwbGljYXRlZCcsIGZ1bmN0aW9u ICgpIHsKICAgICAgIHZhciByb3dSYW5nZXMsIGNvbFJhbmdlczsKICAgICAg IGJlZm9yZUVhY2goZnVuY3Rpb24gKCkgewogICAgICAgICByb3dSYW5nZXMg PSBbWzIsIDJdLCBbMiwgMl0sIFswLCAwXV07CiAgICAgICAgIGNvbFJhbmdl cyA9IFtbMCwgM11dOwogICAgICAgfSk7CiAKLSAgICAgIGl0KCJ1c2VzIHRo ZSB1bmlvbiBvZiB0aGUgcmFuZ2VzIiwgZnVuY3Rpb24gKCkgewotICAgICAg ICBzcHlPbihyYW5nZUJvdW5kYXJ5TmF2aWdhdG9yLCAiZ2V0VW5pb24iKS5h bmQuY2FsbFRocm91Z2goKTsKKyAgICAgIGl0KCd1c2VzIHRoZSB1bmlvbiBv ZiB0aGUgcmFuZ2VzJywgZnVuY3Rpb24gKCkgeworICAgICAgICBzcHlPbihy YW5nZUJvdW5kYXJ5TmF2aWdhdG9yLCAnZ2V0VW5pb24nKS5hbmQuY2FsbFRo cm91Z2goKTsKIAogICAgICAgICB2YXIgc2VsZWN0aW9uUmVzdWx0ID0gcmFu Z2VCb3VuZGFyeU5hdmlnYXRvci5tYXBPdmVyMkRBcnJheShyb3dSYW5nZXMs IGNvbFJhbmdlcywgcHJvY2Vzc0NlbGwsIHJvd0NvbGxlY3Rvcik7CiAKICAg ICAgICAgZXhwZWN0KHJhbmdlQm91bmRhcnlOYXZpZ2F0b3IuZ2V0VW5pb24p LnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHJvd1Jhbmdlcyk7CiAgICAgICAgIGV4 cGVjdChyYW5nZUJvdW5kYXJ5TmF2aWdhdG9yLmdldFVuaW9uKS50b0hhdmVC ZWVuQ2FsbGVkV2l0aChjb2xSYW5nZXMpOwotICAgICAgICBleHBlY3Qoc2Vs ZWN0aW9uUmVzdWx0KS50b0VxdWFsKFsiWzAsMSwyLDNdIiwgIls0LDUsNiw3 XSJdKTsKKyAgICAgICAgZXhwZWN0KHNlbGVjdGlvblJlc3VsdCkudG9FcXVh bChbJ1swLDEsMiwzXScsICdbNCw1LDYsN10nXSk7CiAgICAgICB9KTsKICAg ICB9KTsKICAgfSk7CiAKLSAgZGVzY3JpYmUoIiNyYW5nZXNUb0NzdiIsIGZ1 bmN0aW9uICgpIHsKKyAgZGVzY3JpYmUoJyNyYW5nZXNUb0NzdicsIGZ1bmN0 aW9uICgpIHsKICAgICB2YXIgZGF0YSwgY29sdW1uRGVmaW5pdGlvbnMsIHJh bmdlczsKICAgICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHsKLSAgICAgIGRh dGEgPSBbWzEsICJsZW9wYXJkIiwgIjEyIl0sCi0gICAgICAgIFsyLCAibGlv biIsICIxMyJdLAotICAgICAgICBbMywgImNvdWdhciIsICI5Il0sCi0gICAg ICAgIFs0LCAidGlnZXIiLCAiMTAiXV07CisgICAgICBkYXRhID0gW1sxLCAn bGVvcGFyZCcsICcxMiddLAorICAgICAgICBbMiwgJ2xpb24nLCAnMTMnXSwK KyAgICAgICAgWzMsICdjb3VnYXInLCAnOSddLAorICAgICAgICBbNCwgJ3Rp Z2VyJywgJzEwJ11dOwogICAgICAgY29sdW1uRGVmaW5pdGlvbnMgPSBbe25h bWU6ICdpZCcsIHBvczogMH0sIHtuYW1lOiAnYW5pbWFsJywgcG9zOiAxfSwg e25hbWU6ICdzaXplJywgcG9zOiAyfV07CiAgICAgICByYW5nZXMgPSBbbmV3 IFNsaWNrLlJhbmdlKDAsIDAsIDAsIDIpLCBuZXcgU2xpY2suUmFuZ2UoMywg MCwgMywgMildOwogICAgIH0pOwogCi0gICAgaXQoInJldHVybnMgY3N2IGZv ciB0aGUgcHJvdmlkZWQgcmFuZ2VzIiwgZnVuY3Rpb24gKCkgeworICAgIGl0 KCdyZXR1cm5zIGNzdiBmb3IgdGhlIHByb3ZpZGVkIHJhbmdlcycsIGZ1bmN0 aW9uICgpIHsKIAogICAgICAgdmFyIGNzdlJlc3VsdCA9IHJhbmdlQm91bmRh cnlOYXZpZ2F0b3IucmFuZ2VzVG9Dc3YoZGF0YSwgY29sdW1uRGVmaW5pdGlv bnMsIHJhbmdlcyk7CiAKLSAgICAgIGV4cGVjdChjc3ZSZXN1bHQpLnRvRXF1 YWwoIjEsJ2xlb3BhcmQnLCcxMidcbjQsJ3RpZ2VyJywnMTAnIik7CisgICAg ICBleHBlY3QoY3N2UmVzdWx0KS50b0VxdWFsKCcxLFwnbGVvcGFyZFwnLFwn MTJcJ1xuNCxcJ3RpZ2VyXCcsXCcxMFwnJyk7CiAgICAgfSk7CiAKLSAgICBk ZXNjcmliZSgid2hlbiB0aGVyZSBpcyBhbiBleHRyYSBjb2x1bW4gd2l0aCBj aGVja2JveGVzIiwgZnVuY3Rpb24gKCkgeworICAgIGRlc2NyaWJlKCd3aGVu IHRoZXJlIGlzIGFuIGV4dHJhIGNvbHVtbiB3aXRoIGNoZWNrYm94ZXMnLCBm dW5jdGlvbiAoKSB7CiAgICAgICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHsK ICAgICAgICAgY29sdW1uRGVmaW5pdGlvbnMgPSBbe25hbWU6ICdub3QtYS1k YXRhLWNvbHVtbid9LCB7bmFtZTogJ2lkJywgcG9zOiAwfSwge25hbWU6ICdh bmltYWwnLCBwb3M6IDF9LCB7CiAgICAgICAgICAgbmFtZTogJ3NpemUnLAot ICAgICAgICAgIHBvczogMgorICAgICAgICAgIHBvczogMiwKICAgICAgICAg fV07CiAgICAgICAgIHJhbmdlcyA9IFtuZXcgU2xpY2suUmFuZ2UoMCwgMCwg MCwgMyksIG5ldyBTbGljay5SYW5nZSgzLCAwLCAzLCAzKV07CiAKICAgICAg IH0pOwogCi0gICAgICBpdCgicmV0dXJucyBjc3YgZm9yIHRoZSBjb2x1bW5z IHdpdGggZGF0YSIsIGZ1bmN0aW9uICgpIHsKKyAgICAgIGl0KCdyZXR1cm5z IGNzdiBmb3IgdGhlIGNvbHVtbnMgd2l0aCBkYXRhJywgZnVuY3Rpb24gKCkg ewogICAgICAgICB2YXIgY3N2UmVzdWx0ID0gcmFuZ2VCb3VuZGFyeU5hdmln YXRvci5yYW5nZXNUb0NzdihkYXRhLCBjb2x1bW5EZWZpbml0aW9ucywgcmFu Z2VzKTsKIAotICAgICAgICBleHBlY3QoY3N2UmVzdWx0KS50b0VxdWFsKCIx LCdsZW9wYXJkJywnMTInXG40LCd0aWdlcicsJzEwJyIpOworICAgICAgICBl eHBlY3QoY3N2UmVzdWx0KS50b0VxdWFsKCcxLFwnbGVvcGFyZFwnLFwnMTJc J1xuNCxcJ3RpZ2VyXCcsXCcxMFwnJyk7CiAgICAgICB9KTsKICAgICB9KTsK ICAgfSk7CmRpZmYgLS1naXQgYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0 L3NlbGVjdGlvbi9yb3dfc2VsZWN0b3Jfc3BlYy5qcyBiL3dlYi9yZWdyZXNz aW9uL2phdmFzY3JpcHQvc2VsZWN0aW9uL3Jvd19zZWxlY3Rvcl9zcGVjLmpz CmluZGV4IDEwNjk3ZTZhLi5iZTc0MWQ0MiAxMDA2NDQKLS0tIGEvd2ViL3Jl Z3Jlc3Npb24vamF2YXNjcmlwdC9zZWxlY3Rpb24vcm93X3NlbGVjdG9yX3Nw ZWMuanMKKysrIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9zZWxlY3Rp b24vcm93X3NlbGVjdG9yX3NwZWMuanMKQEAgLTEsMTc0ICsxLDE3MiBAQAot ZGVmaW5lKAotICBbImpxdWVyeSIsCi0gICAgInVuZGVyc2NvcmUiLAotICAg ICJzbGlja2dyaWQvc2xpY2suZ3JpZCIsCi0gICAgInNvdXJjZXMvc2VsZWN0 aW9uL3Jvd19zZWxlY3RvciIsCi0gICAgInNsaWNrZ3JpZC9zbGljay5yb3dz ZWxlY3Rpb25tb2RlbCIsCi0gICAgInNsaWNrZ3JpZCIsCi0gIF0sCi0gIGZ1 bmN0aW9uICgkLCBfLCBTbGlja0dyaWQsIFJvd1NlbGVjdG9yLCBSb3dTZWxl Y3Rpb25Nb2RlbCwgU2xpY2spIHsKLSAgICBkZXNjcmliZSgiUm93U2VsZWN0 b3IiLCBmdW5jdGlvbiAoKSB7Ci0gICAgICB2YXIgY29udGFpbmVyLCBkYXRh LCBjb2x1bW5EZWZpbml0aW9ucywgZ3JpZCwgcm93U2VsZWN0aW9uTW9kZWw7 CitpbXBvcnQgJCBmcm9tICdqcXVlcnknOworCitpbXBvcnQgU2xpY2sgZnJv bSAnc2xpY2tncmlkJzsKK2ltcG9ydCAnc2xpY2tncmlkLmdyaWQnOworaW1w b3J0IFJvd1NlbGVjdGlvbk1vZGVsIGZyb20gJ3NsaWNrZ3JpZC5yb3dzZWxl Y3Rpb25tb2RlbCc7CisKK2ltcG9ydCBSb3dTZWxlY3RvciBmcm9tICdzb3Vy Y2VzL3NlbGVjdGlvbi9yb3dfc2VsZWN0b3InOworCitkZXNjcmliZSgnUm93 U2VsZWN0b3InLCBmdW5jdGlvbiAoKSB7CisgIHZhciBjb250YWluZXIsIGRh dGEsIGNvbHVtbkRlZmluaXRpb25zLCBncmlkLCByb3dTZWxlY3Rpb25Nb2Rl bDsKKworICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHsKKyAgICBjb250YWlu ZXIgPSAkKCc8ZGl2PjwvZGl2PicpOworICAgIGNvbnRhaW5lci5oZWlnaHQo OTk5OSk7CisKKyAgICBjb2x1bW5EZWZpbml0aW9ucyA9IFt7CisgICAgICBp ZDogJzEnLAorICAgICAgbmFtZTogJ3NvbWUtY29sdW1uLW5hbWUnLAorICAg ICAgc2VsZWN0YWJsZTogdHJ1ZSwKKyAgICB9LCB7CisgICAgICBpZDogJzIn LAorICAgICAgbmFtZTogJ3NlY29uZCBjb2x1bW4nLAorICAgICAgc2VsZWN0 YWJsZTogdHJ1ZSwKKyAgICB9XTsKKworICAgIHZhciByb3dTZWxlY3RvciA9 IG5ldyBSb3dTZWxlY3RvcigpOworICAgIGRhdGEgPSBbXTsKKyAgICBmb3Ig KHZhciBpID0gMDsgaSA8IDEwOyBpKyspIHsKKyAgICAgIGRhdGEucHVzaChb J3NvbWUtdmFsdWUtJyArIGksICdzZWNvbmQgdmFsdWUgJyArIGldKTsKKyAg ICB9CisgICAgY29sdW1uRGVmaW5pdGlvbnMgPSByb3dTZWxlY3Rvci5nZXRD b2x1bW5EZWZpbml0aW9uc1dpdGhDaGVja2JveGVzKGNvbHVtbkRlZmluaXRp b25zKTsKKyAgICBncmlkID0gbmV3IFNsaWNrLkdyaWQoY29udGFpbmVyLCBk YXRhLCBjb2x1bW5EZWZpbml0aW9ucyk7CisKKyAgICByb3dTZWxlY3Rpb25N b2RlbCA9IG5ldyBSb3dTZWxlY3Rpb25Nb2RlbCgpOworICAgIGdyaWQuc2V0 U2VsZWN0aW9uTW9kZWwocm93U2VsZWN0aW9uTW9kZWwpOworICAgIGdyaWQu cmVnaXN0ZXJQbHVnaW4ocm93U2VsZWN0b3IpOworICAgIGdyaWQuaW52YWxp ZGF0ZSgpOworCisgICAgJCgnYm9keScpLmFwcGVuZChjb250YWluZXIpOwor ICB9KTsKKworICBhZnRlckVhY2goZnVuY3Rpb24gKCkgeworICAgICQoJ2Jv ZHknKS5maW5kKGNvbnRhaW5lcikucmVtb3ZlKCk7CisgIH0pOworCisgIGl0 KCdyZW5kZXJzIGFuIGFkZGl0aW9uYWwgY29sdW1uIG9uIHRoZSBsZWZ0Jywg ZnVuY3Rpb24gKCkgeworICAgIGV4cGVjdChjb2x1bW5EZWZpbml0aW9ucy5s ZW5ndGgpLnRvQmUoMyk7CisKKyAgICB2YXIgbGVmdG1vc3RDb2x1bW4gPSBj b2x1bW5EZWZpbml0aW9uc1swXTsKKyAgICBleHBlY3QobGVmdG1vc3RDb2x1 bW4uaWQpLnRvQmUoJ3Jvdy1oZWFkZXItY29sdW1uJyk7CisgICAgZXhwZWN0 KGxlZnRtb3N0Q29sdW1uLm5hbWUpLnRvQmUoJycpOworICAgIGV4cGVjdChs ZWZ0bW9zdENvbHVtbi5zZWxlY3RhYmxlKS50b0JlKGZhbHNlKTsKKyAgfSk7 CisKKyAgaXQoJ3JlbmRlcnMgYSBjaGVja2JveCB0aGUgbGVmdG1vc3QgY29s dW1uJywgZnVuY3Rpb24gKCkgeworICAgIGV4cGVjdChjb250YWluZXIuZmlu ZCgnLnNyJykubGVuZ3RoKS50b0JlKDExKTsKKyAgICBleHBlY3QoY29udGFp bmVyLmZpbmQoJy5zciAuc2M6Zmlyc3QtY2hpbGQgaW5wdXRbdHlwZT0iY2hl Y2tib3giXScpLmxlbmd0aCkudG9CZSgxMCk7CisgIH0pOworCisgIGl0KCdw cmVzZXJ2ZXMgdGhlIG90aGVyIGF0dHJpYnV0ZXMgb2YgY29sdW1uIGRlZmlu aXRpb25zJywgZnVuY3Rpb24gKCkgeworICAgIGV4cGVjdChjb2x1bW5EZWZp bml0aW9uc1sxXS5pZCkudG9CZSgnMScpOworICAgIGV4cGVjdChjb2x1bW5E ZWZpbml0aW9uc1sxXS5zZWxlY3RhYmxlKS50b0JlKHRydWUpOworICB9KTsK KworICBkZXNjcmliZSgnc2VsZWN0aW5nIHJvd3MnLCBmdW5jdGlvbiAoKSB7 CisgICAgZGVzY3JpYmUoJ3doZW4gdGhlIHVzZXIgY2xpY2tzIGEgcm93IGhl YWRlciBjaGVja2JveCcsIGZ1bmN0aW9uICgpIHsKKyAgICAgIGl0KCdzZWxl Y3RzIHRoZSByb3cnLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIGNvbnRhaW5l ci5maW5kKCcuc3IgLnNjOmZpcnN0LWNoaWxkIGlucHV0W3R5cGU9ImNoZWNr Ym94Il0nKVswXS5jbGljaygpOworCisgICAgICAgIHZhciBzZWxlY3RlZFJh bmdlcyA9IHJvd1NlbGVjdGlvbk1vZGVsLmdldFNlbGVjdGVkUmFuZ2VzKCk7 CisgICAgICAgIGV4cGVjdE9ubHlUaGVGaXJzdFJvd1RvQmVTZWxlY3RlZChz ZWxlY3RlZFJhbmdlcyk7CisgICAgICB9KTsKIAotICAgICAgYmVmb3JlRWFj aChmdW5jdGlvbiAoKSB7Ci0gICAgICAgIGNvbnRhaW5lciA9ICQoIjxkaXY+ PC9kaXY+Iik7Ci0gICAgICAgIGNvbnRhaW5lci5oZWlnaHQoOTk5OSk7Ci0K LSAgICAgICAgY29sdW1uRGVmaW5pdGlvbnMgPSBbewotICAgICAgICAgIGlk OiAnMScsCi0gICAgICAgICAgbmFtZTogJ3NvbWUtY29sdW1uLW5hbWUnLAot ICAgICAgICAgIHNlbGVjdGFibGU6IHRydWUKLSAgICAgICAgfSwgewotICAg ICAgICAgIGlkOiAnMicsCi0gICAgICAgICAgbmFtZTogJ3NlY29uZCBjb2x1 bW4nLAotICAgICAgICAgIHNlbGVjdGFibGU6IHRydWUKLSAgICAgICAgfV07 Ci0KLSAgICAgICAgdmFyIHJvd1NlbGVjdG9yID0gbmV3IFJvd1NlbGVjdG9y KCk7Ci0gICAgICAgIGRhdGEgPSBbXTsKLSAgICAgICAgZm9yICh2YXIgaSA9 IDA7IGkgPCAxMDsgaSsrKSB7Ci0gICAgICAgICAgZGF0YS5wdXNoKFsnc29t ZS12YWx1ZS0nICsgaSwgJ3NlY29uZCB2YWx1ZSAnICsgaV0pOwotICAgICAg ICB9Ci0gICAgICAgIGNvbHVtbkRlZmluaXRpb25zID0gcm93U2VsZWN0b3Iu Z2V0Q29sdW1uRGVmaW5pdGlvbnNXaXRoQ2hlY2tib3hlcyhjb2x1bW5EZWZp bml0aW9ucyk7Ci0gICAgICAgIGdyaWQgPSBuZXcgU2xpY2tHcmlkKGNvbnRh aW5lciwgZGF0YSwgY29sdW1uRGVmaW5pdGlvbnMpOwotCi0gICAgICAgIHJv d1NlbGVjdGlvbk1vZGVsID0gbmV3IFJvd1NlbGVjdGlvbk1vZGVsKCk7Ci0g ICAgICAgIGdyaWQuc2V0U2VsZWN0aW9uTW9kZWwocm93U2VsZWN0aW9uTW9k ZWwpOwotICAgICAgICBncmlkLnJlZ2lzdGVyUGx1Z2luKHJvd1NlbGVjdG9y KTsKLSAgICAgICAgZ3JpZC5pbnZhbGlkYXRlKCk7Ci0KLSAgICAgICAgJCgi Ym9keSIpLmFwcGVuZChjb250YWluZXIpOworICAgICAgaXQoJ2NoZWNrcyB0 aGUgY2hlY2tib3gnLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIGNvbnRhaW5l ci5maW5kKCcuc3IgLnNjOmZpcnN0LWNoaWxkIGlucHV0W3R5cGU9ImNoZWNr Ym94Il0nKVs1XS5jbGljaygpOworCisgICAgICAgIGV4cGVjdCgkKGNvbnRh aW5lci5maW5kKCcuc3IgLnNjOmZpcnN0LWNoaWxkIGlucHV0W3R5cGU9ImNo ZWNrYm94Il0nKVs1XSkKKyAgICAgICAgICAuaXMoJzpjaGVja2VkJykpLnRv QmVUcnV0aHkoKTsKKyAgICAgIH0pOworICAgIH0pOworCisgICAgZGVzY3Jp YmUoJ3doZW4gdGhlIHVzZXIgY2xpY2tzIGEgcm93IGhlYWRlcicsIGZ1bmN0 aW9uICgpIHsKKyAgICAgIGl0KCdzZWxlY3RzIHRoZSByb3cnLCBmdW5jdGlv biAoKSB7CisgICAgICAgIGNvbnRhaW5lci5maW5kKCcuc3IgLnNjOmZpcnN0 LWNoaWxkJylbMF0uY2xpY2soKTsKKworICAgICAgICB2YXIgc2VsZWN0ZWRS YW5nZXMgPSByb3dTZWxlY3Rpb25Nb2RlbC5nZXRTZWxlY3RlZFJhbmdlcygp OworICAgICAgICBleHBlY3RPbmx5VGhlRmlyc3RSb3dUb0JlU2VsZWN0ZWQo c2VsZWN0ZWRSYW5nZXMpOwogICAgICAgfSk7CiAKLSAgICAgIGFmdGVyRWFj aChmdW5jdGlvbiAoKSB7Ci0gICAgICAgICQoImJvZHkiKS5maW5kKGNvbnRh aW5lcikucmVtb3ZlKCk7CisgICAgICBpdCgnY2hlY2tzIHRoZSBjaGVja2Jv eCcsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgY29udGFpbmVyLmZpbmQoJy5z ciAuc2M6Zmlyc3QtY2hpbGQnKVs3XS5jbGljaygpOworCisgICAgICAgIGV4 cGVjdCgkKGNvbnRhaW5lci5maW5kKCcuc3IgLnNjOmZpcnN0LWNoaWxkIGlu cHV0W3R5cGU9ImNoZWNrYm94Il0nKVs3XSkKKyAgICAgICAgICAuaXMoJzpj aGVja2VkJykpLnRvQmVUcnV0aHkoKTsKICAgICAgIH0pOworICAgIH0pOwor CisgICAgZGVzY3JpYmUoJ3doZW4gdGhlIHVzZXIgY2xpY2tzIG11bHRpcGxl IHJvdyBoZWFkZXJzJywgZnVuY3Rpb24gKCkgeworICAgICAgaXQoJ3NlbGVj dHMgYW5vdGhlciByb3cnLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIGNvbnRh aW5lci5maW5kKCcuc3IgLnNjOmZpcnN0LWNoaWxkJylbNF0uY2xpY2soKTsK KyAgICAgICAgY29udGFpbmVyLmZpbmQoJy5zciAuc2M6Zmlyc3QtY2hpbGQn KVswXS5jbGljaygpOwogCi0gICAgICBpdCgicmVuZGVycyBhbiBhZGRpdGlv bmFsIGNvbHVtbiBvbiB0aGUgbGVmdCIsIGZ1bmN0aW9uICgpIHsKLSAgICAg ICAgZXhwZWN0KGNvbHVtbkRlZmluaXRpb25zLmxlbmd0aCkudG9CZSgzKTsK KyAgICAgICAgdmFyIHNlbGVjdGVkUmFuZ2VzID0gcm93U2VsZWN0aW9uTW9k ZWwuZ2V0U2VsZWN0ZWRSYW5nZXMoKTsKKyAgICAgICAgZXhwZWN0KHNlbGVj dGVkUmFuZ2VzLmxlbmd0aCkudG9FcXVhbCgyKTsKKworICAgICAgICB2YXIg cm93MSA9IHNlbGVjdGVkUmFuZ2VzWzBdOworICAgICAgICBleHBlY3Qocm93 MS5mcm9tUm93KS50b0JlKDQpOworICAgICAgICBleHBlY3Qocm93MS50b1Jv dykudG9CZSg0KTsKKworICAgICAgICB2YXIgcm93MiA9IHNlbGVjdGVkUmFu Z2VzWzFdOworICAgICAgICBleHBlY3Qocm93Mi5mcm9tUm93KS50b0JlKDAp OworICAgICAgICBleHBlY3Qocm93Mi50b1JvdykudG9CZSgwKTsKKyAgICAg IH0pOworICAgIH0pOwogCi0gICAgICAgIHZhciBsZWZ0bW9zdENvbHVtbiA9 IGNvbHVtbkRlZmluaXRpb25zWzBdOwotICAgICAgICBleHBlY3QobGVmdG1v c3RDb2x1bW4uaWQpLnRvQmUoJ3Jvdy1oZWFkZXItY29sdW1uJyk7Ci0gICAg ICAgIGV4cGVjdChsZWZ0bW9zdENvbHVtbi5uYW1lKS50b0JlKCcnKTsKLSAg ICAgICAgZXhwZWN0KGxlZnRtb3N0Q29sdW1uLnNlbGVjdGFibGUpLnRvQmUo ZmFsc2UpOworICAgIGRlc2NyaWJlKCd3aGVuIGEgY29sdW1uIHdhcyBhbHJl YWR5IHNlbGVjdGVkJywgZnVuY3Rpb24gKCkgeworICAgICAgYmVmb3JlRWFj aChmdW5jdGlvbiAoKSB7CisgICAgICAgIHZhciBzZWxlY3RlZFJhbmdlcyA9 IFtuZXcgU2xpY2suUmFuZ2UoMCwgMCwgMCwgMSldOworICAgICAgICByb3dT ZWxlY3Rpb25Nb2RlbC5zZXRTZWxlY3RlZFJhbmdlcyhzZWxlY3RlZFJhbmdl cyk7CiAgICAgICB9KTsKIAotICAgICAgaXQoInJlbmRlcnMgYSBjaGVja2Jv eCB0aGUgbGVmdG1vc3QgY29sdW1uIiwgZnVuY3Rpb24gKCkgewotICAgICAg ICBleHBlY3QoY29udGFpbmVyLmZpbmQoJy5zcicpLmxlbmd0aCkudG9CZSgx MSk7Ci0gICAgICAgIGV4cGVjdChjb250YWluZXIuZmluZCgnLnNyIC5zYzpm aXJzdC1jaGlsZCBpbnB1dFt0eXBlPSJjaGVja2JveCJdJykubGVuZ3RoKS50 b0JlKDEwKTsKKyAgICAgIGl0KCdkZXNlbGVjdHMgdGhlIGNvbHVtbicsIGZ1 bmN0aW9uICgpIHsKKyAgICAgICAgY29udGFpbmVyLmZpbmQoJy5zciAuc2M6 Zmlyc3QtY2hpbGQnKVswXS5jbGljaygpOworICAgICAgICB2YXIgc2VsZWN0 ZWRSYW5nZXMgPSByb3dTZWxlY3Rpb25Nb2RlbC5nZXRTZWxlY3RlZFJhbmdl cygpOworCisgICAgICAgIGV4cGVjdE9ubHlUaGVGaXJzdFJvd1RvQmVTZWxl Y3RlZChzZWxlY3RlZFJhbmdlcyk7CiAgICAgICB9KTsKKyAgICB9KTsKIAot ICAgICAgaXQoInByZXNlcnZlcyB0aGUgb3RoZXIgYXR0cmlidXRlcyBvZiBj b2x1bW4gZGVmaW5pdGlvbnMiLCBmdW5jdGlvbiAoKSB7Ci0gICAgICAgIGV4 cGVjdChjb2x1bW5EZWZpbml0aW9uc1sxXS5pZCkudG9CZSgnMScpOwotICAg ICAgICBleHBlY3QoY29sdW1uRGVmaW5pdGlvbnNbMV0uc2VsZWN0YWJsZSku dG9CZSh0cnVlKTsKKyAgICBkZXNjcmliZSgnd2hlbiB0aGUgcm93IGlzIGRl c2VsZWN0ZWQgdGhyb3VnaCBzZXRTZWxlY3RlZFJhbmdlcycsIGZ1bmN0aW9u ICgpIHsKKyAgICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkgeworICAgICAg ICBjb250YWluZXIuZmluZCgnLnNyIC5zYzpmaXJzdC1jaGlsZCcpWzRdLmNs aWNrKCk7CiAgICAgICB9KTsKIAotICAgICAgZGVzY3JpYmUoInNlbGVjdGlu ZyByb3dzIiwgZnVuY3Rpb24gKCkgewotICAgICAgICBkZXNjcmliZSgid2hl biB0aGUgdXNlciBjbGlja3MgYSByb3cgaGVhZGVyIGNoZWNrYm94IiwgZnVu Y3Rpb24gKCkgewotICAgICAgICAgIGl0KCJzZWxlY3RzIHRoZSByb3ciLCBm dW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICBjb250YWluZXIuZmluZCgnLnNy IC5zYzpmaXJzdC1jaGlsZCBpbnB1dFt0eXBlPSJjaGVja2JveCJdJylbMF0u Y2xpY2soKTsKLQotICAgICAgICAgICAgdmFyIHNlbGVjdGVkUmFuZ2VzID0g cm93U2VsZWN0aW9uTW9kZWwuZ2V0U2VsZWN0ZWRSYW5nZXMoKTsKLSAgICAg ICAgICAgIGV4cGVjdE9ubHlUaGVGaXJzdFJvd1RvQmVTZWxlY3RlZChzZWxl Y3RlZFJhbmdlcyk7Ci0gICAgICAgICAgfSk7Ci0KLSAgICAgICAgICBpdCgi Y2hlY2tzIHRoZSBjaGVja2JveCIsIGZ1bmN0aW9uICgpIHsKLSAgICAgICAg ICAgIGNvbnRhaW5lci5maW5kKCcuc3IgLnNjOmZpcnN0LWNoaWxkIGlucHV0 W3R5cGU9ImNoZWNrYm94Il0nKVs1XS5jbGljaygpOwotCi0gICAgICAgICAg ICBleHBlY3QoJChjb250YWluZXIuZmluZCgnLnNyIC5zYzpmaXJzdC1jaGls ZCBpbnB1dFt0eXBlPSJjaGVja2JveCJdJylbNV0pCi0gICAgICAgICAgICAg IC5pcygnOmNoZWNrZWQnKSkudG9CZVRydXRoeSgpOwotICAgICAgICAgIH0p OwotICAgICAgICB9KTsKLQotICAgICAgICBkZXNjcmliZSgid2hlbiB0aGUg dXNlciBjbGlja3MgYSByb3cgaGVhZGVyIiwgZnVuY3Rpb24gKCkgewotICAg ICAgICAgIGl0KCJzZWxlY3RzIHRoZSByb3ciLCBmdW5jdGlvbiAoKSB7Ci0g ICAgICAgICAgICBjb250YWluZXIuZmluZCgnLnNyIC5zYzpmaXJzdC1jaGls ZCcpWzBdLmNsaWNrKCk7Ci0KLSAgICAgICAgICAgIHZhciBzZWxlY3RlZFJh bmdlcyA9IHJvd1NlbGVjdGlvbk1vZGVsLmdldFNlbGVjdGVkUmFuZ2VzKCk7 Ci0gICAgICAgICAgICBleHBlY3RPbmx5VGhlRmlyc3RSb3dUb0JlU2VsZWN0 ZWQoc2VsZWN0ZWRSYW5nZXMpOwotICAgICAgICAgIH0pOwotCi0gICAgICAg ICAgaXQoImNoZWNrcyB0aGUgY2hlY2tib3giLCBmdW5jdGlvbiAoKSB7Ci0g ICAgICAgICAgICBjb250YWluZXIuZmluZCgnLnNyIC5zYzpmaXJzdC1jaGls ZCcpWzddLmNsaWNrKCk7Ci0KLSAgICAgICAgICAgIGV4cGVjdCgkKGNvbnRh aW5lci5maW5kKCcuc3IgLnNjOmZpcnN0LWNoaWxkIGlucHV0W3R5cGU9ImNo ZWNrYm94Il0nKVs3XSkKLSAgICAgICAgICAgICAgLmlzKCc6Y2hlY2tlZCcp KS50b0JlVHJ1dGh5KCk7Ci0gICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwot Ci0gICAgICAgIGRlc2NyaWJlKCJ3aGVuIHRoZSB1c2VyIGNsaWNrcyBtdWx0 aXBsZSByb3cgaGVhZGVycyIsIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICBp dCgic2VsZWN0cyBhbm90aGVyIHJvdyIsIGZ1bmN0aW9uICgpIHsKLSAgICAg ICAgICAgIGNvbnRhaW5lci5maW5kKCcuc3IgLnNjOmZpcnN0LWNoaWxkJylb NF0uY2xpY2soKTsKLSAgICAgICAgICAgIGNvbnRhaW5lci5maW5kKCcuc3Ig LnNjOmZpcnN0LWNoaWxkJylbMF0uY2xpY2soKTsKLQotICAgICAgICAgICAg dmFyIHNlbGVjdGVkUmFuZ2VzID0gcm93U2VsZWN0aW9uTW9kZWwuZ2V0U2Vs ZWN0ZWRSYW5nZXMoKTsKLSAgICAgICAgICAgIGV4cGVjdChzZWxlY3RlZFJh bmdlcy5sZW5ndGgpLnRvRXF1YWwoMik7Ci0KLSAgICAgICAgICAgIHZhciBy b3cxID0gc2VsZWN0ZWRSYW5nZXNbMF07Ci0gICAgICAgICAgICBleHBlY3Qo cm93MS5mcm9tUm93KS50b0JlKDQpOwotICAgICAgICAgICAgZXhwZWN0KHJv dzEudG9Sb3cpLnRvQmUoNCk7Ci0KLSAgICAgICAgICAgIHZhciByb3cyID0g c2VsZWN0ZWRSYW5nZXNbMV07Ci0gICAgICAgICAgICBleHBlY3Qocm93Mi5m cm9tUm93KS50b0JlKDApOwotICAgICAgICAgICAgZXhwZWN0KHJvdzIudG9S b3cpLnRvQmUoMCk7Ci0gICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotCi0g ICAgICAgIGRlc2NyaWJlKCJ3aGVuIGEgY29sdW1uIHdhcyBhbHJlYWR5IHNl bGVjdGVkIiwgZnVuY3Rpb24gKCkgewotICAgICAgICAgIGJlZm9yZUVhY2go ZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgdmFyIHNlbGVjdGVkUmFuZ2Vz ID0gW25ldyBTbGljay5SYW5nZSgwLCAwLCAwLCAxKV07Ci0gICAgICAgICAg ICByb3dTZWxlY3Rpb25Nb2RlbC5zZXRTZWxlY3RlZFJhbmdlcyhzZWxlY3Rl ZFJhbmdlcyk7Ci0gICAgICAgICAgfSk7Ci0KLSAgICAgICAgICBpdCgiZGVz ZWxlY3RzIHRoZSBjb2x1bW4iLCBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAg ICBjb250YWluZXIuZmluZCgnLnNyIC5zYzpmaXJzdC1jaGlsZCcpWzBdLmNs aWNrKCk7Ci0gICAgICAgICAgICB2YXIgc2VsZWN0ZWRSYW5nZXMgPSByb3dT ZWxlY3Rpb25Nb2RlbC5nZXRTZWxlY3RlZFJhbmdlcygpOwotCi0gICAgICAg ICAgICBleHBlY3RPbmx5VGhlRmlyc3RSb3dUb0JlU2VsZWN0ZWQoc2VsZWN0 ZWRSYW5nZXMpOwotICAgICAgICAgIH0pCi0gICAgICAgIH0pOwotCi0gICAg ICAgIGRlc2NyaWJlKCJ3aGVuIHRoZSByb3cgaXMgZGVzZWxlY3RlZCB0aHJv dWdoIHNldFNlbGVjdGVkUmFuZ2VzIiwgZnVuY3Rpb24gKCkgewotICAgICAg ICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgY29u dGFpbmVyLmZpbmQoJy5zciAuc2M6Zmlyc3QtY2hpbGQnKVs0XS5jbGljaygp OwotICAgICAgICAgIH0pOwotCi0gICAgICAgICAgaXQoInNob3VsZCB1bmNo ZWNrIHRoZSBjaGVja2JveCIsIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAg IHJvd1NlbGVjdGlvbk1vZGVsLnNldFNlbGVjdGVkUmFuZ2VzKFtdKTsKLQot ICAgICAgICAgICAgZXhwZWN0KCQoY29udGFpbmVyLmZpbmQoJy5zciAuc2M6 Zmlyc3QtY2hpbGQgaW5wdXRbdHlwZT0iY2hlY2tib3giXScpWzRdKQotICAg ICAgICAgICAgICAuaXMoJzpjaGVja2VkJykpLnRvQmVGYWxzeSgpOwotICAg ICAgICAgIH0pOwotICAgICAgICB9KTsKLQotICAgICAgICBkZXNjcmliZSgi Y2xpY2sgYSBzZWNvbmQgdGltZSIsIGZ1bmN0aW9uICgpIHsKLSAgICAgICAg ICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIGNvbnRh aW5lci5maW5kKCcuc3IgLnNjOmZpcnN0LWNoaWxkJylbMV0uY2xpY2soKTsK LSAgICAgICAgICB9KTsKLQotICAgICAgICAgIGl0KCJ1bmNoZWNrcyBjaGVj a2JveCIsIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIGNvbnRhaW5lci5m aW5kKCcuc3IgLnNjOmZpcnN0LWNoaWxkJylbMV0uY2xpY2soKTsKLSAgICAg ICAgICAgIGV4cGVjdCgkKGNvbnRhaW5lci5maW5kKCcuc3IgLnNjOmZpcnN0 LWNoaWxkIGlucHV0W3R5cGU9ImNoZWNrYm94Il0nKVsxXSkKLSAgICAgICAg ICAgICAgLmlzKCc6Y2hlY2tlZCcpKS50b0JlRmFsc3koKTsKLSAgICAgICAg ICB9KTsKLQotICAgICAgICAgIGl0KCJ1bnNlbGVjdHMgdGhlIHJvdyIsIGZ1 bmN0aW9uICgpIHsKLSAgICAgICAgICAgIGNvbnRhaW5lci5maW5kKCcuc3Ig LnNjOmZpcnN0LWNoaWxkJylbMV0uY2xpY2soKTsKLSAgICAgICAgICAgIHZh ciBzZWxlY3RlZFJhbmdlcyA9IHJvd1NlbGVjdGlvbk1vZGVsLmdldFNlbGVj dGVkUmFuZ2VzKCk7Ci0KLSAgICAgICAgICAgIGV4cGVjdChzZWxlY3RlZFJh bmdlcy5sZW5ndGgpLnRvRXF1YWwoMCk7Ci0gICAgICAgICAgfSkKLSAgICAg ICAgfSk7CisgICAgICBpdCgnc2hvdWxkIHVuY2hlY2sgdGhlIGNoZWNrYm94 JywgZnVuY3Rpb24gKCkgeworICAgICAgICByb3dTZWxlY3Rpb25Nb2RlbC5z ZXRTZWxlY3RlZFJhbmdlcyhbXSk7CisKKyAgICAgICAgZXhwZWN0KCQoY29u dGFpbmVyLmZpbmQoJy5zciAuc2M6Zmlyc3QtY2hpbGQgaW5wdXRbdHlwZT0i Y2hlY2tib3giXScpWzRdKQorICAgICAgICAgIC5pcygnOmNoZWNrZWQnKSku dG9CZUZhbHN5KCk7CiAgICAgICB9KTsKICAgICB9KTsKIAotICAgIGZ1bmN0 aW9uIGV4cGVjdE9ubHlUaGVGaXJzdFJvd1RvQmVTZWxlY3RlZChzZWxlY3Rl ZFJhbmdlcykgewotICAgICAgdmFyIHJvdyA9IHNlbGVjdGVkUmFuZ2VzWzBd OworICAgIGRlc2NyaWJlKCdjbGljayBhIHNlY29uZCB0aW1lJywgZnVuY3Rp b24gKCkgeworICAgICAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7CisgICAg ICAgIGNvbnRhaW5lci5maW5kKCcuc3IgLnNjOmZpcnN0LWNoaWxkJylbMV0u Y2xpY2soKTsKKyAgICAgIH0pOworCisgICAgICBpdCgndW5jaGVja3MgY2hl Y2tib3gnLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIGNvbnRhaW5lci5maW5k KCcuc3IgLnNjOmZpcnN0LWNoaWxkJylbMV0uY2xpY2soKTsKKyAgICAgICAg ZXhwZWN0KCQoY29udGFpbmVyLmZpbmQoJy5zciAuc2M6Zmlyc3QtY2hpbGQg aW5wdXRbdHlwZT0iY2hlY2tib3giXScpWzFdKQorICAgICAgICAgIC5pcygn OmNoZWNrZWQnKSkudG9CZUZhbHN5KCk7CisgICAgICB9KTsKIAotICAgICAg ZXhwZWN0KHNlbGVjdGVkUmFuZ2VzLmxlbmd0aCkudG9FcXVhbCgxKTsKLSAg ICAgIGV4cGVjdChyb3cuZnJvbUNlbGwpLnRvQmUoMSk7Ci0gICAgICBleHBl Y3Qocm93LnRvQ2VsbCkudG9CZSgyKTsKLSAgICAgIGV4cGVjdChyb3cuZnJv bVJvdykudG9CZSgwKTsKLSAgICAgIGV4cGVjdChyb3cudG9Sb3cpLnRvQmUo MCk7Ci0gICAgfQotICB9KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl CisgICAgICBpdCgndW5zZWxlY3RzIHRoZSByb3cnLCBmdW5jdGlvbiAoKSB7 CisgICAgICAgIGNvbnRhaW5lci5maW5kKCcuc3IgLnNjOmZpcnN0LWNoaWxk JylbMV0uY2xpY2soKTsKKyAgICAgICAgdmFyIHNlbGVjdGVkUmFuZ2VzID0g cm93U2VsZWN0aW9uTW9kZWwuZ2V0U2VsZWN0ZWRSYW5nZXMoKTsKKworICAg ICAgICBleHBlY3Qoc2VsZWN0ZWRSYW5nZXMubGVuZ3RoKS50b0VxdWFsKDAp OworICAgICAgfSk7CisgICAgfSk7CisgIH0pOworfSk7CisKK2Z1bmN0aW9u IGV4cGVjdE9ubHlUaGVGaXJzdFJvd1RvQmVTZWxlY3RlZChzZWxlY3RlZFJh bmdlcykgeworICB2YXIgcm93ID0gc2VsZWN0ZWRSYW5nZXNbMF07CisKKyAg ZXhwZWN0KHNlbGVjdGVkUmFuZ2VzLmxlbmd0aCkudG9FcXVhbCgxKTsKKyAg ZXhwZWN0KHJvdy5mcm9tQ2VsbCkudG9CZSgxKTsKKyAgZXhwZWN0KHJvdy50 b0NlbGwpLnRvQmUoMik7CisgIGV4cGVjdChyb3cuZnJvbVJvdykudG9CZSgw KTsKKyAgZXhwZWN0KHJvdy50b1JvdykudG9CZSgwKTsKK30KXCBObyBuZXds aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcmVncmVzc2lv bi9qYXZhc2NyaXB0L3NpemVfcHJldHRpZnlfc3BlYy5qcyBiL3dlYi9yZWdy ZXNzaW9uL2phdmFzY3JpcHQvc2l6ZV9wcmV0dGlmeV9zcGVjLmpzCmluZGV4 IDdkMzcwZmNiLi5mNjBjNzljMCAxMDA2NDQKLS0tIGEvd2ViL3JlZ3Jlc3Np b24vamF2YXNjcmlwdC9zaXplX3ByZXR0aWZ5X3NwZWMuanMKKysrIGIvd2Vi L3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9zaXplX3ByZXR0aWZ5X3NwZWMuanMK QEAgLTcsNTkgKzcsNTkgQEAKIC8vCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLwogCi1kZWZpbmUoWyJzb3VyY2VzL3NpemVfcHJldHRpZnkiXSwg ZnVuY3Rpb24gKHNpemVQcmV0dGlmeSkgewotICBkZXNjcmliZSgic2l6ZVBy ZXR0aWZ5IiwgZnVuY3Rpb24gKCkgewotICAgIGRlc2NyaWJlKCJ3aGVuIHNp emUgaXMgMCIsIGZ1bmN0aW9uICgpIHsKLSAgICAgIGl0KCJyZXR1cm5zIDAg Ynl0ZXMiLCBmdW5jdGlvbiAoKSB7Ci0gICAgICAgIGV4cGVjdChzaXplUHJl dHRpZnkoMCkpLnRvRXF1YWwoIjAgYnl0ZXMiKTsKK2RlZmluZShbJ3NvdXJj ZXMvc2l6ZV9wcmV0dGlmeSddLCBmdW5jdGlvbiAoc2l6ZVByZXR0aWZ5KSB7 CisgIGRlc2NyaWJlKCdzaXplUHJldHRpZnknLCBmdW5jdGlvbiAoKSB7Cisg ICAgZGVzY3JpYmUoJ3doZW4gc2l6ZSBpcyAwJywgZnVuY3Rpb24gKCkgewor ICAgICAgaXQoJ3JldHVybnMgMCBieXRlcycsIGZ1bmN0aW9uICgpIHsKKyAg ICAgICAgZXhwZWN0KHNpemVQcmV0dGlmeSgwKSkudG9FcXVhbCgnMCBieXRl cycpOwogICAgICAgfSk7CiAgICAgfSk7CiAKLSAgICBkZXNjcmliZSgid2hl biBzaXplID49IDEwa0IgYW5kIHNpemUgPCAxMCBNQiIsIGZ1bmN0aW9uICgp IHsKLSAgICAgIGl0KCJyZXR1cm5zIHNpemUgaW4ga0IiLCBmdW5jdGlvbiAo KSB7Ci0gICAgICAgIGV4cGVjdChzaXplUHJldHRpZnkoMTAyNDApKS50b0Vx dWFsKCIxMCBrQiIpOworICAgIGRlc2NyaWJlKCd3aGVuIHNpemUgPj0gMTBr QiBhbmQgc2l6ZSA8IDEwIE1CJywgZnVuY3Rpb24gKCkgeworICAgICAgaXQo J3JldHVybnMgc2l6ZSBpbiBrQicsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAg ZXhwZWN0KHNpemVQcmV0dGlmeSgxMDI0MCkpLnRvRXF1YWwoJzEwIGtCJyk7 CiAgICAgICB9KTsKIAotICAgICAgaXQoInJldHVybnMgc2l6ZSBpbiBrQiIs IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgZXhwZWN0KHNpemVQcmV0dGlmeSg5 OTk5OSkpLnRvRXF1YWwoIjk4IGtCIik7CisgICAgICBpdCgncmV0dXJucyBz aXplIGluIGtCJywgZnVuY3Rpb24gKCkgeworICAgICAgICBleHBlY3Qoc2l6 ZVByZXR0aWZ5KDk5OTk5KSkudG9FcXVhbCgnOTgga0InKTsKICAgICAgIH0p OwogICAgIH0pOwogCiAKLSAgICBkZXNjcmliZSgid2hlbiBzaXplID49IDEw TUIgYW5kIHNpemUgPCAxMCBHQiIsIGZ1bmN0aW9uICgpIHsKLSAgICAgIGl0 KCJyZXR1cm5zIHNpemUgaW4gTUIiLCBmdW5jdGlvbiAoKSB7Ci0gICAgICAg IGV4cGVjdChzaXplUHJldHRpZnkoMTA0ODU3NjApKS50b0VxdWFsKCIxMCBN QiIpOworICAgIGRlc2NyaWJlKCd3aGVuIHNpemUgPj0gMTBNQiBhbmQgc2l6 ZSA8IDEwIEdCJywgZnVuY3Rpb24gKCkgeworICAgICAgaXQoJ3JldHVybnMg c2l6ZSBpbiBNQicsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgZXhwZWN0KHNp emVQcmV0dGlmeSgxMDQ4NTc2MCkpLnRvRXF1YWwoJzEwIE1CJyk7CiAgICAg ICB9KTsKIAotICAgICAgaXQoInJldHVybnMgc2l6ZSBpbiBNQiIsIGZ1bmN0 aW9uICgpIHsKLSAgICAgICAgZXhwZWN0KHNpemVQcmV0dGlmeSg0NDA0MDE5 MikpLnRvRXF1YWwoIjQyIE1CIik7CisgICAgICBpdCgncmV0dXJucyBzaXpl IGluIE1CJywgZnVuY3Rpb24gKCkgeworICAgICAgICBleHBlY3Qoc2l6ZVBy ZXR0aWZ5KDQ0MDQwMTkyKSkudG9FcXVhbCgnNDIgTUInKTsKICAgICAgIH0p OwogICAgIH0pOwogCiAKLSAgICBkZXNjcmliZSgid2hlbiBzaXplID49IDEw R0IgYW5kIHNpemUgPCAxMCBUQiIsIGZ1bmN0aW9uICgpIHsKLSAgICAgIGl0 KCJyZXR1cm5zIHNpemUgaW4gR0IiLCBmdW5jdGlvbiAoKSB7Ci0gICAgICAg IGV4cGVjdChzaXplUHJldHRpZnkoMTA3Mzc0MTgyNDApKS50b0VxdWFsKCIx MCBHQiIpOworICAgIGRlc2NyaWJlKCd3aGVuIHNpemUgPj0gMTBHQiBhbmQg c2l6ZSA8IDEwIFRCJywgZnVuY3Rpb24gKCkgeworICAgICAgaXQoJ3JldHVy bnMgc2l6ZSBpbiBHQicsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgZXhwZWN0 KHNpemVQcmV0dGlmeSgxMDczNzQxODI0MCkpLnRvRXF1YWwoJzEwIEdCJyk7 CiAgICAgICB9KTsKIAotICAgICAgaXQoInJldHVybnMgc2l6ZSBpbiBHQiIs IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgZXhwZWN0KHNpemVQcmV0dGlmeSgx MDczNjM0NDQ5ODE3NikpLnRvRXF1YWwoIjk5OTkgR0IiKTsKKyAgICAgIGl0 KCdyZXR1cm5zIHNpemUgaW4gR0InLCBmdW5jdGlvbiAoKSB7CisgICAgICAg IGV4cGVjdChzaXplUHJldHRpZnkoMTA3MzYzNDQ0OTgxNzYpKS50b0VxdWFs KCc5OTk5IEdCJyk7CiAgICAgICB9KTsKICAgICB9KTsKIAotICAgIGRlc2Ny aWJlKCJ3aGVuIHNpemUgPj0gMTBUQiBhbmQgc2l6ZSA8IDEwIFBCIiwgZnVu Y3Rpb24gKCkgewotICAgICAgaXQoInJldHVybnMgc2l6ZSBpbiBUQiIsIGZ1 bmN0aW9uICgpIHsKLSAgICAgICAgZXhwZWN0KHNpemVQcmV0dGlmeSgxMDk5 NTExNjI3Nzc2MCkpLnRvRXF1YWwoIjEwIFRCIik7CisgICAgZGVzY3JpYmUo J3doZW4gc2l6ZSA+PSAxMFRCIGFuZCBzaXplIDwgMTAgUEInLCBmdW5jdGlv biAoKSB7CisgICAgICBpdCgncmV0dXJucyBzaXplIGluIFRCJywgZnVuY3Rp b24gKCkgeworICAgICAgICBleHBlY3Qoc2l6ZVByZXR0aWZ5KDEwOTk1MTE2 Mjc3NzYwKSkudG9FcXVhbCgnMTAgVEInKTsKICAgICAgIH0pOwogCi0gICAg ICBpdCgicmV0dXJucyBzaXplIGluIFRCIiwgZnVuY3Rpb24gKCkgewotICAg ICAgICBleHBlY3Qoc2l6ZVByZXR0aWZ5KDI5OTk1MTE2Mjc3NzYwKSkudG9F cXVhbCgiMjcgVEIiKTsKKyAgICAgIGl0KCdyZXR1cm5zIHNpemUgaW4gVEIn LCBmdW5jdGlvbiAoKSB7CisgICAgICAgIGV4cGVjdChzaXplUHJldHRpZnko Mjk5OTUxMTYyNzc3NjApKS50b0VxdWFsKCcyNyBUQicpOwogICAgICAgfSk7 CiAgICAgfSk7CiAKLSAgICBkZXNjcmliZSgid2hlbiBzaXplID49IDEwIFBC IiwgZnVuY3Rpb24gKCkgewotICAgICAgaXQoInJldHVybnMgc2l6ZSBpbiBQ QiIsIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgZXhwZWN0KHNpemVQcmV0dGlm eSgxMTI1ODk5OTA2ODQyNjIwMCkpLnRvRXF1YWwoIjEwIFBCIik7CisgICAg ZGVzY3JpYmUoJ3doZW4gc2l6ZSA+PSAxMCBQQicsIGZ1bmN0aW9uICgpIHsK KyAgICAgIGl0KCdyZXR1cm5zIHNpemUgaW4gUEInLCBmdW5jdGlvbiAoKSB7 CisgICAgICAgIGV4cGVjdChzaXplUHJldHRpZnkoMTEyNTg5OTkwNjg0MjYy MDApKS50b0VxdWFsKCcxMCBQQicpOwogICAgICAgfSk7CiAKICAgICB9KTsK ZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvdGVzdC1t YWluLmpzIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC90ZXN0LW1haW4u anMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZlMjhhNWY4Li4w MDAwMDAwMAotLS0gYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3Rlc3Qt bWFpbi5qcworKysgL2Rldi9udWxsCkBAIC0xLDEyNSArMCwwIEBACi0vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIHBnQWRtaW4gNCAt IFBvc3RncmVTUUwgVG9vbHMKLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDIwMTMg LSAyMDE3LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCi0vLyBUaGlz IHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExp Y2VuY2UKLS8vCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi12 YXIgYWxsVGVzdEZpbGVzID0gW107Ci12YXIgVEVTVF9SRUdFWFAgPSAvKHNw ZWN8dGVzdClcLmpzJC9pOwotCi0vLyBHZXQgYSBsaXN0IG9mIGFsbCB0aGUg dGVzdCBmaWxlcyB0byBpbmNsdWRlCi1PYmplY3Qua2V5cyh3aW5kb3cuX19r YXJtYV9fLmZpbGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChmaWxlKSB7Ci0gIGlm IChURVNUX1JFR0VYUC50ZXN0KGZpbGUpKSB7Ci0gICAgLy8gTm9ybWFsaXpl IHBhdGhzIHRvIFJlcXVpcmVKUyBtb2R1bGUgbmFtZXMuCi0gICAgLy8gSWYg eW91IHJlcXVpcmUgc3ViLWRlcGVuZGVuY2llcyBvZiB0ZXN0IGZpbGVzIHRv IGJlIGxvYWRlZCBhcy1pcyAocmVxdWlyaW5nIGZpbGUgZXh0ZW5zaW9uKQot ICAgIC8vIHRoZW4gZG8gbm90IG5vcm1hbGl6ZSB0aGUgcGF0aHMKLSAgICB2 YXIgbm9ybWFsaXplZFRlc3RNb2R1bGUgPSBmaWxlLnJlcGxhY2UoL15cL2Jh c2VcL3xcLmpzJC9nLCAnJyk7Ci0gICAgYWxsVGVzdEZpbGVzLnB1c2gobm9y bWFsaXplZFRlc3RNb2R1bGUpCi0gIH0KLX0pOwotCi12YXIgc291cmNlc0Rp ciA9ICcvYmFzZS9wZ2FkbWluL3N0YXRpYy8nOwotcmVxdWlyZS5jb25maWco ewotICAvLyBLYXJtYSBzZXJ2ZXMgZmlsZXMgdW5kZXIgL2Jhc2UsIHdoaWNo IGlzIHRoZSBiYXNlUGF0aCBmcm9tIHlvdXIgY29uZmlnIGZpbGUKLSAgYmFz ZVVybDogJy9iYXNlJywKLQotICBwYXRoczogewotICAgICdhbGVydGlmeSc6 IHNvdXJjZXNEaXIgKyAndmVuZG9yL2FsZXJ0aWZ5anMvYWxlcnRpZnknLAot ICAgICdqcXVlcnknOiBzb3VyY2VzRGlyICsgJ3ZlbmRvci9qcXVlcnkvanF1 ZXJ5LTEuMTEuMicsCi0gICAgJ2pxdWVyeS51aSc6IHNvdXJjZXNEaXIgKyAn dmVuZG9yL2pxdWVyeS11aS9qcXVlcnktdWktMS4xMS4zJywKLSAgICAnanF1 ZXJ5LmV2ZW50LmRyYWcnOiBzb3VyY2VzRGlyICsgJ3ZlbmRvci9qcXVlcnkt dWkvanF1ZXJ5LmV2ZW50LmRyYWctMi4yJywKLSAgICAndW5kZXJzY29yZSc6 IHNvdXJjZXNEaXIgKyAndmVuZG9yL3VuZGVyc2NvcmUvdW5kZXJzY29yZScs Ci0gICAgJ3VuZGVyc2NvcmUuc3RyaW5nJzogc291cmNlc0RpciArICd2ZW5k b3IvdW5kZXJzY29yZS91bmRlcnNjb3JlLnN0cmluZycsCi0gICAgJ3NsaWNr Z3JpZCc6IHNvdXJjZXNEaXIgKyAndmVuZG9yL3NsaWNrZ3JpZC9zbGljay5j b3JlJywKLSAgICAnc2xpY2tncmlkL3NsaWNrLmdyaWQnOiBzb3VyY2VzRGly ICsgJ3ZlbmRvci9zbGlja2dyaWQvc2xpY2suZ3JpZCcsCi0gICAgJ3NsaWNr Z3JpZC9zbGljay5yb3dzZWxlY3Rpb25tb2RlbCc6IHNvdXJjZXNEaXIgKyAn dmVuZG9yL3NsaWNrZ3JpZC9wbHVnaW5zL3NsaWNrLnJvd3NlbGVjdGlvbm1v ZGVsJywKLSAgICAndHJhbnNsYXRpb25zJzogJy9iYXNlL3JlZ3Jlc3Npb24v amF2YXNjcmlwdC9mYWtlX3RyYW5zbGF0aW9ucycsCi0gICAgJ3NvdXJjZXMn OiBzb3VyY2VzRGlyICsgJ2pzJwotICB9LAotCi0gIHNoaW06IHsKLSAgICAn dW5kZXJzY29yZSc6IHsKLSAgICAgIGV4cG9ydHM6ICdfJwotICAgIH0sCi0g ICAgInNsaWNrZ3JpZCI6IHsKLSAgICAgICJkZXBzIjogWwotICAgICAgICAn anF1ZXJ5JywgImpxdWVyeS51aSIsICJqcXVlcnkuZXZlbnQuZHJhZyIKLSAg ICAgIF0sCi0gICAgICAiZXhwb3J0cyI6ICd3aW5kb3cuU2xpY2snCi0gICAg fSwKLSAgICAic2xpY2tncmlkL3NsaWNrLmdyaWQiOiB7Ci0gICAgICAiZGVw cyI6IFsKLSAgICAgICAgJ2pxdWVyeScsICJqcXVlcnkudWkiLCAianF1ZXJ5 LmV2ZW50LmRyYWciLCAic2xpY2tncmlkIgotICAgICAgXSwKLSAgICAgICJl eHBvcnRzIjogJ3dpbmRvdy5TbGljay5HcmlkJwotICAgIH0sCi0gICAgInNs aWNrZ3JpZC9zbGljay5yb3dzZWxlY3Rpb25tb2RlbCI6IHsKLSAgICAgICJk ZXBzIjogWwotICAgICAgICAianF1ZXJ5IgotICAgICAgXSwKLSAgICAgICJl eHBvcnRzIjogJ3dpbmRvdy5TbGljay5Sb3dTZWxlY3Rpb25Nb2RlbCcKLSAg ICB9LAotICAgICJiYWNrYm9uZSI6IHsKLSAgICAgICJkZXBzIjogWyd1bmRl cnNjb3JlJywgJ2pxdWVyeSddLAotICAgICAgImV4cG9ydHMiOiAnQmFja2Jv bmUnCi0gICAgfSwKLSAgICAiYmFja2JvbmUucGFnaW5hdG9yIjogewotICAg ICAgImRlcHMiOiBbJ3VuZGVyc2NvcmUnLCAnanF1ZXJ5JywgJ2JhY2tib25l J10KLSAgICB9LAotICAgICJib290c3RyYXAiOiB7Ci0gICAgICAiZGVwcyI6 IFsnanF1ZXJ5J10sCi0gICAgfSwKLSAgICAiYmFja2dyaWQiOiB7Ci0gICAg ICAiZGVwcyI6IFsnYmFja2Zvcm0nXSwKLSAgICAgICJleHBvcnRzIjogJ0Jh Y2tncmlkJywKLSAgICB9LAotICAgICJiYWNrZ3JpZC5zZWxlY3QuYWxsIjog ewotICAgICAgImRlcHMiOiBbJ2JhY2tncmlkJ10KLSAgICB9LAotICAgICJi YWNrZ3JpZC5wYWdpbmF0b3IiOiB7Ci0gICAgICAiZGVwcyI6IFsnYmFja2dy aWQnLCAnYmFja2JvbmUucGFnaW5hdG9yJ10KLSAgICB9LAotICAgICJiYWNr Z3JpZC5maWx0ZXIiOiB7Ci0gICAgICAiZGVwcyI6IFsnYmFja2dyaWQnXQot ICAgIH0sCi0gICAgImJhY2tncmlkLnNpemVhYmxlLmNvbHVtbnMiOiB7Ci0g ICAgICAiZGVwcyI6IFsnYmFja2dyaWQnXQotICAgIH0sCi0gICAgImJvb3Rz dHJhcC5zd2l0Y2giOiB7Ci0gICAgICAiZGVwcyI6IFsnanF1ZXJ5JywgJ2Jv b3RzdHJhcCddLAotICAgICAgImV4cG9ydHMiOiAnalF1ZXJ5LmZuLmJvb3Rz dHJhcFN3aXRjaCcKLSAgICB9LAotICAgICJzZWxlY3QyIjogewotICAgICAg ImRlcHMiOiBbJ2pxdWVyeSddLAotICAgICAgImV4cG9ydHMiOiAnalF1ZXJ5 LmZuLnNlbGVjdDInCi0gICAgfSwKLSAgICAiYm9vdHN0cmFwLmRhdGVwaWNr ZXIiOiB7Ci0gICAgICAiZGVwcyI6IFsnanF1ZXJ5JywgJ2Jvb3RzdHJhcCdd LAotICAgICAgImV4cG9ydHMiOiAnalF1ZXJ5LmZuLmRhdGVwaWNrZXInCi0g ICAgfSwKLSAgICAiYm9vdHN0cmFwLmRhdGV0aW1lcGlja2VyIjogewotICAg ICAgImRlcHMiOiBbJ2pxdWVyeScsICdib290c3RyYXAnLCAnbW9tZW50J10s Ci0gICAgICAiZXhwb3J0cyI6ICdqUXVlcnkuZm4uZGF0ZXRpbWVwaWNrZXIn Ci0gICAgfSwKLSAgICAicGdhZG1pbi5iYWNrZ3JpZCI6IHsKLSAgICAgICJk ZXBzIjogWyJiYWNrZ3JpZCIsICJib290c3RyYXAuZGF0ZXRpbWVwaWNrZXIi LCAiYm9vdHN0cmFwLnN3aXRjaCJdLAotICAgIH0sCi0gICAgInBnYWRtaW4u YmFja2Zvcm0iOiB7Ci0gICAgICAiZGVwcyI6IFsnYmFja2Zvcm0nLCAicGdh ZG1pbi5iYWNrZ3JpZCIsICJzZWxlY3QyIl0sCi0gICAgfSwKLSAgICAianF1 ZXJ5LmV2ZW50LmRyYWciOiB7Ci0gICAgICAiZGVwcyI6IFsnanF1ZXJ5J10s ICJleHBvcnRzIjogJ2pRdWVyeS5mbi5kcmFnJwotICAgIH0sCi0gICAgImpx dWVyeS51aSI6IHsiZGVwcyI6IFsnanF1ZXJ5J119Ci0gIH0sCi0KLSAgLy8g ZHluYW1pY2FsbHkgbG9hZCBhbGwgdGVzdCBmaWxlcwotICBkZXBzOiBhbGxU ZXN0RmlsZXMsCi0KLSAgLy8gd2UgaGF2ZSB0byBraWNrb2ZmIGphc21pbmUs IGFzIGl0IGlzIGFzeW5jaHJvbm91cwotICBjYWxsYmFjazogd2luZG93Ll9f a2FybWFfXy5zdGFydAotfSk7Ci0KZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNz aW9uL3JlcXVpcmVtZW50cy50eHQgYi93ZWIvcmVncmVzc2lvbi9yZXF1aXJl bWVudHMudHh0CmluZGV4IDZiYWJmOTg3Li5mZDVlZDVkOSAxMDA2NDQKLS0t IGEvd2ViL3JlZ3Jlc3Npb24vcmVxdWlyZW1lbnRzLnR4dAorKysgYi93ZWIv cmVncmVzc2lvbi9yZXF1aXJlbWVudHMudHh0CkBAIC00LDYgKzQsNyBAQCB0 ZXN0c2NlbmFyaW9zPT0wLjUuMAogdGVzdHRvb2xzPT0yLjAuMAogdHJhY2Vi YWNrMj09MS40LjAKIHVuaXR0ZXN0Mj09MS4xLjAKK21vY2t+PTIuMC4wCiAK ICMgTGVhdmUgdGhpcyBhdCB0aGUgZW5kIGJlY2F1c2UgdGhlcmUgaXMgYSBi dWcgd2hlcmUgdGhlICctLWluc3RhbGwtb3B0aW9uJyBpcyBhcHBsaWVkIHRv IGFsbCBzdWJzZXF1ZW50IHJlcXVpcmVtZW50cwogY2hyb21lZHJpdmVyX2lu c3RhbGxlcj09MC4wLjYgLS1pbnN0YWxsLW9wdGlvbj0nLS1jaHJvbWVkcml2 ZXItdmVyc2lvbj0yLjI5JwpkaWZmIC0tZ2l0IGEvd2ViL3dlYnBhY2suY29u ZmlnLmpzIGIvd2ViL3dlYnBhY2suY29uZmlnLmpzCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwLi45MTU4NjU5MgotLS0gL2Rldi9udWxs CisrKyBiL3dlYi93ZWJwYWNrLmNvbmZpZy5qcwpAQCAtMCwwICsxLDI5IEBA CisvKiBlc2xpbnQtZW52IG5vZGUgKi8KKworbW9kdWxlLmV4cG9ydHMgPSB7 CisgIGNvbnRleHQ6IF9fZGlybmFtZSArICcvcGdhZG1pbi9zdGF0aWMvanN4 JywKKyAgZW50cnk6ICcuL2NvbXBvbmVudHMuanN4JywKKyAgb3V0cHV0OiB7 CisgICAgbGlicmFyeVRhcmdldDogJ2FtZCcsCisgICAgcGF0aDogX19kaXJu YW1lICsgJy9wZ2FkbWluL3N0YXRpYy9qcy9nZW5lcmF0ZWQnLAorICAgIGZp bGVuYW1lOiAncmVhY3RDb21wb25lbnRzLmpzJywKKyAgfSwKKworICBtb2R1 bGU6IHsKKyAgICBydWxlczogW3sKKyAgICAgIHRlc3Q6IC9cLmpzeD8kLywK KyAgICAgIGV4Y2x1ZGU6IC9ub2RlX21vZHVsZXMvLAorICAgICAgdXNlOiB7 CisgICAgICAgIGxvYWRlcjogJ2JhYmVsLWxvYWRlcicsCisgICAgICAgIG9w dGlvbnM6IHsKKyAgICAgICAgICBwcmVzZXRzOiBbJ2VzMjAxNScsICdyZWFj dCddLAorICAgICAgICB9LAorICAgICAgfSwKKyAgICB9LAorICAgIF0sCisg IH0sCisKKyAgcmVzb2x2ZTogeworICAgIGV4dGVuc2lvbnM6IFsnLmpzJywg Jy5qc3gnXSwKKyAgfSwKK307ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls ZQpkaWZmIC0tZ2l0IGEvd2ViL3dlYnBhY2sudGVzdC5jb25maWcuanMgYi93 ZWIvd2VicGFjay50ZXN0LmNvbmZpZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMC4uNDliZWYwNjkKLS0tIC9kZXYvbnVsbAorKysg Yi93ZWIvd2VicGFjay50ZXN0LmNvbmZpZy5qcwpAQCAtMCwwICsxLDY1IEBA CisvKiBlc2xpbnQtZW52IG5vZGUgKi8KK2NvbnN0IHBhdGggPSByZXF1aXJl KCdwYXRoJyk7Citjb25zdCB3ZWJwYWNrID0gcmVxdWlyZSgnd2VicGFjaycp OworCitjb25zdCBzb3VyY2VzRGlyID0gcGF0aC5yZXNvbHZlKF9fZGlybmFt ZSwgJ3BnYWRtaW4vc3RhdGljJyk7Citjb25zdCByZWdyZXNzaW9uRGlyID0g cGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJ3JlZ3Jlc3Npb24nKTsKKworbW9k dWxlLmV4cG9ydHMgPSB7CisgIHBsdWdpbnM6IFsKKyAgICBuZXcgd2VicGFj ay5Qcm92aWRlUGx1Z2luKHsKKyAgICAgIGpRdWVyeTogJ2pxdWVyeScsCisg ICAgICBfOiAndW5kZXJzY29yZScsCisgICAgfSksCisgIF0sCisKKyAgbW9k dWxlOiB7CisgICAgcnVsZXM6IFsKKyAgICAgIHsKKyAgICAgICAgdGVzdDog L1wuanN4PyQvLAorICAgICAgICBleGNsdWRlOiBbL25vZGVfbW9kdWxlcy8s IC92ZW5kb3IvXSwKKyAgICAgICAgdXNlOiB7CisgICAgICAgICAgbG9hZGVy OiAnYmFiZWwtbG9hZGVyJywKKyAgICAgICAgICBvcHRpb25zOiB7CisgICAg ICAgICAgICBwcmVzZXRzOiBbJ2VzMjAxNSddLAorICAgICAgICAgIH0sCisg ICAgICAgIH0sCisgICAgICB9LAorICAgICAgeworICAgICAgICB0ZXN0OiAv LipzbGlja2dyaWRcL3NsaWNrXC4oPyFjb3JlKSovLAorICAgICAgICBsb2Fk ZXI6ICdpbXBvcnRzLWxvYWRlcj8nICsKKyAgICAgICAgJ2pxdWVyeS51aScg KworICAgICAgICAnLGpxdWVyeS5ldmVudC5kcmFnJyArCisgICAgICAgICcs c2xpY2tncmlkJywKKyAgICAgIH0sIHsKKyAgICAgICAgdGVzdDogLy4qc2xp Y2tncmlkXC9wbHVnaW5zXC9zbGlja1wucm93c2VsZWN0aW9ubW9kZWwvLAor ICAgICAgICBsb2FkZXI6ICdpbXBvcnRzLWxvYWRlcj8nICsKKyAgICAgICAg J2pxdWVyeS51aScgKworICAgICAgICAnLGpxdWVyeS5ldmVudC5kcmFnJyAr CisgICAgICAgICcsc2xpY2tncmlkJyArCisgICAgICAgICchZXhwb3J0cy1s b2FkZXI/JyArCisgICAgICAgICdTbGljay5Sb3dTZWxlY3Rpb25Nb2RlbCcs CisgICAgICB9LCB7CisgICAgICAgIHRlc3Q6IC8uKnNsaWNrZ3JpZFwvc2xp Y2tcLmNvcmUuKi8sCisgICAgICAgIGxvYWRlcjogJ2ltcG9ydHMtbG9hZGVy PycgKworICAgICAgICAnanF1ZXJ5LnVpJyArCisgICAgICAgICcsanF1ZXJ5 LmV2ZW50LmRyYWcnICsKKyAgICAgICAgJyFleHBvcnRzLWxvYWRlcj8nICsK KyAgICAgICAgJ1NsaWNrJywKKyAgICAgIH1dLAorICB9LAorCisgIHJlc29s dmU6IHsKKyAgICBhbGlhczogeworICAgICAgJ2FsZXJ0aWZ5Jzogc291cmNl c0RpciArICcvdmVuZG9yL2FsZXJ0aWZ5anMvYWxlcnRpZnknLAorICAgICAg J2pxdWVyeSc6IHNvdXJjZXNEaXIgKyAnL3ZlbmRvci9qcXVlcnkvanF1ZXJ5 LTEuMTEuMicsCisgICAgICAnanF1ZXJ5LnVpJzogc291cmNlc0RpciArICcv dmVuZG9yL2pxdWVyeS11aS9qcXVlcnktdWktMS4xMS4zJywKKyAgICAgICdq cXVlcnkuZXZlbnQuZHJhZyc6IHNvdXJjZXNEaXIgKyAnL3ZlbmRvci9qcXVl cnktdWkvanF1ZXJ5LmV2ZW50LmRyYWctMi4yJywKKyAgICAgICdzb3VyY2Vz Jzogc291cmNlc0RpciArICcvanMnLAorICAgICAgJ3RyYW5zbGF0aW9ucyc6 IHJlZ3Jlc3Npb25EaXIgKyAnL2phdmFzY3JpcHQvZmFrZV90cmFuc2xhdGlv bnMnLAorICAgICAgJ3NsaWNrZ3JpZCc6IHNvdXJjZXNEaXIgKyAnL3ZlbmRv ci9zbGlja2dyaWQvc2xpY2suY29yZScsCisgICAgICAnc2xpY2tncmlkLmdy aWQnOiBzb3VyY2VzRGlyICsgJy92ZW5kb3Ivc2xpY2tncmlkL3NsaWNrLmdy aWQnLAorICAgICAgJ3NsaWNrZ3JpZC5yb3dzZWxlY3Rpb25tb2RlbCc6IHNv dXJjZXNEaXIgKyAnL3ZlbmRvci9zbGlja2dyaWQvcGx1Z2lucy9zbGljay5y b3dzZWxlY3Rpb25tb2RlbCcsCisgICAgfSwKKyAgfSwKK307ClwgTm8gbmV3 bGluZSBhdCBlbmQgb2YgZmlsZQo= --001a1143581409af00055045d62d Content-Type: text/plain; charset="UTF-8"; name="0002-Creates-query-history-list.diff" Content-Disposition: attachment; filename="0002-Creates-query-history-list.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_j332xcbg1 ZGlmZiAtLWdpdCBhL3dlYi8uZXNsaW50cmMuanMgYi93ZWIvLmVzbGludHJj LmpzCmluZGV4IGM2MDU2OWRiLi45ODQ4NmRjZCAxMDA2NDQKLS0tIGEvd2Vi Ly5lc2xpbnRyYy5qcworKysgYi93ZWIvLmVzbGludHJjLmpzCkBAIC01LDcg KzUsMTAgQEAgbW9kdWxlLmV4cG9ydHMgPSB7CiAgICAgJ2FtZCc6IHRydWUs CiAgICAgJ2phc21pbmUnOiB0cnVlLAogICB9LAotICAnZXh0ZW5kcyc6ICdl c2xpbnQ6cmVjb21tZW5kZWQnLAorICAnZXh0ZW5kcyc6IFsKKyAgICAnZXNs aW50OnJlY29tbWVuZGVkJywKKyAgICAicGx1Z2luOnJlYWN0L3JlY29tbWVu ZGVkIiwKKyAgXSwKICAgJ3BhcnNlck9wdGlvbnMnOiB7CiAgICAgJ2VjbWFG ZWF0dXJlcyc6IHsKICAgICAgICdleHBlcmltZW50YWxPYmplY3RSZXN0U3By ZWFkJzogdHJ1ZSwKQEAgLTQwLDYgKzQzLDYgQEAgbW9kdWxlLmV4cG9ydHMg PSB7CiAgICAgJ2NvbW1hLWRhbmdsZSc6IFsKICAgICAgICdlcnJvcicsCiAg ICAgICAnYWx3YXlzLW11bHRpbGluZScKLSAgICBdCisgICAgXSwKICAgfQog fTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93 ZWIvR3J1bnRmaWxlLmpzIGIvd2ViL0dydW50ZmlsZS5qcwppbmRleCA3OWI4 Mjc2ZC4uM2Y1NzYyZTMgMTAwNjQ0Ci0tLSBhL3dlYi9HcnVudGZpbGUuanMK KysrIGIvd2ViL0dydW50ZmlsZS5qcwpAQCAtMSw5ICsxLDkgQEAKIGNvbnN0 IHdlYnBhY2tDb25maWcgPSByZXF1aXJlKCcuL3dlYnBhY2suY29uZmlnLmpz Jyk7CiAKIHZhciBzcmNGaWxlcyA9IFsKLSAgJ3BnYWRtaW4vc3RhdGljL2pz eC8qLmpzeCcsCisgICdwZ2FkbWluL3N0YXRpYy9qc3gvKiovKi5qc3gnLAog ICAncGdhZG1pbi9zdGF0aWMvanMvc2VsZWN0aW9uLyouanMnLAotICAncmVn cmVzc2lvbi9qYXZhc2NyaXB0LyoqLmpzJywKKyAgJ3JlZ3Jlc3Npb24vamF2 YXNjcmlwdC8qKi8qLmpzeCcsCiAgICdyZWdyZXNzaW9uL2phdmFzY3JpcHQv KiovKi5qcycsCiAgICcqLmpzJywKIF07CmRpZmYgLS1naXQgYS93ZWIva2Fy bWEuY29uZi5qcyBiL3dlYi9rYXJtYS5jb25mLmpzCmluZGV4IDdmYTUxYjUw Li4wMWViNDIyNCAxMDA2NDQKLS0tIGEvd2ViL2thcm1hLmNvbmYuanMKKysr IGIvd2ViL2thcm1hLmNvbmYuanMKQEAgLTE2LDcgKzE2LDcgQEAgbW9kdWxl LmV4cG9ydHMgPSBmdW5jdGlvbiAoY29uZmlnKSB7CiAgICAgXSwKICAgICBw cmVwcm9jZXNzb3JzOiB7CiAgICAgICAncmVncmVzc2lvbi9qYXZhc2NyaXB0 LyoqLyouanMnOiBbJ3dlYnBhY2snXSwKLSAgICAgIC8vICdyZWdyZXNzaW9u L2phdmFzY3JpcHQvKiovKi5qc3gnOiBbJ3dlYnBhY2snXSwKKyAgICAgICdy ZWdyZXNzaW9uL2phdmFzY3JpcHQvKiovKi5qc3gnOiBbJ3dlYnBhY2snXSwK ICAgICB9LAogICAgIHdlYnBhY2s6IHdlYnBhY2tDb25maWcsCiAgICAgd2Vi cGFja01pZGRsZXdhcmU6IHsKZGlmZiAtLWdpdCBhL3dlYi9wYWNrYWdlLmpz b24gYi93ZWIvcGFja2FnZS5qc29uCmluZGV4IDc2MGUxZTBjLi5hNzc1MDU3 ZCAxMDA2NDQKLS0tIGEvd2ViL3BhY2thZ2UuanNvbgorKysgYi93ZWIvcGFj a2FnZS5qc29uCkBAIC01LDYgKzUsNyBAQAogICAgICJiYWJlbC1wcmVzZXQt ZXMyMDE1IjogIn42LjI0LjAiLAogICAgICJiYWJlbC1wcmVzZXQtcmVhY3Qi OiAifjYuMjMuMCIsCiAgICAgImVuenltZSI6ICJ+Mi44LjIiLAorICAgICJl bnp5bWUtbWF0Y2hlcnMiOiAiXjMuMS4wIiwKICAgICAiZXNsaW50IjogIl4z LjE5LjAiLAogICAgICJlc2xpbnQtcGx1Z2luLXJlYWN0IjogIl42LjEwLjMi LAogICAgICJncnVudCI6ICJ+MS4wLjEiLApAQCAtMTQsNiArMTUsNyBAQAog ICAgICJncnVudC1rYXJtYSI6ICJeMi4wLjAiLAogICAgICJncnVudC13ZWJw YWNrIjogIn4yLjAuMSIsCiAgICAgImphc21pbmUtY29yZSI6ICJ+Mi41LjIi LAorICAgICJqYXNtaW5lLWVuenltZSI6ICJeMy4xLjAiLAogICAgICJrYXJt YSI6ICJ+MS41LjAiLAogICAgICJrYXJtYS1iYWJlbC1wcmVwcm9jZXNzb3Ii OiAiXjYuMC4xIiwKICAgICAia2FybWEtYnJvd3NlcmlmeSI6ICJ+NS4xLjEi LApAQCAtMzQsNyArMzYsOSBAQAogICAgICJiYWJlbGlmeSI6ICJ+Ny4zLjAi LAogICAgICJicm93c2VyaWZ5IjogIn4xNC4xLjAiLAogICAgICJleHBvcnRz LWxvYWRlciI6ICJ+MC42LjQiLAorICAgICJpbW11dGFiaWxpdHktaGVscGVy IjogIl4yLjIuMCIsCiAgICAgImltcG9ydHMtbG9hZGVyIjogImdpdCtodHRw czovL2dpdGh1Yi5jb20vd2VicGFjay1jb250cmliL2ltcG9ydHMtbG9hZGVy LmdpdCM0NGQ2ZjQ4NDYzYjI1NmExN2MxYmE2ZmQ5YjVjYzE0NDliNGUzNzlk IiwKKyAgICAibW9tZW50IjogIl4yLjE4LjEiLAogICAgICJyZWFjdCI6ICJ+ MTUuNC4yIiwKICAgICAicmVhY3QtZG9tIjogIn4xNS40LjIiLAogICAgICJy ZXF1aXJlanMiOiAifjIuMy4zIiwKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L2ZlYXR1cmVfdGVzdHMvcXVlcnlfdG9vbF9qb3VybmV5X3Rlc3QucHkgYi93 ZWIvcGdhZG1pbi9mZWF0dXJlX3Rlc3RzL3F1ZXJ5X3Rvb2xfam91cm5leV90 ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi41 MzBlZDhiMgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2ZlYXR1 cmVfdGVzdHMvcXVlcnlfdG9vbF9qb3VybmV5X3Rlc3QucHkKQEAgLTAsMCAr MSwxMTIgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisj IHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0 IChDKSAyMDEzIC0gMjAxNywgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVh bQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0 Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCisKK2ltcG9ydCBweXBlcmNsaXAKK2ltcG9ydCB0aW1lCisKK2Zyb20g c2VsZW5pdW0ud2ViZHJpdmVyIGltcG9ydCBBY3Rpb25DaGFpbnMKKworZnJv bSByZWdyZXNzaW9uLnB5dGhvbl90ZXN0X3V0aWxzIGltcG9ydCB0ZXN0X3V0 aWxzCitmcm9tIHJlZ3Jlc3Npb24uZmVhdHVyZV91dGlscy5iYXNlX2ZlYXR1 cmVfdGVzdCBpbXBvcnQgQmFzZUZlYXR1cmVUZXN0CisKKworY2xhc3MgUXVl cnlUb29sSm91cm5leVRlc3QoQmFzZUZlYXR1cmVUZXN0KToKKyAgICAiIiIK KyAgICBUZXN0cyB0aGUgcGF0aCB0aHJvdWdoIHRoZSBxdWVyeSB0b29sCisg ICAgIiIiCisKKyAgICBzY2VuYXJpb3MgPSBbCisgICAgICAgICgiVGVzdHMg dGhlIHBhdGggdGhyb3VnaCB0aGUgcXVlcnkgdG9vbCIsIGRpY3QoKSkKKyAg ICBdCisKKyAgICBkZWYgYmVmb3JlKHNlbGYpOgorICAgICAgICBjb25uZWN0 aW9uID0gdGVzdF91dGlscy5nZXRfZGJfY29ubmVjdGlvbihzZWxmLnNlcnZl clsnZGInXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ3VzZXJuYW1lJ10sCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNlbGYuc2VydmVyWydkYl9wYXNzd29yZCddLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZl clsnaG9zdCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlclsncG9ydCddKQorICAgICAg ICB0ZXN0X3V0aWxzLmRyb3BfZGF0YWJhc2UoY29ubmVjdGlvbiwgImFjY2Vw dGFuY2VfdGVzdF9kYiIpCisgICAgICAgIHRlc3RfdXRpbHMuY3JlYXRlX2Rh dGFiYXNlKHNlbGYuc2VydmVyLCAiYWNjZXB0YW5jZV90ZXN0X2RiIikKKyAg ICAgICAgdGVzdF91dGlscy5jcmVhdGVfdGFibGUoc2VsZi5zZXJ2ZXIsICJh Y2NlcHRhbmNlX3Rlc3RfZGIiLCAidGVzdF90YWJsZSIpCisgICAgICAgIHNl bGYucGFnZS5hZGRfc2VydmVyKHNlbGYuc2VydmVyKQorCisgICAgZGVmIHJ1 blRlc3Qoc2VsZik6CisgICAgICAgIHNlbGYuX25hdmlnYXRlX3RvX3F1ZXJ5 X3Rvb2woKQorICAgICAgICBzZWxmLl9leGVjdXRlX3F1ZXJ5KCJTRUxFQ1Qg KiBGUk9NIHRlc3RfdGFibGUgT1JERVIgQlkgdmFsdWUiKQorCisgICAgICAg IHNlbGYuX3Rlc3RfY29waWVzX3Jvd3MoKQorICAgICAgICBzZWxmLl90ZXN0 X2NvcGllc19jb2x1bW5zKCkKKyAgICAgICAgc2VsZi5fdGVzdF9oaXN0b3J5 X3RhYigpCisKKyAgICBkZWYgX3Rlc3RfY29waWVzX3Jvd3Moc2VsZik6Cisg ICAgICAgIHB5cGVyY2xpcC5jb3B5KCJvbGQgY2xpcGJvYXJkIGNvbnRlbnRz IikKKyAgICAgICAgdGltZS5zbGVlcCg1KQorICAgICAgICBzZWxmLnBhZ2Uu ZHJpdmVyLnN3aXRjaF90by5kZWZhdWx0X2NvbnRlbnQoKQorICAgICAgICBz ZWxmLnBhZ2UuZHJpdmVyLnN3aXRjaF90b19mcmFtZShzZWxmLnBhZ2UuZHJp dmVyLmZpbmRfZWxlbWVudF9ieV90YWdfbmFtZSgiaWZyYW1lIikpCisgICAg ICAgIHNlbGYucGFnZS5maW5kX2J5X3hwYXRoKCIvLypbY29udGFpbnMoQGNs YXNzLCAnc3InKV0vKlsxXS9pbnB1dFtAdHlwZT0nY2hlY2tib3gnXSIpLmNs aWNrKCkKKyAgICAgICAgc2VsZi5wYWdlLmZpbmRfYnlfeHBhdGgoIi8vKltA aWQ9J2J0bi1jb3B5LXJvdyddIikuY2xpY2soKQorCisgICAgICAgIHNlbGYu YXNzZXJ0RXF1YWwoIidTb21lLU5hbWUnLCc2JyIsCisgICAgICAgICAgICAg ICAgICAgICAgICAgcHlwZXJjbGlwLnBhc3RlKCkpCisKKyAgICBkZWYgX3Rl c3RfY29waWVzX2NvbHVtbnMoc2VsZik6CisgICAgICAgIHB5cGVyY2xpcC5j b3B5KCJvbGQgY2xpcGJvYXJkIGNvbnRlbnRzIikKKworICAgICAgICBzZWxm LnBhZ2UuZHJpdmVyLnN3aXRjaF90by5kZWZhdWx0X2NvbnRlbnQoKQorICAg ICAgICBzZWxmLnBhZ2UuZHJpdmVyLnN3aXRjaF90b19mcmFtZShzZWxmLnBh Z2UuZHJpdmVyLmZpbmRfZWxlbWVudF9ieV90YWdfbmFtZSgiaWZyYW1lIikp CisgICAgICAgIHNlbGYucGFnZS5maW5kX2J5X3hwYXRoKCIvLypbQGRhdGEt dGVzdD0nb3V0cHV0LWNvbHVtbi1oZWFkZXInIGFuZCBjb250YWlucyguLCAn c29tZV9jb2x1bW4nKV0vaW5wdXQiKS5jbGljaygpCisgICAgICAgIHNlbGYu cGFnZS5maW5kX2J5X3hwYXRoKCIvLypbQGlkPSdidG4tY29weS1yb3cnXSIp LmNsaWNrKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAg ICAgICAgIiIiJ1NvbWUtTmFtZScKKydTb21lLU90aGVyLU5hbWUnIiIiLAor ICAgICAgICAgICAgcHlwZXJjbGlwLnBhc3RlKCkpCisKKyAgICBkZWYgX3Rl c3RfaGlzdG9yeV90YWIoc2VsZik6CisgICAgICAgIHNlbGYuX19jbGVhcl9x dWVyeV90b29sKCkKKworICAgICAgICBlZGl0b3JfaW5wdXQgPSBzZWxmLnBh Z2UuZmluZF9ieV9pZCgib3V0cHV0LXBhbmVsIikKKyAgICAgICAgc2VsZi5w YWdlLmNsaWNrX2VsZW1lbnQoZWRpdG9yX2lucHV0KQorICAgICAgICBzZWxm Ll9leGVjdXRlX3F1ZXJ5KCJTRUxFQ1QgKiBGUk9NIHNob2VzIikKKworICAg ICAgICBzZWxmLnBhZ2UuY2xpY2tfdGFiKCJIaXN0b3J5IikKKyAgICAgICAg aGlzdG9yeV9lbGVtZW50ID0gc2VsZi5wYWdlLmZpbmRfYnlfaWQoImhpc3Rv cnlfZ3JpZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oIlNFTEVDVCAqIEZS T00gdGVzdF90YWJsZSIsIGhpc3RvcnlfZWxlbWVudC50ZXh0KQorICAgICAg ICBzZWxmLmFzc2VydEluKCJTRUxFQ1QgKiBGUk9NIHNob2VzIiwgaGlzdG9y eV9lbGVtZW50LnRleHQpCisKKyAgICBkZWYgX19jbGVhcl9xdWVyeV90b29s KHNlbGYpOgorICAgICAgICBzZWxmLnBhZ2UuY2xpY2tfZWxlbWVudChzZWxm LnBhZ2UuZmluZF9ieV94cGF0aCgiLy8qW0BpZD0nYnRuLWVkaXQnXSIpKQor ICAgICAgICBzZWxmLnBhZ2UuY2xpY2tfbW9kYWwoJ1llcycpCisKKyAgICBk ZWYgX25hdmlnYXRlX3RvX3F1ZXJ5X3Rvb2woc2VsZik6CisgICAgICAgIHNl bGYucGFnZS50b2dnbGVfb3Blbl90cmVlX2l0ZW0oc2VsZi5zZXJ2ZXJbJ25h bWUnXSkKKyAgICAgICAgc2VsZi5wYWdlLnRvZ2dsZV9vcGVuX3RyZWVfaXRl bSgnRGF0YWJhc2VzJykKKyAgICAgICAgc2VsZi5wYWdlLnRvZ2dsZV9vcGVu X3RyZWVfaXRlbSgnYWNjZXB0YW5jZV90ZXN0X2RiJykKKyAgICAgICAgdGlt ZS5zbGVlcCg1KQorICAgICAgICBzZWxmLnBhZ2UuZmluZF9ieV9wYXJ0aWFs X2xpbmtfdGV4dCgiVG9vbHMiKS5jbGljaygpCisgICAgICAgIHNlbGYucGFn ZS5maW5kX2J5X3BhcnRpYWxfbGlua190ZXh0KCJRdWVyeSBUb29sIikuY2xp Y2soKQorICAgICAgICBzZWxmLnBhZ2UuY2xpY2tfdGFiKCdRdWVyeS0xJykK KyAgICAgICAgdGltZS5zbGVlcCg1KQorCisgICAgZGVmIF9leGVjdXRlX3F1 ZXJ5KHNlbGYsIHF1ZXJ5KToKKyAgICAgICAgQWN0aW9uQ2hhaW5zKHNlbGYu cGFnZS5kcml2ZXIpLnNlbmRfa2V5cyhxdWVyeSkucGVyZm9ybSgpCisgICAg ICAgIHNlbGYucGFnZS5kcml2ZXIuc3dpdGNoX3RvLmRlZmF1bHRfY29udGVu dCgpCisgICAgICAgIHNlbGYucGFnZS5kcml2ZXIuc3dpdGNoX3RvX2ZyYW1l KHNlbGYucGFnZS5kcml2ZXIuZmluZF9lbGVtZW50X2J5X3RhZ19uYW1lKCJp ZnJhbWUiKSkKKyAgICAgICAgc2VsZi5wYWdlLmZpbmRfYnlfaWQoImJ0bi1m bGFzaCIpLmNsaWNrKCkKKworICAgIGRlZiBhZnRlcihzZWxmKToKKyAgICAg ICAgc2VsZi5wYWdlLmNsb3NlX3F1ZXJ5X3Rvb2woKQorICAgICAgICBzZWxm LnBhZ2UucmVtb3ZlX3NlcnZlcihzZWxmLnNlcnZlcikKKworICAgICAgICBj b25uZWN0aW9uID0gdGVzdF91dGlscy5nZXRfZGJfY29ubmVjdGlvbihzZWxm LnNlcnZlclsnZGInXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ3VzZXJuYW1lJ10s CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNlbGYuc2VydmVyWydkYl9wYXNzd29yZCddLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm LnNlcnZlclsnaG9zdCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlclsncG9ydCddKQor ICAgICAgICB0ZXN0X3V0aWxzLmRyb3BfZGF0YWJhc2UoY29ubmVjdGlvbiwg ImFjY2VwdGFuY2VfdGVzdF9kYiIpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi9mZWF0dXJlX3Rlc3RzL3hzc19jaGVja3NfcGdhZG1pbl9kZWJ1Z2dlcl90 ZXN0LnB5IGIvd2ViL3BnYWRtaW4vZmVhdHVyZV90ZXN0cy94c3NfY2hlY2tz X3BnYWRtaW5fZGVidWdnZXJfdGVzdC5weQppbmRleCAxN2JjN2JmNS4uYWUz YWY4MjAgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2ZlYXR1cmVfdGVzdHMv eHNzX2NoZWNrc19wZ2FkbWluX2RlYnVnZ2VyX3Rlc3QucHkKKysrIGIvd2Vi L3BnYWRtaW4vZmVhdHVyZV90ZXN0cy94c3NfY2hlY2tzX3BnYWRtaW5fZGVi dWdnZXJfdGVzdC5weQpAQCAtODMsNyArODMsNyBAQCBjbGFzcyBDaGVja0Rl YnVnZ2VyRm9yWHNzRmVhdHVyZVRlc3QoQmFzZUZlYXR1cmVUZXN0KToKIAog ICAgICAgICAjIElmIGRlYnVnZ2VyIHBsdWdpbiBpcyBub3QgZm91bmQKICAg ICAgICAgaWYgaXNfZXJyb3IgYW5kIGlzX2Vycm9yID09ICJEZWJ1Z2dlciBF cnJvciI6Ci0gICAgICAgICAgICBzZWxmLnBhZ2UuY2xpY2tfbW9kYWxfb2so KQorICAgICAgICAgICAgc2VsZi5wYWdlLmNsaWNrX21vZGFsKCdPSycpCiAg ICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJQbGVhc2UgbWFrZSBzdXJlIHRo YXQgZGVidWdnZXIgcGx1Z2luIGlzIHByb3Blcmx5IGNvbmZpZ3VyZWQiKQog ICAgICAgICBlbHNlOgogICAgICAgICAgICAgdGltZS5zbGVlcCgyKQpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2hpc3RvcnkvaGlzdG9y eV9jb2xsZWN0aW9uLmpzIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2hpc3Rv cnkvaGlzdG9yeV9jb2xsZWN0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwLi5mN2I2YWNkNwotLS0gL2Rldi9udWxsCisrKyBi L3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9oaXN0b3J5L2hpc3RvcnlfY29sbGVj dGlvbi5qcwpAQCAtMCwwICsxLDM0IEBACisvLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisv LworLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworLy8KKy8vIENv cHlyaWdodCAoQykgMjAxMyAtIDIwMTcsIFRoZSBwZ0FkbWluIERldmVsb3Bt ZW50IFRlYW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIg dGhlIFBvc3RncmVTUUwgTGljZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v CisKK2V4cG9ydCBkZWZhdWx0IGNsYXNzIEhpc3RvcnlDb2xsZWN0aW9uIHsK KworICBjb25zdHJ1Y3RvcihoaXN0b3J5X21vZGVsKSB7CisgICAgdGhpcy5o aXN0b3J5TGlzdCA9IGhpc3RvcnlfbW9kZWw7CisgICAgdGhpcy5vbkNoYW5n ZSgoKSA9PiB7fSk7CisgIH0KKworICBsZW5ndGgoKSB7CisgICAgcmV0dXJu IHRoaXMuaGlzdG9yeUxpc3QubGVuZ3RoOworICB9CisKKyAgYWRkKG9iamVj dCkgeworICAgIHRoaXMuaGlzdG9yeUxpc3QucHVzaChvYmplY3QpOworICAg IHRoaXMub25DaGFuZ2VIYW5kbGVyKHRoaXMuaGlzdG9yeUxpc3QpOworICB9 CisKKyAgcmVzZXQoKSB7CisgICAgdGhpcy5oaXN0b3J5TGlzdCA9IFtdOwor ICAgIHRoaXMub25DaGFuZ2VIYW5kbGVyKHRoaXMuaGlzdG9yeUxpc3QpOwor ICB9CisKKyAgb25DaGFuZ2Uob25DaGFuZ2VIYW5kbGVyKSB7CisgICAgdGhp cy5vbkNoYW5nZUhhbmRsZXIgPSBvbkNoYW5nZUhhbmRsZXI7CisgIH0KK30K XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9zdGF0aWMvanMvaGlzdG9yeS9pbmRleC5qcyBiL3dlYi9wZ2Fk bWluL3N0YXRpYy9qcy9oaXN0b3J5L2luZGV4LmpzCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwLi44MzQ4NzhhOAotLS0gL2Rldi9udWxs CisrKyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9oaXN0b3J5L2luZGV4Lmpz CkBAIC0wLDAgKzEsMTQgQEAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBw Z0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisvLworLy8gQ29weXJpZ2h0 IChDKSAyMDEzIC0gMjAxNywgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVh bQorLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9z dGdyZVNRTCBMaWNlbmNlCisvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworaW1w b3J0IGhpc3RvcnlDb2xsZWN0aW9uIGZyb20gJy4vaGlzdG9yeV9jb2xsZWN0 aW9uJzsKKworZXhwb3J0IHsKKyAgaGlzdG9yeUNvbGxlY3Rpb24sCit9Owpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzeC9jb21wb25lbnRz LmpzeCBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qc3gvY29tcG9uZW50cy5qc3gK aW5kZXggNWJjYjUyMDguLjZmZjM0ZTRjIDEwMDY0NAotLS0gYS93ZWIvcGdh ZG1pbi9zdGF0aWMvanN4L2NvbXBvbmVudHMuanN4CisrKyBiL3dlYi9wZ2Fk bWluL3N0YXRpYy9qc3gvY29tcG9uZW50cy5qc3gKQEAgLTEsOCArMSwxMCBA QAogCiBpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnOwogaW1wb3J0IHtyZW5k ZXJ9IGZyb20gJ3JlYWN0LWRvbSc7CitpbXBvcnQgUXVlcnlIaXN0b3J5IGZy b20gJy4vaGlzdG9yeS9xdWVyeV9oaXN0b3J5JzsKIAogZXhwb3J0IHsKICAg cmVuZGVyLAogICBSZWFjdCwKKyAgUXVlcnlIaXN0b3J5LAogfTsKXCBObyBu ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi9zdGF0aWMvanN4L2hpc3RvcnkvcXVlcnlfaGlzdG9yeS5qc3ggYi93ZWIv cGdhZG1pbi9zdGF0aWMvanN4L2hpc3RvcnkvcXVlcnlfaGlzdG9yeS5qc3gK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLmQzNmY1Y2U5 Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzeC9o aXN0b3J5L3F1ZXJ5X2hpc3RvcnkuanN4CkBAIC0wLDAgKzEsNDkgQEAKKy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8KKy8vCisvLyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FM IFRvb2xzCisvLworLy8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxNywgVGhl IHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorLy8gVGhpcyBzb2Z0d2FyZSBp cyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisvLwor Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8KKworaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0 JzsKK2ltcG9ydCBRdWVyeUhpc3RvcnlFbnRyeSBmcm9tICcuL3F1ZXJ5X2hp c3RvcnlfZW50cnknOworCitjb25zdCBsaVN0eWxlID0geworICBib3JkZXJC b3R0b206ICcxcHggc29saWQgI2NjY2NjYycsCit9OworCitleHBvcnQgZGVm YXVsdCBjbGFzcyBRdWVyeUhpc3RvcnkgZXh0ZW5kcyBSZWFjdC5Db21wb25l bnQgeworCisgIGNvbnN0cnVjdG9yKHByb3BzKSB7CisgICAgc3VwZXIocHJv cHMpOworCisgICAgdGhpcy5zdGF0ZSA9IHsKKyAgICAgIGhpc3Rvcnk6IFtd LAorICAgIH07CisgIH0KKworICBjb21wb25lbnRXaWxsTW91bnQoKSB7Cisg ICAgdGhpcy5zZXRTdGF0ZSh7aGlzdG9yeTogdGhpcy5wcm9wcy5oaXN0b3J5 Q29sbGVjdGlvbi5oaXN0b3J5TGlzdH0pOworICAgIHRoaXMucHJvcHMuaGlz dG9yeUNvbGxlY3Rpb24ub25DaGFuZ2UoKGhpc3RvcnlMaXN0KSA9PiB0aGlz LnNldFN0YXRlKHtoaXN0b3J5OiBoaXN0b3J5TGlzdH0pKTsKKyAgfQorCisg IHJlbmRlcigpIHsKKyAgICByZXR1cm4gPHVsPgorICAgICAge18uY2hhaW4o dGhpcy5zdGF0ZS5oaXN0b3J5KQorICAgICAgICAuc29ydEJ5KGhpc3RvcnlF bnRyeSA9PiBoaXN0b3J5RW50cnkuc3RhcnRfdGltZSkKKyAgICAgICAgLnJl dmVyc2UoKQorICAgICAgICAubWFwKChlbnRyeSwgaW5kZXgpID0+CisgICAg ICAgIDxsaSBrZXk9e2luZGV4fSBzdHlsZT17bGlTdHlsZX0+CisgICAgICAg ICAgPFF1ZXJ5SGlzdG9yeUVudHJ5IGhpc3RvcnlFbnRyeT17ZW50cnl9Lz4K KyAgICAgICAgPC9saT4pCisgICAgICAgIC52YWx1ZSgpCisgICAgICB9Cisg ICAgPC91bD47CisgIH0KK30KKworUXVlcnlIaXN0b3J5LnByb3BUeXBlcyA9 IHsKKyAgaGlzdG9yeUNvbGxlY3Rpb246IFJlYWN0LlByb3BUeXBlcy5vYmpl Y3QuaXNSZXF1aXJlZCwKK307ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls ZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzeC9oaXN0b3J5 L3F1ZXJ5X2hpc3RvcnlfZW50cnkuanN4IGIvd2ViL3BnYWRtaW4vc3RhdGlj L2pzeC9oaXN0b3J5L3F1ZXJ5X2hpc3RvcnlfZW50cnkuanN4Cm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi5kNjZjYjNhNwotLS0gL2Rl di9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qc3gvaGlzdG9yeS9x dWVyeV9oaXN0b3J5X2VudHJ5LmpzeApAQCAtMCwwICsxLDkzIEBACisvLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBU b29scworLy8KKy8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTcsIFRoZSBw Z0FkbWluIERldmVsb3BtZW50IFRlYW0KKy8vIFRoaXMgc29mdHdhcmUgaXMg cmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorLy8KKy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vCisKK2ltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7 CitpbXBvcnQgdXBkYXRlIGZyb20gJ2ltbXV0YWJpbGl0eS1oZWxwZXInOwor aW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnOworCitjb25zdCBvdXRlckRp dlN0eWxlID0geworICBwYWRkaW5nTGVmdDogJzEwcHgnLAorICBmb250RmFt aWx5OiAnbW9ub3NwYWNlJywKKyAgcGFkZGluZ1JpZ2h0OiAnMjBweCcsCisg IGZvbnRTaXplOiAnMTRweCcsCisgIGJhY2tncm91bmRDb2xvcjogJyNGRkYn LAorfTsKK2NvbnN0IHNxbFN0eWxlID0geworICB0ZXh0T3ZlcmZsb3c6ICdl bGxpcHNpcycsCisgIG92ZXJmbG93OiAnaGlkZGVuJywKKyAgd2hpdGVTcGFj ZTogJ25vd3JhcCcsCisgIHVzZXJTZWxlY3Q6ICdhdXRvJywKK307Citjb25z dCBzZWNvbmRMaW5lU3R5bGUgPSB7CisgIGRpc3BsYXk6ICdmbGV4JywKKyAg ZmxleERpcmVjdGlvbjogJ3JvdycsCisgIGp1c3RpZnlDb250ZW50OiAnc3Bh Y2UtYmV0d2VlbicsCisgIGZvbnRTaXplOiAnMTNweCcsCisgIGNvbG9yOiAn Izg4ODg4OCcsCit9OworY29uc3QgdGltZXN0YW1wU3R5bGUgPSB7CisgIGFs aWduU2VsZjogJ2ZsZXgtc3RhcnQnLAorfTsKK2NvbnN0IHJvd3NBZmZlY3Rl ZFN0eWxlID0geworICBhbGlnblNlbGY6ICdmbGV4LWVuZCcsCit9OworY29u c3QgZXJyb3JNZXNzYWdlU3R5bGUgPSB7CisgIHRleHRPdmVyZmxvdzogJ2Vs bGlwc2lzJywKKyAgb3ZlcmZsb3c6ICdoaWRkZW4nLAorICB3aGl0ZVNwYWNl OiAnbm93cmFwJywKKyAgdXNlclNlbGVjdDogJ2F1dG8nLAorICBmb250U2l6 ZTogJzEzcHgnLAorICBjb2xvcjogJyM4ODg4ODgnLAorfTsKKworZXhwb3J0 IGRlZmF1bHQgY2xhc3MgUXVlcnlIaXN0b3J5RW50cnkgZXh0ZW5kcyBSZWFj dC5Db21wb25lbnQgeworICBmb3JtYXREYXRlKGRhdGUpIHsKKyAgICByZXR1 cm4gKG1vbWVudChkYXRlKS5mb3JtYXQoJ01NTSBEIFlZWVkgW+KAk10gSEg6 bW06c3MnKSk7CisgIH0KKworICByZW5kZXIoKSB7CisgICAgcmV0dXJuICgK KyAgICAgIDxkaXYgc3R5bGU9e3RoaXMucXVlcnlFbnRyeUJhY2tncm91bmRD b2xvcigpfT4KKyAgICAgICAgPGRpdiBzdHlsZT17c3FsU3R5bGV9PgorICAg ICAgICAgIHt0aGlzLnByb3BzLmhpc3RvcnlFbnRyeS5xdWVyeX0KKyAgICAg ICAgPC9kaXY+CisgICAgICAgIDxkaXYgc3R5bGU9e3NlY29uZExpbmVTdHls ZX0+CisgICAgICAgICAgPGRpdiBzdHlsZT17dGltZXN0YW1wU3R5bGV9Pgor ICAgICAgICAgICAge3RoaXMuZm9ybWF0RGF0ZSh0aGlzLnByb3BzLmhpc3Rv cnlFbnRyeS5zdGFydF90aW1lKX0gLworICAgICAgICAgICAgdG90YWwgdGlt ZToge3RoaXMucHJvcHMuaGlzdG9yeUVudHJ5LnRvdGFsX3RpbWV9CisgICAg ICAgICAgPC9kaXY+CisgICAgICAgICAgPGRpdiBzdHlsZT17cm93c0FmZmVj dGVkU3R5bGV9PgorICAgICAgICAgICAge3RoaXMucHJvcHMuaGlzdG9yeUVu dHJ5LnJvd19hZmZlY3RlZH0gcm93cyBhZmZlY3RlZAorICAgICAgICAgIDwv ZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGRpdiBzdHlsZT17ZXJy b3JNZXNzYWdlU3R5bGV9PgorICAgICAgICAgIHt0aGlzLnByb3BzLmhpc3Rv cnlFbnRyeS5tZXNzYWdlfQorICAgICAgICA8L2Rpdj4KKyAgICAgIDwvZGl2 PgorICAgICk7CisgIH0KKworICBxdWVyeUVudHJ5QmFja2dyb3VuZENvbG9y KCkgeworICAgIGlmICghdGhpcy5wcm9wcy5oaXN0b3J5RW50cnkuc3RhdHVz KSB7CisgICAgICByZXR1cm4gdXBkYXRlKG91dGVyRGl2U3R5bGUsIHskbWVy Z2U6IHtiYWNrZ3JvdW5kQ29sb3I6ICcjRjdEMEQ1J319KTsKKyAgICB9Cisg ICAgcmV0dXJuIG91dGVyRGl2U3R5bGU7CisgIH0KK30KKworUXVlcnlIaXN0 b3J5RW50cnkucHJvcFR5cGVzID0geworICBoaXN0b3J5RW50cnk6IFJlYWN0 LlByb3BUeXBlcy5zaGFwZSh7CisgICAgcXVlcnk6IFJlYWN0LlByb3BUeXBl cy5zdHJpbmcsCisgICAgc3RhcnRfdGltZTogUmVhY3QuUHJvcFR5cGVzLmlu c3RhbmNlT2YoRGF0ZSksCisgICAgc3RhdHVzOiBSZWFjdC5Qcm9wVHlwZXMu Ym9vbCwKKyAgICB0b3RhbF90aW1lOiBSZWFjdC5Qcm9wVHlwZXMuc3RyaW5n LAorICAgIHJvd19hZmZlY3RlZDogUmVhY3QuUHJvcFR5cGVzLmludCwKKyAg ICBtZXNzYWdlOiBSZWFjdC5Qcm9wVHlwZXMuc3RyaW5nLAorICB9KSwKK307 ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3RlbXBsYXRlcy9zcWxlZGl0b3Iv anMvc3FsZWRpdG9yLmpzIGIvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9y L3RlbXBsYXRlcy9zcWxlZGl0b3IvanMvc3FsZWRpdG9yLmpzCmluZGV4IGQ4 YWU3M2VlLi44MjUyNjVlNSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9v bHMvc3FsZWRpdG9yL3RlbXBsYXRlcy9zcWxlZGl0b3IvanMvc3FsZWRpdG9y LmpzCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci90ZW1wbGF0 ZXMvc3FsZWRpdG9yL2pzL3NxbGVkaXRvci5qcwpAQCAtNCw2ICs0LDggQEAg ZGVmaW5lKAogICAgICdiYWNrYm9uZScsICdiYWNrZ3JpZCcsICdjb2RlbWly cm9yJywgJ3BnYWRtaW4ubWlzYy5leHBsYWluJywKICAgICAnc291cmNlcy9z ZWxlY3Rpb24vZ3JpZF9zZWxlY3RvcicsICdzb3VyY2VzL3NlbGVjdGlvbi9j bGlwYm9hcmQnLAogICAgICdzb3VyY2VzL3NlbGVjdGlvbi9jb3B5X2RhdGEn LAorICAgICdzb3VyY2VzL2dlbmVyYXRlZC9oaXN0b3J5JywKKyAgICAnc291 cmNlcy9nZW5lcmF0ZWQvcmVhY3RDb21wb25lbnRzJywKIAogICAgICdzbGlj a2dyaWQnLCAnYm9vdHN0cmFwJywgJ3BnYWRtaW4uYnJvd3NlcicsICd3Y2Rv Y2tlcicsCiAgICAgJ2NvZGVtaXJyb3IvbW9kZS9zcWwvc3FsJywgJ2NvZGVt aXJyb3IvYWRkb24vc2VsZWN0aW9uL21hcmstc2VsZWN0aW9uJywKQEAgLTI3 LDcgKzI5LDcgQEAgZGVmaW5lKAogICAgICdzbGlja2dyaWQvc2xpY2suZ3Jp ZCcKICAgXSwKICAgZnVuY3Rpb24oCi0gICAgJCwgXywgUywgYWxlcnRpZnks IHBnQWRtaW4sIEJhY2tib25lLCBCYWNrZ3JpZCwgQ29kZU1pcnJvciwgcGdF eHBsYWluLCBHcmlkU2VsZWN0b3IsIGNsaXBib2FyZCwgY29weURhdGEKKyAg ICAkLCBfLCBTLCBhbGVydGlmeSwgcGdBZG1pbiwgQmFja2JvbmUsIEJhY2tn cmlkLCBDb2RlTWlycm9yLCBwZ0V4cGxhaW4sIEdyaWRTZWxlY3RvciwgY2xp cGJvYXJkLCBjb3B5RGF0YSwgSGlzdG9yeUJ1bmRsZSwgcmVhY3RDb21wb25l bnRzCiAgICkgewogICAgIC8qIFJldHVybiBiYWNrLCB0aGlzIGhhcyBiZWVu IGNhbGxlZCBtb3JlIHRoYW4gb25jZSAqLwogICAgIGlmIChwZ0FkbWluLlNx bEVkaXRvcikKQEAgLTIyNiw2ICsyMjgsNyBAQCBkZWZpbmUoCiAgICAgICAg IHNlbGYubWVzc2FnZXNfcGFuZWwgPSBtYWluX2RvY2tlci5hZGRQYW5lbCgn bWVzc2FnZXMnLCB3Y0RvY2tlci5ET0NLLlNUQUNLRUQsIHNlbGYuZGF0YV9v dXRwdXRfcGFuZWwpOwogICAgICAgICBzZWxmLmhpc3RvcnlfcGFuZWwgPSBt YWluX2RvY2tlci5hZGRQYW5lbCgnaGlzdG9yeScsIHdjRG9ja2VyLkRPQ0su U1RBQ0tFRCwgc2VsZi5kYXRhX291dHB1dF9wYW5lbCk7CiAKKwogICAgICAg ICBzZWxmLnJlbmRlcl9oaXN0b3J5X2dyaWQoKTsKIAogICAgICAgICBpZiAo IXNlbGYuaGFuZGxlci5pc19uZXdfYnJvd3Nlcl90YWIpIHsKQEAgLTk0NCwx NDcgKzk0NywxNCBAQCBkZWZpbmUoCiAKICAgICAgICAgLy8gUmVtb3ZlIGFu eSBleGlzdGluZyBncmlkIGZpcnN0CiAgICAgICAgIGlmIChzZWxmLmhpc3Rv cnlfZ3JpZCkgewotICAgICAgICAgICAgc2VsZi5oaXN0b3J5X2dyaWQucmVt b3ZlKCk7CisgICAgICAgICAgc2VsZi5oaXN0b3J5X2dyaWQucmVtb3ZlKCk7 CiAgICAgICAgIH0KIAotICAgICAgICB2YXIgaGlzdG9yeV9tb2RlbCA9IEJh Y2tib25lLk1vZGVsLmV4dGVuZCh7Ci0gICAgICAgICAgZGVmYXVsdHM6IHsK LSAgICAgICAgICAgIHN0YXR1czogdW5kZWZpbmVkLAotICAgICAgICAgICAg c3RhcnRfdGltZTogdW5kZWZpbmVkLAotICAgICAgICAgICAgcXVlcnk6IHVu ZGVmaW5lZCwKLSAgICAgICAgICAgIHJvd19hZmZlY3RlZDogMCwKLSAgICAg ICAgICAgIHJvd19yZXRyaWV2ZWQ6IDAsCi0gICAgICAgICAgICB0b3RhbF90 aW1lOiB1bmRlZmluZWQsCi0gICAgICAgICAgICBtZXNzYWdlOiAnJwotICAg ICAgICAgIH0KLSAgICAgICAgfSk7Ci0KLSAgICAgICAgdmFyIGhpc3Rvcnlf Y29sbGVjdGlvbiA9IHNlbGYuaGlzdG9yeV9jb2xsZWN0aW9uID0gbmV3IChC YWNrYm9uZS5Db2xsZWN0aW9uLmV4dGVuZCh7Ci0gICAgICAgICAgICBtb2Rl bDogaGlzdG9yeV9tb2RlbCwKLSAgICAgICAgICAgIC8vIGNvbXBhcmF0b3Ig dG8gc29ydCB0aGUgaGlzdG9yeSBpbiByZXZlcnNlIG9yZGVyIG9mIHRoZSBz dGFydF90aW1lCi0gICAgICAgICAgICBjb21wYXJhdG9yOiBmdW5jdGlvbihh LCBiKSB7Ci0gICAgICAgICAgICAgIHJldHVybiAtYS5nZXQoJ3N0YXJ0X3Rp bWUnKS5sb2NhbGVDb21wYXJlKGIuZ2V0KCdzdGFydF90aW1lJykpOwotICAg ICAgICAgICAgfQotICAgICAgICB9KSk7Ci0gICAgICAgIHZhciBjb2x1bW5z ID0gW3sKLSAgICAgICAgICAgIG5hbWU6ICJzdGF0dXMiLAotICAgICAgICAg ICAgbGFiZWw6ICIiLAotICAgICAgICAgICAgY2VsbDogQmFja2dyaWQuQ2Vs bC5leHRlbmQoewotICAgICAgICAgICAgICBjbGFzczogJ3NxbC1zdGF0dXMt Y2VsbCcsCi0gICAgICAgICAgICAgIHJlbmRlcjogZnVuY3Rpb24oKSB7Ci0g ICAgICAgICAgICAgICAgdGhpcy4kZWwuZW1wdHkoKTsKLSAgICAgICAgICAg ICAgICB2YXIgJGJ0biA9ICQoJzxidXR0b24+PC9idXR0b24+JywgewotICAg ICAgICAgICAgICAgICAgY2xhc3M6ICdidG4gYnRuLWNpcmNsZScKLSAgICAg ICAgICAgICAgICB9KS5hcHBlbmRUbyh0aGlzLiRlbCk7Ci0gICAgICAgICAg ICAgICAgdmFyICRjaXJjbGVEaXYgPSAkKCc8aT48L2k+Jywge2NsYXNzOiAn ZmEnfSkuYXBwZW5kVG8oJGJ0bik7Ci0gICAgICAgICAgICAgICAgaWYgKHRo aXMubW9kZWwuZ2V0KCdzdGF0dXMnKSkgewotICAgICAgICAgICAgICAgICAg JGJ0bi5hZGRDbGFzcygnYnRuLXN1Y2Nlc3MnKTsKLSAgICAgICAgICAgICAg ICAgICRjaXJjbGVEaXYuYWRkQ2xhc3MoJ2ZhLWNoZWNrJyk7Ci0gICAgICAg ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICRidG4uYWRk Q2xhc3MoJ2J0bi1kYW5nZXInKTsKLSAgICAgICAgICAgICAgICAgICRjaXJj bGVEaXYuYWRkQ2xhc3MoJ2ZhLXRpbWVzJyk7Ci0gICAgICAgICAgICAgICAg fQotCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgICAgICAg ICAgIH0sCi0gICAgICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZQotICAgICAg ICAgICAgfSksCi0gICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UKLSAgICAg ICAgICB9LCB7Ci0gICAgICAgICAgICBuYW1lOiAic3RhcnRfdGltZSIsCi0g ICAgICAgICAgICBsYWJlbDogIkRhdGUiLAotICAgICAgICAgICAgY2VsbDog InN0cmluZyIsCi0gICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsCi0gICAg ICAgICAgICByZXNpemVhYmxlOiB0cnVlCi0gICAgICAgICAgfSwgewotICAg ICAgICAgICAgbmFtZTogInF1ZXJ5IiwKLSAgICAgICAgICAgIGxhYmVsOiAi UXVlcnkiLAotICAgICAgICAgICAgY2VsbDogInN0cmluZyIsCi0gICAgICAg ICAgICBlZGl0YWJsZTogZmFsc2UsCi0gICAgICAgICAgICByZXNpemVhYmxl OiB0cnVlCi0gICAgICAgICAgfSwgewotICAgICAgICAgICAgbmFtZTogInJv d19hZmZlY3RlZCIsCi0gICAgICAgICAgICBsYWJlbDogIlJvd3MgYWZmZWN0 ZWQiLAotICAgICAgICAgICAgY2VsbDogImludGVnZXIiLAotICAgICAgICAg ICAgZWRpdGFibGU6IGZhbHNlLAotICAgICAgICAgICAgcmVzaXplYWJsZTog dHJ1ZQotICAgICAgICAgIH0sIHsKLSAgICAgICAgICAgIG5hbWU6ICJ0b3Rh bF90aW1lIiwKLSAgICAgICAgICAgIGxhYmVsOiAiVG90YWwgVGltZSIsCi0g ICAgICAgICAgICBjZWxsOiAic3RyaW5nIiwKLSAgICAgICAgICAgIGVkaXRh YmxlOiBmYWxzZSwKLSAgICAgICAgICAgIHJlc2l6ZWFibGU6IHRydWUKLSAg ICAgICAgICB9LCB7Ci0gICAgICAgICAgICBuYW1lOiAibWVzc2FnZSIsCi0g ICAgICAgICAgICBsYWJlbDogIk1lc3NhZ2UiLAotICAgICAgICAgICAgY2Vs bDogInN0cmluZyIsCi0gICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsCi0g ICAgICAgICAgICByZXNpemVhYmxlOiB0cnVlCi0gICAgICAgIH1dOwotCi0K LSAgICAgICAgLy8gQ3JlYXRlIENvbGxlY3Rpb24gb2YgQmFja2dyaWQgY29s dW1ucwotICAgICAgICB2YXIgY29sdW1uc0NvbGwgPSBuZXcgQmFja2dyaWQu Q29sdW1ucyhjb2x1bW5zKTsKLSAgICAgICAgdmFyICRoaXN0b3J5X2dyaWQg PSBzZWxmLiRlbC5maW5kKCcjaGlzdG9yeV9ncmlkJyk7Ci0KLSAgICAgICAg dmFyIGdyaWQgPSBzZWxmLmhpc3RvcnlfZ3JpZCA9IG5ldyBCYWNrZ3JpZC5H cmlkKHsKLSAgICAgICAgICAgIGNvbHVtbnM6IGNvbHVtbnNDb2xsLAotICAg ICAgICAgICAgY29sbGVjdGlvbjogaGlzdG9yeV9jb2xsZWN0aW9uLAotICAg ICAgICAgICAgY2xhc3NOYW1lOiAiYmFja2dyaWQgdGFibGUtYm9yZGVyZWQg cHJlc2VudGF0aW9uIHRhYmxlIGJhY2tncmlkLXN0cmlwZWQiCi0gICAgICAg IH0pOwotCi0gICAgICAgIC8vIFJlbmRlciB0aGUgZ3JpZAotICAgICAgICAk aGlzdG9yeV9ncmlkLmFwcGVuZChncmlkLnJlbmRlcigpLiRlbCk7Ci0KLSAg ICAgICAgdmFyIHNpemVBYmxlQ29sID0gbmV3IEJhY2tncmlkLkV4dGVuc2lv bi5TaXplQWJsZUNvbHVtbnMoewotICAgICAgICAgIGNvbGxlY3Rpb246IGhp c3RvcnlfY29sbGVjdGlvbiwKLSAgICAgICAgICBjb2x1bW5zOiBjb2x1bW5z Q29sbCwKLSAgICAgICAgICBncmlkOiBzZWxmLmhpc3RvcnlfZ3JpZAotICAg ICAgICB9KTsKKyAgICAgICAgc2VsZi5oaXN0b3J5X2NvbGxlY3Rpb24gPSBu ZXcgSGlzdG9yeUJ1bmRsZS5oaXN0b3J5Q29sbGVjdGlvbihbXSk7CiAKLSAg ICAgICAgJGhpc3RvcnlfZ3JpZC5maW5kKCd0aGVhZCcpLmJlZm9yZShzaXpl QWJsZUNvbC5yZW5kZXIoKS5lbCk7Ci0KLSAgICAgICAgLy8gQWRkIHJlc2l6 ZSBoYW5kbGVycwotICAgICAgICB2YXIgc2l6ZUhhbmRsZXIgPSBuZXcgQmFj a2dyaWQuRXh0ZW5zaW9uLlNpemVBYmxlQ29sdW1uc0hhbmRsZXJzKHsKLSAg ICAgICAgICBzaXplQWJsZUNvbHVtbnM6IHNpemVBYmxlQ29sLAotICAgICAg ICAgIGdyaWQ6IHNlbGYuaGlzdG9yeV9ncmlkLAotICAgICAgICAgIHNhdmVD b2x1bW5XaWR0aDogdHJ1ZQotICAgICAgICB9KTsKLQotICAgICAgICAvLyBz aXplSGFuZGxlciBzaG91bGQgcmVuZGVyIG9ubHkgd2hlbiB0YWJsZSBncmlk IGxvYWRlZCBjb21wbGV0ZWx5LgotICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0 aW9uKCkgewotICAgICAgICAgICRoaXN0b3J5X2dyaWQuZmluZCgndGhlYWQn KS5iZWZvcmUoc2l6ZUhhbmRsZXIucmVuZGVyKCkuZWwpOwotICAgICAgICB9 LCAxMDAwKTsKLQotICAgICAgICAvLyByZSByZW5kZXIgc2l6ZUhhbmRsZXIg d2hlbmV2ZXIgaGlzdG9yeSBwYW5lbCB0YWIgYmVjb21lcyB2aXNpYmxlCi0g ICAgICAgIHNlbGYuaGlzdG9yeV9wYW5lbC5vbih3Y0RvY2tlci5FVkVOVC5W SVNJQklMSVRZX0NIQU5HRUQsIGZ1bmN0aW9uKGV2KSB7Ci0gICAgICAgICAg JGhpc3RvcnlfZ3JpZC5maW5kKCd0aGVhZCcpLmJlZm9yZShzaXplSGFuZGxl ci5yZW5kZXIoKS5lbCk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIC8vIElu aXRpYWxpemVkIHRhYmxlIHdpZHRoIDAgc3RpbGwgbm90IGNhbGN1bGF0ZWQK LSAgICAgICAgdmFyIHRhYmxlX3dpZHRoID0gMDsKLSAgICAgICAgLy8gTGlz dGVuIHRvIHJlc2l6ZSBldmVudHMKLSAgICAgICAgY29sdW1uc0NvbGwub24o J3Jlc2l6ZScsCi0gICAgICAgICAgZnVuY3Rpb24oY29sdW1uTW9kZWwsIG5l d1dpZHRoLCBvbGRXaWR0aCwgb2Zmc2V0KSB7Ci0gICAgICAgICAgICB2YXIg JGdyaWRfZWwgPSAkaGlzdG9yeV9ncmlkLmZpbmQoJ3RhYmxlJyksCi0gICAg ICAgICAgICAgICAgdGJsX29yaWdfd2lkdGggPSAkZ3JpZF9lbC53aWR0aCgp LAotICAgICAgICAgICAgICAgIG9mZnNldCA9IG9sZFdpZHRoIC0gbmV3V2lk dGgsCi0gICAgICAgICAgICAgICAgdGJsX25ld193aWR0aCA9IHRibF9vcmln X3dpZHRoIC0gb2Zmc2V0OwotCi0gICAgICAgICAgICBpZiAodGFibGVfd2lk dGggPT0gMCkgewotICAgICAgICAgICAgICB0YWJsZV93aWR0aCA9IHRibF9v cmlnX3dpZHRoCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvLyBUYWJs ZSBuZXcgd2lkdGggY2Fubm90IGJlIGxlc3MgdGhhbiBvcmlnaW5hbCB3aWR0 aAotICAgICAgICAgICAgaWYgKHRibF9uZXdfd2lkdGggPj0gdGFibGVfd2lk dGgpIHsKLSAgICAgICAgICAgICAgJCgkZ3JpZF9lbCkuY3NzKCd3aWR0aCcs IHRibF9uZXdfd2lkdGggKyAncHgnKTsKLSAgICAgICAgICAgIH0KLSAgICAg ICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAvLyByZXNldCBpZiBjYWxj dWxhdGVkIHRibF9uZXdfd2lkdGggaXMgbGVzcyB0aGFuIG9yaWdpbmFsCi0g ICAgICAgICAgICAgIC8vIHRhYmxlIHdpZHRoCi0gICAgICAgICAgICAgIHRi bF9uZXdfd2lkdGggPSB0YWJsZV93aWR0aDsKLSAgICAgICAgICAgICAgJCgk Z3JpZF9lbCkuY3NzKCd3aWR0aCcsIHRibF9uZXdfd2lkdGggKyAncHgnKTsK LSAgICAgICAgICAgIH0KLSAgICAgICAgfSk7CisgICAgICAgIGxldCBxdWVy eUhpc3RvcnlFbGVtZW50ID0gcmVhY3RDb21wb25lbnRzLlJlYWN0LmNyZWF0 ZUVsZW1lbnQoCisgICAgICAgICAgcmVhY3RDb21wb25lbnRzLlF1ZXJ5SGlz dG9yeSwge2hpc3RvcnlDb2xsZWN0aW9uOiBzZWxmLmhpc3RvcnlfY29sbGVj dGlvbn0pOworICAgICAgICByZWFjdENvbXBvbmVudHMucmVuZGVyKHF1ZXJ5 SGlzdG9yeUVsZW1lbnQsICQoJyNoaXN0b3J5X2dyaWQnKVswXSk7CiAgICAg ICB9LAogCiAgICAgICAvLyBDYWxsYmFjayBmdW5jdGlvbiBmb3IgQWRkIE5l dyBSb3cgYnV0dG9uIGNsaWNrLgpAQCAtMTM4Nyw3ICsxMjU3LDcgQEAgZGVm aW5lKAogICAgICAgICB0aGlzLl9zdG9wRXZlbnRQcm9wb2dhdGlvbihldik7 CiAgICAgICAgIHRoaXMuX2Nsb3NlRHJvcERvd24oZXYpOwogICAgICAgICAv LyBhc2sgZm9yIGNvbmZpcm1hdGlvbiBvbmx5IGlmIGFueXRoaW5nIHRvIGNs ZWFyCi0gICAgICAgIGlmKCFzZWxmLmhpc3RvcnlfY29sbGVjdGlvbi5sZW5n dGgpIHsgcmV0dXJuOyB9CisgICAgICAgIGlmKCFzZWxmLmhpc3RvcnlfY29s bGVjdGlvbi5sZW5ndGgoKSkgeyByZXR1cm47IH0KIAogICAgICAgICBhbGVy dGlmeS5jb25maXJtKCJ7eyBfKCdDbGVhciBoaXN0b3J5JykgfX0iLAogICAg ICAgICAgICJ7eyBfKCdBcmUgeW91IHN1cmUgeW91IHdpc2ggdG8gY2xlYXIg dGhlIGhpc3Rvcnk/JykgfX0iLApAQCAtMjIwOCwxMSArMjA3OCwxMyBAQCBk ZWZpbmUoCiAgICAgICAgICAgICAkKCIjYnRuLWZsYXNoIikucHJvcCgnZGlz YWJsZWQnLCBmYWxzZSk7CiAgICAgICAgICAgICBzZWxmLnRyaWdnZXIoJ3Bn YWRtaW4tc3FsZWRpdG9yOmxvYWRpbmctaWNvbjpoaWRlJyk7CiAgICAgICAg ICAgICBzZWxmLmdyaWRWaWV3Lmhpc3RvcnlfY29sbGVjdGlvbi5hZGQoewot ICAgICAgICAgICAgICAnc3RhdHVzJyA6IHN0YXR1cywgJ3N0YXJ0X3RpbWUn OiBzZWxmLnF1ZXJ5X3N0YXJ0X3RpbWUudG9TdHJpbmcoKSwKLSAgICAgICAg ICAgICAgJ3F1ZXJ5Jzogc2VsZi5xdWVyeSwgJ3Jvd19hZmZlY3RlZCc6IHNl bGYucm93c19hZmZlY3RlZCwKLSAgICAgICAgICAgICAgJ3RvdGFsX3RpbWUn OiBzZWxmLnRvdGFsX3RpbWUsICdtZXNzYWdlJzptc2cKKyAgICAgICAgICAg ICAgJ3N0YXR1cycgOiBzdGF0dXMsCisgICAgICAgICAgICAgICdzdGFydF90 aW1lJzogc2VsZi5xdWVyeV9zdGFydF90aW1lLAorICAgICAgICAgICAgICAn cXVlcnknOiBzZWxmLnF1ZXJ5LAorICAgICAgICAgICAgICAncm93X2FmZmVj dGVkJzogc2VsZi5yb3dzX2FmZmVjdGVkLAorICAgICAgICAgICAgICAndG90 YWxfdGltZSc6IHNlbGYudG90YWxfdGltZSwKKyAgICAgICAgICAgICAgJ21l c3NhZ2UnOm1zZywKICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgc2Vs Zi5ncmlkVmlldy5oaXN0b3J5X2NvbGxlY3Rpb24uc29ydCgpOwogICAgICAg ICAgIH0KICAgICAgICAgfSwKIApAQCAtMjQ3OCwxMCArMjM1MCwxMyBAQCBk ZWZpbmUoCiAKICAgICAgICAgICAgICAgICAvLyBVcGRhdGUgdGhlIHNxbCBy ZXN1bHRzIGluIGhpc3RvcnkgdGFiCiAgICAgICAgICAgICAgICAgXy5lYWNo KHJlcy5kYXRhLnF1ZXJ5X3Jlc3VsdCwgZnVuY3Rpb24ocikgewotICAgICAg ICAgICAgICAgICAgc2VsZi5ncmlkVmlldy5oaXN0b3J5X2NvbGxlY3Rpb24u YWRkKAotICAgICAgICAgICAgICAgICAgICB7J3N0YXR1cycgOiByLnN0YXR1 cywgJ3N0YXJ0X3RpbWUnOiBzZWxmLnF1ZXJ5X3N0YXJ0X3RpbWUudG9TdHJp bmcoKSwKLSAgICAgICAgICAgICAgICAgICAgJ3F1ZXJ5Jzogci5zcWwsICdy b3dfYWZmZWN0ZWQnOiByLnJvd3NfYWZmZWN0ZWQsCi0gICAgICAgICAgICAg ICAgICAgICd0b3RhbF90aW1lJzogc2VsZi50b3RhbF90aW1lLCAnbWVzc2Fn ZSc6IHIucmVzdWx0CisgICAgICAgICAgICAgICAgICBzZWxmLmdyaWRWaWV3 Lmhpc3RvcnlfY29sbGVjdGlvbi5hZGQoeworICAgICAgICAgICAgICAgICAg ICAnc3RhdHVzJzogci5zdGF0dXMsCisgICAgICAgICAgICAgICAgICAgICdz dGFydF90aW1lJzogc2VsZi5xdWVyeV9zdGFydF90aW1lLAorICAgICAgICAg ICAgICAgICAgICAncXVlcnknOiByLnNxbCwKKyAgICAgICAgICAgICAgICAg ICAgJ3Jvd19hZmZlY3RlZCc6IHIucm93c19hZmZlY3RlZCwKKyAgICAgICAg ICAgICAgICAgICAgJ3RvdGFsX3RpbWUnOiBzZWxmLnRvdGFsX3RpbWUsCisg ICAgICAgICAgICAgICAgICAgICdtZXNzYWdlJzogci5yZXN1bHQsCiAgICAg ICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAg ICAgICAgICAgICBzZWxmLnRyaWdnZXIoJ3BnYWRtaW4tc3FsZWRpdG9yOmxv YWRpbmctaWNvbjpoaWRlJyk7CmRpZmYgLS1naXQgYS93ZWIvcmVncmVzc2lv bi9mZWF0dXJlX3V0aWxzL2FwcF9zdGFydGVyLnB5IGIvd2ViL3JlZ3Jlc3Np b24vZmVhdHVyZV91dGlscy9hcHBfc3RhcnRlci5weQppbmRleCA5NmNjNTE2 Yi4uZjQwZDY5MjEgMTAwNjQ0Ci0tLSBhL3dlYi9yZWdyZXNzaW9uL2ZlYXR1 cmVfdXRpbHMvYXBwX3N0YXJ0ZXIucHkKKysrIGIvd2ViL3JlZ3Jlc3Npb24v ZmVhdHVyZV91dGlscy9hcHBfc3RhcnRlci5weQpAQCAtMTEsNiArMTEsNyBA QCBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHNpZ25hbAogaW1wb3J0IHJh bmRvbQogCitpbXBvcnQgdGltZQogCiBjbGFzcyBBcHBTdGFydGVyOgogICAg ICIiIiBIZWxwZXIgZm9yIHN0YXJ0aW5nIHRoZSBmdWxsIHBnYWRtaW40IGFw cCBhbmQgbG9hZGluZyB0aGUgcGFnZSB2aWEKQEAgLTQwLDYgKzQxLDcgQEAg Y2xhc3MgQXBwU3RhcnRlcjoKICAgICAgICAgKQogCiAgICAgICAgIHNlbGYu ZHJpdmVyLnNldF93aW5kb3dfc2l6ZSgxMDI0LCAxMDI0KQorICAgICAgICB0 aW1lLnNsZWVwKDEwKQogICAgICAgICBzZWxmLmRyaXZlci5nZXQoCiAgICAg ICAgICAgICAiaHR0cDovLyIgKyBzZWxmLmFwcF9jb25maWcuREVGQVVMVF9T RVJWRVIgKyAiOiIgKwogICAgICAgICAgICAgcmFuZG9tX3NlcnZlcl9wb3J0 KQpkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vZmVhdHVyZV91dGlscy9w Z2FkbWluX3BhZ2UucHkgYi93ZWIvcmVncmVzc2lvbi9mZWF0dXJlX3V0aWxz L3BnYWRtaW5fcGFnZS5weQppbmRleCBmNWQwYWM3OS4uNGYxNWNkMWEgMTAw NjQ0Ci0tLSBhL3dlYi9yZWdyZXNzaW9uL2ZlYXR1cmVfdXRpbHMvcGdhZG1p bl9wYWdlLnB5CisrKyBiL3dlYi9yZWdyZXNzaW9uL2ZlYXR1cmVfdXRpbHMv cGdhZG1pbl9wYWdlLnB5CkBAIC0zMCwxNSArMzAsMTYgQEAgY2xhc3MgUGdh ZG1pblBhZ2U6CiAgICAgZGVmIHJlc2V0X2xheW91dChzZWxmKToKICAgICAg ICAgc2VsZi5jbGlja19lbGVtZW50KHNlbGYuZmluZF9ieV9wYXJ0aWFsX2xp bmtfdGV4dCgiRmlsZSIpKQogICAgICAgICBzZWxmLmZpbmRfYnlfcGFydGlh bF9saW5rX3RleHQoIlJlc2V0IExheW91dCIpLmNsaWNrKCkKLSAgICAgICAg c2VsZi5jbGlja19tb2RhbF9vaygpCisgICAgICAgIHNlbGYuY2xpY2tfbW9k YWwoJ09LJykKICAgICAgICAgc2VsZi53YWl0X2Zvcl9yZWxvYWRpbmdfaW5k aWNhdG9yX3RvX2Rpc2FwcGVhcigpCiAKLSAgICBkZWYgY2xpY2tfbW9kYWxf b2soc2VsZik6CisgICAgZGVmIGNsaWNrX21vZGFsKHNlbGYsIGJ1dHRvbl90 ZXh0KToKICAgICAgICAgdGltZS5zbGVlcCgwLjUpCiAgICAgICAgICMgRmlu ZCBhY3RpdmUgYWxlcnRpZnkgZGlhbG9nIGluIGNhc2Ugb2YgbXVsdGlwbGUg YWxlcnRpZnkgZGlhbG9nICYgY2xpY2sgb24gdGhhdCBkaWFsb2cKLSAgICAg ICAgc2VsZi5jbGlja19lbGVtZW50KAotICAgICAgICAgICAgc2VsZi5maW5k X2J5X3hwYXRoKCIvL2Rpdltjb250YWlucyhAY2xhc3MsICdhbGVydGlmeScp IGFuZCBub3QoY29udGFpbnMoQGNsYXNzLCAnYWpzLWhpZGRlbicpKV0vL2J1 dHRvblsuPSdPSyddIikKLSAgICAgICAgKQorICAgICAgICBtb2RhbF9idXR0 b24gPSBzZWxmLmZpbmRfYnlfeHBhdGgoCisgICAgICAgICAgICAiLy9kaXZb Y29udGFpbnMoQGNsYXNzLCAnYWxlcnRpZnknKSBhbmQgbm90KGNvbnRhaW5z KEBjbGFzcywgJ2Fqcy1oaWRkZW4nKSldLy9idXR0b25bLj0nJXMnXSIKKyAg ICAgICAgICAgICUgYnV0dG9uX3RleHQpCisgICAgICAgIHNlbGYuY2xpY2tf ZWxlbWVudChtb2RhbF9idXR0b24pCiAKICAgICBkZWYgYWRkX3NlcnZlcihz ZWxmLCBzZXJ2ZXJfY29uZmlnKToKICAgICAgICAgc2VsZi5maW5kX2J5X3hw YXRoKCIvLypbQGNsYXNzPSdhY2lUcmVlVGV4dCcgYW5kIGNvbnRhaW5zKC4s J1NlcnZlcnMnKV0iKS5jbGljaygpCkBAIC03MCwxMCArNzEsMTMgQEAgY2xh c3MgUGdhZG1pblBhZ2U6CiAKICAgICBkZWYgcmVtb3ZlX3NlcnZlcihzZWxm LCBzZXJ2ZXJfY29uZmlnKToKICAgICAgICAgc2VsZi5kcml2ZXIuc3dpdGNo X3RvLmRlZmF1bHRfY29udGVudCgpCi0gICAgICAgIHNlbGYuZmluZF9ieV94 cGF0aCgiLy8qW0BpZD0ndHJlZSddLy8qWy49JyIgKyBzZXJ2ZXJfY29uZmln WyduYW1lJ10gKyAiJyBhbmQgQGNsYXNzPSdhY2lUcmVlSXRlbSddIikuY2xp Y2soKQotICAgICAgICBzZWxmLmZpbmRfYnlfcGFydGlhbF9saW5rX3RleHQo Ik9iamVjdCIpLmNsaWNrKCkKLSAgICAgICAgc2VsZi5maW5kX2J5X3BhcnRp YWxfbGlua190ZXh0KCJEZWxldGUvRHJvcCIpLmNsaWNrKCkKLSAgICAgICAg c2VsZi5jbGlja19tb2RhbF9vaygpCisgICAgICAgIHNlcnZlcl90b19yZW1v dmUgPSBzZWxmLmZpbmRfYnlfeHBhdGgoIi8vKltAaWQ9J3RyZWUnXS8vKlsu PSciICsgc2VydmVyX2NvbmZpZ1snbmFtZSddICsgIicgYW5kIEBjbGFzcz0n YWNpVHJlZUl0ZW0nXSIpCisgICAgICAgIHNlbGYuY2xpY2tfZWxlbWVudChz ZXJ2ZXJfdG9fcmVtb3ZlKQorICAgICAgICBvYmplY3RfbWVudV9pdGVtID0g c2VsZi5maW5kX2J5X3BhcnRpYWxfbGlua190ZXh0KCJPYmplY3QiKQorICAg ICAgICBzZWxmLmNsaWNrX2VsZW1lbnQob2JqZWN0X21lbnVfaXRlbSkKKyAg ICAgICAgZGVsZXRlX21lbnVfaXRlbSA9IHNlbGYuZmluZF9ieV9wYXJ0aWFs X2xpbmtfdGV4dCgiRGVsZXRlL0Ryb3AiKQorICAgICAgICBzZWxmLmNsaWNr X2VsZW1lbnQoZGVsZXRlX21lbnVfaXRlbSkKKyAgICAgICAgc2VsZi5jbGlj a19tb2RhbCgnT0snKQogCiAgICAgZGVmIHNlbGVjdF90cmVlX2l0ZW0oc2Vs ZiwgdHJlZV9pdGVtX3RleHQpOgogICAgICAgICBzZWxmLmZpbmRfYnlfeHBh dGgoIi8vKltAaWQ9J3RyZWUnXS8vKlsuPSciICsgdHJlZV9pdGVtX3RleHQg KyAiJyBhbmQgQGNsYXNzPSdhY2lUcmVlSXRlbSddIikuY2xpY2soKQpAQCAt OTQsNiArOTgsNyBAQCBjbGFzcyBQZ2FkbWluUGFnZToKICAgICAgICAgKQog CiAgICAgZGVmIGNsaWNrX2VsZW1lbnQoc2VsZiwgZWxlbWVudCk6CisgICAg ICAgICMgZHJpdmVyIG11c3QgYmUgaGVyZSB0byBhZGhlcmUgdG8gdGhlIG1l dGhvZCBjb250cmFjdCBpbiBzZWxlbml1bS53ZWJkcml2ZXIuc3VwcG9ydC53 YWl0LldlYkRyaXZlcldhaXQudW50aWwoKQogICAgICAgICBkZWYgY2xpY2tf c3VjY2VlZGVkKGRyaXZlcik6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAg ICAgICAgICAgZWxlbWVudC5jbGljaygpCkBAIC0xMTgsOCArMTIzLDkgQEAg Y2xhc3MgUGdhZG1pblBhZ2U6CiAgICAgICAgIEFjdGlvbkNoYWlucyhzZWxm LmRyaXZlcikuc2VuZF9rZXlzKGZpZWxkX2NvbnRlbnQpLnBlcmZvcm0oKQog CiAgICAgZGVmIGNsaWNrX3RhYihzZWxmLCB0YWJfbmFtZSk6Ci0gICAgICAg IHNlbGYuZmluZF9ieV94cGF0aCgiLy8qW2NvbnRhaW5zKEBjbGFzcywnd2NU YWJUb3AnKV0vLypbY29udGFpbnMoQGNsYXNzLCd3Y1BhbmVsVGFiJykgIgot ICAgICAgICAgICAgICAgICAgICAgICAgICAgImFuZCBjb250YWlucyguLCci ICsgdGFiX25hbWUgKyAiJyldIikuY2xpY2soKQorICAgICAgICB0YWIgPSBz ZWxmLmZpbmRfYnlfeHBhdGgoIi8vKltjb250YWlucyhAY2xhc3MsJ3djVGFi VG9wJyldLy8qW2NvbnRhaW5zKEBjbGFzcywnd2NQYW5lbFRhYicpICIKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICJhbmQgY29udGFpbnMoLiwnIiAr IHRhYl9uYW1lICsgIicpXSIpCisgICAgICAgIHNlbGYuY2xpY2tfZWxlbWVu dCh0YWIpCiAKICAgICBkZWYgd2FpdF9mb3JfaW5wdXRfZmllbGRfY29udGVu dChzZWxmLCBmaWVsZF9uYW1lLCBjb250ZW50KToKICAgICAgICAgZGVmIGlu cHV0X2ZpZWxkX2hhc19jb250ZW50KGRyaXZlcik6CmRpZmYgLS1naXQgYS93 ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2NoZWNrX25vZGVfdmlzaWJsaXR5 X3NwZWMuanMgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2NoZWNrX25v ZGVfdmlzaWJpbGl0eV9zcGVjLmpzCnNpbWlsYXJpdHkgaW5kZXggNjAlCnJl bmFtZSBmcm9tIHdlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvY2hlY2tfbm9k ZV92aXNpYmxpdHlfc3BlYy5qcwpyZW5hbWUgdG8gd2ViL3JlZ3Jlc3Npb24v amF2YXNjcmlwdC9jaGVja19ub2RlX3Zpc2liaWxpdHlfc3BlYy5qcwppbmRl eCAxMzBiMWMyMS4uOTZhODk2MWYgMTAwNjQ0Ci0tLSBhL3dlYi9yZWdyZXNz aW9uL2phdmFzY3JpcHQvY2hlY2tfbm9kZV92aXNpYmxpdHlfc3BlYy5qcwor KysgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2NoZWNrX25vZGVfdmlz aWJpbGl0eV9zcGVjLmpzCkBAIC03LDI0ICs3LDI0IEBACiAvLwogLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIAotZGVmaW5lKFsic291cmNlcy9j aGVja19ub2RlX3Zpc2liaWxpdHkiXSwKLWZ1bmN0aW9uIChjaGVja05vZGVW aXNpYmlsaXR5LCBwZ0Jyb3dzZXIpIHsKLSAgZGVzY3JpYmUoImNoZWNrTm9k ZVZpc2liaWxpdHkiLCBmdW5jdGlvbiAoKSB7CitkZWZpbmUoWydzb3VyY2Vz L2NoZWNrX25vZGVfdmlzaWJpbGl0eSddLAorZnVuY3Rpb24gKGNoZWNrTm9k ZVZpc2liaWxpdHkpIHsKKyAgZGVzY3JpYmUoJ2NoZWNrTm9kZVZpc2liaWxp dHknLCBmdW5jdGlvbiAoKSB7CiAKICAgICB2YXIgYnJvd3NlcjsKIAogICAg IGJyb3dzZXIgPSBqYXNtaW5lLmNyZWF0ZVNweU9iaignYnJvd3NlcicsIFsK LSAgICAgICAgICAgICAgICAgICAgJ25vZGVfcHJlZmVyZW5jZV9kYXRhJywg J2dldF9wcmVmZXJlbmNlJ10KKyAgICAgICdub2RlX3ByZWZlcmVuY2VfZGF0 YScsICdnZXRfcHJlZmVyZW5jZSddCiAgICAgICAgICAgICAgICAgKTsKIAot ICAgIGRlc2NyaWJlKCJ3aGVuIG5vZGUgaXMgc2VydmVyIGNvbGxlY3Rpb24i LCBmdW5jdGlvbiAoKSB7Ci0gICAgICBpdCgicmV0dXJucyB0cnVlIiwgZnVu Y3Rpb24gKCkgeworICAgIGRlc2NyaWJlKCd3aGVuIG5vZGUgaXMgc2VydmVy IGNvbGxlY3Rpb24nLCBmdW5jdGlvbiAoKSB7CisgICAgICBpdCgncmV0dXJu cyB0cnVlJywgZnVuY3Rpb24gKCkgewogICAgICAgICBleHBlY3QoY2hlY2tO b2RlVmlzaWJpbGl0eShicm93c2VyLCAnY29sbC1zZXJ2ZXInKSkudG9FcXVh bCh0cnVlKTsKICAgICAgIH0pOwogICAgIH0pOwogCi0gICAgZGVzY3JpYmUo IndoZW4gbm9kZSBpcyBzZXJ2ZXIiLCBmdW5jdGlvbiAoKSB7Ci0gICAgICBp dCgicmV0dXJucyB0cnVlIiwgZnVuY3Rpb24gKCkgeworICAgIGRlc2NyaWJl KCd3aGVuIG5vZGUgaXMgc2VydmVyJywgZnVuY3Rpb24gKCkgeworICAgICAg aXQoJ3JldHVybnMgdHJ1ZScsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgZXhw ZWN0KGNoZWNrTm9kZVZpc2liaWxpdHkoYnJvd3NlciwgJ3NlcnZlcicpKS50 b0VxdWFsKHRydWUpOwogICAgICAgfSk7CiAgICAgfSk7CmRpZmYgLS1naXQg YS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2hpc3RvcnkvaGlzdG9yeV9j b2xsZWN0aW9uX3NwZWMuanMgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0 L2hpc3RvcnkvaGlzdG9yeV9jb2xsZWN0aW9uX3NwZWMuanMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLmUxYmFhNTU0Ci0tLSAvZGV2 L251bGwKKysrIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9oaXN0b3J5 L2hpc3RvcnlfY29sbGVjdGlvbl9zcGVjLmpzCkBAIC0wLDAgKzEsODMgQEAK Ky8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBwZ0FkbWluIDQgLSBQb3N0Z3Jl U1FMIFRvb2xzCisvLworLy8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxNywg VGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorLy8gVGhpcyBzb2Z0d2Fy ZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisv LworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8KKworaW1wb3J0IEhpc3RvcnlDb2xsZWN0 aW9uIGZyb20gJy4uLy4uLy4uL3BnYWRtaW4vc3RhdGljL2pzL2hpc3Rvcnkv aGlzdG9yeV9jb2xsZWN0aW9uJzsKKworZGVzY3JpYmUoJ2hpc3RvcnlDb2xs ZWN0aW9uJywgZnVuY3Rpb24gKCkgeworICBsZXQgaGlzdG9yeUNvbGxlY3Rp b24sIGhpc3RvcnlNb2RlbCwgb25DaGFuZ2VTcHk7CisgIGJlZm9yZUVhY2go KCkgPT4geworICAgIGhpc3RvcnlNb2RlbCA9IFt7c29tZTogJ3RoaW5nJywg c29tZU90aGVyOiBbJ2FycmF5IGVsZW1lbnQnXX1dOworICAgIGhpc3RvcnlD b2xsZWN0aW9uID0gbmV3IEhpc3RvcnlDb2xsZWN0aW9uKGhpc3RvcnlNb2Rl bCk7CisgICAgb25DaGFuZ2VTcHkgPSBqYXNtaW5lLmNyZWF0ZVNweSgnb25D aGFuZ2VIYW5kbGVyJyk7CisKKyAgICBoaXN0b3J5Q29sbGVjdGlvbi5vbkNo YW5nZShvbkNoYW5nZVNweSk7CisgIH0pOworCisgIGRlc2NyaWJlKCdsZW5n dGgnLCBmdW5jdGlvbiAoKSB7CisgICAgaXQoJ3JldHVybnMgMCB3aGVuIHVu ZGVybHlpbmcgaGlzdG9yeSBtb2RlbCBoYXMgbm8gZWxlbWVudHMnLCBmdW5j dGlvbiAoKSB7CisgICAgICBoaXN0b3J5Q29sbGVjdGlvbiA9IG5ldyBIaXN0 b3J5Q29sbGVjdGlvbihbXSk7CisKKyAgICAgIGV4cGVjdChoaXN0b3J5Q29s bGVjdGlvbi5sZW5ndGgoKSkudG9CZSgwKTsKKyAgICB9KTsKKworICAgIGl0 KCdyZXR1cm5zIHRoZSBsZW5ndGggb2YgdGhlIHVuZGVybHlpbmcgaGlzdG9y eSBtb2RlbCcsIGZ1bmN0aW9uICgpIHsKKyAgICAgIGV4cGVjdChoaXN0b3J5 Q29sbGVjdGlvbi5sZW5ndGgoKSkudG9CZSgxKTsKKyAgICB9KTsKKyAgfSk7 CisKKyAgZGVzY3JpYmUoJ2FkZCcsIGZ1bmN0aW9uICgpIHsKKyAgICBsZXQg ZXhwZWN0ZWRIaXN0b3J5OworICAgIGJlZm9yZUVhY2goKCkgPT4geworICAg ICAgaGlzdG9yeUNvbGxlY3Rpb24uYWRkKHtzb21lOiAnbmV3IHRoaW5nJywg c29tZU90aGVyOiBbJ3ZhbHVlMScsICd2YWx1ZTInXX0pOworCisgICAgICBl eHBlY3RlZEhpc3RvcnkgPSBbCisgICAgICAgIHtzb21lOiAndGhpbmcnLCBz b21lT3RoZXI6IFsnYXJyYXkgZWxlbWVudCddfSwKKyAgICAgICAge3NvbWU6 ICduZXcgdGhpbmcnLCBzb21lT3RoZXI6IFsndmFsdWUxJywgJ3ZhbHVlMidd fSwKKyAgICAgIF07CisgICAgfSk7CisKKyAgICBpdCgnYWRkcyBhIHBhc3Nl ZCBlbnRyeScsIGZ1bmN0aW9uICgpIHsKKyAgICAgIGV4cGVjdChoaXN0b3J5 Q29sbGVjdGlvbi5oaXN0b3J5TGlzdCkudG9FcXVhbChleHBlY3RlZEhpc3Rv cnkpOworICAgIH0pOworCisgICAgaXQoJ2NhbGxzIHRoZSBvbkNoYW5nZSBm dW5jdGlvbicsIGZ1bmN0aW9uICgpIHsKKyAgICAgIGV4cGVjdChvbkNoYW5n ZVNweSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoZXhwZWN0ZWRIaXN0b3J5KTsK KyAgICB9KTsKKyAgfSk7CisKKyAgZGVzY3JpYmUoJ3Jlc2V0JywgZnVuY3Rp b24gKCkgeworICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgaGlzdG9y eUNvbGxlY3Rpb24ucmVzZXQoKTsKKyAgICB9KTsKKworICAgIGl0KCdkcm9w cyB0aGUgaGlzdG9yeScsIGZ1bmN0aW9uICgpIHsKKyAgICAgIGV4cGVjdCho aXN0b3J5Q29sbGVjdGlvbi5oaXN0b3J5TGlzdCkudG9FcXVhbChbXSk7Cisg ICAgICBleHBlY3QoaGlzdG9yeUNvbGxlY3Rpb24ubGVuZ3RoKCkpLnRvQmUo MCk7CisgICAgfSk7CisKKyAgICBpdCgnY2FsbHMgdGhlIG9uQ2hhbmdlIGZ1 bmN0aW9uJywgZnVuY3Rpb24gKCkgeworICAgICAgZXhwZWN0KG9uQ2hhbmdl U3B5KS50b0hhdmVCZWVuQ2FsbGVkV2l0aChbXSk7CisgICAgfSk7CisgIH0p OworCisgIGRlc2NyaWJlKCdzb3J0JywgZnVuY3Rpb24gKCkgeworICAgIGl0 KCdkb2VzblwndCBzb3J0Jyk7CisgIH0pOworCisgIGRlc2NyaWJlKCd3aGVu IGluc3RhbnRpYXRlZCcsIGZ1bmN0aW9uICgpIHsKKyAgICBkZXNjcmliZSgn ZnJvbSBhIGhpc3RvcnkgbW9kZWwnLCBmdW5jdGlvbiAoKSB7CisgICAgICBp dCgnaGFzIHRoZSBoaXN0b3J5TW9kZWwnLCAoKSA9PiB7CisgICAgICAgIGxl dCBjb250ZW50ID0gaGlzdG9yeUNvbGxlY3Rpb24uaGlzdG9yeUxpc3Q7CisK KyAgICAgICAgZXhwZWN0KGNvbnRlbnQpLnRvRXF1YWwoaGlzdG9yeU1vZGVs KTsKKyAgICAgIH0pOworCisgICAgfSk7CisgIH0pOworfSk7ClwgTm8gbmV3 bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Np b24vamF2YXNjcmlwdC9oaXN0b3J5L3F1ZXJ5X2hpc3RvcnlfZW50cnlfc3Bl Yy5qc3ggYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2hpc3RvcnkvcXVl cnlfaGlzdG9yeV9lbnRyeV9zcGVjLmpzeApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMC4uYzg2YTFjZmMKLS0tIC9kZXYvbnVsbAorKysg Yi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2hpc3RvcnkvcXVlcnlfaGlz dG9yeV9lbnRyeV9zcGVjLmpzeApAQCAtMCwwICsxLDUwIEBACisvLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29s cworLy8KKy8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTcsIFRoZSBwZ0Fk bWluIERldmVsb3BtZW50IFRlYW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVs ZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorLy8KKy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vCisKK2ltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7CisK K2ltcG9ydCBRdWVyeUhpc3RvcnlFbnRyeSBmcm9tICcuLi8uLi8uLi9wZ2Fk bWluL3N0YXRpYy9qc3gvaGlzdG9yeS9xdWVyeV9oaXN0b3J5X2VudHJ5JzsK KworaW1wb3J0IHttb3VudH0gZnJvbSAnZW56eW1lJzsKK2ltcG9ydCBqYXNt aW5lRW56eW1lIGZyb20gJ2phc21pbmUtZW56eW1lJzsKKworZGVzY3JpYmUo J1F1ZXJ5SGlzdG9yeUVudHJ5JywgKCkgPT4geworICBsZXQgaGlzdG9yeVdy YXBwZXI7CisgIGJlZm9yZUVhY2goKCkgPT4geworICAgIGphc21pbmVFbnp5 bWUoKTsKKyAgfSk7CisKKyAgZGVzY3JpYmUoJ2ZvciBhIGZhaWxlZCBxdWVy eScsICgpID0+IHsKKyAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgIGNv bnN0IGhpc3RvcnlFbnRyeSA9IHsKKyAgICAgICAgcXVlcnk6ICdzZWNvbmQg c3FsIHN0YXRlbWVudCcsCisgICAgICAgIHN0YXJ0X3RpbWU6IG5ldyBEYXRl KDIwMTYsIDExLCAxMSwgMSwgMzMsIDUsIDk5KSwKKyAgICAgICAgc3RhdHVz OiBmYWxzZSwKKyAgICAgIH07CisgICAgICBoaXN0b3J5V3JhcHBlciA9IG1v dW50KDxRdWVyeUhpc3RvcnlFbnRyeSBoaXN0b3J5RW50cnk9e2hpc3RvcnlF bnRyeX0vPik7CisgICAgfSk7CisgICAgaXQoJ2Rpc3BsYXlzIGEgcGluayBi YWNrZ3JvdW5kIGNvbG9yJywgKCkgPT4geworICAgICAgZXhwZWN0KGhpc3Rv cnlXcmFwcGVyLmZpbmQoJ2RpdicpLmZpcnN0KCkpLnRvSGF2ZVN0eWxlKCdi YWNrZ3JvdW5kQ29sb3InLCAnI0Y3RDBENScpOworICAgIH0pOworICB9KTsK KworICBkZXNjcmliZSgnZm9yIGEgc3VjY2Vzc2Z1bCBxdWVyeScsICgpID0+ IHsKKyAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgIGNvbnN0IGhpc3Rv cnlFbnRyeSA9IHsKKyAgICAgICAgcXVlcnk6ICdzZWNvbmQgc3FsIHN0YXRl bWVudCcsCisgICAgICAgIHN0YXJ0X3RpbWU6IG5ldyBEYXRlKDIwMTYsIDEx LCAxMSwgMSwgMzMsIDUsIDk5KSwKKyAgICAgICAgc3RhdHVzOiB0cnVlLAor ICAgICAgfTsKKyAgICAgIGhpc3RvcnlXcmFwcGVyID0gbW91bnQoPFF1ZXJ5 SGlzdG9yeUVudHJ5IGhpc3RvcnlFbnRyeT17aGlzdG9yeUVudHJ5fS8+KTsK KyAgICB9KTsKKyAgICBpdCgnZG9lcyBub3QgZGlzcGxheSBhIHBpbmsgYmFj a2dyb3VuZCBjb2xvcicsICgpID0+IHsKKyAgICAgIGV4cGVjdChoaXN0b3J5 V3JhcHBlci5maW5kKCdkaXYnKS5maXJzdCgpKS50b0hhdmVTdHlsZSgnYmFj a2dyb3VuZENvbG9yJywgJyNGRkYnKTsKKyAgICB9KTsKKyAgfSk7Cit9KTsK ZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvaGlzdG9y eS9xdWVyeV9oaXN0b3J5X3NwZWMuanN4IGIvd2ViL3JlZ3Jlc3Npb24vamF2 YXNjcmlwdC9oaXN0b3J5L3F1ZXJ5X2hpc3Rvcnlfc3BlYy5qc3gKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLmUzNjk4OGE4Ci0tLSAv ZGV2L251bGwKKysrIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9oaXN0 b3J5L3F1ZXJ5X2hpc3Rvcnlfc3BlYy5qc3gKQEAgLTAsMCArMSwxMDMgQEAK Ky8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBwZ0FkbWluIDQgLSBQb3N0Z3Jl U1FMIFRvb2xzCisvLworLy8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxNywg VGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorLy8gVGhpcyBzb2Z0d2Fy ZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisv LworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8KKworaW1wb3J0IFJlYWN0IGZyb20gJ3Jl YWN0JzsKK2ltcG9ydCBRdWVyeUhpc3RvcnkgZnJvbSAnLi4vLi4vLi4vcGdh ZG1pbi9zdGF0aWMvanN4L2hpc3RvcnkvcXVlcnlfaGlzdG9yeSc7CitpbXBv cnQgUXVlcnlIaXN0b3J5RW50cnkgZnJvbSAnLi4vLi4vLi4vcGdhZG1pbi9z dGF0aWMvanN4L2hpc3RvcnkvcXVlcnlfaGlzdG9yeV9lbnRyeSc7CitpbXBv cnQgSGlzdG9yeUNvbGxlY3Rpb24gZnJvbSAnLi4vLi4vLi4vcGdhZG1pbi9z dGF0aWMvanMvaGlzdG9yeS9oaXN0b3J5X2NvbGxlY3Rpb24nOworaW1wb3J0 IGphc21pbmVFbnp5bWUgZnJvbSAnamFzbWluZS1lbnp5bWUnOworCitpbXBv cnQge21vdW50LCBzaGFsbG93fSBmcm9tICdlbnp5bWUnOworCitkZXNjcmli ZSgnUXVlcnlIaXN0b3J5JywgKCkgPT4geworICBsZXQgaGlzdG9yeVdyYXBw ZXI7CisgIGJlZm9yZUVhY2goKCkgPT4geworICAgIGphc21pbmVFbnp5bWUo KTsKKyAgICBjb25zdCBoaXN0b3J5Q29sbGVjdGlvbiA9IG5ldyBIaXN0b3J5 Q29sbGVjdGlvbihbXSk7CisgICAgaGlzdG9yeVdyYXBwZXIgPSBzaGFsbG93 KDxRdWVyeUhpc3RvcnkgaGlzdG9yeUNvbGxlY3Rpb249e2hpc3RvcnlDb2xs ZWN0aW9ufS8+KTsKKyAgfSk7CisKKyAgZGVzY3JpYmUoJ29uIGNvbnN0cnVj dGlvbicsICgpID0+IHsKKyAgICBpdCgnaGFzIG5vIGVudHJpZXMnLCAoZG9u ZSkgPT4geworICAgICAgbGV0IGZvdW5kQ2hpbGRyZW4gPSBoaXN0b3J5V3Jh cHBlci5maW5kKFF1ZXJ5SGlzdG9yeUVudHJ5KTsKKyAgICAgIGV4cGVjdChm b3VuZENoaWxkcmVuLmxlbmd0aCkudG9CZSgwKTsKKyAgICAgIGRvbmUoKTsK KyAgICB9KTsKKyAgfSk7CisKKyAgZGVzY3JpYmUoJ3doZW4gaXQgaGFzIGhp c3RvcnknLCAoKSA9PiB7CisgICAgZGVzY3JpYmUoJ3doZW4gdHdvIFNRTCBx dWVyaWVzIHdlcmUgZXhlY3V0ZWQnLCAoKSA9PiB7CisgICAgICBsZXQgZm91 bmRDaGlsZHJlbjsKKworICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAg ICAgIGNvbnN0IGhpc3RvcnlPYmplY3RzID0gWworICAgICAgICAgIHsKKyAg ICAgICAgICAgIHF1ZXJ5OiAnc2Vjb25kIHNxbCBzdGF0ZW1lbnQnLAorICAg ICAgICAgICAgc3RhcnRfdGltZTogbmV3IERhdGUoMjAxNiwgMTEsIDExLCAx LCAzMywgNSwgOTkpLAorICAgICAgICAgICAgc3RhdHVzOiBmYWxzZSwKKyAg ICAgICAgICAgIHJvd19hZmZlY3RlZDogMSwKKyAgICAgICAgICAgIHRvdGFs X3RpbWU6ICcyMzQgbXNlYycsCisgICAgICAgICAgICBtZXNzYWdlOiAnc29t ZSBvdGhlciBtZXNzYWdlJywKKyAgICAgICAgICB9LAorICAgICAgICAgIHsK KyAgICAgICAgICAgIHF1ZXJ5OiAnZmlyc3Qgc3FsIHN0YXRlbWVudCcsCisg ICAgICAgICAgICBzdGFydF90aW1lOiBuZXcgRGF0ZSgyMDE3LCA1LCAzLCAx NCwgMywgMTUsIDE1MCksCisgICAgICAgICAgICBzdGF0dXM6IHRydWUsCisg ICAgICAgICAgICByb3dfYWZmZWN0ZWQ6IDIsCisgICAgICAgICAgICB0b3Rh bF90aW1lOiAnMTQgbXNlYycsCisgICAgICAgICAgICBtZXNzYWdlOiAnYSB2 ZXJ5IGltcG9ydGFudCBtZXNzYWdlJywKKyAgICAgICAgICB9LAorICAgICAg ICBdOworICAgICAgICBjb25zdCBoaXN0b3J5Q29sbGVjdGlvbiA9IG5ldyBI aXN0b3J5Q29sbGVjdGlvbihoaXN0b3J5T2JqZWN0cyk7CisKKyAgICAgICAg aGlzdG9yeVdyYXBwZXIgPSBtb3VudCg8UXVlcnlIaXN0b3J5IGhpc3RvcnlD b2xsZWN0aW9uPXtoaXN0b3J5Q29sbGVjdGlvbn0vPik7CisKKyAgICAgICAg Zm91bmRDaGlsZHJlbiA9IGhpc3RvcnlXcmFwcGVyLmZpbmQoUXVlcnlIaXN0 b3J5RW50cnkpOworICAgICAgfSk7CisKKyAgICAgIGl0KCdoYXMgdHdvIHF1 ZXJ5IGhpc3RvcnkgZW50cmllcycsICgpID0+IHsKKyAgICAgICAgZXhwZWN0 KGZvdW5kQ2hpbGRyZW4ubGVuZ3RoKS50b0JlKDIpOworICAgICAgfSk7CisK KyAgICAgIGl0KCdkaXNwbGF5cyB0aGUgU1FMIG9mIHRoZSBxdWVyaWVzIGlu IG9yZGVyJywgKCkgPT4geworICAgICAgICBleHBlY3QoZm91bmRDaGlsZHJl bi5hdCgwKS50ZXh0KCkpLnRvQ29udGFpbignZmlyc3Qgc3FsIHN0YXRlbWVu dCcpOworICAgICAgICBleHBlY3QoZm91bmRDaGlsZHJlbi5hdCgxKS50ZXh0 KCkpLnRvQ29udGFpbignc2Vjb25kIHNxbCBzdGF0ZW1lbnQnKTsKKyAgICAg IH0pOworCisgICAgICBpdCgnZGlzcGxheXMgdGhlIGZvcm1hdHRlZCB0aW1l c3RhbXAgb2YgdGhlIHF1ZXJpZXMgaW4gY2hyb25vbG9naWNhbCBvcmRlciBi eSBtb3N0IHJlY2VudCBmaXJzdCcsICgpID0+IHsKKyAgICAgICAgZXhwZWN0 KGZvdW5kQ2hpbGRyZW4uYXQoMCkudGV4dCgpKS50b0NvbnRhaW4oJ0p1biAz IDIwMTcg4oCTIDE0OjAzOjE1Jyk7CisgICAgICAgIGV4cGVjdChmb3VuZENo aWxkcmVuLmF0KDEpLnRleHQoKSkudG9Db250YWluKCdEZWMgMTEgMjAxNiDi gJMgMDE6MzM6MDUnKTsKKyAgICAgIH0pOworCisgICAgICBpdCgnZGlzcGxh eXMgdGhlIG51bWJlciBvZiByb3dzIGFmZmVjdGVkJywgKCkgPT4geworICAg ICAgICBleHBlY3QoZm91bmRDaGlsZHJlbi5hdCgxKS50ZXh0KCkpLnRvQ29u dGFpbignMSByb3dzIGFmZmVjdGVkJyk7CisgICAgICAgIGV4cGVjdChmb3Vu ZENoaWxkcmVuLmF0KDApLnRleHQoKSkudG9Db250YWluKCcyIHJvd3MgYWZm ZWN0ZWQnKTsKKyAgICAgIH0pOworCisgICAgICBpdCgnZGlzcGxheXMgdGhl IHRvdGFsIHRpbWUnLCAoKSA9PiB7CisgICAgICAgIGV4cGVjdChmb3VuZENo aWxkcmVuLmF0KDApLnRleHQoKSkudG9Db250YWluKCd0b3RhbCB0aW1lOiAx NCBtc2VjJyk7CisgICAgICAgIGV4cGVjdChmb3VuZENoaWxkcmVuLmF0KDEp LnRleHQoKSkudG9Db250YWluKCd0b3RhbCB0aW1lOiAyMzQgbXNlYycpOwor ICAgICAgfSk7CisKKyAgICAgIGl0KCdkaXNwbGF5cyB0aGUgdHJ1bmNhdGVk IG1lc3NhZ2UnLCAoKSA9PiB7CisgICAgICAgIGV4cGVjdChmb3VuZENoaWxk cmVuLmF0KDApLnRleHQoKSkudG9Db250YWluKCdhIHZlcnkgaW1wb3J0YW50 IG1lc3NhZ2UnKTsKKyAgICAgICAgZXhwZWN0KGZvdW5kQ2hpbGRyZW4uYXQo MSkudGV4dCgpKS50b0NvbnRhaW4oJ3NvbWUgb3RoZXIgbWVzc2FnZScpOwor ICAgICAgfSk7CisKKyAgICAgIGRlc2NyaWJlKCd3aGVuIHRoZXJlIGFyZSBv bmUgZmFpbGluZyBhbmQgb25lIHN1Y2Nlc3NmdWwgcXVlcnkgZWFjaCcsICgp ID0+IHsKKyAgICAgICAgaXQoJ2FkZHMgYSB3aGl0ZSBiYWNrZ3JvdW5kIGNv bG9yIGZvciB0aGUgc3VjY2Vzc2Z1bCBxdWVyeScsICgpID0+IHsKKyAgICAg ICAgICBleHBlY3QoZm91bmRDaGlsZHJlbi5hdCgwKS5maW5kKCdkaXYnKS5m aXJzdCgpKS50b0hhdmVTdHlsZSgnYmFja2dyb3VuZENvbG9yJywgJyNGRkYn KTsKKyAgICAgICAgfSk7CisgICAgICAgIGl0KCdhZGRzIGEgcmVkIGJhY2tn cm91bmQgY29sb3IgZm9yIHRoZSBmYWlsZWQgcXVlcnknLCAoKSA9PiB7Cisg ICAgICAgICAgZXhwZWN0KGZvdW5kQ2hpbGRyZW4uYXQoMSkuZmluZCgnZGl2 JykuZmlyc3QoKSkudG9IYXZlU3R5bGUoJ2JhY2tncm91bmRDb2xvcicsICcj RjdEMEQ1Jyk7CisgICAgICAgIH0pOworICAgICAgfSk7CisgICAgfSk7Cisg IH0pOworfSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t Z2l0IGEvd2ViL3JlZ3Jlc3Npb24vcHl0aG9uX3Rlc3RfdXRpbHMvdGVzdF91 dGlscy5weSBiL3dlYi9yZWdyZXNzaW9uL3B5dGhvbl90ZXN0X3V0aWxzL3Rl c3RfdXRpbHMucHkKaW5kZXggMmI3YzY5NTQuLjIwMjgwMmEzIDEwMDY0NAot LS0gYS93ZWIvcmVncmVzc2lvbi9weXRob25fdGVzdF91dGlscy90ZXN0X3V0 aWxzLnB5CisrKyBiL3dlYi9yZWdyZXNzaW9uL3B5dGhvbl90ZXN0X3V0aWxz L3Rlc3RfdXRpbHMucHkKQEAgLTE3Miw2ICsxNzIsNyBAQCBkZWYgY3JlYXRl X3RhYmxlKHNlcnZlciwgZGJfbmFtZSwgdGFibGVfbmFtZSk6CiAgICAgZXhj ZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4Yyhm aWxlPXN5cy5zdGRlcnIpCiAKKwogZGVmIGNyZWF0ZV9jb25zdHJhaW50KAog ICAgICAgICBzZXJ2ZXIsIGRiX25hbWUsIHRhYmxlX25hbWUsCiAgICAgICAg IGNvbnN0cmFpbnRfdHlwZT0idW5pcXVlIiwgY29uc3RyYWludF9uYW1lPSJ0 ZXN0X3VuaXF1ZSIpOgpAQCAtMTk2LDYgKzE5Nyw3IEBAIGRlZiBjcmVhdGVf Y29uc3RyYWludCgKICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICB0 cmFjZWJhY2sucHJpbnRfZXhjKGZpbGU9c3lzLnN0ZGVycikKIAorCiBkZWYg Y3JlYXRlX2RlYnVnX2Z1bmN0aW9uKHNlcnZlciwgZGJfbmFtZSwgZnVuY3Rp b25fbmFtZT0idGVzdF9mdW5jIik6CiAgICAgdHJ5OgogICAgICAgICBjb25u ZWN0aW9uID0gZ2V0X2RiX2Nvbm5lY3Rpb24oZGJfbmFtZSwKZGlmZiAtLWdp dCBhL3dlYi93ZWJwYWNrLmNvbmZpZy5qcyBiL3dlYi93ZWJwYWNrLmNvbmZp Zy5qcwppbmRleCA5MTU4NjU5Mi4uZmM2ZDI5ZTAgMTAwNjQ0Ci0tLSBhL3dl Yi93ZWJwYWNrLmNvbmZpZy5qcworKysgYi93ZWIvd2VicGFjay5jb25maWcu anMKQEAgLTEsMTggKzEsMjEgQEAKIC8qIGVzbGludC1lbnYgbm9kZSAqLwog CiBtb2R1bGUuZXhwb3J0cyA9IHsKLSAgY29udGV4dDogX19kaXJuYW1lICsg Jy9wZ2FkbWluL3N0YXRpYy9qc3gnLAotICBlbnRyeTogJy4vY29tcG9uZW50 cy5qc3gnLAorICBjb250ZXh0OiBfX2Rpcm5hbWUgKyAnL3BnYWRtaW4vc3Rh dGljJywKKyAgZW50cnk6IHsKKyAgICByZWFjdENvbXBvbmVudHM6ICcuL2pz eC9jb21wb25lbnRzLmpzeCcsCisgICAgaGlzdG9yeTogJy4vanMvaGlzdG9y eS9pbmRleC5qcycsCisgIH0sCiAgIG91dHB1dDogewogICAgIGxpYnJhcnlU YXJnZXQ6ICdhbWQnLAogICAgIHBhdGg6IF9fZGlybmFtZSArICcvcGdhZG1p bi9zdGF0aWMvanMvZ2VuZXJhdGVkJywKLSAgICBmaWxlbmFtZTogJ3JlYWN0 Q29tcG9uZW50cy5qcycsCisgICAgZmlsZW5hbWU6ICdbbmFtZV0uanMnLAog ICB9LAogCiAgIG1vZHVsZTogewogICAgIHJ1bGVzOiBbewogICAgICAgdGVz dDogL1wuanN4PyQvLAotICAgICAgZXhjbHVkZTogL25vZGVfbW9kdWxlcy8s CisgICAgICBleGNsdWRlOiBbL25vZGVfbW9kdWxlcy8sIC92ZW5kb3IvXSwK ICAgICAgIHVzZTogewogICAgICAgICBsb2FkZXI6ICdiYWJlbC1sb2FkZXIn LAogICAgICAgICBvcHRpb25zOiB7CmRpZmYgLS1naXQgYS93ZWIvd2VicGFj ay50ZXN0LmNvbmZpZy5qcyBiL3dlYi93ZWJwYWNrLnRlc3QuY29uZmlnLmpz CmluZGV4IDQ5YmVmMDY5Li4yZDg3YWQwNCAxMDA2NDQKLS0tIGEvd2ViL3dl YnBhY2sudGVzdC5jb25maWcuanMKKysrIGIvd2ViL3dlYnBhY2sudGVzdC5j b25maWcuanMKQEAgLTIxLDcgKzIxLDcgQEAgbW9kdWxlLmV4cG9ydHMgPSB7 CiAgICAgICAgIHVzZTogewogICAgICAgICAgIGxvYWRlcjogJ2JhYmVsLWxv YWRlcicsCiAgICAgICAgICAgb3B0aW9uczogewotICAgICAgICAgICAgcHJl c2V0czogWydlczIwMTUnXSwKKyAgICAgICAgICAgIHByZXNldHM6IFsnZXMy MDE1JywgJ3JlYWN0J10sCiAgICAgICAgICAgfSwKICAgICAgICAgfSwKICAg ICAgIH0sCkBAIC01MCw2ICs1MCw3IEBAIG1vZHVsZS5leHBvcnRzID0gewog ICB9LAogCiAgIHJlc29sdmU6IHsKKyAgICBleHRlbnNpb25zOiBbJy5qcycs ICcuanN4J10sCiAgICAgYWxpYXM6IHsKICAgICAgICdhbGVydGlmeSc6IHNv dXJjZXNEaXIgKyAnL3ZlbmRvci9hbGVydGlmeWpzL2FsZXJ0aWZ5JywKICAg ICAgICdqcXVlcnknOiBzb3VyY2VzRGlyICsgJy92ZW5kb3IvanF1ZXJ5L2px dWVyeS0xLjExLjInLApAQCAtNjIsNCArNjMsMTEgQEAgbW9kdWxlLmV4cG9y dHMgPSB7CiAgICAgICAnc2xpY2tncmlkLnJvd3NlbGVjdGlvbm1vZGVsJzog c291cmNlc0RpciArICcvdmVuZG9yL3NsaWNrZ3JpZC9wbHVnaW5zL3NsaWNr LnJvd3NlbGVjdGlvbm1vZGVsJywKICAgICB9LAogICB9LAorICBleHRlcm5h bHM6IHsKKyAgICAncmVhY3QvYWRkb25zJzogdHJ1ZSwKKyAgICAncmVhY3Qv bGliL1JlYWN0Q29udGV4dCc6IHRydWUsCisgICAgJ3JlYWN0L2xpYi9FeGVj dXRpb25FbnZpcm9ubWVudCc6IHRydWUsCisgICAgJ3JlYWN0LWRvbS90ZXN0 LXV0aWxzJzogdHJ1ZSwKKyAgICAncmVhY3QtdGVzdC1yZW5kZXJlci9zaGFs bG93JzogdHJ1ZSwKKyAgfSwKIH07ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg ZmlsZQo= --001a1143581409af00055045d62d Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgadmin-hackers --001a1143581409af00055045d62d--