Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1boSDy-0004Ac-6x for pgadmin-hackers@arkaria.postgresql.org; Mon, 26 Sep 2016 09:29:22 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1boSDx-0000xd-4z for pgadmin-hackers@arkaria.postgresql.org; Mon, 26 Sep 2016 09:29:21 +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 1boSDr-0000xW-W7 for pgadmin-hackers@postgresql.org; Mon, 26 Sep 2016 09:29:16 +0000 Received: from mail-io0-x229.google.com ([2607:f8b0:4001:c06::229]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1boSDp-0004YS-1G for pgadmin-hackers@postgresql.org; Mon, 26 Sep 2016 09:29:14 +0000 Received: by mail-io0-x229.google.com with SMTP id m186so175759674ioa.2 for ; Mon, 26 Sep 2016 02:29:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=ZRp9f4pWx6QJ1VYVPwvdzliCRfuJ/Razx+0rSLSEDKk=; b=nploxRKwpub1WyC7U9ziizmlId34zxliCAGzx0O/0MLMdtB+HCdxjcmCKQJG5YzgVz sgls59dTamBm+8yBsCACJmBdYrybBLmJZfuffEi7Sxrsb75fIMPSTxLJGjp0ImxmbRBd ccWSBO1dbyZrtzmxnRRTPIGZMeDzwiQzjq8qb0bJKYPj49e0J2c4HCz6ldHQVkXgDR4M PmZSiEcqf8yW+qMQGIU0xKJluo8rHEVuHtlyTe9XIDUjQYX+062W4RuzY3BubtdidNVr tp5xtWjddkDUSoOYWQ2igjS+Nq9PwZ3xkfA1dIbe63WjdFB7hpUGb7NYzOwQOst4nWZK PD+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=ZRp9f4pWx6QJ1VYVPwvdzliCRfuJ/Razx+0rSLSEDKk=; b=ldFEV3Nj2wQ0MtWWyA08dWKGg9VSqacxHQEXCAizABJjb5kEMHfb78R9ecKj00FXqf ipIZnW5mwxulb0/RGjCTvPt7djcxkOelkTdzmT33xIDtfbXVeq4vdrGAq8gIaIch7CEX 2bfuy4YM87HXocu9UA+IWgmLnE9pm1JUL3t1AjzzrYJJMEbxNzd4Jp2Qj7bkavtvOAEE psCccLE46g3CSg+9jrkVgbujoIM1uT0MjBzQ/b6XQt1Y4miUrIyBTwHLoy2hy48Z3p5R D/J3th7kdjwuYc7invPZiNDrlli01Faexrkct/yHR6Tg87TZvTTEVLZAFHcplItosZuu CbUg== X-Gm-Message-State: AE9vXwNKr2xGqohQ1Gh/M6tBeD0FT20uzSWVPMzy/nUmHPttH0jz5ohXMCazyWvSLNdvmo5J7InHs+T/nIooQcbs X-Received: by 10.107.139.214 with SMTP id n205mr24550667iod.40.1474882152063; Mon, 26 Sep 2016 02:29:12 -0700 (PDT) MIME-Version: 1.0 Received: by 10.107.50.212 with HTTP; Mon, 26 Sep 2016 02:28:51 -0700 (PDT) In-Reply-To: References: From: Ashesh Vashi Date: Mon, 26 Sep 2016 14:58:51 +0530 Message-ID: Subject: Re: PATCH: pgAgent support To: Dave Page Cc: pgadmin-hackers Content-Type: multipart/mixed; boundary=94eb2c05b602c2beec053d65c26e 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 --94eb2c05b602c2beec053d65c26e Content-Type: multipart/alternative; boundary=94eb2c05b602c2bee3053d65c26c --94eb2c05b602c2bee3053d65c26c Content-Type: text/plain; charset=UTF-8 On Mon, Sep 26, 2016 at 2:36 PM, Dave Page wrote: > Hi > > I've applied the misc changes patch, but it looks like you forgot the > --binary option for the pgAgent patch. Can you recreate it please? > Oh my bad, please find the updated patch. -- Thanks & Regards, Ashesh Vashi EnterpriseDB INDIA: Enterprise PostgreSQL Company *http://www.linkedin.com/in/asheshvashi* > > Thanks. > > On Fri, Sep 23, 2016 at 9:34 PM, Ashesh Vashi < > ashesh.vashi@enterprisedb.com> wrote: > >> Hi Dave, >> >> >> On Thu, Sep 22, 2016 at 8:27 PM, Dave Page wrote: >> >>> Thanks. From the pgAgent patch: >>> >>> - The date/time format is different again. Should be locale or ISO >>> (consistent across the app) >>> >> Using ISO now. >> >>> >>> - I think we need to add hints under the less obvious options - e.g. >>> Job class and host agent >>> >> I added few string. >> Will need your feedback on that. >> >>> >>> - On the job step subnode control, lets move the Script to it's own >>> tab (called Code). We should alter the label based on the Kind option >>> - either "SQL query" or "Script" >>> >> Done >> >>> >>> - Why can't we use the Date/time picker for Exceptions? I assume we >>> just need to either disable Date or Time selection? >>> >> Done. >> >> I was avoiding to show date time picker for multiple reasons: >> 1. It needed a special effort to show datetime picker in the backgrid >> cell. >> 2. The datetime picker did not fit in the subnode control. >> >> A special DatetimePickerCell was needed to be created the cell with >> datetime picker. >> And, I had to specify the min-height in the exceptions tab as a hack. >> >>> >>> - The SQL tab doesn't use the available space. See screenshot. >>> >> Fixed. >> >> This was a general issue for the properties dialog having more than 550px. >> We have hardcoded the height to 500px of CodeMirror in the SQL tab. >> >>> >>> - The SQL should have blank lines between sections, e.g. before -- >>> Steps and -- Schedules >>> >> Done. >> >> Also - fixed an issue of setting the helpMessage in SwitchControl. >> >> Again - attaching two patches. >> 1. Misc changes >> - Setting the CodeMirror height when panel is resized, which you had >> mentioned. >> - Added a new CellEditor (DatetimePickerEditor) for datetime picker. >> 2. pgAgent support (updated) >> >> -- >> >> Thanks & Regards, >> >> Ashesh Vashi >> EnterpriseDB INDIA: Enterprise PostgreSQL Company >> >> >> >> *http://www.linkedin.com/in/asheshvashi* >> >> >> > > > -- > Dave Page > Blog: http://pgsnake.blogspot.com > Twitter: @pgsnake > > EnterpriseDB UK: http://www.enterprisedb.com > The Enterprise PostgreSQL Company > --94eb2c05b602c2bee3053d65c26c Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
On M= on, Sep 26, 2016 at 2:36 PM, Dave Page <dpage@pgadmin.org> w= rote:
Hi

I've applied the misc changes patch, but it look= s like you forgot the --binary option for the pgAgent patch. Can you recrea= te it please?

= Oh my bad, please find the updated patch.

--

Thanks & Reg= ards,

Ashesh Vashi
EnterpriseDB INDIA:=C2=A0Enterprise Pos= tgreSQL Company


<= /div>

Thanks.

On Fri, Sep 23, 2016 at 9:34 PM, Ashesh Vashi <ashesh.vash= i@enterprisedb.com> wrote:

Hi Dave,


On Thu, Sep 22, 2016 at 8:27 PM, Dave Page <d= page@pgadmin.org> wrote:
Thanks. From the pgAgent patch:

- The date/time format is different again. Should be locale or ISO
(consistent across the app)
Using ISO now.

- I think we need to add hints under the less obvious options - e.g.
Job class and host agent
I added few string.
Will need your feedback on that.=C2=A0

- On the job step subnode control, lets move the Script to it's own
tab (called Code). We should alter the label based on the Kind option
- either "SQL query" or "Script"
Done=C2=A0

- Why can't we use the Date/time picker for Exceptions? I assume we
just need to either disable Date or Time selection?
=
Done.
=C2=A0
I was avoiding to show date time pick= er for multiple reasons:
1. It needed a special effort to show da= tetime picker in the backgrid cell.
2. The datetime picker did no= t fit in the subnode control.

A special DatetimePi= ckerCell was needed to be created the cell with datetime picker.
= And, I had to specify the min-height in the exceptions tab as a hack.=C2=A0=

- The SQL tab doesn't use the available space. See screenshot.
Fixed.
=C2=A0
This was a general is= sue for the properties dialog having more than 550px.
We have har= dcoded the height to 500px of CodeMirror in the SQL tab.=C2=A0
<= blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-l= eft:1px solid rgb(204,204,204);padding-left:1ex">
- The SQL should have blank lines between sections, e.g. before --
Steps and -- Schedules
Done.=C2=A0
Also - fixed an issue of setting the helpMessage in SwitchCont= rol.

Again - attaching two patches.
1. M= isc changes
- Setting the CodeMirror height when panel is resized= , which you had mentioned.
- Added a new CellEditor (Datetime= PickerEditor) for datetime picker.
2. pgAgent support (updated)

--

Thanks & Re= gards,

Ashesh Vashi
EnterpriseDB INDIA:=C2=A0Enterprise Po= stgreSQL Company





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

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

--94eb2c05b602c2bee3053d65c26c-- --94eb2c05b602c2beec053d65c26e Content-Type: application/octet-stream; name="pgagent_v5.patch" Content-Disposition: attachment; filename="pgagent_v5.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_itjuqhan0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL3BnQWdlbnQvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L19faW5pdF9f LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5ZWFk N2QKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L19faW5pdF9fLnB5CkBAIC0w LDAgKzEsNTI3IEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor IworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHly aWdodCAoQykgMjAxMyAtIDIwMTYsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50 IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUg UG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworCisiIiJJbXBsZW1lbnRzIHRoZSBwZ0FnZW50IEpvYnMgTm9k ZSIiIgorZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHdyYXBzCitpbXBvcnQganNv bgorCitmcm9tIGZsYXNrIGltcG9ydCByZW5kZXJfdGVtcGxhdGUsIG1ha2Vf cmVzcG9uc2UsIHJlcXVlc3QsIGpzb25pZnkKK2Zyb20gZmxhc2tfYmFiZWwg aW1wb3J0IGdldHRleHQgYXMgXworCitmcm9tIGNvbmZpZyBpbXBvcnQgUEdf REVGQVVMVF9EUklWRVIKKworZnJvbSBwZ2FkbWluLmJyb3dzZXIuY29sbGVj dGlvbiBpbXBvcnQgQ29sbGVjdGlvbk5vZGVNb2R1bGUKK2Zyb20gcGdhZG1p bi5icm93c2VyLnV0aWxzIGltcG9ydCBQR0NoaWxkTm9kZVZpZXcKK2Zyb20g cGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMgaW1wb3J0IHNlcnZlcnMK K2Zyb20gcGdhZG1pbi51dGlscy5hamF4IGltcG9ydCBtYWtlX2pzb25fcmVz cG9uc2UsIGludGVybmFsX3NlcnZlcl9lcnJvciwgXAorICAgIG1ha2VfcmVz cG9uc2UgYXMgYWpheF9yZXNwb25zZSwgZ29uZSwgc3VjY2Vzc19yZXR1cm4K K2Zyb20gcGdhZG1pbi51dGlscy5kcml2ZXIgaW1wb3J0IGdldF9kcml2ZXIK KworCitjbGFzcyBKb2JNb2R1bGUoQ29sbGVjdGlvbk5vZGVNb2R1bGUpOgor ICAgIE5PREVfVFlQRSA9ICdwZ2Ffam9iJworICAgIENPTExFQ1RJT05fTEFC RUwgPSBfKCJwZ0FnZW50IEpvYnMiKQorCisgICAgZGVmIGdldF9ub2Rlcyhz ZWxmLCBnaWQsIHNpZCk6CisgICAgICAgICIiIgorICAgICAgICBHZW5lcmF0 ZSB0aGUgY29sbGVjdGlvbiBub2RlCisgICAgICAgICIiIgorICAgICAgICBp ZiBzZWxmLnNob3dfbm9kZToKKyAgICAgICAgICAgIHlpZWxkIHNlbGYuZ2Vu ZXJhdGVfYnJvd3Nlcl9jb2xsZWN0aW9uX25vZGUoc2lkKQorCisgICAgQHBy b3BlcnR5CisgICAgZGVmIHNjcmlwdF9sb2FkKHNlbGYpOgorICAgICAgICAi IiIKKyAgICAgICAgTG9hZCB0aGUgbW9kdWxlIHNjcmlwdCBmb3Igc2VydmVy LCB3aGVuIGFueSBvZiB0aGUgc2VydmVyLWdyb3VwIG5vZGUgaXMKKyAgICAg ICAgaW5pdGlhbGl6ZWQuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4g c2VydmVycy5TZXJ2ZXJNb2R1bGUuTk9ERV9UWVBFCisKKyAgICBkZWYgQmFj a2VuZFN1cHBvcnRlZChzZWxmLCBtYW5hZ2VyLCAqKmt3YXJncyk6CisgICAg ICAgIGlmIGhhc2F0dHIoc2VsZiwgJ3Nob3dfbm9kZScpOgorICAgICAgICAg ICAgaWYgbm90IHNlbGYuc2hvd19ub2RlOgorICAgICAgICAgICAgICAgIHJl dHVybiBGYWxzZQorCisgICAgICAgIGNvbm4gPSBtYW5hZ2VyLmNvbm5lY3Rp b24oKQorCisgICAgICAgIHN0YXR1cywgcmVzID0gY29ubi5leGVjdXRlX3Nj YWxhcigiIiIKK1NFTEVDVAorICAgIGhhc190YWJsZV9wcml2aWxlZ2UoJ3Bn YWdlbnQucGdhX2pvYicsICdJTlNFUlQsIFNFTEVDVCwgVVBEQVRFJykgaGFz X3ByaXZpbGVkZ2UKK1dIRVJFIEVYSVNUUygKKyAgICBTRUxFQ1QgaGFzX3Nj aGVtYV9wcml2aWxlZ2UoJ3BnYWdlbnQnLCAnVVNBR0UnKQorICAgIFdIRVJF IEVYSVNUUygKKyAgICAgICAgU0VMRUNUIGNsLm9pZCBGUk9NIHBnX2NsYXNz IGNsCisgICAgICAgIExFRlQgSk9JTiBwZ19uYW1lc3BhY2UgbnMgT04gbnMu b2lkPXJlbG5hbWVzcGFjZQorICAgICAgICBXSEVSRSByZWxuYW1lPSdwZ2Ff am9iJyBBTkQgbnNwbmFtZT0ncGdhZ2VudCcKKyAgICApCispCisiIiIpCisg ICAgICAgIGlmIHN0YXR1cyBhbmQgcmVzOgorICAgICAgICAgICAgc3RhdHVz LCByZXMgPSBjb25uLmV4ZWN1dGVfZGljdCgiIiIKK1NFTEVDVCBFWElTVFMo CisgICAgICAgIFNFTEVDVCAxIEZST00gaW5mb3JtYXRpb25fc2NoZW1hLmNv bHVtbnMKKyAgICAgICAgV0hFUkUKKyAgICAgICAgICAgIHRhYmxlX3NjaGVt YT0ncGdhZ2VudCcgQU5EIHRhYmxlX25hbWU9J3BnYV9qb2JzdGVwJyBBTkQK KyAgICAgICAgICAgIGNvbHVtbl9uYW1lPSdqc3Rjb25uc3RyJworICAgICkg aGFzX2Nvbm5zdHIiIiIpCisKKyAgICAgICAgICAgIG1hbmFnZXIuZGJfaW5m b1sncGdBZ2VudCddID0gcmVzWydyb3dzJ11bMF0KKyAgICAgICAgICAgIHJl dHVybiBUcnVlCisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgQHByb3Bl cnR5CisgICAgZGVmIGNzc3NuaXBwZXRzKHNlbGYpOgorICAgICAgICAiIiIK KyAgICAgICAgUmV0dXJucyBhIHNuaXBwZXQgb2YgY3NzIHRvIGluY2x1ZGUg aW4gdGhlIHBhZ2UKKyAgICAgICAgIiIiCisgICAgICAgIHNuaXBwZXRzID0g WworICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAg ICAgICJicm93c2VyL2Nzcy9jb2xsZWN0aW9uLmNzcyIsCisgICAgICAgICAg ICAgICAgbm9kZV90eXBlPXNlbGYubm9kZV90eXBlLAorICAgICAgICAgICAg ICAgIF89XworICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIHJlbmRlcl90 ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAicGdhX2pvYi9jc3MvcGdhX2pv Yi5jc3MiLAorICAgICAgICAgICAgICAgIG5vZGVfdHlwZT1zZWxmLm5vZGVf dHlwZSwKKyAgICAgICAgICAgICAgICBfPV8KKyAgICAgICAgICAgICkKKyAg ICAgICAgXQorCisgICAgICAgIGZvciBzdWJtb2R1bGUgaW4gc2VsZi5zdWJt b2R1bGVzOgorICAgICAgICAgICAgc25pcHBldHMuZXh0ZW5kKHN1Ym1vZHVs ZS5jc3NzbmlwcGV0cykKKworICAgICAgICByZXR1cm4gc25pcHBldHMKKwor CitibHVlcHJpbnQgPSBKb2JNb2R1bGUoX19uYW1lX18pCisKKworY2xhc3Mg Sm9iVmlldyhQR0NoaWxkTm9kZVZpZXcpOgorICAgIG5vZGVfdHlwZSA9IGJs dWVwcmludC5ub2RlX3R5cGUKKworICAgIHBhcmVudF9pZHMgPSBbCisgICAg ICAgIHsndHlwZSc6ICdpbnQnLCAnaWQnOiAnZ2lkJ30sCisgICAgICAgIHsn dHlwZSc6ICdpbnQnLCAnaWQnOiAnc2lkJ30KKyAgICBdCisgICAgaWRzID0g WworICAgICAgICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ2ppZCd9CisgICAg XQorCisgICAgb3BlcmF0aW9ucyA9IGRpY3QoeworICAgICAgICAnb2JqJzog WworICAgICAgICAgICAgeydnZXQnOiAncHJvcGVydGllcycsICdkZWxldGUn OiAnZGVsZXRlJywgJ3B1dCc6ICd1cGRhdGUnfSwKKyAgICAgICAgICAgIHsn Z2V0JzogJ3Byb3BlcnRpZXMnLCAncG9zdCc6ICdjcmVhdGUnfQorICAgICAg ICBdLAorICAgICAgICAnbm9kZXMnOiBbeydnZXQnOiAnbm9kZXMnfSwgeydn ZXQnOiAnbm9kZXMnfV0sCisgICAgICAgICdzcWwnOiBbeydnZXQnOiAnc3Fs J31dLAorICAgICAgICAnbXNxbCc6IFt7J2dldCc6ICdtc3FsJ30sIHsnZ2V0 JzogJ21zcWwnfV0sCisgICAgICAgICdydW5fbm93JzogW3sncG9zdCc6ICdy dW5fbm93J31dLAorICAgICAgICAnY2xhc3Nlcyc6IFt7fSwgeydnZXQnOiAn am9iX2NsYXNzZXMnfV0sCisgICAgICAgICdjaGlsZHJlbic6IFt7J2dldCc6 ICdjaGlsZHJlbid9XSwKKyAgICAgICAgJ3N0YXRzJzogW3snZ2V0JzogJ3N0 YXRpc3RpY3MnfV0sCisgICAgICAgICdtb2R1bGUuanMnOiBbe30sIHt9LCB7 J2dldCc6ICdtb2R1bGVfanMnfV0KKyAgICB9KQorCisgICAgZGVmIGNoZWNr X3ByZWNvbmRpdGlvbihmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMg ZnVuY3Rpb24gd2lsbCBiZWhhdmUgYXMgYSBkZWNvcmF0b3Igd2hpY2ggd2ls bCBjaGVja3MKKyAgICAgICAgZGF0YWJhc2UgY29ubmVjdGlvbiBiZWZvcmUg cnVubmluZyB2aWV3LCBpdCB3aWxsIGFsc28gYXR0YWNoZXMKKyAgICAgICAg bWFuYWdlcixjb25uICYgdGVtcGxhdGVfcGF0aCBwcm9wZXJ0aWVzIHRvIHNl bGYKKyAgICAgICAgIiIiCisKKyAgICAgICAgQHdyYXBzKGYpCisgICAgICAg IGRlZiB3cmFwKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisKKyAgICAgICAg ICAgIHNlbGYubWFuYWdlciA9IGdldF9kcml2ZXIoUEdfREVGQVVMVF9EUklW RVIpLmNvbm5lY3Rpb25fbWFuYWdlcihrd2FyZ3NbJ3NpZCddKQorICAgICAg ICAgICAgc2VsZi5jb25uID0gc2VsZi5tYW5hZ2VyLmNvbm5lY3Rpb24oKQor CisgICAgICAgICAgICAjIFNldCB0aGUgdGVtcGxhdGUgcGF0aCBmb3IgdGhl IHNxbCBzY3JpcHRzLgorICAgICAgICAgICAgc2VsZi50ZW1wbGF0ZV9wYXRo ID0gJ3BnYV9qb2Ivc3FsL3ByZTMuNCcKKworICAgICAgICAgICAgaWYgbm90 ICgncGdBZ2VudCcgaW4gc2VsZi5tYW5hZ2VyLmRiX2luZm8pOgorICAgICAg ICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGlj dCgiIiIKK1NFTEVDVCBFWElTVFMoCisgICAgICAgIFNFTEVDVCAxIEZST00g aW5mb3JtYXRpb25fc2NoZW1hLmNvbHVtbnMKKyAgICAgICAgV0hFUkUKKyAg ICAgICAgICAgIHRhYmxlX3NjaGVtYT0ncGdhZ2VudCcgQU5EIHRhYmxlX25h bWU9J3BnYV9qb2JzdGVwJyBBTkQKKyAgICAgICAgICAgIGNvbHVtbl9uYW1l PSdqc3Rjb25uc3RyJworICAgICkgaGFzX2Nvbm5zdHIiIiIpCisKKyAgICAg ICAgICAgICAgICBzZWxmLm1hbmFnZXIuZGJfaW5mb1sncGdBZ2VudCddID0g cmVzWydyb3dzJ11bMF0KKworICAgICAgICAgICAgcmV0dXJuIGYoc2VsZiwg KmFyZ3MsICoqa3dhcmdzKQorICAgICAgICByZXR1cm4gd3JhcAorCisgICAg QGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBub2RlcyhzZWxmLCBnaWQs IHNpZCwgamlkPU5vbmUpOgorICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxh dGUoCisgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRo LCAnbm9kZXMuc3FsJ10pLAorICAgICAgICAgICAgamlkPWppZCwgY29ubj1z ZWxmLmNvbm4KKyAgICAgICAgKQorICAgICAgICBzdGF0dXMsIHJzZXQgPSBz ZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKworICAgICAgICBpZiBub3Qg c3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9l cnJvcihlcnJvcm1zZz1yc2V0KQorCisgICAgICAgIGlmIGppZCBpcyBub3Qg Tm9uZToKKyAgICAgICAgICAgIGlmIGxlbihyc2V0Wydyb3dzJ10pICE9IDE6 CisgICAgICAgICAgICAgICAgcmV0dXJuIGdvbmUoCisgICAgICAgICAgICAg ICAgICAgIGVycm9ybXNnPV8oCisgICAgICAgICAgICAgICAgICAgICAgICAi Q291bGQgbm90IGZpbmQgdGhlIHBnQWdlbnQgam9iIG9uIHRoZSBzZXJ2ZXIu IgorICAgICAgICAgICAgICAgICAgICAgICAgKSkKKyAgICAgICAgICAgIHJl dHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgZGF0 YT1zZWxmLmJsdWVwcmludC5nZW5lcmF0ZV9icm93c2VyX25vZGUoCisgICAg ICAgICAgICAgICAgICAgIHJzZXRbJ3Jvd3MnXVswXVsnam9iaWQnXSwKKyAg ICAgICAgICAgICAgICAgICAgc2lkLAorICAgICAgICAgICAgICAgICAgICBy c2V0Wydyb3dzJ11bMF1bJ2pvYm5hbWUnXSwKKyAgICAgICAgICAgICAgICAg ICAgImljb24tcGdhX2pvYiIgaWYgcnNldFsncm93cyddWzBdWydqb2JlbmFi bGVkJ10gZWxzZQorICAgICAgICAgICAgICAgICAgICAiaWNvbi1wZ2Ffam9i LWRpc2FibGVkIgorICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAg ICAgc3RhdHVzPTIwMAorICAgICAgICAgICAgKQorCisgICAgICAgIHJlcyA9 IFtdCisgICAgICAgIGZvciByb3cgaW4gcnNldFsncm93cyddOgorICAgICAg ICAgICAgcmVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLmJsdWVw cmludC5nZW5lcmF0ZV9icm93c2VyX25vZGUoCisgICAgICAgICAgICAgICAg ICAgIHJvd1snam9iaWQnXSwKKyAgICAgICAgICAgICAgICAgICAgc2lkLAor ICAgICAgICAgICAgICAgICAgICByb3dbJ2pvYm5hbWUnXSwKKyAgICAgICAg ICAgICAgICAgICAgImljb24tcGdhX2pvYiIgaWYgcm93Wydqb2JlbmFibGVk J10gZWxzZQorICAgICAgICAgICAgICAgICAgICAiaWNvbi1wZ2Ffam9iLWRp c2FibGVkIgorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKwor ICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAg ICAgZGF0YT1yZXMsCisgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAg ICkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgcHJvcGVy dGllcyhzZWxmLCBnaWQsIHNpZCwgamlkPU5vbmUpOgorICAgICAgICBTUUwg PSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAiLyIuam9pbihbc2Vs Zi50ZW1wbGF0ZV9wYXRoLCAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAg ICAgICBqaWQ9amlkLCBjb25uPXNlbGYuY29ubgorICAgICAgICApCisgICAg ICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FM KQorCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1 cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJzZXQpCisKKyAg ICAgICAgaWYgamlkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgaWYgbGVu KHJzZXRbJ3Jvd3MnXSkgIT0gMToKKyAgICAgICAgICAgICAgICByZXR1cm4g Z29uZSgKKyAgICAgICAgICAgICAgICAgICAgZXJyb3Jtc2c9XygKKyAgICAg ICAgICAgICAgICAgICAgICAgICJDb3VsZCBub3QgZmluZCB0aGUgcGdBZ2Vu dCBqb2Igb24gdGhlIHNlcnZlci4iCisgICAgICAgICAgICAgICAgICAgICkK KyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICByZXMgPSByc2V0Wydy b3dzJ11bMF0KKyAgICAgICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29u bi5leGVjdXRlX2RpY3QoCisgICAgICAgICAgICAgICAgcmVuZGVyX3RlbXBs YXRlKAorICAgICAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1w bGF0ZV9wYXRoLCAnc3RlcHMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAg ICBqaWQ9amlkLCBjb25uPXNlbGYuY29ubiwKKyAgICAgICAgICAgICAgICAg ICAgaGFzX2Nvbm5zdHI9c2VsZi5tYW5hZ2VyLmRiX2luZm9bJ3BnQWdlbnQn XVsnaGFzX2Nvbm5zdHInXQorICAgICAgICAgICAgICAgICkKKyAgICAgICAg ICAgICkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAg ICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1y c2V0KQorICAgICAgICAgICAgcmVzWydqc3RlcHMnXSA9IHJzZXRbJ3Jvd3Mn XQorICAgICAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1 dGVfZGljdCgKKyAgICAgICAgICAgICAgICByZW5kZXJfdGVtcGxhdGUoCisg ICAgICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3Bh dGgsICdzY2hlZHVsZXMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICBq aWQ9amlkLCBjb25uPXNlbGYuY29ubgorICAgICAgICAgICAgICAgICkKKyAg ICAgICAgICAgICkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAg ICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJv cm1zZz1yc2V0KQorICAgICAgICAgICAgcmVzWydqc2NoZWR1bGVzJ10gPSBy c2V0Wydyb3dzJ10KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlcyA9 IHJzZXRbJ3Jvd3MnXQorCisgICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNl KAorICAgICAgICAgICAgcmVzcG9uc2U9cmVzLAorICAgICAgICAgICAgc3Rh dHVzPTIwMAorICAgICAgICApCisKKyAgICBkZWYgbW9kdWxlX2pzKHNlbGYp OgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBwcm9wZXJ0eSBkZWZpbmVz IChpZiBqYXZhc2NyaXB0KSBleGlzdHMgZm9yIHRoaXMgbm9kZS4KKyAgICAg ICAgT3ZlcnJpZGUgdGhpcyBwcm9wZXJ0eSBmb3IgeW91ciBvd24gbG9naWMu CisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gbWFrZV9yZXNwb25zZSgK KyAgICAgICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAg ICAicGdhX2pvYi9qcy9wZ2Ffam9iLmpzIiwKKyAgICAgICAgICAgICAgICBf PV8KKyAgICAgICAgICAgICksCisgICAgICAgICAgICAyMDAsIHsnQ29udGVu dC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCd9CisgICAgICAg ICkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgY3JlYXRl KHNlbGYsIGdpZCwgc2lkKToKKyAgICAgICAgIiIiQ3JlYXRlIHRoZSBwZ0Fn ZW50IGpvYi4iIiIKKyAgICAgICAgcmVxdWlyZWRfYXJncyA9IFsKKyAgICAg ICAgICAgIHUnam9ibmFtZScKKyAgICAgICAgXQorCisgICAgICAgIGRhdGEg PSByZXF1ZXN0LmZvcm0gaWYgcmVxdWVzdC5mb3JtIGVsc2UganNvbi5sb2Fk cygKKyAgICAgICAgICAgIHJlcXVlc3QuZGF0YS5kZWNvZGUoJ3V0Zi04JykK KyAgICAgICAgKQorCisgICAgICAgIGZvciBhcmcgaW4gcmVxdWlyZWRfYXJn czoKKyAgICAgICAgICAgIGlmIGFyZyBub3QgaW4gZGF0YToKKyAgICAgICAg ICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAg ICAgICAgICAgICBzdGF0dXM9NDEwLAorICAgICAgICAgICAgICAgICAgICBz dWNjZXNzPTAsCisgICAgICAgICAgICAgICAgICAgIGVycm9ybXNnPV8oCisg ICAgICAgICAgICAgICAgICAgICAgICAiQ291bGQgbm90IGZpbmQgdGhlIHJl cXVpcmVkIHBhcmFtZXRlciAoJXMpLiIgJSBhcmcKKyAgICAgICAgICAgICAg ICAgICAgKQorICAgICAgICAgICAgICAgICkKKworICAgICAgICBzdGF0dXMs IHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX3ZvaWQoJ0JFR0lOJykKKyAgICAg ICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgIHN0YXR1 cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKAorICAgICAgICAg ICAgcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICIvIi5qb2lu KFtzZWxmLnRlbXBsYXRlX3BhdGgsICdjcmVhdGUuc3FsJ10pLAorICAgICAg ICAgICAgICAgIGRhdGE9ZGF0YSwgY29ubj1zZWxmLmNvbm4sIGZldGNoX2lk PVRydWUsCisgICAgICAgICAgICAgICAgaGFzX2Nvbm5zdHI9c2VsZi5tYW5h Z2VyLmRiX2luZm9bJ3BnQWdlbnQnXVsnaGFzX2Nvbm5zdHInXQorICAgICAg ICAgICAgKQorICAgICAgICApCisKKyAgICAgICAgaWYgbm90IHN0YXR1czoK KyAgICAgICAgICAgIHNlbGYuY29ubi5leGVjdXRlX3ZvaWQoJ0VORCcpCisg ICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9y bXNnPXJlcykKKworICAgICAgICAjIFdlIG5lZWQgb2lkIG9mIG5ld2x5IGNy ZWF0ZWQgZGF0YWJhc2UKKyAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNv bm4uZXhlY3V0ZV9kaWN0KAorICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRl KAorICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3Bh dGgsICdub2Rlcy5zcWwnXSksCisgICAgICAgICAgICAgICAgamlkPXJlcywg Y29ubj1zZWxmLmNvbm4KKyAgICAgICAgICAgICkKKyAgICAgICAgKQorCisg ICAgICAgIHNlbGYuY29ubi5leGVjdXRlX3ZvaWQoJ0VORCcpCisgICAgICAg IGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxf c2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICByb3cgPSBy ZXNbJ3Jvd3MnXVswXQorCisgICAgICAgIHJldHVybiBqc29uaWZ5KAorICAg ICAgICAgICAgbm9kZT1zZWxmLmJsdWVwcmludC5nZW5lcmF0ZV9icm93c2Vy X25vZGUoCisgICAgICAgICAgICAgICAgcm93Wydqb2JpZCddLAorICAgICAg ICAgICAgICAgIHNpZCwKKyAgICAgICAgICAgICAgICByb3dbJ2pvYm5hbWUn XSwKKyAgICAgICAgICAgICAgICBpY29uPSJpY29uLXBnYV9qb2IiCisgICAg ICAgICAgICApCisgICAgICAgICkKKworICAgIEBjaGVja19wcmVjb25kaXRp b24KKyAgICBkZWYgdXBkYXRlKHNlbGYsIGdpZCwgc2lkLCBqaWQpOgorICAg ICAgICAiIiJVcGRhdGUgdGhlIHBnQWdlbnQgSm9iLiIiIgorCisgICAgICAg IGRhdGEgPSByZXF1ZXN0LmZvcm0gaWYgcmVxdWVzdC5mb3JtIGVsc2UganNv bi5sb2FkcygKKyAgICAgICAgICAgIHJlcXVlc3QuZGF0YS5kZWNvZGUoJ3V0 Zi04JykKKyAgICAgICAgKQorCisgICAgICAgIHN0YXR1cywgcmVzID0gc2Vs Zi5jb25uLmV4ZWN1dGVfdm9pZCgKKyAgICAgICAgICAgIHJlbmRlcl90ZW1w bGF0ZSgKKyAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0 ZV9wYXRoLCAndXBkYXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICBkYXRh PWRhdGEsIGNvbm49c2VsZi5jb25uLCBqaWQ9amlkLAorICAgICAgICAgICAg ICAgIGhhc19jb25uc3RyPXNlbGYubWFuYWdlci5kYl9pbmZvWydwZ0FnZW50 J11bJ2hhc19jb25uc3RyJ10KKyAgICAgICAgICAgICkKKyAgICAgICAgKQor CisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4g aW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAg ICAjIFdlIG5lZWQgb2lkIG9mIG5ld2x5IGNyZWF0ZWQgZGF0YWJhc2UKKyAg ICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KAor ICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAg ICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdub2Rlcy5zcWwnXSks CisgICAgICAgICAgICAgICAgamlkPXJlcywgY29ubj1zZWxmLmNvbm4KKyAg ICAgICAgICAgICkKKyAgICAgICAgKQorCisgICAgICAgIGlmIG5vdCBzdGF0 dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9y KGVycm9ybXNnPXJlcykKKworICAgICAgICByb3cgPSByZXNbJ3Jvd3MnXVsw XQorCisgICAgICAgIHJldHVybiBqc29uaWZ5KAorICAgICAgICAgICAgbm9k ZT1zZWxmLmJsdWVwcmludC5nZW5lcmF0ZV9icm93c2VyX25vZGUoCisgICAg ICAgICAgICAgICAgamlkLAorICAgICAgICAgICAgICAgIHNpZCwKKyAgICAg ICAgICAgICAgICByb3dbJ2pvYm5hbWUnXSwKKyAgICAgICAgICAgICAgICBp Y29uPSJpY29uLXBnYV9qb2IiIGlmIHJvd1snam9iZW5hYmxlZCddIGVsc2UK KyAgICAgICAgICAgICAgICAgICAgImljb24tcGdhX2pvYi1kaXNhYmxlZCIK KyAgICAgICAgICAgICkKKyAgICAgICAgKQorCisgICAgQGNoZWNrX3ByZWNv bmRpdGlvbgorICAgIGRlZiBkZWxldGUoc2VsZiwgZ2lkLCBzaWQsIGppZCk6 CisgICAgICAgICIiIkRlbGV0ZSB0aGUgcGdBZ2VudCBKb2IuIiIiCisKKyAg ICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV92b2lkKAor ICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAg ICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdkZWxldGUuc3FsJ10p LAorICAgICAgICAgICAgICAgIGppZD1qaWQsIGNvbm49c2VsZi5jb25uCisg ICAgICAgICAgICApCisgICAgICAgICkKKyAgICAgICAgaWYgbm90IHN0YXR1 czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3Io ZXJyb3Jtc2c9cmVzKQorCisgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVz cG9uc2Uoc3VjY2Vzcz0xKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgor ICAgIGRlZiBtc3FsKHNlbGYsIGdpZCwgc2lkLCBqaWQ9Tm9uZSk6CisgICAg ICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHRvIHJldHVybiBtb2Rp ZmllZCBTUUwuCisgICAgICAgICIiIgorICAgICAgICBkYXRhID0ge30KKyAg ICAgICAgZm9yIGssIHYgaW4gcmVxdWVzdC5hcmdzLml0ZW1zKCk6CisgICAg ICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZGF0YVtrXSA9IGpzb24u bG9hZHMoCisgICAgICAgICAgICAgICAgICAgIHYuZGVjb2RlKCd1dGYtOCcp IGlmIGhhc2F0dHIodiwgJ2RlY29kZScpIGVsc2UgdgorICAgICAgICAgICAg ICAgICkKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAg ICAgICAgICAgIGRhdGFba10gPSB2CisKKyAgICAgICAgcmV0dXJuIG1ha2Vf anNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgIGRhdGE9cmVuZGVyX3RlbXBs YXRlKAorICAgICAgICAgICAgICAgICIvIi5qb2luKFsKKyAgICAgICAgICAg ICAgICAgICAgc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAg ICAgICAnY3JlYXRlLnNxbCcgaWYgamlkIGlzIE5vbmUgZWxzZSAndXBkYXRl LnNxbCcKKyAgICAgICAgICAgICAgICBdKSwKKyAgICAgICAgICAgICAgICBq aWQ9amlkLCBkYXRhPWRhdGEsIGNvbm49c2VsZi5jb25uLCBmZXRjaF9pZD1G YWxzZSwKKyAgICAgICAgICAgICAgICBoYXNfY29ubnN0cj1zZWxmLm1hbmFn ZXIuZGJfaW5mb1sncGdBZ2VudCddWydoYXNfY29ubnN0ciddCisgICAgICAg ICAgICApLAorICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICApCisK KyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIHN0YXRpc3RpY3Mo c2VsZiwgZ2lkLCBzaWQsIGppZCk6CisgICAgICAgICIiIgorICAgICAgICBz dGF0aXN0aWNzCisgICAgICAgIFJldHVybnMgdGhlIHN0YXRpc3RpY3MgZm9y IGEgcGFydGljdWxhciBkYXRhYmFzZSBpZiBqaWQgaXMgc3BlY2lmaWVkLAor ICAgICAgICBvdGhlcndpc2UgaXQgd2lsbCByZXR1cm4gc3RhdGlzdGljcyBm b3IgYWxsIHRoZSBkYXRhYmFzZXMgaW4gdGhhdAorICAgICAgICBzZXJ2ZXIu CisgICAgICAgICIiIgorICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29u bi5leGVjdXRlX2RpY3QoCisgICAgICAgICAgICByZW5kZXJfdGVtcGxhdGUo CisgICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0 aCwgJ3N0YXRzLnNxbCddKSwKKyAgICAgICAgICAgICAgICBqaWQ9amlkLCBj b25uPXNlbGYuY29ubgorICAgICAgICAgICAgKQorICAgICAgICApCisKKyAg ICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRl cm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgIHJl dHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICBkYXRhPXJl cywKKyAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgKQorCisgICAg QGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBzcWwoc2VsZiwgZ2lkLCBz aWQsIGppZCk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9u IHdpbGwgZ2VuZXJhdGUgc3FsIGZvciBzcWwgcGFuZWwKKyAgICAgICAgIiIi CisgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAg ICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNx bCddKSwKKyAgICAgICAgICAgIGppZD1qaWQsIGNvbm49c2VsZi5jb25uLCBs YXN0X3N5c3RlbV9vaWQ9MAorICAgICAgICApCisgICAgICAgIHN0YXR1cywg cmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCisgICAgICAgIGlm IG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2Vy dmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICByb3cgPSByZXNb J3Jvd3MnXVswXQorCisgICAgICAgIHN0YXR1cywgcmVzPSBzZWxmLmNvbm4u ZXhlY3V0ZV9kaWN0KAorICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKAor ICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgs ICdzdGVwcy5zcWwnXSksCisgICAgICAgICAgICAgICAgamlkPWppZCwgY29u bj1zZWxmLmNvbm4sCisgICAgICAgICAgICAgICAgaGFzX2Nvbm5zdHI9c2Vs Zi5tYW5hZ2VyLmRiX2luZm9bJ3BnQWdlbnQnXVsnaGFzX2Nvbm5zdHInXQor ICAgICAgICAgICAgKQorICAgICAgICApCisgICAgICAgIGlmIG5vdCBzdGF0 dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9y KGVycm9ybXNnPXJlcykKKworICAgICAgICByb3dbJ2pzdGVwcyddID0gcmVz Wydyb3dzJ10KKworICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5l eGVjdXRlX2RpY3QoCisgICAgICAgICAgICByZW5kZXJfdGVtcGxhdGUoCisg ICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwg J3NjaGVkdWxlcy5zcWwnXSksCisgICAgICAgICAgICAgICAgamlkPWppZCwg Y29ubj1zZWxmLmNvbm4KKyAgICAgICAgICAgICkKKyAgICAgICAgKQorICAg ICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVy bmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgcm93 Wydqc2NoZWR1bGVzJ10gPSByZXNbJ3Jvd3MnXQorICAgICAgICBmb3Igc2No ZWR1bGUgaW4gcm93Wydqc2NoZWR1bGVzJ106CisgICAgICAgICAgICBzY2hl ZHVsZVsnanNjZXhjZXB0aW9ucyddID0gW10KKyAgICAgICAgICAgIGlmIHNj aGVkdWxlWydqZXhpZCddOgorICAgICAgICAgICAgICAgIGlkeCA9IDAKKyAg ICAgICAgICAgICAgICBmb3IgZXhjIGluIHNjaGVkdWxlWydqZXhpZCddOgor ICAgICAgICAgICAgICAgICAgICBzY2hlZHVsZVsnanNjZXhjZXB0aW9ucydd LmFwcGVuZCh7CisgICAgICAgICAgICAgICAgICAgICAgICAnamV4aWQnOiBl eGMsCisgICAgICAgICAgICAgICAgICAgICAgICAnamV4ZGF0ZSc6IHNjaGVk dWxlWydqZXhkYXRlJ11baWR4XSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICdqZXh0aW1lJzogc2NoZWR1bGVbJ2pleHRpbWUnXVtpZHhdCisgICAgICAg ICAgICAgICAgICAgIH0pCisgICAgICAgICAgICAgICAgICAgIGlkeCs9MQor ICAgICAgICAgICAgZGVsIHNjaGVkdWxlWydqZXhpZCddCisgICAgICAgICAg ICBkZWwgc2NoZWR1bGVbJ2pleGRhdGUnXQorICAgICAgICAgICAgZGVsIHNj aGVkdWxlWydqZXh0aW1lJ10KKworICAgICAgICByZXR1cm4gYWpheF9yZXNw b25zZSgKKyAgICAgICAgICAgIHJlc3BvbnNlPXJlbmRlcl90ZW1wbGF0ZSgK KyAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRo LCAnY3JlYXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICBqaWQ9amlkLCBk YXRhPXJvdywgY29ubj1zZWxmLmNvbm4sIGZldGNoX2lkPUZhbHNlLAorICAg ICAgICAgICAgICAgIGhhc19jb25uc3RyPXNlbGYubWFuYWdlci5kYl9pbmZv WydwZ0FnZW50J11bJ2hhc19jb25uc3RyJ10KKyAgICAgICAgICAgICkKKyAg ICAgICAgKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBy dW5fbm93KHNlbGYsIGdpZCwgc2lkLCBqaWQpOgorICAgICAgICAiIiIKKyAg ICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIHNldCB0aGUgbmV4dCBydW4gdG8g bm93LCB0byBpbmZvcm0gdGhlIHBnQWdlbnQgdG8KKyAgICAgICAgcnVuIHRo ZSBqb2Igbm93LgorICAgICAgICAiIiIKKyAgICAgICAgc3RhdHVzLCByZXMg PSBzZWxmLmNvbm4uZXhlY3V0ZV92b2lkKAorICAgICAgICAgICAgcmVuZGVy X3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRl bXBsYXRlX3BhdGgsICdydW5fbm93LnNxbCddKSwKKyAgICAgICAgICAgICAg ICBqaWQ9amlkLCBjb25uPXNlbGYuY29ubgorICAgICAgICAgICAgKQorICAg ICAgICApCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKwor ICAgICAgICByZXR1cm4gc3VjY2Vzc19yZXR1cm4oCisgICAgICAgICAgICBt ZXNzYWdlPV8oIlVwZGF0ZWQgdGhlIG5leHQtcnVudGltZSB0byBub3chIikK KyAgICAgICAgKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRl ZiBqb2JfY2xhc3NlcyhzZWxmLCBnaWQsIHNpZCk6CisgICAgICAgICIiIgor ICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIHRoZSBzZXQgb2Yg am9iIGNsYXNzZXMuCisgICAgICAgICIiIgorICAgICAgICBzdGF0dXMsIHJl cyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoCisgICAgICAgICAgICByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ2pv Yl9jbGFzc2VzLnNxbCddKSkKKyAgICAgICAgKQorCisgICAgICAgIGlmIG5v dCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVy X2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICByZXR1cm4gbWFrZV9q c29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgZGF0YT1yZXNbJ3Jvd3MnXSwK KyAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgKQorCitKb2JWaWV3 LnJlZ2lzdGVyX25vZGVfdmlldyhibHVlcHJpbnQpCmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0Fn ZW50L3NjaGVkdWxlcy9fX2luaXRfXy5weSBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvc2NoZWR1bGVzL19f aW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LjI0ZWExYmEKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3NjaGVkdWxlcy9f X2luaXRfXy5weQpAQCAtMCwwICsxLDQ0MSBAQAorIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBU b29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE2LCBUaGUgcGdB ZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVs ZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIiIiSW1wbGVtZW50cyBwZ0Fn ZW50IEpvYiBTY2hlZHVsZSBOb2RlIiIiCisKK2ltcG9ydCBqc29uCitmcm9t IGZ1bmN0b29scyBpbXBvcnQgd3JhcHMKKworZnJvbSBmbGFzayBpbXBvcnQg cmVuZGVyX3RlbXBsYXRlLCBtYWtlX3Jlc3BvbnNlLCByZXF1ZXN0Citmcm9t IGZsYXNrX2JhYmVsIGltcG9ydCBnZXR0ZXh0Citmcm9tIHBnYWRtaW4uYnJv d3Nlci5jb2xsZWN0aW9uIGltcG9ydCBDb2xsZWN0aW9uTm9kZU1vZHVsZQor ZnJvbSBwZ2FkbWluLmJyb3dzZXIudXRpbHMgaW1wb3J0IFBHQ2hpbGROb2Rl VmlldworZnJvbSBwZ2FkbWluLnV0aWxzLmFqYXggaW1wb3J0IG1ha2VfanNv bl9yZXNwb25zZSwgZ29uZSwgXAorICAgIG1ha2VfcmVzcG9uc2UgYXMgYWph eF9yZXNwb25zZSwgaW50ZXJuYWxfc2VydmVyX2Vycm9yCitmcm9tIHBnYWRt aW4udXRpbHMuZHJpdmVyIGltcG9ydCBnZXRfZHJpdmVyCisKK2Zyb20gY29u ZmlnIGltcG9ydCBQR19ERUZBVUxUX0RSSVZFUgorCisKK2NsYXNzIEpvYlNj aGVkdWxlTW9kdWxlKENvbGxlY3Rpb25Ob2RlTW9kdWxlKToKKyAgICAiIiIK KyAgICBjbGFzcyBKb2JTY2hlZHVsZU1vZHVsZShDb2xsZWN0aW9uTm9kZU1v ZHVsZSkKKworICAgICAgICBBIG1vZHVsZSBjbGFzcyBmb3IgSm9iU2NoZWR1 bGUgbm9kZSBkZXJpdmVkIGZyb20gQ29sbGVjdGlvbk5vZGVNb2R1bGUuCisK KyAgICBNZXRob2RzOgorICAgIC0tLS0tLS0KKyAgICAqIGdldF9ub2Rlcyhn aWQsIHNpZCwgamlkKQorICAgICAgLSBNZXRob2QgaXMgdXNlZCB0byBnZW5l cmF0ZSB0aGUgYnJvd3NlciBjb2xsZWN0aW9uIG5vZGUuCisKKyAgICAqIG5v ZGVfaW5vZGUoKQorICAgICAgLSBNZXRob2QgaXMgb3ZlcnJpZGRlbiBmcm9t IGl0cyBiYXNlIGNsYXNzIHRvIG1ha2UgdGhlIG5vZGUgYXMgbGVhZiBub2Rl LgorICAgICIiIgorCisgICAgTk9ERV9UWVBFID0gJ3BnYV9zY2hlZHVsZScK KyAgICBDT0xMRUNUSU9OX0xBQkVMID0gZ2V0dGV4dCgiU2NoZWR1bGVzIikK KworICAgIGRlZiBnZXRfbm9kZXMoc2VsZiwgZ2lkLCBzaWQsIGppZCk6Cisg ICAgICAgICIiIgorICAgICAgICBNZXRob2QgaXMgdXNlZCB0byBnZW5lcmF0 ZSB0aGUgYnJvd3NlciBjb2xsZWN0aW9uIG5vZGUKKworICAgICAgICBBcmdz OgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSUQKKyAgICAgICAg ICAgIHNpZDogU2VydmVyIElECisgICAgICAgICAgICBqaWQ6IERhdGFiYXNl IElkCisgICAgICAgICIiIgorICAgICAgICB5aWVsZCBzZWxmLmdlbmVyYXRl X2Jyb3dzZXJfY29sbGVjdGlvbl9ub2RlKGppZCkKKworICAgIEBwcm9wZXJ0 eQorICAgIGRlZiBub2RlX2lub2RlKHNlbGYpOgorICAgICAgICAiIiIKKyAg ICAgICAgT3ZlcnJpZGUgdGhpcyBwcm9wZXJ0eSB0byBtYWtlIHRoZSBub2Rl IGEgbGVhZiBub2RlLgorCisgICAgICAgIFJldHVybnM6IEZhbHNlIGFzIHRo aXMgaXMgdGhlIGxlYWYgbm9kZQorICAgICAgICAiIiIKKyAgICAgICAgcmV0 dXJuIEZhbHNlCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgc2NyaXB0X2xv YWQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBMb2FkIHRoZSBtb2R1 bGUgc2NyaXB0IGZvciBsYW5ndWFnZSwgd2hlbiBhbnkgb2YgdGhlIGRhdGFi YXNlIG5vZGVzIGFyZSBpbml0aWFsaXplZC4KKworICAgICAgICBSZXR1cm5z OiBub2RlIHR5cGUgb2YgdGhlIHNlcnZlciBtb2R1bGUuCisgICAgICAgICIi IgorICAgICAgICByZXR1cm4gJ3BnYV9qb2InCisKKworYmx1ZXByaW50ID0g Sm9iU2NoZWR1bGVNb2R1bGUoX19uYW1lX18pCisKKworY2xhc3MgSm9iU2No ZWR1bGVWaWV3KFBHQ2hpbGROb2RlVmlldyk6CisgICAgIiIiCisgICAgY2xh c3MgSm9iU2NoZWR1bGVWaWV3KFBHQ2hpbGROb2RlVmlldykKKworICAgICAg ICBBIHZpZXcgY2xhc3MgZm9yIEpvYlNjaGVkdWxlIG5vZGUgZGVyaXZlZCBm cm9tIFBHQ2hpbGROb2RlVmlldy4gVGhpcyBjbGFzcyBpcworICAgICAgICBy ZXNwb25zaWJsZSBmb3IgYWxsIHRoZSBzdHVmZiByZWxhdGVkIHRvIHZpZXcg bGlrZSB1cGRhdGluZyBsYW5ndWFnZQorICAgICAgICBub2RlLCBzaG93aW5n IHByb3BlcnRpZXMsIHNob3dpbmcgc3FsIGluIHNxbCBwYW5lLgorCisgICAg TWV0aG9kczoKKyAgICAtLS0tLS0tCisgICAgKiBfX2luaXRfXygqKmt3YXJn cykKKyAgICAgIC0gTWV0aG9kIGlzIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUg Sm9iU2NoZWR1bGVWaWV3IGFuZCBpdCdzIGJhc2Ugdmlldy4KKworICAgICog bW9kdWxlX2pzKCkKKyAgICAgIC0gVGhpcyBwcm9wZXJ0eSBkZWZpbmVzIChp ZiBqYXZhc2NyaXB0KSBleGlzdHMgZm9yIHRoaXMgbm9kZS4KKyAgICAgICAg T3ZlcnJpZGUgdGhpcyBwcm9wZXJ0eSBmb3IgeW91ciBvd24gbG9naWMKKwor ICAgICogY2hlY2tfcHJlY29uZGl0aW9uKCkKKyAgICAgIC0gVGhpcyBmdW5j dGlvbiB3aWxsIGJlaGF2ZSBhcyBhIGRlY29yYXRvciB3aGljaCB3aWxsIGNo ZWNrcworICAgICAgICBkYXRhYmFzZSBjb25uZWN0aW9uIGJlZm9yZSBydW5u aW5nIHZpZXcsIGl0IHdpbGwgYWxzbyBhdHRhY2hlcworICAgICAgICBtYW5h Z2VyLGNvbm4gJiB0ZW1wbGF0ZV9wYXRoIHByb3BlcnRpZXMgdG8gc2VsZgor CisgICAgKiBsaXN0KCkKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiBpcyB1c2Vk IHRvIGxpc3QgYWxsIHRoZSBsYW5ndWFnZSBub2RlcyB3aXRoaW4gdGhhdCBj b2xsZWN0aW9uLgorCisgICAgKiBub2RlcygpCisgICAgICAtIFRoaXMgZnVu Y3Rpb24gd2lsbCB1c2VkIHRvIGNyZWF0ZSBhbGwgdGhlIGNoaWxkIG5vZGUg d2l0aGluIHRoYXQgY29sbGVjdGlvbi4KKyAgICAgICAgSGVyZSBpdCB3aWxs IGNyZWF0ZSBhbGwgdGhlIGxhbmd1YWdlIG5vZGUuCisKKyAgICAqIHByb3Bl cnRpZXMoZ2lkLCBzaWQsIGppZCwganNjaWQpCisgICAgICAtIFRoaXMgZnVu Y3Rpb24gd2lsbCBzaG93IHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBzZWxlY3Rl ZCBsYW5ndWFnZSBub2RlCisKKyAgICAqIHVwZGF0ZShnaWQsIHNpZCwgamlk LCBqc2NpZCkKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIHVwZGF0ZSB0 aGUgZGF0YSBmb3IgdGhlIHNlbGVjdGVkIGxhbmd1YWdlIG5vZGUKKworICAg ICogbXNxbChnaWQsIHNpZCwgamlkLCBqc2NpZCkKKyAgICAgIC0gVGhpcyBm dW5jdGlvbiBpcyB1c2VkIHRvIHJldHVybiBtb2RpZmllZCBTUUwgZm9yIHRo ZSBzZWxlY3RlZCBsYW5ndWFnZSBub2RlCisgICAgIiIiCisKKyAgICBub2Rl X3R5cGUgPSBibHVlcHJpbnQubm9kZV90eXBlCisKKyAgICBwYXJlbnRfaWRz ID0gWworICAgICAgICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ2dpZCd9LAor ICAgICAgICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ3NpZCd9LAorICAgICAg ICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ2ppZCd9CisgICAgXQorICAgIGlk cyA9IFsKKyAgICAgICAgeyd0eXBlJzogJ2ludCcsICdpZCc6ICdqc2NpZCd9 CisgICAgXQorCisgICAgb3BlcmF0aW9ucyA9IGRpY3QoeworICAgICAgICAn b2JqJzogWworICAgICAgICAgICAgeydnZXQnOiAncHJvcGVydGllcycsICdw dXQnOiAndXBkYXRlJ30sCisgICAgICAgICAgICB7J2dldCc6ICdsaXN0Jywg J3Bvc3QnOiAnY3JlYXRlJ30KKyAgICAgICAgXSwKKyAgICAgICAgJ25vZGVz JzogW3snZ2V0JzogJ25vZGVzJ30sIHsnZ2V0JzogJ25vZGVzJ31dLAorICAg ICAgICAnbXNxbCc6IFt7J2dldCc6ICdtc3FsJ30sIHsnZ2V0JzogJ21zcWwn fV0sCisgICAgICAgICdtb2R1bGUuanMnOiBbe30sIHt9LCB7J2dldCc6ICdt b2R1bGVfanMnfV0KKyAgICB9KQorCisgICAgZGVmIF9pbml0XyhzZWxmLCAq Kmt3YXJncyk6CisgICAgICAgICIiIgorICAgICAgICBNZXRob2QgaXMgdXNl ZCB0byBpbml0aWFsaXplIHRoZSBKb2JTY2hlZHVsZVZpZXcgYW5kIGl0cyBi YXNlIHZpZXcuCisgICAgICAgIEluaXRpYWxpemUgYWxsIHRoZSB2YXJpYWJs ZXMgY3JlYXRlL3VzZWQgZHluYW1pY2FsbHkgbGlrZSBjb25uLCB0ZW1wbGF0 ZV9wYXRoLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICAqKmt3YXJn czoKKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuY29ubiA9IE5vbmUKKyAg ICAgICAgc2VsZi50ZW1wbGF0ZV9wYXRoID0gTm9uZQorICAgICAgICBzZWxm Lm1hbmFnZXIgPSBOb25lCisKKyAgICAgICAgc3VwZXIoSm9iU2NoZWR1bGVW aWV3LCBzZWxmKS5fX2luaXRfXygqKmt3YXJncykKKworICAgIGRlZiBtb2R1 bGVfanMoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIHByb3Bl cnR5IGRlZmluZXMgd2hldGhlciBqYXZhc2NyaXB0IGV4aXN0cyBmb3IgdGhp cyBub2RlLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIG1ha2VfcmVz cG9uc2UoCisgICAgICAgICAgICByZW5kZXJfdGVtcGxhdGUoCisgICAgICAg ICAgICAgICAgInBnYV9zY2hlZHVsZS9qcy9wZ2Ffc2NoZWR1bGUuanMiLAor ICAgICAgICAgICAgICAgIF89Z2V0dGV4dAorICAgICAgICAgICAgKSwKKyAg ICAgICAgICAgIDIwMCwgeydDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24v eC1qYXZhc2NyaXB0J30KKyAgICAgICAgKQorCisgICAgZGVmIGNoZWNrX3By ZWNvbmRpdGlvbihmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVu Y3Rpb24gd2lsbCBiZWhhdmUgYXMgYSBkZWNvcmF0b3Igd2hpY2ggd2lsbCBj aGVjayB0aGUKKyAgICAgICAgZGF0YWJhc2UgY29ubmVjdGlvbiBiZWZvcmUg cnVubmluZyB0aGUgdmlldy4gSXQgYWxzbyBhdHRhY2hlcworICAgICAgICBt YW5hZ2VyLCBjb25uICYgdGVtcGxhdGVfcGF0aCBwcm9wZXJ0aWVzIHRvIHNl bGYKKyAgICAgICAgIiIiCisKKyAgICAgICAgQHdyYXBzKGYpCisgICAgICAg IGRlZiB3cmFwKCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICAjIEhl cmUgYXJnc1swXSB3aWxsIGhvbGQgc2VsZiAmIGt3YXJncyB3aWxsIGhvbGQg Z2lkLHNpZCxqaWQKKyAgICAgICAgICAgIHNlbGYgPSBhcmdzWzBdCisgICAg ICAgICAgICBzZWxmLmRyaXZlciA9IGdldF9kcml2ZXIoUEdfREVGQVVMVF9E UklWRVIpCisgICAgICAgICAgICBzZWxmLm1hbmFnZXIgPSBzZWxmLmRyaXZl ci5jb25uZWN0aW9uX21hbmFnZXIoa3dhcmdzWydzaWQnXSkKKyAgICAgICAg ICAgIHNlbGYuY29ubiA9IHNlbGYubWFuYWdlci5jb25uZWN0aW9uKCkKKwor ICAgICAgICAgICAgc2VsZi50ZW1wbGF0ZV9wYXRoID0gJ3BnYV9zY2hlZHVs ZS9zcWwvcHJlMy40JworCisgICAgICAgICAgICByZXR1cm4gZigqYXJncywg Kiprd2FyZ3MpCisKKyAgICAgICAgcmV0dXJuIHdyYXAKKworICAgIEBjaGVj a19wcmVjb25kaXRpb24KKyAgICBkZWYgbGlzdChzZWxmLCBnaWQsIHNpZCwg amlkKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gaXMg dXNlZCB0byBsaXN0IGFsbCB0aGUgbGFuZ3VhZ2Ugbm9kZXMgd2l0aGluIHRo YXQgY29sbGVjdGlvbi4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAg Z2lkOiBTZXJ2ZXIgR3JvdXAgSUQKKyAgICAgICAgICAgIHNpZDogU2VydmVy IElECisgICAgICAgICAgICBqaWQ6IEpvYiBJRAorICAgICAgICAiIiIKKyAg ICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgIi8i LmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ3Byb3BlcnRpZXMuc3FsJ10p LAorICAgICAgICAgICAgamlkPWppZAorICAgICAgICApCisgICAgICAgIHN0 YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChzcWwpCisKKyAg ICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRl cm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgIHJl dHVybiBhamF4X3Jlc3BvbnNlKAorICAgICAgICAgICAgcmVzcG9uc2U9cmVz Wydyb3dzJ10sCisgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICkK KworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgbm9kZXMoc2Vs ZiwgZ2lkLCBzaWQsIGppZCwganNjaWQ9Tm9uZSk6CisgICAgICAgICIiIgor ICAgICAgICBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gY3JlYXRlIGFsbCB0 aGUgY2hpbGQgbm9kZXMgd2l0aGluIHRoZSBjb2xsZWN0aW9uLgorICAgICAg ICBIZXJlIGl0IHdpbGwgY3JlYXRlIGFsbCB0aGUgbGFuZ3VhZ2Ugbm9kZXMu CisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGdpZDogU2VydmVyIEdy b3VwIElECisgICAgICAgICAgICBzaWQ6IFNlcnZlciBJRAorICAgICAgICAg ICAgamlkOiBKb2IgSUQKKyAgICAgICAgIiIiCisgICAgICAgIHJlcyA9IFtd CisgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAg ICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdub2Rlcy5zcWwnXSks CisgICAgICAgICAgICBqc2NpZCA9IGpzY2lkLAorICAgICAgICAgICAgamlk ID0gamlkCisgICAgICAgICkKKworICAgICAgICBzdGF0dXMsIHJlc3VsdCA9 IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoc3FsKQorCisgICAgICAgIGlm IG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2Vy dmVyX2Vycm9yKGVycm9ybXNnPXJlc3VsdCkKKworICAgICAgICBpZiBqc2Np ZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIGxlbihyZXN1bHRbJ3Jv d3MnXSkgPT0gMDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZ29uZShlcnJv cm1zZz0iQ291bGRuJ3QgZmluZCB0aGUgc3BlY2lmaWVkIGpvYiBzdGVwLiIp CisKKyAgICAgICAgICAgIHJvdyA9IHJlc3VsdFsncm93cyddWzBdCisgICAg ICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAg ICAgICAgIHNlbGYuYmx1ZXByaW50LmdlbmVyYXRlX2Jyb3dzZXJfbm9kZSgK KyAgICAgICAgICAgICAgICAgICAgcm93Wydqc2NpZCddLAorICAgICAgICAg ICAgICAgICAgICByb3dbJ2pzY2pvYmlkJ10sCisgICAgICAgICAgICAgICAg ICAgIHJvd1snanNjbmFtZSddLAorICAgICAgICAgICAgICAgICAgICBpY29u PSJpY29uLXBnYV9zY2hlZHVsZSIsCisgICAgICAgICAgICAgICAgICAgIGVu YWJsZWQ9cm93Wydqc2NlbmFibGVkJ10KKyAgICAgICAgICAgICAgICApCisg ICAgICAgICAgICApCisKKyAgICAgICAgZm9yIHJvdyBpbiByZXN1bHRbJ3Jv d3MnXToKKyAgICAgICAgICAgIHJlcy5hcHBlbmQoCisgICAgICAgICAgICAg ICAgc2VsZi5ibHVlcHJpbnQuZ2VuZXJhdGVfYnJvd3Nlcl9ub2RlKAorICAg ICAgICAgICAgICAgICAgICByb3dbJ2pzY2lkJ10sCisgICAgICAgICAgICAg ICAgICAgIHJvd1snanNjam9iaWQnXSwKKyAgICAgICAgICAgICAgICAgICAg cm93Wydqc2NuYW1lJ10sCisgICAgICAgICAgICAgICAgICAgIGljb249Imlj b24tcGdhX3NjaGVkdWxlIiwKKyAgICAgICAgICAgICAgICAgICAgZW5hYmxl ZD1yb3dbJ2pzY2VuYWJsZWQnXQorICAgICAgICAgICAgICAgICkKKyAgICAg ICAgICAgICkKKworICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNl KAorICAgICAgICAgICAgZGF0YT1yZXMsCisgICAgICAgICAgICBzdGF0dXM9 MjAwCisgICAgICAgICkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAg ICBkZWYgcHJvcGVydGllcyhzZWxmLCBnaWQsIHNpZCwgamlkLCBqc2NpZCk6 CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgc2hv dyB0aGUgcHJvcGVydGllcyBvZiB0aGUgc2VsZWN0ZWQgbGFuZ3VhZ2Ugbm9k ZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIg R3JvdXAgSUQKKyAgICAgICAgICAgIHNpZDogU2VydmVyIElECisgICAgICAg ICAgICBqaWQ6IEpvYiBJRAorICAgICAgICAgICAganNjaWQ6IEpvYlNjaGVk dWxlIElECisgICAgICAgICIiIgorICAgICAgICBzcWwgPSByZW5kZXJfdGVt cGxhdGUoCisgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9w YXRoLCAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAgICAgICBqc2NpZD1q c2NpZCwgamlkPWppZAorICAgICAgICApCisgICAgICAgIHN0YXR1cywgcmVz ID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChzcWwpCisKKyAgICAgICAgaWYg bm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2 ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgIGlmIGxlbihyZXNb J3Jvd3MnXSkgPT0gMDoKKyAgICAgICAgICAgIHJldHVybiBnb25lKGVycm9y bXNnPSJDb3VsZG4ndCBmaW5kIHRoZSBzcGVjaWZpZWQgam9iIHN0ZXAuIikK KworICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZSgKKyAgICAgICAgICAg IHJlc3BvbnNlPXJlc1sncm93cyddWzBdLAorICAgICAgICAgICAgc3RhdHVz PTIwMAorICAgICAgICApCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisg ICAgZGVmIGNyZWF0ZShzZWxmLCBnaWQsIHNpZCwgamlkKToKKyAgICAgICAg IiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCB1cGRhdGUgdGhlIGRh dGEgZm9yIHRoZSBzZWxlY3RlZCBsYW5ndWFnZSBub2RlLgorCisgICAgICAg IEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJRAorICAg ICAgICAgICAgc2lkOiBTZXJ2ZXIgSUQKKyAgICAgICAgICAgIGppZDogSm9i IElECisgICAgICAgICIiIgorICAgICAgICBkYXRhID0ge30KKyAgICAgICAg Zm9yIGssIHYgaW4gcmVxdWVzdC5hcmdzLml0ZW1zKCk6CisgICAgICAgICAg ICB0cnk6CisgICAgICAgICAgICAgICAgZGF0YVtrXSA9IGpzb24ubG9hZHMo CisgICAgICAgICAgICAgICAgICAgIHYuZGVjb2RlKCd1dGYtOCcpIGlmIGhh c2F0dHIodiwgJ2RlY29kZScpIGVsc2UgdgorICAgICAgICAgICAgICAgICkK KyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAg ICAgIGRhdGFba10gPSB2CisKKyAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBs YXRlKAorICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0 aCwgJ2NyZWF0ZS5zcWwnXSksCisgICAgICAgICAgICBqaWQ9amlkLAorICAg ICAgICAgICAgZGF0YT1kYXRhLAorICAgICAgICAgICAgZmV0Y2hfaWQ9RmFs c2UKKyAgICAgICAgKQorCisgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5j b25uLmV4ZWN1dGVfdm9pZCgnQkVHSU4nKQorICAgICAgICBpZiBub3Qgc3Rh dHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJv cihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxm LmNvbm4uZXhlY3V0ZV9zY2FsYXIoc3FsKQorCisgICAgICAgIGlmIG5vdCBz dGF0dXM6CisgICAgICAgICAgICBpZiBzZWxmLmNvbm4uY29ubmVjdGVkKCk6 CisgICAgICAgICAgICAgICAgc2VsZi5jb25uLmV4ZWN1dGVfdm9pZCgnRU5E JykKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3Io ZXJyb3Jtc2c9cmVzKQorCisgICAgICAgIHNlbGYuY29ubi5leGVjdXRlX3Zv aWQoJ0VORCcpCisgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAg ICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdub2Rl cy5zcWwnXSksCisgICAgICAgICAgICBqc2NpZCA9IHJlcywKKyAgICAgICAg ICAgIGppZCA9IGppZAorICAgICAgICApCisgICAgICAgIHN0YXR1cywgcmVz ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShzcWwpCisKKyAgICAgICAg aWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgIHJvdyA9IHJl c1sncm93cyddWzBdCisgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9u c2UoCisgICAgICAgICAgICBkYXRhPXNlbGYuYmx1ZXByaW50LmdlbmVyYXRl X2Jyb3dzZXJfbm9kZSgKKyAgICAgICAgICAgICAgICByb3dbJ2pzY2lkJ10s CisgICAgICAgICAgICAgICAgcm93Wydqc2Nqb2JpZCddLAorICAgICAgICAg ICAgICAgIHJvd1snanNjbmFtZSddLAorICAgICAgICAgICAgICAgIGljb249 Imljb24tcGdhX3NjaGVkdWxlIgorICAgICAgICAgICAgKQorICAgICAgICAp CisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIHVwZGF0ZShz ZWxmLCBnaWQsIHNpZCwgamlkLCBqc2NpZCk6CisgICAgICAgICIiIgorICAg ICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgdXBkYXRlIHRoZSBkYXRhIGZvciB0 aGUgc2VsZWN0ZWQgbGFuZ3VhZ2Ugbm9kZS4KKworICAgICAgICBBcmdzOgor ICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSUQKKyAgICAgICAgICAg IHNpZDogU2VydmVyIElECisgICAgICAgICAgICBqaWQ6IEpvYiBJRAorICAg ICAgICAgICAganNjaWQ6IEpvYlNjaGVkdWxlIElECisgICAgICAgICIiIgor ICAgICAgICBkYXRhID0ge30KKyAgICAgICAgZm9yIGssIHYgaW4gcmVxdWVz dC5hcmdzLml0ZW1zKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAg ICAgICAgZGF0YVtrXSA9IGpzb24ubG9hZHMoCisgICAgICAgICAgICAgICAg ICAgIHYuZGVjb2RlKCd1dGYtOCcpIGlmIGhhc2F0dHIodiwgJ2RlY29kZScp IGVsc2UgdgorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIGV4Y2Vw dCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgIGRhdGFba10gPSB2CisK KyAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAg Ii8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ3VwZGF0ZS5zcWwnXSks CisgICAgICAgICAgICBqaWQ9amlkLAorICAgICAgICAgICAgZGF0YT1kYXRh CisgICAgICAgICkKKworICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29u bi5leGVjdXRlX3ZvaWQoc3FsKQorCisgICAgICAgIGlmIG5vdCBzdGF0dXM6 CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVy cm9ybXNnPXJlcykKKworICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUo CisgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAn bm9kZXMuc3FsJ10pLAorICAgICAgICAgICAganNjaWQgPSBqc2NpZCwKKyAg ICAgICAgICAgIGppZCA9IGppZAorICAgICAgICApCisgICAgICAgIHN0YXR1 cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShzcWwpCisKKyAg ICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRl cm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgIHJv dyA9IHJlc1sncm93cyddWzBdCisgICAgICAgIHJldHVybiBtYWtlX2pzb25f cmVzcG9uc2UoCisgICAgICAgICAgICBzZWxmLmJsdWVwcmludC5nZW5lcmF0 ZV9icm93c2VyX25vZGUoCisgICAgICAgICAgICAgICAgcm93Wydqc2NpZCdd LAorICAgICAgICAgICAgICAgIHJvd1snanNjam9iaWQnXSwKKyAgICAgICAg ICAgICAgICByb3dbJ2pzY25hbWUnXSwKKyAgICAgICAgICAgICAgICBpY29u PSJpY29uLXBnYV9zY2hlZHVsZSIKKyAgICAgICAgICAgICkKKyAgICAgICAg KQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBtc3FsKHNl bGYsIGdpZCwgc2lkLCBqaWQsIGpzY2lkPU5vbmUpOgorICAgICAgICAiIiIK KyAgICAgICAgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHJldHVybiBtb2Rp ZmllZCBTUUwgZm9yIHRoZSBzZWxlY3RlZCBsYW5ndWFnZSBub2RlLgorCisg ICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJ RAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSUQKKyAgICAgICAgICAgIGpp ZDogSm9iIElECisgICAgICAgICAgICBqc2NpZDogSm9iIFNjaGVkdWxlIElE IChvcHRpb25hbCkKKyAgICAgICAgIiIiCisgICAgICAgIGRhdGEgPSB7fQor ICAgICAgICBzcWwgPSAnJworICAgICAgICBmb3IgaywgdiBpbiByZXF1ZXN0 LmFyZ3MuaXRlbXMoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAg ICAgICBkYXRhW2tdID0ganNvbi5sb2FkcygKKyAgICAgICAgICAgICAgICAg ICAgdi5kZWNvZGUoJ3V0Zi04JykgaWYgaGFzYXR0cih2LCAnZGVjb2RlJykg ZWxzZSB2CisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgZXhjZXB0 IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgZGF0YVtrXSA9IHYKKwor ICAgICAgICBpZiBqc2NpZCBpcyBOb25lOgorICAgICAgICAgICAgc3FsID0g cmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICIvIi5qb2luKFtz ZWxmLnRlbXBsYXRlX3BhdGgsICdjcmVhdGUuc3FsJ10pLAorICAgICAgICAg ICAgICAgIGppZD1qaWQsCisgICAgICAgICAgICAgICAgZGF0YT1kYXRhLAor ICAgICAgICAgICAgICAgIGZldGNoX2lkPUZhbHNlCisgICAgICAgICAgICAp CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzcWwgPSByZW5kZXJfdGVt cGxhdGUoCisgICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxh dGVfcGF0aCwgJ3VwZGF0ZS5zcWwnXSksCisgICAgICAgICAgICAgICAgamlk PWppZCwKKyAgICAgICAgICAgICAgICBqc2NpZD1qc2NpZCwKKyAgICAgICAg ICAgICAgICBkYXRhPWRhdGEKKyAgICAgICAgICAgICkKKworICAgICAgICBy ZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgZGF0YT1z cWwsCisgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICkKKworCitK b2JTY2hlZHVsZVZpZXcucmVnaXN0ZXJfbm9kZV92aWV3KGJsdWVwcmludCkK ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL3BnQWdlbnQvc2NoZWR1bGVzL3N0YXRpYy9pbWcvY29sbC1w Z2Ffc2NoZWR1bGUucG5nIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvcGdBZ2VudC9zY2hlZHVsZXMvc3RhdGljL2ltZy9j b2xsLXBnYV9zY2hlZHVsZS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u NDNiMmFlNDYyZTVjODMxOTYxZWJhNGIyYTQ5MzExMTU5MzQwOTRiMQpHSVQg YmluYXJ5IHBhdGNoCmxpdGVyYWwgNjUwCnpjbWVBU0BOPyhvbEh5YHVWQnEh aWEwdnBeMHdCITYzP3d5bGBHWGw0NytDeytMUl44fEFKM24+Skd8JWw7dSgq LQp6Pnp+aSlmNF9EOCYtLWAyK2A5VH4+Qzh1Y2pnTEJOOXlPTGRzdyNMfm9j WCt8YHM/dXt1ZVlweWQtfnske1d+N2QKenA3NXglX0VBbVlsWnR7YjJsdXxh Y0pjOSZuTk4kZS08fkA5ZUJYfTh2bkc3SmJeWEphPz1MUTBkT1V5NTxDS2Be CnpXZCVSNFV3aFAxYH1OMXE0P3E5TjErMERhYFJEQzdVK3p3eF5kIVhaITw/ QlBaZUQtPzxJanQ0eml4aWBhcH4+MQp6aXdCTkJAcFhUaHA3UVNWX3ZjQEtK XjF2cWJLVDk4RlRXZ21AYUJvRDw1T3EqcnghMlhgfUZocmB8bGxWWmBRQjgK emVzdWVSQ3c1alpWPEkyVW9xaEd5PVgwO1c5KChibmUmd35EX3VnRXJ1NzZA fl4wQkE7KjJJYkRfOHJAUUBBWip3CnoyVk1zRnwyJWowK29ueT9PX0QhPTBs YD1qPFFMNH5AYSNxIWtpJUt2NW1ea1JKOzIhUVdWUmlVdkIlVEpGK30yVwp6 YXphOHZOPlc7NFlJMXI1QmNHcE1vP00oPTlpenRsaUljcXBKUikyfGR9NWZD NGpmVXsmfTBvJDxfJGMyTXB3Q1kKelFDcTlLU1NZWGRkWU9wY0p4ei15WlIq bHVXfHAyVzw8WXlWWlB+UEtlZTJ8eW5YVUlyMW9aQX1UKTFyRiM/RjxKCnow c1JkWTBsaG4wbW9BJlN3UmYlVGkzclkyIT88ZDhjWGkpJUBvQDdFWEJ8eDYk PDIkcVhTYzhKcFRLY1g0e2RmOQp6SHJDKDJUM2VqJT5Ndk43byVRO2F4RGVh LWd7JFZ4b0lBVC1nSVNEJDtvbntIPCp1Nlo4LVZeJEVwZCR+Tmw3ZTgKendN czVaMXlUJH4yOElUQGhETiN1aDlPMTxSd2wrKUNaXmczcmQ5PzleV04jTExl WT8kcE9UcVkzRElDKzNEeThxCmFaRE02JDJHTVk4ZGd2T1UxX249OEtiTGgq Mn43YSh6JnR6dgoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv cGdBZ2VudC9zY2hlZHVsZXMvc3RhdGljL2ltZy9wZ2Ffc2NoZWR1bGUucG5n IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv cGdBZ2VudC9zY2hlZHVsZXMvc3RhdGljL2ltZy9wZ2Ffc2NoZWR1bGUucG5n Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyMDMxNzRjYWZhMjQ5MGVkOWMz ZjY1ODYwYTc5MGUxNTRhYmYzMzQKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFs IDY4Mwp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHZwXjB3QiE2Mz93eWxgR1hs NDgxKH51TFJeOHxNQD9uVj1UQ1h1U0AoUWUKel9xV1J6LVhHaWRhQn1PVC1p QWwqKXNKY2xBQz1gaUYzUnxAY0lDcktFbCsxcGMpTmVzI3xRVTZlRWFlOCo2 ay03CnopO19LKGQ3Sz5tVmNEWHVjVy17VWVCc09Rendkd2trcWNQK152a2RO cE1LdW1ja3AzZT1IdXxkWl53PiZgU3RoeAp6azNYLXp7bDUzPD1aKktARlRN U0NXQTZNWHsre3BwZCo5IWB8TChgMW0qMExye19eWTB0RkxFfG9xT1dwQCoq TVQKej9iamJLZlAkWlktdT9LYWJLVDk7dWY4NkF7Xmh7S2NUYiRgbzt1aCp6 al5EPz1idnt6ezwhdztkKC1NMGA9NVJ+Cnp5I000QThfU25yIUVle0VjKGlg KT9HSGIkeldhWHUmOXs+O3pjI0pEVWNLVmwqYEEzeyY1WWtTKTwzRSR4d1pH ZQp6YFBWP0hGTmRGaC11dldKKXJ4Q0ptYVZfJT9mdWwpO1FRe341QXJndiY2 JDdkJGt9fWwtWDdYX0A9Vyl7ci1waFQKenlTc0p2Z3pXPGM4RG1NMVVvZUJp dm0wcVo0cmhUIVdIRkhUMEFzaDQqPip0Mlc9fEsjNVEpcGwyP3d8JlgzbUl8 CnpoPHE0aFI+dFMmcms1dWRILWtaYmY1VTxhOCMtM1p1JFpCSkBTTUo7czs7 dU9gdVlWY1NneEh7VChELTUqNVlPQgp6N09xXiVFMHBsKSVFaGFmcnczailG ZmNKPDwxe2R5SERsSnkoLTlGLWsrKkwmdXwoezZeRn4laUgpWVA4KnFGTngK ek96LVo8JjVPSGR4NmkyVkE3ZillYzEyVEB2KHc+MiUxVm5EQl9Da2dsZURx JEJXSV4pOzdRR1pfRD0wQSQodVhhCnpUJFVmV3lLWUh0JlRCRD0hd3hiRzN7 JF5MdyFDcVhrXzArbXdadGB8QnFneVYpaGY5dDYtWTR7ODVrUHE4WEQ7dQp6 Nz17PWJTZVkxR25WNCFEbXw3VmElekxNfDNQblMxZW9BSXFCfTlYUEMwR01j d1RZRjE4QVFYVz43aT9ZOFc9b1gKTHthbl5MQntUczVMJnN0UAoKbGl0ZXJh bCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC9zY2hlZHVsZXMv dGVtcGxhdGVzL3BnYV9zY2hlZHVsZS9jc3MvcGdhX3NjaGVkdWxlLmNzcyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3Bn QWdlbnQvc2NoZWR1bGVzL3RlbXBsYXRlcy9wZ2Ffc2NoZWR1bGUvY3NzL3Bn YV9zY2hlZHVsZS5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uYzYyYjA1OAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvc2NoZWR1 bGVzL3RlbXBsYXRlcy9wZ2Ffc2NoZWR1bGUvY3NzL3BnYV9zY2hlZHVsZS5j c3MKQEAgLTAsMCArMSw3IEBACisuaWNvbi1wZ2Ffc2NoZWR1bGUgeworICBi YWNrZ3JvdW5kLWltYWdlOiB1cmwoJ3t7IHVybF9mb3IoJ05PREUtcGdhX3Nj aGVkdWxlLnN0YXRpYycsIGZpbGVuYW1lPSdpbWcvcGdhX3NjaGVkdWxlLnBu ZycpIH19JykgIWltcG9ydGFudDsKKyAgYmFja2dyb3VuZC1yZXBlYXQ6IG5v LXJlcGVhdDsKKyAgYWxpZ24tY29udGVudDogY2VudGVyOworICB2ZXJ0aWNh bC1hbGlnbjogbWlkZGxlOworICBoZWlnaHQ6IDEuM2VtOworfQpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvcGdBZ2VudC9zY2hlZHVsZXMvdGVtcGxhdGVzL3BnYV9zY2hlZHVsZS9q cy9wZ2Ffc2NoZWR1bGUuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3NjaGVkdWxlcy90ZW1wbGF0ZXMv cGdhX3NjaGVkdWxlL2pzL3BnYV9zY2hlZHVsZS5qcwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi43NGMxZmZhCi0tLSAvZGV2L251bGwK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvcGdBZ2VudC9zY2hlZHVsZXMvdGVtcGxhdGVzL3BnYV9zY2hlZHVsZS9q cy9wZ2Ffc2NoZWR1bGUuanMKQEAgLTAsMCArMSw0NzUgQEAKK2RlZmluZShb CisgICAgICAgICdqcXVlcnknLCAndW5kZXJzY29yZScsICd1bmRlcnNjb3Jl LnN0cmluZycsICdwZ2FkbWluJywgJ21vbWVudCcsCisgICAgICAgICdwZ2Fk bWluLmJyb3dzZXInLCAnYWxlcnRpZnknLCAnYmFja2Zvcm0nLCAncGdhZG1p bi5iYWNrZm9ybScKKyAgICAgICAgXSwKK2Z1bmN0aW9uKCQsIF8sIFMsIHBn QWRtaW4sIG1vbWVudCwgcGdCcm93c2VyLCBBbGVydGlmeSwgQmFja2Zvcm0p IHsKKworICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1snY29sbC1wZ2Ffc2NoZWR1 bGUnXSkgeworICAgIHBnQnJvd3Nlci5Ob2Rlc1snY29sbC1wZ2Ffc2NoZWR1 bGUnXSA9CisgICAgICBwZ0Jyb3dzZXIuQ29sbGVjdGlvbi5leHRlbmQoewor ICAgICAgICBub2RlOiAncGdhX3NjaGVkdWxlJywKKyAgICAgICAgbGFiZWw6 ICd7eyBfKCdTY2hlZHVsZXMnKSB9fScsCisgICAgICAgIHR5cGU6ICdjb2xs LXBnYV9zY2hlZHVsZScsCisgICAgICAgIGNvbHVtbnM6IFsnanNjaWQnLCAn anNjbmFtZScsICdqc2NlbmFibGVkJ10sCisgICAgICAgIGhhc1N0YXRpc3Rp Y3M6IGZhbHNlCisgICAgICB9KTsKKyAgfQorCisgIGlmICghcGdCcm93c2Vy Lk5vZGVzWydwZ2Ffc2NoZWR1bGUnXSkgeworCisgICAgdmFyIHdlZWtkYXlz ID0gWworICAgICAgICAgICd7eyBfKCJTdW5kYXkiKSB9fScsICd7eyBfKCJN b25kYXkiKSB9fScsICd7eyBfKCJUdWVzZGF5IikgfX0nLAorICAgICAgICAg ICd7eyBfKCJXZWRuZXNkYXkiKSB9fScsICd7eyBfKCJUaHVyc2RheSIpIH19 JywgJ3t7IF8oIkZyaWRheSIpIH19JywKKyAgICAgICAgICAne3sgXygiU2F0 dXJkYXkiKSB9fScKKyAgICAgICAgXSwKKyAgICAgICAgbW9udGhkYXlzID0g WworICAgICAgICAgICd7eyBfKCIxc3QiKSB9fScsICd7eyBfKCIybmQiKSB9 fScsICd7eyBfKCIzcmQiKSB9fScsCisgICAgICAgICAgJ3t7IF8oIjR0aCIp IH19JywgJ3t7IF8oIjV0aCIpIH19JywgJ3t7IF8oIjZ0aCIpIH19JywKKyAg ICAgICAgICAne3sgXygiN3RoIikgfX0nLCAne3sgXygiOHRoIikgfX0nLCAn e3sgXygiOXRoIikgfX0nLAorICAgICAgICAgICd7eyBfKCIxMHRoIikgfX0n LCAne3sgXygiMTF0aCIpIH19JywgJ3t7IF8oIjEydGgiKSB9fScsCisgICAg ICAgICAgJ3t7IF8oIjEzdGgiKSB9fScsICd7eyBfKCIxNHRoIikgfX0nLCAn e3sgXygiMTV0aCIpIH19JywKKyAgICAgICAgICAne3sgXygiMTZ0aCIpIH19 JywgJ3t7IF8oIjE3dGgiKSB9fScsICd7eyBfKCIxOHRoIikgfX0nLAorICAg ICAgICAgICd7eyBfKCIxOXRoIikgfX0nLCAne3sgXygiMjB0aCIpIH19Jywg J3t7IF8oIjIxc3QiKSB9fScsCisgICAgICAgICAgJ3t7IF8oIjIybmQiKSB9 fScsICd7eyBfKCIyM3JkIikgfX0nLCAne3sgXygiMjR0aCIpIH19JywKKyAg ICAgICAgICAne3sgXygiMjV0aCIpIH19JywgJ3t7IF8oIjI2dGgiKSB9fScs ICd7eyBfKCIyN3RoIikgfX0nLAorICAgICAgICAgICd7eyBfKCIyOHRoIikg fX0nLCAne3sgXygiMjl0aCIpIH19JywgJ3t7IF8oIjMwdGgiKSB9fScsCisg ICAgICAgICAgJ3t7IF8oIjMxc3QiKSB9fScsICd7eyBfKCJMYXN0IGRheSIp IH19JworICAgICAgICBdLAorICAgICAgICBtb250aHMgPSBbCisgICAgICAg ICAgJ3t7IF8oIkphbnVhcnkiKSB9fScsICd7eyBfKCJGZWJydWFyeSIpIH19 JywgJ3t7IF8oIk1hcmNoIikgfX0nLAorICAgICAgICAgICd7eyBfKCJBcHJp bCIpIH19JywgJ3t7IF8oIk1heSIpIH19JywgJ3t7IF8oIkp1bmUiKSB9fScs CisgICAgICAgICAgJ3t7IF8oIkp1bHkiKSB9fScsICd7eyBfKCJBdWd1c3Qi KSB9fScsICd7eyBfKCJTZXB0ZW1iZXIiKSB9fScsCisgICAgICAgICAgJ3t7 IF8oIk9jdG9iZXIiKSB9fScsICd7eyBfKCJOb3ZlbWJlciIpIH19JywgJ3t7 IF8oIkRlY2VtYmVyIikgfX0nCisgICAgICAgIF0sCisgICAgICAgIGhvdXJz ID0gWworICAgICAgICAgICd7eyBfKCIwMCIpIH19JywgJ3t7IF8oIjAxIikg fX0nLCAne3sgXygiMDIiKSB9fScsICd7eyBfKCIwMyIpIH19JywKKyAgICAg ICAgICAne3sgXygiMDQiKSB9fScsICd7eyBfKCIwNSIpIH19JywgJ3t7IF8o IjA2IikgfX0nLCAne3sgXygiMDciKSB9fScsCisgICAgICAgICAgJ3t7IF8o IjA4IikgfX0nLCAne3sgXygiMDkiKSB9fScsICd7eyBfKCIxMCIpIH19Jywg J3t7IF8oIjExIikgfX0nLAorICAgICAgICAgICd7eyBfKCIxMiIpIH19Jywg J3t7IF8oIjEzIikgfX0nLCAne3sgXygiMTQiKSB9fScsICd7eyBfKCIxNSIp IH19JywKKyAgICAgICAgICAne3sgXygiMTYiKSB9fScsICd7eyBfKCIxNyIp IH19JywgJ3t7IF8oIjE4IikgfX0nLCAne3sgXygiMTkiKSB9fScsCisgICAg ICAgICAgJ3t7IF8oIjIwIikgfX0nLCAne3sgXygiMjEiKSB9fScsICd7eyBf KCIyMiIpIH19JywgJ3t7IF8oIjIzIikgfX0nCisgICAgICAgIF0sCisgICAg ICAgIG1pbnV0ZXMgPSBbCisgICAgICAgICAgJ3t7IF8oIjAwIikgfX0nLCAn e3sgXygiMDEiKSB9fScsICd7eyBfKCIwMiIpIH19JywgJ3t7IF8oIjAzIikg fX0nLAorICAgICAgICAgICd7eyBfKCIwNCIpIH19JywgJ3t7IF8oIjA1Iikg fX0nLCAne3sgXygiMDYiKSB9fScsICd7eyBfKCIwNyIpIH19JywKKyAgICAg ICAgICAne3sgXygiMDgiKSB9fScsICd7eyBfKCIwOSIpIH19JywgJ3t7IF8o IjEwIikgfX0nLCAne3sgXygiMTEiKSB9fScsCisgICAgICAgICAgJ3t7IF8o IjEyIikgfX0nLCAne3sgXygiMTMiKSB9fScsICd7eyBfKCIxNCIpIH19Jywg J3t7IF8oIjE1IikgfX0nLAorICAgICAgICAgICd7eyBfKCIxNiIpIH19Jywg J3t7IF8oIjE3IikgfX0nLCAne3sgXygiMTgiKSB9fScsICd7eyBfKCIxOSIp IH19JywKKyAgICAgICAgICAne3sgXygiMjAiKSB9fScsICd7eyBfKCIyMSIp IH19JywgJ3t7IF8oIjIyIikgfX0nLCAne3sgXygiMjMiKSB9fScsCisgICAg ICAgICAgJ3t7IF8oIjI0IikgfX0nLCAne3sgXygiMjUiKSB9fScsICd7eyBf KCIyNiIpIH19JywgJ3t7IF8oIjI3IikgfX0nLAorICAgICAgICAgICd7eyBf KCIyOCIpIH19JywgJ3t7IF8oIjI5IikgfX0nLCAne3sgXygiMzAiKSB9fScs ICd7eyBfKCIzMSIpIH19JywKKyAgICAgICAgICAne3sgXygiMzIiKSB9fScs ICd7eyBfKCIzMyIpIH19JywgJ3t7IF8oIjM0IikgfX0nLCAne3sgXygiMzUi KSB9fScsCisgICAgICAgICAgJ3t7IF8oIjM2IikgfX0nLCAne3sgXygiMzci KSB9fScsICd7eyBfKCIzOCIpIH19JywgJ3t7IF8oIjM5IikgfX0nLAorICAg ICAgICAgICd7eyBfKCI0MCIpIH19JywgJ3t7IF8oIjQxIikgfX0nLCAne3sg XygiNDIiKSB9fScsICd7eyBfKCI0MyIpIH19JywKKyAgICAgICAgICAne3sg XygiNDQiKSB9fScsICd7eyBfKCI0NSIpIH19JywgJ3t7IF8oIjQ2IikgfX0n LCAne3sgXygiNDciKSB9fScsCisgICAgICAgICAgJ3t7IF8oIjQ4IikgfX0n LCAne3sgXygiNDkiKSB9fScsICd7eyBfKCI1MCIpIH19JywgJ3t7IF8oIjUx IikgfX0nLAorICAgICAgICAgICd7eyBfKCI1MiIpIH19JywgJ3t7IF8oIjUz IikgfX0nLCAne3sgXygiNTQiKSB9fScsICd7eyBfKCI1NSIpIH19JywKKyAg ICAgICAgICAne3sgXygiNTYiKSB9fScsICd7eyBfKCI1NyIpIH19JywgJ3t7 IF8oIjU4IikgfX0nLCAne3sgXygiNTkiKSB9fScKKyAgICAgICAgXSwKKyAg ICAgICAgQW55RGF0ZXRpbWVDZWxsID0gQmFja2dyaWQuRXh0ZW5zaW9uLk1v bWVudENlbGwuZXh0ZW5kKHsKKyAgICAgICAgICBlZGl0b3I6IEJhY2tncmlk LkV4dGVuc2lvbi5EYXRldGltZVBpY2tlckVkaXRvciwKKyAgICAgICAgICBy ZW5kZXI6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdGhpcy4kZWwuZW1w dHkoKTsKKyAgICAgICAgICAgIHZhciBtb2RlbCA9IHRoaXMubW9kZWw7Cisg ICAgICAgICAgICB0aGlzLiRlbC50ZXh0KHRoaXMuZm9ybWF0dGVyLmZyb21S YXcobW9kZWwuZ2V0KHRoaXMuY29sdW1uLmdldCgibmFtZSIpKSwgbW9kZWwp IHx8ICd7eyBfKCc8QW55PicpIH19Jyk7CisgICAgICAgICAgICB0aGlzLmRl bGVnYXRlRXZlbnRzKCk7CisKKyAgICAgICAgICAgIHJldHVybiB0aGlzOwor ICAgICAgICAgIH0KKyAgICAgICAgfSksCisgICAgICAgIEJvb2xlYW5BcnJh eUZvcm1hdHRlciA9IGZ1bmN0aW9uKHNlbGVjdG9yLCBpbmRleGVzKSB7Cisg ICAgICAgICAgdmFyIHNlbGYgPSB0aGlzOworCisgICAgICAgICAgc2VsZi5z ZWxlY3RvciA9IHNlbGVjdG9yOworICAgICAgICAgIHNlbGYuaW5kZXhlcyA9 IGluZGV4ZXM7CisKKyAgICAgICAgICB0aGlzLmZyb21SYXcgPSBmdW5jdGlv bihyYXdEYXRhKSB7CisgICAgICAgICAgICBpZiAoIV8uaXNBcnJheShyYXdE YXRhKSkgeworICAgICAgICAgICAgICByZXR1cm4gcmF3RGF0YTsKKyAgICAg ICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHJlcyA9IFtdLCBpZHggPSAw LCByZXNJZHggPSBbXTsKKworICAgICAgICAgICAgZm9yICg7IGlkeCA8IHJh d0RhdGEubGVuZ3RoOyBpZHgrKykgeworICAgICAgICAgICAgICBpZiAoIXJh d0RhdGFbaWR4XSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg ICAgICAgICAgcmVzLnB1c2goc2VsZi5zZWxlY3RvcltpZHhdKTsKKyAgICAg ICAgICAgICAgcmVzSWR4LnB1c2goaWR4ICsgMSk7CisgICAgICAgICAgICB9 CisKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmluZGV4ZXMgPyByZXNJZHgg OiByZXMuam9pbignLCAnKTsKKyAgICAgICAgICB9CisgICAgICAgICAgdGhp cy50b1JhdyA9IGZ1bmN0aW9uKGQpIHsKKyAgICAgICAgICAgIGlmICghc2Vs Zi5pbmRleGVzKQorICAgICAgICAgICAgICByZXR1cm4gZDsKKyAgICAgICAg ICAgIHZhciByZXMgPSBbXSwgaSA9IDAsIGwgPSBzZWxmLnNlbGVjdG9yLmxl bmd0aDsKKworICAgICAgICAgICAgZm9yICg7IGkgPCBsOyBpKyspIHsKKyAg ICAgICAgICAgICAgcmVzLnB1c2goXy5pbmRleE9mKGQsIFN0cmluZyhpICsg MSkpICE9IC0xKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvbnNv bGUubG9nKHJlcyk7CisgICAgICAgICAgICByZXR1cm4gcmVzOworICAgICAg ICAgIH0KKworICAgICAgICAgIHJldHVybiBzZWxmOworICAgICAgICB9LAor ICAgICAgICBCb29sZWFuQXJyYXlPcHRpb25zID0gZnVuY3Rpb24oY3RybCkg eworICAgICAgICAgIHZhciBzZWxlY3RvciA9IGN0cmwuZmllbGQuZ2V0KCdz ZWxlY3RvcicpLAorICAgICAgICAgICAgICB2YWwgPSBjdHJsLm1vZGVsLmdl dChjdHJsLmZpZWxkLmdldCgnbmFtZScpKSwKKyAgICAgICAgICAgICAgcmVz ID0gW107CisKKyAgICAgICAgICBpZiAoc2VsZWN0b3IpIHsKKyAgICAgICAg ICAgIHJlcyA9IF8ubWFwKAorICAgICAgICAgICAgICBzZWxlY3RvciwgZnVu Y3Rpb24odiwgaSkgeworICAgICAgICAgICAgICAgIHJldHVybiB7bGFiZWw6 IHYsIHZhbHVlOiBpICsgMSwgc2VsZWN0ZWQ6IHZhbFtpXX07CisgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgICk7CisgICAgICAgICAgfQorICAgICAg ICAgIHJldHVybiByZXM7CisgICAgICAgIH0sCisgICAgICAgIEV4Y2VwdGlv bk1vZGVsID0gcGdCcm93c2VyLk5vZGUuTW9kZWwuZXh0ZW5kKHsKKyAgICAg ICAgICBkZWZhdWx0czogeworICAgICAgICAgICAgamV4aWQ6IHVuZGVmaW5l ZCwKKyAgICAgICAgICAgIGpleGRhdGU6IG51bGwsCisgICAgICAgICAgICBq ZXh0aW1lOiBudWxsCisgICAgICAgICAgfSwKKyAgICAgICAgICBpZEF0dHJp YnV0ZTogJ2pleGlkJywKKyAgICAgICAgICBzY2hlbWE6IFt7CisgICAgICAg ICAgICBpZDogJ2pleGRhdGUnLCB0eXBlOiAndGV4dCcsIGxhYmVsOiAne3sg XygnRGF0ZScpIH19JywKKyAgICAgICAgICAgIGVkaXRhYmxlOiB0cnVlLCBw bGFjZWhvbGRlcjogJ3t7IF8oJzxhbnk+JykgfX0nLAorICAgICAgICAgICAg Y2VsbDogQW55RGF0ZXRpbWVDZWxsLCBvcHRpb25zOiB7Zm9ybWF0OiAnWVlZ WS1NTS1ERCd9LAorICAgICAgICAgICAgZGlzcGxheUZvcm1hdDogJ1lZWVkt TU0tREQnLCBtb2RlbEZvcm1hdDogJ1lZWVktTU0tREQnLAorICAgICAgICAg ICAgY2VsbEhlYWRlckNsYXNzZXM6J3dpZHRoX3BlcmNlbnRfNTAnLCBhbGxv d0VtcHR5OiB0cnVlCisgICAgICAgICAgfSx7CisgICAgICAgICAgICBpZDog J2pleHRpbWUnLCB0eXBlOiAndGV4dCcsIHBsYWNlaG9sZGVyOiAne3sgXygn PGFueT4nKSB9fScsCisgICAgICAgICAgICBsYWJlbDogJ3t7IF8oJ1RpbWUn KSB9fScsIGVkaXRhYmxlOiB0cnVlLCBjZWxsOiBBbnlEYXRldGltZUNlbGws CisgICAgICAgICAgICBvcHRpb25zOiB7Zm9ybWF0OiAnSEg6bW0nfSwgZGlz cGxheUZvcm1hdDogJ0hIOm1tJywKKyAgICAgICAgICAgIG1vZGVsRm9ybWF0 OiAnSEg6bW06c3MnLCBkaXNwbGF5SW5VVEM6IGZhbHNlLCBhbGxvd0VtcHR5 OiB0cnVlLAorICAgICAgICAgICAgY2VsbEhlYWRlckNsYXNzZXM6J3dpZHRo X3BlcmNlbnRfNTAnLCBtb2RhbEluVVRDOiBmYWxzZQorICAgICAgICAgIH1d LAorICAgICAgICAgIHZhbGlkYXRlOiBmdW5jdGlvbigpIHsKKyAgICAgICAg ICAgIHZhciBzZWxmID0gdGhpcywgZXhjZXB0aW9ucyA9IHRoaXMuY29sbGVj dGlvbiwKKyAgICAgICAgICAgICAgICBkYXRlcyA9IHt9LCBlcnJNc2csIGhh c0V4Y2VwdGlvbkVyciA9IGZhbHNlLAorICAgICAgICAgICAgICAgIGQgPSAo dGhpcy5nZXQoJ2pleGRhdGUnKSB8fCAnPGFueT4nKSwKKyAgICAgICAgICAg ICAgICB0ID0gdGhpcy5nZXQoJ2pleHRpbWUnKSB8fCAnPGFueT4nLAorICAg ICAgICAgICAgICAgIGlkID0gdGhpcy5nZXQoJ2pleGlkJykgfHwgdGhpcy5j aWQ7CisKKyAgICAgICAgICAgIHNlbGYuZXJyb3JNb2RlbC51bnNldCgnanNj ZGF0ZScpOworICAgICAgICAgICAgaWYgKGQgPT0gdCAmJiBkID09ICc8YW55 PicpIHsKKyAgICAgICAgICAgICAgZXJyTXNnID0gJ3t7IF8oJ1BsZWFzZSBz cGVjaWZ5IGRhdGUvdGltZS4nKSB9fSc7CisgICAgICAgICAgICAgIHNlbGYu ZXJyb3JNb2RlbC5zZXQoJ2pzY2RhdGUnLCBlcnJNc2cpOworICAgICAgICAg ICAgICByZXR1cm4gZXJyTXNnIDsKKyAgICAgICAgICAgIH0KKworICAgICAg ICAgICAgZXhjZXB0aW9ucy5lYWNoKGZ1bmN0aW9uKGV4KSB7CisgICAgICAg ICAgICAgIGlmIChoYXNFeGNlcHRpb25FcnIgfHwgaWQgPT0gKGV4LmdldCgn amV4aWQnKSB8fCBleC5jaWQpKQorICAgICAgICAgICAgICAgIHJldHVybjsK KworICAgICAgICAgICAgICBpZiAoCisgICAgICAgICAgICAgICAgZCA9PSAo ZXguZ2V0KCdqZXhkYXRlJykgfHwgJzxhbnk+JykgJiYKKyAgICAgICAgICAg ICAgICB0ID09IChleC5nZXQoJ2pleHRpbWUnKSB8fCAnPGFueT4nKQorICAg ICAgICAgICAgICApIHsKKyAgICAgICAgICAgICAgICBlcnJNc2cgPSAne3sg XygnUGxlYXNlIHNwZWNpZnkgdW5pcXVlIHNldCBvZiBleGNlcHRpb25zLicp IH19JzsKKyAgICAgICAgICAgICAgICBpZiAoZXguZXJyb3JNb2RlbC5nZXQo J2pzY2RhdGUnKSAhPSBlcnJNc2cpCisgICAgICAgICAgICAgICAgICAgIHNl bGYuZXJyb3JNb2RlbC5zZXQoJ2pzY2RhdGUnLCBlcnJNc2cpOworICAgICAg ICAgICAgICAgIGhhc0V4Y2VwdGlvbkVyciA9IHRydWU7CisgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICByZXR1cm4g ZXJyTXNnOworICAgICAgICAgIH0KKyAgICAgICAgfSk7CisKKyAgICBwZ0Jy b3dzZXIuTm9kZXNbJ3BnYV9zY2hlZHVsZSddID0gcGdCcm93c2VyLk5vZGUu ZXh0ZW5kKHsKKyAgICAgIHBhcmVudF90eXBlOiAncGdhX2pvYicsCisgICAg ICB0eXBlOiAncGdhX3NjaGVkdWxlJywKKyAgICAgIGhhc1NRTDogZmFsc2Us CisgICAgICBoYXNEZXBlbmRzOiBmYWxzZSwKKyAgICAgIGhhc1N0YXRpc3Rp Y3M6IGZhbHNlLAorICAgICAgY2FuRHJvcDogZnVuY3Rpb24obm9kZSkgewor ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIH0sCisgICAgICBsYWJlbDog J3t7IF8oJ1NjaGVkdWxlJykgfX0nLAorICAgICAgbm9kZV9pbWFnZTogJ2lj b24tcGdhX3NjaGVkdWxlJywKKyAgICAgIEluaXQ6IGZ1bmN0aW9uKCkgewor ICAgICAgICAvKiBBdm9pZCBtdWxpdHBsZSByZWdpc3RyYXRpb24gb2YgbWVu dXMgKi8KKyAgICAgICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpCisgICAgICAg ICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRy dWU7CisKKyAgICAgICAgcGdCcm93c2VyLmFkZF9tZW51cyhbeworICAgICAg ICAgIG5hbWU6ICdjcmVhdGVfcGdhX3NjaGVkdWxlX29uX2pvYicsIG5vZGU6 ICdwZ2Ffam9iJywgbW9kdWxlOiB0aGlzLAorICAgICAgICAgIGFwcGxpZXM6 IFsnb2JqZWN0JywgJ2NvbnRleHQnXSwgY2FsbGJhY2s6ICdzaG93X29ial9w cm9wZXJ0aWVzJywKKyAgICAgICAgICBjYXRlZ29yeTogJ2NyZWF0ZScsIHBy aW9yaXR5OiA0LCBsYWJlbDogJ3t7IF8oJ1NjaGVkdWxlLi4uJykgfX0nLAor ICAgICAgICAgIGljb246ICd3Y1RhYkljb24gaWNvbi1wZ2Ffc2NoZWR1bGUn LCBkYXRhOiB7YWN0aW9uOiAnY3JlYXRlJ30KKyAgICAgICAgfSx7CisgICAg ICAgICAgbmFtZTogJ2NyZWF0ZV9wZ2Ffc2NoZWR1bGVfb25fY29sbCcsIG5v ZGU6ICdjb2xsLXBnYV9zY2hlZHVsZScsIG1vZHVsZTogdGhpcywKKyAgICAg ICAgICBhcHBsaWVzOiBbJ29iamVjdCcsICdjb250ZXh0J10sIGNhbGxiYWNr OiAnc2hvd19vYmpfcHJvcGVydGllcycsCisgICAgICAgICAgY2F0ZWdvcnk6 ICdjcmVhdGUnLCBwcmlvcml0eTogNCwgbGFiZWw6ICd7eyBfKCdTY2hlZHVs ZS4uLicpIH19JywKKyAgICAgICAgICBpY29uOiAnd2NUYWJJY29uIGljb24t cGdhX3NjaGVkdWxlJywgZGF0YToge2FjdGlvbjogJ2NyZWF0ZSd9CisgICAg ICAgIH0seworICAgICAgICAgIG5hbWU6ICdjcmVhdGVfcGdhX3NjaGVkdWxl Jywgbm9kZTogJ3BnYV9zY2hlZHVsZScsIG1vZHVsZTogdGhpcywKKyAgICAg ICAgICBhcHBsaWVzOiBbJ29iamVjdCcsICdjb250ZXh0J10sIGNhbGxiYWNr OiAnc2hvd19vYmpfcHJvcGVydGllcycsCisgICAgICAgICAgY2F0ZWdvcnk6 ICdjcmVhdGUnLCBwcmlvcml0eTogNCwgbGFiZWw6ICd7eyBfKCdTY2hlZHVs ZS4uLicpIH19JywKKyAgICAgICAgICBpY29uOiAnd2NUYWJJY29uIGljb24t cGdhX3NjaGVkdWxlJywgZGF0YToge2FjdGlvbjogJ2NyZWF0ZSd9CisgICAg ICAgIH1dKTsKKyAgICAgIH0sCisgICAgICBtb2RlbDogcGdCcm93c2VyLk5v ZGUuTW9kZWwuZXh0ZW5kKHsKKyAgICAgICAgZGVmYXVsdHM6IHsKKyAgICAg ICAgICBqc2NpZDogbnVsbCwKKyAgICAgICAgICBqc2Nqb2JpZDogbnVsbCwK KyAgICAgICAgICBqc2NuYW1lOiAnJywKKyAgICAgICAgICBqc2NkZXNjOiAn JywKKyAgICAgICAgICBqc2NlbmFibGVkOiB0cnVlLAorICAgICAgICAgIGpz Y3N0YXJ0OiBudWxsLAorICAgICAgICAgIGpzY2VuZDogbnVsbCwKKyAgICAg ICAgICBqc2N3ZWVrZGF5czogXy5tYXAod2Vla2RheXMsIGZ1bmN0aW9uKCkg eyByZXR1cm4gZmFsc2U7IH0pLAorICAgICAgICAgIGpzY21vbnRoZGF5czog Xy5tYXAobW9udGhkYXlzLCBmdW5jdGlvbigpIHsgcmV0dXJuIGZhbHNlOyB9 KSwKKyAgICAgICAgICBqc2Ntb250aHM6IF8ubWFwKG1vbnRocywgZnVuY3Rp b24oKSB7IHJldHVybiBmYWxzZTsgfSksCisgICAgICAgICAganNjaG91cnM6 IF8ubWFwKGhvdXJzLCBmdW5jdGlvbigpIHsgcmV0dXJuIGZhbHNlOyB9KSwK KyAgICAgICAgICBqc2NtaW51dGVzOiBfLm1hcChtaW51dGVzLCBmdW5jdGlv bigpIHsgcmV0dXJuIGZhbHNlOyB9KSwKKyAgICAgICAgICBqc2NleGNlcHRp b25zOiBbXQorICAgICAgICB9LAorICAgICAgICBpZEF0dHJpYnV0ZTogJ2pz Y2lkJywKKyAgICAgICAgcGFyc2U6IGZ1bmN0aW9uKGQpIHsKKyAgICAgICAg ICBkLmpzY2V4Y2VwdGlvbnMgPSBbXTsKKyAgICAgICAgICBpZiAoZC5qZXhp ZCAmJiBkLmpleGlkLmxlbmd0aCkgeworICAgICAgICAgICAgdmFyIGlkeCA9 IDA7CisgICAgICAgICAgICBmb3IgKDsgaWR4IDwgZC5qZXhpZC5sZW5ndGg7 IGlkeCsrKSB7CisgICAgICAgICAgICAgIGQuanNjZXhjZXB0aW9ucy5wdXNo KHsKKyAgICAgICAgICAgICAgICAnamV4aWQnOiBkLmpleGlkW2lkeF0sCisg ICAgICAgICAgICAgICAgJ2pleGRhdGUnOiBkLmpleGRhdGVbaWR4XSwKKyAg ICAgICAgICAgICAgICAnamV4dGltZSc6IGQuamV4dGltZVtpZHhdCisgICAg ICAgICAgICAgIH0pOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAg ICAgICAgICBkZWxldGUgZC5qZXhpZDsKKyAgICAgICAgICBkZWxldGUgZC5q ZXhkYXRlOworICAgICAgICAgIGRlbGV0ZSBkLmpleHRpbWU7CisKKyAgICAg ICAgICByZXR1cm4gcGdCcm93c2VyLk5vZGUuTW9kZWwucHJvdG90eXBlLnBh cnNlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CisgICAgICAgIH0sCisgICAg ICAgIHNjaGVtYTogW3sKKyAgICAgICAgICBpZDogJ2pzY2lkJywgbGFiZWw6 ICd7eyBfKCdJRCcpIH19JywgdHlwZTogJ2ludGVnZXInLAorICAgICAgICAg IGNlbGxIZWFkZXJDbGFzc2VzOiAnd2lkdGhfcGVyY2VudF81JywgbW9kZTog Wydwcm9wZXJ0aWVzJ10KKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdq c2NuYW1lJywgbGFiZWw6ICd7eyBfKCdOYW1lJykgfX0nLCB0eXBlOiAndGV4 dCcsCisgICAgICAgICAgY2VsbEhlYWRlckNsYXNzZXM6ICd3aWR0aF9wZXJj ZW50XzQ1JywKKyAgICAgICAgICBkaXNhYmxlZDogZnVuY3Rpb24oKSB7IHJl dHVybiBmYWxzZTsgfQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2pz Y2VuYWJsZWQnLCBsYWJlbDogJ3t7IF8oJ0VuYWJsZWQnKSB9fScsIHR5cGU6 ICdzd2l0Y2gnLAorICAgICAgICAgIGRpc2FibGVkOiBmdW5jdGlvbigpIHsg cmV0dXJuIGZhbHNlOyB9LAorICAgICAgICAgIGNlbGxIZWFkZXJDbGFzc2Vz OiAnd2lkdGhfcGVyY2VudF81JworICAgICAgICB9LHsKKyAgICAgICAgICBp ZDogJ2pzY3N0YXJ0JywgbGFiZWw6ICd7eyBfKCdTdGFydCcpIH19JywgdHlw ZTogJ3RleHQnLAorICAgICAgICAgIGNvbnRyb2w6ICdkYXRldGltZXBpY2tl cicsIGNlbGw6ICdtb21lbnQnLAorICAgICAgICAgIGRpc2FibGVkOiBmdW5j dGlvbigpIHsgcmV0dXJuIGZhbHNlOyB9LAorICAgICAgICAgIGRpc3BsYXlG b3JtYXQ6ICdZWVlZLU1NLUREIEhIOm1tOlNTIFonLAorICAgICAgICAgIG1v ZGVsRm9ybWF0OiAnWVlZWS1NTS1ERCBISDptbTpTUyBaJywgb3B0aW9uczog eworICAgICAgICAgICAgZm9ybWF0OiAnWVlZWS1NTS1ERCBISDptbTpTUyBa JywKKyAgICAgICAgICB9LCBjZWxsSGVhZGVyQ2xhc3NlczogJ3dpZHRoX3Bl cmNlbnRfMjUnCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAnanNjZW5k JywgbGFiZWw6ICd7eyBfKCdFbmQnKSB9fScsIHR5cGU6ICd0ZXh0JywKKyAg ICAgICAgICBjb250cm9sOiAnZGF0ZXRpbWVwaWNrZXInLCBjZWxsOiAnbW9t ZW50JywKKyAgICAgICAgICBkaXNhYmxlZDogZnVuY3Rpb24oKSB7IHJldHVy biBmYWxzZTsgfSwgZGlzcGxheUluVVRDOiBmYWxzZSwKKyAgICAgICAgICBk aXNwbGF5Rm9ybWF0OiAnWVlZWS1NTS1ERCBISDptbTpTUyBaJywgb3B0aW9u czogeworICAgICAgICAgICAgZm9ybWF0OiAnWVlZWS1NTS1ERCBISDptbTpT UyBaJywgdXNlQ3VycmVudDogZmFsc2UKKyAgICAgICAgICB9LCBjZWxsSGVh ZGVyQ2xhc3NlczogJ3dpZHRoX3BlcmNlbnRfMjUnLAorICAgICAgICAgIG1v ZGVsRm9ybWF0OiAnWVlZWS1NTS1ERCBISDptbTpTUyBaJworICAgICAgICB9 LHsKKyAgICAgICAgICBpZDogJ2pzY3dlZWtkYXlzJywgbGFiZWw6J3t7IF8o J1dlZWsgRGF5cycpIH19JywgdHlwZTogJ3RleHQnLAorICAgICAgICAgIGNv bnRyb2w6IEJhY2tmb3JtLkNvbnRyb2wuZXh0ZW5kKHsKKyAgICAgICAgICAg IGZvcm1hdHRlcjogbmV3IEJvb2xlYW5BcnJheUZvcm1hdHRlcih3ZWVrZGF5 cywgZmFsc2UpCisgICAgICAgICAgfSksIG1vZGU6IFsncHJvcGVydGllcydd CisgICAgICAgIH0seworICAgICAgICAgIGlkOiAnanNjbW9udGhkYXlzJywg bGFiZWw6J3t7IF8oJ01vbnRoIERheXMnKSB9fScsIHR5cGU6ICd0ZXh0JywK KyAgICAgICAgICBjb250cm9sOiBCYWNrZm9ybS5Db250cm9sLmV4dGVuZCh7 CisgICAgICAgICAgICBmb3JtYXR0ZXI6IG5ldyBCb29sZWFuQXJyYXlGb3Jt YXR0ZXIobW9udGhkYXlzLCBmYWxzZSkKKyAgICAgICAgICB9KSwgbW9kZTog Wydwcm9wZXJ0aWVzJ10KKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdq c2Ntb250aHMnLCBsYWJlbDone3sgXygnTW9udGhzJykgfX0nLCB0eXBlOiAn dGV4dCcsCisgICAgICAgICAgY29udHJvbDogQmFja2Zvcm0uQ29udHJvbC5l eHRlbmQoeworICAgICAgICAgICAgZm9ybWF0dGVyOiBuZXcgQm9vbGVhbkFy cmF5Rm9ybWF0dGVyKG1vbnRocywgZmFsc2UpCisgICAgICAgICAgfSksIG1v ZGU6IFsncHJvcGVydGllcyddCisgICAgICAgIH0seworICAgICAgICAgIGlk OiAnanNjaG91cnMnLCBsYWJlbDone3sgXygnSG91cnMnKSB9fScsIHR5cGU6 ICd0ZXh0JywKKyAgICAgICAgICBjb250cm9sOiBCYWNrZm9ybS5Db250cm9s LmV4dGVuZCh7CisgICAgICAgICAgICBmb3JtYXR0ZXI6IG5ldyBCb29sZWFu QXJyYXlGb3JtYXR0ZXIoaG91cnMsIGZhbHNlKQorICAgICAgICAgIH0pLCBt b2RlOiBbJ3Byb3BlcnRpZXMnXQorICAgICAgICB9LHsKKyAgICAgICAgICBp ZDogJ2pzY21pbnV0ZXMnLCBsYWJlbDone3sgXygnTWludXRlcycpIH19Jywg dHlwZTogJ3RleHQnLAorICAgICAgICAgIGNvbnRyb2w6IEJhY2tmb3JtLkNv bnRyb2wuZXh0ZW5kKHsKKyAgICAgICAgICAgIGZvcm1hdHRlcjogbmV3IEJv b2xlYW5BcnJheUZvcm1hdHRlcihtaW51dGVzLCBmYWxzZSkKKyAgICAgICAg ICB9KSwgbW9kZTogWydwcm9wZXJ0aWVzJ10KKyAgICAgICAgfSx7CisgICAg ICAgICAgaWQ6ICdqc2NleGNlcHRpb25zJywgbGFiZWw6J3t7IF8oJ0V4Y2Vw dGlvbnMnKSB9fScsIHR5cGU6ICd0ZXh0JywKKyAgICAgICAgICBjb250cm9s OiBCYWNrZm9ybS5Db250cm9sLmV4dGVuZCh7CisgICAgICAgICAgICBmb3Jt YXR0ZXI6IG5ldyBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgdGhpcy5m cm9tUmF3ID0gZnVuY3Rpb24ocmF3RGF0YSkgeworICAgICAgICAgICAgICAg IHZhciByZXMgPSAnJywgaWR4ID0gMCwgZDsKKworICAgICAgICAgICAgICAg IGlmICghcmF3RGF0YSkgeworICAgICAgICAgICAgICAgICAgcmV0dXJuIHJl czsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBmb3Ig KDsgaWR4IDwgcmF3RGF0YS5sZW5ndGg7IGlkeCsrKSB7CisgICAgICAgICAg ICAgICAgICBkID0gcmF3RGF0YVtpZHhdOworICAgICAgICAgICAgICAgICAg aWYgKGlkeCkKKyAgICAgICAgICAgICAgICAgICAgICByZXMgKz0gJywgJzsK KyAgICAgICAgICAgICAgICAgIHJlcyArPSAnWycgKyBTdHJpbmcoKGQuamV4 ZGF0ZSB8fCAnJykgKyAnICcgKyAoZC5qZXh0aW1lIHx8ICcnKSkucmVwbGFj ZSgvXlxzK3xccyskL2csICcnKSArICddJzsKKyAgICAgICAgICAgICAgICB9 CisKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzOworICAgICAgICAgICAg ICB9CisgICAgICAgICAgICAgIHRoaXMudG9SYXcgPSBmdW5jdGlvbihkYXRh KSB7IHJldHVybiBkYXRhOyB9CisKKyAgICAgICAgICAgICAgcmV0dXJuIHRo aXM7CisgICAgICAgICAgICB9CisgICAgICAgICAgfSksIG1vZGU6IFsncHJv cGVydGllcyddCisgICAgICAgIH0seworICAgICAgICAgIHR5cGU6ICduZXN0 ZWQnLCBsYWJlbDogJ3t7IF8oJ0RheXMnKSB9fScsIGdyb3VwOiAne3sgXygn UmVwZWF0JykgfX0nLAorICAgICAgICAgIG1vZGU6IFsnY3JlYXRlJywgJ2Vk aXQnXSwKKyAgICAgICAgICBjb250cm9sOiBCYWNrZm9ybS5GaWVsZHNldENv bnRyb2wuZXh0ZW5kKHsKKyAgICAgICAgICAgIHJlbmRlcjogZnVuY3Rpb24o KSB7CisgICAgICAgICAgICAgIHZhciByZXMgPSBCYWNrZm9ybS5GaWVsZHNl dENvbnRyb2wucHJvdG90eXBlLnJlbmRlci5hcHBseSgKKyAgICAgICAgICAg ICAgICB0aGlzLCBhcmd1bWVudHMKKyAgICAgICAgICAgICAgKTsKKworICAg ICAgICAgICAgICB0aGlzLiRlbC5wcmVwZW5kKAorICAgICAgICAgICAgICAg ICc8ZGl2IGNsYXNzPSInICsgQmFja2Zvcm0uaGVscE1lc3NhZ2VDbGFzc05h bWUgKyAnIHNldC1ncm91cCBwZy1lbC14cy0xMiI+e3sgXygiU2NoZWR1bGVz IGFyZSBzcGVjaWZpZWQgdXNpbmcgYSA8Yj5jcm9uLXN0eWxlPC9iPiBmb3Jt YXQuPGJyLz48dWw+PGxpPkZvciBlYWNoIHNlbGVjdGVkIHRpbWUgb3IgZGF0 ZSBlbGVtZW50LCB0aGUgc2NoZWR1bGUgd2lsbCBleGVjdXRlLjxici8+ZS5n LiBUbyBleGVjdXRlIGF0IDUgbWludXRlcyBwYXN0IGV2ZXJ5IGhvdXIsIHNp bXBseSBzZWxlY3Qg4oCYMDXigJkgaW4gdGhlIE1pbnV0ZXMgbGlzdCBib3gu PGJyLz48L2xpPjxsaT5WYWx1ZXMgZnJvbSBtb3JlIHRoYW4gb25lIGZpZWxk IG1heSBiZSBzcGVjaWZpZWQgaW4gb3JkZXIgdG8gZnVydGhlciBjb250cm9s IHRoZSBzY2hlZHVsZS48YnIvPmUuZy4gVG8gZXhlY3V0ZSBhdCAxMjowNSBh bmQgMTQ6MDUgZXZlcnkgTW9uZGF5IGFuZCBUaHVyc2RheSwgeW91IHdvdWxk IGNsaWNrIG1pbnV0ZSAwNSwgaG91cnMgMTIgYW5kIDE0LCBhbmQgd2Vla2Rh eXMgTW9uZGF5IGFuZCBUaHVyc2RheS48L2xpPjxsaT5Gb3IgYWRkaXRpb25h bCBmbGV4aWJpbGl0eSwgdGhlIE1vbnRoIERheXMgY2hlY2sgbGlzdCBpbmNs dWRlcyBhbiBleHRyYSBMYXN0IERheSBvcHRpb24uIFRoaXMgbWF0Y2hlcyB0 aGUgbGFzdCBkYXkgb2YgdGhlIG1vbnRoLCB3aGV0aGVyIGl0IGhhcHBlbnMg dG8gYmUgdGhlIDI4dGgsIDI5dGgsIDMwdGggb3IgMzFzdC48L2xpPjwvdWw+ IikgfX08L2Rpdj4nCisgICAgICAgICAgICAgICk7CisKKyAgICAgICAgICAg ICAgcmV0dXJuIHJlczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9KSwK KyAgICAgICAgICBzY2hlbWE6W3sKKyAgICAgICAgICAgIGlkOiAnanNjd2Vl a2RheXMnLCBsYWJlbDone3sgXygnV2VlayBEYXlzJykgfX0nLCBjZWxsOiAn c2VsZWN0MicsCisgICAgICAgICAgICBncm91cDogJ3t7IF8oJ0RheXMnKSB9 fScsIGNvbnRyb2w6ICdzZWxlY3QyJywgdHlwZTogJ2FycmF5JywKKyAgICAg ICAgICAgIHNlbGVjdDI6IHsKKyAgICAgICAgICAgICAgZmlyc3RfZW1wdHk6 IGZhbHNlLAorICAgICAgICAgICAgICBtdWx0aXBsZTogdHJ1ZSwKKyAgICAg ICAgICAgICAgYWxsb3dDbGVhcjogdHJ1ZSwKKyAgICAgICAgICAgICAgcGxh Y2Vob2xkZXI6ICd7eyBfKCJTZWxlY3QgdGhlIHdlZWtkYXlzLi4uIikgfX0n LAorICAgICAgICAgICAgICB3aWR0aDogJ3N0eWxlJywKKyAgICAgICAgICAg ICAgZHJvcGRvd25BZGFwdGVyOiAkLmZuLnNlbGVjdDIuYW1kLnJlcXVpcmUo CisgICAgICAgICAgICAgICAgJ3NlbGVjdDIvc2VsZWN0QWxsQWRhcHRlcicK KyAgICAgICAgICAgICAgKQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAg IHNlbGVjdG9yOiB3ZWVrZGF5cywKKyAgICAgICAgICAgIGZvcm1hdHRlcjog bmV3IEJvb2xlYW5BcnJheUZvcm1hdHRlcih3ZWVrZGF5cywgdHJ1ZSksCisg ICAgICAgICAgICBvcHRpb25zOiBCb29sZWFuQXJyYXlPcHRpb25zCisgICAg ICAgICAgfSx7CisgICAgICAgICAgICBpZDogJ2pzY21vbnRoZGF5cycsIGxh YmVsOid7eyBfKCdNb250aCBEYXlzJykgfX0nLCBjZWxsOiAnc2VsZWN0Mics CisgICAgICAgICAgICBncm91cDogJ3t7IF8oJ0RheXMnKSB9fScsIGNvbnRy b2w6ICdzZWxlY3QyJywgdHlwZTogJ2FycmF5JywKKyAgICAgICAgICAgIHNl bGVjdDI6IHsKKyAgICAgICAgICAgICAgZmlyc3RfZW1wdHk6IGZhbHNlLAor ICAgICAgICAgICAgICBtdWx0aXBsZTogdHJ1ZSwKKyAgICAgICAgICAgICAg YWxsb3dDbGVhcjogdHJ1ZSwKKyAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6 ICd7eyBfKCJTZWxlY3QgdGhlIG1vbnRoIGRheXMuLi4iKSB9fScsCisgICAg ICAgICAgICAgIHdpZHRoOiAnc3R5bGUnLAorICAgICAgICAgICAgICBkcm9w ZG93bkFkYXB0ZXI6ICQuZm4uc2VsZWN0Mi5hbWQucmVxdWlyZSgKKyAgICAg ICAgICAgICAgICAnc2VsZWN0Mi9zZWxlY3RBbGxBZGFwdGVyJworICAgICAg ICAgICAgICApCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgZm9ybWF0 dGVyOiBuZXcgQm9vbGVhbkFycmF5Rm9ybWF0dGVyKG1vbnRoZGF5cywgdHJ1 ZSksCisgICAgICAgICAgICBzZWxlY3RvcjogbW9udGhkYXlzLCBvcHRpb25z OiBCb29sZWFuQXJyYXlPcHRpb25zCisgICAgICAgICAgfSx7CisgICAgICAg ICAgICBpZDogJ2pzY21vbnRocycsIGxhYmVsOid7eyBfKCdNb250aHMnKSB9 fScsIGNlbGw6ICdzZWxlY3QyJywKKyAgICAgICAgICAgIGdyb3VwOiAne3sg XygnRGF5cycpIH19JywgY29udHJvbDogJ3NlbGVjdDInLCB0eXBlOiAnYXJy YXknLAorICAgICAgICAgICAgc2VsZWN0MjogeworICAgICAgICAgICAgICBm aXJzdF9lbXB0eTogZmFsc2UsCisgICAgICAgICAgICAgIG11bHRpcGxlOiB0 cnVlLAorICAgICAgICAgICAgICBhbGxvd0NsZWFyOiB0cnVlLAorICAgICAg ICAgICAgICBwbGFjZWhvbGRlcjogJ3t7IF8oIlNlbGVjdCB0aGUgbW9udGhz Li4uIikgfX0nLAorICAgICAgICAgICAgICB3aWR0aDogJ3N0eWxlJywKKyAg ICAgICAgICAgICAgZHJvcGRvd25BZGFwdGVyOiAkLmZuLnNlbGVjdDIuYW1k LnJlcXVpcmUoCisgICAgICAgICAgICAgICAgJ3NlbGVjdDIvc2VsZWN0QWxs QWRhcHRlcicKKyAgICAgICAgICAgICAgKQorICAgICAgICAgICAgfSwKKyAg ICAgICAgICAgIGZvcm1hdHRlcjogbmV3IEJvb2xlYW5BcnJheUZvcm1hdHRl cihtb250aHMsIHRydWUpLAorICAgICAgICAgICAgc2VsZWN0b3I6IG1vbnRo cywgb3B0aW9uczogQm9vbGVhbkFycmF5T3B0aW9ucworICAgICAgICAgIH1d CisgICAgICAgIH0seworICAgICAgICAgIHR5cGU6ICduZXN0ZWQnLCBjb250 cm9sOiAnZmllbGRzZXQnLCBsYWJlbDogJ3t7IF8oJ1RpbWVzJykgfX0nLAor ICAgICAgICAgIGdyb3VwOiAne3sgXygnUmVwZWF0JykgfX0nLCBtb2RlOiBb J2NyZWF0ZScsICdlZGl0J10sCisgICAgICAgICAgc2NoZW1hOlt7CisgICAg ICAgICAgICBpZDogJ2pzY2hvdXJzJywgbGFiZWw6J3t7IF8oJ0hvdXJzJykg fX0nLCBjZWxsOiAnc2VsZWN0MicsCisgICAgICAgICAgICBncm91cDogJ3t7 IF8oJ1RpbWVzJykgfX0nLCBjb250cm9sOiAnc2VsZWN0MicsIHR5cGU6ICdh cnJheScsCisgICAgICAgICAgICBzZWxlY3QyOiB7CisgICAgICAgICAgICAg IGZpcnN0X2VtcHR5OiBmYWxzZSwKKyAgICAgICAgICAgICAgbXVsdGlwbGU6 IHRydWUsCisgICAgICAgICAgICAgIGFsbG93Q2xlYXI6IHRydWUsCisgICAg ICAgICAgICAgIHBsYWNlaG9sZGVyOiAne3sgXygiU2VsZWN0IHRoZSBob3Vy cy4uLiIpIH19JywKKyAgICAgICAgICAgICAgd2lkdGg6ICdzdHlsZScsCisg ICAgICAgICAgICAgIGRyb3Bkb3duQWRhcHRlcjogJC5mbi5zZWxlY3QyLmFt ZC5yZXF1aXJlKAorICAgICAgICAgICAgICAgICdzZWxlY3QyL3NlbGVjdEFs bEFkYXB0ZXInCisgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIH0sCisg ICAgICAgICAgICBmb3JtYXR0ZXI6IG5ldyBCb29sZWFuQXJyYXlGb3JtYXR0 ZXIoaG91cnMsIHRydWUpLAorICAgICAgICAgICAgc2VsZWN0b3I6IGhvdXJz LCBvcHRpb25zOiBCb29sZWFuQXJyYXlPcHRpb25zCisgICAgICAgICAgfSx7 CisgICAgICAgICAgICBpZDogJ2pzY21pbnV0ZXMnLCBsYWJlbDone3sgXygn TWludXRlcycpIH19JywgY2VsbDogJ3NlbGVjdDInLAorICAgICAgICAgICAg Z3JvdXA6ICd7eyBfKCdUaW1lcycpIH19JywgY29udHJvbDogJ3NlbGVjdDIn LCB0eXBlOiAnYXJyYXknLAorICAgICAgICAgICAgc2VsZWN0MjogeworICAg ICAgICAgICAgICBmaXJzdF9lbXB0eTogZmFsc2UsCisgICAgICAgICAgICAg IG11bHRpcGxlOiB0cnVlLAorICAgICAgICAgICAgICBhbGxvd0NsZWFyOiB0 cnVlLAorICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJ3t7IF8oIlNlbGVj dCB0aGUgbWludXRlcy4uLiIpIH19JywKKyAgICAgICAgICAgICAgd2lkdGg6 ICdzdHlsZScsCisgICAgICAgICAgICAgIGRyb3Bkb3duQWRhcHRlcjogJC5m bi5zZWxlY3QyLmFtZC5yZXF1aXJlKAorICAgICAgICAgICAgICAgICdzZWxl Y3QyL3NlbGVjdEFsbEFkYXB0ZXInCisgICAgICAgICAgICAgICkKKyAgICAg ICAgICAgIH0sCisgICAgICAgICAgICBmb3JtYXR0ZXI6IG5ldyBCb29sZWFu QXJyYXlGb3JtYXR0ZXIobWludXRlcywgdHJ1ZSksCisgICAgICAgICAgICBz ZWxlY3RvcjogbWludXRlcywgb3B0aW9uczogQm9vbGVhbkFycmF5T3B0aW9u cworICAgICAgICAgIH1dCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAn anNjZXhjZXB0aW9ucycsIHR5cGU6ICdjb2xsZWN0aW9uJywgbW9kZTogWydl ZGl0JywgJ2NyZWF0ZSddLAorICAgICAgICAgIGxhYmVsOiAiIiwgY2FuRWRp dDogZmFsc2UsIG1vZGVsOiBFeGNlcHRpb25Nb2RlbCwgY2FuQWRkOiB0cnVl LAorICAgICAgICAgIGdyb3VwOiAne3sgXygnRXhjZXB0aW9ucycpIH19Jywg Y2FuRGVsZXRlOiB0cnVlLAorICAgICAgICAgIGNvbHM6IFsnamV4ZGF0ZScs ICdqZXh0aW1lJ10sIGNvbnRyb2w6ICdzdWItbm9kZS1jb2xsZWN0aW9uJwor ICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2pzY2Rlc2MnLCBsYWJlbDog J3t7IF8oJ0NvbW1lbnQnKSB9fScsIHR5cGU6ICdtdWx0aWxpbmUnCisgICAg ICAgIH1dLAorICAgICAgICB2YWxpZGF0ZTogZnVuY3Rpb24oa2V5cykgewor ICAgICAgICAgIHZhciB2YWwgPSB0aGlzLmdldCgnanNjbmFtZScpLAorICAg ICAgICAgICAgICBlcnJNc2cgPSBudWxsOworCisgICAgICAgICAgaWYgKF8u aXNVbmRlZmluZWQodmFsKSB8fCBfLmlzTnVsbCh2YWwpIHx8CisgICAgICAg ICAgICBTdHJpbmcodmFsKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpID09 ICcnKSB7CisgICAgICAgICAgICB2YXIgbXNnID0gJ3t7IF8oJ05hbWUgY2Fu bm90IGJlIGVtcHR5LicpIH19JzsKKyAgICAgICAgICAgIHRoaXMuZXJyb3JN b2RlbC5zZXQoJ2pzY25hbWUnLCBtc2cpOworICAgICAgICAgICAgZXJyTXNn ID0gbXNnOworICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0aGlz LmVycm9yTW9kZWwudW5zZXQoJ2pzY25hbWUnKTsKKyAgICAgICAgICB9CisK KyAgICAgICAgICB2YWwgPSB0aGlzLmdldCgnanNjc3RhcnQnKTsKKyAgICAg ICAgICBpZiAoXy5pc1VuZGVmaW5lZCh2YWwpIHx8IF8uaXNOdWxsKHZhbCkg fHwKKyAgICAgICAgICAgIFN0cmluZyh2YWwpLnJlcGxhY2UoL15ccyt8XHMr JC9nLCAnJykgPT0gJycpIHsKKyAgICAgICAgICAgIHZhciBtc2cgPSAne3sg XygnUGxlYXNlIGVudGVyIHRoZSBzdGFydCB0aW1lLicpIH19JzsKKyAgICAg ICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ2pzY3N0YXJ0JywgbXNnKTsK KyAgICAgICAgICAgIGVyck1zZyA9IGVyck1zZyB8fCBtc2c7CisgICAgICAg ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC51bnNl dCgnanNjc3RhcnQnKTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICB2YWwg PSB0aGlzLmdldCgnanNjZW5kJyk7CisgICAgICAgICAgaWYgKF8uaXNVbmRl ZmluZWQodmFsKSB8fCBfLmlzTnVsbCh2YWwpIHx8CisgICAgICAgICAgICBT dHJpbmcodmFsKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpID09ICcnKSB7 CisgICAgICAgICAgICB2YXIgbXNnID0gJ3t7IF8oJ1BsZWFzZSBlbnRlciB0 aGUgZW5kIHRpbWUuJykgfX0nOworICAgICAgICAgICAgdGhpcy5lcnJvck1v ZGVsLnNldCgnanNjZW5kJywgbXNnKTsKKyAgICAgICAgICAgIGVyck1zZyA9 IGVyck1zZyB8fCBtc2c7CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg ICAgIHRoaXMuZXJyb3JNb2RlbC51bnNldCgnanNjZW5kJyk7CisgICAgICAg ICAgfQorCisgICAgICAgICAgcmV0dXJuIGVyck1zZzsKKyAgICAgICAgfQor ICAgICAgfSkKKyAgICB9KTsKKyAgfQorCisgIHJldHVybiBwZ0Jyb3dzZXIu Tm9kZXNbJ3BnYV9zY2hlZHVsZSddOworfSk7CmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50 L3N0YXRpYy9pbWcvY29sbC1wZ2Ffam9iLnBuZyBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvc3RhdGljL2lt Zy9jb2xsLXBnYV9qb2IucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcw NWUyMzMxOGYwM2UxZTgxNDdlOTMzZTE5NGUzOGNlY2Q1ZTBlODMKR0lUIGJp bmFyeSBwYXRjaApsaXRlcmFsIDUyMQp6Y21lQVNATj8ob2xIeWB1VkJxIWlh MHZwXjB3QiE2Mz93eWxgR2JNZmB+YVUyUzBLSDQlYSokT2hYNFFufE1+YXQK eiREZTxuZkJrKj88SW5UMnphRD02ZEYjV0V1JDsrcTBjJFY2e2RWXkMqSkNm ZlQ7OCgmTXFUY2BGdVM5WG99WUphCnpPYmMjJFJHSW89QDBPMXJLME1wOTta YXVIYCNvRGV7UVB0RzxCdUR3Uj12dGV6OCt4bl9UN2drVXcoRDJ5THRUMQp6 aXpqQmYyY0NZdVRBS05BKTRKPkx6cWhad2FkTkBaSCExT3BHbjRNNU1PfEw4 PmRAYHkkTEJBLTYmKDA9JjhqYjMKeio2JW5nYHZUfWgjKiFldlU8UVkwSF98 fHlCeVY+WVc8ZWdHUGUyWjVmayRMOWtvRXYkeDBCZytLKmtoTDdzbjhaCnol ZHpLZzNOPFY2STkmNylveWZONFp1IzQhQFpHb218S0h8eEFvSUEqSigpQm5t TldjNjY2WUVgK1VTdUk5QzBKcAp6PVlpN3xxbmBoZ1QhcDYlNV95WUU3SGc8 bnlBWVNqYnhCR2pZPkNKZSkzVz1nZT5FI00/N1NpfCNYYHp8Kj1FYSUKejxh X0Rlc19VKjxTfk4+X3BBez9yZU14cUNOdE1PQ2JLLWwjTHx6PTx7YD5MSXNf UCRTYF5TWnUpLVc8STxuO1YwCnpXX2NSdUtHaFB9aD8xMVZsMm9oWXFFc05v VX1SdXVwbGZLUFloVn4rV01FfXRZLU03cVpENDk7VUAtNVUtWU9JZwpveCVu eFhYX1hLUzI5e3RBSy1ESHoyNClacXI+MkxsMGN2M0lib0Z5dD1ha1J7MDlS dHt4QnZoRQoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdB Z2VudC9zdGF0aWMvaW1nL3BnYV9qb2ItZGlzYWJsZWQucG5nIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC9z dGF0aWMvaW1nL3BnYV9qb2ItZGlzYWJsZWQucG5nCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAuLmE5YmYzZWY3OTFlZGQ4ODRiNDBhMTE0MTVhMmIwOGI1M2Y4 MmZkZDcKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDYwMQp6Y21lQVNATj8o b2xIeWB1VkJxIWlhMHZwXjB3QiE2Mz93eWxgR2JNZnIyd0IwUzBLSDQlYSok T2hYNFFufE5aeT4Kej1paChkZSpnWFM+KEFSQ2VfbnEze3A4RTlkIUsmRjEr MmFLO203NS0tX0VgTWRPanVuQzxEWGtxfH1veXp1ZTh0CnpZKjJMblIkaE1p YFI1ZlRyWFJ6QHptPTdKRD1QWSRtdjw7Rzx6cmFiZHc+NlQ5LWQhd2JIOEx7 ZGA/Ukc1RX1hNAp6ND1DYnNKUiMrQ1YmY2M+PW5vK3c/fHVFPXh4MFN8MX5Q byN4dyhBXjR1MD9CXlVsQHZqaCsyIzN5VGp5TEdRaTIKei1AM1RJSGFDQXxY IXVmRmQqOVBmOXw4bTRkM244Y2NHKCU3XmlvVXZne3RhdjElPGF4JlU/TVFw VVckcEArdGlXCnpeYzc9Q2tZNnheIT9QUHtBV285RXk5PWAqa0l5RntocUom VnZLVUJ2ZlUoPWpZJiMlaHFvPDJ3aHtSPnZ7XncjJQp6MXxyU2dmYFhhfUVH KnllUmxpXlJ7PWU2QHQrVjk2JiNDamc5SmxEPWVpSjJeUXJrcTh2czAjU1Rn aH1MQSpoZVoKensoaG1UIUhsMjI2PGkrbiYxO0B0Vz8qRGorWkBwJGI0Ykgm cDBMKXQjUXsxQ2QlVSk/SXE5Wi1jRy1LO1clWFNfCnomV3JDJEZUVW4pUUAp dktKbCRSfSQhMkRrQHhuWGI3YU9JMEszYiRJdG9NMjZ7KEN0YVpfQiV8ZkE2 PUx0SDB3Pgp6UyQpSGErKy1XVSVpe01veHFBRXlKaldqO0RCJGFEeCtuX2hj LTBjdWg/MTFWbDJvaFlxRXNOb1V9UnV1cGxmS1AKelloVn4rV01FfXRZLU03 cVpENDk7VUAtNVUtWU9JZ3glbnhYWF9YS1MyOXt0QUstREh6MjQpWnFyPjJM bDBjdjNJCk1ib0Z5dD1ha1J7MDdSYnZhUjJ9UwoKbGl0ZXJhbCAwCkhjbVY/ ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC9zdGF0aWMvaW1nL3BnYV9qb2Iu cG5nIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvcGdBZ2VudC9zdGF0aWMvaW1nL3BnYV9qb2IucG5nCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAuLjc3NTQ2NzQyMjlmMzZkZTIzYThlYzkwMjMxOWNjMjBi NjYzOWY0MWUKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDY3OAp6Y21lQVNA Tj8ob2xIeWB1VkJxIWlhMHZwXjB3QiE2Mz93eWxgR1hsNDgySkt4TFJeOHwm MER0QSlpP2JBfE5ybTUKenwzQ2whYH1YX3FyKGJ7R3tgbTlxK3dVaHxlJTxA QFEhWmZiJUAwMj16eHtVWl8xRHtYPyUmP008S0Z5ZjU0LTl3CnpHKi1PZHg7 YGFxO2kxbCtNfTNXdEklKnlAbU9aS31jd0MoTXlzNyZCcThZRVp0bz9aRmBp QyN5VXRHSE1jPmJLbgp6REtYRT4zY0FhdGZCb19FIV9QbURLTDVQXj1GOHA1 bGIoZTVlVjgteiFfRGpPZkJicHo/Ym9IWi0hMnxGez4wYikKeldxUWlwX1Mk ISF6ZCElXz4lcGc9byRHRiVlRUg/amdFdm9IOWlLWWUtPGlfO154fiFLQDR0 N2Z5OztCVmBxQXdOCnpwNGVIdmpFVT97P3x3TFVfU0lMUGtHPVIoencrQTdk djdqUSpGUH5nYFBrRWFgMSQ5M1BkXjwjZEZmN0Y8KmtWbQp6JitSKzV8Szk1 KCtZWT04QEx5Q35kXnNeak4jbDRxRmhtJGpnOFlJUjlHPX1zMTk2aFAtQ2RY a2QzLShySWgrTF4Kems7T3BUMUJ+NUhYND9UN2hkZjt6TG5KUVNfRm9rYDZ1 YHJKeEhaVkB2ZUB6K3lSQWphJW00cUVaeyZMOHR5WE9gCnooe2gxd3kraC1S dVdZQTBXPWp9Km4+MzFPNzBta2FSQXhPVlNMUm96M29XeXYqTz1gLXlwbHNv KHEoJHxteHxoZAp6NExWYjdHfTtiTCUrUShsZ05yVEZyKXl6fGw9MDEmZUdE JURAO3s0c3Ije2lUOFlSb29aRFkzUVk/IW9sKER2KT4Kemhkd3IkZUJpeCNR OX1MbE8mTn1VQS16QVJyKjYySFF+c00tenxtXm54Iz5UP21lcyVjPUZoUDg/ ZCFTZ3pvdmNxCnp3PjtxZWRIKHg5OFFDa3VTTGE9Kz9nOUVud1p0YHxCcWd5 ViloZjl0Ni1ZNHs4NWtQcThYRDt1Nz17PWJTZVkxRwp6blY0IURtfDdWYSV6 TE18M1BuUzFlb0FJcUJ9OVhQQzBHTWN3VFlGMThBUVhXPjdpP1k4Vz1vWHth bl5MQntUczUKRFEkQUo0CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9wZ0FnZW50L3N0ZXBzL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC9zdGVwcy9f X2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li5jY2RlZDdhCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC9zdGVwcy9fX2lu aXRfXy5weQpAQCAtMCwwICsxLDUzNiBAQAorIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29s cworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE2LCBUaGUgcGdBZG1p biBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFz ZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIiIiSW1wbGVtZW50cyBwZ0FnZW50 IEpvYiBTdGVwIE5vZGUiIiIKKworaW1wb3J0IGpzb24KK2Zyb20gZnVuY3Rv b2xzIGltcG9ydCB3cmFwcworCitmcm9tIGZsYXNrIGltcG9ydCByZW5kZXJf dGVtcGxhdGUsIG1ha2VfcmVzcG9uc2UsIHJlcXVlc3QKK2Zyb20gZmxhc2tf YmFiZWwgaW1wb3J0IGdldHRleHQKK2Zyb20gcGdhZG1pbi5icm93c2VyLmNv bGxlY3Rpb24gaW1wb3J0IENvbGxlY3Rpb25Ob2RlTW9kdWxlCitmcm9tIHBn YWRtaW4uYnJvd3Nlci51dGlscyBpbXBvcnQgUEdDaGlsZE5vZGVWaWV3Citm cm9tIHBnYWRtaW4udXRpbHMuYWpheCBpbXBvcnQgbWFrZV9qc29uX3Jlc3Bv bnNlLCBnb25lLCBcCisgICAgbWFrZV9yZXNwb25zZSBhcyBhamF4X3Jlc3Bv bnNlLCBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IKK2Zyb20gcGdhZG1pbi51dGls cy5kcml2ZXIgaW1wb3J0IGdldF9kcml2ZXIKKworZnJvbSBjb25maWcgaW1w b3J0IFBHX0RFRkFVTFRfRFJJVkVSCisKKworY2xhc3MgSm9iU3RlcE1vZHVs ZShDb2xsZWN0aW9uTm9kZU1vZHVsZSk6CisgICAgIiIiCisgICAgY2xhc3Mg Sm9iU3RlcE1vZHVsZShDb2xsZWN0aW9uTm9kZU1vZHVsZSkKKworICAgICAg ICBBIG1vZHVsZSBjbGFzcyBmb3IgSm9iU3RlcCBub2RlIGRlcml2ZWQgZnJv bSBDb2xsZWN0aW9uTm9kZU1vZHVsZS4KKworICAgIE1ldGhvZHM6CisgICAg LS0tLS0tLQorICAgICogZ2V0X25vZGVzKGdpZCwgc2lkLCBqaWQpCisgICAg ICAtIE1ldGhvZCBpcyB1c2VkIHRvIGdlbmVyYXRlIHRoZSBicm93c2VyIGNv bGxlY3Rpb24gbm9kZS4KKworICAgICogbm9kZV9pbm9kZSgpCisgICAgICAt IE1ldGhvZCBpcyBvdmVycmlkZGVuIGZyb20gaXRzIGJhc2UgY2xhc3MgdG8g bWFrZSB0aGUgbm9kZSBhcyBsZWFmIG5vZGUuCisgICAgIiIiCisKKyAgICBO T0RFX1RZUEUgPSAncGdhX2pvYnN0ZXAnCisgICAgQ09MTEVDVElPTl9MQUJF TCA9IGdldHRleHQoIlN0ZXBzIikKKworICAgIGRlZiBnZXRfbm9kZXMoc2Vs ZiwgZ2lkLCBzaWQsIGppZCk6CisgICAgICAgICIiIgorICAgICAgICBNZXRo b2QgaXMgdXNlZCB0byBnZW5lcmF0ZSB0aGUgYnJvd3NlciBjb2xsZWN0aW9u IG5vZGUKKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBTZXJ2 ZXIgR3JvdXAgSUQKKyAgICAgICAgICAgIHNpZDogU2VydmVyIElECisgICAg ICAgICAgICBqaWQ6IERhdGFiYXNlIElkCisgICAgICAgICIiIgorICAgICAg ICB5aWVsZCBzZWxmLmdlbmVyYXRlX2Jyb3dzZXJfY29sbGVjdGlvbl9ub2Rl KGppZCkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBub2RlX2lub2RlKHNl bGYpOgorICAgICAgICAiIiIKKyAgICAgICAgT3ZlcnJpZGUgdGhpcyBwcm9w ZXJ0eSB0byBtYWtlIHRoZSBub2RlIGEgbGVhZiBub2RlLgorCisgICAgICAg IFJldHVybnM6IEZhbHNlIGFzIHRoaXMgaXMgdGhlIGxlYWYgbm9kZQorICAg ICAgICAiIiIKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBAcHJvcGVy dHkKKyAgICBkZWYgc2NyaXB0X2xvYWQoc2VsZik6CisgICAgICAgICIiIgor ICAgICAgICBMb2FkIHRoZSBtb2R1bGUgc2NyaXB0IGZvciBsYW5ndWFnZSwg d2hlbiBhbnkgb2YgdGhlIGRhdGFiYXNlIG5vZGVzIGFyZSBpbml0aWFsaXpl ZC4KKworICAgICAgICBSZXR1cm5zOiBub2RlIHR5cGUgb2YgdGhlIHNlcnZl ciBtb2R1bGUuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gJ3BnYV9q b2InCisKKworYmx1ZXByaW50ID0gSm9iU3RlcE1vZHVsZShfX25hbWVfXykK KworCitjbGFzcyBKb2JTdGVwVmlldyhQR0NoaWxkTm9kZVZpZXcpOgorICAg ICIiIgorICAgIGNsYXNzIEpvYlN0ZXBWaWV3KFBHQ2hpbGROb2RlVmlldykK KworICAgICAgICBBIHZpZXcgY2xhc3MgZm9yIEpvYlN0ZXAgbm9kZSBkZXJp dmVkIGZyb20gUEdDaGlsZE5vZGVWaWV3LiBUaGlzIGNsYXNzIGlzCisgICAg ICAgIHJlc3BvbnNpYmxlIGZvciBhbGwgdGhlIHN0dWZmIHJlbGF0ZWQgdG8g dmlldyBsaWtlIHVwZGF0aW5nIGxhbmd1YWdlCisgICAgICAgIG5vZGUsIHNo b3dpbmcgcHJvcGVydGllcywgc2hvd2luZyBzcWwgaW4gc3FsIHBhbmUuCisK KyAgICBNZXRob2RzOgorICAgIC0tLS0tLS0KKyAgICAqIF9faW5pdF9fKCoq a3dhcmdzKQorICAgICAgLSBNZXRob2QgaXMgdXNlZCB0byBpbml0aWFsaXpl IHRoZSBKb2JTdGVwVmlldyBhbmQgaXQncyBiYXNlIHZpZXcuCisKKyAgICAq IG1vZHVsZV9qcygpCisgICAgICAtIFRoaXMgcHJvcGVydHkgZGVmaW5lcyAo aWYgamF2YXNjcmlwdCkgZXhpc3RzIGZvciB0aGlzIG5vZGUuCisgICAgICAg IE92ZXJyaWRlIHRoaXMgcHJvcGVydHkgZm9yIHlvdXIgb3duIGxvZ2ljCisK KyAgICAqIGNoZWNrX3ByZWNvbmRpdGlvbigpCisgICAgICAtIFRoaXMgZnVu Y3Rpb24gd2lsbCBiZWhhdmUgYXMgYSBkZWNvcmF0b3Igd2hpY2ggd2lsbCBj aGVja3MKKyAgICAgICAgZGF0YWJhc2UgY29ubmVjdGlvbiBiZWZvcmUgcnVu bmluZyB2aWV3LCBpdCB3aWxsIGFsc28gYXR0YWNoZXMKKyAgICAgICAgbWFu YWdlcixjb25uICYgdGVtcGxhdGVfcGF0aCBwcm9wZXJ0aWVzIHRvIHNlbGYK KworICAgICogbGlzdCgpCisgICAgICAtIFRoaXMgZnVuY3Rpb24gaXMgdXNl ZCB0byBsaXN0IGFsbCB0aGUgbGFuZ3VhZ2Ugbm9kZXMgd2l0aGluIHRoYXQg Y29sbGVjdGlvbi4KKworICAgICogbm9kZXMoKQorICAgICAgLSBUaGlzIGZ1 bmN0aW9uIHdpbGwgdXNlZCB0byBjcmVhdGUgYWxsIHRoZSBjaGlsZCBub2Rl IHdpdGhpbiB0aGF0IGNvbGxlY3Rpb24uCisgICAgICAgIEhlcmUgaXQgd2ls bCBjcmVhdGUgYWxsIHRoZSBsYW5ndWFnZSBub2RlLgorCisgICAgKiBwcm9w ZXJ0aWVzKGdpZCwgc2lkLCBqaWQsIGpzdGlkKQorICAgICAgLSBUaGlzIGZ1 bmN0aW9uIHdpbGwgc2hvdyB0aGUgcHJvcGVydGllcyBvZiB0aGUgc2VsZWN0 ZWQgbGFuZ3VhZ2Ugbm9kZQorCisgICAgKiB1cGRhdGUoZ2lkLCBzaWQsIGpp ZCwganN0aWQpCisgICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCB1cGRhdGUg dGhlIGRhdGEgZm9yIHRoZSBzZWxlY3RlZCBsYW5ndWFnZSBub2RlCisKKyAg ICAqIG1zcWwoZ2lkLCBzaWQsIGppZCwganN0aWQpCisgICAgICAtIFRoaXMg ZnVuY3Rpb24gaXMgdXNlZCB0byByZXR1cm4gbW9kaWZpZWQgU1FMIGZvciB0 aGUgc2VsZWN0ZWQgbGFuZ3VhZ2Ugbm9kZQorICAgICIiIgorCisgICAgbm9k ZV90eXBlID0gYmx1ZXByaW50Lm5vZGVfdHlwZQorCisgICAgcGFyZW50X2lk cyA9IFsKKyAgICAgICAgeyd0eXBlJzogJ2ludCcsICdpZCc6ICdnaWQnfSwK KyAgICAgICAgeyd0eXBlJzogJ2ludCcsICdpZCc6ICdzaWQnfSwKKyAgICAg ICAgeyd0eXBlJzogJ2ludCcsICdpZCc6ICdqaWQnfQorICAgIF0KKyAgICBp ZHMgPSBbCisgICAgICAgIHsndHlwZSc6ICdpbnQnLCAnaWQnOiAnanN0aWQn fQorICAgIF0KKworICAgIG9wZXJhdGlvbnMgPSBkaWN0KHsKKyAgICAgICAg J29iaic6IFsKKyAgICAgICAgICAgIHsnZ2V0JzogJ3Byb3BlcnRpZXMnLCAn cHV0JzogJ3VwZGF0ZSd9LAorICAgICAgICAgICAgeydnZXQnOiAnbGlzdCcs ICdwb3N0JzogJ2NyZWF0ZSd9CisgICAgICAgIF0sCisgICAgICAgICdub2Rl cyc6IFt7J2dldCc6ICdub2Rlcyd9LCB7J2dldCc6ICdub2Rlcyd9XSwKKyAg ICAgICAgJ21zcWwnOiBbeydnZXQnOiAnbXNxbCd9LCB7J2dldCc6ICdtc3Fs J31dLAorICAgICAgICAnc3RhdHMnOiBbeydnZXQnOiAnc3RhdGlzdGljcyd9 XSwKKyAgICAgICAgJ21vZHVsZS5qcyc6IFt7fSwge30sIHsnZ2V0JzogJ21v ZHVsZV9qcyd9XQorICAgIH0pCisKKyAgICBkZWYgX2luaXRfKHNlbGYsICoq a3dhcmdzKToKKyAgICAgICAgIiIiCisgICAgICAgIE1ldGhvZCBpcyB1c2Vk IHRvIGluaXRpYWxpemUgdGhlIEpvYlN0ZXBWaWV3IGFuZCBpdHMgYmFzZSB2 aWV3LgorICAgICAgICBJbml0aWFsaXplIGFsbCB0aGUgdmFyaWFibGVzIGNy ZWF0ZS91c2VkIGR5bmFtaWNhbGx5IGxpa2UgY29ubiwgdGVtcGxhdGVfcGF0 aC4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgKiprd2FyZ3M6Cisg ICAgICAgICIiIgorICAgICAgICBzZWxmLmNvbm4gPSBOb25lCisgICAgICAg IHNlbGYudGVtcGxhdGVfcGF0aCA9IE5vbmUKKyAgICAgICAgc2VsZi5tYW5h Z2VyID0gTm9uZQorCisgICAgICAgIHN1cGVyKEpvYlN0ZXBWaWV3LCBzZWxm KS5fX2luaXRfXygqKmt3YXJncykKKworICAgIGRlZiBtb2R1bGVfanMoc2Vs Zik6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIHByb3BlcnR5IGRlZmlu ZXMgd2hldGhlciBqYXZhc2NyaXB0IGV4aXN0cyBmb3IgdGhpcyBub2RlLgor ICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIG1ha2VfcmVzcG9uc2UoCisg ICAgICAgICAgICByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAg InBnYV9qb2JzdGVwL2pzL3BnYV9qb2JzdGVwLmpzIiwKKyAgICAgICAgICAg ICAgICBfPWdldHRleHQKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAy MDAsIHsnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtamF2YXNjcmlw dCd9CisgICAgICAgICkKKworICAgIGRlZiBjaGVja19wcmVjb25kaXRpb24o Zik6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwg YmVoYXZlIGFzIGEgZGVjb3JhdG9yIHdoaWNoIHdpbGwgY2hlY2sgdGhlCisg ICAgICAgIGRhdGFiYXNlIGNvbm5lY3Rpb24gYmVmb3JlIHJ1bm5pbmcgdGhl IHZpZXcuIEl0IGFsc28gYXR0YWNoZXMKKyAgICAgICAgbWFuYWdlciwgY29u biAmIHRlbXBsYXRlX3BhdGggcHJvcGVydGllcyB0byBzZWxmCisgICAgICAg ICIiIgorCisgICAgICAgIEB3cmFwcyhmKQorICAgICAgICBkZWYgd3JhcCgq YXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgIyBIZXJlIGFyZ3NbMF0g d2lsbCBob2xkIHNlbGYgJiBrd2FyZ3Mgd2lsbCBob2xkIGdpZCxzaWQsamlk CisgICAgICAgICAgICBzZWxmID0gYXJnc1swXQorICAgICAgICAgICAgc2Vs Zi5kcml2ZXIgPSBnZXRfZHJpdmVyKFBHX0RFRkFVTFRfRFJJVkVSKQorICAg ICAgICAgICAgc2VsZi5tYW5hZ2VyID0gc2VsZi5kcml2ZXIuY29ubmVjdGlv bl9tYW5hZ2VyKGt3YXJnc1snc2lkJ10pCisgICAgICAgICAgICBzZWxmLmNv bm4gPSBzZWxmLm1hbmFnZXIuY29ubmVjdGlvbigpCisKKyAgICAgICAgICAg IHNlbGYudGVtcGxhdGVfcGF0aCA9ICdwZ2Ffam9ic3RlcC9zcWwvcHJlMy40 JworCisgICAgICAgICAgICBpZiBub3QgKCdwZ0FnZW50JyBpbiBzZWxmLm1h bmFnZXIuZGJfaW5mbyk6CisgICAgICAgICAgICAgICAgc3RhdHVzLCByZXMg PSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KCIiIgorU0VMRUNUIEVYSVNUUygK KyAgICAgICAgU0VMRUNUIDEgRlJPTSBpbmZvcm1hdGlvbl9zY2hlbWEuY29s dW1ucworICAgICAgICBXSEVSRQorICAgICAgICAgICAgdGFibGVfc2NoZW1h PSdwZ2FnZW50JyBBTkQgdGFibGVfbmFtZT0ncGdhX2pvYnN0ZXAnIEFORAor ICAgICAgICAgICAgY29sdW1uX25hbWU9J2pzdGNvbm5zdHInCisgICAgKSBo YXNfY29ubnN0ciIiIikKKworICAgICAgICAgICAgICAgIHNlbGYubWFuYWdl ci5kYl9pbmZvWydwZ0FnZW50J10gPSByZXNbJ3Jvd3MnXVswXQorCisgICAg ICAgICAgICByZXR1cm4gZigqYXJncywgKiprd2FyZ3MpCisKKyAgICAgICAg cmV0dXJuIHdyYXAKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBk ZWYgbGlzdChzZWxmLCBnaWQsIHNpZCwgamlkKToKKyAgICAgICAgIiIiCisg ICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBsaXN0IGFsbCB0aGUg bGFuZ3VhZ2Ugbm9kZXMgd2l0aGluIHRoYXQgY29sbGVjdGlvbi4KKworICAg ICAgICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSUQK KyAgICAgICAgICAgIHNpZDogU2VydmVyIElECisgICAgICAgICAgICBqaWQ6 IEpvYiBJRAorICAgICAgICAiIiIKKyAgICAgICAgc3FsID0gcmVuZGVyX3Rl bXBsYXRlKAorICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVf cGF0aCwgJ3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAgICAgamlkPWpp ZCwKKyAgICAgICAgICAgIGhhc19jb25uc3RyPXNlbGYubWFuYWdlci5kYl9p bmZvWydwZ0FnZW50J11bJ2hhc19jb25uc3RyJ10KKyAgICAgICAgKQorICAg ICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3Qoc3Fs KQorCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1 cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAg ICAgICByZXR1cm4gYWpheF9yZXNwb25zZSgKKyAgICAgICAgICAgIHJlc3Bv bnNlPXJlc1sncm93cyddLAorICAgICAgICAgICAgc3RhdHVzPTIwMAorICAg ICAgICApCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIG5v ZGVzKHNlbGYsIGdpZCwgc2lkLCBqaWQsIGpzdGlkPU5vbmUpOgorICAgICAg ICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGNyZWF0 ZSBhbGwgdGhlIGNoaWxkIG5vZGVzIHdpdGhpbiB0aGUgY29sbGVjdGlvbi4K KyAgICAgICAgSGVyZSBpdCB3aWxsIGNyZWF0ZSBhbGwgdGhlIGxhbmd1YWdl IG5vZGVzLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNl cnZlciBHcm91cCBJRAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSUQKKyAg ICAgICAgICAgIGppZDogSm9iIElECisgICAgICAgICIiIgorICAgICAgICBy ZXMgPSBbXQorICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAg ICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnbm9kZXMu c3FsJ10pLAorICAgICAgICAgICAganN0aWQgPSBqc3RpZCwKKyAgICAgICAg ICAgIGppZCA9IGppZAorICAgICAgICApCisKKyAgICAgICAgc3RhdHVzLCBy ZXN1bHQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KHNxbCkKKworICAg ICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVy bmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXN1bHQpCisKKyAgICAgICAg aWYganN0aWQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpZiBsZW4ocmVz dWx0Wydyb3dzJ10pID09IDA6CisgICAgICAgICAgICAgICAgcmV0dXJuIGdv bmUoZXJyb3Jtc2c9IkNvdWxkbid0IGZpbmQgdGhlIHNwZWNpZmllZCBqb2Ig c3RlcC4iKQorCisgICAgICAgICAgICByb3cgPSByZXN1bHRbJ3Jvd3MnXVsw XQorICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAg ICAgICAgICAgICAgICBzZWxmLmJsdWVwcmludC5nZW5lcmF0ZV9icm93c2Vy X25vZGUoCisgICAgICAgICAgICAgICAgICAgIHJvd1snanN0aWQnXSwKKyAg ICAgICAgICAgICAgICAgICAgcm93Wydqc3Rqb2JpZCddLAorICAgICAgICAg ICAgICAgICAgICByb3dbJ2pzdG5hbWUnXSwKKyAgICAgICAgICAgICAgICAg ICAgaWNvbj0iaWNvbi1wZ2Ffam9ic3RlcCIsCisgICAgICAgICAgICAgICAg ICAgIGVuYWJsZWQ9cm93Wydqc3RlbmFibGVkJ10sCisgICAgICAgICAgICAg ICAgICAgIGtpbmQ9cm93Wydqc3RraW5kJ10KKyAgICAgICAgICAgICAgICAp CisgICAgICAgICAgICApCisKKyAgICAgICAgZm9yIHJvdyBpbiByZXN1bHRb J3Jvd3MnXToKKyAgICAgICAgICAgIHJlcy5hcHBlbmQoCisgICAgICAgICAg ICAgICAgc2VsZi5ibHVlcHJpbnQuZ2VuZXJhdGVfYnJvd3Nlcl9ub2RlKAor ICAgICAgICAgICAgICAgICAgICByb3dbJ2pzdGlkJ10sCisgICAgICAgICAg ICAgICAgICAgIHJvd1snanN0am9iaWQnXSwKKyAgICAgICAgICAgICAgICAg ICAgcm93Wydqc3RuYW1lJ10sCisgICAgICAgICAgICAgICAgICAgIGljb249 Imljb24tcGdhX2pvYnN0ZXAiLAorICAgICAgICAgICAgICAgICAgICBlbmFi bGVkPXJvd1snanN0ZW5hYmxlZCddLAorICAgICAgICAgICAgICAgICAgICBr aW5kPXJvd1snanN0a2luZCddCisgICAgICAgICAgICAgICAgKQorICAgICAg ICAgICAgKQorCisgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2Uo CisgICAgICAgICAgICBkYXRhPXJlcywKKyAgICAgICAgICAgIHN0YXR1cz0y MDAKKyAgICAgICAgKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAg IGRlZiBwcm9wZXJ0aWVzKHNlbGYsIGdpZCwgc2lkLCBqaWQsIGpzdGlkKToK KyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBzaG93 IHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBzZWxlY3RlZCBsYW5ndWFnZSBub2Rl LgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBH cm91cCBJRAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSUQKKyAgICAgICAg ICAgIGppZDogSm9iIElECisgICAgICAgICAgICBqc3RpZDogSm9iU3RlcCBJ RAorICAgICAgICAiIiIKKyAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRl KAorICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwg J3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAgICAganN0aWQ9anN0aWQs CisgICAgICAgICAgICBqaWQ9amlkLAorICAgICAgICAgICAgaGFzX2Nvbm5z dHI9c2VsZi5tYW5hZ2VyLmRiX2luZm9bJ3BnQWdlbnQnXVsnaGFzX2Nvbm5z dHInXQorICAgICAgICApCisgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5j b25uLmV4ZWN1dGVfZGljdChzcWwpCisKKyAgICAgICAgaWYgbm90IHN0YXR1 czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3Io ZXJyb3Jtc2c9cmVzKQorCisgICAgICAgIGlmIGxlbihyZXNbJ3Jvd3MnXSkg PT0gMDoKKyAgICAgICAgICAgIHJldHVybiBnb25lKGVycm9ybXNnPSJDb3Vs ZG4ndCBmaW5kIHRoZSBzcGVjaWZpZWQgam9iIHN0ZXAuIikKKworICAgICAg ICByZXR1cm4gYWpheF9yZXNwb25zZSgKKyAgICAgICAgICAgIHJlc3BvbnNl PXJlc1sncm93cyddWzBdLAorICAgICAgICAgICAgc3RhdHVzPTIwMAorICAg ICAgICApCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIGNy ZWF0ZShzZWxmLCBnaWQsIHNpZCwgamlkKToKKyAgICAgICAgIiIiCisgICAg ICAgIFRoaXMgZnVuY3Rpb24gd2lsbCB1cGRhdGUgdGhlIGRhdGEgZm9yIHRo ZSBzZWxlY3RlZCBsYW5ndWFnZSBub2RlLgorCisgICAgICAgIEFyZ3M6Cisg ICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJRAorICAgICAgICAgICAg c2lkOiBTZXJ2ZXIgSUQKKyAgICAgICAgICAgIGppZDogSm9iIElECisgICAg ICAgICIiIgorICAgICAgICBkYXRhID0ge30KKyAgICAgICAgZm9yIGssIHYg aW4gcmVxdWVzdC5hcmdzLml0ZW1zKCk6CisgICAgICAgICAgICB0cnk6Cisg ICAgICAgICAgICAgICAgZGF0YVtrXSA9IGpzb24ubG9hZHMoCisgICAgICAg ICAgICAgICAgICAgIHYuZGVjb2RlKCd1dGYtOCcpIGlmIGhhc2F0dHIodiwg J2RlY29kZScpIGVsc2UgdgorICAgICAgICAgICAgICAgICkKKyAgICAgICAg ICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgIGRhdGFb a10gPSB2CisKKyAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKAorICAg ICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ2NyZWF0 ZS5zcWwnXSksCisgICAgICAgICAgICBqaWQ9amlkLAorICAgICAgICAgICAg ZGF0YT1kYXRhLAorICAgICAgICAgICAgaGFzX2Nvbm5zdHI9c2VsZi5tYW5h Z2VyLmRiX2luZm9bJ3BnQWdlbnQnXVsnaGFzX2Nvbm5zdHInXQorICAgICAg ICApCisKKyAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0 ZV9zY2FsYXIoc3FsKQorCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAg ICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNn PXJlcykKKworICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAg ICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnbm9kZXMu c3FsJ10pLAorICAgICAgICAgICAganN0aWQgPSByZXMsCisgICAgICAgICAg ICBqaWQgPSBqaWQKKyAgICAgICAgKQorICAgICAgICBzdGF0dXMsIHJlcyA9 IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoc3FsKQorCisgICAgICAgIGlm IG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2Vy dmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICByb3cgPSByZXNb J3Jvd3MnXVswXQorICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNl KAorICAgICAgICAgICAgZGF0YT1zZWxmLmJsdWVwcmludC5nZW5lcmF0ZV9i cm93c2VyX25vZGUoCisgICAgICAgICAgICAgICAgcm93Wydqc3RpZCddLAor ICAgICAgICAgICAgICAgIHJvd1snanN0am9iaWQnXSwKKyAgICAgICAgICAg ICAgICByb3dbJ2pzdG5hbWUnXSwKKyAgICAgICAgICAgICAgICBpY29uPSJp Y29uLXBnYV9qb2JzdGVwIgorICAgICAgICAgICAgKQorICAgICAgICApCisK KyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIHVwZGF0ZShzZWxm LCBnaWQsIHNpZCwgamlkLCBqc3RpZCk6CisgICAgICAgICIiIgorICAgICAg ICBUaGlzIGZ1bmN0aW9uIHdpbGwgdXBkYXRlIHRoZSBkYXRhIGZvciB0aGUg c2VsZWN0ZWQgbGFuZ3VhZ2Ugbm9kZS4KKworICAgICAgICBBcmdzOgorICAg ICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSUQKKyAgICAgICAgICAgIHNp ZDogU2VydmVyIElECisgICAgICAgICAgICBqaWQ6IEpvYiBJRAorICAgICAg ICAgICAganN0aWQ6IEpvYlN0ZXAgSUQKKyAgICAgICAgIiIiCisgICAgICAg IGRhdGEgPSByZXF1ZXN0LmZvcm0gaWYgcmVxdWVzdC5mb3JtIGVsc2UganNv bi5sb2FkcygKKyAgICAgICAgICAgIHJlcXVlc3QuZGF0YS5kZWNvZGUoJ3V0 Zi04JykKKyAgICAgICAgKQorCisgICAgICAgIGlmICgKKyAgICAgICAgICAg IHNlbGYubWFuYWdlci5kYl9pbmZvWydwZ0FnZW50J11bJ2hhc19jb25uc3Ry J10gYW5kCisgICAgICAgICAgICAnanN0Y29ubnR5cGUnIG5vdCBpbiBkYXRh IGFuZAorICAgICAgICAgICAgKCdqc3RkYm5hbWUnIGluIGRhdGEgb3IgJ2pz dGNvbm5zdHInIGluIGRhdGEpCisgICAgICAgICk6CisgICAgICAgICAgICBz cWwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAgIi8iLmpv aW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ3Byb3BlcnRpZXMuc3FsJ10pLAor ICAgICAgICAgICAgICAgIGpzdGlkPWpzdGlkLAorICAgICAgICAgICAgICAg IGppZD1qaWQsCisgICAgICAgICAgICAgICAgaGFzX2Nvbm5zdHI9c2VsZi5t YW5hZ2VyLmRiX2luZm9bJ3BnQWdlbnQnXVsnaGFzX2Nvbm5zdHInXQorICAg ICAgICAgICAgKQorICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNv bm4uZXhlY3V0ZV9kaWN0KHNxbCkKKworICAgICAgICAgICAgaWYgbm90IHN0 YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVy X2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICAgICAgaWYgbGVuKHJl c1sncm93cyddKSA9PSAwOgorICAgICAgICAgICAgICAgIHJldHVybiBnb25l KAorICAgICAgICAgICAgICAgICAgICBlcnJvcm1zZz1nZXR0ZXh0KAorICAg ICAgICAgICAgICAgICAgICAgICAgIkNvdWxkbid0IGZpbmQgdGhlIHNwZWNp ZmllZCBqb2Igc3RlcC4iCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAg ICAgICAgICAgICApCisgICAgICAgICAgICByb3cgPSByZXNbJ3Jvd3MnXVsw XQorICAgICAgICAgICAgZGF0YVsnanN0Y29ubnR5cGUnXSA9IHJvd1snanN0 Y29ubnR5cGUnXQorCisgICAgICAgICAgICBpZiByb3dbJ2pzdGNvbm50eXBl J106CisgICAgICAgICAgICAgICAgaWYgbm90ICgnanN0ZGJuYW1lJyBpbiBk YXRhKToKKyAgICAgICAgICAgICAgICAgICAgZGF0YVsnanN0ZGJuYW1lJ10g PSByb3dbJ2pzdGRibmFtZSddCisgICAgICAgICAgICBlbHNlOgorICAgICAg ICAgICAgICAgIGlmIG5vdCAoJ2pzdGNvbm5zdHInIGluIGRhdGEpOgorICAg ICAgICAgICAgICAgICAgICBkYXRhWydqc3Rjb25uc3RyJ10gPSByb3dbJ2pz dGNvbm5zdHInXQorCisgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgK KyAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICd1 cGRhdGUuc3FsJ10pLAorICAgICAgICAgICAgamlkPWppZCwKKyAgICAgICAg ICAgIGpzdGlkPWpzdGlkLAorICAgICAgICAgICAgZGF0YT1kYXRhLAorICAg ICAgICAgICAgaGFzX2Nvbm5zdHI9c2VsZi5tYW5hZ2VyLmRiX2luZm9bJ3Bn QWdlbnQnXVsnaGFzX2Nvbm5zdHInXQorICAgICAgICApCisKKyAgICAgICAg c3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV92b2lkKHNxbCkKKwor ICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGlu dGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAg c3FsID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgIi8iLmpvaW4o W3NlbGYudGVtcGxhdGVfcGF0aCwgJ25vZGVzLnNxbCddKSwKKyAgICAgICAg ICAgIGpzdGlkID0ganN0aWQsCisgICAgICAgICAgICBqaWQgPSBqaWQKKyAg ICAgICAgKQorICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVj dXRlXzJkYXJyYXkoc3FsKQorCisgICAgICAgIGlmIG5vdCBzdGF0dXM6Cisg ICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9y bXNnPXJlcykKKworICAgICAgICByb3cgPSByZXNbJ3Jvd3MnXVswXQorICAg ICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAg c2VsZi5ibHVlcHJpbnQuZ2VuZXJhdGVfYnJvd3Nlcl9ub2RlKAorICAgICAg ICAgICAgICAgIHJvd1snanN0aWQnXSwKKyAgICAgICAgICAgICAgICByb3db J2pzdGpvYmlkJ10sCisgICAgICAgICAgICAgICAgcm93Wydqc3RuYW1lJ10s CisgICAgICAgICAgICAgICAgaWNvbj0iaWNvbi1wZ2Ffam9ic3RlcCIKKyAg ICAgICAgICAgICkKKyAgICAgICAgKQorCisgICAgQGNoZWNrX3ByZWNvbmRp dGlvbgorICAgIGRlZiBtc3FsKHNlbGYsIGdpZCwgc2lkLCBqaWQsIGpzdGlk PU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiBp cyB1c2VkIHRvIHJldHVybiBtb2RpZmllZCBTUUwgZm9yIHRoZSBzZWxlY3Rl ZCBsYW5ndWFnZSBub2RlLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAg ICBnaWQ6IFNlcnZlciBHcm91cCBJRAorICAgICAgICAgICAgc2lkOiBTZXJ2 ZXIgSUQKKyAgICAgICAgICAgIGppZDogSm9iIElECisgICAgICAgICAgICBq c3RpZDogSm9iIFN0ZXAgSUQKKyAgICAgICAgIiIiCisgICAgICAgIGRhdGEg PSB7fQorICAgICAgICBzcWwgPSAnJworICAgICAgICBmb3IgaywgdiBpbiBy ZXF1ZXN0LmFyZ3MuaXRlbXMoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAg ICAgICAgICAgICBkYXRhW2tdID0ganNvbi5sb2FkcygKKyAgICAgICAgICAg ICAgICAgICAgdi5kZWNvZGUoJ3V0Zi04JykgaWYgaGFzYXR0cih2LCAnZGVj b2RlJykgZWxzZSB2CisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAg ZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgZGF0YVtrXSA9 IHYKKworICAgICAgICBpZiBqc3RpZCBpcyBOb25lOgorICAgICAgICAgICAg c3FsID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICIvIi5q b2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdjcmVhdGUuc3FsJ10pLAorICAg ICAgICAgICAgICAgIGppZD1qaWQsCisgICAgICAgICAgICAgICAgZGF0YT1k YXRhLAorICAgICAgICAgICAgICAgIGhhc19jb25uc3RyPXNlbGYubWFuYWdl ci5kYl9pbmZvWydwZ0FnZW50J11bJ2hhc19jb25uc3RyJ10KKyAgICAgICAg ICAgICkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmICgKKyAgICAg ICAgICAgICAgICBzZWxmLm1hbmFnZXIuZGJfaW5mb1sncGdBZ2VudCddWydo YXNfY29ubnN0ciddIGFuZAorICAgICAgICAgICAgICAgICdqc3Rjb25udHlw ZScgbm90IGluIGRhdGEgYW5kCisgICAgICAgICAgICAgICAgKCdqc3RkYm5h bWUnIGluIGRhdGEgb3IgJ2pzdGNvbm5zdHInIGluIGRhdGEpCisgICAgICAg ICAgICApOgorICAgICAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0 ZSgKKyAgICAgICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxh dGVfcGF0aCwgJ3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAgICAgICAg ICAgICBqc3RpZD1qc3RpZCwKKyAgICAgICAgICAgICAgICAgICAgamlkPWpp ZCwKKyAgICAgICAgICAgICAgICAgICAgaGFzX2Nvbm5zdHI9c2VsZi5tYW5h Z2VyLmRiX2luZm9bJ3BnQWdlbnQnXVsnaGFzX2Nvbm5zdHInXQorICAgICAg ICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNl bGYuY29ubi5leGVjdXRlX2RpY3Qoc3FsKQorCisgICAgICAgICAgICAgICAg aWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlu dGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAg ICAgICAgICBpZiBsZW4ocmVzWydyb3dzJ10pID09IDA6CisgICAgICAgICAg ICAgICAgICAgIHJldHVybiBnb25lKAorICAgICAgICAgICAgICAgICAgICAg ICAgZXJyb3Jtc2c9Z2V0dGV4dCgKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiQ291bGRuJ3QgZmluZCB0aGUgc3BlY2lmaWVkIGpvYiBzdGVwLiIK KyAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAg ICAgKQorICAgICAgICAgICAgICAgIHJvdyA9IHJlc1sncm93cyddWzBdCisg ICAgICAgICAgICAgICAgZGF0YVsnanN0Y29ubnR5cGUnXSA9IHJvd1snanN0 Y29ubnR5cGUnXQorCisgICAgICAgICAgICAgICAgaWYgcm93Wydqc3Rjb25u dHlwZSddOgorICAgICAgICAgICAgICAgICAgICBpZiBub3QgKCdqc3RkYm5h bWUnIGluIGRhdGEpOgorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVsn anN0ZGJuYW1lJ10gPSByb3dbJ2pzdGRibmFtZSddCisgICAgICAgICAgICAg ICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90ICgnanN0Y29u bnN0cicgaW4gZGF0YSk6CisgICAgICAgICAgICAgICAgICAgICAgICBkYXRh Wydqc3Rjb25uc3RyJ10gPSByb3dbJ2pzdGNvbm5zdHInXQorCisgICAgICAg ICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAg Ii8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ3VwZGF0ZS5zcWwnXSks CisgICAgICAgICAgICAgICAgamlkPWppZCwKKyAgICAgICAgICAgICAgICBq c3RpZD1qc3RpZCwKKyAgICAgICAgICAgICAgICBkYXRhPWRhdGEsCisgICAg ICAgICAgICAgICAgaGFzX2Nvbm5zdHI9c2VsZi5tYW5hZ2VyLmRiX2luZm9b J3BnQWdlbnQnXVsnaGFzX2Nvbm5zdHInXQorICAgICAgICAgICAgKQorCisg ICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAg ICBkYXRhPXNxbCwKKyAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAg KQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBzdGF0aXN0 aWNzKHNlbGYsIGdpZCwgc2lkLCBqaWQsIGpzdGlkKToKKyAgICAgICAgIiIi CisgICAgICAgIHN0YXRpc3RpY3MKKyAgICAgICAgUmV0dXJucyB0aGUgc3Rh dGlzdGljcyBmb3IgYSBwYXJ0aWN1bGFyIGRhdGFiYXNlIGlmIGppZCBpcyBz cGVjaWZpZWQsCisgICAgICAgIG90aGVyd2lzZSBpdCB3aWxsIHJldHVybiBz dGF0aXN0aWNzIGZvciBhbGwgdGhlIGRhdGFiYXNlcyBpbiB0aGF0CisgICAg ICAgIHNlcnZlci4KKyAgICAgICAgIiIiCisgICAgICAgIHN0YXR1cywgcmVz ID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdCgKKyAgICAgICAgICAgIHJlbmRl cl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50 ZW1wbGF0ZV9wYXRoLCAnc3RhdHMuc3FsJ10pLAorICAgICAgICAgICAgICAg IGppZD1qaWQsIGpzdGlkPWpzdGlkLCBjb25uPXNlbGYuY29ubgorICAgICAg ICAgICAgKQorICAgICAgICApCisKKyAgICAgICAgaWYgbm90IHN0YXR1czoK KyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJy b3Jtc2c9cmVzKQorCisgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9u c2UoCisgICAgICAgICAgICBkYXRhPXJlcywKKyAgICAgICAgICAgIHN0YXR1 cz0yMDAKKyAgICAgICAgKQorCisKK0pvYlN0ZXBWaWV3LnJlZ2lzdGVyX25v ZGVfdmlldyhibHVlcHJpbnQpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3N0ZXBzL3N0 YXRpYy9pbWcvY29sbC1wZ2Ffam9ic3RlcC5wbmcgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3N0ZXBzL3N0 YXRpYy9pbWcvY29sbC1wZ2Ffam9ic3RlcC5wbmcKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMC4uNTFiODZhN2EwMWM4M2I1Y2VhNzdlYzk1YjU0NjJkMDliNjQ0 MDI4MwpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNTA1CnpjbWVBU0BOPyhv bEh5YHVWQnEhaWEwdnBeMHdCITYzP3d5bGBHYk1mPE4lKSNTMEtHfj5DI1Y0 TyZ7d1UtcStOOwp6dEVoTldRdH5SbDs2K3lVKTZ+PypAZCojMnFWOSErLTFo YW07cUhGYihlZU5QfDl9N2V8TX5hZHg4SHcxe3JkQ3YKeiREZnpxZW4wdjA+ KXhsSUgkVktpWTs3JFV1PWV1WFp4PjhXJiVPUzdSIXslNWhVVXFhVWsqUzJk X3F9eS1fdVhXCnpXTXl8ZnsmLWtJOy1Ja2IpYHVUQS12NitsazhqPCpfanxk eFJeNUhLaG1DQylHanNFZSEwJGszRl9yfVIxdjVCMgp6eU85UnNCemUyTDJ1 JDY/c3tgYjQ3STtKITE4RU8xYn5+QUUyVl9qfWJhNCFreFNWPUVTSil7KWd5 cTMqI1RLdGcKekpMMHNLSVF7eStmOEU/T2JGSHR8KXMlZlpCY3UzMVJQbzNt Z1NBV0Y/JEFFWmVAKGluRj9VRHp3fnZhSiVUOTJwCnpJWjItTUZBYHpsVVVs OShna3xzZnUyKEpfN1hKRm9ZSUBMN1hZeDxDPTRsVXt6TWQ3OGIkdEpOK2lw UmQ3NjFNQAp6Xzx4dnFzJVcyS2YobEUoLXcjSnpGOHI+VzZXNmpvenkxXjNf bT18VnQoI3wqMG98cnI7dT13c2wzMD56bTBYa3gKenEhXjQwMz1NUCpqZFRx Ukx5UWNwT3BMOGVPdGxTNnRxY3QyejArSFRxOUhkd0J7UXVPcVFTcnR0TzJP biNMQj03ClZxVCRyXiZeMTV9NDQkcmpGNioyVW5nRnszK2drdHQKCmxpdGVy YWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvc3RlcHMvc3Rh dGljL2ltZy9wZ2Ffam9ic3RlcC5wbmcgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3N0ZXBzL3N0YXRpYy9p bWcvcGdhX2pvYnN0ZXAucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcy Zjg5OGExMTkzYTc4ZjQ2YjcxZDMzMTIxZDVmY2QwZDRiNTQ4MTkKR0lUIGJp bmFyeSBwYXRjaApsaXRlcmFsIDQzMAp6Y21lQVNATj8ob2xIeWB1VkJxIWlh MHZwXjB3QiE2Mz93eWxgR2JLfVdgSXdLRTBDX01afXxXSnxLRVRBZkJ5YVYK ej9mMmhMenk3QGFAI3AyWS0lcX4keTclZClUKV42IUFBVmVaYHxWUngpNFFz d213RVkqNkI2JFIyM35iXkpaRVRsCnpMUF9iNmh7Iz9KaiZyWlNvX3pVYkNq LU9iPWIhZ0l7an1AeCRFXj1QWm9MMHQtTSNtIz8hSEBiPVV3NGIqQllRQAp6 ajNxJlMhMystMVpsci1ZTiM1PSpPbGpPVERMQFdxZmskTDlrb0V2JHgwQmcr S3R7ZiZpKGBueTw9QjNBcCN9dlcKejIxWmZ1QmxvMFZ7Zys/cUBNdU4jb3p8 Mj81fDh5fkc7JS11Kn5xaWxMWHB1ZkIxcSYpYUg/ekNpU0E5U1deYTRsCnpg YH05Wk1FQHw0anlwWSl0WTBlJkFOe255ZHFlbGliPjhjMDMtMGpySHRvNj5z M0NFO28wO3xOVzAjTm56bnh+Qwp6KVdLPE5Tej5ZK1h0aXBJWWVZIyhWbzlv MWEjMVJmVmxYbD1HfCk5UChsc3kpRioyfCtGfTUtPilpeUEtR0JCOTsKdFBI ej44aFRReT0lKE9+fjFfTWo1MkIyeWFEKzRvI2hFdmwrKjhudnpjKUkkenRh RDBlMHN1ZmJ2cX1IfQoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvcGdBZ2VudC9zdGVwcy90ZW1wbGF0ZXMvcGdhX2pvYnN0ZXAvY3NzL3Bn YV9zdGVwLmNzcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL3BnQWdlbnQvc3RlcHMvdGVtcGxhdGVzL3BnYV9qb2JzdGVw L2Nzcy9wZ2Ffc3RlcC5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uYzM5NjYwNAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvc3Rl cHMvdGVtcGxhdGVzL3BnYV9qb2JzdGVwL2Nzcy9wZ2Ffc3RlcC5jc3MKQEAg LTAsMCArMSw3IEBACisuaWNvbi1wZ2Ffam9ic3RlcCB7CisgIGJhY2tncm91 bmQtaW1hZ2U6IHVybCgne3sgdXJsX2ZvcignTk9ERS1wZ2Ffam9ic3RlcC5z dGF0aWMnLCBmaWxlbmFtZT0naW1nL3BnYV9qb2JzdGVwLnBuZycpIH19Jykg IWltcG9ydGFudDsKKyAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsK KyAgYWxpZ24tY29udGVudDogY2VudGVyOworICB2ZXJ0aWNhbC1hbGlnbjog bWlkZGxlOworICBoZWlnaHQ6IDEuM2VtOworfQpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2Vu dC9zdGVwcy90ZW1wbGF0ZXMvcGdhX2pvYnN0ZXAvanMvcGdhX2pvYnN0ZXAu anMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9wZ0FnZW50L3N0ZXBzL3RlbXBsYXRlcy9wZ2Ffam9ic3RlcC9qcy9wZ2Ff am9ic3RlcC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li5kYTU3NDk2Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC9zdGVwcy90ZW1w bGF0ZXMvcGdhX2pvYnN0ZXAvanMvcGdhX2pvYnN0ZXAuanMKQEAgLTAsMCAr MSwyNzUgQEAKK2RlZmluZShbCisgICAgICAgICdqcXVlcnknLCAndW5kZXJz Y29yZScsICd1bmRlcnNjb3JlLnN0cmluZycsICdwZ2FkbWluJywKKyAgICAg ICAgJ3BnYWRtaW4uYnJvd3NlcicsICdhbGVydGlmeScsICdiYWNrZm9ybScs ICdwZ2FkbWluLmJhY2tmb3JtJworICAgICAgICBdLAorZnVuY3Rpb24oJCwg XywgUywgcGdBZG1pbiwgcGdCcm93c2VyLCBBbGVydGlmeSwgQmFja2Zvcm0p IHsKKworICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1snY29sbC1wZ2Ffam9ic3Rl cCddKSB7CisgICAgcGdCcm93c2VyLk5vZGVzWydjb2xsLXBnYV9qb2JzdGVw J10gPQorICAgICAgcGdCcm93c2VyLkNvbGxlY3Rpb24uZXh0ZW5kKHsKKyAg ICAgICAgbm9kZTogJ3BnYV9qb2JzdGVwJywKKyAgICAgICAgbGFiZWw6ICd7 eyBfKCdTdGVwcycpIH19JywKKyAgICAgICAgdHlwZTogJ2NvbGwtcGdhX2pv YnN0ZXAnLAorICAgICAgICBjb2x1bW5zOiBbCisgICAgICAgICAgJ2pzdGlk JywgJ2pzdG5hbWUnLCAnanN0ZW5hYmxlZCcsICdqc3RraW5kJywgJ2pzdGNv bm50eXBlJywKKyAgICAgICAgICAnanN0b25lcnJvcicKKyAgICAgICAgXSwK KyAgICAgICAgaGFzU3RhdGlzdGljczogZmFsc2UKKyAgICAgIH0pOworICB9 CisKKyAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ3BnYV9qb2JzdGVwJ10pIHsK KyAgICBwZ0Jyb3dzZXIuTm9kZXNbJ3BnYV9qb2JzdGVwJ10gPSBwZ0Jyb3dz ZXIuTm9kZS5leHRlbmQoeworICAgICAgcGFyZW50X3R5cGU6ICdwZ2Ffam9i JywKKyAgICAgIHR5cGU6ICdwZ2Ffam9ic3RlcCcsCisgICAgICBoYXNTUUw6 IHRydWUsCisgICAgICBoYXNEZXBlbmRzOiBmYWxzZSwKKyAgICAgIGhhc1N0 YXRpc3RpY3M6IHRydWUsCisgICAgICBoYXNDb2xsZWN0aXZlU3RhdGlzdGlj czogdHJ1ZSwKKyAgICAgIHdpZHRoOiAnNzAlJywKKyAgICAgIGhlaWdodDog JzgwJScsCisgICAgICBjYW5Ecm9wOiBmdW5jdGlvbihub2RlKSB7CisgICAg ICAgIHJldHVybiB0cnVlOworICAgICAgfSwKKyAgICAgIGxhYmVsOiAne3sg XygnU3RlcHMnKSB9fScsCisgICAgICBub2RlX2ltYWdlOiBmdW5jdGlvbigp IHsKKyAgICAgICAgY29uc29sZS5sb2coYXJndW1lbnRzKTsKKyAgICAgICAg cmV0dXJuICdpY29uLXBnYV9qb2JzdGVwJzsKKyAgICAgIH0sCisgICAgICBJ bml0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgLyogQXZvaWQgbXVsaXRwbGUg cmVnaXN0cmF0aW9uIG9mIG1lbnVzICovCisgICAgICAgIGlmICh0aGlzLmlu aXRpYWxpemVkKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRo aXMuaW5pdGlhbGl6ZWQgPSB0cnVlOworCisgICAgICAgIHBnQnJvd3Nlci5h ZGRfbWVudXMoW3sKKyAgICAgICAgICBuYW1lOiAnY3JlYXRlX3BnYV9qb2Jz dGVwX29uX2pvYicsIG5vZGU6ICdwZ2Ffam9iJywgbW9kdWxlOiB0aGlzLAor ICAgICAgICAgIGFwcGxpZXM6IFsnb2JqZWN0JywgJ2NvbnRleHQnXSwgY2Fs bGJhY2s6ICdzaG93X29ial9wcm9wZXJ0aWVzJywKKyAgICAgICAgICBjYXRl Z29yeTogJ2NyZWF0ZScsIHByaW9yaXR5OiA0LCBsYWJlbDogJ3t7IF8oJ0pv YiBTdGVwLi4uJykgfX0nLAorICAgICAgICAgIGRhdGE6IHsnYWN0aW9uJzog J2NyZWF0ZSd9LCBpY29uOiAnd2NUYWJJY29uIGljb24tcGdhX2pvYnN0ZXAn CisgICAgICAgIH0seworICAgICAgICAgIG5hbWU6ICdjcmVhdGVfcGdhX2pv YnN0ZXBfb25fY29sbCcsIG5vZGU6ICdjb2xsLXBnYV9qb2JzdGVwJywgbW9k dWxlOiB0aGlzLAorICAgICAgICAgIGFwcGxpZXM6IFsnb2JqZWN0JywgJ2Nv bnRleHQnXSwgY2FsbGJhY2s6ICdzaG93X29ial9wcm9wZXJ0aWVzJywKKyAg ICAgICAgICBjYXRlZ29yeTogJ2NyZWF0ZScsIHByaW9yaXR5OiA0LCBsYWJl bDogJ3t7IF8oJ0pvYiBTdGVwLi4uJykgfX0nLAorICAgICAgICAgIGRhdGE6 IHsnYWN0aW9uJzogJ2NyZWF0ZSd9LCBpY29uOiAnd2NUYWJJY29uIGljb24t cGdhX2pvYnN0ZXAnCisgICAgICAgIH0seworICAgICAgICAgIG5hbWU6ICdj cmVhdGVfcGdhX2pvYnN0ZXAnLCBub2RlOiAncGdhX2pvYnN0ZXAnLCBtb2R1 bGU6IHRoaXMsCisgICAgICAgICAgYXBwbGllczogWydvYmplY3QnLCAnY29u dGV4dCddLCBjYWxsYmFjazogJ3Nob3dfb2JqX3Byb3BlcnRpZXMnLAorICAg ICAgICAgIGNhdGVnb3J5OiAnY3JlYXRlJywgcHJpb3JpdHk6IDQsIGxhYmVs OiAne3sgXygnSm9iIFN0ZXAuLi4nKSB9fScsCisgICAgICAgICAgZGF0YTog eydhY3Rpb24nOiAnY3JlYXRlJ30sIGljb246ICd3Y1RhYkljb24gaWNvbi1w Z2Ffam9ic3RlcCcKKyAgICAgICAgfV0pOworICAgICAgfSwKKyAgICAgIG1v ZGVsOiBwZ0Jyb3dzZXIuTm9kZS5Nb2RlbC5leHRlbmQoeworICAgICAgICBk ZWZhdWx0czogeworICAgICAgICAgIGpzdGlkOiBudWxsLAorICAgICAgICAg IGpzdGpvYmlkOiBudWxsLAorICAgICAgICAgIGpzdG5hbWU6ICcnLAorICAg ICAgICAgIGpzdGRlc2M6ICcnLAorICAgICAgICAgIGpzdGVuYWJsZWQ6IHRy dWUsCisgICAgICAgICAganN0a2luZDogdHJ1ZSwKKyAgICAgICAgICBqc3Rj b25udHlwZTogdHJ1ZSwKKyAgICAgICAgICBqc3Rjb2RlOiAnJywKKyAgICAg ICAgICBqc3Rjb25uc3RyOiBudWxsLAorICAgICAgICAgIGpzdGRibmFtZTog bnVsbCwKKyAgICAgICAgICBqc3RvbmVycm9yOiAnZicsCisgICAgICAgICAg anN0bmV4dHJ1bjogJycKKyAgICAgICAgfSwKKyAgICAgICAgaW5pdGlhbGl6 ZTogZnVuY3Rpb24oKSB7CisgICAgICAgICAgcGdCcm93c2VyLk5vZGUuTW9k ZWwucHJvdG90eXBlLmluaXRpYWxpemUuYXBwbHkodGhpcywgYXJndW1lbnRz KTsKKyAgICAgICAgICBpZiAodGhpcy5pc05ldygpICYmIHRoaXMuZ2V0KCdq c3Rjb25udHlwZScpKSB7CisgICAgICAgICAgICB2YXIgYXJncyA9IGFyZ3Vt ZW50cyAmJiBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV07 CisKKyAgICAgICAgICAgIGlmIChhcmdzKSB7CisgICAgICAgICAgICAgIHRo aXMuc2V0KAorICAgICAgICAgICAgICAgICdqc3RkYm5hbWUnLAorICAgICAg ICAgICAgICAgIChhcmdzWydub2RlX2luZm8nXSB8fCBhcmdzLmNvbGxlY3Rp b24udG9wWydub2RlX2luZm8nXSlbJ3NlcnZlciddWydkYiddCisgICAgICAg ICAgICAgICk7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAg ICB9LAorICAgICAgICBpZEF0dHJpYnV0ZTogJ2pzdGlkJywKKyAgICAgICAg c2NoZW1hOiBbeworICAgICAgICAgIGlkOiAnanN0aWQnLCBsYWJlbDogJ3t7 IF8oJ0lEJykgfX0nLCB0eXBlOiAnaW50ZWdlcicsCisgICAgICAgICAgY2Vs bEhlYWRlckNsYXNzZXM6ICd3aWR0aF9wZXJjZW50XzUnLCBtb2RlOiBbJ3By b3BlcnRpZXMnXQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2pzdG5h bWUnLCBsYWJlbDogJ3t7IF8oJ05hbWUnKSB9fScsIHR5cGU6ICd0ZXh0JywK KyAgICAgICAgICBkaXNhYmxlZDogZnVuY3Rpb24obSkgeyByZXR1cm4gZmFs c2U7IH0sCisgICAgICAgICAgY2VsbEhlYWRlckNsYXNzZXM6ICd3aWR0aF9w ZXJjZW50XzYwJworICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2pzdGVu YWJsZWQnLCBsYWJlbDogJ3t7IF8oJ0VuYWJsZWQnKSB9fScsIHR5cGU6ICdz d2l0Y2gnLAorICAgICAgICAgIGRpc2FibGVkOiBmdW5jdGlvbihtKSB7IHJl dHVybiBmYWxzZTsgfQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2pz dGtpbmQnLCBsYWJlbDogJ3t7IF8oJ0tpbmQnKSB9fScsIHR5cGU6ICdzd2l0 Y2gnLAorICAgICAgICAgIG9wdGlvbnM6IHsKKyAgICAgICAgICAgICdvblRl eHQnOiAne3sgXygnU1FMJykgfX0nLCAnb2ZmVGV4dCc6ICd7eyBfKCdCYXRj aCcpIH19JywKKyAgICAgICAgICAgICdvbkNvbG9yJzogJ3ByaW1hcnknLCAn b2ZmQ29sb3InOiAncHJpbWFyeScKKyAgICAgICAgICB9LCBjb250cm9sOiBC YWNrZm9ybS5Td2l0Y2hDb250cm9sLAorICAgICAgICAgIGRpc2FibGVkOiBm dW5jdGlvbihtKSB7IHJldHVybiBmYWxzZTsgfQorICAgICAgICB9LHsKKyAg ICAgICAgICBpZDogJ2pzdGNvbm50eXBlJywgbGFiZWw6ICd7eyBfKCdDb25u ZWN0aW9uIHR5cGUnKSB9fScsCisgICAgICAgICAgdHlwZTogJ3N3aXRjaCcs IGRlcHM6IFsnanN0a2luZCddLCBtb2RlOiBbJ3Byb3BlcnRpZXMnXSwKKyAg ICAgICAgICBkaXNhYmxlZDogZnVuY3Rpb24obSkgeyByZXR1cm4gIW0uZ2V0 KCdqc3RraW5kJyk7IH0sCisgICAgICAgICAgb3B0aW9uczogeworICAgICAg ICAgICAgJ29uVGV4dCc6ICd7eyBfKCdMb2NhbCcpIH19JywgJ29mZlRleHQn OiAne3sgXygnUmVtb3RlJykgfX0nLAorICAgICAgICAgICAgJ29uQ29sb3In OiAncHJpbWFyeScsICdvZmZDb2xvcic6ICdwcmltYXJ5JworICAgICAgICAg IH0KKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdqc3Rjb25udHlwZScs IGxhYmVsOiAne3sgXygnQ29ubmVjdGlvbiB0eXBlJykgfX0nLAorICAgICAg ICAgIHR5cGU6ICdzd2l0Y2gnLCBkZXBzOiBbJ2pzdGtpbmQnXSwgbW9kZTog WydjcmVhdGUnLCAnZWRpdCddLAorICAgICAgICAgIGRpc2FibGVkOiBmdW5j dGlvbihtKSB7IHJldHVybiAhbS5nZXQoJ2pzdGtpbmQnKTsgfSwKKyAgICAg ICAgICBvcHRpb25zOiB7CisgICAgICAgICAgICAnb25UZXh0JzogJ3t7IF8o J0xvY2FsJykgfX0nLCAnb2ZmVGV4dCc6ICd7eyBfKCdSZW1vdGUnKSB9fScs CisgICAgICAgICAgICAnb25Db2xvcic6ICdwcmltYXJ5JywgJ29mZkNvbG9y JzogJ3ByaW1hcnknCisgICAgICAgICAgfSwgaGVscE1lc3NhZ2U6ICd7eyBf KCdQbGVhc2Ugc2VsZWN0IHRoZSA8Yj5Mb2NhbC9SZW1vdGU8L2I+LiBUaGlz IHdpbGwgYWxsb3cgdG8gcnVuIHRoaXMgam9iIHN0ZXAgb24gdGhlIHNhbWUg ZGF0YWJhc2Ugc2VydmVyIGJ5IHNlbGVjdGluZyB0aGUgZGF0YWJhc2UsIG9y IG9uIGEgcmVtb3RlIGRhdGFiYXNlIHNlcnZlciwgd2hpY2ggY2FuIGJlIHNw ZWNpZmllZCBieSB0aGUgY29ubmVjdGlvbiBzdHJpbmcuJykgfX0nCisgICAg ICAgIH0seworICAgICAgICAgIGlkOiAnanN0ZGJuYW1lJywgbGFiZWw6ICd7 eyBfKCdEYXRhYmFzZScpIH19JywgdHlwZTogJ3RleHQnLAorICAgICAgICAg IG1vZGU6IFsncHJvcGVydGllcyddLCBkaXNhYmxlZDogZnVuY3Rpb24obSkg eyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6 ICdqc3Rjb25uc3RyJywgdHlwZTogJ3RleHQnLCBtb2RlOiBbJ3Byb3BlcnRp ZXMnXSwKKyAgICAgICAgICBsYWJlbDogJ3t7IF8oJ0Nvbm5lY3Rpb24gc3Ry aW5nJykgfX0nCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAnanN0ZGJu YW1lJywgbGFiZWw6ICd7eyBfKCdEYXRhYmFzZScpIH19JywgdHlwZTogJ3Rl eHQnLAorICAgICAgICAgIGNvbnRyb2w6ICdub2RlLWxpc3QtYnktbmFtZScs IG5vZGU6ICdkYXRhYmFzZScsCisgICAgICAgICAgY2FjaGVfbm9kZTogJ2Rh dGFiYXNlJywgc2VsZWN0Mjoge2FsbG93Q2xlYXI6IHRydWUsIHBsYWNlaG9s ZGVyOiAnJ30sCisgICAgICAgICAgZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsK KyAgICAgICAgICAgIHJldHVybiAhbS5nZXQoJ2pzdGtpbmQnKSB8fCAhbS5n ZXQoJ2pzdGNvbm50eXBlJyk7CisgICAgICAgICAgfSwgZGVwczogWydqc3Rr aW5kJywgJ2pzdGNvbm50eXBlJ10sIG1vZGU6IFsnY3JlYXRlJywgJ2VkaXQn XSwKKyAgICAgICAgICBoZWxwTWVzc2FnZTogJ3t7IF8oJ1BsZWFzZSBzZWxl Y3QgYSBkYXRhYmFzZSBmcm9tIHRoZSBsaXN0LicpIH19JworICAgICAgICB9 LHsKKyAgICAgICAgICBpZDogJ2pzdGNvbm5zdHInLCBsYWJlbDogJ3t7IF8o J0Nvbm5lY3Rpb24gc3RyaW5nJykgfX0nLCB0eXBlOiAndGV4dCcsCisgICAg ICAgICAgZGVwczogWydqc3RraW5kJywgJ2pzdGNvbm50eXBlJ10sIGRpc2Fi bGVkOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgICByZXR1cm4gIW0uZ2V0 KCdqc3RraW5kJykgfHwgbS5nZXQoJ2pzdGNvbm50eXBlJyk7CisgICAgICAg ICAgfSwgaGVscE1lc3NhZ2U6IFMoCisgICAgICAgICAgICAne3sgXygiUGxl YXNlIHNwZWNpZnkgdGhlIGNvbm5lY3Rpb24gc3RyaW5nIGZvciB0aGUgcmVt b3RlIGRhdGFiYXNlIHNlcnZlci4gRWFjaCBwYXJhbWV0ZXIgc2V0dGluZyBp cyBpbiB0aGUgZm9ybSBrZXl3b3JkID0gdmFsdWUuIFNwYWNlcyBhcm91bmQg dGhlIGVxdWFsIHNpZ24gYXJlIG9wdGlvbmFsLiBUbyB3cml0ZSBhbiBlbXB0 eSB2YWx1ZSwgb3IgYSB2YWx1ZSBjb250YWluaW5nIHNwYWNlcywgc3Vycm91 bmQgaXQgd2l0aCBzaW5nbGUgcXVvdGVzLCBlLmcuLCBrZXl3b3JkID0gXFwn YSB2YWx1ZVxcJy4gU2luZ2xlIHF1b3RlcyBhbmQgYmFja3NsYXNoZXMgd2l0 aGluIHRoZSB2YWx1ZSBtdXN0IGJlIGVzY2FwZWQgd2l0aCBhIGJhY2tzbGFz aCwgaS5lLiwgXFxcJyBhbmQgXFxcXC48YnI+UmVmZXJlbmNlOiAlcyIpIH19 JworICAgICAgICAgICkuc3ByaW50ZigKKyAgICAgICAgICAgICc8YSBocmVm PSJodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9kb2NzL2N1cnJlbnQvc3Rh dGljL2xpYnBxLWNvbm5lY3QuaHRtbCNMSUJQUS1DT05OU1RSSU5HIiB0YXJn ZXQ9Il9ibGFuayI+TGliUFEgY29ubmVjdGlvbiBzdHJpbmdzPC9hPicKKyAg ICAgICAgICApLnZhbHVlKCksIG1vZGU6IFsnY3JlYXRlJywgJ2VkaXQnXQor ICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2pzdG9uZXJyb3InLCBsYWJl bDogJ3t7IF8oJ09uIGVycm9yJykgfX0nLCBjZWxsOiAnc2VsZWN0MicsCisg ICAgICAgICAgY29udHJvbDogJ3NlbGVjdDInLCBvcHRpb25zOiBbCisgICAg ICAgICAgICB7J2xhYmVsJzogJ3t7IF8oIkZhaWwiKSB9fScsICd2YWx1ZSc6 ICJmIn0sCisgICAgICAgICAgICB7J2xhYmVsJzogJ3t7IF8oIlN1Y2Nlc3Mi KSB9fScsICd2YWx1ZSc6ICJzIn0sCisgICAgICAgICAgICB7J2xhYmVsJzog J3t7IF8oIklnbm9yZSIpIH19JywgJ3ZhbHVlJzogImkifQorICAgICAgICAg IF0sIHNlbGVjdDI6IHthbGxvd0NsZWFyOiBmYWxzZX0sIGRpc2FibGVkOiBm dW5jdGlvbihtKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg ICAgICAgfQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2pzdGRlc2Mn LCBsYWJlbDogJ3t7IF8oJ0NvbW1lbnQnKSB9fScsIHR5cGU6ICdtdWx0aWxp bmUnCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAnanN0Y29kZScsIGxh YmVsOiAnJywgY2VsbDogJ3N0cmluZycsIGRlcHM6IFsnanN0a2luZCddLAor ICAgICAgICAgIHR5cGU6ICd0ZXh0JywgY29udHJvbDogJ3NxbC1maWVsZCcs IGdyb3VwOiAne3sgXygnQ29kZScpIH19JywKKyAgICAgICAgICBjb250cm9s OiBCYWNrZm9ybS5TcWxGaWVsZENvbnRyb2wuZXh0ZW5kKHsKKyAgICAgICAg ICAgIHJlbmRlcjogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgIGlmICh0 aGlzLm1vZGVsLmdldCgnanN0a2luZCcpKSB7CisgICAgICAgICAgICAgICAg dGhpcy5maWVsZC5zZXQoJ2xhYmVsJywgJ3t7IF8oJ1NRTCBxdWVyeScpIH19 Jyk7CisgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg dGhpcy5maWVsZC5zZXQoJ2xhYmVsJywgJ3t7IF8oJ1NjcmlwdCcpIH19Jyk7 CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgcmV0dXJuIEJhY2tm b3JtLlNxbEZpZWxkQ29udHJvbC5wcm90b3R5cGUucmVuZGVyLmFwcGx5KAor ICAgICAgICAgICAgICAgIHRoaXMsIGFyZ3VtZW50cworICAgICAgICAgICAg ICApOworICAgICAgICAgICAgfQorICAgICAgICAgIH0pCisgICAgICAgIH1d LAorICAgICAgICB2YWxpZGF0ZTogZnVuY3Rpb24oa2V5cykgeworICAgICAg ICAgIHZhciB2YWwgPSB0aGlzLmdldCgnanN0bmFtZScpLAorICAgICAgICAg ICAgICBlcnJNc2cgPSBudWxsOworCisgICAgICAgICAgaWYgKAorICAgICAg ICAgICAgXy5pc1VuZGVmaW5lZCh2YWwpIHx8IF8uaXNOdWxsKHZhbCkgfHwK KyAgICAgICAgICAgIFN0cmluZyh2YWwpLnJlcGxhY2UoL15ccyt8XHMrJC9n LCAnJykgPT0gJycKKyAgICAgICAgICApIHsKKyAgICAgICAgICAgIGVyck1z ZyA9ICd7eyBfKCdOYW1lIGNhbm5vdCBiZSBlbXB0eS4nKSB9fSc7CisgICAg ICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdqc3RuYW1lJywgZXJyTXNn KTsKKyAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhpcy5lcnJv ck1vZGVsLnVuc2V0KCdqc3RuYW1lJyk7CisgICAgICAgICAgfQorICAgICAg ICAgIGlmICh0aGlzLmdldCgnanN0a2luZCcpKSB7CisgICAgICAgICAgICBp ZiAodGhpcy5nZXQoJ2pzdGNvbm50eXBlJykpIHsKKyAgICAgICAgICAgICAg dGhpcy5lcnJvck1vZGVsLnVuc2V0KCdqc3Rjb25uc3RyJyk7CisgICAgICAg ICAgICAgIHZhbCA9IHRoaXMuZ2V0KCdqc3RkYm5hbWUnKTsKKyAgICAgICAg ICAgICAgaWYgKAorICAgICAgICAgICAgICAgIF8uaXNVbmRlZmluZWQodmFs KSB8fCBfLmlzTnVsbCh2YWwpIHx8CisgICAgICAgICAgICAgICAgICBTdHJp bmcodmFsKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpID09ICcnCisgICAg ICAgICAgICAgICkgeworICAgICAgICAgICAgICAgIHZhciBtc2cgPSAne3sg XygnUGxlYXNlIHNlbGVjdCBhIGRhdGFiYXNlLicpIH19JzsKKyAgICAgICAg ICAgICAgICBlcnJNc2cgPSBlcnJNc2cgfHwgbXNnOworICAgICAgICAgICAg ICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ2pzdGRibmFtZScsIG1zZyk7Cisg ICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdGhpcy5l cnJvck1vZGVsLnVuc2V0KCdqc3RkYm5hbWUnKTsKKyAgICAgICAgICAgICAg fQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgdGhpcy5l cnJvck1vZGVsLnVuc2V0KCdqc3RkYm5hbWUnKTsKKyAgICAgICAgICAgICAg dmFyIG1zZywKKyAgICAgICAgICAgICAgICByID0gL1xzKlxiKFx3Kylccyo9 XHMqKCcoW14nXFxdKig/OlxcLlteJ1xcXSopKiknfFx3KikvZzsKKyAgICAg ICAgICAgICAgdmFsID0gdGhpcy5nZXQoJ2pzdGNvbm5zdHInKTsKKyAgICAg ICAgICAgICAgaWYgKAorICAgICAgICAgICAgICAgIF8uaXNVbmRlZmluZWQo dmFsKSB8fCBfLmlzTnVsbCh2YWwpIHx8CisgICAgICAgICAgICAgICAgICBT dHJpbmcodmFsKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpID09ICcnCisg ICAgICAgICAgICAgICkgeworICAgICAgICAgICAgICAgIG1zZyA9ICAne3sg XygiUGxlYXNlIGVudGVyIGEgY29ubmVjdGlvbiBzdHJpbmcuIikgfX0nOwor ICAgICAgICAgICAgICB9IGVsc2UgaWYgKFN0cmluZyh2YWwpLnJlcGxhY2Uo ciwgJycpICE9ICcnKSB7CisgICAgICAgICAgICAgICAgbXNnID0gJ3t7IF8o IlBsZWFzZSBlbnRlciBhIHZhbGlkIGNvbm5lY3Rpb24gc3RyaW5nLiIpIH19 JzsKKyAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB2 YXIgbSwKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1zID0geworICAgICAg ICAgICAgICAgICAgICAgICdob3N0JzogdHJ1ZSwgJ2hvc3RhZGRyJzogdHJ1 ZSwgJ3BvcnQnOiB0cnVlLAorICAgICAgICAgICAgICAgICAgICAgICdkYm5h bWUnOiB0cnVlLCAndXNlcic6IHRydWUsICdwYXNzd29yZCc6IHRydWUsCisg ICAgICAgICAgICAgICAgICAgICAgJ2Nvbm5lY3RfdGltZW91dCc6IHRydWUs ICdjbGllbnRfZW5jb2RpbmcnOiB0cnVlLAorICAgICAgICAgICAgICAgICAg ICAgICdhcHBsaWNhdGlvbl9uYW1lJzogdHJ1ZSwgJ29wdGlvbnMnOiB0cnVl LAorICAgICAgICAgICAgICAgICAgICAgICdmYWxsYmFja19hcHBsaWNhdGlv bl9uYW1lJzogdHJ1ZSwgJ3NzbG1vZGUnOiB0cnVlLAorICAgICAgICAgICAg ICAgICAgICAgICdzc2xjZXJ0JzogdHJ1ZSwgJ3NzbGtleSc6IHRydWUsICdz c2xyb290Y2VydCc6IHRydWUsCisgICAgICAgICAgICAgICAgICAgICAgJ3Nz bGNybCc6IHRydWUsICdrZWVwYWxpdmVzJzogdHJ1ZSwgJ3NlcnZpY2UnOiB0 cnVlLAorICAgICAgICAgICAgICAgICAgICAgICdrZWVwYWxpdmVzX2lkbGUn OiB0cnVlLCAna2VlcGFsaXZlc19pbnRlcnZhbCc6IHRydWUsCisgICAgICAg ICAgICAgICAgICAgICAgJ2tlZXBhbGl2ZXNfY291bnQnOiB0cnVlLCAnc3Ns Y29tcHJlc3Npb24nOiB0cnVlLAorICAgICAgICAgICAgICAgICAgICAgICdy ZXF1aXJlcGVlcic6IHRydWUsICdrcmJzcnZuYW1lJzogdHJ1ZSwgJ2dzc2xp Yic6IHRydWUsCisgICAgICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAg ICAgICAgICB3aGlsZSgobSA9IHIuZXhlYyh2YWwpKSkgeworICAgICAgICAg ICAgICAgICAgaWYgKHBhcmFtc1ttWzFdXSkgeworICAgICAgICAgICAgICAg ICAgICBpZiAobVsyXSkKKyAgICAgICAgICAgICAgICAgICAgICBjb250aW51 ZTsKKyAgICAgICAgICAgICAgICAgICAgbXNnID0gJ3t7IF8oIlBsZWFzZSBl bnRlciBhIHZhbGlkIGNvbm5lY3Rpb24gc3RyaW5nLiIpIH19JzsKKyAgICAg ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICB9CisK KyAgICAgICAgICAgICAgICAgIG1zZyA9IFMoCisgICAgICAgICAgICAgICAg ICAgICd7eyBfKCJJbnZhbGlkIHBhcmFtZXRlciBpbiB0aGUgY29ubmVjdGlv biBzdHJpbmcgLSAlcy4iKSB9fScKKyAgICAgICAgICAgICAgICAgICkuc3By aW50ZihtWzFdKS52YWx1ZSgpOworICAgICAgICAgICAgICAgICAgYnJlYWs7 CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisKKyAgICAg ICAgICAgICAgaWYgKG1zZykgeworICAgICAgICAgICAgICAgIGVyck1zZyA9 IGVyck1zZyB8fCBtc2c7CisgICAgICAgICAgICAgICAgdGhpcy5lcnJvck1v ZGVsLnNldCgnanN0Y29ubnN0cicsIG1zZyk7CisgICAgICAgICAgICAgIH0g ZWxzZSB7CisgICAgICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnVuc2V0 KCdqc3Rjb25uc3RyJyk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg IH0KKyAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhpcy5lcnJv ck1vZGVsLnVuc2V0KCdqc3Rjb25uc3RyJyk7CisgICAgICAgICAgICB0aGlz LmVycm9yTW9kZWwudW5zZXQoJ2pzdGRibmFtZScpOworICAgICAgICAgIH0K KworICAgICAgICAgIHZhbCA9IHRoaXMuZ2V0KCdqc3Rjb2RlJyk7CisgICAg ICAgICAgaWYgKAorICAgICAgICAgICAgXy5pc1VuZGVmaW5lZCh2YWwpIHx8 IF8uaXNOdWxsKHZhbCkgfHwKKyAgICAgICAgICAgIFN0cmluZyh2YWwpLnJl cGxhY2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycKKyAgICAgICAgICApIHsK KyAgICAgICAgICAgIHZhciBtc2cgPSAne3sgXygnUGxlYXNlIHNwZWNpZnkg Y29kZSB0byBleGVjdXRlLicpIH19JzsKKyAgICAgICAgICAgIGVyck1zZyA9 IGVyck1zZyB8fCBtc2c7CisgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwu c2V0KCdqc3Rjb2RlJywgbXNnKTsKKyAgICAgICAgICB9IGVsc2UgeworICAg ICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnVuc2V0KCdqc3Rjb2RlJyk7Cisg ICAgICAgICAgfQorCisgICAgICAgICAgcmV0dXJuIGVyck1zZzsKKyAgICAg ICAgfQorICAgICAgfSkKKyAgICB9KTsKKyAgfQorCisgIHJldHVybiBwZ0Jy b3dzZXIuTm9kZXNbJ3BnYV9qb2InXTsKK30pOwpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2Vu dC90ZW1wbGF0ZXMvbWFjcm9zL3BnYV9leGNlcHRpb24ubWFjcm9zIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2Vu dC90ZW1wbGF0ZXMvbWFjcm9zL3BnYV9leGNlcHRpb24ubWFjcm9zCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4ZWVjMjkKLS0tIC9k ZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9wZ0FnZW50L3RlbXBsYXRlcy9tYWNyb3MvcGdhX2V4Y2Vw dGlvbi5tYWNyb3MKQEAgLTAsMCArMSwyNCBAQAoreyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfQoreyMgVGhp cyB3aWxsIGJlIHNwZWNpZmljIG1hY3JvIGZvciBwZ2FfZXhjZXB0aW9uLiAj fQoreyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjfQoreyUgbWFjcm8gSU5TRVJUKGpzY2lkLCBkYXRhKSAtJX0K Ky0tIEluc2VydGluZyBhIHNjaGVkdWxlIGV4Y2VwdGlvbiB7JSBpZiBqc2Np ZCAlfShzY2hlZHVsZToge3sganNjaWR8cXRMaXRlcmFsfX0peyUgZW5kaWYg JX0KKworSU5TRVJUIElOVE8gcGdhZ2VudC5wZ2FfZXhjZXB0aW9uICgKKyAg ICBqZXhzY2lkLCBqZXhkYXRlLCBqZXh0aW1lCispIFZBTFVFUyAoCisgICAg eyUgaWYganNjaWQgJX17eyBqc2NpZHxxdExpdGVyYWwgfX17JSBlbHNlICV9 c2NpZHslIGVuZGlmICV9LCB7JSBpZiBkYXRhLmpleGRhdGUgJX10b19kYXRl KHt7IGRhdGEuamV4ZGF0ZXxxdExpdGVyYWwgfX0sICdNTS9ERC9ZWVlZJyk6 OmRhdGV7JSBlbHNlICV9TlVMTDo6ZGF0ZXslIGVuZGlmICV9LCB7JSBpZiBk YXRhLmpleHRpbWUgJX17eyBkYXRhLmpleHRpbWV8cXRMaXRlcmFsIH19Ojp0 aW1lIHdpdGhvdXQgdGltZSB6b25leyUgZWxzZSAlfU5VTEw6OnRpbWUgd2l0 aG91dCB0aW1lIHpvbmV7JSBlbmRpZiAlfQorCispOworeyUtIGVuZG1hY3Jv ICV9Cit7JSBtYWNybyBVUERBVEUoanNjaWQsIGRhdGEpIC0lfQorLS0gVXBk YXRpbmcgYW4gZXhpc3Rpbmcgc2NoZWR1bGUgZXhjZXB0aW9uIChpZDoge3sg ZGF0YS5qZXhpZHxxdExpdGVyYWwgfX0sIHNjaGVkdWxlOiB7eyBqc2NpZHxx dExpdGVyYWwgfX0pCitVUERBVEUgcGdhZ2VudC5wZ2FfZXhjZXB0aW9uIFNF VAorICAgIHslIGlmICdqZXhkYXRlJyBpbiBkYXRhICV9amV4ZGF0ZT17JSBp ZiBkYXRhLmpleGRhdGUgJX10b19kYXRlKHt7IGRhdGEuamV4ZGF0ZXxxdExp dGVyYWwgfX0sICdNTS9ERC9ZWVlZJyk6OmRhdGV7JSBlbHNlICV9TlVMTDo6 ZGF0ZXslIGVuZGlmICV9eyUgZW5kaWYgJX17JSBpZiAnamV4dGltZScgaW4g ZGF0YSV9eyUgaWYgJ2pleGRhdGUnIGluIGRhdGEgJX0sIHslIGVuZGlmICV9 amV4dGltZT17JSBpZiBkYXRhLmpleHRpbWUgJX17eyBkYXRhLmpleHRpbWV8 cXRMaXRlcmFsIH19Ojp0aW1lIHdpdGhvdXQgdGltZSB6b25leyUgZWxzZSAl fU5VTEw6OnRpbWUgd2l0aG91dCB0aW1lIHpvbmV7JSBlbmRpZiAlfXslIGVu ZGlmICV9CisKK1dIRVJFIGpleGlkPXt7IGRhdGEuamV4aWR8cXRMaXRlcmFs IH19OjppbnRlZ2VyIEFORCBqc2NpZD17eyBqc2NpZHxxdExpdGVyYWwgfX06 OmludGVnZXI7Cit7JS0gZW5kbWFjcm8gJX0KK3slIG1hY3JvIERFTEVURShq c2NpZCwgZGF0YSkgLSV9CistLSBEZWxldGluZyBhIHNjaGVkdWxlIGV4Y2Vw dGlvbiAoaWQ6IHt7IGRhdGEuamV4aWR8cXRMaXRlcmFsIH19LCBzY2hlZHVs ZToge3sganNjaWR8cXRMaXRlcmFsIH19KQorREVMRVRFIEZST00gcGdhZ2Vu dC5wZ2FfZXhjZXB0aW9uIFdIRVJFIGpleGlkPXt7IGRhdGEuamV4aWR8cXRM aXRlcmFsIH19OjppbnRlZ2VyIEFORCBqc2NpZD17eyBqc2NpZHxxdExpdGVy YWwgfX06OmludGVnZXI7Cit7JS0gZW5kbWFjcm8gJX0KZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3Bn QWdlbnQvdGVtcGxhdGVzL21hY3Jvcy9wZ2Ffam9ic3RlcC5tYWNyb3MgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0Fn ZW50L3RlbXBsYXRlcy9tYWNyb3MvcGdhX2pvYnN0ZXAubWFjcm9zCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiZjMxN2YKLS0tIC9k ZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9wZ0FnZW50L3RlbXBsYXRlcy9tYWNyb3MvcGdhX2pvYnN0 ZXAubWFjcm9zCkBAIC0wLDAgKzEsNTEgQEAKK3sjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN9Cit7IyBUaGlzIHdp bGwgYmUgc3BlY2lmaWMgbWFjcm8gZm9yIHBnYV9qb2JzdGVwLiAjfQoreyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj I30KK3slIG1hY3JvIElOU0VSVChoYXNfY29ubnN0ciwgamlkLCBkYXRhKSAt JX0KKy0tIEluc2VydGluZyBhIHN0ZXAgKGpvYmlkOiB7eyBqaWR8cXRMaXRl cmFsIH19KQorSU5TRVJUIElOVE8gcGdhZ2VudC5wZ2Ffam9ic3RlcCAoCisg ICAganN0am9iaWQsIGpzdG5hbWUsIGpzdGVuYWJsZWQsIGpzdGtpbmQsCisg ICAgeyUgaWYgaGFzX2Nvbm5zdHIgJX1qc3Rjb25uc3RyLCB7JSBlbmRpZiAl fWpzdGRibmFtZSwganN0b25lcnJvciwKKyAgICBqc3Rjb2RlLCBqc3RkZXNj CispIFZBTFVFUyAoCisgICAgeyUgaWYgamlkICV9e3sgamlkfHF0TGl0ZXJh bCB9fXslIGVsc2UgJX1qaWR7JSBlbmRpZiAlfSwge3sgZGF0YS5qc3RuYW1l fHF0TGl0ZXJhbCB9fTo6dGV4dCwgeyUgaWYgZGF0YS5qc3RlbmFibGVkICV9 dHJ1ZXslIGVsc2UgJX1mYWxzZSB7JSBlbmRpZiAlfSwgeyUgaWYgZGF0YS5q c3RraW5kICV9J3MneyUgZWxzZSAlfSdiJ3slIGVuZGlmICV9OjpjaGFyYWN0 ZXIoMSksCisgICAgeyUgaWYgaGFzX2Nvbm5zdHIgJX17JSBpZiBkYXRhLmpz dGNvbm50eXBlICV9Jyd7JSBlbHNlICV9e3sgZGF0YS5qc3Rjb25uc3RyfHF0 TGl0ZXJhbCB9fXslIGVuZGlmICV9Ojp0ZXh0LCB7JSBpZiBub3QgZGF0YS5q c3Rjb25udHlwZSAlfScnOjpuYW1leyUgZWxzZSAlfXt7IGRhdGEuanN0ZGJu YW1lfHF0TGl0ZXJhbCB9fXslIGVuZGlmICV9OjpuYW1leyUgZWxzZSAlfXt7 IGRhdGEuanN0ZGJuYW1lfHF0TGl0ZXJhbCB9fTo6bmFtZXslIGVuZGlmICV9 LCB7eyBkYXRhLmpzdG9uZXJyb3J8cXRMaXRlcmFsIH19OjpjaGFyYWN0ZXIo MSksCisgICAge3sgZGF0YS5qc3Rjb2RlfHF0TGl0ZXJhbCB9fTo6dGV4dCwg e3sgZGF0YS5qc3RkZXNjfHF0TGl0ZXJhbCB9fTo6dGV4dAorKSB7JSBpZiBq aWQgJX1SRVRVUk5JTkcganN0aWR7JSBlbmRpZiAlfTsKK3slLSBlbmRtYWNy byAlfQoreyUgbWFjcm8gVVBEQVRFKGhhc19jb25uc3RyLCBqaWQsIGpzdGlk LCBkYXRhKSAtJX0KKy0tIFVwZGF0aW5nIHRoZSBleGlzdGluZyBzdGVwIChp ZDoge3sganN0aWR8cXRMaXRlcmFsIH19IGpvYmlkOiB7eyBqaWR8cXRMaXRl cmFsIH19KQorVVBEQVRFIHBnYWdlbnQucGdhX2pvYnN0ZXAKK1NFVAorICAg IHslIGlmIGhhc19jb25uc3RyICV9eyUgaWYgJ2pzdGNvbm50eXBlJyBpbiBk YXRhICV9eyUgaWYgZGF0YS5qc3Rjb25udHlwZSAlfWpzdGRibmFtZT17eyBk YXRhLmpzdGRibmFtZXxxdExpdGVyYWwgfX0sIGpzdGNvbm5zdHI9Jyd7JSBl bHNlICV9anN0ZGJuYW1lPScnLCBqc3Rjb25uc3RyPXt7IGRhdGEuanN0Y29u bnN0cnxxdExpdGVyYWwgfX17JSBlbmRpZiAlfXslIGlmICdqc3RuYW1lJyBp biBkYXRhIG9yICdqc3RlbmFibGVkJyBpbiBkYXRhIG9yICdqc3RkZXNjJyBp biBkYXRhIG9yICdqc3RvbmVycm9yJyBpbiBkYXRhIG9yICdqc3Rjb2RlJyBp biBkYXRhICV9LHslIGVuZGlmICV9eyUgZW5kaWYgJX17JSBlbHNlICV9eyUg aWYgJ2pzdGRibmFtZScgaW4gZGF0YSAlfWpzdGRibmFtZT17eyBkYXRhLmpz dGRibmFtZXxxdExpdGVyYWwgfX06Om5hbWV7JSBlbmRpZiAlfXslIGlmICdq c3RuYW1lJyBpbiBkYXRhIG9yICdqc3RlbmFibGVkJyBpbiBkYXRhIG9yICdq c3RkZXNjJyBpbiBkYXRhIG9yICdqc3RvbmVycm9yJyBpbiBkYXRhIG9yICdq c3Rjb2RlJyBpbiBkYXRhICV9LHslIGVuZGlmICV9eyUgZW5kaWYgJX17JSBp ZiAnanN0bmFtZScgaW4gZGF0YSAgJX0KKworICAgIGpzdG5hbWU9e3sgZGF0 YS5qc3RuYW1lfHF0TGl0ZXJhbCB9fTo6dGV4dHslIGlmICdqc3RlbmFibGVk JyBpbiBkYXRhIG9yICdqc3RkZXNjJyBpbiBkYXRhIG9yICdqc3RvbmVycm9y JyBpbiBkYXRhIG9yICdqc3Rjb2RlJyBpbiBkYXRhICV9LHslIGVuZGlmICV9 eyUgZW5kaWYgJX17JSBpZiAnanN0ZW5hYmxlZCcgaW4gZGF0YSAlfQorCisg ICAganN0ZW5hYmxlZD17JSBpZiBkYXRhLmpzdGVuYWJsZWQgJX10cnVleyUg ZWxzZSAlfWZhbHNleyUgZW5kaWYgJX17JSBpZiAnanN0ZGVzYycgaW4gZGF0 YSBvciAnanN0b25lcnJvcicgaW4gZGF0YSBvciAnanN0Y29kZScgaW4gZGF0 YSAlfSx7JSBlbmRpZiAlfXslIGVuZGlmICV9eyUgaWYgJ2pzdGRlc2MnIGlu IGRhdGEgJX0KKworICAgIGpzdGRlc2M9e3sgZGF0YS5qc3RkZXNjfHF0TGl0 ZXJhbCB9fXslIGlmICdqc3RvbmVycm9yJyBpbiBkYXRhIG9yICdqc3Rjb2Rl JyBpbiBkYXRhICV9LHslIGVuZGlmICV9eyUgZW5kaWYgJX17JSBpZiAnanN0 b25lcnJvcicgaW4gZGF0YSAlfQorCisgICAganN0b25lcnJvcj17eyBkYXRh LmpzdG9uZXJyb3J8cXRMaXRlcmFsIH19eyUgaWYgJ2pzdGNvZGUnIGluIGRh dGEgJX0seyUgZW5kaWYgJX17JSBlbmRpZiAlfXslIGlmICdqc3Rjb2RlJyBp biBkYXRhICV9CisKKyAgICBqc3Rjb2RlPXt7IGRhdGEuanN0Y29kZXxxdExp dGVyYWwgfX17JSBlbmRpZiAlfQorCitXSEVSRSBqc3RpZD17eyBqc3RpZHxx dExpdGVyYWwgfX06OmludGVnZXIgQU5EIGpzdGpvYmlkPXt7IGppZHxxdExp dGVyYWwgfX06OmludGVnZXI7Cit7JS0gZW5kbWFjcm8gJX0KK3slIG1hY3Jv IERFTEVURShqaWQsIGpzdGlkKSAtJX0KKy0tIERlbGV0aW5nIGEgc3RlcCAo aWQ6IHt7IGpzdGlkfHF0TGl0ZXJhbCB9fSwgam9iaWQ6IHt7IGppZHxxdExp dGVyYWwgfX0pCitERUxFVEUgRlJPTSBwZ2FnZW50LnBnYV9qb2JzdGVwIFdI RVJFIGpzdGlkPXt7IGpzdGlkfHF0TGl0ZXJhbCB9fTo6aW50ZWdlciBBTkQg anN0am9iaWQ9e3sgamlkfHF0TGl0ZXJhbCB9fTo6aW50ZWdlcjsKK3slLSBl bmRtYWNybyAlfQoreyUgbWFjcm8gUFJPUEVSVElFUyhoYXNfY29ubnN0ciwg amlkLCBqc3RpZCkgLSV9CitTRUxFQ1QKKyAgICBqc3RpZCwgIGpzdGpvYmlk LCBqc3RuYW1lLCBqc3RkZXNjLCBqc3RlbmFibGVkLCBqc3RraW5kID0gJ3Mn OjpicGNoYXIgYXMganN0a2luZCwKKyAgICBqc3Rjb2RlLCBDQVNFIFdIRU4g anN0ZGJuYW1lICE9ICcnIFRIRU4gdHJ1ZSBFTFNFIGZhbHNlIEVORCBBUyBq c3Rjb25udHlwZSwKKyAgICB7JSBpZiBoYXNfY29ubnN0ciAlfWpzdGNvbm5z dHIsIHslIGVuZGlmICV9IGpzdGRibmFtZSwganN0b25lcnJvciwganNjbmV4 dHJ1bgorRlJPTQorICAgIHBnYWdlbnQucGdhX2pvYnN0ZXAKK1dIRVJFCit7 JSBpZiBqc3RpZCAlfQorICAgIGpzdGlkID0ge3sganN0aWR8cXRMaXRlcmFs IH19OjppbnRlZ2VyIEFORAoreyUgZW5kaWYgJX0KKyAgICBqc3Rqb2JpZCA9 IHt7IGppZHxxdExpdGVyYWwgfX06OmludGVnZXIKK09SREVSIEJZIGpzdG5h bWU7Cit7JS0gZW5kbWFjcm8gJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxh dGVzL21hY3Jvcy9wZ2Ffc2NoZWR1bGUubWFjcm9zIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC90ZW1wbGF0 ZXMvbWFjcm9zL3BnYV9zY2hlZHVsZS5tYWNyb3MKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uZThmMTI5YwotLS0gL2Rldi9udWxsCisr KyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L3BnQWdlbnQvdGVtcGxhdGVzL21hY3Jvcy9wZ2Ffc2NoZWR1bGUubWFjcm9z CkBAIC0wLDAgKzEsMTA3IEBACit7IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI30KK3sjIFRoaXMgd2lsbCBiZSBz cGVjaWZpYyBtYWNybyBmb3IgcGdhX3NjaGVkdWxlLiAjfQoreyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN9Cit7 JSBpbXBvcnQgJ21hY3Jvcy9wZ2FfZXhjZXB0aW9uLm1hY3JvcycgYXMgRVhD RVBUSU9OUyAlfQoreyUgbWFjcm8gSU5TRVJUKGppZCwgZGF0YSkgLSV9Cist LSBJbnNlcnRpbmcgYSBzY2hlZHVsZXslIGlmIGppZCAlfSAoam9iaWQ6IHt7 IGppZHxxdExpdGVyYWwgfX0peyUgZW5kaWYgJX0KKworSU5TRVJUIElOVE8g cGdhZ2VudC5wZ2Ffc2NoZWR1bGUoCisgICAganNjam9iaWQsIGpzY25hbWUs IGpzY2Rlc2MsIGpzY2VuYWJsZWQsCisgICAganNjc3RhcnQsIHslIGlmIGRh dGEuanNjZW5kICV9anNjZW5kLHslIGVuZGlmICV9CisgICAganNjbWludXRl cywganNjaG91cnMsIGpzY3dlZWtkYXlzLCBqc2Ntb250aGRheXMsIGpzY21v bnRocworKSBWQUxVRVMgKAorICAgIHslIGlmIGppZCAlfXt7IGppZHxxdExp dGVyYWwgfX17JSBlbHNlICV9amlkeyUgZW5kaWYgJX0sIHt7IGRhdGEuanNj bmFtZXxxdExpdGVyYWwgfX06OnRleHQsIHt7IGRhdGEuanNjZGVzY3xxdExp dGVyYWwgfX06OnRleHQsIHslIGlmIGRhdGEuanNjZW5hYmxlZCAlfXRydWV7 JSBlbHNlICV9ZmFsc2V7JSBlbmRpZiAlfSwKKyAgICB7eyBkYXRhLmpzY3N0 YXJ0fHF0TGl0ZXJhbCB9fTo6dGltZXN0YW1wIHdpdGggdGltZSB6b25lLCB7 JSBpZiBkYXRhLmpzY2VuZCAlfXt7IGRhdGEuanNjZW5kfHF0TGl0ZXJhbCB9 fTo6dGltZXN0YW1wIHdpdGggdGltZSB6b25lLHslIGVuZGlmICV9CisKKyAg ICAtLSBNaW51dGVzCisgICAge3sgZGF0YS5qc2NtaW51dGVzfHF0TGl0ZXJh bCB9fTo6Ym9vbGVhbltdLAorICAgIC0tIEhvdXJzCisgICAge3sgZGF0YS5q c2Nob3Vyc3xxdExpdGVyYWwgfX06OmJvb2xlYW5bXSwKKyAgICAtLSBXZWVr IGRheXMKKyAgICB7eyBkYXRhLmpzY3dlZWtkYXlzfHF0TGl0ZXJhbCB9fTo6 Ym9vbGVhbltdLAorICAgIC0tIE1vbnRoIGRheXMKKyAgICB7eyBkYXRhLmpz Y21vbnRoZGF5c3xxdExpdGVyYWwgfX06OmJvb2xlYW5bXSwKKyAgICAtLSBN b250aHMKKyAgICB7eyBkYXRhLmpzY21vbnRoc3xxdExpdGVyYWwgfX06OmJv b2xlYW5bXQorKSBSRVRVUk5JTkcganNjaWQgSU5UTyBzY2lkO3slIGlmICdq c2NleGNlcHRpb25zJyBpbiBkYXRhICV9Cit7JSBmb3IgZXhjIGluIGRhdGEu anNjZXhjZXB0aW9ucyAlfQorCit7eyBFWENFUFRJT05TLklOU0VSVChOb25l LCBleGMpIH19eyUgZW5kZm9yICV9eyUgZW5kaWYgJX0KK3slLSBlbmRtYWNy byAlfQoreyUgbWFjcm8gVVBEQVRFKGppZCwganNjaWQsIGRhdGEpIC0lfQor eyUgaWYgJ2pzY25hbWUnIGluIGRhdGEgb3IgJ2pzY2VuYWJsZWQnIGluIGRh dGEgb3IgJ2pzY2Rlc2MnIGluIGRhdGEgb3IgJ2pzY3N0YXJ0JyBpbiBkYXRh IG9yICdqc2NlbmQnIGluIGRhdGEgb3IgJ2pzY2VuZCcgaW4gZGF0YSBvciAn anNjbW9udGhzJyBpbiBkYXRhIG9yICdqc2NtaW51dGVzJyBpbiBkYXRhIG9y ICdqc2Ntb250aGRheXMnIGluIGRhdGEgb3IgJ2pzY2hvdXJzJyBpbiBkYXRh IG9yICdqc2N3ZWVrZGF5cycgaW4gZGF0YSAlfQorLS0gVXBkYXRpbmcgdGhl IHNjaGVkdWxlIChpZDoge3sganNjaWR8cXRMaXRlcmFsIH19LCBqb2JpZDog e3sgamlkfHF0TGl0ZXJhbCB9fSkKK1VQREFURSBwZ2FnZW50LnBnYV9zY2hl ZHVsZQorU0VUeyUgaWYgJ2pzY25hbWUnIGluIGRhdGEgJX0KKworICAgIGpz Y25hbWU9e3sgZGF0YS5qc2NuYW1lfHF0TGl0ZXJhbCB9fTo6dGV4dHslIGlm ICdqc2NkZXNjJyBpbiBkYXRhIG9yICdqc2NzdGFydCcgaW4gZGF0YSBvciAn anNjZW5kJyBpbiBkYXRhIG9yICdqc2NlbmQnIGluIGRhdGEgb3IgJ2pzY21v bnRocycgaW4gZGF0YSBvciAnanNjbWludXRlcycgaW4gZGF0YSBvciAnanNj bW9udGhkYXlzJyBpbiBkYXRhIG9yICdqc2Nob3VycycgaW4gZGF0YSBvciAn anNjd2Vla2RheXMnIGluIGRhdGEgb3IgJ2pzY2VuYWJsZWQnIGluIGRhdGEg JX0seyUgZW5kaWYgJX17JSBlbmRpZiAlfXslIGlmICdqc2NlbmFibGVkJyBp biBkYXRhICV9CisKKyAgICBqc2NlbmFibGVkPXslIGlmIGRhdGEuanNjZW5h YmxlZCAlfXRydWV7JSBlbHNlICV9ZmFsc2V7JSBlbmRpZiAlfXslIGlmICdq c2NkZXNjJyBpbiBkYXRhIG9yICdqc2NzdGFydCcgaW4gZGF0YSBvciAnanNj ZW5kJyBpbiBkYXRhIG9yICdqc2NlbmQnIGluIGRhdGEgb3IgJ2pzY21vbnRo cycgaW4gZGF0YSBvciAnanNjbWludXRlcycgaW4gZGF0YSBvciAnanNjbW9u dGhkYXlzJyBpbiBkYXRhIG9yICdqc2Nob3VycycgaW4gZGF0YSBvciAnanNj d2Vla2RheXMnIGluIGRhdGEgJX0seyUgZW5kaWYgJX17JSBlbmRpZiAlfXsl IGlmICdqc2NkZXNjJyBpbiBkYXRhICV9CisKKyAgICBqc2NkZXNjPXslIGlm IGRhdGEuanNjZGVzYyAlfXt7IGRhdGEuanNjZGVzY3xxdExpdGVyYWwgfX06 OnRleHR7JSBlbHNlICV9Jyc6OnRleHR7JSBlbmRpZiAlfXslIGlmICdqc2Nz dGFydCcgaW4gZGF0YSBvciAnanNjZW5kJyBpbiBkYXRhIG9yICdqc2NlbmQn IGluIGRhdGEgb3IgJ2pzY21vbnRocycgaW4gZGF0YSBvciAnanNjbWludXRl cycgaW4gZGF0YSBvciAnanNjbW9udGhkYXlzJyBpbiBkYXRhIG9yICdqc2No b3VycycgaW4gZGF0YSBvciAnanNjd2Vla2RheXMnIGluIGRhdGEgJX0seyUg ZW5kaWYgJX17JSBlbmRpZiAlfXslIGlmICdqc2NzdGFydCcgaW4gZGF0YSAl fQorCisgICAganNjc3RhcnQ9e3sgZGF0YS5qc2NzdGFydHxxdExpdGVyYWwg fX06OnRleHR7JSBpZiAnanNjZW5kJyBpbiBkYXRhIG9yICdqc2NlbmQnIGlu IGRhdGEgb3IgJ2pzY21vbnRocycgaW4gZGF0YSBvciAnanNjbWludXRlcycg aW4gZGF0YSBvciAnanNjbW9udGhkYXlzJyBpbiBkYXRhIG9yICdqc2Nob3Vy cycgaW4gZGF0YSBvciAnanNjd2Vla2RheXMnIGluIGRhdGEgJX0seyUgZW5k aWYgJX17JSBlbmRpZiAlfXslIGlmICdqc2NlbmQnIGluIGRhdGEgJX0KKwor ICAgIGpzY2VuZD17JSBpZiBkYXRhLmpzY2VuZCAlfXt7IGRhdGEuanNjZW5k fHF0TGl0ZXJhbCB9fTo6dGltZXN0YW1wdHp7JSBlbHNlICV9TlVMTDo6dGlt ZXN0YW1wdHp7JSBlbmRpZiAlfXslIGlmICdqc2NlbmQnIGluIGRhdGEgb3Ig J2pzY21vbnRocycgaW4gZGF0YSBvciAnanNjbWludXRlcycgaW4gZGF0YSBv ciAnanNjbW9udGhkYXlzJyBpbiBkYXRhIG9yICdqc2Nob3VycycgaW4gZGF0 YSBvciAnanNjd2Vla2RheXMnIGluIGRhdGEgJX0seyUgZW5kaWYgJX17JSBl bmRpZiAlfXslIGlmICdqc2Ntb250aHMnIGluIGRhdGEgJX0KKworICAgIGpz Y21vbnRocz17eyBkYXRhLmpzY21vbnRoc3xxdExpdGVyYWwgfX06OmJvb2xl YW5bXXslIGlmICdqc2NtaW51dGVzJyBpbiBkYXRhIG9yICdqc2Ntb250aGRh eXMnIGluIGRhdGEgb3IgJ2pzY2hvdXJzJyBpbiBkYXRhIG9yICdqc2N3ZWVr ZGF5cycgaW4gZGF0YSAlfSx7JSBlbmRpZiAlfXslIGVuZGlmICV9eyUgaWYg J2pzY21pbnV0ZXMnIGluIGRhdGEgJX0KKworICAgIGpzY21pbnV0ZXM9e3sg ZGF0YS5qc2NtaW51dGVzfHF0TGl0ZXJhbCB9fTo6Ym9vbGVhbltdeyUgaWYg J2pzY21vbnRoZGF5cycgaW4gZGF0YSBvciAnanNjaG91cnMnIGluIGRhdGEg b3IgJ2pzY3dlZWtkYXlzJyBpbiBkYXRhICV9LHslIGVuZGlmICV9eyUgZW5k aWYgJX17JSBpZiAnanNjbW9udGhkYXlzJyBpbiBkYXRhICV9CisKKyAgICBq c2Ntb250aGRheXM9e3sgZGF0YS5qc2Ntb250aGRheXN8cXRMaXRlcmFsIH19 Ojpib29sZWFuW117JSBpZiAnanNjaG91cnMnIGluIGRhdGEgb3IgJ2pzY3dl ZWtkYXlzJyBpbiBkYXRhICV9LHslIGVuZGlmICV9eyUgZW5kaWYgJX17JSBp ZiAnanNjaG91cnMnIGluIGRhdGEgJX0KKworICAgIGpzY2hvdXJzPXt7IGRh dGEuanNjaG91cnN8cXRMaXRlcmFsIH19Ojpib29sZWFuW117JSBpZiAnanNj d2Vla2RheXMnIGluIGRhdGEgJX0seyUgZW5kaWYgJX17JSBlbmRpZiAlfXsl IGlmICdqc2N3ZWVrZGF5cycgaW4gZGF0YSAlfQorCisgICAganNjd2Vla2Rh eXM9e3sgZGF0YS5qc2N3ZWVrZGF5c3xxdExpdGVyYWwgfX06OmJvb2xlYW5b XXslIGVuZGlmICV9CisKK1dIRVJFIGpzY2lkPXt7IGpzY2lkfHF0TGl0ZXJh bCB9fTo6aW50ZWdlciBBTkQganNjam9iaWQ9e3sgamlkfHF0TGl0ZXJhbCB9 fTo6aW50ZWdlcjt7JSBlbmRpZiAlfXslIGlmICdqc2NleGNlcHRpb25zJyBp biBkYXRhICV9Cit7JSBpZiAnYWRkZWQnIGluIGRhdGEuanNjZXhjZXB0aW9u cyBhbmQgZGF0YS5qc2NleGNlcHRpb25zLmFkZGVkfGxlbmd0aCA+IDAgJX0K KworeyUgZm9yIGV4YyBpbiBkYXRhLmpzY2V4Y2VwdGlvbnMuYWRkZWQgJX0K K3t7IEVYQ0VQVElPTlMuSU5TRVJUKGpzY2lkLCBleGMpIH19Cit7JSBlbmRm b3IgJX0KK3slIGVuZGlmICV9Cit7JSBpZiAnZGVsZXRlZCcgaW4gZGF0YS5q c2NleGNlcHRpb25zIGFuZCBkYXRhLmpzY2V4Y2VwdGlvbnMuZGVsZXRlZHxs ZW5ndGggPiAwICV9CisKK3slIGZvciBleGMgaW4gZGF0YS5qc2NleGNlcHRp b25zLmRlbGV0ZWQgJX0KK3t7IEVYQ0VQVElPTlMuREVMRVRFKGpzY2lkLCBl eGMpIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7JSBpZiAnY2hh bmdlZCcgaW4gZGF0YS5qc2NleGNlcHRpb25zIGFuZCBkYXRhLmpzY2V4Y2Vw dGlvbnMuY2hhbmdlZHxsZW5ndGggPiAwICV9CisKK3slIGZvciBleGMgaW4g ZGF0YS5qc2NleGNlcHRpb25zLmNoYW5nZWQgJX0KK3t7IEVYQ0VQVElPTlMu VVBEQVRFKGpzY2lkLCBleGMpIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlm ICV9Cit7JSBlbmRpZiAlfQoreyUtIGVuZG1hY3JvICV9Cit7JSBtYWNybyBE RUxFVEUoamlkLCBqc2NpZCkgLSV9CistLSBSZW1vdmluZyB0aGUgZXhpc3Rp bmcgc2NoZWR1bGUgKGlkOiB7eyBqc2NpZHxxdExpdGVyYWwgfX0sIGpvYmlk OiB7eyBqaWR8cXRMaXRlcmFsIH19KQorREVMRVRFIEZST00gcGdhZ2VudC5w Z2Ffc2NoZWR1bGUgV0hFUkUganNjaWQ9e3sganNjaWR8cXRMaXRlcmFsIH19 OjppbnRlZ2VyIEFORCBqc2Nqb2JpZD17eyBqaWR8cXRMaXRlcmFsIH19Ojpp bnRlZ2VyOworeyUtIGVuZG1hY3JvICV9Cit7JSBtYWNybyBGRVRDSF9DVVJS RU5UKCkgLSV9CitTRUxFQ1QganNjaWQgRlJPTSBwZ2FnZW50LnBnYV9zY2hl ZHVsZSBXSEVSRSB4bWluOjp0ZXh0ID0gKHR4aWRfY3VycmVudCgpICUgKDJe MzIpOjpiaWdpbnQpOjp0ZXh0OworeyUtIGVuZG1hY3JvICV9Cit7JSBtYWNy byBQUk9QRVJUSUVTKGppZCwganNjaWQpIC0lfQorU0VMRUNUCisgICAganNj aWQsICBqc2Nqb2JpZCwganNjbmFtZSwganNjZGVzYywganNjZW5hYmxlZCwg anNjc3RhcnQsIGpzY2VuZCwKKyAgICBqc2NtaW51dGVzLCBqc2Nob3Vycywg anNjd2Vla2RheXMsIGpzY21vbnRoZGF5cywganNjbW9udGhzLAorICAgIGpl eGlkLCBqZXhkYXRlLCBqZXh0aW1lCitGUk9NCisgICAgcGdhZ2VudC5wZ2Ff c2NoZWR1bGUgcworICAgIExFRlQgSk9JTiAoCisgICAgICAgIFNFTEVDVAor ICAgICAgICAgICAgamV4c2NpZCwgYXJyYXlfYWdnKGpleGlkKSBBUyBqZXhp ZCwgYXJyYXlfYWdnKHRvX2NoYXIoamV4ZGF0ZSwgJ1lZWVktTU0tREQnKSkg QVMgamV4ZGF0ZSwKKyAgICAgICAgICAgIGFycmF5X2FnZyhqZXh0aW1lKSBB UyBqZXh0aW1lCisgICAgICAgIEZST00KKyAgICAgICAgICAgIHBnYWdlbnQu cGdhX2V4Y2VwdGlvbiBleAorICAgICAgICBHUk9VUCBCWQorICAgICAgICAg ICAgamV4c2NpZAorICAgICkgZSBPTiBzLmpzY2lkID0gZS5qZXhzY2lkCitX SEVSRQoreyUgaWYganNjaWQgJX0KKyAgIHMuanNjaWQgPSB7eyBqc2NpZHxx dExpdGVyYWwgfX06OmludGVnZXIgQU5ECit7JSBlbmRpZiAlfQorICAgcy5q c2Nqb2JpZCA9IHt7IGppZHxxdExpdGVyYWwgfX06OmludGVnZXIKK09SREVS IEJZIGpzY25hbWU7Cit7JS0gZW5kbWFjcm8gJX0KZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdl bnQvdGVtcGxhdGVzL3BnYV9qb2IvY3NzL3BnYV9qb2IuY3NzIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC90 ZW1wbGF0ZXMvcGdhX2pvYi9jc3MvcGdhX2pvYi5jc3MKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzQ1NmI0MAotLS0gL2Rldi9udWxs CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL3BnYV9qb2IvY3NzL3BnYV9qb2IuY3Nz CkBAIC0wLDAgKzEsMjggQEAKKy5pY29uLXBnYV9qb2IgeworICBiYWNrZ3Jv dW5kLWltYWdlOiB1cmwoJ3t7IHVybF9mb3IoJ05PREUtcGdhX2pvYi5zdGF0 aWMnLCBmaWxlbmFtZT0naW1nL3BnYV9qb2IucG5nJykgfX0nKSAhaW1wb3J0 YW50OworICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OworICBhbGln bi1jb250ZW50OiBjZW50ZXI7CisgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7 CisgIGhlaWdodDogMS4zZW07Cit9CisKKy5pY29uLXBnYV9qb2ItZGlzYWJs ZWQgeworICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ3t7IHVybF9mb3IoJ05P REUtcGdhX2pvYi5zdGF0aWMnLCBmaWxlbmFtZT0naW1nL3BnYV9qb2ItZGlz YWJsZWQucG5nJykgfX0nKSAhaW1wb3J0YW50OworICBiYWNrZ3JvdW5kLXJl cGVhdDogbm8tcmVwZWF0OworICBhbGlnbi1jb250ZW50OiBjZW50ZXI7Cisg IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CisgIGhlaWdodDogMS4zZW07Cit9 CisKKy5wZy1lbC1jb250YWluZXJbZWw9c21dIC5wZ2Etcm91bmQtYm9yZGVy IHsKKyAgYm9yZGVyOiAxcHggc29saWQgZGFya2dyYXk7CisgIGJvcmRlci1y YWRpdXM6IDEycHg7Cit9CisKKy5wZy1lbC1jb250YWluZXJbZWw9c21dIC5w Z2Etcm91bmQtYm9yZGVyIHsKKyAgbWFyZ2luOiA1cHg7Cit9CisKK2Rpdlty b2xlPXRhYnBhbmVsXSA+IC5wZ2FkbWluLWNvbnRyb2wtZ3JvdXAuZm9ybS1n cm91cC5wZy1lbC14cy0xMi5qc2NleGNlcHRpb25zIHsKKyAgbWluLWhlaWdo dDogNDAwcHg7Cit9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3RlbXBsYXRlcy9wZ2Ff am9iL2pzL3BnYV9qb2IuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3RlbXBsYXRlcy9wZ2Ffam9iL2pz L3BnYV9qb2IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uZDM2OWUyOQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVz L3BnYV9qb2IvanMvcGdhX2pvYi5qcwpAQCAtMCwwICsxLDE2MSBAQAorZGVm aW5lKAorICBbCisgICAgJ2pxdWVyeScsICd1bmRlcnNjb3JlJywgJ3VuZGVy c2NvcmUuc3RyaW5nJywgJ3BnYWRtaW4nLAorICAgICdwZ2FkbWluLmJyb3dz ZXInLCAnYWxlcnRpZnknLCAncGdhZG1pbi5ub2RlLnBnYV9qb2JzdGVwJywK KyAgICAncGdhZG1pbi5ub2RlLnBnYV9zY2hlZHVsZScKKyAgXSwKK2Z1bmN0 aW9uKCQsIF8sIFMsIHBnQWRtaW4sIHBnQnJvd3NlciwgQWxlcnRpZnkpIHsK KworICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1snY29sbC1wZ2Ffam9iJ10pIHsK KyAgICB2YXIgcGdhX2pvYnMgPSBwZ0Jyb3dzZXIuTm9kZXNbJ2NvbGwtcGdh X2pvYiddID0KKyAgICAgIHBnQnJvd3Nlci5Db2xsZWN0aW9uLmV4dGVuZCh7 CisgICAgICAgIG5vZGU6ICdwZ2Ffam9iJywKKyAgICAgICAgbGFiZWw6ICd7 eyBfKCdwZ2Ffam9icycpIH19JywKKyAgICAgICAgdHlwZTogJ2NvbGwtcGdh X2pvYicsCisgICAgICAgIGNvbHVtbnM6IFsnam9iaWQnLCAnam9ibmFtZScs ICdqb2JlbmFibGVkJywgJ2psZ3N0YXR1cycsICdqb2JuZXh0cnVuJywgJ2pv Ymxhc3RydW4nLCAnam9iZGVzYyddLAorICAgICAgICBoYXNTdGF0aXN0aWNz OiBmYWxzZQorICAgICAgfSk7CisgIH07CisKKyAgaWYgKCFwZ0Jyb3dzZXIu Tm9kZXNbJ3BnYV9qb2InXSkgeworICAgIHBnQnJvd3Nlci5Ob2Rlc1sncGdh X2pvYiddID0gcGdCcm93c2VyLk5vZGUuZXh0ZW5kKHsKKyAgICAgIHBhcmVu dF90eXBlOiAnc2VydmVyJywKKyAgICAgIHR5cGU6ICdwZ2Ffam9iJywKKyAg ICAgIGhhc1NRTDogdHJ1ZSwKKyAgICAgIGhhc0RlcGVuZHM6IGZhbHNlLAor ICAgICAgaGFzU3RhdGlzdGljczogdHJ1ZSwKKyAgICAgIGhhc0NvbGxlY3Rp dmVTdGF0aXN0aWNzOiB0cnVlLAorICAgICAgd2lkdGg6ICc4MCUnLAorICAg ICAgaGVpZ2h0OiAnODAlJywKKyAgICAgIGNhbkRyb3A6IGZ1bmN0aW9uKG5v ZGUpIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICB9LAorICAgICAg bGFiZWw6ICd7eyBfKCdwZ0FnZW50IEpvYicpIH19JywKKyAgICAgIG5vZGVf aW1hZ2U6IGZ1bmN0aW9uKCkgeworICAgICAgICByZXR1cm4gJ2ljb24tcGdh X2pvYic7CisgICAgICB9LAorICAgICAgSW5pdDogZnVuY3Rpb24oKSB7Cisg ICAgICAgIC8qIEF2b2lkIG11bGl0cGxlIHJlZ2lzdHJhdGlvbiBvZiBtZW51 cyAqLworICAgICAgICBpZiAodGhpcy5pbml0aWFsaXplZCkKKyAgICAgICAg ICAgIHJldHVybjsKKworICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1 ZTsKKworICAgICAgICBwZ0Jyb3dzZXIuYWRkX21lbnVzKFt7CisgICAgICAg ICAgbmFtZTogJ2NyZWF0ZV9wZ2Ffam9iX29uX2NvbGwnLCBub2RlOiAnY29s bC1wZ2Ffam9iJywgbW9kdWxlOiB0aGlzLAorICAgICAgICAgIGFwcGxpZXM6 IFsnb2JqZWN0JywgJ2NvbnRleHQnXSwgY2FsbGJhY2s6ICdzaG93X29ial9w cm9wZXJ0aWVzJywKKyAgICAgICAgICBjYXRlZ29yeTogJ2NyZWF0ZScsIHBy aW9yaXR5OiA0LCBsYWJlbDogJ3t7IF8oJ3BnQWdlbnQgSm9iLi4uJykgfX0n LAorICAgICAgICAgIGljb246ICd3Y1RhYkljb24gaWNvbi1wZ2Ffam9iJywg ZGF0YToge2FjdGlvbjogJ2NyZWF0ZSd9CisgICAgICAgIH0seworICAgICAg ICAgIG5hbWU6ICdjcmVhdGVfcGdhX2pvYicsIG5vZGU6ICdwZ2Ffam9iJywg bW9kdWxlOiB0aGlzLAorICAgICAgICAgIGFwcGxpZXM6IFsnb2JqZWN0Jywg J2NvbnRleHQnXSwgY2FsbGJhY2s6ICdzaG93X29ial9wcm9wZXJ0aWVzJywK KyAgICAgICAgICBjYXRlZ29yeTogJ2NyZWF0ZScsIHByaW9yaXR5OiA0LCBs YWJlbDogJ3t7IF8oJ3BnQWdlbnQgSm9iLi4uJykgfX0nLAorICAgICAgICAg IGljb246ICd3Y1RhYkljb24gaWNvbi1wZ2Ffam9iJywgZGF0YToge2FjdGlv bjogJ2NyZWF0ZSd9CisgICAgICAgIH1dKTsKKyAgICAgIH0sCisgICAgICBt b2RlbDogcGdCcm93c2VyLk5vZGUuTW9kZWwuZXh0ZW5kKHsKKyAgICAgICAg ZGVmYXVsdHM6IHsKKyAgICAgICAgICBqb2JuYW1lOiAnJywKKyAgICAgICAg ICBqb2JpZDogdW5kZWZpbmVkLAorICAgICAgICAgIGpvYmVuYWJsZWQ6IHRy dWUsCisgICAgICAgICAgam9iaG9zdGFnZW50OiAnJywKKyAgICAgICAgICBq b2JqY2xpZDogMSwKKyAgICAgICAgICBqb2JjcmVhdGVkOiB1bmRlZmluZWQs CisgICAgICAgICAgam9iY2hhbmdlZDogdW5kZWZpbmVkLAorICAgICAgICAg IGpvYm5leHRydW46IHVuZGVmaW5lZCwKKyAgICAgICAgICBqb2JsYXN0cnVu OiB1bmRlZmluZWQsCisgICAgICAgICAgamxnc3RhdHVzOiB1bmRlZmluZWQs CisgICAgICAgICAgam9icnVubmluZ2F0OiB1bmRlZmluZWQsCisgICAgICAg ICAgam9iZGVzYzogJycsCisgICAgICAgICAganN0ZXBzOiBbXSwKKyAgICAg ICAgICBqc2NoZWR1bGVzOiBbXQorICAgICAgICB9LAorICAgICAgICBpZEF0 dHJpYnV0ZTogJ2pvYmlkJywKKyAgICAgICAgcGFyc2U6IGZ1bmN0aW9uKCkg eworICAgICAgICAgIHZhciBkID0gcGdCcm93c2VyLk5vZGUuTW9kZWwucHJv dG90eXBlLnBhcnNlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CisKKyAgICAg ICAgICBpZiAoZCkgeworICAgICAgICAgICAgZC5qb2JydW5uaW5nYXQgPSBk LmphZ2hvc3RhZ2VudCB8fCAie3sgXygnTm90IHJ1bm5pbmcgY3VycmVudGx5 LicpIH19IjsKKyAgICAgICAgICAgIGQuamxnc3RhdHVzID0gZC5qbGdzdGF0 dXMgfHwgInt7IF8oJ1Vua25vd24nKSB9fSI7CisgICAgICAgICAgfQorICAg ICAgICAgIHJldHVybiBkOworICAgICAgICB9LAorICAgICAgICBzY2hlbWE6 IFt7CisgICAgICAgICAgaWQ6ICdqb2JuYW1lJywgbGFiZWw6ICd7eyBfKCdO YW1lJykgfX0nLCB0eXBlOiAndGV4dCcsCisgICAgICAgICAgY2VsbEhlYWRl ckNsYXNzZXM6ICd3aWR0aF9wZXJjZW50XzMwJworICAgICAgICB9LHsKKyAg ICAgICAgICBpZDogJ2pvYmlkJywgbGFiZWw6J3t7IF8oJ0lEJykgfX0nLCBt b2RlOiBbJ3Byb3BlcnRpZXMnXSwKKyAgICAgICAgICB0eXBlOiAnaW50Jwor ICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2pvYmVuYWJsZWQnLCBsYWJl bDone3sgXygnRW5hYmxlZCcpIH19JywgdHlwZTogJ3N3aXRjaCcsCisgICAg ICAgICAgY2VsbEhlYWRlckNsYXNzZXM6ICd3aWR0aF9wZXJjZW50XzUnCisg ICAgICAgIH0seworICAgICAgICAgIGlkOiAnam9iY2xhc3MnLCBsYWJlbDog J3t7IF8oJ0pvYiBDbGFzcycpIH19JywgdHlwZTogJ3RleHQnLAorICAgICAg ICAgIG1vZGU6IFsncHJvcGVydGllcyddCisgICAgICAgIH0seworICAgICAg ICAgIGlkOiAnam9iamNsaWQnLCBsYWJlbDogJ3t7IF8oJ0pvYiBDbGFzcycp IH19JywgdHlwZTogJ2ludGVnZXInLAorICAgICAgICAgIGNvbnRyb2w6ICdu b2RlLWFqYXgtb3B0aW9ucycsIHVybDogJ2NsYXNzZXMnLCB1cmxfd2l0aF9p ZDogZmFsc2UsCisgICAgICAgICAgY2FjaGVfbm9kZTogJ3NlcnZlcicsIG1v ZGU6IFsnY3JlYXRlJywgJ2VkaXQnXSwKKyAgICAgICAgICBzZWxlY3QyOiB7 YWxsb3dDbGVhcjogZmFsc2V9LAorICAgICAgICAgIGhlbHBNZXNzYWdlOiAn e3sgXygnUGxlYXNlIHNlbGVjdCBvbmUgb2YgdGhlIGNhdGVnb3J5LiBUaGlz IHdpbGwgZGVmaW5lIHRoZSB0eXBlIG9mIHRoZSBqb2IuJykgfX0nCisgICAg ICAgIH0seworICAgICAgICAgIGlkOiAnam9iaG9zdGFnZW50JywgbGFiZWw6 ICd7eyBfKCdIb3N0IEFnZW50JykgfX0nLCB0eXBlOiAndGV4dCcsCisgICAg ICAgICAgbW9kZTogWydlZGl0JywgJ2NyZWF0ZSddLAorICAgICAgICAgIGhl bHBNZXNzYWdlOiAne3sgXygnUGxlYXNlIHNwZWNpZnkgdGhlIGhvc3RuYW1l IG9mIHRoZSBtYWNoaW5lIG9uIHdoaWNoIHBnQWdlbnQgaXMgcnVubmluZy4g VGhpcyB3aWxsIGFsbG93IHRvIHJ1biB0aGlzIGpvYiBvbiBhIHBhcnRpY3Vs YXIgYWdlbnQgb25seS4nKSB9fScKKyAgICAgICAgfSx7CisgICAgICAgICAg aWQ6ICdqb2Job3N0YWdlbnQnLCBsYWJlbDogJ3t7IF8oJ0hvc3QgQWdlbnQn KSB9fScsIHR5cGU6ICd0ZXh0JywKKyAgICAgICAgICBtb2RlOiBbJ3Byb3Bl cnRpZXMnXQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2pvYmNyZWF0 ZWQnLCB0eXBlOiAndGV4dCcsIG1vZGU6IFsncHJvcGVydGllcyddLAorICAg ICAgICAgIGxhYmVsOiAne3sgXygnQ3JlYXRlZCcpIH19JworICAgICAgICB9 LHsKKyAgICAgICAgICBpZDogJ2pvYmNoYW5nZWQnLCB0eXBlOiAndGV4dCcs IG1vZGU6IFsncHJvcGVydGllcyddLAorICAgICAgICAgIGxhYmVsOiAne3sg XygnQ2hhbmdlZCcpIH19JworICAgICAgICB9LHsKKyAgICAgICAgICBpZDog J2pvYm5leHRydW4nLCB0eXBlOiAndGV4dCcsIG1vZGU6IFsncHJvcGVydGll cyddLAorICAgICAgICAgIGxhYmVsOiAne3sgXygnTmV4dCBydW4nKSB9fScs IGNlbGxIZWFkZXJDbGFzc2VzOiAnd2lkdGhfcGVyY2VudF8yMCcKKyAgICAg ICAgfSx7CisgICAgICAgICAgaWQ6ICdqb2JsYXN0cnVuJywgdHlwZTogJ3Rl eHQnLCBtb2RlOiBbJ3Byb3BlcnRpZXMnXSwKKyAgICAgICAgICBsYWJlbDog J3t7IF8oJ0xhc3QgcnVuJykgfX0nLCBjZWxsSGVhZGVyQ2xhc3NlczogJ3dp ZHRoX3BlcmNlbnRfMjAnCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAn amxnc3RhdHVzJywgdHlwZTogJ3RleHQnLCBsYWJlbDogJ3t7IF8oJ0xhc3Qg cmVzdWx0JykgfX0nLAorICAgICAgICAgIGNlbGxIZWFkZXJDbGFzc2VzOiAn d2lkdGhfcGVyY2VudF81JywgbW9kZTogWydwcm9wZXJ0aWVzJ10KKyAgICAg ICAgfSx7CisgICAgICAgICAgaWQ6ICdqb2JydW5uaW5nYXQnLCB0eXBlOiAn dGV4dCcsIG1vZGU6IFsncHJvcGVydGllcyddLAorICAgICAgICAgIGxhYmVs OiAne3sgXygnUnVubmluZyBhdCcpIH19JworICAgICAgICB9LHsKKyAgICAg ICAgICBpZDogJ2pvYmRlc2MnLCBsYWJlbDone3sgXygnQ29tbWVudCcpIH19 JywgdHlwZTogJ211bHRpbGluZScsCisgICAgICAgICAgY2VsbEhlYWRlckNs YXNzZXM6ICd3aWR0aF9wZXJjZW50XzE1JworICAgICAgICB9LHsKKyAgICAg ICAgICBpZDogJ2pzdGVwcycsIGxhYmVsOiAnJywgZ3JvdXA6ICd7eyBfKCJT dGVwcyIpIH19JywKKyAgICAgICAgICB0eXBlOiAnY29sbGVjdGlvbicsIG1v ZGU6IFsnZWRpdCcsICdjcmVhdGUnXSwKKyAgICAgICAgICBtb2RlbDogcGdC cm93c2VyLk5vZGVzWydwZ2Ffam9ic3RlcCddLm1vZGVsLCBjYW5FZGl0OiB0 cnVlLAorICAgICAgICAgIGNvbnRyb2w6ICdzdWItbm9kZS1jb2xsZWN0aW9u JywgY2FuQWRkOiB0cnVlLCBjYW5EZWxldGU6IHRydWUsCisgICAgICAgICAg Y29sdW1uczogWworICAgICAgICAgICAgJ2pzdG5hbWUnLCAnanN0ZW5hYmxl ZCcsICdqc3RraW5kJywgJ2pzdGNvbm50eXBlJywgJ2pzdG9uZXJyb3InCisg ICAgICAgICAgXQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2pzY2hl ZHVsZXMnLCBsYWJlbDogJycsIGdyb3VwOiAne3sgXygiU2NoZWR1bGVzIikg fX0nLAorICAgICAgICAgIHR5cGU6ICdjb2xsZWN0aW9uJywgbW9kZTogWydl ZGl0JywgJ2NyZWF0ZSddLAorICAgICAgICAgIGNvbnRyb2w6ICdzdWItbm9k ZS1jb2xsZWN0aW9uJywgY2FuQWRkOiB0cnVlLCBjYW5EZWxldGU6IHRydWUs CisgICAgICAgICAgY2FuRWRpdDogdHJ1ZSwgbW9kZWw6IHBnQnJvd3Nlci5O b2Rlc1sncGdhX3NjaGVkdWxlJ10ubW9kZWwsCisgICAgICAgICAgY29sdW1u czogWydqc2NuYW1lJywgJ2pzY2VuYWJsZWQnLCAnanNjc3RhcnQnLCAnanNj ZW5kJ10KKyAgICAgICAgfV0sCisgICAgICAgIHZhbGlkYXRlOiBmdW5jdGlv bihrZXlzKSB7CisgICAgICAgICAgdmFyIG5hbWUgPSB0aGlzLmdldCgnam9i bmFtZScpOworICAgICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKG5hbWUpIHx8 IF8uaXNOdWxsKG5hbWUpIHx8CisgICAgICAgICAgICBTdHJpbmcobmFtZSku cmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJykgeworICAgICAgICAg ICAgdmFyIG1zZyA9ICd7eyBfKCdOYW1lIGNhbm5vdCBiZSBlbXB0eS4nKSB9 fSc7CisgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdqb2JuYW1l JywgbXNnKTsKKyAgICAgICAgICAgIHJldHVybiBtc2c7CisgICAgICAgICAg fSBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC51bnNldCgn am9ibmFtZScpOworICAgICAgICAgIH0KKyAgICAgICAgICByZXR1cm4gbnVs bDsKKyAgICAgICAgfQorICAgICAgfSkKKyAgICB9KTsKKyAgfQorCisgIHJl dHVybiBwZ0Jyb3dzZXIuTm9kZXNbJ3BnYV9qb2InXTsKK30pOwpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvcGdBZ2VudC90ZW1wbGF0ZXMvcGdhX2pvYi9zcWwvcHJlMy40L2NyZWF0 ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9wZ0FnZW50L3RlbXBsYXRlcy9wZ2Ffam9iL3NxbC9wcmUzLjQvY3Jl YXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42 ZWRjZjZmCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC90ZW1wbGF0ZXMvcGdh X2pvYi9zcWwvcHJlMy40L2NyZWF0ZS5zcWwKQEAgLTAsMCArMSwzMSBAQAor eyUgaW1wb3J0ICdtYWNyb3MvcGdhX2pvYnN0ZXAubWFjcm9zJyBhcyBTVEVQ ICV9Cit7JSBpbXBvcnQgJ21hY3Jvcy9wZ2Ffc2NoZWR1bGUubWFjcm9zJyBh cyBTQ0hFRFVMRSAlfQorRE8gJCQKK0RFQ0xBUkUKKyAgICBqaWQgaW50ZWdl cjt7JSBpZiAnanNjaGVkdWxlcycgaW4gZGF0YSBhbmQgZGF0YS5qc2NoZWR1 bGVzfGxlbmd0aCA+IDAgJX0KKworICAgIHNjaWQgaW50ZWdlcjt7JSBlbmRp ZiAlfQorCitCRUdJTgorLS0gQ3JlYXRpbmcgYSBuZXcgam9iCitJTlNFUlQg SU5UTyBwZ2FnZW50LnBnYV9qb2IoCisgICAgam9iamNsaWQsIGpvYm5hbWUs IGpvYmRlc2MsIGpvYmhvc3RhZ2VudCwgam9iZW5hYmxlZAorKSBWQUxVRVMg KAorICAgIHt7IGRhdGEuam9iamNsaWR8cXRMaXRlcmFsIH19OjppbnRlZ2Vy LCB7eyBkYXRhLmpvYm5hbWV8cXRMaXRlcmFsIH19Ojp0ZXh0LCB7eyBkYXRh LmpvYmRlc2N8cXRMaXRlcmFsIH19Ojp0ZXh0LCB7eyBkYXRhLmpvYmhvc3Rh Z2VudHxxdExpdGVyYWwgfX06OnRleHQsIHslIGlmIGRhdGEuam9iZW5hYmxl ZCAlfXRydWV7JSBlbHNlICV9ZmFsc2V7JSBlbmRpZiAlfQorCispIFJFVFVS TklORyBqb2JpZCBJTlRPIGppZDt7JSBpZiAnanN0ZXBzJyBpbiBkYXRhIGFu ZCBkYXRhLmpzdGVwc3xsZW5ndGggPiAwICV9CisKKworLS0gU3RlcHMKK3sl IGZvciBzdGVwIGluIGRhdGEuanN0ZXBzICV9e3sgU1RFUC5JTlNFUlQoaGFz X2Nvbm5zdHIsIE5vbmUsIHN0ZXApIH19eyUgZW5kZm9yICV9Cit7JSBlbmRp ZiAlfXslIGlmICdqc2NoZWR1bGVzJyBpbiBkYXRhIGFuZCBkYXRhLmpzY2hl ZHVsZXN8bGVuZ3RoID4gMCAlfQorCisKKy0tIFNjaGVkdWxlcworeyUgZm9y IHNjaGVkdWxlIGluIGRhdGEuanNjaGVkdWxlcyAlfXt7IFNDSEVEVUxFLklO U0VSVChOb25lLCBzY2hlZHVsZSkgfX17JSBlbmRmb3IgJX0KK3slIGVuZGlm ICV9CisKK0VORAorJCQ7eyUgaWYgZmV0Y2hfaWQgJX0KKworU0VMRUNUIGpv YmlkIEZST00gcGdhZ2VudC5wZ2Ffam9iIFdIRVJFIHhtaW46OnRleHQgPSAo dHhpZF9jdXJyZW50KCkgJSAoMl4zMik6OmJpZ2ludCk6OnRleHQ7eyUgZW5k aWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL3BnYV9qb2Ivc3Fs L3ByZTMuNC9kZWxldGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC90ZW1wbGF0ZXMvcGdhX2pvYi9z cWwvcHJlMy40L2RlbGV0ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uM2UzY2Q4NgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQv dGVtcGxhdGVzL3BnYV9qb2Ivc3FsL3ByZTMuNC9kZWxldGUuc3FsCkBAIC0w LDAgKzEgQEAKK0RFTEVURSBGUk9NIHBnYWdlbnQucGdhX2pvYiBXSEVSRSBq b2JpZCA9IHt7IGppZHxxdExpdGVyYWwgfX06OmludGVnZXI7CmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9wZ0FnZW50L3RlbXBsYXRlcy9wZ2Ffam9iL3NxbC9wcmUzLjQvam9iX2Ns YXNzZXMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvcGdBZ2VudC90ZW1wbGF0ZXMvcGdhX2pvYi9zcWwvcHJlMy40 L2pvYl9jbGFzc2VzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi5mNTMxOTFhCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC90ZW1w bGF0ZXMvcGdhX2pvYi9zcWwvcHJlMy40L2pvYl9jbGFzc2VzLnNxbApAQCAt MCwwICsxIEBACitTRUxFQ1QgamNsaWQgQVMgdmFsdWUsIGpjbG5hbWUgQVMg bGFiZWwgRlJPTSBwZ2FnZW50LnBnYV9qb2JjbGFzcwpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdB Z2VudC90ZW1wbGF0ZXMvcGdhX2pvYi9zcWwvcHJlMy40L25vZGVzLnNxbCBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3Bn QWdlbnQvdGVtcGxhdGVzL3BnYV9qb2Ivc3FsL3ByZTMuNC9ub2Rlcy5zcWwK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmE5NmVhZgot LS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL3BnYV9qb2Ivc3Fs L3ByZTMuNC9ub2Rlcy5zcWwKQEAgLTAsMCArMSw4IEBACitTRUxFQ1QKKyAg ICBqb2JpZCwgam9ibmFtZSwgam9iZW5hYmxlZAorRlJPTQorICAgIHBnYWdl bnQucGdhX2pvYgoreyUgaWYgamlkICV9CitXSEVSRSBqb2JpZCA9IHt7IGpp ZHxxdExpdGVyYWwgfX06OmludGVnZXIKK3slIGVuZGlmICV9CitPUkRFUiBC WSBqb2JuYW1lOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC90ZW1wbGF0ZXMvcGdhX2pv Yi9zcWwvcHJlMy40L3Byb3BlcnRpZXMuc3FsIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC90ZW1wbGF0ZXMv cGdhX2pvYi9zcWwvcHJlMy40L3Byb3BlcnRpZXMuc3FsCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1NmQ4MjAKLS0tIC9kZXYvbnVs bAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9wZ0FnZW50L3RlbXBsYXRlcy9wZ2Ffam9iL3NxbC9wcmUzLjQvcHJv cGVydGllcy5zcWwKQEAgLTAsMCArMSwyMSBAQAorU0VMRUNUCisgICAgai5q b2JpZCBBUyBqb2JpZCwgai5qb2JuYW1lIGFzIGpvYm5hbWUsIGouam9iZW5h YmxlZCBhcyBqb2JlbmFibGVkLAorICAgIGouam9iZGVzYyBBUyBqb2JkZXNj LCBqLmpvYmhvc3RhZ2VudCBBUyBqb2Job3N0YWdlbnQsCisgICAgai5qb2Jj cmVhdGVkIEFTIGpvYmNyZWF0ZWQsIGouam9iY2hhbmdlZCBBUyBqb2JjaGFu Z2VkLAorICAgIGFnLmphZ3N0YXRpb24gQVMgamFnYWdlbnQsIHN1Yi5qbGdz dGF0dXMgQVMgamxnc3RhdHVzLAorICAgIGouam9iYWdlbnRpZCBBUyBqb2Jh Z2VudGlkLCBqLmpvYm5leHRydW4gQVMgam9ibmV4dHJ1biwKKyAgICBqLmpv Ymxhc3RydW4gQVMgam9ibGFzdHJ1biwgai5qb2JqY2xpZCBBUyBqb2JqY2xp ZCwKKyAgICBqYy5qY2xuYW1lIEFTIGpvYmNsYXNzCitGUk9NCisgICAgcGdh Z2VudC5wZ2Ffam9iIGoKKyAgICBMRUZUIE9VVEVSIEpPSU4gcGdhZ2VudC5w Z2Ffam9iYWdlbnQgYWcgT04gYWcuamFncGlkPWpvYmFnZW50aWQKKyAgICBM RUZUIE9VVEVSIEpPSU4gKAorICAgICAgICBTRUxFQ1QgRElTVElOQ1QgT04g KGpsZ2pvYmlkKSBqbGdzdGF0dXMsIGpsZ2pvYmlkCisgICAgICAgIEZST00g cGdhZ2VudC5wZ2Ffam9ibG9nCisgICAgICAgIE9SREVSIEJZIGpsZ2pvYmlk LCBqbGdpZCBERVNDCisgICAgKSBzdWIgT04gc3ViLmpsZ2pvYmlkID0gai5q b2JpZAorICAgIExFRlQgSk9JTiBwZ2FnZW50LnBnYV9qb2JjbGFzcyBqYyBP TiAoai5qb2JqY2xpZCA9IGpjLmpjbGlkKQoreyUgaWYgamlkICV9CitXSEVS RSBqLmpvYmlkID0ge3sgamlkfHF0TGl0ZXJhbCB9fTo6aW50ZWdlcgoreyUg ZW5kaWYgJX0KK09SREVSIEJZIGouam9ibmFtZTsKZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdl bnQvdGVtcGxhdGVzL3BnYV9qb2Ivc3FsL3ByZTMuNC9ydW5fbm93LnNxbCBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3Bn QWdlbnQvdGVtcGxhdGVzL3BnYV9qb2Ivc3FsL3ByZTMuNC9ydW5fbm93LnNx bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NzYyY2Mx Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC90ZW1wbGF0ZXMvcGdhX2pvYi9z cWwvcHJlMy40L3J1bl9ub3cuc3FsCkBAIC0wLDAgKzEsMyBAQAorVVBEQVRF IHBnYWdlbnQucGdhX2pvYgorU0VUIGpvYm5leHRydW49bm93KCk6OnRpbWVz dGFtcHR6CitXSEVSRSBqb2JpZD17eyBqaWR8cXRMaXRlcmFsIH19OjppbnRl Z2VyCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9wZ0FnZW50L3RlbXBsYXRlcy9wZ2Ffam9iL3NxbC9w cmUzLjQvc2NoZWR1bGVzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL3BnYV9qb2Iv c3FsL3ByZTMuNC9zY2hlZHVsZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLjM3MDBkY2QKLS0tIC9kZXYvbnVsbAorKysgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0Fn ZW50L3RlbXBsYXRlcy9wZ2Ffam9iL3NxbC9wcmUzLjQvc2NoZWR1bGVzLnNx bApAQCAtMCwwICsxLDIgQEAKK3slIGltcG9ydCAnbWFjcm9zL3BnYV9zY2hl ZHVsZS5tYWNyb3MnIGFzIFNDSEVEVUxFICV9Cit7eyBTQ0hFRFVMRS5QUk9Q RVJUSUVTKGppZCwganNjaWQpIH19CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3RlbXBs YXRlcy9wZ2Ffam9iL3NxbC9wcmUzLjQvc3RhdHMuc3FsIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC90ZW1w bGF0ZXMvcGdhX2pvYi9zcWwvcHJlMy40L3N0YXRzLnNxbApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZTlmNjFjCi0tLSAvZGV2L251 bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvcGdBZ2VudC90ZW1wbGF0ZXMvcGdhX2pvYi9zcWwvcHJlMy40L3N0 YXRzLnNxbApAQCAtMCwwICsxLDExIEBACitTRUxFQ1QKKyAgICBqbGdpZCBB UyB7eyBjb25ufHF0SWRlbnQoXygnUnVuJykpIH19LAorICAgIGpsZ3N0YXR1 cyBBUyB7eyBjb25ufHF0SWRlbnQoXygnU3RhdHVzJykpIH19LAorICAgIGps Z3N0YXJ0IEFTIHt7IGNvbm58cXRJZGVudChfKCdTdGFydCB0aW1lJykpIH19 LAorICAgIGpsZ2R1cmF0aW9uIEFTIHt7IGNvbm58cXRJZGVudChfKCdEdXJh dGlvbicpKSB9fSwKKyAgICAoamxnc3RhcnQgKyBqbGdkdXJhdGlvbikgQVMg e3sgY29ubnxxdElkZW50KF8oJ0VuZCB0aW1lJykpIH19CitGUk9NCisgICAg cGdhZ2VudC5wZ2Ffam9ibG9nCitXSEVSRQorICAgIGpsZ2pvYmlkID0ge3sg amlkfHF0TGl0ZXJhbCB9fTo6aW50ZWdlcgorT1JERVIgQlkgamxnaWQgREVT QzsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL3BnYV9qb2Ivc3FsL3By ZTMuNC9zdGVwcy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9wZ0FnZW50L3RlbXBsYXRlcy9wZ2Ffam9iL3NxbC9w cmUzLjQvc3RlcHMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLjYwYzNlY2UKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3RlbXBs YXRlcy9wZ2Ffam9iL3NxbC9wcmUzLjQvc3RlcHMuc3FsCkBAIC0wLDAgKzEs MiBAQAoreyUgaW1wb3J0ICdtYWNyb3MvcGdhX2pvYnN0ZXAubWFjcm9zJyBh cyBTVEVQICV9Cit7eyBTVEVQLlBST1BFUlRJRVMoaGFzX2Nvbm5zdHIsIGpp ZCwganN0aWQpIH19CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3RlbXBsYXRlcy9wZ2Ff am9iL3NxbC9wcmUzLjQvdXBkYXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL3Bn YV9qb2Ivc3FsL3ByZTMuNC91cGRhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLmQ4NTU4NDMKLS0tIC9kZXYvbnVsbAorKysg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9w Z0FnZW50L3RlbXBsYXRlcy9wZ2Ffam9iL3NxbC9wcmUzLjQvdXBkYXRlLnNx bApAQCAtMCwwICsxLDIwIEBACit7JSBpbXBvcnQgJ21hY3Jvcy9wZ2Ffam9i c3RlcC5tYWNyb3MnIGFzIFNURVAgJX0KK3slIGltcG9ydCAnbWFjcm9zL3Bn YV9zY2hlZHVsZS5tYWNyb3MnIGFzIFNDSEVEVUxFICV9Cit7JSBpZiAnam9i amNsaWQnIGluIGRhdGEgb3IgJ2pvYm5hbWUnIGluIGRhdGEgb3IgJ2pvYmRl c2MnIGluIGRhdGEgb3IgJ2pvYmhvc3RhZ2VudCcgaW4gZGF0YSBvciAnam9i ZW5hYmxlZCcgaW4gZGF0YSAlfQorVVBEQVRFIHBnYWdlbnQucGdhX2pvYgor U0VUIHslIGlmICdqb2JqY2xpZCcgaW4gZGF0YSAlfWpvYmpjbGlkPXt7IGRh dGEuam9iamNsaWR8cXRMaXRlcmFsIH19OjppbnRlZ2VyeyUgaWYgJ2pvYm5h bWUnIGluIGRhdGEgb3IgJ2pvYmRlc2MnIGluIGRhdGEgb3IgJ2pvYmhvc3Rh Z2VudCcgaW4gZGF0YSBvciAnam9iZW5hYmxlZCcgaW4gZGF0YSAlfSwgeyUg ZW5kaWYgJX17JSBlbmRpZiAlfQoreyUgaWYgJ2pvYm5hbWUnIGluIGRhdGEg JX1qb2JuYW1lPXt7IGRhdGEuam9ibmFtZXxxdExpdGVyYWwgfX06OnRleHR7 JWlmICdqb2JkZXNjJyBpbiBkYXRhIG9yICdqb2Job3N0YWdlbnQnIGluIGRh dGEgb3IgJ2pvYmVuYWJsZWQnIGluIGRhdGEgJX0sIHslIGVuZGlmICV9eyUg ZW5kaWYgJX0KK3slIGlmICdqb2JkZXNjJyBpbiBkYXRhICV9am9iZGVzYz17 eyBkYXRhLmpvYmRlc2N8cXRMaXRlcmFsIH19Ojp0ZXh0eyVpZiAnam9iaG9z dGFnZW50JyBpbiBkYXRhIG9yICdqb2JlbmFibGVkJyBpbiBkYXRhICV9LCB7 JSBlbmRpZiAlfXslIGVuZGlmICV9Cit7JWlmICdqb2Job3N0YWdlbnQnIGlu IGRhdGEgJX1qb2Job3N0YWdlbnQ9e3sgZGF0YS5qb2Job3N0YWdlbnR8cXRM aXRlcmFsIH19Ojp0ZXh0eyUgaWYgJ2pvYmVuYWJsZWQnIGluIGRhdGEgJX0s IHslIGVuZGlmICV9eyUgZW5kaWYgJX0KK3slIGlmICdqb2JlbmFibGVkJyBp biBkYXRhICV9am9iZW5hYmxlZD17JSBpZiBkYXRhLmpvYmVuYWJsZWQgJX10 cnVleyUgZWxzZSAlfWZhbHNleyUgZW5kaWYgJX17JSBlbmRpZiAlfQorCitX SEVSRSBqb2JpZCA9IHt7IGppZCB9fTsKK3slIGVuZGlmICV9eyUgaWYgJ2pz dGVwcycgaW4gZGF0YSAlfQorCit7JSBpZiAnZGVsZXRlZCcgaW4gZGF0YS5q c3RlcHMgJX17JSBmb3Igc3RlcCBpbiBkYXRhLmpzdGVwcy5kZWxldGVkICV9 e3sgU1RFUC5ERUxFVEUoamlkLCBzdGVwLmpzdGlkKSB9fXslIGVuZGZvciAl fXslIGVuZGlmICV9Cit7JSBpZiAnY2hhbmdlZCcgaW4gZGF0YS5qc3RlcHMg JX17JSBmb3Igc3RlcCBpbiBkYXRhLmpzdGVwcy5jaGFuZ2VkICV9e3sgU1RF UC5VUERBVEUoaGFzX2Nvbm5zdHIsIGppZCwgc3RlcC5qc3RpZCwgc3RlcCkg fX17JSBlbmRmb3IgJX17JSBlbmRpZiAlfQoreyUgaWYgJ2FkZGVkJyBpbiBk YXRhLmpzdGVwcyAlfXslIGZvciBzdGVwIGluIGRhdGEuanN0ZXBzLmFkZGVk ICV9e3sgU1RFUC5JTlNFUlQoaGFzX2Nvbm5zdHIsIGppZCwgc3RlcCkgfX17 JSBlbmRmb3IgJX17JSBlbmRpZiAlfXslIGVuZGlmICV9eyUgaWYgJ2pzY2hl ZHVsZXMnIGluIGRhdGEgJX0KKworeyUgaWYgJ2RlbGV0ZWQnIGluIGRhdGEu anNjaGVkdWxlcyAlfXslIGZvciBzY2hlZHVsZSBpbiBkYXRhLmpzY2hlZHVs ZXMuZGVsZXRlZCAlfXt7IFNDSEVEVUxFLkRFTEVURShqaWQsIHNjaGVkdWxl LmpzY2lkKSB9fXslIGVuZGZvciAlfXslIGVuZGlmICV9Cit7JSBpZiAnY2hh bmdlZCcgaW4gZGF0YS5qc2NoZWR1bGVzICV9eyUgZm9yIHNjaGVkdWxlIGlu IGRhdGEuanNjaGVkdWxlcy5jaGFuZ2VkICV9e3sgU0NIRURVTEUuVVBEQVRF KGhhc19jb25uc3RyLCBqaWQsIHNjaGVkdWxlLmpzY2lkLCBzY2hlZHVsZSkg fX17JSBlbmRmb3IgJX17JSBlbmRpZiAlfQoreyUgaWYgJ2FkZGVkJyBpbiBk YXRhLmpzY2hlZHVsZXMgJX17JSBmb3Igc2NoZWR1bGUgaW4gZGF0YS5qc2No ZWR1bGVzLmFkZGVkICV9e3sgU0NIRURVTEUuSU5TRVJUKGhhc19jb25uc3Ry LCBqaWQsIHNjaGVkdWxlKSB9fXslIGVuZGZvciAlfXslIGVuZGlmICV9eyUg ZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL3BnYV9qb2Jz dGVwL3NxbC9wcmUzLjQvY3JlYXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL3Bn YV9qb2JzdGVwL3NxbC9wcmUzLjQvY3JlYXRlLnNxbApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZGQyMTcyCi0tLSAvZGV2L251bGwK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvcGdBZ2VudC90ZW1wbGF0ZXMvcGdhX2pvYnN0ZXAvc3FsL3ByZTMuNC9j cmVhdGUuc3FsCkBAIC0wLDAgKzEsMiBAQAoreyUgaW1wb3J0ICdtYWNyb3Mv cGdhX2pvYnN0ZXAubWFjcm9zJyBhcyBTVEVQICV9Cit7eyBTVEVQLklOU0VS VChoYXNfY29ubnN0ciwgamlkLCBkYXRhKSB9fQpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2Vu dC90ZW1wbGF0ZXMvcGdhX2pvYnN0ZXAvc3FsL3ByZTMuNC9kZWxldGUuc3Fs IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv cGdBZ2VudC90ZW1wbGF0ZXMvcGdhX2pvYnN0ZXAvc3FsL3ByZTMuNC9kZWxl dGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5 ZGIxYWMKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3RlbXBsYXRlcy9wZ2Ff am9ic3RlcC9zcWwvcHJlMy40L2RlbGV0ZS5zcWwKQEAgLTAsMCArMSwyIEBA Cit7JSBpbXBvcnQgJ21hY3Jvcy9wZ2Ffam9ic3RlcC5tYWNyb3MnIGFzIFNU RVAgJX0KK3t7IFNURVAuREVMRVRFKGppZCwganN0aWQpIH19CmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9wZ0FnZW50L3RlbXBsYXRlcy9wZ2Ffam9ic3RlcC9zcWwvcHJlMy40L25v ZGVzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL3BnYV9qb2JzdGVwL3NxbC9wcmUz LjQvbm9kZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLmUzYjZmNGMKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3RlbXBsYXRl cy9wZ2Ffam9ic3RlcC9zcWwvcHJlMy40L25vZGVzLnNxbApAQCAtMCwwICsx LDEwIEBACitTRUxFQ1QKKyAgICBqc3RpZCwganN0am9iaWQsIGpzdG5hbWUs IGpzdGVuYWJsZWQsIGpzdGtpbmQgPSAncyc6OmJwY2hhciBBUyBqc3RraW5k CitGUk9NCisgICAgcGdhZ2VudC5wZ2Ffam9ic3RlcAorV0hFUkUKK3slIGlm IGpzdGlkICV9CisgICAganN0aWQgPSB7eyBqc3RpZHxxdExpdGVyYWwgfX06 OmludGVnZXIgQU5ECit7JSBlbmRpZiAlfQorICAgIGpzdGpvYmlkID0ge3sg amlkfHF0TGl0ZXJhbCB9fTo6aW50ZWdlcgorT1JERVIgQlkganN0bmFtZTsK ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL3BnYV9qb2JzdGVwL3NxbC9w cmUzLjQvcHJvcGVydGllcy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3RlbXBsYXRlcy9wZ2Ffam9i c3RlcC9zcWwvcHJlMy40L3Byb3BlcnRpZXMuc3FsCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwYzNlY2UKLS0tIC9kZXYvbnVsbAor KysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9wZ0FnZW50L3RlbXBsYXRlcy9wZ2Ffam9ic3RlcC9zcWwvcHJlMy40L3By b3BlcnRpZXMuc3FsCkBAIC0wLDAgKzEsMiBAQAoreyUgaW1wb3J0ICdtYWNy b3MvcGdhX2pvYnN0ZXAubWFjcm9zJyBhcyBTVEVQICV9Cit7eyBTVEVQLlBS T1BFUlRJRVMoaGFzX2Nvbm5zdHIsIGppZCwganN0aWQpIH19CmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9wZ0FnZW50L3RlbXBsYXRlcy9wZ2Ffam9ic3RlcC9zcWwvcHJlMy40L3N0 YXRzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL3BnYV9qb2JzdGVwL3NxbC9wcmUz LjQvc3RhdHMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLmIyZWU4NTQKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3RlbXBsYXRl cy9wZ2Ffam9ic3RlcC9zcWwvcHJlMy40L3N0YXRzLnNxbApAQCAtMCwwICsx LDEzIEBACitTRUxFQ1QKKyAgICBqc2xpZCBBUyB7eyBjb25ufHF0SWRlbnQo XygnUnVuJykpIH19LAorICAgIGpzbHN0YXR1cyBBUyB7eyBjb25ufHF0SWRl bnQoXygnU3RhdHVzJykpIH19LAorICAgIGpzbHJlc3VsdCBBUyB7eyBjb25u fHF0SWRlbnQoXygnUmVzdWx0JykpIH19LAorICAgIGpzbHN0YXJ0IEFTIHt7 IGNvbm58cXRJZGVudChfKCdTdGFydCB0aW1lJykpIH19LAorICAgIChqc2xz dGFydCArIGpzbGR1cmF0aW9uKSBBUyB7eyBjb25ufHF0SWRlbnQoXygnRW5k IHRpbWUnKSkgfX0sCisgICAganNsZHVyYXRpb24gQVMge3sgY29ubnxxdElk ZW50KF8oJ0R1cmF0aW9uJykpIH19LAorICAgIGpzbG91dHB1dCBBUyB7eyBj b25ufHF0SWRlbnQoXygnT3V0cHV0JykpIH19CitGUk9NCisgICAgcGdhZ2Vu dC5wZ2Ffam9ic3RlcGxvZworV0hFUkUKKyAgICBqc2xqc3RpZCA9IHt7IGpz dGlkfHF0TGl0ZXJhbCB9fTo6aW50ZWdlcgorT1JERVIgQlkganNsaWQgREVT QzsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL3BnYV9qb2JzdGVwL3Nx bC9wcmUzLjQvdXBkYXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL3BnYV9qb2Jz dGVwL3NxbC9wcmUzLjQvdXBkYXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi4zMTYzNTVlCi0tLSAvZGV2L251bGwKKysrIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdB Z2VudC90ZW1wbGF0ZXMvcGdhX2pvYnN0ZXAvc3FsL3ByZTMuNC91cGRhdGUu c3FsCkBAIC0wLDAgKzEsMiBAQAoreyUgaW1wb3J0ICdtYWNyb3MvcGdhX2pv YnN0ZXAubWFjcm9zJyBhcyBTVEVQICV9Cit7eyBTVEVQLlVQREFURShoYXNf Y29ubnN0ciwgamlkLCBqc3RpZCwgZGF0YSkgfX0KZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdl bnQvdGVtcGxhdGVzL3BnYV9zY2hlZHVsZS9zcWwvcHJlMy40L2NyZWF0ZS5z cWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9wZ0FnZW50L3RlbXBsYXRlcy9wZ2Ffc2NoZWR1bGUvc3FsL3ByZTMuNC9j cmVhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LmU5ZjY1N2YKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3RlbXBsYXRlcy9w Z2Ffc2NoZWR1bGUvc3FsL3ByZTMuNC9jcmVhdGUuc3FsCkBAIC0wLDAgKzEs MTAgQEAKK3slIGltcG9ydCAnbWFjcm9zL3BnYV9zY2hlZHVsZS5tYWNyb3Mn IGFzIFNDSEVEVUxFICV9CitETyAkJAorREVDTEFSRQorICBqc2NpZCBpbnRl Z2VyOworQkVHSU4KK3t7IFNDSEVEVUxFLklOU0VSVChqaWQsIGRhdGEpIH19 CitFTkQKKyQkIExBTkdVQUdFICdwbHBnc3FsJzt7JSBpZiBmZXRjaF9pZCAl fQorCit7eyBTQ0hFRFVMRS5GRVRDSF9DVVJSRU5UKCkgfX17JSBlbmRpZiAl fQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvcGdBZ2VudC90ZW1wbGF0ZXMvcGdhX3NjaGVkdWxlL3Nx bC9wcmUzLjQvZGVsZXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL3BnYV9zY2hl ZHVsZS9zcWwvcHJlMy40L2RlbGV0ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uY2Y0MzA3MQotLS0gL2Rldi9udWxsCisrKyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3Bn QWdlbnQvdGVtcGxhdGVzL3BnYV9zY2hlZHVsZS9zcWwvcHJlMy40L2RlbGV0 ZS5zcWwKQEAgLTAsMCArMSwyIEBACit7JSBpbXBvcnQgJ21hY3Jvcy9wZ2Ff c2NoZWR1bGUubWFjcm9zJyBhcyBTQ0hFRFVMRSAlfQore3sgU0NIRURVTEUu REVMRVRFKGppZCwganNjaWQpIH19CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3RlbXBs YXRlcy9wZ2Ffc2NoZWR1bGUvc3FsL3ByZTMuNC9ub2Rlcy5zcWwgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50 L3RlbXBsYXRlcy9wZ2Ffc2NoZWR1bGUvc3FsL3ByZTMuNC9ub2Rlcy5zcWwK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWQwZjA4Mwot LS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL3BnYV9zY2hlZHVs ZS9zcWwvcHJlMy40L25vZGVzLnNxbApAQCAtMCwwICsxLDExIEBACitTRUxF Q1QKKyAgICBqc2NpZCwganNjam9iaWQsIGpzY25hbWUsIGpzY2VuYWJsZWQK K0ZST00KKyAgICBwZ2FnZW50LnBnYV9zY2hlZHVsZQorV0hFUkUKK3slIGlm IGpzY2lkICV9CisgICAganNjaWQgPSB7eyBqc2NpZHxxdExpdGVyYWwgfX06 OmludGVnZXIKK3slIGVsc2UgJX0KKyAgICBqc2Nqb2JpZCA9IHt7IGppZHxx dExpdGVyYWwgfX06OmludGVnZXIKK3slIGVuZGlmICV9CitPUkRFUiBCWSBq c2NuYW1lOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC90ZW1wbGF0ZXMvcGdhX3NjaGVk dWxlL3NxbC9wcmUzLjQvcHJvcGVydGllcy5zcWwgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3RlbXBsYXRl cy9wZ2Ffc2NoZWR1bGUvc3FsL3ByZTMuNC9wcm9wZXJ0aWVzLnNxbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Y2JkOWU0Ci0tLSAv ZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvcGdBZ2VudC90ZW1wbGF0ZXMvcGdhX3NjaGVkdWxlL3Nx bC9wcmUzLjQvcHJvcGVydGllcy5zcWwKQEAgLTAsMCArMSwyIEBACit7JSBp bXBvcnQgJ21hY3Jvcy9wZ2Ffc2NoZWR1bGUubWFjcm9zJyBhcyBTQ0hFRFVM RSAlfQore3sgU0NIRURVTEUuUFJPUEVSVElFUyhqaWQsIGpzdGlkKSB9fQpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvcGdBZ2VudC90ZW1wbGF0ZXMvcGdhX3NjaGVkdWxlL3NxbC9w cmUzLjQvdXBkYXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL3BnYV9zY2hlZHVs ZS9zcWwvcHJlMy40L3VwZGF0ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uZThmYjdjYgotLS0gL2Rldi9udWxsCisrKyBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdl bnQvdGVtcGxhdGVzL3BnYV9zY2hlZHVsZS9zcWwvcHJlMy40L3VwZGF0ZS5z cWwKQEAgLTAsMCArMSwyIEBACit7JSBpbXBvcnQgJ21hY3Jvcy9wZ2Ffc2No ZWR1bGUubWFjcm9zJyBhcyBTQ0hFRFVMRSAlfQore3sgU0NIRURVTEUuVVBE QVRFKGppZCwganNjaWQsIGRhdGEpIH19Cg== --94eb2c05b602c2beec053d65c26e 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 --94eb2c05b602c2beec053d65c26e--