<?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>211413</bug_id>
          
          <creation_ts>2020-05-04 17:09:07 -0700</creation_ts>
          <short_desc>Code cleanup in EventHandler</short_desc>
          <delta_ts>2020-05-04 21:02:16 -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>UI Events</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1648836</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-05-04 17:09:07 -0700</bug_when>
    <thetext>Code cleanup in EventHandler</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648839</commentid>
    <comment_count>1</comment_count>
      <attachid>398437</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-05-04 17:13:10 -0700</bug_when>
    <thetext>Created attachment 398437
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648852</commentid>
    <comment_count>2</comment_count>
      <attachid>398442</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-05-04 17:32:39 -0700</bug_when>
    <thetext>Created attachment 398442
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648867</commentid>
    <comment_count>3</comment_count>
      <attachid>398446</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-05-04 17:48:59 -0700</bug_when>
    <thetext>Created attachment 398446
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648903</commentid>
    <comment_count>4</comment_count>
      <attachid>398458</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-05-04 19:36:57 -0700</bug_when>
    <thetext>Created attachment 398458
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648909</commentid>
    <comment_count>5</comment_count>
      <attachid>398461</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-05-04 19:55:54 -0700</bug_when>
    <thetext>Created attachment 398461
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648931</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-04 21:01:16 -0700</bug_when>
    <thetext>Committed r261143: &lt;https://trac.webkit.org/changeset/261143&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 398461.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648932</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-04 21:02:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/62873803&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398437</attachid>
            <date>2020-05-04 17:13:10 -0700</date>
            <delta_ts>2020-05-04 17:15:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211413-20200504171309.patch</filename>
            <type>text/plain</type>
            <size>25790</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxMTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWJkMWNjNzU1MjQxNDk0
MTJmY2I4MWViYTVmNDc2Y2IwNDgxNmJmMC4uYWRkMGEzMzdlM2MyNDRiMmQyOTI5Y2M5MzE1MWM1
ZjE1NmVjMTVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIwLTA1LTA0ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIENvZGUgY2xlYW51
cCBpbiBFdmVudEhhbmRsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxMTQxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFVzZSBhIGJldHRlciBuYW1lIGZvciAiaG92ZXJlZE5vZGUiIHdoaWNoIGlzIGEg
SGl0VGVzdFJlc3VsdC4KKworICAgICAgICBDb252ZXJ0IEZyYW1lKiB0byBGcmFtZSYuCisKKyAg
ICAgICAgSGF2ZSBhIGNvdXBsZSBvZiBoZWxwZXIgZnVuY3Rpb25zIHJldHVybiBSZWZQdHI8RnJh
bWU+LgorCisgICAgICAgICogcGFnZS9BdXRvc2Nyb2xsQ29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBdXRvc2Nyb2xsQ29udHJvbGxlcjo6c3RvcEF1dG9zY3JvbGxUaW1lcik6Cisg
ICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRI
YW5kbGVyOjpzdWJmcmFtZUZvckhpdFRlc3RSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRIYW5kbGVyOjpzdWJmcmFtZUZvclRhcmdldE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRIYW5kbGVyOjpoYW5kbGVNb3VzZURvdWJsZUNsaWNrRXZlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6RXZlbnRIYW5kbGVyOjptb3VzZU1vdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6cGFzc01vdXNlTW92ZWRFdmVudFRvU2Nyb2xsYmFycyk6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlTW92ZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6RXZlbnRIYW5kbGVyOjpwYXNzTW91c2VQcmVzc0V2ZW50VG9TY3JvbGxiYXIpOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpwYXNzTW91c2VQcmVzc0V2ZW50VG9TdWJmcmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnBhc3NNb3VzZVJlbGVhc2VFdmVudFRv
U3ViZnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpwYXNzV2lkZ2V0TW91
c2VEb3duRXZlbnRUb1dpZGdldCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnBh
c3NNb3VzZU1vdmVFdmVudFRvU3ViZnJhbWUpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVy
Lmg6CisgICAgICAgICogcGFnZS9pb3MvRXZlbnRIYW5kbGVySU9TLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6RXZlbnRIYW5kbGVyOjpwYXNzU3ViZnJhbWVFdmVudFRvU3ViZnJhbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpwYXNzTW91c2VQcmVzc0V2ZW50VG9TdWJmcmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnBhc3NNb3VzZU1vdmVFdmVudFRvU3Vi
ZnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpwYXNzTW91c2VSZWxlYXNl
RXZlbnRUb1N1YmZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6dHJ5VG9C
ZWdpbkRyYWdBdFBvaW50KToKKyAgICAgICAgKiBwYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnBhc3NTdWJmcmFtZUV2ZW50VG9TdWJm
cmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnBhc3NNb3VzZVByZXNzRXZl
bnRUb1N1YmZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGFzc01vdXNl
TW92ZUV2ZW50VG9TdWJmcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnBh
c3NNb3VzZVJlbGVhc2VFdmVudFRvU3ViZnJhbWUpOgorICAgICAgICAqIHBhZ2Uvd2luL0V2ZW50
SGFuZGxlcldpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnBhc3NNb3Vz
ZU1vdmVFdmVudFRvU3ViZnJhbWUpOgorCiAyMDIwLTA1LTA0ICBTaW1vbiBGcmFzZXIgIDxzaW1v
bi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIE92ZXJmbG93IHNjcm9sbGJhcnMgZG9uJ3Qg
Z3JvdyB3aGVuIGhvdmVyZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQXV0b3Nj
cm9sbENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9BdXRvc2Nyb2xsQ29udHJv
bGxlci5jcHAKaW5kZXggN2IzZGU0MDQ1ZjIyZjg3ZWYyMTliYTFiZmZhZWQxMTA2ZjY0NWQ5YS4u
ZmEyYTc3YTgwODk0NzRkODI1ZjIzMTI1MjFhNjg4ZTA4ZWFhMzQxNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9BdXRvc2Nyb2xsQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9BdXRvc2Nyb2xsQ29udHJvbGxlci5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgdm9p
ZCBBdXRvc2Nyb2xsQ29udHJvbGxlcjo6c3RvcEF1dG9zY3JvbGxUaW1lcihib29sIHJlbmRlcmVy
SXNCZWluZ0Rlc3Ryb3llZCkKIAogICAgIEZyYW1lJiBmcmFtZSA9IHNjcm9sbGFibGUtPmZyYW1l
KCk7CiAgICAgaWYgKGF1dG9zY3JvbGxJblByb2dyZXNzKCkgJiYgZnJhbWUuZXZlbnRIYW5kbGVy
KCkubW91c2VEb3duV2FzSW5TdWJmcmFtZSgpKSB7Ci0gICAgICAgIGlmIChGcmFtZSogc3ViZnJh
bWUgPSBmcmFtZS5ldmVudEhhbmRsZXIoKS5zdWJmcmFtZUZvclRhcmdldE5vZGUoZnJhbWUuZXZl
bnRIYW5kbGVyKCkubW91c2VQcmVzc05vZGUoKSkpCisgICAgICAgIGlmIChhdXRvIHN1YmZyYW1l
ID0gZnJhbWUuZXZlbnRIYW5kbGVyKCkuc3ViZnJhbWVGb3JUYXJnZXROb2RlKGZyYW1lLmV2ZW50
SGFuZGxlcigpLm1vdXNlUHJlc3NOb2RlKCkpKQogICAgICAgICAgICAgc3ViZnJhbWUtPmV2ZW50
SGFuZGxlcigpLnN0b3BBdXRvc2Nyb2xsVGltZXIocmVuZGVyZXJJc0JlaW5nRGVzdHJveWVkKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApp
bmRleCA4ZDQxNzE3NzQ0MjM1YmY4MWNmYTA3NGUwYWI1NjIxYWUzOGIwNDM3Li41OGExZjNiMTUw
ZGFkNDdjMGYyZTYxODJkMTc2ZTk1M2RkMTc1MzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwCkBAIC0xMzIyLDE0ICsxMzIyLDE0IEBAIEludFBvaW50IEV2ZW50SGFuZGxlcjo6
bGFzdEtub3duTW91c2VQb3NpdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIG1fbGFzdEtub3duTW91
c2VQb3NpdGlvbjsKIH0KIAotRnJhbWUqIEV2ZW50SGFuZGxlcjo6c3ViZnJhbWVGb3JIaXRUZXN0
UmVzdWx0KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGhpdFRlc3RSZXN1bHQp
CitSZWZQdHI8RnJhbWU+IEV2ZW50SGFuZGxlcjo6c3ViZnJhbWVGb3JIaXRUZXN0UmVzdWx0KGNv
bnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGhpdFRlc3RSZXN1bHQpCiB7CiAgICAg
aWYgKCFoaXRUZXN0UmVzdWx0LmlzT3ZlcldpZGdldCgpKQotICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIHN1YmZyYW1lRm9yVGFyZ2V0Tm9kZSho
aXRUZXN0UmVzdWx0LnRhcmdldE5vZGUoKSk7CiB9CiAKLUZyYW1lKiBFdmVudEhhbmRsZXI6OnN1
YmZyYW1lRm9yVGFyZ2V0Tm9kZShOb2RlKiBub2RlKQorUmVmUHRyPEZyYW1lPiBFdmVudEhhbmRs
ZXI6OnN1YmZyYW1lRm9yVGFyZ2V0Tm9kZShOb2RlKiBub2RlKQogewogICAgIGlmICghbm9kZSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xNzUyLDcgKzE3NTIsNyBAQCBib29sIEV2ZW50
SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYg
cGxhdGZvcm1Nb3VzZQogCiAgICAgaWYgKCFwYXNzZWRUb1Njcm9sbGJhcikgewogICAgICAgICBS
ZWZQdHI8RnJhbWU+IHN1YmZyYW1lID0gc3ViZnJhbWVGb3JIaXRUZXN0UmVzdWx0KG1vdXNlRXZl
bnQpOwotICAgICAgICBpZiAoc3ViZnJhbWUgJiYgcGFzc01vdXNlUHJlc3NFdmVudFRvU3ViZnJh
bWUobW91c2VFdmVudCwgc3ViZnJhbWUuZ2V0KCkpKSB7CisgICAgICAgIGlmIChzdWJmcmFtZSAm
JiBwYXNzTW91c2VQcmVzc0V2ZW50VG9TdWJmcmFtZShtb3VzZUV2ZW50LCAqc3ViZnJhbWUpKSB7
CiAgICAgICAgICAgICAvLyBTdGFydCBjYXB0dXJpbmcgZnV0dXJlIGV2ZW50cyBmb3IgdGhpcyBm
cmFtZS4gV2Ugb25seSBkbyB0aGlzIGlmIHdlIGRpZG4ndCBjbGVhcgogICAgICAgICAgICAgLy8g
dGhlIG1fbW91c2VQcmVzc2VkIGZsYWcsIHdoaWNoIG1heSBoYXBwZW4gaWYgYW4gQXBwS2l0IHdp
ZGdldCBlbnRlcmVkIGEgbW9kYWwgZXZlbnQgbG9vcC4KICAgICAgICAgICAgIG1fY2FwdHVyZXNE
cmFnZ2luZyA9IHN1YmZyYW1lLT5ldmVudEhhbmRsZXIoKS5jYXB0dXJlc0RyYWdnaW5nKCk7CkBA
IC0xODUxLDEwICsxODUxLDEyIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZURvdWJs
ZUNsaWNrRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBwbGF0Zm9yCiAKICAgICBjb25z
dGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpSZXF1ZXN0VHlwZT4gaGl0VHlwZSB7IEhp
dFRlc3RSZXF1ZXN0OjpSZWxlYXNlLCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dVc2VyQWdlbnRT
aGFkb3dDb250ZW50IH07CiAgICAgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyBtb3VzZUV2
ZW50ID0gcHJlcGFyZU1vdXNlRXZlbnQoaGl0VHlwZSwgcGxhdGZvcm1Nb3VzZUV2ZW50KTsKLSAg
ICBGcmFtZSogc3ViZnJhbWUgPSBzdWJmcmFtZUZvckhpdFRlc3RSZXN1bHQobW91c2VFdmVudCk7
CisgICAgYXV0byBzdWJmcmFtZSA9IHN1YmZyYW1lRm9ySGl0VGVzdFJlc3VsdChtb3VzZUV2ZW50
KTsKKwogICAgIGlmIChtX2V2ZW50SGFuZGxlcldpbGxSZXNldENhcHR1cmluZ01vdXNlRXZlbnRz
RWxlbWVudCkKICAgICAgICAgbV9jYXB0dXJpbmdNb3VzZUV2ZW50c0VsZW1lbnQgPSBudWxscHRy
OwotICAgIGlmIChzdWJmcmFtZSAmJiBwYXNzTW91c2VQcmVzc0V2ZW50VG9TdWJmcmFtZShtb3Vz
ZUV2ZW50LCBzdWJmcmFtZSkpCisKKyAgICBpZiAoc3ViZnJhbWUgJiYgcGFzc01vdXNlUHJlc3NF
dmVudFRvU3ViZnJhbWUobW91c2VFdmVudCwgKnN1YmZyYW1lKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKICAgICBtX2NsaWNrQ291bnQgPSBwbGF0Zm9ybU1vdXNlRXZlbnQuY2xpY2tDb3VudCgp
OwpAQCAtMTkwMCwxNCArMTkwMiwxNCBAQCBib29sIEV2ZW50SGFuZGxlcjo6bW91c2VNb3ZlZChj
b25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KQogICAgIGlmIChtX2ZyYW1lLnBhZ2UoKSAm
JiBtX2ZyYW1lLnBhZ2UoKS0+cGFnZU92ZXJsYXlDb250cm9sbGVyKCkuaGFuZGxlTW91c2VFdmVu
dChldmVudCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgSGl0VGVzdFJlc3VsdCBob3Zl
cmVkTm9kZSA9IEhpdFRlc3RSZXN1bHQoTGF5b3V0UG9pbnQoKSk7Ci0gICAgYm9vbCByZXN1bHQg
PSBoYW5kbGVNb3VzZU1vdmVFdmVudChldmVudCwgJmhvdmVyZWROb2RlKTsKKyAgICBIaXRUZXN0
UmVzdWx0IGhpdFRlc3RSZXN1bHQ7CisgICAgYm9vbCByZXN1bHQgPSBoYW5kbGVNb3VzZU1vdmVF
dmVudChldmVudCwgJmhpdFRlc3RSZXN1bHQpOwogCiAgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUu
cGFnZSgpOwogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAotICAgIGlm
IChhdXRvIHNjcm9sbGVkQXJlYSA9IGVuY2xvc2luZ1Njcm9sbGFibGVBcmVhKGhvdmVyZWROb2Rl
LmlubmVyTm9kZSgpKSkgeworICAgIGlmIChhdXRvIHNjcm9sbGVkQXJlYSA9IGVuY2xvc2luZ1Nj
cm9sbGFibGVBcmVhKGhpdFRlc3RSZXN1bHQuaW5uZXJOb2RlKCkpKSB7CiAgICAgICAgIGlmIChG
cmFtZVZpZXcqIGZyYW1lVmlldyA9IG1fZnJhbWUudmlldygpKSB7CiAgICAgICAgICAgICBpZiAo
ZnJhbWVWaWV3LT5jb250YWluc1Njcm9sbGFibGVBcmVhKHNjcm9sbGVkQXJlYSkpCiAgICAgICAg
ICAgICAgICAgc2Nyb2xsZWRBcmVhLT5tb3VzZU1vdmVkSW5Db250ZW50QXJlYSgpOwpAQCAtMTkx
NywxOCArMTkxOSwxOCBAQCBib29sIEV2ZW50SGFuZGxlcjo6bW91c2VNb3ZlZChjb25zdCBQbGF0
Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KQogICAgIGlmIChGcmFtZVZpZXcqIGZyYW1lVmlldyA9IG1f
ZnJhbWUudmlldygpKQogICAgICAgICBmcmFtZVZpZXctPm1vdXNlTW92ZWRJbkNvbnRlbnRBcmVh
KCk7ICAKIAotICAgIGhvdmVyZWROb2RlLnNldFRvTm9uVXNlckFnZW50U2hhZG93QW5jZXN0b3Io
KTsKLSAgICBwYWdlLT5jaHJvbWUoKS5tb3VzZURpZE1vdmVPdmVyRWxlbWVudChob3ZlcmVkTm9k
ZSwgZXZlbnQubW9kaWZpZXJGbGFncygpKTsKKyAgICBoaXRUZXN0UmVzdWx0LnNldFRvTm9uVXNl
ckFnZW50U2hhZG93QW5jZXN0b3IoKTsKKyAgICBwYWdlLT5jaHJvbWUoKS5tb3VzZURpZE1vdmVP
dmVyRWxlbWVudChoaXRUZXN0UmVzdWx0LCBldmVudC5tb2RpZmllckZsYWdzKCkpOwogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKIGJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzTW91c2VNb3ZlZEV2ZW50
VG9TY3JvbGxiYXJzKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpCiB7Ci0gICAgSGl0
VGVzdFJlc3VsdCBob3ZlcmVkTm9kZTsKLSAgICByZXR1cm4gaGFuZGxlTW91c2VNb3ZlRXZlbnQo
ZXZlbnQsICZob3ZlcmVkTm9kZSwgdHJ1ZSk7CisgICAgSGl0VGVzdFJlc3VsdCBoaXRUZXN0UmVz
dWx0OworICAgIHJldHVybiBoYW5kbGVNb3VzZU1vdmVFdmVudChldmVudCwgJmhpdFRlc3RSZXN1
bHQsIHRydWUpOwogfQogCi1ib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VNb3ZlRXZlbnQo
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBwbGF0Zm9ybU1vdXNlRXZlbnQsIEhpdFRlc3RSZXN1
bHQqIGhvdmVyZWROb2RlLCBib29sIG9ubHlVcGRhdGVTY3JvbGxiYXJzKQorYm9vbCBFdmVudEhh
bmRsZXI6OmhhbmRsZU1vdXNlTW92ZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgcGxh
dGZvcm1Nb3VzZUV2ZW50LCBIaXRUZXN0UmVzdWx0KiBoaXRUZXN0UmVzdWx0LCBib29sIG9ubHlV
cGRhdGVTY3JvbGxiYXJzKQogewogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgYm9vbCBk
ZWZhdWx0UHJldmVudGVkID0gZGlzcGF0Y2hTeW50aGV0aWNUb3VjaEV2ZW50SWZFbmFibGVkKHBs
YXRmb3JtTW91c2VFdmVudCk7CkBAIC0xOTkyLDggKzE5OTQsOCBAQCBib29sIEV2ZW50SGFuZGxl
cjo6aGFuZGxlTW91c2VNb3ZlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBwbGF0Zm9y
bU1vdXNlRQogI2VuZGlmCiAgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChoaXRUeXBlKTsKICAg
ICBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzIG1vdXNlRXZlbnQgPSBwcmVwYXJlTW91c2VF
dmVudChyZXF1ZXN0LCBwbGF0Zm9ybU1vdXNlRXZlbnQpOwotICAgIGlmIChob3ZlcmVkTm9kZSkK
LSAgICAgICAgKmhvdmVyZWROb2RlID0gbW91c2VFdmVudC5oaXRUZXN0UmVzdWx0KCk7CisgICAg
aWYgKGhpdFRlc3RSZXN1bHQpCisgICAgICAgICpoaXRUZXN0UmVzdWx0ID0gbW91c2VFdmVudC5o
aXRUZXN0UmVzdWx0KCk7CiAKICAgICBpZiAobV9yZXNpemVMYXllciAmJiBtX3Jlc2l6ZUxheWVy
LT5pblJlc2l6ZU1vZGUoKSkKICAgICAgICAgbV9yZXNpemVMYXllci0+cmVzaXplKHBsYXRmb3Jt
TW91c2VFdmVudCwgbV9vZmZzZXRGcm9tUmVzaXplQ29ybmVyKTsKQEAgLTIwMTksNyArMjAyMSw3
IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZU1vdmVFdmVudChjb25zdCBQbGF0Zm9y
bU1vdXNlRXZlbnQmIHBsYXRmb3JtTW91c2VFCiAgCiAgICAgLy8gV2Ugd2FudCBtb3VzZW91dHMg
dG8gaGFwcGVuIGZpcnN0LCBmcm9tIHRoZSBpbnNpZGUgb3V0LiAgRmlyc3Qgc2VuZCBhIG1vdmUg
ZXZlbnQgdG8gdGhlIGxhc3Qgc3ViZnJhbWUgc28gdGhhdCBpdCB3aWxsIGZpcmUgbW91c2VvdXRz
LgogICAgIGlmIChtX2xhc3RNb3VzZU1vdmVFdmVudFN1YmZyYW1lICYmIG1fbGFzdE1vdXNlTW92
ZUV2ZW50U3ViZnJhbWUtPnRyZWUoKS5pc0Rlc2NlbmRhbnRPZigmbV9mcmFtZSkgJiYgbV9sYXN0
TW91c2VNb3ZlRXZlbnRTdWJmcmFtZSAhPSBuZXdTdWJmcmFtZSkKLSAgICAgICAgcGFzc01vdXNl
TW92ZUV2ZW50VG9TdWJmcmFtZShtb3VzZUV2ZW50LCBtX2xhc3RNb3VzZU1vdmVFdmVudFN1YmZy
YW1lLmdldCgpKTsKKyAgICAgICAgcGFzc01vdXNlTW92ZUV2ZW50VG9TdWJmcmFtZShtb3VzZUV2
ZW50LCAqbV9sYXN0TW91c2VNb3ZlRXZlbnRTdWJmcmFtZSk7CiAKICAgICBpZiAobmV3U3ViZnJh
bWUpIHsKICAgICAgICAgLy8gVXBkYXRlIG92ZXIvb3V0IHN0YXRlIGJlZm9yZSBwYXNzaW5nIHRo
ZSBldmVudCB0byB0aGUgc3ViZnJhbWUuCkBAIC0yMDI4LDcgKzIwMzAsNyBAQCBib29sIEV2ZW50
SGFuZGxlcjo6aGFuZGxlTW91c2VNb3ZlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBw
bGF0Zm9ybU1vdXNlRQogICAgICAgICAvLyBFdmVudCBkaXNwYXRjaCBpbiB1cGRhdGVNb3VzZUV2
ZW50VGFyZ2V0Tm9kZSBtYXkgaGF2ZSBjYXVzZWQgdGhlIHN1YmZyYW1lIG9mIHRoZSB0YXJnZXQK
ICAgICAgICAgLy8gbm9kZSB0byBiZSBkZXRhY2hlZCBmcm9tIGl0cyBGcmFtZVZpZXcsIGluIHdo
aWNoIGNhc2UgdGhlIGV2ZW50IHNob3VsZCBub3QgYmUgcGFzc2VkLgogICAgICAgICBpZiAobmV3
U3ViZnJhbWUtPnZpZXcoKSkKLSAgICAgICAgICAgIHN3YWxsb3dFdmVudCB8PSBwYXNzTW91c2VN
b3ZlRXZlbnRUb1N1YmZyYW1lKG1vdXNlRXZlbnQsIG5ld1N1YmZyYW1lLmdldCgpLCBob3ZlcmVk
Tm9kZSk7CisgICAgICAgICAgICBzd2FsbG93RXZlbnQgfD0gcGFzc01vdXNlTW92ZUV2ZW50VG9T
dWJmcmFtZShtb3VzZUV2ZW50LCAqbmV3U3ViZnJhbWUsIGhpdFRlc3RSZXN1bHQpOwogICAgIH0K
IAogICAgIGlmICghbmV3U3ViZnJhbWUgfHwgbW91c2VFdmVudC5zY3JvbGxiYXIoKSkgewpAQCAt
MjE0OCwxMCArMjE1MCwxMCBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VSZWxlYXNl
RXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBwbGF0Zm9ybU1vdQogCiAgICAgY29uc3Rl
eHByIE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6UmVxdWVzdFR5cGU+IGhpdFR5cGUgeyBIaXRU
ZXN0UmVxdWVzdDo6UmVsZWFzZSwgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93VXNlckFnZW50U2hh
ZG93Q29udGVudCB9OwogICAgIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgbW91c2VFdmVu
dCA9IHByZXBhcmVNb3VzZUV2ZW50KGhpdFR5cGUsIHBsYXRmb3JtTW91c2VFdmVudCk7Ci0gICAg
RnJhbWUqIHN1YmZyYW1lID0gbV9jYXB0dXJpbmdNb3VzZUV2ZW50c0VsZW1lbnQuZ2V0KCkgPyBz
dWJmcmFtZUZvclRhcmdldE5vZGUobV9jYXB0dXJpbmdNb3VzZUV2ZW50c0VsZW1lbnQuZ2V0KCkp
IDogc3ViZnJhbWVGb3JIaXRUZXN0UmVzdWx0KG1vdXNlRXZlbnQpOworICAgIFJlZlB0cjxGcmFt
ZT4gc3ViZnJhbWUgPSBtX2NhcHR1cmluZ01vdXNlRXZlbnRzRWxlbWVudC5nZXQoKSA/IHN1YmZy
YW1lRm9yVGFyZ2V0Tm9kZShtX2NhcHR1cmluZ01vdXNlRXZlbnRzRWxlbWVudC5nZXQoKSkgOiBz
dWJmcmFtZUZvckhpdFRlc3RSZXN1bHQobW91c2VFdmVudCk7CiAgICAgaWYgKG1fZXZlbnRIYW5k
bGVyV2lsbFJlc2V0Q2FwdHVyaW5nTW91c2VFdmVudHNFbGVtZW50KQogICAgICAgICBtX2NhcHR1
cmluZ01vdXNlRXZlbnRzRWxlbWVudCA9IG51bGxwdHI7Ci0gICAgaWYgKHN1YmZyYW1lICYmIHBh
c3NNb3VzZVJlbGVhc2VFdmVudFRvU3ViZnJhbWUobW91c2VFdmVudCwgc3ViZnJhbWUpKQorICAg
IGlmIChzdWJmcmFtZSAmJiBwYXNzTW91c2VSZWxlYXNlRXZlbnRUb1N1YmZyYW1lKG1vdXNlRXZl
bnQsICpzdWJmcmFtZSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgYm9vbCBzd2FsbG93
TW91c2VVcEV2ZW50ID0gIWRpc3BhdGNoTW91c2VFdmVudChldmVudE5hbWVzKCkubW91c2V1cEV2
ZW50LCBtb3VzZUV2ZW50LnRhcmdldE5vZGUoKSwgdHJ1ZSwgbV9jbGlja0NvdW50LCBwbGF0Zm9y
bU1vdXNlRXZlbnQsIGZhbHNlKTsKQEAgLTQwNTAsMTIgKzQwNTIsMTIgQEAgdm9pZCBFdmVudEhh
bmRsZXI6OnNldEZyYW1lV2FzU2Nyb2xsZWRCeVVzZXIoKQogICAgICAgICB2LT5zZXRXYXNTY3Jv
bGxlZEJ5VXNlcih0cnVlKTsKIH0KIAotYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NNb3VzZVByZXNz
RXZlbnRUb1Njcm9sbGJhcihNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBtb3VzZUV2ZW50
LCBTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2Jvb2wgRXZlbnRIYW5kbGVyOjpwYXNzTW91c2VQcmVz
c0V2ZW50VG9TY3JvbGxiYXIoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgbW91c2VFdmVu
dEFuZFJlc3VsdCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiB7CiAgICAgaWYgKCFzY3JvbGxiYXIg
fHwgIXNjcm9sbGJhci0+ZW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgc2V0
RnJhbWVXYXNTY3JvbGxlZEJ5VXNlcigpOwotICAgIHJldHVybiBzY3JvbGxiYXItPm1vdXNlRG93
bihtb3VzZUV2ZW50LmV2ZW50KCkpOworICAgIHJldHVybiBzY3JvbGxiYXItPm1vdXNlRG93biht
b3VzZUV2ZW50QW5kUmVzdWx0LmV2ZW50KCkpOwogfQogCiAvLyBJZiBzY3JvbGxiYXIgKHVuZGVy
IG1vdXNlKSBpcyBkaWZmZXJlbnQgZnJvbSBsYXN0LCBzZW5kIGEgbW91c2UgZXhpdGVkLgpAQCAt
NDM1NiwxNSArNDM1OCwxNSBAQCBPcHRpb25TZXQ8UGxhdGZvcm1FdmVudDo6TW9kaWZpZXI+IEV2
ZW50SGFuZGxlcjo6YWNjZXNzS2V5TW9kaWZpZXJzKCkKICAgICByZXR1cm4gUGxhdGZvcm1FdmVu
dDo6TW9kaWZpZXI6OkFsdEtleTsKIH0KIAotYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NNb3VzZVBy
ZXNzRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIG1ldiwgRnJh
bWUqIHN1YmZyYW1lKQorYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NNb3VzZVByZXNzRXZlbnRUb1N1
YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIG1vdXNlRXZlbnRBbmRSZXN1bHQs
IEZyYW1lJiBzdWJmcmFtZSkKIHsKLSAgICBzdWJmcmFtZS0+ZXZlbnRIYW5kbGVyKCkuaGFuZGxl
TW91c2VQcmVzc0V2ZW50KG1ldi5ldmVudCgpKTsKKyAgICBzdWJmcmFtZS5ldmVudEhhbmRsZXIo
KS5oYW5kbGVNb3VzZVByZXNzRXZlbnQobW91c2VFdmVudEFuZFJlc3VsdC5ldmVudCgpKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NNb3VzZVJlbGVhc2VF
dmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgbWV2LCBGcmFtZSog
c3ViZnJhbWUpCitib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUmVsZWFzZUV2ZW50VG9TdWJm
cmFtZShNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBtb3VzZUV2ZW50QW5kUmVzdWx0LCBG
cmFtZSYgc3ViZnJhbWUpCiB7Ci0gICAgc3ViZnJhbWUtPmV2ZW50SGFuZGxlcigpLmhhbmRsZU1v
dXNlUmVsZWFzZUV2ZW50KG1ldi5ldmVudCgpKTsKKyAgICBzdWJmcmFtZS5ldmVudEhhbmRsZXIo
KS5oYW5kbGVNb3VzZVJlbGVhc2VFdmVudChtb3VzZUV2ZW50QW5kUmVzdWx0LmV2ZW50KCkpOwog
ICAgIHJldHVybiB0cnVlOwogfQogCkBAIC00MzgyLDE0ICs0Mzg0LDEzIEBAIGJvb2wgRXZlbnRI
YW5kbGVyOjp0YWJzVG9BbGxGb3JtQ29udHJvbHMoS2V5Ym9hcmRFdmVudCopIGNvbnN0CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzV2lkZ2V0TW91c2VEb3du
RXZlbnRUb1dpZGdldChSZW5kZXJXaWRnZXQqIHJlbmRlcldpZGdldCkKK2Jvb2wgRXZlbnRIYW5k
bGVyOjpwYXNzV2lkZ2V0TW91c2VEb3duRXZlbnRUb1dpZGdldChSZW5kZXJXaWRnZXQmIHJlbmRl
cldpZGdldCkKIHsKICAgICByZXR1cm4gcGFzc01vdXNlRG93bkV2ZW50VG9XaWRnZXQocmVuZGVy
V2lkZ2V0LT53aWRnZXQoKSk7CiB9CiAKIGJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzV2lkZ2V0TW91
c2VEb3duRXZlbnRUb1dpZGdldChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBl
dmVudCkKIHsKLSAgICAvLyBGaWd1cmUgb3V0IHdoaWNoIHZpZXcgdG8gc2VuZCB0aGUgZXZlbnQg
dG8uCiAgICAgUmVuZGVyT2JqZWN0KiB0YXJnZXQgPSBldmVudC50YXJnZXROb2RlKCkgPyBldmVu
dC50YXJnZXROb2RlKCktPnJlbmRlcmVyKCkgOiBudWxscHRyOwogICAgIGlmICghaXM8UmVuZGVy
V2lkZ2V0Pih0YXJnZXQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00NDE2LDkgKzQ0MTcs
OSBAQCBib29sIEV2ZW50SGFuZGxlcjo6ZXZlbnRBY3RpdmF0ZWRWaWV3KGNvbnN0IFBsYXRmb3Jt
TW91c2VFdmVudCYpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEV2ZW50SGFu
ZGxlcjo6cGFzc01vdXNlTW92ZUV2ZW50VG9TdWJmcmFtZShNb3VzZUV2ZW50V2l0aEhpdFRlc3RS
ZXN1bHRzJiBtZXYsIEZyYW1lKiBzdWJmcmFtZSwgSGl0VGVzdFJlc3VsdCogaG92ZXJlZE5vZGUp
Citib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlTW92ZUV2ZW50VG9TdWJmcmFtZShNb3VzZUV2
ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBtb3VzZUV2ZW50QW5kUmVzdWx0LCBGcmFtZSogc3ViZnJh
bWUsIEhpdFRlc3RSZXN1bHQqIHJlc3VsdCkKIHsKLSAgICBzdWJmcmFtZS0+ZXZlbnRIYW5kbGVy
KCkuaGFuZGxlTW91c2VNb3ZlRXZlbnQobWV2LmV2ZW50KCksIGhvdmVyZWROb2RlKTsKKyAgICBz
dWJmcmFtZS0+ZXZlbnRIYW5kbGVyKCkuaGFuZGxlTW91c2VNb3ZlRXZlbnQobW91c2VFdmVudEFu
ZFJlc3VsdC5ldmVudCgpLCByZXN1bHQpOwogICAgIHJldHVybiB0cnVlOwogfQogI2VuZGlmIC8v
ICFQTEFURk9STShDT0NPQSkgJiYgIVBMQVRGT1JNKFdJTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFu
ZGxlci5oCmluZGV4IGJiMDE0YzZhODNhOGU0MDFjNGQwOWE0NmFiN2E0ZDJhMWE5ZGU3NjUuLjVi
NDY0NDBlMjhhMTUzNmU3ZTk2YjJmNzE5YzJkZjRkOTg5YTc2MzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuaApAQCAtMTg3LDggKzE4Nyw4IEBAIHB1YmxpYzoKICAgICBJbnRQb2ludCB0
YXJnZXRQb3NpdGlvbkluV2luZG93Rm9yU2VsZWN0aW9uQXV0b3Njcm9sbCgpIGNvbnN0OwogICAg
IGJvb2wgc2hvdWxkVXBkYXRlQXV0b3Njcm9sbCgpOwogCi0gICAgc3RhdGljIEZyYW1lKiBzdWJm
cmFtZUZvclRhcmdldE5vZGUoTm9kZSopOwotICAgIHN0YXRpYyBGcmFtZSogc3ViZnJhbWVGb3JI
aXRUZXN0UmVzdWx0KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmKTsKKyAgICBz
dGF0aWMgUmVmUHRyPEZyYW1lPiBzdWJmcmFtZUZvclRhcmdldE5vZGUoTm9kZSopOworICAgIHN0
YXRpYyBSZWZQdHI8RnJhbWU+IHN1YmZyYW1lRm9ySGl0VGVzdFJlc3VsdChjb25zdCBNb3VzZUV2
ZW50V2l0aEhpdFRlc3RSZXN1bHRzJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNjcm9s
bE92ZXJmbG93KFNjcm9sbERpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHksIE5vZGUqIHN0YXJ0
aW5nTm9kZSA9IG51bGxwdHIpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2Nyb2xsUmVjdXJz
aXZlbHkoU2Nyb2xsRGlyZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0eSwgTm9kZSogc3RhcnRpbmdO
b2RlID0gbnVsbHB0cik7CkBAIC0yMDMsNyArMjAzLDcgQEAgcHVibGljOgogICAgIHZvaWQgbG9z
dE1vdXNlQ2FwdHVyZSgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYW5kbGVNb3VzZVBy
ZXNzRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7Ci0gICAgYm9vbCBoYW5kbGVNb3Vz
ZU1vdmVFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBIaXRUZXN0UmVzdWx0KiBob3Zl
cmVkTm9kZSA9IG51bGxwdHIsIGJvb2wgb25seVVwZGF0ZVNjcm9sbGJhcnMgPSBmYWxzZSk7Cisg
ICAgYm9vbCBoYW5kbGVNb3VzZU1vdmVFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBI
aXRUZXN0UmVzdWx0KiA9IG51bGxwdHIsIGJvb2wgb25seVVwZGF0ZVNjcm9sbGJhcnMgPSBmYWxz
ZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYW5kbGVNb3VzZVJlbGVhc2VFdmVudChjb25z
dCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKICAgICBib29sIGhhbmRsZU1vdXNlRm9yY2VFdmVudChj
b25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhbmRs
ZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7CkBAIC00MzAsMTEgKzQzMCwx
MSBAQCBwcml2YXRlOgogICAgIAogICAgIGJvb2wgbW91c2VNb3ZlbWVudEV4Y2VlZHNUaHJlc2hv
bGQoY29uc3QgRmxvYXRQb2ludCYsIGludCBwb2ludHNUaHJlc2hvbGQpIGNvbnN0OwogCi0gICAg
Ym9vbCBwYXNzTW91c2VQcmVzc0V2ZW50VG9TdWJmcmFtZShNb3VzZUV2ZW50V2l0aEhpdFRlc3RS
ZXN1bHRzJiwgRnJhbWUqIHN1YmZyYW1lKTsKLSAgICBib29sIHBhc3NNb3VzZU1vdmVFdmVudFRv
U3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYsIEZyYW1lKiBzdWJmcmFtZSwg
SGl0VGVzdFJlc3VsdCogaG92ZXJlZE5vZGUgPSBudWxscHRyKTsKLSAgICBib29sIHBhc3NNb3Vz
ZVJlbGVhc2VFdmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYsIEZy
YW1lKiBzdWJmcmFtZSk7CisgICAgYm9vbCBwYXNzTW91c2VQcmVzc0V2ZW50VG9TdWJmcmFtZShN
b3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiwgRnJhbWUmKTsKKyAgICBib29sIHBhc3NNb3Vz
ZU1vdmVFdmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYsIEZyYW1l
JiwgSGl0VGVzdFJlc3VsdCogPSBudWxscHRyKTsKKyAgICBib29sIHBhc3NNb3VzZVJlbGVhc2VF
dmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYsIEZyYW1lJik7CiAK
LSAgICBib29sIHBhc3NTdWJmcmFtZUV2ZW50VG9TdWJmcmFtZShNb3VzZUV2ZW50V2l0aEhpdFRl
c3RSZXN1bHRzJiwgRnJhbWUqIHN1YmZyYW1lLCBIaXRUZXN0UmVzdWx0KiBob3ZlcmVkTm9kZSA9
IG51bGxwdHIpOworICAgIGJvb2wgcGFzc1N1YmZyYW1lRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZl
bnRXaXRoSGl0VGVzdFJlc3VsdHMmLCBGcmFtZSYsIEhpdFRlc3RSZXN1bHQqID0gbnVsbHB0cik7
CiAKICAgICBib29sIHBhc3NNb3VzZVByZXNzRXZlbnRUb1Njcm9sbGJhcihNb3VzZUV2ZW50V2l0
aEhpdFRlc3RSZXN1bHRzJiwgU2Nyb2xsYmFyKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvaW9zL0V2ZW50SGFuZGxlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9z
L0V2ZW50SGFuZGxlcklPUy5tbQppbmRleCAyOWJkZmNjOTY0MDlmMzYyNDJhMGI0MjI5YWI0YTFh
ZmEyNGY5N2E4Li5lNzczMmNhMjU0MmEzNzYxYzQ0N2I0NWVlYTI4Yzk0ODZjYmExZTUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9FdmVudEhhbmRsZXJJT1MubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRXZlbnRIYW5kbGVySU9TLm1tCkBAIC0zNjQsNyArMzY0
LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmV2ZW50TG9vcEhhbmRsZU1vdXNlVXAoY29uc3QgTW91
c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAgICAgCi1i
b29sIEV2ZW50SGFuZGxlcjo6cGFzc1N1YmZyYW1lRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRX
aXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50LCBGcmFtZSogc3ViZnJhbWUsIEhpdFRlc3RSZXN1bHQq
IGhvdmVyZWROb2RlKQorYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NTdWJmcmFtZUV2ZW50VG9TdWJm
cmFtZShNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCwgRnJhbWUmIHN1YmZyYW1l
LCBIaXRUZXN0UmVzdWx0KiBoaXRUZXN0UmVzdWx0KQogewogICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUzsKIApAQCAtMzc2LDcgKzM3Niw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpwYXNz
U3ViZnJhbWVFdmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZl
CiAgICAgICAgIC8vIGN1cnJlbnROU0V2ZW50KCkgdGhhdCBtb3VzZU1vdmVkKCkgZG9lcyB3b3Vs
ZCBoYXZlIG5vIGVmZmVjdC4KICAgICAgICAgQVNTRVJUKCFtX3NlbmRpbmdFdmVudFRvU3Vidmll
dyk7CiAgICAgICAgIG1fc2VuZGluZ0V2ZW50VG9TdWJ2aWV3ID0gdHJ1ZTsKLSAgICAgICAgc3Vi
ZnJhbWUtPmV2ZW50SGFuZGxlcigpLmhhbmRsZU1vdXNlTW92ZUV2ZW50KGN1cnJlbnRQbGF0Zm9y
bU1vdXNlRXZlbnQoKSwgaG92ZXJlZE5vZGUpOworICAgICAgICBzdWJmcmFtZS5ldmVudEhhbmRs
ZXIoKS5oYW5kbGVNb3VzZU1vdmVFdmVudChjdXJyZW50UGxhdGZvcm1Nb3VzZUV2ZW50KCksIGhp
dFRlc3RSZXN1bHQpOwogICAgICAgICBtX3NlbmRpbmdFdmVudFRvU3VidmlldyA9IGZhbHNlOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC00MDAsNyArNDAwLDcgQEAgYm9vbCBFdmVu
dEhhbmRsZXI6OnBhc3NTdWJmcmFtZUV2ZW50VG9TdWJmcmFtZShNb3VzZUV2ZW50V2l0aEhpdFRl
c3RSZXN1bHRzJiBldmUKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgQVNTRVJU
KCFtX3NlbmRpbmdFdmVudFRvU3Vidmlldyk7CiAgICAgICAgIG1fc2VuZGluZ0V2ZW50VG9TdWJ2
aWV3ID0gdHJ1ZTsKLSAgICAgICAgc3ViZnJhbWUtPmV2ZW50SGFuZGxlcigpLmhhbmRsZU1vdXNl
UmVsZWFzZUV2ZW50KGN1cnJlbnRQbGF0Zm9ybU1vdXNlRXZlbnQoKSk7CisgICAgICAgIHN1YmZy
YW1lLmV2ZW50SGFuZGxlcigpLmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KGN1cnJlbnRQbGF0Zm9y
bU1vdXNlRXZlbnQoKSk7CiAgICAgICAgIG1fc2VuZGluZ0V2ZW50VG9TdWJ2aWV3ID0gZmFsc2U7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTUzMywzNSArNTMzLDM1IEBAIHZvaWQg
RXZlbnRIYW5kbGVyOjpkaXNwYXRjaFN5bnRoZXRpY01vdXNlTW92ZShjb25zdCBQbGF0Zm9ybU1v
dXNlRXZlbnQmIHBsYXRmb3JtCiAgICAgbW91c2VNb3ZlZChwbGF0Zm9ybU1vdXNlRXZlbnQpOwog
fQogCi1ib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUHJlc3NFdmVudFRvU3ViZnJhbWUoTW91
c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgbWV2LCBGcmFtZSogc3ViZnJhbWUpCitib29sIEV2
ZW50SGFuZGxlcjo6cGFzc01vdXNlUHJlc3NFdmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhI
aXRUZXN0UmVzdWx0cyYgbW91c2VFdmVudEFuZFJlc3VsdCwgRnJhbWUmIHN1YmZyYW1lKQogewog
ICAgIC8vIFdlYktpdDEgY29kZSBwYXRoLgogICAgIGlmIChmcmFtZUhhc1BsYXRmb3JtV2lkZ2V0
KG1fZnJhbWUpKQotICAgICAgICByZXR1cm4gcGFzc1N1YmZyYW1lRXZlbnRUb1N1YmZyYW1lKG1l
diwgc3ViZnJhbWUpOworICAgICAgICByZXR1cm4gcGFzc1N1YmZyYW1lRXZlbnRUb1N1YmZyYW1l
KG1vdXNlRXZlbnRBbmRSZXN1bHQsIHN1YmZyYW1lKTsKIAogICAgIC8vIFdlYktpdDIgY29kZSBw
YXRoLgotICAgIHN1YmZyYW1lLT5ldmVudEhhbmRsZXIoKS5oYW5kbGVNb3VzZVByZXNzRXZlbnQo
bWV2LmV2ZW50KCkpOworICAgIHN1YmZyYW1lLmV2ZW50SGFuZGxlcigpLmhhbmRsZU1vdXNlUHJl
c3NFdmVudChtb3VzZUV2ZW50QW5kUmVzdWx0LmV2ZW50KCkpOwogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlTW92ZUV2ZW50VG9TdWJmcmFtZShNb3Vz
ZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBtZXYsIEZyYW1lKiBzdWJmcmFtZSwgSGl0VGVzdFJl
c3VsdCogaG92ZXJlZE5vZGUpCitib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlTW92ZUV2ZW50
VG9TdWJmcmFtZShNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBtb3VzZUV2ZW50QW5kUmVz
dWx0LCBGcmFtZSYgc3ViZnJhbWUsIEhpdFRlc3RSZXN1bHQqIGhpdFRlc3RSZXN1bHQpCiB7CiAg
ICAgLy8gV2ViS2l0MSBjb2RlIHBhdGguCiAgICAgaWYgKGZyYW1lSGFzUGxhdGZvcm1XaWRnZXQo
bV9mcmFtZSkpCi0gICAgICAgIHJldHVybiBwYXNzU3ViZnJhbWVFdmVudFRvU3ViZnJhbWUobWV2
LCBzdWJmcmFtZSwgaG92ZXJlZE5vZGUpOworICAgICAgICByZXR1cm4gcGFzc1N1YmZyYW1lRXZl
bnRUb1N1YmZyYW1lKG1vdXNlRXZlbnRBbmRSZXN1bHQsIHN1YmZyYW1lLCBoaXRUZXN0UmVzdWx0
KTsKIAotICAgIHN1YmZyYW1lLT5ldmVudEhhbmRsZXIoKS5oYW5kbGVNb3VzZU1vdmVFdmVudCht
ZXYuZXZlbnQoKSwgaG92ZXJlZE5vZGUpOworICAgIHN1YmZyYW1lLmV2ZW50SGFuZGxlcigpLmhh
bmRsZU1vdXNlTW92ZUV2ZW50KG1vdXNlRXZlbnRBbmRSZXN1bHQuZXZlbnQoKSwgaGl0VGVzdFJl
c3VsdCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzTW91
c2VSZWxlYXNlRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIG1l
diwgRnJhbWUqIHN1YmZyYW1lKQorYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NNb3VzZVJlbGVhc2VF
dmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgbW91c2VFdmVudEFu
ZFJlc3VsdCwgRnJhbWUmIHN1YmZyYW1lKQogewogICAgIC8vIFdlYktpdDEgY29kZSBwYXRoLgog
ICAgIGlmIChmcmFtZUhhc1BsYXRmb3JtV2lkZ2V0KG1fZnJhbWUpKQotICAgICAgICByZXR1cm4g
cGFzc1N1YmZyYW1lRXZlbnRUb1N1YmZyYW1lKG1ldiwgc3ViZnJhbWUpOworICAgICAgICByZXR1
cm4gcGFzc1N1YmZyYW1lRXZlbnRUb1N1YmZyYW1lKG1vdXNlRXZlbnRBbmRSZXN1bHQsIHN1YmZy
YW1lKTsKIAogICAgIC8vIFdlYktpdDIgY29kZSBwYXRoLgotICAgIHN1YmZyYW1lLT5ldmVudEhh
bmRsZXIoKS5oYW5kbGVNb3VzZVJlbGVhc2VFdmVudChtZXYuZXZlbnQoKSk7CisgICAgc3ViZnJh
bWUuZXZlbnRIYW5kbGVyKCkuaGFuZGxlTW91c2VSZWxlYXNlRXZlbnQobW91c2VFdmVudEFuZFJl
c3VsdC5ldmVudCgpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNzEyLDcgKzcxMiw3IEBA
IGJvb2wgRXZlbnRIYW5kbGVyOjp0cnlUb0JlZ2luRHJhZ0F0UG9pbnQoY29uc3QgSW50UG9pbnQm
IGNsaWVudFBvc2l0aW9uLCBjb25zdCBJCiAgICAgYXV0byBkb2N1bWVudFBvaW50ID0gcHJvdGVj
dGVkRnJhbWUtPnZpZXcoKSA/IHByb3RlY3RlZEZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVu
dHMoc3ludGhldGljTW91c2VNb3ZlRXZlbnQucG9zaXRpb24oKSkgOiBzeW50aGV0aWNNb3VzZU1v
dmVFdmVudC5wb3NpdGlvbigpOwogICAgIGF1dG8gaGl0VGVzdGVkTW91c2VFdmVudCA9IGRvY3Vt
ZW50LT5wcmVwYXJlTW91c2VFdmVudChoaXRUeXBlLCBkb2N1bWVudFBvaW50LCBzeW50aGV0aWNN
b3VzZU1vdmVFdmVudCk7CiAKLSAgICBSZWZQdHI8RnJhbWU+IHN1YmZyYW1lID0gc3ViZnJhbWVG
b3JIaXRUZXN0UmVzdWx0KGhpdFRlc3RlZE1vdXNlRXZlbnQpOworICAgIGF1dG8gc3ViZnJhbWUg
PSBzdWJmcmFtZUZvckhpdFRlc3RSZXN1bHQoaGl0VGVzdGVkTW91c2VFdmVudCk7CiAgICAgaWYg
KHN1YmZyYW1lICYmIHN1YmZyYW1lLT5ldmVudEhhbmRsZXIoKS50cnlUb0JlZ2luRHJhZ0F0UG9p
bnQoYWRqdXN0ZWRDbGllbnRQb3NpdGlvbiwgYWRqdXN0ZWRHbG9iYWxQb3NpdGlvbikpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9F
dmVudEhhbmRsZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJN
YWMubW0KaW5kZXggNzY3ZGQyYTZhMmYyMGI3ZDBiOTFmZmMzNmUxMWFiZmYyZTNiOGQyZS4uN2Zk
ZDc0MjhkOWU5ZWZkZGMzZjM1M2VkNTRmMjhhYzZiNGE0MWJjMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQpAQCAtMzc1LDcgKzM3NSw3IEBAIGJvb2wgRXZl
bnRIYW5kbGVyOjpldmVudExvb3BIYW5kbGVNb3VzZVVwKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0
VGVzdFJlc3VsdHMmKQogICAgIHJldHVybiB0cnVlOwogfQogICAgIAotYm9vbCBFdmVudEhhbmRs
ZXI6OnBhc3NTdWJmcmFtZUV2ZW50VG9TdWJmcmFtZShNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1
bHRzJiBldmVudCwgRnJhbWUqIHN1YmZyYW1lLCBIaXRUZXN0UmVzdWx0KiBob3ZlcmVkTm9kZSkK
K2Jvb2wgRXZlbnRIYW5kbGVyOjpwYXNzU3ViZnJhbWVFdmVudFRvU3ViZnJhbWUoTW91c2VFdmVu
dFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQsIEZyYW1lJiBzdWJmcmFtZSwgSGl0VGVzdFJlc3Vs
dCogaGl0VGVzdFJlc3VsdCkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAK
QEAgLTM4OCw3ICszODgsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6cGFzc1N1YmZyYW1lRXZlbnRU
b1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZQogICAgICAgICBpZiAo
IW1fbW91c2VEb3duV2FzSW5TdWJmcmFtZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICNp
ZiBFTkFCTEUoRFJBR19TVVBQT1JUKQotICAgICAgICBpZiAoc3ViZnJhbWUtPnBhZ2UoKS0+ZHJh
Z0NvbnRyb2xsZXIoKS5kaWRJbml0aWF0ZURyYWcoKSkKKyAgICAgICAgaWYgKHN1YmZyYW1lLnBh
Z2UoKS0+ZHJhZ0NvbnRyb2xsZXIoKS5kaWRJbml0aWF0ZURyYWcoKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICNlbmRpZgogICAgIGNhc2UgTlNFdmVudFR5cGVNb3VzZU1vdmVkOgpAQCAt
Mzk3LDcgKzM5Nyw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzU3ViZnJhbWVFdmVudFRvU3Vi
ZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlCiAgICAgICAgIC8vIGN1cnJl
bnROU0V2ZW50KCkgdGhhdCBtb3VzZU1vdmVkKCkgZG9lcyB3b3VsZCBoYXZlIG5vIGVmZmVjdC4K
ICAgICAgICAgQVNTRVJUKCFtX3NlbmRpbmdFdmVudFRvU3Vidmlldyk7CiAgICAgICAgIG1fc2Vu
ZGluZ0V2ZW50VG9TdWJ2aWV3ID0gdHJ1ZTsKLSAgICAgICAgc3ViZnJhbWUtPmV2ZW50SGFuZGxl
cigpLmhhbmRsZU1vdXNlTW92ZUV2ZW50KGN1cnJlbnRQbGF0Zm9ybU1vdXNlRXZlbnQoKSwgaG92
ZXJlZE5vZGUpOworICAgICAgICBzdWJmcmFtZS5ldmVudEhhbmRsZXIoKS5oYW5kbGVNb3VzZU1v
dmVFdmVudChjdXJyZW50UGxhdGZvcm1Nb3VzZUV2ZW50KCksIGhpdFRlc3RSZXN1bHQpOwogICAg
ICAgICBtX3NlbmRpbmdFdmVudFRvU3VidmlldyA9IGZhbHNlOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgCkBAIC00MjEsNyArNDIxLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NT
dWJmcmFtZUV2ZW50VG9TdWJmcmFtZShNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmUK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgQVNTRVJUKCFtX3NlbmRpbmdFdmVu
dFRvU3Vidmlldyk7CiAgICAgICAgIG1fc2VuZGluZ0V2ZW50VG9TdWJ2aWV3ID0gdHJ1ZTsKLSAg
ICAgICAgc3ViZnJhbWUtPmV2ZW50SGFuZGxlcigpLmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KGN1
cnJlbnRQbGF0Zm9ybU1vdXNlRXZlbnQoKSk7CisgICAgICAgIHN1YmZyYW1lLmV2ZW50SGFuZGxl
cigpLmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KGN1cnJlbnRQbGF0Zm9ybU1vdXNlRXZlbnQoKSk7
CiAgICAgICAgIG1fc2VuZGluZ0V2ZW50VG9TdWJ2aWV3ID0gZmFsc2U7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KQEAgLTY4MywyMiArNjgzLDIyIEBAIHN0YXRpYyBib29sIGZyYW1lSGFz
UGxhdGZvcm1XaWRnZXQoY29uc3QgRnJhbWUmIGZyYW1lKQogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NNb3VzZVByZXNzRXZlbnRUb1N1YmZyYW1lKE1vdXNl
RXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIG1ldiwgRnJhbWUqIHN1YmZyYW1lKQorYm9vbCBFdmVu
dEhhbmRsZXI6OnBhc3NNb3VzZVByZXNzRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0
VGVzdFJlc3VsdHMmIG1vdXNlRXZlbnRBbmRSZXN1bHQsIEZyYW1lJiBzdWJmcmFtZSkKIHsKICAg
ICAvLyBXZWJLaXQxIGNvZGUgcGF0aC4KICAgICBpZiAoZnJhbWVIYXNQbGF0Zm9ybVdpZGdldCht
X2ZyYW1lKSkKLSAgICAgICAgcmV0dXJuIHBhc3NTdWJmcmFtZUV2ZW50VG9TdWJmcmFtZShtZXYs
IHN1YmZyYW1lKTsKKyAgICAgICAgcmV0dXJuIHBhc3NTdWJmcmFtZUV2ZW50VG9TdWJmcmFtZSht
b3VzZUV2ZW50QW5kUmVzdWx0LCBzdWJmcmFtZSk7CiAKICAgICAvLyBXZWJLaXQyIGNvZGUgcGF0
aC4KLSAgICBzdWJmcmFtZS0+ZXZlbnRIYW5kbGVyKCkuaGFuZGxlTW91c2VQcmVzc0V2ZW50KG1l
di5ldmVudCgpKTsKKyAgICBzdWJmcmFtZS5ldmVudEhhbmRsZXIoKS5oYW5kbGVNb3VzZVByZXNz
RXZlbnQobW91c2VFdmVudEFuZFJlc3VsdC5ldmVudCgpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NNb3VzZU1vdmVFdmVudFRvU3ViZnJhbWUoTW91c2VF
dmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgbWV2LCBGcmFtZSogc3ViZnJhbWUsIEhpdFRlc3RSZXN1
bHQqIGhvdmVyZWROb2RlKQorYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NNb3VzZU1vdmVFdmVudFRv
U3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgbW91c2VFdmVudEFuZFJlc3Vs
dCwgRnJhbWUmIHN1YmZyYW1lLCBIaXRUZXN0UmVzdWx0KiBoaXRUZXN0UmVzdWx0KQogewogICAg
IC8vIFdlYktpdDEgY29kZSBwYXRoLgogICAgIGlmIChmcmFtZUhhc1BsYXRmb3JtV2lkZ2V0KG1f
ZnJhbWUpKQotICAgICAgICByZXR1cm4gcGFzc1N1YmZyYW1lRXZlbnRUb1N1YmZyYW1lKG1ldiwg
c3ViZnJhbWUsIGhvdmVyZWROb2RlKTsKKyAgICAgICAgcmV0dXJuIHBhc3NTdWJmcmFtZUV2ZW50
VG9TdWJmcmFtZShtb3VzZUV2ZW50QW5kUmVzdWx0LCBzdWJmcmFtZSwgaGl0VGVzdFJlc3VsdCk7
CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAgIC8vIFdlYktpdDIgY29kZSBwYXRoLgpA
QCAtNzA2LDE4ICs3MDYsMTggQEAgYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NNb3VzZU1vdmVFdmVu
dFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgbWUKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogI2VuZGlmCiAKLSAgICBzdWJmcmFtZS0+ZXZlbnRIYW5kbGVyKCkuaGFuZGxl
TW91c2VNb3ZlRXZlbnQobWV2LmV2ZW50KCksIGhvdmVyZWROb2RlKTsKKyAgICBzdWJmcmFtZS5l
dmVudEhhbmRsZXIoKS5oYW5kbGVNb3VzZU1vdmVFdmVudChtb3VzZUV2ZW50QW5kUmVzdWx0LmV2
ZW50KCksIGhpdFRlc3RSZXN1bHQpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEV2ZW50
SGFuZGxlcjo6cGFzc01vdXNlUmVsZWFzZUV2ZW50VG9TdWJmcmFtZShNb3VzZUV2ZW50V2l0aEhp
dFRlc3RSZXN1bHRzJiBtZXYsIEZyYW1lKiBzdWJmcmFtZSkKK2Jvb2wgRXZlbnRIYW5kbGVyOjpw
YXNzTW91c2VSZWxlYXNlRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3Vs
dHMmIG1vdXNlRXZlbnRBbmRSZXN1bHQsIEZyYW1lJiBzdWJmcmFtZSkKIHsKICAgICAvLyBXZWJL
aXQxIGNvZGUgcGF0aC4KICAgICBpZiAoZnJhbWVIYXNQbGF0Zm9ybVdpZGdldChtX2ZyYW1lKSkK
LSAgICAgICAgcmV0dXJuIHBhc3NTdWJmcmFtZUV2ZW50VG9TdWJmcmFtZShtZXYsIHN1YmZyYW1l
KTsKKyAgICAgICAgcmV0dXJuIHBhc3NTdWJmcmFtZUV2ZW50VG9TdWJmcmFtZShtb3VzZUV2ZW50
QW5kUmVzdWx0LCBzdWJmcmFtZSk7CiAKICAgICAvLyBXZWJLaXQyIGNvZGUgcGF0aC4KLSAgICBz
dWJmcmFtZS0+ZXZlbnRIYW5kbGVyKCkuaGFuZGxlTW91c2VSZWxlYXNlRXZlbnQobWV2LmV2ZW50
KCkpOworICAgIHN1YmZyYW1lLmV2ZW50SGFuZGxlcigpLmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50
KG1vdXNlRXZlbnRBbmRSZXN1bHQuZXZlbnQoKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0V2ZW50SGFuZGxlcldpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9FdmVudEhhbmRsZXJXaW4uY3BwCmluZGV4IDA5MDk3MTBj
NWIzOGNhMmJlNDMwODEyODU4M2ZmM2E5NjBhMGJkM2IuLjhlYzI1M2JiZWZiYzk4YWNiMmIwNjY3
ODk2YzgwMDJjMDgzODY1YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0V2
ZW50SGFuZGxlcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRXZlbnRIYW5k
bGVyV2luLmNwcApAQCAtMzEsMTQgKzMxLDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Ym9vbCBFdmVudEhhbmRsZXI6OnBhc3NNb3VzZU1vdmVFdmVudFRvU3ViZnJhbWUoTW91c2VFdmVu
dFdpdGhIaXRUZXN0UmVzdWx0cyYgbWV2LCBGcmFtZSogc3ViZnJhbWUsIEhpdFRlc3RSZXN1bHQq
IGhvdmVyZWROb2RlKQorYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NNb3VzZU1vdmVFdmVudFRvU3Vi
ZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgbW91c2VFdmVudEFuZFJlc3VsdCwg
RnJhbWUmIHN1YmZyYW1lLCBIaXRUZXN0UmVzdWx0JiBoaXRUZXN0UmVzdWx0KQogewogI2lmIEVO
QUJMRShEUkFHX1NVUFBPUlQpCiAgICAgaWYgKG1fbW91c2VEb3duTWF5U3RhcnREcmFnICYmICFt
X21vdXNlRG93bldhc0luU3ViZnJhbWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgog
Ci0gICAgc3ViZnJhbWUtPmV2ZW50SGFuZGxlcigpLmhhbmRsZU1vdXNlTW92ZUV2ZW50KG1ldi5l
dmVudCgpLCBob3ZlcmVkTm9kZSk7CisgICAgc3ViZnJhbWUuZXZlbnRIYW5kbGVyKCkuaGFuZGxl
TW91c2VNb3ZlRXZlbnQobW91c2VFdmVudEFuZFJlc3VsdC5ldmVudCgpLCBoaXRUZXN0UmVzdWx0
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAo=
</data>
<flag name="review"
          id="413828"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398442</attachid>
            <date>2020-05-04 17:32:39 -0700</date>
            <delta_ts>2020-05-04 19:39:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211413-20200504173238.patch</filename>
            <type>text/plain</type>
            <size>25546</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxMTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWJkMWNjNzU1MjQxNDk0
MTJmY2I4MWViYTVmNDc2Y2IwNDgxNmJmMC4uODNhMjRkYjRlMmIzZjFlNGQyZDk3ZWMyZWY2NTNh
MWE5ODVmZGEyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIwLTA1LTA0ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIENvZGUgY2xlYW51
cCBpbiBFdmVudEhhbmRsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxMTQxMworCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAg
ICAgICAgVXNlIGEgYmV0dGVyIG5hbWUgZm9yICJob3ZlcmVkTm9kZSIgd2hpY2ggaXMgYSBIaXRU
ZXN0UmVzdWx0LgorCisgICAgICAgIENvbnZlcnQgRnJhbWUqIHRvIEZyYW1lJi4KKworICAgICAg
ICBIYXZlIGEgY291cGxlIG9mIGhlbHBlciBmdW5jdGlvbnMgcmV0dXJuIFJlZlB0cjxGcmFtZT4u
CisKKyAgICAgICAgKiBwYWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkF1dG9zY3JvbGxDb250cm9sbGVyOjpzdG9wQXV0b3Njcm9sbFRpbWVyKToKKyAgICAg
ICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRs
ZXI6OnN1YmZyYW1lRm9ySGl0VGVzdFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhh
bmRsZXI6OnN1YmZyYW1lRm9yVGFyZ2V0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhh
bmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhh
bmRsZXI6OmhhbmRsZU1vdXNlRG91YmxlQ2xpY2tFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudEhhbmRsZXI6Om1vdXNlTW92ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVy
OjpwYXNzTW91c2VNb3ZlZEV2ZW50VG9TY3JvbGxiYXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VNb3ZlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRIYW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVhc2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudEhhbmRsZXI6OnBhc3NNb3VzZVByZXNzRXZlbnRUb1Njcm9sbGJhcik6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudEhhbmRsZXI6OnBhc3NNb3VzZVByZXNzRXZlbnRUb1N1YmZyYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUmVsZWFzZUV2ZW50VG9TdWJm
cmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnBhc3NXaWRnZXRNb3VzZURv
d25FdmVudFRvV2lkZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGFzc01v
dXNlTW92ZUV2ZW50VG9TdWJmcmFtZSk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuaDoK
KyAgICAgICAgKiBwYWdlL2lvcy9FdmVudEhhbmRsZXJJT1MubW06CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OnBhc3NTdWJmcmFtZUV2ZW50VG9TdWJmcmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudEhhbmRsZXI6OnBhc3NNb3VzZVByZXNzRXZlbnRUb1N1YmZyYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGFzc01vdXNlTW92ZUV2ZW50VG9TdWJmcmFt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnBhc3NNb3VzZVJlbGVhc2VFdmVu
dFRvU3ViZnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjp0cnlUb0JlZ2lu
RHJhZ0F0UG9pbnQpOgorICAgICAgICAqIHBhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGFzc1N1YmZyYW1lRXZlbnRUb1N1YmZyYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUHJlc3NFdmVudFRv
U3ViZnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpwYXNzTW91c2VNb3Zl
RXZlbnRUb1N1YmZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGFzc01v
dXNlUmVsZWFzZUV2ZW50VG9TdWJmcmFtZSk6CisgICAgICAgICogcGFnZS93aW4vRXZlbnRIYW5k
bGVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGFzc01vdXNlTW92
ZUV2ZW50VG9TdWJmcmFtZSk6CisKIDIwMjAtMDUtMDQgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZy
YXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgT3ZlcmZsb3cgc2Nyb2xsYmFycyBkb24ndCBncm93
IHdoZW4gaG92ZXJlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9BdXRvc2Nyb2xs
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0F1dG9zY3JvbGxDb250cm9sbGVy
LmNwcAppbmRleCA3YjNkZTQwNDVmMjJmODdlZjIxOWJhMWJmZmFlZDExMDZmNjQ1ZDlhLi5mYTJh
NzdhODA4OTQ3NGQ4MjVmMjMxMjUyMWE2ODhlMDhlYWEzNDE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLmNwcApAQCAtOTUsNyArOTUsNyBAQCB2b2lkIEF1
dG9zY3JvbGxDb250cm9sbGVyOjpzdG9wQXV0b3Njcm9sbFRpbWVyKGJvb2wgcmVuZGVyZXJJc0Jl
aW5nRGVzdHJveWVkKQogCiAgICAgRnJhbWUmIGZyYW1lID0gc2Nyb2xsYWJsZS0+ZnJhbWUoKTsK
ICAgICBpZiAoYXV0b3Njcm9sbEluUHJvZ3Jlc3MoKSAmJiBmcmFtZS5ldmVudEhhbmRsZXIoKS5t
b3VzZURvd25XYXNJblN1YmZyYW1lKCkpIHsKLSAgICAgICAgaWYgKEZyYW1lKiBzdWJmcmFtZSA9
IGZyYW1lLmV2ZW50SGFuZGxlcigpLnN1YmZyYW1lRm9yVGFyZ2V0Tm9kZShmcmFtZS5ldmVudEhh
bmRsZXIoKS5tb3VzZVByZXNzTm9kZSgpKSkKKyAgICAgICAgaWYgKGF1dG8gc3ViZnJhbWUgPSBm
cmFtZS5ldmVudEhhbmRsZXIoKS5zdWJmcmFtZUZvclRhcmdldE5vZGUoZnJhbWUuZXZlbnRIYW5k
bGVyKCkubW91c2VQcmVzc05vZGUoKSkpCiAgICAgICAgICAgICBzdWJmcmFtZS0+ZXZlbnRIYW5k
bGVyKCkuc3RvcEF1dG9zY3JvbGxUaW1lcihyZW5kZXJlcklzQmVpbmdEZXN0cm95ZWQpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4
IDhkNDE3MTc3NDQyMzViZjgxY2ZhMDc0ZTBhYjU2MjFhZTM4YjA0MzcuLjhmM2NlZmMyYzM1OWFl
OWRhZmJhYmVhZWY1ZGRhOGM4NzRjMDNiOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAKQEAgLTEzMjIsMTQgKzEzMjIsMTQgQEAgSW50UG9pbnQgRXZlbnRIYW5kbGVyOjpsYXN0
S25vd25Nb3VzZVBvc2l0aW9uKCkgY29uc3QKICAgICByZXR1cm4gbV9sYXN0S25vd25Nb3VzZVBv
c2l0aW9uOwogfQogCi1GcmFtZSogRXZlbnRIYW5kbGVyOjpzdWJmcmFtZUZvckhpdFRlc3RSZXN1
bHQoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgaGl0VGVzdFJlc3VsdCkKK1Jl
ZlB0cjxGcmFtZT4gRXZlbnRIYW5kbGVyOjpzdWJmcmFtZUZvckhpdFRlc3RSZXN1bHQoY29uc3Qg
TW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgaGl0VGVzdFJlc3VsdCkKIHsKICAgICBpZiAo
IWhpdFRlc3RSZXN1bHQuaXNPdmVyV2lkZ2V0KCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gc3ViZnJhbWVGb3JUYXJnZXROb2RlKGhpdFRl
c3RSZXN1bHQudGFyZ2V0Tm9kZSgpKTsKIH0KIAotRnJhbWUqIEV2ZW50SGFuZGxlcjo6c3ViZnJh
bWVGb3JUYXJnZXROb2RlKE5vZGUqIG5vZGUpCitSZWZQdHI8RnJhbWU+IEV2ZW50SGFuZGxlcjo6
c3ViZnJhbWVGb3JUYXJnZXROb2RlKE5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKCFub2RlKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE3NTIsNyArMTc1Miw3IEBAIGJvb2wgRXZlbnRIYW5k
bGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBwbGF0
Zm9ybU1vdXNlCiAKICAgICBpZiAoIXBhc3NlZFRvU2Nyb2xsYmFyKSB7CiAgICAgICAgIFJlZlB0
cjxGcmFtZT4gc3ViZnJhbWUgPSBzdWJmcmFtZUZvckhpdFRlc3RSZXN1bHQobW91c2VFdmVudCk7
Ci0gICAgICAgIGlmIChzdWJmcmFtZSAmJiBwYXNzTW91c2VQcmVzc0V2ZW50VG9TdWJmcmFtZSht
b3VzZUV2ZW50LCBzdWJmcmFtZS5nZXQoKSkpIHsKKyAgICAgICAgaWYgKHN1YmZyYW1lICYmIHBh
c3NNb3VzZVByZXNzRXZlbnRUb1N1YmZyYW1lKG1vdXNlRXZlbnQsICpzdWJmcmFtZSkpIHsKICAg
ICAgICAgICAgIC8vIFN0YXJ0IGNhcHR1cmluZyBmdXR1cmUgZXZlbnRzIGZvciB0aGlzIGZyYW1l
LiBXZSBvbmx5IGRvIHRoaXMgaWYgd2UgZGlkbid0IGNsZWFyCiAgICAgICAgICAgICAvLyB0aGUg
bV9tb3VzZVByZXNzZWQgZmxhZywgd2hpY2ggbWF5IGhhcHBlbiBpZiBhbiBBcHBLaXQgd2lkZ2V0
IGVudGVyZWQgYSBtb2RhbCBldmVudCBsb29wLgogICAgICAgICAgICAgbV9jYXB0dXJlc0RyYWdn
aW5nID0gc3ViZnJhbWUtPmV2ZW50SGFuZGxlcigpLmNhcHR1cmVzRHJhZ2dpbmcoKTsKQEAgLTE4
NTEsMTAgKzE4NTEsMTIgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlRG91YmxlQ2xp
Y2tFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIHBsYXRmb3IKIAogICAgIGNvbnN0ZXhw
ciBPcHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlJlcXVlc3RUeXBlPiBoaXRUeXBlIHsgSGl0VGVz
dFJlcXVlc3Q6OlJlbGVhc2UsIEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1VzZXJBZ2VudFNoYWRv
d0NvbnRlbnQgfTsKICAgICBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzIG1vdXNlRXZlbnQg
PSBwcmVwYXJlTW91c2VFdmVudChoaXRUeXBlLCBwbGF0Zm9ybU1vdXNlRXZlbnQpOwotICAgIEZy
YW1lKiBzdWJmcmFtZSA9IHN1YmZyYW1lRm9ySGl0VGVzdFJlc3VsdChtb3VzZUV2ZW50KTsKKyAg
ICBhdXRvIHN1YmZyYW1lID0gc3ViZnJhbWVGb3JIaXRUZXN0UmVzdWx0KG1vdXNlRXZlbnQpOwor
CiAgICAgaWYgKG1fZXZlbnRIYW5kbGVyV2lsbFJlc2V0Q2FwdHVyaW5nTW91c2VFdmVudHNFbGVt
ZW50KQogICAgICAgICBtX2NhcHR1cmluZ01vdXNlRXZlbnRzRWxlbWVudCA9IG51bGxwdHI7Ci0g
ICAgaWYgKHN1YmZyYW1lICYmIHBhc3NNb3VzZVByZXNzRXZlbnRUb1N1YmZyYW1lKG1vdXNlRXZl
bnQsIHN1YmZyYW1lKSkKKworICAgIGlmIChzdWJmcmFtZSAmJiBwYXNzTW91c2VQcmVzc0V2ZW50
VG9TdWJmcmFtZShtb3VzZUV2ZW50LCAqc3ViZnJhbWUpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAogICAgIG1fY2xpY2tDb3VudCA9IHBsYXRmb3JtTW91c2VFdmVudC5jbGlja0NvdW50KCk7CkBA
IC0xOTAwLDE0ICsxOTAyLDE0IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjptb3VzZU1vdmVkKGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpCiAgICAgaWYgKG1fZnJhbWUucGFnZSgpICYmIG1f
ZnJhbWUucGFnZSgpLT5wYWdlT3ZlcmxheUNvbnRyb2xsZXIoKS5oYW5kbGVNb3VzZUV2ZW50KGV2
ZW50KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBIaXRUZXN0UmVzdWx0IGhvdmVyZWRO
b2RlID0gSGl0VGVzdFJlc3VsdChMYXlvdXRQb2ludCgpKTsKLSAgICBib29sIHJlc3VsdCA9IGhh
bmRsZU1vdXNlTW92ZUV2ZW50KGV2ZW50LCAmaG92ZXJlZE5vZGUpOworICAgIEhpdFRlc3RSZXN1
bHQgaGl0VGVzdFJlc3VsdDsKKyAgICBib29sIHJlc3VsdCA9IGhhbmRsZU1vdXNlTW92ZUV2ZW50
KGV2ZW50LCAmaGl0VGVzdFJlc3VsdCk7CiAKICAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS5wYWdl
KCk7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogCi0gICAgaWYgKGF1
dG8gc2Nyb2xsZWRBcmVhID0gZW5jbG9zaW5nU2Nyb2xsYWJsZUFyZWEoaG92ZXJlZE5vZGUuaW5u
ZXJOb2RlKCkpKSB7CisgICAgaWYgKGF1dG8gc2Nyb2xsZWRBcmVhID0gZW5jbG9zaW5nU2Nyb2xs
YWJsZUFyZWEoaGl0VGVzdFJlc3VsdC5pbm5lck5vZGUoKSkpIHsKICAgICAgICAgaWYgKEZyYW1l
VmlldyogZnJhbWVWaWV3ID0gbV9mcmFtZS52aWV3KCkpIHsKICAgICAgICAgICAgIGlmIChmcmFt
ZVZpZXctPmNvbnRhaW5zU2Nyb2xsYWJsZUFyZWEoc2Nyb2xsZWRBcmVhKSkKICAgICAgICAgICAg
ICAgICBzY3JvbGxlZEFyZWEtPm1vdXNlTW92ZWRJbkNvbnRlbnRBcmVhKCk7CkBAIC0xOTE3LDE4
ICsxOTE5LDE4IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjptb3VzZU1vdmVkKGNvbnN0IFBsYXRmb3Jt
TW91c2VFdmVudCYgZXZlbnQpCiAgICAgaWYgKEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbV9mcmFt
ZS52aWV3KCkpCiAgICAgICAgIGZyYW1lVmlldy0+bW91c2VNb3ZlZEluQ29udGVudEFyZWEoKTsg
IAogCi0gICAgaG92ZXJlZE5vZGUuc2V0VG9Ob25Vc2VyQWdlbnRTaGFkb3dBbmNlc3RvcigpOwot
ICAgIHBhZ2UtPmNocm9tZSgpLm1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KGhvdmVyZWROb2RlLCBl
dmVudC5tb2RpZmllckZsYWdzKCkpOworICAgIGhpdFRlc3RSZXN1bHQuc2V0VG9Ob25Vc2VyQWdl
bnRTaGFkb3dBbmNlc3RvcigpOworICAgIHBhZ2UtPmNocm9tZSgpLm1vdXNlRGlkTW92ZU92ZXJF
bGVtZW50KGhpdFRlc3RSZXN1bHQsIGV2ZW50Lm1vZGlmaWVyRmxhZ3MoKSk7CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAogYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NNb3VzZU1vdmVkRXZlbnRUb1Nj
cm9sbGJhcnMoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKIHsKLSAgICBIaXRUZXN0
UmVzdWx0IGhvdmVyZWROb2RlOwotICAgIHJldHVybiBoYW5kbGVNb3VzZU1vdmVFdmVudChldmVu
dCwgJmhvdmVyZWROb2RlLCB0cnVlKTsKKyAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3RSZXN1bHQ7
CisgICAgcmV0dXJuIGhhbmRsZU1vdXNlTW92ZUV2ZW50KGV2ZW50LCAmaGl0VGVzdFJlc3VsdCwg
dHJ1ZSk7CiB9CiAKLWJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZU1vdmVFdmVudChjb25z
dCBQbGF0Zm9ybU1vdXNlRXZlbnQmIHBsYXRmb3JtTW91c2VFdmVudCwgSGl0VGVzdFJlc3VsdCog
aG92ZXJlZE5vZGUsIGJvb2wgb25seVVwZGF0ZVNjcm9sbGJhcnMpCitib29sIEV2ZW50SGFuZGxl
cjo6aGFuZGxlTW91c2VNb3ZlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBwbGF0Zm9y
bU1vdXNlRXZlbnQsIEhpdFRlc3RSZXN1bHQqIGhpdFRlc3RSZXN1bHQsIGJvb2wgb25seVVwZGF0
ZVNjcm9sbGJhcnMpCiB7CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICBib29sIGRlZmF1
bHRQcmV2ZW50ZWQgPSBkaXNwYXRjaFN5bnRoZXRpY1RvdWNoRXZlbnRJZkVuYWJsZWQocGxhdGZv
cm1Nb3VzZUV2ZW50KTsKQEAgLTE5OTIsOCArMTk5NCw4IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpo
YW5kbGVNb3VzZU1vdmVFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIHBsYXRmb3JtTW91
c2VFCiAjZW5kaWYKICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KGhpdFR5cGUpOwogICAgIE1v
dXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgbW91c2VFdmVudCA9IHByZXBhcmVNb3VzZUV2ZW50
KHJlcXVlc3QsIHBsYXRmb3JtTW91c2VFdmVudCk7Ci0gICAgaWYgKGhvdmVyZWROb2RlKQotICAg
ICAgICAqaG92ZXJlZE5vZGUgPSBtb3VzZUV2ZW50LmhpdFRlc3RSZXN1bHQoKTsKKyAgICBpZiAo
aGl0VGVzdFJlc3VsdCkKKyAgICAgICAgKmhpdFRlc3RSZXN1bHQgPSBtb3VzZUV2ZW50LmhpdFRl
c3RSZXN1bHQoKTsKIAogICAgIGlmIChtX3Jlc2l6ZUxheWVyICYmIG1fcmVzaXplTGF5ZXItPmlu
UmVzaXplTW9kZSgpKQogICAgICAgICBtX3Jlc2l6ZUxheWVyLT5yZXNpemUocGxhdGZvcm1Nb3Vz
ZUV2ZW50LCBtX29mZnNldEZyb21SZXNpemVDb3JuZXIpOwpAQCAtMjAxOSw3ICsyMDIxLDcgQEAg
Ym9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlTW92ZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91
c2VFdmVudCYgcGxhdGZvcm1Nb3VzZUUKICAKICAgICAvLyBXZSB3YW50IG1vdXNlb3V0cyB0byBo
YXBwZW4gZmlyc3QsIGZyb20gdGhlIGluc2lkZSBvdXQuICBGaXJzdCBzZW5kIGEgbW92ZSBldmVu
dCB0byB0aGUgbGFzdCBzdWJmcmFtZSBzbyB0aGF0IGl0IHdpbGwgZmlyZSBtb3VzZW91dHMuCiAg
ICAgaWYgKG1fbGFzdE1vdXNlTW92ZUV2ZW50U3ViZnJhbWUgJiYgbV9sYXN0TW91c2VNb3ZlRXZl
bnRTdWJmcmFtZS0+dHJlZSgpLmlzRGVzY2VuZGFudE9mKCZtX2ZyYW1lKSAmJiBtX2xhc3RNb3Vz
ZU1vdmVFdmVudFN1YmZyYW1lICE9IG5ld1N1YmZyYW1lKQotICAgICAgICBwYXNzTW91c2VNb3Zl
RXZlbnRUb1N1YmZyYW1lKG1vdXNlRXZlbnQsIG1fbGFzdE1vdXNlTW92ZUV2ZW50U3ViZnJhbWUu
Z2V0KCkpOworICAgICAgICBwYXNzTW91c2VNb3ZlRXZlbnRUb1N1YmZyYW1lKG1vdXNlRXZlbnQs
ICptX2xhc3RNb3VzZU1vdmVFdmVudFN1YmZyYW1lKTsKIAogICAgIGlmIChuZXdTdWJmcmFtZSkg
ewogICAgICAgICAvLyBVcGRhdGUgb3Zlci9vdXQgc3RhdGUgYmVmb3JlIHBhc3NpbmcgdGhlIGV2
ZW50IHRvIHRoZSBzdWJmcmFtZS4KQEAgLTIwMjgsNyArMjAzMCw3IEBAIGJvb2wgRXZlbnRIYW5k
bGVyOjpoYW5kbGVNb3VzZU1vdmVFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIHBsYXRm
b3JtTW91c2VFCiAgICAgICAgIC8vIEV2ZW50IGRpc3BhdGNoIGluIHVwZGF0ZU1vdXNlRXZlbnRU
YXJnZXROb2RlIG1heSBoYXZlIGNhdXNlZCB0aGUgc3ViZnJhbWUgb2YgdGhlIHRhcmdldAogICAg
ICAgICAvLyBub2RlIHRvIGJlIGRldGFjaGVkIGZyb20gaXRzIEZyYW1lVmlldywgaW4gd2hpY2gg
Y2FzZSB0aGUgZXZlbnQgc2hvdWxkIG5vdCBiZSBwYXNzZWQuCiAgICAgICAgIGlmIChuZXdTdWJm
cmFtZS0+dmlldygpKQotICAgICAgICAgICAgc3dhbGxvd0V2ZW50IHw9IHBhc3NNb3VzZU1vdmVF
dmVudFRvU3ViZnJhbWUobW91c2VFdmVudCwgbmV3U3ViZnJhbWUuZ2V0KCksIGhvdmVyZWROb2Rl
KTsKKyAgICAgICAgICAgIHN3YWxsb3dFdmVudCB8PSBwYXNzTW91c2VNb3ZlRXZlbnRUb1N1YmZy
YW1lKG1vdXNlRXZlbnQsICpuZXdTdWJmcmFtZSwgaGl0VGVzdFJlc3VsdCk7CiAgICAgfQogCiAg
ICAgaWYgKCFuZXdTdWJmcmFtZSB8fCBtb3VzZUV2ZW50LnNjcm9sbGJhcigpKSB7CkBAIC0yMTQ4
LDEwICsyMTUwLDEwIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVhc2VFdmVu
dChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIHBsYXRmb3JtTW91CiAKICAgICBjb25zdGV4cHIg
T3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpSZXF1ZXN0VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RS
ZXF1ZXN0OjpSZWxlYXNlLCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dD
b250ZW50IH07CiAgICAgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyBtb3VzZUV2ZW50ID0g
cHJlcGFyZU1vdXNlRXZlbnQoaGl0VHlwZSwgcGxhdGZvcm1Nb3VzZUV2ZW50KTsKLSAgICBGcmFt
ZSogc3ViZnJhbWUgPSBtX2NhcHR1cmluZ01vdXNlRXZlbnRzRWxlbWVudC5nZXQoKSA/IHN1YmZy
YW1lRm9yVGFyZ2V0Tm9kZShtX2NhcHR1cmluZ01vdXNlRXZlbnRzRWxlbWVudC5nZXQoKSkgOiBz
dWJmcmFtZUZvckhpdFRlc3RSZXN1bHQobW91c2VFdmVudCk7CisgICAgUmVmUHRyPEZyYW1lPiBz
dWJmcmFtZSA9IG1fY2FwdHVyaW5nTW91c2VFdmVudHNFbGVtZW50LmdldCgpID8gc3ViZnJhbWVG
b3JUYXJnZXROb2RlKG1fY2FwdHVyaW5nTW91c2VFdmVudHNFbGVtZW50LmdldCgpKSA6IHN1YmZy
YW1lRm9ySGl0VGVzdFJlc3VsdChtb3VzZUV2ZW50KTsKICAgICBpZiAobV9ldmVudEhhbmRsZXJX
aWxsUmVzZXRDYXB0dXJpbmdNb3VzZUV2ZW50c0VsZW1lbnQpCiAgICAgICAgIG1fY2FwdHVyaW5n
TW91c2VFdmVudHNFbGVtZW50ID0gbnVsbHB0cjsKLSAgICBpZiAoc3ViZnJhbWUgJiYgcGFzc01v
dXNlUmVsZWFzZUV2ZW50VG9TdWJmcmFtZShtb3VzZUV2ZW50LCBzdWJmcmFtZSkpCisgICAgaWYg
KHN1YmZyYW1lICYmIHBhc3NNb3VzZVJlbGVhc2VFdmVudFRvU3ViZnJhbWUobW91c2VFdmVudCwg
KnN1YmZyYW1lKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBib29sIHN3YWxsb3dNb3Vz
ZVVwRXZlbnQgPSAhZGlzcGF0Y2hNb3VzZUV2ZW50KGV2ZW50TmFtZXMoKS5tb3VzZXVwRXZlbnQs
IG1vdXNlRXZlbnQudGFyZ2V0Tm9kZSgpLCB0cnVlLCBtX2NsaWNrQ291bnQsIHBsYXRmb3JtTW91
c2VFdmVudCwgZmFsc2UpOwpAQCAtNDA1MCwxMiArNDA1MiwxMiBAQCB2b2lkIEV2ZW50SGFuZGxl
cjo6c2V0RnJhbWVXYXNTY3JvbGxlZEJ5VXNlcigpCiAgICAgICAgIHYtPnNldFdhc1Njcm9sbGVk
QnlVc2VyKHRydWUpOwogfQogCi1ib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUHJlc3NFdmVu
dFRvU2Nyb2xsYmFyKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIG1vdXNlRXZlbnQsIFNj
cm9sbGJhciogc2Nyb2xsYmFyKQorYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NNb3VzZVByZXNzRXZl
bnRUb1Njcm9sbGJhcihNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBtb3VzZUV2ZW50QW5k
UmVzdWx0LCBTY3JvbGxiYXIqIHNjcm9sbGJhcikKIHsKICAgICBpZiAoIXNjcm9sbGJhciB8fCAh
c2Nyb2xsYmFyLT5lbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBzZXRGcmFt
ZVdhc1Njcm9sbGVkQnlVc2VyKCk7Ci0gICAgcmV0dXJuIHNjcm9sbGJhci0+bW91c2VEb3duKG1v
dXNlRXZlbnQuZXZlbnQoKSk7CisgICAgcmV0dXJuIHNjcm9sbGJhci0+bW91c2VEb3duKG1vdXNl
RXZlbnRBbmRSZXN1bHQuZXZlbnQoKSk7CiB9CiAKIC8vIElmIHNjcm9sbGJhciAodW5kZXIgbW91
c2UpIGlzIGRpZmZlcmVudCBmcm9tIGxhc3QsIHNlbmQgYSBtb3VzZSBleGl0ZWQuCkBAIC00MzU2
LDE1ICs0MzU4LDE1IEBAIE9wdGlvblNldDxQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcj4gRXZlbnRI
YW5kbGVyOjphY2Nlc3NLZXlNb2RpZmllcnMoKQogICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpN
b2RpZmllcjo6QWx0S2V5OwogfQogCi1ib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUHJlc3NF
dmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgbWV2LCBGcmFtZSog
c3ViZnJhbWUpCitib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUHJlc3NFdmVudFRvU3ViZnJh
bWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgbW91c2VFdmVudEFuZFJlc3VsdCwgRnJh
bWUmIHN1YmZyYW1lKQogewotICAgIHN1YmZyYW1lLT5ldmVudEhhbmRsZXIoKS5oYW5kbGVNb3Vz
ZVByZXNzRXZlbnQobWV2LmV2ZW50KCkpOworICAgIHN1YmZyYW1lLmV2ZW50SGFuZGxlcigpLmhh
bmRsZU1vdXNlUHJlc3NFdmVudChtb3VzZUV2ZW50QW5kUmVzdWx0LmV2ZW50KCkpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUmVsZWFzZUV2ZW50
VG9TdWJmcmFtZShNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBtZXYsIEZyYW1lKiBzdWJm
cmFtZSkKK2Jvb2wgRXZlbnRIYW5kbGVyOjpwYXNzTW91c2VSZWxlYXNlRXZlbnRUb1N1YmZyYW1l
KE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIG1vdXNlRXZlbnRBbmRSZXN1bHQsIEZyYW1l
JiBzdWJmcmFtZSkKIHsKLSAgICBzdWJmcmFtZS0+ZXZlbnRIYW5kbGVyKCkuaGFuZGxlTW91c2VS
ZWxlYXNlRXZlbnQobWV2LmV2ZW50KCkpOworICAgIHN1YmZyYW1lLmV2ZW50SGFuZGxlcigpLmhh
bmRsZU1vdXNlUmVsZWFzZUV2ZW50KG1vdXNlRXZlbnRBbmRSZXN1bHQuZXZlbnQoKSk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKQEAgLTQzODksNyArNDM5MSw2IEBAIGJvb2wgRXZlbnRIYW5kbGVy
OjpwYXNzV2lkZ2V0TW91c2VEb3duRXZlbnRUb1dpZGdldChSZW5kZXJXaWRnZXQqIHJlbmRlcldp
ZGdldCkKIAogYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NXaWRnZXRNb3VzZURvd25FdmVudFRvV2lk
Z2V0KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50KQogewotICAgIC8v
IEZpZ3VyZSBvdXQgd2hpY2ggdmlldyB0byBzZW5kIHRoZSBldmVudCB0by4KICAgICBSZW5kZXJP
YmplY3QqIHRhcmdldCA9IGV2ZW50LnRhcmdldE5vZGUoKSA/IGV2ZW50LnRhcmdldE5vZGUoKS0+
cmVuZGVyZXIoKSA6IG51bGxwdHI7CiAgICAgaWYgKCFpczxSZW5kZXJXaWRnZXQ+KHRhcmdldCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQ0MTYsOSArNDQxNyw5IEBAIGJvb2wgRXZlbnRI
YW5kbGVyOjpldmVudEFjdGl2YXRlZFZpZXcoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgY29u
c3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzTW91c2VN
b3ZlRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIG1ldiwgRnJh
bWUqIHN1YmZyYW1lLCBIaXRUZXN0UmVzdWx0KiBob3ZlcmVkTm9kZSkKK2Jvb2wgRXZlbnRIYW5k
bGVyOjpwYXNzTW91c2VNb3ZlRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJl
c3VsdHMmIG1vdXNlRXZlbnRBbmRSZXN1bHQsIEZyYW1lKiBzdWJmcmFtZSwgSGl0VGVzdFJlc3Vs
dCogcmVzdWx0KQogewotICAgIHN1YmZyYW1lLT5ldmVudEhhbmRsZXIoKS5oYW5kbGVNb3VzZU1v
dmVFdmVudChtZXYuZXZlbnQoKSwgaG92ZXJlZE5vZGUpOworICAgIHN1YmZyYW1lLT5ldmVudEhh
bmRsZXIoKS5oYW5kbGVNb3VzZU1vdmVFdmVudChtb3VzZUV2ZW50QW5kUmVzdWx0LmV2ZW50KCks
IHJlc3VsdCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09B
KSAmJiAhUExBVEZPUk0oV0lOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKaW5kZXggYmIw
MTRjNmE4M2E4ZTQwMWM0ZDA5YTQ2YWI3YTRkMmExYTlkZTc2NS4uNWI0NjQ0MGUyOGExNTM2ZTdl
OTZiMmY3MTljMmRmNGQ5ODlhNzYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCkBA
IC0xODcsOCArMTg3LDggQEAgcHVibGljOgogICAgIEludFBvaW50IHRhcmdldFBvc2l0aW9uSW5X
aW5kb3dGb3JTZWxlY3Rpb25BdXRvc2Nyb2xsKCkgY29uc3Q7CiAgICAgYm9vbCBzaG91bGRVcGRh
dGVBdXRvc2Nyb2xsKCk7CiAKLSAgICBzdGF0aWMgRnJhbWUqIHN1YmZyYW1lRm9yVGFyZ2V0Tm9k
ZShOb2RlKik7Ci0gICAgc3RhdGljIEZyYW1lKiBzdWJmcmFtZUZvckhpdFRlc3RSZXN1bHQoY29u
c3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYpOworICAgIHN0YXRpYyBSZWZQdHI8RnJh
bWU+IHN1YmZyYW1lRm9yVGFyZ2V0Tm9kZShOb2RlKik7CisgICAgc3RhdGljIFJlZlB0cjxGcmFt
ZT4gc3ViZnJhbWVGb3JIaXRUZXN0UmVzdWx0KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJl
c3VsdHMmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2Nyb2xsT3ZlcmZsb3coU2Nyb2xs
RGlyZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0eSwgTm9kZSogc3RhcnRpbmdOb2RlID0gbnVsbHB0
cik7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzY3JvbGxSZWN1cnNpdmVseShTY3JvbGxEaXJl
Y3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5LCBOb2RlKiBzdGFydGluZ05vZGUgPSBudWxscHRyKTsK
QEAgLTIwMyw3ICsyMDMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb3N0TW91c2VDYXB0dXJlKCk7
CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhbmRsZU1vdXNlUHJlc3NFdmVudChjb25zdCBQ
bGF0Zm9ybU1vdXNlRXZlbnQmKTsKLSAgICBib29sIGhhbmRsZU1vdXNlTW92ZUV2ZW50KGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYsIEhpdFRlc3RSZXN1bHQqIGhvdmVyZWROb2RlID0gbnVsbHB0
ciwgYm9vbCBvbmx5VXBkYXRlU2Nyb2xsYmFycyA9IGZhbHNlKTsKKyAgICBib29sIGhhbmRsZU1v
dXNlTW92ZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIEhpdFRlc3RSZXN1bHQqID0g
bnVsbHB0ciwgYm9vbCBvbmx5VXBkYXRlU2Nyb2xsYmFycyA9IGZhbHNlKTsKICAgICBXRUJDT1JF
X0VYUE9SVCBib29sIGhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VF
dmVudCYpOwogICAgIGJvb2wgaGFuZGxlTW91c2VGb3JjZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91
c2VFdmVudCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFuZGxlV2hlZWxFdmVudChjb25z
dCBQbGF0Zm9ybVdoZWVsRXZlbnQmKTsKQEAgLTQzMCwxMSArNDMwLDExIEBAIHByaXZhdGU6CiAg
ICAgCiAgICAgYm9vbCBtb3VzZU1vdmVtZW50RXhjZWVkc1RocmVzaG9sZChjb25zdCBGbG9hdFBv
aW50JiwgaW50IHBvaW50c1RocmVzaG9sZCkgY29uc3Q7CiAKLSAgICBib29sIHBhc3NNb3VzZVBy
ZXNzRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmLCBGcmFtZSog
c3ViZnJhbWUpOwotICAgIGJvb2wgcGFzc01vdXNlTW92ZUV2ZW50VG9TdWJmcmFtZShNb3VzZUV2
ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiwgRnJhbWUqIHN1YmZyYW1lLCBIaXRUZXN0UmVzdWx0KiBo
b3ZlcmVkTm9kZSA9IG51bGxwdHIpOwotICAgIGJvb2wgcGFzc01vdXNlUmVsZWFzZUV2ZW50VG9T
dWJmcmFtZShNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiwgRnJhbWUqIHN1YmZyYW1lKTsK
KyAgICBib29sIHBhc3NNb3VzZVByZXNzRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0
VGVzdFJlc3VsdHMmLCBGcmFtZSYpOworICAgIGJvb2wgcGFzc01vdXNlTW92ZUV2ZW50VG9TdWJm
cmFtZShNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiwgRnJhbWUmLCBIaXRUZXN0UmVzdWx0
KiA9IG51bGxwdHIpOworICAgIGJvb2wgcGFzc01vdXNlUmVsZWFzZUV2ZW50VG9TdWJmcmFtZShN
b3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiwgRnJhbWUmKTsKIAotICAgIGJvb2wgcGFzc1N1
YmZyYW1lRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmLCBGcmFt
ZSogc3ViZnJhbWUsIEhpdFRlc3RSZXN1bHQqIGhvdmVyZWROb2RlID0gbnVsbHB0cik7CisgICAg
Ym9vbCBwYXNzU3ViZnJhbWVFdmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVz
dWx0cyYsIEZyYW1lJiwgSGl0VGVzdFJlc3VsdCogPSBudWxscHRyKTsKIAogICAgIGJvb2wgcGFz
c01vdXNlUHJlc3NFdmVudFRvU2Nyb2xsYmFyKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMm
LCBTY3JvbGxiYXIqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRXZl
bnRIYW5kbGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRXZlbnRIYW5kbGVySU9T
Lm1tCmluZGV4IDI5YmRmY2M5NjQwOWYzNjI0MmEwYjQyMjlhYjRhMWFmYTI0Zjk3YTguLmU3NzMy
Y2EyNTQyYTM3NjFjNDQ3YjQ1ZWVhMjhjOTQ4NmNiYTFlNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvaW9zL0V2ZW50SGFuZGxlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2lvcy9FdmVudEhhbmRsZXJJT1MubW0KQEAgLTM2NCw3ICszNjQsNyBAQCBib29sIEV2ZW50
SGFuZGxlcjo6ZXZlbnRMb29wSGFuZGxlTW91c2VVcChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRl
c3RSZXN1bHRzJikKICAgICByZXR1cm4gdHJ1ZTsKIH0KICAgICAKLWJvb2wgRXZlbnRIYW5kbGVy
OjpwYXNzU3ViZnJhbWVFdmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0
cyYgZXZlbnQsIEZyYW1lKiBzdWJmcmFtZSwgSGl0VGVzdFJlc3VsdCogaG92ZXJlZE5vZGUpCiti
b29sIEV2ZW50SGFuZGxlcjo6cGFzc1N1YmZyYW1lRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRX
aXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50LCBGcmFtZSYgc3ViZnJhbWUsIEhpdFRlc3RSZXN1bHQq
IGhpdFRlc3RSZXN1bHQpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCkBA
IC0zNzYsNyArMzc2LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NTdWJmcmFtZUV2ZW50VG9T
dWJmcmFtZShNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmUKICAgICAgICAgLy8gY3Vy
cmVudE5TRXZlbnQoKSB0aGF0IG1vdXNlTW92ZWQoKSBkb2VzIHdvdWxkIGhhdmUgbm8gZWZmZWN0
LgogICAgICAgICBBU1NFUlQoIW1fc2VuZGluZ0V2ZW50VG9TdWJ2aWV3KTsKICAgICAgICAgbV9z
ZW5kaW5nRXZlbnRUb1N1YnZpZXcgPSB0cnVlOwotICAgICAgICBzdWJmcmFtZS0+ZXZlbnRIYW5k
bGVyKCkuaGFuZGxlTW91c2VNb3ZlRXZlbnQoY3VycmVudFBsYXRmb3JtTW91c2VFdmVudCgpLCBo
b3ZlcmVkTm9kZSk7CisgICAgICAgIHN1YmZyYW1lLmV2ZW50SGFuZGxlcigpLmhhbmRsZU1vdXNl
TW92ZUV2ZW50KGN1cnJlbnRQbGF0Zm9ybU1vdXNlRXZlbnQoKSwgaGl0VGVzdFJlc3VsdCk7CiAg
ICAgICAgIG1fc2VuZGluZ0V2ZW50VG9TdWJ2aWV3ID0gZmFsc2U7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KQEAgLTQwMCw3ICs0MDAsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6cGFzc1N1
YmZyYW1lRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBBU1NFUlQoIW1fc2VuZGluZ0V2ZW50
VG9TdWJ2aWV3KTsKICAgICAgICAgbV9zZW5kaW5nRXZlbnRUb1N1YnZpZXcgPSB0cnVlOwotICAg
ICAgICBzdWJmcmFtZS0+ZXZlbnRIYW5kbGVyKCkuaGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoY3Vy
cmVudFBsYXRmb3JtTW91c2VFdmVudCgpKTsKKyAgICAgICAgc3ViZnJhbWUuZXZlbnRIYW5kbGVy
KCkuaGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoY3VycmVudFBsYXRmb3JtTW91c2VFdmVudCgpKTsK
ICAgICAgICAgbV9zZW5kaW5nRXZlbnRUb1N1YnZpZXcgPSBmYWxzZTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQpAQCAtNTMzLDM1ICs1MzMsMzUgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmRp
c3BhdGNoU3ludGhldGljTW91c2VNb3ZlKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgcGxhdGZv
cm0KICAgICBtb3VzZU1vdmVkKHBsYXRmb3JtTW91c2VFdmVudCk7CiB9CiAKLWJvb2wgRXZlbnRI
YW5kbGVyOjpwYXNzTW91c2VQcmVzc0V2ZW50VG9TdWJmcmFtZShNb3VzZUV2ZW50V2l0aEhpdFRl
c3RSZXN1bHRzJiBtZXYsIEZyYW1lKiBzdWJmcmFtZSkKK2Jvb2wgRXZlbnRIYW5kbGVyOjpwYXNz
TW91c2VQcmVzc0V2ZW50VG9TdWJmcmFtZShNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBt
b3VzZUV2ZW50QW5kUmVzdWx0LCBGcmFtZSYgc3ViZnJhbWUpCiB7CiAgICAgLy8gV2ViS2l0MSBj
b2RlIHBhdGguCiAgICAgaWYgKGZyYW1lSGFzUGxhdGZvcm1XaWRnZXQobV9mcmFtZSkpCi0gICAg
ICAgIHJldHVybiBwYXNzU3ViZnJhbWVFdmVudFRvU3ViZnJhbWUobWV2LCBzdWJmcmFtZSk7Cisg
ICAgICAgIHJldHVybiBwYXNzU3ViZnJhbWVFdmVudFRvU3ViZnJhbWUobW91c2VFdmVudEFuZFJl
c3VsdCwgc3ViZnJhbWUpOwogCiAgICAgLy8gV2ViS2l0MiBjb2RlIHBhdGguCi0gICAgc3ViZnJh
bWUtPmV2ZW50SGFuZGxlcigpLmhhbmRsZU1vdXNlUHJlc3NFdmVudChtZXYuZXZlbnQoKSk7Cisg
ICAgc3ViZnJhbWUuZXZlbnRIYW5kbGVyKCkuaGFuZGxlTW91c2VQcmVzc0V2ZW50KG1vdXNlRXZl
bnRBbmRSZXN1bHQuZXZlbnQoKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgRXZlbnRI
YW5kbGVyOjpwYXNzTW91c2VNb3ZlRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVz
dFJlc3VsdHMmIG1ldiwgRnJhbWUqIHN1YmZyYW1lLCBIaXRUZXN0UmVzdWx0KiBob3ZlcmVkTm9k
ZSkKK2Jvb2wgRXZlbnRIYW5kbGVyOjpwYXNzTW91c2VNb3ZlRXZlbnRUb1N1YmZyYW1lKE1vdXNl
RXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIG1vdXNlRXZlbnRBbmRSZXN1bHQsIEZyYW1lJiBzdWJm
cmFtZSwgSGl0VGVzdFJlc3VsdCogaGl0VGVzdFJlc3VsdCkKIHsKICAgICAvLyBXZWJLaXQxIGNv
ZGUgcGF0aC4KICAgICBpZiAoZnJhbWVIYXNQbGF0Zm9ybVdpZGdldChtX2ZyYW1lKSkKLSAgICAg
ICAgcmV0dXJuIHBhc3NTdWJmcmFtZUV2ZW50VG9TdWJmcmFtZShtZXYsIHN1YmZyYW1lLCBob3Zl
cmVkTm9kZSk7CisgICAgICAgIHJldHVybiBwYXNzU3ViZnJhbWVFdmVudFRvU3ViZnJhbWUobW91
c2VFdmVudEFuZFJlc3VsdCwgc3ViZnJhbWUsIGhpdFRlc3RSZXN1bHQpOwogCi0gICAgc3ViZnJh
bWUtPmV2ZW50SGFuZGxlcigpLmhhbmRsZU1vdXNlTW92ZUV2ZW50KG1ldi5ldmVudCgpLCBob3Zl
cmVkTm9kZSk7CisgICAgc3ViZnJhbWUuZXZlbnRIYW5kbGVyKCkuaGFuZGxlTW91c2VNb3ZlRXZl
bnQobW91c2VFdmVudEFuZFJlc3VsdC5ldmVudCgpLCBoaXRUZXN0UmVzdWx0KTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NNb3VzZVJlbGVhc2VFdmVudFRv
U3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgbWV2LCBGcmFtZSogc3ViZnJh
bWUpCitib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUmVsZWFzZUV2ZW50VG9TdWJmcmFtZShN
b3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBtb3VzZUV2ZW50QW5kUmVzdWx0LCBGcmFtZSYg
c3ViZnJhbWUpCiB7CiAgICAgLy8gV2ViS2l0MSBjb2RlIHBhdGguCiAgICAgaWYgKGZyYW1lSGFz
UGxhdGZvcm1XaWRnZXQobV9mcmFtZSkpCi0gICAgICAgIHJldHVybiBwYXNzU3ViZnJhbWVFdmVu
dFRvU3ViZnJhbWUobWV2LCBzdWJmcmFtZSk7CisgICAgICAgIHJldHVybiBwYXNzU3ViZnJhbWVF
dmVudFRvU3ViZnJhbWUobW91c2VFdmVudEFuZFJlc3VsdCwgc3ViZnJhbWUpOwogCiAgICAgLy8g
V2ViS2l0MiBjb2RlIHBhdGguCi0gICAgc3ViZnJhbWUtPmV2ZW50SGFuZGxlcigpLmhhbmRsZU1v
dXNlUmVsZWFzZUV2ZW50KG1ldi5ldmVudCgpKTsKKyAgICBzdWJmcmFtZS5ldmVudEhhbmRsZXIo
KS5oYW5kbGVNb3VzZVJlbGVhc2VFdmVudChtb3VzZUV2ZW50QW5kUmVzdWx0LmV2ZW50KCkpOwog
ICAgIHJldHVybiB0cnVlOwogfQogCkBAIC03MTIsNyArNzEyLDcgQEAgYm9vbCBFdmVudEhhbmRs
ZXI6OnRyeVRvQmVnaW5EcmFnQXRQb2ludChjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24s
IGNvbnN0IEkKICAgICBhdXRvIGRvY3VtZW50UG9pbnQgPSBwcm90ZWN0ZWRGcmFtZS0+dmlldygp
ID8gcHJvdGVjdGVkRnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhzeW50aGV0aWNNb3Vz
ZU1vdmVFdmVudC5wb3NpdGlvbigpKSA6IHN5bnRoZXRpY01vdXNlTW92ZUV2ZW50LnBvc2l0aW9u
KCk7CiAgICAgYXV0byBoaXRUZXN0ZWRNb3VzZUV2ZW50ID0gZG9jdW1lbnQtPnByZXBhcmVNb3Vz
ZUV2ZW50KGhpdFR5cGUsIGRvY3VtZW50UG9pbnQsIHN5bnRoZXRpY01vdXNlTW92ZUV2ZW50KTsK
IAotICAgIFJlZlB0cjxGcmFtZT4gc3ViZnJhbWUgPSBzdWJmcmFtZUZvckhpdFRlc3RSZXN1bHQo
aGl0VGVzdGVkTW91c2VFdmVudCk7CisgICAgYXV0byBzdWJmcmFtZSA9IHN1YmZyYW1lRm9ySGl0
VGVzdFJlc3VsdChoaXRUZXN0ZWRNb3VzZUV2ZW50KTsKICAgICBpZiAoc3ViZnJhbWUgJiYgc3Vi
ZnJhbWUtPmV2ZW50SGFuZGxlcigpLnRyeVRvQmVnaW5EcmFnQXRQb2ludChhZGp1c3RlZENsaWVu
dFBvc2l0aW9uLCBhZGp1c3RlZEdsb2JhbFBvc2l0aW9uKSkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQppbmRleCA3Njdk
ZDJhNmEyZjIwYjdkMGI5MWZmYzM2ZTExYWJmZjJlM2I4ZDJlLi43ZmRkNzQyOGQ5ZTllZmRkYzNm
MzUzZWQ1NGYyOGFjNmI0YTQxYmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21h
Yy9FdmVudEhhbmRsZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRI
YW5kbGVyTWFjLm1tCkBAIC0zNzUsNyArMzc1LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmV2ZW50
TG9vcEhhbmRsZU1vdXNlVXAoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYpCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAgICAgCi1ib29sIEV2ZW50SGFuZGxlcjo6cGFzc1N1YmZyYW1l
RXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50LCBGcmFt
ZSogc3ViZnJhbWUsIEhpdFRlc3RSZXN1bHQqIGhvdmVyZWROb2RlKQorYm9vbCBFdmVudEhhbmRs
ZXI6OnBhc3NTdWJmcmFtZUV2ZW50VG9TdWJmcmFtZShNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1
bHRzJiBldmVudCwgRnJhbWUmIHN1YmZyYW1lLCBIaXRUZXN0UmVzdWx0KiBoaXRUZXN0UmVzdWx0
KQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIApAQCAtMzg4LDcgKzM4OCw3
IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzU3ViZnJhbWVFdmVudFRvU3ViZnJhbWUoTW91c2VF
dmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlCiAgICAgICAgIGlmICghbV9tb3VzZURvd25XYXNJ
blN1YmZyYW1lKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2lmIEVOQUJMRShEUkFHX1NV
UFBPUlQpCi0gICAgICAgIGlmIChzdWJmcmFtZS0+cGFnZSgpLT5kcmFnQ29udHJvbGxlcigpLmRp
ZEluaXRpYXRlRHJhZygpKQorICAgICAgICBpZiAoc3ViZnJhbWUucGFnZSgpLT5kcmFnQ29udHJv
bGxlcigpLmRpZEluaXRpYXRlRHJhZygpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2Vu
ZGlmCiAgICAgY2FzZSBOU0V2ZW50VHlwZU1vdXNlTW92ZWQ6CkBAIC0zOTcsNyArMzk3LDcgQEAg
Ym9vbCBFdmVudEhhbmRsZXI6OnBhc3NTdWJmcmFtZUV2ZW50VG9TdWJmcmFtZShNb3VzZUV2ZW50
V2l0aEhpdFRlc3RSZXN1bHRzJiBldmUKICAgICAgICAgLy8gY3VycmVudE5TRXZlbnQoKSB0aGF0
IG1vdXNlTW92ZWQoKSBkb2VzIHdvdWxkIGhhdmUgbm8gZWZmZWN0LgogICAgICAgICBBU1NFUlQo
IW1fc2VuZGluZ0V2ZW50VG9TdWJ2aWV3KTsKICAgICAgICAgbV9zZW5kaW5nRXZlbnRUb1N1YnZp
ZXcgPSB0cnVlOwotICAgICAgICBzdWJmcmFtZS0+ZXZlbnRIYW5kbGVyKCkuaGFuZGxlTW91c2VN
b3ZlRXZlbnQoY3VycmVudFBsYXRmb3JtTW91c2VFdmVudCgpLCBob3ZlcmVkTm9kZSk7CisgICAg
ICAgIHN1YmZyYW1lLmV2ZW50SGFuZGxlcigpLmhhbmRsZU1vdXNlTW92ZUV2ZW50KGN1cnJlbnRQ
bGF0Zm9ybU1vdXNlRXZlbnQoKSwgaGl0VGVzdFJlc3VsdCk7CiAgICAgICAgIG1fc2VuZGluZ0V2
ZW50VG9TdWJ2aWV3ID0gZmFsc2U7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAKQEAg
LTQyMSw3ICs0MjEsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6cGFzc1N1YmZyYW1lRXZlbnRUb1N1
YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICBBU1NFUlQoIW1fc2VuZGluZ0V2ZW50VG9TdWJ2aWV3KTsKICAg
ICAgICAgbV9zZW5kaW5nRXZlbnRUb1N1YnZpZXcgPSB0cnVlOwotICAgICAgICBzdWJmcmFtZS0+
ZXZlbnRIYW5kbGVyKCkuaGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoY3VycmVudFBsYXRmb3JtTW91
c2VFdmVudCgpKTsKKyAgICAgICAgc3ViZnJhbWUuZXZlbnRIYW5kbGVyKCkuaGFuZGxlTW91c2VS
ZWxlYXNlRXZlbnQoY3VycmVudFBsYXRmb3JtTW91c2VFdmVudCgpKTsKICAgICAgICAgbV9zZW5k
aW5nRXZlbnRUb1N1YnZpZXcgPSBmYWxzZTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpA
QCAtNjgzLDIyICs2ODMsMjIgQEAgc3RhdGljIGJvb2wgZnJhbWVIYXNQbGF0Zm9ybVdpZGdldChj
b25zdCBGcmFtZSYgZnJhbWUpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEV2ZW50SGFu
ZGxlcjo6cGFzc01vdXNlUHJlc3NFdmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0
UmVzdWx0cyYgbWV2LCBGcmFtZSogc3ViZnJhbWUpCitib29sIEV2ZW50SGFuZGxlcjo6cGFzc01v
dXNlUHJlc3NFdmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgbW91
c2VFdmVudEFuZFJlc3VsdCwgRnJhbWUmIHN1YmZyYW1lKQogewogICAgIC8vIFdlYktpdDEgY29k
ZSBwYXRoLgogICAgIGlmIChmcmFtZUhhc1BsYXRmb3JtV2lkZ2V0KG1fZnJhbWUpKQotICAgICAg
ICByZXR1cm4gcGFzc1N1YmZyYW1lRXZlbnRUb1N1YmZyYW1lKG1ldiwgc3ViZnJhbWUpOworICAg
ICAgICByZXR1cm4gcGFzc1N1YmZyYW1lRXZlbnRUb1N1YmZyYW1lKG1vdXNlRXZlbnRBbmRSZXN1
bHQsIHN1YmZyYW1lKTsKIAogICAgIC8vIFdlYktpdDIgY29kZSBwYXRoLgotICAgIHN1YmZyYW1l
LT5ldmVudEhhbmRsZXIoKS5oYW5kbGVNb3VzZVByZXNzRXZlbnQobWV2LmV2ZW50KCkpOworICAg
IHN1YmZyYW1lLmV2ZW50SGFuZGxlcigpLmhhbmRsZU1vdXNlUHJlc3NFdmVudChtb3VzZUV2ZW50
QW5kUmVzdWx0LmV2ZW50KCkpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEV2ZW50SGFu
ZGxlcjo6cGFzc01vdXNlTW92ZUV2ZW50VG9TdWJmcmFtZShNb3VzZUV2ZW50V2l0aEhpdFRlc3RS
ZXN1bHRzJiBtZXYsIEZyYW1lKiBzdWJmcmFtZSwgSGl0VGVzdFJlc3VsdCogaG92ZXJlZE5vZGUp
Citib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlTW92ZUV2ZW50VG9TdWJmcmFtZShNb3VzZUV2
ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBtb3VzZUV2ZW50QW5kUmVzdWx0LCBGcmFtZSYgc3ViZnJh
bWUsIEhpdFRlc3RSZXN1bHQqIGhpdFRlc3RSZXN1bHQpCiB7CiAgICAgLy8gV2ViS2l0MSBjb2Rl
IHBhdGguCiAgICAgaWYgKGZyYW1lSGFzUGxhdGZvcm1XaWRnZXQobV9mcmFtZSkpCi0gICAgICAg
IHJldHVybiBwYXNzU3ViZnJhbWVFdmVudFRvU3ViZnJhbWUobWV2LCBzdWJmcmFtZSwgaG92ZXJl
ZE5vZGUpOworICAgICAgICByZXR1cm4gcGFzc1N1YmZyYW1lRXZlbnRUb1N1YmZyYW1lKG1vdXNl
RXZlbnRBbmRSZXN1bHQsIHN1YmZyYW1lLCBoaXRUZXN0UmVzdWx0KTsKIAogI2lmIEVOQUJMRShE
UkFHX1NVUFBPUlQpCiAgICAgLy8gV2ViS2l0MiBjb2RlIHBhdGguCkBAIC03MDYsMTggKzcwNiwx
OCBAQCBib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlTW92ZUV2ZW50VG9TdWJmcmFtZShNb3Vz
ZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBtZQogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5k
aWYKIAotICAgIHN1YmZyYW1lLT5ldmVudEhhbmRsZXIoKS5oYW5kbGVNb3VzZU1vdmVFdmVudCht
ZXYuZXZlbnQoKSwgaG92ZXJlZE5vZGUpOworICAgIHN1YmZyYW1lLmV2ZW50SGFuZGxlcigpLmhh
bmRsZU1vdXNlTW92ZUV2ZW50KG1vdXNlRXZlbnRBbmRSZXN1bHQuZXZlbnQoKSwgaGl0VGVzdFJl
c3VsdCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzTW91
c2VSZWxlYXNlRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIG1l
diwgRnJhbWUqIHN1YmZyYW1lKQorYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NNb3VzZVJlbGVhc2VF
dmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgbW91c2VFdmVudEFu
ZFJlc3VsdCwgRnJhbWUmIHN1YmZyYW1lKQogewogICAgIC8vIFdlYktpdDEgY29kZSBwYXRoLgog
ICAgIGlmIChmcmFtZUhhc1BsYXRmb3JtV2lkZ2V0KG1fZnJhbWUpKQotICAgICAgICByZXR1cm4g
cGFzc1N1YmZyYW1lRXZlbnRUb1N1YmZyYW1lKG1ldiwgc3ViZnJhbWUpOworICAgICAgICByZXR1
cm4gcGFzc1N1YmZyYW1lRXZlbnRUb1N1YmZyYW1lKG1vdXNlRXZlbnRBbmRSZXN1bHQsIHN1YmZy
YW1lKTsKIAogICAgIC8vIFdlYktpdDIgY29kZSBwYXRoLgotICAgIHN1YmZyYW1lLT5ldmVudEhh
bmRsZXIoKS5oYW5kbGVNb3VzZVJlbGVhc2VFdmVudChtZXYuZXZlbnQoKSk7CisgICAgc3ViZnJh
bWUuZXZlbnRIYW5kbGVyKCkuaGFuZGxlTW91c2VSZWxlYXNlRXZlbnQobW91c2VFdmVudEFuZFJl
c3VsdC5ldmVudCgpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS93aW4vRXZlbnRIYW5kbGVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvd2luL0V2ZW50SGFuZGxlcldpbi5jcHAKaW5kZXggMDkwOTcxMGM1YjM4Y2EyYmU0MzA4MTI4
NTgzZmYzYTk2MGEwYmQzYi4uOGVjMjUzYmJlZmJjOThhY2IyYjA2Njc4OTZjODAwMmMwODM4NjVj
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRXZlbnRIYW5kbGVyV2luLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9FdmVudEhhbmRsZXJXaW4uY3BwCkBAIC0z
MSwxNCArMzEsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIEV2ZW50SGFuZGxl
cjo6cGFzc01vdXNlTW92ZUV2ZW50VG9TdWJmcmFtZShNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1
bHRzJiBtZXYsIEZyYW1lKiBzdWJmcmFtZSwgSGl0VGVzdFJlc3VsdCogaG92ZXJlZE5vZGUpCiti
b29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlTW92ZUV2ZW50VG9TdWJmcmFtZShNb3VzZUV2ZW50
V2l0aEhpdFRlc3RSZXN1bHRzJiBtb3VzZUV2ZW50QW5kUmVzdWx0LCBGcmFtZSYgc3ViZnJhbWUs
IEhpdFRlc3RSZXN1bHQmIGhpdFRlc3RSZXN1bHQpCiB7CiAjaWYgRU5BQkxFKERSQUdfU1VQUE9S
VCkKICAgICBpZiAobV9tb3VzZURvd25NYXlTdGFydERyYWcgJiYgIW1fbW91c2VEb3duV2FzSW5T
dWJmcmFtZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAKLSAgICBzdWJmcmFtZS0+
ZXZlbnRIYW5kbGVyKCkuaGFuZGxlTW91c2VNb3ZlRXZlbnQobWV2LmV2ZW50KCksIGhvdmVyZWRO
b2RlKTsKKyAgICBzdWJmcmFtZS5ldmVudEhhbmRsZXIoKS5oYW5kbGVNb3VzZU1vdmVFdmVudCht
b3VzZUV2ZW50QW5kUmVzdWx0LmV2ZW50KCksIGhpdFRlc3RSZXN1bHQpOwogICAgIHJldHVybiB0
cnVlOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398446</attachid>
            <date>2020-05-04 17:48:59 -0700</date>
            <delta_ts>2020-05-04 19:39:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211413-20200504174858.patch</filename>
            <type>text/plain</type>
            <size>25545</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxMTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWJkMWNjNzU1MjQxNDk0
MTJmY2I4MWViYTVmNDc2Y2IwNDgxNmJmMC4uODNhMjRkYjRlMmIzZjFlNGQyZDk3ZWMyZWY2NTNh
MWE5ODVmZGEyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIwLTA1LTA0ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIENvZGUgY2xlYW51
cCBpbiBFdmVudEhhbmRsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxMTQxMworCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAg
ICAgICAgVXNlIGEgYmV0dGVyIG5hbWUgZm9yICJob3ZlcmVkTm9kZSIgd2hpY2ggaXMgYSBIaXRU
ZXN0UmVzdWx0LgorCisgICAgICAgIENvbnZlcnQgRnJhbWUqIHRvIEZyYW1lJi4KKworICAgICAg
ICBIYXZlIGEgY291cGxlIG9mIGhlbHBlciBmdW5jdGlvbnMgcmV0dXJuIFJlZlB0cjxGcmFtZT4u
CisKKyAgICAgICAgKiBwYWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkF1dG9zY3JvbGxDb250cm9sbGVyOjpzdG9wQXV0b3Njcm9sbFRpbWVyKToKKyAgICAg
ICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRs
ZXI6OnN1YmZyYW1lRm9ySGl0VGVzdFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhh
bmRsZXI6OnN1YmZyYW1lRm9yVGFyZ2V0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhh
bmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhh
bmRsZXI6OmhhbmRsZU1vdXNlRG91YmxlQ2xpY2tFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudEhhbmRsZXI6Om1vdXNlTW92ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVy
OjpwYXNzTW91c2VNb3ZlZEV2ZW50VG9TY3JvbGxiYXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VNb3ZlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRIYW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVhc2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudEhhbmRsZXI6OnBhc3NNb3VzZVByZXNzRXZlbnRUb1Njcm9sbGJhcik6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudEhhbmRsZXI6OnBhc3NNb3VzZVByZXNzRXZlbnRUb1N1YmZyYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUmVsZWFzZUV2ZW50VG9TdWJm
cmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnBhc3NXaWRnZXRNb3VzZURv
d25FdmVudFRvV2lkZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGFzc01v
dXNlTW92ZUV2ZW50VG9TdWJmcmFtZSk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuaDoK
KyAgICAgICAgKiBwYWdlL2lvcy9FdmVudEhhbmRsZXJJT1MubW06CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OnBhc3NTdWJmcmFtZUV2ZW50VG9TdWJmcmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudEhhbmRsZXI6OnBhc3NNb3VzZVByZXNzRXZlbnRUb1N1YmZyYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGFzc01vdXNlTW92ZUV2ZW50VG9TdWJmcmFt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnBhc3NNb3VzZVJlbGVhc2VFdmVu
dFRvU3ViZnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjp0cnlUb0JlZ2lu
RHJhZ0F0UG9pbnQpOgorICAgICAgICAqIHBhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGFzc1N1YmZyYW1lRXZlbnRUb1N1YmZyYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUHJlc3NFdmVudFRv
U3ViZnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpwYXNzTW91c2VNb3Zl
RXZlbnRUb1N1YmZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGFzc01v
dXNlUmVsZWFzZUV2ZW50VG9TdWJmcmFtZSk6CisgICAgICAgICogcGFnZS93aW4vRXZlbnRIYW5k
bGVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGFzc01vdXNlTW92
ZUV2ZW50VG9TdWJmcmFtZSk6CisKIDIwMjAtMDUtMDQgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZy
YXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgT3ZlcmZsb3cgc2Nyb2xsYmFycyBkb24ndCBncm93
IHdoZW4gaG92ZXJlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9BdXRvc2Nyb2xs
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0F1dG9zY3JvbGxDb250cm9sbGVy
LmNwcAppbmRleCA3YjNkZTQwNDVmMjJmODdlZjIxOWJhMWJmZmFlZDExMDZmNjQ1ZDlhLi5mYTJh
NzdhODA4OTQ3NGQ4MjVmMjMxMjUyMWE2ODhlMDhlYWEzNDE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLmNwcApAQCAtOTUsNyArOTUsNyBAQCB2b2lkIEF1
dG9zY3JvbGxDb250cm9sbGVyOjpzdG9wQXV0b3Njcm9sbFRpbWVyKGJvb2wgcmVuZGVyZXJJc0Jl
aW5nRGVzdHJveWVkKQogCiAgICAgRnJhbWUmIGZyYW1lID0gc2Nyb2xsYWJsZS0+ZnJhbWUoKTsK
ICAgICBpZiAoYXV0b3Njcm9sbEluUHJvZ3Jlc3MoKSAmJiBmcmFtZS5ldmVudEhhbmRsZXIoKS5t
b3VzZURvd25XYXNJblN1YmZyYW1lKCkpIHsKLSAgICAgICAgaWYgKEZyYW1lKiBzdWJmcmFtZSA9
IGZyYW1lLmV2ZW50SGFuZGxlcigpLnN1YmZyYW1lRm9yVGFyZ2V0Tm9kZShmcmFtZS5ldmVudEhh
bmRsZXIoKS5tb3VzZVByZXNzTm9kZSgpKSkKKyAgICAgICAgaWYgKGF1dG8gc3ViZnJhbWUgPSBm
cmFtZS5ldmVudEhhbmRsZXIoKS5zdWJmcmFtZUZvclRhcmdldE5vZGUoZnJhbWUuZXZlbnRIYW5k
bGVyKCkubW91c2VQcmVzc05vZGUoKSkpCiAgICAgICAgICAgICBzdWJmcmFtZS0+ZXZlbnRIYW5k
bGVyKCkuc3RvcEF1dG9zY3JvbGxUaW1lcihyZW5kZXJlcklzQmVpbmdEZXN0cm95ZWQpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4
IDhkNDE3MTc3NDQyMzViZjgxY2ZhMDc0ZTBhYjU2MjFhZTM4YjA0MzcuLjA1MTdhOGZhMjAwOWRk
YTc0ZDZkMTQyZjA4MmVjNWUwNWUyOTg2ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAKQEAgLTEzMjIsMTQgKzEzMjIsMTQgQEAgSW50UG9pbnQgRXZlbnRIYW5kbGVyOjpsYXN0
S25vd25Nb3VzZVBvc2l0aW9uKCkgY29uc3QKICAgICByZXR1cm4gbV9sYXN0S25vd25Nb3VzZVBv
c2l0aW9uOwogfQogCi1GcmFtZSogRXZlbnRIYW5kbGVyOjpzdWJmcmFtZUZvckhpdFRlc3RSZXN1
bHQoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgaGl0VGVzdFJlc3VsdCkKK1Jl
ZlB0cjxGcmFtZT4gRXZlbnRIYW5kbGVyOjpzdWJmcmFtZUZvckhpdFRlc3RSZXN1bHQoY29uc3Qg
TW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgaGl0VGVzdFJlc3VsdCkKIHsKICAgICBpZiAo
IWhpdFRlc3RSZXN1bHQuaXNPdmVyV2lkZ2V0KCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gc3ViZnJhbWVGb3JUYXJnZXROb2RlKGhpdFRl
c3RSZXN1bHQudGFyZ2V0Tm9kZSgpKTsKIH0KIAotRnJhbWUqIEV2ZW50SGFuZGxlcjo6c3ViZnJh
bWVGb3JUYXJnZXROb2RlKE5vZGUqIG5vZGUpCitSZWZQdHI8RnJhbWU+IEV2ZW50SGFuZGxlcjo6
c3ViZnJhbWVGb3JUYXJnZXROb2RlKE5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKCFub2RlKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE3NTIsNyArMTc1Miw3IEBAIGJvb2wgRXZlbnRIYW5k
bGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBwbGF0
Zm9ybU1vdXNlCiAKICAgICBpZiAoIXBhc3NlZFRvU2Nyb2xsYmFyKSB7CiAgICAgICAgIFJlZlB0
cjxGcmFtZT4gc3ViZnJhbWUgPSBzdWJmcmFtZUZvckhpdFRlc3RSZXN1bHQobW91c2VFdmVudCk7
Ci0gICAgICAgIGlmIChzdWJmcmFtZSAmJiBwYXNzTW91c2VQcmVzc0V2ZW50VG9TdWJmcmFtZSht
b3VzZUV2ZW50LCBzdWJmcmFtZS5nZXQoKSkpIHsKKyAgICAgICAgaWYgKHN1YmZyYW1lICYmIHBh
c3NNb3VzZVByZXNzRXZlbnRUb1N1YmZyYW1lKG1vdXNlRXZlbnQsICpzdWJmcmFtZSkpIHsKICAg
ICAgICAgICAgIC8vIFN0YXJ0IGNhcHR1cmluZyBmdXR1cmUgZXZlbnRzIGZvciB0aGlzIGZyYW1l
LiBXZSBvbmx5IGRvIHRoaXMgaWYgd2UgZGlkbid0IGNsZWFyCiAgICAgICAgICAgICAvLyB0aGUg
bV9tb3VzZVByZXNzZWQgZmxhZywgd2hpY2ggbWF5IGhhcHBlbiBpZiBhbiBBcHBLaXQgd2lkZ2V0
IGVudGVyZWQgYSBtb2RhbCBldmVudCBsb29wLgogICAgICAgICAgICAgbV9jYXB0dXJlc0RyYWdn
aW5nID0gc3ViZnJhbWUtPmV2ZW50SGFuZGxlcigpLmNhcHR1cmVzRHJhZ2dpbmcoKTsKQEAgLTE4
NTEsMTAgKzE4NTEsMTIgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlRG91YmxlQ2xp
Y2tFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIHBsYXRmb3IKIAogICAgIGNvbnN0ZXhw
ciBPcHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlJlcXVlc3RUeXBlPiBoaXRUeXBlIHsgSGl0VGVz
dFJlcXVlc3Q6OlJlbGVhc2UsIEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1VzZXJBZ2VudFNoYWRv
d0NvbnRlbnQgfTsKICAgICBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzIG1vdXNlRXZlbnQg
PSBwcmVwYXJlTW91c2VFdmVudChoaXRUeXBlLCBwbGF0Zm9ybU1vdXNlRXZlbnQpOwotICAgIEZy
YW1lKiBzdWJmcmFtZSA9IHN1YmZyYW1lRm9ySGl0VGVzdFJlc3VsdChtb3VzZUV2ZW50KTsKKyAg
ICBhdXRvIHN1YmZyYW1lID0gc3ViZnJhbWVGb3JIaXRUZXN0UmVzdWx0KG1vdXNlRXZlbnQpOwor
CiAgICAgaWYgKG1fZXZlbnRIYW5kbGVyV2lsbFJlc2V0Q2FwdHVyaW5nTW91c2VFdmVudHNFbGVt
ZW50KQogICAgICAgICBtX2NhcHR1cmluZ01vdXNlRXZlbnRzRWxlbWVudCA9IG51bGxwdHI7Ci0g
ICAgaWYgKHN1YmZyYW1lICYmIHBhc3NNb3VzZVByZXNzRXZlbnRUb1N1YmZyYW1lKG1vdXNlRXZl
bnQsIHN1YmZyYW1lKSkKKworICAgIGlmIChzdWJmcmFtZSAmJiBwYXNzTW91c2VQcmVzc0V2ZW50
VG9TdWJmcmFtZShtb3VzZUV2ZW50LCAqc3ViZnJhbWUpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAogICAgIG1fY2xpY2tDb3VudCA9IHBsYXRmb3JtTW91c2VFdmVudC5jbGlja0NvdW50KCk7CkBA
IC0xOTAwLDE0ICsxOTAyLDE0IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjptb3VzZU1vdmVkKGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpCiAgICAgaWYgKG1fZnJhbWUucGFnZSgpICYmIG1f
ZnJhbWUucGFnZSgpLT5wYWdlT3ZlcmxheUNvbnRyb2xsZXIoKS5oYW5kbGVNb3VzZUV2ZW50KGV2
ZW50KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBIaXRUZXN0UmVzdWx0IGhvdmVyZWRO
b2RlID0gSGl0VGVzdFJlc3VsdChMYXlvdXRQb2ludCgpKTsKLSAgICBib29sIHJlc3VsdCA9IGhh
bmRsZU1vdXNlTW92ZUV2ZW50KGV2ZW50LCAmaG92ZXJlZE5vZGUpOworICAgIEhpdFRlc3RSZXN1
bHQgaGl0VGVzdFJlc3VsdDsKKyAgICBib29sIHJlc3VsdCA9IGhhbmRsZU1vdXNlTW92ZUV2ZW50
KGV2ZW50LCAmaGl0VGVzdFJlc3VsdCk7CiAKICAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS5wYWdl
KCk7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogCi0gICAgaWYgKGF1
dG8gc2Nyb2xsZWRBcmVhID0gZW5jbG9zaW5nU2Nyb2xsYWJsZUFyZWEoaG92ZXJlZE5vZGUuaW5u
ZXJOb2RlKCkpKSB7CisgICAgaWYgKGF1dG8gc2Nyb2xsZWRBcmVhID0gZW5jbG9zaW5nU2Nyb2xs
YWJsZUFyZWEoaGl0VGVzdFJlc3VsdC5pbm5lck5vZGUoKSkpIHsKICAgICAgICAgaWYgKEZyYW1l
VmlldyogZnJhbWVWaWV3ID0gbV9mcmFtZS52aWV3KCkpIHsKICAgICAgICAgICAgIGlmIChmcmFt
ZVZpZXctPmNvbnRhaW5zU2Nyb2xsYWJsZUFyZWEoc2Nyb2xsZWRBcmVhKSkKICAgICAgICAgICAg
ICAgICBzY3JvbGxlZEFyZWEtPm1vdXNlTW92ZWRJbkNvbnRlbnRBcmVhKCk7CkBAIC0xOTE3LDE4
ICsxOTE5LDE4IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjptb3VzZU1vdmVkKGNvbnN0IFBsYXRmb3Jt
TW91c2VFdmVudCYgZXZlbnQpCiAgICAgaWYgKEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbV9mcmFt
ZS52aWV3KCkpCiAgICAgICAgIGZyYW1lVmlldy0+bW91c2VNb3ZlZEluQ29udGVudEFyZWEoKTsg
IAogCi0gICAgaG92ZXJlZE5vZGUuc2V0VG9Ob25Vc2VyQWdlbnRTaGFkb3dBbmNlc3RvcigpOwot
ICAgIHBhZ2UtPmNocm9tZSgpLm1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KGhvdmVyZWROb2RlLCBl
dmVudC5tb2RpZmllckZsYWdzKCkpOworICAgIGhpdFRlc3RSZXN1bHQuc2V0VG9Ob25Vc2VyQWdl
bnRTaGFkb3dBbmNlc3RvcigpOworICAgIHBhZ2UtPmNocm9tZSgpLm1vdXNlRGlkTW92ZU92ZXJF
bGVtZW50KGhpdFRlc3RSZXN1bHQsIGV2ZW50Lm1vZGlmaWVyRmxhZ3MoKSk7CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAogYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NNb3VzZU1vdmVkRXZlbnRUb1Nj
cm9sbGJhcnMoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKIHsKLSAgICBIaXRUZXN0
UmVzdWx0IGhvdmVyZWROb2RlOwotICAgIHJldHVybiBoYW5kbGVNb3VzZU1vdmVFdmVudChldmVu
dCwgJmhvdmVyZWROb2RlLCB0cnVlKTsKKyAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3RSZXN1bHQ7
CisgICAgcmV0dXJuIGhhbmRsZU1vdXNlTW92ZUV2ZW50KGV2ZW50LCAmaGl0VGVzdFJlc3VsdCwg
dHJ1ZSk7CiB9CiAKLWJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZU1vdmVFdmVudChjb25z
dCBQbGF0Zm9ybU1vdXNlRXZlbnQmIHBsYXRmb3JtTW91c2VFdmVudCwgSGl0VGVzdFJlc3VsdCog
aG92ZXJlZE5vZGUsIGJvb2wgb25seVVwZGF0ZVNjcm9sbGJhcnMpCitib29sIEV2ZW50SGFuZGxl
cjo6aGFuZGxlTW91c2VNb3ZlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBwbGF0Zm9y
bU1vdXNlRXZlbnQsIEhpdFRlc3RSZXN1bHQqIGhpdFRlc3RSZXN1bHQsIGJvb2wgb25seVVwZGF0
ZVNjcm9sbGJhcnMpCiB7CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICBib29sIGRlZmF1
bHRQcmV2ZW50ZWQgPSBkaXNwYXRjaFN5bnRoZXRpY1RvdWNoRXZlbnRJZkVuYWJsZWQocGxhdGZv
cm1Nb3VzZUV2ZW50KTsKQEAgLTE5OTIsOCArMTk5NCw4IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpo
YW5kbGVNb3VzZU1vdmVFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIHBsYXRmb3JtTW91
c2VFCiAjZW5kaWYKICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KGhpdFR5cGUpOwogICAgIE1v
dXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgbW91c2VFdmVudCA9IHByZXBhcmVNb3VzZUV2ZW50
KHJlcXVlc3QsIHBsYXRmb3JtTW91c2VFdmVudCk7Ci0gICAgaWYgKGhvdmVyZWROb2RlKQotICAg
ICAgICAqaG92ZXJlZE5vZGUgPSBtb3VzZUV2ZW50LmhpdFRlc3RSZXN1bHQoKTsKKyAgICBpZiAo
aGl0VGVzdFJlc3VsdCkKKyAgICAgICAgKmhpdFRlc3RSZXN1bHQgPSBtb3VzZUV2ZW50LmhpdFRl
c3RSZXN1bHQoKTsKIAogICAgIGlmIChtX3Jlc2l6ZUxheWVyICYmIG1fcmVzaXplTGF5ZXItPmlu
UmVzaXplTW9kZSgpKQogICAgICAgICBtX3Jlc2l6ZUxheWVyLT5yZXNpemUocGxhdGZvcm1Nb3Vz
ZUV2ZW50LCBtX29mZnNldEZyb21SZXNpemVDb3JuZXIpOwpAQCAtMjAxOSw3ICsyMDIxLDcgQEAg
Ym9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlTW92ZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91
c2VFdmVudCYgcGxhdGZvcm1Nb3VzZUUKICAKICAgICAvLyBXZSB3YW50IG1vdXNlb3V0cyB0byBo
YXBwZW4gZmlyc3QsIGZyb20gdGhlIGluc2lkZSBvdXQuICBGaXJzdCBzZW5kIGEgbW92ZSBldmVu
dCB0byB0aGUgbGFzdCBzdWJmcmFtZSBzbyB0aGF0IGl0IHdpbGwgZmlyZSBtb3VzZW91dHMuCiAg
ICAgaWYgKG1fbGFzdE1vdXNlTW92ZUV2ZW50U3ViZnJhbWUgJiYgbV9sYXN0TW91c2VNb3ZlRXZl
bnRTdWJmcmFtZS0+dHJlZSgpLmlzRGVzY2VuZGFudE9mKCZtX2ZyYW1lKSAmJiBtX2xhc3RNb3Vz
ZU1vdmVFdmVudFN1YmZyYW1lICE9IG5ld1N1YmZyYW1lKQotICAgICAgICBwYXNzTW91c2VNb3Zl
RXZlbnRUb1N1YmZyYW1lKG1vdXNlRXZlbnQsIG1fbGFzdE1vdXNlTW92ZUV2ZW50U3ViZnJhbWUu
Z2V0KCkpOworICAgICAgICBwYXNzTW91c2VNb3ZlRXZlbnRUb1N1YmZyYW1lKG1vdXNlRXZlbnQs
ICptX2xhc3RNb3VzZU1vdmVFdmVudFN1YmZyYW1lKTsKIAogICAgIGlmIChuZXdTdWJmcmFtZSkg
ewogICAgICAgICAvLyBVcGRhdGUgb3Zlci9vdXQgc3RhdGUgYmVmb3JlIHBhc3NpbmcgdGhlIGV2
ZW50IHRvIHRoZSBzdWJmcmFtZS4KQEAgLTIwMjgsNyArMjAzMCw3IEBAIGJvb2wgRXZlbnRIYW5k
bGVyOjpoYW5kbGVNb3VzZU1vdmVFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIHBsYXRm
b3JtTW91c2VFCiAgICAgICAgIC8vIEV2ZW50IGRpc3BhdGNoIGluIHVwZGF0ZU1vdXNlRXZlbnRU
YXJnZXROb2RlIG1heSBoYXZlIGNhdXNlZCB0aGUgc3ViZnJhbWUgb2YgdGhlIHRhcmdldAogICAg
ICAgICAvLyBub2RlIHRvIGJlIGRldGFjaGVkIGZyb20gaXRzIEZyYW1lVmlldywgaW4gd2hpY2gg
Y2FzZSB0aGUgZXZlbnQgc2hvdWxkIG5vdCBiZSBwYXNzZWQuCiAgICAgICAgIGlmIChuZXdTdWJm
cmFtZS0+dmlldygpKQotICAgICAgICAgICAgc3dhbGxvd0V2ZW50IHw9IHBhc3NNb3VzZU1vdmVF
dmVudFRvU3ViZnJhbWUobW91c2VFdmVudCwgbmV3U3ViZnJhbWUuZ2V0KCksIGhvdmVyZWROb2Rl
KTsKKyAgICAgICAgICAgIHN3YWxsb3dFdmVudCB8PSBwYXNzTW91c2VNb3ZlRXZlbnRUb1N1YmZy
YW1lKG1vdXNlRXZlbnQsICpuZXdTdWJmcmFtZSwgaGl0VGVzdFJlc3VsdCk7CiAgICAgfQogCiAg
ICAgaWYgKCFuZXdTdWJmcmFtZSB8fCBtb3VzZUV2ZW50LnNjcm9sbGJhcigpKSB7CkBAIC0yMTQ4
LDEwICsyMTUwLDEwIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVhc2VFdmVu
dChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIHBsYXRmb3JtTW91CiAKICAgICBjb25zdGV4cHIg
T3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpSZXF1ZXN0VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RS
ZXF1ZXN0OjpSZWxlYXNlLCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dD
b250ZW50IH07CiAgICAgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyBtb3VzZUV2ZW50ID0g
cHJlcGFyZU1vdXNlRXZlbnQoaGl0VHlwZSwgcGxhdGZvcm1Nb3VzZUV2ZW50KTsKLSAgICBGcmFt
ZSogc3ViZnJhbWUgPSBtX2NhcHR1cmluZ01vdXNlRXZlbnRzRWxlbWVudC5nZXQoKSA/IHN1YmZy
YW1lRm9yVGFyZ2V0Tm9kZShtX2NhcHR1cmluZ01vdXNlRXZlbnRzRWxlbWVudC5nZXQoKSkgOiBz
dWJmcmFtZUZvckhpdFRlc3RSZXN1bHQobW91c2VFdmVudCk7CisgICAgUmVmUHRyPEZyYW1lPiBz
dWJmcmFtZSA9IG1fY2FwdHVyaW5nTW91c2VFdmVudHNFbGVtZW50LmdldCgpID8gc3ViZnJhbWVG
b3JUYXJnZXROb2RlKG1fY2FwdHVyaW5nTW91c2VFdmVudHNFbGVtZW50LmdldCgpKSA6IHN1YmZy
YW1lRm9ySGl0VGVzdFJlc3VsdChtb3VzZUV2ZW50KTsKICAgICBpZiAobV9ldmVudEhhbmRsZXJX
aWxsUmVzZXRDYXB0dXJpbmdNb3VzZUV2ZW50c0VsZW1lbnQpCiAgICAgICAgIG1fY2FwdHVyaW5n
TW91c2VFdmVudHNFbGVtZW50ID0gbnVsbHB0cjsKLSAgICBpZiAoc3ViZnJhbWUgJiYgcGFzc01v
dXNlUmVsZWFzZUV2ZW50VG9TdWJmcmFtZShtb3VzZUV2ZW50LCBzdWJmcmFtZSkpCisgICAgaWYg
KHN1YmZyYW1lICYmIHBhc3NNb3VzZVJlbGVhc2VFdmVudFRvU3ViZnJhbWUobW91c2VFdmVudCwg
KnN1YmZyYW1lKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBib29sIHN3YWxsb3dNb3Vz
ZVVwRXZlbnQgPSAhZGlzcGF0Y2hNb3VzZUV2ZW50KGV2ZW50TmFtZXMoKS5tb3VzZXVwRXZlbnQs
IG1vdXNlRXZlbnQudGFyZ2V0Tm9kZSgpLCB0cnVlLCBtX2NsaWNrQ291bnQsIHBsYXRmb3JtTW91
c2VFdmVudCwgZmFsc2UpOwpAQCAtNDA1MCwxMiArNDA1MiwxMiBAQCB2b2lkIEV2ZW50SGFuZGxl
cjo6c2V0RnJhbWVXYXNTY3JvbGxlZEJ5VXNlcigpCiAgICAgICAgIHYtPnNldFdhc1Njcm9sbGVk
QnlVc2VyKHRydWUpOwogfQogCi1ib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUHJlc3NFdmVu
dFRvU2Nyb2xsYmFyKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIG1vdXNlRXZlbnQsIFNj
cm9sbGJhciogc2Nyb2xsYmFyKQorYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NNb3VzZVByZXNzRXZl
bnRUb1Njcm9sbGJhcihNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBtb3VzZUV2ZW50QW5k
UmVzdWx0LCBTY3JvbGxiYXIqIHNjcm9sbGJhcikKIHsKICAgICBpZiAoIXNjcm9sbGJhciB8fCAh
c2Nyb2xsYmFyLT5lbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBzZXRGcmFt
ZVdhc1Njcm9sbGVkQnlVc2VyKCk7Ci0gICAgcmV0dXJuIHNjcm9sbGJhci0+bW91c2VEb3duKG1v
dXNlRXZlbnQuZXZlbnQoKSk7CisgICAgcmV0dXJuIHNjcm9sbGJhci0+bW91c2VEb3duKG1vdXNl
RXZlbnRBbmRSZXN1bHQuZXZlbnQoKSk7CiB9CiAKIC8vIElmIHNjcm9sbGJhciAodW5kZXIgbW91
c2UpIGlzIGRpZmZlcmVudCBmcm9tIGxhc3QsIHNlbmQgYSBtb3VzZSBleGl0ZWQuCkBAIC00MzU2
LDE1ICs0MzU4LDE1IEBAIE9wdGlvblNldDxQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcj4gRXZlbnRI
YW5kbGVyOjphY2Nlc3NLZXlNb2RpZmllcnMoKQogICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpN
b2RpZmllcjo6QWx0S2V5OwogfQogCi1ib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUHJlc3NF
dmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgbWV2LCBGcmFtZSog
c3ViZnJhbWUpCitib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUHJlc3NFdmVudFRvU3ViZnJh
bWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgbW91c2VFdmVudEFuZFJlc3VsdCwgRnJh
bWUmIHN1YmZyYW1lKQogewotICAgIHN1YmZyYW1lLT5ldmVudEhhbmRsZXIoKS5oYW5kbGVNb3Vz
ZVByZXNzRXZlbnQobWV2LmV2ZW50KCkpOworICAgIHN1YmZyYW1lLmV2ZW50SGFuZGxlcigpLmhh
bmRsZU1vdXNlUHJlc3NFdmVudChtb3VzZUV2ZW50QW5kUmVzdWx0LmV2ZW50KCkpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUmVsZWFzZUV2ZW50
VG9TdWJmcmFtZShNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBtZXYsIEZyYW1lKiBzdWJm
cmFtZSkKK2Jvb2wgRXZlbnRIYW5kbGVyOjpwYXNzTW91c2VSZWxlYXNlRXZlbnRUb1N1YmZyYW1l
KE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIG1vdXNlRXZlbnRBbmRSZXN1bHQsIEZyYW1l
JiBzdWJmcmFtZSkKIHsKLSAgICBzdWJmcmFtZS0+ZXZlbnRIYW5kbGVyKCkuaGFuZGxlTW91c2VS
ZWxlYXNlRXZlbnQobWV2LmV2ZW50KCkpOworICAgIHN1YmZyYW1lLmV2ZW50SGFuZGxlcigpLmhh
bmRsZU1vdXNlUmVsZWFzZUV2ZW50KG1vdXNlRXZlbnRBbmRSZXN1bHQuZXZlbnQoKSk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKQEAgLTQzODksNyArNDM5MSw2IEBAIGJvb2wgRXZlbnRIYW5kbGVy
OjpwYXNzV2lkZ2V0TW91c2VEb3duRXZlbnRUb1dpZGdldChSZW5kZXJXaWRnZXQqIHJlbmRlcldp
ZGdldCkKIAogYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NXaWRnZXRNb3VzZURvd25FdmVudFRvV2lk
Z2V0KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50KQogewotICAgIC8v
IEZpZ3VyZSBvdXQgd2hpY2ggdmlldyB0byBzZW5kIHRoZSBldmVudCB0by4KICAgICBSZW5kZXJP
YmplY3QqIHRhcmdldCA9IGV2ZW50LnRhcmdldE5vZGUoKSA/IGV2ZW50LnRhcmdldE5vZGUoKS0+
cmVuZGVyZXIoKSA6IG51bGxwdHI7CiAgICAgaWYgKCFpczxSZW5kZXJXaWRnZXQ+KHRhcmdldCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQ0MTYsOSArNDQxNyw5IEBAIGJvb2wgRXZlbnRI
YW5kbGVyOjpldmVudEFjdGl2YXRlZFZpZXcoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgY29u
c3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzTW91c2VN
b3ZlRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIG1ldiwgRnJh
bWUqIHN1YmZyYW1lLCBIaXRUZXN0UmVzdWx0KiBob3ZlcmVkTm9kZSkKK2Jvb2wgRXZlbnRIYW5k
bGVyOjpwYXNzTW91c2VNb3ZlRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJl
c3VsdHMmIG1vdXNlRXZlbnRBbmRSZXN1bHQsIEZyYW1lJiBzdWJmcmFtZSwgSGl0VGVzdFJlc3Vs
dCogcmVzdWx0KQogewotICAgIHN1YmZyYW1lLT5ldmVudEhhbmRsZXIoKS5oYW5kbGVNb3VzZU1v
dmVFdmVudChtZXYuZXZlbnQoKSwgaG92ZXJlZE5vZGUpOworICAgIHN1YmZyYW1lLmV2ZW50SGFu
ZGxlcigpLmhhbmRsZU1vdXNlTW92ZUV2ZW50KG1vdXNlRXZlbnRBbmRSZXN1bHQuZXZlbnQoKSwg
cmVzdWx0KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KICNlbmRpZiAvLyAhUExBVEZPUk0oQ09DT0Ep
ICYmICFQTEFURk9STShXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAppbmRleCBiYjAx
NGM2YTgzYThlNDAxYzRkMDlhNDZhYjdhNGQyYTFhOWRlNzY1Li41YjQ2NDQwZTI4YTE1MzZlN2U5
NmIyZjcxOWMyZGY0ZDk4OWE3NjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKQEAg
LTE4Nyw4ICsxODcsOCBAQCBwdWJsaWM6CiAgICAgSW50UG9pbnQgdGFyZ2V0UG9zaXRpb25Jbldp
bmRvd0ZvclNlbGVjdGlvbkF1dG9zY3JvbGwoKSBjb25zdDsKICAgICBib29sIHNob3VsZFVwZGF0
ZUF1dG9zY3JvbGwoKTsKIAotICAgIHN0YXRpYyBGcmFtZSogc3ViZnJhbWVGb3JUYXJnZXROb2Rl
KE5vZGUqKTsKLSAgICBzdGF0aWMgRnJhbWUqIHN1YmZyYW1lRm9ySGl0VGVzdFJlc3VsdChjb25z
dCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJik7CisgICAgc3RhdGljIFJlZlB0cjxGcmFt
ZT4gc3ViZnJhbWVGb3JUYXJnZXROb2RlKE5vZGUqKTsKKyAgICBzdGF0aWMgUmVmUHRyPEZyYW1l
PiBzdWJmcmFtZUZvckhpdFRlc3RSZXN1bHQoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVz
dWx0cyYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzY3JvbGxPdmVyZmxvdyhTY3JvbGxE
aXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5LCBOb2RlKiBzdGFydGluZ05vZGUgPSBudWxscHRy
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNjcm9sbFJlY3Vyc2l2ZWx5KFNjcm9sbERpcmVj
dGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHksIE5vZGUqIHN0YXJ0aW5nTm9kZSA9IG51bGxwdHIpOwpA
QCAtMjAzLDcgKzIwMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvc3RNb3VzZUNhcHR1cmUoKTsK
IAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFuZGxlTW91c2VQcmVzc0V2ZW50KGNvbnN0IFBs
YXRmb3JtTW91c2VFdmVudCYpOwotICAgIGJvb2wgaGFuZGxlTW91c2VNb3ZlRXZlbnQoY29uc3Qg
UGxhdGZvcm1Nb3VzZUV2ZW50JiwgSGl0VGVzdFJlc3VsdCogaG92ZXJlZE5vZGUgPSBudWxscHRy
LCBib29sIG9ubHlVcGRhdGVTY3JvbGxiYXJzID0gZmFsc2UpOworICAgIGJvb2wgaGFuZGxlTW91
c2VNb3ZlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiwgSGl0VGVzdFJlc3VsdCogPSBu
dWxscHRyLCBib29sIG9ubHlVcGRhdGVTY3JvbGxiYXJzID0gZmFsc2UpOwogICAgIFdFQkNPUkVf
RVhQT1JUIGJvb2wgaGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2
ZW50Jik7CiAgICAgYm9vbCBoYW5kbGVNb3VzZUZvcmNlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYW5kbGVXaGVlbEV2ZW50KGNvbnN0
IFBsYXRmb3JtV2hlZWxFdmVudCYpOwpAQCAtNDMwLDExICs0MzAsMTEgQEAgcHJpdmF0ZToKICAg
ICAKICAgICBib29sIG1vdXNlTW92ZW1lbnRFeGNlZWRzVGhyZXNob2xkKGNvbnN0IEZsb2F0UG9p
bnQmLCBpbnQgcG9pbnRzVGhyZXNob2xkKSBjb25zdDsKIAotICAgIGJvb2wgcGFzc01vdXNlUHJl
c3NFdmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYsIEZyYW1lKiBz
dWJmcmFtZSk7Ci0gICAgYm9vbCBwYXNzTW91c2VNb3ZlRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZl
bnRXaXRoSGl0VGVzdFJlc3VsdHMmLCBGcmFtZSogc3ViZnJhbWUsIEhpdFRlc3RSZXN1bHQqIGhv
dmVyZWROb2RlID0gbnVsbHB0cik7Ci0gICAgYm9vbCBwYXNzTW91c2VSZWxlYXNlRXZlbnRUb1N1
YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmLCBGcmFtZSogc3ViZnJhbWUpOwor
ICAgIGJvb2wgcGFzc01vdXNlUHJlc3NFdmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRU
ZXN0UmVzdWx0cyYsIEZyYW1lJik7CisgICAgYm9vbCBwYXNzTW91c2VNb3ZlRXZlbnRUb1N1YmZy
YW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmLCBGcmFtZSYsIEhpdFRlc3RSZXN1bHQq
ID0gbnVsbHB0cik7CisgICAgYm9vbCBwYXNzTW91c2VSZWxlYXNlRXZlbnRUb1N1YmZyYW1lKE1v
dXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmLCBGcmFtZSYpOwogCi0gICAgYm9vbCBwYXNzU3Vi
ZnJhbWVFdmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYsIEZyYW1l
KiBzdWJmcmFtZSwgSGl0VGVzdFJlc3VsdCogaG92ZXJlZE5vZGUgPSBudWxscHRyKTsKKyAgICBi
b29sIHBhc3NTdWJmcmFtZUV2ZW50VG9TdWJmcmFtZShNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1
bHRzJiwgRnJhbWUmLCBIaXRUZXN0UmVzdWx0KiA9IG51bGxwdHIpOwogCiAgICAgYm9vbCBwYXNz
TW91c2VQcmVzc0V2ZW50VG9TY3JvbGxiYXIoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYs
IFNjcm9sbGJhciopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9FdmVu
dEhhbmRsZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9FdmVudEhhbmRsZXJJT1Mu
bW0KaW5kZXggMjliZGZjYzk2NDA5ZjM2MjQyYTBiNDIyOWFiNGExYWZhMjRmOTdhOC4uZTc3MzJj
YTI1NDJhMzc2MWM0NDdiNDVlZWEyOGM5NDg2Y2JhMWU1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9pb3MvRXZlbnRIYW5kbGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvaW9zL0V2ZW50SGFuZGxlcklPUy5tbQpAQCAtMzY0LDcgKzM2NCw3IEBAIGJvb2wgRXZlbnRI
YW5kbGVyOjpldmVudExvb3BIYW5kbGVNb3VzZVVwKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVz
dFJlc3VsdHMmKQogICAgIHJldHVybiB0cnVlOwogfQogICAgIAotYm9vbCBFdmVudEhhbmRsZXI6
OnBhc3NTdWJmcmFtZUV2ZW50VG9TdWJmcmFtZShNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRz
JiBldmVudCwgRnJhbWUqIHN1YmZyYW1lLCBIaXRUZXN0UmVzdWx0KiBob3ZlcmVkTm9kZSkKK2Jv
b2wgRXZlbnRIYW5kbGVyOjpwYXNzU3ViZnJhbWVFdmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdp
dGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQsIEZyYW1lJiBzdWJmcmFtZSwgSGl0VGVzdFJlc3VsdCog
aGl0VGVzdFJlc3VsdCkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKQEAg
LTM3Niw3ICszNzYsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6cGFzc1N1YmZyYW1lRXZlbnRUb1N1
YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZQogICAgICAgICAvLyBjdXJy
ZW50TlNFdmVudCgpIHRoYXQgbW91c2VNb3ZlZCgpIGRvZXMgd291bGQgaGF2ZSBubyBlZmZlY3Qu
CiAgICAgICAgIEFTU0VSVCghbV9zZW5kaW5nRXZlbnRUb1N1YnZpZXcpOwogICAgICAgICBtX3Nl
bmRpbmdFdmVudFRvU3VidmlldyA9IHRydWU7Ci0gICAgICAgIHN1YmZyYW1lLT5ldmVudEhhbmRs
ZXIoKS5oYW5kbGVNb3VzZU1vdmVFdmVudChjdXJyZW50UGxhdGZvcm1Nb3VzZUV2ZW50KCksIGhv
dmVyZWROb2RlKTsKKyAgICAgICAgc3ViZnJhbWUuZXZlbnRIYW5kbGVyKCkuaGFuZGxlTW91c2VN
b3ZlRXZlbnQoY3VycmVudFBsYXRmb3JtTW91c2VFdmVudCgpLCBoaXRUZXN0UmVzdWx0KTsKICAg
ICAgICAgbV9zZW5kaW5nRXZlbnRUb1N1YnZpZXcgPSBmYWxzZTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQpAQCAtNDAwLDcgKzQwMCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzU3Vi
ZnJhbWVFdmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIEFTU0VSVCghbV9zZW5kaW5nRXZlbnRU
b1N1YnZpZXcpOwogICAgICAgICBtX3NlbmRpbmdFdmVudFRvU3VidmlldyA9IHRydWU7Ci0gICAg
ICAgIHN1YmZyYW1lLT5ldmVudEhhbmRsZXIoKS5oYW5kbGVNb3VzZVJlbGVhc2VFdmVudChjdXJy
ZW50UGxhdGZvcm1Nb3VzZUV2ZW50KCkpOworICAgICAgICBzdWJmcmFtZS5ldmVudEhhbmRsZXIo
KS5oYW5kbGVNb3VzZVJlbGVhc2VFdmVudChjdXJyZW50UGxhdGZvcm1Nb3VzZUV2ZW50KCkpOwog
ICAgICAgICBtX3NlbmRpbmdFdmVudFRvU3VidmlldyA9IGZhbHNlOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CkBAIC01MzMsMzUgKzUzMywzNSBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZGlz
cGF0Y2hTeW50aGV0aWNNb3VzZU1vdmUoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBwbGF0Zm9y
bQogICAgIG1vdXNlTW92ZWQocGxhdGZvcm1Nb3VzZUV2ZW50KTsKIH0KIAotYm9vbCBFdmVudEhh
bmRsZXI6OnBhc3NNb3VzZVByZXNzRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVz
dFJlc3VsdHMmIG1ldiwgRnJhbWUqIHN1YmZyYW1lKQorYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NN
b3VzZVByZXNzRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIG1v
dXNlRXZlbnRBbmRSZXN1bHQsIEZyYW1lJiBzdWJmcmFtZSkKIHsKICAgICAvLyBXZWJLaXQxIGNv
ZGUgcGF0aC4KICAgICBpZiAoZnJhbWVIYXNQbGF0Zm9ybVdpZGdldChtX2ZyYW1lKSkKLSAgICAg
ICAgcmV0dXJuIHBhc3NTdWJmcmFtZUV2ZW50VG9TdWJmcmFtZShtZXYsIHN1YmZyYW1lKTsKKyAg
ICAgICAgcmV0dXJuIHBhc3NTdWJmcmFtZUV2ZW50VG9TdWJmcmFtZShtb3VzZUV2ZW50QW5kUmVz
dWx0LCBzdWJmcmFtZSk7CiAKICAgICAvLyBXZWJLaXQyIGNvZGUgcGF0aC4KLSAgICBzdWJmcmFt
ZS0+ZXZlbnRIYW5kbGVyKCkuaGFuZGxlTW91c2VQcmVzc0V2ZW50KG1ldi5ldmVudCgpKTsKKyAg
ICBzdWJmcmFtZS5ldmVudEhhbmRsZXIoKS5oYW5kbGVNb3VzZVByZXNzRXZlbnQobW91c2VFdmVu
dEFuZFJlc3VsdC5ldmVudCgpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBFdmVudEhh
bmRsZXI6OnBhc3NNb3VzZU1vdmVFdmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0
UmVzdWx0cyYgbWV2LCBGcmFtZSogc3ViZnJhbWUsIEhpdFRlc3RSZXN1bHQqIGhvdmVyZWROb2Rl
KQorYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NNb3VzZU1vdmVFdmVudFRvU3ViZnJhbWUoTW91c2VF
dmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgbW91c2VFdmVudEFuZFJlc3VsdCwgRnJhbWUmIHN1YmZy
YW1lLCBIaXRUZXN0UmVzdWx0KiBoaXRUZXN0UmVzdWx0KQogewogICAgIC8vIFdlYktpdDEgY29k
ZSBwYXRoLgogICAgIGlmIChmcmFtZUhhc1BsYXRmb3JtV2lkZ2V0KG1fZnJhbWUpKQotICAgICAg
ICByZXR1cm4gcGFzc1N1YmZyYW1lRXZlbnRUb1N1YmZyYW1lKG1ldiwgc3ViZnJhbWUsIGhvdmVy
ZWROb2RlKTsKKyAgICAgICAgcmV0dXJuIHBhc3NTdWJmcmFtZUV2ZW50VG9TdWJmcmFtZShtb3Vz
ZUV2ZW50QW5kUmVzdWx0LCBzdWJmcmFtZSwgaGl0VGVzdFJlc3VsdCk7CiAKLSAgICBzdWJmcmFt
ZS0+ZXZlbnRIYW5kbGVyKCkuaGFuZGxlTW91c2VNb3ZlRXZlbnQobWV2LmV2ZW50KCksIGhvdmVy
ZWROb2RlKTsKKyAgICBzdWJmcmFtZS5ldmVudEhhbmRsZXIoKS5oYW5kbGVNb3VzZU1vdmVFdmVu
dChtb3VzZUV2ZW50QW5kUmVzdWx0LmV2ZW50KCksIGhpdFRlc3RSZXN1bHQpOwogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUmVsZWFzZUV2ZW50VG9T
dWJmcmFtZShNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBtZXYsIEZyYW1lKiBzdWJmcmFt
ZSkKK2Jvb2wgRXZlbnRIYW5kbGVyOjpwYXNzTW91c2VSZWxlYXNlRXZlbnRUb1N1YmZyYW1lKE1v
dXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIG1vdXNlRXZlbnRBbmRSZXN1bHQsIEZyYW1lJiBz
dWJmcmFtZSkKIHsKICAgICAvLyBXZWJLaXQxIGNvZGUgcGF0aC4KICAgICBpZiAoZnJhbWVIYXNQ
bGF0Zm9ybVdpZGdldChtX2ZyYW1lKSkKLSAgICAgICAgcmV0dXJuIHBhc3NTdWJmcmFtZUV2ZW50
VG9TdWJmcmFtZShtZXYsIHN1YmZyYW1lKTsKKyAgICAgICAgcmV0dXJuIHBhc3NTdWJmcmFtZUV2
ZW50VG9TdWJmcmFtZShtb3VzZUV2ZW50QW5kUmVzdWx0LCBzdWJmcmFtZSk7CiAKICAgICAvLyBX
ZWJLaXQyIGNvZGUgcGF0aC4KLSAgICBzdWJmcmFtZS0+ZXZlbnRIYW5kbGVyKCkuaGFuZGxlTW91
c2VSZWxlYXNlRXZlbnQobWV2LmV2ZW50KCkpOworICAgIHN1YmZyYW1lLmV2ZW50SGFuZGxlcigp
LmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KG1vdXNlRXZlbnRBbmRSZXN1bHQuZXZlbnQoKSk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTcxMiw3ICs3MTIsNyBAQCBib29sIEV2ZW50SGFuZGxl
cjo6dHJ5VG9CZWdpbkRyYWdBdFBvaW50KGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwg
Y29uc3QgSQogICAgIGF1dG8gZG9jdW1lbnRQb2ludCA9IHByb3RlY3RlZEZyYW1lLT52aWV3KCkg
PyBwcm90ZWN0ZWRGcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHN5bnRoZXRpY01vdXNl
TW92ZUV2ZW50LnBvc2l0aW9uKCkpIDogc3ludGhldGljTW91c2VNb3ZlRXZlbnQucG9zaXRpb24o
KTsKICAgICBhdXRvIGhpdFRlc3RlZE1vdXNlRXZlbnQgPSBkb2N1bWVudC0+cHJlcGFyZU1vdXNl
RXZlbnQoaGl0VHlwZSwgZG9jdW1lbnRQb2ludCwgc3ludGhldGljTW91c2VNb3ZlRXZlbnQpOwog
Ci0gICAgUmVmUHRyPEZyYW1lPiBzdWJmcmFtZSA9IHN1YmZyYW1lRm9ySGl0VGVzdFJlc3VsdCho
aXRUZXN0ZWRNb3VzZUV2ZW50KTsKKyAgICBhdXRvIHN1YmZyYW1lID0gc3ViZnJhbWVGb3JIaXRU
ZXN0UmVzdWx0KGhpdFRlc3RlZE1vdXNlRXZlbnQpOwogICAgIGlmIChzdWJmcmFtZSAmJiBzdWJm
cmFtZS0+ZXZlbnRIYW5kbGVyKCkudHJ5VG9CZWdpbkRyYWdBdFBvaW50KGFkanVzdGVkQ2xpZW50
UG9zaXRpb24sIGFkanVzdGVkR2xvYmFsUG9zaXRpb24pKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCmluZGV4IDc2N2Rk
MmE2YTJmMjBiN2QwYjkxZmZjMzZlMTFhYmZmMmUzYjhkMmUuLjdmZGQ3NDI4ZDllOWVmZGRjM2Yz
NTNlZDU0ZjI4YWM2YjRhNDFiYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFj
L0V2ZW50SGFuZGxlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhh
bmRsZXJNYWMubW0KQEAgLTM3NSw3ICszNzUsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6ZXZlbnRM
b29wSGFuZGxlTW91c2VVcChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJikKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KICAgICAKLWJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzU3ViZnJhbWVF
dmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQsIEZyYW1l
KiBzdWJmcmFtZSwgSGl0VGVzdFJlc3VsdCogaG92ZXJlZE5vZGUpCitib29sIEV2ZW50SGFuZGxl
cjo6cGFzc1N1YmZyYW1lRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3Vs
dHMmIGV2ZW50LCBGcmFtZSYgc3ViZnJhbWUsIEhpdFRlc3RSZXN1bHQqIGhpdFRlc3RSZXN1bHQp
CiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCkBAIC0zODgsNyArMzg4LDcg
QEAgYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NTdWJmcmFtZUV2ZW50VG9TdWJmcmFtZShNb3VzZUV2
ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmUKICAgICAgICAgaWYgKCFtX21vdXNlRG93bldhc0lu
U3ViZnJhbWUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAjaWYgRU5BQkxFKERSQUdfU1VQ
UE9SVCkKLSAgICAgICAgaWYgKHN1YmZyYW1lLT5wYWdlKCktPmRyYWdDb250cm9sbGVyKCkuZGlk
SW5pdGlhdGVEcmFnKCkpCisgICAgICAgIGlmIChzdWJmcmFtZS5wYWdlKCktPmRyYWdDb250cm9s
bGVyKCkuZGlkSW5pdGlhdGVEcmFnKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5k
aWYKICAgICBjYXNlIE5TRXZlbnRUeXBlTW91c2VNb3ZlZDoKQEAgLTM5Nyw3ICszOTcsNyBAQCBi
b29sIEV2ZW50SGFuZGxlcjo6cGFzc1N1YmZyYW1lRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRX
aXRoSGl0VGVzdFJlc3VsdHMmIGV2ZQogICAgICAgICAvLyBjdXJyZW50TlNFdmVudCgpIHRoYXQg
bW91c2VNb3ZlZCgpIGRvZXMgd291bGQgaGF2ZSBubyBlZmZlY3QuCiAgICAgICAgIEFTU0VSVCgh
bV9zZW5kaW5nRXZlbnRUb1N1YnZpZXcpOwogICAgICAgICBtX3NlbmRpbmdFdmVudFRvU3Vidmll
dyA9IHRydWU7Ci0gICAgICAgIHN1YmZyYW1lLT5ldmVudEhhbmRsZXIoKS5oYW5kbGVNb3VzZU1v
dmVFdmVudChjdXJyZW50UGxhdGZvcm1Nb3VzZUV2ZW50KCksIGhvdmVyZWROb2RlKTsKKyAgICAg
ICAgc3ViZnJhbWUuZXZlbnRIYW5kbGVyKCkuaGFuZGxlTW91c2VNb3ZlRXZlbnQoY3VycmVudFBs
YXRmb3JtTW91c2VFdmVudCgpLCBoaXRUZXN0UmVzdWx0KTsKICAgICAgICAgbV9zZW5kaW5nRXZl
bnRUb1N1YnZpZXcgPSBmYWxzZTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIApAQCAt
NDIxLDcgKzQyMSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzU3ViZnJhbWVFdmVudFRvU3Vi
ZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIEFTU0VSVCghbV9zZW5kaW5nRXZlbnRUb1N1YnZpZXcpOwogICAg
ICAgICBtX3NlbmRpbmdFdmVudFRvU3VidmlldyA9IHRydWU7Ci0gICAgICAgIHN1YmZyYW1lLT5l
dmVudEhhbmRsZXIoKS5oYW5kbGVNb3VzZVJlbGVhc2VFdmVudChjdXJyZW50UGxhdGZvcm1Nb3Vz
ZUV2ZW50KCkpOworICAgICAgICBzdWJmcmFtZS5ldmVudEhhbmRsZXIoKS5oYW5kbGVNb3VzZVJl
bGVhc2VFdmVudChjdXJyZW50UGxhdGZvcm1Nb3VzZUV2ZW50KCkpOwogICAgICAgICBtX3NlbmRp
bmdFdmVudFRvU3VidmlldyA9IGZhbHNlOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBA
IC02ODMsMjIgKzY4MywyMiBAQCBzdGF0aWMgYm9vbCBmcmFtZUhhc1BsYXRmb3JtV2lkZ2V0KGNv
bnN0IEZyYW1lJiBmcmFtZSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgRXZlbnRIYW5k
bGVyOjpwYXNzTW91c2VQcmVzc0V2ZW50VG9TdWJmcmFtZShNb3VzZUV2ZW50V2l0aEhpdFRlc3RS
ZXN1bHRzJiBtZXYsIEZyYW1lKiBzdWJmcmFtZSkKK2Jvb2wgRXZlbnRIYW5kbGVyOjpwYXNzTW91
c2VQcmVzc0V2ZW50VG9TdWJmcmFtZShNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBtb3Vz
ZUV2ZW50QW5kUmVzdWx0LCBGcmFtZSYgc3ViZnJhbWUpCiB7CiAgICAgLy8gV2ViS2l0MSBjb2Rl
IHBhdGguCiAgICAgaWYgKGZyYW1lSGFzUGxhdGZvcm1XaWRnZXQobV9mcmFtZSkpCi0gICAgICAg
IHJldHVybiBwYXNzU3ViZnJhbWVFdmVudFRvU3ViZnJhbWUobWV2LCBzdWJmcmFtZSk7CisgICAg
ICAgIHJldHVybiBwYXNzU3ViZnJhbWVFdmVudFRvU3ViZnJhbWUobW91c2VFdmVudEFuZFJlc3Vs
dCwgc3ViZnJhbWUpOwogCiAgICAgLy8gV2ViS2l0MiBjb2RlIHBhdGguCi0gICAgc3ViZnJhbWUt
PmV2ZW50SGFuZGxlcigpLmhhbmRsZU1vdXNlUHJlc3NFdmVudChtZXYuZXZlbnQoKSk7CisgICAg
c3ViZnJhbWUuZXZlbnRIYW5kbGVyKCkuaGFuZGxlTW91c2VQcmVzc0V2ZW50KG1vdXNlRXZlbnRB
bmRSZXN1bHQuZXZlbnQoKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgRXZlbnRIYW5k
bGVyOjpwYXNzTW91c2VNb3ZlRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJl
c3VsdHMmIG1ldiwgRnJhbWUqIHN1YmZyYW1lLCBIaXRUZXN0UmVzdWx0KiBob3ZlcmVkTm9kZSkK
K2Jvb2wgRXZlbnRIYW5kbGVyOjpwYXNzTW91c2VNb3ZlRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZl
bnRXaXRoSGl0VGVzdFJlc3VsdHMmIG1vdXNlRXZlbnRBbmRSZXN1bHQsIEZyYW1lJiBzdWJmcmFt
ZSwgSGl0VGVzdFJlc3VsdCogaGl0VGVzdFJlc3VsdCkKIHsKICAgICAvLyBXZWJLaXQxIGNvZGUg
cGF0aC4KICAgICBpZiAoZnJhbWVIYXNQbGF0Zm9ybVdpZGdldChtX2ZyYW1lKSkKLSAgICAgICAg
cmV0dXJuIHBhc3NTdWJmcmFtZUV2ZW50VG9TdWJmcmFtZShtZXYsIHN1YmZyYW1lLCBob3ZlcmVk
Tm9kZSk7CisgICAgICAgIHJldHVybiBwYXNzU3ViZnJhbWVFdmVudFRvU3ViZnJhbWUobW91c2VF
dmVudEFuZFJlc3VsdCwgc3ViZnJhbWUsIGhpdFRlc3RSZXN1bHQpOwogCiAjaWYgRU5BQkxFKERS
QUdfU1VQUE9SVCkKICAgICAvLyBXZWJLaXQyIGNvZGUgcGF0aC4KQEAgLTcwNiwxOCArNzA2LDE4
IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzTW91c2VNb3ZlRXZlbnRUb1N1YmZyYW1lKE1vdXNl
RXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIG1lCiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRp
ZgogCi0gICAgc3ViZnJhbWUtPmV2ZW50SGFuZGxlcigpLmhhbmRsZU1vdXNlTW92ZUV2ZW50KG1l
di5ldmVudCgpLCBob3ZlcmVkTm9kZSk7CisgICAgc3ViZnJhbWUuZXZlbnRIYW5kbGVyKCkuaGFu
ZGxlTW91c2VNb3ZlRXZlbnQobW91c2VFdmVudEFuZFJlc3VsdC5ldmVudCgpLCBoaXRUZXN0UmVz
dWx0KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NNb3Vz
ZVJlbGVhc2VFdmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgbWV2
LCBGcmFtZSogc3ViZnJhbWUpCitib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUmVsZWFzZUV2
ZW50VG9TdWJmcmFtZShNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBtb3VzZUV2ZW50QW5k
UmVzdWx0LCBGcmFtZSYgc3ViZnJhbWUpCiB7CiAgICAgLy8gV2ViS2l0MSBjb2RlIHBhdGguCiAg
ICAgaWYgKGZyYW1lSGFzUGxhdGZvcm1XaWRnZXQobV9mcmFtZSkpCi0gICAgICAgIHJldHVybiBw
YXNzU3ViZnJhbWVFdmVudFRvU3ViZnJhbWUobWV2LCBzdWJmcmFtZSk7CisgICAgICAgIHJldHVy
biBwYXNzU3ViZnJhbWVFdmVudFRvU3ViZnJhbWUobW91c2VFdmVudEFuZFJlc3VsdCwgc3ViZnJh
bWUpOwogCiAgICAgLy8gV2ViS2l0MiBjb2RlIHBhdGguCi0gICAgc3ViZnJhbWUtPmV2ZW50SGFu
ZGxlcigpLmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KG1ldi5ldmVudCgpKTsKKyAgICBzdWJmcmFt
ZS5ldmVudEhhbmRsZXIoKS5oYW5kbGVNb3VzZVJlbGVhc2VFdmVudChtb3VzZUV2ZW50QW5kUmVz
dWx0LmV2ZW50KCkpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3dpbi9FdmVudEhhbmRsZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS93aW4vRXZlbnRIYW5kbGVyV2luLmNwcAppbmRleCAwOTA5NzEwYzViMzhjYTJiZTQzMDgxMjg1
ODNmZjNhOTYwYTBiZDNiLi44ZWMyNTNiYmVmYmM5OGFjYjJiMDY2Nzg5NmM4MDAyYzA4Mzg2NWM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9FdmVudEhhbmRsZXJXaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0V2ZW50SGFuZGxlcldpbi5jcHAKQEAgLTMx
LDE0ICszMSwxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgRXZlbnRIYW5kbGVy
OjpwYXNzTW91c2VNb3ZlRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3Vs
dHMmIG1ldiwgRnJhbWUqIHN1YmZyYW1lLCBIaXRUZXN0UmVzdWx0KiBob3ZlcmVkTm9kZSkKK2Jv
b2wgRXZlbnRIYW5kbGVyOjpwYXNzTW91c2VNb3ZlRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRX
aXRoSGl0VGVzdFJlc3VsdHMmIG1vdXNlRXZlbnRBbmRSZXN1bHQsIEZyYW1lJiBzdWJmcmFtZSwg
SGl0VGVzdFJlc3VsdCYgaGl0VGVzdFJlc3VsdCkKIHsKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JU
KQogICAgIGlmIChtX21vdXNlRG93bk1heVN0YXJ0RHJhZyAmJiAhbV9tb3VzZURvd25XYXNJblN1
YmZyYW1lKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIAotICAgIHN1YmZyYW1lLT5l
dmVudEhhbmRsZXIoKS5oYW5kbGVNb3VzZU1vdmVFdmVudChtZXYuZXZlbnQoKSwgaG92ZXJlZE5v
ZGUpOworICAgIHN1YmZyYW1lLmV2ZW50SGFuZGxlcigpLmhhbmRsZU1vdXNlTW92ZUV2ZW50KG1v
dXNlRXZlbnRBbmRSZXN1bHQuZXZlbnQoKSwgaGl0VGVzdFJlc3VsdCk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398458</attachid>
            <date>2020-05-04 19:36:57 -0700</date>
            <delta_ts>2020-05-04 19:57:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211413-20200504193656.patch</filename>
            <type>text/plain</type>
            <size>25545</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxMTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWJkMWNjNzU1MjQxNDk0
MTJmY2I4MWViYTVmNDc2Y2IwNDgxNmJmMC4uODNhMjRkYjRlMmIzZjFlNGQyZDk3ZWMyZWY2NTNh
MWE5ODVmZGEyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIwLTA1LTA0ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIENvZGUgY2xlYW51
cCBpbiBFdmVudEhhbmRsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxMTQxMworCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAg
ICAgICAgVXNlIGEgYmV0dGVyIG5hbWUgZm9yICJob3ZlcmVkTm9kZSIgd2hpY2ggaXMgYSBIaXRU
ZXN0UmVzdWx0LgorCisgICAgICAgIENvbnZlcnQgRnJhbWUqIHRvIEZyYW1lJi4KKworICAgICAg
ICBIYXZlIGEgY291cGxlIG9mIGhlbHBlciBmdW5jdGlvbnMgcmV0dXJuIFJlZlB0cjxGcmFtZT4u
CisKKyAgICAgICAgKiBwYWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkF1dG9zY3JvbGxDb250cm9sbGVyOjpzdG9wQXV0b3Njcm9sbFRpbWVyKToKKyAgICAg
ICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRs
ZXI6OnN1YmZyYW1lRm9ySGl0VGVzdFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhh
bmRsZXI6OnN1YmZyYW1lRm9yVGFyZ2V0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhh
bmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhh
bmRsZXI6OmhhbmRsZU1vdXNlRG91YmxlQ2xpY2tFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudEhhbmRsZXI6Om1vdXNlTW92ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVy
OjpwYXNzTW91c2VNb3ZlZEV2ZW50VG9TY3JvbGxiYXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VNb3ZlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRIYW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVhc2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudEhhbmRsZXI6OnBhc3NNb3VzZVByZXNzRXZlbnRUb1Njcm9sbGJhcik6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudEhhbmRsZXI6OnBhc3NNb3VzZVByZXNzRXZlbnRUb1N1YmZyYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUmVsZWFzZUV2ZW50VG9TdWJm
cmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnBhc3NXaWRnZXRNb3VzZURv
d25FdmVudFRvV2lkZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGFzc01v
dXNlTW92ZUV2ZW50VG9TdWJmcmFtZSk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuaDoK
KyAgICAgICAgKiBwYWdlL2lvcy9FdmVudEhhbmRsZXJJT1MubW06CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OnBhc3NTdWJmcmFtZUV2ZW50VG9TdWJmcmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudEhhbmRsZXI6OnBhc3NNb3VzZVByZXNzRXZlbnRUb1N1YmZyYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGFzc01vdXNlTW92ZUV2ZW50VG9TdWJmcmFt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnBhc3NNb3VzZVJlbGVhc2VFdmVu
dFRvU3ViZnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjp0cnlUb0JlZ2lu
RHJhZ0F0UG9pbnQpOgorICAgICAgICAqIHBhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGFzc1N1YmZyYW1lRXZlbnRUb1N1YmZyYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUHJlc3NFdmVudFRv
U3ViZnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpwYXNzTW91c2VNb3Zl
RXZlbnRUb1N1YmZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGFzc01v
dXNlUmVsZWFzZUV2ZW50VG9TdWJmcmFtZSk6CisgICAgICAgICogcGFnZS93aW4vRXZlbnRIYW5k
bGVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGFzc01vdXNlTW92
ZUV2ZW50VG9TdWJmcmFtZSk6CisKIDIwMjAtMDUtMDQgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZy
YXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgT3ZlcmZsb3cgc2Nyb2xsYmFycyBkb24ndCBncm93
IHdoZW4gaG92ZXJlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9BdXRvc2Nyb2xs
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0F1dG9zY3JvbGxDb250cm9sbGVy
LmNwcAppbmRleCA3YjNkZTQwNDVmMjJmODdlZjIxOWJhMWJmZmFlZDExMDZmNjQ1ZDlhLi5mYTJh
NzdhODA4OTQ3NGQ4MjVmMjMxMjUyMWE2ODhlMDhlYWEzNDE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLmNwcApAQCAtOTUsNyArOTUsNyBAQCB2b2lkIEF1
dG9zY3JvbGxDb250cm9sbGVyOjpzdG9wQXV0b3Njcm9sbFRpbWVyKGJvb2wgcmVuZGVyZXJJc0Jl
aW5nRGVzdHJveWVkKQogCiAgICAgRnJhbWUmIGZyYW1lID0gc2Nyb2xsYWJsZS0+ZnJhbWUoKTsK
ICAgICBpZiAoYXV0b3Njcm9sbEluUHJvZ3Jlc3MoKSAmJiBmcmFtZS5ldmVudEhhbmRsZXIoKS5t
b3VzZURvd25XYXNJblN1YmZyYW1lKCkpIHsKLSAgICAgICAgaWYgKEZyYW1lKiBzdWJmcmFtZSA9
IGZyYW1lLmV2ZW50SGFuZGxlcigpLnN1YmZyYW1lRm9yVGFyZ2V0Tm9kZShmcmFtZS5ldmVudEhh
bmRsZXIoKS5tb3VzZVByZXNzTm9kZSgpKSkKKyAgICAgICAgaWYgKGF1dG8gc3ViZnJhbWUgPSBm
cmFtZS5ldmVudEhhbmRsZXIoKS5zdWJmcmFtZUZvclRhcmdldE5vZGUoZnJhbWUuZXZlbnRIYW5k
bGVyKCkubW91c2VQcmVzc05vZGUoKSkpCiAgICAgICAgICAgICBzdWJmcmFtZS0+ZXZlbnRIYW5k
bGVyKCkuc3RvcEF1dG9zY3JvbGxUaW1lcihyZW5kZXJlcklzQmVpbmdEZXN0cm95ZWQpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4
IDhkNDE3MTc3NDQyMzViZjgxY2ZhMDc0ZTBhYjU2MjFhZTM4YjA0MzcuLjA1MTdhOGZhMjAwOWRk
YTc0ZDZkMTQyZjA4MmVjNWUwNWUyOTg2ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAKQEAgLTEzMjIsMTQgKzEzMjIsMTQgQEAgSW50UG9pbnQgRXZlbnRIYW5kbGVyOjpsYXN0
S25vd25Nb3VzZVBvc2l0aW9uKCkgY29uc3QKICAgICByZXR1cm4gbV9sYXN0S25vd25Nb3VzZVBv
c2l0aW9uOwogfQogCi1GcmFtZSogRXZlbnRIYW5kbGVyOjpzdWJmcmFtZUZvckhpdFRlc3RSZXN1
bHQoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgaGl0VGVzdFJlc3VsdCkKK1Jl
ZlB0cjxGcmFtZT4gRXZlbnRIYW5kbGVyOjpzdWJmcmFtZUZvckhpdFRlc3RSZXN1bHQoY29uc3Qg
TW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgaGl0VGVzdFJlc3VsdCkKIHsKICAgICBpZiAo
IWhpdFRlc3RSZXN1bHQuaXNPdmVyV2lkZ2V0KCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gc3ViZnJhbWVGb3JUYXJnZXROb2RlKGhpdFRl
c3RSZXN1bHQudGFyZ2V0Tm9kZSgpKTsKIH0KIAotRnJhbWUqIEV2ZW50SGFuZGxlcjo6c3ViZnJh
bWVGb3JUYXJnZXROb2RlKE5vZGUqIG5vZGUpCitSZWZQdHI8RnJhbWU+IEV2ZW50SGFuZGxlcjo6
c3ViZnJhbWVGb3JUYXJnZXROb2RlKE5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKCFub2RlKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE3NTIsNyArMTc1Miw3IEBAIGJvb2wgRXZlbnRIYW5k
bGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBwbGF0
Zm9ybU1vdXNlCiAKICAgICBpZiAoIXBhc3NlZFRvU2Nyb2xsYmFyKSB7CiAgICAgICAgIFJlZlB0
cjxGcmFtZT4gc3ViZnJhbWUgPSBzdWJmcmFtZUZvckhpdFRlc3RSZXN1bHQobW91c2VFdmVudCk7
Ci0gICAgICAgIGlmIChzdWJmcmFtZSAmJiBwYXNzTW91c2VQcmVzc0V2ZW50VG9TdWJmcmFtZSht
b3VzZUV2ZW50LCBzdWJmcmFtZS5nZXQoKSkpIHsKKyAgICAgICAgaWYgKHN1YmZyYW1lICYmIHBh
c3NNb3VzZVByZXNzRXZlbnRUb1N1YmZyYW1lKG1vdXNlRXZlbnQsICpzdWJmcmFtZSkpIHsKICAg
ICAgICAgICAgIC8vIFN0YXJ0IGNhcHR1cmluZyBmdXR1cmUgZXZlbnRzIGZvciB0aGlzIGZyYW1l
LiBXZSBvbmx5IGRvIHRoaXMgaWYgd2UgZGlkbid0IGNsZWFyCiAgICAgICAgICAgICAvLyB0aGUg
bV9tb3VzZVByZXNzZWQgZmxhZywgd2hpY2ggbWF5IGhhcHBlbiBpZiBhbiBBcHBLaXQgd2lkZ2V0
IGVudGVyZWQgYSBtb2RhbCBldmVudCBsb29wLgogICAgICAgICAgICAgbV9jYXB0dXJlc0RyYWdn
aW5nID0gc3ViZnJhbWUtPmV2ZW50SGFuZGxlcigpLmNhcHR1cmVzRHJhZ2dpbmcoKTsKQEAgLTE4
NTEsMTAgKzE4NTEsMTIgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlRG91YmxlQ2xp
Y2tFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIHBsYXRmb3IKIAogICAgIGNvbnN0ZXhw
ciBPcHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlJlcXVlc3RUeXBlPiBoaXRUeXBlIHsgSGl0VGVz
dFJlcXVlc3Q6OlJlbGVhc2UsIEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1VzZXJBZ2VudFNoYWRv
d0NvbnRlbnQgfTsKICAgICBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzIG1vdXNlRXZlbnQg
PSBwcmVwYXJlTW91c2VFdmVudChoaXRUeXBlLCBwbGF0Zm9ybU1vdXNlRXZlbnQpOwotICAgIEZy
YW1lKiBzdWJmcmFtZSA9IHN1YmZyYW1lRm9ySGl0VGVzdFJlc3VsdChtb3VzZUV2ZW50KTsKKyAg
ICBhdXRvIHN1YmZyYW1lID0gc3ViZnJhbWVGb3JIaXRUZXN0UmVzdWx0KG1vdXNlRXZlbnQpOwor
CiAgICAgaWYgKG1fZXZlbnRIYW5kbGVyV2lsbFJlc2V0Q2FwdHVyaW5nTW91c2VFdmVudHNFbGVt
ZW50KQogICAgICAgICBtX2NhcHR1cmluZ01vdXNlRXZlbnRzRWxlbWVudCA9IG51bGxwdHI7Ci0g
ICAgaWYgKHN1YmZyYW1lICYmIHBhc3NNb3VzZVByZXNzRXZlbnRUb1N1YmZyYW1lKG1vdXNlRXZl
bnQsIHN1YmZyYW1lKSkKKworICAgIGlmIChzdWJmcmFtZSAmJiBwYXNzTW91c2VQcmVzc0V2ZW50
VG9TdWJmcmFtZShtb3VzZUV2ZW50LCAqc3ViZnJhbWUpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAogICAgIG1fY2xpY2tDb3VudCA9IHBsYXRmb3JtTW91c2VFdmVudC5jbGlja0NvdW50KCk7CkBA
IC0xOTAwLDE0ICsxOTAyLDE0IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjptb3VzZU1vdmVkKGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpCiAgICAgaWYgKG1fZnJhbWUucGFnZSgpICYmIG1f
ZnJhbWUucGFnZSgpLT5wYWdlT3ZlcmxheUNvbnRyb2xsZXIoKS5oYW5kbGVNb3VzZUV2ZW50KGV2
ZW50KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBIaXRUZXN0UmVzdWx0IGhvdmVyZWRO
b2RlID0gSGl0VGVzdFJlc3VsdChMYXlvdXRQb2ludCgpKTsKLSAgICBib29sIHJlc3VsdCA9IGhh
bmRsZU1vdXNlTW92ZUV2ZW50KGV2ZW50LCAmaG92ZXJlZE5vZGUpOworICAgIEhpdFRlc3RSZXN1
bHQgaGl0VGVzdFJlc3VsdDsKKyAgICBib29sIHJlc3VsdCA9IGhhbmRsZU1vdXNlTW92ZUV2ZW50
KGV2ZW50LCAmaGl0VGVzdFJlc3VsdCk7CiAKICAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS5wYWdl
KCk7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogCi0gICAgaWYgKGF1
dG8gc2Nyb2xsZWRBcmVhID0gZW5jbG9zaW5nU2Nyb2xsYWJsZUFyZWEoaG92ZXJlZE5vZGUuaW5u
ZXJOb2RlKCkpKSB7CisgICAgaWYgKGF1dG8gc2Nyb2xsZWRBcmVhID0gZW5jbG9zaW5nU2Nyb2xs
YWJsZUFyZWEoaGl0VGVzdFJlc3VsdC5pbm5lck5vZGUoKSkpIHsKICAgICAgICAgaWYgKEZyYW1l
VmlldyogZnJhbWVWaWV3ID0gbV9mcmFtZS52aWV3KCkpIHsKICAgICAgICAgICAgIGlmIChmcmFt
ZVZpZXctPmNvbnRhaW5zU2Nyb2xsYWJsZUFyZWEoc2Nyb2xsZWRBcmVhKSkKICAgICAgICAgICAg
ICAgICBzY3JvbGxlZEFyZWEtPm1vdXNlTW92ZWRJbkNvbnRlbnRBcmVhKCk7CkBAIC0xOTE3LDE4
ICsxOTE5LDE4IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjptb3VzZU1vdmVkKGNvbnN0IFBsYXRmb3Jt
TW91c2VFdmVudCYgZXZlbnQpCiAgICAgaWYgKEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbV9mcmFt
ZS52aWV3KCkpCiAgICAgICAgIGZyYW1lVmlldy0+bW91c2VNb3ZlZEluQ29udGVudEFyZWEoKTsg
IAogCi0gICAgaG92ZXJlZE5vZGUuc2V0VG9Ob25Vc2VyQWdlbnRTaGFkb3dBbmNlc3RvcigpOwot
ICAgIHBhZ2UtPmNocm9tZSgpLm1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KGhvdmVyZWROb2RlLCBl
dmVudC5tb2RpZmllckZsYWdzKCkpOworICAgIGhpdFRlc3RSZXN1bHQuc2V0VG9Ob25Vc2VyQWdl
bnRTaGFkb3dBbmNlc3RvcigpOworICAgIHBhZ2UtPmNocm9tZSgpLm1vdXNlRGlkTW92ZU92ZXJF
bGVtZW50KGhpdFRlc3RSZXN1bHQsIGV2ZW50Lm1vZGlmaWVyRmxhZ3MoKSk7CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAogYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NNb3VzZU1vdmVkRXZlbnRUb1Nj
cm9sbGJhcnMoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKIHsKLSAgICBIaXRUZXN0
UmVzdWx0IGhvdmVyZWROb2RlOwotICAgIHJldHVybiBoYW5kbGVNb3VzZU1vdmVFdmVudChldmVu
dCwgJmhvdmVyZWROb2RlLCB0cnVlKTsKKyAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3RSZXN1bHQ7
CisgICAgcmV0dXJuIGhhbmRsZU1vdXNlTW92ZUV2ZW50KGV2ZW50LCAmaGl0VGVzdFJlc3VsdCwg
dHJ1ZSk7CiB9CiAKLWJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZU1vdmVFdmVudChjb25z
dCBQbGF0Zm9ybU1vdXNlRXZlbnQmIHBsYXRmb3JtTW91c2VFdmVudCwgSGl0VGVzdFJlc3VsdCog
aG92ZXJlZE5vZGUsIGJvb2wgb25seVVwZGF0ZVNjcm9sbGJhcnMpCitib29sIEV2ZW50SGFuZGxl
cjo6aGFuZGxlTW91c2VNb3ZlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBwbGF0Zm9y
bU1vdXNlRXZlbnQsIEhpdFRlc3RSZXN1bHQqIGhpdFRlc3RSZXN1bHQsIGJvb2wgb25seVVwZGF0
ZVNjcm9sbGJhcnMpCiB7CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICBib29sIGRlZmF1
bHRQcmV2ZW50ZWQgPSBkaXNwYXRjaFN5bnRoZXRpY1RvdWNoRXZlbnRJZkVuYWJsZWQocGxhdGZv
cm1Nb3VzZUV2ZW50KTsKQEAgLTE5OTIsOCArMTk5NCw4IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpo
YW5kbGVNb3VzZU1vdmVFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIHBsYXRmb3JtTW91
c2VFCiAjZW5kaWYKICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KGhpdFR5cGUpOwogICAgIE1v
dXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgbW91c2VFdmVudCA9IHByZXBhcmVNb3VzZUV2ZW50
KHJlcXVlc3QsIHBsYXRmb3JtTW91c2VFdmVudCk7Ci0gICAgaWYgKGhvdmVyZWROb2RlKQotICAg
ICAgICAqaG92ZXJlZE5vZGUgPSBtb3VzZUV2ZW50LmhpdFRlc3RSZXN1bHQoKTsKKyAgICBpZiAo
aGl0VGVzdFJlc3VsdCkKKyAgICAgICAgKmhpdFRlc3RSZXN1bHQgPSBtb3VzZUV2ZW50LmhpdFRl
c3RSZXN1bHQoKTsKIAogICAgIGlmIChtX3Jlc2l6ZUxheWVyICYmIG1fcmVzaXplTGF5ZXItPmlu
UmVzaXplTW9kZSgpKQogICAgICAgICBtX3Jlc2l6ZUxheWVyLT5yZXNpemUocGxhdGZvcm1Nb3Vz
ZUV2ZW50LCBtX29mZnNldEZyb21SZXNpemVDb3JuZXIpOwpAQCAtMjAxOSw3ICsyMDIxLDcgQEAg
Ym9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlTW92ZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91
c2VFdmVudCYgcGxhdGZvcm1Nb3VzZUUKICAKICAgICAvLyBXZSB3YW50IG1vdXNlb3V0cyB0byBo
YXBwZW4gZmlyc3QsIGZyb20gdGhlIGluc2lkZSBvdXQuICBGaXJzdCBzZW5kIGEgbW92ZSBldmVu
dCB0byB0aGUgbGFzdCBzdWJmcmFtZSBzbyB0aGF0IGl0IHdpbGwgZmlyZSBtb3VzZW91dHMuCiAg
ICAgaWYgKG1fbGFzdE1vdXNlTW92ZUV2ZW50U3ViZnJhbWUgJiYgbV9sYXN0TW91c2VNb3ZlRXZl
bnRTdWJmcmFtZS0+dHJlZSgpLmlzRGVzY2VuZGFudE9mKCZtX2ZyYW1lKSAmJiBtX2xhc3RNb3Vz
ZU1vdmVFdmVudFN1YmZyYW1lICE9IG5ld1N1YmZyYW1lKQotICAgICAgICBwYXNzTW91c2VNb3Zl
RXZlbnRUb1N1YmZyYW1lKG1vdXNlRXZlbnQsIG1fbGFzdE1vdXNlTW92ZUV2ZW50U3ViZnJhbWUu
Z2V0KCkpOworICAgICAgICBwYXNzTW91c2VNb3ZlRXZlbnRUb1N1YmZyYW1lKG1vdXNlRXZlbnQs
ICptX2xhc3RNb3VzZU1vdmVFdmVudFN1YmZyYW1lKTsKIAogICAgIGlmIChuZXdTdWJmcmFtZSkg
ewogICAgICAgICAvLyBVcGRhdGUgb3Zlci9vdXQgc3RhdGUgYmVmb3JlIHBhc3NpbmcgdGhlIGV2
ZW50IHRvIHRoZSBzdWJmcmFtZS4KQEAgLTIwMjgsNyArMjAzMCw3IEBAIGJvb2wgRXZlbnRIYW5k
bGVyOjpoYW5kbGVNb3VzZU1vdmVFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIHBsYXRm
b3JtTW91c2VFCiAgICAgICAgIC8vIEV2ZW50IGRpc3BhdGNoIGluIHVwZGF0ZU1vdXNlRXZlbnRU
YXJnZXROb2RlIG1heSBoYXZlIGNhdXNlZCB0aGUgc3ViZnJhbWUgb2YgdGhlIHRhcmdldAogICAg
ICAgICAvLyBub2RlIHRvIGJlIGRldGFjaGVkIGZyb20gaXRzIEZyYW1lVmlldywgaW4gd2hpY2gg
Y2FzZSB0aGUgZXZlbnQgc2hvdWxkIG5vdCBiZSBwYXNzZWQuCiAgICAgICAgIGlmIChuZXdTdWJm
cmFtZS0+dmlldygpKQotICAgICAgICAgICAgc3dhbGxvd0V2ZW50IHw9IHBhc3NNb3VzZU1vdmVF
dmVudFRvU3ViZnJhbWUobW91c2VFdmVudCwgbmV3U3ViZnJhbWUuZ2V0KCksIGhvdmVyZWROb2Rl
KTsKKyAgICAgICAgICAgIHN3YWxsb3dFdmVudCB8PSBwYXNzTW91c2VNb3ZlRXZlbnRUb1N1YmZy
YW1lKG1vdXNlRXZlbnQsICpuZXdTdWJmcmFtZSwgaGl0VGVzdFJlc3VsdCk7CiAgICAgfQogCiAg
ICAgaWYgKCFuZXdTdWJmcmFtZSB8fCBtb3VzZUV2ZW50LnNjcm9sbGJhcigpKSB7CkBAIC0yMTQ4
LDEwICsyMTUwLDEwIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVhc2VFdmVu
dChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIHBsYXRmb3JtTW91CiAKICAgICBjb25zdGV4cHIg
T3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpSZXF1ZXN0VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RS
ZXF1ZXN0OjpSZWxlYXNlLCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dD
b250ZW50IH07CiAgICAgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyBtb3VzZUV2ZW50ID0g
cHJlcGFyZU1vdXNlRXZlbnQoaGl0VHlwZSwgcGxhdGZvcm1Nb3VzZUV2ZW50KTsKLSAgICBGcmFt
ZSogc3ViZnJhbWUgPSBtX2NhcHR1cmluZ01vdXNlRXZlbnRzRWxlbWVudC5nZXQoKSA/IHN1YmZy
YW1lRm9yVGFyZ2V0Tm9kZShtX2NhcHR1cmluZ01vdXNlRXZlbnRzRWxlbWVudC5nZXQoKSkgOiBz
dWJmcmFtZUZvckhpdFRlc3RSZXN1bHQobW91c2VFdmVudCk7CisgICAgUmVmUHRyPEZyYW1lPiBz
dWJmcmFtZSA9IG1fY2FwdHVyaW5nTW91c2VFdmVudHNFbGVtZW50LmdldCgpID8gc3ViZnJhbWVG
b3JUYXJnZXROb2RlKG1fY2FwdHVyaW5nTW91c2VFdmVudHNFbGVtZW50LmdldCgpKSA6IHN1YmZy
YW1lRm9ySGl0VGVzdFJlc3VsdChtb3VzZUV2ZW50KTsKICAgICBpZiAobV9ldmVudEhhbmRsZXJX
aWxsUmVzZXRDYXB0dXJpbmdNb3VzZUV2ZW50c0VsZW1lbnQpCiAgICAgICAgIG1fY2FwdHVyaW5n
TW91c2VFdmVudHNFbGVtZW50ID0gbnVsbHB0cjsKLSAgICBpZiAoc3ViZnJhbWUgJiYgcGFzc01v
dXNlUmVsZWFzZUV2ZW50VG9TdWJmcmFtZShtb3VzZUV2ZW50LCBzdWJmcmFtZSkpCisgICAgaWYg
KHN1YmZyYW1lICYmIHBhc3NNb3VzZVJlbGVhc2VFdmVudFRvU3ViZnJhbWUobW91c2VFdmVudCwg
KnN1YmZyYW1lKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBib29sIHN3YWxsb3dNb3Vz
ZVVwRXZlbnQgPSAhZGlzcGF0Y2hNb3VzZUV2ZW50KGV2ZW50TmFtZXMoKS5tb3VzZXVwRXZlbnQs
IG1vdXNlRXZlbnQudGFyZ2V0Tm9kZSgpLCB0cnVlLCBtX2NsaWNrQ291bnQsIHBsYXRmb3JtTW91
c2VFdmVudCwgZmFsc2UpOwpAQCAtNDA1MCwxMiArNDA1MiwxMiBAQCB2b2lkIEV2ZW50SGFuZGxl
cjo6c2V0RnJhbWVXYXNTY3JvbGxlZEJ5VXNlcigpCiAgICAgICAgIHYtPnNldFdhc1Njcm9sbGVk
QnlVc2VyKHRydWUpOwogfQogCi1ib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUHJlc3NFdmVu
dFRvU2Nyb2xsYmFyKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIG1vdXNlRXZlbnQsIFNj
cm9sbGJhciogc2Nyb2xsYmFyKQorYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NNb3VzZVByZXNzRXZl
bnRUb1Njcm9sbGJhcihNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBtb3VzZUV2ZW50QW5k
UmVzdWx0LCBTY3JvbGxiYXIqIHNjcm9sbGJhcikKIHsKICAgICBpZiAoIXNjcm9sbGJhciB8fCAh
c2Nyb2xsYmFyLT5lbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBzZXRGcmFt
ZVdhc1Njcm9sbGVkQnlVc2VyKCk7Ci0gICAgcmV0dXJuIHNjcm9sbGJhci0+bW91c2VEb3duKG1v
dXNlRXZlbnQuZXZlbnQoKSk7CisgICAgcmV0dXJuIHNjcm9sbGJhci0+bW91c2VEb3duKG1vdXNl
RXZlbnRBbmRSZXN1bHQuZXZlbnQoKSk7CiB9CiAKIC8vIElmIHNjcm9sbGJhciAodW5kZXIgbW91
c2UpIGlzIGRpZmZlcmVudCBmcm9tIGxhc3QsIHNlbmQgYSBtb3VzZSBleGl0ZWQuCkBAIC00MzU2
LDE1ICs0MzU4LDE1IEBAIE9wdGlvblNldDxQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcj4gRXZlbnRI
YW5kbGVyOjphY2Nlc3NLZXlNb2RpZmllcnMoKQogICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpN
b2RpZmllcjo6QWx0S2V5OwogfQogCi1ib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUHJlc3NF
dmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgbWV2LCBGcmFtZSog
c3ViZnJhbWUpCitib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUHJlc3NFdmVudFRvU3ViZnJh
bWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgbW91c2VFdmVudEFuZFJlc3VsdCwgRnJh
bWUmIHN1YmZyYW1lKQogewotICAgIHN1YmZyYW1lLT5ldmVudEhhbmRsZXIoKS5oYW5kbGVNb3Vz
ZVByZXNzRXZlbnQobWV2LmV2ZW50KCkpOworICAgIHN1YmZyYW1lLmV2ZW50SGFuZGxlcigpLmhh
bmRsZU1vdXNlUHJlc3NFdmVudChtb3VzZUV2ZW50QW5kUmVzdWx0LmV2ZW50KCkpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUmVsZWFzZUV2ZW50
VG9TdWJmcmFtZShNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBtZXYsIEZyYW1lKiBzdWJm
cmFtZSkKK2Jvb2wgRXZlbnRIYW5kbGVyOjpwYXNzTW91c2VSZWxlYXNlRXZlbnRUb1N1YmZyYW1l
KE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIG1vdXNlRXZlbnRBbmRSZXN1bHQsIEZyYW1l
JiBzdWJmcmFtZSkKIHsKLSAgICBzdWJmcmFtZS0+ZXZlbnRIYW5kbGVyKCkuaGFuZGxlTW91c2VS
ZWxlYXNlRXZlbnQobWV2LmV2ZW50KCkpOworICAgIHN1YmZyYW1lLmV2ZW50SGFuZGxlcigpLmhh
bmRsZU1vdXNlUmVsZWFzZUV2ZW50KG1vdXNlRXZlbnRBbmRSZXN1bHQuZXZlbnQoKSk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKQEAgLTQzODksNyArNDM5MSw2IEBAIGJvb2wgRXZlbnRIYW5kbGVy
OjpwYXNzV2lkZ2V0TW91c2VEb3duRXZlbnRUb1dpZGdldChSZW5kZXJXaWRnZXQqIHJlbmRlcldp
ZGdldCkKIAogYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NXaWRnZXRNb3VzZURvd25FdmVudFRvV2lk
Z2V0KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50KQogewotICAgIC8v
IEZpZ3VyZSBvdXQgd2hpY2ggdmlldyB0byBzZW5kIHRoZSBldmVudCB0by4KICAgICBSZW5kZXJP
YmplY3QqIHRhcmdldCA9IGV2ZW50LnRhcmdldE5vZGUoKSA/IGV2ZW50LnRhcmdldE5vZGUoKS0+
cmVuZGVyZXIoKSA6IG51bGxwdHI7CiAgICAgaWYgKCFpczxSZW5kZXJXaWRnZXQ+KHRhcmdldCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQ0MTYsOSArNDQxNyw5IEBAIGJvb2wgRXZlbnRI
YW5kbGVyOjpldmVudEFjdGl2YXRlZFZpZXcoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgY29u
c3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzTW91c2VN
b3ZlRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIG1ldiwgRnJh
bWUqIHN1YmZyYW1lLCBIaXRUZXN0UmVzdWx0KiBob3ZlcmVkTm9kZSkKK2Jvb2wgRXZlbnRIYW5k
bGVyOjpwYXNzTW91c2VNb3ZlRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJl
c3VsdHMmIG1vdXNlRXZlbnRBbmRSZXN1bHQsIEZyYW1lJiBzdWJmcmFtZSwgSGl0VGVzdFJlc3Vs
dCogcmVzdWx0KQogewotICAgIHN1YmZyYW1lLT5ldmVudEhhbmRsZXIoKS5oYW5kbGVNb3VzZU1v
dmVFdmVudChtZXYuZXZlbnQoKSwgaG92ZXJlZE5vZGUpOworICAgIHN1YmZyYW1lLmV2ZW50SGFu
ZGxlcigpLmhhbmRsZU1vdXNlTW92ZUV2ZW50KG1vdXNlRXZlbnRBbmRSZXN1bHQuZXZlbnQoKSwg
cmVzdWx0KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KICNlbmRpZiAvLyAhUExBVEZPUk0oQ09DT0Ep
ICYmICFQTEFURk9STShXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAppbmRleCBiYjAx
NGM2YTgzYThlNDAxYzRkMDlhNDZhYjdhNGQyYTFhOWRlNzY1Li41YjQ2NDQwZTI4YTE1MzZlN2U5
NmIyZjcxOWMyZGY0ZDk4OWE3NjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKQEAg
LTE4Nyw4ICsxODcsOCBAQCBwdWJsaWM6CiAgICAgSW50UG9pbnQgdGFyZ2V0UG9zaXRpb25Jbldp
bmRvd0ZvclNlbGVjdGlvbkF1dG9zY3JvbGwoKSBjb25zdDsKICAgICBib29sIHNob3VsZFVwZGF0
ZUF1dG9zY3JvbGwoKTsKIAotICAgIHN0YXRpYyBGcmFtZSogc3ViZnJhbWVGb3JUYXJnZXROb2Rl
KE5vZGUqKTsKLSAgICBzdGF0aWMgRnJhbWUqIHN1YmZyYW1lRm9ySGl0VGVzdFJlc3VsdChjb25z
dCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJik7CisgICAgc3RhdGljIFJlZlB0cjxGcmFt
ZT4gc3ViZnJhbWVGb3JUYXJnZXROb2RlKE5vZGUqKTsKKyAgICBzdGF0aWMgUmVmUHRyPEZyYW1l
PiBzdWJmcmFtZUZvckhpdFRlc3RSZXN1bHQoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVz
dWx0cyYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzY3JvbGxPdmVyZmxvdyhTY3JvbGxE
aXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5LCBOb2RlKiBzdGFydGluZ05vZGUgPSBudWxscHRy
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNjcm9sbFJlY3Vyc2l2ZWx5KFNjcm9sbERpcmVj
dGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHksIE5vZGUqIHN0YXJ0aW5nTm9kZSA9IG51bGxwdHIpOwpA
QCAtMjAzLDcgKzIwMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvc3RNb3VzZUNhcHR1cmUoKTsK
IAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFuZGxlTW91c2VQcmVzc0V2ZW50KGNvbnN0IFBs
YXRmb3JtTW91c2VFdmVudCYpOwotICAgIGJvb2wgaGFuZGxlTW91c2VNb3ZlRXZlbnQoY29uc3Qg
UGxhdGZvcm1Nb3VzZUV2ZW50JiwgSGl0VGVzdFJlc3VsdCogaG92ZXJlZE5vZGUgPSBudWxscHRy
LCBib29sIG9ubHlVcGRhdGVTY3JvbGxiYXJzID0gZmFsc2UpOworICAgIGJvb2wgaGFuZGxlTW91
c2VNb3ZlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiwgSGl0VGVzdFJlc3VsdCogPSBu
dWxscHRyLCBib29sIG9ubHlVcGRhdGVTY3JvbGxiYXJzID0gZmFsc2UpOwogICAgIFdFQkNPUkVf
RVhQT1JUIGJvb2wgaGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2
ZW50Jik7CiAgICAgYm9vbCBoYW5kbGVNb3VzZUZvcmNlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYW5kbGVXaGVlbEV2ZW50KGNvbnN0
IFBsYXRmb3JtV2hlZWxFdmVudCYpOwpAQCAtNDMwLDExICs0MzAsMTEgQEAgcHJpdmF0ZToKICAg
ICAKICAgICBib29sIG1vdXNlTW92ZW1lbnRFeGNlZWRzVGhyZXNob2xkKGNvbnN0IEZsb2F0UG9p
bnQmLCBpbnQgcG9pbnRzVGhyZXNob2xkKSBjb25zdDsKIAotICAgIGJvb2wgcGFzc01vdXNlUHJl
c3NFdmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYsIEZyYW1lKiBz
dWJmcmFtZSk7Ci0gICAgYm9vbCBwYXNzTW91c2VNb3ZlRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZl
bnRXaXRoSGl0VGVzdFJlc3VsdHMmLCBGcmFtZSogc3ViZnJhbWUsIEhpdFRlc3RSZXN1bHQqIGhv
dmVyZWROb2RlID0gbnVsbHB0cik7Ci0gICAgYm9vbCBwYXNzTW91c2VSZWxlYXNlRXZlbnRUb1N1
YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmLCBGcmFtZSogc3ViZnJhbWUpOwor
ICAgIGJvb2wgcGFzc01vdXNlUHJlc3NFdmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRU
ZXN0UmVzdWx0cyYsIEZyYW1lJik7CisgICAgYm9vbCBwYXNzTW91c2VNb3ZlRXZlbnRUb1N1YmZy
YW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmLCBGcmFtZSYsIEhpdFRlc3RSZXN1bHQq
ID0gbnVsbHB0cik7CisgICAgYm9vbCBwYXNzTW91c2VSZWxlYXNlRXZlbnRUb1N1YmZyYW1lKE1v
dXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmLCBGcmFtZSYpOwogCi0gICAgYm9vbCBwYXNzU3Vi
ZnJhbWVFdmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYsIEZyYW1l
KiBzdWJmcmFtZSwgSGl0VGVzdFJlc3VsdCogaG92ZXJlZE5vZGUgPSBudWxscHRyKTsKKyAgICBi
b29sIHBhc3NTdWJmcmFtZUV2ZW50VG9TdWJmcmFtZShNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1
bHRzJiwgRnJhbWUmLCBIaXRUZXN0UmVzdWx0KiA9IG51bGxwdHIpOwogCiAgICAgYm9vbCBwYXNz
TW91c2VQcmVzc0V2ZW50VG9TY3JvbGxiYXIoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYs
IFNjcm9sbGJhciopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9FdmVu
dEhhbmRsZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9FdmVudEhhbmRsZXJJT1Mu
bW0KaW5kZXggMjliZGZjYzk2NDA5ZjM2MjQyYTBiNDIyOWFiNGExYWZhMjRmOTdhOC4uZTc3MzJj
YTI1NDJhMzc2MWM0NDdiNDVlZWEyOGM5NDg2Y2JhMWU1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9pb3MvRXZlbnRIYW5kbGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvaW9zL0V2ZW50SGFuZGxlcklPUy5tbQpAQCAtMzY0LDcgKzM2NCw3IEBAIGJvb2wgRXZlbnRI
YW5kbGVyOjpldmVudExvb3BIYW5kbGVNb3VzZVVwKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVz
dFJlc3VsdHMmKQogICAgIHJldHVybiB0cnVlOwogfQogICAgIAotYm9vbCBFdmVudEhhbmRsZXI6
OnBhc3NTdWJmcmFtZUV2ZW50VG9TdWJmcmFtZShNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRz
JiBldmVudCwgRnJhbWUqIHN1YmZyYW1lLCBIaXRUZXN0UmVzdWx0KiBob3ZlcmVkTm9kZSkKK2Jv
b2wgRXZlbnRIYW5kbGVyOjpwYXNzU3ViZnJhbWVFdmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdp
dGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQsIEZyYW1lJiBzdWJmcmFtZSwgSGl0VGVzdFJlc3VsdCog
aGl0VGVzdFJlc3VsdCkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKQEAg
LTM3Niw3ICszNzYsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6cGFzc1N1YmZyYW1lRXZlbnRUb1N1
YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZQogICAgICAgICAvLyBjdXJy
ZW50TlNFdmVudCgpIHRoYXQgbW91c2VNb3ZlZCgpIGRvZXMgd291bGQgaGF2ZSBubyBlZmZlY3Qu
CiAgICAgICAgIEFTU0VSVCghbV9zZW5kaW5nRXZlbnRUb1N1YnZpZXcpOwogICAgICAgICBtX3Nl
bmRpbmdFdmVudFRvU3VidmlldyA9IHRydWU7Ci0gICAgICAgIHN1YmZyYW1lLT5ldmVudEhhbmRs
ZXIoKS5oYW5kbGVNb3VzZU1vdmVFdmVudChjdXJyZW50UGxhdGZvcm1Nb3VzZUV2ZW50KCksIGhv
dmVyZWROb2RlKTsKKyAgICAgICAgc3ViZnJhbWUuZXZlbnRIYW5kbGVyKCkuaGFuZGxlTW91c2VN
b3ZlRXZlbnQoY3VycmVudFBsYXRmb3JtTW91c2VFdmVudCgpLCBoaXRUZXN0UmVzdWx0KTsKICAg
ICAgICAgbV9zZW5kaW5nRXZlbnRUb1N1YnZpZXcgPSBmYWxzZTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQpAQCAtNDAwLDcgKzQwMCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzU3Vi
ZnJhbWVFdmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIEFTU0VSVCghbV9zZW5kaW5nRXZlbnRU
b1N1YnZpZXcpOwogICAgICAgICBtX3NlbmRpbmdFdmVudFRvU3VidmlldyA9IHRydWU7Ci0gICAg
ICAgIHN1YmZyYW1lLT5ldmVudEhhbmRsZXIoKS5oYW5kbGVNb3VzZVJlbGVhc2VFdmVudChjdXJy
ZW50UGxhdGZvcm1Nb3VzZUV2ZW50KCkpOworICAgICAgICBzdWJmcmFtZS5ldmVudEhhbmRsZXIo
KS5oYW5kbGVNb3VzZVJlbGVhc2VFdmVudChjdXJyZW50UGxhdGZvcm1Nb3VzZUV2ZW50KCkpOwog
ICAgICAgICBtX3NlbmRpbmdFdmVudFRvU3VidmlldyA9IGZhbHNlOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CkBAIC01MzMsMzUgKzUzMywzNSBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZGlz
cGF0Y2hTeW50aGV0aWNNb3VzZU1vdmUoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBwbGF0Zm9y
bQogICAgIG1vdXNlTW92ZWQocGxhdGZvcm1Nb3VzZUV2ZW50KTsKIH0KIAotYm9vbCBFdmVudEhh
bmRsZXI6OnBhc3NNb3VzZVByZXNzRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVz
dFJlc3VsdHMmIG1ldiwgRnJhbWUqIHN1YmZyYW1lKQorYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NN
b3VzZVByZXNzRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIG1v
dXNlRXZlbnRBbmRSZXN1bHQsIEZyYW1lJiBzdWJmcmFtZSkKIHsKICAgICAvLyBXZWJLaXQxIGNv
ZGUgcGF0aC4KICAgICBpZiAoZnJhbWVIYXNQbGF0Zm9ybVdpZGdldChtX2ZyYW1lKSkKLSAgICAg
ICAgcmV0dXJuIHBhc3NTdWJmcmFtZUV2ZW50VG9TdWJmcmFtZShtZXYsIHN1YmZyYW1lKTsKKyAg
ICAgICAgcmV0dXJuIHBhc3NTdWJmcmFtZUV2ZW50VG9TdWJmcmFtZShtb3VzZUV2ZW50QW5kUmVz
dWx0LCBzdWJmcmFtZSk7CiAKICAgICAvLyBXZWJLaXQyIGNvZGUgcGF0aC4KLSAgICBzdWJmcmFt
ZS0+ZXZlbnRIYW5kbGVyKCkuaGFuZGxlTW91c2VQcmVzc0V2ZW50KG1ldi5ldmVudCgpKTsKKyAg
ICBzdWJmcmFtZS5ldmVudEhhbmRsZXIoKS5oYW5kbGVNb3VzZVByZXNzRXZlbnQobW91c2VFdmVu
dEFuZFJlc3VsdC5ldmVudCgpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBFdmVudEhh
bmRsZXI6OnBhc3NNb3VzZU1vdmVFdmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0
UmVzdWx0cyYgbWV2LCBGcmFtZSogc3ViZnJhbWUsIEhpdFRlc3RSZXN1bHQqIGhvdmVyZWROb2Rl
KQorYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NNb3VzZU1vdmVFdmVudFRvU3ViZnJhbWUoTW91c2VF
dmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgbW91c2VFdmVudEFuZFJlc3VsdCwgRnJhbWUmIHN1YmZy
YW1lLCBIaXRUZXN0UmVzdWx0KiBoaXRUZXN0UmVzdWx0KQogewogICAgIC8vIFdlYktpdDEgY29k
ZSBwYXRoLgogICAgIGlmIChmcmFtZUhhc1BsYXRmb3JtV2lkZ2V0KG1fZnJhbWUpKQotICAgICAg
ICByZXR1cm4gcGFzc1N1YmZyYW1lRXZlbnRUb1N1YmZyYW1lKG1ldiwgc3ViZnJhbWUsIGhvdmVy
ZWROb2RlKTsKKyAgICAgICAgcmV0dXJuIHBhc3NTdWJmcmFtZUV2ZW50VG9TdWJmcmFtZShtb3Vz
ZUV2ZW50QW5kUmVzdWx0LCBzdWJmcmFtZSwgaGl0VGVzdFJlc3VsdCk7CiAKLSAgICBzdWJmcmFt
ZS0+ZXZlbnRIYW5kbGVyKCkuaGFuZGxlTW91c2VNb3ZlRXZlbnQobWV2LmV2ZW50KCksIGhvdmVy
ZWROb2RlKTsKKyAgICBzdWJmcmFtZS5ldmVudEhhbmRsZXIoKS5oYW5kbGVNb3VzZU1vdmVFdmVu
dChtb3VzZUV2ZW50QW5kUmVzdWx0LmV2ZW50KCksIGhpdFRlc3RSZXN1bHQpOwogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUmVsZWFzZUV2ZW50VG9T
dWJmcmFtZShNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBtZXYsIEZyYW1lKiBzdWJmcmFt
ZSkKK2Jvb2wgRXZlbnRIYW5kbGVyOjpwYXNzTW91c2VSZWxlYXNlRXZlbnRUb1N1YmZyYW1lKE1v
dXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIG1vdXNlRXZlbnRBbmRSZXN1bHQsIEZyYW1lJiBz
dWJmcmFtZSkKIHsKICAgICAvLyBXZWJLaXQxIGNvZGUgcGF0aC4KICAgICBpZiAoZnJhbWVIYXNQ
bGF0Zm9ybVdpZGdldChtX2ZyYW1lKSkKLSAgICAgICAgcmV0dXJuIHBhc3NTdWJmcmFtZUV2ZW50
VG9TdWJmcmFtZShtZXYsIHN1YmZyYW1lKTsKKyAgICAgICAgcmV0dXJuIHBhc3NTdWJmcmFtZUV2
ZW50VG9TdWJmcmFtZShtb3VzZUV2ZW50QW5kUmVzdWx0LCBzdWJmcmFtZSk7CiAKICAgICAvLyBX
ZWJLaXQyIGNvZGUgcGF0aC4KLSAgICBzdWJmcmFtZS0+ZXZlbnRIYW5kbGVyKCkuaGFuZGxlTW91
c2VSZWxlYXNlRXZlbnQobWV2LmV2ZW50KCkpOworICAgIHN1YmZyYW1lLmV2ZW50SGFuZGxlcigp
LmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KG1vdXNlRXZlbnRBbmRSZXN1bHQuZXZlbnQoKSk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTcxMiw3ICs3MTIsNyBAQCBib29sIEV2ZW50SGFuZGxl
cjo6dHJ5VG9CZWdpbkRyYWdBdFBvaW50KGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwg
Y29uc3QgSQogICAgIGF1dG8gZG9jdW1lbnRQb2ludCA9IHByb3RlY3RlZEZyYW1lLT52aWV3KCkg
PyBwcm90ZWN0ZWRGcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHN5bnRoZXRpY01vdXNl
TW92ZUV2ZW50LnBvc2l0aW9uKCkpIDogc3ludGhldGljTW91c2VNb3ZlRXZlbnQucG9zaXRpb24o
KTsKICAgICBhdXRvIGhpdFRlc3RlZE1vdXNlRXZlbnQgPSBkb2N1bWVudC0+cHJlcGFyZU1vdXNl
RXZlbnQoaGl0VHlwZSwgZG9jdW1lbnRQb2ludCwgc3ludGhldGljTW91c2VNb3ZlRXZlbnQpOwog
Ci0gICAgUmVmUHRyPEZyYW1lPiBzdWJmcmFtZSA9IHN1YmZyYW1lRm9ySGl0VGVzdFJlc3VsdCho
aXRUZXN0ZWRNb3VzZUV2ZW50KTsKKyAgICBhdXRvIHN1YmZyYW1lID0gc3ViZnJhbWVGb3JIaXRU
ZXN0UmVzdWx0KGhpdFRlc3RlZE1vdXNlRXZlbnQpOwogICAgIGlmIChzdWJmcmFtZSAmJiBzdWJm
cmFtZS0+ZXZlbnRIYW5kbGVyKCkudHJ5VG9CZWdpbkRyYWdBdFBvaW50KGFkanVzdGVkQ2xpZW50
UG9zaXRpb24sIGFkanVzdGVkR2xvYmFsUG9zaXRpb24pKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCmluZGV4IDc2N2Rk
MmE2YTJmMjBiN2QwYjkxZmZjMzZlMTFhYmZmMmUzYjhkMmUuLjdmZGQ3NDI4ZDllOWVmZGRjM2Yz
NTNlZDU0ZjI4YWM2YjRhNDFiYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFj
L0V2ZW50SGFuZGxlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhh
bmRsZXJNYWMubW0KQEAgLTM3NSw3ICszNzUsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6ZXZlbnRM
b29wSGFuZGxlTW91c2VVcChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJikKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KICAgICAKLWJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzU3ViZnJhbWVF
dmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQsIEZyYW1l
KiBzdWJmcmFtZSwgSGl0VGVzdFJlc3VsdCogaG92ZXJlZE5vZGUpCitib29sIEV2ZW50SGFuZGxl
cjo6cGFzc1N1YmZyYW1lRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3Vs
dHMmIGV2ZW50LCBGcmFtZSYgc3ViZnJhbWUsIEhpdFRlc3RSZXN1bHQqIGhpdFRlc3RSZXN1bHQp
CiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCkBAIC0zODgsNyArMzg4LDcg
QEAgYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NTdWJmcmFtZUV2ZW50VG9TdWJmcmFtZShNb3VzZUV2
ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmUKICAgICAgICAgaWYgKCFtX21vdXNlRG93bldhc0lu
U3ViZnJhbWUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAjaWYgRU5BQkxFKERSQUdfU1VQ
UE9SVCkKLSAgICAgICAgaWYgKHN1YmZyYW1lLT5wYWdlKCktPmRyYWdDb250cm9sbGVyKCkuZGlk
SW5pdGlhdGVEcmFnKCkpCisgICAgICAgIGlmIChzdWJmcmFtZS5wYWdlKCktPmRyYWdDb250cm9s
bGVyKCkuZGlkSW5pdGlhdGVEcmFnKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5k
aWYKICAgICBjYXNlIE5TRXZlbnRUeXBlTW91c2VNb3ZlZDoKQEAgLTM5Nyw3ICszOTcsNyBAQCBi
b29sIEV2ZW50SGFuZGxlcjo6cGFzc1N1YmZyYW1lRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRX
aXRoSGl0VGVzdFJlc3VsdHMmIGV2ZQogICAgICAgICAvLyBjdXJyZW50TlNFdmVudCgpIHRoYXQg
bW91c2VNb3ZlZCgpIGRvZXMgd291bGQgaGF2ZSBubyBlZmZlY3QuCiAgICAgICAgIEFTU0VSVCgh
bV9zZW5kaW5nRXZlbnRUb1N1YnZpZXcpOwogICAgICAgICBtX3NlbmRpbmdFdmVudFRvU3Vidmll
dyA9IHRydWU7Ci0gICAgICAgIHN1YmZyYW1lLT5ldmVudEhhbmRsZXIoKS5oYW5kbGVNb3VzZU1v
dmVFdmVudChjdXJyZW50UGxhdGZvcm1Nb3VzZUV2ZW50KCksIGhvdmVyZWROb2RlKTsKKyAgICAg
ICAgc3ViZnJhbWUuZXZlbnRIYW5kbGVyKCkuaGFuZGxlTW91c2VNb3ZlRXZlbnQoY3VycmVudFBs
YXRmb3JtTW91c2VFdmVudCgpLCBoaXRUZXN0UmVzdWx0KTsKICAgICAgICAgbV9zZW5kaW5nRXZl
bnRUb1N1YnZpZXcgPSBmYWxzZTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIApAQCAt
NDIxLDcgKzQyMSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzU3ViZnJhbWVFdmVudFRvU3Vi
ZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIEFTU0VSVCghbV9zZW5kaW5nRXZlbnRUb1N1YnZpZXcpOwogICAg
ICAgICBtX3NlbmRpbmdFdmVudFRvU3VidmlldyA9IHRydWU7Ci0gICAgICAgIHN1YmZyYW1lLT5l
dmVudEhhbmRsZXIoKS5oYW5kbGVNb3VzZVJlbGVhc2VFdmVudChjdXJyZW50UGxhdGZvcm1Nb3Vz
ZUV2ZW50KCkpOworICAgICAgICBzdWJmcmFtZS5ldmVudEhhbmRsZXIoKS5oYW5kbGVNb3VzZVJl
bGVhc2VFdmVudChjdXJyZW50UGxhdGZvcm1Nb3VzZUV2ZW50KCkpOwogICAgICAgICBtX3NlbmRp
bmdFdmVudFRvU3VidmlldyA9IGZhbHNlOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBA
IC02ODMsMjIgKzY4MywyMiBAQCBzdGF0aWMgYm9vbCBmcmFtZUhhc1BsYXRmb3JtV2lkZ2V0KGNv
bnN0IEZyYW1lJiBmcmFtZSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgRXZlbnRIYW5k
bGVyOjpwYXNzTW91c2VQcmVzc0V2ZW50VG9TdWJmcmFtZShNb3VzZUV2ZW50V2l0aEhpdFRlc3RS
ZXN1bHRzJiBtZXYsIEZyYW1lKiBzdWJmcmFtZSkKK2Jvb2wgRXZlbnRIYW5kbGVyOjpwYXNzTW91
c2VQcmVzc0V2ZW50VG9TdWJmcmFtZShNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBtb3Vz
ZUV2ZW50QW5kUmVzdWx0LCBGcmFtZSYgc3ViZnJhbWUpCiB7CiAgICAgLy8gV2ViS2l0MSBjb2Rl
IHBhdGguCiAgICAgaWYgKGZyYW1lSGFzUGxhdGZvcm1XaWRnZXQobV9mcmFtZSkpCi0gICAgICAg
IHJldHVybiBwYXNzU3ViZnJhbWVFdmVudFRvU3ViZnJhbWUobWV2LCBzdWJmcmFtZSk7CisgICAg
ICAgIHJldHVybiBwYXNzU3ViZnJhbWVFdmVudFRvU3ViZnJhbWUobW91c2VFdmVudEFuZFJlc3Vs
dCwgc3ViZnJhbWUpOwogCiAgICAgLy8gV2ViS2l0MiBjb2RlIHBhdGguCi0gICAgc3ViZnJhbWUt
PmV2ZW50SGFuZGxlcigpLmhhbmRsZU1vdXNlUHJlc3NFdmVudChtZXYuZXZlbnQoKSk7CisgICAg
c3ViZnJhbWUuZXZlbnRIYW5kbGVyKCkuaGFuZGxlTW91c2VQcmVzc0V2ZW50KG1vdXNlRXZlbnRB
bmRSZXN1bHQuZXZlbnQoKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgRXZlbnRIYW5k
bGVyOjpwYXNzTW91c2VNb3ZlRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJl
c3VsdHMmIG1ldiwgRnJhbWUqIHN1YmZyYW1lLCBIaXRUZXN0UmVzdWx0KiBob3ZlcmVkTm9kZSkK
K2Jvb2wgRXZlbnRIYW5kbGVyOjpwYXNzTW91c2VNb3ZlRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZl
bnRXaXRoSGl0VGVzdFJlc3VsdHMmIG1vdXNlRXZlbnRBbmRSZXN1bHQsIEZyYW1lJiBzdWJmcmFt
ZSwgSGl0VGVzdFJlc3VsdCogaGl0VGVzdFJlc3VsdCkKIHsKICAgICAvLyBXZWJLaXQxIGNvZGUg
cGF0aC4KICAgICBpZiAoZnJhbWVIYXNQbGF0Zm9ybVdpZGdldChtX2ZyYW1lKSkKLSAgICAgICAg
cmV0dXJuIHBhc3NTdWJmcmFtZUV2ZW50VG9TdWJmcmFtZShtZXYsIHN1YmZyYW1lLCBob3ZlcmVk
Tm9kZSk7CisgICAgICAgIHJldHVybiBwYXNzU3ViZnJhbWVFdmVudFRvU3ViZnJhbWUobW91c2VF
dmVudEFuZFJlc3VsdCwgc3ViZnJhbWUsIGhpdFRlc3RSZXN1bHQpOwogCiAjaWYgRU5BQkxFKERS
QUdfU1VQUE9SVCkKICAgICAvLyBXZWJLaXQyIGNvZGUgcGF0aC4KQEAgLTcwNiwxOCArNzA2LDE4
IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzTW91c2VNb3ZlRXZlbnRUb1N1YmZyYW1lKE1vdXNl
RXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIG1lCiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRp
ZgogCi0gICAgc3ViZnJhbWUtPmV2ZW50SGFuZGxlcigpLmhhbmRsZU1vdXNlTW92ZUV2ZW50KG1l
di5ldmVudCgpLCBob3ZlcmVkTm9kZSk7CisgICAgc3ViZnJhbWUuZXZlbnRIYW5kbGVyKCkuaGFu
ZGxlTW91c2VNb3ZlRXZlbnQobW91c2VFdmVudEFuZFJlc3VsdC5ldmVudCgpLCBoaXRUZXN0UmVz
dWx0KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NNb3Vz
ZVJlbGVhc2VFdmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgbWV2
LCBGcmFtZSogc3ViZnJhbWUpCitib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUmVsZWFzZUV2
ZW50VG9TdWJmcmFtZShNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBtb3VzZUV2ZW50QW5k
UmVzdWx0LCBGcmFtZSYgc3ViZnJhbWUpCiB7CiAgICAgLy8gV2ViS2l0MSBjb2RlIHBhdGguCiAg
ICAgaWYgKGZyYW1lSGFzUGxhdGZvcm1XaWRnZXQobV9mcmFtZSkpCi0gICAgICAgIHJldHVybiBw
YXNzU3ViZnJhbWVFdmVudFRvU3ViZnJhbWUobWV2LCBzdWJmcmFtZSk7CisgICAgICAgIHJldHVy
biBwYXNzU3ViZnJhbWVFdmVudFRvU3ViZnJhbWUobW91c2VFdmVudEFuZFJlc3VsdCwgc3ViZnJh
bWUpOwogCiAgICAgLy8gV2ViS2l0MiBjb2RlIHBhdGguCi0gICAgc3ViZnJhbWUtPmV2ZW50SGFu
ZGxlcigpLmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KG1ldi5ldmVudCgpKTsKKyAgICBzdWJmcmFt
ZS5ldmVudEhhbmRsZXIoKS5oYW5kbGVNb3VzZVJlbGVhc2VFdmVudChtb3VzZUV2ZW50QW5kUmVz
dWx0LmV2ZW50KCkpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3dpbi9FdmVudEhhbmRsZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS93aW4vRXZlbnRIYW5kbGVyV2luLmNwcAppbmRleCAwOTA5NzEwYzViMzhjYTJiZTQzMDgxMjg1
ODNmZjNhOTYwYTBiZDNiLi4yODNhNjAwYjQ2Yjk2NGJhOWE2ZDRiNDg5YzIyMGJmOWQ1MmU0MzA1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9FdmVudEhhbmRsZXJXaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0V2ZW50SGFuZGxlcldpbi5jcHAKQEAgLTMx
LDE0ICszMSwxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgRXZlbnRIYW5kbGVy
OjpwYXNzTW91c2VNb3ZlRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3Vs
dHMmIG1ldiwgRnJhbWUqIHN1YmZyYW1lLCBIaXRUZXN0UmVzdWx0KiBob3ZlcmVkTm9kZSkKK2Jv
b2wgRXZlbnRIYW5kbGVyOjpwYXNzTW91c2VNb3ZlRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRX
aXRoSGl0VGVzdFJlc3VsdHMmIG1vdXNlRXZlbnRBbmRSZXN1bHQsIEZyYW1lJiBzdWJmcmFtZSwg
SGl0VGVzdFJlc3VsdCogaGl0VGVzdFJlc3VsdCkKIHsKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JU
KQogICAgIGlmIChtX21vdXNlRG93bk1heVN0YXJ0RHJhZyAmJiAhbV9tb3VzZURvd25XYXNJblN1
YmZyYW1lKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIAotICAgIHN1YmZyYW1lLT5l
dmVudEhhbmRsZXIoKS5oYW5kbGVNb3VzZU1vdmVFdmVudChtZXYuZXZlbnQoKSwgaG92ZXJlZE5v
ZGUpOworICAgIHN1YmZyYW1lLmV2ZW50SGFuZGxlcigpLmhhbmRsZU1vdXNlTW92ZUV2ZW50KG1v
dXNlRXZlbnRBbmRSZXN1bHQuZXZlbnQoKSwgaGl0VGVzdFJlc3VsdCk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398461</attachid>
            <date>2020-05-04 19:55:54 -0700</date>
            <delta_ts>2020-05-04 21:01:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211413-20200504195553.patch</filename>
            <type>text/plain</type>
            <size>26510</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxMTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWJkMWNjNzU1MjQxNDk0
MTJmY2I4MWViYTVmNDc2Y2IwNDgxNmJmMC4uODNhMjRkYjRlMmIzZjFlNGQyZDk3ZWMyZWY2NTNh
MWE5ODVmZGEyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIwLTA1LTA0ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIENvZGUgY2xlYW51
cCBpbiBFdmVudEhhbmRsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxMTQxMworCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAg
ICAgICAgVXNlIGEgYmV0dGVyIG5hbWUgZm9yICJob3ZlcmVkTm9kZSIgd2hpY2ggaXMgYSBIaXRU
ZXN0UmVzdWx0LgorCisgICAgICAgIENvbnZlcnQgRnJhbWUqIHRvIEZyYW1lJi4KKworICAgICAg
ICBIYXZlIGEgY291cGxlIG9mIGhlbHBlciBmdW5jdGlvbnMgcmV0dXJuIFJlZlB0cjxGcmFtZT4u
CisKKyAgICAgICAgKiBwYWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkF1dG9zY3JvbGxDb250cm9sbGVyOjpzdG9wQXV0b3Njcm9sbFRpbWVyKToKKyAgICAg
ICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRs
ZXI6OnN1YmZyYW1lRm9ySGl0VGVzdFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhh
bmRsZXI6OnN1YmZyYW1lRm9yVGFyZ2V0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhh
bmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhh
bmRsZXI6OmhhbmRsZU1vdXNlRG91YmxlQ2xpY2tFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudEhhbmRsZXI6Om1vdXNlTW92ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVy
OjpwYXNzTW91c2VNb3ZlZEV2ZW50VG9TY3JvbGxiYXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VNb3ZlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRIYW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVhc2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudEhhbmRsZXI6OnBhc3NNb3VzZVByZXNzRXZlbnRUb1Njcm9sbGJhcik6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudEhhbmRsZXI6OnBhc3NNb3VzZVByZXNzRXZlbnRUb1N1YmZyYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUmVsZWFzZUV2ZW50VG9TdWJm
cmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnBhc3NXaWRnZXRNb3VzZURv
d25FdmVudFRvV2lkZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGFzc01v
dXNlTW92ZUV2ZW50VG9TdWJmcmFtZSk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuaDoK
KyAgICAgICAgKiBwYWdlL2lvcy9FdmVudEhhbmRsZXJJT1MubW06CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OnBhc3NTdWJmcmFtZUV2ZW50VG9TdWJmcmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudEhhbmRsZXI6OnBhc3NNb3VzZVByZXNzRXZlbnRUb1N1YmZyYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGFzc01vdXNlTW92ZUV2ZW50VG9TdWJmcmFt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnBhc3NNb3VzZVJlbGVhc2VFdmVu
dFRvU3ViZnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjp0cnlUb0JlZ2lu
RHJhZ0F0UG9pbnQpOgorICAgICAgICAqIHBhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGFzc1N1YmZyYW1lRXZlbnRUb1N1YmZyYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUHJlc3NFdmVudFRv
U3ViZnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpwYXNzTW91c2VNb3Zl
RXZlbnRUb1N1YmZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGFzc01v
dXNlUmVsZWFzZUV2ZW50VG9TdWJmcmFtZSk6CisgICAgICAgICogcGFnZS93aW4vRXZlbnRIYW5k
bGVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGFzc01vdXNlTW92
ZUV2ZW50VG9TdWJmcmFtZSk6CisKIDIwMjAtMDUtMDQgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZy
YXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgT3ZlcmZsb3cgc2Nyb2xsYmFycyBkb24ndCBncm93
IHdoZW4gaG92ZXJlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9BdXRvc2Nyb2xs
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0F1dG9zY3JvbGxDb250cm9sbGVy
LmNwcAppbmRleCA3YjNkZTQwNDVmMjJmODdlZjIxOWJhMWJmZmFlZDExMDZmNjQ1ZDlhLi5mYTJh
NzdhODA4OTQ3NGQ4MjVmMjMxMjUyMWE2ODhlMDhlYWEzNDE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLmNwcApAQCAtOTUsNyArOTUsNyBAQCB2b2lkIEF1
dG9zY3JvbGxDb250cm9sbGVyOjpzdG9wQXV0b3Njcm9sbFRpbWVyKGJvb2wgcmVuZGVyZXJJc0Jl
aW5nRGVzdHJveWVkKQogCiAgICAgRnJhbWUmIGZyYW1lID0gc2Nyb2xsYWJsZS0+ZnJhbWUoKTsK
ICAgICBpZiAoYXV0b3Njcm9sbEluUHJvZ3Jlc3MoKSAmJiBmcmFtZS5ldmVudEhhbmRsZXIoKS5t
b3VzZURvd25XYXNJblN1YmZyYW1lKCkpIHsKLSAgICAgICAgaWYgKEZyYW1lKiBzdWJmcmFtZSA9
IGZyYW1lLmV2ZW50SGFuZGxlcigpLnN1YmZyYW1lRm9yVGFyZ2V0Tm9kZShmcmFtZS5ldmVudEhh
bmRsZXIoKS5tb3VzZVByZXNzTm9kZSgpKSkKKyAgICAgICAgaWYgKGF1dG8gc3ViZnJhbWUgPSBm
cmFtZS5ldmVudEhhbmRsZXIoKS5zdWJmcmFtZUZvclRhcmdldE5vZGUoZnJhbWUuZXZlbnRIYW5k
bGVyKCkubW91c2VQcmVzc05vZGUoKSkpCiAgICAgICAgICAgICBzdWJmcmFtZS0+ZXZlbnRIYW5k
bGVyKCkuc3RvcEF1dG9zY3JvbGxUaW1lcihyZW5kZXJlcklzQmVpbmdEZXN0cm95ZWQpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4
IDhkNDE3MTc3NDQyMzViZjgxY2ZhMDc0ZTBhYjU2MjFhZTM4YjA0MzcuLjA1MTdhOGZhMjAwOWRk
YTc0ZDZkMTQyZjA4MmVjNWUwNWUyOTg2ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAKQEAgLTEzMjIsMTQgKzEzMjIsMTQgQEAgSW50UG9pbnQgRXZlbnRIYW5kbGVyOjpsYXN0
S25vd25Nb3VzZVBvc2l0aW9uKCkgY29uc3QKICAgICByZXR1cm4gbV9sYXN0S25vd25Nb3VzZVBv
c2l0aW9uOwogfQogCi1GcmFtZSogRXZlbnRIYW5kbGVyOjpzdWJmcmFtZUZvckhpdFRlc3RSZXN1
bHQoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgaGl0VGVzdFJlc3VsdCkKK1Jl
ZlB0cjxGcmFtZT4gRXZlbnRIYW5kbGVyOjpzdWJmcmFtZUZvckhpdFRlc3RSZXN1bHQoY29uc3Qg
TW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgaGl0VGVzdFJlc3VsdCkKIHsKICAgICBpZiAo
IWhpdFRlc3RSZXN1bHQuaXNPdmVyV2lkZ2V0KCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gc3ViZnJhbWVGb3JUYXJnZXROb2RlKGhpdFRl
c3RSZXN1bHQudGFyZ2V0Tm9kZSgpKTsKIH0KIAotRnJhbWUqIEV2ZW50SGFuZGxlcjo6c3ViZnJh
bWVGb3JUYXJnZXROb2RlKE5vZGUqIG5vZGUpCitSZWZQdHI8RnJhbWU+IEV2ZW50SGFuZGxlcjo6
c3ViZnJhbWVGb3JUYXJnZXROb2RlKE5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKCFub2RlKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE3NTIsNyArMTc1Miw3IEBAIGJvb2wgRXZlbnRIYW5k
bGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBwbGF0
Zm9ybU1vdXNlCiAKICAgICBpZiAoIXBhc3NlZFRvU2Nyb2xsYmFyKSB7CiAgICAgICAgIFJlZlB0
cjxGcmFtZT4gc3ViZnJhbWUgPSBzdWJmcmFtZUZvckhpdFRlc3RSZXN1bHQobW91c2VFdmVudCk7
Ci0gICAgICAgIGlmIChzdWJmcmFtZSAmJiBwYXNzTW91c2VQcmVzc0V2ZW50VG9TdWJmcmFtZSht
b3VzZUV2ZW50LCBzdWJmcmFtZS5nZXQoKSkpIHsKKyAgICAgICAgaWYgKHN1YmZyYW1lICYmIHBh
c3NNb3VzZVByZXNzRXZlbnRUb1N1YmZyYW1lKG1vdXNlRXZlbnQsICpzdWJmcmFtZSkpIHsKICAg
ICAgICAgICAgIC8vIFN0YXJ0IGNhcHR1cmluZyBmdXR1cmUgZXZlbnRzIGZvciB0aGlzIGZyYW1l
LiBXZSBvbmx5IGRvIHRoaXMgaWYgd2UgZGlkbid0IGNsZWFyCiAgICAgICAgICAgICAvLyB0aGUg
bV9tb3VzZVByZXNzZWQgZmxhZywgd2hpY2ggbWF5IGhhcHBlbiBpZiBhbiBBcHBLaXQgd2lkZ2V0
IGVudGVyZWQgYSBtb2RhbCBldmVudCBsb29wLgogICAgICAgICAgICAgbV9jYXB0dXJlc0RyYWdn
aW5nID0gc3ViZnJhbWUtPmV2ZW50SGFuZGxlcigpLmNhcHR1cmVzRHJhZ2dpbmcoKTsKQEAgLTE4
NTEsMTAgKzE4NTEsMTIgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlRG91YmxlQ2xp
Y2tFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIHBsYXRmb3IKIAogICAgIGNvbnN0ZXhw
ciBPcHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlJlcXVlc3RUeXBlPiBoaXRUeXBlIHsgSGl0VGVz
dFJlcXVlc3Q6OlJlbGVhc2UsIEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1VzZXJBZ2VudFNoYWRv
d0NvbnRlbnQgfTsKICAgICBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzIG1vdXNlRXZlbnQg
PSBwcmVwYXJlTW91c2VFdmVudChoaXRUeXBlLCBwbGF0Zm9ybU1vdXNlRXZlbnQpOwotICAgIEZy
YW1lKiBzdWJmcmFtZSA9IHN1YmZyYW1lRm9ySGl0VGVzdFJlc3VsdChtb3VzZUV2ZW50KTsKKyAg
ICBhdXRvIHN1YmZyYW1lID0gc3ViZnJhbWVGb3JIaXRUZXN0UmVzdWx0KG1vdXNlRXZlbnQpOwor
CiAgICAgaWYgKG1fZXZlbnRIYW5kbGVyV2lsbFJlc2V0Q2FwdHVyaW5nTW91c2VFdmVudHNFbGVt
ZW50KQogICAgICAgICBtX2NhcHR1cmluZ01vdXNlRXZlbnRzRWxlbWVudCA9IG51bGxwdHI7Ci0g
ICAgaWYgKHN1YmZyYW1lICYmIHBhc3NNb3VzZVByZXNzRXZlbnRUb1N1YmZyYW1lKG1vdXNlRXZl
bnQsIHN1YmZyYW1lKSkKKworICAgIGlmIChzdWJmcmFtZSAmJiBwYXNzTW91c2VQcmVzc0V2ZW50
VG9TdWJmcmFtZShtb3VzZUV2ZW50LCAqc3ViZnJhbWUpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAogICAgIG1fY2xpY2tDb3VudCA9IHBsYXRmb3JtTW91c2VFdmVudC5jbGlja0NvdW50KCk7CkBA
IC0xOTAwLDE0ICsxOTAyLDE0IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjptb3VzZU1vdmVkKGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpCiAgICAgaWYgKG1fZnJhbWUucGFnZSgpICYmIG1f
ZnJhbWUucGFnZSgpLT5wYWdlT3ZlcmxheUNvbnRyb2xsZXIoKS5oYW5kbGVNb3VzZUV2ZW50KGV2
ZW50KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBIaXRUZXN0UmVzdWx0IGhvdmVyZWRO
b2RlID0gSGl0VGVzdFJlc3VsdChMYXlvdXRQb2ludCgpKTsKLSAgICBib29sIHJlc3VsdCA9IGhh
bmRsZU1vdXNlTW92ZUV2ZW50KGV2ZW50LCAmaG92ZXJlZE5vZGUpOworICAgIEhpdFRlc3RSZXN1
bHQgaGl0VGVzdFJlc3VsdDsKKyAgICBib29sIHJlc3VsdCA9IGhhbmRsZU1vdXNlTW92ZUV2ZW50
KGV2ZW50LCAmaGl0VGVzdFJlc3VsdCk7CiAKICAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS5wYWdl
KCk7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogCi0gICAgaWYgKGF1
dG8gc2Nyb2xsZWRBcmVhID0gZW5jbG9zaW5nU2Nyb2xsYWJsZUFyZWEoaG92ZXJlZE5vZGUuaW5u
ZXJOb2RlKCkpKSB7CisgICAgaWYgKGF1dG8gc2Nyb2xsZWRBcmVhID0gZW5jbG9zaW5nU2Nyb2xs
YWJsZUFyZWEoaGl0VGVzdFJlc3VsdC5pbm5lck5vZGUoKSkpIHsKICAgICAgICAgaWYgKEZyYW1l
VmlldyogZnJhbWVWaWV3ID0gbV9mcmFtZS52aWV3KCkpIHsKICAgICAgICAgICAgIGlmIChmcmFt
ZVZpZXctPmNvbnRhaW5zU2Nyb2xsYWJsZUFyZWEoc2Nyb2xsZWRBcmVhKSkKICAgICAgICAgICAg
ICAgICBzY3JvbGxlZEFyZWEtPm1vdXNlTW92ZWRJbkNvbnRlbnRBcmVhKCk7CkBAIC0xOTE3LDE4
ICsxOTE5LDE4IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjptb3VzZU1vdmVkKGNvbnN0IFBsYXRmb3Jt
TW91c2VFdmVudCYgZXZlbnQpCiAgICAgaWYgKEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbV9mcmFt
ZS52aWV3KCkpCiAgICAgICAgIGZyYW1lVmlldy0+bW91c2VNb3ZlZEluQ29udGVudEFyZWEoKTsg
IAogCi0gICAgaG92ZXJlZE5vZGUuc2V0VG9Ob25Vc2VyQWdlbnRTaGFkb3dBbmNlc3RvcigpOwot
ICAgIHBhZ2UtPmNocm9tZSgpLm1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KGhvdmVyZWROb2RlLCBl
dmVudC5tb2RpZmllckZsYWdzKCkpOworICAgIGhpdFRlc3RSZXN1bHQuc2V0VG9Ob25Vc2VyQWdl
bnRTaGFkb3dBbmNlc3RvcigpOworICAgIHBhZ2UtPmNocm9tZSgpLm1vdXNlRGlkTW92ZU92ZXJF
bGVtZW50KGhpdFRlc3RSZXN1bHQsIGV2ZW50Lm1vZGlmaWVyRmxhZ3MoKSk7CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAogYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NNb3VzZU1vdmVkRXZlbnRUb1Nj
cm9sbGJhcnMoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKIHsKLSAgICBIaXRUZXN0
UmVzdWx0IGhvdmVyZWROb2RlOwotICAgIHJldHVybiBoYW5kbGVNb3VzZU1vdmVFdmVudChldmVu
dCwgJmhvdmVyZWROb2RlLCB0cnVlKTsKKyAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3RSZXN1bHQ7
CisgICAgcmV0dXJuIGhhbmRsZU1vdXNlTW92ZUV2ZW50KGV2ZW50LCAmaGl0VGVzdFJlc3VsdCwg
dHJ1ZSk7CiB9CiAKLWJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZU1vdmVFdmVudChjb25z
dCBQbGF0Zm9ybU1vdXNlRXZlbnQmIHBsYXRmb3JtTW91c2VFdmVudCwgSGl0VGVzdFJlc3VsdCog
aG92ZXJlZE5vZGUsIGJvb2wgb25seVVwZGF0ZVNjcm9sbGJhcnMpCitib29sIEV2ZW50SGFuZGxl
cjo6aGFuZGxlTW91c2VNb3ZlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBwbGF0Zm9y
bU1vdXNlRXZlbnQsIEhpdFRlc3RSZXN1bHQqIGhpdFRlc3RSZXN1bHQsIGJvb2wgb25seVVwZGF0
ZVNjcm9sbGJhcnMpCiB7CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICBib29sIGRlZmF1
bHRQcmV2ZW50ZWQgPSBkaXNwYXRjaFN5bnRoZXRpY1RvdWNoRXZlbnRJZkVuYWJsZWQocGxhdGZv
cm1Nb3VzZUV2ZW50KTsKQEAgLTE5OTIsOCArMTk5NCw4IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpo
YW5kbGVNb3VzZU1vdmVFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIHBsYXRmb3JtTW91
c2VFCiAjZW5kaWYKICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KGhpdFR5cGUpOwogICAgIE1v
dXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgbW91c2VFdmVudCA9IHByZXBhcmVNb3VzZUV2ZW50
KHJlcXVlc3QsIHBsYXRmb3JtTW91c2VFdmVudCk7Ci0gICAgaWYgKGhvdmVyZWROb2RlKQotICAg
ICAgICAqaG92ZXJlZE5vZGUgPSBtb3VzZUV2ZW50LmhpdFRlc3RSZXN1bHQoKTsKKyAgICBpZiAo
aGl0VGVzdFJlc3VsdCkKKyAgICAgICAgKmhpdFRlc3RSZXN1bHQgPSBtb3VzZUV2ZW50LmhpdFRl
c3RSZXN1bHQoKTsKIAogICAgIGlmIChtX3Jlc2l6ZUxheWVyICYmIG1fcmVzaXplTGF5ZXItPmlu
UmVzaXplTW9kZSgpKQogICAgICAgICBtX3Jlc2l6ZUxheWVyLT5yZXNpemUocGxhdGZvcm1Nb3Vz
ZUV2ZW50LCBtX29mZnNldEZyb21SZXNpemVDb3JuZXIpOwpAQCAtMjAxOSw3ICsyMDIxLDcgQEAg
Ym9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlTW92ZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91
c2VFdmVudCYgcGxhdGZvcm1Nb3VzZUUKICAKICAgICAvLyBXZSB3YW50IG1vdXNlb3V0cyB0byBo
YXBwZW4gZmlyc3QsIGZyb20gdGhlIGluc2lkZSBvdXQuICBGaXJzdCBzZW5kIGEgbW92ZSBldmVu
dCB0byB0aGUgbGFzdCBzdWJmcmFtZSBzbyB0aGF0IGl0IHdpbGwgZmlyZSBtb3VzZW91dHMuCiAg
ICAgaWYgKG1fbGFzdE1vdXNlTW92ZUV2ZW50U3ViZnJhbWUgJiYgbV9sYXN0TW91c2VNb3ZlRXZl
bnRTdWJmcmFtZS0+dHJlZSgpLmlzRGVzY2VuZGFudE9mKCZtX2ZyYW1lKSAmJiBtX2xhc3RNb3Vz
ZU1vdmVFdmVudFN1YmZyYW1lICE9IG5ld1N1YmZyYW1lKQotICAgICAgICBwYXNzTW91c2VNb3Zl
RXZlbnRUb1N1YmZyYW1lKG1vdXNlRXZlbnQsIG1fbGFzdE1vdXNlTW92ZUV2ZW50U3ViZnJhbWUu
Z2V0KCkpOworICAgICAgICBwYXNzTW91c2VNb3ZlRXZlbnRUb1N1YmZyYW1lKG1vdXNlRXZlbnQs
ICptX2xhc3RNb3VzZU1vdmVFdmVudFN1YmZyYW1lKTsKIAogICAgIGlmIChuZXdTdWJmcmFtZSkg
ewogICAgICAgICAvLyBVcGRhdGUgb3Zlci9vdXQgc3RhdGUgYmVmb3JlIHBhc3NpbmcgdGhlIGV2
ZW50IHRvIHRoZSBzdWJmcmFtZS4KQEAgLTIwMjgsNyArMjAzMCw3IEBAIGJvb2wgRXZlbnRIYW5k
bGVyOjpoYW5kbGVNb3VzZU1vdmVFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIHBsYXRm
b3JtTW91c2VFCiAgICAgICAgIC8vIEV2ZW50IGRpc3BhdGNoIGluIHVwZGF0ZU1vdXNlRXZlbnRU
YXJnZXROb2RlIG1heSBoYXZlIGNhdXNlZCB0aGUgc3ViZnJhbWUgb2YgdGhlIHRhcmdldAogICAg
ICAgICAvLyBub2RlIHRvIGJlIGRldGFjaGVkIGZyb20gaXRzIEZyYW1lVmlldywgaW4gd2hpY2gg
Y2FzZSB0aGUgZXZlbnQgc2hvdWxkIG5vdCBiZSBwYXNzZWQuCiAgICAgICAgIGlmIChuZXdTdWJm
cmFtZS0+dmlldygpKQotICAgICAgICAgICAgc3dhbGxvd0V2ZW50IHw9IHBhc3NNb3VzZU1vdmVF
dmVudFRvU3ViZnJhbWUobW91c2VFdmVudCwgbmV3U3ViZnJhbWUuZ2V0KCksIGhvdmVyZWROb2Rl
KTsKKyAgICAgICAgICAgIHN3YWxsb3dFdmVudCB8PSBwYXNzTW91c2VNb3ZlRXZlbnRUb1N1YmZy
YW1lKG1vdXNlRXZlbnQsICpuZXdTdWJmcmFtZSwgaGl0VGVzdFJlc3VsdCk7CiAgICAgfQogCiAg
ICAgaWYgKCFuZXdTdWJmcmFtZSB8fCBtb3VzZUV2ZW50LnNjcm9sbGJhcigpKSB7CkBAIC0yMTQ4
LDEwICsyMTUwLDEwIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVhc2VFdmVu
dChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIHBsYXRmb3JtTW91CiAKICAgICBjb25zdGV4cHIg
T3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpSZXF1ZXN0VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RS
ZXF1ZXN0OjpSZWxlYXNlLCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dD
b250ZW50IH07CiAgICAgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyBtb3VzZUV2ZW50ID0g
cHJlcGFyZU1vdXNlRXZlbnQoaGl0VHlwZSwgcGxhdGZvcm1Nb3VzZUV2ZW50KTsKLSAgICBGcmFt
ZSogc3ViZnJhbWUgPSBtX2NhcHR1cmluZ01vdXNlRXZlbnRzRWxlbWVudC5nZXQoKSA/IHN1YmZy
YW1lRm9yVGFyZ2V0Tm9kZShtX2NhcHR1cmluZ01vdXNlRXZlbnRzRWxlbWVudC5nZXQoKSkgOiBz
dWJmcmFtZUZvckhpdFRlc3RSZXN1bHQobW91c2VFdmVudCk7CisgICAgUmVmUHRyPEZyYW1lPiBz
dWJmcmFtZSA9IG1fY2FwdHVyaW5nTW91c2VFdmVudHNFbGVtZW50LmdldCgpID8gc3ViZnJhbWVG
b3JUYXJnZXROb2RlKG1fY2FwdHVyaW5nTW91c2VFdmVudHNFbGVtZW50LmdldCgpKSA6IHN1YmZy
YW1lRm9ySGl0VGVzdFJlc3VsdChtb3VzZUV2ZW50KTsKICAgICBpZiAobV9ldmVudEhhbmRsZXJX
aWxsUmVzZXRDYXB0dXJpbmdNb3VzZUV2ZW50c0VsZW1lbnQpCiAgICAgICAgIG1fY2FwdHVyaW5n
TW91c2VFdmVudHNFbGVtZW50ID0gbnVsbHB0cjsKLSAgICBpZiAoc3ViZnJhbWUgJiYgcGFzc01v
dXNlUmVsZWFzZUV2ZW50VG9TdWJmcmFtZShtb3VzZUV2ZW50LCBzdWJmcmFtZSkpCisgICAgaWYg
KHN1YmZyYW1lICYmIHBhc3NNb3VzZVJlbGVhc2VFdmVudFRvU3ViZnJhbWUobW91c2VFdmVudCwg
KnN1YmZyYW1lKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBib29sIHN3YWxsb3dNb3Vz
ZVVwRXZlbnQgPSAhZGlzcGF0Y2hNb3VzZUV2ZW50KGV2ZW50TmFtZXMoKS5tb3VzZXVwRXZlbnQs
IG1vdXNlRXZlbnQudGFyZ2V0Tm9kZSgpLCB0cnVlLCBtX2NsaWNrQ291bnQsIHBsYXRmb3JtTW91
c2VFdmVudCwgZmFsc2UpOwpAQCAtNDA1MCwxMiArNDA1MiwxMiBAQCB2b2lkIEV2ZW50SGFuZGxl
cjo6c2V0RnJhbWVXYXNTY3JvbGxlZEJ5VXNlcigpCiAgICAgICAgIHYtPnNldFdhc1Njcm9sbGVk
QnlVc2VyKHRydWUpOwogfQogCi1ib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUHJlc3NFdmVu
dFRvU2Nyb2xsYmFyKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIG1vdXNlRXZlbnQsIFNj
cm9sbGJhciogc2Nyb2xsYmFyKQorYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NNb3VzZVByZXNzRXZl
bnRUb1Njcm9sbGJhcihNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBtb3VzZUV2ZW50QW5k
UmVzdWx0LCBTY3JvbGxiYXIqIHNjcm9sbGJhcikKIHsKICAgICBpZiAoIXNjcm9sbGJhciB8fCAh
c2Nyb2xsYmFyLT5lbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBzZXRGcmFt
ZVdhc1Njcm9sbGVkQnlVc2VyKCk7Ci0gICAgcmV0dXJuIHNjcm9sbGJhci0+bW91c2VEb3duKG1v
dXNlRXZlbnQuZXZlbnQoKSk7CisgICAgcmV0dXJuIHNjcm9sbGJhci0+bW91c2VEb3duKG1vdXNl
RXZlbnRBbmRSZXN1bHQuZXZlbnQoKSk7CiB9CiAKIC8vIElmIHNjcm9sbGJhciAodW5kZXIgbW91
c2UpIGlzIGRpZmZlcmVudCBmcm9tIGxhc3QsIHNlbmQgYSBtb3VzZSBleGl0ZWQuCkBAIC00MzU2
LDE1ICs0MzU4LDE1IEBAIE9wdGlvblNldDxQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcj4gRXZlbnRI
YW5kbGVyOjphY2Nlc3NLZXlNb2RpZmllcnMoKQogICAgIHJldHVybiBQbGF0Zm9ybUV2ZW50OjpN
b2RpZmllcjo6QWx0S2V5OwogfQogCi1ib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUHJlc3NF
dmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgbWV2LCBGcmFtZSog
c3ViZnJhbWUpCitib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUHJlc3NFdmVudFRvU3ViZnJh
bWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgbW91c2VFdmVudEFuZFJlc3VsdCwgRnJh
bWUmIHN1YmZyYW1lKQogewotICAgIHN1YmZyYW1lLT5ldmVudEhhbmRsZXIoKS5oYW5kbGVNb3Vz
ZVByZXNzRXZlbnQobWV2LmV2ZW50KCkpOworICAgIHN1YmZyYW1lLmV2ZW50SGFuZGxlcigpLmhh
bmRsZU1vdXNlUHJlc3NFdmVudChtb3VzZUV2ZW50QW5kUmVzdWx0LmV2ZW50KCkpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUmVsZWFzZUV2ZW50
VG9TdWJmcmFtZShNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBtZXYsIEZyYW1lKiBzdWJm
cmFtZSkKK2Jvb2wgRXZlbnRIYW5kbGVyOjpwYXNzTW91c2VSZWxlYXNlRXZlbnRUb1N1YmZyYW1l
KE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIG1vdXNlRXZlbnRBbmRSZXN1bHQsIEZyYW1l
JiBzdWJmcmFtZSkKIHsKLSAgICBzdWJmcmFtZS0+ZXZlbnRIYW5kbGVyKCkuaGFuZGxlTW91c2VS
ZWxlYXNlRXZlbnQobWV2LmV2ZW50KCkpOworICAgIHN1YmZyYW1lLmV2ZW50SGFuZGxlcigpLmhh
bmRsZU1vdXNlUmVsZWFzZUV2ZW50KG1vdXNlRXZlbnRBbmRSZXN1bHQuZXZlbnQoKSk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKQEAgLTQzODksNyArNDM5MSw2IEBAIGJvb2wgRXZlbnRIYW5kbGVy
OjpwYXNzV2lkZ2V0TW91c2VEb3duRXZlbnRUb1dpZGdldChSZW5kZXJXaWRnZXQqIHJlbmRlcldp
ZGdldCkKIAogYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NXaWRnZXRNb3VzZURvd25FdmVudFRvV2lk
Z2V0KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50KQogewotICAgIC8v
IEZpZ3VyZSBvdXQgd2hpY2ggdmlldyB0byBzZW5kIHRoZSBldmVudCB0by4KICAgICBSZW5kZXJP
YmplY3QqIHRhcmdldCA9IGV2ZW50LnRhcmdldE5vZGUoKSA/IGV2ZW50LnRhcmdldE5vZGUoKS0+
cmVuZGVyZXIoKSA6IG51bGxwdHI7CiAgICAgaWYgKCFpczxSZW5kZXJXaWRnZXQ+KHRhcmdldCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQ0MTYsOSArNDQxNyw5IEBAIGJvb2wgRXZlbnRI
YW5kbGVyOjpldmVudEFjdGl2YXRlZFZpZXcoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgY29u
c3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzTW91c2VN
b3ZlRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIG1ldiwgRnJh
bWUqIHN1YmZyYW1lLCBIaXRUZXN0UmVzdWx0KiBob3ZlcmVkTm9kZSkKK2Jvb2wgRXZlbnRIYW5k
bGVyOjpwYXNzTW91c2VNb3ZlRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJl
c3VsdHMmIG1vdXNlRXZlbnRBbmRSZXN1bHQsIEZyYW1lJiBzdWJmcmFtZSwgSGl0VGVzdFJlc3Vs
dCogcmVzdWx0KQogewotICAgIHN1YmZyYW1lLT5ldmVudEhhbmRsZXIoKS5oYW5kbGVNb3VzZU1v
dmVFdmVudChtZXYuZXZlbnQoKSwgaG92ZXJlZE5vZGUpOworICAgIHN1YmZyYW1lLmV2ZW50SGFu
ZGxlcigpLmhhbmRsZU1vdXNlTW92ZUV2ZW50KG1vdXNlRXZlbnRBbmRSZXN1bHQuZXZlbnQoKSwg
cmVzdWx0KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KICNlbmRpZiAvLyAhUExBVEZPUk0oQ09DT0Ep
ICYmICFQTEFURk9STShXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAppbmRleCBiYjAx
NGM2YTgzYThlNDAxYzRkMDlhNDZhYjdhNGQyYTFhOWRlNzY1Li41YjQ2NDQwZTI4YTE1MzZlN2U5
NmIyZjcxOWMyZGY0ZDk4OWE3NjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKQEAg
LTE4Nyw4ICsxODcsOCBAQCBwdWJsaWM6CiAgICAgSW50UG9pbnQgdGFyZ2V0UG9zaXRpb25Jbldp
bmRvd0ZvclNlbGVjdGlvbkF1dG9zY3JvbGwoKSBjb25zdDsKICAgICBib29sIHNob3VsZFVwZGF0
ZUF1dG9zY3JvbGwoKTsKIAotICAgIHN0YXRpYyBGcmFtZSogc3ViZnJhbWVGb3JUYXJnZXROb2Rl
KE5vZGUqKTsKLSAgICBzdGF0aWMgRnJhbWUqIHN1YmZyYW1lRm9ySGl0VGVzdFJlc3VsdChjb25z
dCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJik7CisgICAgc3RhdGljIFJlZlB0cjxGcmFt
ZT4gc3ViZnJhbWVGb3JUYXJnZXROb2RlKE5vZGUqKTsKKyAgICBzdGF0aWMgUmVmUHRyPEZyYW1l
PiBzdWJmcmFtZUZvckhpdFRlc3RSZXN1bHQoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVz
dWx0cyYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzY3JvbGxPdmVyZmxvdyhTY3JvbGxE
aXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5LCBOb2RlKiBzdGFydGluZ05vZGUgPSBudWxscHRy
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNjcm9sbFJlY3Vyc2l2ZWx5KFNjcm9sbERpcmVj
dGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHksIE5vZGUqIHN0YXJ0aW5nTm9kZSA9IG51bGxwdHIpOwpA
QCAtMjAzLDcgKzIwMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvc3RNb3VzZUNhcHR1cmUoKTsK
IAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFuZGxlTW91c2VQcmVzc0V2ZW50KGNvbnN0IFBs
YXRmb3JtTW91c2VFdmVudCYpOwotICAgIGJvb2wgaGFuZGxlTW91c2VNb3ZlRXZlbnQoY29uc3Qg
UGxhdGZvcm1Nb3VzZUV2ZW50JiwgSGl0VGVzdFJlc3VsdCogaG92ZXJlZE5vZGUgPSBudWxscHRy
LCBib29sIG9ubHlVcGRhdGVTY3JvbGxiYXJzID0gZmFsc2UpOworICAgIGJvb2wgaGFuZGxlTW91
c2VNb3ZlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiwgSGl0VGVzdFJlc3VsdCogPSBu
dWxscHRyLCBib29sIG9ubHlVcGRhdGVTY3JvbGxiYXJzID0gZmFsc2UpOwogICAgIFdFQkNPUkVf
RVhQT1JUIGJvb2wgaGFuZGxlTW91c2VSZWxlYXNlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2
ZW50Jik7CiAgICAgYm9vbCBoYW5kbGVNb3VzZUZvcmNlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYW5kbGVXaGVlbEV2ZW50KGNvbnN0
IFBsYXRmb3JtV2hlZWxFdmVudCYpOwpAQCAtNDMwLDExICs0MzAsMTEgQEAgcHJpdmF0ZToKICAg
ICAKICAgICBib29sIG1vdXNlTW92ZW1lbnRFeGNlZWRzVGhyZXNob2xkKGNvbnN0IEZsb2F0UG9p
bnQmLCBpbnQgcG9pbnRzVGhyZXNob2xkKSBjb25zdDsKIAotICAgIGJvb2wgcGFzc01vdXNlUHJl
c3NFdmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYsIEZyYW1lKiBz
dWJmcmFtZSk7Ci0gICAgYm9vbCBwYXNzTW91c2VNb3ZlRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZl
bnRXaXRoSGl0VGVzdFJlc3VsdHMmLCBGcmFtZSogc3ViZnJhbWUsIEhpdFRlc3RSZXN1bHQqIGhv
dmVyZWROb2RlID0gbnVsbHB0cik7Ci0gICAgYm9vbCBwYXNzTW91c2VSZWxlYXNlRXZlbnRUb1N1
YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmLCBGcmFtZSogc3ViZnJhbWUpOwor
ICAgIGJvb2wgcGFzc01vdXNlUHJlc3NFdmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRU
ZXN0UmVzdWx0cyYsIEZyYW1lJik7CisgICAgYm9vbCBwYXNzTW91c2VNb3ZlRXZlbnRUb1N1YmZy
YW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmLCBGcmFtZSYsIEhpdFRlc3RSZXN1bHQq
ID0gbnVsbHB0cik7CisgICAgYm9vbCBwYXNzTW91c2VSZWxlYXNlRXZlbnRUb1N1YmZyYW1lKE1v
dXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmLCBGcmFtZSYpOwogCi0gICAgYm9vbCBwYXNzU3Vi
ZnJhbWVFdmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYsIEZyYW1l
KiBzdWJmcmFtZSwgSGl0VGVzdFJlc3VsdCogaG92ZXJlZE5vZGUgPSBudWxscHRyKTsKKyAgICBi
b29sIHBhc3NTdWJmcmFtZUV2ZW50VG9TdWJmcmFtZShNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1
bHRzJiwgRnJhbWUmLCBIaXRUZXN0UmVzdWx0KiA9IG51bGxwdHIpOwogCiAgICAgYm9vbCBwYXNz
TW91c2VQcmVzc0V2ZW50VG9TY3JvbGxiYXIoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYs
IFNjcm9sbGJhciopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9FdmVu
dEhhbmRsZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9FdmVudEhhbmRsZXJJT1Mu
bW0KaW5kZXggMjliZGZjYzk2NDA5ZjM2MjQyYTBiNDIyOWFiNGExYWZhMjRmOTdhOC4uZTc3MzJj
YTI1NDJhMzc2MWM0NDdiNDVlZWEyOGM5NDg2Y2JhMWU1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9pb3MvRXZlbnRIYW5kbGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvaW9zL0V2ZW50SGFuZGxlcklPUy5tbQpAQCAtMzY0LDcgKzM2NCw3IEBAIGJvb2wgRXZlbnRI
YW5kbGVyOjpldmVudExvb3BIYW5kbGVNb3VzZVVwKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVz
dFJlc3VsdHMmKQogICAgIHJldHVybiB0cnVlOwogfQogICAgIAotYm9vbCBFdmVudEhhbmRsZXI6
OnBhc3NTdWJmcmFtZUV2ZW50VG9TdWJmcmFtZShNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRz
JiBldmVudCwgRnJhbWUqIHN1YmZyYW1lLCBIaXRUZXN0UmVzdWx0KiBob3ZlcmVkTm9kZSkKK2Jv
b2wgRXZlbnRIYW5kbGVyOjpwYXNzU3ViZnJhbWVFdmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdp
dGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQsIEZyYW1lJiBzdWJmcmFtZSwgSGl0VGVzdFJlc3VsdCog
aGl0VGVzdFJlc3VsdCkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKQEAg
LTM3Niw3ICszNzYsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6cGFzc1N1YmZyYW1lRXZlbnRUb1N1
YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZQogICAgICAgICAvLyBjdXJy
ZW50TlNFdmVudCgpIHRoYXQgbW91c2VNb3ZlZCgpIGRvZXMgd291bGQgaGF2ZSBubyBlZmZlY3Qu
CiAgICAgICAgIEFTU0VSVCghbV9zZW5kaW5nRXZlbnRUb1N1YnZpZXcpOwogICAgICAgICBtX3Nl
bmRpbmdFdmVudFRvU3VidmlldyA9IHRydWU7Ci0gICAgICAgIHN1YmZyYW1lLT5ldmVudEhhbmRs
ZXIoKS5oYW5kbGVNb3VzZU1vdmVFdmVudChjdXJyZW50UGxhdGZvcm1Nb3VzZUV2ZW50KCksIGhv
dmVyZWROb2RlKTsKKyAgICAgICAgc3ViZnJhbWUuZXZlbnRIYW5kbGVyKCkuaGFuZGxlTW91c2VN
b3ZlRXZlbnQoY3VycmVudFBsYXRmb3JtTW91c2VFdmVudCgpLCBoaXRUZXN0UmVzdWx0KTsKICAg
ICAgICAgbV9zZW5kaW5nRXZlbnRUb1N1YnZpZXcgPSBmYWxzZTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQpAQCAtNDAwLDcgKzQwMCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzU3Vi
ZnJhbWVFdmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIEFTU0VSVCghbV9zZW5kaW5nRXZlbnRU
b1N1YnZpZXcpOwogICAgICAgICBtX3NlbmRpbmdFdmVudFRvU3VidmlldyA9IHRydWU7Ci0gICAg
ICAgIHN1YmZyYW1lLT5ldmVudEhhbmRsZXIoKS5oYW5kbGVNb3VzZVJlbGVhc2VFdmVudChjdXJy
ZW50UGxhdGZvcm1Nb3VzZUV2ZW50KCkpOworICAgICAgICBzdWJmcmFtZS5ldmVudEhhbmRsZXIo
KS5oYW5kbGVNb3VzZVJlbGVhc2VFdmVudChjdXJyZW50UGxhdGZvcm1Nb3VzZUV2ZW50KCkpOwog
ICAgICAgICBtX3NlbmRpbmdFdmVudFRvU3VidmlldyA9IGZhbHNlOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CkBAIC01MzMsMzUgKzUzMywzNSBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZGlz
cGF0Y2hTeW50aGV0aWNNb3VzZU1vdmUoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBwbGF0Zm9y
bQogICAgIG1vdXNlTW92ZWQocGxhdGZvcm1Nb3VzZUV2ZW50KTsKIH0KIAotYm9vbCBFdmVudEhh
bmRsZXI6OnBhc3NNb3VzZVByZXNzRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVz
dFJlc3VsdHMmIG1ldiwgRnJhbWUqIHN1YmZyYW1lKQorYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NN
b3VzZVByZXNzRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIG1v
dXNlRXZlbnRBbmRSZXN1bHQsIEZyYW1lJiBzdWJmcmFtZSkKIHsKICAgICAvLyBXZWJLaXQxIGNv
ZGUgcGF0aC4KICAgICBpZiAoZnJhbWVIYXNQbGF0Zm9ybVdpZGdldChtX2ZyYW1lKSkKLSAgICAg
ICAgcmV0dXJuIHBhc3NTdWJmcmFtZUV2ZW50VG9TdWJmcmFtZShtZXYsIHN1YmZyYW1lKTsKKyAg
ICAgICAgcmV0dXJuIHBhc3NTdWJmcmFtZUV2ZW50VG9TdWJmcmFtZShtb3VzZUV2ZW50QW5kUmVz
dWx0LCBzdWJmcmFtZSk7CiAKICAgICAvLyBXZWJLaXQyIGNvZGUgcGF0aC4KLSAgICBzdWJmcmFt
ZS0+ZXZlbnRIYW5kbGVyKCkuaGFuZGxlTW91c2VQcmVzc0V2ZW50KG1ldi5ldmVudCgpKTsKKyAg
ICBzdWJmcmFtZS5ldmVudEhhbmRsZXIoKS5oYW5kbGVNb3VzZVByZXNzRXZlbnQobW91c2VFdmVu
dEFuZFJlc3VsdC5ldmVudCgpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBFdmVudEhh
bmRsZXI6OnBhc3NNb3VzZU1vdmVFdmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0
UmVzdWx0cyYgbWV2LCBGcmFtZSogc3ViZnJhbWUsIEhpdFRlc3RSZXN1bHQqIGhvdmVyZWROb2Rl
KQorYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NNb3VzZU1vdmVFdmVudFRvU3ViZnJhbWUoTW91c2VF
dmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgbW91c2VFdmVudEFuZFJlc3VsdCwgRnJhbWUmIHN1YmZy
YW1lLCBIaXRUZXN0UmVzdWx0KiBoaXRUZXN0UmVzdWx0KQogewogICAgIC8vIFdlYktpdDEgY29k
ZSBwYXRoLgogICAgIGlmIChmcmFtZUhhc1BsYXRmb3JtV2lkZ2V0KG1fZnJhbWUpKQotICAgICAg
ICByZXR1cm4gcGFzc1N1YmZyYW1lRXZlbnRUb1N1YmZyYW1lKG1ldiwgc3ViZnJhbWUsIGhvdmVy
ZWROb2RlKTsKKyAgICAgICAgcmV0dXJuIHBhc3NTdWJmcmFtZUV2ZW50VG9TdWJmcmFtZShtb3Vz
ZUV2ZW50QW5kUmVzdWx0LCBzdWJmcmFtZSwgaGl0VGVzdFJlc3VsdCk7CiAKLSAgICBzdWJmcmFt
ZS0+ZXZlbnRIYW5kbGVyKCkuaGFuZGxlTW91c2VNb3ZlRXZlbnQobWV2LmV2ZW50KCksIGhvdmVy
ZWROb2RlKTsKKyAgICBzdWJmcmFtZS5ldmVudEhhbmRsZXIoKS5oYW5kbGVNb3VzZU1vdmVFdmVu
dChtb3VzZUV2ZW50QW5kUmVzdWx0LmV2ZW50KCksIGhpdFRlc3RSZXN1bHQpOwogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUmVsZWFzZUV2ZW50VG9T
dWJmcmFtZShNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBtZXYsIEZyYW1lKiBzdWJmcmFt
ZSkKK2Jvb2wgRXZlbnRIYW5kbGVyOjpwYXNzTW91c2VSZWxlYXNlRXZlbnRUb1N1YmZyYW1lKE1v
dXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIG1vdXNlRXZlbnRBbmRSZXN1bHQsIEZyYW1lJiBz
dWJmcmFtZSkKIHsKICAgICAvLyBXZWJLaXQxIGNvZGUgcGF0aC4KICAgICBpZiAoZnJhbWVIYXNQ
bGF0Zm9ybVdpZGdldChtX2ZyYW1lKSkKLSAgICAgICAgcmV0dXJuIHBhc3NTdWJmcmFtZUV2ZW50
VG9TdWJmcmFtZShtZXYsIHN1YmZyYW1lKTsKKyAgICAgICAgcmV0dXJuIHBhc3NTdWJmcmFtZUV2
ZW50VG9TdWJmcmFtZShtb3VzZUV2ZW50QW5kUmVzdWx0LCBzdWJmcmFtZSk7CiAKICAgICAvLyBX
ZWJLaXQyIGNvZGUgcGF0aC4KLSAgICBzdWJmcmFtZS0+ZXZlbnRIYW5kbGVyKCkuaGFuZGxlTW91
c2VSZWxlYXNlRXZlbnQobWV2LmV2ZW50KCkpOworICAgIHN1YmZyYW1lLmV2ZW50SGFuZGxlcigp
LmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KG1vdXNlRXZlbnRBbmRSZXN1bHQuZXZlbnQoKSk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTcxMiw3ICs3MTIsNyBAQCBib29sIEV2ZW50SGFuZGxl
cjo6dHJ5VG9CZWdpbkRyYWdBdFBvaW50KGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwg
Y29uc3QgSQogICAgIGF1dG8gZG9jdW1lbnRQb2ludCA9IHByb3RlY3RlZEZyYW1lLT52aWV3KCkg
PyBwcm90ZWN0ZWRGcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHN5bnRoZXRpY01vdXNl
TW92ZUV2ZW50LnBvc2l0aW9uKCkpIDogc3ludGhldGljTW91c2VNb3ZlRXZlbnQucG9zaXRpb24o
KTsKICAgICBhdXRvIGhpdFRlc3RlZE1vdXNlRXZlbnQgPSBkb2N1bWVudC0+cHJlcGFyZU1vdXNl
RXZlbnQoaGl0VHlwZSwgZG9jdW1lbnRQb2ludCwgc3ludGhldGljTW91c2VNb3ZlRXZlbnQpOwog
Ci0gICAgUmVmUHRyPEZyYW1lPiBzdWJmcmFtZSA9IHN1YmZyYW1lRm9ySGl0VGVzdFJlc3VsdCho
aXRUZXN0ZWRNb3VzZUV2ZW50KTsKKyAgICBhdXRvIHN1YmZyYW1lID0gc3ViZnJhbWVGb3JIaXRU
ZXN0UmVzdWx0KGhpdFRlc3RlZE1vdXNlRXZlbnQpOwogICAgIGlmIChzdWJmcmFtZSAmJiBzdWJm
cmFtZS0+ZXZlbnRIYW5kbGVyKCkudHJ5VG9CZWdpbkRyYWdBdFBvaW50KGFkanVzdGVkQ2xpZW50
UG9zaXRpb24sIGFkanVzdGVkR2xvYmFsUG9zaXRpb24pKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCmluZGV4IDc2N2Rk
MmE2YTJmMjBiN2QwYjkxZmZjMzZlMTFhYmZmMmUzYjhkMmUuLjdmZGQ3NDI4ZDllOWVmZGRjM2Yz
NTNlZDU0ZjI4YWM2YjRhNDFiYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFj
L0V2ZW50SGFuZGxlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhh
bmRsZXJNYWMubW0KQEAgLTM3NSw3ICszNzUsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6ZXZlbnRM
b29wSGFuZGxlTW91c2VVcChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJikKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KICAgICAKLWJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzU3ViZnJhbWVF
dmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQsIEZyYW1l
KiBzdWJmcmFtZSwgSGl0VGVzdFJlc3VsdCogaG92ZXJlZE5vZGUpCitib29sIEV2ZW50SGFuZGxl
cjo6cGFzc1N1YmZyYW1lRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3Vs
dHMmIGV2ZW50LCBGcmFtZSYgc3ViZnJhbWUsIEhpdFRlc3RSZXN1bHQqIGhpdFRlc3RSZXN1bHQp
CiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCkBAIC0zODgsNyArMzg4LDcg
QEAgYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NTdWJmcmFtZUV2ZW50VG9TdWJmcmFtZShNb3VzZUV2
ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmUKICAgICAgICAgaWYgKCFtX21vdXNlRG93bldhc0lu
U3ViZnJhbWUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAjaWYgRU5BQkxFKERSQUdfU1VQ
UE9SVCkKLSAgICAgICAgaWYgKHN1YmZyYW1lLT5wYWdlKCktPmRyYWdDb250cm9sbGVyKCkuZGlk
SW5pdGlhdGVEcmFnKCkpCisgICAgICAgIGlmIChzdWJmcmFtZS5wYWdlKCktPmRyYWdDb250cm9s
bGVyKCkuZGlkSW5pdGlhdGVEcmFnKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5k
aWYKICAgICBjYXNlIE5TRXZlbnRUeXBlTW91c2VNb3ZlZDoKQEAgLTM5Nyw3ICszOTcsNyBAQCBi
b29sIEV2ZW50SGFuZGxlcjo6cGFzc1N1YmZyYW1lRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRX
aXRoSGl0VGVzdFJlc3VsdHMmIGV2ZQogICAgICAgICAvLyBjdXJyZW50TlNFdmVudCgpIHRoYXQg
bW91c2VNb3ZlZCgpIGRvZXMgd291bGQgaGF2ZSBubyBlZmZlY3QuCiAgICAgICAgIEFTU0VSVCgh
bV9zZW5kaW5nRXZlbnRUb1N1YnZpZXcpOwogICAgICAgICBtX3NlbmRpbmdFdmVudFRvU3Vidmll
dyA9IHRydWU7Ci0gICAgICAgIHN1YmZyYW1lLT5ldmVudEhhbmRsZXIoKS5oYW5kbGVNb3VzZU1v
dmVFdmVudChjdXJyZW50UGxhdGZvcm1Nb3VzZUV2ZW50KCksIGhvdmVyZWROb2RlKTsKKyAgICAg
ICAgc3ViZnJhbWUuZXZlbnRIYW5kbGVyKCkuaGFuZGxlTW91c2VNb3ZlRXZlbnQoY3VycmVudFBs
YXRmb3JtTW91c2VFdmVudCgpLCBoaXRUZXN0UmVzdWx0KTsKICAgICAgICAgbV9zZW5kaW5nRXZl
bnRUb1N1YnZpZXcgPSBmYWxzZTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIApAQCAt
NDIxLDcgKzQyMSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzU3ViZnJhbWVFdmVudFRvU3Vi
ZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIEFTU0VSVCghbV9zZW5kaW5nRXZlbnRUb1N1YnZpZXcpOwogICAg
ICAgICBtX3NlbmRpbmdFdmVudFRvU3VidmlldyA9IHRydWU7Ci0gICAgICAgIHN1YmZyYW1lLT5l
dmVudEhhbmRsZXIoKS5oYW5kbGVNb3VzZVJlbGVhc2VFdmVudChjdXJyZW50UGxhdGZvcm1Nb3Vz
ZUV2ZW50KCkpOworICAgICAgICBzdWJmcmFtZS5ldmVudEhhbmRsZXIoKS5oYW5kbGVNb3VzZVJl
bGVhc2VFdmVudChjdXJyZW50UGxhdGZvcm1Nb3VzZUV2ZW50KCkpOwogICAgICAgICBtX3NlbmRp
bmdFdmVudFRvU3VidmlldyA9IGZhbHNlOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBA
IC02ODMsMjIgKzY4MywyMiBAQCBzdGF0aWMgYm9vbCBmcmFtZUhhc1BsYXRmb3JtV2lkZ2V0KGNv
bnN0IEZyYW1lJiBmcmFtZSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgRXZlbnRIYW5k
bGVyOjpwYXNzTW91c2VQcmVzc0V2ZW50VG9TdWJmcmFtZShNb3VzZUV2ZW50V2l0aEhpdFRlc3RS
ZXN1bHRzJiBtZXYsIEZyYW1lKiBzdWJmcmFtZSkKK2Jvb2wgRXZlbnRIYW5kbGVyOjpwYXNzTW91
c2VQcmVzc0V2ZW50VG9TdWJmcmFtZShNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBtb3Vz
ZUV2ZW50QW5kUmVzdWx0LCBGcmFtZSYgc3ViZnJhbWUpCiB7CiAgICAgLy8gV2ViS2l0MSBjb2Rl
IHBhdGguCiAgICAgaWYgKGZyYW1lSGFzUGxhdGZvcm1XaWRnZXQobV9mcmFtZSkpCi0gICAgICAg
IHJldHVybiBwYXNzU3ViZnJhbWVFdmVudFRvU3ViZnJhbWUobWV2LCBzdWJmcmFtZSk7CisgICAg
ICAgIHJldHVybiBwYXNzU3ViZnJhbWVFdmVudFRvU3ViZnJhbWUobW91c2VFdmVudEFuZFJlc3Vs
dCwgc3ViZnJhbWUpOwogCiAgICAgLy8gV2ViS2l0MiBjb2RlIHBhdGguCi0gICAgc3ViZnJhbWUt
PmV2ZW50SGFuZGxlcigpLmhhbmRsZU1vdXNlUHJlc3NFdmVudChtZXYuZXZlbnQoKSk7CisgICAg
c3ViZnJhbWUuZXZlbnRIYW5kbGVyKCkuaGFuZGxlTW91c2VQcmVzc0V2ZW50KG1vdXNlRXZlbnRB
bmRSZXN1bHQuZXZlbnQoKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgRXZlbnRIYW5k
bGVyOjpwYXNzTW91c2VNb3ZlRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJl
c3VsdHMmIG1ldiwgRnJhbWUqIHN1YmZyYW1lLCBIaXRUZXN0UmVzdWx0KiBob3ZlcmVkTm9kZSkK
K2Jvb2wgRXZlbnRIYW5kbGVyOjpwYXNzTW91c2VNb3ZlRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZl
bnRXaXRoSGl0VGVzdFJlc3VsdHMmIG1vdXNlRXZlbnRBbmRSZXN1bHQsIEZyYW1lJiBzdWJmcmFt
ZSwgSGl0VGVzdFJlc3VsdCogaGl0VGVzdFJlc3VsdCkKIHsKICAgICAvLyBXZWJLaXQxIGNvZGUg
cGF0aC4KICAgICBpZiAoZnJhbWVIYXNQbGF0Zm9ybVdpZGdldChtX2ZyYW1lKSkKLSAgICAgICAg
cmV0dXJuIHBhc3NTdWJmcmFtZUV2ZW50VG9TdWJmcmFtZShtZXYsIHN1YmZyYW1lLCBob3ZlcmVk
Tm9kZSk7CisgICAgICAgIHJldHVybiBwYXNzU3ViZnJhbWVFdmVudFRvU3ViZnJhbWUobW91c2VF
dmVudEFuZFJlc3VsdCwgc3ViZnJhbWUsIGhpdFRlc3RSZXN1bHQpOwogCiAjaWYgRU5BQkxFKERS
QUdfU1VQUE9SVCkKICAgICAvLyBXZWJLaXQyIGNvZGUgcGF0aC4KQEAgLTcwNiwxOCArNzA2LDE4
IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzTW91c2VNb3ZlRXZlbnRUb1N1YmZyYW1lKE1vdXNl
RXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIG1lCiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRp
ZgogCi0gICAgc3ViZnJhbWUtPmV2ZW50SGFuZGxlcigpLmhhbmRsZU1vdXNlTW92ZUV2ZW50KG1l
di5ldmVudCgpLCBob3ZlcmVkTm9kZSk7CisgICAgc3ViZnJhbWUuZXZlbnRIYW5kbGVyKCkuaGFu
ZGxlTW91c2VNb3ZlRXZlbnQobW91c2VFdmVudEFuZFJlc3VsdC5ldmVudCgpLCBoaXRUZXN0UmVz
dWx0KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NNb3Vz
ZVJlbGVhc2VFdmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgbWV2
LCBGcmFtZSogc3ViZnJhbWUpCitib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUmVsZWFzZUV2
ZW50VG9TdWJmcmFtZShNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBtb3VzZUV2ZW50QW5k
UmVzdWx0LCBGcmFtZSYgc3ViZnJhbWUpCiB7CiAgICAgLy8gV2ViS2l0MSBjb2RlIHBhdGguCiAg
ICAgaWYgKGZyYW1lSGFzUGxhdGZvcm1XaWRnZXQobV9mcmFtZSkpCi0gICAgICAgIHJldHVybiBw
YXNzU3ViZnJhbWVFdmVudFRvU3ViZnJhbWUobWV2LCBzdWJmcmFtZSk7CisgICAgICAgIHJldHVy
biBwYXNzU3ViZnJhbWVFdmVudFRvU3ViZnJhbWUobW91c2VFdmVudEFuZFJlc3VsdCwgc3ViZnJh
bWUpOwogCiAgICAgLy8gV2ViS2l0MiBjb2RlIHBhdGguCi0gICAgc3ViZnJhbWUtPmV2ZW50SGFu
ZGxlcigpLmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KG1ldi5ldmVudCgpKTsKKyAgICBzdWJmcmFt
ZS5ldmVudEhhbmRsZXIoKS5oYW5kbGVNb3VzZVJlbGVhc2VFdmVudChtb3VzZUV2ZW50QW5kUmVz
dWx0LmV2ZW50KCkpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3dpbi9FdmVudEhhbmRsZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS93aW4vRXZlbnRIYW5kbGVyV2luLmNwcAppbmRleCAwOTA5NzEwYzViMzhjYTJiZTQzMDgxMjg1
ODNmZjNhOTYwYTBiZDNiLi4yODNhNjAwYjQ2Yjk2NGJhOWE2ZDRiNDg5YzIyMGJmOWQ1MmU0MzA1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9FdmVudEhhbmRsZXJXaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0V2ZW50SGFuZGxlcldpbi5jcHAKQEAgLTMx
LDE0ICszMSwxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgRXZlbnRIYW5kbGVy
OjpwYXNzTW91c2VNb3ZlRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3Vs
dHMmIG1ldiwgRnJhbWUqIHN1YmZyYW1lLCBIaXRUZXN0UmVzdWx0KiBob3ZlcmVkTm9kZSkKK2Jv
b2wgRXZlbnRIYW5kbGVyOjpwYXNzTW91c2VNb3ZlRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRX
aXRoSGl0VGVzdFJlc3VsdHMmIG1vdXNlRXZlbnRBbmRSZXN1bHQsIEZyYW1lJiBzdWJmcmFtZSwg
SGl0VGVzdFJlc3VsdCogaGl0VGVzdFJlc3VsdCkKIHsKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JU
KQogICAgIGlmIChtX21vdXNlRG93bk1heVN0YXJ0RHJhZyAmJiAhbV9tb3VzZURvd25XYXNJblN1
YmZyYW1lKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIAotICAgIHN1YmZyYW1lLT5l
dmVudEhhbmRsZXIoKS5oYW5kbGVNb3VzZU1vdmVFdmVudChtZXYuZXZlbnQoKSwgaG92ZXJlZE5v
ZGUpOworICAgIHN1YmZyYW1lLmV2ZW50SGFuZGxlcigpLmhhbmRsZU1vdXNlTW92ZUV2ZW50KG1v
dXNlRXZlbnRBbmRSZXN1bHQuZXZlbnQoKSwgaGl0VGVzdFJlc3VsdCk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKaW5kZXggMzMxZDcwMDgwM2Qy
ZTI0MjU3ZTlhMzI2YjM3NWM3MTRjMTQxNjdhZi4uMGQ5M2RhMDc4YjY5MDhjYjRlZTI4MzcwZTA5
MzU2MWI4M2IxNzAyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKQEAgLTE5MTYs
NyArMTkxNiw3IEBAIGJvb2wgV2ViVmlldzo6Z2VzdHVyZU5vdGlmeShXUEFSQU0gd1BhcmFtLCBM
UEFSQU0gbFBhcmFtKQogICAgIGxvZ2ljYWxHZXN0dXJlQmVnaW5Qb2ludC5zY2FsZShpbnZlcnNl
U2NhbGVGYWN0b3IsIGludmVyc2VTY2FsZUZhY3Rvcik7CiAKICAgICBIaXRUZXN0UmVxdWVzdCBy
ZXF1ZXN0IHsgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpSZXF1ZXN0VHlwZT4geyBIaXRUZXN0
UmVxdWVzdDo6UmVhZE9ubHksIEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1VzZXJBZ2VudFNoYWRv
d0NvbnRlbnQgfSB9OwotICAgIGZvciAoRnJhbWUqIGNoaWxkRnJhbWUgPSAmbV9wYWdlLT5tYWlu
RnJhbWUoKTsgY2hpbGRGcmFtZTsgY2hpbGRGcmFtZSA9IEV2ZW50SGFuZGxlcjo6c3ViZnJhbWVG
b3JUYXJnZXROb2RlKG1fZ2VzdHVyZVRhcmdldE5vZGUuZ2V0KCkpKSB7CisgICAgZm9yIChSZWZQ
dHI8RnJhbWU+IGNoaWxkRnJhbWUgPSAmbV9wYWdlLT5tYWluRnJhbWUoKTsgY2hpbGRGcmFtZTsg
Y2hpbGRGcmFtZSA9IEV2ZW50SGFuZGxlcjo6c3ViZnJhbWVGb3JUYXJnZXROb2RlKG1fZ2VzdHVy
ZVRhcmdldE5vZGUuZ2V0KCkpKSB7CiAgICAgICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gY2hp
bGRGcmFtZS0+dmlldygpOwogICAgICAgICBpZiAoIWZyYW1lVmlldykKICAgICAgICAgICAgIGJy
ZWFrOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>