<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>236240</bug_id>
          
          <creation_ts>2022-02-07 07:55:07 -0800</creation_ts>
          <short_desc>[Flatpak SDK] Add a wrapper for clangd</short_desc>
          <delta_ts>2022-02-20 04:34:46 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=236940</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Martin Robinson">mrobinson</reporter>
          <assigned_to name="Martin Robinson">mrobinson</assigned_to>
          <cc>angelos</cc>
    
    <cc>pnormand</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1838151</commentid>
    <comment_count>0</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2022-02-07 07:55:07 -0800</bug_when>
    <thetext>A wrapper for clangd would make it easier to launch the clangd necessary for processing WebKit source code. The main issue is that the build relies on a sandboxed build directory and headers from the Flatpak SDK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838160</commentid>
    <comment_count>1</comment_count>
      <attachid>451101</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2022-02-07 08:08:36 -0800</bug_when>
    <thetext>Created attachment 451101
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838162</commentid>
    <comment_count>2</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2022-02-07 08:11:19 -0800</bug_when>
    <thetext>The way to use this script is to set your IDE&apos;s clang binary path to &lt;WebKitSourceDirectory&gt;/Tools/flatpak/webkit-flatpak and then pass the --enable-config and --&lt;platform&gt; arguments. For instance, I have this working by installing coc and coc-clangd for vim and then the contents of my local coc configuration (&quot;:CocLocalConfig&quot;) are:

{
    &quot;clangd.arguments&quot;: [
        &quot;--enable-config&quot;,
        &quot;--gtk&quot;
    ],
    &quot;clangd.path&quot;: &quot;/home/martin/WebKit/Tools/flatpak/webkit-clangd&quot;
}

The first indexing for this takes a while, but eventually you should have real-time compilation errors and completion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838611</commentid>
    <comment_count>3</comment_count>
      <attachid>451101</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2022-02-08 04:16:00 -0800</bug_when>
    <thetext>Comment on attachment 451101
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=451101&amp;action=review

&gt; Tools/ChangeLog:32
&gt; +2022-02-07  Martin Robinson  &lt;mrobinson@webkit.org&gt;
&gt; +
&gt; +        [Flatpak SDK] Add a wrapper for clangd
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=236240
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        * flatpak/webkit-clangd: Added.

Double changelog!

&gt; Tools/flatpak/flatpakutils.py:37
&gt; +import toml

EWS chokes on this :(

&gt; Tools/flatpak/webkit-clangd:20
&gt; +import flatpakutils

What will call this script? Will it have the Tools/flatpak directory listed in PYTHONPATH?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838625</commentid>
    <comment_count>4</comment_count>
      <attachid>451238</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2022-02-08 04:56:48 -0800</bug_when>
    <thetext>Created attachment 451238
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838626</commentid>
    <comment_count>5</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2022-02-08 04:58:57 -0800</bug_when>
    <thetext>(In reply to Philippe Normand from comment #3)
&gt; Comment on attachment 451101 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=451101&amp;action=review
&gt; 
&gt; &gt; Tools/ChangeLog:32
&gt; &gt; +2022-02-07  Martin Robinson  &lt;mrobinson@webkit.org&gt;
&gt; &gt; +
&gt; &gt; +        [Flatpak SDK] Add a wrapper for clangd
&gt; &gt; +        https://bugs.webkit.org/show_bug.cgi?id=236240
&gt; &gt; +
&gt; &gt; +        Reviewed by NOBODY (OOPS!).
&gt; &gt; +
&gt; &gt; +        * flatpak/webkit-clangd: Added.
&gt; 
&gt; Double changelog!

Whoops. Fixed.

&gt; 
&gt; &gt; Tools/flatpak/flatpakutils.py:37
&gt; &gt; +import toml
&gt; 
&gt; EWS chokes on this :(

Ah, odd. I&apos;ve fixed this. It&apos;s because these imports are from the webkitpy directory.

&gt; &gt; Tools/flatpak/webkit-clangd:20
&gt; &gt; +import flatpakutils
&gt; 
&gt; What will call this script? Will it have the Tools/flatpak directory listed
&gt; in PYTHONPATH?

The way this generally works is that you set up your editor or IDE to start clangd. Both Visual Studio Code and Vim (via coc-clangd) have settings for this. The connection to clangd runs in the background via your editor and it provides real-time information like completions and compilation errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839153</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-09 08:00:12 -0800</bug_when>
    <thetext>Committed r289470 (247013@main): &lt;https://commits.webkit.org/247013@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 451238.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839155</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-09 08:01:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/88689997&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1844048</commentid>
    <comment_count>8</comment_count>
      <attachid>451238</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2022-02-20 04:06:54 -0800</bug_when>
    <thetext>Comment on attachment 451238
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=451238&amp;action=review

&gt; Tools/flatpak/flatpakutils.py:595
&gt; -            os.environ[&quot;FLATPAK_USER_DIR&quot;] = FLATPAK_USER_DIR_PATH + &quot;.Local&quot;
&gt; +            os.environ[&quot;FLATPAK_USER_DIR&quot;] = os.path.join(FLATPAK_USER_DIR_PATH, &quot;.Local&quot;)

This is not correct actually, an invalid path is computed:

&gt;&gt;&gt; os.path.join(&quot;/foo/bar&quot;, &quot;.bas&quot;)
&apos;/foo/bar/.bas&apos;

I&apos;ll submit a follow-up patch.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451101</attachid>
            <date>2022-02-07 08:08:36 -0800</date>
            <delta_ts>2022-02-08 04:56:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236240-20220207170835.patch</filename>
            <type>text/plain</type>
            <size>17005</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MjE2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggN2Y5MzhmNGQ2YTRlZWUzNmNhNjBlM2M5MmQ5ZDhmZmYw
ODBiNjVkZS4uMTZlNGFmMDkyMzQ2OTRkNDE5YTczNTUyZmFiMmQ0YmZjN2RkMjQ2NSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2
IEBACisyMDIyLTAyLTA3ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4K
KworICAgICAgICBbRmxhdHBhayBTREtdIEFkZCBhIHdyYXBwZXIgZm9yIGNsYW5nZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MjQwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmbGF0cGFrL2ZsYXRw
YWt1dGlscy5weTogUmVmYWN0b3IgdGhpcyBmaWxlIHNvIHRoYXQgdGhlIGJ1aWxkIGNvbnN0YW50
cyBjYW4gYmUKKyAgICAgICAgcmV1c2VkIGluIHRoZSBuZXcgc2NyaXB0LgorICAgICAgICAoY29u
dmVydF93ZWJraXRfc291cmNlX3BhdGhfdG9fc2FuZGJveF9wYXRoKToKKyAgICAgICAgKGNvbnZl
cnRfc2FuZGJveF9wYXRoX3RvX3dlYmtpdF9zb3VyY2VfcGF0aCk6CisgICAgICAgIChnZXRfYnVp
bGRfZGlyKToKKyAgICAgICAgKFdlYmtpdEZsYXRwYWsuX19pbml0X18pOgorICAgICAgICAoV2Vi
a2l0RmxhdHBhay5jbGVhbl9hcmdzKToKKyAgICAgICAgKFdlYmtpdEZsYXRwYWsuc2V0dXBfZ3N0
YnVpbGQpOgorICAgICAgICAoV2Via2l0RmxhdHBhay5pc19idWlsZF9qc2MpOgorICAgICAgICAo
V2Via2l0RmxhdHBhay5ydW5faW5fc2FuZGJveCk6CisgICAgICAgIChXZWJraXRGbGF0cGFrLm1h
aW4pOgorICAgICAgICAoV2Via2l0RmxhdHBhay5jaGVja190b29sY2hhaW5zX2dlbmVyYXRlZCk6
CisgICAgICAgIChXZWJraXRGbGF0cGFrLnBhY2tfdG9vbGNoYWluKToKKyAgICAgICAgKFdlYmtp
dEZsYXRwYWsuaG9zdF9wYXRoX3RvX3NhbmRib3hfcGF0aCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJraXRGbGF0cGFrLnNhbmRib3hfcGF0aF90b19ob3N0X3BhdGgpOiBEZWxldGVkLgorICAgICAg
ICAqIGZsYXRwYWsvd2Via2l0LWNsYW5nZDogQWRkZWQuCisKKzIwMjItMDItMDcgIE1hcnRpbiBS
b2JpbnNvbiAgPG1yb2JpbnNvbkB3ZWJraXQub3JnPgorCisgICAgICAgIFtGbGF0cGFrIFNES10g
QWRkIGEgd3JhcHBlciBmb3IgY2xhbmdkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzYyNDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIGZsYXRwYWsvd2Via2l0LWNsYW5nZDogQWRkZWQuCisKIDIwMjIt
MDItMDYgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAg
ICAgUkVHUkVTU0lPTihyMjg4ODc4KSB3ZWJraXRweS5sYXlvdXRfdGVzdHMuY29udHJvbGxlcnMu
bGF5b3V0X3Rlc3RfZmluZGVyX2xlZ2FjeV91bml0dGVzdC5MYXlvdXRUZXN0RmluZGVyVGVzdHMg
dGVzdHMgYXJlIGZhaWxpbmcgd2l0aCBXaW5kb3dzIFB5dGhvbgpkaWZmIC0tZ2l0IGEvVG9vbHMv
ZmxhdHBhay9mbGF0cGFrdXRpbHMucHkgYi9Ub29scy9mbGF0cGFrL2ZsYXRwYWt1dGlscy5weQpp
bmRleCA2YmM2MDU5NmEwYjFkYWIwNDNlMjg4NDg1NDQ4NjQ1ZDM3YmQ1MDJmLi41MTA1ZjJlMTgz
NTU3MzllMWNlMGI0MTNmNGFjYzU3YTc1ZjQxMDNlIDEwMDY0NAotLS0gYS9Ub29scy9mbGF0cGFr
L2ZsYXRwYWt1dGlscy5weQorKysgYi9Ub29scy9mbGF0cGFrL2ZsYXRwYWt1dGlscy5weQpAQCAt
MzQsMTEgKzM0LDE0IEBAIGltcG9ydCBzeXMKIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHJlCiBp
bXBvcnQgcGxhdGZvcm0KK2ltcG9ydCB0b21sCitpbXBvcnQganNvbgogCitTQ1JJUFRfRElSID0g
b3MucGF0aC5hYnNwYXRoKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykpCitXRUJLSVRfU09VUkNF
X0RJUiA9IG9zLnBhdGgubm9ybXBhdGgob3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihTQ1JJ
UFRfRElSLCAiLi4iLCAiLi4iKSkpCitzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKFdF
QktJVF9TT1VSQ0VfRElSLCAiVG9vbHMiLCAiU2NyaXB0cyIpKQogZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtLmxvZ3V0aWxzIGltcG9ydCBjb25maWd1cmVfbG9nZ2luZwogZnJvbSB3ZWJraXRj
b3JlcHkgaW1wb3J0IHN0cmluZ191dGlscwotaW1wb3J0IHRvbWwKLWltcG9ydCBqc29uCiAKIHRy
eToKICAgICBmcm9tIHVybGxpYi5wYXJzZSBpbXBvcnQgdXJscGFyc2UgICMgcHlsaW50OiBkaXNh
YmxlPUUwNjExCkBAIC01OSwxMiArNjIsMjEgQEAgZXhjZXB0IEltcG9ydEVycm9yOgogCiBGTEFU
UEFLX1JFUVVJUkVEX1ZFUlNJT04gPSAiMS40LjQiCiAKLXNjcmlwdGRpciA9IG9zLnBhdGguYWJz
cGF0aChvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKQogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2Vy
KF9fbmFtZV9fKQogCi1GTEFUUEFLX1VTRVJfRElSX1BBVEggPSBvcy5wYXRoLnJlYWxwYXRoKG9z
LnBhdGguam9pbihzY3JpcHRkaXIsICIuLi8uLi9XZWJLaXRCdWlsZCIsICJVc2VyRmxhdHBhayIp
KQorQlVJTERfUk9PVF9ESVJfTkFNRSA9ICdXZWJLaXRCdWlsZCcKKworIyBUaGlzIHBhdGggZG9l
c24ndCB0YWtlICRXRUJLSVRfT1VUUFVURElSIGluIGFjY291bnQgYmVjYXVzZSB0aGUgc3RhbmRh
bG9uZSB0b29sY2hhaW5zCisjIHBhdGhzIGRlcGVuZCBvbiBpdCBhbmQgdGhvc2UgYXJlIGFsc28g
aGFyZC1jb2RlZCBpbiB0aGUgZ2VuZXJhdGVkIHNjY2FjaGUgY29uZmlnLgorREVGQVVMVF9CVUlM
RF9ST09UID0gb3MucGF0aC5qb2luKFdFQktJVF9TT1VSQ0VfRElSLCBCVUlMRF9ST09UX0RJUl9O
QU1FKQorQlVJTERfUk9PVCA9IG9zLnBhdGguam9pbihvcy5lbnZpcm9uLmdldCgiV0VCS0lUX09V
VFBVVERJUiIsIFdFQktJVF9TT1VSQ0VfRElSKSwgQlVJTERfUk9PVF9ESVJfTkFNRSkKK0ZMQVRQ
QUtfVVNFUl9ESVJfUEFUSCA9IG9zLnBhdGgucmVhbHBhdGgob3MucGF0aC5qb2luKERFRkFVTFRf
QlVJTERfUk9PVCwgIlVzZXJGbGF0cGFrIikpCisKIERFRkFVTFRfU0NDQUNIRV9TQ0hFRFVMRVI9
J2h0dHBzOi8vc2NjYWNoZS5pZ2FsaWEuY29tJwogCisjIFdoZXJlIHRoZSBzb3VyY2UgZm9sZGVy
IGlzIG1vdW50ZWQgaW5zaWRlIHRoZSBzYW5kYm94LgorU0FOREJPWF9TT1VSQ0VfUk9PVCA9ICIv
YXBwL3dlYmtpdCIKKwogIyBPdXIgU0RLIGJyYW5jaCBtYXRjaGVzIHdpdGggdGhlIEZETyBTREsg
YnJhbmNoLiBXaGVuIHVwZGF0aW5nIHRoZSBGRE8gU0RLIHJlbGVhc2UgYnJhbmNoCiAjIGluIG91
ciBTREsgYnVpbGQgZGVmaW5pdGlvbnMgcGxlYXNlIGRvbid0IGZvcmdldCB0byB1cGRhdGUgdGhl
IHZlcnNpb24gaGVyZSBhcyB3ZWxsLgogU0RLX0JSQU5DSCA9ICIyMS4wOCIKQEAgLTE5OCw2ICsy
MTAsMjAgQEAgZGVmIGNoZWNrX2ZsYXRwYWsodmVyYm9zZT1UcnVlKToKICAgICByZXR1cm4gY3Vy
cmVudF92ZXJzaW9uCiAKIAorZGVmIGNvbnZlcnRfd2Via2l0X3NvdXJjZV9wYXRoX3RvX3NhbmRi
b3hfcGF0aChzb3VyY2VfcGF0aCk6CisgICAgJycnQ29udmVydCBhIHBhdGggaW4gdGhlIFdlYktp
dCBzb3VyY2UgZGlyZWN0b3J5IHRvIHRoZSBzYW1lIHBhdGggaW4gdGhlCisgICAgICAgc2FuZGJv
eGVkIHNvdXJjZSBkaXJldG9yeS4gJycnCisgICAgcmV0dXJuIHNvdXJjZV9wYXRoLnJlcGxhY2Uo
V0VCS0lUX1NPVVJDRV9ESVIsIFNBTkRCT1hfU09VUkNFX1JPT1QpCisKKworZGVmIGNvbnZlcnRf
c2FuZGJveF9wYXRoX3RvX3dlYmtpdF9zb3VyY2VfcGF0aChzYW5kYm94X3BhdGgpOgorICAgICMg
Rm9yIG5vdyB0aGlzIHN1cHBvcnRzIG9ubHkgZmlsZXMgaW4gdGhlIC9hcHAvd2Via2l0IHBhdGgK
KyAgICByZXR1cm4gc2FuZGJveF9wYXRoLnJlcGxhY2UoU0FOREJPWF9TT1VSQ0VfUk9PVCwgV0VC
S0lUX1NPVVJDRV9ESVIpCisKKworZGVmIGdldF9idWlsZF9kaXIocGxhdGZvcm0sIGJ1aWxkX3R5
cGUpOgorICAgIHJldHVybiBvcy5wYXRoLmpvaW4oQlVJTERfUk9PVCwgcGxhdGZvcm0sIGJ1aWxk
X3R5cGUpCisKIGNsYXNzIEZsYXRwYWtPYmplY3Q6CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwg
dXNlcik6CkBAIC01MjMsMTEgKzU0OSw2IEBAIGNsYXNzIFdlYmtpdEZsYXRwYWs6CiAKICAgICAg
ICAgc2VsZi5yZWxlYXNlID0gRmFsc2UKICAgICAgICAgc2VsZi5kZWJ1ZyA9IEZhbHNlCi0gICAg
ICAgIHNlbGYuc291cmNlX3Jvb3QgPSBvcy5wYXRoLm5vcm1wYXRoKG9zLnBhdGguYWJzcGF0aChv
cy5wYXRoLmpvaW4oc2NyaXB0ZGlyLCAnLi4vLi4vJykpKQotICAgICAgICAjIFdoZXJlIHRoZSBz
b3VyY2UgZm9sZGVyIGlzIG1vdW50ZWQgaW5zaWRlIHRoZSBzYW5kYm94LgotICAgICAgICBzZWxm
LnNhbmRib3hfc291cmNlX3Jvb3QgPSAiL2FwcC93ZWJraXQiCi0KLSAgICAgICAgc2VsZi5iYXNl
X2J1aWxkX2RpciA9ICdXZWJLaXRCdWlsZCcKIAogICAgICAgICBzZWxmLmJ1aWxkX2dzdCA9IEZh
bHNlCiAKQEAgLTU3MSw3ICs1OTIsNyBAQCBjbGFzcyBXZWJraXRGbGF0cGFrOgogCiAgICAgZGVm
IGNsZWFuX2FyZ3Moc2VsZik6CiAgICAgICAgIGlmIHNlbGYudXNlcl9yZXBvOgotICAgICAgICAg
ICAgb3MuZW52aXJvblsiRkxBVFBBS19VU0VSX0RJUiJdID0gRkxBVFBBS19VU0VSX0RJUl9QQVRI
ICsgIi5Mb2NhbCIKKyAgICAgICAgICAgIG9zLmVudmlyb25bIkZMQVRQQUtfVVNFUl9ESVIiXSA9
IG9zLnBhdGguam9pbihGTEFUUEFLX1VTRVJfRElSX1BBVEgsICIuTG9jYWwiKQogICAgICAgICBl
bHNlOgogICAgICAgICAgICAgb3MuZW52aXJvblsiRkxBVFBBS19VU0VSX0RJUiJdID0gb3MuZW52
aXJvbi5nZXQoIldFQktJVF9GTEFUUEFLX1VTRVJfRElSIiwgRkxBVFBBS19VU0VSX0RJUl9QQVRI
KQogICAgICAgICBzZWxmLmZsYXRwYWtfYnVpbGRfcGF0aCA9IG9zLmVudmlyb25bIkZMQVRQQUtf
VVNFUl9ESVIiXQpAQCAtNTg2LDE2ICs2MDcsMTAgQEAgY2xhc3MgV2Via2l0RmxhdHBhazoKICAg
ICAgICAgaWYgc2VsZi5nZGIgaXMgTm9uZSBhbmQgJy0tZ2RiJyBpbiBzeXMuYXJndjoKICAgICAg
ICAgICAgIHNlbGYuZ2RiID0gVHJ1ZQogCi0gICAgICAgICMgVGhpcyBwYXRoIGRvZXNuJ3QgdGFr
ZSAkV0VCS0lUX09VVFBVVERJUiBpbiBhY2NvdW50IGJlY2F1c2UgdGhlIHN0YW5kYWxvbmUgdG9v
bGNoYWlucwotICAgICAgICAjIHBhdGhzIGRlcGVuZCBvbiBpdCBhbmQgdGhvc2UgYXJlIGFsc28g
aGFyZC1jb2RlZCBpbiB0aGUgZ2VuZXJhdGVkIHNjY2FjaGUgY29uZmlnLgotICAgICAgICBzZWxm
LmRlZmF1bHRfYnVpbGRfcm9vdCA9IG9zLnBhdGguam9pbihzZWxmLnNvdXJjZV9yb290LCBzZWxm
LmJhc2VfYnVpbGRfZGlyKQotCiAgICAgICAgIHNlbGYuY29uZmlnX2ZpbGUgPSBvcy5wYXRoLmpv
aW4oc2VsZi5mbGF0cGFrX2J1aWxkX3BhdGgsICd3ZWJraXRfZmxhdHBha19jb25maWcuanNvbicp
CiAgICAgICAgIHNlbGYuc2NjYWNoZV9jb25maWdfZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLmZs
YXRwYWtfYnVpbGRfcGF0aCwgJ3NjY2FjaGUudG9tbCcpCiAKLSAgICAgICAgYnVpbGRfcm9vdCA9
IG9zLmVudmlyb24uZ2V0KCJXRUJLSVRfT1VUUFVURElSIiwgc2VsZi5zb3VyY2Vfcm9vdCkKLSAg
ICAgICAgc2VsZi5idWlsZF9yb290ID0gb3MucGF0aC5qb2luKGJ1aWxkX3Jvb3QsIHNlbGYuYmFz
ZV9idWlsZF9kaXIpCi0gICAgICAgIHNlbGYuYnVpbGRfcGF0aCA9IG9zLnBhdGguam9pbihzZWxm
LmJ1aWxkX3Jvb3QsIHNlbGYucGxhdGZvcm0sIHNlbGYuYnVpbGRfdHlwZSkKKyAgICAgICAgc2Vs
Zi5idWlsZF9wYXRoID0gZ2V0X2J1aWxkX2RpcihzZWxmLnBsYXRmb3JtLCBzZWxmLmJ1aWxkX3R5
cGUpCiAgICAgICAgIF9sb2cuZGVidWcoIkJ1aWxkaW5nICVzIHBvcnQgaW4gJXMiICUgKHNlbGYu
cGxhdGZvcm0sIHNlbGYuYnVpbGRfcGF0aCkpCiAKICAgICAgICAgc2VsZi50b29sY2hhaW5zX2Rp
cmVjdG9yeSA9IG9zLnBhdGguam9pbihzZWxmLmZsYXRwYWtfYnVpbGRfcGF0aCwgIlRvb2xjaGFp
bnMiKQpAQCAtNjU3LDggKzY3Miw4IEBAIGNsYXNzIFdlYmtpdEZsYXRwYWs6CiAgICAgICAgIGlm
IG5vdCBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oZ3N0X2RpciwgJ2dzdC1lbnYucHknKSk6
CiAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0dTVF9CVUlMRF9QQVRIIHNldCB0byAl
cyBidXQgaXQgZG9lc25cJ3Qgc2VlbSB0byBiZSBhIHZhbGlkIGBnc3QtYnVpbGRgIGNoZWNrb3V0
LicgJSBnc3RfZGlyKQogCi0gICAgICAgIGdzdF9idWlsZGRpciA9IG9zLnBhdGguam9pbihzZWxm
LnNvdXJjZV9yb290LCBzZWxmLmJhc2VfYnVpbGRfZGlyLCAnZ3N0LWJ1aWxkJykKLSAgICAgICAg
aWYgbm90IG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLmRlZmF1bHRfYnVpbGRfcm9v
dCwgJ2dzdC1idWlsZCcsICdidWlsZC5uaW5qYScpKToKKyAgICAgICAgZ3N0X2J1aWxkZGlyID0g
b3MucGF0aC5qb2luKERFRkFVTFRfQlVJTERfUk9PVCwgJ2dzdC1idWlsZCcpCisgICAgICAgIGlm
IG5vdCBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oREVGQVVMVF9CVUlMRF9ST09ULCAnZ3N0
LWJ1aWxkJywgJ2J1aWxkLm5pbmphJykpOgogICAgICAgICAgICAgaWYgbm90IGJ1aWxkaW5nOgog
ICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignVHJ5aW5nIHRvIGVudGVyIGdzdC1i
dWlsZCBlbnYgZnJvbSAlcyBidXQgaXQgaXMgbm90IGJ1aWx0LCBtYWtlIHN1cmUgdG8gcmVidWls
ZCB3ZWJraXQuJyAlIGdzdF9kaXIpCiAKQEAgLTY4NCw3ICs2OTksNyBAQCBjbGFzcyBXZWJraXRG
bGF0cGFrOgogICAgICAgICAgICAgaWYgbm90IHZhcl9uYW1lLnN0YXJ0c3dpdGgoIkdTVF8iKSBh
bmQgdmFyX25hbWUgbm90IGluIGFsbG93bGlzdDoKICAgICAgICAgICAgICAgICBjb250aW51ZQog
ICAgICAgICAgICAgaWYgdmFyX25hbWUgbm90IGluIG5vcGF0aGxpc3Q6Ci0gICAgICAgICAgICAg
ICAgbmV3X2NvbnRlbnRzID0gJzonLmpvaW4oW3NlbGYuaG9zdF9wYXRoX3RvX3NhbmRib3hfcGF0
aChwKSBmb3IgcCBpbiBjb250ZW50cy5zcGxpdCgiOiIpXSkKKyAgICAgICAgICAgICAgICBuZXdf
Y29udGVudHMgPSAnOicuam9pbihbY29udmVydF93ZWJraXRfc291cmNlX3BhdGhfdG9fc2FuZGJv
eF9wYXRoKHApIGZvciBwIGluIGNvbnRlbnRzLnNwbGl0KCI6IildKQogICAgICAgICAgICAgZWxz
ZToKICAgICAgICAgICAgICAgICBuZXdfY29udGVudHMgPSBjb250ZW50cy5yZXBsYWNlKCInIiwg
IiIpCiAgICAgICAgICAgICBlbnZbdmFyX25hbWVdID0gbmV3X2NvbnRlbnRzCkBAIC03MTYsMTQg
KzczMSw2IEBAIGNsYXNzIFdlYmtpdEZsYXRwYWs6CiAgICAgZGVmIGlzX2J1aWxkX2pzYyhzZWxm
LCBjb21tYW5kKToKICAgICAgICAgcmV0dXJuIGNvbW1hbmQgYW5kICJidWlsZC1qc2MiIGluIG9z
LnBhdGguYmFzZW5hbWUoY29tbWFuZCkKIAotICAgIGRlZiBob3N0X3BhdGhfdG9fc2FuZGJveF9w
YXRoKHNlbGYsIGhvc3RfcGF0aCk6Ci0gICAgICAgICMgRm9yIG5vdyB0aGlzIHN1cHBvcnRzIG9u
bHkgZmlsZXMgaW4gdGhlIC9hcHAvd2Via2l0IHBhdGgKLSAgICAgICAgcmV0dXJuIGhvc3RfcGF0
aC5yZXBsYWNlKHNlbGYuc291cmNlX3Jvb3QsIHNlbGYuc2FuZGJveF9zb3VyY2Vfcm9vdCkKLQot
ICAgIGRlZiBzYW5kYm94X3BhdGhfdG9faG9zdF9wYXRoKHNlbGYsIHNhbmRib3hfcGF0aCk6Ci0g
ICAgICAgICMgRm9yIG5vdyB0aGlzIHN1cHBvcnRzIG9ubHkgZmlsZXMgaW4gdGhlIC9hcHAvd2Vi
a2l0IHBhdGgKLSAgICAgICAgcmV0dXJuIHNhbmRib3hfcGF0aC5yZXBsYWNlKHNlbGYuc2FuZGJv
eF9zb3VyY2Vfcm9vdCwgc2VsZi5zb3VyY2Vfcm9vdCkKLQogICAgIEBzdGF0aWNtZXRob2QKICAg
ICBkZWYgZ2V0X3VzZXJfcnVudGltZV9kaXIoKToKICAgICAgICAgcmV0dXJuIG9zLmVudmlyb24u
Z2V0KCdYREdfUlVOVElNRV9ESVInLCBvcy5wYXRoLmpvaW4oJy9ydW4vdXNlcicsIHN0cihvcy5n
ZXR1aWQoKSkpKQpAQCAtNzMxLDcgKzczOCw2IEBAIGNsYXNzIFdlYmtpdEZsYXRwYWs6CiAgICAg
ZGVmIHJ1bl9pbl9zYW5kYm94KHNlbGYsICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgIGlmIG5v
dCBzZWxmLnNldHVwX2J1aWxkZGlyKCk6CiAgICAgICAgICAgICByZXR1cm4gMQotICAgICAgICBj
d2QgPSBrd2FyZ3MuZ2V0KCJjd2QiLCBOb25lKQogICAgICAgICBleHRyYV9lbnZfdmFycyA9IGt3
YXJncy5nZXQoImVudiIsIHt9KQogICAgICAgICBzdGRvdXQgPSBrd2FyZ3MuZ2V0KCJzdGRvdXQi
LCBzeXMuc3Rkb3V0KQogICAgICAgICBleHRyYV9mbGF0cGFrX2FyZ3MgPSBrd2FyZ3MuZ2V0KCJl
eHRyYV9mbGF0cGFrX2FyZ3MiLCBbXSkKQEAgLTc0OCw3ICs3NTQsNyBAQCBjbGFzcyBXZWJraXRG
bGF0cGFrOgogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShhcmdzLCBsaXN0KToKICAgICAgICAg
ICAgIGFyZ3MgPSBsaXN0KGFyZ3MpCiAKLSAgICAgICAgc2FuZGJveF9idWlsZF9wYXRoID0gb3Mu
cGF0aC5qb2luKHNlbGYuc2FuZGJveF9zb3VyY2Vfcm9vdCwgc2VsZi5iYXNlX2J1aWxkX2Rpciwg
c2VsZi5idWlsZF90eXBlKQorICAgICAgICBzYW5kYm94X2J1aWxkX3BhdGggPSBvcy5wYXRoLmpv
aW4oU0FOREJPWF9TT1VSQ0VfUk9PVCwgQlVJTERfUk9PVF9ESVJfTkFNRSwgc2VsZi5idWlsZF90
eXBlKQogICAgICAgICBzYW5kYm94X2Vudmlyb25tZW50ID0gewogICAgICAgICAgICAgIlRFU1Rf
UlVOTkVSX0lOSkVDVEVEX0JVTkRMRV9GSUxFTkFNRSI6IG9zLnBhdGguam9pbihzYW5kYm94X2J1
aWxkX3BhdGgsICJsaWIvbGliVGVzdFJ1bm5lckluamVjdGVkQnVuZGxlLnNvIiksCiAgICAgICAg
ICAgICAiUEFUSCI6ICIvdXNyL2xpYi9zZGsvbGx2bTEyL2JpbjovdXNyL2JpbjovdXNyL2xpYi9z
ZGsvcnVzdC9iaW4vIiwKQEAgLTc2Myw3ICs3NjksNyBAQCBjbGFzcyBXZWJraXRGbGF0cGFrOgog
ICAgICAgICAgICAgZWxpZiBvcy5wYXRoLmV4aXN0cyhhcmdzWzBdKToKICAgICAgICAgICAgICAg
ICBjb21tYW5kID0gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmFic3BhdGgoYXJnc1swXSkpCiAg
ICAgICAgICAgICAgICAgIyBUYWtlIGludG8gYWNjb3VudCB0aGUgZmFjdCB0aGF0IHRoZSB3ZWJr
aXQgc291cmNlIGRpciBpcyByZW1vdW50ZWQgaW5zaWRlIHRoZSBzYW5kYm94LgotICAgICAgICAg
ICAgICAgIGFyZ3NbMF0gPSBjb21tYW5kLnJlcGxhY2Uoc2VsZi5zb3VyY2Vfcm9vdCwgc2VsZi5z
YW5kYm94X3NvdXJjZV9yb290KQorICAgICAgICAgICAgICAgIGFyZ3NbMF0gPSBjb252ZXJ0X3dl
YmtpdF9zb3VyY2VfcGF0aF90b19zYW5kYm94X3BhdGgoY29tbWFuZCkKIAogICAgICAgICAgICAg
aWYgYXJnc1swXSA9PSAiYmFzaCI6CiAgICAgICAgICAgICAgICAgYXJncy5leHRlbmQoWyctLW5v
cHJvZmlsZScsICctLW5vcmMnLCAnLWknXSkKQEAgLTg4OCw3ICs4OTQsNyBAQCBjbGFzcyBXZWJr
aXRGbGF0cGFrOgogICAgICAgICAgICAgc2NjYWNoZV9lbnZpcm9ubWVudCA9IHt9CiAgICAgICAg
ICAgICBpZiBvcy5wYXRoLmlzZmlsZShzZWxmLnNjY2FjaGVfY29uZmlnX2ZpbGUpIGFuZCBub3Qg
c2VsZi5yZWdlbmVyYXRlX3Rvb2xjaGFpbnMgYW5kIFwKICAgICAgICAgICAgICAgICJTQ0NBQ0hF
X0NPTkYiIG5vdCBpbiBvcy5lbnZpcm9uLmtleXMoKToKLSAgICAgICAgICAgICAgICBzY2NhY2hl
X2Vudmlyb25tZW50WyJTQ0NBQ0hFX0NPTkYiXSA9IHNlbGYuaG9zdF9wYXRoX3RvX3NhbmRib3hf
cGF0aChzZWxmLnNjY2FjaGVfY29uZmlnX2ZpbGUpCisgICAgICAgICAgICAgICAgc2NjYWNoZV9l
bnZpcm9ubWVudFsiU0NDQUNIRV9DT05GIl0gPSBjb252ZXJ0X3dlYmtpdF9zb3VyY2VfcGF0aF90
b19zYW5kYm94X3BhdGgoc2VsZi5zY2NhY2hlX2NvbmZpZ19maWxlKQogCiAgICAgICAgICAgICBv
dmVycmlkZV9zY2NhY2hlX3NlcnZlcl9wb3J0ID0gb3MuZW52aXJvbi5nZXQoIldFQktJVF9TQ0NB
Q0hFX1NFUlZFUl9QT1JUIikKICAgICAgICAgICAgIGlmIG92ZXJyaWRlX3NjY2FjaGVfc2VydmVy
X3BvcnQ6CkBAIC05MjUsNyArOTMxLDcgQEAgY2xhc3MgV2Via2l0RmxhdHBhazoKICAgICAgICAg
ICAgICAgICAgICAgQ29uc29sZS5lcnJvcl9tZXNzYWdlKCIlcyB0b29sY2hhaW4gbm90IGZvdW5k
LiBJQ0VDQ19WRVJTSU9OX09WRVJSSURFIG1pcy1jb25maWd1cmVkPyIsIHRvb2xjaGFpbl9vdmVy
cmlkZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDEKIAotICAgICAgICAgICAgICAgIHRv
b2xjaGFpbl9wYXRoID0gc2VsZi5ob3N0X3BhdGhfdG9fc2FuZGJveF9wYXRoKHRvb2xjaGFpbl9v
dmVycmlkZSkKKyAgICAgICAgICAgICAgICB0b29sY2hhaW5fcGF0aCA9IGNvbnZlcnRfd2Via2l0
X3NvdXJjZV9wYXRoX3RvX3NhbmRib3hfcGF0aCh0b29sY2hhaW5fb3ZlcnJpZGUpCiAKICAgICAg
ICAgICAgIGlmIG5vdCB0b29sY2hhaW5fcGF0aDoKICAgICAgICAgICAgICAgICBDb25zb2xlLmVy
cm9yX21lc3NhZ2UoIlRvb2xjaGFpbnMgY29uZmlndXJhdGlvbiBub3QgZm91bmQuIFBsZWFzZSBy
dW4gd2Via2l0LWZsYXRwYWsgLXIgb3Igc2V0IElDRUNDX1ZFUlNJT05fT1ZFUlJJREUgdG8gYSB2
YWxpZCBob3N0IHBhdGgiKQpAQCAtOTM3LDcgKzk0Myw3IEBAIGNsYXNzIFdlYmtpdEZsYXRwYWs6
CiAgICAgICAgICAgICAgICAgICAgIENvbnNvbGUuZXJyb3JfbWVzc2FnZSgiJXMgaXMgbm90IGEg
dmFsaWQgSWNlQ0MgdG9vbGNoYWluLiBJQ0VDQ19WRVJTSU9OX0FQUEVORCBtaXMtY29uZmlndXJl
ZD8iLCBleHRyYV90b29sY2hhaW4pCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxCiAgICAg
ICAgICAgICAgICAgdG9vbGNoYWluX3BhdGggKz0gIiwiCi0gICAgICAgICAgICAgICAgdG9vbGNo
YWluX3BhdGggKz0gc2VsZi5ob3N0X3BhdGhfdG9fc2FuZGJveF9wYXRoKGV4dHJhX3Rvb2xjaGFp
bikKKyAgICAgICAgICAgICAgICB0b29sY2hhaW5fcGF0aCArPSBjb252ZXJ0X3dlYmtpdF9zb3Vy
Y2VfcGF0aF90b19zYW5kYm94X3BhdGgoZXh0cmFfdG9vbGNoYWluKQogCiAgICAgICAgICAgICBz
YW5kYm94X2Vudmlyb25tZW50LnVwZGF0ZSh7CiAgICAgICAgICAgICAgICAgIkNDQUNIRV9QUkVG
SVgiOiAiaWNlY2MiLApAQCAtOTkzLDcgKzk5OSw3IEBAIGNsYXNzIFdlYmtpdEZsYXRwYWs6CiAg
ICAgICAgIGZsYXRwYWtfY29tbWFuZCArPSBleHRyYV9mbGF0cGFrX2FyZ3MgKyBbJy0tY29tbWFu
ZD0lcycgJSBhcmdzWzBdLCAib3JnLndlYmtpdC5TZGsiXSArIGFyZ3NbMTpdCiAKICAgICAgICAg
ZmxhdHBha19lbnYudXBkYXRlKHsKLSAgICAgICAgICAgICJGTEFUUEFLX0JXUkFQIjogb3MucGF0
aC5qb2luKHNjcmlwdGRpciwgIndlYmtpdC1id3JhcCIpLAorICAgICAgICAgICAgIkZMQVRQQUtf
QldSQVAiOiBvcy5wYXRoLmpvaW4oU0NSSVBUX0RJUiwgIndlYmtpdC1id3JhcCIpLAogICAgICAg
ICAgICAgIldFQktJVF9CVUlMRF9ESVJfQklORF9NT1VOVCI6ICIlczolcyIgJSAoc2FuZGJveF9i
dWlsZF9wYXRoLCBzZWxmLmJ1aWxkX3BhdGgpLAogICAgICAgICAgICAgIldFQktJVF9GTEFUUEFL
X1VTRVJfRElSIjogb3MuZW52aXJvblsiRkxBVFBBS19VU0VSX0RJUiJdLAogICAgICAgICB9KQpA
QCAtMTA0Nyw3ICsxMDUzLDcgQEAgY2xhc3MgV2Via2l0RmxhdHBhazoKICAgICAgICAgICAgICAg
ICAgICAgQ29uc29sZS5tZXNzYWdlKCJGb3JjaW5nIG5leHQgV2ViS2l0IGJ1aWxkIHRvIHJlLXJ1
biBDTWFrZSIpCiAgICAgICAgICAgICAgICAgICAgIGZvciBwbGF0Zm9ybSBpbiAoJ0dUSycsICdX
UEUnKToKICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBidWlsZF90eXBlIGluICgnUmVsZWFz
ZScsICdEZWJ1ZycpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlX3BhdGggPSBv
cy5wYXRoLmpvaW4oc2VsZi5idWlsZF9yb290LCBwbGF0Zm9ybSwgYnVpbGRfdHlwZSwgJ0NNYWtl
Q2FjaGUudHh0JykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNoZV9wYXRoID0gb3Mu
cGF0aC5qb2luKGdldF9idWlsZF9kaXIocGxhdGZvcm0sIGJ1aWxkX3R5cGUpLCAnQ01ha2VDYWNo
ZS50eHQnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGNh
Y2hlX3BhdGgpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25zb2xlLm1lc3Nh
Z2UoIlJlbW92aW5nICVzIiwgY2FjaGVfcGF0aCkKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb3MucmVtb3ZlKGNhY2hlX3BhdGgpCkBAIC0xMDcwLDcgKzEwNzYsNyBAQCBjbGFzcyBX
ZWJraXRGbGF0cGFrOgogCiAgICAgICAgICAgICAjIFRvb2xjaGFpbnMgdXNlZCB0byBiZSBzdG9y
ZWQgaW4gV2ViS2l0QnVpbGQvVG9vbGNoYWlucy4gUmVtb3ZlIHRoaXMgcGF0aCBpZiBmb3VuZCwg
dG8gc2F2ZQogICAgICAgICAgICAgIyB1cCBkaXNrIHNwYWNlLgotICAgICAgICAgICAgb2xkX3Rv
b2xjaGFpbnNfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLmRlZmF1bHRfYnVpbGRfcm9vdCwgIlRv
b2xjaGFpbnMiKQorICAgICAgICAgICAgb2xkX3Rvb2xjaGFpbnNfcGF0aCA9IG9zLnBhdGguam9p
bihERUZBVUxUX0JVSUxEX1JPT1QsICJUb29sY2hhaW5zIikKICAgICAgICAgICAgIGlmIG9zLnBh
dGguaXNkaXIob2xkX3Rvb2xjaGFpbnNfcGF0aCk6CiAgICAgICAgICAgICAgICAgQ29uc29sZS5t
ZXNzYWdlKCJQdXJnaW5nIG9ic29sZXRlIHRvb2xjaGFpbnMiKQogICAgICAgICAgICAgICAgIHNo
dXRpbC5ybXRyZWUob2xkX3Rvb2xjaGFpbnNfcGF0aCkKQEAgLTExNDQsNyArMTE1MCw3IEBAIGNs
YXNzIFdlYmtpdEZsYXRwYWs6CiAgICAgICAgICAgICAgICAgY29uZmlnID0ganNvbi5sb2FkKGNv
bmZpZ19mZCkKICAgICAgICAgICAgICAgICBpZiAnaWNlY2NfdmVyc2lvbicgaW4gY29uZmlnOgog
ICAgICAgICAgICAgICAgICAgICBmb3IgY29tcGlsZXIgaW4gY29uZmlnWydpY2VjY192ZXJzaW9u
J106Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShzZWxmLnNhbmRi
b3hfcGF0aF90b19ob3N0X3BhdGgoY29uZmlnWydpY2VjY192ZXJzaW9uJ11bY29tcGlsZXJdKSk6
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShjb252ZXJ0X3NhbmRi
b3hfcGF0aF90b193ZWJraXRfc291cmNlX3BhdGgoY29uZmlnWydpY2VjY192ZXJzaW9uJ11bY29t
cGlsZXJdKSk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRfdG9vbGNoYWlucyAr
PSAxCiAgICAgICAgIHJldHVybiBmb3VuZF90b29sY2hhaW5zID4gMQogCkBAIC0xMTU2LDcgKzEx
NjIsNyBAQCBjbGFzcyBXZWJraXRGbGF0cGFrOgogICAgICAgICB3aXRoIHRlbXBmaWxlLk5hbWVk
VGVtcG9yYXJ5RmlsZSgpIGFzIHRtcGZpbGU6CiAgICAgICAgICAgICBjb21tYW5kID0gWydpY2Vj
YycsICctLWJ1aWxkLW5hdGl2ZSddCiAgICAgICAgICAgICBjb21tYW5kLmV4dGVuZChjb21waWxl
cl9tYXBwaW5nLnZhbHVlcygpKQotICAgICAgICAgICAgcmV0Y29kZSA9IHNlbGYucnVuX2luX3Nh
bmRib3goKmNvbW1hbmQsIHN0ZG91dD10bXBmaWxlLCBjd2Q9c2VsZi5zb3VyY2Vfcm9vdCwgc2tp
cF9pY2M9VHJ1ZSkKKyAgICAgICAgICAgIHJldGNvZGUgPSBzZWxmLnJ1bl9pbl9zYW5kYm94KCpj
b21tYW5kLCBzdGRvdXQ9dG1wZmlsZSwgY3dkPVdFQktJVF9TT1VSQ0VfRElSLCBza2lwX2ljYz1U
cnVlKQogICAgICAgICAgICAgaWYgcmV0Y29kZSAhPSAwOgogICAgICAgICAgICAgICAgIENvbnNv
bGUuZXJyb3JfbWVzc2FnZSgnRmxhdHBhayBjb21tYW5kICIlcyIgZmFpbGVkIHdpdGggcmV0dXJu
IGNvZGUgJXMnLCAiICIuam9pbihjb21tYW5kKSwgcmV0Y29kZSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gW10KQEAgLTExNjYsNyArMTE3Miw3IEBAIGNsYXNzIFdlYmtpdEZsYXRwYWs6CiAgICAg
ICAgICAgICByZWxhdGl2ZV9maWxlbmFtZSA9ICJ3ZWJraXQtc2RrLXtuYW1lfS17ZmlsZW5hbWV9
Ii5mb3JtYXQobmFtZT1jb21waWxlcnNbMF0sIGZpbGVuYW1lPWljY192ZXJzaW9uX2ZpbGVuYW1l
LmRlY29kZSgpKQogICAgICAgICAgICAgYXJjaGl2ZV9maWxlbmFtZSA9IG9zLnBhdGguam9pbihz
ZWxmLnRvb2xjaGFpbnNfZGlyZWN0b3J5LCByZWxhdGl2ZV9maWxlbmFtZSkKICAgICAgICAgICAg
IG9zLnJlbmFtZShpY2NfdmVyc2lvbl9maWxlbmFtZSwgYXJjaGl2ZV9maWxlbmFtZSkKLSAgICAg
ICAgICAgIGFyY2hpdmVfc2FuZGJveF9wYXRoID0gc2VsZi5ob3N0X3BhdGhfdG9fc2FuZGJveF9w
YXRoKGFyY2hpdmVfZmlsZW5hbWUpCisgICAgICAgICAgICBhcmNoaXZlX3NhbmRib3hfcGF0aCA9
IGNvbnZlcnRfd2Via2l0X3NvdXJjZV9wYXRoX3RvX3NhbmRib3hfcGF0aChhcmNoaXZlX2ZpbGVu
YW1lKQogICAgICAgICAgICAgc2VsZi5pY2NfdmVyc2lvbltjb21waWxlcnNbMF1dID0gYXJjaGl2
ZV9zYW5kYm94X3BhdGgKICAgICAgICAgICAgIENvbnNvbGUubWVzc2FnZSgiQ3JlYXRlZCAlcyBz
ZWxmLWNvbnRhaW5lZCB0b29sY2hhaW4gYXJjaGl2ZSIsIGFyY2hpdmVfZmlsZW5hbWUpCiAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL2ZsYXRwYWsvd2Via2l0LWNsYW5nZCBiL1Rvb2xzL2ZsYXRwYWsvd2Vi
a2l0LWNsYW5nZApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NTc0MjYzNGQ0MmRmZDEwNDYzMTJkZDQ5NGFmYzE5ZjU0
YzM1ODBiCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvZmxhdHBhay93ZWJraXQtY2xhbmdkCkBA
IC0wLDAgKzEsNDkgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyMgLSotIGNvZGluZzogdXRm
LTggLSotCisjIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorIworIyBUaGlzIHByb2dy
YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisjIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
KyMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisjIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyMg
TGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1
YmxpYworIyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRv
IHRoZQorIyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBG
aWZ0aCBGbG9vciwKKyMgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisKK2ltcG9ydCBmbGF0
cGFrdXRpbHMKK2ltcG9ydCBvcworaW1wb3J0IHN5cworCitwbGF0Zm9ybSA9ICJHVEsiCitpZiAi
LS13cGUiIGluIHN5cy5hcmd2OgorICAgIHBsYXRmb3JtID0gIldQRSIKKyAgICBzeXMuYXJndi5y
ZW1vdmUoIi0td3BlIikKK2lmICItLWd0ayIgaW4gc3lzLmFyZ3Y6CisgICAgc3lzLmFyZ3YucmVt
b3ZlKCItLWd0ayIpCisKK2J1aWxkX3BhdGggPSBvcy5lbnZpcm9uWydXRUJLSVRfT1VUUFVURElS
J10gaWYgJ1dFQktJVF9PVVRQVVRESVInIGluIG9zLmVudmlyb24gXAorICAgIGVsc2UgZmxhdHBh
a3V0aWxzLkRFRkFVTFRfQlVJTERfUk9PVAorbWFwcGluZ3MgPSAiLS1wYXRoLW1hcHBpbmdzPSIg
KyAiLCIuam9pbihbCisgICAgInt9PXt9Ii5mb3JtYXQoCisgICAgICAgIG9zLnBhdGguam9pbihm
bGF0cGFrdXRpbHMuU0FOREJPWF9TT1VSQ0VfUk9PVCwgIkRlYnVnIiksCisgICAgICAgIG9zLnBh
dGguam9pbihidWlsZF9wYXRoLCBwbGF0Zm9ybSwgIkRlYnVnIikpLAorICAgICJ7fT17fSIuZm9y
bWF0KAorICAgICAgICBvcy5wYXRoLmpvaW4oZmxhdHBha3V0aWxzLlNBTkRCT1hfU09VUkNFX1JP
T1QsICJSZWxlYXNlIiksCisgICAgICAgIG9zLnBhdGguam9pbihidWlsZF9wYXRoLCBwbGF0Zm9y
bSwgIlJlbGVhc2UiKSksCisgICAgInt9PXt9Ii5mb3JtYXQoCisgICAgICAgIG9zLnBhdGguam9p
bihmbGF0cGFrdXRpbHMuV0VCS0lUX1NPVVJDRV9ESVIsICJTb3VyY2UiKSwKKyAgICAgICAgb3Mu
cGF0aC5qb2luKGZsYXRwYWt1dGlscy5TQU5EQk9YX1NPVVJDRV9ST09ULCAiU291cmNlIikpLAor
ICAgICIvdXNyL2luY2x1ZGU9e30iLmZvcm1hdCgKKyAgICAgICAgb3MucGF0aC5qb2luKGZsYXRw
YWt1dGlscy5GTEFUUEFLX1VTRVJfRElSX1BBVEgsICJydW50aW1lIiwgIm9yZy53ZWJraXQuU2Rr
IiwKKyAgICAgICAgICAgICAgICAgICAgICJ4ODZfNjQiLCBmbGF0cGFrdXRpbHMuU0RLX0JSQU5D
SCwgImFjdGl2ZSIsICJmaWxlcyIsICJpbmNsdWRlIikpLAorXSkKKworcHJpbnQoZiJSdW5uaW5n
IGNsYW5nZCB3aXRoIGFyZ3VtZW50czoge1ttYXBwaW5nc10gKyBzeXMuYXJndlsxOl19IikKK2Zs
YXRwYWt1dGlscy5ydW5faW5fc2FuZGJveF9pZl9hdmFpbGFibGUoWyJjbGFuZ2QiLCBtYXBwaW5n
c10gKyBzeXMuYXJndlsxOl0pCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451238</attachid>
            <date>2022-02-08 04:56:48 -0800</date>
            <delta_ts>2022-02-09 08:00:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236240-20220208135646.patch</filename>
            <type>text/plain</type>
            <size>16489</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MzYwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOTg5MmY0N2Y0NWYwZmY3OThjODdlYzAzNTNlOWMzZjNl
MjBmMTVlYy4uYzlhYzU1ZmYzYzU4MzdlZjZlMDNhZTE4MzIyYmZjMTlkOTllMGMwMCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3
IEBACisyMDIyLTAyLTA3ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4K
KworICAgICAgICBbRmxhdHBhayBTREtdIEFkZCBhIHdyYXBwZXIgZm9yIGNsYW5nZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MjQwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmbGF0cGFrL2ZsYXRw
YWt1dGlscy5weTogUmVmYWN0b3IgdGhpcyBmaWxlIHNvIHRoYXQgdGhlIGJ1aWxkIGNvbnN0YW50
cyBjYW4gYmUKKyAgICAgICAgcmV1c2VkIGluIHRoZSBuZXcgc2NyaXB0LgorICAgICAgICAoY29u
dmVydF93ZWJraXRfc291cmNlX3BhdGhfdG9fc2FuZGJveF9wYXRoKToKKyAgICAgICAgKGNvbnZl
cnRfc2FuZGJveF9wYXRoX3RvX3dlYmtpdF9zb3VyY2VfcGF0aCk6CisgICAgICAgIChnZXRfYnVp
bGRfZGlyKToKKyAgICAgICAgKFdlYmtpdEZsYXRwYWsuX19pbml0X18pOgorICAgICAgICAoV2Vi
a2l0RmxhdHBhay5jbGVhbl9hcmdzKToKKyAgICAgICAgKFdlYmtpdEZsYXRwYWsuc2V0dXBfZ3N0
YnVpbGQpOgorICAgICAgICAoV2Via2l0RmxhdHBhay5pc19idWlsZF9qc2MpOgorICAgICAgICAo
V2Via2l0RmxhdHBhay5ydW5faW5fc2FuZGJveCk6CisgICAgICAgIChXZWJraXRGbGF0cGFrLm1h
aW4pOgorICAgICAgICAoV2Via2l0RmxhdHBhay5jaGVja190b29sY2hhaW5zX2dlbmVyYXRlZCk6
CisgICAgICAgIChXZWJraXRGbGF0cGFrLnBhY2tfdG9vbGNoYWluKToKKyAgICAgICAgKFdlYmtp
dEZsYXRwYWsuaG9zdF9wYXRoX3RvX3NhbmRib3hfcGF0aCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJraXRGbGF0cGFrLnNhbmRib3hfcGF0aF90b19ob3N0X3BhdGgpOiBEZWxldGVkLgorICAgICAg
ICAqIGZsYXRwYWsvd2Via2l0LWNsYW5nZDogQWRkZWQuCisKIDIwMjItMDItMDcgIEJlbiBOaGFt
ICA8bmhhbUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIFB1c2hTZXJ2aWNlCmRpZmYgLS1naXQg
YS9Ub29scy9mbGF0cGFrL2ZsYXRwYWt1dGlscy5weSBiL1Rvb2xzL2ZsYXRwYWsvZmxhdHBha3V0
aWxzLnB5CmluZGV4IDZiYzYwNTk2YTBiMWRhYjA0M2UyODg0ODU0NDg2NDVkMzdiZDUwMmYuLjA3
NTZiMDllY2U1ZWZiYjFjYTdiNTlhMzJhNmI4Nzc0Y2NhNzNhNGQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L2ZsYXRwYWsvZmxhdHBha3V0aWxzLnB5CisrKyBiL1Rvb2xzL2ZsYXRwYWsvZmxhdHBha3V0aWxz
LnB5CkBAIC0zNSw2ICszNSw5IEBAIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHJlCiBpbXBvcnQg
cGxhdGZvcm0KIAorU0NSSVBUX0RJUiA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmRpcm5hbWUo
X19maWxlX18pKQorV0VCS0lUX1NPVVJDRV9ESVIgPSBvcy5wYXRoLm5vcm1wYXRoKG9zLnBhdGgu
YWJzcGF0aChvcy5wYXRoLmpvaW4oU0NSSVBUX0RJUiwgIi4uIiwgIi4uIikpKQorc3lzLnBhdGgu
aW5zZXJ0KDAsIG9zLnBhdGguam9pbihXRUJLSVRfU09VUkNFX0RJUiwgIlRvb2xzIiwgIlNjcmlw
dHMiKSkKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5sb2d1dGlscyBpbXBvcnQgY29uZmln
dXJlX2xvZ2dpbmcKIGZyb20gd2Via2l0Y29yZXB5IGltcG9ydCBzdHJpbmdfdXRpbHMKIGltcG9y
dCB0b21sCkBAIC01OSwxMiArNjIsMjEgQEAgZXhjZXB0IEltcG9ydEVycm9yOgogCiBGTEFUUEFL
X1JFUVVJUkVEX1ZFUlNJT04gPSAiMS40LjQiCiAKLXNjcmlwdGRpciA9IG9zLnBhdGguYWJzcGF0
aChvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKQogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9f
bmFtZV9fKQogCi1GTEFUUEFLX1VTRVJfRElSX1BBVEggPSBvcy5wYXRoLnJlYWxwYXRoKG9zLnBh
dGguam9pbihzY3JpcHRkaXIsICIuLi8uLi9XZWJLaXRCdWlsZCIsICJVc2VyRmxhdHBhayIpKQor
QlVJTERfUk9PVF9ESVJfTkFNRSA9ICdXZWJLaXRCdWlsZCcKKworIyBUaGlzIHBhdGggZG9lc24n
dCB0YWtlICRXRUJLSVRfT1VUUFVURElSIGluIGFjY291bnQgYmVjYXVzZSB0aGUgc3RhbmRhbG9u
ZSB0b29sY2hhaW5zCisjIHBhdGhzIGRlcGVuZCBvbiBpdCBhbmQgdGhvc2UgYXJlIGFsc28gaGFy
ZC1jb2RlZCBpbiB0aGUgZ2VuZXJhdGVkIHNjY2FjaGUgY29uZmlnLgorREVGQVVMVF9CVUlMRF9S
T09UID0gb3MucGF0aC5qb2luKFdFQktJVF9TT1VSQ0VfRElSLCBCVUlMRF9ST09UX0RJUl9OQU1F
KQorQlVJTERfUk9PVCA9IG9zLnBhdGguam9pbihvcy5lbnZpcm9uLmdldCgiV0VCS0lUX09VVFBV
VERJUiIsIFdFQktJVF9TT1VSQ0VfRElSKSwgQlVJTERfUk9PVF9ESVJfTkFNRSkKK0ZMQVRQQUtf
VVNFUl9ESVJfUEFUSCA9IG9zLnBhdGgucmVhbHBhdGgob3MucGF0aC5qb2luKERFRkFVTFRfQlVJ
TERfUk9PVCwgIlVzZXJGbGF0cGFrIikpCisKIERFRkFVTFRfU0NDQUNIRV9TQ0hFRFVMRVI9J2h0
dHBzOi8vc2NjYWNoZS5pZ2FsaWEuY29tJwogCisjIFdoZXJlIHRoZSBzb3VyY2UgZm9sZGVyIGlz
IG1vdW50ZWQgaW5zaWRlIHRoZSBzYW5kYm94LgorU0FOREJPWF9TT1VSQ0VfUk9PVCA9ICIvYXBw
L3dlYmtpdCIKKwogIyBPdXIgU0RLIGJyYW5jaCBtYXRjaGVzIHdpdGggdGhlIEZETyBTREsgYnJh
bmNoLiBXaGVuIHVwZGF0aW5nIHRoZSBGRE8gU0RLIHJlbGVhc2UgYnJhbmNoCiAjIGluIG91ciBT
REsgYnVpbGQgZGVmaW5pdGlvbnMgcGxlYXNlIGRvbid0IGZvcmdldCB0byB1cGRhdGUgdGhlIHZl
cnNpb24gaGVyZSBhcyB3ZWxsLgogU0RLX0JSQU5DSCA9ICIyMS4wOCIKQEAgLTE5OCw2ICsyMTAs
MjAgQEAgZGVmIGNoZWNrX2ZsYXRwYWsodmVyYm9zZT1UcnVlKToKICAgICByZXR1cm4gY3VycmVu
dF92ZXJzaW9uCiAKIAorZGVmIGNvbnZlcnRfd2Via2l0X3NvdXJjZV9wYXRoX3RvX3NhbmRib3hf
cGF0aChzb3VyY2VfcGF0aCk6CisgICAgJycnQ29udmVydCBhIHBhdGggaW4gdGhlIFdlYktpdCBz
b3VyY2UgZGlyZWN0b3J5IHRvIHRoZSBzYW1lIHBhdGggaW4gdGhlCisgICAgICAgc2FuZGJveGVk
IHNvdXJjZSBkaXJldG9yeS4gJycnCisgICAgcmV0dXJuIHNvdXJjZV9wYXRoLnJlcGxhY2UoV0VC
S0lUX1NPVVJDRV9ESVIsIFNBTkRCT1hfU09VUkNFX1JPT1QpCisKKworZGVmIGNvbnZlcnRfc2Fu
ZGJveF9wYXRoX3RvX3dlYmtpdF9zb3VyY2VfcGF0aChzYW5kYm94X3BhdGgpOgorICAgICMgRm9y
IG5vdyB0aGlzIHN1cHBvcnRzIG9ubHkgZmlsZXMgaW4gdGhlIC9hcHAvd2Via2l0IHBhdGgKKyAg
ICByZXR1cm4gc2FuZGJveF9wYXRoLnJlcGxhY2UoU0FOREJPWF9TT1VSQ0VfUk9PVCwgV0VCS0lU
X1NPVVJDRV9ESVIpCisKKworZGVmIGdldF9idWlsZF9kaXIocGxhdGZvcm0sIGJ1aWxkX3R5cGUp
OgorICAgIHJldHVybiBvcy5wYXRoLmpvaW4oQlVJTERfUk9PVCwgcGxhdGZvcm0sIGJ1aWxkX3R5
cGUpCisKIGNsYXNzIEZsYXRwYWtPYmplY3Q6CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgdXNl
cik6CkBAIC01MjMsMTEgKzU0OSw2IEBAIGNsYXNzIFdlYmtpdEZsYXRwYWs6CiAKICAgICAgICAg
c2VsZi5yZWxlYXNlID0gRmFsc2UKICAgICAgICAgc2VsZi5kZWJ1ZyA9IEZhbHNlCi0gICAgICAg
IHNlbGYuc291cmNlX3Jvb3QgPSBvcy5wYXRoLm5vcm1wYXRoKG9zLnBhdGguYWJzcGF0aChvcy5w
YXRoLmpvaW4oc2NyaXB0ZGlyLCAnLi4vLi4vJykpKQotICAgICAgICAjIFdoZXJlIHRoZSBzb3Vy
Y2UgZm9sZGVyIGlzIG1vdW50ZWQgaW5zaWRlIHRoZSBzYW5kYm94LgotICAgICAgICBzZWxmLnNh
bmRib3hfc291cmNlX3Jvb3QgPSAiL2FwcC93ZWJraXQiCi0KLSAgICAgICAgc2VsZi5iYXNlX2J1
aWxkX2RpciA9ICdXZWJLaXRCdWlsZCcKIAogICAgICAgICBzZWxmLmJ1aWxkX2dzdCA9IEZhbHNl
CiAKQEAgLTU3MSw3ICs1OTIsNyBAQCBjbGFzcyBXZWJraXRGbGF0cGFrOgogCiAgICAgZGVmIGNs
ZWFuX2FyZ3Moc2VsZik6CiAgICAgICAgIGlmIHNlbGYudXNlcl9yZXBvOgotICAgICAgICAgICAg
b3MuZW52aXJvblsiRkxBVFBBS19VU0VSX0RJUiJdID0gRkxBVFBBS19VU0VSX0RJUl9QQVRIICsg
Ii5Mb2NhbCIKKyAgICAgICAgICAgIG9zLmVudmlyb25bIkZMQVRQQUtfVVNFUl9ESVIiXSA9IG9z
LnBhdGguam9pbihGTEFUUEFLX1VTRVJfRElSX1BBVEgsICIuTG9jYWwiKQogICAgICAgICBlbHNl
OgogICAgICAgICAgICAgb3MuZW52aXJvblsiRkxBVFBBS19VU0VSX0RJUiJdID0gb3MuZW52aXJv
bi5nZXQoIldFQktJVF9GTEFUUEFLX1VTRVJfRElSIiwgRkxBVFBBS19VU0VSX0RJUl9QQVRIKQog
ICAgICAgICBzZWxmLmZsYXRwYWtfYnVpbGRfcGF0aCA9IG9zLmVudmlyb25bIkZMQVRQQUtfVVNF
Ul9ESVIiXQpAQCAtNTg2LDE2ICs2MDcsMTAgQEAgY2xhc3MgV2Via2l0RmxhdHBhazoKICAgICAg
ICAgaWYgc2VsZi5nZGIgaXMgTm9uZSBhbmQgJy0tZ2RiJyBpbiBzeXMuYXJndjoKICAgICAgICAg
ICAgIHNlbGYuZ2RiID0gVHJ1ZQogCi0gICAgICAgICMgVGhpcyBwYXRoIGRvZXNuJ3QgdGFrZSAk
V0VCS0lUX09VVFBVVERJUiBpbiBhY2NvdW50IGJlY2F1c2UgdGhlIHN0YW5kYWxvbmUgdG9vbGNo
YWlucwotICAgICAgICAjIHBhdGhzIGRlcGVuZCBvbiBpdCBhbmQgdGhvc2UgYXJlIGFsc28gaGFy
ZC1jb2RlZCBpbiB0aGUgZ2VuZXJhdGVkIHNjY2FjaGUgY29uZmlnLgotICAgICAgICBzZWxmLmRl
ZmF1bHRfYnVpbGRfcm9vdCA9IG9zLnBhdGguam9pbihzZWxmLnNvdXJjZV9yb290LCBzZWxmLmJh
c2VfYnVpbGRfZGlyKQotCiAgICAgICAgIHNlbGYuY29uZmlnX2ZpbGUgPSBvcy5wYXRoLmpvaW4o
c2VsZi5mbGF0cGFrX2J1aWxkX3BhdGgsICd3ZWJraXRfZmxhdHBha19jb25maWcuanNvbicpCiAg
ICAgICAgIHNlbGYuc2NjYWNoZV9jb25maWdfZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLmZsYXRw
YWtfYnVpbGRfcGF0aCwgJ3NjY2FjaGUudG9tbCcpCiAKLSAgICAgICAgYnVpbGRfcm9vdCA9IG9z
LmVudmlyb24uZ2V0KCJXRUJLSVRfT1VUUFVURElSIiwgc2VsZi5zb3VyY2Vfcm9vdCkKLSAgICAg
ICAgc2VsZi5idWlsZF9yb290ID0gb3MucGF0aC5qb2luKGJ1aWxkX3Jvb3QsIHNlbGYuYmFzZV9i
dWlsZF9kaXIpCi0gICAgICAgIHNlbGYuYnVpbGRfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLmJ1
aWxkX3Jvb3QsIHNlbGYucGxhdGZvcm0sIHNlbGYuYnVpbGRfdHlwZSkKKyAgICAgICAgc2VsZi5i
dWlsZF9wYXRoID0gZ2V0X2J1aWxkX2RpcihzZWxmLnBsYXRmb3JtLCBzZWxmLmJ1aWxkX3R5cGUp
CiAgICAgICAgIF9sb2cuZGVidWcoIkJ1aWxkaW5nICVzIHBvcnQgaW4gJXMiICUgKHNlbGYucGxh
dGZvcm0sIHNlbGYuYnVpbGRfcGF0aCkpCiAKICAgICAgICAgc2VsZi50b29sY2hhaW5zX2RpcmVj
dG9yeSA9IG9zLnBhdGguam9pbihzZWxmLmZsYXRwYWtfYnVpbGRfcGF0aCwgIlRvb2xjaGFpbnMi
KQpAQCAtNjU3LDggKzY3Miw4IEBAIGNsYXNzIFdlYmtpdEZsYXRwYWs6CiAgICAgICAgIGlmIG5v
dCBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oZ3N0X2RpciwgJ2dzdC1lbnYucHknKSk6CiAg
ICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0dTVF9CVUlMRF9QQVRIIHNldCB0byAlcyBi
dXQgaXQgZG9lc25cJ3Qgc2VlbSB0byBiZSBhIHZhbGlkIGBnc3QtYnVpbGRgIGNoZWNrb3V0Licg
JSBnc3RfZGlyKQogCi0gICAgICAgIGdzdF9idWlsZGRpciA9IG9zLnBhdGguam9pbihzZWxmLnNv
dXJjZV9yb290LCBzZWxmLmJhc2VfYnVpbGRfZGlyLCAnZ3N0LWJ1aWxkJykKLSAgICAgICAgaWYg
bm90IG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLmRlZmF1bHRfYnVpbGRfcm9vdCwg
J2dzdC1idWlsZCcsICdidWlsZC5uaW5qYScpKToKKyAgICAgICAgZ3N0X2J1aWxkZGlyID0gb3Mu
cGF0aC5qb2luKERFRkFVTFRfQlVJTERfUk9PVCwgJ2dzdC1idWlsZCcpCisgICAgICAgIGlmIG5v
dCBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oREVGQVVMVF9CVUlMRF9ST09ULCAnZ3N0LWJ1
aWxkJywgJ2J1aWxkLm5pbmphJykpOgogICAgICAgICAgICAgaWYgbm90IGJ1aWxkaW5nOgogICAg
ICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignVHJ5aW5nIHRvIGVudGVyIGdzdC1idWls
ZCBlbnYgZnJvbSAlcyBidXQgaXQgaXMgbm90IGJ1aWx0LCBtYWtlIHN1cmUgdG8gcmVidWlsZCB3
ZWJraXQuJyAlIGdzdF9kaXIpCiAKQEAgLTY4NCw3ICs2OTksNyBAQCBjbGFzcyBXZWJraXRGbGF0
cGFrOgogICAgICAgICAgICAgaWYgbm90IHZhcl9uYW1lLnN0YXJ0c3dpdGgoIkdTVF8iKSBhbmQg
dmFyX25hbWUgbm90IGluIGFsbG93bGlzdDoKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAg
ICAgICAgICAgaWYgdmFyX25hbWUgbm90IGluIG5vcGF0aGxpc3Q6Ci0gICAgICAgICAgICAgICAg
bmV3X2NvbnRlbnRzID0gJzonLmpvaW4oW3NlbGYuaG9zdF9wYXRoX3RvX3NhbmRib3hfcGF0aChw
KSBmb3IgcCBpbiBjb250ZW50cy5zcGxpdCgiOiIpXSkKKyAgICAgICAgICAgICAgICBuZXdfY29u
dGVudHMgPSAnOicuam9pbihbY29udmVydF93ZWJraXRfc291cmNlX3BhdGhfdG9fc2FuZGJveF9w
YXRoKHApIGZvciBwIGluIGNvbnRlbnRzLnNwbGl0KCI6IildKQogICAgICAgICAgICAgZWxzZToK
ICAgICAgICAgICAgICAgICBuZXdfY29udGVudHMgPSBjb250ZW50cy5yZXBsYWNlKCInIiwgIiIp
CiAgICAgICAgICAgICBlbnZbdmFyX25hbWVdID0gbmV3X2NvbnRlbnRzCkBAIC03MTYsMTQgKzcz
MSw2IEBAIGNsYXNzIFdlYmtpdEZsYXRwYWs6CiAgICAgZGVmIGlzX2J1aWxkX2pzYyhzZWxmLCBj
b21tYW5kKToKICAgICAgICAgcmV0dXJuIGNvbW1hbmQgYW5kICJidWlsZC1qc2MiIGluIG9zLnBh
dGguYmFzZW5hbWUoY29tbWFuZCkKIAotICAgIGRlZiBob3N0X3BhdGhfdG9fc2FuZGJveF9wYXRo
KHNlbGYsIGhvc3RfcGF0aCk6Ci0gICAgICAgICMgRm9yIG5vdyB0aGlzIHN1cHBvcnRzIG9ubHkg
ZmlsZXMgaW4gdGhlIC9hcHAvd2Via2l0IHBhdGgKLSAgICAgICAgcmV0dXJuIGhvc3RfcGF0aC5y
ZXBsYWNlKHNlbGYuc291cmNlX3Jvb3QsIHNlbGYuc2FuZGJveF9zb3VyY2Vfcm9vdCkKLQotICAg
IGRlZiBzYW5kYm94X3BhdGhfdG9faG9zdF9wYXRoKHNlbGYsIHNhbmRib3hfcGF0aCk6Ci0gICAg
ICAgICMgRm9yIG5vdyB0aGlzIHN1cHBvcnRzIG9ubHkgZmlsZXMgaW4gdGhlIC9hcHAvd2Via2l0
IHBhdGgKLSAgICAgICAgcmV0dXJuIHNhbmRib3hfcGF0aC5yZXBsYWNlKHNlbGYuc2FuZGJveF9z
b3VyY2Vfcm9vdCwgc2VsZi5zb3VyY2Vfcm9vdCkKLQogICAgIEBzdGF0aWNtZXRob2QKICAgICBk
ZWYgZ2V0X3VzZXJfcnVudGltZV9kaXIoKToKICAgICAgICAgcmV0dXJuIG9zLmVudmlyb24uZ2V0
KCdYREdfUlVOVElNRV9ESVInLCBvcy5wYXRoLmpvaW4oJy9ydW4vdXNlcicsIHN0cihvcy5nZXR1
aWQoKSkpKQpAQCAtNzMxLDcgKzczOCw2IEBAIGNsYXNzIFdlYmtpdEZsYXRwYWs6CiAgICAgZGVm
IHJ1bl9pbl9zYW5kYm94KHNlbGYsICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgIGlmIG5vdCBz
ZWxmLnNldHVwX2J1aWxkZGlyKCk6CiAgICAgICAgICAgICByZXR1cm4gMQotICAgICAgICBjd2Qg
PSBrd2FyZ3MuZ2V0KCJjd2QiLCBOb25lKQogICAgICAgICBleHRyYV9lbnZfdmFycyA9IGt3YXJn
cy5nZXQoImVudiIsIHt9KQogICAgICAgICBzdGRvdXQgPSBrd2FyZ3MuZ2V0KCJzdGRvdXQiLCBz
eXMuc3Rkb3V0KQogICAgICAgICBleHRyYV9mbGF0cGFrX2FyZ3MgPSBrd2FyZ3MuZ2V0KCJleHRy
YV9mbGF0cGFrX2FyZ3MiLCBbXSkKQEAgLTc0OCw3ICs3NTQsNyBAQCBjbGFzcyBXZWJraXRGbGF0
cGFrOgogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShhcmdzLCBsaXN0KToKICAgICAgICAgICAg
IGFyZ3MgPSBsaXN0KGFyZ3MpCiAKLSAgICAgICAgc2FuZGJveF9idWlsZF9wYXRoID0gb3MucGF0
aC5qb2luKHNlbGYuc2FuZGJveF9zb3VyY2Vfcm9vdCwgc2VsZi5iYXNlX2J1aWxkX2Rpciwgc2Vs
Zi5idWlsZF90eXBlKQorICAgICAgICBzYW5kYm94X2J1aWxkX3BhdGggPSBvcy5wYXRoLmpvaW4o
U0FOREJPWF9TT1VSQ0VfUk9PVCwgQlVJTERfUk9PVF9ESVJfTkFNRSwgc2VsZi5idWlsZF90eXBl
KQogICAgICAgICBzYW5kYm94X2Vudmlyb25tZW50ID0gewogICAgICAgICAgICAgIlRFU1RfUlVO
TkVSX0lOSkVDVEVEX0JVTkRMRV9GSUxFTkFNRSI6IG9zLnBhdGguam9pbihzYW5kYm94X2J1aWxk
X3BhdGgsICJsaWIvbGliVGVzdFJ1bm5lckluamVjdGVkQnVuZGxlLnNvIiksCiAgICAgICAgICAg
ICAiUEFUSCI6ICIvdXNyL2xpYi9zZGsvbGx2bTEyL2JpbjovdXNyL2JpbjovdXNyL2xpYi9zZGsv
cnVzdC9iaW4vIiwKQEAgLTc2Myw3ICs3NjksNyBAQCBjbGFzcyBXZWJraXRGbGF0cGFrOgogICAg
ICAgICAgICAgZWxpZiBvcy5wYXRoLmV4aXN0cyhhcmdzWzBdKToKICAgICAgICAgICAgICAgICBj
b21tYW5kID0gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmFic3BhdGgoYXJnc1swXSkpCiAgICAg
ICAgICAgICAgICAgIyBUYWtlIGludG8gYWNjb3VudCB0aGUgZmFjdCB0aGF0IHRoZSB3ZWJraXQg
c291cmNlIGRpciBpcyByZW1vdW50ZWQgaW5zaWRlIHRoZSBzYW5kYm94LgotICAgICAgICAgICAg
ICAgIGFyZ3NbMF0gPSBjb21tYW5kLnJlcGxhY2Uoc2VsZi5zb3VyY2Vfcm9vdCwgc2VsZi5zYW5k
Ym94X3NvdXJjZV9yb290KQorICAgICAgICAgICAgICAgIGFyZ3NbMF0gPSBjb252ZXJ0X3dlYmtp
dF9zb3VyY2VfcGF0aF90b19zYW5kYm94X3BhdGgoY29tbWFuZCkKIAogICAgICAgICAgICAgaWYg
YXJnc1swXSA9PSAiYmFzaCI6CiAgICAgICAgICAgICAgICAgYXJncy5leHRlbmQoWyctLW5vcHJv
ZmlsZScsICctLW5vcmMnLCAnLWknXSkKQEAgLTg4OCw3ICs4OTQsNyBAQCBjbGFzcyBXZWJraXRG
bGF0cGFrOgogICAgICAgICAgICAgc2NjYWNoZV9lbnZpcm9ubWVudCA9IHt9CiAgICAgICAgICAg
ICBpZiBvcy5wYXRoLmlzZmlsZShzZWxmLnNjY2FjaGVfY29uZmlnX2ZpbGUpIGFuZCBub3Qgc2Vs
Zi5yZWdlbmVyYXRlX3Rvb2xjaGFpbnMgYW5kIFwKICAgICAgICAgICAgICAgICJTQ0NBQ0hFX0NP
TkYiIG5vdCBpbiBvcy5lbnZpcm9uLmtleXMoKToKLSAgICAgICAgICAgICAgICBzY2NhY2hlX2Vu
dmlyb25tZW50WyJTQ0NBQ0hFX0NPTkYiXSA9IHNlbGYuaG9zdF9wYXRoX3RvX3NhbmRib3hfcGF0
aChzZWxmLnNjY2FjaGVfY29uZmlnX2ZpbGUpCisgICAgICAgICAgICAgICAgc2NjYWNoZV9lbnZp
cm9ubWVudFsiU0NDQUNIRV9DT05GIl0gPSBjb252ZXJ0X3dlYmtpdF9zb3VyY2VfcGF0aF90b19z
YW5kYm94X3BhdGgoc2VsZi5zY2NhY2hlX2NvbmZpZ19maWxlKQogCiAgICAgICAgICAgICBvdmVy
cmlkZV9zY2NhY2hlX3NlcnZlcl9wb3J0ID0gb3MuZW52aXJvbi5nZXQoIldFQktJVF9TQ0NBQ0hF
X1NFUlZFUl9QT1JUIikKICAgICAgICAgICAgIGlmIG92ZXJyaWRlX3NjY2FjaGVfc2VydmVyX3Bv
cnQ6CkBAIC05MjUsNyArOTMxLDcgQEAgY2xhc3MgV2Via2l0RmxhdHBhazoKICAgICAgICAgICAg
ICAgICAgICAgQ29uc29sZS5lcnJvcl9tZXNzYWdlKCIlcyB0b29sY2hhaW4gbm90IGZvdW5kLiBJ
Q0VDQ19WRVJTSU9OX09WRVJSSURFIG1pcy1jb25maWd1cmVkPyIsIHRvb2xjaGFpbl9vdmVycmlk
ZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDEKIAotICAgICAgICAgICAgICAgIHRvb2xj
aGFpbl9wYXRoID0gc2VsZi5ob3N0X3BhdGhfdG9fc2FuZGJveF9wYXRoKHRvb2xjaGFpbl9vdmVy
cmlkZSkKKyAgICAgICAgICAgICAgICB0b29sY2hhaW5fcGF0aCA9IGNvbnZlcnRfd2Via2l0X3Nv
dXJjZV9wYXRoX3RvX3NhbmRib3hfcGF0aCh0b29sY2hhaW5fb3ZlcnJpZGUpCiAKICAgICAgICAg
ICAgIGlmIG5vdCB0b29sY2hhaW5fcGF0aDoKICAgICAgICAgICAgICAgICBDb25zb2xlLmVycm9y
X21lc3NhZ2UoIlRvb2xjaGFpbnMgY29uZmlndXJhdGlvbiBub3QgZm91bmQuIFBsZWFzZSBydW4g
d2Via2l0LWZsYXRwYWsgLXIgb3Igc2V0IElDRUNDX1ZFUlNJT05fT1ZFUlJJREUgdG8gYSB2YWxp
ZCBob3N0IHBhdGgiKQpAQCAtOTM3LDcgKzk0Myw3IEBAIGNsYXNzIFdlYmtpdEZsYXRwYWs6CiAg
ICAgICAgICAgICAgICAgICAgIENvbnNvbGUuZXJyb3JfbWVzc2FnZSgiJXMgaXMgbm90IGEgdmFs
aWQgSWNlQ0MgdG9vbGNoYWluLiBJQ0VDQ19WRVJTSU9OX0FQUEVORCBtaXMtY29uZmlndXJlZD8i
LCBleHRyYV90b29sY2hhaW4pCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxCiAgICAgICAg
ICAgICAgICAgdG9vbGNoYWluX3BhdGggKz0gIiwiCi0gICAgICAgICAgICAgICAgdG9vbGNoYWlu
X3BhdGggKz0gc2VsZi5ob3N0X3BhdGhfdG9fc2FuZGJveF9wYXRoKGV4dHJhX3Rvb2xjaGFpbikK
KyAgICAgICAgICAgICAgICB0b29sY2hhaW5fcGF0aCArPSBjb252ZXJ0X3dlYmtpdF9zb3VyY2Vf
cGF0aF90b19zYW5kYm94X3BhdGgoZXh0cmFfdG9vbGNoYWluKQogCiAgICAgICAgICAgICBzYW5k
Ym94X2Vudmlyb25tZW50LnVwZGF0ZSh7CiAgICAgICAgICAgICAgICAgIkNDQUNIRV9QUkVGSVgi
OiAiaWNlY2MiLApAQCAtOTkzLDcgKzk5OSw3IEBAIGNsYXNzIFdlYmtpdEZsYXRwYWs6CiAgICAg
ICAgIGZsYXRwYWtfY29tbWFuZCArPSBleHRyYV9mbGF0cGFrX2FyZ3MgKyBbJy0tY29tbWFuZD0l
cycgJSBhcmdzWzBdLCAib3JnLndlYmtpdC5TZGsiXSArIGFyZ3NbMTpdCiAKICAgICAgICAgZmxh
dHBha19lbnYudXBkYXRlKHsKLSAgICAgICAgICAgICJGTEFUUEFLX0JXUkFQIjogb3MucGF0aC5q
b2luKHNjcmlwdGRpciwgIndlYmtpdC1id3JhcCIpLAorICAgICAgICAgICAgIkZMQVRQQUtfQldS
QVAiOiBvcy5wYXRoLmpvaW4oU0NSSVBUX0RJUiwgIndlYmtpdC1id3JhcCIpLAogICAgICAgICAg
ICAgIldFQktJVF9CVUlMRF9ESVJfQklORF9NT1VOVCI6ICIlczolcyIgJSAoc2FuZGJveF9idWls
ZF9wYXRoLCBzZWxmLmJ1aWxkX3BhdGgpLAogICAgICAgICAgICAgIldFQktJVF9GTEFUUEFLX1VT
RVJfRElSIjogb3MuZW52aXJvblsiRkxBVFBBS19VU0VSX0RJUiJdLAogICAgICAgICB9KQpAQCAt
MTA0Nyw3ICsxMDUzLDcgQEAgY2xhc3MgV2Via2l0RmxhdHBhazoKICAgICAgICAgICAgICAgICAg
ICAgQ29uc29sZS5tZXNzYWdlKCJGb3JjaW5nIG5leHQgV2ViS2l0IGJ1aWxkIHRvIHJlLXJ1biBD
TWFrZSIpCiAgICAgICAgICAgICAgICAgICAgIGZvciBwbGF0Zm9ybSBpbiAoJ0dUSycsICdXUEUn
KToKICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBidWlsZF90eXBlIGluICgnUmVsZWFzZScs
ICdEZWJ1ZycpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlX3BhdGggPSBvcy5w
YXRoLmpvaW4oc2VsZi5idWlsZF9yb290LCBwbGF0Zm9ybSwgYnVpbGRfdHlwZSwgJ0NNYWtlQ2Fj
aGUudHh0JykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNoZV9wYXRoID0gb3MucGF0
aC5qb2luKGdldF9idWlsZF9kaXIocGxhdGZvcm0sIGJ1aWxkX3R5cGUpLCAnQ01ha2VDYWNoZS50
eHQnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGNhY2hl
X3BhdGgpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25zb2xlLm1lc3NhZ2Uo
IlJlbW92aW5nICVzIiwgY2FjaGVfcGF0aCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb3MucmVtb3ZlKGNhY2hlX3BhdGgpCkBAIC0xMDcwLDcgKzEwNzYsNyBAQCBjbGFzcyBXZWJr
aXRGbGF0cGFrOgogCiAgICAgICAgICAgICAjIFRvb2xjaGFpbnMgdXNlZCB0byBiZSBzdG9yZWQg
aW4gV2ViS2l0QnVpbGQvVG9vbGNoYWlucy4gUmVtb3ZlIHRoaXMgcGF0aCBpZiBmb3VuZCwgdG8g
c2F2ZQogICAgICAgICAgICAgIyB1cCBkaXNrIHNwYWNlLgotICAgICAgICAgICAgb2xkX3Rvb2xj
aGFpbnNfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLmRlZmF1bHRfYnVpbGRfcm9vdCwgIlRvb2xj
aGFpbnMiKQorICAgICAgICAgICAgb2xkX3Rvb2xjaGFpbnNfcGF0aCA9IG9zLnBhdGguam9pbihE
RUZBVUxUX0JVSUxEX1JPT1QsICJUb29sY2hhaW5zIikKICAgICAgICAgICAgIGlmIG9zLnBhdGgu
aXNkaXIob2xkX3Rvb2xjaGFpbnNfcGF0aCk6CiAgICAgICAgICAgICAgICAgQ29uc29sZS5tZXNz
YWdlKCJQdXJnaW5nIG9ic29sZXRlIHRvb2xjaGFpbnMiKQogICAgICAgICAgICAgICAgIHNodXRp
bC5ybXRyZWUob2xkX3Rvb2xjaGFpbnNfcGF0aCkKQEAgLTExNDQsNyArMTE1MCw3IEBAIGNsYXNz
IFdlYmtpdEZsYXRwYWs6CiAgICAgICAgICAgICAgICAgY29uZmlnID0ganNvbi5sb2FkKGNvbmZp
Z19mZCkKICAgICAgICAgICAgICAgICBpZiAnaWNlY2NfdmVyc2lvbicgaW4gY29uZmlnOgogICAg
ICAgICAgICAgICAgICAgICBmb3IgY29tcGlsZXIgaW4gY29uZmlnWydpY2VjY192ZXJzaW9uJ106
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShzZWxmLnNhbmRib3hf
cGF0aF90b19ob3N0X3BhdGgoY29uZmlnWydpY2VjY192ZXJzaW9uJ11bY29tcGlsZXJdKSk6Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShjb252ZXJ0X3NhbmRib3hf
cGF0aF90b193ZWJraXRfc291cmNlX3BhdGgoY29uZmlnWydpY2VjY192ZXJzaW9uJ11bY29tcGls
ZXJdKSk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRfdG9vbGNoYWlucyArPSAx
CiAgICAgICAgIHJldHVybiBmb3VuZF90b29sY2hhaW5zID4gMQogCkBAIC0xMTU2LDcgKzExNjIs
NyBAQCBjbGFzcyBXZWJraXRGbGF0cGFrOgogICAgICAgICB3aXRoIHRlbXBmaWxlLk5hbWVkVGVt
cG9yYXJ5RmlsZSgpIGFzIHRtcGZpbGU6CiAgICAgICAgICAgICBjb21tYW5kID0gWydpY2VjYycs
ICctLWJ1aWxkLW5hdGl2ZSddCiAgICAgICAgICAgICBjb21tYW5kLmV4dGVuZChjb21waWxlcl9t
YXBwaW5nLnZhbHVlcygpKQotICAgICAgICAgICAgcmV0Y29kZSA9IHNlbGYucnVuX2luX3NhbmRi
b3goKmNvbW1hbmQsIHN0ZG91dD10bXBmaWxlLCBjd2Q9c2VsZi5zb3VyY2Vfcm9vdCwgc2tpcF9p
Y2M9VHJ1ZSkKKyAgICAgICAgICAgIHJldGNvZGUgPSBzZWxmLnJ1bl9pbl9zYW5kYm94KCpjb21t
YW5kLCBzdGRvdXQ9dG1wZmlsZSwgY3dkPVdFQktJVF9TT1VSQ0VfRElSLCBza2lwX2ljYz1UcnVl
KQogICAgICAgICAgICAgaWYgcmV0Y29kZSAhPSAwOgogICAgICAgICAgICAgICAgIENvbnNvbGUu
ZXJyb3JfbWVzc2FnZSgnRmxhdHBhayBjb21tYW5kICIlcyIgZmFpbGVkIHdpdGggcmV0dXJuIGNv
ZGUgJXMnLCAiICIuam9pbihjb21tYW5kKSwgcmV0Y29kZSkKICAgICAgICAgICAgICAgICByZXR1
cm4gW10KQEAgLTExNjYsNyArMTE3Miw3IEBAIGNsYXNzIFdlYmtpdEZsYXRwYWs6CiAgICAgICAg
ICAgICByZWxhdGl2ZV9maWxlbmFtZSA9ICJ3ZWJraXQtc2RrLXtuYW1lfS17ZmlsZW5hbWV9Ii5m
b3JtYXQobmFtZT1jb21waWxlcnNbMF0sIGZpbGVuYW1lPWljY192ZXJzaW9uX2ZpbGVuYW1lLmRl
Y29kZSgpKQogICAgICAgICAgICAgYXJjaGl2ZV9maWxlbmFtZSA9IG9zLnBhdGguam9pbihzZWxm
LnRvb2xjaGFpbnNfZGlyZWN0b3J5LCByZWxhdGl2ZV9maWxlbmFtZSkKICAgICAgICAgICAgIG9z
LnJlbmFtZShpY2NfdmVyc2lvbl9maWxlbmFtZSwgYXJjaGl2ZV9maWxlbmFtZSkKLSAgICAgICAg
ICAgIGFyY2hpdmVfc2FuZGJveF9wYXRoID0gc2VsZi5ob3N0X3BhdGhfdG9fc2FuZGJveF9wYXRo
KGFyY2hpdmVfZmlsZW5hbWUpCisgICAgICAgICAgICBhcmNoaXZlX3NhbmRib3hfcGF0aCA9IGNv
bnZlcnRfd2Via2l0X3NvdXJjZV9wYXRoX3RvX3NhbmRib3hfcGF0aChhcmNoaXZlX2ZpbGVuYW1l
KQogICAgICAgICAgICAgc2VsZi5pY2NfdmVyc2lvbltjb21waWxlcnNbMF1dID0gYXJjaGl2ZV9z
YW5kYm94X3BhdGgKICAgICAgICAgICAgIENvbnNvbGUubWVzc2FnZSgiQ3JlYXRlZCAlcyBzZWxm
LWNvbnRhaW5lZCB0b29sY2hhaW4gYXJjaGl2ZSIsIGFyY2hpdmVfZmlsZW5hbWUpCiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL2ZsYXRwYWsvd2Via2l0LWNsYW5nZCBiL1Rvb2xzL2ZsYXRwYWsvd2Via2l0
LWNsYW5nZApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45NTc0MjYzNGQ0MmRmZDEwNDYzMTJkZDQ5NGFmYzE5ZjU0YzM1
ODBiCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvZmxhdHBhay93ZWJraXQtY2xhbmdkCkBAIC0w
LDAgKzEsNDkgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyMgLSotIGNvZGluZzogdXRmLTgg
LSotCisjIENvcHlyaWdodCAoQykgMjAyMSBJZ2FsaWEgUy5MLgorIworIyBUaGlzIHByb2dyYW0g
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisjIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyMg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisjIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyMgTGVz
c2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YworIyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRo
ZQorIyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0
aCBGbG9vciwKKyMgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisKK2ltcG9ydCBmbGF0cGFr
dXRpbHMKK2ltcG9ydCBvcworaW1wb3J0IHN5cworCitwbGF0Zm9ybSA9ICJHVEsiCitpZiAiLS13
cGUiIGluIHN5cy5hcmd2OgorICAgIHBsYXRmb3JtID0gIldQRSIKKyAgICBzeXMuYXJndi5yZW1v
dmUoIi0td3BlIikKK2lmICItLWd0ayIgaW4gc3lzLmFyZ3Y6CisgICAgc3lzLmFyZ3YucmVtb3Zl
KCItLWd0ayIpCisKK2J1aWxkX3BhdGggPSBvcy5lbnZpcm9uWydXRUJLSVRfT1VUUFVURElSJ10g
aWYgJ1dFQktJVF9PVVRQVVRESVInIGluIG9zLmVudmlyb24gXAorICAgIGVsc2UgZmxhdHBha3V0
aWxzLkRFRkFVTFRfQlVJTERfUk9PVAorbWFwcGluZ3MgPSAiLS1wYXRoLW1hcHBpbmdzPSIgKyAi
LCIuam9pbihbCisgICAgInt9PXt9Ii5mb3JtYXQoCisgICAgICAgIG9zLnBhdGguam9pbihmbGF0
cGFrdXRpbHMuU0FOREJPWF9TT1VSQ0VfUk9PVCwgIkRlYnVnIiksCisgICAgICAgIG9zLnBhdGgu
am9pbihidWlsZF9wYXRoLCBwbGF0Zm9ybSwgIkRlYnVnIikpLAorICAgICJ7fT17fSIuZm9ybWF0
KAorICAgICAgICBvcy5wYXRoLmpvaW4oZmxhdHBha3V0aWxzLlNBTkRCT1hfU09VUkNFX1JPT1Qs
ICJSZWxlYXNlIiksCisgICAgICAgIG9zLnBhdGguam9pbihidWlsZF9wYXRoLCBwbGF0Zm9ybSwg
IlJlbGVhc2UiKSksCisgICAgInt9PXt9Ii5mb3JtYXQoCisgICAgICAgIG9zLnBhdGguam9pbihm
bGF0cGFrdXRpbHMuV0VCS0lUX1NPVVJDRV9ESVIsICJTb3VyY2UiKSwKKyAgICAgICAgb3MucGF0
aC5qb2luKGZsYXRwYWt1dGlscy5TQU5EQk9YX1NPVVJDRV9ST09ULCAiU291cmNlIikpLAorICAg
ICIvdXNyL2luY2x1ZGU9e30iLmZvcm1hdCgKKyAgICAgICAgb3MucGF0aC5qb2luKGZsYXRwYWt1
dGlscy5GTEFUUEFLX1VTRVJfRElSX1BBVEgsICJydW50aW1lIiwgIm9yZy53ZWJraXQuU2RrIiwK
KyAgICAgICAgICAgICAgICAgICAgICJ4ODZfNjQiLCBmbGF0cGFrdXRpbHMuU0RLX0JSQU5DSCwg
ImFjdGl2ZSIsICJmaWxlcyIsICJpbmNsdWRlIikpLAorXSkKKworcHJpbnQoZiJSdW5uaW5nIGNs
YW5nZCB3aXRoIGFyZ3VtZW50czoge1ttYXBwaW5nc10gKyBzeXMuYXJndlsxOl19IikKK2ZsYXRw
YWt1dGlscy5ydW5faW5fc2FuZGJveF9pZl9hdmFpbGFibGUoWyJjbGFuZ2QiLCBtYXBwaW5nc10g
KyBzeXMuYXJndlsxOl0pCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>