<?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>164509</bug_id>
          
          <creation_ts>2016-11-08 02:00:13 -0800</creation_ts>
          <short_desc>[SOUP] Add support for client side certificates</short_desc>
          <delta_ts>2019-10-30 06:34:40 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>200805</dup_id>
          <see_also>https://bugzilla.gnome.org/show_bug.cgi?id=618429</see_also>
    
    <see_also>https://github.com/Igalia/cog/issues/34</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sergio Villar Senin">svillar</reporter>
          <assigned_to name="Michael Catanzaro">mcatanzaro</assigned_to>
          <cc>aperez</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>danw</cc>
    
    <cc>emanuele.aina</cc>
    
    <cc>gustavo</cc>
    
    <cc>lantw44</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>srujannajurs</cc>
    
    <cc>vipingeorge06</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1249011</commentid>
    <comment_count>0</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2016-11-08 02:00:13 -0800</bug_when>
    <thetext>[SOUP] Add support for client side certificates</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249012</commentid>
    <comment_count>1</comment_count>
      <attachid>294149</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2016-11-08 02:01:21 -0800</bug_when>
    <thetext>Created attachment 294149
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249014</commentid>
    <comment_count>2</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2016-11-08 02:09:20 -0800</bug_when>
    <thetext>The status of the patch is the following. It successfully intercepts the soup requests for client side certificates and pipes those requests through the wk&apos;s general authentication mechanism (in soup ports we were only using it for HTTP authentication).

Then on the UI side it fills the authentication challenge with a fixed certificate generated for the ssl.geoffk.org testing service. These are the things that should be done on top apart from reviewing the implemented solution:

1- Emit a signal to clients to ask for the certificates
2- Pipe the client password request through the same mechanism
3- Emit a signal to clients to ask for certificate passwords
4- Cache certificates? There is a confusing clientCertificates() in ResourceHandle which in reality are server side certificates
5- Port it to the new NETWORK_SESSION work done by KaL
6- Tests
7- ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1416152</commentid>
    <comment_count>3</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-04-19 19:48:49 -0700</bug_when>
    <thetext>(In reply to Sergio Villar Senin from comment #2)
&gt; 4- Cache certificates? There is a confusing clientCertificates() in
&gt; ResourceHandle which in reality are server side certificates

It&apos;s in SoupNetworkSession now, but will need to be renamed, yes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1483976</commentid>
    <comment_count>4</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2018-12-01 06:34:41 -0800</bug_when>
    <thetext>*** Bug 180957 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1512160</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-03-04 07:39:29 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #3)
&gt; It&apos;s in SoupNetworkSession now, but will need to be renamed, yes.

Done in bug #195247.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585323</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-10-30 06:34:40 -0700</bug_when>
    <thetext>Let&apos;s continue in bug #200805 since there are review comments there.

*** This bug has been marked as a duplicate of bug 200805 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294149</attachid>
            <date>2016-11-08 02:01:21 -0800</date>
            <delta_ts>2016-11-08 02:01:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164509-20161108105530.patch</filename>
            <type>text/plain</type>
            <size>26949</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3OTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTg0NTg3YmZlOGEyZjY4
NmQxY2MzOWM1YjU1Yzc5MmFjNjRjYjE3YS4uZWVkMDMyNGVkYmZlYmMzNjZiZmYyOTY3NWMwZGM4
MWEyMWZhNDc0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDE2LTExLTA4ICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtTT1VQXSBB
ZGQgc3VwcG9ydCBmb3IgY2xpZW50IHNpZGUgY2VydGlmaWNhdGVzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ1MDkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKwor
ICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Q3JlZGVudGlhbC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9BdXRoZW50aWNh
dGlvbkNoYWxsZW5nZS5oOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2U6OnRsc0Nvbm5lY3Rpb24pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9BdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZVNvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJvdGVjdGlv
blNwYWNlRm9yQ2xpZW50Q2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2U6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvQ3JlZGVudGlhbFNvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q3JlZGVudGlhbDo6Q3JlZGVudGlhbCk6CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsOjpp
c0VtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNyZWRlbnRpYWw6OnBsYXRmb3JtQ29tcGFyZSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0NyZWRlbnRpYWxTb3VwLmg6CisgICAg
ICAgIChXZWJDb3JlOjpDcmVkZW50aWFsOjpDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYkNvcmU6
OkNyZWRlbnRpYWw6OmNlcnRpZmljYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvUmVzb3VyY2VFcnJvci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZUVycm9yU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjp0bHNF
cnJvcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291
cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpuZXR3b3JrRXZlbnRDYWxsYmFjazIpOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlU291cE1lc3NhZ2VGb3JIYW5kbGVBbmRSZXF1ZXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVu
dGlhbCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRfdGxzX2ludGVyYWN0aW9uX2luaXQpOgor
ICAgICAgICAoV2ViQ29yZTo6d2Via2l0X3Rsc19pbnRlcmFjdGlvbl9hc2tfcGFzc3dvcmQpOgor
ICAgICAgICAoV2ViQ29yZTo6d2Via2l0X3Rsc19pbnRlcmFjdGlvbl9yZXF1ZXN0X2NlcnRpZmlj
YXRlX2FzeW5jKToKKyAgICAgICAgKFdlYkNvcmU6OndlYmtpdF90bHNfaW50ZXJhY3Rpb25fcmVx
dWVzdF9jZXJ0aWZpY2F0ZV9maW5pc2gpOgorICAgICAgICAoV2ViQ29yZTo6d2Via2l0X3Rsc19p
bnRlcmFjdGlvbl9jbGFzc19pbml0KToKKyAgICAgICAgKFdlYkNvcmU6OmF1dGhlbnRpY2F0ZUNh
bGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6U291cE5ldHdv
cmtTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXBOZXR3b3JrU2Vzc2lvbjo6Y2hlY2tU
TFNFcnJvcnMpOgorICAgICAgICAoV2ViQ29yZTo6cmVxdWVzdFN0YXJ0ZWRDYWxsYmFjayk6IERl
bGV0ZWQuCisKIDIwMTYtMTAtMjcgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxp
YS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gQnVpbGQgZml4IGZvciBnY2MuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
aW5kZXggMDliNzk5Mzk3NWVjM2RjNmVlNWMzNzI5MjhmZmUzMWYxM2NhNTBmZi4uMDZlNzZkODAw
MzQzNzVlNjk4NTk2ZWVlOThmNDU5MzhiZTZjMzgyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2
IEBACisyMDE2LTExLTA4ICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtTT1VQXSBBZGQgc3VwcG9ydCBmb3IgY2xpZW50IHNpZGUgY2VydGlmaWNh
dGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ1
MDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNo
YXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAq
IFNoYXJlZC9BdXRoZW50aWNhdGlvbi9zb3VwL0F1dGhlbnRpY2F0aW9uTWFuYWdlclNvdXAuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnRyeVVzZUNlcnRpZmlj
YXRlSW5mb0ZvckNoYWxsZW5nZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
V2ViVmlldy5jcHA6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QXV0aGVudGljYXRlKToKKwogMjAx
Ni0xMC0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxh
Y2UgSURCS2V5UGF0aCB3aXRoIGEgV1RGOjpWYXJpYW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtl
CmluZGV4IGNkNTRhZjNiYmE1MjEwODQ1NDI4MjFkYWI4ODMyYmQzMDE5NTE1MzQuLjViNmMzYzM3
NTk3NmZmNDgxMzgyODkxY2IwMWU2NjU1Y2NiNzExMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNt
YWtlCkBAIC0xNzIsNiArMTcyLDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAg
cGxhdGZvcm0vbmV0d29yay9zb3VwL0NlcnRpZmljYXRlSW5mby5jcHAKICAgICBwbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvQ29va2llSmFyU291cC5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
Q29va2llU3RvcmFnZVNvdXAuY3BwCisgICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL0NyZWRlbnRp
YWxTb3VwLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9DcmVkZW50aWFsU3RvcmFnZVNv
dXAuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwCiAgICAgcGxhdGZv
cm0vbmV0d29yay9zb3VwL0dSZWZQdHJTb3VwLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0NyZWRlbnRpYWwuaAppbmRleCBiMGZiMGRjZDczODk2ZDUyOTI2Mzg1OTUyYjgx
ODYyODEwNjBjN2M3Li44MjA2MmRkZTkwM2UwNTQzZDUyMGIyNmNkOWE4M2U5NDFhMGRkNjNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWwuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRlbnRpYWwuaApAQCAtMzAs
NiArMzAsOCBAQAogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSAiQ3JlZGVudGlhbENv
Y29hLmgiCisjZWxpZiBVU0UoU09VUCkKKyNpbmNsdWRlICJDcmVkZW50aWFsU291cC5oIgogI2Vs
c2UKIAogI2luY2x1ZGUgIkNyZWRlbnRpYWxCYXNlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9BdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZS5oCmluZGV4IGM2ZDRiZDFkZDY2OGUwOGE1YTYxNDk0NmJmMmQ2ZjE0YThiNTY4NzMuLjU2MmQ3
OGNlODI0OGRjMjdmYjFkZTlhZjZhNDMzMmFjNGU4YzRjNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9BdXRoZW50aWNhdGlvbkNo
YWxsZW5nZS5oCkBAIC00MywxMSArNDMsMTIgQEAgcHVibGljOgogICAgICAgICA6IEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlQmFzZShwcm90ZWN0aW9uU3BhY2UsIHByb3Bvc2VkQ3JlZGVudGlhbCwg
cHJldmlvdXNGYWlsdXJlQ291bnQsIHJlc3BvbnNlLCBlcnJvcikKICAgICB7CiAgICAgfQotCisg
ICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoU291cFVSSSosIEdUbHNDb25uZWN0aW9uKiwgR1Rs
c0NlcnRpZmljYXRlUmVxdWVzdEZsYWdzLCBBdXRoZW50aWNhdGlvbkNsaWVudCogPSBudWxscHRy
KTsKICAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShTb3VwTWVzc2FnZSosIFNvdXBBdXRoKiwg
Ym9vbCByZXRyeWluZywgQXV0aGVudGljYXRpb25DbGllbnQqID0gbnVsbHB0cik7CiAgICAgQXV0
aGVudGljYXRpb25DbGllbnQqIGF1dGhlbnRpY2F0aW9uQ2xpZW50KCkgY29uc3QgeyByZXR1cm4g
bV9hdXRoZW50aWNhdGlvbkNsaWVudC5nZXQoKTsgfQogICAgIFNvdXBBdXRoKiBzb3VwQXV0aCgp
IGNvbnN0IHsgcmV0dXJuIG1fc291cEF1dGguZ2V0KCk7IH0KICAgICB2b2lkIHNldFByb3Bvc2Vk
Q3JlZGVudGlhbChjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKSB7IG1fcHJvcG9zZWRDcmVk
ZW50aWFsID0gY3JlZGVudGlhbDsgfQorICAgIEdUbHNDb25uZWN0aW9uKiB0bHNDb25uZWN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV90bHNDb25uZWN0aW9uLmdldCgpOyB9CiAKIHByaXZhdGU6CiAg
ICAgZnJpZW5kIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQmFzZTsKQEAgLTU1LDYgKzU2
LDcgQEAgcHJpdmF0ZToKIAogICAgIEdSZWZQdHI8U291cEF1dGg+IG1fc291cEF1dGg7CiAgICAg
UmVmUHRyPEF1dGhlbnRpY2F0aW9uQ2xpZW50PiBtX2F1dGhlbnRpY2F0aW9uQ2xpZW50OworICAg
IEdSZWZQdHI8R1Rsc0Nvbm5lY3Rpb24+IG1fdGxzQ29ubmVjdGlvbjsKIH07CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9BdXRoZW50aWNhdGlv
bkNoYWxsZW5nZVNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU291cC5jcHAKaW5kZXggOTdlOTIzYzhhYTM3MThlZTlh
Njc1OWM1NWI3ZDdjYWQ0ZDkwZjQyOS4uYWUxYWU3NmRkN2E0M2U1MmQ1NjZkNjFlYjBlNzEyM2U2
YmViM2I1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU291cC5jcHAKQEAgLTY2
LDYgKzY2LDE0IEBAIHN0YXRpYyBQcm90ZWN0aW9uU3BhY2UgcHJvdGVjdGlvblNwYWNlRnJvbVNv
dXBBdXRoQW5kTWVzc2FnZShTb3VwQXV0aCogc291cEF1dGgsCiAgICAgICAgIFN0cmluZzo6ZnJv
bVVURjgoc291cF9hdXRoX2dldF9yZWFsbShzb3VwQXV0aCkpLCBzY2hlbWUpOwogfQogCitzdGF0
aWMgUHJvdGVjdGlvblNwYWNlIHByb3RlY3Rpb25TcGFjZUZvckNsaWVudENlcnRpZmljYXRlKFNv
dXBVUkkqIHNvdXBVUkkpCit7CisgICAgUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hl
bWUgc2NoZW1lID0gUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVDbGllbnRDZXJ0
aWZpY2F0ZVJlcXVlc3RlZDsKKyAgICByZXR1cm4gUHJvdGVjdGlvblNwYWNlKFN0cmluZzo6ZnJv
bVVURjgoc291cF91cmlfZ2V0X2hvc3Qoc291cFVSSSkpLCBzb3VwX3VyaV9nZXRfcG9ydChzb3Vw
VVJJKSwKKyAgICAgICAgcHJvdGVjdGlvblNwYWNlU2VydmVyVHlwZUZyb21VUkkoc291cFVSSSwg
ZmFsc2UgLyogaXNGb3JQcm94eSAqLyksCisgICAgICAgIFdURjo6QVNDSUlMaXRlcmFsKCJjbGll
bnQgY2VydGlmaWNhdGUiKSwgc2NoZW1lKTsKK30KKwogQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6
OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSwgU291cEF1
dGgqIHNvdXBBdXRoLCBib29sIHJldHJ5aW5nLCBBdXRoZW50aWNhdGlvbkNsaWVudCogY2xpZW50
KQogICAgIDogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlKHByb3RlY3Rpb25TcGFjZUZyb21T
b3VwQXV0aEFuZE1lc3NhZ2Uoc291cEF1dGgsIHNvdXBNZXNzYWdlKSwKICAgICAgICAgQ3JlZGVu
dGlhbCgpLCAvLyBwcm9wb3NlZENyZWRlbnRpYWxzCkBAIC03Nyw2ICs4NSwxOCBAQCBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoU291cE1lc3NhZ2UqIHNv
dXBNZXNzYWdlLCBTb3VwQQogewogfQogCitBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoU291cFVSSSogdXJpLCBHVGxzQ29ubmVjdGlvbiogY29ubmVjdGlv
biwgR1Rsc0NlcnRpZmljYXRlUmVxdWVzdEZsYWdzIGZsYWdzLCBBdXRoZW50aWNhdGlvbkNsaWVu
dCogY2xpZW50KQorICAgIDogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VCYXNlKHByb3RlY3Rpb25T
cGFjZUZvckNsaWVudENlcnRpZmljYXRlKHVyaSkKKyAgICAsIENyZWRlbnRpYWwoKSAvLyBwcm9w
b3NlZENyZWRlbnRpYWxzCisgICAgLCAwIC8vIHByZXZpb3VzRmFpbHVyZUNvdW50CisgICAgLCBS
ZXNvdXJjZVJlc3BvbnNlKCkgLy8gZmFpbHVyZVJlc3BvbnNlCisgICAgLCBSZXNvdXJjZUVycm9y
Ojp0bHNFcnJvcih1cmksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihmbGFncykpKQorICAgICwgbV9z
b3VwQXV0aChudWxscHRyKQorICAgICwgbV9hdXRoZW50aWNhdGlvbkNsaWVudChjbGllbnQpCisg
ICAgLCBtX3Rsc0Nvbm5lY3Rpb24oY29ubmVjdGlvbikKK3sKK30KKwogYm9vbCBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZTo6cGxhdGZvcm1Db21wYXJlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJiBhLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYikKIHsKICAgICByZXR1cm4g
YS5zb3VwQXV0aCgpID09IGIuc291cEF1dGgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9DcmVkZW50aWFsU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ3JlZGVudGlhbFNvdXAuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5
MzYxNmQ3NjFlZDUwZWMxYTQ0OWU1YzJmYzZlMDg0ZWQ1MGI0NmUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ3JlZGVudGlhbFNvdXAuY3Bw
CkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlhIFMuTC4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1w
b3J0ICJDcmVkZW50aWFsU291cC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NyZWRlbnRp
YWw6OkNyZWRlbnRpYWwoY29uc3QgQ3JlZGVudGlhbCYgb3JpZ2luYWwsIENyZWRlbnRpYWxQZXJz
aXN0ZW5jZSBwZXJzaXN0ZW5jZSkKKyAgICA6IENyZWRlbnRpYWxCYXNlKG9yaWdpbmFsLCBwZXJz
aXN0ZW5jZSkKKyAgICAsIG1fY2VydGlmaWNhdGUob3JpZ2luYWwubV9jZXJ0aWZpY2F0ZSkKK3sK
K30KKworQ3JlZGVudGlhbDo6Q3JlZGVudGlhbChHVGxzQ2VydGlmaWNhdGUqIGNlcnRpZmljYXRl
KQorICAgIDogQ3JlZGVudGlhbEJhc2UoKQorICAgICwgbV9jZXJ0aWZpY2F0ZShjZXJ0aWZpY2F0
ZSkKK3sKK30KKworYm9vbCBDcmVkZW50aWFsOjppc0VtcHR5KCkgY29uc3QKK3sKKyAgICBpZiAo
bV9jZXJ0aWZpY2F0ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIENyZWRl
bnRpYWxCYXNlOjppc0VtcHR5KCk7Cit9CisKK2Jvb2wgQ3JlZGVudGlhbDo6cGxhdGZvcm1Db21w
YXJlKGNvbnN0IENyZWRlbnRpYWwmIGEsIGNvbnN0IENyZWRlbnRpYWwmIGIpCit7CisgICAgaWYg
KCFhLm1fY2VydGlmaWNhdGUgJiYgIWIubV9jZXJ0aWZpY2F0ZSkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisKKyAgICByZXR1cm4gYS5tX2NlcnRpZmljYXRlID09IGIubV9jZXJ0aWZpY2F0ZTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL0NyZWRlbnRpYWxTb3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvQ3JlZGVudGlhbFNvdXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNzk3MWY5M2Ey
NDkyZTdjMDAwZWVhMzExMjdiOGYzNGIxYjI2ODgyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0NyZWRlbnRpYWxTb3VwLmgKQEAgLTAsMCAr
MSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNlcnRpZmlj
YXRlSW5mby5oIgorI2luY2x1ZGUgIkNyZWRlbnRpYWxCYXNlLmgiCisjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENyZWRlbnRpYWwgOiBw
dWJsaWMgQ3JlZGVudGlhbEJhc2UgeworcHVibGljOgorICAgIENyZWRlbnRpYWwoKQorICAgICAg
ICA6IENyZWRlbnRpYWxCYXNlKCkKKyAgICB7CisgICAgfQorCisgICAgQ3JlZGVudGlhbChjb25z
dCBTdHJpbmcmIHVzZXIsIGNvbnN0IFN0cmluZyYgcGFzc3dvcmQsIENyZWRlbnRpYWxQZXJzaXN0
ZW5jZSBwZXJzaXN0ZW5jZSkKKyAgICAgICAgOiBDcmVkZW50aWFsQmFzZSh1c2VyLCBwYXNzd29y
ZCwgcGVyc2lzdGVuY2UpCisgICAgeworICAgIH0KKworICAgIENyZWRlbnRpYWwoY29uc3QgQ3Jl
ZGVudGlhbCYsIENyZWRlbnRpYWxQZXJzaXN0ZW5jZSk7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBl
eHBsaWNpdCBDcmVkZW50aWFsKEdUbHNDZXJ0aWZpY2F0ZSopOworCisgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBHVGxzQ2VydGlm
aWNhdGUqIGNlcnRpZmljYXRlKCkgY29uc3QgeyByZXR1cm4gbV9jZXJ0aWZpY2F0ZS5nZXQoKTsg
fQorCisgICAgc3RhdGljIGJvb2wgcGxhdGZvcm1Db21wYXJlKGNvbnN0IENyZWRlbnRpYWwmLCBj
b25zdCBDcmVkZW50aWFsJik7CisKK3ByaXZhdGU6CisgICAgR1JlZlB0cjxHVGxzQ2VydGlmaWNh
dGU+IG1fY2VydGlmaWNhdGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3IuaApp
bmRleCBiZjAyOTE4NDgyMGZiZTVkNDA2NWY2MDQ3YTIyNWNiOGRhZGU0N2I3Li4yNDdjYzRjZjhl
NDk4OTk3ZjA0NmQ3MDU3N2YxMjE1ZGJhMDgzZjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yLmgKQEAgLTU2LDcgKzU2LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBSZXNvdXJjZUVycm9yIGh0dHBFcnJvcihTb3VwTWVzc2Fn
ZSosIEdFcnJvciosIFNvdXBSZXF1ZXN0Kik7CiAgICAgc3RhdGljIFJlc291cmNlRXJyb3IgdHJh
bnNwb3J0RXJyb3IoU291cFJlcXVlc3QqLCBpbnQgc3RhdHVzQ29kZSwgY29uc3QgU3RyaW5nJiBy
ZWFzb25QaHJhc2UpOwogICAgIHN0YXRpYyBSZXNvdXJjZUVycm9yIGdlbmVyaWNHRXJyb3IoR0Vy
cm9yKiwgU291cFJlcXVlc3QqKTsKLSAgICBzdGF0aWMgUmVzb3VyY2VFcnJvciB0bHNFcnJvcihT
b3VwUmVxdWVzdCosIHVuc2lnbmVkIHRsc0Vycm9ycywgR1Rsc0NlcnRpZmljYXRlKik7CisgICAg
c3RhdGljIFJlc291cmNlRXJyb3IgdGxzRXJyb3IoU291cFVSSSosIHVuc2lnbmVkIHRsc0Vycm9y
cywgR1Rsc0NlcnRpZmljYXRlKiA9IG51bGxwdHIpOwogICAgIHN0YXRpYyBSZXNvdXJjZUVycm9y
IHRpbWVvdXRFcnJvcihjb25zdCBVUkwmIGZhaWxpbmdVUkwpOwogICAgIHN0YXRpYyBSZXNvdXJj
ZUVycm9yIGF1dGhlbnRpY2F0aW9uRXJyb3IoU291cE1lc3NhZ2UqKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yU291
cC5jcHAKaW5kZXggZWU0MzYyNzY1ZjFjNTIwZWQ4NDI2MGY1MzRjNjY3MTE3NmI4NjBmNi4uMTgx
YjA2NWQzMjY2NDMyYTA0NzJiMGE1NGZjZGQ1YTdiNzY3YzU3NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAu
Y3BwCkBAIC03NSwxMCArNzUsMTAgQEAgUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9yOjpnZW5l
cmljR0Vycm9yKEdFcnJvciogZXJyb3IsIFNvdXBSZXF1ZXN0KiByZXF1ZXN0KQogICAgICAgICBm
YWlsaW5nVVJJKHJlcXVlc3QpLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSk7CiB9
CiAKLVJlc291cmNlRXJyb3IgUmVzb3VyY2VFcnJvcjo6dGxzRXJyb3IoU291cFJlcXVlc3QqIHJl
cXVlc3QsIHVuc2lnbmVkIHRsc0Vycm9ycywgR1Rsc0NlcnRpZmljYXRlKiBjZXJ0aWZpY2F0ZSkK
K1Jlc291cmNlRXJyb3IgUmVzb3VyY2VFcnJvcjo6dGxzRXJyb3IoU291cFVSSSogdXJpLCB1bnNp
Z25lZCB0bHNFcnJvcnMsIEdUbHNDZXJ0aWZpY2F0ZSogY2VydGlmaWNhdGUpCiB7CiAgICAgUmVz
b3VyY2VFcnJvciByZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5nKFNPVVBfSFRUUF9FUlJP
UiksIFNPVVBfU1RBVFVTX1NTTF9GQUlMRUQsCi0gICAgICAgIGZhaWxpbmdVUkkocmVxdWVzdCks
IHVuYWNjZXB0YWJsZVRMU0NlcnRpZmljYXRlKCkpOworICAgICAgICBmYWlsaW5nVVJJKHVyaSks
IHVuYWNjZXB0YWJsZVRMU0NlcnRpZmljYXRlKCkpOwogICAgIHJlc291cmNlRXJyb3Iuc2V0VExT
RXJyb3JzKHRsc0Vycm9ycyk7CiAgICAgcmVzb3VyY2VFcnJvci5zZXRDZXJ0aWZpY2F0ZShjZXJ0
aWZpY2F0ZSk7CiAgICAgcmV0dXJuIHJlc291cmNlRXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3Bw
CmluZGV4IGQ4ODM0Mjg3NDAzMTc3ZjdhZmZjODg3ZWIyZTM2MGNhN2IzYjc1ZjcuLjliOWFiODdj
ZWFiZDQyYWI5NmExN2Y0M2Q5YzZjM2ZhNWZkMGQ4NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3Bw
CkBAIC01NDEsNiArNTQxLDIwIEBAIHN0YXRpYyB2b2lkIGNvbnRpbnVlQWZ0ZXJEaWRSZWNlaXZl
UmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSkKICAgICAgICAgR19QUklPUklUWV9ERUZB
VUxULCBkLT5tX2NhbmNlbGxhYmxlLmdldCgpLCByZWFkQ2FsbGJhY2ssIGhhbmRsZSk7CiB9CiAK
KyNpZiBTT1VQX0NIRUNLX1ZFUlNJT04oMiwgNDcsIDMpCitzdGF0aWMgdm9pZCBuZXR3b3JrRXZl
bnRDYWxsYmFjazIoU291cE1lc3NhZ2UqIHNvdXBNZXNzYWdlLCBHU29ja2V0Q2xpZW50RXZlbnQg
ZXZlbnQsIEdJT1N0cmVhbSogY29ubmVjdGlvbiwgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBpZiAo
ZXZlbnQgIT0gR19TT0NLRVRfQ0xJRU5UX1RMU19IQU5EU0hBS0lORykKKyAgICAgICAgcmV0dXJu
OworCisgICAgUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSA9IHN0YXRpY19jYXN0PFJlc291cmNlSGFu
ZGxlKj4oZGF0YSk7CisgICAgaWYgKCFoYW5kbGUgfHwgaGFuZGxlLT5jYW5jZWxsZWRPckNsaWVu
dGxlc3MoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZ19vYmplY3Rfc2V0X2RhdGEoR19PQkpF
Q1QoY29ubmVjdGlvbiksICJtc2ciLCBzb3VwTWVzc2FnZSk7Cit9CisjZW5kaWYKKwogI2lmIEVO
QUJMRShXRUJfVElNSU5HKQogc3RhdGljIGRvdWJsZSBtaWxpc2Vjb25kc1NpbmNlUmVxdWVzdChk
b3VibGUgcmVxdWVzdFRpbWUpCiB7CkBAIC02NjQsNiArNjc4LDEwIEBAIHN0YXRpYyBib29sIGNy
ZWF0ZVNvdXBNZXNzYWdlRm9ySGFuZGxlQW5kUmVxdWVzdChSZXNvdXJjZUhhbmRsZSogaGFuZGxl
LCBjb25zdCBSCiAgICAgc291cF9tZXNzYWdlX3NldF9wcmlvcml0eShkLT5tX3NvdXBNZXNzYWdl
LmdldCgpLCB0b1NvdXBNZXNzYWdlUHJpb3JpdHkocmVxdWVzdC5wcmlvcml0eSgpKSk7CiAjZW5k
aWYKIAorI2lmIFNPVVBfQ0hFQ0tfVkVSU0lPTigyLCA0NywgMykKKyAgICBnX3NpZ25hbF9jb25u
ZWN0KGQtPm1fc291cE1lc3NhZ2UuZ2V0KCksICJuZXR3b3JrLWV2ZW50IiwgR19DQUxMQkFDSyhu
ZXR3b3JrRXZlbnRDYWxsYmFjazIpLCBoYW5kbGUpOworI2VuZGlmCisKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApAQCAtODI2LDcgKzg0NCw4IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsCiAgICAg
fQogCiAgICAgZC0+bV9jdXJyZW50V2ViQ2hhbGxlbmdlID0gY2hhbGxlbmdlOwotICAgIHNvdXBf
c2Vzc2lvbl9wYXVzZV9tZXNzYWdlKGQtPnNvdXBTZXNzaW9uKCksIGQtPm1fc291cE1lc3NhZ2Uu
Z2V0KCkpOworICAgIGlmICghY2hhbGxlbmdlLnRsc0Nvbm5lY3Rpb24oKSkKKyAgICAgICAgc291
cF9zZXNzaW9uX3BhdXNlX21lc3NhZ2UoZC0+c291cFNlc3Npb24oKSwgZC0+bV9zb3VwTWVzc2Fn
ZS5nZXQoKSk7CiAKICAgICAvLyBXZSBjb3VsZCBhbHNvIGRvIHRoaXMgYmVmb3JlIHdlIGV2ZW4g
c3RhcnQgdGhlIHJlcXVlc3QsIGJ1dCB0aGF0IHdvdWxkIGJlIGF0IHRoZSBleHBlbnNlCiAgICAg
Ly8gb2YgYWxsIHJlcXVlc3QgbGF0ZW5jeSwgdmVyc3VzIGEgb25lLXRpbWUgbGF0ZW5jeSBmb3Ig
dGhlIHNtYWxsIHN1YnNldCBvZiByZXF1ZXN0cyB0aGF0CkBAIC04NzgsOSArODk3LDEzIEBAIHZv
aWQgUmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSYgY2hhbGxlbmdlCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBBU1NFUlQoZC0+
bV9zb3VwTWVzc2FnZSk7Ci0gICAgc291cF9hdXRoX2F1dGhlbnRpY2F0ZShjaGFsbGVuZ2Uuc291
cEF1dGgoKSwgY3JlZGVudGlhbC51c2VyKCkudXRmOCgpLmRhdGEoKSwgY3JlZGVudGlhbC5wYXNz
d29yZCgpLnV0ZjgoKS5kYXRhKCkpOwotICAgIHNvdXBfc2Vzc2lvbl91bnBhdXNlX21lc3NhZ2Uo
ZC0+c291cFNlc3Npb24oKSwgZC0+bV9zb3VwTWVzc2FnZS5nZXQoKSk7CisgICAgaWYgKGNyZWRl
bnRpYWwuY2VydGlmaWNhdGUoKSkKKyAgICAgICAgZ190bHNfY29ubmVjdGlvbl9zZXRfY2VydGlm
aWNhdGUoY2hhbGxlbmdlLnRsc0Nvbm5lY3Rpb24oKSwgY3JlZGVudGlhbC5jZXJ0aWZpY2F0ZSgp
KTsKKyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJUKGQtPm1fc291cE1lc3NhZ2UpOworICAgICAg
ICBzb3VwX2F1dGhfYXV0aGVudGljYXRlKGNoYWxsZW5nZS5zb3VwQXV0aCgpLCBjcmVkZW50aWFs
LnVzZXIoKS51dGY4KCkuZGF0YSgpLCBjcmVkZW50aWFsLnBhc3N3b3JkKCkudXRmOCgpLmRhdGEo
KSk7CisgICAgICAgIHNvdXBfc2Vzc2lvbl91bnBhdXNlX21lc3NhZ2UoZC0+c291cFNlc3Npb24o
KSwgZC0+bV9zb3VwTWVzc2FnZS5nZXQoKSk7CisgICAgfQogCiAgICAgY2xlYXJBdXRoZW50aWNh
dGlvbigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcAppbmRleCBjMzQ1NTdkOTdjY2U3MGExMjcw
NjhmYmI0MGY4NjRhNDQ4NjU0YTNhLi41MGUyNWNlMzE0ODY4ODY4NTg0NWIyNDc5Yjg1OGFhNzhk
MTlmMzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
U291cE5ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcApAQCAtNDgsNiArNDgsNjIgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBzdGF0aWMgYm9vbCBnSWdub3JlVExTRXJyb3JzOwogCisjaWYgU09V
UF9DSEVDS19WRVJTSU9OKDIsIDQ3LCAzKQorLyogR1Rsc0ludGVyYWN0aW9uIHN1YmNsYXNzIGZv
ciBkb19pbnRlcmFjdGlvbl90ZXN0ICovCit0eXBlZGVmIEdUbHNJbnRlcmFjdGlvbiBXZWJLaXRU
bHNJbnRlcmFjdGlvbjsKK3R5cGVkZWYgR1Rsc0ludGVyYWN0aW9uQ2xhc3MgV2ViS2l0VGxzSW50
ZXJhY3Rpb25DbGFzczsKKworR1R5cGUgd2Via2l0X3Rsc19pbnRlcmFjdGlvbl9nZXRfdHlwZSh2
b2lkKTsKKworR19ERUZJTkVfVFlQRShXZWJLaXRUbHNJbnRlcmFjdGlvbiwgd2Via2l0X3Rsc19p
bnRlcmFjdGlvbiwgR19UWVBFX1RMU19JTlRFUkFDVElPTik7CisKK3N0YXRpYyB2b2lkCit3ZWJr
aXRfdGxzX2ludGVyYWN0aW9uX2luaXQoV2ViS2l0VGxzSW50ZXJhY3Rpb24qKQoreworCit9CisK
K3N0YXRpYyBHVGxzSW50ZXJhY3Rpb25SZXN1bHQKK3dlYmtpdF90bHNfaW50ZXJhY3Rpb25fYXNr
X3Bhc3N3b3JkKEdUbHNJbnRlcmFjdGlvbiosIEdUbHNQYXNzd29yZCogcGFzc3dvcmQsIEdDYW5j
ZWxsYWJsZSosIEdFcnJvcioqKQoreworICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgcGlwZSB0aGlz
IHRocm91Z2ggdGhlIGF1dGggbWVjaGFuaXNtIHRvbyB0byBhc2sgdGhlIHVzZXIKKyAgICBnX3Rs
c19wYXNzd29yZF9zZXRfdmFsdWUocGFzc3dvcmQsIChjb25zdCBndWNoYXIqKSJwYXNzIiwgNCk7
CisgICAgcmV0dXJuIEdfVExTX0lOVEVSQUNUSU9OX0hBTkRMRUQ7Cit9CisKK3N0YXRpYyB2b2lk
Cit3ZWJraXRfdGxzX2ludGVyYWN0aW9uX3JlcXVlc3RfY2VydGlmaWNhdGVfYXN5bmMoR1Rsc0lu
dGVyYWN0aW9uKiBpbnRlcmFjdGlvbiwgR1Rsc0Nvbm5lY3Rpb24qIGNvbm5lY3Rpb24sICBHVGxz
Q2VydGlmaWNhdGVSZXF1ZXN0RmxhZ3MgZmxhZ3MsIEdDYW5jZWxsYWJsZSogY2FuY2VsbGFibGUs
IEdBc3luY1JlYWR5Q2FsbGJhY2sgY2FsbGJhY2ssIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAg
ICBHUmVmUHRyPEdUYXNrPiB0YXNrID0gYWRvcHRHUmVmKGdfdGFza19uZXcoaW50ZXJhY3Rpb24s
IGNhbmNlbGxhYmxlLCBjYWxsYmFjaywgdXNlcl9kYXRhKSk7CisKKyAgICBHUmVmUHRyPFNvdXBN
ZXNzYWdlPiBtZXNzYWdlID0gc3RhdGljX2Nhc3Q8U291cE1lc3NhZ2UqPihnX29iamVjdF9nZXRf
ZGF0YShHX09CSkVDVChjb25uZWN0aW9uKSwgIm1zZyIpKTsKKyAgICBSZWZQdHI8UmVzb3VyY2VI
YW5kbGU+IGhhbmRsZSA9IHN0YXRpY19jYXN0PFJlc291cmNlSGFuZGxlKj4oZ19vYmplY3RfZ2V0
X2RhdGEoR19PQkpFQ1QobWVzc2FnZS5nZXQoKSksICJoYW5kbGUiKSk7CisgICAgaWYgKCFoYW5k
bGUgfHwgaGFuZGxlLT5jYW5jZWxsZWRPckNsaWVudGxlc3MoKSkgeworICAgICAgICBnX3Rhc2tf
cmV0dXJuX2ludCh0YXNrLmdldCgpLCBHX1RMU19JTlRFUkFDVElPTl9GQUlMRUQpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgaGFuZGxlLT5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UoQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uoc291cF9tZXNzYWdlX2dldF91cmkobWVz
c2FnZS5nZXQoKSksIGNvbm5lY3Rpb24sIGZsYWdzLCBoYW5kbGUuZ2V0KCkpKTsKKyAgICBnX3Rh
c2tfcmV0dXJuX2ludCh0YXNrLmdldCgpLCBHX1RMU19JTlRFUkFDVElPTl9IQU5ETEVEKTsKK30K
Kworc3RhdGljIEdUbHNJbnRlcmFjdGlvblJlc3VsdAord2Via2l0X3Rsc19pbnRlcmFjdGlvbl9y
ZXF1ZXN0X2NlcnRpZmljYXRlX2ZpbmlzaChHVGxzSW50ZXJhY3Rpb24qLCBHQXN5bmNSZXN1bHQq
IHJlc3VsdCwgR0Vycm9yKiogZXJyb3IpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdUbHNJ
bnRlcmFjdGlvblJlc3VsdD4oZ190YXNrX3Byb3BhZ2F0ZV9pbnQoR19UQVNLKHJlc3VsdCksIGVy
cm9yKSk7Cit9CisKK3N0YXRpYyB2b2lkCit3ZWJraXRfdGxzX2ludGVyYWN0aW9uX2NsYXNzX2lu
aXQoV2ViS2l0VGxzSW50ZXJhY3Rpb25DbGFzcyAqa2xhc3MpCit7CisgICAgR1Rsc0ludGVyYWN0
aW9uQ2xhc3MqIGludGVyYWN0aW9uQ2xhc3MgPSBHX1RMU19JTlRFUkFDVElPTl9DTEFTUyhrbGFz
cyk7CisKKyAgICBpbnRlcmFjdGlvbkNsYXNzLT5yZXF1ZXN0X2NlcnRpZmljYXRlX2FzeW5jID0g
d2Via2l0X3Rsc19pbnRlcmFjdGlvbl9yZXF1ZXN0X2NlcnRpZmljYXRlX2FzeW5jOworICAgIGlu
dGVyYWN0aW9uQ2xhc3MtPnJlcXVlc3RfY2VydGlmaWNhdGVfZmluaXNoID0gd2Via2l0X3Rsc19p
bnRlcmFjdGlvbl9yZXF1ZXN0X2NlcnRpZmljYXRlX2ZpbmlzaDsKKyAgICBpbnRlcmFjdGlvbkNs
YXNzLT5hc2tfcGFzc3dvcmQgPSB3ZWJraXRfdGxzX2ludGVyYWN0aW9uX2Fza19wYXNzd29yZDsK
K30KKyNlbmRpZiAvLyBTT1VQX0NIRUNLX1ZFUlNJT04oMiwgNDcsIDMpCisKICNpZiAhTE9HX0RJ
U0FCTEVECiBpbmxpbmUgc3RhdGljIHZvaWQgc291cExvZ1ByaW50ZXIoU291cExvZ2dlciosIFNv
dXBMb2dnZXJMb2dMZXZlbCwgY2hhciBkaXJlY3Rpb24sIGNvbnN0IGNoYXIqIGRhdGEsIGdwb2lu
dGVyKQogewpAQCAtMTIzLDE4ICsxNzksOSBAQCBzdGF0aWMgdm9pZCBhdXRoZW50aWNhdGVDYWxs
YmFjayhTb3VwU2Vzc2lvbiosIFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSwgU291cEF1dAogICAg
IFJlZlB0cjxSZXNvdXJjZUhhbmRsZT4gaGFuZGxlID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5k
bGUqPihnX29iamVjdF9nZXRfZGF0YShHX09CSkVDVChzb3VwTWVzc2FnZSksICJoYW5kbGUiKSk7
CiAgICAgaWYgKCFoYW5kbGUpCiAgICAgICAgIHJldHVybjsKLSAgICBoYW5kbGUtPmRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShzb3VwTWVz
c2FnZSwgc291cEF1dGgsIHJldHJ5aW5nLCBoYW5kbGUuZ2V0KCkpKTsKLX0KIAotI2lmIEVOQUJM
RShXRUJfVElNSU5HKSAmJiAhU09VUF9DSEVDS19WRVJTSU9OKDIsIDQ5LCA5MSkKLXN0YXRpYyB2
b2lkIHJlcXVlc3RTdGFydGVkQ2FsbGJhY2soU291cFNlc3Npb24qLCBTb3VwTWVzc2FnZSogc291
cE1lc3NhZ2UsIFNvdXBTb2NrZXQqLCBncG9pbnRlcikKLXsKLSAgICBSZWZQdHI8UmVzb3VyY2VI
YW5kbGU+IGhhbmRsZSA9IHN0YXRpY19jYXN0PFJlc291cmNlSGFuZGxlKj4oZ19vYmplY3RfZ2V0
X2RhdGEoR19PQkpFQ1Qoc291cE1lc3NhZ2UpLCAiaGFuZGxlIikpOwotICAgIGlmICghaGFuZGxl
KQotICAgICAgICByZXR1cm47Ci0gICAgaGFuZGxlLT5kaWRTdGFydFJlcXVlc3QoKTsKKyAgICBo
YW5kbGUtPmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShzb3VwTWVzc2FnZSwgc291cEF1dGgsIHJldHJ5aW5nLCBoYW5kbGUuZ2V0KCkpKTsK
IH0KLSNlbmRpZgogCiBTb3VwTmV0d29ya1Nlc3Npb246OlNvdXBOZXR3b3JrU2Vzc2lvbihTb3Vw
Q29va2llSmFyKiBjb29raWVKYXIpCiAgICAgOiBtX3NvdXBTZXNzaW9uKGFkb3B0R1JlZihzb3Vw
X3Nlc3Npb25fYXN5bmNfbmV3KCkpKQpAQCAtMTY2LDYgKzIxMywxMSBAQCBTb3VwTmV0d29ya1Nl
c3Npb246OlNvdXBOZXR3b3JrU2Vzc2lvbihTb3VwQ29va2llSmFyKiBjb29raWVKYXIpCiAgICAg
fQogI2VuZGlmCiAKKyNpZiBTT1VQX0NIRUNLX1ZFUlNJT04oMiwgNDcsIDMpCisgICAgR1JlZlB0
cjxHVGxzSW50ZXJhY3Rpb24+IGludGVyYWN0aW9uID0gc3RhdGljX2Nhc3Q8R1Rsc0ludGVyYWN0
aW9uKj4oZ19vYmplY3RfbmV3KHdlYmtpdF90bHNfaW50ZXJhY3Rpb25fZ2V0X3R5cGUoKSwgbnVs
bHB0cikpOworICAgIGdfb2JqZWN0X3NldChtX3NvdXBTZXNzaW9uLmdldCgpLCBTT1VQX1NFU1NJ
T05fVExTX0lOVEVSQUNUSU9OLCBpbnRlcmFjdGlvbi5nZXQoKSwgbnVsbHB0cik7CisjZW5kaWYK
KwogICAgIHNldHVwTG9nZ2VyKCk7CiAKICAgICBnX3NpZ25hbF9jb25uZWN0KG1fc291cFNlc3Np
b24uZ2V0KCksICJhdXRoZW50aWNhdGUiLCBHX0NBTExCQUNLKGF1dGhlbnRpY2F0ZUNhbGxiYWNr
KSwgbnVsbHB0cik7CkBAIC0zNDksNyArNDAxLDcgQEAgdm9pZCBTb3VwTmV0d29ya1Nlc3Npb246
OmNoZWNrVExTRXJyb3JzKFNvdXBSZXF1ZXN0KiBzb3VwUmVxdWVzdCwgU291cE1lc3NhZ2UqIG0K
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGNvbXBsZXRpb25IYW5kbGVyKFJlc291cmNl
RXJyb3I6OnRsc0Vycm9yKHNvdXBSZXF1ZXN0LCB0bHNFcnJvcnMsIGNlcnRpZmljYXRlKSk7Cisg
ICAgY29tcGxldGlvbkhhbmRsZXIoUmVzb3VyY2VFcnJvcjo6dGxzRXJyb3Ioc291cF9yZXF1ZXN0
X2dldF91cmkoc291cFJlcXVlc3QpLCB0bHNFcnJvcnMsIGNlcnRpZmljYXRlKSk7CiB9CiAKIHZv
aWQgU291cE5ldHdvcmtTZXNzaW9uOjphbGxvd1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhv
c3QoY29uc3QgQ2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGNvbnN0IFN0cmluZyYg
aG9zdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BdXRoZW50aWNhdGlvbi9B
dXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0F1dGhlbnRp
Y2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggZjE2ZmZhNTBmNTBkY2IyZGI3
MzY2MDE1YmE4YzA1YjM4MmUzMTkwYS4uODY3MTQ1YzE3YzkzZmE3NDA0NmY5ODY1YjExODNiZmEw
ODFhNGNhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0F1dGhlbnRpY2F0aW9u
L0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0F1
dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAKQEAgLTE4OCw4ICsxODgsOCBA
QCB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKERvd25sb2FkJiBkb3dubG9hZAogfQogI2VuZGlmCiAKLS8vIEN1cnJlbnRseSwgb25s
eSBNYWMga25vd3MgaG93IHRvIHJlc3BvbmQgdG8gYXV0aGVudGljYXRpb24gY2hhbGxlbmdlcyB3
aXRoIGNlcnRpZmljYXRlIGluZm8uCi0jaWYgIUhBVkUoU0VDX0lERU5USVRZKQorLy8gQ3VycmVu
dGx5LCBvbmx5IE1hYyBhbmQgc291cCBiYXNlZCBwb3J0cyBrbm93IGhvdyB0byByZXNwb25kIHRv
IGF1dGhlbnRpY2F0aW9uIGNoYWxsZW5nZXMgd2l0aCBjZXJ0aWZpY2F0ZSBpbmZvLgorI2lmICFI
QVZFKFNFQ19JREVOVElUWSkgJiYgIVVTRShTT1VQKQogYm9vbCBBdXRoZW50aWNhdGlvbk1hbmFn
ZXI6OnRyeVVzZUNlcnRpZmljYXRlSW5mb0ZvckNoYWxsZW5nZShjb25zdCBXZWJDb3JlOjpBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYsIGNvbnN0IENlcnRpZmljYXRlSW5mbyYsIGNvbnN0IENoYWxs
ZW5nZUNvbXBsZXRpb25IYW5kbGVyJikKIHsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXV0aGVudGljYXRpb24vc291cC9BdXRoZW50aWNhdGlv
bk1hbmFnZXJTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BdXRoZW50aWNhdGlvbi9z
b3VwL0F1dGhlbnRpY2F0aW9uTWFuYWdlclNvdXAuY3BwCmluZGV4IGMyNmYyZTVlNzA3YWI3Y2Ew
MWQ5OGRlNjI3ODdiMzU4NjgwZjk2YzIuLmFkN2UyMzMzNWMwNTFkZDM4NTY1OTZkZWYzZWViMzhj
Y2Y5ZDJkNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BdXRoZW50aWNhdGlv
bi9zb3VwL0F1dGhlbnRpY2F0aW9uTWFuYWdlclNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9zb3VwL0F1dGhlbnRpY2F0aW9uTWFuYWdlclNvdXAuY3Bw
CkBAIC0zMCw2ICszMCwyNCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKK2Jvb2wgQXV0aGVudGljYXRpb25NYW5hZ2VyOjp0cnlVc2VDZXJ0aWZpY2F0
ZUluZm9Gb3JDaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5n
ZSwgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGNvbnN0IENoYWxsZW5n
ZUNvbXBsZXRpb25IYW5kbGVyJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIWNlcnRp
ZmljYXRlSW5mby5jZXJ0aWZpY2F0ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBD
cmVkZW50aWFsIGNyZWRlbnRpYWwoY2VydGlmaWNhdGVJbmZvLmNlcnRpZmljYXRlKCkpOworICAg
IGlmIChjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6VXNlQ3JlZGVudGlhbCwgY3JlZGVudGlhbCk7
CisgICAgZWxzZSB7CisgICAgICAgIGlmIChjaGFsbGVuZ2UuYXV0aGVudGljYXRpb25DbGllbnQo
KSkKKyAgICAgICAgICAgIGNoYWxsZW5nZS5hdXRoZW50aWNhdGlvbkNsaWVudCgpLT5yZWNlaXZl
ZENyZWRlbnRpYWwoY2hhbGxlbmdlLCBjcmVkZW50aWFsKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgcmVjZWl2ZWRDcmVkZW50aWFsKGNoYWxsZW5nZSwgY3JlZGVudGlhbCk7CisgICAgfQor
CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpyZWNl
aXZlZENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBjb25zdCBDcmVk
ZW50aWFsJikKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlldy5jcHAKaW5kZXggM2NhNTI0MjZlNjcyOWQ1MWU1YmEwNDNkNGExMzM4NTEz
M2Y5Y2VkZi4uOTMwZTVlNWQxYmEyZjdmYTk2YmZhYjI0YzcyYjBhZWE0MDdhMmUzNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAK
QEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJXZWJDZXJ0aWZpY2F0ZUluZm8uaCIKICNpbmNs
dWRlICJXZWJDb250ZXh0TWVudUl0ZW0uaCIKICNpbmNsdWRlICJXZWJDb250ZXh0TWVudUl0ZW1E
YXRhLmgiCisjaW5jbHVkZSAiV2ViQ3JlZGVudGlhbC5oIgogI2luY2x1ZGUgIldlYktpdEF1dGhl
bnRpY2F0aW9uRGlhbG9nLmgiCiAjaW5jbHVkZSAiV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0
UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdEJhY2tGb3J3YXJkTGlzdFByaXZhdGUuaCIKQEAg
LTUyNyw3ICs1MjgsMjUgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Rpc2Nvbm5lY3RGYXZp
Y29uRGF0YWJhc2VTaWduYWxIYW5kbGVycyhXZWJLaXRXZWJWaWV3Kgogc3RhdGljIGdib29sZWFu
IHdlYmtpdFdlYlZpZXdBdXRoZW50aWNhdGUoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0
QXV0aGVudGljYXRpb25SZXF1ZXN0KiByZXF1ZXN0KQogewogICAgIENyZWRlbnRpYWxTdG9yYWdl
TW9kZSBjcmVkZW50aWFsU3RvcmFnZU1vZGUgPSB3ZWJraXRfYXV0aGVudGljYXRpb25fcmVxdWVz
dF9jYW5fc2F2ZV9jcmVkZW50aWFscyhyZXF1ZXN0KSA/IEFsbG93UGVyc2lzdGVudFN0b3JhZ2Ug
OiBEaXNhbGxvd1BlcnNpc3RlbnRTdG9yYWdlOwotICAgIHdlYmtpdFdlYlZpZXdCYXNlQWRkQXV0
aGVudGljYXRpb25EaWFsb2coV0VCS0lUX1dFQl9WSUVXX0JBU0Uod2ViVmlldyksIHdlYmtpdEF1
dGhlbnRpY2F0aW9uRGlhbG9nTmV3KHJlcXVlc3QsIGNyZWRlbnRpYWxTdG9yYWdlTW9kZSkpOwor
CisgICAgaWYgKHdlYmtpdF9hdXRoZW50aWNhdGlvbl9yZXF1ZXN0X2dldF9zY2hlbWUocmVxdWVz
dCkgPT0gV0VCS0lUX0FVVEhFTlRJQ0FUSU9OX1NDSEVNRV9DTElFTlRfQ0VSVElGSUNBVEVfUkVR
VUVTVEVEKSB7CisgICAgICAgIC8vIEZJWE1FOiBzdGF0aWMgY2VydGlmaWNhdGVzIGZvciB0ZXN0
aW5nIHB1cnBvc2VzLiBUbyB0ZXN0IGFnYWluc3Qgc3NsLmdlb2Zmay5vcmcKKyAgICAgICAgR1Vu
aXF1ZVB0cjxjaGFyPiBjZXJ0RmlsZShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X2hvbWVfZGlyKCks
ICJnZW9mZi5wMTIuY3J0IiwgbnVsbHB0cikpOworICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGtl
eUZpbGUoZ19idWlsZF9maWxlbmFtZShnX2dldF9ob21lX2RpcigpLCAiZ2VvZmYucDEyLmtleSIs
IG51bGxwdHIpKTsKKyAgICAgICAgaWYgKCFjZXJ0RmlsZSB8fCAha2V5RmlsZSkKKyAgICAgICAg
ICAgIHJldHVybiBGQUxTRTsKKworICAgICAgICBHUmVmUHRyPEdUbHNDZXJ0aWZpY2F0ZT4gY2xp
ZW50Q2VydGlmaWNhdGUgPSBnX3Rsc19jZXJ0aWZpY2F0ZV9uZXdfZnJvbV9maWxlcyhjZXJ0Rmls
ZS5nZXQoKSwga2V5RmlsZS5nZXQoKSwgbnVsbHB0cik7CisgICAgICAgIGlmICghY2xpZW50Q2Vy
dGlmaWNhdGUpCisgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisKKyAgICAgICAgUmVmPFdlYkNl
cnRpZmljYXRlSW5mbz4gY2VydGlmaWNhdGVJbmZvID0gV2ViQ2VydGlmaWNhdGVJbmZvOjpjcmVh
dGUoV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvKGNsaWVudENlcnRpZmljYXRlLmdldCgpLCBzdGF0
aWNfY2FzdDxHVGxzQ2VydGlmaWNhdGVGbGFncz4oMCkpKTsKKyAgICAgICAgUmVmPFdlYkNyZWRl
bnRpYWw+IGNyZWRlbnRpYWwgPSBXZWJDcmVkZW50aWFsOjpjcmVhdGUoJmNlcnRpZmljYXRlSW5m
by5nZXQoKSk7CisKKyAgICAgICAgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5
KiBhdXRoQ2hhbGxlbmdlUHJveHkgPSB3ZWJraXRBdXRoZW50aWNhdGlvblJlcXVlc3RHZXRBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZShyZXF1ZXN0KTsKKyAgICAgICAgYXV0aENoYWxsZW5nZVByb3h5
LT51c2VDcmVkZW50aWFsKCZjcmVkZW50aWFsLmdldCgpKTsKKyAgICB9IGVsc2UKKyAgICAgICAg
d2Via2l0V2ViVmlld0Jhc2VBZGRBdXRoZW50aWNhdGlvbkRpYWxvZyhXRUJLSVRfV0VCX1ZJRVdf
QkFTRSh3ZWJWaWV3KSwgd2Via2l0QXV0aGVudGljYXRpb25EaWFsb2dOZXcocmVxdWVzdCwgY3Jl
ZGVudGlhbFN0b3JhZ2VNb2RlKSk7CiAKICAgICByZXR1cm4gVFJVRTsKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>