Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.92) (envelope-from ) id 1jGgDQ-0002oF-QH for pgadmin-hackers@arkaria.postgresql.org; Tue, 24 Mar 2020 09:51:21 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1jGgCR-0005uW-Ba for pgadmin-hackers@arkaria.postgresql.org; Tue, 24 Mar 2020 09:50:19 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1jGgCQ-0005uO-S7 for pgadmin-hackers@lists.postgresql.org; Tue, 24 Mar 2020 09:50:19 +0000 Received: from mail-lj1-x243.google.com ([2a00:1450:4864:20::243]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1jGgCM-0002Hp-Vj for pgadmin-hackers@postgresql.org; Tue, 24 Mar 2020 09:50:18 +0000 Received: by mail-lj1-x243.google.com with SMTP id i20so5784942ljn.6 for ; Tue, 24 Mar 2020 02:50:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=kfZPlBTWF9nM5WzVyuwPphjLwLjtJ+TqHcWShc2hFl8=; b=IiIE7bjD1VNVD5WmIN7/e3O9Sore35ziGK/jTWYVTpyr9suhe/xYZyT2QGNWBO/SuT iwBBjhu0InkePyEjUDiJogGyuEPrGyfzmhVTZUCj/kVukO0VZtnArv6LYLHoCYCU/FUX kjGsOvKJb7NCRCXOmYetP2NhBm6baXMCzlBUyB/utgqHsBdFnNKd5VKqZNAmBpbdWwfe ZVJfDoc02CkH6hoXvdPEho9LK3krBlpUc0O2b5kId7y2menziMi7X9Q+jZyVXiTUW2l1 t3+A4o5/oRZUtGo4vEL43ZP3s4cV7IOtNyRnh7qPnbppLgWmAIYgFxRFxk2IqFODarju CsbQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=kfZPlBTWF9nM5WzVyuwPphjLwLjtJ+TqHcWShc2hFl8=; b=NQwbLAaEGXLs5OCtKipcUg4Wn+maVh2BV81ecQu06WTTrHp4VoJdj4vxChsKcI3pPX VJ+BKHjNjBp93+0K1+hzRYgMmrEmHElX88H3jOFXSUSsI3T7VVj1jsL1pWhBB2b+39yf TubWt5XrjQEoV3fxWFV2HEO9bH2GDZimvy8jiMy4b/H3Xe+u13eT/wh86ydFF6a/v5nk Gc8jRIaOgEFfOKb93U5Vv7IRj21kGxQEFCtzHLBNQFXsMHEbc8eBeADWoqRAbhNN1dkg LjPlLsxuO+AAfcHnqnrJ4J2akAxt3MNAY8yTKLqMR3S1wVfFZmULpb0+Bi1LVnc2ofx4 ikrw== X-Gm-Message-State: ANhLgQ02sNciT08KJFoD4sLAkPSGSu8aa0/jydDhPtoxoi38VYH8qH9k Nr6u7WJXpXxjAY6SI6EFBt6WuAelUa10xW28E97ff1y2yRJhQqxSnSp6zGeYkG70Bs/v9BmmbiJ n9sEsaSxBjP3tS+UlXcmujyVig2WtNFwLqYcPI9GOILj87J+IVlnaGu5UFoy1cL0qv2Nz426eYQ I+E0O09nE/JHXASXqD1EMihPyTWkWtwf60P5J+bOmrTDFfNVOXqvU= X-Google-Smtp-Source: ADFU+vtl6yYc9AEjZ7osyN/Oggu0E4A5pqBqcKKrN3X0PdMz1eduZUcD9JHIpuhJZ8Rc/1Z+wUKw9iwGY7yCun3+2nM= X-Received: by 2002:a2e:9681:: with SMTP id q1mr17443377lji.179.1585043412408; Tue, 24 Mar 2020 02:50:12 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Khushboo Vashi Date: Tue, 24 Mar 2020 15:20:04 +0530 Message-ID: Subject: Re: [pgAdmin4][Patch] - RM 2186 - Support external authentication sources [LDAP] To: Dave Page Cc: pgadmin-hackers Content-Type: multipart/mixed; boundary="0000000000008d127105a196ad3c" X-CLOUD-SEC-AV-Info: edb,google_mail,monitor X-CLOUD-SEC-AV-Sent: true X-Gm-Spam: 0 X-Gm-Phishy: 0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --0000000000008d127105a196ad3c Content-Type: multipart/alternative; boundary="0000000000008d126f05a196ad3a" --0000000000008d126f05a196ad3a Content-Type: text/plain; charset="UTF-8" Please disregard my previous patch, attached the updated patch. :) On Tue, Mar 24, 2020 at 10:32 AM Khushboo Vashi < khushboo.vashi@enterprisedb.com> wrote: > Please disregard my previous patch, attached the updated patch. > > On Tue, Mar 24, 2020 at 10:29 AM Khushboo Vashi < > khushboo.vashi@enterprisedb.com> wrote: > >> Hi, >> >> Please find the attached updated patch. >> >> >> On Tue, Mar 17, 2020 at 4:11 PM Dave Page wrote: >> >>> Hi >>> >>> On Tue, Mar 17, 2020 at 10:24 AM Khushboo Vashi < >>> khushboo.vashi@enterprisedb.com> wrote: >>> >>>> Hi Dave, >>>> >>>> Thanks for the review. >>>> >>>> On Tue, Mar 17, 2020 at 3:42 PM Dave Page wrote: >>>> >>>>> Hi >>>>> >>>>> 30 second read of the first version of the patch... >>>>> >>>>> - Please move the configuration into config.py. Users should never >>>>> have to modify a distributed file (it messes up packaging). I don't see any >>>>> reason to use a different file just for auth config. >>>>> >>>>> There are many settings for the LDAP, and in the future we will add >>>> other external sources also, so I thought it would be better if we have >>>> different file for the authentication. >>>> >>> >>> Sure, but our config file is small compared to many. Splitting things >>> out is more confusing for users. If they want to do that themselves of >>> course, they can add a config_local.py file which includes other files as >>> needed. >>> >> Fixed. >> >>> >>> >>>> - I think all config options should be prefixed with LDAP_ as we may >>>>> have things like CERT_FILE for other purposes too. >>>>> >>>>> Sure. >>>> >>> Done. >> >>> - I don't see any test cases. >>>>> >>>>> I will think about this, as right now no idea how to write test cases >>>> for this. >>>> >>> >>> It should be fairly straightforward to write tests for some of the >>> functions in the auth classes. For testing the actual LDAP stuff, we >>> probably need to add LDAP config options to test_config.json, and only if >>> present, run the tests. That would probably need to support a list of LDAP >>> servers, so we can test with different configurations (LDAP, LDAPS, >>> LDAP_STARTTLS, AD etc). >>> >>> >> Done. >> >> Thanks, >> Khushboo >> >>> Thanks. >>>>> >>>>> Thanks, >>>> Khushboo >>>> >>>>> >>>>> On Tue, Mar 17, 2020 at 8:55 AM Khushboo Vashi < >>>>> khushboo.vashi@enterprisedb.com> wrote: >>>>> >>>>>> Hi, >>>>>> >>>>>> Please find the attached patch to support LDAP Authentication in >>>>>> Server mode. >>>>>> To test the patch, config_auth.py needs to be configured for LDAP >>>>>> configurations. The config settings are explained in this file in detail. >>>>>> After configuring the parameters, start the pgadmin server in Server mode >>>>>> and connect with LDAP server with the valid user via login page. >>>>>> >>>>>> I have tested this patch with ldap and ldap + ssl/tls. With the TLS, >>>>>> I have used the default config of ldap3 without certificates. >>>>>> >>>>>> @Dave, can you please review this patch, as you have a better >>>>>> understanding of LDAP and you can easily pointed out if I have missed >>>>>> anything. >>>>>> >>>>>> Note: For the document update I will create the task and assign to >>>>>> Nidhi for the same. >>>>>> >>>>>> Thanks, >>>>>> Khushboo >>>>>> >>>>> >>>>> >>>>> -- >>>>> Dave Page >>>>> Blog: http://pgsnake.blogspot.com >>>>> Twitter: @pgsnake >>>>> >>>>> EnterpriseDB UK: http://www.enterprisedb.com >>>>> The Enterprise PostgreSQL Company >>>>> >>>> >>> >>> -- >>> Dave Page >>> Blog: http://pgsnake.blogspot.com >>> Twitter: @pgsnake >>> >>> EnterpriseDB UK: http://www.enterprisedb.com >>> The Enterprise PostgreSQL Company >>> >> --0000000000008d126f05a196ad3a Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Please disregard my previous patch, attac= hed the updated patch. :)


On Tue, Mar 24, 2020 at 10:32 AM= Khushboo Vashi <khus= hboo.vashi@enterprisedb.com> wrote:
Please disregard my previous pa= tch, attached the updated patch.

On Tue, Mar 24, 2020 at 10:29 AM Khushboo V= ashi <khushboo.vashi@enterprisedb.com> wrote:
Hi,
Please find the attached updated patch.


On Tue, Mar 17, 2020 at 4:11 PM Dave Page <dpage@pgadmin.org> wrote:
Hi
<= br>
On Tue,= Mar 17, 2020 at 10:24 AM Khushboo Vashi <khushboo.vashi@enterprisedb.com&= gt; wrote:
Hi Dave,

Thanks for the review.
On= Tue, Mar 17, 2020 at 3:42 PM Dave Page <dpage@pgadmin.org> wrote:
Hi

=
30 second read of the first version of the patch...

- Please move the configuration into config.py. Users should never h= ave to modify a distributed file (it messes up packaging). I don't see = any reason to use a different file just for auth config.

There are many settings for the LDAP, and in the = future we will add other external sources also, so I thought it would be be= tter if we have different file for the authentication.

Sure, but our config file is small compared t= o many. Splitting things out is more confusing for users. If they want to d= o that themselves of course, they can add a config_local.py file which incl= udes other files as needed.
F= ixed.=C2=A0
=C2=A0
=
- I think all config options should be prefixed with LDAP_ as we may h= ave things like CERT_FILE for other purposes too.

Sure.=C2=A0
Done.=C2=A0
<= div>- I don't see any test cases.

I will think about this, as right now no idea how to write test case= s for this.=C2=A0

It shou= ld be fairly straightforward to write tests for some of the functions in th= e auth classes. For testing the actual LDAP stuff, we probably need to add = LDAP config options to test_config.json, and only if present, run the tests= . That would probably need to support a list of LDAP servers, so we can tes= t with different configurations (LDAP, LDAPS, LDAP_STARTTLS, AD etc).
=
=C2=A0
Done.

Thanks,
Khushboo
<= 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">
Thanks.

Thanks,
Khushboo=C2=A0

On Tue, Mar 17, 2020 at 8:55 AM Khushboo Vashi <= ;khush= boo.vashi@enterprisedb.com> wrote:
Hi,

Please fi= nd the attached patch to support LDAP Authentication in Server mode.
<= div>To test the patch, config_auth.py needs to be configured for LDAP confi= gurations. The config settings are explained in this file in detail. After = configuring the parameters, start the pgadmin server in Server mode and con= nect with LDAP server with the valid user via login page.

I have tested this patch with ldap and ldap=C2=A0+ ssl/tls. With th= e TLS, I have used the default config of ldap3 without certificates.
<= div>
@Dave, can you please review this patch, as you have a b= etter understanding of LDAP and you can easily pointed out if I have missed= anything.

Note: For the document update I will cr= eate the task and assign to Nidhi for the same.

Thanks,
Khushboo


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

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


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

EnterpriseDB= UK: http://www.e= nterprisedb.com
The Enterprise PostgreSQL Company
--0000000000008d126f05a196ad3a-- --0000000000008d127105a196ad3c Content-Type: application/octet-stream; name="RM_2186_v1.patch" Content-Disposition: attachment; filename="RM_2186_v1.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k85pwuih0 ZGlmZiAtLWdpdCBhL3dlYi9jb25maWcucHkgYi93ZWIvY29uZmlnLnB5CmluZGV4IGMyNjkwMzMx MC4uNTViZWQ1NTVmIDEwMDY0NAotLS0gYS93ZWIvY29uZmlnLnB5CisrKyBiL3dlYi9jb25maWcu cHkKQEAgLTQ4OCw2ICs0ODgsNjUgQEAgTUFTVEVSX1BBU1NXT1JEX1JFUVVJUkVEID0gVHJ1ZQog IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMKIEVOSEFOQ0VEX0NPT0tJRV9QUk9URUNUSU9OID0gVHJ1ZQogCisj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworIyBFeHRlcm5hbCBBdXRoZW50aWNhdGlvbiBTb3VyY2VzCisjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworCisjIERlZmF1bHQgc2V0dGluZyBpcyBpbnRlcm5hbAorIyBFeHRlcm5h bCBTdXBwb3J0ZWQgU291cmNlczogbGRhcAorIyBNdWx0aXBsZSBhdXRoZW50aWNhdGlvbiBjYW4g YmUgYWNoaWV2ZWQgYnkgc2V0dGluZyB0aGlzIHBhcmFtZXRlciB0bworIyBbJ2xkYXAnLCAnaW50 ZXJuYWwnXS4gcGdBZG1pbiB3aWxsIGF1dGhlbnRpY2F0ZSB0aGUgdXNlciB3aXRoIGxkYXAgZmly c3QsCisjIGluIGNhc2Ugb2YgZmFpbHVyZSBpbnRlcm5hbCBhdXRoZW50aWNhdGlvbiB3aWxsIGJl IGRvbmUuCisKK0FVVEhFTlRJQ0FUSU9OX1NPVVJDRVMgPSBbJ2ludGVybmFsJ10KKworIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKKyMgTERBUCBDb25maWd1cmF0aW9uCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisj IEFmdGVyIGxkYXAgYXV0aGVudGljYXRpb24sIHVzZXIgd2lsbCBiZSBhZGRlZCBpbnRvIHRoZSBT UUxpdGUgZGF0YWJhc2UKKyMgYXV0b21hdGljYWxseSwgaWYgc2V0IHRvIFRydWUuCisjIFNldCBp dCB0byBGYWxzZSwgaWYgdXNlciBzaG91bGQgbm90IGJlIGFkZGVkIGF1dG9tYXRpY2FsbHksCisj IGluIHRoaXMgY2FzZSBBZG1pbiBoYXMgdG8gYWRkIHRoZSB1c2VyIG1hbnVhbGx5IGluIHRoZSBT UUxpdGUgZGF0YWJhc2UuCisKK0xEQVBfQVVUT19DUkVBVEVfVVNFUiA9IFRydWUKKworIyBDb25u ZWN0aW9uIHRpbWVvdXQKK0xEQVBfQ09OTkVDVElPTl9USU1FT1VUID0gMTAKKworIyBTZXJ2ZXIg Y29ubmVjdGlvbiBkZXRhaWxzIChSRVFVSVJFRCkKKyMgZXhhbXBsZTogbGRhcDovLzxpcC1hZGRy ZXNzPjo8cG9ydD4gb3IgbGRhcDovLzxob3N0bmFtZT46PHBvcnQ+CitMREFQX1NFUlZFUl9VUkkg PSAnbGRhcDovLzxpcC1hZGRyZXNzPjo8cG9ydD4nCisKKyMgQmFzZUROIChSRVFVSVJFRCkKKyMg QUQgZXhhbXBsZToKKyMgKCYob2JqZWN0Q2xhc3M9dXNlcikobWVtYmVyb2Y9Q049TVlHUk9VUCxD Tj1Vc2VycyxkYz1leGFtcGxlLGRjPWNvbSkpCisjIE9wZW5MREFQIGV4YW1wbGU6IENOPVVzZXJz LGRjPWV4YW1wbGUsZGM9Y29tCitMREFQX0JBU0VfRE4gPSAnPEJhc2UtRE4+JworCisjIFRoZSBM REFQIGF0dHJpYnV0ZSBjb250YWluaW5nIHVzZXIgbmFtZXMuIEluIE9wZW5MREFQLCB0aGlzIG1h eSBiZSAndWlkJworIyB3aGlsc3QgaW4gQUQsICdzQU1BY2NvdW50TmFtZScgbWlnaHQgYmUgYXBw cm9wcmlhdGUuIChSRVFVSVJFRCkKK0xEQVBfVVNFUk5BTUVfQVRUUklCVVRFID0gJzxVc2VyLWlk PicKKworIyBTZWFyY2ggbGRhcCBmb3IgZnVydGhlciBhdXRoZW50aWNhdGlvbgorTERBUF9TRUFS Q0hfQkFTRV9ETiA9ICc8U2VhcmNoLUJhc2UtRE4+JworCisjIEZpbHRlciBzdHJpbmcgZm9yIHRo ZSB1c2VyIHNlYXJjaC4KKyMgRm9yIE9wZW5MREFQLCAnKGNuPSopJyBtYXkgd2VsbCBiZSBlbm91 Z2guCisjIEZvciBBRCwgeW91IG1pZ2h0IHVzZSAnKG9iamVjdENsYXNzPXVzZXIpJyAoUkVRVUlS RUQpCitMREFQX1NFQVJDSF9GSUxURVIgPSAnKG9iamVjdGNsYXNzPSopJworCisjIFNlYXJjaCBz Y29wZSBmb3IgdXNlcnMgKG9uZSBvZiBCQVNFLCBMRVZFTCBvciBTVUJUUkVFKQorTERBUF9TRUFS Q0hfU0NPUEUgPSAnU1VCVFJFRScKKworIyBVc2UgVExTPyBJZiB0aGUgVVJJIHNjaGVtZSBpcyBs ZGFwczovLywgdGhpcyBpcyBpZ25vcmVkLgorTERBUF9VU0VfU1RBUlRUTFMgPSBGYWxzZQorCisj IFRMUy9TU0wgY2VydGlmaWNhdGVzLiBTcGVjaWZ5IGlmIHJlcXVpcmVkLCBvdGhlcndpc2UgbGVh dmUgZW1wdHkKK0xEQVBfQ0FfQ0VSVF9GSUxFID0gJycKK0xEQVBfQ0VSVF9GSUxFID0gJycKK0xE QVBfS0VZX0ZJTEUgPSAnJworCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBMb2NhbCBjb25maWcgc2V0 dGluZ3MKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmRpZmYgLS1naXQgYS93ZWIvbWlncmF0aW9ucy92ZXJz aW9ucy83ZmVkZjg1MzE4MDJfLnB5IGIvd2ViL21pZ3JhdGlvbnMvdmVyc2lvbnMvN2ZlZGY4NTMx ODAyXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjJiNDZhNDllNgot LS0gL2Rldi9udWxsCisrKyBiL3dlYi9taWdyYXRpb25zL3ZlcnNpb25zLzdmZWRmODUzMTgwMl8u cHkKQEAgLTAsMCArMSw1MSBAQAorCisiIiJlbXB0eSBtZXNzYWdlCisKK1JldmlzaW9uIElEOiA3 ZmVkZjg1MzE4MDIKK1JldmlzZXM6IGFmZjE0MzZlM2M4YworQ3JlYXRlIERhdGU6IDIwMjAtMDIt MjYgMTE6MjQ6NTQuMzUzMjg4CisKKyIiIgorZnJvbSBhbGVtYmljIGltcG9ydCBvcAoraW1wb3J0 IHNxbGFsY2hlbXkgYXMgc2EKK2Zyb20gcGdhZG1pbi5tb2RlbCBpbXBvcnQgZGIKKworIyByZXZp c2lvbiBpZGVudGlmaWVycywgdXNlZCBieSBBbGVtYmljLgorcmV2aXNpb24gPSAnN2ZlZGY4NTMx ODAyJworZG93bl9yZXZpc2lvbiA9ICdhZmYxNDM2ZTNjOGMnCiticmFuY2hfbGFiZWxzID0gTm9u ZQorZGVwZW5kc19vbiA9IE5vbmUKKworCitkZWYgdXBncmFkZSgpOgorCisgICAgZGIuZW5naW5l LmV4ZWN1dGUoIkFMVEVSIFRBQkxFIHVzZXIgUkVOQU1FIFRPIHVzZXJfb2xkIikKKworICAgIGRi LmVuZ2luZS5leGVjdXRlKCIiIgorICAgICAgICBDUkVBVEUgVEFCTEUgdXNlciAoCisgICAgICAg ICAgICBpZCBJTlRFR0VSIE5PVCBOVUxMLAorICAgICAgICAgICAgdXNlcm5hbWUgVkFSQ0hBUigy NTYpIE5PVCBOVUxMLAorICAgICAgICAgICAgZW1haWwgVkFSQ0hBUigyNTYpLAorICAgICAgICAg ICAgcGFzc3dvcmQgVkFSQ0hBUigyNTYpLAorICAgICAgICAgICAgYWN0aXZlIEJPT0xFQU4gTk9U IE5VTEwsCisgICAgICAgICAgICBjb25maXJtZWRfYXQgREFURVRJTUUsCisgICAgICAgICAgICBt YXN0ZXJwYXNzX2NoZWNrIFZBUkNIQVIoMjU2KSwKKyAgICAgICAgICAgIGF1dGhfc291cmNlIFZB UkNIQVIoMjU2KSBOT1QgTlVMTCBERUZBVUxUICdJTlRFUk5BTCcsCisgICAgICAgICAgICBQUklN QVJZIEtFWSAoaWQpLAorICAgICAgICAgICAgVU5JUVVFICh1c2VybmFtZSwgYXV0aF9zb3VyY2Up LAorICAgICAgICAgICAgQ0hFQ0sgKGFjdGl2ZSBJTiAoMCwgMSkpCisgICAgICAgICk7CisgICAg ICAgICIiIikKKworICAgIGRiLmVuZ2luZS5leGVjdXRlKCIiIgorICAgICAgICBJTlNFUlQgSU5U TyB1c2VyICgKKyAgICAgICAgICAgIGlkLCB1c2VybmFtZSwgZW1haWwsIHBhc3N3b3JkLCBhY3Rp dmUsIGNvbmZpcm1lZF9hdCwgbWFzdGVycGFzc19jaGVjaworICAgICAgICApIFNFTEVDVAorICAg ICAgICAgICAgaWQsIGVtYWlsLCBlbWFpbCwgcGFzc3dvcmQsIGFjdGl2ZSwgY29uZmlybWVkX2F0 LCBtYXN0ZXJwYXNzX2NoZWNrCisgICAgICAgIEZST00gdXNlcl9vbGQiIiIpCisKKyAgICBkYi5l bmdpbmUuZXhlY3V0ZSgiRFJPUCBUQUJMRSB1c2VyX29sZCIpCisKKworZGVmIGRvd25ncmFkZSgp OgorICAgIHBhc3MKZGlmZiAtLWdpdCBhL3dlYi9wZ0FkbWluNC5weSBiL3dlYi9wZ0FkbWluNC5w eQppbmRleCA4MWVmNmMzOTYuLmI5M2I3Y2ZkNCAxMDA2NDQKLS0tIGEvd2ViL3BnQWRtaW40LnB5 CisrKyBiL3dlYi9wZ0FkbWluNC5weQpAQCAtMTYwLDYgKzE2MCwxNiBAQCBpZiAnUEdBRE1JTl9J TlRfS0VZJyBpbiBnbG9iYWxzKCk6CiBlbHNlOgogICAgIGFwcC5QR0FETUlOX0lOVF9LRVkgPSAn JwogCisjIEF1dGhlbnRpY2F0aW9uIHNvdXJjZXMKK2FwcC5QR0FETUlOX0RFRkFVTFRfQVVUSF9T T1VSQ0UgPSAnaW50ZXJuYWwnCitpZiBsZW4oY29uZmlnLkFVVEhFTlRJQ0FUSU9OX1NPVVJDRVMp ID4gMDoKKyAgICBhcHAuUEdBRE1JTl9FWFRFUk5BTF9BVVRIX1NPVVJDRSA9IGNvbmZpZy5BVVRI RU5USUNBVElPTl9TT1VSQ0VTWzBdCitlbHNlOgorICAgIGFwcC5QR0FETUlOX0VYVEVSTkFMX0FV VEhfU09VUkNFID0gYXBwLlBHQURNSU5fREVGQVVMVF9BVVRIX1NPVVJDRQorCithcHAubG9nZ2Vy LmRlYnVnKAorICAgICJBdXRoZW50aWNhdGlvbiBTb3VyY2U6ICVzIiAlIGFwcC5QR0FETUlOX0RF RkFVTFRfQVVUSF9TT1VSQ0UpCisKICMgT3V0cHV0IGEgc3RhcnR1cCBtZXNzYWdlIGlmIHdlJ3Jl IG5vdCB1bmRlciB0aGUgcnVudGltZSBhbmQgc3RhcnR1cC4KICMgSWYgd2UncmUgdW5kZXIgV1NH SSwgd2UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCB0aGlzCiBpZiBfX25hbWVfXyA9PSAnX19t YWluX18nOgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vX19pbml0X18ucHkgYi93ZWIvcGdhZG1p bi9fX2luaXRfXy5weQppbmRleCA4MjBjODAxNWEuLjVjYTJhZTY3YSAxMDA2NDQKLS0tIGEvd2Vi L3BnYWRtaW4vX19pbml0X18ucHkKKysrIGIvd2ViL3BnYWRtaW4vX19pbml0X18ucHkKQEAgLTM4 LDcgKzM4LDcgQEAgZnJvbSBkYXRldGltZSBpbXBvcnQgdGltZWRlbHRhCiBmcm9tIHBnYWRtaW4u c2V0dXAgaW1wb3J0IGdldF92ZXJzaW9uLCBzZXRfdmVyc2lvbgogZnJvbSBwZ2FkbWluLnV0aWxz LmFqYXggaW1wb3J0IGludGVybmFsX3NlcnZlcl9lcnJvcgogZnJvbSBwZ2FkbWluLnV0aWxzLmNz cmYgaW1wb3J0IHBnQ1NSRlByb3RlY3QKLQorZnJvbSBwZ2FkbWluIGltcG9ydCBhdXRoZW50aWNh dGUKIAogIyBJZiBzY3JpcHQgaXMgcnVubmluZyB1bmRlciBweXRob24zLCBpdCB3aWxsIG5vdCBo YXZlIHRoZSB4cmFuZ2UgZnVuY3Rpb24KICMgZGVmaW5lZApAQCAtMzk4LDYgKzM5OCw3IEBAIGRl ZiBjcmVhdGVfYXBwKGFwcF9uYW1lPU5vbmUpOgogICAgICMgTG9hZCBhbGwgYXZhaWxhYmxlIHNl cnZlciBkcml2ZXJzCiAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICBkcml2ZXIuaW5pdF9hcHAo YXBwKQorICAgIGF1dGhlbnRpY2F0ZS5pbml0X2FwcChhcHApCiAKICAgICAjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIwogICAgICMgUmVnaXN0ZXIgbGFuZ3VhZ2UgdG8gdGhlIHByZWZlcmVuY2VzIGFmdGVyIGxv Z2luCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9hdXRoZW50aWNhdGUvX19pbml0X18ucHkgYi93 ZWIvcGdhZG1pbi9hdXRoZW50aWNhdGUvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwLi5lNzE4OTBjZTAKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1p bi9hdXRoZW50aWNhdGUvX19pbml0X18ucHkKQEAgLTAsMCArMSw5NiBAQAorIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQg KEMpIDIwMTMgLSAyMDIwLCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29m dHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKKworIiIiQSBibHVlcHJpbnQgbW9kdWxlIGltcGxlbWVudGluZyB0aGUgQXV0 aGVudGljYXRpb24uIiIiCisKK2ltcG9ydCBmbGFzaworZnJvbSBmbGFzayBpbXBvcnQgY3VycmVu dF9hcHAsIGZsYXNoCitmcm9tIGZsYXNrX2JhYmVsZXggaW1wb3J0IGdldHRleHQKK2Zyb20gZmxh c2tfc2VjdXJpdHkudmlld3MgaW1wb3J0IF9zZWN1cml0eSwgX2N0eAorZnJvbSBmbGFza19zZWN1 cml0eS51dGlscyBpbXBvcnQgY29uZmlnX3ZhbHVlLCBnZXRfcG9zdF9sb2dvdXRfcmVkaXJlY3QK KworaW1wb3J0IGNvbmZpZworZnJvbSBwZ2FkbWluLnV0aWxzIGltcG9ydCBQZ0FkbWluTW9kdWxl Citmcm9tIC5yZWdpc3RyeSBpbXBvcnQgQXV0aFNvdXJjZVJlZ2lzdHJ5CisKK01PRFVMRV9OQU1F ID0gJ2F1dGhlbnRpY2F0ZScKKworCitjbGFzcyBBdXRoZW50aWNhdGVNb2R1bGUoUGdBZG1pbk1v ZHVsZSk6CisgICAgZGVmIGdldF9leHBvc2VkX3VybF9lbmRwb2ludHMoc2VsZik6CisgICAgICAg IHJldHVybiBbJ2F1dGhlbnRpY2F0ZS5sb2dpbiddCisKKworYmx1ZXByaW50ID0gQXV0aGVudGlj YXRlTW9kdWxlKE1PRFVMRV9OQU1FLCBfX25hbWVfXywgc3RhdGljX3VybF9wYXRoPScnKQorCisK K0BibHVlcHJpbnQucm91dGUoJy9sb2dpbicsIGVuZHBvaW50PSdsb2dpbicsIG1ldGhvZHM9WydH RVQnLCAnUE9TVCddKQorZGVmIGxvZ2luKCk6CisgICAgIiIiCisgICAgRW50cnkgcG9pbnQgZm9y IGFsbCB0aGUgYXV0aGVudGljYXRpb24gc291cmNlcy4KKyAgICBUaGUgdXNlciBpbnB1dCBkYXRh IHdpbGwgYmUgdmFsaWRhdGVkIGFuZCBhdXRoZW50aWNhdGVkLgorICAgICIiIgorICAgIGZvcm0g PSBfc2VjdXJpdHkubG9naW5fZm9ybSgpCisKKyAgICAjIExvb3AgdGhyb3VnaCBhbGwgdGhlIHNv dXJjZXMKKyAgICBmb3Igc3JjIGluIGNvbmZpZy5BVVRIRU5USUNBVElPTl9TT1VSQ0VTOgorICAg ICAgICBzb3VyY2UgPSBnZXRfYXV0aF9zb3VyY2VzKHNyYykKKworICAgICAgICAjIFZhbGlkYXRl IHRoZSB1c2VyCisgICAgICAgIGlmIG5vdCBzb3VyY2UudmFsaWRhdGUoZm9ybSk6CisgICAgICAg ICAgICBmb3IgZmllbGQgaW4gZm9ybS5lcnJvcnM6CisgICAgICAgICAgICAgICAgZm9yIGVycm9y IGluIGZvcm0uZXJyb3JzW2ZpZWxkXToKKyAgICAgICAgICAgICAgICAgICAgZmxhc2goZXJyb3Is ICd3YXJuaW5nJykKKyAgICAgICAgICAgIHJldHVybiBmbGFzay5yZWRpcmVjdChnZXRfcG9zdF9s b2dvdXRfcmVkaXJlY3QoKSkKKworICAgICAgICAjIEF1dGhlbnRpY2F0ZSB0aGUgdXNlcgorICAg ICAgICBzdGF0dXMsIG1zZyA9IHNvdXJjZS5hdXRoZW50aWNhdGUoKQorCisgICAgICAgICMgTG9n aW4gdGhlIHVzZXIgaWYgYXV0aGVudGljYXRlZCBlbHNlIGxvb2sgZm9yIHRoZQorICAgICAgICAj IG90aGVyIGF1dGhlbnRpY2F0aW9uIHNvdXJjZXMgaWYgc2V0IGluIHRoZSBjb25maWcKKyAgICAg ICAgaWYgc3RhdHVzOgorICAgICAgICAgICAgIyBMb2dpbiB0aGUgdXNlcgorICAgICAgICAgICAg c3RhdHVzLCBtc2cgPSBzb3VyY2UubG9naW4oKQorICAgICAgICAgICAgaWYgbm90IHN0YXR1czoK KyAgICAgICAgICAgICAgICBmbGFzaChnZXR0ZXh0KG1zZyksICdkYW5nZXInKQorICAgICAgICAg ICAgICAgIHJldHVybiBmbGFzay5yZWRpcmVjdChnZXRfcG9zdF9sb2dvdXRfcmVkaXJlY3QoKSkK KworICAgICAgICAgICAgcmV0dXJuIGZsYXNrLnJlZGlyZWN0KCcvJykKKworICAgIGZsYXNoKGdl dHRleHQobXNnKSwgJ2RhbmdlcicpCisgICAgcmV0dXJuIGZsYXNrLnJlZGlyZWN0KGdldF9wb3N0 X2xvZ291dF9yZWRpcmVjdCgpKQorCisKK2RlZiBnZXRfYXV0aF9zb3VyY2VzKHR5cGUpOgorICAg ICIiIkdldCB0aGUgYXV0aGVudGljYXRlZCBzb3VyY2Ugb2JqZWN0IGZyb20gdGhlIHJlZ2lzdHJ5 IiIiCisKKyAgICBhdXRoX3NvdXJjZXMgPSBnZXRhdHRyKGN1cnJlbnRfYXBwLCAnX3BnYWRtaW5f YXV0aF9zb3VyY2VzJywgTm9uZSkKKworICAgIGlmIGF1dGhfc291cmNlcyBpcyBOb25lIG9yIG5v dCBpc2luc3RhbmNlKGF1dGhfc291cmNlcywgZGljdCk6CisgICAgICAgIGF1dGhfc291cmNlcyA9 IGRpY3QoKQorCisgICAgaWYgdHlwZSBpbiBhdXRoX3NvdXJjZXM6CisgICAgICAgIHJldHVybiBh dXRoX3NvdXJjZXNbdHlwZV0KKworICAgIGF1dGhfc291cmNlID0gQXV0aFNvdXJjZVJlZ2lzdHJ5 LmNyZWF0ZSh0eXBlKQorCisgICAgaWYgYXV0aF9zb3VyY2UgaXMgbm90IE5vbmU6CisgICAgICAg IGF1dGhfc291cmNlc1t0eXBlXSA9IGF1dGhfc291cmNlCisgICAgICAgIHNldGF0dHIoY3VycmVu dF9hcHAsICdfcGdhZG1pbl9hdXRoX3NvdXJjZXMnLCBhdXRoX3NvdXJjZXMpCisKKyAgICByZXR1 cm4gYXV0aF9zb3VyY2UKKworCitkZWYgaW5pdF9hcHAoYXBwKToKKyAgICBhdXRoX3NvdXJjZXMg PSBkaWN0KCkKKworICAgIHNldGF0dHIoYXBwLCAnX3BnYWRtaW5fYXV0aF9zb3VyY2VzJywgYXV0 aF9zb3VyY2VzKQorICAgIEF1dGhTb3VyY2VSZWdpc3RyeS5sb2FkX2F1dGhfc291cmNlcygpCisK KyAgICByZXR1cm4gYXV0aF9zb3VyY2VzCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9hdXRoZW50 aWNhdGUvaW50ZXJuYWwucHkgYi93ZWIvcGdhZG1pbi9hdXRoZW50aWNhdGUvaW50ZXJuYWwucHkK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi4xOGEzNzZjYWYKLS0tIC9kZXYv bnVsbAorKysgYi93ZWIvcGdhZG1pbi9hdXRoZW50aWNhdGUvaW50ZXJuYWwucHkKQEAgLTAsMCAr MSw5MSBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBU b29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDIwLCBUaGUgcGdBZG1pbiBEZXZlbG9w bWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVT UUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIiIiSW1wbGVtZW50cyBJbnRlcm5h bCBBdXRoZW50aWNhdGlvbiIiIgorCitpbXBvcnQgc2l4Citmcm9tIGZsYXNrIGltcG9ydCBjdXJy ZW50X2FwcAorZnJvbSBmbGFza19zZWN1cml0eSBpbXBvcnQgbG9naW5fdXNlcgorZnJvbSBhYmMg aW1wb3J0IGFic3RyYWN0bWV0aG9kCitmcm9tIGZsYXNrX2JhYmVsZXggaW1wb3J0IGdldHRleHQK KworZnJvbSAucmVnaXN0cnkgaW1wb3J0IEF1dGhTb3VyY2VSZWdpc3RyeQorZnJvbSBwZ2FkbWlu Lm1vZGVsIGltcG9ydCBVc2VyCisKKworQHNpeC5hZGRfbWV0YWNsYXNzKEF1dGhTb3VyY2VSZWdp c3RyeSkKK2NsYXNzIEJhc2VBdXRoZW50aWNhdGlvbihvYmplY3QpOgorICAgIGRlZiBfX2luaXRf XyhzZWxmKToKKyAgICAgICAgc2VsZi5mb3JtID0gTm9uZQorICAgICAgICBzZWxmLnVzZXJuYW1l ID0gTm9uZQorICAgICAgICBzZWxmLnBhc3N3b3JkID0gTm9uZQorCisgICAgZGVmIHZhbGlkYXRl KHNlbGYsIGZvcm0pOgorICAgICAgICB1c2VybmFtZSA9IGZvcm0uZGF0YVsnZW1haWwnXQorICAg ICAgICBwYXNzd29yZCA9IGZvcm0uZGF0YVsncGFzc3dvcmQnXQorCisgICAgICAgIGlmIHVzZXJu YW1lIGlzIE5vbmUgb3IgdXNlcm5hbWUgPT0gJyc6CisgICAgICAgICAgICBmb3JtLmVtYWlsLmVy cm9ycyA9IGxpc3QoZm9ybS5lbWFpbC5lcnJvcnMpCisgICAgICAgICAgICBmb3JtLmVtYWlsLmVy cm9ycy5hcHBlbmQoZ2V0dGV4dCgKKyAgICAgICAgICAgICAgICBzZWxmLm1lc3NhZ2VzKCdFTUFJ TF9OT1RfUFJPVklERUQnKSkpCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYg cGFzc3dvcmQgaXMgTm9uZSBvciBwYXNzd29yZCA9PSAnJzoKKyAgICAgICAgICAgIGZvcm0ucGFz c3dvcmQuZXJyb3JzID0gbGlzdChmb3JtLnBhc3N3b3JkLmVycm9ycykKKyAgICAgICAgICAgIGZv cm0ucGFzc3dvcmQuZXJyb3JzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLm1lc3NhZ2Vz KCdQQVNTV09SRF9OT1RfUFJPVklERUQnKSkKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisg ICAgICAgIHNlbGYuZm9ybSA9IGZvcm0KKyAgICAgICAgc2VsZi51c2VybmFtZSA9IGZvcm0uZGF0 YVsnZW1haWwnXQorICAgICAgICBzZWxmLnBhc3N3b3JkID0gZm9ybS5kYXRhWydwYXNzd29yZCdd CisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgbG9naW4oc2VsZik6CisgICAgICAgIHVz ZXIgPSBnZXRhdHRyKHNlbGYuZm9ybSwgJ3VzZXInLAorICAgICAgICAgICAgICAgICAgICAgICBV c2VyLnF1ZXJ5LmZpbHRlcl9ieSh1c2VybmFtZT1zZWxmLnVzZXJuYW1lKS5maXJzdCgpKQorCisg ICAgICAgIGlmIHVzZXIgaXMgTm9uZToKKyAgICAgICAgICAgIGN1cnJlbnRfYXBwLmxvZ2dlci5l eGNlcHRpb24oc2VsZi5tZXNzYWdlcygnVVNFUl9ET0VTX05PVF9FWElTVCcpKQorICAgICAgICAg ICAgcmV0dXJuIEZhbHNlLCBzZWxmLm1lc3NhZ2VzKCdVU0VSX0RPRVNfTk9UX0VYSVNUJykKKwor ICAgICAgICAjIExvZ2luIHVzZXIgdGhyb3VnaCBmbGFza19zZWN1cml0eQorICAgICAgICBzdGF0 dXMgPSBsb2dpbl91c2VyKHVzZXIpCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAg ICBjdXJyZW50X2FwcC5sb2dnZXIuZXhjZXB0aW9uKHNlbGYubWVzc2FnZXMoJ0xPR0lOX0ZBSUxF RCcpKQorICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCBzZWxmLm1lc3NhZ2VzKCdMT0dJTl9GQUlM RUQnKQorICAgICAgICByZXR1cm4gVHJ1ZSwgTm9uZQorCisgICAgQHN0YXRpY21ldGhvZAorICAg IGRlZiBtZXNzYWdlcyhtc2dfa2V5KToKKyAgICAgICAgX2RlZmF1bHRfbXNnID0geworICAgICAg ICAgICAgJ1VTRVJfRE9FU19OT1RfRVhJU1QnOiAnU3BlY2lmaWVkIHVzZXIgZG9lcyBub3QgZXhp c3QnLAorICAgICAgICAgICAgJ0xPR0lOX0ZBSUxFRCc6ICdMb2dpbiBmYWlsZWQnLAorICAgICAg ICAgICAgJ0VNQUlMX05PVF9QUk9WSURFRCc6ICdFbWFpbC9Vc2VybmFtZSBub3QgcHJvdmlkZWQn LAorICAgICAgICAgICAgJ1BBU1NXT1JEX05PVF9QUk9WSURFRCc6ICdQYXNzd29yZCBub3QgcHJv dmlkZWQnCisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIF9kZWZhdWx0X21zZ1ttc2dfa2V5XSBp ZiBtc2dfa2V5IGluIF9kZWZhdWx0X21zZyBlbHNlIE5vbmUKKworICAgIEBhYnN0cmFjdG1ldGhv ZAorICAgIGRlZiBhdXRoZW50aWNhdGUoY2xzKToKKyAgICAgICAgcGFzcworCisKK2NsYXNzIElu dGVybmFsQXV0aGVudGljYXRpb24oQmFzZUF1dGhlbnRpY2F0aW9uKToKKworICAgIGRlZiB2YWxp ZGF0ZShzZWxmLCBmb3JtKToKKyAgICAgICAgIiIiVXNlciB2YWxpZGF0aW9uIiIiCisgICAgICAg IHNlbGYuZm9ybSA9IGZvcm0KKyAgICAgICAgc2VsZi51c2VybmFtZSA9IGZvcm0uZGF0YVsnZW1h aWwnXQorICAgICAgICBzZWxmLnBhc3N3b3JkID0gZm9ybS5kYXRhWydwYXNzd29yZCddCisKKyAg ICAgICAgIyBGbGFzayBzZWN1cml0eSB2YWxpZGF0aW9uCisgICAgICAgIHJldHVybiBzZWxmLmZv cm0udmFsaWRhdGVfb25fc3VibWl0KCkKKworICAgIGRlZiBhdXRoZW50aWNhdGUoc2VsZik6Cisg ICAgICAgIHJldHVybiBUcnVlLCBOb25lCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9hdXRoZW50 aWNhdGUvbGRhcC5weSBiL3dlYi9wZ2FkbWluL2F1dGhlbnRpY2F0ZS9sZGFwLnB5Cm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uNGU5MWQ1NzUyCi0tLSAvZGV2L251bGwKKysr IGIvd2ViL3BnYWRtaW4vYXV0aGVudGljYXRlL2xkYXAucHkKQEAgLTAsMCArMSwxNjYgQEAKKyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKyMKKyMg Q29weXJpZ2h0IChDKSAyMDEzIC0gMjAyMCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQor IyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UK KyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyIiIkEgYmx1ZXByaW50IG1vZHVsZSBpbXBsZW1lbnRp bmcgdGhlIGxkYXAgYXV0aGVudGljYXRpb24uIiIiCisKK2ltcG9ydCBzc2wKK2ltcG9ydCBjb25m aWcKK2Zyb20gbGRhcDMgaW1wb3J0IENvbm5lY3Rpb24sIFNlcnZlciwgVGxzLCBBTEwsIEFMTF9B VFRSSUJVVEVTCitmcm9tIGxkYXAzLmNvcmUuZXhjZXB0aW9ucyBpbXBvcnQgTERBUFNvY2tldE9w ZW5FcnJvciwgTERBUEJpbmRFcnJvcixcCisgICAgTERBUEludmFsaWRTY29wZUVycm9yLCBMREFQ QXR0cmlidXRlRXJyb3IsIExEQVBJbnZhbGlkRmlsdGVyRXJyb3IsXAorICAgIExEQVBTdGFydFRM U0Vycm9yCitmcm9tIGZsYXNrX2JhYmVsZXggaW1wb3J0IGdldHRleHQKKworZnJvbSAuaW50ZXJu YWwgaW1wb3J0IEJhc2VBdXRoZW50aWNhdGlvbgorZnJvbSBwZ2FkbWluLm1vZGVsIGltcG9ydCBV c2VyLCBTZXJ2ZXJHcm91cCwgZGIsIFJvbGUKK2Zyb20gZmxhc2tfc2VjdXJpdHkgaW1wb3J0IGxv Z2luX3VzZXIKK2Zyb20gZmxhc2sgaW1wb3J0IGN1cnJlbnRfYXBwCitmcm9tIHBnYWRtaW4udG9v bHMudXNlcl9tYW5hZ2VtZW50IGltcG9ydCBjcmVhdGVfdXNlcgorCit0cnk6CisgICAgZnJvbSB1 cmxsaWIucGFyc2UgaW1wb3J0IHVybHBhcnNlCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgZnJv bSB1cmxwYXJzZSBpbXBvcnQgdXJscGFyc2UKKworCitjbGFzcyBMREFQQXV0aGVudGljYXRpb24o QmFzZUF1dGhlbnRpY2F0aW9uKToKKworICAgIGRlZiBhdXRoZW50aWNhdGUoc2VsZik6CisgICAg ICAgIHN0YXR1cywgbXNnID0gc2VsZi5jb25uZWN0KCkKKworICAgICAgICBpZiBub3Qgc3RhdHVz OgorICAgICAgICAgICAgcmV0dXJuIHN0YXR1cywgbXNnCisKKyAgICAgICAgc3RhdHVzLCBtc2cg PSBzZWxmLnNlYXJjaF9sZGFwX3VzZXIoKQorCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAg ICAgICAgICByZXR1cm4gc3RhdHVzLCBtc2cKKworICAgICAgICByZXR1cm4gc2VsZi5fX2F1dG9f Y3JlYXRlX3VzZXIoKQorCisgICAgZGVmIGNvbm5lY3Qoc2VsZik6CisgICAgICAgICIiIlNldHVw IHRoZSBjb25uZWN0aW9uIHRvIHRoZSBMREFQIHNlcnZlciBhbmQgYXV0aGVudGljYXRlIHRoZSB1 c2VyLgorICAgICAgICAiIiIKKworICAgICAgICAjIFBhcnNlIHRoZSBzZXJ2ZXIgVVJJCisgICAg ICAgIHVyaSA9IGdldGF0dHIoY29uZmlnLCAnTERBUF9TRVJWRVJfVVJJJywgTm9uZSkKKworICAg ICAgICBpZiB1cmk6CisgICAgICAgICAgICB1cmkgPSB1cmxwYXJzZSh1cmkpCisKKyAgICAgICAg IyBDcmVhdGUgdGhlIFRMUyBjb25maWd1cmF0aW9uIG9iamVjdCBpZiByZXF1aXJlZAorICAgICAg ICB0bHMgPSBOb25lCisgICAgICAgIGlmIHVyaS5zY2hlbWUgPT0gJ2xkYXBzJyBvciBjb25maWcu TERBUF9VU0VfU1RBUlRUTFM6CisKKyAgICAgICAgICAgIGNhX2NlcnRfZmlsZSA9IGdldGF0dHIo Y29uZmlnLCAnTERBUF9DQV9DRVJUX0ZJTEUnLCBOb25lKQorICAgICAgICAgICAgY2VydF9maWxl ID0gZ2V0YXR0cihjb25maWcsICdMREFQX0NFUlRfRklMRScsIE5vbmUpCisgICAgICAgICAgICBr ZXlfZmlsZSA9IGdldGF0dHIoY29uZmlnLCAnTERBUF9LRVlfRklMRScsIE5vbmUpCisgICAgICAg ICAgICBjZXJ0X3ZhbGlkYXRlID0gc3NsLkNFUlRfTk9ORQorCisgICAgICAgICAgICBpZiBjYV9j ZXJ0X2ZpbGUgYW5kIGNlcnRfZmlsZSBhbmQga2V5X2ZpbGU6CisgICAgICAgICAgICAgICAgY2Vy dF92YWxpZGF0ZSA9IHNzbC5DRVJUX1JFUVVJUkVECisKKyAgICAgICAgICAgIHRscyA9IFRscygK KyAgICAgICAgICAgICAgICBsb2NhbF9wcml2YXRlX2tleV9maWxlPWtleV9maWxlLAorICAgICAg ICAgICAgICAgIGxvY2FsX2NlcnRpZmljYXRlX2ZpbGU9Y2VydF9maWxlLAorICAgICAgICAgICAg ICAgIHZhbGlkYXRlPWNlcnRfdmFsaWRhdGUsCisgICAgICAgICAgICAgICAgdmVyc2lvbj1zc2wu UFJPVE9DT0xfVExTdjEsCisgICAgICAgICAgICAgICAgY2FfY2VydHNfZmlsZT1jYV9jZXJ0X2Zp bGUpCisKKyAgICAgICAgIyBDcmVhdGUgdGhlIHNlcnZlciBvYmplY3QKKyAgICAgICAgc2VydmVy ID0gU2VydmVyKHVyaS5ob3N0bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvcnQ9dXJp LnBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICB1c2Vfc3NsPSh1cmkuc2NoZW1lID09ICds ZGFwcycpLAorICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X2luZm89QUxMLAorICAgICAgICAg ICAgICAgICAgICAgICAgdGxzPXRscywKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rf dGltZW91dD1jb25maWcuTERBUF9DT05ORUNUSU9OX1RJTUVPVVQpCisKKyAgICAgICAgIyBDcmVh dGUgdGhlIGNvbm5lY3Rpb24KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdXNlcl9kbiA9ICJ7 MH09ezF9LHsyfSIuZm9ybWF0KGNvbmZpZy5MREFQX1VTRVJOQU1FX0FUVFJJQlVURSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnVzZXJuYW1lLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5MREFQX0JBU0Vf RE4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAg ICAgICBzZWxmLmNvbm4gPSBDb25uZWN0aW9uKHNlcnZlciwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdXNlcj11c2VyX2RuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwYXNzd29yZD1zZWxmLnBhc3N3b3JkLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBhdXRvX2JpbmQ9VHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICApCisKKyAgICAgICAgZXhjZXB0IExEQVBTb2NrZXRPcGVuRXJyb3IgYXMgZToKKyAgICAg ICAgICAgIGN1cnJlbnRfYXBwLmxvZ2dlci5leGNlcHRpb24oCisgICAgICAgICAgICAgICAgIkVy cm9yIGNvbm5lY3RpbmcgdG8gdGhlIExEQVAgc2VydmVyOiAlc1xuIiAlIGUpCisgICAgICAgICAg ICByZXR1cm4gRmFsc2UsICJFcnJvciBjb25uZWN0aW5nIHRvIHRoZSBMREFQIHNlcnZlcjoiIFwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIiAlc1xuIiAlIGUuYXJnc1swXQorICAgICAgICBl eGNlcHQgTERBUEJpbmRFcnJvciBhcyBlOgorCisgICAgICAgICAgICBjdXJyZW50X2FwcC5sb2dn ZXIuZXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICJFcnJvciBiaW5kaW5nIHRvIHRoZSBMREFQ IHNlcnZlcjogJXNcbiIgJSBlKQorICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCAiRXJyb3IgYmlu ZGluZyB0byB0aGUgTERBUCBzZXJ2ZXI6IiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICIg JXNcbiIgJSBlLmFyZ3NbMF0KKworICAgICAgICAjIEVuYWJsZSBUTFMgaWYgU1RBUlRUTFMgaXMg Y29uZmlndXJlZAorICAgICAgICBpZiBub3QgdXJpLnNjaGVtZSA9PSAnbGRhcHMnIGFuZCBjb25m aWcuTERBUF9VU0VfU1RBUlRUTFM6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAg c2VsZi5jb25uLnN0YXJ0X3RscygpCisgICAgICAgICAgICBleGNlcHQgTERBUFN0YXJ0VExTRXJy b3IgYXMgZToKKyAgICAgICAgICAgICAgICBjdXJyZW50X2FwcC5sb2dnZXIuZXhjZXB0aW9uKAor ICAgICAgICAgICAgICAgICAgICAiRXJyb3Igc3RhcnRpbmcgVExTOiAlc1xuIiAlIGUpCisgICAg ICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCAiRXJyb3Igc3RhcnRpbmcgVExTOiAlc1xuIiAlIGUu YXJnc1swXQorCisgICAgICAgIHJldHVybiBUcnVlLCBOb25lCisKKyAgICBkZWYgX19hdXRvX2Ny ZWF0ZV91c2VyKHNlbGYpOgorICAgICAgICBpZiBjb25maWcuTERBUF9BVVRPX0NSRUFURV9VU0VS OgorICAgICAgICAgICAgdXNlciA9IFVzZXIucXVlcnkuZmlsdGVyX2J5KAorICAgICAgICAgICAg ICAgIHVzZXJuYW1lPXNlbGYudXNlcm5hbWUpLmZpcnN0KCkKKyAgICAgICAgICAgIGlmIHVzZXIg aXMgTm9uZToKKyAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlX3VzZXIoeworICAgICAgICAg ICAgICAgICAgICAndXNlcm5hbWUnOiBzZWxmLnVzZXJuYW1lLAorICAgICAgICAgICAgICAgICAg ICAnZW1haWwnOiAnJywKKyAgICAgICAgICAgICAgICAgICAgJ3JvbGUnOiAyLAorICAgICAgICAg ICAgICAgICAgICAnYWN0aXZlJzogVHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgJ25ld1Bhc3N3 b3JkJzogc2VsZi5wYXNzd29yZCwKKyAgICAgICAgICAgICAgICAgICAgJ2NvbmZpcm1QYXNzd29y ZCc6IHNlbGYucGFzc3dvcmQKKyAgICAgICAgICAgICAgICB9KQorCisgICAgICAgIHJldHVybiBU cnVlLCBOb25lCisKKyAgICBkZWYgc2VhcmNoX2xkYXBfdXNlcihzZWxmKToKKyAgICAgICAgIiIi R2V0IGEgbGlzdCBvZiB1c2VycyBmcm9tIHRoZSBMREFQIHNlcnZlciBiYXNlZCBvbiBjb25maWcK KyAgICAgICAgIHNlYXJjaCBjcml0ZXJpYS4iIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAg c2VsZi5jb25uLnNlYXJjaChzZWFyY2hfYmFzZT1jb25maWcuTERBUF9TRUFSQ0hfQkFTRV9ETiwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2ZpbHRlcj1jb25maWcuTERBUF9T RUFSQ0hfRklMVEVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hfc2NvcGU9 Y29uZmlnLkxEQVBfU0VBUkNIX1NDT1BFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh dHRyaWJ1dGVzPUFMTF9BVFRSSUJVVEVTCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkK KworICAgICAgICBleGNlcHQgTERBUEludmFsaWRTY29wZUVycm9yIGFzIGU6CisgICAgICAgICAg ICBjdXJyZW50X2FwcC5sb2dnZXIuZXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICJFcnJvciBz ZWFyY2hpbmcgdGhlIExEQVAgZGlyZWN0b3J5OiAlc1xuIiAlIGUpCisgICAgICAgICAgICByZXR1 cm4gRmFsc2UsICJFcnJvciBzZWFyY2hpbmcgdGhlIExEQVAgZGlyZWN0b3J5OiIgXAorICAgICAg ICAgICAgICAgICAgICAgICAgICAiICVzXG4iICUgZS5hcmdzWzBdCisgICAgICAgIGV4Y2VwdCBM REFQQXR0cmlidXRlRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGN1cnJlbnRfYXBwLmxvZ2dlci5l eGNlcHRpb24oIkVycm9yIHNlYXJjaGluZyB0aGUgTERBUCBkaXJlY3Rvcnk6IgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICVzXG4iICUgZSkKKyAgICAgICAgICAg IHJldHVybiBGYWxzZSwgIkVycm9yIHNlYXJjaGluZyB0aGUgTERBUCBkaXJlY3Rvcnk6IiBcCisg ICAgICAgICAgICAgICAgICAgICAgICAgICIgJXNcbiIgJSBlLmFyZ3NbMF0KKyAgICAgICAgZXhj ZXB0IExEQVBJbnZhbGlkRmlsdGVyRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGN1cnJlbnRfYXBw LmxvZ2dlci5leGNlcHRpb24oCisgICAgICAgICAgICAgICAgIkVycm9yIHNlYXJjaGluZyB0aGUg TERBUCBkaXJlY3Rvcnk6ICVzXG4iICUgZSkKKyAgICAgICAgICAgIHJldHVybiBGYWxzZSwgIkVy cm9yIHNlYXJjaGluZyB0aGUgTERBUCBkaXJlY3Rvcnk6IiBcCisgICAgICAgICAgICAgICAgICAg ICAgICAgICIgJXNcbiIgJSBlLmFyZ3NbMF0KKworICAgICAgICB1c2VycyA9IFtdCisgICAgICAg IGZvciBlbnRyeSBpbiBzZWxmLmNvbm4uZW50cmllczoKKyAgICAgICAgICAgIGlmIGNvbmZpZy5M REFQX1VTRVJOQU1FX0FUVFJJQlVURSBpbiBlbnRyeSBhbmQgc2VsZi51c2VybmFtZSA9PSBcCisg ICAgICAgICAgICAgICAgICAgIGVudHJ5W2NvbmZpZy5MREFQX1VTRVJOQU1FX0FUVFJJQlVURV0u dmFsdWU6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUsIE5vbmUKKyAgICAgICAgcmV0dXJu IEZhbHNlLCBOb25lCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9hdXRoZW50aWNhdGUvcmVnaXN0 cnkucHkgYi93ZWIvcGdhZG1pbi9hdXRoZW50aWNhdGUvcmVnaXN0cnkucHkKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi45MDVmNTU2NDMKLS0tIC9kZXYvbnVsbAorKysgYi93 ZWIvcGdhZG1pbi9hdXRoZW50aWNhdGUvcmVnaXN0cnkucHkKQEAgLTAsMCArMSw2NSBAQAorIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBD b3B5cmlnaHQgKEMpIDIwMTMgLSAyMDIwLCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisj IFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQor IworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIiIiRXh0ZXJuYWwgQXV0aGVudGljYXRpb24gUmVnaXN0 cnkuIiIiCisKKworZnJvbSBmbGFza19iYWJlbGV4IGltcG9ydCBnZXR0ZXh0Citmcm9tIGFiYyBp bXBvcnQgQUJDTWV0YQorCisKK2RlZiBfZGVjb3JhdGVfY2xzX25hbWUobW9kdWxlX25hbWUpOgor ICAgIGxlbmd0aCA9IGxlbihfX3BhY2thZ2VfXykgKyAxCisKKyAgICBpZiBsZW4obW9kdWxlX25h bWUpID4gbGVuZ3RoIGFuZCBtb2R1bGVfbmFtZS5zdGFydHN3aXRoKF9fcGFja2FnZV9fKToKKyAg ICAgICAgcmV0dXJuIG1vZHVsZV9uYW1lW2xlbmd0aDpdCisKKyAgICByZXR1cm4gbW9kdWxlX25h bWUKKworCitjbGFzcyBBdXRoU291cmNlUmVnaXN0cnkoQUJDTWV0YSk6CisgICAgcmVnaXN0cnkg PSBOb25lCisgICAgYXV0aF9zb3VyY2VzID0gZGljdCgpCisKKyAgICBkZWYgX19pbml0X18oY2xz LCBuYW1lLCBiYXNlcywgZCk6CisKKyAgICAgICAgIyBSZWdpc3RlciB0aGlzIHR5cGUgb2YgYXV0 aF9zb3VyY2VzLCBiYXNlZCBvbiB0aGUgbW9kdWxlIG5hbWUKKyAgICAgICAgIyBBdm9pZCByZWdp c3RlcmluZyB0aGUgQmFzZUF1dGhlbnRpY2F0aW9uIGl0c2VsZgorCisgICAgICAgIEF1dGhTb3Vy Y2VSZWdpc3RyeS5yZWdpc3RyeVtfZGVjb3JhdGVfY2xzX25hbWUoZFsnX19tb2R1bGVfXyddKV0g PSBjbHMKKyAgICAgICAgQUJDTWV0YS5fX2luaXRfXyhjbHMsIG5hbWUsIGJhc2VzLCBkKQorCisg ICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGNyZWF0ZShjbHMsIG5hbWUsICoqa3dhcmdzKToKKwor ICAgICAgICBpZiBuYW1lIGluIEF1dGhTb3VyY2VSZWdpc3RyeS5hdXRoX3NvdXJjZXM6CisgICAg ICAgICAgICByZXR1cm4gQXV0aFNvdXJjZVJlZ2lzdHJ5LmF1dGhfc291cmNlc1tuYW1lXQorCisg ICAgICAgIGlmIG5hbWUgaW4gQXV0aFNvdXJjZVJlZ2lzdHJ5LnJlZ2lzdHJ5OgorICAgICAgICAg ICAgQXV0aFNvdXJjZVJlZ2lzdHJ5LmF1dGhfc291cmNlc1tuYW1lXSA9IFwKKyAgICAgICAgICAg ICAgICAoQXV0aFNvdXJjZVJlZ2lzdHJ5LnJlZ2lzdHJ5W25hbWVdKSgqKmt3YXJncykKKyAgICAg ICAgICAgIHJldHVybiBBdXRoU291cmNlUmVnaXN0cnkuYXV0aF9zb3VyY2VzW25hbWVdCisKKyAg ICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigKKyAgICAgICAgICAgIGdldHRleHQoCisg ICAgICAgICAgICAgICAgIkF1dGhlbnRpY2F0aW9uIHNvdXJjZSAnezB9JyBoYXMgbm90IGJlZW4g aW1wbGVtZW50ZWQuIgorICAgICAgICAgICAgKS5mb3JtYXQobmFtZSkKKyAgICAgICAgKQorCisg ICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGxvYWRfYXV0aF9zb3VyY2VzKGNscyk6CisgICAgICAg ICMgSW5pdGlhbGl6ZSB0aGUgcmVnaXN0cnkgb25seSBpZiBpdCBoYXMgbm90IHlldCBiZWVuIGlu aXRpYWxpemVkCisgICAgICAgIGlmIEF1dGhTb3VyY2VSZWdpc3RyeS5yZWdpc3RyeSBpcyBOb25l OgorICAgICAgICAgICAgQXV0aFNvdXJjZVJlZ2lzdHJ5LnJlZ2lzdHJ5ID0gZGljdCgpCisKKyAg ICAgICAgZnJvbSBpbXBvcnRsaWIgaW1wb3J0IGltcG9ydF9tb2R1bGUKKyAgICAgICAgZnJvbSB3 ZXJremV1Zy51dGlscyBpbXBvcnQgZmluZF9tb2R1bGVzCisKKyAgICAgICAgZm9yIG1vZHVsZV9u YW1lIGluIGZpbmRfbW9kdWxlcyhfX3BhY2thZ2VfXywgVHJ1ZSk6CisgICAgICAgICAgICBtb2R1 bGUgPSBpbXBvcnRfbW9kdWxlKG1vZHVsZV9uYW1lKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4v YXV0aGVudGljYXRlL3Rlc3RzL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vYXV0aGVudGljYXRl L3Rlc3RzL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4u N2FmNDViMWI1Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYXV0aGVudGljYXRlL3Rl c3RzL19faW5pdF9fLnB5CkBAIC0wLDAgKzEsOCBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMg cGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAy MDIwLCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVs ZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2F1dGhlbnRpY2F0ZS90ZXN0cy90ZXN0X2xkYXAucHkg Yi93ZWIvcGdhZG1pbi9hdXRoZW50aWNhdGUvdGVzdHMvdGVzdF9sZGFwLnB5Cm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uMDAwZjJkMGI2Ci0tLSAvZGV2L251bGwKKysrIGIv d2ViL3BnYWRtaW4vYXV0aGVudGljYXRlL3Rlc3RzL3Rlc3RfbGRhcC5weQpAQCAtMCwwICsxLDY4 IEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xz CisjCisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMjAsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50 IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBM aWNlbmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitmcm9tIHBnYWRtaW4udXRpbHMucm91dGUg aW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCitmcm9tIHBnYWRtaW4udXRpbHMgaW1wb3J0IHNlcnZl cl91dGlscyBhcyBzZXJ2ZXJfdXRpbHMKK2Zyb20gcmVncmVzc2lvbiBpbXBvcnQgcGFyZW50X25v ZGVfZGljdAoraW1wb3J0IHNpbXBsZWpzb24gYXMganNvbgorCisKK2NsYXNzIERhc2hib2FyZEdy YXBoc1Rlc3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9yKToKKyAgICAiIiIKKyAgICBUaGlzIGNsYXNz IHZhbGlkYXRlcyB0aGUgdmVyc2lvbiBpbiByYW5nZSBmdW5jdGlvbmFsaXR5CisgICAgYnkgZGVm aW5pbmcgZGlmZmVyZW50IHZlcnNpb24gc2NlbmFyaW9zOyB3aGVyZSBkaWN0IG9mCisgICAgcGFy YW1ldGVycyBkZXNjcmliZXMgdGhlIHNjZW5hcmlvIGFwcGVuZGVkIGJ5IHRlc3QgbmFtZS4KKyAg ICAiIiIKKworICAgIHNjZW5hcmlvcyA9IFsoCisgICAgICAgICdUZXN0Q2FzZSBmb3Igc2Vzc2lv bl9zdGF0cyBncmFwaCcsIGRpY3QoCisgICAgICAgICAgICBkaWQ9LTEsCisgICAgICAgICAgICBj aGFydF9kYXRhPXsKKyAgICAgICAgICAgICAgICAnc2Vzc2lvbl9zdGF0cyc6IFsnVG90YWwnLCAn QWN0aXZlJywgJ0lkbGUnXSwKKyAgICAgICAgICAgIH0KKyAgICAgICAgKSkKKyAgICBdCisKKyAg ICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHBhc3MKKworICAgIGRlZiBnZXRTdGF0c1VybChz ZWxmLCBzaWQ9LTEsIGRpZD0tMSwgY2hhcnRfbmFtZXM9JycpOgorICAgICAgICBiYXNlX3VybCA9 ICcvZGFzaGJvYXJkL2Rhc2hib2FyZF9zdGF0cycKKyAgICAgICAgYmFzZV91cmwgPSBiYXNlX3Vy bCArICcvJyArIHN0cihzaWQpCisgICAgICAgIGJhc2VfdXJsICs9ICcvJyArIHN0cihkaWQpIGlm IGRpZCA+IDAgZWxzZSAnJworICAgICAgICBiYXNlX3VybCArPSAnP2NoYXJ0X25hbWVzPScgKyBj aGFydF9uYW1lcworICAgICAgICByZXR1cm4gYmFzZV91cmwKKworICAgIGRlZiBydW5UZXN0KHNl bGYpOgorICAgICAgICBzZWxmLnNlcnZlcl9pZCA9IHBhcmVudF9ub2RlX2RpY3RbInNlcnZlciJd Wy0xXVsic2VydmVyX2lkIl0KKyAgICAgICAgc2VydmVyX3Jlc3BvbnNlID0gc2VydmVyX3V0aWxz LmNvbm5lY3Rfc2VydmVyKHNlbGYsIHNlbGYuc2VydmVyX2lkKQorICAgICAgICBpZiBzZXJ2ZXJf cmVzcG9uc2VbImluZm8iXSA9PSAiU2VydmVyIGNvbm5lY3RlZC4iOgorCisgICAgICAgICAgICB1 cmwgPSBzZWxmLmdldFN0YXRzVXJsKHNlbGYuc2VydmVyX2lkLCBzZWxmLmRpZCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIiwiLmpvaW4oc2VsZi5jaGFydF9kYXRhLmtleXMo KSkpCisgICAgICAgICAgICByZXNwb25zZSA9IHNlbGYudGVzdGVyLmdldCh1cmwpCisgICAgICAg ICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQorCisgICAg ICAgICAgICByZXNwX2RhdGEgPSBqc29uLmxvYWRzKHJlc3BvbnNlLmRhdGEpCisKKyAgICAgICAg ICAgICMgQWxsIHJlcXVlc3RlZCBjaGFydHMgcmVjZWl2ZWQKKyAgICAgICAgICAgIHNlbGYuYXNz ZXJ0RXF1YWxzKGxlbihyZXNwX2RhdGEua2V5cygpKSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGxlbihzZWxmLmNoYXJ0X2RhdGEua2V5cygpKSkKKworICAgICAgICAgICAgIyBBbGwg cmVxdWVzdGVkIGNoYXJ0cyBkYXRhIHJlY2VpdmVkCisgICAgICAgICAgICBmb3IgY2hhcnRfbmFt ZSwgY2hhcnRfdmFscyBpbiBzZWxmLmNoYXJ0X2RhdGEuaXRlbXMoKToKKyAgICAgICAgICAgICAg ICBzZWxmLmFzc2VydEVxdWFscyhzZXQocmVzcF9kYXRhW2NoYXJ0X25hbWVdLmtleXMoKSksCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0KGNoYXJ0X3ZhbHMpKQorCisgICAg ICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkVycm9yIHdoaWxlIGNvbm5l Y3Rpbmcgc2VydmVyIHRvIGFkZCB0aGUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBk YXRhYmFzZS4iKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBwYXNzCmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9fX2luaXRfXy5weQppbmRleCAzMGFmM2UxMWIuLmZjNDAwNWVkMCAxMDA2NDQKLS0tIGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9fX2luaXRfXy5weQorKysgYi93ZWIvcGdhZG1pbi9icm93c2Vy L19faW5pdF9fLnB5CkBAIC01ODAsMTIgKzU4MCwxOCBAQCBkZWYgaW5kZXgoKToKIAogICAgICAg ICAgICAgICAgIGZsYXNoKG1zZywgJ3dhcm5pbmcnKQogCisgICAgYXV0aF9vbmx5X2ludGVybmFs ID0gRmFsc2UKKyAgICBpZiBsZW4oY29uZmlnLkFVVEhFTlRJQ0FUSU9OX1NPVVJDRVMpID09IDFc CisgICAgICAgICAgICBhbmQgJ2ludGVybmFsJyBpbiBjb25maWcuQVVUSEVOVElDQVRJT05fU09V UkNFUzoKKyAgICAgICAgYXV0aF9vbmx5X2ludGVybmFsID0gVHJ1ZQorCiAgICAgcmVzcG9uc2Ug PSBSZXNwb25zZShyZW5kZXJfdGVtcGxhdGUoCiAgICAgICAgIE1PRFVMRV9OQU1FICsgIi9pbmRl eC5odG1sIiwKLSAgICAgICAgdXNlcm5hbWU9Y3VycmVudF91c2VyLmVtYWlsLAorICAgICAgICB1 c2VybmFtZT1jdXJyZW50X3VzZXIudXNlcm5hbWUsCiAgICAgICAgIGlzX2FkbWluPWN1cnJlbnRf dXNlci5oYXNfcm9sZSgiQWRtaW5pc3RyYXRvciIpLAogICAgICAgICBsb2dvdXRfdXJsPV9nZXRf bG9nb3V0X3VybCgpLAotICAgICAgICBfPWdldHRleHQKKyAgICAgICAgXz1nZXR0ZXh0LAorICAg ICAgICBhdXRoX29ubHlfaW50ZXJuYWw9YXV0aF9vbmx5X2ludGVybmFsCiAgICAgKSkKIAogICAg ICMgU2V0IHRoZSBsYW5ndWFnZSBjb29raWUgYWZ0ZXIgbG9naW4sIHNvIG5leHQgdGltZSB0aGUg dXNlciB3aWxsIGhhdmUgdGhhdApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci90ZW1w bGF0ZXMvYnJvd3Nlci9pbmRleC5odG1sIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci90ZW1wbGF0ZXMv YnJvd3Nlci9pbmRleC5odG1sCmluZGV4IDY4MmMyM2Q2NS4uZjg5NDYyM2UzIDEwMDY0NAotLS0g YS93ZWIvcGdhZG1pbi9icm93c2VyL3RlbXBsYXRlcy9icm93c2VyL2luZGV4Lmh0bWwKKysrIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci90ZW1wbGF0ZXMvYnJvd3Nlci9pbmRleC5odG1sCkBAIC0xNDIs NiArMTQyLDcgQEAgd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKGUpewogICAgICAgICAgICAgICAg IDxhIGhyZWY9IiMiIGNsYXNzPSJuYXYtbGluayBkcm9wZG93bi10b2dnbGUiIGRhdGEtdG9nZ2xl PSJkcm9wZG93biIKICAgICAgICAgICAgICAgICAgICByb2xlPSJidXR0b24iIGFyaWEtZXhwYW5k ZWQ9ImZhbHNlIiBpZD0ibmF2YmFyLXVzZXIiPjwvYT4KICAgICAgICAgICAgICAgICA8dWwgY2xh c3M9ImRyb3Bkb3duLW1lbnUgZHJvcGRvd24tbWVudS1yaWdodCIgcm9sZT0ibWVudSI+CisgICAg ICAgICAgICAgICAgICAgIHslIGlmIGF1dGhfb25seV9pbnRlcm5hbCAlfQogICAgICAgICAgICAg ICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iZHJvcGRvd24t aXRlbSIgaHJlZj0iIyIgb25jbGljaz0icGdBZG1pbi5Ccm93c2VyLlVzZXJNYW5hZ2VtZW50LmNo YW5nZV9wYXNzd29yZCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3t7IHVybF9mb3IoJ2Jy b3dzZXIuY2hhbmdlX3Bhc3N3b3JkJykgfX0nCkBAIC0xNDksNiArMTUwLDcgQEAgd2luZG93Lm9u bG9hZCA9IGZ1bmN0aW9uKGUpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IF8oJ0No YW5nZSBQYXNzd29yZCcpIH19CiAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAg ICAgICAgICAgICAgIDwvbGk+CisgICAgICAgICAgICAgICAgICAgIHslIGVuZGlmICV9CiAgICAg ICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRvd24tZGl2aWRlciI+PC9saT4KICAgICAg ICAgICAgICAgICAgICAgeyUgaWYgaXNfYWRtaW4gJX0KICAgICAgICAgICAgICAgICAgICAgPGxp PjxhIGNsYXNzPSJkcm9wZG93bi1pdGVtIiBocmVmPSIjIiBvbmNsaWNrPSJwZ0FkbWluLkJyb3dz ZXIuVXNlck1hbmFnZW1lbnQuc2hvd191c2VycygpIj57eyBfKCdVc2VycycpIH19PC9hPjwvbGk+ CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3Rlc3RzL3Rlc3RfY2hhbmdlX3Bhc3N3 b3JkLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci90ZXN0cy90ZXN0X2NoYW5nZV9wYXNzd29yZC5w eQppbmRleCAwNGM0OWEyM2UuLmZiODZlNGRmZCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJv d3Nlci90ZXN0cy90ZXN0X2NoYW5nZV9wYXNzd29yZC5weQorKysgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3Rlc3RzL3Rlc3RfY2hhbmdlX3Bhc3N3b3JkLnB5CkBAIC05NSw2ICs5NSw3IEBAIGNsYXNz IENoYW5nZVBhc3N3b3JkVGVzdENhc2UoQmFzZVRlc3RHZW5lcmF0b3IpOgogICAgICAgICAgICAg cmVzcG9uc2UgPSBzZWxmLnRlc3Rlci5wb3N0KAogICAgICAgICAgICAgICAgICcvdXNlcl9tYW5h Z2VtZW50L3VzZXIvJywKICAgICAgICAgICAgICAgICBkYXRhPWpzb24uZHVtcHMoZGljdCgKKyAg ICAgICAgICAgICAgICAgICAgdXNlcm5hbWU9c2VsZi51c2VybmFtZSwKICAgICAgICAgICAgICAg ICAgICAgZW1haWw9c2VsZi51c2VybmFtZSwKICAgICAgICAgICAgICAgICAgICAgbmV3UGFzc3dv cmQ9c2VsZi5wYXNzd29yZCwKICAgICAgICAgICAgICAgICAgICAgY29uZmlybVBhc3N3b3JkPXNl bGYucGFzc3dvcmQsCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3Rlc3RzL3Rlc3Rf bGRhcF9sb2dpbi5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvdGVzdHMvdGVzdF9sZGFwX2xvZ2lu LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uMmY1OWRmZmY2Ci0tLSAv ZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci90ZXN0cy90ZXN0X2xkYXBfbG9naW4u cHkKQEAgLTAsMCArMSw4OCBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0g UG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDIwLCBUaGUgcGdB ZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIg dGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworaW1wb3J0IGNv bmZpZyBhcyBhcHBfY29uZmlnCitmcm9tIHBnYWRtaW4udXRpbHMucm91dGUgaW1wb3J0IEJhc2VU ZXN0R2VuZXJhdG9yCitmcm9tIHJlZ3Jlc3Npb24ucHl0aG9uX3Rlc3RfdXRpbHMgaW1wb3J0IHRl c3RfdXRpbHMgYXMgdXRpbHMKK2Zyb20gcmVncmVzc2lvbi50ZXN0X3NldHVwIGltcG9ydCBjb25m aWdfZGF0YQorCisKK2NsYXNzIExEQVBMb2dpblRlc3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9yKToK KyAgICAiIiIKKyAgICBUaGlzIGNsYXNzIGNoZWNrcyBsZGFwIGxvZ2luIGZ1bmN0aW9uYWxpdHkK KyAgICBieSB2YWxpZGF0aW5nIGRpZmZlcmVudCBzY2VuYXJpb3MuCisgICAgIiIiCisKKyAgICBz Y2VuYXJpb3MgPSBbCisgICAgICAgICgnTERBUCBBdXRoZW50aWNhdGlvbicsIGRpY3QoCisgICAg ICAgICAgICBjb25maWdfa2V5X3BhcmFtPSdsZGFwJywKKyAgICAgICAgICAgIGlzX2dyYXZ0YXJf aW1hZ2VfY2hlY2s9RmFsc2UpKSwKKyAgICAgICAgKCdMREFQIFdpdGggU1NMIEF1dGhlbnRpY2F0 aW9uJywgZGljdCgKKyAgICAgICAgICAgIGNvbmZpZ19rZXlfcGFyYW09J2xkYXBfd2l0aF9zc2wn LAorICAgICAgICAgICAgaXNfZ3JhdnRhcl9pbWFnZV9jaGVjaz1GYWxzZSkpLAorICAgICAgICAo J0xEQVAgV2l0aCBUTFMgQXV0aGVudGljYXRpb24nLCBkaWN0KAorICAgICAgICAgICAgY29uZmln X2tleV9wYXJhbT0nbGRhcF93aXRoX3RscycsCisgICAgICAgICAgICBpc19ncmF2dGFyX2ltYWdl X2NoZWNrPUZhbHNlKSksCisgICAgXQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVw Q2xhc3MoY2xzKToKKyAgICAgICAgIiIiCisgICAgICAgIFdlIG5lZWQgdG8gbG9nb3V0IHRoZSB0 ZXN0IGNsaWVudAorICAgICAgICBhcyB3ZSBhcmUgdGVzdGluZyBsZGFwIGxvZ2luIHNjZW5hcmlv cy4KKyAgICAgICAgIiIiCisgICAgICAgIGNscy50ZXN0ZXIubG9nb3V0KCkKKworICAgIGRlZiBz ZXRVcChzZWxmKToKKyAgICAgICAgaWYgdHlwZShjb25maWdfZGF0YVsnbGRhcF9jb25maWcnXSkg aXMgbGlzdCBhbmRcCisgICAgICAgICAgICAgICAgbGVuKGNvbmZpZ19kYXRhWydsZGFwX2NvbmZp ZyddKSA+IDAgYW5kXAorICAgICAgICAgICAgICAgIHNlbGYuY29uZmlnX2tleV9wYXJhbSBpbiBj b25maWdfZGF0YVsnbGRhcF9jb25maWcnXVswXToKKyAgICAgICAgICAgIGxkYXBfY29uZmlnID0g Y29uZmlnX2RhdGFbJ2xkYXBfY29uZmlnJ11bMF1bc2VsZi5jb25maWdfa2V5X3BhcmFtXQorCisg ICAgICAgICAgICBhcHBfY29uZmlnLkFVVEhFTlRJQ0FUSU9OX1NPVVJDRVMgPSBbJ2xkYXAnXQor ICAgICAgICAgICAgYXBwX2NvbmZpZy5MREFQX0FVVE9fQ1JFQVRFX1VTRVIgPSBUcnVlCisgICAg ICAgICAgICBhcHBfY29uZmlnLkxEQVBfU0VSVkVSX1VSSSA9IGxkYXBfY29uZmlnWyd1cmknXQor ICAgICAgICAgICAgYXBwX2NvbmZpZy5MREFQX0JBU0VfRE4gPSBsZGFwX2NvbmZpZ1snYmFzZV9k biddCisgICAgICAgICAgICBhcHBfY29uZmlnLkxEQVBfVVNFUk5BTUVfQVRUUklCVVRFID0gbGRh cF9jb25maWdbCisgICAgICAgICAgICAgICAgJ3VzZXJuYW1lX2F0ciddCisgICAgICAgICAgICBh cHBfY29uZmlnLkxEQVBfU0VBUkNIX0JBU0VfRE4gPSBsZGFwX2NvbmZpZ1sKKyAgICAgICAgICAg ICAgICAnc2VhcmNoX2Jhc2VfZG4nXQorICAgICAgICAgICAgYXBwX2NvbmZpZy5MREFQX1NFQVJD SF9GSUxURVIgPSBsZGFwX2NvbmZpZ1snc2VhcmNoX2ZpbHRlciddCisgICAgICAgICAgICBhcHBf Y29uZmlnLkxEQVBfVVNFX1NUQVJUVExTID0gbGRhcF9jb25maWdbJ3VzZV9zdGFydHRscyddCisg ICAgICAgICAgICBhcHBfY29uZmlnLkxEQVBfQ0FfQ0VSVF9GSUxFID0gbGRhcF9jb25maWdbJ2Nh X2NlcnRfZmlsZSddCisgICAgICAgICAgICBhcHBfY29uZmlnLkxEQVBfQ0VSVF9GSUxFID0gbGRh cF9jb25maWdbJ2NlcnRfZmlsZSddCisgICAgICAgICAgICBhcHBfY29uZmlnLkxEQVBfS0VZX0ZJ TEUgPSBsZGFwX2NvbmZpZ1sna2V5X2ZpbGUnXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAg c2VsZi5za2lwVGVzdCgKKyAgICAgICAgICAgICAgICAiTERBUCBjb25maWcgbm90IHNldC4iCisg ICAgICAgICAgICApCisKKyAgICBkZWYgcnVuVGVzdChzZWxmKToKKyAgICAgICAgIiIiVGhpcyBm dW5jdGlvbiBjaGVja3MgbG9naW4gZnVuY3Rpb25hbGl0eS4iIiIKKyAgICAgICAgdXNlcm5hbWUg PSBjb25maWdfZGF0YVsncGdBZG1pbjRfbGRhcF9jcmVkZW50aWFscyddWydsb2dpbl91c2VybmFt ZSddCisgICAgICAgIHBhc3N3b3JkID0gY29uZmlnX2RhdGFbJ3BnQWRtaW40X2xkYXBfY3JlZGVu dGlhbHMnXVsnbG9naW5fcGFzc3dvcmQnXQorCisgICAgICAgIHJlcyA9IHNlbGYudGVzdGVyLmxv Z2luKHVzZXJuYW1lLCBwYXNzd29yZCwgVHJ1ZSkKKworICAgICAgICByZXNwZGF0YSA9ICdHcmF2 YXRhciBpbWFnZSBmb3IgJXMnICVcCisgICAgICAgICAgICAgICAgICAgY29uZmlnX2RhdGFbJ3Bn QWRtaW40X2xkYXBfY3JlZGVudGlhbHMnXVsnbG9naW5fdXNlcm5hbWUnXQorICAgICAgICBzZWxm LmFzc2VydFRydWUocmVzcGRhdGEgaW4gcmVzLmRhdGEuZGVjb2RlKCd1dGY4JykpCisKKyAgICBk ZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIHNlbGYudGVzdGVyLmxvZ291dCgpCisKKyAgICBA Y2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICAiIiIKKyAg ICAgICAgV2UgbmVlZCB0byBhZ2FpbiBsb2dpbiB0aGUgdGVzdCBjbGllbnQgYXMgc29vbiBhcyB0 ZXN0IHNjZW5hcmlvcworICAgICAgICBmaW5pc2hlcy4KKyAgICAgICAgIiIiCisgICAgICAgIGNs cy50ZXN0ZXIubG9nb3V0KCkKKyAgICAgICAgYXBwX2NvbmZpZy5BVVRIRU5USUNBVElPTl9TT1VS Q0VTID0gWydpbnRlcm5hbCddCisgICAgICAgIHV0aWxzLmxvZ2luX3Rlc3Rlcl9hY2NvdW50KGNs cy50ZXN0ZXIpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3Rlc3RzL3Rlc3RfbGRh cF93aXRoX21vY2tpbmcucHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Rlc3RzL3Rlc3RfbGRhcF93 aXRoX21vY2tpbmcucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi4xYWE4 ZjdjMzMKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Rlc3RzL3Rlc3Rf bGRhcF93aXRoX21vY2tpbmcucHkKQEAgLTAsMCArMSw4NCBAQAorIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK KyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIw MTMgLSAyMDIwLCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUg aXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKKworaW1wb3J0IHN5cworaW1wb3J0IGNvbmZpZyBhcyBhcHBfY29uZmlnCitmcm9tIHBn YWRtaW4udXRpbHMucm91dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCitmcm9tIHJlZ3Jlc3Np b24ucHl0aG9uX3Rlc3RfdXRpbHMgaW1wb3J0IHRlc3RfdXRpbHMgYXMgdXRpbHMKK2Zyb20gcmVn cmVzc2lvbi50ZXN0X3NldHVwIGltcG9ydCBjb25maWdfZGF0YQorZnJvbSBwZ2FkbWluLmF1dGhl bnRpY2F0ZS5yZWdpc3RyeSBpbXBvcnQgQXV0aFNvdXJjZVJlZ2lzdHJ5CisKK2lmIHN5cy52ZXJz aW9uX2luZm8gPCAoMywgMyk6CisgICAgZnJvbSBtb2NrIGltcG9ydCBwYXRjaAorZWxzZToKKyAg ICBmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IHBhdGNoCisKKworY2xhc3MgTERBUExvZ2luTW9j a1Rlc3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9yKToKKyAgICAiIiIKKyAgICBUaGlzIGNsYXNzIGNo ZWNrcyBsZGFwIGxvZ2luIGZ1bmN0aW9uYWxpdHkgYnkgbW9ja2luZworICAgIGxkYXAgY29ubmVj dGlvbiBhbmQgbGRhcCBzZWFyY2ggZnVuY3Rpb25hbGl0eS4KKyAgICAiIiIKKworICAgIHNjZW5h cmlvcyA9IFsKKyAgICAgICAgKCdMREFQIEF1dGhlbnRpY2F0aW9uIHdpdGggQXV0byBDcmVhdGUg VXNlcicsIGRpY3QoCisgICAgICAgICAgICBhdXRoX3NvdXJjZT1bJ2xkYXAnXSwKKyAgICAgICAg ICAgIGF1dG9fY3JlYXRlX3VzZXI9VHJ1ZSwKKyAgICAgICAgICAgIHVzZXJuYW1lPSdsZGFwX3Vz ZXInLAorICAgICAgICAgICAgcGFzc3dvcmQ9J2xkYXBfcGFzcycpKSwKKyAgICAgICAgKCdMREFQ IEF1dGhlbnRpY2F0aW9uIHdpdGhvdXQgQXV0byBDcmVhdGUgVXNlcicsIGRpY3QoCisgICAgICAg ICAgICBhdXRoX3NvdXJjZT1bJ2xkYXAnXSwKKyAgICAgICAgICAgIGF1dG9fY3JlYXRlX3VzZXI9 RmFsc2UsCisgICAgICAgICAgICB1c2VybmFtZT0nbGRhcF91c2VyJywKKyAgICAgICAgICAgIHBh c3N3b3JkPSdsZGFwX3Bhc3MnKSksCisgICAgICAgICgnTERBUCArIEludGVybmFsIEF1dGhlbnRp Y2F0aW9uJywgZGljdCgKKyAgICAgICAgICAgIGF1dGhfc291cmNlPVsnbGRhcCcsICdpbnRlcm5h bCddLAorICAgICAgICAgICAgYXV0b19jcmVhdGVfdXNlcj1GYWxzZSwKKyAgICAgICAgICAgIHVz ZXJuYW1lPWNvbmZpZ19kYXRhWworICAgICAgICAgICAgICAgICdwZ0FkbWluNF9sb2dpbl9jcmVk ZW50aWFscyddWydsb2dpbl91c2VybmFtZSddLAorICAgICAgICAgICAgcGFzc3dvcmQ9Y29uZmln X2RhdGFbCisgICAgICAgICAgICAgICAgJ3BnQWRtaW40X2xvZ2luX2NyZWRlbnRpYWxzJ11bJ2xv Z2luX3Bhc3N3b3JkJ10KKyAgICAgICAgKSkKKyAgICBdCisKKyAgICBAY2xhc3NtZXRob2QKKyAg ICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICAiIiIKKyAgICAgICAgV2UgbmVlZCB0byBs b2dvdXQgdGhlIHRlc3QgY2xpZW50IGFzIHdlIGFyZSB0ZXN0aW5nCisgICAgICAgIGxkYXAgbG9n aW4gc2NlbmFyaW9zLgorICAgICAgICAiIiIKKyAgICAgICAgY2xzLnRlc3Rlci5sb2dvdXQoKQor CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBhcHBfY29uZmlnLkFVVEhFTlRJQ0FUSU9O X1NPVVJDRVMgPSBzZWxmLmF1dGhfc291cmNlCisgICAgICAgIGFwcF9jb25maWcuTERBUF9BVVRP X0NSRUFURV9VU0VSID0gc2VsZi5hdXRvX2NyZWF0ZV91c2VyCisKKyAgICBAcGF0Y2gub2JqZWN0 KEF1dGhTb3VyY2VSZWdpc3RyeS5yZWdpc3RyeVsnbGRhcCddLCAnY29ubmVjdCcsCisgICAgICAg ICAgICAgICAgICByZXR1cm5fdmFsdWU9W1RydWUsICJEb25lIl0pCisgICAgQHBhdGNoLm9iamVj dChBdXRoU291cmNlUmVnaXN0cnkucmVnaXN0cnlbJ2xkYXAnXSwgJ3NlYXJjaF9sZGFwX3VzZXIn LAorICAgICAgICAgICAgICAgICAgcmV0dXJuX3ZhbHVlPVtUcnVlLCAiRG9uZSJdKQorICAgIGRl ZiBydW5UZXN0KHNlbGYsIGNvbm5fbW9ja19vYmosIHNlYXJjaF9tb2NrX29iaik6CisgICAgICAg ICIiIlRoaXMgZnVuY3Rpb24gY2hlY2tzIGxkYXAgbG9naW4gZnVuY3Rpb25hbGl0eS4iIiIKKwor ICAgICAgICByZXMgPSBzZWxmLnRlc3Rlci5sb2dpbihzZWxmLnVzZXJuYW1lLCBzZWxmLnBhc3N3 b3JkLCBUcnVlKQorICAgICAgICByZXNwZGF0YSA9ICdHcmF2YXRhciBpbWFnZSBmb3IgJXMnICUg c2VsZi51c2VybmFtZQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmVzcGRhdGEgaW4gcmVzLmRh dGEuZGVjb2RlKCd1dGY4JykpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIHNl bGYudGVzdGVyLmxvZ291dCgpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25D bGFzcyhjbHMpOgorICAgICAgICAiIiIKKyAgICAgICAgV2UgbmVlZCB0byBhZ2FpbiBsb2dpbiB0 aGUgdGVzdCBjbGllbnQgYXMgc29vbiBhcyB0ZXN0IHNjZW5hcmlvcworICAgICAgICBmaW5pc2hl cy4KKyAgICAgICAgIiIiCisgICAgICAgIGNscy50ZXN0ZXIubG9nb3V0KCkKKyAgICAgICAgYXBw X2NvbmZpZy5BVVRIRU5USUNBVElPTl9TT1VSQ0VTID0gWydpbnRlcm5hbCddCisgICAgICAgIHV0 aWxzLmxvZ2luX3Rlc3Rlcl9hY2NvdW50KGNscy50ZXN0ZXIpCmRpZmYgLS1naXQgYS93ZWIvcGdh ZG1pbi9tb2RlbC9fX2luaXRfXy5weSBiL3dlYi9wZ2FkbWluL21vZGVsL19faW5pdF9fLnB5Cmlu ZGV4IGY1ODhlNDAxYy4uZTNhZjY2MGIwIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9tb2RlbC9f X2luaXRfXy5weQorKysgYi93ZWIvcGdhZG1pbi9tb2RlbC9fX2luaXRfXy5weQpAQCAtMjksNyAr MjksNyBAQCBmcm9tIGZsYXNrX3NxbGFsY2hlbXkgaW1wb3J0IFNRTEFsY2hlbXkKICMKICMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCiAKLVNDSEVNQV9WRVJTSU9OID0gMjQKK1NDSEVNQV9WRVJTSU9OID0gMjUK IAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKICMKQEAgLTY2LDEzICs2NiwxNSBAQCBjbGFzcyBVc2VyKGRi Lk1vZGVsLCBVc2VyTWl4aW4pOgogICAgICIiIkRlZmluZSBhIHVzZXIgb2JqZWN0IiIiCiAgICAg X190YWJsZW5hbWVfXyA9ICd1c2VyJwogICAgIGlkID0gZGIuQ29sdW1uKGRiLkludGVnZXIsIHBy aW1hcnlfa2V5PVRydWUpCi0gICAgZW1haWwgPSBkYi5Db2x1bW4oZGIuU3RyaW5nKDI1NiksIHVu aXF1ZT1UcnVlLCBudWxsYWJsZT1GYWxzZSkKKyAgICBlbWFpbCA9IGRiLkNvbHVtbihkYi5TdHJp bmcoMjU2KSwgbnVsbGFibGU9VHJ1ZSkKKyAgICB1c2VybmFtZSA9IGRiLkNvbHVtbihkYi5TdHJp bmcoNjQpLCB1bmlxdWU9VHJ1ZSwgbnVsbGFibGU9RmFsc2UpCiAgICAgcGFzc3dvcmQgPSBkYi5D b2x1bW4oZGIuU3RyaW5nKDI1NikpCiAgICAgYWN0aXZlID0gZGIuQ29sdW1uKGRiLkJvb2xlYW4o KSwgbnVsbGFibGU9RmFsc2UpCiAgICAgY29uZmlybWVkX2F0ID0gZGIuQ29sdW1uKGRiLkRhdGVU aW1lKCkpCiAgICAgbWFzdGVycGFzc19jaGVjayA9IGRiLkNvbHVtbihkYi5TdHJpbmcoMjU2KSkK ICAgICByb2xlcyA9IGRiLnJlbGF0aW9uc2hpcCgnUm9sZScsIHNlY29uZGFyeT1yb2xlc191c2Vy cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrcmVmPWRiLmJhY2tyZWYoJ3VzZXJz JywgbGF6eT0nZHluYW1pYycpKQorICAgIGF1dGhfc291cmNlID0gZGIuQ29sdW1uKGRiLlN0cmlu ZygxNiksIHVuaXF1ZT1UcnVlLCBudWxsYWJsZT1GYWxzZSkKIAogCiBjbGFzcyBTZXR0aW5nKGRi Lk1vZGVsKToKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3RlbXBsYXRlcy9zZWN1cml0eS9maWVs ZHMuaHRtbCBiL3dlYi9wZ2FkbWluL3RlbXBsYXRlcy9zZWN1cml0eS9maWVsZHMuaHRtbAppbmRl eCBlZmIxMjZiMmUuLmM1MDVkYTM2NiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdGVtcGxhdGVz L3NlY3VyaXR5L2ZpZWxkcy5odG1sCisrKyBiL3dlYi9wZ2FkbWluL3RlbXBsYXRlcy9zZWN1cml0 eS9maWVsZHMuaHRtbApAQCAtOSwzICs5LDE0IEBACiAgICAgeyUgZW5kaWYgJX0KIDwvZGl2Pgog eyUgZW5kbWFjcm8gJX0KK3slIG1hY3JvIHJlbmRlcl91c2VybmFtZV93aXRoX2Vycm9ycyhmaWVs ZCwgdHlwZSkgJX0KKzxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAgbWItMyB7JSBpZiBmaWVsZC5lcnJv cnMgJX0gaGFzLWVycm9yeyUgZW5kaWYgJX0iPgorICAgIDxpbnB1dCBjbGFzcz0iZm9ybS1jb250 cm9sIiBwbGFjZWhvbGRlcj0ie3sgZmllbGQubGFiZWwudGV4dCB9fSAvIFVzZXJuYW1lIiBuYW1l PSJ7eyBmaWVsZC5uYW1lIH19IgorICAgICAgICAgICB0eXBlPSJ7JSBpZiB0eXBlICV9e3sgdHlw ZSB9fXslIGVsc2UgJX17eyBmaWVsZC50eXBlIH19eyUgZW5kaWYgJX0iIGF1dG9mb2N1cz4KKyAg ICB7JSBpZiBmaWVsZC5lcnJvcnMgJX0KKyAgICB7JSBmb3IgZXJyb3IgaW4gZmllbGQuZXJyb3Jz ICV9CisgICAgPHNwYW4gY2xhc3M9ImZvcm0tdGV4dCI+e3sgZXJyb3IgfX08L3NwYW4+CisgICAg eyUgZW5kZm9yICV9CisgICAgeyUgZW5kaWYgJX0KKzwvZGl2PgoreyUgZW5kbWFjcm8gJX0KZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3RlbXBsYXRlcy9zZWN1cml0eS9sb2dpbl91c2VyLmh0bWwg Yi93ZWIvcGdhZG1pbi90ZW1wbGF0ZXMvc2VjdXJpdHkvbG9naW5fdXNlci5odG1sCmluZGV4IDc1 MTVjMmMyYS4uMmU5MmQ3YjEyIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90ZW1wbGF0ZXMvc2Vj dXJpdHkvbG9naW5fdXNlci5odG1sCisrKyBiL3dlYi9wZ2FkbWluL3RlbXBsYXRlcy9zZWN1cml0 eS9sb2dpbl91c2VyLmh0bWwKQEAgLTcsMTAgKzcsMTAgQEAKIHslIGJsb2NrIHBhbmVsX3RpdGxl ICV9e3sgXygnTG9naW4nKSB9fXslIGVuZGJsb2NrICV9CiB7JSBibG9jayBwYW5lbF9ib2R5ICV9 CiB7JSBpZiBjb25maWcuU0VSVkVSX01PREUgJX0KLTxmb3JtIGFjdGlvbj0ie3sgdXJsX2Zvcl9z ZWN1cml0eSgnbG9naW4nKSB9fSIgbWV0aG9kPSJQT1NUIiBuYW1lPSJsb2dpbl91c2VyX2Zvcm0i PgorPGZvcm0gYWN0aW9uPSJ7eyB1cmxfZm9yKCdhdXRoZW50aWNhdGUubG9naW4nKSB9fSIgbWV0 aG9kPSJQT1NUIiBuYW1lPSJsb2dpbl91c2VyX2Zvcm0iPgogICAgIHt7IGxvZ2luX3VzZXJfZm9y bS5oaWRkZW5fdGFnKCkgfX0KICAgICB7JSBzZXQgdXNlcl9sYW5ndWFnZSA9IHJlcXVlc3QuY29v a2llcy5nZXQoJ1BHQURNSU5fTEFOR1VBR0UnKSBvciAnZW4nICV9Ci0gICAge3sgcmVuZGVyX2Zp ZWxkX3dpdGhfZXJyb3JzKGxvZ2luX3VzZXJfZm9ybS5lbWFpbCwgInRleHQiKSB9fQorICAgIHt7 IHJlbmRlcl91c2VybmFtZV93aXRoX2Vycm9ycyhsb2dpbl91c2VyX2Zvcm0uZW1haWwsICJ0ZXh0 IikgfX0KICAgICB7eyByZW5kZXJfZmllbGRfd2l0aF9lcnJvcnMobG9naW5fdXNlcl9mb3JtLnBh c3N3b3JkLCAicGFzc3dvcmQiKSB9fQogICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tcHJpbWFy eSBidG4tYmxvY2sgYnRuLWxvZ2luIiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJ7eyBfKCdMb2dpbicp IH19Ij57eyBfKCdMb2dpbicpIH19PC9idXR0b24+CiAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91 cCByb3cgbWItMyBjIHVzZXItbGFuZ3VhZ2UiPgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdGVt cGxhdGVzL3NlY3VyaXR5L3BhbmVsLmh0bWwgYi93ZWIvcGdhZG1pbi90ZW1wbGF0ZXMvc2VjdXJp dHkvcGFuZWwuaHRtbAppbmRleCA3ZGUxZDlkOTAuLjE0NTJkZThjYSAxMDA2NDQKLS0tIGEvd2Vi L3BnYWRtaW4vdGVtcGxhdGVzL3NlY3VyaXR5L3BhbmVsLmh0bWwKKysrIGIvd2ViL3BnYWRtaW4v dGVtcGxhdGVzL3NlY3VyaXR5L3BhbmVsLmh0bWwKQEAgLTEsNSArMSw1IEBACiB7JSBleHRlbmRz ICJiYXNlLmh0bWwiICV9Ci17JSBmcm9tICJzZWN1cml0eS9maWVsZHMuaHRtbCIgaW1wb3J0IHJl bmRlcl9maWVsZF93aXRoX2Vycm9ycyAlfQoreyUgZnJvbSAic2VjdXJpdHkvZmllbGRzLmh0bWwi IGltcG9ydCByZW5kZXJfZmllbGRfd2l0aF9lcnJvcnMsIHJlbmRlcl91c2VybmFtZV93aXRoX2Vy cm9ycyAlfQogeyUgYmxvY2sgYm9keSAlfQogPGRpdiBjbGFzcz0iY29udGFpbmVyLWZsdWlkIGgt MTAwIGxvZ2luX3BhZ2UiPgogICAgIHslIGlmIGNvbmZpZy5MT0dJTl9CQU5ORVIgaXMgZGVmaW5l ZCBhbmQgY29uZmlnLkxPR0lOX0JBTk5FUiAhPSAiIiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vdG9vbHMvdXNlcl9tYW5hZ2VtZW50L19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMv dXNlcl9tYW5hZ2VtZW50L19faW5pdF9fLnB5CmluZGV4IDU1MzY1MTczZi4uODczZThjNjU4IDEw MDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy91c2VyX21hbmFnZW1lbnQvX19pbml0X18ucHkK KysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvdXNlcl9tYW5hZ2VtZW50L19faW5pdF9fLnB5CkBAIC0x NzYsMTMgKzE3NiwyMCBAQCBkZWYgdXNlcih1aWQpOgogCiAgICAgIiIiCiAKKyAgICBhdXRoX29u bHlfaW50ZXJuYWwgPSBGYWxzZQorICAgIGlmIGN1cnJlbnRfYXBwLlBHQURNSU5fREVGQVVMVF9B VVRIX1NPVVJDRSA9PSBcCisgICAgICAgICAgICBjdXJyZW50X2FwcC5QR0FETUlOX0VYVEVSTkFM X0FVVEhfU09VUkNFOgorICAgICAgICBhdXRoX29ubHlfaW50ZXJuYWwgPSBUcnVlCisKICAgICBp ZiB1aWQ6CiAgICAgICAgIHUgPSBVc2VyLnF1ZXJ5LmdldCh1aWQpCiAKICAgICAgICAgcmVzID0g eydpZCc6IHUuaWQsCisgICAgICAgICAgICAgICAndXNlcm5hbWUnOiB1LnVzZXJuYW1lLAogICAg ICAgICAgICAgICAgJ2VtYWlsJzogdS5lbWFpbCwKICAgICAgICAgICAgICAgICdhY3RpdmUnOiB1 LmFjdGl2ZSwKLSAgICAgICAgICAgICAgICdyb2xlJzogdS5yb2xlc1swXS5pZAorICAgICAgICAg ICAgICAgJ3JvbGUnOiB1LnJvbGVzWzBdLmlkLAorICAgICAgICAgICAgICAgJ2F1dGhfb25seV9p bnRlcm5hbCc6IGF1dGhfb25seV9pbnRlcm5hbCwKICAgICAgICAgICAgICAgIH0KICAgICBlbHNl OgogICAgICAgICB1c2VycyA9IFVzZXIucXVlcnkuYWxsKCkKQEAgLTE5MCw5ICsxOTcsMTEgQEAg ZGVmIHVzZXIodWlkKToKICAgICAgICAgdXNlcnNfZGF0YSA9IFtdCiAgICAgICAgIGZvciB1IGlu IHVzZXJzOgogICAgICAgICAgICAgdXNlcnNfZGF0YS5hcHBlbmQoeydpZCc6IHUuaWQsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZXJuYW1lJzogdS51c2VybmFtZSwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAnZW1haWwnOiB1LmVtYWlsLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICdhY3RpdmUnOiB1LmFjdGl2ZSwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAncm9sZSc6IHUucm9sZXNbMF0uaWQKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAncm9sZSc6IHUucm9sZXNbMF0uaWQsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJ2F1dGhfb25seV9pbnRlcm5hbCc6IGF1dGhfb25seV9pbnRlcm5hbCwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogCiAgICAgICAgIHJlcyA9IHVzZXJzX2RhdGEK QEAgLTIxNSwxMSArMjI0LDMxIEBAIGRlZiBjcmVhdGUoKToKICAgICAgICAgcmVxdWVzdC5kYXRh LCBlbmNvZGluZz0ndXRmLTgnCiAgICAgKQogCi0gICAgZm9yIGYgaW4gKCdlbWFpbCcsICdyb2xl JywgJ2FjdGl2ZScsICduZXdQYXNzd29yZCcsICdjb25maXJtUGFzc3dvcmQnKToKKyAgICBzdGF0 dXMsIHJlcyA9IGNyZWF0ZV91c2VyKGRhdGEpCisKKyAgICBpZiBub3Qgc3RhdHVzOgorICAgICAg ICBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgcmV0dXJuIGFqYXhf cmVzcG9uc2UoCisgICAgICAgIHJlc3BvbnNlPXJlcywKKyAgICAgICAgc3RhdHVzPTIwMAorICAg ICkKKworCitkZWYgY3JlYXRlX3VzZXIoZGF0YSk6CisgICAgaWYgY3VycmVudF9hcHAuUEdBRE1J Tl9ERUZBVUxUX0FVVEhfU09VUkNFID09IFwKKyAgICAgICAgICAgIGN1cnJlbnRfYXBwLlBHQURN SU5fRVhURVJOQUxfQVVUSF9TT1VSQ0U6CisgICAgICAgIHJlcV9wYXJhbXMgPSAoJ2VtYWlsJywg J3JvbGUnLCAnYWN0aXZlJywgJ25ld1Bhc3N3b3JkJywKKyAgICAgICAgICAgICAgICAgICAgICAn Y29uZmlybVBhc3N3b3JkJykKKyAgICBlbHNlOgorICAgICAgICByZXFfcGFyYW1zID0gKCd1c2Vy bmFtZScsICdyb2xlJywgJ2FjdGl2ZScsICduZXdQYXNzd29yZCcsCisgICAgICAgICAgICAgICAg ICAgICAgJ2NvbmZpcm1QYXNzd29yZCcpCisKKyAgICBmb3IgZiBpbiByZXFfcGFyYW1zOgogICAg ICAgICBpZiBmIGluIGRhdGEgYW5kIGRhdGFbZl0gIT0gJyc6CiAgICAgICAgICAgICBjb250aW51 ZQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIGJhZF9yZXF1ZXN0KGVycm9ybXNn PV8oIk1pc3NpbmcgZmllbGQ6ICd7MH0nIi5mb3JtYXQoZikpKQorICAgICAgICAgICAgcmV0dXJu IEZhbHNlLCBfKCJNaXNzaW5nIGZpZWxkOiAnezB9JyIuZm9ybWF0KGYpKQogCiAgICAgdHJ5Ogog ICAgICAgICBuZXdfZGF0YSA9IHZhbGlkYXRlX3VzZXIoZGF0YSkKQEAgLTIyOCwxMyArMjU3LDIz IEBAIGRlZiBjcmVhdGUoKToKICAgICAgICAgICAgIG5ld19kYXRhWydyb2xlcyddID0gW1JvbGUu cXVlcnkuZ2V0KG5ld19kYXRhWydyb2xlcyddKV0KIAogICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMg ZToKLSAgICAgICAgcmV0dXJuIGJhZF9yZXF1ZXN0KGVycm9ybXNnPV8oc3RyKGUpKSkKKyAgICAg ICAgcmV0dXJuIEZhbHNlLCBzdHIoZSkKIAogICAgIHRyeToKLSAgICAgICAgdXNyID0gVXNlcihl bWFpbD1uZXdfZGF0YVsnZW1haWwnXSwKKyAgICAgICAgaWYgY3VycmVudF9hcHAuUEdBRE1JTl9E RUZBVUxUX0FVVEhfU09VUkNFID09IFwKKyAgICAgICAgICAgICAgICBjdXJyZW50X2FwcC5QR0FE TUlOX0VYVEVSTkFMX0FVVEhfU09VUkNFOgorICAgICAgICAgICAgdXNlcm5hbWUgPSBuZXdfZGF0 YVsnZW1haWwnXQorICAgICAgICAgICAgZW1haWwgPSBuZXdfZGF0YVsnZW1haWwnXQorICAgICAg ICBlbHNlOgorICAgICAgICAgICAgdXNlcm5hbWUgPSBkYXRhWyd1c2VybmFtZSddCisgICAgICAg ICAgICBlbWFpbCA9IGdldGF0dHIobmV3X2RhdGEsICdlbWFpbCcsICcnKQorCisgICAgICAgIHVz ciA9IFVzZXIodXNlcm5hbWU9dXNlcm5hbWUsCisgICAgICAgICAgICAgICAgICAgZW1haWw9ZW1h aWwsCiAgICAgICAgICAgICAgICAgICAgcm9sZXM9bmV3X2RhdGFbJ3JvbGVzJ10sCiAgICAgICAg ICAgICAgICAgICAgYWN0aXZlPW5ld19kYXRhWydhY3RpdmUnXSwKLSAgICAgICAgICAgICAgICAg ICBwYXNzd29yZD1uZXdfZGF0YVsncGFzc3dvcmQnXSkKKyAgICAgICAgICAgICAgICAgICBwYXNz d29yZD1uZXdfZGF0YVsncGFzc3dvcmQnXSwKKyAgICAgICAgICAgICAgICAgICBhdXRoX3NvdXJj ZT1jdXJyZW50X2FwcC5QR0FETUlOX0VYVEVSTkFMX0FVVEhfU09VUkNFKQogICAgICAgICBkYi5z ZXNzaW9uLmFkZCh1c3IpCiAgICAgICAgIGRiLnNlc3Npb24uY29tbWl0KCkKICAgICAgICAgIyBB ZGQgZGVmYXVsdCBzZXJ2ZXIgZ3JvdXAgZm9yIG5ldyB1c2VyLgpAQCAtMjQyLDE4ICsyODEsMTUg QEAgZGVmIGNyZWF0ZSgpOgogICAgICAgICBkYi5zZXNzaW9uLmFkZChzZXJ2ZXJfZ3JvdXApCiAg ICAgICAgIGRiLnNlc3Npb24uY29tbWl0KCkKICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0g ICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorICAg ICAgICByZXR1cm4gRmFsc2UsIHN0cihlKQogCi0gICAgcmVzID0geydpZCc6IHVzci5pZCwKLSAg ICAgICAgICAgJ2VtYWlsJzogdXNyLmVtYWlsLAotICAgICAgICAgICAnYWN0aXZlJzogdXNyLmFj dGl2ZSwKLSAgICAgICAgICAgJ3JvbGUnOiB1c3Iucm9sZXNbMF0uaWQKLSAgICAgICAgICAgfQot Ci0gICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UoCi0gICAgICAgIHJlc3BvbnNlPXJlcywKLSAgICAg ICAgc3RhdHVzPTIwMAotICAgICkKKyAgICByZXR1cm4gVHJ1ZSwgeworICAgICAgICAnaWQnOiB1 c3IuaWQsCisgICAgICAgICd1c2VybmFtZSc6IHVzci51c2VybmFtZSwKKyAgICAgICAgJ2VtYWls JzogdXNyLmVtYWlsLAorICAgICAgICAnYWN0aXZlJzogdXNyLmFjdGl2ZSwKKyAgICAgICAgJ3Jv bGUnOiB1c3Iucm9sZXNbMF0uaWQKKyAgICB9CiAKIAogQGJsdWVwcmludC5yb3V0ZSgKQEAgLTMz Nyw2ICszNzMsNyBAQCBkZWYgdXBkYXRlKHVpZCk6CiAgICAgICAgIGRiLnNlc3Npb24uY29tbWl0 KCkKIAogICAgICAgICByZXMgPSB7J2lkJzogdXNyLmlkLAorICAgICAgICAgICAgICAgJ3VzZXJu YW1lJzogdXNyLnVzZXJuYW1lLAogICAgICAgICAgICAgICAgJ2VtYWlsJzogdXNyLmVtYWlsLAog ICAgICAgICAgICAgICAgJ2FjdGl2ZSc6IHVzci5hY3RpdmUsCiAgICAgICAgICAgICAgICAncm9s ZSc6IHVzci5yb2xlc1swXS5pZApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvdXNlcl9t YW5hZ2VtZW50L3N0YXRpYy9qcy91c2VyX21hbmFnZW1lbnQuanMgYi93ZWIvcGdhZG1pbi90b29s cy91c2VyX21hbmFnZW1lbnQvc3RhdGljL2pzL3VzZXJfbWFuYWdlbWVudC5qcwppbmRleCAyYjFl ZDE3MjcuLmY2Y2I5NjY5MiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMvdXNlcl9tYW5h Z2VtZW50L3N0YXRpYy9qcy91c2VyX21hbmFnZW1lbnQuanMKKysrIGIvd2ViL3BnYWRtaW4vdG9v bHMvdXNlcl9tYW5hZ2VtZW50L3N0YXRpYy9qcy91c2VyX21hbmFnZW1lbnQuanMKQEAgLTI0Miwx MyArMjQyLDI3IEBAIGRlZmluZShbCiAgICAgICAgICAgdXJsUm9vdDogVVNFUlVSTCwKICAgICAg ICAgICBkZWZhdWx0czogewogICAgICAgICAgICAgaWQ6IHVuZGVmaW5lZCwKKyAgICAgICAgICAg IHVzZXJuYW1lOiB1bmRlZmluZWQsCiAgICAgICAgICAgICBlbWFpbDogdW5kZWZpbmVkLAogICAg ICAgICAgICAgYWN0aXZlOiB0cnVlLAogICAgICAgICAgICAgcm9sZTogdW5kZWZpbmVkLAogICAg ICAgICAgICAgbmV3UGFzc3dvcmQ6IHVuZGVmaW5lZCwKICAgICAgICAgICAgIGNvbmZpcm1QYXNz d29yZDogdW5kZWZpbmVkLAorICAgICAgICAgICAgYXV0aF9vbmx5X2ludGVybmFsOiB0cnVlLAog ICAgICAgICAgIH0sCiAgICAgICAgICAgc2NoZW1hOiBbeworICAgICAgICAgICAgaWQ6ICd1c2Vy bmFtZScsCisgICAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnVXNlcm5hbWUnKSwKKyAgICAgICAg ICAgIHR5cGU6ICd0ZXh0JywKKyAgICAgICAgICAgIGNlbGw6IEJhY2tncmlkLkV4dGVuc2lvbi5T dHJpbmdEZXBDZWxsLAorICAgICAgICAgICAgY2VsbEhlYWRlckNsYXNzZXM6ICd3aWR0aF9wZXJj ZW50XzMwJywKKyAgICAgICAgICAgIGRlcHM6IFsnaWQnXSwKKyAgICAgICAgICAgIHZpc2libGU6 IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgICAgaWYgKG0uZ2V0KCdhdXRoX29ubHlfaW50ZXJu YWwnKSkgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg ICAgIH0sCisgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsCisgICAgICAgICAgfSx7CiAgICAg ICAgICAgICBpZDogJ2VtYWlsJywKICAgICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdFbWFpbCcp LAogICAgICAgICAgICAgdHlwZTogJ3RleHQnLApAQCAtMjU2LDYgKzI3MCw4IEBAIGRlZmluZShb CiAgICAgICAgICAgICBjZWxsSGVhZGVyQ2xhc3NlczogJ3dpZHRoX3BlcmNlbnRfMzAnLAogICAg ICAgICAgICAgZGVwczogWydpZCddLAogICAgICAgICAgICAgZWRpdGFibGU6IGZ1bmN0aW9uKG0p IHsKKyAgICAgICAgICAgICAgaWYgKCFtLmdldCgnYXV0aF9vbmx5X2ludGVybmFsJykpIHJldHVy biB0cnVlOworCiAgICAgICAgICAgICAgIGlmIChtIGluc3RhbmNlb2YgQmFja2JvbmUuQ29sbGVj dGlvbikgewogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgfQpA QCAtMzQ0LDcgKzM2MCw3IEBAIGRlZmluZShbCiAgICAgICAgICAgICAgIGNoYW5nZWRBdHRycyA9 IHRoaXMuY2hhbmdlZCB8fCB7fSwKICAgICAgICAgICAgICAgZW1haWxfZmlsdGVyID0gL15bYS16 QS1aMC05LiEjJCUmJyorXC89P15fYHt8fX4tXStAW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17 MCw2MX1bYS16QS1aMC05XSk/KD86XC5bYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVth LXpBLVowLTldKT8pKiQvOwogCi0gICAgICAgICAgICBpZiAoKCdlbWFpbCcgaW4gY2hhbmdlZEF0 dHJzIHx8ICF0aGlzLmlzTmV3KCkpICYmIChfLmlzVW5kZWZpbmVkKHRoaXMuZ2V0KCdlbWFpbCcp KSB8fAorICAgICAgICAgICAgaWYgKHRoaXMuZ2V0KCdhdXRoX29ubHlfaW50ZXJuYWwnKSA9PT0g dHJ1ZSAmJiAoJ2VtYWlsJyBpbiBjaGFuZ2VkQXR0cnMgfHwgIXRoaXMuaXNOZXcoKSkgJiYgKF8u aXNVbmRlZmluZWQodGhpcy5nZXQoJ2VtYWlsJykpIHx8CiAgICAgICAgICAgICAgICAgXy5pc051 bGwodGhpcy5nZXQoJ2VtYWlsJykpIHx8CiAgICAgICAgICAgICAgICAgU3RyaW5nKHRoaXMuZ2V0 KCdlbWFpbCcpKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpID09ICcnKSkgewogICAgICAgICAg ICAgICBlcnJtc2cgPSBnZXR0ZXh0KCdFbWFpbCBhZGRyZXNzIGNhbm5vdCBiZSBlbXB0eS4nKTsK ZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL3B5dGhvbl90ZXN0X3V0aWxzL2NzcmZfdGVzdF9j bGllbnQucHkgYi93ZWIvcmVncmVzc2lvbi9weXRob25fdGVzdF91dGlscy9jc3JmX3Rlc3RfY2xp ZW50LnB5CmluZGV4IGJiM2Y3ZGE3MC4uNDJhZTUxMGI1IDEwMDY0NAotLS0gYS93ZWIvcmVncmVz c2lvbi9weXRob25fdGVzdF91dGlscy9jc3JmX3Rlc3RfY2xpZW50LnB5CisrKyBiL3dlYi9yZWdy ZXNzaW9uL3B5dGhvbl90ZXN0X3V0aWxzL2NzcmZfdGVzdF9jbGllbnQucHkKQEAgLTEwOSw3ICsx MDksNyBAQCBjbGFzcyBUZXN0Q2xpZW50KHRlc3RpbmcuRmxhc2tDbGllbnQpOgogICAgICAgICAg ICAgY3NyZl90b2tlbiA9IHNlbGYuZ2VuZXJhdGVfY3NyZl90b2tlbigpCiAKICAgICAgICAgcmVz ID0gc2VsZi5wb3N0KAotICAgICAgICAgICAgJy9sb2dpbicsIGRhdGE9ZGljdCgKKyAgICAgICAg ICAgICcvYXV0aGVudGljYXRlL2xvZ2luJywgZGF0YT1kaWN0KAogICAgICAgICAgICAgICAgIGVt YWlsPWVtYWlsLCBwYXNzd29yZD1wYXNzd29yZCwKICAgICAgICAgICAgICAgICBjc3JmX3Rva2Vu PWNzcmZfdG9rZW4sCiAgICAgICAgICAgICApLApAQCAtMTIwLDUgKzEyMCw1IEBAIGNsYXNzIFRl c3RDbGllbnQodGVzdGluZy5GbGFza0NsaWVudCk6CiAgICAgICAgIHJldHVybiByZXMKIAogICAg IGRlZiBsb2dvdXQoc2VsZik6Ci0gICAgICAgIHJlcyA9IHNlbGYuZ2V0KCcvbG9nb3V0JywgZm9s bG93X3JlZGlyZWN0cz1GYWxzZSkKKyAgICAgICAgcmVzID0gc2VsZi5nZXQoJy9sb2dvdXQ/bmV4 dD0vYnJvd3Nlci8nLCBmb2xsb3dfcmVkaXJlY3RzPUZhbHNlKQogICAgICAgICBzZWxmLmNzcmZf dG9rZW4gPSBOb25lCmRpZmYgLS1naXQgYS93ZWIvcmVncmVzc2lvbi9ydW50ZXN0cy5weSBiL3dl Yi9yZWdyZXNzaW9uL3J1bnRlc3RzLnB5CmluZGV4IGVmNWI0NjMyOC4uZmNmNzNhODg2IDEwMDY0 NAotLS0gYS93ZWIvcmVncmVzc2lvbi9ydW50ZXN0cy5weQorKysgYi93ZWIvcmVncmVzc2lvbi9y dW50ZXN0cy5weQpAQCAtMTE4LDYgKzExOCwxMSBAQCBhcHAuUEdBRE1JTl9SVU5USU1FID0gVHJ1 ZQogaWYgY29uZmlnLlNFUlZFUl9NT0RFIGlzIFRydWU6CiAgICAgYXBwLlBHQURNSU5fUlVOVElN RSA9IEZhbHNlCiBhcHAuY29uZmlnWydXVEZfQ1NSRl9FTkFCTEVEJ10gPSBUcnVlCisKKyMgQXV0 aGVudGljYXRpb24gc291cmNlcworYXBwLlBHQURNSU5fREVGQVVMVF9BVVRIX1NPVVJDRSA9ICdp bnRlcm5hbCcKK2FwcC5QR0FETUlOX0VYVEVSTkFMX0FVVEhfU09VUkNFID0gJ2xkYXAnCisKIGFw cC50ZXN0X2NsaWVudF9jbGFzcyA9IFRlc3RDbGllbnQKIHRlc3RfY2xpZW50ID0gYXBwLnRlc3Rf Y2xpZW50KCkKIHRlc3RfY2xpZW50LnNldEFwcChhcHApCkBAIC0xOTUsNiArMjAwLDggQEAgZGVm IGdldF90ZXN0X21vZHVsZXMoYXJndW1lbnRzKToKICAgICAgICAgICAgICJicm93c2VyLnRlc3Rz LnRlc3RfbG9naW4iLAogICAgICAgICAgICAgImJyb3dzZXIudGVzdHMudGVzdF9sb2dvdXQiLAog ICAgICAgICAgICAgImJyb3dzZXIudGVzdHMudGVzdF9yZXNldF9wYXNzd29yZCIsCisgICAgICAg ICAgICAiYnJvd3Nlci50ZXN0cy50ZXN0X2xkYXBfbG9naW4iLAorICAgICAgICAgICAgImJyb3dz ZXIudGVzdHMudGVzdF9sZGFwX3dpdGhfbW9ja2luZyIsCiAgICAgICAgIF0pCiAgICAgaWYgYXJn dW1lbnRzWydleGNsdWRlJ10gaXMgbm90IE5vbmU6CiAgICAgICAgIGV4Y2x1ZGVfcGtncyArPSBh cmd1bWVudHNbJ2V4Y2x1ZGUnXS5zcGxpdCgnLCcpCmRpZmYgLS1naXQgYS93ZWIvcmVncmVzc2lv bi90ZXN0X2NvbmZpZy5qc29uLmluIGIvd2ViL3JlZ3Jlc3Npb24vdGVzdF9jb25maWcuanNvbi5p bgppbmRleCAxNWIxMzNhMTkuLjBhMTUxZTYzMyAxMDA2NDQKLS0tIGEvd2ViL3JlZ3Jlc3Npb24v dGVzdF9jb25maWcuanNvbi5pbgorKysgYi93ZWIvcmVncmVzc2lvbi90ZXN0X2NvbmZpZy5qc29u LmluCkBAIC0xMSw2ICsxMSw0OSBAQAogICAgICJsb2dpbl9wYXNzd29yZCI6ICJQQVNTV09SRCIs CiAgICAgImxvZ2luX3VzZXJuYW1lIjogIlVTRVJARVhBTVBMRS5DT00iCiAgIH0sCisgICJwZ0Fk bWluNF9sZGFwX2NyZWRlbnRpYWxzIjogeworICAgICJsb2dpbl9wYXNzd29yZCI6ICJQQVNTV09S RCIsCisgICAgImxvZ2luX3VzZXJuYW1lIjogIlVTRVJOQU1FIgorICB9LAorICAibGRhcF9jb25m aWciOiBbCisgICAgeworICAgICJsZGFwIjogeworICAgICAgIm5hbWUiOiAiTGRhcCBzY2VuYXJp byBuYW1lIgorICAgICAgInVyaSI6ICJsZGFwOi8vSVAtQUREUkVTUy9IT1NUTkFNRTozODkiLAor ICAgICAgImJhc2VfZG4iOiAiQkFTRS1ETiIsCisgICAgICAic2VhcmNoX2Jhc2VfZG4iOiAiU0VB UkNILUJBU0UtRE4iLAorICAgICAgInVzZXJuYW1lX2F0ciI6ICJVSUQiLAorICAgICAgInNlYXJj aF9maWx0ZXIiOiAiKG9iamVjdGNsYXNzPSopIiwKKyAgICAgICJ1c2Vfc3RhcnR0bHMiOiBmYWxz ZSwKKyAgICAgICJjYV9jZXJ0X2ZpbGUiOiAiIiwKKyAgICAgICJjZXJ0X2ZpbGUiOiAiIiwKKyAg ICAgICJrZXlfZmlsZSI6ICIiCisgICAgfSwKKyAgICAibGRhcF93aXRoX3NzbCI6IHsKKyAgICAg ICJuYW1lIjogIkxkYXAgc2NlbmFyaW8gbmFtZSIKKyAgICAgICJ1cmkiOiAibGRhcHM6Ly9JUC1B RERSRVNTL0hPU1ROQU1FOjYzNiIsCisgICAgICAiYmFzZV9kbiI6ICJCQVNFLUROIiwKKyAgICAg ICJzZWFyY2hfYmFzZV9kbiI6ICJTRUFSQ0gtQkFTRS1ETiIsCisgICAgICAidXNlcm5hbWVfYXRy IjogIlVJRCIsCisgICAgICAic2VhcmNoX2ZpbHRlciI6ICIob2JqZWN0Y2xhc3M9KikiLAorICAg ICAgInVzZV9zdGFydHRscyI6IGZhbHNlLAorICAgICAgImNhX2NlcnRfZmlsZSI6ICIiLAorICAg ICAgImNlcnRfZmlsZSI6ICIiLAorICAgICAgImtleV9maWxlIjogIiIKKyAgICB9LAorICAgICJs ZGFwX3dpdGhfdGxzIjogeworICAgICAgIm5hbWUiOiAiTGRhcCBzY2VuYXJpbyBuYW1lIgorICAg ICAgInVyaSI6ICJsZGFwOi8vSVAtQUREUkVTUy9IT1NUTkFNRTozODkiLAorICAgICAgImJhc2Vf ZG4iOiAiQkFTRS1ETiIsCisgICAgICAic2VhcmNoX2Jhc2VfZG4iOiAiU0VBUkNILUJBU0UtRE4i LAorICAgICAgInVzZXJuYW1lX2F0ciI6ICJVSUQiLAorICAgICAgInNlYXJjaF9maWx0ZXIiOiAi KG9iamVjdGNsYXNzPSopIiwKKyAgICAgICJ1c2Vfc3RhcnR0bHMiOiB0cnVlLAorICAgICAgImNh X2NlcnRfZmlsZSI6ICIiLAorICAgICAgImNlcnRfZmlsZSI6ICIiLAorICAgICAgImtleV9maWxl IjogIiIKKyAgICB9CisgIH1dLAogICAic2VydmVyX2dyb3VwIjogMSwKICAgInNlcnZlcl9jcmVk ZW50aWFscyI6IFsKICAgICB7Cg== --0000000000008d127105a196ad3c--