<?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>213418</bug_id>
          
          <creation_ts>2020-06-19 16:44:56 -0700</creation_ts>
          <short_desc>Storage Access API: Add the capability to call the Storage Access API as a quirk, on behalf of websites that should be doing it themselves</short_desc>
          <delta_ts>2024-09-11 23:42:43 -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>WebKit Misc.</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>
          
          <blocked>279581</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="John Wilander">wilander</reporter>
          <assigned_to name="John Wilander">wilander</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>japhet</cc>
    
    <cc>kangil.han</cc>
    
    <cc>sam</cc>
    
    <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>1664608</commentid>
    <comment_count>0</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-06-19 16:44:56 -0700</bug_when>
    <thetext>There are websites and embedded content that should be calling the Storage Access API but currently are not. We should add the capability to call the API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1664609</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-06-19 16:45:24 -0700</bug_when>
    <thetext>&lt;rdar://problem/64549429&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1664610</commentid>
    <comment_count>2</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-06-19 16:45:58 -0700</bug_when>
    <thetext>Correction: We should add the capability to call the API *on their behalf*.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1664642</commentid>
    <comment_count>3</comment_count>
      <attachid>402357</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-06-19 17:24:35 -0700</bug_when>
    <thetext>Created attachment 402357
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1665221</commentid>
    <comment_count>4</comment_count>
      <attachid>402520</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-06-22 16:40:20 -0700</bug_when>
    <thetext>Created attachment 402520
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1665230</commentid>
    <comment_count>5</comment_count>
      <attachid>402520</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-06-22 16:47:37 -0700</bug_when>
    <thetext>Comment on attachment 402520
Patch

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

This seems ok to me.

&gt; Source/WebCore/dom/DocumentStorageAccess.cpp:111
&gt; +    // The existence of a frame and page has been checked in requestStorageAccessQuickCheck().

This might be true now, but it might not be true with future use of this code.  I think it&apos;s a good idea to leave the null checks in place, maybe with assert_not_reached.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1665258</commentid>
    <comment_count>6</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-06-22 18:55:49 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #5)
&gt; Comment on attachment 402520 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=402520&amp;action=review
&gt; 
&gt; This seems ok to me.

Thanks for the review!

&gt; &gt; Source/WebCore/dom/DocumentStorageAccess.cpp:111
&gt; &gt; +    // The existence of a frame and page has been checked in requestStorageAccessQuickCheck().
&gt; 
&gt; This might be true now, but it might not be true with future use of this
&gt; code.  I think it&apos;s a good idea to leave the null checks in place, maybe
&gt; with assert_not_reached.

Right now I RELEASE_ASSERT which should force us to find the problem. Would you prefer an early return with just a debug assert?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1665260</commentid>
    <comment_count>7</comment_count>
      <attachid>402526</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-06-22 19:12:38 -0700</bug_when>
    <thetext>Created attachment 402526
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1665261</commentid>
    <comment_count>8</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-06-22 19:13:25 -0700</bug_when>
    <thetext>Waiting for EWS to make sure I fixed the Windows build issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1665280</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-06-22 21:13:28 -0700</bug_when>
    <thetext>Committed r263383: &lt;https://trac.webkit.org/changeset/263383&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 402526.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672254</commentid>
    <comment_count>10</comment_count>
      <attachid>402526</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-07-16 14:30:43 -0700</bug_when>
    <thetext>Comment on attachment 402526
Patch

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

&gt; Source/WebCore/dom/Element.cpp:366
&gt; +    if (hasClass() &amp;&amp; Quirks::StorageAccessResult::ShouldCancelEvent == document().quirks().triggerOptionalStorageAccessQuirk(eventType, classNames()))
&gt; +        return false;

This is such a weird place to add a quirk.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402357</attachid>
            <date>2020-06-19 17:24:35 -0700</date>
            <delta_ts>2020-06-22 16:40:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213418-20200619172434.patch</filename>
            <type>text/plain</type>
            <size>47675</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzMjk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTg4YmVhOWY0ODFjZjYy
ODRhYzc2YjE5YWMxM2I4ZjRmYWZiNTAyZC4uYjQ5MTZkNjIxMzNhYmZmMjZhYTFjZTJlNjk0OGE3
YTFlNDA5MDg1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDIwLTA2LTE5ICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFN0b3JhZ2UgQWNjZXNz
IEFQSTogQWRkIHRoZSBjYXBhYmlsaXR5IHRvIGNhbGwgdGhlIFN0b3JhZ2UgQWNjZXNzIEFQSSBh
cyBhIHF1aXJrLCBvbiBiZWhhbGYgb2Ygd2Vic2l0ZXMgdGhhdCBzaG91bGQgYmUgZG9pbmcgaXQg
dGhlbXNlbHZlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjEzNDE4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82NDU0OTQyOT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIFRoaXMg
cGF0Y2ggYWRkcyBxdWlya3MgZm9yIHNwZWNpZmljIHdlYnNpdGVzLgorICAgICAgICBUaGUgZ2Vu
ZXJhbCBmdW5jdGlvbmFsaXR5IHRoYXQncyB0b3VjaGVkIGhhcyB0ZXN0cyB1bmRlcgorICAgICAg
ICBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvLgorCisgICAgICAgICogZG9t
L0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aXNUb3BEb2N1bWVudCBj
b25zdCk6CisgICAgICAgICAgICBOZXcgY29udmVuaWVuY2UgZnVuY3Rpb24uCisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6c2V0VXNlckRpZEludGVyYWN0V2l0aFBhZ2UpOgorICAgICAgICAg
ICAgVXNlIG9mIHRoZSBuZXcgY29udmVuaWVuY2UgZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6dXNlckRpZEludGVyYWN0V2l0aFBhZ2UgY29uc3QpOgorICAgICAgICAgICAg
VXNlIG9mIHRoZSBuZXcgY29udmVuaWVuY2UgZnVuY3Rpb24uCisgICAgICAgICogZG9tL0RvY3Vt
ZW50U3RvcmFnZUFjY2Vzcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0b3JhZ2VB
Y2Nlc3M6Omhhc1N0b3JhZ2VBY2Nlc3NRdWlja0NoZWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50U3RvcmFnZUFjY2Vzczo6aGFzU3RvcmFnZUFjY2Vzcyk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6Omhhc1N0b3JhZ2VBY2Nlc3NGb3JEb2N1bWVudFF1aXJr
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50U3RvcmFnZUFjY2Vzczo6cmVxdWVzdFN0b3Jh
Z2VBY2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpyZXF1
ZXN0U3RvcmFnZUFjY2Vzc1F1aWNrQ2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRT
dG9yYWdlQWNjZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc0ZvckRvY3VtZW50UXVpcmspOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2Vz
c0Zvck5vbkRvY3VtZW50UXVpcmspOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdG9yYWdl
QWNjZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1F1aXJrKToKKyAgICAgICAgICAgIFRoZXNlIGZ1
bmN0aW9ucyBhcmUgc3BsaXQgdXAgdG8gYWxsb3cgcXVpcmtzIHRvIGNhbGwgZGlyZWN0bHkgaW50
byB0aGUKKyAgICAgICAgICAgIGltcGxlbWVudGF0aW9uIG9mIHRoZSBTdG9yYWdlIEFjY2VzcyBB
UEkgd2l0aG91dCB0aGUgSmF2YVNjcmlwdAorICAgICAgICAgICAgcHJvbWlzZSB0aGF0IGdvZXMg
d2l0aCB0aGUgd2ViIEFQSS4gSXQgYWxzbyBhbGxvd3MgZm9yIHF1aXJrcyB0byBjYWxsCisgICAg
ICAgICAgICB0aGUgQVBJIHdpdGhvdXQgYW4gaWZyYW1lIGRvY3VtZW50LgorICAgICAgICAqIGRv
bS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuaDoKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpkaXNwYXRjaE1vdXNlRXZlbnQpOgorICAgICAgICAg
ICAgVGhlIHR3byBleGlzdGluZyBxdWlya3MgYXJlIGZvciBjbGljayBldmVudHMuCisgICAgICAg
ICogbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6c2V0RG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6Omhhc0hhZFVzZXJJbnRlcmFjdGlvbiBj
b25zdCk6CisgICAgICAgICAgICBUaGVzZSB0d28gbmV3IGZ1bmN0aW9ucyBhbGxvdyB0aGUgU3Rv
cmFnZSBBY2Nlc3MgQVBJIHF1aXJrcworICAgICAgICAgICAgdG8gc3luY2hyb25vdXNseSBjaGVj
ayBpZiBpdCdzIHdvcnRoIGNhbGxpbmcgdGhlIEFQSSBvciBub3QuCisgICAgICAgICAgICBJZiB0
aGVyZSBoYXMgYmVlbiBubyB1c2VyIGludGVyYWN0aW9uIGZvciB0aGUgcmVxdWVzdGluZworICAg
ICAgICAgICAgZG9tYWluLCB0aGVyZSBpcyBubyBuZWVkIHRvIGNhbGwgdGhlIEFQSS4KKyAgICAg
ICAgKiBwYWdlL1F1aXJrcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpRdWlya3M6OnRyaWdnZXJP
cHRpb25hbFN0b3JhZ2VBY2Nlc3NRdWlyayBjb25zdCk6CisgICAgICAgICAgICBUaGlzIGlzIHRo
ZSBuZXcgcXVpcmtzIGZ1bmN0aW9uLCBoaWRpbmcgdGhlIHNwZWNpZmljcyBvZgorICAgICAgICAg
ICAgY2VydGFpbiBlbGVtZW50cyBjbGlja2VkIGFuZCBmb3Igd2hpY2ggd2Vic2l0ZXMuIEl0IGFs
c28KKyAgICAgICAgICAgIGNhbGxzIHRoZSBTdG9yYWdlIEFjY2VzcyBBUEkuCisgICAgICAgICog
cGFnZS9RdWlya3MuaDoKKwogMjAyMC0wNi0xOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgogCiAgICAgICAgIEF2b2lkIGluaXRpYWxpemluZyBSZW5kZXJUaGVtZSBzaW5nbGV0b24g
dW5uZWNlc3NhcmlseSBpbiB0aGUgVUlQcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJmMjZiYTlhYWY2NGE2
Y2RiZTJkZjU5YThkZDNiMjJhOGIyNGIyOGQuLjQ1MGFhMWRlOTlhZTRiYmZjYmFhY2RmZDdmZjMx
NDgzZjU2ZjE0ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMjAtMDYtMTkgIEpvaG4g
V2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcmFnZSBBY2Nlc3Mg
QVBJOiBBZGQgdGhlIGNhcGFiaWxpdHkgdG8gY2FsbCB0aGUgU3RvcmFnZSBBY2Nlc3MgQVBJIGFz
IGEgcXVpcmssIG9uIGJlaGFsZiBvZiB3ZWJzaXRlcyB0aGF0IHNob3VsZCBiZSBkb2luZyBpdCB0
aGVtc2VsdmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTM0MTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY0NTQ5NDI5PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZXNlIGNoYW5nZXMgYXJlIGZv
ciBmb3J3YXJkaW5nIElUUCdzIGtub3dsZWRnZSBvZiB1c2VyIGludGVyYWN0aW9uCisgICAgICAg
IGZvciBzcGVjaWZpYyBxdWlya3MgZG9tYWlucyB0byB0aGUgV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bCB3aGVyZSBpdCBpbgorICAgICAgICB0dXJuIGNhbiBiZSBkaXN0cmlidXRlZCB0byBhbGwgZXhp
c3RpbmcgYW5kIG5ldyBXZWIgQ29udGVudCBwcm9jZXNzZXMuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bmVlZHNVc2Vy
SW50ZXJhY3Rpb25RdWlyayBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6Y2FsbFVwZGF0ZVByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29va2ll
c0ZvckhhbmRsZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NE
YXRhU3RvcmVQYXJhbWV0ZXJzLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NEYXRhU3Rv
cmVQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
RGF0YVN0b3JlUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3NQcm94eTo6c2V0RG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
Ojp3ZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjpzZXREb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJl
c291cmNlTG9hZE9ic2VydmVyOjpoYXNIYWRVc2VySW50ZXJhY3Rpb24gY29uc3QpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzOjpzZXRXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3M6OnNldERvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nl
c3MubWVzc2FnZXMuaW46CisKIDIwMjAtMDYtMTkgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBbV2ViQXV0aG5dIFByb3ZpZGUgYSBfV0tXZWJBdXRoZW50aWNh
dGlvblBhbmVsVXBkYXRlUElOSW52YWxpZCB1cGRhdGUgdG8gVUkgY2xpZW50cyBpZiB0aGUgcmV0
dXJuZWQgUElOIGZyb20gdGhlIGNsaWVudCBpcyBub3QgdmFsaWQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgK
aW5kZXggNmY3ZDJjMGI0NjE3YjY4NWU1NTkzY2U5MGQ0NmI2Y2IxNWUzNzk0OS4uMzQwYWZiNjRm
MzY1YTY0MzE0NDJmM2RhOWJlZWEyZDhiNmFjM2FlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAg
LTMsNyArMyw3IEBACiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZp
c3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVy
QGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBA
d2Via2l0Lm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBUb3JjaCBNb2Jp
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20v
KQogICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vi
c2lkaWFyeSgtaWVzKQogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCkBAIC0xMDMyLDYgKzEwMzIsNyBAQCBwdWJsaWM6CiAKICAgICBEb2N1bWVu
dCogcGFyZW50RG9jdW1lbnQoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBEb2N1bWVudCYg
dG9wRG9jdW1lbnQoKSBjb25zdDsKKyAgICBib29sIGlzVG9wRG9jdW1lbnQoKSBjb25zdCB7IHJl
dHVybiAmdG9wRG9jdW1lbnQoKSA9PSB0aGlzOyB9CiAgICAgCiAgICAgU2NyaXB0UnVubmVyJiBz
Y3JpcHRSdW5uZXIoKSB7IHJldHVybiAqbV9zY3JpcHRSdW5uZXI7IH0KICAgICBTY3JpcHRNb2R1
bGVMb2FkZXImIG1vZHVsZUxvYWRlcigpIHsgcmV0dXJuICptX21vZHVsZUxvYWRlcjsgfQpAQCAt
MTI0Miw4ICsxMjQzLDggQEAgcHVibGljOgogICAgIGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJl
Rm9yTWVkaWEoKSBjb25zdDsKICAgICB2b2lkIHVzZXJBY3RpdmF0ZWRNZWRpYUZpbmlzaGVkUGxh
eWluZygpIHsgbV91c2VyQWN0aXZhdGVkTWVkaWFGaW5pc2hlZFBsYXlpbmdUaW1lc3RhbXAgPSBN
b25vdG9uaWNUaW1lOjpub3coKTsgfQogCi0gICAgdm9pZCBzZXRVc2VyRGlkSW50ZXJhY3RXaXRo
UGFnZShib29sIHVzZXJEaWRJbnRlcmFjdFdpdGhQYWdlKSB7IEFTU0VSVCgmdG9wRG9jdW1lbnQo
KSA9PSB0aGlzKTsgbV91c2VyRGlkSW50ZXJhY3RXaXRoUGFnZSA9IHVzZXJEaWRJbnRlcmFjdFdp
dGhQYWdlOyB9Ci0gICAgYm9vbCB1c2VyRGlkSW50ZXJhY3RXaXRoUGFnZSgpIGNvbnN0IHsgQVNT
RVJUKCZ0b3BEb2N1bWVudCgpID09IHRoaXMpOyByZXR1cm4gbV91c2VyRGlkSW50ZXJhY3RXaXRo
UGFnZTsgfQorICAgIHZvaWQgc2V0VXNlckRpZEludGVyYWN0V2l0aFBhZ2UoYm9vbCB1c2VyRGlk
SW50ZXJhY3RXaXRoUGFnZSkgeyBBU1NFUlQoaXNUb3BEb2N1bWVudCgpKTsgbV91c2VyRGlkSW50
ZXJhY3RXaXRoUGFnZSA9IHVzZXJEaWRJbnRlcmFjdFdpdGhQYWdlOyB9CisgICAgYm9vbCB1c2Vy
RGlkSW50ZXJhY3RXaXRoUGFnZSgpIGNvbnN0IHsgQVNTRVJUKGlzVG9wRG9jdW1lbnQoKSk7IHJl
dHVybiBtX3VzZXJEaWRJbnRlcmFjdFdpdGhQYWdlOyB9CiAKICAgICAvLyBVc2VkIGZvciB0ZXN0
aW5nLiBDb3VudCBoYW5kbGVycyBpbiB0aGUgbWFpbiBkb2N1bWVudCwgYW5kIG9uZSBwZXIgZnJh
bWUgd2hpY2ggY29udGFpbnMgaGFuZGxlcnMuCiAgICAgV0VCQ09SRV9FWFBPUlQgdW5zaWduZWQg
d2hlZWxFdmVudEhhbmRsZXJDb3VudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnRTdG9yYWdlQWNjZXNzLmNwcAppbmRleCAwZjFiZjYyOTE5OGI3NGRjNzA5YjM0YWI0NjAz
YmJlODhkYmUzMTcyLi5kNGQwMjc1MDJmMTk5NTdlMzZjMTgxNTZkMTY4MGMzYTVlMmFlNTE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03Miw0NyAr
NzIsNDkgQEAgdm9pZCBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6Omhhc1N0b3JhZ2VBY2Nlc3MoRG9j
dW1lbnQmIGRvY3VtZW50LCBSZWY8RGVmZXJyZWRQcm8KICAgICBEb2N1bWVudFN0b3JhZ2VBY2Nl
c3M6OmZyb20oZG9jdW1lbnQpLT5oYXNTdG9yYWdlQWNjZXNzKFdURk1vdmUocHJvbWlzZSkpOwog
fQogCi12b2lkIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoRG9j
dW1lbnQmIGRvY3VtZW50LCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCitPcHRpb25h
bDxib29sPiBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6Omhhc1N0b3JhZ2VBY2Nlc3NRdWlja0NoZWNr
KCkKIHsKLSAgICBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OmZyb20oZG9jdW1lbnQpLT5yZXF1ZXN0
U3RvcmFnZUFjY2VzcyhXVEZNb3ZlKHByb21pc2UpKTsKKyAgICBBU1NFUlQobV9kb2N1bWVudC5z
ZXR0aW5ncygpLnN0b3JhZ2VBY2Nlc3NBUElFbmFibGVkKCkpOworCisgICAgYXV0byogZnJhbWUg
PSBtX2RvY3VtZW50LmZyYW1lKCk7CisgICAgaWYgKGZyYW1lICYmIGhhc0ZyYW1lU3BlY2lmaWNT
dG9yYWdlQWNjZXNzKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKCFmcmFtZSB8
fCBtX2RvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCkuaXNVbmlxdWUoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKworICAgIGF1dG8mIHNlY3VyaXR5T3JpZ2luID0gbV9kb2N1bWVudC5zZWN1cml0eU9y
aWdpbigpOworICAgIGF1dG8mIHRvcFNlY3VyaXR5T3JpZ2luID0gbV9kb2N1bWVudC50b3BEb2N1
bWVudCgpLnNlY3VyaXR5T3JpZ2luKCk7CisgICAgaWYgKHNlY3VyaXR5T3JpZ2luLmVxdWFsKCZ0
b3BTZWN1cml0eU9yaWdpbikpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgYXV0byogcGFn
ZSA9IGZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQogCiB2b2lkIERvY3VtZW50U3RvcmFnZUFj
Y2Vzczo6aGFzU3RvcmFnZUFjY2VzcyhSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7
CiAgICAgQVNTRVJUKG1fZG9jdW1lbnQuc2V0dGluZ3MoKS5zdG9yYWdlQWNjZXNzQVBJRW5hYmxl
ZCgpKTsKIAotICAgIGF1dG8qIGZyYW1lID0gbV9kb2N1bWVudC5mcmFtZSgpOwotICAgIGlmIChm
cmFtZSAmJiBoYXNGcmFtZVNwZWNpZmljU3RvcmFnZUFjY2VzcygpKSB7Ci0gICAgICAgIHByb21p
c2UtPnJlc29sdmU8SURMQm9vbGVhbj4odHJ1ZSk7CisgICAgYXV0byBxdWlja0NoZWNrUmVzdWx0
ID0gaGFzU3RvcmFnZUFjY2Vzc1F1aWNrQ2hlY2soKTsKKyAgICBpZiAocXVpY2tDaGVja1Jlc3Vs
dCkgeworICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEJvb2xlYW4+KCpxdWlja0NoZWNrUmVz
dWx0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKLSAgICBpZiAoIWZyYW1lIHx8IG1f
ZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKS5pc1VuaXF1ZSgpKSB7Ci0gICAgICAgIHByb21pc2Ut
PnJlc29sdmU8SURMQm9vbGVhbj4oZmFsc2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IAotICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkgewotICAgICAgICBwcm9taXNlLT5yZXNv
bHZlPElETEJvb2xlYW4+KHRydWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAg
IGF1dG8mIHNlY3VyaXR5T3JpZ2luID0gbV9kb2N1bWVudC5zZWN1cml0eU9yaWdpbigpOwotICAg
IGF1dG8mIHRvcFNlY3VyaXR5T3JpZ2luID0gbV9kb2N1bWVudC50b3BEb2N1bWVudCgpLnNlY3Vy
aXR5T3JpZ2luKCk7Ci0gICAgaWYgKHNlY3VyaXR5T3JpZ2luLmVxdWFsKCZ0b3BTZWN1cml0eU9y
aWdpbikpIHsKLSAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExCb29sZWFuPih0cnVlKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKKworICAgIC8vIFRoZSBleGlzdGVuY2Ugb2YgYSBm
cmFtZSBhbmQgcGFnZSBoYXMgYmVlbiBjaGVja2VkIGluIHJlcXVlc3RTdG9yYWdlQWNjZXNzUXVp
Y2tDaGVjaygpLgorICAgIGF1dG8qIGZyYW1lID0gbV9kb2N1bWVudC5mcmFtZSgpOworICAgIFJF
TEVBU0VfQVNTRVJUKGZyYW1lKTsKICAgICBhdXRvKiBwYWdlID0gZnJhbWUtPnBhZ2UoKTsKLSAg
ICBpZiAoIXBhZ2UpIHsKLSAgICAgICAgcHJvbWlzZS0+cmVqZWN0KCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgCi0gICAgYXV0byBzdWJGcmFtZURvbWFpbiA9IFJlZ2lzdHJhYmxlRG9t
YWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChzZWN1cml0eU9yaWdpbi5ob3N0KCkpOwotICAg
IGF1dG8gdG9wRnJhbWVEb21haW4gPSBSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRl
RnJvbUhvc3QodG9wU2VjdXJpdHlPcmlnaW4uaG9zdCgpKTsKLSAgICBwYWdlLT5jaHJvbWUoKS5j
bGllbnQoKS5oYXNTdG9yYWdlQWNjZXNzKFdURk1vdmUoc3ViRnJhbWVEb21haW4pLCBXVEZNb3Zl
KHRvcEZyYW1lRG9tYWluKSwgKmZyYW1lLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyks
IHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoYm9vbCBoYXNBY2Nlc3MpIHsKKyAgICBSRUxF
QVNFX0FTU0VSVChwYWdlKTsKKworICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLmhhc1N0b3Jh
Z2VBY2Nlc3MoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KG1fZG9j
dW1lbnQuc2VjdXJpdHlPcmlnaW4oKS5ob3N0KCkpLCBSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVj
a2VkQ3JlYXRlRnJvbUhvc3QobV9kb2N1bWVudC50b3BEb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2lu
KCkuaG9zdCgpKSwgKmZyYW1lLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHByb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoYm9vbCBoYXNBY2Nlc3MpIHsKICAgICAgICAgaWYgKCF3
ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTIwLDY0ICsxMjIsNzMgQEAgdm9p
ZCBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6Omhhc1N0b3JhZ2VBY2Nlc3MoUmVmPERlZmVycmVkUHJv
bWlzZT4mJiBwcm9taXNlKQogICAgIH0pOwogfQogCi12b2lkIERvY3VtZW50U3RvcmFnZUFjY2Vz
czo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQor
Ym9vbCBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6Omhhc1N0b3JhZ2VBY2Nlc3NGb3JEb2N1bWVudFF1
aXJrKERvY3VtZW50JiBkb2N1bWVudCkKK3sKKyAgICBhdXRvIHF1aWNrQ2hlY2tSZXN1bHQgPSBE
b2N1bWVudFN0b3JhZ2VBY2Nlc3M6OmZyb20oZG9jdW1lbnQpLT5oYXNTdG9yYWdlQWNjZXNzUXVp
Y2tDaGVjaygpOworICAgIGlmIChxdWlja0NoZWNrUmVzdWx0KQorICAgICAgICByZXR1cm4gKnF1
aWNrQ2hlY2tSZXN1bHQ7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIERvY3VtZW50U3Rv
cmFnZUFjY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8
RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCit7CisgICAgRG9jdW1lbnRTdG9yYWdlQWNjZXNz
Ojpmcm9tKGRvY3VtZW50KS0+cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoV1RGTW92ZShwcm9taXNlKSk7
Cit9CisKK09wdGlvbmFsPFN0b3JhZ2VBY2Nlc3NRdWlja1Jlc3VsdD4gRG9jdW1lbnRTdG9yYWdl
QWNjZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1F1aWNrQ2hlY2soKQogewogICAgIEFTU0VSVCht
X2RvY3VtZW50LnNldHRpbmdzKCkuc3RvcmFnZUFjY2Vzc0FQSUVuYWJsZWQoKSk7Ci0gICAgCisK
ICAgICBhdXRvKiBmcmFtZSA9IG1fZG9jdW1lbnQuZnJhbWUoKTsKLSAgICBpZiAoZnJhbWUgJiYg
aGFzRnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3MoKSkgewotICAgICAgICBwcm9taXNlLT5yZXNv
bHZlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgaWYgKCFmcmFtZSB8fCBt
X2RvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCkuaXNVbmlxdWUoKSB8fCAhaXNBbGxvd2VkVG9SZXF1
ZXN0RnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3MoKSkgewotICAgICAgICBwcm9taXNlLT5yZWpl
Y3QoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBpZiAoZnJhbWUtPmlzTWFp
bkZyYW1lKCkpIHsKLSAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZSgpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIAorICAgIGlmIChmcmFtZSAmJiBoYXNGcmFtZVNwZWNpZmljU3RvcmFnZUFj
Y2VzcygpKQorICAgICAgICByZXR1cm4gU3RvcmFnZUFjY2Vzc1F1aWNrUmVzdWx0OjpHcmFudDsK
KworICAgIGlmICghZnJhbWUgfHwgbV9kb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLmlzVW5pcXVl
KCkgfHwgIWlzQWxsb3dlZFRvUmVxdWVzdEZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzKCkpCisg
ICAgICAgIHJldHVybiBTdG9yYWdlQWNjZXNzUXVpY2tSZXN1bHQ6OlJlamVjdDsKKworICAgIGlm
IChmcmFtZS0+aXNNYWluRnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIFN0b3JhZ2VBY2Nlc3NRdWlj
a1Jlc3VsdDo6R3JhbnQ7CisKICAgICBhdXRvJiB0b3BEb2N1bWVudCA9IG1fZG9jdW1lbnQudG9w
RG9jdW1lbnQoKTsKICAgICBhdXRvJiB0b3BTZWN1cml0eU9yaWdpbiA9IHRvcERvY3VtZW50LnNl
Y3VyaXR5T3JpZ2luKCk7CiAgICAgYXV0byYgc2VjdXJpdHlPcmlnaW4gPSBtX2RvY3VtZW50LnNl
Y3VyaXR5T3JpZ2luKCk7Ci0gICAgaWYgKHNlY3VyaXR5T3JpZ2luLmVxdWFsKCZ0b3BTZWN1cml0
eU9yaWdpbikpIHsKLSAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZSgpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIAorICAgIGlmIChzZWN1cml0eU9yaWdpbi5lcXVhbCgmdG9wU2VjdXJpdHlP
cmlnaW4pKQorICAgICAgICByZXR1cm4gU3RvcmFnZUFjY2Vzc1F1aWNrUmVzdWx0OjpHcmFudDsK
KwogICAgIC8vIElmIHRoZXJlIGlzIGEgc2FuZGJveCwgaXQgaGFzIHRvIGFsbG93IHRoZSBzdG9y
YWdlIGFjY2VzcyBBUEkgdG8gYmUgY2FsbGVkLgotICAgIGlmIChtX2RvY3VtZW50LnNhbmRib3hG
bGFncygpICE9IFNhbmRib3hOb25lICYmIG1fZG9jdW1lbnQuaXNTYW5kYm94ZWQoU2FuZGJveFN0
b3JhZ2VBY2Nlc3NCeVVzZXJBY3RpdmF0aW9uKSkgewotICAgICAgICBwcm9taXNlLT5yZWplY3Qo
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKKyAgICBpZiAobV9kb2N1bWVudC5zYW5k
Ym94RmxhZ3MoKSAhPSBTYW5kYm94Tm9uZSAmJiBtX2RvY3VtZW50LmlzU2FuZGJveGVkKFNhbmRi
b3hTdG9yYWdlQWNjZXNzQnlVc2VyQWN0aXZhdGlvbikpCisgICAgICAgIHJldHVybiBTdG9yYWdl
QWNjZXNzUXVpY2tSZXN1bHQ6OlJlamVjdDsKKwogICAgIC8vIFRoZSBpZnJhbWUgaGFzIHRvIGJl
IGEgZGlyZWN0IGNoaWxkIG9mIHRoZSB0b3AgZG9jdW1lbnQuCi0gICAgaWYgKCZ0b3BEb2N1bWVu
dCAhPSBtX2RvY3VtZW50LnBhcmVudERvY3VtZW50KCkpIHsKLSAgICAgICAgcHJvbWlzZS0+cmVq
ZWN0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgaWYgKCFVc2VyR2VzdHVy
ZUluZGljYXRvcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpIHsKLSAgICAgICAgcHJvbWlzZS0+
cmVqZWN0KCk7CisgICAgaWYgKCZ0b3BEb2N1bWVudCAhPSBtX2RvY3VtZW50LnBhcmVudERvY3Vt
ZW50KCkpCisgICAgICAgIHJldHVybiBTdG9yYWdlQWNjZXNzUXVpY2tSZXN1bHQ6OlJlamVjdDsK
KworICAgIGlmICghVXNlckdlc3R1cmVJbmRpY2F0b3I6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgp
KQorICAgICAgICByZXR1cm4gU3RvcmFnZUFjY2Vzc1F1aWNrUmVzdWx0OjpSZWplY3Q7CisKKyAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworfQorCit2b2lkIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6
cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQorewor
ICAgIEFTU0VSVChtX2RvY3VtZW50LnNldHRpbmdzKCkuc3RvcmFnZUFjY2Vzc0FQSUVuYWJsZWQo
KSk7CisKKyAgICBhdXRvIHF1aWNrQ2hlY2tSZXN1bHQgPSByZXF1ZXN0U3RvcmFnZUFjY2Vzc1F1
aWNrQ2hlY2soKTsKKyAgICBpZiAocXVpY2tDaGVja1Jlc3VsdCkgeworICAgICAgICAqcXVpY2tD
aGVja1Jlc3VsdCA9PSBTdG9yYWdlQWNjZXNzUXVpY2tSZXN1bHQ6OkdyYW50ID8gcHJvbWlzZS0+
cmVzb2x2ZSgpIDogcHJvbWlzZS0+cmVqZWN0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
KyAgICAvLyBUaGUgZXhpc3RlbmNlIG9mIGEgZnJhbWUgYW5kIHBhZ2UgaGFzIGJlZW4gY2hlY2tl
ZCBpbiByZXF1ZXN0U3RvcmFnZUFjY2Vzc1F1aWNrQ2hlY2soKS4KKyAgICBhdXRvKiBmcmFtZSA9
IG1fZG9jdW1lbnQuZnJhbWUoKTsKKyAgICBSRUxFQVNFX0FTU0VSVChmcmFtZSk7CiAgICAgYXV0
byogcGFnZSA9IGZyYW1lLT5wYWdlKCk7Ci0gICAgaWYgKCFwYWdlKSB7Ci0gICAgICAgIHByb21p
c2UtPnJlamVjdCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIFJFTEVBU0VfQVNTRVJU
KHBhZ2UpOwogCiAgICAgaWYgKHBhZ2UtPnNldHRpbmdzKCkuc3RvcmFnZUFjY2Vzc0FQSVBlclBh
Z2VTY29wZUVuYWJsZWQoKSkKICAgICAgICAgbV9zdG9yYWdlQWNjZXNzU2NvcGUgPSBTdG9yYWdl
QWNjZXNzU2NvcGU6OlBlclBhZ2U7CiAKLSAgICBhdXRvIHN1YkZyYW1lRG9tYWluID0gUmVnaXN0
cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KHNlY3VyaXR5T3JpZ2luLmhvc3Qo
KSk7Ci0gICAgYXV0byB0b3BGcmFtZURvbWFpbiA9IFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNr
ZWRDcmVhdGVGcm9tSG9zdCh0b3BTZWN1cml0eU9yaWdpbi5ob3N0KCkpOwotICAgIAotICAgIHBh
Z2UtPmNocm9tZSgpLmNsaWVudCgpLnJlcXVlc3RTdG9yYWdlQWNjZXNzKFdURk1vdmUoc3ViRnJh
bWVEb21haW4pLCBXVEZNb3ZlKHRvcEZyYW1lRG9tYWluKSwgKmZyYW1lLCBtX3N0b3JhZ2VBY2Nl
c3NTY29wZSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBwcm9taXNlID0g
V1RGTW92ZShwcm9taXNlKV0gKFJlcXVlc3RTdG9yYWdlQWNjZXNzUmVzdWx0IHJlc3VsdCkgbXV0
YWJsZSB7CisgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkucmVxdWVzdFN0b3JhZ2VBY2Nlc3Mo
UmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KG1fZG9jdW1lbnQuc2Vj
dXJpdHlPcmlnaW4oKS5ob3N0KCkpLCBSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRl
RnJvbUhvc3QobV9kb2N1bWVudC50b3BEb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCkuaG9zdCgp
KSwgKmZyYW1lLCBtX3N0b3JhZ2VBY2Nlc3NTY29wZSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdl
YWtQdHIoKnRoaXMpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0gKFJlcXVlc3RTdG9yYWdl
QWNjZXNzUmVzdWx0IHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAg
ICAgICAgICAgICByZXR1cm47CiAKQEAgLTIwOCw2ICsyMTksNzEgQEAgdm9pZCBEb2N1bWVudFN0
b3JhZ2VBY2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFJlZjxEZWZlcnJlZFByb21pc2U+JiYg
cHJvbWlzZSkKICAgICB9KTsKIH0KIAordm9pZCBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OnJlcXVl
c3RTdG9yYWdlQWNjZXNzRm9yRG9jdW1lbnRRdWlyayhEb2N1bWVudCYgZG9jdW1lbnQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6ZnJvbShkb2N1bWVudCktPnJl
cXVlc3RTdG9yYWdlQWNjZXNzRm9yRG9jdW1lbnRRdWlyayhXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7Cit9CisKK3ZvaWQgRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpyZXF1ZXN0U3RvcmFnZUFj
Y2Vzc0ZvckRvY3VtZW50UXVpcmsoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNz
V2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byBxdWlja0NoZWNr
UmVzdWx0ID0gcmVxdWVzdFN0b3JhZ2VBY2Nlc3NRdWlja0NoZWNrKCk7CisgICAgaWYgKHF1aWNr
Q2hlY2tSZXN1bHQpIHsKKyAgICAgICAgKnF1aWNrQ2hlY2tSZXN1bHQgPT0gU3RvcmFnZUFjY2Vz
c1F1aWNrUmVzdWx0OjpHcmFudCA/IGNvbXBsZXRpb25IYW5kbGVyKFN0b3JhZ2VBY2Nlc3NXYXNH
cmFudGVkOjpZZXMpIDogY29tcGxldGlvbkhhbmRsZXIoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6
Ok5vKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICByZXF1ZXN0U3RvcmFnZUFjY2Vzc1F1
aXJrKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChtX2RvY3VtZW50
LnNlY3VyaXR5T3JpZ2luKCkuaG9zdCgpKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwor
fQorCit2b2lkIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NGb3JO
b25Eb2N1bWVudFF1aXJrKERvY3VtZW50JiBob3N0aW5nRG9jdW1lbnQsIFJlZ2lzdHJhYmxlRG9t
YWluJiYgcmVxdWVzdGluZ0RvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNj
ZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgRG9jdW1lbnRTdG9y
YWdlQWNjZXNzOjpmcm9tKGhvc3RpbmdEb2N1bWVudCktPnJlcXVlc3RTdG9yYWdlQWNjZXNzRm9y
Tm9uRG9jdW1lbnRRdWlyayhXVEZNb3ZlKHJlcXVlc3RpbmdEb21haW4pLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpyZXF1ZXN0
U3RvcmFnZUFjY2Vzc0Zvck5vbkRvY3VtZW50UXVpcmsoUmVnaXN0cmFibGVEb21haW4mJiByZXF1
ZXN0aW5nRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFu
dGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIW1fZG9jdW1lbnQuZnJhbWUo
KSB8fCAhbV9kb2N1bWVudC5mcmFtZSgpLT5wYWdlKCkpIHsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6Ok5vKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICByZXF1ZXN0U3RvcmFnZUFjY2Vzc1F1aXJrKFdURk1vdmUocmVxdWVzdGluZ0RvbWFp
biksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBEb2N1bWVudFN0b3Jh
Z2VBY2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzUXVpcmsoUmVnaXN0cmFibGVEb21haW4mJiBy
ZXF1ZXN0aW5nRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNH
cmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQobV9kb2N1bWVudC5z
ZXR0aW5ncygpLnN0b3JhZ2VBY2Nlc3NBUElFbmFibGVkKCkpOworICAgIFJFTEVBU0VfQVNTRVJU
KG1fZG9jdW1lbnQuZnJhbWUoKSAmJiBtX2RvY3VtZW50LmZyYW1lKCktPnBhZ2UoKSk7CisKKyAg
ICBtX2RvY3VtZW50LmZyYW1lKCktPnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkucmVxdWVzdFN0
b3JhZ2VBY2Nlc3MoV1RGTW92ZShyZXF1ZXN0aW5nRG9tYWluKSwgUmVnaXN0cmFibGVEb21haW46
OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KG1fZG9jdW1lbnQudG9wRG9jdW1lbnQoKS5zZWN1cml0
eU9yaWdpbigpLmhvc3QoKSksICptX2RvY3VtZW50LmZyYW1lKCksIG1fc3RvcmFnZUFjY2Vzc1Nj
b3BlLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChSZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jl
c3VsdCByZXN1bHQpIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIC8vIENvbnN1bWUgdGhlIHVzZXIgZ2VzdHVyZSBvbmx5IGlm
IHRoZSB1c2VyIGV4cGxpY2l0bHkgZGVuaWVkIGFjY2Vzcy4KKyAgICAgICAgYm9vbCBzaG91bGRQ
cmVzZXJ2ZVVzZXJHZXN0dXJlID0gcmVzdWx0Lndhc0dyYW50ZWQgPT0gU3RvcmFnZUFjY2Vzc1dh
c0dyYW50ZWQ6OlllcyB8fCByZXN1bHQucHJvbXB0V2FzU2hvd24gPT0gU3RvcmFnZUFjY2Vzc1By
b21wdFdhc1Nob3duOjpObzsKKworICAgICAgICBpZiAoc2hvdWxkUHJlc2VydmVVc2VyR2VzdHVy
ZSkgeworICAgICAgICAgICAgbV9kb2N1bWVudC5ldmVudExvb3AoKS5xdWV1ZU1pY3JvdGFzayhb
dGhpcywgd2Vha1RoaXNdIHsKKyAgICAgICAgICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAg
ICAgICAgICAgICAgIGVuYWJsZVRlbXBvcmFyeVRpbWVVc2VyR2VzdHVyZSgpOworICAgICAgICAg
ICAgfSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAocmVzdWx0Lndhc0dyYW50ZWQgPT0gU3Rv
cmFnZUFjY2Vzc1dhc0dyYW50ZWQ6OlllcykKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpZZXMpOworICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIGlmIChyZXN1bHQucHJvbXB0V2FzU2hvd24gPT0gU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1No
b3duOjpZZXMpCisgICAgICAgICAgICAgICAgc2V0V2FzRXhwbGljaXRseURlbmllZEZyYW1lU3Bl
Y2lmaWNTdG9yYWdlQWNjZXNzKCk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihTdG9y
YWdlQWNjZXNzV2FzR3JhbnRlZDo6Tm8pOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHNob3Vs
ZFByZXNlcnZlVXNlckdlc3R1cmUpIHsKKyAgICAgICAgICAgIG1fZG9jdW1lbnQuZXZlbnRMb29w
KCkucXVldWVNaWNyb3Rhc2soW3RoaXMsIHdlYWtUaGlzXSB7CisgICAgICAgICAgICAgICAgaWYg
KHdlYWtUaGlzKQorICAgICAgICAgICAgICAgICAgICBjb25zdW1lVGVtcG9yYXJ5VGltZVVzZXJH
ZXN0dXJlKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0pOworfQorCiB2b2lk
IERvY3VtZW50U3RvcmFnZUFjY2Vzczo6ZW5hYmxlVGVtcG9yYXJ5VGltZVVzZXJHZXN0dXJlKCkK
IHsKICAgICBtX3RlbXBvcmFyeVVzZXJHZXN0dXJlID0gbWFrZVVuaXF1ZTxVc2VyR2VzdHVyZUlu
ZGljYXRvcj4oUHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCAmbV9kb2N1bWVudCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmgKaW5kZXggYTdlMDBhNjMwNWJkZWEzMTFi
NmU5MTI0MjAxZTM2NTc2MTAyMDI2Mi4uMDY2Y2VjN2RmYzU0ZDdmMjc5OWZkNzEwZWFiMTYwYTEx
YTAxMzI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3RvcmFnZUFj
Y2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
OSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJSZWdpc3RyYWJsZURvbWFpbi5oIgogI2luY2x1ZGUg
IlN1cHBsZW1lbnRhYmxlLmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8
d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTIsNiArNTMsMTEgQEAg
ZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzU2NvcGUgOiBib29sIHsKICAgICBQZXJQYWdlCiB9Owog
CitlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NRdWlja1Jlc3VsdCA6IGJvb2wgeworICAgIEdyYW50
LAorICAgIFJlamVjdAorfTsKKwogc3RydWN0IFJlcXVlc3RTdG9yYWdlQWNjZXNzUmVzdWx0IHsK
ICAgICBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCB3YXNHcmFudGVkOwogICAgIFN0b3JhZ2VBY2Nl
c3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93bjsKQEAgLTcyLDExICs3OCwyMyBAQCBwdWJs
aWM6CiAgICAgfkRvY3VtZW50U3RvcmFnZUFjY2VzcygpOwogCiAgICAgc3RhdGljIHZvaWQgaGFz
U3RvcmFnZUFjY2VzcyhEb2N1bWVudCYsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOworICAgIHN0
YXRpYyBib29sIGhhc1N0b3JhZ2VBY2Nlc3NGb3JEb2N1bWVudFF1aXJrKERvY3VtZW50Jik7CisK
ICAgICBzdGF0aWMgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhEb2N1bWVudCYsIFJlZjxEZWZl
cnJlZFByb21pc2U+JiYpOworICAgIHN0YXRpYyB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzRm9y
RG9jdW1lbnRRdWlyayhEb2N1bWVudCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFj
Y2Vzc1dhc0dyYW50ZWQpPiYmKTsKKyAgICBzdGF0aWMgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vz
c0Zvck5vbkRvY3VtZW50UXVpcmsoRG9jdW1lbnQmIGhvc3RpbmdEb2N1bWVudCwgUmVnaXN0cmFi
bGVEb21haW4mJiByZXF1ZXN0aW5nRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3Jh
Z2VBY2Nlc3NXYXNHcmFudGVkKT4mJik7CiAKIHByaXZhdGU6CisgICAgT3B0aW9uYWw8Ym9vbD4g
aGFzU3RvcmFnZUFjY2Vzc1F1aWNrQ2hlY2soKTsKICAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3Mo
UmVmPERlZmVycmVkUHJvbWlzZT4mJik7CisgICAgYm9vbCBoYXNTdG9yYWdlQWNjZXNzUXVpcmso
KTsKKworICAgIE9wdGlvbmFsPFN0b3JhZ2VBY2Nlc3NRdWlja1Jlc3VsdD4gcmVxdWVzdFN0b3Jh
Z2VBY2Nlc3NRdWlja0NoZWNrKCk7CiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWY8
RGVmZXJyZWRQcm9taXNlPiYmKTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzRm9yRG9j
dW1lbnRRdWlyayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVk
KT4mJik7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc0Zvck5vbkRvY3VtZW50UXVpcmso
UmVnaXN0cmFibGVEb21haW4mJiByZXF1ZXN0aW5nRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJik7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFn
ZUFjY2Vzc1F1aXJrKFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVxdWVzdGluZ0RvbWFpbiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpOworCiAgICAgc3Rh
dGljIERvY3VtZW50U3RvcmFnZUFjY2VzcyogZnJvbShEb2N1bWVudCYpOwogICAgIHN0YXRpYyBj
b25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwogICAgIGJvb2wgaGFzRnJhbWVTcGVjaWZpY1N0
b3JhZ2VBY2Nlc3MoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBiOWE2NmMwOGJk
NzAzMjdiY2QxODg1NmJlZGI2MDg3NGRkNzdiMTVmLi43NTc4ZDBjYzUwZDU1Y2Y3OGJmMWUyMWNl
N2IxMTdkNjRiMDhiNWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC04Nyw2ICs4Nyw3IEBA
CiAjaW5jbHVkZSAiUG9pbnRlckV2ZW50LmgiCiAjaW5jbHVkZSAiUG9pbnRlckxvY2tDb250cm9s
bGVyLmgiCiAjaW5jbHVkZSAiUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaCIKKyNpbmNs
dWRlICJRdWlya3MuaCIKICNpbmNsdWRlICJSZW5kZXJGcmFnbWVudGVkRmxvdy5oIgogI2luY2x1
ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXJCYWNraW5nLmgiCkBAIC0z
NjEsNiArMzYyLDkgQEAgYm9vbCBFbGVtZW50OjpkaXNwYXRjaE1vdXNlRXZlbnQoY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50JiBwbGF0Zm9ybUV2ZW50LCBjb25zdAogICAgIGlmIChkaXNwYXRjaFBv
aW50ZXJFdmVudElmTmVlZGVkKCp0aGlzLCBtb3VzZUV2ZW50LmdldCgpLCBwbGF0Zm9ybUV2ZW50
LCBkaWROb3RTd2FsbG93RXZlbnQpID09IFNob3VsZElnbm9yZU1vdXNlRXZlbnQ6OlllcykKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgaWYgKGhhc0NsYXNzKCkgJiYgUXVpcmtzOjpTdG9y
YWdlQWNjZXNzUmVzdWx0OjpTaG91bGRDYW5jZWxFdmVudCA9PSBkb2N1bWVudCgpLnF1aXJrcygp
LnRyaWdnZXJPcHRpb25hbFN0b3JhZ2VBY2Nlc3NRdWlyayhldmVudFR5cGUsIGNsYXNzTmFtZXMo
KSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIEFTU0VSVCghbW91c2VFdmVudC0+dGFy
Z2V0KCkgfHwgbW91c2VFdmVudC0+dGFyZ2V0KCkgIT0gcmVsYXRlZFRhcmdldCk7CiAgICAgZGlz
cGF0Y2hFdmVudChtb3VzZUV2ZW50KTsKICAgICBpZiAobW91c2VFdmVudC0+ZGVmYXVsdFByZXZl
bnRlZCgpIHx8IG1vdXNlRXZlbnQtPmRlZmF1bHRIYW5kbGVkKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oCmluZGV4IDEyOWMzYzZiMjhkMGI2YjlhN2Mz
NTA1M2U1MTAyYTQ0YzZmZmUxYjYuLjY3ZmJmZmMyZDIwYWIyZmQ4YmE1NmE4ZGZhNGQ0YWU3OGE5
NWViMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNl
cnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5o
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMCBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC02Miw2ICs2Miw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJTdGF0
ZSgpIHsgfQogICAgIAogICAgIHZpcnR1YWwgYm9vbCBoYXNTdGF0aXN0aWNzKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KKworICAgIHZpcnR1YWwgdm9pZCBzZXREb21haW5zV2l0aFVzZXJJbnRl
cmFjdGlvbihIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYmKSB7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgaGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KIH07CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1F1aXJrcy5jcHAKaW5kZXggOWMxODllMWY3NTJhMGI3MjIwMzc2NWZiMzU3YzAxZTljMTQy
MDBlNi4uOGE5YjE0ZjYzNTdlZTVkYTQ4MjJlNWUyNThmMTczYjkyZDFhZTllMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUXVpcmtzLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTgt
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTgtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDggKzM4LDEwIEBACiAjaW5jbHVkZSAiSFRNTE9iamVjdEVs
ZW1lbnQuaCIKICNpbmNsdWRlICJKU0V2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJMYXlvdXRV
bml0LmgiCisjaW5jbHVkZSAiUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJSdW50
aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJT
cGFjZVNwbGl0U3RyaW5nLmgiCiAjaW5jbHVkZSAiVXNlckFnZW50LmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTgzOSw0ICs4NDEsNTcgQEAgYm9vbCBRdWlya3M6OnNob3VsZEF2b2lkUGFz
dGluZ0ltYWdlc0FzV2ViQ29udGVudCgpIGNvbnN0CiAjZW5kaWYKIH0KIAorUXVpcmtzOjpTdG9y
YWdlQWNjZXNzUmVzdWx0IFF1aXJrczo6dHJpZ2dlck9wdGlvbmFsU3RvcmFnZUFjY2Vzc1F1aXJr
KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgU3BhY2VTcGxpdFN0cmluZyYgY2xh
c3NOYW1lcykgY29uc3QKK3sKKyAgICBpZiAoIW5lZWRzUXVpcmtzKCkpCisgICAgICAgIHJldHVy
biBRdWlya3M6OlN0b3JhZ2VBY2Nlc3NSZXN1bHQ6OlNob3VsZE5vdENhbmNlbEV2ZW50OworCisg
ICAgUmVnaXN0cmFibGVEb21haW4gZG9tYWluIHsgbV9kb2N1bWVudC0+dXJsKCkgfTsKKworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPj4ga2luamFR
dWlya3MgPSBbXSB7CisgICAgICAgIEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+IHNldDsKKyAg
ICAgICAgc2V0LmFkZChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lz
dHJhYmxlRG9tYWluU3RyaW5nKCJhdmNsdWIuY29tIl9zKSk7CisgICAgICAgIHNldC5hZGQoUmVn
aXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmlu
ZygiZ2l6bW9kby5jb20iX3MpKTsKKyAgICAgICAgc2V0LmFkZChSZWdpc3RyYWJsZURvbWFpbjo6
dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKCJkZWFkc3Bpbi5jb20i
X3MpKTsKKyAgICAgICAgc2V0LmFkZChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRl
RnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKCJqYWxvcG5pay5jb20iX3MpKTsKKyAgICAgICAg
c2V0LmFkZChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxl
RG9tYWluU3RyaW5nKCJqZXplYmVsLmNvbSJfcykpOworICAgICAgICBzZXQuYWRkKFJlZ2lzdHJh
YmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcoImtv
dGFrdS5jb20iX3MpKTsKKyAgICAgICAgc2V0LmFkZChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVj
a2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKCJsaWZlaGFja2VyLmNvbSJfcykp
OworICAgICAgICBzZXQuYWRkKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9t
UmVnaXN0cmFibGVEb21haW5TdHJpbmcoInRoZXJvb3QuY29tIl9zKSk7CisgICAgICAgIHNldC5h
ZGQoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFp
blN0cmluZygidGhldGFrZW91dC5jb20iX3MpKTsKKyAgICAgICAgc2V0LmFkZChSZWdpc3RyYWJs
ZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKCJ0aGVv
bmlvbi5jb20iX3MpKTsKKyAgICAgICAgc2V0LmFkZChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVj
a2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKCJ0aGVpbnZlbnRvcnkuY29tIl9z
KSk7CisgICAgICAgIHJldHVybiBzZXQ7CisgICAgfSgpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxSZWdpc3RyYWJsZURvbWFpbj4ga2luamFEb21haW4gPSBSZWdpc3RyYWJsZURvbWFpbjo6
dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKCJraW5qYS5jb20iX3Mp
OworCisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZ2lzdHJhYmxlRG9tYWluPiB5b3VUdWJl
RG9tYWluID0gUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJs
ZURvbWFpblN0cmluZygieW91dHViZS5jb20iX3MpOworCisgICAgaWYgKGV2ZW50VHlwZSA9PSAi
Y2xpY2siKSB7CisKKyAgICAgICAgLy8gRW1iZWRkZWQgWW91VHViZSBjYXNlLgorICAgICAgICBp
ZiAoZG9tYWluID09IHlvdVR1YmVEb21haW4gJiYgIW1fZG9jdW1lbnQtPmlzVG9wRG9jdW1lbnQo
KSAmJiBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkuaGFzSGFkVXNlckludGVyYWN0aW9u
KHlvdVR1YmVEb21haW4pICYmIChjbGFzc05hbWVzLmNvbnRhaW5zKCJ5dHAtd2F0Y2gtbGF0ZXIt
aWNvbiIpIHx8IGNsYXNzTmFtZXMuY29udGFpbnMoInl0cC13YXRjaC1sYXRlci1pY29uIikpKSB7
CisgICAgICAgICAgICBpZiAoUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLmhhc0hhZFVz
ZXJJbnRlcmFjdGlvbih5b3VUdWJlRG9tYWluKSkgeworICAgICAgICAgICAgICAgIERvY3VtZW50
U3RvcmFnZUFjY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NGb3JEb2N1bWVudFF1aXJrKCptX2Rv
Y3VtZW50LCBbXShTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCkgeworICAgICAgICAgICAgICAgICAg
ICAvLyBGSVhNRTogQWRkIGFwcHJvcHJpYXRlIGxvZ2dpbmcuCisgICAgICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICAgICAgcmV0dXJuIFF1aXJrczo6U3RvcmFnZUFjY2Vzc1Jlc3VsdDo6U2hv
dWxkTm90Q2FuY2VsRXZlbnQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAv
LyBLaW5qYSBidXJuZXIgYWNjb3VudCBsb2dpbiBjYXNlLgorICAgICAgICBpZiAoa2luamFRdWly
a3MuZ2V0KCkuY29udGFpbnMoZG9tYWluKSAmJiBjbGFzc05hbWVzLmNvbnRhaW5zKCJqc19zd2l0
Y2gtdG8tYnVybmVyLWxvZ2luIikpIHsKKyAgICAgICAgICAgIGlmIChSZXNvdXJjZUxvYWRPYnNl
cnZlcjo6c2hhcmVkKCkuaGFzSGFkVXNlckludGVyYWN0aW9uKGtpbmphRG9tYWluKSkgeworICAg
ICAgICAgICAgICAgIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NG
b3JOb25Eb2N1bWVudFF1aXJrKCptX2RvY3VtZW50LCBraW5qYURvbWFpbi5nZXQoKS5pc29sYXRl
ZENvcHkoKSwgW10oU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpIHsKKyAgICAgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IEFkZCBhcHByb3ByaWF0ZSBsb2dnaW5nLgorICAgICAgICAgICAgICAgIH0p
OworICAgICAgICAgICAgICAgIHJldHVybiBRdWlya3M6OlN0b3JhZ2VBY2Nlc3NSZXN1bHQ6OlNo
b3VsZE5vdENhbmNlbEV2ZW50OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gRklYTUU6
IFRha2UgdGhlIHVzZXIgdG8ga2luamEuY29tIGluIHRoZSBlbHNlIGNhc2UuCisgICAgICAgIH0K
KyAgICB9CisKKyAgICByZXR1cm4gUXVpcmtzOjpTdG9yYWdlQWNjZXNzUmVzdWx0OjpTaG91bGRO
b3RDYW5jZWxFdmVudDsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9R
dWlya3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmgKaW5kZXggNjM4NmU3NDJkZWFh
ODgyMzc4ZGM0Nzk2Y2Y0MDFiNGVlZjRmNTkyOC4uMDU2MDk3ODBhZTliYTBiNGQ4MjViYjk5YTBi
Y2ViYjU3ZjA5NTliYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsNiArMzYsNyBAQCBjbGFz
cyBFdmVudExpc3RlbmVyOwogY2xhc3MgRXZlbnRUYXJnZXQ7CiBjbGFzcyBIVE1MRWxlbWVudDsK
IGNsYXNzIExheW91dFVuaXQ7CitjbGFzcyBTcGFjZVNwbGl0U3RyaW5nOwogCiBjbGFzcyBRdWly
a3MgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFF1aXJrcyk7IFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwpAQCAtMTA1LDYgKzEwNiw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc2hvdWxkQXZv
aWRQYXN0aW5nSW1hZ2VzQXNXZWJDb250ZW50KCkgY29uc3Q7CiAKKyAgICBlbnVtIFN0b3JhZ2VB
Y2Nlc3NSZXN1bHQgOiBib29sIHsgU2hvdWxkTm90Q2FuY2VsRXZlbnQsIFNob3VsZENhbmNlbEV2
ZW50IH07CisgICAgU3RvcmFnZUFjY2Vzc1Jlc3VsdCB0cmlnZ2VyT3B0aW9uYWxTdG9yYWdlQWNj
ZXNzUXVpcmsoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBTcGFjZVNwbGl0U3Ry
aW5nJiBjbGFzc05hbWVzKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBib29sIG5lZWRzUXVpcmtz
KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5jcHAKaW5kZXggYjIxNjkxZWY1NTdlODEwZDBhMzBlNWM5NzllOTQ4ODdmYjliN2QzMy4uMTBm
OTcwNWQzODUxMDllNWI4ZDNlMTZiNjkyNjVhNTBiZTVkODk1YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMjYyLDYgKzEyNjIsMTgg
QEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldENhY2hlTWF4QWdlQ2Fw
KFNlY29uZHMgc2Vjb25kcywgQ29tcGxldGkKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQog
Citib29sIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bmVlZHNVc2VySW50ZXJhY3Rp
b25RdWlyayhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKSBjb25zdAoreworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPj4gcXVpcmtzID0g
W10geworICAgICAgICBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiBzZXQ7CisgICAgICAgIHNl
dC5hZGQoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURv
bWFpblN0cmluZygia2luamEuY29tIl9zKSk7CisgICAgICAgIHNldC5hZGQoUmVnaXN0cmFibGVE
b21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZygieW91dHVi
ZS5jb20iX3MpKTsKKyAgICAgICAgcmV0dXJuIHNldDsKKyAgICB9KCk7CisKKyAgICByZXR1cm4g
cXVpcmtzLmdldCgpLmNvbnRhaW5zKGRvbWFpbik7Cit9CisKIHZvaWQgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpjYWxsVXBkYXRlUHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVz
Rm9ySGFuZGxlcihjb25zdCBSZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llc0ZvciYgZG9t
YWluc1RvQmxvY2ssIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtMTI3Miw2ICsxMjg0LDE3
IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjYWxsVXBkYXRlUHJldmFs
ZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9yCiAgICAgICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+
c2V0UHJldmFsZW50RG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0Zvcihkb21haW5zVG9CbG9j
ay5kb21haW5zVG9CbG9ja0J1dEtlZXBDb29raWVzRm9yKTsKICAgICAgICAgICAgIHN0b3JhZ2VT
ZXNzaW9uLT5zZXREb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbkFzRmlyc3RQYXJ0eShkb21haW5z
VG9CbG9jay5kb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbkFzRmlyc3RQYXJ0eSk7CiAgICAgICAg
IH0KKworICAgICAgICBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zV2l0aFVzZXJJ
bnRlcmFjdGlvblF1aXJrOworICAgICAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IGRvbWFpbnNUb0Js
b2NrLmRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uQXNGaXJzdFBhcnR5KSB7CisgICAgICAgICAg
ICBpZiAobmVlZHNVc2VySW50ZXJhY3Rpb25RdWlyayhkb21haW4pKQorICAgICAgICAgICAgICAg
IGRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uUXVpcmsuYWRkKGRvbWFpbik7CisgICAgICAgIH0K
KworICAgICAgICBpZiAobV9kb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvblF1aXJrICE9IGRvbWFp
bnNXaXRoVXNlckludGVyYWN0aW9uUXVpcmspIHsKKyAgICAgICAgICAgIG1fZG9tYWluc1dpdGhV
c2VySW50ZXJhY3Rpb25RdWlyayA9IGRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uUXVpcms7Cisg
ICAgICAgICAgICBtX25ldHdvcmtTZXNzaW9uLT5uZXR3b3JrUHJvY2VzcygpLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlNldERv
bWFpbnNXaXRoVXNlckludGVyYWN0aW9uKGRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uUXVpcmsp
LCAwKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggNjUyMzgwMWE1
YzU4ODZiNWVmYjFmYjUzMWQwNTNhYWVkNjkzYTkzMS4uYjg1NGYwMTc4OWE2ODEwMjJiNzFlNzE3
ZTlmNTc3ODVjYmVmNTcxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI3Myw2ICsyNzMsNyBAQCBzdHJ1Y3QgVGhpcmRQYXJ0eURhdGEgewog
ICAgIHZvaWQgbG9nVGVzdGluZ0V2ZW50KGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgY2FsbEdy
YW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BG
cmFtZURvbWFpbiYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCBTdG9yYWdlQWNjZXNzU2NvcGUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmKTsKICAgICB2b2lkIHJlbW92ZUFsbFN0b3Jh
Z2VBY2Nlc3MoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICBib29sIG5lZWRzVXNl
ckludGVyYWN0aW9uUXVpcmsoY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsKICAgICB2
b2lkIGNhbGxVcGRhdGVQcmV2YWxlbnREb21haW5zVG9CbG9ja0Nvb2tpZXNGb3JIYW5kbGVyKGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29raWVzRm9yJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGNhbGxIYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5k
bGVyKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmKTsKIApAQCAtMzMyLDYgKzMzMyw4IEBAIHByaXZhdGU6CiAgICAg
V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6SXNFcGhlbWVyYWwgbV9pc0VwaGVtZXJh
bCB7IFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6OklzRXBoZW1lcmFsOjpObyB9Owog
ICAgIEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+IG1fZG9tYWluc1dpdGhFcGhlbWVyYWxVc2Vy
SW50ZXJhY3Rpb247CiAKKyAgICBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiBtX2RvbWFpbnNX
aXRoVXNlckludGVyYWN0aW9uUXVpcms7CisKICAgICBib29sIG1faGFzU2NoZWR1bGVkUHJvY2Vz
c1N0YXRzIHsgZmFsc2UgfTsKIAogICAgIGJvb2wgbV9maXJzdE5ldHdvcmtQcm9jZXNzQ3JlYXRl
ZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNz
RGF0YVN0b3JlUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0Rh
dGFTdG9yZVBhcmFtZXRlcnMuaAppbmRleCAzMGRiNGM5YjUzODg2YTA4YjMxN2E1Mjk0ZGM3MjUw
MTNhMDNmNTk1Li5lNjI2MzQyNDRlODFhOWVjNWU3NjdjYjcyYWYwNzFlZGUzNWRmOTUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVy
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0
ZXJzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC00OCw2ICs0OCw3IEBAIHN0cnVjdCBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1l
dGVycyB7CiAgICAgSGFzaE1hcDx1bnNpZ25lZCwgV2FsbFRpbWU+IHBsdWdJbkF1dG9TdGFydE9y
aWdpbkhhc2hlczsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIFdl
YkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgdGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nTW9kZSB7IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFsbCB9Owor
ICAgIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNXaXRoVXNlcklu
dGVyYWN0aW9uOwogI2VuZGlmCiAgICAgYm9vbCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxl
ZCB7IGZhbHNlIH07CiAKQEAgLTczLDYgKzc0LDcgQEAgdm9pZCBXZWJQcm9jZXNzRGF0YVN0b3Jl
UGFyYW1ldGVyczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8
PCBwbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXM7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKICAgICBlbmNvZGVyIDw8IHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU7
CisgICAgZW5jb2RlciA8PCBkb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbjsKICNlbmRpZgogICAg
IGVuY29kZXIgPDwgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ7CiB9CkBAIC0xNDQsNiAr
MTQ2LDExIEBAIE9wdGlvbmFsPFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzPiBXZWJQcm9j
ZXNzRGF0YVN0b3JlUGFyYW1ldGVyczo6ZGVjb2RlKERlCiAgICAgZGVjb2RlciA+PiB0aGlyZFBh
cnR5Q29va2llQmxvY2tpbmdNb2RlOwogICAgIGlmICghdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPEhhc2hT
ZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+PiBkb21haW5zV2l0aFVzZXJJbnRlcmFjdGlv
bjsKKyAgICBkZWNvZGVyID4+IGRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uOworICAgIGlmICgh
ZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb24pCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CiAjZW5kaWYKIAogICAgIGJvb2wgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQgPSBmYWxz
ZTsKQEAgLTE2Niw2ICsxNzMsNyBAQCBPcHRpb25hbDxXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1l
dGVycz4gV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnM6OmRlY29kZShEZQogICAgICAgICBX
VEZNb3ZlKCpwbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMpLAogI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgICAgICp0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2Rl
LAorICAgICAgICBXVEZNb3ZlKCpkb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbiksCiAjZW5kaWYK
ICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQKICAgICB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKaW5kZXggOWMwNmIwMDdhY2ZhMWY4ZmJjM2NkYWFhZGM2ZWNlZTY4MzVhNzYwZi4uNjBlMTM2
MjZlOTk2ZThmZTAyMGVjZWVlYTI5YWRkNGI0MmM4MDU5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0x
MTk5LDYgKzExOTksMTEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRUb1NhbWVTaXRl
U3RyaWN0Q29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2UKIAogICAgIHNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldFRvU2FtZVNpdGVTdHJpY3RD
b29raWVzRm9yVGVzdGluZyhzZXNzaW9uSUQsIGRvbWFpbiksIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKIH0KKwordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXREb21haW5zV2l0aFVz
ZXJJbnRlcmFjdGlvbihIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmIGRvbWFp
bnMpCit7CisgICAgcHJvY2Vzc1Bvb2woKS5zZXREb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbihX
VEZNb3ZlKGRvbWFpbnMpKTsKK30KICNlbmRpZiAvLyBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFU
SVNUSUNTKQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldEFkQ2xpY2tBdHRyaWJ1dGlv
bkRlYnVnTW9kZShib29sIGRlYnVnTW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggMzAzODg5YzNkOTc3Mjc3
NTdlZGRiZmJjNmY2MDc5MzMyNmQ2Yzg4Ny4uZDZlY2I1NjY3OWZkNWUyMWEyOGQ4YTM5ZTlhZDE0
Y2U2MTFiNGMwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTE4Miw2ICsxODIsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRTaG91bGRFbmJsZVNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRGb3JUZXN0aW5nKFBB
TDo6U2Vzc2lvbklELCBXZWJDb3JlOjpTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5hYmxlZCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldEZpcnN0UGFydHlXZWJz
aXRlRGF0YVJlbW92YWxNb2RlRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6Rmly
c3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CiAgICAgdm9pZCBzZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llc0ZvclRlc3RpbmcoUEFMOjpT
ZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKKyAgICB2b2lkIHNldERvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uKEhhc2hTZXQ8
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYpOwogI2VuZGlmCiAKICAgICB2b2lkIHNldEFk
Q2xpY2tBdHRyaWJ1dGlvbkRlYnVnTW9kZShib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdl
cy5pbgppbmRleCA4Mzc5ZDlmNTkxMDBiNmU2ZTEwNjVhN2RmNTY0MTUxMjMxNTM0MzY5Li4xNWY5
YTgwZTE1ZjMxYmVkOTRiODYxOTlkMjE0NWQ2ZDIyMGJiZGFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
Lm1lc3NhZ2VzLmluCkBAIC01MCw2ICs1MCw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNz
UHJveHkgTGVnYWN5UmVjZWl2ZXIgTm90UmVmQ291bnRlZCB7CiAgICAgUmVxdWVzdFN0b3JhZ2VB
Y2Nlc3NDb25maXJtKFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBz
dWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4p
IC0+IChib29sIHVzZXJEaWRHcmFudEFjY2VzcykgQXN5bmMKICAgICBEZWxldGVXZWJzaXRlRGF0
YUluVUlQcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIE9wdGlvblNl
dDxXZWJLaXQ6OldlYnNpdGVEYXRhRmV0Y2hPcHRpb24+IGZldGNoT3B0aW9ucywgVmVjdG9yPFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zKSAtPiAoSGFzaFNldDxXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbj4gZG9tYWluc1dpdGhNYXRjaGluZ0RhdGFSZWNvcmRzKSBBc3luYwog
ICAgIERpZENvbW1pdENyb3NzU2l0ZUxvYWRXaXRoRGF0YVRyYW5zZmVyRnJvbVByZXZhbGVudFJl
c291cmNlKFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQpCisgICAgU2V0RG9t
YWluc1dpdGhVc2VySW50ZXJhY3Rpb24oSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
bj4gZG9tYWlucykKICNlbmRpZgogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAg
Q29udGVudEV4dGVuc2lvblJ1bGVzKFdlYktpdDo6VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRp
ZmllciBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwCmluZGV4IGRiZmQ5OTRlYzA3MGY0NmQ5NmY4ZjY3NGU1ODA0Nzc3Y2QyZjlhYmQuLmUyOTJl
MGU0N2NmYjdiZDk1NDMwYjAxNjVlZmExMjM5MmEwOTBjNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTk5Nyw2ICs5OTcsNyBAQCBXZWJQcm9jZXNz
RGF0YVN0b3JlUGFyYW1ldGVycyBXZWJQcm9jZXNzUG9vbDo6d2ViUHJvY2Vzc0RhdGFTdG9yZVBh
cmFtZXRlcnMoV2ViUAogICAgICAgICBXVEZNb3ZlKHBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hl
cyksCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICAgICAgd2Vic2l0
ZURhdGFTdG9yZS50aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKCksCisgICAgICAgIG1fZG9t
YWluc1dpdGhVc2VySW50ZXJhY3Rpb24sCiAjZW5kaWYKICAgICAgICAgd2Vic2l0ZURhdGFTdG9y
ZS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpCiAgICAgfTsKQEAgLTIzNTAsNiArMjM1
MSwxMiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpkaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERh
dGFUcmFuc2ZlcihQQUw6OlNlc3Npb25JRCBzZXNzaQogICAgIG1fbmV0d29ya1Byb2Nlc3MtPmRp
ZENvbW1pdENyb3NzU2l0ZUxvYWRXaXRoRGF0YVRyYW5zZmVyKHNlc3Npb25JRCwgZnJvbURvbWFp
biwgdG9Eb21haW4sIG5hdmlnYXRpb25EYXRhVHJhbnNmZXIsIHdlYlBhZ2VQcm94eUlELCB3ZWJQ
YWdlSUQpOwogfQogCit2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXREb21haW5zV2l0aFVzZXJJbnRl
cmFjdGlvbihIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmIGRvbWFpbnMpCit7
CisgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXREb21haW5z
V2l0aFVzZXJJbnRlcmFjdGlvbihkb21haW5zKSk7CisgICAgbV9kb21haW5zV2l0aFVzZXJJbnRl
cmFjdGlvbiA9IFdURk1vdmUoZG9tYWlucyk7Cit9CisKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNl
ZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRm9yVGVzdGluZyhjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgZmlyc3RQYXJ0eURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRoaXJkUGFydHlE
b21haW4sIGJvb2wgc2hvdWxkU2NoZWR1bGVOb3RpZmljYXRpb24sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIGNhbGxiYWNrQWdncmVn
YXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IDVjNjBh
MzJmOTc4MDE3ZmM1YWUyZDg0ZTMxMjczY2VhMTVhNGQyNGMuLmJmMmQ4YzdlNTJkZmIwODZmNjU1
MmFlMTMwNWNkNzhkOGU2Njc3YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuaApAQCAtNTA0LDYgKzUwNCw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgdm9pZCBkaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERh
dGFUcmFuc2ZlcihQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4mIGZyb21Eb21haW4sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFp
biwgT3B0aW9uU2V0PFdlYkNvcmU6OkNyb3NzU2l0ZU5hdmlnYXRpb25EYXRhVHJhbnNmZXI6OkZs
YWc+LCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7Cisg
ICAgdm9pZCBzZXREb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbihIYXNoU2V0PFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluPiYmKTsKICAgICB2b2lkIHNlZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
Rm9yVGVzdGluZyhjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURv
bWFpbiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHRoaXJkUGFydHlEb21haW4s
IGJvb2wgc2hvdWxkU2NoZWR1bGVOb3RpZmljYXRpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAjZW5kaWYKIApAQCAtODIxLDYgKzgyMiwxMCBAQCBwcml2YXRlOgogICAgIGJvb2wg
bV9pc0RlbGF5ZWRXZWJQcm9jZXNzTGF1bmNoRGlzYWJsZWQgeyBmYWxzZSB9OwogI2VuZGlmCiAg
ICAgYm9vbCBtX3VzZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MgeyBmYWxzZSB9OworCisj
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBIYXNoU2V0PFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluPiBtX2RvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uOworI2VuZGlm
CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNl
cnZlci5jcHAKaW5kZXggNWIzYjY4MzNjMWU5NTdmNzkwM2ZjYWUyZTE0YjdjNGU5ZWQ0MTk5Yy4u
NzI0N2E0ZWFjZjI2OWI2MTlmNDViMDRiMDJkNzY4YThiZDNmYTVjNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2Vy
dmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyogQ29weXJpZ2h0IChD
KSAyMDE5LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogKgogKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0xNDEsNiArMTQxLDExIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXI6OmNsZWFyU3RhdGUoKQogICAgIG1fbGFzdFJlcG9ydGVkVXNlckludGVyYWN0aW9u
TWFwLmNsZWFyKCk7CiB9CiAKK2Jvb2wgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6Omhhc0hhZFVz
ZXJJbnRlcmFjdGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKSBjb25zdAorewor
ICAgIHJldHVybiBtX2RvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uLmNvbnRhaW5zKGRvbWFpbik7
Cit9CisKIHZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ0ZvbnRMb2FkKGNvbnN0IERv
Y3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBmYW1pbHlOYW1lLCBib29sIGxvYWRTdGF0
dXMpCiB7CiAgICAgaWYgKGlzRXBoZW1lcmFsKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNl
cnZlci5oCmluZGV4IGU2MmFhMmFmZTgwODUwNDk3ZDg4NGQ1MzZkMDhkNTA4N2QxNjEyZGYuLjE4
NmZhYTEzZjY4NDI0ZDAyM2ZmZTc0YmE5NTc0ODAzZjIzZDdjODMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNv
dXJjZUxvYWRPYnNlcnZlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyogQ29weXJpZ2h0IChDKSAyMDE5
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogKgogKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC02Miw2ICs2Miw4IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIGhhc1N0
YXRpc3RpY3MoKSBjb25zdCBmaW5hbCB7IHJldHVybiAhbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAu
aXNFbXB0eSgpOyB9CiAKKyAgICB2b2lkIHNldERvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uKEhh
c2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYgZG9tYWlucykgZmluYWwgeyBtX2Rv
bWFpbnNXaXRoVXNlckludGVyYWN0aW9uID0gV1RGTW92ZShkb21haW5zKTsgfQorICAgIGJvb2wg
aGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJikg
Y29uc3QgZmluYWw7CiBwcml2YXRlOgogICAgIFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MmIGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJik7CiAgICAgdm9pZCBzY2hlZHVsZU5vdGlmaWNhdGlv
bklmTmVlZGVkKCk7CkBAIC03OCw2ICs4MCw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpU
aW1lciBtX25vdGlmaWNhdGlvblRpbWVyOwogCisgICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbj4gbV9kb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbjsKICNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKICAgICB1aW50NjRfdCBtX2xvZ2dpbmdDb3VudGVyIHsgMCB9OwogICAgIHN0
YXRpYyBib29sIHNob3VsZExvZ1VzZXJJbnRlcmFjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcAppbmRleCA2OTJlMjMxZTZlNmQ2MDdiYmI5Y2ZjMTQxMzJhOTdhNzlk
ZTE4MTk3Li5lOTEzNmM0ZWU5Yjg1YzMzNDk2MTUwZGQ0NWQ5OTk4MTc5ODg2MzQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC01MDgsOCArNTA4LDEyIEBAIHZv
aWQgV2ViUHJvY2Vzczo6c2V0V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMoV2ViUHJvY2Vzc0Rh
dGFTdG9yZVBhcmFtZXRlcnMmJiBwCiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNU
SUNTKQogICAgIG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA9IHBhcmFtZXRlcnMudGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTsKLSAgICBpZiAocGFyYW1ldGVycy5yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRW5hYmxlZCAmJiAhUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZElmRXhp
c3RzKCkpCi0gICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRTaGFyZWQoKm5ldyBXZWJS
ZXNvdXJjZUxvYWRPYnNlcnZlcihwYXJhbWV0ZXJzLnNlc3Npb25JRC5pc0VwaGVtZXJhbCgpID8g
V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6SXNFcGhlbWVyYWw6OlllcyA6IFdlYkNv
cmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6OklzRXBoZW1lcmFsOjpObykpOworICAgIGlmIChw
YXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKSB7CisgICAgICAgIGlmICgh
UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZElmRXhpc3RzKCkpCisgICAgICAgICAgICBSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6c2V0U2hhcmVkKCpuZXcgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIo
cGFyYW1ldGVycy5zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSA/IFdlYkNvcmU6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3M6OklzRXBoZW1lcmFsOjpZZXMgOiBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzOjpJc0VwaGVtZXJhbDo6Tm8pKTsKKyAgICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6
OnNoYXJlZCgpLnNldERvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uKFdURk1vdmUocGFyYW1ldGVy
cy5kb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbikpOworICAgIH0KKyAgICAKICNlbmRpZgogCiAg
ICAgcmVzZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMoV1RGTW92ZShwYXJhbWV0ZXJzLnBs
dWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcykpOwpAQCAtMTg5NSw2ICsxODk5LDExIEBAIHZvaWQg
V2ViUHJvY2Vzczo6c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmdNb2RlIHRoCiAgICAgbV90aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlID0g
dGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTsKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwog
fQorCit2b2lkIFdlYlByb2Nlc3M6OnNldERvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uKEhhc2hT
ZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYgZG9tYWlucykKK3sKKyAgICBSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkuc2V0RG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb24oV1RG
TW92ZShkb21haW5zKSk7Cit9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IDE0YzAyMjhiMzQ4YTZmMzVkMjNi
OGMwYmVkZTZlNzQ0ZjA2NDBkMzguLmE5NTNjOGFkOTYxOWUxMDk4Mzk2NTBhNmM0ODA3OGQ2YzM5
ZjA4M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ2MSw2ICs0
NjEsNyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykK
ICAgICB2b2lkIHNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoV2ViQ29yZTo6VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAg
ICB2b2lkIHNldERvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uKEhhc2hTZXQ8V2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4+JiYpOwogI2VuZGlmCiAKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6
ZVByb2Nlc3MoY29uc3QgQXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpp
bmRleCBjZmEzZTRkMDAzN2VhYTU3MzM5ZTQzMzcxYWYxM2RhZjZiM2ZjMmY1Li5mNWJjYzA2ZThl
ZTVhMDUzZjU1OWQ0ZGJmMzM4ODEwOTA3MDA0ZjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJp
Z2h0IChDKSAyMDEwLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5
cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE1OCw2ICsxNTgsNyBAQCBtZXNzYWdlcyAtPiBX
ZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIE5vdFJlZkNvdW50ZWQgewogI2lmIEVOQUJMRShSRVNP
VVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgU2VlZFJlc291cmNlTG9hZFN0YXRpc3RpY3NGb3JU
ZXN0aW5nKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGZpcnN0UGFydHlEb21haW4sIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRoaXJkUGFydHlEb21haW4sIGJvb2wgc2hvdWxkU2NoZWR1
bGVOb3RpZmljYXRpb24pIC0+ICgpIEFzeW5jCiAgICAgU2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nTW9kZShlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9k
ZSBibG9ja2luZ01vZGUpIC0+ICgpIEFzeW5jCisgICAgU2V0RG9tYWluc1dpdGhVc2VySW50ZXJh
Y3Rpb24oSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWlucykKICNlbmRp
ZgogCiAjaWYgUExBVEZPUk0oSU9TKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402520</attachid>
            <date>2020-06-22 16:40:20 -0700</date>
            <delta_ts>2020-06-22 19:12:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213418-20200622164019.patch</filename>
            <type>text/plain</type>
            <size>47795</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzMzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmRmODI5ODBmNmFiNzk1
NDU2ZGIwYzgyMDY3YWUwNDEyODc4ZjNiOS4uZWU1OGExYTNkY2FkY2NiZTY1M2YyNjljODVhZGFj
MzY2ZjQzZmUxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDIwLTA2LTIyICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFN0b3JhZ2UgQWNjZXNz
IEFQSTogQWRkIHRoZSBjYXBhYmlsaXR5IHRvIGNhbGwgdGhlIFN0b3JhZ2UgQWNjZXNzIEFQSSBh
cyBhIHF1aXJrLCBvbiBiZWhhbGYgb2Ygd2Vic2l0ZXMgdGhhdCBzaG91bGQgYmUgZG9pbmcgaXQg
dGhlbXNlbHZlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjEzNDE4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82NDU0OTQyOT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIFRoaXMg
cGF0Y2ggYWRkcyBxdWlya3MgZm9yIHNwZWNpZmljIHdlYnNpdGVzLgorICAgICAgICBUaGUgZ2Vu
ZXJhbCBmdW5jdGlvbmFsaXR5IHRoYXQncyB0b3VjaGVkIGhhcyB0ZXN0cyB1bmRlcgorICAgICAg
ICBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvLgorCisgICAgICAgICogZG9t
L0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aXNUb3BEb2N1bWVudCBj
b25zdCk6CisgICAgICAgICAgICBOZXcgY29udmVuaWVuY2UgZnVuY3Rpb24uCisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6c2V0VXNlckRpZEludGVyYWN0V2l0aFBhZ2UpOgorICAgICAgICAg
ICAgVXNlIG9mIHRoZSBuZXcgY29udmVuaWVuY2UgZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6dXNlckRpZEludGVyYWN0V2l0aFBhZ2UgY29uc3QpOgorICAgICAgICAgICAg
VXNlIG9mIHRoZSBuZXcgY29udmVuaWVuY2UgZnVuY3Rpb24uCisgICAgICAgICogZG9tL0RvY3Vt
ZW50U3RvcmFnZUFjY2Vzcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0b3JhZ2VB
Y2Nlc3M6Omhhc1N0b3JhZ2VBY2Nlc3NRdWlja0NoZWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50U3RvcmFnZUFjY2Vzczo6aGFzU3RvcmFnZUFjY2Vzcyk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6Omhhc1N0b3JhZ2VBY2Nlc3NGb3JEb2N1bWVudFF1aXJr
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50U3RvcmFnZUFjY2Vzczo6cmVxdWVzdFN0b3Jh
Z2VBY2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpyZXF1
ZXN0U3RvcmFnZUFjY2Vzc1F1aWNrQ2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRT
dG9yYWdlQWNjZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc0ZvckRvY3VtZW50UXVpcmspOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2Vz
c0Zvck5vbkRvY3VtZW50UXVpcmspOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdG9yYWdl
QWNjZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1F1aXJrKToKKyAgICAgICAgICAgIFRoZXNlIGZ1
bmN0aW9ucyBhcmUgc3BsaXQgdXAgdG8gYWxsb3cgcXVpcmtzIHRvIGNhbGwgZGlyZWN0bHkgaW50
byB0aGUKKyAgICAgICAgICAgIGltcGxlbWVudGF0aW9uIG9mIHRoZSBTdG9yYWdlIEFjY2VzcyBB
UEkgd2l0aG91dCB0aGUgSmF2YVNjcmlwdAorICAgICAgICAgICAgcHJvbWlzZSB0aGF0IGdvZXMg
d2l0aCB0aGUgd2ViIEFQSS4gSXQgYWxzbyBhbGxvd3MgZm9yIHF1aXJrcyB0byBjYWxsCisgICAg
ICAgICAgICB0aGUgQVBJIHdpdGhvdXQgYW4gaWZyYW1lIGRvY3VtZW50LgorICAgICAgICAqIGRv
bS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuaDoKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpkaXNwYXRjaE1vdXNlRXZlbnQpOgorICAgICAgICAg
ICAgVGhlIHR3byBleGlzdGluZyBxdWlya3MgYXJlIGZvciBjbGljayBldmVudHMuCisgICAgICAg
ICogbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6c2V0RG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6Omhhc0hhZFVzZXJJbnRlcmFjdGlvbiBj
b25zdCk6CisgICAgICAgICAgICBUaGVzZSB0d28gbmV3IGZ1bmN0aW9ucyBhbGxvdyB0aGUgU3Rv
cmFnZSBBY2Nlc3MgQVBJIHF1aXJrcworICAgICAgICAgICAgdG8gc3luY2hyb25vdXNseSBjaGVj
ayBpZiBpdCdzIHdvcnRoIGNhbGxpbmcgdGhlIEFQSSBvciBub3QuCisgICAgICAgICAgICBJZiB0
aGVyZSBoYXMgYmVlbiBubyB1c2VyIGludGVyYWN0aW9uIGZvciB0aGUgcmVxdWVzdGluZworICAg
ICAgICAgICAgZG9tYWluLCB0aGVyZSBpcyBubyBuZWVkIHRvIGNhbGwgdGhlIEFQSS4KKyAgICAg
ICAgKiBwYWdlL1F1aXJrcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpRdWlya3M6OnRyaWdnZXJP
cHRpb25hbFN0b3JhZ2VBY2Nlc3NRdWlyayBjb25zdCk6CisgICAgICAgICAgICBUaGlzIGlzIHRo
ZSBuZXcgcXVpcmtzIGZ1bmN0aW9uLCBoaWRpbmcgdGhlIHNwZWNpZmljcyBvZgorICAgICAgICAg
ICAgY2VydGFpbiBlbGVtZW50cyBjbGlja2VkIGFuZCBmb3Igd2hpY2ggd2Vic2l0ZXMuIEl0IGFs
c28KKyAgICAgICAgICAgIGNhbGxzIHRoZSBTdG9yYWdlIEFjY2VzcyBBUEkuCisgICAgICAgICog
cGFnZS9RdWlya3MuaDoKKwogMjAyMC0wNi0yMiAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9u
QGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgbWFjT1MgdmVyc2lvbiBtYWNyb3MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggNGY2ZTlhNWM3Y2Q5YjdjN2JlODc3NTc2NGE2NTMzYWQ0YjMxNTM2My4uNTZhZmRjOWNk
YWIyODc3ZTkwZDVlNWI5YTllMjE3Y2FlMjFhYjQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBA
QAorMjAyMC0wNi0yMiAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAg
ICAgICBTdG9yYWdlIEFjY2VzcyBBUEk6IEFkZCB0aGUgY2FwYWJpbGl0eSB0byBjYWxsIHRoZSBT
dG9yYWdlIEFjY2VzcyBBUEkgYXMgYSBxdWlyaywgb24gYmVoYWxmIG9mIHdlYnNpdGVzIHRoYXQg
c2hvdWxkIGJlIGRvaW5nIGl0IHRoZW1zZWx2ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzQxOAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjQ1
NDk0Mjk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhlc2UgY2hhbmdlcyBhcmUgZm9yIGZvcndhcmRpbmcgSVRQJ3Mga25vd2xlZGdlIG9mIHVzZXIg
aW50ZXJhY3Rpb24KKyAgICAgICAgZm9yIHNwZWNpZmljIHF1aXJrcyBkb21haW5zIHRvIHRoZSBX
ZWJLaXQ6OldlYlByb2Nlc3NQb29sIHdoZXJlIGl0IGluCisgICAgICAgIHR1cm4gY2FuIGJlIGRp
c3RyaWJ1dGVkIHRvIGFsbCBleGlzdGluZyBhbmQgbmV3IFdlYiBDb250ZW50IHByb2Nlc3Nlcy4K
KworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpuZWVkc1VzZXJJbnRlcmFjdGlvblF1aXJrIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjYWxsVXBkYXRlUHJldmFsZW50
RG9tYWluc1RvQmxvY2tDb29raWVzRm9ySGFuZGxlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAg
KiBTaGFyZWQvV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMuaDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXREb21haW5zV2l0aFVzZXJJbnRlcmFjdGlv
bik6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMu
aW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OndlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldERvbWFpbnNXaXRoVXNlckludGVyYWN0
aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6Omhhc0hhZFVzZXJJbnRlcmFj
dGlvbiBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNv
dXJjZUxvYWRPYnNlcnZlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnNldFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0
ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2V0RG9tYWluc1dpdGhVc2VySW50
ZXJhY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKwogMjAyMC0wNi0yMiAgV2Vuc29u
IEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdIFdlYlBh
Z2VQcm94eTo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2Ugc2hvdWxkIHNhbml0aXplIGl0cyBmaWxl
bmFtZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCAzMjRjYWNlZDFjMzBlZGQ4YmI4OTczMjQ4MjUx
NjIzMzBlNGFhNGJlLi43ZTZlOTkwMzNjMDJhY2UzY2JjNTE4NzQ1OTVkNDlmMDBjMzc4MmM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaApAQCAtMyw3ICszLDcgQEAKICAqICAgICAgICAgICAoQykgMTk5
OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAw
MSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwNiBB
bGV4ZXkgUHJvc2t1cnlha292IChhcEB3ZWJraXQub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0
LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChD
KSAyMDA4LCAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRw
Oi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29y
cG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTEwMzMsNiArMTAzMyw3IEBA
IHB1YmxpYzoKIAogICAgIERvY3VtZW50KiBwYXJlbnREb2N1bWVudCgpIGNvbnN0OwogICAgIFdF
QkNPUkVfRVhQT1JUIERvY3VtZW50JiB0b3BEb2N1bWVudCgpIGNvbnN0OworICAgIGJvb2wgaXNU
b3BEb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuICZ0b3BEb2N1bWVudCgpID09IHRoaXM7IH0KICAg
ICAKICAgICBTY3JpcHRSdW5uZXImIHNjcmlwdFJ1bm5lcigpIHsgcmV0dXJuICptX3NjcmlwdFJ1
bm5lcjsgfQogICAgIFNjcmlwdE1vZHVsZUxvYWRlciYgbW9kdWxlTG9hZGVyKCkgeyByZXR1cm4g
Km1fbW9kdWxlTG9hZGVyOyB9CkBAIC0xMjQzLDggKzEyNDQsOCBAQCBwdWJsaWM6CiAgICAgYm9v
bCBwcm9jZXNzaW5nVXNlckdlc3R1cmVGb3JNZWRpYSgpIGNvbnN0OwogICAgIHZvaWQgdXNlckFj
dGl2YXRlZE1lZGlhRmluaXNoZWRQbGF5aW5nKCkgeyBtX3VzZXJBY3RpdmF0ZWRNZWRpYUZpbmlz
aGVkUGxheWluZ1RpbWVzdGFtcCA9IE1vbm90b25pY1RpbWU6Om5vdygpOyB9CiAKLSAgICB2b2lk
IHNldFVzZXJEaWRJbnRlcmFjdFdpdGhQYWdlKGJvb2wgdXNlckRpZEludGVyYWN0V2l0aFBhZ2Up
IHsgQVNTRVJUKCZ0b3BEb2N1bWVudCgpID09IHRoaXMpOyBtX3VzZXJEaWRJbnRlcmFjdFdpdGhQ
YWdlID0gdXNlckRpZEludGVyYWN0V2l0aFBhZ2U7IH0KLSAgICBib29sIHVzZXJEaWRJbnRlcmFj
dFdpdGhQYWdlKCkgY29uc3QgeyBBU1NFUlQoJnRvcERvY3VtZW50KCkgPT0gdGhpcyk7IHJldHVy
biBtX3VzZXJEaWRJbnRlcmFjdFdpdGhQYWdlOyB9CisgICAgdm9pZCBzZXRVc2VyRGlkSW50ZXJh
Y3RXaXRoUGFnZShib29sIHVzZXJEaWRJbnRlcmFjdFdpdGhQYWdlKSB7IEFTU0VSVChpc1RvcERv
Y3VtZW50KCkpOyBtX3VzZXJEaWRJbnRlcmFjdFdpdGhQYWdlID0gdXNlckRpZEludGVyYWN0V2l0
aFBhZ2U7IH0KKyAgICBib29sIHVzZXJEaWRJbnRlcmFjdFdpdGhQYWdlKCkgY29uc3QgeyBBU1NF
UlQoaXNUb3BEb2N1bWVudCgpKTsgcmV0dXJuIG1fdXNlckRpZEludGVyYWN0V2l0aFBhZ2U7IH0K
IAogICAgIC8vIFVzZWQgZm9yIHRlc3RpbmcuIENvdW50IGhhbmRsZXJzIGluIHRoZSBtYWluIGRv
Y3VtZW50LCBhbmQgb25lIHBlciBmcmFtZSB3aGljaCBjb250YWlucyBoYW5kbGVycy4KICAgICBX
RUJDT1JFX0VYUE9SVCB1bnNpZ25lZCB3aGVlbEV2ZW50SGFuZGxlckNvdW50KCkgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuY3BwCmluZGV4IDBmMWJm
NjI5MTk4Yjc0ZGM3MDliMzRhYjQ2MDNiYmU4OGRiZTMxNzIuLmQ0ZDAyNzUwMmYxOTk1N2UzNmMx
ODE1NmQxNjgwYzNhNWUyYWU1MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudFN0b3JhZ2VBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0
b3JhZ2VBY2Nlc3MuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTcyLDQ3ICs3Miw0OSBAQCB2b2lkIERvY3VtZW50U3RvcmFnZUFjY2Vz
czo6aGFzU3RvcmFnZUFjY2VzcyhEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxEZWZlcnJlZFBybwog
ICAgIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6ZnJvbShkb2N1bWVudCktPmhhc1N0b3JhZ2VBY2Nl
c3MoV1RGTW92ZShwcm9taXNlKSk7CiB9CiAKLXZvaWQgRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpy
ZXF1ZXN0U3RvcmFnZUFjY2VzcyhEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxEZWZlcnJlZFByb21p
c2U+JiYgcHJvbWlzZSkKK09wdGlvbmFsPGJvb2w+IERvY3VtZW50U3RvcmFnZUFjY2Vzczo6aGFz
U3RvcmFnZUFjY2Vzc1F1aWNrQ2hlY2soKQogewotICAgIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6
ZnJvbShkb2N1bWVudCktPnJlcXVlc3RTdG9yYWdlQWNjZXNzKFdURk1vdmUocHJvbWlzZSkpOwor
ICAgIEFTU0VSVChtX2RvY3VtZW50LnNldHRpbmdzKCkuc3RvcmFnZUFjY2Vzc0FQSUVuYWJsZWQo
KSk7CisKKyAgICBhdXRvKiBmcmFtZSA9IG1fZG9jdW1lbnQuZnJhbWUoKTsKKyAgICBpZiAoZnJh
bWUgJiYgaGFzRnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3MoKSkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisKKyAgICBpZiAoIWZyYW1lIHx8IG1fZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKS5pc1Vu
aXF1ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoZnJhbWUtPmlzTWFpbkZy
YW1lKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgYXV0byYgc2VjdXJpdHlPcmlnaW4g
PSBtX2RvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCk7CisgICAgYXV0byYgdG9wU2VjdXJpdHlPcmln
aW4gPSBtX2RvY3VtZW50LnRvcERvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4oKTsKKyAgICBpZiAo
c2VjdXJpdHlPcmlnaW4uZXF1YWwoJnRvcFNlY3VyaXR5T3JpZ2luKSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICBhdXRvKiBwYWdlID0gZnJhbWUtPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2Up
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9CiAK
IHZvaWQgRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpoYXNTdG9yYWdlQWNjZXNzKFJlZjxEZWZlcnJl
ZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKICAgICBBU1NFUlQobV9kb2N1bWVudC5zZXR0aW5ncygp
LnN0b3JhZ2VBY2Nlc3NBUElFbmFibGVkKCkpOwogCi0gICAgYXV0byogZnJhbWUgPSBtX2RvY3Vt
ZW50LmZyYW1lKCk7Ci0gICAgaWYgKGZyYW1lICYmIGhhc0ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNj
ZXNzKCkpIHsKLSAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExCb29sZWFuPih0cnVlKTsKKyAg
ICBhdXRvIHF1aWNrQ2hlY2tSZXN1bHQgPSBoYXNTdG9yYWdlQWNjZXNzUXVpY2tDaGVjaygpOwor
ICAgIGlmIChxdWlja0NoZWNrUmVzdWx0KSB7CisgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURM
Qm9vbGVhbj4oKnF1aWNrQ2hlY2tSZXN1bHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IAotICAgIGlmICghZnJhbWUgfHwgbV9kb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLmlzVW5pcXVl
KCkpIHsKLSAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExCb29sZWFuPihmYWxzZSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKSB7
Ci0gICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMQm9vbGVhbj4odHJ1ZSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgCi0gICAgYXV0byYgc2VjdXJpdHlPcmlnaW4gPSBtX2RvY3VtZW50
LnNlY3VyaXR5T3JpZ2luKCk7Ci0gICAgYXV0byYgdG9wU2VjdXJpdHlPcmlnaW4gPSBtX2RvY3Vt
ZW50LnRvcERvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4oKTsKLSAgICBpZiAoc2VjdXJpdHlPcmln
aW4uZXF1YWwoJnRvcFNlY3VyaXR5T3JpZ2luKSkgewotICAgICAgICBwcm9taXNlLT5yZXNvbHZl
PElETEJvb2xlYW4+KHRydWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAorCisgICAg
Ly8gVGhlIGV4aXN0ZW5jZSBvZiBhIGZyYW1lIGFuZCBwYWdlIGhhcyBiZWVuIGNoZWNrZWQgaW4g
cmVxdWVzdFN0b3JhZ2VBY2Nlc3NRdWlja0NoZWNrKCkuCisgICAgYXV0byogZnJhbWUgPSBtX2Rv
Y3VtZW50LmZyYW1lKCk7CisgICAgUkVMRUFTRV9BU1NFUlQoZnJhbWUpOwogICAgIGF1dG8qIHBh
Z2UgPSBmcmFtZS0+cGFnZSgpOwotICAgIGlmICghcGFnZSkgewotICAgICAgICBwcm9taXNlLT5y
ZWplY3QoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBhdXRvIHN1YkZyYW1l
RG9tYWluID0gUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KHNlY3Vy
aXR5T3JpZ2luLmhvc3QoKSk7Ci0gICAgYXV0byB0b3BGcmFtZURvbWFpbiA9IFJlZ2lzdHJhYmxl
RG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdCh0b3BTZWN1cml0eU9yaWdpbi5ob3N0KCkp
OwotICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLmhhc1N0b3JhZ2VBY2Nlc3MoV1RGTW92ZShz
dWJGcmFtZURvbWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21haW4pLCAqZnJhbWUsIFt3ZWFrVGhp
cyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChib29s
IGhhc0FjY2VzcykgeworICAgIFJFTEVBU0VfQVNTRVJUKHBhZ2UpOworCisgICAgcGFnZS0+Y2hy
b21lKCkuY2xpZW50KCkuaGFzU3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVj
a2VkQ3JlYXRlRnJvbUhvc3QobV9kb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLmhvc3QoKSksIFJl
Z2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChtX2RvY3VtZW50LnRvcERv
Y3VtZW50KCkuc2VjdXJpdHlPcmlnaW4oKS5ob3N0KCkpLCAqZnJhbWUsIFt3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKCp0aGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChib29sIGhhc0Fj
Y2VzcykgewogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwogCkBA
IC0xMjAsNjQgKzEyMiw3MyBAQCB2b2lkIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6aGFzU3RvcmFn
ZUFjY2VzcyhSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAgfSk7CiB9CiAKLXZv
aWQgRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWY8RGVmZXJy
ZWRQcm9taXNlPiYmIHByb21pc2UpCitib29sIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6aGFzU3Rv
cmFnZUFjY2Vzc0ZvckRvY3VtZW50UXVpcmsoRG9jdW1lbnQmIGRvY3VtZW50KQoreworICAgIGF1
dG8gcXVpY2tDaGVja1Jlc3VsdCA9IERvY3VtZW50U3RvcmFnZUFjY2Vzczo6ZnJvbShkb2N1bWVu
dCktPmhhc1N0b3JhZ2VBY2Nlc3NRdWlja0NoZWNrKCk7CisgICAgaWYgKHF1aWNrQ2hlY2tSZXN1
bHQpCisgICAgICAgIHJldHVybiAqcXVpY2tDaGVja1Jlc3VsdDsKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK3ZvaWQgRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhE
b2N1bWVudCYgZG9jdW1lbnQsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKK3sKKyAg
ICBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OmZyb20oZG9jdW1lbnQpLT5yZXF1ZXN0U3RvcmFnZUFj
Y2VzcyhXVEZNb3ZlKHByb21pc2UpKTsKK30KKworT3B0aW9uYWw8U3RvcmFnZUFjY2Vzc1F1aWNr
UmVzdWx0PiBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzUXVpY2tD
aGVjaygpCiB7CiAgICAgQVNTRVJUKG1fZG9jdW1lbnQuc2V0dGluZ3MoKS5zdG9yYWdlQWNjZXNz
QVBJRW5hYmxlZCgpKTsKLSAgICAKKwogICAgIGF1dG8qIGZyYW1lID0gbV9kb2N1bWVudC5mcmFt
ZSgpOwotICAgIGlmIChmcmFtZSAmJiBoYXNGcmFtZVNwZWNpZmljU3RvcmFnZUFjY2VzcygpKSB7
Ci0gICAgICAgIHByb21pc2UtPnJlc29sdmUoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICAKLSAgICBpZiAoIWZyYW1lIHx8IG1fZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKS5pc1VuaXF1
ZSgpIHx8ICFpc0FsbG93ZWRUb1JlcXVlc3RGcmFtZVNwZWNpZmljU3RvcmFnZUFjY2VzcygpKSB7
Ci0gICAgICAgIHByb21pc2UtPnJlamVjdCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IAotICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkgewotICAgICAgICBwcm9taXNlLT5yZXNv
bHZlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCisgICAgaWYgKGZyYW1lICYmIGhh
c0ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzKCkpCisgICAgICAgIHJldHVybiBTdG9yYWdlQWNj
ZXNzUXVpY2tSZXN1bHQ6OkdyYW50OworCisgICAgaWYgKCFmcmFtZSB8fCBtX2RvY3VtZW50LnNl
Y3VyaXR5T3JpZ2luKCkuaXNVbmlxdWUoKSB8fCAhaXNBbGxvd2VkVG9SZXF1ZXN0RnJhbWVTcGVj
aWZpY1N0b3JhZ2VBY2Nlc3MoKSkKKyAgICAgICAgcmV0dXJuIFN0b3JhZ2VBY2Nlc3NRdWlja1Jl
c3VsdDo6UmVqZWN0OworCisgICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKQorICAgICAgICBy
ZXR1cm4gU3RvcmFnZUFjY2Vzc1F1aWNrUmVzdWx0OjpHcmFudDsKKwogICAgIGF1dG8mIHRvcERv
Y3VtZW50ID0gbV9kb2N1bWVudC50b3BEb2N1bWVudCgpOwogICAgIGF1dG8mIHRvcFNlY3VyaXR5
T3JpZ2luID0gdG9wRG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKTsKICAgICBhdXRvJiBzZWN1cml0
eU9yaWdpbiA9IG1fZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKTsKLSAgICBpZiAoc2VjdXJpdHlP
cmlnaW4uZXF1YWwoJnRvcFNlY3VyaXR5T3JpZ2luKSkgewotICAgICAgICBwcm9taXNlLT5yZXNv
bHZlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCisgICAgaWYgKHNlY3VyaXR5T3Jp
Z2luLmVxdWFsKCZ0b3BTZWN1cml0eU9yaWdpbikpCisgICAgICAgIHJldHVybiBTdG9yYWdlQWNj
ZXNzUXVpY2tSZXN1bHQ6OkdyYW50OworCiAgICAgLy8gSWYgdGhlcmUgaXMgYSBzYW5kYm94LCBp
dCBoYXMgdG8gYWxsb3cgdGhlIHN0b3JhZ2UgYWNjZXNzIEFQSSB0byBiZSBjYWxsZWQuCi0gICAg
aWYgKG1fZG9jdW1lbnQuc2FuZGJveEZsYWdzKCkgIT0gU2FuZGJveE5vbmUgJiYgbV9kb2N1bWVu
dC5pc1NhbmRib3hlZChTYW5kYm94U3RvcmFnZUFjY2Vzc0J5VXNlckFjdGl2YXRpb24pKSB7Ci0g
ICAgICAgIHByb21pc2UtPnJlamVjdCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAor
ICAgIGlmIChtX2RvY3VtZW50LnNhbmRib3hGbGFncygpICE9IFNhbmRib3hOb25lICYmIG1fZG9j
dW1lbnQuaXNTYW5kYm94ZWQoU2FuZGJveFN0b3JhZ2VBY2Nlc3NCeVVzZXJBY3RpdmF0aW9uKSkK
KyAgICAgICAgcmV0dXJuIFN0b3JhZ2VBY2Nlc3NRdWlja1Jlc3VsdDo6UmVqZWN0OworCiAgICAg
Ly8gVGhlIGlmcmFtZSBoYXMgdG8gYmUgYSBkaXJlY3QgY2hpbGQgb2YgdGhlIHRvcCBkb2N1bWVu
dC4KLSAgICBpZiAoJnRvcERvY3VtZW50ICE9IG1fZG9jdW1lbnQucGFyZW50RG9jdW1lbnQoKSkg
ewotICAgICAgICBwcm9taXNlLT5yZWplY3QoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICAKLSAgICBpZiAoIVVzZXJHZXN0dXJlSW5kaWNhdG9yOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUo
KSkgewotICAgICAgICBwcm9taXNlLT5yZWplY3QoKTsKKyAgICBpZiAoJnRvcERvY3VtZW50ICE9
IG1fZG9jdW1lbnQucGFyZW50RG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIFN0b3JhZ2VBY2Nl
c3NRdWlja1Jlc3VsdDo6UmVqZWN0OworCisgICAgaWYgKCFVc2VyR2VzdHVyZUluZGljYXRvcjo6
cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpCisgICAgICAgIHJldHVybiBTdG9yYWdlQWNjZXNzUXVp
Y2tSZXN1bHQ6OlJlamVjdDsKKworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cit9CisKK3ZvaWQg
RG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWY8RGVmZXJyZWRQ
cm9taXNlPiYmIHByb21pc2UpCit7CisgICAgQVNTRVJUKG1fZG9jdW1lbnQuc2V0dGluZ3MoKS5z
dG9yYWdlQWNjZXNzQVBJRW5hYmxlZCgpKTsKKworICAgIGF1dG8gcXVpY2tDaGVja1Jlc3VsdCA9
IHJlcXVlc3RTdG9yYWdlQWNjZXNzUXVpY2tDaGVjaygpOworICAgIGlmIChxdWlja0NoZWNrUmVz
dWx0KSB7CisgICAgICAgICpxdWlja0NoZWNrUmVzdWx0ID09IFN0b3JhZ2VBY2Nlc3NRdWlja1Jl
c3VsdDo6R3JhbnQgPyBwcm9taXNlLT5yZXNvbHZlKCkgOiBwcm9taXNlLT5yZWplY3QoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIC8vIFRoZSBleGlzdGVuY2Ugb2YgYSBmcmFtZSBh
bmQgcGFnZSBoYXMgYmVlbiBjaGVja2VkIGluIHJlcXVlc3RTdG9yYWdlQWNjZXNzUXVpY2tDaGVj
aygpLgorICAgIGF1dG8qIGZyYW1lID0gbV9kb2N1bWVudC5mcmFtZSgpOworICAgIFJFTEVBU0Vf
QVNTRVJUKGZyYW1lKTsKICAgICBhdXRvKiBwYWdlID0gZnJhbWUtPnBhZ2UoKTsKLSAgICBpZiAo
IXBhZ2UpIHsKLSAgICAgICAgcHJvbWlzZS0+cmVqZWN0KCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9CisgICAgUkVMRUFTRV9BU1NFUlQocGFnZSk7CiAKICAgICBpZiAocGFnZS0+c2V0dGluZ3Mo
KS5zdG9yYWdlQWNjZXNzQVBJUGVyUGFnZVNjb3BlRW5hYmxlZCgpKQogICAgICAgICBtX3N0b3Jh
Z2VBY2Nlc3NTY29wZSA9IFN0b3JhZ2VBY2Nlc3NTY29wZTo6UGVyUGFnZTsKIAotICAgIGF1dG8g
c3ViRnJhbWVEb21haW4gPSBSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhv
c3Qoc2VjdXJpdHlPcmlnaW4uaG9zdCgpKTsKLSAgICBhdXRvIHRvcEZyYW1lRG9tYWluID0gUmVn
aXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KHRvcFNlY3VyaXR5T3JpZ2lu
Lmhvc3QoKSk7Ci0gICAgCi0gICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkucmVxdWVzdFN0b3Jh
Z2VBY2Nlc3MoV1RGTW92ZShzdWJGcmFtZURvbWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21haW4p
LCAqZnJhbWUsIG1fc3RvcmFnZUFjY2Vzc1Njb3BlLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vh
a1B0cigqdGhpcyksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoUmVxdWVzdFN0b3JhZ2VB
Y2Nlc3NSZXN1bHQgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICBwYWdlLT5jaHJvbWUoKS5jbGllbnQo
KS5yZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRl
RnJvbUhvc3QobV9kb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLmhvc3QoKSksIFJlZ2lzdHJhYmxl
RG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChtX2RvY3VtZW50LnRvcERvY3VtZW50KCku
c2VjdXJpdHlPcmlnaW4oKS5ob3N0KCkpLCAqZnJhbWUsIG1fc3RvcmFnZUFjY2Vzc1Njb3BlLCBb
dGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHByb21pc2UgPSBXVEZNb3ZlKHBy
b21pc2UpXSAoUmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXN1bHQgcmVzdWx0KSBtdXRhYmxlIHsKICAg
ICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMjA4LDYgKzIx
OSw3MSBAQCB2b2lkIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3Mo
UmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAgIH0pOwogfQogCit2b2lkIERvY3Vt
ZW50U3RvcmFnZUFjY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NGb3JEb2N1bWVudFF1aXJrKERv
Y3VtZW50JiBkb2N1bWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2Fz
R3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgRG9jdW1lbnRTdG9yYWdlQWNj
ZXNzOjpmcm9tKGRvY3VtZW50KS0+cmVxdWVzdFN0b3JhZ2VBY2Nlc3NGb3JEb2N1bWVudFF1aXJr
KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBEb2N1bWVudFN0b3JhZ2VB
Y2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzRm9yRG9jdW1lbnRRdWlyayhDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3sKKyAgICBhdXRvIHF1aWNrQ2hlY2tSZXN1bHQgPSByZXF1ZXN0U3RvcmFnZUFjY2Vzc1F1aWNr
Q2hlY2soKTsKKyAgICBpZiAocXVpY2tDaGVja1Jlc3VsdCkgeworICAgICAgICAqcXVpY2tDaGVj
a1Jlc3VsdCA9PSBTdG9yYWdlQWNjZXNzUXVpY2tSZXN1bHQ6OkdyYW50ID8gY29tcGxldGlvbkhh
bmRsZXIoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6OlllcykgOiBjb21wbGV0aW9uSGFuZGxlcihT
dG9yYWdlQWNjZXNzV2FzR3JhbnRlZDo6Tm8pOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IHJlcXVlc3RTdG9yYWdlQWNjZXNzUXVpcmsoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENy
ZWF0ZUZyb21Ib3N0KG1fZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKS5ob3N0KCkpLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpy
ZXF1ZXN0U3RvcmFnZUFjY2Vzc0Zvck5vbkRvY3VtZW50UXVpcmsoRG9jdW1lbnQmIGhvc3RpbmdE
b2N1bWVudCwgUmVnaXN0cmFibGVEb21haW4mJiByZXF1ZXN0aW5nRG9tYWluLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3sKKyAgICBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OmZyb20oaG9zdGluZ0RvY3VtZW50KS0+
cmVxdWVzdFN0b3JhZ2VBY2Nlc3NGb3JOb25Eb2N1bWVudFF1aXJrKFdURk1vdmUocmVxdWVzdGlu
Z0RvbWFpbiksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBEb2N1bWVu
dFN0b3JhZ2VBY2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzRm9yTm9uRG9jdW1lbnRRdWlyayhS
ZWdpc3RyYWJsZURvbWFpbiYmIHJlcXVlc3RpbmdEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAg
IGlmICghbV9kb2N1bWVudC5mcmFtZSgpIHx8ICFtX2RvY3VtZW50LmZyYW1lKCktPnBhZ2UoKSkg
eworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZDo6Tm8p
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHJlcXVlc3RTdG9yYWdlQWNjZXNzUXVpcmso
V1RGTW92ZShyZXF1ZXN0aW5nRG9tYWluKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwor
fQorCit2b2lkIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NRdWly
ayhSZWdpc3RyYWJsZURvbWFpbiYmIHJlcXVlc3RpbmdEb21haW4sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorewor
ICAgIEFTU0VSVChtX2RvY3VtZW50LnNldHRpbmdzKCkuc3RvcmFnZUFjY2Vzc0FQSUVuYWJsZWQo
KSk7CisgICAgUkVMRUFTRV9BU1NFUlQobV9kb2N1bWVudC5mcmFtZSgpICYmIG1fZG9jdW1lbnQu
ZnJhbWUoKS0+cGFnZSgpKTsKKworICAgIG1fZG9jdW1lbnQuZnJhbWUoKS0+cGFnZSgpLT5jaHJv
bWUoKS5jbGllbnQoKS5yZXF1ZXN0U3RvcmFnZUFjY2VzcyhXVEZNb3ZlKHJlcXVlc3RpbmdEb21h
aW4pLCBSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3QobV9kb2N1bWVu
dC50b3BEb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCkuaG9zdCgpKSwgKm1fZG9jdW1lbnQuZnJh
bWUoKSwgbV9zdG9yYWdlQWNjZXNzU2NvcGUsIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0g
KFJlcXVlc3RTdG9yYWdlQWNjZXNzUmVzdWx0IHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGlm
ICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgLy8gQ29uc3VtZSB0
aGUgdXNlciBnZXN0dXJlIG9ubHkgaWYgdGhlIHVzZXIgZXhwbGljaXRseSBkZW5pZWQgYWNjZXNz
LgorICAgICAgICBib29sIHNob3VsZFByZXNlcnZlVXNlckdlc3R1cmUgPSByZXN1bHQud2FzR3Jh
bnRlZCA9PSBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZDo6WWVzIHx8IHJlc3VsdC5wcm9tcHRXYXNT
aG93biA9PSBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246Ok5vOworCisgICAgICAgIGlmIChz
aG91bGRQcmVzZXJ2ZVVzZXJHZXN0dXJlKSB7CisgICAgICAgICAgICBtX2RvY3VtZW50LmV2ZW50
TG9vcCgpLnF1ZXVlTWljcm90YXNrKFt0aGlzLCB3ZWFrVGhpc10geworICAgICAgICAgICAgICAg
IGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICAgICAgZW5hYmxlVGVtcG9yYXJ5VGltZVVz
ZXJHZXN0dXJlKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChy
ZXN1bHQud2FzR3JhbnRlZCA9PSBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZDo6WWVzKQorICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6Olllcyk7Cisg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKHJlc3VsdC5wcm9tcHRXYXNTaG93biA9PSBT
dG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246OlllcykKKyAgICAgICAgICAgICAgICBzZXRXYXNF
eHBsaWNpdGx5RGVuaWVkRnJhbWVTcGVjaWZpY1N0b3JhZ2VBY2Nlc3MoKTsKKyAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpObyk7CisgICAgICAg
IH0KKworICAgICAgICBpZiAoc2hvdWxkUHJlc2VydmVVc2VyR2VzdHVyZSkgeworICAgICAgICAg
ICAgbV9kb2N1bWVudC5ldmVudExvb3AoKS5xdWV1ZU1pY3JvdGFzayhbdGhpcywgd2Vha1RoaXNd
IHsKKyAgICAgICAgICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICAgICAgICAgIGNv
bnN1bWVUZW1wb3JhcnlUaW1lVXNlckdlc3R1cmUoKTsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICB9CisgICAgfSk7Cit9CisKIHZvaWQgRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjplbmFibGVUZW1w
b3JhcnlUaW1lVXNlckdlc3R1cmUoKQogewogICAgIG1fdGVtcG9yYXJ5VXNlckdlc3R1cmUgPSBt
YWtlVW5pcXVlPFVzZXJHZXN0dXJlSW5kaWNhdG9yPihQcm9jZXNzaW5nVXNlckdlc3R1cmUsICZt
X2RvY3VtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0b3Jh
Z2VBY2Nlc3MuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuaApp
bmRleCBhN2UwMGE2MzA1YmRlYTMxMWI2ZTkxMjQyMDFlMzY1NzYxMDIwMjYyLi4wNjZjZWM3ZGZj
NTRkN2YyNzk5ZmQ3MTBlYWIxNjBhMTFhMDEzMjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50U3RvcmFnZUFjY2Vzcy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIlJlZ2lzdHJh
YmxlRG9tYWluLmgiCiAjaW5jbHVkZSAiU3VwcGxlbWVudGFibGUuaCIKKyNpbmNsdWRlIDx3dGYv
T3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC01Miw2ICs1MywxMSBAQCBlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NTY29wZSA6IGJv
b2wgewogICAgIFBlclBhZ2UKIH07CiAKK2VudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1F1aWNrUmVz
dWx0IDogYm9vbCB7CisgICAgR3JhbnQsCisgICAgUmVqZWN0Cit9OworCiBzdHJ1Y3QgUmVxdWVz
dFN0b3JhZ2VBY2Nlc3NSZXN1bHQgewogICAgIFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIHdhc0dy
YW50ZWQ7CiAgICAgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3duOwpA
QCAtNzIsMTEgKzc4LDIzIEBAIHB1YmxpYzoKICAgICB+RG9jdW1lbnRTdG9yYWdlQWNjZXNzKCk7
CiAKICAgICBzdGF0aWMgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKERvY3VtZW50JiwgUmVmPERlZmVy
cmVkUHJvbWlzZT4mJik7CisgICAgc3RhdGljIGJvb2wgaGFzU3RvcmFnZUFjY2Vzc0ZvckRvY3Vt
ZW50UXVpcmsoRG9jdW1lbnQmKTsKKwogICAgIHN0YXRpYyB2b2lkIHJlcXVlc3RTdG9yYWdlQWNj
ZXNzKERvY3VtZW50JiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CisgICAgc3RhdGljIHZvaWQg
cmVxdWVzdFN0b3JhZ2VBY2Nlc3NGb3JEb2N1bWVudFF1aXJrKERvY3VtZW50JiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpOworICAgIHN0YXRpYyB2
b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzRm9yTm9uRG9jdW1lbnRRdWlyayhEb2N1bWVudCYgaG9z
dGluZ0RvY3VtZW50LCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlcXVlc3RpbmdEb21haW4sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmKTsKIAogcHJpdmF0
ZToKKyAgICBPcHRpb25hbDxib29sPiBoYXNTdG9yYWdlQWNjZXNzUXVpY2tDaGVjaygpOwogICAg
IHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKKyAgICBib29s
IGhhc1N0b3JhZ2VBY2Nlc3NRdWlyaygpOworCisgICAgT3B0aW9uYWw8U3RvcmFnZUFjY2Vzc1F1
aWNrUmVzdWx0PiByZXF1ZXN0U3RvcmFnZUFjY2Vzc1F1aWNrQ2hlY2soKTsKICAgICB2b2lkIHJl
cXVlc3RTdG9yYWdlQWNjZXNzKFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOworICAgIHZvaWQgcmVx
dWVzdFN0b3JhZ2VBY2Nlc3NGb3JEb2N1bWVudFF1aXJrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmKTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNj
ZXNzRm9yTm9uRG9jdW1lbnRRdWlyayhSZWdpc3RyYWJsZURvbWFpbiYmIHJlcXVlc3RpbmdEb21h
aW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmKTsK
KyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzUXVpcmsoUmVnaXN0cmFibGVEb21haW4mJiBy
ZXF1ZXN0aW5nRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNH
cmFudGVkKT4mJik7CisKICAgICBzdGF0aWMgRG9jdW1lbnRTdG9yYWdlQWNjZXNzKiBmcm9tKERv
Y3VtZW50Jik7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7CiAgICAg
Ym9vbCBoYXNGcmFtZVNwZWNpZmljU3RvcmFnZUFjY2VzcygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwCmluZGV4IGI5YTY2YzA4YmQ3MDMyN2JjZDE4ODU2YmVkYjYwODc0ZGQ3N2IxNWYuLjc1
NzhkMGNjNTBkNTVjZjc4YmYxZTIxY2U3YjExN2Q2NGIwOGI1ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAKQEAgLTg3LDYgKzg3LDcgQEAKICNpbmNsdWRlICJQb2ludGVyRXZlbnQuaCIKICNpbmNs
dWRlICJQb2ludGVyTG9ja0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJQc2V1ZG9DbGFzc0NoYW5n
ZUludmFsaWRhdGlvbi5oIgorI2luY2x1ZGUgIlF1aXJrcy5oIgogI2luY2x1ZGUgIlJlbmRlckZy
YWdtZW50ZWRGbG93LmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJSZW5k
ZXJMYXllckJhY2tpbmcuaCIKQEAgLTM2MSw2ICszNjIsOSBAQCBib29sIEVsZW1lbnQ6OmRpc3Bh
dGNoTW91c2VFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIHBsYXRmb3JtRXZlbnQsIGNv
bnN0CiAgICAgaWYgKGRpc3BhdGNoUG9pbnRlckV2ZW50SWZOZWVkZWQoKnRoaXMsIG1vdXNlRXZl
bnQuZ2V0KCksIHBsYXRmb3JtRXZlbnQsIGRpZE5vdFN3YWxsb3dFdmVudCkgPT0gU2hvdWxkSWdu
b3JlTW91c2VFdmVudDo6WWVzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBpZiAoaGFz
Q2xhc3MoKSAmJiBRdWlya3M6OlN0b3JhZ2VBY2Nlc3NSZXN1bHQ6OlNob3VsZENhbmNlbEV2ZW50
ID09IGRvY3VtZW50KCkucXVpcmtzKCkudHJpZ2dlck9wdGlvbmFsU3RvcmFnZUFjY2Vzc1F1aXJr
KGV2ZW50VHlwZSwgY2xhc3NOYW1lcygpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAg
QVNTRVJUKCFtb3VzZUV2ZW50LT50YXJnZXQoKSB8fCBtb3VzZUV2ZW50LT50YXJnZXQoKSAhPSBy
ZWxhdGVkVGFyZ2V0KTsKICAgICBkaXNwYXRjaEV2ZW50KG1vdXNlRXZlbnQpOwogICAgIGlmICht
b3VzZUV2ZW50LT5kZWZhdWx0UHJldmVudGVkKCkgfHwgbW91c2VFdmVudC0+ZGVmYXVsdEhhbmRs
ZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNl
cnZlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmgKaW5k
ZXggMTI5YzNjNmIyOGQwYjZiOWE3YzM1MDUzZTUxMDJhNDRjNmZmZTFiNi4uNjdmYmZmYzJkMjBh
YjJmZDhiYTU2YThkZmE0ZDRhZTc4YTk1ZWIyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZE9ic2VydmVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNi0yMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTYyLDYgKzYyLDkgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBjbGVhclN0YXRlKCkgeyB9CiAgICAgCiAgICAgdmlydHVhbCBib29sIGhh
c1N0YXRpc3RpY3MoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCisgICAgdmlydHVhbCB2b2lk
IHNldERvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+
JiYpIHsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXNIYWRVc2VySW50ZXJhY3Rpb24oY29uc3QgUmVn
aXN0cmFibGVEb21haW4mKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogfTsKICAgICAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmNwcAppbmRleCA5YzE4OWUxZjc1MmEw
YjcyMjAzNzY1ZmIzNTdjMDFlOWMxNDIwMGU2Li4yOGNiNGJmOGJkMzgyNzcyMTYxMWExY2RiNDYz
MDkyYzdhZDNiNzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzAsNiArMzAsNyBAQAog
I2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnRMb2FkZXIuaCIKKyNpbmNsdWRlICJEb2N1bWVudFN0b3JhZ2VBY2Nlc3MuaCIKICNp
bmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRl
ICJIVE1MQm9keUVsZW1lbnQuaCIKQEAgLTM4LDggKzM5LDEwIEBACiAjaW5jbHVkZSAiSFRNTE9i
amVjdEVsZW1lbnQuaCIKICNpbmNsdWRlICJKU0V2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJM
YXlvdXRVbml0LmgiCisjaW5jbHVkZSAiUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCIKICNpbmNsdWRl
ICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNs
dWRlICJTcGFjZVNwbGl0U3RyaW5nLmgiCiAjaW5jbHVkZSAiVXNlckFnZW50LmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTgzOSw0ICs4NDIsNTcgQEAgYm9vbCBRdWlya3M6OnNob3VsZEF2
b2lkUGFzdGluZ0ltYWdlc0FzV2ViQ29udGVudCgpIGNvbnN0CiAjZW5kaWYKIH0KIAorUXVpcmtz
OjpTdG9yYWdlQWNjZXNzUmVzdWx0IFF1aXJrczo6dHJpZ2dlck9wdGlvbmFsU3RvcmFnZUFjY2Vz
c1F1aXJrKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgU3BhY2VTcGxpdFN0cmlu
ZyYgY2xhc3NOYW1lcykgY29uc3QKK3sKKyAgICBpZiAoIW5lZWRzUXVpcmtzKCkpCisgICAgICAg
IHJldHVybiBRdWlya3M6OlN0b3JhZ2VBY2Nlc3NSZXN1bHQ6OlNob3VsZE5vdENhbmNlbEV2ZW50
OworCisgICAgUmVnaXN0cmFibGVEb21haW4gZG9tYWluIHsgbV9kb2N1bWVudC0+dXJsKCkgfTsK
KworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPj4g
a2luamFRdWlya3MgPSBbXSB7CisgICAgICAgIEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+IHNl
dDsKKyAgICAgICAgc2V0LmFkZChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJv
bVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKCJhdmNsdWIuY29tIl9zKSk7CisgICAgICAgIHNldC5h
ZGQoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFp
blN0cmluZygiZ2l6bW9kby5jb20iX3MpKTsKKyAgICAgICAgc2V0LmFkZChSZWdpc3RyYWJsZURv
bWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKCJkZWFkc3Bp
bi5jb20iX3MpKTsKKyAgICAgICAgc2V0LmFkZChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2Vk
Q3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKCJqYWxvcG5pay5jb20iX3MpKTsKKyAg
ICAgICAgc2V0LmFkZChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lz
dHJhYmxlRG9tYWluU3RyaW5nKCJqZXplYmVsLmNvbSJfcykpOworICAgICAgICBzZXQuYWRkKFJl
Z2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJp
bmcoImtvdGFrdS5jb20iX3MpKTsKKyAgICAgICAgc2V0LmFkZChSZWdpc3RyYWJsZURvbWFpbjo6
dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKCJsaWZlaGFja2VyLmNv
bSJfcykpOworICAgICAgICBzZXQuYWRkKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVh
dGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcoInRoZXJvb3QuY29tIl9zKSk7CisgICAgICAg
IHNldC5hZGQoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJs
ZURvbWFpblN0cmluZygidGhldGFrZW91dC5jb20iX3MpKTsKKyAgICAgICAgc2V0LmFkZChSZWdp
c3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5n
KCJ0aGVvbmlvbi5jb20iX3MpKTsKKyAgICAgICAgc2V0LmFkZChSZWdpc3RyYWJsZURvbWFpbjo6
dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKCJ0aGVpbnZlbnRvcnku
Y29tIl9zKSk7CisgICAgICAgIHJldHVybiBzZXQ7CisgICAgfSgpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxSZWdpc3RyYWJsZURvbWFpbj4ga2luamFEb21haW4gPSBSZWdpc3RyYWJsZURv
bWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKCJraW5qYS5j
b20iX3MpOworCisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZ2lzdHJhYmxlRG9tYWluPiB5
b3VUdWJlRG9tYWluID0gUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdp
c3RyYWJsZURvbWFpblN0cmluZygieW91dHViZS5jb20iX3MpOworCisgICAgaWYgKGV2ZW50VHlw
ZSA9PSAiY2xpY2siKSB7CisKKyAgICAgICAgLy8gRW1iZWRkZWQgWW91VHViZSBjYXNlLgorICAg
ICAgICBpZiAoZG9tYWluID09IHlvdVR1YmVEb21haW4gJiYgIW1fZG9jdW1lbnQtPmlzVG9wRG9j
dW1lbnQoKSAmJiBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkuaGFzSGFkVXNlckludGVy
YWN0aW9uKHlvdVR1YmVEb21haW4pICYmIChjbGFzc05hbWVzLmNvbnRhaW5zKCJ5dHAtd2F0Y2gt
bGF0ZXItaWNvbiIpIHx8IGNsYXNzTmFtZXMuY29udGFpbnMoInl0cC13YXRjaC1sYXRlci1pY29u
IikpKSB7CisgICAgICAgICAgICBpZiAoUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLmhh
c0hhZFVzZXJJbnRlcmFjdGlvbih5b3VUdWJlRG9tYWluKSkgeworICAgICAgICAgICAgICAgIERv
Y3VtZW50U3RvcmFnZUFjY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NGb3JEb2N1bWVudFF1aXJr
KCptX2RvY3VtZW50LCBbXShTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCkgeworICAgICAgICAgICAg
ICAgICAgICAvLyBGSVhNRTogQWRkIGFwcHJvcHJpYXRlIGxvZ2dpbmcuCisgICAgICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFF1aXJrczo6U3RvcmFnZUFjY2Vzc1Jlc3Vs
dDo6U2hvdWxkTm90Q2FuY2VsRXZlbnQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg
ICAgICAvLyBLaW5qYSBidXJuZXIgYWNjb3VudCBsb2dpbiBjYXNlLgorICAgICAgICBpZiAoa2lu
amFRdWlya3MuZ2V0KCkuY29udGFpbnMoZG9tYWluKSAmJiBjbGFzc05hbWVzLmNvbnRhaW5zKCJq
c19zd2l0Y2gtdG8tYnVybmVyLWxvZ2luIikpIHsKKyAgICAgICAgICAgIGlmIChSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6c2hhcmVkKCkuaGFzSGFkVXNlckludGVyYWN0aW9uKGtpbmphRG9tYWluKSkg
eworICAgICAgICAgICAgICAgIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6cmVxdWVzdFN0b3JhZ2VB
Y2Nlc3NGb3JOb25Eb2N1bWVudFF1aXJrKCptX2RvY3VtZW50LCBraW5qYURvbWFpbi5nZXQoKS5p
c29sYXRlZENvcHkoKSwgW10oU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpIHsKKyAgICAgICAgICAg
ICAgICAgICAgLy8gRklYTUU6IEFkZCBhcHByb3ByaWF0ZSBsb2dnaW5nLgorICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgICAgIHJldHVybiBRdWlya3M6OlN0b3JhZ2VBY2Nlc3NSZXN1
bHQ6OlNob3VsZE5vdENhbmNlbEV2ZW50OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8g
RklYTUU6IFRha2UgdGhlIHVzZXIgdG8ga2luamEuY29tIGluIHRoZSBlbHNlIGNhc2UuCisgICAg
ICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gUXVpcmtzOjpTdG9yYWdlQWNjZXNzUmVzdWx0OjpT
aG91bGROb3RDYW5jZWxFdmVudDsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9RdWlya3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmgKaW5kZXggNjM4NmU3
NDJkZWFhODgyMzc4ZGM0Nzk2Y2Y0MDFiNGVlZjRmNTkyOC4uMDU2MDk3ODBhZTliYTBiNGQ4MjVi
Yjk5YTBiY2ViYjU3ZjA5NTliYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9RdWly
a3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5oCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsNiArMzYsNyBA
QCBjbGFzcyBFdmVudExpc3RlbmVyOwogY2xhc3MgRXZlbnRUYXJnZXQ7CiBjbGFzcyBIVE1MRWxl
bWVudDsKIGNsYXNzIExheW91dFVuaXQ7CitjbGFzcyBTcGFjZVNwbGl0U3RyaW5nOwogCiBjbGFz
cyBRdWlya3MgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFF1aXJrcyk7IFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwpAQCAtMTA1LDYgKzEwNiw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgc2hv
dWxkQXZvaWRQYXN0aW5nSW1hZ2VzQXNXZWJDb250ZW50KCkgY29uc3Q7CiAKKyAgICBlbnVtIFN0
b3JhZ2VBY2Nlc3NSZXN1bHQgOiBib29sIHsgU2hvdWxkTm90Q2FuY2VsRXZlbnQsIFNob3VsZENh
bmNlbEV2ZW50IH07CisgICAgU3RvcmFnZUFjY2Vzc1Jlc3VsdCB0cmlnZ2VyT3B0aW9uYWxTdG9y
YWdlQWNjZXNzUXVpcmsoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBTcGFjZVNw
bGl0U3RyaW5nJiBjbGFzc05hbWVzKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBib29sIG5lZWRz
UXVpcmtzKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5jcHAKaW5kZXggZGZlYmNiMTliMzI0NjA1Mjk2OGMzNDgzM2U5MzRlOGVlOWM4NTBi
NS4uZTNmNDM0ZDVmOGYxZmIxNTU4MmZiYjI5ODc0NzBiMGMwYmUwYzcxYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMjgxLDYgKzEy
ODEsMTggQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldENhY2hlTWF4
QWdlQ2FwKFNlY29uZHMgc2Vjb25kcywgQ29tcGxldGkKICAgICBjb21wbGV0aW9uSGFuZGxlcigp
OwogfQogCitib29sIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bmVlZHNVc2VySW50
ZXJhY3Rpb25RdWlyayhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKSBjb25zdAorewor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPj4gcXVp
cmtzID0gW10geworICAgICAgICBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiBzZXQ7CisgICAg
ICAgIHNldC5hZGQoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3Ry
YWJsZURvbWFpblN0cmluZygia2luamEuY29tIl9zKSk7CisgICAgICAgIHNldC5hZGQoUmVnaXN0
cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZygi
eW91dHViZS5jb20iX3MpKTsKKyAgICAgICAgcmV0dXJuIHNldDsKKyAgICB9KCk7CisKKyAgICBy
ZXR1cm4gcXVpcmtzLmdldCgpLmNvbnRhaW5zKGRvbWFpbik7Cit9CisKIHZvaWQgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjYWxsVXBkYXRlUHJldmFsZW50RG9tYWluc1RvQmxvY2tD
b29raWVzRm9ySGFuZGxlcihjb25zdCBSZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llc0Zv
ciYgZG9tYWluc1RvQmxvY2ssIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtMTI5MSw2ICsx
MzAzLDE3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjYWxsVXBkYXRl
UHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9yCiAgICAgICAgICAgICBzdG9yYWdlU2Vz
c2lvbi0+c2V0UHJldmFsZW50RG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0Zvcihkb21haW5z
VG9CbG9jay5kb21haW5zVG9CbG9ja0J1dEtlZXBDb29raWVzRm9yKTsKICAgICAgICAgICAgIHN0
b3JhZ2VTZXNzaW9uLT5zZXREb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbkFzRmlyc3RQYXJ0eShk
b21haW5zVG9CbG9jay5kb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbkFzRmlyc3RQYXJ0eSk7CiAg
ICAgICAgIH0KKworICAgICAgICBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zV2l0
aFVzZXJJbnRlcmFjdGlvblF1aXJrOworICAgICAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IGRvbWFp
bnNUb0Jsb2NrLmRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uQXNGaXJzdFBhcnR5KSB7CisgICAg
ICAgICAgICBpZiAobmVlZHNVc2VySW50ZXJhY3Rpb25RdWlyayhkb21haW4pKQorICAgICAgICAg
ICAgICAgIGRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uUXVpcmsuYWRkKGRvbWFpbik7CisgICAg
ICAgIH0KKworICAgICAgICBpZiAobV9kb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvblF1aXJrICE9
IGRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uUXVpcmspIHsKKyAgICAgICAgICAgIG1fZG9tYWlu
c1dpdGhVc2VySW50ZXJhY3Rpb25RdWlyayA9IGRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uUXVp
cms7CisgICAgICAgICAgICBtX25ldHdvcmtTZXNzaW9uLT5uZXR3b3JrUHJvY2VzcygpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6
OlNldERvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uKGRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9u
UXVpcmspLCAwKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggNWI1
MWQxMTBkNDdiMTAxMmJlNTE5NjRmZTkwNjE3M2RmNDcwZGNhNy4uZjNjM2Y3NTNkM2I4ZTUyNGQz
MmYwNDcwNWYxNmRmNWFkN2Q5NzdhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3Myw2ICsyNzMsNyBAQCBzdHJ1Y3QgVGhpcmRQYXJ0eURh
dGEgewogICAgIHZvaWQgbG9nVGVzdGluZ0V2ZW50KGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQg
Y2FsbEdyYW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25z
dCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBTdG9yYWdlQWNjZXNzU2NvcGUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmKTsKICAgICB2b2lkIHJlbW92ZUFs
bFN0b3JhZ2VBY2Nlc3MoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICBib29sIG5l
ZWRzVXNlckludGVyYWN0aW9uUXVpcmsoY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsK
ICAgICB2b2lkIGNhbGxVcGRhdGVQcmV2YWxlbnREb21haW5zVG9CbG9ja0Nvb2tpZXNGb3JIYW5k
bGVyKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29raWVzRm9yJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGNhbGxIYXNTdG9yYWdlQWNjZXNzRm9yRnJh
bWVIYW5kbGVyKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKIApAQCAtMzMzLDYgKzMzNCw4IEBAIHByaXZhdGU6
CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6SXNFcGhlbWVyYWwgbV9pc0Vw
aGVtZXJhbCB7IFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6OklzRXBoZW1lcmFsOjpO
byB9OwogICAgIEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+IG1fZG9tYWluc1dpdGhFcGhlbWVy
YWxVc2VySW50ZXJhY3Rpb247CiAKKyAgICBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiBtX2Rv
bWFpbnNXaXRoVXNlckludGVyYWN0aW9uUXVpcms7CisKICAgICBib29sIG1faGFzU2NoZWR1bGVk
UHJvY2Vzc1N0YXRzIHsgZmFsc2UgfTsKIAogICAgIGJvb2wgbV9maXJzdE5ldHdvcmtQcm9jZXNz
Q3JlYXRlZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQ
cm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJv
Y2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMuaAppbmRleCAzMGRiNGM5YjUzODg2YTA4YjMxN2E1Mjk0
ZGM3MjUwMTNhMDNmNTk1Li5lNjI2MzQyNDRlODFhOWVjNWU3NjdjYjcyYWYwNzFlZGUzNWRmOTUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcm9jZXNzRGF0YVN0b3JlUGFy
YW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NEYXRhU3RvcmVQ
YXJhbWV0ZXJzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEw
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC00OCw2ICs0OCw3IEBAIHN0cnVjdCBXZWJQcm9jZXNzRGF0YVN0b3Jl
UGFyYW1ldGVycyB7CiAgICAgSGFzaE1hcDx1bnNpZ25lZCwgV2FsbFRpbWU+IHBsdWdJbkF1dG9T
dGFydE9yaWdpbkhhc2hlczsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQog
ICAgIFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgdGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nTW9kZSB7IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGU6OkFs
bCB9OworICAgIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNXaXRo
VXNlckludGVyYWN0aW9uOwogI2VuZGlmCiAgICAgYm9vbCByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RW5hYmxlZCB7IGZhbHNlIH07CiAKQEAgLTczLDYgKzc0LDcgQEAgdm9pZCBXZWJQcm9jZXNzRGF0
YVN0b3JlUGFyYW1ldGVyczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5j
b2RlciA8PCBwbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXM7CiAjaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKICAgICBlbmNvZGVyIDw8IHRoaXJkUGFydHlDb29raWVCbG9ja2lu
Z01vZGU7CisgICAgZW5jb2RlciA8PCBkb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbjsKICNlbmRp
ZgogICAgIGVuY29kZXIgPDwgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ7CiB9CkBAIC0x
NDQsNiArMTQ2LDExIEBAIE9wdGlvbmFsPFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzPiBX
ZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVyczo6ZGVjb2RlKERlCiAgICAgZGVjb2RlciA+PiB0
aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOwogICAgIGlmICghdGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nTW9kZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFs
PEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+PiBkb21haW5zV2l0aFVzZXJJbnRl
cmFjdGlvbjsKKyAgICBkZWNvZGVyID4+IGRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uOworICAg
IGlmICghZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb24pCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CiAjZW5kaWYKIAogICAgIGJvb2wgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQg
PSBmYWxzZTsKQEAgLTE2Niw2ICsxNzMsNyBAQCBPcHRpb25hbDxXZWJQcm9jZXNzRGF0YVN0b3Jl
UGFyYW1ldGVycz4gV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnM6OmRlY29kZShEZQogICAg
ICAgICBXVEZNb3ZlKCpwbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMpLAogI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgICAgICp0aGlyZFBhcnR5Q29va2llQmxvY2tp
bmdNb2RlLAorICAgICAgICBXVEZNb3ZlKCpkb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbiksCiAj
ZW5kaWYKICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQKICAgICB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5jcHAKaW5kZXggOWMwNmIwMDdhY2ZhMWY4ZmJjM2NkYWFhZGM2ZWNlZTY4MzVhNzYwZi4u
NjBlMTM2MjZlOTk2ZThmZTAyMGVjZWVlYTI5YWRkNGI0MmM4MDU5MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
CkBAIC0xMTk5LDYgKzExOTksMTEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRUb1Nh
bWVTaXRlU3RyaWN0Q29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2UKIAogICAgIHNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldFRvU2FtZVNpdGVT
dHJpY3RDb29raWVzRm9yVGVzdGluZyhzZXNzaW9uSUQsIGRvbWFpbiksIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKIH0KKwordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXREb21haW5z
V2l0aFVzZXJJbnRlcmFjdGlvbihIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYm
IGRvbWFpbnMpCit7CisgICAgcHJvY2Vzc1Bvb2woKS5zZXREb21haW5zV2l0aFVzZXJJbnRlcmFj
dGlvbihXVEZNb3ZlKGRvbWFpbnMpKTsKK30KICNlbmRpZiAvLyBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldEFkQ2xpY2tBdHRy
aWJ1dGlvbkRlYnVnTW9kZShib29sIGRlYnVnTW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggMzAzODg5YzNk
OTc3Mjc3NTdlZGRiZmJjNmY2MDc5MzMyNmQ2Yzg4Ny4uZDZlY2I1NjY3OWZkNWUyMWEyOGQ4YTM5
ZTlhZDE0Y2U2MTFiNGMwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTE4Miw2ICsxODIsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRTaG91bGRFbmJsZVNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRGb3JUZXN0
aW5nKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50RW5h
YmxlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldEZpcnN0UGFy
dHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgV2ViQ29y
ZTo6Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CiAgICAgdm9pZCBzZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llc0ZvclRlc3Rpbmco
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNldERvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uKEhh
c2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYpOwogI2VuZGlmCiAKICAgICB2b2lk
IHNldEFkQ2xpY2tBdHRyaWJ1dGlvbkRlYnVnTW9kZShib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5t
ZXNzYWdlcy5pbgppbmRleCA4Mzc5ZDlmNTkxMDBiNmU2ZTEwNjVhN2RmNTY0MTUxMjMxNTM0MzY5
Li4xNWY5YTgwZTE1ZjMxYmVkOTRiODYxOTlkMjE0NWQ2ZDIyMGJiZGFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC01MCw2ICs1MCw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQ
cm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgTm90UmVmQ291bnRlZCB7CiAgICAgUmVxdWVzdFN0
b3JhZ2VBY2Nlc3NDb25maXJtKFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQs
IFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVE
b21haW4pIC0+IChib29sIHVzZXJEaWRHcmFudEFjY2VzcykgQXN5bmMKICAgICBEZWxldGVXZWJz
aXRlRGF0YUluVUlQcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW5zKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIE9w
dGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhRmV0Y2hPcHRpb24+IGZldGNoT3B0aW9ucywgVmVj
dG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zKSAtPiAoSGFzaFNldDxXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWluc1dpdGhNYXRjaGluZ0RhdGFSZWNvcmRzKSBB
c3luYwogICAgIERpZENvbW1pdENyb3NzU2l0ZUxvYWRXaXRoRGF0YVRyYW5zZmVyRnJvbVByZXZh
bGVudFJlc291cmNlKFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQpCisgICAg
U2V0RG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb24oSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbj4gZG9tYWlucykKICNlbmRpZgogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMp
CiAgICAgQ29udGVudEV4dGVuc2lvblJ1bGVzKFdlYktpdDo6VXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllciBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwCmluZGV4IGRiZmQ5OTRlYzA3MGY0NmQ5NmY4ZjY3NGU1ODA0Nzc3Y2QyZjlhYmQu
LmUyOTJlMGU0N2NmYjdiZDk1NDMwYjAxNjVlZmExMjM5MmEwOTBjNmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTk5Nyw2ICs5OTcsNyBAQCBXZWJQ
cm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJQcm9jZXNzUG9vbDo6d2ViUHJvY2Vzc0RhdGFT
dG9yZVBhcmFtZXRlcnMoV2ViUAogICAgICAgICBXVEZNb3ZlKHBsdWdJbkF1dG9TdGFydE9yaWdp
bkhhc2hlcyksCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICAgICAg
d2Vic2l0ZURhdGFTdG9yZS50aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKCksCisgICAgICAg
IG1fZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb24sCiAjZW5kaWYKICAgICAgICAgd2Vic2l0ZURh
dGFTdG9yZS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpCiAgICAgfTsKQEAgLTIzNTAs
NiArMjM1MSwxMiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpkaWRDb21taXRDcm9zc1NpdGVMb2Fk
V2l0aERhdGFUcmFuc2ZlcihQQUw6OlNlc3Npb25JRCBzZXNzaQogICAgIG1fbmV0d29ya1Byb2Nl
c3MtPmRpZENvbW1pdENyb3NzU2l0ZUxvYWRXaXRoRGF0YVRyYW5zZmVyKHNlc3Npb25JRCwgZnJv
bURvbWFpbiwgdG9Eb21haW4sIG5hdmlnYXRpb25EYXRhVHJhbnNmZXIsIHdlYlBhZ2VQcm94eUlE
LCB3ZWJQYWdlSUQpOwogfQogCit2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXREb21haW5zV2l0aFVz
ZXJJbnRlcmFjdGlvbihIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmIGRvbWFp
bnMpCit7CisgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRE
b21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbihkb21haW5zKSk7CisgICAgbV9kb21haW5zV2l0aFVz
ZXJJbnRlcmFjdGlvbiA9IFdURk1vdmUoZG9tYWlucyk7Cit9CisKIHZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OnNlZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRm9yVGVzdGluZyhjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRoaXJk
UGFydHlEb21haW4sIGJvb2wgc2hvdWxkU2NoZWR1bGVOb3RpZmljYXRpb24sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIGNhbGxiYWNr
QWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4
IDVjNjBhMzJmOTc4MDE3ZmM1YWUyZDg0ZTMxMjczY2VhMTVhNGQyNGMuLmJmMmQ4YzdlNTJkZmIw
ODZmNjU1MmFlMTMwNWNkNzhkOGU2Njc3YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaApAQCAtNTA0LDYgKzUwNCw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgdm9pZCBkaWRDb21taXRDcm9zc1NpdGVMb2Fk
V2l0aERhdGFUcmFuc2ZlcihQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiB0
b0RvbWFpbiwgT3B0aW9uU2V0PFdlYkNvcmU6OkNyb3NzU2l0ZU5hdmlnYXRpb25EYXRhVHJhbnNm
ZXI6OkZsYWc+LCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
cik7CisgICAgdm9pZCBzZXREb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbihIYXNoU2V0PFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKTsKICAgICB2b2lkIHNlZWRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRm9yVGVzdGluZyhjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQ
YXJ0eURvbWFpbiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHRoaXJkUGFydHlE
b21haW4sIGJvb2wgc2hvdWxkU2NoZWR1bGVOb3RpZmljYXRpb24sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAjZW5kaWYKIApAQCAtODIxLDYgKzgyMiwxMCBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9pc0RlbGF5ZWRXZWJQcm9jZXNzTGF1bmNoRGlzYWJsZWQgeyBmYWxzZSB9OwogI2Vu
ZGlmCiAgICAgYm9vbCBtX3VzZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MgeyBmYWxzZSB9
OworCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBIYXNoU2V0PFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBtX2RvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uOwor
I2VuZGlmCiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxv
YWRPYnNlcnZlci5jcHAKaW5kZXggNWIzYjY4MzNjMWU5NTdmNzkwM2ZjYWUyZTE0YjdjNGU5ZWQ0
MTk5Yy4uNzI0N2E0ZWFjZjI2OWI2MTlmNDViMDRiMDJkNzY4YThiZDNmYTVjNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9h
ZE9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyogQ29weXJp
Z2h0IChDKSAyMDE5LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogKgogKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNDEsNiArMTQxLDExIEBAIHZvaWQgV2ViUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXI6OmNsZWFyU3RhdGUoKQogICAgIG1fbGFzdFJlcG9ydGVkVXNlckludGVy
YWN0aW9uTWFwLmNsZWFyKCk7CiB9CiAKK2Jvb2wgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6Omhh
c0hhZFVzZXJJbnRlcmFjdGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKSBjb25z
dAoreworICAgIHJldHVybiBtX2RvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uLmNvbnRhaW5zKGRv
bWFpbik7Cit9CisKIHZvaWQgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ0ZvbnRMb2FkKGNv
bnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBmYW1pbHlOYW1lLCBib29sIGxv
YWRTdGF0dXMpCiB7CiAgICAgaWYgKGlzRXBoZW1lcmFsKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxv
YWRPYnNlcnZlci5oCmluZGV4IGU2MmFhMmFmZTgwODUwNDk3ZDg4NGQ1MzZkMDhkNTA4N2QxNjEy
ZGYuLjE4NmZhYTEzZjY4NDI0ZDAyM2ZmZTc0YmE5NTc0ODAzZjIzZDdjODMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRP
YnNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyogQ29weXJpZ2h0IChD
KSAyMDE5LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogKgogKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC02Miw2ICs2Miw4IEBAIHB1YmxpYzoKICAgICAKICAgICBib29s
IGhhc1N0YXRpc3RpY3MoKSBjb25zdCBmaW5hbCB7IHJldHVybiAhbV9yZXNvdXJjZVN0YXRpc3Rp
Y3NNYXAuaXNFbXB0eSgpOyB9CiAKKyAgICB2b2lkIHNldERvbWFpbnNXaXRoVXNlckludGVyYWN0
aW9uKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYgZG9tYWlucykgZmluYWwg
eyBtX2RvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uID0gV1RGTW92ZShkb21haW5zKTsgfQorICAg
IGJvb2wgaGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluJikgY29uc3QgZmluYWw7CiBwcml2YXRlOgogICAgIFdlYkNvcmU6OlJlc291cmNlTG9hZFN0
YXRpc3RpY3MmIGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclJlZ2lzdHJhYmxlRG9tYWluKGNv
bnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJik7CiAgICAgdm9pZCBzY2hlZHVsZU5vdGlm
aWNhdGlvbklmTmVlZGVkKCk7CkBAIC03OCw2ICs4MCw3IEBAIHByaXZhdGU6CiAKICAgICBXZWJD
b3JlOjpUaW1lciBtX25vdGlmaWNhdGlvblRpbWVyOwogCisgICAgSGFzaFNldDxXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbj4gbV9kb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbjsKICNpZiAhUkVM
RUFTRV9MT0dfRElTQUJMRUQKICAgICB1aW50NjRfdCBtX2xvZ2dpbmdDb3VudGVyIHsgMCB9Owog
ICAgIHN0YXRpYyBib29sIHNob3VsZExvZ1VzZXJJbnRlcmFjdGlvbjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCA2OTJlMjMxZTZlNmQ2MDdiYmI5Y2ZjMTQxMzJh
OTdhNzlkZTE4MTk3Li5lOTEzNmM0ZWU5Yjg1YzMzNDk2MTUwZGQ0NWQ5OTk4MTc5ODg2MzQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC01MDgsOCArNTA4LDEy
IEBAIHZvaWQgV2ViUHJvY2Vzczo6c2V0V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMoV2ViUHJv
Y2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMmJiBwCiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9T
VEFUSVNUSUNTKQogICAgIG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA9IHBhcmFtZXRl
cnMudGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTsKLSAgICBpZiAocGFyYW1ldGVycy5yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCAmJiAhUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJl
ZElmRXhpc3RzKCkpCi0gICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRTaGFyZWQoKm5l
dyBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlcihwYXJhbWV0ZXJzLnNlc3Npb25JRC5pc0VwaGVtZXJh
bCgpID8gV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6SXNFcGhlbWVyYWw6OlllcyA6
IFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6OklzRXBoZW1lcmFsOjpObykpOworICAg
IGlmIChwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKSB7CisgICAgICAg
IGlmICghUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZElmRXhpc3RzKCkpCisgICAgICAgICAg
ICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0U2hhcmVkKCpuZXcgV2ViUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXIocGFyYW1ldGVycy5zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSA/IFdlYkNvcmU6OlJlc291
cmNlTG9hZFN0YXRpc3RpY3M6OklzRXBoZW1lcmFsOjpZZXMgOiBXZWJDb3JlOjpSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzOjpJc0VwaGVtZXJhbDo6Tm8pKTsKKyAgICAgICAgUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXI6OnNoYXJlZCgpLnNldERvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uKFdURk1vdmUocGFy
YW1ldGVycy5kb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbikpOworICAgIH0KKyAgICAKICNlbmRp
ZgogCiAgICAgcmVzZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMoV1RGTW92ZShwYXJhbWV0
ZXJzLnBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcykpOwpAQCAtMTg5NSw2ICsxODk5LDExIEBA
IHZvaWQgV2ViUHJvY2Vzczo6c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmdNb2RlIHRoCiAgICAgbV90aGlyZFBhcnR5Q29va2llQmxvY2tpbmdN
b2RlID0gdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZTsKICAgICBjb21wbGV0aW9uSGFuZGxl
cigpOwogfQorCit2b2lkIFdlYlByb2Nlc3M6OnNldERvbWFpbnNXaXRoVXNlckludGVyYWN0aW9u
KEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYgZG9tYWlucykKK3sKKyAgICBS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkuc2V0RG9tYWluc1dpdGhVc2VySW50ZXJhY3Rp
b24oV1RGTW92ZShkb21haW5zKSk7Cit9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IDE0YzAyMjhiMzQ4YTZm
MzVkMjNiOGMwYmVkZTZlNzQ0ZjA2NDBkMzguLmE5NTNjOGFkOTYxOWUxMDk4Mzk2NTBhNmM0ODA3
OGQ2YzM5ZjA4M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ2
MSw2ICs0NjEsNyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykKICAgICB2b2lkIHNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoV2ViQ29yZTo6
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKKyAgICB2b2lkIHNldERvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uKEhhc2hTZXQ8V2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4+JiYpOwogI2VuZGlmCiAKICAgICB2b2lkIHBsYXRmb3JtSW5p
dGlhbGl6ZVByb2Nlc3MoY29uc3QgQXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1l
dGVycyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbgppbmRleCBjZmEzZTRkMDAzN2VhYTU3MzM5ZTQzMzcxYWYxM2RhZjZiM2ZjMmY1Li5mNWJj
YzA2ZThlZTVhMDUzZjU1OWQ0ZGJmMzM4ODEwOTA3MDA0ZjA0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMSw0ICsxLDQgQEAKLSMg
Q29weXJpZ2h0IChDKSAyMDEwLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IyBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE1OCw2ICsxNTgsNyBAQCBtZXNzYWdl
cyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIE5vdFJlZkNvdW50ZWQgewogI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgU2VlZFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NGb3JUZXN0aW5nKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGZpcnN0UGFydHlEb21haW4s
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRoaXJkUGFydHlEb21haW4sIGJvb2wgc2hvdWxk
U2NoZWR1bGVOb3RpZmljYXRpb24pIC0+ICgpIEFzeW5jCiAgICAgU2V0VGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nTW9kZShlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nTW9kZSBibG9ja2luZ01vZGUpIC0+ICgpIEFzeW5jCisgICAgU2V0RG9tYWluc1dpdGhVc2Vy
SW50ZXJhY3Rpb24oSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWlucykK
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402526</attachid>
            <date>2020-06-22 19:12:38 -0700</date>
            <delta_ts>2020-06-22 21:13:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213418-20200622191237.patch</filename>
            <type>text/plain</type>
            <size>48111</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzMzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmRmODI5ODBmNmFiNzk1
NDU2ZGIwYzgyMDY3YWUwNDEyODc4ZjNiOS4uOThhNGYwY2M1MmY2ZjM0N2E2NDZjOTdlOTUzNTli
MmVmZTUxYjdmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDIwLTA2LTIyICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFN0b3JhZ2UgQWNjZXNz
IEFQSTogQWRkIHRoZSBjYXBhYmlsaXR5IHRvIGNhbGwgdGhlIFN0b3JhZ2UgQWNjZXNzIEFQSSBh
cyBhIHF1aXJrLCBvbiBiZWhhbGYgb2Ygd2Vic2l0ZXMgdGhhdCBzaG91bGQgYmUgZG9pbmcgaXQg
dGhlbXNlbHZlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjEzNDE4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82NDU0OTQyOT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhp
cyBwYXRjaCBhZGRzIHF1aXJrcyBmb3Igc3BlY2lmaWMgd2Vic2l0ZXMuCisgICAgICAgIFRoZSBn
ZW5lcmFsIGZ1bmN0aW9uYWxpdHkgdGhhdCdzIHRvdWNoZWQgaGFzIHRlc3RzIHVuZGVyCisgICAg
ICAgIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy8uCisKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojppc1RvcERvY3VtZW50
IGNvbnN0KToKKyAgICAgICAgICAgIE5ldyBjb252ZW5pZW5jZSBmdW5jdGlvbi4KKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjpzZXRVc2VyRGlkSW50ZXJhY3RXaXRoUGFnZSk6CisgICAgICAg
ICAgICBVc2Ugb2YgdGhlIG5ldyBjb252ZW5pZW5jZSBmdW5jdGlvbi4KKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50Ojp1c2VyRGlkSW50ZXJhY3RXaXRoUGFnZSBjb25zdCk6CisgICAgICAgICAg
ICBVc2Ugb2YgdGhlIG5ldyBjb252ZW5pZW5jZSBmdW5jdGlvbi4KKyAgICAgICAgKiBkb20vRG9j
dW1lbnRTdG9yYWdlQWNjZXNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50U3RvcmFn
ZUFjY2Vzczo6aGFzU3RvcmFnZUFjY2Vzc1F1aWNrQ2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpoYXNTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50U3RvcmFnZUFjY2Vzczo6aGFzU3RvcmFnZUFjY2Vzc0ZvckRvY3VtZW50UXVp
cmspOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpyZXF1ZXN0U3Rv
cmFnZUFjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OnJl
cXVlc3RTdG9yYWdlQWNjZXNzUXVpY2tDaGVjayk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dFN0b3JhZ2VBY2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzRm9yRG9jdW1lbnRRdWlyayk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNj
ZXNzRm9yTm9uRG9jdW1lbnRRdWlyayk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0b3Jh
Z2VBY2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzUXVpcmspOgorICAgICAgICAgICAgVGhlc2Ug
ZnVuY3Rpb25zIGFyZSBzcGxpdCB1cCB0byBhbGxvdyBxdWlya3MgdG8gY2FsbCBkaXJlY3RseSBp
bnRvIHRoZQorICAgICAgICAgICAgaW1wbGVtZW50YXRpb24gb2YgdGhlIFN0b3JhZ2UgQWNjZXNz
IEFQSSB3aXRob3V0IHRoZSBKYXZhU2NyaXB0CisgICAgICAgICAgICBwcm9taXNlIHRoYXQgZ29l
cyB3aXRoIHRoZSB3ZWIgQVBJLiBJdCBhbHNvIGFsbG93cyBmb3IgcXVpcmtzIHRvIGNhbGwKKyAg
ICAgICAgICAgIHRoZSBBUEkgd2l0aG91dCBhbiBpZnJhbWUgZG9jdW1lbnQuCisgICAgICAgICog
ZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5oOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmRpc3BhdGNoTW91c2VFdmVudCk6CisgICAgICAg
ICAgICBUaGUgdHdvIGV4aXN0aW5nIHF1aXJrcyBhcmUgZm9yIGNsaWNrIGV2ZW50cy4KKyAgICAg
ICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlTG9hZE9ic2VydmVyOjpzZXREb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6aGFzSGFkVXNlckludGVyYWN0aW9u
IGNvbnN0KToKKyAgICAgICAgICAgIFRoZXNlIHR3byBuZXcgZnVuY3Rpb25zIGFsbG93IHRoZSBT
dG9yYWdlIEFjY2VzcyBBUEkgcXVpcmtzCisgICAgICAgICAgICB0byBzeW5jaHJvbm91c2x5IGNo
ZWNrIGlmIGl0J3Mgd29ydGggY2FsbGluZyB0aGUgQVBJIG9yIG5vdC4KKyAgICAgICAgICAgIElm
IHRoZXJlIGhhcyBiZWVuIG5vIHVzZXIgaW50ZXJhY3Rpb24gZm9yIHRoZSByZXF1ZXN0aW5nCisg
ICAgICAgICAgICBkb21haW4sIHRoZXJlIGlzIG5vIG5lZWQgdG8gY2FsbCB0aGUgQVBJLgorICAg
ICAgICAqIHBhZ2UvUXVpcmtzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlF1aXJrczo6dHJpZ2dl
ck9wdGlvbmFsU3RvcmFnZUFjY2Vzc1F1aXJrIGNvbnN0KToKKyAgICAgICAgICAgIFRoaXMgaXMg
dGhlIG5ldyBxdWlya3MgZnVuY3Rpb24sIGhpZGluZyB0aGUgc3BlY2lmaWNzIG9mCisgICAgICAg
ICAgICBjZXJ0YWluIGVsZW1lbnRzIGNsaWNrZWQgYW5kIGZvciB3aGljaCB3ZWJzaXRlcy4gSXQg
YWxzbworICAgICAgICAgICAgY2FsbHMgdGhlIFN0b3JhZ2UgQWNjZXNzIEFQSS4KKyAgICAgICAg
KiBwYWdlL1F1aXJrcy5oOgorCiAyMDIwLTA2LTIyICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0
b25AYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBtYWNPUyB2ZXJzaW9uIG1hY3JvcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCA0ZjZlOWE1YzdjZDliN2M3YmU4Nzc1NzY0YTY1MzNhZDRiMzE1MzYzLi4yYzE4OTUw
NjJkNDAwZTQ4M2M4ZGVlMWY5MDQzNTVjMDJlMDMwOWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5
IEBACisyMDIwLTA2LTIyICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisg
ICAgICAgIFN0b3JhZ2UgQWNjZXNzIEFQSTogQWRkIHRoZSBjYXBhYmlsaXR5IHRvIGNhbGwgdGhl
IFN0b3JhZ2UgQWNjZXNzIEFQSSBhcyBhIHF1aXJrLCBvbiBiZWhhbGYgb2Ygd2Vic2l0ZXMgdGhh
dCBzaG91bGQgYmUgZG9pbmcgaXQgdGhlbXNlbHZlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzNDE4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82
NDU0OTQyOT4KKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAg
ICAgIFRoZXNlIGNoYW5nZXMgYXJlIGZvciBmb3J3YXJkaW5nIElUUCdzIGtub3dsZWRnZSBvZiB1
c2VyIGludGVyYWN0aW9uCisgICAgICAgIGZvciBzcGVjaWZpYyBxdWlya3MgZG9tYWlucyB0byB0
aGUgV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCB3aGVyZSBpdCBpbgorICAgICAgICB0dXJuIGNhbiBi
ZSBkaXN0cmlidXRlZCB0byBhbGwgZXhpc3RpbmcgYW5kIG5ldyBXZWIgQ29udGVudCBwcm9jZXNz
ZXMuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6bmVlZHNVc2VySW50ZXJhY3Rpb25RdWlyayBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2FsbFVwZGF0ZVByZXZh
bGVudERvbWFpbnNUb0Jsb2NrQ29va2llc0ZvckhhbmRsZXIpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAg
ICAgICogU2hhcmVkL1dlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzLmg6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0RG9tYWluc1dpdGhVc2VySW50ZXJh
Y3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3Nh
Z2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp3ZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycyk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXREb21haW5zV2l0aFVzZXJJbnRl
cmFjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZE9ic2VydmVyOjpoYXNIYWRVc2VySW50
ZXJhY3Rpb24gY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzZXRXZWJzaXRlRGF0YVN0b3JlUGFy
YW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnNldERvbWFpbnNXaXRoVXNl
ckludGVyYWN0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisKIDIwMjAtMDYtMjIgIFdl
bnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBX
ZWJQYWdlUHJveHk6OnNldFByb21pc2VkRGF0YUZvckltYWdlIHNob3VsZCBzYW5pdGl6ZSBpdHMg
ZmlsZW5hbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggMzI0Y2FjZWQxYzMwZWRkOGJiODk3MzI0
ODI1MTYyMzMwZTRhYTRiZS4uN2U2ZTk5MDMzYzAyYWNlM2NiYzUxODc0NTk1ZDQ5ZjAwYzM3ODJj
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTMsNyArMyw3IEBACiAgKiAgICAgICAgICAgKEMp
IDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMp
IDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIw
MDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAd2Via2l0Lm9yZykKLSAqIENvcHlyaWdodCAoQykg
MjAwNC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAwOCwgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAo
aHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vKQogICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lh
IENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQogICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC0xMDMzLDYgKzEwMzMs
NyBAQCBwdWJsaWM6CiAKICAgICBEb2N1bWVudCogcGFyZW50RG9jdW1lbnQoKSBjb25zdDsKICAg
ICBXRUJDT1JFX0VYUE9SVCBEb2N1bWVudCYgdG9wRG9jdW1lbnQoKSBjb25zdDsKKyAgICBib29s
IGlzVG9wRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiAmdG9wRG9jdW1lbnQoKSA9PSB0aGlzOyB9
CiAgICAgCiAgICAgU2NyaXB0UnVubmVyJiBzY3JpcHRSdW5uZXIoKSB7IHJldHVybiAqbV9zY3Jp
cHRSdW5uZXI7IH0KICAgICBTY3JpcHRNb2R1bGVMb2FkZXImIG1vZHVsZUxvYWRlcigpIHsgcmV0
dXJuICptX21vZHVsZUxvYWRlcjsgfQpAQCAtMTI0Myw4ICsxMjQ0LDggQEAgcHVibGljOgogICAg
IGJvb2wgcHJvY2Vzc2luZ1VzZXJHZXN0dXJlRm9yTWVkaWEoKSBjb25zdDsKICAgICB2b2lkIHVz
ZXJBY3RpdmF0ZWRNZWRpYUZpbmlzaGVkUGxheWluZygpIHsgbV91c2VyQWN0aXZhdGVkTWVkaWFG
aW5pc2hlZFBsYXlpbmdUaW1lc3RhbXAgPSBNb25vdG9uaWNUaW1lOjpub3coKTsgfQogCi0gICAg
dm9pZCBzZXRVc2VyRGlkSW50ZXJhY3RXaXRoUGFnZShib29sIHVzZXJEaWRJbnRlcmFjdFdpdGhQ
YWdlKSB7IEFTU0VSVCgmdG9wRG9jdW1lbnQoKSA9PSB0aGlzKTsgbV91c2VyRGlkSW50ZXJhY3RX
aXRoUGFnZSA9IHVzZXJEaWRJbnRlcmFjdFdpdGhQYWdlOyB9Ci0gICAgYm9vbCB1c2VyRGlkSW50
ZXJhY3RXaXRoUGFnZSgpIGNvbnN0IHsgQVNTRVJUKCZ0b3BEb2N1bWVudCgpID09IHRoaXMpOyBy
ZXR1cm4gbV91c2VyRGlkSW50ZXJhY3RXaXRoUGFnZTsgfQorICAgIHZvaWQgc2V0VXNlckRpZElu
dGVyYWN0V2l0aFBhZ2UoYm9vbCB1c2VyRGlkSW50ZXJhY3RXaXRoUGFnZSkgeyBBU1NFUlQoaXNU
b3BEb2N1bWVudCgpKTsgbV91c2VyRGlkSW50ZXJhY3RXaXRoUGFnZSA9IHVzZXJEaWRJbnRlcmFj
dFdpdGhQYWdlOyB9CisgICAgYm9vbCB1c2VyRGlkSW50ZXJhY3RXaXRoUGFnZSgpIGNvbnN0IHsg
QVNTRVJUKGlzVG9wRG9jdW1lbnQoKSk7IHJldHVybiBtX3VzZXJEaWRJbnRlcmFjdFdpdGhQYWdl
OyB9CiAKICAgICAvLyBVc2VkIGZvciB0ZXN0aW5nLiBDb3VudCBoYW5kbGVycyBpbiB0aGUgbWFp
biBkb2N1bWVudCwgYW5kIG9uZSBwZXIgZnJhbWUgd2hpY2ggY29udGFpbnMgaGFuZGxlcnMuCiAg
ICAgV0VCQ09SRV9FWFBPUlQgdW5zaWduZWQgd2hlZWxFdmVudEhhbmRsZXJDb3VudCgpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmNwcAppbmRleCAw
ZjFiZjYyOTE5OGI3NGRjNzA5YjM0YWI0NjAzYmJlODhkYmUzMTcyLi45MTVlMjVlZjJhZDVmZTc5
ZmViNGNkOTQwZTBmODViNDhjYzY4ODM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnRTdG9yYWdlQWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRTdG9yYWdlQWNjZXNzLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE5LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC03Miw0NyArNzIsNTcgQEAgdm9pZCBEb2N1bWVudFN0b3JhZ2VB
Y2Nlc3M6Omhhc1N0b3JhZ2VBY2Nlc3MoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8RGVmZXJyZWRQ
cm8KICAgICBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OmZyb20oZG9jdW1lbnQpLT5oYXNTdG9yYWdl
QWNjZXNzKFdURk1vdmUocHJvbWlzZSkpOwogfQogCi12b2lkIERvY3VtZW50U3RvcmFnZUFjY2Vz
czo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8RGVmZXJyZWRQ
cm9taXNlPiYmIHByb21pc2UpCitPcHRpb25hbDxib29sPiBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6
Omhhc1N0b3JhZ2VBY2Nlc3NRdWlja0NoZWNrKCkKIHsKLSAgICBEb2N1bWVudFN0b3JhZ2VBY2Nl
c3M6OmZyb20oZG9jdW1lbnQpLT5yZXF1ZXN0U3RvcmFnZUFjY2VzcyhXVEZNb3ZlKHByb21pc2Up
KTsKKyAgICBBU1NFUlQobV9kb2N1bWVudC5zZXR0aW5ncygpLnN0b3JhZ2VBY2Nlc3NBUElFbmFi
bGVkKCkpOworCisgICAgYXV0byogZnJhbWUgPSBtX2RvY3VtZW50LmZyYW1lKCk7CisgICAgaWYg
KGZyYW1lICYmIGhhc0ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzKCkpCisgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgaWYgKCFmcmFtZSB8fCBtX2RvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCku
aXNVbmlxdWUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGZyYW1lLT5pc01h
aW5GcmFtZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGF1dG8mIHNlY3VyaXR5T3Jp
Z2luID0gbV9kb2N1bWVudC5zZWN1cml0eU9yaWdpbigpOworICAgIGF1dG8mIHRvcFNlY3VyaXR5
T3JpZ2luID0gbV9kb2N1bWVudC50b3BEb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCk7CisgICAg
aWYgKHNlY3VyaXR5T3JpZ2luLmVxdWFsKCZ0b3BTZWN1cml0eU9yaWdpbikpCisgICAgICAgIHJl
dHVybiB0cnVlOworCisgICAgYXV0byogcGFnZSA9IGZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCFw
YWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0Owog
fQogCiB2b2lkIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6aGFzU3RvcmFnZUFjY2VzcyhSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7CiAgICAgQVNTRVJUKG1fZG9jdW1lbnQuc2V0dGlu
Z3MoKS5zdG9yYWdlQWNjZXNzQVBJRW5hYmxlZCgpKTsKIAotICAgIGF1dG8qIGZyYW1lID0gbV9k
b2N1bWVudC5mcmFtZSgpOwotICAgIGlmIChmcmFtZSAmJiBoYXNGcmFtZVNwZWNpZmljU3RvcmFn
ZUFjY2VzcygpKSB7Ci0gICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMQm9vbGVhbj4odHJ1ZSk7
CisgICAgYXV0byBxdWlja0NoZWNrUmVzdWx0ID0gaGFzU3RvcmFnZUFjY2Vzc1F1aWNrQ2hlY2so
KTsKKyAgICBpZiAocXVpY2tDaGVja1Jlc3VsdCkgeworICAgICAgICBwcm9taXNlLT5yZXNvbHZl
PElETEJvb2xlYW4+KCpxdWlja0NoZWNrUmVzdWx0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICAKLSAgICBpZiAoIWZyYW1lIHx8IG1fZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKS5pc1Vu
aXF1ZSgpKSB7CisKKyAgICAvLyBUaGUgZXhpc3RlbmNlIG9mIGEgZnJhbWUgYW5kIHBhZ2UgaGFz
IGJlZW4gY2hlY2tlZCBpbiByZXF1ZXN0U3RvcmFnZUFjY2Vzc1F1aWNrQ2hlY2soKS4KKyAgICBh
dXRvKiBmcmFtZSA9IG1fZG9jdW1lbnQuZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKSB7CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEJv
b2xlYW4+KGZhbHNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKLSAgICBpZiAoZnJh
bWUtPmlzTWFpbkZyYW1lKCkpIHsKLSAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExCb29sZWFu
Pih0cnVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBhdXRvJiBzZWN1cml0
eU9yaWdpbiA9IG1fZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKTsKLSAgICBhdXRvJiB0b3BTZWN1
cml0eU9yaWdpbiA9IG1fZG9jdW1lbnQudG9wRG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpOwot
ICAgIGlmIChzZWN1cml0eU9yaWdpbi5lcXVhbCgmdG9wU2VjdXJpdHlPcmlnaW4pKSB7Ci0gICAg
ICAgIHByb21pc2UtPnJlc29sdmU8SURMQm9vbGVhbj4odHJ1ZSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgCiAgICAgYXV0byogcGFnZSA9IGZyYW1lLT5wYWdlKCk7CiAgICAgaWYgKCFw
YWdlKSB7Ci0gICAgICAgIHByb21pc2UtPnJlamVjdCgpOworICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExCb29sZWFuPihmYWxzZSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCi0gICAgYXV0byBzdWJGcmFtZURvbWFpbiA9IFJl
Z2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChzZWN1cml0eU9yaWdpbi5o
b3N0KCkpOwotICAgIGF1dG8gdG9wRnJhbWVEb21haW4gPSBSZWdpc3RyYWJsZURvbWFpbjo6dW5j
aGVja2VkQ3JlYXRlRnJvbUhvc3QodG9wU2VjdXJpdHlPcmlnaW4uaG9zdCgpKTsKLSAgICBwYWdl
LT5jaHJvbWUoKS5jbGllbnQoKS5oYXNTdG9yYWdlQWNjZXNzKFdURk1vdmUoc3ViRnJhbWVEb21h
aW4pLCBXVEZNb3ZlKHRvcEZyYW1lRG9tYWluKSwgKmZyYW1lLCBbd2Vha1RoaXMgPSBtYWtlV2Vh
a1B0cigqdGhpcyksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoYm9vbCBoYXNBY2Nlc3Mp
IHsKKworICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLmhhc1N0b3JhZ2VBY2Nlc3MoUmVnaXN0
cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KG1fZG9jdW1lbnQuc2VjdXJpdHlP
cmlnaW4oKS5ob3N0KCkpLCBSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhv
c3QobV9kb2N1bWVudC50b3BEb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCkuaG9zdCgpKSwgKmZy
YW1lLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHByb21pc2UgPSBXVEZNb3ZlKHBy
b21pc2UpXSAoYm9vbCBoYXNBY2Nlc3MpIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAg
ICAgICAgIHJldHVybjsKIApAQCAtMTIwLDUzICsxMzAsNzMgQEAgdm9pZCBEb2N1bWVudFN0b3Jh
Z2VBY2Nlc3M6Omhhc1N0b3JhZ2VBY2Nlc3MoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNl
KQogICAgIH0pOwogfQogCi12b2lkIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6cmVxdWVzdFN0b3Jh
Z2VBY2Nlc3MoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQorYm9vbCBEb2N1bWVudFN0
b3JhZ2VBY2Nlc3M6Omhhc1N0b3JhZ2VBY2Nlc3NGb3JEb2N1bWVudFF1aXJrKERvY3VtZW50JiBk
b2N1bWVudCkKK3sKKyAgICBhdXRvIHF1aWNrQ2hlY2tSZXN1bHQgPSBEb2N1bWVudFN0b3JhZ2VB
Y2Nlc3M6OmZyb20oZG9jdW1lbnQpLT5oYXNTdG9yYWdlQWNjZXNzUXVpY2tDaGVjaygpOworICAg
IGlmIChxdWlja0NoZWNrUmVzdWx0KQorICAgICAgICByZXR1cm4gKnF1aWNrQ2hlY2tSZXN1bHQ7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6cmVx
dWVzdFN0b3JhZ2VBY2Nlc3MoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8RGVmZXJyZWRQcm9taXNl
PiYmIHByb21pc2UpCit7CisgICAgRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpmcm9tKGRvY3VtZW50
KS0+cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoV1RGTW92ZShwcm9taXNlKSk7Cit9CisKK09wdGlvbmFs
PFN0b3JhZ2VBY2Nlc3NRdWlja1Jlc3VsdD4gRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpyZXF1ZXN0
U3RvcmFnZUFjY2Vzc1F1aWNrQ2hlY2soKQogewogICAgIEFTU0VSVChtX2RvY3VtZW50LnNldHRp
bmdzKCkuc3RvcmFnZUFjY2Vzc0FQSUVuYWJsZWQoKSk7Ci0gICAgCisKICAgICBhdXRvKiBmcmFt
ZSA9IG1fZG9jdW1lbnQuZnJhbWUoKTsKLSAgICBpZiAoZnJhbWUgJiYgaGFzRnJhbWVTcGVjaWZp
Y1N0b3JhZ2VBY2Nlc3MoKSkgewotICAgICAgICBwcm9taXNlLT5yZXNvbHZlKCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgaWYgKCFmcmFtZSB8fCBtX2RvY3VtZW50LnNlY3Vy
aXR5T3JpZ2luKCkuaXNVbmlxdWUoKSB8fCAhaXNBbGxvd2VkVG9SZXF1ZXN0RnJhbWVTcGVjaWZp
Y1N0b3JhZ2VBY2Nlc3MoKSkgewotICAgICAgICBwcm9taXNlLT5yZWplY3QoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpIHsKLSAg
ICAgICAgcHJvbWlzZS0+cmVzb2x2ZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAor
ICAgIGlmIChmcmFtZSAmJiBoYXNGcmFtZVNwZWNpZmljU3RvcmFnZUFjY2VzcygpKQorICAgICAg
ICByZXR1cm4gU3RvcmFnZUFjY2Vzc1F1aWNrUmVzdWx0OjpHcmFudDsKKworICAgIGlmICghZnJh
bWUgfHwgbV9kb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLmlzVW5pcXVlKCkgfHwgIWlzQWxsb3dl
ZFRvUmVxdWVzdEZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzKCkpCisgICAgICAgIHJldHVybiBT
dG9yYWdlQWNjZXNzUXVpY2tSZXN1bHQ6OlJlamVjdDsKKworICAgIGlmIChmcmFtZS0+aXNNYWlu
RnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIFN0b3JhZ2VBY2Nlc3NRdWlja1Jlc3VsdDo6R3JhbnQ7
CisKICAgICBhdXRvJiB0b3BEb2N1bWVudCA9IG1fZG9jdW1lbnQudG9wRG9jdW1lbnQoKTsKICAg
ICBhdXRvJiB0b3BTZWN1cml0eU9yaWdpbiA9IHRvcERvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCk7
CiAgICAgYXV0byYgc2VjdXJpdHlPcmlnaW4gPSBtX2RvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCk7
Ci0gICAgaWYgKHNlY3VyaXR5T3JpZ2luLmVxdWFsKCZ0b3BTZWN1cml0eU9yaWdpbikpIHsKLSAg
ICAgICAgcHJvbWlzZS0+cmVzb2x2ZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAor
ICAgIGlmIChzZWN1cml0eU9yaWdpbi5lcXVhbCgmdG9wU2VjdXJpdHlPcmlnaW4pKQorICAgICAg
ICByZXR1cm4gU3RvcmFnZUFjY2Vzc1F1aWNrUmVzdWx0OjpHcmFudDsKKwogICAgIC8vIElmIHRo
ZXJlIGlzIGEgc2FuZGJveCwgaXQgaGFzIHRvIGFsbG93IHRoZSBzdG9yYWdlIGFjY2VzcyBBUEkg
dG8gYmUgY2FsbGVkLgotICAgIGlmIChtX2RvY3VtZW50LnNhbmRib3hGbGFncygpICE9IFNhbmRi
b3hOb25lICYmIG1fZG9jdW1lbnQuaXNTYW5kYm94ZWQoU2FuZGJveFN0b3JhZ2VBY2Nlc3NCeVVz
ZXJBY3RpdmF0aW9uKSkgewotICAgICAgICBwcm9taXNlLT5yZWplY3QoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICAKKyAgICBpZiAobV9kb2N1bWVudC5zYW5kYm94RmxhZ3MoKSAhPSBT
YW5kYm94Tm9uZSAmJiBtX2RvY3VtZW50LmlzU2FuZGJveGVkKFNhbmRib3hTdG9yYWdlQWNjZXNz
QnlVc2VyQWN0aXZhdGlvbikpCisgICAgICAgIHJldHVybiBTdG9yYWdlQWNjZXNzUXVpY2tSZXN1
bHQ6OlJlamVjdDsKKwogICAgIC8vIFRoZSBpZnJhbWUgaGFzIHRvIGJlIGEgZGlyZWN0IGNoaWxk
IG9mIHRoZSB0b3AgZG9jdW1lbnQuCi0gICAgaWYgKCZ0b3BEb2N1bWVudCAhPSBtX2RvY3VtZW50
LnBhcmVudERvY3VtZW50KCkpIHsKLSAgICAgICAgcHJvbWlzZS0+cmVqZWN0KCk7CisgICAgaWYg
KCZ0b3BEb2N1bWVudCAhPSBtX2RvY3VtZW50LnBhcmVudERvY3VtZW50KCkpCisgICAgICAgIHJl
dHVybiBTdG9yYWdlQWNjZXNzUXVpY2tSZXN1bHQ6OlJlamVjdDsKKworICAgIGlmICghVXNlckdl
c3R1cmVJbmRpY2F0b3I6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKQorICAgICAgICByZXR1cm4g
U3RvcmFnZUFjY2Vzc1F1aWNrUmVzdWx0OjpSZWplY3Q7CisKKyAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworfQorCit2b2lkIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nl
c3MoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQoreworICAgIEFTU0VSVChtX2RvY3Vt
ZW50LnNldHRpbmdzKCkuc3RvcmFnZUFjY2Vzc0FQSUVuYWJsZWQoKSk7CisKKyAgICBhdXRvIHF1
aWNrQ2hlY2tSZXN1bHQgPSByZXF1ZXN0U3RvcmFnZUFjY2Vzc1F1aWNrQ2hlY2soKTsKKyAgICBp
ZiAocXVpY2tDaGVja1Jlc3VsdCkgeworICAgICAgICAqcXVpY2tDaGVja1Jlc3VsdCA9PSBTdG9y
YWdlQWNjZXNzUXVpY2tSZXN1bHQ6OkdyYW50ID8gcHJvbWlzZS0+cmVzb2x2ZSgpIDogcHJvbWlz
ZS0+cmVqZWN0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCi0gICAgaWYgKCFVc2Vy
R2VzdHVyZUluZGljYXRvcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpIHsKKworICAgIC8vIFRo
ZSBleGlzdGVuY2Ugb2YgYSBmcmFtZSBhbmQgcGFnZSBoYXMgYmVlbiBjaGVja2VkIGluIHJlcXVl
c3RTdG9yYWdlQWNjZXNzUXVpY2tDaGVjaygpLgorICAgIGF1dG8qIGZyYW1lID0gbV9kb2N1bWVu
dC5mcmFtZSgpOworICAgIGlmICghZnJhbWUpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgIHByb21pc2UtPnJlamVjdCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQot
CiAgICAgYXV0byogcGFnZSA9IGZyYW1lLT5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKSB7CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBwcm9taXNlLT5yZWplY3QoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE3NCwxMCArMjA0LDcgQEAgdm9pZCBEb2N1bWVudFN0
b3JhZ2VBY2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFJlZjxEZWZlcnJlZFByb21pc2U+JiYg
cHJvbWlzZSkKICAgICBpZiAocGFnZS0+c2V0dGluZ3MoKS5zdG9yYWdlQWNjZXNzQVBJUGVyUGFn
ZVNjb3BlRW5hYmxlZCgpKQogICAgICAgICBtX3N0b3JhZ2VBY2Nlc3NTY29wZSA9IFN0b3JhZ2VB
Y2Nlc3NTY29wZTo6UGVyUGFnZTsKIAotICAgIGF1dG8gc3ViRnJhbWVEb21haW4gPSBSZWdpc3Ry
YWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3Qoc2VjdXJpdHlPcmlnaW4uaG9zdCgp
KTsKLSAgICBhdXRvIHRvcEZyYW1lRG9tYWluID0gUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tl
ZENyZWF0ZUZyb21Ib3N0KHRvcFNlY3VyaXR5T3JpZ2luLmhvc3QoKSk7Ci0gICAgCi0gICAgcGFn
ZS0+Y2hyb21lKCkuY2xpZW50KCkucmVxdWVzdFN0b3JhZ2VBY2Nlc3MoV1RGTW92ZShzdWJGcmFt
ZURvbWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21haW4pLCAqZnJhbWUsIG1fc3RvcmFnZUFjY2Vz
c1Njb3BlLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHByb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpXSAoUmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXN1bHQgcmVzdWx0KSBtdXRh
YmxlIHsKKyAgICBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5yZXF1ZXN0U3RvcmFnZUFjY2VzcyhS
ZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3QobV9kb2N1bWVudC5zZWN1
cml0eU9yaWdpbigpLmhvc3QoKSksIFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVG
cm9tSG9zdChtX2RvY3VtZW50LnRvcERvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4oKS5ob3N0KCkp
LCAqZnJhbWUsIG1fc3RvcmFnZUFjY2Vzc1Njb3BlLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vh
a1B0cigqdGhpcyksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoUmVxdWVzdFN0b3JhZ2VB
Y2Nlc3NSZXN1bHQgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAg
ICAgICAgICAgIHJldHVybjsKIApAQCAtMjA4LDYgKzIzNSw3MSBAQCB2b2lkIERvY3VtZW50U3Rv
cmFnZUFjY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBw
cm9taXNlKQogICAgIH0pOwogfQogCit2b2lkIERvY3VtZW50U3RvcmFnZUFjY2Vzczo6cmVxdWVz
dFN0b3JhZ2VBY2Nlc3NGb3JEb2N1bWVudFF1aXJrKERvY3VtZW50JiBkb2N1bWVudCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit7CisgICAgRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpmcm9tKGRvY3VtZW50KS0+cmVx
dWVzdFN0b3JhZ2VBY2Nlc3NGb3JEb2N1bWVudFF1aXJrKFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKK30KKwordm9pZCBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNj
ZXNzRm9yRG9jdW1lbnRRdWlyayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NX
YXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvIHF1aWNrQ2hlY2tS
ZXN1bHQgPSByZXF1ZXN0U3RvcmFnZUFjY2Vzc1F1aWNrQ2hlY2soKTsKKyAgICBpZiAocXVpY2tD
aGVja1Jlc3VsdCkgeworICAgICAgICAqcXVpY2tDaGVja1Jlc3VsdCA9PSBTdG9yYWdlQWNjZXNz
UXVpY2tSZXN1bHQ6OkdyYW50ID8gY29tcGxldGlvbkhhbmRsZXIoU3RvcmFnZUFjY2Vzc1dhc0dy
YW50ZWQ6OlllcykgOiBjb21wbGV0aW9uSGFuZGxlcihTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZDo6
Tm8pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHJlcXVlc3RTdG9yYWdlQWNjZXNzUXVp
cmsoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KG1fZG9jdW1lbnQu
c2VjdXJpdHlPcmlnaW4oKS5ob3N0KCkpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9
CisKK3ZvaWQgRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc0Zvck5v
bkRvY3VtZW50UXVpcmsoRG9jdW1lbnQmIGhvc3RpbmdEb2N1bWVudCwgUmVnaXN0cmFibGVEb21h
aW4mJiByZXF1ZXN0aW5nRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nl
c3NXYXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBEb2N1bWVudFN0b3Jh
Z2VBY2Nlc3M6OmZyb20oaG9zdGluZ0RvY3VtZW50KS0+cmVxdWVzdFN0b3JhZ2VBY2Nlc3NGb3JO
b25Eb2N1bWVudFF1aXJrKFdURk1vdmUocmVxdWVzdGluZ0RvbWFpbiksIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OnJlcXVlc3RT
dG9yYWdlQWNjZXNzRm9yTm9uRG9jdW1lbnRRdWlyayhSZWdpc3RyYWJsZURvbWFpbiYmIHJlcXVl
c3RpbmdEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50
ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghbV9kb2N1bWVudC5mcmFtZSgp
IHx8ICFtX2RvY3VtZW50LmZyYW1lKCktPnBhZ2UoKSkgeworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZDo6Tm8pOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIHJlcXVlc3RTdG9yYWdlQWNjZXNzUXVpcmsoV1RGTW92ZShyZXF1ZXN0aW5nRG9tYWlu
KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIERvY3VtZW50U3RvcmFn
ZUFjY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NRdWlyayhSZWdpc3RyYWJsZURvbWFpbiYmIHJl
cXVlc3RpbmdEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dy
YW50ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVChtX2RvY3VtZW50LnNl
dHRpbmdzKCkuc3RvcmFnZUFjY2Vzc0FQSUVuYWJsZWQoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQo
bV9kb2N1bWVudC5mcmFtZSgpICYmIG1fZG9jdW1lbnQuZnJhbWUoKS0+cGFnZSgpKTsKKworICAg
IG1fZG9jdW1lbnQuZnJhbWUoKS0+cGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5yZXF1ZXN0U3Rv
cmFnZUFjY2VzcyhXVEZNb3ZlKHJlcXVlc3RpbmdEb21haW4pLCBSZWdpc3RyYWJsZURvbWFpbjo6
dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3QobV9kb2N1bWVudC50b3BEb2N1bWVudCgpLnNlY3VyaXR5
T3JpZ2luKCkuaG9zdCgpKSwgKm1fZG9jdW1lbnQuZnJhbWUoKSwgbV9zdG9yYWdlQWNjZXNzU2Nv
cGUsIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFJlcXVlc3RTdG9yYWdlQWNjZXNzUmVz
dWx0IHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgLy8gQ29uc3VtZSB0aGUgdXNlciBnZXN0dXJlIG9ubHkgaWYg
dGhlIHVzZXIgZXhwbGljaXRseSBkZW5pZWQgYWNjZXNzLgorICAgICAgICBib29sIHNob3VsZFBy
ZXNlcnZlVXNlckdlc3R1cmUgPSByZXN1bHQud2FzR3JhbnRlZCA9PSBTdG9yYWdlQWNjZXNzV2Fz
R3JhbnRlZDo6WWVzIHx8IHJlc3VsdC5wcm9tcHRXYXNTaG93biA9PSBTdG9yYWdlQWNjZXNzUHJv
bXB0V2FzU2hvd246Ok5vOworCisgICAgICAgIGlmIChzaG91bGRQcmVzZXJ2ZVVzZXJHZXN0dXJl
KSB7CisgICAgICAgICAgICBtX2RvY3VtZW50LmV2ZW50TG9vcCgpLnF1ZXVlTWljcm90YXNrKFt0
aGlzLCB3ZWFrVGhpc10geworICAgICAgICAgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAg
ICAgICAgICAgICAgZW5hYmxlVGVtcG9yYXJ5VGltZVVzZXJHZXN0dXJlKCk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChyZXN1bHQud2FzR3JhbnRlZCA9PSBTdG9y
YWdlQWNjZXNzV2FzR3JhbnRlZDo6WWVzKQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6Olllcyk7CisgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgaWYgKHJlc3VsdC5wcm9tcHRXYXNTaG93biA9PSBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hv
d246OlllcykKKyAgICAgICAgICAgICAgICBzZXRXYXNFeHBsaWNpdGx5RGVuaWVkRnJhbWVTcGVj
aWZpY1N0b3JhZ2VBY2Nlc3MoKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFN0b3Jh
Z2VBY2Nlc3NXYXNHcmFudGVkOjpObyk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc2hvdWxk
UHJlc2VydmVVc2VyR2VzdHVyZSkgeworICAgICAgICAgICAgbV9kb2N1bWVudC5ldmVudExvb3Ao
KS5xdWV1ZU1pY3JvdGFzayhbdGhpcywgd2Vha1RoaXNdIHsKKyAgICAgICAgICAgICAgICBpZiAo
d2Vha1RoaXMpCisgICAgICAgICAgICAgICAgICAgIGNvbnN1bWVUZW1wb3JhcnlUaW1lVXNlckdl
c3R1cmUoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgfSk7Cit9CisKIHZvaWQg
RG9jdW1lbnRTdG9yYWdlQWNjZXNzOjplbmFibGVUZW1wb3JhcnlUaW1lVXNlckdlc3R1cmUoKQog
ewogICAgIG1fdGVtcG9yYXJ5VXNlckdlc3R1cmUgPSBtYWtlVW5pcXVlPFVzZXJHZXN0dXJlSW5k
aWNhdG9yPihQcm9jZXNzaW5nVXNlckdlc3R1cmUsICZtX2RvY3VtZW50KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuaAppbmRleCBhN2UwMGE2MzA1YmRlYTMxMWI2
ZTkxMjQyMDFlMzY1NzYxMDIwMjYyLi4wNjZjZWM3ZGZjNTRkN2YyNzk5ZmQ3MTBlYWIxNjBhMTFh
MDEzMjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdG9yYWdlQWNj
ZXNzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5oCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5
LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIlJlZ2lzdHJhYmxlRG9tYWluLmgiCiAjaW5jbHVkZSAi
U3VwcGxlbWVudGFibGUuaCIKKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3
dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01Miw2ICs1MywxMSBAQCBl
bnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NTY29wZSA6IGJvb2wgewogICAgIFBlclBhZ2UKIH07CiAK
K2VudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1F1aWNrUmVzdWx0IDogYm9vbCB7CisgICAgR3JhbnQs
CisgICAgUmVqZWN0Cit9OworCiBzdHJ1Y3QgUmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXN1bHQgewog
ICAgIFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIHdhc0dyYW50ZWQ7CiAgICAgU3RvcmFnZUFjY2Vz
c1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3duOwpAQCAtNzIsMTEgKzc4LDIzIEBAIHB1Ymxp
YzoKICAgICB+RG9jdW1lbnRTdG9yYWdlQWNjZXNzKCk7CiAKICAgICBzdGF0aWMgdm9pZCBoYXNT
dG9yYWdlQWNjZXNzKERvY3VtZW50JiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CisgICAgc3Rh
dGljIGJvb2wgaGFzU3RvcmFnZUFjY2Vzc0ZvckRvY3VtZW50UXVpcmsoRG9jdW1lbnQmKTsKKwog
ICAgIHN0YXRpYyB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKERvY3VtZW50JiwgUmVmPERlZmVy
cmVkUHJvbWlzZT4mJik7CisgICAgc3RhdGljIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NGb3JE
b2N1bWVudFF1aXJrKERvY3VtZW50JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNj
ZXNzV2FzR3JhbnRlZCk+JiYpOworICAgIHN0YXRpYyB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNz
Rm9yTm9uRG9jdW1lbnRRdWlyayhEb2N1bWVudCYgaG9zdGluZ0RvY3VtZW50LCBSZWdpc3RyYWJs
ZURvbWFpbiYmIHJlcXVlc3RpbmdEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFn
ZUFjY2Vzc1dhc0dyYW50ZWQpPiYmKTsKIAogcHJpdmF0ZToKKyAgICBPcHRpb25hbDxib29sPiBo
YXNTdG9yYWdlQWNjZXNzUXVpY2tDaGVjaygpOwogICAgIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhS
ZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKKyAgICBib29sIGhhc1N0b3JhZ2VBY2Nlc3NRdWlyaygp
OworCisgICAgT3B0aW9uYWw8U3RvcmFnZUFjY2Vzc1F1aWNrUmVzdWx0PiByZXF1ZXN0U3RvcmFn
ZUFjY2Vzc1F1aWNrQ2hlY2soKTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFJlZjxE
ZWZlcnJlZFByb21pc2U+JiYpOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NGb3JEb2N1
bWVudFF1aXJrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQp
PiYmKTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzRm9yTm9uRG9jdW1lbnRRdWlyayhS
ZWdpc3RyYWJsZURvbWFpbiYmIHJlcXVlc3RpbmdEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmKTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdl
QWNjZXNzUXVpcmsoUmVnaXN0cmFibGVEb21haW4mJiByZXF1ZXN0aW5nRG9tYWluLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJik7CisKICAgICBzdGF0
aWMgRG9jdW1lbnRTdG9yYWdlQWNjZXNzKiBmcm9tKERvY3VtZW50Jik7CiAgICAgc3RhdGljIGNv
bnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7CiAgICAgYm9vbCBoYXNGcmFtZVNwZWNpZmljU3Rv
cmFnZUFjY2VzcygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IGI5YTY2YzA4YmQ3
MDMyN2JjZDE4ODU2YmVkYjYwODc0ZGQ3N2IxNWYuLjc1NzhkMGNjNTBkNTVjZjc4YmYxZTIxY2U3
YjExN2Q2NGIwOGI1ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTg3LDYgKzg3LDcgQEAK
ICNpbmNsdWRlICJQb2ludGVyRXZlbnQuaCIKICNpbmNsdWRlICJQb2ludGVyTG9ja0NvbnRyb2xs
ZXIuaCIKICNpbmNsdWRlICJQc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5oIgorI2luY2x1
ZGUgIlF1aXJrcy5oIgogI2luY2x1ZGUgIlJlbmRlckZyYWdtZW50ZWRGbG93LmgiCiAjaW5jbHVk
ZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllckJhY2tpbmcuaCIKQEAgLTM2
MSw2ICszNjIsOSBAQCBib29sIEVsZW1lbnQ6OmRpc3BhdGNoTW91c2VFdmVudChjb25zdCBQbGF0
Zm9ybU1vdXNlRXZlbnQmIHBsYXRmb3JtRXZlbnQsIGNvbnN0CiAgICAgaWYgKGRpc3BhdGNoUG9p
bnRlckV2ZW50SWZOZWVkZWQoKnRoaXMsIG1vdXNlRXZlbnQuZ2V0KCksIHBsYXRmb3JtRXZlbnQs
IGRpZE5vdFN3YWxsb3dFdmVudCkgPT0gU2hvdWxkSWdub3JlTW91c2VFdmVudDo6WWVzKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBpZiAoaGFzQ2xhc3MoKSAmJiBRdWlya3M6OlN0b3Jh
Z2VBY2Nlc3NSZXN1bHQ6OlNob3VsZENhbmNlbEV2ZW50ID09IGRvY3VtZW50KCkucXVpcmtzKCku
dHJpZ2dlck9wdGlvbmFsU3RvcmFnZUFjY2Vzc1F1aXJrKGV2ZW50VHlwZSwgY2xhc3NOYW1lcygp
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgQVNTRVJUKCFtb3VzZUV2ZW50LT50YXJn
ZXQoKSB8fCBtb3VzZUV2ZW50LT50YXJnZXQoKSAhPSByZWxhdGVkVGFyZ2V0KTsKICAgICBkaXNw
YXRjaEV2ZW50KG1vdXNlRXZlbnQpOwogICAgIGlmIChtb3VzZUV2ZW50LT5kZWZhdWx0UHJldmVu
dGVkKCkgfHwgbW91c2VFdmVudC0+ZGVmYXVsdEhhbmRsZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmgKaW5kZXggMTI5YzNjNmIyOGQwYjZiOWE3YzM1
MDUzZTUxMDJhNDRjNmZmZTFiNi4uNjdmYmZmYzJkMjBhYjJmZDhiYTU2YThkZmE0ZDRhZTc4YTk1
ZWIyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2Vy
dmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmgK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIwIEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTYyLDYgKzYyLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjbGVhclN0YXRl
KCkgeyB9CiAgICAgCiAgICAgdmlydHVhbCBib29sIGhhc1N0YXRpc3RpY3MoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQorCisgICAgdmlydHVhbCB2b2lkIHNldERvbWFpbnNXaXRoVXNlckludGVy
YWN0aW9uKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYpIHsgfQorICAgIHZpcnR1YWwgYm9v
bCBoYXNIYWRVc2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQogfTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUXVpcmtzLmNwcAppbmRleCA5YzE4OWUxZjc1MmEwYjcyMjAzNzY1ZmIzNTdjMDFlOWMxNDIw
MGU2Li44OTExZjllMTFiNDAzZmVhYWE5ZGVlYTdmZjA4ZjgwOWQ4M2ZhYzE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9RdWlya3MuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOC0y
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
OC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgog
I2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKKyNpbmNs
dWRlICJEb2N1bWVudFN0b3JhZ2VBY2Nlc3MuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAj
aW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJIVE1MQm9keUVsZW1lbnQuaCIKQEAg
LTM4LDggKzM5LDEwIEBACiAjaW5jbHVkZSAiSFRNTE9iamVjdEVsZW1lbnQuaCIKICNpbmNsdWRl
ICJKU0V2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJMYXlvdXRVbml0LmgiCisjaW5jbHVkZSAi
UmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVz
LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJTcGFjZVNwbGl0U3RyaW5nLmgi
CiAjaW5jbHVkZSAiVXNlckFnZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTgzOSw0
ICs4NDIsNjEgQEAgYm9vbCBRdWlya3M6OnNob3VsZEF2b2lkUGFzdGluZ0ltYWdlc0FzV2ViQ29u
dGVudCgpIGNvbnN0CiAjZW5kaWYKIH0KIAorUXVpcmtzOjpTdG9yYWdlQWNjZXNzUmVzdWx0IFF1
aXJrczo6dHJpZ2dlck9wdGlvbmFsU3RvcmFnZUFjY2Vzc1F1aXJrKGNvbnN0IEF0b21TdHJpbmcm
IGV2ZW50VHlwZSwgY29uc3QgU3BhY2VTcGxpdFN0cmluZyYgY2xhc3NOYW1lcykgY29uc3QKK3sK
KyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIGlmICghbmVlZHNRdWly
a3MoKSkKKyAgICAgICAgcmV0dXJuIFF1aXJrczo6U3RvcmFnZUFjY2Vzc1Jlc3VsdDo6U2hvdWxk
Tm90Q2FuY2VsRXZlbnQ7CisKKyAgICBSZWdpc3RyYWJsZURvbWFpbiBkb21haW4geyBtX2RvY3Vt
ZW50LT51cmwoKSB9OworCisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8UmVnaXN0
cmFibGVEb21haW4+PiBraW5qYVF1aXJrcyA9IFtdIHsKKyAgICAgICAgSGFzaFNldDxSZWdpc3Ry
YWJsZURvbWFpbj4gc2V0OworICAgICAgICBzZXQuYWRkKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNo
ZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcoImF2Y2x1Yi5jb20iX3MpKTsK
KyAgICAgICAgc2V0LmFkZChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJl
Z2lzdHJhYmxlRG9tYWluU3RyaW5nKCJnaXptb2RvLmNvbSJfcykpOworICAgICAgICBzZXQuYWRk
KFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5T
dHJpbmcoImRlYWRzcGluLmNvbSJfcykpOworICAgICAgICBzZXQuYWRkKFJlZ2lzdHJhYmxlRG9t
YWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcoImphbG9wbmlr
LmNvbSJfcykpOworICAgICAgICBzZXQuYWRkKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRD
cmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcoImplemViZWwuY29tIl9zKSk7CisgICAg
ICAgIHNldC5hZGQoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3Ry
YWJsZURvbWFpblN0cmluZygia290YWt1LmNvbSJfcykpOworICAgICAgICBzZXQuYWRkKFJlZ2lz
dHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmco
ImxpZmVoYWNrZXIuY29tIl9zKSk7CisgICAgICAgIHNldC5hZGQoUmVnaXN0cmFibGVEb21haW46
OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZygidGhlcm9vdC5jb20i
X3MpKTsKKyAgICAgICAgc2V0LmFkZChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRl
RnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKCJ0aGV0YWtlb3V0LmNvbSJfcykpOworICAgICAg
ICBzZXQuYWRkKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFi
bGVEb21haW5TdHJpbmcoInRoZW9uaW9uLmNvbSJfcykpOworICAgICAgICBzZXQuYWRkKFJlZ2lz
dHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmco
InRoZWludmVudG9yeS5jb20iX3MpKTsKKyAgICAgICAgcmV0dXJuIHNldDsKKyAgICB9KCk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZ2lzdHJhYmxlRG9tYWluPiBraW5qYURvbWFpbiA9
IFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5T
dHJpbmcoImtpbmphLmNvbSJfcyk7CisKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVnaXN0
cmFibGVEb21haW4+IHlvdVR1YmVEb21haW4gPSBSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2Vk
Q3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKCJ5b3V0dWJlLmNvbSJfcyk7CisKKyAg
ICBpZiAoZXZlbnRUeXBlID09ICJjbGljayIpIHsKKworICAgICAgICAvLyBFbWJlZGRlZCBZb3VU
dWJlIGNhc2UuCisgICAgICAgIGlmIChkb21haW4gPT0geW91VHViZURvbWFpbiAmJiAhbV9kb2N1
bWVudC0+aXNUb3BEb2N1bWVudCgpICYmIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5o
YXNIYWRVc2VySW50ZXJhY3Rpb24oeW91VHViZURvbWFpbikgJiYgKGNsYXNzTmFtZXMuY29udGFp
bnMoInl0cC13YXRjaC1sYXRlci1pY29uIikgfHwgY2xhc3NOYW1lcy5jb250YWlucygieXRwLXdh
dGNoLWxhdGVyLWljb24iKSkpIHsKKyAgICAgICAgICAgIGlmIChSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6c2hhcmVkKCkuaGFzSGFkVXNlckludGVyYWN0aW9uKHlvdVR1YmVEb21haW4pKSB7CisgICAg
ICAgICAgICAgICAgRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc0Zv
ckRvY3VtZW50UXVpcmsoKm1fZG9jdW1lbnQsIFtdKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKSB7
CisgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBBZGQgYXBwcm9wcmlhdGUgbG9nZ2luZy4K
KyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gUXVpcmtzOjpTdG9y
YWdlQWNjZXNzUmVzdWx0OjpTaG91bGROb3RDYW5jZWxFdmVudDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisgICAgICAgIC8vIEtpbmphIGJ1cm5lciBhY2NvdW50IGxvZ2luIGNhc2UuCisg
ICAgICAgIGlmIChraW5qYVF1aXJrcy5nZXQoKS5jb250YWlucyhkb21haW4pICYmIGNsYXNzTmFt
ZXMuY29udGFpbnMoImpzX3N3aXRjaC10by1idXJuZXItbG9naW4iKSkgeworICAgICAgICAgICAg
aWYgKFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5oYXNIYWRVc2VySW50ZXJhY3Rpb24o
a2luamFEb21haW4pKSB7CisgICAgICAgICAgICAgICAgRG9jdW1lbnRTdG9yYWdlQWNjZXNzOjpy
ZXF1ZXN0U3RvcmFnZUFjY2Vzc0Zvck5vbkRvY3VtZW50UXVpcmsoKm1fZG9jdW1lbnQsIGtpbmph
RG9tYWluLmdldCgpLmlzb2xhdGVkQ29weSgpLCBbXShTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCkg
eworICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogQWRkIGFwcHJvcHJpYXRlIGxvZ2dpbmcu
CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFF1aXJrczo6U3Rv
cmFnZUFjY2Vzc1Jlc3VsdDo6U2hvdWxkTm90Q2FuY2VsRXZlbnQ7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAvLyBGSVhNRTogVGFrZSB0aGUgdXNlciB0byBraW5qYS5jb20gaW4gdGhlIGVs
c2UgY2FzZS4KKyAgICAgICAgfQorICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGV2ZW50
VHlwZSk7CisgICAgVU5VU0VEX1BBUkFNKGNsYXNzTmFtZXMpOworI2VuZGlmCisgICAgcmV0dXJu
IFF1aXJrczo6U3RvcmFnZUFjY2Vzc1Jlc3VsdDo6U2hvdWxkTm90Q2FuY2VsRXZlbnQ7Cit9CisK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1F1aXJrcy5oCmluZGV4IDYzODZlNzQyZGVhYTg4MjM3OGRjNDc5NmNmNDAxYjRl
ZWY0ZjU5MjguLjA1NjA5NzgwYWU5YmEwYjRkODI1YmI5OWEwYmNlYmI1N2YwOTU5YmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9RdWlya3MuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTgt
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTgtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDYgKzM2LDcgQEAgY2xhc3MgRXZlbnRMaXN0ZW5lcjsKIGNs
YXNzIEV2ZW50VGFyZ2V0OwogY2xhc3MgSFRNTEVsZW1lbnQ7CiBjbGFzcyBMYXlvdXRVbml0Owor
Y2xhc3MgU3BhY2VTcGxpdFN0cmluZzsKIAogY2xhc3MgUXVpcmtzIHsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShRdWlya3MpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTEwNSw2ICsx
MDYsOSBAQCBwdWJsaWM6CiAKICAgICBib29sIHNob3VsZEF2b2lkUGFzdGluZ0ltYWdlc0FzV2Vi
Q29udGVudCgpIGNvbnN0OwogCisgICAgZW51bSBTdG9yYWdlQWNjZXNzUmVzdWx0IDogYm9vbCB7
IFNob3VsZE5vdENhbmNlbEV2ZW50LCBTaG91bGRDYW5jZWxFdmVudCB9OworICAgIFN0b3JhZ2VB
Y2Nlc3NSZXN1bHQgdHJpZ2dlck9wdGlvbmFsU3RvcmFnZUFjY2Vzc1F1aXJrKGNvbnN0IEF0b21T
dHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgU3BhY2VTcGxpdFN0cmluZyYgY2xhc3NOYW1lcykgY29u
c3Q7CisKIHByaXZhdGU6CiAgICAgYm9vbCBuZWVkc1F1aXJrcygpIGNvbnN0OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IGRmZWJjYjE5
YjMyNDYwNTI5NjhjMzQ4MzNlOTM0ZThlZTljODUwYjUuLmUzZjQzNGQ1ZjhmMWZiMTU1ODJmYmIy
OTg3NDcwYjBjMGJlMGM3MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
Ni0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMTI4MSw2ICsxMjgxLDE4IEBAIHZvaWQgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpzZXRDYWNoZU1heEFnZUNhcChTZWNvbmRzIHNlY29uZHMsIENv
bXBsZXRpCiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAorYm9vbCBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6Om5lZWRzVXNlckludGVyYWN0aW9uUXVpcmsoY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIGRvbWFpbikgY29uc3QKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
SGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4+IHF1aXJrcyA9IFtdIHsKKyAgICAgICAgSGFzaFNl
dDxSZWdpc3RyYWJsZURvbWFpbj4gc2V0OworICAgICAgICBzZXQuYWRkKFJlZ2lzdHJhYmxlRG9t
YWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcoImtpbmphLmNv
bSJfcykpOworICAgICAgICBzZXQuYWRkKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVh
dGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcoInlvdXR1YmUuY29tIl9zKSk7CisgICAgICAg
IHJldHVybiBzZXQ7CisgICAgfSgpOworCisgICAgcmV0dXJuIHF1aXJrcy5nZXQoKS5jb250YWlu
cyhkb21haW4pOworfQorCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2Fs
bFVwZGF0ZVByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29va2llc0ZvckhhbmRsZXIoY29uc3QgUmVn
aXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZXNGb3ImIGRvbWFpbnNUb0Jsb2NrLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKQEAgLTEyOTEsNiArMTMwMywxNyBAQCB2b2lkIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2FsbFVwZGF0ZVByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29v
a2llc0ZvcgogICAgICAgICAgICAgc3RvcmFnZVNlc3Npb24tPnNldFByZXZhbGVudERvbWFpbnNU
b0Jsb2NrQnV0S2VlcENvb2tpZXNGb3IoZG9tYWluc1RvQmxvY2suZG9tYWluc1RvQmxvY2tCdXRL
ZWVwQ29va2llc0Zvcik7CiAgICAgICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+c2V0RG9tYWluc1dp
dGhVc2VySW50ZXJhY3Rpb25Bc0ZpcnN0UGFydHkoZG9tYWluc1RvQmxvY2suZG9tYWluc1dpdGhV
c2VySW50ZXJhY3Rpb25Bc0ZpcnN0UGFydHkpOwogICAgICAgICB9CisKKyAgICAgICAgSGFzaFNl
dDxSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb25RdWlyazsKKyAg
ICAgICAgZm9yIChhdXRvJiBkb21haW4gOiBkb21haW5zVG9CbG9jay5kb21haW5zV2l0aFVzZXJJ
bnRlcmFjdGlvbkFzRmlyc3RQYXJ0eSkgeworICAgICAgICAgICAgaWYgKG5lZWRzVXNlckludGVy
YWN0aW9uUXVpcmsoZG9tYWluKSkKKyAgICAgICAgICAgICAgICBkb21haW5zV2l0aFVzZXJJbnRl
cmFjdGlvblF1aXJrLmFkZChkb21haW4pOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1fZG9t
YWluc1dpdGhVc2VySW50ZXJhY3Rpb25RdWlyayAhPSBkb21haW5zV2l0aFVzZXJJbnRlcmFjdGlv
blF1aXJrKSB7CisgICAgICAgICAgICBtX2RvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uUXVpcmsg
PSBkb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvblF1aXJrOworICAgICAgICAgICAgbV9uZXR3b3Jr
U2Vzc2lvbi0+bmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpTZXREb21haW5zV2l0aFVzZXJJbnRlcmFj
dGlvbihkb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvblF1aXJrKSwgMCk7CisgICAgICAgIH0KICAg
ICB9CiAKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDViNTFkMTEwZDQ3YjEwMTJiZTUxOTY0ZmU5MDYx
NzNkZjQ3MGRjYTcuLmYzYzNmNzUzZDNiOGU1MjRkMzJmMDQ3MDVmMTZkZjVhZDdkOTc3YTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNzMs
NiArMjczLDcgQEAgc3RydWN0IFRoaXJkUGFydHlEYXRhIHsKICAgICB2b2lkIGxvZ1Rlc3RpbmdF
dmVudChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGNhbGxHcmFudFN0b3JhZ2VBY2Nlc3NIYW5k
bGVyKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRpb25h
bDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgU3Rv
cmFnZUFjY2Vzc1Njb3BlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNH
cmFudGVkKT4mJik7CiAgICAgdm9pZCByZW1vdmVBbGxTdG9yYWdlQWNjZXNzKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CisgICAgYm9vbCBuZWVkc1VzZXJJbnRlcmFjdGlvblF1aXJrKGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7CiAgICAgdm9pZCBjYWxsVXBkYXRlUHJldmFs
ZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9ySGFuZGxlcihjb25zdCBSZWdpc3RyYWJsZURvbWFp
bnNUb0Jsb2NrQ29va2llc0ZvciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAg
dm9pZCBjYWxsSGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlcihjb25zdCBTdWJGcmFtZURv
bWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7
CiAKQEAgLTMzMyw2ICszMzQsOCBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3M6OklzRXBoZW1lcmFsIG1faXNFcGhlbWVyYWwgeyBXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzOjpJc0VwaGVtZXJhbDo6Tm8gfTsKICAgICBIYXNoU2V0PFJlZ2lzdHJh
YmxlRG9tYWluPiBtX2RvbWFpbnNXaXRoRXBoZW1lcmFsVXNlckludGVyYWN0aW9uOwogCisgICAg
SGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4gbV9kb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvblF1
aXJrOworCiAgICAgYm9vbCBtX2hhc1NjaGVkdWxlZFByb2Nlc3NTdGF0cyB7IGZhbHNlIH07CiAK
ICAgICBib29sIG1fZmlyc3ROZXR3b3JrUHJvY2Vzc0NyZWF0ZWQgeyBmYWxzZSB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMu
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzLmgK
aW5kZXggMzBkYjRjOWI1Mzg4NmEwOGIzMTdhNTI5NGRjNzI1MDEzYTAzZjU5NS4uZTYyNjM0MjQ0
ZTgxYTllYzVlNzY3Y2I3MmFmMDcxZWRlMzVkZjk1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDgsNiArNDgs
NyBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMgewogICAgIEhhc2hNYXA8
dW5zaWduZWQsIFdhbGxUaW1lPiBwbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXM7CiAjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBXZWJDb3JlOjpUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmdNb2RlIHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgeyBXZWJDb3JlOjpU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOjpBbGwgfTsKKyAgICBIYXNoU2V0PFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbjsKICNlbmRpZgog
ICAgIGJvb2wgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQgeyBmYWxzZSB9OwogCkBAIC03
Myw2ICs3NCw3IEBAIHZvaWQgV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnM6OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgcGx1Z0luQXV0b1N0YXJ0T3Jp
Z2luSGFzaGVzOwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgZW5j
b2RlciA8PCB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlOworICAgIGVuY29kZXIgPDwgZG9t
YWluc1dpdGhVc2VySW50ZXJhY3Rpb247CiAjZW5kaWYKICAgICBlbmNvZGVyIDw8IHJlc291cmNl
TG9hZFN0YXRpc3RpY3NFbmFibGVkOwogfQpAQCAtMTQ0LDYgKzE0NiwxMSBAQCBPcHRpb25hbDxX
ZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycz4gV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRl
cnM6OmRlY29kZShEZQogICAgIGRlY29kZXIgPj4gdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9k
ZTsKICAgICBpZiAoIXRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUpCiAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluPj4gZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb247CisgICAgZGVjb2RlciA+PiBk
b21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbjsKKyAgICBpZiAoIWRvbWFpbnNXaXRoVXNlckludGVy
YWN0aW9uKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogI2VuZGlmCiAKICAgICBib29s
IHJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkID0gZmFsc2U7CkBAIC0xNjYsNiArMTczLDcg
QEAgT3B0aW9uYWw8V2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnM+IFdlYlByb2Nlc3NEYXRh
U3RvcmVQYXJhbWV0ZXJzOjpkZWNvZGUoRGUKICAgICAgICAgV1RGTW92ZSgqcGx1Z0luQXV0b1N0
YXJ0T3JpZ2luSGFzaGVzKSwKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQog
ICAgICAgICAqdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSwKKyAgICAgICAgV1RGTW92ZSgq
ZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb24pLAogI2VuZGlmCiAgICAgICAgIHJlc291cmNlTG9h
ZFN0YXRpc3RpY3NFbmFibGVkCiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDljMDZiMDA3YWNm
YTFmOGZiYzNjZGFhYWRjNmVjZWU2ODM1YTc2MGYuLjYwZTEzNjI2ZTk5NmU4ZmUwMjBlY2VlZWEy
OWFkZDRiNDJjODA1OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTE5OSw2ICsxMTk5LDExIEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0
aW5nKFBBTDo6U2Vzc2lvbklEIHNlCiAKICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
Ok5ldHdvcmtQcm9jZXNzOjpTZXRUb1NhbWVTaXRlU3RyaWN0Q29va2llc0ZvclRlc3Rpbmcoc2Vz
c2lvbklELCBkb21haW4pLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CisKK3ZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0RG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb24oSGFzaFNl
dDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mJiBkb21haW5zKQoreworICAgIHByb2Nlc3NQ
b29sKCkuc2V0RG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb24oV1RGTW92ZShkb21haW5zKSk7Cit9
CiAjZW5kaWYgLy8gRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKIAogdm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpzZXRBZENsaWNrQXR0cmlidXRpb25EZWJ1Z01vZGUoYm9vbCBkZWJ1
Z01vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5oCmluZGV4IDMwMzg4OWMzZDk3NzI3NzU3ZWRkYmZiYzZmNjA3OTMzMjZk
NmM4ODcuLmQ2ZWNiNTY2NzlmZDVlMjFhMjhkOGEzOWU5YWQxNGNlNjExYjRjMDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5oCkBAIC0xODIsNiArMTgyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2hvdWxkRW5ibGVT
YW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50Rm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgV2ViQ29y
ZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CiAgICAgdm9pZCBzZXRGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZUZv
clRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJl
bW92YWxNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0VG9T
YW1lU2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBz
ZXREb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbihIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluPiYmKTsKICNlbmRpZgogCiAgICAgdm9pZCBzZXRBZENsaWNrQXR0cmlidXRpb25EZWJ1
Z01vZGUoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggODM3OWQ5ZjU5
MTAwYjZlNmUxMDY1YTdkZjU2NDE1MTIzMTUzNDM2OS4uMTVmOWE4MGUxNWYzMWJlZDk0Yjg2MTk5
ZDIxNDVkNmQyMjBiYmRhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtNTAs
NiArNTAsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVy
IE5vdFJlZkNvdW50ZWQgewogICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybShXZWJLaXQ6
OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc3ViRnJhbWVEb21haW4sIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluKSAtPiAoYm9vbCB1c2VyRGlkR3Jh
bnRBY2Nlc3MpIEFzeW5jCiAgICAgRGVsZXRlV2Vic2l0ZURhdGFJblVJUHJvY2Vzc0ZvclJlZ2lz
dHJhYmxlRG9tYWlucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJLaXQ6
OldlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0
YUZldGNoT3B0aW9uPiBmZXRjaE9wdGlvbnMsIFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbj4gZG9tYWlucykgLT4gKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRv
bWFpbnNXaXRoTWF0Y2hpbmdEYXRhUmVjb3JkcykgQXN5bmMKICAgICBEaWRDb21taXRDcm9zc1Np
dGVMb2FkV2l0aERhdGFUcmFuc2ZlckZyb21QcmV2YWxlbnRSZXNvdXJjZShXZWJLaXQ6OldlYlBh
Z2VQcm94eUlkZW50aWZpZXIgcGFnZUlEKQorICAgIFNldERvbWFpbnNXaXRoVXNlckludGVyYWN0
aW9uKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnMpCiAjZW5kaWYK
ICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIENvbnRlbnRFeHRlbnNpb25SdWxl
cyhXZWJLaXQ6OlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRlbnRpZmllcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCBkYmZkOTk0ZWMw
NzBmNDZkOTZmOGY2NzRlNTgwNDc3N2NkMmY5YWJkLi5lMjkyZTBlNDdjZmI3YmQ5NTQzMGIwMTY1
ZWZhMTIzOTJhMDkwYzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwCkBAIC05OTcsNiArOTk3LDcgQEAgV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMg
V2ViUHJvY2Vzc1Bvb2w6OndlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzKFdlYlAKICAgICAg
ICAgV1RGTW92ZShwbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMpLAogI2lmIEVOQUJMRShSRVNP
VVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgICAgIHdlYnNpdGVEYXRhU3RvcmUudGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nTW9kZSgpLAorICAgICAgICBtX2RvbWFpbnNXaXRoVXNlckludGVyYWN0
aW9uLAogI2VuZGlmCiAgICAgICAgIHdlYnNpdGVEYXRhU3RvcmUucmVzb3VyY2VMb2FkU3RhdGlz
dGljc0VuYWJsZWQoKQogICAgIH07CkBAIC0yMzUwLDYgKzIzNTEsMTIgQEAgdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6ZGlkQ29tbWl0Q3Jvc3NTaXRlTG9hZFdpdGhEYXRhVHJhbnNmZXIoUEFMOjpTZXNz
aW9uSUQgc2Vzc2kKICAgICBtX25ldHdvcmtQcm9jZXNzLT5kaWRDb21taXRDcm9zc1NpdGVMb2Fk
V2l0aERhdGFUcmFuc2ZlcihzZXNzaW9uSUQsIGZyb21Eb21haW4sIHRvRG9tYWluLCBuYXZpZ2F0
aW9uRGF0YVRyYW5zZmVyLCB3ZWJQYWdlUHJveHlJRCwgd2ViUGFnZUlEKTsKIH0KIAordm9pZCBX
ZWJQcm9jZXNzUG9vbDo6c2V0RG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb24oSGFzaFNldDxXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mJiBkb21haW5zKQoreworICAgIHNlbmRUb0FsbFByb2Nl
c3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0RG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb24o
ZG9tYWlucykpOworICAgIG1fZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb24gPSBXVEZNb3ZlKGRv
bWFpbnMpOworfQorCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZWVkUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0ZvclRlc3RpbmcoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4s
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0aGlyZFBhcnR5RG9tYWluLCBib29sIHNob3VsZFNj
aGVkdWxlTm90aWZpY2F0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3Jl
Z2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCA1YzYwYTMyZjk3ODAxN2ZjNWFlMmQ4NGUz
MTI3M2NlYTE1YTRkMjRjLi5iZjJkOGM3ZTUyZGZiMDg2ZjY1NTJhZTEzMDVjZDc4ZDhlNjY3N2Fj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTUwNCw2ICs1
MDQsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQog
ICAgIHZvaWQgZGlkQ29tbWl0Q3Jvc3NTaXRlTG9hZFdpdGhEYXRhVHJhbnNmZXIoUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25z
dCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIE9wdGlvblNldDxXZWJDb3Jl
OjpDcm9zc1NpdGVOYXZpZ2F0aW9uRGF0YVRyYW5zZmVyOjpGbGFnPiwgV2ViUGFnZVByb3h5SWRl
bnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOworICAgIHZvaWQgc2V0RG9tYWluc1dp
dGhVc2VySW50ZXJhY3Rpb24oSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mJik7
CiAgICAgdm9pZCBzZWVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZvclRlc3RpbmcoY29uc3QgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIGNvbnN0IFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluJiB0aGlyZFBhcnR5RG9tYWluLCBib29sIHNob3VsZFNjaGVkdWxl
Tm90aWZpY2F0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2VuZGlmCiAKQEAg
LTgyMSw2ICs4MjIsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNEZWxheWVkV2ViUHJvY2Vz
c0xhdW5jaERpc2FibGVkIHsgZmFsc2UgfTsKICNlbmRpZgogICAgIGJvb2wgbV91c2VTZXBhcmF0
ZVNlcnZpY2VXb3JrZXJQcm9jZXNzIHsgZmFsc2UgfTsKKworI2lmIEVOQUJMRShSRVNPVVJDRV9M
T0FEX1NUQVRJU1RJQ1MpCisgICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4g
bV9kb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbjsKKyNlbmRpZgogfTsKIAogdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCmluZGV4IDViM2I2
ODMzYzFlOTU3Zjc5MDNmY2FlMmUxNGI3YzRlOWVkNDE5OWMuLjcyNDdhNGVhY2YyNjliNjE5ZjQ1
YjA0YjAyZDc2OGE4YmQzZmE1YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVy
LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0qIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqIENvcHlyaWdodCAoQykgMjAxOS0yMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICoKICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MTQxLDYgKzE0MSwxMSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpjbGVhclN0YXRl
KCkKICAgICBtX2xhc3RSZXBvcnRlZFVzZXJJbnRlcmFjdGlvbk1hcC5jbGVhcigpOwogfQogCiti
b29sIFdlYlJlc291cmNlTG9hZE9ic2VydmVyOjpoYXNIYWRVc2VySW50ZXJhY3Rpb24oY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikgY29uc3QKK3sKKyAgICByZXR1cm4gbV9kb21haW5z
V2l0aFVzZXJJbnRlcmFjdGlvbi5jb250YWlucyhkb21haW4pOworfQorCiB2b2lkIFdlYlJlc291
cmNlTG9hZE9ic2VydmVyOjpsb2dGb250TG9hZChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIGNv
bnN0IFN0cmluZyYgZmFtaWx5TmFtZSwgYm9vbCBsb2FkU3RhdHVzKQogewogICAgIGlmIChpc0Vw
aGVtZXJhbCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlJlc291cmNlTG9hZE9ic2VydmVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAppbmRleCBlNjJhYTJh
ZmU4MDg1MDQ5N2Q4ODRkNTM2ZDA4ZDUwODdkMTYxMmRmLi4xODZmYWExM2Y2ODQyNGQwMjNmZmU3
NGJhOTU3NDgwM2YyM2Q3YzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0qIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisqIENvcHlyaWdodCAoQykgMjAxOS0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICoKICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjIsNiAr
NjIsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBoYXNTdGF0aXN0aWNzKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gIW1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmlzRW1wdHkoKTsgfQogCisgICAg
dm9pZCBzZXREb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbihIYXNoU2V0PFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluPiYmIGRvbWFpbnMpIGZpbmFsIHsgbV9kb21haW5zV2l0aFVzZXJJbnRlcmFj
dGlvbiA9IFdURk1vdmUoZG9tYWlucyk7IH0KKyAgICBib29sIGhhc0hhZFVzZXJJbnRlcmFjdGlv
bihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0IGZpbmFsOwogcHJpdmF0
ZToKICAgICBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBlbnN1cmVSZXNvdXJjZVN0
YXRpc3RpY3NGb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYpOwogICAgIHZvaWQgc2NoZWR1bGVOb3RpZmljYXRpb25JZk5lZWRlZCgpOwpAQCAtNzgs
NiArODAsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6VGltZXIgbV9ub3RpZmljYXRpb25U
aW1lcjsKIAorICAgIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IG1fZG9tYWlu
c1dpdGhVc2VySW50ZXJhY3Rpb247CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgdWlu
dDY0X3QgbV9sb2dnaW5nQ291bnRlciB7IDAgfTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRMb2dV
c2VySW50ZXJhY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5k
ZXggNjkyZTIzMWU2ZTZkNjA3YmJiOWNmYzE0MTMyYTk3YTc5ZGUxODE5Ny4uZTkxMzZjNGVlOWI4
NWMzMzQ5NjE1MGRkNDVkOTk5ODE3OTg4NjM0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcApAQCAtNTA4LDggKzUwOCwxMiBAQCB2b2lkIFdlYlByb2Nlc3M6OnNldFdl
YnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzKFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzJiYg
cAogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBtX3RoaXJkUGFy
dHlDb29raWVCbG9ja2luZ01vZGUgPSBwYXJhbWV0ZXJzLnRoaXJkUGFydHlDb29raWVCbG9ja2lu
Z01vZGU7Ci0gICAgaWYgKHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQg
JiYgIVJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRJZkV4aXN0cygpKQotICAgICAgICBSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6c2V0U2hhcmVkKCpuZXcgV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIo
cGFyYW1ldGVycy5zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSA/IFdlYkNvcmU6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3M6OklzRXBoZW1lcmFsOjpZZXMgOiBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzOjpJc0VwaGVtZXJhbDo6Tm8pKTsKKyAgICBpZiAocGFyYW1ldGVycy5yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRW5hYmxlZCkgeworICAgICAgICBpZiAoIVJlc291cmNlTG9hZE9ic2VydmVy
OjpzaGFyZWRJZkV4aXN0cygpKQorICAgICAgICAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNl
dFNoYXJlZCgqbmV3IFdlYlJlc291cmNlTG9hZE9ic2VydmVyKHBhcmFtZXRlcnMuc2Vzc2lvbklE
LmlzRXBoZW1lcmFsKCkgPyBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpJc0VwaGVt
ZXJhbDo6WWVzIDogV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6SXNFcGhlbWVyYWw6
Ok5vKSk7CisgICAgICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5zZXREb21haW5z
V2l0aFVzZXJJbnRlcmFjdGlvbihXVEZNb3ZlKHBhcmFtZXRlcnMuZG9tYWluc1dpdGhVc2VySW50
ZXJhY3Rpb24pKTsKKyAgICB9CisgICAgCiAjZW5kaWYKIAogICAgIHJlc2V0UGx1Z0luQXV0b1N0
YXJ0T3JpZ2luSGFzaGVzKFdURk1vdmUocGFyYW1ldGVycy5wbHVnSW5BdXRvU3RhcnRPcmlnaW5I
YXNoZXMpKTsKQEAgLTE4OTUsNiArMTg5OSwxMSBAQCB2b2lkIFdlYlByb2Nlc3M6OnNldFRoaXJk
UGFydHlDb29raWVCbG9ja2luZ01vZGUoVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSB0aAog
ICAgIG1fdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA9IHRoaXJkUGFydHlDb29raWVCbG9j
a2luZ01vZGU7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KKwordm9pZCBXZWJQcm9jZXNz
OjpzZXREb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbihIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluPiYmIGRvbWFpbnMpCit7CisgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJl
ZCgpLnNldERvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uKFdURk1vdmUoZG9tYWlucykpOworfQog
I2VuZGlmCiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaAppbmRleCAxNGMwMjI4YjM0OGE2ZjM1ZDIzYjhjMGJlZGU2ZTc0NGYwNjQwZDM4
Li5hOTUzYzhhZDk2MTllMTA5ODM5NjUwYTZjNDgwNzhkNmMzOWYwODNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEwLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NjEsNiArNDYxLDcgQEAgcHJpdmF0ZToKIAog
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgdm9pZCBzZXRUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmdNb2RlKFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01v
ZGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzZXREb21haW5zV2l0
aFVzZXJJbnRlcmFjdGlvbihIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKTsK
ICNlbmRpZgogCiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVQcm9jZXNzKGNvbnN0IEF1eGls
aWFyeVByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggY2ZhM2U0ZDAwMzdlYWE1
NzMzOWU0MzM3MWFmMTNkYWY2YjNmYzJmNS4uZjViY2MwNmU4ZWU1YTA1M2Y1NTlkNGRiZjMzODgx
MDkwNzAwNGYwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4KQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxMC0yMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0xNTgsNiArMTU4LDcgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNl
aXZlciBOb3RSZWZDb3VudGVkIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQogICAgIFNlZWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRm9yVGVzdGluZyhXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiBmaXJzdFBhcnR5RG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biB0aGlyZFBhcnR5RG9tYWluLCBib29sIHNob3VsZFNjaGVkdWxlTm90aWZpY2F0aW9uKSAtPiAo
KSBBc3luYwogICAgIFNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoZW51bTp1aW50OF90
IFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgYmxvY2tpbmdNb2RlKSAtPiAo
KSBBc3luYworICAgIFNldERvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uKEhhc2hTZXQ8V2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnMpCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElP
UykK
</data>

          </attachment>
      

    </bug>

</bugzilla>