Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hZ8j1-0001He-De for pgadmin-hackers@arkaria.postgresql.org; Fri, 07 Jun 2019 06:51:44 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1hZ8iz-0001Fm-5r for pgadmin-hackers@arkaria.postgresql.org; Fri, 07 Jun 2019 06:51:41 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hZ8iy-0001FS-P4 for pgadmin-hackers@lists.postgresql.org; Fri, 07 Jun 2019 06:51:40 +0000 Received: from mail-lf1-x12a.google.com ([2a00:1450:4864:20::12a]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hZ8iu-00082g-5J for pgadmin-hackers@postgresql.org; Fri, 07 Jun 2019 06:51:39 +0000 Received: by mail-lf1-x12a.google.com with SMTP id 136so740618lfa.8 for ; Thu, 06 Jun 2019 23:51:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:from:date:message-id:subject:to; bh=xh3t5kuZoZUaziN58/P52NoRz4rYOyx4iXZ/WmYMgsc=; b=Nq0rPsB8nMHKh7n8vtCmOgLXYTsRaCFCOHIIC/E5uAFU0aINA0ObEfbRermTBPv6AO mRSxoloAB066fFhgpcSFEXTo5q7fKvZh8d+jcPVSAQimtOQa+ZRDXzENYtxn8PAnKeWX ewj0raqrTDoujEN5et2Vmt55vyR8thGaaM+KkRX99GcqCuyTok4+rSiGZ2Xb84acihq3 d1sRIfvadUJ11XvQt0VnNzkjY1Rx447XAssvSnQcN8hBEyebaOKEIlk95Oy1WMdOef2y 0AOUtm3X8/Zhg1aduszz0Z/5CnCoVsC1UsfKt4RtVHiXYUDkZLk9mUPI9OmOfrcH3tNZ 9bwA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=xh3t5kuZoZUaziN58/P52NoRz4rYOyx4iXZ/WmYMgsc=; b=KqHXJkmNPzo7uJfm7fOMdqGRah2I9tX/R+yCLiQcluBYipoLZ7Nolj5B+Pa+Iz3bJE U8U9IANq0E1yDeVOouFzB5QTvzahs43yEx8Bw6DKEUQIJLskoPr3a8yQZeP+BR0puDtn Et20adovjQJU6atwday5VHNuGM3bUc5/TQli+Xber2m2920FudWSXV4/ozi72yuMn0Ph N+14O0n1UO+38lghyFD49VIttYjYN1Y2dbXt/UOYRYYTUk4+JHH8dJdvJZjvqV/vdJz/ FmnLpL0mv3nh5NkdmkEcWDwN7jwzIDcAMIdx/SDm7Xj7czgGu1+iBWTbxivfObXiIGd7 qAHQ== X-Gm-Message-State: APjAAAXs8cfidOu0BeBaBhEDoWupoJMdNdXVDjL3wY2o2WOJXrmX4h+g Ibp48aSOFI+hpuljiiesgfl2rDBM8X6+w6dMsvHory+K0Vg= X-Google-Smtp-Source: APXvYqyZp1HdZIWIDMtZHrvA93a0fdnCWHHSVKsUoIZl8VI12+ZQiE1DBdWQMCHK+RFdi8z4NLkO/I2FQQzlKxsjMq4= X-Received: by 2002:ac2:4c84:: with SMTP id d4mr25387597lfl.1.1559890294289; Thu, 06 Jun 2019 23:51:34 -0700 (PDT) MIME-Version: 1.0 From: Aditya Toshniwal Date: Fri, 7 Jun 2019 12:20:58 +0530 Message-ID: Subject: [pgAdmin][RM4329] Initialization error when parameterised functions debugged in parallel in two separate tabs To: pgadmin-hackers Content-Type: multipart/mixed; boundary="000000000000e18ac2058ab642a0" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --000000000000e18ac2058ab642a0 Content-Type: multipart/alternative; boundary="000000000000e18abf058ab6429e" --000000000000e18abf058ab6429e Content-Type: text/plain; charset="UTF-8" Hi Hackers, Attached is the patch for debugger improvements. The changes include: 1) Change the way debug info is stored in session. Removed redundant session related code in debugger code. All the session related handling done at one place. 2) Fixed a bug where debugger was not opening for EPAS package function. 3) If a package is defined without body and we try to debug a proc/func, the debugger opened a blank window. Changes made so that it will throw error as "XYZ is not defined in package body." -- Thanks and Regards, Aditya Toshniwal Software Engineer | EnterpriseDB India | Pune "Don't Complain about Heat, Plant a TREE" --000000000000e18abf058ab6429e Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Hackers,

Attached is the patch for debugger improvement= s. The changes include:
1) Change the way debug info is stored in session. = Removed redundant session related code in debugger code. All the session re= lated handling done at one place.
2) Fixed a bug where debugger was not o= pening for EPAS package function.
3) If a package is defined without= body and we try to debug a proc/func, the debugger opened a blank window. = Changes made so that it will throw error as "XYZ is not defined in pac= kage body."

--
<= div>
Thanks and Regards,
Aditya Toshniwal
Software Engineer |=C2=A0EnterpriseD= B India |=C2=A0Pune
"Don't Complain about Heat, Plant a TREE"
=
--000000000000e18abf058ab6429e-- --000000000000e18ac2058ab642a0 Content-Type: application/octet-stream; name="RM4329.patch" Content-Disposition: attachment; filename="RM4329.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jwlqdrgf0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2RlYnVnZ2VyL19faW5pdF9fLnB5IGIvd2Vi L3BnYWRtaW4vdG9vbHMvZGVidWdnZXIvX19pbml0X18ucHkKaW5kZXggNDRkNTVkYTguLmJhM2I3 ZWU4IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9kZWJ1Z2dlci9fX2luaXRfXy5weQor KysgYi93ZWIvcGdhZG1pbi90b29scy9kZWJ1Z2dlci9fX2luaXRfXy5weQpAQCAtMzMsMTAgKzMz LDEwIEBAIGZyb20gcGdhZG1pbi5zZXR0aW5ncyBpbXBvcnQgZ2V0X3NldHRpbmcKIAogZnJvbSBj b25maWcgaW1wb3J0IFBHX0RFRkFVTFRfRFJJVkVSCiBmcm9tIHBnYWRtaW4ubW9kZWwgaW1wb3J0 IGRiLCBEZWJ1Z2dlckZ1bmN0aW9uQXJndW1lbnRzCitmcm9tIHBnYWRtaW4udG9vbHMuZGVidWdn ZXIudXRpbHMuZGVidWdnZXJfaW5zdGFuY2UgaW1wb3J0IERlYnVnZ2VySW5zdGFuY2UKIAogIyBD b25zdGFudHMKIEFTWU5DX09LID0gMQotZGVidWdnZXJfY2xvc2Vfc2Vzc2lvbl9sb2NrID0gTG9j aygpCiAKIAogY2xhc3MgRGVidWdnZXJNb2R1bGUoUGdBZG1pbk1vZHVsZSk6CkBAIC0yMzQsMTQg KzIzNCw3IEBAIGNsYXNzIERlYnVnZ2VyTW9kdWxlKFBnQWRtaW5Nb2R1bGUpOgogICAgICAgICA6 cGFyYW0gdXNlcjoKICAgICAgICAgOnJldHVybjoKICAgICAgICAgIiIiCi0gICAgICAgIHdpdGgg ZGVidWdnZXJfY2xvc2Vfc2Vzc2lvbl9sb2NrOgotICAgICAgICAgICAgaWYgJ2RlYnVnZ2VyRGF0 YScgaW4gc2Vzc2lvbjoKLSAgICAgICAgICAgICAgICBmb3IgdHJhbnNfaWQgaW4gc2Vzc2lvblsn ZGVidWdnZXJEYXRhJ106Ci0gICAgICAgICAgICAgICAgICAgIGNsb3NlX2RlYnVnZ2VyX3Nlc3Np b24odHJhbnNfaWQpCi0KLSAgICAgICAgICAgICAgICAjIERlbGV0ZSB0aGUgYWxsIGRlYnVnZ2Vy IGRhdGEgZnJvbSBzZXNzaW9uIHZhcmlhYmxlCi0gICAgICAgICAgICAgICAgZGVsIHNlc3Npb25b J2RlYnVnZ2VyRGF0YSddCi0gICAgICAgICAgICAgICAgZGVsIHNlc3Npb25bJ2Z1bmN0aW9uRGF0 YSddCisgICAgICAgIGNsb3NlX2RlYnVnZ2VyX3Nlc3Npb24oTm9uZSwgY2xvc2VfYWxsPVRydWUp CiAKIAogYmx1ZXByaW50ID0gRGVidWdnZXJNb2R1bGUoTU9EVUxFX05BTUUsIF9fbmFtZV9fKQpA QCAtMjkxLDI2ICsyODQsNiBAQCBkZWYgc2NyaXB0X2RlYnVnZ2VyX2RpcmVjdF9qcygpOgogICAg ICkKIAogCi1kZWYgdXBkYXRlX3Nlc3Npb25fZGVidWdnZXJfdHJhbnNhY3Rpb24odHJhbnNfaWQs IGRhdGEpOgotICAgICIiIgotICAgIFVwZGF0ZSB0aGUgc2Vzc2lvbiB2YXJpYWJsZXMgcmVxdWly ZWQgZm9yIGRlYnVnZ2VyIHdpdGggdHJhbnNhY3Rpb24gSUQKLSAgICAiIiIKLSAgICBkZWJ1Z2dl cl9kYXRhID0gc2Vzc2lvblsnZGVidWdnZXJEYXRhJ10KLSAgICBkZWJ1Z2dlcl9kYXRhW3N0cih0 cmFuc19pZCldID0gZGF0YQotCi0gICAgc2Vzc2lvblsnZGVidWdnZXJEYXRhJ10gPSBkZWJ1Z2dl cl9kYXRhCi0KLQotZGVmIHVwZGF0ZV9zZXNzaW9uX2Z1bmN0aW9uX3RyYW5zYWN0aW9uKHRyYW5z X2lkLCBkYXRhKToKLSAgICAiIiIKLSAgICBVcGRhdGUgdGhlIHNlc3Npb24gdmFyaWFibGVzIG9m IGZ1bmN0aW9ucyByZXF1aXJlZCB0byBkZWJ1ZyB3aXRoCi0gICAgdHJhbnNhY3Rpb24gSUQKLSAg ICAiIiIKLSAgICBmdW5jdGlvbl9kYXRhID0gc2Vzc2lvblsnZnVuY3Rpb25EYXRhJ10KLSAgICBm dW5jdGlvbl9kYXRhW3N0cih0cmFuc19pZCldID0gZGF0YQotICAgIHNlc3Npb25bJ2Z1bmN0aW9u RGF0YSddID0gZnVuY3Rpb25fZGF0YQotCi0KIEBibHVlcHJpbnQucm91dGUoCiAgICAgJy9pbml0 Lzxub2RlX3R5cGU+LzxpbnQ6c2lkPi88aW50OmRpZD4vPGludDpzY2lkPi88aW50OmZpZD4nLAog ICAgIG1ldGhvZHM9WydHRVQnXSwgZW5kcG9pbnQ9J2luaXRfZm9yX2Z1bmN0aW9uJwpAQCAtNDA0 LDEwICszNzcsMTkgQEAgZGVmIGluaXRfZnVuY3Rpb24obm9kZV90eXBlLCBzaWQsIGRpZCwgc2Np ZCwgZmlkLCB0cmlkPU5vbmUpOgogCiAgICAgIyBDaGVjayB0aGF0IHRoZSBmdW5jdGlvbiBpcyBh Y3R1YWxseSBkZWJ1Z2dhYmxlLi4uCiAgICAgaWYgcl9zZXRbJ3Jvd3MnXVswXToKKyAgICAgICAg IyBJZiBmdW5jL3Byb2MgaXMgbm90IGRlZmluZWQgaW4gcGFja2FnZSBib2R5CisgICAgICAgICMg dGhlbiBpdCBpcyBub3QgZGVidWdnYWJsZQorICAgICAgICBpZiAocl9zZXRbJ3Jvd3MnXVswXVsn cGtnbmFtZSddIGlzIG5vdCBOb25lIG9yCisgICAgICAgICAgICByX3NldFsncm93cyddWzBdWydw a2duYW1lJ10gIT0gJycpIGFuZCBcCisgICAgICAgICAgICAgICAgcl9zZXRbJ3Jvd3MnXVswXVsn cHJvc3JjJ10gPT0gJyc6CisgICAgICAgICAgICByZXRfc3RhdHVzID0gRmFsc2UKKyAgICAgICAg ICAgIG1zZyA9IHJfc2V0Wydyb3dzJ11bMF1bJ25hbWUnXSArICcgJyArIFwKKyAgICAgICAgICAg ICAgICBnZXR0ZXh0KCJpcyBub3QgZGVmaW5lZCBpbiBwYWNrYWdlIGJvZHkuIikKKwogICAgICAg ICAjIEZ1bmN0aW9uIHdpdGggYSBjb2xvbiBpbiB0aGUgbmFtZSBjYW5ub3QgYmUgZGVidWdnZWQu CiAgICAgICAgICMgSWYgdGhpcyBpcyBhbiBFREIgd3JhcHBlZCBmdW5jdGlvbiwgbm8gZGVidWdn aW5nIGFsbG93ZWQKICAgICAgICAgIyBGdW5jdGlvbiB3aXRoIHJldHVybiB0eXBlICJ0cmlnZ2Vy IiBjYW5ub3QgYmUgZGVidWdnZWQuCi0gICAgICAgIGlmICI6IiBpbiByX3NldFsncm93cyddWzBd WyduYW1lJ106CisgICAgICAgIGVsaWYgIjoiIGluIHJfc2V0Wydyb3dzJ11bMF1bJ25hbWUnXToK ICAgICAgICAgICAgIHJldF9zdGF0dXMgPSBGYWxzZQogICAgICAgICAgICAgbXNnID0gZ2V0dGV4 dCgKICAgICAgICAgICAgICAgICAiRnVuY3Rpb25zIHdpdGggYSBjb2xvbiBpbiB0aGUgbmFtZSBj YW5ub3QgYmUgZGVidWdnZWQuIikKQEAgLTQ2OSwxMiArNDUxLDYgQEAgZGVmIGluaXRfZnVuY3Rp b24obm9kZV90eXBlLCBzaWQsIGRpZCwgc2NpZCwgZmlkLCB0cmlkPU5vbmUpOgogICAgICAgICBj dXJyZW50X2FwcC5sb2dnZXIuZGVidWcobXNnKQogICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2Vy dmVyX2Vycm9yKG1zZykKIAotICAgICMgU3RvcmUgdGhlIGZ1bmN0aW9uIGluZm9ybWF0aW9uIGlu IHNlc3Npb24gdmFyaWFibGUKLSAgICBpZiAnZnVuY0RhdGEnIG5vdCBpbiBzZXNzaW9uOgotICAg ICAgICBmdW5jdGlvbl9kYXRhID0gZGljdCgpCi0gICAgZWxzZToKLSAgICAgICAgZnVuY3Rpb25f ZGF0YSA9IHNlc3Npb25bJ2Z1bmNEYXRhJ10KLQogICAgIGRhdGEgPSB7J25hbWUnOiByX3NldFsn cm93cyddWzBdWydwcm9hcmduYW1lcyddLAogICAgICAgICAgICAgJ3R5cGUnOiByX3NldFsncm93 cyddWzBdWydwcm9hcmd0eXBlbmFtZXMnXSwKICAgICAgICAgICAgICd1c2VfZGVmYXVsdCc6IHJf c2V0Wydyb3dzJ11bMF1bJ3Byb25hcmdkZWZhdWx0cyddLApAQCAtNTAyLDcgKzQ3OCw5IEBAIGRl ZiBpbml0X2Z1bmN0aW9uKG5vZGVfdHlwZSwgc2lkLCBkaWQsIHNjaWQsIGZpZCwgdHJpZD1Ob25l KToKIAogICAgIHJfc2V0Wydyb3dzJ11bMF1bJ3JlcXVpcmVfaW5wdXQnXSA9IGRhdGFbJ3JlcXVp cmVfaW5wdXQnXQogCi0gICAgZnVuY3Rpb25fZGF0YSA9IHsKKyAgICAjIENyZWF0ZSBhIGRlYnVn Z2VyIGluc3RhbmNlCisgICAgZGVfaW5zdCA9IERlYnVnZ2VySW5zdGFuY2UoKQorICAgIGRlX2lu c3QuZnVuY3Rpb25fZGF0YSA9IHsKICAgICAgICAgJ29pZCc6IGZpZCwKICAgICAgICAgJ25hbWUn OiByX3NldFsncm93cyddWzBdWyduYW1lJ10sCiAgICAgICAgICdpc19mdW5jJzogcl9zZXRbJ3Jv d3MnXVswXVsnaXNmdW5jJ10sCkBAIC01MjIsMTAgKzUwMCwxMSBAQCBkZWYgaW5pdF9mdW5jdGlv bihub2RlX3R5cGUsIHNpZCwgZGlkLCBzY2lkLCBmaWQsIHRyaWQ9Tm9uZSk6CiAgICAgICAgICdh cmdzX3ZhbHVlJzogJycKICAgICB9CiAKLSAgICBzZXNzaW9uWydmdW5jRGF0YSddID0gZnVuY3Rp b25fZGF0YQotCiAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKLSAgICAgICAgZGF0YT1y X3NldFsncm93cyddLAorICAgICAgICBkYXRhPWRpY3QoCisgICAgICAgICAgICBkZWJ1Z19pbmZv PXJfc2V0Wydyb3dzJ10sCisgICAgICAgICAgICB0cmFuc19pZD1kZV9pbnN0LnRyYW5zX2lkCisg ICAgICAgICksCiAgICAgICAgIHN0YXR1cz0yMDAKICAgICApCiAKQEAgLTUzMywxNiArNTEyLDE1 IEBAIGRlZiBpbml0X2Z1bmN0aW9uKG5vZGVfdHlwZSwgc2lkLCBkaWQsIHNjaWQsIGZpZCwgdHJp ZD1Ob25lKToKIEBibHVlcHJpbnQucm91dGUoJy9kaXJlY3QvPGludDp0cmFuc19pZD4nLCBtZXRo b2RzPVsnR0VUJ10sIGVuZHBvaW50PSdkaXJlY3QnKQogQGxvZ2luX3JlcXVpcmVkCiBkZWYgZGly ZWN0X25ldyh0cmFuc19pZCk6Ci0gICAgZGVidWdnZXJfZGF0YSA9IHNlc3Npb25bJ2RlYnVnZ2Vy RGF0YSddCisgICAgZGVfaW5zdCA9IERlYnVnZ2VySW5zdGFuY2UodHJhbnNfaWQpCisKICAgICAj IFJldHVybiBmcm9tIHRoZSBmdW5jdGlvbiBpZiB0cmFuc2FjdGlvbiBpZCBub3QgZm91bmQKLSAg ICBpZiBzdHIodHJhbnNfaWQpIG5vdCBpbiBkZWJ1Z2dlcl9kYXRhOgorICAgIGlmIGRlX2luc3Qu ZGVidWdnZXJfZGF0YSBpcyBOb25lOgogICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNl KGRhdGE9eydzdGF0dXMnOiBUcnVlfSkKIAotICAgIG9iaiA9IGRlYnVnZ2VyX2RhdGFbc3RyKHRy YW5zX2lkKV0KLQogICAgICMgaWYgaW5kaXJlY3QgZGVidWdnaW5nIHBhc3MgdmFsdWUgMCB0byBj bGllbnQgYW5kIGZvciBkaXJlY3QgZGVidWdnaW5nCiAgICAgIyBwYXNzIGl0IHRvIDEKLSAgICBk ZWJ1Z190eXBlID0gMCBpZiBvYmpbJ2RlYnVnX3R5cGUnXSA9PSAnaW5kaXJlY3QnIGVsc2UgMQor ICAgIGRlYnVnX3R5cGUgPSAwIGlmIGRlX2luc3QuZGVidWdnZXJfZGF0YVsnZGVidWdfdHlwZSdd ID09ICdpbmRpcmVjdCcgZWxzZSAxCiAKICAgICAiIiIKICAgICBBbmltYXRpb25zIGFuZCB0cmFu c2l0aW9ucyBhcmUgbm90IGF1dG9tYXRpY2FsbHkgR1BVIGFjY2VsZXJhdGVkIGFuZCBieQpAQCAt NTcyLDEyICs1NTAsMTEgQEAgZGVmIGRpcmVjdF9uZXcodHJhbnNfaWQpOgogCiAgICAgZnVuY3Rp b25fYXJndW1lbnRzID0gJygnCiAgICAgaWYgJ2Z1bmN0aW9uRGF0YScgaW4gc2Vzc2lvbjoKLSAg ICAgICAgc2Vzc2lvbl9mdW5jdGlvbl9kYXRhID0gc2Vzc2lvblsnZnVuY3Rpb25EYXRhJ11bc3Ry KHRyYW5zX2lkKV0KLSAgICAgICAgaWYgJ2FyZ3NfbmFtZScgaW4gc2Vzc2lvbl9mdW5jdGlvbl9k YXRhIGFuZCBcCi0gICAgICAgICAgICBzZXNzaW9uX2Z1bmN0aW9uX2RhdGFbJ2FyZ3NfbmFtZSdd IGlzIG5vdCBOb25lIGFuZCBcCi0gICAgICAgICAgICAgICAgc2Vzc2lvbl9mdW5jdGlvbl9kYXRh WydhcmdzX25hbWUnXSAhPSAnJzoKLSAgICAgICAgICAgIGFyZ3NfbmFtZV9saXN0ID0gc2Vzc2lv bl9mdW5jdGlvbl9kYXRhWydhcmdzX25hbWUnXS5zcGxpdCgiLCIpCi0gICAgICAgICAgICBhcmdz X3R5cGVfbGlzdCA9IHNlc3Npb25fZnVuY3Rpb25fZGF0YVsnYXJnc190eXBlJ10uc3BsaXQoIiwi KQorICAgICAgICBpZiAnYXJnc19uYW1lJyBpbiBkZV9pbnN0LmZ1bmN0aW9uX2RhdGEgYW5kIFwK KyAgICAgICAgICAgIGRlX2luc3QuZnVuY3Rpb25fZGF0YVsnYXJnc19uYW1lJ10gaXMgbm90IE5v bmUgYW5kIFwKKyAgICAgICAgICAgICAgICBkZV9pbnN0LmZ1bmN0aW9uX2RhdGFbJ2FyZ3NfbmFt ZSddICE9ICcnOgorICAgICAgICAgICAgYXJnc19uYW1lX2xpc3QgPSBkZV9pbnN0LmZ1bmN0aW9u X2RhdGFbJ2FyZ3NfbmFtZSddLnNwbGl0KCIsIikKKyAgICAgICAgICAgIGFyZ3NfdHlwZV9saXN0 ID0gZGVfaW5zdC5mdW5jdGlvbl9kYXRhWydhcmdzX3R5cGUnXS5zcGxpdCgiLCIpCiAgICAgICAg ICAgICBpbmRleCA9IDAKICAgICAgICAgICAgIGZvciBhcmdzX25hbWUgaW4gYXJnc19uYW1lX2xp c3Q6CiAgICAgICAgICAgICAgICAgZnVuY3Rpb25fYXJndW1lbnRzID0gJ3t9e30ge30sICcuZm9y bWF0KGZ1bmN0aW9uX2FyZ3VtZW50cywKQEAgLTU5MiwzNCArNTY5LDM4IEBAIGRlZiBkaXJlY3Rf bmV3KHRyYW5zX2lkKToKIAogICAgIGxheW91dCA9IGdldF9zZXR0aW5nKCdEZWJ1Z2dlci9MYXlv dXQnKQogCisgICAgZnVuY3Rpb25fbmFtZV93aXRoX2FyZ3VtZW50cyA9IFwKKyAgICAgICAgZGVf aW5zdC5kZWJ1Z2dlcl9kYXRhWydmdW5jdGlvbl9uYW1lJ10gKyBmdW5jdGlvbl9hcmd1bWVudHMK KwogICAgIHJldHVybiByZW5kZXJfdGVtcGxhdGUoCiAgICAgICAgICJkZWJ1Z2dlci9kaXJlY3Qu aHRtbCIsCiAgICAgICAgIF89Z2V0dGV4dCwKLSAgICAgICAgZnVuY3Rpb25fbmFtZT1vYmpbJ2Z1 bmN0aW9uX25hbWUnXSwKKyAgICAgICAgZnVuY3Rpb25fbmFtZT1kZV9pbnN0LmRlYnVnZ2VyX2Rh dGFbJ2Z1bmN0aW9uX25hbWUnXSwKICAgICAgICAgdW5pcXVlSWQ9dHJhbnNfaWQsCiAgICAgICAg IGRlYnVnX3R5cGU9ZGVidWdfdHlwZSwKICAgICAgICAgaXNfZGVza3RvcF9tb2RlPWN1cnJlbnRf YXBwLlBHQURNSU5fUlVOVElNRSwKICAgICAgICAgaXNfbGludXg9aXNfbGludXhfcGxhdGZvcm0s CiAgICAgICAgIGNsaWVudF9wbGF0Zm9ybT11c2VyX2FnZW50LnBsYXRmb3JtLAotICAgICAgICBm dW5jdGlvbl9uYW1lX3dpdGhfYXJndW1lbnRzPW9ialsnZnVuY3Rpb25fbmFtZSddICsgZnVuY3Rp b25fYXJndW1lbnRzLAorICAgICAgICBmdW5jdGlvbl9uYW1lX3dpdGhfYXJndW1lbnRzPWZ1bmN0 aW9uX25hbWVfd2l0aF9hcmd1bWVudHMsCiAgICAgICAgIGxheW91dD1sYXlvdXQKICAgICApCiAK IAogQGJsdWVwcmludC5yb3V0ZSgKLSAgICAnL2luaXRpYWxpemVfdGFyZ2V0LzxkZWJ1Z190eXBl Pi88aW50OnNpZD4vPGludDpkaWQ+LzxpbnQ6c2NpZD4vJwotICAgICc8aW50OmZ1bmNfaWQ+JywK KyAgICAnL2luaXRpYWxpemVfdGFyZ2V0LzxkZWJ1Z190eXBlPi88aW50OnRyYW5zX2lkPi88aW50 OnNpZD4vPGludDpkaWQ+LycKKyAgICAnPGludDpzY2lkPi88aW50OmZ1bmNfaWQ+JywKICAgICBt ZXRob2RzPVsnR0VUJywgJ1BPU1QnXSwKICAgICBlbmRwb2ludD0naW5pdGlhbGl6ZV90YXJnZXRf Zm9yX2Z1bmN0aW9uJwogKQogQGJsdWVwcmludC5yb3V0ZSgKLSAgICAnL2luaXRpYWxpemVfdGFy Z2V0LzxkZWJ1Z190eXBlPi88aW50OnNpZD4vPGludDpkaWQ+LzxpbnQ6c2NpZD4vJwotICAgICc8 aW50OmZ1bmNfaWQ+LzxpbnQ6dHJpX2lkPicsCisgICAgJy9pbml0aWFsaXplX3RhcmdldC88ZGVi dWdfdHlwZT4vPGludDp0cmFuc19pZD4vPGludDpzaWQ+LzxpbnQ6ZGlkPi8nCisgICAgJzxpbnQ6 c2NpZD4vPGludDpmdW5jX2lkPi88aW50OnRyaV9pZD4nLAogICAgIG1ldGhvZHM9WydHRVQnLCAn UE9TVCddLAogICAgIGVuZHBvaW50PSdpbml0aWFsaXplX3RhcmdldF9mb3JfdHJpZ2dlcicKICkK IEBsb2dpbl9yZXF1aXJlZAotZGVmIGluaXRpYWxpemVfdGFyZ2V0KGRlYnVnX3R5cGUsIHNpZCwg ZGlkLCBzY2lkLCBmdW5jX2lkLCB0cmlfaWQ9Tm9uZSk6CitkZWYgaW5pdGlhbGl6ZV90YXJnZXQo ZGVidWdfdHlwZSwgdHJhbnNfaWQsIHNpZCwgZGlkLAorICAgICAgICAgICAgICAgICAgICAgIHNj aWQsIGZ1bmNfaWQsIHRyaV9pZD1Ob25lKToKICAgICAiIiIKICAgICBpbml0aWFsaXplX3Rhcmdl dChkZWJ1Z190eXBlLCBzaWQsIGRpZCwgc2NpZCwgZnVuY19pZCwgdHJpX2lkKQogCkBAIC03MTgs MTYgKzY5OSw2IEBAIGRlZiBpbml0aWFsaXplX3RhcmdldChkZWJ1Z190eXBlLCBzaWQsIGRpZCwg c2NpZCwgZnVuY19pZCwgdHJpX2lkPU5vbmUpOgogCiAgICAgICAgIGZ1bmNfaWQgPSB0cl9zZXRb J3Jvd3MnXVswXVsndGdmb2lkJ10KIAotICAgICMgQ3JlYXRlIGEgdW5pcXVlIGlkIGZvciB0aGUg dHJhbnNhY3Rpb24KLSAgICB0cmFuc19pZCA9IHN0cihyYW5kb20ucmFuZGludCgxLCA5OTk5OTk5 KSkKLQotICAgICMgSWYgdGhlcmUgaXMgbm8gZGVidWdnaW5nIGluZm9ybWF0aW9uIGluIHNlc3Np b24gdmFyaWFibGUgdGhlbiBjcmVhdGUKLSAgICAjIHRoZSBzdG9yZSB0aGF0IGluZm9ybWF0aW9u Ci0gICAgaWYgJ2RlYnVnZ2VyRGF0YScgbm90IGluIHNlc3Npb246Ci0gICAgICAgIGRlYnVnZ2Vy X2RhdGEgPSBkaWN0KCkKLSAgICBlbHNlOgotICAgICAgICBkZWJ1Z2dlcl9kYXRhID0gc2Vzc2lv blsnZGVidWdnZXJEYXRhJ10KLQogICAgIHN0YXR1cyA9IFRydWUKIAogICAgICMgRmluZCBvdXQg dGhlIGRlYnVnZ2VyIHZlcnNpb24gYW5kIHN0b3JlIGl0IGluIHNlc3Npb24gdmFyaWFibGVzCkBA IC03NTYsNiArNzI3LDcgQEAgZGVmIGluaXRpYWxpemVfdGFyZ2V0KGRlYnVnX3R5cGUsIHNpZCwg ZGlkLCBzY2lkLCBmdW5jX2lkLCB0cmlfaWQ9Tm9uZSk6CiAgICAgIyBBZGQgdGhlIGRlYnVnZ2Vy IHZlcnNpb24gaW5mb3JtYXRpb24gdG8gcGdhZG1pbjQgbG9nIGZpbGUKICAgICBjdXJyZW50X2Fw cC5sb2dnZXIuZGVidWcoIkRlYnVnZ2VyIHZlcnNpb24gaXM6ICVkIiwgZGVidWdnZXJfdmVyc2lv bikKIAorICAgIGRlX2luc3QgPSBEZWJ1Z2dlckluc3RhbmNlKHRyYW5zX2lkKQogICAgICMgV2Ug bmVlZCB0byBwYXNzIHRoZSB2YWx1ZSBlbnRlcmVkIGJ5IHRoZSB1c2VyIGluIGRpYWxvZyBmb3Ig ZGlyZWN0CiAgICAgIyBkZWJ1Z2dpbmcsIEhlcmUgd2UgZ2V0IHRoZSB2YWx1ZSBpbiBjYXNlIG9m IGRpcmVjdCBkZWJ1Z2dpbmcgc28gdXBkYXRlCiAgICAgIyB0aGUgc2Vzc2lvbiB2YXJpYWJsZXMg YWNjb3JkaW5nbHksIEZvciBpbmRpcmVjdCBkZWJ1Z2dpbmcgdXNlciB3aWxsCkBAIC03NjQsNjUg KzczNiwyNiBAQCBkZWYgaW5pdGlhbGl6ZV90YXJnZXQoZGVidWdfdHlwZSwgc2lkLCBkaWQsIHNj aWQsIGZ1bmNfaWQsIHRyaV9pZD1Ob25lKToKICAgICBpZiByZXF1ZXN0Lm1ldGhvZCA9PSAnUE9T VCc6CiAgICAgICAgIGRhdGEgPSBqc29uLmxvYWRzKHJlcXVlc3QudmFsdWVzWydkYXRhJ10sIGVu Y29kaW5nPSd1dGYtOCcpCiAgICAgICAgIGlmIGRhdGE6Ci0gICAgICAgICAgICBkID0gc2Vzc2lv blsnZnVuY0RhdGEnXQotICAgICAgICAgICAgZFsnYXJnc192YWx1ZSddID0gZGF0YQotICAgICAg ICAgICAgc2Vzc2lvblsnZnVuY0RhdGEnXSA9IGQKKyAgICAgICAgICAgIGRlX2luc3QuZnVuY3Rp b25fZGF0YVsnYXJnc192YWx1ZSddID0gZGF0YQogCiAgICAgIyBVcGRhdGUgdGhlIGRlYnVnZ2Vy IGRhdGEgc2Vzc2lvbiB2YXJpYWJsZQogICAgICMgSGVyZSBmcmFtZV9pZCBpcyByZXF1aXJlZCB3 aGVuIHVzZXIgZGVidWcgdGhlIG11bHRpbGV2ZWwgZnVuY3Rpb24uCiAgICAgIyBXaGVuIHVzZXIg c2VsZWN0IHRoZSBmcmFtZSBmcm9tIGNsaWVudCB3ZSBuZWVkIHRvIHVwZGF0ZSB0aGUgZnJhbWUK ICAgICAjIGhlcmUgYW5kIHNldCB0aGUgYnJlYWtwb2ludCBpbmZvcm1hdGlvbiBvbiB0aGF0IGZ1 bmN0aW9uIG9pZAotICAgIGRlYnVnZ2VyX2RhdGFbc3RyKHRyYW5zX2lkKV0gPSB7CisgICAgZGVf aW5zdC5kZWJ1Z2dlcl9kYXRhID0gewogICAgICAgICAnY29ubl9pZCc6IGNvbm5faWQsCiAgICAg ICAgICdzZXJ2ZXJfaWQnOiBzaWQsCiAgICAgICAgICdkYXRhYmFzZV9pZCc6IGRpZCwKICAgICAg ICAgJ3NjaGVtYV9pZCc6IHNjaWQsCiAgICAgICAgICdmdW5jdGlvbl9pZCc6IGZ1bmNfaWQsCi0g ICAgICAgICdmdW5jdGlvbl9uYW1lJzogc2Vzc2lvblsnZnVuY0RhdGEnXVsnbmFtZSddLAorICAg ICAgICAnZnVuY3Rpb25fbmFtZSc6IGRlX2luc3QuZnVuY3Rpb25fZGF0YVsnbmFtZSddLAogICAg ICAgICAnZGVidWdfdHlwZSc6IGRlYnVnX3R5cGUsCiAgICAgICAgICdkZWJ1Z2dlcl92ZXJzaW9u JzogZGVidWdnZXJfdmVyc2lvbiwKICAgICAgICAgJ2ZyYW1lX2lkJzogMCwKICAgICAgICAgJ3Jl c3RhcnRfZGVidWcnOiAwCiAgICAgfQogCi0gICAgIyBTdG9yZSB0aGUgZ3JpZCBkaWN0aW9uYXJ5 IGludG8gdGhlIHNlc3Npb24gdmFyaWFibGUKLSAgICBzZXNzaW9uWydkZWJ1Z2dlckRhdGEnXSA9 IGRlYnVnZ2VyX2RhdGEKLQotICAgICMgVXBkYXRlIHRoZSBmdW5jdGlvbiBzZXNzaW9uICBpbmZv cm1hdGlvbiB3aXRoIHNhbWUgdHJhbnNhY3Rpb24gaWQKLSAgICBmdW5jX2RhdGEgPSBzZXNzaW9u WydmdW5jRGF0YSddCi0KLSAgICAjIFN0b3JlIHRoZSBmdW5jdGlvbiBpbmZvcm1hdGlvbiBpbiBz ZXNzaW9uIHZhcmlhYmxlCi0gICAgaWYgJ2Z1bmN0aW9uRGF0YScgbm90IGluIHNlc3Npb246Ci0g ICAgICAgIGZ1bmN0aW9uX2RhdGEgPSBkaWN0KCkKLSAgICBlbHNlOgotICAgICAgICBmdW5jdGlv bl9kYXRhID0gc2Vzc2lvblsnZnVuY3Rpb25EYXRhJ10KLQotICAgIGZ1bmN0aW9uX2RhdGFbc3Ry KHRyYW5zX2lkKV0gPSB7Ci0gICAgICAgICdvaWQnOiBmdW5jX2RhdGFbJ29pZCddLAotICAgICAg ICAnbmFtZSc6IGZ1bmNfZGF0YVsnbmFtZSddLAotICAgICAgICAnaXNfZnVuYyc6IGZ1bmNfZGF0 YVsnaXNfZnVuYyddLAotICAgICAgICAnaXNfcHBhc19kYXRhYmFzZSc6IGZ1bmNfZGF0YVsnaXNf cHBhc19kYXRhYmFzZSddLAotICAgICAgICAnaXNfY2FsbGFibGUnOiBmdW5jX2RhdGFbJ2lzX2Nh bGxhYmxlJ10sCi0gICAgICAgICdzY2hlbWEnOiBmdW5jX2RhdGFbJ3NjaGVtYSddLAotICAgICAg ICAnbGFuZ3VhZ2UnOiBmdW5jX2RhdGFbJ2xhbmd1YWdlJ10sCi0gICAgICAgICdyZXR1cm5fdHlw ZSc6IGZ1bmNfZGF0YVsncmV0dXJuX3R5cGUnXSwKLSAgICAgICAgJ2FyZ3NfdHlwZSc6IGZ1bmNf ZGF0YVsnYXJnc190eXBlJ10sCi0gICAgICAgICdhcmdzX25hbWUnOiBmdW5jX2RhdGFbJ2FyZ3Nf bmFtZSddLAotICAgICAgICAnYXJnX21vZGUnOiBmdW5jX2RhdGFbJ2FyZ19tb2RlJ10sCi0gICAg ICAgICd1c2VfZGVmYXVsdCc6IGZ1bmNfZGF0YVsndXNlX2RlZmF1bHQnXSwKLSAgICAgICAgJ2Rl ZmF1bHRfdmFsdWUnOiBmdW5jX2RhdGFbJ2RlZmF1bHRfdmFsdWUnXSwKLSAgICAgICAgJ3BrZ25h bWUnOiBmdW5jX2RhdGFbJ3BrZ25hbWUnXSwKLSAgICAgICAgJ3BrZyc6IGZ1bmNfZGF0YVsncGtn J10sCi0gICAgICAgICdyZXF1aXJlX2lucHV0JzogZnVuY19kYXRhWydyZXF1aXJlX2lucHV0J10s Ci0gICAgICAgICdhcmdzX3ZhbHVlJzogZnVuY19kYXRhWydhcmdzX3ZhbHVlJ10KLSAgICB9Ci0K LSAgICAjIFVwZGF0ZSB0aGUgc2Vzc2lvbiB2YXJpYWJsZSBvZiBmdW5jdGlvbiBpbmZvcm1hdGlv bgotICAgIHNlc3Npb25bJ2Z1bmN0aW9uRGF0YSddID0gZnVuY3Rpb25fZGF0YQotCi0gICAgIyBE ZWxldGUgdGhlICdmdW5jRGF0YScgc2Vzc2lvbiB2YXJpYWJsZXMgYXMgaXQgaXMgbm90IHVzZWQg bm93IGFzIHRhcmdldAotICAgICMgaXMgaW5pdGlhbGl6ZWQKLSAgICBkZWwgc2Vzc2lvblsnZnVu Y0RhdGEnXQorICAgIGRlX2luc3QudXBkYXRlX3Nlc3Npb24oKQogCiAgICAgcmV0dXJuIG1ha2Vf anNvbl9yZXNwb25zZShkYXRhPXsnc3RhdHVzJzogc3RhdHVzLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJ2RlYnVnZ2VyVHJhbnNJZCc6IHRyYW5zX2lkfSkKQEAgLTg0Mywy NCArNzc2LDkgQEAgZGVmIGNsb3NlKHRyYW5zX2lkKToKICAgICAgICAgdHJhbnNfaWQKICAgICAg ICAgLSB1bmlxdWUgdHJhbnNhY3Rpb24gaWQuCiAgICAgIiIiCi0gICAgIyBBcyBkZWJ1Z2dlciBk YXRhIGlzIG5vdCBpbiBzZXNzaW9uIHRoYXQgbWVhbnMgd2UgaGF2ZSBhbHJlYWR5Ci0gICAgIyBk ZWxldGVkIGFuZCBjbG9zZSB0aGUgdGFyZ2V0Ci0gICAgaWYgJ2RlYnVnZ2VyRGF0YScgbm90IGlu IHNlc3Npb246Ci0gICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoZGF0YT17J3N0YXR1 cyc6IFRydWV9KQotCi0gICAgIyBSZXR1cm4gZnJvbSB0aGUgZnVuY3Rpb24gaWYgdHJhbnNhY3Rp b24gaWQgbm90IGZvdW5kCi0gICAgaWYgc3RyKHRyYW5zX2lkKSBub3QgaW4gc2Vzc2lvblsnZGVi dWdnZXJEYXRhJ106Ci0gICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoZGF0YT17J3N0 YXR1cyc6IFRydWV9KQogCi0gICAgd2l0aCBkZWJ1Z2dlcl9jbG9zZV9zZXNzaW9uX2xvY2s6Ci0g ICAgICAgIHRyeToKLSAgICAgICAgICAgIGNsb3NlX2RlYnVnZ2VyX3Nlc3Npb24odHJhbnNfaWQp Ci0gICAgICAgICAgICAjIERlbGV0ZSB0aGUgZXhpc3RpbmcgZGVidWdnZXIgZGF0YSBpbiBzZXNz aW9uIHZhcmlhYmxlCi0gICAgICAgICAgICBkZWwgc2Vzc2lvblsnZGVidWdnZXJEYXRhJ11bc3Ry KHRyYW5zX2lkKV0KLSAgICAgICAgICAgIGRlbCBzZXNzaW9uWydmdW5jdGlvbkRhdGEnXVtzdHIo dHJhbnNfaWQpXQotICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZShkYXRhPXsn c3RhdHVzJzogVHJ1ZX0pCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAg ICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorICAgIGNs b3NlX2RlYnVnZ2VyX3Nlc3Npb24odHJhbnNfaWQpCisgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNw b25zZShkYXRhPXsnc3RhdHVzJzogVHJ1ZX0pCiAKIAogQGJsdWVwcmludC5yb3V0ZSgKQEAgLTg3 OCw4ICs3OTYsOCBAQCBkZWYgcmVzdGFydF9kZWJ1Z2dpbmcodHJhbnNfaWQpOgogICAgICAgICAt IFRyYW5zYWN0aW9uIElECiAgICAgIiIiCiAKLSAgICBkZWJ1Z2dlcl9kYXRhID0gc2Vzc2lvblsn ZGVidWdnZXJEYXRhJ10KLSAgICBpZiBzdHIodHJhbnNfaWQpIG5vdCBpbiBkZWJ1Z2dlcl9kYXRh OgorICAgIGRlX2luc3QgPSBEZWJ1Z2dlckluc3RhbmNlKHRyYW5zX2lkKQorICAgIGlmIGRlX2lu c3QuZGVidWdnZXJfZGF0YSBpcyBOb25lOgogICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3Bv bnNlKAogICAgICAgICAgICAgZGF0YT17CiAgICAgICAgICAgICAgICAgJ3N0YXR1cyc6IEZhbHNl LApAQCAtODg5LDQ0ICs4MDcsMzkgQEAgZGVmIHJlc3RhcnRfZGVidWdnaW5nKHRyYW5zX2lkKToK ICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICB9CiAgICAgICAgICkKLSAgICBvYmogPSBk ZWJ1Z2dlcl9kYXRhW3N0cih0cmFuc19pZCldCiAKLSAgICBtYW5hZ2VyID0gZ2V0X2RyaXZlcigK LSAgICAgICAgUEdfREVGQVVMVF9EUklWRVIpLmNvbm5lY3Rpb25fbWFuYWdlcihvYmpbJ3NlcnZl cl9pZCddKQotICAgIGNvbm4gPSBtYW5hZ2VyLmNvbm5lY3Rpb24oZGlkPW9ialsnZGF0YWJhc2Vf aWQnXSwgY29ubl9pZD1vYmpbJ2Nvbm5faWQnXSkKKyAgICBtYW5hZ2VyID0gZ2V0X2RyaXZlcihQ R19ERUZBVUxUX0RSSVZFUikuY29ubmVjdGlvbl9tYW5hZ2VyKAorICAgICAgICBkZV9pbnN0LmRl YnVnZ2VyX2RhdGFbJ3NlcnZlcl9pZCddKQorICAgIGNvbm4gPSBtYW5hZ2VyLmNvbm5lY3Rpb24o CisgICAgICAgIGRpZD1kZV9pbnN0LmRlYnVnZ2VyX2RhdGFbJ2RhdGFiYXNlX2lkJ10sCisgICAg ICAgIGNvbm5faWQ9ZGVfaW5zdC5kZWJ1Z2dlcl9kYXRhWydjb25uX2lkJ10pCiAKICAgICBpZiBj b25uLmNvbm5lY3RlZCgpOgogICAgICAgICAjIFVwZGF0ZSB0aGUgc2Vzc2lvbiB2YXJpYWJsZSAi cmVzdGFydF9kZWJ1ZyIgdG8ga25vdyB0aGF0IHNhbWUKICAgICAgICAgIyBmdW5jdGlvbiBkZWJ1 Z2dpbmcgaGFzIGJlZW4gcmVzdGFydGVkLiBEZWxldGUgdGhlIGV4aXN0aW5nIGRlYnVnZ2VyCiAg ICAgICAgICMgZGF0YSBpbiBzZXNzaW9uIHZhcmlhYmxlIGFuZCB1cGRhdGUgd2l0aCBuZXcgZGF0 YQotICAgICAgICBpZiBvYmpbJ3Jlc3RhcnRfZGVidWcnXSA9PSAwOgotICAgICAgICAgICAgZGVi dWdnZXJfZGF0YSA9IHNlc3Npb25bJ2RlYnVnZ2VyRGF0YSddCi0gICAgICAgICAgICBzZXNzaW9u X29iaiA9IGRlYnVnZ2VyX2RhdGFbc3RyKHRyYW5zX2lkKV0KLSAgICAgICAgICAgIHNlc3Npb25f b2JqWydyZXN0YXJ0X2RlYnVnJ10gPSAxCi0gICAgICAgICAgICB1cGRhdGVfc2Vzc2lvbl9kZWJ1 Z2dlcl90cmFuc2FjdGlvbih0cmFuc19pZCwgc2Vzc2lvbl9vYmopCi0KLSAgICAgICAgIyBTdG9y ZSB0aGUgZnVuY3Rpb24gaW5mb3JtYXRpb24gaW4gc2Vzc2lvbiB2YXJpYWJsZQotICAgICAgICBp ZiAnZnVuY3Rpb25EYXRhJyBub3QgaW4gc2Vzc2lvbjoKLSAgICAgICAgICAgIGZ1bmN0aW9uX2Rh dGEgPSBkaWN0KCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlc3Npb25fZnVuY3Rpb25f ZGF0YSA9IHNlc3Npb25bJ2Z1bmN0aW9uRGF0YSddW3N0cih0cmFuc19pZCldCi0gICAgICAgICAg ICBmdW5jdGlvbl9kYXRhID0gewotICAgICAgICAgICAgICAgICdzZXJ2ZXJfaWQnOiBvYmpbJ3Nl cnZlcl9pZCddLAotICAgICAgICAgICAgICAgICdkYXRhYmFzZV9pZCc6IG9ialsnZGF0YWJhc2Vf aWQnXSwKLSAgICAgICAgICAgICAgICAnc2NoZW1hX2lkJzogb2JqWydzY2hlbWFfaWQnXSwKLSAg ICAgICAgICAgICAgICAnZnVuY3Rpb25faWQnOiBvYmpbJ2Z1bmN0aW9uX2lkJ10sCi0gICAgICAg ICAgICAgICAgJ3RyYW5zX2lkJzogc3RyKHRyYW5zX2lkKSwKLSAgICAgICAgICAgICAgICAncHJv YXJnbW9kZXMnOiBzZXNzaW9uX2Z1bmN0aW9uX2RhdGFbJ2FyZ19tb2RlJ10sCi0gICAgICAgICAg ICAgICAgJ3Byb2FyZ3R5cGVuYW1lcyc6IHNlc3Npb25fZnVuY3Rpb25fZGF0YVsnYXJnc190eXBl J10sCi0gICAgICAgICAgICAgICAgJ3Byb25hcmdkZWZhdWx0cyc6IHNlc3Npb25fZnVuY3Rpb25f ZGF0YVsndXNlX2RlZmF1bHQnXSwKLSAgICAgICAgICAgICAgICAncHJvYXJnZGVmYXVsdHMnOiBz ZXNzaW9uX2Z1bmN0aW9uX2RhdGFbJ2RlZmF1bHRfdmFsdWUnXSwKLSAgICAgICAgICAgICAgICAn cHJvYXJnbmFtZXMnOiBzZXNzaW9uX2Z1bmN0aW9uX2RhdGFbJ2FyZ3NfbmFtZSddLAotICAgICAg ICAgICAgICAgICdyZXF1aXJlX2lucHV0Jzogc2Vzc2lvbl9mdW5jdGlvbl9kYXRhWydyZXF1aXJl X2lucHV0J10KLSAgICAgICAgICAgIH0KKyAgICAgICAgaWYgZGVfaW5zdC5kZWJ1Z2dlcl9kYXRh WydyZXN0YXJ0X2RlYnVnJ10gPT0gMDoKKyAgICAgICAgICAgIGRlX2luc3QuZGVidWdnZXJfZGF0 YVsncmVzdGFydF9kZWJ1ZyddID0gMQorICAgICAgICAgICAgZGVfaW5zdC51cGRhdGVfc2Vzc2lv bigpCisKKyAgICAgICAgZGVfaW5zdC5mdW5jdGlvbl9kYXRhID0geworICAgICAgICAgICAgJ3Nl cnZlcl9pZCc6IGRlX2luc3QuZGVidWdnZXJfZGF0YVsnc2VydmVyX2lkJ10sCisgICAgICAgICAg ICAnZGF0YWJhc2VfaWQnOiBkZV9pbnN0LmRlYnVnZ2VyX2RhdGFbJ2RhdGFiYXNlX2lkJ10sCisg ICAgICAgICAgICAnc2NoZW1hX2lkJzogZGVfaW5zdC5kZWJ1Z2dlcl9kYXRhWydzY2hlbWFfaWQn XSwKKyAgICAgICAgICAgICdmdW5jdGlvbl9pZCc6IGRlX2luc3QuZGVidWdnZXJfZGF0YVsnZnVu Y3Rpb25faWQnXSwKKyAgICAgICAgICAgICd0cmFuc19pZCc6IHN0cih0cmFuc19pZCksCisgICAg ICAgICAgICAncHJvYXJnbW9kZXMnOiBkZV9pbnN0LmZ1bmN0aW9uX2RhdGFbJ2FyZ19tb2RlJ10s CisgICAgICAgICAgICAncHJvYXJndHlwZW5hbWVzJzogZGVfaW5zdC5mdW5jdGlvbl9kYXRhWydh cmdzX3R5cGUnXSwKKyAgICAgICAgICAgICdwcm9uYXJnZGVmYXVsdHMnOiBkZV9pbnN0LmZ1bmN0 aW9uX2RhdGFbJ3VzZV9kZWZhdWx0J10sCisgICAgICAgICAgICAncHJvYXJnZGVmYXVsdHMnOiBk ZV9pbnN0LmZ1bmN0aW9uX2RhdGFbJ2RlZmF1bHRfdmFsdWUnXSwKKyAgICAgICAgICAgICdwcm9h cmduYW1lcyc6IGRlX2luc3QuZnVuY3Rpb25fZGF0YVsnYXJnc19uYW1lJ10sCisgICAgICAgICAg ICAncmVxdWlyZV9pbnB1dCc6IGRlX2luc3QuZnVuY3Rpb25fZGF0YVsncmVxdWlyZV9pbnB1dCdd CisgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAogICAgICAg ICAgICAgZGF0YT17Ci0gICAgICAgICAgICAgICAgJ3N0YXR1cyc6IFRydWUsICdyZXN0YXJ0X2Rl YnVnJzogVHJ1ZSwgJ3Jlc3VsdCc6IGZ1bmN0aW9uX2RhdGEKKyAgICAgICAgICAgICAgICAnc3Rh dHVzJzogVHJ1ZSwgJ3Jlc3RhcnRfZGVidWcnOiBUcnVlLAorICAgICAgICAgICAgICAgICdyZXN1 bHQnOiBkZV9pbnN0LmZ1bmN0aW9uX2RhdGEKICAgICAgICAgICAgIH0KICAgICAgICAgKQogICAg IGVsc2U6CkBAIC05MzUsOCArODQ4LDcgQEAgZGVmIHJlc3RhcnRfZGVidWdnaW5nKHRyYW5zX2lk KToKICAgICAgICAgICAgICdOb3QgY29ubmVjdGVkIHRvIHNlcnZlciBvciBjb25uZWN0aW9uIHdp dGggdGhlIHNlcnZlciBoYXMgJwogICAgICAgICAgICAgJ2JlZW4gY2xvc2VkLicKICAgICAgICAg KQotCi0gICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZShkYXRhPXsnc3RhdHVzJzogc3RhdHVz fSkKKyAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZShkYXRhPXsnc3RhdHVzJzogc3Rh dHVzLCAncmVzdWx0JzogcmVzdWx0fSkKIAogCiBAYmx1ZXByaW50LnJvdXRlKApAQCAtOTU2LDgg Kzg2OCw4IEBAIGRlZiBzdGFydF9kZWJ1Z2dlcl9saXN0ZW5lcih0cmFuc19pZCk6CiAgICAgICAg IC0gVHJhbnNhY3Rpb24gSUQKICAgICAiIiIKIAotICAgIGRlYnVnZ2VyX2RhdGEgPSBzZXNzaW9u WydkZWJ1Z2dlckRhdGEnXQotICAgIGlmIHN0cih0cmFuc19pZCkgbm90IGluIGRlYnVnZ2VyX2Rh dGE6CisgICAgZGVfaW5zdCA9IERlYnVnZ2VySW5zdGFuY2UodHJhbnNfaWQpCisgICAgaWYgZGVf aW5zdC5kZWJ1Z2dlcl9kYXRhIGlzIE5vbmU6CiAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVz cG9uc2UoCiAgICAgICAgICAgICBkYXRhPXsKICAgICAgICAgICAgICAgICAnc3RhdHVzJzogRmFs c2UsCkBAIC05NjcsMTcgKzg3OSwxOCBAQCBkZWYgc3RhcnRfZGVidWdnZXJfbGlzdGVuZXIodHJh bnNfaWQpOgogICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgIH0KICAgICAgICAgKQotICAg IG9iaiA9IGRlYnVnZ2VyX2RhdGFbc3RyKHRyYW5zX2lkKV0KIAogICAgIGRyaXZlciA9IGdldF9k cml2ZXIoUEdfREVGQVVMVF9EUklWRVIpCi0gICAgbWFuYWdlciA9IGRyaXZlci5jb25uZWN0aW9u X21hbmFnZXIob2JqWydzZXJ2ZXJfaWQnXSkKLSAgICBjb25uID0gbWFuYWdlci5jb25uZWN0aW9u KGRpZD1vYmpbJ2RhdGFiYXNlX2lkJ10sIGNvbm5faWQ9b2JqWydjb25uX2lkJ10pCisgICAgbWFu YWdlciA9IGRyaXZlci5jb25uZWN0aW9uX21hbmFnZXIoZGVfaW5zdC5kZWJ1Z2dlcl9kYXRhWydz ZXJ2ZXJfaWQnXSkKKyAgICBjb25uID0gbWFuYWdlci5jb25uZWN0aW9uKAorICAgICAgICBkaWQ9 ZGVfaW5zdC5kZWJ1Z2dlcl9kYXRhWydkYXRhYmFzZV9pZCddLAorICAgICAgICBjb25uX2lkPWRl X2luc3QuZGVidWdnZXJfZGF0YVsnY29ubl9pZCddKQogCiAgICAgdmVyID0gbWFuYWdlci52ZXJz aW9uCiAgICAgc2VydmVyX3R5cGUgPSBtYW5hZ2VyLnNlcnZlcl90eXBlCiAKICAgICAjIGZpbmQg dGhlIGRlYnVnZ2VyIHZlcnNpb24gYW5kIGV4ZWN1dGUgdGhlIHF1ZXJ5IGFjY29yZGluZ2x5Ci0g ICAgZGJnX3ZlcnNpb24gPSBvYmpbJ2RlYnVnZ2VyX3ZlcnNpb24nXQorICAgIGRiZ192ZXJzaW9u ID0gZGVfaW5zdC5kZWJ1Z2dlcl9kYXRhWydkZWJ1Z2dlcl92ZXJzaW9uJ10KICAgICBpZiBkYmdf dmVyc2lvbiA8PSAyOgogICAgICAgICB0ZW1wbGF0ZV9wYXRoID0gJ2RlYnVnZ2VyL3NxbC92MScK ICAgICBlbHNlOgpAQCAtOTg4LDk0ICs5MDEsOTEgQEAgZGVmIHN0YXJ0X2RlYnVnZ2VyX2xpc3Rl bmVyKHRyYW5zX2lkKToKICAgICBpZiByZXF1ZXN0Lm1ldGhvZCA9PSAnUE9TVCc6CiAgICAgICAg IGRhdGEgPSBqc29uLmxvYWRzKHJlcXVlc3QudmFsdWVzWydkYXRhJ10sIGVuY29kaW5nPSd1dGYt OCcpCiAgICAgICAgIGlmIGRhdGE6Ci0gICAgICAgICAgICBmdW5jdGlvbl9kYXRhID0gc2Vzc2lv blsnZnVuY3Rpb25EYXRhJ10KLSAgICAgICAgICAgIHNlc3Npb25fb2JqID0gZnVuY3Rpb25fZGF0 YVtzdHIodHJhbnNfaWQpXQotICAgICAgICAgICAgc2Vzc2lvbl9vYmpbJ2FyZ3NfdmFsdWUnXSA9 IGRhdGEKLSAgICAgICAgICAgIHVwZGF0ZV9zZXNzaW9uX2Z1bmN0aW9uX3RyYW5zYWN0aW9uKHRy YW5zX2lkLCBzZXNzaW9uX29iaikKKyAgICAgICAgICAgIGRlX2luc3QuZnVuY3Rpb25fZGF0YVsn YXJnc192YWx1ZSddID0gZGF0YQorICAgICAgICAgICAgZGVfaW5zdC51cGRhdGVfc2Vzc2lvbigp CiAKICAgICBpZiBjb25uLmNvbm5lY3RlZCgpOgogCiAgICAgICAgICMgRm9yIHRoZSBkaXJlY3Qg ZGVidWdnaW5nIGV4dHJhY3QgdGhlIGZ1bmN0aW9uIGFyZ3VtZW50cyB2YWx1ZXMgZnJvbQogICAg ICAgICAjIHVzZXIgYW5kIHBhc3MgdG8gamluamEgdGVtcGxhdGUgdG8gY3JlYXRlIHRoZSBxdWVy eSBmb3IgZXhlY3V0aW9uLgotICAgICAgICBpZiBvYmpbJ2RlYnVnX3R5cGUnXSA9PSAnZGlyZWN0 JzoKKyAgICAgICAgaWYgZGVfaW5zdC5kZWJ1Z2dlcl9kYXRhWydkZWJ1Z190eXBlJ10gPT0gJ2Rp cmVjdCc6CiAgICAgICAgICAgICBzdHJfcXVlcnkgPSAnJwotICAgICAgICAgICAgc2Vzc2lvbl9m dW5jdGlvbl9kYXRhID0gc2Vzc2lvblsnZnVuY3Rpb25EYXRhJ11bc3RyKHRyYW5zX2lkKV0KLSAg ICAgICAgICAgIGlmIHNlc3Npb25fZnVuY3Rpb25fZGF0YVsncGtnJ10gPT0gMDoKKyAgICAgICAg ICAgIGlmIGRlX2luc3QuZnVuY3Rpb25fZGF0YVsncGtnJ10gPT0gMDoKICAgICAgICAgICAgICAg ICAjIEZvcm0gdGhlIGZ1bmN0aW9uIG5hbWUgd2l0aCBzY2hlbWEgbmFtZQogICAgICAgICAgICAg ICAgIGZ1bmNfbmFtZSA9IGRyaXZlci5xdElkZW50KAogICAgICAgICAgICAgICAgICAgICBjb25u LAotICAgICAgICAgICAgICAgICAgICBzZXNzaW9uX2Z1bmN0aW9uX2RhdGFbJ3NjaGVtYSddLAot ICAgICAgICAgICAgICAgICAgICBzZXNzaW9uX2Z1bmN0aW9uX2RhdGFbJ25hbWUnXQorICAgICAg ICAgICAgICAgICAgICBkZV9pbnN0LmZ1bmN0aW9uX2RhdGFbJ3NjaGVtYSddLAorICAgICAgICAg ICAgICAgICAgICBkZV9pbnN0LmZ1bmN0aW9uX2RhdGFbJ25hbWUnXQogICAgICAgICAgICAgICAg ICkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgIyBGb3JtIHRoZSBlZGIgcGFj a2FnZSBmdW5jdGlvbi9wcm9jZWR1cmUgbmFtZSB3aXRoIHNjaGVtYSBuYW1lCiAgICAgICAgICAg ICAgICAgZnVuY19uYW1lID0gZHJpdmVyLnF0SWRlbnQoCi0gICAgICAgICAgICAgICAgICAgIGNv bm4sIHNlc3Npb25fZnVuY3Rpb25fZGF0YVsnc2NoZW1hJ10sCi0gICAgICAgICAgICAgICAgICAg IHNlc3Npb25fZnVuY3Rpb25fZGF0YVsncGtnbmFtZSddLAotICAgICAgICAgICAgICAgICAgICBz ZXNzaW9uX2Z1bmN0aW9uX2RhdGFbJ25hbWUnXQorICAgICAgICAgICAgICAgICAgICBjb25uLCBk ZV9pbnN0LmZ1bmN0aW9uX2RhdGFbJ3NjaGVtYSddLAorICAgICAgICAgICAgICAgICAgICBkZV9p bnN0LmZ1bmN0aW9uX2RhdGFbJ3BrZ25hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAgZGVfaW5z dC5mdW5jdGlvbl9kYXRhWyduYW1lJ10KICAgICAgICAgICAgICAgICApCiAKLSAgICAgICAgICAg IGlmIG9ialsncmVzdGFydF9kZWJ1ZyddID09IDA6CisgICAgICAgICAgICBpZiBkZV9pbnN0LmRl YnVnZ2VyX2RhdGFbJ3Jlc3RhcnRfZGVidWcnXSA9PSAwOgogICAgICAgICAgICAgICAgICMgcmVu ZGVyIHRoZSBTUUwgdGVtcGxhdGUgYW5kIHNlbmQgdGhlIHF1ZXJ5IHRvIHNlcnZlcgotICAgICAg ICAgICAgICAgIGlmIHNlc3Npb25fZnVuY3Rpb25fZGF0YVsnbGFuZ3VhZ2UnXSA9PSAncGxwZ3Nx bCc6CisgICAgICAgICAgICAgICAgaWYgZGVfaW5zdC5mdW5jdGlvbl9kYXRhWydsYW5ndWFnZSdd ID09ICdwbHBnc3FsJzoKICAgICAgICAgICAgICAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRl KAogICAgICAgICAgICAgICAgICAgICAgICAgIi8iLmpvaW4oW3RlbXBsYXRlX3BhdGgsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlYnVnX3BscGdzcWxfZXhlY3V0ZV90YXJn ZXQuc3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgcGFja2dlX29pZD1zZXNzaW9uX2Z1 bmN0aW9uX2RhdGFbJ3BrZyddLAotICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25fb2lk PW9ialsnZnVuY3Rpb25faWQnXQorICAgICAgICAgICAgICAgICAgICAgICAgcGFja2dlX29pZD1k ZV9pbnN0LmZ1bmN0aW9uX2RhdGFbJ3BrZyddLAorICAgICAgICAgICAgICAgICAgICAgICAgZnVu Y3Rpb25fb2lkPWRlX2luc3QuZGVidWdnZXJfZGF0YVsnZnVuY3Rpb25faWQnXQogICAgICAgICAg ICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAg c3FsID0gcmVuZGVyX3RlbXBsYXRlKAogICAgICAgICAgICAgICAgICAgICAgICAgIi8iLmpvaW4o W3RlbXBsYXRlX3BhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlYnVn X3NwbF9leGVjdXRlX3RhcmdldC5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICBwYWNr Z2Vfb2lkPXNlc3Npb25fZnVuY3Rpb25fZGF0YVsncGtnJ10sCi0gICAgICAgICAgICAgICAgICAg ICAgICBmdW5jdGlvbl9vaWQ9b2JqWydmdW5jdGlvbl9pZCddCisgICAgICAgICAgICAgICAgICAg ICAgICBwYWNrZ2Vfb2lkPWRlX2luc3QuZnVuY3Rpb25fZGF0YVsncGtnJ10sCisgICAgICAgICAg ICAgICAgICAgICAgICBmdW5jdGlvbl9vaWQ9ZGVfaW5zdC5kZWJ1Z2dlcl9kYXRhWydmdW5jdGlv bl9pZCddCiAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICBzdGF0dXMsIHJl cyA9IGNvbm4uZXhlY3V0ZV9kaWN0KHNxbCkKICAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVz OgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9y bXNnPXJlcykKIAotICAgICAgICAgICAgaWYgc2Vzc2lvbl9mdW5jdGlvbl9kYXRhWydhcmdfbW9k ZSddOgorICAgICAgICAgICAgaWYgZGVfaW5zdC5mdW5jdGlvbl9kYXRhWydhcmdfbW9kZSddOgog ICAgICAgICAgICAgICAgICMgSW4gRURCQVMgOTAsIGlmIGFuIFNQTC1mdW5jdGlvbiBoYXMgYm90 aCBhbiBPVVQtcGFyYW1ldGVyCiAgICAgICAgICAgICAgICAgIyBhbmQgYSByZXR1cm4gdmFsdWUg KHdoaWNoIGlzIG5vdCBwb3NzaWJsZSBvbiBQb3N0Z3JlU1FMCiAgICAgICAgICAgICAgICAgIyBv dGhlcndpc2UpLCB0aGUgcmV0dXJuIHZhbHVlIGlzIHRyYW5zZm9ybWVkIGludG8gYW4gZXh0cmEK ICAgICAgICAgICAgICAgICAjIE9VVC1wYXJhbWV0ZXIgbmFtZWQgIl9yZXR2YWxfIgotICAgICAg ICAgICAgICAgIGlmIHNlc3Npb25fZnVuY3Rpb25fZGF0YVsnYXJnc19uYW1lJ106Ci0gICAgICAg ICAgICAgICAgICAgIGFyZ19uYW1lID0gc2Vzc2lvbl9mdW5jdGlvbl9kYXRhWydhcmdzX25hbWUn XS5zcGxpdCgiLCIpCisgICAgICAgICAgICAgICAgaWYgZGVfaW5zdC5mdW5jdGlvbl9kYXRhWydh cmdzX25hbWUnXToKKyAgICAgICAgICAgICAgICAgICAgYXJnX25hbWUgPSBkZV9pbnN0LmZ1bmN0 aW9uX2RhdGFbJ2FyZ3NfbmFtZSddLnNwbGl0KCIsIikKICAgICAgICAgICAgICAgICAgICAgaWYg J19yZXR2YWxfJyBpbiBhcmdfbmFtZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGFyZ19tb2Rl ID0gc2Vzc2lvbl9mdW5jdGlvbl9kYXRhWydhcmdfbW9kZSddLnNwbGl0KCIsIikKKyAgICAgICAg ICAgICAgICAgICAgICAgIGFyZ19tb2RlID0gZGVfaW5zdC5mdW5jdGlvbl9kYXRhWydhcmdfbW9k ZSddLnNwbGl0KCIsIikKICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ19tb2RlLnBvcCgpCiAg ICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBhcmdfbW9k ZSA9IHNlc3Npb25fZnVuY3Rpb25fZGF0YVsnYXJnX21vZGUnXS5zcGxpdCgiLCIpCisgICAgICAg ICAgICAgICAgICAgICAgICBhcmdfbW9kZSA9IGRlX2luc3QuZnVuY3Rpb25fZGF0YVsnYXJnX21v ZGUnXS5zcGxpdCgiLCIpCiAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAg ICAgYXJnX21vZGUgPSBzZXNzaW9uX2Z1bmN0aW9uX2RhdGFbJ2FyZ19tb2RlJ10uc3BsaXQoIiwi KQorICAgICAgICAgICAgICAgICAgICBhcmdfbW9kZSA9IGRlX2luc3QuZnVuY3Rpb25fZGF0YVsn YXJnX21vZGUnXS5zcGxpdCgiLCIpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAg IGFyZ19tb2RlID0gWydpJ10gKiBsZW4oCi0gICAgICAgICAgICAgICAgICAgIHNlc3Npb25fZnVu Y3Rpb25fZGF0YVsnYXJnc190eXBlJ10uc3BsaXQoIiwiKQorICAgICAgICAgICAgICAgICAgICBk ZV9pbnN0LmZ1bmN0aW9uX2RhdGFbJ2FyZ3NfdHlwZSddLnNwbGl0KCIsIikKICAgICAgICAgICAg ICAgICApCiAKLSAgICAgICAgICAgIGlmIHNlc3Npb25fZnVuY3Rpb25fZGF0YVsnYXJnc190eXBl J106Ci0gICAgICAgICAgICAgICAgaWYgc2Vzc2lvbl9mdW5jdGlvbl9kYXRhWydhcmdzX25hbWUn XToKLSAgICAgICAgICAgICAgICAgICAgYXJnX25hbWUgPSBzZXNzaW9uX2Z1bmN0aW9uX2RhdGFb J2FyZ3NfbmFtZSddLnNwbGl0KCIsIikKKyAgICAgICAgICAgIGlmIGRlX2luc3QuZnVuY3Rpb25f ZGF0YVsnYXJnc190eXBlJ106CisgICAgICAgICAgICAgICAgaWYgZGVfaW5zdC5mdW5jdGlvbl9k YXRhWydhcmdzX25hbWUnXToKKyAgICAgICAgICAgICAgICAgICAgYXJnX25hbWUgPSBkZV9pbnN0 LmZ1bmN0aW9uX2RhdGFbJ2FyZ3NfbmFtZSddLnNwbGl0KCIsIikKICAgICAgICAgICAgICAgICAg ICAgaWYgJ19yZXR2YWxfJyBpbiBhcmdfbmFtZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGFy Z190eXBlID0gc2Vzc2lvbl9mdW5jdGlvbl9kYXRhWworICAgICAgICAgICAgICAgICAgICAgICAg YXJnX3R5cGUgPSBkZV9pbnN0LmZ1bmN0aW9uX2RhdGFbCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJ2FyZ3NfdHlwZSddLnNwbGl0KCIsIikKICAgICAgICAgICAgICAgICAgICAgICAgIGFy Z190eXBlLnBvcCgpCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAg ICAgICAgICBhcmdfdHlwZSA9IHNlc3Npb25fZnVuY3Rpb25fZGF0YVsKKyAgICAgICAgICAgICAg ICAgICAgICAgIGFyZ190eXBlID0gZGVfaW5zdC5mdW5jdGlvbl9kYXRhWwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICdhcmdzX3R5cGUnXS5zcGxpdCgiLCIpCiAgICAgICAgICAgICAgICAg ZWxzZToKLSAgICAgICAgICAgICAgICAgICAgYXJnX3R5cGUgPSBzZXNzaW9uX2Z1bmN0aW9uX2Rh dGFbJ2FyZ3NfdHlwZSddLnNwbGl0KCIsIikKKyAgICAgICAgICAgICAgICAgICAgYXJnX3R5cGUg PSBkZV9pbnN0LmZ1bmN0aW9uX2RhdGFbJ2FyZ3NfdHlwZSddLnNwbGl0KCIsIikKIAogICAgICAg ICAgICAgIyBCZWxvdyBhcmUgdHdvIGRpZmZlcmVudCB0ZW1wbGF0ZSB0byBleGVjdXRlIGFuZCBz dGFydCBleGVjdXRlcgogICAgICAgICAgICAgaWYgbWFuYWdlci5zZXJ2ZXJfdHlwZSAhPSAncGcn IGFuZCBtYW5hZ2VyLnZlcnNpb24gPCA5MDMwMDoKICAgICAgICAgICAgICAgICBzdHJfcXVlcnkg PSByZW5kZXJfdGVtcGxhdGUoCiAgICAgICAgICAgICAgICAgICAgICIvIi5qb2luKFsnZGVidWdn ZXIvc3FsJywgJ2V4ZWN1dGVfZWRic3BsLnNxbCddKSwKICAgICAgICAgICAgICAgICAgICAgZnVu Y19uYW1lPWZ1bmNfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgaXNfZnVuYz1zZXNzaW9uX2Z1 bmN0aW9uX2RhdGFbJ2lzX2Z1bmMnXSwKLSAgICAgICAgICAgICAgICAgICAgbGFuX25hbWU9c2Vz c2lvbl9mdW5jdGlvbl9kYXRhWydsYW5ndWFnZSddLAotICAgICAgICAgICAgICAgICAgICByZXRf dHlwZT1zZXNzaW9uX2Z1bmN0aW9uX2RhdGFbJ3JldHVybl90eXBlJ10sCi0gICAgICAgICAgICAg ICAgICAgIGRhdGE9c2Vzc2lvbl9mdW5jdGlvbl9kYXRhWydhcmdzX3ZhbHVlJ10sCisgICAgICAg ICAgICAgICAgICAgIGlzX2Z1bmM9ZGVfaW5zdC5mdW5jdGlvbl9kYXRhWydpc19mdW5jJ10sCisg ICAgICAgICAgICAgICAgICAgIGxhbl9uYW1lPWRlX2luc3QuZnVuY3Rpb25fZGF0YVsnbGFuZ3Vh Z2UnXSwKKyAgICAgICAgICAgICAgICAgICAgcmV0X3R5cGU9ZGVfaW5zdC5mdW5jdGlvbl9kYXRh WydyZXR1cm5fdHlwZSddLAorICAgICAgICAgICAgICAgICAgICBkYXRhPWRlX2luc3QuZnVuY3Rp b25fZGF0YVsnYXJnc192YWx1ZSddLAogICAgICAgICAgICAgICAgICAgICBhcmdfdHlwZT1hcmdf dHlwZSwKICAgICAgICAgICAgICAgICAgICAgYXJnc19tb2RlPWFyZ19tb2RlCiAgICAgICAgICAg ICAgICAgKQpAQCAtMTA4MywxMCArOTkzLDEwIEBAIGRlZiBzdGFydF9kZWJ1Z2dlcl9saXN0ZW5l cih0cmFuc19pZCk6CiAgICAgICAgICAgICAgICAgc3RyX3F1ZXJ5ID0gcmVuZGVyX3RlbXBsYXRl KAogICAgICAgICAgICAgICAgICAgICAiLyIuam9pbihbJ2RlYnVnZ2VyL3NxbCcsICdleGVjdXRl X3BscGdzcWwuc3FsJ10pLAogICAgICAgICAgICAgICAgICAgICBmdW5jX25hbWU9ZnVuY19uYW1l LAotICAgICAgICAgICAgICAgICAgICBpc19mdW5jPXNlc3Npb25fZnVuY3Rpb25fZGF0YVsnaXNf ZnVuYyddLAotICAgICAgICAgICAgICAgICAgICByZXRfdHlwZT1zZXNzaW9uX2Z1bmN0aW9uX2Rh dGFbJ3JldHVybl90eXBlJ10sCi0gICAgICAgICAgICAgICAgICAgIGRhdGE9c2Vzc2lvbl9mdW5j dGlvbl9kYXRhWydhcmdzX3ZhbHVlJ10sCi0gICAgICAgICAgICAgICAgICAgIGlzX3BwYXNfZGF0 YWJhc2U9c2Vzc2lvbl9mdW5jdGlvbl9kYXRhWydpc19wcGFzX2RhdGFiYXNlJ10KKyAgICAgICAg ICAgICAgICAgICAgaXNfZnVuYz1kZV9pbnN0LmZ1bmN0aW9uX2RhdGFbJ2lzX2Z1bmMnXSwKKyAg ICAgICAgICAgICAgICAgICAgcmV0X3R5cGU9ZGVfaW5zdC5mdW5jdGlvbl9kYXRhWydyZXR1cm5f dHlwZSddLAorICAgICAgICAgICAgICAgICAgICBkYXRhPWRlX2luc3QuZnVuY3Rpb25fZGF0YVsn YXJnc192YWx1ZSddLAorICAgICAgICAgICAgICAgICAgICBpc19wcGFzX2RhdGFiYXNlPWRlX2lu c3QuZnVuY3Rpb25fZGF0YVsnaXNfcHBhc19kYXRhYmFzZSddCiAgICAgICAgICAgICAgICAgKQog CiAgICAgICAgICAgICBzdGF0dXMsIHJlc3VsdCA9IGNvbm4uZXhlY3V0ZV9hc3luYyhzdHJfcXVl cnkpCkBAIC0xMTQ0LDEzICsxMDU0LDEyIEBAIGRlZiBzdGFydF9kZWJ1Z2dlcl9saXN0ZW5lcih0 cmFuc19pZCk6CiAgICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKICAgICAgICAgICAgICAg ICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCiAKLSAgICAg ICAgICAgICAgICBkZWJ1Z2dlcl9kYXRhID0gc2Vzc2lvblsnZGVidWdnZXJEYXRhJ10KLSAgICAg ICAgICAgICAgICBzZXNzaW9uX29iaiA9IGRlYnVnZ2VyX2RhdGFbc3RyKHRyYW5zX2lkKV0KLSAg ICAgICAgICAgICAgICBzZXNzaW9uX29ialsnZXhlX2Nvbm5faWQnXSA9IG9ialsnY29ubl9pZCdd Ci0gICAgICAgICAgICAgICAgc2Vzc2lvbl9vYmpbJ3Jlc3RhcnRfZGVidWcnXSA9IDEKLSAgICAg ICAgICAgICAgICBzZXNzaW9uX29ialsnZnJhbWVfaWQnXSA9IDAKLSAgICAgICAgICAgICAgICBz ZXNzaW9uX29ialsnc2Vzc2lvbl9pZCddID0gaW50X3Nlc3Npb25faWQKLSAgICAgICAgICAgICAg ICB1cGRhdGVfc2Vzc2lvbl9kZWJ1Z2dlcl90cmFuc2FjdGlvbih0cmFuc19pZCwgc2Vzc2lvbl9v YmopCisgICAgICAgICAgICAgICAgZGVfaW5zdC5kZWJ1Z2dlcl9kYXRhWydleGVfY29ubl9pZCdd ID0gXAorICAgICAgICAgICAgICAgICAgICBkZV9pbnN0LmRlYnVnZ2VyX2RhdGFbJ2Nvbm5faWQn XQorICAgICAgICAgICAgICAgIGRlX2luc3QuZGVidWdnZXJfZGF0YVsncmVzdGFydF9kZWJ1Zydd ID0gMQorICAgICAgICAgICAgICAgIGRlX2luc3QuZGVidWdnZXJfZGF0YVsnZnJhbWVfaWQnXSA9 IDAKKyAgICAgICAgICAgICAgICBkZV9pbnN0LmRlYnVnZ2VyX2RhdGFbJ3Nlc3Npb25faWQnXSA9 IGludF9zZXNzaW9uX2lkCisgICAgICAgICAgICAgICAgZGVfaW5zdC51cGRhdGVfc2Vzc2lvbigp CiAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKICAgICAgICAgICAg ICAgICAgICAgZGF0YT17J3N0YXR1cyc6IHN0YXR1cywgJ3Jlc3VsdCc6IHJlc30KICAgICAgICAg ICAgICAgICApCkBAIC0xMTk2LDggKzExMDUsOCBAQCBkZWYgZXhlY3V0ZV9kZWJ1Z2dlcl9xdWVy eSh0cmFuc19pZCwgcXVlcnlfdHlwZSk6CiAgICAgICAgIC0gVHlwZSBvZiBxdWVyeSB0byBleGVj dXRlCiAgICAgIiIiCiAKLSAgICBkZWJ1Z2dlcl9kYXRhID0gc2Vzc2lvblsnZGVidWdnZXJEYXRh J10KLSAgICBpZiBzdHIodHJhbnNfaWQpIG5vdCBpbiBkZWJ1Z2dlcl9kYXRhOgorICAgIGRlX2lu c3QgPSBEZWJ1Z2dlckluc3RhbmNlKHRyYW5zX2lkKQorICAgIGlmIGRlX2luc3QuZGVidWdnZXJf ZGF0YSBpcyBOb25lOgogICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAogICAgICAg ICAgICAgZGF0YT17CiAgICAgICAgICAgICAgICAgJ3N0YXR1cyc6IEZhbHNlLApAQCAtMTIwNywx NSArMTExNiwxNSBAQCBkZWYgZXhlY3V0ZV9kZWJ1Z2dlcl9xdWVyeSh0cmFuc19pZCwgcXVlcnlf dHlwZSk6CiAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgfQogICAgICAgICApCi0gICAg b2JqID0gZGVidWdnZXJfZGF0YVtzdHIodHJhbnNfaWQpXQogCi0gICAgbWFuYWdlciA9IGdldF9k cml2ZXIoCi0gICAgICAgIFBHX0RFRkFVTFRfRFJJVkVSKS5jb25uZWN0aW9uX21hbmFnZXIob2Jq WydzZXJ2ZXJfaWQnXSkKKyAgICBtYW5hZ2VyID0gZ2V0X2RyaXZlcihQR19ERUZBVUxUX0RSSVZF UikuY29ubmVjdGlvbl9tYW5hZ2VyKAorICAgICAgICBkZV9pbnN0LmRlYnVnZ2VyX2RhdGFbJ3Nl cnZlcl9pZCddKQogICAgIGNvbm4gPSBtYW5hZ2VyLmNvbm5lY3Rpb24oCi0gICAgICAgIGRpZD1v YmpbJ2RhdGFiYXNlX2lkJ10sIGNvbm5faWQ9b2JqWydleGVfY29ubl9pZCddKQorICAgICAgICBk aWQ9ZGVfaW5zdC5kZWJ1Z2dlcl9kYXRhWydkYXRhYmFzZV9pZCddLAorICAgICAgICBjb25uX2lk PWRlX2luc3QuZGVidWdnZXJfZGF0YVsnZXhlX2Nvbm5faWQnXSkKIAogICAgICMgZmluZCB0aGUg ZGVidWdnZXIgdmVyc2lvbiBhbmQgZXhlY3V0ZSB0aGUgcXVlcnkgYWNjb3JkaW5nbHkKLSAgICBk YmdfdmVyc2lvbiA9IG9ialsnZGVidWdnZXJfdmVyc2lvbiddCisgICAgZGJnX3ZlcnNpb24gPSBk ZV9pbnN0LmRlYnVnZ2VyX2RhdGFbJ2RlYnVnZ2VyX3ZlcnNpb24nXQogICAgIGlmIGRiZ192ZXJz aW9uIDw9IDI6CiAgICAgICAgIHRlbXBsYXRlX3BhdGggPSAnZGVidWdnZXIvc3FsL3YxJwogICAg IGVsc2U6CkBAIC0xMjI0LDcgKzExMzMsNyBAQCBkZWYgZXhlY3V0ZV9kZWJ1Z2dlcl9xdWVyeSh0 cmFuc19pZCwgcXVlcnlfdHlwZSk6CiAgICAgaWYgY29ubi5jb25uZWN0ZWQoKToKICAgICAgICAg c3FsID0gcmVuZGVyX3RlbXBsYXRlKAogICAgICAgICAgICAgIi8iLmpvaW4oW3RlbXBsYXRlX3Bh dGgsIHF1ZXJ5X3R5cGUgKyAiLnNxbCJdKSwKLSAgICAgICAgICAgIHNlc3Npb25faWQ9b2JqWydz ZXNzaW9uX2lkJ10KKyAgICAgICAgICAgIHNlc3Npb25faWQ9ZGVfaW5zdC5kZWJ1Z2dlcl9kYXRh WydzZXNzaW9uX2lkJ10KICAgICAgICAgKQogICAgICAgICAjIEFzIHRoZSBxdWVyeSB0eXBlIGlz IGNvbnRpbnVlIG9yIHN0ZXBfaW50byBvciBzdGVwX292ZXIgdGhlbiB3ZQogICAgICAgICAjIG1h eSBnZXQgcmVzdWx0IGFmdGVyIHNvbWUgdGltZSBzbyBwb2xsIHRoZSByZXN1bHQuCkBAIC0xMjMz LDEwICsxMTQyLDkgQEAgZGVmIGV4ZWN1dGVfZGVidWdnZXJfcXVlcnkodHJhbnNfaWQsIHF1ZXJ5 X3R5cGUpOgogICAgICAgICBpZiBxdWVyeV90eXBlID09ICdjb250aW51ZScgb3IgcXVlcnlfdHlw ZSA9PSAnc3RlcF9pbnRvJyBvciBcCiAgICAgICAgICAgICAgICAgcXVlcnlfdHlwZSA9PSAnc3Rl cF9vdmVyJzoKICAgICAgICAgICAgICMgV2Ugc2hvdWxkIHNldCB0aGUgZnJhbWVfaWQgdG8gMCB3 aGVuIGV4ZWN1dGlvbiBzdGFydHMuCi0gICAgICAgICAgICBpZiBvYmpbJ2ZyYW1lX2lkJ10gIT0g MDoKLSAgICAgICAgICAgICAgICBzZXNzaW9uX29iaiA9IGRlYnVnZ2VyX2RhdGFbc3RyKHRyYW5z X2lkKV0KLSAgICAgICAgICAgICAgICBzZXNzaW9uX29ialsnZnJhbWVfaWQnXSA9IDAKLSAgICAg ICAgICAgICAgICB1cGRhdGVfc2Vzc2lvbl9kZWJ1Z2dlcl90cmFuc2FjdGlvbih0cmFuc19pZCwg c2Vzc2lvbl9vYmopCisgICAgICAgICAgICBpZiBkZV9pbnN0LmRlYnVnZ2VyX2RhdGFbJ2ZyYW1l X2lkJ10gIT0gMDoKKyAgICAgICAgICAgICAgICBkZV9pbnN0LmRlYnVnZ2VyX2RhdGFbJ2ZyYW1l X2lkJ10gPSAwCisgICAgICAgICAgICAgICAgZGVfaW5zdC51cGRhdGVfc2Vzc2lvbigpCiAKICAg ICAgICAgICAgIHN0YXR1cywgcmVzdWx0ID0gY29ubi5leGVjdXRlX2FzeW5jKHNxbCkKICAgICAg ICAgICAgIGlmIG5vdCBzdGF0dXM6CkBAIC0xMjgyLDggKzExOTAsOCBAQCBkZWYgbWVzc2FnZXMo dHJhbnNfaWQpOgogICAgICAgICAtIHVuaXF1ZSB0cmFuc2FjdGlvbiBpZC4KICAgICAiIiIKIAot ICAgIGRlYnVnZ2VyX2RhdGEgPSBzZXNzaW9uWydkZWJ1Z2dlckRhdGEnXQotICAgIGlmIHN0cih0 cmFuc19pZCkgbm90IGluIGRlYnVnZ2VyX2RhdGE6CisgICAgZGVfaW5zdCA9IERlYnVnZ2VySW5z dGFuY2UodHJhbnNfaWQpCisgICAgaWYgZGVfaW5zdC5kZWJ1Z2dlcl9kYXRhIGlzIE5vbmU6CiAg ICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCiAgICAgICAgICAgICBkYXRhPXsKICAg ICAgICAgICAgICAgICAnc3RhdHVzJzogJ05vdENvbm5lY3RlZCcsCkBAIC0xMjkzLDExICsxMjAx LDEyIEBAIGRlZiBtZXNzYWdlcyh0cmFuc19pZCk6CiAgICAgICAgICAgICAgICAgKQogICAgICAg ICAgICAgfQogICAgICAgICApCi0gICAgb2JqID0gZGVidWdnZXJfZGF0YVtzdHIodHJhbnNfaWQp XQogCi0gICAgbWFuYWdlciA9IGdldF9kcml2ZXIoCi0gICAgICAgIFBHX0RFRkFVTFRfRFJJVkVS KS5jb25uZWN0aW9uX21hbmFnZXIob2JqWydzZXJ2ZXJfaWQnXSkKLSAgICBjb25uID0gbWFuYWdl ci5jb25uZWN0aW9uKGRpZD1vYmpbJ2RhdGFiYXNlX2lkJ10sIGNvbm5faWQ9b2JqWydjb25uX2lk J10pCisgICAgbWFuYWdlciA9IGdldF9kcml2ZXIoUEdfREVGQVVMVF9EUklWRVIpLmNvbm5lY3Rp b25fbWFuYWdlcigKKyAgICAgICAgZGVfaW5zdC5kZWJ1Z2dlcl9kYXRhWydzZXJ2ZXJfaWQnXSkK KyAgICBjb25uID0gbWFuYWdlci5jb25uZWN0aW9uKAorICAgICAgICBkaWQ9ZGVfaW5zdC5kZWJ1 Z2dlcl9kYXRhWydkYXRhYmFzZV9pZCddLAorICAgICAgICBjb25uX2lkPWRlX2luc3QuZGVidWdn ZXJfZGF0YVsnY29ubl9pZCddKQogCiAgICAgcG9ydF9udW1iZXIgPSAnJwogCkBAIC0xMzU3LDgg KzEyNjYsOCBAQCBkZWYgc3RhcnRfZXhlY3V0aW9uKHRyYW5zX2lkLCBwb3J0X251bSk6CiAgICAg ICAgIC0gUG9ydCBudW1iZXIgdG8gYXR0YWNoCiAgICAgIiIiCiAKLSAgICBkZWJ1Z2dlcl9kYXRh ID0gc2Vzc2lvblsnZGVidWdnZXJEYXRhJ10KLSAgICBpZiBzdHIodHJhbnNfaWQpIG5vdCBpbiBk ZWJ1Z2dlcl9kYXRhOgorICAgIGRlX2luc3QgPSBEZWJ1Z2dlckluc3RhbmNlKHRyYW5zX2lkKQor ICAgIGlmIGRlX2luc3QuZGVidWdnZXJfZGF0YSBpcyBOb25lOgogICAgICAgICByZXR1cm4gbWFr ZV9qc29uX3Jlc3BvbnNlKAogICAgICAgICAgICAgZGF0YT17CiAgICAgICAgICAgICAgICAgJ3N0 YXR1cyc6ICdOb3RDb25uZWN0ZWQnLApAQCAtMTM2OCwxNiArMTI3NywxNSBAQCBkZWYgc3RhcnRf ZXhlY3V0aW9uKHRyYW5zX2lkLCBwb3J0X251bSk6CiAgICAgICAgICAgICAgICAgKQogICAgICAg ICAgICAgfQogICAgICAgICApCi0gICAgb2JqID0gZGVidWdnZXJfZGF0YVtzdHIodHJhbnNfaWQp XQotCi0gICAgZGJnX3ZlcnNpb24gPSBvYmpbJ2RlYnVnZ2VyX3ZlcnNpb24nXQogCiAgICAgIyBD cmVhdGUgYXN5bmNocm9ub3VzIGNvbm5lY3Rpb24gdXNpbmcgcmFuZG9tIGNvbm5lY3Rpb24gaWQu CiAgICAgZXhlX2Nvbm5faWQgPSBzdHIocmFuZG9tLnJhbmRpbnQoMSwgOTk5OTk5OSkpCiAgICAg dHJ5OgotICAgICAgICBtYW5hZ2VyID0gZ2V0X2RyaXZlcigKLSAgICAgICAgICAgIFBHX0RFRkFV TFRfRFJJVkVSKS5jb25uZWN0aW9uX21hbmFnZXIob2JqWydzZXJ2ZXJfaWQnXSkKLSAgICAgICAg Y29ubiA9IG1hbmFnZXIuY29ubmVjdGlvbihkaWQ9b2JqWydkYXRhYmFzZV9pZCddLCBjb25uX2lk PWV4ZV9jb25uX2lkKQorICAgICAgICBtYW5hZ2VyID0gZ2V0X2RyaXZlcihQR19ERUZBVUxUX0RS SVZFUikuY29ubmVjdGlvbl9tYW5hZ2VyKAorICAgICAgICAgICAgZGVfaW5zdC5kZWJ1Z2dlcl9k YXRhWydzZXJ2ZXJfaWQnXSkKKyAgICAgICAgY29ubiA9IG1hbmFnZXIuY29ubmVjdGlvbigKKyAg ICAgICAgICAgIGRpZD1kZV9pbnN0LmRlYnVnZ2VyX2RhdGFbJ2RhdGFiYXNlX2lkJ10sCisgICAg ICAgICAgICBjb25uX2lkPWV4ZV9jb25uX2lkKQogICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToK ICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCiAK QEAgLTEzODYsMTMgKzEyOTQsOCBAQCBkZWYgc3RhcnRfZXhlY3V0aW9uKHRyYW5zX2lkLCBwb3J0 X251bSk6CiAgICAgaWYgbm90IHN0YXR1czoKICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1zdHIobXNnKSkKIAotICAgIGlmICdkZWJ1Z2dlckRhdGEnIG5vdCBp biBzZXNzaW9uOgotICAgICAgICBkZWJ1Z2dlcl9kYXRhID0gZGljdCgpCi0gICAgZWxzZToKLSAg ICAgICAgZGVidWdnZXJfZGF0YSA9IHNlc3Npb25bJ2RlYnVnZ2VyRGF0YSddCi0KICAgICAjIGZp bmQgdGhlIGRlYnVnZ2VyIHZlcnNpb24gYW5kIGV4ZWN1dGUgdGhlIHF1ZXJ5IGFjY29yZGluZ2x5 Ci0gICAgZGJnX3ZlcnNpb24gPSBvYmpbJ2RlYnVnZ2VyX3ZlcnNpb24nXQorICAgIGRiZ192ZXJz aW9uID0gZGVfaW5zdC5kZWJ1Z2dlcl9kYXRhWydkZWJ1Z2dlcl92ZXJzaW9uJ10KICAgICBpZiBk YmdfdmVyc2lvbiA8PSAyOgogICAgICAgICB0ZW1wbGF0ZV9wYXRoID0gJ2RlYnVnZ2VyL3NxbC92 MScKICAgICBlbHNlOgpAQCAtMTQwNSwxMyArMTMwOCwxMyBAQCBkZWYgc3RhcnRfZXhlY3V0aW9u KHRyYW5zX2lkLCBwb3J0X251bSk6CiAgICAgaWYgbm90IHN0YXR1c19wb3J0OgogICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlc19wb3J0KQogCi0gICAgc2Vz c2lvbl9vYmogPSBkZWJ1Z2dlcl9kYXRhW3N0cih0cmFuc19pZCldCi0gICAgc2Vzc2lvbl9vYmpb J3Jlc3RhcnRfZGVidWcnXSA9IDAKLSAgICBzZXNzaW9uX29ialsnZnJhbWVfaWQnXSA9IDAKLSAg ICBzZXNzaW9uX29ialsnZXhlX2Nvbm5faWQnXSA9IGV4ZV9jb25uX2lkCi0gICAgc2Vzc2lvbl9v YmpbJ2RlYnVnZ2VyX3ZlcnNpb24nXSA9IGRiZ192ZXJzaW9uCi0gICAgc2Vzc2lvbl9vYmpbJ3Nl c3Npb25faWQnXSA9IHJlc19wb3J0Wydyb3dzJ11bMF1bJ3BsZGJnX2F0dGFjaF90b19wb3J0J10K LSAgICB1cGRhdGVfc2Vzc2lvbl9kZWJ1Z2dlcl90cmFuc2FjdGlvbih0cmFuc19pZCwgc2Vzc2lv bl9vYmopCisgICAgZGVfaW5zdC5kZWJ1Z2dlcl9kYXRhWydyZXN0YXJ0X2RlYnVnJ10gPSAwCisg ICAgZGVfaW5zdC5kZWJ1Z2dlcl9kYXRhWydmcmFtZV9pZCddID0gMAorICAgIGRlX2luc3QuZGVi dWdnZXJfZGF0YVsnZXhlX2Nvbm5faWQnXSA9IGV4ZV9jb25uX2lkCisgICAgZGVfaW5zdC5kZWJ1 Z2dlcl9kYXRhWydkZWJ1Z2dlcl92ZXJzaW9uJ10gPSBkYmdfdmVyc2lvbgorICAgIGRlX2luc3Qu ZGVidWdnZXJfZGF0YVsnc2Vzc2lvbl9pZCddID0gXAorICAgICAgICByZXNfcG9ydFsncm93cydd WzBdWydwbGRiZ19hdHRhY2hfdG9fcG9ydCddCisgICAgZGVfaW5zdC51cGRhdGVfc2Vzc2lvbigp CiAKICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAogICAgICAgICBkYXRhPXsKQEAgLTE0 NDEsOCArMTM0NCw5IEBAIGRlZiBzZXRfY2xlYXJfYnJlYWtwb2ludCh0cmFuc19pZCwgbGluZV9u bywgc2V0X3R5cGUpOgogICAgICAgICAtIDAgLSBjbGVhciB0aGUgYnJlYWtwb2ludCwgMSAtIHNl dCB0aGUgYnJlYWtwb2ludAogICAgICIiIgogCi0gICAgZGVidWdnZXJfZGF0YSA9IHNlc3Npb25b J2RlYnVnZ2VyRGF0YSddCi0gICAgaWYgc3RyKHRyYW5zX2lkKSBub3QgaW4gZGVidWdnZXJfZGF0 YToKKyAgICBkZV9pbnN0ID0gRGVidWdnZXJJbnN0YW5jZSh0cmFuc19pZCkKKworICAgIGlmIGRl X2luc3QuZGVidWdnZXJfZGF0YSBpcyBOb25lOgogICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jl c3BvbnNlKAogICAgICAgICAgICAgZGF0YT17CiAgICAgICAgICAgICAgICAgJ3N0YXR1cyc6IEZh bHNlLApAQCAtMTQ1MiwxNSArMTM1NiwxNSBAQCBkZWYgc2V0X2NsZWFyX2JyZWFrcG9pbnQodHJh bnNfaWQsIGxpbmVfbm8sIHNldF90eXBlKToKICAgICAgICAgICAgICAgICApCiAgICAgICAgICAg ICB9CiAgICAgICAgICkKLSAgICBvYmogPSBkZWJ1Z2dlcl9kYXRhW3N0cih0cmFuc19pZCldCiAK LSAgICBtYW5hZ2VyID0gZ2V0X2RyaXZlcigKLSAgICAgICAgUEdfREVGQVVMVF9EUklWRVIpLmNv bm5lY3Rpb25fbWFuYWdlcihvYmpbJ3NlcnZlcl9pZCddKQorICAgIG1hbmFnZXIgPSBnZXRfZHJp dmVyKFBHX0RFRkFVTFRfRFJJVkVSKS5jb25uZWN0aW9uX21hbmFnZXIoCisgICAgICAgIGRlX2lu c3QuZGVidWdnZXJfZGF0YVsnc2VydmVyX2lkJ10pCiAgICAgY29ubiA9IG1hbmFnZXIuY29ubmVj dGlvbigKLSAgICAgICAgZGlkPW9ialsnZGF0YWJhc2VfaWQnXSwgY29ubl9pZD1vYmpbJ2V4ZV9j b25uX2lkJ10pCisgICAgICAgIGRpZD1kZV9pbnN0LmRlYnVnZ2VyX2RhdGFbJ2RhdGFiYXNlX2lk J10sCisgICAgICAgIGNvbm5faWQ9ZGVfaW5zdC5kZWJ1Z2dlcl9kYXRhWydleGVfY29ubl9pZCdd KQogCiAgICAgIyBmaW5kIHRoZSBkZWJ1Z2dlciB2ZXJzaW9uIGFuZCBleGVjdXRlIHRoZSBxdWVy eSBhY2NvcmRpbmdseQotICAgIGRiZ192ZXJzaW9uID0gb2JqWydkZWJ1Z2dlcl92ZXJzaW9uJ10K KyAgICBkYmdfdmVyc2lvbiA9IGRlX2luc3QuZGVidWdnZXJfZGF0YVsnZGVidWdnZXJfdmVyc2lv biddCiAgICAgaWYgZGJnX3ZlcnNpb24gPD0gMjoKICAgICAgICAgdGVtcGxhdGVfcGF0aCA9ICdk ZWJ1Z2dlci9zcWwvdjEnCiAgICAgZWxzZToKQEAgLTE0NzQsNyArMTM3OCw3IEBAIGRlZiBzZXRf Y2xlYXJfYnJlYWtwb2ludCh0cmFuc19pZCwgbGluZV9ubywgc2V0X3R5cGUpOgogICAgICMgc2Vz c2lvbiB2YXJpYWJsZSBhbmQgcGFzcyB0aGEgYXBwcm9wcmlhdGUgZm9pZCB0byBzZXQgdGhlIGJy ZWFrcG9pbnQuCiAgICAgc3FsXyA9IHJlbmRlcl90ZW1wbGF0ZSgKICAgICAgICAgIi8iLmpvaW4o W3RlbXBsYXRlX3BhdGgsICJnZXRfc3RhY2tfaW5mby5zcWwiXSksCi0gICAgICAgIHNlc3Npb25f aWQ9b2JqWydzZXNzaW9uX2lkJ10KKyAgICAgICAgc2Vzc2lvbl9pZD1kZV9pbnN0LmRlYnVnZ2Vy X2RhdGFbJ3Nlc3Npb25faWQnXQogICAgICkKICAgICBzdGF0dXMsIHJlc19zdGFjayA9IGNvbm4u ZXhlY3V0ZV9kaWN0KHNxbF8pCiAgICAgaWYgbm90IHN0YXR1czoKQEAgLTE0ODMsNyArMTM4Nyw3 IEBAIGRlZiBzZXRfY2xlYXJfYnJlYWtwb2ludCh0cmFuc19pZCwgbGluZV9ubywgc2V0X3R5cGUp OgogICAgICMgRm9yIG11bHRpbGV2ZWwgZnVuY3Rpb24gZGVidWdnaW5nLCB3ZSBuZWVkIHRvIGZl dGNoIGN1cnJlbnQgc2VsZWN0ZWQKICAgICAjIGZyYW1lJ3MgZnVuY3Rpb24gb2lkIGZvciBzZXR0 aW5nIHRoZSBicmVha3BvaW50LiBGb3Igc2luZ2xlIGZ1bmN0aW9uCiAgICAgIyB0aGUgZnJhbWUg aWQgd2lsbCBiZSAwLgotICAgIGZvaWQgPSByZXNfc3RhY2tbJ3Jvd3MnXVtvYmpbJ2ZyYW1lX2lk J11dWydmdW5jJ10KKyAgICBmb2lkID0gcmVzX3N0YWNrWydyb3dzJ11bZGVfaW5zdC5kZWJ1Z2dl cl9kYXRhWydmcmFtZV9pZCddXVsnZnVuYyddCiAKICAgICAjIENoZWNrIHRoZSByZXN1bHQgb2Yg dGhlIHN0YWNrIGJlZm9yZSBzZXR0aW5nIHRoZSBicmVha3BvaW50CiAgICAgaWYgY29ubi5jb25u ZWN0ZWQoKToKQEAgLTE0OTQsNyArMTM5OCw3IEBAIGRlZiBzZXRfY2xlYXJfYnJlYWtwb2ludCh0 cmFuc19pZCwgbGluZV9ubywgc2V0X3R5cGUpOgogCiAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1w bGF0ZSgKICAgICAgICAgICAgICIvIi5qb2luKFt0ZW1wbGF0ZV9wYXRoLCBxdWVyeV90eXBlICsg Ii5zcWwiXSksCi0gICAgICAgICAgICBzZXNzaW9uX2lkPW9ialsnc2Vzc2lvbl9pZCddLAorICAg ICAgICAgICAgc2Vzc2lvbl9pZD1kZV9pbnN0LmRlYnVnZ2VyX2RhdGFbJ3Nlc3Npb25faWQnXSwK ICAgICAgICAgICAgIGZvaWQ9Zm9pZCwgbGluZV9udW1iZXI9bGluZV9ubwogICAgICAgICApCiAK QEAgLTE1MjgsOCArMTQzMiw5IEBAIGRlZiBjbGVhcl9hbGxfYnJlYWtwb2ludCh0cmFuc19pZCk6 CiAgICAgICAgIHRyYW5zX2lkCiAgICAgICAgIC0gVHJhbnNhY3Rpb24gSUQKICAgICAiIiIKLSAg ICBkZWJ1Z2dlcl9kYXRhID0gc2Vzc2lvblsnZGVidWdnZXJEYXRhJ10KLSAgICBpZiBzdHIodHJh bnNfaWQpIG5vdCBpbiBkZWJ1Z2dlcl9kYXRhOgorCisgICAgZGVfaW5zdCA9IERlYnVnZ2VySW5z dGFuY2UodHJhbnNfaWQpCisgICAgaWYgZGVfaW5zdC5kZWJ1Z2dlcl9kYXRhIGlzIE5vbmU6CiAg ICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCiAgICAgICAgICAgICBkYXRhPXsKICAg ICAgICAgICAgICAgICAnc3RhdHVzJzogRmFsc2UsCkBAIC0xNTM5LDIyICsxNDQ0LDE5IEBAIGRl ZiBjbGVhcl9hbGxfYnJlYWtwb2ludCh0cmFuc19pZCk6CiAgICAgICAgICAgICAgICAgKQogICAg ICAgICAgICAgfQogICAgICAgICApCi0gICAgb2JqID0gZGVidWdnZXJfZGF0YVtzdHIodHJhbnNf aWQpXQotCi0gICAgbWFuYWdlciA9IGdldF9kcml2ZXIoCi0gICAgICAgIFBHX0RFRkFVTFRfRFJJ VkVSKS5jb25uZWN0aW9uX21hbmFnZXIob2JqWydzZXJ2ZXJfaWQnXSkKKyAgICBtYW5hZ2VyID0g Z2V0X2RyaXZlcihQR19ERUZBVUxUX0RSSVZFUikuY29ubmVjdGlvbl9tYW5hZ2VyKAorICAgICAg ICBkZV9pbnN0LmRlYnVnZ2VyX2RhdGFbJ3NlcnZlcl9pZCddKQogICAgIGNvbm4gPSBtYW5hZ2Vy LmNvbm5lY3Rpb24oCi0gICAgICAgIGRpZD1vYmpbJ2RhdGFiYXNlX2lkJ10sIGNvbm5faWQ9b2Jq WydleGVfY29ubl9pZCddKQorICAgICAgICBkaWQ9ZGVfaW5zdC5kZWJ1Z2dlcl9kYXRhWydkYXRh YmFzZV9pZCddLAorICAgICAgICBjb25uX2lkPWRlX2luc3QuZGVidWdnZXJfZGF0YVsnZXhlX2Nv bm5faWQnXSkKIAogICAgICMgZmluZCB0aGUgZGVidWdnZXIgdmVyc2lvbiBhbmQgZXhlY3V0ZSB0 aGUgcXVlcnkgYWNjb3JkaW5nbHkKLSAgICBkYmdfdmVyc2lvbiA9IG9ialsnZGVidWdnZXJfdmVy c2lvbiddCisgICAgZGJnX3ZlcnNpb24gPSBkZV9pbnN0LmRlYnVnZ2VyX2RhdGFbJ2RlYnVnZ2Vy X3ZlcnNpb24nXQogICAgIGlmIGRiZ192ZXJzaW9uIDw9IDI6CiAgICAgICAgIHRlbXBsYXRlX3Bh dGggPSAnZGVidWdnZXIvc3FsL3YxJwogICAgIGVsc2U6CiAgICAgICAgIHRlbXBsYXRlX3BhdGgg PSAnZGVidWdnZXIvc3FsL3YyJwogCi0gICAgcXVlcnlfdHlwZSA9ICcnCi0KICAgICBpZiBjb25u LmNvbm5lY3RlZCgpOgogICAgICAgICAjIGdldCB0aGUgZGF0YSBzZW50IHRocm91Z2ggcG9zdCBm cm9tIGNsaWVudAogICAgICAgICBpZiByZXF1ZXN0LmZvcm1bJ2JyZWFrcG9pbnRfbGlzdCddOgpA QCAtMTU2Miw4ICsxNDY0LDkgQEAgZGVmIGNsZWFyX2FsbF9icmVha3BvaW50KHRyYW5zX2lkKToK ICAgICAgICAgICAgIGZvciBsaW5lX25vIGluIGxpbmVfbnVtYmVyczoKICAgICAgICAgICAgICAg ICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoCiAgICAgICAgICAgICAgICAgICAgICIvIi5qb2luKFt0 ZW1wbGF0ZV9wYXRoLCAiY2xlYXJfYnJlYWtwb2ludC5zcWwiXSksCi0gICAgICAgICAgICAgICAg ICAgIHNlc3Npb25faWQ9b2JqWydzZXNzaW9uX2lkJ10sCi0gICAgICAgICAgICAgICAgICAgIGZv aWQ9b2JqWydmdW5jdGlvbl9pZCddLCBsaW5lX251bWJlcj1saW5lX25vCisgICAgICAgICAgICAg ICAgICAgIHNlc3Npb25faWQ9ZGVfaW5zdC5kZWJ1Z2dlcl9kYXRhWydzZXNzaW9uX2lkJ10sCisg ICAgICAgICAgICAgICAgICAgIGZvaWQ9ZGVfaW5zdC5kZWJ1Z2dlcl9kYXRhWydmdW5jdGlvbl9p ZCddLAorICAgICAgICAgICAgICAgICAgICBsaW5lX251bWJlcj1saW5lX25vCiAgICAgICAgICAg ICAgICAgKQogCiAgICAgICAgICAgICAgICAgc3RhdHVzLCByZXN1bHQgPSBjb25uLmV4ZWN1dGVf ZGljdChzcWwpCkBAIC0xNTk3LDggKzE1MDAsOSBAQCBkZWYgZGVwb3NpdF9wYXJhbWV0ZXJfdmFs dWUodHJhbnNfaWQpOgogICAgICAgICB0cmFuc19pZAogICAgICAgICAtIFRyYW5zYWN0aW9uIElE CiAgICAgIiIiCi0gICAgZGVidWdnZXJfZGF0YSA9IHNlc3Npb25bJ2RlYnVnZ2VyRGF0YSddCi0g ICAgaWYgc3RyKHRyYW5zX2lkKSBub3QgaW4gZGVidWdnZXJfZGF0YToKKworICAgIGRlX2luc3Qg PSBEZWJ1Z2dlckluc3RhbmNlKHRyYW5zX2lkKQorICAgIGlmIGRlX2luc3QuZGVidWdnZXJfZGF0 YSBpcyBOb25lOgogICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAogICAgICAgICAg ICAgZGF0YT17CiAgICAgICAgICAgICAgICAgJ3N0YXR1cyc6IEZhbHNlLApAQCAtMTYwNiwyMiAr MTUxMCwxOSBAQCBkZWYgZGVwb3NpdF9wYXJhbWV0ZXJfdmFsdWUodHJhbnNfaWQpOgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3aXRoIHRoZSBzZXJ2ZXIgaGFzIGJlZW4gY2xv c2VkLicpCiAgICAgICAgICAgICB9CiAgICAgICAgICkKLSAgICBvYmogPSBkZWJ1Z2dlcl9kYXRh W3N0cih0cmFuc19pZCldCi0KLSAgICBtYW5hZ2VyID0gZ2V0X2RyaXZlcigKLSAgICAgICAgUEdf REVGQVVMVF9EUklWRVIpLmNvbm5lY3Rpb25fbWFuYWdlcihvYmpbJ3NlcnZlcl9pZCddKQorICAg IG1hbmFnZXIgPSBnZXRfZHJpdmVyKFBHX0RFRkFVTFRfRFJJVkVSKS5jb25uZWN0aW9uX21hbmFn ZXIoCisgICAgICAgIGRlX2luc3QuZGVidWdnZXJfZGF0YVsnc2VydmVyX2lkJ10pCiAgICAgY29u biA9IG1hbmFnZXIuY29ubmVjdGlvbigKLSAgICAgICAgZGlkPW9ialsnZGF0YWJhc2VfaWQnXSwg Y29ubl9pZD1vYmpbJ2V4ZV9jb25uX2lkJ10pCisgICAgICAgIGRpZD1kZV9pbnN0LmRlYnVnZ2Vy X2RhdGFbJ2RhdGFiYXNlX2lkJ10sCisgICAgICAgIGNvbm5faWQ9ZGVfaW5zdC5kZWJ1Z2dlcl9k YXRhWydleGVfY29ubl9pZCddKQogCiAgICAgIyBmaW5kIHRoZSBkZWJ1Z2dlciB2ZXJzaW9uIGFu ZCBleGVjdXRlIHRoZSBxdWVyeSBhY2NvcmRpbmdseQotICAgIGRiZ192ZXJzaW9uID0gb2JqWydk ZWJ1Z2dlcl92ZXJzaW9uJ10KKyAgICBkYmdfdmVyc2lvbiA9IGRlX2luc3QuZGVidWdnZXJfZGF0 YVsnZGVidWdnZXJfdmVyc2lvbiddCiAgICAgaWYgZGJnX3ZlcnNpb24gPD0gMjoKICAgICAgICAg dGVtcGxhdGVfcGF0aCA9ICdkZWJ1Z2dlci9zcWwvdjEnCiAgICAgZWxzZToKICAgICAgICAgdGVt cGxhdGVfcGF0aCA9ICdkZWJ1Z2dlci9zcWwvdjInCiAKLSAgICBxdWVyeV90eXBlID0gJycKLQog ICAgIGlmIGNvbm4uY29ubmVjdGVkKCk6CiAgICAgICAgICMgZ2V0IHRoZSBkYXRhIHNlbnQgdGhy b3VnaCBwb3N0IGZyb20gY2xpZW50CiAgICAgICAgIGRhdGEgPSBqc29uLmxvYWRzKHJlcXVlc3Qu dmFsdWVzWydkYXRhJ10sIGVuY29kaW5nPSd1dGYtOCcpCkBAIC0xNjI5LDcgKzE1MzAsNyBAQCBk ZWYgZGVwb3NpdF9wYXJhbWV0ZXJfdmFsdWUodHJhbnNfaWQpOgogICAgICAgICBpZiBkYXRhOgog ICAgICAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKAogICAgICAgICAgICAgICAgICIvIi5q b2luKFt0ZW1wbGF0ZV9wYXRoLCAiZGVwb3NpdF92YWx1ZS5zcWwiXSksCi0gICAgICAgICAgICAg ICAgc2Vzc2lvbl9pZD1vYmpbJ3Nlc3Npb25faWQnXSwKKyAgICAgICAgICAgICAgICBzZXNzaW9u X2lkPWRlX2luc3QuZGVidWdnZXJfZGF0YVsnc2Vzc2lvbl9pZCddLAogICAgICAgICAgICAgICAg IHZhcl9uYW1lPWRhdGFbMF1bJ25hbWUnXSwgbGluZV9udW1iZXI9LTEsCiAgICAgICAgICAgICAg ICAgdmFsPWRhdGFbMF1bJ3ZhbHVlJ10KICAgICAgICAgICAgICkKQEAgLTE2NzgsOCArMTU3OSw4 IEBAIGRlZiBzZWxlY3RfZnJhbWUodHJhbnNfaWQsIGZyYW1lX2lkKToKICAgICAgICAgZnJhbWVf aWQKICAgICAgICAgLSBGcmFtZSBpZCBzZWxlY3RlZAogICAgICIiIgotICAgIGRlYnVnZ2VyX2Rh dGEgPSBzZXNzaW9uWydkZWJ1Z2dlckRhdGEnXQotICAgIGlmIHN0cih0cmFuc19pZCkgbm90IGlu IGRlYnVnZ2VyX2RhdGE6CisgICAgZGVfaW5zdCA9IERlYnVnZ2VySW5zdGFuY2UodHJhbnNfaWQp CisgICAgaWYgZGVfaW5zdC5kZWJ1Z2dlcl9kYXRhIGlzIE5vbmU6CiAgICAgICAgIHJldHVybiBt YWtlX2pzb25fcmVzcG9uc2UoCiAgICAgICAgICAgICBkYXRhPXsKICAgICAgICAgICAgICAgICAn c3RhdHVzJzogRmFsc2UsCkBAIC0xNjg5LDI4ICsxNTkwLDI3IEBAIGRlZiBzZWxlY3RfZnJhbWUo dHJhbnNfaWQsIGZyYW1lX2lkKToKICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICB9CiAg ICAgICAgICkKLSAgICBvYmogPSBkZWJ1Z2dlcl9kYXRhW3N0cih0cmFuc19pZCldCiAKLSAgICBt YW5hZ2VyID0gZ2V0X2RyaXZlcigKLSAgICAgICAgUEdfREVGQVVMVF9EUklWRVIpLmNvbm5lY3Rp b25fbWFuYWdlcihvYmpbJ3NlcnZlcl9pZCddKQorICAgIG1hbmFnZXIgPSBnZXRfZHJpdmVyKFBH X0RFRkFVTFRfRFJJVkVSKS5jb25uZWN0aW9uX21hbmFnZXIoCisgICAgICAgIGRlX2luc3QuZGVi dWdnZXJfZGF0YVsnc2VydmVyX2lkJ10pCiAgICAgY29ubiA9IG1hbmFnZXIuY29ubmVjdGlvbigK LSAgICAgICAgZGlkPW9ialsnZGF0YWJhc2VfaWQnXSwgY29ubl9pZD1vYmpbJ2V4ZV9jb25uX2lk J10pCisgICAgICAgIGRpZD1kZV9pbnN0LmRlYnVnZ2VyX2RhdGFbJ2RhdGFiYXNlX2lkJ10sCisg ICAgICAgIGNvbm5faWQ9ZGVfaW5zdC5kZWJ1Z2dlcl9kYXRhWydleGVfY29ubl9pZCddKQogCiAg ICAgIyBmaW5kIHRoZSBkZWJ1Z2dlciB2ZXJzaW9uIGFuZCBleGVjdXRlIHRoZSBxdWVyeSBhY2Nv cmRpbmdseQotICAgIGRiZ192ZXJzaW9uID0gb2JqWydkZWJ1Z2dlcl92ZXJzaW9uJ10KKyAgICBk YmdfdmVyc2lvbiA9IGRlX2luc3QuZGVidWdnZXJfZGF0YVsnZGVidWdnZXJfdmVyc2lvbiddCiAg ICAgaWYgZGJnX3ZlcnNpb24gPD0gMjoKICAgICAgICAgdGVtcGxhdGVfcGF0aCA9ICdkZWJ1Z2dl ci9zcWwvdjEnCiAgICAgZWxzZToKICAgICAgICAgdGVtcGxhdGVfcGF0aCA9ICdkZWJ1Z2dlci9z cWwvdjInCiAKLSAgICBzZXNzaW9uX29iaiA9IGRlYnVnZ2VyX2RhdGFbc3RyKHRyYW5zX2lkKV0K LSAgICBzZXNzaW9uX29ialsnZnJhbWVfaWQnXSA9IGZyYW1lX2lkCi0gICAgdXBkYXRlX3Nlc3Np b25fZGVidWdnZXJfdHJhbnNhY3Rpb24odHJhbnNfaWQsIHNlc3Npb25fb2JqKQorICAgIGRlX2lu c3QuZGVidWdnZXJfZGF0YVsnZnJhbWVfaWQnXSA9IGZyYW1lX2lkCisgICAgZGVfaW5zdC51cGRh dGVfc2Vzc2lvbigpCiAKICAgICBpZiBjb25uLmNvbm5lY3RlZCgpOgogICAgICAgICBzcWwgPSBy ZW5kZXJfdGVtcGxhdGUoCiAgICAgICAgICAgICAiLyIuam9pbihbdGVtcGxhdGVfcGF0aCwgInNl bGVjdF9mcmFtZS5zcWwiXSksCi0gICAgICAgICAgICBzZXNzaW9uX2lkPW9ialsnc2Vzc2lvbl9p ZCddLAorICAgICAgICAgICAgc2Vzc2lvbl9pZD1kZV9pbnN0LmRlYnVnZ2VyX2RhdGFbJ3Nlc3Np b25faWQnXSwKICAgICAgICAgICAgIGZyYW1lX2lkPWZyYW1lX2lkCiAgICAgICAgICkKIApAQCAt MTk1MCw4ICsxODUwLDggQEAgZGVmIHBvbGxfZW5kX2V4ZWN1dGlvbl9yZXN1bHQodHJhbnNfaWQp OgogICAgICAgICAtIHVuaXF1ZSB0cmFuc2FjdGlvbiBpZC4KICAgICAiIiIKIAotICAgIGRlYnVn Z2VyX2RhdGEgPSBzZXNzaW9uWydkZWJ1Z2dlckRhdGEnXQotICAgIGlmIHN0cih0cmFuc19pZCkg bm90IGluIGRlYnVnZ2VyX2RhdGE6CisgICAgZGVfaW5zdCA9IERlYnVnZ2VySW5zdGFuY2UodHJh bnNfaWQpCisgICAgaWYgZGVfaW5zdC5kZWJ1Z2dlcl9kYXRhIGlzIE5vbmU6CiAgICAgICAgIHJl dHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCiAgICAgICAgICAgICBkYXRhPXsnc3RhdHVzJzogJ05v dENvbm5lY3RlZCcsCiAgICAgICAgICAgICAgICAgICAncmVzdWx0JzogZ2V0dGV4dCgKQEAgLTE5 NTksMTEgKzE4NTksMTIgQEAgZGVmIHBvbGxfZW5kX2V4ZWN1dGlvbl9yZXN1bHQodHJhbnNfaWQp OgogICAgICAgICAgICAgICAgICAgICAgICdzZXJ2ZXIgaGFzIGJlZW4gY2xvc2VkLicpCiAgICAg ICAgICAgICAgICAgICB9CiAgICAgICAgICkKLSAgICBvYmogPSBkZWJ1Z2dlcl9kYXRhW3N0cih0 cmFuc19pZCldCiAKLSAgICBtYW5hZ2VyID0gZ2V0X2RyaXZlcigKLSAgICAgICAgUEdfREVGQVVM VF9EUklWRVIpLmNvbm5lY3Rpb25fbWFuYWdlcihvYmpbJ3NlcnZlcl9pZCddKQotICAgIGNvbm4g PSBtYW5hZ2VyLmNvbm5lY3Rpb24oZGlkPW9ialsnZGF0YWJhc2VfaWQnXSwgY29ubl9pZD1vYmpb J2Nvbm5faWQnXSkKKyAgICBtYW5hZ2VyID0gZ2V0X2RyaXZlcihQR19ERUZBVUxUX0RSSVZFUiku Y29ubmVjdGlvbl9tYW5hZ2VyKAorICAgICAgICBkZV9pbnN0LmRlYnVnZ2VyX2RhdGFbJ3NlcnZl cl9pZCddKQorICAgIGNvbm4gPSBtYW5hZ2VyLmNvbm5lY3Rpb24oCisgICAgICAgIGRpZD1kZV9p bnN0LmRlYnVnZ2VyX2RhdGFbJ2RhdGFiYXNlX2lkJ10sCisgICAgICAgIGNvbm5faWQ9ZGVfaW5z dC5kZWJ1Z2dlcl9kYXRhWydjb25uX2lkJ10pCiAKICAgICBpZiBjb25uLmNvbm5lY3RlZCgpOgog ICAgICAgICBzdGF0dXNtc2cgPSBjb25uLnN0YXR1c19tZXNzYWdlKCkKQEAgLTE5ODAsMTEgKzE4 ODEsMTAgQEAgZGVmIHBvbGxfZW5kX2V4ZWN1dGlvbl9yZXN1bHQodHJhbnNfaWQpOgogICAgICAg ICAgICAgICAgIH0KICAgICAgICAgICAgICkKIAotICAgICAgICBzZXNzaW9uX2Z1bmN0aW9uX2Rh dGEgPSBzZXNzaW9uWydmdW5jdGlvbkRhdGEnXVtzdHIodHJhbnNfaWQpXQogICAgICAgICBpZiBz dGF0dXMgPT0gQVNZTkNfT0sgYW5kIFwKLSAgICAgICAgICAgIG5vdCBzZXNzaW9uX2Z1bmN0aW9u X2RhdGFbJ2lzX2Z1bmMnXSBhbmRcCi0gICAgICAgICAgICAoc2Vzc2lvbl9mdW5jdGlvbl9kYXRh WydsYW5ndWFnZSddID09ICdlZGJzcGwnIG9yCi0gICAgICAgICAgICAgICAgc2Vzc2lvbl9mdW5j dGlvbl9kYXRhWydsYW5ndWFnZSddID09ICdwbHBnc3FsJyk6CisgICAgICAgICAgICBub3QgZGVf aW5zdC5mdW5jdGlvbl9kYXRhWydpc19mdW5jJ10gYW5kXAorICAgICAgICAgICAgKGRlX2luc3Qu ZnVuY3Rpb25fZGF0YVsnbGFuZ3VhZ2UnXSA9PSAnZWRic3BsJyBvcgorICAgICAgICAgICAgICAg IGRlX2luc3QuZnVuY3Rpb25fZGF0YVsnbGFuZ3VhZ2UnXSA9PSAncGxwZ3NxbCcpOgogICAgICAg ICAgICAgc3RhdHVzID0gJ1N1Y2Nlc3MnCiAgICAgICAgICAgICBhZGRpdGlvbmFsX21zZ3MgPSBj b25uLm1lc3NhZ2VzKCkKICAgICAgICAgICAgIGlmIGxlbihhZGRpdGlvbmFsX21zZ3MpID4gMDoK QEAgLTIwNzcsOCArMTk3Nyw4IEBAIGRlZiBwb2xsX3Jlc3VsdCh0cmFuc19pZCk6CiAgICAgICAg IC0gdW5pcXVlIHRyYW5zYWN0aW9uIGlkLgogICAgICIiIgogCi0gICAgZGVidWdnZXJfZGF0YSA9 IHNlc3Npb25bJ2RlYnVnZ2VyRGF0YSddCi0gICAgaWYgc3RyKHRyYW5zX2lkKSBub3QgaW4gZGVi dWdnZXJfZGF0YToKKyAgICBkZV9pbnN0ID0gRGVidWdnZXJJbnN0YW5jZSh0cmFuc19pZCkKKyAg ICBpZiBkZV9pbnN0LmRlYnVnZ2VyX2RhdGEgaXMgTm9uZToKICAgICAgICAgcmV0dXJuIG1ha2Vf anNvbl9yZXNwb25zZSgKICAgICAgICAgICAgIGRhdGE9ewogICAgICAgICAgICAgICAgICdzdGF0 dXMnOiAnTm90Q29ubmVjdGVkJywKQEAgLTIwODYsMTIgKzE5ODYsMTIgQEAgZGVmIHBvbGxfcmVz dWx0KHRyYW5zX2lkKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2l0aCB0 aGUgc2VydmVyIGhhcyBiZWVuIGNsb3NlZC4nKQogICAgICAgICAgICAgfQogICAgICAgICApCi0g ICAgb2JqID0gZGVidWdnZXJfZGF0YVtzdHIodHJhbnNfaWQpXQogCi0gICAgbWFuYWdlciA9IGdl dF9kcml2ZXIoCi0gICAgICAgIFBHX0RFRkFVTFRfRFJJVkVSKS5jb25uZWN0aW9uX21hbmFnZXIo b2JqWydzZXJ2ZXJfaWQnXSkKKyAgICBtYW5hZ2VyID0gZ2V0X2RyaXZlcihQR19ERUZBVUxUX0RS SVZFUikuY29ubmVjdGlvbl9tYW5hZ2VyKAorICAgICAgICBkZV9pbnN0LmRlYnVnZ2VyX2RhdGFb J3NlcnZlcl9pZCddKQogICAgIGNvbm4gPSBtYW5hZ2VyLmNvbm5lY3Rpb24oCi0gICAgICAgIGRp ZD1vYmpbJ2RhdGFiYXNlX2lkJ10sIGNvbm5faWQ9b2JqWydleGVfY29ubl9pZCddKQorICAgICAg ICBkaWQ9ZGVfaW5zdC5kZWJ1Z2dlcl9kYXRhWydkYXRhYmFzZV9pZCddLAorICAgICAgICBjb25u X2lkPWRlX2luc3QuZGVidWdnZXJfZGF0YVsnZXhlX2Nvbm5faWQnXSkKIAogICAgIGlmIGNvbm4u Y29ubmVjdGVkKCk6CiAgICAgICAgIHN0YXR1cywgcmVzdWx0ID0gY29ubi5wb2xsKCkKQEAgLTIx MTcsNyArMjAxNyw3IEBAIGRlZiBwb2xsX3Jlc3VsdCh0cmFuc19pZCk6CiAgICAgKQogCiAKLWRl ZiBjbG9zZV9kZWJ1Z2dlcl9zZXNzaW9uKHRyYW5zX2lkKToKK2RlZiBjbG9zZV9kZWJ1Z2dlcl9z ZXNzaW9uKF90cmFuc19pZCwgY2xvc2VfYWxsPUZhbHNlKToKICAgICAiIiIKICAgICBUaGlzIGZ1 bmN0aW9uIGlzIHVzZWQgdG8gY2FuY2VsIHRoZSBkZWJ1Z2dlciB0cmFuc2FjdGlvbiBhbmQKICAg ICByZWxlYXNlIHRoZSBjb25uZWN0aW9uLgpAQCAtMjEyNSwyMSArMjAyNSwzOSBAQCBkZWYgY2xv c2VfZGVidWdnZXJfc2Vzc2lvbih0cmFuc19pZCk6CiAgICAgOnBhcmFtIHRyYW5zX2lkOiBUcmFu c2FjdGlvbiBpZAogICAgIDpyZXR1cm46CiAgICAgIiIiCi0gICAgZGJnX29iaiA9IHNlc3Npb25b J2RlYnVnZ2VyRGF0YSddW3N0cih0cmFuc19pZCldCiAKLSAgICBtYW5hZ2VyID0gZ2V0X2RyaXZl cigKLSAgICAgICAgUEdfREVGQVVMVF9EUklWRVIpLmNvbm5lY3Rpb25fbWFuYWdlcihkYmdfb2Jq WydzZXJ2ZXJfaWQnXSkKKyAgICBpZiBjbG9zZV9hbGw6CisgICAgICAgIHRyYW5zX2lkcyA9IERl YnVnZ2VySW5zdGFuY2UuZ2V0X3RyYW5zX2lkcygpCisgICAgZWxzZToKKyAgICAgICAgdHJhbnNf aWRzID0gW190cmFuc19pZF0KIAotICAgIGlmIG1hbmFnZXIgaXMgbm90IE5vbmU6Ci0gICAgICAg IGNvbm4gPSBtYW5hZ2VyLmNvbm5lY3Rpb24oCi0gICAgICAgICAgICBkaWQ9ZGJnX29ialsnZGF0 YWJhc2VfaWQnXSwgY29ubl9pZD1kYmdfb2JqWydjb25uX2lkJ10pCi0gICAgICAgIGlmIGNvbm4u Y29ubmVjdGVkKCk6Ci0gICAgICAgICAgICBjb25uLmNhbmNlbF90cmFuc2FjdGlvbihkYmdfb2Jq Wydjb25uX2lkJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYmdfb2Jq WydkYXRhYmFzZV9pZCddKQotICAgICAgICBjb25uID0gbWFuYWdlci5jb25uZWN0aW9uKAotICAg ICAgICAgICAgZGlkPWRiZ19vYmpbJ2RhdGFiYXNlX2lkJ10sIGNvbm5faWQ9ZGJnX29ialsnZXhl X2Nvbm5faWQnXSkKLSAgICAgICAgaWYgY29ubi5jb25uZWN0ZWQoKToKLSAgICAgICAgICAgIGNv bm4uY2FuY2VsX3RyYW5zYWN0aW9uKGRiZ19vYmpbJ2V4ZV9jb25uX2lkJ10sCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBkYmdfb2JqWydkYXRhYmFzZV9pZCddKQotICAgICAg ICBtYW5hZ2VyLnJlbGVhc2UoY29ubl9pZD1kYmdfb2JqWydjb25uX2lkJ10pCi0gICAgICAgIG1h bmFnZXIucmVsZWFzZShjb25uX2lkPWRiZ19vYmpbJ2V4ZV9jb25uX2lkJ10pCisgICAgZm9yIHRy YW5zX2lkIGluIHRyYW5zX2lkczoKKyAgICAgICAgZGVfaW5zdCA9IERlYnVnZ2VySW5zdGFuY2Uo dHJhbnNfaWQpCisgICAgICAgIGRiZ19vYmogPSBkZV9pbnN0LmRlYnVnZ2VyX2RhdGEKKworICAg ICAgICB0cnk6CisgICAgICAgICAgICBpZiBkYmdfb2JqIGlzIG5vdCBOb25lOgorICAgICAgICAg ICAgICAgIG1hbmFnZXIgPSBnZXRfZHJpdmVyKFBHX0RFRkFVTFRfRFJJVkVSKS5cCisgICAgICAg ICAgICAgICAgICAgIGNvbm5lY3Rpb25fbWFuYWdlcihkYmdfb2JqWydzZXJ2ZXJfaWQnXSkKKwor ICAgICAgICAgICAgICAgIGlmIG1hbmFnZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAg ICAgIGNvbm4gPSBtYW5hZ2VyLmNvbm5lY3Rpb24oCisgICAgICAgICAgICAgICAgICAgICAgICBk aWQ9ZGJnX29ialsnZGF0YWJhc2VfaWQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5f aWQ9ZGJnX29ialsnY29ubl9pZCddKQorICAgICAgICAgICAgICAgICAgICBpZiBjb25uLmNvbm5l Y3RlZCgpOgorICAgICAgICAgICAgICAgICAgICAgICAgY29ubi5jYW5jZWxfdHJhbnNhY3Rpb24o CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGJnX29ialsnY29ubl9pZCddLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGRiZ19vYmpbJ2RhdGFiYXNlX2lkJ10pCisgICAgICAgICAg ICAgICAgICAgIGNvbm4gPSBtYW5hZ2VyLmNvbm5lY3Rpb24oCisgICAgICAgICAgICAgICAgICAg ICAgICBkaWQ9ZGJnX29ialsnZGF0YWJhc2VfaWQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAg IGNvbm5faWQ9ZGJnX29ialsnZXhlX2Nvbm5faWQnXSkKKyAgICAgICAgICAgICAgICAgICAgaWYg Y29ubi5jb25uZWN0ZWQoKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4uY2FuY2VsX3Ry YW5zYWN0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRiZ19vYmpbJ2V4ZV9jb25u X2lkJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGJnX29ialsnZGF0YWJhc2VfaWQn XSkKKyAgICAgICAgICAgICAgICAgICAgbWFuYWdlci5yZWxlYXNlKGNvbm5faWQ9ZGJnX29ialsn Y29ubl9pZCddKQorICAgICAgICAgICAgICAgICAgICBtYW5hZ2VyLnJlbGVhc2UoY29ubl9pZD1k Ymdfb2JqWydleGVfY29ubl9pZCddKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIF86Cisg ICAgICAgICAgICByYWlzZQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgZGVfaW5zdC5j bGVhcigpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9kZWJ1Z2dlci9zdGF0aWMvanMv ZGVidWdnZXIuanMgYi93ZWIvcGdhZG1pbi90b29scy9kZWJ1Z2dlci9zdGF0aWMvanMvZGVidWdn ZXIuanMKaW5kZXggMmVlMWQ1NWMuLmM5MWU0MThmIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90 b29scy9kZWJ1Z2dlci9zdGF0aWMvanMvZGVidWdnZXIuanMKKysrIGIvd2ViL3BnYWRtaW4vdG9v bHMvZGVidWdnZXIvc3RhdGljL2pzL2RlYnVnZ2VyLmpzCkBAIC0zNDMsMTcgKzM0MywxNyBAQCBk ZWZpbmUoWwogICAgICAgdmFyIHRyZWVJbmZvID0gbm9kZS5nZXRUcmVlTm9kZUhpZXJhcmNoeS5h cHBseShub2RlLCBbaV0pLAogICAgICAgICBiYXNlVXJsOwogCi0gICAgICBpZiAoZC5fdHlwZSA9 PSAnZnVuY3Rpb24nKSB7CisgICAgICBpZiAoZC5fdHlwZSA9PSAnZnVuY3Rpb24nIHx8IGQuX3R5 cGUgPT0gJ2VkYmZ1bmMnKSB7CiAgICAgICAgIGJhc2VVcmwgPSB1cmxfZm9yKAogICAgICAgICAg ICdkZWJ1Z2dlci5pbml0aWFsaXplX3RhcmdldF9mb3JfZnVuY3Rpb24nLCB7CiAgICAgICAgICAg ICAnZGVidWdfdHlwZSc6ICdpbmRpcmVjdCcsCiAgICAgICAgICAgICAnc2lkJzogdHJlZUluZm8u c2VydmVyLl9pZCwKICAgICAgICAgICAgICdkaWQnOiB0cmVlSW5mby5kYXRhYmFzZS5faWQsCiAg ICAgICAgICAgICAnc2NpZCc6IHRyZWVJbmZvLnNjaGVtYS5faWQsCi0gICAgICAgICAgICAnZnVu Y19pZCc6IHRyZWVJbmZvLmZ1bmN0aW9uLl9pZCwKKyAgICAgICAgICAgICdmdW5jX2lkJzogZGVi dWdnZXJVdGlscy5nZXRGdW5jdGlvbklkKHRyZWVJbmZvKSwKICAgICAgICAgICB9CiAgICAgICAg ICk7Ci0gICAgICB9IGVsc2UgaWYgKGQuX3R5cGUgPT0gJ3Byb2NlZHVyZScpIHsKKyAgICAgIH0g ZWxzZSBpZiAoZC5fdHlwZSA9PSAncHJvY2VkdXJlJyB8fCBkLl90eXBlID09ICdlZGJwcm9jJykg ewogICAgICAgICBiYXNlVXJsID0gdXJsX2ZvcigKICAgICAgICAgICAnZGVidWdnZXIuaW5pdGlh bGl6ZV90YXJnZXRfZm9yX2Z1bmN0aW9uJywgewogICAgICAgICAgICAgJ2RlYnVnX3R5cGUnOiAn aW5kaXJlY3QnLApAQCAtMzYzLDI0ICszNjMsNiBAQCBkZWZpbmUoWwogICAgICAgICAgICAgJ2Z1 bmNfaWQnOiBkZWJ1Z2dlclV0aWxzLmdldFByb2NlZHVyZUlkKHRyZWVJbmZvKSwKICAgICAgICAg ICB9CiAgICAgICAgICk7Ci0gICAgICB9IGVsc2UgaWYgKGQuX3R5cGUgPT0gJ2VkYmZ1bmMnKSB7 Ci0gICAgICAgIC8vIEdldCB0aGUgZXhpc3RpbmcgZnVuY3Rpb24gcGFyYW1ldGVycyBhdmFpbGFi bGUgZnJvbSBzcWxpdGUgZGF0YWJhc2UKLSAgICAgICAgYmFzZVVybCA9IHVybF9mb3IoJ2RlYnVn Z2VyLmluaXRpYWxpemVfdGFyZ2V0X2Zvcl9mdW5jdGlvbicsIHsKLSAgICAgICAgICAnZGVidWdf dHlwZSc6ICdpbmRpcmVjdCcsCi0gICAgICAgICAgJ3NpZCc6IHRyZWVJbmZvLnNlcnZlci5faWQs Ci0gICAgICAgICAgJ2RpZCc6IHRyZWVJbmZvLmRhdGFiYXNlLl9pZCwKLSAgICAgICAgICAnc2Np ZCc6IHRyZWVJbmZvLnNjaGVtYS5faWQsCi0gICAgICAgICAgJ2Z1bmNfaWQnOiB0cmVlSW5mby5l ZGJmdW5jLl9pZCwKLSAgICAgICAgfSk7Ci0gICAgICB9IGVsc2UgaWYgKGQuX3R5cGUgPT0gJ2Vk YnByb2MnKSB7Ci0gICAgICAgIC8vIEdldCB0aGUgZXhpc3RpbmcgZnVuY3Rpb24gcGFyYW1ldGVy cyBhdmFpbGFibGUgZnJvbSBzcWxpdGUgZGF0YWJhc2UKLSAgICAgICAgYmFzZVVybCA9IHVybF9m b3IoJ2RlYnVnZ2VyLmluaXRpYWxpemVfdGFyZ2V0X2Zvcl9mdW5jdGlvbicsIHsKLSAgICAgICAg ICAnZGVidWdfdHlwZSc6ICdpbmRpcmVjdCcsCi0gICAgICAgICAgJ3NpZCc6IHRyZWVJbmZvLnNl cnZlci5faWQsCi0gICAgICAgICAgJ2RpZCc6IHRyZWVJbmZvLmRhdGFiYXNlLl9pZCwKLSAgICAg ICAgICAnc2NpZCc6IHRyZWVJbmZvLnNjaGVtYS5faWQsCi0gICAgICAgICAgJ2Z1bmNfaWQnOiB0 cmVlSW5mby5lZGJwcm9jLl9pZCwKLSAgICAgICAgfSk7CiAgICAgICB9IGVsc2UgaWYgKGQuX3R5 cGUgPT0gJ3RyaWdnZXJfZnVuY3Rpb24nKSB7CiAgICAgICAgIGJhc2VVcmwgPSB1cmxfZm9yKAog ICAgICAgICAgICdkZWJ1Z2dlci5pbml0aWFsaXplX3RhcmdldF9mb3JfZnVuY3Rpb24nLCB7CkBA IC00OTEsOSArNDczLDExIEBAIGRlZmluZShbCiAgICAgICB9KQogICAgICAgICAuZG9uZShmdW5j dGlvbihyZXMpIHsKIAorICAgICAgICAgIGxldCBkZWJ1Z19pbmZvID0gcmVzLmRhdGEuZGVidWdf aW5mbywKKyAgICAgICAgICAgIHRyYW5zX2lkID0gcmVzLmRhdGEudHJhbnNfaWQ7CiAgICAgICAg ICAgLy8gT3BlbiBBbGVydGlmeSB0aGUgZGlhbG9nIHRvIHRha2UgdGhlIGlucHV0IGFyZ3VtZW50 cyBmcm9tIHVzZXIgaWYgZnVuY3Rpb24gaGF2aW5nIGlucHV0IGFyZ3VtZW50cwotICAgICAgICAg IGlmIChyZXMuZGF0YVswXVsncmVxdWlyZV9pbnB1dCddKSB7Ci0gICAgICAgICAgICBnZXRfZnVu Y3Rpb25fYXJndW1lbnRzKHJlcy5kYXRhWzBdLCAwLCBpc19lZGJfcHJvYyk7CisgICAgICAgICAg aWYgKGRlYnVnX2luZm9bMF1bJ3JlcXVpcmVfaW5wdXQnXSkgeworICAgICAgICAgICAgZ2V0X2Z1 bmN0aW9uX2FyZ3VtZW50cyhkZWJ1Z19pbmZvWzBdLCAwLCBpc19lZGJfcHJvYywgdHJhbnNfaWQp OwogICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgdGFyZ2V0 IGFuZCBjcmVhdGUgYXN5bmNocm9ub3VzIGNvbm5lY3Rpb24gYW5kIHVuaXF1ZSB0cmFuc2FjdGlv biBJRAogICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIGFyZ3VtZW50cyB0byB0aGUgZnVuY3Rp b25zIHRoZW4gd2Ugc2hvdWxkIG5vdCBhc2sgZm9yIGZvciBmdW5jdGlvbiBhcmd1bWVudHMgYW5k CkBAIC01MDksMjAgKzQ5MywyMiBAQCBkZWZpbmUoWwogICAgICAgICAgICAgdmFyIHRyZWVJbmZv ID0gbm9kZS5nZXRUcmVlTm9kZUhpZXJhcmNoeS5hcHBseShub2RlLCBbaV0pLAogICAgICAgICAg ICAgICBiYXNlVXJsOwogCi0gICAgICAgICAgICBpZiAoZC5fdHlwZSA9PSAnZnVuY3Rpb24nKSB7 CisgICAgICAgICAgICBpZiAoZC5fdHlwZSA9PSAnZnVuY3Rpb24nIHx8IGQuX3R5cGUgPT0gJ2Vk YmZ1bmMnKSB7CiAgICAgICAgICAgICAgIGJhc2VVcmwgPSB1cmxfZm9yKAogICAgICAgICAgICAg ICAgICdkZWJ1Z2dlci5pbml0aWFsaXplX3RhcmdldF9mb3JfZnVuY3Rpb24nLCB7CiAgICAgICAg ICAgICAgICAgICAnZGVidWdfdHlwZSc6ICdkaXJlY3QnLAorICAgICAgICAgICAgICAgICAgJ3Ry YW5zX2lkJzogdHJhbnNfaWQsCiAgICAgICAgICAgICAgICAgICAnc2lkJzogdHJlZUluZm8uc2Vy dmVyLl9pZCwKICAgICAgICAgICAgICAgICAgICdkaWQnOiB0cmVlSW5mby5kYXRhYmFzZS5faWQs CiAgICAgICAgICAgICAgICAgICAnc2NpZCc6IHRyZWVJbmZvLnNjaGVtYS5faWQsCi0gICAgICAg ICAgICAgICAgICAnZnVuY19pZCc6IHRyZWVJbmZvLmZ1bmN0aW9uLl9pZCwKKyAgICAgICAgICAg ICAgICAgICdmdW5jX2lkJzogZGVidWdnZXJVdGlscy5nZXRGdW5jdGlvbklkKHRyZWVJbmZvKSwK ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICB9IGVsc2Ug eworICAgICAgICAgICAgfSBlbHNlIGlmKGQuX3R5cGUgPT0gJ3Byb2NlZHVyZScgfHwgZC5fdHlw ZSA9PSAnZWRicHJvYycpIHsKICAgICAgICAgICAgICAgYmFzZVVybCA9IHVybF9mb3IoCiAgICAg ICAgICAgICAgICAgJ2RlYnVnZ2VyLmluaXRpYWxpemVfdGFyZ2V0X2Zvcl9mdW5jdGlvbicsIHsK ICAgICAgICAgICAgICAgICAgICdkZWJ1Z190eXBlJzogJ2RpcmVjdCcsCisgICAgICAgICAgICAg ICAgICAndHJhbnNfaWQnOiB0cmFuc19pZCwKICAgICAgICAgICAgICAgICAgICdzaWQnOiB0cmVl SW5mby5zZXJ2ZXIuX2lkLAogICAgICAgICAgICAgICAgICAgJ2RpZCc6IHRyZWVJbmZvLmRhdGFi YXNlLl9pZCwKICAgICAgICAgICAgICAgICAgICdzY2lkJzogdHJlZUluZm8uc2NoZW1hLl9pZCwK QEAgLTUzNSwxMCArNTIxLDEwIEBAIGRlZmluZShbCiAgICAgICAgICAgICAgIHVybDogYmFzZVVy bCwKICAgICAgICAgICAgICAgbWV0aG9kOiAnR0VUJywKICAgICAgICAgICAgIH0pCi0gICAgICAg ICAgICAgIC5kb25lKGZ1bmN0aW9uKHJlcykgeworICAgICAgICAgICAgICAuZG9uZShmdW5jdGlv bigpIHsKIAogICAgICAgICAgICAgICAgIHZhciB1cmwgPSB1cmxfZm9yKCdkZWJ1Z2dlci5kaXJl Y3QnLCB7Ci0gICAgICAgICAgICAgICAgICAndHJhbnNfaWQnOiByZXMuZGF0YS5kZWJ1Z2dlclRy YW5zSWQsCisgICAgICAgICAgICAgICAgICAndHJhbnNfaWQnOiB0cmFuc19pZCwKICAgICAgICAg ICAgICAgICB9KTsKIAogICAgICAgICAgICAgICAgIGlmIChzZWxmLnByZWZlcmVuY2VzLmRlYnVn Z2VyX25ld19icm93c2VyX3RhYikgewpAQCAtNTYzLDcgKzU0OSw3IEBAIGRlZmluZShbCiAgICAg ICAgICAgICAgICAgICAvLyBSZWdpc3RlciBQYW5lbCBDbG9zZWQgZXZlbnQKICAgICAgICAgICAg ICAgICAgIHBhbmVsLm9uKHdjRG9ja2VyLkVWRU5ULkNMT1NFRCwgZnVuY3Rpb24oKSB7CiAgICAg ICAgICAgICAgICAgICAgIHZhciBjbG9zZVVybCA9IHVybF9mb3IoJ2RlYnVnZ2VyLmNsb3NlJywg ewotICAgICAgICAgICAgICAgICAgICAgICd0cmFuc19pZCc6IHJlcy5kYXRhLmRlYnVnZ2VyVHJh bnNJZCwKKyAgICAgICAgICAgICAgICAgICAgICAndHJhbnNfaWQnOiB0cmFuc19pZCwKICAgICAg ICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICQuYWpheCh7CiAgICAgICAg ICAgICAgICAgICAgICAgdXJsOiBjbG9zZVVybCwKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rv b2xzL2RlYnVnZ2VyL3N0YXRpYy9qcy9kZWJ1Z2dlcl91aS5qcyBiL3dlYi9wZ2FkbWluL3Rvb2xz L2RlYnVnZ2VyL3N0YXRpYy9qcy9kZWJ1Z2dlcl91aS5qcwppbmRleCA0NmQzNGVlZC4uZjA1YTIy ZGMgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL2RlYnVnZ2VyL3N0YXRpYy9qcy9kZWJ1 Z2dlcl91aS5qcworKysgYi93ZWIvcGdhZG1pbi90b29scy9kZWJ1Z2dlci9zdGF0aWMvanMvZGVi dWdnZXJfdWkuanMKQEAgLTE2MywxMSArMTYzLDExIEBAIGRlZmluZShbCiAgICAgfQogICB9Owog Ci0gIHZhciByZXMgPSBmdW5jdGlvbihkZWJ1Z19pbmZvLCByZXN0YXJ0X2RlYnVnLCBpc19lZGJf cHJvYykgeworICB2YXIgcmVzID0gZnVuY3Rpb24oZGVidWdfaW5mbywgcmVzdGFydF9kZWJ1Zywg aXNfZWRiX3Byb2MsIHRyYW5zX2lkKSB7CiAgICAgaWYgKCFBbGVydGlmeS5kZWJ1Z2dlcklucHV0 QXJnc0RpYWxvZykgewogICAgICAgQWxlcnRpZnkuZGlhbG9nKCdkZWJ1Z2dlcklucHV0QXJnc0Rp YWxvZycsIGZ1bmN0aW9uIGZhY3RvcnkoKSB7CiAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAg bWFpbjogZnVuY3Rpb24odGl0bGUsIGRlYnVnX2luZm8sIHJlc3RhcnRfZGVidWcsIGlzX2VkYl9w cm9jKSB7CisgICAgICAgICAgbWFpbjogZnVuY3Rpb24odGl0bGUsIGRlYnVnX2luZm8sIHJlc3Rh cnRfZGVidWcsIGlzX2VkYl9wcm9jLCB0cmFuc19pZCkgewogICAgICAgICAgICAgdGhpcy5wcmVm ZXJlbmNlcyA9IHdpbmRvdy50b3AucGdBZG1pbi5Ccm93c2VyLmdldF9wcmVmZXJlbmNlc19mb3Jf bW9kdWxlKCdkZWJ1Z2dlcicpOwogICAgICAgICAgICAgdGhpcy5zZXQoJ3RpdGxlJywgdGl0bGUp OwogCkBAIC0xNzUsNiArMTc1LDcgQEAgZGVmaW5lKFsKICAgICAgICAgICAgIC8vIG90aGVyIGZ1 bmN0aW9ucyBvdGhlciB0aGFuIG1haW4gZnVuY3Rpb24uCiAgICAgICAgICAgICB0aGlzLnNldCgn ZGVidWdfaW5mbycsIGRlYnVnX2luZm8pOwogICAgICAgICAgICAgdGhpcy5zZXQoJ3Jlc3RhcnRf ZGVidWcnLCByZXN0YXJ0X2RlYnVnKTsKKyAgICAgICAgICAgIHRoaXMuc2V0KCd0cmFuc19pZCcs IHRyYW5zX2lkKTsKIAogICAgICAgICAgICAgLy8gVmFyaWFibGVzIHRvIHN0b3JlIHRoZSBkYXRh IHNlbnQgZnJvbSBzcWxpdGUgZGF0YWJhc2UKICAgICAgICAgICAgIHZhciBmdW5jX2FyZ3NfZGF0 YSA9IHRoaXMuZnVuY19hcmdzX2RhdGEgPSBbXTsKQEAgLTU3OSw2ICs1ODAsNyBAQCBkZWZpbmUo WwogICAgICAgICAgIHNldHRpbmdzOiB7CiAgICAgICAgICAgICBkZWJ1Z19pbmZvOiB1bmRlZmlu ZWQsCiAgICAgICAgICAgICByZXN0YXJ0X2RlYnVnOiB1bmRlZmluZWQsCisgICAgICAgICAgICB0 cmFuc19pZDogdW5kZWZpbmVkLAogICAgICAgICAgIH0sCiAgICAgICAgICAgc2V0dXA6IGZ1bmN0 aW9uKCkgewogICAgICAgICAgICAgcmV0dXJuIHsKQEAgLTcwNiw2ICs3MDgsNyBAQCBkZWZpbmUo WwogICAgICAgICAgICAgICAgIGlmIChkLl90eXBlID09ICdmdW5jdGlvbicpIHsKICAgICAgICAg ICAgICAgICAgIGJhc2VVcmwgPSB1cmxfZm9yKCdkZWJ1Z2dlci5pbml0aWFsaXplX3RhcmdldF9m b3JfZnVuY3Rpb24nLCB7CiAgICAgICAgICAgICAgICAgICAgICdkZWJ1Z190eXBlJzogJ2RpcmVj dCcsCisgICAgICAgICAgICAgICAgICAgICd0cmFuc19pZCc6IHNlbGYuc2V0dGluZygndHJhbnNf aWQnKSwKICAgICAgICAgICAgICAgICAgICAgJ3NpZCc6IHRyZWVJbmZvLnNlcnZlci5faWQsCiAg ICAgICAgICAgICAgICAgICAgICdkaWQnOiB0cmVlSW5mby5kYXRhYmFzZS5faWQsCiAgICAgICAg ICAgICAgICAgICAgICdzY2lkJzogdHJlZUluZm8uc2NoZW1hLl9pZCwKQEAgLTcxNCw2ICs3MTcs NyBAQCBkZWZpbmUoWwogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZC5fdHlwZSA9PSAncHJv Y2VkdXJlJykgewogICAgICAgICAgICAgICAgICAgYmFzZVVybCA9IHVybF9mb3IoJ2RlYnVnZ2Vy LmluaXRpYWxpemVfdGFyZ2V0X2Zvcl9mdW5jdGlvbicsIHsKICAgICAgICAgICAgICAgICAgICAg J2RlYnVnX3R5cGUnOiAnZGlyZWN0JywKKyAgICAgICAgICAgICAgICAgICAgJ3RyYW5zX2lkJzog c2VsZi5zZXR0aW5nKCd0cmFuc19pZCcpLAogICAgICAgICAgICAgICAgICAgICAnc2lkJzogdHJl ZUluZm8uc2VydmVyLl9pZCwKICAgICAgICAgICAgICAgICAgICAgJ2RpZCc6IHRyZWVJbmZvLmRh dGFiYXNlLl9pZCwKICAgICAgICAgICAgICAgICAgICAgJ3NjaWQnOiB0cmVlSW5mby5zY2hlbWEu X2lkLApAQCAtNzIyLDYgKzcyNiw3IEBAIGRlZmluZShbCiAgICAgICAgICAgICAgICAgfSBlbHNl IGlmIChkLl90eXBlID09ICdlZGJmdW5jJykgewogICAgICAgICAgICAgICAgICAgYmFzZVVybCA9 IHVybF9mb3IoJ2RlYnVnZ2VyLmluaXRpYWxpemVfdGFyZ2V0X2Zvcl9mdW5jdGlvbicsIHsKICAg ICAgICAgICAgICAgICAgICAgJ2RlYnVnX3R5cGUnOiAnZGlyZWN0JywKKyAgICAgICAgICAgICAg ICAgICAgJ3RyYW5zX2lkJzogc2VsZi5zZXR0aW5nKCd0cmFuc19pZCcpLAogICAgICAgICAgICAg ICAgICAgICAnc2lkJzogdHJlZUluZm8uc2VydmVyLl9pZCwKICAgICAgICAgICAgICAgICAgICAg J2RpZCc6IHRyZWVJbmZvLmRhdGFiYXNlLl9pZCwKICAgICAgICAgICAgICAgICAgICAgJ3NjaWQn OiB0cmVlSW5mby5zY2hlbWEuX2lkLApAQCAtNzMwLDYgKzczNSw3IEBAIGRlZmluZShbCiAgICAg ICAgICAgICAgICAgfSBlbHNlIGlmIChkLl90eXBlID09ICdlZGJwcm9jJykgewogICAgICAgICAg ICAgICAgICAgYmFzZVVybCA9IHVybF9mb3IoJ2RlYnVnZ2VyLmluaXRpYWxpemVfdGFyZ2V0X2Zv cl9mdW5jdGlvbicsIHsKICAgICAgICAgICAgICAgICAgICAgJ2RlYnVnX3R5cGUnOiAnZGlyZWN0 JywKKyAgICAgICAgICAgICAgICAgICAgJ3RyYW5zX2lkJzogc2VsZi5zZXR0aW5nKCd0cmFuc19p ZCcpLAogICAgICAgICAgICAgICAgICAgICAnc2lkJzogdHJlZUluZm8uc2VydmVyLl9pZCwKICAg ICAgICAgICAgICAgICAgICAgJ2RpZCc6IHRyZWVJbmZvLmRhdGFiYXNlLl9pZCwKICAgICAgICAg ICAgICAgICAgICAgJ3NjaWQnOiB0cmVlSW5mby5zY2hlbWEuX2lkLApAQCAtODg1LDcgKzg5MSwx MiBAQCBkZWZpbmUoWwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoZS5idXR0b24u dGV4dCA9PT0gZ2V0dGV4dCgnQ2FuY2VsJykpIHsKLSAgICAgICAgICAgICAgLy9jbG9zZSB0aGUg ZGlhbG9nLi4uCisgICAgICAgICAgICAgIC8qIENsZWFyIHRoZSB0cmFucyBpZCAqLworICAgICAg ICAgICAgICAkLmFqYXgoeworICAgICAgICAgICAgICAgIG1ldGhvZDogJ0RFTEVURScsCisgICAg ICAgICAgICAgICAgdXJsOiB1cmxfZm9yKCdkZWJ1Z2dlci5jbG9zZScsIHsndHJhbnNfaWQnOiB0 aGlzLnNldHRpbmcoJ3RyYW5zX2lkJyl9KSwKKyAgICAgICAgICAgICAgfSk7CisKICAgICAgICAg ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgIH0sCkBAIC05NTks NyArOTcwLDcgQEAgZGVmaW5lKFsKICAgICB9CiAKICAgICBBbGVydGlmeS5kZWJ1Z2dlcklucHV0 QXJnc0RpYWxvZygKLSAgICAgIGdldHRleHQoJ0RlYnVnZ2VyJyksIGRlYnVnX2luZm8sIHJlc3Rh cnRfZGVidWcsIGlzX2VkYl9wcm9jCisgICAgICBnZXR0ZXh0KCdEZWJ1Z2dlcicpLCBkZWJ1Z19p bmZvLCByZXN0YXJ0X2RlYnVnLCBpc19lZGJfcHJvYywgdHJhbnNfaWQKICAgICApLnJlc2l6ZVRv KHBnQnJvd3Nlci5zdGRXLm1kLHBnQnJvd3Nlci5zdGRILm1kKTsKIAogICB9OwpkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vdG9vbHMvZGVidWdnZXIvc3RhdGljL2pzL2RlYnVnZ2VyX3V0aWxzLmpz IGIvd2ViL3BnYWRtaW4vdG9vbHMvZGVidWdnZXIvc3RhdGljL2pzL2RlYnVnZ2VyX3V0aWxzLmpz CmluZGV4IGEzNTI5ZDg0Li4yODJhY2IwMSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMv ZGVidWdnZXIvc3RhdGljL2pzL2RlYnVnZ2VyX3V0aWxzLmpzCisrKyBiL3dlYi9wZ2FkbWluL3Rv b2xzL2RlYnVnZ2VyL3N0YXRpYy9qcy9kZWJ1Z2dlcl91dGlscy5qcwpAQCAtMTgsNiArMTgsMTgg QEAgZnVuY3Rpb24gc2V0Rm9jdXNUb0RlYnVnZ2VyRWRpdG9yKGVkaXRvciwgY29tbWFuZCkgewog ICB9CiB9CiAKK2Z1bmN0aW9uIGdldEZ1bmN0aW9uSWQodHJlZUluZm9PYmplY3QpIHsKKyAgbGV0 IG9iamVjdElkOworICBpZih0cmVlSW5mb09iamVjdCkgeworICAgIGlmICh0cmVlSW5mb09iamVj dC5mdW5jdGlvbiAmJiB0cmVlSW5mb09iamVjdC5mdW5jdGlvbi5faWQpIHsKKyAgICAgIG9iamVj dElkID0gdHJlZUluZm9PYmplY3QuZnVuY3Rpb24uX2lkOworICAgIH0gZWxzZSBpZiAodHJlZUlu Zm9PYmplY3QuZWRiZnVuYyAmJiB0cmVlSW5mb09iamVjdC5lZGJmdW5jLl9pZCkgeworICAgICAg b2JqZWN0SWQgPSB0cmVlSW5mb09iamVjdC5lZGJmdW5jLl9pZDsKKyAgICB9CisgIH0KKyAgcmV0 dXJuIG9iamVjdElkOworfQorCiBmdW5jdGlvbiBnZXRQcm9jZWR1cmVJZCh0cmVlSW5mb09iamVj dCkgewogICBsZXQgb2JqZWN0SWQ7CiAgIGlmKHRyZWVJbmZvT2JqZWN0KSB7CkBAIC0zMiw1ICs0 NCw2IEBAIGZ1bmN0aW9uIGdldFByb2NlZHVyZUlkKHRyZWVJbmZvT2JqZWN0KSB7CiAKIG1vZHVs ZS5leHBvcnRzID0gewogICBzZXRGb2N1c1RvRGVidWdnZXJFZGl0b3I6IHNldEZvY3VzVG9EZWJ1 Z2dlckVkaXRvciwKKyAgZ2V0RnVuY3Rpb25JZDogZ2V0RnVuY3Rpb25JZCwKICAgZ2V0UHJvY2Vk dXJlSWQ6IGdldFByb2NlZHVyZUlkLAogfTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xz L2RlYnVnZ2VyL3V0aWxzL2RlYnVnZ2VyX2luc3RhbmNlLnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMv ZGVidWdnZXIvdXRpbHMvZGVidWdnZXJfaW5zdGFuY2UucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAuLmQxNjAyMWUxCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4v dG9vbHMvZGVidWdnZXIvdXRpbHMvZGVidWdnZXJfaW5zdGFuY2UucHkKQEAgLTAsMCArMSw3MiBA QAorZnJvbSBmbGFzayBpbXBvcnQgc2Vzc2lvbgorZnJvbSB0aHJlYWRpbmcgaW1wb3J0IExvY2sK K2ltcG9ydCByYW5kb20KKworZGVidWdnZXJfc2Vzc2lvbnNfbG9jayA9IExvY2soKQorCisKK2Ns YXNzIERlYnVnZ2VySW5zdGFuY2U6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRyYW5zX2lkPU5v bmUpOgorICAgICAgICBpZiB0cmFuc19pZCBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5fdHJh bnNfaWQgPSBzdHIocmFuZG9tLnJhbmRpbnQoMSwgOTk5OTk5OSkpCisgICAgICAgIGVsc2U6Cisg ICAgICAgICAgICBzZWxmLl90cmFuc19pZCA9IHRyYW5zX2lkCisKKyAgICAgICAgc2VsZi5fZnVu Y3Rpb25fZGF0YSA9IE5vbmUKKyAgICAgICAgc2VsZi5fZGVidWdnZXJfZGF0YSA9IE5vbmUKKyAg ICAgICAgc2VsZi5sb2FkX2Zyb21fc2Vzc2lvbigpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYg dHJhbnNfaWQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICB0cmFuc19pZCBiZSByZWFkb25s eSB3aXRoIG5vIHNldHRlcgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX3RyYW5z X2lkCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZnVuY3Rpb25fZGF0YShzZWxmKToKKyAgICAg ICAgcmV0dXJuIHNlbGYuX2Z1bmN0aW9uX2RhdGEKKworICAgIEBmdW5jdGlvbl9kYXRhLnNldHRl cgorICAgIGRlZiBmdW5jdGlvbl9kYXRhKHNlbGYsIGRhdGEpOgorICAgICAgICBzZWxmLl9mdW5j dGlvbl9kYXRhID0gZGF0YQorICAgICAgICBzZWxmLnVwZGF0ZV9zZXNzaW9uKCkKKworICAgIEBw cm9wZXJ0eQorICAgIGRlZiBkZWJ1Z2dlcl9kYXRhKHNlbGYpOgorICAgICAgICByZXR1cm4gc2Vs Zi5fZGVidWdnZXJfZGF0YQorCisgICAgQGRlYnVnZ2VyX2RhdGEuc2V0dGVyCisgICAgZGVmIGRl YnVnZ2VyX2RhdGEoc2VsZiwgZGF0YSk6CisgICAgICAgIHNlbGYuX2RlYnVnZ2VyX2RhdGEgPSBk YXRhCisgICAgICAgIHNlbGYudXBkYXRlX3Nlc3Npb24oKQorCisgICAgQHN0YXRpY21ldGhvZAor ICAgIGRlZiBnZXRfdHJhbnNfaWRzKCk6CisgICAgICAgIGlmICdfX2RlYnVnZ2VyX3Nlc3Npb25z JyBpbiBzZXNzaW9uOgorICAgICAgICAgICAgcmV0dXJuIFt0cmFuc19pZCBmb3IgdHJhbnNfaWQg aW4gc2Vzc2lvblsnX19kZWJ1Z2dlcl9zZXNzaW9ucyddXQorICAgICAgICBlbHNlOgorICAgICAg ICAgICAgcmV0dXJuIFtdCisKKyAgICBkZWYgbG9hZF9mcm9tX3Nlc3Npb24oc2VsZik6CisgICAg ICAgIGlmICdfX2RlYnVnZ2VyX3Nlc3Npb25zJyBpbiBzZXNzaW9uOgorICAgICAgICAgICAgaWYg c3RyKHNlbGYudHJhbnNfaWQpIGluIHNlc3Npb25bJ19fZGVidWdnZXJfc2Vzc2lvbnMnXToKKyAg ICAgICAgICAgICAgICB0cmFuc19kYXRhID0gc2Vzc2lvblsnX19kZWJ1Z2dlcl9zZXNzaW9ucydd W3N0cihzZWxmLnRyYW5zX2lkKV0KKyAgICAgICAgICAgICAgICBzZWxmLmZ1bmN0aW9uX2RhdGEg PSB0cmFuc19kYXRhLmdldCgnZnVuY3Rpb25fZGF0YScsIE5vbmUpCisgICAgICAgICAgICAgICAg c2VsZi5kZWJ1Z2dlcl9kYXRhID0gdHJhbnNfZGF0YS5nZXQoJ2RlYnVnZ2VyX2RhdGEnLCBOb25l KQorCisgICAgZGVmIHVwZGF0ZV9zZXNzaW9uKHNlbGYpOgorICAgICAgICB3aXRoIGRlYnVnZ2Vy X3Nlc3Npb25zX2xvY2s6CisgICAgICAgICAgICBpZiAnX19kZWJ1Z2dlcl9zZXNzaW9ucycgbm90 IGluIHNlc3Npb246CisgICAgICAgICAgICAgICAgc2Vzc2lvblsnX19kZWJ1Z2dlcl9zZXNzaW9u cyddID0gZGljdCgpCisKKyAgICAgICAgICAgIHNlc3Npb25bJ19fZGVidWdnZXJfc2Vzc2lvbnMn XVtzdHIoc2VsZi50cmFuc19pZCldID0gZGljdCgKKyAgICAgICAgICAgICAgICBmdW5jdGlvbl9k YXRhPXNlbGYuZnVuY3Rpb25fZGF0YSwKKyAgICAgICAgICAgICAgICBkZWJ1Z2dlcl9kYXRhPXNl bGYuZGVidWdnZXJfZGF0YQorICAgICAgICAgICAgKQorCisgICAgZGVmIGNsZWFyKHNlbGYpOgor ICAgICAgICB3aXRoIGRlYnVnZ2VyX3Nlc3Npb25zX2xvY2s6CisgICAgICAgICAgICBpZiAnX19k ZWJ1Z2dlcl9zZXNzaW9ucycgaW4gc2Vzc2lvbjoKKyAgICAgICAgICAgICAgICBpZiBzdHIoc2Vs Zi50cmFuc19pZCkgaW4gc2Vzc2lvblsnX19kZWJ1Z2dlcl9zZXNzaW9ucyddOgorICAgICAgICAg ICAgICAgICAgICBzZXNzaW9uWydfX2RlYnVnZ2VyX3Nlc3Npb25zJ10ucG9wKHN0cihzZWxmLnRy YW5zX2lkKSkK --000000000000e18ac2058ab642a0--