<?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>216944</bug_id>
          
          <creation_ts>2020-09-24 14:36:33 -0700</creation_ts>
          <short_desc>Change dumpAsText to strip trailing spaces</short_desc>
          <delta_ts>2020-09-28 08:21:54 -0700</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=217041</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>
          
          <blocked>217016</blocked>
    
    <blocked>217018</blocked>
    
    <blocked>217019</blocked>
    
    <blocked>217020</blocked>
    
    <blocked>217022</blocked>
    
    <blocked>217024</blocked>
    
    <blocked>217027</blocked>
    
    <blocked>217029</blocked>
    
    <blocked>217030</blocked>
    
    <blocked>217035</blocked>
    
    <blocked>217036</blocked>
    
    <blocked>217037</blocked>
    
    <blocked>217038</blocked>
    
    <blocked>217039</blocked>
    
    <blocked>217040</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jbedard</cc>
    
    <cc>mkwst</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1691670</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-24 14:36:33 -0700</bug_when>
    <thetext>We should change the dumpAsText machinery to strip trailing spaces.

We’re not getting any value for comparing them, this helps Alan Bujtas with a project that affects trailing space collapsing, there are a lot of irritating trailing spaces in WPT tests, and this even makes the expected.txt files a tiny, tiny bit smaller.

We’ll update all the expected.txt files with a script.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1691930</commentid>
    <comment_count>1</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-25 10:22:57 -0700</bug_when>
    <thetext>I think I’ll do this in 4 steps:

1) Make run-webkit-tests ignore trailing space differences in expected.txt files.

2) Change DumpRenderTree and WebKitTestRunner to not dump any trailing spaces.

3) Do a global replace across all the expected.txt files to remove existing trailing spaces (probably won’t post a patch for review for this step).

4) Remove the code from (1), no need to ignore trailing space differences any more.

Anyone have a better idea?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1691934</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-25 10:27:37 -0700</bug_when>
    <thetext>Here’s the command line I will use for step 3:

    find . -name &apos;*-expected.txt&apos; | xargs perl -i -pe &apos;s/ +$//g&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1691971</commentid>
    <comment_count>3</comment_count>
      <attachid>409716</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-25 12:06:51 -0700</bug_when>
    <thetext>Created attachment 409716
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1691973</commentid>
    <comment_count>4</comment_count>
      <attachid>409716</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-09-25 12:09:34 -0700</bug_when>
    <thetext>Comment on attachment 409716
Patch

Thanks for doing this!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1691974</commentid>
    <comment_count>5</comment_count>
      <attachid>409716</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-25 12:11:05 -0700</bug_when>
    <thetext>Comment on attachment 409716
Patch

I have a slightly better version of this patch that I will land, but only after seeing no failures on EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1691996</commentid>
    <comment_count>6</comment_count>
      <attachid>409723</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-25 12:54:08 -0700</bug_when>
    <thetext>Created attachment 409723
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1692017</commentid>
    <comment_count>7</comment_count>
      <attachid>409734</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-25 13:56:40 -0700</bug_when>
    <thetext>Created attachment 409734
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1692051</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-25 15:03:16 -0700</bug_when>
    <thetext>Running into trouble with other things that write into the file like these:

CONSOLE MESSSAGE:
PROMPT:

Won’t be hard to fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1692081</commentid>
    <comment_count>9</comment_count>
      <attachid>409753</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-25 16:09:36 -0700</bug_when>
    <thetext>Created attachment 409753
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1692136</commentid>
    <comment_count>10</comment_count>
      <attachid>409765</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-25 18:33:06 -0700</bug_when>
    <thetext>Created attachment 409765
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1692190</commentid>
    <comment_count>11</comment_count>
      <attachid>409779</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-26 08:35:46 -0700</bug_when>
    <thetext>Created attachment 409779
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1692208</commentid>
    <comment_count>12</comment_count>
      <attachid>409788</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-26 13:43:32 -0700</bug_when>
    <thetext>Created attachment 409788
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1692221</commentid>
    <comment_count>13</comment_count>
      <attachid>409794</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-26 14:58:34 -0700</bug_when>
    <thetext>Created attachment 409794
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1692229</commentid>
    <comment_count>14</comment_count>
      <attachid>409795</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-26 15:16:37 -0700</bug_when>
    <thetext>Created attachment 409795
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1692234</commentid>
    <comment_count>15</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-26 15:44:59 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #2)
&gt; Here’s the command line I will use for step 3:
&gt; 
&gt;     find . -name &apos;*-expected.txt&apos; | xargs perl -i -pe &apos;s/ +$//g&apos;

Fancier version that skips web archive files:

find . -name &apos;*-expected.txt&apos; | xargs awk &apos;/^CONSOLE MESSAGE:/ { next }; /^&lt;\?xml/ { nextfile }; { print FILENAME; nextfile }&apos; | xargs perl -i -pe &apos;s/ +$//g&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1692235</commentid>
    <comment_count>16</comment_count>
      <attachid>409796</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-26 15:46:54 -0700</bug_when>
    <thetext>Created attachment 409796
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1692245</commentid>
    <comment_count>17</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-26 16:23:29 -0700</bug_when>
    <thetext>Committed r267640: &lt;https://trac.webkit.org/changeset/267640&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1692246</commentid>
    <comment_count>18</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-09-26 16:24:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/69637010&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409716</attachid>
            <date>2020-09-25 12:06:51 -0700</date>
            <delta_ts>2020-09-26 15:16:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216944-20200925120650.patch</filename>
            <type>text/plain</type>
            <size>5153</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3NTc2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzg2ZTEzOTQwMjUyNGRmOTUzY2M4M2ExZDIzOTE1MjA4
MGZiYjk1ZS4uMDVjNzhjMGQ2ZDE1NzJmMjEwY2ZjYjU0YmJlNTdkZTQ2YWNlNDg3OSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIy
IEBACisyMDIwLTA5LTI1ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAg
ICBDaGFuZ2UgZHVtcEFzVGV4dCB0byBzdHJpcCB0cmFpbGluZyBzcGFjZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjk0NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFj
L0R1bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAoZHVtcEZyYW1lc0FzVGV4dCk6IFN0cmlwIHRy
YWlsaW5nIHNwYWNlcy4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRy
ZWUuY3BwOgorICAgICAgICAoZHVtcEZyYW1lc0FzVGV4dCk6IFN0cmlwIHRyYWlsaW5nIHNwYWNl
cy4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5OgorICAgICAgICAo
UG9ydC5kb190ZXh0X3Jlc3VsdHNfZGlmZmVyKTogU3RyaXAgdHJhaWxpbmcgc3BhY2VzIGZyb20g
ZXhwZWN0ZWQgdGV4dC4KKyAgICAgICAgUGxhbiBpcyB0byByZW1vdmUgdGhpcyBhZnRlciBzdHJp
cHBpbmcgdGhlIGFjdHVhbCBleHBlY3RlZC50eHQgZmlsZXMuCisKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHA6CisgICAgICAg
IChXVFI6OmR1bXBGcmFtZVRleHQpOiBTdHJpcCB0cmFpbGluZyBzcGFjZXMuCisKIDIwMjAtMDkt
MjUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVu
dCBkZWZhdWx0IGJlaGF2aW9yIGZvciBnZXRVc2VyTWVkaWEgcmVxdWVzdHMgaW4gY2FzZSB3aGVy
ZSB0aGVyZSBpcyBubyBkZWxlZ2F0ZSBzZXQKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1w
UmVuZGVyVHJlZS5tbQppbmRleCAwMTBlMjY4ODgzNWIwMTIyMGVjOTcyNjRkYjRiZDI0MTMyY2Y2
YThhLi5kY2E2ZGYwZDFlNjhlNzA4ZWVlYmIzOTEwMWM5ZWYxY2MxNWUzM2Y0IDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCkBAIC0xNTE0LDYgKzE1MTQsOSBA
QCBzdGF0aWMgTlNTdHJpbmcgKmR1bXBGcmFtZXNBc1RleHQoV2ViRnJhbWUgKmZyYW1lKQogICAg
ICAgICB9CiAgICAgfQogCisgICAgLy8gVG8ga2VlcCB0aGluZ3MgdGlkeSwgc3RyaXAgYWxsIHRy
YWlsaW5nIHNwYWNlczogdGhleSBhcmUgbm90IGEgbWVhbmluZ2Z1bCBwYXJ0IG9mIGR1bXBBc1Rl
eHQgdGVzdCBvdXRwdXQuCisgICAgW3Jlc3VsdCByZXBsYWNlT2NjdXJyZW5jZXNPZlN0cmluZzpA
IiArJCIgd2l0aFN0cmluZzpAIiIgb3B0aW9uczpOU1JlZ3VsYXJFeHByZXNzaW9uU2VhcmNoIHJh
bmdlOk5TTWFrZVJhbmdlKDAsIHJlc3VsdC5sZW5ndGgpXTsKKwogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJl
ZS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCmluZGV4
IDdhY2E5NDc4OTJiODlkMWRhNWY2MjM2ZGRhYTQ2NTNlYzQwYWYyMTIuLmFkN2E1YTBkNTUwNmU5
ZGU4N2I2NjNkMjk2OWI5NTJmNmEzMzZhMTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L0R1bXBSZW5kZXJUcmVlLmNwcApAQCAtNDg4LDYgKzQ4OCwxMSBAQCBzdGF0aWMgd3N0cmluZyBk
dW1wRnJhbWVzQXNUZXh0KElXZWJGcmFtZSogZnJhbWUpCiAgICAgICAgIH0KICAgICB9CiAKKyAg
ICAvLyBUbyBrZWVwIHRoaW5ncyB0aWR5LCBzdHJpcCBhbGwgdHJhaWxpbmcgc3BhY2VzOiB0aGV5
IGFyZSBub3QgYSBtZWFuaW5nZnVsIHBhcnQgb2YgZHVtcEFzVGV4dCB0ZXN0IG91dHB1dC4KKyAg
ICBzdGQ6OndzdHJpbmc6OnNpemVfdHlwZSBzcGFjZVBvc2l0aW9uOworICAgIHdoaWxlICgoc3Bh
Y2VQb3NpdGlvbiA9IHJlc3VsdC5maW5kKEwiIFxuIikpICE9IHN0ZDo6d3N0cmluZzo6bnBvcykK
KyAgICAgICAgcmVzdWx0LmVyYXNlKHNwYWNlUG9zaXRpb24sIDEpOworCiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2Uu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQppbmRleCA3NTU3MDk0NmM3
OTFjMmQyZDIxNjZmNjFhMmU5Y2RiOWQ0MzQ3YjMzLi5mZGViNTcwMzIwYzlkZjEyNGYyYjk4M2Y4
YTM5ODU2ODk3YmZhM2RiIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQv
YmFzZS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQpAQCAtMzAw
LDYgKzMwMCw4IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgICAgIHJldHVybiBGYWxz
ZQogCiAgICAgZGVmIGRvX3RleHRfcmVzdWx0c19kaWZmZXIoc2VsZiwgZXhwZWN0ZWRfdGV4dCwg
YWN0dWFsX3RleHQpOgorICAgICAgICAjIElnbm9yZSB0cmFpbGluZyBzcGFjZXMgaW4gZXhwZWN0
ZWQgZmlsZXMuIFdlIHdpbGwgcmVtb3ZlIHRoaXMgY29kZSBhZnRlciByZW1vdmluZyB0cmFpbGlu
ZyBzcGFjZXMgZnJvbSBhbGwgZXhwZWN0ZWQudHh0IGZpbGVzLgorICAgICAgICBleHBlY3RlZF90
ZXh0ID0gcmUuY29tcGlsZSgiICskIiwgcmUuTVVMVElMSU5FKS5zdWIoIiIsIGV4cGVjdGVkX3Rl
eHQpCiAgICAgICAgIHJldHVybiBleHBlY3RlZF90ZXh0ICE9IGFjdHVhbF90ZXh0CiAKICAgICBk
ZWYgZG9fYXVkaW9fcmVzdWx0c19kaWZmZXIoc2VsZiwgZXhwZWN0ZWRfYXVkaW8sIGFjdHVhbF9h
dWRpbyk6CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZS5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKaW5kZXggYjY0MGZmMjhhZTc1ZmQ2MTgwMDNi
ZjZmNzUyZTA1Y2IxMzA2MzY3Mi4uZmU5NTkxOGEzOTBkNWFjN2M0Y2YwNDVhMjI0YjQ0N2Q2YmEy
MTliNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZVBhZ2UuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcApAQCAtODM0LDE3ICs4MzQsMjIgQEAgc3Rh
dGljIGJvb2wgaGFzRG9jdW1lbnRFbGVtZW50KFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUpCiAgICAg
cmV0dXJuIEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgZG9jdW1lbnRFbGVtZW50VmFsdWUpOwog
fQogCi1zdGF0aWMgdm9pZCBkdW1wRnJhbWVUZXh0KFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFN0
cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIpCitzdGF0aWMgdm9pZCBkdW1wRnJhbWVUZXh0KFdL
QnVuZGxlRnJhbWVSZWYgZnJhbWUsIFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIpCiB7CiAgICAgLy8g
SWYgdGhlIGZyYW1lIGRvZXNuJ3QgaGF2ZSBhIGRvY3VtZW50IGVsZW1lbnQsIGl0cyBpbm5lciB0
ZXh0IHdpbGwgYmUgYW4gZW1wdHkgc3RyaW5nLCBzbwotICAgIC8vIHdlJ2xsIGVuZCB1cCBqdXN0
IGFwcGVuZGluZyBhIHNpbmdsZSBuZXdsaW5lIGJlbG93LiBCdXQgRHVtcFJlbmRlclRyZWUgZG9l
c24ndCBhcHBlbmQKLSAgICAvLyBhbnl0aGluZyBpbiB0aGlzIGNhc2UsIHNvIHdlIHNob3VsZG4n
dCBlaXRoZXIuCisgICAgLy8gd2UnbGwgZW5kIHVwIGp1c3QgYXBwZW5kaW5nIGEgc2luZ2xlIG5l
d2xpbmUgYmVsb3cuIFNpbmNlIER1bXBSZW5kZXJUcmVlIGRpZG4ndCBhcHBlbmQKKyAgICAvLyBh
bnl0aGluZyBpbiB0aGlzIGNhc2UsIHdlIGRlY2lkZWQgdG8gcHJlc2VydmUgdGhhdCBiZWhhdmlv
ci4KICAgICBpZiAoIWhhc0RvY3VtZW50RWxlbWVudChmcmFtZSkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB0ZXh0ID0gYWRvcHRXSyhXS0J1bmRsZUZy
YW1lQ29weUlubmVyVGV4dChmcmFtZSkpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHRvV1RG
U3RyaW5nKHRleHQpKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnXG4nKTsKKyAgICAvLyBU
byBrZWVwIHRoaW5ncyB0aWR5LCBzdHJpcCBhbGwgdHJhaWxpbmcgc3BhY2VzOiB0aGV5IGFyZSBu
b3QgYSBtZWFuaW5nZnVsIHBhcnQgb2YgZHVtcEFzVGV4dCB0ZXN0IG91dHB1dC4KKyAgICAvLyBC
cmVha2luZyB0aGUgc3RyaW5nIHVwIGludG8gbGluZXMgbGV0cyB1cyBlZmZpY2llbnRseSBzdHJp
cCBhbmQgaGFzIGEgc2lkZSBlZmZlY3Qgb2YgYWRkaW5nIGEgbmV3bGluZSBhZnRlciB0aGUgbGFz
dCBsaW5lLgorICAgIGF1dG8gdGV4dCA9IHRvV1RGU3RyaW5nKGFkb3B0V0soV0tCdW5kbGVGcmFt
ZUNvcHlJbm5lclRleHQoZnJhbWUpKSk7CisgICAgZm9yIChhdXRvIGxpbmUgOiBTdHJpbmdWaWV3
KHRleHQpLnNwbGl0QWxsb3dpbmdFbXB0eUVudHJpZXMoJ1xuJykpIHsKKyAgICAgICAgd2hpbGUg
KCFsaW5lLmlzRW1wdHkoKSAmJiBsaW5lW2xpbmUubGVuZ3RoKCkgLSAxXSA9PSAnICcpCisgICAg
ICAgICAgICBsaW5lID0gbGluZS5zdWJzdHJpbmcoMCwgbGluZS5sZW5ndGgoKSAtIDEpOworICAg
ICAgICBidWlsZGVyLmFwcGVuZChsaW5lLCAnXG4nKTsKKyAgICB9CiB9CiAKIHN0YXRpYyB2b2lk
IGR1bXBEZXNjZW5kYW50RnJhbWVzVGV4dChXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBTdHJpbmdC
dWlsZGVyJiBzdHJpbmdCdWlsZGVyKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409723</attachid>
            <date>2020-09-25 12:54:08 -0700</date>
            <delta_ts>2020-09-25 14:01:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216944-20200925125407.patch</filename>
            <type>text/plain</type>
            <size>8158</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3NTc2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzg2ZTEzOTQwMjUyNGRmOTUzY2M4M2ExZDIzOTE1MjA4
MGZiYjk1ZS4uODQyNWU0NGZlNjlmOTZhMzY0MzcyODE5NmFhMGNmM2NjNTY2NGI3YyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5
IEBACisyMDIwLTA5LTI1ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAg
ICBDaGFuZ2UgZHVtcEFzVGV4dCB0byBzdHJpcCB0cmFpbGluZyBzcGFjZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjk0NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IEFsYW4gQnVqdGFzLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1
bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAoZHVtcEZyYW1lc0FzVGV4dCk6IFN0cmlwIHRyYWls
aW5nIHNwYWNlcy4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRnJhbWVMb2FkRGVsZWdh
dGUubW06CisgICAgICAgICgtW0ZyYW1lTG9hZERlbGVnYXRlIHdlYlZpZXc6d2lsbFBlcmZvcm1D
bGllbnRSZWRpcmVjdFRvVVJMOmRlbGF5OmZpcmVEYXRlOmZvckZyYW1lOl0pOgorICAgICAgICBE
b24ndCBhZGQgdHJhaWxpbmcgc3BhY2UuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4v
RHVtcFJlbmRlclRyZWUuY3BwOgorICAgICAgICAoZHVtcEZyYW1lc0FzVGV4dCk6IFN0cmlwIHRy
YWlsaW5nIHNwYWNlcy4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVs
ZWdhdGUuY3BwOgorICAgICAgICAoRnJhbWVMb2FkRGVsZWdhdGU6OndpbGxQZXJmb3JtQ2xpZW50
UmVkaXJlY3RUb1VSTCk6IERvbid0IGFkZCB0cmFpbGluZyBzcGFjZS4KKworICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5OgorICAgICAgICAoUG9ydC5kb190ZXh0X3Jlc3Vs
dHNfZGlmZmVyKTogU3RyaXAgdHJhaWxpbmcgc3BhY2VzIGZyb20gZXhwZWN0ZWQgdGV4dC4KKyAg
ICAgICAgUGxhbiBpcyB0byByZW1vdmUgdGhpcyBhZnRlciBzdHJpcHBpbmcgdGhlIGFjdHVhbCBl
eHBlY3RlZC50eHQgZmlsZXMuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXVFI6OmR1bXBGcmFtZVRl
eHQpOiBTdHJpcCB0cmFpbGluZyBzcGFjZXMuCisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxl
UGFnZTo6d2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lKTogRG9uJ3QgYWRkIHRyYWls
aW5nIHNwYWNlLgorCiAyMDIwLTA5LTI1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KIAogICAgICAgICBJbXBsZW1lbnQgZGVmYXVsdCBiZWhhdmlvciBmb3IgZ2V0VXNlck1lZGlh
IHJlcXVlc3RzIGluIGNhc2Ugd2hlcmUgdGhlcmUgaXMgbm8gZGVsZWdhdGUgc2V0CmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0gYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KaW5kZXggMDEwZTI2ODg4MzViMDEy
MjBlYzk3MjY0ZGI0YmQyNDEzMmNmNmE4YS4uZGNhNmRmMGQxZTY4ZTcwOGVlZWJiMzkxMDFjOWVm
MWNjMTVlMzNmNCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5k
ZXJUcmVlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5t
bQpAQCAtMTUxNCw2ICsxNTE0LDkgQEAgc3RhdGljIE5TU3RyaW5nICpkdW1wRnJhbWVzQXNUZXh0
KFdlYkZyYW1lICpmcmFtZSkKICAgICAgICAgfQogICAgIH0KIAorICAgIC8vIFRvIGtlZXAgdGhp
bmdzIHRpZHksIHN0cmlwIGFsbCB0cmFpbGluZyBzcGFjZXM6IHRoZXkgYXJlIG5vdCBhIG1lYW5p
bmdmdWwgcGFydCBvZiBkdW1wQXNUZXh0IHRlc3Qgb3V0cHV0LgorICAgIFtyZXN1bHQgcmVwbGFj
ZU9jY3VycmVuY2VzT2ZTdHJpbmc6QCIgKyQiIHdpdGhTdHJpbmc6QCIiIG9wdGlvbnM6TlNSZWd1
bGFyRXhwcmVzc2lvblNlYXJjaCByYW5nZTpOU01ha2VSYW5nZSgwLCByZXN1bHQubGVuZ3RoKV07
CisKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvRnJhbWVMb2FkRGVsZWdhdGUubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
RnJhbWVMb2FkRGVsZWdhdGUubW0KaW5kZXggYjM4ZjRkMzdmMDY3MTUzNTFjODlhODZmZTgyMDhi
NzZmMjE1YWE3ZS4uMzY3MTQ5MzlmZGEwYTU2NzQ5Yzc5OTg4NmExZWE0Mzg5MjE4OWE0YSAxMDA2
NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0ZyYW1lTG9hZERlbGVnYXRlLm1tCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9GcmFtZUxvYWREZWxlZ2F0ZS5tbQpAQCAtNDEy
LDcgKzQxMiw3IEBAIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBkaWRDaGFuZ2VM
b2NhdGlvbldpdGhpblBhZ2VGb3JGcmFtZTooV2ViRnJhbWUKIC0gKHZvaWQpd2ViVmlldzooV2Vi
VmlldyAqKXNlbmRlciB3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkw6KE5TVVJMICopVVJM
IGRlbGF5OihOU1RpbWVJbnRlcnZhbClzZWNvbmRzIGZpcmVEYXRlOihOU0RhdGUgKilkYXRlIGZv
ckZyYW1lOihXZWJGcmFtZSAqKWZyYW1lCiB7CiAgICAgaWYgKCFkb25lICYmIGdUZXN0UnVubmVy
LT5kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCkpIHsKLSAgICAgICAgTlNTdHJpbmcgKnN0cmluZyA9
IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgLSB3aWxsUGVyZm9ybUNsaWVudFJlZGly
ZWN0VG9VUkw6ICVAICIsIFtmcmFtZSBfZHJ0X2Rlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVz
dWx0XSwgW1VSTCBfZHJ0X2Rlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0XV07CisgICAg
ICAgIE5TU3RyaW5nICpzdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAIC0g
d2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdFRvVVJMOiAlQCIsIFtmcmFtZSBfZHJ0X2Rlc2NyaXB0
aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0XSwgW1VSTCBfZHJ0X2Rlc2NyaXB0aW9uU3VpdGFibGVG
b3JUZXN0UmVzdWx0XV07CiAgICAgICAgIHByaW50ZiAoIiVzXG4iLCBbc3RyaW5nIFVURjhTdHJp
bmddKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1w
UmVuZGVyVHJlZS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUu
Y3BwCmluZGV4IDdhY2E5NDc4OTJiODlkMWRhNWY2MjM2ZGRhYTQ2NTNlYzQwYWYyMTIuLmFkN2E1
YTBkNTUwNmU5ZGU4N2I2NjNkMjk2OWI5NTJmNmEzMzZhMTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcApAQCAtNDg4LDYgKzQ4OCwxMSBAQCBzdGF0aWMg
d3N0cmluZyBkdW1wRnJhbWVzQXNUZXh0KElXZWJGcmFtZSogZnJhbWUpCiAgICAgICAgIH0KICAg
ICB9CiAKKyAgICAvLyBUbyBrZWVwIHRoaW5ncyB0aWR5LCBzdHJpcCBhbGwgdHJhaWxpbmcgc3Bh
Y2VzOiB0aGV5IGFyZSBub3QgYSBtZWFuaW5nZnVsIHBhcnQgb2YgZHVtcEFzVGV4dCB0ZXN0IG91
dHB1dC4KKyAgICBzdGQ6OndzdHJpbmc6OnNpemVfdHlwZSBzcGFjZVBvc2l0aW9uOworICAgIHdo
aWxlICgoc3BhY2VQb3NpdGlvbiA9IHJlc3VsdC5maW5kKEwiIFxuIikpICE9IHN0ZDo6d3N0cmlu
Zzo6bnBvcykKKyAgICAgICAgcmVzdWx0LmVyYXNlKHNwYWNlUG9zaXRpb24sIDEpOworCiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L0ZyYW1lTG9hZERlbGVnYXRlLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxv
YWREZWxlZ2F0ZS5jcHAKaW5kZXggNzU1YmVkMTZmNjBlZGMwMTExNTUyMWUxNThjMGRiZjA1NTg4
YmY4NC4uZmQ3N2FkMWMzOTI2MzhkYTk0MTQzZWU3ZDVhODIxZTY5NDEwMjMxMyAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmNwcAorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuY3BwCkBAIC0yOTIsNyAr
MjkyLDcgQEAgSFJFU1VMVCBGcmFtZUxvYWREZWxlZ2F0ZTo6ZGlkRmFpbExvYWRXaXRoRXJyb3Io
X0luX29wdF8gSVdlYlZpZXcqLCBfSW5fb3B0XyBJV2UKIEhSRVNVTFQgRnJhbWVMb2FkRGVsZWdh
dGU6OndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VSTChfSW5fb3B0XyBJV2ViVmlldyosIF9J
bl8gQlNUUiB1cmwsIGRvdWJsZSAvKmRlbGF5U2Vjb25kcyovLCBEQVRFIC8qZmlyZURhdGUqLywg
X0luX29wdF8gSVdlYkZyYW1lKiBmcmFtZSkKIHsKICAgICBpZiAoIWRvbmUgJiYgZ1Rlc3RSdW5u
ZXItPmR1bXBGcmFtZUxvYWRDYWxsYmFja3MoKSkKLSAgICAgICAgZnByaW50Zih0ZXN0UmVzdWx0
LCAiJXMgLSB3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkw6ICVTIFxuIiwgZGVzY3JpcHRp
b25TdWl0YWJsZUZvclRlc3RSZXN1bHQoZnJhbWUpLmNfc3RyKCksCisgICAgICAgIGZwcmludGYo
dGVzdFJlc3VsdCwgIiVzIC0gd2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdFRvVVJMOiAlU1xuIiwg
ZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQoZnJhbWUpLmNfc3RyKCksCiAgICAgICAg
ICAgICAgICAgdXJsU3VpdGFibGVGb3JUZXN0UmVzdWx0KHN0ZDo6d3N0cmluZyh1cmwsIDo6U3lz
U3RyaW5nTGVuKHVybCkpKS5jX3N0cigpKTsKIAogICAgIHJldHVybiBTX09LOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3BvcnQvYmFzZS5weQppbmRleCA3NTU3MDk0NmM3OTFjMmQyZDIxNjZmNjFhMmU5Y2Ri
OWQ0MzQ3YjMzLi5mZGViNTcwMzIwYzlkZjEyNGYyYjk4M2Y4YTM5ODU2ODk3YmZhM2RiIDEwMDY0
NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQorKysgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQpAQCAtMzAwLDYgKzMwMCw4IEBAIGNsYXNzIFBv
cnQob2JqZWN0KToKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogCiAgICAgZGVmIGRvX3RleHRf
cmVzdWx0c19kaWZmZXIoc2VsZiwgZXhwZWN0ZWRfdGV4dCwgYWN0dWFsX3RleHQpOgorICAgICAg
ICAjIElnbm9yZSB0cmFpbGluZyBzcGFjZXMgaW4gZXhwZWN0ZWQgZmlsZXMuIFdlIHdpbGwgcmVt
b3ZlIHRoaXMgY29kZSBhZnRlciByZW1vdmluZyB0cmFpbGluZyBzcGFjZXMgZnJvbSBhbGwgZXhw
ZWN0ZWQudHh0IGZpbGVzLgorICAgICAgICBleHBlY3RlZF90ZXh0ID0gcmUuY29tcGlsZSgiICsk
IiwgcmUuTVVMVElMSU5FKS5zdWIoIiIsIGV4cGVjdGVkX3RleHQpCiAgICAgICAgIHJldHVybiBl
eHBlY3RlZF90ZXh0ICE9IGFjdHVhbF90ZXh0CiAKICAgICBkZWYgZG9fYXVkaW9fcmVzdWx0c19k
aWZmZXIoc2VsZiwgZXhwZWN0ZWRfYXVkaW8sIGFjdHVhbF9hdWRpbyk6CmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5j
cHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
UGFnZS5jcHAKaW5kZXggYjY0MGZmMjhhZTc1ZmQ2MTgwMDNiZjZmNzUyZTA1Y2IxMzA2MzY3Mi4u
MDdkY2VhM2FhZjBiMjZkMWFmNzJkYjEzNDk1ZjNjY2E2ZTkwNWJlMyAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3Bw
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlLmNwcApAQCAtODM0LDE3ICs4MzQsMjIgQEAgc3RhdGljIGJvb2wgaGFzRG9jdW1lbnRF
bGVtZW50KFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUpCiAgICAgcmV0dXJuIEpTVmFsdWVUb0Jvb2xl
YW4oY29udGV4dCwgZG9jdW1lbnRFbGVtZW50VmFsdWUpOwogfQogCi1zdGF0aWMgdm9pZCBkdW1w
RnJhbWVUZXh0KFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1
aWxkZXIpCitzdGF0aWMgdm9pZCBkdW1wRnJhbWVUZXh0KFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUs
IFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIpCiB7CiAgICAgLy8gSWYgdGhlIGZyYW1lIGRvZXNuJ3Qg
aGF2ZSBhIGRvY3VtZW50IGVsZW1lbnQsIGl0cyBpbm5lciB0ZXh0IHdpbGwgYmUgYW4gZW1wdHkg
c3RyaW5nLCBzbwotICAgIC8vIHdlJ2xsIGVuZCB1cCBqdXN0IGFwcGVuZGluZyBhIHNpbmdsZSBu
ZXdsaW5lIGJlbG93LiBCdXQgRHVtcFJlbmRlclRyZWUgZG9lc24ndCBhcHBlbmQKLSAgICAvLyBh
bnl0aGluZyBpbiB0aGlzIGNhc2UsIHNvIHdlIHNob3VsZG4ndCBlaXRoZXIuCisgICAgLy8gd2Un
bGwgZW5kIHVwIGp1c3QgYXBwZW5kaW5nIGEgc2luZ2xlIG5ld2xpbmUgYmVsb3cuIFNpbmNlIER1
bXBSZW5kZXJUcmVlIGRpZG4ndCBhcHBlbmQKKyAgICAvLyBhbnl0aGluZyBpbiB0aGlzIGNhc2Us
IHdlIGRlY2lkZWQgdG8gcHJlc2VydmUgdGhhdCBiZWhhdmlvci4KICAgICBpZiAoIWhhc0RvY3Vt
ZW50RWxlbWVudChmcmFtZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdLUmV0YWluUHRyPFdL
U3RyaW5nUmVmPiB0ZXh0ID0gYWRvcHRXSyhXS0J1bmRsZUZyYW1lQ29weUlubmVyVGV4dChmcmFt
ZSkpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHRvV1RGU3RyaW5nKHRleHQpKTsKLSAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgnXG4nKTsKKyAgICAvLyBUbyBrZWVwIHRoaW5ncyB0aWR5LCBz
dHJpcCBhbGwgdHJhaWxpbmcgc3BhY2VzOiB0aGV5IGFyZSBub3QgYSBtZWFuaW5nZnVsIHBhcnQg
b2YgZHVtcEFzVGV4dCB0ZXN0IG91dHB1dC4KKyAgICAvLyBCcmVha2luZyB0aGUgc3RyaW5nIHVw
IGludG8gbGluZXMgbGV0cyB1cyBlZmZpY2llbnRseSBzdHJpcCBhbmQgaGFzIGEgc2lkZSBlZmZl
Y3Qgb2YgYWRkaW5nIGEgbmV3bGluZSBhZnRlciB0aGUgbGFzdCBsaW5lLgorICAgIGF1dG8gdGV4
dCA9IHRvV1RGU3RyaW5nKGFkb3B0V0soV0tCdW5kbGVGcmFtZUNvcHlJbm5lclRleHQoZnJhbWUp
KSk7CisgICAgZm9yIChhdXRvIGxpbmUgOiBTdHJpbmdWaWV3KHRleHQpLnNwbGl0QWxsb3dpbmdF
bXB0eUVudHJpZXMoJ1xuJykpIHsKKyAgICAgICAgd2hpbGUgKGxpbmUuZW5kc1dpdGgoJyAnKSkK
KyAgICAgICAgICAgIGxpbmUgPSBsaW5lLnN1YnN0cmluZygwLCBsaW5lLmxlbmd0aCgpIC0gMSk7
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGxpbmUsICdcbicpOworICAgIH0KIH0KIAogc3RhdGlj
IHZvaWQgZHVtcERlc2NlbmRhbnRGcmFtZXNUZXh0KFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFN0
cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIpCkBAIC0xMDU2LDkgKzEwNjEsNyBAQCB2b2lkIElu
amVjdGVkQnVuZGxlUGFnZTo6d2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lKFdLQnVu
ZGxlUGFnZVJlZiwgV0tCdQogCiAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwogICAg
IGR1bXBGcmFtZURlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KGZyYW1lLCBzdHJpbmdC
dWlsZGVyKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiAtIHdpbGxQZXJmb3Jt
Q2xpZW50UmVkaXJlY3RUb1VSTDogIik7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQocGF0aFN1
aXRhYmxlRm9yVGVzdFJlc3VsdCh1cmwpKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVy
YWwoIiBcbiIpOworICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgLSB3aWxsUGVyZm9ybUNsaWVu
dFJlZGlyZWN0VG9VUkw6ICIsIHBhdGhTdWl0YWJsZUZvclRlc3RSZXN1bHQodXJsKSwgJ1xuJyk7
CiAgICAgaW5qZWN0ZWRCdW5kbGUub3V0cHV0VGV4dChzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkp
OwogfQogCg==
</data>
<flag name="commit-queue"
          id="425524"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409734</attachid>
            <date>2020-09-25 13:56:40 -0700</date>
            <delta_ts>2020-09-25 16:10:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216944-20200925135639.patch</filename>
            <type>text/plain</type>
            <size>8296</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3NTc2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzg2ZTEzOTQwMjUyNGRmOTUzY2M4M2ExZDIzOTE1MjA4
MGZiYjk1ZS4uODQyNWU0NGZlNjlmOTZhMzY0MzcyODE5NmFhMGNmM2NjNTY2NGI3YyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5
IEBACisyMDIwLTA5LTI1ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAg
ICBDaGFuZ2UgZHVtcEFzVGV4dCB0byBzdHJpcCB0cmFpbGluZyBzcGFjZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjk0NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IEFsYW4gQnVqdGFzLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1
bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAoZHVtcEZyYW1lc0FzVGV4dCk6IFN0cmlwIHRyYWls
aW5nIHNwYWNlcy4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRnJhbWVMb2FkRGVsZWdh
dGUubW06CisgICAgICAgICgtW0ZyYW1lTG9hZERlbGVnYXRlIHdlYlZpZXc6d2lsbFBlcmZvcm1D
bGllbnRSZWRpcmVjdFRvVVJMOmRlbGF5OmZpcmVEYXRlOmZvckZyYW1lOl0pOgorICAgICAgICBE
b24ndCBhZGQgdHJhaWxpbmcgc3BhY2UuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4v
RHVtcFJlbmRlclRyZWUuY3BwOgorICAgICAgICAoZHVtcEZyYW1lc0FzVGV4dCk6IFN0cmlwIHRy
YWlsaW5nIHNwYWNlcy4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVs
ZWdhdGUuY3BwOgorICAgICAgICAoRnJhbWVMb2FkRGVsZWdhdGU6OndpbGxQZXJmb3JtQ2xpZW50
UmVkaXJlY3RUb1VSTCk6IERvbid0IGFkZCB0cmFpbGluZyBzcGFjZS4KKworICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5OgorICAgICAgICAoUG9ydC5kb190ZXh0X3Jlc3Vs
dHNfZGlmZmVyKTogU3RyaXAgdHJhaWxpbmcgc3BhY2VzIGZyb20gZXhwZWN0ZWQgdGV4dC4KKyAg
ICAgICAgUGxhbiBpcyB0byByZW1vdmUgdGhpcyBhZnRlciBzdHJpcHBpbmcgdGhlIGFjdHVhbCBl
eHBlY3RlZC50eHQgZmlsZXMuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXVFI6OmR1bXBGcmFtZVRl
eHQpOiBTdHJpcCB0cmFpbGluZyBzcGFjZXMuCisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxl
UGFnZTo6d2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lKTogRG9uJ3QgYWRkIHRyYWls
aW5nIHNwYWNlLgorCiAyMDIwLTA5LTI1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KIAogICAgICAgICBJbXBsZW1lbnQgZGVmYXVsdCBiZWhhdmlvciBmb3IgZ2V0VXNlck1lZGlh
IHJlcXVlc3RzIGluIGNhc2Ugd2hlcmUgdGhlcmUgaXMgbm8gZGVsZWdhdGUgc2V0CmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0gYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KaW5kZXggMDEwZTI2ODg4MzViMDEy
MjBlYzk3MjY0ZGI0YmQyNDEzMmNmNmE4YS4uM2YxNmRkNjcwMTNlYTcxNzVlM2U1ZDU0Mzk3ZDA3
MTE1YTc3ZjU2ZCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5k
ZXJUcmVlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5t
bQpAQCAtMTUxNCw2ICsxNTE0LDEwIEBAIHN0YXRpYyBOU1N0cmluZyAqZHVtcEZyYW1lc0FzVGV4
dChXZWJGcmFtZSAqZnJhbWUpCiAgICAgICAgIH0KICAgICB9CiAKKyAgICAvLyBUbyBrZWVwIHRo
aW5ncyB0aWR5LCBzdHJpcCBhbGwgdHJhaWxpbmcgc3BhY2VzOiB0aGV5IGFyZSBub3QgYSBtZWFu
aW5nZnVsIHBhcnQgb2YgZHVtcEFzVGV4dCB0ZXN0IG91dHB1dC4KKyAgICBbcmVzdWx0IHJlcGxh
Y2VPY2N1cnJlbmNlc09mU3RyaW5nOkAiICtcbiIgd2l0aFN0cmluZzpAIlxuIiBvcHRpb25zOk5T
UmVndWxhckV4cHJlc3Npb25TZWFyY2ggcmFuZ2U6TlNNYWtlUmFuZ2UoMCwgcmVzdWx0Lmxlbmd0
aCldOworICAgIFtyZXN1bHQgcmVwbGFjZU9jY3VycmVuY2VzT2ZTdHJpbmc6QCIgKyQiIHdpdGhT
dHJpbmc6QCIiIG9wdGlvbnM6TlNSZWd1bGFyRXhwcmVzc2lvblNlYXJjaCByYW5nZTpOU01ha2VS
YW5nZSgwLCByZXN1bHQubGVuZ3RoKV07CisKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRnJhbWVMb2FkRGVsZWdhdGUubW0gYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRnJhbWVMb2FkRGVsZWdhdGUubW0KaW5kZXggYjM4ZjRk
MzdmMDY3MTUzNTFjODlhODZmZTgyMDhiNzZmMjE1YWE3ZS4uMzY3MTQ5MzlmZGEwYTU2NzQ5Yzc5
OTg4NmExZWE0Mzg5MjE4OWE0YSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0ZyYW1lTG9hZERlbGVnYXRlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9GcmFt
ZUxvYWREZWxlZ2F0ZS5tbQpAQCAtNDEyLDcgKzQxMiw3IEBAIC0gKHZvaWQpd2ViVmlldzooV2Vi
VmlldyAqKXNlbmRlciBkaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2VGb3JGcmFtZTooV2ViRnJh
bWUKIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciB3aWxsUGVyZm9ybUNsaWVudFJl
ZGlyZWN0VG9VUkw6KE5TVVJMICopVVJMIGRlbGF5OihOU1RpbWVJbnRlcnZhbClzZWNvbmRzIGZp
cmVEYXRlOihOU0RhdGUgKilkYXRlIGZvckZyYW1lOihXZWJGcmFtZSAqKWZyYW1lCiB7CiAgICAg
aWYgKCFkb25lICYmIGdUZXN0UnVubmVyLT5kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCkpIHsKLSAg
ICAgICAgTlNTdHJpbmcgKnN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAg
LSB3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkw6ICVAICIsIFtmcmFtZSBfZHJ0X2Rlc2Ny
aXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0XSwgW1VSTCBfZHJ0X2Rlc2NyaXB0aW9uU3VpdGFi
bGVGb3JUZXN0UmVzdWx0XV07CisgICAgICAgIE5TU3RyaW5nICpzdHJpbmcgPSBbTlNTdHJpbmcg
c3RyaW5nV2l0aEZvcm1hdDpAIiVAIC0gd2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdFRvVVJMOiAl
QCIsIFtmcmFtZSBfZHJ0X2Rlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0XSwgW1VSTCBf
ZHJ0X2Rlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0XV07CiAgICAgICAgIHByaW50ZiAo
IiVzXG4iLCBbc3RyaW5nIFVURjhTdHJpbmddKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCmluZGV4IDdhY2E5NDc4OTJiODlkMWRhNWY2MjM2
ZGRhYTQ2NTNlYzQwYWYyMTIuLmFkN2E1YTBkNTUwNmU5ZGU4N2I2NjNkMjk2OWI5NTJmNmEzMzZh
MTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5j
cHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcApAQCAt
NDg4LDYgKzQ4OCwxMSBAQCBzdGF0aWMgd3N0cmluZyBkdW1wRnJhbWVzQXNUZXh0KElXZWJGcmFt
ZSogZnJhbWUpCiAgICAgICAgIH0KICAgICB9CiAKKyAgICAvLyBUbyBrZWVwIHRoaW5ncyB0aWR5
LCBzdHJpcCBhbGwgdHJhaWxpbmcgc3BhY2VzOiB0aGV5IGFyZSBub3QgYSBtZWFuaW5nZnVsIHBh
cnQgb2YgZHVtcEFzVGV4dCB0ZXN0IG91dHB1dC4KKyAgICBzdGQ6OndzdHJpbmc6OnNpemVfdHlw
ZSBzcGFjZVBvc2l0aW9uOworICAgIHdoaWxlICgoc3BhY2VQb3NpdGlvbiA9IHJlc3VsdC5maW5k
KEwiIFxuIikpICE9IHN0ZDo6d3N0cmluZzo6bnBvcykKKyAgICAgICAgcmVzdWx0LmVyYXNlKHNw
YWNlUG9zaXRpb24sIDEpOworCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmNwcCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5jcHAKaW5kZXggNzU1YmVkMTZmNjBl
ZGMwMTExNTUyMWUxNThjMGRiZjA1NTg4YmY4NC4uZmQ3N2FkMWMzOTI2MzhkYTk0MTQzZWU3ZDVh
ODIxZTY5NDEwMjMxMyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1l
TG9hZERlbGVnYXRlLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2Fk
RGVsZWdhdGUuY3BwCkBAIC0yOTIsNyArMjkyLDcgQEAgSFJFU1VMVCBGcmFtZUxvYWREZWxlZ2F0
ZTo6ZGlkRmFpbExvYWRXaXRoRXJyb3IoX0luX29wdF8gSVdlYlZpZXcqLCBfSW5fb3B0XyBJV2UK
IEhSRVNVTFQgRnJhbWVMb2FkRGVsZWdhdGU6OndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VS
TChfSW5fb3B0XyBJV2ViVmlldyosIF9Jbl8gQlNUUiB1cmwsIGRvdWJsZSAvKmRlbGF5U2Vjb25k
cyovLCBEQVRFIC8qZmlyZURhdGUqLywgX0luX29wdF8gSVdlYkZyYW1lKiBmcmFtZSkKIHsKICAg
ICBpZiAoIWRvbmUgJiYgZ1Rlc3RSdW5uZXItPmR1bXBGcmFtZUxvYWRDYWxsYmFja3MoKSkKLSAg
ICAgICAgZnByaW50Zih0ZXN0UmVzdWx0LCAiJXMgLSB3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0
VG9VUkw6ICVTIFxuIiwgZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQoZnJhbWUpLmNf
c3RyKCksCisgICAgICAgIGZwcmludGYodGVzdFJlc3VsdCwgIiVzIC0gd2lsbFBlcmZvcm1DbGll
bnRSZWRpcmVjdFRvVVJMOiAlU1xuIiwgZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQo
ZnJhbWUpLmNfc3RyKCksCiAgICAgICAgICAgICAgICAgdXJsU3VpdGFibGVGb3JUZXN0UmVzdWx0
KHN0ZDo6d3N0cmluZyh1cmwsIDo6U3lzU3RyaW5nTGVuKHVybCkpKS5jX3N0cigpKTsKIAogICAg
IHJldHVybiBTX09LOwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jh
c2UucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQppbmRleCA3NTU3MDk0
NmM3OTFjMmQyZDIxNjZmNjFhMmU5Y2RiOWQ0MzQ3YjMzLi5mZGViNTcwMzIwYzlkZjEyNGYyYjk4
M2Y4YTM5ODU2ODk3YmZhM2RiIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Bv
cnQvYmFzZS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQpAQCAt
MzAwLDYgKzMwMCw4IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgICAgIHJldHVybiBG
YWxzZQogCiAgICAgZGVmIGRvX3RleHRfcmVzdWx0c19kaWZmZXIoc2VsZiwgZXhwZWN0ZWRfdGV4
dCwgYWN0dWFsX3RleHQpOgorICAgICAgICAjIElnbm9yZSB0cmFpbGluZyBzcGFjZXMgaW4gZXhw
ZWN0ZWQgZmlsZXMuIFdlIHdpbGwgcmVtb3ZlIHRoaXMgY29kZSBhZnRlciByZW1vdmluZyB0cmFp
bGluZyBzcGFjZXMgZnJvbSBhbGwgZXhwZWN0ZWQudHh0IGZpbGVzLgorICAgICAgICBleHBlY3Rl
ZF90ZXh0ID0gcmUuY29tcGlsZSgiICskIiwgcmUuTVVMVElMSU5FKS5zdWIoIiIsIGV4cGVjdGVk
X3RleHQpCiAgICAgICAgIHJldHVybiBleHBlY3RlZF90ZXh0ICE9IGFjdHVhbF90ZXh0CiAKICAg
ICBkZWYgZG9fYXVkaW9fcmVzdWx0c19kaWZmZXIoc2VsZiwgZXhwZWN0ZWRfYXVkaW8sIGFjdHVh
bF9hdWRpbyk6CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKaW5kZXggYjY0MGZmMjhhZTc1ZmQ2MTgw
MDNiZjZmNzUyZTA1Y2IxMzA2MzY3Mi4uMDdkY2VhM2FhZjBiMjZkMWFmNzJkYjEzNDk1ZjNjY2E2
ZTkwNWJlMyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcApAQCAtODM0LDE3ICs4MzQsMjIgQEAg
c3RhdGljIGJvb2wgaGFzRG9jdW1lbnRFbGVtZW50KFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUpCiAg
ICAgcmV0dXJuIEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgZG9jdW1lbnRFbGVtZW50VmFsdWUp
OwogfQogCi1zdGF0aWMgdm9pZCBkdW1wRnJhbWVUZXh0KFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUs
IFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIpCitzdGF0aWMgdm9pZCBkdW1wRnJhbWVUZXh0
KFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIpCiB7CiAgICAg
Ly8gSWYgdGhlIGZyYW1lIGRvZXNuJ3QgaGF2ZSBhIGRvY3VtZW50IGVsZW1lbnQsIGl0cyBpbm5l
ciB0ZXh0IHdpbGwgYmUgYW4gZW1wdHkgc3RyaW5nLCBzbwotICAgIC8vIHdlJ2xsIGVuZCB1cCBq
dXN0IGFwcGVuZGluZyBhIHNpbmdsZSBuZXdsaW5lIGJlbG93LiBCdXQgRHVtcFJlbmRlclRyZWUg
ZG9lc24ndCBhcHBlbmQKLSAgICAvLyBhbnl0aGluZyBpbiB0aGlzIGNhc2UsIHNvIHdlIHNob3Vs
ZG4ndCBlaXRoZXIuCisgICAgLy8gd2UnbGwgZW5kIHVwIGp1c3QgYXBwZW5kaW5nIGEgc2luZ2xl
IG5ld2xpbmUgYmVsb3cuIFNpbmNlIER1bXBSZW5kZXJUcmVlIGRpZG4ndCBhcHBlbmQKKyAgICAv
LyBhbnl0aGluZyBpbiB0aGlzIGNhc2UsIHdlIGRlY2lkZWQgdG8gcHJlc2VydmUgdGhhdCBiZWhh
dmlvci4KICAgICBpZiAoIWhhc0RvY3VtZW50RWxlbWVudChmcmFtZSkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB0ZXh0ID0gYWRvcHRXSyhXS0J1bmRs
ZUZyYW1lQ29weUlubmVyVGV4dChmcmFtZSkpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHRv
V1RGU3RyaW5nKHRleHQpKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnXG4nKTsKKyAgICAv
LyBUbyBrZWVwIHRoaW5ncyB0aWR5LCBzdHJpcCBhbGwgdHJhaWxpbmcgc3BhY2VzOiB0aGV5IGFy
ZSBub3QgYSBtZWFuaW5nZnVsIHBhcnQgb2YgZHVtcEFzVGV4dCB0ZXN0IG91dHB1dC4KKyAgICAv
LyBCcmVha2luZyB0aGUgc3RyaW5nIHVwIGludG8gbGluZXMgbGV0cyB1cyBlZmZpY2llbnRseSBz
dHJpcCBhbmQgaGFzIGEgc2lkZSBlZmZlY3Qgb2YgYWRkaW5nIGEgbmV3bGluZSBhZnRlciB0aGUg
bGFzdCBsaW5lLgorICAgIGF1dG8gdGV4dCA9IHRvV1RGU3RyaW5nKGFkb3B0V0soV0tCdW5kbGVG
cmFtZUNvcHlJbm5lclRleHQoZnJhbWUpKSk7CisgICAgZm9yIChhdXRvIGxpbmUgOiBTdHJpbmdW
aWV3KHRleHQpLnNwbGl0QWxsb3dpbmdFbXB0eUVudHJpZXMoJ1xuJykpIHsKKyAgICAgICAgd2hp
bGUgKGxpbmUuZW5kc1dpdGgoJyAnKSkKKyAgICAgICAgICAgIGxpbmUgPSBsaW5lLnN1YnN0cmlu
ZygwLCBsaW5lLmxlbmd0aCgpIC0gMSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGxpbmUsICdc
bicpOworICAgIH0KIH0KIAogc3RhdGljIHZvaWQgZHVtcERlc2NlbmRhbnRGcmFtZXNUZXh0KFdL
QnVuZGxlRnJhbWVSZWYgZnJhbWUsIFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIpCkBAIC0x
MDU2LDkgKzEwNjEsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6d2lsbFBlcmZvcm1DbGll
bnRSZWRpcmVjdEZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiwgV0tCdQogCiAgICAgU3RyaW5nQnVp
bGRlciBzdHJpbmdCdWlsZGVyOwogICAgIGR1bXBGcmFtZURlc2NyaXB0aW9uU3VpdGFibGVGb3JU
ZXN0UmVzdWx0KGZyYW1lLCBzdHJpbmdCdWlsZGVyKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZExpdGVyYWwoIiAtIHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VSTDogIik7Ci0gICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQocGF0aFN1aXRhYmxlRm9yVGVzdFJlc3VsdCh1cmwpKTsKLSAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBcbiIpOworICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKCIgLSB3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkw6ICIsIHBhdGhTdWl0YWJsZUZv
clRlc3RSZXN1bHQodXJsKSwgJ1xuJyk7CiAgICAgaW5qZWN0ZWRCdW5kbGUub3V0cHV0VGV4dChz
dHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpOwogfQogCg==
</data>
<flag name="commit-queue"
          id="425551"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409753</attachid>
            <date>2020-09-25 16:09:36 -0700</date>
            <delta_ts>2020-09-25 21:01:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216944-20200925160935.patch</filename>
            <type>text/plain</type>
            <size>22039</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3NTc2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzg2ZTEzOTQwMjUyNGRmOTUzY2M4M2ExZDIzOTE1MjA4
MGZiYjk1ZS4uNjQzODMyODQzNWNkN2Y4Y2YxMGVhZTYyNzczZDJmZmU4OTRjMzMwYiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1
IEBACisyMDIwLTA5LTI1ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAg
ICBDaGFuZ2UgZHVtcEFzVGV4dCB0byBzdHJpcCB0cmFpbGluZyBzcGFjZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjk0NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IEFsYW4gQnVqdGFzLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1
bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAoZHVtcEZyYW1lc0FzVGV4dCk6IFN0cmlwIHRyYWls
aW5nIHNwYWNlcy4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRnJhbWVMb2FkRGVsZWdh
dGUubW06CisgICAgICAgICgtW0ZyYW1lTG9hZERlbGVnYXRlIHdlYlZpZXc6d2lsbFBlcmZvcm1D
bGllbnRSZWRpcmVjdFRvVVJMOmRlbGF5OmZpcmVEYXRlOmZvckZyYW1lOl0pOgorICAgICAgICBE
b24ndCBhZGQgdHJhaWxpbmcgc3BhY2UuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1VJ
RGVsZWdhdGUubW06CisgICAgICAgICgtW1VJRGVsZWdhdGUgd2ViVmlldzphZGRNZXNzYWdlVG9D
b25zb2xlOndpdGhTb3VyY2U6XSk6IERpdHRvLgorICAgICAgICAoYWRkTGVhZGluZ1NwYWNlU3Ry
aXBUcmFpbGluZ1NwYWNlcyk6IEFkZGVkLgorICAgICAgICAoc3RyaXBUcmFpbGluZ1NwYWNlcyk6
IEFkZGVkLgorICAgICAgICAoLVtVSURlbGVnYXRlIHdlYlZpZXc6cnVuSmF2YVNjcmlwdEFsZXJ0
UGFuZWxXaXRoTWVzc2FnZTppbml0aWF0ZWRCeUZyYW1lOl0pOiBEb24ndCBhZGQgdHJhaWxpbmcg
c3BhY2UuCisgICAgICAgICgtW1VJRGVsZWdhdGUgd2ViVmlldzpydW5KYXZhU2NyaXB0Q29uZmly
bVBhbmVsV2l0aE1lc3NhZ2U6aW5pdGlhdGVkQnlGcmFtZTpdKTogRGl0dG8uCisgICAgICAgICgt
W1VJRGVsZWdhdGUgd2ViVmlldzpydW5KYXZhU2NyaXB0VGV4dElucHV0UGFuZWxXaXRoUHJvbXB0
OmRlZmF1bHRUZXh0OmluaXRpYXRlZEJ5RnJhbWU6XSk6IERpdHRvLgorICAgICAgICAoLVtVSURl
bGVnYXRlIHdlYlZpZXc6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsV2l0aE1lc3NhZ2U6aW5p
dGlhdGVkQnlGcmFtZTpdKTogRGl0dG8uCisgICAgICAgICgtW1VJRGVsZWdhdGUgd2ViVmlldzpz
ZXRTdGF0dXNUZXh0Ol0pOiBEaXR0by4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9E
dW1wUmVuZGVyVHJlZS5jcHA6CisgICAgICAgIChkdW1wRnJhbWVzQXNUZXh0KTogU3RyaXAgdHJh
aWxpbmcgc3BhY2VzLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxl
Z2F0ZS5jcHA6CisgICAgICAgIChGcmFtZUxvYWREZWxlZ2F0ZTo6d2lsbFBlcmZvcm1DbGllbnRS
ZWRpcmVjdFRvVVJMKTogRG9uJ3QgYWRkIHRyYWlsaW5nIHNwYWNlLgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL3dpbi9VSURlbGVnYXRlLmNwcDoKKyAgICAgICAgKHRvTWVzc2FnZSk6IENoYW5n
ZWQgdG8gcmV0dXJuIHN0ZDo6d3N0cmluZy4KKyAgICAgICAgKHN0cmlwVHJhaWxpbmdTcGFjZXMp
OiBBZGRlZC4KKyAgICAgICAgKGFkZExlYWRpbmdTcGFjZVN0cmlwVHJhaWxpbmdTcGFjZXMpOiBB
ZGRlZC4KKyAgICAgICAgKFVJRGVsZWdhdGU6OnJ1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1l
c3NhZ2UpOiBEb24ndCBhZGQgdHJhaWxpbmcgc3BhY2UuCisgICAgICAgIChVSURlbGVnYXRlOjpy
dW5KYXZhU2NyaXB0Q29uZmlybVBhbmVsV2l0aE1lc3NhZ2UpOiBEaXR0by4KKyAgICAgICAgKFVJ
RGVsZWdhdGU6OnJ1bkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbFdpdGhQcm9tcHQpOiBEaXR0by4K
KyAgICAgICAgKFVJRGVsZWdhdGU6OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNz
YWdlKTogRGl0dG8uCisgICAgICAgIChVSURlbGVnYXRlOjp3ZWJWaWV3QWRkTWVzc2FnZVRvQ29u
c29sZSk6IERpdHRvLgorICAgICAgICAoVUlEZWxlZ2F0ZTo6c2V0U3RhdHVzVGV4dCk6IERpdHRv
LgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHk6CisgICAgICAgIChQ
b3J0LmRvX3RleHRfcmVzdWx0c19kaWZmZXIpOiBTdHJpcCB0cmFpbGluZyBzcGFjZXMgZnJvbSBl
eHBlY3RlZCB0ZXh0LgorICAgICAgICBQbGFuIGlzIHRvIHJlbW92ZSB0aGlzIGFmdGVyIHN0cmlw
cGluZyB0aGUgYWN0dWFsIGV4cGVjdGVkLnR4dCBmaWxlcy4KKworICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAg
KFdUUjo6ZHVtcEZyYW1lVGV4dCk6IFN0cmlwIHRyYWlsaW5nIHNwYWNlcy4KKyAgICAgICAgKFdU
Ujo6SW5qZWN0ZWRCdW5kbGVQYWdlOjp3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0Rm9yRnJhbWUp
OiBEb24ndCBhZGQgdHJhaWxpbmcgc3BhY2UuCisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxl
UGFnZTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6IERpdHRvLgorICAgICAgICAo
V1RSOjpzdHJpcFRyYWlsaW5nU3BhY2VzKTogQWRkZWQuCisgICAgICAgIChXVFI6OmFkZExlYWRp
bmdTcGFjZVN0cmlwVHJhaWxpbmdTcGFjZXMpOiBBZGRlZC4KKyAgICAgICAgKFdUUjo6SW5qZWN0
ZWRCdW5kbGVQYWdlOjp3aWxsQWRkTWVzc2FnZVRvQ29uc29sZSk6IERvbid0IGFkZCB0cmFpbGlu
ZyBzcGFjZS4KKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjp3aWxsUnVuSmF2YVNj
cmlwdEFsZXJ0KTogRGl0dG8uCisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6d2ls
bFJ1bkphdmFTY3JpcHRDb25maXJtKTogRGl0dG8uCisgICAgICAgIChXVFI6OkluamVjdGVkQnVu
ZGxlUGFnZTo6d2lsbFJ1bkphdmFTY3JpcHRQcm9tcHQpOiBEaXR0by4KKwogMjAyMC0wOS0yNSAg
WW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IGRl
ZmF1bHQgYmVoYXZpb3IgZm9yIGdldFVzZXJNZWRpYSByZXF1ZXN0cyBpbiBjYXNlIHdoZXJlIHRo
ZXJlIGlzIG5vIGRlbGVnYXRlIHNldApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0R1bXBSZW5kZXJUcmVlLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5k
ZXJUcmVlLm1tCmluZGV4IDAxMGUyNjg4ODM1YjAxMjIwZWM5NzI2NGRiNGJkMjQxMzJjZjZhOGEu
LjNmMTZkZDY3MDEzZWE3MTc1ZTNlNWQ1NDM5N2QwNzExNWE3N2Y1NmQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KQEAgLTE1MTQsNiArMTUxNCwxMCBAQCBz
dGF0aWMgTlNTdHJpbmcgKmR1bXBGcmFtZXNBc1RleHQoV2ViRnJhbWUgKmZyYW1lKQogICAgICAg
ICB9CiAgICAgfQogCisgICAgLy8gVG8ga2VlcCB0aGluZ3MgdGlkeSwgc3RyaXAgYWxsIHRyYWls
aW5nIHNwYWNlczogdGhleSBhcmUgbm90IGEgbWVhbmluZ2Z1bCBwYXJ0IG9mIGR1bXBBc1RleHQg
dGVzdCBvdXRwdXQuCisgICAgW3Jlc3VsdCByZXBsYWNlT2NjdXJyZW5jZXNPZlN0cmluZzpAIiAr
XG4iIHdpdGhTdHJpbmc6QCJcbiIgb3B0aW9uczpOU1JlZ3VsYXJFeHByZXNzaW9uU2VhcmNoIHJh
bmdlOk5TTWFrZVJhbmdlKDAsIHJlc3VsdC5sZW5ndGgpXTsKKyAgICBbcmVzdWx0IHJlcGxhY2VP
Y2N1cnJlbmNlc09mU3RyaW5nOkAiICskIiB3aXRoU3RyaW5nOkAiIiBvcHRpb25zOk5TUmVndWxh
ckV4cHJlc3Npb25TZWFyY2ggcmFuZ2U6TlNNYWtlUmFuZ2UoMCwgcmVzdWx0Lmxlbmd0aCldOwor
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0ZyYW1lTG9hZERlbGVnYXRlLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0Zy
YW1lTG9hZERlbGVnYXRlLm1tCmluZGV4IGIzOGY0ZDM3ZjA2NzE1MzUxYzg5YTg2ZmU4MjA4Yjc2
ZjIxNWFhN2UuLjM2NzE0OTM5ZmRhMGE1Njc0OWM3OTk4ODZhMWVhNDM4OTIxODlhNGEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9GcmFtZUxvYWREZWxlZ2F0ZS5tbQorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRnJhbWVMb2FkRGVsZWdhdGUubW0KQEAgLTQxMiw3
ICs0MTIsNyBAQCAtICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgZGlkQ2hhbmdlTG9j
YXRpb25XaXRoaW5QYWdlRm9yRnJhbWU6KFdlYkZyYW1lCiAtICh2b2lkKXdlYlZpZXc6KFdlYlZp
ZXcgKilzZW5kZXIgd2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdFRvVVJMOihOU1VSTCAqKVVSTCBk
ZWxheTooTlNUaW1lSW50ZXJ2YWwpc2Vjb25kcyBmaXJlRGF0ZTooTlNEYXRlICopZGF0ZSBmb3JG
cmFtZTooV2ViRnJhbWUgKilmcmFtZQogewogICAgIGlmICghZG9uZSAmJiBnVGVzdFJ1bm5lci0+
ZHVtcEZyYW1lTG9hZENhbGxiYWNrcygpKSB7Ci0gICAgICAgIE5TU3RyaW5nICpzdHJpbmcgPSBb
TlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAIC0gd2lsbFBlcmZvcm1DbGllbnRSZWRpcmVj
dFRvVVJMOiAlQCAiLCBbZnJhbWUgX2RydF9kZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3Vs
dF0sIFtVUkwgX2RydF9kZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdF1dOworICAgICAg
ICBOU1N0cmluZyAqc3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCAtIHdp
bGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VSTDogJUAiLCBbZnJhbWUgX2RydF9kZXNjcmlwdGlv
blN1aXRhYmxlRm9yVGVzdFJlc3VsdF0sIFtVUkwgX2RydF9kZXNjcmlwdGlvblN1aXRhYmxlRm9y
VGVzdFJlc3VsdF1dOwogICAgICAgICBwcmludGYgKCIlc1xuIiwgW3N0cmluZyBVVEY4U3RyaW5n
XSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxl
Z2F0ZS5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCmluZGV4IGY2
OTk1NTUxZTBjZGExMGQ0YjJiNzlmOTJiYTZkYTM0YmUzNTdiODguLjVmOGMxMTRhZTRlOTRiMmI0
ZTQ2ZDdlY2QzYTc3MTgwMGE2MTE5N2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9VSURlbGVnYXRlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVn
YXRlLm1tCkBAIC04Nyw5ICs4Nyw4IEBAIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRl
ciBhZGRNZXNzYWdlVG9Db25zb2xlOihOU0RpY3Rpb25hcnkgKilkaWN0aW9uYXJ5CiAgICAgaWYg
KHJhbmdlLmxvY2F0aW9uICE9IE5TTm90Rm91bmQpCiAgICAgICAgIG1lc3NhZ2UgPSBbW21lc3Nh
Z2Ugc3Vic3RyaW5nVG9JbmRleDpyYW5nZS5sb2NhdGlvbl0gc3RyaW5nQnlBcHBlbmRpbmdTdHJp
bmc6W1ttZXNzYWdlIHN1YnN0cmluZ0Zyb21JbmRleDpOU01heFJhbmdlKHJhbmdlKV0gbGFzdFBh
dGhDb21wb25lbnRdXTsKIAotICAgIGF1dG8gb3V0ID0gZ1Rlc3RSdW5uZXItPmR1bXBKU0NvbnNv
bGVMb2dJblN0ZEVycigpID8gc3RkZXJyIDogc3Rkb3V0OwotICAgIGZwcmludGYob3V0LCAiQ09O
U09MRSBNRVNTQUdFOiAiKTsKLSAgICBmcHJpbnRmKG91dCwgIiVzXG4iLCBbbWVzc2FnZSBVVEY4
U3RyaW5nXSk7CisgICAgYXV0byBzZXBhcmF0b3IgPSBtZXNzYWdlLmxlbmd0aCA/ICIgIiA6ICIi
OworICAgIGZwcmludGYoZ1Rlc3RSdW5uZXItPmR1bXBKU0NvbnNvbGVMb2dJblN0ZEVycigpID8g
c3RkZXJyIDogc3Rkb3V0LCAiQ09OU09MRSBNRVNTQUdFOiVzJXNcbiIsIHNlcGFyYXRvciwgW21l
c3NhZ2UgVVRGOFN0cmluZ10pOwogfQogCiAtICh2b2lkKW1vZGFsV2luZG93V2lsbENsb3NlOihO
U05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgpAQCAtMTEwLDEwICsxMDksMjMgQEAgLSAodm9p
ZCl3ZWJWaWV3UnVuTW9kYWw6KFdlYlZpZXcgKilzZW5kZXIKICNlbmRpZgogfQogCitzdGF0aWMg
TlNTdHJpbmcgKmFkZExlYWRpbmdTcGFjZVN0cmlwVHJhaWxpbmdTcGFjZXMoTlNTdHJpbmcgKnN0
cmluZykKK3sKKyAgICBhdXRvIHJlc3VsdCA9IHN0cmlwVHJhaWxpbmdTcGFjZXMoc3RyaW5nKTsK
KyAgICBpZiAoIXJlc3VsdC5sZW5ndGgpCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0
dXJuIFtAIiAiIHN0cmluZ0J5QXBwZW5kaW5nU3RyaW5nOnJlc3VsdF07Cit9CisKK3N0YXRpYyBO
U1N0cmluZyAqc3RyaXBUcmFpbGluZ1NwYWNlcyhOU1N0cmluZyAqc3RyaW5nKQoreworICAgIHJl
dHVybiBbc3RyaW5nIHN0cmluZ0J5UmVwbGFjaW5nT2NjdXJyZW5jZXNPZlN0cmluZzpAIiArJCIg
d2l0aFN0cmluZzpAIiIgb3B0aW9uczpOU1JlZ3VsYXJFeHByZXNzaW9uU2VhcmNoIHJhbmdlOk5T
TWFrZVJhbmdlKDAsIHN0cmluZy5sZW5ndGgpXTsKK30KKwogLSAodm9pZCl3ZWJWaWV3OihXZWJW
aWV3ICopc2VuZGVyIHJ1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1lc3NhZ2U6KE5TU3RyaW5n
ICopbWVzc2FnZSBpbml0aWF0ZWRCeUZyYW1lOihXZWJGcmFtZSAqKWZyYW1lCiB7CiAgICAgaWYg
KCFkb25lKSB7Ci0gICAgICAgIHByaW50ZigiQUxFUlQ6ICVzXG4iLCBbbWVzc2FnZSBVVEY4U3Ry
aW5nXSk7CisgICAgICAgIHByaW50ZigiQUxFUlQ6JXNcbiIsIGFkZExlYWRpbmdTcGFjZVN0cmlw
VHJhaWxpbmdTcGFjZXMobWVzc2FnZSkuVVRGOFN0cmluZyk7CiAgICAgICAgIGZmbHVzaChzdGRv
dXQpOwogICAgIH0KIH0KQEAgLTEyMSwyMiArMTMzLDIxIEBAIC0gKHZvaWQpd2ViVmlldzooV2Vi
VmlldyAqKXNlbmRlciBydW5KYXZhU2NyaXB0QWxlcnRQYW5lbFdpdGhNZXNzYWdlOihOU1N0cmlu
ZyAqCiAtIChCT09MKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgcnVuSmF2YVNjcmlwdENvbmZp
cm1QYW5lbFdpdGhNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2UgaW5pdGlhdGVkQnlGcmFtZToo
V2ViRnJhbWUgKilmcmFtZQogewogICAgIGlmICghZG9uZSkKLSAgICAgICAgcHJpbnRmKCJDT05G
SVJNOiAlc1xuIiwgW21lc3NhZ2UgVVRGOFN0cmluZ10pOworICAgICAgICBwcmludGYoIkNPTkZJ
Uk06JXNcbiIsIGFkZExlYWRpbmdTcGFjZVN0cmlwVHJhaWxpbmdTcGFjZXMobWVzc2FnZSkuVVRG
OFN0cmluZyk7CiAgICAgcmV0dXJuIFlFUzsKIH0KIAogLSAoTlNTdHJpbmcgKil3ZWJWaWV3OihX
ZWJWaWV3ICopc2VuZGVyIHJ1bkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbFdpdGhQcm9tcHQ6KE5T
U3RyaW5nICopcHJvbXB0IGRlZmF1bHRUZXh0OihOU1N0cmluZyAqKWRlZmF1bHRUZXh0IGluaXRp
YXRlZEJ5RnJhbWU6KFdlYkZyYW1lICopZnJhbWUKIHsKICAgICBpZiAoIWRvbmUpCi0gICAgICAg
IHByaW50ZigiUFJPTVBUOiAlcywgZGVmYXVsdCB0ZXh0OiAlc1xuIiwgW3Byb21wdCBVVEY4U3Ry
aW5nXSwgW2RlZmF1bHRUZXh0IFVURjhTdHJpbmddKTsKKyAgICAgICAgcHJpbnRmKCJQUk9NUFQ6
ICVzLCBkZWZhdWx0IHRleHQ6JXNcbiIsIHByb21wdC5VVEY4U3RyaW5nLCBhZGRMZWFkaW5nU3Bh
Y2VTdHJpcFRyYWlsaW5nU3BhY2VzKGRlZmF1bHRUZXh0KS5VVEY4U3RyaW5nKTsKICAgICByZXR1
cm4gZGVmYXVsdFRleHQ7CiB9CiAKIC0gKEJPT0wpd2ViVmlldzooV2ViVmlldyAqKWMgcnVuQmVm
b3JlVW5sb2FkQ29uZmlybVBhbmVsV2l0aE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZSBpbml0
aWF0ZWRCeUZyYW1lOihXZWJGcmFtZSAqKWZyYW1lCiB7CiAgICAgaWYgKCFkb25lKQotICAgICAg
ICBwcmludGYoIkNPTkZJUk0gTkFWSUdBVElPTjogJXNcbiIsIFttZXNzYWdlIFVURjhTdHJpbmdd
KTsKLSAgICAKKyAgICAgICAgcHJpbnRmKCJDT05GSVJNIE5BVklHQVRJT046JXNcbiIsIGFkZExl
YWRpbmdTcGFjZVN0cmlwVHJhaWxpbmdTcGFjZXMobWVzc2FnZSkuVVRGOFN0cmluZyk7CiAgICAg
cmV0dXJuICFnVGVzdFJ1bm5lci0+c2hvdWxkU3RheU9uUGFnZUFmdGVySGFuZGxpbmdCZWZvcmVV
bmxvYWQoKTsKIH0KIApAQCAtMjM1LDcgKzI0Niw3IEBAIC0gKHZvaWQpd2ViVmlldzooV2ViVmll
dyAqKXNlbmRlciBleGNlZWRlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YUZvclNlY3VyaXR5
CiAtICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgc2V0U3RhdHVzVGV4dDooTlNTdHJp
bmcgKil0ZXh0CiB7CiAgICAgaWYgKCFkb25lICYmIGdUZXN0UnVubmVyLT5kdW1wU3RhdHVzQ2Fs
bGJhY2tzKCkpCi0gICAgICAgIHByaW50ZigiVUkgREVMRUdBVEUgU1RBVFVTIENBTExCQUNLOiBz
ZXRTdGF0dXNUZXh0OiVzXG4iLCBbdGV4dCBVVEY4U3RyaW5nXSk7CisgICAgICAgIHByaW50Zigi
VUkgREVMRUdBVEUgU1RBVFVTIENBTExCQUNLOiBzZXRTdGF0dXNUZXh0OiVzXG4iLCBzdHJpcFRy
YWlsaW5nU3BhY2VzKHRleHQpLlVURjhTdHJpbmcpOwogfQogCiAtICh2b2lkKXdlYlZpZXc6KFdl
YlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUmVxdWVzdEZyb21Pcmln
aW46KFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2luIGZyYW1lOihXZWJGcmFtZSAqKWZyYW1lIGxp
c3RlbmVyOihpZDxXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lcj4pbGlzdGVuZXIKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCmluZGV4IDdhY2E5NDc4OTJiODlk
MWRhNWY2MjM2ZGRhYTQ2NTNlYzQwYWYyMTIuLmFkN2E1YTBkNTUwNmU5ZGU4N2I2NjNkMjk2OWI5
NTJmNmEzMzZhMTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVu
ZGVyVHJlZS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVl
LmNwcApAQCAtNDg4LDYgKzQ4OCwxMSBAQCBzdGF0aWMgd3N0cmluZyBkdW1wRnJhbWVzQXNUZXh0
KElXZWJGcmFtZSogZnJhbWUpCiAgICAgICAgIH0KICAgICB9CiAKKyAgICAvLyBUbyBrZWVwIHRo
aW5ncyB0aWR5LCBzdHJpcCBhbGwgdHJhaWxpbmcgc3BhY2VzOiB0aGV5IGFyZSBub3QgYSBtZWFu
aW5nZnVsIHBhcnQgb2YgZHVtcEFzVGV4dCB0ZXN0IG91dHB1dC4KKyAgICBzdGQ6OndzdHJpbmc6
OnNpemVfdHlwZSBzcGFjZVBvc2l0aW9uOworICAgIHdoaWxlICgoc3BhY2VQb3NpdGlvbiA9IHJl
c3VsdC5maW5kKEwiIFxuIikpICE9IHN0ZDo6d3N0cmluZzo6bnBvcykKKyAgICAgICAgcmVzdWx0
LmVyYXNlKHNwYWNlUG9zaXRpb24sIDEpOworCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmNwcCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5jcHAKaW5kZXggNzU1
YmVkMTZmNjBlZGMwMTExNTUyMWUxNThjMGRiZjA1NTg4YmY4NC4uZmQ3N2FkMWMzOTI2MzhkYTk0
MTQzZWU3ZDVhODIxZTY5NDEwMjMxMyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
d2luL0ZyYW1lTG9hZERlbGVnYXRlLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4v
RnJhbWVMb2FkRGVsZWdhdGUuY3BwCkBAIC0yOTIsNyArMjkyLDcgQEAgSFJFU1VMVCBGcmFtZUxv
YWREZWxlZ2F0ZTo6ZGlkRmFpbExvYWRXaXRoRXJyb3IoX0luX29wdF8gSVdlYlZpZXcqLCBfSW5f
b3B0XyBJV2UKIEhSRVNVTFQgRnJhbWVMb2FkRGVsZWdhdGU6OndpbGxQZXJmb3JtQ2xpZW50UmVk
aXJlY3RUb1VSTChfSW5fb3B0XyBJV2ViVmlldyosIF9Jbl8gQlNUUiB1cmwsIGRvdWJsZSAvKmRl
bGF5U2Vjb25kcyovLCBEQVRFIC8qZmlyZURhdGUqLywgX0luX29wdF8gSVdlYkZyYW1lKiBmcmFt
ZSkKIHsKICAgICBpZiAoIWRvbmUgJiYgZ1Rlc3RSdW5uZXItPmR1bXBGcmFtZUxvYWRDYWxsYmFj
a3MoKSkKLSAgICAgICAgZnByaW50Zih0ZXN0UmVzdWx0LCAiJXMgLSB3aWxsUGVyZm9ybUNsaWVu
dFJlZGlyZWN0VG9VUkw6ICVTIFxuIiwgZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQo
ZnJhbWUpLmNfc3RyKCksCisgICAgICAgIGZwcmludGYodGVzdFJlc3VsdCwgIiVzIC0gd2lsbFBl
cmZvcm1DbGllbnRSZWRpcmVjdFRvVVJMOiAlU1xuIiwgZGVzY3JpcHRpb25TdWl0YWJsZUZvclRl
c3RSZXN1bHQoZnJhbWUpLmNfc3RyKCksCiAgICAgICAgICAgICAgICAgdXJsU3VpdGFibGVGb3JU
ZXN0UmVzdWx0KHN0ZDo6d3N0cmluZyh1cmwsIDo6U3lzU3RyaW5nTGVuKHVybCkpKS5jX3N0cigp
KTsKIAogICAgIHJldHVybiBTX09LOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
d2luL1VJRGVsZWdhdGUuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1VJRGVsZWdhdGUu
Y3BwCmluZGV4IDhlZDZmODQ1Zjk3ZTk5MjkxNDA0ZmZmNGExZDc5YWRkYTZhMGMyMTUuLjcwOWZl
NWFkZTVmNzE5Y2YwMzI1MWI0N2JkYmE1MDUwZDYwODVhOTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9VSURlbGVnYXRlLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS93aW4vVUlEZWxlZ2F0ZS5jcHAKQEAgLTQ1MywxMSArNDUzLDExIEBAIEhSRVNVTFQgVUlEZWxl
Z2F0ZTo6d2ViVmlld0ZyYW1lKF9Jbl9vcHRfIElXZWJWaWV3KiAvKnNlbmRlciovLCBfT3V0XyBS
RUNUKiBmcmFtCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLWNvbnN0IHdjaGFyX3QqIHRvTWVzc2Fn
ZShjb25zdCBCU1RSIG1lc3NhZ2UpCitzdGQ6OndzdHJpbmcgdG9NZXNzYWdlKEJTVFIgbWVzc2Fn
ZSkKIHsKICAgICBhdXRvIGxlbmd0aCA9IFN5c1N0cmluZ0xlbihtZXNzYWdlKTsKICAgICBpZiAo
IWxlbmd0aCkKLSAgICAgICAgcmV0dXJuIG1lc3NhZ2U7CisgICAgICAgIHJldHVybiBMIiI7CiAg
ICAgLy8gUmV0dXJuICIobnVsbCkiIGZvciBhbiBpbnZhbGlkIFVURi0xNiBzZXF1ZW5jZSB0byBh
bGlnbiB3aXRoIFdlYktpdFRlc3RSdW5uZXIuCiAgICAgYXV0byB1dGY4ID0gU3RyaW5nVmlldyh1
Y2hhckZyb20obWVzc2FnZSksIGxlbmd0aCkudHJ5R2V0VXRmOChTdHJpY3RDb252ZXJzaW9uKTsK
ICAgICBpZiAoIXV0ZjgpCkBAIC00NjUsMTAgKzQ2NSwyNSBAQCBjb25zdCB3Y2hhcl90KiB0b01l
c3NhZ2UoY29uc3QgQlNUUiBtZXNzYWdlKQogICAgIHJldHVybiBtZXNzYWdlOwogfQogCitzdGQ6
OndzdHJpbmcgc3RyaXBUcmFpbGluZ1NwYWNlcyhCU1RSIG1lc3NhZ2UpCit7CisgICAgYXV0byBz
dHJpbmcgPSB0b01lc3NhZ2UobWVzc2FnZSk7CisgICAgc3RkOjp3c3RyaW5nOjpzaXplX3R5cGUg
c3BhY2VQb3NpdGlvbjsKKyAgICB3aGlsZSAoKHNwYWNlUG9zaXRpb24gPSBzdHJpbmcuZmluZChM
IiBcbiIpKSAhPSBzdGQ6OndzdHJpbmc6Om5wb3MpCisgICAgICAgIHN0cmluZy5lcmFzZShzcGFj
ZVBvc2l0aW9uLCAxKTsKKyAgICByZXR1cm4gc3RyaW5nOworfQorCitzdGF0aWMgc3RkOjp3c3Ry
aW5nIGFkZExlYWRpbmdTcGFjZVN0cmlwVHJhaWxpbmdTcGFjZXMoQlNUUiBtZXNzYWdlKQorewor
ICAgIGF1dG8gc3RyaW5nID0gc3RyaXBUcmFpbGluZ1NwYWNlcyhtZXNzYWdlKTsKKyAgICByZXR1
cm4gc3RyaW5nLmVtcHR5KCkgPyBzdHJpbmcgOiBMJyAnICsgc3RyaW5nOworfQorCiBIUkVTVUxU
IFVJRGVsZWdhdGU6OnJ1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1lc3NhZ2UoX0luX29wdF8g
SVdlYlZpZXcqIC8qc2VuZGVyKi8sIF9Jbl8gQlNUUiBtZXNzYWdlKQogewogICAgIGlmICghZG9u
ZSkgewotICAgICAgICBmcHJpbnRmKHRlc3RSZXN1bHQsICJBTEVSVDogJVNcbiIsIHRvTWVzc2Fn
ZShtZXNzYWdlKSk7CisgICAgICAgIGZwcmludGYodGVzdFJlc3VsdCwgIkFMRVJUOiVTXG4iLCBh
ZGRMZWFkaW5nU3BhY2VTdHJpcFRyYWlsaW5nU3BhY2VzKG1lc3NhZ2UpLmNfc3RyKCkpOwogICAg
ICAgICBmZmx1c2godGVzdFJlc3VsdCk7CiAgICAgfQogCkBAIC00NzgsNyArNDkzLDcgQEAgSFJF
U1VMVCBVSURlbGVnYXRlOjpydW5KYXZhU2NyaXB0QWxlcnRQYW5lbFdpdGhNZXNzYWdlKF9Jbl9v
cHRfIElXZWJWaWV3KiAvKnNlbmQKIEhSRVNVTFQgVUlEZWxlZ2F0ZTo6cnVuSmF2YVNjcmlwdENv
bmZpcm1QYW5lbFdpdGhNZXNzYWdlKF9Jbl9vcHRfIElXZWJWaWV3KiAvKnNlbmRlciovLCBfSW5f
IEJTVFIgbWVzc2FnZSwgX091dF8gQk9PTCogcmVzdWx0KQogewogICAgIGlmICghZG9uZSkKLSAg
ICAgICAgZnByaW50Zih0ZXN0UmVzdWx0LCAiQ09ORklSTTogJVNcbiIsIHRvTWVzc2FnZShtZXNz
YWdlKSk7CisgICAgICAgIGZwcmludGYodGVzdFJlc3VsdCwgIkNPTkZJUk06JVNcbiIsIGFkZExl
YWRpbmdTcGFjZVN0cmlwVHJhaWxpbmdTcGFjZXMobWVzc2FnZSkuY19zdHIoKSk7CiAKICAgICAq
cmVzdWx0ID0gVFJVRTsKIApAQCAtNDg4LDcgKzUwMyw3IEBAIEhSRVNVTFQgVUlEZWxlZ2F0ZTo6
cnVuSmF2YVNjcmlwdENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlKF9Jbl9vcHRfIElXZWJWaWV3KiAv
KnNlCiBIUkVTVUxUIFVJRGVsZWdhdGU6OnJ1bkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbFdpdGhQ
cm9tcHQoX0luX29wdF8gSVdlYlZpZXcqIC8qc2VuZGVyKi8sIF9Jbl8gQlNUUiBtZXNzYWdlLCBf
SW5fIEJTVFIgZGVmYXVsdFRleHQsIF9fZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQpCiB7CiAg
ICAgaWYgKCFkb25lKQotICAgICAgICBmcHJpbnRmKHRlc3RSZXN1bHQsICJQUk9NUFQ6ICVTLCBk
ZWZhdWx0IHRleHQ6ICVTXG4iLCB0b01lc3NhZ2UobWVzc2FnZSksIHRvTWVzc2FnZShkZWZhdWx0
VGV4dCkpOworICAgICAgICBmcHJpbnRmKHRlc3RSZXN1bHQsICJQUk9NUFQ6ICVTLCBkZWZhdWx0
IHRleHQ6JVNcbiIsIHRvTWVzc2FnZShtZXNzYWdlKS5jX3N0cigpLCBhZGRMZWFkaW5nU3BhY2VT
dHJpcFRyYWlsaW5nU3BhY2VzKGRlZmF1bHRUZXh0KS5jX3N0cigpKTsKIAogICAgICpyZXN1bHQg
PSBTeXNBbGxvY1N0cmluZyhkZWZhdWx0VGV4dCk7CiAKQEAgLTUwMSw3ICs1MTYsNyBAQCBIUkVT
VUxUIFVJRGVsZWdhdGU6OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlKF9J
bl9vcHRfIElXZWJWaWV3KiAvKgogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCiAgICAgaWYg
KCFkb25lKQotICAgICAgICBmcHJpbnRmKHRlc3RSZXN1bHQsICJDT05GSVJNIE5BVklHQVRJT046
ICVTXG4iLCB0b01lc3NhZ2UobWVzc2FnZSkpOworICAgICAgICBmcHJpbnRmKHRlc3RSZXN1bHQs
ICJDT05GSVJNIE5BVklHQVRJT046JVNcbiIsIGFkZExlYWRpbmdTcGFjZVN0cmlwVHJhaWxpbmdT
cGFjZXMobWVzc2FnZSkuY19zdHIoKSk7CiAKICAgICAqcmVzdWx0ID0gIWdUZXN0UnVubmVyLT5z
aG91bGRTdGF5T25QYWdlQWZ0ZXJIYW5kbGluZ0JlZm9yZVVubG9hZCgpOwogCkBAIC01MjMsOCAr
NTM4LDcgQEAgSFJFU1VMVCBVSURlbGVnYXRlOjp3ZWJWaWV3QWRkTWVzc2FnZVRvQ29uc29sZShf
SW5fb3B0XyBJV2ViVmlldyogLypzZW5kZXIqLywgX0kKICAgICB9CiAKICAgICBhdXRvIG91dCA9
IGdUZXN0UnVubmVyLT5kdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIoKSA/IHN0ZGVyciA6IHRlc3RS
ZXN1bHQ7Ci0gICAgZnByaW50ZihvdXQsICJDT05TT0xFIE1FU1NBR0U6ICIpOwotICAgIGZwcmlu
dGYob3V0LCAiJXNcbiIsIHRvVVRGOChuZXdNZXNzYWdlKS5jX3N0cigpKTsKKyAgICBmcHJpbnRm
KG91dCwgIkNPTlNPTEUgTUVTU0FHRTolU1xuIiwgYWRkTGVhZGluZ1NwYWNlU3RyaXBUcmFpbGlu
Z1NwYWNlcyhuZXdNZXNzYWdlKS5jX3N0cigpKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAt
NjczLDcgKzY4Nyw3IEBAIEhSRVNVTFQgVUlEZWxlZ2F0ZTo6d2ViVmlld0RpZEludmFsaWRhdGUo
X0luX29wdF8gSVdlYlZpZXcqIC8qc2VuZGVyKi8pCiBIUkVTVUxUIFVJRGVsZWdhdGU6OnNldFN0
YXR1c1RleHQoX0luX29wdF8gSVdlYlZpZXcqLCBfSW5fIEJTVFIgdGV4dCkKIHsKICAgICBpZiAo
IWRvbmUgJiYgZ1Rlc3RSdW5uZXItPmR1bXBTdGF0dXNDYWxsYmFja3MoKSkKLSAgICAgICAgZnBy
aW50Zih0ZXN0UmVzdWx0LCAiVUkgREVMRUdBVEUgU1RBVFVTIENBTExCQUNLOiBzZXRTdGF0dXNU
ZXh0OiVTXG4iLCB0b01lc3NhZ2UodGV4dCkpOworICAgICAgICBmcHJpbnRmKHRlc3RSZXN1bHQs
ICJVSSBERUxFR0FURSBTVEFUVVMgQ0FMTEJBQ0s6IHNldFN0YXR1c1RleHQ6JVNcbiIsIHN0cmlw
VHJhaWxpbmdTcGFjZXModGV4dCkuY19zdHIoKSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5IGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkKaW5kZXggNzU1NzA5NDZjNzkxYzJkMmQyMTY2ZjYx
YTJlOWNkYjlkNDM0N2IzMy4uZmRlYjU3MDMyMGM5ZGYxMjRmMmI5ODNmOGEzOTg1Njg5N2JmYTNk
YiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkKKysrIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkKQEAgLTMwMCw2ICszMDAsOCBAQCBj
bGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAogICAgIGRlZiBk
b190ZXh0X3Jlc3VsdHNfZGlmZmVyKHNlbGYsIGV4cGVjdGVkX3RleHQsIGFjdHVhbF90ZXh0KToK
KyAgICAgICAgIyBJZ25vcmUgdHJhaWxpbmcgc3BhY2VzIGluIGV4cGVjdGVkIGZpbGVzLiBXZSB3
aWxsIHJlbW92ZSB0aGlzIGNvZGUgYWZ0ZXIgcmVtb3ZpbmcgdHJhaWxpbmcgc3BhY2VzIGZyb20g
YWxsIGV4cGVjdGVkLnR4dCBmaWxlcy4KKyAgICAgICAgZXhwZWN0ZWRfdGV4dCA9IHJlLmNvbXBp
bGUoIiArJCIsIHJlLk1VTFRJTElORSkuc3ViKCIiLCBleHBlY3RlZF90ZXh0KQogICAgICAgICBy
ZXR1cm4gZXhwZWN0ZWRfdGV4dCAhPSBhY3R1YWxfdGV4dAogCiAgICAgZGVmIGRvX2F1ZGlvX3Jl
c3VsdHNfZGlmZmVyKHNlbGYsIGV4cGVjdGVkX2F1ZGlvLCBhY3R1YWxfYXVkaW8pOgpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2UuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2UuY3BwCmluZGV4IGI2NDBmZjI4YWU3NWZkNjE4MDAzYmY2Zjc1MmUwNWNiMTMw
NjM2NzIuLmQwYjZmNjQ0ZTYwN2U0M2FlMDgxODNmMmNlNjczMjIyNGMwOTZlYmIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZS5jcHAKQEAgLTgzNCwxNyArODM0LDIyIEBAIHN0YXRpYyBib29sIGhhc0Rv
Y3VtZW50RWxlbWVudChXS0J1bmRsZUZyYW1lUmVmIGZyYW1lKQogICAgIHJldHVybiBKU1ZhbHVl
VG9Cb29sZWFuKGNvbnRleHQsIGRvY3VtZW50RWxlbWVudFZhbHVlKTsKIH0KIAotc3RhdGljIHZv
aWQgZHVtcEZyYW1lVGV4dChXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBTdHJpbmdCdWlsZGVyJiBz
dHJpbmdCdWlsZGVyKQorc3RhdGljIHZvaWQgZHVtcEZyYW1lVGV4dChXS0J1bmRsZUZyYW1lUmVm
IGZyYW1lLCBTdHJpbmdCdWlsZGVyJiBidWlsZGVyKQogewogICAgIC8vIElmIHRoZSBmcmFtZSBk
b2Vzbid0IGhhdmUgYSBkb2N1bWVudCBlbGVtZW50LCBpdHMgaW5uZXIgdGV4dCB3aWxsIGJlIGFu
IGVtcHR5IHN0cmluZywgc28KLSAgICAvLyB3ZSdsbCBlbmQgdXAganVzdCBhcHBlbmRpbmcgYSBz
aW5nbGUgbmV3bGluZSBiZWxvdy4gQnV0IER1bXBSZW5kZXJUcmVlIGRvZXNuJ3QgYXBwZW5kCi0g
ICAgLy8gYW55dGhpbmcgaW4gdGhpcyBjYXNlLCBzbyB3ZSBzaG91bGRuJ3QgZWl0aGVyLgorICAg
IC8vIHdlJ2xsIGVuZCB1cCBqdXN0IGFwcGVuZGluZyBhIHNpbmdsZSBuZXdsaW5lIGJlbG93LiBT
aW5jZSBEdW1wUmVuZGVyVHJlZSBkaWRuJ3QgYXBwZW5kCisgICAgLy8gYW55dGhpbmcgaW4gdGhp
cyBjYXNlLCB3ZSBkZWNpZGVkIHRvIHByZXNlcnZlIHRoYXQgYmVoYXZpb3IuCiAgICAgaWYgKCFo
YXNEb2N1bWVudEVsZW1lbnQoZnJhbWUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBXS1JldGFp
blB0cjxXS1N0cmluZ1JlZj4gdGV4dCA9IGFkb3B0V0soV0tCdW5kbGVGcmFtZUNvcHlJbm5lclRl
eHQoZnJhbWUpKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh0b1dURlN0cmluZyh0ZXh0KSk7
Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJ1xuJyk7CisgICAgLy8gVG8ga2VlcCB0aGluZ3Mg
dGlkeSwgc3RyaXAgYWxsIHRyYWlsaW5nIHNwYWNlczogdGhleSBhcmUgbm90IGEgbWVhbmluZ2Z1
bCBwYXJ0IG9mIGR1bXBBc1RleHQgdGVzdCBvdXRwdXQuCisgICAgLy8gQnJlYWtpbmcgdGhlIHN0
cmluZyB1cCBpbnRvIGxpbmVzIGxldHMgdXMgZWZmaWNpZW50bHkgc3RyaXAgYW5kIGhhcyBhIHNp
ZGUgZWZmZWN0IG9mIGFkZGluZyBhIG5ld2xpbmUgYWZ0ZXIgdGhlIGxhc3QgbGluZS4KKyAgICBh
dXRvIHRleHQgPSB0b1dURlN0cmluZyhhZG9wdFdLKFdLQnVuZGxlRnJhbWVDb3B5SW5uZXJUZXh0
KGZyYW1lKSkpOworICAgIGZvciAoYXV0byBsaW5lIDogU3RyaW5nVmlldyh0ZXh0KS5zcGxpdEFs
bG93aW5nRW1wdHlFbnRyaWVzKCdcbicpKSB7CisgICAgICAgIHdoaWxlIChsaW5lLmVuZHNXaXRo
KCcgJykpCisgICAgICAgICAgICBsaW5lID0gbGluZS5zdWJzdHJpbmcoMCwgbGluZS5sZW5ndGgo
KSAtIDEpOworICAgICAgICBidWlsZGVyLmFwcGVuZChsaW5lLCAnXG4nKTsKKyAgICB9CiB9CiAK
IHN0YXRpYyB2b2lkIGR1bXBEZXNjZW5kYW50RnJhbWVzVGV4dChXS0J1bmRsZUZyYW1lUmVmIGZy
YW1lLCBTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyKQpAQCAtMTA1Niw5ICsxMDYxLDcgQEAg
dm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFt
ZShXS0J1bmRsZVBhZ2VSZWYsIFdLQnUKIAogICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRl
cjsKICAgICBkdW1wRnJhbWVEZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChmcmFtZSwg
c3RyaW5nQnVpbGRlcik7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgLSB3aWxs
UGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkw6ICIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KHBhdGhTdWl0YWJsZUZvclRlc3RSZXN1bHQodXJsKSk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBl
bmRMaXRlcmFsKCIgXG4iKTsKKyAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiIC0gd2lsbFBlcmZv
cm1DbGllbnRSZWRpcmVjdFRvVVJMOiAiLCBwYXRoU3VpdGFibGVGb3JUZXN0UmVzdWx0KHVybCks
ICdcbicpOwogICAgIGluamVjdGVkQnVuZGxlLm91dHB1dFRleHQoc3RyaW5nQnVpbGRlci50b1N0
cmluZygpKTsKIH0KIApAQCAtMTM0NSw3ICsxMzQ4LDcgQEAgV0tCdW5kbGVQYWdlUG9saWN5QWN0
aW9uIEluamVjdGVkQnVuZGxlUGFnZTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihX
S0IKIAogICAgIGlmIChpbmplY3RlZEJ1bmRsZS50ZXN0UnVubmVyKCktPnNob3VsZER1bXBQb2xp
Y3lDYWxsYmFja3MoKSkgewogICAgICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0g
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIC0gZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbiBcbiIpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwo
IiAtIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25cbiIpOwogICAgICAgICBkdW1wUmVx
dWVzdERlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KHJlcXVlc3QsIHN0cmluZ0J1aWxk
ZXIpOwogICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBpcyBtYWluIGZyYW1l
IC0gIik7CiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKFdLQnVuZGxlRnJhbWVJc01haW5G
cmFtZShmcmFtZSkgPyAieWVzIiA6ICJubyIpOwpAQCAtMTQ0OSw2ICsxNDUyLDIwIEBAIHVpbnQ2
NF90IEluamVjdGVkQnVuZGxlUGFnZTo6ZGlkRXhjZWVkRGF0YWJhc2VRdW90YShXS0J1bmRsZVBh
Z2VSZWYgcGFnZSwgV0tTZWN1CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEluamVjdGVkQnVuZGxl
UGFnZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZGlkRXhjZWVkRGF0YWJhc2VR
dW90YShvcmlnaW4sIGRhdGFiYXNlTmFtZSwgZGF0YWJhc2VEaXNwbGF5TmFtZSwgY3VycmVudFF1
b3RhQnl0ZXMsIGN1cnJlbnRPcmlnaW5Vc2FnZUJ5dGVzLCBjdXJyZW50RGF0YWJhc2VVc2FnZUJ5
dGVzLCBleHBlY3RlZFVzYWdlQnl0ZXMpOwogfQogCitzdGF0aWMgV1RGOjpTdHJpbmcgc3RyaXBU
cmFpbGluZ1NwYWNlcyhjb25zdCBXVEY6OlN0cmluZyYgc3RyaW5nKQoreworICAgIFN0cmluZ1Zp
ZXcgdmlldyA9IHN0cmluZzsKKyAgICB3aGlsZSAodmlldy5lbmRzV2l0aCgnICcpKQorICAgICAg
ICB2aWV3ID0gdmlldy5zdWJzdHJpbmcoMCwgdmlldy5sZW5ndGgoKSAtIDEpOworICAgIHJldHVy
biB2aWV3LnRvU3RyaW5nKCk7Cit9CisKK3N0YXRpYyBXVEY6OlN0cmluZyBhZGRMZWFkaW5nU3Bh
Y2VTdHJpcFRyYWlsaW5nU3BhY2VzKGNvbnN0IFdURjo6U3RyaW5nJiBzdHJpbmcpCit7CisgICAg
YXV0byByZXN1bHQgPSBzdHJpcFRyYWlsaW5nU3BhY2VzKHN0cmluZyk7CisgICAgcmV0dXJuIG1h
a2VTdHJpbmcocmVzdWx0LmlzRW1wdHkoKSA/ICIiIDogIiAiLCByZXN1bHQpOworfQorCiBzdGF0
aWMgV1RGOjpTdHJpbmcgbGFzdEZpbGVVUkxQYXRoQ29tcG9uZW50KGNvbnN0IFdURjo6U3RyaW5n
JiBwYXRoKQogewogICAgIHNpemVfdCBwb3MgPSBwYXRoLmZpbmQoImZpbGU6Ly8iKTsKQEAgLTE0
ODUsMTUgKzE1MDIsMTEgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OndpbGxBZGRNZXNzYWdl
VG9Db25zb2xlKFdLU3RyaW5nUmVmIG1lc3NhZ2UpCiAgICAgICAgIC8vIEZJWE1FOiBUaGUgY29k
ZSBiZWxvdyBkb2VzIG5vdCBoYW5kbGUgYWRkaXRpb25hbCB0ZXh0IGFmdGVyIHVybCBub3IgbXVs
dGlwbGUgdXJscy4gVGhpcyBtYXRjaGVzIER1bXBSZW5kZXJUcmVlIGltcGxlbWVudGF0aW9uLgog
ICAgICAgICBtZXNzYWdlU3RyaW5nID0gbWVzc2FnZVN0cmluZy5zdWJzdHJpbmcoMCwgZmlsZVBy
b3RvY29sU3RhcnQpICsgbGFzdEZpbGVVUkxQYXRoQ29tcG9uZW50KG1lc3NhZ2VTdHJpbmcuc3Vi
c3RyaW5nKGZpbGVQcm90b2NvbFN0YXJ0KSk7CiAKLSAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1
aWxkZXI7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJDT05TT0xFIE1FU1NBR0U6
ICIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKG1lc3NhZ2VTdHJpbmcpOwotICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKCdcbicpOwotCisgICAgbWVzc2FnZVN0cmluZyA9IG1ha2VTdHJpbmco
IkNPTlNPTEUgTUVTU0FHRToiLCBhZGRMZWFkaW5nU3BhY2VTdHJpcFRyYWlsaW5nU3BhY2VzKG1l
c3NhZ2VTdHJpbmcpLCAnXG4nKTsKICAgICBpZiAoaW5qZWN0ZWRCdW5kbGUuZHVtcEpTQ29uc29s
ZUxvZ0luU3RkRXJyKCkpCi0gICAgICAgIGluamVjdGVkQnVuZGxlLmR1bXBUb1N0ZEVycihzdHJp
bmdCdWlsZGVyLnRvU3RyaW5nKCkpOworICAgICAgICBpbmplY3RlZEJ1bmRsZS5kdW1wVG9TdGRF
cnIobWVzc2FnZVN0cmluZyk7CiAgICAgZWxzZQotICAgICAgICBpbmplY3RlZEJ1bmRsZS5vdXRw
dXRUZXh0KHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgICAgIGluamVjdGVkQnVuZGxl
Lm91dHB1dFRleHQobWVzc2FnZVN0cmluZyk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdl
Ojp3aWxsU2V0U3RhdHVzYmFyVGV4dChXS1N0cmluZ1JlZiBzdGF0dXNiYXJUZXh0KQpAQCAtMTUx
OCwxMSArMTUzMSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjp3aWxsUnVuSmF2YVNjcmlw
dEFsZXJ0KFdLU3RyaW5nUmVmIG1lc3NhZ2UsIFdLQnVuZGxlRnJhCiAgICAgaWYgKCFpbmplY3Rl
ZEJ1bmRsZS5pc1Rlc3RSdW5uaW5nKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZ0J1
aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIkFM
RVJUOiAiKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh0b1dURlN0cmluZyhtZXNzYWdlKSk7
Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgaW5qZWN0ZWRCdW5kbGUub3V0
cHV0VGV4dChzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpOworICAgIGluamVjdGVkQnVuZGxlLm91
dHB1dFRleHQobWFrZVN0cmluZygiQUxFUlQ6IiwgYWRkTGVhZGluZ1NwYWNlU3RyaXBUcmFpbGlu
Z1NwYWNlcyh0b1dURlN0cmluZyhtZXNzYWdlKSksICdcbicpKTsKIH0KIAogdm9pZCBJbmplY3Rl
ZEJ1bmRsZVBhZ2U6OndpbGxSdW5KYXZhU2NyaXB0Q29uZmlybShXS1N0cmluZ1JlZiBtZXNzYWdl
LCBXS0J1bmRsZUZyYW1lUmVmKQpAQCAtMTUzMSwyMiArMTU0MCwxMiBAQCB2b2lkIEluamVjdGVk
QnVuZGxlUGFnZTo6d2lsbFJ1bkphdmFTY3JpcHRDb25maXJtKFdLU3RyaW5nUmVmIG1lc3NhZ2Us
IFdLQnVuZGxlRgogICAgIGlmICghaW5qZWN0ZWRCdW5kbGUuaXNUZXN0UnVubmluZygpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJDT05GSVJNOiAiKTsKLSAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCh0b1dURlN0cmluZyhtZXNzYWdlKSk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
J1xuJyk7Ci0gICAgaW5qZWN0ZWRCdW5kbGUub3V0cHV0VGV4dChzdHJpbmdCdWlsZGVyLnRvU3Ry
aW5nKCkpOworICAgIGluamVjdGVkQnVuZGxlLm91dHB1dFRleHQobWFrZVN0cmluZygiQ09ORklS
TToiLCBhZGRMZWFkaW5nU3BhY2VTdHJpcFRyYWlsaW5nU3BhY2VzKHRvV1RGU3RyaW5nKG1lc3Nh
Z2UpKSwgJ1xuJykpOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6d2lsbFJ1bkphdmFT
Y3JpcHRQcm9tcHQoV0tTdHJpbmdSZWYgbWVzc2FnZSwgV0tTdHJpbmdSZWYgZGVmYXVsdFZhbHVl
LCBXS0J1bmRsZUZyYW1lUmVmKQogewotICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsK
LSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIlBST01QVDogIik7Ci0gICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQodG9XVEZTdHJpbmcobWVzc2FnZSkpOwotICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiLCBkZWZhdWx0IHRleHQ6ICIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKHRvV1RGU3RyaW5nKGRlZmF1bHRWYWx1ZSkpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KCdcbicpOwotICAgIEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5vdXRwdXRUZXh0KHN0cmlu
Z0J1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLm91
dHB1dFRleHQobWFrZVN0cmluZygiUFJPTVBUOiAiLCB0b1dURlN0cmluZyhtZXNzYWdlKSwgIiwg
ZGVmYXVsdCB0ZXh0OiIsIGFkZExlYWRpbmdTcGFjZVN0cmlwVHJhaWxpbmdTcGFjZXModG9XVEZT
dHJpbmcoZGVmYXVsdFZhbHVlKSksICdcbicpKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZVBh
Z2U6OmRpZFJlYWNoQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFdLU2VjdXJpdHlPcmlnaW5S
ZWYgb3JpZ2luLCBpbnQ2NF90IHRvdGFsQnl0ZXNOZWVkZWQpCg==
</data>
<flag name="commit-queue"
          id="425575"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409765</attachid>
            <date>2020-09-25 18:33:06 -0700</date>
            <delta_ts>2020-09-26 08:36:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216944-20200925183305.patch</filename>
            <type>text/plain</type>
            <size>24091</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3NTc2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzg2ZTEzOTQwMjUyNGRmOTUzY2M4M2ExZDIzOTE1MjA4
MGZiYjk1ZS4uNjQzODMyODQzNWNkN2Y4Y2YxMGVhZTYyNzczZDJmZmU4OTRjMzMwYiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1
IEBACisyMDIwLTA5LTI1ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAg
ICBDaGFuZ2UgZHVtcEFzVGV4dCB0byBzdHJpcCB0cmFpbGluZyBzcGFjZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjk0NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IEFsYW4gQnVqdGFzLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1
bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAoZHVtcEZyYW1lc0FzVGV4dCk6IFN0cmlwIHRyYWls
aW5nIHNwYWNlcy4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRnJhbWVMb2FkRGVsZWdh
dGUubW06CisgICAgICAgICgtW0ZyYW1lTG9hZERlbGVnYXRlIHdlYlZpZXc6d2lsbFBlcmZvcm1D
bGllbnRSZWRpcmVjdFRvVVJMOmRlbGF5OmZpcmVEYXRlOmZvckZyYW1lOl0pOgorICAgICAgICBE
b24ndCBhZGQgdHJhaWxpbmcgc3BhY2UuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1VJ
RGVsZWdhdGUubW06CisgICAgICAgICgtW1VJRGVsZWdhdGUgd2ViVmlldzphZGRNZXNzYWdlVG9D
b25zb2xlOndpdGhTb3VyY2U6XSk6IERpdHRvLgorICAgICAgICAoYWRkTGVhZGluZ1NwYWNlU3Ry
aXBUcmFpbGluZ1NwYWNlcyk6IEFkZGVkLgorICAgICAgICAoc3RyaXBUcmFpbGluZ1NwYWNlcyk6
IEFkZGVkLgorICAgICAgICAoLVtVSURlbGVnYXRlIHdlYlZpZXc6cnVuSmF2YVNjcmlwdEFsZXJ0
UGFuZWxXaXRoTWVzc2FnZTppbml0aWF0ZWRCeUZyYW1lOl0pOiBEb24ndCBhZGQgdHJhaWxpbmcg
c3BhY2UuCisgICAgICAgICgtW1VJRGVsZWdhdGUgd2ViVmlldzpydW5KYXZhU2NyaXB0Q29uZmly
bVBhbmVsV2l0aE1lc3NhZ2U6aW5pdGlhdGVkQnlGcmFtZTpdKTogRGl0dG8uCisgICAgICAgICgt
W1VJRGVsZWdhdGUgd2ViVmlldzpydW5KYXZhU2NyaXB0VGV4dElucHV0UGFuZWxXaXRoUHJvbXB0
OmRlZmF1bHRUZXh0OmluaXRpYXRlZEJ5RnJhbWU6XSk6IERpdHRvLgorICAgICAgICAoLVtVSURl
bGVnYXRlIHdlYlZpZXc6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsV2l0aE1lc3NhZ2U6aW5p
dGlhdGVkQnlGcmFtZTpdKTogRGl0dG8uCisgICAgICAgICgtW1VJRGVsZWdhdGUgd2ViVmlldzpz
ZXRTdGF0dXNUZXh0Ol0pOiBEaXR0by4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9E
dW1wUmVuZGVyVHJlZS5jcHA6CisgICAgICAgIChkdW1wRnJhbWVzQXNUZXh0KTogU3RyaXAgdHJh
aWxpbmcgc3BhY2VzLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxl
Z2F0ZS5jcHA6CisgICAgICAgIChGcmFtZUxvYWREZWxlZ2F0ZTo6d2lsbFBlcmZvcm1DbGllbnRS
ZWRpcmVjdFRvVVJMKTogRG9uJ3QgYWRkIHRyYWlsaW5nIHNwYWNlLgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL3dpbi9VSURlbGVnYXRlLmNwcDoKKyAgICAgICAgKHRvTWVzc2FnZSk6IENoYW5n
ZWQgdG8gcmV0dXJuIHN0ZDo6d3N0cmluZy4KKyAgICAgICAgKHN0cmlwVHJhaWxpbmdTcGFjZXMp
OiBBZGRlZC4KKyAgICAgICAgKGFkZExlYWRpbmdTcGFjZVN0cmlwVHJhaWxpbmdTcGFjZXMpOiBB
ZGRlZC4KKyAgICAgICAgKFVJRGVsZWdhdGU6OnJ1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1l
c3NhZ2UpOiBEb24ndCBhZGQgdHJhaWxpbmcgc3BhY2UuCisgICAgICAgIChVSURlbGVnYXRlOjpy
dW5KYXZhU2NyaXB0Q29uZmlybVBhbmVsV2l0aE1lc3NhZ2UpOiBEaXR0by4KKyAgICAgICAgKFVJ
RGVsZWdhdGU6OnJ1bkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbFdpdGhQcm9tcHQpOiBEaXR0by4K
KyAgICAgICAgKFVJRGVsZWdhdGU6OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNz
YWdlKTogRGl0dG8uCisgICAgICAgIChVSURlbGVnYXRlOjp3ZWJWaWV3QWRkTWVzc2FnZVRvQ29u
c29sZSk6IERpdHRvLgorICAgICAgICAoVUlEZWxlZ2F0ZTo6c2V0U3RhdHVzVGV4dCk6IERpdHRv
LgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHk6CisgICAgICAgIChQ
b3J0LmRvX3RleHRfcmVzdWx0c19kaWZmZXIpOiBTdHJpcCB0cmFpbGluZyBzcGFjZXMgZnJvbSBl
eHBlY3RlZCB0ZXh0LgorICAgICAgICBQbGFuIGlzIHRvIHJlbW92ZSB0aGlzIGFmdGVyIHN0cmlw
cGluZyB0aGUgYWN0dWFsIGV4cGVjdGVkLnR4dCBmaWxlcy4KKworICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAg
KFdUUjo6ZHVtcEZyYW1lVGV4dCk6IFN0cmlwIHRyYWlsaW5nIHNwYWNlcy4KKyAgICAgICAgKFdU
Ujo6SW5qZWN0ZWRCdW5kbGVQYWdlOjp3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0Rm9yRnJhbWUp
OiBEb24ndCBhZGQgdHJhaWxpbmcgc3BhY2UuCisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxl
UGFnZTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6IERpdHRvLgorICAgICAgICAo
V1RSOjpzdHJpcFRyYWlsaW5nU3BhY2VzKTogQWRkZWQuCisgICAgICAgIChXVFI6OmFkZExlYWRp
bmdTcGFjZVN0cmlwVHJhaWxpbmdTcGFjZXMpOiBBZGRlZC4KKyAgICAgICAgKFdUUjo6SW5qZWN0
ZWRCdW5kbGVQYWdlOjp3aWxsQWRkTWVzc2FnZVRvQ29uc29sZSk6IERvbid0IGFkZCB0cmFpbGlu
ZyBzcGFjZS4KKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjp3aWxsUnVuSmF2YVNj
cmlwdEFsZXJ0KTogRGl0dG8uCisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6d2ls
bFJ1bkphdmFTY3JpcHRDb25maXJtKTogRGl0dG8uCisgICAgICAgIChXVFI6OkluamVjdGVkQnVu
ZGxlUGFnZTo6d2lsbFJ1bkphdmFTY3JpcHRQcm9tcHQpOiBEaXR0by4KKwogMjAyMC0wOS0yNSAg
WW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IGRl
ZmF1bHQgYmVoYXZpb3IgZm9yIGdldFVzZXJNZWRpYSByZXF1ZXN0cyBpbiBjYXNlIHdoZXJlIHRo
ZXJlIGlzIG5vIGRlbGVnYXRlIHNldApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0R1bXBSZW5kZXJUcmVlLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5k
ZXJUcmVlLm1tCmluZGV4IDAxMGUyNjg4ODM1YjAxMjIwZWM5NzI2NGRiNGJkMjQxMzJjZjZhOGEu
LjNmMTZkZDY3MDEzZWE3MTc1ZTNlNWQ1NDM5N2QwNzExNWE3N2Y1NmQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KQEAgLTE1MTQsNiArMTUxNCwxMCBAQCBz
dGF0aWMgTlNTdHJpbmcgKmR1bXBGcmFtZXNBc1RleHQoV2ViRnJhbWUgKmZyYW1lKQogICAgICAg
ICB9CiAgICAgfQogCisgICAgLy8gVG8ga2VlcCB0aGluZ3MgdGlkeSwgc3RyaXAgYWxsIHRyYWls
aW5nIHNwYWNlczogdGhleSBhcmUgbm90IGEgbWVhbmluZ2Z1bCBwYXJ0IG9mIGR1bXBBc1RleHQg
dGVzdCBvdXRwdXQuCisgICAgW3Jlc3VsdCByZXBsYWNlT2NjdXJyZW5jZXNPZlN0cmluZzpAIiAr
XG4iIHdpdGhTdHJpbmc6QCJcbiIgb3B0aW9uczpOU1JlZ3VsYXJFeHByZXNzaW9uU2VhcmNoIHJh
bmdlOk5TTWFrZVJhbmdlKDAsIHJlc3VsdC5sZW5ndGgpXTsKKyAgICBbcmVzdWx0IHJlcGxhY2VP
Y2N1cnJlbmNlc09mU3RyaW5nOkAiICskIiB3aXRoU3RyaW5nOkAiIiBvcHRpb25zOk5TUmVndWxh
ckV4cHJlc3Npb25TZWFyY2ggcmFuZ2U6TlNNYWtlUmFuZ2UoMCwgcmVzdWx0Lmxlbmd0aCldOwor
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbQppbmRleCBjYTNlNmQwYWQ4M2JmZTllZDUxYzNk
MWU0MTQ4ZTU5OWFmZmU2YTkwLi44Mjc1MWJjNWI3NDE3MTU1Y2U1YjU0NGFjODcwYTZjOWRkM2Ri
MjEzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29u
dHJvbGxlci5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29u
dHJvbGxlci5tbQpAQCAtMTI3MCw3ICsxMjcwLDggQEAgLSAodm9pZCloYW5kbGVFdmVudDooRE9N
RXZlbnQgKilldmVudAogICAgIH0KICAgICAKICAgICBpZiAoW2V2ZW50IGlzS2luZE9mQ2xhc3M6
W0RPTUtleWJvYXJkRXZlbnQgY2xhc3NdXSkgewotICAgICAgICBwcmludGYoIiAga2V5SWRlbnRp
ZmllcjogJXNcbiIsIFtbKERPTUtleWJvYXJkRXZlbnQqKWV2ZW50IGtleUlkZW50aWZpZXJdIFVU
RjhTdHJpbmddKTsKKyAgICAgICAgYXV0byBrZXlJZGVudGlmaWVyID0gWyhET01LZXlib2FyZEV2
ZW50KilldmVudCBrZXlJZGVudGlmaWVyXTsKKyAgICAgICAgcHJpbnRmKCIgIGtleUlkZW50aWZp
ZXI6JXMlc1xuIiwga2V5SWRlbnRpZmllci5sZW5ndGggPyAiICIgOiAiIiwgW2tleUlkZW50aWZp
ZXIgVVRGOFN0cmluZ10pOwogICAgICAgICBwcmludGYoIiAga2V5TG9jYXRpb246ICAgJWRcbiIs
IFsoRE9NS2V5Ym9hcmRFdmVudCopZXZlbnQgbG9jYXRpb25dKTsKICAgICAgICAgcHJpbnRmKCIg
IG1vZGlmaWVyIGtleXM6IGM6JWQgczolZCBhOiVkIG06JWRcbiIsIAogICAgICAgICAgICAgICAg
WyhET01LZXlib2FyZEV2ZW50KilldmVudCBjdHJsS2V5XSA/IDEgOiAwLCAKZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9GcmFtZUxvYWREZWxlZ2F0ZS5tbSBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9GcmFtZUxvYWREZWxlZ2F0ZS5tbQppbmRleCBiMzhmNGQzN2YwNjcx
NTM1MWM4OWE4NmZlODIwOGI3NmYyMTVhYTdlLi4zNjcxNDkzOWZkYTBhNTY3NDljNzk5ODg2YTFl
YTQzODkyMTg5YTRhIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRnJhbWVM
b2FkRGVsZWdhdGUubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0ZyYW1lTG9hZERl
bGVnYXRlLm1tCkBAIC00MTIsNyArNDEyLDcgQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICop
c2VuZGVyIGRpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZUZvckZyYW1lOihXZWJGcmFtZQogLSAo
dm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RU
b1VSTDooTlNVUkwgKilVUkwgZGVsYXk6KE5TVGltZUludGVydmFsKXNlY29uZHMgZmlyZURhdGU6
KE5TRGF0ZSAqKWRhdGUgZm9yRnJhbWU6KFdlYkZyYW1lICopZnJhbWUKIHsKICAgICBpZiAoIWRv
bmUgJiYgZ1Rlc3RSdW5uZXItPmR1bXBGcmFtZUxvYWRDYWxsYmFja3MoKSkgewotICAgICAgICBO
U1N0cmluZyAqc3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCAtIHdpbGxQ
ZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VSTDogJUAgIiwgW2ZyYW1lIF9kcnRfZGVzY3JpcHRpb25T
dWl0YWJsZUZvclRlc3RSZXN1bHRdLCBbVVJMIF9kcnRfZGVzY3JpcHRpb25TdWl0YWJsZUZvclRl
c3RSZXN1bHRdXTsKKyAgICAgICAgTlNTdHJpbmcgKnN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdX
aXRoRm9ybWF0OkAiJUAgLSB3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkw6ICVAIiwgW2Zy
YW1lIF9kcnRfZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHRdLCBbVVJMIF9kcnRfZGVz
Y3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHRdXTsKICAgICAgICAgcHJpbnRmICgiJXNcbiIs
IFtzdHJpbmcgVVRGOFN0cmluZ10pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlE
ZWxlZ2F0ZS5tbQppbmRleCBmNjk5NTU1MWUwY2RhMTBkNGIyYjc5ZjkyYmE2ZGEzNGJlMzU3Yjg4
Li5hZDNjYTQyMWM1OGE4MjlhZjc2OTkxZTg4ZGRjZmM4ODhlNmM1NDdlIDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbQorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbQpAQCAtNzYsNiArNzYsMTggQEAgLSAoTlNSZWN0KXdl
YlZpZXdGcmFtZTooV2ViVmlldyAqKXNlbmRlcgogICAgIHJldHVybiBOU01ha2VSZWN0KHdpbmRv
d09yaWdpbi54LCB3aW5kb3dPcmlnaW4ueSwgc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQpOwogfQog
CitzdGF0aWMgTlNTdHJpbmcgKnN0cmlwVHJhaWxpbmdTcGFjZXMoTlNTdHJpbmcgKnN0cmluZykK
K3sKKyAgICBhdXRvIHJlc3VsdCA9IFtzdHJpbmcgc3RyaW5nQnlSZXBsYWNpbmdPY2N1cnJlbmNl
c09mU3RyaW5nOkAiICtcbiIgd2l0aFN0cmluZzpAIlxuIiBvcHRpb25zOk5TUmVndWxhckV4cHJl
c3Npb25TZWFyY2ggcmFuZ2U6TlNNYWtlUmFuZ2UoMCwgc3RyaW5nLmxlbmd0aCldOworICAgIHJl
dHVybiBbcmVzdWx0IHN0cmluZ0J5UmVwbGFjaW5nT2NjdXJyZW5jZXNPZlN0cmluZzpAIiArJCIg
d2l0aFN0cmluZzpAIiIgb3B0aW9uczpOU1JlZ3VsYXJFeHByZXNzaW9uU2VhcmNoIHJhbmdlOk5T
TWFrZVJhbmdlKDAsIHJlc3VsdC5sZW5ndGgpXTsKK30KKworc3RhdGljIE5TU3RyaW5nICphZGRM
ZWFkaW5nU3BhY2VTdHJpcFRyYWlsaW5nU3BhY2VzKE5TU3RyaW5nICpzdHJpbmcpCit7CisgICAg
YXV0byByZXN1bHQgPSBzdHJpcFRyYWlsaW5nU3BhY2VzKHN0cmluZyk7CisgICAgcmV0dXJuIChy
ZXN1bHQubGVuZ3RoICYmICFbcmVzdWx0IGhhc1ByZWZpeDpAIlxuIl0pID8gW0AiICIgc3RyaW5n
QnlBcHBlbmRpbmdTdHJpbmc6cmVzdWx0XSA6IHJlc3VsdDsKK30KKwogLSAodm9pZCl3ZWJWaWV3
OihXZWJWaWV3ICopc2VuZGVyIGFkZE1lc3NhZ2VUb0NvbnNvbGU6KE5TRGljdGlvbmFyeSAqKWRp
Y3Rpb25hcnkgd2l0aFNvdXJjZTooTlNTdHJpbmcgKilzb3VyY2UKIHsKICAgICBpZiAoZG9uZSkK
QEAgLTg3LDkgKzk5LDcgQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGFkZE1l
c3NhZ2VUb0NvbnNvbGU6KE5TRGljdGlvbmFyeSAqKWRpY3Rpb25hcnkKICAgICBpZiAocmFuZ2Uu
bG9jYXRpb24gIT0gTlNOb3RGb3VuZCkKICAgICAgICAgbWVzc2FnZSA9IFtbbWVzc2FnZSBzdWJz
dHJpbmdUb0luZGV4OnJhbmdlLmxvY2F0aW9uXSBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzpbW21l
c3NhZ2Ugc3Vic3RyaW5nRnJvbUluZGV4Ok5TTWF4UmFuZ2UocmFuZ2UpXSBsYXN0UGF0aENvbXBv
bmVudF1dOwogCi0gICAgYXV0byBvdXQgPSBnVGVzdFJ1bm5lci0+ZHVtcEpTQ29uc29sZUxvZ0lu
U3RkRXJyKCkgPyBzdGRlcnIgOiBzdGRvdXQ7Ci0gICAgZnByaW50ZihvdXQsICJDT05TT0xFIE1F
U1NBR0U6ICIpOwotICAgIGZwcmludGYob3V0LCAiJXNcbiIsIFttZXNzYWdlIFVURjhTdHJpbmdd
KTsKKyAgICBmcHJpbnRmKGdUZXN0UnVubmVyLT5kdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIoKSA/
IHN0ZGVyciA6IHN0ZG91dCwgIkNPTlNPTEUgTUVTU0FHRTolc1xuIiwgYWRkTGVhZGluZ1NwYWNl
U3RyaXBUcmFpbGluZ1NwYWNlcyhtZXNzYWdlKS5VVEY4U3RyaW5nID86ICIgKG51bGwpIik7CiB9
CiAKIC0gKHZvaWQpbW9kYWxXaW5kb3dXaWxsQ2xvc2U6KE5TTm90aWZpY2F0aW9uICopbm90aWZp
Y2F0aW9uCkBAIC0xMTMsNyArMTIzLDcgQEAgLSAodm9pZCl3ZWJWaWV3UnVuTW9kYWw6KFdlYlZp
ZXcgKilzZW5kZXIKIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBydW5KYXZhU2Ny
aXB0QWxlcnRQYW5lbFdpdGhNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2UgaW5pdGlhdGVkQnlG
cmFtZTooV2ViRnJhbWUgKilmcmFtZQogewogICAgIGlmICghZG9uZSkgewotICAgICAgICBwcmlu
dGYoIkFMRVJUOiAlc1xuIiwgW21lc3NhZ2UgVVRGOFN0cmluZ10pOworICAgICAgICBwcmludGYo
IkFMRVJUOiVzXG4iLCBhZGRMZWFkaW5nU3BhY2VTdHJpcFRyYWlsaW5nU3BhY2VzKG1lc3NhZ2Up
LlVURjhTdHJpbmcgPzogIiAobnVsbCkiKTsKICAgICAgICAgZmZsdXNoKHN0ZG91dCk7CiAgICAg
fQogfQpAQCAtMTIxLDIyICsxMzEsMjEgQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2Vu
ZGVyIHJ1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1lc3NhZ2U6KE5TU3RyaW5nICoKIC0gKEJP
T0wpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBydW5KYXZhU2NyaXB0Q29uZmlybVBhbmVsV2l0
aE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZSBpbml0aWF0ZWRCeUZyYW1lOihXZWJGcmFtZSAq
KWZyYW1lCiB7CiAgICAgaWYgKCFkb25lKQotICAgICAgICBwcmludGYoIkNPTkZJUk06ICVzXG4i
LCBbbWVzc2FnZSBVVEY4U3RyaW5nXSk7CisgICAgICAgIHByaW50ZigiQ09ORklSTTolc1xuIiwg
YWRkTGVhZGluZ1NwYWNlU3RyaXBUcmFpbGluZ1NwYWNlcyhtZXNzYWdlKS5VVEY4U3RyaW5nID86
ICIgKG51bGwpIik7CiAgICAgcmV0dXJuIFlFUzsKIH0KIAogLSAoTlNTdHJpbmcgKil3ZWJWaWV3
OihXZWJWaWV3ICopc2VuZGVyIHJ1bkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbFdpdGhQcm9tcHQ6
KE5TU3RyaW5nICopcHJvbXB0IGRlZmF1bHRUZXh0OihOU1N0cmluZyAqKWRlZmF1bHRUZXh0IGlu
aXRpYXRlZEJ5RnJhbWU6KFdlYkZyYW1lICopZnJhbWUKIHsKICAgICBpZiAoIWRvbmUpCi0gICAg
ICAgIHByaW50ZigiUFJPTVBUOiAlcywgZGVmYXVsdCB0ZXh0OiAlc1xuIiwgW3Byb21wdCBVVEY4
U3RyaW5nXSwgW2RlZmF1bHRUZXh0IFVURjhTdHJpbmddKTsKKyAgICAgICAgcHJpbnRmKCJQUk9N
UFQ6ICVzLCBkZWZhdWx0IHRleHQ6JXNcbiIsIHByb21wdC5VVEY4U3RyaW5nLCBhZGRMZWFkaW5n
U3BhY2VTdHJpcFRyYWlsaW5nU3BhY2VzKGRlZmF1bHRUZXh0KS5VVEY4U3RyaW5nID86ICIgKG51
bGwpIik7CiAgICAgcmV0dXJuIGRlZmF1bHRUZXh0OwogfQogCiAtIChCT09MKXdlYlZpZXc6KFdl
YlZpZXcgKiljIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlOihOU1N0cmlu
ZyAqKW1lc3NhZ2UgaW5pdGlhdGVkQnlGcmFtZTooV2ViRnJhbWUgKilmcmFtZQogewogICAgIGlm
ICghZG9uZSkKLSAgICAgICAgcHJpbnRmKCJDT05GSVJNIE5BVklHQVRJT046ICVzXG4iLCBbbWVz
c2FnZSBVVEY4U3RyaW5nXSk7Ci0gICAgCisgICAgICAgIHByaW50ZigiQ09ORklSTSBOQVZJR0FU
SU9OOiVzXG4iLCBhZGRMZWFkaW5nU3BhY2VTdHJpcFRyYWlsaW5nU3BhY2VzKG1lc3NhZ2UpLlVU
RjhTdHJpbmcgPzogIiAobnVsbCkiKTsKICAgICByZXR1cm4gIWdUZXN0UnVubmVyLT5zaG91bGRT
dGF5T25QYWdlQWZ0ZXJIYW5kbGluZ0JlZm9yZVVubG9hZCgpOwogfQogCkBAIC0yMzUsNyArMjQ0
LDcgQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGV4Y2VlZGVkQXBwbGljYXRp
b25DYWNoZU9yaWdpblF1b3RhRm9yU2VjdXJpdHkKIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAq
KXNlbmRlciBzZXRTdGF0dXNUZXh0OihOU1N0cmluZyAqKXRleHQKIHsKICAgICBpZiAoIWRvbmUg
JiYgZ1Rlc3RSdW5uZXItPmR1bXBTdGF0dXNDYWxsYmFja3MoKSkKLSAgICAgICAgcHJpbnRmKCJV
SSBERUxFR0FURSBTVEFUVVMgQ0FMTEJBQ0s6IHNldFN0YXR1c1RleHQ6JXNcbiIsIFt0ZXh0IFVU
RjhTdHJpbmddKTsKKyAgICAgICAgcHJpbnRmKCJVSSBERUxFR0FURSBTVEFUVVMgQ0FMTEJBQ0s6
IHNldFN0YXR1c1RleHQ6JXNcbiIsIHN0cmlwVHJhaWxpbmdTcGFjZXModGV4dCkuVVRGOFN0cmlu
Zyk7CiB9CiAKIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5
Rm9yR2VvbG9jYXRpb25SZXF1ZXN0RnJvbU9yaWdpbjooV2ViU2VjdXJpdHlPcmlnaW4gKilvcmln
aW4gZnJhbWU6KFdlYkZyYW1lICopZnJhbWUgbGlzdGVuZXI6KGlkPFdlYkFsbG93RGVueVBvbGlj
eUxpc3RlbmVyPilsaXN0ZW5lcgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L0R1bXBSZW5kZXJUcmVlLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVy
VHJlZS5jcHAKaW5kZXggN2FjYTk0Nzg5MmI4OWQxZGE1ZjYyMzZkZGFhNDY1M2VjNDBhZjIxMi4u
YWQ3YTVhMGQ1NTA2ZTlkZTg3YjY2M2QyOTY5Yjk1MmY2YTMzNmExNiAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCkBAIC00ODgsNiArNDg4LDExIEBAIHN0
YXRpYyB3c3RyaW5nIGR1bXBGcmFtZXNBc1RleHQoSVdlYkZyYW1lKiBmcmFtZSkKICAgICAgICAg
fQogICAgIH0KIAorICAgIC8vIFRvIGtlZXAgdGhpbmdzIHRpZHksIHN0cmlwIGFsbCB0cmFpbGlu
ZyBzcGFjZXM6IHRoZXkgYXJlIG5vdCBhIG1lYW5pbmdmdWwgcGFydCBvZiBkdW1wQXNUZXh0IHRl
c3Qgb3V0cHV0LgorICAgIHN0ZDo6d3N0cmluZzo6c2l6ZV90eXBlIHNwYWNlUG9zaXRpb247Cisg
ICAgd2hpbGUgKChzcGFjZVBvc2l0aW9uID0gcmVzdWx0LmZpbmQoTCIgXG4iKSkgIT0gc3RkOjp3
c3RyaW5nOjpucG9zKQorICAgICAgICByZXN1bHQuZXJhc2Uoc3BhY2VQb3NpdGlvbiwgMSk7CisK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0Zy
YW1lTG9hZERlbGVnYXRlLmNwcAppbmRleCA3NTViZWQxNmY2MGVkYzAxMTE1NTIxZTE1OGMwZGJm
MDU1ODhiZjg0Li5mZDc3YWQxYzM5MjYzOGRhOTQxNDNlZTdkNWE4MjFlNjk0MTAyMzEzIDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuY3BwCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5jcHAKQEAgLTI5
Miw3ICsyOTIsNyBAQCBIUkVTVUxUIEZyYW1lTG9hZERlbGVnYXRlOjpkaWRGYWlsTG9hZFdpdGhF
cnJvcihfSW5fb3B0XyBJV2ViVmlldyosIF9Jbl9vcHRfIElXZQogSFJFU1VMVCBGcmFtZUxvYWRE
ZWxlZ2F0ZTo6d2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdFRvVVJMKF9Jbl9vcHRfIElXZWJWaWV3
KiwgX0luXyBCU1RSIHVybCwgZG91YmxlIC8qZGVsYXlTZWNvbmRzKi8sIERBVEUgLypmaXJlRGF0
ZSovLCBfSW5fb3B0XyBJV2ViRnJhbWUqIGZyYW1lKQogewogICAgIGlmICghZG9uZSAmJiBnVGVz
dFJ1bm5lci0+ZHVtcEZyYW1lTG9hZENhbGxiYWNrcygpKQotICAgICAgICBmcHJpbnRmKHRlc3RS
ZXN1bHQsICIlcyAtIHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VSTDogJVMgXG4iLCBkZXNj
cmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChmcmFtZSkuY19zdHIoKSwKKyAgICAgICAgZnBy
aW50Zih0ZXN0UmVzdWx0LCAiJXMgLSB3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkw6ICVT
XG4iLCBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChmcmFtZSkuY19zdHIoKSwKICAg
ICAgICAgICAgICAgICB1cmxTdWl0YWJsZUZvclRlc3RSZXN1bHQoc3RkOjp3c3RyaW5nKHVybCwg
OjpTeXNTdHJpbmdMZW4odXJsKSkpLmNfc3RyKCkpOwogCiAgICAgcmV0dXJuIFNfT0s7CmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVUlEZWxlZ2F0ZS5jcHAgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS93aW4vVUlEZWxlZ2F0ZS5jcHAKaW5kZXggOGVkNmY4NDVmOTdlOTkyOTE0
MDRmZmY0YTFkNzlhZGRhNmEwYzIxNS4uMmFmOGZlODgyMzk3ZWFlNmNhOTJjOTJkMWM4Y2I1MzVh
YmJiYzkzMyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1VJRGVsZWdhdGUu
Y3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9VSURlbGVnYXRlLmNwcApAQCAtNDUz
LDExICs0NTMsMjggQEAgSFJFU1VMVCBVSURlbGVnYXRlOjp3ZWJWaWV3RnJhbWUoX0luX29wdF8g
SVdlYlZpZXcqIC8qc2VuZGVyKi8sIF9PdXRfIFJFQ1QqIGZyYW0KICAgICByZXR1cm4gU19PSzsK
IH0KIAotY29uc3Qgd2NoYXJfdCogdG9NZXNzYWdlKGNvbnN0IEJTVFIgbWVzc2FnZSkKK3N0YXRp
YyBzdGQ6OndzdHJpbmcgc3RyaXBUcmFpbGluZ1NwYWNlcyhjb25zdCBzdGQ6OndzdHJpbmcmIHN0
cmluZykKK3sKKyAgICBhdXRvIHJlc3VsdCA9IHN0cmluZzsKKyAgICBzdGQ6OndzdHJpbmc6OnNp
emVfdHlwZSBzcGFjZVBvc2l0aW9uOworICAgIHdoaWxlICgoc3BhY2VQb3NpdGlvbiA9IHJlc3Vs
dC5maW5kKEwiIFxuIikpICE9IHN0ZDo6d3N0cmluZzo6bnBvcykKKyAgICAgICAgcmVzdWx0LmVy
YXNlKHNwYWNlUG9zaXRpb24sIDEpOworICAgIHdoaWxlICghcmVzdWx0LmVtcHR5KCkgJiYgcmVz
dWx0LmJhY2soKSA9PSAnICcpCisgICAgICAgIHJlc3VsdC5wb3BfYmFjaygpOworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK3N0YXRpYyBzdGQ6OndzdHJpbmcgYWRkTGVhZGluZ1NwYWNlU3RyaXBU
cmFpbGluZ1NwYWNlcyhjb25zdCBzdGQ6OndzdHJpbmcmIHN0cmluZykKK3sKKyAgICBhdXRvIHJl
c3VsdCA9IHN0cmlwVHJhaWxpbmdTcGFjZXMoc3RyaW5nKTsKKyAgICByZXR1cm4gKHJlc3VsdC5l
bXB0eSgpIHx8IHJlc3VsdC5mcm9udCgpID09ICdcbicpID8gcmVzdWx0IDogTCcgJyArIHJlc3Vs
dDsKK30KKworc3RkOjp3c3RyaW5nIHRvTWVzc2FnZShCU1RSIG1lc3NhZ2UpCiB7CiAgICAgYXV0
byBsZW5ndGggPSBTeXNTdHJpbmdMZW4obWVzc2FnZSk7CiAgICAgaWYgKCFsZW5ndGgpCi0gICAg
ICAgIHJldHVybiBtZXNzYWdlOworICAgICAgICByZXR1cm4gTCIiOwogICAgIC8vIFJldHVybiAi
KG51bGwpIiBmb3IgYW4gaW52YWxpZCBVVEYtMTYgc2VxdWVuY2UgdG8gYWxpZ24gd2l0aCBXZWJL
aXRUZXN0UnVubmVyLgogICAgIGF1dG8gdXRmOCA9IFN0cmluZ1ZpZXcodWNoYXJGcm9tKG1lc3Nh
Z2UpLCBsZW5ndGgpLnRyeUdldFV0ZjgoU3RyaWN0Q29udmVyc2lvbik7CiAgICAgaWYgKCF1dGY4
KQpAQCAtNDY1LDEwICs0ODIsMjAgQEAgY29uc3Qgd2NoYXJfdCogdG9NZXNzYWdlKGNvbnN0IEJT
VFIgbWVzc2FnZSkKICAgICByZXR1cm4gbWVzc2FnZTsKIH0KIAorc3RhdGljIHN0ZDo6d3N0cmlu
ZyBhZGRMZWFkaW5nU3BhY2VTdHJpcFRyYWlsaW5nU3BhY2VzKEJTVFIgbWVzc2FnZSkKK3sKKyAg
ICByZXR1cm4gYWRkTGVhZGluZ1NwYWNlU3RyaXBUcmFpbGluZ1NwYWNlcyh0b01lc3NhZ2UobWVz
c2FnZSkpOworfQorCitzdGF0aWMgc3RkOjp3c3RyaW5nIHN0cmlwVHJhaWxpbmdTcGFjZXMoQlNU
UiBtZXNzYWdlKQoreworICAgIHJldHVybiBzdHJpcFRyYWlsaW5nU3BhY2VzKHRvTWVzc2FnZSht
ZXNzYWdlKSk7Cit9CisKIEhSRVNVTFQgVUlEZWxlZ2F0ZTo6cnVuSmF2YVNjcmlwdEFsZXJ0UGFu
ZWxXaXRoTWVzc2FnZShfSW5fb3B0XyBJV2ViVmlldyogLypzZW5kZXIqLywgX0luXyBCU1RSIG1l
c3NhZ2UpCiB7CiAgICAgaWYgKCFkb25lKSB7Ci0gICAgICAgIGZwcmludGYodGVzdFJlc3VsdCwg
IkFMRVJUOiAlU1xuIiwgdG9NZXNzYWdlKG1lc3NhZ2UpKTsKKyAgICAgICAgZnByaW50Zih0ZXN0
UmVzdWx0LCAiQUxFUlQ6JVNcbiIsIGFkZExlYWRpbmdTcGFjZVN0cmlwVHJhaWxpbmdTcGFjZXMo
bWVzc2FnZSkuY19zdHIoKSk7CiAgICAgICAgIGZmbHVzaCh0ZXN0UmVzdWx0KTsKICAgICB9CiAK
QEAgLTQ3OCw3ICs1MDUsNyBAQCBIUkVTVUxUIFVJRGVsZWdhdGU6OnJ1bkphdmFTY3JpcHRBbGVy
dFBhbmVsV2l0aE1lc3NhZ2UoX0luX29wdF8gSVdlYlZpZXcqIC8qc2VuZAogSFJFU1VMVCBVSURl
bGVnYXRlOjpydW5KYXZhU2NyaXB0Q29uZmlybVBhbmVsV2l0aE1lc3NhZ2UoX0luX29wdF8gSVdl
YlZpZXcqIC8qc2VuZGVyKi8sIF9Jbl8gQlNUUiBtZXNzYWdlLCBfT3V0XyBCT09MKiByZXN1bHQp
CiB7CiAgICAgaWYgKCFkb25lKQotICAgICAgICBmcHJpbnRmKHRlc3RSZXN1bHQsICJDT05GSVJN
OiAlU1xuIiwgdG9NZXNzYWdlKG1lc3NhZ2UpKTsKKyAgICAgICAgZnByaW50Zih0ZXN0UmVzdWx0
LCAiQ09ORklSTTolU1xuIiwgYWRkTGVhZGluZ1NwYWNlU3RyaXBUcmFpbGluZ1NwYWNlcyhtZXNz
YWdlKS5jX3N0cigpKTsKIAogICAgICpyZXN1bHQgPSBUUlVFOwogCkBAIC00ODgsNyArNTE1LDcg
QEAgSFJFU1VMVCBVSURlbGVnYXRlOjpydW5KYXZhU2NyaXB0Q29uZmlybVBhbmVsV2l0aE1lc3Nh
Z2UoX0luX29wdF8gSVdlYlZpZXcqIC8qc2UKIEhSRVNVTFQgVUlEZWxlZ2F0ZTo6cnVuSmF2YVNj
cmlwdFRleHRJbnB1dFBhbmVsV2l0aFByb21wdChfSW5fb3B0XyBJV2ViVmlldyogLypzZW5kZXIq
LywgX0luXyBCU1RSIG1lc3NhZ2UsIF9Jbl8gQlNUUiBkZWZhdWx0VGV4dCwgX19kZXJlZl9vcHRf
b3V0IEJTVFIqIHJlc3VsdCkKIHsKICAgICBpZiAoIWRvbmUpCi0gICAgICAgIGZwcmludGYodGVz
dFJlc3VsdCwgIlBST01QVDogJVMsIGRlZmF1bHQgdGV4dDogJVNcbiIsIHRvTWVzc2FnZShtZXNz
YWdlKSwgdG9NZXNzYWdlKGRlZmF1bHRUZXh0KSk7CisgICAgICAgIGZwcmludGYodGVzdFJlc3Vs
dCwgIlBST01QVDogJVMsIGRlZmF1bHQgdGV4dDolU1xuIiwgdG9NZXNzYWdlKG1lc3NhZ2UpLmNf
c3RyKCksIGFkZExlYWRpbmdTcGFjZVN0cmlwVHJhaWxpbmdTcGFjZXMoZGVmYXVsdFRleHQpLmNf
c3RyKCkpOwogCiAgICAgKnJlc3VsdCA9IFN5c0FsbG9jU3RyaW5nKGRlZmF1bHRUZXh0KTsKIApA
QCAtNTAxLDcgKzUyOCw3IEBAIEhSRVNVTFQgVUlEZWxlZ2F0ZTo6cnVuQmVmb3JlVW5sb2FkQ29u
ZmlybVBhbmVsV2l0aE1lc3NhZ2UoX0luX29wdF8gSVdlYlZpZXcqIC8qCiAgICAgICAgIHJldHVy
biBFX1BPSU5URVI7CiAKICAgICBpZiAoIWRvbmUpCi0gICAgICAgIGZwcmludGYodGVzdFJlc3Vs
dCwgIkNPTkZJUk0gTkFWSUdBVElPTjogJVNcbiIsIHRvTWVzc2FnZShtZXNzYWdlKSk7CisgICAg
ICAgIGZwcmludGYodGVzdFJlc3VsdCwgIkNPTkZJUk0gTkFWSUdBVElPTjolU1xuIiwgYWRkTGVh
ZGluZ1NwYWNlU3RyaXBUcmFpbGluZ1NwYWNlcyhtZXNzYWdlKS5jX3N0cigpKTsKIAogICAgICpy
ZXN1bHQgPSAhZ1Rlc3RSdW5uZXItPnNob3VsZFN0YXlPblBhZ2VBZnRlckhhbmRsaW5nQmVmb3Jl
VW5sb2FkKCk7CiAKQEAgLTUyMyw4ICs1NTAsNyBAQCBIUkVTVUxUIFVJRGVsZWdhdGU6OndlYlZp
ZXdBZGRNZXNzYWdlVG9Db25zb2xlKF9Jbl9vcHRfIElXZWJWaWV3KiAvKnNlbmRlciovLCBfSQog
ICAgIH0KIAogICAgIGF1dG8gb3V0ID0gZ1Rlc3RSdW5uZXItPmR1bXBKU0NvbnNvbGVMb2dJblN0
ZEVycigpID8gc3RkZXJyIDogdGVzdFJlc3VsdDsKLSAgICBmcHJpbnRmKG91dCwgIkNPTlNPTEUg
TUVTU0FHRTogIik7Ci0gICAgZnByaW50ZihvdXQsICIlc1xuIiwgdG9VVEY4KG5ld01lc3NhZ2Up
LmNfc3RyKCkpOworICAgIGZwcmludGYob3V0LCAiQ09OU09MRSBNRVNTQUdFOiVTXG4iLCBhZGRM
ZWFkaW5nU3BhY2VTdHJpcFRyYWlsaW5nU3BhY2VzKG5ld01lc3NhZ2UpLmNfc3RyKCkpOwogICAg
IHJldHVybiBTX09LOwogfQogCkBAIC02NzMsNyArNjk5LDcgQEAgSFJFU1VMVCBVSURlbGVnYXRl
Ojp3ZWJWaWV3RGlkSW52YWxpZGF0ZShfSW5fb3B0XyBJV2ViVmlldyogLypzZW5kZXIqLykKIEhS
RVNVTFQgVUlEZWxlZ2F0ZTo6c2V0U3RhdHVzVGV4dChfSW5fb3B0XyBJV2ViVmlldyosIF9Jbl8g
QlNUUiB0ZXh0KQogewogICAgIGlmICghZG9uZSAmJiBnVGVzdFJ1bm5lci0+ZHVtcFN0YXR1c0Nh
bGxiYWNrcygpKQotICAgICAgICBmcHJpbnRmKHRlc3RSZXN1bHQsICJVSSBERUxFR0FURSBTVEFU
VVMgQ0FMTEJBQ0s6IHNldFN0YXR1c1RleHQ6JVNcbiIsIHRvTWVzc2FnZSh0ZXh0KSk7CisgICAg
ICAgIGZwcmludGYodGVzdFJlc3VsdCwgIlVJIERFTEVHQVRFIFNUQVRVUyBDQUxMQkFDSzogc2V0
U3RhdHVzVGV4dDolU1xuIiwgc3RyaXBUcmFpbGluZ1NwYWNlcyh0ZXh0KS5jX3N0cigpKTsKICAg
ICByZXR1cm4gU19PSzsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9w
b3J0L2Jhc2UucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQppbmRleCA3
NTU3MDk0NmM3OTFjMmQyZDIxNjZmNjFhMmU5Y2RiOWQ0MzQ3YjMzLi4zM2E5YTZiMDUwODQzOTk3
MTYxYWYwYmQ0YWUwNDA4MGEwZDIzMzNkIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3BvcnQvYmFzZS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5w
eQpAQCAtMzAwLDYgKzMwMCw5IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgICAgIHJl
dHVybiBGYWxzZQogCiAgICAgZGVmIGRvX3RleHRfcmVzdWx0c19kaWZmZXIoc2VsZiwgZXhwZWN0
ZWRfdGV4dCwgYWN0dWFsX3RleHQpOgorICAgICAgICAjIElnbm9yZSB0cmFpbGluZyBzcGFjZXMg
aW4gZXhwZWN0ZWQgZmlsZXMuIFdlIHdpbGwgcmVtb3ZlIHRoaXMgY29kZSBhZnRlciByZW1vdmlu
ZyB0cmFpbGluZyBzcGFjZXMgZnJvbSBhbGwgZXhwZWN0ZWQudHh0IGZpbGVzLgorICAgICAgICBp
ZiBub3QgZXhwZWN0ZWRfdGV4dC5zdGFydHN3aXRoKCI8P3htbCIpOgorICAgICAgICAgICAgZXhw
ZWN0ZWRfdGV4dCA9IHJlLmNvbXBpbGUoIiArJCIsIHJlLk1VTFRJTElORSkuc3ViKCIiLCBleHBl
Y3RlZF90ZXh0KQogICAgICAgICByZXR1cm4gZXhwZWN0ZWRfdGV4dCAhPSBhY3R1YWxfdGV4dAog
CiAgICAgZGVmIGRvX2F1ZGlvX3Jlc3VsdHNfZGlmZmVyKHNlbGYsIGV4cGVjdGVkX2F1ZGlvLCBh
Y3R1YWxfYXVkaW8pOgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCmluZGV4IGI2NDBmZjI4YWU3NWZk
NjE4MDAzYmY2Zjc1MmUwNWNiMTMwNjM2NzIuLmQ4OWZlYWY5YjZkYWU0Yzk2ODUzMWYwYWI2Mzg1
ODkxYjE0Zjk4ZjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKQEAgLTgzNCwxNyArODM0LDIy
IEBAIHN0YXRpYyBib29sIGhhc0RvY3VtZW50RWxlbWVudChXS0J1bmRsZUZyYW1lUmVmIGZyYW1l
KQogICAgIHJldHVybiBKU1ZhbHVlVG9Cb29sZWFuKGNvbnRleHQsIGRvY3VtZW50RWxlbWVudFZh
bHVlKTsKIH0KIAotc3RhdGljIHZvaWQgZHVtcEZyYW1lVGV4dChXS0J1bmRsZUZyYW1lUmVmIGZy
YW1lLCBTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyKQorc3RhdGljIHZvaWQgZHVtcEZyYW1l
VGV4dChXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBTdHJpbmdCdWlsZGVyJiBidWlsZGVyKQogewog
ICAgIC8vIElmIHRoZSBmcmFtZSBkb2Vzbid0IGhhdmUgYSBkb2N1bWVudCBlbGVtZW50LCBpdHMg
aW5uZXIgdGV4dCB3aWxsIGJlIGFuIGVtcHR5IHN0cmluZywgc28KLSAgICAvLyB3ZSdsbCBlbmQg
dXAganVzdCBhcHBlbmRpbmcgYSBzaW5nbGUgbmV3bGluZSBiZWxvdy4gQnV0IER1bXBSZW5kZXJU
cmVlIGRvZXNuJ3QgYXBwZW5kCi0gICAgLy8gYW55dGhpbmcgaW4gdGhpcyBjYXNlLCBzbyB3ZSBz
aG91bGRuJ3QgZWl0aGVyLgorICAgIC8vIHdlJ2xsIGVuZCB1cCBqdXN0IGFwcGVuZGluZyBhIHNp
bmdsZSBuZXdsaW5lIGJlbG93LiBTaW5jZSBEdW1wUmVuZGVyVHJlZSBkaWRuJ3QgYXBwZW5kCisg
ICAgLy8gYW55dGhpbmcgaW4gdGhpcyBjYXNlLCB3ZSBkZWNpZGVkIHRvIHByZXNlcnZlIHRoYXQg
YmVoYXZpb3IuCiAgICAgaWYgKCFoYXNEb2N1bWVudEVsZW1lbnQoZnJhbWUpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gdGV4dCA9IGFkb3B0V0soV0tC
dW5kbGVGcmFtZUNvcHlJbm5lclRleHQoZnJhbWUpKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCh0b1dURlN0cmluZyh0ZXh0KSk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJ1xuJyk7Cisg
ICAgLy8gVG8ga2VlcCB0aGluZ3MgdGlkeSwgc3RyaXAgYWxsIHRyYWlsaW5nIHNwYWNlczogdGhl
eSBhcmUgbm90IGEgbWVhbmluZ2Z1bCBwYXJ0IG9mIGR1bXBBc1RleHQgdGVzdCBvdXRwdXQuCisg
ICAgLy8gQnJlYWtpbmcgdGhlIHN0cmluZyB1cCBpbnRvIGxpbmVzIGxldHMgdXMgZWZmaWNpZW50
bHkgc3RyaXAgYW5kIGhhcyBhIHNpZGUgZWZmZWN0IG9mIGFkZGluZyBhIG5ld2xpbmUgYWZ0ZXIg
dGhlIGxhc3QgbGluZS4KKyAgICBhdXRvIHRleHQgPSB0b1dURlN0cmluZyhhZG9wdFdLKFdLQnVu
ZGxlRnJhbWVDb3B5SW5uZXJUZXh0KGZyYW1lKSkpOworICAgIGZvciAoYXV0byBsaW5lIDogU3Ry
aW5nVmlldyh0ZXh0KS5zcGxpdEFsbG93aW5nRW1wdHlFbnRyaWVzKCdcbicpKSB7CisgICAgICAg
IHdoaWxlIChsaW5lLmVuZHNXaXRoKCcgJykpCisgICAgICAgICAgICBsaW5lID0gbGluZS5zdWJz
dHJpbmcoMCwgbGluZS5sZW5ndGgoKSAtIDEpOworICAgICAgICBidWlsZGVyLmFwcGVuZChsaW5l
LCAnXG4nKTsKKyAgICB9CiB9CiAKIHN0YXRpYyB2b2lkIGR1bXBEZXNjZW5kYW50RnJhbWVzVGV4
dChXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyKQpA
QCAtMTA1Niw5ICsxMDYxLDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OndpbGxQZXJmb3Jt
Q2xpZW50UmVkaXJlY3RGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYsIFdLQnUKIAogICAgIFN0cmlu
Z0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKICAgICBkdW1wRnJhbWVEZXNjcmlwdGlvblN1aXRhYmxl
Rm9yVGVzdFJlc3VsdChmcmFtZSwgc3RyaW5nQnVpbGRlcik7Ci0gICAgc3RyaW5nQnVpbGRlci5h
cHBlbmRMaXRlcmFsKCIgLSB3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkw6ICIpOwotICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKHBhdGhTdWl0YWJsZUZvclRlc3RSZXN1bHQodXJsKSk7Ci0g
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgXG4iKTsKKyAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgiIC0gd2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdFRvVVJMOiAiLCBwYXRoU3VpdGFi
bGVGb3JUZXN0UmVzdWx0KHVybCksICdcbicpOwogICAgIGluamVjdGVkQnVuZGxlLm91dHB1dFRl
eHQoc3RyaW5nQnVpbGRlci50b1N0cmluZygpKTsKIH0KIApAQCAtMTM0NSw3ICsxMzQ4LDcgQEAg
V0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uIEluamVjdGVkQnVuZGxlUGFnZTo6ZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbihXS0IKIAogICAgIGlmIChpbmplY3RlZEJ1bmRsZS50ZXN0UnVu
bmVyKCktPnNob3VsZER1bXBQb2xpY3lDYWxsYmFja3MoKSkgewogICAgICAgICBTdHJpbmdCdWls
ZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
IC0gZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiBcbiIpOworICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZExpdGVyYWwoIiAtIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25c
biIpOwogICAgICAgICBkdW1wUmVxdWVzdERlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0
KHJlcXVlc3QsIHN0cmluZ0J1aWxkZXIpOwogICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExp
dGVyYWwoIiBpcyBtYWluIGZyYW1lIC0gIik7CiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KFdLQnVuZGxlRnJhbWVJc01haW5GcmFtZShmcmFtZSkgPyAieWVzIiA6ICJubyIpOwpAQCAtMTQ0
OSw2ICsxNDUyLDIzIEBAIHVpbnQ2NF90IEluamVjdGVkQnVuZGxlUGFnZTo6ZGlkRXhjZWVkRGF0
YWJhc2VRdW90YShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tTZWN1CiAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEluamVjdGVkQnVuZGxlUGFnZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8p
KS0+ZGlkRXhjZWVkRGF0YWJhc2VRdW90YShvcmlnaW4sIGRhdGFiYXNlTmFtZSwgZGF0YWJhc2VE
aXNwbGF5TmFtZSwgY3VycmVudFF1b3RhQnl0ZXMsIGN1cnJlbnRPcmlnaW5Vc2FnZUJ5dGVzLCBj
dXJyZW50RGF0YWJhc2VVc2FnZUJ5dGVzLCBleHBlY3RlZFVzYWdlQnl0ZXMpOwogfQogCitzdGF0
aWMgV1RGOjpTdHJpbmcgc3RyaXBUcmFpbGluZ1NwYWNlc0FkZE5ld2xpbmUoY29uc3QgV1RGOjpT
dHJpbmcmIHN0cmluZykKK3sKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgZm9yIChh
dXRvIGxpbmUgOiBTdHJpbmdWaWV3KHN0cmluZykuc3BsaXRBbGxvd2luZ0VtcHR5RW50cmllcygn
XG4nKSkgeworICAgICAgICB3aGlsZSAobGluZS5lbmRzV2l0aCgnICcpKQorICAgICAgICAgICAg
bGluZSA9IGxpbmUuc3Vic3RyaW5nKDAsIGxpbmUubGVuZ3RoKCkgLSAxKTsKKyAgICAgICAgYnVp
bGRlci5hcHBlbmQobGluZSwgJ1xuJyk7CisgICAgfQorICAgIHJldHVybiBidWlsZGVyLnRvU3Ry
aW5nKCk7Cit9CisKK3N0YXRpYyBXVEY6OlN0cmluZyBhZGRMZWFkaW5nU3BhY2VTdHJpcFRyYWls
aW5nU3BhY2VzQWRkTmV3bGluZShjb25zdCBXVEY6OlN0cmluZyYgc3RyaW5nKQoreworICAgIGF1
dG8gcmVzdWx0ID0gc3RyaXBUcmFpbGluZ1NwYWNlc0FkZE5ld2xpbmUoc3RyaW5nKTsKKyAgICBy
ZXR1cm4gKHJlc3VsdC5pc0VtcHR5KCkgfHwgcmVzdWx0LnN0YXJ0c1dpdGgoJ1xuJykpID8gcmVz
dWx0IDogbWFrZVN0cmluZygnICcsIHJlc3VsdCk7Cit9CisKIHN0YXRpYyBXVEY6OlN0cmluZyBs
YXN0RmlsZVVSTFBhdGhDb21wb25lbnQoY29uc3QgV1RGOjpTdHJpbmcmIHBhdGgpCiB7CiAgICAg
c2l6ZV90IHBvcyA9IHBhdGguZmluZCgiZmlsZTovLyIpOwpAQCAtMTQ4NSwxNSArMTUwNSwxMSBA
QCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6d2lsbEFkZE1lc3NhZ2VUb0NvbnNvbGUoV0tTdHJp
bmdSZWYgbWVzc2FnZSkKICAgICAgICAgLy8gRklYTUU6IFRoZSBjb2RlIGJlbG93IGRvZXMgbm90
IGhhbmRsZSBhZGRpdGlvbmFsIHRleHQgYWZ0ZXIgdXJsIG5vciBtdWx0aXBsZSB1cmxzLiBUaGlz
IG1hdGNoZXMgRHVtcFJlbmRlclRyZWUgaW1wbGVtZW50YXRpb24uCiAgICAgICAgIG1lc3NhZ2VT
dHJpbmcgPSBtZXNzYWdlU3RyaW5nLnN1YnN0cmluZygwLCBmaWxlUHJvdG9jb2xTdGFydCkgKyBs
YXN0RmlsZVVSTFBhdGhDb21wb25lbnQobWVzc2FnZVN0cmluZy5zdWJzdHJpbmcoZmlsZVByb3Rv
Y29sU3RhcnQpKTsKIAotICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIkNPTlNPTEUgTUVTU0FHRTogIik7Ci0gICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQobWVzc2FnZVN0cmluZyk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
J1xuJyk7Ci0KKyAgICBtZXNzYWdlU3RyaW5nID0gbWFrZVN0cmluZygiQ09OU09MRSBNRVNTQUdF
OiIsIGFkZExlYWRpbmdTcGFjZVN0cmlwVHJhaWxpbmdTcGFjZXNBZGROZXdsaW5lKG1lc3NhZ2VT
dHJpbmcpKTsKICAgICBpZiAoaW5qZWN0ZWRCdW5kbGUuZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJy
KCkpCi0gICAgICAgIGluamVjdGVkQnVuZGxlLmR1bXBUb1N0ZEVycihzdHJpbmdCdWlsZGVyLnRv
U3RyaW5nKCkpOworICAgICAgICBpbmplY3RlZEJ1bmRsZS5kdW1wVG9TdGRFcnIobWVzc2FnZVN0
cmluZyk7CiAgICAgZWxzZQotICAgICAgICBpbmplY3RlZEJ1bmRsZS5vdXRwdXRUZXh0KHN0cmlu
Z0J1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgICAgIGluamVjdGVkQnVuZGxlLm91dHB1dFRleHQo
bWVzc2FnZVN0cmluZyk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjp3aWxsU2V0U3Rh
dHVzYmFyVGV4dChXS1N0cmluZ1JlZiBzdGF0dXNiYXJUZXh0KQpAQCAtMTUxOCwxMSArMTUzNCw3
IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjp3aWxsUnVuSmF2YVNjcmlwdEFsZXJ0KFdLU3Ry
aW5nUmVmIG1lc3NhZ2UsIFdLQnVuZGxlRnJhCiAgICAgaWYgKCFpbmplY3RlZEJ1bmRsZS5pc1Rl
c3RSdW5uaW5nKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5n
QnVpbGRlcjsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIkFMRVJUOiAiKTsKLSAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh0b1dURlN0cmluZyhtZXNzYWdlKSk7Ci0gICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgaW5qZWN0ZWRCdW5kbGUub3V0cHV0VGV4dChzdHJp
bmdCdWlsZGVyLnRvU3RyaW5nKCkpOworICAgIGluamVjdGVkQnVuZGxlLm91dHB1dFRleHQobWFr
ZVN0cmluZygiQUxFUlQ6IiwgYWRkTGVhZGluZ1NwYWNlU3RyaXBUcmFpbGluZ1NwYWNlc0FkZE5l
d2xpbmUodG9XVEZTdHJpbmcobWVzc2FnZSkpKSk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQ
YWdlOjp3aWxsUnVuSmF2YVNjcmlwdENvbmZpcm0oV0tTdHJpbmdSZWYgbWVzc2FnZSwgV0tCdW5k
bGVGcmFtZVJlZikKQEAgLTE1MzEsMjIgKzE1NDMsMTIgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBh
Z2U6OndpbGxSdW5KYXZhU2NyaXB0Q29uZmlybShXS1N0cmluZ1JlZiBtZXNzYWdlLCBXS0J1bmRs
ZUYKICAgICBpZiAoIWluamVjdGVkQnVuZGxlLmlzVGVzdFJ1bm5pbmcoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwotICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kTGl0ZXJhbCgiQ09ORklSTTogIik7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
dG9XVEZTdHJpbmcobWVzc2FnZSkpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCdcbicpOwot
ICAgIGluamVjdGVkQnVuZGxlLm91dHB1dFRleHQoc3RyaW5nQnVpbGRlci50b1N0cmluZygpKTsK
KyAgICBpbmplY3RlZEJ1bmRsZS5vdXRwdXRUZXh0KG1ha2VTdHJpbmcoIkNPTkZJUk06IiwgYWRk
TGVhZGluZ1NwYWNlU3RyaXBUcmFpbGluZ1NwYWNlc0FkZE5ld2xpbmUodG9XVEZTdHJpbmcobWVz
c2FnZSkpKSk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjp3aWxsUnVuSmF2YVNjcmlw
dFByb21wdChXS1N0cmluZ1JlZiBtZXNzYWdlLCBXS1N0cmluZ1JlZiBkZWZhdWx0VmFsdWUsIFdL
QnVuZGxlRnJhbWVSZWYpCiB7Ci0gICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwotICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiUFJPTVBUOiAiKTsKLSAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZCh0b1dURlN0cmluZyhtZXNzYWdlKSk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBl
bmRMaXRlcmFsKCIsIGRlZmF1bHQgdGV4dDogIik7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
dG9XVEZTdHJpbmcoZGVmYXVsdFZhbHVlKSk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJ1xu
Jyk7Ci0gICAgSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLm91dHB1dFRleHQoc3RyaW5nQnVp
bGRlci50b1N0cmluZygpKTsKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkub3V0cHV0
VGV4dChtYWtlU3RyaW5nKCJQUk9NUFQ6ICIsIHRvV1RGU3RyaW5nKG1lc3NhZ2UpLCAiLCBkZWZh
dWx0IHRleHQ6IiwgYWRkTGVhZGluZ1NwYWNlU3RyaXBUcmFpbGluZ1NwYWNlc0FkZE5ld2xpbmUo
dG9XVEZTdHJpbmcoZGVmYXVsdFZhbHVlKSkpKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZVBh
Z2U6OmRpZFJlYWNoQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKFdLU2VjdXJpdHlPcmlnaW5S
ZWYgb3JpZ2luLCBpbnQ2NF90IHRvdGFsQnl0ZXNOZWVkZWQpCg==
</data>
<flag name="commit-queue"
          id="425581"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409779</attachid>
            <date>2020-09-26 08:35:46 -0700</date>
            <delta_ts>2020-09-26 13:43:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216944-20200926083546.patch</filename>
            <type>text/plain</type>
            <size>24172</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3NTc2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzg2ZTEzOTQwMjUyNGRmOTUzY2M4M2ExZDIzOTE1MjA4
MGZiYjk1ZS4uNjQzODMyODQzNWNkN2Y4Y2YxMGVhZTYyNzczZDJmZmU4OTRjMzMwYiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1
IEBACisyMDIwLTA5LTI1ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAg
ICBDaGFuZ2UgZHVtcEFzVGV4dCB0byBzdHJpcCB0cmFpbGluZyBzcGFjZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjk0NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IEFsYW4gQnVqdGFzLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1
bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAoZHVtcEZyYW1lc0FzVGV4dCk6IFN0cmlwIHRyYWls
aW5nIHNwYWNlcy4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRnJhbWVMb2FkRGVsZWdh
dGUubW06CisgICAgICAgICgtW0ZyYW1lTG9hZERlbGVnYXRlIHdlYlZpZXc6d2lsbFBlcmZvcm1D
bGllbnRSZWRpcmVjdFRvVVJMOmRlbGF5OmZpcmVEYXRlOmZvckZyYW1lOl0pOgorICAgICAgICBE
b24ndCBhZGQgdHJhaWxpbmcgc3BhY2UuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1VJ
RGVsZWdhdGUubW06CisgICAgICAgICgtW1VJRGVsZWdhdGUgd2ViVmlldzphZGRNZXNzYWdlVG9D
b25zb2xlOndpdGhTb3VyY2U6XSk6IERpdHRvLgorICAgICAgICAoYWRkTGVhZGluZ1NwYWNlU3Ry
aXBUcmFpbGluZ1NwYWNlcyk6IEFkZGVkLgorICAgICAgICAoc3RyaXBUcmFpbGluZ1NwYWNlcyk6
IEFkZGVkLgorICAgICAgICAoLVtVSURlbGVnYXRlIHdlYlZpZXc6cnVuSmF2YVNjcmlwdEFsZXJ0
UGFuZWxXaXRoTWVzc2FnZTppbml0aWF0ZWRCeUZyYW1lOl0pOiBEb24ndCBhZGQgdHJhaWxpbmcg
c3BhY2UuCisgICAgICAgICgtW1VJRGVsZWdhdGUgd2ViVmlldzpydW5KYXZhU2NyaXB0Q29uZmly
bVBhbmVsV2l0aE1lc3NhZ2U6aW5pdGlhdGVkQnlGcmFtZTpdKTogRGl0dG8uCisgICAgICAgICgt
W1VJRGVsZWdhdGUgd2ViVmlldzpydW5KYXZhU2NyaXB0VGV4dElucHV0UGFuZWxXaXRoUHJvbXB0
OmRlZmF1bHRUZXh0OmluaXRpYXRlZEJ5RnJhbWU6XSk6IERpdHRvLgorICAgICAgICAoLVtVSURl
bGVnYXRlIHdlYlZpZXc6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsV2l0aE1lc3NhZ2U6aW5p
dGlhdGVkQnlGcmFtZTpdKTogRGl0dG8uCisgICAgICAgICgtW1VJRGVsZWdhdGUgd2ViVmlldzpz
ZXRTdGF0dXNUZXh0Ol0pOiBEaXR0by4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9E
dW1wUmVuZGVyVHJlZS5jcHA6CisgICAgICAgIChkdW1wRnJhbWVzQXNUZXh0KTogU3RyaXAgdHJh
aWxpbmcgc3BhY2VzLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxl
Z2F0ZS5jcHA6CisgICAgICAgIChGcmFtZUxvYWREZWxlZ2F0ZTo6d2lsbFBlcmZvcm1DbGllbnRS
ZWRpcmVjdFRvVVJMKTogRG9uJ3QgYWRkIHRyYWlsaW5nIHNwYWNlLgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL3dpbi9VSURlbGVnYXRlLmNwcDoKKyAgICAgICAgKHRvTWVzc2FnZSk6IENoYW5n
ZWQgdG8gcmV0dXJuIHN0ZDo6d3N0cmluZy4KKyAgICAgICAgKHN0cmlwVHJhaWxpbmdTcGFjZXMp
OiBBZGRlZC4KKyAgICAgICAgKGFkZExlYWRpbmdTcGFjZVN0cmlwVHJhaWxpbmdTcGFjZXMpOiBB
ZGRlZC4KKyAgICAgICAgKFVJRGVsZWdhdGU6OnJ1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1l
c3NhZ2UpOiBEb24ndCBhZGQgdHJhaWxpbmcgc3BhY2UuCisgICAgICAgIChVSURlbGVnYXRlOjpy
dW5KYXZhU2NyaXB0Q29uZmlybVBhbmVsV2l0aE1lc3NhZ2UpOiBEaXR0by4KKyAgICAgICAgKFVJ
RGVsZWdhdGU6OnJ1bkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbFdpdGhQcm9tcHQpOiBEaXR0by4K
KyAgICAgICAgKFVJRGVsZWdhdGU6OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNz
YWdlKTogRGl0dG8uCisgICAgICAgIChVSURlbGVnYXRlOjp3ZWJWaWV3QWRkTWVzc2FnZVRvQ29u
c29sZSk6IERpdHRvLgorICAgICAgICAoVUlEZWxlZ2F0ZTo6c2V0U3RhdHVzVGV4dCk6IERpdHRv
LgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHk6CisgICAgICAgIChQ
b3J0LmRvX3RleHRfcmVzdWx0c19kaWZmZXIpOiBTdHJpcCB0cmFpbGluZyBzcGFjZXMgZnJvbSBl
eHBlY3RlZCB0ZXh0LgorICAgICAgICBQbGFuIGlzIHRvIHJlbW92ZSB0aGlzIGFmdGVyIHN0cmlw
cGluZyB0aGUgYWN0dWFsIGV4cGVjdGVkLnR4dCBmaWxlcy4KKworICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAg
KFdUUjo6ZHVtcEZyYW1lVGV4dCk6IFN0cmlwIHRyYWlsaW5nIHNwYWNlcy4KKyAgICAgICAgKFdU
Ujo6SW5qZWN0ZWRCdW5kbGVQYWdlOjp3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0Rm9yRnJhbWUp
OiBEb24ndCBhZGQgdHJhaWxpbmcgc3BhY2UuCisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxl
UGFnZTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6IERpdHRvLgorICAgICAgICAo
V1RSOjpzdHJpcFRyYWlsaW5nU3BhY2VzKTogQWRkZWQuCisgICAgICAgIChXVFI6OmFkZExlYWRp
bmdTcGFjZVN0cmlwVHJhaWxpbmdTcGFjZXMpOiBBZGRlZC4KKyAgICAgICAgKFdUUjo6SW5qZWN0
ZWRCdW5kbGVQYWdlOjp3aWxsQWRkTWVzc2FnZVRvQ29uc29sZSk6IERvbid0IGFkZCB0cmFpbGlu
ZyBzcGFjZS4KKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjp3aWxsUnVuSmF2YVNj
cmlwdEFsZXJ0KTogRGl0dG8uCisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6d2ls
bFJ1bkphdmFTY3JpcHRDb25maXJtKTogRGl0dG8uCisgICAgICAgIChXVFI6OkluamVjdGVkQnVu
ZGxlUGFnZTo6d2lsbFJ1bkphdmFTY3JpcHRQcm9tcHQpOiBEaXR0by4KKwogMjAyMC0wOS0yNSAg
WW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IGRl
ZmF1bHQgYmVoYXZpb3IgZm9yIGdldFVzZXJNZWRpYSByZXF1ZXN0cyBpbiBjYXNlIHdoZXJlIHRo
ZXJlIGlzIG5vIGRlbGVnYXRlIHNldApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0R1bXBSZW5kZXJUcmVlLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5k
ZXJUcmVlLm1tCmluZGV4IDAxMGUyNjg4ODM1YjAxMjIwZWM5NzI2NGRiNGJkMjQxMzJjZjZhOGEu
LjNmMTZkZDY3MDEzZWE3MTc1ZTNlNWQ1NDM5N2QwNzExNWE3N2Y1NmQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KQEAgLTE1MTQsNiArMTUxNCwxMCBAQCBz
dGF0aWMgTlNTdHJpbmcgKmR1bXBGcmFtZXNBc1RleHQoV2ViRnJhbWUgKmZyYW1lKQogICAgICAg
ICB9CiAgICAgfQogCisgICAgLy8gVG8ga2VlcCB0aGluZ3MgdGlkeSwgc3RyaXAgYWxsIHRyYWls
aW5nIHNwYWNlczogdGhleSBhcmUgbm90IGEgbWVhbmluZ2Z1bCBwYXJ0IG9mIGR1bXBBc1RleHQg
dGVzdCBvdXRwdXQuCisgICAgW3Jlc3VsdCByZXBsYWNlT2NjdXJyZW5jZXNPZlN0cmluZzpAIiAr
XG4iIHdpdGhTdHJpbmc6QCJcbiIgb3B0aW9uczpOU1JlZ3VsYXJFeHByZXNzaW9uU2VhcmNoIHJh
bmdlOk5TTWFrZVJhbmdlKDAsIHJlc3VsdC5sZW5ndGgpXTsKKyAgICBbcmVzdWx0IHJlcGxhY2VP
Y2N1cnJlbmNlc09mU3RyaW5nOkAiICskIiB3aXRoU3RyaW5nOkAiIiBvcHRpb25zOk5TUmVndWxh
ckV4cHJlc3Npb25TZWFyY2ggcmFuZ2U6TlNNYWtlUmFuZ2UoMCwgcmVzdWx0Lmxlbmd0aCldOwor
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbQppbmRleCBjYTNlNmQwYWQ4M2JmZTllZDUxYzNk
MWU0MTQ4ZTU5OWFmZmU2YTkwLi44Mjc1MWJjNWI3NDE3MTU1Y2U1YjU0NGFjODcwYTZjOWRkM2Ri
MjEzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29u
dHJvbGxlci5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29u
dHJvbGxlci5tbQpAQCAtMTI3MCw3ICsxMjcwLDggQEAgLSAodm9pZCloYW5kbGVFdmVudDooRE9N
RXZlbnQgKilldmVudAogICAgIH0KICAgICAKICAgICBpZiAoW2V2ZW50IGlzS2luZE9mQ2xhc3M6
W0RPTUtleWJvYXJkRXZlbnQgY2xhc3NdXSkgewotICAgICAgICBwcmludGYoIiAga2V5SWRlbnRp
ZmllcjogJXNcbiIsIFtbKERPTUtleWJvYXJkRXZlbnQqKWV2ZW50IGtleUlkZW50aWZpZXJdIFVU
RjhTdHJpbmddKTsKKyAgICAgICAgYXV0byBrZXlJZGVudGlmaWVyID0gWyhET01LZXlib2FyZEV2
ZW50KilldmVudCBrZXlJZGVudGlmaWVyXTsKKyAgICAgICAgcHJpbnRmKCIgIGtleUlkZW50aWZp
ZXI6JXMlc1xuIiwga2V5SWRlbnRpZmllci5sZW5ndGggPyAiICIgOiAiIiwgW2tleUlkZW50aWZp
ZXIgVVRGOFN0cmluZ10pOwogICAgICAgICBwcmludGYoIiAga2V5TG9jYXRpb246ICAgJWRcbiIs
IFsoRE9NS2V5Ym9hcmRFdmVudCopZXZlbnQgbG9jYXRpb25dKTsKICAgICAgICAgcHJpbnRmKCIg
IG1vZGlmaWVyIGtleXM6IGM6JWQgczolZCBhOiVkIG06JWRcbiIsIAogICAgICAgICAgICAgICAg
WyhET01LZXlib2FyZEV2ZW50KilldmVudCBjdHJsS2V5XSA/IDEgOiAwLCAKZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9GcmFtZUxvYWREZWxlZ2F0ZS5tbSBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9GcmFtZUxvYWREZWxlZ2F0ZS5tbQppbmRleCBiMzhmNGQzN2YwNjcx
NTM1MWM4OWE4NmZlODIwOGI3NmYyMTVhYTdlLi4zNjcxNDkzOWZkYTBhNTY3NDljNzk5ODg2YTFl
YTQzODkyMTg5YTRhIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRnJhbWVM
b2FkRGVsZWdhdGUubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0ZyYW1lTG9hZERl
bGVnYXRlLm1tCkBAIC00MTIsNyArNDEyLDcgQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICop
c2VuZGVyIGRpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZUZvckZyYW1lOihXZWJGcmFtZQogLSAo
dm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RU
b1VSTDooTlNVUkwgKilVUkwgZGVsYXk6KE5TVGltZUludGVydmFsKXNlY29uZHMgZmlyZURhdGU6
KE5TRGF0ZSAqKWRhdGUgZm9yRnJhbWU6KFdlYkZyYW1lICopZnJhbWUKIHsKICAgICBpZiAoIWRv
bmUgJiYgZ1Rlc3RSdW5uZXItPmR1bXBGcmFtZUxvYWRDYWxsYmFja3MoKSkgewotICAgICAgICBO
U1N0cmluZyAqc3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCAtIHdpbGxQ
ZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VSTDogJUAgIiwgW2ZyYW1lIF9kcnRfZGVzY3JpcHRpb25T
dWl0YWJsZUZvclRlc3RSZXN1bHRdLCBbVVJMIF9kcnRfZGVzY3JpcHRpb25TdWl0YWJsZUZvclRl
c3RSZXN1bHRdXTsKKyAgICAgICAgTlNTdHJpbmcgKnN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdX
aXRoRm9ybWF0OkAiJUAgLSB3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkw6ICVAIiwgW2Zy
YW1lIF9kcnRfZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHRdLCBbVVJMIF9kcnRfZGVz
Y3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHRdXTsKICAgICAgICAgcHJpbnRmICgiJXNcbiIs
IFtzdHJpbmcgVVRGOFN0cmluZ10pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlE
ZWxlZ2F0ZS5tbQppbmRleCBmNjk5NTU1MWUwY2RhMTBkNGIyYjc5ZjkyYmE2ZGEzNGJlMzU3Yjg4
Li5hZDNjYTQyMWM1OGE4MjlhZjc2OTkxZTg4ZGRjZmM4ODhlNmM1NDdlIDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbQorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbQpAQCAtNzYsNiArNzYsMTggQEAgLSAoTlNSZWN0KXdl
YlZpZXdGcmFtZTooV2ViVmlldyAqKXNlbmRlcgogICAgIHJldHVybiBOU01ha2VSZWN0KHdpbmRv
d09yaWdpbi54LCB3aW5kb3dPcmlnaW4ueSwgc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQpOwogfQog
CitzdGF0aWMgTlNTdHJpbmcgKnN0cmlwVHJhaWxpbmdTcGFjZXMoTlNTdHJpbmcgKnN0cmluZykK
K3sKKyAgICBhdXRvIHJlc3VsdCA9IFtzdHJpbmcgc3RyaW5nQnlSZXBsYWNpbmdPY2N1cnJlbmNl
c09mU3RyaW5nOkAiICtcbiIgd2l0aFN0cmluZzpAIlxuIiBvcHRpb25zOk5TUmVndWxhckV4cHJl
c3Npb25TZWFyY2ggcmFuZ2U6TlNNYWtlUmFuZ2UoMCwgc3RyaW5nLmxlbmd0aCldOworICAgIHJl
dHVybiBbcmVzdWx0IHN0cmluZ0J5UmVwbGFjaW5nT2NjdXJyZW5jZXNPZlN0cmluZzpAIiArJCIg
d2l0aFN0cmluZzpAIiIgb3B0aW9uczpOU1JlZ3VsYXJFeHByZXNzaW9uU2VhcmNoIHJhbmdlOk5T
TWFrZVJhbmdlKDAsIHJlc3VsdC5sZW5ndGgpXTsKK30KKworc3RhdGljIE5TU3RyaW5nICphZGRM
ZWFkaW5nU3BhY2VTdHJpcFRyYWlsaW5nU3BhY2VzKE5TU3RyaW5nICpzdHJpbmcpCit7CisgICAg
YXV0byByZXN1bHQgPSBzdHJpcFRyYWlsaW5nU3BhY2VzKHN0cmluZyk7CisgICAgcmV0dXJuIChy
ZXN1bHQubGVuZ3RoICYmICFbcmVzdWx0IGhhc1ByZWZpeDpAIlxuIl0pID8gW0AiICIgc3RyaW5n
QnlBcHBlbmRpbmdTdHJpbmc6cmVzdWx0XSA6IHJlc3VsdDsKK30KKwogLSAodm9pZCl3ZWJWaWV3
OihXZWJWaWV3ICopc2VuZGVyIGFkZE1lc3NhZ2VUb0NvbnNvbGU6KE5TRGljdGlvbmFyeSAqKWRp
Y3Rpb25hcnkgd2l0aFNvdXJjZTooTlNTdHJpbmcgKilzb3VyY2UKIHsKICAgICBpZiAoZG9uZSkK
QEAgLTg3LDkgKzk5LDcgQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGFkZE1l
c3NhZ2VUb0NvbnNvbGU6KE5TRGljdGlvbmFyeSAqKWRpY3Rpb25hcnkKICAgICBpZiAocmFuZ2Uu
bG9jYXRpb24gIT0gTlNOb3RGb3VuZCkKICAgICAgICAgbWVzc2FnZSA9IFtbbWVzc2FnZSBzdWJz
dHJpbmdUb0luZGV4OnJhbmdlLmxvY2F0aW9uXSBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzpbW21l
c3NhZ2Ugc3Vic3RyaW5nRnJvbUluZGV4Ok5TTWF4UmFuZ2UocmFuZ2UpXSBsYXN0UGF0aENvbXBv
bmVudF1dOwogCi0gICAgYXV0byBvdXQgPSBnVGVzdFJ1bm5lci0+ZHVtcEpTQ29uc29sZUxvZ0lu
U3RkRXJyKCkgPyBzdGRlcnIgOiBzdGRvdXQ7Ci0gICAgZnByaW50ZihvdXQsICJDT05TT0xFIE1F
U1NBR0U6ICIpOwotICAgIGZwcmludGYob3V0LCAiJXNcbiIsIFttZXNzYWdlIFVURjhTdHJpbmdd
KTsKKyAgICBmcHJpbnRmKGdUZXN0UnVubmVyLT5kdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIoKSA/
IHN0ZGVyciA6IHN0ZG91dCwgIkNPTlNPTEUgTUVTU0FHRTolc1xuIiwgYWRkTGVhZGluZ1NwYWNl
U3RyaXBUcmFpbGluZ1NwYWNlcyhtZXNzYWdlKS5VVEY4U3RyaW5nID86ICIgKG51bGwpIik7CiB9
CiAKIC0gKHZvaWQpbW9kYWxXaW5kb3dXaWxsQ2xvc2U6KE5TTm90aWZpY2F0aW9uICopbm90aWZp
Y2F0aW9uCkBAIC0xMTMsNyArMTIzLDcgQEAgLSAodm9pZCl3ZWJWaWV3UnVuTW9kYWw6KFdlYlZp
ZXcgKilzZW5kZXIKIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBydW5KYXZhU2Ny
aXB0QWxlcnRQYW5lbFdpdGhNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2UgaW5pdGlhdGVkQnlG
cmFtZTooV2ViRnJhbWUgKilmcmFtZQogewogICAgIGlmICghZG9uZSkgewotICAgICAgICBwcmlu
dGYoIkFMRVJUOiAlc1xuIiwgW21lc3NhZ2UgVVRGOFN0cmluZ10pOworICAgICAgICBwcmludGYo
IkFMRVJUOiVzXG4iLCBhZGRMZWFkaW5nU3BhY2VTdHJpcFRyYWlsaW5nU3BhY2VzKG1lc3NhZ2Up
LlVURjhTdHJpbmcgPzogIiAobnVsbCkiKTsKICAgICAgICAgZmZsdXNoKHN0ZG91dCk7CiAgICAg
fQogfQpAQCAtMTIxLDIyICsxMzEsMjEgQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2Vu
ZGVyIHJ1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1lc3NhZ2U6KE5TU3RyaW5nICoKIC0gKEJP
T0wpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBydW5KYXZhU2NyaXB0Q29uZmlybVBhbmVsV2l0
aE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZSBpbml0aWF0ZWRCeUZyYW1lOihXZWJGcmFtZSAq
KWZyYW1lCiB7CiAgICAgaWYgKCFkb25lKQotICAgICAgICBwcmludGYoIkNPTkZJUk06ICVzXG4i
LCBbbWVzc2FnZSBVVEY4U3RyaW5nXSk7CisgICAgICAgIHByaW50ZigiQ09ORklSTTolc1xuIiwg
YWRkTGVhZGluZ1NwYWNlU3RyaXBUcmFpbGluZ1NwYWNlcyhtZXNzYWdlKS5VVEY4U3RyaW5nID86
ICIgKG51bGwpIik7CiAgICAgcmV0dXJuIFlFUzsKIH0KIAogLSAoTlNTdHJpbmcgKil3ZWJWaWV3
OihXZWJWaWV3ICopc2VuZGVyIHJ1bkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbFdpdGhQcm9tcHQ6
KE5TU3RyaW5nICopcHJvbXB0IGRlZmF1bHRUZXh0OihOU1N0cmluZyAqKWRlZmF1bHRUZXh0IGlu
aXRpYXRlZEJ5RnJhbWU6KFdlYkZyYW1lICopZnJhbWUKIHsKICAgICBpZiAoIWRvbmUpCi0gICAg
ICAgIHByaW50ZigiUFJPTVBUOiAlcywgZGVmYXVsdCB0ZXh0OiAlc1xuIiwgW3Byb21wdCBVVEY4
U3RyaW5nXSwgW2RlZmF1bHRUZXh0IFVURjhTdHJpbmddKTsKKyAgICAgICAgcHJpbnRmKCJQUk9N
UFQ6ICVzLCBkZWZhdWx0IHRleHQ6JXNcbiIsIHByb21wdC5VVEY4U3RyaW5nLCBhZGRMZWFkaW5n
U3BhY2VTdHJpcFRyYWlsaW5nU3BhY2VzKGRlZmF1bHRUZXh0KS5VVEY4U3RyaW5nID86ICIgKG51
bGwpIik7CiAgICAgcmV0dXJuIGRlZmF1bHRUZXh0OwogfQogCiAtIChCT09MKXdlYlZpZXc6KFdl
YlZpZXcgKiljIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlOihOU1N0cmlu
ZyAqKW1lc3NhZ2UgaW5pdGlhdGVkQnlGcmFtZTooV2ViRnJhbWUgKilmcmFtZQogewogICAgIGlm
ICghZG9uZSkKLSAgICAgICAgcHJpbnRmKCJDT05GSVJNIE5BVklHQVRJT046ICVzXG4iLCBbbWVz
c2FnZSBVVEY4U3RyaW5nXSk7Ci0gICAgCisgICAgICAgIHByaW50ZigiQ09ORklSTSBOQVZJR0FU
SU9OOiVzXG4iLCBhZGRMZWFkaW5nU3BhY2VTdHJpcFRyYWlsaW5nU3BhY2VzKG1lc3NhZ2UpLlVU
RjhTdHJpbmcgPzogIiAobnVsbCkiKTsKICAgICByZXR1cm4gIWdUZXN0UnVubmVyLT5zaG91bGRT
dGF5T25QYWdlQWZ0ZXJIYW5kbGluZ0JlZm9yZVVubG9hZCgpOwogfQogCkBAIC0yMzUsNyArMjQ0
LDcgQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGV4Y2VlZGVkQXBwbGljYXRp
b25DYWNoZU9yaWdpblF1b3RhRm9yU2VjdXJpdHkKIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAq
KXNlbmRlciBzZXRTdGF0dXNUZXh0OihOU1N0cmluZyAqKXRleHQKIHsKICAgICBpZiAoIWRvbmUg
JiYgZ1Rlc3RSdW5uZXItPmR1bXBTdGF0dXNDYWxsYmFja3MoKSkKLSAgICAgICAgcHJpbnRmKCJV
SSBERUxFR0FURSBTVEFUVVMgQ0FMTEJBQ0s6IHNldFN0YXR1c1RleHQ6JXNcbiIsIFt0ZXh0IFVU
RjhTdHJpbmddKTsKKyAgICAgICAgcHJpbnRmKCJVSSBERUxFR0FURSBTVEFUVVMgQ0FMTEJBQ0s6
IHNldFN0YXR1c1RleHQ6JXNcbiIsIHN0cmlwVHJhaWxpbmdTcGFjZXModGV4dCkuVVRGOFN0cmlu
Zyk7CiB9CiAKIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5
Rm9yR2VvbG9jYXRpb25SZXF1ZXN0RnJvbU9yaWdpbjooV2ViU2VjdXJpdHlPcmlnaW4gKilvcmln
aW4gZnJhbWU6KFdlYkZyYW1lICopZnJhbWUgbGlzdGVuZXI6KGlkPFdlYkFsbG93RGVueVBvbGlj
eUxpc3RlbmVyPilsaXN0ZW5lcgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L0R1bXBSZW5kZXJUcmVlLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVy
VHJlZS5jcHAKaW5kZXggN2FjYTk0Nzg5MmI4OWQxZGE1ZjYyMzZkZGFhNDY1M2VjNDBhZjIxMi4u
YzBiNmE0ODk5MTg3NzVlOWJhYWM4MzY0NjE2ZWM0NGY5ZDMwYmY2ZiAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCkBAIC00ODgsNiArNDg4LDEzIEBAIHN0
YXRpYyB3c3RyaW5nIGR1bXBGcmFtZXNBc1RleHQoSVdlYkZyYW1lKiBmcmFtZSkKICAgICAgICAg
fQogICAgIH0KIAorICAgIC8vIFRvIGtlZXAgdGhpbmdzIHRpZHksIHN0cmlwIGFsbCB0cmFpbGlu
ZyBzcGFjZXM6IHRoZXkgYXJlIG5vdCBhIG1lYW5pbmdmdWwgcGFydCBvZiBkdW1wQXNUZXh0IHRl
c3Qgb3V0cHV0LgorICAgIHN0ZDo6d3N0cmluZzo6c2l6ZV90eXBlIHNwYWNlUG9zaXRpb247Cisg
ICAgd2hpbGUgKChzcGFjZVBvc2l0aW9uID0gcmVzdWx0LmZpbmQoTCIgXG4iKSkgIT0gc3RkOjp3
c3RyaW5nOjpucG9zKQorICAgICAgICByZXN1bHQuZXJhc2Uoc3BhY2VQb3NpdGlvbiwgMSk7Cisg
ICAgd2hpbGUgKCFyZXN1bHQuZW1wdHkoKSAmJiByZXN1bHQuYmFjaygpID09ICcgJykKKyAgICAg
ICAgcmVzdWx0LnBvcF9iYWNrKCk7CisKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuY3BwIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmNwcAppbmRleCA3NTViZWQx
NmY2MGVkYzAxMTE1NTIxZTE1OGMwZGJmMDU1ODhiZjg0Li5mZDc3YWQxYzM5MjYzOGRhOTQxNDNl
ZTdkNWE4MjFlNjk0MTAyMzEzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4v
RnJhbWVMb2FkRGVsZWdhdGUuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFt
ZUxvYWREZWxlZ2F0ZS5jcHAKQEAgLTI5Miw3ICsyOTIsNyBAQCBIUkVTVUxUIEZyYW1lTG9hZERl
bGVnYXRlOjpkaWRGYWlsTG9hZFdpdGhFcnJvcihfSW5fb3B0XyBJV2ViVmlldyosIF9Jbl9vcHRf
IElXZQogSFJFU1VMVCBGcmFtZUxvYWREZWxlZ2F0ZTo6d2lsbFBlcmZvcm1DbGllbnRSZWRpcmVj
dFRvVVJMKF9Jbl9vcHRfIElXZWJWaWV3KiwgX0luXyBCU1RSIHVybCwgZG91YmxlIC8qZGVsYXlT
ZWNvbmRzKi8sIERBVEUgLypmaXJlRGF0ZSovLCBfSW5fb3B0XyBJV2ViRnJhbWUqIGZyYW1lKQog
ewogICAgIGlmICghZG9uZSAmJiBnVGVzdFJ1bm5lci0+ZHVtcEZyYW1lTG9hZENhbGxiYWNrcygp
KQotICAgICAgICBmcHJpbnRmKHRlc3RSZXN1bHQsICIlcyAtIHdpbGxQZXJmb3JtQ2xpZW50UmVk
aXJlY3RUb1VSTDogJVMgXG4iLCBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChmcmFt
ZSkuY19zdHIoKSwKKyAgICAgICAgZnByaW50Zih0ZXN0UmVzdWx0LCAiJXMgLSB3aWxsUGVyZm9y
bUNsaWVudFJlZGlyZWN0VG9VUkw6ICVTXG4iLCBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJl
c3VsdChmcmFtZSkuY19zdHIoKSwKICAgICAgICAgICAgICAgICB1cmxTdWl0YWJsZUZvclRlc3RS
ZXN1bHQoc3RkOjp3c3RyaW5nKHVybCwgOjpTeXNTdHJpbmdMZW4odXJsKSkpLmNfc3RyKCkpOwog
CiAgICAgcmV0dXJuIFNfT0s7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4v
VUlEZWxlZ2F0ZS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVUlEZWxlZ2F0ZS5jcHAK
aW5kZXggOGVkNmY4NDVmOTdlOTkyOTE0MDRmZmY0YTFkNzlhZGRhNmEwYzIxNS4uMmFmOGZlODgy
Mzk3ZWFlNmNhOTJjOTJkMWM4Y2I1MzVhYmJiYzkzMyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL1VJRGVsZWdhdGUuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9VSURlbGVnYXRlLmNwcApAQCAtNDUzLDExICs0NTMsMjggQEAgSFJFU1VMVCBVSURlbGVnYXRl
Ojp3ZWJWaWV3RnJhbWUoX0luX29wdF8gSVdlYlZpZXcqIC8qc2VuZGVyKi8sIF9PdXRfIFJFQ1Qq
IGZyYW0KICAgICByZXR1cm4gU19PSzsKIH0KIAotY29uc3Qgd2NoYXJfdCogdG9NZXNzYWdlKGNv
bnN0IEJTVFIgbWVzc2FnZSkKK3N0YXRpYyBzdGQ6OndzdHJpbmcgc3RyaXBUcmFpbGluZ1NwYWNl
cyhjb25zdCBzdGQ6OndzdHJpbmcmIHN0cmluZykKK3sKKyAgICBhdXRvIHJlc3VsdCA9IHN0cmlu
ZzsKKyAgICBzdGQ6OndzdHJpbmc6OnNpemVfdHlwZSBzcGFjZVBvc2l0aW9uOworICAgIHdoaWxl
ICgoc3BhY2VQb3NpdGlvbiA9IHJlc3VsdC5maW5kKEwiIFxuIikpICE9IHN0ZDo6d3N0cmluZzo6
bnBvcykKKyAgICAgICAgcmVzdWx0LmVyYXNlKHNwYWNlUG9zaXRpb24sIDEpOworICAgIHdoaWxl
ICghcmVzdWx0LmVtcHR5KCkgJiYgcmVzdWx0LmJhY2soKSA9PSAnICcpCisgICAgICAgIHJlc3Vs
dC5wb3BfYmFjaygpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBzdGQ6OndzdHJp
bmcgYWRkTGVhZGluZ1NwYWNlU3RyaXBUcmFpbGluZ1NwYWNlcyhjb25zdCBzdGQ6OndzdHJpbmcm
IHN0cmluZykKK3sKKyAgICBhdXRvIHJlc3VsdCA9IHN0cmlwVHJhaWxpbmdTcGFjZXMoc3RyaW5n
KTsKKyAgICByZXR1cm4gKHJlc3VsdC5lbXB0eSgpIHx8IHJlc3VsdC5mcm9udCgpID09ICdcbicp
ID8gcmVzdWx0IDogTCcgJyArIHJlc3VsdDsKK30KKworc3RkOjp3c3RyaW5nIHRvTWVzc2FnZShC
U1RSIG1lc3NhZ2UpCiB7CiAgICAgYXV0byBsZW5ndGggPSBTeXNTdHJpbmdMZW4obWVzc2FnZSk7
CiAgICAgaWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiBtZXNzYWdlOworICAgICAgICByZXR1
cm4gTCIiOwogICAgIC8vIFJldHVybiAiKG51bGwpIiBmb3IgYW4gaW52YWxpZCBVVEYtMTYgc2Vx
dWVuY2UgdG8gYWxpZ24gd2l0aCBXZWJLaXRUZXN0UnVubmVyLgogICAgIGF1dG8gdXRmOCA9IFN0
cmluZ1ZpZXcodWNoYXJGcm9tKG1lc3NhZ2UpLCBsZW5ndGgpLnRyeUdldFV0ZjgoU3RyaWN0Q29u
dmVyc2lvbik7CiAgICAgaWYgKCF1dGY4KQpAQCAtNDY1LDEwICs0ODIsMjAgQEAgY29uc3Qgd2No
YXJfdCogdG9NZXNzYWdlKGNvbnN0IEJTVFIgbWVzc2FnZSkKICAgICByZXR1cm4gbWVzc2FnZTsK
IH0KIAorc3RhdGljIHN0ZDo6d3N0cmluZyBhZGRMZWFkaW5nU3BhY2VTdHJpcFRyYWlsaW5nU3Bh
Y2VzKEJTVFIgbWVzc2FnZSkKK3sKKyAgICByZXR1cm4gYWRkTGVhZGluZ1NwYWNlU3RyaXBUcmFp
bGluZ1NwYWNlcyh0b01lc3NhZ2UobWVzc2FnZSkpOworfQorCitzdGF0aWMgc3RkOjp3c3RyaW5n
IHN0cmlwVHJhaWxpbmdTcGFjZXMoQlNUUiBtZXNzYWdlKQoreworICAgIHJldHVybiBzdHJpcFRy
YWlsaW5nU3BhY2VzKHRvTWVzc2FnZShtZXNzYWdlKSk7Cit9CisKIEhSRVNVTFQgVUlEZWxlZ2F0
ZTo6cnVuSmF2YVNjcmlwdEFsZXJ0UGFuZWxXaXRoTWVzc2FnZShfSW5fb3B0XyBJV2ViVmlldyog
LypzZW5kZXIqLywgX0luXyBCU1RSIG1lc3NhZ2UpCiB7CiAgICAgaWYgKCFkb25lKSB7Ci0gICAg
ICAgIGZwcmludGYodGVzdFJlc3VsdCwgIkFMRVJUOiAlU1xuIiwgdG9NZXNzYWdlKG1lc3NhZ2Up
KTsKKyAgICAgICAgZnByaW50Zih0ZXN0UmVzdWx0LCAiQUxFUlQ6JVNcbiIsIGFkZExlYWRpbmdT
cGFjZVN0cmlwVHJhaWxpbmdTcGFjZXMobWVzc2FnZSkuY19zdHIoKSk7CiAgICAgICAgIGZmbHVz
aCh0ZXN0UmVzdWx0KTsKICAgICB9CiAKQEAgLTQ3OCw3ICs1MDUsNyBAQCBIUkVTVUxUIFVJRGVs
ZWdhdGU6OnJ1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1lc3NhZ2UoX0luX29wdF8gSVdlYlZp
ZXcqIC8qc2VuZAogSFJFU1VMVCBVSURlbGVnYXRlOjpydW5KYXZhU2NyaXB0Q29uZmlybVBhbmVs
V2l0aE1lc3NhZ2UoX0luX29wdF8gSVdlYlZpZXcqIC8qc2VuZGVyKi8sIF9Jbl8gQlNUUiBtZXNz
YWdlLCBfT3V0XyBCT09MKiByZXN1bHQpCiB7CiAgICAgaWYgKCFkb25lKQotICAgICAgICBmcHJp
bnRmKHRlc3RSZXN1bHQsICJDT05GSVJNOiAlU1xuIiwgdG9NZXNzYWdlKG1lc3NhZ2UpKTsKKyAg
ICAgICAgZnByaW50Zih0ZXN0UmVzdWx0LCAiQ09ORklSTTolU1xuIiwgYWRkTGVhZGluZ1NwYWNl
U3RyaXBUcmFpbGluZ1NwYWNlcyhtZXNzYWdlKS5jX3N0cigpKTsKIAogICAgICpyZXN1bHQgPSBU
UlVFOwogCkBAIC00ODgsNyArNTE1LDcgQEAgSFJFU1VMVCBVSURlbGVnYXRlOjpydW5KYXZhU2Ny
aXB0Q29uZmlybVBhbmVsV2l0aE1lc3NhZ2UoX0luX29wdF8gSVdlYlZpZXcqIC8qc2UKIEhSRVNV
TFQgVUlEZWxlZ2F0ZTo6cnVuSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsV2l0aFByb21wdChfSW5f
b3B0XyBJV2ViVmlldyogLypzZW5kZXIqLywgX0luXyBCU1RSIG1lc3NhZ2UsIF9Jbl8gQlNUUiBk
ZWZhdWx0VGV4dCwgX19kZXJlZl9vcHRfb3V0IEJTVFIqIHJlc3VsdCkKIHsKICAgICBpZiAoIWRv
bmUpCi0gICAgICAgIGZwcmludGYodGVzdFJlc3VsdCwgIlBST01QVDogJVMsIGRlZmF1bHQgdGV4
dDogJVNcbiIsIHRvTWVzc2FnZShtZXNzYWdlKSwgdG9NZXNzYWdlKGRlZmF1bHRUZXh0KSk7Cisg
ICAgICAgIGZwcmludGYodGVzdFJlc3VsdCwgIlBST01QVDogJVMsIGRlZmF1bHQgdGV4dDolU1xu
IiwgdG9NZXNzYWdlKG1lc3NhZ2UpLmNfc3RyKCksIGFkZExlYWRpbmdTcGFjZVN0cmlwVHJhaWxp
bmdTcGFjZXMoZGVmYXVsdFRleHQpLmNfc3RyKCkpOwogCiAgICAgKnJlc3VsdCA9IFN5c0FsbG9j
U3RyaW5nKGRlZmF1bHRUZXh0KTsKIApAQCAtNTAxLDcgKzUyOCw3IEBAIEhSRVNVTFQgVUlEZWxl
Z2F0ZTo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsV2l0aE1lc3NhZ2UoX0luX29wdF8gSVdl
YlZpZXcqIC8qCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKICAgICBpZiAoIWRvbmUpCi0g
ICAgICAgIGZwcmludGYodGVzdFJlc3VsdCwgIkNPTkZJUk0gTkFWSUdBVElPTjogJVNcbiIsIHRv
TWVzc2FnZShtZXNzYWdlKSk7CisgICAgICAgIGZwcmludGYodGVzdFJlc3VsdCwgIkNPTkZJUk0g
TkFWSUdBVElPTjolU1xuIiwgYWRkTGVhZGluZ1NwYWNlU3RyaXBUcmFpbGluZ1NwYWNlcyhtZXNz
YWdlKS5jX3N0cigpKTsKIAogICAgICpyZXN1bHQgPSAhZ1Rlc3RSdW5uZXItPnNob3VsZFN0YXlP
blBhZ2VBZnRlckhhbmRsaW5nQmVmb3JlVW5sb2FkKCk7CiAKQEAgLTUyMyw4ICs1NTAsNyBAQCBI
UkVTVUxUIFVJRGVsZWdhdGU6OndlYlZpZXdBZGRNZXNzYWdlVG9Db25zb2xlKF9Jbl9vcHRfIElX
ZWJWaWV3KiAvKnNlbmRlciovLCBfSQogICAgIH0KIAogICAgIGF1dG8gb3V0ID0gZ1Rlc3RSdW5u
ZXItPmR1bXBKU0NvbnNvbGVMb2dJblN0ZEVycigpID8gc3RkZXJyIDogdGVzdFJlc3VsdDsKLSAg
ICBmcHJpbnRmKG91dCwgIkNPTlNPTEUgTUVTU0FHRTogIik7Ci0gICAgZnByaW50ZihvdXQsICIl
c1xuIiwgdG9VVEY4KG5ld01lc3NhZ2UpLmNfc3RyKCkpOworICAgIGZwcmludGYob3V0LCAiQ09O
U09MRSBNRVNTQUdFOiVTXG4iLCBhZGRMZWFkaW5nU3BhY2VTdHJpcFRyYWlsaW5nU3BhY2VzKG5l
d01lc3NhZ2UpLmNfc3RyKCkpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC02NzMsNyArNjk5
LDcgQEAgSFJFU1VMVCBVSURlbGVnYXRlOjp3ZWJWaWV3RGlkSW52YWxpZGF0ZShfSW5fb3B0XyBJ
V2ViVmlldyogLypzZW5kZXIqLykKIEhSRVNVTFQgVUlEZWxlZ2F0ZTo6c2V0U3RhdHVzVGV4dChf
SW5fb3B0XyBJV2ViVmlldyosIF9Jbl8gQlNUUiB0ZXh0KQogewogICAgIGlmICghZG9uZSAmJiBn
VGVzdFJ1bm5lci0+ZHVtcFN0YXR1c0NhbGxiYWNrcygpKQotICAgICAgICBmcHJpbnRmKHRlc3RS
ZXN1bHQsICJVSSBERUxFR0FURSBTVEFUVVMgQ0FMTEJBQ0s6IHNldFN0YXR1c1RleHQ6JVNcbiIs
IHRvTWVzc2FnZSh0ZXh0KSk7CisgICAgICAgIGZwcmludGYodGVzdFJlc3VsdCwgIlVJIERFTEVH
QVRFIFNUQVRVUyBDQUxMQkFDSzogc2V0U3RhdHVzVGV4dDolU1xuIiwgc3RyaXBUcmFpbGluZ1Nw
YWNlcyh0ZXh0KS5jX3N0cigpKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3BvcnQvYmFzZS5weQppbmRleCA3NTU3MDk0NmM3OTFjMmQyZDIxNjZmNjFhMmU5Y2RiOWQ0
MzQ3YjMzLi4zM2E5YTZiMDUwODQzOTk3MTYxYWYwYmQ0YWUwNDA4MGEwZDIzMzNkIDEwMDY0NAot
LS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQpAQCAtMzAwLDYgKzMwMCw5IEBAIGNsYXNzIFBvcnQo
b2JqZWN0KToKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogCiAgICAgZGVmIGRvX3RleHRfcmVz
dWx0c19kaWZmZXIoc2VsZiwgZXhwZWN0ZWRfdGV4dCwgYWN0dWFsX3RleHQpOgorICAgICAgICAj
IElnbm9yZSB0cmFpbGluZyBzcGFjZXMgaW4gZXhwZWN0ZWQgZmlsZXMuIFdlIHdpbGwgcmVtb3Zl
IHRoaXMgY29kZSBhZnRlciByZW1vdmluZyB0cmFpbGluZyBzcGFjZXMgZnJvbSBhbGwgZXhwZWN0
ZWQudHh0IGZpbGVzLgorICAgICAgICBpZiBub3QgZXhwZWN0ZWRfdGV4dC5zdGFydHN3aXRoKCI8
P3htbCIpOgorICAgICAgICAgICAgZXhwZWN0ZWRfdGV4dCA9IHJlLmNvbXBpbGUoIiArJCIsIHJl
Lk1VTFRJTElORSkuc3ViKCIiLCBleHBlY3RlZF90ZXh0KQogICAgICAgICByZXR1cm4gZXhwZWN0
ZWRfdGV4dCAhPSBhY3R1YWxfdGV4dAogCiAgICAgZGVmIGRvX2F1ZGlvX3Jlc3VsdHNfZGlmZmVy
KHNlbGYsIGV4cGVjdGVkX2F1ZGlvLCBhY3R1YWxfYXVkaW8pOgpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2Uu
Y3BwCmluZGV4IGI2NDBmZjI4YWU3NWZkNjE4MDAzYmY2Zjc1MmUwNWNiMTMwNjM2NzIuLmQ4OWZl
YWY5YjZkYWU0Yzk2ODUzMWYwYWI2Mzg1ODkxYjE0Zjk4ZjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZS5jcHAKQEAgLTgzNCwxNyArODM0LDIyIEBAIHN0YXRpYyBib29sIGhhc0RvY3VtZW50RWxlbWVu
dChXS0J1bmRsZUZyYW1lUmVmIGZyYW1lKQogICAgIHJldHVybiBKU1ZhbHVlVG9Cb29sZWFuKGNv
bnRleHQsIGRvY3VtZW50RWxlbWVudFZhbHVlKTsKIH0KIAotc3RhdGljIHZvaWQgZHVtcEZyYW1l
VGV4dChXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVy
KQorc3RhdGljIHZvaWQgZHVtcEZyYW1lVGV4dChXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBTdHJp
bmdCdWlsZGVyJiBidWlsZGVyKQogewogICAgIC8vIElmIHRoZSBmcmFtZSBkb2Vzbid0IGhhdmUg
YSBkb2N1bWVudCBlbGVtZW50LCBpdHMgaW5uZXIgdGV4dCB3aWxsIGJlIGFuIGVtcHR5IHN0cmlu
Zywgc28KLSAgICAvLyB3ZSdsbCBlbmQgdXAganVzdCBhcHBlbmRpbmcgYSBzaW5nbGUgbmV3bGlu
ZSBiZWxvdy4gQnV0IER1bXBSZW5kZXJUcmVlIGRvZXNuJ3QgYXBwZW5kCi0gICAgLy8gYW55dGhp
bmcgaW4gdGhpcyBjYXNlLCBzbyB3ZSBzaG91bGRuJ3QgZWl0aGVyLgorICAgIC8vIHdlJ2xsIGVu
ZCB1cCBqdXN0IGFwcGVuZGluZyBhIHNpbmdsZSBuZXdsaW5lIGJlbG93LiBTaW5jZSBEdW1wUmVu
ZGVyVHJlZSBkaWRuJ3QgYXBwZW5kCisgICAgLy8gYW55dGhpbmcgaW4gdGhpcyBjYXNlLCB3ZSBk
ZWNpZGVkIHRvIHByZXNlcnZlIHRoYXQgYmVoYXZpb3IuCiAgICAgaWYgKCFoYXNEb2N1bWVudEVs
ZW1lbnQoZnJhbWUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBXS1JldGFpblB0cjxXS1N0cmlu
Z1JlZj4gdGV4dCA9IGFkb3B0V0soV0tCdW5kbGVGcmFtZUNvcHlJbm5lclRleHQoZnJhbWUpKTsK
LSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh0b1dURlN0cmluZyh0ZXh0KSk7Ci0gICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoJ1xuJyk7CisgICAgLy8gVG8ga2VlcCB0aGluZ3MgdGlkeSwgc3RyaXAg
YWxsIHRyYWlsaW5nIHNwYWNlczogdGhleSBhcmUgbm90IGEgbWVhbmluZ2Z1bCBwYXJ0IG9mIGR1
bXBBc1RleHQgdGVzdCBvdXRwdXQuCisgICAgLy8gQnJlYWtpbmcgdGhlIHN0cmluZyB1cCBpbnRv
IGxpbmVzIGxldHMgdXMgZWZmaWNpZW50bHkgc3RyaXAgYW5kIGhhcyBhIHNpZGUgZWZmZWN0IG9m
IGFkZGluZyBhIG5ld2xpbmUgYWZ0ZXIgdGhlIGxhc3QgbGluZS4KKyAgICBhdXRvIHRleHQgPSB0
b1dURlN0cmluZyhhZG9wdFdLKFdLQnVuZGxlRnJhbWVDb3B5SW5uZXJUZXh0KGZyYW1lKSkpOwor
ICAgIGZvciAoYXV0byBsaW5lIDogU3RyaW5nVmlldyh0ZXh0KS5zcGxpdEFsbG93aW5nRW1wdHlF
bnRyaWVzKCdcbicpKSB7CisgICAgICAgIHdoaWxlIChsaW5lLmVuZHNXaXRoKCcgJykpCisgICAg
ICAgICAgICBsaW5lID0gbGluZS5zdWJzdHJpbmcoMCwgbGluZS5sZW5ndGgoKSAtIDEpOworICAg
ICAgICBidWlsZGVyLmFwcGVuZChsaW5lLCAnXG4nKTsKKyAgICB9CiB9CiAKIHN0YXRpYyB2b2lk
IGR1bXBEZXNjZW5kYW50RnJhbWVzVGV4dChXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBTdHJpbmdC
dWlsZGVyJiBzdHJpbmdCdWlsZGVyKQpAQCAtMTA1Niw5ICsxMDYxLDcgQEAgdm9pZCBJbmplY3Rl
ZEJ1bmRsZVBhZ2U6OndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZShXS0J1bmRsZVBh
Z2VSZWYsIFdLQnUKIAogICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKICAgICBkdW1w
RnJhbWVEZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChmcmFtZSwgc3RyaW5nQnVpbGRl
cik7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgLSB3aWxsUGVyZm9ybUNsaWVu
dFJlZGlyZWN0VG9VUkw6ICIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHBhdGhTdWl0YWJs
ZUZvclRlc3RSZXN1bHQodXJsKSk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIg
XG4iKTsKKyAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiIC0gd2lsbFBlcmZvcm1DbGllbnRSZWRp
cmVjdFRvVVJMOiAiLCBwYXRoU3VpdGFibGVGb3JUZXN0UmVzdWx0KHVybCksICdcbicpOwogICAg
IGluamVjdGVkQnVuZGxlLm91dHB1dFRleHQoc3RyaW5nQnVpbGRlci50b1N0cmluZygpKTsKIH0K
IApAQCAtMTM0NSw3ICsxMzQ4LDcgQEAgV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uIEluamVjdGVk
QnVuZGxlUGFnZTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXS0IKIAogICAgIGlm
IChpbmplY3RlZEJ1bmRsZS50ZXN0UnVubmVyKCktPnNob3VsZER1bXBQb2xpY3lDYWxsYmFja3Mo
KSkgewogICAgICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIC0gZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
biBcbiIpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiAtIGRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb25cbiIpOwogICAgICAgICBkdW1wUmVxdWVzdERlc2NyaXB0
aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KHJlcXVlc3QsIHN0cmluZ0J1aWxkZXIpOwogICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBpcyBtYWluIGZyYW1lIC0gIik7CiAgICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKFdLQnVuZGxlRnJhbWVJc01haW5GcmFtZShmcmFtZSkg
PyAieWVzIiA6ICJubyIpOwpAQCAtMTQ0OSw2ICsxNDUyLDIzIEBAIHVpbnQ2NF90IEluamVjdGVk
QnVuZGxlUGFnZTo6ZGlkRXhjZWVkRGF0YWJhc2VRdW90YShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwg
V0tTZWN1CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEluamVjdGVkQnVuZGxlUGFnZSo+KGNvbnN0
X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZGlkRXhjZWVkRGF0YWJhc2VRdW90YShvcmlnaW4s
IGRhdGFiYXNlTmFtZSwgZGF0YWJhc2VEaXNwbGF5TmFtZSwgY3VycmVudFF1b3RhQnl0ZXMsIGN1
cnJlbnRPcmlnaW5Vc2FnZUJ5dGVzLCBjdXJyZW50RGF0YWJhc2VVc2FnZUJ5dGVzLCBleHBlY3Rl
ZFVzYWdlQnl0ZXMpOwogfQogCitzdGF0aWMgV1RGOjpTdHJpbmcgc3RyaXBUcmFpbGluZ1NwYWNl
c0FkZE5ld2xpbmUoY29uc3QgV1RGOjpTdHJpbmcmIHN0cmluZykKK3sKKyAgICBTdHJpbmdCdWls
ZGVyIGJ1aWxkZXI7CisgICAgZm9yIChhdXRvIGxpbmUgOiBTdHJpbmdWaWV3KHN0cmluZykuc3Bs
aXRBbGxvd2luZ0VtcHR5RW50cmllcygnXG4nKSkgeworICAgICAgICB3aGlsZSAobGluZS5lbmRz
V2l0aCgnICcpKQorICAgICAgICAgICAgbGluZSA9IGxpbmUuc3Vic3RyaW5nKDAsIGxpbmUubGVu
Z3RoKCkgLSAxKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQobGluZSwgJ1xuJyk7CisgICAgfQor
ICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK3N0YXRpYyBXVEY6OlN0cmluZyBh
ZGRMZWFkaW5nU3BhY2VTdHJpcFRyYWlsaW5nU3BhY2VzQWRkTmV3bGluZShjb25zdCBXVEY6OlN0
cmluZyYgc3RyaW5nKQoreworICAgIGF1dG8gcmVzdWx0ID0gc3RyaXBUcmFpbGluZ1NwYWNlc0Fk
ZE5ld2xpbmUoc3RyaW5nKTsKKyAgICByZXR1cm4gKHJlc3VsdC5pc0VtcHR5KCkgfHwgcmVzdWx0
LnN0YXJ0c1dpdGgoJ1xuJykpID8gcmVzdWx0IDogbWFrZVN0cmluZygnICcsIHJlc3VsdCk7Cit9
CisKIHN0YXRpYyBXVEY6OlN0cmluZyBsYXN0RmlsZVVSTFBhdGhDb21wb25lbnQoY29uc3QgV1RG
OjpTdHJpbmcmIHBhdGgpCiB7CiAgICAgc2l6ZV90IHBvcyA9IHBhdGguZmluZCgiZmlsZTovLyIp
OwpAQCAtMTQ4NSwxNSArMTUwNSwxMSBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6d2lsbEFk
ZE1lc3NhZ2VUb0NvbnNvbGUoV0tTdHJpbmdSZWYgbWVzc2FnZSkKICAgICAgICAgLy8gRklYTUU6
IFRoZSBjb2RlIGJlbG93IGRvZXMgbm90IGhhbmRsZSBhZGRpdGlvbmFsIHRleHQgYWZ0ZXIgdXJs
IG5vciBtdWx0aXBsZSB1cmxzLiBUaGlzIG1hdGNoZXMgRHVtcFJlbmRlclRyZWUgaW1wbGVtZW50
YXRpb24uCiAgICAgICAgIG1lc3NhZ2VTdHJpbmcgPSBtZXNzYWdlU3RyaW5nLnN1YnN0cmluZygw
LCBmaWxlUHJvdG9jb2xTdGFydCkgKyBsYXN0RmlsZVVSTFBhdGhDb21wb25lbnQobWVzc2FnZVN0
cmluZy5zdWJzdHJpbmcoZmlsZVByb3RvY29sU3RhcnQpKTsKIAotICAgIFN0cmluZ0J1aWxkZXIg
c3RyaW5nQnVpbGRlcjsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIkNPTlNPTEUg
TUVTU0FHRTogIik7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWVzc2FnZVN0cmluZyk7Ci0g
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0KKyAgICBtZXNzYWdlU3RyaW5nID0gbWFr
ZVN0cmluZygiQ09OU09MRSBNRVNTQUdFOiIsIGFkZExlYWRpbmdTcGFjZVN0cmlwVHJhaWxpbmdT
cGFjZXNBZGROZXdsaW5lKG1lc3NhZ2VTdHJpbmcpKTsKICAgICBpZiAoaW5qZWN0ZWRCdW5kbGUu
ZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyKCkpCi0gICAgICAgIGluamVjdGVkQnVuZGxlLmR1bXBU
b1N0ZEVycihzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpOworICAgICAgICBpbmplY3RlZEJ1bmRs
ZS5kdW1wVG9TdGRFcnIobWVzc2FnZVN0cmluZyk7CiAgICAgZWxzZQotICAgICAgICBpbmplY3Rl
ZEJ1bmRsZS5vdXRwdXRUZXh0KHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgICAgIGlu
amVjdGVkQnVuZGxlLm91dHB1dFRleHQobWVzc2FnZVN0cmluZyk7CiB9CiAKIHZvaWQgSW5qZWN0
ZWRCdW5kbGVQYWdlOjp3aWxsU2V0U3RhdHVzYmFyVGV4dChXS1N0cmluZ1JlZiBzdGF0dXNiYXJU
ZXh0KQpAQCAtMTUxOCwxMSArMTUzNCw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjp3aWxs
UnVuSmF2YVNjcmlwdEFsZXJ0KFdLU3RyaW5nUmVmIG1lc3NhZ2UsIFdLQnVuZGxlRnJhCiAgICAg
aWYgKCFpbmplY3RlZEJ1bmRsZS5pc1Rlc3RSdW5uaW5nKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZExpdGVyYWwoIkFMRVJUOiAiKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh0b1dURlN0cmlu
ZyhtZXNzYWdlKSk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgaW5qZWN0
ZWRCdW5kbGUub3V0cHV0VGV4dChzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpOworICAgIGluamVj
dGVkQnVuZGxlLm91dHB1dFRleHQobWFrZVN0cmluZygiQUxFUlQ6IiwgYWRkTGVhZGluZ1NwYWNl
U3RyaXBUcmFpbGluZ1NwYWNlc0FkZE5ld2xpbmUodG9XVEZTdHJpbmcobWVzc2FnZSkpKSk7CiB9
CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjp3aWxsUnVuSmF2YVNjcmlwdENvbmZpcm0oV0tT
dHJpbmdSZWYgbWVzc2FnZSwgV0tCdW5kbGVGcmFtZVJlZikKQEAgLTE1MzEsMjIgKzE1NDMsMTIg
QEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OndpbGxSdW5KYXZhU2NyaXB0Q29uZmlybShXS1N0
cmluZ1JlZiBtZXNzYWdlLCBXS0J1bmRsZUYKICAgICBpZiAoIWluamVjdGVkQnVuZGxlLmlzVGVz
dFJ1bm5pbmcoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5nQnVpbGRlciBzdHJpbmdC
dWlsZGVyOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiQ09ORklSTTogIik7Ci0g
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQodG9XVEZTdHJpbmcobWVzc2FnZSkpOwotICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgIGluamVjdGVkQnVuZGxlLm91dHB1dFRleHQoc3Ry
aW5nQnVpbGRlci50b1N0cmluZygpKTsKKyAgICBpbmplY3RlZEJ1bmRsZS5vdXRwdXRUZXh0KG1h
a2VTdHJpbmcoIkNPTkZJUk06IiwgYWRkTGVhZGluZ1NwYWNlU3RyaXBUcmFpbGluZ1NwYWNlc0Fk
ZE5ld2xpbmUodG9XVEZTdHJpbmcobWVzc2FnZSkpKSk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5k
bGVQYWdlOjp3aWxsUnVuSmF2YVNjcmlwdFByb21wdChXS1N0cmluZ1JlZiBtZXNzYWdlLCBXS1N0
cmluZ1JlZiBkZWZhdWx0VmFsdWUsIFdLQnVuZGxlRnJhbWVSZWYpCiB7Ci0gICAgU3RyaW5nQnVp
bGRlciBzdHJpbmdCdWlsZGVyOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiUFJP
TVBUOiAiKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh0b1dURlN0cmluZyhtZXNzYWdlKSk7
Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsIGRlZmF1bHQgdGV4dDogIik7Ci0g
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQodG9XVEZTdHJpbmcoZGVmYXVsdFZhbHVlKSk7Ci0gICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRv
bigpLm91dHB1dFRleHQoc3RyaW5nQnVpbGRlci50b1N0cmluZygpKTsKKyAgICBJbmplY3RlZEJ1
bmRsZTo6c2luZ2xldG9uKCkub3V0cHV0VGV4dChtYWtlU3RyaW5nKCJQUk9NUFQ6ICIsIHRvV1RG
U3RyaW5nKG1lc3NhZ2UpLCAiLCBkZWZhdWx0IHRleHQ6IiwgYWRkTGVhZGluZ1NwYWNlU3RyaXBU
cmFpbGluZ1NwYWNlc0FkZE5ld2xpbmUodG9XVEZTdHJpbmcoZGVmYXVsdFZhbHVlKSkpKTsKIH0K
IAogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZFJlYWNoQXBwbGljYXRpb25DYWNoZU9yaWdp
blF1b3RhKFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luLCBpbnQ2NF90IHRvdGFsQnl0ZXNOZWVk
ZWQpCg==
</data>
<flag name="commit-queue"
          id="425602"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409788</attachid>
            <date>2020-09-26 13:43:32 -0700</date>
            <delta_ts>2020-09-26 15:14:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216944-20200926134331.patch</filename>
            <type>text/plain</type>
            <size>26205</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3NjI0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMWM5M2RlYzk5MWNiODlhYjdkNWY5ZjgyOGU1ZmZkY2Nk
OTAzNTViZS4uNjc5ZGE2ZjVjNjA3MTA3OTg2YjI3OTA3ODhmYzI5OWI4MGI4NDUyYiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4
IEBACisyMDIwLTA5LTI1ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAg
ICBDaGFuZ2UgZHVtcEFzVGV4dCB0byBzdHJpcCB0cmFpbGluZyBzcGFjZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjk0NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IEFsYW4gQnVqdGFzLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1
bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAoZHVtcEZyYW1lc0FzVGV4dCk6IFN0cmlwIHRyYWls
aW5nIHNwYWNlcy4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRnJhbWVMb2FkRGVsZWdh
dGUubW06CisgICAgICAgICgtW0ZyYW1lTG9hZERlbGVnYXRlIHdlYlZpZXc6d2lsbFBlcmZvcm1D
bGllbnRSZWRpcmVjdFRvVVJMOmRlbGF5OmZpcmVEYXRlOmZvckZyYW1lOl0pOgorICAgICAgICBE
b24ndCBhZGQgdHJhaWxpbmcgc3BhY2UuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1VJ
RGVsZWdhdGUubW06CisgICAgICAgICgtW1VJRGVsZWdhdGUgd2ViVmlldzphZGRNZXNzYWdlVG9D
b25zb2xlOndpdGhTb3VyY2U6XSk6IERpdHRvLgorICAgICAgICAoYWRkTGVhZGluZ1NwYWNlU3Ry
aXBUcmFpbGluZ1NwYWNlcyk6IEFkZGVkLgorICAgICAgICAoc3RyaXBUcmFpbGluZ1NwYWNlcyk6
IEFkZGVkLgorICAgICAgICAoLVtVSURlbGVnYXRlIHdlYlZpZXc6cnVuSmF2YVNjcmlwdEFsZXJ0
UGFuZWxXaXRoTWVzc2FnZTppbml0aWF0ZWRCeUZyYW1lOl0pOiBEb24ndCBhZGQgdHJhaWxpbmcg
c3BhY2UuCisgICAgICAgICgtW1VJRGVsZWdhdGUgd2ViVmlldzpydW5KYXZhU2NyaXB0Q29uZmly
bVBhbmVsV2l0aE1lc3NhZ2U6aW5pdGlhdGVkQnlGcmFtZTpdKTogRGl0dG8uCisgICAgICAgICgt
W1VJRGVsZWdhdGUgd2ViVmlldzpydW5KYXZhU2NyaXB0VGV4dElucHV0UGFuZWxXaXRoUHJvbXB0
OmRlZmF1bHRUZXh0OmluaXRpYXRlZEJ5RnJhbWU6XSk6IERpdHRvLgorICAgICAgICAoLVtVSURl
bGVnYXRlIHdlYlZpZXc6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsV2l0aE1lc3NhZ2U6aW5p
dGlhdGVkQnlGcmFtZTpdKTogRGl0dG8uCisgICAgICAgICgtW1VJRGVsZWdhdGUgd2ViVmlldzpz
ZXRTdGF0dXNUZXh0Ol0pOiBEaXR0by4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9E
dW1wUmVuZGVyVHJlZS5jcHA6CisgICAgICAgIChkdW1wRnJhbWVzQXNUZXh0KTogU3RyaXAgdHJh
aWxpbmcgc3BhY2VzLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxl
Z2F0ZS5jcHA6CisgICAgICAgIChGcmFtZUxvYWREZWxlZ2F0ZTo6d2lsbFBlcmZvcm1DbGllbnRS
ZWRpcmVjdFRvVVJMKTogRG9uJ3QgYWRkIHRyYWlsaW5nIHNwYWNlLgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL3dpbi9VSURlbGVnYXRlLmNwcDoKKyAgICAgICAgKHRvTWVzc2FnZSk6IENoYW5n
ZWQgdG8gcmV0dXJuIHN0ZDo6d3N0cmluZy4KKyAgICAgICAgKHN0cmlwVHJhaWxpbmdTcGFjZXMp
OiBBZGRlZC4KKyAgICAgICAgKGFkZExlYWRpbmdTcGFjZVN0cmlwVHJhaWxpbmdTcGFjZXMpOiBB
ZGRlZC4KKyAgICAgICAgKFVJRGVsZWdhdGU6OnJ1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1l
c3NhZ2UpOiBEb24ndCBhZGQgdHJhaWxpbmcgc3BhY2UuCisgICAgICAgIChVSURlbGVnYXRlOjpy
dW5KYXZhU2NyaXB0Q29uZmlybVBhbmVsV2l0aE1lc3NhZ2UpOiBEaXR0by4KKyAgICAgICAgKFVJ
RGVsZWdhdGU6OnJ1bkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbFdpdGhQcm9tcHQpOiBEaXR0by4K
KyAgICAgICAgKFVJRGVsZWdhdGU6OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNz
YWdlKTogRGl0dG8uCisgICAgICAgIChVSURlbGVnYXRlOjp3ZWJWaWV3QWRkTWVzc2FnZVRvQ29u
c29sZSk6IERpdHRvLgorICAgICAgICAoVUlEZWxlZ2F0ZTo6c2V0U3RhdHVzVGV4dCk6IERpdHRv
LgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHk6CisgICAgICAgIChQ
b3J0LmRvX3RleHRfcmVzdWx0c19kaWZmZXIpOiBTdHJpcCB0cmFpbGluZyBzcGFjZXMgZnJvbSBl
eHBlY3RlZCB0ZXh0LgorICAgICAgICBQbGFuIGlzIHRvIHJlbW92ZSB0aGlzIGFmdGVyIHN0cmlw
cGluZyB0aGUgYWN0dWFsIGV4cGVjdGVkLnR4dCBmaWxlcy4KKworICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvcG9ydC93aW4ucHk6CisgICAgICAgIChXaW5Qb3J0LmRvX3RleHRfcmVzdWx0c19k
aWZmZXIpOiBDYWxsIHRocm91Z2ggdG8gYmFzZS4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdUUjo6
ZHVtcEZyYW1lVGV4dCk6IFN0cmlwIHRyYWlsaW5nIHNwYWNlcy4KKyAgICAgICAgKFdUUjo6SW5q
ZWN0ZWRCdW5kbGVQYWdlOjp3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0Rm9yRnJhbWUpOiBEb24n
dCBhZGQgdHJhaWxpbmcgc3BhY2UuCisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6IERpdHRvLgorICAgICAgICAoV1RSOjpz
dHJpcFRyYWlsaW5nU3BhY2VzKTogQWRkZWQuCisgICAgICAgIChXVFI6OmFkZExlYWRpbmdTcGFj
ZVN0cmlwVHJhaWxpbmdTcGFjZXMpOiBBZGRlZC4KKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5k
bGVQYWdlOjp3aWxsQWRkTWVzc2FnZVRvQ29uc29sZSk6IERvbid0IGFkZCB0cmFpbGluZyBzcGFj
ZS4KKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjp3aWxsUnVuSmF2YVNjcmlwdEFs
ZXJ0KTogRGl0dG8uCisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6d2lsbFJ1bkph
dmFTY3JpcHRDb25maXJtKTogRGl0dG8uCisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFn
ZTo6d2lsbFJ1bkphdmFTY3JpcHRQcm9tcHQpOiBEaXR0by4KKwogMjAyMC0wOS0yNSAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIHJldmVydGluZyByMjY3NjA4LgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0R1bXBSZW5kZXJUcmVlLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5k
ZXJUcmVlLm1tCmluZGV4IGI3ZjE4MTI3N2M2OTk1MDA5YTE3MjE4YjRlNzQzNTcyNzA4YjMzNmMu
LmQzZDEyYTkwYWZkMjJiOGY5MTNhODQyMzJhODEwMDU1OGZlMjExMDMgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KQEAgLTE1MTUsNiArMTUxNSwxMCBAQCBz
dGF0aWMgTlNTdHJpbmcgKmR1bXBGcmFtZXNBc1RleHQoV2ViRnJhbWUgKmZyYW1lKQogICAgICAg
ICB9CiAgICAgfQogCisgICAgLy8gVG8ga2VlcCB0aGluZ3MgdGlkeSwgc3RyaXAgYWxsIHRyYWls
aW5nIHNwYWNlczogdGhleSBhcmUgbm90IGEgbWVhbmluZ2Z1bCBwYXJ0IG9mIGR1bXBBc1RleHQg
dGVzdCBvdXRwdXQuCisgICAgW3Jlc3VsdCByZXBsYWNlT2NjdXJyZW5jZXNPZlN0cmluZzpAIiAr
XG4iIHdpdGhTdHJpbmc6QCJcbiIgb3B0aW9uczpOU1JlZ3VsYXJFeHByZXNzaW9uU2VhcmNoIHJh
bmdlOk5TTWFrZVJhbmdlKDAsIHJlc3VsdC5sZW5ndGgpXTsKKyAgICBbcmVzdWx0IHJlcGxhY2VP
Y2N1cnJlbmNlc09mU3RyaW5nOkAiICskIiB3aXRoU3RyaW5nOkAiIiBvcHRpb25zOk5TUmVndWxh
ckV4cHJlc3Npb25TZWFyY2ggcmFuZ2U6TlNNYWtlUmFuZ2UoMCwgcmVzdWx0Lmxlbmd0aCldOwor
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbQppbmRleCBjYTNlNmQwYWQ4M2JmZTllZDUxYzNk
MWU0MTQ4ZTU5OWFmZmU2YTkwLi44Mjc1MWJjNWI3NDE3MTU1Y2U1YjU0NGFjODcwYTZjOWRkM2Ri
MjEzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29u
dHJvbGxlci5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29u
dHJvbGxlci5tbQpAQCAtMTI3MCw3ICsxMjcwLDggQEAgLSAodm9pZCloYW5kbGVFdmVudDooRE9N
RXZlbnQgKilldmVudAogICAgIH0KICAgICAKICAgICBpZiAoW2V2ZW50IGlzS2luZE9mQ2xhc3M6
W0RPTUtleWJvYXJkRXZlbnQgY2xhc3NdXSkgewotICAgICAgICBwcmludGYoIiAga2V5SWRlbnRp
ZmllcjogJXNcbiIsIFtbKERPTUtleWJvYXJkRXZlbnQqKWV2ZW50IGtleUlkZW50aWZpZXJdIFVU
RjhTdHJpbmddKTsKKyAgICAgICAgYXV0byBrZXlJZGVudGlmaWVyID0gWyhET01LZXlib2FyZEV2
ZW50KilldmVudCBrZXlJZGVudGlmaWVyXTsKKyAgICAgICAgcHJpbnRmKCIgIGtleUlkZW50aWZp
ZXI6JXMlc1xuIiwga2V5SWRlbnRpZmllci5sZW5ndGggPyAiICIgOiAiIiwgW2tleUlkZW50aWZp
ZXIgVVRGOFN0cmluZ10pOwogICAgICAgICBwcmludGYoIiAga2V5TG9jYXRpb246ICAgJWRcbiIs
IFsoRE9NS2V5Ym9hcmRFdmVudCopZXZlbnQgbG9jYXRpb25dKTsKICAgICAgICAgcHJpbnRmKCIg
IG1vZGlmaWVyIGtleXM6IGM6JWQgczolZCBhOiVkIG06JWRcbiIsIAogICAgICAgICAgICAgICAg
WyhET01LZXlib2FyZEV2ZW50KilldmVudCBjdHJsS2V5XSA/IDEgOiAwLCAKZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9GcmFtZUxvYWREZWxlZ2F0ZS5tbSBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9GcmFtZUxvYWREZWxlZ2F0ZS5tbQppbmRleCBiMzhmNGQzN2YwNjcx
NTM1MWM4OWE4NmZlODIwOGI3NmYyMTVhYTdlLi4zNjcxNDkzOWZkYTBhNTY3NDljNzk5ODg2YTFl
YTQzODkyMTg5YTRhIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRnJhbWVM
b2FkRGVsZWdhdGUubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0ZyYW1lTG9hZERl
bGVnYXRlLm1tCkBAIC00MTIsNyArNDEyLDcgQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICop
c2VuZGVyIGRpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZUZvckZyYW1lOihXZWJGcmFtZQogLSAo
dm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RU
b1VSTDooTlNVUkwgKilVUkwgZGVsYXk6KE5TVGltZUludGVydmFsKXNlY29uZHMgZmlyZURhdGU6
KE5TRGF0ZSAqKWRhdGUgZm9yRnJhbWU6KFdlYkZyYW1lICopZnJhbWUKIHsKICAgICBpZiAoIWRv
bmUgJiYgZ1Rlc3RSdW5uZXItPmR1bXBGcmFtZUxvYWRDYWxsYmFja3MoKSkgewotICAgICAgICBO
U1N0cmluZyAqc3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCAtIHdpbGxQ
ZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VSTDogJUAgIiwgW2ZyYW1lIF9kcnRfZGVzY3JpcHRpb25T
dWl0YWJsZUZvclRlc3RSZXN1bHRdLCBbVVJMIF9kcnRfZGVzY3JpcHRpb25TdWl0YWJsZUZvclRl
c3RSZXN1bHRdXTsKKyAgICAgICAgTlNTdHJpbmcgKnN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdX
aXRoRm9ybWF0OkAiJUAgLSB3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkw6ICVAIiwgW2Zy
YW1lIF9kcnRfZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHRdLCBbVVJMIF9kcnRfZGVz
Y3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHRdXTsKICAgICAgICAgcHJpbnRmICgiJXNcbiIs
IFtzdHJpbmcgVVRGOFN0cmluZ10pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlE
ZWxlZ2F0ZS5tbQppbmRleCBmNjk5NTU1MWUwY2RhMTBkNGIyYjc5ZjkyYmE2ZGEzNGJlMzU3Yjg4
Li5hZDNjYTQyMWM1OGE4MjlhZjc2OTkxZTg4ZGRjZmM4ODhlNmM1NDdlIDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbQorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbQpAQCAtNzYsNiArNzYsMTggQEAgLSAoTlNSZWN0KXdl
YlZpZXdGcmFtZTooV2ViVmlldyAqKXNlbmRlcgogICAgIHJldHVybiBOU01ha2VSZWN0KHdpbmRv
d09yaWdpbi54LCB3aW5kb3dPcmlnaW4ueSwgc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQpOwogfQog
CitzdGF0aWMgTlNTdHJpbmcgKnN0cmlwVHJhaWxpbmdTcGFjZXMoTlNTdHJpbmcgKnN0cmluZykK
K3sKKyAgICBhdXRvIHJlc3VsdCA9IFtzdHJpbmcgc3RyaW5nQnlSZXBsYWNpbmdPY2N1cnJlbmNl
c09mU3RyaW5nOkAiICtcbiIgd2l0aFN0cmluZzpAIlxuIiBvcHRpb25zOk5TUmVndWxhckV4cHJl
c3Npb25TZWFyY2ggcmFuZ2U6TlNNYWtlUmFuZ2UoMCwgc3RyaW5nLmxlbmd0aCldOworICAgIHJl
dHVybiBbcmVzdWx0IHN0cmluZ0J5UmVwbGFjaW5nT2NjdXJyZW5jZXNPZlN0cmluZzpAIiArJCIg
d2l0aFN0cmluZzpAIiIgb3B0aW9uczpOU1JlZ3VsYXJFeHByZXNzaW9uU2VhcmNoIHJhbmdlOk5T
TWFrZVJhbmdlKDAsIHJlc3VsdC5sZW5ndGgpXTsKK30KKworc3RhdGljIE5TU3RyaW5nICphZGRM
ZWFkaW5nU3BhY2VTdHJpcFRyYWlsaW5nU3BhY2VzKE5TU3RyaW5nICpzdHJpbmcpCit7CisgICAg
YXV0byByZXN1bHQgPSBzdHJpcFRyYWlsaW5nU3BhY2VzKHN0cmluZyk7CisgICAgcmV0dXJuIChy
ZXN1bHQubGVuZ3RoICYmICFbcmVzdWx0IGhhc1ByZWZpeDpAIlxuIl0pID8gW0AiICIgc3RyaW5n
QnlBcHBlbmRpbmdTdHJpbmc6cmVzdWx0XSA6IHJlc3VsdDsKK30KKwogLSAodm9pZCl3ZWJWaWV3
OihXZWJWaWV3ICopc2VuZGVyIGFkZE1lc3NhZ2VUb0NvbnNvbGU6KE5TRGljdGlvbmFyeSAqKWRp
Y3Rpb25hcnkgd2l0aFNvdXJjZTooTlNTdHJpbmcgKilzb3VyY2UKIHsKICAgICBpZiAoZG9uZSkK
QEAgLTg3LDkgKzk5LDcgQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGFkZE1l
c3NhZ2VUb0NvbnNvbGU6KE5TRGljdGlvbmFyeSAqKWRpY3Rpb25hcnkKICAgICBpZiAocmFuZ2Uu
bG9jYXRpb24gIT0gTlNOb3RGb3VuZCkKICAgICAgICAgbWVzc2FnZSA9IFtbbWVzc2FnZSBzdWJz
dHJpbmdUb0luZGV4OnJhbmdlLmxvY2F0aW9uXSBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzpbW21l
c3NhZ2Ugc3Vic3RyaW5nRnJvbUluZGV4Ok5TTWF4UmFuZ2UocmFuZ2UpXSBsYXN0UGF0aENvbXBv
bmVudF1dOwogCi0gICAgYXV0byBvdXQgPSBnVGVzdFJ1bm5lci0+ZHVtcEpTQ29uc29sZUxvZ0lu
U3RkRXJyKCkgPyBzdGRlcnIgOiBzdGRvdXQ7Ci0gICAgZnByaW50ZihvdXQsICJDT05TT0xFIE1F
U1NBR0U6ICIpOwotICAgIGZwcmludGYob3V0LCAiJXNcbiIsIFttZXNzYWdlIFVURjhTdHJpbmdd
KTsKKyAgICBmcHJpbnRmKGdUZXN0UnVubmVyLT5kdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIoKSA/
IHN0ZGVyciA6IHN0ZG91dCwgIkNPTlNPTEUgTUVTU0FHRTolc1xuIiwgYWRkTGVhZGluZ1NwYWNl
U3RyaXBUcmFpbGluZ1NwYWNlcyhtZXNzYWdlKS5VVEY4U3RyaW5nID86ICIgKG51bGwpIik7CiB9
CiAKIC0gKHZvaWQpbW9kYWxXaW5kb3dXaWxsQ2xvc2U6KE5TTm90aWZpY2F0aW9uICopbm90aWZp
Y2F0aW9uCkBAIC0xMTMsNyArMTIzLDcgQEAgLSAodm9pZCl3ZWJWaWV3UnVuTW9kYWw6KFdlYlZp
ZXcgKilzZW5kZXIKIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBydW5KYXZhU2Ny
aXB0QWxlcnRQYW5lbFdpdGhNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2UgaW5pdGlhdGVkQnlG
cmFtZTooV2ViRnJhbWUgKilmcmFtZQogewogICAgIGlmICghZG9uZSkgewotICAgICAgICBwcmlu
dGYoIkFMRVJUOiAlc1xuIiwgW21lc3NhZ2UgVVRGOFN0cmluZ10pOworICAgICAgICBwcmludGYo
IkFMRVJUOiVzXG4iLCBhZGRMZWFkaW5nU3BhY2VTdHJpcFRyYWlsaW5nU3BhY2VzKG1lc3NhZ2Up
LlVURjhTdHJpbmcgPzogIiAobnVsbCkiKTsKICAgICAgICAgZmZsdXNoKHN0ZG91dCk7CiAgICAg
fQogfQpAQCAtMTIxLDIyICsxMzEsMjEgQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2Vu
ZGVyIHJ1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1lc3NhZ2U6KE5TU3RyaW5nICoKIC0gKEJP
T0wpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBydW5KYXZhU2NyaXB0Q29uZmlybVBhbmVsV2l0
aE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZSBpbml0aWF0ZWRCeUZyYW1lOihXZWJGcmFtZSAq
KWZyYW1lCiB7CiAgICAgaWYgKCFkb25lKQotICAgICAgICBwcmludGYoIkNPTkZJUk06ICVzXG4i
LCBbbWVzc2FnZSBVVEY4U3RyaW5nXSk7CisgICAgICAgIHByaW50ZigiQ09ORklSTTolc1xuIiwg
YWRkTGVhZGluZ1NwYWNlU3RyaXBUcmFpbGluZ1NwYWNlcyhtZXNzYWdlKS5VVEY4U3RyaW5nID86
ICIgKG51bGwpIik7CiAgICAgcmV0dXJuIFlFUzsKIH0KIAogLSAoTlNTdHJpbmcgKil3ZWJWaWV3
OihXZWJWaWV3ICopc2VuZGVyIHJ1bkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbFdpdGhQcm9tcHQ6
KE5TU3RyaW5nICopcHJvbXB0IGRlZmF1bHRUZXh0OihOU1N0cmluZyAqKWRlZmF1bHRUZXh0IGlu
aXRpYXRlZEJ5RnJhbWU6KFdlYkZyYW1lICopZnJhbWUKIHsKICAgICBpZiAoIWRvbmUpCi0gICAg
ICAgIHByaW50ZigiUFJPTVBUOiAlcywgZGVmYXVsdCB0ZXh0OiAlc1xuIiwgW3Byb21wdCBVVEY4
U3RyaW5nXSwgW2RlZmF1bHRUZXh0IFVURjhTdHJpbmddKTsKKyAgICAgICAgcHJpbnRmKCJQUk9N
UFQ6ICVzLCBkZWZhdWx0IHRleHQ6JXNcbiIsIHByb21wdC5VVEY4U3RyaW5nLCBhZGRMZWFkaW5n
U3BhY2VTdHJpcFRyYWlsaW5nU3BhY2VzKGRlZmF1bHRUZXh0KS5VVEY4U3RyaW5nID86ICIgKG51
bGwpIik7CiAgICAgcmV0dXJuIGRlZmF1bHRUZXh0OwogfQogCiAtIChCT09MKXdlYlZpZXc6KFdl
YlZpZXcgKiljIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlOihOU1N0cmlu
ZyAqKW1lc3NhZ2UgaW5pdGlhdGVkQnlGcmFtZTooV2ViRnJhbWUgKilmcmFtZQogewogICAgIGlm
ICghZG9uZSkKLSAgICAgICAgcHJpbnRmKCJDT05GSVJNIE5BVklHQVRJT046ICVzXG4iLCBbbWVz
c2FnZSBVVEY4U3RyaW5nXSk7Ci0gICAgCisgICAgICAgIHByaW50ZigiQ09ORklSTSBOQVZJR0FU
SU9OOiVzXG4iLCBhZGRMZWFkaW5nU3BhY2VTdHJpcFRyYWlsaW5nU3BhY2VzKG1lc3NhZ2UpLlVU
RjhTdHJpbmcgPzogIiAobnVsbCkiKTsKICAgICByZXR1cm4gIWdUZXN0UnVubmVyLT5zaG91bGRT
dGF5T25QYWdlQWZ0ZXJIYW5kbGluZ0JlZm9yZVVubG9hZCgpOwogfQogCkBAIC0yMzUsNyArMjQ0
LDcgQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGV4Y2VlZGVkQXBwbGljYXRp
b25DYWNoZU9yaWdpblF1b3RhRm9yU2VjdXJpdHkKIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAq
KXNlbmRlciBzZXRTdGF0dXNUZXh0OihOU1N0cmluZyAqKXRleHQKIHsKICAgICBpZiAoIWRvbmUg
JiYgZ1Rlc3RSdW5uZXItPmR1bXBTdGF0dXNDYWxsYmFja3MoKSkKLSAgICAgICAgcHJpbnRmKCJV
SSBERUxFR0FURSBTVEFUVVMgQ0FMTEJBQ0s6IHNldFN0YXR1c1RleHQ6JXNcbiIsIFt0ZXh0IFVU
RjhTdHJpbmddKTsKKyAgICAgICAgcHJpbnRmKCJVSSBERUxFR0FURSBTVEFUVVMgQ0FMTEJBQ0s6
IHNldFN0YXR1c1RleHQ6JXNcbiIsIHN0cmlwVHJhaWxpbmdTcGFjZXModGV4dCkuVVRGOFN0cmlu
Zyk7CiB9CiAKIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5
Rm9yR2VvbG9jYXRpb25SZXF1ZXN0RnJvbU9yaWdpbjooV2ViU2VjdXJpdHlPcmlnaW4gKilvcmln
aW4gZnJhbWU6KFdlYkZyYW1lICopZnJhbWUgbGlzdGVuZXI6KGlkPFdlYkFsbG93RGVueVBvbGlj
eUxpc3RlbmVyPilsaXN0ZW5lcgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L0R1bXBSZW5kZXJUcmVlLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVy
VHJlZS5jcHAKaW5kZXggNmFlZmMyNWU1NTgzNzUwZTdlNWUzZGNlYmZiNTNmNzFmMTcwNTgyYS4u
ZGQ4MGU0Zjg1ODkxZTM0MzU2NzM2NjdlMTNlMTg2MmIxMWI5ZmExYiAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCkBAIC00ODgsNiArNDg4LDEzIEBAIHN0
YXRpYyB3c3RyaW5nIGR1bXBGcmFtZXNBc1RleHQoSVdlYkZyYW1lKiBmcmFtZSkKICAgICAgICAg
fQogICAgIH0KIAorICAgIC8vIFRvIGtlZXAgdGhpbmdzIHRpZHksIHN0cmlwIGFsbCB0cmFpbGlu
ZyBzcGFjZXM6IHRoZXkgYXJlIG5vdCBhIG1lYW5pbmdmdWwgcGFydCBvZiBkdW1wQXNUZXh0IHRl
c3Qgb3V0cHV0LgorICAgIHN0ZDo6d3N0cmluZzo6c2l6ZV90eXBlIHNwYWNlUG9zaXRpb247Cisg
ICAgd2hpbGUgKChzcGFjZVBvc2l0aW9uID0gcmVzdWx0LmZpbmQoTCIgXG4iKSkgIT0gc3RkOjp3
c3RyaW5nOjpucG9zKQorICAgICAgICByZXN1bHQuZXJhc2Uoc3BhY2VQb3NpdGlvbiwgMSk7Cisg
ICAgd2hpbGUgKCFyZXN1bHQuZW1wdHkoKSAmJiByZXN1bHQuYmFjaygpID09ICcgJykKKyAgICAg
ICAgcmVzdWx0LnBvcF9iYWNrKCk7CisKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuY3BwIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmNwcAppbmRleCA3NTViZWQx
NmY2MGVkYzAxMTE1NTIxZTE1OGMwZGJmMDU1ODhiZjg0Li5mZDc3YWQxYzM5MjYzOGRhOTQxNDNl
ZTdkNWE4MjFlNjk0MTAyMzEzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4v
RnJhbWVMb2FkRGVsZWdhdGUuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFt
ZUxvYWREZWxlZ2F0ZS5jcHAKQEAgLTI5Miw3ICsyOTIsNyBAQCBIUkVTVUxUIEZyYW1lTG9hZERl
bGVnYXRlOjpkaWRGYWlsTG9hZFdpdGhFcnJvcihfSW5fb3B0XyBJV2ViVmlldyosIF9Jbl9vcHRf
IElXZQogSFJFU1VMVCBGcmFtZUxvYWREZWxlZ2F0ZTo6d2lsbFBlcmZvcm1DbGllbnRSZWRpcmVj
dFRvVVJMKF9Jbl9vcHRfIElXZWJWaWV3KiwgX0luXyBCU1RSIHVybCwgZG91YmxlIC8qZGVsYXlT
ZWNvbmRzKi8sIERBVEUgLypmaXJlRGF0ZSovLCBfSW5fb3B0XyBJV2ViRnJhbWUqIGZyYW1lKQog
ewogICAgIGlmICghZG9uZSAmJiBnVGVzdFJ1bm5lci0+ZHVtcEZyYW1lTG9hZENhbGxiYWNrcygp
KQotICAgICAgICBmcHJpbnRmKHRlc3RSZXN1bHQsICIlcyAtIHdpbGxQZXJmb3JtQ2xpZW50UmVk
aXJlY3RUb1VSTDogJVMgXG4iLCBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChmcmFt
ZSkuY19zdHIoKSwKKyAgICAgICAgZnByaW50Zih0ZXN0UmVzdWx0LCAiJXMgLSB3aWxsUGVyZm9y
bUNsaWVudFJlZGlyZWN0VG9VUkw6ICVTXG4iLCBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJl
c3VsdChmcmFtZSkuY19zdHIoKSwKICAgICAgICAgICAgICAgICB1cmxTdWl0YWJsZUZvclRlc3RS
ZXN1bHQoc3RkOjp3c3RyaW5nKHVybCwgOjpTeXNTdHJpbmdMZW4odXJsKSkpLmNfc3RyKCkpOwog
CiAgICAgcmV0dXJuIFNfT0s7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4v
VUlEZWxlZ2F0ZS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVUlEZWxlZ2F0ZS5jcHAK
aW5kZXggOGVkNmY4NDVmOTdlOTkyOTE0MDRmZmY0YTFkNzlhZGRhNmEwYzIxNS4uMmFmOGZlODgy
Mzk3ZWFlNmNhOTJjOTJkMWM4Y2I1MzVhYmJiYzkzMyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL1VJRGVsZWdhdGUuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9VSURlbGVnYXRlLmNwcApAQCAtNDUzLDExICs0NTMsMjggQEAgSFJFU1VMVCBVSURlbGVnYXRl
Ojp3ZWJWaWV3RnJhbWUoX0luX29wdF8gSVdlYlZpZXcqIC8qc2VuZGVyKi8sIF9PdXRfIFJFQ1Qq
IGZyYW0KICAgICByZXR1cm4gU19PSzsKIH0KIAotY29uc3Qgd2NoYXJfdCogdG9NZXNzYWdlKGNv
bnN0IEJTVFIgbWVzc2FnZSkKK3N0YXRpYyBzdGQ6OndzdHJpbmcgc3RyaXBUcmFpbGluZ1NwYWNl
cyhjb25zdCBzdGQ6OndzdHJpbmcmIHN0cmluZykKK3sKKyAgICBhdXRvIHJlc3VsdCA9IHN0cmlu
ZzsKKyAgICBzdGQ6OndzdHJpbmc6OnNpemVfdHlwZSBzcGFjZVBvc2l0aW9uOworICAgIHdoaWxl
ICgoc3BhY2VQb3NpdGlvbiA9IHJlc3VsdC5maW5kKEwiIFxuIikpICE9IHN0ZDo6d3N0cmluZzo6
bnBvcykKKyAgICAgICAgcmVzdWx0LmVyYXNlKHNwYWNlUG9zaXRpb24sIDEpOworICAgIHdoaWxl
ICghcmVzdWx0LmVtcHR5KCkgJiYgcmVzdWx0LmJhY2soKSA9PSAnICcpCisgICAgICAgIHJlc3Vs
dC5wb3BfYmFjaygpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBzdGQ6OndzdHJp
bmcgYWRkTGVhZGluZ1NwYWNlU3RyaXBUcmFpbGluZ1NwYWNlcyhjb25zdCBzdGQ6OndzdHJpbmcm
IHN0cmluZykKK3sKKyAgICBhdXRvIHJlc3VsdCA9IHN0cmlwVHJhaWxpbmdTcGFjZXMoc3RyaW5n
KTsKKyAgICByZXR1cm4gKHJlc3VsdC5lbXB0eSgpIHx8IHJlc3VsdC5mcm9udCgpID09ICdcbicp
ID8gcmVzdWx0IDogTCcgJyArIHJlc3VsdDsKK30KKworc3RkOjp3c3RyaW5nIHRvTWVzc2FnZShC
U1RSIG1lc3NhZ2UpCiB7CiAgICAgYXV0byBsZW5ndGggPSBTeXNTdHJpbmdMZW4obWVzc2FnZSk7
CiAgICAgaWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiBtZXNzYWdlOworICAgICAgICByZXR1
cm4gTCIiOwogICAgIC8vIFJldHVybiAiKG51bGwpIiBmb3IgYW4gaW52YWxpZCBVVEYtMTYgc2Vx
dWVuY2UgdG8gYWxpZ24gd2l0aCBXZWJLaXRUZXN0UnVubmVyLgogICAgIGF1dG8gdXRmOCA9IFN0
cmluZ1ZpZXcodWNoYXJGcm9tKG1lc3NhZ2UpLCBsZW5ndGgpLnRyeUdldFV0ZjgoU3RyaWN0Q29u
dmVyc2lvbik7CiAgICAgaWYgKCF1dGY4KQpAQCAtNDY1LDEwICs0ODIsMjAgQEAgY29uc3Qgd2No
YXJfdCogdG9NZXNzYWdlKGNvbnN0IEJTVFIgbWVzc2FnZSkKICAgICByZXR1cm4gbWVzc2FnZTsK
IH0KIAorc3RhdGljIHN0ZDo6d3N0cmluZyBhZGRMZWFkaW5nU3BhY2VTdHJpcFRyYWlsaW5nU3Bh
Y2VzKEJTVFIgbWVzc2FnZSkKK3sKKyAgICByZXR1cm4gYWRkTGVhZGluZ1NwYWNlU3RyaXBUcmFp
bGluZ1NwYWNlcyh0b01lc3NhZ2UobWVzc2FnZSkpOworfQorCitzdGF0aWMgc3RkOjp3c3RyaW5n
IHN0cmlwVHJhaWxpbmdTcGFjZXMoQlNUUiBtZXNzYWdlKQoreworICAgIHJldHVybiBzdHJpcFRy
YWlsaW5nU3BhY2VzKHRvTWVzc2FnZShtZXNzYWdlKSk7Cit9CisKIEhSRVNVTFQgVUlEZWxlZ2F0
ZTo6cnVuSmF2YVNjcmlwdEFsZXJ0UGFuZWxXaXRoTWVzc2FnZShfSW5fb3B0XyBJV2ViVmlldyog
LypzZW5kZXIqLywgX0luXyBCU1RSIG1lc3NhZ2UpCiB7CiAgICAgaWYgKCFkb25lKSB7Ci0gICAg
ICAgIGZwcmludGYodGVzdFJlc3VsdCwgIkFMRVJUOiAlU1xuIiwgdG9NZXNzYWdlKG1lc3NhZ2Up
KTsKKyAgICAgICAgZnByaW50Zih0ZXN0UmVzdWx0LCAiQUxFUlQ6JVNcbiIsIGFkZExlYWRpbmdT
cGFjZVN0cmlwVHJhaWxpbmdTcGFjZXMobWVzc2FnZSkuY19zdHIoKSk7CiAgICAgICAgIGZmbHVz
aCh0ZXN0UmVzdWx0KTsKICAgICB9CiAKQEAgLTQ3OCw3ICs1MDUsNyBAQCBIUkVTVUxUIFVJRGVs
ZWdhdGU6OnJ1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1lc3NhZ2UoX0luX29wdF8gSVdlYlZp
ZXcqIC8qc2VuZAogSFJFU1VMVCBVSURlbGVnYXRlOjpydW5KYXZhU2NyaXB0Q29uZmlybVBhbmVs
V2l0aE1lc3NhZ2UoX0luX29wdF8gSVdlYlZpZXcqIC8qc2VuZGVyKi8sIF9Jbl8gQlNUUiBtZXNz
YWdlLCBfT3V0XyBCT09MKiByZXN1bHQpCiB7CiAgICAgaWYgKCFkb25lKQotICAgICAgICBmcHJp
bnRmKHRlc3RSZXN1bHQsICJDT05GSVJNOiAlU1xuIiwgdG9NZXNzYWdlKG1lc3NhZ2UpKTsKKyAg
ICAgICAgZnByaW50Zih0ZXN0UmVzdWx0LCAiQ09ORklSTTolU1xuIiwgYWRkTGVhZGluZ1NwYWNl
U3RyaXBUcmFpbGluZ1NwYWNlcyhtZXNzYWdlKS5jX3N0cigpKTsKIAogICAgICpyZXN1bHQgPSBU
UlVFOwogCkBAIC00ODgsNyArNTE1LDcgQEAgSFJFU1VMVCBVSURlbGVnYXRlOjpydW5KYXZhU2Ny
aXB0Q29uZmlybVBhbmVsV2l0aE1lc3NhZ2UoX0luX29wdF8gSVdlYlZpZXcqIC8qc2UKIEhSRVNV
TFQgVUlEZWxlZ2F0ZTo6cnVuSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsV2l0aFByb21wdChfSW5f
b3B0XyBJV2ViVmlldyogLypzZW5kZXIqLywgX0luXyBCU1RSIG1lc3NhZ2UsIF9Jbl8gQlNUUiBk
ZWZhdWx0VGV4dCwgX19kZXJlZl9vcHRfb3V0IEJTVFIqIHJlc3VsdCkKIHsKICAgICBpZiAoIWRv
bmUpCi0gICAgICAgIGZwcmludGYodGVzdFJlc3VsdCwgIlBST01QVDogJVMsIGRlZmF1bHQgdGV4
dDogJVNcbiIsIHRvTWVzc2FnZShtZXNzYWdlKSwgdG9NZXNzYWdlKGRlZmF1bHRUZXh0KSk7Cisg
ICAgICAgIGZwcmludGYodGVzdFJlc3VsdCwgIlBST01QVDogJVMsIGRlZmF1bHQgdGV4dDolU1xu
IiwgdG9NZXNzYWdlKG1lc3NhZ2UpLmNfc3RyKCksIGFkZExlYWRpbmdTcGFjZVN0cmlwVHJhaWxp
bmdTcGFjZXMoZGVmYXVsdFRleHQpLmNfc3RyKCkpOwogCiAgICAgKnJlc3VsdCA9IFN5c0FsbG9j
U3RyaW5nKGRlZmF1bHRUZXh0KTsKIApAQCAtNTAxLDcgKzUyOCw3IEBAIEhSRVNVTFQgVUlEZWxl
Z2F0ZTo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsV2l0aE1lc3NhZ2UoX0luX29wdF8gSVdl
YlZpZXcqIC8qCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKICAgICBpZiAoIWRvbmUpCi0g
ICAgICAgIGZwcmludGYodGVzdFJlc3VsdCwgIkNPTkZJUk0gTkFWSUdBVElPTjogJVNcbiIsIHRv
TWVzc2FnZShtZXNzYWdlKSk7CisgICAgICAgIGZwcmludGYodGVzdFJlc3VsdCwgIkNPTkZJUk0g
TkFWSUdBVElPTjolU1xuIiwgYWRkTGVhZGluZ1NwYWNlU3RyaXBUcmFpbGluZ1NwYWNlcyhtZXNz
YWdlKS5jX3N0cigpKTsKIAogICAgICpyZXN1bHQgPSAhZ1Rlc3RSdW5uZXItPnNob3VsZFN0YXlP
blBhZ2VBZnRlckhhbmRsaW5nQmVmb3JlVW5sb2FkKCk7CiAKQEAgLTUyMyw4ICs1NTAsNyBAQCBI
UkVTVUxUIFVJRGVsZWdhdGU6OndlYlZpZXdBZGRNZXNzYWdlVG9Db25zb2xlKF9Jbl9vcHRfIElX
ZWJWaWV3KiAvKnNlbmRlciovLCBfSQogICAgIH0KIAogICAgIGF1dG8gb3V0ID0gZ1Rlc3RSdW5u
ZXItPmR1bXBKU0NvbnNvbGVMb2dJblN0ZEVycigpID8gc3RkZXJyIDogdGVzdFJlc3VsdDsKLSAg
ICBmcHJpbnRmKG91dCwgIkNPTlNPTEUgTUVTU0FHRTogIik7Ci0gICAgZnByaW50ZihvdXQsICIl
c1xuIiwgdG9VVEY4KG5ld01lc3NhZ2UpLmNfc3RyKCkpOworICAgIGZwcmludGYob3V0LCAiQ09O
U09MRSBNRVNTQUdFOiVTXG4iLCBhZGRMZWFkaW5nU3BhY2VTdHJpcFRyYWlsaW5nU3BhY2VzKG5l
d01lc3NhZ2UpLmNfc3RyKCkpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC02NzMsNyArNjk5
LDcgQEAgSFJFU1VMVCBVSURlbGVnYXRlOjp3ZWJWaWV3RGlkSW52YWxpZGF0ZShfSW5fb3B0XyBJ
V2ViVmlldyogLypzZW5kZXIqLykKIEhSRVNVTFQgVUlEZWxlZ2F0ZTo6c2V0U3RhdHVzVGV4dChf
SW5fb3B0XyBJV2ViVmlldyosIF9Jbl8gQlNUUiB0ZXh0KQogewogICAgIGlmICghZG9uZSAmJiBn
VGVzdFJ1bm5lci0+ZHVtcFN0YXR1c0NhbGxiYWNrcygpKQotICAgICAgICBmcHJpbnRmKHRlc3RS
ZXN1bHQsICJVSSBERUxFR0FURSBTVEFUVVMgQ0FMTEJBQ0s6IHNldFN0YXR1c1RleHQ6JVNcbiIs
IHRvTWVzc2FnZSh0ZXh0KSk7CisgICAgICAgIGZwcmludGYodGVzdFJlc3VsdCwgIlVJIERFTEVH
QVRFIFNUQVRVUyBDQUxMQkFDSzogc2V0U3RhdHVzVGV4dDolU1xuIiwgc3RyaXBUcmFpbGluZ1Nw
YWNlcyh0ZXh0KS5jX3N0cigpKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3BvcnQvYmFzZS5weQppbmRleCA3NTU3MDk0NmM3OTFjMmQyZDIxNjZmNjFhMmU5Y2RiOWQ0
MzQ3YjMzLi4zM2E5YTZiMDUwODQzOTk3MTYxYWYwYmQ0YWUwNDA4MGEwZDIzMzNkIDEwMDY0NAot
LS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQpAQCAtMzAwLDYgKzMwMCw5IEBAIGNsYXNzIFBvcnQo
b2JqZWN0KToKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogCiAgICAgZGVmIGRvX3RleHRfcmVz
dWx0c19kaWZmZXIoc2VsZiwgZXhwZWN0ZWRfdGV4dCwgYWN0dWFsX3RleHQpOgorICAgICAgICAj
IElnbm9yZSB0cmFpbGluZyBzcGFjZXMgaW4gZXhwZWN0ZWQgZmlsZXMuIFdlIHdpbGwgcmVtb3Zl
IHRoaXMgY29kZSBhZnRlciByZW1vdmluZyB0cmFpbGluZyBzcGFjZXMgZnJvbSBhbGwgZXhwZWN0
ZWQudHh0IGZpbGVzLgorICAgICAgICBpZiBub3QgZXhwZWN0ZWRfdGV4dC5zdGFydHN3aXRoKCI8
P3htbCIpOgorICAgICAgICAgICAgZXhwZWN0ZWRfdGV4dCA9IHJlLmNvbXBpbGUoIiArJCIsIHJl
Lk1VTFRJTElORSkuc3ViKCIiLCBleHBlY3RlZF90ZXh0KQogICAgICAgICByZXR1cm4gZXhwZWN0
ZWRfdGV4dCAhPSBhY3R1YWxfdGV4dAogCiAgICAgZGVmIGRvX2F1ZGlvX3Jlc3VsdHNfZGlmZmVy
KHNlbGYsIGV4cGVjdGVkX2F1ZGlvLCBhY3R1YWxfYXVkaW8pOgpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9wb3J0L3dpbi5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9y
dC93aW4ucHkKaW5kZXggNzAzOWNiNTJjM2QxZWY3M2FlYWRmMmQxMzI2YTMyZmU1ZWI0N2EyMi4u
MTRjMzI1NGZiOGUwNTI1YzNlZDA4MTUyOTY2ZTgyYmZmYzFkMmQxNiAxMDA2NDQKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3dpbi5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3BvcnQvd2luLnB5CkBAIC0xMDMsMTggKzEwMywxNCBAQCBjbGFzcyBXaW5Qb3J0KEFwcGxl
UG9ydCk6CiAgICAgICAgICAgICBzZWxmLl9vc192ZXJzaW9uID0gc2VsZi5ob3N0LnBsYXRmb3Jt
Lm9zX3ZlcnNpb24KIAogICAgIGRlZiBkb190ZXh0X3Jlc3VsdHNfZGlmZmVyKHNlbGYsIGV4cGVj
dGVkX3RleHQsIGFjdHVhbF90ZXh0KToKLSAgICAgICAgIyBTYW5pdHkgd2FzIHJlc3RvcmVkIGlu
IFdLMiwgc28gd2UgZG9uJ3QgbmVlZCB0aGlzIGhhY2sgdGhlcmUuCi0gICAgICAgIGlmIHNlbGYu
Z2V0X29wdGlvbignd2Via2l0X3Rlc3RfcnVubmVyJyk6Ci0gICAgICAgICAgICByZXR1cm4gQXBw
bGVQb3J0LmRvX3RleHRfcmVzdWx0c19kaWZmZXIoc2VsZiwgZXhwZWN0ZWRfdGV4dCwgYWN0dWFs
X3RleHQpCi0KLSAgICAgICAgIyBUaGlzIGlzIGEgaGFjayAod2hpY2ggZGF0ZXMgYmFjayB0byBP
UldUKS4KLSAgICAgICAgIyBXaW5kb3dzIGRvZXMgbm90IGhhdmUgYW4gRURJVElORyBERUxFR0FU
RSwgc28gd2Ugc3RyaXAgYW55IEVESVRJTkcgREVMRUdBVEUKLSAgICAgICAgIyBtZXNzYWdlcyB0
byBtYWtlIG1vcmUgb2YgdGhlIHRlc3RzIHBhc3MuCi0gICAgICAgICMgSXQncyBwb3NzaWJsZSBt
b3JlIG9mIHRoZSBwb3J0cyBtaWdodCB3YW50IHRoaXMgYW5kIHRoaXMgY291bGQgbW92ZSBkb3du
IGludG8gV2ViS2l0UG9ydC4KLSAgICAgICAgZGVsZWdhdGVfcmVnZXhwID0gcmUuY29tcGlsZSgi
XkVESVRJTkcgREVMRUdBVEU6IC4qP1xuIiwgcmUuTVVMVElMSU5FKQotICAgICAgICBleHBlY3Rl
ZF90ZXh0ID0gZGVsZWdhdGVfcmVnZXhwLnN1YigiIiwgZXhwZWN0ZWRfdGV4dCkKLSAgICAgICAg
YWN0dWFsX3RleHQgPSBkZWxlZ2F0ZV9yZWdleHAuc3ViKCIiLCBhY3R1YWxfdGV4dCkKLSAgICAg
ICAgcmV0dXJuIGV4cGVjdGVkX3RleHQgIT0gYWN0dWFsX3RleHQKKyAgICAgICAgIyBTYW5pdHkg
d2FzIHJlc3RvcmVkIGluIFdlYktpdFRlc3RSdW5uZXIsIHNvIHdlIGRvbid0IG5lZWQgdGhpcyBo
YWNrIHRoZXJlLgorICAgICAgICBpZiBub3Qgc2VsZi5nZXRfb3B0aW9uKCd3ZWJraXRfdGVzdF9y
dW5uZXInKToKKyAgICAgICAgICAgICMgV2luZG93cyBkb2VzIG5vdCBoYXZlIGFuIEVESVRJTkcg
REVMRUdBVEUsIHNvIHN0cmlwIHRob3NlIG1lc3NhZ2VzIHRvIG1ha2UgbW9yZSB0ZXN0cyBwYXNz
LgorICAgICAgICAgICAgIyBJdCdzIHBvc3NpYmxlIG90aGVyIHBvcnRzIG1pZ2h0IHdhbnQgdGhp
cywgYW5kIGlmIHNvLCB0aGlzIGNvdWxkIG1vdmUgZG93biBpbnRvIFdlYktpdFBvcnQuCisgICAg
ICAgICAgICBkZWxlZ2F0ZV9yZWdleHAgPSByZS5jb21waWxlKCJeRURJVElORyBERUxFR0FURTog
Lio/XG4iLCByZS5NVUxUSUxJTkUpCisgICAgICAgICAgICBleHBlY3RlZF90ZXh0ID0gZGVsZWdh
dGVfcmVnZXhwLnN1YigiIiwgZXhwZWN0ZWRfdGV4dCkKKyAgICAgICAgICAgIGFjdHVhbF90ZXh0
ID0gZGVsZWdhdGVfcmVnZXhwLnN1YigiIiwgYWN0dWFsX3RleHQpCisgICAgICAgIHJldHVybiBB
cHBsZVBvcnQuZG9fdGV4dF9yZXN1bHRzX2RpZmZlcihzZWxmLCBleHBlY3RlZF90ZXh0LCBhY3R1
YWxfdGV4dCkKIAogICAgIGRlZiBkZWZhdWx0X2Jhc2VsaW5lX3NlYXJjaF9wYXRoKHNlbGYsICoq
a3dhcmdzKToKICAgICAgICAgdmVyc2lvbl9uYW1lX21hcCA9IFZlcnNpb25OYW1lTWFwLm1hcChz
ZWxmLmhvc3QucGxhdGZvcm0pCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKaW5kZXggYjY0MGZmMjhh
ZTc1ZmQ2MTgwMDNiZjZmNzUyZTA1Y2IxMzA2MzY3Mi4uZDg5ZmVhZjliNmRhZTRjOTY4NTMxZjBh
YjYzODU4OTFiMTRmOThmOCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcApAQCAtODM0LDE3ICs4
MzQsMjIgQEAgc3RhdGljIGJvb2wgaGFzRG9jdW1lbnRFbGVtZW50KFdLQnVuZGxlRnJhbWVSZWYg
ZnJhbWUpCiAgICAgcmV0dXJuIEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgZG9jdW1lbnRFbGVt
ZW50VmFsdWUpOwogfQogCi1zdGF0aWMgdm9pZCBkdW1wRnJhbWVUZXh0KFdLQnVuZGxlRnJhbWVS
ZWYgZnJhbWUsIFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIpCitzdGF0aWMgdm9pZCBkdW1w
RnJhbWVUZXh0KFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIp
CiB7CiAgICAgLy8gSWYgdGhlIGZyYW1lIGRvZXNuJ3QgaGF2ZSBhIGRvY3VtZW50IGVsZW1lbnQs
IGl0cyBpbm5lciB0ZXh0IHdpbGwgYmUgYW4gZW1wdHkgc3RyaW5nLCBzbwotICAgIC8vIHdlJ2xs
IGVuZCB1cCBqdXN0IGFwcGVuZGluZyBhIHNpbmdsZSBuZXdsaW5lIGJlbG93LiBCdXQgRHVtcFJl
bmRlclRyZWUgZG9lc24ndCBhcHBlbmQKLSAgICAvLyBhbnl0aGluZyBpbiB0aGlzIGNhc2UsIHNv
IHdlIHNob3VsZG4ndCBlaXRoZXIuCisgICAgLy8gd2UnbGwgZW5kIHVwIGp1c3QgYXBwZW5kaW5n
IGEgc2luZ2xlIG5ld2xpbmUgYmVsb3cuIFNpbmNlIER1bXBSZW5kZXJUcmVlIGRpZG4ndCBhcHBl
bmQKKyAgICAvLyBhbnl0aGluZyBpbiB0aGlzIGNhc2UsIHdlIGRlY2lkZWQgdG8gcHJlc2VydmUg
dGhhdCBiZWhhdmlvci4KICAgICBpZiAoIWhhc0RvY3VtZW50RWxlbWVudChmcmFtZSkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB0ZXh0ID0gYWRvcHRX
SyhXS0J1bmRsZUZyYW1lQ29weUlubmVyVGV4dChmcmFtZSkpOwotICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKHRvV1RGU3RyaW5nKHRleHQpKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnXG4n
KTsKKyAgICAvLyBUbyBrZWVwIHRoaW5ncyB0aWR5LCBzdHJpcCBhbGwgdHJhaWxpbmcgc3BhY2Vz
OiB0aGV5IGFyZSBub3QgYSBtZWFuaW5nZnVsIHBhcnQgb2YgZHVtcEFzVGV4dCB0ZXN0IG91dHB1
dC4KKyAgICAvLyBCcmVha2luZyB0aGUgc3RyaW5nIHVwIGludG8gbGluZXMgbGV0cyB1cyBlZmZp
Y2llbnRseSBzdHJpcCBhbmQgaGFzIGEgc2lkZSBlZmZlY3Qgb2YgYWRkaW5nIGEgbmV3bGluZSBh
ZnRlciB0aGUgbGFzdCBsaW5lLgorICAgIGF1dG8gdGV4dCA9IHRvV1RGU3RyaW5nKGFkb3B0V0so
V0tCdW5kbGVGcmFtZUNvcHlJbm5lclRleHQoZnJhbWUpKSk7CisgICAgZm9yIChhdXRvIGxpbmUg
OiBTdHJpbmdWaWV3KHRleHQpLnNwbGl0QWxsb3dpbmdFbXB0eUVudHJpZXMoJ1xuJykpIHsKKyAg
ICAgICAgd2hpbGUgKGxpbmUuZW5kc1dpdGgoJyAnKSkKKyAgICAgICAgICAgIGxpbmUgPSBsaW5l
LnN1YnN0cmluZygwLCBsaW5lLmxlbmd0aCgpIC0gMSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KGxpbmUsICdcbicpOworICAgIH0KIH0KIAogc3RhdGljIHZvaWQgZHVtcERlc2NlbmRhbnRGcmFt
ZXNUZXh0KFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxk
ZXIpCkBAIC0xMDU2LDkgKzEwNjEsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6d2lsbFBl
cmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiwgV0tCdQogCiAgICAg
U3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwogICAgIGR1bXBGcmFtZURlc2NyaXB0aW9uU3Vp
dGFibGVGb3JUZXN0UmVzdWx0KGZyYW1lLCBzdHJpbmdCdWlsZGVyKTsKLSAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZExpdGVyYWwoIiAtIHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VSTDogIik7
Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQocGF0aFN1aXRhYmxlRm9yVGVzdFJlc3VsdCh1cmwp
KTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBcbiIpOworICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKCIgLSB3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkw6ICIsIHBhdGhT
dWl0YWJsZUZvclRlc3RSZXN1bHQodXJsKSwgJ1xuJyk7CiAgICAgaW5qZWN0ZWRCdW5kbGUub3V0
cHV0VGV4dChzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpOwogfQogCkBAIC0xMzQ1LDcgKzEzNDgs
NyBAQCBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb24gSW5qZWN0ZWRCdW5kbGVQYWdlOjpkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdLQgogCiAgICAgaWYgKGluamVjdGVkQnVuZGxlLnRl
c3RSdW5uZXIoKS0+c2hvdWxkRHVtcFBvbGljeUNhbGxiYWNrcygpKSB7CiAgICAgICAgIFN0cmlu
Z0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRl
cmFsKCIgLSBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uIFxuIik7CisgICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIC0gZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvblxuIik7CiAgICAgICAgIGR1bXBSZXF1ZXN0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RS
ZXN1bHQocmVxdWVzdCwgc3RyaW5nQnVpbGRlcik7CiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiIGlzIG1haW4gZnJhbWUgLSAiKTsKICAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQoV0tCdW5kbGVGcmFtZUlzTWFpbkZyYW1lKGZyYW1lKSA/ICJ5ZXMiIDogIm5vIik7CkBA
IC0xNDQ5LDYgKzE0NTIsMjMgQEAgdWludDY0X3QgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRFeGNl
ZWREYXRhYmFzZVF1b3RhKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS1NlY3UKICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8SW5qZWN0ZWRCdW5kbGVQYWdlKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50
SW5mbykpLT5kaWRFeGNlZWREYXRhYmFzZVF1b3RhKG9yaWdpbiwgZGF0YWJhc2VOYW1lLCBkYXRh
YmFzZURpc3BsYXlOYW1lLCBjdXJyZW50UXVvdGFCeXRlcywgY3VycmVudE9yaWdpblVzYWdlQnl0
ZXMsIGN1cnJlbnREYXRhYmFzZVVzYWdlQnl0ZXMsIGV4cGVjdGVkVXNhZ2VCeXRlcyk7CiB9CiAK
K3N0YXRpYyBXVEY6OlN0cmluZyBzdHJpcFRyYWlsaW5nU3BhY2VzQWRkTmV3bGluZShjb25zdCBX
VEY6OlN0cmluZyYgc3RyaW5nKQoreworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBm
b3IgKGF1dG8gbGluZSA6IFN0cmluZ1ZpZXcoc3RyaW5nKS5zcGxpdEFsbG93aW5nRW1wdHlFbnRy
aWVzKCdcbicpKSB7CisgICAgICAgIHdoaWxlIChsaW5lLmVuZHNXaXRoKCcgJykpCisgICAgICAg
ICAgICBsaW5lID0gbGluZS5zdWJzdHJpbmcoMCwgbGluZS5sZW5ndGgoKSAtIDEpOworICAgICAg
ICBidWlsZGVyLmFwcGVuZChsaW5lLCAnXG4nKTsKKyAgICB9CisgICAgcmV0dXJuIGJ1aWxkZXIu
dG9TdHJpbmcoKTsKK30KKworc3RhdGljIFdURjo6U3RyaW5nIGFkZExlYWRpbmdTcGFjZVN0cmlw
VHJhaWxpbmdTcGFjZXNBZGROZXdsaW5lKGNvbnN0IFdURjo6U3RyaW5nJiBzdHJpbmcpCit7Cisg
ICAgYXV0byByZXN1bHQgPSBzdHJpcFRyYWlsaW5nU3BhY2VzQWRkTmV3bGluZShzdHJpbmcpOwor
ICAgIHJldHVybiAocmVzdWx0LmlzRW1wdHkoKSB8fCByZXN1bHQuc3RhcnRzV2l0aCgnXG4nKSkg
PyByZXN1bHQgOiBtYWtlU3RyaW5nKCcgJywgcmVzdWx0KTsKK30KKwogc3RhdGljIFdURjo6U3Ry
aW5nIGxhc3RGaWxlVVJMUGF0aENvbXBvbmVudChjb25zdCBXVEY6OlN0cmluZyYgcGF0aCkKIHsK
ICAgICBzaXplX3QgcG9zID0gcGF0aC5maW5kKCJmaWxlOi8vIik7CkBAIC0xNDg1LDE1ICsxNTA1
LDExIEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjp3aWxsQWRkTWVzc2FnZVRvQ29uc29sZShX
S1N0cmluZ1JlZiBtZXNzYWdlKQogICAgICAgICAvLyBGSVhNRTogVGhlIGNvZGUgYmVsb3cgZG9l
cyBub3QgaGFuZGxlIGFkZGl0aW9uYWwgdGV4dCBhZnRlciB1cmwgbm9yIG11bHRpcGxlIHVybHMu
IFRoaXMgbWF0Y2hlcyBEdW1wUmVuZGVyVHJlZSBpbXBsZW1lbnRhdGlvbi4KICAgICAgICAgbWVz
c2FnZVN0cmluZyA9IG1lc3NhZ2VTdHJpbmcuc3Vic3RyaW5nKDAsIGZpbGVQcm90b2NvbFN0YXJ0
KSArIGxhc3RGaWxlVVJMUGF0aENvbXBvbmVudChtZXNzYWdlU3RyaW5nLnN1YnN0cmluZyhmaWxl
UHJvdG9jb2xTdGFydCkpOwogCi0gICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwotICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiQ09OU09MRSBNRVNTQUdFOiAiKTsKLSAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZChtZXNzYWdlU3RyaW5nKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCgnXG4nKTsKLQorICAgIG1lc3NhZ2VTdHJpbmcgPSBtYWtlU3RyaW5nKCJDT05TT0xFIE1F
U1NBR0U6IiwgYWRkTGVhZGluZ1NwYWNlU3RyaXBUcmFpbGluZ1NwYWNlc0FkZE5ld2xpbmUobWVz
c2FnZVN0cmluZykpOwogICAgIGlmIChpbmplY3RlZEJ1bmRsZS5kdW1wSlNDb25zb2xlTG9nSW5T
dGRFcnIoKSkKLSAgICAgICAgaW5qZWN0ZWRCdW5kbGUuZHVtcFRvU3RkRXJyKHN0cmluZ0J1aWxk
ZXIudG9TdHJpbmcoKSk7CisgICAgICAgIGluamVjdGVkQnVuZGxlLmR1bXBUb1N0ZEVycihtZXNz
YWdlU3RyaW5nKTsKICAgICBlbHNlCi0gICAgICAgIGluamVjdGVkQnVuZGxlLm91dHB1dFRleHQo
c3RyaW5nQnVpbGRlci50b1N0cmluZygpKTsKKyAgICAgICAgaW5qZWN0ZWRCdW5kbGUub3V0cHV0
VGV4dChtZXNzYWdlU3RyaW5nKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OndpbGxT
ZXRTdGF0dXNiYXJUZXh0KFdLU3RyaW5nUmVmIHN0YXR1c2JhclRleHQpCkBAIC0xNTE4LDExICsx
NTM0LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OndpbGxSdW5KYXZhU2NyaXB0QWxlcnQo
V0tTdHJpbmdSZWYgbWVzc2FnZSwgV0tCdW5kbGVGcmEKICAgICBpZiAoIWluamVjdGVkQnVuZGxl
LmlzVGVzdFJ1bm5pbmcoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5nQnVpbGRlciBz
dHJpbmdCdWlsZGVyOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiQUxFUlQ6ICIp
OwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHRvV1RGU3RyaW5nKG1lc3NhZ2UpKTsKLSAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICBpbmplY3RlZEJ1bmRsZS5vdXRwdXRUZXh0
KHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgaW5qZWN0ZWRCdW5kbGUub3V0cHV0VGV4
dChtYWtlU3RyaW5nKCJBTEVSVDoiLCBhZGRMZWFkaW5nU3BhY2VTdHJpcFRyYWlsaW5nU3BhY2Vz
QWRkTmV3bGluZSh0b1dURlN0cmluZyhtZXNzYWdlKSkpKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1
bmRsZVBhZ2U6OndpbGxSdW5KYXZhU2NyaXB0Q29uZmlybShXS1N0cmluZ1JlZiBtZXNzYWdlLCBX
S0J1bmRsZUZyYW1lUmVmKQpAQCAtMTUzMSwyMiArMTU0MywxMiBAQCB2b2lkIEluamVjdGVkQnVu
ZGxlUGFnZTo6d2lsbFJ1bkphdmFTY3JpcHRDb25maXJtKFdLU3RyaW5nUmVmIG1lc3NhZ2UsIFdL
QnVuZGxlRgogICAgIGlmICghaW5qZWN0ZWRCdW5kbGUuaXNUZXN0UnVubmluZygpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAgc3RyaW5n
QnVpbGRlci5hcHBlbmRMaXRlcmFsKCJDT05GSVJNOiAiKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCh0b1dURlN0cmluZyhtZXNzYWdlKSk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJ1xu
Jyk7Ci0gICAgaW5qZWN0ZWRCdW5kbGUub3V0cHV0VGV4dChzdHJpbmdCdWlsZGVyLnRvU3RyaW5n
KCkpOworICAgIGluamVjdGVkQnVuZGxlLm91dHB1dFRleHQobWFrZVN0cmluZygiQ09ORklSTToi
LCBhZGRMZWFkaW5nU3BhY2VTdHJpcFRyYWlsaW5nU3BhY2VzQWRkTmV3bGluZSh0b1dURlN0cmlu
ZyhtZXNzYWdlKSkpKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OndpbGxSdW5KYXZh
U2NyaXB0UHJvbXB0KFdLU3RyaW5nUmVmIG1lc3NhZ2UsIFdLU3RyaW5nUmVmIGRlZmF1bHRWYWx1
ZSwgV0tCdW5kbGVGcmFtZVJlZikKIHsKLSAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7
Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJQUk9NUFQ6ICIpOwotICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKHRvV1RGU3RyaW5nKG1lc3NhZ2UpKTsKLSAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZExpdGVyYWwoIiwgZGVmYXVsdCB0ZXh0OiAiKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZCh0b1dURlN0cmluZyhkZWZhdWx0VmFsdWUpKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgnXG4nKTsKLSAgICBJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkub3V0cHV0VGV4dChzdHJp
bmdCdWlsZGVyLnRvU3RyaW5nKCkpOworICAgIEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5v
dXRwdXRUZXh0KG1ha2VTdHJpbmcoIlBST01QVDogIiwgdG9XVEZTdHJpbmcobWVzc2FnZSksICIs
IGRlZmF1bHQgdGV4dDoiLCBhZGRMZWFkaW5nU3BhY2VTdHJpcFRyYWlsaW5nU3BhY2VzQWRkTmV3
bGluZSh0b1dURlN0cmluZyhkZWZhdWx0VmFsdWUpKSkpOwogfQogCiB2b2lkIEluamVjdGVkQnVu
ZGxlUGFnZTo6ZGlkUmVhY2hBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoV0tTZWN1cml0eU9y
aWdpblJlZiBvcmlnaW4sIGludDY0X3QgdG90YWxCeXRlc05lZWRlZCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409794</attachid>
            <date>2020-09-26 14:58:34 -0700</date>
            <delta_ts>2020-09-26 16:01:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216944-20200926145833.patch</filename>
            <type>text/plain</type>
            <size>26692</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3NjM3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMWM5M2RlYzk5MWNiODlhYjdkNWY5ZjgyOGU1ZmZkY2Nk
OTAzNTViZS4uNjc5ZGE2ZjVjNjA3MTA3OTg2YjI3OTA3ODhmYzI5OWI4MGI4NDUyYiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4
IEBACisyMDIwLTA5LTI1ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAg
ICBDaGFuZ2UgZHVtcEFzVGV4dCB0byBzdHJpcCB0cmFpbGluZyBzcGFjZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjk0NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IEFsYW4gQnVqdGFzLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1
bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAoZHVtcEZyYW1lc0FzVGV4dCk6IFN0cmlwIHRyYWls
aW5nIHNwYWNlcy4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRnJhbWVMb2FkRGVsZWdh
dGUubW06CisgICAgICAgICgtW0ZyYW1lTG9hZERlbGVnYXRlIHdlYlZpZXc6d2lsbFBlcmZvcm1D
bGllbnRSZWRpcmVjdFRvVVJMOmRlbGF5OmZpcmVEYXRlOmZvckZyYW1lOl0pOgorICAgICAgICBE
b24ndCBhZGQgdHJhaWxpbmcgc3BhY2UuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1VJ
RGVsZWdhdGUubW06CisgICAgICAgICgtW1VJRGVsZWdhdGUgd2ViVmlldzphZGRNZXNzYWdlVG9D
b25zb2xlOndpdGhTb3VyY2U6XSk6IERpdHRvLgorICAgICAgICAoYWRkTGVhZGluZ1NwYWNlU3Ry
aXBUcmFpbGluZ1NwYWNlcyk6IEFkZGVkLgorICAgICAgICAoc3RyaXBUcmFpbGluZ1NwYWNlcyk6
IEFkZGVkLgorICAgICAgICAoLVtVSURlbGVnYXRlIHdlYlZpZXc6cnVuSmF2YVNjcmlwdEFsZXJ0
UGFuZWxXaXRoTWVzc2FnZTppbml0aWF0ZWRCeUZyYW1lOl0pOiBEb24ndCBhZGQgdHJhaWxpbmcg
c3BhY2UuCisgICAgICAgICgtW1VJRGVsZWdhdGUgd2ViVmlldzpydW5KYXZhU2NyaXB0Q29uZmly
bVBhbmVsV2l0aE1lc3NhZ2U6aW5pdGlhdGVkQnlGcmFtZTpdKTogRGl0dG8uCisgICAgICAgICgt
W1VJRGVsZWdhdGUgd2ViVmlldzpydW5KYXZhU2NyaXB0VGV4dElucHV0UGFuZWxXaXRoUHJvbXB0
OmRlZmF1bHRUZXh0OmluaXRpYXRlZEJ5RnJhbWU6XSk6IERpdHRvLgorICAgICAgICAoLVtVSURl
bGVnYXRlIHdlYlZpZXc6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsV2l0aE1lc3NhZ2U6aW5p
dGlhdGVkQnlGcmFtZTpdKTogRGl0dG8uCisgICAgICAgICgtW1VJRGVsZWdhdGUgd2ViVmlldzpz
ZXRTdGF0dXNUZXh0Ol0pOiBEaXR0by4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9E
dW1wUmVuZGVyVHJlZS5jcHA6CisgICAgICAgIChkdW1wRnJhbWVzQXNUZXh0KTogU3RyaXAgdHJh
aWxpbmcgc3BhY2VzLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxl
Z2F0ZS5jcHA6CisgICAgICAgIChGcmFtZUxvYWREZWxlZ2F0ZTo6d2lsbFBlcmZvcm1DbGllbnRS
ZWRpcmVjdFRvVVJMKTogRG9uJ3QgYWRkIHRyYWlsaW5nIHNwYWNlLgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL3dpbi9VSURlbGVnYXRlLmNwcDoKKyAgICAgICAgKHRvTWVzc2FnZSk6IENoYW5n
ZWQgdG8gcmV0dXJuIHN0ZDo6d3N0cmluZy4KKyAgICAgICAgKHN0cmlwVHJhaWxpbmdTcGFjZXMp
OiBBZGRlZC4KKyAgICAgICAgKGFkZExlYWRpbmdTcGFjZVN0cmlwVHJhaWxpbmdTcGFjZXMpOiBB
ZGRlZC4KKyAgICAgICAgKFVJRGVsZWdhdGU6OnJ1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1l
c3NhZ2UpOiBEb24ndCBhZGQgdHJhaWxpbmcgc3BhY2UuCisgICAgICAgIChVSURlbGVnYXRlOjpy
dW5KYXZhU2NyaXB0Q29uZmlybVBhbmVsV2l0aE1lc3NhZ2UpOiBEaXR0by4KKyAgICAgICAgKFVJ
RGVsZWdhdGU6OnJ1bkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbFdpdGhQcm9tcHQpOiBEaXR0by4K
KyAgICAgICAgKFVJRGVsZWdhdGU6OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNz
YWdlKTogRGl0dG8uCisgICAgICAgIChVSURlbGVnYXRlOjp3ZWJWaWV3QWRkTWVzc2FnZVRvQ29u
c29sZSk6IERpdHRvLgorICAgICAgICAoVUlEZWxlZ2F0ZTo6c2V0U3RhdHVzVGV4dCk6IERpdHRv
LgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHk6CisgICAgICAgIChQ
b3J0LmRvX3RleHRfcmVzdWx0c19kaWZmZXIpOiBTdHJpcCB0cmFpbGluZyBzcGFjZXMgZnJvbSBl
eHBlY3RlZCB0ZXh0LgorICAgICAgICBQbGFuIGlzIHRvIHJlbW92ZSB0aGlzIGFmdGVyIHN0cmlw
cGluZyB0aGUgYWN0dWFsIGV4cGVjdGVkLnR4dCBmaWxlcy4KKworICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvcG9ydC93aW4ucHk6CisgICAgICAgIChXaW5Qb3J0LmRvX3RleHRfcmVzdWx0c19k
aWZmZXIpOiBDYWxsIHRocm91Z2ggdG8gYmFzZS4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdUUjo6
ZHVtcEZyYW1lVGV4dCk6IFN0cmlwIHRyYWlsaW5nIHNwYWNlcy4KKyAgICAgICAgKFdUUjo6SW5q
ZWN0ZWRCdW5kbGVQYWdlOjp3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0Rm9yRnJhbWUpOiBEb24n
dCBhZGQgdHJhaWxpbmcgc3BhY2UuCisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6IERpdHRvLgorICAgICAgICAoV1RSOjpz
dHJpcFRyYWlsaW5nU3BhY2VzKTogQWRkZWQuCisgICAgICAgIChXVFI6OmFkZExlYWRpbmdTcGFj
ZVN0cmlwVHJhaWxpbmdTcGFjZXMpOiBBZGRlZC4KKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5k
bGVQYWdlOjp3aWxsQWRkTWVzc2FnZVRvQ29uc29sZSk6IERvbid0IGFkZCB0cmFpbGluZyBzcGFj
ZS4KKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjp3aWxsUnVuSmF2YVNjcmlwdEFs
ZXJ0KTogRGl0dG8uCisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6d2lsbFJ1bkph
dmFTY3JpcHRDb25maXJtKTogRGl0dG8uCisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFn
ZTo6d2lsbFJ1bkphdmFTY3JpcHRQcm9tcHQpOiBEaXR0by4KKwogMjAyMC0wOS0yNSAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIHJldmVydGluZyByMjY3NjA4LgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0R1bXBSZW5kZXJUcmVlLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5k
ZXJUcmVlLm1tCmluZGV4IGI3ZjE4MTI3N2M2OTk1MDA5YTE3MjE4YjRlNzQzNTcyNzA4YjMzNmMu
LmQzZDEyYTkwYWZkMjJiOGY5MTNhODQyMzJhODEwMDU1OGZlMjExMDMgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KQEAgLTE1MTUsNiArMTUxNSwxMCBAQCBz
dGF0aWMgTlNTdHJpbmcgKmR1bXBGcmFtZXNBc1RleHQoV2ViRnJhbWUgKmZyYW1lKQogICAgICAg
ICB9CiAgICAgfQogCisgICAgLy8gVG8ga2VlcCB0aGluZ3MgdGlkeSwgc3RyaXAgYWxsIHRyYWls
aW5nIHNwYWNlczogdGhleSBhcmUgbm90IGEgbWVhbmluZ2Z1bCBwYXJ0IG9mIGR1bXBBc1RleHQg
dGVzdCBvdXRwdXQuCisgICAgW3Jlc3VsdCByZXBsYWNlT2NjdXJyZW5jZXNPZlN0cmluZzpAIiAr
XG4iIHdpdGhTdHJpbmc6QCJcbiIgb3B0aW9uczpOU1JlZ3VsYXJFeHByZXNzaW9uU2VhcmNoIHJh
bmdlOk5TTWFrZVJhbmdlKDAsIHJlc3VsdC5sZW5ndGgpXTsKKyAgICBbcmVzdWx0IHJlcGxhY2VP
Y2N1cnJlbmNlc09mU3RyaW5nOkAiICskIiB3aXRoU3RyaW5nOkAiIiBvcHRpb25zOk5TUmVndWxh
ckV4cHJlc3Npb25TZWFyY2ggcmFuZ2U6TlNNYWtlUmFuZ2UoMCwgcmVzdWx0Lmxlbmd0aCldOwor
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbQppbmRleCBjYTNlNmQwYWQ4M2JmZTllZDUxYzNk
MWU0MTQ4ZTU5OWFmZmU2YTkwLi44Mjc1MWJjNWI3NDE3MTU1Y2U1YjU0NGFjODcwYTZjOWRkM2Ri
MjEzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29u
dHJvbGxlci5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29u
dHJvbGxlci5tbQpAQCAtMTI3MCw3ICsxMjcwLDggQEAgLSAodm9pZCloYW5kbGVFdmVudDooRE9N
RXZlbnQgKilldmVudAogICAgIH0KICAgICAKICAgICBpZiAoW2V2ZW50IGlzS2luZE9mQ2xhc3M6
W0RPTUtleWJvYXJkRXZlbnQgY2xhc3NdXSkgewotICAgICAgICBwcmludGYoIiAga2V5SWRlbnRp
ZmllcjogJXNcbiIsIFtbKERPTUtleWJvYXJkRXZlbnQqKWV2ZW50IGtleUlkZW50aWZpZXJdIFVU
RjhTdHJpbmddKTsKKyAgICAgICAgYXV0byBrZXlJZGVudGlmaWVyID0gWyhET01LZXlib2FyZEV2
ZW50KilldmVudCBrZXlJZGVudGlmaWVyXTsKKyAgICAgICAgcHJpbnRmKCIgIGtleUlkZW50aWZp
ZXI6JXMlc1xuIiwga2V5SWRlbnRpZmllci5sZW5ndGggPyAiICIgOiAiIiwgW2tleUlkZW50aWZp
ZXIgVVRGOFN0cmluZ10pOwogICAgICAgICBwcmludGYoIiAga2V5TG9jYXRpb246ICAgJWRcbiIs
IFsoRE9NS2V5Ym9hcmRFdmVudCopZXZlbnQgbG9jYXRpb25dKTsKICAgICAgICAgcHJpbnRmKCIg
IG1vZGlmaWVyIGtleXM6IGM6JWQgczolZCBhOiVkIG06JWRcbiIsIAogICAgICAgICAgICAgICAg
WyhET01LZXlib2FyZEV2ZW50KilldmVudCBjdHJsS2V5XSA/IDEgOiAwLCAKZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9GcmFtZUxvYWREZWxlZ2F0ZS5tbSBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9GcmFtZUxvYWREZWxlZ2F0ZS5tbQppbmRleCBiMzhmNGQzN2YwNjcx
NTM1MWM4OWE4NmZlODIwOGI3NmYyMTVhYTdlLi4zNjcxNDkzOWZkYTBhNTY3NDljNzk5ODg2YTFl
YTQzODkyMTg5YTRhIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRnJhbWVM
b2FkRGVsZWdhdGUubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0ZyYW1lTG9hZERl
bGVnYXRlLm1tCkBAIC00MTIsNyArNDEyLDcgQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICop
c2VuZGVyIGRpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZUZvckZyYW1lOihXZWJGcmFtZQogLSAo
dm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RU
b1VSTDooTlNVUkwgKilVUkwgZGVsYXk6KE5TVGltZUludGVydmFsKXNlY29uZHMgZmlyZURhdGU6
KE5TRGF0ZSAqKWRhdGUgZm9yRnJhbWU6KFdlYkZyYW1lICopZnJhbWUKIHsKICAgICBpZiAoIWRv
bmUgJiYgZ1Rlc3RSdW5uZXItPmR1bXBGcmFtZUxvYWRDYWxsYmFja3MoKSkgewotICAgICAgICBO
U1N0cmluZyAqc3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCAtIHdpbGxQ
ZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VSTDogJUAgIiwgW2ZyYW1lIF9kcnRfZGVzY3JpcHRpb25T
dWl0YWJsZUZvclRlc3RSZXN1bHRdLCBbVVJMIF9kcnRfZGVzY3JpcHRpb25TdWl0YWJsZUZvclRl
c3RSZXN1bHRdXTsKKyAgICAgICAgTlNTdHJpbmcgKnN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdX
aXRoRm9ybWF0OkAiJUAgLSB3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkw6ICVAIiwgW2Zy
YW1lIF9kcnRfZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHRdLCBbVVJMIF9kcnRfZGVz
Y3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHRdXTsKICAgICAgICAgcHJpbnRmICgiJXNcbiIs
IFtzdHJpbmcgVVRGOFN0cmluZ10pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlE
ZWxlZ2F0ZS5tbQppbmRleCBmNjk5NTU1MWUwY2RhMTBkNGIyYjc5ZjkyYmE2ZGEzNGJlMzU3Yjg4
Li5hZDNjYTQyMWM1OGE4MjlhZjc2OTkxZTg4ZGRjZmM4ODhlNmM1NDdlIDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbQorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbQpAQCAtNzYsNiArNzYsMTggQEAgLSAoTlNSZWN0KXdl
YlZpZXdGcmFtZTooV2ViVmlldyAqKXNlbmRlcgogICAgIHJldHVybiBOU01ha2VSZWN0KHdpbmRv
d09yaWdpbi54LCB3aW5kb3dPcmlnaW4ueSwgc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQpOwogfQog
CitzdGF0aWMgTlNTdHJpbmcgKnN0cmlwVHJhaWxpbmdTcGFjZXMoTlNTdHJpbmcgKnN0cmluZykK
K3sKKyAgICBhdXRvIHJlc3VsdCA9IFtzdHJpbmcgc3RyaW5nQnlSZXBsYWNpbmdPY2N1cnJlbmNl
c09mU3RyaW5nOkAiICtcbiIgd2l0aFN0cmluZzpAIlxuIiBvcHRpb25zOk5TUmVndWxhckV4cHJl
c3Npb25TZWFyY2ggcmFuZ2U6TlNNYWtlUmFuZ2UoMCwgc3RyaW5nLmxlbmd0aCldOworICAgIHJl
dHVybiBbcmVzdWx0IHN0cmluZ0J5UmVwbGFjaW5nT2NjdXJyZW5jZXNPZlN0cmluZzpAIiArJCIg
d2l0aFN0cmluZzpAIiIgb3B0aW9uczpOU1JlZ3VsYXJFeHByZXNzaW9uU2VhcmNoIHJhbmdlOk5T
TWFrZVJhbmdlKDAsIHJlc3VsdC5sZW5ndGgpXTsKK30KKworc3RhdGljIE5TU3RyaW5nICphZGRM
ZWFkaW5nU3BhY2VTdHJpcFRyYWlsaW5nU3BhY2VzKE5TU3RyaW5nICpzdHJpbmcpCit7CisgICAg
YXV0byByZXN1bHQgPSBzdHJpcFRyYWlsaW5nU3BhY2VzKHN0cmluZyk7CisgICAgcmV0dXJuIChy
ZXN1bHQubGVuZ3RoICYmICFbcmVzdWx0IGhhc1ByZWZpeDpAIlxuIl0pID8gW0AiICIgc3RyaW5n
QnlBcHBlbmRpbmdTdHJpbmc6cmVzdWx0XSA6IHJlc3VsdDsKK30KKwogLSAodm9pZCl3ZWJWaWV3
OihXZWJWaWV3ICopc2VuZGVyIGFkZE1lc3NhZ2VUb0NvbnNvbGU6KE5TRGljdGlvbmFyeSAqKWRp
Y3Rpb25hcnkgd2l0aFNvdXJjZTooTlNTdHJpbmcgKilzb3VyY2UKIHsKICAgICBpZiAoZG9uZSkK
QEAgLTg3LDkgKzk5LDcgQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGFkZE1l
c3NhZ2VUb0NvbnNvbGU6KE5TRGljdGlvbmFyeSAqKWRpY3Rpb25hcnkKICAgICBpZiAocmFuZ2Uu
bG9jYXRpb24gIT0gTlNOb3RGb3VuZCkKICAgICAgICAgbWVzc2FnZSA9IFtbbWVzc2FnZSBzdWJz
dHJpbmdUb0luZGV4OnJhbmdlLmxvY2F0aW9uXSBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzpbW21l
c3NhZ2Ugc3Vic3RyaW5nRnJvbUluZGV4Ok5TTWF4UmFuZ2UocmFuZ2UpXSBsYXN0UGF0aENvbXBv
bmVudF1dOwogCi0gICAgYXV0byBvdXQgPSBnVGVzdFJ1bm5lci0+ZHVtcEpTQ29uc29sZUxvZ0lu
U3RkRXJyKCkgPyBzdGRlcnIgOiBzdGRvdXQ7Ci0gICAgZnByaW50ZihvdXQsICJDT05TT0xFIE1F
U1NBR0U6ICIpOwotICAgIGZwcmludGYob3V0LCAiJXNcbiIsIFttZXNzYWdlIFVURjhTdHJpbmdd
KTsKKyAgICBmcHJpbnRmKGdUZXN0UnVubmVyLT5kdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIoKSA/
IHN0ZGVyciA6IHN0ZG91dCwgIkNPTlNPTEUgTUVTU0FHRTolc1xuIiwgYWRkTGVhZGluZ1NwYWNl
U3RyaXBUcmFpbGluZ1NwYWNlcyhtZXNzYWdlKS5VVEY4U3RyaW5nID86ICIgKG51bGwpIik7CiB9
CiAKIC0gKHZvaWQpbW9kYWxXaW5kb3dXaWxsQ2xvc2U6KE5TTm90aWZpY2F0aW9uICopbm90aWZp
Y2F0aW9uCkBAIC0xMTMsNyArMTIzLDcgQEAgLSAodm9pZCl3ZWJWaWV3UnVuTW9kYWw6KFdlYlZp
ZXcgKilzZW5kZXIKIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBydW5KYXZhU2Ny
aXB0QWxlcnRQYW5lbFdpdGhNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2UgaW5pdGlhdGVkQnlG
cmFtZTooV2ViRnJhbWUgKilmcmFtZQogewogICAgIGlmICghZG9uZSkgewotICAgICAgICBwcmlu
dGYoIkFMRVJUOiAlc1xuIiwgW21lc3NhZ2UgVVRGOFN0cmluZ10pOworICAgICAgICBwcmludGYo
IkFMRVJUOiVzXG4iLCBhZGRMZWFkaW5nU3BhY2VTdHJpcFRyYWlsaW5nU3BhY2VzKG1lc3NhZ2Up
LlVURjhTdHJpbmcgPzogIiAobnVsbCkiKTsKICAgICAgICAgZmZsdXNoKHN0ZG91dCk7CiAgICAg
fQogfQpAQCAtMTIxLDIyICsxMzEsMjEgQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2Vu
ZGVyIHJ1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1lc3NhZ2U6KE5TU3RyaW5nICoKIC0gKEJP
T0wpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBydW5KYXZhU2NyaXB0Q29uZmlybVBhbmVsV2l0
aE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZSBpbml0aWF0ZWRCeUZyYW1lOihXZWJGcmFtZSAq
KWZyYW1lCiB7CiAgICAgaWYgKCFkb25lKQotICAgICAgICBwcmludGYoIkNPTkZJUk06ICVzXG4i
LCBbbWVzc2FnZSBVVEY4U3RyaW5nXSk7CisgICAgICAgIHByaW50ZigiQ09ORklSTTolc1xuIiwg
YWRkTGVhZGluZ1NwYWNlU3RyaXBUcmFpbGluZ1NwYWNlcyhtZXNzYWdlKS5VVEY4U3RyaW5nID86
ICIgKG51bGwpIik7CiAgICAgcmV0dXJuIFlFUzsKIH0KIAogLSAoTlNTdHJpbmcgKil3ZWJWaWV3
OihXZWJWaWV3ICopc2VuZGVyIHJ1bkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbFdpdGhQcm9tcHQ6
KE5TU3RyaW5nICopcHJvbXB0IGRlZmF1bHRUZXh0OihOU1N0cmluZyAqKWRlZmF1bHRUZXh0IGlu
aXRpYXRlZEJ5RnJhbWU6KFdlYkZyYW1lICopZnJhbWUKIHsKICAgICBpZiAoIWRvbmUpCi0gICAg
ICAgIHByaW50ZigiUFJPTVBUOiAlcywgZGVmYXVsdCB0ZXh0OiAlc1xuIiwgW3Byb21wdCBVVEY4
U3RyaW5nXSwgW2RlZmF1bHRUZXh0IFVURjhTdHJpbmddKTsKKyAgICAgICAgcHJpbnRmKCJQUk9N
UFQ6ICVzLCBkZWZhdWx0IHRleHQ6JXNcbiIsIHByb21wdC5VVEY4U3RyaW5nLCBhZGRMZWFkaW5n
U3BhY2VTdHJpcFRyYWlsaW5nU3BhY2VzKGRlZmF1bHRUZXh0KS5VVEY4U3RyaW5nID86ICIgKG51
bGwpIik7CiAgICAgcmV0dXJuIGRlZmF1bHRUZXh0OwogfQogCiAtIChCT09MKXdlYlZpZXc6KFdl
YlZpZXcgKiljIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlOihOU1N0cmlu
ZyAqKW1lc3NhZ2UgaW5pdGlhdGVkQnlGcmFtZTooV2ViRnJhbWUgKilmcmFtZQogewogICAgIGlm
ICghZG9uZSkKLSAgICAgICAgcHJpbnRmKCJDT05GSVJNIE5BVklHQVRJT046ICVzXG4iLCBbbWVz
c2FnZSBVVEY4U3RyaW5nXSk7Ci0gICAgCisgICAgICAgIHByaW50ZigiQ09ORklSTSBOQVZJR0FU
SU9OOiVzXG4iLCBhZGRMZWFkaW5nU3BhY2VTdHJpcFRyYWlsaW5nU3BhY2VzKG1lc3NhZ2UpLlVU
RjhTdHJpbmcgPzogIiAobnVsbCkiKTsKICAgICByZXR1cm4gIWdUZXN0UnVubmVyLT5zaG91bGRT
dGF5T25QYWdlQWZ0ZXJIYW5kbGluZ0JlZm9yZVVubG9hZCgpOwogfQogCkBAIC0yMzUsNyArMjQ0
LDcgQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGV4Y2VlZGVkQXBwbGljYXRp
b25DYWNoZU9yaWdpblF1b3RhRm9yU2VjdXJpdHkKIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAq
KXNlbmRlciBzZXRTdGF0dXNUZXh0OihOU1N0cmluZyAqKXRleHQKIHsKICAgICBpZiAoIWRvbmUg
JiYgZ1Rlc3RSdW5uZXItPmR1bXBTdGF0dXNDYWxsYmFja3MoKSkKLSAgICAgICAgcHJpbnRmKCJV
SSBERUxFR0FURSBTVEFUVVMgQ0FMTEJBQ0s6IHNldFN0YXR1c1RleHQ6JXNcbiIsIFt0ZXh0IFVU
RjhTdHJpbmddKTsKKyAgICAgICAgcHJpbnRmKCJVSSBERUxFR0FURSBTVEFUVVMgQ0FMTEJBQ0s6
IHNldFN0YXR1c1RleHQ6JXNcbiIsIHN0cmlwVHJhaWxpbmdTcGFjZXModGV4dCkuVVRGOFN0cmlu
Zyk7CiB9CiAKIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5
Rm9yR2VvbG9jYXRpb25SZXF1ZXN0RnJvbU9yaWdpbjooV2ViU2VjdXJpdHlPcmlnaW4gKilvcmln
aW4gZnJhbWU6KFdlYkZyYW1lICopZnJhbWUgbGlzdGVuZXI6KGlkPFdlYkFsbG93RGVueVBvbGlj
eUxpc3RlbmVyPilsaXN0ZW5lcgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L0R1bXBSZW5kZXJUcmVlLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVy
VHJlZS5jcHAKaW5kZXggNmFlZmMyNWU1NTgzNzUwZTdlNWUzZGNlYmZiNTNmNzFmMTcwNTgyYS4u
ZGQ4MGU0Zjg1ODkxZTM0MzU2NzM2NjdlMTNlMTg2MmIxMWI5ZmExYiAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCkBAIC00ODgsNiArNDg4LDEzIEBAIHN0
YXRpYyB3c3RyaW5nIGR1bXBGcmFtZXNBc1RleHQoSVdlYkZyYW1lKiBmcmFtZSkKICAgICAgICAg
fQogICAgIH0KIAorICAgIC8vIFRvIGtlZXAgdGhpbmdzIHRpZHksIHN0cmlwIGFsbCB0cmFpbGlu
ZyBzcGFjZXM6IHRoZXkgYXJlIG5vdCBhIG1lYW5pbmdmdWwgcGFydCBvZiBkdW1wQXNUZXh0IHRl
c3Qgb3V0cHV0LgorICAgIHN0ZDo6d3N0cmluZzo6c2l6ZV90eXBlIHNwYWNlUG9zaXRpb247Cisg
ICAgd2hpbGUgKChzcGFjZVBvc2l0aW9uID0gcmVzdWx0LmZpbmQoTCIgXG4iKSkgIT0gc3RkOjp3
c3RyaW5nOjpucG9zKQorICAgICAgICByZXN1bHQuZXJhc2Uoc3BhY2VQb3NpdGlvbiwgMSk7Cisg
ICAgd2hpbGUgKCFyZXN1bHQuZW1wdHkoKSAmJiByZXN1bHQuYmFjaygpID09ICcgJykKKyAgICAg
ICAgcmVzdWx0LnBvcF9iYWNrKCk7CisKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuY3BwIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmNwcAppbmRleCA3NTViZWQx
NmY2MGVkYzAxMTE1NTIxZTE1OGMwZGJmMDU1ODhiZjg0Li5mZDc3YWQxYzM5MjYzOGRhOTQxNDNl
ZTdkNWE4MjFlNjk0MTAyMzEzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4v
RnJhbWVMb2FkRGVsZWdhdGUuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFt
ZUxvYWREZWxlZ2F0ZS5jcHAKQEAgLTI5Miw3ICsyOTIsNyBAQCBIUkVTVUxUIEZyYW1lTG9hZERl
bGVnYXRlOjpkaWRGYWlsTG9hZFdpdGhFcnJvcihfSW5fb3B0XyBJV2ViVmlldyosIF9Jbl9vcHRf
IElXZQogSFJFU1VMVCBGcmFtZUxvYWREZWxlZ2F0ZTo6d2lsbFBlcmZvcm1DbGllbnRSZWRpcmVj
dFRvVVJMKF9Jbl9vcHRfIElXZWJWaWV3KiwgX0luXyBCU1RSIHVybCwgZG91YmxlIC8qZGVsYXlT
ZWNvbmRzKi8sIERBVEUgLypmaXJlRGF0ZSovLCBfSW5fb3B0XyBJV2ViRnJhbWUqIGZyYW1lKQog
ewogICAgIGlmICghZG9uZSAmJiBnVGVzdFJ1bm5lci0+ZHVtcEZyYW1lTG9hZENhbGxiYWNrcygp
KQotICAgICAgICBmcHJpbnRmKHRlc3RSZXN1bHQsICIlcyAtIHdpbGxQZXJmb3JtQ2xpZW50UmVk
aXJlY3RUb1VSTDogJVMgXG4iLCBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChmcmFt
ZSkuY19zdHIoKSwKKyAgICAgICAgZnByaW50Zih0ZXN0UmVzdWx0LCAiJXMgLSB3aWxsUGVyZm9y
bUNsaWVudFJlZGlyZWN0VG9VUkw6ICVTXG4iLCBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJl
c3VsdChmcmFtZSkuY19zdHIoKSwKICAgICAgICAgICAgICAgICB1cmxTdWl0YWJsZUZvclRlc3RS
ZXN1bHQoc3RkOjp3c3RyaW5nKHVybCwgOjpTeXNTdHJpbmdMZW4odXJsKSkpLmNfc3RyKCkpOwog
CiAgICAgcmV0dXJuIFNfT0s7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4v
VUlEZWxlZ2F0ZS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVUlEZWxlZ2F0ZS5jcHAK
aW5kZXggOGVkNmY4NDVmOTdlOTkyOTE0MDRmZmY0YTFkNzlhZGRhNmEwYzIxNS4uYTU5YzQ0MTdh
OTQxZGEyM2Y4ZGVkZGQ3YWJmMThmZDlkMzEwZGQ3YiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL1VJRGVsZWdhdGUuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9VSURlbGVnYXRlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDUtMjAwOCwgMjAxNC0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwNS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDUzLDIyICs0NTMsNDkgQEAgSFJFU1VM
VCBVSURlbGVnYXRlOjp3ZWJWaWV3RnJhbWUoX0luX29wdF8gSVdlYlZpZXcqIC8qc2VuZGVyKi8s
IF9PdXRfIFJFQ1QqIGZyYW0KICAgICByZXR1cm4gU19PSzsKIH0KIAotY29uc3Qgd2NoYXJfdCog
dG9NZXNzYWdlKGNvbnN0IEJTVFIgbWVzc2FnZSkKK3N0YXRpYyBzdGQ6OnN0cmluZyBzdHJpcFRy
YWlsaW5nU3BhY2VzKGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHJpbmcpCit7CisgICAgYXV0byByZXN1
bHQgPSBzdHJpbmc7CisgICAgc3RkOjp3c3RyaW5nOjpzaXplX3R5cGUgc3BhY2VQb3NpdGlvbjsK
KyAgICB3aGlsZSAoKHNwYWNlUG9zaXRpb24gPSByZXN1bHQuZmluZCgiIFxuIikpICE9IHN0ZDo6
d3N0cmluZzo6bnBvcykKKyAgICAgICAgcmVzdWx0LmVyYXNlKHNwYWNlUG9zaXRpb24sIDEpOwor
ICAgIHdoaWxlICghcmVzdWx0LmVtcHR5KCkgJiYgcmVzdWx0LmJhY2soKSA9PSAnICcpCisgICAg
ICAgIHJlc3VsdC5wb3BfYmFjaygpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBz
dGQ6OnN0cmluZyBhZGRMZWFkaW5nU3BhY2VTdHJpcFRyYWlsaW5nU3BhY2VzKGNvbnN0IHN0ZDo6
c3RyaW5nJiBzdHJpbmcpCit7CisgICAgYXV0byByZXN1bHQgPSBzdHJpcFRyYWlsaW5nU3BhY2Vz
KHN0cmluZyk7CisgICAgcmV0dXJuIChyZXN1bHQuZW1wdHkoKSB8fCByZXN1bHQuZnJvbnQoKSA9
PSAnXG4nKSA/IHJlc3VsdCA6ICcgJyArIHJlc3VsdDsKK30KKworc3RkOjpzdHJpbmcgdG9NZXNz
YWdlKEJTVFIgbWVzc2FnZSkKIHsKICAgICBhdXRvIGxlbmd0aCA9IFN5c1N0cmluZ0xlbihtZXNz
YWdlKTsKICAgICBpZiAoIWxlbmd0aCkKLSAgICAgICAgcmV0dXJuIG1lc3NhZ2U7CisgICAgICAg
IHJldHVybiAiIjsKICAgICAvLyBSZXR1cm4gIihudWxsKSIgZm9yIGFuIGludmFsaWQgVVRGLTE2
IHNlcXVlbmNlIHRvIGFsaWduIHdpdGggV2ViS2l0VGVzdFJ1bm5lci4KLSAgICBhdXRvIHV0Zjgg
PSBTdHJpbmdWaWV3KHVjaGFyRnJvbShtZXNzYWdlKSwgbGVuZ3RoKS50cnlHZXRVdGY4KFN0cmlj
dENvbnZlcnNpb24pOwotICAgIGlmICghdXRmOCkKLSAgICAgICAgcmV0dXJuIEwiKG51bGwpIjsK
LSAgICByZXR1cm4gbWVzc2FnZTsKKyAgICAvLyBGSVhNRTogQ291bGQgcHJvYmFibHkgdGFrZSBh
ZHZhbnRhZ2Ugb2YgV0NfRVJSX0lOVkFMSURfQ0hBUlMgYW5kIGF2b2lkIGNvbnZlcnRpbmcgdG8g
VVRGLTggdHdpY2UuCisgICAgaWYgKCFTdHJpbmdWaWV3KHVjaGFyRnJvbShtZXNzYWdlKSwgbGVu
Z3RoKS50cnlHZXRVdGY4KFN0cmljdENvbnZlcnNpb24pKQorICAgICAgICByZXR1cm4gIihudWxs
KSI7CisgICAgcmV0dXJuIHRvVVRGOChtZXNzYWdlKTsKK30KKworc3RhdGljIHN0ZDo6c3RyaW5n
IGFkZExlYWRpbmdTcGFjZVN0cmlwVHJhaWxpbmdTcGFjZXMoQlNUUiBtZXNzYWdlKQoreworICAg
IHJldHVybiBhZGRMZWFkaW5nU3BhY2VTdHJpcFRyYWlsaW5nU3BhY2VzKHRvTWVzc2FnZShtZXNz
YWdlKSk7Cit9CisKK3N0YXRpYyBzdGQ6OnN0cmluZyBzdHJpcFRyYWlsaW5nU3BhY2VzKEJTVFIg
bWVzc2FnZSkKK3sKKyAgICByZXR1cm4gc3RyaXBUcmFpbGluZ1NwYWNlcyh0b01lc3NhZ2UobWVz
c2FnZSkpOwogfQogCiBIUkVTVUxUIFVJRGVsZWdhdGU6OnJ1bkphdmFTY3JpcHRBbGVydFBhbmVs
V2l0aE1lc3NhZ2UoX0luX29wdF8gSVdlYlZpZXcqIC8qc2VuZGVyKi8sIF9Jbl8gQlNUUiBtZXNz
YWdlKQogewogICAgIGlmICghZG9uZSkgewotICAgICAgICBmcHJpbnRmKHRlc3RSZXN1bHQsICJB
TEVSVDogJVNcbiIsIHRvTWVzc2FnZShtZXNzYWdlKSk7CisgICAgICAgIGZwcmludGYodGVzdFJl
c3VsdCwgIkFMRVJUOiVzXG4iLCBhZGRMZWFkaW5nU3BhY2VTdHJpcFRyYWlsaW5nU3BhY2VzKG1l
c3NhZ2UpLmNfc3RyKCkpOwogICAgICAgICBmZmx1c2godGVzdFJlc3VsdCk7CiAgICAgfQogCkBA
IC00NzgsNyArNTA1LDcgQEAgSFJFU1VMVCBVSURlbGVnYXRlOjpydW5KYXZhU2NyaXB0QWxlcnRQ
YW5lbFdpdGhNZXNzYWdlKF9Jbl9vcHRfIElXZWJWaWV3KiAvKnNlbmQKIEhSRVNVTFQgVUlEZWxl
Z2F0ZTo6cnVuSmF2YVNjcmlwdENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlKF9Jbl9vcHRfIElXZWJW
aWV3KiAvKnNlbmRlciovLCBfSW5fIEJTVFIgbWVzc2FnZSwgX091dF8gQk9PTCogcmVzdWx0KQog
ewogICAgIGlmICghZG9uZSkKLSAgICAgICAgZnByaW50Zih0ZXN0UmVzdWx0LCAiQ09ORklSTTog
JVNcbiIsIHRvTWVzc2FnZShtZXNzYWdlKSk7CisgICAgICAgIGZwcmludGYodGVzdFJlc3VsdCwg
IkNPTkZJUk06JXNcbiIsIGFkZExlYWRpbmdTcGFjZVN0cmlwVHJhaWxpbmdTcGFjZXMobWVzc2Fn
ZSkuY19zdHIoKSk7CiAKICAgICAqcmVzdWx0ID0gVFJVRTsKIApAQCAtNDg4LDcgKzUxNSw3IEBA
IEhSRVNVTFQgVUlEZWxlZ2F0ZTo6cnVuSmF2YVNjcmlwdENvbmZpcm1QYW5lbFdpdGhNZXNzYWdl
KF9Jbl9vcHRfIElXZWJWaWV3KiAvKnNlCiBIUkVTVUxUIFVJRGVsZWdhdGU6OnJ1bkphdmFTY3Jp
cHRUZXh0SW5wdXRQYW5lbFdpdGhQcm9tcHQoX0luX29wdF8gSVdlYlZpZXcqIC8qc2VuZGVyKi8s
IF9Jbl8gQlNUUiBtZXNzYWdlLCBfSW5fIEJTVFIgZGVmYXVsdFRleHQsIF9fZGVyZWZfb3B0X291
dCBCU1RSKiByZXN1bHQpCiB7CiAgICAgaWYgKCFkb25lKQotICAgICAgICBmcHJpbnRmKHRlc3RS
ZXN1bHQsICJQUk9NUFQ6ICVTLCBkZWZhdWx0IHRleHQ6ICVTXG4iLCB0b01lc3NhZ2UobWVzc2Fn
ZSksIHRvTWVzc2FnZShkZWZhdWx0VGV4dCkpOworICAgICAgICBmcHJpbnRmKHRlc3RSZXN1bHQs
ICJQUk9NUFQ6ICVzLCBkZWZhdWx0IHRleHQ6JXNcbiIsIHRvTWVzc2FnZShtZXNzYWdlKS5jX3N0
cigpLCBhZGRMZWFkaW5nU3BhY2VTdHJpcFRyYWlsaW5nU3BhY2VzKGRlZmF1bHRUZXh0KS5jX3N0
cigpKTsKIAogICAgICpyZXN1bHQgPSBTeXNBbGxvY1N0cmluZyhkZWZhdWx0VGV4dCk7CiAKQEAg
LTUwMSw3ICs1MjgsNyBAQCBIUkVTVUxUIFVJRGVsZWdhdGU6OnJ1bkJlZm9yZVVubG9hZENvbmZp
cm1QYW5lbFdpdGhNZXNzYWdlKF9Jbl9vcHRfIElXZWJWaWV3KiAvKgogICAgICAgICByZXR1cm4g
RV9QT0lOVEVSOwogCiAgICAgaWYgKCFkb25lKQotICAgICAgICBmcHJpbnRmKHRlc3RSZXN1bHQs
ICJDT05GSVJNIE5BVklHQVRJT046ICVTXG4iLCB0b01lc3NhZ2UobWVzc2FnZSkpOworICAgICAg
ICBmcHJpbnRmKHRlc3RSZXN1bHQsICJDT05GSVJNIE5BVklHQVRJT046JXNcbiIsIGFkZExlYWRp
bmdTcGFjZVN0cmlwVHJhaWxpbmdTcGFjZXMobWVzc2FnZSkuY19zdHIoKSk7CiAKICAgICAqcmVz
dWx0ID0gIWdUZXN0UnVubmVyLT5zaG91bGRTdGF5T25QYWdlQWZ0ZXJIYW5kbGluZ0JlZm9yZVVu
bG9hZCgpOwogCkBAIC01MjMsOCArNTUwLDcgQEAgSFJFU1VMVCBVSURlbGVnYXRlOjp3ZWJWaWV3
QWRkTWVzc2FnZVRvQ29uc29sZShfSW5fb3B0XyBJV2ViVmlldyogLypzZW5kZXIqLywgX0kKICAg
ICB9CiAKICAgICBhdXRvIG91dCA9IGdUZXN0UnVubmVyLT5kdW1wSlNDb25zb2xlTG9nSW5TdGRF
cnIoKSA/IHN0ZGVyciA6IHRlc3RSZXN1bHQ7Ci0gICAgZnByaW50ZihvdXQsICJDT05TT0xFIE1F
U1NBR0U6ICIpOwotICAgIGZwcmludGYob3V0LCAiJXNcbiIsIHRvVVRGOChuZXdNZXNzYWdlKS5j
X3N0cigpKTsKKyAgICBmcHJpbnRmKG91dCwgIkNPTlNPTEUgTUVTU0FHRTolc1xuIiwgYWRkTGVh
ZGluZ1NwYWNlU3RyaXBUcmFpbGluZ1NwYWNlcyhuZXdNZXNzYWdlKS5jX3N0cigpKTsKICAgICBy
ZXR1cm4gU19PSzsKIH0KIApAQCAtNjczLDcgKzY5OSw3IEBAIEhSRVNVTFQgVUlEZWxlZ2F0ZTo6
d2ViVmlld0RpZEludmFsaWRhdGUoX0luX29wdF8gSVdlYlZpZXcqIC8qc2VuZGVyKi8pCiBIUkVT
VUxUIFVJRGVsZWdhdGU6OnNldFN0YXR1c1RleHQoX0luX29wdF8gSVdlYlZpZXcqLCBfSW5fIEJT
VFIgdGV4dCkKIHsKICAgICBpZiAoIWRvbmUgJiYgZ1Rlc3RSdW5uZXItPmR1bXBTdGF0dXNDYWxs
YmFja3MoKSkKLSAgICAgICAgZnByaW50Zih0ZXN0UmVzdWx0LCAiVUkgREVMRUdBVEUgU1RBVFVT
IENBTExCQUNLOiBzZXRTdGF0dXNUZXh0OiVTXG4iLCB0b01lc3NhZ2UodGV4dCkpOworICAgICAg
ICBmcHJpbnRmKHRlc3RSZXN1bHQsICJVSSBERUxFR0FURSBTVEFUVVMgQ0FMTEJBQ0s6IHNldFN0
YXR1c1RleHQ6JXNcbiIsIHN0cmlwVHJhaWxpbmdTcGFjZXModGV4dCkuY19zdHIoKSk7CiAgICAg
cmV0dXJuIFNfT0s7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9y
dC9iYXNlLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkKaW5kZXggNzU1
NzA5NDZjNzkxYzJkMmQyMTY2ZjYxYTJlOWNkYjlkNDM0N2IzMy4uMzNhOWE2YjA1MDg0Mzk5NzE2
MWFmMGJkNGFlMDQwODBhMGQyMzMzZCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9wb3J0L2Jhc2UucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkK
QEAgLTMwMCw2ICszMDAsOSBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAgICAgICByZXR1
cm4gRmFsc2UKIAogICAgIGRlZiBkb190ZXh0X3Jlc3VsdHNfZGlmZmVyKHNlbGYsIGV4cGVjdGVk
X3RleHQsIGFjdHVhbF90ZXh0KToKKyAgICAgICAgIyBJZ25vcmUgdHJhaWxpbmcgc3BhY2VzIGlu
IGV4cGVjdGVkIGZpbGVzLiBXZSB3aWxsIHJlbW92ZSB0aGlzIGNvZGUgYWZ0ZXIgcmVtb3Zpbmcg
dHJhaWxpbmcgc3BhY2VzIGZyb20gYWxsIGV4cGVjdGVkLnR4dCBmaWxlcy4KKyAgICAgICAgaWYg
bm90IGV4cGVjdGVkX3RleHQuc3RhcnRzd2l0aCgiPD94bWwiKToKKyAgICAgICAgICAgIGV4cGVj
dGVkX3RleHQgPSByZS5jb21waWxlKCIgKyQiLCByZS5NVUxUSUxJTkUpLnN1YigiIiwgZXhwZWN0
ZWRfdGV4dCkKICAgICAgICAgcmV0dXJuIGV4cGVjdGVkX3RleHQgIT0gYWN0dWFsX3RleHQKIAog
ICAgIGRlZiBkb19hdWRpb19yZXN1bHRzX2RpZmZlcihzZWxmLCBleHBlY3RlZF9hdWRpbywgYWN0
dWFsX2F1ZGlvKToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC93aW4u
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvd2luLnB5CmluZGV4IDcwMzljYjUyYzNk
MWVmNzNhZWFkZjJkMTMyNmEzMmZlNWViNDdhMjIuLjE0YzMyNTRmYjhlMDUyNWMzZWQwODE1Mjk2
NmU4MmJmZmMxZDJkMTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC93
aW4ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3dpbi5weQpAQCAtMTAzLDE4
ICsxMDMsMTQgQEAgY2xhc3MgV2luUG9ydChBcHBsZVBvcnQpOgogICAgICAgICAgICAgc2VsZi5f
b3NfdmVyc2lvbiA9IHNlbGYuaG9zdC5wbGF0Zm9ybS5vc192ZXJzaW9uCiAKICAgICBkZWYgZG9f
dGV4dF9yZXN1bHRzX2RpZmZlcihzZWxmLCBleHBlY3RlZF90ZXh0LCBhY3R1YWxfdGV4dCk6Ci0g
ICAgICAgICMgU2FuaXR5IHdhcyByZXN0b3JlZCBpbiBXSzIsIHNvIHdlIGRvbid0IG5lZWQgdGhp
cyBoYWNrIHRoZXJlLgotICAgICAgICBpZiBzZWxmLmdldF9vcHRpb24oJ3dlYmtpdF90ZXN0X3J1
bm5lcicpOgotICAgICAgICAgICAgcmV0dXJuIEFwcGxlUG9ydC5kb190ZXh0X3Jlc3VsdHNfZGlm
ZmVyKHNlbGYsIGV4cGVjdGVkX3RleHQsIGFjdHVhbF90ZXh0KQotCi0gICAgICAgICMgVGhpcyBp
cyBhIGhhY2sgKHdoaWNoIGRhdGVzIGJhY2sgdG8gT1JXVCkuCi0gICAgICAgICMgV2luZG93cyBk
b2VzIG5vdCBoYXZlIGFuIEVESVRJTkcgREVMRUdBVEUsIHNvIHdlIHN0cmlwIGFueSBFRElUSU5H
IERFTEVHQVRFCi0gICAgICAgICMgbWVzc2FnZXMgdG8gbWFrZSBtb3JlIG9mIHRoZSB0ZXN0cyBw
YXNzLgotICAgICAgICAjIEl0J3MgcG9zc2libGUgbW9yZSBvZiB0aGUgcG9ydHMgbWlnaHQgd2Fu
dCB0aGlzIGFuZCB0aGlzIGNvdWxkIG1vdmUgZG93biBpbnRvIFdlYktpdFBvcnQuCi0gICAgICAg
IGRlbGVnYXRlX3JlZ2V4cCA9IHJlLmNvbXBpbGUoIl5FRElUSU5HIERFTEVHQVRFOiAuKj9cbiIs
IHJlLk1VTFRJTElORSkKLSAgICAgICAgZXhwZWN0ZWRfdGV4dCA9IGRlbGVnYXRlX3JlZ2V4cC5z
dWIoIiIsIGV4cGVjdGVkX3RleHQpCi0gICAgICAgIGFjdHVhbF90ZXh0ID0gZGVsZWdhdGVfcmVn
ZXhwLnN1YigiIiwgYWN0dWFsX3RleHQpCi0gICAgICAgIHJldHVybiBleHBlY3RlZF90ZXh0ICE9
IGFjdHVhbF90ZXh0CisgICAgICAgICMgU2FuaXR5IHdhcyByZXN0b3JlZCBpbiBXZWJLaXRUZXN0
UnVubmVyLCBzbyB3ZSBkb24ndCBuZWVkIHRoaXMgaGFjayB0aGVyZS4KKyAgICAgICAgaWYgbm90
IHNlbGYuZ2V0X29wdGlvbignd2Via2l0X3Rlc3RfcnVubmVyJyk6CisgICAgICAgICAgICAjIFdp
bmRvd3MgZG9lcyBub3QgaGF2ZSBhbiBFRElUSU5HIERFTEVHQVRFLCBzbyBzdHJpcCB0aG9zZSBt
ZXNzYWdlcyB0byBtYWtlIG1vcmUgdGVzdHMgcGFzcy4KKyAgICAgICAgICAgICMgSXQncyBwb3Nz
aWJsZSBvdGhlciBwb3J0cyBtaWdodCB3YW50IHRoaXMsIGFuZCBpZiBzbywgdGhpcyBjb3VsZCBt
b3ZlIGRvd24gaW50byBXZWJLaXRQb3J0LgorICAgICAgICAgICAgZGVsZWdhdGVfcmVnZXhwID0g
cmUuY29tcGlsZSgiXkVESVRJTkcgREVMRUdBVEU6IC4qP1xuIiwgcmUuTVVMVElMSU5FKQorICAg
ICAgICAgICAgZXhwZWN0ZWRfdGV4dCA9IGRlbGVnYXRlX3JlZ2V4cC5zdWIoIiIsIGV4cGVjdGVk
X3RleHQpCisgICAgICAgICAgICBhY3R1YWxfdGV4dCA9IGRlbGVnYXRlX3JlZ2V4cC5zdWIoIiIs
IGFjdHVhbF90ZXh0KQorICAgICAgICByZXR1cm4gQXBwbGVQb3J0LmRvX3RleHRfcmVzdWx0c19k
aWZmZXIoc2VsZiwgZXhwZWN0ZWRfdGV4dCwgYWN0dWFsX3RleHQpCiAKICAgICBkZWYgZGVmYXVs
dF9iYXNlbGluZV9zZWFyY2hfcGF0aChzZWxmLCAqKmt3YXJncyk6CiAgICAgICAgIHZlcnNpb25f
bmFtZV9tYXAgPSBWZXJzaW9uTmFtZU1hcC5tYXAoc2VsZi5ob3N0LnBsYXRmb3JtKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2UuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2UuY3BwCmluZGV4IGI2NDBmZjI4YWU3NWZkNjE4MDAzYmY2Zjc1MmUwNWNiMTMw
NjM2NzIuLmQ4OWZlYWY5YjZkYWU0Yzk2ODUzMWYwYWI2Mzg1ODkxYjE0Zjk4ZjggMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZS5jcHAKQEAgLTgzNCwxNyArODM0LDIyIEBAIHN0YXRpYyBib29sIGhhc0Rv
Y3VtZW50RWxlbWVudChXS0J1bmRsZUZyYW1lUmVmIGZyYW1lKQogICAgIHJldHVybiBKU1ZhbHVl
VG9Cb29sZWFuKGNvbnRleHQsIGRvY3VtZW50RWxlbWVudFZhbHVlKTsKIH0KIAotc3RhdGljIHZv
aWQgZHVtcEZyYW1lVGV4dChXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBTdHJpbmdCdWlsZGVyJiBz
dHJpbmdCdWlsZGVyKQorc3RhdGljIHZvaWQgZHVtcEZyYW1lVGV4dChXS0J1bmRsZUZyYW1lUmVm
IGZyYW1lLCBTdHJpbmdCdWlsZGVyJiBidWlsZGVyKQogewogICAgIC8vIElmIHRoZSBmcmFtZSBk
b2Vzbid0IGhhdmUgYSBkb2N1bWVudCBlbGVtZW50LCBpdHMgaW5uZXIgdGV4dCB3aWxsIGJlIGFu
IGVtcHR5IHN0cmluZywgc28KLSAgICAvLyB3ZSdsbCBlbmQgdXAganVzdCBhcHBlbmRpbmcgYSBz
aW5nbGUgbmV3bGluZSBiZWxvdy4gQnV0IER1bXBSZW5kZXJUcmVlIGRvZXNuJ3QgYXBwZW5kCi0g
ICAgLy8gYW55dGhpbmcgaW4gdGhpcyBjYXNlLCBzbyB3ZSBzaG91bGRuJ3QgZWl0aGVyLgorICAg
IC8vIHdlJ2xsIGVuZCB1cCBqdXN0IGFwcGVuZGluZyBhIHNpbmdsZSBuZXdsaW5lIGJlbG93LiBT
aW5jZSBEdW1wUmVuZGVyVHJlZSBkaWRuJ3QgYXBwZW5kCisgICAgLy8gYW55dGhpbmcgaW4gdGhp
cyBjYXNlLCB3ZSBkZWNpZGVkIHRvIHByZXNlcnZlIHRoYXQgYmVoYXZpb3IuCiAgICAgaWYgKCFo
YXNEb2N1bWVudEVsZW1lbnQoZnJhbWUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBXS1JldGFp
blB0cjxXS1N0cmluZ1JlZj4gdGV4dCA9IGFkb3B0V0soV0tCdW5kbGVGcmFtZUNvcHlJbm5lclRl
eHQoZnJhbWUpKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh0b1dURlN0cmluZyh0ZXh0KSk7
Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJ1xuJyk7CisgICAgLy8gVG8ga2VlcCB0aGluZ3Mg
dGlkeSwgc3RyaXAgYWxsIHRyYWlsaW5nIHNwYWNlczogdGhleSBhcmUgbm90IGEgbWVhbmluZ2Z1
bCBwYXJ0IG9mIGR1bXBBc1RleHQgdGVzdCBvdXRwdXQuCisgICAgLy8gQnJlYWtpbmcgdGhlIHN0
cmluZyB1cCBpbnRvIGxpbmVzIGxldHMgdXMgZWZmaWNpZW50bHkgc3RyaXAgYW5kIGhhcyBhIHNp
ZGUgZWZmZWN0IG9mIGFkZGluZyBhIG5ld2xpbmUgYWZ0ZXIgdGhlIGxhc3QgbGluZS4KKyAgICBh
dXRvIHRleHQgPSB0b1dURlN0cmluZyhhZG9wdFdLKFdLQnVuZGxlRnJhbWVDb3B5SW5uZXJUZXh0
KGZyYW1lKSkpOworICAgIGZvciAoYXV0byBsaW5lIDogU3RyaW5nVmlldyh0ZXh0KS5zcGxpdEFs
bG93aW5nRW1wdHlFbnRyaWVzKCdcbicpKSB7CisgICAgICAgIHdoaWxlIChsaW5lLmVuZHNXaXRo
KCcgJykpCisgICAgICAgICAgICBsaW5lID0gbGluZS5zdWJzdHJpbmcoMCwgbGluZS5sZW5ndGgo
KSAtIDEpOworICAgICAgICBidWlsZGVyLmFwcGVuZChsaW5lLCAnXG4nKTsKKyAgICB9CiB9CiAK
IHN0YXRpYyB2b2lkIGR1bXBEZXNjZW5kYW50RnJhbWVzVGV4dChXS0J1bmRsZUZyYW1lUmVmIGZy
YW1lLCBTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyKQpAQCAtMTA1Niw5ICsxMDYxLDcgQEAg
dm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFt
ZShXS0J1bmRsZVBhZ2VSZWYsIFdLQnUKIAogICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRl
cjsKICAgICBkdW1wRnJhbWVEZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChmcmFtZSwg
c3RyaW5nQnVpbGRlcik7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgLSB3aWxs
UGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkw6ICIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
KHBhdGhTdWl0YWJsZUZvclRlc3RSZXN1bHQodXJsKSk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBl
bmRMaXRlcmFsKCIgXG4iKTsKKyAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiIC0gd2lsbFBlcmZv
cm1DbGllbnRSZWRpcmVjdFRvVVJMOiAiLCBwYXRoU3VpdGFibGVGb3JUZXN0UmVzdWx0KHVybCks
ICdcbicpOwogICAgIGluamVjdGVkQnVuZGxlLm91dHB1dFRleHQoc3RyaW5nQnVpbGRlci50b1N0
cmluZygpKTsKIH0KIApAQCAtMTM0NSw3ICsxMzQ4LDcgQEAgV0tCdW5kbGVQYWdlUG9saWN5QWN0
aW9uIEluamVjdGVkQnVuZGxlUGFnZTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihX
S0IKIAogICAgIGlmIChpbmplY3RlZEJ1bmRsZS50ZXN0UnVubmVyKCktPnNob3VsZER1bXBQb2xp
Y3lDYWxsYmFja3MoKSkgewogICAgICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0g
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIC0gZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbiBcbiIpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwo
IiAtIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25cbiIpOwogICAgICAgICBkdW1wUmVx
dWVzdERlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KHJlcXVlc3QsIHN0cmluZ0J1aWxk
ZXIpOwogICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBpcyBtYWluIGZyYW1l
IC0gIik7CiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKFdLQnVuZGxlRnJhbWVJc01haW5G
cmFtZShmcmFtZSkgPyAieWVzIiA6ICJubyIpOwpAQCAtMTQ0OSw2ICsxNDUyLDIzIEBAIHVpbnQ2
NF90IEluamVjdGVkQnVuZGxlUGFnZTo6ZGlkRXhjZWVkRGF0YWJhc2VRdW90YShXS0J1bmRsZVBh
Z2VSZWYgcGFnZSwgV0tTZWN1CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEluamVjdGVkQnVuZGxl
UGFnZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZGlkRXhjZWVkRGF0YWJhc2VR
dW90YShvcmlnaW4sIGRhdGFiYXNlTmFtZSwgZGF0YWJhc2VEaXNwbGF5TmFtZSwgY3VycmVudFF1
b3RhQnl0ZXMsIGN1cnJlbnRPcmlnaW5Vc2FnZUJ5dGVzLCBjdXJyZW50RGF0YWJhc2VVc2FnZUJ5
dGVzLCBleHBlY3RlZFVzYWdlQnl0ZXMpOwogfQogCitzdGF0aWMgV1RGOjpTdHJpbmcgc3RyaXBU
cmFpbGluZ1NwYWNlc0FkZE5ld2xpbmUoY29uc3QgV1RGOjpTdHJpbmcmIHN0cmluZykKK3sKKyAg
ICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgZm9yIChhdXRvIGxpbmUgOiBTdHJpbmdWaWV3
KHN0cmluZykuc3BsaXRBbGxvd2luZ0VtcHR5RW50cmllcygnXG4nKSkgeworICAgICAgICB3aGls
ZSAobGluZS5lbmRzV2l0aCgnICcpKQorICAgICAgICAgICAgbGluZSA9IGxpbmUuc3Vic3RyaW5n
KDAsIGxpbmUubGVuZ3RoKCkgLSAxKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQobGluZSwgJ1xu
Jyk7CisgICAgfQorICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK3N0YXRpYyBX
VEY6OlN0cmluZyBhZGRMZWFkaW5nU3BhY2VTdHJpcFRyYWlsaW5nU3BhY2VzQWRkTmV3bGluZShj
b25zdCBXVEY6OlN0cmluZyYgc3RyaW5nKQoreworICAgIGF1dG8gcmVzdWx0ID0gc3RyaXBUcmFp
bGluZ1NwYWNlc0FkZE5ld2xpbmUoc3RyaW5nKTsKKyAgICByZXR1cm4gKHJlc3VsdC5pc0VtcHR5
KCkgfHwgcmVzdWx0LnN0YXJ0c1dpdGgoJ1xuJykpID8gcmVzdWx0IDogbWFrZVN0cmluZygnICcs
IHJlc3VsdCk7Cit9CisKIHN0YXRpYyBXVEY6OlN0cmluZyBsYXN0RmlsZVVSTFBhdGhDb21wb25l
bnQoY29uc3QgV1RGOjpTdHJpbmcmIHBhdGgpCiB7CiAgICAgc2l6ZV90IHBvcyA9IHBhdGguZmlu
ZCgiZmlsZTovLyIpOwpAQCAtMTQ4NSwxNSArMTUwNSwxMSBAQCB2b2lkIEluamVjdGVkQnVuZGxl
UGFnZTo6d2lsbEFkZE1lc3NhZ2VUb0NvbnNvbGUoV0tTdHJpbmdSZWYgbWVzc2FnZSkKICAgICAg
ICAgLy8gRklYTUU6IFRoZSBjb2RlIGJlbG93IGRvZXMgbm90IGhhbmRsZSBhZGRpdGlvbmFsIHRl
eHQgYWZ0ZXIgdXJsIG5vciBtdWx0aXBsZSB1cmxzLiBUaGlzIG1hdGNoZXMgRHVtcFJlbmRlclRy
ZWUgaW1wbGVtZW50YXRpb24uCiAgICAgICAgIG1lc3NhZ2VTdHJpbmcgPSBtZXNzYWdlU3RyaW5n
LnN1YnN0cmluZygwLCBmaWxlUHJvdG9jb2xTdGFydCkgKyBsYXN0RmlsZVVSTFBhdGhDb21wb25l
bnQobWVzc2FnZVN0cmluZy5zdWJzdHJpbmcoZmlsZVByb3RvY29sU3RhcnQpKTsKIAotICAgIFN0
cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVy
YWwoIkNPTlNPTEUgTUVTU0FHRTogIik7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWVzc2Fn
ZVN0cmluZyk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0KKyAgICBtZXNzYWdl
U3RyaW5nID0gbWFrZVN0cmluZygiQ09OU09MRSBNRVNTQUdFOiIsIGFkZExlYWRpbmdTcGFjZVN0
cmlwVHJhaWxpbmdTcGFjZXNBZGROZXdsaW5lKG1lc3NhZ2VTdHJpbmcpKTsKICAgICBpZiAoaW5q
ZWN0ZWRCdW5kbGUuZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyKCkpCi0gICAgICAgIGluamVjdGVk
QnVuZGxlLmR1bXBUb1N0ZEVycihzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpOworICAgICAgICBp
bmplY3RlZEJ1bmRsZS5kdW1wVG9TdGRFcnIobWVzc2FnZVN0cmluZyk7CiAgICAgZWxzZQotICAg
ICAgICBpbmplY3RlZEJ1bmRsZS5vdXRwdXRUZXh0KHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSk7
CisgICAgICAgIGluamVjdGVkQnVuZGxlLm91dHB1dFRleHQobWVzc2FnZVN0cmluZyk7CiB9CiAK
IHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjp3aWxsU2V0U3RhdHVzYmFyVGV4dChXS1N0cmluZ1Jl
ZiBzdGF0dXNiYXJUZXh0KQpAQCAtMTUxOCwxMSArMTUzNCw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5k
bGVQYWdlOjp3aWxsUnVuSmF2YVNjcmlwdEFsZXJ0KFdLU3RyaW5nUmVmIG1lc3NhZ2UsIFdLQnVu
ZGxlRnJhCiAgICAgaWYgKCFpbmplY3RlZEJ1bmRsZS5pc1Rlc3RSdW5uaW5nKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZExpdGVyYWwoIkFMRVJUOiAiKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCh0b1dURlN0cmluZyhtZXNzYWdlKSk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJ1xuJyk7
Ci0gICAgaW5qZWN0ZWRCdW5kbGUub3V0cHV0VGV4dChzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkp
OworICAgIGluamVjdGVkQnVuZGxlLm91dHB1dFRleHQobWFrZVN0cmluZygiQUxFUlQ6IiwgYWRk
TGVhZGluZ1NwYWNlU3RyaXBUcmFpbGluZ1NwYWNlc0FkZE5ld2xpbmUodG9XVEZTdHJpbmcobWVz
c2FnZSkpKSk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjp3aWxsUnVuSmF2YVNjcmlw
dENvbmZpcm0oV0tTdHJpbmdSZWYgbWVzc2FnZSwgV0tCdW5kbGVGcmFtZVJlZikKQEAgLTE1MzEs
MjIgKzE1NDMsMTIgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OndpbGxSdW5KYXZhU2NyaXB0
Q29uZmlybShXS1N0cmluZ1JlZiBtZXNzYWdlLCBXS0J1bmRsZUYKICAgICBpZiAoIWluamVjdGVk
QnVuZGxlLmlzVGVzdFJ1bm5pbmcoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5nQnVp
bGRlciBzdHJpbmdCdWlsZGVyOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiQ09O
RklSTTogIik7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQodG9XVEZTdHJpbmcobWVzc2FnZSkp
OwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCdcbicpOwotICAgIGluamVjdGVkQnVuZGxlLm91
dHB1dFRleHQoc3RyaW5nQnVpbGRlci50b1N0cmluZygpKTsKKyAgICBpbmplY3RlZEJ1bmRsZS5v
dXRwdXRUZXh0KG1ha2VTdHJpbmcoIkNPTkZJUk06IiwgYWRkTGVhZGluZ1NwYWNlU3RyaXBUcmFp
bGluZ1NwYWNlc0FkZE5ld2xpbmUodG9XVEZTdHJpbmcobWVzc2FnZSkpKSk7CiB9CiAKIHZvaWQg
SW5qZWN0ZWRCdW5kbGVQYWdlOjp3aWxsUnVuSmF2YVNjcmlwdFByb21wdChXS1N0cmluZ1JlZiBt
ZXNzYWdlLCBXS1N0cmluZ1JlZiBkZWZhdWx0VmFsdWUsIFdLQnVuZGxlRnJhbWVSZWYpCiB7Ci0g
ICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5k
TGl0ZXJhbCgiUFJPTVBUOiAiKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh0b1dURlN0cmlu
ZyhtZXNzYWdlKSk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsIGRlZmF1bHQg
dGV4dDogIik7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQodG9XVEZTdHJpbmcoZGVmYXVsdFZh
bHVlKSk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgSW5qZWN0ZWRCdW5k
bGU6OnNpbmdsZXRvbigpLm91dHB1dFRleHQoc3RyaW5nQnVpbGRlci50b1N0cmluZygpKTsKKyAg
ICBJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkub3V0cHV0VGV4dChtYWtlU3RyaW5nKCJQUk9N
UFQ6ICIsIHRvV1RGU3RyaW5nKG1lc3NhZ2UpLCAiLCBkZWZhdWx0IHRleHQ6IiwgYWRkTGVhZGlu
Z1NwYWNlU3RyaXBUcmFpbGluZ1NwYWNlc0FkZE5ld2xpbmUodG9XVEZTdHJpbmcoZGVmYXVsdFZh
bHVlKSkpKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZFJlYWNoQXBwbGljYXRp
b25DYWNoZU9yaWdpblF1b3RhKFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luLCBpbnQ2NF90IHRv
dGFsQnl0ZXNOZWVkZWQpCg==
</data>
<flag name="commit-queue"
          id="425612"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409795</attachid>
            <date>2020-09-26 15:16:37 -0700</date>
            <delta_ts>2020-09-26 16:01:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216944-20200926151636.patch</filename>
            <type>text/plain</type>
            <size>26848</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3NjM3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMWM5M2RlYzk5MWNiODlhYjdkNWY5ZjgyOGU1ZmZkY2Nk
OTAzNTViZS4uNjc5ZGE2ZjVjNjA3MTA3OTg2YjI3OTA3ODhmYzI5OWI4MGI4NDUyYiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4
IEBACisyMDIwLTA5LTI1ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAg
ICBDaGFuZ2UgZHVtcEFzVGV4dCB0byBzdHJpcCB0cmFpbGluZyBzcGFjZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjk0NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IEFsYW4gQnVqdGFzLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1
bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAoZHVtcEZyYW1lc0FzVGV4dCk6IFN0cmlwIHRyYWls
aW5nIHNwYWNlcy4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRnJhbWVMb2FkRGVsZWdh
dGUubW06CisgICAgICAgICgtW0ZyYW1lTG9hZERlbGVnYXRlIHdlYlZpZXc6d2lsbFBlcmZvcm1D
bGllbnRSZWRpcmVjdFRvVVJMOmRlbGF5OmZpcmVEYXRlOmZvckZyYW1lOl0pOgorICAgICAgICBE
b24ndCBhZGQgdHJhaWxpbmcgc3BhY2UuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1VJ
RGVsZWdhdGUubW06CisgICAgICAgICgtW1VJRGVsZWdhdGUgd2ViVmlldzphZGRNZXNzYWdlVG9D
b25zb2xlOndpdGhTb3VyY2U6XSk6IERpdHRvLgorICAgICAgICAoYWRkTGVhZGluZ1NwYWNlU3Ry
aXBUcmFpbGluZ1NwYWNlcyk6IEFkZGVkLgorICAgICAgICAoc3RyaXBUcmFpbGluZ1NwYWNlcyk6
IEFkZGVkLgorICAgICAgICAoLVtVSURlbGVnYXRlIHdlYlZpZXc6cnVuSmF2YVNjcmlwdEFsZXJ0
UGFuZWxXaXRoTWVzc2FnZTppbml0aWF0ZWRCeUZyYW1lOl0pOiBEb24ndCBhZGQgdHJhaWxpbmcg
c3BhY2UuCisgICAgICAgICgtW1VJRGVsZWdhdGUgd2ViVmlldzpydW5KYXZhU2NyaXB0Q29uZmly
bVBhbmVsV2l0aE1lc3NhZ2U6aW5pdGlhdGVkQnlGcmFtZTpdKTogRGl0dG8uCisgICAgICAgICgt
W1VJRGVsZWdhdGUgd2ViVmlldzpydW5KYXZhU2NyaXB0VGV4dElucHV0UGFuZWxXaXRoUHJvbXB0
OmRlZmF1bHRUZXh0OmluaXRpYXRlZEJ5RnJhbWU6XSk6IERpdHRvLgorICAgICAgICAoLVtVSURl
bGVnYXRlIHdlYlZpZXc6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsV2l0aE1lc3NhZ2U6aW5p
dGlhdGVkQnlGcmFtZTpdKTogRGl0dG8uCisgICAgICAgICgtW1VJRGVsZWdhdGUgd2ViVmlldzpz
ZXRTdGF0dXNUZXh0Ol0pOiBEaXR0by4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9E
dW1wUmVuZGVyVHJlZS5jcHA6CisgICAgICAgIChkdW1wRnJhbWVzQXNUZXh0KTogU3RyaXAgdHJh
aWxpbmcgc3BhY2VzLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxl
Z2F0ZS5jcHA6CisgICAgICAgIChGcmFtZUxvYWREZWxlZ2F0ZTo6d2lsbFBlcmZvcm1DbGllbnRS
ZWRpcmVjdFRvVVJMKTogRG9uJ3QgYWRkIHRyYWlsaW5nIHNwYWNlLgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL3dpbi9VSURlbGVnYXRlLmNwcDoKKyAgICAgICAgKHRvTWVzc2FnZSk6IENoYW5n
ZWQgdG8gcmV0dXJuIHN0ZDo6d3N0cmluZy4KKyAgICAgICAgKHN0cmlwVHJhaWxpbmdTcGFjZXMp
OiBBZGRlZC4KKyAgICAgICAgKGFkZExlYWRpbmdTcGFjZVN0cmlwVHJhaWxpbmdTcGFjZXMpOiBB
ZGRlZC4KKyAgICAgICAgKFVJRGVsZWdhdGU6OnJ1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1l
c3NhZ2UpOiBEb24ndCBhZGQgdHJhaWxpbmcgc3BhY2UuCisgICAgICAgIChVSURlbGVnYXRlOjpy
dW5KYXZhU2NyaXB0Q29uZmlybVBhbmVsV2l0aE1lc3NhZ2UpOiBEaXR0by4KKyAgICAgICAgKFVJ
RGVsZWdhdGU6OnJ1bkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbFdpdGhQcm9tcHQpOiBEaXR0by4K
KyAgICAgICAgKFVJRGVsZWdhdGU6OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNz
YWdlKTogRGl0dG8uCisgICAgICAgIChVSURlbGVnYXRlOjp3ZWJWaWV3QWRkTWVzc2FnZVRvQ29u
c29sZSk6IERpdHRvLgorICAgICAgICAoVUlEZWxlZ2F0ZTo6c2V0U3RhdHVzVGV4dCk6IERpdHRv
LgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHk6CisgICAgICAgIChQ
b3J0LmRvX3RleHRfcmVzdWx0c19kaWZmZXIpOiBTdHJpcCB0cmFpbGluZyBzcGFjZXMgZnJvbSBl
eHBlY3RlZCB0ZXh0LgorICAgICAgICBQbGFuIGlzIHRvIHJlbW92ZSB0aGlzIGFmdGVyIHN0cmlw
cGluZyB0aGUgYWN0dWFsIGV4cGVjdGVkLnR4dCBmaWxlcy4KKworICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvcG9ydC93aW4ucHk6CisgICAgICAgIChXaW5Qb3J0LmRvX3RleHRfcmVzdWx0c19k
aWZmZXIpOiBDYWxsIHRocm91Z2ggdG8gYmFzZS4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdUUjo6
ZHVtcEZyYW1lVGV4dCk6IFN0cmlwIHRyYWlsaW5nIHNwYWNlcy4KKyAgICAgICAgKFdUUjo6SW5q
ZWN0ZWRCdW5kbGVQYWdlOjp3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0Rm9yRnJhbWUpOiBEb24n
dCBhZGQgdHJhaWxpbmcgc3BhY2UuCisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6IERpdHRvLgorICAgICAgICAoV1RSOjpz
dHJpcFRyYWlsaW5nU3BhY2VzKTogQWRkZWQuCisgICAgICAgIChXVFI6OmFkZExlYWRpbmdTcGFj
ZVN0cmlwVHJhaWxpbmdTcGFjZXMpOiBBZGRlZC4KKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5k
bGVQYWdlOjp3aWxsQWRkTWVzc2FnZVRvQ29uc29sZSk6IERvbid0IGFkZCB0cmFpbGluZyBzcGFj
ZS4KKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjp3aWxsUnVuSmF2YVNjcmlwdEFs
ZXJ0KTogRGl0dG8uCisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6d2lsbFJ1bkph
dmFTY3JpcHRDb25maXJtKTogRGl0dG8uCisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFn
ZTo6d2lsbFJ1bkphdmFTY3JpcHRQcm9tcHQpOiBEaXR0by4KKwogMjAyMC0wOS0yNSAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIHJldmVydGluZyByMjY3NjA4LgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0R1bXBSZW5kZXJUcmVlLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5k
ZXJUcmVlLm1tCmluZGV4IGI3ZjE4MTI3N2M2OTk1MDA5YTE3MjE4YjRlNzQzNTcyNzA4YjMzNmMu
LmQzZDEyYTkwYWZkMjJiOGY5MTNhODQyMzJhODEwMDU1OGZlMjExMDMgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KQEAgLTE1MTUsNiArMTUxNSwxMCBAQCBz
dGF0aWMgTlNTdHJpbmcgKmR1bXBGcmFtZXNBc1RleHQoV2ViRnJhbWUgKmZyYW1lKQogICAgICAg
ICB9CiAgICAgfQogCisgICAgLy8gVG8ga2VlcCB0aGluZ3MgdGlkeSwgc3RyaXAgYWxsIHRyYWls
aW5nIHNwYWNlczogdGhleSBhcmUgbm90IGEgbWVhbmluZ2Z1bCBwYXJ0IG9mIGR1bXBBc1RleHQg
dGVzdCBvdXRwdXQuCisgICAgW3Jlc3VsdCByZXBsYWNlT2NjdXJyZW5jZXNPZlN0cmluZzpAIiAr
XG4iIHdpdGhTdHJpbmc6QCJcbiIgb3B0aW9uczpOU1JlZ3VsYXJFeHByZXNzaW9uU2VhcmNoIHJh
bmdlOk5TTWFrZVJhbmdlKDAsIHJlc3VsdC5sZW5ndGgpXTsKKyAgICBbcmVzdWx0IHJlcGxhY2VP
Y2N1cnJlbmNlc09mU3RyaW5nOkAiICskIiB3aXRoU3RyaW5nOkAiIiBvcHRpb25zOk5TUmVndWxh
ckV4cHJlc3Npb25TZWFyY2ggcmFuZ2U6TlNNYWtlUmFuZ2UoMCwgcmVzdWx0Lmxlbmd0aCldOwor
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbQppbmRleCBjYTNlNmQwYWQ4M2JmZTllZDUxYzNk
MWU0MTQ4ZTU5OWFmZmU2YTkwLi44Mjc1MWJjNWI3NDE3MTU1Y2U1YjU0NGFjODcwYTZjOWRkM2Ri
MjEzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29u
dHJvbGxlci5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29u
dHJvbGxlci5tbQpAQCAtMTI3MCw3ICsxMjcwLDggQEAgLSAodm9pZCloYW5kbGVFdmVudDooRE9N
RXZlbnQgKilldmVudAogICAgIH0KICAgICAKICAgICBpZiAoW2V2ZW50IGlzS2luZE9mQ2xhc3M6
W0RPTUtleWJvYXJkRXZlbnQgY2xhc3NdXSkgewotICAgICAgICBwcmludGYoIiAga2V5SWRlbnRp
ZmllcjogJXNcbiIsIFtbKERPTUtleWJvYXJkRXZlbnQqKWV2ZW50IGtleUlkZW50aWZpZXJdIFVU
RjhTdHJpbmddKTsKKyAgICAgICAgYXV0byBrZXlJZGVudGlmaWVyID0gWyhET01LZXlib2FyZEV2
ZW50KilldmVudCBrZXlJZGVudGlmaWVyXTsKKyAgICAgICAgcHJpbnRmKCIgIGtleUlkZW50aWZp
ZXI6JXMlc1xuIiwga2V5SWRlbnRpZmllci5sZW5ndGggPyAiICIgOiAiIiwgW2tleUlkZW50aWZp
ZXIgVVRGOFN0cmluZ10pOwogICAgICAgICBwcmludGYoIiAga2V5TG9jYXRpb246ICAgJWRcbiIs
IFsoRE9NS2V5Ym9hcmRFdmVudCopZXZlbnQgbG9jYXRpb25dKTsKICAgICAgICAgcHJpbnRmKCIg
IG1vZGlmaWVyIGtleXM6IGM6JWQgczolZCBhOiVkIG06JWRcbiIsIAogICAgICAgICAgICAgICAg
WyhET01LZXlib2FyZEV2ZW50KilldmVudCBjdHJsS2V5XSA/IDEgOiAwLCAKZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9GcmFtZUxvYWREZWxlZ2F0ZS5tbSBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9GcmFtZUxvYWREZWxlZ2F0ZS5tbQppbmRleCBiMzhmNGQzN2YwNjcx
NTM1MWM4OWE4NmZlODIwOGI3NmYyMTVhYTdlLi4zNjcxNDkzOWZkYTBhNTY3NDljNzk5ODg2YTFl
YTQzODkyMTg5YTRhIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRnJhbWVM
b2FkRGVsZWdhdGUubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0ZyYW1lTG9hZERl
bGVnYXRlLm1tCkBAIC00MTIsNyArNDEyLDcgQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICop
c2VuZGVyIGRpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZUZvckZyYW1lOihXZWJGcmFtZQogLSAo
dm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RU
b1VSTDooTlNVUkwgKilVUkwgZGVsYXk6KE5TVGltZUludGVydmFsKXNlY29uZHMgZmlyZURhdGU6
KE5TRGF0ZSAqKWRhdGUgZm9yRnJhbWU6KFdlYkZyYW1lICopZnJhbWUKIHsKICAgICBpZiAoIWRv
bmUgJiYgZ1Rlc3RSdW5uZXItPmR1bXBGcmFtZUxvYWRDYWxsYmFja3MoKSkgewotICAgICAgICBO
U1N0cmluZyAqc3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCAtIHdpbGxQ
ZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VSTDogJUAgIiwgW2ZyYW1lIF9kcnRfZGVzY3JpcHRpb25T
dWl0YWJsZUZvclRlc3RSZXN1bHRdLCBbVVJMIF9kcnRfZGVzY3JpcHRpb25TdWl0YWJsZUZvclRl
c3RSZXN1bHRdXTsKKyAgICAgICAgTlNTdHJpbmcgKnN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdX
aXRoRm9ybWF0OkAiJUAgLSB3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkw6ICVAIiwgW2Zy
YW1lIF9kcnRfZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHRdLCBbVVJMIF9kcnRfZGVz
Y3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHRdXTsKICAgICAgICAgcHJpbnRmICgiJXNcbiIs
IFtzdHJpbmcgVVRGOFN0cmluZ10pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlE
ZWxlZ2F0ZS5tbQppbmRleCBmNjk5NTU1MWUwY2RhMTBkNGIyYjc5ZjkyYmE2ZGEzNGJlMzU3Yjg4
Li5hZDNjYTQyMWM1OGE4MjlhZjc2OTkxZTg4ZGRjZmM4ODhlNmM1NDdlIDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbQorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbQpAQCAtNzYsNiArNzYsMTggQEAgLSAoTlNSZWN0KXdl
YlZpZXdGcmFtZTooV2ViVmlldyAqKXNlbmRlcgogICAgIHJldHVybiBOU01ha2VSZWN0KHdpbmRv
d09yaWdpbi54LCB3aW5kb3dPcmlnaW4ueSwgc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQpOwogfQog
CitzdGF0aWMgTlNTdHJpbmcgKnN0cmlwVHJhaWxpbmdTcGFjZXMoTlNTdHJpbmcgKnN0cmluZykK
K3sKKyAgICBhdXRvIHJlc3VsdCA9IFtzdHJpbmcgc3RyaW5nQnlSZXBsYWNpbmdPY2N1cnJlbmNl
c09mU3RyaW5nOkAiICtcbiIgd2l0aFN0cmluZzpAIlxuIiBvcHRpb25zOk5TUmVndWxhckV4cHJl
c3Npb25TZWFyY2ggcmFuZ2U6TlNNYWtlUmFuZ2UoMCwgc3RyaW5nLmxlbmd0aCldOworICAgIHJl
dHVybiBbcmVzdWx0IHN0cmluZ0J5UmVwbGFjaW5nT2NjdXJyZW5jZXNPZlN0cmluZzpAIiArJCIg
d2l0aFN0cmluZzpAIiIgb3B0aW9uczpOU1JlZ3VsYXJFeHByZXNzaW9uU2VhcmNoIHJhbmdlOk5T
TWFrZVJhbmdlKDAsIHJlc3VsdC5sZW5ndGgpXTsKK30KKworc3RhdGljIE5TU3RyaW5nICphZGRM
ZWFkaW5nU3BhY2VTdHJpcFRyYWlsaW5nU3BhY2VzKE5TU3RyaW5nICpzdHJpbmcpCit7CisgICAg
YXV0byByZXN1bHQgPSBzdHJpcFRyYWlsaW5nU3BhY2VzKHN0cmluZyk7CisgICAgcmV0dXJuIChy
ZXN1bHQubGVuZ3RoICYmICFbcmVzdWx0IGhhc1ByZWZpeDpAIlxuIl0pID8gW0AiICIgc3RyaW5n
QnlBcHBlbmRpbmdTdHJpbmc6cmVzdWx0XSA6IHJlc3VsdDsKK30KKwogLSAodm9pZCl3ZWJWaWV3
OihXZWJWaWV3ICopc2VuZGVyIGFkZE1lc3NhZ2VUb0NvbnNvbGU6KE5TRGljdGlvbmFyeSAqKWRp
Y3Rpb25hcnkgd2l0aFNvdXJjZTooTlNTdHJpbmcgKilzb3VyY2UKIHsKICAgICBpZiAoZG9uZSkK
QEAgLTg3LDkgKzk5LDcgQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGFkZE1l
c3NhZ2VUb0NvbnNvbGU6KE5TRGljdGlvbmFyeSAqKWRpY3Rpb25hcnkKICAgICBpZiAocmFuZ2Uu
bG9jYXRpb24gIT0gTlNOb3RGb3VuZCkKICAgICAgICAgbWVzc2FnZSA9IFtbbWVzc2FnZSBzdWJz
dHJpbmdUb0luZGV4OnJhbmdlLmxvY2F0aW9uXSBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzpbW21l
c3NhZ2Ugc3Vic3RyaW5nRnJvbUluZGV4Ok5TTWF4UmFuZ2UocmFuZ2UpXSBsYXN0UGF0aENvbXBv
bmVudF1dOwogCi0gICAgYXV0byBvdXQgPSBnVGVzdFJ1bm5lci0+ZHVtcEpTQ29uc29sZUxvZ0lu
U3RkRXJyKCkgPyBzdGRlcnIgOiBzdGRvdXQ7Ci0gICAgZnByaW50ZihvdXQsICJDT05TT0xFIE1F
U1NBR0U6ICIpOwotICAgIGZwcmludGYob3V0LCAiJXNcbiIsIFttZXNzYWdlIFVURjhTdHJpbmdd
KTsKKyAgICBmcHJpbnRmKGdUZXN0UnVubmVyLT5kdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIoKSA/
IHN0ZGVyciA6IHN0ZG91dCwgIkNPTlNPTEUgTUVTU0FHRTolc1xuIiwgYWRkTGVhZGluZ1NwYWNl
U3RyaXBUcmFpbGluZ1NwYWNlcyhtZXNzYWdlKS5VVEY4U3RyaW5nID86ICIgKG51bGwpIik7CiB9
CiAKIC0gKHZvaWQpbW9kYWxXaW5kb3dXaWxsQ2xvc2U6KE5TTm90aWZpY2F0aW9uICopbm90aWZp
Y2F0aW9uCkBAIC0xMTMsNyArMTIzLDcgQEAgLSAodm9pZCl3ZWJWaWV3UnVuTW9kYWw6KFdlYlZp
ZXcgKilzZW5kZXIKIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBydW5KYXZhU2Ny
aXB0QWxlcnRQYW5lbFdpdGhNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2UgaW5pdGlhdGVkQnlG
cmFtZTooV2ViRnJhbWUgKilmcmFtZQogewogICAgIGlmICghZG9uZSkgewotICAgICAgICBwcmlu
dGYoIkFMRVJUOiAlc1xuIiwgW21lc3NhZ2UgVVRGOFN0cmluZ10pOworICAgICAgICBwcmludGYo
IkFMRVJUOiVzXG4iLCBhZGRMZWFkaW5nU3BhY2VTdHJpcFRyYWlsaW5nU3BhY2VzKG1lc3NhZ2Up
LlVURjhTdHJpbmcgPzogIiAobnVsbCkiKTsKICAgICAgICAgZmZsdXNoKHN0ZG91dCk7CiAgICAg
fQogfQpAQCAtMTIxLDIyICsxMzEsMjEgQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2Vu
ZGVyIHJ1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1lc3NhZ2U6KE5TU3RyaW5nICoKIC0gKEJP
T0wpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBydW5KYXZhU2NyaXB0Q29uZmlybVBhbmVsV2l0
aE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZSBpbml0aWF0ZWRCeUZyYW1lOihXZWJGcmFtZSAq
KWZyYW1lCiB7CiAgICAgaWYgKCFkb25lKQotICAgICAgICBwcmludGYoIkNPTkZJUk06ICVzXG4i
LCBbbWVzc2FnZSBVVEY4U3RyaW5nXSk7CisgICAgICAgIHByaW50ZigiQ09ORklSTTolc1xuIiwg
YWRkTGVhZGluZ1NwYWNlU3RyaXBUcmFpbGluZ1NwYWNlcyhtZXNzYWdlKS5VVEY4U3RyaW5nID86
ICIgKG51bGwpIik7CiAgICAgcmV0dXJuIFlFUzsKIH0KIAogLSAoTlNTdHJpbmcgKil3ZWJWaWV3
OihXZWJWaWV3ICopc2VuZGVyIHJ1bkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbFdpdGhQcm9tcHQ6
KE5TU3RyaW5nICopcHJvbXB0IGRlZmF1bHRUZXh0OihOU1N0cmluZyAqKWRlZmF1bHRUZXh0IGlu
aXRpYXRlZEJ5RnJhbWU6KFdlYkZyYW1lICopZnJhbWUKIHsKICAgICBpZiAoIWRvbmUpCi0gICAg
ICAgIHByaW50ZigiUFJPTVBUOiAlcywgZGVmYXVsdCB0ZXh0OiAlc1xuIiwgW3Byb21wdCBVVEY4
U3RyaW5nXSwgW2RlZmF1bHRUZXh0IFVURjhTdHJpbmddKTsKKyAgICAgICAgcHJpbnRmKCJQUk9N
UFQ6ICVzLCBkZWZhdWx0IHRleHQ6JXNcbiIsIHByb21wdC5VVEY4U3RyaW5nLCBhZGRMZWFkaW5n
U3BhY2VTdHJpcFRyYWlsaW5nU3BhY2VzKGRlZmF1bHRUZXh0KS5VVEY4U3RyaW5nID86ICIgKG51
bGwpIik7CiAgICAgcmV0dXJuIGRlZmF1bHRUZXh0OwogfQogCiAtIChCT09MKXdlYlZpZXc6KFdl
YlZpZXcgKiljIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlOihOU1N0cmlu
ZyAqKW1lc3NhZ2UgaW5pdGlhdGVkQnlGcmFtZTooV2ViRnJhbWUgKilmcmFtZQogewogICAgIGlm
ICghZG9uZSkKLSAgICAgICAgcHJpbnRmKCJDT05GSVJNIE5BVklHQVRJT046ICVzXG4iLCBbbWVz
c2FnZSBVVEY4U3RyaW5nXSk7Ci0gICAgCisgICAgICAgIHByaW50ZigiQ09ORklSTSBOQVZJR0FU
SU9OOiVzXG4iLCBhZGRMZWFkaW5nU3BhY2VTdHJpcFRyYWlsaW5nU3BhY2VzKG1lc3NhZ2UpLlVU
RjhTdHJpbmcgPzogIiAobnVsbCkiKTsKICAgICByZXR1cm4gIWdUZXN0UnVubmVyLT5zaG91bGRT
dGF5T25QYWdlQWZ0ZXJIYW5kbGluZ0JlZm9yZVVubG9hZCgpOwogfQogCkBAIC0yMzUsNyArMjQ0
LDcgQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGV4Y2VlZGVkQXBwbGljYXRp
b25DYWNoZU9yaWdpblF1b3RhRm9yU2VjdXJpdHkKIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAq
KXNlbmRlciBzZXRTdGF0dXNUZXh0OihOU1N0cmluZyAqKXRleHQKIHsKICAgICBpZiAoIWRvbmUg
JiYgZ1Rlc3RSdW5uZXItPmR1bXBTdGF0dXNDYWxsYmFja3MoKSkKLSAgICAgICAgcHJpbnRmKCJV
SSBERUxFR0FURSBTVEFUVVMgQ0FMTEJBQ0s6IHNldFN0YXR1c1RleHQ6JXNcbiIsIFt0ZXh0IFVU
RjhTdHJpbmddKTsKKyAgICAgICAgcHJpbnRmKCJVSSBERUxFR0FURSBTVEFUVVMgQ0FMTEJBQ0s6
IHNldFN0YXR1c1RleHQ6JXNcbiIsIHN0cmlwVHJhaWxpbmdTcGFjZXModGV4dCkuVVRGOFN0cmlu
Zyk7CiB9CiAKIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5
Rm9yR2VvbG9jYXRpb25SZXF1ZXN0RnJvbU9yaWdpbjooV2ViU2VjdXJpdHlPcmlnaW4gKilvcmln
aW4gZnJhbWU6KFdlYkZyYW1lICopZnJhbWUgbGlzdGVuZXI6KGlkPFdlYkFsbG93RGVueVBvbGlj
eUxpc3RlbmVyPilsaXN0ZW5lcgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L0R1bXBSZW5kZXJUcmVlLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVy
VHJlZS5jcHAKaW5kZXggNmFlZmMyNWU1NTgzNzUwZTdlNWUzZGNlYmZiNTNmNzFmMTcwNTgyYS4u
ZGQ4MGU0Zjg1ODkxZTM0MzU2NzM2NjdlMTNlMTg2MmIxMWI5ZmExYiAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCkBAIC00ODgsNiArNDg4LDEzIEBAIHN0
YXRpYyB3c3RyaW5nIGR1bXBGcmFtZXNBc1RleHQoSVdlYkZyYW1lKiBmcmFtZSkKICAgICAgICAg
fQogICAgIH0KIAorICAgIC8vIFRvIGtlZXAgdGhpbmdzIHRpZHksIHN0cmlwIGFsbCB0cmFpbGlu
ZyBzcGFjZXM6IHRoZXkgYXJlIG5vdCBhIG1lYW5pbmdmdWwgcGFydCBvZiBkdW1wQXNUZXh0IHRl
c3Qgb3V0cHV0LgorICAgIHN0ZDo6d3N0cmluZzo6c2l6ZV90eXBlIHNwYWNlUG9zaXRpb247Cisg
ICAgd2hpbGUgKChzcGFjZVBvc2l0aW9uID0gcmVzdWx0LmZpbmQoTCIgXG4iKSkgIT0gc3RkOjp3
c3RyaW5nOjpucG9zKQorICAgICAgICByZXN1bHQuZXJhc2Uoc3BhY2VQb3NpdGlvbiwgMSk7Cisg
ICAgd2hpbGUgKCFyZXN1bHQuZW1wdHkoKSAmJiByZXN1bHQuYmFjaygpID09ICcgJykKKyAgICAg
ICAgcmVzdWx0LnBvcF9iYWNrKCk7CisKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuY3BwIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmNwcAppbmRleCA3NTViZWQx
NmY2MGVkYzAxMTE1NTIxZTE1OGMwZGJmMDU1ODhiZjg0Li5mZDc3YWQxYzM5MjYzOGRhOTQxNDNl
ZTdkNWE4MjFlNjk0MTAyMzEzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4v
RnJhbWVMb2FkRGVsZWdhdGUuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFt
ZUxvYWREZWxlZ2F0ZS5jcHAKQEAgLTI5Miw3ICsyOTIsNyBAQCBIUkVTVUxUIEZyYW1lTG9hZERl
bGVnYXRlOjpkaWRGYWlsTG9hZFdpdGhFcnJvcihfSW5fb3B0XyBJV2ViVmlldyosIF9Jbl9vcHRf
IElXZQogSFJFU1VMVCBGcmFtZUxvYWREZWxlZ2F0ZTo6d2lsbFBlcmZvcm1DbGllbnRSZWRpcmVj
dFRvVVJMKF9Jbl9vcHRfIElXZWJWaWV3KiwgX0luXyBCU1RSIHVybCwgZG91YmxlIC8qZGVsYXlT
ZWNvbmRzKi8sIERBVEUgLypmaXJlRGF0ZSovLCBfSW5fb3B0XyBJV2ViRnJhbWUqIGZyYW1lKQog
ewogICAgIGlmICghZG9uZSAmJiBnVGVzdFJ1bm5lci0+ZHVtcEZyYW1lTG9hZENhbGxiYWNrcygp
KQotICAgICAgICBmcHJpbnRmKHRlc3RSZXN1bHQsICIlcyAtIHdpbGxQZXJmb3JtQ2xpZW50UmVk
aXJlY3RUb1VSTDogJVMgXG4iLCBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChmcmFt
ZSkuY19zdHIoKSwKKyAgICAgICAgZnByaW50Zih0ZXN0UmVzdWx0LCAiJXMgLSB3aWxsUGVyZm9y
bUNsaWVudFJlZGlyZWN0VG9VUkw6ICVTXG4iLCBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJl
c3VsdChmcmFtZSkuY19zdHIoKSwKICAgICAgICAgICAgICAgICB1cmxTdWl0YWJsZUZvclRlc3RS
ZXN1bHQoc3RkOjp3c3RyaW5nKHVybCwgOjpTeXNTdHJpbmdMZW4odXJsKSkpLmNfc3RyKCkpOwog
CiAgICAgcmV0dXJuIFNfT0s7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4v
VUlEZWxlZ2F0ZS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVUlEZWxlZ2F0ZS5jcHAK
aW5kZXggOGVkNmY4NDVmOTdlOTkyOTE0MDRmZmY0YTFkNzlhZGRhNmEwYzIxNS4uNzZmMjdkZmJk
YzZhY2RmYWRjMTlmMDY2YjQ3ODlmN2JmZWFhZTc1OCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL1VJRGVsZWdhdGUuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9VSURlbGVnYXRlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDUtMjAwOCwgMjAxNC0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwNS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDUzLDIyICs0NTMsNTQgQEAgSFJFU1VM
VCBVSURlbGVnYXRlOjp3ZWJWaWV3RnJhbWUoX0luX29wdF8gSVdlYlZpZXcqIC8qc2VuZGVyKi8s
IF9PdXRfIFJFQ1QqIGZyYW0KICAgICByZXR1cm4gU19PSzsKIH0KIAotY29uc3Qgd2NoYXJfdCog
dG9NZXNzYWdlKGNvbnN0IEJTVFIgbWVzc2FnZSkKK3N0YXRpYyBzdGQ6OnN0cmluZyBzdHJpcFRy
YWlsaW5nU3BhY2VzKGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHJpbmcpCit7CisgICAgYXV0byByZXN1
bHQgPSBzdHJpbmc7CisgICAgc3RkOjp3c3RyaW5nOjpzaXplX3R5cGUgc3BhY2VQb3NpdGlvbjsK
KyAgICB3aGlsZSAoKHNwYWNlUG9zaXRpb24gPSByZXN1bHQuZmluZCgiIFxuIikpICE9IHN0ZDo6
d3N0cmluZzo6bnBvcykKKyAgICAgICAgcmVzdWx0LmVyYXNlKHNwYWNlUG9zaXRpb24sIDEpOwor
ICAgIHdoaWxlICghcmVzdWx0LmVtcHR5KCkgJiYgcmVzdWx0LmJhY2soKSA9PSAnICcpCisgICAg
ICAgIHJlc3VsdC5wb3BfYmFjaygpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBz
dGQ6OnN0cmluZyBhZGRMZWFkaW5nU3BhY2VTdHJpcFRyYWlsaW5nU3BhY2VzKGNvbnN0IHN0ZDo6
c3RyaW5nJiBzdHJpbmcpCit7CisgICAgYXV0byByZXN1bHQgPSBzdHJpcFRyYWlsaW5nU3BhY2Vz
KHN0cmluZyk7CisgICAgcmV0dXJuIChyZXN1bHQuZW1wdHkoKSB8fCByZXN1bHQuZnJvbnQoKSA9
PSAnXG4nKSA/IHJlc3VsdCA6ICcgJyArIHJlc3VsdDsKK30KKworc3RhdGljIHN0ZDo6c3RyaW5n
IGFkZExlYWRpbmdTcGFjZVN0cmlwVHJhaWxpbmdTcGFjZXMoY29uc3Qgc3RkOjp3c3RyaW5nJiBz
dHJpbmcpCit7CisgICAgcmV0dXJuIGFkZExlYWRpbmdTcGFjZVN0cmlwVHJhaWxpbmdTcGFjZXMo
dG9VVEY4KG1lc3NhZ2UpKTsKK30KKworc3RkOjpzdHJpbmcgdG9NZXNzYWdlKEJTVFIgbWVzc2Fn
ZSkKIHsKICAgICBhdXRvIGxlbmd0aCA9IFN5c1N0cmluZ0xlbihtZXNzYWdlKTsKICAgICBpZiAo
IWxlbmd0aCkKLSAgICAgICAgcmV0dXJuIG1lc3NhZ2U7CisgICAgICAgIHJldHVybiAiIjsKICAg
ICAvLyBSZXR1cm4gIihudWxsKSIgZm9yIGFuIGludmFsaWQgVVRGLTE2IHNlcXVlbmNlIHRvIGFs
aWduIHdpdGggV2ViS2l0VGVzdFJ1bm5lci4KLSAgICBhdXRvIHV0ZjggPSBTdHJpbmdWaWV3KHVj
aGFyRnJvbShtZXNzYWdlKSwgbGVuZ3RoKS50cnlHZXRVdGY4KFN0cmljdENvbnZlcnNpb24pOwot
ICAgIGlmICghdXRmOCkKLSAgICAgICAgcmV0dXJuIEwiKG51bGwpIjsKLSAgICByZXR1cm4gbWVz
c2FnZTsKKyAgICAvLyBGSVhNRTogQ291bGQgcHJvYmFibHkgdGFrZSBhZHZhbnRhZ2Ugb2YgV0Nf
RVJSX0lOVkFMSURfQ0hBUlMgYW5kIGF2b2lkIGNvbnZlcnRpbmcgdG8gVVRGLTggdHdpY2UuCisg
ICAgaWYgKCFTdHJpbmdWaWV3KHVjaGFyRnJvbShtZXNzYWdlKSwgbGVuZ3RoKS50cnlHZXRVdGY4
KFN0cmljdENvbnZlcnNpb24pKQorICAgICAgICByZXR1cm4gIihudWxsKSI7CisgICAgcmV0dXJu
IHRvVVRGOChtZXNzYWdlKTsKK30KKworc3RhdGljIHN0ZDo6c3RyaW5nIGFkZExlYWRpbmdTcGFj
ZVN0cmlwVHJhaWxpbmdTcGFjZXMoQlNUUiBtZXNzYWdlKQoreworICAgIHJldHVybiBhZGRMZWFk
aW5nU3BhY2VTdHJpcFRyYWlsaW5nU3BhY2VzKHRvTWVzc2FnZShtZXNzYWdlKSk7Cit9CisKK3N0
YXRpYyBzdGQ6OnN0cmluZyBzdHJpcFRyYWlsaW5nU3BhY2VzKEJTVFIgbWVzc2FnZSkKK3sKKyAg
ICByZXR1cm4gc3RyaXBUcmFpbGluZ1NwYWNlcyh0b01lc3NhZ2UobWVzc2FnZSkpOwogfQogCiBI
UkVTVUxUIFVJRGVsZWdhdGU6OnJ1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1lc3NhZ2UoX0lu
X29wdF8gSVdlYlZpZXcqIC8qc2VuZGVyKi8sIF9Jbl8gQlNUUiBtZXNzYWdlKQogewogICAgIGlm
ICghZG9uZSkgewotICAgICAgICBmcHJpbnRmKHRlc3RSZXN1bHQsICJBTEVSVDogJVNcbiIsIHRv
TWVzc2FnZShtZXNzYWdlKSk7CisgICAgICAgIGZwcmludGYodGVzdFJlc3VsdCwgIkFMRVJUOiVz
XG4iLCBhZGRMZWFkaW5nU3BhY2VTdHJpcFRyYWlsaW5nU3BhY2VzKG1lc3NhZ2UpLmNfc3RyKCkp
OwogICAgICAgICBmZmx1c2godGVzdFJlc3VsdCk7CiAgICAgfQogCkBAIC00NzgsNyArNTEwLDcg
QEAgSFJFU1VMVCBVSURlbGVnYXRlOjpydW5KYXZhU2NyaXB0QWxlcnRQYW5lbFdpdGhNZXNzYWdl
KF9Jbl9vcHRfIElXZWJWaWV3KiAvKnNlbmQKIEhSRVNVTFQgVUlEZWxlZ2F0ZTo6cnVuSmF2YVNj
cmlwdENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlKF9Jbl9vcHRfIElXZWJWaWV3KiAvKnNlbmRlciov
LCBfSW5fIEJTVFIgbWVzc2FnZSwgX091dF8gQk9PTCogcmVzdWx0KQogewogICAgIGlmICghZG9u
ZSkKLSAgICAgICAgZnByaW50Zih0ZXN0UmVzdWx0LCAiQ09ORklSTTogJVNcbiIsIHRvTWVzc2Fn
ZShtZXNzYWdlKSk7CisgICAgICAgIGZwcmludGYodGVzdFJlc3VsdCwgIkNPTkZJUk06JXNcbiIs
IGFkZExlYWRpbmdTcGFjZVN0cmlwVHJhaWxpbmdTcGFjZXMobWVzc2FnZSkuY19zdHIoKSk7CiAK
ICAgICAqcmVzdWx0ID0gVFJVRTsKIApAQCAtNDg4LDcgKzUyMCw3IEBAIEhSRVNVTFQgVUlEZWxl
Z2F0ZTo6cnVuSmF2YVNjcmlwdENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlKF9Jbl9vcHRfIElXZWJW
aWV3KiAvKnNlCiBIUkVTVUxUIFVJRGVsZWdhdGU6OnJ1bkphdmFTY3JpcHRUZXh0SW5wdXRQYW5l
bFdpdGhQcm9tcHQoX0luX29wdF8gSVdlYlZpZXcqIC8qc2VuZGVyKi8sIF9Jbl8gQlNUUiBtZXNz
YWdlLCBfSW5fIEJTVFIgZGVmYXVsdFRleHQsIF9fZGVyZWZfb3B0X291dCBCU1RSKiByZXN1bHQp
CiB7CiAgICAgaWYgKCFkb25lKQotICAgICAgICBmcHJpbnRmKHRlc3RSZXN1bHQsICJQUk9NUFQ6
ICVTLCBkZWZhdWx0IHRleHQ6ICVTXG4iLCB0b01lc3NhZ2UobWVzc2FnZSksIHRvTWVzc2FnZShk
ZWZhdWx0VGV4dCkpOworICAgICAgICBmcHJpbnRmKHRlc3RSZXN1bHQsICJQUk9NUFQ6ICVzLCBk
ZWZhdWx0IHRleHQ6JXNcbiIsIHRvTWVzc2FnZShtZXNzYWdlKS5jX3N0cigpLCBhZGRMZWFkaW5n
U3BhY2VTdHJpcFRyYWlsaW5nU3BhY2VzKGRlZmF1bHRUZXh0KS5jX3N0cigpKTsKIAogICAgICpy
ZXN1bHQgPSBTeXNBbGxvY1N0cmluZyhkZWZhdWx0VGV4dCk7CiAKQEAgLTUwMSw3ICs1MzMsNyBA
QCBIUkVTVUxUIFVJRGVsZWdhdGU6OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNz
YWdlKF9Jbl9vcHRfIElXZWJWaWV3KiAvKgogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCiAg
ICAgaWYgKCFkb25lKQotICAgICAgICBmcHJpbnRmKHRlc3RSZXN1bHQsICJDT05GSVJNIE5BVklH
QVRJT046ICVTXG4iLCB0b01lc3NhZ2UobWVzc2FnZSkpOworICAgICAgICBmcHJpbnRmKHRlc3RS
ZXN1bHQsICJDT05GSVJNIE5BVklHQVRJT046JXNcbiIsIGFkZExlYWRpbmdTcGFjZVN0cmlwVHJh
aWxpbmdTcGFjZXMobWVzc2FnZSkuY19zdHIoKSk7CiAKICAgICAqcmVzdWx0ID0gIWdUZXN0UnVu
bmVyLT5zaG91bGRTdGF5T25QYWdlQWZ0ZXJIYW5kbGluZ0JlZm9yZVVubG9hZCgpOwogCkBAIC01
MjMsOCArNTU1LDcgQEAgSFJFU1VMVCBVSURlbGVnYXRlOjp3ZWJWaWV3QWRkTWVzc2FnZVRvQ29u
c29sZShfSW5fb3B0XyBJV2ViVmlldyogLypzZW5kZXIqLywgX0kKICAgICB9CiAKICAgICBhdXRv
IG91dCA9IGdUZXN0UnVubmVyLT5kdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIoKSA/IHN0ZGVyciA6
IHRlc3RSZXN1bHQ7Ci0gICAgZnByaW50ZihvdXQsICJDT05TT0xFIE1FU1NBR0U6ICIpOwotICAg
IGZwcmludGYob3V0LCAiJXNcbiIsIHRvVVRGOChuZXdNZXNzYWdlKS5jX3N0cigpKTsKKyAgICBm
cHJpbnRmKG91dCwgIkNPTlNPTEUgTUVTU0FHRTolc1xuIiwgYWRkTGVhZGluZ1NwYWNlU3RyaXBU
cmFpbGluZ1NwYWNlcyhuZXdNZXNzYWdlKS5jX3N0cigpKTsKICAgICByZXR1cm4gU19PSzsKIH0K
IApAQCAtNjczLDcgKzcwNCw3IEBAIEhSRVNVTFQgVUlEZWxlZ2F0ZTo6d2ViVmlld0RpZEludmFs
aWRhdGUoX0luX29wdF8gSVdlYlZpZXcqIC8qc2VuZGVyKi8pCiBIUkVTVUxUIFVJRGVsZWdhdGU6
OnNldFN0YXR1c1RleHQoX0luX29wdF8gSVdlYlZpZXcqLCBfSW5fIEJTVFIgdGV4dCkKIHsKICAg
ICBpZiAoIWRvbmUgJiYgZ1Rlc3RSdW5uZXItPmR1bXBTdGF0dXNDYWxsYmFja3MoKSkKLSAgICAg
ICAgZnByaW50Zih0ZXN0UmVzdWx0LCAiVUkgREVMRUdBVEUgU1RBVFVTIENBTExCQUNLOiBzZXRT
dGF0dXNUZXh0OiVTXG4iLCB0b01lc3NhZ2UodGV4dCkpOworICAgICAgICBmcHJpbnRmKHRlc3RS
ZXN1bHQsICJVSSBERUxFR0FURSBTVEFUVVMgQ0FMTEJBQ0s6IHNldFN0YXR1c1RleHQ6JXNcbiIs
IHN0cmlwVHJhaWxpbmdTcGFjZXModGV4dCkuY19zdHIoKSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9
CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5IGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkKaW5kZXggNzU1NzA5NDZjNzkxYzJkMmQy
MTY2ZjYxYTJlOWNkYjlkNDM0N2IzMy4uMzNhOWE2YjA1MDg0Mzk5NzE2MWFmMGJkNGFlMDQwODBh
MGQyMzMzZCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkK
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkKQEAgLTMwMCw2ICszMDAs
OSBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAogICAg
IGRlZiBkb190ZXh0X3Jlc3VsdHNfZGlmZmVyKHNlbGYsIGV4cGVjdGVkX3RleHQsIGFjdHVhbF90
ZXh0KToKKyAgICAgICAgIyBJZ25vcmUgdHJhaWxpbmcgc3BhY2VzIGluIGV4cGVjdGVkIGZpbGVz
LiBXZSB3aWxsIHJlbW92ZSB0aGlzIGNvZGUgYWZ0ZXIgcmVtb3ZpbmcgdHJhaWxpbmcgc3BhY2Vz
IGZyb20gYWxsIGV4cGVjdGVkLnR4dCBmaWxlcy4KKyAgICAgICAgaWYgbm90IGV4cGVjdGVkX3Rl
eHQuc3RhcnRzd2l0aCgiPD94bWwiKToKKyAgICAgICAgICAgIGV4cGVjdGVkX3RleHQgPSByZS5j
b21waWxlKCIgKyQiLCByZS5NVUxUSUxJTkUpLnN1YigiIiwgZXhwZWN0ZWRfdGV4dCkKICAgICAg
ICAgcmV0dXJuIGV4cGVjdGVkX3RleHQgIT0gYWN0dWFsX3RleHQKIAogICAgIGRlZiBkb19hdWRp
b19yZXN1bHRzX2RpZmZlcihzZWxmLCBleHBlY3RlZF9hdWRpbywgYWN0dWFsX2F1ZGlvKToKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC93aW4ucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3BvcnQvd2luLnB5CmluZGV4IDcwMzljYjUyYzNkMWVmNzNhZWFkZjJkMTMy
NmEzMmZlNWViNDdhMjIuLjE0YzMyNTRmYjhlMDUyNWMzZWQwODE1Mjk2NmU4MmJmZmMxZDJkMTYg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC93aW4ucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3dpbi5weQpAQCAtMTAzLDE4ICsxMDMsMTQgQEAgY2xh
c3MgV2luUG9ydChBcHBsZVBvcnQpOgogICAgICAgICAgICAgc2VsZi5fb3NfdmVyc2lvbiA9IHNl
bGYuaG9zdC5wbGF0Zm9ybS5vc192ZXJzaW9uCiAKICAgICBkZWYgZG9fdGV4dF9yZXN1bHRzX2Rp
ZmZlcihzZWxmLCBleHBlY3RlZF90ZXh0LCBhY3R1YWxfdGV4dCk6Ci0gICAgICAgICMgU2FuaXR5
IHdhcyByZXN0b3JlZCBpbiBXSzIsIHNvIHdlIGRvbid0IG5lZWQgdGhpcyBoYWNrIHRoZXJlLgot
ICAgICAgICBpZiBzZWxmLmdldF9vcHRpb24oJ3dlYmtpdF90ZXN0X3J1bm5lcicpOgotICAgICAg
ICAgICAgcmV0dXJuIEFwcGxlUG9ydC5kb190ZXh0X3Jlc3VsdHNfZGlmZmVyKHNlbGYsIGV4cGVj
dGVkX3RleHQsIGFjdHVhbF90ZXh0KQotCi0gICAgICAgICMgVGhpcyBpcyBhIGhhY2sgKHdoaWNo
IGRhdGVzIGJhY2sgdG8gT1JXVCkuCi0gICAgICAgICMgV2luZG93cyBkb2VzIG5vdCBoYXZlIGFu
IEVESVRJTkcgREVMRUdBVEUsIHNvIHdlIHN0cmlwIGFueSBFRElUSU5HIERFTEVHQVRFCi0gICAg
ICAgICMgbWVzc2FnZXMgdG8gbWFrZSBtb3JlIG9mIHRoZSB0ZXN0cyBwYXNzLgotICAgICAgICAj
IEl0J3MgcG9zc2libGUgbW9yZSBvZiB0aGUgcG9ydHMgbWlnaHQgd2FudCB0aGlzIGFuZCB0aGlz
IGNvdWxkIG1vdmUgZG93biBpbnRvIFdlYktpdFBvcnQuCi0gICAgICAgIGRlbGVnYXRlX3JlZ2V4
cCA9IHJlLmNvbXBpbGUoIl5FRElUSU5HIERFTEVHQVRFOiAuKj9cbiIsIHJlLk1VTFRJTElORSkK
LSAgICAgICAgZXhwZWN0ZWRfdGV4dCA9IGRlbGVnYXRlX3JlZ2V4cC5zdWIoIiIsIGV4cGVjdGVk
X3RleHQpCi0gICAgICAgIGFjdHVhbF90ZXh0ID0gZGVsZWdhdGVfcmVnZXhwLnN1YigiIiwgYWN0
dWFsX3RleHQpCi0gICAgICAgIHJldHVybiBleHBlY3RlZF90ZXh0ICE9IGFjdHVhbF90ZXh0Cisg
ICAgICAgICMgU2FuaXR5IHdhcyByZXN0b3JlZCBpbiBXZWJLaXRUZXN0UnVubmVyLCBzbyB3ZSBk
b24ndCBuZWVkIHRoaXMgaGFjayB0aGVyZS4KKyAgICAgICAgaWYgbm90IHNlbGYuZ2V0X29wdGlv
bignd2Via2l0X3Rlc3RfcnVubmVyJyk6CisgICAgICAgICAgICAjIFdpbmRvd3MgZG9lcyBub3Qg
aGF2ZSBhbiBFRElUSU5HIERFTEVHQVRFLCBzbyBzdHJpcCB0aG9zZSBtZXNzYWdlcyB0byBtYWtl
IG1vcmUgdGVzdHMgcGFzcy4KKyAgICAgICAgICAgICMgSXQncyBwb3NzaWJsZSBvdGhlciBwb3J0
cyBtaWdodCB3YW50IHRoaXMsIGFuZCBpZiBzbywgdGhpcyBjb3VsZCBtb3ZlIGRvd24gaW50byBX
ZWJLaXRQb3J0LgorICAgICAgICAgICAgZGVsZWdhdGVfcmVnZXhwID0gcmUuY29tcGlsZSgiXkVE
SVRJTkcgREVMRUdBVEU6IC4qP1xuIiwgcmUuTVVMVElMSU5FKQorICAgICAgICAgICAgZXhwZWN0
ZWRfdGV4dCA9IGRlbGVnYXRlX3JlZ2V4cC5zdWIoIiIsIGV4cGVjdGVkX3RleHQpCisgICAgICAg
ICAgICBhY3R1YWxfdGV4dCA9IGRlbGVnYXRlX3JlZ2V4cC5zdWIoIiIsIGFjdHVhbF90ZXh0KQor
ICAgICAgICByZXR1cm4gQXBwbGVQb3J0LmRvX3RleHRfcmVzdWx0c19kaWZmZXIoc2VsZiwgZXhw
ZWN0ZWRfdGV4dCwgYWN0dWFsX3RleHQpCiAKICAgICBkZWYgZGVmYXVsdF9iYXNlbGluZV9zZWFy
Y2hfcGF0aChzZWxmLCAqKmt3YXJncyk6CiAgICAgICAgIHZlcnNpb25fbmFtZV9tYXAgPSBWZXJz
aW9uTmFtZU1hcC5tYXAoc2VsZi5ob3N0LnBsYXRmb3JtKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3Bw
CmluZGV4IGI2NDBmZjI4YWU3NWZkNjE4MDAzYmY2Zjc1MmUwNWNiMTMwNjM2NzIuLmQ4OWZlYWY5
YjZkYWU0Yzk2ODUzMWYwYWI2Mzg1ODkxYjE0Zjk4ZjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5j
cHAKQEAgLTgzNCwxNyArODM0LDIyIEBAIHN0YXRpYyBib29sIGhhc0RvY3VtZW50RWxlbWVudChX
S0J1bmRsZUZyYW1lUmVmIGZyYW1lKQogICAgIHJldHVybiBKU1ZhbHVlVG9Cb29sZWFuKGNvbnRl
eHQsIGRvY3VtZW50RWxlbWVudFZhbHVlKTsKIH0KIAotc3RhdGljIHZvaWQgZHVtcEZyYW1lVGV4
dChXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBTdHJpbmdCdWlsZGVyJiBzdHJpbmdCdWlsZGVyKQor
c3RhdGljIHZvaWQgZHVtcEZyYW1lVGV4dChXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBTdHJpbmdC
dWlsZGVyJiBidWlsZGVyKQogewogICAgIC8vIElmIHRoZSBmcmFtZSBkb2Vzbid0IGhhdmUgYSBk
b2N1bWVudCBlbGVtZW50LCBpdHMgaW5uZXIgdGV4dCB3aWxsIGJlIGFuIGVtcHR5IHN0cmluZywg
c28KLSAgICAvLyB3ZSdsbCBlbmQgdXAganVzdCBhcHBlbmRpbmcgYSBzaW5nbGUgbmV3bGluZSBi
ZWxvdy4gQnV0IER1bXBSZW5kZXJUcmVlIGRvZXNuJ3QgYXBwZW5kCi0gICAgLy8gYW55dGhpbmcg
aW4gdGhpcyBjYXNlLCBzbyB3ZSBzaG91bGRuJ3QgZWl0aGVyLgorICAgIC8vIHdlJ2xsIGVuZCB1
cCBqdXN0IGFwcGVuZGluZyBhIHNpbmdsZSBuZXdsaW5lIGJlbG93LiBTaW5jZSBEdW1wUmVuZGVy
VHJlZSBkaWRuJ3QgYXBwZW5kCisgICAgLy8gYW55dGhpbmcgaW4gdGhpcyBjYXNlLCB3ZSBkZWNp
ZGVkIHRvIHByZXNlcnZlIHRoYXQgYmVoYXZpb3IuCiAgICAgaWYgKCFoYXNEb2N1bWVudEVsZW1l
bnQoZnJhbWUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBXS1JldGFpblB0cjxXS1N0cmluZ1Jl
Zj4gdGV4dCA9IGFkb3B0V0soV0tCdW5kbGVGcmFtZUNvcHlJbm5lclRleHQoZnJhbWUpKTsKLSAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh0b1dURlN0cmluZyh0ZXh0KSk7Ci0gICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoJ1xuJyk7CisgICAgLy8gVG8ga2VlcCB0aGluZ3MgdGlkeSwgc3RyaXAgYWxs
IHRyYWlsaW5nIHNwYWNlczogdGhleSBhcmUgbm90IGEgbWVhbmluZ2Z1bCBwYXJ0IG9mIGR1bXBB
c1RleHQgdGVzdCBvdXRwdXQuCisgICAgLy8gQnJlYWtpbmcgdGhlIHN0cmluZyB1cCBpbnRvIGxp
bmVzIGxldHMgdXMgZWZmaWNpZW50bHkgc3RyaXAgYW5kIGhhcyBhIHNpZGUgZWZmZWN0IG9mIGFk
ZGluZyBhIG5ld2xpbmUgYWZ0ZXIgdGhlIGxhc3QgbGluZS4KKyAgICBhdXRvIHRleHQgPSB0b1dU
RlN0cmluZyhhZG9wdFdLKFdLQnVuZGxlRnJhbWVDb3B5SW5uZXJUZXh0KGZyYW1lKSkpOworICAg
IGZvciAoYXV0byBsaW5lIDogU3RyaW5nVmlldyh0ZXh0KS5zcGxpdEFsbG93aW5nRW1wdHlFbnRy
aWVzKCdcbicpKSB7CisgICAgICAgIHdoaWxlIChsaW5lLmVuZHNXaXRoKCcgJykpCisgICAgICAg
ICAgICBsaW5lID0gbGluZS5zdWJzdHJpbmcoMCwgbGluZS5sZW5ndGgoKSAtIDEpOworICAgICAg
ICBidWlsZGVyLmFwcGVuZChsaW5lLCAnXG4nKTsKKyAgICB9CiB9CiAKIHN0YXRpYyB2b2lkIGR1
bXBEZXNjZW5kYW50RnJhbWVzVGV4dChXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBTdHJpbmdCdWls
ZGVyJiBzdHJpbmdCdWlsZGVyKQpAQCAtMTA1Niw5ICsxMDYxLDcgQEAgdm9pZCBJbmplY3RlZEJ1
bmRsZVBhZ2U6OndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZShXS0J1bmRsZVBhZ2VS
ZWYsIFdLQnUKIAogICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKICAgICBkdW1wRnJh
bWVEZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChmcmFtZSwgc3RyaW5nQnVpbGRlcik7
Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgLSB3aWxsUGVyZm9ybUNsaWVudFJl
ZGlyZWN0VG9VUkw6ICIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHBhdGhTdWl0YWJsZUZv
clRlc3RSZXN1bHQodXJsKSk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIgXG4i
KTsKKyAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiIC0gd2lsbFBlcmZvcm1DbGllbnRSZWRpcmVj
dFRvVVJMOiAiLCBwYXRoU3VpdGFibGVGb3JUZXN0UmVzdWx0KHVybCksICdcbicpOwogICAgIGlu
amVjdGVkQnVuZGxlLm91dHB1dFRleHQoc3RyaW5nQnVpbGRlci50b1N0cmluZygpKTsKIH0KIApA
QCAtMTM0NSw3ICsxMzQ4LDcgQEAgV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uIEluamVjdGVkQnVu
ZGxlUGFnZTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXS0IKIAogICAgIGlmIChp
bmplY3RlZEJ1bmRsZS50ZXN0UnVubmVyKCktPnNob3VsZER1bXBQb2xpY3lDYWxsYmFja3MoKSkg
ewogICAgICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIC0gZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiBc
biIpOworICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiAtIGRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb25cbiIpOwogICAgICAgICBkdW1wUmVxdWVzdERlc2NyaXB0aW9u
U3VpdGFibGVGb3JUZXN0UmVzdWx0KHJlcXVlc3QsIHN0cmluZ0J1aWxkZXIpOwogICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBpcyBtYWluIGZyYW1lIC0gIik7CiAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKFdLQnVuZGxlRnJhbWVJc01haW5GcmFtZShmcmFtZSkgPyAi
eWVzIiA6ICJubyIpOwpAQCAtMTQ0OSw2ICsxNDUyLDIzIEBAIHVpbnQ2NF90IEluamVjdGVkQnVu
ZGxlUGFnZTo6ZGlkRXhjZWVkRGF0YWJhc2VRdW90YShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tT
ZWN1CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEluamVjdGVkQnVuZGxlUGFnZSo+KGNvbnN0X2Nh
c3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZGlkRXhjZWVkRGF0YWJhc2VRdW90YShvcmlnaW4sIGRh
dGFiYXNlTmFtZSwgZGF0YWJhc2VEaXNwbGF5TmFtZSwgY3VycmVudFF1b3RhQnl0ZXMsIGN1cnJl
bnRPcmlnaW5Vc2FnZUJ5dGVzLCBjdXJyZW50RGF0YWJhc2VVc2FnZUJ5dGVzLCBleHBlY3RlZFVz
YWdlQnl0ZXMpOwogfQogCitzdGF0aWMgV1RGOjpTdHJpbmcgc3RyaXBUcmFpbGluZ1NwYWNlc0Fk
ZE5ld2xpbmUoY29uc3QgV1RGOjpTdHJpbmcmIHN0cmluZykKK3sKKyAgICBTdHJpbmdCdWlsZGVy
IGJ1aWxkZXI7CisgICAgZm9yIChhdXRvIGxpbmUgOiBTdHJpbmdWaWV3KHN0cmluZykuc3BsaXRB
bGxvd2luZ0VtcHR5RW50cmllcygnXG4nKSkgeworICAgICAgICB3aGlsZSAobGluZS5lbmRzV2l0
aCgnICcpKQorICAgICAgICAgICAgbGluZSA9IGxpbmUuc3Vic3RyaW5nKDAsIGxpbmUubGVuZ3Ro
KCkgLSAxKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQobGluZSwgJ1xuJyk7CisgICAgfQorICAg
IHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK3N0YXRpYyBXVEY6OlN0cmluZyBhZGRM
ZWFkaW5nU3BhY2VTdHJpcFRyYWlsaW5nU3BhY2VzQWRkTmV3bGluZShjb25zdCBXVEY6OlN0cmlu
ZyYgc3RyaW5nKQoreworICAgIGF1dG8gcmVzdWx0ID0gc3RyaXBUcmFpbGluZ1NwYWNlc0FkZE5l
d2xpbmUoc3RyaW5nKTsKKyAgICByZXR1cm4gKHJlc3VsdC5pc0VtcHR5KCkgfHwgcmVzdWx0LnN0
YXJ0c1dpdGgoJ1xuJykpID8gcmVzdWx0IDogbWFrZVN0cmluZygnICcsIHJlc3VsdCk7Cit9CisK
IHN0YXRpYyBXVEY6OlN0cmluZyBsYXN0RmlsZVVSTFBhdGhDb21wb25lbnQoY29uc3QgV1RGOjpT
dHJpbmcmIHBhdGgpCiB7CiAgICAgc2l6ZV90IHBvcyA9IHBhdGguZmluZCgiZmlsZTovLyIpOwpA
QCAtMTQ4NSwxNSArMTUwNSwxMSBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6d2lsbEFkZE1l
c3NhZ2VUb0NvbnNvbGUoV0tTdHJpbmdSZWYgbWVzc2FnZSkKICAgICAgICAgLy8gRklYTUU6IFRo
ZSBjb2RlIGJlbG93IGRvZXMgbm90IGhhbmRsZSBhZGRpdGlvbmFsIHRleHQgYWZ0ZXIgdXJsIG5v
ciBtdWx0aXBsZSB1cmxzLiBUaGlzIG1hdGNoZXMgRHVtcFJlbmRlclRyZWUgaW1wbGVtZW50YXRp
b24uCiAgICAgICAgIG1lc3NhZ2VTdHJpbmcgPSBtZXNzYWdlU3RyaW5nLnN1YnN0cmluZygwLCBm
aWxlUHJvdG9jb2xTdGFydCkgKyBsYXN0RmlsZVVSTFBhdGhDb21wb25lbnQobWVzc2FnZVN0cmlu
Zy5zdWJzdHJpbmcoZmlsZVByb3RvY29sU3RhcnQpKTsKIAotICAgIFN0cmluZ0J1aWxkZXIgc3Ry
aW5nQnVpbGRlcjsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIkNPTlNPTEUgTUVT
U0FHRTogIik7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobWVzc2FnZVN0cmluZyk7Ci0gICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0KKyAgICBtZXNzYWdlU3RyaW5nID0gbWFrZVN0
cmluZygiQ09OU09MRSBNRVNTQUdFOiIsIGFkZExlYWRpbmdTcGFjZVN0cmlwVHJhaWxpbmdTcGFj
ZXNBZGROZXdsaW5lKG1lc3NhZ2VTdHJpbmcpKTsKICAgICBpZiAoaW5qZWN0ZWRCdW5kbGUuZHVt
cEpTQ29uc29sZUxvZ0luU3RkRXJyKCkpCi0gICAgICAgIGluamVjdGVkQnVuZGxlLmR1bXBUb1N0
ZEVycihzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpOworICAgICAgICBpbmplY3RlZEJ1bmRsZS5k
dW1wVG9TdGRFcnIobWVzc2FnZVN0cmluZyk7CiAgICAgZWxzZQotICAgICAgICBpbmplY3RlZEJ1
bmRsZS5vdXRwdXRUZXh0KHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgICAgIGluamVj
dGVkQnVuZGxlLm91dHB1dFRleHQobWVzc2FnZVN0cmluZyk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRC
dW5kbGVQYWdlOjp3aWxsU2V0U3RhdHVzYmFyVGV4dChXS1N0cmluZ1JlZiBzdGF0dXNiYXJUZXh0
KQpAQCAtMTUxOCwxMSArMTUzNCw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjp3aWxsUnVu
SmF2YVNjcmlwdEFsZXJ0KFdLU3RyaW5nUmVmIG1lc3NhZ2UsIFdLQnVuZGxlRnJhCiAgICAgaWYg
KCFpbmplY3RlZEJ1bmRsZS5pc1Rlc3RSdW5uaW5nKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExp
dGVyYWwoIkFMRVJUOiAiKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh0b1dURlN0cmluZyht
ZXNzYWdlKSk7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgaW5qZWN0ZWRC
dW5kbGUub3V0cHV0VGV4dChzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpOworICAgIGluamVjdGVk
QnVuZGxlLm91dHB1dFRleHQobWFrZVN0cmluZygiQUxFUlQ6IiwgYWRkTGVhZGluZ1NwYWNlU3Ry
aXBUcmFpbGluZ1NwYWNlc0FkZE5ld2xpbmUodG9XVEZTdHJpbmcobWVzc2FnZSkpKSk7CiB9CiAK
IHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjp3aWxsUnVuSmF2YVNjcmlwdENvbmZpcm0oV0tTdHJp
bmdSZWYgbWVzc2FnZSwgV0tCdW5kbGVGcmFtZVJlZikKQEAgLTE1MzEsMjIgKzE1NDMsMTIgQEAg
dm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OndpbGxSdW5KYXZhU2NyaXB0Q29uZmlybShXS1N0cmlu
Z1JlZiBtZXNzYWdlLCBXS0J1bmRsZUYKICAgICBpZiAoIWluamVjdGVkQnVuZGxlLmlzVGVzdFJ1
bm5pbmcoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWls
ZGVyOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiQ09ORklSTTogIik7Ci0gICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQodG9XVEZTdHJpbmcobWVzc2FnZSkpOwotICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKCdcbicpOwotICAgIGluamVjdGVkQnVuZGxlLm91dHB1dFRleHQoc3RyaW5n
QnVpbGRlci50b1N0cmluZygpKTsKKyAgICBpbmplY3RlZEJ1bmRsZS5vdXRwdXRUZXh0KG1ha2VT
dHJpbmcoIkNPTkZJUk06IiwgYWRkTGVhZGluZ1NwYWNlU3RyaXBUcmFpbGluZ1NwYWNlc0FkZE5l
d2xpbmUodG9XVEZTdHJpbmcobWVzc2FnZSkpKSk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQ
YWdlOjp3aWxsUnVuSmF2YVNjcmlwdFByb21wdChXS1N0cmluZ1JlZiBtZXNzYWdlLCBXS1N0cmlu
Z1JlZiBkZWZhdWx0VmFsdWUsIFdLQnVuZGxlRnJhbWVSZWYpCiB7Ci0gICAgU3RyaW5nQnVpbGRl
ciBzdHJpbmdCdWlsZGVyOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiUFJPTVBU
OiAiKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCh0b1dURlN0cmluZyhtZXNzYWdlKSk7Ci0g
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCIsIGRlZmF1bHQgdGV4dDogIik7Ci0gICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQodG9XVEZTdHJpbmcoZGVmYXVsdFZhbHVlKSk7Ci0gICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigp
Lm91dHB1dFRleHQoc3RyaW5nQnVpbGRlci50b1N0cmluZygpKTsKKyAgICBJbmplY3RlZEJ1bmRs
ZTo6c2luZ2xldG9uKCkub3V0cHV0VGV4dChtYWtlU3RyaW5nKCJQUk9NUFQ6ICIsIHRvV1RGU3Ry
aW5nKG1lc3NhZ2UpLCAiLCBkZWZhdWx0IHRleHQ6IiwgYWRkTGVhZGluZ1NwYWNlU3RyaXBUcmFp
bGluZ1NwYWNlc0FkZE5ld2xpbmUodG9XVEZTdHJpbmcoZGVmYXVsdFZhbHVlKSkpKTsKIH0KIAog
dm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZFJlYWNoQXBwbGljYXRpb25DYWNoZU9yaWdpblF1
b3RhKFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luLCBpbnQ2NF90IHRvdGFsQnl0ZXNOZWVkZWQp
Cg==
</data>
<flag name="commit-queue"
          id="425611"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409796</attachid>
            <date>2020-09-26 15:46:54 -0700</date>
            <delta_ts>2020-09-26 15:46:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216944-20200926154654.patch</filename>
            <type>text/plain</type>
            <size>26847</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3NjM3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMWM5M2RlYzk5MWNiODlhYjdkNWY5ZjgyOGU1ZmZkY2Nk
OTAzNTViZS4uNjc5ZGE2ZjVjNjA3MTA3OTg2YjI3OTA3ODhmYzI5OWI4MGI4NDUyYiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4
IEBACisyMDIwLTA5LTI1ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAg
ICBDaGFuZ2UgZHVtcEFzVGV4dCB0byBzdHJpcCB0cmFpbGluZyBzcGFjZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjk0NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IEFsYW4gQnVqdGFzLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1
bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAoZHVtcEZyYW1lc0FzVGV4dCk6IFN0cmlwIHRyYWls
aW5nIHNwYWNlcy4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRnJhbWVMb2FkRGVsZWdh
dGUubW06CisgICAgICAgICgtW0ZyYW1lTG9hZERlbGVnYXRlIHdlYlZpZXc6d2lsbFBlcmZvcm1D
bGllbnRSZWRpcmVjdFRvVVJMOmRlbGF5OmZpcmVEYXRlOmZvckZyYW1lOl0pOgorICAgICAgICBE
b24ndCBhZGQgdHJhaWxpbmcgc3BhY2UuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1VJ
RGVsZWdhdGUubW06CisgICAgICAgICgtW1VJRGVsZWdhdGUgd2ViVmlldzphZGRNZXNzYWdlVG9D
b25zb2xlOndpdGhTb3VyY2U6XSk6IERpdHRvLgorICAgICAgICAoYWRkTGVhZGluZ1NwYWNlU3Ry
aXBUcmFpbGluZ1NwYWNlcyk6IEFkZGVkLgorICAgICAgICAoc3RyaXBUcmFpbGluZ1NwYWNlcyk6
IEFkZGVkLgorICAgICAgICAoLVtVSURlbGVnYXRlIHdlYlZpZXc6cnVuSmF2YVNjcmlwdEFsZXJ0
UGFuZWxXaXRoTWVzc2FnZTppbml0aWF0ZWRCeUZyYW1lOl0pOiBEb24ndCBhZGQgdHJhaWxpbmcg
c3BhY2UuCisgICAgICAgICgtW1VJRGVsZWdhdGUgd2ViVmlldzpydW5KYXZhU2NyaXB0Q29uZmly
bVBhbmVsV2l0aE1lc3NhZ2U6aW5pdGlhdGVkQnlGcmFtZTpdKTogRGl0dG8uCisgICAgICAgICgt
W1VJRGVsZWdhdGUgd2ViVmlldzpydW5KYXZhU2NyaXB0VGV4dElucHV0UGFuZWxXaXRoUHJvbXB0
OmRlZmF1bHRUZXh0OmluaXRpYXRlZEJ5RnJhbWU6XSk6IERpdHRvLgorICAgICAgICAoLVtVSURl
bGVnYXRlIHdlYlZpZXc6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsV2l0aE1lc3NhZ2U6aW5p
dGlhdGVkQnlGcmFtZTpdKTogRGl0dG8uCisgICAgICAgICgtW1VJRGVsZWdhdGUgd2ViVmlldzpz
ZXRTdGF0dXNUZXh0Ol0pOiBEaXR0by4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9E
dW1wUmVuZGVyVHJlZS5jcHA6CisgICAgICAgIChkdW1wRnJhbWVzQXNUZXh0KTogU3RyaXAgdHJh
aWxpbmcgc3BhY2VzLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxl
Z2F0ZS5jcHA6CisgICAgICAgIChGcmFtZUxvYWREZWxlZ2F0ZTo6d2lsbFBlcmZvcm1DbGllbnRS
ZWRpcmVjdFRvVVJMKTogRG9uJ3QgYWRkIHRyYWlsaW5nIHNwYWNlLgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL3dpbi9VSURlbGVnYXRlLmNwcDoKKyAgICAgICAgKHRvTWVzc2FnZSk6IENoYW5n
ZWQgdG8gcmV0dXJuIHN0ZDo6d3N0cmluZy4KKyAgICAgICAgKHN0cmlwVHJhaWxpbmdTcGFjZXMp
OiBBZGRlZC4KKyAgICAgICAgKGFkZExlYWRpbmdTcGFjZVN0cmlwVHJhaWxpbmdTcGFjZXMpOiBB
ZGRlZC4KKyAgICAgICAgKFVJRGVsZWdhdGU6OnJ1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1l
c3NhZ2UpOiBEb24ndCBhZGQgdHJhaWxpbmcgc3BhY2UuCisgICAgICAgIChVSURlbGVnYXRlOjpy
dW5KYXZhU2NyaXB0Q29uZmlybVBhbmVsV2l0aE1lc3NhZ2UpOiBEaXR0by4KKyAgICAgICAgKFVJ
RGVsZWdhdGU6OnJ1bkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbFdpdGhQcm9tcHQpOiBEaXR0by4K
KyAgICAgICAgKFVJRGVsZWdhdGU6OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNz
YWdlKTogRGl0dG8uCisgICAgICAgIChVSURlbGVnYXRlOjp3ZWJWaWV3QWRkTWVzc2FnZVRvQ29u
c29sZSk6IERpdHRvLgorICAgICAgICAoVUlEZWxlZ2F0ZTo6c2V0U3RhdHVzVGV4dCk6IERpdHRv
LgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHk6CisgICAgICAgIChQ
b3J0LmRvX3RleHRfcmVzdWx0c19kaWZmZXIpOiBTdHJpcCB0cmFpbGluZyBzcGFjZXMgZnJvbSBl
eHBlY3RlZCB0ZXh0LgorICAgICAgICBQbGFuIGlzIHRvIHJlbW92ZSB0aGlzIGFmdGVyIHN0cmlw
cGluZyB0aGUgYWN0dWFsIGV4cGVjdGVkLnR4dCBmaWxlcy4KKworICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvcG9ydC93aW4ucHk6CisgICAgICAgIChXaW5Qb3J0LmRvX3RleHRfcmVzdWx0c19k
aWZmZXIpOiBDYWxsIHRocm91Z2ggdG8gYmFzZS4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdUUjo6
ZHVtcEZyYW1lVGV4dCk6IFN0cmlwIHRyYWlsaW5nIHNwYWNlcy4KKyAgICAgICAgKFdUUjo6SW5q
ZWN0ZWRCdW5kbGVQYWdlOjp3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0Rm9yRnJhbWUpOiBEb24n
dCBhZGQgdHJhaWxpbmcgc3BhY2UuCisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6IERpdHRvLgorICAgICAgICAoV1RSOjpz
dHJpcFRyYWlsaW5nU3BhY2VzKTogQWRkZWQuCisgICAgICAgIChXVFI6OmFkZExlYWRpbmdTcGFj
ZVN0cmlwVHJhaWxpbmdTcGFjZXMpOiBBZGRlZC4KKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5k
bGVQYWdlOjp3aWxsQWRkTWVzc2FnZVRvQ29uc29sZSk6IERvbid0IGFkZCB0cmFpbGluZyBzcGFj
ZS4KKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjp3aWxsUnVuSmF2YVNjcmlwdEFs
ZXJ0KTogRGl0dG8uCisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6d2lsbFJ1bkph
dmFTY3JpcHRDb25maXJtKTogRGl0dG8uCisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFn
ZTo6d2lsbFJ1bkphdmFTY3JpcHRQcm9tcHQpOiBEaXR0by4KKwogMjAyMC0wOS0yNSAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIHJldmVydGluZyByMjY3NjA4LgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0R1bXBSZW5kZXJUcmVlLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5k
ZXJUcmVlLm1tCmluZGV4IGI3ZjE4MTI3N2M2OTk1MDA5YTE3MjE4YjRlNzQzNTcyNzA4YjMzNmMu
LmQzZDEyYTkwYWZkMjJiOGY5MTNhODQyMzJhODEwMDU1OGZlMjExMDMgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KQEAgLTE1MTUsNiArMTUxNSwxMCBAQCBz
dGF0aWMgTlNTdHJpbmcgKmR1bXBGcmFtZXNBc1RleHQoV2ViRnJhbWUgKmZyYW1lKQogICAgICAg
ICB9CiAgICAgfQogCisgICAgLy8gVG8ga2VlcCB0aGluZ3MgdGlkeSwgc3RyaXAgYWxsIHRyYWls
aW5nIHNwYWNlczogdGhleSBhcmUgbm90IGEgbWVhbmluZ2Z1bCBwYXJ0IG9mIGR1bXBBc1RleHQg
dGVzdCBvdXRwdXQuCisgICAgW3Jlc3VsdCByZXBsYWNlT2NjdXJyZW5jZXNPZlN0cmluZzpAIiAr
XG4iIHdpdGhTdHJpbmc6QCJcbiIgb3B0aW9uczpOU1JlZ3VsYXJFeHByZXNzaW9uU2VhcmNoIHJh
bmdlOk5TTWFrZVJhbmdlKDAsIHJlc3VsdC5sZW5ndGgpXTsKKyAgICBbcmVzdWx0IHJlcGxhY2VP
Y2N1cnJlbmNlc09mU3RyaW5nOkAiICskIiB3aXRoU3RyaW5nOkAiIiBvcHRpb25zOk5TUmVndWxh
ckV4cHJlc3Npb25TZWFyY2ggcmFuZ2U6TlNNYWtlUmFuZ2UoMCwgcmVzdWx0Lmxlbmd0aCldOwor
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbQppbmRleCBjYTNlNmQwYWQ4M2JmZTllZDUxYzNk
MWU0MTQ4ZTU5OWFmZmU2YTkwLi44Mjc1MWJjNWI3NDE3MTU1Y2U1YjU0NGFjODcwYTZjOWRkM2Ri
MjEzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29u
dHJvbGxlci5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29u
dHJvbGxlci5tbQpAQCAtMTI3MCw3ICsxMjcwLDggQEAgLSAodm9pZCloYW5kbGVFdmVudDooRE9N
RXZlbnQgKilldmVudAogICAgIH0KICAgICAKICAgICBpZiAoW2V2ZW50IGlzS2luZE9mQ2xhc3M6
W0RPTUtleWJvYXJkRXZlbnQgY2xhc3NdXSkgewotICAgICAgICBwcmludGYoIiAga2V5SWRlbnRp
ZmllcjogJXNcbiIsIFtbKERPTUtleWJvYXJkRXZlbnQqKWV2ZW50IGtleUlkZW50aWZpZXJdIFVU
RjhTdHJpbmddKTsKKyAgICAgICAgYXV0byBrZXlJZGVudGlmaWVyID0gWyhET01LZXlib2FyZEV2
ZW50KilldmVudCBrZXlJZGVudGlmaWVyXTsKKyAgICAgICAgcHJpbnRmKCIgIGtleUlkZW50aWZp
ZXI6JXMlc1xuIiwga2V5SWRlbnRpZmllci5sZW5ndGggPyAiICIgOiAiIiwgW2tleUlkZW50aWZp
ZXIgVVRGOFN0cmluZ10pOwogICAgICAgICBwcmludGYoIiAga2V5TG9jYXRpb246ICAgJWRcbiIs
IFsoRE9NS2V5Ym9hcmRFdmVudCopZXZlbnQgbG9jYXRpb25dKTsKICAgICAgICAgcHJpbnRmKCIg
IG1vZGlmaWVyIGtleXM6IGM6JWQgczolZCBhOiVkIG06JWRcbiIsIAogICAgICAgICAgICAgICAg
WyhET01LZXlib2FyZEV2ZW50KilldmVudCBjdHJsS2V5XSA/IDEgOiAwLCAKZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9GcmFtZUxvYWREZWxlZ2F0ZS5tbSBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9GcmFtZUxvYWREZWxlZ2F0ZS5tbQppbmRleCBiMzhmNGQzN2YwNjcx
NTM1MWM4OWE4NmZlODIwOGI3NmYyMTVhYTdlLi4zNjcxNDkzOWZkYTBhNTY3NDljNzk5ODg2YTFl
YTQzODkyMTg5YTRhIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRnJhbWVM
b2FkRGVsZWdhdGUubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0ZyYW1lTG9hZERl
bGVnYXRlLm1tCkBAIC00MTIsNyArNDEyLDcgQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICop
c2VuZGVyIGRpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZUZvckZyYW1lOihXZWJGcmFtZQogLSAo
dm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RU
b1VSTDooTlNVUkwgKilVUkwgZGVsYXk6KE5TVGltZUludGVydmFsKXNlY29uZHMgZmlyZURhdGU6
KE5TRGF0ZSAqKWRhdGUgZm9yRnJhbWU6KFdlYkZyYW1lICopZnJhbWUKIHsKICAgICBpZiAoIWRv
bmUgJiYgZ1Rlc3RSdW5uZXItPmR1bXBGcmFtZUxvYWRDYWxsYmFja3MoKSkgewotICAgICAgICBO
U1N0cmluZyAqc3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCAtIHdpbGxQ
ZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VSTDogJUAgIiwgW2ZyYW1lIF9kcnRfZGVzY3JpcHRpb25T
dWl0YWJsZUZvclRlc3RSZXN1bHRdLCBbVVJMIF9kcnRfZGVzY3JpcHRpb25TdWl0YWJsZUZvclRl
c3RSZXN1bHRdXTsKKyAgICAgICAgTlNTdHJpbmcgKnN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdX
aXRoRm9ybWF0OkAiJUAgLSB3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkw6ICVAIiwgW2Zy
YW1lIF9kcnRfZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHRdLCBbVVJMIF9kcnRfZGVz
Y3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHRdXTsKICAgICAgICAgcHJpbnRmICgiJXNcbiIs
IFtzdHJpbmcgVVRGOFN0cmluZ10pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlE
ZWxlZ2F0ZS5tbQppbmRleCBmNjk5NTU1MWUwY2RhMTBkNGIyYjc5ZjkyYmE2ZGEzNGJlMzU3Yjg4
Li5hZDNjYTQyMWM1OGE4MjlhZjc2OTkxZTg4ZGRjZmM4ODhlNmM1NDdlIDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbQorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbQpAQCAtNzYsNiArNzYsMTggQEAgLSAoTlNSZWN0KXdl
YlZpZXdGcmFtZTooV2ViVmlldyAqKXNlbmRlcgogICAgIHJldHVybiBOU01ha2VSZWN0KHdpbmRv
d09yaWdpbi54LCB3aW5kb3dPcmlnaW4ueSwgc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQpOwogfQog
CitzdGF0aWMgTlNTdHJpbmcgKnN0cmlwVHJhaWxpbmdTcGFjZXMoTlNTdHJpbmcgKnN0cmluZykK
K3sKKyAgICBhdXRvIHJlc3VsdCA9IFtzdHJpbmcgc3RyaW5nQnlSZXBsYWNpbmdPY2N1cnJlbmNl
c09mU3RyaW5nOkAiICtcbiIgd2l0aFN0cmluZzpAIlxuIiBvcHRpb25zOk5TUmVndWxhckV4cHJl
c3Npb25TZWFyY2ggcmFuZ2U6TlNNYWtlUmFuZ2UoMCwgc3RyaW5nLmxlbmd0aCldOworICAgIHJl
dHVybiBbcmVzdWx0IHN0cmluZ0J5UmVwbGFjaW5nT2NjdXJyZW5jZXNPZlN0cmluZzpAIiArJCIg
d2l0aFN0cmluZzpAIiIgb3B0aW9uczpOU1JlZ3VsYXJFeHByZXNzaW9uU2VhcmNoIHJhbmdlOk5T
TWFrZVJhbmdlKDAsIHJlc3VsdC5sZW5ndGgpXTsKK30KKworc3RhdGljIE5TU3RyaW5nICphZGRM
ZWFkaW5nU3BhY2VTdHJpcFRyYWlsaW5nU3BhY2VzKE5TU3RyaW5nICpzdHJpbmcpCit7CisgICAg
YXV0byByZXN1bHQgPSBzdHJpcFRyYWlsaW5nU3BhY2VzKHN0cmluZyk7CisgICAgcmV0dXJuIChy
ZXN1bHQubGVuZ3RoICYmICFbcmVzdWx0IGhhc1ByZWZpeDpAIlxuIl0pID8gW0AiICIgc3RyaW5n
QnlBcHBlbmRpbmdTdHJpbmc6cmVzdWx0XSA6IHJlc3VsdDsKK30KKwogLSAodm9pZCl3ZWJWaWV3
OihXZWJWaWV3ICopc2VuZGVyIGFkZE1lc3NhZ2VUb0NvbnNvbGU6KE5TRGljdGlvbmFyeSAqKWRp
Y3Rpb25hcnkgd2l0aFNvdXJjZTooTlNTdHJpbmcgKilzb3VyY2UKIHsKICAgICBpZiAoZG9uZSkK
QEAgLTg3LDkgKzk5LDcgQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGFkZE1l
c3NhZ2VUb0NvbnNvbGU6KE5TRGljdGlvbmFyeSAqKWRpY3Rpb25hcnkKICAgICBpZiAocmFuZ2Uu
bG9jYXRpb24gIT0gTlNOb3RGb3VuZCkKICAgICAgICAgbWVzc2FnZSA9IFtbbWVzc2FnZSBzdWJz
dHJpbmdUb0luZGV4OnJhbmdlLmxvY2F0aW9uXSBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzpbW21l
c3NhZ2Ugc3Vic3RyaW5nRnJvbUluZGV4Ok5TTWF4UmFuZ2UocmFuZ2UpXSBsYXN0UGF0aENvbXBv
bmVudF1dOwogCi0gICAgYXV0byBvdXQgPSBnVGVzdFJ1bm5lci0+ZHVtcEpTQ29uc29sZUxvZ0lu
U3RkRXJyKCkgPyBzdGRlcnIgOiBzdGRvdXQ7Ci0gICAgZnByaW50ZihvdXQsICJDT05TT0xFIE1F
U1NBR0U6ICIpOwotICAgIGZwcmludGYob3V0LCAiJXNcbiIsIFttZXNzYWdlIFVURjhTdHJpbmdd
KTsKKyAgICBmcHJpbnRmKGdUZXN0UnVubmVyLT5kdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIoKSA/
IHN0ZGVyciA6IHN0ZG91dCwgIkNPTlNPTEUgTUVTU0FHRTolc1xuIiwgYWRkTGVhZGluZ1NwYWNl
U3RyaXBUcmFpbGluZ1NwYWNlcyhtZXNzYWdlKS5VVEY4U3RyaW5nID86ICIgKG51bGwpIik7CiB9
CiAKIC0gKHZvaWQpbW9kYWxXaW5kb3dXaWxsQ2xvc2U6KE5TTm90aWZpY2F0aW9uICopbm90aWZp
Y2F0aW9uCkBAIC0xMTMsNyArMTIzLDcgQEAgLSAodm9pZCl3ZWJWaWV3UnVuTW9kYWw6KFdlYlZp
ZXcgKilzZW5kZXIKIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBydW5KYXZhU2Ny
aXB0QWxlcnRQYW5lbFdpdGhNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2UgaW5pdGlhdGVkQnlG
cmFtZTooV2ViRnJhbWUgKilmcmFtZQogewogICAgIGlmICghZG9uZSkgewotICAgICAgICBwcmlu
dGYoIkFMRVJUOiAlc1xuIiwgW21lc3NhZ2UgVVRGOFN0cmluZ10pOworICAgICAgICBwcmludGYo
IkFMRVJUOiVzXG4iLCBhZGRMZWFkaW5nU3BhY2VTdHJpcFRyYWlsaW5nU3BhY2VzKG1lc3NhZ2Up
LlVURjhTdHJpbmcgPzogIiAobnVsbCkiKTsKICAgICAgICAgZmZsdXNoKHN0ZG91dCk7CiAgICAg
fQogfQpAQCAtMTIxLDIyICsxMzEsMjEgQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2Vu
ZGVyIHJ1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1lc3NhZ2U6KE5TU3RyaW5nICoKIC0gKEJP
T0wpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBydW5KYXZhU2NyaXB0Q29uZmlybVBhbmVsV2l0
aE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZSBpbml0aWF0ZWRCeUZyYW1lOihXZWJGcmFtZSAq
KWZyYW1lCiB7CiAgICAgaWYgKCFkb25lKQotICAgICAgICBwcmludGYoIkNPTkZJUk06ICVzXG4i
LCBbbWVzc2FnZSBVVEY4U3RyaW5nXSk7CisgICAgICAgIHByaW50ZigiQ09ORklSTTolc1xuIiwg
YWRkTGVhZGluZ1NwYWNlU3RyaXBUcmFpbGluZ1NwYWNlcyhtZXNzYWdlKS5VVEY4U3RyaW5nID86
ICIgKG51bGwpIik7CiAgICAgcmV0dXJuIFlFUzsKIH0KIAogLSAoTlNTdHJpbmcgKil3ZWJWaWV3
OihXZWJWaWV3ICopc2VuZGVyIHJ1bkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbFdpdGhQcm9tcHQ6
KE5TU3RyaW5nICopcHJvbXB0IGRlZmF1bHRUZXh0OihOU1N0cmluZyAqKWRlZmF1bHRUZXh0IGlu
aXRpYXRlZEJ5RnJhbWU6KFdlYkZyYW1lICopZnJhbWUKIHsKICAgICBpZiAoIWRvbmUpCi0gICAg
ICAgIHByaW50ZigiUFJPTVBUOiAlcywgZGVmYXVsdCB0ZXh0OiAlc1xuIiwgW3Byb21wdCBVVEY4
U3RyaW5nXSwgW2RlZmF1bHRUZXh0IFVURjhTdHJpbmddKTsKKyAgICAgICAgcHJpbnRmKCJQUk9N
UFQ6ICVzLCBkZWZhdWx0IHRleHQ6JXNcbiIsIHByb21wdC5VVEY4U3RyaW5nLCBhZGRMZWFkaW5n
U3BhY2VTdHJpcFRyYWlsaW5nU3BhY2VzKGRlZmF1bHRUZXh0KS5VVEY4U3RyaW5nID86ICIgKG51
bGwpIik7CiAgICAgcmV0dXJuIGRlZmF1bHRUZXh0OwogfQogCiAtIChCT09MKXdlYlZpZXc6KFdl
YlZpZXcgKiljIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlOihOU1N0cmlu
ZyAqKW1lc3NhZ2UgaW5pdGlhdGVkQnlGcmFtZTooV2ViRnJhbWUgKilmcmFtZQogewogICAgIGlm
ICghZG9uZSkKLSAgICAgICAgcHJpbnRmKCJDT05GSVJNIE5BVklHQVRJT046ICVzXG4iLCBbbWVz
c2FnZSBVVEY4U3RyaW5nXSk7Ci0gICAgCisgICAgICAgIHByaW50ZigiQ09ORklSTSBOQVZJR0FU
SU9OOiVzXG4iLCBhZGRMZWFkaW5nU3BhY2VTdHJpcFRyYWlsaW5nU3BhY2VzKG1lc3NhZ2UpLlVU
RjhTdHJpbmcgPzogIiAobnVsbCkiKTsKICAgICByZXR1cm4gIWdUZXN0UnVubmVyLT5zaG91bGRT
dGF5T25QYWdlQWZ0ZXJIYW5kbGluZ0JlZm9yZVVubG9hZCgpOwogfQogCkBAIC0yMzUsNyArMjQ0
LDcgQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGV4Y2VlZGVkQXBwbGljYXRp
b25DYWNoZU9yaWdpblF1b3RhRm9yU2VjdXJpdHkKIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAq
KXNlbmRlciBzZXRTdGF0dXNUZXh0OihOU1N0cmluZyAqKXRleHQKIHsKICAgICBpZiAoIWRvbmUg
JiYgZ1Rlc3RSdW5uZXItPmR1bXBTdGF0dXNDYWxsYmFja3MoKSkKLSAgICAgICAgcHJpbnRmKCJV
SSBERUxFR0FURSBTVEFUVVMgQ0FMTEJBQ0s6IHNldFN0YXR1c1RleHQ6JXNcbiIsIFt0ZXh0IFVU
RjhTdHJpbmddKTsKKyAgICAgICAgcHJpbnRmKCJVSSBERUxFR0FURSBTVEFUVVMgQ0FMTEJBQ0s6
IHNldFN0YXR1c1RleHQ6JXNcbiIsIHN0cmlwVHJhaWxpbmdTcGFjZXModGV4dCkuVVRGOFN0cmlu
Zyk7CiB9CiAKIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5
Rm9yR2VvbG9jYXRpb25SZXF1ZXN0RnJvbU9yaWdpbjooV2ViU2VjdXJpdHlPcmlnaW4gKilvcmln
aW4gZnJhbWU6KFdlYkZyYW1lICopZnJhbWUgbGlzdGVuZXI6KGlkPFdlYkFsbG93RGVueVBvbGlj
eUxpc3RlbmVyPilsaXN0ZW5lcgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L0R1bXBSZW5kZXJUcmVlLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVy
VHJlZS5jcHAKaW5kZXggNmFlZmMyNWU1NTgzNzUwZTdlNWUzZGNlYmZiNTNmNzFmMTcwNTgyYS4u
ZGQ4MGU0Zjg1ODkxZTM0MzU2NzM2NjdlMTNlMTg2MmIxMWI5ZmExYiAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCkBAIC00ODgsNiArNDg4LDEzIEBAIHN0
YXRpYyB3c3RyaW5nIGR1bXBGcmFtZXNBc1RleHQoSVdlYkZyYW1lKiBmcmFtZSkKICAgICAgICAg
fQogICAgIH0KIAorICAgIC8vIFRvIGtlZXAgdGhpbmdzIHRpZHksIHN0cmlwIGFsbCB0cmFpbGlu
ZyBzcGFjZXM6IHRoZXkgYXJlIG5vdCBhIG1lYW5pbmdmdWwgcGFydCBvZiBkdW1wQXNUZXh0IHRl
c3Qgb3V0cHV0LgorICAgIHN0ZDo6d3N0cmluZzo6c2l6ZV90eXBlIHNwYWNlUG9zaXRpb247Cisg
ICAgd2hpbGUgKChzcGFjZVBvc2l0aW9uID0gcmVzdWx0LmZpbmQoTCIgXG4iKSkgIT0gc3RkOjp3
c3RyaW5nOjpucG9zKQorICAgICAgICByZXN1bHQuZXJhc2Uoc3BhY2VQb3NpdGlvbiwgMSk7Cisg
ICAgd2hpbGUgKCFyZXN1bHQuZW1wdHkoKSAmJiByZXN1bHQuYmFjaygpID09ICcgJykKKyAgICAg
ICAgcmVzdWx0LnBvcF9iYWNrKCk7CisKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuY3BwIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmNwcAppbmRleCA3NTViZWQx
NmY2MGVkYzAxMTE1NTIxZTE1OGMwZGJmMDU1ODhiZjg0Li5mZDc3YWQxYzM5MjYzOGRhOTQxNDNl
ZTdkNWE4MjFlNjk0MTAyMzEzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4v
RnJhbWVMb2FkRGVsZWdhdGUuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFt
ZUxvYWREZWxlZ2F0ZS5jcHAKQEAgLTI5Miw3ICsyOTIsNyBAQCBIUkVTVUxUIEZyYW1lTG9hZERl
bGVnYXRlOjpkaWRGYWlsTG9hZFdpdGhFcnJvcihfSW5fb3B0XyBJV2ViVmlldyosIF9Jbl9vcHRf
IElXZQogSFJFU1VMVCBGcmFtZUxvYWREZWxlZ2F0ZTo6d2lsbFBlcmZvcm1DbGllbnRSZWRpcmVj
dFRvVVJMKF9Jbl9vcHRfIElXZWJWaWV3KiwgX0luXyBCU1RSIHVybCwgZG91YmxlIC8qZGVsYXlT
ZWNvbmRzKi8sIERBVEUgLypmaXJlRGF0ZSovLCBfSW5fb3B0XyBJV2ViRnJhbWUqIGZyYW1lKQog
ewogICAgIGlmICghZG9uZSAmJiBnVGVzdFJ1bm5lci0+ZHVtcEZyYW1lTG9hZENhbGxiYWNrcygp
KQotICAgICAgICBmcHJpbnRmKHRlc3RSZXN1bHQsICIlcyAtIHdpbGxQZXJmb3JtQ2xpZW50UmVk
aXJlY3RUb1VSTDogJVMgXG4iLCBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChmcmFt
ZSkuY19zdHIoKSwKKyAgICAgICAgZnByaW50Zih0ZXN0UmVzdWx0LCAiJXMgLSB3aWxsUGVyZm9y
bUNsaWVudFJlZGlyZWN0VG9VUkw6ICVTXG4iLCBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJl
c3VsdChmcmFtZSkuY19zdHIoKSwKICAgICAgICAgICAgICAgICB1cmxTdWl0YWJsZUZvclRlc3RS
ZXN1bHQoc3RkOjp3c3RyaW5nKHVybCwgOjpTeXNTdHJpbmdMZW4odXJsKSkpLmNfc3RyKCkpOwog
CiAgICAgcmV0dXJuIFNfT0s7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4v
VUlEZWxlZ2F0ZS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVUlEZWxlZ2F0ZS5jcHAK
aW5kZXggOGVkNmY4NDVmOTdlOTkyOTE0MDRmZmY0YTFkNzlhZGRhNmEwYzIxNS4uMzRlYmI1ZTFm
NmI0MTRkZmZjMzk1NTZhOWI5OWJhMGMxNGQ2ODZjZCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL1VJRGVsZWdhdGUuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9VSURlbGVnYXRlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDUtMjAwOCwgMjAxNC0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwNS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDUzLDIyICs0NTMsNTQgQEAgSFJFU1VM
VCBVSURlbGVnYXRlOjp3ZWJWaWV3RnJhbWUoX0luX29wdF8gSVdlYlZpZXcqIC8qc2VuZGVyKi8s
IF9PdXRfIFJFQ1QqIGZyYW0KICAgICByZXR1cm4gU19PSzsKIH0KIAotY29uc3Qgd2NoYXJfdCog
dG9NZXNzYWdlKGNvbnN0IEJTVFIgbWVzc2FnZSkKK3N0YXRpYyBzdGQ6OnN0cmluZyBzdHJpcFRy
YWlsaW5nU3BhY2VzKGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHJpbmcpCit7CisgICAgYXV0byByZXN1
bHQgPSBzdHJpbmc7CisgICAgc3RkOjp3c3RyaW5nOjpzaXplX3R5cGUgc3BhY2VQb3NpdGlvbjsK
KyAgICB3aGlsZSAoKHNwYWNlUG9zaXRpb24gPSByZXN1bHQuZmluZCgiIFxuIikpICE9IHN0ZDo6
d3N0cmluZzo6bnBvcykKKyAgICAgICAgcmVzdWx0LmVyYXNlKHNwYWNlUG9zaXRpb24sIDEpOwor
ICAgIHdoaWxlICghcmVzdWx0LmVtcHR5KCkgJiYgcmVzdWx0LmJhY2soKSA9PSAnICcpCisgICAg
ICAgIHJlc3VsdC5wb3BfYmFjaygpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBz
dGQ6OnN0cmluZyBhZGRMZWFkaW5nU3BhY2VTdHJpcFRyYWlsaW5nU3BhY2VzKGNvbnN0IHN0ZDo6
c3RyaW5nJiBzdHJpbmcpCit7CisgICAgYXV0byByZXN1bHQgPSBzdHJpcFRyYWlsaW5nU3BhY2Vz
KHN0cmluZyk7CisgICAgcmV0dXJuIChyZXN1bHQuZW1wdHkoKSB8fCByZXN1bHQuZnJvbnQoKSA9
PSAnXG4nKSA/IHJlc3VsdCA6ICcgJyArIHJlc3VsdDsKK30KKworc3RhdGljIHN0ZDo6c3RyaW5n
IGFkZExlYWRpbmdTcGFjZVN0cmlwVHJhaWxpbmdTcGFjZXMoY29uc3Qgc3RkOjp3c3RyaW5nJiBz
dHJpbmcpCit7CisgICAgcmV0dXJuIGFkZExlYWRpbmdTcGFjZVN0cmlwVHJhaWxpbmdTcGFjZXMo
dG9VVEY4KHN0cmluZykpOworfQorCitzdGQ6OnN0cmluZyB0b01lc3NhZ2UoQlNUUiBtZXNzYWdl
KQogewogICAgIGF1dG8gbGVuZ3RoID0gU3lzU3RyaW5nTGVuKG1lc3NhZ2UpOwogICAgIGlmICgh
bGVuZ3RoKQotICAgICAgICByZXR1cm4gbWVzc2FnZTsKKyAgICAgICAgcmV0dXJuICIiOwogICAg
IC8vIFJldHVybiAiKG51bGwpIiBmb3IgYW4gaW52YWxpZCBVVEYtMTYgc2VxdWVuY2UgdG8gYWxp
Z24gd2l0aCBXZWJLaXRUZXN0UnVubmVyLgotICAgIGF1dG8gdXRmOCA9IFN0cmluZ1ZpZXcodWNo
YXJGcm9tKG1lc3NhZ2UpLCBsZW5ndGgpLnRyeUdldFV0ZjgoU3RyaWN0Q29udmVyc2lvbik7Ci0g
ICAgaWYgKCF1dGY4KQotICAgICAgICByZXR1cm4gTCIobnVsbCkiOwotICAgIHJldHVybiBtZXNz
YWdlOworICAgIC8vIEZJWE1FOiBDb3VsZCBwcm9iYWJseSB0YWtlIGFkdmFudGFnZSBvZiBXQ19F
UlJfSU5WQUxJRF9DSEFSUyBhbmQgYXZvaWQgY29udmVydGluZyB0byBVVEYtOCB0d2ljZS4KKyAg
ICBpZiAoIVN0cmluZ1ZpZXcodWNoYXJGcm9tKG1lc3NhZ2UpLCBsZW5ndGgpLnRyeUdldFV0Zjgo
U3RyaWN0Q29udmVyc2lvbikpCisgICAgICAgIHJldHVybiAiKG51bGwpIjsKKyAgICByZXR1cm4g
dG9VVEY4KG1lc3NhZ2UpOworfQorCitzdGF0aWMgc3RkOjpzdHJpbmcgYWRkTGVhZGluZ1NwYWNl
U3RyaXBUcmFpbGluZ1NwYWNlcyhCU1RSIG1lc3NhZ2UpCit7CisgICAgcmV0dXJuIGFkZExlYWRp
bmdTcGFjZVN0cmlwVHJhaWxpbmdTcGFjZXModG9NZXNzYWdlKG1lc3NhZ2UpKTsKK30KKworc3Rh
dGljIHN0ZDo6c3RyaW5nIHN0cmlwVHJhaWxpbmdTcGFjZXMoQlNUUiBtZXNzYWdlKQoreworICAg
IHJldHVybiBzdHJpcFRyYWlsaW5nU3BhY2VzKHRvTWVzc2FnZShtZXNzYWdlKSk7CiB9CiAKIEhS
RVNVTFQgVUlEZWxlZ2F0ZTo6cnVuSmF2YVNjcmlwdEFsZXJ0UGFuZWxXaXRoTWVzc2FnZShfSW5f
b3B0XyBJV2ViVmlldyogLypzZW5kZXIqLywgX0luXyBCU1RSIG1lc3NhZ2UpCiB7CiAgICAgaWYg
KCFkb25lKSB7Ci0gICAgICAgIGZwcmludGYodGVzdFJlc3VsdCwgIkFMRVJUOiAlU1xuIiwgdG9N
ZXNzYWdlKG1lc3NhZ2UpKTsKKyAgICAgICAgZnByaW50Zih0ZXN0UmVzdWx0LCAiQUxFUlQ6JXNc
biIsIGFkZExlYWRpbmdTcGFjZVN0cmlwVHJhaWxpbmdTcGFjZXMobWVzc2FnZSkuY19zdHIoKSk7
CiAgICAgICAgIGZmbHVzaCh0ZXN0UmVzdWx0KTsKICAgICB9CiAKQEAgLTQ3OCw3ICs1MTAsNyBA
QCBIUkVTVUxUIFVJRGVsZWdhdGU6OnJ1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1lc3NhZ2Uo
X0luX29wdF8gSVdlYlZpZXcqIC8qc2VuZAogSFJFU1VMVCBVSURlbGVnYXRlOjpydW5KYXZhU2Ny
aXB0Q29uZmlybVBhbmVsV2l0aE1lc3NhZ2UoX0luX29wdF8gSVdlYlZpZXcqIC8qc2VuZGVyKi8s
IF9Jbl8gQlNUUiBtZXNzYWdlLCBfT3V0XyBCT09MKiByZXN1bHQpCiB7CiAgICAgaWYgKCFkb25l
KQotICAgICAgICBmcHJpbnRmKHRlc3RSZXN1bHQsICJDT05GSVJNOiAlU1xuIiwgdG9NZXNzYWdl
KG1lc3NhZ2UpKTsKKyAgICAgICAgZnByaW50Zih0ZXN0UmVzdWx0LCAiQ09ORklSTTolc1xuIiwg
YWRkTGVhZGluZ1NwYWNlU3RyaXBUcmFpbGluZ1NwYWNlcyhtZXNzYWdlKS5jX3N0cigpKTsKIAog
ICAgICpyZXN1bHQgPSBUUlVFOwogCkBAIC00ODgsNyArNTIwLDcgQEAgSFJFU1VMVCBVSURlbGVn
YXRlOjpydW5KYXZhU2NyaXB0Q29uZmlybVBhbmVsV2l0aE1lc3NhZ2UoX0luX29wdF8gSVdlYlZp
ZXcqIC8qc2UKIEhSRVNVTFQgVUlEZWxlZ2F0ZTo6cnVuSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVs
V2l0aFByb21wdChfSW5fb3B0XyBJV2ViVmlldyogLypzZW5kZXIqLywgX0luXyBCU1RSIG1lc3Nh
Z2UsIF9Jbl8gQlNUUiBkZWZhdWx0VGV4dCwgX19kZXJlZl9vcHRfb3V0IEJTVFIqIHJlc3VsdCkK
IHsKICAgICBpZiAoIWRvbmUpCi0gICAgICAgIGZwcmludGYodGVzdFJlc3VsdCwgIlBST01QVDog
JVMsIGRlZmF1bHQgdGV4dDogJVNcbiIsIHRvTWVzc2FnZShtZXNzYWdlKSwgdG9NZXNzYWdlKGRl
ZmF1bHRUZXh0KSk7CisgICAgICAgIGZwcmludGYodGVzdFJlc3VsdCwgIlBST01QVDogJXMsIGRl
ZmF1bHQgdGV4dDolc1xuIiwgdG9NZXNzYWdlKG1lc3NhZ2UpLmNfc3RyKCksIGFkZExlYWRpbmdT
cGFjZVN0cmlwVHJhaWxpbmdTcGFjZXMoZGVmYXVsdFRleHQpLmNfc3RyKCkpOwogCiAgICAgKnJl
c3VsdCA9IFN5c0FsbG9jU3RyaW5nKGRlZmF1bHRUZXh0KTsKIApAQCAtNTAxLDcgKzUzMyw3IEBA
IEhSRVNVTFQgVUlEZWxlZ2F0ZTo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsV2l0aE1lc3Nh
Z2UoX0luX29wdF8gSVdlYlZpZXcqIC8qCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKICAg
ICBpZiAoIWRvbmUpCi0gICAgICAgIGZwcmludGYodGVzdFJlc3VsdCwgIkNPTkZJUk0gTkFWSUdB
VElPTjogJVNcbiIsIHRvTWVzc2FnZShtZXNzYWdlKSk7CisgICAgICAgIGZwcmludGYodGVzdFJl
c3VsdCwgIkNPTkZJUk0gTkFWSUdBVElPTjolc1xuIiwgYWRkTGVhZGluZ1NwYWNlU3RyaXBUcmFp
bGluZ1NwYWNlcyhtZXNzYWdlKS5jX3N0cigpKTsKIAogICAgICpyZXN1bHQgPSAhZ1Rlc3RSdW5u
ZXItPnNob3VsZFN0YXlPblBhZ2VBZnRlckhhbmRsaW5nQmVmb3JlVW5sb2FkKCk7CiAKQEAgLTUy
Myw4ICs1NTUsNyBAQCBIUkVTVUxUIFVJRGVsZWdhdGU6OndlYlZpZXdBZGRNZXNzYWdlVG9Db25z
b2xlKF9Jbl9vcHRfIElXZWJWaWV3KiAvKnNlbmRlciovLCBfSQogICAgIH0KIAogICAgIGF1dG8g
b3V0ID0gZ1Rlc3RSdW5uZXItPmR1bXBKU0NvbnNvbGVMb2dJblN0ZEVycigpID8gc3RkZXJyIDog
dGVzdFJlc3VsdDsKLSAgICBmcHJpbnRmKG91dCwgIkNPTlNPTEUgTUVTU0FHRTogIik7Ci0gICAg
ZnByaW50ZihvdXQsICIlc1xuIiwgdG9VVEY4KG5ld01lc3NhZ2UpLmNfc3RyKCkpOworICAgIGZw
cmludGYob3V0LCAiQ09OU09MRSBNRVNTQUdFOiVzXG4iLCBhZGRMZWFkaW5nU3BhY2VTdHJpcFRy
YWlsaW5nU3BhY2VzKG5ld01lc3NhZ2UpLmNfc3RyKCkpOwogICAgIHJldHVybiBTX09LOwogfQog
CkBAIC02NzMsNyArNzA0LDcgQEAgSFJFU1VMVCBVSURlbGVnYXRlOjp3ZWJWaWV3RGlkSW52YWxp
ZGF0ZShfSW5fb3B0XyBJV2ViVmlldyogLypzZW5kZXIqLykKIEhSRVNVTFQgVUlEZWxlZ2F0ZTo6
c2V0U3RhdHVzVGV4dChfSW5fb3B0XyBJV2ViVmlldyosIF9Jbl8gQlNUUiB0ZXh0KQogewogICAg
IGlmICghZG9uZSAmJiBnVGVzdFJ1bm5lci0+ZHVtcFN0YXR1c0NhbGxiYWNrcygpKQotICAgICAg
ICBmcHJpbnRmKHRlc3RSZXN1bHQsICJVSSBERUxFR0FURSBTVEFUVVMgQ0FMTEJBQ0s6IHNldFN0
YXR1c1RleHQ6JVNcbiIsIHRvTWVzc2FnZSh0ZXh0KSk7CisgICAgICAgIGZwcmludGYodGVzdFJl
c3VsdCwgIlVJIERFTEVHQVRFIFNUQVRVUyBDQUxMQkFDSzogc2V0U3RhdHVzVGV4dDolc1xuIiwg
c3RyaXBUcmFpbGluZ1NwYWNlcyh0ZXh0KS5jX3N0cigpKTsKICAgICByZXR1cm4gU19PSzsKIH0K
IApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQppbmRleCA3NTU3MDk0NmM3OTFjMmQyZDIx
NjZmNjFhMmU5Y2RiOWQ0MzQ3YjMzLi4zM2E5YTZiMDUwODQzOTk3MTYxYWYwYmQ0YWUwNDA4MGEw
ZDIzMzNkIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQpAQCAtMzAwLDYgKzMwMCw5
IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogCiAgICAg
ZGVmIGRvX3RleHRfcmVzdWx0c19kaWZmZXIoc2VsZiwgZXhwZWN0ZWRfdGV4dCwgYWN0dWFsX3Rl
eHQpOgorICAgICAgICAjIElnbm9yZSB0cmFpbGluZyBzcGFjZXMgaW4gZXhwZWN0ZWQgZmlsZXMu
IFdlIHdpbGwgcmVtb3ZlIHRoaXMgY29kZSBhZnRlciByZW1vdmluZyB0cmFpbGluZyBzcGFjZXMg
ZnJvbSBhbGwgZXhwZWN0ZWQudHh0IGZpbGVzLgorICAgICAgICBpZiBub3QgZXhwZWN0ZWRfdGV4
dC5zdGFydHN3aXRoKCI8P3htbCIpOgorICAgICAgICAgICAgZXhwZWN0ZWRfdGV4dCA9IHJlLmNv
bXBpbGUoIiArJCIsIHJlLk1VTFRJTElORSkuc3ViKCIiLCBleHBlY3RlZF90ZXh0KQogICAgICAg
ICByZXR1cm4gZXhwZWN0ZWRfdGV4dCAhPSBhY3R1YWxfdGV4dAogCiAgICAgZGVmIGRvX2F1ZGlv
X3Jlc3VsdHNfZGlmZmVyKHNlbGYsIGV4cGVjdGVkX2F1ZGlvLCBhY3R1YWxfYXVkaW8pOgpkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3dpbi5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvcG9ydC93aW4ucHkKaW5kZXggNzAzOWNiNTJjM2QxZWY3M2FlYWRmMmQxMzI2
YTMyZmU1ZWI0N2EyMi4uMTRjMzI1NGZiOGUwNTI1YzNlZDA4MTUyOTY2ZTgyYmZmYzFkMmQxNiAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3dpbi5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvd2luLnB5CkBAIC0xMDMsMTggKzEwMywxNCBAQCBjbGFz
cyBXaW5Qb3J0KEFwcGxlUG9ydCk6CiAgICAgICAgICAgICBzZWxmLl9vc192ZXJzaW9uID0gc2Vs
Zi5ob3N0LnBsYXRmb3JtLm9zX3ZlcnNpb24KIAogICAgIGRlZiBkb190ZXh0X3Jlc3VsdHNfZGlm
ZmVyKHNlbGYsIGV4cGVjdGVkX3RleHQsIGFjdHVhbF90ZXh0KToKLSAgICAgICAgIyBTYW5pdHkg
d2FzIHJlc3RvcmVkIGluIFdLMiwgc28gd2UgZG9uJ3QgbmVlZCB0aGlzIGhhY2sgdGhlcmUuCi0g
ICAgICAgIGlmIHNlbGYuZ2V0X29wdGlvbignd2Via2l0X3Rlc3RfcnVubmVyJyk6Ci0gICAgICAg
ICAgICByZXR1cm4gQXBwbGVQb3J0LmRvX3RleHRfcmVzdWx0c19kaWZmZXIoc2VsZiwgZXhwZWN0
ZWRfdGV4dCwgYWN0dWFsX3RleHQpCi0KLSAgICAgICAgIyBUaGlzIGlzIGEgaGFjayAod2hpY2gg
ZGF0ZXMgYmFjayB0byBPUldUKS4KLSAgICAgICAgIyBXaW5kb3dzIGRvZXMgbm90IGhhdmUgYW4g
RURJVElORyBERUxFR0FURSwgc28gd2Ugc3RyaXAgYW55IEVESVRJTkcgREVMRUdBVEUKLSAgICAg
ICAgIyBtZXNzYWdlcyB0byBtYWtlIG1vcmUgb2YgdGhlIHRlc3RzIHBhc3MuCi0gICAgICAgICMg
SXQncyBwb3NzaWJsZSBtb3JlIG9mIHRoZSBwb3J0cyBtaWdodCB3YW50IHRoaXMgYW5kIHRoaXMg
Y291bGQgbW92ZSBkb3duIGludG8gV2ViS2l0UG9ydC4KLSAgICAgICAgZGVsZWdhdGVfcmVnZXhw
ID0gcmUuY29tcGlsZSgiXkVESVRJTkcgREVMRUdBVEU6IC4qP1xuIiwgcmUuTVVMVElMSU5FKQot
ICAgICAgICBleHBlY3RlZF90ZXh0ID0gZGVsZWdhdGVfcmVnZXhwLnN1YigiIiwgZXhwZWN0ZWRf
dGV4dCkKLSAgICAgICAgYWN0dWFsX3RleHQgPSBkZWxlZ2F0ZV9yZWdleHAuc3ViKCIiLCBhY3R1
YWxfdGV4dCkKLSAgICAgICAgcmV0dXJuIGV4cGVjdGVkX3RleHQgIT0gYWN0dWFsX3RleHQKKyAg
ICAgICAgIyBTYW5pdHkgd2FzIHJlc3RvcmVkIGluIFdlYktpdFRlc3RSdW5uZXIsIHNvIHdlIGRv
bid0IG5lZWQgdGhpcyBoYWNrIHRoZXJlLgorICAgICAgICBpZiBub3Qgc2VsZi5nZXRfb3B0aW9u
KCd3ZWJraXRfdGVzdF9ydW5uZXInKToKKyAgICAgICAgICAgICMgV2luZG93cyBkb2VzIG5vdCBo
YXZlIGFuIEVESVRJTkcgREVMRUdBVEUsIHNvIHN0cmlwIHRob3NlIG1lc3NhZ2VzIHRvIG1ha2Ug
bW9yZSB0ZXN0cyBwYXNzLgorICAgICAgICAgICAgIyBJdCdzIHBvc3NpYmxlIG90aGVyIHBvcnRz
IG1pZ2h0IHdhbnQgdGhpcywgYW5kIGlmIHNvLCB0aGlzIGNvdWxkIG1vdmUgZG93biBpbnRvIFdl
YktpdFBvcnQuCisgICAgICAgICAgICBkZWxlZ2F0ZV9yZWdleHAgPSByZS5jb21waWxlKCJeRURJ
VElORyBERUxFR0FURTogLio/XG4iLCByZS5NVUxUSUxJTkUpCisgICAgICAgICAgICBleHBlY3Rl
ZF90ZXh0ID0gZGVsZWdhdGVfcmVnZXhwLnN1YigiIiwgZXhwZWN0ZWRfdGV4dCkKKyAgICAgICAg
ICAgIGFjdHVhbF90ZXh0ID0gZGVsZWdhdGVfcmVnZXhwLnN1YigiIiwgYWN0dWFsX3RleHQpCisg
ICAgICAgIHJldHVybiBBcHBsZVBvcnQuZG9fdGV4dF9yZXN1bHRzX2RpZmZlcihzZWxmLCBleHBl
Y3RlZF90ZXh0LCBhY3R1YWxfdGV4dCkKIAogICAgIGRlZiBkZWZhdWx0X2Jhc2VsaW5lX3NlYXJj
aF9wYXRoKHNlbGYsICoqa3dhcmdzKToKICAgICAgICAgdmVyc2lvbl9uYW1lX21hcCA9IFZlcnNp
b25OYW1lTWFwLm1hcChzZWxmLmhvc3QucGxhdGZvcm0pCmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAK
aW5kZXggYjY0MGZmMjhhZTc1ZmQ2MTgwMDNiZjZmNzUyZTA1Y2IxMzA2MzY3Mi4uZDg5ZmVhZjli
NmRhZTRjOTY4NTMxZjBhYjYzODU4OTFiMTRmOThmOCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNw
cApAQCAtODM0LDE3ICs4MzQsMjIgQEAgc3RhdGljIGJvb2wgaGFzRG9jdW1lbnRFbGVtZW50KFdL
QnVuZGxlRnJhbWVSZWYgZnJhbWUpCiAgICAgcmV0dXJuIEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4
dCwgZG9jdW1lbnRFbGVtZW50VmFsdWUpOwogfQogCi1zdGF0aWMgdm9pZCBkdW1wRnJhbWVUZXh0
KFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFN0cmluZ0J1aWxkZXImIHN0cmluZ0J1aWxkZXIpCitz
dGF0aWMgdm9pZCBkdW1wRnJhbWVUZXh0KFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFN0cmluZ0J1
aWxkZXImIGJ1aWxkZXIpCiB7CiAgICAgLy8gSWYgdGhlIGZyYW1lIGRvZXNuJ3QgaGF2ZSBhIGRv
Y3VtZW50IGVsZW1lbnQsIGl0cyBpbm5lciB0ZXh0IHdpbGwgYmUgYW4gZW1wdHkgc3RyaW5nLCBz
bwotICAgIC8vIHdlJ2xsIGVuZCB1cCBqdXN0IGFwcGVuZGluZyBhIHNpbmdsZSBuZXdsaW5lIGJl
bG93LiBCdXQgRHVtcFJlbmRlclRyZWUgZG9lc24ndCBhcHBlbmQKLSAgICAvLyBhbnl0aGluZyBp
biB0aGlzIGNhc2UsIHNvIHdlIHNob3VsZG4ndCBlaXRoZXIuCisgICAgLy8gd2UnbGwgZW5kIHVw
IGp1c3QgYXBwZW5kaW5nIGEgc2luZ2xlIG5ld2xpbmUgYmVsb3cuIFNpbmNlIER1bXBSZW5kZXJU
cmVlIGRpZG4ndCBhcHBlbmQKKyAgICAvLyBhbnl0aGluZyBpbiB0aGlzIGNhc2UsIHdlIGRlY2lk
ZWQgdG8gcHJlc2VydmUgdGhhdCBiZWhhdmlvci4KICAgICBpZiAoIWhhc0RvY3VtZW50RWxlbWVu
dChmcmFtZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVm
PiB0ZXh0ID0gYWRvcHRXSyhXS0J1bmRsZUZyYW1lQ29weUlubmVyVGV4dChmcmFtZSkpOwotICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKHRvV1RGU3RyaW5nKHRleHQpKTsKLSAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZCgnXG4nKTsKKyAgICAvLyBUbyBrZWVwIHRoaW5ncyB0aWR5LCBzdHJpcCBhbGwg
dHJhaWxpbmcgc3BhY2VzOiB0aGV5IGFyZSBub3QgYSBtZWFuaW5nZnVsIHBhcnQgb2YgZHVtcEFz
VGV4dCB0ZXN0IG91dHB1dC4KKyAgICAvLyBCcmVha2luZyB0aGUgc3RyaW5nIHVwIGludG8gbGlu
ZXMgbGV0cyB1cyBlZmZpY2llbnRseSBzdHJpcCBhbmQgaGFzIGEgc2lkZSBlZmZlY3Qgb2YgYWRk
aW5nIGEgbmV3bGluZSBhZnRlciB0aGUgbGFzdCBsaW5lLgorICAgIGF1dG8gdGV4dCA9IHRvV1RG
U3RyaW5nKGFkb3B0V0soV0tCdW5kbGVGcmFtZUNvcHlJbm5lclRleHQoZnJhbWUpKSk7CisgICAg
Zm9yIChhdXRvIGxpbmUgOiBTdHJpbmdWaWV3KHRleHQpLnNwbGl0QWxsb3dpbmdFbXB0eUVudHJp
ZXMoJ1xuJykpIHsKKyAgICAgICAgd2hpbGUgKGxpbmUuZW5kc1dpdGgoJyAnKSkKKyAgICAgICAg
ICAgIGxpbmUgPSBsaW5lLnN1YnN0cmluZygwLCBsaW5lLmxlbmd0aCgpIC0gMSk7CisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKGxpbmUsICdcbicpOworICAgIH0KIH0KIAogc3RhdGljIHZvaWQgZHVt
cERlc2NlbmRhbnRGcmFtZXNUZXh0KFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFN0cmluZ0J1aWxk
ZXImIHN0cmluZ0J1aWxkZXIpCkBAIC0xMDU2LDkgKzEwNjEsNyBAQCB2b2lkIEluamVjdGVkQnVu
ZGxlUGFnZTo6d2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lKFdLQnVuZGxlUGFnZVJl
ZiwgV0tCdQogCiAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwogICAgIGR1bXBGcmFt
ZURlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KGZyYW1lLCBzdHJpbmdCdWlsZGVyKTsK
LSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiAtIHdpbGxQZXJmb3JtQ2xpZW50UmVk
aXJlY3RUb1VSTDogIik7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQocGF0aFN1aXRhYmxlRm9y
VGVzdFJlc3VsdCh1cmwpKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiBcbiIp
OworICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgLSB3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0
VG9VUkw6ICIsIHBhdGhTdWl0YWJsZUZvclRlc3RSZXN1bHQodXJsKSwgJ1xuJyk7CiAgICAgaW5q
ZWN0ZWRCdW5kbGUub3V0cHV0VGV4dChzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpOwogfQogCkBA
IC0xMzQ1LDcgKzEzNDgsNyBAQCBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb24gSW5qZWN0ZWRCdW5k
bGVQYWdlOjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdLQgogCiAgICAgaWYgKGlu
amVjdGVkQnVuZGxlLnRlc3RSdW5uZXIoKS0+c2hvdWxkRHVtcFBvbGljeUNhbGxiYWNrcygpKSB7
CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmRMaXRlcmFsKCIgLSBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uIFxu
Iik7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIC0gZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvblxuIik7CiAgICAgICAgIGR1bXBSZXF1ZXN0RGVzY3JpcHRpb25T
dWl0YWJsZUZvclRlc3RSZXN1bHQocmVxdWVzdCwgc3RyaW5nQnVpbGRlcik7CiAgICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiIGlzIG1haW4gZnJhbWUgLSAiKTsKICAgICAgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoV0tCdW5kbGVGcmFtZUlzTWFpbkZyYW1lKGZyYW1lKSA/ICJ5
ZXMiIDogIm5vIik7CkBAIC0xNDQ5LDYgKzE0NTIsMjMgQEAgdWludDY0X3QgSW5qZWN0ZWRCdW5k
bGVQYWdlOjpkaWRFeGNlZWREYXRhYmFzZVF1b3RhKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS1Nl
Y3UKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW5qZWN0ZWRCdW5kbGVQYWdlKj4oY29uc3RfY2Fz
dDx2b2lkKj4oY2xpZW50SW5mbykpLT5kaWRFeGNlZWREYXRhYmFzZVF1b3RhKG9yaWdpbiwgZGF0
YWJhc2VOYW1lLCBkYXRhYmFzZURpc3BsYXlOYW1lLCBjdXJyZW50UXVvdGFCeXRlcywgY3VycmVu
dE9yaWdpblVzYWdlQnl0ZXMsIGN1cnJlbnREYXRhYmFzZVVzYWdlQnl0ZXMsIGV4cGVjdGVkVXNh
Z2VCeXRlcyk7CiB9CiAKK3N0YXRpYyBXVEY6OlN0cmluZyBzdHJpcFRyYWlsaW5nU3BhY2VzQWRk
TmV3bGluZShjb25zdCBXVEY6OlN0cmluZyYgc3RyaW5nKQoreworICAgIFN0cmluZ0J1aWxkZXIg
YnVpbGRlcjsKKyAgICBmb3IgKGF1dG8gbGluZSA6IFN0cmluZ1ZpZXcoc3RyaW5nKS5zcGxpdEFs
bG93aW5nRW1wdHlFbnRyaWVzKCdcbicpKSB7CisgICAgICAgIHdoaWxlIChsaW5lLmVuZHNXaXRo
KCcgJykpCisgICAgICAgICAgICBsaW5lID0gbGluZS5zdWJzdHJpbmcoMCwgbGluZS5sZW5ndGgo
KSAtIDEpOworICAgICAgICBidWlsZGVyLmFwcGVuZChsaW5lLCAnXG4nKTsKKyAgICB9CisgICAg
cmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30KKworc3RhdGljIFdURjo6U3RyaW5nIGFkZExl
YWRpbmdTcGFjZVN0cmlwVHJhaWxpbmdTcGFjZXNBZGROZXdsaW5lKGNvbnN0IFdURjo6U3RyaW5n
JiBzdHJpbmcpCit7CisgICAgYXV0byByZXN1bHQgPSBzdHJpcFRyYWlsaW5nU3BhY2VzQWRkTmV3
bGluZShzdHJpbmcpOworICAgIHJldHVybiAocmVzdWx0LmlzRW1wdHkoKSB8fCByZXN1bHQuc3Rh
cnRzV2l0aCgnXG4nKSkgPyByZXN1bHQgOiBtYWtlU3RyaW5nKCcgJywgcmVzdWx0KTsKK30KKwog
c3RhdGljIFdURjo6U3RyaW5nIGxhc3RGaWxlVVJMUGF0aENvbXBvbmVudChjb25zdCBXVEY6OlN0
cmluZyYgcGF0aCkKIHsKICAgICBzaXplX3QgcG9zID0gcGF0aC5maW5kKCJmaWxlOi8vIik7CkBA
IC0xNDg1LDE1ICsxNTA1LDExIEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjp3aWxsQWRkTWVz
c2FnZVRvQ29uc29sZShXS1N0cmluZ1JlZiBtZXNzYWdlKQogICAgICAgICAvLyBGSVhNRTogVGhl
IGNvZGUgYmVsb3cgZG9lcyBub3QgaGFuZGxlIGFkZGl0aW9uYWwgdGV4dCBhZnRlciB1cmwgbm9y
IG11bHRpcGxlIHVybHMuIFRoaXMgbWF0Y2hlcyBEdW1wUmVuZGVyVHJlZSBpbXBsZW1lbnRhdGlv
bi4KICAgICAgICAgbWVzc2FnZVN0cmluZyA9IG1lc3NhZ2VTdHJpbmcuc3Vic3RyaW5nKDAsIGZp
bGVQcm90b2NvbFN0YXJ0KSArIGxhc3RGaWxlVVJMUGF0aENvbXBvbmVudChtZXNzYWdlU3RyaW5n
LnN1YnN0cmluZyhmaWxlUHJvdG9jb2xTdGFydCkpOwogCi0gICAgU3RyaW5nQnVpbGRlciBzdHJp
bmdCdWlsZGVyOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiQ09OU09MRSBNRVNT
QUdFOiAiKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChtZXNzYWdlU3RyaW5nKTsKLSAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgnXG4nKTsKLQorICAgIG1lc3NhZ2VTdHJpbmcgPSBtYWtlU3Ry
aW5nKCJDT05TT0xFIE1FU1NBR0U6IiwgYWRkTGVhZGluZ1NwYWNlU3RyaXBUcmFpbGluZ1NwYWNl
c0FkZE5ld2xpbmUobWVzc2FnZVN0cmluZykpOwogICAgIGlmIChpbmplY3RlZEJ1bmRsZS5kdW1w
SlNDb25zb2xlTG9nSW5TdGRFcnIoKSkKLSAgICAgICAgaW5qZWN0ZWRCdW5kbGUuZHVtcFRvU3Rk
RXJyKHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgICAgIGluamVjdGVkQnVuZGxlLmR1
bXBUb1N0ZEVycihtZXNzYWdlU3RyaW5nKTsKICAgICBlbHNlCi0gICAgICAgIGluamVjdGVkQnVu
ZGxlLm91dHB1dFRleHQoc3RyaW5nQnVpbGRlci50b1N0cmluZygpKTsKKyAgICAgICAgaW5qZWN0
ZWRCdW5kbGUub3V0cHV0VGV4dChtZXNzYWdlU3RyaW5nKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1
bmRsZVBhZ2U6OndpbGxTZXRTdGF0dXNiYXJUZXh0KFdLU3RyaW5nUmVmIHN0YXR1c2JhclRleHQp
CkBAIC0xNTE4LDExICsxNTM0LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OndpbGxSdW5K
YXZhU2NyaXB0QWxlcnQoV0tTdHJpbmdSZWYgbWVzc2FnZSwgV0tCdW5kbGVGcmEKICAgICBpZiAo
IWluamVjdGVkQnVuZGxlLmlzVGVzdFJ1bm5pbmcoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
U3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0
ZXJhbCgiQUxFUlQ6ICIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHRvV1RGU3RyaW5nKG1l
c3NhZ2UpKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICBpbmplY3RlZEJ1
bmRsZS5vdXRwdXRUZXh0KHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgaW5qZWN0ZWRC
dW5kbGUub3V0cHV0VGV4dChtYWtlU3RyaW5nKCJBTEVSVDoiLCBhZGRMZWFkaW5nU3BhY2VTdHJp
cFRyYWlsaW5nU3BhY2VzQWRkTmV3bGluZSh0b1dURlN0cmluZyhtZXNzYWdlKSkpKTsKIH0KIAog
dm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OndpbGxSdW5KYXZhU2NyaXB0Q29uZmlybShXS1N0cmlu
Z1JlZiBtZXNzYWdlLCBXS0J1bmRsZUZyYW1lUmVmKQpAQCAtMTUzMSwyMiArMTU0MywxMiBAQCB2
b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6d2lsbFJ1bkphdmFTY3JpcHRDb25maXJtKFdLU3RyaW5n
UmVmIG1lc3NhZ2UsIFdLQnVuZGxlRgogICAgIGlmICghaW5qZWN0ZWRCdW5kbGUuaXNUZXN0UnVu
bmluZygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxk
ZXI7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJDT05GSVJNOiAiKTsKLSAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCh0b1dURlN0cmluZyhtZXNzYWdlKSk7Ci0gICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoJ1xuJyk7Ci0gICAgaW5qZWN0ZWRCdW5kbGUub3V0cHV0VGV4dChzdHJpbmdC
dWlsZGVyLnRvU3RyaW5nKCkpOworICAgIGluamVjdGVkQnVuZGxlLm91dHB1dFRleHQobWFrZVN0
cmluZygiQ09ORklSTToiLCBhZGRMZWFkaW5nU3BhY2VTdHJpcFRyYWlsaW5nU3BhY2VzQWRkTmV3
bGluZSh0b1dURlN0cmluZyhtZXNzYWdlKSkpKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZVBh
Z2U6OndpbGxSdW5KYXZhU2NyaXB0UHJvbXB0KFdLU3RyaW5nUmVmIG1lc3NhZ2UsIFdLU3RyaW5n
UmVmIGRlZmF1bHRWYWx1ZSwgV0tCdW5kbGVGcmFtZVJlZikKIHsKLSAgICBTdHJpbmdCdWlsZGVy
IHN0cmluZ0J1aWxkZXI7Ci0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJQUk9NUFQ6
ICIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHRvV1RGU3RyaW5nKG1lc3NhZ2UpKTsKLSAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgZGVmYXVsdCB0ZXh0OiAiKTsKLSAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCh0b1dURlN0cmluZyhkZWZhdWx0VmFsdWUpKTsKLSAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZCgnXG4nKTsKLSAgICBJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCku
b3V0cHV0VGV4dChzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpOworICAgIEluamVjdGVkQnVuZGxl
OjpzaW5nbGV0b24oKS5vdXRwdXRUZXh0KG1ha2VTdHJpbmcoIlBST01QVDogIiwgdG9XVEZTdHJp
bmcobWVzc2FnZSksICIsIGRlZmF1bHQgdGV4dDoiLCBhZGRMZWFkaW5nU3BhY2VTdHJpcFRyYWls
aW5nU3BhY2VzQWRkTmV3bGluZSh0b1dURlN0cmluZyhkZWZhdWx0VmFsdWUpKSkpOwogfQogCiB2
b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZGlkUmVhY2hBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVv
dGEoV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4sIGludDY0X3QgdG90YWxCeXRlc05lZWRlZCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>