Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ag7bH-0001wK-U1 for pgadmin-hackers@arkaria.postgresql.org; Wed, 16 Mar 2016 09:18:44 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1ag7bH-00065u-9Y for pgadmin-hackers@arkaria.postgresql.org; Wed, 16 Mar 2016 09:18:43 +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 1ag7av-0005qc-4w for pgadmin-hackers@postgresql.org; Wed, 16 Mar 2016 09:18:21 +0000 Received: from mail-lb0-x234.google.com ([2a00:1450:4010:c04::234]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1ag7ao-0002Ch-3t for pgadmin-hackers@postgresql.org; Wed, 16 Mar 2016 09:18:19 +0000 Received: by mail-lb0-x234.google.com with SMTP id oe12so43851489lbc.0 for ; Wed, 16 Mar 2016 02:18:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc; bh=D/SQoLwCC1oNWHUR6Ih4Q+8YGaWV7hcJQSdmdWimNo4=; b=g1MepXwz3WSTNE00fk7Xza6hJ+eS9IP4Hbk3UX2BNmkKTohwEF89WSwqu8BfQxmpDq YQZXcdvxw/SCwOhKwRBQBbVPl/T9dNaMmfkxM//RJ+De7RVqp33Wn4ufxAczG5lKlBpU RyOSrYqgYf1WI4E9kcQ1jSjNkgtehRTg7kG/ZtzQAwLrhVqzQ5yHwBXgKx9GxJfMVNkn 2815UL7bviUOISju6wOFG/sYcvzKvryZbTn5gESw5vX5YIk3OYHHA81Q1mJtB45XoggM bkqyezUMTgBf744+9TQ82Bie2TCnEwo4SUlWCBRX3c+pvAI2qV33ufx+I7P0Ba/opoeG vYzA== 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:date :message-id:subject:from:to:cc; bh=D/SQoLwCC1oNWHUR6Ih4Q+8YGaWV7hcJQSdmdWimNo4=; b=fQUpAkFQbi5ekcer4tmk4+bU4KwfPbt1zsQR/CNv5rkVghSFpHrX0QrthVfJXlzDXM eOkxb9UTbkGHK4KOCPNKTe3PzKwnhc2ah0AJnyTDamoXMLXMYnc9NKm87YMp3uNE3Idu nS6spivy4HqrANvzavU+tBQKse5zDTJ/m4KW+ijB+ChWo0TA7vBR7V7NHDu85T86IHP5 wGbaXAprPrvtMGXOFnwLuJyCRVTyV7ri5bub94Y9zpM7xbj+JxE/YBOXr3SlctSAlM7a YZehlQqKHtao6uZni2APf9irtZTIqWS9BvY58UEfEUZGzVYZ0+xxnB9kUMnbmRSA0AH1 49YA== X-Gm-Message-State: AD7BkJIVUUE7NwnVI/wHcU4FlIr0rvU7MCxrMXup8Zrk7SDodQdJ8N69tZgUgPOpSAbc2flfPTOJL4FpV8WXFtwl MIME-Version: 1.0 X-Received: by 10.112.85.137 with SMTP id h9mr960927lbz.45.1458119891186; Wed, 16 Mar 2016 02:18:11 -0700 (PDT) Received: by 10.25.159.85 with HTTP; Wed, 16 Mar 2016 02:18:10 -0700 (PDT) In-Reply-To: References: Date: Wed, 16 Mar 2016 14:48:10 +0530 Message-ID: Subject: Re: pgAdmin4 PATCH: Domain Module From: Khushboo Vashi To: Dave Page Cc: pgadmin-hackers Content-Type: multipart/mixed; boundary=001a113473b627f935052e26fe91 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 --001a113473b627f935052e26fe91 Content-Type: multipart/alternative; boundary=001a113473b627f92e052e26fe8f --001a113473b627f92e052e26fe8f Content-Type: text/plain; charset=UTF-8 Hi, Please find the updated patch for the Domain Module. To test this, the Data-type Reader patch needs to be applied first. Also, please find in-line comments below. Thanks, Khushboo On Thu, Feb 25, 2016 at 7:00 PM, Dave Page wrote: > Per discussion with Khushboo, the patch at > http://www.postgresql.org/message-id/attachment/41939/schemas_macros_10_Feb_2.patch > is a pre-req for this. Updated comments below... > > On Thu, Feb 25, 2016 at 12:13 PM, Dave Page wrote: > >> Hi >> >> On Wed, Feb 24, 2016 at 9:24 AM, Khushboo Vashi < >> khushboo.vashi@enterprisedb.com> wrote: >> >>> Hi, >>> >>> I have updated the Domain module as below: >>> >>> - Used 'NodeByListControl' to get schemas, in domains.js file as >>> suggested by Ashesh to avoid code redundancy. >>> >>> - Applied *'Security Label Macro'* Patch (Implemented by Harshal) and >>> removed same changes from the Domain Patch. >>> To test Domain patch, 'Security Label Macro' patch must be applied >>> first as that is not committed yet. >>> >>> Please find attached Domain Module Patch. >>> >> >> Initial feedback: >> >> - Owner and schema should be allowed to be left blank (and then default >> to the current user/schema) >> > Done > - Length and Precision fields should only be enabled if appropriate for >> the data type. >> > Done > The above still apply. > > >> >> - SQL generation for new Domains doesn't work: >> > > This now works. > > >> >> - When adding constraints, I should be able to type directly into the >> grid. Expanding the row should be optional. >> > I have made the grid non-editable explicitly as the Check constraint control is multi-line control and right now there is no support in the grid for the multi-line control. > - The comment column on the constraints grid expands when the text reaches >> ~50% of the width. It should be a fixed size (and use 100% of the space >> available, less appropriate margins) >> > I have applied the size for the each header of the grid, but if the given input will be without space in the grid then it will expand. For this, we can make table layout fixed. So, please suggest, should I do that or not? > - Backend support checks should not special-case Slony schemas. >> >> Done > - 4 character indentation not used consistently in SQL templates. >> > Done > These still apply. > > >> >> - Error seen when saving a domain: "macros/schemas/security.macros" >> >> 016-02-25 11:55:10,728: INFO werkzeug: 127.0.0.1 - - [25/Feb/2016 >> 11:55:10] "GET >> /browser/domain/msql/1/1/24587/2200/?name=email&owner=postgres&basensp=public&description=This+is+an+email+data+type&basetype=text&typlen=&precision=&typdefault=&typnotnull=true&collname=&constraints=%5B%5D&seclabels=%5B%5D&_=1456401124386 >> HTTP/1.1" 500 - >> Traceback (most recent call last): >> File >> "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", >> line 1836, in __call__ >> return self.wsgi_app(environ, start_response) >> File >> "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", >> line 1820, in wsgi_app >> response = self.make_response(self.handle_exception(e)) >> File >> "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", >> line 1403, in handle_exception >> reraise(exc_type, exc_value, tb) >> File >> "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", >> line 1817, in wsgi_app >> response = self.full_dispatch_request() >> File >> "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", >> line 1477, in full_dispatch_request >> rv = self.handle_user_exception(e) >> File >> "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", >> line 1381, in handle_user_exception >> reraise(exc_type, exc_value, tb) >> File >> "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", >> line 1475, in full_dispatch_request >> rv = self.dispatch_request() >> File >> "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", >> line 1461, in dispatch_request >> return self.view_functions[rule.endpoint](**req.view_args) >> File >> "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/views.py", >> line 84, in view >> return self.dispatch_request(*args, **kwargs) >> File "/Users/dpage/git/pgadmin4/web/pgadmin/browser/utils.py", line >> 248, in dispatch_request >> return method(*args, **kwargs) >> File >> "/Users/dpage/git/pgadmin4/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/__init__.py", >> line 277, in wrap >> return f(*args, **kwargs) >> File >> "/Users/dpage/git/pgadmin4/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/__init__.py", >> line 232, in wrap >> return f(self, **kwargs) >> File >> "/Users/dpage/git/pgadmin4/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/__init__.py", >> line 700, in msql >> status=200 >> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/ajax.py", line 41, in >> make_json_response >> response=json.dumps(doc, cls=DataTypeJSONEncoder), >> File >> "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/simplejson/__init__.py", >> line 386, in dumps >> **kw).encode(obj) >> File >> "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/simplejson/encoder.py", >> line 269, in encode >> chunks = self.iterencode(o, _one_shot=True) >> File >> "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/simplejson/encoder.py", >> line 348, in iterencode >> return _iterencode(o, 0) >> File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/ajax.py", line 26, in >> default >> return json.JSONEncoder.default(self, obj) >> File >> "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/simplejson/encoder.py", >> line 246, in default >> raise TypeError(repr(o) + " is not JSON serializable") >> TypeError: TemplateNotFound() is not JSON serializable >> > > This issue is resolved. > > Additional issues: > > - We can add a comment to constraints (and view them), however they are > not saved. > > Done > - The domain is not created as a single SQL statement, but by creating a > domain over the base type, then adding constraints. Can this be done in one > query? > Done > - Reverse engineered SQL doesn't include the normal header and > commented-out drop statement. > Done > Thanks. > > -- > Dave Page > Blog: http://pgsnake.blogspot.com > Twitter: @pgsnake > > EnterpriseDB UK: http://www.enterprisedb.com > The Enterprise PostgreSQL Company > --001a113473b627f92e052e26fe8f Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi,

Please find the updated patch f= or the Domain Module.

To test this, the Data-type Reader = patch needs to be applied first.

Also, please find in-lin= e comments below.

Thanks,
Khushboo



On Thu, Feb 25, 2016 at 7:00 PM, Dave Page <dpage@pgadmin.org&g= t; wrote:
Per discussion with Khushboo, the patch at=C2=A0http://www.postgresql.org/message-id/attachment/419= 39/schemas_macros_10_Feb_2.patch is a pre-req for this. Updated comment= s below...

On Thu, Feb 25, 2016 at 12:13 PM, Dave Page <dpage@pgadmin.o= rg> wrote:
Hi

On Wed, Feb 24, 2016 at 9:24 AM, Khushboo Vashi <= khushboo.vashi@enterprisedb.com> wrote:
Hi,

I have updated the Domain module as below:

- Used 'NodeByListControl' to get sche= mas, in domains.js file as suggested by Ashesh to avoid code redundancy.
- Applied 'Security Label Macro'=C2=A0 Patch (Imp= lemented by Harshal) and removed same changes from the Domain Patch.
=C2=A0 To test Domain patch, 'Security Label Macr= o' patch must be applied first as that is not committed yet.
<= div>
Please find attached Domain Module Patch.

Initial feedback:

- Owner and schema should be allowed to be left blank (and then de= fault to the current user/schema)
Do= ne
<= div class=3D"gmail_extra">
- Length and Prec= ision fields should only be enabled if appropriate for the data type.
=
<= span style=3D"color:rgb(0,0,255)">Done
The above still apply.
=C2=A0
<= br>
- SQL generation for new Domains doesn't work:

This now works.
<= span class=3D"">
=C2=A0

- When adding constraints, I should be able to type= directly into the grid. Expanding the row should be optional.
<= /div>
I have made the grid non-editable explicitly as = the Check constraint control is multi-line control and right now there is n= o support in the grid for the multi-line control.
<= div class=3D"gmail_quote">
- The comment column on the constraints grid= expands when the text reaches ~50% of the width. It should be a fixed size= (and use 100% of the space available, less appropriate margins)
I have applied the size for the each header of= the grid, but if the given input will be without space in the grid then it= will expand. For this, we can make table layout fixed. So, please suggest,= should I do that or not?
- Backend support checks should not special-case Slony schemas.

Done
- 4 character indentation n= ot used consistently in SQL templates.
=
Done=C2=A0
These still apply.
=C2=A0

- Error see= n when saving a domain: "macros/schemas/security.macros"

016-02-25 11:55:10,728: INFO werkzeug: 127.0.= 0.1 - - [25/Feb/2016 11:55:10] "GET /browser/domain/msql/1/1/24587/220= 0/?name=3Demail&owner=3Dpostgres&basensp=3Dpublic&description= =3DThis+is+an+email+data+type&basetype=3Dtext&typlen=3D&precisi= on=3D&typdefault=3D&typnotnull=3Dtrue&collname=3D&constrain= ts=3D%5B%5D&seclabels=3D%5B%5D&_=3D1456401124386 HTTP/1.1" 500= -
Traceback (most recent call last):
=C2=A0 File "= ;/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.p= y", line 1836, in __call__
=C2=A0 =C2=A0 return self.wsgi_ap= p(environ, start_response)
=C2=A0 File "/Users/dpage/.virtua= lenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", line 1820, i= n wsgi_app
=C2=A0 =C2=A0 response =3D self.make_response(self.han= dle_exception(e))
=C2=A0 File "/Users/dpage/.virtualenvs/pga= dmin4/lib/python2.7/site-packages/flask/app.py", line 1403, in handle_= exception
=C2=A0 =C2=A0 reraise(exc_type, exc_value, tb)
=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-p= ackages/flask/app.py", line 1817, in wsgi_app
=C2=A0 =C2=A0 = response =3D self.full_dispatch_request()
=C2=A0 File "/User= s/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py"= ;, line 1477, in full_dispatch_request
=C2=A0 =C2=A0 rv =3D self.= handle_user_exception(e)
=C2=A0 File "/Users/dpage/.virtuale= nvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", line 1381, in = handle_user_exception
=C2=A0 =C2=A0 reraise(exc_type, exc_value, = tb)
=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/pyth= on2.7/site-packages/flask/app.py", line 1475, in full_dispatch_request=
=C2=A0 =C2=A0 rv =3D self.dispatch_request()
=C2=A0 Fi= le "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/fla= sk/app.py", line 1461, in dispatch_request
=C2=A0 =C2=A0 ret= urn self.view_functions[rule.endpoint](**req.view_args)
=C2=A0 Fi= le "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/fla= sk/views.py", line 84, in view
=C2=A0 =C2=A0 return self.dis= patch_request(*args, **kwargs)
=C2=A0 File "/Users/dpage/git= /pgadmin4/web/pgadmin/browser/utils.py", line 248, in dispatch_request=
=C2=A0 =C2=A0 return method(*args, **kwargs)
=C2=A0 Fi= le "/Users/dpage/git/pgadmin4/web/pgadmin/browser/server_groups/server= s/databases/schemas/domains/__init__.py", line 277, in wrap
= =C2=A0 =C2=A0 return f(*args, **kwargs)
=C2=A0 File "/Users/= dpage/git/pgadmin4/web/pgadmin/browser/server_groups/servers/databases/sche= mas/domains/__init__.py", line 232, in wrap
=C2=A0 =C2=A0 re= turn f(self, **kwargs)
=C2=A0 File "/Users/dpage/git/pgadmin= 4/web/pgadmin/browser/server_groups/servers/databases/schemas/domains/__ini= t__.py", line 700, in msql
=C2=A0 =C2=A0 status=3D200
<= div>=C2=A0 File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/ajax.py&q= uot;, line 41, in make_json_response
=C2=A0 =C2=A0 response=3Djso= n.dumps(doc, cls=3DDataTypeJSONEncoder),
=C2=A0 File "/Users= /dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/simplejson/__init_= _.py", line 386, in dumps
=C2=A0 =C2=A0 **kw).encode(obj)
=C2=A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/= site-packages/simplejson/encoder.py", line 269, in encode
= =C2=A0 =C2=A0 chunks =3D self.iterencode(o, _one_shot=3DTrue)
=C2= =A0 File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packag= es/simplejson/encoder.py", line 348, in iterencode
=C2=A0 = =C2=A0 return _iterencode(o, 0)
=C2=A0 File "/Users/dpage/gi= t/pgadmin4/web/pgadmin/utils/ajax.py", line 26, in default
= =C2=A0 =C2=A0 return json.JSONEncoder.default(self, obj)
=C2=A0 F= ile "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/si= mplejson/encoder.py", line 246, in default
=C2=A0 =C2=A0 rai= se TypeError(repr(o) + " is not JSON serializable")
Typ= eError: TemplateNotFound() is not JSON serializable=C2=A0
=

This issue is resolved.<= /div>

Additional issues:

- We c= an add a comment to constraints (and view them), however they are not saved= .

Done=C2=A0
- The domain is not created as a single SQ= L statement, but by creating a domain over the base type, then adding const= raints. Can this be done in one query?
=
Done=C2=A0
- Reverse engineered SQL doesn&= #39;t include the normal header and commented-out drop statement.
Done=C2= =A0
Thanks.
=

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

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

--001a113473b627f92e052e26fe8f-- --001a113473b627f935052e26fe91 Content-Type: text/x-patch; charset=US-ASCII; name="domains_ver_4.patch" Content-Disposition: attachment; filename="domains_ver_4.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ilumxddr0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvX19pbml0X18u cHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL19faW5pdF9fLnB5Cm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjMjczZTQKLS0tIC9k ZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL19faW5pdF9f LnB5CkBAIC0wLDAgKzEsODA2IEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisj CisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTYsIFRoZSBwZ0FkbWluIERl dmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1 bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworCisiIiJJbXBsZW1lbnRzIHRoZSBEb21haW4g Tm9kZS4iIiIKKworaW1wb3J0IGpzb24KK2Zyb20gZmxhc2sgaW1wb3J0IHJl bmRlcl90ZW1wbGF0ZSwgbWFrZV9yZXNwb25zZSwgcmVxdWVzdCwganNvbmlm eQorZnJvbSBmbGFzay5leHQuYmFiZWwgaW1wb3J0IGdldHRleHQKK2Zyb20g cGdhZG1pbi51dGlscy5hamF4IGltcG9ydCBtYWtlX2pzb25fcmVzcG9uc2Us IFwKKyAgICBtYWtlX3Jlc3BvbnNlIGFzIGFqYXhfcmVzcG9uc2UsIGludGVy bmFsX3NlcnZlcl9lcnJvcgorZnJvbSBwZ2FkbWluLmJyb3dzZXIudXRpbHMg aW1wb3J0IFBHQ2hpbGROb2RlVmlldworZnJvbSBwZ2FkbWluLmJyb3dzZXIu Y29sbGVjdGlvbiBpbXBvcnQgQ29sbGVjdGlvbk5vZGVNb2R1bGUKK2ltcG9y dCBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFi YXNlcy5zY2hlbWFzIGFzIHNjaGVtYXMKK2Zyb20gcGdhZG1pbi51dGlscy5h amF4IGltcG9ydCBwcmVjb25kaXRpb25fcmVxdWlyZWQKK2Zyb20gcGdhZG1p bi51dGlscy5kcml2ZXIgaW1wb3J0IGdldF9kcml2ZXIKK2Zyb20gY29uZmln IGltcG9ydCBQR19ERUZBVUxUX0RSSVZFUgorZnJvbSBwZ2FkbWluLmJyb3dz ZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy5zY2hlbWFzLnV0 aWxzIGltcG9ydCBcCisgICAgU2NoZW1hQ2hpbGRNb2R1bGUsIERhdGFUeXBl UmVhZGVyCitmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNl cnZlcnMuZGF0YWJhc2VzLnV0aWxzIGltcG9ydCBcCisgICAgcGFyc2Vfc2Vj X2xhYmVsc19mcm9tX2RiCitmcm9tIGZ1bmN0b29scyBpbXBvcnQgd3JhcHMK KworCitjbGFzcyBEb21haW5Nb2R1bGUoU2NoZW1hQ2hpbGRNb2R1bGUpOgor ICAgICIiIgorICAgIGNsYXNzIERvbWFpbk1vZHVsZShTY2hlbWFDaGlsZE1v ZHVsZSk6CisKKyAgICAgICAgVGhpcyBjbGFzcyByZXByZXNlbnRzIFRoZSBE b21haW4gTW9kdWxlLgorCisgICAgTWV0aG9kczoKKyAgICAtLS0tLS0tCisg ICAgKiBfX2luaXRfXygqYXJncywgKiprd2FyZ3MpCisgICAgICAtIEluaXRp YWxpemUgdGhlIERvbWFpbiBNb2R1bGUuCisKKyAgICAqIGdldF9ub2Rlcyhn aWQsIHNpZCwgZGlkLCBzY2lkKQorICAgICAgLSBHZW5lcmF0ZSB0aGUgZG9t YWluIGNvbGxlY3Rpb24gbm9kZS4KKworICAgICogc2NyaXB0X2xvYWQoKQor ICAgICAgLSBMb2FkIHRoZSBtb2R1bGUgc2NyaXB0IGZvciBkb21haW4sIHdo ZW4gc2NoZW1hIG5vZGUgaXMKKyAgICAgICAgaW5pdGlhbGl6ZWQuCisgICAg IiIiCisKKyAgICBOT0RFX1RZUEUgPSAnZG9tYWluJworICAgIENPTExFQ1RJ T05fTEFCRUwgPSBnZXR0ZXh0KCJEb21haW5zIikKKworICAgIGRlZiBfX2lu aXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBzdXBlcihE b21haW5Nb2R1bGUsIHNlbGYpLl9faW5pdF9fKCphcmdzLCAqKmt3YXJncykK KyAgICAgICAgc2VsZi5taW5fdmVyID0gTm9uZQorICAgICAgICBzZWxmLm1h eF92ZXIgPSBOb25lCisKKyAgICBkZWYgZ2V0X25vZGVzKHNlbGYsIGdpZCwg c2lkLCBkaWQsIHNjaWQpOgorICAgICAgICAiIiIKKyAgICAgICAgR2VuZXJh dGUgdGhlIGRvbWFpbiBjb2xsZWN0aW9uIG5vZGUuCisgICAgICAgICIiIgor ICAgICAgICB5aWVsZCBzZWxmLmdlbmVyYXRlX2Jyb3dzZXJfY29sbGVjdGlv bl9ub2RlKHNjaWQpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgc2NyaXB0 X2xvYWQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBMb2FkIHRoZSBt b2R1bGUgc2NyaXB0IGZvciBkb21haW4sIHdoZW4gc2NoZW1hIG5vZGUgaXMK KyAgICAgICAgaW5pdGlhbGl6ZWQuCisgICAgICAgICIiIgorICAgICAgICBy ZXR1cm4gc2NoZW1hcy5TY2hlbWFNb2R1bGUuTk9ERV9UWVBFCisKKworYmx1 ZXByaW50ID0gRG9tYWluTW9kdWxlKF9fbmFtZV9fKQorCisKK2NsYXNzIERv bWFpblZpZXcoUEdDaGlsZE5vZGVWaWV3LCBEYXRhVHlwZVJlYWRlcik6Cisg ICAgIiIiCisgICAgY2xhc3MgRG9tYWluVmlldworCisgICAgVGhpcyBjbGFz cyBpbmhlcml0cyBQR0NoaWxkTm9kZVZpZXcgdG8gZ2V0IHRoZSBkaWZmZXJl bnQgcm91dGVzIGZvcgorICAgIHRoZSBtb2R1bGUuIEFsc28sIGluaGVyaXRz IERhdGFUeXBlUmVhZGVyIHRvIGdldCBkYXRhIHR5cGVzLgorCisgICAgVGhl IGNsYXNzIGlzIHJlc3BvbnNpYmxlIHRvIENyZWF0ZSwgUmVhZCwgVXBkYXRl IGFuZCBEZWxldGUgb3BlcmF0aW9ucyBmb3IKKyAgICB0aGUgRG9tYWluLgor CisgICAgTWV0aG9kczoKKyAgICAtLS0tLS0tCisgICAgKiB2YWxpZGF0ZV9y ZXF1ZXN0KGYpOgorICAgICAgLSBXb3JrcyBhcyBhIGRlY29yYXRvci4KKyAg ICAgICAgVmFsaWRhdGluZyByZXF1ZXN0IG9uIHRoZSByZXF1ZXN0IG9mIGNy ZWF0ZSwgdXBkYXRlIGFuZCBtb2RpZmllZCBTUUwuCisKKyAgICAqIG1vZHVs ZV9qcygpOgorICAgICAgLSBMb2FkIEpTIGZpbGUgKGRvbWFpbnMuanMpIGZv ciB0aGlzIG1vZHVsZS4KKworICAgICogY2hlY2tfcHJlY29uZGl0aW9uKGYp OgorICAgICAgLSBXb3JrcyBhcyBhIGRlY29yYXRvci4KKyAgICAgIC0gIENo ZWNrcyBkYXRhYmFzZSBjb25uZWN0aW9uIHN0YXR1cy4KKyAgICAgIC0gIEF0 dGFjaCBjb25uZWN0aW9uIG9iamVjdCBhbmQgdGVtcGxhdGUgcGF0aC4KKwor ICAgICogbGlzdChnaWQsIHNpZCwgZGlkLCBzY2lkLCBkb2lkKToKKyAgICAg IC0gTGlzdCB0aGUgRG9tYWlucy4KKworICAgICogbm9kZXMoZ2lkLCBzaWQs IGRpZCwgc2NpZCk6CisgICAgICAtIFJldHVybnMgYWxsIHRoZSBEb21haW5z IHRvIGdlbmVyYXRlIE5vZGVzIGluIHRoZSBicm93c2VyLgorCisgICAgKiBw cm9wZXJ0aWVzKGdpZCwgc2lkLCBkaWQsIHNjaWQsIGRvaWQpOgorICAgICAg LSBSZXR1cm5zIHRoZSBEb21haW4gcHJvcGVydGllcy4KKworICAgICogZ2V0 X2NvbGxhdGlvbnMoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZG9pZD1Ob25lKToK KyAgICAgIC0gUmV0dXJucyBDb2xsYXRpb25zLgorCisgICAgKiBjcmVhdGUo Z2lkLCBzaWQsIGRpZCwgc2NpZCk6CisgICAgICAtIENyZWF0ZXMgYSBuZXcg RG9tYWluIG9iamVjdC4KKworICAgICogdXBkYXRlKGdpZCwgc2lkLCBkaWQs IHNjaWQsIGRvaWQpOgorICAgICAgLSBVcGRhdGVzIHRoZSBEb21haW4gb2Jq ZWN0LgorCisgICAgKiBkZWxldGUoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZG9p ZCk6CisgICAgICAtIERyb3BzIHRoZSBEb21haW4gb2JqZWN0LgorCisgICAg KiBzcWwoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZG9pZD1Ob25lKToKKyAgICAg IC0gUmV0dXJucyB0aGUgU1FMIGZvciB0aGUgRG9tYWluIG9iamVjdC4KKwor ICAgICogbXNxbChnaWQsIHNpZCwgZGlkLCBzY2lkLCBkb2lkPU5vbmUpOgor ICAgICAgLSBSZXR1cm5zIHRoZSBtb2RpZmllZCBTUUwuCisKKyAgICAqIGdl dF9zcWwoZ2lkLCBzaWQsIGRhdGEsIHNjaWQsIGRvaWQ9Tm9uZSk6CisgICAg ICAtIEdlbmVyYXRlcyB0aGUgU1FMIHN0YXRlbWVudHMgdG8gY3JlYXRlL3Vw ZGF0ZSB0aGUgRG9tYWluIG9iamVjdC4KKworICAgICogZGVwZW5kZW50cyhn aWQsIHNpZCwgZGlkLCBzY2lkLCBkb2lkKToKKyAgICAgIC0gUmV0dXJucyB0 aGUgZGVwZW5kZW50cyBmb3IgdGhlIERvbWFpbiBvYmplY3QuCisKKyAgICAq IGRlcGVuZGVuY2llcyhnaWQsIHNpZCwgZGlkLCBzY2lkLCBkb2lkKToKKyAg ICAgIC0gUmV0dXJucyB0aGUgZGVwZW5kZW5jaWVzIGZvciB0aGUgRG9tYWlu IG9iamVjdC4KKworICAgICogdHlwZXMoZ2lkLCBzaWQsIGRpZCwgc2NpZCwg Zm5pZD1Ob25lKToKKyAgICAgIC0gUmV0dXJucyBEYXRhIFR5cGVzLgorICAg ICIiIgorCisgICAgbm9kZV90eXBlID0gYmx1ZXByaW50Lm5vZGVfdHlwZQor CisgICAgcGFyZW50X2lkcyA9IFsKKyAgICAgICAgeyd0eXBlJzogJ2ludCcs ICdpZCc6ICdnaWQnfSwKKyAgICAgICAgeyd0eXBlJzogJ2ludCcsICdpZCc6 ICdzaWQnfSwKKyAgICAgICAgeyd0eXBlJzogJ2ludCcsICdpZCc6ICdkaWQn fSwKKyAgICAgICAgeyd0eXBlJzogJ2ludCcsICdpZCc6ICdzY2lkJ30KKyAg ICBdCisgICAgaWRzID0gWworICAgICAgICB7J3R5cGUnOiAnaW50JywgJ2lk JzogJ2RvaWQnfQorICAgIF0KKworICAgIG9wZXJhdGlvbnMgPSBkaWN0KHsK KyAgICAgICAgJ29iaic6IFsKKyAgICAgICAgICAgIHsnZ2V0JzogJ3Byb3Bl cnRpZXMnLCAnZGVsZXRlJzogJ2RlbGV0ZScsICdwdXQnOiAndXBkYXRlJ30s CisgICAgICAgICAgICB7J2dldCc6ICdsaXN0JywgJ3Bvc3QnOiAnY3JlYXRl J30KKyAgICAgICAgXSwKKyAgICAgICAgJ2RlbGV0ZSc6IFt7J2RlbGV0ZSc6 ICdkZWxldGUnfV0sCisgICAgICAgICdjaGlsZHJlbic6IFt7J2dldCc6ICdj aGlsZHJlbid9XSwKKyAgICAgICAgJ25vZGVzJzogW3snZ2V0JzogJ25vZGUn fSwgeydnZXQnOiAnbm9kZXMnfV0sCisgICAgICAgICdzcWwnOiBbeydnZXQn OiAnc3FsJ31dLAorICAgICAgICAnbXNxbCc6IFt7J2dldCc6ICdtc3FsJ30s IHsnZ2V0JzogJ21zcWwnfV0sCisgICAgICAgICdzdGF0cyc6IFt7J2dldCc6 ICdzdGF0aXN0aWNzJ31dLAorICAgICAgICAnZGVwZW5kZW5jeSc6IFt7J2dl dCc6ICdkZXBlbmRlbmNpZXMnfV0sCisgICAgICAgICdkZXBlbmRlbnQnOiBb eydnZXQnOiAnZGVwZW5kZW50cyd9XSwKKyAgICAgICAgJ21vZHVsZS5qcyc6 IFt7fSwge30sIHsnZ2V0JzogJ21vZHVsZV9qcyd9XSwKKyAgICAgICAgJ2dl dF90eXBlcyc6IFt7J2dldCc6ICd0eXBlcyd9LCB7J2dldCc6ICd0eXBlcyd9 XSwKKyAgICAgICAgJ2dldF9jb2xsYXRpb25zJzogWworICAgICAgICAgICAg eydnZXQnOiAnZ2V0X2NvbGxhdGlvbnMnfSwKKyAgICAgICAgICAgIHsnZ2V0 JzogJ2dldF9jb2xsYXRpb25zJ30KKyAgICAgICAgXQorICAgIH0pCisKKyAg ICBkZWYgdmFsaWRhdGVfcmVxdWVzdChmKToKKyAgICAgICAgIiIiCisgICAg ICAgIFdvcmtzIGFzIGEgZGVjb3JhdG9yLgorICAgICAgICBWYWxpZGF0aW5n IHJlcXVlc3Qgb24gdGhlIHJlcXVlc3Qgb2YgY3JlYXRlLCB1cGRhdGUgYW5k IG1vZGlmaWVkIFNRTC4KKworICAgICAgICBSZXF1aXJlZCBBcmdzOgorICAg ICAgICAgICAgICAgICAgICBuYW1lOiBOYW1lIG9mIHRoZSBEb21haW4KKyAg ICAgICAgICAgICAgICAgICAgb3duZXI6IERvbWFpbiBPd25lcgorICAgICAg ICAgICAgICAgICAgICBiYXNlbnNwOiBTY2hlbWEgTmFtZQorICAgICAgICAg ICAgICAgICAgICBiYXNldHlwZTogRGF0YSBUeXBlIG9mIHRoZSBEb21haW4K KworICAgICAgICBBYm92ZSBib3RoIHRoZSBhcmd1bWVudHMgd2lsbCBub3Qg YmUgdmFsaWRhdGVkIGluIHRoZSB1cGRhdGUgYWN0aW9uLgorICAgICAgICAi IiIKKworICAgICAgICBAd3JhcHMoZikKKyAgICAgICAgZGVmIHdyYXAoc2Vs ZiwgKiprd2FyZ3MpOgorCisgICAgICAgICAgICBkYXRhID0ge30KKyAgICAg ICAgICAgIGlmIHJlcXVlc3QuZGF0YToKKyAgICAgICAgICAgICAgICByZXEg PSBqc29uLmxvYWRzKHJlcXVlc3QuZGF0YS5kZWNvZGUoKSkKKyAgICAgICAg ICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmVxID0gcmVxdWVzdC5hcmdz IG9yIHJlcXVlc3QuZm9ybQorCisgICAgICAgICAgICBpZiAnZG9pZCcgbm90 IGluIGt3YXJnczoKKyAgICAgICAgICAgICAgICByZXF1aXJlZF9hcmdzID0g WworICAgICAgICAgICAgICAgICAgICAnbmFtZScsCisgICAgICAgICAgICAg ICAgICAgICdiYXNldHlwZScKKyAgICAgICAgICAgICAgICBdCisKKyAgICAg ICAgICAgICAgICBmb3IgYXJnIGluIHJlcXVpcmVkX2FyZ3M6CisgICAgICAg ICAgICAgICAgICAgIGlmIGFyZyBub3QgaW4gcmVxIG9yIHJlcVthcmddID09 ICcnOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNv bl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0 dXM9NDEwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M9 MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcm1zZz1nZXR0 ZXh0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ291bGRu J3QgZmluZCB0aGUgcmVxdWlyZWQgcGFyYW1ldGVyIFwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKCVzKS4iICUgYXJnCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICAgICAg KQorCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbGlzdF9w YXJhbXMgPSBbXQorICAgICAgICAgICAgICAgIGlmIHJlcXVlc3QubWV0aG9k ID09ICdHRVQnOgorICAgICAgICAgICAgICAgICAgICBsaXN0X3BhcmFtcyA9 IFsnY29uc3RyYWludHMnLCAnc2VjbGFiZWxzJ10KKworICAgICAgICAgICAg ICAgIGZvciBrZXkgaW4gcmVxOgorICAgICAgICAgICAgICAgICAgICBpZiBr ZXkgaW4gbGlzdF9wYXJhbXMgYW5kIHJlcVtrZXldICE9ICcnIFwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBhbmQgcmVxW2tleV0gaXMgbm90IE5v bmU6CisgICAgICAgICAgICAgICAgICAgICAgICAjIENvdmVydHMgc3RyaW5n IGludG8gcHl0aG9uIGxpc3QgYXMgZXhwZWN0ZWQuCisgICAgICAgICAgICAg ICAgICAgICAgICBkYXRhW2tleV0gPSBqc29uLmxvYWRzKHJlcVtrZXldKQor ICAgICAgICAgICAgICAgICAgICBlbGlmIGtleSA9PSAndHlwbm90bnVsbCc6 CisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhW2tleV0gPSBUcnVlIGlm IHJlcVtrZXldID09ICd0cnVlJyBvciByZXFba2V5XSBpc1wKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFRydWUgZWxzZVwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoRmFsc2UgaWYgcmVxW2tleV0gPT0gJ2ZhbHNlJyBvciByZXFb a2V5XSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEZhbHNlIGVsc2UgJycpCisgICAg ICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAg ICBkYXRhW2tleV0gPSByZXFba2V5XQorCisgICAgICAgICAgICBleGNlcHQg RXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVy bmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCisKKyAgICAgICAg ICAgIHNlbGYucmVxdWVzdCA9IGRhdGEKKyAgICAgICAgICAgIHJldHVybiBm KHNlbGYsICoqa3dhcmdzKQorCisgICAgICAgIHJldHVybiB3cmFwCisKKyAg ICBkZWYgbW9kdWxlX2pzKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAg TG9hZCBKUyBmaWxlIChkb21haW5zLmpzKSBmb3IgdGhpcyBtb2R1bGUuCisg ICAgICAgICIiIgorICAgICAgICByZXR1cm4gbWFrZV9yZXNwb25zZSgKKyAg ICAgICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAi ZG9tYWlucy9qcy9kb21haW5zLmpzIiwKKyAgICAgICAgICAgICAgICBfPWdl dHRleHQKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAyMDAsIHsnQ29u dGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCd9CisgICAg ICAgICkKKworICAgIGRlZiBjaGVja19wcmVjb25kaXRpb24oZik6CisgICAg ICAgICIiIgorICAgICAgICBXb3JrcyBhcyBhIGRlY29yYXRvci4KKyAgICAg ICAgQ2hlY2tzIGRhdGFiYXNlIGNvbm5lY3Rpb24gc3RhdHVzLgorICAgICAg ICBBdHRhY2ggY29ubmVjdGlvbiBvYmplY3QgYW5kIHRlbXBsYXRlIHBhdGgu CisgICAgICAgICIiIgorICAgICAgICBAd3JhcHMoZikKKyAgICAgICAgZGVm IHdyYXAoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgIHNlbGYgPSBh cmdzWzBdCisgICAgICAgICAgICBkcml2ZXIgPSBnZXRfZHJpdmVyKFBHX0RF RkFVTFRfRFJJVkVSKQorICAgICAgICAgICAgc2VsZi5tYW5hZ2VyID0gZHJp dmVyLmNvbm5lY3Rpb25fbWFuYWdlcihrd2FyZ3NbJ3NpZCddKQorICAgICAg ICAgICAgIyBHZXQgZGF0YWJhc2UgY29ubmVjdGlvbgorICAgICAgICAgICAg c2VsZi5jb25uID0gc2VsZi5tYW5hZ2VyLmNvbm5lY3Rpb24oZGlkPWt3YXJn c1snZGlkJ10pCisgICAgICAgICAgICBzZWxmLnF0SWRlbnQgPSBkcml2ZXIu cXRJZGVudAorCisgICAgICAgICAgICBpZiBub3Qgc2VsZi5jb25uLmNvbm5l Y3RlZCgpOgorICAgICAgICAgICAgICAgIHJldHVybiBwcmVjb25kaXRpb25f cmVxdWlyZWQoCisgICAgICAgICAgICAgICAgICAgIGdldHRleHQoIkNvbm5l Y3Rpb24gdG8gdGhlIHNlcnZlciBoYXMgYmVlbiBsb3N0ISIpCisgICAgICAg ICAgICAgICAgKQorCisgICAgICAgICAgICB2ZXIgPSBzZWxmLm1hbmFnZXIu dmVyc2lvbgorICAgICAgICAgICAgc2VydmVyX3R5cGUgPSBzZWxmLm1hbmFn ZXIuc2VydmVyX3R5cGUKKworICAgICAgICAgICAgIyB3ZSB3aWxsIHNldCB0 ZW1wbGF0ZSBwYXRoIGZvciBzcWwgc2NyaXB0cworICAgICAgICAgICAgaWYg dmVyID49IDkwMjAwOgorICAgICAgICAgICAgICAgIHNlbGYudGVtcGxhdGVf cGF0aCA9ICdkb21haW5zL3NxbC85LjJfcGx1cycKKyAgICAgICAgICAgIGVs aWYgdmVyID49IDkwMTAwOgorICAgICAgICAgICAgICAgIHNlbGYudGVtcGxh dGVfcGF0aCA9ICdkb21haW5zL3NxbC85LjFfcGx1cycKKworICAgICAgICAg ICAgcmV0dXJuIGYoKmFyZ3MsICoqa3dhcmdzKQorCisgICAgICAgIHJldHVy biB3cmFwCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIGxp c3Qoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCk6CisgICAgICAgICIiIgor ICAgICAgICBMaXN0IHRoZSBEb21haW5zLgorCisgICAgICAgIEFyZ3M6Cisg ICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJZAorICAgICAgICAgICAg c2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAgICAgIGRpZDogRGF0YWJhc2UgSWQK KyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJZAorICAgICAgICAiIiIKKwor ICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYu dGVtcGxhdGVfcGF0aCwgJ25vZGUuc3FsJ10pLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2NpZD1zY2lkKQorICAgICAgICBzdGF0dXMsIHJl cyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorCisgICAgICAgIGlm IG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2Vy dmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKyAgICAgICAgcmV0dXJuIGFqYXhf cmVzcG9uc2UoCisgICAgICAgICAgICByZXNwb25zZT1yZXNbJ3Jvd3MnXSwK KyAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgKQorCisgICAgQGNo ZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBub2RlcyhzZWxmLCBnaWQsIHNp ZCwgZGlkLCBzY2lkKToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybnMg YWxsIHRoZSBEb21haW5zIHRvIGdlbmVyYXRlIE5vZGVzIGluIHRoZSBicm93 c2VyLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZl ciBHcm91cCBJZAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQKKyAgICAg ICAgICAgIGRpZDogRGF0YWJhc2UgSWQKKyAgICAgICAgICAgIHNjaWQ6IFNj aGVtYSBJZAorICAgICAgICAiIiIKKworICAgICAgICByZXMgPSBbXQorICAg ICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVt cGxhdGVfcGF0aCwgJ25vZGUuc3FsJ10pLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2NpZD1zY2lkKQorICAgICAgICBzdGF0dXMsIHJzZXQg PSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKKyAgICAgICAgaWYg bm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2 ZXJfZXJyb3IoZXJyb3Jtc2c9cnNldCkKKworICAgICAgICBmb3Igcm93IGlu IHJzZXRbJ3Jvd3MnXToKKyAgICAgICAgICAgIHJlcy5hcHBlbmQoCisgICAg ICAgICAgICAgICAgc2VsZi5ibHVlcHJpbnQuZ2VuZXJhdGVfYnJvd3Nlcl9u b2RlKAorICAgICAgICAgICAgICAgICAgICByb3dbJ29pZCddLAorICAgICAg ICAgICAgICAgICAgICBzY2lkLAorICAgICAgICAgICAgICAgICAgICByb3db J25hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAgaWNvbj0iaWNvbi1kb21h aW4iCisgICAgICAgICAgICAgICAgKSkKKworICAgICAgICByZXR1cm4gbWFr ZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgZGF0YT1yZXMsCisgICAg ICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICkKKworICAgIEBjaGVja19w cmVjb25kaXRpb24KKyAgICBkZWYgcHJvcGVydGllcyhzZWxmLCBnaWQsIHNp ZCwgZGlkLCBzY2lkLCBkb2lkKToKKyAgICAgICAgIiIiCisgICAgICAgIFJl dHVybnMgdGhlIERvbWFpbiBwcm9wZXJ0aWVzLgorCisgICAgICAgIEFyZ3M6 CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJZAorICAgICAgICAg ICAgc2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAgICAgIGRpZDogRGF0YWJhc2Ug SWQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJZAorICAgICAgICAgICAg ZG9pZDogRG9tYWluIElkCisgICAgICAgICIiIgorCisgICAgICAgIFNRTCA9 IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRo LCAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzY2lkPXNjaWQsIGRvaWQ9ZG9pZCkKKyAgICAgICAgc3RhdHVz LCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAgICAg aWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgIGRhdGEgPSBy ZXNbJ3Jvd3MnXVswXQorCisgICAgICAgICMgR2V0IFR5cGUgTGVuZ3RoIGFu ZCBQcmVjaXNpb24KKyAgICAgICAgZGF0YS51cGRhdGUoc2VsZi5fcGFyc2Vf dHlwZShkYXRhWydmdWxsdHlwZSddKSkKKworICAgICAgICAjIEdldCBEb21h aW4gQ29uc3RyYWludHMKKyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRl KCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9jb25zdHJhaW50cy5z cWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2lkPWRv aWQpCisgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVf ZGljdChTUUwpCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAg ICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykK KworICAgICAgICBkYXRhWydjb25zdHJhaW50cyddID0gcmVzWydyb3dzJ10K KworICAgICAgICAjIEdldCBmb3JtYXR0ZWQgU2VjdXJpdHkgTGFiZWxzCisg ICAgICAgIGlmICdzZWNsYWJlbHMnIGluIGRhdGE6CisgICAgICAgICAgICBk YXRhLnVwZGF0ZShwYXJzZV9zZWNfbGFiZWxzX2Zyb21fZGIoZGF0YVsnc2Vj bGFiZWxzJ10pKQorCisgICAgICAgICMgU2V0IFN5c3RlbSBEb21haW4gU3Rh dHVzCisgICAgICAgIGRhdGFbJ3N5c2RvbWFpbiddID0gRmFsc2UKKyAgICAg ICAgaWYgZG9pZCA8PSBzZWxmLm1hbmFnZXIuZGJfaW5mb1tkaWRdWydkYXRs YXN0c3lzb2lkJ106CisgICAgICAgICAgICBkYXRhWydzeXNkb21haW4nXSA9 IFRydWUKKworICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZSgKKyAgICAg ICAgICAgIHJlc3BvbnNlPWRhdGEsCisgICAgICAgICAgICBzdGF0dXM9MjAw CisgICAgICAgICkKKworICAgIGRlZiBfcGFyc2VfdHlwZShzZWxmLCBiYXNl dHlwZSk6CisgICAgICAgICIiIgorICAgICAgICBSZXR1cm5zIFR5cGUgYW5k IERhdGEgVHlwZSBmcm9tIHRoZSBiYXNldHlwZS4KKyAgICAgICAgIiIiCisg ICAgICAgIHR5cF9sZW4gPSAnJworICAgICAgICB0eXBfcHJlY2lzaW9uID0g JycKKworICAgICAgICAjIFRoZSBMZW5ndGggYW5kIHRoZSBwcmVjaXNpb24g b2YgdGhlIERhdGF0eXBlIHNob3VsZCBiZSBzZXBhcmF0ZS4KKyAgICAgICAg IyBUaGUgRm9ybWF0IHdlIGdldHRpbmcgZnJvbSBkYXRhYmFzZSBpczogbnVt ZXJpYygxLDEpCisgICAgICAgICMgU28sIHdlIG5lZWQgdG8gc2VwYXJhdGUg TGVuZ3RoOiAxLCBQcmVjaXNpb246IDEKKworICAgICAgICBpZiBiYXNldHlw ZSAhPSAnJyBhbmQgYmFzZXR5cGUuZmluZCgiKCIpID4gMDoKKyAgICAgICAg ICAgIHN1YnN0ciA9IGJhc2V0eXBlW2Jhc2V0eXBlLmZpbmQoIigiKSArIDE6 bGVuKAorICAgICAgICAgICAgICAgYmFzZXR5cGUpIC0gMV0KKyAgICAgICAg ICAgIHR5cGxlbiA9IHN1YnN0ci5zcGxpdCgiLCIpCisgICAgICAgICAgICBp ZiBsZW4odHlwbGVuKSA+IDE6CisgICAgICAgICAgICAgICAgdHlwX2xlbiA9 IHR5cGxlblswXQorICAgICAgICAgICAgICAgIHR5cF9wcmVjaXNpb24gPSB0 eXBsZW5bMV0KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg dHlwX2xlbiA9IHR5cGxlbgorICAgICAgICAgICAgICAgIHR5cF9wcmVjaXNp b24gPSAnJworCisgICAgICAgIHJldHVybiB7J3R5cGxlbic6IHR5cF9sZW4s ICdwcmVjaXNpb24nOiB0eXBfcHJlY2lzaW9ufQorCisgICAgQGNoZWNrX3By ZWNvbmRpdGlvbgorICAgIGRlZiBnZXRfY29sbGF0aW9ucyhzZWxmLCBnaWQs IHNpZCwgZGlkLCBzY2lkLCBkb2lkPU5vbmUpOgorICAgICAgICAiIiIKKyAg ICAgICAgUmV0dXJucyBDb2xsYXRpb25zLgorCisgICAgICAgIEFyZ3M6Cisg ICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJZAorICAgICAgICAgICAg c2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAgICAgIGRpZDogRGF0YWJhc2UgSWQK KyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJZAorICAgICAgICAgICAgZG9p ZDogRG9tYWluIElkCisgICAgICAgICIiIgorCisgICAgICAgIHJlcyA9IFt7 J2xhYmVsJzogJycsICd2YWx1ZSc6ICcnfV0KKyAgICAgICAgdHJ5OgorICAg ICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxm LnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICdnZXRfY29sbGF0aW9ucy5zcWwnXSkpCisgICAg ICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFy cmF5KFNRTCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAg ICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1z Zz1yZXMpCisKKyAgICAgICAgICAgIGZvciByb3cgaW4gcnNldFsncm93cydd OgorICAgICAgICAgICAgICAgIHJlcy5hcHBlbmQoeydsYWJlbCc6IHJvd1sn Y29weV9jb2xsYXRpb24nXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAndmFsdWUnOiByb3dbJ2NvcHlfY29sbGF0aW9uJ119CisgICAgICAgICAg ICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgIHJldHVybiBtYWtl X2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgZGF0YT1yZXMsCisg ICAgICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICAgICAgKQorCisg ICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHJl dHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQor CisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiB0eXBlcyhzZWxm LCBnaWQsIHNpZCwgZGlkLCBzY2lkLCBkb2lkPU5vbmUpOgorICAgICAgICAi IiIKKyAgICAgICAgUmV0dXJucyB0aGUgRGF0YSBUeXBlcy4KKworICAgICAg ICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSWQKKyAg ICAgICAgICAgIHNpZDogU2VydmVyIElkCisgICAgICAgICAgICBkaWQ6IERh dGFiYXNlIElkCisgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSWQKKyAgICAg ICAgICAgIGZuaWQ6IEZ1bmN0aW9uIElkCisgICAgICAgICIiIgorCisgICAg ICAgIGNvbmRpdGlvbiA9ICIiInR5cGlzZGVmaW5lZCBBTkQgdHlwdHlwZSBJ TiAoJ2InLCAnYycsICdkJywgJ2UnLCAncicpCitBTkQgTk9UIEVYSVNUUyAo U0VMRUNUIDEgRlJPTSBwZ19jbGFzcyBXSEVSRSByZWxuYW1lc3BhY2U9dHlw bmFtZXNwYWNlCitBTkQgcmVsbmFtZSA9IHR5cG5hbWUgQU5EIHJlbGtpbmQg IT0gJ2MnKSBBTkQKKyh0eXBuYW1lIE5PVCBMSUtFICdfJScgT1IgTk9UIEVY SVNUUyAoU0VMRUNUIDEgRlJPTSBwZ19jbGFzcyBXSEVSRQorcmVsbmFtZXNw YWNlPXR5cG5hbWVzcGFjZSBBTkQgcmVsbmFtZSA9IHN1YnN0cmluZyh0eXBu YW1lIEZST00gMik6Om5hbWUKK0FORCByZWxraW5kICE9ICdjJykpIiIiCisK KyAgICAgICAgaWYgc2VsZi5ibHVlcHJpbnQuc2hvd19zeXN0ZW1fb2JqZWN0 czoKKyAgICAgICAgICAgIGNvbmRpdGlvbiArPSAiIEFORCBuc3AubnNwbmFt ZSAhPSAnaW5mb3JtYXRpb25fc2NoZW1hJyIKKworICAgICAgICAjIEdldCBU eXBlcworICAgICAgICBzdGF0dXMsIHR5cGVzID0gc2VsZi5nZXRfdHlwZXMo c2VsZi5jb25uLCBjb25kaXRpb24pCisKKyAgICAgICAgaWYgbm90IHN0YXR1 czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3Io ZXJyb3Jtc2c9dHlwZXMpCisKKyAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9y ZXNwb25zZSgKKyAgICAgICAgICAgIGRhdGE9dHlwZXMsCisgICAgICAgICAg ICBzdGF0dXM9MjAwCisgICAgICAgICkKKworICAgIEBjaGVja19wcmVjb25k aXRpb24KKyAgICBAdmFsaWRhdGVfcmVxdWVzdAorICAgIGRlZiBjcmVhdGUo c2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCk6CisgICAgICAgICIiIgorICAg ICAgICBDcmVhdGVzIGEgbmV3IERvbWFpbiBvYmplY3QuCisKKyAgICAgICAg QXJnczoKKyAgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElkCisgICAg ICAgICAgICBzaWQ6IFNlcnZlciBJZAorICAgICAgICAgICAgZGlkOiBEYXRh YmFzZSBJZAorICAgICAgICAgICAgc2NpZDogU2NoZW1hIElkCisgICAgICAg ICAgICBkb2lkOiBEb21haW4gSWQKKworICAgICAgICBSZXF1aXJlZCBBcmdz OgorICAgICAgICAgICAgbmFtZTogRG9tYWluIE5hbWUKKyAgICAgICAgICAg IG93bmVyOiBPd25lciBOYW1lCisgICAgICAgICAgICBiYXNlbnNwOiBTY2hl bWEgTmFtZQorICAgICAgICAgICAgYmFzZXR5cGU6IERvbWFpbiBCYXNlIFR5 cGUKKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgRG9tYWluIG9i amVjdCBpbiBqc29uIGZvcm1hdC4KKyAgICAgICAgIiIiCisKKyAgICAgICAg ZGF0YSA9IHNlbGYucmVxdWVzdAorICAgICAgICB0cnk6CisgICAgICAgICAg ICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxh dGVfcGF0aCwgJ2NyZWF0ZS5zcWwnXSksCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZGF0YT1kYXRhKQorICAgICAgICAgICAgc3RhdHVz LCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIoU1FMKQorICAgICAg ICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4g aW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAg ICAgICAgIyBXZSBuZWVkIG9pZCB0byB0byBhZGQgb2JqZWN0IGluIHRyZWUg YXQgYnJvd3NlciwgYmVsb3cgc3FsIHdpbGwKKyAgICAgICAgICAgICMgZ2l2 ZXMgdGhlIHNhbWUKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0 ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X29pZC5zcWwn XSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZW5z cD1kYXRhWydiYXNlbnNwJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbmFtZT1kYXRhWyduYW1lJ10pCisgICAgICAgICAgICBzdGF0 dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQorICAg ICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1 cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAg ICAgICAgICAgZG9pZCwgc2NpZCA9IHJlc1sncm93cyddWzBdCisKKyAgICAg ICAgICAgIHJldHVybiBqc29uaWZ5KAorICAgICAgICAgICAgICAgIG5vZGU9 c2VsZi5ibHVlcHJpbnQuZ2VuZXJhdGVfYnJvd3Nlcl9ub2RlKAorICAgICAg ICAgICAgICAgICAgICBkb2lkLAorICAgICAgICAgICAgICAgICAgICBzY2lk LAorICAgICAgICAgICAgICAgICAgICBkYXRhWyduYW1lJ10sCisgICAgICAg ICAgICAgICAgICAgIGljb249Imljb24tZG9tYWluIgorICAgICAgICAgICAg ICAgICkKKyAgICAgICAgICAgICkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlv biBhcyBlOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9l cnJvcihlcnJvcm1zZz1zdHIoZSkpCisKKyAgICBAY2hlY2tfcHJlY29uZGl0 aW9uCisgICAgZGVmIGRlbGV0ZShzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lk LCBkb2lkKToKKyAgICAgICAgIiIiCisgICAgICAgIERyb3BzIHRoZSBEb21h aW4gb2JqZWN0LgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6 IFNlcnZlciBHcm91cCBJZAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQK KyAgICAgICAgICAgIGRpZDogRGF0YWJhc2UgSWQKKyAgICAgICAgICAgIHNj aWQ6IFNjaGVtYSBJZAorICAgICAgICAgICAgZG9pZDogRG9tYWluIElkCisg ICAgICAgICIiIgorCisgICAgICAgIGlmIHNlbGYuY21kID09ICdkZWxldGUn OgorICAgICAgICAgICAgIyBUaGlzIGlzIGEgY2FzY2FkZSBvcGVyYXRpb24K KyAgICAgICAgICAgIGNhc2NhZGUgPSBUcnVlCisgICAgICAgIGVsc2U6Cisg ICAgICAgICAgICBjYXNjYWRlID0gRmFsc2UKKworICAgICAgICB0cnk6Cisg ICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3Nl bGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJ2RlbGV0ZS5zcWwnXSksCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2NpZD1zY2lkLCBkb2lkPWRvaWQp CisgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRl XzJkYXJyYXkoU1FMKQorICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAg ICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVy cm9ybXNnPW5hbWUpCisKKyAgICAgICAgICAgIG5hbWUsIGJhc2Vuc3AgPSBy ZXNbJ3Jvd3MnXVswXQorCisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVt cGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlbGV0ZS5z cWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFt ZT1uYW1lLCBiYXNlbnNwPWJhc2Vuc3AsIGNhc2NhZGU9Y2FzY2FkZSkKKyAg ICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfc2Nh bGFyKFNRTCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAg ICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1z Zz1yZXMpCisKKyAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9u c2UoCisgICAgICAgICAgICAgICAgc3VjY2Vzcz0xLAorICAgICAgICAgICAg ICAgIGluZm89Z2V0dGV4dCgiRG9tYWluIGRyb3BwZWQiKSwKKyAgICAgICAg ICAgICAgICBkYXRhPXsKKyAgICAgICAgICAgICAgICAgICAgJ2lkJzogZG9p ZCwKKyAgICAgICAgICAgICAgICAgICAgJ3NjaWQnOiBzY2lkLAorICAgICAg ICAgICAgICAgICAgICAnc2lkJzogc2lkLAorICAgICAgICAgICAgICAgICAg ICAnZ2lkJzogZ2lkLAorICAgICAgICAgICAgICAgICAgICAnZGlkJzogZGlk CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgKQorCisgICAgICAg IGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHJldHVybiBp bnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisgICAg QGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIEB2YWxpZGF0ZV9yZXF1ZXN0Cisg ICAgZGVmIHVwZGF0ZShzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCBkb2lk KToKKyAgICAgICAgIiIiCisgICAgICAgIFVwZGF0ZXMgdGhlIERvbWFpbiBv YmplY3QuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGdpZDogU2Vy dmVyIEdyb3VwIElkCisgICAgICAgICAgICBzaWQ6IFNlcnZlciBJZAorICAg ICAgICAgICAgZGlkOiBEYXRhYmFzZSBJZAorICAgICAgICAgICAgc2NpZDog U2NoZW1hIElkCisgICAgICAgICAgICBkb2lkOiBEb21haW4gSWQKKyAgICAg ICAgIiIiCisKKyAgICAgICAgc3RhdHVzLCBTUUwgPSBzZWxmLmdldF9zcWwo Z2lkLCBzaWQsIHNlbGYucmVxdWVzdCwgc2NpZCwgZG9pZCkKKworICAgICAg ICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFs X3NlcnZlcl9lcnJvcihlcnJvcm1zZz1TUUwpCisKKyAgICAgICAgdHJ5Ogor ICAgICAgICAgICAgaWYgU1FMOgorICAgICAgICAgICAgICAgIHN0YXR1cywg cmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKFNRTCkKKyAgICAgICAg ICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKwor ICAgICAgICAgICAgICAgICMgR2V0IFNjaGVtYSBJZAorICAgICAgICAgICAg ICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1w bGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJ2dldF9vaWQuc3FsJ10pLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBkb2lkPWRvaWQpCisgICAgICAg ICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFy cmF5KFNRTCkKKyAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAg ICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9y KGVycm9ybXNnPXJlcykKKworICAgICAgICAgICAgICAgIHNjaWQgPSByZXNb J3Jvd3MnXVswXVsnc2NpZCddCisKKyAgICAgICAgICAgICAgICByZXR1cm4g bWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgICAgICBzdWNj ZXNzPTEsCisgICAgICAgICAgICAgICAgICAgIGluZm89IkRvbWFpbiB1cGRh dGVkIiwKKyAgICAgICAgICAgICAgICAgICAgZGF0YT17CisgICAgICAgICAg ICAgICAgICAgICAgICAnaWQnOiBkb2lkLAorICAgICAgICAgICAgICAgICAg ICAgICAgJ3NjaWQnOiBzY2lkLAorICAgICAgICAgICAgICAgICAgICAgICAg J3NpZCc6IHNpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdnaWQnOiBn aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAnZGlkJzogZGlkCisgICAg ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICApCisgICAgICAg ICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25f cmVzcG9uc2UoCisgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M9MSwKKyAg ICAgICAgICAgICAgICAgICAgaW5mbz0iTm90aGluZyB0byB1cGRhdGUiLAor ICAgICAgICAgICAgICAgICAgICBkYXRhPXsKKyAgICAgICAgICAgICAgICAg ICAgICAgICdpZCc6IGRvaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAn c2NpZCc6IHNjaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAnc2lkJzog c2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2dpZCc6IGdpZCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICdkaWQnOiBkaWQKKyAgICAgICAgICAg ICAgICAgICAgfQorICAgICAgICAgICAgICAgICkKKworICAgICAgICBleGNl cHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJu YWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkKKworICAgIEBjaGVj a19wcmVjb25kaXRpb24KKyAgICBkZWYgc3FsKHNlbGYsIGdpZCwgc2lkLCBk aWQsIHNjaWQsIGRvaWQ9Tm9uZSk6CisgICAgICAgICIiIgorICAgICAgICBS ZXR1cm5zIHRoZSBTUUwgZm9yIHRoZSBEb21haW4gb2JqZWN0LgorCisgICAg ICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJZAor ICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAgICAgIGRpZDog RGF0YWJhc2UgSWQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJZAorICAg ICAgICAgICAgZG9pZDogRG9tYWluIElkCisgICAgICAgICIiIgorCisgICAg ICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1w bGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNjaWQ9c2NpZCwgZG9pZD1kb2lkKQorICAgICAgICBz dGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorICAg ICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNl LCBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorICAgICAg ICBkYXRhID0gcmVzWydyb3dzJ11bMF0KKworICAgICAgICAjIEdldCBUeXBl IExlbmd0aCBhbmQgUHJlY2lzaW9uCisgICAgICAgIGRhdGEudXBkYXRlKHNl bGYuX3BhcnNlX3R5cGUoZGF0YVsnZnVsbHR5cGUnXSkpCisKKyAgICAgICAg IyBHZXQgRG9tYWluIENvbnN0cmFpbnRzCisgICAgICAgIFNRTCA9IHJlbmRl cl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfY29u c3RyYWludHMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZG9pZD1kb2lkKQorICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29u bi5leGVjdXRlX2RpY3QoU1FMKQorICAgICAgICBpZiBub3Qgc3RhdHVzOgor ICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJv cm1zZz1yZXMpCisKKyAgICAgICAgZGF0YVsnY29uc3RyYWludHMnXSA9IHJl c1sncm93cyddCisKKyAgICAgICAgIyBUb2dnbGUgVmFsaWRhdGUgYW5kIGlu aGVyaXQgb3B0aW9ucyBmb3IgJ0NSRUFURSBRdWVyeScKKyAgICAgICAgZm9y IGMgaW4gZGF0YVsnY29uc3RyYWludHMnXToKKyAgICAgICAgICAgIGlmICdj b252YWxpZGF0ZWQnIGluIGM6CisgICAgICAgICAgICAgICAgY1snY29udmFs aWRhdGVkJ10gPSBGYWxzZSBpZiBjWydjb252YWxpZGF0ZWQnXSBlbHNlIFRy dWUKKyAgICAgICAgICAgIGlmICdjb25ub2luaGVyaXQnIGluIGM6CisgICAg ICAgICAgICAgICAgY1snY29ubm9pbmhlcml0J10gPSBGYWxzZSBpZiBjWydj b25ub2luaGVyaXQnXSBlbHNlIFRydWUKKworICAgICAgICBTUUwgPSByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY3JlYXRl LnNxbCddKSwgZGF0YT1kYXRhKQorCisgICAgICAgIHNxbF9oZWFkZXIgPSAi IiItLSBET01BSU46IHswfQorCistLSBEUk9QIERPTUFJTiB7MH07CisKKyIi Ii5mb3JtYXQoZGF0YVsnYmFzZW5zcCddICsgJy4nICsgZGF0YVsnbmFtZSdd KQorCisgICAgICAgIFNRTCA9IHNxbF9oZWFkZXIgKyBTUUwKKworICAgICAg ICByZXR1cm4gYWpheF9yZXNwb25zZShyZXNwb25zZT1TUUwpCisKKyAgICBA Y2hlY2tfcHJlY29uZGl0aW9uCisgICAgQHZhbGlkYXRlX3JlcXVlc3QKKyAg ICBkZWYgbXNxbChzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCBkb2lkPU5v bmUpOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJucyB0aGUgbW9kaWZp ZWQgU1FMLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNl cnZlciBHcm91cCBJZAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQKKyAg ICAgICAgICAgIGRpZDogRGF0YWJhc2UgSWQKKyAgICAgICAgICAgIHNjaWQ6 IFNjaGVtYSBJZAorICAgICAgICAgICAgZG9pZDogRG9tYWluIElkCisKKyAg ICAgICAgUmVxdWlyZWQgQXJnczoKKyAgICAgICAgICAgIG5hbWU6IERvbWFp biBOYW1lCisgICAgICAgICAgICBvd25lcjogT3duZXIgTmFtZQorICAgICAg ICAgICAgYmFzZW5zcDogU2NoZW1hIE5hbWUKKyAgICAgICAgICAgIGJhc2V0 eXBlOiBEb21haW4gQmFzZSBUeXBlCisKKyAgICAgICAgUmV0dXJuczoKKyAg ICAgICAgICAgIFNRTCBzdGF0ZW1lbnRzIHRvIGNyZWF0ZS91cGRhdGUgdGhl IERvbWFpbi4KKyAgICAgICAgIiIiCisKKyAgICAgICAgc3RhdHVzLCBTUUwg PSBzZWxmLmdldF9zcWwoZ2lkLCBzaWQsIHNlbGYucmVxdWVzdCwgc2NpZCwg ZG9pZCkKKworICAgICAgICBpZiBTUUw6CisgICAgICAgICAgICByZXR1cm4g bWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgIGRhdGE9U1FM LAorICAgICAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgICAgICkK KyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBTUUwKKworICAg IGRlZiBnZXRfc3FsKHNlbGYsIGdpZCwgc2lkLCBkYXRhLCBzY2lkLCBkb2lk PU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgR2VuZXJhdGVzIHRoZSBT UUwgc3RhdGVtZW50cyB0byBjcmVhdGUvdXBkYXRlIHRoZSBEb21haW4uCisK KyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3Vw IElkCisgICAgICAgICAgICBzaWQ6IFNlcnZlciBJZAorICAgICAgICAgICAg ZGlkOiBEYXRhYmFzZSBJZAorICAgICAgICAgICAgc2NpZDogU2NoZW1hIElk CisgICAgICAgICAgICBkb2lkOiBEb21haW4gSWQKKyAgICAgICAgIiIiCisK KyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgZG9pZCBpcyBub3QgTm9u ZToKKyAgICAgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8i LmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9wZXJ0aWVzLnNx bCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2NpZD1zY2lkLCBkb2lkPWRvaWQpCisgICAgICAgICAgICAgICAgc3RhdHVz LCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKworICAgICAg ICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgICAg IHJldHVybiBGYWxzZSwgaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNn PXJlcykKKworICAgICAgICAgICAgICAgIG9sZF9kYXRhID0gcmVzWydyb3dz J11bMF0KKyAgICAgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUo CisgICAgICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRl X3BhdGgsICd1cGRhdGUuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICBk YXRhPWRhdGEsIG9fZGF0YT1vbGRfZGF0YSkKKyAgICAgICAgICAgIGVsc2U6 CisgICAgICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5q b2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY3JlYXRlLnNxbCddKSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1k YXRhKQorICAgICAgICAgICAgcmV0dXJuIFRydWUsIFNRTAorCisgICAgICAg IGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHJldHVybiBG YWxzZSwgZQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBk ZXBlbmRlbnRzKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIGRvaWQpOgor ICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiBnZXQgdGhlIGRl cGVuZGVudHMgYW5kIHJldHVybiBhamF4IHJlc3BvbnNlCisgICAgICAgIGZv ciB0aGUgRG9tYWluIG5vZGUuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAg ICAgIGdpZDogU2VydmVyIEdyb3VwIElkCisgICAgICAgICAgICBzaWQ6IFNl cnZlciBJZAorICAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJZAorICAgICAg ICAgICAgc2NpZDogU2NoZW1hIElkCisgICAgICAgICAgICBkb2lkOiBEb21h aW4gSWQKKyAgICAgICAgIiIiCisgICAgICAgIGRlcGVuZGVudHNfcmVzdWx0 ID0gc2VsZi5nZXRfZGVwZW5kZW50cyhzZWxmLmNvbm4sIGRvaWQpCisgICAg ICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgIHJl c3BvbnNlPWRlcGVuZGVudHNfcmVzdWx0LAorICAgICAgICAgICAgICAgIHN0 YXR1cz0yMDAKKyAgICAgICAgICAgICAgICApCisKKyAgICBAY2hlY2tfcHJl Y29uZGl0aW9uCisgICAgZGVmIGRlcGVuZGVuY2llcyhzZWxmLCBnaWQsIHNp ZCwgZGlkLCBzY2lkLCBkb2lkKToKKyAgICAgICAgIiIiCisgICAgICAgIFRo aXMgZnVuY3Rpb24gZ2V0IHRoZSBkZXBlbmRlbmNpZXMgYW5kIHJldHVybiBh amF4IHJlc3BvbnNlCisgICAgICAgIGZvciB0aGUgRG9tYWluIG5vZGUuCisK KyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3Vw IElkCisgICAgICAgICAgICBzaWQ6IFNlcnZlciBJZAorICAgICAgICAgICAg ZGlkOiBEYXRhYmFzZSBJZAorICAgICAgICAgICAgc2NpZDogU2NoZW1hIElk CisgICAgICAgICAgICBkb2lkOiBEb21haW4gSWQKKyAgICAgICAgIiIiCisg ICAgICAgIGRlcGVuZGVuY2llc19yZXN1bHQgPSBzZWxmLmdldF9kZXBlbmRl bmNpZXMoc2VsZi5jb25uLCBkb2lkKQorICAgICAgICByZXR1cm4gYWpheF9y ZXNwb25zZSgKKyAgICAgICAgICAgICAgICByZXNwb25zZT1kZXBlbmRlbmNp ZXNfcmVzdWx0LAorICAgICAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAg ICAgICAgICAgICApCisKK0RvbWFpblZpZXcucmVnaXN0ZXJfbm9kZV92aWV3 KGJsdWVwcmludCkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFp bnMvZG9tYWluLWNvbnN0cmFpbnRzL19faW5pdF9fLnB5IGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZG9tYWlucy9kb21haW4tY29uc3RyYWludHMvX19pbml0X18ucHkK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDE2YmI2MAot LS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvZG9t YWluLWNvbnN0cmFpbnRzL19faW5pdF9fLnB5CkBAIC0wLDAgKzEsNjUzIEBA CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWlu IDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAx MyAtIDIwMTYsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKyMgVGhp cyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBM aWNlbmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisi IiJJbXBsZW1lbnRzIHRoZSBEb21haW4gQ29uc3RyYWludCBNb2R1bGUuIiIi CisKK2ltcG9ydCBqc29uCitmcm9tIGZsYXNrIGltcG9ydCByZW5kZXJfdGVt cGxhdGUsIG1ha2VfcmVzcG9uc2UsIHJlcXVlc3QsIGpzb25pZnkKK2Zyb20g Zmxhc2suZXh0LmJhYmVsIGltcG9ydCBnZXR0ZXh0Citmcm9tIHBnYWRtaW4u dXRpbHMuYWpheCBpbXBvcnQgbWFrZV9qc29uX3Jlc3BvbnNlLCBcCisgICAg bWFrZV9yZXNwb25zZSBhcyBhamF4X3Jlc3BvbnNlLCBpbnRlcm5hbF9zZXJ2 ZXJfZXJyb3IKK2Zyb20gcGdhZG1pbi5icm93c2VyLnV0aWxzIGltcG9ydCBQ R0NoaWxkTm9kZVZpZXcKK2Zyb20gcGdhZG1pbi5icm93c2VyLmNvbGxlY3Rp b24gaW1wb3J0IENvbGxlY3Rpb25Ob2RlTW9kdWxlCitpbXBvcnQgcGdhZG1p bi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMuc2No ZW1hcy5kb21haW5zIFwKKyAgICBhcyBkb21haW5zCitmcm9tIHBnYWRtaW4u dXRpbHMuYWpheCBpbXBvcnQgcHJlY29uZGl0aW9uX3JlcXVpcmVkCitmcm9t IHBnYWRtaW4udXRpbHMuZHJpdmVyIGltcG9ydCBnZXRfZHJpdmVyCitmcm9t IGNvbmZpZyBpbXBvcnQgUEdfREVGQVVMVF9EUklWRVIKK2Zyb20gZnVuY3Rv b2xzIGltcG9ydCB3cmFwcworCisKK2NsYXNzIERvbWFpbkNvbnN0cmFpbnRN b2R1bGUoQ29sbGVjdGlvbk5vZGVNb2R1bGUpOgorICAgICIiIgorICAgIGNs YXNzIERvbWFpbkNvbnN0cmFpbnRNb2R1bGUoQ29sbGVjdGlvbk5vZGVNb2R1 bGUpOgorCisgICAgICAgIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBUaGUgRG9t YWluIENvbnN0cmFpbnQgTW9kdWxlLgorCisgICAgTWV0aG9kczoKKyAgICAt LS0tLS0tCisgICAgKiBfX2luaXRfXygqYXJncywgKiprd2FyZ3MpCisgICAg ICAtIEluaXRpYWxpemUgdGhlIERvbWFpbiBDb25zdHJhaW50IE1vZHVsZS4K KworICAgICogZ2V0X25vZGVzKGdpZCwgc2lkLCBkaWQsIHNjaWQpCisgICAg ICAtIEdlbmVyYXRlIHRoZSBEb21haW4gQ29uc3RyYWludCBjb2xsZWN0aW9u IG5vZGUuCisKKyAgICAqIG5vZGVfaW5vZGUoZ2lkLCBzaWQsIGRpZCwgc2Np ZCkKKyAgICAgIC0gUmV0dXJucyBEb21haW4gQ29uc3RyYWludCBub2RlIGFz IGxlYWYgbm9kZS4KKworICAgICogc2NyaXB0X2xvYWQoKQorICAgICAgLSBM b2FkIHRoZSBtb2R1bGUgc2NyaXB0IGZvciB0aGUgRG9tYWluIENvbnN0cmFp bnQsIHdoZW4gYW55IG9mIHRoZQorICAgICAgICBEb21haW4gbm9kZSBpcyBp bml0aWFsaXplZC4KKyAgICAiIiIKKyAgICBOT0RFX1RZUEUgPSAnZG9tYWlu LWNvbnN0cmFpbnRzJworICAgIENPTExFQ1RJT05fTEFCRUwgPSBnZXR0ZXh0 KCJEb21haW4gQ29uc3RyYWludHMiKQorCisgICAgZGVmIF9faW5pdF9fKHNl bGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHN1cGVyKERvbWFpbkNv bnN0cmFpbnRNb2R1bGUsIHNlbGYpLl9faW5pdF9fKCphcmdzLCAqKmt3YXJn cykKKyAgICAgICAgc2VsZi5taW5fdmVyID0gTm9uZQorICAgICAgICBzZWxm Lm1heF92ZXIgPSBOb25lCisKKyAgICBkZWYgZ2V0X25vZGVzKHNlbGYsIGdp ZCwgc2lkLCBkaWQsIHNjaWQsIGRvaWQpOgorICAgICAgICAiIiIKKyAgICAg ICAgR2VuZXJhdGUgdGhlIERvbWFpbiBDb25zdHJhaW50IGNvbGxlY3Rpb24g bm9kZS4KKyAgICAgICAgIiIiCisgICAgICAgIHlpZWxkIHNlbGYuZ2VuZXJh dGVfYnJvd3Nlcl9jb2xsZWN0aW9uX25vZGUoZG9pZCkKKworICAgIEBwcm9w ZXJ0eQorICAgIGRlZiBub2RlX2lub2RlKHNlbGYpOgorICAgICAgICAiIiIK KyAgICAgICAgUmV0dXJucyBEb21haW4gQ29uc3RyYWludCBub2RlIGFzIGxl YWYgbm9kZS4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBGYWxzZQor CisgICAgQHByb3BlcnR5CisgICAgZGVmIHNjcmlwdF9sb2FkKHNlbGYpOgor ICAgICAgICAiIiIKKyAgICAgICAgTG9hZCB0aGUgbW9kdWxlIHNjcmlwdCBm b3IgdGhlIERvbWFpbiBDb25zdHJhaW50LCB3aGVuIGFueSBvZiB0aGUKKyAg ICAgICAgRG9tYWluIG5vZGUgaXMgaW5pdGlhbGl6ZWQuCisgICAgICAgICIi IgorICAgICAgICByZXR1cm4gZG9tYWlucy5Eb21haW5Nb2R1bGUuTk9ERV9U WVBFCisKKworYmx1ZXByaW50ID0gRG9tYWluQ29uc3RyYWludE1vZHVsZShf X25hbWVfXykKKworCitjbGFzcyBEb21haW5Db25zdHJhaW50VmlldyhQR0No aWxkTm9kZVZpZXcpOgorICAgICIiIgorICAgIGNsYXNzIERvbWFpbkNvbnN0 cmFpbnRWaWV3KFBHQ2hpbGROb2RlVmlldyk6CisKKyAgICBUaGlzIGNsYXNz IGluaGVyaXRzIFBHQ2hpbGROb2RlVmlldyB0byBnZXQgdGhlIGRpZmZlcmVu dCByb3V0ZXMgZm9yCisgICAgdGhlIG1vZHVsZS4KKworICAgIFRoZSBjbGFz cyBpcyByZXNwb25zaWJsZSB0byBDcmVhdGUsIFJlYWQsIFVwZGF0ZSBhbmQg RGVsZXRlIG9wZXJhdGlvbnMgZm9yCisgICAgdGhlIERvbWFpbiBDb25zdHJh aW50LgorCisgICAgTWV0aG9kczoKKyAgICAtLS0tLS0tCisKKyAgICAqIG1v ZHVsZV9qcygpOgorICAgICAgLSBMb2FkIEpTIGZpbGUgKGRvbWFpbi1jb25z dHJhaW50cy5qcykgZm9yIHRoaXMgbW9kdWxlLgorCisgICAgKiBjaGVja19w cmVjb25kaXRpb24oZik6CisgICAgICAtIFdvcmtzIGFzIGEgZGVjb3JhdG9y LgorICAgICAgLSAgQ2hlY2tzIGRhdGFiYXNlIGNvbm5lY3Rpb24gc3RhdHVz LgorICAgICAgLSAgQXR0YWNoIGNvbm5lY3Rpb24gb2JqZWN0IGFuZCB0ZW1w bGF0ZSBwYXRoLgorCisgICAgKiBsaXN0KGdpZCwgc2lkLCBkaWQsIHNjaWQs IGRvaWQpOgorICAgICAgLSBMaXN0IHRoZSBEb21haW4gQ29uc3RyYWludHMu CisKKyAgICAqIG5vZGVzKGdpZCwgc2lkLCBkaWQsIHNjaWQpOgorICAgICAg LSBSZXR1cm5zIGFsbCB0aGUgRG9tYWluIENvbnN0cmFpbnRzIHRvIGdlbmVy YXRlIE5vZGVzIGluIHRoZSBicm93c2VyLgorCisgICAgKiBwcm9wZXJ0aWVz KGdpZCwgc2lkLCBkaWQsIHNjaWQsIGRvaWQpOgorICAgICAgLSBSZXR1cm5z IHRoZSBEb21haW4gQ29uc3RyYWludCBwcm9wZXJ0aWVzLgorCisgICAgKiBj cmVhdGUoZ2lkLCBzaWQsIGRpZCwgc2NpZCk6CisgICAgICAtIENyZWF0ZXMg YSBuZXcgRG9tYWluIENvbnN0cmFpbnQgb2JqZWN0LgorCisgICAgKiB1cGRh dGUoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZG9pZCk6CisgICAgICAtIFVwZGF0 ZXMgdGhlIERvbWFpbiBDb25zdHJhaW50IG9iamVjdC4KKworICAgICogZGVs ZXRlKGdpZCwgc2lkLCBkaWQsIHNjaWQsIGRvaWQpOgorICAgICAgLSBEcm9w cyB0aGUgRG9tYWluIENvbnN0cmFpbnQgb2JqZWN0LgorCisgICAgKiBzcWwo Z2lkLCBzaWQsIGRpZCwgc2NpZCwgZG9pZD1Ob25lKToKKyAgICAgIC0gUmV0 dXJucyB0aGUgU1FMIGZvciB0aGUgRG9tYWluIENvbnN0cmFpbnQgb2JqZWN0 LgorCisgICAgKiBtc3FsKGdpZCwgc2lkLCBkaWQsIHNjaWQsIGRvaWQ9Tm9u ZSk6CisgICAgICAtIFJldHVybnMgdGhlIG1vZGlmaWVkIFNRTC4KKworICAg ICogZ2V0X3NxbChnaWQsIHNpZCwgZGF0YSwgc2NpZCwgZG9pZD1Ob25lKToK KyAgICAgIC0gR2VuZXJhdGVzIHRoZSBTUUwgc3RhdGVtZW50cyB0byBjcmVh dGUvdXBkYXRlIHRoZSBEb21haW4gQ29uc3RyYWludC4KKyAgICAgICAgb2Jq ZWN0LgorCisgICAgKiBkZXBlbmRlbnRzKGdpZCwgc2lkLCBkaWQsIHNjaWQs IGRvaWQsIGNvaWQpOgorICAgICAgLSBSZXR1cm5zIHRoZSBkZXBlbmRlbnRz IGZvciB0aGUgRG9tYWluIENvbnN0cmFpbnQgb2JqZWN0LgorCisgICAgKiBk ZXBlbmRlbmNpZXMoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZG9pZCwgY29pZCk6 CisgICAgICAtIFJldHVybnMgdGhlIGRlcGVuZGVuY2llcyBmb3IgdGhlIERv bWFpbiBDb25zdHJhaW50IG9iamVjdC4KKyAgICAiIiIKKyAgICBub2RlX3R5 cGUgPSBibHVlcHJpbnQubm9kZV90eXBlCisKKyAgICBwYXJlbnRfaWRzID0g WworICAgICAgICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ2dpZCd9LAorICAg ICAgICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ3NpZCd9LAorICAgICAgICB7 J3R5cGUnOiAnaW50JywgJ2lkJzogJ2RpZCd9LAorICAgICAgICB7J3R5cGUn OiAnaW50JywgJ2lkJzogJ3NjaWQnfSwKKyAgICAgICAgeyd0eXBlJzogJ2lu dCcsICdpZCc6ICdkb2lkJ30KKyAgICBdCisgICAgaWRzID0gWworICAgICAg ICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ2NvaWQnfQorICAgIF0KKworICAg IG9wZXJhdGlvbnMgPSBkaWN0KHsKKyAgICAgICAgJ29iaic6IFsKKyAgICAg ICAgICAgIHsnZ2V0JzogJ3Byb3BlcnRpZXMnLCAnZGVsZXRlJzogJ2RlbGV0 ZScsICdwdXQnOiAndXBkYXRlJ30sCisgICAgICAgICAgICB7J2dldCc6ICds aXN0JywgJ3Bvc3QnOiAnY3JlYXRlJ30KKyAgICAgICAgXSwKKyAgICAgICAg J2RlbGV0ZSc6IFt7J2RlbGV0ZSc6ICdkZWxldGUnfV0sCisgICAgICAgICdj aGlsZHJlbic6IFt7J2dldCc6ICdjaGlsZHJlbid9XSwKKyAgICAgICAgJ25v ZGVzJzogW3snZ2V0JzogJ25vZGUnfSwgeydnZXQnOiAnbm9kZXMnfV0sCisg ICAgICAgICdzcWwnOiBbeydnZXQnOiAnc3FsJ31dLAorICAgICAgICAnbXNx bCc6IFt7J2dldCc6ICdtc3FsJ30sIHsnZ2V0JzogJ21zcWwnfV0sCisgICAg ICAgICdzdGF0cyc6IFt7J2dldCc6ICdzdGF0aXN0aWNzJ31dLAorICAgICAg ICAnZGVwZW5kZW5jeSc6IFt7J2dldCc6ICdkZXBlbmRlbmNpZXMnfV0sCisg ICAgICAgICdkZXBlbmRlbnQnOiBbeydnZXQnOiAnZGVwZW5kZW50cyd9XSwK KyAgICAgICAgJ21vZHVsZS5qcyc6IFt7fSwge30sIHsnZ2V0JzogJ21vZHVs ZV9qcyd9XQorICAgIH0pCisKKyAgICBkZWYgbW9kdWxlX2pzKHNlbGYpOgor ICAgICAgICAiIiIKKyAgICAgICAgTG9hZCBKUyBmaWxlIChkb21haW4tY29u c3RyYWludHMuanMpIGZvciB0aGlzIG1vZHVsZS4KKyAgICAgICAgIiIiCisg ICAgICAgIHJldHVybiBtYWtlX3Jlc3BvbnNlKAorICAgICAgICAgICAgcmVu ZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICJkb21haW4tY29uc3Ry YWludHMvanMvZG9tYWluLWNvbnN0cmFpbnRzLmpzIiwKKyAgICAgICAgICAg ICAgICBfPWdldHRleHQKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAy MDAsIHsnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtamF2YXNjcmlw dCd9CisgICAgICAgICkKKworICAgIGRlZiBjaGVja19wcmVjb25kaXRpb24o Zik6CisgICAgICAgICIiIgorICAgICAgICBXb3JrcyBhcyBhIGRlY29yYXRv ci4KKyAgICAgICAgQ2hlY2tzIGRhdGFiYXNlIGNvbm5lY3Rpb24gc3RhdHVz LgorICAgICAgICBBdHRhY2ggY29ubmVjdGlvbiBvYmplY3QgYW5kIHRlbXBs YXRlIHBhdGguCisgICAgICAgICIiIgorICAgICAgICBAd3JhcHMoZikKKyAg ICAgICAgZGVmIHdyYXAoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAg IHNlbGYgPSBhcmdzWzBdCisgICAgICAgICAgICBkcml2ZXIgPSBnZXRfZHJp dmVyKFBHX0RFRkFVTFRfRFJJVkVSKQorICAgICAgICAgICAgc2VsZi5tYW5h Z2VyID0gZHJpdmVyLmNvbm5lY3Rpb25fbWFuYWdlcihrd2FyZ3NbJ3NpZCdd KQorICAgICAgICAgICAgc2VsZi5jb25uID0gc2VsZi5tYW5hZ2VyLmNvbm5l Y3Rpb24oZGlkPWt3YXJnc1snZGlkJ10pCisgICAgICAgICAgICBzZWxmLnF0 SWRlbnQgPSBkcml2ZXIucXRJZGVudAorCisgICAgICAgICAgICAjIElmIERC IG5vdCBjb25uZWN0ZWQgdGhlbiByZXR1cm4gZXJyb3IgdG8gYnJvd3Nlcgor ICAgICAgICAgICAgaWYgbm90IHNlbGYuY29ubi5jb25uZWN0ZWQoKToKKyAg ICAgICAgICAgICAgICByZXR1cm4gcHJlY29uZGl0aW9uX3JlcXVpcmVkKAor ICAgICAgICAgICAgICAgICAgICBnZXR0ZXh0KCJDb25uZWN0aW9uIHRvIHRo ZSBzZXJ2ZXIgaGFzIGJlZW4gbG9zdCEiKQorICAgICAgICAgICAgICAgICkK KworICAgICAgICAgICAgdmVyID0gc2VsZi5tYW5hZ2VyLnZlcnNpb24KKwor ICAgICAgICAgICAgIyB3ZSB3aWxsIHNldCB0ZW1wbGF0ZSBwYXRoIGZvciBz cWwgc2NyaXB0cworICAgICAgICAgICAgaWYgdmVyID49IDkwMjAwOgorICAg ICAgICAgICAgICAgIHNlbGYudGVtcGxhdGVfcGF0aCA9ICdkb21haW4tY29u c3RyYWludHMvc3FsLzkuMl9wbHVzJworICAgICAgICAgICAgZWxpZiB2ZXIg Pj0gOTAxMDA6CisgICAgICAgICAgICAgICAgc2VsZi50ZW1wbGF0ZV9wYXRo ID0gJ2RvbWFpbi1jb25zdHJhaW50cy9zcWwvOS4xX3BsdXMnCisKKyAgICAg ICAgICAgIHJldHVybiBmKCphcmdzLCAqKmt3YXJncykKKworICAgICAgICBy ZXR1cm4gd3JhcAorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRl ZiBsaXN0KHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIGRvaWQpOgorICAg ICAgICAiIiIKKyAgICAgICAgTGlzdCB0aGUgRG9tYWluIENvbnN0cmFpbnRz LgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBH cm91cCBJZAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAg ICAgIGRpZDogRGF0YWJhc2UgSWQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVt YSBJZAorICAgICAgICAgICAgZG9pZDogRG9tYWluIElkCisgICAgICAgICIi IgorICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3Nl bGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBkb2lkPWRvaWQpCisgICAgICAgIHN0YXR1 cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCisKKyAgICAg ICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorICAgICAgICByZXR1cm4g YWpheF9yZXNwb25zZSgKKyAgICAgICAgICAgIHJlc3BvbnNlPXJlc1sncm93 cyddLAorICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICApCisKKyAg ICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIG5vZGVzKHNlbGYsIGdp ZCwgc2lkLCBkaWQsIHNjaWQsIGRvaWQpOgorICAgICAgICAiIiIKKyAgICAg ICAgUmV0dXJucyBhbGwgdGhlIERvbWFpbiBDb25zdHJhaW50cy4KKworICAg ICAgICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSWQK KyAgICAgICAgICAgIHNpZDogU2VydmVyIElkCisgICAgICAgICAgICBkaWQ6 IERhdGFiYXNlIElkCisgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSWQKKyAg ICAgICAgICAgIGRvaWQ6IERvbWFpbiBJZAorICAgICAgICAiIiIKKyAgICAg ICAgcmVzID0gW10KKyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIv Ii5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb3BlcnRpZXMuc3FsJ10pLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9pZD1kb2lkKQorICAg ICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5 KFNRTCkKKworICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAg cmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0KQor CisgICAgICAgIGZvciByb3cgaW4gcnNldFsncm93cyddOgorICAgICAgICAg ICAgcmVzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLmJsdWVwcmlu dC5nZW5lcmF0ZV9icm93c2VyX25vZGUoCisgICAgICAgICAgICAgICAgICAg IHJvd1snb2lkJ10sCisgICAgICAgICAgICAgICAgICAgIGRvaWQsCisgICAg ICAgICAgICAgICAgICAgIHJvd1snbmFtZSddLAorICAgICAgICAgICAgICAg ICAgICBpY29uPSJpY29uLWRvbWFpbi1jb25zdHJhaW50cyIKKyAgICAgICAg ICAgICAgICApKQorCisgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9u c2UoCisgICAgICAgICAgICBkYXRhPXJlcywKKyAgICAgICAgICAgIHN0YXR1 cz0yMDAKKyAgICAgICAgKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgor ICAgIGRlZiBwcm9wZXJ0aWVzKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQs IGRvaWQsIGNvaWQpOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJucyB0 aGUgRG9tYWluIENvbnN0cmFpbnRzIHByb3BlcnR5LgorCisgICAgICAgIEFy Z3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJZAorICAgICAg ICAgICAgc2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAgICAgIGRpZDogRGF0YWJh c2UgSWQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJZAorICAgICAgICAg ICAgZG9pZDogRG9tYWluIElkCisgICAgICAgICAgICBjb2lkOiBEb21haW4g Q29uc3RyYWludCBJZAorICAgICAgICAiIiIKKworICAgICAgICBTUUwgPSBy ZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJv cGVydGllcy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkb2lkPWRvaWQsIGNvaWQ9Y29pZCkKKyAgICAgICAgc3RhdHVzLCByZXMg PSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAgICAgaWYgbm90 IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJf ZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgIGRhdGEgPSByZXNbJ3Jv d3MnXVswXQorICAgICAgICBpZiAnY29udmFsaWRhdGVkJyBpbiBkYXRhOgor ICAgICAgICAgICAgZGF0YVsnY29udmFsaWRhdGVkJ10gPSBub3QgZGF0YVsn Y29udmFsaWRhdGVkJ10KKyAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2Uo CisgICAgICAgICAgICByZXNwb25zZT1kYXRhLAorICAgICAgICAgICAgc3Rh dHVzPTIwMAorICAgICAgICApCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9u CisgICAgZGVmIGNyZWF0ZShzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCBk b2lkKToKKyAgICAgICAgIiIiCisgICAgICAgIENyZWF0ZXMgYSBuZXcgRG9t YWluIENvbnN0cmFpbnQgb2JqZWN0LgorCisgICAgICAgIEFyZ3M6CisgICAg ICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJZAorICAgICAgICAgICAgc2lk OiBTZXJ2ZXIgSWQKKyAgICAgICAgICAgIGRpZDogRGF0YWJhc2UgSWQKKyAg ICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJZAorICAgICAgICAgICAgZG9pZDog RG9tYWluIElkCisKKyAgICAgICAgUmVxdWlyZWQgQXJnczoKKyAgICAgICAg ICAgIG5hbWU6ICBDb25zdHJhaW50cyBOYW1lCisgICAgICAgICAgICBjb25z cmM6IENvbnN0cmFpbnRzIENoZWNrCisKKyAgICAgICAgUmV0dXJuczoKKyAg ICAgICAgICAgIERvbWFpbiBDb25zdHJhaW50IG9iamVjdCBpbiBqc29uIGZv cm1hdC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgZGF0YSA9IHJlcXVlc3Qu Zm9ybSBpZiByZXF1ZXN0LmZvcm0gZWxzZSBcCisgICAgICAgICAgICBqc29u LmxvYWRzKHJlcXVlc3QuZGF0YS5kZWNvZGUoKSkKKyAgICAgICAgcmVxdWly ZWRfYXJncyA9IFsKKyAgICAgICAgICAgICduYW1lJywKKyAgICAgICAgICAg ICdjb25zcmMnCisgICAgICAgIF0KKworICAgICAgICBmb3IgYXJnIGluIHJl cXVpcmVkX2FyZ3M6CisgICAgICAgICAgICBpZiBhcmcgbm90IGluIGRhdGE6 CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgK KyAgICAgICAgICAgICAgICAgICAgc3RhdHVzPTQxMCwKKyAgICAgICAgICAg ICAgICAgICAgc3VjY2Vzcz0wLAorICAgICAgICAgICAgICAgICAgICBlcnJv cm1zZz1nZXR0ZXh0KAorICAgICAgICAgICAgICAgICAgICAgICAgIkNvdWxk bid0IGZpbmQgdGhlIHJlcXVpcmVkIHBhcmFtZXRlciAoJXMpLiIgJSBhcmcK KyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICkKKwor ICAgICAgICB0cnk6CisgICAgICAgICAgICAjIEdldCBTY2hlbWEgYW5kIERv bWFpbi4KKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIu am9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X2RvbWFpbi5zcWwnXSks CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9pZD1kb2lk KQorICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0 ZV8yZGFycmF5KFNRTCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Cisg ICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihl cnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgIGRvbWFpbiwgc2NoZW1hID0g cmVzWydyb3dzJ11bMF0KKworICAgICAgICAgICAgU1FMID0gcmVuZGVyX3Rl bXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjcmVhdGUu c3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRh dGE9ZGF0YSwgZG9tYWluPWRvbWFpbiwgc2NoZW1hPXNjaGVtYSkKKyAgICAg ICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFy KFNRTCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAg ICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1y ZXMpCisKKyAgICAgICAgICAgICMgR2V0IHRoZSByZWNlbnRseSBhZGRlZCBj b25zdHJhaW50cyBvaWQKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1w bGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X29pZC5z cWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9p ZD1kb2lkLCBuYW1lPWRhdGFbJ25hbWUnXSkKKyAgICAgICAgICAgIHN0YXR1 cywgY29pZCA9IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcihTUUwpCisgICAg ICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVy biBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9ZG9pZCkKKworICAg ICAgICAgICAgcmV0dXJuIGpzb25pZnkoCisgICAgICAgICAgICAgICAgbm9k ZT1zZWxmLmJsdWVwcmludC5nZW5lcmF0ZV9icm93c2VyX25vZGUoCisgICAg ICAgICAgICAgICAgICAgIGNvaWQsCisgICAgICAgICAgICAgICAgICAgIGRv aWQsCisgICAgICAgICAgICAgICAgICAgIGRhdGFbJ25hbWUnXSwKKyAgICAg ICAgICAgICAgICAgICAgaWNvbj0iaWNvbi1kb21haW4tY29uc3RyYWludHMi CisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorICAgICAgICBl eGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICByZXR1cm4gaW50 ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkKKworICAgIEBj aGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgZGVsZXRlKHNlbGYsIGdpZCwg c2lkLCBkaWQsIHNjaWQsIGRvaWQsIGNvaWQpOgorICAgICAgICAiIiIKKyAg ICAgICAgRHJvcHMgdGhlIERvbWFpbiBDb25zdHJhaW50IG9iamVjdC4KKwor ICAgICAgICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAg SWQKKyAgICAgICAgICAgIHNpZDogU2VydmVyIElkCisgICAgICAgICAgICBk aWQ6IERhdGFiYXNlIElkCisgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSWQK KyAgICAgICAgICAgIGRvaWQ6IERvbWFpbiBJZAorICAgICAgICAgICAgY29p ZDogRG9tYWluIENvbnN0cmFpbnQgSWQKKyAgICAgICAgIiIiCisgICAgICAg IHRyeToKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIu am9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVydGllcy5zcWwnXSks CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9pZD1kb2lk LCBjb2lkPWNvaWQpCisgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYu Y29ubi5leGVjdXRlX2RpY3QoU1FMKQorCisgICAgICAgICAgICBpZiBub3Qg c3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2 ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAgICBkYXRhID0g cmVzWydyb3dzJ11bMF0KKworICAgICAgICAgICAgU1FMID0gcmVuZGVyX3Rl bXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZWxldGUu c3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRh dGE9ZGF0YSkKKyAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25u LmV4ZWN1dGVfc2NhbGFyKFNRTCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0 dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9l cnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgIHJldHVybiBtYWtl X2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgc3VjY2Vzcz0xLAor ICAgICAgICAgICAgICAgIGluZm89Z2V0dGV4dCgiRG9tYWluIENvbnN0cmFp bnQgZHJvcHBlZCIpLAorICAgICAgICAgICAgICAgIGRhdGE9eworICAgICAg ICAgICAgICAgICAgICAnaWQnOiBkb2lkLAorICAgICAgICAgICAgICAgICAg ICAnc2NpZCc6IHNjaWQsCisgICAgICAgICAgICAgICAgICAgICdzaWQnOiBz aWQsCisgICAgICAgICAgICAgICAgICAgICdnaWQnOiBnaWQsCisgICAgICAg ICAgICAgICAgICAgICdkaWQnOiBkaWQKKyAgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICApCisKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBl OgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihl cnJvcm1zZz1zdHIoZSkpCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisg ICAgZGVmIHVwZGF0ZShzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCBkb2lk LCBjb2lkKToKKyAgICAgICAgIiIiCisgICAgICAgIFVwZGF0ZXMgdGhlIERv bWFpbiBDb25zdHJhaW50IG9iamVjdC4KKworICAgICAgICBBcmdzOgorICAg ICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSWQKKyAgICAgICAgICAgIHNp ZDogU2VydmVyIElkCisgICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElkCisg ICAgICAgICAgICBzY2lkOiBTY2hlbWEgSWQKKyAgICAgICAgICAgIGRvaWQ6 IERvbWFpbiBJZAorICAgICAgICAgICAgY29pZDogRG9tYWluIENvbnN0cmFp bnQgSWQKKyAgICAgICAgIiIiCisgICAgICAgIGRhdGEgPSByZXF1ZXN0LmZv cm0gaWYgcmVxdWVzdC5mb3JtIGVsc2UgXAorICAgICAgICAgICAganNvbi5s b2FkcyhyZXF1ZXN0LmRhdGEuZGVjb2RlKCkpCisKKyAgICAgICAgc3RhdHVz LCBTUUwgPSBzZWxmLmdldF9zcWwoZ2lkLCBzaWQsIGRhdGEsIHNjaWQsIGRv aWQsIGNvaWQpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgU1FM IGFuZCBzdGF0dXM6CisgICAgICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBz ZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIoU1FMKQorICAgICAgICAgICAgICAg IGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBp bnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAg ICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAg ICAgICAgICAgICAgc3VjY2Vzcz0xLAorICAgICAgICAgICAgICAgICAgICBp bmZvPSJEb21haW4gQ29uc3RyYWludCB1cGRhdGVkIiwKKyAgICAgICAgICAg ICAgICAgICAgZGF0YT17CisgICAgICAgICAgICAgICAgICAgICAgICAnaWQn OiBjb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2RvaWQnOiBkb2lk LAorICAgICAgICAgICAgICAgICAgICAgICAgJ3NjaWQnOiBzY2lkLAorICAg ICAgICAgICAgICAgICAgICAgICAgJ3NpZCc6IHNpZCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICdnaWQnOiBnaWQsCisgICAgICAgICAgICAgICAgICAg ICAgICAnZGlkJzogZGlkCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgICAgICApCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAg ICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAg ICAgICAgIHN1Y2Nlc3M9MSwKKyAgICAgICAgICAgICAgICAgICAgaW5mbz0i Tm90aGluZyB0byB1cGRhdGUiLAorICAgICAgICAgICAgICAgICAgICBkYXRh PXsKKyAgICAgICAgICAgICAgICAgICAgICAgICdpZCc6IGNvaWQsCisgICAg ICAgICAgICAgICAgICAgICAgICAnZG9pZCc6IGRvaWQsCisgICAgICAgICAg ICAgICAgICAgICAgICAnc2NpZCc6IHNjaWQsCisgICAgICAgICAgICAgICAg ICAgICAgICAnc2lkJzogc2lkLAorICAgICAgICAgICAgICAgICAgICAgICAg J2dpZCc6IGdpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdkaWQnOiBk aWQKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICkK KworICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAg ICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihl KSkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgc3FsKHNl bGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIGRvaWQsIGNvaWQ9Tm9uZSk6Cisg ICAgICAgICIiIgorICAgICAgICBSZXR1cm5zIHRoZSBTUUwgZm9yIHRoZSBE b21haW4gQ29uc3RyYWludCBvYmplY3QuCisKKyAgICAgICAgQXJnczoKKyAg ICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElkCisgICAgICAgICAgICBz aWQ6IFNlcnZlciBJZAorICAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJZAor ICAgICAgICAgICAgc2NpZDogU2NoZW1hIElkCisgICAgICAgICAgICBkb2lk OiBEb21haW4gSWQKKyAgICAgICAgICAgIGNvaWQ6IERvbWFpbiBDb25zdHJh aW50IElkCisgICAgICAgICIiIgorCisgICAgICAgICMgR2V0IFNjaGVtYSBh bmQgRG9tYWluLgorICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8i LmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X2RvbWFpbi5zcWwnXSksCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2lkPWRvaWQpCisgICAg ICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShT UUwpCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1 cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPW5hbWUpCisKKyAg ICAgICAgZG9tYWluLCBzY2hlbWEgPSByZXNbJ3Jvd3MnXVswXQorCisgICAg ICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1w bGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGRvaWQ9ZG9pZCwgY29pZD1jb2lkKQorICAgICAgICBz dGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorICAg ICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVy bmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgZGF0 YSA9IHJlc1sncm93cyddWzBdCisgICAgICAgIGlmICdjb252YWxpZGF0ZWQn IGluIGRhdGE6CisgICAgICAgICAgICBkYXRhWydjb252YWxpZGF0ZWQnXSA9 IEZhbHNlIGlmIGRhdGFbJ2NvbnZhbGlkYXRlZCddIGVsc2UgVHJ1ZQorICAg ICAgICBpZiAnY29ubm9pbmhlcml0JyBpbiBkYXRhOgorICAgICAgICAgICAg ZGF0YVsnY29ubm9pbmhlcml0J10gPSBGYWxzZSBpZiBkYXRhWydjb25ub2lu aGVyaXQnXSBlbHNlIFRydWUKKworICAgICAgICBTUUwgPSByZW5kZXJfdGVt cGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY3JlYXRlLnNxbCdd KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwg ZG9tYWluPWRvbWFpbiwgc2NoZW1hPXNjaGVtYSkKKworICAgICAgICBzcWxf aGVhZGVyID0gIiIiLS0gQ0hFQ0s6IHswfQorCistLSBBTFRFUiBET01BSU4g ezF9IERST1AgQ09OU1RSQUlOVCB7MH07CisKKyIiIi5mb3JtYXQoZGF0YVsn bmFtZSddLHNjaGVtYSArICcuJyArIGRvbWFpbikKKworICAgICAgICBTUUwg PSBzcWxfaGVhZGVyICsgU1FMCisKKyAgICAgICAgcmV0dXJuIGFqYXhfcmVz cG9uc2UocmVzcG9uc2U9U1FMKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlv bgorICAgIGRlZiBtc3FsKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIGRv aWQsIGNvaWQ9Tm9uZSk6CisgICAgICAgICIiIgorICAgICAgICBSZXR1cm5z IHRoZSBtb2RpZmllZCBTUUwuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAg ICAgIGdpZDogU2VydmVyIEdyb3VwIElkCisgICAgICAgICAgICBzaWQ6IFNl cnZlciBJZAorICAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJZAorICAgICAg ICAgICAgc2NpZDogU2NoZW1hIElkCisgICAgICAgICAgICBkb2lkOiBEb21h aW4gSWQKKyAgICAgICAgICAgIGNvaWQ6IERvbWFpbiBDb25zdHJhaW50IElk CisKKyAgICAgICAgUmVxdWlyZWQgQXJnczoKKyAgICAgICAgICAgIG5hbWU6 ICAgQ29uc3RyYWludHMgTmFtZQorICAgICAgICAgICAgY29uc3JjOiBDb25z dHJhaW50cyBDaGVjaworCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAg ICBEb21haW4gQ29uc3RyYWludCBvYmplY3QgaW4ganNvbiBmb3JtYXQuCisg ICAgICAgICIiIgorICAgICAgICBkYXRhID0gcmVxdWVzdC5hcmdzCisKKyAg ICAgICAgaWYgY29pZCBpcyBOb25lOgorICAgICAgICAgICAgcmVxdWlyZWRf YXJncyA9IFsKKyAgICAgICAgICAgICAgICAnbmFtZScsCisgICAgICAgICAg ICAgICAgJ2NvbnNyYycKKyAgICAgICAgICAgIF0KKworICAgICAgICAgICAg Zm9yIGFyZyBpbiByZXF1aXJlZF9hcmdzOgorICAgICAgICAgICAgICAgIGlm IGFyZyBub3QgaW4gZGF0YToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu IG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICAgICAgICAg IHN0YXR1cz00MTAsCisgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNz PTAsCisgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcm1zZz1nZXR0ZXh0 KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb3VsZG4ndCBmaW5k IHRoZSByZXF1aXJlZCBwYXJhbWV0ZXIgKCVzKS4iICUgYXJnCisgICAgICAg ICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgICkKKyAg ICAgICAgc3RhdHVzLCBTUUwgPSBzZWxmLmdldF9zcWwoZ2lkLCBzaWQsIGRh dGEsIHNjaWQsIGRvaWQsIGNvaWQpCisgICAgICAgIGlmIHN0YXR1cyBhbmQg U1FMOgorICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgK KyAgICAgICAgICAgICAgICBkYXRhPVNRTCwKKyAgICAgICAgICAgICAgICBz dGF0dXM9MjAwCisgICAgICAgICAgICApCisgICAgICAgIGVsc2U6CisgICAg ICAgICAgICByZXR1cm4gU1FMCisKKyAgICBkZWYgZ2V0X3NxbChzZWxmLCBn aWQsIHNpZCwgZGF0YSwgc2NpZCwgZG9pZCwgY29pZD1Ob25lKToKKyAgICAg ICAgIiIiCisgICAgICAgIEdlbmVyYXRlcyB0aGUgU1FMIHN0YXRlbWVudHMg dG8gY3JlYXRlL3VwZGF0ZSB0aGUgRG9tYWluIENvbnN0cmFpbnQuCisKKyAg ICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJ ZAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAgICAgIGRp ZDogRGF0YWJhc2UgSWQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJZAor ICAgICAgICAgICAgZG9pZDogRG9tYWluIElkCisgICAgICAgICAgICBjb2lk OiBEb21haW4gQ29uc3RyYWludCBJZAorICAgICAgICAiIiIKKyAgICAgICAg dHJ5OgorICAgICAgICAgICAgaWYgY29pZCBpcyBub3QgTm9uZToKKyAgICAg ICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3Nl bGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9pZD1kb2lk LCBjb2lkPWNvaWQpCisgICAgICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBz ZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKworICAgICAgICAgICAgICAg IGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBG YWxzZSwgaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKwor ICAgICAgICAgICAgICAgIG9sZF9kYXRhID0gcmVzWydyb3dzJ11bMF0KKwor ICAgICAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAg ICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwg J3VwZGF0ZS5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0 YSwgb19kYXRhPW9sZF9kYXRhLCBjb25uPXNlbGYuY29ubgorICAgICAgICAg ICAgICAgICAgICApCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAg ICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1w bGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJ2dldF9kb21haW4uc3FsJ10pLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2lkPWRvaWQpCisgICAg ICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV8y ZGFycmF5KFNRTCkKKworICAgICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6 CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZSwgaW50ZXJuYWxf c2VydmVyX2Vycm9yKGVycm9ybXNnPW5hbWUpCisKKyAgICAgICAgICAgICAg ICBkb21haW4sIHNjaGVtYSA9IHJlc1sncm93cyddWzBdCisKKyAgICAgICAg ICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYu dGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICdjcmVhdGUuc3FsJ10pLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWRhdGEsIGRvbWFp bj1kb21haW4sIHNjaGVtYT1zY2hlbWEpCisgICAgICAgICAgICByZXR1cm4g VHJ1ZSwgU1FMCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAg ICAgICAgICAgIHJldHVybiBGYWxzZSwgaW50ZXJuYWxfc2VydmVyX2Vycm9y KGVycm9ybXNnPXN0cihlKSkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24K KyAgICBkZWYgZGVwZW5kZW50cyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lk LCBkb2lkLCBjb2lkKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVu Y3Rpb24gZ2V0IHRoZSBkZXBlbmRlbnRzIGFuZCByZXR1cm4gYWpheCByZXNw b25zZQorICAgICAgICBmb3IgdGhlIERvbWFpbiBDb25zdHJhaW50IG5vZGUu CisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGdpZDogIFNlcnZlciBH cm91cCBJZAorICAgICAgICAgICAgc2lkOiAgU2VydmVyIElkCisgICAgICAg ICAgICBkaWQ6ICBEYXRhYmFzZSBJZAorICAgICAgICAgICAgc2NpZDogU2No ZW1hIElkCisgICAgICAgICAgICBkb2lkOiBEb21haW4gSWQKKyAgICAgICAg ICAgIGNvaWQ6IERvbWFpbiBDb25zdHJhaW50IElkCisgICAgICAgICIiIgor ICAgICAgICBkZXBlbmRlbnRzX3Jlc3VsdCA9IHNlbGYuZ2V0X2RlcGVuZGVu dHMoc2VsZi5jb25uLCBjb2lkKQorICAgICAgICByZXR1cm4gYWpheF9yZXNw b25zZSgKKyAgICAgICAgICAgICAgICByZXNwb25zZT1kZXBlbmRlbnRzX3Jl c3VsdCwKKyAgICAgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICAg ICAgICAgKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBk ZXBlbmRlbmNpZXMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZG9pZCwg Y29pZCk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIGdl dCB0aGUgZGVwZW5kZW5jaWVzIGFuZCByZXR1cm4gYWpheCByZXNwb25zZQor ICAgICAgICBmb3IgdGhlIERvbWFpbiBDb25zdHJhaW50IG5vZGUuCisKKyAg ICAgICAgQXJnczoKKyAgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElk CisgICAgICAgICAgICBzaWQ6IFNlcnZlciBJZAorICAgICAgICAgICAgZGlk OiBEYXRhYmFzZSBJZAorICAgICAgICAgICAgc2NpZDogU2NoZW1hIElkCisg ICAgICAgICAgICBkb2lkOiBEb21haW4gSWQKKyAgICAgICAgICAgIGNvaWQ6 IERvbWFpbiBDb25zdHJhaW50IElkCisgICAgICAgICIiIgorICAgICAgICBk ZXBlbmRlbmNpZXNfcmVzdWx0ID0gc2VsZi5nZXRfZGVwZW5kZW5jaWVzKHNl bGYuY29ubiwgY29pZCkKKyAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2Uo CisgICAgICAgICAgICAgICAgcmVzcG9uc2U9ZGVwZW5kZW5jaWVzX3Jlc3Vs dCwKKyAgICAgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICAgICAg ICAgKQorCitEb21haW5Db25zdHJhaW50Vmlldy5yZWdpc3Rlcl9ub2RlX3Zp ZXcoYmx1ZXByaW50KQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9t YWlucy9kb21haW4tY29uc3RyYWludHMvc3RhdGljL2ltZy9jb2xsLWRvbWFp bi1jb25zdHJhaW50cy5wbmcgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2Rv bWFpbi1jb25zdHJhaW50cy9zdGF0aWMvaW1nL2NvbGwtZG9tYWluLWNvbnN0 cmFpbnRzLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNjJlMTM3MDVj NTBlNmMwY2Y4ZjE5ZDY4MDA1M2U4NjQzZTI4NzUxCkdJVCBiaW5hcnkgcGF0 Y2gKbGl0ZXJhbCAzMTQKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB2cF4wd0Ih NzM/JCMpZUZQRnYzR2ZNVjE9MlRyTzg0N3tKbGB8dGBRcGFzCnpuPGhTK2w9 ck1ZPlJHUHF2bHlkaXpSSiY+QmBPbSNWfVIteU9NPzdAODYyTTdOQ1I+PjNw XnI9ZndUdTB5UGVGbwp6MTJUTClUXnZJPXR8dW9QVXx8WkY8dGdhSEcqUXNR IT9tJlRxPT8zbUN1fUojRHgzeEBtTX19XmlFPTVOSVdYbmsKemtwbkM0YWkl YT5AO0dnNz11dW1zPTliSUs9RWdkfih1cy0zZ0BJdjAyZ2ZzS15KUF4pZ0g9 bWhCVDc7ZE9IIT9wCnppJkI5VWdPUCF1ZnYleUV1N1AyUWslNShvdjZZRjV3 dD1hWWZxfShMUlhHJDV4JW54WFhfWEtTMjl7dEFBa3xnfApYVylLYWhyaVpR cFlHQ2ttXj5iUDBsK1hrS3l5UlV9CgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEK CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2RvbWFpbi1j b25zdHJhaW50cy9zdGF0aWMvaW1nL2RvbWFpbi1jb25zdHJhaW50cy1iYWQu cG5nIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29uc3RyYWlu dHMvc3RhdGljL2ltZy9kb21haW4tY29uc3RyYWludHMtYmFkLnBuZwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwLi4zMmEwNDViOGZhZmRjMDg2NDBkNTNiMmE4 NmIxZGNhYmNiMGZlMGZkCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA1NzkK emNtVi1KMD0pZitQKTxoOzNLfExrMDAwZTFOSkxUcTAwMG1HMDAwbU8we3tS M0NAbHxEMDAwMDFiNWNoXzBJdHApCno9PlB4JEFXJSRITVIxWjkjUSpAUkVI bWRIQW08PDs9cGBsVERsNiRMRTE1JHxuTTZ5eEozIzYmRn1eKVF4PHAzbgp6 SCNoNHpJSylPdSM3OWZUTUAjSEpLa1koOD9MJFFFTGBDakpNZWFzTT9uZyg7 UUI+fG9OYlgyVT9uK0FVT0gxIWUKek96JXhpP0BkbmNQRVhLUlM/XkN6I2Ft dFFRQm0reFF0KHEjQEthUnFSODtVKVJxPDk8QG1FKllWcShgflYpMHZCCnor R1M8KVZQVyVQViU9JEphZyFKSFhsVjZxWlNgKCRfSHVIM3BkPEVuY0pfQzdm MUBYV3FiR3U+RHU9OHVocGpKKQp6dk40YWdIPGkzVXJNWWdXeUs8ZXlOMVZx K3AydGJBIUc1QzNQTyFtJHF8SHZWI0QkfkpPc3Y7ZnRrX3F2LUNlUVgKelQq Y0MlJEozOz48Nl9MJHQ8S3I4KSF3fHJAbz5jUGFtNFgqK35taWBeS3tHbGN8 eGg8TmROITwwZCFKTVF2ZzhiCnoqayU5IzAwQ2w0TT8/VUsxc3pCTDAwMFNh TkxoMEwwMUZjVTAxRmNWMEdnWl8wMDAwN2JWKkdgMmlwZjM0PFJPZwp6KHA3 MnowMDU2a0xfdCYtKTF7MlozY15xVDFtREVvZHk2SVp1Q1cmczFWIWBeNH0k Z29lPygxOEBiMkRiKmoqdzEKeiU0TShwOyZadz85WmFLQXhvKng7Q09YfTw4 ZnpqcUtSdl4ya0Yxc3B5bVlITWpFMm03SGx8YX5lbUNOd0c4KGk/Cno4SSNg YChraUJyRWJofShRbjhUTDIrJH1iM0huXjdwYEs2UiNfNnpRMiQ/dXg7bFhC WUI+aGtOQEMlZz80dlZCTQpSJGJiTDwwMDJvdlBESExrVjFtaW4wT1NBdwoK bGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZG9tYWlucy9kb21haW4tY29uc3RyYWludHMvc3RhdGljL2ltZy9k b21haW4tY29uc3RyYWludHMucG5nIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlu cy9kb21haW4tY29uc3RyYWludHMvc3RhdGljL2ltZy9kb21haW4tY29uc3Ry YWludHMucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlkMWQyYTA2MWM3 OTQ4MTY4ZDdiMWMyNDc0ZDc2OWIzMTcwOWYxY2YKR0lUIGJpbmFyeSBwYXRj aApsaXRlcmFsIDQwNgp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHZwXjB3QiE2 Mz93eWxgR2JLfVhARjBORTA4e1ZZMm5oSGNeZU1hVSVqYGQKemFJJCMrSHVF S0N7cEtFWktZbj5oKCthSU1IXk1qR2pjczN9ZjlDcXl0JmZ2eDdBVCopeHZe YEw7aGZ7SGlfaVA0Cnp4Z0slJlY/cTY1XzRjKjs4fUclO0pNTVk8U0xNX19f TTRCaTl7RV4hPFlVcFgmbjFnYWA3UGdGd0VrZFMhKCNQPAp6Tm4mQE45T3Fp SyhpJihuVkBaJS1Gb1ZPaDgpLWxlWE1zbSNGXzg4RVc0RHZwYzBmamlyO0I1 ViNPMzZLMXNuIU8KemhSVmZ9NWpTc0dQSD9mPHh1ZGN8dkJvWTwmNWNiPXVU R0I5djE4N0o0SUkraXQ1P2pobjhGe1RzQ1pJV1JhZCRECnpnMSpLOVclY3Uy TnNEKGhFZlZUIyp3bSNwWXc7RDA0KzBFKHVRRT9zYFo2KlpYb3FUdlllWSMo Vm85bzFhIzFSZgp6VmxYbD1HfCk5UChsc3kpRioyfCtGfTUtPihLYXgoR0JC ezFzVmF3fUF2WnJJR3AhUCQhTjN4JTBpQGM+enptfHsKVCliITliS24pQ0B1 NnsxLW9EIU08PTRPXmsKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvZG9tYWluLWNvbnN0cmFp bnRzL3RlbXBsYXRlcy9kb21haW4tY29uc3RyYWludHMvanMvZG9tYWluLWNv bnN0cmFpbnRzLmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4t Y29uc3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1jb25zdHJhaW50cy9qcy9k b21haW4tY29uc3RyYWludHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uMTY2Y2FiYwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL2RvbWFpbnMvZG9tYWluLWNvbnN0cmFpbnRzL3RlbXBsYXRl cy9kb21haW4tY29uc3RyYWludHMvanMvZG9tYWluLWNvbnN0cmFpbnRzLmpz CkBAIC0wLDAgKzEsMTQ5IEBACisvLyBEb21haW4gQ29uc3RyYWludCBNb2R1 bGU6IENvbGxlY3Rpb24gYW5kIE5vZGUKK2RlZmluZSgKKyAgICAgICAgWydq cXVlcnknLCAndW5kZXJzY29yZScsICd1bmRlcnNjb3JlLnN0cmluZycsICdw Z2FkbWluJywgJ3BnYWRtaW4uYnJvd3NlcicsICdhbGVydGlmeScsICdwZ2Fk bWluLmJyb3dzZXIuY29sbGVjdGlvbiddLAorZnVuY3Rpb24oJCwgXywgUywg cGdBZG1pbiwgcGdCcm93c2VyLCBhbGVydGlmeSkgeworCisgIC8vIERlZmlu ZSBEb21haW4gQ29uc3RyYWludCBDb2xsZWN0aW9uIE5vZGUKKyAgaWYgKCFw Z0Jyb3dzZXIuTm9kZXNbJ2NvbGwtZG9tYWluLWNvbnN0cmFpbnRzJ10pIHsK KyAgICB2YXIgZG9tYWluX2NvbnN0cmFpbnRzID0gcGdBZG1pbi5Ccm93c2Vy Lk5vZGVzWydjb2xsLWRvbWFpbi1jb25zdHJhaW50cyddID0KKyAgICAgIHBn QWRtaW4uQnJvd3Nlci5Db2xsZWN0aW9uLmV4dGVuZCh7CisgICAgICAgIG5v ZGU6ICdkb21haW4tY29uc3RyYWludHMnLAorICAgICAgICBsYWJlbDogJ3t7 IF8oJ0RvbWFpbiBDb25zdHJhaW50cycpIH19JywKKyAgICAgICAgdHlwZTog J2NvbGwtZG9tYWluLWNvbnN0cmFpbnRzJywKKyAgICAgICAgY29sdW1uczog WyduYW1lJywgJ2Rlc2NyaXB0aW9uJ10KKyAgICAgIH0pOworICB9OworCisg IC8vIERvbWFpbiBDb25zdHJhaW50IE5vZGUKKyAgaWYgKCFwZ0Jyb3dzZXIu Tm9kZXNbJ2RvbWFpbi1jb25zdHJhaW50cyddKSB7CisgICAgcGdBZG1pbi5C cm93c2VyLk5vZGVzWydkb21haW4tY29uc3RyYWludHMnXSA9IHBnQnJvd3Nl ci5Ob2RlLmV4dGVuZCh7CisgICAgICB0eXBlOiAnZG9tYWluLWNvbnN0cmFp bnRzJywKKyAgICAgIGxhYmVsOiAne3sgXygnRG9tYWluIENvbnN0cmFpbnRz JykgfX0nLAorICAgICAgY29sbGVjdGlvbl90eXBlOiAnY29sbC1kb21haW4t Y29uc3RyYWludHMnLAorICAgICAgaGFzU1FMOiB0cnVlLAorICAgICAgaGFz RGVwZW5kczogdHJ1ZSwKKyAgICAgIHBhcmVudF90eXBlOiBbJ2RvbWFpbidd LAorICAgICAgSW5pdDogZnVuY3Rpb24oKSB7CisgICAgICAgIC8vIEF2b2lk IG11bGl0cGxlIHJlZ2lzdHJhdGlvbiBvZiBtZW51cworICAgICAgICBpZiAo dGhpcy5pbml0aWFsaXplZCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg ICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTsKKworICAgICAgICBwZ0Jy b3dzZXIuYWRkX21lbnVzKFt7CisgICAgICAgICAgbmFtZTogJ2NyZWF0ZV9k b21haW5fb25fY29sbCcsIG5vZGU6ICdjb2xsLWRvbWFpbi1jb25zdHJhaW50 cycsIG1vZHVsZTogdGhpcywKKyAgICAgICAgICBhcHBsaWVzOiBbJ29iamVj dCcsICdjb250ZXh0J10sIGNhbGxiYWNrOiAnc2hvd19vYmpfcHJvcGVydGll cycsCisgICAgICAgICAgY2F0ZWdvcnk6ICdjcmVhdGUnLCBwcmlvcml0eTog NCwgbGFiZWw6ICd7eyBfKCdEb21haW4gQ29uc3RyYWludC4uLicpIH19JywK KyAgICAgICAgICBpY29uOiAnd2NUYWJJY29uIGljb24tZG9tYWluLWNvbnN0 cmFpbnRzJywgZGF0YToge2FjdGlvbjogJ2NyZWF0ZScsIGNoZWNrOiB0cnVl fSwKKyAgICAgICAgICBlbmFibGU6ICdjYW5DcmVhdGUnCisgICAgICAgIH0s eworICAgICAgICAgIG5hbWU6ICdjcmVhdGVfZG9tYWluLWNvbnN0cmFpbnRz Jywgbm9kZTogJ2RvbWFpbi1jb25zdHJhaW50cycsIG1vZHVsZTogdGhpcywK KyAgICAgICAgICBhcHBsaWVzOiBbJ29iamVjdCcsICdjb250ZXh0J10sIGNh bGxiYWNrOiAnc2hvd19vYmpfcHJvcGVydGllcycsCisgICAgICAgICAgY2F0 ZWdvcnk6ICdjcmVhdGUnLCBwcmlvcml0eTogNCwgbGFiZWw6ICd7eyBfKCdE b21haW4gQ29uc3RyYWludC4uLicpIH19JywKKyAgICAgICAgICBpY29uOiAn d2NUYWJJY29uIGljb24tZG9tYWluLWNvbnN0cmFpbnRzJywgZGF0YToge2Fj dGlvbjogJ2NyZWF0ZScsIGNoZWNrOiB0cnVlfSwKKyAgICAgICAgICBlbmFi bGU6ICdjYW5DcmVhdGUnCisgICAgICAgIH0seworICAgICAgICAgIG5hbWU6 ICdjcmVhdGVfZG9tYWluLWNvbnN0cmFpbnRzJywgbm9kZTogJ2RvbWFpbics IG1vZHVsZTogdGhpcywKKyAgICAgICAgICBhcHBsaWVzOiBbJ29iamVjdCcs ICdjb250ZXh0J10sIGNhbGxiYWNrOiAnc2hvd19vYmpfcHJvcGVydGllcycs CisgICAgICAgICAgY2F0ZWdvcnk6ICdjcmVhdGUnLCBwcmlvcml0eTogNCwg bGFiZWw6ICd7eyBfKCdEb21haW4gQ29uc3RyYWludC4uLicpIH19JywKKyAg ICAgICAgICBpY29uOiAnd2NUYWJJY29uIGljb24tZG9tYWluLWNvbnN0cmFp bnRzJywgZGF0YToge2FjdGlvbjogJ2NyZWF0ZScsIGNoZWNrOiBmYWxzZX0s CisgICAgICAgICAgZW5hYmxlOiAnY2FuQ3JlYXRlJworICAgICAgICB9Cisg ICAgICAgIF0pOworCisgICAgICB9LAorICAgICAgY2FuRHJvcDogcGdCcm93 c2VyLk5vZGVzWydzY2hlbWEnXS5jYW5DaGlsZERyb3AsCisgICAgICBtb2Rl bDogcGdBZG1pbi5Ccm93c2VyLk5vZGUuTW9kZWwuZXh0ZW5kKHsKKyAgICAg ICAgZGVmYXVsdHM6IHsKKyAgICAgICAgICBuYW1lOiB1bmRlZmluZWQsCisg ICAgICAgICAgb2lkOiB1bmRlZmluZWQsCisgICAgICAgICAgZGVzY3JpcHRp b246IHVuZGVmaW5lZCwKKyAgICAgICAgICBjb25zcmM6IHVuZGVmaW5lZCwK KyAgICAgICAgICBjb25ub2luaGVyaXQ6IHVuZGVmaW5lZCwKKyAgICAgICAg ICBjb252YWxpZGF0ZWQ6IHVuZGVmaW5lZCwKKyAgICAgICAgICBjb252YWxp ZGF0ZWRfcDogdW5kZWZpbmVkCisgICAgICAgIH0sCisgICAgICAgIC8vIERv bWFpbiBDb25zdHJhaW50IFNjaGVtYQorICAgICAgICBzY2hlbWE6IFt7Cisg ICAgICAgICAgaWQ6ICduYW1lJywgbGFiZWw6ICd7eyBfKCdOYW1lJykgfX0n LCB0eXBlOid0ZXh0JywgY2VsbDonc3RyaW5nJywKKyAgICAgICAgICBkaXNh YmxlZDogJ2lzRGlzYWJsZWQnCisgICAgICAgIH0seworICAgICAgICAgIGlk OiAnb2lkJywgbGFiZWw6J3t7IF8oJ09JRCcpIH19JywgY2VsbDogJ3N0cmlu ZycsCisgICAgICAgICAgdHlwZTogJ3RleHQnICwgbW9kZTogWydwcm9wZXJ0 aWVzJ10KKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdkZXNjcmlwdGlv bicsIGxhYmVsOiAne3sgXygnQ29tbWVudCcpIH19JywgdHlwZTogJ211bHRp bGluZScsIGNlbGw6CisgICAgICAgICAgJ3N0cmluZycsIG1vZGU6IFsncHJv cGVydGllcycsICdjcmVhdGUnLCAnZWRpdCddLCBtaW5fdmVyc2lvbjogOTA1 MDAsCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAnY29uc3JjJywgbGFi ZWw6ICd7eyBfKCdDaGVjaycpIH19JywgdHlwZTogJ211bHRpbGluZScsIGNl bDoKKyAgICAgICAgICAnc3RyaW5nJywgZ3JvdXA6ICd7eyBfKCdEZWZpbml0 aW9uJykgfX0nLCBtb2RlOiBbJ3Byb3BlcnRpZXMnLAorICAgICAgICAgICdj cmVhdGUnLCAnZWRpdCddLCBkaXNhYmxlZDogZnVuY3Rpb24obSkgeyByZXR1 cm4gIW0uaXNOZXcoKTsgfQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDog J2Nvbm5vaW5oZXJpdCcsIGxhYmVsOiAne3sgXygnTm8gSW5oZXJpdCcpIH19 JywgdHlwZToKKyAgICAgICAgICAnc3dpdGNoJywgY2VsbDogJ2Jvb2xlYW4n LCBncm91cDogJ3t7IF8oJ0RlZmluaXRpb24nKSB9fScsIG1vZGU6CisgICAg ICAgICAgWydwcm9wZXJ0aWVzJywgJ2NyZWF0ZScsICdlZGl0J10sIGRpc2Fi bGVkOiAnaXNEaXNhYmxlZCcsCisgICAgICAgICAgdmlzaWJsZTogZmFsc2UK KyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdjb252YWxpZGF0ZWQnLCBs YWJlbDogInt7IF8oIkRvbid0IFZhbGlkYXRlIikgfX0iLCB0eXBlOiAnc3dp dGNoJywgY2VsbDoKKyAgICAgICAgICAnYm9vbGVhbicsIGdyb3VwOiAne3sg XygnRGVmaW5pdGlvbicpIH19JywgZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsK KyAgICAgICAgICBpZiAoIW0uaXNOZXcoKSkgeworICAgICAgICAgICAgdmFy IHNlcnZlciA9IHRoaXMubm9kZV9pbmZvLnNlcnZlcjsKKyAgICAgICAgICAg IGlmIChzZXJ2ZXIudmVyc2lvbiA8IDkwMjAwKQorICAgICAgICAgICAgewor ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAg ICAgICAgICAgIGVsc2UgaWYoIW0uZ2V0KCdjb252YWxpZGF0ZWQnKSkKKyAg ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg ICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg ICAgICB9CisgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgfSwK KyAgICAgICAgICBtb2RlOiBbJ2NyZWF0ZScsICdlZGl0J10sIHZpc2libGU6 IGZ1bmN0aW9uKG0pIHsgcmV0dXJuICFtLmlzTmV3KCkgfQorICAgICAgICB9 LHsKKyAgICAgICAgICBpZDogJ2NvbnZhbGlkYXRlZF9wJywgbGFiZWw6ICd7 eyBfKCdWYWxpZD8nKSB9fScsIHR5cGU6ICdzd2l0Y2gnLCBjZWxsOgorICAg ICAgICAgICdib29sZWFuJywgZ3JvdXA6ICd7eyBfKCdEZWZpbml0aW9uJykg fX0nLCBkaXNhYmxlZDogJ2lzRGlzYWJsZWQnLAorICAgICAgICAgIG1vZGU6 IFsncHJvcGVydGllcyddCisgICAgICAgIH1dLAorICAgICAgICAvLyBDbGll bnQgU2lkZSBWYWxpZGF0aW9uCisgICAgICAgIHZhbGlkYXRlOiBmdW5jdGlv bigpIHsKKyAgICAgICAgICB2YXIgZXJyID0ge30sCisgICAgICAgICAgICAg IGVycm1zZzsKKworICAgICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKHRoaXMu Z2V0KCduYW1lJykpIHx8IFN0cmluZyh0aGlzLmdldCgnbmFtZScpKS5yZXBs YWNlKC9eXHMrfFxzKyQvZywgJycpID09ICcnKSB7CisgICAgICAgICAgICBl cnJbJ25hbWUnXSA9ICd7eyBfKCdOYW1lIGNhbiBub3QgYmUgZW1wdHkhJykg fX0nOworICAgICAgICAgICAgZXJybXNnID0gZXJybXNnIHx8IGVyclsnbmFt ZSddOworICAgICAgICAgIH0KKworICAgICAgICAgIGlmIChfLmlzVW5kZWZp bmVkKHRoaXMuZ2V0KCdjb25zcmMnKSkgfHwgU3RyaW5nKHRoaXMuZ2V0KCdj b25zcmMnKSkucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJykgewor ICAgICAgICAgICAgZXJyWydjb25zcmMnXSA9ICd7eyBfKCdDaGVjayBjYW4g bm90IGJlIGVtcHR5IScpIH19JzsKKyAgICAgICAgICAgIGVycm1zZyA9IGVy cm1zZyB8fCBlcnJbJ2NvbnNyYyddOworICAgICAgICAgIH0KKworICAgICAg ICAgIHRoaXMuZXJyb3JNb2RlbC5jbGVhcigpLnNldChlcnIpOworCisgICAg ICAgICAgaWYgKF8uc2l6ZShlcnIpKSB7CisgICAgICAgICAgICB0aGlzLnRy aWdnZXIoJ29uLXN0YXR1cycsIHttc2c6IGVycm1zZ30pOworICAgICAgICAg ICAgcmV0dXJuIGVycm1zZzsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBy ZXR1cm4gbnVsbDsKKworICAgICAgICB9LAorICAgICAgICBpc0Rpc2FibGVk OiBmdW5jdGlvbihtKXsKKyAgICAgICAgICBpZiAoIW0uaXNOZXcoKSkgewor ICAgICAgICAgICAgdmFyIHNlcnZlciA9IHRoaXMubm9kZV9pbmZvLnNlcnZl cjsKKyAgICAgICAgICAgIGlmIChzZXJ2ZXIudmVyc2lvbiA8IDkwMjAwKQor ICAgICAgICAgICAgeworICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg ICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgcmV0dXJuIGZh bHNlOworICAgICAgICB9CisgICAgICB9KSwKKyAgfSk7CisKKyAgfQorCisg IHJldHVybiBwZ0Jyb3dzZXIuTm9kZXNbJ2RvbWFpbiddOworfSk7CmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJh aW50cy90ZW1wbGF0ZXMvZG9tYWluLWNvbnN0cmFpbnRzL3NxbC85LjFfcGx1 cy9jcmVhdGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4t Y29uc3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1jb25zdHJhaW50cy9zcWwv OS4xX3BsdXMvY3JlYXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi5iZTk0M2QyCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29uc3RyYWludHMvdGVtcGxhdGVz L2RvbWFpbi1jb25zdHJhaW50cy9zcWwvOS4xX3BsdXMvY3JlYXRlLnNxbApA QCAtMCwwICsxLDMgQEAKK3slIGlmIGRhdGEgYW5kIHNjaGVtYSBhbmQgZG9t YWluICV9CitBTFRFUiBET01BSU4ge3sgY29ubnxxdElkZW50KHNjaGVtYSwg ZG9tYWluKSB9fQorICAgIEFERCBDT05TVFJBSU5UIHt7IGNvbm58cXRJZGVu dChkYXRhLm5hbWUpIH19IENIRUNLICh7eyBkYXRhLmNvbnNyYyB9fSk7eyUg ZW5kaWYgLSV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5z L2RvbWFpbi1jb25zdHJhaW50cy90ZW1wbGF0ZXMvZG9tYWluLWNvbnN0cmFp bnRzL3NxbC85LjFfcGx1cy9kZWxldGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv ZG9tYWlucy9kb21haW4tY29uc3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1j b25zdHJhaW50cy9zcWwvOS4xX3BsdXMvZGVsZXRlLnNxbApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNjBjM2MwCi0tLSAvZGV2L251 bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29uc3Ry YWludHMvdGVtcGxhdGVzL2RvbWFpbi1jb25zdHJhaW50cy9zcWwvOS4xX3Bs dXMvZGVsZXRlLnNxbApAQCAtMCwwICsxLDQgQEAKK3slIGlmIGRhdGEgJX0K K0FMVEVSIERPTUFJTiB7eyBjb25ufHF0SWRlbnQoZGF0YS5uc3BuYW1lLCBk YXRhLnJlbG5hbWUpIH19CisgICAgRFJPUCBDT05TVFJBSU5UIHt7IGNvbm58 cXRJZGVudChkYXRhLm5hbWUpIH19OworeyUgZW5kaWYgJX0KZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvZG9tYWluLWNvbnN0cmFpbnRz L3RlbXBsYXRlcy9kb21haW4tY29uc3RyYWludHMvc3FsLzkuMV9wbHVzL2dl dF9kb21haW4uc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4t Y29uc3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1jb25zdHJhaW50cy9zcWwv OS4xX3BsdXMvZ2V0X2RvbWFpbi5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uMTA0MGMwZQotLS0gL2Rldi9udWxsCisrKyBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL2RvbWFpbnMvZG9tYWluLWNvbnN0cmFpbnRzL3RlbXBs YXRlcy9kb21haW4tY29uc3RyYWludHMvc3FsLzkuMV9wbHVzL2dldF9kb21h aW4uc3FsCkBAIC0wLDAgKzEsOCBAQAorU0VMRUNUCisgICAgZC50eXBuYW1l IGFzIGRvbWFpbiwgYm4ubnNwbmFtZSBhcyBzY2hlbWEKK0ZST00KKyAgICBw Z190eXBlIGQKK0pPSU4KKyAgICBwZ19uYW1lc3BhY2UgYm4gT04gYm4ub2lk PWQudHlwbmFtZXNwYWNlCitXSEVSRQorICAgIGQub2lkID0ge3tkb2lkfX07 CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2RvbWFpbi1j b25zdHJhaW50cy90ZW1wbGF0ZXMvZG9tYWluLWNvbnN0cmFpbnRzL3NxbC85 LjFfcGx1cy9nZXRfb2lkLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMv ZG9tYWluLWNvbnN0cmFpbnRzL3RlbXBsYXRlcy9kb21haW4tY29uc3RyYWlu dHMvc3FsLzkuMV9wbHVzL2dldF9vaWQuc3FsCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLmY1OWUwOGMKLS0tIC9kZXYvbnVsbAorKysg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50cy90 ZW1wbGF0ZXMvZG9tYWluLWNvbnN0cmFpbnRzL3NxbC85LjFfcGx1cy9nZXRf b2lkLnNxbApAQCAtMCwwICsxLDcgQEAKK1NFTEVDVAorICAgIG9pZCwgY29u bmFtZSBhcyBuYW1lCitGUk9NCisgICAgcGdfY29uc3RyYWludAorV0hFUkUK KyAgICBjb250eXBpZCA9IHt7ZG9pZH19OjpvaWQKKyAgICBBTkQgY29ubmFt ZT17eyBuYW1lfHF0TGl0ZXJhbCB9fTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL2RvbWFpbnMvZG9tYWluLWNvbnN0cmFpbnRzL3RlbXBsYXRlcy9k b21haW4tY29uc3RyYWludHMvc3FsLzkuMV9wbHVzL3Byb3BlcnRpZXMuc3Fs IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29uc3RyYWludHMv dGVtcGxhdGVzL2RvbWFpbi1jb25zdHJhaW50cy9zcWwvOS4xX3BsdXMvcHJv cGVydGllcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uMDQzZjAxMQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L2RvbWFpbnMvZG9tYWluLWNvbnN0cmFpbnRzL3RlbXBsYXRlcy9kb21haW4t Y29uc3RyYWludHMvc3FsLzkuMV9wbHVzL3Byb3BlcnRpZXMuc3FsCkBAIC0w LDAgKzEsMTQgQEAKK1NFTEVDVAorICAgIGMub2lkLCBjb25uYW1lIEFTIG5h bWUsIHR5cG5hbWUgQVMgcmVsbmFtZSwgbnNwbmFtZSwKKyAgICByZWdleHBf cmVwbGFjZShwZ19nZXRfY29uc3RyYWludGRlZihjLm9pZCwgdHJ1ZSksIEUn Q0hFQ0sgXFwoKC4qKVxcKS4qJywgRSdcXDEnKSBBUyBjb25zcmMKK0ZST00K KyAgICBwZ19jb25zdHJhaW50IGMKK0pPSU4KKyAgICBwZ190eXBlIHQgT04g dC5vaWQ9Y29udHlwaWQKK0pPSU4KKyAgICBwZ19uYW1lc3BhY2UgbmwgT04g bmwub2lkPXR5cG5hbWVzcGFjZQorV0hFUkUKKyAgICBjb250eXBlID0gJ2Mn IEFORCBjb250eXBpZCA9ICB7e2RvaWR9fTo6b2lkCit7JSBpZiBjb2lkICV9 CisgICAgQU5EIGMub2lkID0ge3sgY29pZCB9fQoreyUgZW5kaWYgJX0KZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvZG9tYWluLWNvbnN0 cmFpbnRzL3RlbXBsYXRlcy9kb21haW4tY29uc3RyYWludHMvc3FsLzkuMV9w bHVzL3VwZGF0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2RvbWFp bi1jb25zdHJhaW50cy90ZW1wbGF0ZXMvZG9tYWluLWNvbnN0cmFpbnRzL3Nx bC85LjFfcGx1cy91cGRhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLjI5OWJhNmIKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50cy90ZW1wbGF0 ZXMvZG9tYWluLWNvbnN0cmFpbnRzL3NxbC85LjFfcGx1cy91cGRhdGUuc3Fs CkBAIC0wLDAgKzEsMyBAQAoreyUgaWYgZGF0YS5uYW1lICV9CitBTFRFUiBE T01BSU4ge3sgY29ubnxxdElkZW50KG9fZGF0YS5uc3BuYW1lLCBvX2RhdGEu cmVsbmFtZSkgfX0KKyAgICBSRU5BTUUgQ09OU1RSQUlOVCB7eyBjb25ufHF0 SWRlbnQob19kYXRhLm5hbWUpIH19IFRPIHt7IGNvbm58cXRJZGVudChkYXRh Lm5hbWUpIH19O3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50cy90ZW1wbGF0ZXMvZG9t YWluLWNvbnN0cmFpbnRzL3NxbC85LjJfcGx1cy9jcmVhdGUuc3FsIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29uc3RyYWludHMvdGVtcGxh dGVzL2RvbWFpbi1jb25zdHJhaW50cy9zcWwvOS4yX3BsdXMvY3JlYXRlLnNx bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MTNjMzhk Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9k b21haW4tY29uc3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1jb25zdHJhaW50 cy9zcWwvOS4yX3BsdXMvY3JlYXRlLnNxbApAQCAtMCwwICsxLDkgQEAKK3sl IGlmIGRhdGEgYW5kIHNjaGVtYSBhbmQgZG9tYWluICV9CitBTFRFUiBET01B SU4ge3sgY29ubnxxdElkZW50KHNjaGVtYSwgZG9tYWluKSB9fQorICAgIEFE RCBDT05TVFJBSU5UIHt7IGNvbm58cXRJZGVudChkYXRhLm5hbWUpIH19IENI RUNLICh7eyBkYXRhLmNvbnNyYyB9fSl7JSBpZiBkYXRhLmNvbnZhbGlkYXRl ZCAlfQorCisgICAgTk9UIFZBTElEeyUgZW5kaWYgJX07eyUgaWYgZGF0YS5k ZXNjcmlwdGlvbiAlfQorCisKK0NPTU1FTlQgT04gQ09OU1RSQUlOVCB7eyBj b25ufHF0SWRlbnQoZGF0YS5uYW1lKSB9fSBPTiBET01BSU4ge3sgY29ubnxx dElkZW50KHNjaGVtYSwgZG9tYWluKSB9fQorICAgIElTICd7eyBkYXRhLmRl c2NyaXB0aW9uIH19Jzt7JSBlbmRpZiAlfXslIGVuZGlmICV9CmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50 cy90ZW1wbGF0ZXMvZG9tYWluLWNvbnN0cmFpbnRzL3NxbC85LjJfcGx1cy9k ZWxldGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29u c3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1jb25zdHJhaW50cy9zcWwvOS4y X3BsdXMvZGVsZXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi4yNjBjM2MwCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZG9tYWlucy9kb21haW4tY29uc3RyYWludHMvdGVtcGxhdGVzL2Rv bWFpbi1jb25zdHJhaW50cy9zcWwvOS4yX3BsdXMvZGVsZXRlLnNxbApAQCAt MCwwICsxLDQgQEAKK3slIGlmIGRhdGEgJX0KK0FMVEVSIERPTUFJTiB7eyBj b25ufHF0SWRlbnQoZGF0YS5uc3BuYW1lLCBkYXRhLnJlbG5hbWUpIH19Cisg ICAgRFJPUCBDT05TVFJBSU5UIHt7IGNvbm58cXRJZGVudChkYXRhLm5hbWUp IH19OworeyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L2RvbWFpbnMvZG9tYWluLWNvbnN0cmFpbnRzL3RlbXBsYXRlcy9kb21haW4t Y29uc3RyYWludHMvc3FsLzkuMl9wbHVzL2dldF9kb21haW4uc3FsIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29uc3RyYWludHMvdGVtcGxh dGVzL2RvbWFpbi1jb25zdHJhaW50cy9zcWwvOS4yX3BsdXMvZ2V0X2RvbWFp bi5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTA0 MGMwZQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFp bnMvZG9tYWluLWNvbnN0cmFpbnRzL3RlbXBsYXRlcy9kb21haW4tY29uc3Ry YWludHMvc3FsLzkuMl9wbHVzL2dldF9kb21haW4uc3FsCkBAIC0wLDAgKzEs OCBAQAorU0VMRUNUCisgICAgZC50eXBuYW1lIGFzIGRvbWFpbiwgYm4ubnNw bmFtZSBhcyBzY2hlbWEKK0ZST00KKyAgICBwZ190eXBlIGQKK0pPSU4KKyAg ICBwZ19uYW1lc3BhY2UgYm4gT04gYm4ub2lkPWQudHlwbmFtZXNwYWNlCitX SEVSRQorICAgIGQub2lkID0ge3tkb2lkfX07CmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50cy90ZW1wbGF0 ZXMvZG9tYWluLWNvbnN0cmFpbnRzL3NxbC85LjJfcGx1cy9nZXRfb2lkLnNx bCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvZG9tYWluLWNvbnN0cmFpbnRz L3RlbXBsYXRlcy9kb21haW4tY29uc3RyYWludHMvc3FsLzkuMl9wbHVzL2dl dF9vaWQuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LmY1OWUwOGMKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9k b21haW5zL2RvbWFpbi1jb25zdHJhaW50cy90ZW1wbGF0ZXMvZG9tYWluLWNv bnN0cmFpbnRzL3NxbC85LjJfcGx1cy9nZXRfb2lkLnNxbApAQCAtMCwwICsx LDcgQEAKK1NFTEVDVAorICAgIG9pZCwgY29ubmFtZSBhcyBuYW1lCitGUk9N CisgICAgcGdfY29uc3RyYWludAorV0hFUkUKKyAgICBjb250eXBpZCA9IHt7 ZG9pZH19OjpvaWQKKyAgICBBTkQgY29ubmFtZT17eyBuYW1lfHF0TGl0ZXJh bCB9fTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvZG9t YWluLWNvbnN0cmFpbnRzL3RlbXBsYXRlcy9kb21haW4tY29uc3RyYWludHMv c3FsLzkuMl9wbHVzL3Byb3BlcnRpZXMuc3FsIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv ZG9tYWlucy9kb21haW4tY29uc3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1j b25zdHJhaW50cy9zcWwvOS4yX3BsdXMvcHJvcGVydGllcy5zcWwKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzRkOGIzNAotLS0gL2Rl di9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvZG9tYWluLWNv bnN0cmFpbnRzL3RlbXBsYXRlcy9kb21haW4tY29uc3RyYWludHMvc3FsLzku Ml9wbHVzL3Byb3BlcnRpZXMuc3FsCkBAIC0wLDAgKzEsMTcgQEAKK1NFTEVD VAorICAgIGMub2lkLCBjb25uYW1lIEFTIG5hbWUsIHR5cG5hbWUgQVMgcmVs bmFtZSwgbnNwbmFtZSwgZGVzY3JpcHRpb24sCisgICAgcmVnZXhwX3JlcGxh Y2UocGdfZ2V0X2NvbnN0cmFpbnRkZWYoYy5vaWQsIHRydWUpLCBFJ0NIRUNL IFxcKCguKilcXCkuKicsIEUnXFwxJykgQVMgY29uc3JjLAorICAgIGNvbm5v aW5oZXJpdCwgY29udmFsaWRhdGVkLCBjb252YWxpZGF0ZWQgQVMgY29udmFs aWRhdGVkX3AKK0ZST00KKyAgICBwZ19jb25zdHJhaW50IGMKK0pPSU4KKyAg ICBwZ190eXBlIHQgT04gdC5vaWQ9Y29udHlwaWQKK0pPSU4KKyAgICBwZ19u YW1lc3BhY2UgbmwgT04gbmwub2lkPXR5cG5hbWVzcGFjZQorTEVGVCBPVVRF UiBKT0lOCisgICAgcGdfZGVzY3JpcHRpb24gZGVzIE9OIChkZXMub2Jqb2lk PWMub2lkIEFORCBkZXMuY2xhc3NvaWQ9J3BnX2NvbnN0cmFpbnQnOjpyZWdj bGFzcykKK1dIRVJFCisgICAgY29udHlwZSA9ICdjJyBBTkQgY29udHlwaWQg PSAge3tkb2lkfX06Om9pZAoreyUgaWYgY29pZCAlfQorICAgIEFORCBjLm9p ZCA9IHt7IGNvaWQgfX0KK3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50cy90ZW1wbGF0 ZXMvZG9tYWluLWNvbnN0cmFpbnRzL3NxbC85LjJfcGx1cy91cGRhdGUuc3Fs IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29uc3RyYWludHMv dGVtcGxhdGVzL2RvbWFpbi1jb25zdHJhaW50cy9zcWwvOS4yX3BsdXMvdXBk YXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5i NDM2ZjNhCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9t YWlucy9kb21haW4tY29uc3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1jb25z dHJhaW50cy9zcWwvOS4yX3BsdXMvdXBkYXRlLnNxbApAQCAtMCwwICsxLDEz IEBACit7JSBzZXQgbmFtZSA9IG9fZGF0YS5uYW1lICV9Cit7JSBpZiBkYXRh Lm5hbWUgJX0KK3slIHNldCBuYW1lID0gZGF0YS5uYW1lICV9CitBTFRFUiBE T01BSU4ge3sgY29ubnxxdElkZW50KG9fZGF0YS5uc3BuYW1lLCBvX2RhdGEu cmVsbmFtZSkgfX0KKyAgICBSRU5BTUUgQ09OU1RSQUlOVCB7eyBjb25ufHF0 SWRlbnQob19kYXRhLm5hbWUpIH19IFRPIHt7IGNvbm58cXRJZGVudChkYXRh Lm5hbWUpIH19O3slIGVuZGlmIC0lfXslIGlmIGRhdGEuY29udmFsaWRhdGVk ICV9CisKKworQUxURVIgRE9NQUlOIHt7IGNvbm58cXRJZGVudChvX2RhdGEu bnNwbmFtZSwgb19kYXRhLnJlbG5hbWUpIH19CisgICAgVkFMSURBVEUgQ09O U1RSQUlOVCB7eyBjb25ufHF0SWRlbnQobmFtZSkgfX17JSBlbmRpZiAtJX17 JSBpZiBkYXRhLmRlc2NyaXB0aW9uICV9CisKKworQ09NTUVOVCBPTiBDT05T VFJBSU5UIHt7IGNvbm58cXRJZGVudChuYW1lKSB9fSBPTiBET01BSU4ge3sg Y29ubnxxdElkZW50KG9fZGF0YS5uc3BuYW1lLCBvX2RhdGEucmVsbmFtZSkg fX0KKyAgICBJUyAne3sgZGF0YS5kZXNjcmlwdGlvbiB9fSc7eyUgZW5kaWYg JX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvc3RhdGlj L2ltZy9jb2xsLWRvbWFpbi5wbmcgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5z L3N0YXRpYy9pbWcvY29sbC1kb21haW4ucG5nCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAuLjU1NjIxNTI4YTFkYmE0OTI4NTM4ZmU1NTU3YjliOTg4ZWQ3OGQ2 YWIKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDQ2Mgp6Y21lQVNATj8ob2xI eWB1VkJxIWlhMHZwXjB3QiE2Mz93eWxgR2JLfVU0VCFCRTBCSmVvcWZXPTtn RnswUEQ4X28KemkmcE5fKEspQjdgRlBpJTJpeGBAdjlMVSh0TlVRKiFLMWN6 WE94dWdnb0dUXygjcEB6ZjRKdyEhekhWKWAzRjdUCnpkLVVtfUh9YGlSSWlq Y2NAV3EjPiZwdGtSYFNzekc1NFV6NnpXNG1nP01Mc2daOWpiYj5FfnkhelRT QjlgUmUxKAp6alMxUzk5KF85aEBZQzRgQTVZKV5fXj5ASjMrTXZJa3w0aWUy OFUtaSh0c1MhMCp9YUlBbmdJaFpZUSh0ZlEpdWUKejdzbjhaJWJ8VUAjaE1n RVNVdnM0d0tvU3hPPn57Tz0tWXEkOF8hciktXmUlNC1sNmYtSm94MSU4fUZJ Vng+RkNXCnpQTVZ3bHVRR2JrUDFiY1N3VlYwZF8/UFpiWlZpcyVIZVlUV3lV KiRPdllwJHVUYzNRTGJEPzJ0ck9uRHVoWmE+Zgp6PTNkX3soekVSOXh0KDxu M1VzQkk0U05DP1khckJXPG0yYG4+eURSeWckdW9FOFF4fWJvMUQwcXc7dCN1 KWVfZjsKemw5YUBmUklCOG9SM09EKldNRjhaWWlPaXZVPklVI1V9YSkjV24h WGpVfXxNeFVAPW93NG47JDVlb0FJcUJ9OVhQCmVDMEdNVXdVdlB4TThtMStw PSpFfDcoOEE1VC1HQHlHeXdvUkNDMkxqCgpsaXRlcmFsIDAKSGNtVj9kMDAw MDEKCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3N0YXRp Yy9pbWcvZG9tYWluLXNtLnBuZyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMv c3RhdGljL2ltZy9kb21haW4tc20ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAuLjc1MjFjZGRlYWFhZjBlZTRlM2M2MGU5NDgwNzhkNzBlMTdlMDY4OTMK R0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDQwMQp6Y21lQVNATj8ob2xIeWB1 VkJxIWlhMHZwXjB3QiE2Mz93eWxgR2JLfVQ3WFo4RTBEZXU5ZXUqVjtnRnsw S2BwSWcKemM2S2ByNEllSUFjfVEzSHhWYD0zeStAeHVkVUpwR2t0MkZ+UG9J NSFeNzhBJENtKExASmJjWVI9OzRibV9udj5iCnp7cGtJKj9UN0QjZ3lpU3ZL WVI3e19TNFRkb194T2dfO1hgfF9ON09rJk9pS2dfUUEpfl9kbExvODV7dyRp TG9UZQp6RlBPcE0qXk0rSGhxSiZWdktVQnZmVSg9alkmIyQkJDx4SSNNQjtN cWBJQUJwMjBSVDl3VVhrYUwoMVIocE9uP2MKej4zODwrZT5LYU4yeyUwSmRA c01iWSQrMTNaJiVaPCUhUCsqU051KyMoe1JyPXtfS3hVaHN3SGRJRDBRV1RD QnZECnopXmt5O0BndWBFI1JBQyNsYEpjbmVsUzByeGtLTjdiMUI+SDU2Z1gp MCZQPCphZzhXUk5pMGRWTi1qelRRVmQyMAp6aDZjS1pNIUUpdUF3fnZQQ2RP N0tDZld3M1J0NSRaR2dha0tIMDApfFdUc1VARyNGVGRIR291RzhKSXlkb1NH aUcKUTJCPzktKTc4JnFvbGA7KzAzX3EzZ2E3fmwKCmxpdGVyYWwgMApIY21W P2QwMDAwMQoKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMv c3RhdGljL2ltZy9kb21haW4ucG5nIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlu cy9zdGF0aWMvaW1nL2RvbWFpbi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MC4uNDJjYTkyOTMyNTg1NGI4ZjM0Nzg3NDI1ZTgwOTRkMDhjNzU5ODNiYwpH SVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNDI0CnpjbWVBU0BOPyhvbEh5YHVW QnEhaWEwdnBeMHdCITYzP3d5bGBHYkt9UEptQntFMEJKZW9xZlc9O2dGezBQ RDheNwp6aSZzNmBiTDhveEh9YGlSZEhVPypsYjJyfkpeNlRoPWl4XiR6VFNX Uzw/Zj5vSCtDSFVhXn1wVmZgYVd2TXQ3Zm0KengmOEY+amZkfkFZKEhGYG1V aVJHPVc5PHNVd1FCQEtSPkBRTEhvKyVQWnVBM0l7KXl+KiQxRF9Kb3RGKHt6 dkh0CnpvJXVsZjcpeWZ1ZipCbTEtQURzK0kxNC0/aS1FS1U3YHZVIXdnV1BY SnpYM19CcmNicGU9WEZjQW1TRk5lQzNxJgp6bCFaKyhSc1lOMTImLU5Xe1Aq XiM8cng4Ml8yLStpaSZTcWZHZ09gSmNqQDswMUBIVEh7JiY3I3Y/an1JKT1K Nm0KemVgfmhwcFpuNz9XQXwleiF9VDZwZj56MElqYlpyUzVJQ0QqMjc1Kl9i QW8pcjh0I1ZnNEEqTHopO3hjNEpLcTAzCnpYWEN9emQpWXdpUlpDbldOPlVP X1FtdkFVUWhea01rJTZJc3VBen54Zm5rVnxmdDg3fG01R1ZBZnZKXiZmeUdR IQpxSVRRYEtgNi0hY2xASlhFbVM3RGEpbTg+KDVEbGxNaHBxdT9WRE5QSGI2 TXc8JjskVk9SPUZxdQoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlu cy9qcy9kb21haW5zLmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1w bGF0ZXMvZG9tYWlucy9qcy9kb21haW5zLmpzCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjUwMzdmY2YKLS0tIC9kZXYvbnVsbAorKysg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5zL2pz L2RvbWFpbnMuanMKQEAgLTAsMCArMSwzMzAgQEAKKy8vIERvbWFpbiBNb2R1 bGU6IENvbGxlY3Rpb24gYW5kIE5vZGUuCitkZWZpbmUoCisgICAgICAgIFsn anF1ZXJ5JywgJ3VuZGVyc2NvcmUnLCAndW5kZXJzY29yZS5zdHJpbmcnLCAn cGdhZG1pbicsCisgICAgICAgICAncGdhZG1pbi5icm93c2VyJywgJ2FsZXJ0 aWZ5JywgJ3BnYWRtaW4uYnJvd3Nlci5jb2xsZWN0aW9uJ10sCitmdW5jdGlv bigkLCBfLCBTLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIGFsZXJ0aWZ5KSB7CisK KyAgLy8gRGVmaW5lIERvbWFpbiBDb2xsZWN0aW9uIE5vZGUKKyAgaWYgKCFw Z0Jyb3dzZXIuTm9kZXNbJ2NvbGwtZG9tYWluJ10pIHsKKyAgICB2YXIgZG9t YWlucyA9IHBnQWRtaW4uQnJvd3Nlci5Ob2Rlc1snY29sbC1kb21haW4nXSA9 CisgICAgICBwZ0FkbWluLkJyb3dzZXIuQ29sbGVjdGlvbi5leHRlbmQoewor ICAgICAgICBub2RlOiAnZG9tYWluJywKKyAgICAgICAgbGFiZWw6ICd7eyBf KCdEb21haW5zJykgfX0nLAorICAgICAgICB0eXBlOiAnY29sbC1kb21haW4n LAorICAgICAgICBjb2x1bW5zOiBbJ25hbWUnLCAnb3duZXInLCAnZGVzY3Jp cHRpb24nXQorICAgICAgfSk7CisgIH07CisKKyAgLy8gU2VjdXJpdHkgTW9k ZWwKKyAgdmFyIFNlY3VyaXR5TW9kZWwgPSBCYWNrZm9ybS5TZWN1cml0eU1v ZGVsID0gcGdBZG1pbi5Ccm93c2VyLk5vZGUuTW9kZWwuZXh0ZW5kKHsKKyAg ICBkZWZhdWx0czogeworICAgICAgcHJvdmlkZXI6IG51bGwsCisgICAgICBz ZWN1cml0eV9sYWJlbDogbnVsbAorICAgIH0sCisgICAgc2NoZW1hOiBbewor ICAgICAgaWQ6ICdwcm92aWRlcicsIGxhYmVsOiAne3sgXygnUHJvdmlkZXIn KSB9fScsCisgICAgICB0eXBlOiAndGV4dCcKKyAgICB9LHsKKyAgICAgIGlk OiAnc2VjdXJpdHlfbGFiZWwnLCBsYWJlbDogJ3t7IF8oJ1NlY3VyaXR5IExh YmVsJykgfX0nLAorICAgICAgdHlwZTogJ3RleHQnCisgICAgfV0sCisgICAg dmFsaWRhdGU6IGZ1bmN0aW9uKCkgeworICAgICAgdmFyIGVyciA9IHt9LAor ICAgICAgICAgIGVycm1zZyA9IG51bGwsCisgICAgICAgICAgZGF0YSA9IHRo aXMudG9KU09OKCk7CisKKyAgICAgIGlmIChfLmlzVW5kZWZpbmVkKGRhdGEu bGFiZWwpIHx8CisgICAgICAgIF8uaXNOdWxsKGRhdGEubGFiZWwpIHx8Cisg ICAgICAgIFN0cmluZyhkYXRhLmxhYmVsKS5yZXBsYWNlKC9eXHMrfFxzKyQv ZywgJycpID09ICcnKSB7CisgICAgICAgIHJldHVybiBfKCJQbGVhc2Ugc3Bl Y2lmeSB0aGUgdmFsdWUgZm9yIGFsbCB0aGUgc2VjdXJpdHkgcHJvdmlkZXJz LiIpOworICAgICAgfQorICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorICB9 KTsKKworICAvLyBDb25zdHJhaW50IE1vZGVsCisgIHZhciBDb25zdHJhaW50 TW9kZWwgPSBwZ0FkbWluLkJyb3dzZXIuTm9kZS5Nb2RlbC5leHRlbmQoewor ICAgIGlkQXR0cmlidXRlOiAnY29ubmFtZScsCisgICAgZGVmYXVsdHM6IHsK KyAgICAgIGNvbm5hbWU6IHVuZGVmaW5lZCwKKyAgICAgIGRlc2NyaXB0aW9u OiB1bmRlZmluZWQsCisgICAgICBjb25zcmM6IHVuZGVmaW5lZCwKKyAgICAg IGNvbm5vaW5oZXJpdDogdW5kZWZpbmVkLAorICAgICAgY29udmFsaWRhdGVk OiB1bmRlZmluZWQKKyAgICB9LAorICAgIHNjaGVtYTogW3sKKyAgICAgIGlk OiAnY29ubmFtZScsIGxhYmVsOiAne3sgXygnTmFtZScpIH19JywgdHlwZTog J3RleHQnLCBjZWxsOiAnc3RyaW5nJywKKyAgICAgIGNlbGxIZWFkZXJDbGFz c2VzOiAnd2lkdGhfcGVyY2VudF80MCcKKyAgICB9LHsKKyAgICAgIGlkOiAn Y29uc3JjJywgbGFiZWw6ICd7eyBfKCdDaGVjaycpIH19JywgdHlwZTogJ211 bHRpbGluZScsCisgICAgICBjZWxsOiAnc3RyaW5nJywgZ3JvdXA6ICd7eyBf KCdEZWZpbml0aW9uJykgfX0nLAorICAgICAgY2VsbEhlYWRlckNsYXNzZXM6 ICd3aWR0aF9wZXJjZW50XzYwJworICAgIH1dLAorICAgIGlzRWRpdGFibGU6 IGZ1bmN0aW9uKG0pIHsKKyAgICAgIHJldHVybiB0cnVlCisgICAgICAvL3Jl dHVybiBfLmlzVW5kZWZpbmVkKG0uaXNOZXcpID8gdHJ1ZSA6IG0uaXNOZXco KTsKKyAgICB9LAorICAgIHRvSlNPTjogQmFja2JvbmUuTW9kZWwucHJvdG90 eXBlLnRvSlNPTgorICB9KTsKKworICAvLyBEb21haW4gTm9kZQorICBpZiAo IXBnQnJvd3Nlci5Ob2Rlc1snZG9tYWluJ10pIHsKKyAgICBwZ0FkbWluLkJy b3dzZXIuTm9kZXNbJ2RvbWFpbiddID0gcGdCcm93c2VyLk5vZGUuZXh0ZW5k KHsKKyAgICAgIHR5cGU6ICdkb21haW4nLAorICAgICAgbGFiZWw6ICd7eyBf KCdEb21haW4nKSB9fScsCisgICAgICBjb2xsZWN0aW9uX3R5cGU6ICdjb2xs LWRvbWFpbicsCisgICAgICBoYXNTUUw6IHRydWUsCisgICAgICBoYXNEZXBl bmRzOiB0cnVlLAorICAgICAgcGFyZW50X3R5cGU6IFsnc2NoZW1hJ10sCisg ICAgICBJbml0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgLy8gQXZvaWQgbXVs aXRwbGUgcmVnaXN0cmF0aW9uIG9mIG1lbnVzCisgICAgICAgIGlmICh0aGlz LmluaXRpYWxpemVkKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg IHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlOworCisgICAgICAgIHBnQnJvd3Nl ci5hZGRfbWVudXMoW3sKKyAgICAgICAgICBuYW1lOiAnY3JlYXRlX2RvbWFp bl9vbl9jb2xsJywgbm9kZTogJ2NvbGwtZG9tYWluJywgbW9kdWxlOiB0aGlz LAorICAgICAgICAgIGFwcGxpZXM6IFsnb2JqZWN0JywgJ2NvbnRleHQnXSwg Y2FsbGJhY2s6ICdzaG93X29ial9wcm9wZXJ0aWVzJywKKyAgICAgICAgICBj YXRlZ29yeTogJ2NyZWF0ZScsIHByaW9yaXR5OiA0LCBsYWJlbDogJ3t7IF8o J0RvbWFpbi4uLicpIH19JywKKyAgICAgICAgICBpY29uOiAnd2NUYWJJY29u IGljb24tZG9tYWluJywgZGF0YToge2FjdGlvbjogJ2NyZWF0ZScsIGNoZWNr OiB0cnVlfSwKKyAgICAgICAgICBlbmFibGU6ICdjYW5DcmVhdGUnCisgICAg ICAgIH0seworICAgICAgICAgIG5hbWU6ICdjcmVhdGVfZG9tYWluJywgbm9k ZTogJ2RvbWFpbicsIG1vZHVsZTogdGhpcywKKyAgICAgICAgICBhcHBsaWVz OiBbJ29iamVjdCcsICdjb250ZXh0J10sIGNhbGxiYWNrOiAnc2hvd19vYmpf cHJvcGVydGllcycsCisgICAgICAgICAgY2F0ZWdvcnk6ICdjcmVhdGUnLCBw cmlvcml0eTogNCwgbGFiZWw6ICd7eyBfKCdEb21haW4uLi4nKSB9fScsCisg ICAgICAgICAgaWNvbjogJ3djVGFiSWNvbiBpY29uLWRvbWFpbicsIGRhdGE6 IHthY3Rpb246ICdjcmVhdGUnLCBjaGVjazogdHJ1ZX0sCisgICAgICAgICAg ZW5hYmxlOiAnY2FuQ3JlYXRlJworICAgICAgICB9LHsKKyAgICAgICAgICBu YW1lOiAnY3JlYXRlX2RvbWFpbicsIG5vZGU6ICdzY2hlbWEnLCBtb2R1bGU6 IHRoaXMsCisgICAgICAgICAgYXBwbGllczogWydvYmplY3QnLCAnY29udGV4 dCddLCBjYWxsYmFjazogJ3Nob3dfb2JqX3Byb3BlcnRpZXMnLAorICAgICAg ICAgIGNhdGVnb3J5OiAnY3JlYXRlJywgcHJpb3JpdHk6IDQsIGxhYmVsOiAn e3sgXygnRG9tYWluLi4uJykgfX0nLAorICAgICAgICAgIGljb246ICd3Y1Rh Ykljb24gaWNvbi1kb21haW4nLCBkYXRhOiB7YWN0aW9uOiAnY3JlYXRlJywg Y2hlY2s6IGZhbHNlfSwKKyAgICAgICAgICBlbmFibGU6ICdjYW5DcmVhdGUn CisgICAgICAgIH0KKyAgICAgICAgXSk7CisKKyAgICAgIH0sCisgICAgICBj YW5Ecm9wOiBwZ0Jyb3dzZXIuTm9kZXNbJ3NjaGVtYSddLmNhbkNoaWxkRHJv cCwKKyAgICAgIGNhbkRyb3BDYXNjYWRlOiBwZ0Jyb3dzZXIuTm9kZXNbJ3Nj aGVtYSddLmNhbkNoaWxkRHJvcCwKKyAgICAgIC8vIERvbWFpbiBOb2RlIE1v ZGVsCisgICAgICBtb2RlbDogcGdBZG1pbi5Ccm93c2VyLk5vZGUuTW9kZWwu ZXh0ZW5kKHsKKyAgICAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oYXR0cnMs IGFyZ3MpIHsKKyAgICAgICAgICB2YXIgaXNOZXcgPSAoXy5zaXplKGF0dHJz KSA9PT0gMCk7CisgICAgICAgICAgaWYgKGlzTmV3KSB7CisgICAgICAgICAg ICAvLyBTZXQgU2VsZWN0ZWQgU2NoZW1hCisgICAgICAgICAgICBzY2hlbWEg PSBhcmdzLm5vZGVfaW5mby5zY2hlbWEubGFiZWwKKyAgICAgICAgICAgIHRo aXMuc2V0KHsnYmFzZW5zcCc6IHNjaGVtYX0sIHtzaWxlbnQ6IHRydWV9KTsK KworICAgICAgICAgICAgLy8gU2V0IEN1cnJlbnQgVXNlcgorICAgICAgICAg ICAgdmFyIHVzZXJJbmZvID0gcGdCcm93c2VyLnNlcnZlckluZm9bYXJncy5u b2RlX2luZm8uc2VydmVyLl9pZF0udXNlcjsKKyAgICAgICAgICAgIHRoaXMu c2V0KHsnb3duZXInOiB1c2VySW5mby5uYW1lfSwge3NpbGVudDogdHJ1ZX0p OworICAgICAgICAgIH0KKyAgICAgICAgICBwZ0FkbWluLkJyb3dzZXIuTm9k ZS5Nb2RlbC5wcm90b3R5cGUuaW5pdGlhbGl6ZS5hcHBseSh0aGlzLCBhcmd1 bWVudHMpOworICAgICAgICB9LAorICAgICAgICBkZWZhdWx0czogeworICAg ICAgICAgIG5hbWU6IHVuZGVmaW5lZCwKKyAgICAgICAgICBvaWQ6IHVuZGVm aW5lZCwKKyAgICAgICAgICBvd25lcjogdW5kZWZpbmVkLAorICAgICAgICAg IGJhc2Vuc3A6IHVuZGVmaW5lZCwKKyAgICAgICAgICBkZXNjcmlwdGlvbjog dW5kZWZpbmVkLAorICAgICAgICAgIGJhc2V0eXBlOiB1bmRlZmluZWQsCisg ICAgICAgICAgdHlwbGVuOiB1bmRlZmluZWQsCisgICAgICAgICAgcHJlY2lz aW9uOiB1bmRlZmluZWQsCisgICAgICAgICAgdHlwZGVmYXVsdDogdW5kZWZp bmVkLAorICAgICAgICAgIHR5cG5vdG51bGw6IHVuZGVmaW5lZCwKKyAgICAg ICAgICBzeXNkb21haW46IHVuZGVmaW5lZCwKKyAgICAgICAgICBjb2xsbmFt ZTogdW5kZWZpbmVkLAorICAgICAgICAgIGNvbnN0cmFpbnRzOiBbXSwKKyAg ICAgICAgICBzZWNsYWJlbHM6IFtdCisgICAgICAgIH0sCisgICAgICAgIHR5 cGVfb3B0aW9uczogdW5kZWZpbmVkLAorICAgICAgICAvLyBEb21haW4gU2No ZW1hCisgICAgICAgIHNjaGVtYTogW3sKKyAgICAgICAgICBpZDogJ25hbWUn LCBsYWJlbDogJ3t7IF8oJ05hbWUnKSB9fScsIGNlbGw6ICdzdHJpbmcnLAor ICAgICAgICAgIHR5cGU6ICd0ZXh0JywgbW9kZTogWydwcm9wZXJ0aWVzJywg J2NyZWF0ZScsICdlZGl0J10KKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6 ICdvaWQnLCBsYWJlbDone3sgXygnT0lEJykgfX0nLCBjZWxsOiAnc3RyaW5n JywKKyAgICAgICAgICB0eXBlOiAndGV4dCcgLCBtb2RlOiBbJ3Byb3BlcnRp ZXMnXQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ293bmVyJywgbGFi ZWw6J3t7IF8oJ093bmVyJykgfX0nLCBjZWxsOiAnc3RyaW5nJywgY29udHJv bDogQmFja2Zvcm0uTm9kZUxpc3RCeU5hbWVDb250cm9sLAorICAgICAgICAg IG5vZGU6ICdyb2xlJywgIHR5cGU6ICd0ZXh0JywgbW9kZTogWydlZGl0Jywg J2NyZWF0ZScsICdwcm9wZXJ0aWVzJ10KKyAgICAgICAgfSx7CisgICAgICAg ICAgaWQ6ICdiYXNlbnNwJywgbGFiZWw6J3t7IF8oJ1NjaGVtYScpIH19Jywg Y2VsbDogJ25vZGUtbGlzdC1ieS1uYW1lJywKKyAgICAgICAgICAgY29udHJv bDogJ25vZGUtbGlzdC1ieS1uYW1lJywgY2FjaGVfbGV2ZWw6ICdkYXRhYmFz ZScsIHR5cGU6ICd0ZXh0JywKKyAgICAgICAgICAgbm9kZTogJ3NjaGVtYScK KyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdzeXNkb21haW4nLCBsYWJl bDone3sgXygnU3lzdGVtIERvbWFpbj8nKSB9fScsIGNlbGw6ICdib29sZWFu JywKKyAgICAgICAgICB0eXBlOiAnc3dpdGNoJywgbW9kZTogWydwcm9wZXJ0 aWVzJ10KKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdkZXNjcmlwdGlv bicsIGxhYmVsOid7eyBfKCdDb21tZW50JykgfX0nLCBjZWxsOiAnc3RyaW5n JywKKyAgICAgICAgICB0eXBlOiAnbXVsdGlsaW5lJworICAgICAgICB9LHsK KyAgICAgICAgICBpZDogJ2Jhc2V0eXBlJywgbGFiZWw6J3t7IF8oJ0Jhc2Ug VHlwZScpIH19JywgY2VsbDogJ3N0cmluZycsIGNvbnRyb2w6ICdub2RlLWFq YXgtb3B0aW9ucycsCisgICAgICAgICAgdHlwZTogJ3RleHQnLCBtb2RlOlsn cHJvcGVydGllcycsICdjcmVhdGUnLCAnZWRpdCddLCBncm91cDogJ3t7IF8o J0RlZmluaXRpb24nKSB9fScsIHVybDogJ2dldF90eXBlcycsCisgICAgICAg ICAgZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsgcmV0dXJuICFtLmlzTmV3KCk7 IH0sIGZpcnN0X2VtcHR5OiB0cnVlLAorICAgICAgICAgIHRyYW5zZm9ybTog ZnVuY3Rpb24oZCl7CisgICAgICAgICAgICB0aGlzLm1vZGVsLnR5cGVfb3B0 aW9ucyA9ICBkOworICAgICAgICAgICAgcmV0dXJuIGQ7CisgICAgICAgICAg fQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ3R5cGxlbicsIGxhYmVs Oid7eyBfKCdMZW5ndGgnKSB9fScsIGNlbGw6ICdzdHJpbmcnLAorICAgICAg ICAgIHR5cGU6ICd0ZXh0JywgZ3JvdXA6ICd7eyBfKCdEZWZpbml0aW9uJykg fX0nLCBkZXBzOiBbJ2Jhc2V0eXBlJ10sCisgICAgICAgICAgZGlzYWJsZWQ6 IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIC8vIFdlIHdpbGwgc3RvcmUg dHlwZSBmcm9tIHNlbGVjdGVkIGZyb20gY29tYm9ib3gKKyAgICAgICAgICAg IGlmICghbS5pc05ldygpKSB7CisgICAgICAgICAgICAgIHJldHVybiB0cnVl OworICAgICAgICAgICAgfQorICAgICAgICAgICAgdmFyIG9mX3R5cGUgPSBt LmdldCgnYmFzZXR5cGUnKTsKKyAgICAgICAgICAgIGlmKG0udHlwZV9vcHRp b25zKSB7CisgICAgICAgICAgICAgIC8vIGl0ZXJhdGluZyBvdmVyIGFsbCB0 aGUgdHlwZXMKKyAgICAgICAgICAgICAgXy5lYWNoKG0udHlwZV9vcHRpb25z LCBmdW5jdGlvbihvKSB7CisgICAgICAgICAgICAgICAgLy8gaWYgdHlwZSBm cm9tIHNlbGVjdGVkIGZyb20gY29tYm9ib3ggbWF0Y2hlcyBpbiBvcHRpb25z CisgICAgICAgICAgICAgICAgaWYgKCBvZl90eXBlID09IG8udmFsdWUgKSB7 CisgICAgICAgICAgICAgICAgICAgIC8vIGlmIGxlbmd0aCBpcyBhbGxvd2Vk IGZvciBzZWxlY3RlZCB0eXBlCisgICAgICAgICAgICAgICAgICAgIGlmKG8u bGVuZ3RoKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg ICAgICAgICAgLy8gc2V0IHRoZSB2YWx1ZXMgaW4gbW9kZWwKKyAgICAgICAg ICAgICAgICAgICAgICBtLnNldCgnaXNfdGxlbmd0aCcsIHRydWUsIHtzaWxl bnQ6IHRydWV9KTsKKyAgICAgICAgICAgICAgICAgICAgICBtLnNldCgnbWlu X3ZhbCcsIG8ubWluX3ZhbCwge3NpbGVudDogdHJ1ZX0pOworICAgICAgICAg ICAgICAgICAgICAgIG0uc2V0KCdtYXhfdmFsJywgby5tYXhfdmFsLCB7c2ls ZW50OiB0cnVlfSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg ICAgICAgICB9CisgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfQor ICAgICAgICAgICAgcmV0dXJuICFtLmdldCgnaXNfdGxlbmd0aCcpOworICAg ICAgICAgIH0KKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdwcmVjaXNp b24nLCBsYWJlbDone3sgXygnUHJlY2lzaW9uJykgfX0nLCBjZWxsOiAnc3Ry aW5nJywKKyAgICAgICAgICB0eXBlOiAndGV4dCcsIGdyb3VwOiAne3sgXygn RGVmaW5pdGlvbicpIH19JywgZGVwczogWydiYXNldHlwZSddLAorICAgICAg ICAgIGRpc2FibGVkOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgICAvLyBX ZSB3aWxsIHN0b3JlIHR5cGUgZnJvbSBzZWxlY3RlZCBmcm9tIGNvbWJvYm94 CisgICAgICAgICAgICBpZiAoIW0uaXNOZXcoKSkgeworICAgICAgICAgICAg ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHZh ciBvZl90eXBlID0gbS5nZXQoJ2Jhc2V0eXBlJyk7CisgICAgICAgICAgICBp ZihtLnR5cGVfb3B0aW9ucykgeworICAgICAgICAgICAgICAvLyBpdGVyYXRp bmcgb3ZlciBhbGwgdGhlIHR5cGVzCisgICAgICAgICAgICAgIF8uZWFjaCht LnR5cGVfb3B0aW9ucywgZnVuY3Rpb24obykgeworICAgICAgICAgICAgICAg IC8vIGlmIHR5cGUgZnJvbSBzZWxlY3RlZCBmcm9tIGNvbWJvYm94IG1hdGNo ZXMgaW4gb3B0aW9ucworICAgICAgICAgICAgICAgIGlmICggb2ZfdHlwZSA9 PSBvLnZhbHVlICkgeworICAgICAgICAgICAgICAgICAgICAvLyBpZiBwcmVj ZXNzaW9uIGlzIGFsbG93ZWQgZm9yIHNlbGVjdGVkIHR5cGUKKyAgICAgICAg ICAgICAgICAgICAgaWYoby5wcmVjaXNpb24pCisgICAgICAgICAgICAgICAg ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAvLyBzZXQgdGhlIHZhbHVl cyBpbiBtb2RlbAorICAgICAgICAgICAgICAgICAgICAgIG0uc2V0KCdpc19w cmVjaXNpb24nLCB0cnVlLCB7c2lsZW50OiB0cnVlfSk7CisgICAgICAgICAg ICAgICAgICAgICAgbS5zZXQoJ21pbl92YWwnLCBvLm1pbl92YWwsIHtzaWxl bnQ6IHRydWV9KTsKKyAgICAgICAgICAgICAgICAgICAgICBtLnNldCgnbWF4 X3ZhbCcsIG8ubWF4X3ZhbCwge3NpbGVudDogdHJ1ZX0pOworICAgICAgICAg ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg ICB9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiAhbS5n ZXQoJ2lzX3ByZWNpc2lvbicpOworICAgICAgICAgIH0KKyAgICAgICAgfSx7 CisgICAgICAgICAgaWQ6ICd0eXBkZWZhdWx0JywgbGFiZWw6J3t7IF8oJ0Rl ZmF1bHQnKSB9fScsIGNlbGw6ICdzdHJpbmcnLAorICAgICAgICAgIHR5cGU6 ICd0ZXh0JywgZ3JvdXA6ICd7eyBfKCdEZWZpbml0aW9uJykgfX0nCisgICAg ICAgIH0seworICAgICAgICAgIGlkOiAndHlwbm90bnVsbCcsIGxhYmVsOid7 eyBfKCdOb3QgTnVsbCcpIH19JywgY2VsbDogJ2Jvb2xlYW4nLAorICAgICAg ICAgIHR5cGU6ICdzd2l0Y2gnLCBncm91cDogJ3t7IF8oJ0RlZmluaXRpb24n KSB9fScKKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdjb2xsbmFtZScs IGxhYmVsOid7eyBfKCdDb2xsYXRpb24nKSB9fScsIGNlbGw6ICdzdHJpbmcn LCBjb250cm9sOiAnbm9kZS1hamF4LW9wdGlvbnMnLAorICAgICAgICAgIHR5 cGU6ICd0ZXh0JywgZ3JvdXA6ICd7eyBfKCdEZWZpbml0aW9uJykgfX0nLCB1 cmw6ICdnZXRfY29sbGF0aW9ucycsIGRpc2FibGVkOiBmdW5jdGlvbihtKSB7 CisgICAgICAgICAgICByZXR1cm4gIW0uaXNOZXcoKTsKKyAgICAgICAgICB9 CisgICAgICAgIH0seworICAgICAgICAgIGlkOiAnY29uc3RyYWludHMnLCBs YWJlbDone3sgXygnQ29uc3RyYWludHMnKSB9fScsIGNlbGw6ICdzdHJpbmcn LAorICAgICAgICAgIHR5cGU6ICdjb2xsZWN0aW9uJywgZ3JvdXA6ICd7eyBf KCdDb25zdHJhaW50cycpIH19JywgbW9kZTogWydlZGl0JywgJ2NyZWF0ZSdd LAorICAgICAgICAgIG1vZGVsOiBDb25zdHJhaW50TW9kZWwsIGNhbkFkZDog dHJ1ZSwgY2FuRGVsZXRlOiB0cnVlLAorICAgICAgICAgIGNhbkVkaXQ6IGZ1 bmN0aW9uKG8peworICAgICAgICAgICAgaWYgKG8gaW5zdGFuY2VvZiBCYWNr Ym9uZS5Nb2RlbCkgeworICAgICAgICAgICAgICBpZiAobyBpbnN0YW5jZW9m IENvbnN0cmFpbnRNb2RlbCkgeworICAgICAgICAgICAgICAgIHJldHVybiBv LmlzTmV3KCk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgIH0KKyAgICAgICAg IH0seworICAgICAgICAgIGlkOiAnc2VjbGFiZWxzJywgbGFiZWw6ICd7eyBf KCdTZWN1cml0eSBMYWJlbHMnKSB9fScsCisgICAgICAgICAgbW9kZWw6IFNl Y3VyaXR5TW9kZWwsIHR5cGU6ICdjb2xsZWN0aW9uJywKKyAgICAgICAgICBn cm91cDogJ3t7IF8oJ1NlY3VyaXR5JykgfX0nLCBtb2RlOiBbJ2VkaXQnLCAn Y3JlYXRlJ10sCisgICAgICAgICAgbWluX3ZlcnNpb246IDkwMTAwLCBjYW5B ZGQ6IHRydWUsCisgICAgICAgICAgY2FuRWRpdDogdHJ1ZSwgY2FuRGVsZXRl OiB0cnVlCisgICAgICAgIH0KKyAgICAgICAgXSwKKyAgICAgICAgdmFsaWRh dGU6IGZ1bmN0aW9uKCkgLy8gQ2xpZW50IFNpZGUgVmFsaWRhdGlvbgorICAg ICAgICB7CisgICAgICAgICAgdmFyIGVyciA9IHt9LAorICAgICAgICAgICAg ICBlcnJtc2csCisgICAgICAgICAgICAgIHNlY2xhYmVscyA9IHRoaXMuZ2V0 KCdzZWNsYWJlbHMnKTsKKworICAgICAgICAgIGlmIChfLmlzVW5kZWZpbmVk KHRoaXMuZ2V0KCduYW1lJykpIHx8IFN0cmluZyh0aGlzLmdldCgnbmFtZScp KS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpID09ICcnKSB7CisgICAgICAg ICAgICBlcnJbJ25hbWUnXSA9ICd7eyBfKCdOYW1lIGNhbiBub3QgYmUgZW1w dHkhJykgfX0nOworICAgICAgICAgICAgZXJybXNnID0gZXJybXNnIHx8IGVy clsnbmFtZSddOworICAgICAgICAgIH0KKworICAgICAgICAgIGlmIChfLmlz VW5kZWZpbmVkKHRoaXMuZ2V0KCdiYXNldHlwZScpKSB8fCBTdHJpbmcodGhp cy5nZXQoJ2Jhc2V0eXBlJykpLnJlcGxhY2UoL15ccyt8XHMrJC9nLCAnJykg PT0gJycpIHsKKyAgICAgICAgICAgIGVyclsnYmFzZXR5cGUnXSA9ICd7eyBf KCdCYXNlIFR5cGUgY2FuIG5vdCBiZSBlbXB0eSEnKSB9fSc7CisgICAgICAg ICAgICBlcnJtc2cgPSBlcnJtc2cgfHwgZXJyWydiYXNldHlwZSddOworICAg ICAgICAgIH0KKworICAgICAgICAgIGlmIChzZWNsYWJlbHMpIHsKKyAgICAg ICAgICAgIHZhciBzZWNMYWJlbHNFcnI7CisgICAgICAgICAgICBmb3IgKHZh ciBpID0gMDsgaSA8IHNlY2xhYmVscy5tb2RlbHMubGVuZ3RoICYmICFzZWNM YWJlbHNFcnI7IGkrKykgeworICAgICAgICAgICAgICBzZWNMYWJlbHNFcnIg PSAoc2VjbGFiZWxzLm1vZGVsc1tpXSkudmFsaWRhdGUuYXBwbHkoc2VjbGFi ZWxzLm1vZGVsc1tpXSk7CisgICAgICAgICAgICAgIGlmIChzZWNMYWJlbHNF cnIpIHsKKyAgICAgICAgICAgICAgICBlcnJbJ3NlY2xhYmVscyddID0gc2Vj TGFiZWxzRXJyOworICAgICAgICAgICAgICAgIGVycm1zZyA9IGVycm1zZyB8 fCBzZWNMYWJlbHNFcnI7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg IH0KKyAgICAgICAgICB9CisKKyAgICAgICAgICB0aGlzLmVycm9yTW9kZWwu Y2xlYXIoKS5zZXQoZXJyKTsKKworICAgICAgICAgIHJldHVybiBudWxsOwor ICAgICAgICB9CisgICAgICB9KSwKKyAgICAgIGNhbkNyZWF0ZTogZnVuY3Rp b24oaXRlbURhdGEsIGl0ZW0sIGRhdGEpIHsKKyAgICAgICAgLy9JZiBjaGVj ayBpcyBmYWxzZSB0aGVuICwgd2Ugd2lsbCBhbGxvdyBjcmVhdGUgbWVudQor ICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLmNoZWNrID09IGZhbHNlKQorICAg ICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgIHZhciB0ID0gcGdCcm93 c2VyLnRyZWUsIGkgPSBpdGVtLCBkID0gaXRlbURhdGE7CisgICAgICAgIC8v IFRvIGl0ZXJhdGUgb3ZlciB0cmVlIHRvIGNoZWNrIHBhcmVudCBub2RlCisg ICAgICAgIHdoaWxlIChpKSB7CisgICAgICAgICAgLy8gSWYgaXQgaXMgc2No ZW1hIHRoZW4gYWxsb3cgdXNlciB0byBjcmVhdGUgZG9tYWluCisgICAgICAg ICAgaWYgKF8uaW5kZXhPZihbJ3NjaGVtYSddLCBkLl90eXBlKSA+IC0xKQor ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgICBpZiAoJ2Nv bGwtZG9tYWluJyA9PSBkLl90eXBlKSB7CisgICAgICAgICAgICAvL0NoZWNr IGlmIHdlIGFyZSBub3QgY2hpbGQgb2YgY2F0YWxvZworICAgICAgICAgICAg cHJldl9pID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGw7 CisgICAgICAgICAgICBwcmV2X2QgPSBwcmV2X2kgPyB0Lml0ZW1EYXRhKHBy ZXZfaSkgOiBudWxsOworICAgICAgICAgICAgaWYoIHByZXZfZC5fdHlwZSA9 PSAnY2F0YWxvZycpIHsKKyAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgcmV0dXJuIHRy dWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGkg PSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkpIDogbnVsbDsKKyAgICAg ICAgICBkID0gaSA/IHQuaXRlbURhdGEoaSkgOiBudWxsOworICAgICAgICB9 CisgICAgICAgIC8vIGJ5IGRlZmF1bHQgd2UgZG8gbm90IHdhbnQgdG8gYWxs b3cgY3JlYXRlIG1lbnUKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICB9 LAorICAgICAgaXNEaXNhYmxlZDogZnVuY3Rpb24obSl7CisgICAgICAgICAg aWYgKCFtLmlzTmV3KCkpIHsKKyAgICAgICAgICAgIHZhciBzZXJ2ZXIgPSB0 aGlzLm5vZGVfaW5mby5zZXJ2ZXI7CisgICAgICAgICAgICBpZiAoc2VydmVy LnZlcnNpb24gPCA5MDIwMCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgIH0K KyAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICB9KTsKKwor ICB9CisKKyAgcmV0dXJuIHBnQnJvd3Nlci5Ob2Rlc1snZG9tYWluJ107Cit9 KTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxh dGVzL2RvbWFpbnMvc3FsLzkuMV9wbHVzL2NyZWF0ZS5zcWwgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjFfcGx1 cy9jcmVhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLmY4YjBiNzUKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjFfcGx1cy9jcmVh dGUuc3FsCkBAIC0wLDAgKzEsMzAgQEAKK3slIGltcG9ydCAnbWFjcm9zL3Nj aGVtYXMvc2VjdXJpdHkubWFjcm9zJyBhcyBTRUNMQUJMRSAlfQoreyUgaWYg ZGF0YSAlfQorQ1JFQVRFIERPTUFJTiB7eyBjb25ufHF0SWRlbnQoZGF0YS5i YXNlbnNwLCBkYXRhLm5hbWUpIH19CisgICAgQVMge3sgY29ubnxxdFR5cGVJ ZGVudChkYXRhLmJhc2V0eXBlKSB9fXslIGlmIGRhdGEudHlwbGVuICV9KHt7 ZGF0YS50eXBsZW59fXslIGlmIGRhdGEucHJlY2lzaW9uICV9LHt7ZGF0YS5w cmVjaXNpb259fXslIGVuZGlmICV9KXslIGVuZGlmICV9eyUgaWYgZGF0YS5j b2xsbmFtZSAlfQorCisgICAgQ09MTEFURSB7eyBkYXRhLmNvbGxuYW1lIH19 eyUgZW5kaWYgJX17JSBpZiBkYXRhLnR5cGRlZmF1bHQgJX0KKworICAgIERF RkFVTFQge3sgZGF0YS50eXBkZWZhdWx0IH19eyUgZW5kaWYgJX17JSBpZiBk YXRhLnR5cG5vdG51bGwgJX0KKworICAgIE5PVCBOVUxMeyUgZW5kaWYgJX17 JSBpZiBkYXRhLmNvbnN0cmFpbnRzICV9eyUgZm9yIGMgaW4gZGF0YS5jb25z dHJhaW50cyAlfXslIGlmIGMuY29ubmFtZSBhbmQgYy5jb25zcmMgJX0KKwor ICAgIENPTlNUUkFJTlQge3sgY29ubnxxdElkZW50KGMuY29ubmFtZSkgfX0g Q0hFQ0sgKHt7IGMuY29uc3JjIH19KXslIGVuZGlmIC0lfQoreyUgZW5kZm9y IC0lfQoreyUgZW5kaWYgLSV9OworCit7JSBpZiBkYXRhLm93bmVyICV9CitB TFRFUiBET01BSU4ge3sgY29ubnxxdElkZW50KGRhdGEuYmFzZW5zcCwgZGF0 YS5uYW1lKSB9fSBPV05FUiBUTyB7eyBjb25ufHF0SWRlbnQoZGF0YS5vd25l cikgfX07eyUgZW5kaWYgJX17JSBpZiBkYXRhLmRlc2NyaXB0aW9uICV9CisK KworQ09NTUVOVCBPTiBET01BSU4ge3sgY29ubnxxdElkZW50KGRhdGEuYmFz ZW5zcCwgZGF0YS5uYW1lKSB9fQorICAgIElTICd7eyBkYXRhLmRlc2NyaXB0 aW9uIH19Jzt7JSBlbmRpZiAtJX17JSBpZiBkYXRhLnNlY2xhYmVscyAlfQor eyUgZm9yIHIgaW4gZGF0YS5zZWNsYWJlbHMgJX0KK3slIGlmIHIuc2VjdXJp dHlfbGFiZWwgYW5kIHIucHJvdmlkZXIgJX0KKworCit7eyBTRUNMQUJMRS5T RVQoY29ubiwgJ0RPTUFJTicsIGRhdGEubmFtZSwgci5wcm92aWRlciwgci5z ZWN1cml0eV9sYWJlbCwgZGF0YS5iYXNlbnNwKSB9fXslIGVuZGlmIC0lfQor eyUgZW5kZm9yIC0lfQoreyUgZW5kaWYgLSV9CisKK3slIGVuZGlmIC0lfQpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMv ZG9tYWlucy9zcWwvOS4xX3BsdXMvZGVsZXRlLnNxbCBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMV9wbHVzL2Rl bGV0ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u N2ExMmI1MAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Rv bWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMV9wbHVzL2RlbGV0ZS5z cWwKQEAgLTAsMCArMSwxNiBAQAoreyUgaWYgc2NpZCBhbmQgZG9pZCAlfQor U0VMRUNUCisgICAgZC50eXBuYW1lIGFzIG5hbWUsIGJuLm5zcG5hbWUgYXMg YmFzZW5zcAorRlJPTQorICAgIHBnX3R5cGUgZAorSk9JTgorICAgIHBnX25h bWVzcGFjZSBibiBPTiBibi5vaWQ9ZC50eXBuYW1lc3BhY2UKK1dIRVJFCisg ICAgZC50eXBuYW1lc3BhY2UgPSB7e3NjaWR9fTo6b2lkCitBTkQKKyAgICBk Lm9pZD17e2RvaWR9fTo6aW50OworeyUgZW5kaWYgJX0KKworeyUgaWYgbmFt ZSAlfQorRFJPUCBET01BSU4ge3sgY29ubnxxdElkZW50KGJhc2Vuc3AsIG5h bWUpIH19eyUgaWYgY2FzY2FkZSAlfSBDQVNDQURFeyUgZW5kaWYgJX07Cit7 JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlu cy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4xX3BsdXMvZ2V0X2NvbGxhdGlv bnMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9t YWlucy9zcWwvOS4xX3BsdXMvZ2V0X2NvbGxhdGlvbnMuc3FsCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxOWZkYmIKLS0tIC9kZXYv bnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9k b21haW5zL3NxbC85LjFfcGx1cy9nZXRfY29sbGF0aW9ucy5zcWwKQEAgLTAs MCArMSwxMCBAQAorU0VMRUNUIC0tbnNwbmFtZSwgY29sbG5hbWUsCisgICAg Q0FTRSBXSEVOIGxlbmd0aChuc3BuYW1lKSA+IDAgQU5EIGxlbmd0aChjb2xs bmFtZSkgPiAwIFRIRU4KKyAgICBjb25jYXQobnNwbmFtZSwgJy4iJywgY29s bG5hbWUsJyInKQorICAgIEVMU0UgJycgRU5EIEFTIGNvcHlfY29sbGF0aW9u CitGUk9NCisgICAgcGdfY29sbGF0aW9uIGMsIHBnX25hbWVzcGFjZSBuCitX SEVSRQorICAgIGMuY29sbG5hbWVzcGFjZT1uLm9pZAorT1JERVIgQlkKKyAg ICBuc3BuYW1lLCBjb2xsbmFtZTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMV9wbHVzL2dl dF9jb25zdHJhaW50cy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3Rl bXBsYXRlcy9kb21haW5zL3NxbC85LjFfcGx1cy9nZXRfY29uc3RyYWludHMu c3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxN2Yw YzUKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5z L3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjFfcGx1cy9nZXRfY29uc3RyYWlu dHMuc3FsCkBAIC0wLDAgKzEsMTUgQEAKK1NFTEVDVAorICAgICdET01BSU4n IEFTIG9iamVjdGtpbmQsIGMub2lkLCBjb25uYW1lLCB0eXBuYW1lIGFzIHJl bG5hbWUsIG5zcG5hbWUsIGRlc2NyaXB0aW9uLAorICAgIHJlZ2V4cF9yZXBs YWNlKHBnX2dldF9jb25zdHJhaW50ZGVmKGMub2lkLCB0cnVlKSwgRSdDSEVD SyBcXCgoLiopXFwpLionLCBFJ1xcMScpIGFzIGNvbnMKK0ZST00KKyAgICBw Z19jb25zdHJhaW50IGMKK0pPSU4KKyAgICBwZ190eXBlIHQgT04gdC5vaWQ9 Y29udHlwaWQKK0pPSU4KKyAgICBwZ19uYW1lc3BhY2UgbmwgT04gbmwub2lk PXR5cG5hbWVzcGFjZQorTEVGVCBPVVRFUiBKT0lOCisgICAgcGdfZGVzY3Jp cHRpb24gZGVzIE9OIChkZXMub2Jqb2lkPXQub2lkIEFORCBkZXMuY2xhc3Nv aWQ9J3BnX2NvbnN0cmFpbnQnOjpyZWdjbGFzcykKK1dIRVJFCisgICAgY29u dHlwZSA9ICdjJworICAgIEFORCBjb250eXBpZCA9ICB7e2RvaWR9fTo6b2lk CitPUkRFUiBCWSBjb25uYW1lOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4xX3BsdXMvZ2V0 X29pZC5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9k b21haW5zL3NxbC85LjFfcGx1cy9nZXRfb2lkLnNxbApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjVjODkxCi0tLSAvZGV2L251bGwK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlu cy9zcWwvOS4xX3BsdXMvZ2V0X29pZC5zcWwKQEAgLTAsMCArMSwxOCBAQAor eyUgaWYgZG9pZCAlfQorU0VMRUNUCisgICAgZC50eXBuYW1lc3BhY2UgYXMg c2NpZAorRlJPTQorICAgIHBnX3R5cGUgZAorV0hFUkUKKyAgICBkLm9pZD17 eyBkb2lkIH19OjpvaWQ7Cit7JSBlbHNlICV9CitTRUxFQ1QKKyAgICBkLm9p ZCwgZC50eXBuYW1lc3BhY2UKK0ZST00KKyAgICBwZ190eXBlIGQKK0pPSU4K KyAgICBwZ19uYW1lc3BhY2UgYm4gT04gYm4ub2lkPWQudHlwbmFtZXNwYWNl CitXSEVSRQorICAgIGJuLm5zcG5hbWUgPSB7eyBiYXNlbnNwfHF0TGl0ZXJh bCB9fQorICAgIEFORCBkLnR5cG5hbWU9e3sgbmFtZXxxdExpdGVyYWwgfX07 Cit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9t YWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4xX3BsdXMvbm9kZS5zcWwg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5zL3Nx bC85LjFfcGx1cy9ub2RlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi43YmQzZTViCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4xX3Bs dXMvbm9kZS5zcWwKQEAgLTAsMCArMSwxMyBAQAorU0VMRUNUCisgICAgZC5v aWQsIGQudHlwbmFtZSBhcyBuYW1lLCBwZ19nZXRfdXNlcmJ5aWQoZC50eXBv d25lcikgYXMgb3duZXIsCisgICAgYm4ubnNwbmFtZSBhcyBiYXNlbnNwCitG Uk9NCisgICAgcGdfdHlwZSBkCitKT0lOCisgICAgcGdfdHlwZSBiIE9OIGIu b2lkID0gZC50eXBiYXNldHlwZQorSk9JTgorICAgIHBnX25hbWVzcGFjZSBi biBPTiBibi5vaWQ9ZC50eXBuYW1lc3BhY2UKK1dIRVJFCisgICAgZC50eXBu YW1lc3BhY2UgPSB7e3NjaWR9fTo6b2lkCitPUkRFUiBCWQorICAgIGQudHlw bmFtZTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVt cGxhdGVzL2RvbWFpbnMvc3FsLzkuMV9wbHVzL3Byb3BlcnRpZXMuc3FsIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwv OS4xX3BsdXMvcHJvcGVydGllcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uNDJhZjM5ZAotLS0gL2Rldi9udWxsCisrKyBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzku MV9wbHVzL3Byb3BlcnRpZXMuc3FsCkBAIC0wLDAgKzEsMzUgQEAKK1NFTEVD VAorICAgIGQub2lkLCBkLnR5cG5hbWUgYXMgbmFtZSwgZC50eXBiYXNldHlw ZSwgZm9ybWF0X3R5cGUoYi5vaWQsTlVMTCkgYXMgYmFzZXR5cGUsCisgICAg cGdfZ2V0X3VzZXJieWlkKGQudHlwb3duZXIpIGFzIG93bmVyLAorICAgIGMu b2lkIEFTIGNvbGxvaWQsIGZvcm1hdF90eXBlKGIub2lkLCBkLnR5cHR5cG1v ZCkgQVMgZnVsbHR5cGUsCisgICAgQ0FTRSBXSEVOIGxlbmd0aChjbi5uc3Bu YW1lKSA+IDAgQU5EIGxlbmd0aChjLmNvbGxuYW1lKSA+IDAgVEhFTgorICAg IGNvbmNhdChjbi5uc3BuYW1lLCAnLiInLCBjLmNvbGxuYW1lLCciJykKKyAg ICBFTFNFICcnIEVORCBBUyBjb2xsbmFtZSwKKyAgICBkLnR5cHR5cG1vZCwg ZC50eXBub3RudWxsLCBkLnR5cGRlZmF1bHQsIGQudHlwbmRpbXMsIGQudHlw ZGVsaW0sIGJuLm5zcG5hbWUgYXMgYmFzZW5zcCwKKyAgICBkZXNjcmlwdGlv biwgKFNFTEVDVCBDT1VOVCgxKSBGUk9NIHBnX3R5cGUgdDIgV0hFUkUgdDIu dHlwbmFtZT1kLnR5cG5hbWUpID4gMSBBUyBkb21pc2R1cCwKKyAgICAoU0VM RUNUIENPVU5UKDEpIEZST00gcGdfdHlwZSB0MyBXSEVSRSB0My50eXBuYW1l PWIudHlwbmFtZSkgPiAxIEFTIGJhc2Vpc2R1cCwKKyAgICAoU0VMRUNUCisg ICAgICAgIGFycmF5X2FnZyhwcm92aWRlciB8fCAnPScgfHwgbGFiZWwpCisg ICAgRlJPTQorICAgICAgICBwZ19zZWNsYWJlbCBzbDEKKyAgICBXSEVSRQor ICAgICAgICBzbDEub2Jqb2lkPWQub2lkKSBBUyBzZWNsYWJlbHMKK0ZST00K KyAgICBwZ190eXBlIGQKK0pPSU4KKyAgICBwZ190eXBlIGIgT04gYi5vaWQg PSBkLnR5cGJhc2V0eXBlCitKT0lOCisgICAgcGdfbmFtZXNwYWNlIGJuIE9O IGJuLm9pZD1kLnR5cG5hbWVzcGFjZQorTEVGVCBPVVRFUiBKT0lOCisgICAg cGdfZGVzY3JpcHRpb24gZGVzIE9OIChkZXMub2Jqb2lkPWQub2lkIEFORCBk ZXMuY2xhc3NvaWQ9J3BnX3R5cGUnOjpyZWdjbGFzcykKK0xFRlQgT1VURVIg Sk9JTgorICAgIHBnX2NvbGxhdGlvbiBjIE9OIGQudHlwY29sbGF0aW9uPWMu b2lkCitMRUZUIE9VVEVSIEpPSU4KKyAgICBwZ19uYW1lc3BhY2UgY24gT04g Yy5jb2xsbmFtZXNwYWNlPWNuLm9pZAorV0hFUkUKKyAgICBkLnR5cG5hbWVz cGFjZSA9IHt7c2NpZH19OjpvaWQKKyAgICB7JSBpZiBkb2lkICV9CisgICAg QU5EIGQub2lkPXt7ZG9pZH19OjppbnQKKyAgICB7JSBlbmRpZiAlfQorT1JE RVIgQlkKKyAgICBkLnR5cG5hbWU7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjFfcGx1cy91 cGRhdGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMv ZG9tYWlucy9zcWwvOS4xX3BsdXMvdXBkYXRlLnNxbApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi44NThhZTkxCi0tLSAvZGV2L251bGwK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlu cy9zcWwvOS4xX3BsdXMvdXBkYXRlLnNxbApAQCAtMCwwICsxLDY1IEBACit7 JSBpbXBvcnQgJ21hY3Jvcy9zY2hlbWFzL3NlY3VyaXR5Lm1hY3JvcycgYXMg U0VDTEFCTEUgJX0KK3slIGlmIGRhdGEgJX0KK3slIHNldCBuYW1lID0gb19k YXRhLm5hbWUgJX0KK3slIGlmIGRhdGEubmFtZSAlfQoreyUgaWYgZGF0YS5u YW1lICE9IG9fZGF0YS5uYW1lICV9CitBTFRFUiBUWVBFIHt7IGNvbm58cXRJ ZGVudChvX2RhdGEuYmFzZW5zcCwgb19kYXRhLm5hbWUpIH19CisgICAgUkVO QU1FIFRPIHt7IGNvbm58cXRJZGVudChkYXRhLm5hbWUpIH19OworeyUgc2V0 IG5hbWUgPSBkYXRhLm5hbWUgJX0KK3slIGVuZGlmICV9CisKK3slIGVuZGlm IC0lfQoreyUgaWYgZGF0YS50eXBub3RudWxsIGFuZCBub3Qgb19kYXRhLnR5 cG5vdG51bGwgJX0KK0FMVEVSIERPTUFJTiB7eyBjb25ufHF0SWRlbnQob19k YXRhLmJhc2Vuc3AsIG5hbWUpIH19CisgICAgU0VUIE5PVCBOVUxMOworeyUg ZWxpZiAndHlwbm90bnVsbCcgaW4gZGF0YSBhbmQgbm90IGRhdGEudHlwbm90 bnVsbCBhbmQgb19kYXRhLnR5cG5vdG51bGwlfQorQUxURVIgRE9NQUlOIHt7 IGNvbm58cXRJZGVudChvX2RhdGEuYmFzZW5zcCwgbmFtZSkgfX0KKyAgICBE Uk9QIE5PVCBOVUxMOworeyUgZW5kaWYgLSV9eyUgaWYgZGF0YS50eXBkZWZh dWx0ICV9CitBTFRFUiBET01BSU4ge3sgY29ubnxxdElkZW50KG9fZGF0YS5i YXNlbnNwLCBuYW1lKSB9fQorICAgIFNFVCBERUZBVUxUIHt7IGRhdGEudHlw ZGVmYXVsdCB9fTsKK3slIGVsaWYgbm90IGRhdGEudHlwZGVmYXVsdCBhbmQg b19kYXRhLnR5cGRlZmF1bHQgJX0KK0FMVEVSIERPTUFJTiB7eyBjb25ufHF0 SWRlbnQob19kYXRhLmJhc2Vuc3AsIG5hbWUpIH19CisgICAgRFJPUCBERUZB VUxUOworeyUgZW5kaWYgLSV9eyUgaWYgZGF0YS5vd25lciAlfQorCitBTFRF UiBET01BSU4ge3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1l KSB9fQorICAgIE9XTkVSIFRPIHt7IGNvbm58cXRJZGVudChkYXRhLm93bmVy KSB9fTt7JSBlbmRpZiAtJX17JSBpZiBkYXRhLmNvbnN0cmFpbnRzICV9Cit7 JSBmb3IgYyBpbiBkYXRhLmNvbnN0cmFpbnRzLmRlbGV0ZWQgJX0KKworCitB TFRFUiBET01BSU4ge3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNwLCBu YW1lKSB9fQorICAgIERST1AgQ09OU1RSQUlOVCB7eyBjb25ufHF0SWRlbnQo Yy5jb25uYW1lKSB9fTsKK3slIGVuZGZvciAtJX0KK3slIGZvciBjIGluIGRh dGEuY29uc3RyYWludHMuYWRkZWQgJX0KK3slIGlmIGMuY29ubmFtZSBhbmQg Yy5jb25zcmMgJX0KKworQUxURVIgRE9NQUlOIHt7IGNvbm58cXRJZGVudChv X2RhdGEuYmFzZW5zcCwgbmFtZSkgfX0KKyAgICBBREQgQ09OU1RSQUlOVCB7 eyBjb25ufHF0SWRlbnQoYy5jb25uYW1lKSB9fSBDSEVDSyAoe3sgYy5jb25z cmMgfX0gKTt7JSBlbmRpZiAtJX0KK3slIGVuZGZvciAtJX17JSBlbmRpZiAt JX0KK3slIHNldCBzZWNsYWJlbHMgPSBkYXRhLnNlY2xhYmVscyAlfQoreyUg aWYgJ2RlbGV0ZWQnIGluIHNlY2xhYmVscyBhbmQgc2VjbGFiZWxzLmRlbGV0 ZWR8bGVuZ3RoID4gMCAlfQoreyUgZm9yIHIgaW4gc2VjbGFiZWxzLmRlbGV0 ZWQgJX0KKwore3sgU0VDTEFCTEUuVU5TRVQoY29ubiwgJ0RPTUFJTicsIG5h bWUsIHIucHJvdmlkZXIsIG9fZGF0YS5iYXNlbnNwKSB9fQoreyUgZW5kZm9y IC0lfQoreyUgZW5kaWYgJX0KK3slIGlmICdhZGRlZCcgaW4gc2VjbGFiZWxz IGFuZCBzZWNsYWJlbHMuYWRkZWR8bGVuZ3RoID4gMCAlfQoreyUgZm9yIHIg aW4gc2VjbGFiZWxzLmFkZGVkICV9Cit7eyBTRUNMQUJMRS5TRVQoY29ubiwg J0RPTUFJTicsIG5hbWUsIHIucHJvdmlkZXIsIHIuc2VjdXJpdHlfbGFiZWws IG9fZGF0YS5iYXNlbnNwKSB9fQorCit7JSBlbmRmb3IgLSV9Cit7JSBlbmRp ZiAlfQoreyUgaWYgJ2NoYW5nZWQnIGluIHNlY2xhYmVscyBhbmQgc2VjbGFi ZWxzLmNoYW5nZWR8bGVuZ3RoID4gMCAlfQoreyUgZm9yIHIgaW4gc2VjbGFi ZWxzLmNoYW5nZWQgJX0KK3t7IFNFQ0xBQkxFLlNFVChjb25uLCAnRE9NQUlO JywgbmFtZSwgci5wcm92aWRlciwgci5zZWN1cml0eV9sYWJlbCwgb19kYXRh LmJhc2Vuc3ApIH19CisKK3slIGVuZGZvciAtJX0KK3slIGVuZGlmIC0lfXsl IGlmIGRhdGEuZGVzY3JpcHRpb24gJX0KK0NPTU1FTlQgT04gRE9NQUlOIHt7 IGNvbm58cXRJZGVudChvX2RhdGEuYmFzZW5zcCwgbmFtZSkgfX0KKyAgICBJ UyB7eyBkYXRhLmRlc2NyaXB0aW9ufHF0TGl0ZXJhbCB9fTt7JSBlbmRpZiAl fXslIGlmIGRhdGEuYmFzZW5zcCAlfQorCisKK0FMVEVSIERPTUFJTiB7eyBj b25ufHF0SWRlbnQob19kYXRhLmJhc2Vuc3AsIG5hbWUpIH19CisgICAgU0VU IFNDSEVNQSB7eyBjb25ufHF0SWRlbnQoZGF0YS5iYXNlbnNwKSB9fTt7JSBl bmRpZiAtJX0KK3slIGVuZGlmIC0lfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4yX3BsdXMv Y3JlYXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVz L2RvbWFpbnMvc3FsLzkuMl9wbHVzL2NyZWF0ZS5zcWwKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTg5MzY5ZgotLS0gL2Rldi9udWxs CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFp bnMvc3FsLzkuMl9wbHVzL2NyZWF0ZS5zcWwKQEAgLTAsMCArMSwzMCBAQAor eyUgaW1wb3J0ICdtYWNyb3Mvc2NoZW1hcy9zZWN1cml0eS5tYWNyb3MnIGFz IFNFQ0xBQkxFICV9Cit7JSBpZiBkYXRhICV9CitDUkVBVEUgRE9NQUlOIHt7 IGNvbm58cXRJZGVudChkYXRhLmJhc2Vuc3AsIGRhdGEubmFtZSkgfX0KKyAg ICBBUyB7eyBjb25ufHF0VHlwZUlkZW50KGRhdGEuYmFzZXR5cGUpIH19eyUg aWYgZGF0YS50eXBsZW4gJX0oe3tkYXRhLnR5cGxlbn19eyUgaWYgZGF0YS5w cmVjaXNpb24gJX0se3tkYXRhLnByZWNpc2lvbn19eyUgZW5kaWYgJX0peyUg ZW5kaWYgJX17JSBpZiBkYXRhLmNvbGxuYW1lIGFuZCBkYXRhLmNvbGxuYW1l ICE9ICJwZ19jYXRhbG9nLlwiZGVmYXVsdFwiIiAlfQorCisgICAgQ09MTEFU RSB7eyBkYXRhLmNvbGxuYW1lIH19eyUgZW5kaWYgJX17JSBpZiBkYXRhLnR5 cGRlZmF1bHQgJX0KKworICAgIERFRkFVTFQge3sgZGF0YS50eXBkZWZhdWx0 IH19eyUgZW5kaWYgJX17JSBpZiBkYXRhLnR5cG5vdG51bGwgJX0KKworICAg IE5PVCBOVUxMeyUgZW5kaWYgJX17JSBpZiBkYXRhLmNvbnN0cmFpbnRzICV9 eyUgZm9yIGMgaW4gZGF0YS5jb25zdHJhaW50cyAlfXslIGlmIGMuY29ubmFt ZSBhbmQgYy5jb25zcmMgJX0KKworICAgIENPTlNUUkFJTlQge3sgY29ubnxx dElkZW50KGMuY29ubmFtZSkgfX0gQ0hFQ0sgKHt7IGMuY29uc3JjIH19KXsl IGVuZGlmIC0lfQoreyUgZW5kZm9yIC0lfQoreyUgZW5kaWYgLSV9OworCit7 JSBpZiBkYXRhLm93bmVyICV9CitBTFRFUiBET01BSU4ge3sgY29ubnxxdElk ZW50KGRhdGEuYmFzZW5zcCwgZGF0YS5uYW1lKSB9fSBPV05FUiBUTyB7eyBj b25ufHF0SWRlbnQoZGF0YS5vd25lcikgfX07eyUgZW5kaWYgJX17JSBpZiBk YXRhLmRlc2NyaXB0aW9uICV9CisKKworQ09NTUVOVCBPTiBET01BSU4ge3sg Y29ubnxxdElkZW50KGRhdGEuYmFzZW5zcCwgZGF0YS5uYW1lKSB9fQorICAg IElTICd7eyBkYXRhLmRlc2NyaXB0aW9uIH19Jzt7JSBlbmRpZiAtJX17JSBp ZiBkYXRhLnNlY2xhYmVscyAlfQoreyUgZm9yIHIgaW4gZGF0YS5zZWNsYWJl bHMgJX0KK3slIGlmIHIuc2VjdXJpdHlfbGFiZWwgYW5kIHIucHJvdmlkZXIg JX0KKworCit7eyBTRUNMQUJMRS5TRVQoY29ubiwgJ0RPTUFJTicsIGRhdGEu bmFtZSwgci5wcm92aWRlciwgci5zZWN1cml0eV9sYWJlbCwgZGF0YS5iYXNl bnNwKSB9fXslIGVuZGlmIC0lfQoreyUgZW5kZm9yIC0lfQoreyUgZW5kaWYg LSV9CisKK3slIGVuZGlmIC0lfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4yX3BsdXMvZGVs ZXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2Rv bWFpbnMvc3FsLzkuMl9wbHVzL2RlbGV0ZS5zcWwKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uN2ExMmI1MAotLS0gL2Rldi9udWxsCisr KyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMv c3FsLzkuMl9wbHVzL2RlbGV0ZS5zcWwKQEAgLTAsMCArMSwxNiBAQAoreyUg aWYgc2NpZCBhbmQgZG9pZCAlfQorU0VMRUNUCisgICAgZC50eXBuYW1lIGFz IG5hbWUsIGJuLm5zcG5hbWUgYXMgYmFzZW5zcAorRlJPTQorICAgIHBnX3R5 cGUgZAorSk9JTgorICAgIHBnX25hbWVzcGFjZSBibiBPTiBibi5vaWQ9ZC50 eXBuYW1lc3BhY2UKK1dIRVJFCisgICAgZC50eXBuYW1lc3BhY2UgPSB7e3Nj aWR9fTo6b2lkCitBTkQKKyAgICBkLm9pZD17e2RvaWR9fTo6aW50OworeyUg ZW5kaWYgJX0KKworeyUgaWYgbmFtZSAlfQorRFJPUCBET01BSU4ge3sgY29u bnxxdElkZW50KGJhc2Vuc3AsIG5hbWUpIH19eyUgaWYgY2FzY2FkZSAlfSBD QVNDQURFeyUgZW5kaWYgJX07Cit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwv OS4yX3BsdXMvZ2V0X2NvbGxhdGlvbnMuc3FsIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv ZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4yX3BsdXMvZ2V0X2Nv bGxhdGlvbnMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLmU1OWMxN2QKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjJfcGx1cy9nZXRf Y29sbGF0aW9ucy5zcWwKQEAgLTAsMCArMSwxMCBAQAorU0VMRUNUIC0tbnNw bmFtZSwgY29sbG5hbWUsCisgICAgQ0FTRSBXSEVOIGxlbmd0aChuc3BuYW1l KSA+IDAgQU5EIGxlbmd0aChjb2xsbmFtZSkgPiAwICBUSEVOCisgICAgY29u Y2F0KG5zcG5hbWUsICcuIicsIGNvbGxuYW1lLCciJykKKyAgICBFTFNFICcn IEVORCBBUyBjb3B5X2NvbGxhdGlvbgorRlJPTQorICAgIHBnX2NvbGxhdGlv biBjLCBwZ19uYW1lc3BhY2UgbgorV0hFUkUKKyAgICBjLmNvbGxuYW1lc3Bh Y2U9bi5vaWQKK09SREVSIEJZCisgICAgbnNwbmFtZSwgY29sbG5hbWU7CmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9k b21haW5zL3NxbC85LjJfcGx1cy9nZXRfY29uc3RyYWludHMuc3FsIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4y X3BsdXMvZ2V0X2NvbnN0cmFpbnRzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi4yOWEyMDNjCi0tLSAvZGV2L251bGwKKysrIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwv OS4yX3BsdXMvZ2V0X2NvbnN0cmFpbnRzLnNxbApAQCAtMCwwICsxLDE1IEBA CitTRUxFQ1QKKyAgICAnRE9NQUlOJyBBUyBvYmplY3RraW5kLCBjLm9pZCwg Y29ubmFtZSwgdHlwbmFtZSBhcyByZWxuYW1lLCBuc3BuYW1lLCBkZXNjcmlw dGlvbiwKKyAgICByZWdleHBfcmVwbGFjZShwZ19nZXRfY29uc3RyYWludGRl ZihjLm9pZCwgdHJ1ZSksIEUnQ0hFQ0sgXFwoKC4qKVxcKS4qJywgRSdcXDEn KSBhcyBjb25zcmMsIGNvbm5vaW5oZXJpdCwgY29udmFsaWRhdGVkCitGUk9N CisgICAgcGdfY29uc3RyYWludCBjCitKT0lOCisgICAgcGdfdHlwZSB0IE9O IHQub2lkPWNvbnR5cGlkCitKT0lOCisgICAgcGdfbmFtZXNwYWNlIG5sIE9O IG5sLm9pZD10eXBuYW1lc3BhY2UKK0xFRlQgT1VURVIgSk9JTgorICAgIHBn X2Rlc2NyaXB0aW9uIGRlcyBPTiAoZGVzLm9iam9pZD10Lm9pZCBBTkQgZGVz LmNsYXNzb2lkPSdwZ19jb25zdHJhaW50Jzo6cmVnY2xhc3MpCitXSEVSRQor ICAgIGNvbnR5cGUgPSAnYycgQU5EIGNvbnR5cGlkID0gIHt7ZG9pZH19Ojpv aWQKK09SREVSIEJZCisgICAgY29ubmFtZTsKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMl9w bHVzL2dldF9vaWQuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1w bGF0ZXMvZG9tYWlucy9zcWwvOS4yX3BsdXMvZ2V0X29pZC5zcWwKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGI1Yzg5MQotLS0gL2Rl di9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVz L2RvbWFpbnMvc3FsLzkuMl9wbHVzL2dldF9vaWQuc3FsCkBAIC0wLDAgKzEs MTggQEAKK3slIGlmIGRvaWQgJX0KK1NFTEVDVAorICAgIGQudHlwbmFtZXNw YWNlIGFzIHNjaWQKK0ZST00KKyAgICBwZ190eXBlIGQKK1dIRVJFCisgICAg ZC5vaWQ9e3sgZG9pZCB9fTo6b2lkOworeyUgZWxzZSAlfQorU0VMRUNUCisg ICAgZC5vaWQsIGQudHlwbmFtZXNwYWNlCitGUk9NCisgICAgcGdfdHlwZSBk CitKT0lOCisgICAgcGdfbmFtZXNwYWNlIGJuIE9OIGJuLm9pZD1kLnR5cG5h bWVzcGFjZQorV0hFUkUKKyAgICBibi5uc3BuYW1lID0ge3sgYmFzZW5zcHxx dExpdGVyYWwgfX0KKyAgICBBTkQgZC50eXBuYW1lPXt7IG5hbWV8cXRMaXRl cmFsIH19OworeyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMl9wbHVzL25v ZGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9t YWlucy9zcWwvOS4yX3BsdXMvbm9kZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uN2JkM2U1YgotLS0gL2Rldi9udWxsCisrKyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3Fs LzkuMl9wbHVzL25vZGUuc3FsCkBAIC0wLDAgKzEsMTMgQEAKK1NFTEVDVAor ICAgIGQub2lkLCBkLnR5cG5hbWUgYXMgbmFtZSwgcGdfZ2V0X3VzZXJieWlk KGQudHlwb3duZXIpIGFzIG93bmVyLAorICAgIGJuLm5zcG5hbWUgYXMgYmFz ZW5zcAorRlJPTQorICAgIHBnX3R5cGUgZAorSk9JTgorICAgIHBnX3R5cGUg YiBPTiBiLm9pZCA9IGQudHlwYmFzZXR5cGUKK0pPSU4KKyAgICBwZ19uYW1l c3BhY2UgYm4gT04gYm4ub2lkPWQudHlwbmFtZXNwYWNlCitXSEVSRQorICAg IGQudHlwbmFtZXNwYWNlID0ge3tzY2lkfX06Om9pZAorT1JERVIgQlkKKyAg ICBkLnR5cG5hbWU7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21h aW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjJfcGx1cy9wcm9wZXJ0aWVz LnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFp bnMvc3FsLzkuMl9wbHVzL3Byb3BlcnRpZXMuc3FsCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4OTI5ODgKLS0tIC9kZXYvbnVsbAor KysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5z L3NxbC85LjJfcGx1cy9wcm9wZXJ0aWVzLnNxbApAQCAtMCwwICsxLDM0IEBA CitTRUxFQ1QKKyAgICBkLm9pZCwgZC50eXBuYW1lIGFzIG5hbWUsIGQudHlw YmFzZXR5cGUsIGZvcm1hdF90eXBlKGIub2lkLE5VTEwpIGFzIGJhc2V0eXBl LCBwZ19nZXRfdXNlcmJ5aWQoZC50eXBvd25lcikgYXMgb3duZXIsCisgICAg Yy5vaWQgQVMgY29sbG9pZCwgZm9ybWF0X3R5cGUoYi5vaWQsIGQudHlwdHlw bW9kKSBBUyBmdWxsdHlwZSwKKyAgICBDQVNFIFdIRU4gbGVuZ3RoKGNuLm5z cG5hbWUpID4gMCBBTkQgbGVuZ3RoKGMuY29sbG5hbWUpID4gMCBUSEVOCisg ICAgY29uY2F0KGNuLm5zcG5hbWUsICcuIicsIGMuY29sbG5hbWUsJyInKQor ICAgIEVMU0UgJycgRU5EIEFTIGNvbGxuYW1lLAorICAgIGQudHlwdHlwbW9k LCBkLnR5cG5vdG51bGwsIGQudHlwZGVmYXVsdCwgZC50eXBuZGltcywgZC50 eXBkZWxpbSwgYm4ubnNwbmFtZSBhcyBiYXNlbnNwLAorICAgIGRlc2NyaXB0 aW9uLCAoU0VMRUNUIENPVU5UKDEpIEZST00gcGdfdHlwZSB0MiBXSEVSRSB0 Mi50eXBuYW1lPWQudHlwbmFtZSkgPiAxIEFTIGRvbWlzZHVwLAorICAgIChT RUxFQ1QgQ09VTlQoMSkgRlJPTSBwZ190eXBlIHQzIFdIRVJFIHQzLnR5cG5h bWU9Yi50eXBuYW1lKSA+IDEgQVMgYmFzZWlzZHVwLAorICAgIChTRUxFQ1QK KyAgICAgICAgYXJyYXlfYWdnKHByb3ZpZGVyIHx8ICc9JyB8fCBsYWJlbCkK KyAgICBGUk9NCisgICAgICAgIHBnX3Noc2VjbGFiZWwgc2wxCisgICAgV0hF UkUKKyAgICAgICAgc2wxLm9iam9pZD1kLm9pZCkgQVMgc2VjbGFiZWxzCitG Uk9NCisgICAgcGdfdHlwZSBkCitKT0lOCisgICAgcGdfdHlwZSBiIE9OIGIu b2lkID0gZC50eXBiYXNldHlwZQorSk9JTgorICAgIHBnX25hbWVzcGFjZSBi biBPTiBibi5vaWQ9ZC50eXBuYW1lc3BhY2UKK0xFRlQgT1VURVIgSk9JTgor ICAgIHBnX2Rlc2NyaXB0aW9uIGRlcyBPTiAoZGVzLm9iam9pZD1kLm9pZCBB TkQgZGVzLmNsYXNzb2lkPSdwZ190eXBlJzo6cmVnY2xhc3MpCitMRUZUIE9V VEVSIEpPSU4KKyAgICBwZ19jb2xsYXRpb24gYyBPTiBkLnR5cGNvbGxhdGlv bj1jLm9pZAorTEVGVCBPVVRFUiBKT0lOCisgICAgcGdfbmFtZXNwYWNlIGNu IE9OIGMuY29sbG5hbWVzcGFjZT1jbi5vaWQKK1dIRVJFCisgICAgZC50eXBu YW1lc3BhY2UgPSB7e3NjaWR9fTo6b2lkCit7JSBpZiBkb2lkICV9CisgIEFO RCBkLm9pZD17e2RvaWR9fTo6aW50Cit7JSBlbmRpZiAlfQorT1JERVIgQlkK KyAgICBkLnR5cG5hbWU7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9k b21haW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjJfcGx1cy91cGRhdGUu c3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlu cy9zcWwvOS4yX3BsdXMvdXBkYXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi5hMDljZWY1Ci0tLSAvZGV2L251bGwKKysrIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwv OS4yX3BsdXMvdXBkYXRlLnNxbApAQCAtMCwwICsxLDY2IEBACit7JSBpbXBv cnQgJ21hY3Jvcy9zY2hlbWFzL3NlY3VyaXR5Lm1hY3JvcycgYXMgU0VDTEFC TEUgJX0KK3slIGlmIGRhdGEgJX0KK3slIHNldCBuYW1lID0gb19kYXRhLm5h bWUgJX0KK3slIGlmIGRhdGEubmFtZSAlfQoreyUgaWYgZGF0YS5uYW1lICE9 IG9fZGF0YS5uYW1lICV9CitBTFRFUiBET01BSU4ge3sgY29ubnxxdElkZW50 KG9fZGF0YS5iYXNlbnNwLCBvX2RhdGEubmFtZSkgfX0KKyAgICBSRU5BTUUg VE8ge3sgY29ubnxxdElkZW50KGRhdGEubmFtZSkgfX07Cit7JSBzZXQgbmFt ZSA9IGRhdGEubmFtZSAlfQoreyUgZW5kaWYgJX0KKworeyUgZW5kaWYgLSV9 Cit7JSBpZiBkYXRhLnR5cG5vdG51bGwgYW5kIG5vdCBvX2RhdGEudHlwbm90 bnVsbCAlfQorQUxURVIgRE9NQUlOIHt7IGNvbm58cXRJZGVudChvX2RhdGEu YmFzZW5zcCwgbmFtZSkgfX0KKyAgICBTRVQgTk9UIE5VTEw7Cit7JSBlbGlm ICd0eXBub3RudWxsJyBpbiBkYXRhIGFuZCBub3QgZGF0YS50eXBub3RudWxs IGFuZCBvX2RhdGEudHlwbm90bnVsbCV9CitBTFRFUiBET01BSU4ge3sgY29u bnxxdElkZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQorICAgIERST1Ag Tk9UIE5VTEw7Cit7JSBlbmRpZiAtJX17JSBpZiBkYXRhLnR5cGRlZmF1bHQg JX0KK0FMVEVSIERPTUFJTiB7eyBjb25ufHF0SWRlbnQob19kYXRhLmJhc2Vu c3AsIG5hbWUpIH19CisgICAgU0VUIERFRkFVTFQge3sgZGF0YS50eXBkZWZh dWx0IH19OworeyUgZWxpZiBub3QgZGF0YS50eXBkZWZhdWx0IGFuZCBvX2Rh dGEudHlwZGVmYXVsdCAlfQorQUxURVIgRE9NQUlOIHt7IGNvbm58cXRJZGVu dChvX2RhdGEuYmFzZW5zcCwgbmFtZSkgfX0KKyAgICBEUk9QIERFRkFVTFQ7 Cit7JSBlbmRpZiAtJX17JSBpZiBkYXRhLm93bmVyICV9CisKK0FMVEVSIERP TUFJTiB7eyBjb25ufHF0SWRlbnQob19kYXRhLmJhc2Vuc3AsIG5hbWUpIH19 CisgICAgT1dORVIgVE8ge3sgY29ubnxxdElkZW50KGRhdGEub3duZXIpIH19 O3slIGVuZGlmIC0lfXslIGlmIGRhdGEuY29uc3RyYWludHMgJX0KK3slIGZv ciBjIGluIGRhdGEuY29uc3RyYWludHMuZGVsZXRlZCAlfQorCisKK0FMVEVS IERPTUFJTiB7eyBjb25ufHF0SWRlbnQob19kYXRhLmJhc2Vuc3AsIG5hbWUp IH19CisgICAgRFJPUCBDT05TVFJBSU5UIHt7IGNvbm58cXRJZGVudChjLmNv bm5hbWUpIH19OworeyUgZW5kZm9yIC0lfQoreyUgZm9yIGMgaW4gZGF0YS5j b25zdHJhaW50cy5hZGRlZCAlfQorCitBTFRFUiBET01BSU4ge3sgY29ubnxx dElkZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQorICAgIEFERCBDT05T VFJBSU5UIHt7IGNvbm58cXRJZGVudChjLmNvbm5hbWUpIH19IENIRUNLICh7 eyBjLmNvbnNyYyB9fSl7JSBpZiBjLmNvbnZhbGlkYXRlZCAlfQorICAgIE5P VCBWQUxJRHslIGVuZGlmICV9eyUgaWYgYy5jb25ub2luaGVyaXQgJX0gTk8g SU5IRVJJVHslIGVuZGlmIC0lfTsKK3slIGVuZGZvciAtJX17JSBlbmRpZiAt JX0KK3slIHNldCBzZWNsYWJlbHMgPSBkYXRhLnNlY2xhYmVscyAlfQoreyUg aWYgJ2RlbGV0ZWQnIGluIHNlY2xhYmVscyBhbmQgc2VjbGFiZWxzLmRlbGV0 ZWR8bGVuZ3RoID4gMCAlfQoreyUgZm9yIHIgaW4gc2VjbGFiZWxzLmRlbGV0 ZWQgJX0KKwore3sgU0VDTEFCTEUuVU5TRVQoY29ubiwgJ0RPTUFJTicsIG5h bWUsIHIucHJvdmlkZXIsIG9fZGF0YS5iYXNlbnNwKSB9fQoreyUgZW5kZm9y ICV9Cit7JSBlbmRpZiAtJX0KK3slIGlmICdhZGRlZCcgaW4gc2VjbGFiZWxz IGFuZCBzZWNsYWJlbHMuYWRkZWR8bGVuZ3RoID4gMCAlfQoreyUgZm9yIHIg aW4gc2VjbGFiZWxzLmFkZGVkICV9CisKK3t7IFNFQ0xBQkxFLlNFVChjb25u LCAnRE9NQUlOJywgbmFtZSwgci5wcm92aWRlciwgci5zZWN1cml0eV9sYWJl bCwgb19kYXRhLmJhc2Vuc3ApIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlm IC0lfQoreyUgaWYgJ2NoYW5nZWQnIGluIHNlY2xhYmVscyBhbmQgc2VjbGFi ZWxzLmNoYW5nZWR8bGVuZ3RoID4gMCAlfQoreyUgZm9yIHIgaW4gc2VjbGFi ZWxzLmNoYW5nZWQgJX0KKwore3sgU0VDTEFCTEUuU0VUKGNvbm4sICdET01B SU4nLCBuYW1lLCByLnByb3ZpZGVyLCByLnNlY3VyaXR5X2xhYmVsLCBvX2Rh dGEuYmFzZW5zcCkgfX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgLSV9eyUg aWYgZGF0YS5kZXNjcmlwdGlvbiAlfQorCitDT01NRU5UIE9OIERPTUFJTiB7 eyBjb25ufHF0SWRlbnQob19kYXRhLmJhc2Vuc3AsIG5hbWUpIH19CisgICAg SVMge3sgZGF0YS5kZXNjcmlwdGlvbnxxdExpdGVyYWwgfX07eyUgZW5kaWYg LSV9eyUgaWYgZGF0YS5iYXNlbnNwICV9CisKKworQUxURVIgRE9NQUlOIHt7 IGNvbm58cXRJZGVudChvX2RhdGEuYmFzZW5zcCwgbmFtZSkgfX0KKyAgICBT RVQgU0NIRU1BIHt7IGNvbm58cXRJZGVudChkYXRhLmJhc2Vuc3ApIH19O3sl IGVuZGlmIC0lfQoreyUgZW5kaWYgLSV9Cg== --001a113473b627f935052e26fe91 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 --001a113473b627f935052e26fe91--