Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84) (envelope-from ) id 1aePhf-0005aZ-ME for pgadmin-hackers@arkaria.postgresql.org; Fri, 11 Mar 2016 16:14:16 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84) (envelope-from ) id 1aePhf-0006OU-89 for pgadmin-hackers@arkaria.postgresql.org; Fri, 11 Mar 2016 16:14:15 +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) (envelope-from ) id 1aePhZ-0006L8-F1 for pgadmin-hackers@postgresql.org; Fri, 11 Mar 2016 16:14:10 +0000 Received: from mail-ig0-x236.google.com ([2607:f8b0:4001:c05::236]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84) (envelope-from ) id 1aePhW-0005Zm-H5 for pgadmin-hackers@postgresql.org; Fri, 11 Mar 2016 16:14:08 +0000 Received: by mail-ig0-x236.google.com with SMTP id vs8so13978206igb.1 for ; Fri, 11 Mar 2016 08:14:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pgadmin-org.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc; bh=UoWZh3fBGXapRzK0bibq66JEvSWdrNWSzOgoQaNyFr8=; b=sWB54R4ZJe7G+vsbQopjz0GEiU2pcQe8zG53wtrOZ0SvfQVl3Hg5lj3YqHUVTshMHZ zTj2nzbTN17gFvSum/nhvCkyA4O+9c8zEt8yeKF8gLdw9pJe43t2QLdB8THEcLXeIRNP vTtAS2TVNzuTSoqsQzkXP8TGJ/eVHowEmWvGinBFV4mUhu66gh+G9x67K6O+smi6Gcj6 SDNZ+m6k8jIuofwAc/GlNAvzwoDzmNQHNopXM6CiF4IyeTaPL7e7FXibaTnKZSOVlLGo bnenPKYDnyAk114o7mRrT0wQF1HX8tg812BhrFsrEAxxZt1uQsIJM8XzDvSYYt2mOy+O OH5g== 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=UoWZh3fBGXapRzK0bibq66JEvSWdrNWSzOgoQaNyFr8=; b=IUzw98RgIUesXio43MQAIH4NB4u6dC3ZdKXBCqq13HWUWKwtiXWsZfjnhkIJHII/vZ PlS9rDoJzC8mMIF1BPtXU3sg6f9qakPSJm5Fbp17QSoEvZzTY5vZKDO433neyU6kyYU9 LIec8vjj9Dsn3zkExvjEQQoXQH91rrvt/4TzyjoIGK2CUvDtLWTW4567dZDxyvYEdBBp pQOBKxUYkCdbLiN2y0y3VuiHrzLxGcu7XJRvdevEsSL+P2Ln+wrVk5Rt4/k/xSJjSMXx VK7JzXCr7NQB13jCa6vryMInWTgdCEvZfU+VWP+2Qfm+furd6KyUAXMci9fLlw/flpUI Fl2A== X-Gm-Message-State: AD7BkJIYjckVj4mmx5lYFXGxdd07ldP8apgKIqCiJUKmyYYwe4JMHIw6CjIow6EeAeCa+jvT84jt02NhhR2Hig== MIME-Version: 1.0 X-Received: by 10.50.43.194 with SMTP id y2mr4549053igl.96.1457712845814; Fri, 11 Mar 2016 08:14:05 -0800 (PST) Received: by 10.64.213.73 with HTTP; Fri, 11 Mar 2016 08:14:05 -0800 (PST) In-Reply-To: References: Date: Fri, 11 Mar 2016 16:14:05 +0000 Message-ID: Subject: Re: PATCH: Added Node Type & Catalog objects [pgAdmin4] From: Dave Page To: Murtuza Zabuawala Cc: pgadmin-hackers Content-Type: multipart/mixed; boundary=047d7bfea0b65c85e4052dc838c7 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 --047d7bfea0b65c85e4052dc838c7 Content-Type: text/plain; charset=UTF-8 And this time with the patch. On Fri, Mar 11, 2016 at 4:11 PM, Dave Page wrote: > On Tue, Mar 8, 2016 at 1:38 PM, Murtuza Zabuawala > wrote: >> Hi, >> >> PFA patch to add new nodes in pgAdmin4. >> 1) Type node >> 2) Catalog objects >> >> Note: Both above nodes depended on schema/catalog node, Please apply them >> after latest patch of schema/catalog from Ashesh. >> - Type node also depends on parse_priv_function_templates.patch (which I >> sent in separate email today) > > The type node seems to need quite a bit of work - please review and > test it carefully before re-submitting. There's an updated patch > attached, and some review info below: > > Changed in the attached patch: > > - s/Oid/OID > - Set defaults for schema and owner > - Rename the Type Defintion group to Definition. > - Moved some properties (acl, members) into the appropriate group > - s/Enumration/Enumeration > > To be fixed: > > - This module is derived from SchemaChildModule, so why does it still > have the backend support SQL? > > - I cleaned up most of the SQL, which was improperly indented in many > places. However I have not event tried to fix up the create.sql > scripts. These need reformatting to: > - Use 4 character indents > - Not start a line with a comma - e.g. " ,FOO=bar", which should be > " FOO=bar," (obviously the commas need to trail from the line > before). > > - The "Show System Objects" option is not honoured. > > - The members list should be delimited with ", " not "," > > - The ACL columns don't match other objects on the subnode panel - > Grantee/Granter/Privileges should be Grantee/Privileges/Granter > > - Attempting to add a security label with empty values gives: SECURITY > LABEL FOR None ON TYPE foo_enum IS NULL; > > - The schema is omitted from GRANT statements when creating an object, e.g. > > CREATE TYPE pem.foo_enum AS ENUM > ('foo', 'bar', 'whizz'); > > ALTER TYPE pem.foo_enum OWNER TO postgres; > > COMMENT ON TYPE pem.foo_enum IS 'This is the foo enum'; > > GRANT ALL ON TYPE foo_enum TO pem_admin; > > - Move remaining Properties display properties to the appropriate > group - e.g. ENUM labels should be in the Definition group. Only Name, > OID, Owner, Alias, System Type and Comment should be under General. > > - The schema name is omitted when dropping a type, leading to: type > "foo_enum" does not exist > > - The dependencies and dependents tabs don't display any data. > > Thanks. > > -- > Dave Page > Blog: http://pgsnake.blogspot.com > Twitter: @pgsnake > > EnterpriseDB UK: http://www.enterprisedb.com > The Enterprise PostgreSQL Company -- Dave Page Blog: http://pgsnake.blogspot.com Twitter: @pgsnake EnterpriseDB UK: http://www.enterprisedb.com The Enterprise PostgreSQL Company --047d7bfea0b65c85e4052dc838c7 Content-Type: application/octet-stream; name="type_node_v1-dave.patch" Content-Disposition: attachment; filename="type_node_v1-dave.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ilnwlth90 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3R5cGVzL19faW5pdF9fLnB5 IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvX19pbml0X18ucHkKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWIzNGVjZQotLS0gL2Rldi9u dWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3R5cGVzL19faW5pdF9fLnB5CkBA IC0wLDAgKzEsMTE3MCBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBD b3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE2LCBUaGUgcGdBZG1pbiBEZXZlbG9w bWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIg dGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKKworIiIiIEltcGxlbWVudHMgVHlwZSBOb2RlICIiIgor CitpbXBvcnQganNvbgorZnJvbSBmbGFzayBpbXBvcnQgcmVuZGVyX3RlbXBs YXRlLCBtYWtlX3Jlc3BvbnNlLCByZXF1ZXN0LCBqc29uaWZ5Citmcm9tIGZs YXNrLmV4dC5iYWJlbCBpbXBvcnQgZ2V0dGV4dAorZnJvbSBwZ2FkbWluLnV0 aWxzLmFqYXggaW1wb3J0IG1ha2VfanNvbl9yZXNwb25zZSwgXAorICAgIG1h a2VfcmVzcG9uc2UgYXMgYWpheF9yZXNwb25zZSwgaW50ZXJuYWxfc2VydmVy X2Vycm9yCitmcm9tIHBnYWRtaW4uYnJvd3Nlci51dGlscyBpbXBvcnQgUEdD aGlsZE5vZGVWaWV3Citmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3Jv dXBzLnNlcnZlcnMuZGF0YWJhc2VzLnNjaGVtYXMudXRpbHMgXAorICAgIGlt cG9ydCBTY2hlbWFDaGlsZE1vZHVsZQoraW1wb3J0IHBnYWRtaW4uYnJvd3Nl ci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzIGFzIGRhdGFiYXNl Citmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMu dXRpbHMgaW1wb3J0IHBhcnNlX3ByaXZfZnJvbV9kYiwgXAorICAgIHBhcnNl X3ByaXZfdG9fZGIKK2Zyb20gcGdhZG1pbi51dGlscy5hamF4IGltcG9ydCBw cmVjb25kaXRpb25fcmVxdWlyZWQKK2Zyb20gcGdhZG1pbi51dGlscy5kcml2 ZXIgaW1wb3J0IGdldF9kcml2ZXIKK2Zyb20gY29uZmlnIGltcG9ydCBQR19E RUZBVUxUX0RSSVZFUgorZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHdyYXBzCisK KworY2xhc3MgVHlwZU1vZHVsZShTY2hlbWFDaGlsZE1vZHVsZSk6CisgICAg IiIiCisgICAgIGNsYXNzIFR5cGVNb2R1bGUoU2NoZW1hQ2hpbGRNb2R1bGUp CisKKyAgICAgICAgQSBtb2R1bGUgY2xhc3MgZm9yIFR5cGUgbm9kZSBkZXJp dmVkIGZyb20gU2NoZW1hQ2hpbGRNb2R1bGUKKworICAgIE1ldGhvZHM6Cisg ICAgLS0tLS0tLQorICAgICogX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQor ICAgICAgLSBNZXRob2QgaXMgdXNlZCB0byBpbml0aWFsaXplIHRoZSBUeXBl IGFuZCBpdCdzIGJhc2UgbW9kdWxlLgorCisgICAgKiBnZXRfbm9kZXMoZ2lk LCBzaWQsIGRpZCwgc2NpZCwgdGlkKQorICAgICAgLSBNZXRob2QgaXMgdXNl ZCB0byBnZW5lcmF0ZSB0aGUgYnJvd3NlciBjb2xsZWN0aW9uIG5vZGUuCisK KyAgICAqIG5vZGVfaW5vZGUoKQorICAgICAgLSBNZXRob2QgaXMgb3ZlcnJp ZGRlbiBmcm9tIGl0cyBiYXNlIGNsYXNzIHRvIG1ha2UgdGhlIG5vZGUgYXMg bGVhZiBub2RlLgorCisgICAgKiBzY3JpcHRfbG9hZCgpCisgICAgICAtIExv YWQgdGhlIG1vZHVsZSBzY3JpcHQgZm9yIHNjaGVtYSwgd2hlbiBhbnkgb2Yg dGhlIHNlcnZlciBub2RlIGlzCisgICAgICAgIGluaXRpYWxpemVkLgorICAg ICIiIgorCisgICAgTk9ERV9UWVBFID0gJ3R5cGUnCisgICAgQ09MTEVDVElP Tl9MQUJFTCA9IGdldHRleHQoIlR5cGVzIikKKworICAgIGRlZiBfX2luaXRf XyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAiIiIKKyAgICAg ICAgTWV0aG9kIGlzIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgVHlwZU1vZHVs ZSBhbmQgaXQncyBiYXNlIG1vZHVsZS4KKworICAgICAgICBBcmdzOgorICAg ICAgICAgICAgKmFyZ3M6CisgICAgICAgICAgICAqKmt3YXJnczoKKyAgICAg ICAgIiIiCisgICAgICAgIHN1cGVyKFR5cGVNb2R1bGUsIHNlbGYpLl9faW5p dF9fKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgc2VsZi5taW5fdmVyID0g Tm9uZQorICAgICAgICBzZWxmLm1heF92ZXIgPSBOb25lCisKKyAgICBkZWYg Z2V0X25vZGVzKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQpOgorICAgICAg ICAiIiIKKyAgICAgICAgR2VuZXJhdGUgdGhlIGNvbGxlY3Rpb24gbm9kZQor ICAgICAgICAiIiIKKyAgICAgICAgeWllbGQgc2VsZi5nZW5lcmF0ZV9icm93 c2VyX2NvbGxlY3Rpb25fbm9kZShzY2lkKQorCisgICAgQHByb3BlcnR5Cisg ICAgZGVmIHNjcmlwdF9sb2FkKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAg ICAgTG9hZCB0aGUgbW9kdWxlIHNjcmlwdCBmb3IgZGF0YWJhc2UsIHdoZW4g YW55IG9mIHRoZSBkYXRhYmFzZSBub2RlIGlzCisgICAgICAgIGluaXRpYWxp emVkLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIGRhdGFiYXNlLkRh dGFiYXNlTW9kdWxlLk5PREVfVFlQRQorCisgICAgQHByb3BlcnR5CisgICAg ZGVmIG5vZGVfaW5vZGUoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBM b2FkIHRoZSBtb2R1bGUgbm9kZSBhcyBhIGxlYWYgbm9kZQorICAgICAgICAi IiIKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBAcHJvcGVydHkKKyAg ICBkZWYgc2hvd19zeXN0ZW1fb2JqZWN0cyhzZWxmKToKKyAgICAgICAgIiIi CisgICAgICAgIEZsYWcgdG8gc2V0IHNob3cgc3lzdGVtIFR5cGUKKyAgICAg ICAgIiIiCisgICAgICAgIHJldHVybiBUcnVlCisKK2JsdWVwcmludCA9IFR5 cGVNb2R1bGUoX19uYW1lX18pCisKKworY2xhc3MgVHlwZVZpZXcoUEdDaGls ZE5vZGVWaWV3KToKKyAgICAiIiIKKyAgICBUaGlzIGNsYXNzIGlzIHJlc3Bv bnNpYmxlIGZvciBnZW5lcmF0aW5nIHJvdXRlcyBmb3IgVHlwZSBub2RlCisK KyAgICBNZXRob2RzOgorICAgIC0tLS0tLS0KKyAgICAqIF9faW5pdF9fKCoq a3dhcmdzKQorICAgICAgLSBNZXRob2QgaXMgdXNlZCB0byBpbml0aWFsaXpl IHRoZSBUeXBlVmlldyBhbmQgaXQncyBiYXNlIHZpZXcuCisKKyAgICAqIGNo ZWNrX3ByZWNvbmRpdGlvbigpCisgICAgICAtIFRoaXMgZnVuY3Rpb24gd2ls bCBiZWhhdmUgYXMgYSBkZWNvcmF0b3Igd2hpY2ggd2lsbCBjaGVja3MKKyAg ICAgICAgZGF0YWJhc2UgY29ubmVjdGlvbiBiZWZvcmUgcnVubmluZyB2aWV3 LCBpdCB3aWxsIGFsc28gYXR0YWNoZXMKKyAgICAgICAgbWFuYWdlcixjb25u ICYgdGVtcGxhdGVfcGF0aCBwcm9wZXJ0aWVzIHRvIHNlbGYKKworICAgICog bGlzdCgpCisgICAgICAtIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBsaXN0 IGFsbCB0aGUgVHlwZSBub2RlcyB3aXRoaW4gdGhhdAorICAgICAgY29sbGVj dGlvbi4KKworICAgICogbm9kZXMoKQorICAgICAgLSBUaGlzIGZ1bmN0aW9u IHdpbGwgdXNlZCB0byBjcmVhdGUgYWxsIHRoZSBjaGlsZCBub2RlIHdpdGhp biB0aGF0CisgICAgICAgIGNvbGxlY3Rpb24sIEhlcmUgaXQgd2lsbCBjcmVh dGUgYWxsIHRoZSBUeXBlIG5vZGUuCisKKyAgICAqIHByb3BlcnRpZXMoZ2lk LCBzaWQsIGRpZCwgc2NpZCwgdGlkKQorICAgICAgLSBUaGlzIGZ1bmN0aW9u IHdpbGwgc2hvdyB0aGUgcHJvcGVydGllcyBvZiB0aGUgc2VsZWN0ZWQgVHlw ZSBub2RlCisKKyAgICAqIGNyZWF0ZShnaWQsIHNpZCwgZGlkLCBzY2lkKQor ICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwgY3JlYXRlIHRoZSBuZXcgVHlw ZSBvYmplY3QKKworICAgICogdXBkYXRlKGdpZCwgc2lkLCBkaWQsIHNjaWQs IHRpZCkKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIHVwZGF0ZSB0aGUg ZGF0YSBmb3IgdGhlIHNlbGVjdGVkIFR5cGUgbm9kZQorCisgICAgKiBkZWxl dGUoc2VsZiwgZ2lkLCBzaWQsIHNjaWQsIHRpZCk6CisgICAgICAtIFRoaXMg ZnVuY3Rpb24gd2lsbCBkcm9wIHRoZSBUeXBlIG9iamVjdAorCisgICAgKiBt c3FsKGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCkKKyAgICAgIC0gVGhpcyBm dW5jdGlvbiBpcyB1c2VkIHRvIHJldHVybiBtb2RpZmllZCBTUUwgZm9yIHRo ZSBzZWxlY3RlZAorICAgICAgICBUeXBlIG5vZGUKKworICAgICogZ2V0X3Nx bChkYXRhLCBzY2lkLCB0aWQpCisgICAgICAtIFRoaXMgZnVuY3Rpb24gd2ls bCBnZW5lcmF0ZSBzcWwgZnJvbSBtb2RlbCBkYXRhCisKKyAgICAqIHNxbChn aWQsIHNpZCwgZGlkLCBzY2lkKToKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3 aWxsIGdlbmVyYXRlIHNxbCB0byBzaG93IGl0IGluIHNxbCBwYW5lIGZvciB0 aGUKKyAgICAgICAgc2VsZWN0ZWQgVHlwZSBub2RlLgorCisgICAgKiBkZXBl bmRlbmN5KGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZCk6CisgICAgICAtIFRo aXMgZnVuY3Rpb24gd2lsbCBnZW5lcmF0ZSBkZXBlbmRlbmN5IGxpc3Qgc2hv dyBpdCBpbiBkZXBlbmRlbmN5CisgICAgICAgIHBhbmUgZm9yIHRoZSBzZWxl Y3RlZCBUeXBlIG5vZGUuCisKKyAgICAqIGRlcGVuZGVudChnaWQsIHNpZCwg ZGlkLCBzY2lkLCB0aWQpOgorICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwg Z2VuZXJhdGUgZGVwZW5kZW50IGxpc3QgdG8gc2hvdyBpdCBpbiBkZXBlbmRl bnQKKyAgICAgICAgcGFuZSBmb3IgdGhlIHNlbGVjdGVkIFR5cGUgbm9kZS4K KworICAgICogYWRkaXRpb25hbF9wcm9wZXJ0aWVzKGNvcHlfZGljdCwgdGlk KToKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIGFkZCBhZGRpdGlvbmFs IHByb3BlcnRpZXMgaW4gcmVzcG9uc2UKKworICAgICogZ2V0X2NvbGxhdGlv bnMoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkKToKKyAgICAgIC0gVGhpcyBm dW5jdGlvbiB3aWxsIHJldHVybiBsaXN0IG9mIGNvbGxhdGlvbiBpbiBhamF4 IHJlc3BvbnNlCisKKyAgICAqIGdldF90eXBlcyhnaWQsIHNpZCwgZGlkLCBz Y2lkLCB0aWQpOgorICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJu IGxpc3Qgb2YgdHlwZXMgaW4gYWpheCByZXNwb25zZQorCisgICAgKiBnZXRf c3VidHlwZXMoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkKToKKyAgICAgIC0g VGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiBsaXN0IG9mIHN1YnR5cGVzIGlu IGFqYXggcmVzcG9uc2UKKworICAgICogZ2V0X3N1YnR5cGVfb3BjbGFzcyhn aWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQpOgorICAgICAgLSBUaGlzIGZ1bmN0 aW9uIHdpbGwgcmV0dXJuIGxpc3Qgb2Ygc3VidHlwZSBvcGNsYXNzIGluIGFq YXggcmVzcG9uc2UKKworICAgICogZ2V0X3N1YnR5cGVfZGlmZihnaWQsIHNp ZCwgZGlkLCBzY2lkLCB0aWQpOgorICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdp bGwgcmV0dXJuIGxpc3Qgb2Ygc3VidHlwZSBkaWZmIGZ1bmN0aW9ucworICAg ICAgICBpbiBhamF4IHJlc3BvbnNlCisKKyAgICAqIGdldF9jYW5vbmljYWwo Z2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkKToKKyAgICAgIC0gVGhpcyBmdW5j dGlvbiB3aWxsIHJldHVybiBsaXN0IG9mIGNhbm9uaWNhbCBmdW5jdGlvbnMK KyAgICAgICAgaW4gYWpheCByZXNwb25zZQorCisgICAgKiBnZXRfZXh0ZXJu YWxfZnVuY3Rpb25zX2xpc3QoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkKToK KyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiBsaXN0IG9mIGV4 dGVybmFsIGZ1bmN0aW9ucworICAgICAgICBpbiBhamF4IHJlc3BvbnNlCisg ICAgIiIiCisKKyAgICBub2RlX3R5cGUgPSBibHVlcHJpbnQubm9kZV90eXBl CisKKyAgICBwYXJlbnRfaWRzID0gWworICAgICAgICAgICAgeyd0eXBlJzog J2ludCcsICdpZCc6ICdnaWQnfSwKKyAgICAgICAgICAgIHsndHlwZSc6ICdp bnQnLCAnaWQnOiAnc2lkJ30sCisgICAgICAgICAgICB7J3R5cGUnOiAnaW50 JywgJ2lkJzogJ2RpZCd9LAorICAgICAgICAgICAgeyd0eXBlJzogJ2ludCcs ICdpZCc6ICdzY2lkJ30KKyAgICAgICAgICAgIF0KKyAgICBpZHMgPSBbCisg ICAgICAgICAgICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ3RpZCd9CisgICAg ICAgICAgICBdCisKKyAgICBvcGVyYXRpb25zID0gZGljdCh7CisgICAgICAg ICdvYmonOiBbCisgICAgICAgICAgICB7J2dldCc6ICdwcm9wZXJ0aWVzJywg J2RlbGV0ZSc6ICdkZWxldGUnLCAncHV0JzogJ3VwZGF0ZSd9LAorICAgICAg ICAgICAgeydnZXQnOiAnbGlzdCcsICdwb3N0JzogJ2NyZWF0ZSd9CisgICAg ICAgIF0sCisgICAgICAgICdkZWxldGUnOiBbeydkZWxldGUnOiAnZGVsZXRl J31dLAorICAgICAgICAnY2hpbGRyZW4nOiBbeydnZXQnOiAnY2hpbGRyZW4n fV0sCisgICAgICAgICdub2Rlcyc6IFt7J2dldCc6ICdub2RlJ30sIHsnZ2V0 JzogJ25vZGVzJ31dLAorICAgICAgICAnc3FsJzogW3snZ2V0JzogJ3NxbCd9 XSwKKyAgICAgICAgJ21zcWwnOiBbeydnZXQnOiAnbXNxbCd9LCB7J2dldCc6 ICdtc3FsJ31dLAorICAgICAgICAnc3RhdHMnOiBbeydnZXQnOiAnc3RhdGlz dGljcyd9XSwKKyAgICAgICAgJ2RlcGVuZGVuY3knOiBbeydnZXQnOiAnZGVw ZW5kZW5jaWVzJ31dLAorICAgICAgICAnZGVwZW5kZW50JzogW3snZ2V0Jzog J2RlcGVuZGVudHMnfV0sCisgICAgICAgICdtb2R1bGUuanMnOiBbe30sIHt9 LCB7J2dldCc6ICdtb2R1bGVfanMnfV0sCisgICAgICAgICdnZXRfdHlwZXMn OiBbeydnZXQnOiAnZ2V0X3R5cGVzJ30sIHsnZ2V0JzogJ2dldF90eXBlcyd9 XSwKKyAgICAgICAgJ2dldF9zdHlwZXMnOiBbeydnZXQnOiAnZ2V0X3N1YnR5 cGVzJ30sIHsnZ2V0JzogJ2dldF9zdWJ0eXBlcyd9XSwKKyAgICAgICAgJ2dl dF9zdWJvcGNsYXNzJzogW3snZ2V0JzogJ2dldF9zdWJ0eXBlX29wY2xhc3Mn fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHsnZ2V0JzogJ2dldF9z dWJ0eXBlX29wY2xhc3MnfV0sCisgICAgICAgICdnZXRfc3R5cGVkaWZmJzog W3snZ2V0JzogJ2dldF9zdWJ0eXBlX2RpZmYnfSwgeydnZXQnOiAnZ2V0X3N1 YnR5cGVfZGlmZid9XSwKKyAgICAgICAgJ2dldF9jYW5vbmljYWwnOiBbeydn ZXQnOiAnZ2V0X2Nhbm9uaWNhbCd9LCB7J2dldCc6ICdnZXRfY2Fub25pY2Fs J31dLAorICAgICAgICAnZ2V0X2NvbGxhdGlvbnMnOiBbeydnZXQnOiAnZ2V0 X2NvbGxhdGlvbnMnfSwgeydnZXQnOiAnZ2V0X2NvbGxhdGlvbnMnfV0sCisg ICAgICAgICdnZXRfZXh0ZXJuYWxfZnVuY3Rpb25zJzogW3snZ2V0JzogJ2dl dF9leHRlcm5hbF9mdW5jdGlvbnNfbGlzdCd9LAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB7J2dldCc6ICdnZXRfZXh0ZXJuYWxfZnVu Y3Rpb25zX2xpc3QnfV0KKyAgICB9KQorCisgICAgZGVmIGNoZWNrX3ByZWNv bmRpdGlvbihmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rp b24gd2lsbCBiZWhhdmUgYXMgYSBkZWNvcmF0b3Igd2hpY2ggd2lsbCBjaGVj a3MKKyAgICAgICAgZGF0YWJhc2UgY29ubmVjdGlvbiBiZWZvcmUgcnVubmlu ZyB2aWV3LCBpdCB3aWxsIGFsc28gYXR0YWNoZXMKKyAgICAgICAgbWFuYWdl cixjb25uICYgdGVtcGxhdGVfcGF0aCBwcm9wZXJ0aWVzIHRvIHNlbGYKKyAg ICAgICAgIiIiCisgICAgICAgIEB3cmFwcyhmKQorICAgICAgICBkZWYgd3Jh cCgqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgIyBIZXJlIGFyZ3Nb MF0gd2lsbCBob2xkIHNlbGYgJiBrd2FyZ3Mgd2lsbCBob2xkIGdpZCxzaWQs ZGlkCisgICAgICAgICAgICBzZWxmID0gYXJnc1swXQorICAgICAgICAgICAg c2VsZi5tYW5hZ2VyID0gZ2V0X2RyaXZlcihQR19ERUZBVUxUX0RSSVZFUiku Y29ubmVjdGlvbl9tYW5hZ2VyKGt3YXJnc1snc2lkJ10pCisgICAgICAgICAg ICBzZWxmLmNvbm4gPSBzZWxmLm1hbmFnZXIuY29ubmVjdGlvbihkaWQ9a3dh cmdzWydkaWQnXSkKKworICAgICAgICAgICAgIyBXZSBuZWVkIGRhdGxhc3Rz eXNvaWQgdG8gY2hlY2sgaWYgY3VycmVudCB0eXBlIGlzIHN5c3RlbSB0eXBl CisgICAgICAgICAgICBzZWxmLmRhdGxhc3RzeXNvaWQgPSBzZWxmLm1hbmFn ZXIuZGJfaW5mb1trd2FyZ3NbJ2RpZCddXVsnZGF0bGFzdHN5c29pZCddCisK KyAgICAgICAgICAgICMgSWYgREIgbm90IGNvbm5lY3RlZCB0aGVuIHJldHVy biBlcnJvciB0byBicm93c2VyCisgICAgICAgICAgICBpZiBub3Qgc2VsZi5j b25uLmNvbm5lY3RlZCgpOgorICAgICAgICAgICAgICAgIHJldHVybiBwcmVj b25kaXRpb25fcmVxdWlyZWQoCisgICAgICAgICAgICAgICAgICAgIGdldHRl eHQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbm5lY3Rpb24g dG8gdGhlIHNlcnZlciBoYXMgYmVlbiBsb3N0ISIKKyAgICAgICAgICAgICAg ICAgICAgKQorICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyBE ZWNsYXJlIGFsbG93cyBhY2wgb24gdHlwZQorICAgICAgICAgICAgc2VsZi5h Y2wgPSBbJ1UnXQorCisgICAgICAgICAgICAjIHdlIHdpbGwgc2V0IHRlbXBs YXRlIHBhdGggZm9yIHNxbCBzY3JpcHRzCisgICAgICAgICAgICB2ZXIgPSBz ZWxmLm1hbmFnZXIudmVyc2lvbgorICAgICAgICAgICAgaWYgOTAwMDAgPj0g dmVyIDwgOTAxMDA6CisgICAgICAgICAgICAgICAgc2VsZi50ZW1wbGF0ZV9w YXRoID0gJ3R5cGUvc3FsL3ByZV85LjEnCisgICAgICAgICAgICBlbHNlOgor ICAgICAgICAgICAgICAgIHNlbGYudGVtcGxhdGVfcGF0aCA9ICd0eXBlL3Nx bC85LjFfcGx1cycKKyAgICAgICAgICAgIHJldHVybiBmKCphcmdzLCAqKmt3 YXJncykKKworICAgICAgICByZXR1cm4gd3JhcAorCisgICAgQGNoZWNrX3By ZWNvbmRpdGlvbgorICAgIGRlZiBsaXN0KHNlbGYsIGdpZCwgc2lkLCBkaWQs IHNjaWQpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiBp cyB1c2VkIHRvIGxpc3QgYWxsIHRoZSBzY2hlbWEgbm9kZXMgd2l0aGluIHRo YXQgY29sbGVjdGlvbi4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAg Z2lkOiBTZXJ2ZXIgZ3JvdXAgSUQKKyAgICAgICAgICAgIHNpZDogU2VydmVy IElECisgICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElECisgICAgICAgICAg ICBzY2lkOiBTY2hlbWEgSUQKKyAgICAgICAgICAgIHRpZDogVHlwZSBJRAor CisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBKU09OIG9mIGF2YWls YWJsZSBzY2hlbWEgbm9kZXMKKyAgICAgICAgIiIiCisKKyAgICAgICAgU1FM ID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3Bh dGgsICdwcm9wZXJ0aWVzLnNxbCddKSwgc2NpZD1zY2lkLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZGF0bGFzdHN5c29pZD1zZWxmLmRhdGxh c3RzeXNvaWQpCisgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4 ZWN1dGVfZGljdChTUUwpCisKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAg ICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jt c2c9cmVzKQorICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZSgKKyAgICAg ICAgICAgICAgICByZXNwb25zZT1yZXNbJ3Jvd3MnXSwKKyAgICAgICAgICAg ICAgICBzdGF0dXM9MjAwCisgICAgICAgICAgICAgICAgKQorCisgICAgQGNo ZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBub2RlcyhzZWxmLCBnaWQsIHNp ZCwgZGlkLCBzY2lkKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVu Y3Rpb24gd2lsbCB1c2VkIHRvIGNyZWF0ZSBhbGwgdGhlIGNoaWxkIG5vZGUg d2l0aGluIHRoYXQgY29sbGVjdGlvbi4KKyAgICAgICAgSGVyZSBpdCB3aWxs IGNyZWF0ZSBhbGwgdGhlIHNjaGVtYSBub2RlLgorCisgICAgICAgIEFyZ3M6 CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJRAorICAgICAgICAg ICAgc2lkOiBTZXJ2ZXIgSUQKKyAgICAgICAgICAgIGRpZDogRGF0YWJhc2Ug SUQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJRAorICAgICAgICAgICAg dGlkOiBUeXBlIElECisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAg IEpTT04gb2YgYXZhaWxhYmxlIHR5cGUgY2hpbGQgbm9kZXMKKyAgICAgICAg IiIiCisKKyAgICAgICAgcmVzID0gW10KKyAgICAgICAgU1FMID0gcmVuZGVy X3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vZGVzLnNx bCddKSwgc2NpZD1zY2lkKQorICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxm LmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKKyAgICAgICAgaWYgbm90IHN0 YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoZXJyb3Jtc2c9cnNldCkKKworICAgICAgICBmb3Igcm93IGluIHJzZXRb J3Jvd3MnXToKKyAgICAgICAgICAgIHJlcy5hcHBlbmQoCisgICAgICAgICAg ICAgICAgICAgIHNlbGYuYmx1ZXByaW50LmdlbmVyYXRlX2Jyb3dzZXJfbm9k ZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIHJvd1snb2lkJ10sCisgICAg ICAgICAgICAgICAgICAgICAgICBzY2lkLAorICAgICAgICAgICAgICAgICAg ICAgICAgcm93WyduYW1lJ10sCisgICAgICAgICAgICAgICAgICAgICAgICBp Y29uPSJpY29uLXR5cGUiCisgICAgICAgICAgICAgICAgICAgICkpCisKKyAg ICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAg ICAgICBkYXRhPXJlcywKKyAgICAgICAgICAgICAgICBzdGF0dXM9MjAwCisg ICAgICAgICAgICAgICAgKQorCisgICAgZGVmIGFkZGl0aW9uYWxfcHJvcGVy dGllcyhzZWxmLCBjb3B5X2RpY3QsIHRpZCk6CisgICAgICAgICIiIgorICAg ICAgICBXZSB3aWxsIHVzZSB0aGlzIGZ1bmN0aW9uIHRvIGFkZCBhZGRpdGlv bmFsIHByb3BlcnRpZXMgYWNjb3JkaW5nIHRvIHR5cGUKKworICAgICAgICBS ZXR1cm5zOgorICAgICAgICAgICAgYWRkaXRpb25hbCBwcm9wZXJ0aWVzIGZv ciB0eXBlIGxpa2UgcmFuZ2UvY29tcG9zaXRlL2VudW0KKworICAgICAgICAi IiIKKyAgICAgICAgIyBGZXRjaGluZyB0eXBlIG9mIHR5cGUKKyAgICAgICAg b2ZfdHlwZSA9IGNvcHlfZGljdFsndHlwdHlwZSddCisgICAgICAgIHJlcyA9 IGRpY3QoKQorICAgICAgICAjIElmIHR5cGUgaXMgb2YgQ29tcG9zaXRlIHRo ZW4gd2UgbmVlZCB0byBhZGQgbWVtYmVycyBsaXN0IGluIG91ciBvdXRwdXQK KyAgICAgICAgaWYgb2ZfdHlwZSA9PSAnYyc6CisgICAgICAgICAgICBTUUwg PSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0 aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJ2FkZGl0aW9uYWxfcHJvcGVydGllcy5zcWwnXSksCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0nYycsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdHlwcmVsaWQ9Y29weV9kaWN0Wyd0 eXByZWxpZCddKQorICAgICAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5j b25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCisgICAgICAgICAgICBpZiBub3Qg c3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2 ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAgICAjIFRvIGRp c3BsYXkgaW4gcHJvcGVydGllcworICAgICAgICAgICAgcHJvcGVydGllc19s aXN0ID0gW10KKyAgICAgICAgICAgICMgVG8gZGlzcGxheSBpbiBjb21wb3Np dGUgY29sbGVjdGlvbiBncmlkCisgICAgICAgICAgICBjb21wb3NpdGVfbHN0 ID0gW10KKworICAgICAgICAgICAgZm9yIHJvdyBpbiByc2V0Wydyb3dzJ106 CisgICAgICAgICAgICAgICAgdHlwZWxpc3QgPSAnICcuam9pbihbcm93Wydh dHRuYW1lJ10sIHJvd1sndHlwbmFtZSddXSkKKyAgICAgICAgICAgICAgICBp ZiBub3Qgcm93Wydjb2xsbmFtZSddIG9yIChyb3dbJ2NvbGxuYW1lJ10gPT0g J2RlZmF1bHQnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYW5kIHJvd1snY29sbG5zcG5hbWUnXSA9PSAncGdfY2F0YWxv ZycpOgorICAgICAgICAgICAgICAgICAgICBmdWxsX2NvbGxhdGUgPSAnJwor ICAgICAgICAgICAgICAgICAgICBjb2xsYXRlID0gJycKKyAgICAgICAgICAg ICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBmdWxsX2NvbGxhdGUg PSBnZXRfZHJpdmVyKFBHX0RFRkFVTFRfRFJJVkVSKS5xdElkZW50KAorICAg ICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb25uLCByb3dbJ2NvbGxuc3Bu YW1lJ10sIHJvd1snY29sbG5hbWUnXSkKKyAgICAgICAgICAgICAgICAgICAg Y29sbGF0ZSA9ICcgQ09MTEFURSAnICsgZnVsbF9jb2xsYXRlCisgICAgICAg ICAgICAgICAgdHlwZWxpc3QgKz0gY29sbGF0ZQorICAgICAgICAgICAgICAg IHByb3BlcnRpZXNfbGlzdC5hcHBlbmQodHlwZWxpc3QpCisKKyAgICAgICAg ICAgICAgICAjIEJlbG93IGxvZ2ljIHdpbGwgYWxsb3cgdXMgdG8gc3BsaXQg bGVuZ3RoLCBwcmVjaXNpb24gZnJvbSB0eXBlIG5hbWUgZm9yIGdyaWQKKyAg ICAgICAgICAgICAgICBpbXBvcnQgcmUKKyAgICAgICAgICAgICAgICBtYXRj aE9iaiA9IHJlLm1hdGNoKCByJyguKilcKCguKj8pLCguKj8pXCknLCByb3db J3R5cG5hbWUnXSkKKyAgICAgICAgICAgICAgICBpZiBtYXRjaE9iajoKKyAg ICAgICAgICAgICAgICAgICAgdF9uYW1lID0gbWF0Y2hPYmouZ3JvdXAoMSkK KyAgICAgICAgICAgICAgICAgICAgdF9sZW4gPSBtYXRjaE9iai5ncm91cCgy KQorICAgICAgICAgICAgICAgICAgICB0X3ByZWMgPSBtYXRjaE9iai5ncm91 cCgzKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg ICAgIHRfbmFtZSA9IHJvd1sndHlwbmFtZSddCisgICAgICAgICAgICAgICAg ICAgIHRfbGVuID0gTm9uZQorICAgICAgICAgICAgICAgICAgICB0X3ByZWMg PSBOb25lCisKKyAgICAgICAgICAgICAgICBjb21wb3NpdGVfbHN0LmFwcGVu ZCh7CisgICAgICAgICAgICAgICAgICAgICdtZW1iZXJfbmFtZSc6IHJvd1sn YXR0bmFtZSddLCAndHlwZSc6IHRfbmFtZSwgJ2NvbGxhdGlvbic6IGZ1bGxf Y29sbGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgJ3RsZW5ndGgnOiB0X2xl biwgJ3ByZWNpc2lvbic6IHRfcHJlYyB9KQorCisgICAgICAgICAgICAjIEFk ZGluZyBib3RoIHJlc3VsdHMKKyAgICAgICAgICAgIHJlc1snbWVtYmVyX2xp c3QnXSA9ICcsJy5qb2luKHByb3BlcnRpZXNfbGlzdCkKKyAgICAgICAgICAg IHJlc1snY29tcG9zaXRlJ10gPSBjb21wb3NpdGVfbHN0CisKKyAgICAgICAg IyBJZiB0eXBlIGlzIG9mIEVOVU0gdGhlbiB3ZSBuZWVkIHRvIGFkZCBsYWJl bHMgaW4gb3VyIG91dHB1dAorICAgICAgICBpZiBvZl90eXBlID09ICdlJzoK KyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihb c2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAnYWRkaXRpb25hbF9wcm9wZXJ0aWVzLnNx bCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBl PSdlJywgdGlkPXRpZCkKKyAgICAgICAgICAgIHN0YXR1cywgcnNldCA9IHNl bGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQorICAgICAgICAgICAgaWYg bm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxf c2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKyAgICAgICAgICAgICMgVG8g ZGlzcGxheSBpbiBwcm9wZXJ0aWVzCisgICAgICAgICAgICBwcm9wZXJ0aWVz X2xpc3QgPSBbXQorICAgICAgICAgICAgIyBUbyBkaXNwbGF5IGluIGVudW0g Z3JpZAorICAgICAgICAgICAgZW51bV9saXN0ID0gW10KKyAgICAgICAgICAg IGZvciByb3cgaW4gcnNldFsncm93cyddOgorICAgICAgICAgICAgICAgIHBy b3BlcnRpZXNfbGlzdC5hcHBlbmQocm93WydlbnVtbGFiZWwnXSkKKyAgICAg ICAgICAgICAgICBlbnVtX2xpc3QuYXBwZW5kKHsnbGFiZWwnOiByb3dbJ2Vu dW1sYWJlbCddfSkKKworICAgICAgICAgICAgIyBBZGRpbmcgYm90aCByZXN1 bHRzIGluIG91cHV0CisgICAgICAgICAgICByZXNbJ2VudW1fbGlzdCddID0g JywnLmpvaW4ocHJvcGVydGllc19saXN0KQorICAgICAgICAgICAgcmVzWydl bnVtJ10gPSBlbnVtX2xpc3QKKworICAgICAgICAjIElmIHR5cGUgaXMgb2Yg UmFuZ2UgdGhlbiB3ZSBuZWVkIHRvIGFkZCBjb2xsYXRpb24sc3VidHlwZSBl dGMgaW4gb3VyIG91dHB1dAorICAgICAgICBpZiBvZl90eXBlID09ICdyJzoK KyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihb c2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAnYWRkaXRpb25hbF9wcm9wZXJ0aWVzLnNx bCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBl PSdyJywgdGlkPXRpZCkKKyAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2Vs Zi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCisgICAgICAgICAgICBpZiBub3Qg c3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2 ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorICAgICAgICAgICAgcmFuZ2VfZGlj dCA9IGRpY3QocmVzWydyb3dzJ11bMF0pCisgICAgICAgICAgICByZXMudXBk YXRlKHJhbmdlX2RpY3QpCisKKyAgICAgICAgIyBSZXR1cm5pbmcgb25seSBh ZGRpdGlvbmFsIHByb3BlcnRpZXMgb25seQorICAgICAgICByZXR1cm4gcmVz CisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIHByb3BlcnRp ZXMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdGlkKToKKyAgICAgICAg IiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBzaG93IHRoZSBwcm9w ZXJ0aWVzIG9mIHRoZSBzZWxlY3RlZCBzY2hlbWEgbm9kZS4KKworICAgICAg ICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSUQKKyAg ICAgICAgICAgIHNpZDogU2VydmVyIElECisgICAgICAgICAgICBkaWQ6ICBE YXRhYmFzZSBJRAorICAgICAgICAgICAgc2NpZDogU2NoZW1hIElECisgICAg ICAgICAgICBzY2lkOiBTY2hlbWEgSUQKKyAgICAgICAgICAgIHRpZDogVHlw ZSBJRAorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBKU09OIG9m IHNlbGVjdGVkIHNjaGVtYSBub2RlCisgICAgICAgICIiIgorCisgICAgICAg IFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0 ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNjaWQ9c2NpZCwgdGlkPXRpZCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGRhdGxhc3RzeXNvaWQ9c2VsZi5kYXRsYXN0c3lz b2lkKQorICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRl X2RpY3QoU1FMKQorICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAg ICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMp CisKKyAgICAgICAgIyBNYWtpbmcgY29weSBvZiBvdXRwdXQgZm9yIGZ1dHVy ZSB1c2UKKyAgICAgICAgY29weV9kaWN0ID0gZGljdChyZXNbJ3Jvd3MnXVsw XSkKKworICAgICAgICAjIFdlIG5lZWQgdG8gcGFyc2UgJiBjb252ZXJ0IEFD TCBjb21pbmcgZnJvbSBkYXRhYmFzZSB0byBqc29uIGZvcm1hdAorICAgICAg ICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxh dGVfcGF0aCwgJ2FjbC5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzY2lkPXNjaWQsIHRpZD10aWQpCisgICAgICAgIHN0YXR1cywg YWNsID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCisgICAgICAgIGlm IG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2Vy dmVyX2Vycm9yKGVycm9ybXNnPWFjbCkKKworICAgICAgICAjIFdlIHdpbGwg c2V0IGdldCBwcml2aWxlZ2VzIGZyb20gYWNsIHNxbCBzbyB3ZSBkb24ndCBu ZWVkCisgICAgICAgICMgaXQgZnJvbSBwcm9wZXJ0aWVzIHNxbAorICAgICAg ICBjb3B5X2RpY3RbJ3R5cGFjbCddID0gW10KKworCisgICAgICAgIGZvciBy b3cgaW4gYWNsWydyb3dzJ106CisgICAgICAgICAgICBwcml2ID0gcGFyc2Vf cHJpdl9mcm9tX2RiKHJvdykKKyAgICAgICAgICAgIGlmIHJvd1snZGVmdHlw ZSddIGluIGNvcHlfZGljdDoKKyAgICAgICAgICAgICAgICBjb3B5X2RpY3Rb cm93WydkZWZ0eXBlJ11dLmFwcGVuZChwcml2KQorICAgICAgICAgICAgZWxz ZToKKyAgICAgICAgICAgICAgICBjb3B5X2RpY3Rbcm93WydkZWZ0eXBlJ11d ID0gW3ByaXZdCisKKyAgICAgICAgIyBDYWxsaW5nIGZ1bmN0aW9uIHRvIGNo ZWNrIGFuZCBhZGRpdGlvbmFsIHByb3BlcnRpZXMgaWYgYXZhaWxhYmxlCisg ICAgICAgIGNvcHlfZGljdC51cGRhdGUoc2VsZi5hZGRpdGlvbmFsX3Byb3Bl cnRpZXMoY29weV9kaWN0LCB0aWQpKQorCisgICAgICAgIHJldHVybiBhamF4 X3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgIHJlc3BvbnNlPWNvcHlfZGlj dCwKKyAgICAgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICAgICAg ICAgKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBnZXRf Y29sbGF0aW9ucyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQ9Tm9u ZSk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwg cmV0dXJuIGxpc3Qgb2YgY29sbGF0aW9uIGF2YWlsYWJsZQorICAgICAgICBh cyBBSkFYIHJlc3BvbnNlLgorICAgICAgICAiIiIKKyAgICAgICAgcmVzID0g W3snbGFiZWwnOiAnJywgJ3ZhbHVlJzogJyd9XQorICAgICAgICB0cnk6Cisg ICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3Nl bGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJ2dldF9jb2xsYXRpb25zLnNxbCddKSkKKyAg ICAgICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRlXzJk YXJyYXkoU1FMKQorICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAg ICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9y bXNnPXJlcykKKworICAgICAgICAgICAgZm9yIHJvdyBpbiByc2V0Wydyb3dz J106CisgICAgICAgICAgICAgICAgcmVzLmFwcGVuZCgKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICB7J2xhYmVsJzogcm93Wydjb2xsYXRpb24nXSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlJzogcm93Wydj b2xsYXRpb24nXX0KKyAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAg ICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAg ICAgICAgICAgIGRhdGE9cmVzLAorICAgICAgICAgICAgICAgICAgICBzdGF0 dXM9MjAwCisgICAgICAgICAgICAgICAgICAgICkKKworICAgICAgICBleGNl cHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJu YWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkKKworICAgIEBjaGVj a19wcmVjb25kaXRpb24KKyAgICBkZWYgZ2V0X3R5cGVzKHNlbGYsIGdpZCwg c2lkLCBkaWQsIHNjaWQsIHRpZD1Ob25lKToKKyAgICAgICAgIiIiCisgICAg ICAgIFRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gbGlzdCBvZiB0eXBlcyBh dmFpbGFibGUKKyAgICAgICAgYXMgQUpBWCByZXNwb25zZS4KKyAgICAgICAg IiIiCisgICAgICAgIHJlcyA9IFtdCisgICAgICAgIHRyeToKKyAgICAgICAg ICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1w bGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAnZ2V0X3R5cGVzLnNxbCddKSkKKyAgICAgICAgICAgIHN0 YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQor ICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKwor ICAgICAgICAgICAgZm9yIHJvdyBpbiByc2V0Wydyb3dzJ106CisgICAgICAg ICAgICAgICAgIyBBdHRhY2hpbmcgcHJvcGVydGllcyBmb3IgcHJlY2Vzc2lv bgorICAgICAgICAgICAgICAgICMgJiBsZW5ndGggdmFsaWRhdGlvbiBmb3Ig Y3VycmVudCB0eXBlCisgICAgICAgICAgICAgICAgcHJlY2lzaW9uID0gRmFs c2UKKyAgICAgICAgICAgICAgICBsZW5ndGggPSBGYWxzZQorICAgICAgICAg ICAgICAgIG1pbl92YWwgPSAwCisgICAgICAgICAgICAgICAgbWF4X3ZhbCA9 IDAKKworICAgICAgICAgICAgICAgICMgQ2hlY2sgYWdhaW5zdCBQR09JRCBm b3Igc3BlY2lmaWMgdHlwZQorICAgICAgICAgICAgICAgIGlmIHJvd1snZWxl bW9pZCddOgorICAgICAgICAgICAgICAgICAgICBpZiByb3dbJ2VsZW1vaWQn XSBpbiAoMTU2MCwgMTU2MSwgMTU2MiwgMTU2MywgMTA0MiwgMTA0MywKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMTQs IDEwMTUpOgorICAgICAgICAgICAgICAgICAgICAgICAgdHlwZXZhbCA9ICdM JworICAgICAgICAgICAgICAgICAgICBlbGlmIHJvd1snZWxlbW9pZCddIGlu ICgxMDgzLCAxMTE0LCAxMTE1LCAxMTgzLCAxMTg0LCAxMTg1LAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTg2LCAx MTg3LCAxMjY2LCAxMjcwKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHR5 cGV2YWwgPSAnRCcKKyAgICAgICAgICAgICAgICAgICAgZWxpZiByb3dbJ2Vs ZW1vaWQnXSBpbiAoMTIzMSwgMTcwMCk6CisgICAgICAgICAgICAgICAgICAg ICAgICB0eXBldmFsID0gJ1AnCisgICAgICAgICAgICAgICAgICAgIGVsc2U6 CisgICAgICAgICAgICAgICAgICAgICAgICB0eXBldmFsID0gJyAnCisKKyAg ICAgICAgICAgICAgICAjIExvZ2ljIHRvIHNldCBwcmVjaXNpb24gJiBsZW5n dGgvbWluL21heCB2YWx1ZXMKKyAgICAgICAgICAgICAgICBpZiB0eXBldmFs ID09ICdQJzoKKyAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uID0gVHJ1 ZQorCisgICAgICAgICAgICAgICAgaWYgcHJlY2lzaW9uIG9yIHR5cGV2YWwg aW4gKCdMJywgJ0QnKToKKyAgICAgICAgICAgICAgICAgICAgbGVuZ3RoID0g VHJ1ZQorICAgICAgICAgICAgICAgICAgICBtaW5fdmFsID0gMCBpZiB0eXBl dmFsID09ICdEJyBlbHNlIDEKKyAgICAgICAgICAgICAgICAgICAgaWYgcHJl Y2lzaW9uOgorICAgICAgICAgICAgICAgICAgICAgICAgbWF4X3ZhbCA9IDEw MDAKKyAgICAgICAgICAgICAgICAgICAgZWxpZiBtaW5fdmFsOgorICAgICAg ICAgICAgICAgICAgICAgICAgIyBNYXggb2YgaW50ZWdlciB2YWx1ZQorICAg ICAgICAgICAgICAgICAgICAgICAgbWF4X3ZhbCA9IDIxNDc0ODM2NDcKKyAg ICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAg ICAgIG1heF92YWwgPSAxMAorCisgICAgICAgICAgICAgICAgcmVzLmFwcGVu ZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB7J2xhYmVsJzogcm93 Wyd0eXBuYW1lJ10sICd2YWx1ZSc6IHJvd1sndHlwbmFtZSddLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAndHlwdmFsJzogdHlwZXZhbCwgJ3By ZWNpc2lvbic6IHByZWNpc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJ2xlbmd0aCc6IGxlbmd0aCwgJ21pbl92YWwnOiBtaW5fdmFsLCAn bWF4X3ZhbCc6IG1heF92YWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgKQorCisgICAgICAgICAg ICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAg ICAgICBkYXRhPXJlcywKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzPTIw MAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgIGV4Y2VwdCBFeGNl cHRpb24gYXMgZToKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2 ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisgICAgQGNoZWNrX3ByZWNv bmRpdGlvbgorICAgIGRlZiBnZXRfc3VidHlwZXMoc2VsZiwgZ2lkLCBzaWQs IGRpZCwgc2NpZCwgdGlkPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAg VGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiBsaXN0IG9mIHN1YnR5cGVzIGF2 YWlsYWJsZQorICAgICAgICBhcyBBSkFYIHJlc3BvbnNlLgorICAgICAgICAi IiIKKyAgICAgICAgcmVzID0gW3snbGFiZWwnOiAnJywgJ3ZhbHVlJzogJyd9 XQorICAgICAgICB0cnk6CisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVt cGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9zdWJ0 eXBlcy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3VidHlwZT1UcnVlKQorICAgICAgICAgICAgc3RhdHVzLCByc2V0ID0g c2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCisgICAgICAgICAgICBp ZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAgICBm b3Igcm93IGluIHJzZXRbJ3Jvd3MnXToKKyAgICAgICAgICAgICAgICByZXMu YXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsnbGFiZWwn OiByb3dbJ3N0eXBlJ10sICd2YWx1ZSc6IHJvd1snc3R5cGUnXSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJ2lzX2NvbGxhdGUnOiByb3dbJ2lz X2NvbGxhdGUnXX0KKyAgICAgICAgICAgICAgICAgICAgICAgICkKKworICAg ICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAg ICAgICAgICAgICAgZGF0YT1yZXMsCisgICAgICAgICAgICAgICAgICAgIHN0 YXR1cz0yMDAKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICBleGNl cHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJu YWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkKKworICAgIEBjaGVj a19wcmVjb25kaXRpb24KKyAgICBkZWYgZ2V0X3N1YnR5cGVfb3BjbGFzcyhz ZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCB0aWQ9Tm9uZSk6CisgICAgICAg ICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIGxpc3Qg b2Ygc3VidHlwZSBvcGNsYXNzIGF2YWlsYWJsZQorICAgICAgICBhcyBBSkFY IHJlc3BvbnNlLgorICAgICAgICAiIiIKKyAgICAgICAgcmVzID0gW3snbGFi ZWwnOiAnJywgJ3ZhbHVlJzogJyd9XQorICAgICAgICBkYXRhID0gcmVxdWVz dC5hcmdzCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgU1FMID0gcmVu ZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdn ZXRfc3VidHlwZXMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN1YnR5cGVfb3BjbGFzcz1UcnVlLCBkYXRhPWRhdGEpCisg ICAgICAgICAgICBpZiBTUUw6CisgICAgICAgICAgICAgICAgc3RhdHVzLCBy c2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCisgICAgICAg ICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICAgICAg cmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisK KyAgICAgICAgICAgICAgICBmb3Igcm93IGluIHJzZXRbJ3Jvd3MnXToKKyAg ICAgICAgICAgICAgICAgICAgcmVzLmFwcGVuZCgKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgeydsYWJlbCc6IHJvd1snb3BjbmFtZSddLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlJzogcm93 WydvcGNuYW1lJ119KQorCisgICAgICAgICAgICByZXR1cm4gbWFrZV9qc29u X3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgICAgICBkYXRhPXJlcywKKyAg ICAgICAgICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICAgICAgICAg ICAgICApCisKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAg ICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1z Zz1zdHIoZSkpCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVm IGdldF9zdWJ0eXBlX2RpZmYoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwg dGlkPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlv biB3aWxsIHJldHVybiBsaXN0IG9mIHN1YnR5cGVzIGRpZmYgZnVuY3Rpb25z IGF2YWlsYWJsZQorICAgICAgICBhcyBBSkFYIHJlc3BvbnNlLgorICAgICAg ICAiIiIKKyAgICAgICAgcmVzID0gW3snbGFiZWwnOiAnJywgJ3ZhbHVlJzog Jyd9XQorICAgICAgICBkYXRhID0gcmVxdWVzdC5hcmdzCisKKyAgICAgICAg dHJ5OgorICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5q b2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfc3VidHlwZXMuc3FsJ10p LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9vcGNp bnR5cGU9VHJ1ZSwgZGF0YT1kYXRhKQorICAgICAgICAgICAgaWYgU1FMOgor ICAgICAgICAgICAgICAgIHN0YXR1cywgb3BjaW50eXBlID0gc2VsZi5jb25u LmV4ZWN1dGVfc2NhbGFyKFNRTCkKKyAgICAgICAgICAgICAgICBpZiBub3Qg c3RhdHVzOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxf c2VydmVyX2Vycm9yKGVycm9ybXNnPW9wY2ludHlwZSkKKyAgICAgICAgICAg ICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVt cGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICdnZXRfc3VidHlwZXMuc3FsJ10pLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGNpbnR5cGU9b3Bj aW50eXBlLCBjb25uPXNlbGYuY29ubikKKyAgICAgICAgICAgICAgICBzdGF0 dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKKyAg ICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAg ICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJl cykKKworICAgICAgICAgICAgICAgIGZvciByb3cgaW4gcnNldFsncm93cydd OgorICAgICAgICAgICAgICAgICAgICByZXMuYXBwZW5kKAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB7J2xhYmVsJzogcm93WydzdHlwZGlm ZiddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVl Jzogcm93WydzdHlwZGlmZiddfQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICkKKworICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25z ZSgKKyAgICAgICAgICAgICAgICAgICAgZGF0YT1yZXMsCisgICAgICAgICAg ICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgICAgICAgICAgICAgKQor CisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAg IHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUp KQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBnZXRfY2Fu b25pY2FsKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRpZD1Ob25lKToK KyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCByZXR1 cm4gbGlzdCBvZiBjYW5vbmljYWwgZnVuY3Rpb25zIGF2YWlsYWJsZQorICAg ICAgICBhcyBBSkFYIHJlc3BvbnNlLgorICAgICAgICAiIiIKKyAgICAgICAg cmVzID0gW3snbGFiZWwnOiAnJywgJ3ZhbHVlJzogJyd9XQorICAgICAgICBk YXRhID0gcmVxdWVzdC5hcmdzCisgICAgICAgIGNhbm9uaWNhbCA9IFRydWUK KworICAgICAgICB0cnk6CisgICAgICAgICAgICAjIFdlIHdhbnQgdG8gc2Vu ZCBkYXRhIG9ubHkgaWYgaW4gd2UgYXJlIGluIGVkaXQgbW9kZQorICAgICAg ICAgICAgIyBlbHNlIHdlIHdpbGwgZGlzYWJsZSB0aGUgY29tYm9ib3gKKyAg ICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2Vs Zi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAnZ2V0X3N1YnR5cGVzLnNxbCddKSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRvaWQ9VHJ1ZSwgZGF0 YT1kYXRhKQorICAgICAgICAgICAgaWYgU1FMOgorICAgICAgICAgICAgICAg IHN0YXR1cywgb2lkID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKFNRTCkK KyAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAg ICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNn PW9pZCkKKyAgICAgICAgICAgICAgICAjIElmIG9pZCBpcyBOb25lIHRoZW4g ZG8gbm90IHJ1biBTUUwKKyAgICAgICAgICAgICAgICBpZiBvaWQgaXMgTm9u ZToKKyAgICAgICAgICAgICAgICAgICAgY2Fub25pY2FsID0gRmFsc2UKKwor ICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtz ZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICdnZXRfc3VidHlwZXMuc3FsJ10pLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbm9uaWNhbD1jYW5v bmljYWwsIGNvbm49c2VsZi5jb25uLCBvaWQ9b2lkKQorICAgICAgICAgICAg aWYgU1FMOgorICAgICAgICAgICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYu Y29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQorICAgICAgICAgICAgICAgIGlm IG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnRl cm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAg ICAgICAgZm9yIHJvdyBpbiByc2V0Wydyb3dzJ106CisgICAgICAgICAgICAg ICAgICAgIHJlcy5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHsnbGFiZWwnOiByb3dbJ2Nhbm9uaWNhbCddLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlJzogcm93WydjYW5vbmlj YWwnXX0pCisKKyAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9u c2UoCisgICAgICAgICAgICAgICAgICAgIGRhdGE9cmVzLAorICAgICAgICAg ICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICAgICAgICAgICAgICkK KworICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAg ICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihl KSkKKworCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBnZXRf ZXh0ZXJuYWxfZnVuY3Rpb25zX2xpc3Qoc2VsZiwgZ2lkLCBzaWQsIGRpZCwg c2NpZCwgdGlkPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBm dW5jdGlvbiB3aWxsIHJldHVybiBsaXN0IG9mIGV4dGVybmFsIGZ1bmN0aW9u cyBhdmFpbGFibGUKKyAgICAgICAgYXMgQUpBWCByZXNwb25zZS4KKyAgICAg ICAgIiIiCisgICAgICAgIHJlcyA9IFt7J2xhYmVsJzogJycsICd2YWx1ZSc6 ICcnLCAnY2J0eXBlJzogJ2FsbCd9XQorCisgICAgICAgIHRyeToKKyAgICAg ICAgICAgICMgVGhlIFNRTCBnZW5lcmF0ZWQgYmVsb3cgd2lsbCBwb3B1bGF0 ZSBJbnB1dC9PdXRwdXQvU2VuZC8KKyAgICAgICAgICAgICMgUmVjZWl2ZS9B bmFseXplL1R5cE1vZGVJTi9UeXBNb2RPVVQgY29tYm8gYm94CisgICAgICAg ICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVt cGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJ2dldF9leHRlcm5hbF9mdW5jdGlvbnMuc3FsJ10pLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGZ1bmM9VHJ1 ZSkKKyAgICAgICAgICAgIGlmIFNRTDoKKyAgICAgICAgICAgICAgICBzdGF0 dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKKyAg ICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAg ICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJl cykKKworICAgICAgICAgICAgICAgIGZvciByb3cgaW4gcnNldFsncm93cydd OgorICAgICAgICAgICAgICAgICAgICByZXMuYXBwZW5kKAorICAgICAgICAg ICAgICAgICAgICAgICAgeydsYWJlbCc6IHJvd1snZnVuYyddLCAndmFsdWUn OiByb3dbJ2Z1bmMnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnY2J0 eXBlJzogJ2FsbCd9KQorCisgICAgICAgICAgICAjIFRoZSBTUUwgZ2VuZXJh dGVkIGJlbG93IHdpbGwgcG9wdWxhdGUgVHlwTW9kZUlOIGNvbWJvIGJveAor ICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtz ZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICdnZXRfZXh0ZXJuYWxfZnVuY3Rpb25zLnNx bCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBl bW9kaW49VHJ1ZSkKKyAgICAgICAgICAgIGlmIFNRTDoKKyAgICAgICAgICAg ICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5 KFNRTCkKKyAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAg ICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVy cm9ybXNnPXJlcykKKworICAgICAgICAgICAgICAgIGZvciByb3cgaW4gcnNl dFsncm93cyddOgorICAgICAgICAgICAgICAgICAgICByZXMuYXBwZW5kKAor ICAgICAgICAgICAgICAgICAgICAgICAgeydsYWJlbCc6IHJvd1snZnVuYydd LCAndmFsdWUnOiByb3dbJ2Z1bmMnXSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAnY2J0eXBlJzogJ3R5cG1vZGluJ30pCisKKyAgICAgICAgICAgICMg VGhlIFNRTCBnZW5lcmF0ZWQgYmVsb3cgd2lsbCBwb3B1bGF0ZSBUeXBNb2Rl SU4gY29tYm8gYm94CisgICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxh dGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9leHRlcm5h bF9mdW5jdGlvbnMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHR5cGVtb2RvdXQ9VHJ1ZSkKKyAgICAgICAgICAgIGlmIFNR TDoKKyAgICAgICAgICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4u ZXhlY3V0ZV8yZGFycmF5KFNRTCkKKyAgICAgICAgICAgICAgICBpZiBub3Qg c3RhdHVzOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxf c2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICAgICAgICAg IGZvciByb3cgaW4gcnNldFsncm93cyddOgorICAgICAgICAgICAgICAgICAg ICByZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgeydsYWJl bCc6IHJvd1snZnVuYyddLCAndmFsdWUnOiByb3dbJ2Z1bmMnXSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAnY2J0eXBlJzogJ3R5cG1vZG91dCd9KQor CisgICAgICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAg ICAgICAgICAgICAgIGRhdGE9cmVzLAorICAgICAgICAgICAgICAgIHN0YXR1 cz0yMDAKKyAgICAgICAgICAgICkKKworICAgICAgICBleGNlcHQgRXhjZXB0 aW9uIGFzIGU6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVy X2Vycm9yKGVycm9ybXNnPXN0cihlKSkKKworCisgICAgQGNoZWNrX3ByZWNv bmRpdGlvbgorICAgIGRlZiBjcmVhdGUoc2VsZiwgZ2lkLCBzaWQsIGRpZCwg c2NpZCk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdp bGwgY3JlYXRlcyBuZXcgdGhlIHNjaGVtYSBvYmplY3QKKworICAgICAgICAg QXJnczoKKyAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSUQKKyAgICAg ICAgICAgc2lkOiBTZXJ2ZXIgSUQKKyAgICAgICAgICAgZGlkOiBEYXRhYmFz ZSBJRAorICAgICAgICAgICBzY2lkOiBTY2hlbWEgSUQKKyAgICAgICAgICAg dGlkOiBUeXBlIElECisgICAgICAgICIiIgorICAgICAgICBkYXRhID0gcmVx dWVzdC5mb3JtIGlmIHJlcXVlc3QuZm9ybSBlbHNlIGpzb24ubG9hZHMocmVx dWVzdC5kYXRhLmRlY29kZSgpKQorICAgICAgICByZXF1aXJlZF9hcmdzID0g eworICAgICAgICAgICAgJ25hbWUnOiAnTmFtZScsCisgICAgICAgICAgICAn dHlwdHlwZSc6ICdUeXBlJworICAgICAgICB9CisKKyAgICAgICAgZm9yIGFy ZyBpbiByZXF1aXJlZF9hcmdzOgorICAgICAgICAgICAgaWYgYXJnIG5vdCBp biBkYXRhOgorICAgICAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVz cG9uc2UoCisgICAgICAgICAgICAgICAgICAgIHN0YXR1cz00MTAsCisgICAg ICAgICAgICAgICAgICAgIHN1Y2Nlc3M9MCwKKyAgICAgICAgICAgICAgICAg ICAgZXJyb3Jtc2c9Z2V0dGV4dCgKKyAgICAgICAgICAgICAgICAgICAgICAg ICJDb3VsZG4ndCBmaW5kIHRoZSByZXF1aXJlZCBwYXJhbWV0ZXIgKCVzKS4i ICUKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkX2FyZ3NbYXJn XQorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgKQor ICAgICAgICAgICAgIyBBZGRpdGlvbmFsIGNoZWNrcyBnb2VzIGhlcmUKKyAg ICAgICAgICAgICMgSWYgdHlwZSBpcyBjb21wb3NpdGUgdGhlbiBjaGVjayBp ZiBpdCBoYXMgdHdvIG1lbWJlcnMKKyAgICAgICAgICAgIGlmIGRhdGEgYW5k IGRhdGFbYXJnXSA9PSAnYyc6CisgICAgICAgICAgICAgICAgaWYgbGVuKGRh dGFbJ2NvbXBvc2l0ZSddKSA8IDI6CisgICAgICAgICAgICAgICAgICAgIHJl dHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgICAg ICAgICBzdGF0dXM9NDEwLAorICAgICAgICAgICAgICAgICAgICAgICAgc3Vj Y2Vzcz0wLAorICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3Jtc2c9Z2V0 dGV4dCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ29tcG9zaXRl IHR5cGUgcmVxdWlyZXMgYXQgbGVhc3QgdHdvIG1lbWJlcnMnCisgICAgICAg ICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgICkKKyAg ICAgICAgICAgICMgSWYgdHlwZSBpcyBlbnVtIHRoZW4gY2hlY2sgaWYgaXQg aGFzIG1pbmltdW0gb25lIGxhYmVsCisgICAgICAgICAgICBpZiBkYXRhIGFu ZCBkYXRhW2FyZ10gPT0gJ2UnOgorICAgICAgICAgICAgICAgIGlmIGxlbihk YXRhWydlbnVtJ10pIDwgMToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu IG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICAgICAgICAg IHN0YXR1cz00MTAsCisgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNz PTAsCisgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcm1zZz1nZXR0ZXh0 KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFbnVtZXJhdGlvbiB0 eXBlIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBsYWJlbCcKKyAgICAgICAgICAg ICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAg ICAgICAgIyBJZiB0eXBlIGlzIGVudW0gdGhlbiBjaGVjayBpZiBpdCBoYXMg bWluaW11bSBvbmUgbGFiZWwKKyAgICAgICAgICAgIGlmIGRhdGEgYW5kIGRh dGFbYXJnXSA9PSAncic6CisgICAgICAgICAgICAgICAgaWYgZGF0YVsndHlw bmFtZSddIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBt YWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgICAgICAgICBz dGF0dXM9NDEwLAorICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2Vzcz0w LAorICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3Jtc2c9Z2V0dGV4dCgK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnU3VidHlwZSBtdXN0IGJl IGRlZmluZWQgZm9yIHJhbmdlIHR5cGUnCisgICAgICAgICAgICAgICAgICAg ICAgICApCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICMg SWYgdHlwZSBpcyBleHRlcm5hbCB0aGVuIGNoZWNrIGlmIGlucHV0L291dHB1 dAorICAgICAgICAgICAgIyBjb252ZXJzaW9uIGZ1bmN0aW9uIGlzIGRlZmlu ZWQKKyAgICAgICAgICAgIGlmIGRhdGEgYW5kIGRhdGFbYXJnXSA9PSAneCc6 CisgICAgICAgICAgICAgICAgaWYgZGF0YVsndHlwaW5wdXQnXSBpcyBOb25l IG9yIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVsn dHlwb3V0cHV0J10gaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICAgICAg ICAgIHN0YXR1cz00MTAsCisgICAgICAgICAgICAgICAgICAgICAgICBzdWNj ZXNzPTAsCisgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcm1zZz1nZXR0 ZXh0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFeHRlcm5hbCB0 eXBlIHJlcXVpcmVzIGJvdGggSW5wdXQgJiBPdXRwdXQgY29udmVyc2lvbiBm dW5jdGlvbi4nCisgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAg ICAgICAgICAgICAgICkKKworICAgICAgICAjIFRvIGZvcm1hdCBwcml2aWxl Z2VzIGNvbWluZyBmcm9tIGNsaWVudAorICAgICAgICBpZiAndHlwYWNsJyBp biBkYXRhIGFuZCBkYXRhWyd0eXBhY2wnXSBpcyBub3QgTm9uZToKKyAgICAg ICAgICAgIGRhdGFbJ3R5cGFjbCddID0gcGFyc2VfcHJpdl90b19kYihkYXRh Wyd0eXBhY2wnXSwgc2VsZi5hY2wpCisKKyAgICAgICAgdHJ5OgorICAgICAg ICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRl bXBsYXRlX3BhdGgsICdjcmVhdGUuc3FsJ10pLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwgY29ubj1zZWxmLmNvbm4p CisgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRl X3NjYWxhcihTUUwpCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAg ICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJy b3Jtc2c9cmVzKQorCisgICAgICAgICAgICAjIHdlIG5lZWQgb2lkIHRvIHRv IGFkZCBvYmplY3QgaW4gdHJlZSBhdCBicm93c2VyCisgICAgICAgICAgICBT UUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVf cGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJ2dldF9vaWQuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNjaWQ9c2NpZCwgZGF0YT1kYXRhKQorICAgICAgICAg ICAgc3RhdHVzLCB0aWQgPSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIoU1FM KQorICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAg ICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXRpZCkK KworICAgICAgICAgICAgcmV0dXJuIGpzb25pZnkoCisgICAgICAgICAgICAg ICAgbm9kZT1zZWxmLmJsdWVwcmludC5nZW5lcmF0ZV9icm93c2VyX25vZGUo CisgICAgICAgICAgICAgICAgICAgIHRpZCwKKyAgICAgICAgICAgICAgICAg ICAgc2NpZCwKKyAgICAgICAgICAgICAgICAgICAgZGF0YVsnbmFtZSddLAor ICAgICAgICAgICAgICAgICAgICBpY29uPSJpY29uLXR5cGUiCisgICAgICAg ICAgICAgICAgKQorICAgICAgICAgICAgKQorICAgICAgICBleGNlcHQgRXhj ZXB0aW9uIGFzIGU6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2Vy dmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkKKworICAgIEBjaGVja19wcmVj b25kaXRpb24KKyAgICBkZWYgdXBkYXRlKHNlbGYsIGdpZCwgc2lkLCBkaWQs IHNjaWQsIHRpZCk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0 aW9uIHdpbGwgdXBkYXRlcyBleGlzdGluZyB0aGUgdHlwZSBvYmplY3QKKwor ICAgICAgICAgQXJnczoKKyAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAg SUQKKyAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSUQKKyAgICAgICAgICAgZGlk OiBEYXRhYmFzZSBJRAorICAgICAgICAgICBzY2lkOiBTY2hlbWEgSUQKKyAg ICAgICAgICAgdGlkOiBUeXBlIElECisgICAgICAgICIiIgorCisgICAgICAg IGRhdGEgPSByZXF1ZXN0LmZvcm0gaWYgcmVxdWVzdC5mb3JtIGVsc2UganNv bi5sb2FkcyhyZXF1ZXN0LmRhdGEuZGVjb2RlKCkpCisgICAgICAgIHRyeToK KyAgICAgICAgICAgIFNRTCA9IHNlbGYuZ2V0X3NxbChnaWQsIHNpZCwgZGF0 YSwgc2NpZCwgdGlkKQorICAgICAgICAgICAgaWYgU1FMIGFuZCBTUUwuc3Ry aXAoJ1xuJykgYW5kIFNRTC5zdHJpcCgnICcpOgorICAgICAgICAgICAgICAg IHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKFNRTCkK KyAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAg ICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNn PXJlcykKKworICAgICAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVz cG9uc2UoCisgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M9MSwKKyAgICAg ICAgICAgICAgICAgICAgaW5mbz0iVHlwZSB1cGRhdGVkIiwKKyAgICAgICAg ICAgICAgICAgICAgZGF0YT17CisgICAgICAgICAgICAgICAgICAgICAgICAn aWQnOiB0aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAnc2NpZCc6IHNj aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAnc2lkJzogc2lkLAorICAg ICAgICAgICAgICAgICAgICAgICAgJ2dpZCc6IGdpZCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICdkaWQnOiBkaWQKKyAgICAgICAgICAgICAgICAgICAg fQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIGVsc2U6CisgICAg ICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAg ICAgICAgICAgICAgICAgc3VjY2Vzcz0xLAorICAgICAgICAgICAgICAgICAg ICBpbmZvPSJOb3RoaW5nIHRvIHVwZGF0ZSIsCisgICAgICAgICAgICAgICAg ICAgIGRhdGE9eworICAgICAgICAgICAgICAgICAgICAgICAgJ2lkJzogdGlk LAorICAgICAgICAgICAgICAgICAgICAgICAgJ3NjaWQnOiBzY2lkLAorICAg ICAgICAgICAgICAgICAgICAgICAgJ3NpZCc6IHNpZCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICdnaWQnOiBnaWQsCisgICAgICAgICAgICAgICAgICAg ICAgICAnZGlkJzogZGlkCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgICAgICApCisKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBl OgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihl cnJvcm1zZz1zdHIoZSkpCisKKworICAgIEBjaGVja19wcmVjb25kaXRpb24K KyAgICBkZWYgZGVsZXRlKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHRp ZCk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwg dXBkYXRlcyBleGlzdGluZyB0aGUgc2NoZW1hIG9iamVjdAorCisgICAgICAg ICBBcmdzOgorICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJRAorICAg ICAgICAgICBzaWQ6IFNlcnZlciBJRAorICAgICAgICAgICBkaWQ6IERhdGFi YXNlIElECisgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJRAorICAgICAgICAg ICB0aWQ6IFR5cGUgSUQKKyAgICAgICAgIiIiCisKKyAgICAgICAgIyBCZWxv dyB3aWxsIGRlY2lkZSBpZiBpdCdzIHNpbXBsZSBkcm9wIG9yIGRyb3Agd2l0 aCBjYXNjYWRlIGNhbGwKKyAgICAgICAgaWYgc2VsZi5jbWQgPT0gJ2RlbGV0 ZSc6CisgICAgICAgICAgICAjIFRoaXMgaXMgYSBjYXNjYWRlIG9wZXJhdGlv bgorICAgICAgICAgICAgY2FzY2FkZSA9IFRydWUKKyAgICAgICAgZWxzZToK KyAgICAgICAgICAgIGNhc2NhZGUgPSBGYWxzZQorCisgICAgICAgIHRyeToK KyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihb c2VsZi50ZW1wbGF0ZV9wYXRoLCAnZ2V0X25hbWUuc3FsJ10pLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaWQ9c2NpZCwgdGlkPXRp ZCkKKyAgICAgICAgICAgIHN0YXR1cywgbmFtZSA9IHNlbGYuY29ubi5leGVj dXRlX3NjYWxhcihTUUwpCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgor ICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3Io ZXJyb3Jtc2c9bmFtZSkKKworICAgICAgICAgICAgU1FMID0gcmVuZGVyX3Rl bXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdkZWxldGUu c3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5h bWU9bmFtZSwgY2FzY2FkZT1jYXNjYWRlLCBjb25uPXNlbGYuY29ubikKKyAg ICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfc2Nh bGFyKFNRTCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAg ICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1z Zz1yZXMpCisKKyAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9u c2UoCisgICAgICAgICAgICAgICAgc3VjY2Vzcz0xLAorICAgICAgICAgICAg ICAgIGluZm89Z2V0dGV4dCgiVHlwZSBkcm9wcGVkIiksCisgICAgICAgICAg ICAgICAgZGF0YT17CisgICAgICAgICAgICAgICAgICAgICdpZCc6IHRpZCwK KyAgICAgICAgICAgICAgICAgICAgJ3NjaWQnOiBzY2lkLAorICAgICAgICAg ICAgICAgICAgICAnc2lkJzogc2lkLAorICAgICAgICAgICAgICAgICAgICAn Z2lkJzogZ2lkLAorICAgICAgICAgICAgICAgICAgICAnZGlkJzogZGlkCisg ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgKQorCisgICAgICAgIGV4 Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHJldHVybiBpbnRl cm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisKKyAgICBA Y2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIG1zcWwoc2VsZiwgZ2lkLCBz aWQsIGRpZCwgc2NpZCwgdGlkPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAg ICAgVGhpcyBmdW5jdGlvbiB3aWxsIGdlbmVyYXRlcyBtb2RpZmllZCBzcWwg Zm9yIHR5cGUgb2JqZWN0CisKKyAgICAgICAgIEFyZ3M6CisgICAgICAgICAg IGdpZDogU2VydmVyIEdyb3VwIElECisgICAgICAgICAgIHNpZDogU2VydmVy IElECisgICAgICAgICAgIGRpZDogRGF0YWJhc2UgSUQKKyAgICAgICAgICAg c2NpZDogU2NoZW1hIElECisgICAgICAgICAgIHRpZDogVHlwZSBJRAorICAg ICAgICAiIiIKKyAgICAgICAgcmVxID0gcmVxdWVzdC5hcmdzCisgICAgICAg IGRhdGEgPSBkaWN0KCkKKworICAgICAgICAjIGNvbnZlcnRpbmcgbmVzdGVk IHJlcXVlc3QgZGF0YSBpbiBwcm9wZXIganNvbiBmb3JtYXQKKyAgICAgICAg Zm9yIGtleSx2YWwgaW4gcmVxLml0ZW1zKCk6CisgICAgICAgICAgICBpZiBr ZXkgaW4gWydjb21wb3NpdGUnLCAnZW51bScsICdzZWNsYWJlbHMnLCAndHlw YWNsJ106CisgICAgICAgICAgICAgICAgZGF0YVtrZXldID0ganNvbi5sb2Fk cyh2YWwpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGRh dGFba2V5XSA9IHZhbAorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIFNR TCA9IHNlbGYuZ2V0X3NxbChnaWQsIHNpZCwgZGF0YSwgc2NpZCwgdGlkKQor CisgICAgICAgICAgICBpZiBTUUwgYW5kIFNRTC5zdHJpcCgnXG4nKSBhbmQg U1FMLnN0cmlwKCcgJyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2Vf anNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9 U1FMLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzPTIwMAorICAg ICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICBleGNlcHQgRXhjZXB0 aW9uIGFzIGU6CisgICAgICAgICAgICBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3Io ZXJyb3Jtc2c9c3RyKGUpKQorCisgICAgZGVmIGdldF9zcWwoc2VsZiwgZ2lk LCBzaWQsIGRhdGEsIHNjaWQsIHRpZD1Ob25lKToKKyAgICAgICAgIiIiCisg ICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBnZW5yYXRlIHNxbCBmcm9tIG1v ZGVsIGRhdGEKKyAgICAgICAgIiIiCisgICAgICAgIGlmIHRpZCBpcyBub3Qg Tm9uZToKKworICAgICAgICAgICAgZm9yIGtleSBpbiBbJ3R5cGFjbCddOgor ICAgICAgICAgICAgICAgIGlmIGtleSBpbiBkYXRhIGFuZCBkYXRhW2tleV0g aXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIGlmICdhZGRlZCcg aW4gZGF0YVtrZXldOgorICAgICAgICAgICAgICAgICAgICAgIGRhdGFba2V5 XVsnYWRkZWQnXSA9IHBhcnNlX3ByaXZfdG9fZGIoZGF0YVtrZXldWydhZGRl ZCddLCBzZWxmLmFjbCkKKyAgICAgICAgICAgICAgICAgICAgaWYgJ2NoYW5n ZWQnIGluIGRhdGFba2V5XToKKyAgICAgICAgICAgICAgICAgICAgICBkYXRh W2tleV1bJ2NoYW5nZWQnXSA9IHBhcnNlX3ByaXZfdG9fZGIoZGF0YVtrZXld WydjaGFuZ2VkJ10sIHNlbGYuYWNsKQorICAgICAgICAgICAgICAgICAgICBp ZiAnZGVsZXRlZCcgaW4gZGF0YVtrZXldOgorICAgICAgICAgICAgICAgICAg ICAgIGRhdGFba2V5XVsnZGVsZXRlZCddID0gcGFyc2VfcHJpdl90b19kYihk YXRhW2tleV1bJ2RlbGV0ZWQnXSwgc2VsZi5hY2wpCisKKyAgICAgICAgICAg IFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0 ZV9wYXRoLCAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2NpZD1zY2lkLCB0aWQ9dGlkLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGxhc3RzeXNvaWQ9c2Vs Zi5kYXRsYXN0c3lzb2lkKQorICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBz ZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAgICAgICAgIGlmIG5v dCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3Nl cnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgICMgTWFr aW5nIGNvcHkgb2Ygb3V0cHV0IGZvciBmdXR1cmUgdXNlCisgICAgICAgICAg ICBvbGRfZGF0YSA9IGRpY3QocmVzWydyb3dzJ11bMF0pCisKKyAgICAgICAg ICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1w bGF0ZV9wYXRoLCAnYWNsLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzY2lkPXNjaWQsIHRpZD10aWQpCisgICAgICAgICAg ICBzdGF0dXMsIGFjbCA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQor ICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPWFjbCkKKwor ICAgICAgICAgICAgIyBXZSB3aWxsIHNldCBnZXQgcHJpdmlsZWdlcyBmcm9t IGFjbCBzcWwgc28gd2UgZG9uJ3QgbmVlZAorICAgICAgICAgICAgIyBpdCBm cm9tIHByb3BlcnRpZXMgc3FsCisgICAgICAgICAgICBvbGRfZGF0YVsndHlw YWNsJ10gPSBbXQorCisgICAgICAgICAgICBmb3Igcm93IGluIGFjbFsncm93 cyddOgorICAgICAgICAgICAgICAgIHByaXYgPSBwYXJzZV9wcml2X2Zyb21f ZGIocm93KQorICAgICAgICAgICAgICAgIGlmIHJvd1snZGVmdHlwZSddIGlu IG9sZF9kYXRhOgorICAgICAgICAgICAgICAgICAgICBvbGRfZGF0YVtyb3db J2RlZnR5cGUnXV0uYXBwZW5kKHByaXYpCisgICAgICAgICAgICAgICAgZWxz ZToKKyAgICAgICAgICAgICAgICAgICAgb2xkX2RhdGFbcm93WydkZWZ0eXBl J11dID0gW3ByaXZdCisKKyAgICAgICAgICAgICMgQ2FsbGluZyBmdW5jdGlv biB0byBjaGVjayBhbmQgYWRkaXRpb25hbCBwcm9wZXJ0aWVzIGlmIGF2YWls YWJsZQorICAgICAgICAgICAgb2xkX2RhdGEudXBkYXRlKHNlbGYuYWRkaXRp b25hbF9wcm9wZXJ0aWVzKG9sZF9kYXRhLCB0aWQpKQorCisgICAgICAgICAg ICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAgIi8i LmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ3VwZGF0ZS5zcWwnXSksCisg ICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBvX2RhdGE9b2xkX2RhdGEsIGNv bm49c2VsZi5jb25uCisgICAgICAgICAgICAgICAgKQorICAgICAgICBlbHNl OgorICAgICAgICAgICAgcmVxdWlyZWRfYXJncyA9IFsKKyAgICAgICAgICAg ICAgICAnbmFtZScsCisgICAgICAgICAgICAgICAgJ3R5cHR5cGUnCisgICAg ICAgICAgICBdCisKKyAgICAgICAgICAgIGZvciBhcmcgaW4gcmVxdWlyZWRf YXJnczoKKyAgICAgICAgICAgICAgICBpZiBhcmcgbm90IGluIGRhdGE6Cisg ICAgICAgICAgICAgICAgICAgIHJldHVybiAiIC0tZGVmaW5pdGlvbiBpbmNv bXBsZXRlIgorCisgICAgICAgICAgICAjIFByaXZpbGVnZXMKKyAgICAgICAg ICAgIGlmICd0eXBhY2wnIGluIGRhdGEgYW5kIGRhdGFbJ3R5cGFjbCddIGlz IG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGRhdGFbJ3R5cGFjbCddID0g cGFyc2VfcHJpdl90b19kYihkYXRhWyd0eXBhY2wnXSwgc2VsZi5hY2wpCisK KyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihb c2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAnY3JlYXRlLnNxbCddKSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWRhdGEsIGNvbm49c2Vs Zi5jb25uKQorCisgICAgICAgIHJldHVybiBTUUwKKworCisgICAgQGNoZWNr X3ByZWNvbmRpdGlvbgorICAgIGRlZiBzcWwoc2VsZiwgZ2lkLCBzaWQsIGRp ZCwgc2NpZCwgdGlkKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVu Y3Rpb24gd2lsbCBnZW5lcmF0ZXMgcmV2ZXJzZSBlbmdpbmVlcmVkIHNxbCBm b3Igc2NoZW1hIG9iamVjdAorCisgICAgICAgICBBcmdzOgorICAgICAgICAg ICBnaWQ6IFNlcnZlciBHcm91cCBJRAorICAgICAgICAgICBzaWQ6IFNlcnZl ciBJRAorICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElECisgICAgICAgICAg IHNjaWQ6IFNjaGVtYSBJRAorICAgICAgICAgICB0aWQ6IFR5cGUgSUQKKyAg ICAgICAgIiIiCisgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIu am9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAncHJvcGVydGllcy5zcWwnXSks CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2lkPXNjaWQsIHRp ZD10aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRsYXN0 c3lzb2lkPXNlbGYuZGF0bGFzdHN5c29pZCkKKyAgICAgICAgc3RhdHVzLCBy ZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAgICAgaWYg bm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2 ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICMgTWFraW5nIGNv cHkgb2Ygb3V0cHV0IGZvciBmdXR1cmUgdXNlCisgICAgICAgIGRhdGEgPSBk aWN0KHJlc1sncm93cyddWzBdKQorCisgICAgICAgIFNRTCA9IHJlbmRlcl90 ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnYWNsLnNx bCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaWQ9c2Np ZCwgdGlkPXRpZCkKKyAgICAgICAgc3RhdHVzLCBhY2wgPSBzZWxmLmNvbm4u ZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAg ICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jt c2c9YWNsKQorCisgICAgICAgICMgV2Ugd2lsbCBzZXQgZ2V0IHByaXZpbGVn ZXMgZnJvbSBhY2wgc3FsIHNvIHdlIGRvbid0IG5lZWQKKyAgICAgICAgIyBp dCBmcm9tIHByb3BlcnRpZXMgc3FsCisgICAgICAgIGRhdGFbJ3R5cGFjbCdd ID0gW10KKworICAgICAgICBmb3Igcm93IGluIGFjbFsncm93cyddOgorICAg ICAgICAgICAgcHJpdiA9IHBhcnNlX3ByaXZfZnJvbV9kYihyb3cpCisgICAg ICAgICAgICBpZiByb3dbJ2RlZnR5cGUnXSBpbiBkYXRhOgorICAgICAgICAg ICAgICAgIGRhdGFbcm93WydkZWZ0eXBlJ11dLmFwcGVuZChwcml2KQorICAg ICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBkYXRhW3Jvd1snZGVm dHlwZSddXSA9IFtwcml2XQorCisgICAgICAgICMgUHJpdmlsZWdlcworICAg ICAgICBpZiAndHlwYWNsJyBpbiBkYXRhIGFuZCBkYXRhWyd0eXBhY2wnXSBp cyBub3QgTm9uZToKKyAgICAgICAgICAgIGRhdGFbJ25zcGFjbCddID0gcGFy c2VfcHJpdl90b19kYihkYXRhWyd0eXBhY2wnXSwgc2VsZi5hY2wpCisKKyAg ICAgICAgIyBDYWxsaW5nIGZ1bmN0aW9uIHRvIGNoZWNrIGFuZCBhZGRpdGlv bmFsIHByb3BlcnRpZXMgaWYgYXZhaWxhYmxlCisgICAgICAgIGRhdGEudXBk YXRlKHNlbGYuYWRkaXRpb25hbF9wcm9wZXJ0aWVzKGRhdGEsIHRpZCkpCisK KyAgICAgICAgIyBXZSBkbyBub3Qgd2FudCB0byBkaXNwbGF5IHRhYmxlIHdo aWNoIGhhcyAnLScgdmFsdWUKKyAgICAgICAgIyBzZXR0aW5nIHRoZW0gdG8g Tm9uZSBzbyB0aGF0IGppbmphIGF2b2lkIGRpc3BsYXlpbmcgdGhlbQorICAg ICAgICBmb3IgayBpbiBkYXRhOgorICAgICAgICAgICAgaWYgZGF0YVtrXSA9 PSAnLSc6CisgICAgICAgICAgICAgICAgZGF0YVtrXSA9IE5vbmUKKworICAg ICAgICBTUUwgPSBzZWxmLmdldF9zcWwoZ2lkLCBzaWQsIGRhdGEsIHNjaWQs IHRpZD1Ob25lKQorCisgICAgICAgICMgV2UgYXJlIGFwcGVuZGluZyBoZWFk ZXJzIGhlcmUgZm9yIHNxbCBwYW5lbAorICAgICAgICBzcWxfaGVhZGVyID0g Ii0tIFR5cGU6IHswfVxuXG4tLSAiLmZvcm1hdChkYXRhWyduYW1lJ10pCisg ICAgICAgIHNxbF9oZWFkZXIgKz0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2lu KFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVsZXRlLnNxbCddKSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1kYXRh WyduYW1lJ10sIGNvbm49c2VsZi5jb25uKQorICAgICAgICBTUUwgPSBzcWxf aGVhZGVyICsgJ1xuJyArIFNRTAorCisgICAgICAgIHJldHVybiBhamF4X3Jl c3BvbnNlKHJlc3BvbnNlPVNRTCkKKworICAgIEBjaGVja19wcmVjb25kaXRp b24KKyAgICBkZWYgZGVwZW5kZW50cyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBz Y2lkLCB0aWQpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlv biBnZXQgdGhlIGRlcGVuZGVudHMgYW5kIHJldHVybiBhamF4IHJlc3BvbnNl CisgICAgICAgIGZvciB0aGUgdHlwZSBub2RlLgorCisgICAgICAgIEFyZ3M6 CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJRAorICAgICAgICAg ICAgc2lkOiBTZXJ2ZXIgSUQKKyAgICAgICAgICAgIGRpZDogRGF0YWJhc2Ug SUQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJRAorICAgICAgICAgICAg dGlkOiBUeXBlIElECisgICAgICAgICIiIgorICAgICAgICBkZXBlbmRlbnRz X3Jlc3VsdCA9IHNlbGYuZ2V0X2RlcGVuZGVudHMoCisgICAgICAgICAgICBz ZWxmLmNvbm4sIHRpZAorICAgICAgICApCisKKyAgICAgICAgcmV0dXJuIGFq YXhfcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgcmVzcG9uc2U9ZGVwZW5k ZW50c19yZXN1bHQsCisgICAgICAgICAgICAgICAgc3RhdHVzPTIwMAorICAg ICAgICAgICAgICAgICkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAg ICBkZWYgZGVwZW5kZW5jaWVzKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQs IHRpZCk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIGdl dCB0aGUgZGVwZW5kZW5jaWVzIGFuZCByZXR1cm4gYWpheCByZXNwb25zZQor ICAgICAgICBmb3IgdGhlIHR5cGUgbm9kZS4KKworICAgICAgICBBcmdzOgor ICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSUQKKyAgICAgICAgICAg IHNpZDogU2VydmVyIElECisgICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElE CisgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSUQKKyAgICAgICAgICAgIHRp ZDogVHlwZSBJRAorICAgICAgICAiIiIKKyAgICAgICAgZGVwZW5kZW5jaWVz X3Jlc3VsdCA9IHNlbGYuZ2V0X2RlcGVuZGVuY2llcygKKyAgICAgICAgICAg IHNlbGYuY29ubiwgdGlkCisgICAgICAgICkKKworICAgICAgICByZXR1cm4g YWpheF9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICByZXNwb25zZT1kZXBl bmRlbmNpZXNfcmVzdWx0LAorICAgICAgICAgICAgICAgIHN0YXR1cz0yMDAK KyAgICAgICAgICAgICAgICApCisKK1R5cGVWaWV3LnJlZ2lzdGVyX25vZGVf dmlldyhibHVlcHJpbnQpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvc3RhdGljL2ltZy9j b2xsLXR5cGUucG5nIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvc3RhdGljL2lt Zy9jb2xsLXR5cGUucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZiMDIw ZDdkOTlmODQ0MzkwNDZkMjg4NjE1ZTg2NWVlMWZiZGI4MTUKR0lUIGJpbmFy eSBwYXRjaApsaXRlcmFsIDMyOQp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHZw XjB3QiE3Mz8kIyllRlBGdjNHZk1WMT0zTmNYST1hTT5mSGFRVEBROTEKemBo UzFSe35PRXhVITM7O01FbX4obUgmNjx7b2xOMy1jREpkST53Uzl6aEROM1hF KU0tOUxAcmQkWUxQdjBtZzE4Cnp2K2FQNDcqN3wrNVJVNyVYUU8hPTQwemxn b153byRFVSFNeSMzaihrcyp9TFQ5ZFVyXm5GVip4YDxMZkVYTFUmewp6TlRf UVope3AxMWpyOEJSSmYqSjl0MXEkRCVYNkZLKHF9dUlrNGBPVl8mdit0QVpG KTxjfl8pIXxOTXtWPWUjV1gKek4jSjl2RzArfj42NCF7NWwqRSEkdEtfMG9B ak0jMFV9JklnWHJ5YWs3LUQyI1dueWUpVnliT21ZR3EoQkAxNVElCnE2Yi1y Z0RWYkBONURmO0ZVPTJYa0NSUFMhNURsbE1ocHF1P1ZETlBIYjZNdzwmOyRV WiQ4Kk8zCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy90eXBlcy9zdGF0aWMvaW1nL3R5cGUucG5nIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdHlwZXMvc3RhdGljL2ltZy90eXBlLnBuZwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwLi42YzE2NzY0ZTdkMDhjNTY5MjJhOTdhMmYwYzZj YzA2NDU1Yzg2YTU2CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAzMjUKemNt ZUFTQE4/KG9sSHlgdVZCcSFpYTB2cF4wd0IhNzM/JCMpZUZQRnY1QVg/YjE9 OH4jOUVtelQ+KVFXVT1sKHhFCnpgdjJqc3xGX3J0emRZfiVuRjtAb0h2UWpR eyhwUGt8SU1rKTBAKjtOajNxJlMhMystMVpsblBAb0NPfHsjWCNCdgp6ak5N TFYrV3tHJm8tVTNkOU1fVyo0ek1fUklWfDh2KFU0fHQ2cjhafDVmaDdfTHRC PUgwMUttSlI7SSVRbVhzQ0sKem5IXy09N2EzVzY5b25BeEQ5bTY8JHltJE88 bSVBJkVsPVNGT1VqRW1qN2BvNCs5RGZuQEdfajxCZmFyflotKSFlCnowQFZg Tmg/MTFWbDJvaFlxRXNOb1V9UnV1cGxmS1BZaFZ+K1dNRX10WS1NN3FaRDQ5 O1VALTVVLVlPSWd4JW54WAprWF9YS1MyOXt0QUstREh6MjQpWnFyPjJMbDBj djNJYm9GeXQ9YWtSezAxaDUmcXlQV18KCmxpdGVyYWwgMApIY21WP2QwMDAw MQoKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3R5cGVzL3RlbXBsYXRl cy90eXBlL2pzL3R5cGUuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90eXBlcy90ZW1w bGF0ZXMvdHlwZS9qcy90eXBlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLmVlY2NlNGUKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy90eXBlcy90ZW1wbGF0ZXMvdHlwZS9qcy90eXBlLmpzCkBA IC0wLDAgKzEsODU2IEBACitkZWZpbmUoCisgICAgICAgIFsnanF1ZXJ5Jywg J3VuZGVyc2NvcmUnLCAndW5kZXJzY29yZS5zdHJpbmcnLCAncGdhZG1pbics CisgICAgICAgICAncGdhZG1pbi5icm93c2VyJywgJ2FsZXJ0aWZ5JywgJ2Jh Y2tncmlkJywgJ3BnYWRtaW4uYmFja2dyaWQnLAorICAgICAgICAgICdwZ2Fk bWluLmJyb3dzZXIuY29sbGVjdGlvbiddLAorZnVuY3Rpb24oJCwgXywgUywg cGdBZG1pbiwgcGdCcm93c2VyLCBhbGVydGlmeSwgQmFja2dyaWQpIHsKKwor ICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1snY29sbC10eXBlJ10pIHsKKyAgICB2 YXIgZGF0YWJhc2VzID0gcGdBZG1pbi5Ccm93c2VyLk5vZGVzWydjb2xsLXR5 cGUnXSA9CisgICAgICBwZ0FkbWluLkJyb3dzZXIuQ29sbGVjdGlvbi5leHRl bmQoeworICAgICAgICBub2RlOiAndHlwZScsCisgICAgICAgIGxhYmVsOiAn e3sgXygnVHlwZXMnKSB9fScsCisgICAgICAgIHR5cGU6ICdjb2xsLXR5cGUn LAorICAgICAgICBjb2x1bW5zOiBbJ25hbWUnLCAndHlwZW93bmVyJywgJ2Rl c2NyaXB0aW9uJ10KKyAgICAgIH0pOworICB9OworCisgIC8vIFN3aXRjaCBv cHRpb25zIHRvIHNhdmUgc3BhY2UgaW4gbW9kZWwncyBmaWVsZAorICB2YXIg c3dpdGNoT3B0aW9ucyA9IHsKKyAgICAnb25UZXh0JzogJ1llcycsICdvZmZU ZXh0JzogJ05vJywKKyAgICAnb25Db2xvcic6ICdzdWNjZXNzJywgJ29mZkNv bG9yJzogJ2RlZmF1bHQnLAorICAgICdzaXplJzogJ3NtYWxsJworICB9Owor CisgIC8vIFNlY3VyaXR5IGxhYmVsIG1vZGVsIGRlY2xhcmF0aW9uCisgIHZh ciBTZWN1cml0eU1vZGVsID0gQmFja2Zvcm0uU2VjdXJpdHlNb2RlbCA9IHBn QWRtaW4uQnJvd3Nlci5Ob2RlLk1vZGVsLmV4dGVuZCh7CisgICAgZGVmYXVs dHM6IHsKKyAgICAgIHByb3ZpZGVyOiBudWxsLAorICAgICAgc2VjdXJpdHlf bGFiZWw6IG51bGwKKyAgICB9LAorICAgIHNjaGVtYTogW3sKKyAgICAgIGlk OiAncHJvdmlkZXInLCBsYWJlbDogJ3t7IF8oJ1Byb3ZpZGVyJykgfX0nLAor ICAgICAgdHlwZTogJ3RleHQnLCBkaXNhYmxlZDogZmFsc2UKKyAgICB9LHsK KyAgICAgIGlkOiAnc2VjdXJpdHlfbGFiZWwnLCBsYWJlbDogJ3t7IF8oJ1Nl Y3VyaXR5IExhYmVsJykgfX0nLAorICAgICAgdHlwZTogJ3RleHQnLCBkaXNh YmxlZDogZmFsc2UKKyAgICB9XSwKKyAgICB2YWxpZGF0ZTogZnVuY3Rpb24o KSB7CisgICAgICB2YXIgZXJyID0ge30sCisgICAgICAgICAgZXJybXNnID0g bnVsbCwKKyAgICAgICAgICBkYXRhID0gdGhpcy50b0pTT04oKTsKKworICAg ICAgaWYgKF8uaXNVbmRlZmluZWQoZGF0YS5sYWJlbCkgfHwKKyAgICAgICAg Xy5pc051bGwoZGF0YS5sYWJlbCkgfHwKKyAgICAgICAgU3RyaW5nKGRhdGEu bGFiZWwpLnJlcGxhY2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycpIHsKKyAg ICAgICAgICAgIGVycm1zZyA9IF8oIlBsZWFzZSBzcGVjaWZ5IHRoZSB2YWx1 ZSBmb3IgYWxsIHRoZSBzZWN1cml0eSBwcm92aWRlcnMuIik7CisgICAgICAg ICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdzZWN1cml0eV9sYWJlbCcsIGVy cm1zZyk7CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMu ZXJyb3JNb2RlbC51bnNldCgnc2VjdXJpdHlfbGFiZWwnKTsKKyAgICAgICAg ICB9CisgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisgIH0pOworCisgIC8v IENvbXBvc2l0ZSB0eXBlIG1vZGVsIGRlY2xhcmF0aW9uCisgIHZhciBDb21w b3NpdGVNb2RlbCA9IEJhY2tmb3JtLkNvbXBvc2l0ZU1vZGVsID0gcGdBZG1p bi5Ccm93c2VyLk5vZGUuTW9kZWwuZXh0ZW5kKHsKKyAgICBkZWZhdWx0czog eworICAgICAgbWVtYmVyX25hbWU6IHVuZGVmaW5lZCwKKyAgICAgIHR5cGU6 IHVuZGVmaW5lZCwKKyAgICAgIHRsZW5ndGg6IHVuZGVmaW5lZCwKKyAgICAg IGlzX3RsZW5ndGg6IGZhbHNlLAorICAgICAgcHJlY2lzaW9uOiB1bmRlZmlu ZWQsCisgICAgICBpc19wcmVjaXNpb246IGZhbHNlLAorICAgICAgY29sbGF0 aW9uOiB1bmRlZmluZWQsCisgICAgICBtaW5fdmFsOiB1bmRlZmluZWQsCisg ICAgICBtYXhfdmFsOiB1bmRlZmluZWQsCisgICAgfSwKKyAgICB0eXBlX29w dGlvbnM6IHVuZGVmaW5lZCwKKyAgICBzdWJ0eXBlczogdW5kZWZpbmVkLAor ICAgIHNjaGVtYTogW3sKKyAgICAgIGlkOiAnbWVtYmVyX25hbWUnLCBsYWJl bDogJ3t7IF8oJ01lbWJlciBOYW1lJykgfX0nLAorICAgICAgdHlwZTogJ3Rl eHQnLCAgZGlzYWJsZWQ6IGZhbHNlLCBlZGl0YWJsZTogZmFsc2UKKyAgICB9 LHsKKyAgICAgIGlkOiAndHlwZScsIGxhYmVsOiAne3sgXygnVHlwZScpIH19 JywgY29udHJvbDogJ25vZGUtYWpheC1vcHRpb25zJywKKyAgICAgIHR5cGU6 ICd0ZXh0JywgdXJsOiAnZ2V0X3R5cGVzJywgZGlzYWJsZWQ6IGZhbHNlLCBu b2RlOiAndHlwZScsCisgICAgICBlZGl0YWJsZTogZmFsc2UsCisgICAgICB0 cmFuc2Zvcm06IGZ1bmN0aW9uKGQpeworICAgICAgICB0aGlzLm1vZGVsLnR5 cGVfb3B0aW9ucyA9ICBkOworICAgICAgICByZXR1cm4gZDsKKyAgICAgIH0K KyAgICB9LHsKKyAgICAgIGlkOiAndGxlbmd0aCcsIGxhYmVsOiAne3sgXygn TGVuZ3RoJykgfX0nLCBkZXBzOiBbJ3R5cGUnXSwgdHlwZTogJ3RleHQnLAor ICAgICAgZWRpdGFibGU6IGZhbHNlLAorICAgICAgZGlzYWJsZWQ6IGZ1bmN0 aW9uKG0pIHsKKyAgICAgICAgLy8gV2Ugd2lsbCBzdG9yZSB0eXBlIGZyb20g c2VsZWN0ZWQgZnJvbSBjb21ib2JveAorICAgICAgICB2YXIgb2ZfdHlwZSA9 IG0uZ2V0KCd0eXBlJyk7CisgICAgICAgIGlmKG0udHlwZV9vcHRpb25zKSB7 CisgICAgICAgICAgLy8gaXRlcmF0aW5nIG92ZXIgYWxsIHRoZSB0eXBlcwor ICAgICAgICAgIF8uZWFjaChtLnR5cGVfb3B0aW9ucywgZnVuY3Rpb24obykg eworICAgICAgICAgICAgLy8gaWYgdHlwZSBmcm9tIHNlbGVjdGVkIGZyb20g Y29tYm9ib3ggbWF0Y2hlcyBpbiBvcHRpb25zCisgICAgICAgICAgICBpZiAo IG9mX3R5cGUgPT0gby52YWx1ZSApIHsKKyAgICAgICAgICAgICAgICAvLyBp ZiBsZW5ndGggaXMgYWxsb3dlZCBmb3Igc2VsZWN0ZWQgdHlwZQorICAgICAg ICAgICAgICAgIGlmKG8ubGVuZ3RoKQorICAgICAgICAgICAgICAgIHsKKyAg ICAgICAgICAgICAgICAgIC8vIHNldCB0aGUgdmFsdWVzIGluIG1vZGVsCisg ICAgICAgICAgICAgICAgICBtLnNldCgnaXNfdGxlbmd0aCcsIHRydWUsIHtz aWxlbnQ6IHRydWV9KTsKKyAgICAgICAgICAgICAgICAgIG0uc2V0KCdtaW5f dmFsJywgby5taW5fdmFsLCB7c2lsZW50OiB0cnVlfSk7CisgICAgICAgICAg ICAgICAgICBtLnNldCgnbWF4X3ZhbCcsIG8ubWF4X3ZhbCwge3NpbGVudDog dHJ1ZX0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg ICAgICAgICB9KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gIW0uZ2V0 KCdpc190bGVuZ3RoJyk7CisgICAgICB9CisgICAgfSx7CisgICAgICBpZDog J3ByZWNpc2lvbicsIGxhYmVsOiAne3sgXygnUHJlY2lzaW9uJykgfX0nLCBk ZXBzOiBbJ3R5cGUnXSwKKyAgICAgIHR5cGU6ICd0ZXh0JywgZWRpdGFibGU6 IGZhbHNlLAorICAgICAgZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsKKyAgICAg ICAgLy8gV2Ugd2lsbCBzdG9yZSB0eXBlIGZyb20gc2VsZWN0ZWQgZnJvbSBj b21ib2JveAorICAgICAgICB2YXIgb2ZfdHlwZSA9IG0uZ2V0KCd0eXBlJyk7 CisgICAgICAgIGlmKG0udHlwZV9vcHRpb25zKSB7CisgICAgICAgICAgLy8g aXRlcmF0aW5nIG92ZXIgYWxsIHRoZSB0eXBlcworICAgICAgICAgIF8uZWFj aChtLnR5cGVfb3B0aW9ucywgZnVuY3Rpb24obykgeworICAgICAgICAgICAg Ly8gaWYgdHlwZSBmcm9tIHNlbGVjdGVkIGZyb20gY29tYm9ib3ggbWF0Y2hl cyBpbiBvcHRpb25zCisgICAgICAgICAgICBpZiAoIG9mX3R5cGUgPT0gby52 YWx1ZSApIHsKKyAgICAgICAgICAgICAgICAvLyBpZiBwcmVjZXNzaW9uIGlz IGFsbG93ZWQgZm9yIHNlbGVjdGVkIHR5cGUKKyAgICAgICAgICAgICAgICBp ZihvLnByZWNpc2lvbikKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg ICAgICAgICAvLyBzZXQgdGhlIHZhbHVlcyBpbiBtb2RlbAorICAgICAgICAg ICAgICAgICAgbS5zZXQoJ2lzX3ByZWNpc2lvbicsIHRydWUsIHtzaWxlbnQ6 IHRydWV9KTsKKyAgICAgICAgICAgICAgICAgIG0uc2V0KCdtaW5fdmFsJywg by5taW5fdmFsLCB7c2lsZW50OiB0cnVlfSk7CisgICAgICAgICAgICAgICAg ICBtLnNldCgnbWF4X3ZhbCcsIG8ubWF4X3ZhbCwge3NpbGVudDogdHJ1ZX0p OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg ICB9KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gIW0uZ2V0KCdpc19w cmVjaXNpb24nKTsKKyAgICAgIH0KKyAgICB9LHsKKyAgICAgIGlkOiAnY29s bGF0aW9uJywgbGFiZWw6ICd7eyBfKCdDb2xsYXRpb24nKSB9fScsCisgICAg ICBjb250cm9sOiAnbm9kZS1hamF4LW9wdGlvbnMnLCBlZGl0YWJsZTogZmFs c2UsCisgICAgICB0eXBlOiAndGV4dCcsIGRpc2FibGVkOiBmYWxzZSwgdXJs OiAnZ2V0X2NvbGxhdGlvbnMnLCBub2RlOiAndHlwZScKKyAgICB9XSwKKyAg ICB2YWxpZGF0ZTogZnVuY3Rpb24oKSB7CisgICAgICB2YXIgZXJyID0ge30s CisgICAgICAgICAgZXJybXNnID0gbnVsbCwKKyAgICAgICAgICBkYXRhID0g dGhpcy50b0pTT04oKTsKKyAgICAgIC8vIFZhbGlkYXRpb24gZm9yIG1lbWJl ciBuYW1lCisgICAgICBpZiAoXy5pc1VuZGVmaW5lZChkYXRhLm1lbWJlcl9u YW1lKSB8fAorICAgICAgICBfLmlzTnVsbChkYXRhLm1lbWJlcl9uYW1lKSB8 fAorICAgICAgICBTdHJpbmcoZGF0YS5tZW1iZXJfbmFtZSkucmVwbGFjZSgv XlxzK3xccyskL2csICcnKSA9PSAnJykgeworICAgICAgICAgIGVycm1zZyA9 IF8oIlBsZWFzZSBzcGVjaWZ5IHRoZSB2YWx1ZSBmb3IgbWVtYmVyIG5hbWUu IikKKyAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdtZW1iZXJfbmFt ZScsIGVycm1zZykKKyAgICAgICAgICByZXR1cm4gZXJybXNnOworICAgICAg fSBlbHNlIHsKKyAgICAgICAgdGhpcy5lcnJvck1vZGVsLnVuc2V0KCdtZW1i ZXJfbmFtZScpOworICAgICAgfQorCisgICAgICAvLyBWYWxpZGF0aW9uIGZv ciBMZW5ndGggZmllbGQKKyAgICAgIGlmIChkYXRhLmlzX3RsZW5ndGggJiYg IV8uaXNVbmRlZmluZWQoZGF0YS50bGVuZ3RoKSkgeworICAgICAgICBpZiAo ZGF0YS50bGVuZ3RoIDwgZGF0YS5taW5fdmFsICkKKyAgICAgICAgICBlcnJt c2cgPSBfKCJMZW5ndGggc2hvdWxkIG5vdCBiZSBsZXNzIHRoYW4gIiArIGRh dGEubWluX3ZhbCkKKyAgICAgICAgaWYgKGRhdGEudGxlbmd0aCA+IGRhdGEu bWF4X3ZhbCApCisgICAgICAgICAgZXJybXNnID0gXygiTGVuZ3RoIHNob3Vs ZCBub3QgYmUgZ3JlYXRlciB0aGFuICIgKyBkYXRhLm1heF92YWwpCisgICAg ICAgIC8vIElmIHdlIGhhdmUgYW55IGVycm9yIHNldCB0aGVuIHRocm93IGl0 IHRvIHVzZXIKKyAgICAgICAgaWYoZXJybXNnKSB7CisgICAgICAgICAgdGhp cy5lcnJvck1vZGVsLnNldCgndGxlbmd0aCcsIGVycm1zZykKKyAgICAgICAg ICByZXR1cm4gZXJybXNnOworICAgICAgICB9CisgICAgICB9IGVsc2Ugewor ICAgICAgICB0aGlzLmVycm9yTW9kZWwudW5zZXQoJ3RsZW5ndGgnKTsKKyAg ICAgIH0KKworICAgICAgLy8gVmFsaWRhdGlvbiBmb3IgcHJlY2lzaW9uIGZp ZWxkCisgICAgICBpZiAoZGF0YS5pc19wcmVjaXNpb24gJiYgIV8uaXNVbmRl ZmluZWQoZGF0YS5wcmVjaXNpb24pKSB7CisgICAgICAgIGlmIChkYXRhLnBy ZWNpc2lvbiA8IGRhdGEubWluX3ZhbCApCisgICAgICAgICAgZXJybXNnID0g XygiUHJlY2lzaW9uIHNob3VsZCBub3QgYmUgbGVzcyB0aGFuICIgKyBkYXRh Lm1pbl92YWwpCisgICAgICAgIGlmIChkYXRhLnByZWNpc2lvbiA+IGRhdGEu bWF4X3ZhbCApCisgICAgICAgICAgZXJybXNnID0gXygiUHJlY2lzaW9uIHNo b3VsZCBub3QgYmUgZ3JlYXRlciB0aGFuICIgKyBkYXRhLm1heF92YWwpCisg ICAgICAgIC8vIElmIHdlIGhhdmUgYW55IGVycm9yIHNldCB0aGVuIHRocm93 IGl0IHRvIHVzZXIKKyAgICAgICAgaWYoZXJybXNnKSB7CisgICAgICAgICAg dGhpcy5lcnJvck1vZGVsLnNldCgncHJlY2lzaW9uJywgZXJybXNnKQorICAg ICAgICAgIHJldHVybiBlcnJtc2c7CisgICAgICAgIH0KKyAgICAgIH0gZWxz ZSB7CisgICAgICAgIHRoaXMuZXJyb3JNb2RlbC51bnNldCgncHJlY2lzaW9u Jyk7CisgICAgICB9CisKKyAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAg fSk7CisKKyAgdmFyIEVudW1Nb2RlbCA9IEJhY2tmb3JtLkVudW1Nb2RlbCA9 IHBnQWRtaW4uQnJvd3Nlci5Ob2RlLk1vZGVsLmV4dGVuZCh7CisgICAgZGVm YXVsdHM6IHsKKyAgICAgIGxhYmVsOiBudWxsLAorICAgIH0sCisgICAgc2No ZW1hOiBbeworICAgICAgaWQ6ICdsYWJlbCcsIGxhYmVsOiAne3sgXygnTGFi ZWwnKSB9fScsdHlwZTogJ3RleHQnLCBkaXNhYmxlZDogZmFsc2UsCisgICAg ICBjZWxsSGVhZGVyQ2xhc3NlczogJ3dpZHRoX3BlcmNlbnRfOTknCisgICAg fV0sCisgICAgdmFsaWRhdGU6IGZ1bmN0aW9uKCkgeworICAgICAgdmFyIGVy ciA9IHt9LAorICAgICAgICAgIGVycm1zZyA9IG51bGwsCisgICAgICAgICAg ZGF0YSA9IHRoaXMudG9KU09OKCk7CisKKyAgICAgIGlmIChfLmlzVW5kZWZp bmVkKGRhdGEubGFiZWwpIHx8CisgICAgICAgIF8uaXNOdWxsKGRhdGEubGFi ZWwpIHx8CisgICAgICAgIFN0cmluZyhkYXRhLmxhYmVsKS5yZXBsYWNlKC9e XHMrfFxzKyQvZywgJycpID09ICcnKSB7CisgICAgICAgICAgZXJybXNnID0g XygiUGxlYXNlIHNwZWNpZnkgdGhlIHZhbHVlIGZvciBsYWJlbC4iKTsKKyAg ICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdsYWJlbCcsIGVycm1zZykK KyAgICAgICAgICByZXR1cm4gZXJybXNnOworICAgICAgfSBlbHNlIHsKKyAg ICAgICAgdGhpcy5lcnJvck1vZGVsLnVuc2V0KCdsYWJlbCcpOworICAgICAg fQorCisKKyAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgfSk7CisKKyAg aWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ3R5cGUnXSkgeworICAgIHBnQWRtaW4u QnJvd3Nlci5Ob2Rlc1sndHlwZSddID0gcGdCcm93c2VyLk5vZGUuZXh0ZW5k KHsKKyAgICAgIHR5cGU6ICd0eXBlJywKKyAgICAgIGxhYmVsOiAne3sgXygn VHlwZScpIH19JywKKyAgICAgIGNvbGxlY3Rpb25fdHlwZTogJ2NvbGwtdHlw ZScsCisgICAgICBoYXNTUUw6IHRydWUsCisgICAgICBoYXNEZXBlbmRzOiB0 cnVlLAorICAgICAgcGFyZW50X3R5cGU6IFsnc2NoZW1hJywgJ2NhdGFsb2cn XSwKKyAgICAgIEluaXQ6IGZ1bmN0aW9uKCkgeworICAgICAgICAvKiBBdm9p ZCBtdWxpdHBsZSByZWdpc3RyYXRpb24gb2YgbWVudXMgKi8KKyAgICAgICAg aWYgKHRoaXMuaW5pdGlhbGl6ZWQpCisgICAgICAgICAgICByZXR1cm47CisK KyAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7CisKKyAgICAgICAg cGdCcm93c2VyLmFkZF9tZW51cyhbeworICAgICAgICAgIG5hbWU6ICdjcmVh dGVfdHlwZV9vbl9jb2xsJywgbm9kZTogJ2NvbGwtdHlwZScsIG1vZHVsZTog dGhpcywKKyAgICAgICAgICBhcHBsaWVzOiBbJ29iamVjdCcsICdjb250ZXh0 J10sIGNhbGxiYWNrOiAnc2hvd19vYmpfcHJvcGVydGllcycsCisgICAgICAg ICAgY2F0ZWdvcnk6ICdjcmVhdGUnLCBwcmlvcml0eTogNCwgbGFiZWw6ICd7 eyBfKCdUeXBlLi4uJykgfX0nLAorICAgICAgICAgIGljb246ICd3Y1RhYklj b24gaWNvbi10eXBlJywgZGF0YToge2FjdGlvbjogJ2NyZWF0ZScsIGNoZWNr OiB0cnVlfSwKKyAgICAgICAgICBlbmFibGU6ICdjYW5DcmVhdGUnCisgICAg ICAgIH0seworICAgICAgICAgIG5hbWU6ICdjcmVhdGVfdHlwZScsIG5vZGU6 ICd0eXBlJywgbW9kdWxlOiB0aGlzLAorICAgICAgICAgIGFwcGxpZXM6IFsn b2JqZWN0JywgJ2NvbnRleHQnXSwgY2FsbGJhY2s6ICdzaG93X29ial9wcm9w ZXJ0aWVzJywKKyAgICAgICAgICBjYXRlZ29yeTogJ2NyZWF0ZScsIHByaW9y aXR5OiA0LCBsYWJlbDogJ3t7IF8oJ1R5cGUuLi4nKSB9fScsCisgICAgICAg ICAgaWNvbjogJ3djVGFiSWNvbiBpY29uLXR5cGUnLCBkYXRhOiB7YWN0aW9u OiAnY3JlYXRlJywgY2hlY2s6IHRydWV9LAorICAgICAgICAgIGVuYWJsZTog J2NhbkNyZWF0ZScKKyAgICAgICAgfSx7CisgICAgICAgICAgbmFtZTogJ2Ny ZWF0ZV90eXBlJywgbm9kZTogJ3NjaGVtYScsIG1vZHVsZTogdGhpcywKKyAg ICAgICAgICBhcHBsaWVzOiBbJ29iamVjdCcsICdjb250ZXh0J10sIGNhbGxi YWNrOiAnc2hvd19vYmpfcHJvcGVydGllcycsCisgICAgICAgICAgY2F0ZWdv cnk6ICdjcmVhdGUnLCBwcmlvcml0eTogNCwgbGFiZWw6ICd7eyBfKCdUeXBl Li4uJykgfX0nLAorICAgICAgICAgIGljb246ICd3Y1RhYkljb24gaWNvbi10 eXBlJywgZGF0YToge2FjdGlvbjogJ2NyZWF0ZScsIGNoZWNrOiBmYWxzZX0s CisgICAgICAgICAgZW5hYmxlOiAnY2FuQ3JlYXRlJworICAgICAgICB9Cisg ICAgICAgIF0pOworCisgICAgICB9LAorICAgICAgY2FuRHJvcDogcGdCcm93 c2VyLk5vZGVzWydzY2hlbWEnXS5jYW5DaGlsZERyb3AsCisgICAgICBjYW5E cm9wQ2FzY2FkZTogcGdCcm93c2VyLk5vZGVzWydzY2hlbWEnXS5jYW5DaGls ZERyb3AsCisgICAgICBleHRfZnVuY3M6IHVuZGVmaW5lZCwKKyAgICAgIG1v ZGVsOiBwZ0FkbWluLkJyb3dzZXIuTm9kZS5Nb2RlbC5leHRlbmQoeworICAg ICAgICBkZWZhdWx0czogeworICAgICAgICAgIG5hbWU6IHVuZGVmaW5lZCwK KyAgICAgICAgICBvaWQ6IHVuZGVmaW5lZCwKKyAgICAgICAgICBpc19zeXNf dHlwZTogZmFsc2UsCisgICAgICAgICAgdHlwdHlwZTogdW5kZWZpbmVkCisg ICAgICAgfSwKKyAgICAgICAKKyAgICAgICAgLy8gRGVmYXVsdCB2YWx1ZXMh CisgICAgICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGF0dHJzLCBhcmdzKSB7 CisgICAgICAgICAgdmFyIGlzTmV3ID0gKF8uc2l6ZShhdHRycykgPT09IDAp OworCisgICAgICAgICAgaWYgKGlzTmV3KSB7CisgICAgICAgICAgICB2YXIg dXNlckluZm8gPSBwZ0Jyb3dzZXIuc2VydmVySW5mb1thcmdzLm5vZGVfaW5m by5zZXJ2ZXIuX2lkXS51c2VyOworICAgICAgICAgICAgdmFyIHNjaGVtYUlu Zm8gPSBhcmdzLm5vZGVfaW5mby5zY2hlbWE7CisKKyAgICAgICAgICAgIHRo aXMuc2V0KHsndHlwZW93bmVyJzogdXNlckluZm8ubmFtZX0sIHtzaWxlbnQ6 IHRydWV9KTsKKyAgICAgICAgICAgIHRoaXMuc2V0KHsnc2NoZW1hJzogc2No ZW1hSW5mby5sYWJlbH0sIHtzaWxlbnQ6IHRydWV9KTsKKyAgICAgICAgICB9 CisgICAgICAgICAgcGdBZG1pbi5Ccm93c2VyLk5vZGUuTW9kZWwucHJvdG90 eXBlLmluaXRpYWxpemUuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKKyAgICAg ICAgfSwKKyAgICAgICAgCisgICAgICAgIHNjaGVtYTogW3sKKyAgICAgICAg ICBpZDogJ25hbWUnLCBsYWJlbDogJ3t7IF8oJ05hbWUnKSB9fScsIGNlbGw6 ICdzdHJpbmcnLAorICAgICAgICAgIHR5cGU6ICd0ZXh0JywgbW9kZTogWydw cm9wZXJ0aWVzJywgJ2NyZWF0ZScsICdlZGl0J10sCisgICAgICAgICAgZGlz YWJsZWQ6ICdpblNjaGVtYScKKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6 ICdvaWQnLCBsYWJlbDone3sgXygnT0lEJykgfX0nLCBjZWxsOiAnc3RyaW5n JywKKyAgICAgICAgICB0eXBlOiAndGV4dCcgLCBtb2RlOiBbJ3Byb3BlcnRp ZXMnXSwgZGlzYWJsZWQ6IHRydWUKKyAgICAgICAgfSx7CisgICAgICAgICAg aWQ6ICd0eXBlb3duZXInLCBsYWJlbDone3sgXygnT3duZXInKSB9fScsIGNl bGw6ICdzdHJpbmcnLAorICAgICAgICAgIGNvbnRyb2w6ICdub2RlLWxpc3Qt YnktbmFtZScsCisgICAgICAgICAgdHlwZTogJ3RleHQnLCBtb2RlOiBbJ3By b3BlcnRpZXMnLCAnY3JlYXRlJywgJ2VkaXQnXSwgbm9kZTogJ3JvbGUnLAor ICAgICAgICAgIGRpc2FibGVkOiAnaW5TY2hlbWEnCisgICAgICAgIH0sewor ICAgICAgICAgIGlkOiAnc2NoZW1hJywgbGFiZWw6J3t7IF8oJ1NjaGVtYScp IH19JywgY2VsbDogJ3N0cmluZycsCisgICAgICAgICAgdHlwZTogJ3RleHQn LCBtb2RlOiBbJ2NyZWF0ZScsICdlZGl0J10sIG5vZGU6ICdzY2hlbWEnLAor ICAgICAgICAgIGRpc2FibGVkOiAnaW5TY2hlbWEnLCBmaWx0ZXI6IGZ1bmN0 aW9uKGQpIHsKKyAgICAgICAgICAgIC8vIElmIHNjaGVtYSBuYW1lIHN0YXJ0 IHdpdGggcGdfKiB0aGVuIHdlIG5lZWQgdG8gZXhjbHVkZSB0aGVtCisgICAg ICAgICAgICBpZihkICYmIGQubGFiZWwubWF0Y2goL15wZ18vKSkKKyAgICAg ICAgICAgIHsKKyAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg ICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAg fSwKKyAgICAgICAgICBjb250cm9sOiBCYWNrZm9ybS5Ob2RlTGlzdEJ5TmFt ZUNvbnRyb2wuZXh0ZW5kKHsKKyAgICAgICAgICAgIHJlbmRlcjogZnVuY3Rp b24oKXsKKyAgICAgICAgICAgIC8vIEluaXRpYWxpemUgcGFyZW50J3MgcmVu ZGVyIG1ldGhvZAorICAgICAgICAgICAgQmFja2Zvcm0uTm9kZUxpc3RCeU5h bWVDb250cm9sLnByb3RvdHlwZS5yZW5kZXIuYXBwbHkodGhpcywgYXJndW1l bnRzKTsKKworICAgICAgICAgICAgLy8gU2V0IHNjaGVtYSBkZWZhdWx0IHZh bHVlIHRvIGl0cyBwYXJlbnQgU2NoZW1hCisgICAgICAgICAgICBpZih0aGlz Lm1vZGVsLmlzTmV3KCkpeworICAgICAgICAgICAgdGhpcy5tb2RlbC5zZXQo eydzY2hlbWEnOiB0aGlzLm1vZGVsLm5vZGVfaW5mby5zY2hlbWEubGFiZWx9 KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0aGlzOwor ICAgICAgICAgICAgfQorICAgICAgICAgIH0pCisgICAgICAgIH0seworICAg ICAgICAgIGlkOiAndHlwdHlwZScsIGxhYmVsOid7eyBfKCdUeXBlJykgfX0n LAorICAgICAgICAgIG1vZGU6IFsnY3JlYXRlJywnZWRpdCddLCBkaXNhYmxl ZDogJ2luU2NoZW1hV2l0aE1vZGVsQ2hlY2snLAorICAgICAgICAgIGdyb3Vw OiAne3sgXygnRGVmaW5pdGlvbicpIH19JywKKyAgICAgICAgICBtb2RlOiBb J2VkaXQnLCAnY3JlYXRlJ10sCisgICAgICAgICAgc2VsZWN0MjogeyB3aWR0 aDogIjUwJSIgfSwKKyAgICAgICAgICBvcHRpb25zOiBbCisgICAgICAgICAg ICB7bGFiZWw6ICJDb21wb3NpdGUiLCB2YWx1ZTogImMifSwKKyAgICAgICAg ICAgIHtsYWJlbDogIkVudW1lcmF0aW9uIiwgdmFsdWU6ICJlIn0sCisgICAg ICAgICAgICB7bGFiZWw6ICJFeHRlcm5hbCIsIHZhbHVlOiAieCJ9LAorICAg ICAgICAgICAge2xhYmVsOiAiUmFuZ2UiLCB2YWx1ZTogInIifSwKKyAgICAg ICAgICBdLAorICAgICAgICAgIGRpc2FibGVkOiAnaW5TY2hlbWFXaXRoTW9k ZWxDaGVjaycsCisgICAgICAgICAgLy8gSWYgY3JlYXRlIG1vZGUgdGhlbiBi eSBkZWZhdWx0IG9wZW4gY29tcG9zaXRlIHR5cGUKKyAgICAgICAgICBjb250 cm9sOiBCYWNrZm9ybS5TZWxlY3QyQ29udHJvbC5leHRlbmQoeworICAgICAg ICAgICAgcmVuZGVyOiBmdW5jdGlvbigpeworICAgICAgICAgICAgICAvLyBJ bml0aWFsaXplIHBhcmVudCdzIHJlbmRlciBtZXRob2QKKyAgICAgICAgICAg ICAgQmFja2Zvcm0uU2VsZWN0MkNvbnRyb2wucHJvdG90eXBlLnJlbmRlci5h cHBseSh0aGlzLCBhcmd1bWVudHMpOworICAgICAgICAgICAgICBpZih0aGlz Lm1vZGVsLmlzTmV3KCkpIHsKKyAgICAgICAgICAgICAgICB0aGlzLm1vZGVs LnNldCh7J3R5cHR5cGUnOiAnYyd9KTsKKyAgICAgICAgICAgICAgfQorICAg ICAgICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgICAgIH0KKyAgICAg ICAgICB9KQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2NvbXBvc2l0 ZScsIGxhYmVsOiAne3sgXygnQ29tcG9zaXRlIFR5cGUnKSB9fScsCisgICAg ICAgICAgbW9kZWw6IENvbXBvc2l0ZU1vZGVsLCBlZGl0YWJsZTogdHJ1ZSwg dHlwZTogJ2NvbGxlY3Rpb24nLAorICAgICAgICAgIGdyb3VwOiAne3sgXygn RGVmaW5pdGlvbicpIH19JywgbW9kZTogWydlZGl0JywgJ2NyZWF0ZSddLAor ICAgICAgICAgIGNvbnRyb2w6ICd1bmlxdWUtY29sLWNvbGxlY3Rpb24nLCB1 bmlxdWVDb2wgOiBbJ21lbWJlcl9uYW1lJ10sCisgICAgICAgICAgY2FuQWRk OiB0cnVlLCBjYW5FZGl0OiB0cnVlLCBjYW5EZWxldGU6IHRydWUsIGRpc2Fi bGVkOiAnaW5TY2hlbWEnLAorICAgICAgICAgIGRlcHM6IFsndHlwdHlwZSdd LCBkZXBzOiBbJ3R5cHR5cGUnXSwKKyAgICAgICAgICB2aXNpYmxlOiBmdW5j dGlvbihtKSB7CisgICAgICAgICAgIGlmIChtLmdldCgndHlwdHlwZScpID09 PSAnYycpIHsKKyAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg ICAgfQorICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgfQor ICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2VudW0nLCBsYWJlbDogJ3t7 IF8oJ0VudW1lcmF0aW9uIFR5cGUnKSB9fScsCisgICAgICAgICAgbW9kZWw6 IEVudW1Nb2RlbCwgZWRpdGFibGU6IHRydWUsIHR5cGU6ICdjb2xsZWN0aW9u JywKKyAgICAgICAgICBncm91cDogJ3t7IF8oJ0RlZmluaXRpb24nKSB9fScs IG1vZGU6IFsnZWRpdCcsICdjcmVhdGUnXSwKKyAgICAgICAgICBjYW5BZGQ6 IHRydWUsIGNhbkVkaXQ6IGZhbHNlLCBjYW5EZWxldGU6IGZ1bmN0aW9uKG0p IHsKKyAgICAgICAgICAgICAgLy8gV2Ugd2lsbCBkaXNhYmxlIGl0IGlmIGl0 J3MgaW4gJ2VkaXQnIG1vZGUKKyAgICAgICAgICAgICAgaWYgKG0uaXNOZXco KSkgeworICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs c2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgfSwKKyAgICAgICAgICBk aXNhYmxlZDogJ2luU2NoZW1hJywgZGVwczogWyd0eXB0eXBlJ10sCisgICAg ICAgICAgY29udHJvbDogJ3VuaXF1ZS1jb2wtY29sbGVjdGlvbicsIHVuaXF1 ZUNvbCA6IFsnbGFiZWwnXSwKKyAgICAgICAgICB2aXNpYmxlOiBmdW5jdGlv bihtKSB7CisgICAgICAgICAgIHJldHVybiBtLmdldCgndHlwdHlwZScpID09 PSAnZSc7CisgICAgICAgICAgfQorICAgICAgICB9LHsKKyAgICAgICAgICAv LyBXZSB3aWxsIGRpc2FibGUgcmFuZ2UgdHlwZSBjb250cm9sIGluIGVkaXQg bW9kZQorICAgICAgICAgIHR5cGU6ICduZXN0ZWQnLCBjb250cm9sOiAnZmll bGRzZXQnLCBncm91cDogJ3t7IF8oJ0RlZmluaXRpb24nKSB9fScsCisgICAg ICAgICAgbW9kZTogWydlZGl0JywgJ2NyZWF0ZSddLAorICAgICAgICAgIHZp c2libGU6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIHJldHVybiBtLmdl dCgndHlwdHlwZScpID09PSAncic7CisgICAgICAgICAgfSwgZGVwczogWyd0 eXB0eXBlJ10sIGxhYmVsOiAne3sgXygnUmFuZ2UgVHlwZScpIH19JywKKyAg ICAgICAgICBzY2hlbWE6W3sKKyAgICAgICAgICAgIGlkOiAndHlwbmFtZScs IGxhYmVsOid7eyBfKCdTdWJ0eXBlJykgfX0nLCBjZWxsOiAnc3RyaW5nJywK KyAgICAgICAgICAgIGNvbnRyb2w6ICdub2RlLWFqYXgtb3B0aW9ucycsCisg ICAgICAgICAgICB1cmw6ICdnZXRfc3R5cGVzJywgdHlwZTogJ3RleHQnLCBt b2RlOiBbJ3Byb3BlcnRpZXMnLCAnY3JlYXRlJywgJ2VkaXQnXSwKKyAgICAg ICAgICAgIGdyb3VwOiAne3sgXygnUmFuZ2UgVHlwZScpIH19JywgZGlzYWJs ZWQ6ICdpblNjaGVtYVdpdGhNb2RlbENoZWNrJywKKyAgICAgICAgICAgIHRy YW5zZm9ybTogZnVuY3Rpb24oZCl7CisgICAgICAgICAgICAgIHRoaXMubW9k ZWwuc3VidHlwZXMgPSAgZDsKKyAgICAgICAgICAgICAgcmV0dXJuIGQ7Cisg ICAgICAgICAgICB9CisgICAgICAgICAgfSx7CisgICAgICAgICAgICAgIGlk OiAnb3BjbmFtZScsIGxhYmVsOid7eyBfKCdTdWJ0eXBlIE9wQ2xhc3MnKSB9 fScsIGNlbGw6ICdzdHJpbmcnLAorICAgICAgICAgICAgICBtb2RlOiBbJ3By b3BlcnRpZXMnLCAnY3JlYXRlJywgJ2VkaXQnXSwgZ3JvdXA6ICd7eyBfKCdS YW5nZSBUeXBlJykgfX0nLAorICAgICAgICAgICAgICBkaXNhYmxlZDogJ2lu U2NoZW1hV2l0aE1vZGVsQ2hlY2snLCBkZXBzOiBbJ3R5cG5hbWUnXSwKKyAg ICAgICAgICAgICAgY29udHJvbDogJ3NlbGVjdCcsIG9wdGlvbnM6IGZ1bmN0 aW9uKCkgeworICAgICAgICAgICAgICAgIHZhciBsX3R5cG5hbWUgPSB0aGlz Lm1vZGVsLmdldCgndHlwbmFtZScpLAorICAgICAgICAgICAgICAgICAgc2Vs ZiA9IHRoaXMsCisgICAgICAgICAgICAgICAgICByZXN1bHQgPSBbXTsKKyAg ICAgICAgICAgICAgICBpZighXy5pc1VuZGVmaW5lZChsX3R5cG5hbWUpICYm IGxfdHlwbmFtZSAhPSAnJykKKyAgICAgICAgICAgICAgICB7CisgICAgICAg ICAgICAgICAgICB2YXIgbm9kZSA9IHRoaXMuZmllbGQuZ2V0KCdzY2hlbWFf bm9kZScpLAorICAgICAgICAgICAgICAgICAgX3VybCA9IG5vZGUuZ2VuZXJh dGVfdXJsLmFwcGx5KAorICAgICAgICAgICAgICAgICAgICBub2RlLCBbCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCwgJ2dldF9zdWJvcGNs YXNzJywgdGhpcy5maWVsZC5nZXQoJ25vZGVfZGF0YScpLCBmYWxzZSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpZWxkLmdldCgnbm9k ZV9pbmZvJykKKyAgICAgICAgICAgICAgICAgICAgXSk7CisgICAgICAgICAg ICAgICAgICAkLmFqYXgoeworICAgICAgICAgICAgICAgICAgICBhc3luYzog ZmFsc2UsCisgICAgICAgICAgICAgICAgICAgIHVybDogX3VybCwKKyAgICAg ICAgICAgICAgICAgICAgY2FjaGU6IGZhbHNlLAorICAgICAgICAgICAgICAg ICAgICBkYXRhOiB7J3R5cG5hbWUnIDogbF90eXBuYW1lfSwKKyAgICAgICAg ICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24ocmVzKSB7CisgICAgICAg ICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzLmRhdGE7CisgICAgICAgICAg ICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgIGVycm9yOiBmdW5j dGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1vZGVsLnRy aWdnZXIoJ3BnYWRtaW46dmlldzpmZXRjaDplcnJvcicsIHNlbGYubW9kZWws IHNlbGYuZmllbGQpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg ICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICAgLy8KKyAgICAg ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsK KyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSx7CisgICAgICAgICAg ICAgIGlkOiAnY29sbG5hbWUnLCBsYWJlbDone3sgXygnQ29sbGF0aW9uJykg fX0nLCBjZWxsOiAnc3RyaW5nJywKKyAgICAgICAgICAgICAgdHlwZTogJ3Rl eHQnLCBtb2RlOiBbJ3Byb3BlcnRpZXMnLCAnY3JlYXRlJywgJ2VkaXQnXSwK KyAgICAgICAgICAgICAgZ3JvdXA6ICd7eyBfKCdSYW5nZSBUeXBlJykgfX0n LAorICAgICAgICAgICAgICBkZXBzOiBbJ3R5cG5hbWUnXSwgY29udHJvbDog J25vZGUtYWpheC1vcHRpb25zJywgdXJsOiAnZ2V0X2NvbGxhdGlvbnMnLAor ICAgICAgICAgICAgICBkaXNhYmxlZDogZnVuY3Rpb24obSkgeworICAgICAg ICAgICAgICAgIGlmKHRoaXMubm9kZV9pbmZvICYmICAnY2F0YWxvZycgaW4g dGhpcy5ub2RlX2luZm8pCisgICAgICAgICAgICAgICAgeworICAgICAgICAg ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorCisg ICAgICAgICAgICAgICAgLy8gRGlzYmFsZSBpbiBlZGl0IG1vZGUKKyAgICAg ICAgICAgICAgICBpZiAoIW0uaXNOZXcoKSkgeworICAgICAgICAgICAgICAg ICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAg ICAgICAgICAgLy8gVG8gY2hlY2sgaWYgY29sbGF0aW9uIGlzIGFsbG93ZWQ/ CisgICAgICAgICAgICAgICAgdmFyIG9mX3N1YnR5cGUgPSBtLmdldCgndHlw bmFtZScpLAorICAgICAgICAgICAgICAgICAgaXNfY29sbGF0ZSA9IHVuZGVm aW5lZDsKKyAgICAgICAgICAgICAgICBpZighXy5pc1VuZGVmaW5lZChvZl9z dWJ0eXBlKSkgeworICAgICAgICAgICAgICAgICAgLy8gaXRlcmF0aW5nIG92 ZXIgYWxsIHRoZSB0eXBlcworICAgICAgICAgICAgICAgICAgXy5lYWNoKG0u c3VidHlwZXMsIGZ1bmN0aW9uKHMpIHsKKyAgICAgICAgICAgICAgICAgICAg Ly8gaWYgc3VidHlwZSBmcm9tIHNlbGVjdGVkIGZyb20gY29tYm9ib3ggbWF0 Y2hlcworICAgICAgICAgICAgICAgICAgICBpZiAoIG9mX3N1YnR5cGUgPT09 IHMubGFiZWwgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBj b2xsYXRpb24gaXMgYWxsb3dlZCBmb3Igc2VsZWN0ZWQgc3VidHlwZQorICAg ICAgICAgICAgICAgICAgICAgICAgLy8gdGhlbiBlbmFibGUgaXQgZWxzZSBk aXNhYmxlIGl0CisgICAgICAgICAgICAgICAgICAgICAgICBpc19jb2xsYXRl ID0gcy5pc19jb2xsYXRlOworICAgICAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg ICAgICAgICAgLy8gSWYgaXNfY29sbGF0ZSBpcyB0cnVlIHRoZW4gZG8gbm90 IGRpc2FibGUKKyAgICAgICAgICAgICAgICByZXR1cm4gaXNfY29sbGF0ZSA/ IGZhbHNlIDogdHJ1ZTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAg fSx7CisgICAgICAgICAgICAgIGlkOiAncm5nY2Fub25pY2FsJywgbGFiZWw6 J3t7IF8oJ0Nhbm9uaWNhbCcpIH19JywgY2VsbDogJ3N0cmluZycsCisgICAg ICAgICAgICAgIHR5cGU6ICd0ZXh0JywgbW9kZTogWydwcm9wZXJ0aWVzJywg J2NyZWF0ZScsICdlZGl0J10sCisgICAgICAgICAgICAgIGdyb3VwOiAne3sg XygnUmFuZ2UgVHlwZScpIH19JywKKyAgICAgICAgICAgICAgZGlzYWJsZWQ6 ICdpblNjaGVtYVdpdGhNb2RlbENoZWNrJywgZGVwczogWyduYW1lJywgJ3R5 cG5hbWUnXSwKKyAgICAgICAgICAgICAgY29udHJvbDogJ3NlbGVjdCcsIG9w dGlvbnM6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHZhciBuYW1l ID0gdGhpcy5tb2RlbC5nZXQoJ25hbWUnKSwKKyAgICAgICAgICAgICAgICAg c2VsZiA9IHRoaXMsCisgICAgICAgICAgICAgICAgIHJlc3VsdCA9IFtdOwor CisgICAgICAgICAgICAgICAgaWYoIV8uaXNVbmRlZmluZWQobmFtZSkgJiYg bmFtZSAhPSAnJykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg ICAgICB2YXIgbm9kZSA9IHRoaXMuZmllbGQuZ2V0KCdzY2hlbWFfbm9kZScp LAorICAgICAgICAgICAgICAgICAgX3VybCA9IG5vZGUuZ2VuZXJhdGVfdXJs LmFwcGx5KAorICAgICAgICAgICAgICAgICAgICBub2RlLCBbCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbnVsbCwgJ2dldF9jYW5vbmljYWwnLCB0 aGlzLmZpZWxkLmdldCgnbm9kZV9kYXRhJyksIGZhbHNlLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHRoaXMuZmllbGQuZ2V0KCdub2RlX2luZm8n KQorICAgICAgICAgICAgICAgICAgICBdKTsKKyAgICAgICAgICAgICAgICAg ICQuYWpheCh7CisgICAgICAgICAgICAgICAgICAgIGFzeW5jOiBmYWxzZSwK KyAgICAgICAgICAgICAgICAgICAgdXJsOiBfdXJsLAorICAgICAgICAgICAg ICAgICAgICBjYWNoZTogZmFsc2UsCisgICAgICAgICAgICAgICAgICAgIGRh dGE6IHsibmFtZSIgOiBuYW1lfSwKKyAgICAgICAgICAgICAgICAgICAgc3Vj Y2VzczogZnVuY3Rpb24ocmVzKSB7CisgICAgICAgICAgICAgICAgICAgICAg cmVzdWx0ID0gcmVzLmRhdGE7CisgICAgICAgICAgICAgICAgICAgIH0sCisg ICAgICAgICAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbigpIHsKKyAgICAg ICAgICAgICAgICAgICAgICBzZWxmLm1vZGVsLnRyaWdnZXIoJ3BnYWRtaW46 dmlldzpmZXRjaDplcnJvcicsCisgICAgICAgICAgICAgICAgICAgICAgc2Vs Zi5tb2RlbCwgc2VsZi5maWVsZCk7CisgICAgICAgICAgICAgICAgICAgIH0K KyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfQor ICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgfQor ICAgICAgICAgICAgfSx7CisgICAgICAgICAgICAgIGlkOiAncm5nc3ViZGlm ZicsIGxhYmVsOid7eyBfKCdTdWJUeXBlIGRpZmYnKSB9fScsIGNlbGw6ICdz dHJpbmcnLAorICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsIG1vZGU6IFsn cHJvcGVydGllcycsICdjcmVhdGUnLCAnZWRpdCddLAorICAgICAgICAgICAg ICBncm91cDogJ3t7IF8oJ1JhbmdlIFR5cGUnKSB9fScsCisgICAgICAgICAg ICAgIGRpc2FibGVkOiAnaW5TY2hlbWFXaXRoTW9kZWxDaGVjaycsIGRlcHM6 IFsnb3BjbmFtZSddLAorICAgICAgICAgICAgICBjb250cm9sOiAnc2VsZWN0 Jywgb3B0aW9uczogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdmFy IGxfdHlwbmFtZSA9IHRoaXMubW9kZWwuZ2V0KCd0eXBuYW1lJyksCisgICAg ICAgICAgICAgICAgICBsX29wY25hbWUgPSB0aGlzLm1vZGVsLmdldCgnb3Bj bmFtZScpLAorICAgICAgICAgICAgICAgICAgc2VsZiA9IHRoaXMsCisgICAg ICAgICAgICAgICAgICByZXN1bHQgPSBbXTsKKworICAgICAgICAgICAgICAg IGlmKCFfLmlzVW5kZWZpbmVkKGxfdHlwbmFtZSkgJiYgbF90eXBuYW1lICE9 ICcnICYmCisgICAgICAgICAgICAgICAgIV8uaXNVbmRlZmluZWQobF9vcGNu YW1lKSAmJiBsX29wY25hbWUgIT0gJycpIHsKKyAgICAgICAgICAgICAgICAg IHZhciBub2RlID0gdGhpcy5maWVsZC5nZXQoJ3NjaGVtYV9ub2RlJyksCisg ICAgICAgICAgICAgICAgICBfdXJsID0gbm9kZS5nZW5lcmF0ZV91cmwuYXBw bHkoCisgICAgICAgICAgICAgICAgICAgIG5vZGUsIFsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBudWxsLCAnZ2V0X3N0eXBlZGlmZicsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWVsZC5nZXQoJ25vZGVf ZGF0YScpLCBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0 aGlzLmZpZWxkLmdldCgnbm9kZV9pbmZvJykKKyAgICAgICAgICAgICAgICAg ICAgXSk7CisgICAgICAgICAgICAgICAgICAkLmFqYXgoeworICAgICAgICAg ICAgICAgICAgICBhc3luYzogZmFsc2UsCisgICAgICAgICAgICAgICAgICAg IHVybDogX3VybCwKKyAgICAgICAgICAgICAgICAgICAgY2FjaGU6IGZhbHNl LAorICAgICAgICAgICAgICAgICAgICBkYXRhOiB7J3R5cG5hbWUnIDogbF90 eXBuYW1lLCAnb3BjbmFtZSc6IGxfb3BjbmFtZX0sCisgICAgICAgICAgICAg ICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKHJlcykgeworICAgICAgICAgICAg ICAgICAgICAgIHJlc3VsdCA9IHJlcy5kYXRhOworICAgICAgICAgICAgICAg ICAgICB9LAorICAgICAgICAgICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24o KSB7CisgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tb2RlbC50cmlnZ2Vy KCdwZ2FkbWluOnZpZXc6ZmV0Y2g6ZXJyb3InLAorICAgICAgICAgICAgICAg ICAgICAgIHNlbGYubW9kZWwsIHNlbGYuZmllbGQpOworICAgICAgICAgICAg ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAg ICAgICAgIH0KKyAgICAgICAgICB9XQorICAgICAgICB9LHsKKyAgICAgICAg ICB0eXBlOiAnbmVzdGVkJywgY29udHJvbDogJ3RhYicsIGdyb3VwOiAne3sg XygnRGVmaW5pdGlvbicpIH19JywKKyAgICAgICAgICBsYWJlbDogJ3t7IF8o J0V4dGVybmFsIFR5cGUnKSB9fScsIGRlcHM6IFsndHlwdHlwZSddLAorICAg ICAgICAgIG1vZGU6IFsnY3JlYXRlJywgJ2VkaXQnXSwKKyAgICAgICAgICB2 aXNpYmxlOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgICByZXR1cm4gbS5n ZXQoJ3R5cHR5cGUnKSA9PT0gJ3gnOworICAgICAgICAgIH0sCisgICAgICAg ICAgc2NoZW1hOlt7CisgICAgICAgICAgICBpZDogJ3R5cGlucHV0JywgbGFi ZWw6J3t7IF8oJ0lucHV0IGZ1bmN0aW9uJykgfX0nLAorICAgICAgICAgICAg Y2VsbDogJ3N0cmluZycsdHlwZTogJ3RleHQnLAorICAgICAgICAgICAgbW9k ZTogWydwcm9wZXJ0aWVzJywgJ2NyZWF0ZScsICdlZGl0J10sIGdyb3VwOiAn UmVxdWlyZWQnLAorICAgICAgICAgICAgZGlzYWJsZWQ6ICdpblNjaGVtYVdp dGhNb2RlbENoZWNrJywKKyAgICAgICAgICAgIGNvbnRyb2w6ICdub2RlLWFq YXgtb3B0aW9ucycsIHVybDogJ2dldF9leHRlcm5hbF9mdW5jdGlvbnMnLAor ICAgICAgICAgICAgdHJhbnNmb3JtOiAnZXh0ZXJuYWxfZnVuY19jb21ibycK KyAgICAgICAgICB9LHsKKyAgICAgICAgICAgIGlkOiAndHlwb3V0cHV0Jywg bGFiZWw6J3t7IF8oJ091dHB1dCBmdW5jdGlvbicpIH19JywKKyAgICAgICAg ICAgIGNlbGw6ICdzdHJpbmcnLAorICAgICAgICAgICAgdHlwZTogJ3RleHQn LCBtb2RlOiBbJ3Byb3BlcnRpZXMnLCAnY3JlYXRlJywgJ2VkaXQnXSwKKyAg ICAgICAgICAgIGdyb3VwOiAnUmVxdWlyZWQnLAorICAgICAgICAgICAgZGlz YWJsZWQ6ICdpblNjaGVtYVdpdGhNb2RlbENoZWNrJworICAgICAgICAgICAg LGNvbnRyb2w6ICdub2RlLWFqYXgtb3B0aW9ucycsIHVybDogJ2dldF9leHRl cm5hbF9mdW5jdGlvbnMnLAorICAgICAgICAgICAgdHJhbnNmb3JtOiAnZXh0 ZXJuYWxfZnVuY19jb21ibycKKyAgICAgICAgICB9LHsKKyAgICAgICAgICAg IGlkOiAndHlwcmVjZWl2ZScsIGxhYmVsOid7eyBfKCdSZWNlaXZlIGZ1bmN0 aW9uJykgfX0nLAorICAgICAgICAgICAgY2VsbDogJ3N0cmluZycsIHR5cGU6 ICd0ZXh0JywgZ3JvdXA6ICdPcHRpb25hbC0xJywKKyAgICAgICAgICAgIG1v ZGU6IFsncHJvcGVydGllcycsICdjcmVhdGUnLCAnZWRpdCddLAorICAgICAg ICAgICAgZGlzYWJsZWQ6ICdpblNjaGVtYVdpdGhNb2RlbENoZWNrJworICAg ICAgICAgICAgLGNvbnRyb2w6ICdub2RlLWFqYXgtb3B0aW9ucycsIHVybDog J2dldF9leHRlcm5hbF9mdW5jdGlvbnMnLAorICAgICAgICAgICAgdHJhbnNm b3JtOiAnZXh0ZXJuYWxfZnVuY19jb21ibycKKyAgICAgICAgICB9LHsKKyAg ICAgICAgICAgIGlkOiAndHlwc2VuZCcsIGxhYmVsOid7eyBfKCdTZW5kIGZ1 bmN0aW9uJykgfX0nLAorICAgICAgICAgICAgY2VsbDogJ3N0cmluZycsIGdy b3VwOiAnT3B0aW9uYWwtMScsCisgICAgICAgICAgICB0eXBlOiAndGV4dCcs IG1vZGU6IFsncHJvcGVydGllcycsICdjcmVhdGUnLCAnZWRpdCddLAorICAg ICAgICAgICAgZGlzYWJsZWQ6ICdpblNjaGVtYVdpdGhNb2RlbENoZWNrJwor ICAgICAgICAgICAgLGNvbnRyb2w6ICdub2RlLWFqYXgtb3B0aW9ucycsIHVy bDogJ2dldF9leHRlcm5hbF9mdW5jdGlvbnMnLAorICAgICAgICAgICAgdHJh bnNmb3JtOiAnZXh0ZXJuYWxfZnVuY19jb21ibycKKyAgICAgICAgICB9LHsK KyAgICAgICAgICAgIGlkOiAndHlwbW9kaW4nLCBsYWJlbDone3sgXygnVHlw bW9kIGluIGZ1bmN0aW9uJykgfX0nLAorICAgICAgICAgICAgY2VsbDogJ3N0 cmluZycsIHR5cGU6ICd0ZXh0JywKKyAgICAgICAgICAgIG1vZGU6IFsncHJv cGVydGllcycsICdjcmVhdGUnLCAnZWRpdCddLCBncm91cDogJ09wdGlvbmFs LTEnLAorICAgICAgICAgICAgZGlzYWJsZWQ6ICdpblNjaGVtYVdpdGhNb2Rl bENoZWNrJworICAgICAgICAgICAgLGNvbnRyb2w6ICdub2RlLWFqYXgtb3B0 aW9ucycsIHVybDogJ2dldF9leHRlcm5hbF9mdW5jdGlvbnMnLAorICAgICAg ICAgICAgdHJhbnNmb3JtOiBmdW5jdGlvbihkKSB7CisgICAgICAgICAgICAg IHZhciByZXN1bHQgPSBbe2xhYmVsIDoiIiwgdmFsdWUgOiAiIn1dOworICAg ICAgICAgICAgICBfLmVhY2goZCwgZnVuY3Rpb24oaXRlbSkgeworICAgICAg ICAgICAgICAvLyBpZiB0eXBlIGZyb20gc2VsZWN0ZWQgZnJvbSBjb21ib2Jv eCBtYXRjaGVzIGluIG9wdGlvbnMKKyAgICAgICAgICAgICAgaWYgKCBpdGVt LmNidHlwZSA9PT0gJ3R5cG1vZGluJyB8fCBpdGVtLmNidHlwZSA9PT0gJ2Fs bCcpIHsKKyAgICAgICAgICAgICAgICByZXN1bHQucHVzaChpdGVtKTsKKyAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgIH0pOworICAgICAgICAgICAg IHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgfSx7 CisgICAgICAgICAgICBpZDogJ3R5cG1vZG91dCcsIGxhYmVsOid7eyBfKCdU eXBtb2Qgb3V0IGZ1bmN0aW9uJykgfX0nLAorICAgICAgICAgICAgY2VsbDog J3N0cmluZycsIGdyb3VwOiAnT3B0aW9uYWwtMScsCisgICAgICAgICAgICB0 eXBlOiAndGV4dCcsIG1vZGU6IFsncHJvcGVydGllcycsICdjcmVhdGUnLCAn ZWRpdCddLAorICAgICAgICAgICAgZGlzYWJsZWQ6ICdpblNjaGVtYVdpdGhN b2RlbENoZWNrJworICAgICAgICAgICAgLGNvbnRyb2w6ICdub2RlLWFqYXgt b3B0aW9ucycsIHVybDogJ2dldF9leHRlcm5hbF9mdW5jdGlvbnMnLAorICAg ICAgICAgICAgdHJhbnNmb3JtOiBmdW5jdGlvbihkKSB7CisgICAgICAgICAg ICAgIHZhciByZXN1bHQgPSBbe2xhYmVsIDoiIiwgdmFsdWUgOiAiIn1dOwor ICAgICAgICAgICAgICBfLmVhY2goZCwgZnVuY3Rpb24oaXRlbSkgeworICAg ICAgICAgICAgICAvLyBpZiB0eXBlIGZyb20gc2VsZWN0ZWQgZnJvbSBjb21i b2JveCBtYXRjaGVzIGluIG9wdGlvbnMKKyAgICAgICAgICAgICAgaWYgKCBp dGVtLmNidHlwZSA9PT0gJ3R5cG1vZG91dCcgfHwgaXRlbS5jYnR5cGUgPT09 ICdhbGwnKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goaXRlbSk7 CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICB9KTsKKyAgICAgICAg ICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgfQorICAgICAgICAg IH0seworICAgICAgICAgICAgaWQ6ICd0eXBsZW4nLCBsYWJlbDone3sgXygn SW50ZXJuYWwgbGVuZ3RoJykgfX0nLAorICAgICAgICAgICAgY2VsbDogJ2lu dGVnZXInLCBncm91cDogJ09wdGlvbmFsLTEnLAorICAgICAgICAgICAgdHlw ZTogJ2ludCcsIG1vZGU6IFsncHJvcGVydGllcycsICdjcmVhdGUnLCAnZWRp dCddLAorICAgICAgICAgICAgZGlzYWJsZWQ6ICdpblNjaGVtYVdpdGhNb2Rl bENoZWNrJworICAgICAgICAgIH0seworICAgICAgICAgICAgaWQ6ICd2YXJp YWJsZScsIGxhYmVsOid7eyBfKCdWYXJpYWJsZScpIH19JywgY2VsbDogJ3N3 aXRjaCcsCisgICAgICAgICAgICBncm91cDogJ09wdGlvbmFsLTEnLCB0eXBl OiAnc3dpdGNoJywKKyAgICAgICAgICAgIG1vZGU6IFsnY3JlYXRlJywnZWRp dCddLCBvcHRpb25zOiBzd2l0Y2hPcHRpb25zLAorICAgICAgICAgICAgZGlz YWJsZWQ6ICdpblNjaGVtYVdpdGhNb2RlbENoZWNrJworICAgICAgICAgIH0s eworICAgICAgICAgICAgaWQ6ICd0eXBkZWZhdWx0JywgbGFiZWw6J3t7IF8o J0RlZmF1bHQnKSB9fScsCisgICAgICAgICAgICBjZWxsOiAnc3RyaW5nJywg Z3JvdXA6ICdPcHRpb25hbC0xJywKKyAgICAgICAgICAgIHR5cGU6ICd0ZXh0 JywgbW9kZTogWydwcm9wZXJ0aWVzJywgJ2NyZWF0ZScsJ2VkaXQnXSwKKyAg ICAgICAgICAgIGRpc2FibGVkOiAnaW5TY2hlbWFXaXRoTW9kZWxDaGVjaycK KyAgICAgICAgICB9LHsKKyAgICAgICAgICAgIGlkOiAndHlwYW5hbHl6ZScs IGxhYmVsOid7eyBfKCdBbmFseXplIGZ1bmN0aW9uJykgfX0nLAorICAgICAg ICAgICAgY2VsbDogJ3N0cmluZycsIGdyb3VwOiAnT3B0aW9uYWwtMScsCisg ICAgICAgICAgICB0eXBlOiAndGV4dCcsIG1vZGU6IFsncHJvcGVydGllcycs ICdjcmVhdGUnLCdlZGl0J10sCisgICAgICAgICAgICBkaXNhYmxlZDogJ2lu U2NoZW1hV2l0aE1vZGVsQ2hlY2snCisgICAgICAgICAgICAsY29udHJvbDog J25vZGUtYWpheC1vcHRpb25zJywgdXJsOiAnZ2V0X2V4dGVybmFsX2Z1bmN0 aW9ucycsCisgICAgICAgICAgICB0cmFuc2Zvcm06ICdleHRlcm5hbF9mdW5j X2NvbWJvJworICAgICAgICAgIH0seworICAgICAgICAgICAgaWQ6ICd0eXBj YXRlZ29yeScsIGxhYmVsOid7eyBfKCdDYXRlZ29yeScpIH19JywKKyAgICAg ICAgICAgIGNlbGw6ICdzdHJpbmcnLCBncm91cDogJ09wdGlvbmFsLTEnLAor ICAgICAgICAgICAgdHlwZTogJ3RleHQnLCBtb2RlOiBbJ3Byb3BlcnRpZXMn LCAnY3JlYXRlJywnZWRpdCddLAorICAgICAgICAgICAgZGlzYWJsZWQ6ICdp blNjaGVtYVdpdGhNb2RlbENoZWNrJywgY29udHJvbDogJ3NlbGVjdDInLAor ICAgICAgICAgICAgc2VsZWN0MjogeyBwbGFjZWhvbGRlcjogIlNlbGVjdCBj YXRlZ29yeSIsIGFsbG93Q2xlYXI6IHRydWUsCisgICAgICAgICAgICAgd2lk dGg6ICIxMDAlIiB9LAorICAgICAgICAgICAgb3B0aW9uczogWworICAgICAg ICAgICAgICB7bGFiZWwgOiIiLCB2YWx1ZSA6ICIifSwKKyAgICAgICAgICAg ICAge2xhYmVsIDoiQXJyYXkgdHlwZXMiLCB2YWx1ZSA6ICJBIn0sCisgICAg ICAgICAgICAgIHtsYWJlbCA6IkJvb2xlYW4gdHlwZXMiLCB2YWx1ZSA6ICJC In0sCisgICAgICAgICAgICAgIHtsYWJlbCA6IkNvbXBvc2l0ZSB0eXBlcyIs IHZhbHVlIDogIkMifSwKKyAgICAgICAgICAgICAge2xhYmVsIDoiRGF0ZS90 aW1lIHR5cGVzIiwgdmFsdWUgOiAiRCJ9LAorICAgICAgICAgICAgICB7bGFi ZWwgOiJFbnVtIHR5cGVzIiwgdmFsdWUgOiAiRSJ9LAorICAgICAgICAgICAg ICB7bGFiZWwgOiJHZW9tZXRyaWMgdHlwZXMiLCB2YWx1ZSA6ICJHIn0sCisg ICAgICAgICAgICAgIHtsYWJlbCA6Ik5ldHdvcmsgYWRkcmVzcyB0eXBlcyIs IHZhbHVlIDogIkkifSwKKyAgICAgICAgICAgICAge2xhYmVsIDoiTnVtZXJp YyB0eXBlcyIsIHZhbHVlIDogIk4ifSwKKyAgICAgICAgICAgICAge2xhYmVs IDoiUHNldWRvLXR5cGVzIiwgdmFsdWUgOiAiUCJ9LAorICAgICAgICAgICAg ICB7bGFiZWwgOiJTdHJpbmcgdHlwZXMiLCB2YWx1ZSA6ICJTIn0sCisgICAg ICAgICAgICAgIHtsYWJlbCA6IlRpbWVzcGFuIHR5cGVzIiwgdmFsdWUgOiAi VCJ9LAorICAgICAgICAgICAgICB7bGFiZWwgOiJVc2VyLWRlZmluZWQgdHlw ZXMiLCB2YWx1ZSA6ICJVIn0sCisgICAgICAgICAgICAgIHtsYWJlbCA6IkJp dC1zdHJpbmcgdHlwZXMiLCB2YWx1ZSA6ICJWIn0sCisgICAgICAgICAgICAg IHtsYWJlbCA6InVua25vd24gdHlwZSIsIHZhbHVlIDogIlgifQorICAgICAg ICAgICAgXQorICAgICAgICAgIH0seworICAgICAgICAgICAgaWQ6ICd0eXBp c3ByZWZlcnJlZCcsIGxhYmVsOid7eyBfKCdQcmVmZXJlZCcpIH19JywgY2Vs bDogJ3N3aXRjaCcsCisgICAgICAgICAgICB0eXBlOiAnc3dpdGNoJywgbW9k ZTogWydwcm9wZXJ0aWVzJywgJ2NyZWF0ZScsJ2VkaXQnXSwKKyAgICAgICAg ICAgIG9wdGlvbnM6IHN3aXRjaE9wdGlvbnMsIGRpc2FibGVkOiAnaW5TY2hl bWFXaXRoTW9kZWxDaGVjaycsCisgICAgICAgICAgICBncm91cDogJ09wdGlv bmFsLTEnCisgICAgICAgICAgfSx7CisgICAgICAgICAgICBpZDogJ2VsZW1l bnQnLCBsYWJlbDone3sgXygnRWxlbWVudCcpIH19JywgY2VsbDogJ3N0cmlu ZycsCisgICAgICAgICAgICBjb250cm9sOiAnbm9kZS1hamF4LW9wdGlvbnMn LCBncm91cDogJ09wdGlvbmFsLTInLAorICAgICAgICAgICAgdHlwZTogJ3Rl eHQnLCBtb2RlOiBbJ3Byb3BlcnRpZXMnLCAnY3JlYXRlJywgJ2VkaXQnXSwK KyAgICAgICAgICAgIGRpc2FibGVkOiAnaW5TY2hlbWFXaXRoTW9kZWxDaGVj aycsIHVybDogJ2dldF90eXBlcycKKyAgICAgICAgICB9LHsKKyAgICAgICAg ICAgIGlkOiAndHlwZGVsaW0nLCBsYWJlbDone3sgXygnRGVsaW1pdGVyJykg fX0nLCBjZWxsOiAnc3RyaW5nJywKKyAgICAgICAgICAgIHR5cGU6ICd0ZXh0 JywgbW9kZTogWydwcm9wZXJ0aWVzJywgJ2NyZWF0ZScsICdlZGl0J10sCisg ICAgICAgICAgICBncm91cDogJ09wdGlvbmFsLTInLCBkaXNhYmxlZDogJ2lu U2NoZW1hV2l0aE1vZGVsQ2hlY2snCisgICAgICAgICAgfSx7CisgICAgICAg ICAgICBpZDogJ3R5cGFsaWduJywgbGFiZWw6J3t7IF8oJ0FsaWdubWVudCcp IH19JywKKyAgICAgICAgICAgIGNlbGw6ICdzdHJpbmcnLCBncm91cDogJ09w dGlvbmFsLTInLAorICAgICAgICAgICAgdHlwZTogJ3RleHQnLCBtb2RlOiBb J3Byb3BlcnRpZXMnLCAnY3JlYXRlJywgJ2VkaXQnXSwKKyAgICAgICAgICAg IGRpc2FibGVkOiAnaW5TY2hlbWFXaXRoTW9kZWxDaGVjaycsIGNvbnRyb2w6 ICdzZWxlY3QyJywKKyAgICAgICAgICAgIHNlbGVjdDI6IHsgcGxhY2Vob2xk ZXI6ICJTZWxlY3QgYWxpZ25tZW50IiwgYWxsb3dDbGVhcjogdHJ1ZSwKKyAg ICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAiMTAwJSIgfSwKKyAgICAg ICAgICAgIG9wdGlvbnM6IFsKKyAgICAgICAgICAgICAge2xhYmVsIDoiIiwg dmFsdWUgOiAiIn0sCisgICAgICAgICAgICAgIHtsYWJlbDogImNoYXIiLCB2 YWx1ZTogImMifSwKKyAgICAgICAgICAgICAge2xhYmVsOiAiaW50MiIsIHZh bHVlOiAicyJ9LAorICAgICAgICAgICAgICB7bGFiZWw6ICJpbjQiLCB2YWx1 ZTogImkifSwKKyAgICAgICAgICAgICAge2xhYmVsOiAiZG91YmxlIiwgdmFs dWU6ICJkIn0sCisgICAgICAgICAgICBdCisgICAgICAgICAgfSx7CisgICAg ICAgICAgICBpZDogJ3R5cHN0b3JhZ2UnLCBsYWJlbDone3sgXygnU3RvcmFn ZScpIH19JywKKyAgICAgICAgICAgIHR5cGU6ICd0ZXh0JywgbW9kZTogWydw cm9wZXJ0aWVzJywgJ2NyZWF0ZScsICdlZGl0J10sCisgICAgICAgICAgICBn cm91cDogJ09wdGlvbmFsLTInLCBjZWxsOiAnc3RyaW5nJywKKyAgICAgICAg ICAgIGRpc2FibGVkOiAnaW5TY2hlbWFXaXRoTW9kZWxDaGVjaycsIGNvbnRy b2w6ICdzZWxlY3QyJywKKyAgICAgICAgICAgIHNlbGVjdDI6IHsgcGxhY2Vo b2xkZXI6ICJTZWxlY3Qgc3RvcmFnZSIsIGFsbG93Q2xlYXI6IHRydWUsCisg ICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogIjEwMCUiIH0sCisgICAg ICAgICAgICBvcHRpb25zOiBbCisgICAgICAgICAgICAgIHtsYWJlbCA6IiIs IHZhbHVlIDogIiJ9LAorICAgICAgICAgICAgICB7bGFiZWw6ICJQTEFJTiIs IHZhbHVlOiAicCJ9LAorICAgICAgICAgICAgICB7bGFiZWw6ICJNQUlOIiwg dmFsdWU6ICJlIn0sCisgICAgICAgICAgICAgIHtsYWJlbDogIkVYVEVSTkFM IiwgdmFsdWU6ICJtIn0sCisgICAgICAgICAgICAgIHtsYWJlbDogIkVYVEVO REVEIiwgdmFsdWU6ICJ4In0sCisgICAgICAgICAgICAgXQorICAgICAgICAg IH0seworICAgICAgICAgICAgaWQ6ICd0eXBieXZhbCcsIGxhYmVsOid7eyBf KCdQYXNzZWQgYnkgVmFsdWU/JykgfX0nLAorICAgICAgICAgICAgY2VsbDog J3N3aXRjaCcsIG9wdGlvbnM6IHN3aXRjaE9wdGlvbnMsCisgICAgICAgICAg ICB0eXBlOiAnc3dpdGNoJywgbW9kZTogWydwcm9wZXJ0aWVzJywgJ2NyZWF0 ZScsICdlZGl0J10sCisgICAgICAgICAgICBkaXNhYmxlZDogJ2luU2NoZW1h V2l0aE1vZGVsQ2hlY2snLCBncm91cDogJ09wdGlvbmFsLTInLAorICAgICAg ICAgIH0seworICAgICAgICAgICAgaWQ6ICdpc19jb2xsYXRhYmxlJywgbGFi ZWw6J3t7IF8oJ0NvbGxhdGFibGU/JykgfX0nLAorICAgICAgICAgICAgY2Vs bDogJ3N3aXRjaCcsICBtaW5fdmVyc2lvbjogOTAxMDAsIGdyb3VwOiAnT3B0 aW9uYWwtMicsCisgICAgICAgICAgICB0eXBlOiAnc3dpdGNoJywgbW9kZTog Wydwcm9wZXJ0aWVzJywgJ2NyZWF0ZScsICdlZGl0J10sCisgICAgICAgICAg ICBvcHRpb25zOiBzd2l0Y2hPcHRpb25zLCBkaXNhYmxlZDogJ2luU2NoZW1h V2l0aE1vZGVsQ2hlY2snCisgICAgICAgICAgLy8gRW5kIG9mIGV4dGVuc2lv biB0YWIKKyAgICAgICAgfV0KKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6 ICdhbGlhcycsIGxhYmVsOid7eyBfKCdBbGlhcycpIH19JywgY2VsbDogJ3N0 cmluZycsCisgICAgICAgICAgdHlwZTogJ3RleHQnLCBtb2RlOiBbJ3Byb3Bl cnRpZXMnXSwKKyAgICAgICAgICBkaXNhYmxlZDogJ2luU2NoZW1hJworICAg ICAgICB9LHsKKyAgICAgICAgICBpZDogJ3R5cGVfYWNsJywgbGFiZWw6J3t7 IF8oJ1ByaXZpbGVnZXMnKSB9fScsIGNlbGw6ICdzdHJpbmcnLAorICAgICAg ICAgIHR5cGU6ICd0ZXh0JywgbW9kZTogWydwcm9wZXJ0aWVzJ10sIGdyb3Vw OiAne3sgXygnU2VjdXJpdHknKSB9fScsCisgICAgICAgICAgZGlzYWJsZWQ6 ICdpblNjaGVtYScKKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdtZW1i ZXJfbGlzdCcsIGxhYmVsOid7eyBfKCdNZW1iZXJzJykgfX0nLCBjZWxsOiAn c3RyaW5nJywKKyAgICAgICAgICB0eXBlOiAndGV4dCcsIG1vZGU6IFsncHJv cGVydGllcyddLCBncm91cDogJ3t7IF8oJ0RlZmluaXRpb24nKSB9fScsCisg ICAgICAgICAgZGlzYWJsZWQ6ICdpblNjaGVtYScsIHZpc2libGU6IGZ1bmN0 aW9uKG0pIHsKKyAgICAgICAgICAgIGlmKG0uZ2V0KCd0eXB0eXBlJykgPT09 ICdjJykgeworICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg ICAgIH0KKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICB9 CisgICAgICAgIH0seworICAgICAgICAgIGlkOiAnZW51bV9saXN0JywgbGFi ZWw6J3t7IF8oJ0xhYmVscycpIH19JywgY2VsbDogJ3N0cmluZycsCisgICAg ICAgICAgdHlwZTogJ3RleHQnLCBtb2RlOiBbJ3Byb3BlcnRpZXMnXSwKKyAg ICAgICAgICBkaXNhYmxlZDogJ2luU2NoZW1hJywgdmlzaWJsZTogZnVuY3Rp b24obSkgeworICAgICAgICAgICAgaWYobS5nZXQoJ3R5cHR5cGUnKSA9PT0g J2UnKSB7CisgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg ICAgfQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgIH0K KyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdpc19zeXNfdHlwZScsIGxh YmVsOid7eyBfKCdTeXN0ZW0gdHlwZT8nKSB9fScsIGNlbGw6ICdzd2l0Y2gn LAorICAgICAgICAgIHR5cGU6ICdzd2l0Y2gnLCBtb2RlOiBbJ3Byb3BlcnRp ZXMnXSwgb3B0aW9uczogc3dpdGNoT3B0aW9ucywKKyAgICAgICAgICBkaXNh YmxlZDogJ2luU2NoZW1hJworICAgICAgICB9LHsKKyAgICAgICAgICBpZDog J2Rlc2NyaXB0aW9uJywgbGFiZWw6J3t7IF8oJ0NvbW1lbnQnKSB9fScsIGNl bGw6ICdzdHJpbmcnLAorICAgICAgICAgIHR5cGU6ICdtdWx0aWxpbmUnLCBt b2RlOiBbJ3Byb3BlcnRpZXMnLCAnY3JlYXRlJywgJ2VkaXQnXSwKKyAgICAg ICAgICBkaXNhYmxlZDogJ2luU2NoZW1hJworICAgICAgICB9LHsKKyAgICAg ICAgICBpZDogJ3R5cGFjbCcsIGxhYmVsOiAnUHJpdmlsZWdlcycsIHR5cGU6 ICdjb2xsZWN0aW9uJywKKyAgICAgICAgICBncm91cDogJ3t7IF8oJ1NlY3Vy aXR5JykgfX0nLCBjb250cm9sOiAndW5pcXVlLWNvbC1jb2xsZWN0aW9uJywK KyAgICAgICAgICBtb2RlbDogcGdBZG1pbi5Ccm93c2VyLk5vZGUuUHJpdmls ZWdlUm9sZU1vZGVsLmV4dGVuZCh7cHJpdmlsZWdlczogWydVJ119KSwKKyAg ICAgICAgICBtb2RlOiBbJ2VkaXQnLCAnY3JlYXRlJ10sIGNhbkFkZDogdHJ1 ZSwgY2FuRGVsZXRlOiB0cnVlLAorICAgICAgICAgIHVuaXF1ZUNvbCA6IFsn Z3JhbnRlZSddLAorICAgICAgICAgIGNvbHVtbnM6IFsnZ3JhbnRlZScsICdn cmFudG9yJywgJ3ByaXZpbGVnZXMnXQorICAgICAgICB9LHsKKyAgICAgICAg ICBpZDogJ3NlY2xhYmVscycsIGxhYmVsOiAne3sgXygnU2VjdXJpdHkgTGFi ZWxzJykgfX0nLAorICAgICAgICAgIG1vZGVsOiBTZWN1cml0eU1vZGVsLCBl ZGl0YWJsZTogZmFsc2UsIHR5cGU6ICdjb2xsZWN0aW9uJywKKyAgICAgICAg ICBncm91cDogJ3t7IF8oJ1NlY3VyaXR5JykgfX0nLCBtb2RlOiBbJ2VkaXQn LCAnY3JlYXRlJ10sCisgICAgICAgICAgbWluX3ZlcnNpb246IDkwMjAwLCBj YW5BZGQ6IHRydWUsCisgICAgICAgICAgY2FuRWRpdDogZmFsc2UsIGNhbkRl bGV0ZTogdHJ1ZSwgY29udHJvbDogJ3VuaXF1ZS1jb2wtY29sbGVjdGlvbicK KyAgICAgICAgfV0sCisgICAgICAgIHZhbGlkYXRlOiBmdW5jdGlvbigpIHsK KyAgICAgICAgLy8gVmFsaWRhdGlvbiBjb2RlIGZvciByZXF1aXJlZCBmaWVs ZHMKKyAgICAgICAgICB2YXIgY2hhbmdlZEF0dHJzID0gdGhpcy5zZXNzQXR0 cnMsCisgICAgICAgICAgICAgIG1zZyA9IHVuZGVmaW5lZDsKKworICAgICAg ICAgIGlmIChfLmhhcyhjaGFuZ2VkQXR0cnMsICduYW1lJykgJiYKKyAgICAg ICAgICAgICAgICAoXy5pc1VuZGVmaW5lZCh0aGlzLmdldCgnbmFtZScpKQor ICAgICAgICAgICAgICB8fCBTdHJpbmcodGhpcy5nZXQoJ25hbWUnKSkucmVw bGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJykpIHsKKyAgICAgICAgICAg IG1zZyA9ICd7eyBfKCdOYW1lIGNhbiBub3QgYmUgZW1wdHkhJykgfX0nOwor ICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnNldCgnbmFtZScsIG1zZyk7 CisgICAgICAgICAgfSBlbHNlIGlmIChfLmhhcyhjaGFuZ2VkQXR0cnMsICdz Y2hlbWEnKSAmJgorICAgICAgICAgICAgICAgIChfLmlzVW5kZWZpbmVkKHRo aXMuZ2V0KCdzY2hlbWEnKSkKKyAgICAgICAgICAgICAgfHwgU3RyaW5nKHRo aXMuZ2V0KCdzY2hlbWEnKSkucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9 PSAnJykpIHsKKyAgICAgICAgICAgIG1zZyA9ICd7eyBfKCdTY2hlbWEgY2Fu IG5vdCBiZSBlbXB0eSEnKSB9fSc7CisgICAgICAgICAgICB0aGlzLmVycm9y TW9kZWwuc2V0KCdzY2hlbWEnLCBtc2cpOworICAgICAgICAgIH0gZWxzZSBp ZiAoXy5oYXMoY2hhbmdlZEF0dHJzLCAndHlwdHlwZScpICYmCisgICAgICAg ICAgICAgICAgKF8uaXNVbmRlZmluZWQodGhpcy5nZXQoJ3R5cHR5cGUnKSkK KyAgICAgICAgICAgICAgfHwgU3RyaW5nKHRoaXMuZ2V0KCduYW1lJykpLnJl cGxhY2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycpKSB7CisgICAgICAgICAg ICBtc2cgPSAne3sgXygnVHlwZSBjYW4gbm90IGJlIGVtcHR5IScpIH19JzsK KyAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ3R5cHR5cGUnLCBt c2cpOworICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5nZXQoJ3R5cHR5cGUn KSA9PSAncicgJiYKKyAgICAgICAgICAgICAgICBfLmhhcyhjaGFuZ2VkQXR0 cnMsICd0eXBuYW1lJykKKyAgICAgICAgICAgICAgJiYgKF8uaXNVbmRlZmlu ZWQodGhpcy5nZXQoJ3R5cG5hbWUnKSkKKyAgICAgICAgICAgICAgfHwgU3Ry aW5nKHRoaXMuZ2V0KCd0eXBuYW1lJykpLnJlcGxhY2UoL15ccyt8XHMrJC9n LCAnJykgPT0gJycpKSB7CisgICAgICAgICAgICBtc2cgPSAne3sgXygnU3Vi dHlwZSBOYW1lIGNhbiBub3QgYmUgZW1wdHkhJykgfX0nOworICAgICAgICAg ICAgdGhpcy5lcnJvck1vZGVsLnNldCgndHlwbmFtZScsIG1zZyk7CisgICAg ICAgICAgfSBlbHNlIGlmICh0aGlzLmdldCgndHlwdHlwZScpID09ICd4JyAm JgorICAgICAgICAgICAgICAgIF8uaGFzKGNoYW5nZWRBdHRycywgJ3R5cGlu cHV0JykKKyAgICAgICAgICAgICAgJiYgKF8uaXNVbmRlZmluZWQodGhpcy5n ZXQoJ3R5cGlucHV0JykpCisgICAgICAgICAgICAgIHx8IFN0cmluZyh0aGlz LmdldCgndHlwaW5wdXQnKSkucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9 PSAnJykpIHsKKyAgICAgICAgICAgIG1zZyA9ICd7eyBfKCdJbnB1dCBmdW5j dGlvbiBjYW4gbm90IGJlIGVtcHR5IScpIH19JzsKKyAgICAgICAgICAgIHRo aXMuZXJyb3JNb2RlbC5zZXQoJ3R5cGlucHV0JywgbXNnKTsKKyAgICAgICAg ICB9IGVsc2UgaWYgKHRoaXMuZ2V0KCd0eXB0eXBlJykgPT0gJ3gnICYmCisg ICAgICAgICAgICAgICAgXy5oYXMoY2hhbmdlZEF0dHJzLCAndHlwb3V0cHV0 JykKKyAgICAgICAgICAgICAgJiYgKF8uaXNVbmRlZmluZWQodGhpcy5nZXQo J3R5cG91dHB1dCcpKQorICAgICAgICAgICAgICB8fCBTdHJpbmcodGhpcy5n ZXQoJ3R5cG91dHB1dCcpKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpID09 ICcnKSkgeworICAgICAgICAgICAgbXNnID0gJ3t7IF8oJ091dHB1dCBmdW5j dGlvbiBjYW4gbm90IGJlIGVtcHR5IScpIH19JzsKKyAgICAgICAgICAgIHRo aXMuZXJyb3JNb2RlbC5zZXQoJ3R5cG91dHB1dCcsIG1zZyk7CisgICAgICAg ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC51bnNl dCgnbmFtZScpOworICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnVuc2V0 KCdzY2hlbWEnKTsKKyAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC51bnNl dCgndHlwdHlwZScpOworICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnVu c2V0KCd0eXBuYW1lJyk7CisgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwu dW5zZXQoJ3R5cGlucHV0Jyk7CisgICAgICAgICAgICB0aGlzLmVycm9yTW9k ZWwudW5zZXQoJ3R5cG91dHB1dCcpOworICAgICAgICAgIH0KKyAgICAgICAg ICByZXR1cm4gbnVsbDsKKyAgICAgICAgfSwKKyAgICAgICAgLy8gV2Ugd2ls bCBkaXNhYmxlIGV2ZXJ5dGhpbmcgaWYgd2UgYXJlIHVuZGVyIGNhdGFsb2cg bm9kZQorICAgICAgICBpblNjaGVtYTogZnVuY3Rpb24oKSB7CisgICAgICAg ICAgaWYodGhpcy5ub2RlX2luZm8gJiYgICdjYXRhbG9nJyBpbiB0aGlzLm5v ZGVfaW5mbykKKyAgICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gdHJ1 ZTsKKyAgICAgICAgICB9CisgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg ICAgICB9LAorICAgICAgICAvLyBXZSB3aWxsIGNoZWNrIGlmIHdlIGFyZSB1 bmRlciBzY2hlbWEgbm9kZSAmIGluICdjcmVhdGUnIG1vZGUKKyAgICAgICAg aW5TY2hlbWFXaXRoTW9kZWxDaGVjazogZnVuY3Rpb24obSkgeworICAgICAg ICAgIGlmKHRoaXMubm9kZV9pbmZvICYmICAnc2NoZW1hJyBpbiB0aGlzLm5v ZGVfaW5mbykKKyAgICAgICAgICB7CisgICAgICAgICAgICAvLyBXZSB3aWxs IGRpc2JhbGUgY29udHJvbCBpZiBpdCdzIGluICdlZGl0JyBtb2RlCisgICAg ICAgICAgICBpZiAobS5pc05ldygpKSB7CisgICAgICAgICAgICAgIHJldHVy biBmYWxzZTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg IHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgfQor ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9LAorICAgICAgICAv LyBXZSB3YW50IHRvIGVuYWJsZSBvbmx5IGluIGVkaXQgbW9kZQorICAgICAg ICBpblNjaGVtYVdpdGhFZGl0TW9kZTogZnVuY3Rpb24obSkgeworICAgICAg ICAgIGlmKHRoaXMubm9kZV9pbmZvICYmICAnc2NoZW1hJyBpbiB0aGlzLm5v ZGVfaW5mbykKKyAgICAgICAgICB7CisgICAgICAgICAgICAvLyBXZSB3aWxs IGRpc2JhbGUgY29udHJvbCBpZiBpdCdzIGluICdlZGl0JyBtb2RlCisgICAg ICAgICAgICBpZiAobS5pc05ldygpKSB7CisgICAgICAgICAgICAgIHJldHVy biB0cnVlOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgfQor ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9LAorICAgICAgICAv LyBGdW5jdGlvbiB3aWxsIGhlbHAgdXMgdG8gZmlsbCBjb21ib2JveAorICAg ICAgICBleHRlcm5hbF9mdW5jX2NvbWJvOiBmdW5jdGlvbihkKSB7CisgICAg ICAgICAgIHZhciByZXN1bHQgPSBbXTsKKyAgICAgICAgICAgXy5lYWNoKGQs IGZ1bmN0aW9uKGl0ZW0pIHsKKyAgICAgICAgICAgICAvLyBpZiB0eXBlIGZy b20gc2VsZWN0ZWQgZnJvbSBjb21ib2JveCBtYXRjaGVzIGluIG9wdGlvbnMK KyAgICAgICAgICAgICBpZiAoIGl0ZW0uY2J0eXBlID09ICdhbGwnICkgewor ICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goaXRlbSk7CisgICAgICAgICAg ICAgfQorICAgICAgICAgICB9KTsKKyAgICAgICAgICAgcmV0dXJuIHJlc3Vs dDsKKyAgICAgICAgfQorICAgICAgfSksCisgICAgICBjYW5DcmVhdGU6IGZ1 bmN0aW9uKGl0ZW1EYXRhLCBpdGVtLCBkYXRhKSB7CisgICAgICAgICAgLy9J ZiBjaGVjayBpcyBmYWxzZSB0aGVuICwgd2Ugd2lsbCBhbGxvdyBjcmVhdGUg bWVudQorICAgICAgICAgIGlmIChkYXRhICYmIGRhdGEuY2hlY2sgPT0gZmFs c2UpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgIHZh ciB0ID0gcGdCcm93c2VyLnRyZWUsIGkgPSBpdGVtLCBkID0gaXRlbURhdGE7 CisgICAgICAgICAgLy8gVG8gaXRlcmF0ZSBvdmVyIHRyZWUgdG8gY2hlY2sg cGFyZW50IG5vZGUKKyAgICAgICAgICB3aGlsZSAoaSkgeworICAgICAgICAg ICAgLy8gSWYgaXQgaXMgc2NoZW1hIHRoZW4gYWxsb3cgdXNlciB0byBjcmVh dGUgdGFibGUKKyAgICAgICAgICAgIGlmIChfLmluZGV4T2YoWydzY2hlbWEn XSwgZC5fdHlwZSkgPiAtMSkKKyAgICAgICAgICAgICAgcmV0dXJuIHRydWU7 CisKKyAgICAgICAgICAgIGlmICgnY29sbC10eXBlJyA9PSBkLl90eXBlKSB7 CisgICAgICAgICAgICAgIC8vQ2hlY2sgaWYgd2UgYXJlIG5vdCBjaGlsZCBv ZiBjYXRhbG9nCisgICAgICAgICAgICAgIHByZXZfaSA9IHQuaGFzUGFyZW50 KGkpID8gdC5wYXJlbnQoaSkgOiBudWxsOworICAgICAgICAgICAgICBwcmV2 X2QgPSBwcmV2X2kgPyB0Lml0ZW1EYXRhKHByZXZfaSkgOiBudWxsOworICAg ICAgICAgICAgICBpZiggcHJldl9kLl90eXBlID09ICdjYXRhbG9nJykgewor ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAg fSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaSA9IHQu aGFzUGFyZW50KGkpID8gdC5wYXJlbnQoaSkgOiBudWxsOworICAgICAgICAg ICAgZCA9IGkgPyB0Lml0ZW1EYXRhKGkpIDogbnVsbDsKKyAgICAgICAgICB9 CisgICAgICAgICAgLy8gYnkgZGVmYXVsdCB3ZSBkbyBub3Qgd2FudCB0byBh bGxvdyBjcmVhdGUgbWVudQorICAgICAgICAgIHJldHVybiB0cnVlOworICAg ICAgfQorICB9KTsKKyAgfQorICByZXR1cm4gcGdCcm93c2VyLk5vZGVzWyd0 eXBlJ107Cit9KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy90eXBlcy90ZW1wbGF0ZXMvdHlwZS9z cWwvOS4xX3BsdXMvYWNsLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3R5cGVzL3Rl bXBsYXRlcy90eXBlL3NxbC85LjFfcGx1cy9hY2wuc3FsCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5MTVlM2EKLS0tIC9kZXYvbnVs bAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy90eXBlcy90ZW1wbGF0ZXMvdHlwZS9z cWwvOS4xX3BsdXMvYWNsLnNxbApAQCAtMCwwICsxLDI5IEBACitTRUxFQ1Qg J3R5cGFjbCcgYXMgZGVmdHlwZSwgQ09BTEVTQ0UoZ3Qucm9sbmFtZSwgJ3B1 YmxpYycpIGdyYW50ZWUsIGcucm9sbmFtZSBncmFudG9yLCBhcnJheV9hZ2co cHJpdmlsZWdlX3R5cGUpIGFzIHByaXZpbGVnZXMsIGFycmF5X2FnZyhpc19n cmFudGFibGUpIGFzIGdyYW50YWJsZQorRlJPTQorICAgIChTRUxFQ1QKKyAg ICAgICAgZC5ncmFudGVlLCBkLmdyYW50b3IsIGQuaXNfZ3JhbnRhYmxlLAor ICAgICAgICBDQVNFIGQucHJpdmlsZWdlX3R5cGUKKyAgICAgICAgV0hFTiAn VVNBR0UnIFRIRU4gJ1UnCisgICAgICAgIEVMU0UgJ1VOS05PV04nCisgICAg ICAgIEVORCBBUyBwcml2aWxlZ2VfdHlwZQorICAgIEZST00KKyAgICAgICAg KFNFTEVDVCB0LnR5cGFjbAorICAgICAgICAgICAgRlJPTSBwZ190eXBlIHQK KyAgICAgICAgICAgIExFRlQgT1VURVIgSk9JTiBwZ190eXBlIGUgT04gZS5v aWQ9dC50eXBlbGVtCisgICAgICAgICAgICBMRUZUIE9VVEVSIEpPSU4gcGdf Y2xhc3MgY3QgT04gY3Qub2lkPXQudHlwcmVsaWQgQU5EIGN0LnJlbGtpbmQg PD4gJ2MnCisgICAgICAgICAgICBMRUZUIE9VVEVSIEpPSU4gcGdfZGVzY3Jp cHRpb24gZGVzIE9OIChkZXMub2Jqb2lkPXQub2lkIEFORCBkZXMuY2xhc3Nv aWQ9J3BnX3R5cGUnOjpyZWdjbGFzcykKKyAgICAgICAgICAgIFdIRVJFIHQu dHlwdHlwZSAhPSAnZCcgQU5EIHQudHlwbmFtZSBOT1QgTElLRSBFJ1xcXyUn IEFORCB0LnR5cG5hbWVzcGFjZSA9IHt7c2NpZH19OjpvaWQKKyAgICAgICAg ICAgIHslIGlmIHRpZCAlfQorICAgICAgICAgICAgQU5EIHQub2lkID0ge3t0 aWR9fTo6b2lkCisgICAgICAgICAgICB7JSBlbmRpZiAlfQorICAgICAgICAp IGFjbCwKKyAgICAgICAgKFNFTEVDVCAoZCkuZ3JhbnRlZSBBUyBncmFudGVl LCAoZCkuZ3JhbnRvciBBUyBncmFudG9yLCAoZCkuaXNfZ3JhbnRhYmxlCisg ICAgICAgICAgICBBUyBpc19ncmFudGFibGUsIChkKS5wcml2aWxlZ2VfdHlw ZSBBUyBwcml2aWxlZ2VfdHlwZSBGUk9NIChTRUxFQ1QKKyAgICAgICAgICAg IGFjbGV4cGxvZGUodC50eXBhY2wpIGFzIGQgRlJPTSBwZ190eXBlIHQgV0hF UkUgdC5vaWQgPSB7e3RpZH19OjpvaWQpIGEpIGQKKyAgICAgICAgKSBkCisg ICAgTEVGVCBKT0lOIHBnX2NhdGFsb2cucGdfcm9sZXMgZyBPTiAoZC5ncmFu dG9yID0gZy5vaWQpCisgICAgTEVGVCBKT0lOIHBnX2NhdGFsb2cucGdfcm9s ZXMgZ3QgT04gKGQuZ3JhbnRlZSA9IGd0Lm9pZCkKK0dST1VQIEJZIGcucm9s bmFtZSwgZ3Qucm9sbmFtZQorCisKKwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdHlwZXMvdGVtcGxhdGVzL3R5cGUvc3FsLzkuMV9wbHVzL2FkZGl0 aW9uYWxfcHJvcGVydGllcy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90eXBlcy90 ZW1wbGF0ZXMvdHlwZS9zcWwvOS4xX3BsdXMvYWRkaXRpb25hbF9wcm9wZXJ0 aWVzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5l ZWJjMGJiCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlw ZXMvdGVtcGxhdGVzL3R5cGUvc3FsLzkuMV9wbHVzL2FkZGl0aW9uYWxfcHJv cGVydGllcy5zcWwKQEAgLTAsMCArMSw0MCBAQAoreyMgVGhlIFNRTCBnaXZl biBiZWxvdyB3aWxsIGZldGNoIGNvbXBvc2l0ZSB0eXBlI30KK3slIGlmIHR5 cGUgPT0gJ2MnICV9CitTRUxFQ1QgYXR0bmFtZSwgZm9ybWF0X3R5cGUodC5v aWQsTlVMTCkgQVMgdHlwbmFtZSwgYXR0bmRpbXMsIGF0dHR5cG1vZCwgbnNw Lm5zcG5hbWUsCisoU0VMRUNUIENPVU5UKDEpIGZyb20gcGdfdHlwZSB0MiBX SEVSRSB0Mi50eXBuYW1lPXQudHlwbmFtZSkgPiAxIEFTIGlzZHVwCistLSBN aW4gOS4xIHN0YXJ0CissY29sbG5hbWUsIG5zcGMubnNwbmFtZSBhcyBjb2xs bnNwbmFtZQorLS0gRW5kCissIGF0dC5hdHRyZWxpZAorRlJPTSBwZ19hdHRy aWJ1dGUgYXR0CitKT0lOIHBnX3R5cGUgdCBPTiB0Lm9pZD1hdHR0eXBpZAor Sk9JTiBwZ19uYW1lc3BhY2UgbnNwIE9OIHQudHlwbmFtZXNwYWNlPW5zcC5v aWQKK0xFRlQgT1VURVIgSk9JTiBwZ190eXBlIGIgT04gdC50eXBlbGVtPWIu b2lkCistLSBNaW4gOS4xIHN0YXJ0CitMRUZUIE9VVEVSIEpPSU4gcGdfY29s bGF0aW9uIGMgT04gYXR0LmF0dGNvbGxhdGlvbj1jLm9pZAorTEVGVCBPVVRF UiBKT0lOIHBnX25hbWVzcGFjZSBuc3BjIE9OIGMuY29sbG5hbWVzcGFjZT1u c3BjLm9pZAorLS0gRW5kCitXSEVSRSBhdHQuYXR0cmVsaWQgPSB7e3R5cHJl bGlkfX06Om9pZAorT1JERVIgYnkgYXR0bnVtOworeyUgZW5kaWYgJX0KK3sj IFRoZSBTUUwgZ2l2ZW4gYmVsb3cgd2lsbCBmZXRjaCBlbnVtIHR5cGUjfQor eyUgaWYgdHlwZSA9PSAnZScgJX0KK1NFTEVDVCBlbnVtbGFiZWwgRlJPTSBw Z19lbnVtIFdIRVJFIGVudW10eXBpZD17e3RpZH19OjpvaWQKKy0tIE1pbiA5 LjEKK09SREVSIGJ5IGVudW1zb3J0b3JkZXIKKy0tRW5kCistLSBlbHNlCist LSBPUkRFUiBieSBvaWQKK3slIGVuZGlmICV9Cit7IyBUaGUgU1FMIGdpdmVu IGJlbG93IHdpbGwgZmV0Y2ggcmFuZ2UgdHlwZSN9Cit7JSBpZiB0eXBlID09 ICdyJyAlfQorU0VMRUNUIHJuZ3N1YnR5cGUsIHN0LnR5cG5hbWUsCitybmdj b2xsYXRpb24sIGNvbC5jb2xsbmFtZSwKK3JuZ3N1Ym9wYywgb3BjLm9wY25h bWUsCitybmdjYW5vbmljYWwsIHJuZ3N1YmRpZmYKK0ZST00gcGdfcmFuZ2UK K0xFRlQgSk9JTiBwZ190eXBlIHN0IE9OIHN0Lm9pZD1ybmdzdWJ0eXBlCitM RUZUIEpPSU4gcGdfY29sbGF0aW9uIGNvbCBPTiBjb2wub2lkPXJuZ2NvbGxh dGlvbgorTEVGVCBKT0lOIHBnX29wY2xhc3Mgb3BjIE9OIG9wYy5vaWQ9cm5n c3Vib3BjCitXSEVSRSBybmd0eXBpZD17e3RpZH19OjpvaWQ7Cit7JSBlbmRp ZiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvdGVtcGxh dGVzL3R5cGUvc3FsLzkuMV9wbHVzL2JhY2tlbmRfc3VwcG9ydC5zcWwgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy90eXBlcy90ZW1wbGF0ZXMvdHlwZS9zcWwvOS4xX3Bs dXMvYmFja2VuZF9zdXBwb3J0LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi5mMzFhMmMxCi0tLSAvZGV2L251bGwKKysrIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdHlwZXMvdGVtcGxhdGVzL3R5cGUvc3FsLzkuMV9wbHVz L2JhY2tlbmRfc3VwcG9ydC5zcWwKQEAgLTAsMCArMSwxNCBAQAorU0VMRUNU CisgICAgQ0FTRSBXSEVOIG5zcC5uc3BuYW1lIElOICgnc3lzJywgJ2Ribycs ICdpbmZvcm1hdGlvbl9zY2hlbWEnKSBUSEVOIHRydWUgRUxTRSBmYWxzZSBF TkQgQVMgZGJTdXBwb3J0CitGUk9NIHBnX25hbWVzcGFjZSBuc3AKK1dIRVJF IG5zcC5vaWQ9e3tzY2lkfX06OmludAorICAgIEFORCAoCisgICAgICAgIChu c3BuYW1lID0gJ3BnX2NhdGFsb2cnIEFORCBFWElTVFMKKyAgICAgICAgICAg IChTRUxFQ1QgMSBGUk9NIHBnX2NsYXNzIFdIRVJFIHJlbG5hbWUgPSAncGdf Y2xhc3MnIEFORCByZWxuYW1lc3BhY2UgPSBuc3Aub2lkIExJTUlUIDEpKQor ICAgICAgICBPUiAobnNwbmFtZSA9ICdwZ2FnZW50JyBBTkQgRVhJU1RTCisg ICAgICAgICAgICAoU0VMRUNUIDEgRlJPTSBwZ19jbGFzcyBXSEVSRSByZWxu YW1lID0gJ3BnYV9qb2InIEFORCByZWxuYW1lc3BhY2UgPSBuc3Aub2lkIExJ TUlUIDEpKQorICAgICAgICBPUiAobnNwbmFtZSA9ICdpbmZvcm1hdGlvbl9z Y2hlbWEnIEFORCBFWElTVFMKKyAgICAgICAgICAgIChTRUxFQ1QgMSBGUk9N IHBnX2NsYXNzIFdIRVJFIHJlbG5hbWUgPSAndGFibGVzJyBBTkQgcmVsbmFt ZXNwYWNlID0gbnNwLm9pZCBMSU1JVCAxKSkKKyAgICApCisgICAgQU5EIG5z cG5hbWUgTk9UIExJS0UgRSdwZ1xcdGVtcFxcJScKKyAgICBBTkQgbnNwbmFt ZSBOT1QgTElLRSBFJ3BnXFx0b2FzdF90ZW1wXFwlJwpcIE5vIG5ld2xpbmUg YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3R5 cGVzL3RlbXBsYXRlcy90eXBlL3NxbC85LjFfcGx1cy9jcmVhdGUuc3FsIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdHlwZXMvdGVtcGxhdGVzL3R5cGUvc3FsLzkuMV9w bHVzL2NyZWF0ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uN2Y1YzAzMAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3R5cGVzL3RlbXBsYXRlcy90eXBlL3NxbC85LjFfcGx1cy9jcmVhdGUu c3FsCkBAIC0wLDAgKzEsNjggQEAKK3slIGltcG9ydCAnbWFjcm9zL3NlY3Vy aXR5Lm1hY3JvcycgYXMgU0VDTEFCTEUgJX0KK3slIGltcG9ydCAnbWFjcm9z L3ByaXZpbGVnZS5tYWNyb3MnIGFzIFBSSVZJTEVHRSAlfQoreyMjIyAgQ29t cG9zaXRlIFR5cGUgIyMjfQoreyUgaWYgZGF0YSBhbmQgZGF0YS50eXB0eXBl ID09ICdjJyAlfQorQ1JFQVRFIFRZUEUgeyUgaWYgZGF0YS5zY2hlbWEgJX17 eyBjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEubmFtZSkgfX17JSBl bHNlICV9e3sgY29ubnxxdElkZW50KGRhdGEubmFtZSkgfX17JSBlbmRpZiAl fSBBUworICAgICh7JSBpZiBkYXRhLmNvbXBvc2l0ZSAlfXslIGZvciBkIGlu IGRhdGEuY29tcG9zaXRlICV9eyUgaWYgbG9vcC5pbmRleCAhPSAxICV9LCB7 JSBlbmRpZiAlfXt7IGNvbm58cXRJZGVudChkLm1lbWJlcl9uYW1lKSB9fSB7 eyBkLnR5cGUgfX17JSBpZiBkLmlzX3RsZW5ndGggYW5kIGQudGxlbmd0aCAl fSh7e2QudGxlbmd0aH19eyUgaWYgZC5pc19wcmVjaXNpb24gYW5kIGQucHJl Y2lzaW9uICV9LHt7ZC5wcmVjaXNpb259fXslIGVuZGlmICV9KXslIGVuZGlm ICV9eyUgaWYgZC5jb2xsYXRpb24gJX0gQ09MTEFURSB7e2QuY29sbGF0aW9u fX17JSBlbmRpZiAlfXslIGVuZGZvciAlfXslIGVuZGlmICV9KTsKK3slIGVu ZGlmICV9Cit7IyMjICBFbnVtIFR5cGUgIyMjfQoreyUgaWYgZGF0YSBhbmQg ZGF0YS50eXB0eXBlID09ICdlJyAlfQorQ1JFQVRFIFRZUEUgeyUgaWYgZGF0 YS5zY2hlbWEgJX17eyBjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEu bmFtZSkgfX17JSBlbHNlICV9e3sgY29ubnxxdElkZW50KGRhdGEubmFtZSkg fX17JSBlbmRpZiAlfSBBUyBFTlVNCisgICAgKHslIGZvciBlIGluIGRhdGEu ZW51bSAlfXslIGlmIGxvb3AuaW5kZXggIT0gMSAlfSwgeyUgZW5kaWYgJX17 eyBlLmxhYmVsfHF0TGl0ZXJhbCB9fXslIGVuZGZvciAlfSk7Cit7JSBlbmRp ZiAlfQoreyMjIyAgUmFuZ2UgVHlwZSAjIyN9Cit7JSBpZiBkYXRhIGFuZCBk YXRhLnR5cHR5cGUgPT0gJ3InICV9CitDUkVBVEUgVFlQRSB7JSBpZiBkYXRh LnNjaGVtYSAlfXt7IGNvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5u YW1lKSB9fXslIGVsc2UgJX17eyBjb25ufHF0SWRlbnQoZGF0YS5uYW1lKSB9 fXslIGVuZGlmICV9IEFTIFJBTkdFCisoeyUgaWYgZGF0YS50eXBuYW1lICV9 IFNVQlRZUEU9e3sgY29ubnxxdFR5cGVJZGVudChkYXRhLnR5cG5hbWUpIH19 eyUgZW5kaWYgJX17JSBpZiBkYXRhLmNvbGxuYW1lICV9CissIENPTExBVElP TiA9IHt7IGRhdGEuY29sbG5hbWUgfX17JSBlbmRpZiAlfXslIGlmIGRhdGEu b3BjbmFtZSAgJX0KKywgU1VCVFlQRV9PUENMQVNTID0ge3sgZGF0YS5vcGNu YW1lIH19eyUgZW5kaWYgJX17JSBpZiBkYXRhLnJuZ2Nhbm9uaWNhbCAlfQor LCBDQU5PTklDQUwgPSB7eyBkYXRhLnJuZ2Nhbm9uaWNhbCB9fXslIGVuZGlm ICV9eyUgaWYgZGF0YS5ybmdzdWJkaWZmICV9CissIFNVQlRZUEVfRElGRiA9 IHt7IGRhdGEucm5nc3ViZGlmZiB9fXslIGVuZGlmICV9ICk7Cit7JSBlbmRp ZiAlfQoreyMjIyAgRXh0ZXJuYWwgVHlwZSAjIyN9Cit7JSBpZiBkYXRhIGFu ZCBkYXRhLnR5cHR5cGUgPT0gJ3gnICV9CitDUkVBVEUgVFlQRSB7JSBpZiBk YXRhLnNjaGVtYSAlfXt7IGNvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0 YS5uYW1lKSB9fXslIGVsc2UgJX17eyBjb25ufHF0SWRlbnQoZGF0YS5uYW1l KSB9fXslIGVuZGlmICV9IEFTCisoIHslIGlmIGRhdGEudHlwaW5wdXQgJX0K K0lOUFVUID0ge3tkYXRhLnR5cGlucHV0fX17JSBlbmRpZiAlfXslIGlmIGRh dGEudHlwb3V0cHV0ICV9CissT1VUUFVUID0ge3sgZGF0YS50eXBvdXRwdXQg fX17JSBlbmRpZiAlfXslIGlmIGRhdGEudHlwcmVjZWl2ZSAlfQorLFJFQ0VJ VkUgPSB7e2RhdGEudHlwcmVjZWl2ZX19eyUgZW5kaWYgJX17JSBpZiBkYXRh LnR5cG5hbWUgJX0KKyxTRU5EID0ge3tkYXRhLnR5cHNlbmR9fXslIGVuZGlm ICV9eyUgaWYgZGF0YS50eXBtb2RpbiAlfQorLFRZUE1PRF9JTiA9IHt7ZGF0 YS50eXBtb2Rpbn19eyUgZW5kaWYgJX17JSBpZiBkYXRhLnR5cG1vZG91dCAl fQorLFRZUE1PRF9PVVQgPSB7e2RhdGEudHlwbW9kb3V0fX17JSBlbmRpZiAl fXslIGlmIGRhdGEudHlwYW5hbHl6ZSAlfQorLEFOQUxZWkUgPSB7e2RhdGEu dHlwYW5hbHl6ZX19eyUgZW5kaWYgJX17JSBpZiBkYXRhLnR5cGxlbiAlfQor LElOVEVSTkFMTEVOR1RIID0ge3tkYXRhLnR5cGxlbn19eyUgZW5kaWYgJX17 JSBpZiBkYXRhLnR5cGJ5dmFsICV9CissUEFTU0VEQllWQUxVRXslIGVuZGlm ICV9eyUgaWYgZGF0YS50eXBhbGlnbiAlfQorLEFMSUdOTUVOVCA9ICB7e2Rh dGEudHlwYWxpZ259fXslIGVuZGlmICV9eyUgaWYgZGF0YS50eXBzdG9yYWdl ICV9CissU1RPUkFHRSA9ICB7e2RhdGEudHlwc3RvcmFnZX19eyUgZW5kaWYg JX17JSBpZiBkYXRhLnR5cGNhdGVnb3J5ICV9CissQ0FURUdPUlkgPSB7e2Rh dGEudHlwY2F0ZWdvcnl9fXslIGVuZGlmICV9eyUgaWYgZGF0YS50eXBpc3By ZWZlcnJlZCAlfQorLFBSRUZFUlJFRCA9ICB7e2RhdGEudHlwaXNwcmVmZXJy ZWR9fXslIGVuZGlmICV9eyUgaWYgZGF0YS50eXBkZWZhdWx0ICV9CissREVG QVVMVCA9IHt7ZGF0YS50eXBkZWZhdWx0fX17JSBlbmRpZiAlfXslIGlmIGRh dGEuZWxlbWVudCAlfQorLEVMRU1FTlQgPSB7e2RhdGEuZWxlbWVudH19eyUg ZW5kaWYgJX17JSBpZiBkYXRhLnR5cGRlbGltICV9CissREVMSU1JVEVSID0g e3tkYXRhLnR5cGRlbGltfHF0TGl0ZXJhbH19eyUgZW5kaWYgJX17JSBpZiBk YXRhLmlzX2NvbGxhdGFibGUgJX0KKyxDT0xMQVRBQkxFID0ge3tkYXRhLmlz X2NvbGxhdGFibGV9fXslIGVuZGlmICV9ICk7Cit7JSBlbmRpZiAlfQoreyMj IyAgVHlwZSBPd25lciAjIyN9Cit7JSBpZiBkYXRhIGFuZCBkYXRhLnR5cGVv d25lciAlfQorCitBTFRFUiBUWVBFIHslIGlmIGRhdGEuc2NoZW1hICV9e3sg Y29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUpIH19eyUgZWxz ZSAlfXt7IGNvbm58cXRJZGVudChkYXRhLm5hbWUpIH19eyUgZW5kaWYgJX0K KyAgICBPV05FUiBUTyB7e2RhdGEudHlwZW93bmVyfX07Cit7JSBlbmRpZiAl fQoreyMjIyAgVHlwZSBDb21tZW50cyAjIyN9Cit7JSBpZiBkYXRhIGFuZCBk YXRhLmRlc2NyaXB0aW9uICV9CisKK0NPTU1FTlQgT04gVFlQRSB7JSBpZiBk YXRhLnNjaGVtYSAlfXt7IGNvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0 YS5uYW1lKSB9fXslIGVsc2UgJX17eyBjb25ufHF0SWRlbnQoZGF0YS5uYW1l KSB9fXslIGVuZGlmICV9IElTIHt7ZGF0YS5kZXNjcmlwdGlvbnxxdExpdGVy YWx9fTsKK3slIGVuZGlmICV9Cit7IyMjICBTZWN1cml0eSBMYWJsZXMgIyMj fQoreyUgaWYgZGF0YS5zZWNsYWJlbHMgJX0KKworeyUgZm9yIHIgaW4gZGF0 YS5zZWNsYWJlbHMgJX0KK3t7IFNFQ0xBQkxFLkFQUExZKGNvbm4sICdUWVBF JywgZGF0YS5uYW1lLCByLnByb3ZpZGVyLCByLnNlY3VyaXR5X2xhYmVsKSB9 fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyMjIyAgQUNMICMjI30K K3slIGlmIGRhdGEudHlwYWNsICV9CisKK3slIGZvciBwcml2IGluIGRhdGEu dHlwYWNsICV9Cit7eyBQUklWSUxFR0UuQVBQTFkoY29ubiwgJ1RZUEUnLCBw cml2LmdyYW50ZWUsIGRhdGEubmFtZSwgcHJpdi53aXRob3V0X2dyYW50LCBw cml2LndpdGhfZ3JhbnQpIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9 ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdHlwZXMvdGVtcGxhdGVzL3R5cGUvc3FsLzkuMV9wbHVz L2RlbGV0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90eXBlcy90ZW1wbGF0ZXMv dHlwZS9zcWwvOS4xX3BsdXMvZGVsZXRlLnNxbApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi4xN2Q0ZGExCi0tLSAvZGV2L251bGwKKysr IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvdGVtcGxhdGVzL3R5cGUvc3FsLzku MV9wbHVzL2RlbGV0ZS5zcWwKQEAgLTAsMCArMSBAQAorRFJPUCBUWVBFIHt7 IGNvbm58cXRJZGVudChuYW1lKSB9fXslIGlmIGNhc2NhZGUlfSBDQVNDQURF eyUgZW5kaWYgJX07ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvdGVtcGxhdGVzL3R5cGUv c3FsLzkuMV9wbHVzL2dldF9jb2xsYXRpb25zLnNxbCBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3R5cGVzL3RlbXBsYXRlcy90eXBlL3NxbC85LjFfcGx1cy9nZXRfY29s bGF0aW9ucy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uNGIwMTY5YgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3R5cGVzL3RlbXBsYXRlcy90eXBlL3NxbC85LjFfcGx1cy9nZXRfY29sbGF0 aW9ucy5zcWwKQEAgLTAsMCArMSw3IEBACitTRUxFQ1QgLS1uc3BuYW1lLCBj b2xsbmFtZSwKKyAgICBDQVNFIFdIRU4gbGVuZ3RoKG5zcG5hbWUpID4gMCBB TkQgbGVuZ3RoKGNvbGxuYW1lKSA+IDAgIFRIRU4KKyAgICAgICAgY29uY2F0 KHF1b3RlX2lkZW50KG5zcG5hbWUpLCAnLicsIHF1b3RlX2lkZW50KGNvbGxu YW1lKSkKKyAgICBFTFNFICcnIEVORCBBUyBjb2xsYXRpb24KK0ZST00gcGdf Y29sbGF0aW9uIGMsIHBnX25hbWVzcGFjZSBuCitXSEVSRSBjLmNvbGxuYW1l c3BhY2U9bi5vaWQKK09SREVSIEJZIG5zcG5hbWUsIGNvbGxuYW1lOwpcIE5v IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL3R5cGVzL3RlbXBsYXRlcy90eXBlL3NxbC85LjFfcGx1cy9nZXRf ZXh0ZXJuYWxfZnVuY3Rpb25zLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3R5cGVz L3RlbXBsYXRlcy90eXBlL3NxbC85LjFfcGx1cy9nZXRfZXh0ZXJuYWxfZnVu Y3Rpb25zLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li44NTQ5NGRiCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dHlwZXMvdGVtcGxhdGVzL3R5cGUvc3FsLzkuMV9wbHVzL2dldF9leHRlcm5h bF9mdW5jdGlvbnMuc3FsCkBAIC0wLDAgKzEsNDAgQEAKK3sjIyMgSW5wdXQv T3V0cHV0L1NlbmQvUmVjZWl2ZS9BbmFseXplIGZ1bmN0aW9uIGxpc3QgYWxz byBhcHBlbmQgaW50byBUeXBNb2RlSU4vVHlwTW9kT1VUICMjI30KK3slIGlm IGV4dGZ1bmMgJX0KK1NFTEVDVCBwcm9uYW1lLCBuc3BuYW1lLAorICAgIENB U0UgV0hFTiBsZW5ndGgobnNwbmFtZSkgPiAwIEFORCBsZW5ndGgocHJvbmFt ZSkgPiAwICBUSEVOCisgICAgICAgIGNvbmNhdChxdW90ZV9pZGVudChuc3Bu YW1lKSwgJy4nLCBxdW90ZV9pZGVudChwcm9uYW1lKSkKKyAgICBFTFNFICcn IEVORCBBUyBmdW5jCitGUk9NICgKKyAgICBTRUxFQ1QgcHJvbmFtZSwgbnNw bmFtZSwgbWF4KHByb2FyZ3R5cGVzWzBdKSBBUyBhcmcwLCBtYXgocHJvYXJn dHlwZXNbMV0pIEFTIGFyZzEKK0ZST00gcGdfcHJvYyBwCisgICAgSk9JTiBw Z19uYW1lc3BhY2UgbiBPTiBuLm9pZD1wcm9uYW1lc3BhY2UKK0dST1VQIEJZ IHByb25hbWUsIG5zcG5hbWUKK0hBVklORyBjb3VudChwcm9uYW1lKSA9IDEg ICApIEFTIHVuaXF1ZWZ1bmMKK1dIRVJFIGFyZzAgPD4gMCBBTkQgYXJnMSA9 IDA7Cit7JSBlbmRpZiAlfQoreyMjIyBUeXBtb2RJTiBsaXN0ICMjI30KK3sl IGlmIHR5cGVtb2RpbiAlfQorU0VMRUNUIHByb25hbWUsIG5zcG5hbWUsCisg ICAgQ0FTRSBXSEVOIGxlbmd0aChuc3BuYW1lKSA+IDAgQU5EIGxlbmd0aChw cm9uYW1lKSA+IDAgIFRIRU4KKyAgICAgICAgY29uY2F0KHF1b3RlX2lkZW50 KG5zcG5hbWUpLCAnLicsIHF1b3RlX2lkZW50KHByb25hbWUpKQorICAgIEVM U0UgJycgRU5EIEFTIGZ1bmMKK0ZST00gcGdfcHJvYyBwCisgICAgSk9JTiBw Z19uYW1lc3BhY2UgbiBPTiBuLm9pZD1wcm9uYW1lc3BhY2UKK1dIRVJFIHBy b3JldHR5cGU9KFNFTEVDVCBvaWQgRlJPTSBwZ190eXBlIFdIRVJFIHR5cG5h bWU9J2ludDQnKQorICAgIEFORCBwcm9hcmd0eXBlc1swXT0oU0VMRUNUIG9p ZCBGUk9NIHBnX3R5cGUgV0hFUkUgdHlwbmFtZT0nX2NzdHJpbmcnKQorICAg IEFORCBwcm9hcmd0eXBlc1sxXSBJUyBOVUxMCitPUkRFUiBCWSBuc3BuYW1l LCBwcm9uYW1lOworeyUgZW5kaWYgJX0KK3sjIyMgVHlwbW9kT1VUIGxpc3Qg IyMjfQoreyUgaWYgdHlwZW1vZG91dCAlfQorU0VMRUNUIHByb25hbWUsIG5z cG5hbWUsCisgICAgQ0FTRSBXSEVOIGxlbmd0aChuc3BuYW1lKSA+IDAgQU5E IGxlbmd0aChwcm9uYW1lKSA+IDAgIFRIRU4KKyAgICAgICAgY29uY2F0KHF1 b3RlX2lkZW50KG5zcG5hbWUpLCAnLicsIHF1b3RlX2lkZW50KHByb25hbWUp KQorICAgIEVMU0UgJycgRU5EIEFTIGZ1bmMKK0ZST00gcGdfcHJvYyBwCisg ICAgSk9JTiBwZ19uYW1lc3BhY2UgbiBPTiBuLm9pZD1wcm9uYW1lc3BhY2UK K1dIRVJFIHByb3JldHR5cGU9KFNFTEVDVCBvaWQgRlJPTSBwZ190eXBlIFdI RVJFIHR5cG5hbWU9J2NzdHJpbmcnKQorICAgIEFORCBwcm9hcmd0eXBlc1sw XT0oU0VMRUNUIG9pZCBGUk9NIHBnX3R5cGUgV0hFUkUgdHlwbmFtZT0naW50 NCcpCisgICAgQU5EIHByb2FyZ3R5cGVzWzFdIElTIE5VTEwKK09SREVSIEJZ IG5zcG5hbWUsIHByb25hbWU7Cit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdHlwZXMvdGVtcGxhdGVzL3R5cGUvc3FsLzkuMV9w bHVzL2dldF9uYW1lLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3R5cGVzL3RlbXBs YXRlcy90eXBlL3NxbC85LjFfcGx1cy9nZXRfbmFtZS5zcWwKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDM2OGYwZgotLS0gL2Rldi9u dWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3R5cGVzL3RlbXBsYXRlcy90eXBl L3NxbC85LjFfcGx1cy9nZXRfbmFtZS5zcWwKQEAgLTAsMCArMSwzIEBACitT RUxFQ1QgdC50eXBuYW1lIEFTIG5hbWUKK0ZST00gcGdfdHlwZSB0CitXSEVS RSB0Lm9pZCA9IHt7dGlkfX06Om9pZDsKXCBObyBuZXdsaW5lIGF0IGVuZCBv ZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90eXBlcy90ZW1w bGF0ZXMvdHlwZS9zcWwvOS4xX3BsdXMvZ2V0X29pZC5zcWwgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy90eXBlcy90ZW1wbGF0ZXMvdHlwZS9zcWwvOS4xX3BsdXMvZ2V0 X29pZC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u MTRmNzk1MAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3R5 cGVzL3RlbXBsYXRlcy90eXBlL3NxbC85LjFfcGx1cy9nZXRfb2lkLnNxbApA QCAtMCwwICsxLDExIEBACit7IyBCZWxvdyB3aWxsIHByb3ZpZGUgb2lkIGZv ciBuZXdseSBjcmVhdGVkIHR5cGUgI30KK1NFTEVDVCB0Lm9pZAorRlJPTSBw Z190eXBlIHQKKyAgICBMRUZUIE9VVEVSIEpPSU4gcGdfdHlwZSBlIE9OIGUu b2lkPXQudHlwZWxlbQorICAgIExFRlQgT1VURVIgSk9JTiBwZ19jbGFzcyBj dCBPTiBjdC5vaWQ9dC50eXByZWxpZCBBTkQgY3QucmVsa2luZCA8PiAnYycK KyAgICBMRUZUIE9VVEVSIEpPSU4gcGdfZGVzY3JpcHRpb24gZGVzIE9OIChk ZXMub2Jqb2lkPXQub2lkIEFORCBkZXMuY2xhc3NvaWQ9J3BnX3R5cGUnOjpy ZWdjbGFzcykKK1dIRVJFIHQudHlwdHlwZSAhPSAnZCcgQU5EIHQudHlwbmFt ZSBOT1QgTElLRSBFJ1xcXyUnIEFORCB0LnR5cG5hbWVzcGFjZSA9IHt7c2Np ZH19OjpvaWQKK3slIGlmIGRhdGEgJX0KKyAgICBBTkQgdC50eXBuYW1lID0g e3tkYXRhLm5hbWV8cXRMaXRlcmFsfX0KK3slIGVuZGlmICV9CitPUkRFUiBC WSB0LnR5cG5hbWU7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvdGVtcGxhdGVzL3R5cGUv c3FsLzkuMV9wbHVzL2dldF9zdWJ0eXBlcy5zcWwgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy90eXBlcy90ZW1wbGF0ZXMvdHlwZS9zcWwvOS4xX3BsdXMvZ2V0X3N1YnR5 cGVzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43 NTI3MWZlCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlw ZXMvdGVtcGxhdGVzL3R5cGUvc3FsLzkuMV9wbHVzL2dldF9zdWJ0eXBlcy5z cWwKQEAgLTAsMCArMSw1NiBAQAoreyMjIyBUbyBmaWxsIHN1YnR5cGUgY29t Ym9ib3ggIyMjfQoreyUgaWYgc3VidHlwZSAlfQorU0VMRUNUIERJU1RJTkNU IHR5cC50eXBuYW1lIEFTIHN0eXBlLAorICAgIChDQVNFIFdIRU4gdHlwLnR5 cGNvbGxhdGlvbiA+IDAgVEhFTiB0cnVlIEVMU0UgZmFsc2UgRU5EKSBBUyBp c19jb2xsYXRlCitGUk9NIHBnX29wY2xhc3Mgb3BjCisgICAgSk9JTiBwZ190 eXBlIHR5cCBPTiBvcGMub3BjaW50eXBlID0gdHlwLm9pZAorV0hFUkUgb3Bj Lm9wY21ldGhvZCA9IDQwMworT1JERVIgQlkgMQoreyUgZW5kaWYgJX0KK3sj IyMgVG8gZmlsbCBzdWJ0eXBlIG9wY2xhc3MgY29tYm9ib3ggIyMjfQoreyUg aWYgc3VidHlwZV9vcGNsYXNzIGFuZCBkYXRhIGFuZCBkYXRhLnR5cG5hbWUg JX0KK1NFTEVDVCBvcGMub3BjbmFtZQorRlJPTSBwZ19vcGNsYXNzIG9wYwor ICAgIEpPSU4gcGdfdHlwZSB0eXAgT04gb3BjLm9wY2ludHlwZT10eXAub2lk CisgICAgQU5EIHR5cC50eXBuYW1lID0ge3sgZGF0YS50eXBuYW1lfHF0TGl0 ZXJhbCB9fQorV0hFUkUgb3BjLm9wY21ldGhvZCA9IDQwMworT1JERVIgQlkg b3BjbmFtZTsKK3slIGVuZGlmICV9Cit7IyMjIFRvIGZldGNoIG9wY2ludHR5 cGUgZnJvbSBzdWJ0eXBlIG9wY2xhc3MgIyMjfQoreyUgaWYgZ2V0X29wY2lu dHlwZSBhbmQgZGF0YSBhbmQgZGF0YS50eXBuYW1lIGFuZCBkYXRhLm9wY25h bWUgJX0KK1NFTEVDVCBvcGMub3BjaW50eXBlCitGUk9NIHBnX29wY2xhc3Mg b3BjCisgICAgSk9JTiBwZ190eXBlIHR5cCBPTiBvcGMub3BjaW50eXBlPXR5 cC5vaWQKKyAgICBBTkQgdHlwLnR5cG5hbWUgPSB7eyBkYXRhLnR5cG5hbWV8 cXRMaXRlcmFsIH19CitXSEVSRSBvcGMub3BjbWV0aG9kID0gNDAzCisgICAg QU5EIG9wYy5vcGNuYW1lID0ge3sgZGF0YS5vcGNuYW1lfHF0TGl0ZXJhbCB9 fQorT1JERVIgQlkgb3BjbmFtZTsKK3slIGVuZGlmICV9Cit7IyMjIFRvIGZp bGwgc3VidHlwZSBkaWZmIGZ1bmN0aW9uIGNvbWJvYm94ICMjI30KK3slIGlm IG9wY2ludHlwZSAlfQorU0VMRUNUIHByb25hbWUsIG5zcG5hbWUsCisgICAg Q0FTRSBXSEVOIGxlbmd0aChuc3BuYW1lKSA+IDAgQU5EIGxlbmd0aChwcm9u YW1lKSA+IDAgIFRIRU4KKyAgICAgICAgY29uY2F0KHF1b3RlX2lkZW50KG5z cG5hbWUpLCAnLicsIHF1b3RlX2lkZW50KHByb25hbWUpKQorICAgIEVMU0Ug JycgRU5EIEFTIHN0eXBkaWZmCitGUk9NIHBnX3Byb2MKKyAgICBKT0lOIHBn X25hbWVzcGFjZSBuIE9OIG4ub2lkPXByb25hbWVzcGFjZQorV0hFUkUgcHJv cmV0dHlwZSA9IDcwMQorICAgIEFORCBwcm9hcmd0eXBlcyA9ICd7e29wY2lu dHlwZX19IHt7b3BjaW50eXBlfX0nCitPUkRFUiBCWSBwcm9uYW1lOworeyUg ZW5kaWYgJX0KK3sjIyMgVG8gZmlsbCBjYW5vbmljYWwgY29tYm9ib3ggIyMj fQoreyUgaWYgZ2V0b2lkICV9CitTRUxFQ1Qgb2lkIEZST00gcGdfdHlwZQor V0hFUkUgdHlwbmFtZSA9IHt7IGRhdGEubmFtZXxxdExpdGVyYWwgfX0KK3sl IGVuZGlmICV9Cit7JSBpZiBjYW5vbmljYWwgYW5kIG9pZCAlfQorU0VMRUNU IHByb25hbWUsIG5zcG5hbWUsCisgICAgQ0FTRSBXSEVOIGxlbmd0aChuc3Bu YW1lKSA+IDAgQU5EIGxlbmd0aChwcm9uYW1lKSA+IDAgIFRIRU4KKyAgICAg ICAgY29uY2F0KHF1b3RlX2lkZW50KG5zcG5hbWUpLCAnLicsIHF1b3RlX2lk ZW50KHByb25hbWUpKQorICAgIEVMU0UgJycgRU5EIEFTIGNhbm9uaWNhbAor RlJPTSBwZ19wcm9jCisgICAgSk9JTiBwZ19uYW1lc3BhY2UgbiBPTiBuLm9p ZD1wcm9uYW1lc3BhY2UKK1dIRVJFIHByb3JldHR5cGU9IHt7IG9pZCB9fQor ICAgIEFORCBwcm9hcmd0eXBlcyA9ICd7eyBvaWQgfX0nCitPUkRFUiBCWSBw cm9uYW1lOworeyUgZW5kaWYgJX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm aWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90eXBlcy90ZW1wbGF0 ZXMvdHlwZS9zcWwvOS4xX3BsdXMvZ2V0X3R5cGVzLnNxbCBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL3R5cGVzL3RlbXBsYXRlcy90eXBlL3NxbC85LjFfcGx1cy9nZXRf dHlwZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LmE1ZDM1MmQKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90 eXBlcy90ZW1wbGF0ZXMvdHlwZS9zcWwvOS4xX3BsdXMvZ2V0X3R5cGVzLnNx bApAQCAtMCwwICsxLDEwIEBACitTRUxFQ1QgKiBGUk9NCisgICAgKFNFTEVD VCBmb3JtYXRfdHlwZSh0Lm9pZCxOVUxMKSBBUyB0eXBuYW1lLAorICAgIENB U0UgV0hFTiB0eXBlbGVtID4gMCBUSEVOIHR5cGVsZW0gRUxTRSB0Lm9pZCBF TkQgQVMgZWxlbW9pZCwKKyAgICB0eXBsZW4sIHR5cHR5cGUsIHQub2lkLCBu c3BuYW1lLAorICAgIChTRUxFQ1QgQ09VTlQoMSkgRlJPTSBwZ190eXBlIHQy IFdIRVJFIHQyLnR5cG5hbWUgPSB0LnR5cG5hbWUpID4gMSBBUyBpc2R1cAor RlJPTSBwZ190eXBlIHQKKyAgIEpPSU4gcGdfbmFtZXNwYWNlIG5zcCBPTiB0 eXBuYW1lc3BhY2U9bnNwLm9pZAorV0hFUkUgKE5PVCAodHlwbmFtZSA9ICd1 bmtub3duJyBBTkQgbnNwbmFtZSA9ICdwZ19jYXRhbG9nJykpIEFORCB0eXBp c2RlZmluZWQgQU5EIHR5cHR5cGUgSU4gKCdiJywgJ2MnLCAnZCcsICdlJywg J3InKUFORCBOT1QgRVhJU1RTIChzZWxlY3QgMSBmcm9tIHBnX2NsYXNzIHdo ZXJlIHJlbG5hbWVzcGFjZT10eXBuYW1lc3BhY2UgYW5kIHJlbG5hbWUgPSB0 eXBuYW1lIGFuZCByZWxraW5kICE9ICdjJykgQU5EICh0eXBuYW1lIG5vdCBs aWtlICdfJScgT1IgTk9UIEVYSVNUUyAoc2VsZWN0IDEgZnJvbSBwZ19jbGFz cyB3aGVyZSByZWxuYW1lc3BhY2U9dHlwbmFtZXNwYWNlIGFuZCByZWxuYW1l ID0gc3Vic3RyaW5nKHR5cG5hbWUgZnJvbSAyKTo6bmFtZSBhbmQgcmVsa2lu ZCAhPSAnYycpKSAgQU5EIG5zcC5uc3BuYW1lICE9ICdpbmZvcm1hdGlvbl9z Y2hlbWEnCisgICAgKSBBUyBkdW1teQorT1JERVIgQlkgbnNwbmFtZSA8PiAn cGdfY2F0YWxvZycsIG5zcG5hbWUgPD4gJ3B1YmxpYycsIG5zcG5hbWUsIDEK XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy90eXBlcy90ZW1wbGF0ZXMvdHlwZS9zcWwvOS4xX3BsdXMv bm9kZXMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvdGVtcGxhdGVzL3R5 cGUvc3FsLzkuMV9wbHVzL25vZGVzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi5kZGNhMWI1Ci0tLSAvZGV2L251bGwKKysrIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdHlwZXMvdGVtcGxhdGVzL3R5cGUvc3FsLzkuMV9w bHVzL25vZGVzLnNxbApAQCAtMCwwICsxLDcgQEAKK1NFTEVDVCB0Lm9pZCwg dC50eXBuYW1lIEFTIG5hbWUKK0ZST00gcGdfdHlwZSB0CisgICAgTEVGVCBP VVRFUiBKT0lOIHBnX3R5cGUgZSBPTiBlLm9pZD10LnR5cGVsZW0KKyAgICBM RUZUIE9VVEVSIEpPSU4gcGdfY2xhc3MgY3QgT04gY3Qub2lkPXQudHlwcmVs aWQgQU5EIGN0LnJlbGtpbmQgPD4gJ2MnCisgICAgTEVGVCBPVVRFUiBKT0lO IHBnX25hbWVzcGFjZSBuc3AgT04gbnNwLm9pZCA9IHQudHlwbmFtZXNwYWNl CitXSEVSRSB0LnR5cHR5cGUgIT0gJ2QnIEFORCB0LnR5cG5hbWUgTk9UIExJ S0UgRSdcXF8lJyBBTkQgdC50eXBuYW1lc3BhY2UgPSB7e3NjaWR9fTo6b2lk CitPUkRFUiBCWSB0LnR5cG5hbWU7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg ZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvdGVtcGxh dGVzL3R5cGUvc3FsLzkuMV9wbHVzL3Byb3BlcnRpZXMuc3FsIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdHlwZXMvdGVtcGxhdGVzL3R5cGUvc3FsLzkuMV9wbHVzL3By b3BlcnRpZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjZlODFhMjUKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy90eXBlcy90ZW1wbGF0ZXMvdHlwZS9zcWwvOS4xX3BsdXMvcHJvcGVydGll cy5zcWwKQEAgLTAsMCArMSwyMSBAQAorU0VMRUNUIHQub2lkLCB0LnR5cG5h bWUgQVMgbmFtZSwKKyAgICAoQ0FTRSBXSEVOIENBU1QoY29hbGVzY2UodC50 eXBjb2xsYXRpb24sICcwJykgQVMgaW50ZWdlcikgPSAxMDAgVEhFTiB0cnVl IEVsU0UgZmFsc2UgRU5EKSBBUyBpc19jb2xsYXRhYmxlLAorICAgIHQudHlw YWNsIEFTIHR5cGVfYWNsLAorICAgIHQuKiwgZm9ybWF0X3R5cGUodC5vaWQs IG51bGwpIEFTIGFsaWFzLAorICAgIHBnX2dldF91c2VyYnlpZCh0LnR5cG93 bmVyKSBhcyB0eXBlb3duZXIsIGUudHlwbmFtZSBhcyBlbGVtZW50LAorICAg IGRlc2NyaXB0aW9uLCBjdC5vaWQgQVMgdGFib2lkLAorICAgIG5zcC5uc3Bu YW1lIEFTIHNjaGVtYSwKKyAgICAtLU1pbmltdW1WZXJzaW9uIDkuMSBTVEFS VAorICAgIChTRUxFQ1QgYXJyYXlfYWdnKHByb3ZpZGVyIHx8ICc9JyB8fCBs YWJlbCkgRlJPTSBwZ19zaHNlY2xhYmVsIHNsMSBXSEVSRSBzbDEub2Jqb2lk PXQub2lkKSBBUyBzZWNsYWJlbHMsCisgICAgLS0gRU5ECisgICAgKENBU0Ug V0hFTiAodC5vaWQgPD0ge3sgZGF0bGFzdHN5c29pZH19OjpvaWQgT1IgY3Qu b2lkICE9IDApIFRIRU4gdHJ1ZSBFbFNFIGZhbHNlIEVORCkgQVMgaXNfc3lz X3R5cGUKK0ZST00gcGdfdHlwZSB0CisgICAgTEVGVCBPVVRFUiBKT0lOIHBn X3R5cGUgZSBPTiBlLm9pZD10LnR5cGVsZW0KKyAgICBMRUZUIE9VVEVSIEpP SU4gcGdfY2xhc3MgY3QgT04gY3Qub2lkPXQudHlwcmVsaWQgQU5EIGN0LnJl bGtpbmQgPD4gJ2MnCisgICAgTEVGVCBPVVRFUiBKT0lOIHBnX2Rlc2NyaXB0 aW9uIGRlcyBPTiAoZGVzLm9iam9pZD10Lm9pZCBBTkQgZGVzLmNsYXNzb2lk PSdwZ190eXBlJzo6cmVnY2xhc3MpCisgICAgTEVGVCBPVVRFUiBKT0lOIHBn X25hbWVzcGFjZSBuc3AgT04gbnNwLm9pZCA9IHQudHlwbmFtZXNwYWNlCitX SEVSRSB0LnR5cHR5cGUgIT0gJ2QnIEFORCB0LnR5cG5hbWUgTk9UIExJS0Ug RSdcXF8lJyBBTkQgdC50eXBuYW1lc3BhY2UgPSB7e3NjaWR9fTo6b2lkCit7 JSBpZiB0aWQgJX0KKyAgICBBTkQgdC5vaWQgPSB7e3RpZH19OjpvaWQKK3sl IGVuZGlmICV9CitPUkRFUiBCWSB0LnR5cG5hbWU7ClwgTm8gbmV3bGluZSBh dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlw ZXMvdGVtcGxhdGVzL3R5cGUvc3FsLzkuMV9wbHVzL3VwZGF0ZS5zcWwgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy90eXBlcy90ZW1wbGF0ZXMvdHlwZS9zcWwvOS4xX3Bs dXMvdXBkYXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi4xNmI3MmJjCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvdHlwZXMvdGVtcGxhdGVzL3R5cGUvc3FsLzkuMV9wbHVzL3VwZGF0ZS5z cWwKQEAgLTAsMCArMSwxMjkgQEAKK3slIGltcG9ydCAnbWFjcm9zL3NlY3Vy aXR5Lm1hY3JvcycgYXMgU0VDTEFCTEUgJX0KK3slIGltcG9ydCAnbWFjcm9z L3ByaXZpbGVnZS5tYWNyb3MnIGFzIFBSSVZJTEVHRSAlfQoreyUgaWYgZGF0 YSAlfQoreyM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PSN9Cit7IyBCZWxvdyB3aWxsIGNoYW5nZSBvYmplY3Qgb3duZXIgI30KK3sl IGlmIGRhdGEudHlwZW93bmVyIGFuZCBkYXRhLnR5cGVvd25lciAhPSBvX2Rh dGEudHlwZW93bmVyICV9CitBTFRFUiBUWVBFIHt7IGNvbm58cXRJZGVudChv X2RhdGEuc2NoZW1hLCBvX2RhdGEubmFtZSkgfX0KKyAgICBPV05FUiBUTyB7 eyBkYXRhLnR5cGVvd25lciB9fTsKKworeyUgZW5kaWYgJX0KK3sjPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0jfQoreyMgQmVsb3cg d2lsbCBjaGFuZ2Ugb2JqZWN0cyBjb21tZW50ICAjfQoreyUgaWYgZGF0YS5k ZXNjcmlwdGlvbiBhbmQgZGF0YS5kZXNjcmlwdGlvbiAhPSBvX2RhdGEuZGVz Y3JpcHRpb24gJX0KK0NPTU1FTlQgT04gVFlQRSB7eyBjb25ufHF0SWRlbnQo b19kYXRhLnNjaGVtYSwgb19kYXRhLm5hbWUpIH19CisgICAgSVMge3sgZGF0 YS5kZXNjcmlwdGlvbnxxdExpdGVyYWwgfX07CisKK3slIGVuZGlmICV9Cit7 Iz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09I30KK3sj IyMgVGhlIHNxbCBnaXZlbiBiZWxvdyB3aWxsIHVwZGF0ZSBjb21wb3NpdGUg dHlwZSAjIyN9Cit7JSBpZiBkYXRhLmNvbXBvc2l0ZSBhbmQgZGF0YS5jb21w b3NpdGV8bGVuZ3RoID4gMCAlfQoreyUgc2V0IGNvbXBvc2l0ZSA9IGRhdGEu Y29tcG9zaXRlICV9Cit7JSBpZiAnZGVsZXRlZCcgaW4gY29tcG9zaXRlIGFu ZCBjb21wb3NpdGUuZGVsZXRlZHxsZW5ndGggPiAwICV9Cit7JSBmb3IgciBp biBjb21wb3NpdGUuZGVsZXRlZCAlfQorQUxURVIgVFlQRSB7eyBjb25ufHF0 SWRlbnQob19kYXRhLnNjaGVtYSwgb19kYXRhLm5hbWUpIH19CisgICAgRFJP UCBBVFRSSUJVVEUge3tjb25ufHF0SWRlbnQoci5tZW1iZXJfbmFtZSl9fTsK K3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KK3slIGlmICdhZGRlZCcgaW4g Y29tcG9zaXRlIGFuZCBjb21wb3NpdGUuYWRkZWR8bGVuZ3RoID4gMCAlfQor eyUgZm9yIHIgaW4gY29tcG9zaXRlLmFkZGVkICV9CitBTFRFUiBUWVBFIHt7 IGNvbm58cXRJZGVudChvX2RhdGEuc2NoZW1hLCBvX2RhdGEubmFtZSkgfX0K KyAgICBBREQgQVRUUklCVVRFIHt7Y29ubnxxdElkZW50KHIubWVtYmVyX25h bWUpfX0ge3tjb25ufHF0SWRlbnQoci50eXBlKX19eyUgaWYgci5pc190bGVu Z3RoIGFuZCByLnRsZW5ndGggJX0KKyh7e3IudGxlbmd0aH19eyUgaWYgci5p c19wcmVjaXNpb24gYW5kIHIucHJlY2lzaW9uICV9LHt7ci5wcmVjaXNpb259 fXslIGVuZGlmICV9KXslIGVuZGlmICV9eyUgaWYgci5jb2xsYXRpb24gJX0K KyBDT0xMQVRFIHt7ci5jb2xsYXRpb259fXslIGVuZGlmICV9OworeyUgZW5k Zm9yICV9Cit7JSBlbmRpZiAlfQoreyUgaWYgJ2NoYW5nZWQnIGluIGNvbXBv c2l0ZSBhbmQgY29tcG9zaXRlLmNoYW5nZWR8bGVuZ3RoID4gMCAlfQoreyUg Zm9yIHIgaW4gY29tcG9zaXRlLmNoYW5nZWQgJX0KK0FMVEVSIFRZUEUge3sg Y29ubnxxdElkZW50KG9fZGF0YS5zY2hlbWEsIG9fZGF0YS5uYW1lKSB9fQor ICAgIEFMVEVSIEFUVFJJQlVURSB7e2Nvbm58cXRJZGVudChyLm1lbWJlcl9u YW1lKX19IFNFVCBEQVRBIFRZUEUge3tjb25ufHF0SWRlbnQoci50eXBlKX19 eyUgaWYgci5pc190bGVuZ3RoIGFuZCByLnRsZW5ndGggJX0KKyh7e3IudGxl bmd0aH19eyUgaWYgci5pc19wcmVjaXNpb24gYW5kIHIucHJlY2lzaW9uICV9 LHt7ci5wcmVjaXNpb259fXslIGVuZGlmICV9KXslIGVuZGlmICV9eyUgaWYg ci5jb2xsYXRpb24gJX0KKyBDT0xMQVRFIHt7ci5jb2xsYXRpb259fXslIGVu ZGlmICV9OworeyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQorCit7JSBlbmRp ZiAlfQoreyM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PSN9Cit7IyMjIFRoZSBzcWwgZ2l2ZW4gYmVsb3cgd2lsbCB1cGRhdGUgZW51 bSB0eXBlICMjI30KK3slIGlmIGRhdGEuZW51bSBhbmQgZGF0YS5lbnVtfGxl bmd0aCA+IDAgJX0KK3slIHNldCBlbnVtID0gZGF0YS5lbnVtICV9Cit7JSBz ZXQgb19lbnVtX2xlbiA9IG9fZGF0YS5lbnVtfGxlbmd0aCAlfQoreyMgV2Ug bmVlZCBhY3R1YWwgbGlzdCBpbmRleCBmcm9tIGxlbmd0aCAjfQoreyUgc2V0 IG9fZW51bV9sZW4gPSBvX2VudW1fbGVuIC0gMSAlfQoreyUgaWYgJ2FkZGVk JyBpbiBlbnVtIGFuZCBlbnVtLmFkZGVkfGxlbmd0aCA+IDAgJX0KK3slIGZv ciByIGluIGVudW0uYWRkZWQgJX0KK3slIHNldCBjX2lkeCA9IGxvb3AuaW5k ZXggJX0KK3slIGlmIGNfaWR4ID09IDEgJX0KK3sjIGlmIGZpcnN0IG5ldyBl bGVtZW50IHRoZW4gYWRkIGl0IGFmdGVyIG9sZCBkYXRhIGVudW0gbGlzdCN9 CitBTFRFUiBUWVBFIHt7IGNvbm58cXRJZGVudChvX2RhdGEuc2NoZW1hLCBv X2RhdGEubmFtZSkgfX0KKyAgICBBREQgVkFMVUUge3tyLmxhYmVsfHF0TGl0 ZXJhbH19IEFGVEVSIHt7b19kYXRhLmVudW1bb19lbnVtX2xlbl0ubGFiZWx8 cXRMaXRlcmFsIH19OworeyUgZWxzZSAlfQoreyMgaWYgZmlyc3QgbmV3IGVs ZW1lbnQgdGhlbiBhZGQgaXQgYWZ0ZXIgbmV3IGRhdGEgZW51bSBsaXN0I30K K3slIHNldCBwX2lkeCA9IGxvb3AuaW5kZXggLSAyICV9CitBTFRFUiBUWVBF IHt7IGNvbm58cXRJZGVudChvX2RhdGEuc2NoZW1hLCBvX2RhdGEubmFtZSkg fX0KKyAgICBBREQgVkFMVUUge3tyLmxhYmVsfHF0TGl0ZXJhbH19IEFGVEVS IHt7ZW51bS5hZGRlZFtwX2lkeF0ubGFiZWx8cXRMaXRlcmFsfX07Cit7JSBl bmRpZiAlfQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQorCit7JSBlbmRp ZiAlfQoreyM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PSN9Cit7IyBUaGUgU1FMIGdlbmVyYXRlZCBiZWxvdyB3aWxsIGNoYW5nZSBT ZWN1cml0eSBMYWJlbCAjfQoreyUgaWYgZGF0YS5zZWNsYWJlbHMgYW5kIGRh dGEuc2VjbGFiZWxzfGxlbmd0aCA+IDAgJX0KK3slIHNldCBzZWNsYWJlbHMg PSBkYXRhLnNlY2xhYmVscyAlfQoreyUgc2V0IG5hbWUgPSAgY29ubnxxdElk ZW50KG9fZGF0YS5zY2hlbWEsIG9fZGF0YS5uYW1lKSAlfQoreyUgaWYgJ2Rl bGV0ZWQnIGluIHNlY2xhYmVscyBhbmQgc2VjbGFiZWxzLmRlbGV0ZWR8bGVu Z3RoID4gMCAlfQoreyUgZm9yIHIgaW4gc2VjbGFiZWxzLmRlbGV0ZWQgJX0K K3t7IFNFQ0xBQkxFLkRST1AoY29ubiwgJ1RZUEUnLCBuYW1lLCByLnByb3Zp ZGVyKSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyUgaWYgJ2Fk ZGVkJyBpbiBzZWNsYWJlbHMgYW5kIHNlY2xhYmVscy5hZGRlZHxsZW5ndGgg PiAwICV9Cit7JSBmb3IgciBpbiBzZWNsYWJlbHMuYWRkZWQgJX0KK3t7IFNF Q0xBQkxFLkFQUExZKGNvbm4sICdUWVBFJywgbmFtZSwgci5wcm92aWRlciwg ci5zZWN1cml0eV9sYWJlbCkgfX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYg JX0KK3slIGlmICdjaGFuZ2VkJyBpbiBzZWNsYWJlbHMgYW5kIHNlY2xhYmVs cy5jaGFuZ2VkfGxlbmd0aCA+IDAgJX0KK3slIGZvciByIGluIHNlY2xhYmVs cy5jaGFuZ2VkICV9Cit7eyBTRUNMQUJMRS5BUFBMWShjb25uLCAnVFlQRScs IG5hbWUsIHIucHJvdmlkZXIsIHIuc2VjdXJpdHlfbGFiZWwpIH19Cit7JSBl bmRmb3IgJX0KK3slIGVuZGlmICV9CisKK3slIGVuZGlmICV9Cit7Iz09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09I30KK3sjIENoYW5n ZSB0aGUgcHJpdmlsZWdlcyAjfQoreyUgaWYgZGF0YS50eXBhY2wgYW5kIGRh dGEudHlwYWNsfGxlbmd0aCA+IDAgJX0KK3slIHNldCBuYW1lID0gIGNvbm58 cXRJZGVudChvX2RhdGEuc2NoZW1hLCBvX2RhdGEubmFtZSkgJX0KK3slIGlm ICdkZWxldGVkJyBpbiBkYXRhLnR5cGFjbCAlfQoreyUgZm9yIHByaXYgaW4g ZGF0YS50eXBhY2wuZGVsZXRlZCAlfQore3sgUFJJVklMRUdFLlJFU0VUQUxM KGNvbm4sICdUWVBFJywgcHJpdi5ncmFudGVlLCBuYW1lKSB9fQoreyUgZW5k Zm9yICV9Cit7JSBlbmRpZiAlfQoreyUgaWYgJ2NoYW5nZWQnIGluIGRhdGEu dHlwYWNsICV9Cit7JSBmb3IgcHJpdiBpbiBkYXRhLnR5cGFjbC5jaGFuZ2Vk ICV9Cit7eyBQUklWSUxFR0UuUkVTRVRBTEwoY29ubiwgJ1RZUEUnLCBwcml2 LmdyYW50ZWUsIGRhdGEubmFtZSkgfX0KK3t7IFBSSVZJTEVHRS5BUFBMWShj b25uLCAnVFlQRScsIHByaXYuZ3JhbnRlZSwgbmFtZSwgcHJpdi53aXRob3V0 X2dyYW50LCBwcml2LndpdGhfZ3JhbnQpIH19Cit7JSBlbmRmb3IgJX0KK3sl IGVuZGlmICV9Cit7JSBpZiAnYWRkZWQnIGluIGRhdGEudHlwYWNsICV9Cit7 JSBmb3IgcHJpdiBpbiBkYXRhLnR5cGFjbC5hZGRlZCAlfQore3sgUFJJVklM RUdFLkFQUExZKGNvbm4sICdUWVBFJywgcHJpdi5ncmFudGVlLCBuYW1lLCBw cml2LndpdGhvdXRfZ3JhbnQsIHByaXYud2l0aF9ncmFudCkgfX0KK3slIGVu ZGZvciAlfQoreyUgZW5kaWYgJX0KK3slIGVuZGlmICV9Cit7Iz09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09I30KK3sjIEJlbG93IHdp bGwgY2hhbmdlIG9iamVjdCBuYW1lICN9Cit7JSBpZiBkYXRhLm5hbWUgYW5k IGRhdGEubmFtZSAhPSBvX2RhdGEubmFtZSAlfQorQUxURVIgVFlQRSB7eyBj b25ufHF0SWRlbnQob19kYXRhLnNjaGVtYSwgb19kYXRhLm5hbWUpIH19Cisg ICAgUkVOQU1FIFRPIHt7IGNvbm58cXRJZGVudChkYXRhLm5hbWUpIH19Owor Cit7JSBlbmRpZiAlfQoreyM9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PSN9Cit7IyBCZWxvdyB3aWxsIGNoYW5nZSB0aGUgc2NoZW1h IGZvciBvYmplY3QgI30KK3sjIHdpdGggZXh0cmEgaWYgY29uZGl0aW9uIHdl IHdpbGwgYWxzbyBtYWtlIHN1cmUgdGhhdCBvYmplY3QgaGFzIGNvcnJlY3Qg bmFtZSAjfQoreyUgaWYgZGF0YS5zY2hlbWEgYW5kIGRhdGEuc2NoZW1hICE9 IG9fZGF0YS5zY2hlbWEgJX0KK0FMVEVSIFRZUEUgeyUgaWYgZGF0YS5uYW1l ICE9IG9fZGF0YS5uYW1lICV9e3sgY29ubnxxdElkZW50KG9fZGF0YS5zY2hl bWEsIGRhdGEubmFtZSkgfX0KK3slIGVsc2UgJX17eyBjb25ufHF0SWRlbnQo b19kYXRhLnNjaGVtYSwgb19kYXRhLm5hbWUpIH19eyUgZW5kaWYgJX0KKyAg ICBTRVQgU0NIRU1BIHt7IGNvbm58cXRJZGVudChkYXRhLnNjaGVtYSkgfX07 CisKK3slIGVuZGlmICV9Cit7JSBlbmRpZiAlfQpcIE5vIG5ld2xpbmUgYXQg ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3R5cGVz L3RlbXBsYXRlcy90eXBlL3NxbC9wb3N0Z3Jlc19pbmJ1aXRfdHlwZXMudHh0 IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvdGVtcGxhdGVzL3R5cGUvc3FsL3Bv c3RncmVzX2luYnVpdF90eXBlcy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uNjMxMDM3ZgotLS0gL2Rldi9udWxsCisrKyBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3R5cGVzL3RlbXBsYXRlcy90eXBlL3NxbC9wb3N0Z3Jl c19pbmJ1aXRfdHlwZXMudHh0CkBAIC0wLDAgKzEsNTMgQEAKKyIiIgorSGVy ZSBpcyB0aGUgbGlzdCBvZiBQb3N0Z3JlcyBpbmJ1aWx0IHR5cGVzICYgdGhl aXIgT0lEJ3MKK1dlIHdpbGwgdXNlIHRoZXNlIHR5cGVzIHRvIGNoZWNrIGZv ciB2YWxpZGF0aW9ucworCisjIyAgUEdPSURfVFlQRV9TRVJJQUwgICAgICAg ICAgICAgICAgICAgLTQyTAorIyMgIFBHT0lEX1RZUEVfU0VSSUFMOCAgICAg ICAgICAgICAgICAgIC00M0wKKyMjICBQR09JRF9UWVBFX1NFUklBTDIgICAg ICAgICAgICAgICAgICAtNDRMCisjIyAgUEdPSURfVFlQRV9CT09MICAgICAg ICAgICAgICAgICAgICAgMTZMCisjIyAgUEdPSURfVFlQRV9CWVRFQSAgICAg ICAgICAgICAgICAgICAgMTdMCisjIyAgUEdPSURfVFlQRV9DSEFSICAgICAg ICAgICAgICAgICAgICAgMThMCisjIyAgUEdPSURfVFlQRV9OQU1FICAgICAg ICAgICAgICAgICAgICAgMTlMCisjIyAgUEdPSURfVFlQRV9JTlQ4ICAgICAg ICAgICAgICAgICAgICAgMjBMCisjIyAgUEdPSURfVFlQRV9JTlQyICAgICAg ICAgICAgICAgICAgICAgMjFMCisjIyAgUEdPSURfVFlQRV9JTlQ0ICAgICAg ICAgICAgICAgICAgICAgMjNMCisjIyAgUEdPSURfVFlQRV9URVhUICAgICAg ICAgICAgICAgICAgICAgMjVMCisjIyAgUEdPSURfVFlQRV9PSUQgICAgICAg ICAgICAgICAgICAgICAgMjZMCisjIyAgUEdPSURfVFlQRV9USUQgICAgICAg ICAgICAgICAgICAgICAgMjdMCisjIyAgUEdPSURfVFlQRV9YSUQgICAgICAg ICAgICAgICAgICAgICAgMjhMCisjIyAgUEdPSURfVFlQRV9DSUQgICAgICAg ICAgICAgICAgICAgICAgMjlMCisjIyAgUEdPSURfVFlQRV9GTE9BVDQgICAg ICAgICAgICAgICAgICAgNzAwTAorIyMgIFBHT0lEX1RZUEVfRkxPQVQ4ICAg ICAgICAgICAgICAgICAgIDcwMUwKKyMjICBQR09JRF9UWVBFX01PTkVZICAg ICAgICAgICAgICAgICAgICA3OTBMCisjIyAgUEdPSURfVFlQRV9DSEFSX0FS UkFZICAgICAgICAgICAgICAgMTAwMkwKKyMjICBQR09JRF9UWVBFX1RFWFRf QVJSQVkgICAgICAgICAgICAgICAxMDA5TAorIyMgIFBHT0lEX1RZUEVfQlBD SEFSX0FSUkFZICAgICAgICAgICAgIDEwMTRMCisjIyAgUEdPSURfVFlQRV9W QVJDSEFSX0FSUkFZICAgICAgICAgICAgMTAxNUwKKyMjICBQR09JRF9UWVBF X0JQQ0hBUiAgICAgICAgICAgICAgICAgICAxMDQyTAorIyMgIFBHT0lEX1RZ UEVfVkFSQ0hBUiAgICAgICAgICAgICAgICAgIDEwNDNMCisjIyAgUEdPSURf VFlQRV9EQVRFICAgICAgICAgICAgICAgICAgICAgMTA4MkwKKyMjICBQR09J RF9UWVBFX1RJTUUgICAgICAgICAgICAgICAgICAgICAxMDgzTAorIyMgIFBH T0lEX1RZUEVfVElNRVNUQU1QICAgICAgICAgICAgICAgIDExMTRMCisjIyAg UEdPSURfVFlQRV9USU1FU1RBTVBfQVJSQVkgICAgICAgICAgMTExNUwKKyMj ICBQR09JRF9UWVBFX1RJTUVfQVJSQVkgICAgICAgICAgICAgICAxMTgzTAor IyMgIFBHT0lEX1RZUEVfVElNRVNUQU1QVFogICAgICAgICAgICAgIDExODRM CisjIyAgUEdPSURfVFlQRV9USU1FU1RBTVBUWl9BUlJBWSAgICAgICAgMTE4 NUwKKyMjICBQR09JRF9UWVBFX0lOVEVSVkFMICAgICAgICAgICAgICAgICAx MTg2TAorIyMgIFBHT0lEX1RZUEVfSU5URVJWQUxfQVJSQVkgICAgICAgICAg IDExODdMCisjIyAgUEdPSURfVFlQRV9OVU1FUklDX0FSUkFZICAgICAgICAg ICAgMTIzMUwKKyMjICBQR09JRF9UWVBFX1RJTUVUWiAgICAgICAgICAgICAg ICAgICAxMjY2TAorIyMgIFBHT0lEX1RZUEVfVElNRVRaX0FSUkFZICAgICAg ICAgICAgIDEyNzBMCisjIyAgUEdPSURfVFlQRV9CSVQgICAgICAgICAgICAg ICAgICAgICAgMTU2MEwKKyMjICBQR09JRF9UWVBFX0JJVF9BUlJBWSAgICAg ICAgICAgICAgICAxNTYxTAorIyMgIFBHT0lEX1RZUEVfVkFSQklUICAgICAg ICAgICAgICAgICAgIDE1NjJMCisjIyAgUEdPSURfVFlQRV9WQVJCSVRfQVJS QVkgICAgICAgICAgICAgMTU2M0wKKyMjICBQR09JRF9UWVBFX05VTUVSSUMg ICAgICAgICAgICAgICAgICAxNzAwTAorIyMgIFBHT0lEX1RZUEVfQ1NUUklO RyAgICAgICAgICAgICAgICAgIDIyNzVMCisjIyAgUEdPSURfVFlQRV9BTlkg ICAgICAgICAgICAgICAgICAgICAgMjI3NkwKKyMjICBQR09JRF9UWVBFX1ZP SUQgICAgICAgICAgICAgICAgICAgICAyMjc4TAorIyMgIFBHT0lEX1RZUEVf VFJJR0dFUiAgICAgICAgICAgICAgICAgIDIyNzlMCisjIyAgUEdPSURfVFlQ RV9MQU5HVUFHRV9IQU5ETEVSICAgICAgICAgMjI4MEwKKyMjICBQR09JRF9U WVBFX0lOVEVSTkFMICAgICAgICAgICAgICAgICAyMjgxTAorIyMgIFBHT0lE X1RZUEVfSEFORExFUiAgICAgICAgICAgICAgICAgIDMxMTVMCisiIiIKXCBO byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy90eXBlcy90ZW1wbGF0ZXMvdHlwZS9zcWwvcHJlXzkuMS9hY2wu c3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvdGVtcGxhdGVzL3R5cGUvc3Fs L3ByZV85LjEvYWNsLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi45YjM0MjQwCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdHlwZXMvdGVtcGxhdGVzL3R5cGUvc3FsL3ByZV85LjEvYWNsLnNx bApAQCAtMCwwICsxLDI5IEBACitTRUxFQ1QgJ3R5cGFjbCcgYXMgZGVmdHlw ZSwgQ09BTEVTQ0UoZ3Qucm9sbmFtZSwgJ3B1YmxpYycpIGdyYW50ZWUsIGcu cm9sbmFtZSBncmFudG9yLCBhcnJheV9hZ2cocHJpdmlsZWdlX3R5cGUpIGFz IHByaXZpbGVnZXMsIGFycmF5X2FnZyhpc19ncmFudGFibGUpIGFzIGdyYW50 YWJsZQorRlJPTQorICAoU0VMRUNUCisgICAgZC5ncmFudGVlLCBkLmdyYW50 b3IsIGQuaXNfZ3JhbnRhYmxlLAorICAgIENBU0UgZC5wcml2aWxlZ2VfdHlw ZQorICAgIFdIRU4gJ1VTQUdFJyBUSEVOICdVJworICAgIEVMU0UgJ1VOS05P V04nCisgICAgRU5EIEFTIHByaXZpbGVnZV90eXBlCisgIEZST00KKyAgICAo U0VMRUNUIHQudHlwYWNsCisgICAgIEZST00gcGdfdHlwZSB0CisgICAgICAg ICBMRUZUIE9VVEVSIEpPSU4gcGdfdHlwZSBlIE9OIGUub2lkPXQudHlwZWxl bQorICAgICAgICAgTEVGVCBPVVRFUiBKT0lOIHBnX2NsYXNzIGN0IE9OIGN0 Lm9pZD10LnR5cHJlbGlkIEFORCBjdC5yZWxraW5kIDw+ICdjJworICAgICAg ICAgTEVGVCBPVVRFUiBKT0lOIHBnX2Rlc2NyaXB0aW9uIGRlcyBPTiAoZGVz Lm9iam9pZD10Lm9pZCBBTkQgZGVzLmNsYXNzb2lkPSdwZ190eXBlJzo6cmVn Y2xhc3MpCisgICAgIFdIRVJFIHQudHlwdHlwZSAhPSAnZCcgQU5EIHQudHlw bmFtZSBOT1QgTElLRSBFJ1xcXyUnIEFORCB0LnR5cG5hbWVzcGFjZSA9IHt7 c2NpZH19OjpvaWQKK3slIGlmIHRpZCAlfQorICAgICAgICBBTkQgdC5vaWQg PSB7e3RpZH19OjpvaWQKK3slIGVuZGlmICV9CisgICAgKSBhY2wsCisgICAg KFNFTEVDVCAoZCkuZ3JhbnRlZSBBUyBncmFudGVlLCAoZCkuZ3JhbnRvciBB UyBncmFudG9yLCAoZCkuaXNfZ3JhbnRhYmxlCisgICAgICAgIEFTIGlzX2dy YW50YWJsZSwgKGQpLnByaXZpbGVnZV90eXBlIEFTIHByaXZpbGVnZV90eXBl IEZST00gKFNFTEVDVAorICAgICAgICBhY2xleHBsb2RlKHQudHlwYWNsKSBh cyBkIEZST00gcGdfdHlwZSB0IFdIRVJFIHQub2lkID0ge3t0aWR9fTo6b2lk KSBhKSBkCisgICAgKSBkCisgIExFRlQgSk9JTiBwZ19jYXRhbG9nLnBnX3Jv bGVzIGcgT04gKGQuZ3JhbnRvciA9IGcub2lkKQorICBMRUZUIEpPSU4gcGdf Y2F0YWxvZy5wZ19yb2xlcyBndCBPTiAoZC5ncmFudGVlID0gZ3Qub2lkKQor R1JPVVAgQlkgZy5yb2xuYW1lLCBndC5yb2xuYW1lCisKKworCmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy90eXBlcy90ZW1wbGF0ZXMvdHlwZS9zcWwv cHJlXzkuMS9hZGRpdGlvbmFsX3Byb3BlcnRpZXMuc3FsIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdHlwZXMvdGVtcGxhdGVzL3R5cGUvc3FsL3ByZV85LjEvYWRkaXRp b25hbF9wcm9wZXJ0aWVzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi4wNDA2YWZkCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdHlwZXMvdGVtcGxhdGVzL3R5cGUvc3FsL3ByZV85LjEvYWRk aXRpb25hbF9wcm9wZXJ0aWVzLnNxbApAQCAtMCwwICsxLDQwIEBACit7IyBU aGUgU1FMIGdpdmVuIGJlbG93IHdpbGwgZmV0Y2ggY29tcG9zaXRlIHR5cGUj fQoreyUgaWYgdHlwZSA9PSAnYycgJX0KK1NFTEVDVCBhdHRuYW1lLCBmb3Jt YXRfdHlwZSh0Lm9pZCxOVUxMKSBBUyB0eXBuYW1lLCBhdHRuZGltcywgYXR0 dHlwbW9kLCBuc3AubnNwbmFtZSwKKyAgICAoU0VMRUNUIENPVU5UKDEpIGZy b20gcGdfdHlwZSB0MiBXSEVSRSB0Mi50eXBuYW1lPXQudHlwbmFtZSkgPiAx IEFTIGlzZHVwCistLSBNaW4gOS4xIHN0YXJ0CisgICAgLGNvbGxuYW1lLCBu c3BjLm5zcG5hbWUgYXMgY29sbG5zcG5hbWUKKy0tIEVuZAorICAgICwgYXR0 LmF0dHJlbGlkCitGUk9NIHBnX2F0dHJpYnV0ZSBhdHQKKyAgICBKT0lOIHBn X3R5cGUgdCBPTiB0Lm9pZD1hdHR0eXBpZAorICAgIEpPSU4gcGdfbmFtZXNw YWNlIG5zcCBPTiB0LnR5cG5hbWVzcGFjZT1uc3Aub2lkCisgICAgTEVGVCBP VVRFUiBKT0lOIHBnX3R5cGUgYiBPTiB0LnR5cGVsZW09Yi5vaWQKKy0tIE1p biA5LjEgc3RhcnQKKyAgICBMRUZUIE9VVEVSIEpPSU4gcGdfY29sbGF0aW9u IGMgT04gYXR0LmF0dGNvbGxhdGlvbj1jLm9pZAorICAgIExFRlQgT1VURVIg Sk9JTiBwZ19uYW1lc3BhY2UgbnNwYyBPTiBjLmNvbGxuYW1lc3BhY2U9bnNw Yy5vaWQKKy0tIEVuZAorV0hFUkUgYXR0LmF0dHJlbGlkID0ge3t0eXByZWxp ZH19OjpvaWQKK09SREVSIGJ5IGF0dG51bTsKK3slIGVuZGlmICV9Cit7IyBU aGUgU1FMIGdpdmVuIGJlbG93IHdpbGwgZmV0Y2ggZW51bSB0eXBlI30KK3sl IGlmIHR5cGUgPT0gJ2UnICV9CitTRUxFQ1QgZW51bWxhYmVsIEZST00gcGdf ZW51bSBXSEVSRSBlbnVtdHlwaWQ9e3t0aWR9fTo6b2lkCistLSBNaW4gOS4x CitPUkRFUiBieSBlbnVtc29ydG9yZGVyCistLUVuZAorLS0gZWxzZQorLS0g T1JERVIgYnkgb2lkCit7JSBlbmRpZiAlfQoreyMgVGhlIFNRTCBnaXZlbiBi ZWxvdyB3aWxsIGZldGNoIHJhbmdlIHR5cGUjfQoreyUgaWYgdHlwZSA9PSAn cicgJX0KK1NFTEVDVCBybmdzdWJ0eXBlLCBzdC50eXBuYW1lLAorICAgIHJu Z2NvbGxhdGlvbiwgY29sLmNvbGxuYW1lLAorICAgIHJuZ3N1Ym9wYywgb3Bj Lm9wY25hbWUsCisgICAgcm5nY2Fub25pY2FsLCBybmdzdWJkaWZmCitGUk9N IHBnX3JhbmdlCisgICBMRUZUIEpPSU4gcGdfdHlwZSBzdCBPTiBzdC5vaWQ9 cm5nc3VidHlwZQorICAgTEVGVCBKT0lOIHBnX2NvbGxhdGlvbiBjb2wgT04g Y29sLm9pZD1ybmdjb2xsYXRpb24KKyAgIExFRlQgSk9JTiBwZ19vcGNsYXNz IG9wYyBPTiBvcGMub2lkPXJuZ3N1Ym9wYworV0hFUkUgcm5ndHlwaWQ9e3t0 aWR9fTo6b2lkOworeyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL3R5cGVzL3RlbXBsYXRlcy90eXBlL3NxbC9wcmVfOS4xL2JhY2tl bmRfc3VwcG9ydC5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90eXBlcy90ZW1wbGF0 ZXMvdHlwZS9zcWwvcHJlXzkuMS9iYWNrZW5kX3N1cHBvcnQuc3FsCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzMWEyYzEKLS0tIC9k ZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90eXBlcy90ZW1wbGF0ZXMv dHlwZS9zcWwvcHJlXzkuMS9iYWNrZW5kX3N1cHBvcnQuc3FsCkBAIC0wLDAg KzEsMTQgQEAKK1NFTEVDVAorICAgIENBU0UgV0hFTiBuc3AubnNwbmFtZSBJ TiAoJ3N5cycsICdkYm8nLCAnaW5mb3JtYXRpb25fc2NoZW1hJykgVEhFTiB0 cnVlIEVMU0UgZmFsc2UgRU5EIEFTIGRiU3VwcG9ydAorRlJPTSBwZ19uYW1l c3BhY2UgbnNwCitXSEVSRSBuc3Aub2lkPXt7c2NpZH19OjppbnQKKyAgICBB TkQgKAorICAgICAgICAobnNwbmFtZSA9ICdwZ19jYXRhbG9nJyBBTkQgRVhJ U1RTCisgICAgICAgICAgICAoU0VMRUNUIDEgRlJPTSBwZ19jbGFzcyBXSEVS RSByZWxuYW1lID0gJ3BnX2NsYXNzJyBBTkQgcmVsbmFtZXNwYWNlID0gbnNw Lm9pZCBMSU1JVCAxKSkKKyAgICAgICAgT1IgKG5zcG5hbWUgPSAncGdhZ2Vu dCcgQU5EIEVYSVNUUworICAgICAgICAgICAgKFNFTEVDVCAxIEZST00gcGdf Y2xhc3MgV0hFUkUgcmVsbmFtZSA9ICdwZ2Ffam9iJyBBTkQgcmVsbmFtZXNw YWNlID0gbnNwLm9pZCBMSU1JVCAxKSkKKyAgICAgICAgT1IgKG5zcG5hbWUg PSAnaW5mb3JtYXRpb25fc2NoZW1hJyBBTkQgRVhJU1RTCisgICAgICAgICAg ICAoU0VMRUNUIDEgRlJPTSBwZ19jbGFzcyBXSEVSRSByZWxuYW1lID0gJ3Rh YmxlcycgQU5EIHJlbG5hbWVzcGFjZSA9IG5zcC5vaWQgTElNSVQgMSkpCisg ICAgKQorICAgIEFORCBuc3BuYW1lIE5PVCBMSUtFIEUncGdcXHRlbXBcXCUn CisgICAgQU5EIG5zcG5hbWUgTk9UIExJS0UgRSdwZ1xcdG9hc3RfdGVtcFxc JScKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy90eXBlcy90ZW1wbGF0ZXMvdHlwZS9zcWwvcHJlXzku MS9jcmVhdGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvdGVtcGxhdGVz L3R5cGUvc3FsL3ByZV85LjEvY3JlYXRlLnNxbApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi4yNzExNmE4Ci0tLSAvZGV2L251bGwKKysr IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvdGVtcGxhdGVzL3R5cGUvc3FsL3By ZV85LjEvY3JlYXRlLnNxbApAQCAtMCwwICsxLDYwIEBACit7JSBpbXBvcnQg J21hY3Jvcy9wcml2aWxlZ2UubWFjcm9zJyBhcyBQUklWSUxFR0UgJX0KK3sj IyMgIENvbXBvc2l0ZSBUeXBlICMjI30KK3slIGlmIGRhdGEgYW5kIGRhdGEu dHlwdHlwZSA9PSAnYycgJX0KK0NSRUFURSBUWVBFIHslIGlmIGRhdGEuc2No ZW1hICV9e3sgY29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUp IH19eyUgZWxzZSAlfXt7IGNvbm58cXRJZGVudChkYXRhLm5hbWUpIH19eyUg ZW5kaWYgJX0gQVMKKyAgICAoeyUgaWYgZGF0YS5jb21wb3NpdGUgJX17JSBm b3IgZCBpbiBkYXRhLmNvbXBvc2l0ZSAlfXslIGlmIGxvb3AuaW5kZXggIT0g MSAlfSwgeyUgZW5kaWYgJX17eyBjb25ufHF0SWRlbnQoZC5tZW1iZXJfbmFt ZSkgfX0ge3sgZC50eXBlIH19eyUgaWYgZC5pc190bGVuZ3RoIGFuZCBkLnRs ZW5ndGggJX0oe3tkLnRsZW5ndGh9fXslIGlmIGQuaXNfcHJlY2lzaW9uIGFu ZCBkLnByZWNpc2lvbiAlfSx7e2QucHJlY2lzaW9ufX17JSBlbmRpZiAlfSl7 JSBlbmRpZiAlfXslIGlmIGQuY29sbGF0aW9uICV9IENPTExBVEUge3tkLmNv bGxhdGlvbn19eyUgZW5kaWYgJX17JSBlbmRmb3IgJX17JSBlbmRpZiAlfSk7 Cit7JSBlbmRpZiAlfQoreyMjIyAgRW51bSBUeXBlICMjI30KK3slIGlmIGRh dGEgYW5kIGRhdGEudHlwdHlwZSA9PSAnZScgJX0KK0NSRUFURSBUWVBFIHsl IGlmIGRhdGEuc2NoZW1hICV9e3sgY29ubnxxdElkZW50KGRhdGEuc2NoZW1h LCBkYXRhLm5hbWUpIH19eyUgZWxzZSAlfXt7IGNvbm58cXRJZGVudChkYXRh Lm5hbWUpIH19eyUgZW5kaWYgJX0gQVMgRU5VTQorICAgICh7JSBmb3IgZSBp biBkYXRhLmVudW0gJX17JSBpZiBsb29wLmluZGV4ICE9IDEgJX0sIHslIGVu ZGlmICV9e3sgZS5sYWJlbHxxdExpdGVyYWwgfX17JSBlbmRmb3IgJX0pOwor eyUgZW5kaWYgJX0KK3sjIyMgIFJhbmdlIFR5cGUgIyMjfQoreyUgaWYgZGF0 YSBhbmQgZGF0YS50eXB0eXBlID09ICdyJyAlfQorQ1JFQVRFIFRZUEUgeyUg aWYgZGF0YS5zY2hlbWEgJX17eyBjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEs IGRhdGEubmFtZSkgfX17JSBlbHNlICV9e3sgY29ubnxxdElkZW50KGRhdGEu bmFtZSkgfX17JSBlbmRpZiAlfSBBUyBSQU5HRQorKHslIGlmIGRhdGEudHlw bmFtZSAlfSBTVUJUWVBFPXt7IGNvbm58cXRUeXBlSWRlbnQoZGF0YS50eXBu YW1lKSB9fXslIGVuZGlmICV9eyUgaWYgZGF0YS5jb2xsbmFtZSAlfQorLCBD T0xMQVRJT04gPSB7eyBkYXRhLmNvbGxuYW1lIH19eyUgZW5kaWYgJX17JSBp ZiBkYXRhLm9wY25hbWUgICV9CissIFNVQlRZUEVfT1BDTEFTUyA9IHt7IGRh dGEub3BjbmFtZSB9fXslIGVuZGlmICV9eyUgaWYgZGF0YS5ybmdjYW5vbmlj YWwgJX0KKywgQ0FOT05JQ0FMID0ge3sgZGF0YS5ybmdjYW5vbmljYWwgfX17 JSBlbmRpZiAlfXslIGlmIGRhdGEucm5nc3ViZGlmZiAlfQorLCBTVUJUWVBF X0RJRkYgPSB7eyBkYXRhLnJuZ3N1YmRpZmYgfX17JSBlbmRpZiAlfSApOwor eyUgZW5kaWYgJX0KK3sjIyMgIEV4dGVybmFsIFR5cGUgIyMjfQoreyUgaWYg ZGF0YSBhbmQgZGF0YS50eXB0eXBlID09ICd4JyAlfQorQ1JFQVRFIFRZUEUg eyUgaWYgZGF0YS5zY2hlbWEgJX17eyBjb25ufHF0SWRlbnQoZGF0YS5zY2hl bWEsIGRhdGEubmFtZSkgfX17JSBlbHNlICV9e3sgY29ubnxxdElkZW50KGRh dGEubmFtZSkgfX17JSBlbmRpZiAlfSBBUworKCB7JSBpZiBkYXRhLnR5cGlu cHV0ICV9CitJTlBVVCA9IHt7ZGF0YS50eXBpbnB1dH19eyUgZW5kaWYgJX17 JSBpZiBkYXRhLnR5cG91dHB1dCAlfQorLE9VVFBVVCA9IHt7IGRhdGEudHlw b3V0cHV0IH19eyUgZW5kaWYgJX17JSBpZiBkYXRhLnR5cHJlY2VpdmUgJX0K KyxSRUNFSVZFID0ge3tkYXRhLnR5cHJlY2VpdmV9fXslIGVuZGlmICV9eyUg aWYgZGF0YS50eXBuYW1lICV9CissU0VORCA9IHt7ZGF0YS50eXBzZW5kfX17 JSBlbmRpZiAlfXslIGlmIGRhdGEudHlwbW9kaW4gJX0KKyxUWVBNT0RfSU4g PSB7e2RhdGEudHlwbW9kaW59fXslIGVuZGlmICV9eyUgaWYgZGF0YS50eXBt b2RvdXQgJX0KKyxUWVBNT0RfT1VUID0ge3tkYXRhLnR5cG1vZG91dH19eyUg ZW5kaWYgJX17JSBpZiBkYXRhLnR5cGFuYWx5emUgJX0KKyxBTkFMWVpFID0g e3tkYXRhLnR5cGFuYWx5emV9fXslIGVuZGlmICV9eyUgaWYgZGF0YS50eXBs ZW4gJX0KKyxJTlRFUk5BTExFTkdUSCA9IHt7ZGF0YS50eXBsZW59fXslIGVu ZGlmICV9eyUgaWYgZGF0YS50eXBieXZhbCAlfQorLFBBU1NFREJZVkFMVUV7 JSBlbmRpZiAlfXslIGlmIGRhdGEudHlwYWxpZ24gJX0KKyxBTElHTk1FTlQg PSAge3tkYXRhLnR5cGFsaWdufX17JSBlbmRpZiAlfXslIGlmIGRhdGEudHlw c3RvcmFnZSAlfQorLFNUT1JBR0UgPSAge3tkYXRhLnR5cHN0b3JhZ2V9fXsl IGVuZGlmICV9eyUgaWYgZGF0YS50eXBjYXRlZ29yeSAlfQorLENBVEVHT1JZ ID0ge3tkYXRhLnR5cGNhdGVnb3J5fX17JSBlbmRpZiAlfXslIGlmIGRhdGEu dHlwaXNwcmVmZXJyZWQgJX0KKyxQUkVGRVJSRUQgPSAge3tkYXRhLnR5cGlz cHJlZmVycmVkfX17JSBlbmRpZiAlfXslIGlmIGRhdGEudHlwZGVmYXVsdCAl fQorLERFRkFVTFQgPSB7e2RhdGEudHlwZGVmYXVsdH19eyUgZW5kaWYgJX17 JSBpZiBkYXRhLmVsZW1lbnQgJX0KKyxFTEVNRU5UID0ge3tkYXRhLmVsZW1l bnR9fXslIGVuZGlmICV9eyUgaWYgZGF0YS50eXBkZWxpbSAlfQorLERFTElN SVRFUiA9IHt7ZGF0YS50eXBkZWxpbXxxdExpdGVyYWx9fXslIGVuZGlmICV9 eyUgaWYgZGF0YS5pc19jb2xsYXRhYmxlICV9CissQ09MTEFUQUJMRSA9IHt7 ZGF0YS5pc19jb2xsYXRhYmxlfX17JSBlbmRpZiAlfSApOworeyUgZW5kaWYg JX0KK3sjIyMgIFR5cGUgT3duZXIgIyMjfQoreyUgaWYgZGF0YSBhbmQgZGF0 YS50eXBlb3duZXIgJX0KKworQUxURVIgVFlQRSB7JSBpZiBkYXRhLnNjaGVt YSAlfXt7IGNvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKSB9 fXslIGVsc2UgJX17eyBjb25ufHF0SWRlbnQoZGF0YS5uYW1lKSB9fXslIGVu ZGlmICV9CisgICAgT1dORVIgVE8ge3tkYXRhLnR5cGVvd25lcn19OworeyUg ZW5kaWYgJX0KK3sjIyMgIFR5cGUgQ29tbWVudHMgIyMjfQoreyUgaWYgZGF0 YSBhbmQgZGF0YS5kZXNjcmlwdGlvbiAlfQorCitDT01NRU5UIE9OIFRZUEUg eyUgaWYgZGF0YS5zY2hlbWEgJX17eyBjb25ufHF0SWRlbnQoZGF0YS5zY2hl bWEsIGRhdGEubmFtZSkgfX17JSBlbHNlICV9e3sgY29ubnxxdElkZW50KGRh dGEubmFtZSkgfX17JSBlbmRpZiAlfSBJUyB7e2RhdGEuZGVzY3JpcHRpb258 cXRMaXRlcmFsfX07Cit7JSBlbmRpZiAlfQoreyMjIyAgQUNMICMjI30KK3sl IGlmIGRhdGEudHlwYWNsICV9CisKK3slIGZvciBwcml2IGluIGRhdGEudHlw YWNsICV9Cit7eyBQUklWSUxFR0UuQVBQTFkoY29ubiwgJ1RZUEUnLCBwcml2 LmdyYW50ZWUsIGRhdGEubmFtZSwgcHJpdi53aXRob3V0X2dyYW50LCBwcml2 LndpdGhfZ3JhbnQpIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Clwg Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdHlwZXMvdGVtcGxhdGVzL3R5cGUvc3FsL3ByZV85LjEvZGVs ZXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3R5cGVzL3RlbXBsYXRlcy90eXBl L3NxbC9wcmVfOS4xL2RlbGV0ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uMDZhMjc5ZQotLS0gL2Rldi9udWxsCisrKyBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3R5cGVzL3RlbXBsYXRlcy90eXBlL3NxbC9wcmVfOS4x L2RlbGV0ZS5zcWwKQEAgLTAsMCArMSw4IEBACit7JSBpZiBzY2lkIGFuZCB0 aWQgJX0KK1NFTEVDVCB0LnR5cG5hbWUgQVMgbmFtZQorRlJPTSBwZ190eXBl IHQKK1dIRVJFIHQub2lkID0ge3t0aWR9fTo6b2lkCit7JSBlbmRpZiAlfQor eyUgaWYgbmFtZSAlfQorRFJPUCBUWVBFIHt7IGNvbm58cXRJZGVudChuYW1l KSB9fXslIGlmIGNhc2NhZGUlfSBDQVNDQURFeyUgZW5kaWYgJX07Cit7JSBl bmRpZiAlfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3R5cGVzL3RlbXBsYXRlcy90eXBlL3NxbC9w cmVfOS4xL2dldF9jb2xsYXRpb25zLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3R5 cGVzL3RlbXBsYXRlcy90eXBlL3NxbC9wcmVfOS4xL2dldF9jb2xsYXRpb25z LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YjAx NjliCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMv dGVtcGxhdGVzL3R5cGUvc3FsL3ByZV85LjEvZ2V0X2NvbGxhdGlvbnMuc3Fs CkBAIC0wLDAgKzEsNyBAQAorU0VMRUNUIC0tbnNwbmFtZSwgY29sbG5hbWUs CisgICAgQ0FTRSBXSEVOIGxlbmd0aChuc3BuYW1lKSA+IDAgQU5EIGxlbmd0 aChjb2xsbmFtZSkgPiAwICBUSEVOCisgICAgICAgIGNvbmNhdChxdW90ZV9p ZGVudChuc3BuYW1lKSwgJy4nLCBxdW90ZV9pZGVudChjb2xsbmFtZSkpCisg ICAgRUxTRSAnJyBFTkQgQVMgY29sbGF0aW9uCitGUk9NIHBnX2NvbGxhdGlv biBjLCBwZ19uYW1lc3BhY2UgbgorV0hFUkUgYy5jb2xsbmFtZXNwYWNlPW4u b2lkCitPUkRFUiBCWSBuc3BuYW1lLCBjb2xsbmFtZTsKXCBObyBuZXdsaW5l IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90 eXBlcy90ZW1wbGF0ZXMvdHlwZS9zcWwvcHJlXzkuMS9nZXRfZXh0ZXJuYWxf ZnVuY3Rpb25zLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3R5cGVzL3RlbXBsYXRl cy90eXBlL3NxbC9wcmVfOS4xL2dldF9leHRlcm5hbF9mdW5jdGlvbnMuc3Fs Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzYzNjODUK LS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90eXBlcy90ZW1w bGF0ZXMvdHlwZS9zcWwvcHJlXzkuMS9nZXRfZXh0ZXJuYWxfZnVuY3Rpb25z LnNxbApAQCAtMCwwICsxLDQwIEBACit7IyMjIElucHV0L091dHB1dC9TZW5k L1JlY2VpdmUvQW5hbHl6ZSBmdW5jdGlvbiBsaXN0IGFsc28gYXBwZW5kIGlu dG8gVHlwTW9kZUlOL1R5cE1vZE9VVCAjIyN9Cit7JSBpZiBleHRmdW5jICV9 CitTRUxFQ1QgcHJvbmFtZSwgbnNwbmFtZSwKKyAgICBDQVNFIFdIRU4gbGVu Z3RoKG5zcG5hbWUpID4gMCBBTkQgbGVuZ3RoKHByb25hbWUpID4gMCAgVEhF TgorICAgICAgICBjb25jYXQocXVvdGVfaWRlbnQobnNwbmFtZSksICcuJywg cXVvdGVfaWRlbnQocHJvbmFtZSkpCisgICAgRUxTRSAnJyBFTkQgQVMgZnVu YworRlJPTSAoCisgU0VMRUNUIHByb25hbWUsIG5zcG5hbWUsIG1heChwcm9h cmd0eXBlc1swXSkgQVMgYXJnMCwgbWF4KHByb2FyZ3R5cGVzWzFdKSBBUyBh cmcxCitGUk9NIHBnX3Byb2MgcAorIEpPSU4gcGdfbmFtZXNwYWNlIG4gT04g bi5vaWQ9cHJvbmFtZXNwYWNlCitHUk9VUCBCWSBwcm9uYW1lLCBuc3BuYW1l CisgSEFWSU5HIGNvdW50KHByb25hbWUpID0gMSAgICkgQVMgdW5pcXVlZnVu YworIFdIRVJFIGFyZzAgPD4gMCBBTkQgYXJnMSA9IDA7Cit7JSBlbmRpZiAl fQoreyMjIyBUeXBtb2RJTiBsaXN0ICMjI30KK3slIGlmIHR5cGVtb2RpbiAl fQorU0VMRUNUIHByb25hbWUsIG5zcG5hbWUsCisgICAgQ0FTRSBXSEVOIGxl bmd0aChuc3BuYW1lKSA+IDAgQU5EIGxlbmd0aChwcm9uYW1lKSA+IDAgIFRI RU4KKyAgICAgICAgY29uY2F0KHF1b3RlX2lkZW50KG5zcG5hbWUpLCAnLics IHF1b3RlX2lkZW50KHByb25hbWUpKQorICAgIEVMU0UgJycgRU5EIEFTIGZ1 bmMKK0ZST00gcGdfcHJvYyBwCisgICAgSk9JTiBwZ19uYW1lc3BhY2UgbiBP TiBuLm9pZD1wcm9uYW1lc3BhY2UKK1dIRVJFIHByb3JldHR5cGU9KFNFTEVD VCBvaWQgRlJPTSBwZ190eXBlIFdIRVJFIHR5cG5hbWU9J2ludDQnKQorICAg IEFORCBwcm9hcmd0eXBlc1swXT0oU0VMRUNUIG9pZCBGUk9NIHBnX3R5cGUg V0hFUkUgdHlwbmFtZT0nX2NzdHJpbmcnKQorICAgIEFORCBwcm9hcmd0eXBl c1sxXSBJUyBOVUxMCitPUkRFUiBCWSBuc3BuYW1lLCBwcm9uYW1lOworeyUg ZW5kaWYgJX0KK3sjIyMgVHlwbW9kT1VUIGxpc3QgIyMjfQoreyUgaWYgdHlw ZW1vZG91dCAlfQorU0VMRUNUIHByb25hbWUsIG5zcG5hbWUsCisgICAgQ0FT RSBXSEVOIGxlbmd0aChuc3BuYW1lKSA+IDAgQU5EIGxlbmd0aChwcm9uYW1l KSA+IDAgIFRIRU4KKyAgICAgICAgY29uY2F0KHF1b3RlX2lkZW50KG5zcG5h bWUpLCAnLicsIHF1b3RlX2lkZW50KHByb25hbWUpKQorICAgIEVMU0UgJycg RU5EIEFTIGZ1bmMKK0ZST00gcGdfcHJvYyBwCisgICAgSk9JTiBwZ19uYW1l c3BhY2UgbiBPTiBuLm9pZD1wcm9uYW1lc3BhY2UKK1dIRVJFIHByb3JldHR5 cGU9KFNFTEVDVCBvaWQgRlJPTSBwZ190eXBlIFdIRVJFIHR5cG5hbWU9J2Nz dHJpbmcnKQorICAgIEFORCBwcm9hcmd0eXBlc1swXT0oU0VMRUNUIG9pZCBG Uk9NIHBnX3R5cGUgV0hFUkUgdHlwbmFtZT0naW50NCcpCisgICAgQU5EIHBy b2FyZ3R5cGVzWzFdIElTIE5VTEwKK09SREVSIEJZIG5zcG5hbWUsIHByb25h bWU7Cit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dHlwZXMvdGVtcGxhdGVzL3R5cGUvc3FsL3ByZV85LjEvZ2V0X25hbWUuc3Fs IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvdGVtcGxhdGVzL3R5cGUvc3FsL3By ZV85LjEvZ2V0X25hbWUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLmQzNjhmMGYKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy90eXBlcy90ZW1wbGF0ZXMvdHlwZS9zcWwvcHJlXzkuMS9nZXRf bmFtZS5zcWwKQEAgLTAsMCArMSwzIEBACitTRUxFQ1QgdC50eXBuYW1lIEFT IG5hbWUKK0ZST00gcGdfdHlwZSB0CitXSEVSRSB0Lm9pZCA9IHt7dGlkfX06 Om9pZDsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy90eXBlcy90ZW1wbGF0ZXMvdHlwZS9zcWwvcHJl XzkuMS9nZXRfb2lkLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3R5cGVzL3RlbXBs YXRlcy90eXBlL3NxbC9wcmVfOS4xL2dldF9vaWQuc3FsCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyMTliMmEKLS0tIC9kZXYvbnVs bAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy90eXBlcy90ZW1wbGF0ZXMvdHlwZS9z cWwvcHJlXzkuMS9nZXRfb2lkLnNxbApAQCAtMCwwICsxLDExIEBACit7IyBC ZWxvdyB3aWxsIHByb3ZpZGUgb2lkIGZvciBuZXdseSBjcmVhdGVkIHR5cGUg I30KK1NFTEVDVCB0Lm9pZAorRlJPTSBwZ190eXBlIHQKKyAgICBMRUZUIE9V VEVSIEpPSU4gcGdfdHlwZSBlIE9OIGUub2lkPXQudHlwZWxlbQorICAgIExF RlQgT1VURVIgSk9JTiBwZ19jbGFzcyBjdCBPTiBjdC5vaWQ9dC50eXByZWxp ZCBBTkQgY3QucmVsa2luZCA8PiAnYycKKyAgICBMRUZUIE9VVEVSIEpPSU4g cGdfZGVzY3JpcHRpb24gZGVzIE9OIChkZXMub2Jqb2lkPXQub2lkIEFORCBk ZXMuY2xhc3NvaWQ9J3BnX3R5cGUnOjpyZWdjbGFzcykKK1dIRVJFIHQudHlw dHlwZSAhPSAnZCcgQU5EIHQudHlwbmFtZSBOT1QgTElLRSBFJ1xcXyUnIEFO RCB0LnR5cG5hbWVzcGFjZSA9IHt7c2NpZH19OjpvaWQKK3slIGlmIGRhdGEg JX0KKyAgICBBTkQgIHQudHlwbmFtZSA9IHt7ZGF0YS5uYW1lfHF0TGl0ZXJh bH19Cit7JSBlbmRpZiAlfQorT1JERVIgQlkgdC50eXBuYW1lOwpcIE5vIG5l d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3R5cGVzL3RlbXBsYXRlcy90eXBlL3NxbC9wcmVfOS4xL2dldF9zY2hl bWFzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3R5cGVzL3RlbXBsYXRlcy90eXBl L3NxbC9wcmVfOS4xL2dldF9zY2hlbWFzLnNxbApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi5hMzhkYjYwCi0tLSAvZGV2L251bGwKKysr IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvdGVtcGxhdGVzL3R5cGUvc3FsL3By ZV85LjEvZ2V0X3NjaGVtYXMuc3FsCkBAIC0wLDAgKzEsMjUgQEAKK1NFTEVD VAorICAgIG5zcC5uc3BuYW1lCitGUk9NCisgICAgcGdfbmFtZXNwYWNlIG5z cAorICAgIExFRlQgT1VURVIgSk9JTiBwZ19kZXNjcmlwdGlvbiBkZXMgT04g KGRlcy5vYmpvaWQ9bnNwLm9pZCBBTkQgZGVzLmNsYXNzb2lkPSdwZ19uYW1l c3BhY2UnOjpyZWdjbGFzcykKKyAgICBMRUZUIE9VVEVSIEpPSU4gcGdfY2F0 YWxvZy5wZ19kZWZhdWx0X2FjbCBkYWNsIE9OIChkYWNsLmRlZmFjbG5hbWVz cGFjZSA9IG5zcC5vaWQpCitXSEVSRQorICAgIE5PVCAoKG5zcG5hbWUgPSAn cGdfY2F0YWxvZycgQU5EIEVYSVNUUworICAgICAgICAoU0VMRUNUIDEgRlJP TSBwZ19jbGFzcyBXSEVSRSByZWxuYW1lID0gJ3BnX2NsYXNzJyBBTkQgcmVs bmFtZXNwYWNlID0gbnNwLm9pZCBMSU1JVCAxKSkgT1IKKyAgICAobnNwbmFt ZSA9ICdwZ2FnZW50JyBBTkQgRVhJU1RTCisgICAgKFNFTEVDVCAxIEZST00g cGdfY2xhc3MgV0hFUkUgcmVsbmFtZSA9ICdwZ2Ffam9iJyBBTkQgcmVsbmFt ZXNwYWNlID0gbnNwLm9pZCBMSU1JVCAxKSkgT1IKKyAgICAobnNwbmFtZSA9 ICdpbmZvcm1hdGlvbl9zY2hlbWEnIEFORCBFWElTVFMKKyAgICAgICAgKFNF TEVDVCAxIEZST00gcGdfY2xhc3MgV0hFUkUgcmVsbmFtZSA9ICd0YWJsZXMn IEFORCByZWxuYW1lc3BhY2UgPSBuc3Aub2lkIExJTUlUIDEpKSBPUgorICAg IChuc3BuYW1lIExJS0UgJ18lJyBBTkQgRVhJU1RTCisgICAgICAgIChTRUxF Q1QgMSBGUk9NIHBnX3Byb2MgV0hFUkUgcHJvbmFtZT0nc2xvbnl2ZXJzaW9u JyBBTkQgcHJvbmFtZXNwYWNlID0gbnNwLm9pZCBMSU1JVCAxKSkgT1IKKyAg ICAobnNwbmFtZSA9ICdkYm8nIE9SIG5zcG5hbWUgPSAnc3lzJykKKyAgICAp IEFORAorICAgIG5zcG5hbWUgTk9UIExJS0UgRSdwZ1xcdGVtcFxcJScgQU5E CisgICAgbnNwbmFtZSBOT1QgTElLRSBFJ3BnXFx0b2FzdF90ZW1wXFwlJyBB TkQKKyAgICAtLSBBRERFRDogQmVjYXVzZSBXZSBuZWVkIHRvIG9taXQgc3lz dGVtIHNjaGVtYSBleGNlcHQgdGhlIG9uZSBvbiB3aGljaCB3ZSBhcmUgdHJ5 aW5nIHRvICBjcmVhdGUgY29sbGF0aW9uCisgICAgKCBuc3Aub2lkID0ge3sg c2NpZCB9fSBPUiBuc3BuYW1lIE5PVCBMSUtFIEUncGdcXF8lJyApIEFORAor ICAgIC0tIFNwZWNpZmljIGNvZGUgZm9yIEVEQiBQUEFTCisgICAgbnNwLm5z cHBhcmVudCA9IDAgQU5EIE5PVAorICAgICAgICAobnNwbmFtZSA9ICdkYm1z X2pvYl9wcm9jZWR1cmUnIEFORCBFWElTVFMoU0VMRUNUIDEgRlJPTSBwZ19w cm9jIFdIRVJFIHByb25hbWVzcGFjZSA9IG5zcC5vaWQgYW5kIHByb25hbWUg PSAncnVuX2pvYicgTElNSVQgMSkpCitPUkRFUiBCWSBuc3BuYW1lOwpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvdGVtcGxhdGVzL3R5cGUv c3FsL3ByZV85LjEvZ2V0X3N1YnR5cGVzLnNxbCBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3R5cGVzL3RlbXBsYXRlcy90eXBlL3NxbC9wcmVfOS4xL2dldF9zdWJ0eXBl cy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTE2 MWE5OQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3R5cGVz L3RlbXBsYXRlcy90eXBlL3NxbC9wcmVfOS4xL2dldF9zdWJ0eXBlcy5zcWwK QEAgLTAsMCArMSw1NiBAQAoreyMjIyBUbyBmaWxsIHN1YnR5cGUgY29tYm9i b3ggIyMjfQoreyUgaWYgc3VidHlwZSAlfQorU0VMRUNUIERJU1RJTkNUIHR5 cC50eXBuYW1lIEFTIHN0eXBlLAorICAgIChDQVNFIFdIRU4gdHlwLnR5cGNv bGxhdGlvbiA+IDAgVEhFTiB0cnVlIEVMU0UgZmFsc2UgRU5EKSBBUyBpc19j b2xsYXRlCitGUk9NIHBnX29wY2xhc3Mgb3BjCisgICAgSk9JTiBwZ190eXBl IHR5cCBPTiBvcGMub3BjaW50eXBlID0gdHlwLm9pZAorV0hFUkUgb3BjLm9w Y21ldGhvZCA9IDQwMworT1JERVIgQlkgMQoreyUgZW5kaWYgJX0KK3sjIyMg VG8gZmlsbCBzdWJ0eXBlIG9wY2xhc3MgY29tYm9ib3ggIyMjfQoreyUgaWYg c3VidHlwZV9vcGNsYXNzIGFuZCBkYXRhIGFuZCBkYXRhLnR5cG5hbWUgJX0K K1NFTEVDVCBvcGMub3BjbmFtZQorRlJPTSBwZ19vcGNsYXNzIG9wYworICAg IEpPSU4gcGdfdHlwZSB0eXAgT04gb3BjLm9wY2ludHlwZT10eXAub2lkCisg ICAgQU5EIHR5cC50eXBuYW1lID0ge3sgZGF0YS50eXBuYW1lfHF0TGl0ZXJh bCB9fQorV0hFUkUgb3BjLm9wY21ldGhvZCA9IDQwMworT1JERVIgQlkgb3Bj bmFtZTsKK3slIGVuZGlmICV9Cit7IyMjIFRvIGZldGNoIG9wY2ludHR5cGUg ZnJvbSBzdWJ0eXBlIG9wY2xhc3MgIyMjfQoreyUgaWYgZ2V0X29wY2ludHlw ZSBhbmQgZGF0YSBhbmQgZGF0YS50eXBuYW1lIGFuZCBkYXRhLm9wY25hbWUg JX0KK1NFTEVDVCBvcGMub3BjaW50eXBlCitGUk9NIHBnX29wY2xhc3Mgb3Bj CisgICAgSk9JTiBwZ190eXBlIHR5cCBPTiBvcGMub3BjaW50eXBlPXR5cC5v aWQKKyAgICBBTkQgdHlwLnR5cG5hbWUgPSB7eyBkYXRhLnR5cG5hbWV8cXRM aXRlcmFsIH19CitXSEVSRSBvcGMub3BjbWV0aG9kID0gNDAzCisgICAgQU5E IG9wYy5vcGNuYW1lID0ge3sgZGF0YS5vcGNuYW1lfHF0TGl0ZXJhbCB9fQor T1JERVIgQlkgb3BjbmFtZTsKK3slIGVuZGlmICV9Cit7IyMjIFRvIGZpbGwg c3VidHlwZSBkaWZmIGZ1bmN0aW9uIGNvbWJvYm94ICMjI30KK3slIGlmIG9w Y2ludHlwZSAlfQorU0VMRUNUIHByb25hbWUsIG5zcG5hbWUsCisgICAgQ0FT RSBXSEVOIGxlbmd0aChuc3BuYW1lKSA+IDAgQU5EIGxlbmd0aChwcm9uYW1l KSA+IDAgIFRIRU4KKyAgICAgICAgY29uY2F0KHF1b3RlX2lkZW50KG5zcG5h bWUpLCAnLicsIHF1b3RlX2lkZW50KHByb25hbWUpKQorICAgIEVMU0UgJycg RU5EIEFTIHN0eXBkaWZmCitGUk9NIHBnX3Byb2MKKyAgICBKT0lOIHBnX25h bWVzcGFjZSBuIE9OIG4ub2lkPXByb25hbWVzcGFjZQorV0hFUkUgcHJvcmV0 dHlwZSA9IDcwMQorQU5EIHByb2FyZ3R5cGVzID0gJ3t7b3BjaW50eXBlfX0g e3tvcGNpbnR5cGV9fScKK09SREVSIEJZIHByb25hbWU7Cit7JSBlbmRpZiAl fQoreyMjIyBUbyBmaWxsIGNhbm9uaWNhbCBjb21ib2JveCAjIyN9Cit7JSBp ZiBnZXRvaWQgJX0KK1NFTEVDVCBvaWQgRlJPTSBwZ190eXBlCitXSEVSRSB0 eXBuYW1lID0ge3sgZGF0YS5uYW1lfHF0TGl0ZXJhbCB9fQoreyUgZW5kaWYg JX0KK3slIGlmIGNhbm9uaWNhbCBhbmQgb2lkICV9CitTRUxFQ1QgcHJvbmFt ZSwgbnNwbmFtZSwKKyAgICBDQVNFIFdIRU4gbGVuZ3RoKG5zcG5hbWUpID4g MCBBTkQgbGVuZ3RoKHByb25hbWUpID4gMCAgVEhFTgorICAgICAgICBjb25j YXQocXVvdGVfaWRlbnQobnNwbmFtZSksICcuJywgcXVvdGVfaWRlbnQocHJv bmFtZSkpCisgICAgRUxTRSAnJyBFTkQgQVMgY2Fub25pY2FsCitGUk9NIHBn X3Byb2MKKyAgICBKT0lOIHBnX25hbWVzcGFjZSBuIE9OIG4ub2lkPXByb25h bWVzcGFjZQorV0hFUkUgcHJvcmV0dHlwZT0ge3sgb2lkIH19CitBTkQgcHJv YXJndHlwZXMgPSAne3sgb2lkIH19JworT1JERVIgQlkgcHJvbmFtZTsKK3sl IGVuZGlmICV9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvdGVtcGxhdGVzL3R5cGUvc3Fs L3ByZV85LjEvZ2V0X3R5cGVzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3R5cGVz L3RlbXBsYXRlcy90eXBlL3NxbC9wcmVfOS4xL2dldF90eXBlcy5zcWwKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQzMGU4YQotLS0g L2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3R5cGVzL3RlbXBsYXRl cy90eXBlL3NxbC9wcmVfOS4xL2dldF90eXBlcy5zcWwKQEAgLTAsMCArMSwx MCBAQAorU0VMRUNUICogRlJPTQorICAgIChTRUxFQ1QgZm9ybWF0X3R5cGUo dC5vaWQsTlVMTCkgQVMgdHlwbmFtZSwKKyAgICBDQVNFIFdIRU4gdHlwZWxl bSA+IDAgVEhFTiB0eXBlbGVtIEVMU0UgdC5vaWQgRU5EIEFTIGVsZW1vaWQs CisgICAgdHlwbGVuLCB0eXB0eXBlLCB0Lm9pZCwgbnNwbmFtZSwKKyAgICAo U0VMRUNUIENPVU5UKDEpIEZST00gcGdfdHlwZSB0MiBXSEVSRSB0Mi50eXBu YW1lID0gdC50eXBuYW1lKSA+IDEgQVMgaXNkdXAKK0ZST00gcGdfdHlwZSB0 CisgICAgSk9JTiBwZ19uYW1lc3BhY2UgbnNwIE9OIHR5cG5hbWVzcGFjZT1u c3Aub2lkCitXSEVSRSAoTk9UICh0eXBuYW1lID0gJ3Vua25vd24nIEFORCBu c3BuYW1lID0gJ3BnX2NhdGFsb2cnKSkgQU5EIHR5cGlzZGVmaW5lZCBBTkQg dHlwdHlwZSBJTiAoJ2InLCAnYycsICdkJywgJ2UnLCAncicpQU5EIE5PVCBF WElTVFMgKHNlbGVjdCAxIGZyb20gcGdfY2xhc3Mgd2hlcmUgcmVsbmFtZXNw YWNlPXR5cG5hbWVzcGFjZSBhbmQgcmVsbmFtZSA9IHR5cG5hbWUgYW5kIHJl bGtpbmQgIT0gJ2MnKSBBTkQgKHR5cG5hbWUgbm90IGxpa2UgJ18lJyBPUiBO T1QgRVhJU1RTIChzZWxlY3QgMSBmcm9tIHBnX2NsYXNzIHdoZXJlIHJlbG5h bWVzcGFjZT10eXBuYW1lc3BhY2UgYW5kIHJlbG5hbWUgPSBzdWJzdHJpbmco dHlwbmFtZSBmcm9tIDIpOjpuYW1lIGFuZCByZWxraW5kICE9ICdjJykpICBB TkQgbnNwLm5zcG5hbWUgIT0gJ2luZm9ybWF0aW9uX3NjaGVtYScKKyApIEFT IGR1bW15CisgICAgT1JERVIgQlkgbnNwbmFtZSA8PiAncGdfY2F0YWxvZycs IG5zcG5hbWUgPD4gJ3B1YmxpYycsIG5zcG5hbWUsIDEKXCBObyBuZXdsaW5l IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90 eXBlcy90ZW1wbGF0ZXMvdHlwZS9zcWwvcHJlXzkuMS9ub2Rlcy5zcWwgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy90eXBlcy90ZW1wbGF0ZXMvdHlwZS9zcWwvcHJlXzku MS9ub2Rlcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uZGRjYTFiNQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3R5cGVzL3RlbXBsYXRlcy90eXBlL3NxbC9wcmVfOS4xL25vZGVzLnNxbApA QCAtMCwwICsxLDcgQEAKK1NFTEVDVCB0Lm9pZCwgdC50eXBuYW1lIEFTIG5h bWUKK0ZST00gcGdfdHlwZSB0CisgICAgTEVGVCBPVVRFUiBKT0lOIHBnX3R5 cGUgZSBPTiBlLm9pZD10LnR5cGVsZW0KKyAgICBMRUZUIE9VVEVSIEpPSU4g cGdfY2xhc3MgY3QgT04gY3Qub2lkPXQudHlwcmVsaWQgQU5EIGN0LnJlbGtp bmQgPD4gJ2MnCisgICAgTEVGVCBPVVRFUiBKT0lOIHBnX25hbWVzcGFjZSBu c3AgT04gbnNwLm9pZCA9IHQudHlwbmFtZXNwYWNlCitXSEVSRSB0LnR5cHR5 cGUgIT0gJ2QnIEFORCB0LnR5cG5hbWUgTk9UIExJS0UgRSdcXF8lJyBBTkQg dC50eXBuYW1lc3BhY2UgPSB7e3NjaWR9fTo6b2lkCitPUkRFUiBCWSB0LnR5 cG5hbWU7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvdGVtcGxhdGVzL3R5cGUvc3FsL3By ZV85LjEvcHJvcGVydGllcy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90eXBlcy90 ZW1wbGF0ZXMvdHlwZS9zcWwvcHJlXzkuMS9wcm9wZXJ0aWVzLnNxbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zODViOTA2Ci0tLSAv ZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvdGVtcGxhdGVz L3R5cGUvc3FsL3ByZV85LjEvcHJvcGVydGllcy5zcWwKQEAgLTAsMCArMSwx NiBAQAorU0VMRUNUIHQub2lkLCB0LnR5cG5hbWUgQVMgbmFtZSwKKyAgICAo Q0FTRSBXSEVOIENBU1QoY29hbGVzY2UodC50eXBjb2xsYXRpb24sICcwJykg QVMgaW50ZWdlcikgPSAxMDAgVEhFTiB0cnVlIEVsU0UgZmFsc2UgRU5EKSBB UyBpc19jb2xsYXRhYmxlLAorICAgIHQudHlwYWNsIEFTIHR5cGVfYWNsLAor ICAgIHQuKiwgZm9ybWF0X3R5cGUodC5vaWQsIG51bGwpIEFTIGFsaWFzLAor ICAgIHBnX2dldF91c2VyYnlpZCh0LnR5cG93bmVyKSBhcyB0eXBlb3duZXIs IGUudHlwbmFtZSBhcyBlbGVtZW50LAorICAgIGRlc2NyaXB0aW9uLCBjdC5v aWQgQVMgdGFib2lkLAorICAgIChDQVNFIFdIRU4gKHQub2lkIDw9IHt7IGRh dGxhc3RzeXNvaWR9fTo6b2lkIE9SIGN0Lm9pZCAhPSAwKSBUSEVOIHRydWUg RWxTRSBmYWxzZSBFTkQpIEFTIGlzX3N5c190eXBlCitGUk9NIHBnX3R5cGUg dAorICAgIExFRlQgT1VURVIgSk9JTiBwZ190eXBlIGUgT04gZS5vaWQ9dC50 eXBlbGVtCisgICAgTEVGVCBPVVRFUiBKT0lOIHBnX2NsYXNzIGN0IE9OIGN0 Lm9pZD10LnR5cHJlbGlkIEFORCBjdC5yZWxraW5kIDw+ICdjJworICAgIExF RlQgT1VURVIgSk9JTiBwZ19kZXNjcmlwdGlvbiBkZXMgT04gKGRlcy5vYmpv aWQ9dC5vaWQgQU5EIGRlcy5jbGFzc29pZD0ncGdfdHlwZSc6OnJlZ2NsYXNz KQorV0hFUkUgdC50eXB0eXBlICE9ICdkJyBBTkQgdC50eXBuYW1lIE5PVCBM SUtFIEUnXFxfJScgQU5EIHQudHlwbmFtZXNwYWNlID0ge3tzY2lkfX06Om9p ZAoreyUgaWYgdGlkICV9CisgICAgQU5EIHQub2lkID0ge3t0aWR9fTo6b2lk Cit7JSBlbmRpZiAlfQorT1JERVIgQlkgdC50eXBuYW1lOwpcIE5vIG5ld2xp bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3R5cGVzL3RlbXBsYXRlcy90eXBlL3NxbC9wcmVfOS4xL3VwZGF0ZS5zcWwg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy90eXBlcy90ZW1wbGF0ZXMvdHlwZS9zcWwvcHJl XzkuMS91cGRhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLjNmMjY2M2EKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy90eXBlcy90ZW1wbGF0ZXMvdHlwZS9zcWwvcHJlXzkuMS91cGRhdGUu c3FsCkBAIC0wLDAgKzEsMTA3IEBACit7JSBpbXBvcnQgJ21hY3Jvcy9zZWN1 cml0eS5tYWNyb3MnIGFzIFNFQ0xBQkxFICV9Cit7JSBpbXBvcnQgJ21hY3Jv cy9wcml2aWxlZ2UubWFjcm9zJyBhcyBQUklWSUxFR0UgJX0KK3slIGlmIGRh dGEgJX0KK3sjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0jfQoreyMgQmVsb3cgd2lsbCBjaGFuZ2Ugb2JqZWN0IG93bmVyICN9Cit7 JSBpZiBkYXRhLnR5cGVvd25lciBhbmQgZGF0YS50eXBlb3duZXIgIT0gb19k YXRhLnR5cGVvd25lciAlfQorQUxURVIgVFlQRSB7eyBjb25ufHF0SWRlbnQo b19kYXRhLnNjaGVtYSwgb19kYXRhLm5hbWUpIH19CisgICAgT1dORVIgVE8g e3sgZGF0YS50eXBlb3duZXIgfX07CisKK3slIGVuZGlmICV9Cit7Iz09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09I30KK3sjIEJlbG93 IHdpbGwgY2hhbmdlIG9iamVjdHMgY29tbWVudCAgI30KK3slIGlmIGRhdGEu ZGVzY3JpcHRpb24gYW5kIGRhdGEuZGVzY3JpcHRpb24gIT0gb19kYXRhLmRl c2NyaXB0aW9uICV9CitDT01NRU5UIE9OIFRZUEUge3sgY29ubnxxdElkZW50 KG9fZGF0YS5zY2hlbWEsIG9fZGF0YS5uYW1lKSB9fQorICAgIElTIHt7IGRh dGEuZGVzY3JpcHRpb258cXRMaXRlcmFsIH19OworCit7JSBlbmRpZiAlfQor eyM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSN9Cit7 IyMjIFRoZSBzcWwgZ2l2ZW4gYmVsb3cgd2lsbCB1cGRhdGUgY29tcG9zaXRl IHR5cGUgIyMjfQoreyUgaWYgZGF0YS5jb21wb3NpdGUgYW5kIGRhdGEuY29t cG9zaXRlfGxlbmd0aCA+IDAgJX0KK3slIHNldCBjb21wb3NpdGUgPSBkYXRh LmNvbXBvc2l0ZSAlfQoreyUgaWYgJ2RlbGV0ZWQnIGluIGNvbXBvc2l0ZSBh bmQgY29tcG9zaXRlLmRlbGV0ZWR8bGVuZ3RoID4gMCAlfQoreyUgZm9yIHIg aW4gY29tcG9zaXRlLmRlbGV0ZWQgJX0KK0FMVEVSIFRZUEUge3sgY29ubnxx dElkZW50KG9fZGF0YS5zY2hlbWEsIG9fZGF0YS5uYW1lKSB9fQorICAgIERS T1AgQVRUUklCVVRFIHt7Y29ubnxxdElkZW50KHIubWVtYmVyX25hbWUpfX07 Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7JSBpZiAnYWRkZWQnIGlu IGNvbXBvc2l0ZSBhbmQgY29tcG9zaXRlLmFkZGVkfGxlbmd0aCA+IDAgJX0K K3slIGZvciByIGluIGNvbXBvc2l0ZS5hZGRlZCAlfQorQUxURVIgVFlQRSB7 eyBjb25ufHF0SWRlbnQob19kYXRhLnNjaGVtYSwgb19kYXRhLm5hbWUpIH19 CisgICAgQUREIEFUVFJJQlVURSB7e2Nvbm58cXRJZGVudChyLm1lbWJlcl9u YW1lKX19IHt7Y29ubnxxdElkZW50KHIudHlwZSl9fXslIGlmIHIuaXNfdGxl bmd0aCBhbmQgci50bGVuZ3RoICV9Cisoe3tyLnRsZW5ndGh9fXslIGlmIHIu aXNfcHJlY2lzaW9uIGFuZCByLnByZWNpc2lvbiAlfSx7e3IucHJlY2lzaW9u fX17JSBlbmRpZiAlfSl7JSBlbmRpZiAlfXslIGlmIHIuY29sbGF0aW9uICV9 CisgQ09MTEFURSB7e3IuY29sbGF0aW9ufX17JSBlbmRpZiAlfTsKK3slIGVu ZGZvciAlfQoreyUgZW5kaWYgJX0KK3slIGlmICdjaGFuZ2VkJyBpbiBjb21w b3NpdGUgYW5kIGNvbXBvc2l0ZS5jaGFuZ2VkfGxlbmd0aCA+IDAgJX0KK3sl IGZvciByIGluIGNvbXBvc2l0ZS5jaGFuZ2VkICV9CitBTFRFUiBUWVBFIHt7 IGNvbm58cXRJZGVudChvX2RhdGEuc2NoZW1hLCBvX2RhdGEubmFtZSkgfX0K KyAgICBBTFRFUiBBVFRSSUJVVEUge3tjb25ufHF0SWRlbnQoci5tZW1iZXJf bmFtZSl9fSBTRVQgREFUQSBUWVBFIHt7Y29ubnxxdElkZW50KHIudHlwZSl9 fXslIGlmIHIuaXNfdGxlbmd0aCBhbmQgci50bGVuZ3RoICV9Cisoe3tyLnRs ZW5ndGh9fXslIGlmIHIuaXNfcHJlY2lzaW9uIGFuZCByLnByZWNpc2lvbiAl fSx7e3IucHJlY2lzaW9ufX17JSBlbmRpZiAlfSl7JSBlbmRpZiAlfXslIGlm IHIuY29sbGF0aW9uICV9CisgQ09MTEFURSB7e3IuY29sbGF0aW9ufX17JSBl bmRpZiAlfTsKK3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KKworeyUgZW5k aWYgJX0KK3sjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0jfQoreyMjIyBUaGUgc3FsIGdpdmVuIGJlbG93IHdpbGwgdXBkYXRlIGVu dW0gdHlwZSAjIyN9Cit7JSBpZiBkYXRhLmVudW0gYW5kIGRhdGEuZW51bXxs ZW5ndGggPiAwICV9Cit7JSBzZXQgZW51bSA9IGRhdGEuZW51bSAlfQoreyUg c2V0IG9fZW51bV9sZW4gPSBvX2RhdGEuZW51bXxsZW5ndGggJX0KK3sjIFdl IG5lZWQgYWN0dWFsIGxpc3QgaW5kZXggZnJvbSBsZW5ndGggI30KK3slIHNl dCBvX2VudW1fbGVuID0gb19lbnVtX2xlbiAtIDEgJX0KK3slIGlmICdhZGRl ZCcgaW4gZW51bSBhbmQgZW51bS5hZGRlZHxsZW5ndGggPiAwICV9Cit7JSBm b3IgciBpbiBlbnVtLmFkZGVkICV9Cit7JSBzZXQgY19pZHggPSBsb29wLmlu ZGV4ICV9Cit7JSBpZiBjX2lkeCA9PSAxICV9Cit7IyBpZiBmaXJzdCBuZXcg ZWxlbWVudCB0aGVuIGFkZCBpdCBhZnRlciBvbGQgZGF0YSBlbnVtIGxpc3Qj fQorQUxURVIgVFlQRSB7eyBjb25ufHF0SWRlbnQob19kYXRhLnNjaGVtYSwg b19kYXRhLm5hbWUpIH19CisgICAgQUREIFZBTFVFIHt7ci5sYWJlbHxxdExp dGVyYWx9fSBBRlRFUiB7e29fZGF0YS5lbnVtW29fZW51bV9sZW5dLmxhYmVs fHF0TGl0ZXJhbCB9fTsKK3slIGVsc2UgJX0KK3sjIGlmIGZpcnN0IG5ldyBl bGVtZW50IHRoZW4gYWRkIGl0IGFmdGVyIG5ldyBkYXRhIGVudW0gbGlzdCN9 Cit7JSBzZXQgcF9pZHggPSBsb29wLmluZGV4IC0gMiAlfQorQUxURVIgVFlQ RSB7eyBjb25ufHF0SWRlbnQob19kYXRhLnNjaGVtYSwgb19kYXRhLm5hbWUp IH19CisgICAgQUREIFZBTFVFIHt7ci5sYWJlbHxxdExpdGVyYWx9fSBBRlRF UiB7e2VudW0uYWRkZWRbcF9pZHhdLmxhYmVsfHF0TGl0ZXJhbH19OworeyUg ZW5kaWYgJX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KKworeyUgZW5k aWYgJX0KK3sjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0jfQoreyMgQ2hhbmdlIHRoZSBwcml2aWxlZ2VzICN9Cit7JSBpZiBkYXRh LnR5cGFjbCAlfQoreyUgaWYgJ2RlbGV0ZWQnIGluIGRhdGEudHlwYWNsICV9 Cit7JSBmb3IgcHJpdiBpbiBkYXRhLnR5cGFjbC5kZWxldGVkICV9Cit7eyBQ UklWSUxFR0UuUkVTRVRBTEwoY29ubiwgJ1RZUEUnLCBwcml2LmdyYW50ZWUs IG9fZGF0YS5uYW1lKSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQor eyUgaWYgJ2NoYW5nZWQnIGluIGRhdGEudHlwYWNsICV9Cit7JSBmb3IgcHJp diBpbiBkYXRhLnR5cGFjbC5jaGFuZ2VkICV9Cit7eyBQUklWSUxFR0UuUkVT RVRBTEwoY29ubiwgJ1RZUEUnLCBwcml2LmdyYW50ZWUsIGRhdGEubmFtZSkg fX0KK3t7IFBSSVZJTEVHRS5BUFBMWShjb25uLCAnVFlQRScsIHByaXYuZ3Jh bnRlZSwgb19kYXRhLm5hbWUsIHByaXYud2l0aG91dF9ncmFudCwgcHJpdi53 aXRoX2dyYW50KSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyUg aWYgJ2FkZGVkJyBpbiBkYXRhLnR5cGFjbCAlfQoreyUgZm9yIHByaXYgaW4g ZGF0YS50eXBhY2wuYWRkZWQgJX0KK3t7IFBSSVZJTEVHRS5BUFBMWShjb25u LCAnVFlQRScsIHByaXYuZ3JhbnRlZSwgb19kYXRhLm5hbWUsIHByaXYud2l0 aG91dF9ncmFudCwgcHJpdi53aXRoX2dyYW50KSB9fQoreyUgZW5kZm9yICV9 Cit7JSBlbmRpZiAlfQorCit7JSBlbmRpZiAlfQoreyM9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PSN9Cit7IyBCZWxvdyB3aWxsIGNo YW5nZSBvYmplY3QgbmFtZSAjfQoreyUgaWYgZGF0YS5uYW1lIGFuZCBkYXRh Lm5hbWUgIT0gb19kYXRhLm5hbWUgJX0KK0FMVEVSIFRZUEUge3sgY29ubnxx dElkZW50KG9fZGF0YS5zY2hlbWEsIG9fZGF0YS5uYW1lKSB9fQorICAgIFJF TkFNRSBUTyB7eyBjb25ufHF0SWRlbnQoZGF0YS5uYW1lKSB9fTsKKworeyUg ZW5kaWYgJX0KK3sjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0jfQoreyMgQmVsb3cgd2lsbCBjaGFuZ2UgdGhlIHNjaGVtYSBmb3Ig b2JqZWN0ICN9Cit7IyB3aXRoIGV4dHJhIGlmIGNvbmRpdGlvbiB3ZSB3aWxs IGFsc28gbWFrZSBzdXJlIHRoYXQgb2JqZWN0IGhhcyBjb3JyZWN0IG5hbWUg I30KK3slIGlmIGRhdGEuc2NoZW1hIGFuZCBkYXRhLnNjaGVtYSAhPSBvX2Rh dGEuc2NoZW1hICV9CitBTFRFUiBUWVBFIHslIGlmIGRhdGEubmFtZSAhPSBv X2RhdGEubmFtZSAlfXt7IGNvbm58cXRJZGVudChvX2RhdGEuc2NoZW1hLCBk YXRhLm5hbWUpIH19Cit7JSBlbHNlICV9e3sgY29ubnxxdElkZW50KG9fZGF0 YS5zY2hlbWEsIG9fZGF0YS5uYW1lKSB9fXslIGVuZGlmICV9CisgICAgU0VU IFNDSEVNQSB7eyBjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEpIH19OworCit7 JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0KXCBObyBuZXdsaW5lIGF0IGVuZCBv ZiBmaWxlCg== --047d7bfea0b65c85e4052dc838c7 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 --047d7bfea0b65c85e4052dc838c7--