<?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>206248</bug_id>
          
          <creation_ts>2020-01-14 12:10:49 -0800</creation_ts>
          <short_desc>[WebAuthn] Move the async code from WebAuthenticationPanelClient to AuthenticatorManager</short_desc>
          <delta_ts>2020-02-10 19:36:14 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>181943</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jiewen Tan">jiewen_tan</reporter>
          <assigned_to name="Jiewen Tan">jiewen_tan</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1606515</commentid>
    <comment_count>0</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-01-14 12:10:49 -0800</bug_when>
    <thetext>Move the async code from WebAuthenticationPanelClient to AuthenticatorManager. The async code is supposed to protect the state of the authenticator manager from reentrance. It shouldn&apos;t sit at the API layer given the protection is needed for all different kinds of API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616494</commentid>
    <comment_count>1</comment_count>
      <attachid>390156</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-07 18:00:00 -0800</bug_when>
    <thetext>Created attachment 390156
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1616992</commentid>
    <comment_count>2</comment_count>
      <attachid>390156</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-02-10 11:29:11 -0800</bug_when>
    <thetext>Comment on attachment 390156
Patch

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

&gt; Source/WebKit/UIProcess/WebAuthentication/AuthenticatorManager.cpp:281
&gt; +    dispatchPanelClientCall([retries, completionHandler = WTFMove(completionHandler)] (const API::WebAuthenticationPanel&amp; panel) mutable {

If m_pendingRequestData.panel.get() returns null, this CompletionHandler will not be called.  That&apos;s a problem that will cause hangs.

&gt; Source/WebKit/UIProcess/WebAuthentication/AuthenticatorManager.cpp:289
&gt; +    responseVector.reserveCapacity(responses.size());

reserveInitialCapacity</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617001</commentid>
    <comment_count>3</comment_count>
      <attachid>390156</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-10 11:38:41 -0800</bug_when>
    <thetext>Comment on attachment 390156
Patch

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

Thanks for reviewing my patch, Alex.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/AuthenticatorManager.cpp:281
&gt;&gt; +    dispatchPanelClientCall([retries, completionHandler = WTFMove(completionHandler)] (const API::WebAuthenticationPanel&amp; panel) mutable {
&gt; 
&gt; If m_pendingRequestData.panel.get() returns null, this CompletionHandler will not be called.  That&apos;s a problem that will cause hangs.

Well, the panel should always exist once the operations starts, see: handleRequest() -&gt; runPanel() -&gt; startDiscovery() -&gt; operation starts if there is available authenticators. That&apos;s a simple null check. Also, there is a timer (m_requestTimeOutTimer) for every operation, therefore there should be no hangs.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/AuthenticatorManager.cpp:289
&gt;&gt; +    responseVector.reserveCapacity(responses.size());
&gt; 
&gt; reserveInitialCapacity

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617011</commentid>
    <comment_count>4</comment_count>
      <attachid>390277</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-10 12:01:31 -0800</bug_when>
    <thetext>Created attachment 390277
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617254</commentid>
    <comment_count>5</comment_count>
      <attachid>390277</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-10 18:38:32 -0800</bug_when>
    <thetext>Comment on attachment 390277
Patch

Thanks Alex for r+ this patch. I don&apos;t think EWS failures are related. cq+ regardless.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617265</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-10 19:34:53 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 390277:

editing/spelling/spellcheck-attribute.html bug 206178 (authors: g.czajkowski@samsung.com, mark.lam@apple.com, and rniwa@webkit.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617266</commentid>
    <comment_count>7</comment_count>
      <attachid>390277</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-10 19:35:31 -0800</bug_when>
    <thetext>Comment on attachment 390277
Patch

Clearing flags on attachment: 390277

Committed r256238: &lt;https://trac.webkit.org/changeset/256238&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617268</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-10 19:35:33 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617269</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-02-10 19:36:14 -0800</bug_when>
    <thetext>&lt;rdar://problem/59335837&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390156</attachid>
            <date>2020-02-07 18:00:00 -0800</date>
            <delta_ts>2020-02-10 12:01:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206248-20200207180000.patch</filename>
            <type>text/plain</type>
            <size>19994</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1Njg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGViY2U0MTQ1MDQ5ODI0MTcz
ODYyNGZkMWJjN2IyNjg3MTg3ZjM3YTguLmUxNDAxMDQ0ZjcxYTc5OWJhOWNmZTYyMTVhZTM1ZGYx
NWY1YTRlMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMjAtMDItMDcgIEppZXdlbiBU
YW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIE1vdmUgdGhl
IGFzeW5jIGNvZGUgZnJvbSBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50IHRvIEF1dGhlbnRp
Y2F0b3JNYW5hZ2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDYyNDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBObyBjaGFuZ2Ugb2YgYmVoYXZpb3JzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9B
UElXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OldlYkF1dGhl
bnRpY2F0aW9uUGFuZWxDbGllbnQ6OnNlbGVjdEFzc2VydGlvblJlc3BvbnNlIGNvbnN0KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdG9yTWFuYWdlcjo6c2VydmljZVN0YXR1
c1VwZGF0ZWQpOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdG9yTWFuYWdlcjo6YXV0aGVu
dGljYXRvclN0YXR1c1VwZGF0ZWQpOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdG9yTWFu
YWdlcjo6cmVxdWVzdFBpbik6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2Vy
OjpzZWxlY3RBc3NlcnRpb25SZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0
b3JNYW5hZ2VyOjpydW5QYW5lbCk6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JNYW5h
Z2VyOjppbnZva2VQZW5kaW5nQ29tcGxldGlvbkhhbmRsZXIpOgorICAgICAgICAoV2ViS2l0OjpB
dXRoZW50aWNhdG9yTWFuYWdlcjo6ZGlzcGF0Y2hQYW5lbENsaWVudENhbGwgY29uc3QpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50
aWNhdGlvblBhbmVsQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQubW06CisgICAgICAgIChXZWJL
aXQ6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQ6OnVwZGF0ZVBhbmVsIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6ZGlzbWlzc1BhbmVs
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6
cmVxdWVzdFBpbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxDbGllbnQ6OnNlbGVjdEFzc2VydGlvblJlc3BvbnNlIGNvbnN0KToKKwogMjAyMC0wMi0wNCAg
TWVnYW4gR2FyZG5lciAgPG1lZ2FuX2dhcmRuZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeGVk
IERlcHJlY2F0ZWQgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaAppbmRleCA3MDEwZDc4ZDg2
NGZkMGRjMjQ3ZTZiMDJjMWU5Mjc4MGU3ZGE4NTUxLi4wMWNkNDUxZmZlMzdiZTQ5ODIyNzIzMzg4
MjYxODUxNjdjYzc4ZjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmgKQEAgLTUxLDcgKzUx
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVQYW5lbChXZWJLaXQ6OldlYkF1
dGhlbnRpY2F0aW9uU3RhdHVzKSBjb25zdCB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc1Bh
bmVsKFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25SZXN1bHQpIGNvbnN0IHsgfQogICAgIHZpcnR1
YWwgdm9pZCByZXF1ZXN0UGluKHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFdURjo6U3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0IHsgY29tcGxldGlvbkhh
bmRsZXIoZW1wdHlTdHJpbmcoKSk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0QXNzZXJ0aW9u
UmVzcG9uc2UoY29uc3QgSGFzaFNldDxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlPj4mIHJlc3BvbnNlcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJD
b3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikgY29uc3QgeyBBU1NFUlQoIXJlc3BvbnNlcy5pc0VtcHR5KCkpOyBjb21wbGV0aW9uSGFuZGxl
cigqcmVzcG9uc2VzLmJlZ2luKCkpOyB9CisgICAgdmlydHVhbCB2b2lkIHNlbGVjdEFzc2VydGlv
blJlc3BvbnNlKFZlY3RvcjxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3Bv
bnNlPj4mJiByZXNwb25zZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6
QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNv
bnN0IHsgQVNTRVJUKCFyZXNwb25zZXMuaXNFbXB0eSgpKTsgY29tcGxldGlvbkhhbmRsZXIocmVz
cG9uc2VzWzBdKTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50
aWNhdG9yTWFuYWdlci5jcHAKaW5kZXggM2RiNjNlZjZiZDVlYTMyYjI5NmFjMDQ2YWE0M2EwZDE0
OTdjNWU3NC4uMDJkNDZhNzE5OGJiYTgyNWQ0NzFkMWQyMWJmZDg0NDMzNWIzZDAxZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGlj
YXRvck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1
ZGUgIk5mY1NlcnZpY2UuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJX
ZWJQcmVmZXJlbmNlc0tleXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRvclRyYW5zcG9y
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9u
cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2ViQXV0aGVudGljYXRpb25Db25zdGFudHMuaD4KQEAg
LTIzMiw4ICsyMzMsOSBAQCB2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjphdXRoZW50aWNhdG9y
QWRkZWQoUmVmPEF1dGhlbnRpY2F0b3I+JiYgYXV0aGVudGljYXRvcgogCiB2b2lkIEF1dGhlbnRp
Y2F0b3JNYW5hZ2VyOjpzZXJ2aWNlU3RhdHVzVXBkYXRlZChXZWJBdXRoZW50aWNhdGlvblN0YXR1
cyBzdGF0dXMpCiB7Ci0gICAgaWYgKGF1dG8gKnBhbmVsID0gbV9wZW5kaW5nUmVxdWVzdERhdGEu
cGFuZWwuZ2V0KCkpCi0gICAgICAgIHBhbmVsLT5jbGllbnQoKS51cGRhdGVQYW5lbChzdGF0dXMp
OworICAgIGRpc3BhdGNoUGFuZWxDbGllbnRDYWxsKFtzdGF0dXNdIChjb25zdCBBUEk6OldlYkF1
dGhlbnRpY2F0aW9uUGFuZWwmIHBhbmVsKSB7CisgICAgICAgIHBhbmVsLmNsaWVudCgpLnVwZGF0
ZVBhbmVsKHN0YXR1cyk7CisgICAgfSk7CiB9CiAKIHZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6
OnJlc3BvbmRSZWNlaXZlZChSZXNwb25kJiYgcmVzcG9uZCkKQEAgLTI2OSwyMCArMjcxLDI4IEBA
IHZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6OmRvd25ncmFkZShBdXRoZW50aWNhdG9yKiBpZCwg
UmVmPEF1dGhlbnRpY2F0b3I+JiYgZG93CiAKIHZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6OmF1
dGhlbnRpY2F0b3JTdGF0dXNVcGRhdGVkKFdlYkF1dGhlbnRpY2F0aW9uU3RhdHVzIHN0YXR1cykK
IHsKLSAgICBpZiAoYXV0byogcGFuZWwgPSBtX3BlbmRpbmdSZXF1ZXN0RGF0YS5wYW5lbC5nZXQo
KSkKLSAgICAgICAgcGFuZWwtPmNsaWVudCgpLnVwZGF0ZVBhbmVsKHN0YXR1cyk7CisgICAgZGlz
cGF0Y2hQYW5lbENsaWVudENhbGwoW3N0YXR1c10gKGNvbnN0IEFQSTo6V2ViQXV0aGVudGljYXRp
b25QYW5lbCYgcGFuZWwpIHsKKyAgICAgICAgcGFuZWwuY2xpZW50KCkudXBkYXRlUGFuZWwoc3Rh
dHVzKTsKKyAgICB9KTsKIH0KIAogdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6cmVxdWVzdFBp
bih1aW50NjRfdCByZXRyaWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdURjo6U3Ry
aW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIHBhbmVsID0gbV9w
ZW5kaW5nUmVxdWVzdERhdGEucGFuZWwuZ2V0KCkpCi0gICAgICAgIHBhbmVsLT5jbGllbnQoKS5y
ZXF1ZXN0UGluKHJldHJpZXMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBkaXNw
YXRjaFBhbmVsQ2xpZW50Q2FsbChbcmV0cmllcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0gKGNvbnN0IEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5lbCYg
cGFuZWwpIG11dGFibGUgeworICAgICAgICBwYW5lbC5jbGllbnQoKS5yZXF1ZXN0UGluKHJldHJp
ZXMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9KTsKIH0KIAotdm9pZCBBdXRo
ZW50aWNhdG9yTWFuYWdlcjo6c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UoY29uc3QgSGFzaFNldDxS
ZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPj4mIHJlc3BvbnNlcywg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0
aW9uUmVzcG9uc2UmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgQXV0aGVudGljYXRvck1h
bmFnZXI6OnNlbGVjdEFzc2VydGlvblJlc3BvbnNlKGNvbnN0IEhhc2hTZXQ8UmVmPEF1dGhlbnRp
Y2F0b3JBc3NlcnRpb25SZXNwb25zZT4+JiByZXNwb25zZXMsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIHBhbmVsID0gbV9wZW5kaW5nUmVxdWVzdERhdGEucGFu
ZWwuZ2V0KCkpCi0gICAgICAgIHBhbmVsLT5jbGllbnQoKS5zZWxlY3RBc3NlcnRpb25SZXNwb25z
ZShyZXNwb25zZXMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBWZWN0b3I8UmVm
PEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4+IHJlc3BvbnNlVmVjdG9yOworICAgIHJl
c3BvbnNlVmVjdG9yLnJlc2VydmVDYXBhY2l0eShyZXNwb25zZXMuc2l6ZSgpKTsKKyAgICBmb3Ig
KGF1dG8mIHJlc3BvbnNlIDogcmVzcG9uc2VzKQorICAgICAgICByZXNwb25zZVZlY3Rvci51bmNo
ZWNrZWRBcHBlbmQocmVzcG9uc2UuY29weVJlZigpKTsKKworICAgIGRpc3BhdGNoUGFuZWxDbGll
bnRDYWxsKFtyZXNwb25zZXMgPSBXVEZNb3ZlKHJlc3BvbnNlVmVjdG9yKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGNvbnN0IEFQSTo6V2ViQXV0aGVu
dGljYXRpb25QYW5lbCYgcGFuZWwpIG11dGFibGUgeworICAgICAgICBwYW5lbC5jbGllbnQoKS5z
ZWxlY3RBc3NlcnRpb25SZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlcyksIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKKyAgICB9KTsKIH0KIAogVW5pcXVlUmVmPEF1dGhlbnRpY2F0b3JUcmFu
c3BvcnRTZXJ2aWNlPiBBdXRoZW50aWNhdG9yTWFuYWdlcjo6Y3JlYXRlU2VydmljZShBdXRoZW50
aWNhdG9yVHJhbnNwb3J0IHRyYW5zcG9ydCwgQXV0aGVudGljYXRvclRyYW5zcG9ydFNlcnZpY2U6
Ok9ic2VydmVyJiBvYnNlcnZlcikgY29uc3QKQEAgLTM0Nyw3ICszNTcsNyBAQCB2b2lkIEF1dGhl
bnRpY2F0b3JNYW5hZ2VyOjpydW5QYW5lbCgpCiAgICAgYXV0byB0cmFuc3BvcnRzID0gZ2V0VHJh
bnNwb3J0cygpOwogICAgIG1fcGVuZGluZ1JlcXVlc3REYXRhLnBhbmVsID0gQVBJOjpXZWJBdXRo
ZW50aWNhdGlvblBhbmVsOjpjcmVhdGUoKnRoaXMsIGdldFJwSWQob3B0aW9ucyksIHRyYW5zcG9y
dHMsIGdldENsaWVudERhdGFUeXBlKG9wdGlvbnMpKTsKICAgICBhdXRvJiBwYW5lbCA9ICptX3Bl
bmRpbmdSZXF1ZXN0RGF0YS5wYW5lbDsKLSAgICBwYWdlLT51aUNsaWVudCgpLnJ1bldlYkF1dGhl
bnRpY2F0aW9uUGFuZWwoKnBhZ2UsIHBhbmVsLCAqZnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSB7IG1fcGVuZGluZ1JlcXVlc3REYXRhLm9yaWdpbiB9LCBbdHJhbnNwb3J0cyA9IFdU
Rk1vdmUodHJhbnNwb3J0cyksIHdlYWtQYW5lbCA9IG1ha2VXZWFrUHRyKHBhbmVsKSwgd2Vha1Ro
aXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHRoaXNdIChXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVz
dWx0IHJlc3VsdCkgeworICAgIHBhZ2UtPnVpQ2xpZW50KCkucnVuV2ViQXV0aGVudGljYXRpb25Q
YW5lbCgqcGFnZSwgcGFuZWwsICpmcmFtZSwgU2VjdXJpdHlPcmlnaW5EYXRhIHsgbV9wZW5kaW5n
UmVxdWVzdERhdGEub3JpZ2luIH0sIFt0cmFuc3BvcnRzID0gV1RGTW92ZSh0cmFuc3BvcnRzKSwg
d2Vha1BhbmVsID0gbWFrZVdlYWtQdHIocGFuZWwpLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0
aGlzKSwgdGhpc10gKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQgcmVzdWx0KSB7CiAgICAg
ICAgIC8vIFRoZSBwYW5lbCBhZGRyZXNzIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZSBjdXJy
ZW50IHBlbmRpbmcgcmVxdWVzdCBpcyBzdGlsbCB0aGUgc2FtZS4KICAgICAgICAgaWYgKCF3ZWFr
VGhpcyB8fCAhd2Vha1BhbmVsCiAgICAgICAgICAgICB8fCAocmVzdWx0ID09IFdlYkF1dGhlbnRp
Y2F0aW9uUGFuZWxSZXN1bHQ6OkRpZE5vdFByZXNlbnQpCkBAIC0zNjAsMTMgKzM3MCw5IEBAIHZv
aWQgQXV0aGVudGljYXRvck1hbmFnZXI6OnJ1blBhbmVsKCkKIAogdm9pZCBBdXRoZW50aWNhdG9y
TWFuYWdlcjo6aW52b2tlUGVuZGluZ0NvbXBsZXRpb25IYW5kbGVyKFJlc3BvbmQmJiByZXNwb25k
KQogewotICAgIGlmIChhdXRvICpwYW5lbCA9IG1fcGVuZGluZ1JlcXVlc3REYXRhLnBhbmVsLmdl
dCgpKSB7Ci0gICAgICAgIFdURjo6c3dpdGNoT24ocmVzcG9uZCwgWyZdKGNvbnN0IFJlZjxBdXRo
ZW50aWNhdG9yUmVzcG9uc2U+JikgewotICAgICAgICAgICAgcGFuZWwtPmNsaWVudCgpLmRpc21p
c3NQYW5lbChXZWJBdXRoZW50aWNhdGlvblJlc3VsdDo6U3VjY2VlZGVkKTsKLSAgICAgICAgfSwg
WyZdKGNvbnN0IEV4Y2VwdGlvbkRhdGEmKSB7Ci0gICAgICAgICAgICBwYW5lbC0+Y2xpZW50KCku
ZGlzbWlzc1BhbmVsKFdlYkF1dGhlbnRpY2F0aW9uUmVzdWx0OjpGYWlsZWQpOwotICAgICAgICB9
KTsKLSAgICB9CisgICAgZGlzcGF0Y2hQYW5lbENsaWVudENhbGwoW3Jlc3VsdCA9IFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8UmVmPEF1dGhlbnRpY2F0b3JSZXNwb25zZT4+KHJlc3BvbmQpID8gV2Vi
QXV0aGVudGljYXRpb25SZXN1bHQ6OlN1Y2NlZWRlZCA6IFdlYkF1dGhlbnRpY2F0aW9uUmVzdWx0
OjpGYWlsZWRdIChjb25zdCBBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwmIHBhbmVsKSB7Cisg
ICAgICAgIHBhbmVsLmNsaWVudCgpLmRpc21pc3NQYW5lbChyZXN1bHQpOworICAgIH0pOwogICAg
IG1fcGVuZGluZ0NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzcG9uZCkpOwogfQogCkBAIC0z
OTEsNiArMzk3LDE5IEBAIGF1dG8gQXV0aGVudGljYXRvck1hbmFnZXI6OmdldFRyYW5zcG9ydHMo
KSBjb25zdCAtPiBUcmFuc3BvcnRTZXQKICAgICByZXR1cm4gdHJhbnNwb3J0czsKIH0KIAordm9p
ZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6ZGlzcGF0Y2hQYW5lbENsaWVudENhbGwoRnVuY3Rpb248
dm9pZChjb25zdCBBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwmKT4mJiBjYWxsKSBjb25zdAor
eworICAgIGlmIChhdXRvKiBwYW5lbCA9IG1fcGVuZGluZ1JlcXVlc3REYXRhLnBhbmVsLmdldCgp
KSB7CisgICAgICAgIC8vIENhbGwgZGVsZWdhdGVzIGluIHRoZSBuZXh0IHJ1biBsb29wIHRvIHBy
ZXZlbnQgY2xpZW50cycgcmVlbnRyYW5jZSB0aGF0IHdvdWxkIHBvdGVudGlhbGx5IG1vZGlmeSB0
aGUgc3RhdGUKKyAgICAgICAgLy8gb2YgdGhlIGN1cnJlbnQgcnVuIGxvb3AgaW4gdW5leHBlY3Rl
ZCB3YXlzLgorICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dlYWtQYW5lbCA9IG1h
a2VXZWFrUHRyKCpwYW5lbCksIGNhbGwgPSBXVEZNb3ZlKGNhbGwpXSAoKSB7CisgICAgICAgICAg
ICBpZiAoIXdlYWtQYW5lbCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBj
YWxsKCp3ZWFrUGFuZWwpOworICAgICAgICB9KTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNh
dG9yTWFuYWdlci5oCmluZGV4IGE5YjYyOTNjNThmMTIyMDQzMmViNzY1YmNmMmQ2YTFlZGQ5YmU1
NmUuLmMxNTFkZDkzMjY1OWY2MjA2YzBmMTVmYmVhMWU1YzA1NGExYTBmOWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0b3JN
YW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
QXV0aGVudGljYXRvck1hbmFnZXIuaApAQCAtOTYsNiArOTYsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgcnVuUGFuZWwoKTsKICAgICB2b2lkIHJlc3RhcnREaXNjb3ZlcnkoKTsKICAgICBUcmFuc3Bv
cnRTZXQgZ2V0VHJhbnNwb3J0cygpIGNvbnN0OworICAgIHZvaWQgZGlzcGF0Y2hQYW5lbENsaWVu
dENhbGwoRnVuY3Rpb248dm9pZChjb25zdCBBUEk6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWwmKT4m
JikgY29uc3Q7CiAKICAgICAvLyBSZXF1ZXN0OiBXZSBvbmx5IGFsbG93IG9uZSByZXF1ZXN0IHBl
ciB0aW1lLiBBIG5ldyByZXF1ZXN0IHdpbGwgY2FuY2VsIGFueSBwZW5kaW5nIG9uZXMuCiAgICAg
V2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YSBtX3BlbmRpbmdSZXF1ZXN0RGF0YTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dl
YkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaAppbmRl
eCBmYWZhYTgxMTI4NzEyNTVhNmM0OGMzZTA5ZDExM2U5YTczZmE0YTJmLi4zYzZiM2Q3ZTAxM2Nl
NjgwNzI4MzhiOTI2OGFlY2E5YmRlMjk4ZWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29j
b2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oCkBAIC0zMiw3ICszMiw2IEBACiAjaW1w
b3J0ICJBUElXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmgiCiAjaW1wb3J0IDx3dGYvUmV0
YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KLSNpbXBvcnQgPHd0Zi9XZWFr
UHRyLmg+CiAKIEBjbGFzcyBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsOwogQHByb3RvY29sIF9X
S1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZTsKQEAgLTUwLDcgKzQ5LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHVwZGF0ZVBhbmVsKFdlYkF1dGhlbnRpY2F0aW9uU3RhdHVzKSBjb25zdCBm
aW5hbDsKICAgICB2b2lkIGRpc21pc3NQYW5lbChXZWJBdXRoZW50aWNhdGlvblJlc3VsdCkgY29u
c3QgZmluYWw7CiAgICAgdm9pZCByZXF1ZXN0UGluKHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFdURjo6U3RyaW5nJik+JiYpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgc2Vs
ZWN0QXNzZXJ0aW9uUmVzcG9uc2UoY29uc3QgSGFzaFNldDxSZWY8V2ViQ29yZTo6QXV0aGVudGlj
YXRvckFzc2VydGlvblJlc3BvbnNlPj4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdl
YkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSYpPiYmKSBjb25zdCBmaW5hbDsK
KyAgICB2b2lkIHNlbGVjdEFzc2VydGlvblJlc3BvbnNlKFZlY3RvcjxSZWY8V2ViQ29yZTo6QXV0
aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPj4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UmKT4mJikgY29uc3Qg
ZmluYWw7CiAKICAgICBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICptX3BhbmVsOwogICAgIFdl
YWtPYmpDUHRyPGlkIDxfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGU+ID4gbV9kZWxl
Z2F0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVs
Q2xpZW50Lm1tCmluZGV4IDBjMWJkNGY1YThjOWNkMmUyYzhlOTM4NzJhN2VmMzAyMjZiMjVlZDMu
LmVlYjE3ZjdiNGRjY2NmMGUwNjAwNWIxYzA4YjgxMTBjMmI3MWU4ODggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRp
Y2F0aW9uUGFuZWxDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5tbQpAQCAtMjgs
OCArMjgsMTAgQEAKIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAKKyNpbXBvcnQgIkFQSUFycmF5
LmgiCiAjaW1wb3J0ICJBUElXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmgiCiAj
aW1wb3J0ICJDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyLmgiCisjaW1wb3J0ICJXS05TQXJy
YXkuaCIKICNpbXBvcnQgIldlYkF1dGhlbnRpY2F0aW9uRmxhZ3MuaCIKICNpbXBvcnQgIl9XS1dl
YkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2VJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dL
V2ViQXV0aGVudGljYXRpb25QYW5lbC5oIgpAQCAtNjUsMjIgKzY3LDE0IEBAIHN0YXRpYyBfV0tX
ZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlIHdrV2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0
ZShXZWJBdXRoZW50CiAKIHZvaWQgV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6dXBkYXRl
UGFuZWwoV2ViQXV0aGVudGljYXRpb25TdGF0dXMgc3RhdHVzKSBjb25zdAogewotICAgIC8vIEZJ
WE1FKDIwNjI0OCkKLSAgICAvLyBDYWxsIGRlbGVnYXRlcyBpbiB0aGUgbmV4dCBydW4gbG9vcCB0
byBwcmV2ZW50IGNsaWVudHMnIHJlZW50cmFuY2UgdGhhdCB3b3VsZCBwb3RlbnRpYWxseSBtb2Rp
ZnkgdGhlIHN0YXRlCi0gICAgLy8gb2YgdGhlIGN1cnJlbnQgcnVuIGxvb3AgaW4gdW5leHBlY3Rl
ZCB3YXlzLgotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1RoaXMgPSBtYWtlV2Vh
a1B0cigqdGhpcyksIHRoaXMsIHN0YXR1c10gewotICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAg
ICAgICAgICAgcmV0dXJuOworICAgIGlmICghbV9kZWxlZ2F0ZU1ldGhvZHMucGFuZWxVcGRhdGVX
ZWJBdXRoZW50aWNhdGlvblBhbmVsKQorICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKCFt
X2RlbGVnYXRlTWV0aG9kcy5wYW5lbFVwZGF0ZVdlYkF1dGhlbnRpY2F0aW9uUGFuZWwpCi0gICAg
ICAgICAgICByZXR1cm47CisgICAgYXV0byBkZWxlZ2F0ZSA9IG1fZGVsZWdhdGUuZ2V0KCk7Cisg
ICAgaWYgKCFkZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGF1dG8gZGVsZWdh
dGUgPSBtX2RlbGVnYXRlLmdldCgpOwotICAgICAgICBpZiAoIWRlbGVnYXRlKQotICAgICAgICAg
ICAgcmV0dXJuOwotCi0gICAgICAgIFtkZWxlZ2F0ZSBwYW5lbDptX3BhbmVsIHVwZGF0ZVdlYkF1
dGhlbnRpY2F0aW9uUGFuZWw6d2tXZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlKHN0YXR1cyld
OwotICAgIH0pOworICAgIFtkZWxlZ2F0ZSBwYW5lbDptX3BhbmVsIHVwZGF0ZVdlYkF1dGhlbnRp
Y2F0aW9uUGFuZWw6d2tXZWJBdXRoZW50aWNhdGlvblBhbmVsVXBkYXRlKHN0YXR1cyldOwogfQog
CiBzdGF0aWMgX1dLV2ViQXV0aGVudGljYXRpb25SZXN1bHQgd2tXZWJBdXRoZW50aWNhdGlvblJl
c3VsdChXZWJBdXRoZW50aWNhdGlvblJlc3VsdCByZXN1bHQpCkBAIC05Nyw5MSArOTEsNjUgQEAg
c3RhdGljIF9XS1dlYkF1dGhlbnRpY2F0aW9uUmVzdWx0IHdrV2ViQXV0aGVudGljYXRpb25SZXN1
bHQoV2ViQXV0aGVudGljYXRpb25SZXMKIAogdm9pZCBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xp
ZW50OjpkaXNtaXNzUGFuZWwoV2ViQXV0aGVudGljYXRpb25SZXN1bHQgcmVzdWx0KSBjb25zdAog
ewotICAgIC8vIEZJWE1FKDIwNjI0OCkKLSAgICAvLyBDYWxsIGRlbGVnYXRlcyBpbiB0aGUgbmV4
dCBydW4gbG9vcCB0byBwcmV2ZW50IGNsaWVudHMnIHJlZW50cmFuY2UgdGhhdCB3b3VsZCBwb3Rl
bnRpYWxseSBtb2RpZnkgdGhlIHN0YXRlCi0gICAgLy8gb2YgdGhlIGN1cnJlbnQgcnVuIGxvb3Ag
aW4gdW5leHBlY3RlZCB3YXlzLgotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1Ro
aXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHRoaXMsIHJlc3VsdF0gewotICAgICAgICBpZiAoIXdl
YWtUaGlzKQotICAgICAgICAgICAgcmV0dXJuOworICAgIGlmICghbV9kZWxlZ2F0ZU1ldGhvZHMu
cGFuZWxEaXNtaXNzV2ViQXV0aGVudGljYXRpb25QYW5lbFdpdGhSZXN1bHQpCisgICAgICAgIHJl
dHVybjsKIAotICAgICAgICBpZiAoIW1fZGVsZWdhdGVNZXRob2RzLnBhbmVsRGlzbWlzc1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWxXaXRoUmVzdWx0KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgIGF1dG8gZGVsZWdhdGUgPSBtX2RlbGVnYXRlLmdldCgpOwotICAgICAgICBpZiAoIWRlbGVn
YXRlKQotICAgICAgICAgICAgcmV0dXJuOworICAgIGF1dG8gZGVsZWdhdGUgPSBtX2RlbGVnYXRl
LmdldCgpOworICAgIGlmICghZGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKIAotICAgICAgICBb
ZGVsZWdhdGUgcGFuZWw6bV9wYW5lbCBkaXNtaXNzV2ViQXV0aGVudGljYXRpb25QYW5lbFdpdGhS
ZXN1bHQ6d2tXZWJBdXRoZW50aWNhdGlvblJlc3VsdChyZXN1bHQpXTsKLSAgICB9KTsKKyAgICBb
ZGVsZWdhdGUgcGFuZWw6bV9wYW5lbCBkaXNtaXNzV2ViQXV0aGVudGljYXRpb25QYW5lbFdpdGhS
ZXN1bHQ6d2tXZWJBdXRoZW50aWNhdGlvblJlc3VsdChyZXN1bHQpXTsKIH0KIAogdm9pZCBXZWJB
dXRoZW50aWNhdGlvblBhbmVsQ2xpZW50OjpyZXF1ZXN0UGluKHVpbnQ2NF90IHJldHJpZXMsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV1RGOjpTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikgY29uc3QKIHsKLSAgICAvLyBGSVhNRSgyMDYyNDgpCi0gICAgLy8gQ2FsbCBkZWxlZ2F0
ZXMgaW4gdGhlIG5leHQgcnVuIGxvb3AgdG8gcHJldmVudCBjbGllbnRzJyByZWVudHJhbmNlIHRo
YXQgd291bGQgcG90ZW50aWFsbHkgbW9kaWZ5IHRoZSBzdGF0ZQotICAgIC8vIG9mIHRoZSBjdXJy
ZW50IHJ1biBsb29wIGluIHVuZXhwZWN0ZWQgd2F5cy4KLSAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCB0aGlzLCByZXRyaWVzLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsK
LSAgICAgICAgaWYgKCF3ZWFrVGhpcykgewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
ZW1wdHlTdHJpbmcoKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICBpZiAo
IW1fZGVsZWdhdGVNZXRob2RzLnBhbmVsUmVxdWVzdFBpbldpdGhSZW1haW5pbmdSZXRyaWVzQ29t
cGxldGlvbkhhbmRsZXIpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZW1wdHlTdHJpbmco
KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICAgICAgaWYgKCFtX2RlbGVnYXRlTWV0
aG9kcy5wYW5lbFJlcXVlc3RQaW5XaXRoUmVtYWluaW5nUmV0cmllc0NvbXBsZXRpb25IYW5kbGVy
KSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihlbXB0eVN0cmluZygpKTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgIGF1dG8gZGVsZWdhdGUgPSBtX2RlbGVnYXRl
LmdldCgpOworICAgIGlmICghZGVsZWdhdGUpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
ZW1wdHlTdHJpbmcoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICAgICAgYXV0byBk
ZWxlZ2F0ZSA9IG1fZGVsZWdhdGUuZ2V0KCk7Ci0gICAgICAgIGlmICghZGVsZWdhdGUpIHsKLSAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGVtcHR5U3RyaW5nKCkpOworICAgIGF1dG8gY2hl
Y2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZS5nZXQo
KSwgQHNlbGVjdG9yKHBhbmVsOnJlcXVlc3RQSU5XaXRoUmVtYWluaW5nUmV0cmllczpjb21wbGV0
aW9uSGFuZGxlcjopKTsKKyAgICBbZGVsZWdhdGUgcGFuZWw6bV9wYW5lbCByZXF1ZXN0UElOV2l0
aFJlbWFpbmluZ1JldHJpZXM6cmV0cmllcyBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIo
W2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNoZWNrZXIg
PSBXVEZNb3ZlKGNoZWNrZXIpXShOU1N0cmluZyAqcGluKSBtdXRhYmxlIHsKKyAgICAgICAgaWYg
KGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQogICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgYXV0byBjaGVja2VyID0gQ29tcGxldGlvbkhh
bmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVnYXRlLmdldCgpLCBAc2VsZWN0b3IocGFuZWw6
cmVxdWVzdFBJTldpdGhSZW1haW5pbmdSZXRyaWVzOmNvbXBsZXRpb25IYW5kbGVyOikpOwotICAg
ICAgICBbZGVsZWdhdGUgcGFuZWw6bV9wYW5lbCByZXF1ZXN0UElOV2l0aFJlbWFpbmluZ1JldHJp
ZXM6cmV0cmllcyBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNr
ZXIpXShOU1N0cmluZyAqcGluKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGlmIChjaGVja2VyLT5j
b21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKLSAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHBpbik7Ci0gICAgICAgIH0pLmdldCgpXTsKLSAgICB9
KTsKKyAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHBpbik7CisgICAgfSkuZ2V0KCldOwogfQogCi12b2lkIFdlYkF1
dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQ6OnNlbGVjdEFzc2VydGlvblJlc3BvbnNlKGNvbnN0IEhh
c2hTZXQ8UmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4+JiByZXNw
b25zZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0Cit2b2lkIFdl
YkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQ6OnNlbGVjdEFzc2VydGlvblJlc3BvbnNlKFZlY3Rv
cjxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPj4mJiByZXNwb25z
ZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0CiB7CiAgICAgQVNT
RVJUKCFyZXNwb25zZXMuaXNFbXB0eSgpKTsKLSAgICBhdXRvIG5zUmVzcG9uc2VzID0gYWRvcHRO
UyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OnJlc3BvbnNlcy5zaXpl
KCldKTsKLSAgICBmb3IgKGF1dG8mIHJlc3BvbnNlIDogcmVzcG9uc2VzKQotICAgICAgICBbbnNS
ZXNwb25zZXMgYWRkT2JqZWN0OndyYXBwZXIoQVBJOjpXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlv
blJlc3BvbnNlOjpjcmVhdGUocmVzcG9uc2UuY29weVJlZigpKSldOwotCi0gICAgLy8gRklYTUUo
MjA2MjQ4KQotICAgIC8vIENhbGwgZGVsZWdhdGVzIGluIHRoZSBuZXh0IHJ1biBsb29wIHRvIHBy
ZXZlbnQgY2xpZW50cycgcmVlbnRyYW5jZSB0aGF0IHdvdWxkIHBvdGVudGlhbGx5IG1vZGlmeSB0
aGUgc3RhdGUKLSAgICAvLyBvZiB0aGUgY3VycmVudCBydW4gbG9vcCBpbiB1bmV4cGVjdGVkIHdh
eXMuCi0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KCp0aGlzKSwgdGhpcywgbnNSZXNwb25zZXMgPSBXVEZNb3ZlKG5zUmVzcG9uc2VzKSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7Ci0g
ICAgICAgIGlmICghd2Vha1RoaXMpIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0
YXRpY19jYXN0PEFQSTo6V2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZSY+KFtbbnNS
ZXNwb25zZXMgZmlyc3RPYmplY3RdIF9hcGlPYmplY3RdKS5yZXNwb25zZSgpKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQogCi0gICAgICAgIGlmICghbV9kZWxlZ2F0ZU1ldGhvZHMu
cGFuZWxzZWxlY3RBc3NlcnRpb25SZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyKSB7Ci0gICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNfY2FzdDxBUEk6OldlYkF1dGhlbnRpY2F0aW9u
QXNzZXJ0aW9uUmVzcG9uc2UmPihbW25zUmVzcG9uc2VzIGZpcnN0T2JqZWN0XSBfYXBpT2JqZWN0
XSkucmVzcG9uc2UoKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICBpZiAo
IW1fZGVsZWdhdGVNZXRob2RzLnBhbmVsc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2VDb21wbGV0aW9u
SGFuZGxlcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXNwb25zZXNbMF0pOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBkZWxlZ2F0ZSA9IG1fZGVsZWdhdGUuZ2V0
KCk7CisgICAgaWYgKCFkZWxlZ2F0ZSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXNw
b25zZXNbMF0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgVmVjdG9yPFJlZlB0cjxB
UEk6Ok9iamVjdD4+IGFwaVJlc3BvbnNlczsKKyAgICBhcGlSZXNwb25zZXMucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShyZXNwb25zZXMuc2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8mIHJlc3BvbnNlIDog
cmVzcG9uc2VzKQorICAgICAgICBhcGlSZXNwb25zZXMudW5jaGVja2VkQXBwZW5kKEFQSTo6V2Vi
QXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZTo6Y3JlYXRlKHJlc3BvbnNlLmNvcHlSZWYo
KSkpOwogCi0gICAgICAgIGF1dG8gZGVsZWdhdGUgPSBtX2RlbGVnYXRlLmdldCgpOwotICAgICAg
ICBpZiAoIWRlbGVnYXRlKSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGF0aWNf
Y2FzdDxBUEk6OldlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UmPihbW25zUmVzcG9u
c2VzIGZpcnN0T2JqZWN0XSBfYXBpT2JqZWN0XSkucmVzcG9uc2UoKSk7CisgICAgYXV0byBjaGVj
a2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVnYXRlLmdldCgp
LCBAc2VsZWN0b3IocGFuZWw6c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2U6Y29tcGxldGlvbkhhbmRs
ZXI6KSk7CisgICAgW2RlbGVnYXRlIHBhbmVsOm1fcGFuZWwgc2VsZWN0QXNzZXJ0aW9uUmVzcG9u
c2U6d3JhcHBlcihBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92ZShhcGlSZXNwb25zZXMpKSkgY29t
cGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0oX1dLV2ViQXV0
aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZSAqcmVzcG9uc2UpIG11dGFibGUgeworICAgICAg
ICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCiAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBhdXRvIGNoZWNrZXIgPSBDb21wbGV0
aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUuZ2V0KCksIEBzZWxlY3Rvcihw
YW5lbDpzZWxlY3RBc3NlcnRpb25SZXNwb25zZTpjb21wbGV0aW9uSGFuZGxlcjopKTsKLSAgICAg
ICAgW2RlbGVnYXRlIHBhbmVsOm1fcGFuZWwgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2U6bnNSZXNw
b25zZXMuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92ZShjaGVj
a2VyKV0oX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZSAqcmVzcG9uc2UpIG11
dGFibGUgewotICAgICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVl
bkNhbGxlZCgpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGNoZWNrZXIt
PmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOwotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoc3RhdGljX2Nhc3Q8QVBJOjpXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlJj4o
W3Jlc3BvbnNlIF9hcGlPYmplY3RdKS5yZXNwb25zZSgpKTsKLSAgICAgICAgfSkuZ2V0KCldOwot
ICAgIH0pOworICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8QVBJOjpXZWJBdXRoZW50aWNhdGlv
bkFzc2VydGlvblJlc3BvbnNlJj4oW3Jlc3BvbnNlIF9hcGlPYmplY3RdKS5yZXNwb25zZSgpKTsK
KyAgICB9KS5nZXQoKV07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390277</attachid>
            <date>2020-02-10 12:01:31 -0800</date>
            <delta_ts>2020-02-10 19:35:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206248-20200210120130.patch</filename>
            <type>text/plain</type>
            <size>20001</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1Njg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGViY2U0MTQ1MDQ5ODI0MTcz
ODYyNGZkMWJjN2IyNjg3MTg3ZjM3YTguLmUxNDAxMDQ0ZjcxYTc5OWJhOWNmZTYyMTVhZTM1ZGYx
NWY1YTRlMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMjAtMDItMDcgIEppZXdlbiBU
YW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIE1vdmUgdGhl
IGFzeW5jIGNvZGUgZnJvbSBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50IHRvIEF1dGhlbnRp
Y2F0b3JNYW5hZ2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDYyNDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBObyBjaGFuZ2Ugb2YgYmVoYXZpb3JzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9B
UElXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OldlYkF1dGhl
bnRpY2F0aW9uUGFuZWxDbGllbnQ6OnNlbGVjdEFzc2VydGlvblJlc3BvbnNlIGNvbnN0KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRvck1hbmFnZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdG9yTWFuYWdlcjo6c2VydmljZVN0YXR1
c1VwZGF0ZWQpOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdG9yTWFuYWdlcjo6YXV0aGVu
dGljYXRvclN0YXR1c1VwZGF0ZWQpOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdG9yTWFu
YWdlcjo6cmVxdWVzdFBpbik6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JNYW5hZ2Vy
OjpzZWxlY3RBc3NlcnRpb25SZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0
b3JNYW5hZ2VyOjpydW5QYW5lbCk6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0b3JNYW5h
Z2VyOjppbnZva2VQZW5kaW5nQ29tcGxldGlvbkhhbmRsZXIpOgorICAgICAgICAoV2ViS2l0OjpB
dXRoZW50aWNhdG9yTWFuYWdlcjo6ZGlzcGF0Y2hQYW5lbENsaWVudENhbGwgY29uc3QpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdlci5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50
aWNhdGlvblBhbmVsQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQubW06CisgICAgICAgIChXZWJL
aXQ6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQ6OnVwZGF0ZVBhbmVsIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6ZGlzbWlzc1BhbmVs
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6
cmVxdWVzdFBpbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxDbGllbnQ6OnNlbGVjdEFzc2VydGlvblJlc3BvbnNlIGNvbnN0KToKKwogMjAyMC0wMi0wNCAg
TWVnYW4gR2FyZG5lciAgPG1lZ2FuX2dhcmRuZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeGVk
IERlcHJlY2F0ZWQgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaAppbmRleCA3MDEwZDc4ZDg2
NGZkMGRjMjQ3ZTZiMDJjMWU5Mjc4MGU3ZGE4NTUxLi4wMWNkNDUxZmZlMzdiZTQ5ODIyNzIzMzg4
MjYxODUxNjdjYzc4ZjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmgKQEAgLTUxLDcgKzUx
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVQYW5lbChXZWJLaXQ6OldlYkF1
dGhlbnRpY2F0aW9uU3RhdHVzKSBjb25zdCB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc1Bh
bmVsKFdlYktpdDo6V2ViQXV0aGVudGljYXRpb25SZXN1bHQpIGNvbnN0IHsgfQogICAgIHZpcnR1
YWwgdm9pZCByZXF1ZXN0UGluKHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFdURjo6U3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0IHsgY29tcGxldGlvbkhh
bmRsZXIoZW1wdHlTdHJpbmcoKSk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0QXNzZXJ0aW9u
UmVzcG9uc2UoY29uc3QgSGFzaFNldDxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlPj4mIHJlc3BvbnNlcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJD
b3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikgY29uc3QgeyBBU1NFUlQoIXJlc3BvbnNlcy5pc0VtcHR5KCkpOyBjb21wbGV0aW9uSGFuZGxl
cigqcmVzcG9uc2VzLmJlZ2luKCkpOyB9CisgICAgdmlydHVhbCB2b2lkIHNlbGVjdEFzc2VydGlv
blJlc3BvbnNlKFZlY3RvcjxSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3Bv
bnNlPj4mJiByZXNwb25zZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6
QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNv
bnN0IHsgQVNTRVJUKCFyZXNwb25zZXMuaXNFbXB0eSgpKTsgY29tcGxldGlvbkhhbmRsZXIocmVz
cG9uc2VzWzBdKTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9yTWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50
aWNhdG9yTWFuYWdlci5jcHAKaW5kZXggM2RiNjNlZjZiZDVlYTMyYjI5NmFjMDQ2YWE0M2EwZDE0
OTdjNWU3NC4uNzM2MjZjYzA1MDI3YWU2ZTIxYjI4MTQzYmM4MDA5YjkyYjFhNzViNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0aGVudGlj
YXRvck1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1
ZGUgIk5mY1NlcnZpY2UuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJX
ZWJQcmVmZXJlbmNlc0tleXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRvclRyYW5zcG9y
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9u
cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2ViQXV0aGVudGljYXRpb25Db25zdGFudHMuaD4KQEAg
LTIzMiw4ICsyMzMsOSBAQCB2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjphdXRoZW50aWNhdG9y
QWRkZWQoUmVmPEF1dGhlbnRpY2F0b3I+JiYgYXV0aGVudGljYXRvcgogCiB2b2lkIEF1dGhlbnRp
Y2F0b3JNYW5hZ2VyOjpzZXJ2aWNlU3RhdHVzVXBkYXRlZChXZWJBdXRoZW50aWNhdGlvblN0YXR1
cyBzdGF0dXMpCiB7Ci0gICAgaWYgKGF1dG8gKnBhbmVsID0gbV9wZW5kaW5nUmVxdWVzdERhdGEu
cGFuZWwuZ2V0KCkpCi0gICAgICAgIHBhbmVsLT5jbGllbnQoKS51cGRhdGVQYW5lbChzdGF0dXMp
OworICAgIGRpc3BhdGNoUGFuZWxDbGllbnRDYWxsKFtzdGF0dXNdIChjb25zdCBBUEk6OldlYkF1
dGhlbnRpY2F0aW9uUGFuZWwmIHBhbmVsKSB7CisgICAgICAgIHBhbmVsLmNsaWVudCgpLnVwZGF0
ZVBhbmVsKHN0YXR1cyk7CisgICAgfSk7CiB9CiAKIHZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6
OnJlc3BvbmRSZWNlaXZlZChSZXNwb25kJiYgcmVzcG9uZCkKQEAgLTI2OSwyMCArMjcxLDI4IEBA
IHZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6OmRvd25ncmFkZShBdXRoZW50aWNhdG9yKiBpZCwg
UmVmPEF1dGhlbnRpY2F0b3I+JiYgZG93CiAKIHZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6OmF1
dGhlbnRpY2F0b3JTdGF0dXNVcGRhdGVkKFdlYkF1dGhlbnRpY2F0aW9uU3RhdHVzIHN0YXR1cykK
IHsKLSAgICBpZiAoYXV0byogcGFuZWwgPSBtX3BlbmRpbmdSZXF1ZXN0RGF0YS5wYW5lbC5nZXQo
KSkKLSAgICAgICAgcGFuZWwtPmNsaWVudCgpLnVwZGF0ZVBhbmVsKHN0YXR1cyk7CisgICAgZGlz
cGF0Y2hQYW5lbENsaWVudENhbGwoW3N0YXR1c10gKGNvbnN0IEFQSTo6V2ViQXV0aGVudGljYXRp
b25QYW5lbCYgcGFuZWwpIHsKKyAgICAgICAgcGFuZWwuY2xpZW50KCkudXBkYXRlUGFuZWwoc3Rh
dHVzKTsKKyAgICB9KTsKIH0KIAogdm9pZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6cmVxdWVzdFBp
bih1aW50NjRfdCByZXRyaWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdURjo6U3Ry
aW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIHBhbmVsID0gbV9w
ZW5kaW5nUmVxdWVzdERhdGEucGFuZWwuZ2V0KCkpCi0gICAgICAgIHBhbmVsLT5jbGllbnQoKS5y
ZXF1ZXN0UGluKHJldHJpZXMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBkaXNw
YXRjaFBhbmVsQ2xpZW50Q2FsbChbcmV0cmllcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0gKGNvbnN0IEFQSTo6V2ViQXV0aGVudGljYXRpb25QYW5lbCYg
cGFuZWwpIG11dGFibGUgeworICAgICAgICBwYW5lbC5jbGllbnQoKS5yZXF1ZXN0UGluKHJldHJp
ZXMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9KTsKIH0KIAotdm9pZCBBdXRo
ZW50aWNhdG9yTWFuYWdlcjo6c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UoY29uc3QgSGFzaFNldDxS
ZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPj4mIHJlc3BvbnNlcywg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0
aW9uUmVzcG9uc2UmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgQXV0aGVudGljYXRvck1h
bmFnZXI6OnNlbGVjdEFzc2VydGlvblJlc3BvbnNlKGNvbnN0IEhhc2hTZXQ8UmVmPEF1dGhlbnRp
Y2F0b3JBc3NlcnRpb25SZXNwb25zZT4+JiByZXNwb25zZXMsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7Ci0gICAgaWYgKGF1dG8qIHBhbmVsID0gbV9wZW5kaW5nUmVxdWVzdERhdGEucGFu
ZWwuZ2V0KCkpCi0gICAgICAgIHBhbmVsLT5jbGllbnQoKS5zZWxlY3RBc3NlcnRpb25SZXNwb25z
ZShyZXNwb25zZXMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBWZWN0b3I8UmVm
PEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4+IHJlc3BvbnNlVmVjdG9yOworICAgIHJl
c3BvbnNlVmVjdG9yLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocmVzcG9uc2VzLnNpemUoKSk7Cisg
ICAgZm9yIChhdXRvJiByZXNwb25zZSA6IHJlc3BvbnNlcykKKyAgICAgICAgcmVzcG9uc2VWZWN0
b3IudW5jaGVja2VkQXBwZW5kKHJlc3BvbnNlLmNvcHlSZWYoKSk7CisKKyAgICBkaXNwYXRjaFBh
bmVsQ2xpZW50Q2FsbChbcmVzcG9uc2VzID0gV1RGTW92ZShyZXNwb25zZVZlY3RvciksIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChjb25zdCBBUEk6Oldl
YkF1dGhlbnRpY2F0aW9uUGFuZWwmIHBhbmVsKSBtdXRhYmxlIHsKKyAgICAgICAgcGFuZWwuY2xp
ZW50KCkuc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZXMpLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgfSk7CiB9CiAKIFVuaXF1ZVJlZjxBdXRoZW50aWNh
dG9yVHJhbnNwb3J0U2VydmljZT4gQXV0aGVudGljYXRvck1hbmFnZXI6OmNyZWF0ZVNlcnZpY2Uo
QXV0aGVudGljYXRvclRyYW5zcG9ydCB0cmFuc3BvcnQsIEF1dGhlbnRpY2F0b3JUcmFuc3BvcnRT
ZXJ2aWNlOjpPYnNlcnZlciYgb2JzZXJ2ZXIpIGNvbnN0CkBAIC0zNDcsNyArMzU3LDcgQEAgdm9p
ZCBBdXRoZW50aWNhdG9yTWFuYWdlcjo6cnVuUGFuZWwoKQogICAgIGF1dG8gdHJhbnNwb3J0cyA9
IGdldFRyYW5zcG9ydHMoKTsKICAgICBtX3BlbmRpbmdSZXF1ZXN0RGF0YS5wYW5lbCA9IEFQSTo6
V2ViQXV0aGVudGljYXRpb25QYW5lbDo6Y3JlYXRlKCp0aGlzLCBnZXRScElkKG9wdGlvbnMpLCB0
cmFuc3BvcnRzLCBnZXRDbGllbnREYXRhVHlwZShvcHRpb25zKSk7CiAgICAgYXV0byYgcGFuZWwg
PSAqbV9wZW5kaW5nUmVxdWVzdERhdGEucGFuZWw7Ci0gICAgcGFnZS0+dWlDbGllbnQoKS5ydW5X
ZWJBdXRoZW50aWNhdGlvblBhbmVsKCpwYWdlLCBwYW5lbCwgKmZyYW1lLCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEgeyBtX3BlbmRpbmdSZXF1ZXN0RGF0YS5vcmlnaW4gfSwgW3RyYW5zcG9y
dHMgPSBXVEZNb3ZlKHRyYW5zcG9ydHMpLCB3ZWFrUGFuZWwgPSBtYWtlV2Vha1B0cihwYW5lbCks
IHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCB0aGlzXSAoV2ViQXV0aGVudGljYXRpb25Q
YW5lbFJlc3VsdCByZXN1bHQpIHsKKyAgICBwYWdlLT51aUNsaWVudCgpLnJ1bldlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwoKnBhZ2UsIHBhbmVsLCAqZnJhbWUsIFNlY3VyaXR5T3JpZ2luRGF0YSB7IG1f
cGVuZGluZ1JlcXVlc3REYXRhLm9yaWdpbiB9LCBbdHJhbnNwb3J0cyA9IFdURk1vdmUodHJhbnNw
b3J0cyksIHdlYWtQYW5lbCA9IG1ha2VXZWFrUHRyKHBhbmVsKSwgd2Vha1RoaXMgPSBtYWtlV2Vh
a1B0cigqdGhpcyksIHRoaXNdIChXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0IHJlc3VsdCkg
ewogICAgICAgICAvLyBUaGUgcGFuZWwgYWRkcmVzcyBpcyB1c2VkIHRvIGRldGVybWluZSBpZiB0
aGUgY3VycmVudCBwZW5kaW5nIHJlcXVlc3QgaXMgc3RpbGwgdGhlIHNhbWUuCiAgICAgICAgIGlm
ICghd2Vha1RoaXMgfHwgIXdlYWtQYW5lbAogICAgICAgICAgICAgfHwgKHJlc3VsdCA9PSBXZWJB
dXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpEaWROb3RQcmVzZW50KQpAQCAtMzYwLDEzICszNzAs
OSBAQCB2b2lkIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpydW5QYW5lbCgpCiAKIHZvaWQgQXV0aGVu
dGljYXRvck1hbmFnZXI6Omludm9rZVBlbmRpbmdDb21wbGV0aW9uSGFuZGxlcihSZXNwb25kJiYg
cmVzcG9uZCkKIHsKLSAgICBpZiAoYXV0byAqcGFuZWwgPSBtX3BlbmRpbmdSZXF1ZXN0RGF0YS5w
YW5lbC5nZXQoKSkgewotICAgICAgICBXVEY6OnN3aXRjaE9uKHJlc3BvbmQsIFsmXShjb25zdCBS
ZWY8QXV0aGVudGljYXRvclJlc3BvbnNlPiYpIHsKLSAgICAgICAgICAgIHBhbmVsLT5jbGllbnQo
KS5kaXNtaXNzUGFuZWwoV2ViQXV0aGVudGljYXRpb25SZXN1bHQ6OlN1Y2NlZWRlZCk7Ci0gICAg
ICAgIH0sIFsmXShjb25zdCBFeGNlcHRpb25EYXRhJikgewotICAgICAgICAgICAgcGFuZWwtPmNs
aWVudCgpLmRpc21pc3NQYW5lbChXZWJBdXRoZW50aWNhdGlvblJlc3VsdDo6RmFpbGVkKTsKLSAg
ICAgICAgfSk7Ci0gICAgfQorICAgIGRpc3BhdGNoUGFuZWxDbGllbnRDYWxsKFtyZXN1bHQgPSBX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZjxBdXRoZW50aWNhdG9yUmVzcG9uc2U+PihyZXNwb25k
KSA/IFdlYkF1dGhlbnRpY2F0aW9uUmVzdWx0OjpTdWNjZWVkZWQgOiBXZWJBdXRoZW50aWNhdGlv
blJlc3VsdDo6RmFpbGVkXSAoY29uc3QgQVBJOjpXZWJBdXRoZW50aWNhdGlvblBhbmVsJiBwYW5l
bCkgeworICAgICAgICBwYW5lbC5jbGllbnQoKS5kaXNtaXNzUGFuZWwocmVzdWx0KTsKKyAgICB9
KTsKICAgICBtX3BlbmRpbmdDb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3BvbmQpKTsKIH0K
IApAQCAtMzkxLDYgKzM5NywxOSBAQCBhdXRvIEF1dGhlbnRpY2F0b3JNYW5hZ2VyOjpnZXRUcmFu
c3BvcnRzKCkgY29uc3QgLT4gVHJhbnNwb3J0U2V0CiAgICAgcmV0dXJuIHRyYW5zcG9ydHM7CiB9
CiAKK3ZvaWQgQXV0aGVudGljYXRvck1hbmFnZXI6OmRpc3BhdGNoUGFuZWxDbGllbnRDYWxsKEZ1
bmN0aW9uPHZvaWQoY29uc3QgQVBJOjpXZWJBdXRoZW50aWNhdGlvblBhbmVsJik+JiYgY2FsbCkg
Y29uc3QKK3sKKyAgICBpZiAoYXV0byogcGFuZWwgPSBtX3BlbmRpbmdSZXF1ZXN0RGF0YS5wYW5l
bC5nZXQoKSkgeworICAgICAgICAvLyBDYWxsIGRlbGVnYXRlcyBpbiB0aGUgbmV4dCBydW4gbG9v
cCB0byBwcmV2ZW50IGNsaWVudHMnIHJlZW50cmFuY2UgdGhhdCB3b3VsZCBwb3RlbnRpYWxseSBt
b2RpZnkgdGhlIHN0YXRlCisgICAgICAgIC8vIG9mIHRoZSBjdXJyZW50IHJ1biBsb29wIGluIHVu
ZXhwZWN0ZWQgd2F5cy4KKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrUGFu
ZWwgPSBtYWtlV2Vha1B0cigqcGFuZWwpLCBjYWxsID0gV1RGTW92ZShjYWxsKV0gKCkgeworICAg
ICAgICAgICAgaWYgKCF3ZWFrUGFuZWwpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgY2FsbCgqd2Vha1BhbmVsKTsKKyAgICAgICAgfSk7CisgICAgfQorfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdG9y
TWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQXV0
aGVudGljYXRvck1hbmFnZXIuaAppbmRleCBhOWI2MjkzYzU4ZjEyMjA0MzJlYjc2NWJjZjJkNmEx
ZWRkOWJlNTZlLi5jMTUxZGQ5MzI2NTlmNjIwNmMwZjE1ZmJlYTFlNWMwNTRhMWEwZjllIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9BdXRoZW50
aWNhdG9yTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0F1dGhlbnRpY2F0b3JNYW5hZ2VyLmgKQEAgLTk2LDYgKzk2LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHJ1blBhbmVsKCk7CiAgICAgdm9pZCByZXN0YXJ0RGlzY292ZXJ5KCk7CiAgICAg
VHJhbnNwb3J0U2V0IGdldFRyYW5zcG9ydHMoKSBjb25zdDsKKyAgICB2b2lkIGRpc3BhdGNoUGFu
ZWxDbGllbnRDYWxsKEZ1bmN0aW9uPHZvaWQoY29uc3QgQVBJOjpXZWJBdXRoZW50aWNhdGlvblBh
bmVsJik+JiYpIGNvbnN0OwogCiAgICAgLy8gUmVxdWVzdDogV2Ugb25seSBhbGxvdyBvbmUgcmVx
dWVzdCBwZXIgdGltZS4gQSBuZXcgcmVxdWVzdCB3aWxsIGNhbmNlbCBhbnkgcGVuZGluZyBvbmVz
LgogICAgIFdlYkF1dGhlbnRpY2F0aW9uUmVxdWVzdERhdGEgbV9wZW5kaW5nUmVxdWVzdERhdGE7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9D
b2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50
LmgKaW5kZXggZmFmYWE4MTEyODcxMjU1YTZjNDhjM2UwOWQxMTNlOWE3M2ZhNGEyZi4uM2M2YjNk
N2UwMTNjZTY4MDcyODM4YjkyNjhhZWNhOWJkZTI5OGVjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRpb25Q
YW5lbENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQuaApAQCAtMzIsNyArMzIsNiBA
QAogI2ltcG9ydCAiQVBJV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudC5oIgogI2ltcG9ydCA8
d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+Ci0jaW1wb3J0IDx3
dGYvV2Vha1B0ci5oPgogCiBAY2xhc3MgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbDsKIEBwcm90
b2NvbCBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGU7CkBAIC01MCw3ICs0OSw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVQYW5lbChXZWJBdXRoZW50aWNhdGlvblN0YXR1cykg
Y29uc3QgZmluYWw7CiAgICAgdm9pZCBkaXNtaXNzUGFuZWwoV2ViQXV0aGVudGljYXRpb25SZXN1
bHQpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgcmVxdWVzdFBpbih1aW50NjRfdCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBXVEY6OlN0cmluZyYpPiYmKSBjb25zdCBmaW5hbDsKLSAgICB2
b2lkIHNlbGVjdEFzc2VydGlvblJlc3BvbnNlKGNvbnN0IEhhc2hTZXQ8UmVmPFdlYkNvcmU6OkF1
dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UmKT4mJikgY29uc3Qg
ZmluYWw7CisgICAgdm9pZCBzZWxlY3RBc3NlcnRpb25SZXNwb25zZShWZWN0b3I8UmVmPFdlYkNv
cmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4+JiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlJik+JiYp
IGNvbnN0IGZpbmFsOwogCiAgICAgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqbV9wYW5lbDsK
ICAgICBXZWFrT2JqQ1B0cjxpZCA8X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlPiA+
IG1fZGVsZWdhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Db2NvYS9XZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Lm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRp
b25QYW5lbENsaWVudC5tbQppbmRleCAwYzFiZDRmNWE4YzljZDJlMmM4ZTkzODcyYTdlZjMwMjI2
YjI1ZWQzLi5lZWIxN2Y3YjRkY2NjZjBlMDYwMDViMWMwOGI4MTEwYzJiNzFlODg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XZWJB
dXRoZW50aWNhdGlvblBhbmVsQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQubW0K
QEAgLTI4LDggKzI4LDEwIEBACiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogCisjaW1wb3J0ICJB
UElBcnJheS5oIgogI2ltcG9ydCAiQVBJV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25z
ZS5oIgogI2ltcG9ydCAiQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlci5oIgorI2ltcG9ydCAi
V0tOU0FycmF5LmgiCiAjaW1wb3J0ICJXZWJBdXRoZW50aWNhdGlvbkZsYWdzLmgiCiAjaW1wb3J0
ICJfV0tXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlSW50ZXJuYWwuaCIKICNpbXBv
cnQgIl9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaCIKQEAgLTY1LDIyICs2NywxNCBAQCBzdGF0
aWMgX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZSB3a1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxVcGRhdGUoV2ViQXV0aGVudAogCiB2b2lkIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQ6
OnVwZGF0ZVBhbmVsKFdlYkF1dGhlbnRpY2F0aW9uU3RhdHVzIHN0YXR1cykgY29uc3QKIHsKLSAg
ICAvLyBGSVhNRSgyMDYyNDgpCi0gICAgLy8gQ2FsbCBkZWxlZ2F0ZXMgaW4gdGhlIG5leHQgcnVu
IGxvb3AgdG8gcHJldmVudCBjbGllbnRzJyByZWVudHJhbmNlIHRoYXQgd291bGQgcG90ZW50aWFs
bHkgbW9kaWZ5IHRoZSBzdGF0ZQotICAgIC8vIG9mIHRoZSBjdXJyZW50IHJ1biBsb29wIGluIHVu
ZXhwZWN0ZWQgd2F5cy4KLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dlYWtUaGlzID0g
bWFrZVdlYWtQdHIoKnRoaXMpLCB0aGlzLCBzdGF0dXNdIHsKLSAgICAgICAgaWYgKCF3ZWFrVGhp
cykKLSAgICAgICAgICAgIHJldHVybjsKKyAgICBpZiAoIW1fZGVsZWdhdGVNZXRob2RzLnBhbmVs
VXBkYXRlV2ViQXV0aGVudGljYXRpb25QYW5lbCkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgICAg
IGlmICghbV9kZWxlZ2F0ZU1ldGhvZHMucGFuZWxVcGRhdGVXZWJBdXRoZW50aWNhdGlvblBhbmVs
KQotICAgICAgICAgICAgcmV0dXJuOworICAgIGF1dG8gZGVsZWdhdGUgPSBtX2RlbGVnYXRlLmdl
dCgpOworICAgIGlmICghZGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKIAotICAgICAgICBhdXRv
IGRlbGVnYXRlID0gbV9kZWxlZ2F0ZS5nZXQoKTsKLSAgICAgICAgaWYgKCFkZWxlZ2F0ZSkKLSAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBbZGVsZWdhdGUgcGFuZWw6bV9wYW5lbCB1cGRh
dGVXZWJBdXRoZW50aWNhdGlvblBhbmVsOndrV2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZShz
dGF0dXMpXTsKLSAgICB9KTsKKyAgICBbZGVsZWdhdGUgcGFuZWw6bV9wYW5lbCB1cGRhdGVXZWJB
dXRoZW50aWNhdGlvblBhbmVsOndrV2ViQXV0aGVudGljYXRpb25QYW5lbFVwZGF0ZShzdGF0dXMp
XTsKIH0KIAogc3RhdGljIF9XS1dlYkF1dGhlbnRpY2F0aW9uUmVzdWx0IHdrV2ViQXV0aGVudGlj
YXRpb25SZXN1bHQoV2ViQXV0aGVudGljYXRpb25SZXN1bHQgcmVzdWx0KQpAQCAtOTcsOTEgKzkx
LDY1IEBAIHN0YXRpYyBfV0tXZWJBdXRoZW50aWNhdGlvblJlc3VsdCB3a1dlYkF1dGhlbnRpY2F0
aW9uUmVzdWx0KFdlYkF1dGhlbnRpY2F0aW9uUmVzCiAKIHZvaWQgV2ViQXV0aGVudGljYXRpb25Q
YW5lbENsaWVudDo6ZGlzbWlzc1BhbmVsKFdlYkF1dGhlbnRpY2F0aW9uUmVzdWx0IHJlc3VsdCkg
Y29uc3QKIHsKLSAgICAvLyBGSVhNRSgyMDYyNDgpCi0gICAgLy8gQ2FsbCBkZWxlZ2F0ZXMgaW4g
dGhlIG5leHQgcnVuIGxvb3AgdG8gcHJldmVudCBjbGllbnRzJyByZWVudHJhbmNlIHRoYXQgd291
bGQgcG90ZW50aWFsbHkgbW9kaWZ5IHRoZSBzdGF0ZQotICAgIC8vIG9mIHRoZSBjdXJyZW50IHJ1
biBsb29wIGluIHVuZXhwZWN0ZWQgd2F5cy4KLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
W3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCB0aGlzLCByZXN1bHRdIHsKLSAgICAgICAg
aWYgKCF3ZWFrVGhpcykKLSAgICAgICAgICAgIHJldHVybjsKKyAgICBpZiAoIW1fZGVsZWdhdGVN
ZXRob2RzLnBhbmVsRGlzbWlzc1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxXaXRoUmVzdWx0KQorICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKCFtX2RlbGVnYXRlTWV0aG9kcy5wYW5lbERpc21p
c3NXZWJBdXRoZW50aWNhdGlvblBhbmVsV2l0aFJlc3VsdCkKLSAgICAgICAgICAgIHJldHVybjsK
LQotICAgICAgICBhdXRvIGRlbGVnYXRlID0gbV9kZWxlZ2F0ZS5nZXQoKTsKLSAgICAgICAgaWYg
KCFkZWxlZ2F0ZSkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICBhdXRvIGRlbGVnYXRlID0gbV9k
ZWxlZ2F0ZS5nZXQoKTsKKyAgICBpZiAoIWRlbGVnYXRlKQorICAgICAgICByZXR1cm47CiAKLSAg
ICAgICAgW2RlbGVnYXRlIHBhbmVsOm1fcGFuZWwgZGlzbWlzc1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxXaXRoUmVzdWx0OndrV2ViQXV0aGVudGljYXRpb25SZXN1bHQocmVzdWx0KV07Ci0gICAgfSk7
CisgICAgW2RlbGVnYXRlIHBhbmVsOm1fcGFuZWwgZGlzbWlzc1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxXaXRoUmVzdWx0OndrV2ViQXV0aGVudGljYXRpb25SZXN1bHQocmVzdWx0KV07CiB9CiAKIHZv
aWQgV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6cmVxdWVzdFBpbih1aW50NjRfdCByZXRy
aWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdURjo6U3RyaW5nJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUUoMjA2MjQ4KQotICAgIC8vIENhbGwg
ZGVsZWdhdGVzIGluIHRoZSBuZXh0IHJ1biBsb29wIHRvIHByZXZlbnQgY2xpZW50cycgcmVlbnRy
YW5jZSB0aGF0IHdvdWxkIHBvdGVudGlhbGx5IG1vZGlmeSB0aGUgc3RhdGUKLSAgICAvLyBvZiB0
aGUgY3VycmVudCBydW4gbG9vcCBpbiB1bmV4cGVjdGVkIHdheXMuCi0gICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgdGhpcywgcmV0cmll
cywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0
YWJsZSB7Ci0gICAgICAgIGlmICghd2Vha1RoaXMpIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKGVtcHR5U3RyaW5nKCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Cisg
ICAgaWYgKCFtX2RlbGVnYXRlTWV0aG9kcy5wYW5lbFJlcXVlc3RQaW5XaXRoUmVtYWluaW5nUmV0
cmllc0NvbXBsZXRpb25IYW5kbGVyKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGVtcHR5
U3RyaW5nKCkpOworICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgICAgIGlmICghbV9kZWxl
Z2F0ZU1ldGhvZHMucGFuZWxSZXF1ZXN0UGluV2l0aFJlbWFpbmluZ1JldHJpZXNDb21wbGV0aW9u
SGFuZGxlcikgewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZW1wdHlTdHJpbmcoKSk7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICBhdXRvIGRlbGVnYXRlID0gbV9k
ZWxlZ2F0ZS5nZXQoKTsKKyAgICBpZiAoIWRlbGVnYXRlKSB7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKGVtcHR5U3RyaW5nKCkpOworICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgICAg
IGF1dG8gZGVsZWdhdGUgPSBtX2RlbGVnYXRlLmdldCgpOwotICAgICAgICBpZiAoIWRlbGVnYXRl
KSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihlbXB0eVN0cmluZygpKTsKKyAgICBh
dXRvIGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdh
dGUuZ2V0KCksIEBzZWxlY3RvcihwYW5lbDpyZXF1ZXN0UElOV2l0aFJlbWFpbmluZ1JldHJpZXM6
Y29tcGxldGlvbkhhbmRsZXI6KSk7CisgICAgW2RlbGVnYXRlIHBhbmVsOm1fcGFuZWwgcmVxdWVz
dFBJTldpdGhSZW1haW5pbmdSZXRyaWVzOnJldHJpZXMgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJs
b2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBj
aGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0oTlNTdHJpbmcgKnBpbikgbXV0YWJsZSB7CisgICAg
ICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGF1dG8gY2hlY2tlciA9IENvbXBs
ZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9y
KHBhbmVsOnJlcXVlc3RQSU5XaXRoUmVtYWluaW5nUmV0cmllczpjb21wbGV0aW9uSGFuZGxlcjop
KTsKLSAgICAgICAgW2RlbGVnYXRlIHBhbmVsOm1fcGFuZWwgcmVxdWVzdFBJTldpdGhSZW1haW5p
bmdSZXRyaWVzOnJldHJpZXMgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92
ZShjaGVja2VyKV0oTlNTdHJpbmcgKnBpbikgbXV0YWJsZSB7Ci0gICAgICAgICAgICBpZiAoY2hl
Y2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7
Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihwaW4pOwotICAgICAgICB9KS5nZXQoKV07
Ci0gICAgfSk7CisgICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihwaW4pOworICAgIH0pLmdldCgpXTsKIH0KIAotdm9p
ZCBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50OjpzZWxlY3RBc3NlcnRpb25SZXNwb25zZShj
b25zdCBIYXNoU2V0PFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+
PiYgcmVzcG9uc2VzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkF1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAor
dm9pZCBXZWJBdXRoZW50aWNhdGlvblBhbmVsQ2xpZW50OjpzZWxlY3RBc3NlcnRpb25SZXNwb25z
ZShWZWN0b3I8UmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4+JiYg
cmVzcG9uc2VzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRp
Y2F0b3JBc3NlcnRpb25SZXNwb25zZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAogewog
ICAgIEFTU0VSVCghcmVzcG9uc2VzLmlzRW1wdHkoKSk7Ci0gICAgYXV0byBuc1Jlc3BvbnNlcyA9
IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpyZXNwb25z
ZXMuc2l6ZSgpXSk7Ci0gICAgZm9yIChhdXRvJiByZXNwb25zZSA6IHJlc3BvbnNlcykKLSAgICAg
ICAgW25zUmVzcG9uc2VzIGFkZE9iamVjdDp3cmFwcGVyKEFQSTo6V2ViQXV0aGVudGljYXRpb25B
c3NlcnRpb25SZXNwb25zZTo6Y3JlYXRlKHJlc3BvbnNlLmNvcHlSZWYoKSkpXTsKLQotICAgIC8v
IEZJWE1FKDIwNjI0OCkKLSAgICAvLyBDYWxsIGRlbGVnYXRlcyBpbiB0aGUgbmV4dCBydW4gbG9v
cCB0byBwcmV2ZW50IGNsaWVudHMnIHJlZW50cmFuY2UgdGhhdCB3b3VsZCBwb3RlbnRpYWxseSBt
b2RpZnkgdGhlIHN0YXRlCi0gICAgLy8gb2YgdGhlIGN1cnJlbnQgcnVuIGxvb3AgaW4gdW5leHBl
Y3RlZCB3YXlzLgotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cigqdGhpcyksIHRoaXMsIG5zUmVzcG9uc2VzID0gV1RGTW92ZShuc1Jlc3BvbnNlcyks
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFi
bGUgewotICAgICAgICBpZiAoIXdlYWtUaGlzKSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihzdGF0aWNfY2FzdDxBUEk6OldlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2Um
PihbW25zUmVzcG9uc2VzIGZpcnN0T2JqZWN0XSBfYXBpT2JqZWN0XSkucmVzcG9uc2UoKSk7Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KIAotICAgICAgICBpZiAoIW1fZGVsZWdhdGVN
ZXRob2RzLnBhbmVsc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlcikgewot
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RhdGljX2Nhc3Q8QVBJOjpXZWJBdXRoZW50
aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlJj4oW1tuc1Jlc3BvbnNlcyBmaXJzdE9iamVjdF0gX2Fw
aU9iamVjdF0pLnJlc3BvbnNlKCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Cisg
ICAgaWYgKCFtX2RlbGVnYXRlTWV0aG9kcy5wYW5lbHNlbGVjdEFzc2VydGlvblJlc3BvbnNlQ29t
cGxldGlvbkhhbmRsZXIpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzcG9uc2VzWzBd
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gZGVsZWdhdGUgPSBtX2RlbGVn
YXRlLmdldCgpOworICAgIGlmICghZGVsZWdhdGUpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIocmVzcG9uc2VzWzBdKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFZlY3RvcjxS
ZWZQdHI8QVBJOjpPYmplY3Q+PiBhcGlSZXNwb25zZXM7CisgICAgYXBpUmVzcG9uc2VzLnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkocmVzcG9uc2VzLnNpemUoKSk7CisgICAgZm9yIChhdXRvJiByZXNw
b25zZSA6IHJlc3BvbnNlcykKKyAgICAgICAgYXBpUmVzcG9uc2VzLnVuY2hlY2tlZEFwcGVuZChB
UEk6OldlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZShyZXNwb25zZS5j
b3B5UmVmKCkpKTsKIAotICAgICAgICBhdXRvIGRlbGVnYXRlID0gbV9kZWxlZ2F0ZS5nZXQoKTsK
LSAgICAgICAgaWYgKCFkZWxlZ2F0ZSkgewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
c3RhdGljX2Nhc3Q8QVBJOjpXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlJj4oW1tu
c1Jlc3BvbnNlcyBmaXJzdE9iamVjdF0gX2FwaU9iamVjdF0pLnJlc3BvbnNlKCkpOworICAgIGF1
dG8gY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShkZWxlZ2F0
ZS5nZXQoKSwgQHNlbGVjdG9yKHBhbmVsOnNlbGVjdEFzc2VydGlvblJlc3BvbnNlOmNvbXBsZXRp
b25IYW5kbGVyOikpOworICAgIFtkZWxlZ2F0ZSBwYW5lbDptX3BhbmVsIHNlbGVjdEFzc2VydGlv
blJlc3BvbnNlOndyYXBwZXIoQVBJOjpBcnJheTo6Y3JlYXRlKFdURk1vdmUoYXBpUmVzcG9uc2Vz
KSkpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlcildKF9X
S1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgKnJlc3BvbnNlKSBtdXRhYmxlIHsK
KyAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQog
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgYXV0byBjaGVja2VyID0g
Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVnYXRlLmdldCgpLCBAc2Vs
ZWN0b3IocGFuZWw6c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2U6Y29tcGxldGlvbkhhbmRsZXI6KSk7
Ci0gICAgICAgIFtkZWxlZ2F0ZSBwYW5lbDptX3BhbmVsIHNlbGVjdEFzc2VydGlvblJlc3BvbnNl
Om5zUmVzcG9uc2VzLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9IFdURk1v
dmUoY2hlY2tlcildKF9XS1dlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UgKnJlc3Bv
bnNlKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxl
ckhhc0JlZW5DYWxsZWQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBj
aGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKLSAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHN0YXRpY19jYXN0PEFQSTo6V2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNw
b25zZSY+KFtyZXNwb25zZSBfYXBpT2JqZWN0XSkucmVzcG9uc2UoKSk7Ci0gICAgICAgIH0pLmdl
dCgpXTsKLSAgICB9KTsKKyAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVy
KCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0YXRpY19jYXN0PEFQSTo6V2ViQXV0aGVu
dGljYXRpb25Bc3NlcnRpb25SZXNwb25zZSY+KFtyZXNwb25zZSBfYXBpT2JqZWN0XSkucmVzcG9u
c2UoKSk7CisgICAgfSkuZ2V0KCldOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
      

    </bug>

</bugzilla>