Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1aYAoz-0000nM-EA for pgadmin-hackers@arkaria.postgresql.org; Tue, 23 Feb 2016 11:08:01 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84) (envelope-from ) id 1aYAoy-0003Wt-HZ for pgadmin-hackers@arkaria.postgresql.org; Tue, 23 Feb 2016 11:08:00 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84) (envelope-from ) id 1aYAow-0003Wj-KE for pgadmin-hackers@postgresql.org; Tue, 23 Feb 2016 11:07:58 +0000 Received: from mail-wm0-x234.google.com ([2a00:1450:400c:c09::234]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84) (envelope-from ) id 1aYAos-0002pL-16 for pgadmin-hackers@postgresql.org; Tue, 23 Feb 2016 11:07:56 +0000 Received: by mail-wm0-x234.google.com with SMTP id g62so204603470wme.0 for ; Tue, 23 Feb 2016 03:07:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type; bh=tQ8hgp78tABXwkoB0cyk41IHXvdJDLbPSu31xVPXYvI=; b=w41Qc9ElcXvPZYa0QbH/FZTCiKQW6BDTambJeYsetlTfnvcISCRe4hWEVwx91MXSTT WIYan8wZ6sRMBSQrdoiqK/1e6GDla/F0/Keg+tatC7/27gse5hY+g/SfOfWgJSh9iUHn uyB9LhrGn2UkQxKvXSL9f/29OjLKtSvokCVwPJYSU8uwHjPMCyXuKeK4jb//4zaWZxux RScQ0DHSKTYQVSmcJnRGhGFBQFHd9Ysh5UG7yPsNxiol6M4EpabCuFm9ETy3BScczj8c oLvUUogdlObgreQQfQtmU3M9UFGEJztnXHqFjYwoymjC7Q0xvr4XJkET2qAg8DwBIo3f 0vtQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc:content-type; bh=tQ8hgp78tABXwkoB0cyk41IHXvdJDLbPSu31xVPXYvI=; b=DMN1p46Nb2qOVBj4EuWIdYvS3VjZUamg7DJ9rBPjxu5SDCIc1N68yFA2HyxkrUXz75 jNdi4gn97Kofr9KTajxu3eOBTDGnBhj8Nr/9W4bhncv4mUWYEL6Jg8Rmw/wcV00sGL2x wgMZ83UV26ASQHV2n4fLS2H3Bb7LwOIuEocIbW1q/YoIClfR8IizdzQRGP3IBqwF5TvI 3EHY0PI0ArjUs8kYYN2mHLjtU1zEbYptNANQOIhjl1p0qEZ29gVV02Xj/2ZhroQ9sl7Q mlDD3M6H3bUrKWo4zaVT1UQlWzTRrDi4mkaGPia5i+MSmL9TnMLcqMwf1jkn4SA0H90+ P/Gw== X-Gm-Message-State: AG10YOTOzyfp+5ud8Tfto7Bwkg314oVna8WcM4sfKy6NyOtZweG6uEKyVFanJMbE49vpvL7b7Y+z6nxIoEB81hID X-Received: by 10.194.78.83 with SMTP id z19mr32425326wjw.5.1456225672942; Tue, 23 Feb 2016 03:07:52 -0800 (PST) MIME-Version: 1.0 Received: by 10.28.55.74 with HTTP; Tue, 23 Feb 2016 03:07:22 -0800 (PST) In-Reply-To: References: From: Surinder Kumar Date: Tue, 23 Feb 2016 16:37:22 +0530 Message-ID: Subject: Re: [pgAdmin4] [Patch]: Extension Module To: Dave Page Cc: Neel Patel , pgadmin-hackers Content-Type: multipart/mixed; boundary=047d7bf0c29af39814052c6df5ed 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 --047d7bf0c29af39814052c6df5ed Content-Type: multipart/alternative; boundary=047d7bf0c29af39810052c6df5eb --047d7bf0c29af39810052c6df5eb Content-Type: text/plain; charset=UTF-8 Hi, PFA patch with changes suggested by Dave Please review the patch and let me know for any comments. On Mon, Feb 15, 2016 at 4:37 PM, Dave Page wrote: > Hi > > On Mon, Feb 15, 2016 at 9:55 AM, Surinder Kumar < > surinder.kumar@enterprisedb.com> wrote: > >> Hi, >> >> PFA patch with following changes: >> >> 1. Added "Create Extension" menu item in context menu of Database >> node. >> 2. Added a new method "node_node" in ExtensionModule class. If a node >> has child, returns True, otherwise False. >> 3. Fixed an issue in which icon won't display in create extension >> link in context menu. >> 4. Added Docstring for the class and methods in python file and >> proper commenting in js file. >> 5. Followed PEP-08 coding conventions. >> >> > I haven't tested this, but a few initial comments: > > - The commenting of the JS code is better than I've seen in other patches > \o/, but the commenting style is inconsistent. We should use /* */ for > multi-line comments, and // for single line. > - The JS code could use some carefully introduced blank lines to help > make it more readable. > Done > - s/}else{/} else {/ > Done > - Dependency/depends display is missing (see previous email to Akshay). > This is essential for this node! > Implemented dependency and depends > - There's no pydoc comment introducing __init__.py > Added pydoc > - Shouldn't "data='-- Modified SQL --'," be "data=gettext('-- Modified SQL > --'),"? > Yes, it should be. Fixed. > > > -- > Dave Page > Blog: http://pgsnake.blogspot.com > Twitter: @pgsnake > > EnterpriseDB UK: http://www.enterprisedb.com > The Enterprise PostgreSQL Company > --047d7bf0c29af39810052c6df5eb Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi,

PFA = patch with changes suggested by Dave

Please revie= w the patch and let me know for any comments.

On Mon, Feb 15, 2016 at 4:37 PM, Dave Page &= lt;dpage@pgadmin.org= > wrote:
Hi

On Mon, Feb 1= 5, 2016 at 9:55 AM, Surinder Kumar <surinder.kumar@enterpris= edb.com> wrote:
Hi,=C2= =A0

PFA patch with following changes:
  1. = Added "Create Extension" menu item in context menu of Database no= de.
  2. Added a new method "node_node" in ExtensionModule cla= ss. If a node has child, returns True, otherwise False.
  3. Fixed an is= sue in which icon won't display in create extension link in context men= u.
  4. Added Docstring for the class and methods in python file and pro= per commenting in js file.
  5. Followed PEP-08 coding conventions.
  6. =

I haven't test= ed this, but a few initial comments:

- The comment= ing of the JS code is better than I've seen in other patches \o/, but t= he commenting style is inconsistent. We should use /* */ for multi-line com= ments, and // for single line.
- =C2=A0The JS code could use some= carefully introduced blank lines to help make it more readable.
Done=C2=A0
- s/}else{= /} else {/
Done=C2=A0
- Dependency/depends display is missing (see previous email to A= kshay). This is essential for this node!
Implemented dependency and depends=C2=A0
- Th= ere's no pydoc comment introducing __init__.py
<= /blockquote>
Added pydoc
- Shouldn't "= ;data=3D'-- Modified SQL --'," be "data=3Dgettext('--= Modified SQL --'),"?
Yes= , it should be. Fixed.=C2=A0

--047d7bf0c29af39810052c6df5eb-- --047d7bf0c29af39814052c6df5ed Content-Type: application/octet-stream; name="extension_v6.patch" Content-Disposition: attachment; filename="extension_v6.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ikzb7mrm0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9leHRlbnNpb25zL19faW5pdF9fLnB5IGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL2V4dGVuc2lvbnMvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uMTgxMTgwYQotLS0gL2Rldi9udWxsCisr KyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9leHRlbnNpb25zL19faW5pdF9fLnB5CkBAIC0wLDAgKzEs NDg0IEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBw Z0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAo QykgMjAxMyAtIDIwMTYsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0K KyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdy ZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IworCisiIiIgSW1wbGVtZW50cyBFeHRlbnNpb24gTm9kZSAiIiIKKworaW1w b3J0IGpzb24KK2Zyb20gZmxhc2sgaW1wb3J0IHJlbmRlcl90ZW1wbGF0ZSwg bWFrZV9yZXNwb25zZSwgcmVxdWVzdCwganNvbmlmeQorZnJvbSBmbGFzay5l eHQuYmFiZWwgaW1wb3J0IGdldHRleHQKK2Zyb20gcGdhZG1pbi51dGlscy5h amF4IGltcG9ydCBtYWtlX2pzb25fcmVzcG9uc2UsIFwKKyAgICBtYWtlX3Jl c3BvbnNlIGFzIGFqYXhfcmVzcG9uc2UsIGludGVybmFsX3NlcnZlcl9lcnJv cgorZnJvbSBwZ2FkbWluLmJyb3dzZXIudXRpbHMgaW1wb3J0IFBHQ2hpbGRO b2RlVmlldworZnJvbSBwZ2FkbWluLmJyb3dzZXIuY29sbGVjdGlvbiBpbXBv cnQgQ29sbGVjdGlvbk5vZGVNb2R1bGUKK2ltcG9ydCBwZ2FkbWluLmJyb3dz ZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcyBhcyBkYXRhYmFz ZXMKK2Zyb20gcGdhZG1pbi51dGlscy5kcml2ZXIgaW1wb3J0IGdldF9kcml2 ZXIKK2Zyb20gY29uZmlnIGltcG9ydCBQR19ERUZBVUxUX0RSSVZFUgorZnJv bSBmdW5jdG9vbHMgaW1wb3J0IHdyYXBzCisKKyMgQXMgdW5pY29kZSB0eXBl IGlzIG5vdCBhdmFpbGFibGUgaW4gcHl0aG9uMworIyBJZiB3ZSBjaGVjayBh IHZhcmlhYmxlIGlzICJpc2luc3RhbmNlKHZhcmlhYmxlLCBzdHIpCisjIGl0 IGJyZWFrcyBpbiBweXRob24gMyBhcyB2YXJpYWJsZSB0eXBlIGlzIG5vdCBz dHJpbmcgaXRzIHVuaWNvZGUuCisjIFdlIGFzc2lnbiBiYXNlc3RyaW5nIGFz IHN0ciB0eXBlIGlmIGl0IGlzIHB5dGhvbjMsIHVuaWNvZGUKKyMgaWYgaXQg aXMgcHl0aG9uMi4KKwordHJ5OgorICAgIHVuaWNvZGUgPSB1bmljb2RlCitl eGNlcHQgTmFtZUVycm9yOgorICAgICMgJ3VuaWNvZGUnIGlzIHVuZGVmaW5l ZCwgbXVzdCBiZSBQeXRob24gMworICAgIHN0ciA9IHN0cgorICAgIHVuaWNv ZGUgPSBzdHIKKyAgICBieXRlcyA9IGJ5dGVzCisgICAgYmFzZXN0cmluZyA9 IChzdHIsIGJ5dGVzKQorZWxzZToKKyAgICAjICd1bmljb2RlJyBleGlzdHMs IG11c3QgYmUgUHl0aG9uIDIKKyAgICBzdHIgPSBzdHIKKyAgICB1bmljb2Rl ID0gdW5pY29kZQorICAgIGJ5dGVzID0gc3RyCisgICAgYmFzZXN0cmluZyA9 IGJhc2VzdHJpbmcKKworCitjbGFzcyBFeHRlbnNpb25Nb2R1bGUoQ29sbGVj dGlvbk5vZGVNb2R1bGUpOgorICAgICIiIgorICAgIGNsYXNzIEV4dGVuc2lv bk1vZHVsZShPYmplY3QpOgorCisgICAgICAgIEEgY29sbGVjdGlvbiBOb2Rl IHdoaWNoIGluaGVyaXRzIENvbGxlY3Rpb25Ob2RlTW9kdWxlCisgICAgICAg IGNsYXNzIGFuZCBkZWZpbmUgbWV0aG9kcyB0byBnZXQgY2hpbGQgbm9kZXMs IHRvIGxvYWQgaXRzIG93bgorICAgICAgICBqYXZhc2NyaXB0IGZpbGUuCisg ICAgIiIiCisgICAgTk9ERV9UWVBFID0gImV4dGVuc2lvbiIKKyAgICBDT0xM RUNUSU9OX0xBQkVMID0gZ2V0dGV4dCgiRXh0ZW5zaW9ucyIpCisKKyAgICBk ZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAg IiIiCisgICAgICAgIEluaXRpYWxpc2luZyB0aGUgYmFzZSBjbGFzcworICAg ICAgICAiIiIKKyAgICAgICAgc3VwZXIoRXh0ZW5zaW9uTW9kdWxlLCBzZWxm KS5fX2luaXRfXygqYXJncywgKiprd2FyZ3MpCisKKyAgICBkZWYgZ2V0X25v ZGVzKHNlbGYsIGdpZCwgc2lkLCBkaWQpOgorICAgICAgICAiIiIKKyAgICAg ICAgR2VuZXJhdGUgdGhlIGNvbGxlY3Rpb24gbm9kZQorICAgICAgICAiIiIK KyAgICAgICAgeWllbGQgc2VsZi5nZW5lcmF0ZV9icm93c2VyX2NvbGxlY3Rp b25fbm9kZShkaWQpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbm9kZV9p bm9kZShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIElmIGEgbm9kZSBo YXZlIGNoaWxkIHJldHVybiBUcnVlIG90aGVyd2lzZSBGYWxzZQorICAgICAg ICAiIiIKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBAcHJvcGVydHkK KyAgICBkZWYgc2NyaXB0X2xvYWQoc2VsZik6CisgICAgICAgICIiIgorICAg ICAgICBMb2FkIHRoZSBtb2R1bGUgc2NyaXB0IGZvciBleHRlbnNpb24sIHdo ZW4gYW55IG9mIHRoZSBkYXRhYmFzZSBub2RlIGlzCisgICAgICAgIGluaXRp YWxpemVkLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIGRhdGFiYXNl cy5EYXRhYmFzZU1vZHVsZS5OT0RFX1RZUEUKKworCisjIENyZWF0ZSBibHVl cHJpbnQgb2YgZXh0ZW5zaW9uIG1vZHVsZQorYmx1ZXByaW50ID0gRXh0ZW5z aW9uTW9kdWxlKF9fbmFtZV9fKQorCisKK2NsYXNzIEV4dGVuc2lvblZpZXco UEdDaGlsZE5vZGVWaWV3KToKKyAgICAiIiIKKyAgICBJdCBpcyBhIGNsYXNz IGZvciBleHRlbnNpb24gbm9kZSB3aGljaCBpbmhlcml0cyB0aGUKKyAgICBw cm9wZXJ0aWVzIGFuZCBtZXRob2RzIGZyb20gTm9kZVZpZXcgY2xhc3MgYW5k IGRlZmluZQorICAgIHZhcmlvdXMgbWV0aG9kcyB0byBsaXN0LCBjcmVhdGUs IHVwZGF0ZSBhbmQgZGVsZXRlIGV4dGVuc2lvbi4KKworICAgIFZhcmlhYmxl czoKKyAgICAtLS0tLS0tLS0KKyAgICAqIG5vZGVfdHlwZSAtIHRlbGxzIHdo aWNoIHR5cGUgb2Ygbm9kZSBpdCBpcworICAgICogcGFyZW50X2lkcyAtIGlk IHdpdGggaXRzIHR5cGUgYW5kIG5hbWUgb2YgcGFyZW50IG5vZGVzCisgICAg KiBpZHMgLSBpZCB3aXRoIHR5cGUgYW5kIG5hbWUgb2YgZXh0ZW5zaW9uIG1v ZHVsZSBiZWluZyB1c2VkLgorICAgICogb3BlcmF0aW9ucyAtIGZ1bmN0aW9u IHJvdXRlcyBtYXBwaW5ncyBkZWZpbmVkLgorICAgICIiIgorICAgIG5vZGVf dHlwZSA9IGJsdWVwcmludC5ub2RlX3R5cGUKKworICAgIHBhcmVudF9pZHMg PSBbCisgICAgICAgICAgICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ2dpZCd9 LAorICAgICAgICAgICAgeyd0eXBlJzogJ2ludCcsICdpZCc6ICdzaWQnfSwK KyAgICAgICAgICAgIHsndHlwZSc6ICdpbnQnLCAnaWQnOiAnZGlkJ30KKyAg ICAgICAgICAgIF0KKyAgICBpZHMgPSBbCisgICAgICAgICAgICB7J3R5cGUn OiAnaW50JywgJ2lkJzogJ2VpZCd9CisgICAgICAgICAgICBdCisKKyAgICBv cGVyYXRpb25zID0gZGljdCh7CisgICAgICAgICdvYmonOiBbCisgICAgICAg ICAgICB7J2dldCc6ICdwcm9wZXJ0aWVzJywgJ2RlbGV0ZSc6ICdkZWxldGUn LCAncHV0JzogJ3VwZGF0ZSd9LAorICAgICAgICAgICAgeydnZXQnOiAnbGlz dCcsICdwb3N0JzogJ2NyZWF0ZSd9CisgICAgICAgIF0sCisgICAgICAgICdk ZWxldGUnOiBbeydkZWxldGUnOiAnZGVsZXRlJ31dLAorICAgICAgICAnbm9k ZXMnOiBbeydnZXQnOiAnbm9kZSd9LCB7J2dldCc6ICdub2Rlcyd9XSwKKyAg ICAgICAgJ3NxbCc6IFt7J2dldCc6ICdzcWwnfV0sCisgICAgICAgICdtc3Fs JzogW3snZ2V0JzogJ21zcWwnfSwgeydnZXQnOiAnbXNxbCd9XSwKKyAgICAg ICAgJ3N0YXRzJzogW3snZ2V0JzogJ3N0YXRpc3RpY3MnfV0sCisgICAgICAg ICdkZXBlbmRlbmN5JzogW3snZ2V0JzogJ2RlcGVuZGVuY2llcyd9XSwKKyAg ICAgICAgJ2RlcGVuZGVudCc6IFt7J2dldCc6ICdkZXBlbmRlbnRzJ31dLAor ICAgICAgICAnbW9kdWxlLmpzJzogW3t9LCB7fSwgeydnZXQnOiAnbW9kdWxl X2pzJ31dLAorICAgICAgICAnYXZhaWxzJzogW3t9LCB7J2dldCc6ICdhdmFp bHMnfV0sCisgICAgICAgICdzY2hlbWFzJzogW3t9LCB7J2dldCc6ICdzY2hl bWFzJ31dLAorICAgICAgICAnY2hpbGRyZW4nOiBbeydnZXQnOiAnY2hpbGRy ZW4nfV0KKyAgICB9KQorCisgICAgZGVmIGNoZWNrX3ByZWNvbmRpdGlvbihm KToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBi ZWhhdmUgYXMgYSBkZWNvcmF0b3Igd2hpY2ggd2lsbCBjaGVja3MKKyAgICAg ICAgZGF0YWJhc2UgY29ubmVjdGlvbiBiZWZvcmUgcnVubmluZyB2aWV3LCBp dCB3aWxsIGFsc28gYXR0YWNoZXMKKyAgICAgICAgbWFuYWdlcixjb25uICYg dGVtcGxhdGVfcGF0aCBwcm9wZXJ0aWVzIHRvIHNlbGYKKyAgICAgICAgIiIi CisgICAgICAgIEB3cmFwcyhmKQorICAgICAgICBkZWYgd3JhcCgqYXJncywg Kiprd2FyZ3MpOgorICAgICAgICAgICAgIyBIZXJlIGFyZ3NbMF0gd2lsbCBo b2xkIHNlbGYgJiBrd2FyZ3Mgd2lsbCBob2xkIGdpZCxzaWQsZGlkCisgICAg ICAgICAgICBzZWxmID0gYXJnc1swXQorICAgICAgICAgICAgc2VsZi5tYW5h Z2VyID0gZ2V0X2RyaXZlcigKKyAgICAgICAgICAgICAgICAgICAgUEdfREVG QVVMVF9EUklWRVIKKyAgICAgICAgICAgICAgICApLmNvbm5lY3Rpb25fbWFu YWdlcihrd2FyZ3NbJ3NpZCddKQorICAgICAgICAgICAgc2VsZi5jb25uID0g c2VsZi5tYW5hZ2VyLmNvbm5lY3Rpb24oZGlkPWt3YXJnc1snZGlkJ10pCisg ICAgICAgICAgICBzZWxmLnRlbXBsYXRlX3BhdGggPSAnZXh0ZW5zaW9ucy9z cWwnCisKKyAgICAgICAgICAgIHJldHVybiBmKCphcmdzLCAqKmt3YXJncykK KyAgICAgICAgcmV0dXJuIHdyYXAKKworICAgIEBjaGVja19wcmVjb25kaXRp b24KKyAgICBkZWYgbGlzdChzZWxmLCBnaWQsIHNpZCwgZGlkKToKKyAgICAg ICAgIiIiCisgICAgICAgIEl0IGZldGNoZXMgYWxsIGV4dGVuc2lvbnMgcHJv cGVydGllcyBhbmQgcmVuZGVyIGludG8gcHJvcGVydGllcworICAgICAgICB0 YWIKKyAgICAgICAgIiIiCisgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0 ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAncHJvcGVydGllcy5z cWwnXSkpCisgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1 dGVfZGljdChTUUwpCisKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAg ICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9 cmVzKQorICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZSgKKyAgICAgICAg ICAgICAgICByZXNwb25zZT1yZXNbJ3Jvd3MnXSwKKyAgICAgICAgICAgICAg ICBzdGF0dXM9MjAwCisgICAgICAgICAgICAgICAgKQorCisgICAgQGNoZWNr X3ByZWNvbmRpdGlvbgorICAgIGRlZiBub2RlcyhzZWxmLCBnaWQsIHNpZCwg ZGlkKToKKyAgICAgICAgIiIiCisgICAgICAgIEl0IGxpc3RzIGRvd24gdGhl IGFsbCBleHRlbnNpb25zIHVuZGVyIHRoZSBFeHRlbnNpb25zIENvbGxlY3Rp b24gbm9kZQorICAgICAgICAiIiIKKyAgICAgICAgcmVzID0gW10KKyAgICAg ICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBs YXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNxbCddKSkKKyAgICAgICAgc3RhdHVz LCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCisgICAg ICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJu YWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJzZXQpCisKKyAgICAgICAgZm9y IHJvdyBpbiByc2V0Wydyb3dzJ106CisgICAgICAgICAgICByZXMuYXBwZW5k KAorICAgICAgICAgICAgICAgICAgICBzZWxmLmJsdWVwcmludC5nZW5lcmF0 ZV9icm93c2VyX25vZGUoCisgICAgICAgICAgICAgICAgICAgICAgICByb3db J2VpZCddLAorICAgICAgICAgICAgICAgICAgICAgICAgZGlkLAorICAgICAg ICAgICAgICAgICAgICAgICAgcm93WyduYW1lJ10sCisgICAgICAgICAgICAg ICAgICAgICAgICAnaWNvbi1leHRlbnNpb24nCisgICAgICAgICAgICAgICAg ICAgICkpCisKKyAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgK KyAgICAgICAgICAgICAgICBkYXRhPXJlcywKKyAgICAgICAgICAgICAgICBz dGF0dXM9MjAwCisgICAgICAgICAgICAgICAgKQorCisgICAgQGNoZWNrX3By ZWNvbmRpdGlvbgorICAgIGRlZiBwcm9wZXJ0aWVzKHNlbGYsIGdpZCwgc2lk LCBkaWQsIGVpZCk6CisgICAgICAgICIiIgorICAgICAgICBJdCBmZXRjaGVz IHRoZSBwcm9wZXJ0aWVzIG9mIGEgc2luZ2xlIGV4dGVuc2lvbgorICAgICAg ICBhbmQgcmVuZGVyIGluIHByb3BlcnRpZXMgdGFiCisKKyAgICAgICAgIiIi CisgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKKyAg ICAgICAgICAgIFtzZWxmLnRlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNx bCddKSwgZWlkPWVpZCkKKyAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNv bm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAgICAgaWYgbm90IHN0YXR1czoK KyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJy b3Jtc2c9cmVzKQorCisgICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKAor ICAgICAgICAgICAgICAgIHJlc3BvbnNlPXJlc1sncm93cyddWzBdLAorICAg ICAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgICAgICAgICApCisK KyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIGNyZWF0ZShzZWxm LCBnaWQsIHNpZCwgZGlkKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMg ZnVuY3Rpb24gd2lsbCBjcmVhdGVzIG5ldyB0aGUgZXh0ZW5zaW9uIG9iamVj dAorICAgICAgICAiIiIKKyAgICAgICAgcmVxdWlyZWRfYXJncyA9IFsKKyAg ICAgICAgICAgICduYW1lJworICAgICAgICBdCisKKyAgICAgICAgZGF0YSA9 IHJlcXVlc3QuZm9ybSBpZiByZXF1ZXN0LmZvcm0gZWxzZSBcCisgICAgICAg ICAgICBqc29uLmxvYWRzKHJlcXVlc3QuZGF0YS5kZWNvZGUoKSkKKyAgICAg ICAgZm9yIGFyZyBpbiByZXF1aXJlZF9hcmdzOgorICAgICAgICAgICAgaWYg YXJnIG5vdCBpbiBkYXRhOgorICAgICAgICAgICAgICAgIHJldHVybiBtYWtl X2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgICAgIHN0YXR1cz00 MTAsCisgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M9MCwKKyAgICAgICAg ICAgICAgICAgICAgZXJyb3Jtc2c9Z2V0dGV4dCgKKyAgICAgICAgICAgICAg ICAgICAgICAgICJDb3VsZG4ndCBmaW5kIHRoZSByZXF1aXJlZCBwYXJhbWV0 ZXIgKCVzKS4iICUgYXJnCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAg ICAgICAgICAgICApCisKKyAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNv bm4uZXhlY3V0ZV9kaWN0KAorICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRl KAorICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3Bh dGgsICdjcmVhdGUuc3FsJ10pLAorICAgICAgICAgICAgICAgIGRhdGE9ZGF0 YQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKworICAgICAg ICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFs X3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgc3RhdHVz LCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdCgKKyAgICAgICAgICAg IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAiLyIuam9pbihb c2VsZi50ZW1wbGF0ZV9wYXRoLCAncHJvcGVydGllcy5zcWwnXSksCisgICAg ICAgICAgICAgICAgZW5hbWU9ZGF0YVsnbmFtZSddCisgICAgICAgICAgICAp CisgICAgICAgICkKKworICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAg ICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1y c2V0KQorCisgICAgICAgIGZvciByb3cgaW4gcnNldFsncm93cyddOgorICAg ICAgICAgICAgcmV0dXJuIGpzb25pZnkoCisgICAgICAgICAgICAgIG5vZGU9 c2VsZi5ibHVlcHJpbnQuZ2VuZXJhdGVfYnJvd3Nlcl9ub2RlKAorICAgICAg ICAgICAgICAgICAgICByb3dbJ2VpZCddLAorICAgICAgICAgICAgICAgICAg ICBkaWQsCisgICAgICAgICAgICAgICAgICAgIHJvd1snbmFtZSddLAorICAg ICAgICAgICAgICAgICAgICAnaWNvbi1leHRlbnNpb24nCisgICAgICAgICAg ICAgICAgICAgICkKKyAgICAgICAgICAgICkKKworICAgIEBjaGVja19wcmVj b25kaXRpb24KKyAgICBkZWYgdXBkYXRlKHNlbGYsIGdpZCwgc2lkLCBkaWQs IGVpZCk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdp bGwgdXBkYXRlIGV4dGVuc2lvbiBvYmplY3QKKyAgICAgICAgIiIiCisgICAg ICAgIGRhdGEgPSByZXF1ZXN0LmZvcm0gaWYgcmVxdWVzdC5mb3JtIGVsc2Ug XAorICAgICAgICAgICAganNvbi5sb2FkcyhyZXF1ZXN0LmRhdGEuZGVjb2Rl KCkpCisgICAgICAgIFNRTCA9IHNlbGYuZ2V0U1FMKGdpZCwgc2lkLCBkYXRh LCBkaWQsIGVpZCkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiBT UUwgYW5kIGlzaW5zdGFuY2UoU1FMLCBiYXNlc3RyaW5nKSBhbmQgXAorICAg ICAgICAgICAgICAgICAgICBTUUwuc3RyaXAoJ1xuJykgYW5kIFNRTC5zdHJp cCgnICcpOgorICAgICAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5j b25uLmV4ZWN1dGVfZGljdChTUUwpCisgICAgICAgICAgICAgICAgaWYgbm90 IHN0YXR1czoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFs X3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgICAg ICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAg ICAgICBzdWNjZXNzPTEsCisgICAgICAgICAgICAgICAgICAgIGluZm89IkV4 dGVuc2lvbiB1cGRhdGVkIiwKKyAgICAgICAgICAgICAgICAgICAgZGF0YT17 CisgICAgICAgICAgICAgICAgICAgICAgICAnaWQnOiBlaWQsCisgICAgICAg ICAgICAgICAgICAgICAgICAnc2lkJzogc2lkLAorICAgICAgICAgICAgICAg ICAgICAgICAgJ2dpZCc6IGdpZAorICAgICAgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAg ICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAg ICAgICAgICAgICBzdWNjZXNzPTEsCisgICAgICAgICAgICAgICAgICAgIGlu Zm89Ik5vdGhpbmcgdG8gdXBkYXRlIiwKKyAgICAgICAgICAgICAgICAgICAg ZGF0YT17CisgICAgICAgICAgICAgICAgICAgICAgICAnaWQnOiBkaWQsCisg ICAgICAgICAgICAgICAgICAgICAgICAnc2lkJzogc2lkLAorICAgICAgICAg ICAgICAgICAgICAgICAgJ2dpZCc6IGdpZAorICAgICAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICAgICAgKQorCisgICAgICAgIGV4Y2VwdCBFeGNl cHRpb24gYXMgZToKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2 ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisgICAgQGNoZWNrX3ByZWNv bmRpdGlvbgorICAgIGRlZiBkZWxldGUoc2VsZiwgZ2lkLCBzaWQsIGRpZCwg ZWlkKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2ls bCBkZWxldGUgZHJvcC9kcm9wIGNhc2NhZGUgdGhlIGV4dGVuc2lvbiBvYmpl Y3QKKyAgICAgICAgIiIiCisgICAgICAgIGNhc2NhZGUgPSBUcnVlIGlmIHNl bGYuY21kID09ICdkZWxldGUnIGVsc2UgRmFsc2UKKyAgICAgICAgdHJ5Ogor ICAgICAgICAgICAgIyBjaGVjayBpZiBleHRlbnNpb24gd2l0aCBlaWQgZXhp c3RzCisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpv aW4oCisgICAgICAgICAgICAgICAgW3NlbGYudGVtcGxhdGVfcGF0aCwgJ2Rl bGV0ZS5zcWwnXSksIGVpZD1laWQpCisgICAgICAgICAgICBzdGF0dXMsIG5h bWUgPSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIoU1FMKQorICAgICAgICAg ICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50 ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPW5hbWUpCisgICAgICAgICAg ICAjIGRyb3AgZXh0ZW5zaW9uCisgICAgICAgICAgICBTUUwgPSByZW5kZXJf dGVtcGxhdGUoIi8iLmpvaW4oCisgICAgICAgICAgICAgICAgICAgIFtzZWxm LnRlbXBsYXRlX3BhdGgsICdkZWxldGUuc3FsJ10KKyAgICAgICAgICAgICAg ICApLCBuYW1lPW5hbWUsIGNhc2NhZGU9Y2FzY2FkZSkKKyAgICAgICAgICAg IHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKFNRTCkK KyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAg cmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisK KyAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAg ICAgICAgICAgICAgc3VjY2Vzcz0xLAorICAgICAgICAgICAgICAgIGluZm89 Z2V0dGV4dCgiRXh0ZW5zaW9uIGRyb3BwZWQiKSwKKyAgICAgICAgICAgICAg ICBkYXRhPXsKKyAgICAgICAgICAgICAgICAgICAgJ2lkJzogZGlkLAorICAg ICAgICAgICAgICAgICAgICAnc2lkJzogc2lkLAorICAgICAgICAgICAgICAg ICAgICAnZ2lkJzogZ2lkLAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAg ICAgICkKKworICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAg ICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNn PXN0cihlKSkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYg bXNxbChzZWxmLCBnaWQsIHNpZCwgZGlkLCBlaWQ9Tm9uZSk6CisgICAgICAg ICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHRvIHJldHVybiBtb2RpZmll ZCBTUUwKKyAgICAgICAgIiIiCisgICAgICAgIGRhdGEgPSByZXF1ZXN0LmFy Z3MuY29weSgpCisgICAgICAgIFNRTCA9IHNlbGYuZ2V0U1FMKGdpZCwgc2lk LCBkYXRhLCBkaWQsIGVpZCkKKyAgICAgICAgaWYgU1FMIGFuZCBpc2luc3Rh bmNlKFNRTCwgYmFzZXN0cmluZykgYW5kIFNRTC5zdHJpcCgnXG4nKSBcCisg ICAgICAgICAgICAgICAgYW5kIFNRTC5zdHJpcCgnICcpOgorICAgICAgICAg ICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAg ICAgICAgZGF0YT1TUUwsCisgICAgICAgICAgICAgICAgICAgIHN0YXR1cz0y MDAKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICBlbHNlOgorICAg ICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAg ICAgICAgICAgICAgZGF0YT1nZXR0ZXh0KCctLSBNb2RpZmllZCBTUUwgLS0n KSwKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICAg ICAgICAgICAgICApCisKKyAgICBkZWYgZ2V0U1FMKHNlbGYsIGdpZCwgc2lk LCBkYXRhLCBkaWQsIGVpZD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAg IFRoaXMgZnVuY3Rpb24gd2lsbCBnZW5lcmF0ZSBzcWwgZnJvbSBtb2RlbCBk YXRhCisgICAgICAgICIiIgorICAgICAgICByZXF1aXJlZF9hcmdzID0gWwor ICAgICAgICAgICAgJ25hbWUnCisgICAgICAgIF0KKyAgICAgICAgdHJ5Ogor ICAgICAgICAgICAgaWYgZWlkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAg ICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKKyAgICAgICAg ICAgICAgICAgICAgICAgIFtzZWxmLnRlbXBsYXRlX3BhdGgsICdwcm9wZXJ0 aWVzLnNxbCddCisgICAgICAgICAgICAgICAgICAgICksIGVpZD1laWQpCisg ICAgICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0 ZV9kaWN0KFNRTCkKKyAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgor ICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vy cm9yKGVycm9ybXNnPXJlcykKKyAgICAgICAgICAgICAgICBvbGRfZGF0YSA9 IHJlc1sncm93cyddWzBdCisgICAgICAgICAgICAgICAgZm9yIGFyZyBpbiBy ZXF1aXJlZF9hcmdzOgorICAgICAgICAgICAgICAgICAgICBpZiBhcmcgbm90 IGluIGRhdGE6CisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhW2FyZ10g PSBvbGRfZGF0YVthcmddCisgICAgICAgICAgICAgICAgU1FMID0gcmVuZGVy X3RlbXBsYXRlKCIvIi5qb2luKAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFtzZWxmLnRlbXBsYXRlX3BhdGgsICd1cGRhdGUuc3FsJ10KKyAgICAg ICAgICAgICAgICAgICAgICAgICksIGRhdGE9ZGF0YSwgb19kYXRhPW9sZF9k YXRhKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBTUUwg PSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgW3NlbGYudGVtcGxhdGVfcGF0aCwgJ2NyZWF0ZS5zcWwn XQorICAgICAgICAgICAgICAgICAgICAgICAgKSwgZGF0YT1kYXRhKQorICAg ICAgICAgICAgcmV0dXJuIFNRTAorICAgICAgICBleGNlcHQgRXhjZXB0aW9u IGFzIGU6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vy cm9yKGVycm9ybXNnPXN0cihlKSkKKworICAgIEBjaGVja19wcmVjb25kaXRp b24KKyAgICBkZWYgYXZhaWxzKHNlbGYsIGdpZCwgc2lkLCBkaWQpOgorICAg ICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aXRoIGZldGNoIGFs bCB0aGUgYXZhaWxhYmxlIGV4dGVuc2lvbnMKKyAgICAgICAgIiIiCisgICAg ICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1w bGF0ZV9wYXRoLCAnZXh0ZW5zaW9ucy5zcWwnXSkpCisgICAgICAgIHN0YXR1 cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorICAgICAg ICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFs X3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0KQorICAgICAgICByZXR1cm4g bWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgIGRhdGE9cnNl dFsncm93cyddLAorICAgICAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAg ICAgICAgICAgICApCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAg ZGVmIHNjaGVtYXMoc2VsZiwgZ2lkLCBzaWQsIGRpZCk6CisgICAgICAgICIi IgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpdGggZmV0Y2ggYWxsIHRoZSBz Y2hlbWFzCisgICAgICAgICIiIgorICAgICAgICBTUUwgPSByZW5kZXJfdGVt cGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ3NjaGVtYXMu c3FsJ10pKQorICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhl Y3V0ZV9kaWN0KFNRTCkKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAg ICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9 cnNldCkKKyAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAg ICAgICAgICAgICAgICBkYXRhPXJzZXRbJ3Jvd3MnXSwKKyAgICAgICAgICAg ICAgICBzdGF0dXM9MjAwCisgICAgICAgICAgICAgICAgKQorCisgICAgZGVm IG1vZHVsZV9qcyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMg cHJvcGVydHkgZGVmaW5lcyAoaWYgamF2YXNjcmlwdCkgZXhpc3RzIGZvciB0 aGlzIG5vZGUuCisgICAgICAgIE92ZXJyaWRlIHRoaXMgcHJvcGVydHkgZm9y IHlvdXIgb3duIGxvZ2ljLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJu IG1ha2VfcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgcmVuZGVyX3RlbXBs YXRlKAorICAgICAgICAgICAgICAgICAgICAiZXh0ZW5zaW9ucy9qcy9leHRl bnNpb25zLmpzIiwKKyAgICAgICAgICAgICAgICAgICAgXz1nZXR0ZXh0Cisg ICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgMjAwLCB7 J0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQnfQor ICAgICAgICAgICAgICAgICkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24K KyAgICBkZWYgc3FsKHNlbGYsIGdpZCwgc2lkLCBkaWQsIGVpZCk6CisgICAg ICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgZ2VuZXJhdGUg c3FsIGZvciBzcWwgcGFuZWwKKyAgICAgICAgIiIiCisgICAgICAgIFNRTCA9 IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKKyAgICAgICAgICAgICAgICBb c2VsZi50ZW1wbGF0ZV9wYXRoLCAncHJvcGVydGllcy5zcWwnXQorICAgICAg ICAgICAgKSwgZWlkPWVpZCkKKyAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxm LmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAgICAgaWYgbm90IHN0YXR1 czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3Io ZXJyb3Jtc2c9cmVzKQorCisgICAgICAgIHJlc3VsdCA9IHJlc1sncm93cydd WzBdCisKKyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2lu KAorICAgICAgICAgICAgICAgIFtzZWxmLnRlbXBsYXRlX3BhdGgsICdjcmVh dGUuc3FsJ10KKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgZGF0 YT1yZXN1bHQsCisgICAgICAgICAgICBjb25uPXNlbGYuY29ubiwKKyAgICAg ICAgICAgIGRpc3BsYXlfY29tbWVudHM9VHJ1ZQorICAgICAgICApCisKKyAg ICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UocmVzcG9uc2U9U1FMKQorCisg ICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBkZXBlbmRlbnRzKHNl bGYsIGdpZCwgc2lkLCBkaWQsIGVpZCk6CisgICAgICAgICIiIgorICAgICAg ICBUaGlzIGZ1bmN0aW9uIGdldCB0aGUgZGVwZW5kZW50cyBhbmQgcmV0dXJu IGFqYXggcmVzcG9uc2UKKyAgICAgICAgZm9yIHRoZSBleHRlbnNpb24gbm9k ZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIg R3JvdXAgSUQKKyAgICAgICAgICAgIHNpZDogU2VydmVyIElECisgICAgICAg ICAgICBkaWQ6IERhdGFiYXNlIElECisgICAgICAgICAgICBlaWQ6IEV4dGVu c2lvbiBJRAorICAgICAgICAiIiIKKyAgICAgICAgZGVwZW5kZW50c19yZXN1 bHQgPSBzZWxmLmdldF9kZXBlbmRlbnRzKHNlbGYuY29ubiwgZWlkKQorICAg ICAgICByZXR1cm4gYWpheF9yZXNwb25zZSgKKyAgICAgICAgICAgIHJlc3Bv bnNlPWRlcGVuZGVudHNfcmVzdWx0LAorICAgICAgICAgICAgc3RhdHVzPTIw MAorICAgICAgICAgICAgKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgor ICAgIGRlZiBkZXBlbmRlbmNpZXMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgZWlk KToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gZ2V0IHRo ZSBkZXBlbmRlbmNpZXMgYW5kIHJldHVybiBhamF4IHJlc3BvbnNlCisgICAg ICAgIGZvciB0aGUgZXh0ZW5zaW9uIG5vZGUuCisKKyAgICAgICAgQXJnczoK KyAgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElECisgICAgICAgICAg ICBzaWQ6IFNlcnZlciBJRAorICAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJ RAorICAgICAgICAgICAgbGlkOiBFeHRlbnNpb24gSUQKKyAgICAgICAgIiIi CisgICAgICAgIGRlcGVuZGVuY2llc19yZXN1bHQgPSBzZWxmLmdldF9kZXBl bmRlbmNpZXMoc2VsZi5jb25uLCBlaWQpCisgICAgICAgIHJldHVybiBhamF4 X3Jlc3BvbnNlKAorICAgICAgICAgICAgcmVzcG9uc2U9ZGVwZW5kZW5jaWVz X3Jlc3VsdCwKKyAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgICAg ICkKKworIyBSZWdpc3RlciBhbmQgYWRkIEV4dGVuc2lvblZpZXcgYXMgYmx1 ZXByaW50CitFeHRlbnNpb25WaWV3LnJlZ2lzdGVyX25vZGVfdmlldyhibHVl cHJpbnQpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvZXh0ZW5zaW9ucy9zdGF0aWMv aW1nL2NvbGwtZXh0ZW5zaW9uLnBuZyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9leHRlbnNpb25zL3N0 YXRpYy9pbWcvY29sbC1leHRlbnNpb24ucG5nCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAuLmVlZDdjYTk3YTMzZWY1OTVmNDQ4Yjg2MjExNjhkNTMxZjg2ZDUx ZDUKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDEwMTcKemNtVjxWMHx4d3dQ KTxoOzNLfExrMDAwZTFOSkxUcTAwMG1HMDAwbU8we3tSM0NAbHxEMDAwMDFi NWNoXzBJdHApCno9PlB4JV9mU2shTVNeeFooI15OM3A/UiZPZCtfWXUkaWJq JVReNlJvckIjYm1uITFfNXh9MkppVUg5fG09aSRwewp6UnQ+N2VzWngocmtI TUImbXxrcH1Za0YtaStTOXFIb05UWUNmeF58b0s3Yz5IPkJ4N25lTUVqamZP OXZablFnemcKem5hc3pvLWB2Yy13dzdLXzByQmVBd3lTPWdtMWpQQ0plSkkk R2o9biZ2eXEqWFZ+flZTZVErP0drekx1KXYrKEtDCno/JlpwdWklQEQ/NV9v N0s1TCp0ZTxHZHwkRSZUaVVgfXAkdF9VIWZXO1BkUis+KjIhYS1NWiU0dmc2 Z007TClMPQp6azUzdzQ3OU0zQkRRK2xmc0JvJnx4b0UzITgpRiRqZF9MWEdu NWRVbUhFSmNFJCltfmIoeEszKnYqRXFCPWZrayYKenpONnVAbyFfcEkqUChY N2c+az10Zjc2eFAkZElqP1NWZTl1Z1NMcG4+Jn0rbHNGMiNEaVApV2opfGg8 TWxoNDQ5CnptNCF1Q1B5fWRMNFZzOFV0Q3YhSHY0TTVjamVkUFBDfSR1alo2 e3hOSkJvY1hCeDQoOyl2azhNaGRfQD01bkstIwp6V2YodHxPMD1ZRUY9cnJ6 dnhuOTMrXnlCTFQkZipBb0BQSWVOMCsja1dSK3VyY1FNY0oqU0Ytc1Qmcm5m bFZGancKemthS00lRz1uO0AkKl8tcUlUbF9NIXN5R0cmN258fFJFXjEqRHw7 fSQpNHRmbWhyejZBSWJJWkFucXF7eWkqVCVWCnpIaFZXdFY7JnUxOEkjdGRJ RV9OcHprYnJZYzlWZk1MdFBYPFpZeDEmQjVaOU9tM304Vlo3RmlQZXM5by1U RHglMQp6d3s2WHtXeCVGWG9yV3s1a35fa3JNdnszVk1zemV8dCFgK31nSlI1 bUhqK1huWTkoLTtaYipWaEN4JGMxdVUqSGgKelJtRz1HekBSXmhhdlYqMUpZ MzNuUj4qVG95azt8K01MTVpiSylfK1hvakhBSDVtPHl2UjtGVDUjJjFpK1lE TDBrCnpKSEs2X2s0dWh3R2xwfDFpK0MpIXBpO0orTX5aWUlmQH5SdFo1RDRf MzBqRiNSO2dxKnk7KzJLSipKJj0kaXR8Swp6YnRiXjFQckl+fSM9KWg7ek1A fXxUXndtMDU/JkQrWTheSjBNSjxtITZrYD4mbkwmNEhDPmQlU1A9YCo0ZF8k M1gKekNvR2FaZlQofEtTX190WkI3VVpRS0QlOE9YYyZLTDdKK0xPOCtSbTBm PUMhezlUI21KN1VERkUwMDAwMWJXJT1KCnowNl55MFcmaSpIMGIpeD5MOyMy ZDlZX0VHMDEwcU5TI3RtWTNsamhVM2xqa1ZudyVIXzAwME1jTmxpcnUrWEVY Qgp6NkNwKFJiY3B9fTBCJVZ7S354eWlVNjhSMnojdDMrblModHQhM35oWV52 R2c0MkZMPWBFRU5ObTB7TSE2LXkxOykKelF4RmF6dkxfY0sqYjxfb2tGZzBk OEhjI1Y9RWhgKWgreVptcGxlaG5sTlpFZHRnUUBoWDBDTmVJV0VweHchb3lO Cm5kY350c3A5VGxpZE96T0MmLSkqfEtIKTNwRDJuZ3IwMDAwME5rdlhYdTBt amY8S05VegoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL2V4dGVuc2lvbnMvc3RhdGljL2ltZy9leHRlbnNpb24ucG5nIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL2V4dGVuc2lvbnMvc3RhdGljL2ltZy9leHRlbnNpb24ucG5nCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUzYzUzMzM0Nzg4M2ZjMWRlYzczYmNi MjFiMzJmYzU0ZTNjMzE3MzIKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDk5 Ngp6Y21WPEEwfmBFX1ApPGg7M0t8TGswMDBlMU5KTFRxMDAwbUcwMDBtTzB7 e1IzQ0BsfEQwMDAwMWI1Y2hfMEl0cCkKej0+UHglYGNPPCVNUTJ6TGZfNkk2 Jjl8emRkOTk+LUBhKjJtIUp1bmg3Til8YlJmfC1ieHx6VmJvU0toYV93KGxH Cno7bWMtTDRYVlZjUWpiKVIhSW9OPlVUbTZjZFRsUCspNDhhZVlfRigrIXF2 aClmSXEkSSRha0BRTTFEZW1iMnAteQp6Wk5JcGclKlU/Wit8MGVVbVI/USlA I0B5THRBM3U5WEZodjhtZHYwdGJ+QyFPayk0eGNrYzNXc2E0PyphVUQ/cEgK ekBhZlgtPDtzfGdQLTxIZWN4V0xJVE1uK3t5ZSlEcXtRTEwmYDExTW8/RGc+ QV5YJUV7O2xrK015NWB4azxKR0MpCnooVj9KXlBhMHFyOSVVUlVaWVhKfWFI YHxFWHNkNz1WO01rdktIYmNpc0Z6bllZOSplQHFzaV5rcTBwK2M7a34hIwp6 IT81TVBxdjVsaS0+IzY/cD8xTkFhbGUzbikwTnVEa2difG5NUSR2RXd1cjsp JlgoUCVrbExlKCpxd3NibjAoWmUKeiYlbHFCZysqM1MxWlk/ZG51dFRJbXJ7 R05mcHlaMmV0a005WENOcVRDdHI5d2loVk9BVjtpTl91NkQoVEsjeGNmCnpU bmB2ITcoYk90dzRgYj1YQ1E+TGh0PWBpdDx8KCNtdFNGP1c8UVFjbSQ7VD5t MUJaO0cwKlNVeDglV0d0NyY0Qgp6VjNEK3RiOFJJd2dGM0x1dSNiTl43RzR2 PT0qeVZScC1fQGtqbWVvU2RvYUchelN6V3YhS2BVSFVLQyFNVnVaU2oKemFJ QUpWZHBBeUY5dnh5Q2xoJmcralk4R0dlJHU7a2xZdW91VEAqaVZEP3cpPlk7 N0VzZWtWQz9EUlIxZ1pfdFFaCnp5S3Y5OVpPeVl+ekB9ODRoQkt7X0pIbigh bDZmTFZiVG5oRlpmTVNmViQ2THVsMHFoR0MyKlo/TlA8VHZoQkx+cQp6VUJ8 MGMjaXZjY3BnKVJvOThHI1dUKmBQPiRhNn0oVzsyPmFJO2x9V3ordHxmSWVs amxTY0ZTZnJlYVhXWiVmMiMKek1aI3R+emc/a15PT0FVcGhJMSo0Y3IzVn1R bnM4JmlnWTFAWSNEQFk3SD9iJFQ4VUN0c2JuXzJTJWkyIXJrISloCnohPkVh TUNjdmFteVI/KFchS0s4JHFGPDMrOUJDYUFVSik4PDlYNkxtRXNzMURWLT5a VEwzZTI9OEVQOSloZmF1bQp6THk+d1hFUnNFZHNERW8oM3ptRSRleGBqc3lJ bUcmNz1MT09mb2x+VGNPKiVJTkVtSiU3aX1CfFlSbjElMDAwNFcKelFjaEM8 SzwzekgwMDAwMVZvT0l2MEVoKTBOQntyOzMyO2JSYXt2R2Y2OTUxVTY5RTk0 b0VRS0EwMChxUU8rXlJXCnowfi14RzQhJkhCRjh9fWxSIUt4YlIyYjdeVT8z ajJ4UztWdkxYYnR3VHp+PjBXPVFoVkEpeUhfRmtMe30xO2h1awp6cGFLQ1FL ekA9N3Nge2k5N2kwQHZsMlRTOHcxQzc/UiZHN3k7KTFObTw8T1prQ3tBLWg8 Nn1BPENqYkRhUDhxRGUKU1JfNGU2MDAwMDxNTlVNbkxTVGFYLV5MMzcKCmxp dGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9leHRl bnNpb25zL3RlbXBsYXRlcy9leHRlbnNpb25zL2pzL2V4dGVuc2lvbnMuanMg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvZXh0ZW5zaW9ucy90ZW1wbGF0ZXMvZXh0ZW5zaW9ucy9qcy9l eHRlbnNpb25zLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjE3MGE5YTEKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvZXh0ZW5z aW9ucy90ZW1wbGF0ZXMvZXh0ZW5zaW9ucy9qcy9leHRlbnNpb25zLmpzCkBA IC0wLDAgKzEsMjU0IEBACitkZWZpbmUoCisgICAgICBbJ2pxdWVyeScsICd1 bmRlcnNjb3JlJywgJ3VuZGVyc2NvcmUuc3RyaW5nJywgJ3BnYWRtaW4nLAor ICAgICAgICAncGdhZG1pbi5icm93c2VyJywgJ3BnYWRtaW4uYnJvd3Nlci5j b2xsZWN0aW9uJ10sCitmdW5jdGlvbigkLCBfLCBTLCBwZ0FkbWluLCBwZ0Jy b3dzZXIpIHsKKworICAvKgorICAgKiBDcmVhdGUgYW5kIEFkZCBhbiBFeHRl bnNpb24gQ29sbGVjdGlvbiBpbnRvIG5vZGVzCisgICAqIFBhcmFtczoKKyAg ICogICBsYWJlbCAtIExhYmVsIGZvciBOb2RlCisgICAqICAgdHlwZSAtIFR5 cGUgb2YgTm9kZQorICAgKiAgIGNvbHVtbnMgLSBMaXN0IG9mIGNvbHVtbnMg dG8gc2hvdyB1bmRlciB1bmRlciBwcm9wZXJ0aWVzLgorICAgKi8KKyAgaWYg KCFwZ0Jyb3dzZXIuTm9kZXNbJ2NvbGwtZXh0ZW5zaW9uJ10pIHsKKyAgICB2 YXIgZXh0ZW5zaW9ucyA9IHBnQWRtaW4uQnJvd3Nlci5Ob2Rlc1snY29sbC1l eHRlbnNpb24nXSA9CisgICAgICBwZ0FkbWluLkJyb3dzZXIuQ29sbGVjdGlv bi5leHRlbmQoeworICAgICAgICBub2RlOiAnZXh0ZW5zaW9uJywKKyAgICAg ICAgbGFiZWw6ICd7eyBfKCdFeHRlbnNpb24nKSB9fScsCisgICAgICAgIHR5 cGU6ICdjb2xsLWV4dGVuc2lvbicsCisgICAgICAgIGNvbHVtbnM6IFsnbmFt ZScsICdvd25lcicsICdjb21tZW50J10KKyAgICAgIH0pOworICB9OworCisg IC8qCisgICAqIENyZWF0ZSBhbmQgQWRkIGFuIEV4dGVuc2lvbiBOb2RlIGlu dG8gbm9kZXMKKyAgICogUGFyYW1zOgorICAgKiAgIHBhcmVudF90eXBlIC0g TmFtZSBvZiBwYXJlbnQgTm9kZQorICAgKiAgIHR5cGUgLSBUeXBlIG9mIE5v ZGUKKyAgICogICBoYXNTUUwgLSBUcnVlIGlmIHdlIG5lZWQgdG8gc2hvdyBT UUwgcXVlcnkgVGFiIGNvbnRyb2wsIG90aGVyd2lzZSBGYWxzZQorICAgKiAg IGNhbkRyb3AgLSBUcnVlIHRvIHNob3cgIkRyb3AgRXh0ZW5zaW9uIiBsaW5r IHVuZGVyIENvbnRleHQgbWVudSwKKyAgICogICAgb3RoZXJ3aXNlIEZhbHNl CisgICAqICAgY2FuRHJvcENhc2NhZGUgLSBUcnVlIHRvIHNob3cgIkRyb3Ag Q2FzY2FkZSIgbGluayB1bmRlciBDb250ZXh0IG1lbnUsCisgICAqICAgIG90 aGVyd2lzZSBGYWxzZQorICAgKiAgIGNvbHVtbnMgLSBMaXN0IG9mIGNvbHVt bnMgdG8gc2hvdyB1bmRlciB1bmRlciBwcm9wZXJ0aWVzIHRhYi4KKyAgICog ICBsYWJlbCAtIExhYmVsIGZvciBOb2RlCisgICAqLworICBpZiAoIXBnQnJv d3Nlci5Ob2Rlc1snZXh0ZW5zaW9uJ10pIHsKKyAgICBwZ0FkbWluLkJyb3dz ZXIuTm9kZXNbJ2V4dGVuc2lvbiddID0KKyAgICBwZ0FkbWluLkJyb3dzZXIu Tm9kZS5leHRlbmQoeworICAgICAgcGFyZW50X3R5cGU6ICdkYXRhYmFzZScs CisgICAgICB0eXBlOiAnZXh0ZW5zaW9uJywKKyAgICAgIGhhc1NRTDogdHJ1 ZSwKKyAgICAgIGhhc0RlcGVuZHM6IHRydWUsCisgICAgICBjYW5Ecm9wOiB0 cnVlLAorICAgICAgY2FuRHJvcENhc2NhZGU6IHRydWUsCisgICAgICBsYWJl bDogJ3t7IF8oJ0V4dGVuc2lvbicpIH19JywKKworICAgICAgSW5pdDogZnVu Y3Rpb24oKSB7CisgICAgICAgIGlmKHRoaXMuaW5pdGlhbGl6ZWQpCisgICAg ICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0 cnVlOworCisgICAgICAgIC8qCisgICAgICAgICAqIEFkZCAiY3JlYXRlIGV4 dGVuc2lvbiIgbWVudSBpdGVtIGludG8gY29udGV4dCBhbmQgb2JqZWN0IG1l bnUKKyAgICAgICAgICogZm9yIHRoZSBmb2xsb3dpbmcgbm9kZXM6CisgICAg ICAgICAqIGNvbGwtZXh0ZW5zaW9uLCBleHRlbnNpb24gYW5kIGRhdGFiYXNl LgorICAgICAgICAgKi8KKyAgICAgICAgcGdCcm93c2VyLmFkZF9tZW51cyhb eworICAgICAgICAgIG5hbWU6ICdjcmVhdGVfZXh0ZW5zaW9uX29uX2NvbGwn LCBub2RlOiAnY29sbC1leHRlbnNpb24nLCBtb2R1bGU6IHRoaXMsCisgICAg ICAgICAgYXBwbGllczogWydvYmplY3QnLCAnY29udGV4dCddLCBjYWxsYmFj azogJ3Nob3dfb2JqX3Byb3BlcnRpZXMnLAorICAgICAgICAgIGNhdGVnb3J5 OiAnY3JlYXRlJywgcHJpb3JpdHk6IDQsIGxhYmVsOiAne3sgXygnRXh0ZW5z aW9uLi4uJykgfX0nLAorICAgICAgICAgIGljb246ICd3Y1RhYkljb24gaWNv bi1leHRlbnNpb24nLCBkYXRhOiB7YWN0aW9uOiAnY3JlYXRlJ30KKyAgICAg ICAgfSx7CisgICAgICAgICAgbmFtZTogJ2NyZWF0ZV9leHRlbnNpb24nLCBu b2RlOiAnZXh0ZW5zaW9uJywgbW9kdWxlOiB0aGlzLAorICAgICAgICAgIGFw cGxpZXM6IFsnb2JqZWN0JywgJ2NvbnRleHQnXSwgY2FsbGJhY2s6ICdzaG93 X29ial9wcm9wZXJ0aWVzJywKKyAgICAgICAgICBjYXRlZ29yeTogJ2NyZWF0 ZScsIHByaW9yaXR5OiA0LCBsYWJlbDogJ3t7IF8oJ0V4dGVuc2lvbi4uLicp IH19JywKKyAgICAgICAgICBpY29uOiAnd2NUYWJJY29uIGljb24tZXh0ZW5z aW9uJywgZGF0YToge2FjdGlvbjogJ2NyZWF0ZSd9CisgICAgICAgIH0sewor ICAgICAgICAgIG5hbWU6ICdjcmVhdGVfZXh0ZW5zaW9uJywgbm9kZTogJ2Rh dGFiYXNlJywgbW9kdWxlOiB0aGlzLAorICAgICAgICAgIGFwcGxpZXM6IFsn b2JqZWN0JywgJ2NvbnRleHQnXSwgY2FsbGJhY2s6ICdzaG93X29ial9wcm9w ZXJ0aWVzJywKKyAgICAgICAgICBjYXRlZ29yeTogJ2NyZWF0ZScsIHByaW9y aXR5OiA0LCBsYWJlbDogJ3t7IF8oJ0V4dGVuc2lvbi4uLicpIH19JywKKyAg ICAgICAgICBpY29uOiAnd2NUYWJJY29uIGljb24tZXh0ZW5zaW9uJywgZGF0 YToge2FjdGlvbjogJ2NyZWF0ZSd9CisgICAgICAgIH0KKyAgICAgICAgXSk7 CisgICAgICB9LAorCisgICAgICAvKgorICAgICAgICogRGVmaW5lIG1vZGVs IGZvciB0aGUgTm9kZSBhbmQgc3BlY2lmeSB0aGUgcHJvcGVydGllcworICAg ICAgICogb2YgdGhlIG1vZGVsIGluIHNjaGVtYS4KKyAgICAgICAqLworICAg ICAgbW9kZWw6IHBnQWRtaW4uQnJvd3Nlci5Ob2RlLk1vZGVsLmV4dGVuZCh7 CisgICAgICAgIHNjaGVtYTogWworICAgICAgICAgIHsKKyAgICAgICAgICAg IGlkOiAnbmFtZScsIGxhYmVsOiAne3sgXygnTmFtZScpfX0nLCBmaXJzdF9l bXB0eTogdHJ1ZSwKKyAgICAgICAgICAgIHR5cGU6ICd0ZXh0JywgbW9kZTog Wydwcm9wZXJ0aWVzJywgJ2NyZWF0ZScsICdlZGl0J10sCisgICAgICAgICAg ICB2aXNpYmxlOiB0cnVlLCB1cmw6J2F2YWlscycsIGRpc2FibGVkOiBmdW5j dGlvbihtKSB7CisgICAgICAgICAgICAgIHJldHVybiAhbS5pc05ldygpOwor ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHRyYW5zZm9ybTogZnVuY3Rp b24oZGF0YSkgeworICAgICAgICAgICAgICB2YXIgcmVzID0gW107CisgICAg ICAgICAgICAgIHZhciBsYWJlbCA9IHRoaXMubW9kZWwuZ2V0KCduYW1lJyk7 CisgICAgICAgICAgICAgIGlmICghdGhpcy5tb2RlbC5pc05ldygpKSB7Cisg ICAgICAgICAgICAgICAgcmVzLnB1c2goe2xhYmVsOiBsYWJlbCwgdmFsdWU6 IGxhYmVsfSk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgZWxz ZSB7CisgICAgICAgICAgICAgICAgaWYgKGRhdGEgJiYgXy5pc0FycmF5KGRh dGEpKSB7CisgICAgICAgICAgICAgICAgICBfLmVhY2goZGF0YSwgZnVuY3Rp b24oZCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoZC5pbnN0YWxsZWRf dmVyc2lvbiA9PT0gbnVsbCkKKworICAgICAgICAgICAgICAgICAgICAgIC8q CisgICAgICAgICAgICAgICAgICAgICAgICogZCBjb250YWlucyBqc29uIGRh dGEgYW5kIHNldHMgaW50bworICAgICAgICAgICAgICAgICAgICAgICAqIHNl bGVjdCdzIG9wdGlvbiBjb250cm9sCisgICAgICAgICAgICAgICAgICAgICAg ICoKKyAgICAgICAgICAgICAgICAgICAgICAgKiBXZSBuZWVkIHRvIHN0cmlu Z2lmeSBkYXRhIGJlY2F1c2UgZm9ybWF0dGVyIHdpbGwKKyAgICAgICAgICAg ICAgICAgICAgICAgKiBjb252ZXJ0IEFycmF5IE9iamVjdCBhcyBbT2JqZWN0 XSBzdHJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAg ICAgICAgICAgICAgICByZXMucHVzaCh7bGFiZWw6IGQubmFtZSwgdmFsdWU6 IEpTT04uc3RyaW5naWZ5KGQpfSk7CisgICAgICAgICAgICAgICAgICB9KQor ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAg ICAgICByZXR1cm4gcmVzOworICAgICAgICAgICAgfSwKKworICAgICAgICAg ICAgLyoKKyAgICAgICAgICAgICAqIGV4dGVuZHMgTm9kZUFqYXhPcHRpb25z Q29udHJvbCB0byBvdmVycmlkZSB0aGUgcHJvcGVydGllcworICAgICAgICAg ICAgICogZ2V0VmFsdWVGcm9tRE9NIHdoaWNoIHRha2VzIHN0cmluZ2lmaWVk IGRhdGEgZnJvbSBvcHRpb24gb2YKKyAgICAgICAgICAgICAqIHNlbGVjdCBj b250cm9sIGFuZCBwYXJzZSBpdC4gQW5kIGBvbkNoYW5nZWAgdGFrZXMgdGhl IHN0cmluZ2lmaWVkCisgICAgICAgICAgICAgKiBkYXRhIGZyb20gc2VsZWN0 J3Mgb3B0aW9uLCB0aHVzIGNvbnZlcnQgaXQgdG8ganNvbiBmb3JtYXQgYW5k IHNldCB0aGUKKyAgICAgICAgICAgICAqIGRhdGEgaW50byBNb2RlbCB3aGlj aCBpcyB1c2VkIHRvIGVuYWJsZS9kaXNhYmxlIHRoZSBzY2hlbWEgZmllbGQu CisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGNvbnRyb2w6IEJhY2tm b3JtLk5vZGVBamF4T3B0aW9uc0NvbnRyb2wuZXh0ZW5kKHsKKyAgICAgICAg ICAgICAgZ2V0VmFsdWVGcm9tRE9NOiBmdW5jdGlvbigpIHsKKyAgICAgICAg ICAgICAgICB2YXIgZGF0YSA9IHRoaXMuZm9ybWF0dGVyLnRvUmF3KAorICAg ICAgICAgICAgICAgICAgXy51bmVzY2FwZSh0aGlzLiRlbC5maW5kKCJzZWxl Y3QiKS52YWwoKSksIHRoaXMubW9kZWwpOworICAgICAgICAgICAgICAgIC8q CisgICAgICAgICAgICAgICAgICogcmV0dXJuIG51bGwgaWYgZGF0YSBpcyBl bXB0eSB0byBwcmV2ZW50IGl0IGZyb20KKyAgICAgICAgICAgICAgICAgKiB0 aHJvd2luZyBwYXJzaW5nIGVycm9yLiBBZGRzIGNoZWNrIGFzIG5hbWUgY2Fu IGJlIGVtcHR5CisgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAg ICAgaWYgKGRhdGEgPT09ICcnKSB7CisgICAgICAgICAgICAgICAgICByZXR1 cm4gbnVsbDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg ZWxzZSBpZiAodHlwZW9mKGRhdGEpID09PSAnc3RyaW5nJykgeworICAgICAg ICAgICAgICAgICAgZGF0YT1KU09OLnBhcnNlKGRhdGEpOworICAgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gZGF0YS5uYW1lOwor ICAgICAgICAgICAgICB9LAorCisgICAgICAgICAgICAgIC8qCisgICAgICAg ICAgICAgICAqIFdoZW4gbmFtZSBpcyBjaGFuZ2VkLCBleHRyYWN0IHZhbHVl IGZyb20gaXRzIHNlbGVjdCBvcHRpb24gYW5kCisgICAgICAgICAgICAgICAq IHNldCBhdHRyaWJ1dGVzIHZhbHVlcyBpbnRvIHRoZSBtb2RlbAorICAgICAg ICAgICAgICAgKi8KKyAgICAgICAgICAgICAgb25DaGFuZ2U6IGZ1bmN0aW9u KCkgeworICAgICAgICAgICAgICAgIEJhY2tmb3JtLk5vZGVBamF4T3B0aW9u c0NvbnRyb2wucHJvdG90eXBlLm9uQ2hhbmdlLmFwcGx5KHRoaXMsIGFyZ3Vt ZW50cyk7CisgICAgICAgICAgICAgICAgdmFyIHNlbGVjdGVkVmFsdWUgPSB0 aGlzLiRlbC5maW5kKCJzZWxlY3QiKS52YWwoKTsKKyAgICAgICAgICAgICAg ICBpZiAoc2VsZWN0ZWRWYWx1ZS50cmltKCkgIT0gIiIpIHsKKyAgICAgICAg ICAgICAgICAgIHZhciBkID0gdGhpcy5mb3JtYXR0ZXIudG9SYXcoc2VsZWN0 ZWRWYWx1ZSwgdGhpcy5tb2RlbCk7CisgICAgICAgICAgICAgICAgICBpZih0 eXBlb2YoZCkgPT09ICdzdHJpbmcnKQorICAgICAgICAgICAgICAgICAgICBk PUpTT04ucGFyc2UoZCk7CisgICAgICAgICAgICAgICAgICB2YXIgY2hhbmdl cyA9IHsKKyAgICAgICAgICAgICAgICAgICAgJ3ZlcnNpb24nIDogJycsCisg ICAgICAgICAgICAgICAgICAgICdyZWxvY2F0YWJsZSc6ICgKKyAgICAgICAg ICAgICAgICAgICAgICAgICghXy5pc051bGwoZC5yZWxvY2F0YWJsZVswXSkg JiYgIV8uaXNVbmRlZmluZWQoZC5yZWxvY2F0YWJsZVswXSkpID8KKyAgICAg ICAgICAgICAgICAgICAgICAgIGQucmVsb2NhdGFibGVbMF06ICcnKSwKKyAg ICAgICAgICAgICAgICAgICAgJ3NjaGVtYSc6ICgoIV8uaXNOdWxsKGQuc2No ZW1hWzBdKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAhXy5pc1Vu ZGVmaW5lZChkLnNjaGVtYVswXSkpID8gZC5zY2hlbWFbMF06ICcnKQorICAg ICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgdGhpcy5t b2RlbC5zZXQoY2hhbmdlcyk7CisgICAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgdmFyIGNoYW5n ZXMgPSB7J3ZlcnNpb24nOiAnJywgJ3JlbG9jYXRhYmxlJzogdHJ1ZSwgJ3Nj aGVtYSc6ICcnfTsKKyAgICAgICAgICAgICAgICAgIHRoaXMubW9kZWwuc2V0 KGNoYW5nZXMpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg fSwKKyAgICAgICAgICAgIH0pCisgICAgICAgICAgfSwKKyAgICAgICAgICB7 CisgICAgICAgICAgICBpZDogJ2VpZCcsIGxhYmVsOiAne3sgXygnT2lkJyl9 fScsIGNlbGw6ICdzdHJpbmcnLAorICAgICAgICAgICAgdHlwZTogJ3RleHQn LCBkaXNhYmxlZDogdHJ1ZSwgbW9kZTogWydwcm9wZXJ0aWVzJywgJ2VkaXQn LCAnY3JlYXRlJ10KKyAgICAgICAgICB9LAorICAgICAgICAgIHsKKyAgICAg ICAgICAgIGlkOiAnb3duZXInLCBsYWJlbDone3sgXygnT3duZXInKSB9fScs IGNvbnRyb2w6ICdub2RlLWxpc3QtYnktbmFtZScsCisgICAgICAgICAgICBt b2RlOiBbJ3Byb3BlcnRpZXMnXSwgbm9kZTogJ3JvbGUnLCBjZWxsOiAnc3Ry aW5nJworICAgICAgICAgIH0sCisgICAgICAgICAgeworICAgICAgICAgICAg aWQ6ICdzY2hlbWEnLCBsYWJlbDogJ3t7IF8oJ1NjaGVtYScpfX0nLCB0eXBl OiAndGV4dCcsIGNvbnRyb2w6ICdub2RlLWFqYXgtb3B0aW9ucycsCisgICAg ICAgICAgICBtb2RlOiBbJ3Byb3BlcnRpZXMnLCAnY3JlYXRlJywgJ2VkaXQn XSwgZ3JvdXA6ICdEZWZpbml0aW9uJywgZGVwczogWydyZWxvY2F0YWJsZSdd LAorICAgICAgICAgICAgdXJsOiAnc2NoZW1hcycsIGZpcnN0X2VtcHR5OiB0 cnVlLCBkaXNhYmxlZDogZnVuY3Rpb24obSkgeworCisgICAgICAgICAgICAg IC8qCisgICAgICAgICAgICAgICAqIGVuYWJsZSBvciBkaXNhYmxlIHNjaGVt YSBmaWVsZCBpZiBtb2RlbCdzIHJlbG9jYXRhYmxlCisgICAgICAgICAgICAg ICAqIGF0dHJpYnV0ZSBpcyBUcnVlIG9yIEZhbHNlCisgICAgICAgICAgICAg ICAqLworICAgICAgICAgICAgICByZXR1cm4gKG0uaGFzKCdyZWxvY2F0YWJs ZScpID8gIW0uZ2V0KCdyZWxvY2F0YWJsZScpIDogZmFsc2UpOworICAgICAg ICAgICAgfSwKKyAgICAgICAgICAgIHRyYW5zZm9ybTogZnVuY3Rpb24oZGF0 YSkgeworICAgICAgICAgICAgICB2YXIgcmVzID0gW107CisgICAgICAgICAg ICAgIGlmIChkYXRhICYmIF8uaXNBcnJheShkYXRhKSkgeworICAgICAgICAg ICAgICAgIF8uZWFjaChkYXRhLCBmdW5jdGlvbihkKSB7CisgICAgICAgICAg ICAgICAgICByZXMucHVzaCh7bGFiZWw6IGQuc2NoZW1hLCB2YWx1ZTogZC5z Y2hlbWF9KTsKKyAgICAgICAgICAgICAgICB9KQorICAgICAgICAgICAgICB9 CisgICAgICAgICAgICAgIHJldHVybiByZXM7CisgICAgICAgICAgICB9Cisg ICAgICAgICAgfSwKKyAgICAgICAgICB7CisgICAgICAgICAgICBpZDogJ3Jl bG9jYXRhYmxlJywgbGFiZWw6ICd7eyBfKCdSZWxvY2F0YWJsZT8nKX19Jywg Y2VsbDogJ3N3aXRjaCcsCisgICAgICAgICAgICB0eXBlOiAnc3dpdGNoJywg bW9kZTogWydwcm9wZXJ0aWVzJ10sICdvcHRpb25zJzogeworICAgICAgICAg ICAgICAnb25UZXh0JzogJ1llcycsICdvZmZUZXh0JzogJ05vJywgJ29uQ29s b3InOiAnc3VjY2VzcycsCisgICAgICAgICAgICAgICdvZmZDb2xvcic6ICdk ZWZhdWx0JywgJ3NpemUnOiAnc21hbGwnCisgICAgICAgICAgICB9CisgICAg ICAgICAgfSwKKyAgICAgICAgICB7CisgICAgICAgICAgICBpZDogJ3ZlcnNp b24nLCBsYWJlbDogJ3t7IF8oJ1ZlcnNpb24nKX19JywgY2VsbDogJ3N0cmlu ZycsCisgICAgICAgICAgICBtb2RlOiBbJ3Byb3BlcnRpZXMnLCAnY3JlYXRl JywgJ2VkaXQnXSwgZ3JvdXA6ICdEZWZpbml0aW9uJywKKyAgICAgICAgICAg IGNvbnRyb2w6ICdub2RlLWFqYXgtb3B0aW9ucycsIHVybDonYXZhaWxzJywg Zmlyc3RfZW1wdHk6IHRydWUsCisKKyAgICAgICAgICAgIC8vIFRyYW5zZm9y bSB0aGUgZGF0YSBpbnRvIHZlcnNpb24gZm9yIHRoZSBzZWxlY3RlZCBleHRl bnNpb24uCisgICAgICAgICAgICB0cmFuc2Zvcm06IGZ1bmN0aW9uKGRhdGEp IHsKKyAgICAgICAgICAgICAgcmVzID0gW107CisgICAgICAgICAgICAgIHZh ciBleHRlbnNpb24gPSB0aGlzLm1vZGVsLmdldCgnbmFtZScpOworICAgICAg ICAgICAgICBfLmVhY2goZGF0YSwgZnVuY3Rpb24oZHQpIHsKKyAgICAgICAg ICAgICAgICBpZihkdC5uYW1lID09IGV4dGVuc2lvbikgeworICAgICAgICAg ICAgICAgICAgaWYoZHQudmVyc2lvbiAmJiBfLmlzQXJyYXkoZHQudmVyc2lv bikpIHsKKyAgICAgICAgICAgICAgICAgICAgXy5lYWNoKGR0LnZlcnNpb24s IGZ1bmN0aW9uKHYpIHsKKyAgICAgICAgICAgICAgICAgICAgICByZXMucHVz aCh7IGxhYmVsOiB2LCB2YWx1ZTogdiB9KTsKKyAgICAgICAgICAgICAgICAg ICAgfSk7CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg fQorICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgcmV0dXJuIHJl czsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9LAorICAgICAgICAgIHsK KyAgICAgICAgICAgIGlkOiAnY29tbWVudCcsIGxhYmVsOiAne3sgXygnQ29t bWVudCcpfX0nLCBjZWxsOiAnc3RyaW5nJywKKyAgICAgICAgICAgIHR5cGU6 ICdtdWx0aWxpbmUnLCBkaXNhYmxlZDogdHJ1ZQorICAgICAgICAgIH0KKyAg ICAgICAgXSwKKyAgICAgICAgdmFsaWRhdGU6IGZ1bmN0aW9uKCkgeworCisg ICAgICAgICAgLyoKKyAgICAgICAgICAqIFRyaWdnZXJzIGVycm9yIG1lc3Nh Z2VzIGZvciBuYW1lCisgICAgICAgICAgKiBpZiBpdCBpcyBlbXB0eS91bmRl ZmluZWQvbnVsbAorICAgICAgICAgICovCisgICAgICAgICAgdmFyIGVyciA9 IHt9LAorICAgICAgICAgICAgZXJybXNnLAorICAgICAgICAgICAgbmFtZSA9 IHRoaXMuZ2V0KCduYW1lJyk7CisgICAgICAgICAgaWYgKF8uaXNVbmRlZmlu ZWQobmFtZSkgfHwgXy5pc051bGwobmFtZSkgfHwKKyAgICAgICAgICAgIFN0 cmluZyhuYW1lKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpID09ICcnKSB7 CisgICAgICAgICAgICBlcnJbJ25hbWUnXSA9ICd7eyBfKCdOYW1lIGNhbiBu b3QgYmUgZW1wdHkhJykgfX0nOworICAgICAgICAgICAgZXJybXNnID0gZXJy bXNnIHx8IGVyclsnbmFtZSddOworICAgICAgICAgICAgdGhpcy5lcnJvck1v ZGVsLnNldCgnbmFtZScsIGVycm1zZyk7CisgICAgICAgICAgICByZXR1cm4g ZXJybXNnOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIHsKKyAgICAg ICAgICAgIHRoaXMuZXJyb3JNb2RlbC51bnNldCgnbmFtZScpOworICAgICAg ICAgIH0KKyAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorICAg ICAgfSkKKyAgICB9KQorICB9OworCisgIHJldHVybiBwZ0Jyb3dzZXIuTm9k ZXNbJ2NvbGwtZXh0ZW5zaW9uJ107Cit9KTsKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9leHRlbnNpb25zL3RlbXBsYXRlcy9leHRlbnNpb25zL3NxbC9jcmVhdGUu c3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL2V4dGVuc2lvbnMvdGVtcGxhdGVzL2V4dGVuc2lvbnMv c3FsL2NyZWF0ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uMjg4YTdjYwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9leHRl bnNpb25zL3RlbXBsYXRlcy9leHRlbnNpb25zL3NxbC9jcmVhdGUuc3FsCkBA IC0wLDAgKzEsMTkgQEAKK3sjPT09PT09PT09PT09PT09PT09PT09PT09PUNy ZWF0ZSBuZXcgZXh0ZW5zaW9uPT09PT09PT09PT09PT09PT09PT09PSN9Cit7 Iz09PUdlbmVyYXRlcyBjb21tZW50cyBhbmQgY29kZSBmb3IgU1FMIHRhYj09 PSN9Cit7JSBpZiBkaXNwbGF5X2NvbW1lbnRzICV9CistLSBFeHRlbnNpb246 IHt7IGNvbm58cXRJZGVudChkYXRhLm5hbWUpIH19CisKKy0tIERST1AgRVhU RU5TSU9OIHt7IGNvbm58cXRJZGVudChkYXRhLm5hbWUpIH19OworCit7JSBl bmRpZiAlfQoreyUgaWYgZGF0YS5uYW1lICV9CisgQ1JFQVRFIEVYVEVOU0lP TiB7eyBjb25ufHF0SWRlbnQoZGF0YS5uYW1lKSB9fXslIGlmIGRhdGEuc2No ZW1hID09ICcnIGFuZCBkYXRhLnZlcnNpb24gPT0gJycgJX07eyUgZW5kaWYg JX0KK3slIGlmIGRhdGEuc2NoZW1hICV9CisKKyAgICBTQ0hFTUEge3sgY29u bnxxdElkZW50KGRhdGEuc2NoZW1hKSB9fXslIGlmIGRhdGEudmVyc2lvbiA9 PSAnJyAlfTt7JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0KK3slIGlmIGRhdGEu dmVyc2lvbiAlfQorCisgICAgVkVSU0lPTiB7eyBjb25ufHF0SWRlbnQoZGF0 YS52ZXJzaW9uKSB9fTsKK3slIGVuZGlmICV9Cit7JSBlbmRpZiAlfQpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL2V4dGVuc2lvbnMvdGVtcGxhdGVzL2V4dGVuc2lv bnMvc3FsL2RlbGV0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvZXh0ZW5zaW9ucy90ZW1wbGF0 ZXMvZXh0ZW5zaW9ucy9zcWwvZGVsZXRlLnNxbApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi40NDE1NWY2Ci0tLSAvZGV2L251bGwKKysr IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL2V4dGVuc2lvbnMvdGVtcGxhdGVzL2V4dGVuc2lvbnMvc3Fs L2RlbGV0ZS5zcWwKQEAgLTAsMCArMSw4IEBACit7Iz09PT09PT09PT09PT09 PT09PT09PT09PT09PT1Ecm9wL0Nhc2NhZGUgRXh0ZW5zaW9uIGJ5IG5hbWU9 PT09PT09PT09PT09PT09PT09PT09PT09I30KK3slIGlmIGVpZCAlfQorU0VM RUNUIHguZXh0bmFtZSBmcm9tIHBnX2V4dGVuc2lvbiB4CisgICAgV0hFUkUg eC5vaWQgPSB7eyBlaWQgfX06OmludAoreyUgZW5kaWYgJX0KK3slIGlmIG5h bWUgJX0KK0RST1AgRVhURU5TSU9OIHt7IGNvbm58cXRJZGVudChuYW1lKSB9 fSB7JSBpZiBjYXNjYWRlICV9IENBU0NBREUgeyUgZW5kaWYgJX0KK3slIGVu ZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvZXh0ZW5zaW9ucy90ZW1wbGF0 ZXMvZXh0ZW5zaW9ucy9zcWwvZXh0ZW5zaW9ucy5zcWwgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvZXh0 ZW5zaW9ucy90ZW1wbGF0ZXMvZXh0ZW5zaW9ucy9zcWwvZXh0ZW5zaW9ucy5z cWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmYzOTc5 ZAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9leHRlbnNpb25zL3RlbXBs YXRlcy9leHRlbnNpb25zL3NxbC9leHRlbnNpb25zLnNxbApAQCAtMCwwICsx LDEyIEBACit7IyA9PT09PT09PT09PT09PT09PT09PT09RmV0Y2ggZXh0ZW5z aW9ucyBuYW1lcz09PT09PT09PT09PT09PT09PT09PSN9CitTRUxFQ1QKKyAg ICBhLm5hbWUsIGEuaW5zdGFsbGVkX3ZlcnNpb24sCisgICAgYXJyYXlfYWdn KGF2LnZlcnNpb24pIGFzIHZlcnNpb24sCisgICAgYXJyYXlfYWdnKGF2LnNj aGVtYSkgYXMgc2NoZW1hLAorICAgIGFycmF5X2FnZyhhdi5zdXBlcnVzZXIp IGFzIHN1cGVydXNlciwKKyAgICBhcnJheV9hZ2coYXYucmVsb2NhdGFibGUp IGFzIHJlbG9jYXRhYmxlCitGUk9NCisgICAgcGdfYXZhaWxhYmxlX2V4dGVu c2lvbnMgYQorICAgIExFRlQgSk9JTiBwZ19hdmFpbGFibGVfZXh0ZW5zaW9u X3ZlcnNpb25zIGF2IE9OIChhLm5hbWUgPSBhdi5uYW1lKQorR1JPVVAgQlkg YS5uYW1lLCBhLmluc3RhbGxlZF92ZXJzaW9uCitPUkRFUiBCWSBhLm5hbWUK ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9leHRlbnNpb25zL3RlbXBsYXRlcy9leHRl bnNpb25zL3NxbC9wcm9wZXJ0aWVzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9leHRlbnNpb25z L3RlbXBsYXRlcy9leHRlbnNpb25zL3NxbC9wcm9wZXJ0aWVzLnNxbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNjUyNjc2Ci0tLSAv ZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL2V4dGVuc2lvbnMvdGVtcGxhdGVzL2V4 dGVuc2lvbnMvc3FsL3Byb3BlcnRpZXMuc3FsCkBAIC0wLDAgKzEsMTcgQEAK K3sjPT09PT09PT09PT09PT09PT09PUZldGNoIHByb3BlcnRpZXMgb2YgZWFj aCBleHRlbnNpb24gYnkgbmFtZSBvciBvaWQ9PT09PT09PT09PT09PT09PT09 I30KK1NFTEVDVAorICAgIHgub2lkIEFTIGVpZCwgcGdfZ2V0X3VzZXJieWlk KGV4dG93bmVyKSBBUyBvd25lciwKKyAgICB4LmV4dG5hbWUgQVMgbmFtZSwg bi5uc3BuYW1lIEFTIHNjaGVtYSwKKyAgICB4LmV4dHJlbG9jYXRhYmxlIEFT IHJlbG9jYXRhYmxlLCB4LmV4dHZlcnNpb24gQVMgdmVyc2lvbiwKKyAgICBl LmNvbW1lbnQKK0ZST00KKyAgICBwZ19leHRlbnNpb24geAorICAgIExFRlQg Sk9JTiBwZ19uYW1lc3BhY2UgbiBPTiB4LmV4dG5hbWVzcGFjZT1uLm9pZAor ICAgIEpPSU4gcGdfYXZhaWxhYmxlX2V4dGVuc2lvbnMoKSBlKG5hbWUsIGRl ZmF1bHRfdmVyc2lvbiwgY29tbWVudCkgT04geC5leHRuYW1lPWUubmFtZQor eyUtIGlmIGVpZCAlfQorIFdIRVJFIHgub2lkID0ge3tlaWR9fTo6aW50Cit7 JSBlbGlmIGVuYW1lICV9CisgV0hFUkUgeC5leHRuYW1lID0ge3tlbmFtZXxx dExpdGVyYWx9fTo6dGV4dAoreyUgZWxzZSAlfQorIE9SREVSIEJZIHguZXh0 bmFtZQoreyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9leHRlbnNp b25zL3RlbXBsYXRlcy9leHRlbnNpb25zL3NxbC9zY2hlbWFzLnNxbCBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9leHRlbnNpb25zL3RlbXBsYXRlcy9leHRlbnNpb25zL3NxbC9zY2hl bWFzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5i ZDQzZjA5Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2V4dGVuc2lvbnMv dGVtcGxhdGVzL2V4dGVuc2lvbnMvc3FsL3NjaGVtYXMuc3FsCkBAIC0wLDAg KzEsMyBAQAoreyM9PT09PT09PT09PT09PT09PT09ZmV0Y2ggYWxsIHNjaGVt YXM9PT09PT09PT09PT09PT09PT09PT09PT09PSN9CitTRUxFQ1QgbnNwbmFt ZSBBcyBzY2hlbWEgRlJPTSBwZ19uYW1lc3BhY2UKKyAgICBPUkRFUiBCWSBu c3BuYW1lCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvZXh0ZW5zaW9ucy90ZW1wbGF0 ZXMvZXh0ZW5zaW9ucy9zcWwvdXBkYXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9leHRlbnNp b25zL3RlbXBsYXRlcy9leHRlbnNpb25zL3NxbC91cGRhdGUuc3FsCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0Y2Q2MjYKLS0tIC9k ZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvZXh0ZW5zaW9ucy90ZW1wbGF0ZXMvZXh0 ZW5zaW9ucy9zcWwvdXBkYXRlLnNxbApAQCAtMCwwICsxLDEwIEBACit7IyA9 PT09PT09PT09PT09VXBkYXRlIGV4dGVuc2lvbiBzY2hlbWE9PT09PT09PT09 PT09ICN9Cit7JSBpZiBkYXRhLnNjaGVtYSBhbmQgZGF0YS5zY2hlbWEgIT0g b19kYXRhLnNjaGVtYSAlfQorQUxURVIgRVhURU5TSU9OIHt7IGNvbm58cXRJ ZGVudChvX2RhdGEubmFtZSkgfX0KKyAgICBTRVQgU0NIRU1BIHt7IGNvbm58 cXRJZGVudChkYXRhLnNjaGVtYSkgfX07Cit7JSBlbmRpZiAlfQoreyMgPT09 PT09PT09PT09PVVwZGF0ZSBleHRlbnNpb24gdmVyc2lvbj09PT09PT09PT09 PT0gI30KK3slIGlmIGRhdGEudmVyc2lvbiBhbmQgZGF0YS52ZXJzaW9uICE9 IG9fZGF0YS52ZXJzaW9uICV9CitBTFRFUiBFWFRFTlNJT04ge3sgY29ubnxx dElkZW50KG9fZGF0YS5uYW1lKSB9fQorICAgIFVQREFURSBUTyB7eyBjb25u fHF0SWRlbnQoZGF0YS52ZXJzaW9uKSB9fTsKK3slIGVuZGlmICV9Cg== --047d7bf0c29af39814052c6df5ed 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 --047d7bf0c29af39814052c6df5ed--