Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bn1tO-00049R-IG for pgadmin-hackers@arkaria.postgresql.org; Thu, 22 Sep 2016 11:10:14 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1bn1tO-0006B6-3H for pgadmin-hackers@arkaria.postgresql.org; Thu, 22 Sep 2016 11:10:14 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1bn1t1-0005tY-JY for pgadmin-hackers@postgresql.org; Thu, 22 Sep 2016 11:09:52 +0000 Received: from mail-io0-x22c.google.com ([2607:f8b0:4001:c06::22c]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1bn1sy-00085f-BO for pgadmin-hackers@postgresql.org; Thu, 22 Sep 2016 11:09:50 +0000 Received: by mail-io0-x22c.google.com with SMTP id m79so81962859ioo.3 for ; Thu, 22 Sep 2016 04:09:48 -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; bh=8imMxzYNUImwFYL7MpN2aFmsy1Ur39O+mAOGYx8zdrg=; b=ylDbNuBRJMoHRsSdZdmkW9s714bBhfalpf4mPDXw5//vRifonBxhYXxjZZIIdyTD96 fkuhnwgxrsVRwGFt5Vy1mFwwtKy/hHD2SS715DekeJso3kM/shybSPgh0onzW46X44KK 1B0ug8VSm7Q5wYP7bEFl5mji7dZpYMoAhEg3PzE0oxKSkKmmbLPz3U7wMds2ck1GqQ75 6utEYky1C+PyP8wI/iEa+DfynCVT3qcu1emwEa3Dox0Bs0hAajKVSfoUsvmxXlUR1ItR 1PeB606dAkKlZAqjx1pTcdFxsexwvue1pqTTcfM3fNTqUj0DOh+lQLhinHB/0/m/gnOg /dkQ== 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; bh=8imMxzYNUImwFYL7MpN2aFmsy1Ur39O+mAOGYx8zdrg=; b=GqqXspv9CSx41jom6ZU2P7nJmcGEJXivgigdWsajQktckfrFsOPOF62/PTBCfp/kjH /34ZfEIIvYk/e+dE7qb+i7x0H0RtE5tEdG/XW+gNL8TtiV3V2cMd7PWRufdR0Wdfrx5T 5G60Sb14OgG6miUlTihJHjLhbomTR5Og/n34g1wIHoalheIDdhgZX6LXH4llvjVGpRGr +ic9P9HnL3Tw4pbV3lJ3/qR7966+Z5YRfsBOB3VQWZ7i7ej6fu2KQvQplTvk3zFZrhqp loARUxrHbabmQMx2Hw7g3Q9ypdThE72Sh2v83KXyTMuvoJ+Kt9AxeHCCByC/PmSuopJW 3tiQ== X-Gm-Message-State: AE9vXwNKY19AbWYm1XyamgmAecYwPtCCMpdqxT/5CsUKS/5xiqBezEPP7yedjoAkQKX72kC5rzhicwTv93Br3Y5p X-Received: by 10.107.139.214 with SMTP id n205mr2300577iod.40.1474542587036; Thu, 22 Sep 2016 04:09:47 -0700 (PDT) MIME-Version: 1.0 Received: by 10.107.50.212 with HTTP; Thu, 22 Sep 2016 04:09:26 -0700 (PDT) In-Reply-To: References: From: Ashesh Vashi Date: Thu, 22 Sep 2016 16:39:26 +0530 Message-ID: Subject: Re: PATCH: pgAgent support To: pgadmin-hackers Content-Type: multipart/mixed; boundary=94eb2c05b6021c534f053d16b376 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 --94eb2c05b6021c534f053d16b376 Content-Type: multipart/alternative; boundary=94eb2c05b6021c534a053d16b374 --94eb2c05b6021c534a053d16b374 Content-Type: text/plain; charset=UTF-8 Please use this patch for pgagent. NOTE: misc_changes patch is required for pgagent changes. -- Thanks & Regards, Ashesh Vashi EnterpriseDB INDIA: Enterprise PostgreSQL Company *http://www.linkedin.com/in/asheshvashi* On Thu, Sep 22, 2016 at 4:17 PM, Ashesh Vashi wrote: > Hi Dave, > > Please find the patch for support for paAgent in pgAdmin 4. > > I have also attached another patch for miscellaneous fixes, and adding new > controls. > It includes: > - Added DatetimepickerControl, MomentCell (using moment.js) > - Used the 'DatetimepickerControl' in Role (Also - resolved an issue, when > unset the datetime for 'Valid Until'.) > - Added a 'Select All/Unselect All' adaptor for Select2 used by pgAgent > nodes. > - Fixed an issue with SubNodeCollectionControl, which was not starting the > modification session of the child model, when created default value for > collection is not null/undefined. And, hence - validation on the child > model was not working. > - Fixed a memory leak with SqlFieldControl, and SqlTabControl, which was > not releasing the CodeMirror properly. > > -- > > Thanks & Regards, > > Ashesh Vashi > EnterpriseDB INDIA: Enterprise PostgreSQL Company > > > > *http://www.linkedin.com/in/asheshvashi* > > --94eb2c05b6021c534a053d16b374 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Please use this patch for pgagent.

NOTE= : misc_changes patch is required for pgagent changes.

--

Thanks & Regards,
Ashesh Vashi
EnterpriseDB INDIA: Enterprise PostgreSQL Company

<= br>

<= a href=3D"http://www.linkedin.com/in/asheshvashi" target=3D"_blank">http= ://www.linkedin.com/in/asheshvashi


On Thu, Sep 22, 2016 at 4:17 PM, Ashesh Vash= i <ashesh.vashi@enterprisedb.com> wrote:
Hi Dave,

Ple= ase find the patch for support for paAgent in pgAdmin 4.

I have also attached another patch for miscellaneous fixes, and addi= ng new controls.
It includes:
- Added DatetimepickerCon= trol, MomentCell (using moment.js)
- Used the 'Datetimepicker= Control' in Role (Also - resolved an issue, when unset the datetime for= 'Valid Until'.)
- Added a 'Select All/Unselect All&#= 39; adaptor for Select2 used by pgAgent nodes.
- Fixed an issue w= ith SubNodeCollectionControl, which was not starting the modification sessi= on of the child model, when created default value for collection is not nul= l/undefined. And, hence - validation on the child model was not working.
- Fixed a memory leak with SqlFieldControl, and SqlTabControl, whic= h was not releasing the CodeMirror properly.

--<= /span>

Thanks & Regards,

Ashesh Vashi

EnterpriseDB INDIA: Enterprise PostgreSQL C= ompany

<= br>

<= a href=3D"http://www.linkedin.com/in/asheshvashi" target=3D"_blank">http= ://www.linkedin.com/in/asheshvashi


--94eb2c05b6021c534a053d16b374-- --94eb2c05b6021c534f053d16b376 Content-Type: application/octet-stream; name="pgagent_v3.patch" Content-Disposition: attachment; filename="pgagent_v3.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ite8kgsu2 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL3BnQWdlbnQvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L19faW5pdF9f LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5YjJm YWQKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl 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 IDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZGJkODZlCi0tLSAvZGV2L251bGwK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvcGdBZ2VudC9zY2hlZHVsZXMvdGVtcGxhdGVzL3BnYV9zY2hlZHVsZS9q cy9wZ2Ffc2NoZWR1bGUuanMKQEAgLTAsMCArMSw0NzQgQEAKK2RlZmluZShb 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 bWVudENlbGwuZXh0ZW5kKHsKKyAgICAgICAgICByZW5kZXI6IGZ1bmN0aW9u KCkgeworICAgICAgICAgICAgdGhpcy4kZWwuZW1wdHkoKTsKKyAgICAgICAg ICAgIHZhciBtb2RlbCA9IHRoaXMubW9kZWw7CisgICAgICAgICAgICB0aGlz LiRlbC50ZXh0KHRoaXMuZm9ybWF0dGVyLmZyb21SYXcobW9kZWwuZ2V0KHRo aXMuY29sdW1uLmdldCgibmFtZSIpKSwgbW9kZWwpIHx8ICd7eyBfKCc8QW55 PicpIH19Jyk7CisgICAgICAgICAgICB0aGlzLmRlbGVnYXRlRXZlbnRzKCk7 CisKKyAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICAgIH0KKyAg ICAgICAgfSksCisgICAgICAgIEJvb2xlYW5BcnJheUZvcm1hdHRlciA9IGZ1 bmN0aW9uKHNlbGVjdG9yLCBpbmRleGVzKSB7CisgICAgICAgICAgdmFyIHNl bGYgPSB0aGlzOworCisgICAgICAgICAgc2VsZi5zZWxlY3RvciA9IHNlbGVj dG9yOworICAgICAgICAgIHNlbGYuaW5kZXhlcyA9IGluZGV4ZXM7CisKKyAg ICAgICAgICB0aGlzLmZyb21SYXcgPSBmdW5jdGlvbihyYXdEYXRhKSB7Cisg ICAgICAgICAgICBpZiAoIV8uaXNBcnJheShyYXdEYXRhKSkgeworICAgICAg ICAgICAgICByZXR1cm4gcmF3RGF0YTsKKyAgICAgICAgICAgIH0KKworICAg ICAgICAgICAgdmFyIHJlcyA9IFtdLCBpZHggPSAwLCByZXNJZHggPSBbXTsK KworICAgICAgICAgICAgZm9yICg7IGlkeCA8IHJhd0RhdGEubGVuZ3RoOyBp ZHgrKykgeworICAgICAgICAgICAgICBpZiAoIXJhd0RhdGFbaWR4XSkKKyAg ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgcmVzLnB1 c2goc2VsZi5zZWxlY3RvcltpZHhdKTsKKyAgICAgICAgICAgICAgcmVzSWR4 LnB1c2goaWR4ICsgMSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg IHJldHVybiBzZWxmLmluZGV4ZXMgPyByZXNJZHggOiByZXMuam9pbignLCAn KTsKKyAgICAgICAgICB9CisgICAgICAgICAgdGhpcy50b1JhdyA9IGZ1bmN0 aW9uKGQpIHsKKyAgICAgICAgICAgIGlmICghc2VsZi5pbmRleGVzKQorICAg ICAgICAgICAgICByZXR1cm4gZDsKKyAgICAgICAgICAgIHZhciByZXMgPSBb XSwgaSA9IDAsIGwgPSBzZWxmLnNlbGVjdG9yLmxlbmd0aDsKKworICAgICAg ICAgICAgZm9yICg7IGkgPCBsOyBpKyspIHsKKyAgICAgICAgICAgICAgcmVz LnB1c2goXy5pbmRleE9mKGQsIFN0cmluZyhpICsgMSkpICE9IC0xKTsKKyAg ICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlcyk7Cisg ICAgICAgICAgICByZXR1cm4gcmVzOworICAgICAgICAgIH0KKworICAgICAg ICAgIHJldHVybiBzZWxmOworICAgICAgICB9LAorICAgICAgICBCb29sZWFu QXJyYXlPcHRpb25zID0gZnVuY3Rpb24oY3RybCkgeworICAgICAgICAgIHZh ciBzZWxlY3RvciA9IGN0cmwuZmllbGQuZ2V0KCdzZWxlY3RvcicpLAorICAg ICAgICAgICAgICB2YWwgPSBjdHJsLm1vZGVsLmdldChjdHJsLmZpZWxkLmdl dCgnbmFtZScpKSwKKyAgICAgICAgICAgICAgcmVzID0gW107CisKKyAgICAg ICAgICBpZiAoc2VsZWN0b3IpIHsKKyAgICAgICAgICAgIHJlcyA9IF8ubWFw KAorICAgICAgICAgICAgICBzZWxlY3RvciwgZnVuY3Rpb24odiwgaSkgewor ICAgICAgICAgICAgICAgIHJldHVybiB7bGFiZWw6IHYsIHZhbHVlOiBpICsg MSwgc2VsZWN0ZWQ6IHZhbFtpXX07CisgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgICk7CisgICAgICAgICAgfQorICAgICAgICAgIHJldHVybiByZXM7 CisgICAgICAgIH0sCisgICAgICAgIEV4Y2VwdGlvbk1vZGVsID0gcGdCcm93 c2VyLk5vZGUuTW9kZWwuZXh0ZW5kKHsKKyAgICAgICAgICBkZWZhdWx0czog eworICAgICAgICAgICAgamV4aWQ6IHVuZGVmaW5lZCwKKyAgICAgICAgICAg IGpleGRhdGU6IG51bGwsCisgICAgICAgICAgICBqZXh0aW1lOiBudWxsCisg ICAgICAgICAgfSwKKyAgICAgICAgICBpZEF0dHJpYnV0ZTogJ2pleGlkJywK KyAgICAgICAgICBzY2hlbWE6IFt7CisgICAgICAgICAgICBpZDogJ2pleGRh dGUnLCB0eXBlOiAndGV4dCcsIGxhYmVsOiAne3sgXygnRGF0ZScpIH19JywK KyAgICAgICAgICAgIGVkaXRhYmxlOiB0cnVlLCBwbGFjZWhvbGRlcjogJ3t7 IF8oJzxhbnk+JykgfX0nLAorICAgICAgICAgICAgY2VsbDogQW55RGF0ZXRp bWVDZWxsLCBvcHRpb25zOiB7Zm9ybWF0OiAnTU0vREQvWVlZWSd9LCBhbGxv d0VtcHR5OiB0cnVlLAorICAgICAgICAgICAgZGlzcGxheUZvcm1hdDogJ01N L0REL1lZWVknLCBtb2RlbEZvcm1hdDogJ01NL0REL1lZWVknLAorICAgICAg ICAgICAgY2VsbEhlYWRlckNsYXNzZXM6J3dpZHRoX3BlcmNlbnRfNTAnCisg ICAgICAgICAgfSx7CisgICAgICAgICAgICBpZDogJ2pleHRpbWUnLCB0eXBl OiAndGV4dCcsIHBsYWNlaG9sZGVyOiAne3sgXygnPGFueT4nKSB9fScsCisg ICAgICAgICAgICBsYWJlbDogJ3t7IF8oJ1RpbWUnKSB9fScsIGVkaXRhYmxl OiB0cnVlLCBjZWxsOiBBbnlEYXRldGltZUNlbGwsCisgICAgICAgICAgICBv cHRpb25zOiB7Zm9ybWF0OiAnSEg6bW06c3MnfSwgZGlzcGxheUZvcm1hdDog J0hIOm1tOnNzJywKKyAgICAgICAgICAgIG1vZGVsRm9ybWF0OiAnSEg6bW06 c3MnLCBkaXNwbGF5SW5VVEM6IGZhbHNlLCBhbGxvd0VtcHR5OiB0cnVlLAor ICAgICAgICAgICAgY2VsbEhlYWRlckNsYXNzZXM6J3dpZHRoX3BlcmNlbnRf NTAnCisgICAgICAgICAgfV0sCisgICAgICAgICAgdmFsaWRhdGU6IGZ1bmN0 aW9uKCkgeworICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzLCBleGNlcHRp b25zID0gdGhpcy5jb2xsZWN0aW9uLAorICAgICAgICAgICAgICAgIGRhdGVz ID0ge30sIGVyck1zZywgaGFzRXhjZXB0aW9uRXJyID0gZmFsc2UsCisgICAg ICAgICAgICAgICAgZCA9ICh0aGlzLmdldCgnamV4ZGF0ZScpIHx8ICc8YW55 PicpLAorICAgICAgICAgICAgICAgIHQgPSB0aGlzLmdldCgnamV4dGltZScp IHx8ICc8YW55PicsCisgICAgICAgICAgICAgICAgaWQgPSB0aGlzLmdldCgn amV4aWQnKSB8fCB0aGlzLmNpZDsKKworICAgICAgICAgICAgc2VsZi5lcnJv ck1vZGVsLnVuc2V0KCdqc2NkYXRlJyk7CisgICAgICAgICAgICBpZiAoZCA9 PSB0ICYmIGQgPT0gJzxhbnk+JykgeworICAgICAgICAgICAgICBlcnJNc2cg PSAne3sgXygnUGxlYXNlIHNwZWNpZnkgZGF0ZS90aW1lLicpIH19JzsKKyAg ICAgICAgICAgICAgc2VsZi5lcnJvck1vZGVsLnNldCgnanNjZGF0ZScsIGVy ck1zZyk7CisgICAgICAgICAgICAgIHJldHVybiBlcnJNc2cgOworICAgICAg ICAgICAgfQorCisgICAgICAgICAgICBleGNlcHRpb25zLmVhY2goZnVuY3Rp b24oZXgpIHsKKyAgICAgICAgICAgICAgaWYgKGhhc0V4Y2VwdGlvbkVyciB8 fCBpZCA9PSAoZXguZ2V0KCdqZXhpZCcpIHx8IGV4LmNpZCkpCisgICAgICAg ICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgIGlmICgKKyAgICAg ICAgICAgICAgICBkID09IChleC5nZXQoJ2pleGRhdGUnKSB8fCAnPGFueT4n KSAmJgorICAgICAgICAgICAgICAgIHQgPT0gKGV4LmdldCgnamV4dGltZScp IHx8ICc8YW55PicpCisgICAgICAgICAgICAgICkgeworICAgICAgICAgICAg ICAgIGVyck1zZyA9ICd7eyBfKCdQbGVhc2Ugc3BlY2lmeSB1bmlxdWUgc2V0 IG9mIGV4Y2VwdGlvbnMuJykgfX0nOworICAgICAgICAgICAgICAgIGlmIChl eC5lcnJvck1vZGVsLmdldCgnanNjZGF0ZScpICE9IGVyck1zZykKKyAgICAg ICAgICAgICAgICAgICAgc2VsZi5lcnJvck1vZGVsLnNldCgnanNjZGF0ZScs IGVyck1zZyk7CisgICAgICAgICAgICAgICAgaGFzRXhjZXB0aW9uRXJyID0g dHJ1ZTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSk7CisKKyAg ICAgICAgICAgIHJldHVybiBlcnJNc2c7CisgICAgICAgICAgfQorICAgICAg ICB9KTsKKworICAgIHBnQnJvd3Nlci5Ob2Rlc1sncGdhX3NjaGVkdWxlJ10g PSBwZ0Jyb3dzZXIuTm9kZS5leHRlbmQoeworICAgICAgcGFyZW50X3R5cGU6 ICdwZ2Ffam9iJywKKyAgICAgIHR5cGU6ICdwZ2Ffc2NoZWR1bGUnLAorICAg ICAgaGFzU1FMOiBmYWxzZSwKKyAgICAgIGhhc0RlcGVuZHM6IGZhbHNlLAor ICAgICAgaGFzU3RhdGlzdGljczogZmFsc2UsCisgICAgICBjYW5Ecm9wOiBm dW5jdGlvbihub2RlKSB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgICAg fSwKKyAgICAgIGxhYmVsOiAne3sgXygnU2NoZWR1bGUnKSB9fScsCisgICAg ICBub2RlX2ltYWdlOiAnaWNvbi1wZ2Ffc2NoZWR1bGUnLAorICAgICAgSW5p dDogZnVuY3Rpb24oKSB7CisgICAgICAgIC8qIEF2b2lkIG11bGl0cGxlIHJl Z2lzdHJhdGlvbiBvZiBtZW51cyAqLworICAgICAgICBpZiAodGhpcy5pbml0 aWFsaXplZCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlz LmluaXRpYWxpemVkID0gdHJ1ZTsKKworICAgICAgICBwZ0Jyb3dzZXIuYWRk X21lbnVzKFt7CisgICAgICAgICAgbmFtZTogJ2NyZWF0ZV9wZ2Ffc2NoZWR1 bGVfb25fam9iJywgbm9kZTogJ3BnYV9qb2InLCBtb2R1bGU6IHRoaXMsCisg ICAgICAgICAgYXBwbGllczogWydvYmplY3QnLCAnY29udGV4dCddLCBjYWxs YmFjazogJ3Nob3dfb2JqX3Byb3BlcnRpZXMnLAorICAgICAgICAgIGNhdGVn b3J5OiAnY3JlYXRlJywgcHJpb3JpdHk6IDQsIGxhYmVsOiAne3sgXygnU2No ZWR1bGUuLi4nKSB9fScsCisgICAgICAgICAgaWNvbjogJ3djVGFiSWNvbiBp Y29uLXBnYV9zY2hlZHVsZScsIGRhdGE6IHthY3Rpb246ICdjcmVhdGUnfQor ICAgICAgICB9LHsKKyAgICAgICAgICBuYW1lOiAnY3JlYXRlX3BnYV9zY2hl ZHVsZV9vbl9jb2xsJywgbm9kZTogJ2NvbGwtcGdhX3NjaGVkdWxlJywgbW9k dWxlOiB0aGlzLAorICAgICAgICAgIGFwcGxpZXM6IFsnb2JqZWN0JywgJ2Nv bnRleHQnXSwgY2FsbGJhY2s6ICdzaG93X29ial9wcm9wZXJ0aWVzJywKKyAg ICAgICAgICBjYXRlZ29yeTogJ2NyZWF0ZScsIHByaW9yaXR5OiA0LCBsYWJl bDogJ3t7IF8oJ1NjaGVkdWxlLi4uJykgfX0nLAorICAgICAgICAgIGljb246 ICd3Y1RhYkljb24gaWNvbi1wZ2Ffc2NoZWR1bGUnLCBkYXRhOiB7YWN0aW9u OiAnY3JlYXRlJ30KKyAgICAgICAgfSx7CisgICAgICAgICAgbmFtZTogJ2Ny ZWF0ZV9wZ2Ffc2NoZWR1bGUnLCBub2RlOiAncGdhX3NjaGVkdWxlJywgbW9k dWxlOiB0aGlzLAorICAgICAgICAgIGFwcGxpZXM6IFsnb2JqZWN0JywgJ2Nv bnRleHQnXSwgY2FsbGJhY2s6ICdzaG93X29ial9wcm9wZXJ0aWVzJywKKyAg ICAgICAgICBjYXRlZ29yeTogJ2NyZWF0ZScsIHByaW9yaXR5OiA0LCBsYWJl bDogJ3t7IF8oJ1NjaGVkdWxlLi4uJykgfX0nLAorICAgICAgICAgIGljb246 ICd3Y1RhYkljb24gaWNvbi1wZ2Ffc2NoZWR1bGUnLCBkYXRhOiB7YWN0aW9u OiAnY3JlYXRlJ30KKyAgICAgICAgfV0pOworICAgICAgfSwKKyAgICAgIG1v ZGVsOiBwZ0Jyb3dzZXIuTm9kZS5Nb2RlbC5leHRlbmQoeworICAgICAgICBk ZWZhdWx0czogeworICAgICAgICAgIGpzY2lkOiBudWxsLAorICAgICAgICAg IGpzY2pvYmlkOiBudWxsLAorICAgICAgICAgIGpzY25hbWU6ICcnLAorICAg ICAgICAgIGpzY2Rlc2M6ICcnLAorICAgICAgICAgIGpzY2VuYWJsZWQ6IHRy dWUsCisgICAgICAgICAganNjc3RhcnQ6IG51bGwsCisgICAgICAgICAganNj ZW5kOiBudWxsLAorICAgICAgICAgIGpzY3dlZWtkYXlzOiBfLm1hcCh3ZWVr ZGF5cywgZnVuY3Rpb24oKSB7IHJldHVybiBmYWxzZTsgfSksCisgICAgICAg ICAganNjbW9udGhkYXlzOiBfLm1hcChtb250aGRheXMsIGZ1bmN0aW9uKCkg eyByZXR1cm4gZmFsc2U7IH0pLAorICAgICAgICAgIGpzY21vbnRoczogXy5t YXAobW9udGhzLCBmdW5jdGlvbigpIHsgcmV0dXJuIGZhbHNlOyB9KSwKKyAg ICAgICAgICBqc2Nob3VyczogXy5tYXAoaG91cnMsIGZ1bmN0aW9uKCkgeyBy ZXR1cm4gZmFsc2U7IH0pLAorICAgICAgICAgIGpzY21pbnV0ZXM6IF8ubWFw KG1pbnV0ZXMsIGZ1bmN0aW9uKCkgeyByZXR1cm4gZmFsc2U7IH0pLAorICAg ICAgICAgIGpzY2V4Y2VwdGlvbnM6IFtdCisgICAgICAgIH0sCisgICAgICAg IGlkQXR0cmlidXRlOiAnanNjaWQnLAorICAgICAgICBwYXJzZTogZnVuY3Rp b24oZCkgeworICAgICAgICAgIGQuanNjZXhjZXB0aW9ucyA9IFtdOworICAg ICAgICAgIGlmIChkLmpleGlkICYmIGQuamV4aWQubGVuZ3RoKSB7CisgICAg ICAgICAgICB2YXIgaWR4ID0gMDsKKyAgICAgICAgICAgIGZvciAoOyBpZHgg PCBkLmpleGlkLmxlbmd0aDsgaWR4KyspIHsKKyAgICAgICAgICAgICAgZC5q c2NleGNlcHRpb25zLnB1c2goeworICAgICAgICAgICAgICAgICdqZXhpZCc6 IGQuamV4aWRbaWR4XSwKKyAgICAgICAgICAgICAgICAnamV4ZGF0ZSc6IGQu amV4ZGF0ZVtpZHhdLAorICAgICAgICAgICAgICAgICdqZXh0aW1lJzogZC5q ZXh0aW1lW2lkeF0KKyAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9 CisgICAgICAgICAgfQorICAgICAgICAgIGRlbGV0ZSBkLmpleGlkOworICAg ICAgICAgIGRlbGV0ZSBkLmpleGRhdGU7CisgICAgICAgICAgZGVsZXRlIGQu amV4dGltZTsKKworICAgICAgICAgIHJldHVybiBwZ0Jyb3dzZXIuTm9kZS5N b2RlbC5wcm90b3R5cGUucGFyc2UuYXBwbHkodGhpcywgYXJndW1lbnRzKTsK KyAgICAgICAgfSwKKyAgICAgICAgc2NoZW1hOiBbeworICAgICAgICAgIGlk OiAnanNjaWQnLCBsYWJlbDogJ3t7IF8oJ0lEJykgfX0nLCB0eXBlOiAnaW50 ZWdlcicsCisgICAgICAgICAgY2VsbEhlYWRlckNsYXNzZXM6ICd3aWR0aF9w ZXJjZW50XzUnLCBtb2RlOiBbJ3Byb3BlcnRpZXMnXQorICAgICAgICB9LHsK KyAgICAgICAgICBpZDogJ2pzY25hbWUnLCBsYWJlbDogJ3t7IF8oJ05hbWUn KSB9fScsIHR5cGU6ICd0ZXh0JywKKyAgICAgICAgICBjZWxsSGVhZGVyQ2xh c3NlczogJ3dpZHRoX3BlcmNlbnRfNDUnLAorICAgICAgICAgIGRpc2FibGVk OiBmdW5jdGlvbigpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIH0sewor ICAgICAgICAgIGlkOiAnanNjZW5hYmxlZCcsIGxhYmVsOiAne3sgXygnRW5h YmxlZCcpIH19JywgdHlwZTogJ3N3aXRjaCcsCisgICAgICAgICAgZGlzYWJs ZWQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gZmFsc2U7IH0sCisgICAgICAgICAg Y2VsbEhlYWRlckNsYXNzZXM6ICd3aWR0aF9wZXJjZW50XzUnCisgICAgICAg IH0seworICAgICAgICAgIGlkOiAnanNjc3RhcnQnLCBsYWJlbDogJ3t7IF8o J1N0YXJ0JykgfX0nLCB0eXBlOiAndGV4dCcsCisgICAgICAgICAgY29udHJv bDogJ2RhdGV0aW1lcGlja2VyJywgY2VsbDogJ21vbWVudCcsCisgICAgICAg ICAgZGlzYWJsZWQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gZmFsc2U7IH0sCisg ICAgICAgICAgZGlzcGxheUZvcm1hdDogJ01NL0REL1lZWVkgSEg6bW06U1Mn LAorICAgICAgICAgIG1vZGVsRm9ybWF0OiAnTU0vREQvWVlZWSBISDptbTpT UycsIG9wdGlvbnM6IHsKKyAgICAgICAgICAgIGZvcm1hdDogJ01NL0REL1lZ WVkgSEg6bW06U1MnLAorICAgICAgICAgIH0sIGNlbGxIZWFkZXJDbGFzc2Vz OiAnd2lkdGhfcGVyY2VudF8yNScKKyAgICAgICAgfSx7CisgICAgICAgICAg aWQ6ICdqc2NlbmQnLCBsYWJlbDogJ3t7IF8oJ0VuZCcpIH19JywgdHlwZTog J3RleHQnLAorICAgICAgICAgIGNvbnRyb2w6ICdkYXRldGltZXBpY2tlcics IGNlbGw6ICdtb21lbnQnLAorICAgICAgICAgIGRpc2FibGVkOiBmdW5jdGlv bigpIHsgcmV0dXJuIGZhbHNlOyB9LCBkaXNwbGF5SW5VVEM6IGZhbHNlLAor ICAgICAgICAgIGRpc3BsYXlGb3JtYXQ6ICdNTS9ERC9ZWVlZIEhIOm1tOlNT Jywgb3B0aW9uczogeworICAgICAgICAgICAgZm9ybWF0OiAnTU0vREQvWVlZ WSBISDptbTpTUycsIHVzZUN1cnJlbnQ6IGZhbHNlCisgICAgICAgICAgfSwg Y2VsbEhlYWRlckNsYXNzZXM6ICd3aWR0aF9wZXJjZW50XzI1JywKKyAgICAg ICAgICBtb2RlbEZvcm1hdDogJ01NL0REL1lZWVkgSEg6bW06U1MnCisgICAg ICAgIH0seworICAgICAgICAgIGlkOiAnanNjd2Vla2RheXMnLCBsYWJlbDon e3sgXygnV2VlayBEYXlzJykgfX0nLCB0eXBlOiAndGV4dCcsCisgICAgICAg ICAgY29udHJvbDogQmFja2Zvcm0uQ29udHJvbC5leHRlbmQoeworICAgICAg ICAgICAgZm9ybWF0dGVyOiBuZXcgQm9vbGVhbkFycmF5Rm9ybWF0dGVyKHdl ZWtkYXlzLCBmYWxzZSkKKyAgICAgICAgICB9KSwgbW9kZTogWydwcm9wZXJ0 aWVzJ10KKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdqc2Ntb250aGRh eXMnLCBsYWJlbDone3sgXygnTW9udGggRGF5cycpIH19JywgdHlwZTogJ3Rl eHQnLAorICAgICAgICAgIGNvbnRyb2w6IEJhY2tmb3JtLkNvbnRyb2wuZXh0 ZW5kKHsKKyAgICAgICAgICAgIGZvcm1hdHRlcjogbmV3IEJvb2xlYW5BcnJh eUZvcm1hdHRlcihtb250aGRheXMsIGZhbHNlKQorICAgICAgICAgIH0pLCBt b2RlOiBbJ3Byb3BlcnRpZXMnXQorICAgICAgICB9LHsKKyAgICAgICAgICBp ZDogJ2pzY21vbnRocycsIGxhYmVsOid7eyBfKCdNb250aHMnKSB9fScsIHR5 cGU6ICd0ZXh0JywKKyAgICAgICAgICBjb250cm9sOiBCYWNrZm9ybS5Db250 cm9sLmV4dGVuZCh7CisgICAgICAgICAgICBmb3JtYXR0ZXI6IG5ldyBCb29s ZWFuQXJyYXlGb3JtYXR0ZXIobW9udGhzLCBmYWxzZSkKKyAgICAgICAgICB9 KSwgbW9kZTogWydwcm9wZXJ0aWVzJ10KKyAgICAgICAgfSx7CisgICAgICAg ICAgaWQ6ICdqc2Nob3VycycsIGxhYmVsOid7eyBfKCdIb3VycycpIH19Jywg dHlwZTogJ3RleHQnLAorICAgICAgICAgIGNvbnRyb2w6IEJhY2tmb3JtLkNv bnRyb2wuZXh0ZW5kKHsKKyAgICAgICAgICAgIGZvcm1hdHRlcjogbmV3IEJv b2xlYW5BcnJheUZvcm1hdHRlcihob3VycywgZmFsc2UpCisgICAgICAgICAg fSksIG1vZGU6IFsncHJvcGVydGllcyddCisgICAgICAgIH0seworICAgICAg ICAgIGlkOiAnanNjbWludXRlcycsIGxhYmVsOid7eyBfKCdNaW51dGVzJykg fX0nLCB0eXBlOiAndGV4dCcsCisgICAgICAgICAgY29udHJvbDogQmFja2Zv cm0uQ29udHJvbC5leHRlbmQoeworICAgICAgICAgICAgZm9ybWF0dGVyOiBu ZXcgQm9vbGVhbkFycmF5Rm9ybWF0dGVyKG1pbnV0ZXMsIGZhbHNlKQorICAg ICAgICAgIH0pLCBtb2RlOiBbJ3Byb3BlcnRpZXMnXQorICAgICAgICB9LHsK KyAgICAgICAgICBpZDogJ2pzY2V4Y2VwdGlvbnMnLCBsYWJlbDone3sgXygn RXhjZXB0aW9ucycpIH19JywgdHlwZTogJ3RleHQnLAorICAgICAgICAgIGNv bnRyb2w6IEJhY2tmb3JtLkNvbnRyb2wuZXh0ZW5kKHsKKyAgICAgICAgICAg IGZvcm1hdHRlcjogbmV3IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICB0 aGlzLmZyb21SYXcgPSBmdW5jdGlvbihyYXdEYXRhKSB7CisgICAgICAgICAg ICAgICAgdmFyIHJlcyA9ICcnLCBpZHggPSAwLCBkOworCisgICAgICAgICAg ICAgICAgaWYgKCFyYXdEYXRhKSB7CisgICAgICAgICAgICAgICAgICByZXR1 cm4gcmVzOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg IGZvciAoOyBpZHggPCByYXdEYXRhLmxlbmd0aDsgaWR4KyspIHsKKyAgICAg ICAgICAgICAgICAgIGQgPSByYXdEYXRhW2lkeF07CisgICAgICAgICAgICAg ICAgICBpZiAoaWR4KQorICAgICAgICAgICAgICAgICAgICAgIHJlcyArPSAn LCAnOworICAgICAgICAgICAgICAgICAgcmVzICs9ICdbJyArIFN0cmluZygo ZC5qZXhkYXRlIHx8ICcnKSArICcgJyArIChkLmpleHRpbWUgfHwgJycpKS5y ZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpICsgJ10nOworICAgICAgICAgICAg ICAgIH0KKworICAgICAgICAgICAgICAgIHJldHVybiByZXM7CisgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgICAgdGhpcy50b1JhdyA9IGZ1bmN0aW9u KGRhdGEpIHsgcmV0dXJuIGRhdGE7IH0KKworICAgICAgICAgICAgICByZXR1 cm4gdGhpczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9KSwgbW9kZTog Wydwcm9wZXJ0aWVzJ10KKyAgICAgICAgfSx7CisgICAgICAgICAgdHlwZTog J25lc3RlZCcsIGxhYmVsOiAne3sgXygnRGF5cycpIH19JywgZ3JvdXA6ICd7 eyBfKCdSZXBlYXQnKSB9fScsCisgICAgICAgICAgbW9kZTogWydjcmVhdGUn LCAnZWRpdCddLAorICAgICAgICAgIGNvbnRyb2w6IEJhY2tmb3JtLkZpZWxk c2V0Q29udHJvbC5leHRlbmQoeworICAgICAgICAgICAgcmVuZGVyOiBmdW5j dGlvbigpIHsKKyAgICAgICAgICAgICAgdmFyIHJlcyA9IEJhY2tmb3JtLkZp ZWxkc2V0Q29udHJvbC5wcm90b3R5cGUucmVuZGVyLmFwcGx5KAorICAgICAg ICAgICAgICAgIHRoaXMsIGFyZ3VtZW50cworICAgICAgICAgICAgICApOwor CisgICAgICAgICAgICAgIHRoaXMuJGVsLnByZXBlbmQoCisgICAgICAgICAg ICAgICAgJzxkaXYgY2xhc3M9IicgKyBCYWNrZm9ybS5oZWxwTWVzc2FnZUNs YXNzTmFtZSArICcgc2V0LWdyb3VwIHBnLWVsLXhzLTEyIj57eyBfKCJTY2hl ZHVsZXMgYXJlIHNwZWNpZmllZCB1c2luZyBhIDxiPmNyb24tc3R5bGU8L2I+ IGZvcm1hdC48YnIvPjx1bD48bGk+Rm9yIGVhY2ggc2VsZWN0ZWQgdGltZSBv ciBkYXRlIGVsZW1lbnQsIHRoZSBzY2hlZHVsZSB3aWxsIGV4ZWN1dGUuPGJy Lz5lLmcuIFRvIGV4ZWN1dGUgYXQgNSBtaW51dGVzIHBhc3QgZXZlcnkgaG91 ciwgc2ltcGx5IHNlbGVjdCDigJgwNeKAmSBpbiB0aGUgTWludXRlcyBsaXN0 IGJveC48YnIvPjwvbGk+PGxpPlZhbHVlcyBmcm9tIG1vcmUgdGhhbiBvbmUg ZmllbGQgbWF5IGJlIHNwZWNpZmllZCBpbiBvcmRlciB0byBmdXJ0aGVyIGNv bnRyb2wgdGhlIHNjaGVkdWxlLjxici8+ZS5nLiBUbyBleGVjdXRlIGF0IDEy OjA1IGFuZCAxNDowNSBldmVyeSBNb25kYXkgYW5kIFRodXJzZGF5LCB5b3Ug d291bGQgY2xpY2sgbWludXRlIDA1LCBob3VycyAxMiBhbmQgMTQsIGFuZCB3 ZWVrZGF5cyBNb25kYXkgYW5kIFRodXJzZGF5LjwvbGk+PGxpPkZvciBhZGRp dGlvbmFsIGZsZXhpYmlsaXR5LCB0aGUgTW9udGggRGF5cyBjaGVjayBsaXN0 IGluY2x1ZGVzIGFuIGV4dHJhIExhc3QgRGF5IG9wdGlvbi4gVGhpcyBtYXRj aGVzIHRoZSBsYXN0IGRheSBvZiB0aGUgbW9udGgsIHdoZXRoZXIgaXQgaGFw cGVucyB0byBiZSB0aGUgMjh0aCwgMjl0aCwgMzB0aCBvciAzMXN0LjwvbGk+ PC91bD4iKSB9fTwvZGl2PicKKyAgICAgICAgICAgICAgKTsKKworICAgICAg ICAgICAgICByZXR1cm4gcmVzOworICAgICAgICAgICAgfQorICAgICAgICAg IH0pLAorICAgICAgICAgIHNjaGVtYTpbeworICAgICAgICAgICAgaWQ6ICdq c2N3ZWVrZGF5cycsIGxhYmVsOid7eyBfKCdXZWVrIERheXMnKSB9fScsIGNl bGw6ICdzZWxlY3QyJywKKyAgICAgICAgICAgIGdyb3VwOiAne3sgXygnRGF5 cycpIH19JywgY29udHJvbDogJ3NlbGVjdDInLCB0eXBlOiAnYXJyYXknLAor ICAgICAgICAgICAgc2VsZWN0MjogeworICAgICAgICAgICAgICBmaXJzdF9l bXB0eTogZmFsc2UsCisgICAgICAgICAgICAgIG11bHRpcGxlOiB0cnVlLAor ICAgICAgICAgICAgICBhbGxvd0NsZWFyOiB0cnVlLAorICAgICAgICAgICAg ICBwbGFjZWhvbGRlcjogJ3t7IF8oIlNlbGVjdCB0aGUgd2Vla2RheXMuLi4i KSB9fScsCisgICAgICAgICAgICAgIHdpZHRoOiAnc3R5bGUnLAorICAgICAg ICAgICAgICBkcm9wZG93bkFkYXB0ZXI6ICQuZm4uc2VsZWN0Mi5hbWQucmVx dWlyZSgKKyAgICAgICAgICAgICAgICAnc2VsZWN0Mi9zZWxlY3RBbGxBZGFw dGVyJworICAgICAgICAgICAgICApCisgICAgICAgICAgICB9LAorICAgICAg ICAgICAgc2VsZWN0b3I6IHdlZWtkYXlzLAorICAgICAgICAgICAgZm9ybWF0 dGVyOiBuZXcgQm9vbGVhbkFycmF5Rm9ybWF0dGVyKHdlZWtkYXlzLCB0cnVl KSwKKyAgICAgICAgICAgIG9wdGlvbnM6IEJvb2xlYW5BcnJheU9wdGlvbnMK KyAgICAgICAgICB9LHsKKyAgICAgICAgICAgIGlkOiAnanNjbW9udGhkYXlz JywgbGFiZWw6J3t7IF8oJ01vbnRoIERheXMnKSB9fScsIGNlbGw6ICdzZWxl Y3QyJywKKyAgICAgICAgICAgIGdyb3VwOiAne3sgXygnRGF5cycpIH19Jywg Y29udHJvbDogJ3NlbGVjdDInLCB0eXBlOiAnYXJyYXknLAorICAgICAgICAg ICAgc2VsZWN0MjogeworICAgICAgICAgICAgICBmaXJzdF9lbXB0eTogZmFs c2UsCisgICAgICAgICAgICAgIG11bHRpcGxlOiB0cnVlLAorICAgICAgICAg ICAgICBhbGxvd0NsZWFyOiB0cnVlLAorICAgICAgICAgICAgICBwbGFjZWhv bGRlcjogJ3t7IF8oIlNlbGVjdCB0aGUgbW9udGggZGF5cy4uLiIpIH19JywK KyAgICAgICAgICAgICAgd2lkdGg6ICdzdHlsZScsCisgICAgICAgICAgICAg IGRyb3Bkb3duQWRhcHRlcjogJC5mbi5zZWxlY3QyLmFtZC5yZXF1aXJlKAor ICAgICAgICAgICAgICAgICdzZWxlY3QyL3NlbGVjdEFsbEFkYXB0ZXInCisg ICAgICAgICAgICAgICkKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBm b3JtYXR0ZXI6IG5ldyBCb29sZWFuQXJyYXlGb3JtYXR0ZXIobW9udGhkYXlz LCB0cnVlKSwKKyAgICAgICAgICAgIHNlbGVjdG9yOiBtb250aGRheXMsIG9w dGlvbnM6IEJvb2xlYW5BcnJheU9wdGlvbnMKKyAgICAgICAgICB9LHsKKyAg ICAgICAgICAgIGlkOiAnanNjbW9udGhzJywgbGFiZWw6J3t7IF8oJ01vbnRo cycpIH19JywgY2VsbDogJ3NlbGVjdDInLAorICAgICAgICAgICAgZ3JvdXA6 ICd7eyBfKCdEYXlzJykgfX0nLCBjb250cm9sOiAnc2VsZWN0MicsIHR5cGU6 ICdhcnJheScsCisgICAgICAgICAgICBzZWxlY3QyOiB7CisgICAgICAgICAg ICAgIGZpcnN0X2VtcHR5OiBmYWxzZSwKKyAgICAgICAgICAgICAgbXVsdGlw bGU6IHRydWUsCisgICAgICAgICAgICAgIGFsbG93Q2xlYXI6IHRydWUsCisg ICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAne3sgXygiU2VsZWN0IHRoZSBt b250aHMuLi4iKSB9fScsCisgICAgICAgICAgICAgIHdpZHRoOiAnc3R5bGUn LAorICAgICAgICAgICAgICBkcm9wZG93bkFkYXB0ZXI6ICQuZm4uc2VsZWN0 Mi5hbWQucmVxdWlyZSgKKyAgICAgICAgICAgICAgICAnc2VsZWN0Mi9zZWxl Y3RBbGxBZGFwdGVyJworICAgICAgICAgICAgICApCisgICAgICAgICAgICB9 LAorICAgICAgICAgICAgZm9ybWF0dGVyOiBuZXcgQm9vbGVhbkFycmF5Rm9y bWF0dGVyKG1vbnRocywgdHJ1ZSksCisgICAgICAgICAgICBzZWxlY3Rvcjog bW9udGhzLCBvcHRpb25zOiBCb29sZWFuQXJyYXlPcHRpb25zCisgICAgICAg ICAgfV0KKyAgICAgICAgfSx7CisgICAgICAgICAgdHlwZTogJ25lc3RlZCcs IGNvbnRyb2w6ICdmaWVsZHNldCcsIGxhYmVsOiAne3sgXygnVGltZXMnKSB9 fScsCisgICAgICAgICAgZ3JvdXA6ICd7eyBfKCdSZXBlYXQnKSB9fScsIG1v ZGU6IFsnY3JlYXRlJywgJ2VkaXQnXSwKKyAgICAgICAgICBzY2hlbWE6W3sK KyAgICAgICAgICAgIGlkOiAnanNjaG91cnMnLCBsYWJlbDone3sgXygnSG91 cnMnKSB9fScsIGNlbGw6ICdzZWxlY3QyJywKKyAgICAgICAgICAgIGdyb3Vw OiAne3sgXygnVGltZXMnKSB9fScsIGNvbnRyb2w6ICdzZWxlY3QyJywgdHlw ZTogJ2FycmF5JywKKyAgICAgICAgICAgIHNlbGVjdDI6IHsKKyAgICAgICAg ICAgICAgZmlyc3RfZW1wdHk6IGZhbHNlLAorICAgICAgICAgICAgICBtdWx0 aXBsZTogdHJ1ZSwKKyAgICAgICAgICAgICAgYWxsb3dDbGVhcjogdHJ1ZSwK KyAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICd7eyBfKCJTZWxlY3QgdGhl IGhvdXJzLi4uIikgfX0nLAorICAgICAgICAgICAgICB3aWR0aDogJ3N0eWxl JywKKyAgICAgICAgICAgICAgZHJvcGRvd25BZGFwdGVyOiAkLmZuLnNlbGVj dDIuYW1kLnJlcXVpcmUoCisgICAgICAgICAgICAgICAgJ3NlbGVjdDIvc2Vs ZWN0QWxsQWRhcHRlcicKKyAgICAgICAgICAgICAgKQorICAgICAgICAgICAg fSwKKyAgICAgICAgICAgIGZvcm1hdHRlcjogbmV3IEJvb2xlYW5BcnJheUZv cm1hdHRlcihob3VycywgdHJ1ZSksCisgICAgICAgICAgICBzZWxlY3Rvcjog aG91cnMsIG9wdGlvbnM6IEJvb2xlYW5BcnJheU9wdGlvbnMKKyAgICAgICAg ICB9LHsKKyAgICAgICAgICAgIGlkOiAnanNjbWludXRlcycsIGxhYmVsOid7 eyBfKCdNaW51dGVzJykgfX0nLCBjZWxsOiAnc2VsZWN0MicsCisgICAgICAg ICAgICBncm91cDogJ3t7IF8oJ1RpbWVzJykgfX0nLCBjb250cm9sOiAnc2Vs ZWN0MicsIHR5cGU6ICdhcnJheScsCisgICAgICAgICAgICBzZWxlY3QyOiB7 CisgICAgICAgICAgICAgIGZpcnN0X2VtcHR5OiBmYWxzZSwKKyAgICAgICAg ICAgICAgbXVsdGlwbGU6IHRydWUsCisgICAgICAgICAgICAgIGFsbG93Q2xl YXI6IHRydWUsCisgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAne3sgXygi U2VsZWN0IHRoZSBtaW51dGVzLi4uIikgfX0nLAorICAgICAgICAgICAgICB3 aWR0aDogJ3N0eWxlJywKKyAgICAgICAgICAgICAgZHJvcGRvd25BZGFwdGVy OiAkLmZuLnNlbGVjdDIuYW1kLnJlcXVpcmUoCisgICAgICAgICAgICAgICAg J3NlbGVjdDIvc2VsZWN0QWxsQWRhcHRlcicKKyAgICAgICAgICAgICAgKQor ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGZvcm1hdHRlcjogbmV3IEJv b2xlYW5BcnJheUZvcm1hdHRlcihtaW51dGVzLCB0cnVlKSwKKyAgICAgICAg ICAgIHNlbGVjdG9yOiBtaW51dGVzLCBvcHRpb25zOiBCb29sZWFuQXJyYXlP cHRpb25zCisgICAgICAgICAgfV0KKyAgICAgICAgfSx7CisgICAgICAgICAg aWQ6ICdqc2NleGNlcHRpb25zJywgdHlwZTogJ2NvbGxlY3Rpb24nLCBtb2Rl OiBbJ2VkaXQnLCAnY3JlYXRlJ10sCisgICAgICAgICAgbGFiZWw6ICIiLCBj YW5FZGl0OiBmYWxzZSwgbW9kZWw6IEV4Y2VwdGlvbk1vZGVsLCBjYW5BZGQ6 IHRydWUsCisgICAgICAgICAgZ3JvdXA6ICd7eyBfKCdFeGNlcHRpb25zJykg fX0nLCBjYW5EZWxldGU6IHRydWUsCisgICAgICAgICAgY29sczogWydqZXhk YXRlJywgJ2pleHRpbWUnXSwgY29udHJvbDogJ3N1Yi1ub2RlLWNvbGxlY3Rp b24nCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAnanNjZGVzYycsIGxh YmVsOiAne3sgXygnQ29tbWVudCcpIH19JywgdHlwZTogJ211bHRpbGluZScK KyAgICAgICAgfV0sCisgICAgICAgIHZhbGlkYXRlOiBmdW5jdGlvbihrZXlz KSB7CisgICAgICAgICAgdmFyIHZhbCA9IHRoaXMuZ2V0KCdqc2NuYW1lJyks CisgICAgICAgICAgICAgIGVyck1zZyA9IG51bGw7CisKKyAgICAgICAgICBp ZiAoXy5pc1VuZGVmaW5lZCh2YWwpIHx8IF8uaXNOdWxsKHZhbCkgfHwKKyAg ICAgICAgICAgIFN0cmluZyh2YWwpLnJlcGxhY2UoL15ccyt8XHMrJC9nLCAn JykgPT0gJycpIHsKKyAgICAgICAgICAgIHZhciBtc2cgPSAne3sgXygnTmFt ZSBjYW5ub3QgYmUgZW1wdHkuJykgfX0nOworICAgICAgICAgICAgdGhpcy5l cnJvck1vZGVsLnNldCgnanNjbmFtZScsIG1zZyk7CisgICAgICAgICAgICBl cnJNc2cgPSBtc2c7CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg IHRoaXMuZXJyb3JNb2RlbC51bnNldCgnanNjbmFtZScpOworICAgICAgICAg IH0KKworICAgICAgICAgIHZhbCA9IHRoaXMuZ2V0KCdqc2NzdGFydCcpOwor ICAgICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKHZhbCkgfHwgXy5pc051bGwo dmFsKSB8fAorICAgICAgICAgICAgU3RyaW5nKHZhbCkucmVwbGFjZSgvXlxz K3xccyskL2csICcnKSA9PSAnJykgeworICAgICAgICAgICAgdmFyIG1zZyA9 ICd7eyBfKCdQbGVhc2UgZW50ZXIgdGhlIHN0YXJ0IHRpbWUuJykgfX0nOwor ICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnNldCgnanNjc3RhcnQnLCBt c2cpOworICAgICAgICAgICAgZXJyTXNnID0gZXJyTXNnIHx8IG1zZzsKKyAg ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVs LnVuc2V0KCdqc2NzdGFydCcpOworICAgICAgICAgIH0KKworICAgICAgICAg IHZhbCA9IHRoaXMuZ2V0KCdqc2NlbmQnKTsKKyAgICAgICAgICBpZiAoXy5p c1VuZGVmaW5lZCh2YWwpIHx8IF8uaXNOdWxsKHZhbCkgfHwKKyAgICAgICAg ICAgIFN0cmluZyh2YWwpLnJlcGxhY2UoL15ccyt8XHMrJC9nLCAnJykgPT0g JycpIHsKKyAgICAgICAgICAgIHZhciBtc2cgPSAne3sgXygnUGxlYXNlIGVu dGVyIHRoZSBlbmQgdGltZS4nKSB9fSc7CisgICAgICAgICAgICB0aGlzLmVy cm9yTW9kZWwuc2V0KCdqc2NlbmQnLCBtc2cpOworICAgICAgICAgICAgZXJy TXNnID0gZXJyTXNnIHx8IG1zZzsKKyAgICAgICAgICB9IGVsc2UgeworICAg ICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnVuc2V0KCdqc2NlbmQnKTsKKyAg ICAgICAgICB9CisKKyAgICAgICAgICByZXR1cm4gZXJyTXNnOworICAgICAg ICB9CisgICAgICB9KQorICAgIH0pOworICB9CisKKyAgcmV0dXJuIHBnQnJv d3Nlci5Ob2Rlc1sncGdhX3NjaGVkdWxlJ107Cit9KTsKZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3Bn QWdlbnQvc3RhdGljL2ltZy9jb2xsLXBnYV9qb2IucG5nIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC9zdGF0 aWMvaW1nL2NvbGwtcGdhX2pvYi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MC4uNzA1ZTIzMzE4ZjAzZTFlODE0N2U5MzNlMTk0ZTM4Y2VjZDVlMGU4MwpH SVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNTIxCnpjbWVBU0BOPyhvbEh5YHVW QnEhaWEwdnBeMHdCITYzP3d5bGBHYk1mYH5hVTJTMEtINCVhKiRPaFg0UW58 TX5hdAp6JERlPG5mQmsqPzxJblQyemFEPTZkRiNXRXUkOytxMGMkVjZ7ZFZe QypKQ2ZmVDs4KCZNcVRjYEZ1UzlYb31ZSmEKek9iYyMkUkdJbz1AME8xcksw TXA5O1phdUhgI29EZXtRUHRHPEJ1RHdSPXZ0ZXo4K3huX1Q3Z2tVdyhEMnlM dFQxCnppempCZjJjQ1l1VEFLTkEpNEo+THpxaFp3YWROQFpIITFPcEduNE01 TU98TDg+ZEBgeSRMQkEtNiYoMD0mOGpiMwp6KjYlbmdgdlR9aCMqIWV2VTxR WTBIX3x8eUJ5Vj5ZVzxlZ0dQZTJaNWZrJEw5a29FdiR4MEJnK0sqa2hMN3Nu OFoKeiVkektnM048VjZJOSY3KW95Zk40WnUjNCFAWkdvbXxLSHx4QW9JQSpK KClCbm1OV2M2NjZZRWArVVN1STlDMEpwCno9WWk3fHFuYGhnVCFwNiU1X3lZ RTdIZzxueUFZU2pieEJHalk+Q0plKTNXPWdlPkUjTT83U2l8I1hgenwqPUVh JQp6PGFfRGVzX1UqPFN+Tj5fcEF7P3JlTXhxQ050TU9DYkstbCNMfHo9PHtg PkxJc19QJFNgXlNadSktVzxJPG47VjAKeldfY1J1S0doUH1oPzExVmwyb2hZ cUVzTm9VfVJ1dXBsZktQWWhWfitXTUV9dFktTTdxWkQ0OTtVQC01VS1ZT0ln Cm94JW54WFhfWEtTMjl7dEFLLURIejI0KVpxcj4yTGwwY3YzSWJvRnl0PWFr UnswOVJ0e3hCdmhFCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9wZ0FnZW50L3N0YXRpYy9pbWcvcGdhX2pvYi1kaXNhYmxlZC5wbmcgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0Fn ZW50L3N0YXRpYy9pbWcvcGdhX2pvYi1kaXNhYmxlZC5wbmcKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMC4uYTliZjNlZjc5MWVkZDg4NGI0MGExMTQxNWEyYjA4 YjUzZjgyZmRkNwpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNjAxCnpjbWVB U0BOPyhvbEh5YHVWQnEhaWEwdnBeMHdCITYzP3d5bGBHYk1mcjJ3QjBTMEtI NCVhKiRPaFg0UW58Tlp5Pgp6PWloKGRlKmdYUz4oQVJDZV9ucTN7cDhFOWQh SyZGMSsyYUs7bTc1LS1fRWBNZE9qdW5DPERYa3F8fW95enVlOHQKelkqMkxu UiRoTWlgUjVmVHJYUnpAem09N0pEPVBZJG12PDtHPHpyYWJkdz42VDktZCF3 Ykg4THtkYD9SRzVFfWE0Cno0PUNic0pSIytDViZjYz49bm8rdz98dUU9eHgw U3wxflBvI3h3KEFeNHUwP0JeVWxAdmpoKzIjM3lUanlMR1FpMgp6LUAzVElI YUNBfFghdWZGZCo5UGY5fDhtNGQzbjhjY0coJTdeaW9Vdmd7dGF2MSU8YXgm VT9NUXBVVyRwQCt0aVcKel5jNz1Da1k2eF4hP1BQe0FXbzlFeTk9YCprSXlG e2hxSiZWdktVQnZmVSg9alkmIyVocW88Mndoe1I+dntedyMlCnoxfHJTZ2Zg WGF9RUcqeWVSbGleUns9ZTZAdCtWOTYmI0NqZzlKbEQ9ZWlKMl5RcmtxOHZz MCNTVGdofUxBKmhlWgp6eyhobVQhSGwyMjY8aStuJjE7QHRXPypEaitaQHAk YjRiSCZwMEwpdCNRezFDZCVVKT9JcTlaLWNHLUs7VyVYU18KeiZXckMkRlRV bilRQCl2S0psJFJ9JCEyRGtAeG5YYjdhT0kwSzNiJEl0b00yNnsoQ3RhWl9C JXxmQTY9THRIMHc+CnpTJClIYSsrLVdVJWl7TW94cUFFeUpqV2o7REIkYUR4 K25faGMtMGN1aD8xMVZsMm9oWXFFc05vVX1SdXVwbGZLUAp6WWhWfitXTUV9 dFktTTdxWkQ0OTtVQC01VS1ZT0lneCVueFhYX1hLUzI5e3RBSy1ESHoyNCla cXI+MkxsMGN2M0kKTWJvRnl0PWFrUnswN1JidmFSMn1TCgpsaXRlcmFsIDAK SGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3N0YXRpYy9pbWcvcGdh X2pvYi5wbmcgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9wZ0FnZW50L3N0YXRpYy9pbWcvcGdhX2pvYi5wbmcKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMC4uNzc1NDY3NDIyOWYzNmRlMjNhOGVjOTAyMzE5 Y2MyMGI2NjM5ZjQxZQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNjc4Cnpj bWVBU0BOPyhvbEh5YHVWQnEhaWEwdnBeMHdCITYzP3d5bGBHWGw0ODJKS3hM Ul44fCYwRHRBKWk/YkF8TnJtNQp6fDNDbCFgfVhfcXIoYntHe2BtOXErd1Vo fGUlPEBAUSFaZmIlQDAyPXp4e1VaXzFEe1g/JSY/TTxLRnlmNTQtOXcKekcq LU9keDtgYXE7aTFsK019M1d0SSUqeUBtT1pLfWN3QyhNeXM3JkJxOFlFWnRv P1pGYGlDI3lVdEdITWM+YktuCnpES1hFPjNjQWF0ZkJvX0UhX1BtREtMNVBe PUY4cDVsYihlNWVWOC16IV9Eak9mQmJwej9ib0haLSEyfEZ7PjBiKQp6V3FR aXBfUyQhIXpkISVfPiVwZz1vJEdGJWVFSD9qZ0V2b0g5aUtZZS08aV87Xnh+ IUtANHQ3Znk7O0JWYHFBd04KenA0ZUh2akVVP3s/fHdMVV9TSUxQa0c9Uih6 dytBN2R2N2pRKkZQfmdgUGtFYWAxJDkzUGRePCNkRmY3Rjwqa1ZtCnomK1Ir NXxLOTUoK1lZPThATHlDfmRec15qTiNsNHFGaG0kamc4WUlSOUc9fXMxOTZo UC1DZFhrZDMtKHJJaCtMXgp6aztPcFQxQn41SFg0P1Q3aGRmO3pMbkpRU19G b2tgNnVgckp4SFpWQHZlQHoreVJBamElbTRxRVp7Jkw4dHlYT2AKeih7aDF3 eStoLVJ1V1lBMFc9an0qbj4zMU83MG1rYVJBeE9WU0xSb3ozb1d5dipPPWAt eXBsc28ocSgkfG14fGhkCno0TFZiN0d9O2JMJStRKGxnTnJURnIpeXp8bD0w MSZlR0QlREA7ezRzciN7aVQ4WVJvb1pEWTNRWT8hb2woRHYpPgp6aGR3ciRl Qml4I1E5fUxsTyZOfVVBLXpBUnIqNjJIUX5zTS16fG1ebngjPlQ/bWVzJWM9 RmhQOD9kIVNnem92Y3EKenc+O3FlZEgoeDk4UUNrdVNMYT0rP2c5RW53WnRg fEJxZ3lWKWhmOXQ2LVk0ezg1a1BxOFhEO3U3PXs9YlNlWTFHCnpuVjQhRG18 N1ZhJXpMTXwzUG5TMWVvQUlxQn05WFBDMEdNY3dUWUYxOEFRWFc+N2k/WThX PW9Ye2FuXkxCe1RzNQpEUSRBSjQKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoK ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL3BnQWdlbnQvc3RlcHMvX19pbml0X18ucHkgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3N0 ZXBzL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLmM1YjJhNzQKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3N0ZXBz L19faW5pdF9fLnB5CkBAIC0wLDAgKzEsNTM2IEBACisjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FM IFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTYsIFRoZSBw Z0FkbWluIERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyBy ZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisiIiJJbXBsZW1lbnRzIHBn QWdlbnQgSm9iIFN0ZXAgTm9kZSIiIgorCitpbXBvcnQganNvbgorZnJvbSBm dW5jdG9vbHMgaW1wb3J0IHdyYXBzCisKK2Zyb20gZmxhc2sgaW1wb3J0IHJl bmRlcl90ZW1wbGF0ZSwgbWFrZV9yZXNwb25zZSwgcmVxdWVzdAorZnJvbSBm bGFza19iYWJlbCBpbXBvcnQgZ2V0dGV4dAorZnJvbSBwZ2FkbWluLmJyb3dz ZXIuY29sbGVjdGlvbiBpbXBvcnQgQ29sbGVjdGlvbk5vZGVNb2R1bGUKK2Zy b20gcGdhZG1pbi5icm93c2VyLnV0aWxzIGltcG9ydCBQR0NoaWxkTm9kZVZp ZXcKK2Zyb20gcGdhZG1pbi51dGlscy5hamF4IGltcG9ydCBtYWtlX2pzb25f cmVzcG9uc2UsIGdvbmUsIFwKKyAgICBtYWtlX3Jlc3BvbnNlIGFzIGFqYXhf cmVzcG9uc2UsIGludGVybmFsX3NlcnZlcl9lcnJvcgorZnJvbSBwZ2FkbWlu LnV0aWxzLmRyaXZlciBpbXBvcnQgZ2V0X2RyaXZlcgorCitmcm9tIGNvbmZp ZyBpbXBvcnQgUEdfREVGQVVMVF9EUklWRVIKKworCitjbGFzcyBKb2JTdGVw TW9kdWxlKENvbGxlY3Rpb25Ob2RlTW9kdWxlKToKKyAgICAiIiIKKyAgICBj bGFzcyBKb2JTdGVwTW9kdWxlKENvbGxlY3Rpb25Ob2RlTW9kdWxlKQorCisg ICAgICAgIEEgbW9kdWxlIGNsYXNzIGZvciBKb2JTdGVwIG5vZGUgZGVyaXZl ZCBmcm9tIENvbGxlY3Rpb25Ob2RlTW9kdWxlLgorCisgICAgTWV0aG9kczoK KyAgICAtLS0tLS0tCisgICAgKiBnZXRfbm9kZXMoZ2lkLCBzaWQsIGppZCkK KyAgICAgIC0gTWV0aG9kIGlzIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIGJyb3dz ZXIgY29sbGVjdGlvbiBub2RlLgorCisgICAgKiBub2RlX2lub2RlKCkKKyAg ICAgIC0gTWV0aG9kIGlzIG92ZXJyaWRkZW4gZnJvbSBpdHMgYmFzZSBjbGFz cyB0byBtYWtlIHRoZSBub2RlIGFzIGxlYWYgbm9kZS4KKyAgICAiIiIKKwor ICAgIE5PREVfVFlQRSA9ICdwZ2Ffam9ic3RlcCcKKyAgICBDT0xMRUNUSU9O X0xBQkVMID0gZ2V0dGV4dCgiU3RlcHMiKQorCisgICAgZGVmIGdldF9ub2Rl cyhzZWxmLCBnaWQsIHNpZCwgamlkKToKKyAgICAgICAgIiIiCisgICAgICAg IE1ldGhvZCBpcyB1c2VkIHRvIGdlbmVyYXRlIHRoZSBicm93c2VyIGNvbGxl Y3Rpb24gbm9kZQorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6 IFNlcnZlciBHcm91cCBJRAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSUQK KyAgICAgICAgICAgIGppZDogRGF0YWJhc2UgSWQKKyAgICAgICAgIiIiCisg ICAgICAgIHlpZWxkIHNlbGYuZ2VuZXJhdGVfYnJvd3Nlcl9jb2xsZWN0aW9u X25vZGUoamlkKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIG5vZGVfaW5v ZGUoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBPdmVycmlkZSB0aGlz IHByb3BlcnR5IHRvIG1ha2UgdGhlIG5vZGUgYSBsZWFmIG5vZGUuCisKKyAg ICAgICAgUmV0dXJuczogRmFsc2UgYXMgdGhpcyBpcyB0aGUgbGVhZiBub2Rl CisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIEBw cm9wZXJ0eQorICAgIGRlZiBzY3JpcHRfbG9hZChzZWxmKToKKyAgICAgICAg IiIiCisgICAgICAgIExvYWQgdGhlIG1vZHVsZSBzY3JpcHQgZm9yIGxhbmd1 YWdlLCB3aGVuIGFueSBvZiB0aGUgZGF0YWJhc2Ugbm9kZXMgYXJlIGluaXRp YWxpemVkLgorCisgICAgICAgIFJldHVybnM6IG5vZGUgdHlwZSBvZiB0aGUg c2VydmVyIG1vZHVsZS4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiAn cGdhX2pvYicKKworCitibHVlcHJpbnQgPSBKb2JTdGVwTW9kdWxlKF9fbmFt ZV9fKQorCisKK2NsYXNzIEpvYlN0ZXBWaWV3KFBHQ2hpbGROb2RlVmlldyk6 CisgICAgIiIiCisgICAgY2xhc3MgSm9iU3RlcFZpZXcoUEdDaGlsZE5vZGVW aWV3KQorCisgICAgICAgIEEgdmlldyBjbGFzcyBmb3IgSm9iU3RlcCBub2Rl IGRlcml2ZWQgZnJvbSBQR0NoaWxkTm9kZVZpZXcuIFRoaXMgY2xhc3MgaXMK KyAgICAgICAgcmVzcG9uc2libGUgZm9yIGFsbCB0aGUgc3R1ZmYgcmVsYXRl ZCB0byB2aWV3IGxpa2UgdXBkYXRpbmcgbGFuZ3VhZ2UKKyAgICAgICAgbm9k ZSwgc2hvd2luZyBwcm9wZXJ0aWVzLCBzaG93aW5nIHNxbCBpbiBzcWwgcGFu ZS4KKworICAgIE1ldGhvZHM6CisgICAgLS0tLS0tLQorICAgICogX19pbml0 X18oKiprd2FyZ3MpCisgICAgICAtIE1ldGhvZCBpcyB1c2VkIHRvIGluaXRp YWxpemUgdGhlIEpvYlN0ZXBWaWV3IGFuZCBpdCdzIGJhc2Ugdmlldy4KKwor ICAgICogbW9kdWxlX2pzKCkKKyAgICAgIC0gVGhpcyBwcm9wZXJ0eSBkZWZp bmVzIChpZiBqYXZhc2NyaXB0KSBleGlzdHMgZm9yIHRoaXMgbm9kZS4KKyAg ICAgICAgT3ZlcnJpZGUgdGhpcyBwcm9wZXJ0eSBmb3IgeW91ciBvd24gbG9n aWMKKworICAgICogY2hlY2tfcHJlY29uZGl0aW9uKCkKKyAgICAgIC0gVGhp cyBmdW5jdGlvbiB3aWxsIGJlaGF2ZSBhcyBhIGRlY29yYXRvciB3aGljaCB3 aWxsIGNoZWNrcworICAgICAgICBkYXRhYmFzZSBjb25uZWN0aW9uIGJlZm9y ZSBydW5uaW5nIHZpZXcsIGl0IHdpbGwgYWxzbyBhdHRhY2hlcworICAgICAg ICBtYW5hZ2VyLGNvbm4gJiB0ZW1wbGF0ZV9wYXRoIHByb3BlcnRpZXMgdG8g c2VsZgorCisgICAgKiBsaXN0KCkKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiBp cyB1c2VkIHRvIGxpc3QgYWxsIHRoZSBsYW5ndWFnZSBub2RlcyB3aXRoaW4g dGhhdCBjb2xsZWN0aW9uLgorCisgICAgKiBub2RlcygpCisgICAgICAtIFRo aXMgZnVuY3Rpb24gd2lsbCB1c2VkIHRvIGNyZWF0ZSBhbGwgdGhlIGNoaWxk IG5vZGUgd2l0aGluIHRoYXQgY29sbGVjdGlvbi4KKyAgICAgICAgSGVyZSBp dCB3aWxsIGNyZWF0ZSBhbGwgdGhlIGxhbmd1YWdlIG5vZGUuCisKKyAgICAq IHByb3BlcnRpZXMoZ2lkLCBzaWQsIGppZCwganN0aWQpCisgICAgICAtIFRo aXMgZnVuY3Rpb24gd2lsbCBzaG93IHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBz ZWxlY3RlZCBsYW5ndWFnZSBub2RlCisKKyAgICAqIHVwZGF0ZShnaWQsIHNp ZCwgamlkLCBqc3RpZCkKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIHVw ZGF0ZSB0aGUgZGF0YSBmb3IgdGhlIHNlbGVjdGVkIGxhbmd1YWdlIG5vZGUK KworICAgICogbXNxbChnaWQsIHNpZCwgamlkLCBqc3RpZCkKKyAgICAgIC0g VGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHJldHVybiBtb2RpZmllZCBTUUwg Zm9yIHRoZSBzZWxlY3RlZCBsYW5ndWFnZSBub2RlCisgICAgIiIiCisKKyAg ICBub2RlX3R5cGUgPSBibHVlcHJpbnQubm9kZV90eXBlCisKKyAgICBwYXJl bnRfaWRzID0gWworICAgICAgICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ2dp ZCd9LAorICAgICAgICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ3NpZCd9LAor ICAgICAgICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ2ppZCd9CisgICAgXQor ICAgIGlkcyA9IFsKKyAgICAgICAgeyd0eXBlJzogJ2ludCcsICdpZCc6ICdq c3RpZCd9CisgICAgXQorCisgICAgb3BlcmF0aW9ucyA9IGRpY3QoeworICAg ICAgICAnb2JqJzogWworICAgICAgICAgICAgeydnZXQnOiAncHJvcGVydGll cycsICdwdXQnOiAndXBkYXRlJ30sCisgICAgICAgICAgICB7J2dldCc6ICds aXN0JywgJ3Bvc3QnOiAnY3JlYXRlJ30KKyAgICAgICAgXSwKKyAgICAgICAg J25vZGVzJzogW3snZ2V0JzogJ25vZGVzJ30sIHsnZ2V0JzogJ25vZGVzJ31d LAorICAgICAgICAnbXNxbCc6IFt7J2dldCc6ICdtc3FsJ30sIHsnZ2V0Jzog J21zcWwnfV0sCisgICAgICAgICdzdGF0cyc6IFt7J2dldCc6ICdzdGF0aXN0 aWNzJ31dLAorICAgICAgICAnbW9kdWxlLmpzJzogW3t9LCB7fSwgeydnZXQn OiAnbW9kdWxlX2pzJ31dCisgICAgfSkKKworICAgIGRlZiBfaW5pdF8oc2Vs ZiwgKiprd2FyZ3MpOgorICAgICAgICAiIiIKKyAgICAgICAgTWV0aG9kIGlz IHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgSm9iU3RlcFZpZXcgYW5kIGl0cyBi YXNlIHZpZXcuCisgICAgICAgIEluaXRpYWxpemUgYWxsIHRoZSB2YXJpYWJs ZXMgY3JlYXRlL3VzZWQgZHluYW1pY2FsbHkgbGlrZSBjb25uLCB0ZW1wbGF0 ZV9wYXRoLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICAqKmt3YXJn czoKKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuY29ubiA9IE5vbmUKKyAg ICAgICAgc2VsZi50ZW1wbGF0ZV9wYXRoID0gTm9uZQorICAgICAgICBzZWxm Lm1hbmFnZXIgPSBOb25lCisKKyAgICAgICAgc3VwZXIoSm9iU3RlcFZpZXcs IHNlbGYpLl9faW5pdF9fKCoqa3dhcmdzKQorCisgICAgZGVmIG1vZHVsZV9q cyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgcHJvcGVydHkg ZGVmaW5lcyB3aGV0aGVyIGphdmFzY3JpcHQgZXhpc3RzIGZvciB0aGlzIG5v ZGUuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gbWFrZV9yZXNwb25z ZSgKKyAgICAgICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAg ICAgICAicGdhX2pvYnN0ZXAvanMvcGdhX2pvYnN0ZXAuanMiLAorICAgICAg ICAgICAgICAgIF89Z2V0dGV4dAorICAgICAgICAgICAgKSwKKyAgICAgICAg ICAgIDIwMCwgeydDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC1qYXZh c2NyaXB0J30KKyAgICAgICAgKQorCisgICAgZGVmIGNoZWNrX3ByZWNvbmRp dGlvbihmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24g d2lsbCBiZWhhdmUgYXMgYSBkZWNvcmF0b3Igd2hpY2ggd2lsbCBjaGVjayB0 aGUKKyAgICAgICAgZGF0YWJhc2UgY29ubmVjdGlvbiBiZWZvcmUgcnVubmlu ZyB0aGUgdmlldy4gSXQgYWxzbyBhdHRhY2hlcworICAgICAgICBtYW5hZ2Vy LCBjb25uICYgdGVtcGxhdGVfcGF0aCBwcm9wZXJ0aWVzIHRvIHNlbGYKKyAg ICAgICAgIiIiCisKKyAgICAgICAgQHdyYXBzKGYpCisgICAgICAgIGRlZiB3 cmFwKCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICAjIEhlcmUgYXJn c1swXSB3aWxsIGhvbGQgc2VsZiAmIGt3YXJncyB3aWxsIGhvbGQgZ2lkLHNp ZCxqaWQKKyAgICAgICAgICAgIHNlbGYgPSBhcmdzWzBdCisgICAgICAgICAg ICBzZWxmLmRyaXZlciA9IGdldF9kcml2ZXIoUEdfREVGQVVMVF9EUklWRVIp CisgICAgICAgICAgICBzZWxmLm1hbmFnZXIgPSBzZWxmLmRyaXZlci5jb25u ZWN0aW9uX21hbmFnZXIoa3dhcmdzWydzaWQnXSkKKyAgICAgICAgICAgIHNl bGYuY29ubiA9IHNlbGYubWFuYWdlci5jb25uZWN0aW9uKCkKKworICAgICAg ICAgICAgc2VsZi50ZW1wbGF0ZV9wYXRoID0gJ3BnYV9qb2JzdGVwL3NxbC9w cmUzLjQnCisKKyAgICAgICAgICAgIGlmIG5vdCAoJ3BnQWdlbnQnIGluIHNl bGYubWFuYWdlci5kYl9pbmZvKToKKyAgICAgICAgICAgICAgICBzdGF0dXMs IHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoIiIiCitTRUxFQ1QgRVhJ U1RTKAorICAgICAgICBTRUxFQ1QgMSBGUk9NIGluZm9ybWF0aW9uX3NjaGVt YS5jb2x1bW5zCisgICAgICAgIFdIRVJFCisgICAgICAgICAgICB0YWJsZV9z Y2hlbWE9J3BnYWdlbnQnIEFORCB0YWJsZV9uYW1lPSdwZ2Ffam9ic3RlcCcg QU5ECisgICAgICAgICAgICBjb2x1bW5fbmFtZT0nanN0Y29ubnN0cicKKyAg ICApIGhhc19jb25uc3RyIiIiKQorCisgICAgICAgICAgICAgICAgc2VsZi5t YW5hZ2VyLmRiX2luZm9bJ3BnQWdlbnQnXSA9IHJlc1sncm93cyddWzBdCisK KyAgICAgICAgICAgIHJldHVybiBmKCphcmdzLCAqKmt3YXJncykKKworICAg ICAgICByZXR1cm4gd3JhcAorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgor ICAgIGRlZiBsaXN0KHNlbGYsIGdpZCwgc2lkLCBqaWQpOgorICAgICAgICAi IiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGxpc3QgYWxs IHRoZSBsYW5ndWFnZSBub2RlcyB3aXRoaW4gdGhhdCBjb2xsZWN0aW9uLgor CisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91 cCBJRAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSUQKKyAgICAgICAgICAg IGppZDogSm9iIElECisgICAgICAgICIiIgorICAgICAgICBzcWwgPSByZW5k ZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1w bGF0ZV9wYXRoLCAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAgICAgICBq aWQ9amlkLAorICAgICAgICAgICAgaGFzX2Nvbm5zdHI9c2VsZi5tYW5hZ2Vy LmRiX2luZm9bJ3BnQWdlbnQnXVsnaGFzX2Nvbm5zdHInXQorICAgICAgICAp CisgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGlj dChzcWwpCisKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAg IHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQor CisgICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKAorICAgICAgICAgICAg cmVzcG9uc2U9cmVzWydyb3dzJ10sCisgICAgICAgICAgICBzdGF0dXM9MjAw CisgICAgICAgICkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBk ZWYgbm9kZXMoc2VsZiwgZ2lkLCBzaWQsIGppZCwganN0aWQ9Tm9uZSk6Cisg ICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8g Y3JlYXRlIGFsbCB0aGUgY2hpbGQgbm9kZXMgd2l0aGluIHRoZSBjb2xsZWN0 aW9uLgorICAgICAgICBIZXJlIGl0IHdpbGwgY3JlYXRlIGFsbCB0aGUgbGFu Z3VhZ2Ugbm9kZXMuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGdp ZDogU2VydmVyIEdyb3VwIElECisgICAgICAgICAgICBzaWQ6IFNlcnZlciBJ RAorICAgICAgICAgICAgamlkOiBKb2IgSUQKKyAgICAgICAgIiIiCisgICAg ICAgIHJlcyA9IFtdCisgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgK KyAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdu b2Rlcy5zcWwnXSksCisgICAgICAgICAgICBqc3RpZCA9IGpzdGlkLAorICAg ICAgICAgICAgamlkID0gamlkCisgICAgICAgICkKKworICAgICAgICBzdGF0 dXMsIHJlc3VsdCA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoc3FsKQor CisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4g aW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlc3VsdCkKKworICAg ICAgICBpZiBqc3RpZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIGxl bihyZXN1bHRbJ3Jvd3MnXSkgPT0gMDoKKyAgICAgICAgICAgICAgICByZXR1 cm4gZ29uZShlcnJvcm1zZz0iQ291bGRuJ3QgZmluZCB0aGUgc3BlY2lmaWVk IGpvYiBzdGVwLiIpCisKKyAgICAgICAgICAgIHJvdyA9IHJlc3VsdFsncm93 cyddWzBdCisgICAgICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNl KAorICAgICAgICAgICAgICAgIHNlbGYuYmx1ZXByaW50LmdlbmVyYXRlX2Jy b3dzZXJfbm9kZSgKKyAgICAgICAgICAgICAgICAgICAgcm93Wydqc3RpZCdd LAorICAgICAgICAgICAgICAgICAgICByb3dbJ2pzdGpvYmlkJ10sCisgICAg ICAgICAgICAgICAgICAgIHJvd1snanN0bmFtZSddLAorICAgICAgICAgICAg ICAgICAgICBpY29uPSJpY29uLXBnYV9qb2JzdGVwIiwKKyAgICAgICAgICAg ICAgICAgICAgZW5hYmxlZD1yb3dbJ2pzdGVuYWJsZWQnXSwKKyAgICAgICAg ICAgICAgICAgICAga2luZD1yb3dbJ2pzdGtpbmQnXQorICAgICAgICAgICAg ICAgICkKKyAgICAgICAgICAgICkKKworICAgICAgICBmb3Igcm93IGluIHJl c3VsdFsncm93cyddOgorICAgICAgICAgICAgcmVzLmFwcGVuZCgKKyAgICAg ICAgICAgICAgICBzZWxmLmJsdWVwcmludC5nZW5lcmF0ZV9icm93c2VyX25v ZGUoCisgICAgICAgICAgICAgICAgICAgIHJvd1snanN0aWQnXSwKKyAgICAg ICAgICAgICAgICAgICAgcm93Wydqc3Rqb2JpZCddLAorICAgICAgICAgICAg ICAgICAgICByb3dbJ2pzdG5hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAg aWNvbj0iaWNvbi1wZ2Ffam9ic3RlcCIsCisgICAgICAgICAgICAgICAgICAg IGVuYWJsZWQ9cm93Wydqc3RlbmFibGVkJ10sCisgICAgICAgICAgICAgICAg ICAgIGtpbmQ9cm93Wydqc3RraW5kJ10KKyAgICAgICAgICAgICAgICApCisg ICAgICAgICAgICApCisKKyAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNw b25zZSgKKyAgICAgICAgICAgIGRhdGE9cmVzLAorICAgICAgICAgICAgc3Rh dHVzPTIwMAorICAgICAgICApCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9u CisgICAgZGVmIHByb3BlcnRpZXMoc2VsZiwgZ2lkLCBzaWQsIGppZCwganN0 aWQpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxs IHNob3cgdGhlIHByb3BlcnRpZXMgb2YgdGhlIHNlbGVjdGVkIGxhbmd1YWdl IG5vZGUuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGdpZDogU2Vy dmVyIEdyb3VwIElECisgICAgICAgICAgICBzaWQ6IFNlcnZlciBJRAorICAg ICAgICAgICAgamlkOiBKb2IgSUQKKyAgICAgICAgICAgIGpzdGlkOiBKb2JT dGVwIElECisgICAgICAgICIiIgorICAgICAgICBzcWwgPSByZW5kZXJfdGVt cGxhdGUoCisgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9w YXRoLCAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAgICAgICBqc3RpZD1q c3RpZCwKKyAgICAgICAgICAgIGppZD1qaWQsCisgICAgICAgICAgICBoYXNf Y29ubnN0cj1zZWxmLm1hbmFnZXIuZGJfaW5mb1sncGdBZ2VudCddWydoYXNf Y29ubnN0ciddCisgICAgICAgICkKKyAgICAgICAgc3RhdHVzLCByZXMgPSBz ZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KHNxbCkKKworICAgICAgICBpZiBub3Qg c3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9l cnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgaWYgbGVuKHJlc1sncm93 cyddKSA9PSAwOgorICAgICAgICAgICAgcmV0dXJuIGdvbmUoZXJyb3Jtc2c9 IkNvdWxkbid0IGZpbmQgdGhlIHNwZWNpZmllZCBqb2Igc3RlcC4iKQorCisg ICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKAorICAgICAgICAgICAgcmVz cG9uc2U9cmVzWydyb3dzJ11bMF0sCisgICAgICAgICAgICBzdGF0dXM9MjAw CisgICAgICAgICkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBk ZWYgY3JlYXRlKHNlbGYsIGdpZCwgc2lkLCBqaWQpOgorICAgICAgICAiIiIK KyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIHVwZGF0ZSB0aGUgZGF0YSBm b3IgdGhlIHNlbGVjdGVkIGxhbmd1YWdlIG5vZGUuCisKKyAgICAgICAgQXJn czoKKyAgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElECisgICAgICAg ICAgICBzaWQ6IFNlcnZlciBJRAorICAgICAgICAgICAgamlkOiBKb2IgSUQK KyAgICAgICAgIiIiCisgICAgICAgIGRhdGEgPSB7fQorICAgICAgICBmb3Ig aywgdiBpbiByZXF1ZXN0LmFyZ3MuaXRlbXMoKToKKyAgICAgICAgICAgIHRy eToKKyAgICAgICAgICAgICAgICBkYXRhW2tdID0ganNvbi5sb2FkcygKKyAg ICAgICAgICAgICAgICAgICAgdi5kZWNvZGUoJ3V0Zi04JykgaWYgaGFzYXR0 cih2LCAnZGVjb2RlJykgZWxzZSB2CisgICAgICAgICAgICAgICAgKQorICAg ICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAg ZGF0YVtrXSA9IHYKKworICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUo CisgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAn Y3JlYXRlLnNxbCddKSwKKyAgICAgICAgICAgIGppZD1qaWQsCisgICAgICAg ICAgICBkYXRhPWRhdGEsCisgICAgICAgICAgICBoYXNfY29ubnN0cj1zZWxm Lm1hbmFnZXIuZGJfaW5mb1sncGdBZ2VudCddWydoYXNfY29ubnN0ciddCisg ICAgICAgICkKKworICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5l eGVjdXRlX3NjYWxhcihzcWwpCisKKyAgICAgICAgaWYgbm90IHN0YXR1czoK KyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJy b3Jtc2c9cmVzKQorCisgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgK KyAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdu b2Rlcy5zcWwnXSksCisgICAgICAgICAgICBqc3RpZCA9IHJlcywKKyAgICAg ICAgICAgIGppZCA9IGppZAorICAgICAgICApCisgICAgICAgIHN0YXR1cywg cmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShzcWwpCisKKyAgICAg ICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgIHJvdyA9 IHJlc1sncm93cyddWzBdCisgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVz cG9uc2UoCisgICAgICAgICAgICBkYXRhPXNlbGYuYmx1ZXByaW50LmdlbmVy YXRlX2Jyb3dzZXJfbm9kZSgKKyAgICAgICAgICAgICAgICByb3dbJ2pzdGlk J10sCisgICAgICAgICAgICAgICAgcm93Wydqc3Rqb2JpZCddLAorICAgICAg ICAgICAgICAgIHJvd1snanN0bmFtZSddLAorICAgICAgICAgICAgICAgIGlj b249Imljb24tcGdhX2pvYnN0ZXAiCisgICAgICAgICAgICApCisgICAgICAg ICkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgdXBkYXRl KHNlbGYsIGdpZCwgc2lkLCBqaWQsIGpzdGlkKToKKyAgICAgICAgIiIiCisg ICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCB1cGRhdGUgdGhlIGRhdGEgZm9y IHRoZSBzZWxlY3RlZCBsYW5ndWFnZSBub2RlLgorCisgICAgICAgIEFyZ3M6 CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJRAorICAgICAgICAg ICAgc2lkOiBTZXJ2ZXIgSUQKKyAgICAgICAgICAgIGppZDogSm9iIElECisg ICAgICAgICAgICBqc3RpZDogSm9iU3RlcCBJRAorICAgICAgICAiIiIKKyAg ICAgICAgZGF0YSA9IHJlcXVlc3QuZm9ybSBpZiByZXF1ZXN0LmZvcm0gZWxz ZSBqc29uLmxvYWRzKAorICAgICAgICAgICAgcmVxdWVzdC5kYXRhLmRlY29k ZSgndXRmLTgnKQorICAgICAgICApCisKKyAgICAgICAgaWYgKAorICAgICAg ICAgICAgc2VsZi5tYW5hZ2VyLmRiX2luZm9bJ3BnQWdlbnQnXVsnaGFzX2Nv bm5zdHInXSBhbmQKKyAgICAgICAgICAgICdqc3Rjb25udHlwZScgbm90IGlu IGRhdGEgYW5kCisgICAgICAgICAgICAoJ2pzdGRibmFtZScgaW4gZGF0YSBv ciAnanN0Y29ubnN0cicgaW4gZGF0YSkKKyAgICAgICAgKToKKyAgICAgICAg ICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAi LyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAncHJvcGVydGllcy5zcWwn XSksCisgICAgICAgICAgICAgICAganN0aWQ9anN0aWQsCisgICAgICAgICAg ICAgICAgamlkPWppZCwKKyAgICAgICAgICAgICAgICBoYXNfY29ubnN0cj1z ZWxmLm1hbmFnZXIuZGJfaW5mb1sncGdBZ2VudCddWydoYXNfY29ubnN0cidd CisgICAgICAgICAgICApCisgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNl bGYuY29ubi5leGVjdXRlX2RpY3Qoc3FsKQorCisgICAgICAgICAgICBpZiBu b3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAgICBpZiBs ZW4ocmVzWydyb3dzJ10pID09IDA6CisgICAgICAgICAgICAgICAgcmV0dXJu IGdvbmUoCisgICAgICAgICAgICAgICAgICAgIGVycm9ybXNnPWdldHRleHQo CisgICAgICAgICAgICAgICAgICAgICAgICAiQ291bGRuJ3QgZmluZCB0aGUg c3BlY2lmaWVkIGpvYiBzdGVwLiIKKyAgICAgICAgICAgICAgICAgICAgKQor ICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHJvdyA9IHJlc1sncm93 cyddWzBdCisgICAgICAgICAgICBkYXRhWydqc3Rjb25udHlwZSddID0gcm93 Wydqc3Rjb25udHlwZSddCisKKyAgICAgICAgICAgIGlmIHJvd1snanN0Y29u bnR5cGUnXToKKyAgICAgICAgICAgICAgICBpZiBub3QgKCdqc3RkYm5hbWUn IGluIGRhdGEpOgorICAgICAgICAgICAgICAgICAgICBkYXRhWydqc3RkYm5h bWUnXSA9IHJvd1snanN0ZGJuYW1lJ10KKyAgICAgICAgICAgIGVsc2U6Cisg ICAgICAgICAgICAgICAgaWYgbm90ICgnanN0Y29ubnN0cicgaW4gZGF0YSk6 CisgICAgICAgICAgICAgICAgICAgIGRhdGFbJ2pzdGNvbm5zdHInXSA9IHJv d1snanN0Y29ubnN0ciddCisKKyAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBs YXRlKAorICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0 aCwgJ3VwZGF0ZS5zcWwnXSksCisgICAgICAgICAgICBqaWQ9amlkLAorICAg ICAgICAgICAganN0aWQ9anN0aWQsCisgICAgICAgICAgICBkYXRhPWRhdGEs CisgICAgICAgICAgICBoYXNfY29ubnN0cj1zZWxmLm1hbmFnZXIuZGJfaW5m b1sncGdBZ2VudCddWydoYXNfY29ubnN0ciddCisgICAgICAgICkKKworICAg ICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX3ZvaWQoc3Fs KQorCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1 cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAg ICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAiLyIu am9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnbm9kZXMuc3FsJ10pLAorICAg ICAgICAgICAganN0aWQgPSBqc3RpZCwKKyAgICAgICAgICAgIGppZCA9IGpp ZAorICAgICAgICApCisgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25u LmV4ZWN1dGVfMmRhcnJheShzcWwpCisKKyAgICAgICAgaWYgbm90IHN0YXR1 czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3Io ZXJyb3Jtc2c9cmVzKQorCisgICAgICAgIHJvdyA9IHJlc1sncm93cyddWzBd CisgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAg ICAgICBzZWxmLmJsdWVwcmludC5nZW5lcmF0ZV9icm93c2VyX25vZGUoCisg ICAgICAgICAgICAgICAgcm93Wydqc3RpZCddLAorICAgICAgICAgICAgICAg IHJvd1snanN0am9iaWQnXSwKKyAgICAgICAgICAgICAgICByb3dbJ2pzdG5h bWUnXSwKKyAgICAgICAgICAgICAgICBpY29uPSJpY29uLXBnYV9qb2JzdGVw IgorICAgICAgICAgICAgKQorICAgICAgICApCisKKyAgICBAY2hlY2tfcHJl Y29uZGl0aW9uCisgICAgZGVmIG1zcWwoc2VsZiwgZ2lkLCBzaWQsIGppZCwg anN0aWQ9Tm9uZSk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0 aW9uIGlzIHVzZWQgdG8gcmV0dXJuIG1vZGlmaWVkIFNRTCBmb3IgdGhlIHNl bGVjdGVkIGxhbmd1YWdlIG5vZGUuCisKKyAgICAgICAgQXJnczoKKyAgICAg ICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElECisgICAgICAgICAgICBzaWQ6 IFNlcnZlciBJRAorICAgICAgICAgICAgamlkOiBKb2IgSUQKKyAgICAgICAg ICAgIGpzdGlkOiBKb2IgU3RlcCBJRAorICAgICAgICAiIiIKKyAgICAgICAg ZGF0YSA9IHt9CisgICAgICAgIHNxbCA9ICcnCisgICAgICAgIGZvciBrLCB2 IGluIHJlcXVlc3QuYXJncy5pdGVtcygpOgorICAgICAgICAgICAgdHJ5Ogor ICAgICAgICAgICAgICAgIGRhdGFba10gPSBqc29uLmxvYWRzKAorICAgICAg ICAgICAgICAgICAgICB2LmRlY29kZSgndXRmLTgnKSBpZiBoYXNhdHRyKHYs ICdkZWNvZGUnKSBlbHNlIHYKKyAgICAgICAgICAgICAgICApCisgICAgICAg ICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICBkYXRh W2tdID0gdgorCisgICAgICAgIGlmIGpzdGlkIGlzIE5vbmU6CisgICAgICAg ICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAg Ii8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ2NyZWF0ZS5zcWwnXSks CisgICAgICAgICAgICAgICAgamlkPWppZCwKKyAgICAgICAgICAgICAgICBk YXRhPWRhdGEsCisgICAgICAgICAgICAgICAgaGFzX2Nvbm5zdHI9c2VsZi5t YW5hZ2VyLmRiX2luZm9bJ3BnQWdlbnQnXVsnaGFzX2Nvbm5zdHInXQorICAg ICAgICAgICAgKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgKAor ICAgICAgICAgICAgICAgIHNlbGYubWFuYWdlci5kYl9pbmZvWydwZ0FnZW50 J11bJ2hhc19jb25uc3RyJ10gYW5kCisgICAgICAgICAgICAgICAgJ2pzdGNv bm50eXBlJyBub3QgaW4gZGF0YSBhbmQKKyAgICAgICAgICAgICAgICAoJ2pz dGRibmFtZScgaW4gZGF0YSBvciAnanN0Y29ubnN0cicgaW4gZGF0YSkKKyAg ICAgICAgICAgICk6CisgICAgICAgICAgICAgICAgc3FsID0gcmVuZGVyX3Rl bXBsYXRlKAorICAgICAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50 ZW1wbGF0ZV9wYXRoLCAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAgICAg ICAgICAgICAgIGpzdGlkPWpzdGlkLAorICAgICAgICAgICAgICAgICAgICBq aWQ9amlkLAorICAgICAgICAgICAgICAgICAgICBoYXNfY29ubnN0cj1zZWxm Lm1hbmFnZXIuZGJfaW5mb1sncGdBZ2VudCddWydoYXNfY29ubnN0ciddCisg ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIHN0YXR1cywgcmVz ID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChzcWwpCisKKyAgICAgICAgICAg ICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgICAgICByZXR1 cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAg ICAgICAgICAgICAgIGlmIGxlbihyZXNbJ3Jvd3MnXSkgPT0gMDoKKyAgICAg ICAgICAgICAgICAgICAgcmV0dXJuIGdvbmUoCisgICAgICAgICAgICAgICAg ICAgICAgICBlcnJvcm1zZz1nZXR0ZXh0KAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJDb3VsZG4ndCBmaW5kIHRoZSBzcGVjaWZpZWQgam9iIHN0 ZXAuIgorICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAg ICAgICAgICApCisgICAgICAgICAgICAgICAgcm93ID0gcmVzWydyb3dzJ11b MF0KKyAgICAgICAgICAgICAgICBkYXRhWydqc3Rjb25udHlwZSddID0gcm93 Wydqc3Rjb25udHlwZSddCisKKyAgICAgICAgICAgICAgICBpZiByb3dbJ2pz dGNvbm50eXBlJ106CisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCAoJ2pz dGRibmFtZScgaW4gZGF0YSk6CisgICAgICAgICAgICAgICAgICAgICAgICBk YXRhWydqc3RkYm5hbWUnXSA9IHJvd1snanN0ZGJuYW1lJ10KKyAgICAgICAg ICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBpZiBub3QgKCdq c3Rjb25uc3RyJyBpbiBkYXRhKToKKyAgICAgICAgICAgICAgICAgICAgICAg IGRhdGFbJ2pzdGNvbm5zdHInXSA9IHJvd1snanN0Y29ubnN0ciddCisKKyAg ICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAg ICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAndXBkYXRlLnNx bCddKSwKKyAgICAgICAgICAgICAgICBqaWQ9amlkLAorICAgICAgICAgICAg ICAgIGpzdGlkPWpzdGlkLAorICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwK KyAgICAgICAgICAgICAgICBoYXNfY29ubnN0cj1zZWxmLm1hbmFnZXIuZGJf aW5mb1sncGdBZ2VudCddWydoYXNfY29ubnN0ciddCisgICAgICAgICAgICAp CisKKyAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAg ICAgICAgIGRhdGE9c3FsLAorICAgICAgICAgICAgc3RhdHVzPTIwMAorICAg ICAgICApCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIHN0 YXRpc3RpY3Moc2VsZiwgZ2lkLCBzaWQsIGppZCwganN0aWQpOgorICAgICAg ICAiIiIKKyAgICAgICAgc3RhdGlzdGljcworICAgICAgICBSZXR1cm5zIHRo ZSBzdGF0aXN0aWNzIGZvciBhIHBhcnRpY3VsYXIgZGF0YWJhc2UgaWYgamlk IGlzIHNwZWNpZmllZCwKKyAgICAgICAgb3RoZXJ3aXNlIGl0IHdpbGwgcmV0 dXJuIHN0YXRpc3RpY3MgZm9yIGFsbCB0aGUgZGF0YWJhc2VzIGluIHRoYXQK KyAgICAgICAgc2VydmVyLgorICAgICAgICAiIiIKKyAgICAgICAgc3RhdHVz LCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KAorICAgICAgICAgICAg cmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICIvIi5qb2luKFtz ZWxmLnRlbXBsYXRlX3BhdGgsICdzdGF0cy5zcWwnXSksCisgICAgICAgICAg ICAgICAgamlkPWppZCwganN0aWQ9anN0aWQsIGNvbm49c2VsZi5jb25uCisg ICAgICAgICAgICApCisgICAgICAgICkKKworICAgICAgICBpZiBub3Qgc3Rh dHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJv cihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9y ZXNwb25zZSgKKyAgICAgICAgICAgIGRhdGE9cmVzLAorICAgICAgICAgICAg c3RhdHVzPTIwMAorICAgICAgICApCisKKworSm9iU3RlcFZpZXcucmVnaXN0 ZXJfbm9kZV92aWV3KGJsdWVwcmludCkKZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvc3Rl cHMvc3RhdGljL2ltZy9jb2xsLXBnYV9qb2JzdGVwLnBuZyBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvc3Rl cHMvc3RhdGljL2ltZy9jb2xsLXBnYV9qb2JzdGVwLnBuZwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwLi41MWI4NmE3YTAxYzgzYjVjZWE3N2VjOTViNTQ2MmQw OWI2NDQwMjgzCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA1MDUKemNtZUFT QE4/KG9sSHlgdVZCcSFpYTB2cF4wd0IhNjM/d3lsYEdiTWY8TiUpI1MwS0d+ PkMjVjRPJnt3VS1xK047Cnp0RWhOV1F0flJsOzYreVUpNn4/KkBkKiMycVY5 ISstMWhhbTtxSEZiKGVlTlB8OX03ZXxNfmFkeDhIdzF7cmRDdgp6JERmenFl bjB2MD4peGxJSCRWS2lZOzckVXU9ZXVYWng+OFcmJU9TN1IheyU1aFVVcWFV aypTMmRfcX15LV91WFcKeldNeXxmeyYta0k7LUlrYilgdVRBLXY2K2xrOGo8 Kl9qfGR4Ul41SEtobUNDKUdqc0VlITAkazNGX3J9UjF2NUIyCnp5TzlSc0J6 ZTJMMnUkNj9ze2BiNDdJO0ohMThFTzFifn5BRTJWX2p9YmE0IWt4U1Y9RVNK KXspZ3lxMyojVEt0Zwp6Skwwc0tJUXt5K2Y4RT9PYkZIdHwpcyVmWkJjdTMx UlBvM21nU0FXRj8kQUVaZUAoaW5GP1VEend+dmFKJVQ5MnAKeklaMi1NRkFg emxVVWw5KGdrfHNmdTIoSl83WEpGb1lJQEw3WFl4PEM9NGxVe3pNZDc4YiR0 Sk4raXBSZDc2MU1ACnpfPHh2cXMlVzJLZihsRSgtdyNKekY4cj5XNlc2am96 eTFeM19tPXxWdCgjfCowb3xycjt1PXdzbDMwPnptMFhreAp6cSFeNDAzPU1Q KmpkVHFSTHlRY3BPcEw4ZU90bFM2dHFjdDJ6MCtIVHE5SGR3QntRdU9xUVNy dHRPMk9uI0xCPTcKVnFUJHJeJl4xNX00NCRyakY2KjJVbmdGezMrZ2t0dAoK bGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC9zdGVw cy9zdGF0aWMvaW1nL3BnYV9qb2JzdGVwLnBuZyBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvc3RlcHMvc3Rh dGljL2ltZy9wZ2Ffam9ic3RlcC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MC4uNzJmODk4YTExOTNhNzhmNDZiNzFkMzMxMjFkNWZjZDBkNGI1NDgxOQpH SVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNDMwCnpjbWVBU0BOPyhvbEh5YHVW QnEhaWEwdnBeMHdCITYzP3d5bGBHYkt9V2BJd0tFMENfTVp9fFdKfEtFVEFm QnlhVgp6P2YyaEx6eTdAYUAjcDJZLSVxfiR5NyVkKVQpXjYhQUFWZVpgfFZS eCk0UXN3bXdFWSo2QjYkUjIzfmJeSlpFVGwKekxQX2I2aHsjP0pqJnJaU29f elViQ2otT2I9YiFnSXtqfUB4JEVePVBab0wwdC1NI20jPyFIQGI9VXc0YipC WVFACnpqM3EmUyEzKy0xWmxyLVlOIzU9Kk9sak9URExAV3FmayRMOWtvRXYk eDBCZytLdHtmJmkoYG55PD1CM0FwI312Vwp6MjFaZnVCbG8wVntnKz9xQE11 TiNvenwyPzV8OHl+RzslLXUqfnFpbExYcHVmQjFxJilhSD96Q2lTQTlTV15h NGwKemBgfTlaTUVAfDRqeXBZKXRZMGUmQU57bnlkcWVsaWI+OGMwMy0wanJI dG82PnMzQ0U7bzA7fE5XMCNObnpueH5DCnopV0s8TlN6PlkrWHRpcElZZVkj KFZvOW8xYSMxUmZWbFhsPUd8KTlQKGxzeSlGKjJ8K0Z9NS0+KWl5QS1HQkI5 Owp0UEh6PjhoVFF5PSUoT35+MV9NajUyQjJ5YUQrNG8jaEV2bCsqOG52emMp SSR6dGFEMGUwc3VmYnZxfUh9CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9wZ0FnZW50L3N0ZXBzL3RlbXBsYXRlcy9wZ2Ffam9ic3RlcC9j c3MvcGdhX3N0ZXAuY3NzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvcGdBZ2VudC9zdGVwcy90ZW1wbGF0ZXMvcGdhX2pv YnN0ZXAvY3NzL3BnYV9zdGVwLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi5jMzk2NjA0Ci0tLSAvZGV2L251bGwKKysrIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2Vu dC9zdGVwcy90ZW1wbGF0ZXMvcGdhX2pvYnN0ZXAvY3NzL3BnYV9zdGVwLmNz cwpAQCAtMCwwICsxLDcgQEAKKy5pY29uLXBnYV9qb2JzdGVwIHsKKyAgYmFj a2dyb3VuZC1pbWFnZTogdXJsKCd7eyB1cmxfZm9yKCdOT0RFLXBnYV9qb2Jz dGVwLnN0YXRpYycsIGZpbGVuYW1lPSdpbWcvcGdhX2pvYnN0ZXAucG5nJykg fX0nKSAhaW1wb3J0YW50OworICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVw ZWF0OworICBhbGlnbi1jb250ZW50OiBjZW50ZXI7CisgIHZlcnRpY2FsLWFs aWduOiBtaWRkbGU7CisgIGhlaWdodDogMS4zZW07Cit9CmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9w Z0FnZW50L3N0ZXBzL3RlbXBsYXRlcy9wZ2Ffam9ic3RlcC9qcy9wZ2Ffam9i c3RlcC5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL3BnQWdlbnQvc3RlcHMvdGVtcGxhdGVzL3BnYV9qb2JzdGVwL2pz L3BnYV9qb2JzdGVwLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLjYwYzkyMDQKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3N0ZXBz L3RlbXBsYXRlcy9wZ2Ffam9ic3RlcC9qcy9wZ2Ffam9ic3RlcC5qcwpAQCAt MCwwICsxLDI1NyBAQAorZGVmaW5lKFsKKyAgICAgICAgJ2pxdWVyeScsICd1 bmRlcnNjb3JlJywgJ3VuZGVyc2NvcmUuc3RyaW5nJywgJ3BnYWRtaW4nLAor ICAgICAgICAncGdhZG1pbi5icm93c2VyJywgJ2FsZXJ0aWZ5JywgJ2JhY2tm b3JtJywgJ3BnYWRtaW4uYmFja2Zvcm0nCisgICAgICAgIF0sCitmdW5jdGlv bigkLCBfLCBTLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIEFsZXJ0aWZ5LCBCYWNr Zm9ybSkgeworCisgIGlmICghcGdCcm93c2VyLk5vZGVzWydjb2xsLXBnYV9q b2JzdGVwJ10pIHsKKyAgICBwZ0Jyb3dzZXIuTm9kZXNbJ2NvbGwtcGdhX2pv YnN0ZXAnXSA9CisgICAgICBwZ0Jyb3dzZXIuQ29sbGVjdGlvbi5leHRlbmQo eworICAgICAgICBub2RlOiAncGdhX2pvYnN0ZXAnLAorICAgICAgICBsYWJl bDogJ3t7IF8oJ1N0ZXBzJykgfX0nLAorICAgICAgICB0eXBlOiAnY29sbC1w Z2Ffam9ic3RlcCcsCisgICAgICAgIGNvbHVtbnM6IFsKKyAgICAgICAgICAn anN0aWQnLCAnanN0bmFtZScsICdqc3RlbmFibGVkJywgJ2pzdGtpbmQnLCAn anN0Y29ubnR5cGUnLAorICAgICAgICAgICdqc3RvbmVycm9yJworICAgICAg ICBdLAorICAgICAgICBoYXNTdGF0aXN0aWNzOiBmYWxzZQorICAgICAgfSk7 CisgIH0KKworICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1sncGdhX2pvYnN0ZXAn XSkgeworICAgIHBnQnJvd3Nlci5Ob2Rlc1sncGdhX2pvYnN0ZXAnXSA9IHBn QnJvd3Nlci5Ob2RlLmV4dGVuZCh7CisgICAgICBwYXJlbnRfdHlwZTogJ3Bn YV9qb2InLAorICAgICAgdHlwZTogJ3BnYV9qb2JzdGVwJywKKyAgICAgIGhh c1NRTDogdHJ1ZSwKKyAgICAgIGhhc0RlcGVuZHM6IGZhbHNlLAorICAgICAg aGFzU3RhdGlzdGljczogdHJ1ZSwKKyAgICAgIGhhc0NvbGxlY3RpdmVTdGF0 aXN0aWNzOiB0cnVlLAorICAgICAgd2lkdGg6ICc3MCUnLAorICAgICAgaGVp Z2h0OiAnODAlJywKKyAgICAgIGNhbkRyb3A6IGZ1bmN0aW9uKG5vZGUpIHsK KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICB9LAorICAgICAgbGFiZWw6 ICd7eyBfKCdTdGVwcycpIH19JywKKyAgICAgIG5vZGVfaW1hZ2U6IGZ1bmN0 aW9uKCkgeworICAgICAgICBjb25zb2xlLmxvZyhhcmd1bWVudHMpOworICAg ICAgICByZXR1cm4gJ2ljb24tcGdhX2pvYnN0ZXAnOworICAgICAgfSwKKyAg ICAgIEluaXQ6IGZ1bmN0aW9uKCkgeworICAgICAgICAvKiBBdm9pZCBtdWxp dHBsZSByZWdpc3RyYXRpb24gb2YgbWVudXMgKi8KKyAgICAgICAgaWYgKHRo aXMuaW5pdGlhbGl6ZWQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg ICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7CisKKyAgICAgICAgcGdCcm93 c2VyLmFkZF9tZW51cyhbeworICAgICAgICAgIG5hbWU6ICdjcmVhdGVfcGdh X2pvYnN0ZXBfb25fam9iJywgbm9kZTogJ3BnYV9qb2InLCBtb2R1bGU6IHRo aXMsCisgICAgICAgICAgYXBwbGllczogWydvYmplY3QnLCAnY29udGV4dCdd LCBjYWxsYmFjazogJ3Nob3dfb2JqX3Byb3BlcnRpZXMnLAorICAgICAgICAg IGNhdGVnb3J5OiAnY3JlYXRlJywgcHJpb3JpdHk6IDQsIGxhYmVsOiAne3sg XygnSm9iIFN0ZXAuLi4nKSB9fScsCisgICAgICAgICAgZGF0YTogeydhY3Rp b24nOiAnY3JlYXRlJ30sIGljb246ICd3Y1RhYkljb24gaWNvbi1wZ2Ffam9i c3RlcCcKKyAgICAgICAgfSx7CisgICAgICAgICAgbmFtZTogJ2NyZWF0ZV9w Z2Ffam9ic3RlcF9vbl9jb2xsJywgbm9kZTogJ2NvbGwtcGdhX2pvYnN0ZXAn LCBtb2R1bGU6IHRoaXMsCisgICAgICAgICAgYXBwbGllczogWydvYmplY3Qn LCAnY29udGV4dCddLCBjYWxsYmFjazogJ3Nob3dfb2JqX3Byb3BlcnRpZXMn LAorICAgICAgICAgIGNhdGVnb3J5OiAnY3JlYXRlJywgcHJpb3JpdHk6IDQs IGxhYmVsOiAne3sgXygnSm9iIFN0ZXAuLi4nKSB9fScsCisgICAgICAgICAg ZGF0YTogeydhY3Rpb24nOiAnY3JlYXRlJ30sIGljb246ICd3Y1RhYkljb24g aWNvbi1wZ2Ffam9ic3RlcCcKKyAgICAgICAgfSx7CisgICAgICAgICAgbmFt ZTogJ2NyZWF0ZV9wZ2Ffam9ic3RlcCcsIG5vZGU6ICdwZ2Ffam9ic3RlcCcs IG1vZHVsZTogdGhpcywKKyAgICAgICAgICBhcHBsaWVzOiBbJ29iamVjdCcs ICdjb250ZXh0J10sIGNhbGxiYWNrOiAnc2hvd19vYmpfcHJvcGVydGllcycs CisgICAgICAgICAgY2F0ZWdvcnk6ICdjcmVhdGUnLCBwcmlvcml0eTogNCwg bGFiZWw6ICd7eyBfKCdKb2IgU3RlcC4uLicpIH19JywKKyAgICAgICAgICBk YXRhOiB7J2FjdGlvbic6ICdjcmVhdGUnfSwgaWNvbjogJ3djVGFiSWNvbiBp Y29uLXBnYV9qb2JzdGVwJworICAgICAgICB9XSk7CisgICAgICB9LAorICAg ICAgbW9kZWw6IHBnQnJvd3Nlci5Ob2RlLk1vZGVsLmV4dGVuZCh7CisgICAg ICAgIGRlZmF1bHRzOiB7CisgICAgICAgICAganN0aWQ6IG51bGwsCisgICAg ICAgICAganN0am9iaWQ6IG51bGwsCisgICAgICAgICAganN0bmFtZTogJycs CisgICAgICAgICAganN0ZGVzYzogJycsCisgICAgICAgICAganN0ZW5hYmxl ZDogdHJ1ZSwKKyAgICAgICAgICBqc3RraW5kOiB0cnVlLAorICAgICAgICAg IGpzdGNvbm50eXBlOiB0cnVlLAorICAgICAgICAgIGpzdGNvZGU6ICcnLAor ICAgICAgICAgIGpzdGNvbm5zdHI6IG51bGwsCisgICAgICAgICAganN0ZGJu YW1lOiBudWxsLAorICAgICAgICAgIGpzdG9uZXJyb3I6ICdmJywKKyAgICAg ICAgICBqc3RuZXh0cnVuOiAnJworICAgICAgICB9LAorICAgICAgICBpbml0 aWFsaXplOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICBwZ0Jyb3dzZXIuTm9k ZS5Nb2RlbC5wcm90b3R5cGUuaW5pdGlhbGl6ZS5hcHBseSh0aGlzLCBhcmd1 bWVudHMpOworICAgICAgICAgIGlmICh0aGlzLmlzTmV3KCkgJiYgdGhpcy5n ZXQoJ2pzdGNvbm50eXBlJykpIHsKKyAgICAgICAgICAgIHZhciBhcmdzID0g YXJndW1lbnRzICYmIGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50 c1sxXTsKKworICAgICAgICAgICAgaWYgKGFyZ3MpIHsKKyAgICAgICAgICAg ICAgdGhpcy5zZXQoCisgICAgICAgICAgICAgICAgJ2pzdGRibmFtZScsCisg ICAgICAgICAgICAgICAgKGFyZ3NbJ25vZGVfaW5mbyddIHx8IGFyZ3MuY29s bGVjdGlvbi50b3BbJ25vZGVfaW5mbyddKVsnc2VydmVyJ11bJ2RiJ10KKyAg ICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9Cisg ICAgICAgIH0sCisgICAgICAgIGlkQXR0cmlidXRlOiAnanN0aWQnLAorICAg ICAgICBzY2hlbWE6IFt7CisgICAgICAgICAgaWQ6ICdqc3RpZCcsIGxhYmVs OiAne3sgXygnSUQnKSB9fScsIHR5cGU6ICdpbnRlZ2VyJywKKyAgICAgICAg ICBjZWxsSGVhZGVyQ2xhc3NlczogJ3dpZHRoX3BlcmNlbnRfNScsIG1vZGU6 IFsncHJvcGVydGllcyddCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAn anN0bmFtZScsIGxhYmVsOiAne3sgXygnTmFtZScpIH19JywgdHlwZTogJ3Rl eHQnLAorICAgICAgICAgIGRpc2FibGVkOiBmdW5jdGlvbihtKSB7IHJldHVy biBmYWxzZTsgfSwKKyAgICAgICAgICBjZWxsSGVhZGVyQ2xhc3NlczogJ3dp ZHRoX3BlcmNlbnRfNjAnCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAn anN0ZW5hYmxlZCcsIGxhYmVsOiAne3sgXygnRW5hYmxlZCcpIH19JywgdHlw ZTogJ3N3aXRjaCcsCisgICAgICAgICAgZGlzYWJsZWQ6IGZ1bmN0aW9uKG0p IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIH0seworICAgICAgICAgIGlk OiAnanN0a2luZCcsIGxhYmVsOiAne3sgXygnS2luZCcpIH19JywgdHlwZTog J3N3aXRjaCcsCisgICAgICAgICAgb3B0aW9uczogeworICAgICAgICAgICAg J29uVGV4dCc6ICd7eyBfKCdTUUwnKSB9fScsICdvZmZUZXh0JzogJ3t7IF8o J0JhdGNoJykgfX0nLAorICAgICAgICAgICAgJ29uQ29sb3InOiAncHJpbWFy eScsICdvZmZDb2xvcic6ICdwcmltYXJ5JworICAgICAgICAgIH0sIGNvbnRy b2w6IEJhY2tmb3JtLlN3aXRjaENvbnRyb2wsCisgICAgICAgICAgZGlzYWJs ZWQ6IGZ1bmN0aW9uKG0pIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIH0s eworICAgICAgICAgIGlkOiAnanN0Y29ubnR5cGUnLCBsYWJlbDogJ3t7IF8o J0Nvbm5lY3Rpb24gdHlwZScpIH19JywKKyAgICAgICAgICB0eXBlOiAnc3dp dGNoJywgZGVwczogWydqc3RraW5kJ10sCisgICAgICAgICAgZGlzYWJsZWQ6 IGZ1bmN0aW9uKG0pIHsgcmV0dXJuICFtLmdldCgnanN0a2luZCcpOyB9LAor ICAgICAgICAgIG9wdGlvbnM6IHsKKyAgICAgICAgICAgICdvblRleHQnOiAn e3sgXygnTG9jYWwnKSB9fScsICdvZmZUZXh0JzogJ3t7IF8oJ1JlbW90ZScp IH19JywKKyAgICAgICAgICAgICdvbkNvbG9yJzogJ3ByaW1hcnknLCAnb2Zm Q29sb3InOiAncHJpbWFyeScKKyAgICAgICAgICB9CisgICAgICAgIH0sewor ICAgICAgICAgIGlkOiAnanN0ZGJuYW1lJywgbGFiZWw6ICd7eyBfKCdEYXRh YmFzZScpIH19JywgdHlwZTogJ3RleHQnLAorICAgICAgICAgIG1vZGU6IFsn cHJvcGVydGllcyddLCBkaXNhYmxlZDogZnVuY3Rpb24obSkgeyByZXR1cm4g ZmFsc2U7IH0KKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdqc3Rjb25u c3RyJywgdHlwZTogJ3RleHQnLCBtb2RlOiBbJ3Byb3BlcnRpZXMnXSwKKyAg ICAgICAgICBsYWJlbDogJ3t7IF8oJ0Nvbm5lY3Rpb24gc3RyaW5nJykgfX0n CisgICAgICAgIH0seworICAgICAgICAgIGlkOiAnanN0ZGJuYW1lJywgbGFi ZWw6ICd7eyBfKCdEYXRhYmFzZScpIH19JywgdHlwZTogJ3RleHQnLAorICAg ICAgICAgIGNvbnRyb2w6ICdub2RlLWxpc3QtYnktbmFtZScsIG5vZGU6ICdk YXRhYmFzZScsCisgICAgICAgICAgY2FjaGVfbm9kZTogJ2RhdGFiYXNlJywg c2VsZWN0Mjoge2FsbG93Q2xlYXI6IHRydWUsIHBsYWNlaG9sZGVyOiAnJ30s CisgICAgICAgICAgZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAg ICAgIHJldHVybiAhbS5nZXQoJ2pzdGtpbmQnKSB8fCAhbS5nZXQoJ2pzdGNv bm50eXBlJyk7CisgICAgICAgICAgfSwgZGVwczogWydqc3RraW5kJywgJ2pz dGNvbm50eXBlJ10sIG1vZGU6IFsnY3JlYXRlJywgJ2VkaXQnXSwKKyAgICAg ICAgICBoZWxwTWVzc2FnZTogJ3t7IF8oJ1BsZWFzZSBzZWxlY3QgYSBkYXRh YmFzZSBmcm9tIHRoZSBsaXN0LicpIH19JywKKyAgICAgICAgICB2aXNpYmxl OiBmdW5jdGlvbihtKSB7IHJldHVybiBtLmdldCgnanN0Y29ubnR5cGUnKTsg fQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2pzdGNvbm5zdHInLCBs YWJlbDogJ3t7IF8oJ0Nvbm5lY3Rpb24gc3RyaW5nJykgfX0nLCB0eXBlOiAn dGV4dCcsCisgICAgICAgICAgZGVwczogWydqc3RraW5kJywgJ2pzdGNvbm50 eXBlJ10sIGRpc2FibGVkOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgICBy ZXR1cm4gIW0uZ2V0KCdqc3RraW5kJykgfHwgbS5nZXQoJ2pzdGNvbm50eXBl Jyk7CisgICAgICAgICAgfSwgaGVscE1lc3NhZ2U6IFMoCisgICAgICAgICAg ICAne3sgXygiUGxlYXNlIHNwZWNpZnkgdGhlIGNvbm5lY3Rpb24gc3RyaW5n IGZvciB0aGUgcmVtb3RlIGRhdGFiYXNlIHNlcnZlci4gRWFjaCBwYXJhbWV0 ZXIgc2V0dGluZyBpcyBpbiB0aGUgZm9ybSBrZXl3b3JkID0gdmFsdWUuIFNw YWNlcyBhcm91bmQgdGhlIGVxdWFsIHNpZ24gYXJlIG9wdGlvbmFsLiBUbyB3 cml0ZSBhbiBlbXB0eSB2YWx1ZSwgb3IgYSB2YWx1ZSBjb250YWluaW5nIHNw YWNlcywgc3Vycm91bmQgaXQgd2l0aCBzaW5nbGUgcXVvdGVzLCBlLmcuLCBr ZXl3b3JkID0gXFwnYSB2YWx1ZVxcJy4gU2luZ2xlIHF1b3RlcyBhbmQgYmFj a3NsYXNoZXMgd2l0aGluIHRoZSB2YWx1ZSBtdXN0IGJlIGVzY2FwZWQgd2l0 aCBhIGJhY2tzbGFzaCwgaS5lLiwgXFxcJyBhbmQgXFxcXC48YnI+UmVmZXJl bmNlOiAlcyIpIH19JworICAgICAgICAgICkuc3ByaW50ZigKKyAgICAgICAg ICAgICc8YSBocmVmPSJodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9kb2Nz L2N1cnJlbnQvc3RhdGljL2xpYnBxLWNvbm5lY3QuaHRtbCNMSUJQUS1DT05O U1RSSU5HIiB0YXJnZXQ9Il9ibGFuayI+TGliUFEgY29ubmVjdGlvbiBzdHJp bmdzPC9hPicKKyAgICAgICAgICApLnZhbHVlKCksIG1vZGU6IFsnY3JlYXRl JywgJ2VkaXQnXSwKKyAgICAgICAgICB2aXNpYmxlOiBmdW5jdGlvbihtKSB7 IHJldHVybiAhbS5nZXQoJ2pzdGNvbm50eXBlJyk7IH0KKyAgICAgICAgfSx7 CisgICAgICAgICAgaWQ6ICdqc3RvbmVycm9yJywgbGFiZWw6ICd7eyBfKCdP biBlcnJvcicpIH19JywgY2VsbDogJ3NlbGVjdDInLAorICAgICAgICAgIGNv bnRyb2w6ICdzZWxlY3QyJywgb3B0aW9uczogWworICAgICAgICAgICAgeyds YWJlbCc6ICd7eyBfKCJGYWlsIikgfX0nLCAndmFsdWUnOiAiZiJ9LAorICAg ICAgICAgICAgeydsYWJlbCc6ICd7eyBfKCJTdWNjZXNzIikgfX0nLCAndmFs dWUnOiAicyJ9LAorICAgICAgICAgICAgeydsYWJlbCc6ICd7eyBfKCJJZ25v cmUiKSB9fScsICd2YWx1ZSc6ICJpIn0KKyAgICAgICAgICBdLCBzZWxlY3Qy OiB7YWxsb3dDbGVhcjogZmFsc2V9LCBkaXNhYmxlZDogZnVuY3Rpb24obSkg eworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgIH0KKyAg ICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdqc3RkZXNjJywgbGFiZWw6ICd7 eyBfKCdDb21tZW50JykgfX0nLCB0eXBlOiAnbXVsdGlsaW5lJworICAgICAg ICB9LHsKKyAgICAgICAgICBpZDogJ2pzdGNvZGUnLCBsYWJlbDogJ3t7IF8o J1NjcmlwdCcpICB9fScsIGNlbGw6ICdzdHJpbmcnLAorICAgICAgICAgIHR5 cGU6ICd0ZXh0JywgY29udHJvbDogJ3NxbC1maWVsZCcKKyAgICAgICAgfV0s CisgICAgICAgIHZhbGlkYXRlOiBmdW5jdGlvbihrZXlzKSB7CisgICAgICAg ICAgdmFyIHZhbCA9IHRoaXMuZ2V0KCdqc3RuYW1lJyksCisgICAgICAgICAg ICAgIGVyck1zZyA9IG51bGw7CisKKyAgICAgICAgICBpZiAoCisgICAgICAg ICAgICBfLmlzVW5kZWZpbmVkKHZhbCkgfHwgXy5pc051bGwodmFsKSB8fAor ICAgICAgICAgICAgU3RyaW5nKHZhbCkucmVwbGFjZSgvXlxzK3xccyskL2cs ICcnKSA9PSAnJworICAgICAgICAgICkgeworICAgICAgICAgICAgZXJyTXNn ID0gJ3t7IF8oJ05hbWUgY2Fubm90IGJlIGVtcHR5LicpIH19JzsKKyAgICAg ICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ2pzdG5hbWUnLCBlcnJNc2cp OworICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0aGlzLmVycm9y TW9kZWwudW5zZXQoJ2pzdG5hbWUnKTsKKyAgICAgICAgICB9CisgICAgICAg ICAgaWYgKHRoaXMuZ2V0KCdqc3RraW5kJykpIHsKKyAgICAgICAgICAgIGlm ICh0aGlzLmdldCgnanN0Y29ubnR5cGUnKSkgeworICAgICAgICAgICAgICB0 aGlzLmVycm9yTW9kZWwudW5zZXQoJ2pzdGNvbm5zdHInKTsKKyAgICAgICAg ICAgICAgdmFsID0gdGhpcy5nZXQoJ2pzdGRibmFtZScpOworICAgICAgICAg ICAgICBpZiAoCisgICAgICAgICAgICAgICAgXy5pc1VuZGVmaW5lZCh2YWwp IHx8IF8uaXNOdWxsKHZhbCkgfHwKKyAgICAgICAgICAgICAgICAgIFN0cmlu Zyh2YWwpLnJlcGxhY2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycKKyAgICAg ICAgICAgICAgKSB7CisgICAgICAgICAgICAgICAgdmFyIG1zZyA9ICd7eyBf KCdQbGVhc2Ugc2VsZWN0IGEgZGF0YWJhc2UuJykgfX0nOworICAgICAgICAg ICAgICAgIGVyck1zZyA9IGVyck1zZyB8fCBtc2c7CisgICAgICAgICAgICAg ICAgdGhpcy5lcnJvck1vZGVsLnNldCgnanN0ZGJuYW1lJywgbXNnKTsKKyAg ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0aGlzLmVy cm9yTW9kZWwudW5zZXQoJ2pzdGRibmFtZScpOworICAgICAgICAgICAgICB9 CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICB0aGlzLmVy cm9yTW9kZWwudW5zZXQoJ2pzdGRibmFtZScpOworICAgICAgICAgICAgICB2 YXIgbXNnLAorICAgICAgICAgICAgICAgIHIgPSAvXHMqXGIoXHcrKVxzKj1c cyooJyhbXidcXF0qKD86XFwuW14nXFxdKikqKSd8XHcqKS9nOworICAgICAg ICAgICAgICB2YWwgPSB0aGlzLmdldCgnanN0Y29ubnN0cicpOworICAgICAg ICAgICAgICBpZiAoCisgICAgICAgICAgICAgICAgXy5pc1VuZGVmaW5lZCh2 YWwpIHx8IF8uaXNOdWxsKHZhbCkgfHwKKyAgICAgICAgICAgICAgICAgIFN0 cmluZyh2YWwpLnJlcGxhY2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycKKyAg ICAgICAgICAgICAgKSB7CisgICAgICAgICAgICAgICAgbXNnID0gICd7eyBf KCJQbGVhc2UgZW50ZXIgYSBjb25uZWN0aW9uIHN0cmluZy4iKSB9fSc7Cisg ICAgICAgICAgICAgIH0gZWxzZSBpZiAoU3RyaW5nKHZhbCkucmVwbGFjZShy LCAnJykgIT0gJycpIHsKKyAgICAgICAgICAgICAgICBtc2cgPSAne3sgXygi UGxlYXNlIGVudGVyIGEgdmFsaWQgY29ubmVjdGlvbiBzdHJpbmcuIikgfX0n OworICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHZh ciBtLAorICAgICAgICAgICAgICAgICAgICBwYXJhbXMgPSB7CisgICAgICAg ICAgICAgICAgICAgICAgJ2hvc3QnOiB0cnVlLCAnaG9zdGFkZHInOiB0cnVl LCAncG9ydCc6IHRydWUsCisgICAgICAgICAgICAgICAgICAgICAgJ2RibmFt ZSc6IHRydWUsICd1c2VyJzogdHJ1ZSwgJ3Bhc3N3b3JkJzogdHJ1ZSwKKyAg ICAgICAgICAgICAgICAgICAgICAnY29ubmVjdF90aW1lb3V0JzogdHJ1ZSwg J2NsaWVudF9lbmNvZGluZyc6IHRydWUsCisgICAgICAgICAgICAgICAgICAg ICAgJ2FwcGxpY2F0aW9uX25hbWUnOiB0cnVlLCAnb3B0aW9ucyc6IHRydWUs CisgICAgICAgICAgICAgICAgICAgICAgJ2ZhbGxiYWNrX2FwcGxpY2F0aW9u X25hbWUnOiB0cnVlLCAnc3NsbW9kZSc6IHRydWUsCisgICAgICAgICAgICAg ICAgICAgICAgJ3NzbGNlcnQnOiB0cnVlLCAnc3Nsa2V5JzogdHJ1ZSwgJ3Nz bHJvb3RjZXJ0JzogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAnc3Ns Y3JsJzogdHJ1ZSwgJ2tlZXBhbGl2ZXMnOiB0cnVlLCAnc2VydmljZSc6IHRy dWUsCisgICAgICAgICAgICAgICAgICAgICAgJ2tlZXBhbGl2ZXNfaWRsZSc6 IHRydWUsICdrZWVwYWxpdmVzX2ludGVydmFsJzogdHJ1ZSwKKyAgICAgICAg ICAgICAgICAgICAgICAna2VlcGFsaXZlc19jb3VudCc6IHRydWUsICdzc2xj b21wcmVzc2lvbic6IHRydWUsCisgICAgICAgICAgICAgICAgICAgICAgJ3Jl cXVpcmVwZWVyJzogdHJ1ZSwgJ2tyYnNydm5hbWUnOiB0cnVlLCAnZ3NzbGli JzogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgfTsKKworICAgICAgICAg ICAgICAgIHdoaWxlKChtID0gci5leGVjKHZhbCkpKSB7CisgICAgICAgICAg ICAgICAgICBpZiAocGFyYW1zW21bMV1dKSB7CisgICAgICAgICAgICAgICAg ICAgIGlmIChtWzJdKQorICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl OworICAgICAgICAgICAgICAgICAgICBtc2cgPSAne3sgXygiUGxlYXNlIGVu dGVyIGEgdmFsaWQgY29ubmVjdGlvbiBzdHJpbmcuIikgfX0nOworICAgICAg ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgIH0KKwor ICAgICAgICAgICAgICAgICAgbXNnID0gUygKKyAgICAgICAgICAgICAgICAg ICAgJ3t7IF8oIkludmFsaWQgcGFyYW1ldGVyIGluIHRoZSBjb25uZWN0aW9u IHN0cmluZyAtICVzLiIpIH19JworICAgICAgICAgICAgICAgICAgKS5zcHJp bnRmKG1bMV0pLnZhbHVlKCk7CisgICAgICAgICAgICAgICAgICBicmVhazsK KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKworICAgICAg ICAgICAgICBpZiAobXNnKSB7CisgICAgICAgICAgICAgICAgZXJyTXNnID0g ZXJyTXNnIHx8IG1zZzsKKyAgICAgICAgICAgICAgICB0aGlzLmVycm9yTW9k ZWwuc2V0KCdqc3Rjb25uc3RyJywgbXNnKTsKKyAgICAgICAgICAgICAgfSBl bHNlIHsKKyAgICAgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwudW5zZXQo J2pzdGNvbm5zdHInKTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAg fQorICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0aGlzLmVycm9y TW9kZWwudW5zZXQoJ2pzdGNvbm5zdHInKTsKKyAgICAgICAgICAgIHRoaXMu ZXJyb3JNb2RlbC51bnNldCgnanN0ZGJuYW1lJyk7CisgICAgICAgICAgfQor CisgICAgICAgICAgdmFsID0gdGhpcy5nZXQoJ2pzdGNvZGUnKTsKKyAgICAg ICAgICBpZiAoCisgICAgICAgICAgICBfLmlzVW5kZWZpbmVkKHZhbCkgfHwg Xy5pc051bGwodmFsKSB8fAorICAgICAgICAgICAgU3RyaW5nKHZhbCkucmVw bGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJworICAgICAgICAgICkgewor ICAgICAgICAgICAgdmFyIG1zZyA9ICd7eyBfKCdQbGVhc2Ugc3BlY2lmeSBj b2RlIHRvIGV4ZWN1dGUuJykgfX0nOworICAgICAgICAgICAgZXJyTXNnID0g ZXJyTXNnIHx8IG1zZzsKKyAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5z ZXQoJ2pzdGNvZGUnLCBtc2cpOworICAgICAgICAgIH0gZWxzZSB7CisgICAg ICAgICAgICB0aGlzLmVycm9yTW9kZWwudW5zZXQoJ2pzdGNvZGUnKTsKKyAg ICAgICAgICB9CisKKyAgICAgICAgICByZXR1cm4gZXJyTXNnOworICAgICAg ICB9CisgICAgICB9KQorICAgIH0pOworICB9CisKKyAgcmV0dXJuIHBnQnJv d3Nlci5Ob2Rlc1sncGdhX2pvYiddOworfSk7CmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50 L3RlbXBsYXRlcy9tYWNyb3MvcGdhX2V4Y2VwdGlvbi5tYWNyb3MgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50 L3RlbXBsYXRlcy9tYWNyb3MvcGdhX2V4Y2VwdGlvbi5tYWNyb3MKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzhlZWMyOQotLS0gL2Rl di9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL21hY3Jvcy9wZ2FfZXhjZXB0 aW9uLm1hY3JvcwpAQCAtMCwwICsxLDI0IEBACit7IyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN9Cit7IyBUaGlz IHdpbGwgYmUgc3BlY2lmaWMgbWFjcm8gZm9yIHBnYV9leGNlcHRpb24uICN9 Cit7IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyN9Cit7JSBtYWNybyBJTlNFUlQoanNjaWQsIGRhdGEpIC0lfQor LS0gSW5zZXJ0aW5nIGEgc2NoZWR1bGUgZXhjZXB0aW9uIHslIGlmIGpzY2lk ICV9KHNjaGVkdWxlOiB7eyBqc2NpZHxxdExpdGVyYWx9fSl7JSBlbmRpZiAl fQorCitJTlNFUlQgSU5UTyBwZ2FnZW50LnBnYV9leGNlcHRpb24gKAorICAg IGpleHNjaWQsIGpleGRhdGUsIGpleHRpbWUKKykgVkFMVUVTICgKKyAgICB7 JSBpZiBqc2NpZCAlfXt7IGpzY2lkfHF0TGl0ZXJhbCB9fXslIGVsc2UgJX1z Y2lkeyUgZW5kaWYgJX0sIHslIGlmIGRhdGEuamV4ZGF0ZSAlfXRvX2RhdGUo e3sgZGF0YS5qZXhkYXRlfHF0TGl0ZXJhbCB9fSwgJ01NL0REL1lZWVknKTo6 ZGF0ZXslIGVsc2UgJX1OVUxMOjpkYXRleyUgZW5kaWYgJX0sIHslIGlmIGRh dGEuamV4dGltZSAlfXt7IGRhdGEuamV4dGltZXxxdExpdGVyYWwgfX06OnRp bWUgd2l0aG91dCB0aW1lIHpvbmV7JSBlbHNlICV9TlVMTDo6dGltZSB3aXRo b3V0IHRpbWUgem9uZXslIGVuZGlmICV9CisKKyk7Cit7JS0gZW5kbWFjcm8g JX0KK3slIG1hY3JvIFVQREFURShqc2NpZCwgZGF0YSkgLSV9CistLSBVcGRh dGluZyBhbiBleGlzdGluZyBzY2hlZHVsZSBleGNlcHRpb24gKGlkOiB7eyBk YXRhLmpleGlkfHF0TGl0ZXJhbCB9fSwgc2NoZWR1bGU6IHt7IGpzY2lkfHF0 TGl0ZXJhbCB9fSkKK1VQREFURSBwZ2FnZW50LnBnYV9leGNlcHRpb24gU0VU CisgICAgeyUgaWYgJ2pleGRhdGUnIGluIGRhdGEgJX1qZXhkYXRlPXslIGlm IGRhdGEuamV4ZGF0ZSAlfXRvX2RhdGUoe3sgZGF0YS5qZXhkYXRlfHF0TGl0 ZXJhbCB9fSwgJ01NL0REL1lZWVknKTo6ZGF0ZXslIGVsc2UgJX1OVUxMOjpk YXRleyUgZW5kaWYgJX17JSBlbmRpZiAlfXslIGlmICdqZXh0aW1lJyBpbiBk YXRhJX17JSBpZiAnamV4ZGF0ZScgaW4gZGF0YSAlfSwgeyUgZW5kaWYgJX1q ZXh0aW1lPXslIGlmIGRhdGEuamV4dGltZSAlfXt7IGRhdGEuamV4dGltZXxx dExpdGVyYWwgfX06OnRpbWUgd2l0aG91dCB0aW1lIHpvbmV7JSBlbHNlICV9 TlVMTDo6dGltZSB3aXRob3V0IHRpbWUgem9uZXslIGVuZGlmICV9eyUgZW5k aWYgJX0KKworV0hFUkUgamV4aWQ9e3sgZGF0YS5qZXhpZHxxdExpdGVyYWwg fX06OmludGVnZXIgQU5EIGpzY2lkPXt7IGpzY2lkfHF0TGl0ZXJhbCB9fTo6 aW50ZWdlcjsKK3slLSBlbmRtYWNybyAlfQoreyUgbWFjcm8gREVMRVRFKGpz Y2lkLCBkYXRhKSAtJX0KKy0tIERlbGV0aW5nIGEgc2NoZWR1bGUgZXhjZXB0 aW9uIChpZDoge3sgZGF0YS5qZXhpZHxxdExpdGVyYWwgfX0sIHNjaGVkdWxl OiB7eyBqc2NpZHxxdExpdGVyYWwgfX0pCitERUxFVEUgRlJPTSBwZ2FnZW50 LnBnYV9leGNlcHRpb24gV0hFUkUgamV4aWQ9e3sgZGF0YS5qZXhpZHxxdExp dGVyYWwgfX06OmludGVnZXIgQU5EIGpzY2lkPXt7IGpzY2lkfHF0TGl0ZXJh bCB9fTo6aW50ZWdlcjsKK3slLSBlbmRtYWNybyAlfQpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdB Z2VudC90ZW1wbGF0ZXMvbWFjcm9zL3BnYV9qb2JzdGVwLm1hY3JvcyBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdl bnQvdGVtcGxhdGVzL21hY3Jvcy9wZ2Ffam9ic3RlcC5tYWNyb3MKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGJmMzE3ZgotLS0gL2Rl di9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL21hY3Jvcy9wZ2Ffam9ic3Rl cC5tYWNyb3MKQEAgLTAsMCArMSw1MSBAQAoreyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI30KK3sjIFRoaXMgd2ls bCBiZSBzcGVjaWZpYyBtYWNybyBmb3IgcGdhX2pvYnN0ZXAuICN9Cit7IyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj fQoreyUgbWFjcm8gSU5TRVJUKGhhc19jb25uc3RyLCBqaWQsIGRhdGEpIC0l fQorLS0gSW5zZXJ0aW5nIGEgc3RlcCAoam9iaWQ6IHt7IGppZHxxdExpdGVy YWwgfX0pCitJTlNFUlQgSU5UTyBwZ2FnZW50LnBnYV9qb2JzdGVwICgKKyAg ICBqc3Rqb2JpZCwganN0bmFtZSwganN0ZW5hYmxlZCwganN0a2luZCwKKyAg ICB7JSBpZiBoYXNfY29ubnN0ciAlfWpzdGNvbm5zdHIsIHslIGVuZGlmICV9 anN0ZGJuYW1lLCBqc3RvbmVycm9yLAorICAgIGpzdGNvZGUsIGpzdGRlc2MK KykgVkFMVUVTICgKKyAgICB7JSBpZiBqaWQgJX17eyBqaWR8cXRMaXRlcmFs IH19eyUgZWxzZSAlfWppZHslIGVuZGlmICV9LCB7eyBkYXRhLmpzdG5hbWV8 cXRMaXRlcmFsIH19Ojp0ZXh0LCB7JSBpZiBkYXRhLmpzdGVuYWJsZWQgJX10 cnVleyUgZWxzZSAlfWZhbHNlIHslIGVuZGlmICV9LCB7JSBpZiBkYXRhLmpz dGtpbmQgJX0ncyd7JSBlbHNlICV9J2IneyUgZW5kaWYgJX06OmNoYXJhY3Rl cigxKSwKKyAgICB7JSBpZiBoYXNfY29ubnN0ciAlfXslIGlmIGRhdGEuanN0 Y29ubnR5cGUgJX0nJ3slIGVsc2UgJX17eyBkYXRhLmpzdGNvbm5zdHJ8cXRM aXRlcmFsIH19eyUgZW5kaWYgJX06OnRleHQsIHslIGlmIG5vdCBkYXRhLmpz dGNvbm50eXBlICV9Jyc6Om5hbWV7JSBlbHNlICV9e3sgZGF0YS5qc3RkYm5h bWV8cXRMaXRlcmFsIH19eyUgZW5kaWYgJX06Om5hbWV7JSBlbHNlICV9e3sg ZGF0YS5qc3RkYm5hbWV8cXRMaXRlcmFsIH19OjpuYW1leyUgZW5kaWYgJX0s IHt7IGRhdGEuanN0b25lcnJvcnxxdExpdGVyYWwgfX06OmNoYXJhY3Rlcigx KSwKKyAgICB7eyBkYXRhLmpzdGNvZGV8cXRMaXRlcmFsIH19Ojp0ZXh0LCB7 eyBkYXRhLmpzdGRlc2N8cXRMaXRlcmFsIH19Ojp0ZXh0CispIHslIGlmIGpp ZCAlfVJFVFVSTklORyBqc3RpZHslIGVuZGlmICV9OworeyUtIGVuZG1hY3Jv ICV9Cit7JSBtYWNybyBVUERBVEUoaGFzX2Nvbm5zdHIsIGppZCwganN0aWQs IGRhdGEpIC0lfQorLS0gVXBkYXRpbmcgdGhlIGV4aXN0aW5nIHN0ZXAgKGlk OiB7eyBqc3RpZHxxdExpdGVyYWwgfX0gam9iaWQ6IHt7IGppZHxxdExpdGVy YWwgfX0pCitVUERBVEUgcGdhZ2VudC5wZ2Ffam9ic3RlcAorU0VUCisgICAg eyUgaWYgaGFzX2Nvbm5zdHIgJX17JSBpZiAnanN0Y29ubnR5cGUnIGluIGRh dGEgJX17JSBpZiBkYXRhLmpzdGNvbm50eXBlICV9anN0ZGJuYW1lPXt7IGRh dGEuanN0ZGJuYW1lfHF0TGl0ZXJhbCB9fSwganN0Y29ubnN0cj0nJ3slIGVs c2UgJX1qc3RkYm5hbWU9JycsIGpzdGNvbm5zdHI9e3sgZGF0YS5qc3Rjb25u c3RyfHF0TGl0ZXJhbCB9fXslIGVuZGlmICV9eyUgaWYgJ2pzdG5hbWUnIGlu IGRhdGEgb3IgJ2pzdGVuYWJsZWQnIGluIGRhdGEgb3IgJ2pzdGRlc2MnIGlu IGRhdGEgb3IgJ2pzdG9uZXJyb3InIGluIGRhdGEgb3IgJ2pzdGNvZGUnIGlu IGRhdGEgJX0seyUgZW5kaWYgJX17JSBlbmRpZiAlfXslIGVsc2UgJX17JSBp ZiAnanN0ZGJuYW1lJyBpbiBkYXRhICV9anN0ZGJuYW1lPXt7IGRhdGEuanN0 ZGJuYW1lfHF0TGl0ZXJhbCB9fTo6bmFtZXslIGVuZGlmICV9eyUgaWYgJ2pz dG5hbWUnIGluIGRhdGEgb3IgJ2pzdGVuYWJsZWQnIGluIGRhdGEgb3IgJ2pz dGRlc2MnIGluIGRhdGEgb3IgJ2pzdG9uZXJyb3InIGluIGRhdGEgb3IgJ2pz dGNvZGUnIGluIGRhdGEgJX0seyUgZW5kaWYgJX17JSBlbmRpZiAlfXslIGlm ICdqc3RuYW1lJyBpbiBkYXRhICAlfQorCisgICAganN0bmFtZT17eyBkYXRh LmpzdG5hbWV8cXRMaXRlcmFsIH19Ojp0ZXh0eyUgaWYgJ2pzdGVuYWJsZWQn IGluIGRhdGEgb3IgJ2pzdGRlc2MnIGluIGRhdGEgb3IgJ2pzdG9uZXJyb3In IGluIGRhdGEgb3IgJ2pzdGNvZGUnIGluIGRhdGEgJX0seyUgZW5kaWYgJX17 JSBlbmRpZiAlfXslIGlmICdqc3RlbmFibGVkJyBpbiBkYXRhICV9CisKKyAg ICBqc3RlbmFibGVkPXslIGlmIGRhdGEuanN0ZW5hYmxlZCAlfXRydWV7JSBl bHNlICV9ZmFsc2V7JSBlbmRpZiAlfXslIGlmICdqc3RkZXNjJyBpbiBkYXRh IG9yICdqc3RvbmVycm9yJyBpbiBkYXRhIG9yICdqc3Rjb2RlJyBpbiBkYXRh ICV9LHslIGVuZGlmICV9eyUgZW5kaWYgJX17JSBpZiAnanN0ZGVzYycgaW4g ZGF0YSAlfQorCisgICAganN0ZGVzYz17eyBkYXRhLmpzdGRlc2N8cXRMaXRl cmFsIH19eyUgaWYgJ2pzdG9uZXJyb3InIGluIGRhdGEgb3IgJ2pzdGNvZGUn IGluIGRhdGEgJX0seyUgZW5kaWYgJX17JSBlbmRpZiAlfXslIGlmICdqc3Rv bmVycm9yJyBpbiBkYXRhICV9CisKKyAgICBqc3RvbmVycm9yPXt7IGRhdGEu anN0b25lcnJvcnxxdExpdGVyYWwgfX17JSBpZiAnanN0Y29kZScgaW4gZGF0 YSAlfSx7JSBlbmRpZiAlfXslIGVuZGlmICV9eyUgaWYgJ2pzdGNvZGUnIGlu IGRhdGEgJX0KKworICAgIGpzdGNvZGU9e3sgZGF0YS5qc3Rjb2RlfHF0TGl0 ZXJhbCB9fXslIGVuZGlmICV9CisKK1dIRVJFIGpzdGlkPXt7IGpzdGlkfHF0 TGl0ZXJhbCB9fTo6aW50ZWdlciBBTkQganN0am9iaWQ9e3sgamlkfHF0TGl0 ZXJhbCB9fTo6aW50ZWdlcjsKK3slLSBlbmRtYWNybyAlfQoreyUgbWFjcm8g REVMRVRFKGppZCwganN0aWQpIC0lfQorLS0gRGVsZXRpbmcgYSBzdGVwIChp ZDoge3sganN0aWR8cXRMaXRlcmFsIH19LCBqb2JpZDoge3sgamlkfHF0TGl0 ZXJhbCB9fSkKK0RFTEVURSBGUk9NIHBnYWdlbnQucGdhX2pvYnN0ZXAgV0hF UkUganN0aWQ9e3sganN0aWR8cXRMaXRlcmFsIH19OjppbnRlZ2VyIEFORCBq c3Rqb2JpZD17eyBqaWR8cXRMaXRlcmFsIH19OjppbnRlZ2VyOworeyUtIGVu ZG1hY3JvICV9Cit7JSBtYWNybyBQUk9QRVJUSUVTKGhhc19jb25uc3RyLCBq aWQsIGpzdGlkKSAtJX0KK1NFTEVDVAorICAgIGpzdGlkLCAganN0am9iaWQs IGpzdG5hbWUsIGpzdGRlc2MsIGpzdGVuYWJsZWQsIGpzdGtpbmQgPSAncyc6 OmJwY2hhciBhcyBqc3RraW5kLAorICAgIGpzdGNvZGUsIENBU0UgV0hFTiBq c3RkYm5hbWUgIT0gJycgVEhFTiB0cnVlIEVMU0UgZmFsc2UgRU5EIEFTIGpz dGNvbm50eXBlLAorICAgIHslIGlmIGhhc19jb25uc3RyICV9anN0Y29ubnN0 ciwgeyUgZW5kaWYgJX0ganN0ZGJuYW1lLCBqc3RvbmVycm9yLCBqc2NuZXh0 cnVuCitGUk9NCisgICAgcGdhZ2VudC5wZ2Ffam9ic3RlcAorV0hFUkUKK3sl IGlmIGpzdGlkICV9CisgICAganN0aWQgPSB7eyBqc3RpZHxxdExpdGVyYWwg fX06OmludGVnZXIgQU5ECit7JSBlbmRpZiAlfQorICAgIGpzdGpvYmlkID0g e3sgamlkfHF0TGl0ZXJhbCB9fTo6aW50ZWdlcgorT1JERVIgQlkganN0bmFt ZTsKK3slLSBlbmRtYWNybyAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC90ZW1wbGF0 ZXMvbWFjcm9zL3BnYV9zY2hlZHVsZS5tYWNyb3MgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3RlbXBsYXRl cy9tYWNyb3MvcGdhX3NjaGVkdWxlLm1hY3JvcwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi41ZjcwOTg1Ci0tLSAvZGV2L251bGwKKysr IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv cGdBZ2VudC90ZW1wbGF0ZXMvbWFjcm9zL3BnYV9zY2hlZHVsZS5tYWNyb3MK QEAgLTAsMCArMSwxMDcgQEAKK3sjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfQoreyMgVGhpcyB3aWxsIGJlIHNw ZWNpZmljIG1hY3JvIGZvciBwZ2Ffc2NoZWR1bGUuICN9Cit7IyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI30KK3sl IGltcG9ydCAnbWFjcm9zL3BnYV9leGNlcHRpb24ubWFjcm9zJyBhcyBFWENF UFRJT05TICV9Cit7JSBtYWNybyBJTlNFUlQoamlkLCBkYXRhKSAtJX0KKy0t IEluc2VydGluZyBhIHNjaGVkdWxleyUgaWYgamlkICV9IChqb2JpZDoge3sg amlkfHF0TGl0ZXJhbCB9fSl7JSBlbmRpZiAlfQorCitJTlNFUlQgSU5UTyBw Z2FnZW50LnBnYV9zY2hlZHVsZSgKKyAgICBqc2Nqb2JpZCwganNjbmFtZSwg anNjZGVzYywganNjZW5hYmxlZCwKKyAgICBqc2NzdGFydCwgeyUgaWYgZGF0 YS5qc2NlbmQgJX1qc2NlbmQseyUgZW5kaWYgJX0KKyAgICBqc2NtaW51dGVz LCBqc2Nob3VycywganNjd2Vla2RheXMsIGpzY21vbnRoZGF5cywganNjbW9u dGhzCispIFZBTFVFUyAoCisgICAgeyUgaWYgamlkICV9e3sgamlkfHF0TGl0 ZXJhbCB9fXslIGVsc2UgJX1qaWR7JSBlbmRpZiAlfSwge3sgZGF0YS5qc2Nu YW1lfHF0TGl0ZXJhbCB9fTo6dGV4dCwge3sgZGF0YS5qc2NkZXNjfHF0TGl0 ZXJhbCB9fTo6dGV4dCwgeyUgaWYgZGF0YS5qc2NlbmFibGVkICV9dHJ1ZXsl IGVsc2UgJX1mYWxzZXslIGVuZGlmICV9LAorICAgIHt7IGRhdGEuanNjc3Rh cnR8cXRMaXRlcmFsIH19Ojp0aW1lc3RhbXAgd2l0aCB0aW1lIHpvbmUsIHsl IGlmIGRhdGEuanNjZW5kICV9e3sgZGF0YS5qc2NlbmR8cXRMaXRlcmFsIH19 Ojp0aW1lc3RhbXAgd2l0aCB0aW1lIHpvbmUseyUgZW5kaWYgJX0KKworICAg IC0tIE1pbnV0ZXMKKyAgICB7eyBkYXRhLmpzY21pbnV0ZXN8cXRMaXRlcmFs IH19Ojpib29sZWFuW10sCisgICAgLS0gSG91cnMKKyAgICB7eyBkYXRhLmpz Y2hvdXJzfHF0TGl0ZXJhbCB9fTo6Ym9vbGVhbltdLAorICAgIC0tIFdlZWsg ZGF5cworICAgIHt7IGRhdGEuanNjd2Vla2RheXN8cXRMaXRlcmFsIH19Ojpi b29sZWFuW10sCisgICAgLS0gTW9udGggZGF5cworICAgIHt7IGRhdGEuanNj bW9udGhkYXlzfHF0TGl0ZXJhbCB9fTo6Ym9vbGVhbltdLAorICAgIC0tIE1v bnRocworICAgIHt7IGRhdGEuanNjbW9udGhzfHF0TGl0ZXJhbCB9fTo6Ym9v bGVhbltdCispIFJFVFVSTklORyBqc2NpZCBJTlRPIHNjaWQ7eyUgaWYgJ2pz Y2V4Y2VwdGlvbnMnIGluIGRhdGEgJX0KK3slIGZvciBleGMgaW4gZGF0YS5q c2NleGNlcHRpb25zICV9CisKK3t7IEVYQ0VQVElPTlMuSU5TRVJUKE5vbmUs IGV4YykgfX17JSBlbmRmb3IgJX17JSBlbmRpZiAlfQoreyUtIGVuZG1hY3Jv ICV9Cit7JSBtYWNybyBVUERBVEUoamlkLCBqc2NpZCwgZGF0YSkgLSV9Cit7 JSBpZiAnanNjbmFtZScgaW4gZGF0YSBvciAnanNjZW5hYmxlZCcgaW4gZGF0 YSBvciAnanNjZGVzYycgaW4gZGF0YSBvciAnanNjc3RhcnQnIGluIGRhdGEg b3IgJ2pzY2VuZCcgaW4gZGF0YSBvciAnanNjZW5kJyBpbiBkYXRhIG9yICdq c2Ntb250aHMnIGluIGRhdGEgb3IgJ2pzY21pbnV0ZXMnIGluIGRhdGEgb3Ig J2pzY21vbnRoZGF5cycgaW4gZGF0YSBvciAnanNjaG91cnMnIGluIGRhdGEg b3IgJ2pzY3dlZWtkYXlzJyBpbiBkYXRhICV9CistLSBVcGRhdGluZyB0aGUg c2NoZWR1bGUgKGlkOiB7eyBqc2NpZHxxdExpdGVyYWwgfX0sIGpvYmlkOiB7 eyBqaWR8cXRMaXRlcmFsIH19KQorVVBEQVRFIHBnYWdlbnQucGdhX3NjaGVk dWxlCitTRVR7JSBpZiAnanNjbmFtZScgaW4gZGF0YSAlfQorCisgICAganNj bmFtZT17eyBkYXRhLmpzY25hbWV8cXRMaXRlcmFsIH19Ojp0ZXh0eyUgaWYg J2pzY2Rlc2MnIGluIGRhdGEgb3IgJ2pzY3N0YXJ0JyBpbiBkYXRhIG9yICdq c2NlbmQnIGluIGRhdGEgb3IgJ2pzY2VuZCcgaW4gZGF0YSBvciAnanNjbW9u dGhzJyBpbiBkYXRhIG9yICdqc2NtaW51dGVzJyBpbiBkYXRhIG9yICdqc2Nt b250aGRheXMnIGluIGRhdGEgb3IgJ2pzY2hvdXJzJyBpbiBkYXRhIG9yICdq c2N3ZWVrZGF5cycgaW4gZGF0YSBvciAnanNjZW5hYmxlZCcgaW4gZGF0YSAl fSx7JSBlbmRpZiAlfXslIGVuZGlmICV9eyUgaWYgJ2pzY2VuYWJsZWQnIGlu IGRhdGEgJX0KKworICAgIGpzY2VuYWJsZWQ9eyUgaWYgZGF0YS5qc2NlbmFi bGVkICV9dHJ1ZXslIGVsc2UgJX1mYWxzZXslIGVuZGlmICV9eyUgaWYgJ2pz Y2Rlc2MnIGluIGRhdGEgb3IgJ2pzY3N0YXJ0JyBpbiBkYXRhIG9yICdqc2Nl bmQnIGluIGRhdGEgb3IgJ2pzY2VuZCcgaW4gZGF0YSBvciAnanNjbW9udGhz JyBpbiBkYXRhIG9yICdqc2NtaW51dGVzJyBpbiBkYXRhIG9yICdqc2Ntb250 aGRheXMnIGluIGRhdGEgb3IgJ2pzY2hvdXJzJyBpbiBkYXRhIG9yICdqc2N3 ZWVrZGF5cycgaW4gZGF0YSAlfSx7JSBlbmRpZiAlfXslIGVuZGlmICV9eyUg aWYgJ2pzY2Rlc2MnIGluIGRhdGEgJX0KKworICAgIGpzY2Rlc2M9eyUgaWYg ZGF0YS5qc2NkZXNjICV9e3sgZGF0YS5qc2NkZXNjfHF0TGl0ZXJhbCB9fTo6 dGV4dHslIGVsc2UgJX0nJzo6dGV4dHslIGVuZGlmICV9eyUgaWYgJ2pzY3N0 YXJ0JyBpbiBkYXRhIG9yICdqc2NlbmQnIGluIGRhdGEgb3IgJ2pzY2VuZCcg aW4gZGF0YSBvciAnanNjbW9udGhzJyBpbiBkYXRhIG9yICdqc2NtaW51dGVz JyBpbiBkYXRhIG9yICdqc2Ntb250aGRheXMnIGluIGRhdGEgb3IgJ2pzY2hv dXJzJyBpbiBkYXRhIG9yICdqc2N3ZWVrZGF5cycgaW4gZGF0YSAlfSx7JSBl bmRpZiAlfXslIGVuZGlmICV9eyUgaWYgJ2pzY3N0YXJ0JyBpbiBkYXRhICV9 CisKKyAgICBqc2NzdGFydD17eyBkYXRhLmpzY3N0YXJ0fHF0TGl0ZXJhbCB9 fTo6dGV4dHslIGlmICdqc2NlbmQnIGluIGRhdGEgb3IgJ2pzY2VuZCcgaW4g ZGF0YSBvciAnanNjbW9udGhzJyBpbiBkYXRhIG9yICdqc2NtaW51dGVzJyBp biBkYXRhIG9yICdqc2Ntb250aGRheXMnIGluIGRhdGEgb3IgJ2pzY2hvdXJz JyBpbiBkYXRhIG9yICdqc2N3ZWVrZGF5cycgaW4gZGF0YSAlfSx7JSBlbmRp ZiAlfXslIGVuZGlmICV9eyUgaWYgJ2pzY2VuZCcgaW4gZGF0YSAlfQorCisg ICAganNjZW5kPXslIGlmIGRhdGEuanNjZW5kICV9e3sgZGF0YS5qc2NlbmR8 cXRMaXRlcmFsIH19Ojp0aW1lc3RhbXB0enslIGVsc2UgJX1OVUxMOjp0aW1l c3RhbXB0enslIGVuZGlmICV9eyUgaWYgJ2pzY2VuZCcgaW4gZGF0YSBvciAn anNjbW9udGhzJyBpbiBkYXRhIG9yICdqc2NtaW51dGVzJyBpbiBkYXRhIG9y ICdqc2Ntb250aGRheXMnIGluIGRhdGEgb3IgJ2pzY2hvdXJzJyBpbiBkYXRh IG9yICdqc2N3ZWVrZGF5cycgaW4gZGF0YSAlfSx7JSBlbmRpZiAlfXslIGVu ZGlmICV9eyUgaWYgJ2pzY21vbnRocycgaW4gZGF0YSAlfQorCisgICAganNj bW9udGhzPXt7IGRhdGEuanNjbW9udGhzfHF0TGl0ZXJhbCB9fTo6Ym9vbGVh bltdeyUgaWYgJ2pzY21pbnV0ZXMnIGluIGRhdGEgb3IgJ2pzY21vbnRoZGF5 cycgaW4gZGF0YSBvciAnanNjaG91cnMnIGluIGRhdGEgb3IgJ2pzY3dlZWtk YXlzJyBpbiBkYXRhICV9LHslIGVuZGlmICV9eyUgZW5kaWYgJX17JSBpZiAn anNjbWludXRlcycgaW4gZGF0YSAlfQorCisgICAganNjbWludXRlcz17eyBk YXRhLmpzY21pbnV0ZXN8cXRMaXRlcmFsIH19Ojpib29sZWFuW117JSBpZiAn anNjbW9udGhkYXlzJyBpbiBkYXRhIG9yICdqc2Nob3VycycgaW4gZGF0YSBv ciAnanNjd2Vla2RheXMnIGluIGRhdGEgJX0seyUgZW5kaWYgJX17JSBlbmRp ZiAlfXslIGlmICdqc2Ntb250aGRheXMnIGluIGRhdGEgJX0KKworICAgIGpz Y21vbnRoZGF5cz17eyBkYXRhLmpzY21vbnRoZGF5c3xxdExpdGVyYWwgfX06 OmJvb2xlYW5bXXslIGlmICdqc2Nob3VycycgaW4gZGF0YSBvciAnanNjd2Vl a2RheXMnIGluIGRhdGEgJX0seyUgZW5kaWYgJX17JSBlbmRpZiAlfXslIGlm ICdqc2Nob3VycycgaW4gZGF0YSAlfQorCisgICAganNjaG91cnM9e3sgZGF0 YS5qc2Nob3Vyc3xxdExpdGVyYWwgfX06OmJvb2xlYW5bXXslIGlmICdqc2N3 ZWVrZGF5cycgaW4gZGF0YSAlfSx7JSBlbmRpZiAlfXslIGVuZGlmICV9eyUg aWYgJ2pzY3dlZWtkYXlzJyBpbiBkYXRhICV9CisKKyAgICBqc2N3ZWVrZGF5 cz17eyBkYXRhLmpzY3dlZWtkYXlzfHF0TGl0ZXJhbCB9fTo6Ym9vbGVhbltd eyUgZW5kaWYgJX0KKworV0hFUkUganNjaWQ9e3sganNjaWR8cXRMaXRlcmFs IH19OjppbnRlZ2VyIEFORCBqc2Nqb2JpZD17eyBqaWR8cXRMaXRlcmFsIH19 OjppbnRlZ2VyO3slIGVuZGlmICV9eyUgaWYgJ2pzY2V4Y2VwdGlvbnMnIGlu IGRhdGEgJX0KK3slIGlmICdhZGRlZCcgaW4gZGF0YS5qc2NleGNlcHRpb25z IGFuZCBkYXRhLmpzY2V4Y2VwdGlvbnMuYWRkZWR8bGVuZ3RoID4gMCAlfQor Cit7JSBmb3IgZXhjIGluIGRhdGEuanNjZXhjZXB0aW9ucy5hZGRlZCAlfQor e3sgRVhDRVBUSU9OUy5JTlNFUlQoanNjaWQsIGV4YykgfX0KK3slIGVuZGZv ciAlfQoreyUgZW5kaWYgJX0KK3slIGlmICdkZWxldGVkJyBpbiBkYXRhLmpz Y2V4Y2VwdGlvbnMgYW5kIGRhdGEuanNjZXhjZXB0aW9ucy5kZWxldGVkfGxl bmd0aCA+IDAgJX0KKworeyUgZm9yIGV4YyBpbiBkYXRhLmpzY2V4Y2VwdGlv bnMuZGVsZXRlZCAlfQore3sgRVhDRVBUSU9OUy5ERUxFVEUoanNjaWQsIGV4 YykgfX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KK3slIGlmICdjaGFu Z2VkJyBpbiBkYXRhLmpzY2V4Y2VwdGlvbnMgYW5kIGRhdGEuanNjZXhjZXB0 aW9ucy5jaGFuZ2VkfGxlbmd0aCA+IDAgJX0KKworeyUgZm9yIGV4YyBpbiBk YXRhLmpzY2V4Y2VwdGlvbnMuY2hhbmdlZCAlfQore3sgRVhDRVBUSU9OUy5V UERBVEUoanNjaWQsIGV4YykgfX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYg JX0KK3slIGVuZGlmICV9Cit7JS0gZW5kbWFjcm8gJX0KK3slIG1hY3JvIERF TEVURShqaWQsIGpzY2lkKSAtJX0KKy0tIFJlbW92aW5nIHRoZSBleGlzdGlu ZyBzY2hlZHVsZSAoaWQ6IHt7IGpzY2lkfHF0TGl0ZXJhbCB9fSwgam9iaWQ6 IHt7IGppZHxxdExpdGVyYWwgfX0pCitERUxFVEUgRlJPTSBwZ2FnZW50LnBn YV9zY2hlZHVsZSBXSEVSRSBqc2NpZD17eyBqc2NpZHxxdExpdGVyYWwgfX06 OmludGVnZXIgQU5EIGpzY2pvYmlkPXt7IGppZHxxdExpdGVyYWwgfX06Omlu dGVnZXI7Cit7JS0gZW5kbWFjcm8gJX0KK3slIG1hY3JvIEZFVENIX0NVUlJF TlQoKSAtJX0KK1NFTEVDVCBqc2NpZCBGUk9NIHBnYWdlbnQucGdhX3NjaGVk dWxlIFdIRVJFIHhtaW46OnRleHQgPSAodHhpZF9jdXJyZW50KCkgJSAoMl4z Mik6OmJpZ2ludCk6OnRleHQ7Cit7JS0gZW5kbWFjcm8gJX0KK3slIG1hY3Jv IFBST1BFUlRJRVMoamlkLCBqc2NpZCkgLSV9CitTRUxFQ1QKKyAgICBqc2Np ZCwgIGpzY2pvYmlkLCBqc2NuYW1lLCBqc2NkZXNjLCBqc2NlbmFibGVkLCBq c2NzdGFydCwganNjZW5kLAorICAgIGpzY21pbnV0ZXMsIGpzY2hvdXJzLCBq c2N3ZWVrZGF5cywganNjbW9udGhkYXlzLCBqc2Ntb250aHMsCisgICAgamV4 aWQsIGpleGRhdGUsIGpleHRpbWUKK0ZST00KKyAgICBwZ2FnZW50LnBnYV9z Y2hlZHVsZSBzCisgICAgTEVGVCBKT0lOICgKKyAgICAgICAgU0VMRUNUCisg ICAgICAgICAgICBqZXhzY2lkLCBhcnJheV9hZ2coamV4aWQpIEFTIGpleGlk LCBhcnJheV9hZ2codG9fY2hhcihqZXhkYXRlLCAnTU0vREQvWVlZWScpKSBB UyBqZXhkYXRlLAorICAgICAgICAgICAgYXJyYXlfYWdnKGpleHRpbWUpIEFT IGpleHRpbWUKKyAgICAgICAgRlJPTQorICAgICAgICAgICAgcGdhZ2VudC5w Z2FfZXhjZXB0aW9uIGV4CisgICAgICAgIEdST1VQIEJZCisgICAgICAgICAg ICBqZXhzY2lkCisgICAgKSBlIE9OIHMuanNjaWQgPSBlLmpleHNjaWQKK1dI RVJFCit7JSBpZiBqc2NpZCAlfQorICAgcy5qc2NpZCA9IHt7IGpzY2lkfHF0 TGl0ZXJhbCB9fTo6aW50ZWdlciBBTkQKK3slIGVuZGlmICV9CisgICBzLmpz Y2pvYmlkID0ge3sgamlkfHF0TGl0ZXJhbCB9fTo6aW50ZWdlcgorT1JERVIg QlkganNjbmFtZTsKK3slLSBlbmRtYWNybyAlfQpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2Vu dC90ZW1wbGF0ZXMvcGdhX2pvYi9jc3MvcGdhX2pvYi5jc3MgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3Rl bXBsYXRlcy9wZ2Ffam9iL2Nzcy9wZ2Ffam9iLmNzcwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjhhZDUyCi0tLSAvZGV2L251bGwK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvcGdBZ2VudC90ZW1wbGF0ZXMvcGdhX2pvYi9jc3MvcGdhX2pvYi5jc3MK QEAgLTAsMCArMSwyNCBAQAorLmljb24tcGdhX2pvYiB7CisgIGJhY2tncm91 bmQtaW1hZ2U6IHVybCgne3sgdXJsX2ZvcignTk9ERS1wZ2Ffam9iLnN0YXRp YycsIGZpbGVuYW1lPSdpbWcvcGdhX2pvYi5wbmcnKSB9fScpICFpbXBvcnRh bnQ7CisgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CisgIGFsaWdu LWNvbnRlbnQ6IGNlbnRlcjsKKyAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsK KyAgaGVpZ2h0OiAxLjNlbTsKK30KKworLmljb24tcGdhX2pvYi1kaXNhYmxl ZCB7CisgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgne3sgdXJsX2ZvcignTk9E RS1wZ2Ffam9iLnN0YXRpYycsIGZpbGVuYW1lPSdpbWcvcGdhX2pvYi1kaXNh YmxlZC5wbmcnKSB9fScpICFpbXBvcnRhbnQ7CisgIGJhY2tncm91bmQtcmVw ZWF0OiBuby1yZXBlYXQ7CisgIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjsKKyAg dmVydGljYWwtYWxpZ246IG1pZGRsZTsKKyAgaGVpZ2h0OiAxLjNlbTsKK30K KworLnBnLWVsLWNvbnRhaW5lcltlbD1zbV0gLnBnYS1yb3VuZC1ib3JkZXIg eworICBib3JkZXI6IDFweCBzb2xpZCBkYXJrZ3JheTsKKyAgYm9yZGVyLXJh ZGl1czogMTJweDsKK30KKworLnBnLWVsLWNvbnRhaW5lcltlbD1zbV0gLnBn YS1yb3VuZC1ib3JkZXIgeworICBtYXJnaW46IDVweDsKK30KZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L3BnQWdlbnQvdGVtcGxhdGVzL3BnYV9qb2IvanMvcGdhX2pvYi5qcyBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdl bnQvdGVtcGxhdGVzL3BnYV9qb2IvanMvcGdhX2pvYi5qcwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNWNlYjAxCi0tLSAvZGV2L251 bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvcGdBZ2VudC90ZW1wbGF0ZXMvcGdhX2pvYi9qcy9wZ2Ffam9iLmpz CkBAIC0wLDAgKzEsMTU1IEBACitkZWZpbmUoCisgIFsKKyAgICAnanF1ZXJ5 JywgJ3VuZGVyc2NvcmUnLCAndW5kZXJzY29yZS5zdHJpbmcnLCAncGdhZG1p bicsCisgICAgJ3BnYWRtaW4uYnJvd3NlcicsICdhbGVydGlmeScsICdwZ2Fk bWluLm5vZGUucGdhX2pvYnN0ZXAnLAorICAgICdwZ2FkbWluLm5vZGUucGdh X3NjaGVkdWxlJworICBdLAorZnVuY3Rpb24oJCwgXywgUywgcGdBZG1pbiwg cGdCcm93c2VyLCBBbGVydGlmeSkgeworCisgIGlmICghcGdCcm93c2VyLk5v ZGVzWydjb2xsLXBnYV9qb2InXSkgeworICAgIHZhciBwZ2Ffam9icyA9IHBn QnJvd3Nlci5Ob2Rlc1snY29sbC1wZ2Ffam9iJ10gPQorICAgICAgcGdCcm93 c2VyLkNvbGxlY3Rpb24uZXh0ZW5kKHsKKyAgICAgICAgbm9kZTogJ3BnYV9q b2InLAorICAgICAgICBsYWJlbDogJ3t7IF8oJ3BnYV9qb2JzJykgfX0nLAor ICAgICAgICB0eXBlOiAnY29sbC1wZ2Ffam9iJywKKyAgICAgICAgY29sdW1u czogWydqb2JpZCcsICdqb2JuYW1lJywgJ2pvYmVuYWJsZWQnLCAnamxnc3Rh dHVzJywgJ2pvYm5leHRydW4nLCAnam9ibGFzdHJ1bicsICdqb2JkZXNjJ10s CisgICAgICAgIGhhc1N0YXRpc3RpY3M6IGZhbHNlCisgICAgICB9KTsKKyAg fTsKKworICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1sncGdhX2pvYiddKSB7Cisg ICAgcGdCcm93c2VyLk5vZGVzWydwZ2Ffam9iJ10gPSBwZ0Jyb3dzZXIuTm9k ZS5leHRlbmQoeworICAgICAgcGFyZW50X3R5cGU6ICdzZXJ2ZXInLAorICAg ICAgdHlwZTogJ3BnYV9qb2InLAorICAgICAgaGFzU1FMOiB0cnVlLAorICAg ICAgaGFzRGVwZW5kczogZmFsc2UsCisgICAgICBoYXNTdGF0aXN0aWNzOiB0 cnVlLAorICAgICAgaGFzQ29sbGVjdGl2ZVN0YXRpc3RpY3M6IHRydWUsCisg ICAgICB3aWR0aDogJzgwJScsCisgICAgICBoZWlnaHQ6ICc4MCUnLAorICAg ICAgY2FuRHJvcDogZnVuY3Rpb24obm9kZSkgeworICAgICAgICByZXR1cm4g dHJ1ZTsKKyAgICAgIH0sCisgICAgICBsYWJlbDogJ3t7IF8oJ3BnQWdlbnQg Sm9iJykgfX0nLAorICAgICAgbm9kZV9pbWFnZTogZnVuY3Rpb24oKSB7Cisg ICAgICAgIHJldHVybiAnaWNvbi1wZ2Ffam9iJzsKKyAgICAgIH0sCisgICAg ICBJbml0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgLyogQXZvaWQgbXVsaXRw bGUgcmVnaXN0cmF0aW9uIG9mIG1lbnVzICovCisgICAgICAgIGlmICh0aGlz LmluaXRpYWxpemVkKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg IHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlOworCisgICAgICAgIHBnQnJvd3Nl ci5hZGRfbWVudXMoW3sKKyAgICAgICAgICBuYW1lOiAnY3JlYXRlX3BnYV9q b2Jfb25fY29sbCcsIG5vZGU6ICdjb2xsLXBnYV9qb2InLCBtb2R1bGU6IHRo aXMsCisgICAgICAgICAgYXBwbGllczogWydvYmplY3QnLCAnY29udGV4dCdd LCBjYWxsYmFjazogJ3Nob3dfb2JqX3Byb3BlcnRpZXMnLAorICAgICAgICAg IGNhdGVnb3J5OiAnY3JlYXRlJywgcHJpb3JpdHk6IDQsIGxhYmVsOiAne3sg XygncGdBZ2VudCBKb2IuLi4nKSB9fScsCisgICAgICAgICAgaWNvbjogJ3dj VGFiSWNvbiBpY29uLXBnYV9qb2InLCBkYXRhOiB7YWN0aW9uOiAnY3JlYXRl J30KKyAgICAgICAgfSx7CisgICAgICAgICAgbmFtZTogJ2NyZWF0ZV9wZ2Ff am9iJywgbm9kZTogJ3BnYV9qb2InLCBtb2R1bGU6IHRoaXMsCisgICAgICAg ICAgYXBwbGllczogWydvYmplY3QnLCAnY29udGV4dCddLCBjYWxsYmFjazog J3Nob3dfb2JqX3Byb3BlcnRpZXMnLAorICAgICAgICAgIGNhdGVnb3J5OiAn Y3JlYXRlJywgcHJpb3JpdHk6IDQsIGxhYmVsOiAne3sgXygncGdBZ2VudCBK b2IuLi4nKSB9fScsCisgICAgICAgICAgaWNvbjogJ3djVGFiSWNvbiBpY29u LXBnYV9qb2InLCBkYXRhOiB7YWN0aW9uOiAnY3JlYXRlJ30KKyAgICAgICAg fV0pOworICAgICAgfSwKKyAgICAgIG1vZGVsOiBwZ0Jyb3dzZXIuTm9kZS5N b2RlbC5leHRlbmQoeworICAgICAgICBkZWZhdWx0czogeworICAgICAgICAg IGpvYm5hbWU6ICcnLAorICAgICAgICAgIGpvYmlkOiB1bmRlZmluZWQsCisg ICAgICAgICAgam9iZW5hYmxlZDogdHJ1ZSwKKyAgICAgICAgICBqb2Job3N0 YWdlbnQ6ICcnLAorICAgICAgICAgIGpvYmpjbGlkOiAxLAorICAgICAgICAg IGpvYmNyZWF0ZWQ6IHVuZGVmaW5lZCwKKyAgICAgICAgICBqb2JjaGFuZ2Vk OiB1bmRlZmluZWQsCisgICAgICAgICAgam9ibmV4dHJ1bjogdW5kZWZpbmVk LAorICAgICAgICAgIGpvYmxhc3RydW46IHVuZGVmaW5lZCwKKyAgICAgICAg ICBqbGdzdGF0dXM6IHVuZGVmaW5lZCwKKyAgICAgICAgICBqb2JydW5uaW5n YXQ6IHVuZGVmaW5lZCwKKyAgICAgICAgICBqb2JkZXNjOiAnJywKKyAgICAg ICAgICBqc3RlcHM6IFtdLAorICAgICAgICAgIGpzY2hlZHVsZXM6IFtdCisg ICAgICAgIH0sCisgICAgICAgIGlkQXR0cmlidXRlOiAnam9iaWQnLAorICAg ICAgICBwYXJzZTogZnVuY3Rpb24oKSB7CisgICAgICAgICAgdmFyIGQgPSBw Z0Jyb3dzZXIuTm9kZS5Nb2RlbC5wcm90b3R5cGUucGFyc2UuYXBwbHkodGhp cywgYXJndW1lbnRzKTsKKworICAgICAgICAgIGlmIChkKSB7CisgICAgICAg ICAgICBkLmpvYnJ1bm5pbmdhdCA9IGQuamFnaG9zdGFnZW50IHx8ICJ7eyBf KCdOb3QgcnVubmluZyBjdXJyZW50bHkuJykgfX0iOworICAgICAgICAgICAg ZC5qbGdzdGF0dXMgPSBkLmpsZ3N0YXR1cyB8fCAie3sgXygnVW5rbm93bicp IH19IjsKKyAgICAgICAgICB9CisgICAgICAgICAgcmV0dXJuIGQ7CisgICAg ICAgIH0sCisgICAgICAgIHNjaGVtYTogW3sKKyAgICAgICAgICBpZDogJ2pv Ym5hbWUnLCBsYWJlbDogJ3t7IF8oJ05hbWUnKSB9fScsIHR5cGU6ICd0ZXh0 JywKKyAgICAgICAgICBjZWxsSGVhZGVyQ2xhc3NlczogJ3dpZHRoX3BlcmNl bnRfMzAnCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAnam9iaWQnLCBs YWJlbDone3sgXygnSUQnKSB9fScsIG1vZGU6IFsncHJvcGVydGllcyddLAor ICAgICAgICAgIHR5cGU6ICdpbnQnCisgICAgICAgIH0seworICAgICAgICAg IGlkOiAnam9iZW5hYmxlZCcsIGxhYmVsOid7eyBfKCdFbmFibGVkJykgfX0n LCB0eXBlOiAnc3dpdGNoJywKKyAgICAgICAgICBjZWxsSGVhZGVyQ2xhc3Nl czogJ3dpZHRoX3BlcmNlbnRfNScKKyAgICAgICAgfSx7CisgICAgICAgICAg aWQ6ICdqb2JjbGFzcycsIGxhYmVsOiAne3sgXygnSm9iIENsYXNzJykgfX0n LCB0eXBlOiAndGV4dCcsCisgICAgICAgICAgbW9kZTogWydwcm9wZXJ0aWVz J10KKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdqb2JqY2xpZCcsIGxh YmVsOiAne3sgXygnSm9iIENsYXNzJykgfX0nLCB0eXBlOiAnaW50ZWdlcics CisgICAgICAgICAgY29udHJvbDogJ25vZGUtYWpheC1vcHRpb25zJywgdXJs OiAnY2xhc3NlcycsIHVybF93aXRoX2lkOiBmYWxzZSwKKyAgICAgICAgICBj YWNoZV9ub2RlOiAnc2VydmVyJywgbW9kZTogWydjcmVhdGUnLCAnZWRpdCdd LAorICAgICAgICAgIHNlbGVjdDI6IHthbGxvd0NsZWFyOiBmYWxzZX0KKyAg ICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdqb2Job3N0YWdlbnQnLCBsYWJl bDogJ3t7IF8oJ0hvc3QgQWdlbnQnKSB9fScsIHR5cGU6ICd0ZXh0JworICAg ICAgICB9LHsKKyAgICAgICAgICBpZDogJ2pvYmNyZWF0ZWQnLCB0eXBlOiAn dGV4dCcsIG1vZGU6IFsncHJvcGVydGllcyddLAorICAgICAgICAgIGxhYmVs OiAne3sgXygnQ3JlYXRlZCcpIH19JworICAgICAgICB9LHsKKyAgICAgICAg ICBpZDogJ2pvYmNoYW5nZWQnLCB0eXBlOiAndGV4dCcsIG1vZGU6IFsncHJv cGVydGllcyddLAorICAgICAgICAgIGxhYmVsOiAne3sgXygnQ2hhbmdlZCcp IH19JworICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2pvYm5leHRydW4n LCB0eXBlOiAndGV4dCcsIG1vZGU6IFsncHJvcGVydGllcyddLAorICAgICAg ICAgIGxhYmVsOiAne3sgXygnTmV4dCBydW4nKSB9fScsIGNlbGxIZWFkZXJD bGFzc2VzOiAnd2lkdGhfcGVyY2VudF8yMCcKKyAgICAgICAgfSx7CisgICAg ICAgICAgaWQ6ICdqb2JsYXN0cnVuJywgdHlwZTogJ3RleHQnLCBtb2RlOiBb J3Byb3BlcnRpZXMnXSwKKyAgICAgICAgICBsYWJlbDogJ3t7IF8oJ0xhc3Qg cnVuJykgfX0nLCBjZWxsSGVhZGVyQ2xhc3NlczogJ3dpZHRoX3BlcmNlbnRf MjAnCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAnamxnc3RhdHVzJywg dHlwZTogJ3RleHQnLCBsYWJlbDogJ3t7IF8oJ0xhc3QgcmVzdWx0JykgfX0n LAorICAgICAgICAgIGNlbGxIZWFkZXJDbGFzc2VzOiAnd2lkdGhfcGVyY2Vu dF81JywgbW9kZTogWydwcm9wZXJ0aWVzJ10KKyAgICAgICAgfSx7CisgICAg ICAgICAgaWQ6ICdqb2JydW5uaW5nYXQnLCB0eXBlOiAndGV4dCcsIG1vZGU6 IFsncHJvcGVydGllcyddLAorICAgICAgICAgIGxhYmVsOiAne3sgXygnUnVu bmluZyBhdCcpIH19JworICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2pv YmRlc2MnLCBsYWJlbDone3sgXygnQ29tbWVudCcpIH19JywgdHlwZTogJ211 bHRpbGluZScsCisgICAgICAgICAgY2VsbEhlYWRlckNsYXNzZXM6ICd3aWR0 aF9wZXJjZW50XzE1JworICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2pz dGVwcycsIGxhYmVsOiAnJywgZ3JvdXA6ICd7eyBfKCJTdGVwcyIpIH19JywK KyAgICAgICAgICB0eXBlOiAnY29sbGVjdGlvbicsIG1vZGU6IFsnZWRpdCcs ICdjcmVhdGUnXSwKKyAgICAgICAgICBtb2RlbDogcGdCcm93c2VyLk5vZGVz WydwZ2Ffam9ic3RlcCddLm1vZGVsLCBjYW5FZGl0OiB0cnVlLAorICAgICAg ICAgIGNvbnRyb2w6ICdzdWItbm9kZS1jb2xsZWN0aW9uJywgY2FuQWRkOiB0 cnVlLCBjYW5EZWxldGU6IHRydWUsCisgICAgICAgICAgY29sdW1uczogWwor ICAgICAgICAgICAgJ2pzdG5hbWUnLCAnanN0ZW5hYmxlZCcsICdqc3RraW5k JywgJ2pzdGNvbm50eXBlJywgJ2pzdG9uZXJyb3InCisgICAgICAgICAgXQor ICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2pzY2hlZHVsZXMnLCBsYWJl bDogJycsIGdyb3VwOiAne3sgXygiU2NoZWR1bGVzIikgfX0nLAorICAgICAg ICAgIHR5cGU6ICdjb2xsZWN0aW9uJywgbW9kZTogWydlZGl0JywgJ2NyZWF0 ZSddLAorICAgICAgICAgIGNvbnRyb2w6ICdzdWItbm9kZS1jb2xsZWN0aW9u JywgY2FuQWRkOiB0cnVlLCBjYW5EZWxldGU6IHRydWUsCisgICAgICAgICAg Y2FuRWRpdDogdHJ1ZSwgbW9kZWw6IHBnQnJvd3Nlci5Ob2Rlc1sncGdhX3Nj aGVkdWxlJ10ubW9kZWwsCisgICAgICAgICAgY29sdW1uczogWydqc2NuYW1l JywgJ2pzY2VuYWJsZWQnLCAnanNjc3RhcnQnLCAnanNjZW5kJ10KKyAgICAg ICAgfV0sCisgICAgICAgIHZhbGlkYXRlOiBmdW5jdGlvbihrZXlzKSB7Cisg ICAgICAgICAgdmFyIG5hbWUgPSB0aGlzLmdldCgnam9ibmFtZScpOworICAg ICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKG5hbWUpIHx8IF8uaXNOdWxsKG5h bWUpIHx8CisgICAgICAgICAgICBTdHJpbmcobmFtZSkucmVwbGFjZSgvXlxz K3xccyskL2csICcnKSA9PSAnJykgeworICAgICAgICAgICAgdmFyIG1zZyA9 ICd7eyBfKCdOYW1lIGNhbm5vdCBiZSBlbXB0eS4nKSB9fSc7CisgICAgICAg ICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdqb2JuYW1lJywgbXNnKTsKKyAg ICAgICAgICAgIHJldHVybiBtc2c7CisgICAgICAgICAgfSBlbHNlIHsKKyAg ICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC51bnNldCgnam9ibmFtZScpOwor ICAgICAgICAgIH0KKyAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAg fQorICAgICAgfSkKKyAgICB9KTsKKyAgfQorCisgIHJldHVybiBwZ0Jyb3dz ZXIuTm9kZXNbJ3BnYV9qb2InXTsKK30pOwpkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC90 ZW1wbGF0ZXMvcGdhX2pvYi9zcWwvcHJlMy40L2NyZWF0ZS5zcWwgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50 L3RlbXBsYXRlcy9wZ2Ffam9iL3NxbC9wcmUzLjQvY3JlYXRlLnNxbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iODk1OWNjCi0tLSAv ZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvcGdBZ2VudC90ZW1wbGF0ZXMvcGdhX2pvYi9zcWwvcHJl My40L2NyZWF0ZS5zcWwKQEAgLTAsMCArMSwyOSBAQAoreyUgaW1wb3J0ICdt YWNyb3MvcGdhX2pvYnN0ZXAubWFjcm9zJyBhcyBTVEVQICV9Cit7JSBpbXBv cnQgJ21hY3Jvcy9wZ2Ffc2NoZWR1bGUubWFjcm9zJyBhcyBTQ0hFRFVMRSAl fQorRE8gJCQKK0RFQ0xBUkUKKyAgICBqaWQgaW50ZWdlcjt7JSBpZiAnanNj aGVkdWxlcycgaW4gZGF0YSBhbmQgZGF0YS5qc2NoZWR1bGVzfGxlbmd0aCA+ IDAgJX0KKworICAgIHNjaWQgaW50ZWdlcjt7JSBlbmRpZiAlfQorCitCRUdJ TgorLS0gQ3JlYXRpbmcgYSBuZXcgam9iCitJTlNFUlQgSU5UTyBwZ2FnZW50 LnBnYV9qb2IoCisgICAgam9iamNsaWQsIGpvYm5hbWUsIGpvYmRlc2MsIGpv Ymhvc3RhZ2VudCwgam9iZW5hYmxlZAorKSBWQUxVRVMgKAorICAgIHt7IGRh dGEuam9iamNsaWR8cXRMaXRlcmFsIH19OjppbnRlZ2VyLCB7eyBkYXRhLmpv Ym5hbWV8cXRMaXRlcmFsIH19Ojp0ZXh0LCB7eyBkYXRhLmpvYmRlc2N8cXRM aXRlcmFsIH19Ojp0ZXh0LCB7eyBkYXRhLmpvYmhvc3RhZ2VudHxxdExpdGVy YWwgfX06OnRleHQsIHslIGlmIGRhdGEuam9iZW5hYmxlZCAlfXRydWV7JSBl bHNlICV9ZmFsc2V7JSBlbmRpZiAlfQorCispIFJFVFVSTklORyBqb2JpZCBJ TlRPIGppZDt7JSBpZiAnanN0ZXBzJyBpbiBkYXRhIGFuZCBkYXRhLmpzdGVw c3xsZW5ndGggPiAwICV9CisKKy0tIFN0ZXBzCit7JSBmb3Igc3RlcCBpbiBk YXRhLmpzdGVwcyAlfXt7IFNURVAuSU5TRVJUKGhhc19jb25uc3RyLCBOb25l LCBzdGVwKSB9fXslIGVuZGZvciAlfQoreyUgZW5kaWYgJX17JSBpZiAnanNj aGVkdWxlcycgaW4gZGF0YSBhbmQgZGF0YS5qc2NoZWR1bGVzfGxlbmd0aCA+ IDAgJX0KKworLS0gU2NoZWR1bGVzCit7JSBmb3Igc2NoZWR1bGUgaW4gZGF0 YS5qc2NoZWR1bGVzICV9e3sgU0NIRURVTEUuSU5TRVJUKE5vbmUsIHNjaGVk dWxlKSB9fXslIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KKworRU5ECiskJDt7 JSBpZiBmZXRjaF9pZCAlfQorCitTRUxFQ1Qgam9iaWQgRlJPTSBwZ2FnZW50 LnBnYV9qb2IgV0hFUkUgeG1pbjo6dGV4dCA9ICh0eGlkX2N1cnJlbnQoKSAl ICgyXjMyKTo6YmlnaW50KTo6dGV4dDt7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv cGdBZ2VudC90ZW1wbGF0ZXMvcGdhX2pvYi9zcWwvcHJlMy40L2RlbGV0ZS5z cWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9wZ0FnZW50L3RlbXBsYXRlcy9wZ2Ffam9iL3NxbC9wcmUzLjQvZGVsZXRl LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZTNj ZDg2Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC90ZW1wbGF0ZXMvcGdhX2pv Yi9zcWwvcHJlMy40L2RlbGV0ZS5zcWwKQEAgLTAsMCArMSBAQAorREVMRVRF IEZST00gcGdhZ2VudC5wZ2Ffam9iIFdIRVJFIGpvYmlkID0ge3sgamlkfHF0 TGl0ZXJhbCB9fTo6aW50ZWdlcjsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxh dGVzL3BnYV9qb2Ivc3FsL3ByZTMuNC9qb2JfY2xhc3Nlcy5zcWwgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50 L3RlbXBsYXRlcy9wZ2Ffam9iL3NxbC9wcmUzLjQvam9iX2NsYXNzZXMuc3Fs Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1MzE5MWEK LS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3RlbXBsYXRlcy9wZ2Ffam9iL3Nx bC9wcmUzLjQvam9iX2NsYXNzZXMuc3FsCkBAIC0wLDAgKzEgQEAKK1NFTEVD VCBqY2xpZCBBUyB2YWx1ZSwgamNsbmFtZSBBUyBsYWJlbCBGUk9NIHBnYWdl bnQucGdhX2pvYmNsYXNzCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3RlbXBsYXRlcy9w Z2Ffam9iL3NxbC9wcmUzLjQvbm9kZXMuc3FsIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC90ZW1wbGF0ZXMv cGdhX2pvYi9zcWwvcHJlMy40L25vZGVzLnNxbApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi5mYTk2ZWFmCi0tLSAvZGV2L251bGwKKysr IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv cGdBZ2VudC90ZW1wbGF0ZXMvcGdhX2pvYi9zcWwvcHJlMy40L25vZGVzLnNx bApAQCAtMCwwICsxLDggQEAKK1NFTEVDVAorICAgIGpvYmlkLCBqb2JuYW1l LCBqb2JlbmFibGVkCitGUk9NCisgICAgcGdhZ2VudC5wZ2Ffam9iCit7JSBp ZiBqaWQgJX0KK1dIRVJFIGpvYmlkID0ge3sgamlkfHF0TGl0ZXJhbCB9fTo6 aW50ZWdlcgoreyUgZW5kaWYgJX0KK09SREVSIEJZIGpvYm5hbWU7CmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9wZ0FnZW50L3RlbXBsYXRlcy9wZ2Ffam9iL3NxbC9wcmUzLjQvcHJv cGVydGllcy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9wZ0FnZW50L3RlbXBsYXRlcy9wZ2Ffam9iL3NxbC9wcmUz LjQvcHJvcGVydGllcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uZDU2ZDgyMAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVt cGxhdGVzL3BnYV9qb2Ivc3FsL3ByZTMuNC9wcm9wZXJ0aWVzLnNxbApAQCAt MCwwICsxLDIxIEBACitTRUxFQ1QKKyAgICBqLmpvYmlkIEFTIGpvYmlkLCBq LmpvYm5hbWUgYXMgam9ibmFtZSwgai5qb2JlbmFibGVkIGFzIGpvYmVuYWJs ZWQsCisgICAgai5qb2JkZXNjIEFTIGpvYmRlc2MsIGouam9iaG9zdGFnZW50 IEFTIGpvYmhvc3RhZ2VudCwKKyAgICBqLmpvYmNyZWF0ZWQgQVMgam9iY3Jl YXRlZCwgai5qb2JjaGFuZ2VkIEFTIGpvYmNoYW5nZWQsCisgICAgYWcuamFn c3RhdGlvbiBBUyBqYWdhZ2VudCwgc3ViLmpsZ3N0YXR1cyBBUyBqbGdzdGF0 dXMsCisgICAgai5qb2JhZ2VudGlkIEFTIGpvYmFnZW50aWQsIGouam9ibmV4 dHJ1biBBUyBqb2JuZXh0cnVuLAorICAgIGouam9ibGFzdHJ1biBBUyBqb2Js YXN0cnVuLCBqLmpvYmpjbGlkIEFTIGpvYmpjbGlkLAorICAgIGpjLmpjbG5h bWUgQVMgam9iY2xhc3MKK0ZST00KKyAgICBwZ2FnZW50LnBnYV9qb2Igagor ICAgIExFRlQgT1VURVIgSk9JTiBwZ2FnZW50LnBnYV9qb2JhZ2VudCBhZyBP TiBhZy5qYWdwaWQ9am9iYWdlbnRpZAorICAgIExFRlQgT1VURVIgSk9JTiAo CisgICAgICAgIFNFTEVDVCBESVNUSU5DVCBPTiAoamxnam9iaWQpIGpsZ3N0 YXR1cywgamxnam9iaWQKKyAgICAgICAgRlJPTSBwZ2FnZW50LnBnYV9qb2Js b2cKKyAgICAgICAgT1JERVIgQlkgamxnam9iaWQsIGpsZ2lkIERFU0MKKyAg ICApIHN1YiBPTiBzdWIuamxnam9iaWQgPSBqLmpvYmlkCisgICAgTEVGVCBK T0lOIHBnYWdlbnQucGdhX2pvYmNsYXNzIGpjIE9OIChqLmpvYmpjbGlkID0g amMuamNsaWQpCit7JSBpZiBqaWQgJX0KK1dIRVJFIGouam9iaWQgPSB7eyBq aWR8cXRMaXRlcmFsIH19OjppbnRlZ2VyCit7JSBlbmRpZiAlfQorT1JERVIg Qlkgai5qb2JuYW1lOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC90ZW1wbGF0ZXMvcGdh X2pvYi9zcWwvcHJlMy40L3J1bl9ub3cuc3FsIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC90ZW1wbGF0ZXMv cGdhX2pvYi9zcWwvcHJlMy40L3J1bl9ub3cuc3FsCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3NjJjYzEKLS0tIC9kZXYvbnVsbAor KysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9wZ0FnZW50L3RlbXBsYXRlcy9wZ2Ffam9iL3NxbC9wcmUzLjQvcnVuX25v dy5zcWwKQEAgLTAsMCArMSwzIEBACitVUERBVEUgcGdhZ2VudC5wZ2Ffam9i CitTRVQgam9ibmV4dHJ1bj1ub3coKTo6dGltZXN0YW1wdHoKK1dIRVJFIGpv YmlkPXt7IGppZHxxdExpdGVyYWwgfX06OmludGVnZXIKZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3Bn QWdlbnQvdGVtcGxhdGVzL3BnYV9qb2Ivc3FsL3ByZTMuNC9zY2hlZHVsZXMu c3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvcGdBZ2VudC90ZW1wbGF0ZXMvcGdhX2pvYi9zcWwvcHJlMy40L3NjaGVk dWxlcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u MzcwMGRjZAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL3Bn YV9qb2Ivc3FsL3ByZTMuNC9zY2hlZHVsZXMuc3FsCkBAIC0wLDAgKzEsMiBA QAoreyUgaW1wb3J0ICdtYWNyb3MvcGdhX3NjaGVkdWxlLm1hY3JvcycgYXMg U0NIRURVTEUgJX0KK3t7IFNDSEVEVUxFLlBST1BFUlRJRVMoamlkLCBqc2Np ZCkgfX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL3BnYV9qb2Ivc3Fs L3ByZTMuNC9zdGF0cy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3RlbXBsYXRlcy9wZ2Ffam9iL3Nx bC9wcmUzLjQvc3RhdHMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjRhZDIwMTQKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3Rl bXBsYXRlcy9wZ2Ffam9iL3NxbC9wcmUzLjQvc3RhdHMuc3FsCkBAIC0wLDAg KzEsMTEgQEAKK1NFTEVDVAorICAgIGpsZ2lkIEFTIHt7IGNvbm58cXRJZGVu dChfKCdSdW4nKSkgfX0sCisgICAgamxnc3RhdHVzIEFTIHt7IGNvbm58cXRJ ZGVudChfKCdTdGF0dXMnKSkgfX0sCisgICAgamxnc3RhcnQgQVMge3sgY29u bnxxdElkZW50KF8oJ1N0YXJ0IHRpbWUnKSkgfX0sCisgICAgamxnZHVyYXRp b24gQVMge3sgY29ubnxxdElkZW50KF8oJ0R1cmF0aW9uJykpIH19LAorICAg IChqbGdzdGFydCArIGpsZ2R1cmF0aW9uKSBBUyB7eyBjb25ufHF0SWRlbnQo XygnRW5kIHRpbWUnKSkgfX0KK0ZST00KKyAgICBwZ2FnZW50LnBnYV9qb2Js b2cKK1dIRVJFCisgICAgamxnam9iaWQgPSB7eyBqaWR8cXRMaXRlcmFsIH19 OjppbnRlZ2VyCitPUkRFUiBCWSBqbGdpZCBERVNDOwpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdB Z2VudC90ZW1wbGF0ZXMvcGdhX2pvYi9zcWwvcHJlMy40L3N0ZXBzLnNxbCBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3Bn QWdlbnQvdGVtcGxhdGVzL3BnYV9qb2Ivc3FsL3ByZTMuNC9zdGVwcy5zcWwK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjBjM2VjZQot LS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL3BnYV9qb2Ivc3Fs L3ByZTMuNC9zdGVwcy5zcWwKQEAgLTAsMCArMSwyIEBACit7JSBpbXBvcnQg J21hY3Jvcy9wZ2Ffam9ic3RlcC5tYWNyb3MnIGFzIFNURVAgJX0KK3t7IFNU RVAuUFJPUEVSVElFUyhoYXNfY29ubnN0ciwgamlkLCBqc3RpZCkgfX0KZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL3BnYV9qb2Ivc3FsL3ByZTMuNC91 cGRhdGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvcGdBZ2VudC90ZW1wbGF0ZXMvcGdhX2pvYi9zcWwvcHJlMy40 L3VwZGF0ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uZDg1NTg0MwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVz L3BnYV9qb2Ivc3FsL3ByZTMuNC91cGRhdGUuc3FsCkBAIC0wLDAgKzEsMjAg QEAKK3slIGltcG9ydCAnbWFjcm9zL3BnYV9qb2JzdGVwLm1hY3JvcycgYXMg U1RFUCAlfQoreyUgaW1wb3J0ICdtYWNyb3MvcGdhX3NjaGVkdWxlLm1hY3Jv cycgYXMgU0NIRURVTEUgJX0KK3slIGlmICdqb2JqY2xpZCcgaW4gZGF0YSBv ciAnam9ibmFtZScgaW4gZGF0YSBvciAnam9iZGVzYycgaW4gZGF0YSBvciAn am9iaG9zdGFnZW50JyBpbiBkYXRhIG9yICdqb2JlbmFibGVkJyBpbiBkYXRh ICV9CitVUERBVEUgcGdhZ2VudC5wZ2Ffam9iCitTRVQgeyUgaWYgJ2pvYmpj bGlkJyBpbiBkYXRhICV9am9iamNsaWQ9e3sgZGF0YS5qb2JqY2xpZHxxdExp dGVyYWwgfX06OmludGVnZXJ7JSBpZiAnam9ibmFtZScgaW4gZGF0YSBvciAn am9iZGVzYycgaW4gZGF0YSBvciAnam9iaG9zdGFnZW50JyBpbiBkYXRhIG9y ICdqb2JlbmFibGVkJyBpbiBkYXRhICV9LCB7JSBlbmRpZiAlfXslIGVuZGlm ICV9Cit7JSBpZiAnam9ibmFtZScgaW4gZGF0YSAlfWpvYm5hbWU9e3sgZGF0 YS5qb2JuYW1lfHF0TGl0ZXJhbCB9fTo6dGV4dHslaWYgJ2pvYmRlc2MnIGlu IGRhdGEgb3IgJ2pvYmhvc3RhZ2VudCcgaW4gZGF0YSBvciAnam9iZW5hYmxl ZCcgaW4gZGF0YSAlfSwgeyUgZW5kaWYgJX17JSBlbmRpZiAlfQoreyUgaWYg J2pvYmRlc2MnIGluIGRhdGEgJX1qb2JkZXNjPXt7IGRhdGEuam9iZGVzY3xx dExpdGVyYWwgfX06OnRleHR7JWlmICdqb2Job3N0YWdlbnQnIGluIGRhdGEg b3IgJ2pvYmVuYWJsZWQnIGluIGRhdGEgJX0sIHslIGVuZGlmICV9eyUgZW5k aWYgJX0KK3slaWYgJ2pvYmhvc3RhZ2VudCcgaW4gZGF0YSAlfWpvYmhvc3Rh Z2VudD17eyBkYXRhLmpvYmhvc3RhZ2VudHxxdExpdGVyYWwgfX06OnRleHR7 JSBpZiAnam9iZW5hYmxlZCcgaW4gZGF0YSAlfSwgeyUgZW5kaWYgJX17JSBl bmRpZiAlfQoreyUgaWYgJ2pvYmVuYWJsZWQnIGluIGRhdGEgJX1qb2JlbmFi bGVkPXslIGlmIGRhdGEuam9iZW5hYmxlZCAlfXRydWV7JSBlbHNlICV9ZmFs c2V7JSBlbmRpZiAlfXslIGVuZGlmICV9CisKK1dIRVJFIGpvYmlkID0ge3sg amlkIH19OworeyUgZW5kaWYgJX17JSBpZiAnanN0ZXBzJyBpbiBkYXRhICV9 CisKK3slIGlmICdkZWxldGVkJyBpbiBkYXRhLmpzdGVwcyAlfXslIGZvciBz dGVwIGluIGRhdGEuanN0ZXBzLmRlbGV0ZWQgJX17eyBTVEVQLkRFTEVURShq aWQsIHN0ZXAuanN0aWQpIH19eyUgZW5kZm9yICV9eyUgZW5kaWYgJX0KK3sl IGlmICdjaGFuZ2VkJyBpbiBkYXRhLmpzdGVwcyAlfXslIGZvciBzdGVwIGlu IGRhdGEuanN0ZXBzLmNoYW5nZWQgJX17eyBTVEVQLlVQREFURShoYXNfY29u bnN0ciwgamlkLCBzdGVwLmpzdGlkLCBzdGVwKSB9fXslIGVuZGZvciAlfXsl IGVuZGlmICV9Cit7JSBpZiAnYWRkZWQnIGluIGRhdGEuanN0ZXBzICV9eyUg Zm9yIHN0ZXAgaW4gZGF0YS5qc3RlcHMuYWRkZWQgJX17eyBTVEVQLklOU0VS VChoYXNfY29ubnN0ciwgamlkLCBzdGVwKSB9fXslIGVuZGZvciAlfXslIGVu ZGlmICV9eyUgZW5kaWYgJX17JSBpZiAnanNjaGVkdWxlcycgaW4gZGF0YSAl fQorCit7JSBpZiAnZGVsZXRlZCcgaW4gZGF0YS5qc2NoZWR1bGVzICV9eyUg Zm9yIHNjaGVkdWxlIGluIGRhdGEuanNjaGVkdWxlcy5kZWxldGVkICV9e3sg U0NIRURVTEUuREVMRVRFKGppZCwgc2NoZWR1bGUuanNjaWQpIH19eyUgZW5k Zm9yICV9eyUgZW5kaWYgJX0KK3slIGlmICdjaGFuZ2VkJyBpbiBkYXRhLmpz Y2hlZHVsZXMgJX17JSBmb3Igc2NoZWR1bGUgaW4gZGF0YS5qc2NoZWR1bGVz LmNoYW5nZWQgJX17eyBTQ0hFRFVMRS5VUERBVEUoaGFzX2Nvbm5zdHIsIGpp ZCwgc2NoZWR1bGUuanNjaWQsIHNjaGVkdWxlKSB9fXslIGVuZGZvciAlfXsl IGVuZGlmICV9Cit7JSBpZiAnYWRkZWQnIGluIGRhdGEuanNjaGVkdWxlcyAl fXslIGZvciBzY2hlZHVsZSBpbiBkYXRhLmpzY2hlZHVsZXMuYWRkZWQgJX17 eyBTQ0hFRFVMRS5JTlNFUlQoaGFzX2Nvbm5zdHIsIGppZCwgc2NoZWR1bGUp IH19eyUgZW5kZm9yICV9eyUgZW5kaWYgJX17JSBlbmRpZiAlfQpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvcGdBZ2VudC90ZW1wbGF0ZXMvcGdhX2pvYnN0ZXAvc3FsL3ByZTMuNC9j cmVhdGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvcGdBZ2VudC90ZW1wbGF0ZXMvcGdhX2pvYnN0ZXAvc3FsL3By ZTMuNC9jcmVhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLjRkZDIxNzIKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3RlbXBs YXRlcy9wZ2Ffam9ic3RlcC9zcWwvcHJlMy40L2NyZWF0ZS5zcWwKQEAgLTAs MCArMSwyIEBACit7JSBpbXBvcnQgJ21hY3Jvcy9wZ2Ffam9ic3RlcC5tYWNy b3MnIGFzIFNURVAgJX0KK3t7IFNURVAuSU5TRVJUKGhhc19jb25uc3RyLCBq aWQsIGRhdGEpIH19CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3RlbXBsYXRlcy9wZ2Ff am9ic3RlcC9zcWwvcHJlMy40L2RlbGV0ZS5zcWwgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3RlbXBsYXRl cy9wZ2Ffam9ic3RlcC9zcWwvcHJlMy40L2RlbGV0ZS5zcWwKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTlkYjFhYwotLS0gL2Rldi9u dWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL3BnYV9qb2JzdGVwL3NxbC9wcmUz LjQvZGVsZXRlLnNxbApAQCAtMCwwICsxLDIgQEAKK3slIGltcG9ydCAnbWFj cm9zL3BnYV9qb2JzdGVwLm1hY3JvcycgYXMgU1RFUCAlfQore3sgU1RFUC5E RUxFVEUoamlkLCBqc3RpZCkgfX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxh dGVzL3BnYV9qb2JzdGVwL3NxbC9wcmUzLjQvbm9kZXMuc3FsIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC90 ZW1wbGF0ZXMvcGdhX2pvYnN0ZXAvc3FsL3ByZTMuNC9ub2Rlcy5zcWwKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTNiNmY0YwotLS0g L2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL3BnYV9qb2JzdGVwL3Nx bC9wcmUzLjQvbm9kZXMuc3FsCkBAIC0wLDAgKzEsMTAgQEAKK1NFTEVDVAor ICAgIGpzdGlkLCBqc3Rqb2JpZCwganN0bmFtZSwganN0ZW5hYmxlZCwganN0 a2luZCA9ICdzJzo6YnBjaGFyIEFTIGpzdGtpbmQKK0ZST00KKyAgICBwZ2Fn ZW50LnBnYV9qb2JzdGVwCitXSEVSRQoreyUgaWYganN0aWQgJX0KKyAgICBq c3RpZCA9IHt7IGpzdGlkfHF0TGl0ZXJhbCB9fTo6aW50ZWdlciBBTkQKK3sl IGVuZGlmICV9CisgICAganN0am9iaWQgPSB7eyBqaWR8cXRMaXRlcmFsIH19 OjppbnRlZ2VyCitPUkRFUiBCWSBqc3RuYW1lOwpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2Vu dC90ZW1wbGF0ZXMvcGdhX2pvYnN0ZXAvc3FsL3ByZTMuNC9wcm9wZXJ0aWVz LnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL3BnYV9qb2JzdGVwL3NxbC9wcmUzLjQv cHJvcGVydGllcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uNjBjM2VjZQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxh dGVzL3BnYV9qb2JzdGVwL3NxbC9wcmUzLjQvcHJvcGVydGllcy5zcWwKQEAg LTAsMCArMSwyIEBACit7JSBpbXBvcnQgJ21hY3Jvcy9wZ2Ffam9ic3RlcC5t YWNyb3MnIGFzIFNURVAgJX0KK3t7IFNURVAuUFJPUEVSVElFUyhoYXNfY29u bnN0ciwgamlkLCBqc3RpZCkgfX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxh dGVzL3BnYV9qb2JzdGVwL3NxbC9wcmUzLjQvc3RhdHMuc3FsIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC90 ZW1wbGF0ZXMvcGdhX2pvYnN0ZXAvc3FsL3ByZTMuNC9zdGF0cy5zcWwKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODQ0NWY5MQotLS0g L2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL3BnYV9qb2JzdGVwL3Nx bC9wcmUzLjQvc3RhdHMuc3FsCkBAIC0wLDAgKzEsMTMgQEAKK1NFTEVDVAor ICAgIGpzbGlkIEFTIHt7IGNvbm58cXRJZGVudChfKCdSdW4nKSkgfX0sCisg ICAganNsc3RhdHVzIEFTIHt7IGNvbm58cXRJZGVudChfKCdTdGF0dXMnKSkg fX0sCisgICAganNscmVzdWx0IEFTIHt7IGNvbm58cXRJZGVudChfKCdSZXN1 bHQnKSkgfX0sCisgICAganNsc3RhcnQgQVMge3sgY29ubnxxdElkZW50KF8o J1N0YXJ0IHRpbWUnKSkgfX0sCisgICAgKGpzbHN0YXJ0ICsganNsZHVyYXRp b24pIEFTIHt7IGNvbm58cXRJZGVudChfKCdFbmQgdGltZScpKSB9fSwKKyAg ICBqc2xkdXJhdGlvbiBBUyB7eyBjb25ufHF0SWRlbnQoXygnRHVyYXRpb24n KSkgfX0sCisgICAganNsb3V0cHV0IEFTIHt7IGNvbm58cXRJZGVudChfKCdP dXRwdXQnKSkgfX0KK0ZST00KKyAgICBwZ2FnZW50LnBnYV9qb2JzdGVwbG9n CitXSEVSRQorICAgIGpzbGpzdGlkID0ge3sganN0aWR8cXRMaXRlcmFsIH19 OjppbnRlZ2VyCitPUkRFUiBCWSBqc2xpZCBERVNDOwpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdB Z2VudC90ZW1wbGF0ZXMvcGdhX2pvYnN0ZXAvc3FsL3ByZTMuNC91cGRhdGUu c3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvcGdBZ2VudC90ZW1wbGF0ZXMvcGdhX2pvYnN0ZXAvc3FsL3ByZTMuNC91 cGRhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LjMxNjM1NWUKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50L3RlbXBsYXRlcy9w Z2Ffam9ic3RlcC9zcWwvcHJlMy40L3VwZGF0ZS5zcWwKQEAgLTAsMCArMSwy IEBACit7JSBpbXBvcnQgJ21hY3Jvcy9wZ2Ffam9ic3RlcC5tYWNyb3MnIGFz IFNURVAgJX0KK3t7IFNURVAuVVBEQVRFKGhhc19jb25uc3RyLCBqaWQsIGpz dGlkLCBkYXRhKSB9fQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC90ZW1wbGF0ZXMvcGdh X3NjaGVkdWxlL3NxbC9wcmUzLjQvY3JlYXRlLnNxbCBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxh dGVzL3BnYV9zY2hlZHVsZS9zcWwvcHJlMy40L2NyZWF0ZS5zcWwKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTlmNjU3ZgotLS0gL2Rl di9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL3BnYV9zY2hlZHVsZS9zcWwv cHJlMy40L2NyZWF0ZS5zcWwKQEAgLTAsMCArMSwxMCBAQAoreyUgaW1wb3J0 ICdtYWNyb3MvcGdhX3NjaGVkdWxlLm1hY3JvcycgYXMgU0NIRURVTEUgJX0K K0RPICQkCitERUNMQVJFCisgIGpzY2lkIGludGVnZXI7CitCRUdJTgore3sg U0NIRURVTEUuSU5TRVJUKGppZCwgZGF0YSkgfX0KK0VORAorJCQgTEFOR1VB R0UgJ3BscGdzcWwnO3slIGlmIGZldGNoX2lkICV9CisKK3t7IFNDSEVEVUxF LkZFVENIX0NVUlJFTlQoKSB9fXslIGVuZGlmICV9CmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0Fn ZW50L3RlbXBsYXRlcy9wZ2Ffc2NoZWR1bGUvc3FsL3ByZTMuNC9kZWxldGUu c3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvcGdBZ2VudC90ZW1wbGF0ZXMvcGdhX3NjaGVkdWxlL3NxbC9wcmUzLjQv ZGVsZXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li5jZjQzMDcxCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC90ZW1wbGF0ZXMv cGdhX3NjaGVkdWxlL3NxbC9wcmUzLjQvZGVsZXRlLnNxbApAQCAtMCwwICsx LDIgQEAKK3slIGltcG9ydCAnbWFjcm9zL3BnYV9zY2hlZHVsZS5tYWNyb3Mn IGFzIFNDSEVEVUxFICV9Cit7eyBTQ0hFRFVMRS5ERUxFVEUoamlkLCBqc2Np ZCkgfX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL3BnYV9zY2hlZHVs ZS9zcWwvcHJlMy40L25vZGVzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL3BnYV9z Y2hlZHVsZS9zcWwvcHJlMy40L25vZGVzLnNxbApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi41ZDBmMDgzCi0tLSAvZGV2L251bGwKKysr IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv cGdBZ2VudC90ZW1wbGF0ZXMvcGdhX3NjaGVkdWxlL3NxbC9wcmUzLjQvbm9k ZXMuc3FsCkBAIC0wLDAgKzEsMTEgQEAKK1NFTEVDVAorICAgIGpzY2lkLCBq c2Nqb2JpZCwganNjbmFtZSwganNjZW5hYmxlZAorRlJPTQorICAgIHBnYWdl bnQucGdhX3NjaGVkdWxlCitXSEVSRQoreyUgaWYganNjaWQgJX0KKyAgICBq c2NpZCA9IHt7IGpzY2lkfHF0TGl0ZXJhbCB9fTo6aW50ZWdlcgoreyUgZWxz ZSAlfQorICAgIGpzY2pvYmlkID0ge3sgamlkfHF0TGl0ZXJhbCB9fTo6aW50 ZWdlcgoreyUgZW5kaWYgJX0KK09SREVSIEJZIGpzY25hbWU7CmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9wZ0FnZW50L3RlbXBsYXRlcy9wZ2Ffc2NoZWR1bGUvc3FsL3ByZTMuNC9w cm9wZXJ0aWVzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL3BnQWdlbnQvdGVtcGxhdGVzL3BnYV9zY2hlZHVsZS9z cWwvcHJlMy40L3Byb3BlcnRpZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLjZjYmQ5ZTQKLS0tIC9kZXYvbnVsbAorKysgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0Fn ZW50L3RlbXBsYXRlcy9wZ2Ffc2NoZWR1bGUvc3FsL3ByZTMuNC9wcm9wZXJ0 aWVzLnNxbApAQCAtMCwwICsxLDIgQEAKK3slIGltcG9ydCAnbWFjcm9zL3Bn YV9zY2hlZHVsZS5tYWNyb3MnIGFzIFNDSEVEVUxFICV9Cit7eyBTQ0hFRFVM RS5QUk9QRVJUSUVTKGppZCwganN0aWQpIH19CmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9wZ0FnZW50 L3RlbXBsYXRlcy9wZ2Ffc2NoZWR1bGUvc3FsL3ByZTMuNC91cGRhdGUuc3Fs IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv cGdBZ2VudC90ZW1wbGF0ZXMvcGdhX3NjaGVkdWxlL3NxbC9wcmUzLjQvdXBk YXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5l OGZiN2NiCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcGdBZ2VudC90ZW1wbGF0ZXMvcGdh X3NjaGVkdWxlL3NxbC9wcmUzLjQvdXBkYXRlLnNxbApAQCAtMCwwICsxLDIg QEAKK3slIGltcG9ydCAnbWFjcm9zL3BnYV9zY2hlZHVsZS5tYWNyb3MnIGFz IFNDSEVEVUxFICV9Cit7eyBTQ0hFRFVMRS5VUERBVEUoamlkLCBqc2NpZCwg ZGF0YSkgfX0K --94eb2c05b6021c534f053d16b376 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 --94eb2c05b6021c534f053d16b376--