<?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>110900</bug_id>
          
          <creation_ts>2013-02-26 12:29:53 -0800</creation_ts>
          <short_desc>Don&apos;t add a body to platform request until necessary</short_desc>
          <delta_ts>2019-10-30 08:31:18 -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>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=201950</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>
          
          <blocked>111034</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>buildbot</cc>
    
    <cc>danw</cc>
    
    <cc>gustavo</cc>
    
    <cc>mifenton</cc>
    
    <cc>mrobinson</cc>
    
    <cc>rakuco</cc>
    
    <cc>rniwa</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yong.li.webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>842262</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-02-26 12:29:53 -0800</bug_when>
    <thetext>It is inefficient to send request body with IPC, and it is not even possible to build a body in WebProcess when NetworkProcess is in use, because WebProcess doesn&apos;t know what&apos;s inside blobs.

This patch will separate body updating from request updating in ResourceRequest. For WebKit1, we will still be creating a body for client callbacks to preserve compatibility. For WebKit2, the body will only be built right before creating an NSURLConnection.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842266</commentid>
    <comment_count>1</comment_count>
      <attachid>190341</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-02-26 12:33:51 -0800</bug_when>
    <thetext>Created attachment 190341
EWS?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842277</commentid>
    <comment_count>2</comment_count>
      <attachid>190341</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-02-26 12:49:56 -0800</bug_when>
    <thetext>Comment on attachment 190341
EWS?

Attachment 190341 did not pass qt-wk2-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/16775400</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842283</commentid>
    <comment_count>3</comment_count>
      <attachid>190341</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-02-26 12:57:46 -0800</bug_when>
    <thetext>Comment on attachment 190341
EWS?

Attachment 190341 did not pass efl-ews (efl):
Output: http://webkit-commit-queue.appspot.com/results/16770445</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842509</commentid>
    <comment_count>4</comment_count>
      <attachid>190390</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-02-26 16:41:38 -0800</bug_when>
    <thetext>Created attachment 190390
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842519</commentid>
    <comment_count>5</comment_count>
      <attachid>190390</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-02-26 16:50:16 -0800</bug_when>
    <thetext>Comment on attachment 190390
proposed patch

Attachment 190390 did not pass qt-wk2-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/16763028</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842524</commentid>
    <comment_count>6</comment_count>
      <attachid>190394</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-02-26 16:54:26 -0800</bug_when>
    <thetext>Created attachment 190394
with more Qt build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842557</commentid>
    <comment_count>7</comment_count>
      <attachid>190394</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-26 17:33:43 -0800</bug_when>
    <thetext>Comment on attachment 190394
with more Qt build fix

Attachment 190394 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-commit-queue.appspot.com/results/16783048</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842578</commentid>
    <comment_count>8</comment_count>
      <attachid>190394</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-26 18:26:25 -0800</bug_when>
    <thetext>Comment on attachment 190394
with more Qt build fix

Attachment 190394 did not pass mac-ews (mac):
Output: http://webkit-commit-queue.appspot.com/results/16806045</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842610</commentid>
    <comment_count>9</comment_count>
      <attachid>190394</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-26 19:16:11 -0800</bug_when>
    <thetext>Comment on attachment 190394
with more Qt build fix

Attachment 190394 did not pass mac-ews (mac):
Output: http://webkit-commit-queue.appspot.com/results/16801034</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842636</commentid>
    <comment_count>10</comment_count>
      <attachid>190428</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-02-26 20:11:20 -0800</bug_when>
    <thetext>Created attachment 190428
and don&apos;t break Mac, too</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843282</commentid>
    <comment_count>11</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-02-27 11:16:20 -0800</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/changeset/144216&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190341</attachid>
            <date>2013-02-26 12:33:51 -0800</date>
            <delta_ts>2013-02-26 16:41:38 -0800</delta_ts>
            <desc>EWS?</desc>
            <filename>BodyInNetworkProcess.txt</filename>
            <type>text/plain</type>
            <size>46332</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxNDQwNjcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtNDQ2LDYgKzQ0Niw3IEBAIF9f
Wk43V2ViQ29yZTE1UHJvdGVjdGlvblNwYWNlQzFFUktOM1dURjYKIF9fWk43V2ViQ29yZTE1UHJv
dGVjdGlvblNwYWNlQzFFdgogX19aTjdXZWJDb3JlMTVSZXNvdXJjZVJlcXVlc3QyMWh0dHBQaXBl
bGluaW5nRW5hYmxlZEV2CiBfX1pON1dlYkNvcmUxNVJlc291cmNlUmVxdWVzdDI0c2V0SFRUUFBp
cGVsaW5pbmdFbmFibGVkRWIKK19fWk43V2ViQ29yZTE1UmVzb3VyY2VSZXF1ZXN0Mzl1cGRhdGVG
cm9tRGVsZWdhdGVQcmVzZXJ2aW5nT2xkSFRUUEJvZHlFUDEyTlNVUkxSZXF1ZXN0CiBfX1pON1dl
YkNvcmUxNVNjcm9sbEFsaWdubWVudDE3YWxpZ25DZW50ZXJBbHdheXNFCiBfX1pON1dlYkNvcmUx
NVNjcm9sbEFsaWdubWVudDE5YWxpZ25Ub0VkZ2VJZk5lZWRlZEUKIF9fWk43V2ViQ29yZTE1U3Rv
cmFnZVN0cmF0ZWd5MjFsb2NhbFN0b3JhZ2VOYW1lc3BhY2VFUktOM1dURjZTdHJpbmdFagpAQCAt
MTMyMCw3ICsxMzIxLDcgQEAgX19aTks3V2ViQ29yZTE1UHJvdGVjdGlvblNwYWNlNGhvc3RFdgog
X19aTks3V2ViQ29yZTE1UHJvdGVjdGlvblNwYWNlNHBvcnRFdgogX19aTks3V2ViQ29yZTE1UHJv
dGVjdGlvblNwYWNlNXJlYWxtRXYKIF9fWk5LN1dlYkNvcmUxNVByb3RlY3Rpb25TcGFjZTdpc1By
b3h5RXYKLV9fWk5LN1dlYkNvcmUxNVJlc291cmNlUmVxdWVzdDEybnNVUkxSZXF1ZXN0RXYKK19f
Wk5LN1dlYkNvcmUxNVJlc291cmNlUmVxdWVzdDEybnNVUkxSZXF1ZXN0RU5TXzIwSFRUUEJvZHlV
cGRhdGVQb2xpY3lFCiBfX1pOSzdXZWJDb3JlMTVWaXNpYmxlUG9zaXRpb24xNGNoYXJhY3RlckFm
dGVyRXYKIF9fWk5LN1dlYkNvcmUxNVZpc2libGVQb3NpdGlvbjE0bG9jYWxDYXJldFJlY3RFUlBO
U18xMlJlbmRlck9iamVjdEUKIF9fWk5LN1dlYkNvcmUxNVZpc2libGVQb3NpdGlvbjE5YWJzb2x1
dGVDYXJldEJvdW5kc0V2CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlUmVxdWVzdEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAJKHJldmlzaW9uIDE0NDA2NykKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM0MSwyMiArMzQxLDI0IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0
QmFzZTo6c2V0UmVzcG9uc2VDb24KICAgICAgICAgbV9wbGF0Zm9ybVJlcXVlc3RVcGRhdGVkID0g
ZmFsc2U7CiB9CiAKLUZvcm1EYXRhKiBSZXNvdXJjZVJlcXVlc3RCYXNlOjpodHRwQm9keSgpIGNv
bnN0IAoteyAKLSAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsgCi0gICAgCi0gICAgcmV0dXJu
IG1faHR0cEJvZHkuZ2V0KCk7IAorRm9ybURhdGEqIFJlc291cmNlUmVxdWVzdEJhc2U6Omh0dHBC
b2R5KCkgY29uc3QKK3sKKyAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoVXBkYXRlSFRUUEJvZHkp
OworCisgICAgcmV0dXJuIG1faHR0cEJvZHkuZ2V0KCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VSZXF1
ZXN0QmFzZTo6c2V0SFRUUEJvZHkoUGFzc1JlZlB0cjxGb3JtRGF0YT4gaHR0cEJvZHkpCiB7Ci0g
ICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7IAotICAgIAotICAgIG1faHR0cEJvZHkgPSBodHRw
Qm9keTsgCi0gICAgCisgICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7CisKKyAgICBtX2h0dHBC
b2R5ID0gaHR0cEJvZHk7CisKKyAgICBtX3Jlc291cmNlUmVxdWVzdEJvZHlVcGRhdGVkID0gdHJ1
ZTsKKwogICAgIGlmICh1cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpCi0gICAgICAgIG1f
cGxhdGZvcm1SZXF1ZXN0VXBkYXRlZCA9IGZhbHNlOwotfSAKKyAgICAgICAgbV9wbGF0Zm9ybVJl
cXVlc3RCb2R5VXBkYXRlZCA9IGZhbHNlOworfQogCiBib29sIFJlc291cmNlUmVxdWVzdEJhc2U6
OmFsbG93Q29va2llcygpIGNvbnN0CiB7CkBAIC00OTQsMjQgKzQ5NiwzNCBAQCB2b2lkIFJlc291
cmNlUmVxdWVzdEJhc2U6OnNldERlZmF1bHRUaW1lCiAgICAgc19kZWZhdWx0VGltZW91dEludGVy
dmFsID0gdGltZW91dEludGVydmFsOwogfQogCi12b2lkIFJlc291cmNlUmVxdWVzdEJhc2U6OnVw
ZGF0ZVBsYXRmb3JtUmVxdWVzdCgpIGNvbnN0Ci17Ci0gICAgaWYgKG1fcGxhdGZvcm1SZXF1ZXN0
VXBkYXRlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJUKG1fcmVzb3VyY2VSZXF1ZXN0
VXBkYXRlZCk7Ci0gICAgY29uc3RfY2FzdDxSZXNvdXJjZVJlcXVlc3QmPihhc1Jlc291cmNlUmVx
dWVzdCgpKS5kb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpOwotICAgIG1fcGxhdGZvcm1SZXF1ZXN0
VXBkYXRlZCA9IHRydWU7Ci19Ci0KLXZvaWQgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6dXBkYXRlUmVz
b3VyY2VSZXF1ZXN0KCkgY29uc3QKK3ZvaWQgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6dXBkYXRlUGxh
dGZvcm1SZXF1ZXN0KEhUVFBCb2R5VXBkYXRlUG9saWN5IGJvZHlQb2xpY3kpIGNvbnN0CiB7Ci0g
ICAgaWYgKG1fcmVzb3VyY2VSZXF1ZXN0VXBkYXRlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
QVNTRVJUKG1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRlZCk7Ci0gICAgY29uc3RfY2FzdDxSZXNvdXJj
ZVJlcXVlc3QmPihhc1Jlc291cmNlUmVxdWVzdCgpKS5kb1VwZGF0ZVJlc291cmNlUmVxdWVzdCgp
OwotICAgIG1fcmVzb3VyY2VSZXF1ZXN0VXBkYXRlZCA9IHRydWU7CisgICAgaWYgKCFtX3BsYXRm
b3JtUmVxdWVzdFVwZGF0ZWQpIHsKKyAgICAgICAgQVNTRVJUKG1fcmVzb3VyY2VSZXF1ZXN0VXBk
YXRlZCk7CisgICAgICAgIGNvbnN0X2Nhc3Q8UmVzb3VyY2VSZXF1ZXN0Jj4oYXNSZXNvdXJjZVJl
cXVlc3QoKSkuZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QoKTsKKyAgICAgICAgbV9wbGF0Zm9ybVJl
cXVlc3RVcGRhdGVkID0gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoIW1fcGxhdGZvcm1SZXF1ZXN0
Qm9keVVwZGF0ZWQgJiYgYm9keVBvbGljeSA9PSBVcGRhdGVIVFRQQm9keSkgeworICAgICAgICBB
U1NFUlQobV9yZXNvdXJjZVJlcXVlc3RCb2R5VXBkYXRlZCk7CisgICAgICAgIGNvbnN0X2Nhc3Q8
UmVzb3VyY2VSZXF1ZXN0Jj4oYXNSZXNvdXJjZVJlcXVlc3QoKSkuZG9VcGRhdGVQbGF0Zm9ybUhU
VFBCb2R5KCk7CisgICAgICAgIG1fcGxhdGZvcm1SZXF1ZXN0Qm9keVVwZGF0ZWQgPSB0cnVlOwor
ICAgIH0KK30KKwordm9pZCBSZXNvdXJjZVJlcXVlc3RCYXNlOjp1cGRhdGVSZXNvdXJjZVJlcXVl
c3QoSFRUUEJvZHlVcGRhdGVQb2xpY3kgYm9keVBvbGljeSkgY29uc3QKK3sKKyAgICBpZiAoIW1f
cmVzb3VyY2VSZXF1ZXN0VXBkYXRlZCkgeworICAgICAgICBBU1NFUlQobV9wbGF0Zm9ybVJlcXVl
c3RVcGRhdGVkKTsKKyAgICAgICAgY29uc3RfY2FzdDxSZXNvdXJjZVJlcXVlc3QmPihhc1Jlc291
cmNlUmVxdWVzdCgpKS5kb1VwZGF0ZVJlc291cmNlUmVxdWVzdCgpOworICAgICAgICBtX3Jlc291
cmNlUmVxdWVzdFVwZGF0ZWQgPSB0cnVlOworICAgIH0KKworICAgIGlmICghbV9yZXNvdXJjZVJl
cXVlc3RCb2R5VXBkYXRlZCAmJiBib2R5UG9saWN5ID09IFVwZGF0ZUhUVFBCb2R5KSB7CisgICAg
ICAgIEFTU0VSVChtX3BsYXRmb3JtUmVxdWVzdEJvZHlVcGRhdGVkKTsKKyAgICAgICAgY29uc3Rf
Y2FzdDxSZXNvdXJjZVJlcXVlc3QmPihhc1Jlc291cmNlUmVxdWVzdCgpKS5kb1VwZGF0ZVJlc291
cmNlSFRUUEJvZHkoKTsKKyAgICAgICAgbV9yZXNvdXJjZVJlcXVlc3RCb2R5VXBkYXRlZCA9IHRy
dWU7CisgICAgfQogfQogCiAjaWYgIVBMQVRGT1JNKE1BQykgJiYgIVVTRShDRk5FVFdPUkspICYm
ICFVU0UoU09VUCkgJiYgIVBMQVRGT1JNKENIUk9NSVVNKSAmJiAhUExBVEZPUk0oUVQpICYmICFQ
TEFURk9STShCTEFDS0JFUlJZKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgJKHJldmlzaW9uIDE0NDA2NykKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIFJldHVybkNhY2hlRGF0YURvbnRMb2FkICAvLyByZXN1bHRzIG9mIGEgcG9zdCAtIGFsbG93
IHN0YWxlIGRhdGEgYW5kIG9ubHkgdXNlIGNhY2hlCiAgICAgfTsKIAorICAgIGVudW0gSFRUUEJv
ZHlVcGRhdGVQb2xpY3kgeworICAgICAgICBEb05vdFVwZGF0ZUhUVFBCb2R5LAorICAgICAgICBV
cGRhdGVIVFRQQm9keQorICAgIH07CisKICAgICBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiAgICAg
c3RydWN0IENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YTsKIApAQCAtMTQyLDYgKzE0Nyw4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0QmFzZSgpCiAg
ICAgICAgICAgICA6IG1fcmVzb3VyY2VSZXF1ZXN0VXBkYXRlZChmYWxzZSkKICAgICAgICAgICAg
ICwgbV9wbGF0Zm9ybVJlcXVlc3RVcGRhdGVkKHRydWUpCisgICAgICAgICAgICAsIG1fcmVzb3Vy
Y2VSZXF1ZXN0Qm9keVVwZGF0ZWQoZmFsc2UpCisgICAgICAgICAgICAsIG1fcGxhdGZvcm1SZXF1
ZXN0Qm9keVVwZGF0ZWQodHJ1ZSkKICAgICAgICAgICAgICwgbV9yZXBvcnRVcGxvYWRQcm9ncmVz
cyhmYWxzZSkKICAgICAgICAgICAgICwgbV9yZXBvcnRMb2FkVGltaW5nKGZhbHNlKQogICAgICAg
ICAgICAgLCBtX3JlcG9ydFJhd0hlYWRlcnMoZmFsc2UpCkBAIC0xNTcsNiArMTY0LDggQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgLCBtX2FsbG93Q29va2llcyh0cnVlKQogICAg
ICAgICAgICAgLCBtX3Jlc291cmNlUmVxdWVzdFVwZGF0ZWQodHJ1ZSkKICAgICAgICAgICAgICwg
bV9wbGF0Zm9ybVJlcXVlc3RVcGRhdGVkKGZhbHNlKQorICAgICAgICAgICAgLCBtX3Jlc291cmNl
UmVxdWVzdEJvZHlVcGRhdGVkKHRydWUpCisgICAgICAgICAgICAsIG1fcGxhdGZvcm1SZXF1ZXN0
Qm9keVVwZGF0ZWQoZmFsc2UpCiAgICAgICAgICAgICAsIG1fcmVwb3J0VXBsb2FkUHJvZ3Jlc3Mo
ZmFsc2UpCiAgICAgICAgICAgICAsIG1fcmVwb3J0TG9hZFRpbWluZyhmYWxzZSkKICAgICAgICAg
ICAgICwgbV9yZXBvcnRSYXdIZWFkZXJzKGZhbHNlKQpAQCAtMTY0LDggKzE3Myw4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCB1cGRh
dGVQbGF0Zm9ybVJlcXVlc3QoKSBjb25zdDsgCi0gICAgICAgIHZvaWQgdXBkYXRlUmVzb3VyY2VS
ZXF1ZXN0KCkgY29uc3Q7IAorICAgICAgICB2b2lkIHVwZGF0ZVBsYXRmb3JtUmVxdWVzdChIVFRQ
Qm9keVVwZGF0ZVBvbGljeSA9IERvTm90VXBkYXRlSFRUUEJvZHkpIGNvbnN0OworICAgICAgICB2
b2lkIHVwZGF0ZVJlc291cmNlUmVxdWVzdChIVFRQQm9keVVwZGF0ZVBvbGljeSA9IERvTm90VXBk
YXRlSFRUUEJvZHkpIGNvbnN0OwogCiAgICAgICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2VCYXNl
KE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIApAQCAtMTg0LDYgKzE5Myw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBtX2FsbG93Q29va2llcyA6IDE7CiAgICAgICAgIG11
dGFibGUgYm9vbCBtX3Jlc291cmNlUmVxdWVzdFVwZGF0ZWQgOiAxOwogICAgICAgICBtdXRhYmxl
IGJvb2wgbV9wbGF0Zm9ybVJlcXVlc3RVcGRhdGVkIDogMTsKKyAgICAgICAgbXV0YWJsZSBib29s
IG1fcmVzb3VyY2VSZXF1ZXN0Qm9keVVwZGF0ZWQgOiAxOworICAgICAgICBtdXRhYmxlIGJvb2wg
bV9wbGF0Zm9ybVJlcXVlc3RCb2R5VXBkYXRlZCA6IDE7CiAgICAgICAgIGJvb2wgbV9yZXBvcnRV
cGxvYWRQcm9ncmVzcyA6IDE7CiAgICAgICAgIGJvb2wgbV9yZXBvcnRMb2FkVGltaW5nIDogMTsK
ICAgICAgICAgYm9vbCBtX3JlcG9ydFJhd0hlYWRlcnMgOiAxOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L1Jlc291cmNlUmVxdWVzdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9SZXNvdXJj
ZVJlcXVlc3QuaAkocmV2aXNpb24gMTQ0MDY3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9ibGFja2JlcnJ5L1Jlc291cmNlUmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MzUsNiArMTM1LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZG9VcGRhdGVQbGF0Zm9ybVJlcXVl
c3QoKSB7IH0KICAgICB2b2lkIGRvVXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCkgeyB9CisgICAgdm9p
ZCBkb1VwZGF0ZVBsYXRmb3JtSFRUUEJvZHkoKSB7IH0KKyAgICB2b2lkIGRvVXBkYXRlUmVzb3Vy
Y2VIVFRQQm9keSgpIHsgfQogCiAgICAgUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVx
dWVzdERhdGE+IGRvUGxhdGZvcm1Db3B5RGF0YShQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3Vy
Y2VSZXF1ZXN0RGF0YT4pIGNvbnN0OwogICAgIHZvaWQgZG9QbGF0Zm9ybUFkb3B0KFBhc3NPd25Q
dHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPik7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5l
dC5jcHAJKHJldmlzaW9uIDE0NDA2NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUy
LDYgQEAKIGV4dGVybiAiQyIgdm9pZCBDRlVSTFJlcXVlc3RTZXRIVFRQUmVxdWVzdEJvZHkoQ0ZN
dXRhYmxlVVJMUmVxdWVzdFJlZiBtdXRhYmxlSFRUUFJlcXVlc3QsIENGRGF0YVJlZiBodHRwQm9k
eSk7CiBleHRlcm4gIkMiIHZvaWQgQ0ZVUkxSZXF1ZXN0U2V0SFRUUEhlYWRlckZpZWxkVmFsdWUo
Q0ZNdXRhYmxlVVJMUmVxdWVzdFJlZiBtdXRhYmxlSFRUUFJlcXVlc3QsIENGU3RyaW5nUmVmIGh0
dHBIZWFkZXJGaWVsZCwgQ0ZTdHJpbmdSZWYgaHR0cEhlYWRlckZpZWxkVmFsdWUpOwogZXh0ZXJu
ICJDIiB2b2lkIENGVVJMUmVxdWVzdFNldEhUVFBSZXF1ZXN0Qm9keVN0cmVhbShDRk11dGFibGVV
UkxSZXF1ZXN0UmVmIHJlcSwgQ0ZSZWFkU3RyZWFtUmVmIGJvZHlTdHJlYW0pOwotZXh0ZXJuICJD
IiBDRlJlYWRTdHJlYW1SZWYgQ0ZVUkxSZXF1ZXN0Q29weUhUVFBSZXF1ZXN0Qm9keVN0cmVhbShD
RlVSTFJlcXVlc3RSZWYgcmVxdWVzdCk7CiAjZWxpZiBQTEFURk9STShXSU4pCiAjaW5jbHVkZSA8
Q0ZOZXR3b3JrL0NGVVJMUmVxdWVzdC5oPgogI2VuZGlmCkBAIC05MCw2ICs4OSwxMSBAQCBzdGF0
aWMgdm9pZCBmb3JtRXZlbnRDYWxsYmFjayhDRlJlYWRTdHJlCiAKIHN0YXRpYyBDRlN0cmluZ1Jl
ZiBmb3JtRGF0YVBvaW50ZXJQcm9wZXJ0eU5hbWUgPSBDRlNUUigiV2ViS2l0Rm9ybURhdGFQb2lu
dGVyIik7CiAKK0NGU3RyaW5nUmVmIGZvcm1EYXRhU3RyZWFtTGVuZ3RoUHJvcGVydHlOYW1lKCkK
K3sKKyAgICByZXR1cm4gQ0ZTVFIoIldlYktpdEZvcm1EYXRhU3RyZWFtTGVuZ3RoIik7Cit9CisK
IHN0cnVjdCBGb3JtQ3JlYXRpb25Db250ZXh0IHsKICAgICBSZWZQdHI8Rm9ybURhdGE+IGZvcm1E
YXRhOwogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBzdHJlYW1MZW5ndGg7CkBAIC0zMDYsMTEgKzMx
MCwxNSBAQCBzdGF0aWMgQ0ZUeXBlUmVmIGZvcm1Db3B5UHJvcGVydHkoQ0ZSZWFkCiB7CiAgICAg
Rm9ybVN0cmVhbUZpZWxkcyogZm9ybSA9IHN0YXRpY19jYXN0PEZvcm1TdHJlYW1GaWVsZHMqPihj
b250ZXh0KTsKIAotICAgIGlmIChrQ0ZDb21wYXJlRXF1YWxUbyAhPSBDRlN0cmluZ0NvbXBhcmUo
cHJvcGVydHlOYW1lLCBmb3JtRGF0YVBvaW50ZXJQcm9wZXJ0eU5hbWUsIDApKQotICAgICAgICBy
ZXR1cm4gMDsKKyAgICBpZiAoa0NGQ29tcGFyZUVxdWFsVG8gPT0gQ0ZTdHJpbmdDb21wYXJlKHBy
b3BlcnR5TmFtZSwgZm9ybURhdGFQb2ludGVyUHJvcGVydHlOYW1lLCAwKSkgeworICAgICAgICBs
b25nIGZvcm1EYXRhQXNOdW1iZXIgPSBzdGF0aWNfY2FzdDxsb25nPihyZWludGVycHJldF9jYXN0
PGludHB0cl90Pihmb3JtLT5mb3JtRGF0YS5nZXQoKSkpOworICAgICAgICByZXR1cm4gQ0ZOdW1i
ZXJDcmVhdGUoMCwga0NGTnVtYmVyTG9uZ1R5cGUsICZmb3JtRGF0YUFzTnVtYmVyKTsKKyAgICB9
CisKKyAgICBpZiAoa0NGQ29tcGFyZUVxdWFsVG8gPT0gQ0ZTdHJpbmdDb21wYXJlKHByb3BlcnR5
TmFtZSwgZm9ybURhdGFTdHJlYW1MZW5ndGhQcm9wZXJ0eU5hbWUoKSwgMCkpCisgICAgICAgIHJl
dHVybiBDRlN0cmluZ0NyZWF0ZVdpdGhGb3JtYXQoMCwgMCwgQ0ZTVFIoIiVsbHUiKSwgZm9ybS0+
c3RyZWFtTGVuZ3RoKTsKIAotICAgIGxvbmcgZm9ybURhdGFBc051bWJlciA9IHN0YXRpY19jYXN0
PGxvbmc+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGZvcm0tPmZvcm1EYXRhLmdldCgpKSk7
Ci0gICAgcmV0dXJuIENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJlckxvbmdUeXBlLCAmZm9ybURh
dGFBc051bWJlcik7CisgICAgcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyB2b2lkIGZvcm1TY2hlZHVs
ZShDRlJlYWRTdHJlYW1SZWYsIENGUnVuTG9vcFJlZiBydW5Mb29wLCBDRlN0cmluZ1JlZiBydW5M
b29wTW9kZSwgdm9pZCogY29udGV4dCkKQEAgLTQwNSwxMCArNDEzLDYgQEAgdm9pZCBzZXRIVFRQ
Qm9keShDRk11dGFibGVVUkxSZXF1ZXN0UmVmIAogICAgICAgICB9CiAgICAgfQogCi0gICAgLy8g
U2V0IHRoZSBsZW5ndGguCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBsZW5ndGhTdHJpbmcg
PSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEZvcm1hdCgwLCAwLCBDRlNUUigiJWxsZCIpLCBs
ZW5ndGgpKTsKLSAgICBDRlVSTFJlcXVlc3RTZXRIVFRQSGVhZGVyRmllbGRWYWx1ZShyZXF1ZXN0
LCBDRlNUUigiQ29udGVudC1MZW5ndGgiKSwgbGVuZ3RoU3RyaW5nLmdldCgpKTsKLQogICAgIC8v
IENyZWF0ZSBhbmQgc2V0IHRoZSBzdHJlYW0uCiAKICAgICAvLyBQYXNzIHRoZSBsZW5ndGggYWxv
bmcgd2l0aCB0aGUgZm9ybURhdGEgc28gaXQgZG9lcyBub3QgaGF2ZSB0byBiZSByZWNvbXB1dGVk
LgpAQCAtNDQyLDEwICs0NDYsNCBAQCBGb3JtRGF0YSogaHR0cEJvZHlGcm9tU3RyZWFtKENGUmVh
ZFN0cmVhCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Rm9ybURhdGEqPihzdGF0aWNfY2Fz
dDxpbnRwdHJfdD4oZm9ybURhdGFQb2ludGVyQXNOdW1iZXIpKTsKIH0KIAotUGFzc1JlZlB0cjxG
b3JtRGF0YT4gaHR0cEJvZHlGcm9tUmVxdWVzdChDRlVSTFJlcXVlc3RSZWYgcmVxdWVzdCkKLXsK
LSAgICBSZXRhaW5QdHI8Q0ZSZWFkU3RyZWFtUmVmPiBib2R5U3RyZWFtID0gYWRvcHRDRihDRlVS
TFJlcXVlc3RDb3B5SFRUUFJlcXVlc3RCb2R5U3RyZWFtKHJlcXVlc3QpKTsKLSAgICByZXR1cm4g
aHR0cEJvZHlGcm9tU3RyZWFtKGJvZHlTdHJlYW0uZ2V0KCkpOwotfQotCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1E
YXRhU3RyZWFtQ0ZOZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuaAkocmV2aXNpb24gMTQ0MDY3KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTQwLDEwICs0MCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBGb3JtRGF0YTsKIAogdm9pZCBzZXRIVFRQQm9keShDRk11dGFibGVVUkxSZXF1ZXN0UmVmLCBQ
YXNzUmVmUHRyPEZvcm1EYXRhPik7Ci1QYXNzUmVmUHRyPEZvcm1EYXRhPiBodHRwQm9keUZyb21S
ZXF1ZXN0KENGVVJMUmVxdWVzdFJlZik7CiAKIEZvcm1EYXRhKiBodHRwQm9keUZyb21TdHJlYW0o
Q0ZSZWFkU3RyZWFtUmVmKTsKIAorQ0ZTdHJpbmdSZWYgZm9ybURhdGFTdHJlYW1MZW5ndGhQcm9w
ZXJ0eU5hbWUoKTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRm9ybURh
dGFTdHJlYW1DRk5ldF9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAJKHJldmlzaW9uIDE0NDA2
NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVD
Rk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Miw3ICsxOTIsNyBAQCBzdGF0aWMgQ0ZVUkxS
ZXF1ZXN0UmVmIHdpbGxTZW5kUmVxdWVzdChDCiAgICAgaWYgKHJlcXVlc3QuaXNOdWxsKCkpCiAg
ICAgICAgIHJldHVybiAwOwogCi0gICAgY2ZSZXF1ZXN0ID0gcmVxdWVzdC5jZlVSTFJlcXVlc3Qo
KTsKKyAgICBjZlJlcXVlc3QgPSByZXF1ZXN0LmNmVVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSk7
CiAKICAgICBDRlJldGFpbihjZlJlcXVlc3QpOwogICAgIHJldHVybiBjZlJlcXVlc3Q7CkBAIC0y
MTgsNyArMjE4LDcgQEAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKENGVVJMQ29ubgog
ICAgIGlmIChzdGF0dXNDb2RlICE9IDMwNCkKICAgICAgICAgYWRqdXN0TUlNRVR5cGVJZk5lY2Vz
c2FyeShjZlJlc3BvbnNlKTsKIAotICAgIGlmIChfQ0ZVUkxSZXF1ZXN0Q29weVByb3RvY29sUHJv
cGVydHlGb3JLZXkoaGFuZGxlLT5maXJzdFJlcXVlc3QoKS5jZlVSTFJlcXVlc3QoKSwgQ0ZTVFIo
IkZvcmNlSFRNTE1JTUVUeXBlIikpKQorICAgIGlmIChfQ0ZVUkxSZXF1ZXN0Q29weVByb3RvY29s
UHJvcGVydHlGb3JLZXkoaGFuZGxlLT5maXJzdFJlcXVlc3QoKS5jZlVSTFJlcXVlc3QoRG9Ob3RV
cGRhdGVIVFRQQm9keSksIENGU1RSKCJGb3JjZUhUTUxNSU1FVHlwZSIpKSkKICAgICAgICAgd2tT
ZXRDRlVSTFJlc3BvbnNlTUlNRVR5cGUoY2ZSZXNwb25zZSwgQ0ZTVFIoInRleHQvaHRtbCIpKTsK
ICNlbHNlCiAgICAgaWYgKCFDRlVSTFJlc3BvbnNlR2V0TUlNRVR5cGUoY2ZSZXNwb25zZSkpIHsK
QEAgLTQyNSw3ICs0MjUsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpjcmVhdGVDRlVSTENvbm5l
Y3RpCiAgICAgICAgIGFwcGx5QmFzaWNBdXRob3JpemF0aW9uSGVhZGVyKGZpcnN0UmVxdWVzdCgp
LCBkLT5tX2luaXRpYWxDcmVkZW50aWFsKTsKICAgICB9CiAKLSAgICBSZXRhaW5QdHI8Q0ZNdXRh
YmxlVVJMUmVxdWVzdFJlZj4gcmVxdWVzdCA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0
YWJsZUNvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZmlyc3RSZXF1ZXN0KCkuY2ZVUkxSZXF1ZXN0
KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlVVJMUmVxdWVzdFJlZj4gcmVxdWVzdCA9IGFk
b3B0Q0YoQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0YWJsZUNvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
Zmlyc3RSZXF1ZXN0KCkuY2ZVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KSkpOwogICAgIHdrU2V0
UmVxdWVzdFN0b3JhZ2VTZXNzaW9uKGQtPm1fc3RvcmFnZVNlc3Npb24uZ2V0KCksIHJlcXVlc3Qu
Z2V0KCkpOwogICAgIAogICAgIGlmICghc2hvdWxkQ29udGVudFNuaWZmKQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5o
CShyZXZpc2lvbiAxNDQwNjcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlUmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC04MCwxOCArODAsMjAgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmCiAgICAgICAgIH0KIAotCi0gICAgICAgIENGVVJMUmVx
dWVzdFJlZiBjZlVSTFJlcXVlc3QoKSBjb25zdDsKKyAgICAgICAgQ0ZVUkxSZXF1ZXN0UmVmIGNm
VVJMUmVxdWVzdChIVFRQQm9keVVwZGF0ZVBvbGljeSkgY29uc3Q7CiAjZWxzZQogICAgICAgICBS
ZXNvdXJjZVJlcXVlc3QoTlNVUkxSZXF1ZXN0ICpuc1JlcXVlc3QpCiAgICAgICAgICAgICA6IFJl
c291cmNlUmVxdWVzdEJhc2UoKQotICAgICAgICAgICAgLCBtX25zUmVxdWVzdChuc1JlcXVlc3Qp
IHsgfQorICAgICAgICAgICAgLCBtX25zUmVxdWVzdChuc1JlcXVlc3QpCisgICAgICAgIHsKKyAg
ICAgICAgfQogCisgICAgICAgIHZvaWQgdXBkYXRlRnJvbURlbGVnYXRlUHJlc2VydmluZ09sZEhU
VFBCb2R5KE5TVVJMUmVxdWVzdCAqKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQogICAg
ICAgICB2b2lkIGFwcGx5V2ViQXJjaGl2ZUhhY2tGb3JNYWlsKCk7Ci0gICAgICAgIE5TVVJMUmVx
dWVzdCAqbnNVUkxSZXF1ZXN0KCkgY29uc3Q7CisgICAgICAgIE5TVVJMUmVxdWVzdCAqbnNVUkxS
ZXF1ZXN0KEhUVFBCb2R5VXBkYXRlUG9saWN5KSBjb25zdDsKICNlbmRpZgogCiAjaWYgRU5BQkxF
KENBQ0hFX1BBUlRJVElPTklORykKQEAgLTExNSw2ICsxMTcsOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICAgICAgICAgdm9pZCBkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpOwogICAgICAgICB2
b2lkIGRvVXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7CisgICAgICAgIHZvaWQgZG9VcGRhdGVQbGF0
Zm9ybUhUVFBCb2R5KCk7CisgICAgICAgIHZvaWQgZG9VcGRhdGVSZXNvdXJjZUhUVFBCb2R5KCk7
CiAKICAgICAgICAgUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IGRv
UGxhdGZvcm1Db3B5RGF0YShQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0
YT4pIGNvbnN0OwogICAgICAgICB2b2lkIGRvUGxhdGZvcm1BZG9wdChQYXNzT3duUHRyPENyb3Nz
VGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4pOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAJ
KHJldmlzaW9uIDE0NDA2NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OSw5ICs5OSw5IEBA
IHN0YXRpYyBDRkFycmF5UmVmIGNvcHlDb250ZW50RGlzcG9zaXRpb24KICAgICByZXR1cm4gZnVu
Y3Rpb24ocmVxdWVzdCk7CiB9CiAKLUNGVVJMUmVxdWVzdFJlZiBSZXNvdXJjZVJlcXVlc3Q6OmNm
VVJMUmVxdWVzdCgpIGNvbnN0CitDRlVSTFJlcXVlc3RSZWYgUmVzb3VyY2VSZXF1ZXN0OjpjZlVS
TFJlcXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xpY3kgYm9keVBvbGljeSkgY29uc3QKIHsKLSAgICB1
cGRhdGVQbGF0Zm9ybVJlcXVlc3QoKTsKKyAgICB1cGRhdGVQbGF0Zm9ybVJlcXVlc3QoYm9keVBv
bGljeSk7CiAKICAgICByZXR1cm4gbV9jZlJlcXVlc3QuZ2V0KCk7CiB9CkBAIC0xNDYsOSArMTQ2
LDcgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZQogI2VuZGlmCiAK
ICAgICBzZXRIZWFkZXJGaWVsZHMoY2ZSZXF1ZXN0LCBodHRwSGVhZGVyRmllbGRzKCkpOwotICAg
IFJlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEgPSBodHRwQm9keSgpOwotICAgIGlmIChmb3JtRGF0
YSAmJiAhZm9ybURhdGEtPmlzRW1wdHkoKSkKLSAgICAgICAgV2ViQ29yZTo6c2V0SFRUUEJvZHko
Y2ZSZXF1ZXN0LCBmb3JtRGF0YSk7CisKICAgICBDRlVSTFJlcXVlc3RTZXRTaG91bGRIYW5kbGVI
VFRQQ29va2llcyhjZlJlcXVlc3QsIGFsbG93Q29va2llcygpKTsKIAogICAgIHVuc2lnbmVkIGZh
bGxiYWNrQ291bnQgPSBtX3Jlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFj
a0FycmF5LnNpemUoKTsKQEAgLTE3NSw2ICsxNzMsNDIgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6
OmRvVXBkYXRlUGxhdGZvcm1SZQogI2VuZGlmCiB9CiAKK3ZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpk
b1VwZGF0ZVBsYXRmb3JtSFRUUEJvZHkoKQoreworICAgIENGTXV0YWJsZVVSTFJlcXVlc3RSZWYg
Y2ZSZXF1ZXN0OworCisgICAgUmV0YWluUHRyPENGVVJMUmVmPiB1cmwoQWRvcHRDRiwgUmVzb3Vy
Y2VSZXF1ZXN0Ojp1cmwoKS5jcmVhdGVDRlVSTCgpKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+
IGZpcnN0UGFydHlGb3JDb29raWVzKEFkb3B0Q0YsIFJlc291cmNlUmVxdWVzdDo6Zmlyc3RQYXJ0
eUZvckNvb2tpZXMoKS5jcmVhdGVDRlVSTCgpKTsKKyAgICBpZiAobV9jZlJlcXVlc3QpIHsKKyAg
ICAgICAgY2ZSZXF1ZXN0ID0gQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0YWJsZUNvcHkoMCwgbV9jZlJl
cXVlc3QuZ2V0KCkpOworICAgICAgICBDRlVSTFJlcXVlc3RTZXRVUkwoY2ZSZXF1ZXN0LCB1cmwu
Z2V0KCkpOworICAgICAgICBDRlVSTFJlcXVlc3RTZXRNYWluRG9jdW1lbnRVUkwoY2ZSZXF1ZXN0
LCBmaXJzdFBhcnR5Rm9yQ29va2llcy5nZXQoKSk7CisgICAgICAgIENGVVJMUmVxdWVzdFNldENh
Y2hlUG9saWN5KGNmUmVxdWVzdCwgKENGVVJMUmVxdWVzdENhY2hlUG9saWN5KWNhY2hlUG9saWN5
KCkpOworICAgICAgICBDRlVSTFJlcXVlc3RTZXRUaW1lb3V0SW50ZXJ2YWwoY2ZSZXF1ZXN0LCB0
aW1lb3V0SW50ZXJ2YWwoKSk7CisgICAgfSBlbHNlCisgICAgICAgIGNmUmVxdWVzdCA9IENGVVJM
UmVxdWVzdENyZWF0ZU11dGFibGUoMCwgdXJsLmdldCgpLCAoQ0ZVUkxSZXF1ZXN0Q2FjaGVQb2xp
Y3kpY2FjaGVQb2xpY3koKSwgdGltZW91dEludGVydmFsKCksIGZpcnN0UGFydHlGb3JDb29raWVz
LmdldCgpKTsKKworICAgIFJlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEgPSBodHRwQm9keSgpOwor
ICAgIGlmIChmb3JtRGF0YSAmJiAhZm9ybURhdGEtPmlzRW1wdHkoKSkKKyAgICAgICAgV2ViQ29y
ZTo6c2V0SFRUUEJvZHkobnNSZXF1ZXN0LCBmb3JtRGF0YSk7CisKKyAgICBpZiAoUmV0YWluUHRy
PENGUmVhZFN0cmVhbVJlZj4gYm9keVN0cmVhbSA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q29weUhU
VFBSZXF1ZXN0Qm9keVN0cmVhbShyZXF1ZXN0KSkpIHsKKyAgICAgICAgLy8gRm9yIHN0cmVhbXMs
IHByb3ZpZGUgYSBDb250ZW50LUxlbmd0aCB0byBhdm9pZCB1c2luZyBjaHVua2VkIGVuY29kaW5n
LCBhbmQgdG8gZ2V0IGFjY3VyYXRlIHRvdGFsIGxlbmd0aCBpbiBjYWxsYmFja3MuCisgICAgICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbGVuZ3RoU3RyaW5nID0gYWRvcHRDRihDRlJlYWRTdHJl
YW1Db3B5UHJvcGVydHkoYm9keVN0cmVhbS5nZXQoKSwgZm9ybURhdGFTdHJlYW1MZW5ndGhQcm9w
ZXJ0eU5hbWUoKSkpOworICAgICAgICBpZiAobGVuZ3RoU3RyaW5nKSB7CisgICAgICAgICAgICBD
RlVSTFJlcXVlc3RTZXRIVFRQSGVhZGVyRmllbGRWYWx1ZShjZlJlcXVlc3QsIENGU1RSKCJDb250
ZW10LUxlbmd0aCIsIGxlbmd0aFN0cmluZy5nZXQoKSkpOworICAgICAgICAgICAgLy8gU2luY2Ug
cmVzb3VyY2UgcmVxdWVzdCBpcyBhbHJlYWR5IG1hcmtlZCB1cGRhdGVkLCB3ZSBuZWVkIHRvIGtl
ZXAgaXQgdXAgdG8gZGF0ZSB0b28uCisgICAgICAgICAgICBBU1NFUlQobV9yZXNvdXJjZVJlcXVl
c3RVcGRhdGVkKTsKKyAgICAgICAgICAgIG1faHR0cEhlYWRlckZpZWxkcy5zZXQoIkNvbnRlbnQt
TGVuZ3RoIiwgbGVuZ3RoU3RyaW5nLmdldCgpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1f
Y2ZSZXF1ZXN0LmFkb3B0Q0YoY2ZSZXF1ZXN0KTsKKyNpZiBQTEFURk9STShNQUMpCisgICAgdXBk
YXRlTlNVUkxSZXF1ZXN0KCk7CisjZW5kaWYKK30KKwogdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRv
VXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCkKIHsKICAgICBpZiAoIW1fY2ZSZXF1ZXN0KSB7CkBAIC0y
MTcsMTAgKzI1MSwyOCBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVSZXNvdXJjZVJl
CiAgICAgICAgICAgICAgICAgbV9yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFs
bGJhY2tBcnJheS5hcHBlbmQoQ0ZTdHJpbmdDb252ZXJ0RW5jb2RpbmdUb0lBTkFDaGFyU2V0TmFt
ZShlbmNvZGluZykpOwogICAgICAgICB9CiAgICAgfQorfQogCi0gICAgbV9odHRwQm9keSA9IGh0
dHBCb2R5RnJvbVJlcXVlc3QobV9jZlJlcXVlc3QuZ2V0KCkpOwordm9pZCBSZXNvdXJjZVJlcXVl
c3Q6OmRvVXBkYXRlUmVzb3VyY2VIVFRQQm9keSgpCit7CisgICAgaWYgKCFtX2NmUmVxdWVzdCkg
eworICAgICAgICBtX2h0dHBCb2R5ID0gMDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGlmIChSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBib2R5RGF0YSA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0
Q29weUhUVFBSZXF1ZXN0Qm9keShtX2NmUmVxdWVzdC5nZXQoKSkpKQorICAgICAgICBtX2h0dHBC
b2R5ID0gRm9ybURhdGE6OmNyZWF0ZShDRkRhdGFHZXRCeXRlUHRyKGJvZHlEYXRhLmdldCgpKSwg
Q0ZEYXRhR2V0TGVuZ3RoKGJvZHlEYXRhLmdldCgpKSk7CisgICAgZWxzZSBpZiAoUmV0YWluUHRy
PENGUmVhZFN0cmVhbVJlZj4gYm9keVN0cmVhbSA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q29weUhU
VFBSZXF1ZXN0Qm9keVN0cmVhbShyZXF1ZXN0KSkpIHsKKyAgICAgICAgRm9ybURhdGEqIGZvcm1E
YXRhID0gaHR0cEJvZHlGcm9tU3RyZWFtKGJvZHlTdHJlYW0uZ2V0KCkpOworICAgICAgICAvLyBU
aGVyZSBpcyBubyBGb3JtRGF0YSBvYmplY3QgaWYgYSBjbGllbnQgcHJvdmlkZWQgYSBjdXN0b20g
ZGF0YSBzdHJlYW0uCisgICAgICAgIC8vIFdlIHNob3VsZG4ndCBiZSBsb29raW5nIGF0IGh0dHAg
Ym9keSBhZnRlciBjbGllbnQgY2FsbGJhY2tzLgorICAgICAgICBBU1NFUlQoZm9ybURhdGEpOwor
ICAgICAgICBpZiAoZm9ybURhdGEpCisgICAgICAgICAgICBtX2h0dHBCb2R5ID0gZm9ybURhdGE7
CisgICAgfQogfQogCisKIHZvaWQgUmVzb3VyY2VSZXF1ZXN0OjpzZXRTdG9yYWdlU2Vzc2lvbihD
RlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uKQogewogICAgIHVwZGF0ZVBsYXRm
b3JtUmVxdWVzdCgpOwpAQCAtMjM3LDcgKzI4OSw3IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpz
ZXRTdG9yYWdlU2Vzc2lvbigKIHZvaWQgUmVzb3VyY2VSZXF1ZXN0OjphcHBseVdlYkFyY2hpdmVI
YWNrRm9yTWFpbCgpCiB7CiAgICAgLy8gSGFjayBiZWNhdXNlIE1haWwgY2hlY2tzIGZvciB0aGlz
IHByb3BlcnR5IHRvIGRldGVjdCBkYXRhIC8gYXJjaGl2ZSBsb2FkcwotICAgIF9DRlVSTFJlcXVl
c3RTZXRQcm90b2NvbFByb3BlcnR5KGNmVVJMUmVxdWVzdCgpLCBDRlNUUigiV2ViRGF0YVJlcXVl
c3QiKSwgQ0ZTVFIoIiIpKTsKKyAgICBfQ0ZVUkxSZXF1ZXN0U2V0UHJvdG9jb2xQcm9wZXJ0eShj
ZlVSTFJlcXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9keSksIENGU1RSKCJXZWJEYXRhUmVxdWVzdCIp
LCBDRlNUUigiIikpOwogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2hyb21pdW0vUmVzb3VyY2VSZXF1ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jaHJvbWl1bS9SZXNvdXJjZVJlcXVlc3QuaAkocmV2
aXNpb24gMTQ0MDY3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jaHJvbWl1
bS9SZXNvdXJjZVJlcXVlc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ1LDggKzE0NSwxMCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIFJl
c291cmNlUmVxdWVzdEJhc2U7CiAKLSAgICAgICAgdm9pZCBkb1VwZGF0ZVBsYXRmb3JtUmVxdWVz
dCgpIHt9Ci0gICAgICAgIHZvaWQgZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3QoKSB7fQorICAgICAg
ICB2b2lkIGRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkgeyB9CisgICAgICAgIHZvaWQgZG9VcGRh
dGVSZXNvdXJjZVJlcXVlc3QoKSB7IH0KKyAgICAgICAgdm9pZCBkb1VwZGF0ZVBsYXRmb3JtSFRU
UEJvZHkoKSB7IH0KKyAgICAgICAgdm9pZCBkb1VwZGF0ZVJlc291cmNlSFRUUEJvZHkoKSB7IH0K
IAogICAgICAgICBQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4gZG9Q
bGF0Zm9ybUNvcHlEYXRhKFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRh
PikgY29uc3Q7CiAgICAgICAgIHZvaWQgZG9QbGF0Zm9ybUFkb3B0KFBhc3NPd25QdHI8Q3Jvc3NU
aHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXF1ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVxdWVzdC5oCShyZXZpc2lvbiAx
NDQwNjcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VS
ZXF1ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTcxLDggKzcxLDEwIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0
QmFzZTsKIAotICAgICAgICB2b2lkIGRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkge30KLSAgICAg
ICAgdm9pZCBkb1VwZGF0ZVJlc291cmNlUmVxdWVzdCgpIHt9CisgICAgICAgIHZvaWQgZG9VcGRh
dGVQbGF0Zm9ybVJlcXVlc3QoKSB7IH0KKyAgICAgICAgdm9pZCBkb1VwZGF0ZVJlc291cmNlUmVx
dWVzdCgpIHsgfQorICAgICAgICB2b2lkIGRvVXBkYXRlUGxhdGZvcm1IVFRQQm9keSgpIHsgfQor
ICAgICAgICB2b2lkIGRvVXBkYXRlUmVzb3VyY2VIVFRQQm9keSgpIHsgfQogCiAgICAgICAgIFBh
c3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPiBkb1BsYXRmb3JtQ29weURh
dGEoUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IGRhdGEpIGNvbnN0
IHsgcmV0dXJuIGRhdGE7IH0KICAgICAgICAgdm9pZCBkb1BsYXRmb3JtQWRvcHQoUGFzc093blB0
cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+KSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMu
aAkocmV2aXNpb24gMTQ0MDY3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvRm9ybURhdGFTdHJlYW1NYWMuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgdm9pZCBzZXRIVFRQQm9keShOU011dGFibGVVUkxSZXF1
ZXN0ICosIFBhc3NSZWZQdHI8Rm9ybURhdGE+KTsKICAgICBGb3JtRGF0YSogaHR0cEJvZHlGcm9t
U3RyZWFtKE5TSW5wdXRTdHJlYW0gKik7CiAKKyAgICBDRlN0cmluZ1JlZiBmb3JtRGF0YVN0cmVh
bUxlbmd0aFByb3BlcnR5TmFtZSgpOworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyAhVVNFKENGTkVUV09SSykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCShyZXZpc2lvbiAxNDQw
NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRs
ZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTcxLDcgKzE3MSw3IEBAIHZvaWQgUmVzb3VyY2VI
YW5kbGU6OmNyZWF0ZU5TVVJMQ29ubmVjdGkKICAgICAgICAgYXBwbHlCYXNpY0F1dGhvcml6YXRp
b25IZWFkZXIoZmlyc3RSZXF1ZXN0KCksIGQtPm1faW5pdGlhbENyZWRlbnRpYWwpOwogICAgIH0K
IAotICAgIE5TVVJMUmVxdWVzdCAqbnNSZXF1ZXN0ID0gZmlyc3RSZXF1ZXN0KCkubnNVUkxSZXF1
ZXN0KCk7CisgICAgTlNVUkxSZXF1ZXN0ICpuc1JlcXVlc3QgPSBmaXJzdFJlcXVlc3QoKS5uc1VS
TFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpOwogICAgIGlmICghc2hvdWxkQ29udGVudFNuaWZmKSB7
CiAgICAgICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKm11dGFibGVSZXF1ZXN0ID0gW1tuc1JlcXVl
c3QgbXV0YWJsZUNvcHldIGF1dG9yZWxlYXNlXTsKICAgICAgICAgd2tTZXROU1VSTFJlcXVlc3RT
aG91bGRDb250ZW50U25pZmYobXV0YWJsZVJlcXVlc3QsIE5PKTsKQEAgLTI1MSw3ICsyNTEsNyBA
QCBib29sIFJlc291cmNlSGFuZGxlOjpzdGFydCgpCiAgICAgZWxzZQogICAgICAgICBkLT5tX3N0
YXJ0V2hlblNjaGVkdWxlZCA9IHRydWU7CiAKLSAgICBMT0coTmV0d29yaywgIkhhbmRsZSAlcCBz
dGFydGluZyBjb25uZWN0aW9uICVwIGZvciAlQCIsIHRoaXMsIGNvbm5lY3Rpb24oKSwgZmlyc3RS
ZXF1ZXN0KCkubnNVUkxSZXF1ZXN0KCkpOworICAgIExPRyhOZXR3b3JrLCAiSGFuZGxlICVwIHN0
YXJ0aW5nIGNvbm5lY3Rpb24gJXAgZm9yICVAIiwgdGhpcywgY29ubmVjdGlvbigpLCBmaXJzdFJl
cXVlc3QoKS5uc1VSTFJlcXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9keSkpOwogICAgIAogICAgIGlm
IChkLT5tX2Nvbm5lY3Rpb24pIHsKICAgICAgICAgaWYgKGQtPm1fZGVmZXJzTG9hZGluZykKQEAg
LTM0NSw3ICszNDUsNyBAQCBDRlN0cmluZ1JlZiBSZXNvdXJjZUhhbmRsZTo6c3luY2hyb25vdXNM
CiAKIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtTG9hZFJlc291cmNlU3luY2hyb25vdXNs
eShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBTdG9yZWRDcmVkZW50aWFscyBzdG9yZWRDcmVkZW50aWFscywgUmVzb3VyY2VFcnJvciYg
ZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBWZWN0b3I8Y2hhcj4mIGRhdGEpCiB7
Ci0gICAgTE9HKE5ldHdvcmssICJSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1Mb2FkUmVzb3VyY2VT
eW5jaHJvbm91c2x5OiVAIGFsbG93U3RvcmVkQ3JlZGVudGlhbHM6JXUiLCByZXF1ZXN0Lm5zVVJM
UmVxdWVzdCgpLCBzdG9yZWRDcmVkZW50aWFscyk7CisgICAgTE9HKE5ldHdvcmssICJSZXNvdXJj
ZUhhbmRsZTo6cGxhdGZvcm1Mb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5OiVAIGFsbG93U3RvcmVk
Q3JlZGVudGlhbHM6JXUiLCByZXF1ZXN0Lm5zVVJMUmVxdWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5
KSwgc3RvcmVkQ3JlZGVudGlhbHMpOwogCiAgICAgTlNFcnJvciAqbnNFcnJvciA9IG5pbDsKICAg
ICBOU1VSTFJlc3BvbnNlICpuc1VSTFJlc3BvbnNlID0gbmlsOwpAQCAtNjQ3LDcgKzY0Nyw3IEBA
IC0gKE5TVVJMUmVxdWVzdCAqKWNvbm5lY3Rpb246KE5TVVJMQ29ubmUKIAogICAgIG1faGFuZGxl
LT53aWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CiAKLSAgICByZXR1
cm4gcmVxdWVzdC5uc1VSTFJlcXVlc3QoKTsKKyAgICByZXR1cm4gcmVxdWVzdC5uc1VSTFJlcXVl
c3QoVXBkYXRlSFRUUEJvZHkpOwogfQogCiAtIChCT09MKWNvbm5lY3Rpb25TaG91bGRVc2VDcmVk
ZW50aWFsU3RvcmFnZTooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbgpAQCAtNzE2LDcgKzcx
Niw3IEBAIC0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY28KICAgICBpZiAo
c3RhdHVzQ29kZSAhPSAzMDQpCiAgICAgICAgIGFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkoW3Ig
X0NGVVJMUmVzcG9uc2VdKTsKIAotICAgIGlmIChbbV9oYW5kbGUtPmZpcnN0UmVxdWVzdCgpLm5z
VVJMUmVxdWVzdCgpIF9wcm9wZXJ0eUZvcktleTpAIkZvcmNlSFRNTE1JTUVUeXBlIl0pCisgICAg
aWYgKFttX2hhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkubnNVUkxSZXF1ZXN0KERvTm90VXBkYXRlSFRU
UEJvZHkpIF9wcm9wZXJ0eUZvcktleTpAIkZvcmNlSFRNTE1JTUVUeXBlIl0pCiAgICAgICAgIFty
IF9zZXRNSU1FVHlwZTpAInRleHQvaHRtbCJdOwogCiAgICAgbV9oYW5kbGUtPmNsaWVudCgpLT5k
aWRSZWNlaXZlUmVzcG9uc2UobV9oYW5kbGUsIHIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXF1ZXN0TWFjLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVxdWVzdE1hYy5tbQko
cmV2aXNpb24gMTQ0MDY3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
UmVzb3VyY2VSZXF1ZXN0TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NywxMSArNDcsMTEgQEAg
LSAodm9pZClzZXRDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLU5TVVJMUmVxdWVzdCAqUmVzb3VyY2VSZXF1ZXN0Ojpuc1VSTFJlcXVlc3QoKSBj
b25zdAoteyAKLSAgICB1cGRhdGVQbGF0Zm9ybVJlcXVlc3QoKTsKLSAgICAKLSAgICByZXR1cm4g
W1ttX25zUmVxdWVzdC5nZXQoKSByZXRhaW5dIGF1dG9yZWxlYXNlXTsgCitOU1VSTFJlcXVlc3Qg
KlJlc291cmNlUmVxdWVzdDo6bnNVUkxSZXF1ZXN0KEhUVFBCb2R5VXBkYXRlUG9saWN5IGJvZHlQ
b2xpY3kpIGNvbnN0Cit7CisgICAgdXBkYXRlUGxhdGZvcm1SZXF1ZXN0KGJvZHlQb2xpY3kpOwor
CisgICAgcmV0dXJuIFtbbV9uc1JlcXVlc3QuZ2V0KCkgcmV0YWluXSBhdXRvcmVsZWFzZV07CiB9
CiAKICNpZiBVU0UoQ0ZORVRXT1JLKQpAQCAtMTA3LDEyICsxMDcsNiBAQCB2b2lkIFJlc291cmNl
UmVxdWVzdDo6ZG9VcGRhdGVSZXNvdXJjZVJlCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAo
TlNEYXRhKiBib2R5RGF0YSA9IFttX25zUmVxdWVzdC5nZXQoKSBIVFRQQm9keV0pCi0gICAgICAg
IG1faHR0cEJvZHkgPSBGb3JtRGF0YTo6Y3JlYXRlKFtib2R5RGF0YSBieXRlc10sIFtib2R5RGF0
YSBsZW5ndGhdKTsKLSAgICBlbHNlIGlmIChOU0lucHV0U3RyZWFtKiBib2R5U3RyZWFtID0gW21f
bnNSZXF1ZXN0LmdldCgpIEhUVFBCb2R5U3RyZWFtXSkKLSAgICAgICAgaWYgKEZvcm1EYXRhKiBm
b3JtRGF0YSA9IGh0dHBCb2R5RnJvbVN0cmVhbShib2R5U3RyZWFtKSkKLSAgICAgICAgICAgIG1f
aHR0cEJvZHkgPSBmb3JtRGF0YTsKLQogI2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJT05JTkcpCiAg
ICAgTlNTdHJpbmcqIGNhY2hlUGFydGl0aW9uID0gW05TVVJMUHJvdG9jb2wgcHJvcGVydHlGb3JL
ZXk6KE5TU3RyaW5nICopd2tDYWNoZVBhcnRpdGlvbktleSgpIGluUmVxdWVzdDptX25zUmVxdWVz
dC5nZXQoKV07CiAgICAgaWYgKGNhY2hlUGFydGl0aW9uKQpAQCAtMTIwLDYgKzExNCwyMCBAQCB2
b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVSZXNvdXJjZVJlCiAjZW5kaWYKIH0KIAordm9p
ZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUmVzb3VyY2VIVFRQQm9keSgpCit7CisgICAgaWYg
KE5TRGF0YSogYm9keURhdGEgPSBbbV9uc1JlcXVlc3QuZ2V0KCkgSFRUUEJvZHldKQorICAgICAg
ICBtX2h0dHBCb2R5ID0gRm9ybURhdGE6OmNyZWF0ZShbYm9keURhdGEgYnl0ZXNdLCBbYm9keURh
dGEgbGVuZ3RoXSk7CisgICAgZWxzZSBpZiAoTlNJbnB1dFN0cmVhbSogYm9keVN0cmVhbSA9IFtt
X25zUmVxdWVzdC5nZXQoKSBIVFRQQm9keVN0cmVhbV0pIHsKKyAgICAgICAgRm9ybURhdGEqIGZv
cm1EYXRhID0gaHR0cEJvZHlGcm9tU3RyZWFtKGJvZHlTdHJlYW0pOworICAgICAgICAvLyBUaGVy
ZSBpcyBubyBGb3JtRGF0YSBvYmplY3QgaWYgYSBjbGllbnQgcHJvdmlkZWQgYSBjdXN0b20gZGF0
YSBzdHJlYW0uCisgICAgICAgIC8vIFdlIHNob3VsZG4ndCBiZSBsb29raW5nIGF0IGh0dHAgYm9k
eSBhZnRlciBjbGllbnQgY2FsbGJhY2tzLgorICAgICAgICBBU1NFUlQoZm9ybURhdGEpOworICAg
ICAgICBpZiAoZm9ybURhdGEpCisgICAgICAgICAgICBtX2h0dHBCb2R5ID0gZm9ybURhdGE7Cisg
ICAgfQorfQorCiB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3Qo
KQogewogICAgIGlmIChpc051bGwoKSkgewpAQCAtMTI3LDcgKzEzNSw3IEBAIHZvaWQgUmVzb3Vy
Y2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmUKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICAKLSAgICBOU011dGFibGVVUkxSZXF1ZXN0KiBuc1JlcXVlc3QgPSBbbV9uc1JlcXVlc3QuZ2V0
KCkgbXV0YWJsZUNvcHldOworICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKm5zUmVxdWVzdCA9IFtt
X25zUmVxdWVzdC5nZXQoKSBtdXRhYmxlQ29weV07CiAKICAgICBpZiAobnNSZXF1ZXN0KQogICAg
ICAgICBbbnNSZXF1ZXN0IHNldFVSTDp1cmwoKV07CkBAIC0xNzgsMjEgKzE4Niw1NyBAQCB2b2lk
IFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlCiAgICAgICAgIFtuc1JlcXVlc3Qg
c2V0Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5OmVuY29kaW5nRmFsbGJh
Y2tzXTsKICAgICB9CiAKKyNpZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5HKQorICAgIFtOU1VS
TFByb3RvY29sIHNldFByb3BlcnR5Om1fY2FjaGVQYXJ0aXRpb24gZm9yS2V5OihOU1N0cmluZyAq
KXdrQ2FjaGVQYXJ0aXRpb25LZXkoKSBpblJlcXVlc3Q6bnNSZXF1ZXN0XTsKKyNlbmRpZgorCisg
ICAgbV9uc1JlcXVlc3QuYWRvcHROUyhuc1JlcXVlc3QpOworfQorCit2b2lkIFJlc291cmNlUmVx
dWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybUhUVFBCb2R5KCkKK3sKKyAgICBpZiAoaXNOdWxsKCkpIHsK
KyAgICAgICAgQVNTRVJUKCFtX25zUmVxdWVzdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpuc1JlcXVlc3QgPSBbbV9uc1JlcXVlc3QuZ2V0KCkg
bXV0YWJsZUNvcHldOworCisgICAgaWYgKG5zUmVxdWVzdCkKKyAgICAgICAgW25zUmVxdWVzdCBz
ZXRVUkw6dXJsKCldOworICAgIGVsc2UKKyAgICAgICAgbnNSZXF1ZXN0ID0gW1tOU011dGFibGVV
UkxSZXF1ZXN0IGFsbG9jXSBpbml0V2l0aFVSTDp1cmwoKV07CisKICAgICBSZWZQdHI8Rm9ybURh
dGE+IGZvcm1EYXRhID0gaHR0cEJvZHkoKTsKICAgICBpZiAoZm9ybURhdGEgJiYgIWZvcm1EYXRh
LT5pc0VtcHR5KCkpCiAgICAgICAgIFdlYkNvcmU6OnNldEhUVFBCb2R5KG5zUmVxdWVzdCwgZm9y
bURhdGEpOwogCi0jaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKLSAgICBbTlNVUkxQcm90
b2NvbCBzZXRQcm9wZXJ0eTptX2NhY2hlUGFydGl0aW9uIGZvcktleTooTlNTdHJpbmcgKil3a0Nh
Y2hlUGFydGl0aW9uS2V5KCkgaW5SZXF1ZXN0Om5zUmVxdWVzdF07Ci0jZW5kaWYKKyAgICBpZiAo
TlNJbnB1dFN0cmVhbSAqYm9keVN0cmVhbSA9IFtuc1JlcXVlc3QgSFRUUEJvZHlTdHJlYW1dKSB7
CisgICAgICAgIC8vIEZvciBzdHJlYW1zLCBwcm92aWRlIGEgQ29udGVudC1MZW5ndGggdG8gYXZv
aWQgdXNpbmcgY2h1bmtlZCBlbmNvZGluZywgYW5kIHRvIGdldCBhY2N1cmF0ZSB0b3RhbCBsZW5n
dGggaW4gY2FsbGJhY2tzLgorICAgICAgICBOU1N0cmluZyAqbGVuZ3RoU3RyaW5nID0gW2JvZHlT
dHJlYW0gcHJvcGVydHlGb3JLZXk6KE5TU3RyaW5nICopZm9ybURhdGFTdHJlYW1MZW5ndGhQcm9w
ZXJ0eU5hbWUoKV07CisgICAgICAgIGlmIChsZW5ndGhTdHJpbmcpIHsKKyAgICAgICAgICAgIFtu
c1JlcXVlc3Qgc2V0VmFsdWU6bGVuZ3RoU3RyaW5nIGZvckhUVFBIZWFkZXJGaWVsZDpAIkNvbnRl
bnQtTGVuZ3RoIl07CisgICAgICAgICAgICAvLyBTaW5jZSByZXNvdXJjZSByZXF1ZXN0IGlzIGFs
cmVhZHkgbWFya2VkIHVwZGF0ZWQsIHdlIG5lZWQgdG8ga2VlcCBpdCB1cCB0byBkYXRlIHRvby4K
KyAgICAgICAgICAgIEFTU0VSVChtX3Jlc291cmNlUmVxdWVzdFVwZGF0ZWQpOworICAgICAgICAg
ICAgbV9odHRwSGVhZGVyRmllbGRzLnNldCgiQ29udGVudC1MZW5ndGgiLCBsZW5ndGhTdHJpbmcp
OworICAgICAgICB9CisgICAgfQogCiAgICAgbV9uc1JlcXVlc3QuYWRvcHROUyhuc1JlcXVlc3Qp
OwogfQogCit2b2lkIFJlc291cmNlUmVxdWVzdDo6dXBkYXRlRnJvbURlbGVnYXRlUHJlc2Vydmlu
Z09sZEhUVFBCb2R5KE5TVVJMUmVxdWVzdCAqZGVsZWdhdGVQcm92aWRlZFJlcXVlc3QpCit7Cisg
ICAgUmVmUHRyPEZvcm1EYXRhPiBvbGRIVFRQQm9keSA9IGh0dHBCb2R5KCk7CisKKyAgICAqdGhp
cyA9IGRlbGVnYXRlUHJvdmlkZWRSZXF1ZXN0OworICAgIHNldEhUVFBCb2R5KG9sZEhUVFBCb2R5
LnJlbGVhc2UoKSk7Cit9CisKIHZvaWQgUmVzb3VyY2VSZXF1ZXN0OjphcHBseVdlYkFyY2hpdmVI
YWNrRm9yTWFpbCgpCiB7CiAgICAgLy8gSGFjayBiZWNhdXNlIE1haWwgY2hlY2tzIGZvciB0aGlz
IHByb3BlcnR5IHRvIGRldGVjdCBkYXRhIC8gYXJjaGl2ZSBsb2FkcwotICAgIFtOU1VSTFByb3Rv
Y29sIHNldFByb3BlcnR5OkAiIiBmb3JLZXk6QCJXZWJEYXRhUmVxdWVzdCIgaW5SZXF1ZXN0OihO
U011dGFibGVVUkxSZXF1ZXN0ICopbnNVUkxSZXF1ZXN0KCldOworICAgIFtOU1VSTFByb3RvY29s
IHNldFByb3BlcnR5OkAiIiBmb3JLZXk6QCJXZWJEYXRhUmVxdWVzdCIgaW5SZXF1ZXN0OihOU011
dGFibGVVUkxSZXF1ZXN0ICopbnNVUkxSZXF1ZXN0KERvTm90VXBkYXRlSFRUUEJvZHkpXTsKIH0K
IAogdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnNldFN0b3JhZ2VTZXNzaW9uKENGVVJMU3RvcmFnZVNl
c3Npb25SZWYgc3RvcmFnZVNlc3Npb24pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3F0L1Jlc291cmNlUmVxdWVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VSZXF1ZXN0LmgJKHJldmlzaW9uIDE0NDA2NykK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VSZXF1ZXN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTY0LDggKzY0LDEwIEBAIGNsYXNzIE5ldHdvcmtpbmdDb250ZXh0
OwogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBSZXNvdXJjZVJlcXVlc3RCYXNl
OwogCi0gICAgICAgIHZvaWQgZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QoKSB7fQotICAgICAgICB2
b2lkIGRvVXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCkge30KKyAgICAgICAgdm9pZCBkb1VwZGF0ZVBs
YXRmb3JtUmVxdWVzdCgpIHsgfQorICAgICAgICB2b2lkIGRvVXBkYXRlUmVzb3VyY2VSZXF1ZXN0
KCkgeyB9CisgICAgICAgIHZvaWQgZG9VcGRhdGVQbGF0Zm9ybUhUVFBCb2R5KCkgeyB9CisgICAg
ICAgIHZvaWQgZG9VcGRhdGVSZXNvdXJjZUhUVFBCb2R5KCkgeyB9CiAKICAgICAgICAgUGFzc093
blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IGRvUGxhdGZvcm1Db3B5RGF0YShQ
YXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4gZGF0YSkgY29uc3QgeyBy
ZXR1cm4gZGF0YTsgfQogICAgICAgICB2b2lkIGRvUGxhdGZvcm1BZG9wdChQYXNzT3duUHRyPENy
b3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4pIHsgfQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaAkocmV2
aXNpb24gMTQ0MDY3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jl
c291cmNlUmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC04MSw4ICs4MSwxMCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKICAgICAgICAgU291cE1lc3NhZ2VGbGFncyBtX3NvdXBGbGFnczsKIAot
ICAgICAgICB2b2lkIGRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkge307Ci0gICAgICAgIHZvaWQg
ZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3QoKSB7fTsKKyAgICAgICAgdm9pZCBkb1VwZGF0ZVBsYXRm
b3JtUmVxdWVzdCgpIHsgfQorICAgICAgICB2b2lkIGRvVXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCkg
eyB9CisgICAgICAgIHZvaWQgZG9VcGRhdGVQbGF0Zm9ybUhUVFBCb2R5KCkgeyB9CisgICAgICAg
IHZvaWQgZG9VcGRhdGVSZXNvdXJjZUhUVFBCb2R5KCkgeyB9CiAKICAgICAgICAgUGFzc093blB0
cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IGRvUGxhdGZvcm1Db3B5RGF0YShQYXNz
T3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4gZGF0YSkgY29uc3QgeyByZXR1
cm4gZGF0YTsgfQogICAgICAgICB2b2lkIGRvUGxhdGZvcm1BZG9wdChQYXNzT3duUHRyPENyb3Nz
VGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4pIHsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay93aW4vUmVzb3VyY2VSZXF1ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vUmVzb3VyY2VSZXF1ZXN0LmgJKHJldmlzaW9u
IDE0NDA2NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL1Jlc291cmNl
UmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCw2ICs1OCw4IEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIGRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkgeyB9CiAgICAgdm9pZCBkb1VwZGF0ZVJl
c291cmNlUmVxdWVzdCgpIHsgfQorICAgIHZvaWQgZG9VcGRhdGVQbGF0Zm9ybUhUVFBCb2R5KCkg
eyB9CisgICAgdm9pZCBkb1VwZGF0ZVJlc291cmNlSFRUUEJvZHkoKSB7IH0KIAogICAgIFBhc3NP
d25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPiBkb1BsYXRmb3JtQ29weURhdGEo
UGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IGRhdGEpIGNvbnN0IHsg
cmV0dXJuIGRhdGE7IH0KICAgICB2b2lkIGRvUGxhdGZvcm1BZG9wdChQYXNzT3duUHRyPENyb3Nz
VGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4pIHsgfQpJbmRleDogU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZp
c2lvbiAxNDQwNjcpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODksNyArMTg5LDEwIEBAIHZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXUKICAgICAvLyBJZiB0aGlzIG1lc3Nh
Z2UgY2hhbmdlcyB0byBiZSBhc3luY2hyb25vdXMgd2UgbWlnaHQgaW50cm9kdWNlIGEgc2l0dWF0
aW9uIHdoZXJlIHRoZSBOZXR3b3JrUHJvY2VzcyBpcyBkZWFkbG9ja2VkIHdhaXRpbmcgZm9yIDYg
Y29ubmVjdGlvbnMKICAgICAvLyB0byBjb21wbGV0ZSB3aGlsZSB0aGUgV2ViUHJvY2VzcyBpcyB3
YWl0aW5nIGZvciBhIDd0aCB0byBjb21wbGV0ZS4KICAgICAvLyBJZiB3ZSBldmVyIGNoYW5nZSB0
aGlzIG1lc3NhZ2UgdG8gYmUgYXN5bmNocm9ub3VzIHdlIGhhdmUgdG8gaW5jbHVkZSBzYWZlZ3Vh
cmRzIHRvIG1ha2Ugc3VyZSB0aGUgbmV3IGRlc2lnbiBpbnRlcmFjdHMgd2VsbCB3aXRoIHN5bmMg
WEhSLgotICAgIGlmICghc2VuZFN5bmMoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpXaWxs
U2VuZFJlcXVlc3QocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSksIE1lc3NhZ2VzOjpXZWJSZXNv
dXJjZUxvYWRlcjo6V2lsbFNlbmRSZXF1ZXN0OjpSZXBseShyZXF1ZXN0KSkpCisgICAgUmVzb3Vy
Y2VSZXF1ZXN0IHJldHVybmVkUmVxdWVzdDsKKyAgICBpZiAoc2VuZFN5bmMoTWVzc2FnZXM6Oldl
YlJlc291cmNlTG9hZGVyOjpXaWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25z
ZSksIE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6V2lsbFNlbmRSZXF1ZXN0OjpSZXBseShy
ZXR1cm5lZFJlcXVlc3QpKSkKKyAgICAgICAgcmVxdWVzdC51cGRhdGVGcm9tRGVsZWdhdGVQcmVz
ZXJ2aW5nT2xkSFRUUEJvZHkocmV0dXJuZWRSZXF1ZXN0Lm5zVVJMUmVxdWVzdChEb05vdFVwZGF0
ZUhUVFBCb2R5KSk7CisgICAgZWxzZQogICAgICAgICByZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0
KCk7CiAKICAgICBSdW5Mb29wOjptYWluKCktPmRpc3BhdGNoKGJpbmQoJk5ldHdvcmtSZXNvdXJj
ZUxvYWRTY2hlZHVsZXI6OnJlY2VpdmVkUmVkaXJlY3QsICZOZXR3b3JrUHJvY2Vzczo6c2hhcmVk
KCkubmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlcigpLCB0aGlzLCByZXF1ZXN0LnVybCgpKSk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL21hYy9Eb3du
bG9hZE1hYy5tbQkocmV2aXNpb24gMTQ0MDY3KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0Rv
d25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDcg
QEAgdm9pZCBEb3dubG9hZDo6c3RhcnQoKQogICAgIEFTU0VSVCghbV9kZWxlZ2F0ZSk7CiAKICAg
ICBtX2RlbGVnYXRlLmFkb3B0TlMoW1tXS0Rvd25sb2FkQXNEZWxlZ2F0ZSBhbGxvY10gaW5pdFdp
dGhEb3dubG9hZDp0aGlzXSk7Ci0gICAgbV9uc1VSTERvd25sb2FkLmFkb3B0TlMoW1tOU1VSTERv
d25sb2FkIGFsbG9jXSBpbml0V2l0aFJlcXVlc3Q6bV9yZXF1ZXN0Lm5zVVJMUmVxdWVzdCgpIGRl
bGVnYXRlOm1fZGVsZWdhdGUuZ2V0KCldKTsKKyAgICBtX25zVVJMRG93bmxvYWQuYWRvcHROUyhb
W05TVVJMRG93bmxvYWQgYWxsb2NdIGluaXRXaXRoUmVxdWVzdDptX3JlcXVlc3QubnNVUkxSZXF1
ZXN0KFVwZGF0ZUhUVFBCb2R5KSBkZWxlZ2F0ZTptX2RlbGVnYXRlLmdldCgpXSk7CiAKICAgICAv
LyBGSVhNRTogQWxsb3cgdGhpcyB0byBiZSBjaGFuZ2VkIGJ5IHRoZSBjbGllbnQuCiAgICAgW21f
bnNVUkxEb3dubG9hZC5nZXQoKSBzZXREZWxldGVzRmlsZVVwb25GYWlsdXJlOk5PXTsKQEAgLTc1
LDcgKzc1LDcgQEAgdm9pZCBEb3dubG9hZDo6c3RhcnRXaXRoSGFuZGxlKFJlc291cmNlSAogCiAg
ICAgbV9kZWxlZ2F0ZS5hZG9wdE5TKFtbV0tEb3dubG9hZEFzRGVsZWdhdGUgYWxsb2NdIGluaXRX
aXRoRG93bmxvYWQ6dGhpc10pOwogICAgIG1fbnNVUkxEb3dubG9hZCA9IFtOU1VSTERvd25sb2Fk
IF9kb3dubG9hZFdpdGhMb2FkaW5nQ29ubmVjdGlvbjpoYW5kbGUtPmNvbm5lY3Rpb24oKQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVxdWVzdDptX3JlcXVlc3QubnNVUkxSZXF1ZXN0KCkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Q6bV9yZXF1ZXN0Lm5z
VVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2U6cmVzcG9uc2UubnNVUkxSZXNw
b25zZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkZWxlZ2F0ZTptX2RlbGVnYXRlLmdldCgpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm94eTpwcm94eV07
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01h
Yy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1
bWVudENvZGVyc01hYy5tbQkocmV2aXNpb24gMTQ0MDY3KQorKysgU291cmNlL1dlYktpdDIvU2hh
cmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTQw
LDEzICs0MCwyMyBAQCBuYW1lc3BhY2UgQ29yZUlQQyB7CiAKIHZvaWQgQXJndW1lbnRDb2RlcjxS
ZXNvdXJjZVJlcXVlc3Q+OjplbmNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnRFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKIHsKLSAgICBib29s
IHJlcXVlc3RJc1ByZXNlbnQgPSByZXNvdXJjZVJlcXVlc3QubnNVUkxSZXF1ZXN0KCk7CisgICAg
UmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gcmVxdWVzdFRvU2VyaWFsaXplID0gcmVzb3VyY2VSZXF1
ZXN0Lm5zVVJMUmVxdWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5KTsKKworICAgIGJvb2wgcmVxdWVz
dElzUHJlc2VudCA9IHJlcXVlc3RUb1NlcmlhbGl6ZTsKICAgICBlbmNvZGVyIDw8IHJlcXVlc3RJ
c1ByZXNlbnQ7CiAKICAgICBpZiAoIXJlcXVlc3RJc1ByZXNlbnQpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGRpY3Rpb25hcnkoQWRvcHRDRiwgV0tO
U1VSTFJlcXVlc3RDcmVhdGVTZXJpYWxpemFibGVSZXByZXNlbnRhdGlvbihyZXNvdXJjZVJlcXVl
c3QubnNVUkxSZXF1ZXN0KCksIENvcmVJUEM6OnRva2VuTnVsbFR5cGVSZWYoKSkpOworICAgIC8v
IFdlIGRvbid0IHNlbmQgSFRUUCBib2R5IG92ZXIgSVBDIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2Uu
CisgICAgLy8gQWxzbywgaXQncyBub3QgYWx3YXlzIHBvc3NpYmxlIHRvIGRvLCBhcyBzdHJlYW1z
IGNhbiBvbmx5IGJlIGNyZWF0ZWQgaW4gcHJvY2VzcyB0aGF0IGRvZXMgbmV0d29ya2luZy4KKyAg
ICBpZiAoW3JlcXVlc3RUb1NlcmlhbGl6ZS5nZXQoKSBIVFRQQm9keV0gfHwgW3JlcXVlc3RUb1Nl
cmlhbGl6ZS5nZXQoKSBIVFRQQm9keVN0cmVhbV0pIHsKKyAgICAgICAgcmVxdWVzdFRvU2VyaWFs
aXplLmFkb3B0TlMoW3JlcXVlc3RUb1NlcmlhbGl6ZS5nZXQoKSBtdXRhYmxlQ29weV0pOworICAg
ICAgICBbKE5TTXV0YWJsZVVSTFJlcXVlc3QgKilyZXF1ZXN0VG9TZXJpYWxpemUuZ2V0KCkgc2V0
SFRUUEJvZHk6bmlsXTsKKyAgICAgICAgWyhOU011dGFibGVVUkxSZXF1ZXN0ICopcmVxdWVzdFRv
U2VyaWFsaXplLmdldCgpIHNldEhUVFBCb2R5U3RyZWFtOm5pbF07CisgICAgfQorCisgICAgUmV0
YWluUHRyPENGRGljdGlvbmFyeVJlZj4gZGljdGlvbmFyeShBZG9wdENGLCBXS05TVVJMUmVxdWVz
dENyZWF0ZVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uKHJlcXVlc3RUb1NlcmlhbGl6ZS5nZXQo
KSwgQ29yZUlQQzo6dG9rZW5OdWxsVHlwZVJlZigpKSk7CiAgICAgQ29yZUlQQzo6ZW5jb2RlKGVu
Y29kZXIsIGRpY3Rpb25hcnkuZ2V0KCkpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvbWFjL1dlYlVSTFJlcXVlc3RNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
U2hhcmVkL21hYy9XZWJVUkxSZXF1ZXN0TWFjLm1tCShyZXZpc2lvbiAxNDQwNjcpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYlVSTFJlcXVlc3RNYWMubW0JKHdvcmtpbmcgY29weSkK
QEAgLTI2LDYgKzI2LDggQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV2ViVVJMUmVx
dWVzdC5oIgogCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwogbmFtZXNwYWNlIFdlYktpdCB7
CiAKIFdlYlVSTFJlcXVlc3Q6OldlYlVSTFJlcXVlc3QoUGxhdGZvcm1SZXF1ZXN0IHBsYXRmb3Jt
UmVxdWVzdCkKQEAgLTM1LDcgKzM3LDcgQEAgV2ViVVJMUmVxdWVzdDo6V2ViVVJMUmVxdWVzdChQ
bGF0Zm9ybVJlcQogCiBQbGF0Zm9ybVJlcXVlc3QgV2ViVVJMUmVxdWVzdDo6cGxhdGZvcm1SZXF1
ZXN0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9yZXF1ZXN0Lm5zVVJMUmVxdWVzdCgpOworICAg
IHJldHVybiBtX3JlcXVlc3QubnNVUkxSZXF1ZXN0KERvTm90VXBkYXRlSFRUUEJvZHkpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9O
ZXR3b3JrL0N1c3RvbVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9t
UHJvdG9jb2xzL21hYy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1hYy5tbQkocmV2aXNpb24g
MTQ0MDY3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9j
b2xzL21hYy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1hYy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMTMxLDcgKzEzMSw3IEBAIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpDdXN0b21Qcm90
b2MKIAogdm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6c3RhcnRMb2FkaW5nKHVpbnQ2
NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgY29yZVJlcXVlc3Qp
CiB7Ci0gICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gY29yZVJlcXVlc3QubnNVUkxSZXF1ZXN0
KCk7CisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gY29yZVJlcXVlc3QubnNVUkxSZXF1ZXN0
KERvTm90VXBkYXRlSFRUUEJvZHkpOwogICAgIGlmICghcmVxdWVzdCkKICAgICAgICAgcmV0dXJu
OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VSZXNv
dXJjZUxvYWRDbGllbnQuY3BwCShyZXZpc2lvbiAxNDQwNjcpCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENs
aWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgdm9pZCBJbmplY3RlZEJ1
bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbgogCiAgICAgUmVmUHRyPFdlYlVSTFJlcXVlc3Q+IHJl
dHVybmVkUmVxdWVzdCA9IGFkb3B0UmVmKHRvSW1wbChtX2NsaWVudC53aWxsU2VuZFJlcXVlc3RG
b3JGcmFtZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCBpZGVudGlmaWVyLCB0b0FQSShyZXF1
ZXN0KSwgdG9BUEkocmVkaXJlY3RSZXNwb25zZSksIG1fY2xpZW50LmNsaWVudEluZm8pKSk7CiAg
ICAgaWYgKHJldHVybmVkUmVxdWVzdCkKLSAgICAgICAgcmVxdWVzdCA9IHJldHVybmVkUmVxdWVz
dC0+cmVzb3VyY2VSZXF1ZXN0KCk7CisgICAgICAgIHJlcXVlc3QudXBkYXRlRnJvbURlbGVnYXRl
UHJlc2VydmluZ09sZEhUVFBCb2R5KHJldHVybmVkUmVxdWVzdC0+cmVzb3VyY2VSZXF1ZXN0KCku
bnNVUkxSZXF1ZXN0KERvTm90VXBkYXRlSFRUUEJvZHkpKTsKICAgICBlbHNlCiAgICAgICAgIHJl
cXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0JKHJldmlzaW9uIDE0NDA2
NykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5t
bQkod29ya2luZyBjb3B5KQpAQCAtNzI1LDcgKzcyNSw3IEBAIFBhc3NSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBXZWJQYWdlOjpjYWNoZWQKIAogYm9vbCBXZWJQYWdlOjpwbGF0Zm9ybUNhbkhhbmRsZVJl
cXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIGlm
IChbTlNVUkxDb25uZWN0aW9uIGNhbkhhbmRsZVJlcXVlc3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3Qo
KV0pCisgICAgaWYgKFtOU1VSTENvbm5lY3Rpb24gY2FuSGFuZGxlUmVxdWVzdDpyZXF1ZXN0Lm5z
VVJMUmVxdWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5KV0pCiAgICAgICAgIHJldHVybiB0cnVlOwog
CiAgICAgLy8gRklYTUU6IFJldHVybiB0cnVlIGlmIHRoaXMgc2NoZW1lIGlzIGFueSBvbmUgV2Vi
S2l0MiBrbm93cyBob3cgdG8gaGFuZGxlLgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHJldmlzaW9u
IDE0NDA2NykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yODIsNyArMjgyLDcgQEAgdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6Y29udmVydE1haW5SZQogICAgIFdlYlZpZXcgKndlYlZpZXcgPSBn
ZXRXZWJWaWV3KG1fd2ViRnJhbWUuZ2V0KCkpOwogICAgIENGVVJMQ29ubmVjdGlvblJlZiBjb25u
ZWN0aW9uID0gaGFuZGxlLT5jb25uZWN0aW9uKCk7CiAgICAgW1dlYkRvd25sb2FkIF9kb3dubG9h
ZFdpdGhMb2FkaW5nQ0ZVUkxDb25uZWN0aW9uOmNvbm5lY3Rpb24KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVl
c3Q6cmVxdWVzdC5jZlVSTFJlcXVlc3QoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdDpyZXF1ZXN0LmNm
VVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2U6cmVzcG9uc2Uu
Y2ZVUkxSZXNwb25zZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGVnYXRlOlt3ZWJWaWV3IGRvd25sb2FkRGVs
ZWdhdGVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHByb3h5Om5pbF07CkBAIC0yOTYsNyArMjk2LDcgQEAgdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29udmVydE1haW5SZQogICAgIAogICAgIFdlYlZpZXcg
KndlYlZpZXcgPSBnZXRXZWJWaWV3KG1fd2ViRnJhbWUuZ2V0KCkpOwogICAgIFtXZWJEb3dubG9h
ZCBfZG93bmxvYWRXaXRoTG9hZGluZ0Nvbm5lY3Rpb246aGFuZGxlLT5jb25uZWN0aW9uKCkKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXF1ZXN0OnJlcXVlc3QubnNVUkxSZXF1ZXN0KCkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0OnJlcXVl
c3QubnNVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2U6cmVzcG9uc2Uu
bnNVUkxSZXNwb25zZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZWxlZ2F0ZTpbd2ViVmlldyBkb3dubG9hZERlbGVnYXRl
XQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHJveHk6cHJveHldOwpAQCAtMzEyLDcgKzMxMiw3IEBAIGJvb2wgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkTG8KICAgICBpZiAoIWltcGxlbWVudGF0aW9ucy0+
ZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlRnVuYykKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgQ2FsbFJlc291cmNlTG9hZERlbGVnYXRlKGltcGxlbWVudGF0aW9ucy0+ZGlkTG9h
ZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlRnVuYywgd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6
ZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlOnJlc3BvbnNlOmxlbmd0aDpmcm9tRGF0YVNv
dXJjZTopLCByZXF1ZXN0Lm5zVVJMUmVxdWVzdCgpLCByZXNwb25zZS5uc1VSTFJlc3BvbnNlKCks
IGxlbmd0aCwgZGF0YVNvdXJjZShsb2FkZXIpKTsKKyAgICBDYWxsUmVzb3VyY2VMb2FkRGVsZWdh
dGUoaW1wbGVtZW50YXRpb25zLT5kaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGVGdW5jLCB3
ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGU6
cmVzcG9uc2U6bGVuZ3RoOmZyb21EYXRhU291cmNlOiksIHJlcXVlc3QubnNVUkxSZXF1ZXN0KFVw
ZGF0ZUhUVFBCb2R5KSwgcmVzcG9uc2UubnNVUkxSZXNwb25zZSgpLCBsZW5ndGgsIGRhdGFTb3Vy
Y2UobG9hZGVyKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTMyNCw3ICszMjQsNyBAQCB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojphc3NpZ25JZGVudGlmCiAgICAgaWQgb2JqZWN0ID0g
bmlsOwogICAgIEJPT0wgc2hvdWxkUmVsZWFzZSA9IE5POwogICAgIGlmIChpbXBsZW1lbnRhdGlv
bnMtPmlkZW50aWZpZXJGb3JSZXF1ZXN0RnVuYykKLSAgICAgICAgb2JqZWN0ID0gQ2FsbFJlc291
cmNlTG9hZERlbGVnYXRlKGltcGxlbWVudGF0aW9ucy0+aWRlbnRpZmllckZvclJlcXVlc3RGdW5j
LCB3ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzppZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3Q6
ZnJvbURhdGFTb3VyY2U6KSwgcmVxdWVzdC5uc1VSTFJlcXVlc3QoKSwgZGF0YVNvdXJjZShsb2Fk
ZXIpKTsKKyAgICAgICAgb2JqZWN0ID0gQ2FsbFJlc291cmNlTG9hZERlbGVnYXRlKGltcGxlbWVu
dGF0aW9ucy0+aWRlbnRpZmllckZvclJlcXVlc3RGdW5jLCB3ZWJWaWV3LCBAc2VsZWN0b3Iod2Vi
VmlldzppZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3Q6ZnJvbURhdGFTb3VyY2U6KSwgcmVxdWVz
dC5uc1VSTFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpLCBkYXRhU291cmNlKGxvYWRlcikpOwogICAg
IGVsc2UgewogICAgICAgICBvYmplY3QgPSBbW05TT2JqZWN0IGFsbG9jXSBpbml0XTsKICAgICAg
ICAgc2hvdWxkUmVsZWFzZSA9IFlFUzsKQEAgLTM0Niw3ICszNDYsNyBAQCB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxTCiAgICAgaWYgKHJlZGlyZWN0UmVzcG9uc2UuaXNO
dWxsKCkpCiAgICAgICAgIHN0YXRpY19jYXN0PFdlYkRvY3VtZW50TG9hZGVyTWFjKj4obG9hZGVy
KS0+aW5jcmVhc2VMb2FkQ291bnQoaWRlbnRpZmllcik7CiAKLSAgICBOU1VSTFJlcXVlc3QgKmN1
cnJlbnRVUkxSZXF1ZXN0ID0gcmVxdWVzdC5uc1VSTFJlcXVlc3QoKTsKKyAgICBOU1VSTFJlcXVl
c3QgKmN1cnJlbnRVUkxSZXF1ZXN0ID0gcmVxdWVzdC5uc1VSTFJlcXVlc3QoVXBkYXRlSFRUUEJv
ZHkpOwogICAgIE5TVVJMUmVxdWVzdCAqbmV3VVJMUmVxdWVzdCA9IGN1cnJlbnRVUkxSZXF1ZXN0
OwogICAgIGlmIChpbXBsZW1lbnRhdGlvbnMtPndpbGxTZW5kUmVxdWVzdEZ1bmMpCiAgICAgICAg
IG5ld1VSTFJlcXVlc3QgPSAoTlNVUkxSZXF1ZXN0ICopQ2FsbFJlc291cmNlTG9hZERlbGVnYXRl
KGltcGxlbWVudGF0aW9ucy0+d2lsbFNlbmRSZXF1ZXN0RnVuYywgd2ViVmlldywgQHNlbGVjdG9y
KHdlYlZpZXc6cmVzb3VyY2U6d2lsbFNlbmRSZXF1ZXN0OnJlZGlyZWN0UmVzcG9uc2U6ZnJvbURh
dGFTb3VyY2U6KSwgW3dlYlZpZXcgX29iamVjdEZvcklkZW50aWZpZXI6aWRlbnRpZmllcl0sIGN1
cnJlbnRVUkxSZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlLm5zVVJMUmVzcG9uc2UoKSwgZGF0YVNv
dXJjZShsb2FkZXIpKTsKQEAgLTcyNCw3ICs3MjQsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERlY2lkCiAKICAgICBbW3dlYlZpZXcgX3BvbGljeURlbGVnYXRlRm9yd2Fy
ZGVyXSB3ZWJWaWV3OndlYlZpZXcKICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2lkZVBvbGlj
eUZvck1JTUVUeXBlOnJlc3BvbnNlLm1pbWVUeXBlKCkKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXF1ZXN0OnJlcXVlc3QubnNVUkxSZXF1ZXN0KCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0OnJlcXVlc3QubnNVUkxSZXF1
ZXN0KFVwZGF0ZUhUVFBCb2R5KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZnJhbWU6bV93ZWJGcmFtZS5nZXQoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRlY2lzaW9uTGlzdGVuZXI6c2V0VXBQb2xpY3lMaXN0ZW5lcihmdW5jdGlvbikuZ2V0KCld
OwogfQpAQCAtNzM1LDcgKzczNSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGVjaWQKICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdl
dCgpKTsKICAgICBbW3dlYlZpZXcgX3BvbGljeURlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3Ondl
YlZpZXcKICAgICAgICAgICAgIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbjphY3Rpb25E
aWN0aW9uYXJ5KGFjdGlvbiwgZm9ybVN0YXRlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXF1ZXN0OnJlcXVlc3QubnNVUkxSZXF1ZXN0KCkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVxdWVzdDpyZXF1ZXN0Lm5zVVJMUmVxdWVzdChVcGRhdGVIVFRQ
Qm9keSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0ZyYW1lTmFtZTpmcmFtZU5h
bWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjaXNpb25MaXN0ZW5lcjpzZXRVcFBvbGlj
eUxpc3RlbmVyKGZ1bmN0aW9uKS5nZXQoKV07CiB9CkBAIC03NDYsNyArNzQ2LDcgQEAgdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZAogICAgIFdlYlZpZXcgKndlYlZpZXcg
PSBnZXRXZWJWaWV3KG1fd2ViRnJhbWUuZ2V0KCkpOwogICAgIFtbd2ViVmlldyBfcG9saWN5RGVs
ZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6d2ViVmlldwogICAgICAgICAgICAgICAgIGRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb246YWN0aW9uRGljdGlvbmFyeShhY3Rpb24sIGZvcm1TdGF0
ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0OnJlcXVl
c3QubnNVUkxSZXF1ZXN0KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXF1ZXN0OnJlcXVlc3QubnNVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWU6bV93ZWJGcmFtZS5nZXQoKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2lzaW9uTGlzdGVuZXI6c2V0VXBQb2xp
Y3lMaXN0ZW5lcihmdW5jdGlvbikuZ2V0KCldOwogfQpAQCAtODcwLDcgKzg3MCw3IEBAIHZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OnVwZGF0ZUdsb2JhbEgKICAgICAgICAgaWYgKGltcGxlbWVu
dGF0aW9ucy0+bmF2aWdhdGVkRnVuYykgewogICAgICAgICAgICAgV2ViTmF2aWdhdGlvbkRhdGEg
KmRhdGEgPSBbW1dlYk5hdmlnYXRpb25EYXRhIGFsbG9jXSBpbml0V2l0aFVSTFN0cmluZzpsb2Fk
ZXItPnVybEZvckhpc3RvcnkoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTpuaWxPck5TU3Ry
aW5nKGxvYWRlci0+dGl0bGUoKS5zdHJpbmcoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbFJlcXVlc3Q6
bG9hZGVyLT5vcmlnaW5hbFJlcXVlc3RDb3B5KCkubnNVUkxSZXF1ZXN0KCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBv
cmlnaW5hbFJlcXVlc3Q6bG9hZGVyLT5vcmlnaW5hbFJlcXVlc3RDb3B5KCkubnNVUkxSZXF1ZXN0
KFVwZGF0ZUhUVFBCb2R5KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZTpsb2FkZXItPnJlc3Bv
bnNlKCkubnNVUkxSZXNwb25zZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc1N1YnN0aXR1dGVEYXRhOmxvYWRlci0+
c3Vic3RpdHV0ZURhdGEoKS5pc1ZhbGlkKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50UmVkaXJlY3RTb3VyY2U6bG9h
ZGVyLT5jbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkoKV07CkBAIC0xMDI2LDcgKzEwMjYs
NyBAQCBib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5IYW5kbGVSZXF1CiAgICAgRnJhbWUq
IGZyYW1lID0gY29yZShtX3dlYkZyYW1lLmdldCgpKTsKICAgICBQYWdlKiBwYWdlID0gZnJhbWUt
PnBhZ2UoKTsKICAgICBCT09MIGZvck1haW5GcmFtZSA9IHBhZ2UgJiYgcGFnZS0+bWFpbkZyYW1l
KCkgPT0gZnJhbWU7Ci0gICAgcmV0dXJuIFtXZWJWaWV3IF9jYW5IYW5kbGVSZXF1ZXN0OnJlcXVl
c3QubnNVUkxSZXF1ZXN0KCkgZm9yTWFpbkZyYW1lOmZvck1haW5GcmFtZV07CisgICAgcmV0dXJu
IFtXZWJWaWV3IF9jYW5IYW5kbGVSZXF1ZXN0OnJlcXVlc3QubnNVUkxSZXF1ZXN0KFVwZGF0ZUhU
VFBCb2R5KSBmb3JNYWluRnJhbWU6Zm9yTWFpbkZyYW1lXTsKIH0KIAogYm9vbCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6Y2FuU2hvd01JTUVUeXBlKGNvbnN0IFN0cmluZyYgTUlNRVR5cGUpIGNvbnN0
CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCShyZXZp
c2lvbiAxNDQwNjcpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2Uu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTQyMyw3ICs0MjMsNyBAQCAtIChXZWJGcmFtZSAqKXdlYkZy
YW1lCiAKIC0gKE5TVVJMUmVxdWVzdCAqKWluaXRpYWxSZXF1ZXN0CiB7Ci0gICAgcmV0dXJuIHRv
UHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+b3JpZ2luYWxSZXF1ZXN0KCkubnNVUkxSZXF1ZXN0
KCk7CisgICAgcmV0dXJuIHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+b3JpZ2luYWxSZXF1
ZXN0KCkubnNVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KTsKIH0KIAogLSAoTlNNdXRhYmxlVVJM
UmVxdWVzdCAqKXJlcXVlc3QKQEAgLTQzMyw3ICs0MzMsNyBAQCAtIChOU011dGFibGVVUkxSZXF1
ZXN0ICopcmVxdWVzdAogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgLy8gRklYTUU6IHRoaXMg
Y2FzdCBpcyBkdWJpb3VzCi0gICAgcmV0dXJuIChOU011dGFibGVVUkxSZXF1ZXN0ICopdG9Qcml2
YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5yZXF1ZXN0KCkubnNVUkxSZXF1ZXN0KCk7CisgICAgcmV0
dXJuIChOU011dGFibGVVUkxSZXF1ZXN0ICopdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5y
ZXF1ZXN0KCkubnNVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KTsKIH0KIAogLSAoTlNVUkxSZXNw
b25zZSAqKXJlc3BvbnNlCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1l
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0J
KHJldmlzaW9uIDE0NDA2NykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTEzNzYsNyArMTM3Niw3IEBAIC0gKHZvaWQpX2xvYWREYXRh
OihOU0RhdGEgKilkYXRhIE1JTUVUeXAKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChbYmFz
ZVVSTCBhYnNvbHV0ZVVSTF0pOwogCiAgICAgLy8gaGFjayBiZWNhdXNlIE1haWwgY2hlY2tzIGZv
ciB0aGlzIHByb3BlcnR5IHRvIGRldGVjdCBkYXRhIC8gYXJjaGl2ZSBsb2FkcwotICAgIFtOU1VS
TFByb3RvY29sIHNldFByb3BlcnR5OkAiIiBmb3JLZXk6QCJXZWJEYXRhUmVxdWVzdCIgaW5SZXF1
ZXN0OihOU011dGFibGVVUkxSZXF1ZXN0ICopcmVxdWVzdC5uc1VSTFJlcXVlc3QoKV07CisgICAg
W05TVVJMUHJvdG9jb2wgc2V0UHJvcGVydHk6QCIiIGZvcktleTpAIldlYkRhdGFSZXF1ZXN0IiBp
blJlcXVlc3Q6KE5TTXV0YWJsZVVSTFJlcXVlc3QgKilyZXF1ZXN0Lm5zVVJMUmVxdWVzdChVcGRh
dGVIVFRQQm9keSldOwogCiAgICAgU3Vic3RpdHV0ZURhdGEgc3Vic3RpdHV0ZURhdGEoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjp3cmFwTlNEYXRhKGRhdGEpLCBNSU1FVHlwZSwgZW5jb2RpbmdOYW1l
LCBbdW5yZWFjaGFibGVVUkwgYWJzb2x1dGVVUkxdLCByZXNwb25zZVVSTCk7CiAK
</data>
<flag name="commit-queue"
          id="210982"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190390</attachid>
            <date>2013-02-26 16:41:38 -0800</date>
            <delta_ts>2013-02-26 16:54:26 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>BodyInNetworkProcess.txt</filename>
            <type>text/plain</type>
            <size>60459</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NDExNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg3IEBACisyMDEzLTAyLTI2ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIERvbid0IGFkZCBhIGJvZHkg
dG8gcGxhdGZvcm0gcmVxdWVzdCB1bnRpbCBuZWNlc3NhcnkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDkwMAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAg
ICAgIFJlc291cmNlUmVxdWVzdCBub3cgaGF2ZSBtb3JlIHN0YXRlIGZvciBzeW5jaW5nIGJldHdl
ZW4gcmVzb3VyY2UgYW5kIHBsYXRmb3JtIHBhcnRzLgorICAgICAgICBJbiBhZGRpdGlvbiB0byB0
cmFja2luZyB3aGljaCBpcyB1cCB0byBkYXRlLCB3ZSBhbHNvIHRyYWNrIHdoaWNoIGhhcyB1cCB0
byBkYXRlCisgICAgICAgIEhUVFAgQm9keS4KKworICAgICAgICBUaGUgcmVhc29uIGlzIHRoYXQg
d2UgZG9uJ3QgbmVlZCB0aGUgYm9keSBvbiByZXF1ZXN0IGJlZm9yZSBpdCdzIGFjdHVhbGx5IHNl
bnQsCisgICAgICAgIGFuZCB3ZSBhY3R1YWxseSBjYW5ub3QgYnVpbGQgaXQgd2hlbiBuZXR3b3Jr
aW5nIGlzIG91dCBvZiBwcm9jZXNzLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46IFVwZGF0
ZWQgZXhwb3J0cy4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0
QmFzZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRIVFRQQm9keSk6
IFVwZGF0ZSBIVFRQIGJvZHkgYmVmb3JlIHJldHVybmluZyBpdC4KKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdEJhc2U6OnVwZGF0ZVBsYXRmb3JtUmVxdWVzdCk6IFVwZGF0ZSBhY2Nv
cmRpbmcgdG8gSFRUUEJvZHlVcGRhdGVQb2xpY3kuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3RCYXNlOjp1cGRhdGVSZXNvdXJjZVJlcXVlc3QpOiBEaXR0by4KKworICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpmb3JtRGF0YVN0cmVhbUxlbmd0aFByb3BlcnR5TmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpmb3JtQ29weVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEhUVFBCb2R5KToK
KyAgICAgICAgQ2hhbmdlZCB0byBub3QgdXBkYXRlIENvbnRlbnQtTGVuZ3RoIGluIHBsYXRmb3Jt
IHJlcXVlc3QgZGlyZWN0bHkuIFdlIG5lZWQgdG8ga2VlcCBpdAorICAgICAgICBpbiBzeW5jIHdp
dGggcmVzb3VyY2UgcmVxdWVzdCwgYW5kIGl0J3MgZWFzaWVyIHRvIGRvIGluIGEgY2FsbGVyLiBF
eHBvc2VkIGNvbXB1dGVkCisgICAgICAgIGxlbmd0aCBhcyBhIHByb3BlcnR5IGRvIGF2b2lkIGR1
cGxpY2F0aW5nIHRoZSB3b3JrLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Gb3Jt
RGF0YVN0cmVhbUNGTmV0Lmg6IFJlbW92ZWQgdW5uZWNlc3NhcnkgaHR0cEJvZHlGcm9tU3RyZWFt
KCkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRs
ZTo6Y3JlYXRlQ0ZVUkxDb25uZWN0aW9uKToKKyAgICAgICAgVXBkYXRlIGJvZHkgd2hlbiBuZWNl
c3NhcnkuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6bnNVUkxSZXF1ZXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVSZXNvdXJjZVJl
cXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVJlc291
cmNlSFRUUEJvZHkpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybUhUVFBCb2R5KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdDo6dXBkYXRlRnJvbURlbGVnYXRlUHJlc2VydmluZ09sZEhU
VFBCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6YXBwbHlXZWJBcmNo
aXZlSGFja0Zvck1haWwpOgorICAgICAgICBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Lmg6IFRyYWNrIGJvZHkgdXAtdG8tZGF0ZSBzdGF0ZS4K
KworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0OjpjZlVSTFJlcXVlc3QpOiBIb25v
ciBIVFRQQm9keVVwZGF0ZVBvbGljeS4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QpOiBEb24ndCB1cGRhdGUgYm9keSBoZXJlLgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtSFRUUEJvZHkp
OiBVcGRhdGUgdGhlIGJvZHksIGFuZCBtYWtlIHN1cmUKKyAgICAgICAgdGhhdCBDb250ZW50LUxl
bmd0aCBpcyBjb3JyZWN0LgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpkb1Vw
ZGF0ZVJlc291cmNlUmVxdWVzdCk6IERvbid0IHVwZGF0ZSBib2R5IGhlcmUuCisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUmVzb3VyY2VIVFRQQm9keSk6IFVwZGF0
ZSB0aGUgYm9keSwgZml4aW5nIGEgYnVnCisgICAgICAgIHdoZXJlIGJvZHkgc3RyZWFtIHdhcyBs
b3N0IGlmIHRoaXMgZnVuY3Rpb24gZ290IGNhbGxlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdDo6YXBwbHlXZWJBcmNoaXZlSGFja0Zvck1haWwpOiBObyBuZWVkIHRvIHVwZGF0
ZSBib2R5IGZvciB0aGlzIG9uZS4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jl
c291cmNlUmVxdWVzdE1hYy5tbTogRGl0dG8gKGJ1dCB0aGlzIGRpZG4ndCBoYXZlIGEgYnVnCisg
ICAgICAgIHdpdGggc3RyZWFtcyBpbiBkb1VwZGF0ZVJlc291cmNlUmVxdWVzdCgpKS4KKworICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLmg6IEZvcndhcmQg
ZGVjbGFyZSBmb3JtRGF0YVN0cmVhbUxlbmd0aFByb3BlcnR5TmFtZSgpLgorCisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlTlNVUkxDb25uZWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUhhbmRsZTo6cGxhdGZvcm1Mb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKC1b
V2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZSBjb25uZWN0aW9uOndpbGxTZW5kUmVxdWVz
dDpyZWRpcmVjdFJlc3BvbnNlOl0pOgorICAgICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVB
c0RlbGVnYXRlIGNvbm5lY3Rpb246ZGlkUmVjZWl2ZVJlc3BvbnNlOl0pOgorICAgICAgICBVcGRh
dGUgYm9keSB3aGVuIG5lY2Vzc2FyeS4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvYmxh
Y2tiZXJyeS9SZXNvdXJjZVJlcXVlc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2No
cm9taXVtL1Jlc291cmNlUmVxdWVzdC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZVJlcXVlc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291
cmNlUmVxdWVzdC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJl
cXVlc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNvdXJjZVJlcXVlc3Qu
aDoKKyAgICAgICAgQWRkZWQgc3R1YnMgZm9yIG5ldyBmdW5jdGlvbnMuIFRoZXNlIHBvcnRzIGRv
bid0IGtlZXAgYSBwbGF0Zm9ybSByZXF1ZXN0IGluIFJlc291cmNlUmVxdWVzdCwKKyAgICAgICAg
YW5kIGRvbid0IG5lZWQgdXBkYXRpbmcuCisKIDIwMTMtMDItMjYgIFN0ZXBoZW4gQ2hlbm5leSAg
PHNjaGVubmV5QGNocm9taXVtLm9yZz4KIAogICAgICAgICBmZURpc3BsYWNlbWVudE1hcCBmaWx0
ZXIgZ2V0cyBjb2xvciBzcGFjZSB3cm9uZwpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlz
aW9uIDE0NDA2NykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNv
cHkpCkBAIC00NDYsNiArNDQ2LDcgQEAgX19aTjdXZWJDb3JlMTVQcm90ZWN0aW9uU3BhY2VDMUVS
S04zV1RGNgogX19aTjdXZWJDb3JlMTVQcm90ZWN0aW9uU3BhY2VDMUV2CiBfX1pON1dlYkNvcmUx
NVJlc291cmNlUmVxdWVzdDIxaHR0cFBpcGVsaW5pbmdFbmFibGVkRXYKIF9fWk43V2ViQ29yZTE1
UmVzb3VyY2VSZXF1ZXN0MjRzZXRIVFRQUGlwZWxpbmluZ0VuYWJsZWRFYgorX19aTjdXZWJDb3Jl
MTVSZXNvdXJjZVJlcXVlc3QzOXVwZGF0ZUZyb21EZWxlZ2F0ZVByZXNlcnZpbmdPbGRIVFRQQm9k
eUVQMTJOU1VSTFJlcXVlc3QKIF9fWk43V2ViQ29yZTE1U2Nyb2xsQWxpZ25tZW50MTdhbGlnbkNl
bnRlckFsd2F5c0UKIF9fWk43V2ViQ29yZTE1U2Nyb2xsQWxpZ25tZW50MTlhbGlnblRvRWRnZUlm
TmVlZGVkRQogX19aTjdXZWJDb3JlMTVTdG9yYWdlU3RyYXRlZ3kyMWxvY2FsU3RvcmFnZU5hbWVz
cGFjZUVSS04zV1RGNlN0cmluZ0VqCkBAIC0xMzIwLDcgKzEzMjEsNyBAQCBfX1pOSzdXZWJDb3Jl
MTVQcm90ZWN0aW9uU3BhY2U0aG9zdEV2CiBfX1pOSzdXZWJDb3JlMTVQcm90ZWN0aW9uU3BhY2U0
cG9ydEV2CiBfX1pOSzdXZWJDb3JlMTVQcm90ZWN0aW9uU3BhY2U1cmVhbG1FdgogX19aTks3V2Vi
Q29yZTE1UHJvdGVjdGlvblNwYWNlN2lzUHJveHlFdgotX19aTks3V2ViQ29yZTE1UmVzb3VyY2VS
ZXF1ZXN0MTJuc1VSTFJlcXVlc3RFdgorX19aTks3V2ViQ29yZTE1UmVzb3VyY2VSZXF1ZXN0MTJu
c1VSTFJlcXVlc3RFTlNfMjBIVFRQQm9keVVwZGF0ZVBvbGljeUUKIF9fWk5LN1dlYkNvcmUxNVZp
c2libGVQb3NpdGlvbjE0Y2hhcmFjdGVyQWZ0ZXJFdgogX19aTks3V2ViQ29yZTE1VmlzaWJsZVBv
c2l0aW9uMTRsb2NhbENhcmV0UmVjdEVSUE5TXzEyUmVuZGVyT2JqZWN0RQogX19aTks3V2ViQ29y
ZTE1VmlzaWJsZVBvc2l0aW9uMTlhYnNvbHV0ZUNhcmV0Qm91bmRzRXYKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNl
LmNwcAkocmV2aXNpb24gMTQ0MDY3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQxLDIyICszNDEs
MjQgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRSZXNwb25zZUNvbgogICAgICAgICBt
X3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQgPSBmYWxzZTsKIH0KIAotRm9ybURhdGEqIFJlc291cmNl
UmVxdWVzdEJhc2U6Omh0dHBCb2R5KCkgY29uc3QgCi17IAotICAgIHVwZGF0ZVJlc291cmNlUmVx
dWVzdCgpOyAKLSAgICAKLSAgICByZXR1cm4gbV9odHRwQm9keS5nZXQoKTsgCitGb3JtRGF0YSog
UmVzb3VyY2VSZXF1ZXN0QmFzZTo6aHR0cEJvZHkoKSBjb25zdAoreworICAgIHVwZGF0ZVJlc291
cmNlUmVxdWVzdChVcGRhdGVIVFRQQm9keSk7CisKKyAgICByZXR1cm4gbV9odHRwQm9keS5nZXQo
KTsKIH0KIAogdm9pZCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRIVFRQQm9keShQYXNzUmVmUHRy
PEZvcm1EYXRhPiBodHRwQm9keSkKIHsKLSAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsgCi0g
ICAgCi0gICAgbV9odHRwQm9keSA9IGh0dHBCb2R5OyAKLSAgICAKKyAgICB1cGRhdGVSZXNvdXJj
ZVJlcXVlc3QoKTsKKworICAgIG1faHR0cEJvZHkgPSBodHRwQm9keTsKKworICAgIG1fcmVzb3Vy
Y2VSZXF1ZXN0Qm9keVVwZGF0ZWQgPSB0cnVlOworCiAgICAgaWYgKHVybCgpLnByb3RvY29sSXNJ
bkhUVFBGYW1pbHkoKSkKLSAgICAgICAgbV9wbGF0Zm9ybVJlcXVlc3RVcGRhdGVkID0gZmFsc2U7
Ci19IAorICAgICAgICBtX3BsYXRmb3JtUmVxdWVzdEJvZHlVcGRhdGVkID0gZmFsc2U7Cit9CiAK
IGJvb2wgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6YWxsb3dDb29raWVzKCkgY29uc3QKIHsKQEAgLTQ5
NCwyNCArNDk2LDM0IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6c2V0RGVmYXVsdFRpbWUK
ICAgICBzX2RlZmF1bHRUaW1lb3V0SW50ZXJ2YWwgPSB0aW1lb3V0SW50ZXJ2YWw7CiB9CiAKLXZv
aWQgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6dXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkgY29uc3QKLXsK
LSAgICBpZiAobV9wbGF0Zm9ybVJlcXVlc3RVcGRhdGVkKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBBU1NFUlQobV9yZXNvdXJjZVJlcXVlc3RVcGRhdGVkKTsKLSAgICBjb25zdF9jYXN0PFJlc291
cmNlUmVxdWVzdCY+KGFzUmVzb3VyY2VSZXF1ZXN0KCkpLmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0
KCk7Ci0gICAgbV9wbGF0Zm9ybVJlcXVlc3RVcGRhdGVkID0gdHJ1ZTsKLX0KLQotdm9pZCBSZXNv
dXJjZVJlcXVlc3RCYXNlOjp1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKSBjb25zdAordm9pZCBSZXNv
dXJjZVJlcXVlc3RCYXNlOjp1cGRhdGVQbGF0Zm9ybVJlcXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xp
Y3kgYm9keVBvbGljeSkgY29uc3QKIHsKLSAgICBpZiAobV9yZXNvdXJjZVJlcXVlc3RVcGRhdGVk
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBBU1NFUlQobV9wbGF0Zm9ybVJlcXVlc3RVcGRhdGVk
KTsKLSAgICBjb25zdF9jYXN0PFJlc291cmNlUmVxdWVzdCY+KGFzUmVzb3VyY2VSZXF1ZXN0KCkp
LmRvVXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7Ci0gICAgbV9yZXNvdXJjZVJlcXVlc3RVcGRhdGVk
ID0gdHJ1ZTsKKyAgICBpZiAoIW1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRlZCkgeworICAgICAgICBB
U1NFUlQobV9yZXNvdXJjZVJlcXVlc3RVcGRhdGVkKTsKKyAgICAgICAgY29uc3RfY2FzdDxSZXNv
dXJjZVJlcXVlc3QmPihhc1Jlc291cmNlUmVxdWVzdCgpKS5kb1VwZGF0ZVBsYXRmb3JtUmVxdWVz
dCgpOworICAgICAgICBtX3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQgPSB0cnVlOworICAgIH0KKwor
ICAgIGlmICghbV9wbGF0Zm9ybVJlcXVlc3RCb2R5VXBkYXRlZCAmJiBib2R5UG9saWN5ID09IFVw
ZGF0ZUhUVFBCb2R5KSB7CisgICAgICAgIEFTU0VSVChtX3Jlc291cmNlUmVxdWVzdEJvZHlVcGRh
dGVkKTsKKyAgICAgICAgY29uc3RfY2FzdDxSZXNvdXJjZVJlcXVlc3QmPihhc1Jlc291cmNlUmVx
dWVzdCgpKS5kb1VwZGF0ZVBsYXRmb3JtSFRUUEJvZHkoKTsKKyAgICAgICAgbV9wbGF0Zm9ybVJl
cXVlc3RCb2R5VXBkYXRlZCA9IHRydWU7CisgICAgfQorfQorCit2b2lkIFJlc291cmNlUmVxdWVz
dEJhc2U6OnVwZGF0ZVJlc291cmNlUmVxdWVzdChIVFRQQm9keVVwZGF0ZVBvbGljeSBib2R5UG9s
aWN5KSBjb25zdAoreworICAgIGlmICghbV9yZXNvdXJjZVJlcXVlc3RVcGRhdGVkKSB7CisgICAg
ICAgIEFTU0VSVChtX3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQpOworICAgICAgICBjb25zdF9jYXN0
PFJlc291cmNlUmVxdWVzdCY+KGFzUmVzb3VyY2VSZXF1ZXN0KCkpLmRvVXBkYXRlUmVzb3VyY2VS
ZXF1ZXN0KCk7CisgICAgICAgIG1fcmVzb3VyY2VSZXF1ZXN0VXBkYXRlZCA9IHRydWU7CisgICAg
fQorCisgICAgaWYgKCFtX3Jlc291cmNlUmVxdWVzdEJvZHlVcGRhdGVkICYmIGJvZHlQb2xpY3kg
PT0gVXBkYXRlSFRUUEJvZHkpIHsKKyAgICAgICAgQVNTRVJUKG1fcGxhdGZvcm1SZXF1ZXN0Qm9k
eVVwZGF0ZWQpOworICAgICAgICBjb25zdF9jYXN0PFJlc291cmNlUmVxdWVzdCY+KGFzUmVzb3Vy
Y2VSZXF1ZXN0KCkpLmRvVXBkYXRlUmVzb3VyY2VIVFRQQm9keSgpOworICAgICAgICBtX3Jlc291
cmNlUmVxdWVzdEJvZHlVcGRhdGVkID0gdHJ1ZTsKKyAgICB9CiB9CiAKICNpZiAhUExBVEZPUk0o
TUFDKSAmJiAhVVNFKENGTkVUV09SSykgJiYgIVVTRShTT1VQKSAmJiAhUExBVEZPUk0oQ0hST01J
VU0pICYmICFQTEFURk9STShRVCkgJiYgIVBMQVRGT1JNKEJMQUNLQkVSUlkpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJh
c2UuaAkocmV2aXNpb24gMTQ0MDY3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDExIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgUmV0dXJuQ2FjaGVEYXRhRG9udExvYWQgIC8v
IHJlc3VsdHMgb2YgYSBwb3N0IC0gYWxsb3cgc3RhbGUgZGF0YSBhbmQgb25seSB1c2UgY2FjaGUK
ICAgICB9OwogCisgICAgZW51bSBIVFRQQm9keVVwZGF0ZVBvbGljeSB7CisgICAgICAgIERvTm90
VXBkYXRlSFRUUEJvZHksCisgICAgICAgIFVwZGF0ZUhUVFBCb2R5CisgICAgfTsKKwogICAgIGNs
YXNzIFJlc291cmNlUmVxdWVzdDsKICAgICBzdHJ1Y3QgQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVl
c3REYXRhOwogCkBAIC0xNDIsNiArMTQ3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBSZXNvdXJjZVJlcXVlc3RCYXNlKCkKICAgICAgICAgICAgIDogbV9yZXNvdXJjZVJlcXVlc3RV
cGRhdGVkKGZhbHNlKQogICAgICAgICAgICAgLCBtX3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQodHJ1
ZSkKKyAgICAgICAgICAgICwgbV9yZXNvdXJjZVJlcXVlc3RCb2R5VXBkYXRlZChmYWxzZSkKKyAg
ICAgICAgICAgICwgbV9wbGF0Zm9ybVJlcXVlc3RCb2R5VXBkYXRlZCh0cnVlKQogICAgICAgICAg
ICAgLCBtX3JlcG9ydFVwbG9hZFByb2dyZXNzKGZhbHNlKQogICAgICAgICAgICAgLCBtX3JlcG9y
dExvYWRUaW1pbmcoZmFsc2UpCiAgICAgICAgICAgICAsIG1fcmVwb3J0UmF3SGVhZGVycyhmYWxz
ZSkKQEAgLTE1Nyw2ICsxNjQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAs
IG1fYWxsb3dDb29raWVzKHRydWUpCiAgICAgICAgICAgICAsIG1fcmVzb3VyY2VSZXF1ZXN0VXBk
YXRlZCh0cnVlKQogICAgICAgICAgICAgLCBtX3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQoZmFsc2Up
CisgICAgICAgICAgICAsIG1fcmVzb3VyY2VSZXF1ZXN0Qm9keVVwZGF0ZWQodHJ1ZSkKKyAgICAg
ICAgICAgICwgbV9wbGF0Zm9ybVJlcXVlc3RCb2R5VXBkYXRlZChmYWxzZSkKICAgICAgICAgICAg
ICwgbV9yZXBvcnRVcGxvYWRQcm9ncmVzcyhmYWxzZSkKICAgICAgICAgICAgICwgbV9yZXBvcnRM
b2FkVGltaW5nKGZhbHNlKQogICAgICAgICAgICAgLCBtX3JlcG9ydFJhd0hlYWRlcnMoZmFsc2Up
CkBAIC0xNjQsOCArMTczLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB7CiAgICAg
ICAgIH0KIAotICAgICAgICB2b2lkIHVwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpIGNvbnN0OyAKLSAg
ICAgICAgdm9pZCB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKSBjb25zdDsgCisgICAgICAgIHZvaWQg
dXBkYXRlUGxhdGZvcm1SZXF1ZXN0KEhUVFBCb2R5VXBkYXRlUG9saWN5ID0gRG9Ob3RVcGRhdGVI
VFRQQm9keSkgY29uc3Q7CisgICAgICAgIHZvaWQgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KEhUVFBC
b2R5VXBkYXRlUG9saWN5ID0gRG9Ob3RVcGRhdGVIVFRQQm9keSkgY29uc3Q7CiAKICAgICAgICAg
dm9pZCByZXBvcnRNZW1vcnlVc2FnZUJhc2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCkBA
IC0xODQsNiArMTkzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG1fYWxs
b3dDb29raWVzIDogMTsKICAgICAgICAgbXV0YWJsZSBib29sIG1fcmVzb3VyY2VSZXF1ZXN0VXBk
YXRlZCA6IDE7CiAgICAgICAgIG11dGFibGUgYm9vbCBtX3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQg
OiAxOworICAgICAgICBtdXRhYmxlIGJvb2wgbV9yZXNvdXJjZVJlcXVlc3RCb2R5VXBkYXRlZCA6
IDE7CisgICAgICAgIG11dGFibGUgYm9vbCBtX3BsYXRmb3JtUmVxdWVzdEJvZHlVcGRhdGVkIDog
MTsKICAgICAgICAgYm9vbCBtX3JlcG9ydFVwbG9hZFByb2dyZXNzIDogMTsKICAgICAgICAgYm9v
bCBtX3JlcG9ydExvYWRUaW1pbmcgOiAxOwogICAgICAgICBib29sIG1fcmVwb3J0UmF3SGVhZGVy
cyA6IDE7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkv
UmVzb3VyY2VSZXF1ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9ibGFja2JlcnJ5L1Jlc291cmNlUmVxdWVzdC5oCShyZXZpc2lvbiAxNDQwNjcpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvUmVzb3VyY2VSZXF1
ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNSw2ICsxMzUsOCBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCBkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpIHsgfQogICAgIHZvaWQgZG9VcGRhdGVSZXNv
dXJjZVJlcXVlc3QoKSB7IH0KKyAgICB2b2lkIGRvVXBkYXRlUGxhdGZvcm1IVFRQQm9keSgpIHsg
fQorICAgIHZvaWQgZG9VcGRhdGVSZXNvdXJjZUhUVFBCb2R5KCkgeyB9CiAKICAgICBQYXNzT3du
UHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4gZG9QbGF0Zm9ybUNvcHlEYXRhKFBh
c3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPikgY29uc3Q7CiAgICAgdm9p
ZCBkb1BsYXRmb3JtQWRvcHQoUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERh
dGE+KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFT
dHJlYW1DRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAkocmV2aXNpb24gMTQ0MDY3KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNiBAQAogZXh0ZXJuICJDIiB2b2lkIENGVVJMUmVx
dWVzdFNldEhUVFBSZXF1ZXN0Qm9keShDRk11dGFibGVVUkxSZXF1ZXN0UmVmIG11dGFibGVIVFRQ
UmVxdWVzdCwgQ0ZEYXRhUmVmIGh0dHBCb2R5KTsKIGV4dGVybiAiQyIgdm9pZCBDRlVSTFJlcXVl
c3RTZXRIVFRQSGVhZGVyRmllbGRWYWx1ZShDRk11dGFibGVVUkxSZXF1ZXN0UmVmIG11dGFibGVI
VFRQUmVxdWVzdCwgQ0ZTdHJpbmdSZWYgaHR0cEhlYWRlckZpZWxkLCBDRlN0cmluZ1JlZiBodHRw
SGVhZGVyRmllbGRWYWx1ZSk7CiBleHRlcm4gIkMiIHZvaWQgQ0ZVUkxSZXF1ZXN0U2V0SFRUUFJl
cXVlc3RCb2R5U3RyZWFtKENGTXV0YWJsZVVSTFJlcXVlc3RSZWYgcmVxLCBDRlJlYWRTdHJlYW1S
ZWYgYm9keVN0cmVhbSk7Ci1leHRlcm4gIkMiIENGUmVhZFN0cmVhbVJlZiBDRlVSTFJlcXVlc3RD
b3B5SFRUUFJlcXVlc3RCb2R5U3RyZWFtKENGVVJMUmVxdWVzdFJlZiByZXF1ZXN0KTsKICNlbGlm
IFBMQVRGT1JNKFdJTikKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxSZXF1ZXN0Lmg+CiAjZW5k
aWYKQEAgLTkwLDYgKzg5LDExIEBAIHN0YXRpYyB2b2lkIGZvcm1FdmVudENhbGxiYWNrKENGUmVh
ZFN0cmUKIAogc3RhdGljIENGU3RyaW5nUmVmIGZvcm1EYXRhUG9pbnRlclByb3BlcnR5TmFtZSA9
IENGU1RSKCJXZWJLaXRGb3JtRGF0YVBvaW50ZXIiKTsKIAorQ0ZTdHJpbmdSZWYgZm9ybURhdGFT
dHJlYW1MZW5ndGhQcm9wZXJ0eU5hbWUoKQoreworICAgIHJldHVybiBDRlNUUigiV2ViS2l0Rm9y
bURhdGFTdHJlYW1MZW5ndGgiKTsKK30KKwogc3RydWN0IEZvcm1DcmVhdGlvbkNvbnRleHQgewog
ICAgIFJlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGE7CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIHN0
cmVhbUxlbmd0aDsKQEAgLTMwNiwxMSArMzEwLDE1IEBAIHN0YXRpYyBDRlR5cGVSZWYgZm9ybUNv
cHlQcm9wZXJ0eShDRlJlYWQKIHsKICAgICBGb3JtU3RyZWFtRmllbGRzKiBmb3JtID0gc3RhdGlj
X2Nhc3Q8Rm9ybVN0cmVhbUZpZWxkcyo+KGNvbnRleHQpOwogCi0gICAgaWYgKGtDRkNvbXBhcmVF
cXVhbFRvICE9IENGU3RyaW5nQ29tcGFyZShwcm9wZXJ0eU5hbWUsIGZvcm1EYXRhUG9pbnRlclBy
b3BlcnR5TmFtZSwgMCkpCi0gICAgICAgIHJldHVybiAwOworICAgIGlmIChrQ0ZDb21wYXJlRXF1
YWxUbyA9PSBDRlN0cmluZ0NvbXBhcmUocHJvcGVydHlOYW1lLCBmb3JtRGF0YVBvaW50ZXJQcm9w
ZXJ0eU5hbWUsIDApKSB7CisgICAgICAgIGxvbmcgZm9ybURhdGFBc051bWJlciA9IHN0YXRpY19j
YXN0PGxvbmc+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGZvcm0tPmZvcm1EYXRhLmdldCgp
KSk7CisgICAgICAgIHJldHVybiBDRk51bWJlckNyZWF0ZSgwLCBrQ0ZOdW1iZXJMb25nVHlwZSwg
JmZvcm1EYXRhQXNOdW1iZXIpOworICAgIH0KKworICAgIGlmIChrQ0ZDb21wYXJlRXF1YWxUbyA9
PSBDRlN0cmluZ0NvbXBhcmUocHJvcGVydHlOYW1lLCBmb3JtRGF0YVN0cmVhbUxlbmd0aFByb3Bl
cnR5TmFtZSgpLCAwKSkKKyAgICAgICAgcmV0dXJuIENGU3RyaW5nQ3JlYXRlV2l0aEZvcm1hdCgw
LCAwLCBDRlNUUigiJWxsdSIpLCBmb3JtLT5zdHJlYW1MZW5ndGgpOwogCi0gICAgbG9uZyBmb3Jt
RGF0YUFzTnVtYmVyID0gc3RhdGljX2Nhc3Q8bG9uZz4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJf
dD4oZm9ybS0+Zm9ybURhdGEuZ2V0KCkpKTsKLSAgICByZXR1cm4gQ0ZOdW1iZXJDcmVhdGUoMCwg
a0NGTnVtYmVyTG9uZ1R5cGUsICZmb3JtRGF0YUFzTnVtYmVyKTsKKyAgICByZXR1cm4gMDsKIH0K
IAogc3RhdGljIHZvaWQgZm9ybVNjaGVkdWxlKENGUmVhZFN0cmVhbVJlZiwgQ0ZSdW5Mb29wUmVm
IHJ1bkxvb3AsIENGU3RyaW5nUmVmIHJ1bkxvb3BNb2RlLCB2b2lkKiBjb250ZXh0KQpAQCAtNDA1
LDEwICs0MTMsNiBAQCB2b2lkIHNldEhUVFBCb2R5KENGTXV0YWJsZVVSTFJlcXVlc3RSZWYgCiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICAvLyBTZXQgdGhlIGxlbmd0aC4KLSAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IGxlbmd0aFN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoRm9y
bWF0KDAsIDAsIENGU1RSKCIlbGxkIiksIGxlbmd0aCkpOwotICAgIENGVVJMUmVxdWVzdFNldEhU
VFBIZWFkZXJGaWVsZFZhbHVlKHJlcXVlc3QsIENGU1RSKCJDb250ZW50LUxlbmd0aCIpLCBsZW5n
dGhTdHJpbmcuZ2V0KCkpOwotCiAgICAgLy8gQ3JlYXRlIGFuZCBzZXQgdGhlIHN0cmVhbS4KIAog
ICAgIC8vIFBhc3MgdGhlIGxlbmd0aCBhbG9uZyB3aXRoIHRoZSBmb3JtRGF0YSBzbyBpdCBkb2Vz
IG5vdCBoYXZlIHRvIGJlIHJlY29tcHV0ZWQuCkBAIC00NDIsMTAgKzQ0Niw0IEBAIEZvcm1EYXRh
KiBodHRwQm9keUZyb21TdHJlYW0oQ0ZSZWFkU3RyZWEKICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxGb3JtRGF0YSo+KHN0YXRpY19jYXN0PGludHB0cl90Pihmb3JtRGF0YVBvaW50ZXJBc051
bWJlcikpOwogfQogCi1QYXNzUmVmUHRyPEZvcm1EYXRhPiBodHRwQm9keUZyb21SZXF1ZXN0KENG
VVJMUmVxdWVzdFJlZiByZXF1ZXN0KQotewotICAgIFJldGFpblB0cjxDRlJlYWRTdHJlYW1SZWY+
IGJvZHlTdHJlYW0gPSBhZG9wdENGKENGVVJMUmVxdWVzdENvcHlIVFRQUmVxdWVzdEJvZHlTdHJl
YW0ocmVxdWVzdCkpOwotICAgIHJldHVybiBodHRwQm9keUZyb21TdHJlYW0oYm9keVN0cmVhbS5n
ZXQoKSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5o
CShyZXZpc2lvbiAxNDQwNjcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTAgKzQwLDExIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZvcm1EYXRhOwogCiB2b2lkIHNldEhUVFBCb2R5
KENGTXV0YWJsZVVSTFJlcXVlc3RSZWYsIFBhc3NSZWZQdHI8Rm9ybURhdGE+KTsKLVBhc3NSZWZQ
dHI8Rm9ybURhdGE+IGh0dHBCb2R5RnJvbVJlcXVlc3QoQ0ZVUkxSZXF1ZXN0UmVmKTsKIAogRm9y
bURhdGEqIGh0dHBCb2R5RnJvbVN0cmVhbShDRlJlYWRTdHJlYW1SZWYpOwogCitDRlN0cmluZ1Jl
ZiBmb3JtRGF0YVN0cmVhbUxlbmd0aFByb3BlcnR5TmFtZSgpOworCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBGb3JtRGF0YVN0cmVhbUNGTmV0X2gKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRs
ZUNGTmV0LmNwcAkocmV2aXNpb24gMTQ0MDY3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTky
LDcgKzE5Miw3IEBAIHN0YXRpYyBDRlVSTFJlcXVlc3RSZWYgd2lsbFNlbmRSZXF1ZXN0KEMKICAg
ICBpZiAocmVxdWVzdC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBjZlJlcXVl
c3QgPSByZXF1ZXN0LmNmVVJMUmVxdWVzdCgpOworICAgIGNmUmVxdWVzdCA9IHJlcXVlc3QuY2ZV
UkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KTsKIAogICAgIENGUmV0YWluKGNmUmVxdWVzdCk7CiAg
ICAgcmV0dXJuIGNmUmVxdWVzdDsKQEAgLTIxOCw3ICsyMTgsNyBAQCBzdGF0aWMgdm9pZCBkaWRS
ZWNlaXZlUmVzcG9uc2UoQ0ZVUkxDb25uCiAgICAgaWYgKHN0YXR1c0NvZGUgIT0gMzA0KQogICAg
ICAgICBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KGNmUmVzcG9uc2UpOwogCi0gICAgaWYgKF9D
RlVSTFJlcXVlc3RDb3B5UHJvdG9jb2xQcm9wZXJ0eUZvcktleShoYW5kbGUtPmZpcnN0UmVxdWVz
dCgpLmNmVVJMUmVxdWVzdCgpLCBDRlNUUigiRm9yY2VIVE1MTUlNRVR5cGUiKSkpCisgICAgaWYg
KF9DRlVSTFJlcXVlc3RDb3B5UHJvdG9jb2xQcm9wZXJ0eUZvcktleShoYW5kbGUtPmZpcnN0UmVx
dWVzdCgpLmNmVVJMUmVxdWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5KSwgQ0ZTVFIoIkZvcmNlSFRN
TE1JTUVUeXBlIikpKQogICAgICAgICB3a1NldENGVVJMUmVzcG9uc2VNSU1FVHlwZShjZlJlc3Bv
bnNlLCBDRlNUUigidGV4dC9odG1sIikpOwogI2Vsc2UKICAgICBpZiAoIUNGVVJMUmVzcG9uc2VH
ZXRNSU1FVHlwZShjZlJlc3BvbnNlKSkgewpAQCAtNDI1LDcgKzQyNSw3IEBAIHZvaWQgUmVzb3Vy
Y2VIYW5kbGU6OmNyZWF0ZUNGVVJMQ29ubmVjdGkKICAgICAgICAgYXBwbHlCYXNpY0F1dGhvcml6
YXRpb25IZWFkZXIoZmlyc3RSZXF1ZXN0KCksIGQtPm1faW5pdGlhbENyZWRlbnRpYWwpOwogICAg
IH0KIAotICAgIFJldGFpblB0cjxDRk11dGFibGVVUkxSZXF1ZXN0UmVmPiByZXF1ZXN0ID0gYWRv
cHRDRihDRlVSTFJlcXVlc3RDcmVhdGVNdXRhYmxlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBm
aXJzdFJlcXVlc3QoKS5jZlVSTFJlcXVlc3QoKSkpOworICAgIFJldGFpblB0cjxDRk11dGFibGVV
UkxSZXF1ZXN0UmVmPiByZXF1ZXN0ID0gYWRvcHRDRihDRlVSTFJlcXVlc3RDcmVhdGVNdXRhYmxl
Q29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBmaXJzdFJlcXVlc3QoKS5jZlVSTFJlcXVlc3QoVXBk
YXRlSFRUUEJvZHkpKSk7CiAgICAgd2tTZXRSZXF1ZXN0U3RvcmFnZVNlc3Npb24oZC0+bV9zdG9y
YWdlU2Vzc2lvbi5nZXQoKSwgcmVxdWVzdC5nZXQoKSk7CiAgICAgCiAgICAgaWYgKCFzaG91bGRD
b250ZW50U25pZmYpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlUmVxdWVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0LmgJKHJldmlzaW9uIDE0NDA2NykKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTgwLDE4ICs4MCwyMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKICAgICAg
ICAgfQogCisgICAgICAgIHZvaWQgdXBkYXRlRnJvbURlbGVnYXRlUHJlc2VydmluZ09sZEhUVFBC
b2R5KENGVVJMUmVxdWVzdFJlZik7CiAKLSAgICAgICAgQ0ZVUkxSZXF1ZXN0UmVmIGNmVVJMUmVx
dWVzdCgpIGNvbnN0OworICAgICAgICBDRlVSTFJlcXVlc3RSZWYgY2ZVUkxSZXF1ZXN0KEhUVFBC
b2R5VXBkYXRlUG9saWN5KSBjb25zdDsKICNlbHNlCiAgICAgICAgIFJlc291cmNlUmVxdWVzdChO
U1VSTFJlcXVlc3QgKm5zUmVxdWVzdCkKICAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFz
ZSgpCi0gICAgICAgICAgICAsIG1fbnNSZXF1ZXN0KG5zUmVxdWVzdCkgeyB9CisgICAgICAgICAg
ICAsIG1fbnNSZXF1ZXN0KG5zUmVxdWVzdCkKKyAgICAgICAgeworICAgICAgICB9CiAKKyAgICAg
ICAgdm9pZCB1cGRhdGVGcm9tRGVsZWdhdGVQcmVzZXJ2aW5nT2xkSFRUUEJvZHkoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0Jik7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAgdm9p
ZCBhcHBseVdlYkFyY2hpdmVIYWNrRm9yTWFpbCgpOwotICAgICAgICBOU1VSTFJlcXVlc3QgKm5z
VVJMUmVxdWVzdCgpIGNvbnN0OworICAgICAgICBOU1VSTFJlcXVlc3QgKm5zVVJMUmVxdWVzdChI
VFRQQm9keVVwZGF0ZVBvbGljeSkgY29uc3Q7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDQUNIRV9Q
QVJUSVRJT05JTkcpCkBAIC0xMTUsNiArMTE5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAg
ICAgICAgIHZvaWQgZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QoKTsKICAgICAgICAgdm9pZCBkb1Vw
ZGF0ZVJlc291cmNlUmVxdWVzdCgpOworICAgICAgICB2b2lkIGRvVXBkYXRlUGxhdGZvcm1IVFRQ
Qm9keSgpOworICAgICAgICB2b2lkIGRvVXBkYXRlUmVzb3VyY2VIVFRQQm9keSgpOwogCiAgICAg
ICAgIFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPiBkb1BsYXRmb3Jt
Q29weURhdGEoUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+KSBjb25z
dDsKICAgICAgICAgdm9pZCBkb1BsYXRmb3JtQWRvcHQoUGFzc093blB0cjxDcm9zc1RocmVhZFJl
c291cmNlUmVxdWVzdERhdGE+KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwCShyZXZpc2lv
biAxNDQwNjcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
UmVxdWVzdENGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTksOSArOTksOSBAQCBzdGF0aWMg
Q0ZBcnJheVJlZiBjb3B5Q29udGVudERpc3Bvc2l0aW9uCiAgICAgcmV0dXJuIGZ1bmN0aW9uKHJl
cXVlc3QpOwogfQogCi1DRlVSTFJlcXVlc3RSZWYgUmVzb3VyY2VSZXF1ZXN0OjpjZlVSTFJlcXVl
c3QoKSBjb25zdAorQ0ZVUkxSZXF1ZXN0UmVmIFJlc291cmNlUmVxdWVzdDo6Y2ZVUkxSZXF1ZXN0
KEhUVFBCb2R5VXBkYXRlUG9saWN5IGJvZHlQb2xpY3kpIGNvbnN0CiB7Ci0gICAgdXBkYXRlUGxh
dGZvcm1SZXF1ZXN0KCk7CisgICAgdXBkYXRlUGxhdGZvcm1SZXF1ZXN0KGJvZHlQb2xpY3kpOwog
CiAgICAgcmV0dXJuIG1fY2ZSZXF1ZXN0LmdldCgpOwogfQpAQCAtMTQ2LDkgKzE0Niw3IEBAIHZv
aWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmUKICNlbmRpZgogCiAgICAgc2V0
SGVhZGVyRmllbGRzKGNmUmVxdWVzdCwgaHR0cEhlYWRlckZpZWxkcygpKTsKLSAgICBSZWZQdHI8
Rm9ybURhdGE+IGZvcm1EYXRhID0gaHR0cEJvZHkoKTsKLSAgICBpZiAoZm9ybURhdGEgJiYgIWZv
cm1EYXRhLT5pc0VtcHR5KCkpCi0gICAgICAgIFdlYkNvcmU6OnNldEhUVFBCb2R5KGNmUmVxdWVz
dCwgZm9ybURhdGEpOworCiAgICAgQ0ZVUkxSZXF1ZXN0U2V0U2hvdWxkSGFuZGxlSFRUUENvb2tp
ZXMoY2ZSZXF1ZXN0LCBhbGxvd0Nvb2tpZXMoKSk7CiAKICAgICB1bnNpZ25lZCBmYWxsYmFja0Nv
dW50ID0gbV9yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheS5z
aXplKCk7CkBAIC0xNzUsNiArMTczLDQyIEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0
ZVBsYXRmb3JtUmUKICNlbmRpZgogfQogCit2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQ
bGF0Zm9ybUhUVFBCb2R5KCkKK3sKKyAgICBDRk11dGFibGVVUkxSZXF1ZXN0UmVmIGNmUmVxdWVz
dDsKKworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gdXJsKEFkb3B0Q0YsIFJlc291cmNlUmVxdWVz
dDo6dXJsKCkuY3JlYXRlQ0ZVUkwoKSk7CisgICAgUmV0YWluUHRyPENGVVJMUmVmPiBmaXJzdFBh
cnR5Rm9yQ29va2llcyhBZG9wdENGLCBSZXNvdXJjZVJlcXVlc3Q6OmZpcnN0UGFydHlGb3JDb29r
aWVzKCkuY3JlYXRlQ0ZVUkwoKSk7CisgICAgaWYgKG1fY2ZSZXF1ZXN0KSB7CisgICAgICAgIGNm
UmVxdWVzdCA9IENGVVJMUmVxdWVzdENyZWF0ZU11dGFibGVDb3B5KDAsIG1fY2ZSZXF1ZXN0Lmdl
dCgpKTsKKyAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0VVJMKGNmUmVxdWVzdCwgdXJsLmdldCgpKTsK
KyAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0TWFpbkRvY3VtZW50VVJMKGNmUmVxdWVzdCwgZmlyc3RQ
YXJ0eUZvckNvb2tpZXMuZ2V0KCkpOworICAgICAgICBDRlVSTFJlcXVlc3RTZXRDYWNoZVBvbGlj
eShjZlJlcXVlc3QsIChDRlVSTFJlcXVlc3RDYWNoZVBvbGljeSljYWNoZVBvbGljeSgpKTsKKyAg
ICAgICAgQ0ZVUkxSZXF1ZXN0U2V0VGltZW91dEludGVydmFsKGNmUmVxdWVzdCwgdGltZW91dElu
dGVydmFsKCkpOworICAgIH0gZWxzZQorICAgICAgICBjZlJlcXVlc3QgPSBDRlVSTFJlcXVlc3RD
cmVhdGVNdXRhYmxlKDAsIHVybC5nZXQoKSwgKENGVVJMUmVxdWVzdENhY2hlUG9saWN5KWNhY2hl
UG9saWN5KCksIHRpbWVvdXRJbnRlcnZhbCgpLCBmaXJzdFBhcnR5Rm9yQ29va2llcy5nZXQoKSk7
CisKKyAgICBSZWZQdHI8Rm9ybURhdGE+IGZvcm1EYXRhID0gaHR0cEJvZHkoKTsKKyAgICBpZiAo
Zm9ybURhdGEgJiYgIWZvcm1EYXRhLT5pc0VtcHR5KCkpCisgICAgICAgIFdlYkNvcmU6OnNldEhU
VFBCb2R5KG5zUmVxdWVzdCwgZm9ybURhdGEpOworCisgICAgaWYgKFJldGFpblB0cjxDRlJlYWRT
dHJlYW1SZWY+IGJvZHlTdHJlYW0gPSBhZG9wdENGKENGVVJMUmVxdWVzdENvcHlIVFRQUmVxdWVz
dEJvZHlTdHJlYW0ocmVxdWVzdCkpKSB7CisgICAgICAgIC8vIEZvciBzdHJlYW1zLCBwcm92aWRl
IGEgQ29udGVudC1MZW5ndGggdG8gYXZvaWQgdXNpbmcgY2h1bmtlZCBlbmNvZGluZywgYW5kIHRv
IGdldCBhY2N1cmF0ZSB0b3RhbCBsZW5ndGggaW4gY2FsbGJhY2tzLgorICAgICAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IGxlbmd0aFN0cmluZyA9IGFkb3B0Q0YoQ0ZSZWFkU3RyZWFtQ29weVBy
b3BlcnR5KGJvZHlTdHJlYW0uZ2V0KCksIGZvcm1EYXRhU3RyZWFtTGVuZ3RoUHJvcGVydHlOYW1l
KCkpKTsKKyAgICAgICAgaWYgKGxlbmd0aFN0cmluZykgeworICAgICAgICAgICAgQ0ZVUkxSZXF1
ZXN0U2V0SFRUUEhlYWRlckZpZWxkVmFsdWUoY2ZSZXF1ZXN0LCBDRlNUUigiQ29udGVtdC1MZW5n
dGgiLCBsZW5ndGhTdHJpbmcuZ2V0KCkpKTsKKyAgICAgICAgICAgIC8vIFNpbmNlIHJlc291cmNl
IHJlcXVlc3QgaXMgYWxyZWFkeSBtYXJrZWQgdXBkYXRlZCwgd2UgbmVlZCB0byBrZWVwIGl0IHVw
IHRvIGRhdGUgdG9vLgorICAgICAgICAgICAgQVNTRVJUKG1fcmVzb3VyY2VSZXF1ZXN0VXBkYXRl
ZCk7CisgICAgICAgICAgICBtX2h0dHBIZWFkZXJGaWVsZHMuc2V0KCJDb250ZW50LUxlbmd0aCIs
IGxlbmd0aFN0cmluZy5nZXQoKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtX2NmUmVxdWVz
dC5hZG9wdENGKGNmUmVxdWVzdCk7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIHVwZGF0ZU5TVVJM
UmVxdWVzdCgpOworI2VuZGlmCit9CisKIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVJl
c291cmNlUmVxdWVzdCgpCiB7CiAgICAgaWYgKCFtX2NmUmVxdWVzdCkgewpAQCAtMjE3LDEwICsy
NTEsMjggQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUmVzb3VyY2VSZQogICAgICAg
ICAgICAgICAgIG1fcmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJy
YXkuYXBwZW5kKENGU3RyaW5nQ29udmVydEVuY29kaW5nVG9JQU5BQ2hhclNldE5hbWUoZW5jb2Rp
bmcpKTsKICAgICAgICAgfQogICAgIH0KK30KIAotICAgIG1faHR0cEJvZHkgPSBodHRwQm9keUZy
b21SZXF1ZXN0KG1fY2ZSZXF1ZXN0LmdldCgpKTsKK3ZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1Vw
ZGF0ZVJlc291cmNlSFRUUEJvZHkoKQoreworICAgIGlmICghbV9jZlJlcXVlc3QpIHsKKyAgICAg
ICAgbV9odHRwQm9keSA9IDA7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoUmV0
YWluUHRyPENGRGF0YVJlZj4gYm9keURhdGEgPSBhZG9wdENGKENGVVJMUmVxdWVzdENvcHlIVFRQ
UmVxdWVzdEJvZHkobV9jZlJlcXVlc3QuZ2V0KCkpKSkKKyAgICAgICAgbV9odHRwQm9keSA9IEZv
cm1EYXRhOjpjcmVhdGUoQ0ZEYXRhR2V0Qnl0ZVB0cihib2R5RGF0YS5nZXQoKSksIENGRGF0YUdl
dExlbmd0aChib2R5RGF0YS5nZXQoKSkpOworICAgIGVsc2UgaWYgKFJldGFpblB0cjxDRlJlYWRT
dHJlYW1SZWY+IGJvZHlTdHJlYW0gPSBhZG9wdENGKENGVVJMUmVxdWVzdENvcHlIVFRQUmVxdWVz
dEJvZHlTdHJlYW0ocmVxdWVzdCkpKSB7CisgICAgICAgIEZvcm1EYXRhKiBmb3JtRGF0YSA9IGh0
dHBCb2R5RnJvbVN0cmVhbShib2R5U3RyZWFtLmdldCgpKTsKKyAgICAgICAgLy8gVGhlcmUgaXMg
bm8gRm9ybURhdGEgb2JqZWN0IGlmIGEgY2xpZW50IHByb3ZpZGVkIGEgY3VzdG9tIGRhdGEgc3Ry
ZWFtLgorICAgICAgICAvLyBXZSBzaG91bGRuJ3QgYmUgbG9va2luZyBhdCBodHRwIGJvZHkgYWZ0
ZXIgY2xpZW50IGNhbGxiYWNrcy4KKyAgICAgICAgQVNTRVJUKGZvcm1EYXRhKTsKKyAgICAgICAg
aWYgKGZvcm1EYXRhKQorICAgICAgICAgICAgbV9odHRwQm9keSA9IGZvcm1EYXRhOworICAgIH0K
IH0KIAorCiB2b2lkIFJlc291cmNlUmVxdWVzdDo6c2V0U3RvcmFnZVNlc3Npb24oQ0ZVUkxTdG9y
YWdlU2Vzc2lvblJlZiBzdG9yYWdlU2Vzc2lvbikKIHsKICAgICB1cGRhdGVQbGF0Zm9ybVJlcXVl
c3QoKTsKQEAgLTIzNyw3ICsyODksNyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6c2V0U3RvcmFn
ZVNlc3Npb24oCiB2b2lkIFJlc291cmNlUmVxdWVzdDo6YXBwbHlXZWJBcmNoaXZlSGFja0Zvck1h
aWwoKQogewogICAgIC8vIEhhY2sgYmVjYXVzZSBNYWlsIGNoZWNrcyBmb3IgdGhpcyBwcm9wZXJ0
eSB0byBkZXRlY3QgZGF0YSAvIGFyY2hpdmUgbG9hZHMKLSAgICBfQ0ZVUkxSZXF1ZXN0U2V0UHJv
dG9jb2xQcm9wZXJ0eShjZlVSTFJlcXVlc3QoKSwgQ0ZTVFIoIldlYkRhdGFSZXF1ZXN0IiksIENG
U1RSKCIiKSk7CisgICAgX0NGVVJMUmVxdWVzdFNldFByb3RvY29sUHJvcGVydHkoY2ZVUkxSZXF1
ZXN0KERvTm90VXBkYXRlSFRUUEJvZHkpLCBDRlNUUigiV2ViRGF0YVJlcXVlc3QiKSwgQ0ZTVFIo
IiIpKTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2Nocm9taXVtL1Jlc291cmNlUmVxdWVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vUmVzb3VyY2VSZXF1ZXN0LmgJKHJldmlzaW9uIDE0
NDA2NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vUmVzb3Vy
Y2VSZXF1ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NSw4ICsxNDUsMTAgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBSZXNvdXJjZVJl
cXVlc3RCYXNlOwogCi0gICAgICAgIHZvaWQgZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QoKSB7fQot
ICAgICAgICB2b2lkIGRvVXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCkge30KKyAgICAgICAgdm9pZCBk
b1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpIHsgfQorICAgICAgICB2b2lkIGRvVXBkYXRlUmVzb3Vy
Y2VSZXF1ZXN0KCkgeyB9CisgICAgICAgIHZvaWQgZG9VcGRhdGVQbGF0Zm9ybUhUVFBCb2R5KCkg
eyB9CisgICAgICAgIHZvaWQgZG9VcGRhdGVSZXNvdXJjZUhUVFBCb2R5KCkgeyB9CiAKICAgICAg
ICAgUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IGRvUGxhdGZvcm1D
b3B5RGF0YShQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4pIGNvbnN0
OwogICAgICAgICB2b2lkIGRvUGxhdGZvcm1BZG9wdChQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVz
b3VyY2VSZXF1ZXN0RGF0YT4pOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL1Jlc291cmNlUmVxdWVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlcXVlc3QuaAkocmV2aXNpb24gMTQ0MDY3KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVxdWVzdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC02MSw2ICs2MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgewogICAgICAgICB9CiAKKyAgICAgICAgdm9pZCB1cGRhdGVGcm9tRGVsZWdhdGVQcmVz
ZXJ2aW5nT2xkSFRUUEJvZHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBkZWxlZ2F0ZVByb3ZpZGVk
UmVxdWVzdCkgeyAqdGhpcyA9IGRlbGVnYXRlUHJvdmlkZWRSZXF1ZXN0OyB9CisKICAgICAgICAg
Ly8gTmVlZGVkIGZvciBjb21wYXRpYmlsaXR5LgogICAgICAgICBDRlVSTFJlcXVlc3RSZWYgY2ZV
UkxSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gMDsgfQogCkBAIC03MSw4ICs3MywxMCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIFJlc291
cmNlUmVxdWVzdEJhc2U7CiAKLSAgICAgICAgdm9pZCBkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgp
IHt9Ci0gICAgICAgIHZvaWQgZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3QoKSB7fQorICAgICAgICB2
b2lkIGRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkgeyB9CisgICAgICAgIHZvaWQgZG9VcGRhdGVS
ZXNvdXJjZVJlcXVlc3QoKSB7IH0KKyAgICAgICAgdm9pZCBkb1VwZGF0ZVBsYXRmb3JtSFRUUEJv
ZHkoKSB7IH0KKyAgICAgICAgdm9pZCBkb1VwZGF0ZVJlc291cmNlSFRUUEJvZHkoKSB7IH0KIAog
ICAgICAgICBQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4gZG9QbGF0
Zm9ybUNvcHlEYXRhKFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPiBk
YXRhKSBjb25zdCB7IHJldHVybiBkYXRhOyB9CiAgICAgICAgIHZvaWQgZG9QbGF0Zm9ybUFkb3B0
KFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPikgeyB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRh
U3RyZWFtTWFjLmgJKHJldmlzaW9uIDE0NDA2NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYg
KzQzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHZvaWQgc2V0SFRUUEJvZHkoTlNNdXRh
YmxlVVJMUmVxdWVzdCAqLCBQYXNzUmVmUHRyPEZvcm1EYXRhPik7CiAgICAgRm9ybURhdGEqIGh0
dHBCb2R5RnJvbVN0cmVhbShOU0lucHV0U3RyZWFtICopOwogCisgICAgQ0ZTdHJpbmdSZWYgZm9y
bURhdGFTdHJlYW1MZW5ndGhQcm9wZXJ0eU5hbWUoKTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gIVVTRShDRk5FVFdPUkspCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQkocmV2
aXNpb24gMTQ0MDY3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVz
b3VyY2VIYW5kbGVNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTE3MSw3ICsxNzEsNyBAQCB2b2lk
IFJlc291cmNlSGFuZGxlOjpjcmVhdGVOU1VSTENvbm5lY3RpCiAgICAgICAgIGFwcGx5QmFzaWNB
dXRob3JpemF0aW9uSGVhZGVyKGZpcnN0UmVxdWVzdCgpLCBkLT5tX2luaXRpYWxDcmVkZW50aWFs
KTsKICAgICB9CiAKLSAgICBOU1VSTFJlcXVlc3QgKm5zUmVxdWVzdCA9IGZpcnN0UmVxdWVzdCgp
Lm5zVVJMUmVxdWVzdCgpOworICAgIE5TVVJMUmVxdWVzdCAqbnNSZXF1ZXN0ID0gZmlyc3RSZXF1
ZXN0KCkubnNVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KTsKICAgICBpZiAoIXNob3VsZENvbnRl
bnRTbmlmZikgewogICAgICAgICBOU011dGFibGVVUkxSZXF1ZXN0ICptdXRhYmxlUmVxdWVzdCA9
IFtbbnNSZXF1ZXN0IG11dGFibGVDb3B5XSBhdXRvcmVsZWFzZV07CiAgICAgICAgIHdrU2V0TlNV
UkxSZXF1ZXN0U2hvdWxkQ29udGVudFNuaWZmKG11dGFibGVSZXF1ZXN0LCBOTyk7CkBAIC0yNTEs
NyArMjUxLDcgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6c3RhcnQoKQogICAgIGVsc2UKICAgICAg
ICAgZC0+bV9zdGFydFdoZW5TY2hlZHVsZWQgPSB0cnVlOwogCi0gICAgTE9HKE5ldHdvcmssICJI
YW5kbGUgJXAgc3RhcnRpbmcgY29ubmVjdGlvbiAlcCBmb3IgJUAiLCB0aGlzLCBjb25uZWN0aW9u
KCksIGZpcnN0UmVxdWVzdCgpLm5zVVJMUmVxdWVzdCgpKTsKKyAgICBMT0coTmV0d29yaywgIkhh
bmRsZSAlcCBzdGFydGluZyBjb25uZWN0aW9uICVwIGZvciAlQCIsIHRoaXMsIGNvbm5lY3Rpb24o
KSwgZmlyc3RSZXF1ZXN0KCkubnNVUkxSZXF1ZXN0KERvTm90VXBkYXRlSFRUUEJvZHkpKTsKICAg
ICAKICAgICBpZiAoZC0+bV9jb25uZWN0aW9uKSB7CiAgICAgICAgIGlmIChkLT5tX2RlZmVyc0xv
YWRpbmcpCkBAIC0zNDUsNyArMzQ1LDcgQEAgQ0ZTdHJpbmdSZWYgUmVzb3VyY2VIYW5kbGU6OnN5
bmNocm9ub3VzTAogCiB2b2lkIFJlc291cmNlSGFuZGxlOjpwbGF0Zm9ybUxvYWRSZXNvdXJjZVN5
bmNocm9ub3VzbHkoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgU3RvcmVkQ3JlZGVudGlhbHMgc3RvcmVkQ3JlZGVudGlhbHMsIFJlc291
cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgVmVjdG9yPGNoYXI+
JiBkYXRhKQogewotICAgIExPRyhOZXR3b3JrLCAiUmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtTG9h
ZFJlc291cmNlU3luY2hyb25vdXNseTolQCBhbGxvd1N0b3JlZENyZWRlbnRpYWxzOiV1IiwgcmVx
dWVzdC5uc1VSTFJlcXVlc3QoKSwgc3RvcmVkQ3JlZGVudGlhbHMpOworICAgIExPRyhOZXR3b3Jr
LCAiUmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtTG9hZFJlc291cmNlU3luY2hyb25vdXNseTolQCBh
bGxvd1N0b3JlZENyZWRlbnRpYWxzOiV1IiwgcmVxdWVzdC5uc1VSTFJlcXVlc3QoRG9Ob3RVcGRh
dGVIVFRQQm9keSksIHN0b3JlZENyZWRlbnRpYWxzKTsKIAogICAgIE5TRXJyb3IgKm5zRXJyb3Ig
PSBuaWw7CiAgICAgTlNVUkxSZXNwb25zZSAqbnNVUkxSZXNwb25zZSA9IG5pbDsKQEAgLTY0Nyw3
ICs2NDcsNyBAQCAtIChOU1VSTFJlcXVlc3QgKiljb25uZWN0aW9uOihOU1VSTENvbm5lCiAKICAg
ICBtX2hhbmRsZS0+d2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwog
Ci0gICAgcmV0dXJuIHJlcXVlc3QubnNVUkxSZXF1ZXN0KCk7CisgICAgcmV0dXJuIHJlcXVlc3Qu
bnNVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KTsKIH0KIAogLSAoQk9PTCljb25uZWN0aW9uU2hv
dWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2U6KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24KQEAg
LTcxNiw3ICs3MTYsNyBAQCAtICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNv
CiAgICAgaWYgKHN0YXR1c0NvZGUgIT0gMzA0KQogICAgICAgICBhZGp1c3RNSU1FVHlwZUlmTmVj
ZXNzYXJ5KFtyIF9DRlVSTFJlc3BvbnNlXSk7CiAKLSAgICBpZiAoW21faGFuZGxlLT5maXJzdFJl
cXVlc3QoKS5uc1VSTFJlcXVlc3QoKSBfcHJvcGVydHlGb3JLZXk6QCJGb3JjZUhUTUxNSU1FVHlw
ZSJdKQorICAgIGlmIChbbV9oYW5kbGUtPmZpcnN0UmVxdWVzdCgpLm5zVVJMUmVxdWVzdChEb05v
dFVwZGF0ZUhUVFBCb2R5KSBfcHJvcGVydHlGb3JLZXk6QCJGb3JjZUhUTUxNSU1FVHlwZSJdKQog
ICAgICAgICBbciBfc2V0TUlNRVR5cGU6QCJ0ZXh0L2h0bWwiXTsKIAogICAgIG1faGFuZGxlLT5j
bGllbnQoKS0+ZGlkUmVjZWl2ZVJlc3BvbnNlKG1faGFuZGxlLCByKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVxdWVzdE1hYy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlcXVl
c3RNYWMubW0JKHJldmlzaW9uIDE0NDA2NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvbWFjL1Jlc291cmNlUmVxdWVzdE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDcsMTEg
KzQ3LDExIEBAIC0gKHZvaWQpc2V0Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWwKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1OU1VSTFJlcXVlc3QgKlJlc291cmNlUmVxdWVzdDo6bnNVUkxS
ZXF1ZXN0KCkgY29uc3QKLXsgCi0gICAgdXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCk7Ci0gICAgCi0g
ICAgcmV0dXJuIFtbbV9uc1JlcXVlc3QuZ2V0KCkgcmV0YWluXSBhdXRvcmVsZWFzZV07IAorTlNV
UkxSZXF1ZXN0ICpSZXNvdXJjZVJlcXVlc3Q6Om5zVVJMUmVxdWVzdChIVFRQQm9keVVwZGF0ZVBv
bGljeSBib2R5UG9saWN5KSBjb25zdAoreworICAgIHVwZGF0ZVBsYXRmb3JtUmVxdWVzdChib2R5
UG9saWN5KTsKKworICAgIHJldHVybiBbW21fbnNSZXF1ZXN0LmdldCgpIHJldGFpbl0gYXV0b3Jl
bGVhc2VdOwogfQogCiAjaWYgVVNFKENGTkVUV09SSykKQEAgLTEwNywxMiArMTA3LDYgQEAgdm9p
ZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUmVzb3VyY2VSZQogICAgICAgICB9CiAgICAgfQog
Ci0gICAgaWYgKE5TRGF0YSogYm9keURhdGEgPSBbbV9uc1JlcXVlc3QuZ2V0KCkgSFRUUEJvZHld
KQotICAgICAgICBtX2h0dHBCb2R5ID0gRm9ybURhdGE6OmNyZWF0ZShbYm9keURhdGEgYnl0ZXNd
LCBbYm9keURhdGEgbGVuZ3RoXSk7Ci0gICAgZWxzZSBpZiAoTlNJbnB1dFN0cmVhbSogYm9keVN0
cmVhbSA9IFttX25zUmVxdWVzdC5nZXQoKSBIVFRQQm9keVN0cmVhbV0pCi0gICAgICAgIGlmIChG
b3JtRGF0YSogZm9ybURhdGEgPSBodHRwQm9keUZyb21TdHJlYW0oYm9keVN0cmVhbSkpCi0gICAg
ICAgICAgICBtX2h0dHBCb2R5ID0gZm9ybURhdGE7Ci0KICNpZiBFTkFCTEUoQ0FDSEVfUEFSVElU
SU9OSU5HKQogICAgIE5TU3RyaW5nKiBjYWNoZVBhcnRpdGlvbiA9IFtOU1VSTFByb3RvY29sIHBy
b3BlcnR5Rm9yS2V5OihOU1N0cmluZyAqKXdrQ2FjaGVQYXJ0aXRpb25LZXkoKSBpblJlcXVlc3Q6
bV9uc1JlcXVlc3QuZ2V0KCldOwogICAgIGlmIChjYWNoZVBhcnRpdGlvbikKQEAgLTEyMCw2ICsx
MTQsMjAgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUmVzb3VyY2VSZQogI2VuZGlm
CiB9CiAKK3ZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVJlc291cmNlSFRUUEJvZHkoKQor
eworICAgIGlmIChOU0RhdGEqIGJvZHlEYXRhID0gW21fbnNSZXF1ZXN0LmdldCgpIEhUVFBCb2R5
XSkKKyAgICAgICAgbV9odHRwQm9keSA9IEZvcm1EYXRhOjpjcmVhdGUoW2JvZHlEYXRhIGJ5dGVz
XSwgW2JvZHlEYXRhIGxlbmd0aF0pOworICAgIGVsc2UgaWYgKE5TSW5wdXRTdHJlYW0qIGJvZHlT
dHJlYW0gPSBbbV9uc1JlcXVlc3QuZ2V0KCkgSFRUUEJvZHlTdHJlYW1dKSB7CisgICAgICAgIEZv
cm1EYXRhKiBmb3JtRGF0YSA9IGh0dHBCb2R5RnJvbVN0cmVhbShib2R5U3RyZWFtKTsKKyAgICAg
ICAgLy8gVGhlcmUgaXMgbm8gRm9ybURhdGEgb2JqZWN0IGlmIGEgY2xpZW50IHByb3ZpZGVkIGEg
Y3VzdG9tIGRhdGEgc3RyZWFtLgorICAgICAgICAvLyBXZSBzaG91bGRuJ3QgYmUgbG9va2luZyBh
dCBodHRwIGJvZHkgYWZ0ZXIgY2xpZW50IGNhbGxiYWNrcy4KKyAgICAgICAgQVNTRVJUKGZvcm1E
YXRhKTsKKyAgICAgICAgaWYgKGZvcm1EYXRhKQorICAgICAgICAgICAgbV9odHRwQm9keSA9IGZv
cm1EYXRhOworICAgIH0KK30KKwogdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZv
cm1SZXF1ZXN0KCkKIHsKICAgICBpZiAoaXNOdWxsKCkpIHsKQEAgLTEyNyw3ICsxMzUsNyBAQCB2
b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgCi0gICAgTlNNdXRhYmxlVVJMUmVxdWVzdCogbnNSZXF1ZXN0ID0gW21fbnNS
ZXF1ZXN0LmdldCgpIG11dGFibGVDb3B5XTsKKyAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpuc1Jl
cXVlc3QgPSBbbV9uc1JlcXVlc3QuZ2V0KCkgbXV0YWJsZUNvcHldOwogCiAgICAgaWYgKG5zUmVx
dWVzdCkKICAgICAgICAgW25zUmVxdWVzdCBzZXRVUkw6dXJsKCldOwpAQCAtMTc4LDIxICsxODYs
NTcgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZQogICAgICAgICBb
bnNSZXF1ZXN0IHNldENvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheTplbmNv
ZGluZ0ZhbGxiYWNrc107CiAgICAgfQogCisjaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykK
KyAgICBbTlNVUkxQcm90b2NvbCBzZXRQcm9wZXJ0eTptX2NhY2hlUGFydGl0aW9uIGZvcktleToo
TlNTdHJpbmcgKil3a0NhY2hlUGFydGl0aW9uS2V5KCkgaW5SZXF1ZXN0Om5zUmVxdWVzdF07Cisj
ZW5kaWYKKworICAgIG1fbnNSZXF1ZXN0LmFkb3B0TlMobnNSZXF1ZXN0KTsKK30KKwordm9pZCBS
ZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1IVFRQQm9keSgpCit7CisgICAgaWYgKGlz
TnVsbCgpKSB7CisgICAgICAgIEFTU0VSVCghbV9uc1JlcXVlc3QpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqbnNSZXF1ZXN0ID0gW21fbnNSZXF1
ZXN0LmdldCgpIG11dGFibGVDb3B5XTsKKworICAgIGlmIChuc1JlcXVlc3QpCisgICAgICAgIFtu
c1JlcXVlc3Qgc2V0VVJMOnVybCgpXTsKKyAgICBlbHNlCisgICAgICAgIG5zUmVxdWVzdCA9IFtb
TlNNdXRhYmxlVVJMUmVxdWVzdCBhbGxvY10gaW5pdFdpdGhVUkw6dXJsKCldOworCiAgICAgUmVm
UHRyPEZvcm1EYXRhPiBmb3JtRGF0YSA9IGh0dHBCb2R5KCk7CiAgICAgaWYgKGZvcm1EYXRhICYm
ICFmb3JtRGF0YS0+aXNFbXB0eSgpKQogICAgICAgICBXZWJDb3JlOjpzZXRIVFRQQm9keShuc1Jl
cXVlc3QsIGZvcm1EYXRhKTsKIAotI2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJT05JTkcpCi0gICAg
W05TVVJMUHJvdG9jb2wgc2V0UHJvcGVydHk6bV9jYWNoZVBhcnRpdGlvbiBmb3JLZXk6KE5TU3Ry
aW5nICopd2tDYWNoZVBhcnRpdGlvbktleSgpIGluUmVxdWVzdDpuc1JlcXVlc3RdOwotI2VuZGlm
CisgICAgaWYgKE5TSW5wdXRTdHJlYW0gKmJvZHlTdHJlYW0gPSBbbnNSZXF1ZXN0IEhUVFBCb2R5
U3RyZWFtXSkgeworICAgICAgICAvLyBGb3Igc3RyZWFtcywgcHJvdmlkZSBhIENvbnRlbnQtTGVu
Z3RoIHRvIGF2b2lkIHVzaW5nIGNodW5rZWQgZW5jb2RpbmcsIGFuZCB0byBnZXQgYWNjdXJhdGUg
dG90YWwgbGVuZ3RoIGluIGNhbGxiYWNrcy4KKyAgICAgICAgTlNTdHJpbmcgKmxlbmd0aFN0cmlu
ZyA9IFtib2R5U3RyZWFtIHByb3BlcnR5Rm9yS2V5OihOU1N0cmluZyAqKWZvcm1EYXRhU3RyZWFt
TGVuZ3RoUHJvcGVydHlOYW1lKCldOworICAgICAgICBpZiAobGVuZ3RoU3RyaW5nKSB7CisgICAg
ICAgICAgICBbbnNSZXF1ZXN0IHNldFZhbHVlOmxlbmd0aFN0cmluZyBmb3JIVFRQSGVhZGVyRmll
bGQ6QCJDb250ZW50LUxlbmd0aCJdOworICAgICAgICAgICAgLy8gU2luY2UgcmVzb3VyY2UgcmVx
dWVzdCBpcyBhbHJlYWR5IG1hcmtlZCB1cGRhdGVkLCB3ZSBuZWVkIHRvIGtlZXAgaXQgdXAgdG8g
ZGF0ZSB0b28uCisgICAgICAgICAgICBBU1NFUlQobV9yZXNvdXJjZVJlcXVlc3RVcGRhdGVkKTsK
KyAgICAgICAgICAgIG1faHR0cEhlYWRlckZpZWxkcy5zZXQoIkNvbnRlbnQtTGVuZ3RoIiwgbGVu
Z3RoU3RyaW5nKTsKKyAgICAgICAgfQorICAgIH0KIAogICAgIG1fbnNSZXF1ZXN0LmFkb3B0TlMo
bnNSZXF1ZXN0KTsKIH0KIAordm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZUZyb21EZWxlZ2F0
ZVByZXNlcnZpbmdPbGRIVFRQQm9keShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGRlbGVnYXRlUHJv
dmlkZWRSZXF1ZXN0KQoreworICAgIFJlZlB0cjxGb3JtRGF0YT4gb2xkSFRUUEJvZHkgPSBodHRw
Qm9keSgpOworCisgICAgKnRoaXMgPSBkZWxlZ2F0ZVByb3ZpZGVkUmVxdWVzdDsKKyAgICBzZXRI
VFRQQm9keShvbGRIVFRQQm9keS5yZWxlYXNlKCkpOworfQorCiB2b2lkIFJlc291cmNlUmVxdWVz
dDo6YXBwbHlXZWJBcmNoaXZlSGFja0Zvck1haWwoKQogewogICAgIC8vIEhhY2sgYmVjYXVzZSBN
YWlsIGNoZWNrcyBmb3IgdGhpcyBwcm9wZXJ0eSB0byBkZXRlY3QgZGF0YSAvIGFyY2hpdmUgbG9h
ZHMKLSAgICBbTlNVUkxQcm90b2NvbCBzZXRQcm9wZXJ0eTpAIiIgZm9yS2V5OkAiV2ViRGF0YVJl
cXVlc3QiIGluUmVxdWVzdDooTlNNdXRhYmxlVVJMUmVxdWVzdCAqKW5zVVJMUmVxdWVzdCgpXTsK
KyAgICBbTlNVUkxQcm90b2NvbCBzZXRQcm9wZXJ0eTpAIiIgZm9yS2V5OkAiV2ViRGF0YVJlcXVl
c3QiIGluUmVxdWVzdDooTlNNdXRhYmxlVVJMUmVxdWVzdCAqKW5zVVJMUmVxdWVzdChEb05vdFVw
ZGF0ZUhUVFBCb2R5KV07CiB9CiAKIHZvaWQgUmVzb3VyY2VSZXF1ZXN0OjpzZXRTdG9yYWdlU2Vz
c2lvbihDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uKQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9SZXNvdXJjZVJlcXVlc3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlUmVxdWVzdC5o
CShyZXZpc2lvbiAxNDQwNjcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0
L1Jlc291cmNlUmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSwxMyArNTksMTcgQEAgY2xh
c3MgTmV0d29ya2luZ0NvbnRleHQ7CiAgICAgICAgIHsKICAgICAgICAgfQogCisgICAgICAgIHZv
aWQgdXBkYXRlRnJvbURlbGVnYXRlUHJlc2VydmluZ09sZEhUVFBCb2R5KGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgZGVsZWdhdGVQcm92aWRlZFJlcXVlc3QpIHsgKnRoaXMgPSBkZWxlZ2F0ZVByb3Zp
ZGVkUmVxdWVzdDsgfQorCiAgICAgICAgIFFOZXR3b3JrUmVxdWVzdCB0b05ldHdvcmtSZXF1ZXN0
KE5ldHdvcmtpbmdDb250ZXh0KiA9IDApIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAg
ZnJpZW5kIGNsYXNzIFJlc291cmNlUmVxdWVzdEJhc2U7CiAKLSAgICAgICAgdm9pZCBkb1VwZGF0
ZVBsYXRmb3JtUmVxdWVzdCgpIHt9Ci0gICAgICAgIHZvaWQgZG9VcGRhdGVSZXNvdXJjZVJlcXVl
c3QoKSB7fQorICAgICAgICB2b2lkIGRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkgeyB9CisgICAg
ICAgIHZvaWQgZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3QoKSB7IH0KKyAgICAgICAgdm9pZCBkb1Vw
ZGF0ZVBsYXRmb3JtSFRUUEJvZHkoKSB7IH0KKyAgICAgICAgdm9pZCBkb1VwZGF0ZVJlc291cmNl
SFRUUEJvZHkoKSB7IH0KIAogICAgICAgICBQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VS
ZXF1ZXN0RGF0YT4gZG9QbGF0Zm9ybUNvcHlEYXRhKFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNv
dXJjZVJlcXVlc3REYXRhPiBkYXRhKSBjb25zdCB7IHJldHVybiBkYXRhOyB9CiAgICAgICAgIHZv
aWQgZG9QbGF0Zm9ybUFkb3B0KFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3RE
YXRhPikgeyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVz
b3VyY2VSZXF1ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdC5oCShyZXZpc2lvbiAxNDQwNjcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY3LDYgKzY3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAg
dXBkYXRlRnJvbVNvdXBNZXNzYWdlKHNvdXBNZXNzYWdlKTsKICAgICAgICAgfQogCisgICAgICAg
IHZvaWQgdXBkYXRlRnJvbURlbGVnYXRlUHJlc2VydmluZ09sZEhUVFBCb2R5KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgZGVsZWdhdGVQcm92aWRlZFJlcXVlc3QpIHsgKnRoaXMgPSBkZWxlZ2F0ZVBy
b3ZpZGVkUmVxdWVzdDsgfQorCiAgICAgICAgIHZvaWQgdXBkYXRlU291cE1lc3NhZ2UoU291cE1l
c3NhZ2UqKSBjb25zdDsKICAgICAgICAgU291cE1lc3NhZ2UqIHRvU291cE1lc3NhZ2UoKSBjb25z
dDsKICAgICAgICAgdm9pZCB1cGRhdGVGcm9tU291cE1lc3NhZ2UoU291cE1lc3NhZ2UqKTsKQEAg
LTgxLDggKzgzLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBTb3VwTWVzc2Fn
ZUZsYWdzIG1fc291cEZsYWdzOwogCi0gICAgICAgIHZvaWQgZG9VcGRhdGVQbGF0Zm9ybVJlcXVl
c3QoKSB7fTsKLSAgICAgICAgdm9pZCBkb1VwZGF0ZVJlc291cmNlUmVxdWVzdCgpIHt9OworICAg
ICAgICB2b2lkIGRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkgeyB9CisgICAgICAgIHZvaWQgZG9V
cGRhdGVSZXNvdXJjZVJlcXVlc3QoKSB7IH0KKyAgICAgICAgdm9pZCBkb1VwZGF0ZVBsYXRmb3Jt
SFRUUEJvZHkoKSB7IH0KKyAgICAgICAgdm9pZCBkb1VwZGF0ZVJlc291cmNlSFRUUEJvZHkoKSB7
IH0KIAogICAgICAgICBQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4g
ZG9QbGF0Zm9ybUNvcHlEYXRhKFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3RE
YXRhPiBkYXRhKSBjb25zdCB7IHJldHVybiBkYXRhOyB9CiAgICAgICAgIHZvaWQgZG9QbGF0Zm9y
bUFkb3B0KFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPikgeyB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNvdXJjZVJlcXVlc3Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNv
dXJjZVJlcXVlc3QuaAkocmV2aXNpb24gMTQ0MDY3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay93aW4vUmVzb3VyY2VSZXF1ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDYg
KzU4LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QoKSB7
IH0KICAgICB2b2lkIGRvVXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCkgeyB9CisgICAgdm9pZCBkb1Vw
ZGF0ZVBsYXRmb3JtSFRUUEJvZHkoKSB7IH0KKyAgICB2b2lkIGRvVXBkYXRlUmVzb3VyY2VIVFRQ
Qm9keSgpIHsgfQogCiAgICAgUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERh
dGE+IGRvUGxhdGZvcm1Db3B5RGF0YShQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1
ZXN0RGF0YT4gZGF0YSkgY29uc3QgeyByZXR1cm4gZGF0YTsgfQogICAgIHZvaWQgZG9QbGF0Zm9y
bUFkb3B0KFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPikgeyB9Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDQxMTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNiBAQAorMjAxMy0wMi0yNiAgQWxleGV5IFBy
b3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KKworICAgICAgICBEb24ndCBhZGQgYSBib2R5IHRv
IHBsYXRmb3JtIHJlcXVlc3QgdW50aWwgbmVjZXNzYXJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA5MDAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2ls
bFNlbmRSZXF1ZXN0KTogUmVzdG9yZSBib2R5IGFmdGVyIElQQy4gVGhlcmUKKyAgICAgICAgaXMg
bm8gd2F5IGZvciB0aGUgY2xpZW50IHRvIGNoYW5nZSBpdC4KKworICAgICAgICAqIFNoYXJlZC9E
b3dubG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6
c3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6c3RhcnRXaXRoSGFuZGxlKToKKyAg
ICAgICAgUGFzcyBVcGRhdGVIVFRQQm9keSB3aGVuIHBhc3NpbmcgYSByZXF1ZXN0IHRvIE5TVVJM
Q29ubmVjdGlvbi4KKworICAgICAgICAqIFNoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
TWFjLm1tOiAoQ29yZUlQQzo6OjplbmNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICBOZXZlciBz
ZXJpYWxpemUgdGhlIHJlcXVlc3QgYm9keS4gSXQncyBzbG93LCBhbmQgc29tZXRpbWVzIGltcG9z
c2libGUsIHNvIGp1c3QKKyAgICAgICAga2VlcGluZyB0aGluZ3MgY29uc2lzdGVudC4KKworICAg
ICAgICAqIFNoYXJlZC9tYWMvV2ViVVJMUmVxdWVzdE1hYy5tbTogKFdlYktpdDo6V2ViVVJMUmVx
dWVzdDo6cGxhdGZvcm1SZXF1ZXN0KToKKyAgICAgICAgUGFzcyBEb05vdFVwZGF0ZUhUVFBCb2R5
LCBhcyB3ZSBjYW4ndCB1cGRhdGUgaXQgb3V0c2lkZSBOZXR3b3JrUHJvY2Vzcy4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xN
YW5hZ2VyUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdl
clByb3h5OjpzdGFydExvYWRpbmcpOiBEaXR0by4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50Ojp3aWxs
U2VuZFJlcXVlc3RGb3JGcmFtZSk6CisgICAgICAgIFJlc3RvcmUgZXhpc3RpbmcgYm9keSBhZnRl
ciBhIGNsaWVudCBjYWxsLi4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2Vi
UGFnZU1hYy5tbTogKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1DYW5IYW5kbGVSZXF1ZXN0KToK
KyAgICAgICAgUGFzcyBEb05vdFVwZGF0ZUhUVFBCb2R5LCBhcyB3ZSBjYW4ndCB1cGRhdGUgaXQg
b3V0c2lkZSBOZXR3b3JrUHJvY2Vzcy4KKwogMjAxMy0wMi0yNiAgQW5kZXJzIENhcmxzc29uICA8
YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBhIGNvcHkvcGFzdGUgZXJyb3IgaW4g
V2ViTG9hZGVyQ2xpZW50OjpkaWRCbG9ja0luc2VjdXJlUGx1Z2luVmVyc2lvbgpJbmRleDogU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwCShyZXZpc2lvbiAxNDQwNjcpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODksNyAr
MTg5LDEwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXUKICAgICAv
LyBJZiB0aGlzIG1lc3NhZ2UgY2hhbmdlcyB0byBiZSBhc3luY2hyb25vdXMgd2UgbWlnaHQgaW50
cm9kdWNlIGEgc2l0dWF0aW9uIHdoZXJlIHRoZSBOZXR3b3JrUHJvY2VzcyBpcyBkZWFkbG9ja2Vk
IHdhaXRpbmcgZm9yIDYgY29ubmVjdGlvbnMKICAgICAvLyB0byBjb21wbGV0ZSB3aGlsZSB0aGUg
V2ViUHJvY2VzcyBpcyB3YWl0aW5nIGZvciBhIDd0aCB0byBjb21wbGV0ZS4KICAgICAvLyBJZiB3
ZSBldmVyIGNoYW5nZSB0aGlzIG1lc3NhZ2UgdG8gYmUgYXN5bmNocm9ub3VzIHdlIGhhdmUgdG8g
aW5jbHVkZSBzYWZlZ3VhcmRzIHRvIG1ha2Ugc3VyZSB0aGUgbmV3IGRlc2lnbiBpbnRlcmFjdHMg
d2VsbCB3aXRoIHN5bmMgWEhSLgotICAgIGlmICghc2VuZFN5bmMoTWVzc2FnZXM6OldlYlJlc291
cmNlTG9hZGVyOjpXaWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSksIE1l
c3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6V2lsbFNlbmRSZXF1ZXN0OjpSZXBseShyZXF1ZXN0
KSkpCisgICAgUmVzb3VyY2VSZXF1ZXN0IHJldHVybmVkUmVxdWVzdDsKKyAgICBpZiAoc2VuZFN5
bmMoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpXaWxsU2VuZFJlcXVlc3QocmVxdWVzdCwg
cmVkaXJlY3RSZXNwb25zZSksIE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6V2lsbFNlbmRS
ZXF1ZXN0OjpSZXBseShyZXR1cm5lZFJlcXVlc3QpKSkKKyAgICAgICAgcmVxdWVzdC51cGRhdGVG
cm9tRGVsZWdhdGVQcmVzZXJ2aW5nT2xkSFRUUEJvZHkocmV0dXJuZWRSZXF1ZXN0Lm5zVVJMUmVx
dWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5KSk7CisgICAgZWxzZQogICAgICAgICByZXF1ZXN0ID0g
UmVzb3VyY2VSZXF1ZXN0KCk7CiAKICAgICBSdW5Mb29wOjptYWluKCktPmRpc3BhdGNoKGJpbmQo
Jk5ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnJlY2VpdmVkUmVkaXJlY3QsICZOZXR3b3Jr
UHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlcigpLCB0aGlzLCBy
ZXF1ZXN0LnVybCgpKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL21h
Yy9Eb3dubG9hZE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93
bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5tbQkocmV2aXNpb24gMTQ0MDY3KQorKysgU291cmNlL1dl
YktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW0JKHdvcmtpbmcgY29weSkK
QEAgLTU5LDcgKzU5LDcgQEAgdm9pZCBEb3dubG9hZDo6c3RhcnQoKQogICAgIEFTU0VSVCghbV9k
ZWxlZ2F0ZSk7CiAKICAgICBtX2RlbGVnYXRlLmFkb3B0TlMoW1tXS0Rvd25sb2FkQXNEZWxlZ2F0
ZSBhbGxvY10gaW5pdFdpdGhEb3dubG9hZDp0aGlzXSk7Ci0gICAgbV9uc1VSTERvd25sb2FkLmFk
b3B0TlMoW1tOU1VSTERvd25sb2FkIGFsbG9jXSBpbml0V2l0aFJlcXVlc3Q6bV9yZXF1ZXN0Lm5z
VVJMUmVxdWVzdCgpIGRlbGVnYXRlOm1fZGVsZWdhdGUuZ2V0KCldKTsKKyAgICBtX25zVVJMRG93
bmxvYWQuYWRvcHROUyhbW05TVVJMRG93bmxvYWQgYWxsb2NdIGluaXRXaXRoUmVxdWVzdDptX3Jl
cXVlc3QubnNVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KSBkZWxlZ2F0ZTptX2RlbGVnYXRlLmdl
dCgpXSk7CiAKICAgICAvLyBGSVhNRTogQWxsb3cgdGhpcyB0byBiZSBjaGFuZ2VkIGJ5IHRoZSBj
bGllbnQuCiAgICAgW21fbnNVUkxEb3dubG9hZC5nZXQoKSBzZXREZWxldGVzRmlsZVVwb25GYWls
dXJlOk5PXTsKQEAgLTc1LDcgKzc1LDcgQEAgdm9pZCBEb3dubG9hZDo6c3RhcnRXaXRoSGFuZGxl
KFJlc291cmNlSAogCiAgICAgbV9kZWxlZ2F0ZS5hZG9wdE5TKFtbV0tEb3dubG9hZEFzRGVsZWdh
dGUgYWxsb2NdIGluaXRXaXRoRG93bmxvYWQ6dGhpc10pOwogICAgIG1fbnNVUkxEb3dubG9hZCA9
IFtOU1VSTERvd25sb2FkIF9kb3dubG9hZFdpdGhMb2FkaW5nQ29ubmVjdGlvbjpoYW5kbGUtPmNv
bm5lY3Rpb24oKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVxdWVzdDptX3JlcXVlc3QubnNVUkxSZXF1ZXN0KCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVl
c3Q6bV9yZXF1ZXN0Lm5zVVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSkKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2U6cmVz
cG9uc2UubnNVUkxSZXNwb25zZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxlZ2F0ZTptX2RlbGVnYXRlLmdldCgpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwcm94eTpwcm94eV07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYkNvcmVB
cmd1bWVudENvZGVyc01hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
bWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQkocmV2aXNpb24gMTQ0MDY3KQorKysgU291
cmNlL1dlYktpdDIvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0JKHdvcmtp
bmcgY29weSkKQEAgLTQwLDEzICs0MCwyMyBAQCBuYW1lc3BhY2UgQ29yZUlQQyB7CiAKIHZvaWQg
QXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjplbmNvZGVQbGF0Zm9ybURhdGEoQXJndW1l
bnRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVz
dCkKIHsKLSAgICBib29sIHJlcXVlc3RJc1ByZXNlbnQgPSByZXNvdXJjZVJlcXVlc3QubnNVUkxS
ZXF1ZXN0KCk7CisgICAgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gcmVxdWVzdFRvU2VyaWFsaXpl
ID0gcmVzb3VyY2VSZXF1ZXN0Lm5zVVJMUmVxdWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5KTsKKwor
ICAgIGJvb2wgcmVxdWVzdElzUHJlc2VudCA9IHJlcXVlc3RUb1NlcmlhbGl6ZTsKICAgICBlbmNv
ZGVyIDw8IHJlcXVlc3RJc1ByZXNlbnQ7CiAKICAgICBpZiAoIXJlcXVlc3RJc1ByZXNlbnQpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGRpY3Rpb25h
cnkoQWRvcHRDRiwgV0tOU1VSTFJlcXVlc3RDcmVhdGVTZXJpYWxpemFibGVSZXByZXNlbnRhdGlv
bihyZXNvdXJjZVJlcXVlc3QubnNVUkxSZXF1ZXN0KCksIENvcmVJUEM6OnRva2VuTnVsbFR5cGVS
ZWYoKSkpOworICAgIC8vIFdlIGRvbid0IHNlbmQgSFRUUCBib2R5IG92ZXIgSVBDIGZvciBiZXR0
ZXIgcGVyZm9ybWFuY2UuCisgICAgLy8gQWxzbywgaXQncyBub3QgYWx3YXlzIHBvc3NpYmxlIHRv
IGRvLCBhcyBzdHJlYW1zIGNhbiBvbmx5IGJlIGNyZWF0ZWQgaW4gcHJvY2VzcyB0aGF0IGRvZXMg
bmV0d29ya2luZy4KKyAgICBpZiAoW3JlcXVlc3RUb1NlcmlhbGl6ZS5nZXQoKSBIVFRQQm9keV0g
fHwgW3JlcXVlc3RUb1NlcmlhbGl6ZS5nZXQoKSBIVFRQQm9keVN0cmVhbV0pIHsKKyAgICAgICAg
cmVxdWVzdFRvU2VyaWFsaXplLmFkb3B0TlMoW3JlcXVlc3RUb1NlcmlhbGl6ZS5nZXQoKSBtdXRh
YmxlQ29weV0pOworICAgICAgICBbKE5TTXV0YWJsZVVSTFJlcXVlc3QgKilyZXF1ZXN0VG9TZXJp
YWxpemUuZ2V0KCkgc2V0SFRUUEJvZHk6bmlsXTsKKyAgICAgICAgWyhOU011dGFibGVVUkxSZXF1
ZXN0ICopcmVxdWVzdFRvU2VyaWFsaXplLmdldCgpIHNldEhUVFBCb2R5U3RyZWFtOm5pbF07Cisg
ICAgfQorCisgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gZGljdGlvbmFyeShBZG9wdENG
LCBXS05TVVJMUmVxdWVzdENyZWF0ZVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uKHJlcXVlc3RU
b1NlcmlhbGl6ZS5nZXQoKSwgQ29yZUlQQzo6dG9rZW5OdWxsVHlwZVJlZigpKSk7CiAgICAgQ29y
ZUlQQzo6ZW5jb2RlKGVuY29kZXIsIGRpY3Rpb25hcnkuZ2V0KCkpOwogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYlVSTFJlcXVlc3RNYWMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9XZWJVUkxSZXF1ZXN0TWFjLm1tCShyZXZpc2lvbiAx
NDQwNjcpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYlVSTFJlcXVlc3RNYWMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDggQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2lt
cG9ydCAiV2ViVVJMUmVxdWVzdC5oIgogCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIFdlYlVSTFJlcXVlc3Q6OldlYlVSTFJlcXVlc3QoUGxhdGZvcm1S
ZXF1ZXN0IHBsYXRmb3JtUmVxdWVzdCkKQEAgLTM1LDcgKzM3LDcgQEAgV2ViVVJMUmVxdWVzdDo6
V2ViVVJMUmVxdWVzdChQbGF0Zm9ybVJlcQogCiBQbGF0Zm9ybVJlcXVlc3QgV2ViVVJMUmVxdWVz
dDo6cGxhdGZvcm1SZXF1ZXN0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9yZXF1ZXN0Lm5zVVJM
UmVxdWVzdCgpOworICAgIHJldHVybiBtX3JlcXVlc3QubnNVUkxSZXF1ZXN0KERvTm90VXBkYXRl
SFRUUEJvZHkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xN
YW5hZ2VyUHJveHlNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1h
Yy5tbQkocmV2aXNpb24gMTQ0MDY3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdv
cmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1hYy5tbQko
d29ya2luZyBjb3B5KQpAQCAtMTMxLDcgKzEzMSw3IEBAIEN1c3RvbVByb3RvY29sTWFuYWdlclBy
b3h5OjpDdXN0b21Qcm90b2MKIAogdm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6c3Rh
cnRMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgY29yZVJlcXVlc3QpCiB7Ci0gICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gY29yZVJlcXVl
c3QubnNVUkxSZXF1ZXN0KCk7CisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gY29yZVJlcXVl
c3QubnNVUkxSZXF1ZXN0KERvTm90VXBkYXRlSFRUUEJvZHkpOwogICAgIGlmICghcmVxdWVzdCkK
ICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQuY3BwCShyZXZpc2lvbiAxNDQwNjcpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZVJlc291cmNlTG9hZENsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAg
dm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbgogCiAgICAgUmVmUHRyPFdl
YlVSTFJlcXVlc3Q+IHJldHVybmVkUmVxdWVzdCA9IGFkb3B0UmVmKHRvSW1wbChtX2NsaWVudC53
aWxsU2VuZFJlcXVlc3RGb3JGcmFtZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCBpZGVudGlm
aWVyLCB0b0FQSShyZXF1ZXN0KSwgdG9BUEkocmVkaXJlY3RSZXNwb25zZSksIG1fY2xpZW50LmNs
aWVudEluZm8pKSk7CiAgICAgaWYgKHJldHVybmVkUmVxdWVzdCkKLSAgICAgICAgcmVxdWVzdCA9
IHJldHVybmVkUmVxdWVzdC0+cmVzb3VyY2VSZXF1ZXN0KCk7CisgICAgICAgIHJlcXVlc3QudXBk
YXRlRnJvbURlbGVnYXRlUHJlc2VydmluZ09sZEhUVFBCb2R5KHJldHVybmVkUmVxdWVzdC0+cmVz
b3VyY2VSZXF1ZXN0KCkubnNVUkxSZXF1ZXN0KERvTm90VXBkYXRlSFRUUEJvZHkpKTsKICAgICBl
bHNlCiAgICAgICAgIHJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QoKTsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0J
KHJldmlzaW9uIDE0NDA2NykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvV2ViUGFnZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNzI1LDcgKzcyNSw3IEBAIFBhc3NS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBXZWJQYWdlOjpjYWNoZWQKIAogYm9vbCBXZWJQYWdlOjpwbGF0
Zm9ybUNhbkhhbmRsZVJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KQogewotICAgIGlmIChbTlNVUkxDb25uZWN0aW9uIGNhbkhhbmRsZVJlcXVlc3Q6cmVxdWVz
dC5uc1VSTFJlcXVlc3QoKV0pCisgICAgaWYgKFtOU1VSTENvbm5lY3Rpb24gY2FuSGFuZGxlUmVx
dWVzdDpyZXF1ZXN0Lm5zVVJMUmVxdWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5KV0pCiAgICAgICAg
IHJldHVybiB0cnVlOwogCiAgICAgLy8gRklYTUU6IFJldHVybiB0cnVlIGlmIHRoaXMgc2NoZW1l
IGlzIGFueSBvbmUgV2ViS2l0MiBrbm93cyBob3cgdG8gaGFuZGxlLgpJbmRleDogU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwkocmV2aXNpb24gMTQ0MTE2KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjggQEAKKzIwMTMtMDItMjYgIEFsZXhleSBQcm9za3Vy
eWFrb3YgIDxhcEBhcHBsZS5jb20+CisKKyAgICAgICAgRG9uJ3QgYWRkIGEgYm9keSB0byBwbGF0
Zm9ybSByZXF1ZXN0IHVudGlsIG5lY2Vzc2FyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwOTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2ViS2l0MSBiZWhhdmlvciBpcyB1bmNoYW5nZWQsIGJvZHkg
aXMgYWRkZWQgb24gZXZlcnkgY29udmVyc2lvbi4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZCk6CisgICAgICAgIChXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUpOgorICAg
ICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1
ZXN0KToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxTZW5kUmVx
dWVzdCk6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xp
Y3lGb3JSZXNwb25zZSk6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24pOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAg
IChXZWJGcmFtZUxvYWRlckNsaWVudDo6dXBkYXRlR2xvYmFsSGlzdG9yeSk6CisgICAgICAgIChX
ZWJGcmFtZUxvYWRlckNsaWVudDo6Y2FuSGFuZGxlUmVxdWVzdCk6CisgICAgICAgICogV2ViVmll
dy9XZWJEYXRhU291cmNlLm1tOgorICAgICAgICAoLVtXZWJEYXRhU291cmNlIGluaXRpYWxSZXF1
ZXN0XSk6CisgICAgICAgICgtW1dlYkRhdGFTb3VyY2UgcmVxdWVzdF0pOgorICAgICAgICAqIFdl
YlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9sb2FkRGF0YTpNSU1FVHlw
ZTp0ZXh0RW5jb2RpbmdOYW1lOmJhc2VVUkw6dW5yZWFjaGFibGVVUkw6XSk6CisKIDIwMTMtMDIt
MjYgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCBidWlsZCBmaXg7IHVzZSBjb3JyZWN0IG1hY3JvIGZvciBwbGF0Zm9ybSBuYW1lIGluIEZlYXR1
cmVEZWZpbmVzLnhjY29uZmlnLgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHJldmlzaW9uIDE0NDA2
NykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yODIsNyArMjgyLDcgQEAgdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6Y29udmVydE1haW5SZQogICAgIFdlYlZpZXcgKndlYlZpZXcgPSBnZXRXZWJW
aWV3KG1fd2ViRnJhbWUuZ2V0KCkpOwogICAgIENGVVJMQ29ubmVjdGlvblJlZiBjb25uZWN0aW9u
ID0gaGFuZGxlLT5jb25uZWN0aW9uKCk7CiAgICAgW1dlYkRvd25sb2FkIF9kb3dubG9hZFdpdGhM
b2FkaW5nQ0ZVUkxDb25uZWN0aW9uOmNvbm5lY3Rpb24KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Q6cmVx
dWVzdC5jZlVSTFJlcXVlc3QoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdDpyZXF1ZXN0LmNmVVJMUmVx
dWVzdChVcGRhdGVIVFRQQm9keSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2U6cmVzcG9uc2UuY2ZVUkxS
ZXNwb25zZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRlbGVnYXRlOlt3ZWJWaWV3IGRvd25sb2FkRGVsZWdhdGVd
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHByb3h5Om5pbF07CkBAIC0yOTYsNyArMjk2LDcgQEAgdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6Y29udmVydE1haW5SZQogICAgIAogICAgIFdlYlZpZXcgKndlYlZp
ZXcgPSBnZXRXZWJWaWV3KG1fd2ViRnJhbWUuZ2V0KCkpOwogICAgIFtXZWJEb3dubG9hZCBfZG93
bmxvYWRXaXRoTG9hZGluZ0Nvbm5lY3Rpb246aGFuZGxlLT5jb25uZWN0aW9uKCkKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXF1ZXN0OnJlcXVlc3QubnNVUkxSZXF1ZXN0KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0OnJlcXVlc3QubnNV
UkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2U6cmVzcG9uc2UubnNVUkxS
ZXNwb25zZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkZWxlZ2F0ZTpbd2ViVmlldyBkb3dubG9hZERlbGVnYXRlXQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHJveHk6cHJveHldOwpAQCAtMzEyLDcgKzMxMiw3IEBAIGJvb2wgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGlkTG8KICAgICBpZiAoIWltcGxlbWVudGF0aW9ucy0+ZGlkTG9h
ZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlRnVuYykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgQ2FsbFJlc291cmNlTG9hZERlbGVnYXRlKGltcGxlbWVudGF0aW9ucy0+ZGlkTG9hZFJlc291
cmNlRnJvbU1lbW9yeUNhY2hlRnVuYywgd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6ZGlkTG9h
ZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlOnJlc3BvbnNlOmxlbmd0aDpmcm9tRGF0YVNvdXJjZTop
LCByZXF1ZXN0Lm5zVVJMUmVxdWVzdCgpLCByZXNwb25zZS5uc1VSTFJlc3BvbnNlKCksIGxlbmd0
aCwgZGF0YVNvdXJjZShsb2FkZXIpKTsKKyAgICBDYWxsUmVzb3VyY2VMb2FkRGVsZWdhdGUoaW1w
bGVtZW50YXRpb25zLT5kaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGVGdW5jLCB3ZWJWaWV3
LCBAc2VsZWN0b3Iod2ViVmlldzpkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGU6cmVzcG9u
c2U6bGVuZ3RoOmZyb21EYXRhU291cmNlOiksIHJlcXVlc3QubnNVUkxSZXF1ZXN0KFVwZGF0ZUhU
VFBCb2R5KSwgcmVzcG9uc2UubnNVUkxSZXNwb25zZSgpLCBsZW5ndGgsIGRhdGFTb3VyY2UobG9h
ZGVyKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTMyNCw3ICszMjQsNyBAQCB2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50Ojphc3NpZ25JZGVudGlmCiAgICAgaWQgb2JqZWN0ID0gbmlsOwog
ICAgIEJPT0wgc2hvdWxkUmVsZWFzZSA9IE5POwogICAgIGlmIChpbXBsZW1lbnRhdGlvbnMtPmlk
ZW50aWZpZXJGb3JSZXF1ZXN0RnVuYykKLSAgICAgICAgb2JqZWN0ID0gQ2FsbFJlc291cmNlTG9h
ZERlbGVnYXRlKGltcGxlbWVudGF0aW9ucy0+aWRlbnRpZmllckZvclJlcXVlc3RGdW5jLCB3ZWJW
aWV3LCBAc2VsZWN0b3Iod2ViVmlldzppZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3Q6ZnJvbURh
dGFTb3VyY2U6KSwgcmVxdWVzdC5uc1VSTFJlcXVlc3QoKSwgZGF0YVNvdXJjZShsb2FkZXIpKTsK
KyAgICAgICAgb2JqZWN0ID0gQ2FsbFJlc291cmNlTG9hZERlbGVnYXRlKGltcGxlbWVudGF0aW9u
cy0+aWRlbnRpZmllckZvclJlcXVlc3RGdW5jLCB3ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpp
ZGVudGlmaWVyRm9ySW5pdGlhbFJlcXVlc3Q6ZnJvbURhdGFTb3VyY2U6KSwgcmVxdWVzdC5uc1VS
TFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpLCBkYXRhU291cmNlKGxvYWRlcikpOwogICAgIGVsc2Ug
ewogICAgICAgICBvYmplY3QgPSBbW05TT2JqZWN0IGFsbG9jXSBpbml0XTsKICAgICAgICAgc2hv
dWxkUmVsZWFzZSA9IFlFUzsKQEAgLTM0Niw3ICszNDYsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaFdpbGxTCiAgICAgaWYgKHJlZGlyZWN0UmVzcG9uc2UuaXNOdWxsKCkp
CiAgICAgICAgIHN0YXRpY19jYXN0PFdlYkRvY3VtZW50TG9hZGVyTWFjKj4obG9hZGVyKS0+aW5j
cmVhc2VMb2FkQ291bnQoaWRlbnRpZmllcik7CiAKLSAgICBOU1VSTFJlcXVlc3QgKmN1cnJlbnRV
UkxSZXF1ZXN0ID0gcmVxdWVzdC5uc1VSTFJlcXVlc3QoKTsKKyAgICBOU1VSTFJlcXVlc3QgKmN1
cnJlbnRVUkxSZXF1ZXN0ID0gcmVxdWVzdC5uc1VSTFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpOwog
ICAgIE5TVVJMUmVxdWVzdCAqbmV3VVJMUmVxdWVzdCA9IGN1cnJlbnRVUkxSZXF1ZXN0OwogICAg
IGlmIChpbXBsZW1lbnRhdGlvbnMtPndpbGxTZW5kUmVxdWVzdEZ1bmMpCiAgICAgICAgIG5ld1VS
TFJlcXVlc3QgPSAoTlNVUkxSZXF1ZXN0ICopQ2FsbFJlc291cmNlTG9hZERlbGVnYXRlKGltcGxl
bWVudGF0aW9ucy0+d2lsbFNlbmRSZXF1ZXN0RnVuYywgd2ViVmlldywgQHNlbGVjdG9yKHdlYlZp
ZXc6cmVzb3VyY2U6d2lsbFNlbmRSZXF1ZXN0OnJlZGlyZWN0UmVzcG9uc2U6ZnJvbURhdGFTb3Vy
Y2U6KSwgW3dlYlZpZXcgX29iamVjdEZvcklkZW50aWZpZXI6aWRlbnRpZmllcl0sIGN1cnJlbnRV
UkxSZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlLm5zVVJMUmVzcG9uc2UoKSwgZGF0YVNvdXJjZShs
b2FkZXIpKTsKQEAgLTcyNCw3ICs3MjQsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERlY2lkCiAKICAgICBbW3dlYlZpZXcgX3BvbGljeURlbGVnYXRlRm9yd2FyZGVyXSB3
ZWJWaWV3OndlYlZpZXcKICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2lkZVBvbGljeUZvck1J
TUVUeXBlOnJlc3BvbnNlLm1pbWVUeXBlKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXF1ZXN0OnJlcXVlc3QubnNVUkxSZXF1ZXN0KCkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0OnJlcXVlc3QubnNVUkxSZXF1ZXN0KFVw
ZGF0ZUhUVFBCb2R5KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZnJhbWU6bV93ZWJGcmFtZS5nZXQoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl
Y2lzaW9uTGlzdGVuZXI6c2V0VXBQb2xpY3lMaXN0ZW5lcihmdW5jdGlvbikuZ2V0KCldOwogfQpA
QCAtNzM1LDcgKzczNSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVj
aWQKICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdldCgpKTsK
ICAgICBbW3dlYlZpZXcgX3BvbGljeURlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3OndlYlZpZXcK
ICAgICAgICAgICAgIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbjphY3Rpb25EaWN0aW9u
YXJ5KGFjdGlvbiwgZm9ybVN0YXRlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXF1ZXN0OnJlcXVlc3QubnNVUkxSZXF1ZXN0KCkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVxdWVzdDpyZXF1ZXN0Lm5zVVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSkK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0ZyYW1lTmFtZTpmcmFtZU5hbWUKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGVjaXNpb25MaXN0ZW5lcjpzZXRVcFBvbGljeUxpc3Rl
bmVyKGZ1bmN0aW9uKS5nZXQoKV07CiB9CkBAIC03NDYsNyArNzQ2LDcgQEAgdm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZAogICAgIFdlYlZpZXcgKndlYlZpZXcgPSBnZXRX
ZWJWaWV3KG1fd2ViRnJhbWUuZ2V0KCkpOwogICAgIFtbd2ViVmlldyBfcG9saWN5RGVsZWdhdGVG
b3J3YXJkZXJdIHdlYlZpZXc6d2ViVmlldwogICAgICAgICAgICAgICAgIGRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb246YWN0aW9uRGljdGlvbmFyeShhY3Rpb24sIGZvcm1TdGF0ZSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0OnJlcXVlc3QubnNV
UkxSZXF1ZXN0KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1
ZXN0OnJlcXVlc3QubnNVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWU6bV93ZWJGcmFtZS5nZXQoKQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2lzaW9uTGlzdGVuZXI6c2V0VXBQb2xpY3lMaXN0
ZW5lcihmdW5jdGlvbikuZ2V0KCldOwogfQpAQCAtODcwLDcgKzg3MCw3IEBAIHZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OnVwZGF0ZUdsb2JhbEgKICAgICAgICAgaWYgKGltcGxlbWVudGF0aW9u
cy0+bmF2aWdhdGVkRnVuYykgewogICAgICAgICAgICAgV2ViTmF2aWdhdGlvbkRhdGEgKmRhdGEg
PSBbW1dlYk5hdmlnYXRpb25EYXRhIGFsbG9jXSBpbml0V2l0aFVSTFN0cmluZzpsb2FkZXItPnVy
bEZvckhpc3RvcnkoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTpuaWxPck5TU3RyaW5nKGxv
YWRlci0+dGl0bGUoKS5zdHJpbmcoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbFJlcXVlc3Q6bG9hZGVy
LT5vcmlnaW5hbFJlcXVlc3RDb3B5KCkubnNVUkxSZXF1ZXN0KCkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5h
bFJlcXVlc3Q6bG9hZGVyLT5vcmlnaW5hbFJlcXVlc3RDb3B5KCkubnNVUkxSZXF1ZXN0KFVwZGF0
ZUhUVFBCb2R5KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZTpsb2FkZXItPnJlc3BvbnNlKCku
bnNVUkxSZXNwb25zZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGhhc1N1YnN0aXR1dGVEYXRhOmxvYWRlci0+c3Vic3Rp
dHV0ZURhdGEoKS5pc1ZhbGlkKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50UmVkaXJlY3RTb3VyY2U6bG9hZGVyLT5j
bGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkoKV07CkBAIC0xMDI2LDcgKzEwMjYsNyBAQCBi
b29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5IYW5kbGVSZXF1CiAgICAgRnJhbWUqIGZyYW1l
ID0gY29yZShtX3dlYkZyYW1lLmdldCgpKTsKICAgICBQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2Uo
KTsKICAgICBCT09MIGZvck1haW5GcmFtZSA9IHBhZ2UgJiYgcGFnZS0+bWFpbkZyYW1lKCkgPT0g
ZnJhbWU7Ci0gICAgcmV0dXJuIFtXZWJWaWV3IF9jYW5IYW5kbGVSZXF1ZXN0OnJlcXVlc3QubnNV
UkxSZXF1ZXN0KCkgZm9yTWFpbkZyYW1lOmZvck1haW5GcmFtZV07CisgICAgcmV0dXJuIFtXZWJW
aWV3IF9jYW5IYW5kbGVSZXF1ZXN0OnJlcXVlc3QubnNVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5
KSBmb3JNYWluRnJhbWU6Zm9yTWFpbkZyYW1lXTsKIH0KIAogYm9vbCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6Y2FuU2hvd01JTUVUeXBlKGNvbnN0IFN0cmluZyYgTUlNRVR5cGUpIGNvbnN0CkluZGV4
OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCShyZXZpc2lvbiAx
NDQwNjcpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0JKHdv
cmtpbmcgY29weSkKQEAgLTQyMyw3ICs0MjMsNyBAQCAtIChXZWJGcmFtZSAqKXdlYkZyYW1lCiAK
IC0gKE5TVVJMUmVxdWVzdCAqKWluaXRpYWxSZXF1ZXN0CiB7Ci0gICAgcmV0dXJuIHRvUHJpdmF0
ZShfcHJpdmF0ZSktPmxvYWRlci0+b3JpZ2luYWxSZXF1ZXN0KCkubnNVUkxSZXF1ZXN0KCk7Cisg
ICAgcmV0dXJuIHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+b3JpZ2luYWxSZXF1ZXN0KCku
bnNVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KTsKIH0KIAogLSAoTlNNdXRhYmxlVVJMUmVxdWVz
dCAqKXJlcXVlc3QKQEAgLTQzMyw3ICs0MzMsNyBAQCAtIChOU011dGFibGVVUkxSZXF1ZXN0ICop
cmVxdWVzdAogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgLy8gRklYTUU6IHRoaXMgY2FzdCBp
cyBkdWJpb3VzCi0gICAgcmV0dXJuIChOU011dGFibGVVUkxSZXF1ZXN0ICopdG9Qcml2YXRlKF9w
cml2YXRlKS0+bG9hZGVyLT5yZXF1ZXN0KCkubnNVUkxSZXF1ZXN0KCk7CisgICAgcmV0dXJuIChO
U011dGFibGVVUkxSZXF1ZXN0ICopdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5yZXF1ZXN0
KCkubnNVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KTsKIH0KIAogLSAoTlNVUkxSZXNwb25zZSAq
KXJlc3BvbnNlCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0JKHJldmlz
aW9uIDE0NDA2NykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0JKHdv
cmtpbmcgY29weSkKQEAgLTEzNzYsNyArMTM3Niw3IEBAIC0gKHZvaWQpX2xvYWREYXRhOihOU0Rh
dGEgKilkYXRhIE1JTUVUeXAKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChbYmFzZVVSTCBh
YnNvbHV0ZVVSTF0pOwogCiAgICAgLy8gaGFjayBiZWNhdXNlIE1haWwgY2hlY2tzIGZvciB0aGlz
IHByb3BlcnR5IHRvIGRldGVjdCBkYXRhIC8gYXJjaGl2ZSBsb2FkcwotICAgIFtOU1VSTFByb3Rv
Y29sIHNldFByb3BlcnR5OkAiIiBmb3JLZXk6QCJXZWJEYXRhUmVxdWVzdCIgaW5SZXF1ZXN0OihO
U011dGFibGVVUkxSZXF1ZXN0ICopcmVxdWVzdC5uc1VSTFJlcXVlc3QoKV07CisgICAgW05TVVJM
UHJvdG9jb2wgc2V0UHJvcGVydHk6QCIiIGZvcktleTpAIldlYkRhdGFSZXF1ZXN0IiBpblJlcXVl
c3Q6KE5TTXV0YWJsZVVSTFJlcXVlc3QgKilyZXF1ZXN0Lm5zVVJMUmVxdWVzdChVcGRhdGVIVFRQ
Qm9keSldOwogCiAgICAgU3Vic3RpdHV0ZURhdGEgc3Vic3RpdHV0ZURhdGEoV2ViQ29yZTo6U2hh
cmVkQnVmZmVyOjp3cmFwTlNEYXRhKGRhdGEpLCBNSU1FVHlwZSwgZW5jb2RpbmdOYW1lLCBbdW5y
ZWFjaGFibGVVUkwgYWJzb2x1dGVVUkxdLCByZXNwb25zZVVSTCk7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9DaGFu
Z2VMb2cJKHJldmlzaW9uIDE0NDExNykKKysrIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDEzLTAyLTI2ICBBbGV4ZXkgUHJvc2t1
cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIERvbid0IGFkZCBhIGJvZHkgdG8gcGxh
dGZvcm0gcmVxdWVzdCB1bnRpbCBuZWNlc3NhcnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDkwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFdlYktpdDEgYmVoYXZpb3IgaXMgdW5jaGFuZ2VkLCBib2R5
IGlzIGFkZGVkIG9uIGV2ZXJ5IGNvbnZlcnNpb24uCisKKyAgICAgICAgKiBXZWJEb3dubG9hZENG
TmV0LmNwcDoKKyAgICAgICAgKFdlYkRvd25sb2FkOjppbml0KToKKyAgICAgICAgKFdlYkRvd25s
b2FkOjppbml0V2l0aFJlcXVlc3QpOgorICAgICAgICAoV2ViRG93bmxvYWQ6OndpbGxTZW5kUmVx
dWVzdCk6CisgICAgICAgICogV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwOgorICAgICAgICAoV2Vi
TXV0YWJsZVVSTFJlcXVlc3Q6OmNmUmVxdWVzdCk6CisgICAgICAgIChXZWJNdXRhYmxlVVJMUmVx
dWVzdDo6bXV0YWJsZUNvcHkpOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2Vi
Vmlldzo6Y2FuSGFuZGxlUmVxdWVzdCk6CisKIDIwMTMtMDItMjYgIFJvZ2VyIEZvbmcgIDxyb2dl
cl9mb25nQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIEFwcGxlV2luIGJ1aWxkIGZp
eC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwCShyZXZpc2lvbiAx
NDQwNjcpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJEb3dubG9hZENGTmV0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODQsNyArODQsNyBAQCB2b2lkIFdlYkRvd25sb2FkOjppbml0KFJlc291cmNl
SGFuZGxlKiBoCiAgICAgICAgIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZE9iamVjdE5h
bWVDYWxsYmFjaywgZGlkQ3JlYXRlRGVzdGluYXRpb25DYWxsYmFjaywgZGlkRmluaXNoQ2FsbGJh
Y2ssIGRpZEZhaWxDYWxsYmFja307CiAKICAgICBtX3JlcXVlc3QuYWRvcHRSZWYoV2ViTXV0YWJs
ZVVSTFJlcXVlc3Q6OmNyZWF0ZUluc3RhbmNlKHJlcXVlc3QpKTsKLSAgICBtX2Rvd25sb2FkLmFk
b3B0Q0YoQ0ZVUkxEb3dubG9hZENyZWF0ZUFuZFN0YXJ0V2l0aExvYWRpbmdDb25uZWN0aW9uKDAs
IGNvbm5lY3Rpb24sIHJlcXVlc3QuY2ZVUkxSZXF1ZXN0KCksIHJlc3BvbnNlLmNmVVJMUmVzcG9u
c2UoKSwgJmNsaWVudCkpOworICAgIG1fZG93bmxvYWQuYWRvcHRDRihDRlVSTERvd25sb2FkQ3Jl
YXRlQW5kU3RhcnRXaXRoTG9hZGluZ0Nvbm5lY3Rpb24oMCwgY29ubmVjdGlvbiwgcmVxdWVzdC5j
ZlVSTFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpLCByZXNwb25zZS5jZlVSTFJlc3BvbnNlKCksICZj
bGllbnQpKTsKIAogICAgIC8vIEl0IGlzIHBvc3NpYmxlIGZvciBDRlVSTERvd25sb2FkQ3JlYXRl
QW5kU3RhcnRXaXRoTG9hZGluZ0Nvbm5lY3Rpb24oKSB0byBmYWlsIGlmIHRoZSBwYXNzZWQgaW4g
Q0ZVUkxDb25uZWN0aW9uIGlzIG5vdCBpbiBhICJkb3dubG9hZGFibGUgc3RhdGUiCiAgICAgLy8g
SG93ZXZlciwgd2Ugc2hvdWxkIG5ldmVyIGhpdCB0aGF0IGNhc2UKQEAgLTEwNyw3ICsxMDcsNyBA
QCB2b2lkIFdlYkRvd25sb2FkOjppbml0KGNvbnN0IEtVUkwmIHVybCwgCiAgICAgTE9HX0VSUk9S
KCJEZWxlZ2F0ZSBpcyAlcCIsIG1fZGVsZWdhdGUuZ2V0KCkpOwogCiAgICAgUmVzb3VyY2VSZXF1
ZXN0IHJlcXVlc3QodXJsKTsKLSAgICBDRlVSTFJlcXVlc3RSZWYgY2ZSZXF1ZXN0ID0gcmVxdWVz
dC5jZlVSTFJlcXVlc3QoKTsKKyAgICBDRlVSTFJlcXVlc3RSZWYgY2ZSZXF1ZXN0ID0gcmVxdWVz
dC5jZlVSTFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpOwogCiAgICAgQ0ZVUkxEb3dubG9hZENsaWVu
dCBjbGllbnQgPSB7MCwgdGhpcywgMCwgMCwgMCwgZGlkU3RhcnRDYWxsYmFjaywgd2lsbFNlbmRS
ZXF1ZXN0Q2FsbGJhY2ssIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNhbGxiYWNr
LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRSZWNlaXZlUmVzcG9uc2VD
YWxsYmFjaywgd2lsbFJlc3VtZVdpdGhSZXNwb25zZUNhbGxiYWNrLCBkaWRSZWNlaXZlRGF0YUNh
bGxiYWNrLCBzaG91bGREZWNvZGVEYXRhT2ZNSU1FVHlwZUNhbGxiYWNrLCAKQEAgLTEzOCw3ICsx
MzgsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjppCiAgICAgbV9k
ZWxlZ2F0ZSA9IGRlbGVnYXRlOwogICAgIExPRyhEb3dubG9hZCwgIkRlbGVnYXRlIGlzICVwIiwg
bV9kZWxlZ2F0ZS5nZXQoKSk7CiAKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZXF1ZXN0UmVmPiBjZlJl
cXVlc3QgPSB3ZWJSZXF1ZXN0LT5yZXNvdXJjZVJlcXVlc3QoKS5jZlVSTFJlcXVlc3QoKTsKKyAg
ICBSZXRhaW5QdHI8Q0ZVUkxSZXF1ZXN0UmVmPiBjZlJlcXVlc3QgPSB3ZWJSZXF1ZXN0LT5yZXNv
dXJjZVJlcXVlc3QoKS5jZlVSTFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpOwogCiAgICAgQ0ZVUkxE
b3dubG9hZENsaWVudCBjbGllbnQgPSB7MCwgdGhpcywgMCwgMCwgMCwgZGlkU3RhcnRDYWxsYmFj
aywgd2lsbFNlbmRSZXF1ZXN0Q2FsbGJhY2ssIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZUNhbGxiYWNrLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRSZWNl
aXZlUmVzcG9uc2VDYWxsYmFjaywgd2lsbFJlc3VtZVdpdGhSZXNwb25zZUNhbGxiYWNrLCBkaWRS
ZWNlaXZlRGF0YUNhbGxiYWNrLCBzaG91bGREZWNvZGVEYXRhT2ZNSU1FVHlwZUNhbGxiYWNrLCAK
QEAgLTM3Myw3ICszNzMsNyBAQCBDRlVSTFJlcXVlc3RSZWYgV2ViRG93bmxvYWQ6OndpbGxTZW5k
UmVxCiAKICAgICBDT01QdHI8V2ViTXV0YWJsZVVSTFJlcXVlc3Q+IGZpbmFsV2ViUmVxdWVzdChB
ZG9wdENPTSwgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OmNyZWF0ZUluc3RhbmNlKGZpbmFsUmVxdWVz
dC5nZXQoKSkpOwogICAgIG1fcmVxdWVzdCA9IGZpbmFsV2ViUmVxdWVzdC5nZXQoKTsKLSAgICBD
RlVSTFJlcXVlc3RSZWYgcmVzdWx0ID0gZmluYWxXZWJSZXF1ZXN0LT5yZXNvdXJjZVJlcXVlc3Qo
KS5jZlVSTFJlcXVlc3QoKTsKKyAgICBDRlVSTFJlcXVlc3RSZWYgcmVzdWx0ID0gZmluYWxXZWJS
ZXF1ZXN0LT5yZXNvdXJjZVJlcXVlc3QoKS5jZlVSTFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpOwog
ICAgIENGUmV0YWluKHJlc3VsdCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAJKHJldmlzaW9uIDE0NDA2NykK
KysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzY2LDcgKzM2Niw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViTXV0
YWJsZVVSTFIKIAogQ0ZVUkxSZXF1ZXN0UmVmIFNURE1FVEhPRENBTExUWVBFIFdlYk11dGFibGVV
UkxSZXF1ZXN0OjpjZlJlcXVlc3QoKQogewotICAgIHJldHVybiBtX3JlcXVlc3QuY2ZVUkxSZXF1
ZXN0KCk7CisgICAgcmV0dXJuIG1fcmVxdWVzdC5jZlVSTFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkp
OwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYk11dGFibGVVUkxSZXF1ZXN0Ojpt
dXRhYmxlQ29weSgKQEAgLTM3Niw3ICszNzYsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFdlYk11dGFibGVVUkxSCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKICNpZiBVU0UoQ0ZO
RVRXT1JLKQotICAgIFJldGFpblB0cjxDRk11dGFibGVVUkxSZXF1ZXN0UmVmPiBtdXRhYmxlUmVx
dWVzdChBZG9wdENGLCBDRlVSTFJlcXVlc3RDcmVhdGVNdXRhYmxlQ29weShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBtX3JlcXVlc3QuY2ZVUkxSZXF1ZXN0KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZNdXRh
YmxlVVJMUmVxdWVzdFJlZj4gbXV0YWJsZVJlcXVlc3QoQWRvcHRDRiwgQ0ZVUkxSZXF1ZXN0Q3Jl
YXRlTXV0YWJsZUNvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9yZXF1ZXN0LmNmVVJMUmVxdWVz
dChVcGRhdGVIVFRQQm9keSkpKTsKICAgICAqcmVzdWx0ID0gY3JlYXRlSW5zdGFuY2UoUmVzb3Vy
Y2VSZXF1ZXN0KG11dGFibGVSZXF1ZXN0LmdldCgpKSk7CiAgICAgcmV0dXJuIFNfT0s7CiAjZWxz
ZQpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAJKHJldmlzaW9uIDE0NDA2NykKKysrIFNvdXJjZS9X
ZWJLaXQvd2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjg2LDcgKzEyODYsNyBA
QCBib29sIFdlYlZpZXc6OmNhbkhhbmRsZVJlcXVlc3QoY29uc3QgV2ViCiAgICAgICAgIHJldHVy
biB0cnVlOwogCiAjaWYgVVNFKENGTkVUV09SSykKLSAgICBpZiAoQ0ZVUkxQcm90b2NvbENhbkhh
bmRsZVJlcXVlc3QocmVxdWVzdC5jZlVSTFJlcXVlc3QoKSkpCisgICAgaWYgKENGVVJMUHJvdG9j
b2xDYW5IYW5kbGVSZXF1ZXN0KHJlcXVlc3QuY2ZVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KSkp
CiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gRklYTUU6IE1hYyBXZWJLaXQgY2FsbHMg
X3JlcHJlc2VudGF0aW9uRXhpc3RzRm9yVVJMU2NoZW1lIGhlcmUK
</data>
<flag name="commit-queue"
          id="211046"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190394</attachid>
            <date>2013-02-26 16:54:26 -0800</date>
            <delta_ts>2013-02-26 20:11:20 -0800</delta_ts>
            <desc>with more Qt build fix</desc>
            <filename>BodyInNetworkProcess.txt</filename>
            <type>text/plain</type>
            <size>60425</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NDExNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg3IEBACisyMDEzLTAyLTI2ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIERvbid0IGFkZCBhIGJvZHkg
dG8gcGxhdGZvcm0gcmVxdWVzdCB1bnRpbCBuZWNlc3NhcnkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDkwMAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAg
ICAgIFJlc291cmNlUmVxdWVzdCBub3cgaGF2ZSBtb3JlIHN0YXRlIGZvciBzeW5jaW5nIGJldHdl
ZW4gcmVzb3VyY2UgYW5kIHBsYXRmb3JtIHBhcnRzLgorICAgICAgICBJbiBhZGRpdGlvbiB0byB0
cmFja2luZyB3aGljaCBpcyB1cCB0byBkYXRlLCB3ZSBhbHNvIHRyYWNrIHdoaWNoIGhhcyB1cCB0
byBkYXRlCisgICAgICAgIEhUVFAgQm9keS4KKworICAgICAgICBUaGUgcmVhc29uIGlzIHRoYXQg
d2UgZG9uJ3QgbmVlZCB0aGUgYm9keSBvbiByZXF1ZXN0IGJlZm9yZSBpdCdzIGFjdHVhbGx5IHNl
bnQsCisgICAgICAgIGFuZCB3ZSBhY3R1YWxseSBjYW5ub3QgYnVpbGQgaXQgd2hlbiBuZXR3b3Jr
aW5nIGlzIG91dCBvZiBwcm9jZXNzLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46IFVwZGF0
ZWQgZXhwb3J0cy4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0
QmFzZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRIVFRQQm9keSk6
IFVwZGF0ZSBIVFRQIGJvZHkgYmVmb3JlIHJldHVybmluZyBpdC4KKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdEJhc2U6OnVwZGF0ZVBsYXRmb3JtUmVxdWVzdCk6IFVwZGF0ZSBhY2Nv
cmRpbmcgdG8gSFRUUEJvZHlVcGRhdGVQb2xpY3kuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3RCYXNlOjp1cGRhdGVSZXNvdXJjZVJlcXVlc3QpOiBEaXR0by4KKworICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpmb3JtRGF0YVN0cmVhbUxlbmd0aFByb3BlcnR5TmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpmb3JtQ29weVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEhUVFBCb2R5KToK
KyAgICAgICAgQ2hhbmdlZCB0byBub3QgdXBkYXRlIENvbnRlbnQtTGVuZ3RoIGluIHBsYXRmb3Jt
IHJlcXVlc3QgZGlyZWN0bHkuIFdlIG5lZWQgdG8ga2VlcCBpdAorICAgICAgICBpbiBzeW5jIHdp
dGggcmVzb3VyY2UgcmVxdWVzdCwgYW5kIGl0J3MgZWFzaWVyIHRvIGRvIGluIGEgY2FsbGVyLiBF
eHBvc2VkIGNvbXB1dGVkCisgICAgICAgIGxlbmd0aCBhcyBhIHByb3BlcnR5IGRvIGF2b2lkIGR1
cGxpY2F0aW5nIHRoZSB3b3JrLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Gb3Jt
RGF0YVN0cmVhbUNGTmV0Lmg6IFJlbW92ZWQgdW5uZWNlc3NhcnkgaHR0cEJvZHlGcm9tU3RyZWFt
KCkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRs
ZTo6Y3JlYXRlQ0ZVUkxDb25uZWN0aW9uKToKKyAgICAgICAgVXBkYXRlIGJvZHkgd2hlbiBuZWNl
c3NhcnkuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6bnNVUkxSZXF1ZXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVSZXNvdXJjZVJl
cXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVJlc291
cmNlSFRUUEJvZHkpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybUhUVFBCb2R5KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdDo6dXBkYXRlRnJvbURlbGVnYXRlUHJlc2VydmluZ09sZEhU
VFBCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6YXBwbHlXZWJBcmNo
aXZlSGFja0Zvck1haWwpOgorICAgICAgICBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Lmg6IFRyYWNrIGJvZHkgdXAtdG8tZGF0ZSBzdGF0ZS4K
KworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0OjpjZlVSTFJlcXVlc3QpOiBIb25v
ciBIVFRQQm9keVVwZGF0ZVBvbGljeS4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QpOiBEb24ndCB1cGRhdGUgYm9keSBoZXJlLgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtSFRUUEJvZHkp
OiBVcGRhdGUgdGhlIGJvZHksIGFuZCBtYWtlIHN1cmUKKyAgICAgICAgdGhhdCBDb250ZW50LUxl
bmd0aCBpcyBjb3JyZWN0LgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpkb1Vw
ZGF0ZVJlc291cmNlUmVxdWVzdCk6IERvbid0IHVwZGF0ZSBib2R5IGhlcmUuCisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUmVzb3VyY2VIVFRQQm9keSk6IFVwZGF0
ZSB0aGUgYm9keSwgZml4aW5nIGEgYnVnCisgICAgICAgIHdoZXJlIGJvZHkgc3RyZWFtIHdhcyBs
b3N0IGlmIHRoaXMgZnVuY3Rpb24gZ290IGNhbGxlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdDo6YXBwbHlXZWJBcmNoaXZlSGFja0Zvck1haWwpOiBObyBuZWVkIHRvIHVwZGF0
ZSBib2R5IGZvciB0aGlzIG9uZS4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jl
c291cmNlUmVxdWVzdE1hYy5tbTogRGl0dG8gKGJ1dCB0aGlzIGRpZG4ndCBoYXZlIGEgYnVnCisg
ICAgICAgIHdpdGggc3RyZWFtcyBpbiBkb1VwZGF0ZVJlc291cmNlUmVxdWVzdCgpKS4KKworICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLmg6IEZvcndhcmQg
ZGVjbGFyZSBmb3JtRGF0YVN0cmVhbUxlbmd0aFByb3BlcnR5TmFtZSgpLgorCisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlTlNVUkxDb25uZWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUhhbmRsZTo6cGxhdGZvcm1Mb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKC1b
V2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZSBjb25uZWN0aW9uOndpbGxTZW5kUmVxdWVz
dDpyZWRpcmVjdFJlc3BvbnNlOl0pOgorICAgICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVB
c0RlbGVnYXRlIGNvbm5lY3Rpb246ZGlkUmVjZWl2ZVJlc3BvbnNlOl0pOgorICAgICAgICBVcGRh
dGUgYm9keSB3aGVuIG5lY2Vzc2FyeS4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvYmxh
Y2tiZXJyeS9SZXNvdXJjZVJlcXVlc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2No
cm9taXVtL1Jlc291cmNlUmVxdWVzdC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZVJlcXVlc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291
cmNlUmVxdWVzdC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJl
cXVlc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNvdXJjZVJlcXVlc3Qu
aDoKKyAgICAgICAgQWRkZWQgc3R1YnMgZm9yIG5ldyBmdW5jdGlvbnMuIFRoZXNlIHBvcnRzIGRv
bid0IGtlZXAgYSBwbGF0Zm9ybSByZXF1ZXN0IGluIFJlc291cmNlUmVxdWVzdCwKKyAgICAgICAg
YW5kIGRvbid0IG5lZWQgdXBkYXRpbmcuCisKIDIwMTMtMDItMjYgIFN0ZXBoZW4gQ2hlbm5leSAg
PHNjaGVubmV5QGNocm9taXVtLm9yZz4KIAogICAgICAgICBmZURpc3BsYWNlbWVudE1hcCBmaWx0
ZXIgZ2V0cyBjb2xvciBzcGFjZSB3cm9uZwpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlz
aW9uIDE0NDA2NykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNv
cHkpCkBAIC00NDYsNiArNDQ2LDcgQEAgX19aTjdXZWJDb3JlMTVQcm90ZWN0aW9uU3BhY2VDMUVS
S04zV1RGNgogX19aTjdXZWJDb3JlMTVQcm90ZWN0aW9uU3BhY2VDMUV2CiBfX1pON1dlYkNvcmUx
NVJlc291cmNlUmVxdWVzdDIxaHR0cFBpcGVsaW5pbmdFbmFibGVkRXYKIF9fWk43V2ViQ29yZTE1
UmVzb3VyY2VSZXF1ZXN0MjRzZXRIVFRQUGlwZWxpbmluZ0VuYWJsZWRFYgorX19aTjdXZWJDb3Jl
MTVSZXNvdXJjZVJlcXVlc3QzOXVwZGF0ZUZyb21EZWxlZ2F0ZVByZXNlcnZpbmdPbGRIVFRQQm9k
eUVQMTJOU1VSTFJlcXVlc3QKIF9fWk43V2ViQ29yZTE1U2Nyb2xsQWxpZ25tZW50MTdhbGlnbkNl
bnRlckFsd2F5c0UKIF9fWk43V2ViQ29yZTE1U2Nyb2xsQWxpZ25tZW50MTlhbGlnblRvRWRnZUlm
TmVlZGVkRQogX19aTjdXZWJDb3JlMTVTdG9yYWdlU3RyYXRlZ3kyMWxvY2FsU3RvcmFnZU5hbWVz
cGFjZUVSS04zV1RGNlN0cmluZ0VqCkBAIC0xMzIwLDcgKzEzMjEsNyBAQCBfX1pOSzdXZWJDb3Jl
MTVQcm90ZWN0aW9uU3BhY2U0aG9zdEV2CiBfX1pOSzdXZWJDb3JlMTVQcm90ZWN0aW9uU3BhY2U0
cG9ydEV2CiBfX1pOSzdXZWJDb3JlMTVQcm90ZWN0aW9uU3BhY2U1cmVhbG1FdgogX19aTks3V2Vi
Q29yZTE1UHJvdGVjdGlvblNwYWNlN2lzUHJveHlFdgotX19aTks3V2ViQ29yZTE1UmVzb3VyY2VS
ZXF1ZXN0MTJuc1VSTFJlcXVlc3RFdgorX19aTks3V2ViQ29yZTE1UmVzb3VyY2VSZXF1ZXN0MTJu
c1VSTFJlcXVlc3RFTlNfMjBIVFRQQm9keVVwZGF0ZVBvbGljeUUKIF9fWk5LN1dlYkNvcmUxNVZp
c2libGVQb3NpdGlvbjE0Y2hhcmFjdGVyQWZ0ZXJFdgogX19aTks3V2ViQ29yZTE1VmlzaWJsZVBv
c2l0aW9uMTRsb2NhbENhcmV0UmVjdEVSUE5TXzEyUmVuZGVyT2JqZWN0RQogX19aTks3V2ViQ29y
ZTE1VmlzaWJsZVBvc2l0aW9uMTlhYnNvbHV0ZUNhcmV0Qm91bmRzRXYKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNl
LmNwcAkocmV2aXNpb24gMTQ0MDY3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQxLDIyICszNDEs
MjQgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRSZXNwb25zZUNvbgogICAgICAgICBt
X3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQgPSBmYWxzZTsKIH0KIAotRm9ybURhdGEqIFJlc291cmNl
UmVxdWVzdEJhc2U6Omh0dHBCb2R5KCkgY29uc3QgCi17IAotICAgIHVwZGF0ZVJlc291cmNlUmVx
dWVzdCgpOyAKLSAgICAKLSAgICByZXR1cm4gbV9odHRwQm9keS5nZXQoKTsgCitGb3JtRGF0YSog
UmVzb3VyY2VSZXF1ZXN0QmFzZTo6aHR0cEJvZHkoKSBjb25zdAoreworICAgIHVwZGF0ZVJlc291
cmNlUmVxdWVzdChVcGRhdGVIVFRQQm9keSk7CisKKyAgICByZXR1cm4gbV9odHRwQm9keS5nZXQo
KTsKIH0KIAogdm9pZCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRIVFRQQm9keShQYXNzUmVmUHRy
PEZvcm1EYXRhPiBodHRwQm9keSkKIHsKLSAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsgCi0g
ICAgCi0gICAgbV9odHRwQm9keSA9IGh0dHBCb2R5OyAKLSAgICAKKyAgICB1cGRhdGVSZXNvdXJj
ZVJlcXVlc3QoKTsKKworICAgIG1faHR0cEJvZHkgPSBodHRwQm9keTsKKworICAgIG1fcmVzb3Vy
Y2VSZXF1ZXN0Qm9keVVwZGF0ZWQgPSB0cnVlOworCiAgICAgaWYgKHVybCgpLnByb3RvY29sSXNJ
bkhUVFBGYW1pbHkoKSkKLSAgICAgICAgbV9wbGF0Zm9ybVJlcXVlc3RVcGRhdGVkID0gZmFsc2U7
Ci19IAorICAgICAgICBtX3BsYXRmb3JtUmVxdWVzdEJvZHlVcGRhdGVkID0gZmFsc2U7Cit9CiAK
IGJvb2wgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6YWxsb3dDb29raWVzKCkgY29uc3QKIHsKQEAgLTQ5
NCwyNCArNDk2LDM0IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6c2V0RGVmYXVsdFRpbWUK
ICAgICBzX2RlZmF1bHRUaW1lb3V0SW50ZXJ2YWwgPSB0aW1lb3V0SW50ZXJ2YWw7CiB9CiAKLXZv
aWQgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6dXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkgY29uc3QKLXsK
LSAgICBpZiAobV9wbGF0Zm9ybVJlcXVlc3RVcGRhdGVkKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBBU1NFUlQobV9yZXNvdXJjZVJlcXVlc3RVcGRhdGVkKTsKLSAgICBjb25zdF9jYXN0PFJlc291
cmNlUmVxdWVzdCY+KGFzUmVzb3VyY2VSZXF1ZXN0KCkpLmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0
KCk7Ci0gICAgbV9wbGF0Zm9ybVJlcXVlc3RVcGRhdGVkID0gdHJ1ZTsKLX0KLQotdm9pZCBSZXNv
dXJjZVJlcXVlc3RCYXNlOjp1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKSBjb25zdAordm9pZCBSZXNv
dXJjZVJlcXVlc3RCYXNlOjp1cGRhdGVQbGF0Zm9ybVJlcXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xp
Y3kgYm9keVBvbGljeSkgY29uc3QKIHsKLSAgICBpZiAobV9yZXNvdXJjZVJlcXVlc3RVcGRhdGVk
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBBU1NFUlQobV9wbGF0Zm9ybVJlcXVlc3RVcGRhdGVk
KTsKLSAgICBjb25zdF9jYXN0PFJlc291cmNlUmVxdWVzdCY+KGFzUmVzb3VyY2VSZXF1ZXN0KCkp
LmRvVXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7Ci0gICAgbV9yZXNvdXJjZVJlcXVlc3RVcGRhdGVk
ID0gdHJ1ZTsKKyAgICBpZiAoIW1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRlZCkgeworICAgICAgICBB
U1NFUlQobV9yZXNvdXJjZVJlcXVlc3RVcGRhdGVkKTsKKyAgICAgICAgY29uc3RfY2FzdDxSZXNv
dXJjZVJlcXVlc3QmPihhc1Jlc291cmNlUmVxdWVzdCgpKS5kb1VwZGF0ZVBsYXRmb3JtUmVxdWVz
dCgpOworICAgICAgICBtX3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQgPSB0cnVlOworICAgIH0KKwor
ICAgIGlmICghbV9wbGF0Zm9ybVJlcXVlc3RCb2R5VXBkYXRlZCAmJiBib2R5UG9saWN5ID09IFVw
ZGF0ZUhUVFBCb2R5KSB7CisgICAgICAgIEFTU0VSVChtX3Jlc291cmNlUmVxdWVzdEJvZHlVcGRh
dGVkKTsKKyAgICAgICAgY29uc3RfY2FzdDxSZXNvdXJjZVJlcXVlc3QmPihhc1Jlc291cmNlUmVx
dWVzdCgpKS5kb1VwZGF0ZVBsYXRmb3JtSFRUUEJvZHkoKTsKKyAgICAgICAgbV9wbGF0Zm9ybVJl
cXVlc3RCb2R5VXBkYXRlZCA9IHRydWU7CisgICAgfQorfQorCit2b2lkIFJlc291cmNlUmVxdWVz
dEJhc2U6OnVwZGF0ZVJlc291cmNlUmVxdWVzdChIVFRQQm9keVVwZGF0ZVBvbGljeSBib2R5UG9s
aWN5KSBjb25zdAoreworICAgIGlmICghbV9yZXNvdXJjZVJlcXVlc3RVcGRhdGVkKSB7CisgICAg
ICAgIEFTU0VSVChtX3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQpOworICAgICAgICBjb25zdF9jYXN0
PFJlc291cmNlUmVxdWVzdCY+KGFzUmVzb3VyY2VSZXF1ZXN0KCkpLmRvVXBkYXRlUmVzb3VyY2VS
ZXF1ZXN0KCk7CisgICAgICAgIG1fcmVzb3VyY2VSZXF1ZXN0VXBkYXRlZCA9IHRydWU7CisgICAg
fQorCisgICAgaWYgKCFtX3Jlc291cmNlUmVxdWVzdEJvZHlVcGRhdGVkICYmIGJvZHlQb2xpY3kg
PT0gVXBkYXRlSFRUUEJvZHkpIHsKKyAgICAgICAgQVNTRVJUKG1fcGxhdGZvcm1SZXF1ZXN0Qm9k
eVVwZGF0ZWQpOworICAgICAgICBjb25zdF9jYXN0PFJlc291cmNlUmVxdWVzdCY+KGFzUmVzb3Vy
Y2VSZXF1ZXN0KCkpLmRvVXBkYXRlUmVzb3VyY2VIVFRQQm9keSgpOworICAgICAgICBtX3Jlc291
cmNlUmVxdWVzdEJvZHlVcGRhdGVkID0gdHJ1ZTsKKyAgICB9CiB9CiAKICNpZiAhUExBVEZPUk0o
TUFDKSAmJiAhVVNFKENGTkVUV09SSykgJiYgIVVTRShTT1VQKSAmJiAhUExBVEZPUk0oQ0hST01J
VU0pICYmICFQTEFURk9STShRVCkgJiYgIVBMQVRGT1JNKEJMQUNLQkVSUlkpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJh
c2UuaAkocmV2aXNpb24gMTQ0MDY3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZVJlcXVlc3RCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDExIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgUmV0dXJuQ2FjaGVEYXRhRG9udExvYWQgIC8v
IHJlc3VsdHMgb2YgYSBwb3N0IC0gYWxsb3cgc3RhbGUgZGF0YSBhbmQgb25seSB1c2UgY2FjaGUK
ICAgICB9OwogCisgICAgZW51bSBIVFRQQm9keVVwZGF0ZVBvbGljeSB7CisgICAgICAgIERvTm90
VXBkYXRlSFRUUEJvZHksCisgICAgICAgIFVwZGF0ZUhUVFBCb2R5CisgICAgfTsKKwogICAgIGNs
YXNzIFJlc291cmNlUmVxdWVzdDsKICAgICBzdHJ1Y3QgQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVl
c3REYXRhOwogCkBAIC0xNDIsNiArMTQ3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBSZXNvdXJjZVJlcXVlc3RCYXNlKCkKICAgICAgICAgICAgIDogbV9yZXNvdXJjZVJlcXVlc3RV
cGRhdGVkKGZhbHNlKQogICAgICAgICAgICAgLCBtX3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQodHJ1
ZSkKKyAgICAgICAgICAgICwgbV9yZXNvdXJjZVJlcXVlc3RCb2R5VXBkYXRlZChmYWxzZSkKKyAg
ICAgICAgICAgICwgbV9wbGF0Zm9ybVJlcXVlc3RCb2R5VXBkYXRlZCh0cnVlKQogICAgICAgICAg
ICAgLCBtX3JlcG9ydFVwbG9hZFByb2dyZXNzKGZhbHNlKQogICAgICAgICAgICAgLCBtX3JlcG9y
dExvYWRUaW1pbmcoZmFsc2UpCiAgICAgICAgICAgICAsIG1fcmVwb3J0UmF3SGVhZGVycyhmYWxz
ZSkKQEAgLTE1Nyw2ICsxNjQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAs
IG1fYWxsb3dDb29raWVzKHRydWUpCiAgICAgICAgICAgICAsIG1fcmVzb3VyY2VSZXF1ZXN0VXBk
YXRlZCh0cnVlKQogICAgICAgICAgICAgLCBtX3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQoZmFsc2Up
CisgICAgICAgICAgICAsIG1fcmVzb3VyY2VSZXF1ZXN0Qm9keVVwZGF0ZWQodHJ1ZSkKKyAgICAg
ICAgICAgICwgbV9wbGF0Zm9ybVJlcXVlc3RCb2R5VXBkYXRlZChmYWxzZSkKICAgICAgICAgICAg
ICwgbV9yZXBvcnRVcGxvYWRQcm9ncmVzcyhmYWxzZSkKICAgICAgICAgICAgICwgbV9yZXBvcnRM
b2FkVGltaW5nKGZhbHNlKQogICAgICAgICAgICAgLCBtX3JlcG9ydFJhd0hlYWRlcnMoZmFsc2Up
CkBAIC0xNjQsOCArMTczLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB7CiAgICAg
ICAgIH0KIAotICAgICAgICB2b2lkIHVwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpIGNvbnN0OyAKLSAg
ICAgICAgdm9pZCB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKSBjb25zdDsgCisgICAgICAgIHZvaWQg
dXBkYXRlUGxhdGZvcm1SZXF1ZXN0KEhUVFBCb2R5VXBkYXRlUG9saWN5ID0gRG9Ob3RVcGRhdGVI
VFRQQm9keSkgY29uc3Q7CisgICAgICAgIHZvaWQgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KEhUVFBC
b2R5VXBkYXRlUG9saWN5ID0gRG9Ob3RVcGRhdGVIVFRQQm9keSkgY29uc3Q7CiAKICAgICAgICAg
dm9pZCByZXBvcnRNZW1vcnlVc2FnZUJhc2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCkBA
IC0xODQsNiArMTkzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG1fYWxs
b3dDb29raWVzIDogMTsKICAgICAgICAgbXV0YWJsZSBib29sIG1fcmVzb3VyY2VSZXF1ZXN0VXBk
YXRlZCA6IDE7CiAgICAgICAgIG11dGFibGUgYm9vbCBtX3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQg
OiAxOworICAgICAgICBtdXRhYmxlIGJvb2wgbV9yZXNvdXJjZVJlcXVlc3RCb2R5VXBkYXRlZCA6
IDE7CisgICAgICAgIG11dGFibGUgYm9vbCBtX3BsYXRmb3JtUmVxdWVzdEJvZHlVcGRhdGVkIDog
MTsKICAgICAgICAgYm9vbCBtX3JlcG9ydFVwbG9hZFByb2dyZXNzIDogMTsKICAgICAgICAgYm9v
bCBtX3JlcG9ydExvYWRUaW1pbmcgOiAxOwogICAgICAgICBib29sIG1fcmVwb3J0UmF3SGVhZGVy
cyA6IDE7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkv
UmVzb3VyY2VSZXF1ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9ibGFja2JlcnJ5L1Jlc291cmNlUmVxdWVzdC5oCShyZXZpc2lvbiAxNDQwNjcpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvUmVzb3VyY2VSZXF1
ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNSw2ICsxMzUsOCBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCBkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpIHsgfQogICAgIHZvaWQgZG9VcGRhdGVSZXNv
dXJjZVJlcXVlc3QoKSB7IH0KKyAgICB2b2lkIGRvVXBkYXRlUGxhdGZvcm1IVFRQQm9keSgpIHsg
fQorICAgIHZvaWQgZG9VcGRhdGVSZXNvdXJjZUhUVFBCb2R5KCkgeyB9CiAKICAgICBQYXNzT3du
UHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4gZG9QbGF0Zm9ybUNvcHlEYXRhKFBh
c3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPikgY29uc3Q7CiAgICAgdm9p
ZCBkb1BsYXRmb3JtQWRvcHQoUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERh
dGE+KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFT
dHJlYW1DRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAkocmV2aXNpb24gMTQ0MDY3KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNiBAQAogZXh0ZXJuICJDIiB2b2lkIENGVVJMUmVx
dWVzdFNldEhUVFBSZXF1ZXN0Qm9keShDRk11dGFibGVVUkxSZXF1ZXN0UmVmIG11dGFibGVIVFRQ
UmVxdWVzdCwgQ0ZEYXRhUmVmIGh0dHBCb2R5KTsKIGV4dGVybiAiQyIgdm9pZCBDRlVSTFJlcXVl
c3RTZXRIVFRQSGVhZGVyRmllbGRWYWx1ZShDRk11dGFibGVVUkxSZXF1ZXN0UmVmIG11dGFibGVI
VFRQUmVxdWVzdCwgQ0ZTdHJpbmdSZWYgaHR0cEhlYWRlckZpZWxkLCBDRlN0cmluZ1JlZiBodHRw
SGVhZGVyRmllbGRWYWx1ZSk7CiBleHRlcm4gIkMiIHZvaWQgQ0ZVUkxSZXF1ZXN0U2V0SFRUUFJl
cXVlc3RCb2R5U3RyZWFtKENGTXV0YWJsZVVSTFJlcXVlc3RSZWYgcmVxLCBDRlJlYWRTdHJlYW1S
ZWYgYm9keVN0cmVhbSk7Ci1leHRlcm4gIkMiIENGUmVhZFN0cmVhbVJlZiBDRlVSTFJlcXVlc3RD
b3B5SFRUUFJlcXVlc3RCb2R5U3RyZWFtKENGVVJMUmVxdWVzdFJlZiByZXF1ZXN0KTsKICNlbGlm
IFBMQVRGT1JNKFdJTikKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxSZXF1ZXN0Lmg+CiAjZW5k
aWYKQEAgLTkwLDYgKzg5LDExIEBAIHN0YXRpYyB2b2lkIGZvcm1FdmVudENhbGxiYWNrKENGUmVh
ZFN0cmUKIAogc3RhdGljIENGU3RyaW5nUmVmIGZvcm1EYXRhUG9pbnRlclByb3BlcnR5TmFtZSA9
IENGU1RSKCJXZWJLaXRGb3JtRGF0YVBvaW50ZXIiKTsKIAorQ0ZTdHJpbmdSZWYgZm9ybURhdGFT
dHJlYW1MZW5ndGhQcm9wZXJ0eU5hbWUoKQoreworICAgIHJldHVybiBDRlNUUigiV2ViS2l0Rm9y
bURhdGFTdHJlYW1MZW5ndGgiKTsKK30KKwogc3RydWN0IEZvcm1DcmVhdGlvbkNvbnRleHQgewog
ICAgIFJlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGE7CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIHN0
cmVhbUxlbmd0aDsKQEAgLTMwNiwxMSArMzEwLDE1IEBAIHN0YXRpYyBDRlR5cGVSZWYgZm9ybUNv
cHlQcm9wZXJ0eShDRlJlYWQKIHsKICAgICBGb3JtU3RyZWFtRmllbGRzKiBmb3JtID0gc3RhdGlj
X2Nhc3Q8Rm9ybVN0cmVhbUZpZWxkcyo+KGNvbnRleHQpOwogCi0gICAgaWYgKGtDRkNvbXBhcmVF
cXVhbFRvICE9IENGU3RyaW5nQ29tcGFyZShwcm9wZXJ0eU5hbWUsIGZvcm1EYXRhUG9pbnRlclBy
b3BlcnR5TmFtZSwgMCkpCi0gICAgICAgIHJldHVybiAwOworICAgIGlmIChrQ0ZDb21wYXJlRXF1
YWxUbyA9PSBDRlN0cmluZ0NvbXBhcmUocHJvcGVydHlOYW1lLCBmb3JtRGF0YVBvaW50ZXJQcm9w
ZXJ0eU5hbWUsIDApKSB7CisgICAgICAgIGxvbmcgZm9ybURhdGFBc051bWJlciA9IHN0YXRpY19j
YXN0PGxvbmc+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGZvcm0tPmZvcm1EYXRhLmdldCgp
KSk7CisgICAgICAgIHJldHVybiBDRk51bWJlckNyZWF0ZSgwLCBrQ0ZOdW1iZXJMb25nVHlwZSwg
JmZvcm1EYXRhQXNOdW1iZXIpOworICAgIH0KKworICAgIGlmIChrQ0ZDb21wYXJlRXF1YWxUbyA9
PSBDRlN0cmluZ0NvbXBhcmUocHJvcGVydHlOYW1lLCBmb3JtRGF0YVN0cmVhbUxlbmd0aFByb3Bl
cnR5TmFtZSgpLCAwKSkKKyAgICAgICAgcmV0dXJuIENGU3RyaW5nQ3JlYXRlV2l0aEZvcm1hdCgw
LCAwLCBDRlNUUigiJWxsdSIpLCBmb3JtLT5zdHJlYW1MZW5ndGgpOwogCi0gICAgbG9uZyBmb3Jt
RGF0YUFzTnVtYmVyID0gc3RhdGljX2Nhc3Q8bG9uZz4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJf
dD4oZm9ybS0+Zm9ybURhdGEuZ2V0KCkpKTsKLSAgICByZXR1cm4gQ0ZOdW1iZXJDcmVhdGUoMCwg
a0NGTnVtYmVyTG9uZ1R5cGUsICZmb3JtRGF0YUFzTnVtYmVyKTsKKyAgICByZXR1cm4gMDsKIH0K
IAogc3RhdGljIHZvaWQgZm9ybVNjaGVkdWxlKENGUmVhZFN0cmVhbVJlZiwgQ0ZSdW5Mb29wUmVm
IHJ1bkxvb3AsIENGU3RyaW5nUmVmIHJ1bkxvb3BNb2RlLCB2b2lkKiBjb250ZXh0KQpAQCAtNDA1
LDEwICs0MTMsNiBAQCB2b2lkIHNldEhUVFBCb2R5KENGTXV0YWJsZVVSTFJlcXVlc3RSZWYgCiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICAvLyBTZXQgdGhlIGxlbmd0aC4KLSAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IGxlbmd0aFN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoRm9y
bWF0KDAsIDAsIENGU1RSKCIlbGxkIiksIGxlbmd0aCkpOwotICAgIENGVVJMUmVxdWVzdFNldEhU
VFBIZWFkZXJGaWVsZFZhbHVlKHJlcXVlc3QsIENGU1RSKCJDb250ZW50LUxlbmd0aCIpLCBsZW5n
dGhTdHJpbmcuZ2V0KCkpOwotCiAgICAgLy8gQ3JlYXRlIGFuZCBzZXQgdGhlIHN0cmVhbS4KIAog
ICAgIC8vIFBhc3MgdGhlIGxlbmd0aCBhbG9uZyB3aXRoIHRoZSBmb3JtRGF0YSBzbyBpdCBkb2Vz
IG5vdCBoYXZlIHRvIGJlIHJlY29tcHV0ZWQuCkBAIC00NDIsMTAgKzQ0Niw0IEBAIEZvcm1EYXRh
KiBodHRwQm9keUZyb21TdHJlYW0oQ0ZSZWFkU3RyZWEKICAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxGb3JtRGF0YSo+KHN0YXRpY19jYXN0PGludHB0cl90Pihmb3JtRGF0YVBvaW50ZXJBc051
bWJlcikpOwogfQogCi1QYXNzUmVmUHRyPEZvcm1EYXRhPiBodHRwQm9keUZyb21SZXF1ZXN0KENG
VVJMUmVxdWVzdFJlZiByZXF1ZXN0KQotewotICAgIFJldGFpblB0cjxDRlJlYWRTdHJlYW1SZWY+
IGJvZHlTdHJlYW0gPSBhZG9wdENGKENGVVJMUmVxdWVzdENvcHlIVFRQUmVxdWVzdEJvZHlTdHJl
YW0ocmVxdWVzdCkpOwotICAgIHJldHVybiBodHRwQm9keUZyb21TdHJlYW0oYm9keVN0cmVhbS5n
ZXQoKSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5o
CShyZXZpc2lvbiAxNDQwNjcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTAgKzQwLDExIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEZvcm1EYXRhOwogCiB2b2lkIHNldEhUVFBCb2R5
KENGTXV0YWJsZVVSTFJlcXVlc3RSZWYsIFBhc3NSZWZQdHI8Rm9ybURhdGE+KTsKLVBhc3NSZWZQ
dHI8Rm9ybURhdGE+IGh0dHBCb2R5RnJvbVJlcXVlc3QoQ0ZVUkxSZXF1ZXN0UmVmKTsKIAogRm9y
bURhdGEqIGh0dHBCb2R5RnJvbVN0cmVhbShDRlJlYWRTdHJlYW1SZWYpOwogCitDRlN0cmluZ1Jl
ZiBmb3JtRGF0YVN0cmVhbUxlbmd0aFByb3BlcnR5TmFtZSgpOworCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBGb3JtRGF0YVN0cmVhbUNGTmV0X2gKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRs
ZUNGTmV0LmNwcAkocmV2aXNpb24gMTQ0MDY3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTky
LDcgKzE5Miw3IEBAIHN0YXRpYyBDRlVSTFJlcXVlc3RSZWYgd2lsbFNlbmRSZXF1ZXN0KEMKICAg
ICBpZiAocmVxdWVzdC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBjZlJlcXVl
c3QgPSByZXF1ZXN0LmNmVVJMUmVxdWVzdCgpOworICAgIGNmUmVxdWVzdCA9IHJlcXVlc3QuY2ZV
UkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KTsKIAogICAgIENGUmV0YWluKGNmUmVxdWVzdCk7CiAg
ICAgcmV0dXJuIGNmUmVxdWVzdDsKQEAgLTIxOCw3ICsyMTgsNyBAQCBzdGF0aWMgdm9pZCBkaWRS
ZWNlaXZlUmVzcG9uc2UoQ0ZVUkxDb25uCiAgICAgaWYgKHN0YXR1c0NvZGUgIT0gMzA0KQogICAg
ICAgICBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KGNmUmVzcG9uc2UpOwogCi0gICAgaWYgKF9D
RlVSTFJlcXVlc3RDb3B5UHJvdG9jb2xQcm9wZXJ0eUZvcktleShoYW5kbGUtPmZpcnN0UmVxdWVz
dCgpLmNmVVJMUmVxdWVzdCgpLCBDRlNUUigiRm9yY2VIVE1MTUlNRVR5cGUiKSkpCisgICAgaWYg
KF9DRlVSTFJlcXVlc3RDb3B5UHJvdG9jb2xQcm9wZXJ0eUZvcktleShoYW5kbGUtPmZpcnN0UmVx
dWVzdCgpLmNmVVJMUmVxdWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5KSwgQ0ZTVFIoIkZvcmNlSFRN
TE1JTUVUeXBlIikpKQogICAgICAgICB3a1NldENGVVJMUmVzcG9uc2VNSU1FVHlwZShjZlJlc3Bv
bnNlLCBDRlNUUigidGV4dC9odG1sIikpOwogI2Vsc2UKICAgICBpZiAoIUNGVVJMUmVzcG9uc2VH
ZXRNSU1FVHlwZShjZlJlc3BvbnNlKSkgewpAQCAtNDI1LDcgKzQyNSw3IEBAIHZvaWQgUmVzb3Vy
Y2VIYW5kbGU6OmNyZWF0ZUNGVVJMQ29ubmVjdGkKICAgICAgICAgYXBwbHlCYXNpY0F1dGhvcml6
YXRpb25IZWFkZXIoZmlyc3RSZXF1ZXN0KCksIGQtPm1faW5pdGlhbENyZWRlbnRpYWwpOwogICAg
IH0KIAotICAgIFJldGFpblB0cjxDRk11dGFibGVVUkxSZXF1ZXN0UmVmPiByZXF1ZXN0ID0gYWRv
cHRDRihDRlVSTFJlcXVlc3RDcmVhdGVNdXRhYmxlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBm
aXJzdFJlcXVlc3QoKS5jZlVSTFJlcXVlc3QoKSkpOworICAgIFJldGFpblB0cjxDRk11dGFibGVV
UkxSZXF1ZXN0UmVmPiByZXF1ZXN0ID0gYWRvcHRDRihDRlVSTFJlcXVlc3RDcmVhdGVNdXRhYmxl
Q29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBmaXJzdFJlcXVlc3QoKS5jZlVSTFJlcXVlc3QoVXBk
YXRlSFRUUEJvZHkpKSk7CiAgICAgd2tTZXRSZXF1ZXN0U3RvcmFnZVNlc3Npb24oZC0+bV9zdG9y
YWdlU2Vzc2lvbi5nZXQoKSwgcmVxdWVzdC5nZXQoKSk7CiAgICAgCiAgICAgaWYgKCFzaG91bGRD
b250ZW50U25pZmYpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlUmVxdWVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0LmgJKHJldmlzaW9uIDE0NDA2NykKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTgwLDE4ICs4MCwyMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKICAgICAg
ICAgfQogCisgICAgICAgIHZvaWQgdXBkYXRlRnJvbURlbGVnYXRlUHJlc2VydmluZ09sZEhUVFBC
b2R5KENGVVJMUmVxdWVzdFJlZik7CiAKLSAgICAgICAgQ0ZVUkxSZXF1ZXN0UmVmIGNmVVJMUmVx
dWVzdCgpIGNvbnN0OworICAgICAgICBDRlVSTFJlcXVlc3RSZWYgY2ZVUkxSZXF1ZXN0KEhUVFBC
b2R5VXBkYXRlUG9saWN5KSBjb25zdDsKICNlbHNlCiAgICAgICAgIFJlc291cmNlUmVxdWVzdChO
U1VSTFJlcXVlc3QgKm5zUmVxdWVzdCkKICAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFz
ZSgpCi0gICAgICAgICAgICAsIG1fbnNSZXF1ZXN0KG5zUmVxdWVzdCkgeyB9CisgICAgICAgICAg
ICAsIG1fbnNSZXF1ZXN0KG5zUmVxdWVzdCkKKyAgICAgICAgeworICAgICAgICB9CiAKKyAgICAg
ICAgdm9pZCB1cGRhdGVGcm9tRGVsZWdhdGVQcmVzZXJ2aW5nT2xkSFRUUEJvZHkoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0Jik7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAgdm9p
ZCBhcHBseVdlYkFyY2hpdmVIYWNrRm9yTWFpbCgpOwotICAgICAgICBOU1VSTFJlcXVlc3QgKm5z
VVJMUmVxdWVzdCgpIGNvbnN0OworICAgICAgICBOU1VSTFJlcXVlc3QgKm5zVVJMUmVxdWVzdChI
VFRQQm9keVVwZGF0ZVBvbGljeSkgY29uc3Q7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDQUNIRV9Q
QVJUSVRJT05JTkcpCkBAIC0xMTUsNiArMTE5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAg
ICAgICAgIHZvaWQgZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QoKTsKICAgICAgICAgdm9pZCBkb1Vw
ZGF0ZVJlc291cmNlUmVxdWVzdCgpOworICAgICAgICB2b2lkIGRvVXBkYXRlUGxhdGZvcm1IVFRQ
Qm9keSgpOworICAgICAgICB2b2lkIGRvVXBkYXRlUmVzb3VyY2VIVFRQQm9keSgpOwogCiAgICAg
ICAgIFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPiBkb1BsYXRmb3Jt
Q29weURhdGEoUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+KSBjb25z
dDsKICAgICAgICAgdm9pZCBkb1BsYXRmb3JtQWRvcHQoUGFzc093blB0cjxDcm9zc1RocmVhZFJl
c291cmNlUmVxdWVzdERhdGE+KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwCShyZXZpc2lv
biAxNDQwNjcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
UmVxdWVzdENGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTksOSArOTksOSBAQCBzdGF0aWMg
Q0ZBcnJheVJlZiBjb3B5Q29udGVudERpc3Bvc2l0aW9uCiAgICAgcmV0dXJuIGZ1bmN0aW9uKHJl
cXVlc3QpOwogfQogCi1DRlVSTFJlcXVlc3RSZWYgUmVzb3VyY2VSZXF1ZXN0OjpjZlVSTFJlcXVl
c3QoKSBjb25zdAorQ0ZVUkxSZXF1ZXN0UmVmIFJlc291cmNlUmVxdWVzdDo6Y2ZVUkxSZXF1ZXN0
KEhUVFBCb2R5VXBkYXRlUG9saWN5IGJvZHlQb2xpY3kpIGNvbnN0CiB7Ci0gICAgdXBkYXRlUGxh
dGZvcm1SZXF1ZXN0KCk7CisgICAgdXBkYXRlUGxhdGZvcm1SZXF1ZXN0KGJvZHlQb2xpY3kpOwog
CiAgICAgcmV0dXJuIG1fY2ZSZXF1ZXN0LmdldCgpOwogfQpAQCAtMTQ2LDkgKzE0Niw3IEBAIHZv
aWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmUKICNlbmRpZgogCiAgICAgc2V0
SGVhZGVyRmllbGRzKGNmUmVxdWVzdCwgaHR0cEhlYWRlckZpZWxkcygpKTsKLSAgICBSZWZQdHI8
Rm9ybURhdGE+IGZvcm1EYXRhID0gaHR0cEJvZHkoKTsKLSAgICBpZiAoZm9ybURhdGEgJiYgIWZv
cm1EYXRhLT5pc0VtcHR5KCkpCi0gICAgICAgIFdlYkNvcmU6OnNldEhUVFBCb2R5KGNmUmVxdWVz
dCwgZm9ybURhdGEpOworCiAgICAgQ0ZVUkxSZXF1ZXN0U2V0U2hvdWxkSGFuZGxlSFRUUENvb2tp
ZXMoY2ZSZXF1ZXN0LCBhbGxvd0Nvb2tpZXMoKSk7CiAKICAgICB1bnNpZ25lZCBmYWxsYmFja0Nv
dW50ID0gbV9yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheS5z
aXplKCk7CkBAIC0xNzUsNiArMTczLDQyIEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0
ZVBsYXRmb3JtUmUKICNlbmRpZgogfQogCit2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQ
bGF0Zm9ybUhUVFBCb2R5KCkKK3sKKyAgICBDRk11dGFibGVVUkxSZXF1ZXN0UmVmIGNmUmVxdWVz
dDsKKworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gdXJsKEFkb3B0Q0YsIFJlc291cmNlUmVxdWVz
dDo6dXJsKCkuY3JlYXRlQ0ZVUkwoKSk7CisgICAgUmV0YWluUHRyPENGVVJMUmVmPiBmaXJzdFBh
cnR5Rm9yQ29va2llcyhBZG9wdENGLCBSZXNvdXJjZVJlcXVlc3Q6OmZpcnN0UGFydHlGb3JDb29r
aWVzKCkuY3JlYXRlQ0ZVUkwoKSk7CisgICAgaWYgKG1fY2ZSZXF1ZXN0KSB7CisgICAgICAgIGNm
UmVxdWVzdCA9IENGVVJMUmVxdWVzdENyZWF0ZU11dGFibGVDb3B5KDAsIG1fY2ZSZXF1ZXN0Lmdl
dCgpKTsKKyAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0VVJMKGNmUmVxdWVzdCwgdXJsLmdldCgpKTsK
KyAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0TWFpbkRvY3VtZW50VVJMKGNmUmVxdWVzdCwgZmlyc3RQ
YXJ0eUZvckNvb2tpZXMuZ2V0KCkpOworICAgICAgICBDRlVSTFJlcXVlc3RTZXRDYWNoZVBvbGlj
eShjZlJlcXVlc3QsIChDRlVSTFJlcXVlc3RDYWNoZVBvbGljeSljYWNoZVBvbGljeSgpKTsKKyAg
ICAgICAgQ0ZVUkxSZXF1ZXN0U2V0VGltZW91dEludGVydmFsKGNmUmVxdWVzdCwgdGltZW91dElu
dGVydmFsKCkpOworICAgIH0gZWxzZQorICAgICAgICBjZlJlcXVlc3QgPSBDRlVSTFJlcXVlc3RD
cmVhdGVNdXRhYmxlKDAsIHVybC5nZXQoKSwgKENGVVJMUmVxdWVzdENhY2hlUG9saWN5KWNhY2hl
UG9saWN5KCksIHRpbWVvdXRJbnRlcnZhbCgpLCBmaXJzdFBhcnR5Rm9yQ29va2llcy5nZXQoKSk7
CisKKyAgICBSZWZQdHI8Rm9ybURhdGE+IGZvcm1EYXRhID0gaHR0cEJvZHkoKTsKKyAgICBpZiAo
Zm9ybURhdGEgJiYgIWZvcm1EYXRhLT5pc0VtcHR5KCkpCisgICAgICAgIFdlYkNvcmU6OnNldEhU
VFBCb2R5KG5zUmVxdWVzdCwgZm9ybURhdGEpOworCisgICAgaWYgKFJldGFpblB0cjxDRlJlYWRT
dHJlYW1SZWY+IGJvZHlTdHJlYW0gPSBhZG9wdENGKENGVVJMUmVxdWVzdENvcHlIVFRQUmVxdWVz
dEJvZHlTdHJlYW0ocmVxdWVzdCkpKSB7CisgICAgICAgIC8vIEZvciBzdHJlYW1zLCBwcm92aWRl
IGEgQ29udGVudC1MZW5ndGggdG8gYXZvaWQgdXNpbmcgY2h1bmtlZCBlbmNvZGluZywgYW5kIHRv
IGdldCBhY2N1cmF0ZSB0b3RhbCBsZW5ndGggaW4gY2FsbGJhY2tzLgorICAgICAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IGxlbmd0aFN0cmluZyA9IGFkb3B0Q0YoQ0ZSZWFkU3RyZWFtQ29weVBy
b3BlcnR5KGJvZHlTdHJlYW0uZ2V0KCksIGZvcm1EYXRhU3RyZWFtTGVuZ3RoUHJvcGVydHlOYW1l
KCkpKTsKKyAgICAgICAgaWYgKGxlbmd0aFN0cmluZykgeworICAgICAgICAgICAgQ0ZVUkxSZXF1
ZXN0U2V0SFRUUEhlYWRlckZpZWxkVmFsdWUoY2ZSZXF1ZXN0LCBDRlNUUigiQ29udGVtdC1MZW5n
dGgiLCBsZW5ndGhTdHJpbmcuZ2V0KCkpKTsKKyAgICAgICAgICAgIC8vIFNpbmNlIHJlc291cmNl
IHJlcXVlc3QgaXMgYWxyZWFkeSBtYXJrZWQgdXBkYXRlZCwgd2UgbmVlZCB0byBrZWVwIGl0IHVw
IHRvIGRhdGUgdG9vLgorICAgICAgICAgICAgQVNTRVJUKG1fcmVzb3VyY2VSZXF1ZXN0VXBkYXRl
ZCk7CisgICAgICAgICAgICBtX2h0dHBIZWFkZXJGaWVsZHMuc2V0KCJDb250ZW50LUxlbmd0aCIs
IGxlbmd0aFN0cmluZy5nZXQoKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtX2NmUmVxdWVz
dC5hZG9wdENGKGNmUmVxdWVzdCk7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIHVwZGF0ZU5TVVJM
UmVxdWVzdCgpOworI2VuZGlmCit9CisKIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVJl
c291cmNlUmVxdWVzdCgpCiB7CiAgICAgaWYgKCFtX2NmUmVxdWVzdCkgewpAQCAtMjE3LDEwICsy
NTEsMjggQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUmVzb3VyY2VSZQogICAgICAg
ICAgICAgICAgIG1fcmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJy
YXkuYXBwZW5kKENGU3RyaW5nQ29udmVydEVuY29kaW5nVG9JQU5BQ2hhclNldE5hbWUoZW5jb2Rp
bmcpKTsKICAgICAgICAgfQogICAgIH0KK30KIAotICAgIG1faHR0cEJvZHkgPSBodHRwQm9keUZy
b21SZXF1ZXN0KG1fY2ZSZXF1ZXN0LmdldCgpKTsKK3ZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1Vw
ZGF0ZVJlc291cmNlSFRUUEJvZHkoKQoreworICAgIGlmICghbV9jZlJlcXVlc3QpIHsKKyAgICAg
ICAgbV9odHRwQm9keSA9IDA7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoUmV0
YWluUHRyPENGRGF0YVJlZj4gYm9keURhdGEgPSBhZG9wdENGKENGVVJMUmVxdWVzdENvcHlIVFRQ
UmVxdWVzdEJvZHkobV9jZlJlcXVlc3QuZ2V0KCkpKSkKKyAgICAgICAgbV9odHRwQm9keSA9IEZv
cm1EYXRhOjpjcmVhdGUoQ0ZEYXRhR2V0Qnl0ZVB0cihib2R5RGF0YS5nZXQoKSksIENGRGF0YUdl
dExlbmd0aChib2R5RGF0YS5nZXQoKSkpOworICAgIGVsc2UgaWYgKFJldGFpblB0cjxDRlJlYWRT
dHJlYW1SZWY+IGJvZHlTdHJlYW0gPSBhZG9wdENGKENGVVJMUmVxdWVzdENvcHlIVFRQUmVxdWVz
dEJvZHlTdHJlYW0ocmVxdWVzdCkpKSB7CisgICAgICAgIEZvcm1EYXRhKiBmb3JtRGF0YSA9IGh0
dHBCb2R5RnJvbVN0cmVhbShib2R5U3RyZWFtLmdldCgpKTsKKyAgICAgICAgLy8gVGhlcmUgaXMg
bm8gRm9ybURhdGEgb2JqZWN0IGlmIGEgY2xpZW50IHByb3ZpZGVkIGEgY3VzdG9tIGRhdGEgc3Ry
ZWFtLgorICAgICAgICAvLyBXZSBzaG91bGRuJ3QgYmUgbG9va2luZyBhdCBodHRwIGJvZHkgYWZ0
ZXIgY2xpZW50IGNhbGxiYWNrcy4KKyAgICAgICAgQVNTRVJUKGZvcm1EYXRhKTsKKyAgICAgICAg
aWYgKGZvcm1EYXRhKQorICAgICAgICAgICAgbV9odHRwQm9keSA9IGZvcm1EYXRhOworICAgIH0K
IH0KIAorCiB2b2lkIFJlc291cmNlUmVxdWVzdDo6c2V0U3RvcmFnZVNlc3Npb24oQ0ZVUkxTdG9y
YWdlU2Vzc2lvblJlZiBzdG9yYWdlU2Vzc2lvbikKIHsKICAgICB1cGRhdGVQbGF0Zm9ybVJlcXVl
c3QoKTsKQEAgLTIzNyw3ICsyODksNyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6c2V0U3RvcmFn
ZVNlc3Npb24oCiB2b2lkIFJlc291cmNlUmVxdWVzdDo6YXBwbHlXZWJBcmNoaXZlSGFja0Zvck1h
aWwoKQogewogICAgIC8vIEhhY2sgYmVjYXVzZSBNYWlsIGNoZWNrcyBmb3IgdGhpcyBwcm9wZXJ0
eSB0byBkZXRlY3QgZGF0YSAvIGFyY2hpdmUgbG9hZHMKLSAgICBfQ0ZVUkxSZXF1ZXN0U2V0UHJv
dG9jb2xQcm9wZXJ0eShjZlVSTFJlcXVlc3QoKSwgQ0ZTVFIoIldlYkRhdGFSZXF1ZXN0IiksIENG
U1RSKCIiKSk7CisgICAgX0NGVVJMUmVxdWVzdFNldFByb3RvY29sUHJvcGVydHkoY2ZVUkxSZXF1
ZXN0KERvTm90VXBkYXRlSFRUUEJvZHkpLCBDRlNUUigiV2ViRGF0YVJlcXVlc3QiKSwgQ0ZTVFIo
IiIpKTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2Nocm9taXVtL1Jlc291cmNlUmVxdWVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vUmVzb3VyY2VSZXF1ZXN0LmgJKHJldmlzaW9uIDE0
NDA2NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vUmVzb3Vy
Y2VSZXF1ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NSw4ICsxNDUsMTAgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBSZXNvdXJjZVJl
cXVlc3RCYXNlOwogCi0gICAgICAgIHZvaWQgZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QoKSB7fQot
ICAgICAgICB2b2lkIGRvVXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCkge30KKyAgICAgICAgdm9pZCBk
b1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpIHsgfQorICAgICAgICB2b2lkIGRvVXBkYXRlUmVzb3Vy
Y2VSZXF1ZXN0KCkgeyB9CisgICAgICAgIHZvaWQgZG9VcGRhdGVQbGF0Zm9ybUhUVFBCb2R5KCkg
eyB9CisgICAgICAgIHZvaWQgZG9VcGRhdGVSZXNvdXJjZUhUVFBCb2R5KCkgeyB9CiAKICAgICAg
ICAgUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IGRvUGxhdGZvcm1D
b3B5RGF0YShQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4pIGNvbnN0
OwogICAgICAgICB2b2lkIGRvUGxhdGZvcm1BZG9wdChQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVz
b3VyY2VSZXF1ZXN0RGF0YT4pOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL1Jlc291cmNlUmVxdWVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlcXVlc3QuaAkocmV2aXNpb24gMTQ0MDY3KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVxdWVzdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC02MSw2ICs2MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgewogICAgICAgICB9CiAKKyAgICAgICAgdm9pZCB1cGRhdGVGcm9tRGVsZWdhdGVQcmVz
ZXJ2aW5nT2xkSFRUUEJvZHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBkZWxlZ2F0ZVByb3ZpZGVk
UmVxdWVzdCkgeyAqdGhpcyA9IGRlbGVnYXRlUHJvdmlkZWRSZXF1ZXN0OyB9CisKICAgICAgICAg
Ly8gTmVlZGVkIGZvciBjb21wYXRpYmlsaXR5LgogICAgICAgICBDRlVSTFJlcXVlc3RSZWYgY2ZV
UkxSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gMDsgfQogCkBAIC03MSw4ICs3MywxMCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIFJlc291
cmNlUmVxdWVzdEJhc2U7CiAKLSAgICAgICAgdm9pZCBkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgp
IHt9Ci0gICAgICAgIHZvaWQgZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3QoKSB7fQorICAgICAgICB2
b2lkIGRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkgeyB9CisgICAgICAgIHZvaWQgZG9VcGRhdGVS
ZXNvdXJjZVJlcXVlc3QoKSB7IH0KKyAgICAgICAgdm9pZCBkb1VwZGF0ZVBsYXRmb3JtSFRUUEJv
ZHkoKSB7IH0KKyAgICAgICAgdm9pZCBkb1VwZGF0ZVJlc291cmNlSFRUUEJvZHkoKSB7IH0KIAog
ICAgICAgICBQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4gZG9QbGF0
Zm9ybUNvcHlEYXRhKFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPiBk
YXRhKSBjb25zdCB7IHJldHVybiBkYXRhOyB9CiAgICAgICAgIHZvaWQgZG9QbGF0Zm9ybUFkb3B0
KFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPikgeyB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Gb3JtRGF0YVN0cmVhbU1hYy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRh
U3RyZWFtTWFjLmgJKHJldmlzaW9uIDE0NDA2NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYg
KzQzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHZvaWQgc2V0SFRUUEJvZHkoTlNNdXRh
YmxlVVJMUmVxdWVzdCAqLCBQYXNzUmVmUHRyPEZvcm1EYXRhPik7CiAgICAgRm9ybURhdGEqIGh0
dHBCb2R5RnJvbVN0cmVhbShOU0lucHV0U3RyZWFtICopOwogCisgICAgQ0ZTdHJpbmdSZWYgZm9y
bURhdGFTdHJlYW1MZW5ndGhQcm9wZXJ0eU5hbWUoKTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gIVVTRShDRk5FVFdPUkspCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQkocmV2
aXNpb24gMTQ0MDY3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVz
b3VyY2VIYW5kbGVNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTE3MSw3ICsxNzEsNyBAQCB2b2lk
IFJlc291cmNlSGFuZGxlOjpjcmVhdGVOU1VSTENvbm5lY3RpCiAgICAgICAgIGFwcGx5QmFzaWNB
dXRob3JpemF0aW9uSGVhZGVyKGZpcnN0UmVxdWVzdCgpLCBkLT5tX2luaXRpYWxDcmVkZW50aWFs
KTsKICAgICB9CiAKLSAgICBOU1VSTFJlcXVlc3QgKm5zUmVxdWVzdCA9IGZpcnN0UmVxdWVzdCgp
Lm5zVVJMUmVxdWVzdCgpOworICAgIE5TVVJMUmVxdWVzdCAqbnNSZXF1ZXN0ID0gZmlyc3RSZXF1
ZXN0KCkubnNVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KTsKICAgICBpZiAoIXNob3VsZENvbnRl
bnRTbmlmZikgewogICAgICAgICBOU011dGFibGVVUkxSZXF1ZXN0ICptdXRhYmxlUmVxdWVzdCA9
IFtbbnNSZXF1ZXN0IG11dGFibGVDb3B5XSBhdXRvcmVsZWFzZV07CiAgICAgICAgIHdrU2V0TlNV
UkxSZXF1ZXN0U2hvdWxkQ29udGVudFNuaWZmKG11dGFibGVSZXF1ZXN0LCBOTyk7CkBAIC0yNTEs
NyArMjUxLDcgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6c3RhcnQoKQogICAgIGVsc2UKICAgICAg
ICAgZC0+bV9zdGFydFdoZW5TY2hlZHVsZWQgPSB0cnVlOwogCi0gICAgTE9HKE5ldHdvcmssICJI
YW5kbGUgJXAgc3RhcnRpbmcgY29ubmVjdGlvbiAlcCBmb3IgJUAiLCB0aGlzLCBjb25uZWN0aW9u
KCksIGZpcnN0UmVxdWVzdCgpLm5zVVJMUmVxdWVzdCgpKTsKKyAgICBMT0coTmV0d29yaywgIkhh
bmRsZSAlcCBzdGFydGluZyBjb25uZWN0aW9uICVwIGZvciAlQCIsIHRoaXMsIGNvbm5lY3Rpb24o
KSwgZmlyc3RSZXF1ZXN0KCkubnNVUkxSZXF1ZXN0KERvTm90VXBkYXRlSFRUUEJvZHkpKTsKICAg
ICAKICAgICBpZiAoZC0+bV9jb25uZWN0aW9uKSB7CiAgICAgICAgIGlmIChkLT5tX2RlZmVyc0xv
YWRpbmcpCkBAIC0zNDUsNyArMzQ1LDcgQEAgQ0ZTdHJpbmdSZWYgUmVzb3VyY2VIYW5kbGU6OnN5
bmNocm9ub3VzTAogCiB2b2lkIFJlc291cmNlSGFuZGxlOjpwbGF0Zm9ybUxvYWRSZXNvdXJjZVN5
bmNocm9ub3VzbHkoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgU3RvcmVkQ3JlZGVudGlhbHMgc3RvcmVkQ3JlZGVudGlhbHMsIFJlc291
cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgVmVjdG9yPGNoYXI+
JiBkYXRhKQogewotICAgIExPRyhOZXR3b3JrLCAiUmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtTG9h
ZFJlc291cmNlU3luY2hyb25vdXNseTolQCBhbGxvd1N0b3JlZENyZWRlbnRpYWxzOiV1IiwgcmVx
dWVzdC5uc1VSTFJlcXVlc3QoKSwgc3RvcmVkQ3JlZGVudGlhbHMpOworICAgIExPRyhOZXR3b3Jr
LCAiUmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtTG9hZFJlc291cmNlU3luY2hyb25vdXNseTolQCBh
bGxvd1N0b3JlZENyZWRlbnRpYWxzOiV1IiwgcmVxdWVzdC5uc1VSTFJlcXVlc3QoRG9Ob3RVcGRh
dGVIVFRQQm9keSksIHN0b3JlZENyZWRlbnRpYWxzKTsKIAogICAgIE5TRXJyb3IgKm5zRXJyb3Ig
PSBuaWw7CiAgICAgTlNVUkxSZXNwb25zZSAqbnNVUkxSZXNwb25zZSA9IG5pbDsKQEAgLTY0Nyw3
ICs2NDcsNyBAQCAtIChOU1VSTFJlcXVlc3QgKiljb25uZWN0aW9uOihOU1VSTENvbm5lCiAKICAg
ICBtX2hhbmRsZS0+d2lsbFNlbmRSZXF1ZXN0KHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwog
Ci0gICAgcmV0dXJuIHJlcXVlc3QubnNVUkxSZXF1ZXN0KCk7CisgICAgcmV0dXJuIHJlcXVlc3Qu
bnNVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KTsKIH0KIAogLSAoQk9PTCljb25uZWN0aW9uU2hv
dWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2U6KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24KQEAg
LTcxNiw3ICs3MTYsNyBAQCAtICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNv
CiAgICAgaWYgKHN0YXR1c0NvZGUgIT0gMzA0KQogICAgICAgICBhZGp1c3RNSU1FVHlwZUlmTmVj
ZXNzYXJ5KFtyIF9DRlVSTFJlc3BvbnNlXSk7CiAKLSAgICBpZiAoW21faGFuZGxlLT5maXJzdFJl
cXVlc3QoKS5uc1VSTFJlcXVlc3QoKSBfcHJvcGVydHlGb3JLZXk6QCJGb3JjZUhUTUxNSU1FVHlw
ZSJdKQorICAgIGlmIChbbV9oYW5kbGUtPmZpcnN0UmVxdWVzdCgpLm5zVVJMUmVxdWVzdChEb05v
dFVwZGF0ZUhUVFBCb2R5KSBfcHJvcGVydHlGb3JLZXk6QCJGb3JjZUhUTUxNSU1FVHlwZSJdKQog
ICAgICAgICBbciBfc2V0TUlNRVR5cGU6QCJ0ZXh0L2h0bWwiXTsKIAogICAgIG1faGFuZGxlLT5j
bGllbnQoKS0+ZGlkUmVjZWl2ZVJlc3BvbnNlKG1faGFuZGxlLCByKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVxdWVzdE1hYy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlcXVl
c3RNYWMubW0JKHJldmlzaW9uIDE0NDA2NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvbWFjL1Jlc291cmNlUmVxdWVzdE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDcsMTEg
KzQ3LDExIEBAIC0gKHZvaWQpc2V0Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWwKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1OU1VSTFJlcXVlc3QgKlJlc291cmNlUmVxdWVzdDo6bnNVUkxS
ZXF1ZXN0KCkgY29uc3QKLXsgCi0gICAgdXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCk7Ci0gICAgCi0g
ICAgcmV0dXJuIFtbbV9uc1JlcXVlc3QuZ2V0KCkgcmV0YWluXSBhdXRvcmVsZWFzZV07IAorTlNV
UkxSZXF1ZXN0ICpSZXNvdXJjZVJlcXVlc3Q6Om5zVVJMUmVxdWVzdChIVFRQQm9keVVwZGF0ZVBv
bGljeSBib2R5UG9saWN5KSBjb25zdAoreworICAgIHVwZGF0ZVBsYXRmb3JtUmVxdWVzdChib2R5
UG9saWN5KTsKKworICAgIHJldHVybiBbW21fbnNSZXF1ZXN0LmdldCgpIHJldGFpbl0gYXV0b3Jl
bGVhc2VdOwogfQogCiAjaWYgVVNFKENGTkVUV09SSykKQEAgLTEwNywxMiArMTA3LDYgQEAgdm9p
ZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUmVzb3VyY2VSZQogICAgICAgICB9CiAgICAgfQog
Ci0gICAgaWYgKE5TRGF0YSogYm9keURhdGEgPSBbbV9uc1JlcXVlc3QuZ2V0KCkgSFRUUEJvZHld
KQotICAgICAgICBtX2h0dHBCb2R5ID0gRm9ybURhdGE6OmNyZWF0ZShbYm9keURhdGEgYnl0ZXNd
LCBbYm9keURhdGEgbGVuZ3RoXSk7Ci0gICAgZWxzZSBpZiAoTlNJbnB1dFN0cmVhbSogYm9keVN0
cmVhbSA9IFttX25zUmVxdWVzdC5nZXQoKSBIVFRQQm9keVN0cmVhbV0pCi0gICAgICAgIGlmIChG
b3JtRGF0YSogZm9ybURhdGEgPSBodHRwQm9keUZyb21TdHJlYW0oYm9keVN0cmVhbSkpCi0gICAg
ICAgICAgICBtX2h0dHBCb2R5ID0gZm9ybURhdGE7Ci0KICNpZiBFTkFCTEUoQ0FDSEVfUEFSVElU
SU9OSU5HKQogICAgIE5TU3RyaW5nKiBjYWNoZVBhcnRpdGlvbiA9IFtOU1VSTFByb3RvY29sIHBy
b3BlcnR5Rm9yS2V5OihOU1N0cmluZyAqKXdrQ2FjaGVQYXJ0aXRpb25LZXkoKSBpblJlcXVlc3Q6
bV9uc1JlcXVlc3QuZ2V0KCldOwogICAgIGlmIChjYWNoZVBhcnRpdGlvbikKQEAgLTEyMCw2ICsx
MTQsMjAgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUmVzb3VyY2VSZQogI2VuZGlm
CiB9CiAKK3ZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVJlc291cmNlSFRUUEJvZHkoKQor
eworICAgIGlmIChOU0RhdGEqIGJvZHlEYXRhID0gW21fbnNSZXF1ZXN0LmdldCgpIEhUVFBCb2R5
XSkKKyAgICAgICAgbV9odHRwQm9keSA9IEZvcm1EYXRhOjpjcmVhdGUoW2JvZHlEYXRhIGJ5dGVz
XSwgW2JvZHlEYXRhIGxlbmd0aF0pOworICAgIGVsc2UgaWYgKE5TSW5wdXRTdHJlYW0qIGJvZHlT
dHJlYW0gPSBbbV9uc1JlcXVlc3QuZ2V0KCkgSFRUUEJvZHlTdHJlYW1dKSB7CisgICAgICAgIEZv
cm1EYXRhKiBmb3JtRGF0YSA9IGh0dHBCb2R5RnJvbVN0cmVhbShib2R5U3RyZWFtKTsKKyAgICAg
ICAgLy8gVGhlcmUgaXMgbm8gRm9ybURhdGEgb2JqZWN0IGlmIGEgY2xpZW50IHByb3ZpZGVkIGEg
Y3VzdG9tIGRhdGEgc3RyZWFtLgorICAgICAgICAvLyBXZSBzaG91bGRuJ3QgYmUgbG9va2luZyBh
dCBodHRwIGJvZHkgYWZ0ZXIgY2xpZW50IGNhbGxiYWNrcy4KKyAgICAgICAgQVNTRVJUKGZvcm1E
YXRhKTsKKyAgICAgICAgaWYgKGZvcm1EYXRhKQorICAgICAgICAgICAgbV9odHRwQm9keSA9IGZv
cm1EYXRhOworICAgIH0KK30KKwogdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZv
cm1SZXF1ZXN0KCkKIHsKICAgICBpZiAoaXNOdWxsKCkpIHsKQEAgLTEyNyw3ICsxMzUsNyBAQCB2
b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgCi0gICAgTlNNdXRhYmxlVVJMUmVxdWVzdCogbnNSZXF1ZXN0ID0gW21fbnNS
ZXF1ZXN0LmdldCgpIG11dGFibGVDb3B5XTsKKyAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpuc1Jl
cXVlc3QgPSBbbV9uc1JlcXVlc3QuZ2V0KCkgbXV0YWJsZUNvcHldOwogCiAgICAgaWYgKG5zUmVx
dWVzdCkKICAgICAgICAgW25zUmVxdWVzdCBzZXRVUkw6dXJsKCldOwpAQCAtMTc4LDIxICsxODYs
NTcgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZQogICAgICAgICBb
bnNSZXF1ZXN0IHNldENvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheTplbmNv
ZGluZ0ZhbGxiYWNrc107CiAgICAgfQogCisjaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykK
KyAgICBbTlNVUkxQcm90b2NvbCBzZXRQcm9wZXJ0eTptX2NhY2hlUGFydGl0aW9uIGZvcktleToo
TlNTdHJpbmcgKil3a0NhY2hlUGFydGl0aW9uS2V5KCkgaW5SZXF1ZXN0Om5zUmVxdWVzdF07Cisj
ZW5kaWYKKworICAgIG1fbnNSZXF1ZXN0LmFkb3B0TlMobnNSZXF1ZXN0KTsKK30KKwordm9pZCBS
ZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1IVFRQQm9keSgpCit7CisgICAgaWYgKGlz
TnVsbCgpKSB7CisgICAgICAgIEFTU0VSVCghbV9uc1JlcXVlc3QpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqbnNSZXF1ZXN0ID0gW21fbnNSZXF1
ZXN0LmdldCgpIG11dGFibGVDb3B5XTsKKworICAgIGlmIChuc1JlcXVlc3QpCisgICAgICAgIFtu
c1JlcXVlc3Qgc2V0VVJMOnVybCgpXTsKKyAgICBlbHNlCisgICAgICAgIG5zUmVxdWVzdCA9IFtb
TlNNdXRhYmxlVVJMUmVxdWVzdCBhbGxvY10gaW5pdFdpdGhVUkw6dXJsKCldOworCiAgICAgUmVm
UHRyPEZvcm1EYXRhPiBmb3JtRGF0YSA9IGh0dHBCb2R5KCk7CiAgICAgaWYgKGZvcm1EYXRhICYm
ICFmb3JtRGF0YS0+aXNFbXB0eSgpKQogICAgICAgICBXZWJDb3JlOjpzZXRIVFRQQm9keShuc1Jl
cXVlc3QsIGZvcm1EYXRhKTsKIAotI2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJT05JTkcpCi0gICAg
W05TVVJMUHJvdG9jb2wgc2V0UHJvcGVydHk6bV9jYWNoZVBhcnRpdGlvbiBmb3JLZXk6KE5TU3Ry
aW5nICopd2tDYWNoZVBhcnRpdGlvbktleSgpIGluUmVxdWVzdDpuc1JlcXVlc3RdOwotI2VuZGlm
CisgICAgaWYgKE5TSW5wdXRTdHJlYW0gKmJvZHlTdHJlYW0gPSBbbnNSZXF1ZXN0IEhUVFBCb2R5
U3RyZWFtXSkgeworICAgICAgICAvLyBGb3Igc3RyZWFtcywgcHJvdmlkZSBhIENvbnRlbnQtTGVu
Z3RoIHRvIGF2b2lkIHVzaW5nIGNodW5rZWQgZW5jb2RpbmcsIGFuZCB0byBnZXQgYWNjdXJhdGUg
dG90YWwgbGVuZ3RoIGluIGNhbGxiYWNrcy4KKyAgICAgICAgTlNTdHJpbmcgKmxlbmd0aFN0cmlu
ZyA9IFtib2R5U3RyZWFtIHByb3BlcnR5Rm9yS2V5OihOU1N0cmluZyAqKWZvcm1EYXRhU3RyZWFt
TGVuZ3RoUHJvcGVydHlOYW1lKCldOworICAgICAgICBpZiAobGVuZ3RoU3RyaW5nKSB7CisgICAg
ICAgICAgICBbbnNSZXF1ZXN0IHNldFZhbHVlOmxlbmd0aFN0cmluZyBmb3JIVFRQSGVhZGVyRmll
bGQ6QCJDb250ZW50LUxlbmd0aCJdOworICAgICAgICAgICAgLy8gU2luY2UgcmVzb3VyY2UgcmVx
dWVzdCBpcyBhbHJlYWR5IG1hcmtlZCB1cGRhdGVkLCB3ZSBuZWVkIHRvIGtlZXAgaXQgdXAgdG8g
ZGF0ZSB0b28uCisgICAgICAgICAgICBBU1NFUlQobV9yZXNvdXJjZVJlcXVlc3RVcGRhdGVkKTsK
KyAgICAgICAgICAgIG1faHR0cEhlYWRlckZpZWxkcy5zZXQoIkNvbnRlbnQtTGVuZ3RoIiwgbGVu
Z3RoU3RyaW5nKTsKKyAgICAgICAgfQorICAgIH0KIAogICAgIG1fbnNSZXF1ZXN0LmFkb3B0TlMo
bnNSZXF1ZXN0KTsKIH0KIAordm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZUZyb21EZWxlZ2F0
ZVByZXNlcnZpbmdPbGRIVFRQQm9keShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGRlbGVnYXRlUHJv
dmlkZWRSZXF1ZXN0KQoreworICAgIFJlZlB0cjxGb3JtRGF0YT4gb2xkSFRUUEJvZHkgPSBodHRw
Qm9keSgpOworCisgICAgKnRoaXMgPSBkZWxlZ2F0ZVByb3ZpZGVkUmVxdWVzdDsKKyAgICBzZXRI
VFRQQm9keShvbGRIVFRQQm9keS5yZWxlYXNlKCkpOworfQorCiB2b2lkIFJlc291cmNlUmVxdWVz
dDo6YXBwbHlXZWJBcmNoaXZlSGFja0Zvck1haWwoKQogewogICAgIC8vIEhhY2sgYmVjYXVzZSBN
YWlsIGNoZWNrcyBmb3IgdGhpcyBwcm9wZXJ0eSB0byBkZXRlY3QgZGF0YSAvIGFyY2hpdmUgbG9h
ZHMKLSAgICBbTlNVUkxQcm90b2NvbCBzZXRQcm9wZXJ0eTpAIiIgZm9yS2V5OkAiV2ViRGF0YVJl
cXVlc3QiIGluUmVxdWVzdDooTlNNdXRhYmxlVVJMUmVxdWVzdCAqKW5zVVJMUmVxdWVzdCgpXTsK
KyAgICBbTlNVUkxQcm90b2NvbCBzZXRQcm9wZXJ0eTpAIiIgZm9yS2V5OkAiV2ViRGF0YVJlcXVl
c3QiIGluUmVxdWVzdDooTlNNdXRhYmxlVVJMUmVxdWVzdCAqKW5zVVJMUmVxdWVzdChEb05vdFVw
ZGF0ZUhUVFBCb2R5KV07CiB9CiAKIHZvaWQgUmVzb3VyY2VSZXF1ZXN0OjpzZXRTdG9yYWdlU2Vz
c2lvbihDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uKQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9SZXNvdXJjZVJlcXVlc3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlUmVxdWVzdC5o
CShyZXZpc2lvbiAxNDQwNjcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0
L1Jlc291cmNlUmVxdWVzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSwxMyArNTksMTcgQEAgY2xh
c3MgTmV0d29ya2luZ0NvbnRleHQ7CiAgICAgICAgIHsKICAgICAgICAgfQogCisgICAgICAgIHZv
aWQgdXBkYXRlRnJvbURlbGVnYXRlUHJlc2VydmluZ09sZEhUVFBCb2R5KGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgZGVsZWdhdGVQcm92aWRlZFJlcXVlc3QpIHsgKnRoaXMgPSBkZWxlZ2F0ZVByb3Zp
ZGVkUmVxdWVzdDsgfQorCiAgICAgICAgIFFOZXR3b3JrUmVxdWVzdCB0b05ldHdvcmtSZXF1ZXN0
KE5ldHdvcmtpbmdDb250ZXh0KiA9IDApIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAg
ZnJpZW5kIGNsYXNzIFJlc291cmNlUmVxdWVzdEJhc2U7CiAKLSAgICAgICAgdm9pZCBkb1VwZGF0
ZVBsYXRmb3JtUmVxdWVzdCgpIHt9Ci0gICAgICAgIHZvaWQgZG9VcGRhdGVSZXNvdXJjZVJlcXVl
c3QoKSB7fQorICAgICAgICB2b2lkIGRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkgeyB9CisgICAg
ICAgIHZvaWQgZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3QoKSB7IH0KKyAgICAgICAgdm9pZCBkb1Vw
ZGF0ZVBsYXRmb3JtSFRUUEJvZHkoKSB7IH0KKyAgICAgICAgdm9pZCBkb1VwZGF0ZVJlc291cmNl
SFRUUEJvZHkoKSB7IH0KIAogICAgICAgICBQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VS
ZXF1ZXN0RGF0YT4gZG9QbGF0Zm9ybUNvcHlEYXRhKFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNv
dXJjZVJlcXVlc3REYXRhPiBkYXRhKSBjb25zdCB7IHJldHVybiBkYXRhOyB9CiAgICAgICAgIHZv
aWQgZG9QbGF0Zm9ybUFkb3B0KFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3RE
YXRhPikgeyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVz
b3VyY2VSZXF1ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdC5oCShyZXZpc2lvbiAxNDQwNjcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY3LDYgKzY3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAg
dXBkYXRlRnJvbVNvdXBNZXNzYWdlKHNvdXBNZXNzYWdlKTsKICAgICAgICAgfQogCisgICAgICAg
IHZvaWQgdXBkYXRlRnJvbURlbGVnYXRlUHJlc2VydmluZ09sZEhUVFBCb2R5KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgZGVsZWdhdGVQcm92aWRlZFJlcXVlc3QpIHsgKnRoaXMgPSBkZWxlZ2F0ZVBy
b3ZpZGVkUmVxdWVzdDsgfQorCiAgICAgICAgIHZvaWQgdXBkYXRlU291cE1lc3NhZ2UoU291cE1l
c3NhZ2UqKSBjb25zdDsKICAgICAgICAgU291cE1lc3NhZ2UqIHRvU291cE1lc3NhZ2UoKSBjb25z
dDsKICAgICAgICAgdm9pZCB1cGRhdGVGcm9tU291cE1lc3NhZ2UoU291cE1lc3NhZ2UqKTsKQEAg
LTgxLDggKzgzLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBTb3VwTWVzc2Fn
ZUZsYWdzIG1fc291cEZsYWdzOwogCi0gICAgICAgIHZvaWQgZG9VcGRhdGVQbGF0Zm9ybVJlcXVl
c3QoKSB7fTsKLSAgICAgICAgdm9pZCBkb1VwZGF0ZVJlc291cmNlUmVxdWVzdCgpIHt9OworICAg
ICAgICB2b2lkIGRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkgeyB9CisgICAgICAgIHZvaWQgZG9V
cGRhdGVSZXNvdXJjZVJlcXVlc3QoKSB7IH0KKyAgICAgICAgdm9pZCBkb1VwZGF0ZVBsYXRmb3Jt
SFRUUEJvZHkoKSB7IH0KKyAgICAgICAgdm9pZCBkb1VwZGF0ZVJlc291cmNlSFRUUEJvZHkoKSB7
IH0KIAogICAgICAgICBQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4g
ZG9QbGF0Zm9ybUNvcHlEYXRhKFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3RE
YXRhPiBkYXRhKSBjb25zdCB7IHJldHVybiBkYXRhOyB9CiAgICAgICAgIHZvaWQgZG9QbGF0Zm9y
bUFkb3B0KFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPikgeyB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNvdXJjZVJlcXVlc3Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNv
dXJjZVJlcXVlc3QuaAkocmV2aXNpb24gMTQ0MDY3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay93aW4vUmVzb3VyY2VSZXF1ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDYg
KzU4LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QoKSB7
IH0KICAgICB2b2lkIGRvVXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCkgeyB9CisgICAgdm9pZCBkb1Vw
ZGF0ZVBsYXRmb3JtSFRUUEJvZHkoKSB7IH0KKyAgICB2b2lkIGRvVXBkYXRlUmVzb3VyY2VIVFRQ
Qm9keSgpIHsgfQogCiAgICAgUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERh
dGE+IGRvUGxhdGZvcm1Db3B5RGF0YShQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1
ZXN0RGF0YT4gZGF0YSkgY29uc3QgeyByZXR1cm4gZGF0YTsgfQogICAgIHZvaWQgZG9QbGF0Zm9y
bUFkb3B0KFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPikgeyB9Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDQxMTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNiBAQAorMjAxMy0wMi0yNiAgQWxleGV5IFBy
b3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KKworICAgICAgICBEb24ndCBhZGQgYSBib2R5IHRv
IHBsYXRmb3JtIHJlcXVlc3QgdW50aWwgbmVjZXNzYXJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA5MDAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2ls
bFNlbmRSZXF1ZXN0KTogUmVzdG9yZSBib2R5IGFmdGVyIElQQy4gVGhlcmUKKyAgICAgICAgaXMg
bm8gd2F5IGZvciB0aGUgY2xpZW50IHRvIGNoYW5nZSBpdC4KKworICAgICAgICAqIFNoYXJlZC9E
b3dubG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6
c3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6c3RhcnRXaXRoSGFuZGxlKToKKyAg
ICAgICAgUGFzcyBVcGRhdGVIVFRQQm9keSB3aGVuIHBhc3NpbmcgYSByZXF1ZXN0IHRvIE5TVVJM
Q29ubmVjdGlvbi4KKworICAgICAgICAqIFNoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
TWFjLm1tOiAoQ29yZUlQQzo6OjplbmNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICBOZXZlciBz
ZXJpYWxpemUgdGhlIHJlcXVlc3QgYm9keS4gSXQncyBzbG93LCBhbmQgc29tZXRpbWVzIGltcG9z
c2libGUsIHNvIGp1c3QKKyAgICAgICAga2VlcGluZyB0aGluZ3MgY29uc2lzdGVudC4KKworICAg
ICAgICAqIFNoYXJlZC9tYWMvV2ViVVJMUmVxdWVzdE1hYy5tbTogKFdlYktpdDo6V2ViVVJMUmVx
dWVzdDo6cGxhdGZvcm1SZXF1ZXN0KToKKyAgICAgICAgUGFzcyBEb05vdFVwZGF0ZUhUVFBCb2R5
LCBhcyB3ZSBjYW4ndCB1cGRhdGUgaXQgb3V0c2lkZSBOZXR3b3JrUHJvY2Vzcy4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xN
YW5hZ2VyUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdl
clByb3h5OjpzdGFydExvYWRpbmcpOiBEaXR0by4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50Ojp3aWxs
U2VuZFJlcXVlc3RGb3JGcmFtZSk6CisgICAgICAgIFJlc3RvcmUgZXhpc3RpbmcgYm9keSBhZnRl
ciBhIGNsaWVudCBjYWxsLi4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2Vi
UGFnZU1hYy5tbTogKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1DYW5IYW5kbGVSZXF1ZXN0KToK
KyAgICAgICAgUGFzcyBEb05vdFVwZGF0ZUhUVFBCb2R5LCBhcyB3ZSBjYW4ndCB1cGRhdGUgaXQg
b3V0c2lkZSBOZXR3b3JrUHJvY2Vzcy4KKwogMjAxMy0wMi0yNiAgQW5kZXJzIENhcmxzc29uICA8
YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBhIGNvcHkvcGFzdGUgZXJyb3IgaW4g
V2ViTG9hZGVyQ2xpZW50OjpkaWRCbG9ja0luc2VjdXJlUGx1Z2luVmVyc2lvbgpJbmRleDogU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwCShyZXZpc2lvbiAxNDQwNjcpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODksNyAr
MTg5LDEwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXUKICAgICAv
LyBJZiB0aGlzIG1lc3NhZ2UgY2hhbmdlcyB0byBiZSBhc3luY2hyb25vdXMgd2UgbWlnaHQgaW50
cm9kdWNlIGEgc2l0dWF0aW9uIHdoZXJlIHRoZSBOZXR3b3JrUHJvY2VzcyBpcyBkZWFkbG9ja2Vk
IHdhaXRpbmcgZm9yIDYgY29ubmVjdGlvbnMKICAgICAvLyB0byBjb21wbGV0ZSB3aGlsZSB0aGUg
V2ViUHJvY2VzcyBpcyB3YWl0aW5nIGZvciBhIDd0aCB0byBjb21wbGV0ZS4KICAgICAvLyBJZiB3
ZSBldmVyIGNoYW5nZSB0aGlzIG1lc3NhZ2UgdG8gYmUgYXN5bmNocm9ub3VzIHdlIGhhdmUgdG8g
aW5jbHVkZSBzYWZlZ3VhcmRzIHRvIG1ha2Ugc3VyZSB0aGUgbmV3IGRlc2lnbiBpbnRlcmFjdHMg
d2VsbCB3aXRoIHN5bmMgWEhSLgotICAgIGlmICghc2VuZFN5bmMoTWVzc2FnZXM6OldlYlJlc291
cmNlTG9hZGVyOjpXaWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSksIE1l
c3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6V2lsbFNlbmRSZXF1ZXN0OjpSZXBseShyZXF1ZXN0
KSkpCisgICAgUmVzb3VyY2VSZXF1ZXN0IHJldHVybmVkUmVxdWVzdDsKKyAgICBpZiAoc2VuZFN5
bmMoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpXaWxsU2VuZFJlcXVlc3QocmVxdWVzdCwg
cmVkaXJlY3RSZXNwb25zZSksIE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6V2lsbFNlbmRS
ZXF1ZXN0OjpSZXBseShyZXR1cm5lZFJlcXVlc3QpKSkKKyAgICAgICAgcmVxdWVzdC51cGRhdGVG
cm9tRGVsZWdhdGVQcmVzZXJ2aW5nT2xkSFRUUEJvZHkocmV0dXJuZWRSZXF1ZXN0Lm5zVVJMUmVx
dWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5KSk7CisgICAgZWxzZQogICAgICAgICByZXF1ZXN0ID0g
UmVzb3VyY2VSZXF1ZXN0KCk7CiAKICAgICBSdW5Mb29wOjptYWluKCktPmRpc3BhdGNoKGJpbmQo
Jk5ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnJlY2VpdmVkUmVkaXJlY3QsICZOZXR3b3Jr
UHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlcigpLCB0aGlzLCBy
ZXF1ZXN0LnVybCgpKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL21h
Yy9Eb3dubG9hZE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93
bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5tbQkocmV2aXNpb24gMTQ0MDY3KQorKysgU291cmNlL1dl
YktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW0JKHdvcmtpbmcgY29weSkK
QEAgLTU5LDcgKzU5LDcgQEAgdm9pZCBEb3dubG9hZDo6c3RhcnQoKQogICAgIEFTU0VSVCghbV9k
ZWxlZ2F0ZSk7CiAKICAgICBtX2RlbGVnYXRlLmFkb3B0TlMoW1tXS0Rvd25sb2FkQXNEZWxlZ2F0
ZSBhbGxvY10gaW5pdFdpdGhEb3dubG9hZDp0aGlzXSk7Ci0gICAgbV9uc1VSTERvd25sb2FkLmFk
b3B0TlMoW1tOU1VSTERvd25sb2FkIGFsbG9jXSBpbml0V2l0aFJlcXVlc3Q6bV9yZXF1ZXN0Lm5z
VVJMUmVxdWVzdCgpIGRlbGVnYXRlOm1fZGVsZWdhdGUuZ2V0KCldKTsKKyAgICBtX25zVVJMRG93
bmxvYWQuYWRvcHROUyhbW05TVVJMRG93bmxvYWQgYWxsb2NdIGluaXRXaXRoUmVxdWVzdDptX3Jl
cXVlc3QubnNVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KSBkZWxlZ2F0ZTptX2RlbGVnYXRlLmdl
dCgpXSk7CiAKICAgICAvLyBGSVhNRTogQWxsb3cgdGhpcyB0byBiZSBjaGFuZ2VkIGJ5IHRoZSBj
bGllbnQuCiAgICAgW21fbnNVUkxEb3dubG9hZC5nZXQoKSBzZXREZWxldGVzRmlsZVVwb25GYWls
dXJlOk5PXTsKQEAgLTc1LDcgKzc1LDcgQEAgdm9pZCBEb3dubG9hZDo6c3RhcnRXaXRoSGFuZGxl
KFJlc291cmNlSAogCiAgICAgbV9kZWxlZ2F0ZS5hZG9wdE5TKFtbV0tEb3dubG9hZEFzRGVsZWdh
dGUgYWxsb2NdIGluaXRXaXRoRG93bmxvYWQ6dGhpc10pOwogICAgIG1fbnNVUkxEb3dubG9hZCA9
IFtOU1VSTERvd25sb2FkIF9kb3dubG9hZFdpdGhMb2FkaW5nQ29ubmVjdGlvbjpoYW5kbGUtPmNv
bm5lY3Rpb24oKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVxdWVzdDptX3JlcXVlc3QubnNVUkxSZXF1ZXN0KCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVl
c3Q6bV9yZXF1ZXN0Lm5zVVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSkKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2U6cmVz
cG9uc2UubnNVUkxSZXNwb25zZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxlZ2F0ZTptX2RlbGVnYXRlLmdldCgpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwcm94eTpwcm94eV07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYkNvcmVB
cmd1bWVudENvZGVyc01hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
bWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQkocmV2aXNpb24gMTQ0MDY3KQorKysgU291
cmNlL1dlYktpdDIvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0JKHdvcmtp
bmcgY29weSkKQEAgLTQwLDEzICs0MCwyMyBAQCBuYW1lc3BhY2UgQ29yZUlQQyB7CiAKIHZvaWQg
QXJndW1lbnRDb2RlcjxSZXNvdXJjZVJlcXVlc3Q+OjplbmNvZGVQbGF0Zm9ybURhdGEoQXJndW1l
bnRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVz
dCkKIHsKLSAgICBib29sIHJlcXVlc3RJc1ByZXNlbnQgPSByZXNvdXJjZVJlcXVlc3QubnNVUkxS
ZXF1ZXN0KCk7CisgICAgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gcmVxdWVzdFRvU2VyaWFsaXpl
ID0gcmVzb3VyY2VSZXF1ZXN0Lm5zVVJMUmVxdWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5KTsKKwor
ICAgIGJvb2wgcmVxdWVzdElzUHJlc2VudCA9IHJlcXVlc3RUb1NlcmlhbGl6ZTsKICAgICBlbmNv
ZGVyIDw8IHJlcXVlc3RJc1ByZXNlbnQ7CiAKICAgICBpZiAoIXJlcXVlc3RJc1ByZXNlbnQpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGRpY3Rpb25h
cnkoQWRvcHRDRiwgV0tOU1VSTFJlcXVlc3RDcmVhdGVTZXJpYWxpemFibGVSZXByZXNlbnRhdGlv
bihyZXNvdXJjZVJlcXVlc3QubnNVUkxSZXF1ZXN0KCksIENvcmVJUEM6OnRva2VuTnVsbFR5cGVS
ZWYoKSkpOworICAgIC8vIFdlIGRvbid0IHNlbmQgSFRUUCBib2R5IG92ZXIgSVBDIGZvciBiZXR0
ZXIgcGVyZm9ybWFuY2UuCisgICAgLy8gQWxzbywgaXQncyBub3QgYWx3YXlzIHBvc3NpYmxlIHRv
IGRvLCBhcyBzdHJlYW1zIGNhbiBvbmx5IGJlIGNyZWF0ZWQgaW4gcHJvY2VzcyB0aGF0IGRvZXMg
bmV0d29ya2luZy4KKyAgICBpZiAoW3JlcXVlc3RUb1NlcmlhbGl6ZS5nZXQoKSBIVFRQQm9keV0g
fHwgW3JlcXVlc3RUb1NlcmlhbGl6ZS5nZXQoKSBIVFRQQm9keVN0cmVhbV0pIHsKKyAgICAgICAg
cmVxdWVzdFRvU2VyaWFsaXplLmFkb3B0TlMoW3JlcXVlc3RUb1NlcmlhbGl6ZS5nZXQoKSBtdXRh
YmxlQ29weV0pOworICAgICAgICBbKE5TTXV0YWJsZVVSTFJlcXVlc3QgKilyZXF1ZXN0VG9TZXJp
YWxpemUuZ2V0KCkgc2V0SFRUUEJvZHk6bmlsXTsKKyAgICAgICAgWyhOU011dGFibGVVUkxSZXF1
ZXN0ICopcmVxdWVzdFRvU2VyaWFsaXplLmdldCgpIHNldEhUVFBCb2R5U3RyZWFtOm5pbF07Cisg
ICAgfQorCisgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gZGljdGlvbmFyeShBZG9wdENG
LCBXS05TVVJMUmVxdWVzdENyZWF0ZVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uKHJlcXVlc3RU
b1NlcmlhbGl6ZS5nZXQoKSwgQ29yZUlQQzo6dG9rZW5OdWxsVHlwZVJlZigpKSk7CiAgICAgQ29y
ZUlQQzo6ZW5jb2RlKGVuY29kZXIsIGRpY3Rpb25hcnkuZ2V0KCkpOwogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYlVSTFJlcXVlc3RNYWMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9XZWJVUkxSZXF1ZXN0TWFjLm1tCShyZXZpc2lvbiAx
NDQwNjcpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYlVSTFJlcXVlc3RNYWMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDggQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2lt
cG9ydCAiV2ViVVJMUmVxdWVzdC5oIgogCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIFdlYlVSTFJlcXVlc3Q6OldlYlVSTFJlcXVlc3QoUGxhdGZvcm1S
ZXF1ZXN0IHBsYXRmb3JtUmVxdWVzdCkKQEAgLTM1LDcgKzM3LDcgQEAgV2ViVVJMUmVxdWVzdDo6
V2ViVVJMUmVxdWVzdChQbGF0Zm9ybVJlcQogCiBQbGF0Zm9ybVJlcXVlc3QgV2ViVVJMUmVxdWVz
dDo6cGxhdGZvcm1SZXF1ZXN0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9yZXF1ZXN0Lm5zVVJM
UmVxdWVzdCgpOworICAgIHJldHVybiBtX3JlcXVlc3QubnNVUkxSZXF1ZXN0KERvTm90VXBkYXRl
SFRUUEJvZHkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xN
YW5hZ2VyUHJveHlNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1h
Yy5tbQkocmV2aXNpb24gMTQ0MDY3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdv
cmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1hYy5tbQko
d29ya2luZyBjb3B5KQpAQCAtMTMxLDcgKzEzMSw3IEBAIEN1c3RvbVByb3RvY29sTWFuYWdlclBy
b3h5OjpDdXN0b21Qcm90b2MKIAogdm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6c3Rh
cnRMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgY29yZVJlcXVlc3QpCiB7Ci0gICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gY29yZVJlcXVl
c3QubnNVUkxSZXF1ZXN0KCk7CisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gY29yZVJlcXVl
c3QubnNVUkxSZXF1ZXN0KERvTm90VXBkYXRlSFRUUEJvZHkpOwogICAgIGlmICghcmVxdWVzdCkK
ICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQuY3BwCShyZXZpc2lvbiAxNDQwNjcpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZVJlc291cmNlTG9hZENsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAg
dm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbgogCiAgICAgUmVmUHRyPFdl
YlVSTFJlcXVlc3Q+IHJldHVybmVkUmVxdWVzdCA9IGFkb3B0UmVmKHRvSW1wbChtX2NsaWVudC53
aWxsU2VuZFJlcXVlc3RGb3JGcmFtZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCBpZGVudGlm
aWVyLCB0b0FQSShyZXF1ZXN0KSwgdG9BUEkocmVkaXJlY3RSZXNwb25zZSksIG1fY2xpZW50LmNs
aWVudEluZm8pKSk7CiAgICAgaWYgKHJldHVybmVkUmVxdWVzdCkKLSAgICAgICAgcmVxdWVzdCA9
IHJldHVybmVkUmVxdWVzdC0+cmVzb3VyY2VSZXF1ZXN0KCk7CisgICAgICAgIHJlcXVlc3QudXBk
YXRlRnJvbURlbGVnYXRlUHJlc2VydmluZ09sZEhUVFBCb2R5KHJldHVybmVkUmVxdWVzdC0+cmVz
b3VyY2VSZXF1ZXN0KCkpOwogICAgIGVsc2UKICAgICAgICAgcmVxdWVzdCA9IFJlc291cmNlUmVx
dWVzdCgpOwogfQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9X
ZWJQYWdlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvV2ViUGFnZU1hYy5tbQkocmV2aXNpb24gMTQ0MDY3KQorKysgU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC03MjUsNyArNzI1LDcgQEAgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IFdlYlBhZ2U6OmNhY2hl
ZAogCiBib29sIFdlYlBhZ2U6OnBsYXRmb3JtQ2FuSGFuZGxlUmVxdWVzdChjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7Ci0gICAgaWYgKFtOU1VSTENvbm5lY3Rpb24g
Y2FuSGFuZGxlUmVxdWVzdDpyZXF1ZXN0Lm5zVVJMUmVxdWVzdCgpXSkKKyAgICBpZiAoW05TVVJM
Q29ubmVjdGlvbiBjYW5IYW5kbGVSZXF1ZXN0OnJlcXVlc3QubnNVUkxSZXF1ZXN0KERvTm90VXBk
YXRlSFRUUEJvZHkpXSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBGSVhNRTogUmV0
dXJuIHRydWUgaWYgdGhpcyBzY2hlbWUgaXMgYW55IG9uZSBXZWJLaXQyIGtub3dzIGhvdyB0byBo
YW5kbGUuCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDQxMTYpCisrKyBTb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOCBAQAorMjAx
My0wMi0yNiAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KKworICAgICAgICBE
b24ndCBhZGQgYSBib2R5IHRvIHBsYXRmb3JtIHJlcXVlc3QgdW50aWwgbmVjZXNzYXJ5CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA5MDAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJLaXQxIGJlaGF2
aW9yIGlzIHVuY2hhbmdlZCwgYm9keSBpcyBhZGRlZCBvbiBldmVyeSBjb252ZXJzaW9uLgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAg
IChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2Fk
KToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZExvYWRSZXNvdXJj
ZUZyb21NZW1vcnlDYWNoZSk6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6YXNzaWdu
SWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKToKKyAgICAgICAgKFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6Cisg
ICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp1cGRhdGVHbG9i
YWxIaXN0b3J5KToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5IYW5kbGVSZXF1
ZXN0KToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkRhdGFTb3VyY2UubW06CisgICAgICAgICgtW1dl
YkRhdGFTb3VyY2UgaW5pdGlhbFJlcXVlc3RdKToKKyAgICAgICAgKC1bV2ViRGF0YVNvdXJjZSBy
ZXF1ZXN0XSk6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2Vi
RnJhbWUgX2xvYWREYXRhOk1JTUVUeXBlOnRleHRFbmNvZGluZ05hbWU6YmFzZVVSTDp1bnJlYWNo
YWJsZVVSTDpdKToKKwogMjAxMy0wMi0yNiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeDsgdXNlIGNvcnJlY3QgbWFjcm8gZm9y
IHBsYXRmb3JtIG5hbWUgaW4gRmVhdHVyZURlZmluZXMueGNjb25maWcuCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5tbQkocmV2aXNpb24gMTQ0MDY3KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4Miw3ICsy
ODIsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb252ZXJ0TWFpblJlCiAgICAgV2Vi
VmlldyAqd2ViVmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7CiAgICAgQ0ZVUkxD
b25uZWN0aW9uUmVmIGNvbm5lY3Rpb24gPSBoYW5kbGUtPmNvbm5lY3Rpb24oKTsKICAgICBbV2Vi
RG93bmxvYWQgX2Rvd25sb2FkV2l0aExvYWRpbmdDRlVSTENvbm5lY3Rpb246Y29ubmVjdGlvbgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVxdWVzdDpyZXF1ZXN0LmNmVVJMUmVxdWVzdCgpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXF1ZXN0OnJlcXVlc3QuY2ZVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXNwb25zZTpyZXNwb25zZS5jZlVSTFJlc3BvbnNlKCkKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZWdhdGU6W3dl
YlZpZXcgZG93bmxvYWREZWxlZ2F0ZV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJveHk6bmlsXTsKQEAgLTI5
Niw3ICsyOTYsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb252ZXJ0TWFpblJlCiAg
ICAgCiAgICAgV2ViVmlldyAqd2ViVmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7
CiAgICAgW1dlYkRvd25sb2FkIF9kb3dubG9hZFdpdGhMb2FkaW5nQ29ubmVjdGlvbjpoYW5kbGUt
PmNvbm5lY3Rpb24oKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlcXVlc3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXNwb25zZTpyZXNwb25zZS5uc1VSTFJlc3BvbnNlKCkKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGVnYXRlOlt3ZWJWaWV3
IGRvd25sb2FkRGVsZWdhdGVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm94eTpwcm94eV07CkBAIC0zMTIsNyArMzEy
LDcgQEAgYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRMbwogICAgIGlmICgh
aW1wbGVtZW50YXRpb25zLT5kaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGVGdW5jKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBDYWxsUmVzb3VyY2VMb2FkRGVsZWdhdGUoaW1wbGVt
ZW50YXRpb25zLT5kaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGVGdW5jLCB3ZWJWaWV3LCBA
c2VsZWN0b3Iod2ViVmlldzpkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGU6cmVzcG9uc2U6
bGVuZ3RoOmZyb21EYXRhU291cmNlOiksIHJlcXVlc3QubnNVUkxSZXF1ZXN0KCksIHJlc3BvbnNl
Lm5zVVJMUmVzcG9uc2UoKSwgbGVuZ3RoLCBkYXRhU291cmNlKGxvYWRlcikpOworICAgIENhbGxS
ZXNvdXJjZUxvYWREZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbnMtPmRpZExvYWRSZXNvdXJjZUZyb21N
ZW1vcnlDYWNoZUZ1bmMsIHdlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmRpZExvYWRSZXNvdXJj
ZUZyb21NZW1vcnlDYWNoZTpyZXNwb25zZTpsZW5ndGg6ZnJvbURhdGFTb3VyY2U6KSwgcmVxdWVz
dC5uc1VSTFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpLCByZXNwb25zZS5uc1VSTFJlc3BvbnNlKCks
IGxlbmd0aCwgZGF0YVNvdXJjZShsb2FkZXIpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAt
MzI0LDcgKzMyNCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmFzc2lnbklkZW50aWYK
ICAgICBpZCBvYmplY3QgPSBuaWw7CiAgICAgQk9PTCBzaG91bGRSZWxlYXNlID0gTk87CiAgICAg
aWYgKGltcGxlbWVudGF0aW9ucy0+aWRlbnRpZmllckZvclJlcXVlc3RGdW5jKQotICAgICAgICBv
YmplY3QgPSBDYWxsUmVzb3VyY2VMb2FkRGVsZWdhdGUoaW1wbGVtZW50YXRpb25zLT5pZGVudGlm
aWVyRm9yUmVxdWVzdEZ1bmMsIHdlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmlkZW50aWZpZXJG
b3JJbml0aWFsUmVxdWVzdDpmcm9tRGF0YVNvdXJjZTopLCByZXF1ZXN0Lm5zVVJMUmVxdWVzdCgp
LCBkYXRhU291cmNlKGxvYWRlcikpOworICAgICAgICBvYmplY3QgPSBDYWxsUmVzb3VyY2VMb2Fk
RGVsZWdhdGUoaW1wbGVtZW50YXRpb25zLT5pZGVudGlmaWVyRm9yUmVxdWVzdEZ1bmMsIHdlYlZp
ZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmlkZW50aWZpZXJGb3JJbml0aWFsUmVxdWVzdDpmcm9tRGF0
YVNvdXJjZTopLCByZXF1ZXN0Lm5zVVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSksIGRhdGFTb3Vy
Y2UobG9hZGVyKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIG9iamVjdCA9IFtbTlNPYmplY3QgYWxs
b2NdIGluaXRdOwogICAgICAgICBzaG91bGRSZWxlYXNlID0gWUVTOwpAQCAtMzQ2LDcgKzM0Niw3
IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFMKICAgICBpZiAocmVk
aXJlY3RSZXNwb25zZS5pc051bGwoKSkKICAgICAgICAgc3RhdGljX2Nhc3Q8V2ViRG9jdW1lbnRM
b2FkZXJNYWMqPihsb2FkZXIpLT5pbmNyZWFzZUxvYWRDb3VudChpZGVudGlmaWVyKTsKIAotICAg
IE5TVVJMUmVxdWVzdCAqY3VycmVudFVSTFJlcXVlc3QgPSByZXF1ZXN0Lm5zVVJMUmVxdWVzdCgp
OworICAgIE5TVVJMUmVxdWVzdCAqY3VycmVudFVSTFJlcXVlc3QgPSByZXF1ZXN0Lm5zVVJMUmVx
dWVzdChVcGRhdGVIVFRQQm9keSk7CiAgICAgTlNVUkxSZXF1ZXN0ICpuZXdVUkxSZXF1ZXN0ID0g
Y3VycmVudFVSTFJlcXVlc3Q7CiAgICAgaWYgKGltcGxlbWVudGF0aW9ucy0+d2lsbFNlbmRSZXF1
ZXN0RnVuYykKICAgICAgICAgbmV3VVJMUmVxdWVzdCA9IChOU1VSTFJlcXVlc3QgKilDYWxsUmVz
b3VyY2VMb2FkRGVsZWdhdGUoaW1wbGVtZW50YXRpb25zLT53aWxsU2VuZFJlcXVlc3RGdW5jLCB3
ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpyZXNvdXJjZTp3aWxsU2VuZFJlcXVlc3Q6cmVkaXJl
Y3RSZXNwb25zZTpmcm9tRGF0YVNvdXJjZTopLCBbd2ViVmlldyBfb2JqZWN0Rm9ySWRlbnRpZmll
cjppZGVudGlmaWVyXSwgY3VycmVudFVSTFJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UubnNVUkxS
ZXNwb25zZSgpLCBkYXRhU291cmNlKGxvYWRlcikpOwpAQCAtNzI0LDcgKzcyNCw3IEBAIHZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWQKIAogICAgIFtbd2ViVmlldyBfcG9s
aWN5RGVsZWdhdGVGb3J3YXJkZXJdIHdlYlZpZXc6d2ViVmlldwogICAgICAgICAgICAgICAgICAg
ICAgICAgZGVjaWRlUG9saWN5Rm9yTUlNRVR5cGU6cmVzcG9uc2UubWltZVR5cGUoKQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Q6cmVxdWVzdC5uc1VSTFJl
cXVlc3QoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Q6
cmVxdWVzdC5uc1VSTFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmcmFtZTptX3dlYkZyYW1lLmdldCgpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGVjaXNpb25MaXN0ZW5lcjpzZXRVcFBvbGljeUxpc3RlbmVy
KGZ1bmN0aW9uKS5nZXQoKV07CiB9CkBAIC03MzUsNyArNzM1LDcgQEAgdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZAogICAgIFdlYlZpZXcgKndlYlZpZXcgPSBnZXRXZWJW
aWV3KG1fd2ViRnJhbWUuZ2V0KCkpOwogICAgIFtbd2ViVmlldyBfcG9saWN5RGVsZWdhdGVGb3J3
YXJkZXJdIHdlYlZpZXc6d2ViVmlldwogICAgICAgICAgICAgZGVjaWRlUG9saWN5Rm9yTmV3V2lu
ZG93QWN0aW9uOmFjdGlvbkRpY3Rpb25hcnkoYWN0aW9uLCBmb3JtU3RhdGUpCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0OnJlcXVlc3QubnNVUkxS
ZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3
RnJhbWVOYW1lOmZyYW1lTmFtZQogICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNpc2lvbkxp
c3RlbmVyOnNldFVwUG9saWN5TGlzdGVuZXIoZnVuY3Rpb24pLmdldCgpXTsKIH0KQEAgLTc0Niw3
ICs3NDYsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkCiAgICAg
V2ViVmlldyAqd2ViVmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7CiAgICAgW1t3
ZWJWaWV3IF9wb2xpY3lEZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzp3ZWJWaWV3CiAgICAgICAg
ICAgICAgICAgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjphY3Rpb25EaWN0aW9uYXJ5
KGFjdGlvbiwgZm9ybVN0YXRlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlcXVlc3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlcXVlc3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoVXBkYXRlSFRU
UEJvZHkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZTpt
X3dlYkZyYW1lLmdldCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjaXNpb25M
aXN0ZW5lcjpzZXRVcFBvbGljeUxpc3RlbmVyKGZ1bmN0aW9uKS5nZXQoKV07CiB9CkBAIC04NzAs
NyArODcwLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dXBkYXRlR2xvYmFsSAogICAg
ICAgICBpZiAoaW1wbGVtZW50YXRpb25zLT5uYXZpZ2F0ZWRGdW5jKSB7CiAgICAgICAgICAgICBX
ZWJOYXZpZ2F0aW9uRGF0YSAqZGF0YSA9IFtbV2ViTmF2aWdhdGlvbkRhdGEgYWxsb2NdIGluaXRX
aXRoVVJMU3RyaW5nOmxvYWRlci0+dXJsRm9ySGlzdG9yeSgpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRpdGxlOm5pbE9yTlNTdHJpbmcobG9hZGVyLT50aXRsZSgpLnN0cmluZygpKQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG9yaWdpbmFsUmVxdWVzdDpsb2FkZXItPm9yaWdpbmFsUmVxdWVzdENvcHkoKS5uc1VSTFJlcXVl
c3QoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG9yaWdpbmFsUmVxdWVzdDpsb2FkZXItPm9yaWdpbmFsUmVxdWVzdENv
cHkoKS5uc1VSTFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3Bv
bnNlOmxvYWRlci0+cmVzcG9uc2UoKS5uc1VSTFJlc3BvbnNlKCkKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzU3Vic3Rp
dHV0ZURhdGE6bG9hZGVyLT5zdWJzdGl0dXRlRGF0YSgpLmlzVmFsaWQoKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRS
ZWRpcmVjdFNvdXJjZTpsb2FkZXItPmNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeSgpXTsK
QEAgLTEwMjYsNyArMTAyNiw3IEBAIGJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNhbkhhbmRs
ZVJlcXUKICAgICBGcmFtZSogZnJhbWUgPSBjb3JlKG1fd2ViRnJhbWUuZ2V0KCkpOwogICAgIFBh
Z2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpOwogICAgIEJPT0wgZm9yTWFpbkZyYW1lID0gcGFnZSAm
JiBwYWdlLT5tYWluRnJhbWUoKSA9PSBmcmFtZTsKLSAgICByZXR1cm4gW1dlYlZpZXcgX2Nhbkhh
bmRsZVJlcXVlc3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoKSBmb3JNYWluRnJhbWU6Zm9yTWFpbkZy
YW1lXTsKKyAgICByZXR1cm4gW1dlYlZpZXcgX2NhbkhhbmRsZVJlcXVlc3Q6cmVxdWVzdC5uc1VS
TFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpIGZvck1haW5GcmFtZTpmb3JNYWluRnJhbWVdOwogfQog
CiBib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5TaG93TUlNRVR5cGUoY29uc3QgU3RyaW5n
JiBNSU1FVHlwZSkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGF0
YVNvdXJjZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRh
dGFTb3VyY2UubW0JKHJldmlzaW9uIDE0NDA2NykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViRGF0YVNvdXJjZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDIzLDcgKzQyMyw3IEBAIC0g
KFdlYkZyYW1lICopd2ViRnJhbWUKIAogLSAoTlNVUkxSZXF1ZXN0ICopaW5pdGlhbFJlcXVlc3QK
IHsKLSAgICByZXR1cm4gdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5vcmlnaW5hbFJlcXVl
c3QoKS5uc1VSTFJlcXVlc3QoKTsKKyAgICByZXR1cm4gdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9h
ZGVyLT5vcmlnaW5hbFJlcXVlc3QoKS5uc1VSTFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpOwogfQog
CiAtIChOU011dGFibGVVUkxSZXF1ZXN0ICopcmVxdWVzdApAQCAtNDMzLDcgKzQzMyw3IEBAIC0g
KE5TTXV0YWJsZVVSTFJlcXVlc3QgKilyZXF1ZXN0CiAgICAgICAgIHJldHVybiBuaWw7CiAKICAg
ICAvLyBGSVhNRTogdGhpcyBjYXN0IGlzIGR1YmlvdXMKLSAgICByZXR1cm4gKE5TTXV0YWJsZVVS
TFJlcXVlc3QgKil0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPnJlcXVlc3QoKS5uc1VSTFJl
cXVlc3QoKTsKKyAgICByZXR1cm4gKE5TTXV0YWJsZVVSTFJlcXVlc3QgKil0b1ByaXZhdGUoX3By
aXZhdGUpLT5sb2FkZXItPnJlcXVlc3QoKS5uc1VSTFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpOwog
fQogCiAtIChOU1VSTFJlc3BvbnNlICopcmVzcG9uc2UKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViRnJhbWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJGcmFtZS5tbQkocmV2aXNpb24gMTQ0MDY3KQorKysgU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJGcmFtZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTM3Niw3ICsxMzc2LDcgQEAg
LSAodm9pZClfbG9hZERhdGE6KE5TRGF0YSAqKWRhdGEgTUlNRVR5cAogICAgIFJlc291cmNlUmVx
dWVzdCByZXF1ZXN0KFtiYXNlVVJMIGFic29sdXRlVVJMXSk7CiAKICAgICAvLyBoYWNrIGJlY2F1
c2UgTWFpbCBjaGVja3MgZm9yIHRoaXMgcHJvcGVydHkgdG8gZGV0ZWN0IGRhdGEgLyBhcmNoaXZl
IGxvYWRzCi0gICAgW05TVVJMUHJvdG9jb2wgc2V0UHJvcGVydHk6QCIiIGZvcktleTpAIldlYkRh
dGFSZXF1ZXN0IiBpblJlcXVlc3Q6KE5TTXV0YWJsZVVSTFJlcXVlc3QgKilyZXF1ZXN0Lm5zVVJM
UmVxdWVzdCgpXTsKKyAgICBbTlNVUkxQcm90b2NvbCBzZXRQcm9wZXJ0eTpAIiIgZm9yS2V5OkAi
V2ViRGF0YVJlcXVlc3QiIGluUmVxdWVzdDooTlNNdXRhYmxlVVJMUmVxdWVzdCAqKXJlcXVlc3Qu
bnNVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KV07CiAKICAgICBTdWJzdGl0dXRlRGF0YSBzdWJz
dGl0dXRlRGF0YShXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OndyYXBOU0RhdGEoZGF0YSksIE1JTUVU
eXBlLCBlbmNvZGluZ05hbWUsIFt1bnJlYWNoYWJsZVVSTCBhYnNvbHV0ZVVSTF0sIHJlc3BvbnNl
VVJMKTsKIApJbmRleDogU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ0MTE3KQorKysgU291cmNl
L1dlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIw
MTMtMDItMjYgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CisKKyAgICAgICAg
RG9uJ3QgYWRkIGEgYm9keSB0byBwbGF0Zm9ybSByZXF1ZXN0IHVudGlsIG5lY2Vzc2FyeQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwOTAwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViS2l0MSBiZWhh
dmlvciBpcyB1bmNoYW5nZWQsIGJvZHkgaXMgYWRkZWQgb24gZXZlcnkgY29udmVyc2lvbi4KKwor
ICAgICAgICAqIFdlYkRvd25sb2FkQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViRG93bmxvYWQ6Omlu
aXQpOgorICAgICAgICAoV2ViRG93bmxvYWQ6OmluaXRXaXRoUmVxdWVzdCk6CisgICAgICAgIChX
ZWJEb3dubG9hZDo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJNdXRhYmxlVVJMUmVx
dWVzdC5jcHA6CisgICAgICAgIChXZWJNdXRhYmxlVVJMUmVxdWVzdDo6Y2ZSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYk11dGFibGVVUkxSZXF1ZXN0OjptdXRhYmxlQ29weSk6CisgICAgICAgICogV2Vi
Vmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3OjpjYW5IYW5kbGVSZXF1ZXN0KToKKwogMjAxMy0w
Mi0yNiAgUm9nZXIgRm9uZyAgPHJvZ2VyX2ZvbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQgQXBwbGVXaW4gYnVpbGQgZml4LgpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViRG93
bmxvYWRDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViRG93bmxv
YWRDRk5ldC5jcHAJKHJldmlzaW9uIDE0NDA2NykKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkRv
d25sb2FkQ0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgV2Vi
RG93bmxvYWQ6OmluaXQoUmVzb3VyY2VIYW5kbGUqIGgKICAgICAgICAgZGVjaWRlRGVzdGluYXRp
b25XaXRoU3VnZ2VzdGVkT2JqZWN0TmFtZUNhbGxiYWNrLCBkaWRDcmVhdGVEZXN0aW5hdGlvbkNh
bGxiYWNrLCBkaWRGaW5pc2hDYWxsYmFjaywgZGlkRmFpbENhbGxiYWNrfTsKIAogICAgIG1fcmVx
dWVzdC5hZG9wdFJlZihXZWJNdXRhYmxlVVJMUmVxdWVzdDo6Y3JlYXRlSW5zdGFuY2UocmVxdWVz
dCkpOwotICAgIG1fZG93bmxvYWQuYWRvcHRDRihDRlVSTERvd25sb2FkQ3JlYXRlQW5kU3RhcnRX
aXRoTG9hZGluZ0Nvbm5lY3Rpb24oMCwgY29ubmVjdGlvbiwgcmVxdWVzdC5jZlVSTFJlcXVlc3Qo
KSwgcmVzcG9uc2UuY2ZVUkxSZXNwb25zZSgpLCAmY2xpZW50KSk7CisgICAgbV9kb3dubG9hZC5h
ZG9wdENGKENGVVJMRG93bmxvYWRDcmVhdGVBbmRTdGFydFdpdGhMb2FkaW5nQ29ubmVjdGlvbigw
LCBjb25uZWN0aW9uLCByZXF1ZXN0LmNmVVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSksIHJlc3Bv
bnNlLmNmVVJMUmVzcG9uc2UoKSwgJmNsaWVudCkpOwogCiAgICAgLy8gSXQgaXMgcG9zc2libGUg
Zm9yIENGVVJMRG93bmxvYWRDcmVhdGVBbmRTdGFydFdpdGhMb2FkaW5nQ29ubmVjdGlvbigpIHRv
IGZhaWwgaWYgdGhlIHBhc3NlZCBpbiBDRlVSTENvbm5lY3Rpb24gaXMgbm90IGluIGEgImRvd25s
b2FkYWJsZSBzdGF0ZSIKICAgICAvLyBIb3dldmVyLCB3ZSBzaG91bGQgbmV2ZXIgaGl0IHRoYXQg
Y2FzZQpAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgV2ViRG93bmxvYWQ6OmluaXQoY29uc3QgS1VS
TCYgdXJsLCAKICAgICBMT0dfRVJST1IoIkRlbGVnYXRlIGlzICVwIiwgbV9kZWxlZ2F0ZS5nZXQo
KSk7CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCh1cmwpOwotICAgIENGVVJMUmVxdWVz
dFJlZiBjZlJlcXVlc3QgPSByZXF1ZXN0LmNmVVJMUmVxdWVzdCgpOworICAgIENGVVJMUmVxdWVz
dFJlZiBjZlJlcXVlc3QgPSByZXF1ZXN0LmNmVVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSk7CiAK
ICAgICBDRlVSTERvd25sb2FkQ2xpZW50IGNsaWVudCA9IHswLCB0aGlzLCAwLCAwLCAwLCBkaWRT
dGFydENhbGxiYWNrLCB3aWxsU2VuZFJlcXVlc3RDYWxsYmFjaywgZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlQ2FsbGJhY2ssIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRpZFJlY2VpdmVSZXNwb25zZUNhbGxiYWNrLCB3aWxsUmVzdW1lV2l0aFJlc3BvbnNlQ2Fs
bGJhY2ssIGRpZFJlY2VpdmVEYXRhQ2FsbGJhY2ssIHNob3VsZERlY29kZURhdGFPZk1JTUVUeXBl
Q2FsbGJhY2ssIApAQCAtMTM4LDcgKzEzOCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
V2ViRG93bmxvYWQ6OmkKICAgICBtX2RlbGVnYXRlID0gZGVsZWdhdGU7CiAgICAgTE9HKERvd25s
b2FkLCAiRGVsZWdhdGUgaXMgJXAiLCBtX2RlbGVnYXRlLmdldCgpKTsKIAotICAgIFJldGFpblB0
cjxDRlVSTFJlcXVlc3RSZWY+IGNmUmVxdWVzdCA9IHdlYlJlcXVlc3QtPnJlc291cmNlUmVxdWVz
dCgpLmNmVVJMUmVxdWVzdCgpOworICAgIFJldGFpblB0cjxDRlVSTFJlcXVlc3RSZWY+IGNmUmVx
dWVzdCA9IHdlYlJlcXVlc3QtPnJlc291cmNlUmVxdWVzdCgpLmNmVVJMUmVxdWVzdChVcGRhdGVI
VFRQQm9keSk7CiAKICAgICBDRlVSTERvd25sb2FkQ2xpZW50IGNsaWVudCA9IHswLCB0aGlzLCAw
LCAwLCAwLCBkaWRTdGFydENhbGxiYWNrLCB3aWxsU2VuZFJlcXVlc3RDYWxsYmFjaywgZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2FsbGJhY2ssIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVSZXNwb25zZUNhbGxiYWNrLCB3aWxsUmVzdW1lV2l0
aFJlc3BvbnNlQ2FsbGJhY2ssIGRpZFJlY2VpdmVEYXRhQ2FsbGJhY2ssIHNob3VsZERlY29kZURh
dGFPZk1JTUVUeXBlQ2FsbGJhY2ssIApAQCAtMzczLDcgKzM3Myw3IEBAIENGVVJMUmVxdWVzdFJl
ZiBXZWJEb3dubG9hZDo6d2lsbFNlbmRSZXEKIAogICAgIENPTVB0cjxXZWJNdXRhYmxlVVJMUmVx
dWVzdD4gZmluYWxXZWJSZXF1ZXN0KEFkb3B0Q09NLCBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6Y3Jl
YXRlSW5zdGFuY2UoZmluYWxSZXF1ZXN0LmdldCgpKSk7CiAgICAgbV9yZXF1ZXN0ID0gZmluYWxX
ZWJSZXF1ZXN0LmdldCgpOwotICAgIENGVVJMUmVxdWVzdFJlZiByZXN1bHQgPSBmaW5hbFdlYlJl
cXVlc3QtPnJlc291cmNlUmVxdWVzdCgpLmNmVVJMUmVxdWVzdCgpOworICAgIENGVVJMUmVxdWVz
dFJlZiByZXN1bHQgPSBmaW5hbFdlYlJlcXVlc3QtPnJlc291cmNlUmVxdWVzdCgpLmNmVVJMUmVx
dWVzdChVcGRhdGVIVFRQQm9keSk7CiAgICAgQ0ZSZXRhaW4ocmVzdWx0KTsKICAgICByZXR1cm4g
cmVzdWx0OwogfQpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0
LmNwcAkocmV2aXNpb24gMTQ0MDY3KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViTXV0YWJsZVVS
TFJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjYsNyArMzY2LDcgQEAgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBXZWJNdXRhYmxlVVJMUgogCiBDRlVSTFJlcXVlc3RSZWYgU1RETUVU
SE9EQ0FMTFRZUEUgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OmNmUmVxdWVzdCgpCiB7Ci0gICAgcmV0
dXJuIG1fcmVxdWVzdC5jZlVSTFJlcXVlc3QoKTsKKyAgICByZXR1cm4gbV9yZXF1ZXN0LmNmVVJM
UmVxdWVzdChVcGRhdGVIVFRQQm9keSk7CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
V2ViTXV0YWJsZVVSTFJlcXVlc3Q6Om11dGFibGVDb3B5KApAQCAtMzc2LDcgKzM3Niw3IEBAIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViTXV0YWJsZVVSTFIKICAgICAgICAgcmV0dXJuIEVf
UE9JTlRFUjsKIAogI2lmIFVTRShDRk5FVFdPUkspCi0gICAgUmV0YWluUHRyPENGTXV0YWJsZVVS
TFJlcXVlc3RSZWY+IG11dGFibGVSZXF1ZXN0KEFkb3B0Q0YsIENGVVJMUmVxdWVzdENyZWF0ZU11
dGFibGVDb3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fcmVxdWVzdC5jZlVSTFJlcXVlc3QoKSkp
OworICAgIFJldGFpblB0cjxDRk11dGFibGVVUkxSZXF1ZXN0UmVmPiBtdXRhYmxlUmVxdWVzdChB
ZG9wdENGLCBDRlVSTFJlcXVlc3RDcmVhdGVNdXRhYmxlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBtX3JlcXVlc3QuY2ZVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KSkpOwogICAgICpyZXN1bHQg
PSBjcmVhdGVJbnN0YW5jZShSZXNvdXJjZVJlcXVlc3QobXV0YWJsZVJlcXVlc3QuZ2V0KCkpKTsK
ICAgICByZXR1cm4gU19PSzsKICNlbHNlCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkocmV2aXNp
b24gMTQ0MDY3KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEyODYsNyArMTI4Niw3IEBAIGJvb2wgV2ViVmlldzo6Y2FuSGFuZGxlUmVxdWVzdChj
b25zdCBXZWIKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICNpZiBVU0UoQ0ZORVRXT1JLKQotICAg
IGlmIChDRlVSTFByb3RvY29sQ2FuSGFuZGxlUmVxdWVzdChyZXF1ZXN0LmNmVVJMUmVxdWVzdCgp
KSkKKyAgICBpZiAoQ0ZVUkxQcm90b2NvbENhbkhhbmRsZVJlcXVlc3QocmVxdWVzdC5jZlVSTFJl
cXVlc3QoVXBkYXRlSFRUUEJvZHkpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBG
SVhNRTogTWFjIFdlYktpdCBjYWxscyBfcmVwcmVzZW50YXRpb25FeGlzdHNGb3JVUkxTY2hlbWUg
aGVyZQo=
</data>
<flag name="commit-queue"
          id="211058"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190428</attachid>
            <date>2013-02-26 20:11:20 -0800</date>
            <delta_ts>2013-02-27 10:08:29 -0800</delta_ts>
            <desc>and don&apos;t break Mac, too</desc>
            <filename>BodyInNetworkProcess.txt</filename>
            <type>text/plain</type>
            <size>60415</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NDExNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg3IEBACisyMDEzLTAyLTI2ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIERvbid0IGFkZCBhIGJvZHkg
dG8gcGxhdGZvcm0gcmVxdWVzdCB1bnRpbCBuZWNlc3NhcnkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDkwMAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAg
ICAgIFJlc291cmNlUmVxdWVzdCBub3cgaGF2ZSBtb3JlIHN0YXRlIGZvciBzeW5jaW5nIGJldHdl
ZW4gcmVzb3VyY2UgYW5kIHBsYXRmb3JtIHBhcnRzLgorICAgICAgICBJbiBhZGRpdGlvbiB0byB0
cmFja2luZyB3aGljaCBpcyB1cCB0byBkYXRlLCB3ZSBhbHNvIHRyYWNrIHdoaWNoIGhhcyB1cCB0
byBkYXRlCisgICAgICAgIEhUVFAgQm9keS4KKworICAgICAgICBUaGUgcmVhc29uIGlzIHRoYXQg
d2UgZG9uJ3QgbmVlZCB0aGUgYm9keSBvbiByZXF1ZXN0IGJlZm9yZSBpdCdzIGFjdHVhbGx5IHNl
bnQsCisgICAgICAgIGFuZCB3ZSBhY3R1YWxseSBjYW5ub3QgYnVpbGQgaXQgd2hlbiBuZXR3b3Jr
aW5nIGlzIG91dCBvZiBwcm9jZXNzLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46IFVwZGF0
ZWQgZXhwb3J0cy4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0
QmFzZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRIVFRQQm9keSk6
IFVwZGF0ZSBIVFRQIGJvZHkgYmVmb3JlIHJldHVybmluZyBpdC4KKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdEJhc2U6OnVwZGF0ZVBsYXRmb3JtUmVxdWVzdCk6IFVwZGF0ZSBhY2Nv
cmRpbmcgdG8gSFRUUEJvZHlVcGRhdGVQb2xpY3kuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3RCYXNlOjp1cGRhdGVSZXNvdXJjZVJlcXVlc3QpOiBEaXR0by4KKworICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpmb3JtRGF0YVN0cmVhbUxlbmd0aFByb3BlcnR5TmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpmb3JtQ29weVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OnNldEhUVFBCb2R5KToK
KyAgICAgICAgQ2hhbmdlZCB0byBub3QgdXBkYXRlIENvbnRlbnQtTGVuZ3RoIGluIHBsYXRmb3Jt
IHJlcXVlc3QgZGlyZWN0bHkuIFdlIG5lZWQgdG8ga2VlcCBpdAorICAgICAgICBpbiBzeW5jIHdp
dGggcmVzb3VyY2UgcmVxdWVzdCwgYW5kIGl0J3MgZWFzaWVyIHRvIGRvIGluIGEgY2FsbGVyLiBF
eHBvc2VkIGNvbXB1dGVkCisgICAgICAgIGxlbmd0aCBhcyBhIHByb3BlcnR5IGRvIGF2b2lkIGR1
cGxpY2F0aW5nIHRoZSB3b3JrLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Gb3Jt
RGF0YVN0cmVhbUNGTmV0Lmg6IFJlbW92ZWQgdW5uZWNlc3NhcnkgaHR0cEJvZHlGcm9tU3RyZWFt
KCkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNv
cmU6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRs
ZTo6Y3JlYXRlQ0ZVUkxDb25uZWN0aW9uKToKKyAgICAgICAgVXBkYXRlIGJvZHkgd2hlbiBuZWNl
c3NhcnkuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6bnNVUkxSZXF1ZXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVSZXNvdXJjZVJl
cXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVJlc291
cmNlSFRUUEJvZHkpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybUhUVFBCb2R5KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdDo6dXBkYXRlRnJvbURlbGVnYXRlUHJlc2VydmluZ09sZEhU
VFBCb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6YXBwbHlXZWJBcmNo
aXZlSGFja0Zvck1haWwpOgorICAgICAgICBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Lmg6IFRyYWNrIGJvZHkgdXAtdG8tZGF0ZSBzdGF0ZS4K
KworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0OjpjZlVSTFJlcXVlc3QpOiBIb25v
ciBIVFRQQm9keVVwZGF0ZVBvbGljeS4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QpOiBEb24ndCB1cGRhdGUgYm9keSBoZXJlLgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtSFRUUEJvZHkp
OiBVcGRhdGUgdGhlIGJvZHksIGFuZCBtYWtlIHN1cmUKKyAgICAgICAgdGhhdCBDb250ZW50LUxl
bmd0aCBpcyBjb3JyZWN0LgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpkb1Vw
ZGF0ZVJlc291cmNlUmVxdWVzdCk6IERvbid0IHVwZGF0ZSBib2R5IGhlcmUuCisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUmVzb3VyY2VIVFRQQm9keSk6IFVwZGF0
ZSB0aGUgYm9keSwgZml4aW5nIGEgYnVnCisgICAgICAgIHdoZXJlIGJvZHkgc3RyZWFtIHdhcyBs
b3N0IGlmIHRoaXMgZnVuY3Rpb24gZ290IGNhbGxlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdDo6YXBwbHlXZWJBcmNoaXZlSGFja0Zvck1haWwpOiBObyBuZWVkIHRvIHVwZGF0
ZSBib2R5IGZvciB0aGlzIG9uZS4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jl
c291cmNlUmVxdWVzdE1hYy5tbTogRGl0dG8gKGJ1dCB0aGlzIGRpZG4ndCBoYXZlIGEgYnVnCisg
ICAgICAgIHdpdGggc3RyZWFtcyBpbiBkb1VwZGF0ZVJlc291cmNlUmVxdWVzdCgpKS4KKworICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLmg6IEZvcndhcmQg
ZGVjbGFyZSBmb3JtRGF0YVN0cmVhbUxlbmd0aFByb3BlcnR5TmFtZSgpLgorCisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZTo6Y3JlYXRlTlNVUkxDb25uZWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUhhbmRsZTo6cGxhdGZvcm1Mb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKC1b
V2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZSBjb25uZWN0aW9uOndpbGxTZW5kUmVxdWVz
dDpyZWRpcmVjdFJlc3BvbnNlOl0pOgorICAgICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVB
c0RlbGVnYXRlIGNvbm5lY3Rpb246ZGlkUmVjZWl2ZVJlc3BvbnNlOl0pOgorICAgICAgICBVcGRh
dGUgYm9keSB3aGVuIG5lY2Vzc2FyeS4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvYmxh
Y2tiZXJyeS9SZXNvdXJjZVJlcXVlc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2No
cm9taXVtL1Jlc291cmNlUmVxdWVzdC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZVJlcXVlc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291
cmNlUmVxdWVzdC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJl
cXVlc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNvdXJjZVJlcXVlc3Qu
aDoKKyAgICAgICAgQWRkZWQgc3R1YnMgZm9yIG5ldyBmdW5jdGlvbnMuIFRoZXNlIHBvcnRzIGRv
bid0IGtlZXAgYSBwbGF0Zm9ybSByZXF1ZXN0IGluIFJlc291cmNlUmVxdWVzdCwKKyAgICAgICAg
YW5kIGRvbid0IG5lZWQgdXBkYXRpbmcuCisKIDIwMTMtMDItMjYgIFN0ZXBoZW4gQ2hlbm5leSAg
PHNjaGVubmV5QGNocm9taXVtLm9yZz4KIAogICAgICAgICBmZURpc3BsYWNlbWVudE1hcCBmaWx0
ZXIgZ2V0cyBjb2xvciBzcGFjZSB3cm9uZwpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlz
aW9uIDE0NDA2NykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNv
cHkpCkBAIC00NDYsNiArNDQ2LDcgQEAgX19aTjdXZWJDb3JlMTVQcm90ZWN0aW9uU3BhY2VDMUVS
S04zV1RGNgogX19aTjdXZWJDb3JlMTVQcm90ZWN0aW9uU3BhY2VDMUV2CiBfX1pON1dlYkNvcmUx
NVJlc291cmNlUmVxdWVzdDIxaHR0cFBpcGVsaW5pbmdFbmFibGVkRXYKIF9fWk43V2ViQ29yZTE1
UmVzb3VyY2VSZXF1ZXN0MjRzZXRIVFRQUGlwZWxpbmluZ0VuYWJsZWRFYgorX19aTjdXZWJDb3Jl
MTVSZXNvdXJjZVJlcXVlc3QzOXVwZGF0ZUZyb21EZWxlZ2F0ZVByZXNlcnZpbmdPbGRIVFRQQm9k
eUVSS1MwXwogX19aTjdXZWJDb3JlMTVTY3JvbGxBbGlnbm1lbnQxN2FsaWduQ2VudGVyQWx3YXlz
RQogX19aTjdXZWJDb3JlMTVTY3JvbGxBbGlnbm1lbnQxOWFsaWduVG9FZGdlSWZOZWVkZWRFCiBf
X1pON1dlYkNvcmUxNVN0b3JhZ2VTdHJhdGVneTIxbG9jYWxTdG9yYWdlTmFtZXNwYWNlRVJLTjNX
VEY2U3RyaW5nRWoKQEAgLTEzMjAsNyArMTMyMSw3IEBAIF9fWk5LN1dlYkNvcmUxNVByb3RlY3Rp
b25TcGFjZTRob3N0RXYKIF9fWk5LN1dlYkNvcmUxNVByb3RlY3Rpb25TcGFjZTRwb3J0RXYKIF9f
Wk5LN1dlYkNvcmUxNVByb3RlY3Rpb25TcGFjZTVyZWFsbUV2CiBfX1pOSzdXZWJDb3JlMTVQcm90
ZWN0aW9uU3BhY2U3aXNQcm94eUV2Ci1fX1pOSzdXZWJDb3JlMTVSZXNvdXJjZVJlcXVlc3QxMm5z
VVJMUmVxdWVzdEV2CitfX1pOSzdXZWJDb3JlMTVSZXNvdXJjZVJlcXVlc3QxMm5zVVJMUmVxdWVz
dEVOU18yMEhUVFBCb2R5VXBkYXRlUG9saWN5RQogX19aTks3V2ViQ29yZTE1VmlzaWJsZVBvc2l0
aW9uMTRjaGFyYWN0ZXJBZnRlckV2CiBfX1pOSzdXZWJDb3JlMTVWaXNpYmxlUG9zaXRpb24xNGxv
Y2FsQ2FyZXRSZWN0RVJQTlNfMTJSZW5kZXJPYmplY3RFCiBfX1pOSzdXZWJDb3JlMTVWaXNpYmxl
UG9zaXRpb24xOWFic29sdXRlQ2FyZXRCb3VuZHNFdgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCShyZXZp
c2lvbiAxNDQwNjcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
UmVxdWVzdEJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDEsMjIgKzM0MSwyNCBAQCB2b2lk
IFJlc291cmNlUmVxdWVzdEJhc2U6OnNldFJlc3BvbnNlQ29uCiAgICAgICAgIG1fcGxhdGZvcm1S
ZXF1ZXN0VXBkYXRlZCA9IGZhbHNlOwogfQogCi1Gb3JtRGF0YSogUmVzb3VyY2VSZXF1ZXN0QmFz
ZTo6aHR0cEJvZHkoKSBjb25zdCAKLXsgCi0gICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7IAot
ICAgIAotICAgIHJldHVybiBtX2h0dHBCb2R5LmdldCgpOyAKK0Zvcm1EYXRhKiBSZXNvdXJjZVJl
cXVlc3RCYXNlOjpodHRwQm9keSgpIGNvbnN0Cit7CisgICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0
KFVwZGF0ZUhUVFBCb2R5KTsKKworICAgIHJldHVybiBtX2h0dHBCb2R5LmdldCgpOwogfQogCiB2
b2lkIFJlc291cmNlUmVxdWVzdEJhc2U6OnNldEhUVFBCb2R5KFBhc3NSZWZQdHI8Rm9ybURhdGE+
IGh0dHBCb2R5KQogewotICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOyAKLSAgICAKLSAgICBt
X2h0dHBCb2R5ID0gaHR0cEJvZHk7IAotICAgIAorICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgp
OworCisgICAgbV9odHRwQm9keSA9IGh0dHBCb2R5OworCisgICAgbV9yZXNvdXJjZVJlcXVlc3RC
b2R5VXBkYXRlZCA9IHRydWU7CisKICAgICBpZiAodXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWls
eSgpKQotICAgICAgICBtX3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQgPSBmYWxzZTsKLX0gCisgICAg
ICAgIG1fcGxhdGZvcm1SZXF1ZXN0Qm9keVVwZGF0ZWQgPSBmYWxzZTsKK30KIAogYm9vbCBSZXNv
dXJjZVJlcXVlc3RCYXNlOjphbGxvd0Nvb2tpZXMoKSBjb25zdAogewpAQCAtNDk0LDI0ICs0OTYs
MzQgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXREZWZhdWx0VGltZQogICAgIHNfZGVm
YXVsdFRpbWVvdXRJbnRlcnZhbCA9IHRpbWVvdXRJbnRlcnZhbDsKIH0KIAotdm9pZCBSZXNvdXJj
ZVJlcXVlc3RCYXNlOjp1cGRhdGVQbGF0Zm9ybVJlcXVlc3QoKSBjb25zdAotewotICAgIGlmICht
X3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIEFTU0VSVCht
X3Jlc291cmNlUmVxdWVzdFVwZGF0ZWQpOwotICAgIGNvbnN0X2Nhc3Q8UmVzb3VyY2VSZXF1ZXN0
Jj4oYXNSZXNvdXJjZVJlcXVlc3QoKSkuZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QoKTsKLSAgICBt
X3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQgPSB0cnVlOwotfQotCi12b2lkIFJlc291cmNlUmVxdWVz
dEJhc2U6OnVwZGF0ZVJlc291cmNlUmVxdWVzdCgpIGNvbnN0Cit2b2lkIFJlc291cmNlUmVxdWVz
dEJhc2U6OnVwZGF0ZVBsYXRmb3JtUmVxdWVzdChIVFRQQm9keVVwZGF0ZVBvbGljeSBib2R5UG9s
aWN5KSBjb25zdAogewotICAgIGlmIChtX3Jlc291cmNlUmVxdWVzdFVwZGF0ZWQpCi0gICAgICAg
IHJldHVybjsKLQotICAgIEFTU0VSVChtX3BsYXRmb3JtUmVxdWVzdFVwZGF0ZWQpOwotICAgIGNv
bnN0X2Nhc3Q8UmVzb3VyY2VSZXF1ZXN0Jj4oYXNSZXNvdXJjZVJlcXVlc3QoKSkuZG9VcGRhdGVS
ZXNvdXJjZVJlcXVlc3QoKTsKLSAgICBtX3Jlc291cmNlUmVxdWVzdFVwZGF0ZWQgPSB0cnVlOwor
ICAgIGlmICghbV9wbGF0Zm9ybVJlcXVlc3RVcGRhdGVkKSB7CisgICAgICAgIEFTU0VSVChtX3Jl
c291cmNlUmVxdWVzdFVwZGF0ZWQpOworICAgICAgICBjb25zdF9jYXN0PFJlc291cmNlUmVxdWVz
dCY+KGFzUmVzb3VyY2VSZXF1ZXN0KCkpLmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCk7CisgICAg
ICAgIG1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRlZCA9IHRydWU7CisgICAgfQorCisgICAgaWYgKCFt
X3BsYXRmb3JtUmVxdWVzdEJvZHlVcGRhdGVkICYmIGJvZHlQb2xpY3kgPT0gVXBkYXRlSFRUUEJv
ZHkpIHsKKyAgICAgICAgQVNTRVJUKG1fcmVzb3VyY2VSZXF1ZXN0Qm9keVVwZGF0ZWQpOworICAg
ICAgICBjb25zdF9jYXN0PFJlc291cmNlUmVxdWVzdCY+KGFzUmVzb3VyY2VSZXF1ZXN0KCkpLmRv
VXBkYXRlUGxhdGZvcm1IVFRQQm9keSgpOworICAgICAgICBtX3BsYXRmb3JtUmVxdWVzdEJvZHlV
cGRhdGVkID0gdHJ1ZTsKKyAgICB9Cit9CisKK3ZvaWQgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6dXBk
YXRlUmVzb3VyY2VSZXF1ZXN0KEhUVFBCb2R5VXBkYXRlUG9saWN5IGJvZHlQb2xpY3kpIGNvbnN0
Cit7CisgICAgaWYgKCFtX3Jlc291cmNlUmVxdWVzdFVwZGF0ZWQpIHsKKyAgICAgICAgQVNTRVJU
KG1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRlZCk7CisgICAgICAgIGNvbnN0X2Nhc3Q8UmVzb3VyY2VS
ZXF1ZXN0Jj4oYXNSZXNvdXJjZVJlcXVlc3QoKSkuZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsK
KyAgICAgICAgbV9yZXNvdXJjZVJlcXVlc3RVcGRhdGVkID0gdHJ1ZTsKKyAgICB9CisKKyAgICBp
ZiAoIW1fcmVzb3VyY2VSZXF1ZXN0Qm9keVVwZGF0ZWQgJiYgYm9keVBvbGljeSA9PSBVcGRhdGVI
VFRQQm9keSkgeworICAgICAgICBBU1NFUlQobV9wbGF0Zm9ybVJlcXVlc3RCb2R5VXBkYXRlZCk7
CisgICAgICAgIGNvbnN0X2Nhc3Q8UmVzb3VyY2VSZXF1ZXN0Jj4oYXNSZXNvdXJjZVJlcXVlc3Qo
KSkuZG9VcGRhdGVSZXNvdXJjZUhUVFBCb2R5KCk7CisgICAgICAgIG1fcmVzb3VyY2VSZXF1ZXN0
Qm9keVVwZGF0ZWQgPSB0cnVlOworICAgIH0KIH0KIAogI2lmICFQTEFURk9STShNQUMpICYmICFV
U0UoQ0ZORVRXT1JLKSAmJiAhVVNFKFNPVVApICYmICFQTEFURk9STShDSFJPTUlVTSkgJiYgIVBM
QVRGT1JNKFFUKSAmJiAhUExBVEZPUk0oQkxBQ0tCRVJSWSkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCShyZXZp
c2lvbiAxNDQwNjcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
UmVxdWVzdEJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsMTEgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBSZXR1cm5DYWNoZURhdGFEb250TG9hZCAgLy8gcmVzdWx0cyBv
ZiBhIHBvc3QgLSBhbGxvdyBzdGFsZSBkYXRhIGFuZCBvbmx5IHVzZSBjYWNoZQogICAgIH07CiAK
KyAgICBlbnVtIEhUVFBCb2R5VXBkYXRlUG9saWN5IHsKKyAgICAgICAgRG9Ob3RVcGRhdGVIVFRQ
Qm9keSwKKyAgICAgICAgVXBkYXRlSFRUUEJvZHkKKyAgICB9OworCiAgICAgY2xhc3MgUmVzb3Vy
Y2VSZXF1ZXN0OwogICAgIHN0cnVjdCBDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE7CiAK
QEAgLTE0Miw2ICsxNDcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFJlc291cmNl
UmVxdWVzdEJhc2UoKQogICAgICAgICAgICAgOiBtX3Jlc291cmNlUmVxdWVzdFVwZGF0ZWQoZmFs
c2UpCiAgICAgICAgICAgICAsIG1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRlZCh0cnVlKQorICAgICAg
ICAgICAgLCBtX3Jlc291cmNlUmVxdWVzdEJvZHlVcGRhdGVkKGZhbHNlKQorICAgICAgICAgICAg
LCBtX3BsYXRmb3JtUmVxdWVzdEJvZHlVcGRhdGVkKHRydWUpCiAgICAgICAgICAgICAsIG1fcmVw
b3J0VXBsb2FkUHJvZ3Jlc3MoZmFsc2UpCiAgICAgICAgICAgICAsIG1fcmVwb3J0TG9hZFRpbWlu
ZyhmYWxzZSkKICAgICAgICAgICAgICwgbV9yZXBvcnRSYXdIZWFkZXJzKGZhbHNlKQpAQCAtMTU3
LDYgKzE2NCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICwgbV9hbGxvd0Nv
b2tpZXModHJ1ZSkKICAgICAgICAgICAgICwgbV9yZXNvdXJjZVJlcXVlc3RVcGRhdGVkKHRydWUp
CiAgICAgICAgICAgICAsIG1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRlZChmYWxzZSkKKyAgICAgICAg
ICAgICwgbV9yZXNvdXJjZVJlcXVlc3RCb2R5VXBkYXRlZCh0cnVlKQorICAgICAgICAgICAgLCBt
X3BsYXRmb3JtUmVxdWVzdEJvZHlVcGRhdGVkKGZhbHNlKQogICAgICAgICAgICAgLCBtX3JlcG9y
dFVwbG9hZFByb2dyZXNzKGZhbHNlKQogICAgICAgICAgICAgLCBtX3JlcG9ydExvYWRUaW1pbmco
ZmFsc2UpCiAgICAgICAgICAgICAsIG1fcmVwb3J0UmF3SGVhZGVycyhmYWxzZSkKQEAgLTE2NCw4
ICsxNzMsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHsKICAgICAgICAgfQogCi0g
ICAgICAgIHZvaWQgdXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkgY29uc3Q7IAotICAgICAgICB2b2lk
IHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpIGNvbnN0OyAKKyAgICAgICAgdm9pZCB1cGRhdGVQbGF0
Zm9ybVJlcXVlc3QoSFRUUEJvZHlVcGRhdGVQb2xpY3kgPSBEb05vdFVwZGF0ZUhUVFBCb2R5KSBj
b25zdDsKKyAgICAgICAgdm9pZCB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoSFRUUEJvZHlVcGRhdGVQ
b2xpY3kgPSBEb05vdFVwZGF0ZUhUVFBCb2R5KSBjb25zdDsKIAogICAgICAgICB2b2lkIHJlcG9y
dE1lbW9yeVVzYWdlQmFzZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKQEAgLTE4NCw2ICsx
OTMsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV9hbGxvd0Nvb2tpZXMg
OiAxOwogICAgICAgICBtdXRhYmxlIGJvb2wgbV9yZXNvdXJjZVJlcXVlc3RVcGRhdGVkIDogMTsK
ICAgICAgICAgbXV0YWJsZSBib29sIG1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRlZCA6IDE7CisgICAg
ICAgIG11dGFibGUgYm9vbCBtX3Jlc291cmNlUmVxdWVzdEJvZHlVcGRhdGVkIDogMTsKKyAgICAg
ICAgbXV0YWJsZSBib29sIG1fcGxhdGZvcm1SZXF1ZXN0Qm9keVVwZGF0ZWQgOiAxOwogICAgICAg
ICBib29sIG1fcmVwb3J0VXBsb2FkUHJvZ3Jlc3MgOiAxOwogICAgICAgICBib29sIG1fcmVwb3J0
TG9hZFRpbWluZyA6IDE7CiAgICAgICAgIGJvb2wgbV9yZXBvcnRSYXdIZWFkZXJzIDogMTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9SZXNvdXJjZVJl
cXVlc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Js
YWNrYmVycnkvUmVzb3VyY2VSZXF1ZXN0LmgJKHJldmlzaW9uIDE0NDA2NykKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9SZXNvdXJjZVJlcXVlc3QuaAkod29y
a2luZyBjb3B5KQpAQCAtMTM1LDYgKzEzNSw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRvVXBk
YXRlUGxhdGZvcm1SZXF1ZXN0KCkgeyB9CiAgICAgdm9pZCBkb1VwZGF0ZVJlc291cmNlUmVxdWVz
dCgpIHsgfQorICAgIHZvaWQgZG9VcGRhdGVQbGF0Zm9ybUhUVFBCb2R5KCkgeyB9CisgICAgdm9p
ZCBkb1VwZGF0ZVJlc291cmNlSFRUUEJvZHkoKSB7IH0KIAogICAgIFBhc3NPd25QdHI8Q3Jvc3NU
aHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPiBkb1BsYXRmb3JtQ29weURhdGEoUGFzc093blB0cjxD
cm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+KSBjb25zdDsKICAgICB2b2lkIGRvUGxhdGZv
cm1BZG9wdChQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4pOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zv
cm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCShyZXZpc2lvbiAxNDQwNjcpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01Miw3ICs1Miw2IEBACiBleHRlcm4gIkMiIHZvaWQgQ0ZVUkxSZXF1ZXN0U2V0SFRU
UFJlcXVlc3RCb2R5KENGTXV0YWJsZVVSTFJlcXVlc3RSZWYgbXV0YWJsZUhUVFBSZXF1ZXN0LCBD
RkRhdGFSZWYgaHR0cEJvZHkpOwogZXh0ZXJuICJDIiB2b2lkIENGVVJMUmVxdWVzdFNldEhUVFBI
ZWFkZXJGaWVsZFZhbHVlKENGTXV0YWJsZVVSTFJlcXVlc3RSZWYgbXV0YWJsZUhUVFBSZXF1ZXN0
LCBDRlN0cmluZ1JlZiBodHRwSGVhZGVyRmllbGQsIENGU3RyaW5nUmVmIGh0dHBIZWFkZXJGaWVs
ZFZhbHVlKTsKIGV4dGVybiAiQyIgdm9pZCBDRlVSTFJlcXVlc3RTZXRIVFRQUmVxdWVzdEJvZHlT
dHJlYW0oQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZiByZXEsIENGUmVhZFN0cmVhbVJlZiBib2R5U3Ry
ZWFtKTsKLWV4dGVybiAiQyIgQ0ZSZWFkU3RyZWFtUmVmIENGVVJMUmVxdWVzdENvcHlIVFRQUmVx
dWVzdEJvZHlTdHJlYW0oQ0ZVUkxSZXF1ZXN0UmVmIHJlcXVlc3QpOwogI2VsaWYgUExBVEZPUk0o
V0lOKQogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTFJlcXVlc3QuaD4KICNlbmRpZgpAQCAtOTAs
NiArODksMTEgQEAgc3RhdGljIHZvaWQgZm9ybUV2ZW50Q2FsbGJhY2soQ0ZSZWFkU3RyZQogCiBz
dGF0aWMgQ0ZTdHJpbmdSZWYgZm9ybURhdGFQb2ludGVyUHJvcGVydHlOYW1lID0gQ0ZTVFIoIldl
YktpdEZvcm1EYXRhUG9pbnRlciIpOwogCitDRlN0cmluZ1JlZiBmb3JtRGF0YVN0cmVhbUxlbmd0
aFByb3BlcnR5TmFtZSgpCit7CisgICAgcmV0dXJuIENGU1RSKCJXZWJLaXRGb3JtRGF0YVN0cmVh
bUxlbmd0aCIpOworfQorCiBzdHJ1Y3QgRm9ybUNyZWF0aW9uQ29udGV4dCB7CiAgICAgUmVmUHRy
PEZvcm1EYXRhPiBmb3JtRGF0YTsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgc3RyZWFtTGVuZ3Ro
OwpAQCAtMzA2LDExICszMTAsMTUgQEAgc3RhdGljIENGVHlwZVJlZiBmb3JtQ29weVByb3BlcnR5
KENGUmVhZAogewogICAgIEZvcm1TdHJlYW1GaWVsZHMqIGZvcm0gPSBzdGF0aWNfY2FzdDxGb3Jt
U3RyZWFtRmllbGRzKj4oY29udGV4dCk7CiAKLSAgICBpZiAoa0NGQ29tcGFyZUVxdWFsVG8gIT0g
Q0ZTdHJpbmdDb21wYXJlKHByb3BlcnR5TmFtZSwgZm9ybURhdGFQb2ludGVyUHJvcGVydHlOYW1l
LCAwKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKGtDRkNvbXBhcmVFcXVhbFRvID09IENG
U3RyaW5nQ29tcGFyZShwcm9wZXJ0eU5hbWUsIGZvcm1EYXRhUG9pbnRlclByb3BlcnR5TmFtZSwg
MCkpIHsKKyAgICAgICAgbG9uZyBmb3JtRGF0YUFzTnVtYmVyID0gc3RhdGljX2Nhc3Q8bG9uZz4o
cmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oZm9ybS0+Zm9ybURhdGEuZ2V0KCkpKTsKKyAgICAg
ICAgcmV0dXJuIENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJlckxvbmdUeXBlLCAmZm9ybURhdGFB
c051bWJlcik7CisgICAgfQorCisgICAgaWYgKGtDRkNvbXBhcmVFcXVhbFRvID09IENGU3RyaW5n
Q29tcGFyZShwcm9wZXJ0eU5hbWUsIGZvcm1EYXRhU3RyZWFtTGVuZ3RoUHJvcGVydHlOYW1lKCks
IDApKQorICAgICAgICByZXR1cm4gQ0ZTdHJpbmdDcmVhdGVXaXRoRm9ybWF0KDAsIDAsIENGU1RS
KCIlbGx1IiksIGZvcm0tPnN0cmVhbUxlbmd0aCk7CiAKLSAgICBsb25nIGZvcm1EYXRhQXNOdW1i
ZXIgPSBzdGF0aWNfY2FzdDxsb25nPihyZWludGVycHJldF9jYXN0PGludHB0cl90Pihmb3JtLT5m
b3JtRGF0YS5nZXQoKSkpOwotICAgIHJldHVybiBDRk51bWJlckNyZWF0ZSgwLCBrQ0ZOdW1iZXJM
b25nVHlwZSwgJmZvcm1EYXRhQXNOdW1iZXIpOworICAgIHJldHVybiAwOwogfQogCiBzdGF0aWMg
dm9pZCBmb3JtU2NoZWR1bGUoQ0ZSZWFkU3RyZWFtUmVmLCBDRlJ1bkxvb3BSZWYgcnVuTG9vcCwg
Q0ZTdHJpbmdSZWYgcnVuTG9vcE1vZGUsIHZvaWQqIGNvbnRleHQpCkBAIC00MDUsMTAgKzQxMyw2
IEBAIHZvaWQgc2V0SFRUUEJvZHkoQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZiAKICAgICAgICAgfQog
ICAgIH0KIAotICAgIC8vIFNldCB0aGUgbGVuZ3RoLgotICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gbGVuZ3RoU3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhGb3JtYXQoMCwgMCwg
Q0ZTVFIoIiVsbGQiKSwgbGVuZ3RoKSk7Ci0gICAgQ0ZVUkxSZXF1ZXN0U2V0SFRUUEhlYWRlckZp
ZWxkVmFsdWUocmVxdWVzdCwgQ0ZTVFIoIkNvbnRlbnQtTGVuZ3RoIiksIGxlbmd0aFN0cmluZy5n
ZXQoKSk7Ci0KICAgICAvLyBDcmVhdGUgYW5kIHNldCB0aGUgc3RyZWFtLgogCiAgICAgLy8gUGFz
cyB0aGUgbGVuZ3RoIGFsb25nIHdpdGggdGhlIGZvcm1EYXRhIHNvIGl0IGRvZXMgbm90IGhhdmUg
dG8gYmUgcmVjb21wdXRlZC4KQEAgLTQ0MiwxMCArNDQ2LDQgQEAgRm9ybURhdGEqIGh0dHBCb2R5
RnJvbVN0cmVhbShDRlJlYWRTdHJlYQogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEZvcm1E
YXRhKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KGZvcm1EYXRhUG9pbnRlckFzTnVtYmVyKSk7CiB9
CiAKLVBhc3NSZWZQdHI8Rm9ybURhdGE+IGh0dHBCb2R5RnJvbVJlcXVlc3QoQ0ZVUkxSZXF1ZXN0
UmVmIHJlcXVlc3QpCi17Ci0gICAgUmV0YWluUHRyPENGUmVhZFN0cmVhbVJlZj4gYm9keVN0cmVh
bSA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q29weUhUVFBSZXF1ZXN0Qm9keVN0cmVhbShyZXF1ZXN0
KSk7Ci0gICAgcmV0dXJuIGh0dHBCb2R5RnJvbVN0cmVhbShib2R5U3RyZWFtLmdldCgpKTsKLX0K
LQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmgJKHJldmlzaW9u
IDE0NDA2NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFT
dHJlYW1DRk5ldC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCwxMCArNDAsMTEgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgRm9ybURhdGE7CiAKIHZvaWQgc2V0SFRUUEJvZHkoQ0ZNdXRhYmxl
VVJMUmVxdWVzdFJlZiwgUGFzc1JlZlB0cjxGb3JtRGF0YT4pOwotUGFzc1JlZlB0cjxGb3JtRGF0
YT4gaHR0cEJvZHlGcm9tUmVxdWVzdChDRlVSTFJlcXVlc3RSZWYpOwogCiBGb3JtRGF0YSogaHR0
cEJvZHlGcm9tU3RyZWFtKENGUmVhZFN0cmVhbVJlZik7CiAKK0NGU3RyaW5nUmVmIGZvcm1EYXRh
U3RyZWFtTGVuZ3RoUHJvcGVydHlOYW1lKCk7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIEZvcm1EYXRhU3RyZWFtQ0ZOZXRfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3Bw
CShyZXZpc2lvbiAxNDQwNjcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTIsNyArMTkyLDcg
QEAgc3RhdGljIENGVVJMUmVxdWVzdFJlZiB3aWxsU2VuZFJlcXVlc3QoQwogICAgIGlmIChyZXF1
ZXN0LmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGNmUmVxdWVzdCA9IHJlcXVl
c3QuY2ZVUkxSZXF1ZXN0KCk7CisgICAgY2ZSZXF1ZXN0ID0gcmVxdWVzdC5jZlVSTFJlcXVlc3Qo
VXBkYXRlSFRUUEJvZHkpOwogCiAgICAgQ0ZSZXRhaW4oY2ZSZXF1ZXN0KTsKICAgICByZXR1cm4g
Y2ZSZXF1ZXN0OwpAQCAtMjE4LDcgKzIxOCw3IEBAIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZShDRlVSTENvbm4KICAgICBpZiAoc3RhdHVzQ29kZSAhPSAzMDQpCiAgICAgICAgIGFkanVz
dE1JTUVUeXBlSWZOZWNlc3NhcnkoY2ZSZXNwb25zZSk7CiAKLSAgICBpZiAoX0NGVVJMUmVxdWVz
dENvcHlQcm90b2NvbFByb3BlcnR5Rm9yS2V5KGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkuY2ZVUkxS
ZXF1ZXN0KCksIENGU1RSKCJGb3JjZUhUTUxNSU1FVHlwZSIpKSkKKyAgICBpZiAoX0NGVVJMUmVx
dWVzdENvcHlQcm90b2NvbFByb3BlcnR5Rm9yS2V5KGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkuY2ZV
UkxSZXF1ZXN0KERvTm90VXBkYXRlSFRUUEJvZHkpLCBDRlNUUigiRm9yY2VIVE1MTUlNRVR5cGUi
KSkpCiAgICAgICAgIHdrU2V0Q0ZVUkxSZXNwb25zZU1JTUVUeXBlKGNmUmVzcG9uc2UsIENGU1RS
KCJ0ZXh0L2h0bWwiKSk7CiAjZWxzZQogICAgIGlmICghQ0ZVUkxSZXNwb25zZUdldE1JTUVUeXBl
KGNmUmVzcG9uc2UpKSB7CkBAIC00MjUsNyArNDI1LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6
Y3JlYXRlQ0ZVUkxDb25uZWN0aQogICAgICAgICBhcHBseUJhc2ljQXV0aG9yaXphdGlvbkhlYWRl
cihmaXJzdFJlcXVlc3QoKSwgZC0+bV9pbml0aWFsQ3JlZGVudGlhbCk7CiAgICAgfQogCi0gICAg
UmV0YWluUHRyPENGTXV0YWJsZVVSTFJlcXVlc3RSZWY+IHJlcXVlc3QgPSBhZG9wdENGKENGVVJM
UmVxdWVzdENyZWF0ZU11dGFibGVDb3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIGZpcnN0UmVxdWVz
dCgpLmNmVVJMUmVxdWVzdCgpKSk7CisgICAgUmV0YWluUHRyPENGTXV0YWJsZVVSTFJlcXVlc3RS
ZWY+IHJlcXVlc3QgPSBhZG9wdENGKENGVVJMUmVxdWVzdENyZWF0ZU11dGFibGVDb3B5KGtDRkFs
bG9jYXRvckRlZmF1bHQsIGZpcnN0UmVxdWVzdCgpLmNmVVJMUmVxdWVzdChVcGRhdGVIVFRQQm9k
eSkpKTsKICAgICB3a1NldFJlcXVlc3RTdG9yYWdlU2Vzc2lvbihkLT5tX3N0b3JhZ2VTZXNzaW9u
LmdldCgpLCByZXF1ZXN0LmdldCgpKTsKICAgICAKICAgICBpZiAoIXNob3VsZENvbnRlbnRTbmlm
ZikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1
ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9S
ZXNvdXJjZVJlcXVlc3QuaAkocmV2aXNpb24gMTQ0MDY3KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3QuaAkod29ya2luZyBjb3B5KQpAQCAtODAs
MTggKzgwLDIyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZgogICAgICAgICB9CiAKKyAg
ICAgICAgdm9pZCB1cGRhdGVGcm9tRGVsZWdhdGVQcmVzZXJ2aW5nT2xkSFRUUEJvZHkoQ0ZVUkxS
ZXF1ZXN0UmVmKTsKIAotICAgICAgICBDRlVSTFJlcXVlc3RSZWYgY2ZVUkxSZXF1ZXN0KCkgY29u
c3Q7CisgICAgICAgIENGVVJMUmVxdWVzdFJlZiBjZlVSTFJlcXVlc3QoSFRUUEJvZHlVcGRhdGVQ
b2xpY3kpIGNvbnN0OwogI2Vsc2UKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0KE5TVVJMUmVxdWVz
dCAqbnNSZXF1ZXN0KQogICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKCkKLSAgICAg
ICAgICAgICwgbV9uc1JlcXVlc3QobnNSZXF1ZXN0KSB7IH0KKyAgICAgICAgICAgICwgbV9uc1Jl
cXVlc3QobnNSZXF1ZXN0KQorICAgICAgICB7CisgICAgICAgIH0KIAorICAgICAgICB2b2lkIHVw
ZGF0ZUZyb21EZWxlZ2F0ZVByZXNlcnZpbmdPbGRIVFRQQm9keShjb25zdCBSZXNvdXJjZVJlcXVl
c3QmKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICB2b2lkIGFwcGx5V2Vi
QXJjaGl2ZUhhY2tGb3JNYWlsKCk7Ci0gICAgICAgIE5TVVJMUmVxdWVzdCAqbnNVUkxSZXF1ZXN0
KCkgY29uc3Q7CisgICAgICAgIE5TVVJMUmVxdWVzdCAqbnNVUkxSZXF1ZXN0KEhUVFBCb2R5VXBk
YXRlUG9saWN5KSBjb25zdDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklO
RykKQEAgLTExNSw2ICsxMTksOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9p
ZCBkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpOwogICAgICAgICB2b2lkIGRvVXBkYXRlUmVzb3Vy
Y2VSZXF1ZXN0KCk7CisgICAgICAgIHZvaWQgZG9VcGRhdGVQbGF0Zm9ybUhUVFBCb2R5KCk7Cisg
ICAgICAgIHZvaWQgZG9VcGRhdGVSZXNvdXJjZUhUVFBCb2R5KCk7CiAKICAgICAgICAgUGFzc093
blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IGRvUGxhdGZvcm1Db3B5RGF0YShQ
YXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4pIGNvbnN0OwogICAgICAg
ICB2b2lkIGRvUGxhdGZvcm1BZG9wdChQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1
ZXN0RGF0YT4pOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZVJlcXVlc3RDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAJKHJldmlzaW9uIDE0NDA2NykK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZO
ZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OSw5ICs5OSw5IEBAIHN0YXRpYyBDRkFycmF5UmVm
IGNvcHlDb250ZW50RGlzcG9zaXRpb24KICAgICByZXR1cm4gZnVuY3Rpb24ocmVxdWVzdCk7CiB9
CiAKLUNGVVJMUmVxdWVzdFJlZiBSZXNvdXJjZVJlcXVlc3Q6OmNmVVJMUmVxdWVzdCgpIGNvbnN0
CitDRlVSTFJlcXVlc3RSZWYgUmVzb3VyY2VSZXF1ZXN0OjpjZlVSTFJlcXVlc3QoSFRUUEJvZHlV
cGRhdGVQb2xpY3kgYm9keVBvbGljeSkgY29uc3QKIHsKLSAgICB1cGRhdGVQbGF0Zm9ybVJlcXVl
c3QoKTsKKyAgICB1cGRhdGVQbGF0Zm9ybVJlcXVlc3QoYm9keVBvbGljeSk7CiAKICAgICByZXR1
cm4gbV9jZlJlcXVlc3QuZ2V0KCk7CiB9CkBAIC0xNDYsOSArMTQ2LDcgQEAgdm9pZCBSZXNvdXJj
ZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZQogI2VuZGlmCiAKICAgICBzZXRIZWFkZXJGaWVs
ZHMoY2ZSZXF1ZXN0LCBodHRwSGVhZGVyRmllbGRzKCkpOwotICAgIFJlZlB0cjxGb3JtRGF0YT4g
Zm9ybURhdGEgPSBodHRwQm9keSgpOwotICAgIGlmIChmb3JtRGF0YSAmJiAhZm9ybURhdGEtPmlz
RW1wdHkoKSkKLSAgICAgICAgV2ViQ29yZTo6c2V0SFRUUEJvZHkoY2ZSZXF1ZXN0LCBmb3JtRGF0
YSk7CisKICAgICBDRlVSTFJlcXVlc3RTZXRTaG91bGRIYW5kbGVIVFRQQ29va2llcyhjZlJlcXVl
c3QsIGFsbG93Q29va2llcygpKTsKIAogICAgIHVuc2lnbmVkIGZhbGxiYWNrQ291bnQgPSBtX3Jl
c3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5LnNpemUoKTsKQEAg
LTE3NSw2ICsxNzMsNDIgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1S
ZQogI2VuZGlmCiB9CiAKK3ZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtSFRU
UEJvZHkoKQoreworICAgIENGTXV0YWJsZVVSTFJlcXVlc3RSZWYgY2ZSZXF1ZXN0OworCisgICAg
UmV0YWluUHRyPENGVVJMUmVmPiB1cmwoQWRvcHRDRiwgUmVzb3VyY2VSZXF1ZXN0Ojp1cmwoKS5j
cmVhdGVDRlVSTCgpKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGZpcnN0UGFydHlGb3JDb29r
aWVzKEFkb3B0Q0YsIFJlc291cmNlUmVxdWVzdDo6Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKS5jcmVh
dGVDRlVSTCgpKTsKKyAgICBpZiAobV9jZlJlcXVlc3QpIHsKKyAgICAgICAgY2ZSZXF1ZXN0ID0g
Q0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0YWJsZUNvcHkoMCwgbV9jZlJlcXVlc3QuZ2V0KCkpOworICAg
ICAgICBDRlVSTFJlcXVlc3RTZXRVUkwoY2ZSZXF1ZXN0LCB1cmwuZ2V0KCkpOworICAgICAgICBD
RlVSTFJlcXVlc3RTZXRNYWluRG9jdW1lbnRVUkwoY2ZSZXF1ZXN0LCBmaXJzdFBhcnR5Rm9yQ29v
a2llcy5nZXQoKSk7CisgICAgICAgIENGVVJMUmVxdWVzdFNldENhY2hlUG9saWN5KGNmUmVxdWVz
dCwgKENGVVJMUmVxdWVzdENhY2hlUG9saWN5KWNhY2hlUG9saWN5KCkpOworICAgICAgICBDRlVS
TFJlcXVlc3RTZXRUaW1lb3V0SW50ZXJ2YWwoY2ZSZXF1ZXN0LCB0aW1lb3V0SW50ZXJ2YWwoKSk7
CisgICAgfSBlbHNlCisgICAgICAgIGNmUmVxdWVzdCA9IENGVVJMUmVxdWVzdENyZWF0ZU11dGFi
bGUoMCwgdXJsLmdldCgpLCAoQ0ZVUkxSZXF1ZXN0Q2FjaGVQb2xpY3kpY2FjaGVQb2xpY3koKSwg
dGltZW91dEludGVydmFsKCksIGZpcnN0UGFydHlGb3JDb29raWVzLmdldCgpKTsKKworICAgIFJl
ZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEgPSBodHRwQm9keSgpOworICAgIGlmIChmb3JtRGF0YSAm
JiAhZm9ybURhdGEtPmlzRW1wdHkoKSkKKyAgICAgICAgV2ViQ29yZTo6c2V0SFRUUEJvZHkobnNS
ZXF1ZXN0LCBmb3JtRGF0YSk7CisKKyAgICBpZiAoUmV0YWluUHRyPENGUmVhZFN0cmVhbVJlZj4g
Ym9keVN0cmVhbSA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q29weUhUVFBSZXF1ZXN0Qm9keVN0cmVh
bShyZXF1ZXN0KSkpIHsKKyAgICAgICAgLy8gRm9yIHN0cmVhbXMsIHByb3ZpZGUgYSBDb250ZW50
LUxlbmd0aCB0byBhdm9pZCB1c2luZyBjaHVua2VkIGVuY29kaW5nLCBhbmQgdG8gZ2V0IGFjY3Vy
YXRlIHRvdGFsIGxlbmd0aCBpbiBjYWxsYmFja3MuCisgICAgICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gbGVuZ3RoU3RyaW5nID0gYWRvcHRDRihDRlJlYWRTdHJlYW1Db3B5UHJvcGVydHkoYm9k
eVN0cmVhbS5nZXQoKSwgZm9ybURhdGFTdHJlYW1MZW5ndGhQcm9wZXJ0eU5hbWUoKSkpOworICAg
ICAgICBpZiAobGVuZ3RoU3RyaW5nKSB7CisgICAgICAgICAgICBDRlVSTFJlcXVlc3RTZXRIVFRQ
SGVhZGVyRmllbGRWYWx1ZShjZlJlcXVlc3QsIENGU1RSKCJDb250ZW10LUxlbmd0aCIsIGxlbmd0
aFN0cmluZy5nZXQoKSkpOworICAgICAgICAgICAgLy8gU2luY2UgcmVzb3VyY2UgcmVxdWVzdCBp
cyBhbHJlYWR5IG1hcmtlZCB1cGRhdGVkLCB3ZSBuZWVkIHRvIGtlZXAgaXQgdXAgdG8gZGF0ZSB0
b28uCisgICAgICAgICAgICBBU1NFUlQobV9yZXNvdXJjZVJlcXVlc3RVcGRhdGVkKTsKKyAgICAg
ICAgICAgIG1faHR0cEhlYWRlckZpZWxkcy5zZXQoIkNvbnRlbnQtTGVuZ3RoIiwgbGVuZ3RoU3Ry
aW5nLmdldCgpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1fY2ZSZXF1ZXN0LmFkb3B0Q0Yo
Y2ZSZXF1ZXN0KTsKKyNpZiBQTEFURk9STShNQUMpCisgICAgdXBkYXRlTlNVUkxSZXF1ZXN0KCk7
CisjZW5kaWYKK30KKwogdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUmVzb3VyY2VSZXF1
ZXN0KCkKIHsKICAgICBpZiAoIW1fY2ZSZXF1ZXN0KSB7CkBAIC0yMTcsMTAgKzI1MSwyOCBAQCB2
b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVSZXNvdXJjZVJlCiAgICAgICAgICAgICAgICAg
bV9yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheS5hcHBlbmQo
Q0ZTdHJpbmdDb252ZXJ0RW5jb2RpbmdUb0lBTkFDaGFyU2V0TmFtZShlbmNvZGluZykpOwogICAg
ICAgICB9CiAgICAgfQorfQogCi0gICAgbV9odHRwQm9keSA9IGh0dHBCb2R5RnJvbVJlcXVlc3Qo
bV9jZlJlcXVlc3QuZ2V0KCkpOwordm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUmVzb3Vy
Y2VIVFRQQm9keSgpCit7CisgICAgaWYgKCFtX2NmUmVxdWVzdCkgeworICAgICAgICBtX2h0dHBC
b2R5ID0gMDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChSZXRhaW5QdHI8Q0ZE
YXRhUmVmPiBib2R5RGF0YSA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q29weUhUVFBSZXF1ZXN0Qm9k
eShtX2NmUmVxdWVzdC5nZXQoKSkpKQorICAgICAgICBtX2h0dHBCb2R5ID0gRm9ybURhdGE6OmNy
ZWF0ZShDRkRhdGFHZXRCeXRlUHRyKGJvZHlEYXRhLmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKGJv
ZHlEYXRhLmdldCgpKSk7CisgICAgZWxzZSBpZiAoUmV0YWluUHRyPENGUmVhZFN0cmVhbVJlZj4g
Ym9keVN0cmVhbSA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q29weUhUVFBSZXF1ZXN0Qm9keVN0cmVh
bShyZXF1ZXN0KSkpIHsKKyAgICAgICAgRm9ybURhdGEqIGZvcm1EYXRhID0gaHR0cEJvZHlGcm9t
U3RyZWFtKGJvZHlTdHJlYW0uZ2V0KCkpOworICAgICAgICAvLyBUaGVyZSBpcyBubyBGb3JtRGF0
YSBvYmplY3QgaWYgYSBjbGllbnQgcHJvdmlkZWQgYSBjdXN0b20gZGF0YSBzdHJlYW0uCisgICAg
ICAgIC8vIFdlIHNob3VsZG4ndCBiZSBsb29raW5nIGF0IGh0dHAgYm9keSBhZnRlciBjbGllbnQg
Y2FsbGJhY2tzLgorICAgICAgICBBU1NFUlQoZm9ybURhdGEpOworICAgICAgICBpZiAoZm9ybURh
dGEpCisgICAgICAgICAgICBtX2h0dHBCb2R5ID0gZm9ybURhdGE7CisgICAgfQogfQogCisKIHZv
aWQgUmVzb3VyY2VSZXF1ZXN0OjpzZXRTdG9yYWdlU2Vzc2lvbihDRlVSTFN0b3JhZ2VTZXNzaW9u
UmVmIHN0b3JhZ2VTZXNzaW9uKQogewogICAgIHVwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpOwpAQCAt
MjM3LDcgKzI4OSw3IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0OjpzZXRTdG9yYWdlU2Vzc2lvbigK
IHZvaWQgUmVzb3VyY2VSZXF1ZXN0OjphcHBseVdlYkFyY2hpdmVIYWNrRm9yTWFpbCgpCiB7CiAg
ICAgLy8gSGFjayBiZWNhdXNlIE1haWwgY2hlY2tzIGZvciB0aGlzIHByb3BlcnR5IHRvIGRldGVj
dCBkYXRhIC8gYXJjaGl2ZSBsb2FkcwotICAgIF9DRlVSTFJlcXVlc3RTZXRQcm90b2NvbFByb3Bl
cnR5KGNmVVJMUmVxdWVzdCgpLCBDRlNUUigiV2ViRGF0YVJlcXVlc3QiKSwgQ0ZTVFIoIiIpKTsK
KyAgICBfQ0ZVUkxSZXF1ZXN0U2V0UHJvdG9jb2xQcm9wZXJ0eShjZlVSTFJlcXVlc3QoRG9Ob3RV
cGRhdGVIVFRQQm9keSksIENGU1RSKCJXZWJEYXRhUmVxdWVzdCIpLCBDRlNUUigiIikpOwogfQog
I2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0v
UmVzb3VyY2VSZXF1ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jaHJvbWl1bS9SZXNvdXJjZVJlcXVlc3QuaAkocmV2aXNpb24gMTQ0MDY3KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jaHJvbWl1bS9SZXNvdXJjZVJlcXVlc3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtMTQ1LDggKzE0NSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIFJlc291cmNlUmVxdWVzdEJhc2U7
CiAKLSAgICAgICAgdm9pZCBkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpIHt9Ci0gICAgICAgIHZv
aWQgZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3QoKSB7fQorICAgICAgICB2b2lkIGRvVXBkYXRlUGxh
dGZvcm1SZXF1ZXN0KCkgeyB9CisgICAgICAgIHZvaWQgZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3Qo
KSB7IH0KKyAgICAgICAgdm9pZCBkb1VwZGF0ZVBsYXRmb3JtSFRUUEJvZHkoKSB7IH0KKyAgICAg
ICAgdm9pZCBkb1VwZGF0ZVJlc291cmNlSFRUUEJvZHkoKSB7IH0KIAogICAgICAgICBQYXNzT3du
UHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4gZG9QbGF0Zm9ybUNvcHlEYXRhKFBh
c3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPikgY29uc3Q7CiAgICAgICAg
IHZvaWQgZG9QbGF0Zm9ybUFkb3B0KFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVl
c3REYXRhPik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVz
b3VyY2VSZXF1ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL1Jlc291cmNlUmVxdWVzdC5oCShyZXZpc2lvbiAxNDQwNjcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXF1ZXN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTYxLDYgKzYxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB7CiAg
ICAgICAgIH0KIAorICAgICAgICB2b2lkIHVwZGF0ZUZyb21EZWxlZ2F0ZVByZXNlcnZpbmdPbGRI
VFRQQm9keShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGRlbGVnYXRlUHJvdmlkZWRSZXF1ZXN0KSB7
ICp0aGlzID0gZGVsZWdhdGVQcm92aWRlZFJlcXVlc3Q7IH0KKwogICAgICAgICAvLyBOZWVkZWQg
Zm9yIGNvbXBhdGliaWxpdHkuCiAgICAgICAgIENGVVJMUmVxdWVzdFJlZiBjZlVSTFJlcXVlc3Qo
KSBjb25zdCB7IHJldHVybiAwOyB9CiAKQEAgLTcxLDggKzczLDEwIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0
QmFzZTsKIAotICAgICAgICB2b2lkIGRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkge30KLSAgICAg
ICAgdm9pZCBkb1VwZGF0ZVJlc291cmNlUmVxdWVzdCgpIHt9CisgICAgICAgIHZvaWQgZG9VcGRh
dGVQbGF0Zm9ybVJlcXVlc3QoKSB7IH0KKyAgICAgICAgdm9pZCBkb1VwZGF0ZVJlc291cmNlUmVx
dWVzdCgpIHsgfQorICAgICAgICB2b2lkIGRvVXBkYXRlUGxhdGZvcm1IVFRQQm9keSgpIHsgfQor
ICAgICAgICB2b2lkIGRvVXBkYXRlUmVzb3VyY2VIVFRQQm9keSgpIHsgfQogCiAgICAgICAgIFBh
c3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPiBkb1BsYXRmb3JtQ29weURh
dGEoUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IGRhdGEpIGNvbnN0
IHsgcmV0dXJuIGRhdGE7IH0KICAgICAgICAgdm9pZCBkb1BsYXRmb3JtQWRvcHQoUGFzc093blB0
cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+KSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Zvcm1EYXRhU3RyZWFtTWFjLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvRm9ybURhdGFTdHJlYW1NYWMu
aAkocmV2aXNpb24gMTQ0MDY3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvRm9ybURhdGFTdHJlYW1NYWMuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgdm9pZCBzZXRIVFRQQm9keShOU011dGFibGVVUkxSZXF1
ZXN0ICosIFBhc3NSZWZQdHI8Rm9ybURhdGE+KTsKICAgICBGb3JtRGF0YSogaHR0cEJvZHlGcm9t
U3RyZWFtKE5TSW5wdXRTdHJlYW0gKik7CiAKKyAgICBDRlN0cmluZ1JlZiBmb3JtRGF0YVN0cmVh
bUxlbmd0aFByb3BlcnR5TmFtZSgpOworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyAhVVNFKENGTkVUV09SSykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCShyZXZpc2lvbiAxNDQw
NjcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRs
ZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTcxLDcgKzE3MSw3IEBAIHZvaWQgUmVzb3VyY2VI
YW5kbGU6OmNyZWF0ZU5TVVJMQ29ubmVjdGkKICAgICAgICAgYXBwbHlCYXNpY0F1dGhvcml6YXRp
b25IZWFkZXIoZmlyc3RSZXF1ZXN0KCksIGQtPm1faW5pdGlhbENyZWRlbnRpYWwpOwogICAgIH0K
IAotICAgIE5TVVJMUmVxdWVzdCAqbnNSZXF1ZXN0ID0gZmlyc3RSZXF1ZXN0KCkubnNVUkxSZXF1
ZXN0KCk7CisgICAgTlNVUkxSZXF1ZXN0ICpuc1JlcXVlc3QgPSBmaXJzdFJlcXVlc3QoKS5uc1VS
TFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpOwogICAgIGlmICghc2hvdWxkQ29udGVudFNuaWZmKSB7
CiAgICAgICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKm11dGFibGVSZXF1ZXN0ID0gW1tuc1JlcXVl
c3QgbXV0YWJsZUNvcHldIGF1dG9yZWxlYXNlXTsKICAgICAgICAgd2tTZXROU1VSTFJlcXVlc3RT
aG91bGRDb250ZW50U25pZmYobXV0YWJsZVJlcXVlc3QsIE5PKTsKQEAgLTI1MSw3ICsyNTEsNyBA
QCBib29sIFJlc291cmNlSGFuZGxlOjpzdGFydCgpCiAgICAgZWxzZQogICAgICAgICBkLT5tX3N0
YXJ0V2hlblNjaGVkdWxlZCA9IHRydWU7CiAKLSAgICBMT0coTmV0d29yaywgIkhhbmRsZSAlcCBz
dGFydGluZyBjb25uZWN0aW9uICVwIGZvciAlQCIsIHRoaXMsIGNvbm5lY3Rpb24oKSwgZmlyc3RS
ZXF1ZXN0KCkubnNVUkxSZXF1ZXN0KCkpOworICAgIExPRyhOZXR3b3JrLCAiSGFuZGxlICVwIHN0
YXJ0aW5nIGNvbm5lY3Rpb24gJXAgZm9yICVAIiwgdGhpcywgY29ubmVjdGlvbigpLCBmaXJzdFJl
cXVlc3QoKS5uc1VSTFJlcXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9keSkpOwogICAgIAogICAgIGlm
IChkLT5tX2Nvbm5lY3Rpb24pIHsKICAgICAgICAgaWYgKGQtPm1fZGVmZXJzTG9hZGluZykKQEAg
LTM0NSw3ICszNDUsNyBAQCBDRlN0cmluZ1JlZiBSZXNvdXJjZUhhbmRsZTo6c3luY2hyb25vdXNM
CiAKIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnBsYXRmb3JtTG9hZFJlc291cmNlU3luY2hyb25vdXNs
eShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBTdG9yZWRDcmVkZW50aWFscyBzdG9yZWRDcmVkZW50aWFscywgUmVzb3VyY2VFcnJvciYg
ZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBWZWN0b3I8Y2hhcj4mIGRhdGEpCiB7
Ci0gICAgTE9HKE5ldHdvcmssICJSZXNvdXJjZUhhbmRsZTo6cGxhdGZvcm1Mb2FkUmVzb3VyY2VT
eW5jaHJvbm91c2x5OiVAIGFsbG93U3RvcmVkQ3JlZGVudGlhbHM6JXUiLCByZXF1ZXN0Lm5zVVJM
UmVxdWVzdCgpLCBzdG9yZWRDcmVkZW50aWFscyk7CisgICAgTE9HKE5ldHdvcmssICJSZXNvdXJj
ZUhhbmRsZTo6cGxhdGZvcm1Mb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5OiVAIGFsbG93U3RvcmVk
Q3JlZGVudGlhbHM6JXUiLCByZXF1ZXN0Lm5zVVJMUmVxdWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5
KSwgc3RvcmVkQ3JlZGVudGlhbHMpOwogCiAgICAgTlNFcnJvciAqbnNFcnJvciA9IG5pbDsKICAg
ICBOU1VSTFJlc3BvbnNlICpuc1VSTFJlc3BvbnNlID0gbmlsOwpAQCAtNjQ3LDcgKzY0Nyw3IEBA
IC0gKE5TVVJMUmVxdWVzdCAqKWNvbm5lY3Rpb246KE5TVVJMQ29ubmUKIAogICAgIG1faGFuZGxl
LT53aWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CiAKLSAgICByZXR1
cm4gcmVxdWVzdC5uc1VSTFJlcXVlc3QoKTsKKyAgICByZXR1cm4gcmVxdWVzdC5uc1VSTFJlcXVl
c3QoVXBkYXRlSFRUUEJvZHkpOwogfQogCiAtIChCT09MKWNvbm5lY3Rpb25TaG91bGRVc2VDcmVk
ZW50aWFsU3RvcmFnZTooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbgpAQCAtNzE2LDcgKzcx
Niw3IEBAIC0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY28KICAgICBpZiAo
c3RhdHVzQ29kZSAhPSAzMDQpCiAgICAgICAgIGFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkoW3Ig
X0NGVVJMUmVzcG9uc2VdKTsKIAotICAgIGlmIChbbV9oYW5kbGUtPmZpcnN0UmVxdWVzdCgpLm5z
VVJMUmVxdWVzdCgpIF9wcm9wZXJ0eUZvcktleTpAIkZvcmNlSFRNTE1JTUVUeXBlIl0pCisgICAg
aWYgKFttX2hhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkubnNVUkxSZXF1ZXN0KERvTm90VXBkYXRlSFRU
UEJvZHkpIF9wcm9wZXJ0eUZvcktleTpAIkZvcmNlSFRNTE1JTUVUeXBlIl0pCiAgICAgICAgIFty
IF9zZXRNSU1FVHlwZTpAInRleHQvaHRtbCJdOwogCiAgICAgbV9oYW5kbGUtPmNsaWVudCgpLT5k
aWRSZWNlaXZlUmVzcG9uc2UobV9oYW5kbGUsIHIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXF1ZXN0TWFjLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVxdWVzdE1hYy5tbQko
cmV2aXNpb24gMTQ0MDY3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
UmVzb3VyY2VSZXF1ZXN0TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NywxMSArNDcsMTEgQEAg
LSAodm9pZClzZXRDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLU5TVVJMUmVxdWVzdCAqUmVzb3VyY2VSZXF1ZXN0Ojpuc1VSTFJlcXVlc3QoKSBj
b25zdAoteyAKLSAgICB1cGRhdGVQbGF0Zm9ybVJlcXVlc3QoKTsKLSAgICAKLSAgICByZXR1cm4g
W1ttX25zUmVxdWVzdC5nZXQoKSByZXRhaW5dIGF1dG9yZWxlYXNlXTsgCitOU1VSTFJlcXVlc3Qg
KlJlc291cmNlUmVxdWVzdDo6bnNVUkxSZXF1ZXN0KEhUVFBCb2R5VXBkYXRlUG9saWN5IGJvZHlQ
b2xpY3kpIGNvbnN0Cit7CisgICAgdXBkYXRlUGxhdGZvcm1SZXF1ZXN0KGJvZHlQb2xpY3kpOwor
CisgICAgcmV0dXJuIFtbbV9uc1JlcXVlc3QuZ2V0KCkgcmV0YWluXSBhdXRvcmVsZWFzZV07CiB9
CiAKICNpZiBVU0UoQ0ZORVRXT1JLKQpAQCAtMTA3LDEyICsxMDcsNiBAQCB2b2lkIFJlc291cmNl
UmVxdWVzdDo6ZG9VcGRhdGVSZXNvdXJjZVJlCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAo
TlNEYXRhKiBib2R5RGF0YSA9IFttX25zUmVxdWVzdC5nZXQoKSBIVFRQQm9keV0pCi0gICAgICAg
IG1faHR0cEJvZHkgPSBGb3JtRGF0YTo6Y3JlYXRlKFtib2R5RGF0YSBieXRlc10sIFtib2R5RGF0
YSBsZW5ndGhdKTsKLSAgICBlbHNlIGlmIChOU0lucHV0U3RyZWFtKiBib2R5U3RyZWFtID0gW21f
bnNSZXF1ZXN0LmdldCgpIEhUVFBCb2R5U3RyZWFtXSkKLSAgICAgICAgaWYgKEZvcm1EYXRhKiBm
b3JtRGF0YSA9IGh0dHBCb2R5RnJvbVN0cmVhbShib2R5U3RyZWFtKSkKLSAgICAgICAgICAgIG1f
aHR0cEJvZHkgPSBmb3JtRGF0YTsKLQogI2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJT05JTkcpCiAg
ICAgTlNTdHJpbmcqIGNhY2hlUGFydGl0aW9uID0gW05TVVJMUHJvdG9jb2wgcHJvcGVydHlGb3JL
ZXk6KE5TU3RyaW5nICopd2tDYWNoZVBhcnRpdGlvbktleSgpIGluUmVxdWVzdDptX25zUmVxdWVz
dC5nZXQoKV07CiAgICAgaWYgKGNhY2hlUGFydGl0aW9uKQpAQCAtMTIwLDYgKzExNCwyMCBAQCB2
b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVSZXNvdXJjZVJlCiAjZW5kaWYKIH0KIAordm9p
ZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUmVzb3VyY2VIVFRQQm9keSgpCit7CisgICAgaWYg
KE5TRGF0YSogYm9keURhdGEgPSBbbV9uc1JlcXVlc3QuZ2V0KCkgSFRUUEJvZHldKQorICAgICAg
ICBtX2h0dHBCb2R5ID0gRm9ybURhdGE6OmNyZWF0ZShbYm9keURhdGEgYnl0ZXNdLCBbYm9keURh
dGEgbGVuZ3RoXSk7CisgICAgZWxzZSBpZiAoTlNJbnB1dFN0cmVhbSogYm9keVN0cmVhbSA9IFtt
X25zUmVxdWVzdC5nZXQoKSBIVFRQQm9keVN0cmVhbV0pIHsKKyAgICAgICAgRm9ybURhdGEqIGZv
cm1EYXRhID0gaHR0cEJvZHlGcm9tU3RyZWFtKGJvZHlTdHJlYW0pOworICAgICAgICAvLyBUaGVy
ZSBpcyBubyBGb3JtRGF0YSBvYmplY3QgaWYgYSBjbGllbnQgcHJvdmlkZWQgYSBjdXN0b20gZGF0
YSBzdHJlYW0uCisgICAgICAgIC8vIFdlIHNob3VsZG4ndCBiZSBsb29raW5nIGF0IGh0dHAgYm9k
eSBhZnRlciBjbGllbnQgY2FsbGJhY2tzLgorICAgICAgICBBU1NFUlQoZm9ybURhdGEpOworICAg
ICAgICBpZiAoZm9ybURhdGEpCisgICAgICAgICAgICBtX2h0dHBCb2R5ID0gZm9ybURhdGE7Cisg
ICAgfQorfQorCiB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3Qo
KQogewogICAgIGlmIChpc051bGwoKSkgewpAQCAtMTI3LDcgKzEzNSw3IEBAIHZvaWQgUmVzb3Vy
Y2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmUKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICAKLSAgICBOU011dGFibGVVUkxSZXF1ZXN0KiBuc1JlcXVlc3QgPSBbbV9uc1JlcXVlc3QuZ2V0
KCkgbXV0YWJsZUNvcHldOworICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKm5zUmVxdWVzdCA9IFtt
X25zUmVxdWVzdC5nZXQoKSBtdXRhYmxlQ29weV07CiAKICAgICBpZiAobnNSZXF1ZXN0KQogICAg
ICAgICBbbnNSZXF1ZXN0IHNldFVSTDp1cmwoKV07CkBAIC0xNzgsMjEgKzE4Niw1NyBAQCB2b2lk
IFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlCiAgICAgICAgIFtuc1JlcXVlc3Qg
c2V0Q29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5OmVuY29kaW5nRmFsbGJh
Y2tzXTsKICAgICB9CiAKKyNpZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5HKQorICAgIFtOU1VS
TFByb3RvY29sIHNldFByb3BlcnR5Om1fY2FjaGVQYXJ0aXRpb24gZm9yS2V5OihOU1N0cmluZyAq
KXdrQ2FjaGVQYXJ0aXRpb25LZXkoKSBpblJlcXVlc3Q6bnNSZXF1ZXN0XTsKKyNlbmRpZgorCisg
ICAgbV9uc1JlcXVlc3QuYWRvcHROUyhuc1JlcXVlc3QpOworfQorCit2b2lkIFJlc291cmNlUmVx
dWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybUhUVFBCb2R5KCkKK3sKKyAgICBpZiAoaXNOdWxsKCkpIHsK
KyAgICAgICAgQVNTRVJUKCFtX25zUmVxdWVzdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpuc1JlcXVlc3QgPSBbbV9uc1JlcXVlc3QuZ2V0KCkg
bXV0YWJsZUNvcHldOworCisgICAgaWYgKG5zUmVxdWVzdCkKKyAgICAgICAgW25zUmVxdWVzdCBz
ZXRVUkw6dXJsKCldOworICAgIGVsc2UKKyAgICAgICAgbnNSZXF1ZXN0ID0gW1tOU011dGFibGVV
UkxSZXF1ZXN0IGFsbG9jXSBpbml0V2l0aFVSTDp1cmwoKV07CisKICAgICBSZWZQdHI8Rm9ybURh
dGE+IGZvcm1EYXRhID0gaHR0cEJvZHkoKTsKICAgICBpZiAoZm9ybURhdGEgJiYgIWZvcm1EYXRh
LT5pc0VtcHR5KCkpCiAgICAgICAgIFdlYkNvcmU6OnNldEhUVFBCb2R5KG5zUmVxdWVzdCwgZm9y
bURhdGEpOwogCi0jaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKLSAgICBbTlNVUkxQcm90
b2NvbCBzZXRQcm9wZXJ0eTptX2NhY2hlUGFydGl0aW9uIGZvcktleTooTlNTdHJpbmcgKil3a0Nh
Y2hlUGFydGl0aW9uS2V5KCkgaW5SZXF1ZXN0Om5zUmVxdWVzdF07Ci0jZW5kaWYKKyAgICBpZiAo
TlNJbnB1dFN0cmVhbSAqYm9keVN0cmVhbSA9IFtuc1JlcXVlc3QgSFRUUEJvZHlTdHJlYW1dKSB7
CisgICAgICAgIC8vIEZvciBzdHJlYW1zLCBwcm92aWRlIGEgQ29udGVudC1MZW5ndGggdG8gYXZv
aWQgdXNpbmcgY2h1bmtlZCBlbmNvZGluZywgYW5kIHRvIGdldCBhY2N1cmF0ZSB0b3RhbCBsZW5n
dGggaW4gY2FsbGJhY2tzLgorICAgICAgICBOU1N0cmluZyAqbGVuZ3RoU3RyaW5nID0gW2JvZHlT
dHJlYW0gcHJvcGVydHlGb3JLZXk6KE5TU3RyaW5nICopZm9ybURhdGFTdHJlYW1MZW5ndGhQcm9w
ZXJ0eU5hbWUoKV07CisgICAgICAgIGlmIChsZW5ndGhTdHJpbmcpIHsKKyAgICAgICAgICAgIFtu
c1JlcXVlc3Qgc2V0VmFsdWU6bGVuZ3RoU3RyaW5nIGZvckhUVFBIZWFkZXJGaWVsZDpAIkNvbnRl
bnQtTGVuZ3RoIl07CisgICAgICAgICAgICAvLyBTaW5jZSByZXNvdXJjZSByZXF1ZXN0IGlzIGFs
cmVhZHkgbWFya2VkIHVwZGF0ZWQsIHdlIG5lZWQgdG8ga2VlcCBpdCB1cCB0byBkYXRlIHRvby4K
KyAgICAgICAgICAgIEFTU0VSVChtX3Jlc291cmNlUmVxdWVzdFVwZGF0ZWQpOworICAgICAgICAg
ICAgbV9odHRwSGVhZGVyRmllbGRzLnNldCgiQ29udGVudC1MZW5ndGgiLCBsZW5ndGhTdHJpbmcp
OworICAgICAgICB9CisgICAgfQogCiAgICAgbV9uc1JlcXVlc3QuYWRvcHROUyhuc1JlcXVlc3Qp
OwogfQogCit2b2lkIFJlc291cmNlUmVxdWVzdDo6dXBkYXRlRnJvbURlbGVnYXRlUHJlc2Vydmlu
Z09sZEhUVFBCb2R5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgZGVsZWdhdGVQcm92aWRlZFJlcXVl
c3QpCit7CisgICAgUmVmUHRyPEZvcm1EYXRhPiBvbGRIVFRQQm9keSA9IGh0dHBCb2R5KCk7CisK
KyAgICAqdGhpcyA9IGRlbGVnYXRlUHJvdmlkZWRSZXF1ZXN0OworICAgIHNldEhUVFBCb2R5KG9s
ZEhUVFBCb2R5LnJlbGVhc2UoKSk7Cit9CisKIHZvaWQgUmVzb3VyY2VSZXF1ZXN0OjphcHBseVdl
YkFyY2hpdmVIYWNrRm9yTWFpbCgpCiB7CiAgICAgLy8gSGFjayBiZWNhdXNlIE1haWwgY2hlY2tz
IGZvciB0aGlzIHByb3BlcnR5IHRvIGRldGVjdCBkYXRhIC8gYXJjaGl2ZSBsb2FkcwotICAgIFtO
U1VSTFByb3RvY29sIHNldFByb3BlcnR5OkAiIiBmb3JLZXk6QCJXZWJEYXRhUmVxdWVzdCIgaW5S
ZXF1ZXN0OihOU011dGFibGVVUkxSZXF1ZXN0ICopbnNVUkxSZXF1ZXN0KCldOworICAgIFtOU1VS
TFByb3RvY29sIHNldFByb3BlcnR5OkAiIiBmb3JLZXk6QCJXZWJEYXRhUmVxdWVzdCIgaW5SZXF1
ZXN0OihOU011dGFibGVVUkxSZXF1ZXN0ICopbnNVUkxSZXF1ZXN0KERvTm90VXBkYXRlSFRUUEJv
ZHkpXTsKIH0KIAogdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OnNldFN0b3JhZ2VTZXNzaW9uKENGVVJM
U3RvcmFnZVNlc3Npb25SZWYgc3RvcmFnZVNlc3Npb24pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlUmVxdWVzdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VSZXF1ZXN0LmgJKHJldmlzaW9u
IDE0NDA2NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VS
ZXF1ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDEzICs1OSwxNyBAQCBjbGFzcyBOZXR3b3Jr
aW5nQ29udGV4dDsKICAgICAgICAgewogICAgICAgICB9CiAKKyAgICAgICAgdm9pZCB1cGRhdGVG
cm9tRGVsZWdhdGVQcmVzZXJ2aW5nT2xkSFRUUEJvZHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBk
ZWxlZ2F0ZVByb3ZpZGVkUmVxdWVzdCkgeyAqdGhpcyA9IGRlbGVnYXRlUHJvdmlkZWRSZXF1ZXN0
OyB9CisKICAgICAgICAgUU5ldHdvcmtSZXF1ZXN0IHRvTmV0d29ya1JlcXVlc3QoTmV0d29ya2lu
Z0NvbnRleHQqID0gMCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0QmFzZTsKIAotICAgICAgICB2b2lkIGRvVXBkYXRlUGxhdGZvcm1S
ZXF1ZXN0KCkge30KLSAgICAgICAgdm9pZCBkb1VwZGF0ZVJlc291cmNlUmVxdWVzdCgpIHt9Cisg
ICAgICAgIHZvaWQgZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QoKSB7IH0KKyAgICAgICAgdm9pZCBk
b1VwZGF0ZVJlc291cmNlUmVxdWVzdCgpIHsgfQorICAgICAgICB2b2lkIGRvVXBkYXRlUGxhdGZv
cm1IVFRQQm9keSgpIHsgfQorICAgICAgICB2b2lkIGRvVXBkYXRlUmVzb3VyY2VIVFRQQm9keSgp
IHsgfQogCiAgICAgICAgIFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRh
PiBkb1BsYXRmb3JtQ29weURhdGEoUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVz
dERhdGE+IGRhdGEpIGNvbnN0IHsgcmV0dXJuIGRhdGE7IH0KICAgICAgICAgdm9pZCBkb1BsYXRm
b3JtQWRvcHQoUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+KSB7IH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVl
c3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
UmVzb3VyY2VSZXF1ZXN0LmgJKHJldmlzaW9uIDE0NDA2NykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaAkod29ya2luZyBjb3B5KQpAQCAt
NjcsNiArNjcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICB1cGRhdGVGcm9t
U291cE1lc3NhZ2Uoc291cE1lc3NhZ2UpOwogICAgICAgICB9CiAKKyAgICAgICAgdm9pZCB1cGRh
dGVGcm9tRGVsZWdhdGVQcmVzZXJ2aW5nT2xkSFRUUEJvZHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiBkZWxlZ2F0ZVByb3ZpZGVkUmVxdWVzdCkgeyAqdGhpcyA9IGRlbGVnYXRlUHJvdmlkZWRSZXF1
ZXN0OyB9CisKICAgICAgICAgdm9pZCB1cGRhdGVTb3VwTWVzc2FnZShTb3VwTWVzc2FnZSopIGNv
bnN0OwogICAgICAgICBTb3VwTWVzc2FnZSogdG9Tb3VwTWVzc2FnZSgpIGNvbnN0OwogICAgICAg
ICB2b2lkIHVwZGF0ZUZyb21Tb3VwTWVzc2FnZShTb3VwTWVzc2FnZSopOwpAQCAtODEsOCArODMs
MTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIFNvdXBNZXNzYWdlRmxhZ3MgbV9z
b3VwRmxhZ3M7CiAKLSAgICAgICAgdm9pZCBkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpIHt9Owot
ICAgICAgICB2b2lkIGRvVXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCkge307CisgICAgICAgIHZvaWQg
ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QoKSB7IH0KKyAgICAgICAgdm9pZCBkb1VwZGF0ZVJlc291
cmNlUmVxdWVzdCgpIHsgfQorICAgICAgICB2b2lkIGRvVXBkYXRlUGxhdGZvcm1IVFRQQm9keSgp
IHsgfQorICAgICAgICB2b2lkIGRvVXBkYXRlUmVzb3VyY2VIVFRQQm9keSgpIHsgfQogCiAgICAg
ICAgIFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPiBkb1BsYXRmb3Jt
Q29weURhdGEoUGFzc093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IGRhdGEp
IGNvbnN0IHsgcmV0dXJuIGRhdGE7IH0KICAgICAgICAgdm9pZCBkb1BsYXRmb3JtQWRvcHQoUGFz
c093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+KSB7IH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL1Jlc291cmNlUmVxdWVzdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL1Jlc291cmNlUmVxdWVz
dC5oCShyZXZpc2lvbiAxNDQwNjcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3dpbi9SZXNvdXJjZVJlcXVlc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsNiArNTgsOCBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCBkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpIHsgfQogICAgIHZv
aWQgZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3QoKSB7IH0KKyAgICB2b2lkIGRvVXBkYXRlUGxhdGZv
cm1IVFRQQm9keSgpIHsgfQorICAgIHZvaWQgZG9VcGRhdGVSZXNvdXJjZUhUVFBCb2R5KCkgeyB9
CiAKICAgICBQYXNzT3duUHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4gZG9QbGF0
Zm9ybUNvcHlEYXRhKFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPiBk
YXRhKSBjb25zdCB7IHJldHVybiBkYXRhOyB9CiAgICAgdm9pZCBkb1BsYXRmb3JtQWRvcHQoUGFz
c093blB0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+KSB7IH0KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cJKHJldmlzaW9uIDE0NDExNikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDEzLTAyLTI2ICBBbGV4ZXkgUHJvc2t1cnlha292
ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIERvbid0IGFkZCBhIGJvZHkgdG8gcGxhdGZvcm0g
cmVxdWVzdCB1bnRpbCBuZWNlc3NhcnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExMDkwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVl
c3QpOiBSZXN0b3JlIGJvZHkgYWZ0ZXIgSVBDLiBUaGVyZQorICAgICAgICBpcyBubyB3YXkgZm9y
IHRoZSBjbGllbnQgdG8gY2hhbmdlIGl0LgorCisgICAgICAgICogU2hhcmVkL0Rvd25sb2Fkcy9t
YWMvRG93bmxvYWRNYWMubW06CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpzdGFydCk6Cisg
ICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpzdGFydFdpdGhIYW5kbGUpOgorICAgICAgICBQYXNz
IFVwZGF0ZUhUVFBCb2R5IHdoZW4gcGFzc2luZyBhIHJlcXVlc3QgdG8gTlNVUkxDb25uZWN0aW9u
LgorCisgICAgICAgICogU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW06IChD
b3JlSVBDOjo6OmVuY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgIE5ldmVyIHNlcmlhbGl6ZSB0
aGUgcmVxdWVzdCBib2R5LiBJdCdzIHNsb3csIGFuZCBzb21ldGltZXMgaW1wb3NzaWJsZSwgc28g
anVzdAorICAgICAgICBrZWVwaW5nIHRoaW5ncyBjb25zaXN0ZW50LgorCisgICAgICAgICogU2hh
cmVkL21hYy9XZWJVUkxSZXF1ZXN0TWFjLm1tOiAoV2ViS2l0OjpXZWJVUkxSZXF1ZXN0OjpwbGF0
Zm9ybVJlcXVlc3QpOgorICAgICAgICBQYXNzIERvTm90VXBkYXRlSFRUUEJvZHksIGFzIHdlIGNh
bid0IHVwZGF0ZSBpdCBvdXRzaWRlIE5ldHdvcmtQcm9jZXNzLgorCisgICAgICAgICogVUlQcm9j
ZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OnN0
YXJ0TG9hZGluZyk6IERpdHRvLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQ6OndpbGxTZW5kUmVxdWVz
dEZvckZyYW1lKToKKyAgICAgICAgUmVzdG9yZSBleGlzdGluZyBib2R5IGFmdGVyIGEgY2xpZW50
IGNhbGwuLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1t
OiAoV2ViS2l0OjpXZWJQYWdlOjpwbGF0Zm9ybUNhbkhhbmRsZVJlcXVlc3QpOgorICAgICAgICBQ
YXNzIERvTm90VXBkYXRlSFRUUEJvZHksIGFzIHdlIGNhbid0IHVwZGF0ZSBpdCBvdXRzaWRlIE5l
dHdvcmtQcm9jZXNzLgorCiAyMDEzLTAyLTI2ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBh
cHBsZS5jb20+CiAKICAgICAgICAgRml4IGEgY29weS9wYXN0ZSBlcnJvciBpbiBXZWJMb2FkZXJD
bGllbnQ6OmRpZEJsb2NrSW5zZWN1cmVQbHVnaW5WZXJzaW9uCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJ
KHJldmlzaW9uIDE0NDA2NykKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4OSw3ICsxODksMTAgQEAg
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdQogICAgIC8vIElmIHRoaXMg
bWVzc2FnZSBjaGFuZ2VzIHRvIGJlIGFzeW5jaHJvbm91cyB3ZSBtaWdodCBpbnRyb2R1Y2UgYSBz
aXR1YXRpb24gd2hlcmUgdGhlIE5ldHdvcmtQcm9jZXNzIGlzIGRlYWRsb2NrZWQgd2FpdGluZyBm
b3IgNiBjb25uZWN0aW9ucwogICAgIC8vIHRvIGNvbXBsZXRlIHdoaWxlIHRoZSBXZWJQcm9jZXNz
IGlzIHdhaXRpbmcgZm9yIGEgN3RoIHRvIGNvbXBsZXRlLgogICAgIC8vIElmIHdlIGV2ZXIgY2hh
bmdlIHRoaXMgbWVzc2FnZSB0byBiZSBhc3luY2hyb25vdXMgd2UgaGF2ZSB0byBpbmNsdWRlIHNh
ZmVndWFyZHMgdG8gbWFrZSBzdXJlIHRoZSBuZXcgZGVzaWduIGludGVyYWN0cyB3ZWxsIHdpdGgg
c3luYyBYSFIuCi0gICAgaWYgKCFzZW5kU3luYyhNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6
OldpbGxTZW5kUmVxdWVzdChyZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKSwgTWVzc2FnZXM6Oldl
YlJlc291cmNlTG9hZGVyOjpXaWxsU2VuZFJlcXVlc3Q6OlJlcGx5KHJlcXVlc3QpKSkKKyAgICBS
ZXNvdXJjZVJlcXVlc3QgcmV0dXJuZWRSZXF1ZXN0OworICAgIGlmIChzZW5kU3luYyhNZXNzYWdl
czo6V2ViUmVzb3VyY2VMb2FkZXI6OldpbGxTZW5kUmVxdWVzdChyZXF1ZXN0LCByZWRpcmVjdFJl
c3BvbnNlKSwgTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpXaWxsU2VuZFJlcXVlc3Q6OlJl
cGx5KHJldHVybmVkUmVxdWVzdCkpKQorICAgICAgICByZXF1ZXN0LnVwZGF0ZUZyb21EZWxlZ2F0
ZVByZXNlcnZpbmdPbGRIVFRQQm9keShyZXR1cm5lZFJlcXVlc3QubnNVUkxSZXF1ZXN0KERvTm90
VXBkYXRlSFRUUEJvZHkpKTsKKyAgICBlbHNlCiAgICAgICAgIHJlcXVlc3QgPSBSZXNvdXJjZVJl
cXVlc3QoKTsKIAogICAgIFJ1bkxvb3A6Om1haW4oKS0+ZGlzcGF0Y2goYmluZCgmTmV0d29ya1Jl
c291cmNlTG9hZFNjaGVkdWxlcjo6cmVjZWl2ZWRSZWRpcmVjdCwgJk5ldHdvcmtQcm9jZXNzOjpz
aGFyZWQoKS5uZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyKCksIHRoaXMsIHJlcXVlc3QudXJs
KCkpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvbWFjL0Rvd25sb2Fk
TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvbWFj
L0Rvd25sb2FkTWFjLm1tCShyZXZpc2lvbiAxNDQwNjcpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTksNyAr
NTksNyBAQCB2b2lkIERvd25sb2FkOjpzdGFydCgpCiAgICAgQVNTRVJUKCFtX2RlbGVnYXRlKTsK
IAogICAgIG1fZGVsZWdhdGUuYWRvcHROUyhbW1dLRG93bmxvYWRBc0RlbGVnYXRlIGFsbG9jXSBp
bml0V2l0aERvd25sb2FkOnRoaXNdKTsKLSAgICBtX25zVVJMRG93bmxvYWQuYWRvcHROUyhbW05T
VVJMRG93bmxvYWQgYWxsb2NdIGluaXRXaXRoUmVxdWVzdDptX3JlcXVlc3QubnNVUkxSZXF1ZXN0
KCkgZGVsZWdhdGU6bV9kZWxlZ2F0ZS5nZXQoKV0pOworICAgIG1fbnNVUkxEb3dubG9hZC5hZG9w
dE5TKFtbTlNVUkxEb3dubG9hZCBhbGxvY10gaW5pdFdpdGhSZXF1ZXN0Om1fcmVxdWVzdC5uc1VS
TFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpIGRlbGVnYXRlOm1fZGVsZWdhdGUuZ2V0KCldKTsKIAog
ICAgIC8vIEZJWE1FOiBBbGxvdyB0aGlzIHRvIGJlIGNoYW5nZWQgYnkgdGhlIGNsaWVudC4KICAg
ICBbbV9uc1VSTERvd25sb2FkLmdldCgpIHNldERlbGV0ZXNGaWxlVXBvbkZhaWx1cmU6Tk9dOwpA
QCAtNzUsNyArNzUsNyBAQCB2b2lkIERvd25sb2FkOjpzdGFydFdpdGhIYW5kbGUoUmVzb3VyY2VI
CiAKICAgICBtX2RlbGVnYXRlLmFkb3B0TlMoW1tXS0Rvd25sb2FkQXNEZWxlZ2F0ZSBhbGxvY10g
aW5pdFdpdGhEb3dubG9hZDp0aGlzXSk7CiAgICAgbV9uc1VSTERvd25sb2FkID0gW05TVVJMRG93
bmxvYWQgX2Rvd25sb2FkV2l0aExvYWRpbmdDb25uZWN0aW9uOmhhbmRsZS0+Y29ubmVjdGlvbigp
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXF1ZXN0Om1fcmVxdWVzdC5uc1VSTFJlcXVlc3QoKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdDptX3JlcXVl
c3QubnNVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZTpyZXNwb25zZS5uc1VS
TFJlc3BvbnNlKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRlbGVnYXRlOm1fZGVsZWdhdGUuZ2V0KCkKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3h5OnBy
b3h5XTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzTWFjLm1tCShyZXZpc2lvbiAxNDQwNjcpCisrKyBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbQkod29ya2luZyBjb3B5KQpA
QCAtNDAsMTMgKzQwLDIzIEBAIG5hbWVzcGFjZSBDb3JlSVBDIHsKIAogdm9pZCBBcmd1bWVudENv
ZGVyPFJlc291cmNlUmVxdWVzdD46OmVuY29kZVBsYXRmb3JtRGF0YShBcmd1bWVudEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQogewotICAg
IGJvb2wgcmVxdWVzdElzUHJlc2VudCA9IHJlc291cmNlUmVxdWVzdC5uc1VSTFJlcXVlc3QoKTsK
KyAgICBSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiByZXF1ZXN0VG9TZXJpYWxpemUgPSByZXNvdXJj
ZVJlcXVlc3QubnNVUkxSZXF1ZXN0KERvTm90VXBkYXRlSFRUUEJvZHkpOworCisgICAgYm9vbCBy
ZXF1ZXN0SXNQcmVzZW50ID0gcmVxdWVzdFRvU2VyaWFsaXplOwogICAgIGVuY29kZXIgPDwgcmVx
dWVzdElzUHJlc2VudDsKIAogICAgIGlmICghcmVxdWVzdElzUHJlc2VudCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gZGljdGlvbmFyeShBZG9wdENG
LCBXS05TVVJMUmVxdWVzdENyZWF0ZVNlcmlhbGl6YWJsZVJlcHJlc2VudGF0aW9uKHJlc291cmNl
UmVxdWVzdC5uc1VSTFJlcXVlc3QoKSwgQ29yZUlQQzo6dG9rZW5OdWxsVHlwZVJlZigpKSk7Cisg
ICAgLy8gV2UgZG9uJ3Qgc2VuZCBIVFRQIGJvZHkgb3ZlciBJUEMgZm9yIGJldHRlciBwZXJmb3Jt
YW5jZS4KKyAgICAvLyBBbHNvLCBpdCdzIG5vdCBhbHdheXMgcG9zc2libGUgdG8gZG8sIGFzIHN0
cmVhbXMgY2FuIG9ubHkgYmUgY3JlYXRlZCBpbiBwcm9jZXNzIHRoYXQgZG9lcyBuZXR3b3JraW5n
LgorICAgIGlmIChbcmVxdWVzdFRvU2VyaWFsaXplLmdldCgpIEhUVFBCb2R5XSB8fCBbcmVxdWVz
dFRvU2VyaWFsaXplLmdldCgpIEhUVFBCb2R5U3RyZWFtXSkgeworICAgICAgICByZXF1ZXN0VG9T
ZXJpYWxpemUuYWRvcHROUyhbcmVxdWVzdFRvU2VyaWFsaXplLmdldCgpIG11dGFibGVDb3B5XSk7
CisgICAgICAgIFsoTlNNdXRhYmxlVVJMUmVxdWVzdCAqKXJlcXVlc3RUb1NlcmlhbGl6ZS5nZXQo
KSBzZXRIVFRQQm9keTpuaWxdOworICAgICAgICBbKE5TTXV0YWJsZVVSTFJlcXVlc3QgKilyZXF1
ZXN0VG9TZXJpYWxpemUuZ2V0KCkgc2V0SFRUUEJvZHlTdHJlYW06bmlsXTsKKyAgICB9CisKKyAg
ICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBkaWN0aW9uYXJ5KEFkb3B0Q0YsIFdLTlNVUkxS
ZXF1ZXN0Q3JlYXRlU2VyaWFsaXphYmxlUmVwcmVzZW50YXRpb24ocmVxdWVzdFRvU2VyaWFsaXpl
LmdldCgpLCBDb3JlSVBDOjp0b2tlbk51bGxUeXBlUmVmKCkpKTsKICAgICBDb3JlSVBDOjplbmNv
ZGUoZW5jb2RlciwgZGljdGlvbmFyeS5nZXQoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9tYWMvV2ViVVJMUmVxdWVzdE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvbWFjL1dlYlVSTFJlcXVlc3RNYWMubW0JKHJldmlzaW9uIDE0NDA2NykKKysr
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvV2ViVVJMUmVxdWVzdE1hYy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMjYsNiArMjYsOCBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXZWJV
UkxSZXF1ZXN0LmgiCiAKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogV2ViVVJMUmVxdWVzdDo6V2ViVVJMUmVxdWVzdChQbGF0Zm9ybVJlcXVlc3QgcGxh
dGZvcm1SZXF1ZXN0KQpAQCAtMzUsNyArMzcsNyBAQCBXZWJVUkxSZXF1ZXN0OjpXZWJVUkxSZXF1
ZXN0KFBsYXRmb3JtUmVxCiAKIFBsYXRmb3JtUmVxdWVzdCBXZWJVUkxSZXF1ZXN0OjpwbGF0Zm9y
bVJlcXVlc3QoKSBjb25zdAogewotICAgIHJldHVybiBtX3JlcXVlc3QubnNVUkxSZXF1ZXN0KCk7
CisgICAgcmV0dXJuIG1fcmVxdWVzdC5uc1VSTFJlcXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9keSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9D
dXN0b21Qcm90b2NvbHMvbWFjL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1tCShyZXZp
c2lvbiAxNDQwNjcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Q
cm90b2NvbHMvbWFjL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzEsNyArMTMxLDcgQEAgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OkN1c3Rv
bVByb3RvYwogCiB2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpzdGFydExvYWRpbmco
dWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBjb3JlUmVx
dWVzdCkKIHsKLSAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBjb3JlUmVxdWVzdC5uc1VSTFJl
cXVlc3QoKTsKKyAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBjb3JlUmVxdWVzdC5uc1VSTFJl
cXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9keSk7CiAgICAgaWYgKCFyZXF1ZXN0KQogICAgICAgICBy
ZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZVJlc291cmNlTG9hZENsaWVudC5jcHAJKHJldmlzaW9uIDE0NDA2NykKKysrIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlUmVzb3VyY2VM
b2FkQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCB2b2lkIEluamVj
dGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVuCiAKICAgICBSZWZQdHI8V2ViVVJMUmVxdWVz
dD4gcmV0dXJuZWRSZXF1ZXN0ID0gYWRvcHRSZWYodG9JbXBsKG1fY2xpZW50LndpbGxTZW5kUmVx
dWVzdEZvckZyYW1lKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksIGlkZW50aWZpZXIsIHRvQVBJ
KHJlcXVlc3QpLCB0b0FQSShyZWRpcmVjdFJlc3BvbnNlKSwgbV9jbGllbnQuY2xpZW50SW5mbykp
KTsKICAgICBpZiAocmV0dXJuZWRSZXF1ZXN0KQotICAgICAgICByZXF1ZXN0ID0gcmV0dXJuZWRS
ZXF1ZXN0LT5yZXNvdXJjZVJlcXVlc3QoKTsKKyAgICAgICAgcmVxdWVzdC51cGRhdGVGcm9tRGVs
ZWdhdGVQcmVzZXJ2aW5nT2xkSFRUUEJvZHkocmV0dXJuZWRSZXF1ZXN0LT5yZXNvdXJjZVJlcXVl
c3QoKSk7CiAgICAgZWxzZQogICAgICAgICByZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KCk7CiB9
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9X
ZWJQYWdlTWFjLm1tCShyZXZpc2lvbiAxNDQwNjcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTcyNSw3ICs3
MjUsNyBAQCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gV2ViUGFnZTo6Y2FjaGVkCiAKIGJvb2wg
V2ViUGFnZTo6cGxhdGZvcm1DYW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBpZiAoW05TVVJMQ29ubmVjdGlvbiBjYW5IYW5kbGVS
ZXF1ZXN0OnJlcXVlc3QubnNVUkxSZXF1ZXN0KCldKQorICAgIGlmIChbTlNVUkxDb25uZWN0aW9u
IGNhbkhhbmRsZVJlcXVlc3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9k
eSldKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIEZJWE1FOiBSZXR1cm4gdHJ1ZSBp
ZiB0aGlzIHNjaGVtZSBpcyBhbnkgb25lIFdlYktpdDIga25vd3MgaG93IHRvIGhhbmRsZS4KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0NDExNikKKysrIFNvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDEzLTAyLTI2ICBB
bGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIERvbid0IGFkZCBh
IGJvZHkgdG8gcGxhdGZvcm0gcmVxdWVzdCB1bnRpbCBuZWNlc3NhcnkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDkwMAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYktpdDEgYmVoYXZpb3IgaXMgdW5j
aGFuZ2VkLCBib2R5IGlzIGFkZGVkIG9uIGV2ZXJ5IGNvbnZlcnNpb24uCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1l
TG9hZGVyQ2xpZW50Ojpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQpOgorICAgICAg
ICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkTG9hZFJlc291cmNlRnJvbU1lbW9y
eUNhY2hlKToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojphc3NpZ25JZGVudGlmaWVy
VG9Jbml0aWFsUmVxdWVzdCk6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hXaWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAgICAgICAgKFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24pOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnVwZGF0ZUdsb2JhbEhpc3Rvcnkp
OgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNhbkhhbmRsZVJlcXVlc3QpOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbToKKyAgICAgICAgKC1bV2ViRGF0YVNvdXJj
ZSBpbml0aWFsUmVxdWVzdF0pOgorICAgICAgICAoLVtXZWJEYXRhU291cmNlIHJlcXVlc3RdKToK
KyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBfbG9h
ZERhdGE6TUlNRVR5cGU6dGV4dEVuY29kaW5nTmFtZTpiYXNlVVJMOnVucmVhY2hhYmxlVVJMOl0p
OgorCiAyMDEzLTAyLTI2ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4OyB1c2UgY29ycmVjdCBtYWNybyBmb3IgcGxhdGZvcm0g
bmFtZSBpbiBGZWF0dXJlRGVmaW5lcy54Y2NvbmZpZy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCShy
ZXZpc2lvbiAxNDQwNjcpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgyLDcgKzI4Miw3IEBAIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbnZlcnRNYWluUmUKICAgICBXZWJWaWV3ICp3ZWJW
aWV3ID0gZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdldCgpKTsKICAgICBDRlVSTENvbm5lY3Rpb25S
ZWYgY29ubmVjdGlvbiA9IGhhbmRsZS0+Y29ubmVjdGlvbigpOwogICAgIFtXZWJEb3dubG9hZCBf
ZG93bmxvYWRXaXRoTG9hZGluZ0NGVVJMQ29ubmVjdGlvbjpjb25uZWN0aW9uCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXF1ZXN0OnJlcXVlc3QuY2ZVUkxSZXF1ZXN0KCkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Q6cmVx
dWVzdC5jZlVSTFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlOnJl
c3BvbnNlLmNmVVJMUmVzcG9uc2UoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxlZ2F0ZTpbd2ViVmlldyBkb3du
bG9hZERlbGVnYXRlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm94eTpuaWxdOwpAQCAtMjk2LDcgKzI5Niw3
IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbnZlcnRNYWluUmUKICAgICAKICAgICBX
ZWJWaWV3ICp3ZWJWaWV3ID0gZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdldCgpKTsKICAgICBbV2Vi
RG93bmxvYWQgX2Rvd25sb2FkV2l0aExvYWRpbmdDb25uZWN0aW9uOmhhbmRsZS0+Y29ubmVjdGlv
bigpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVxdWVzdDpyZXF1ZXN0Lm5zVVJMUmVxdWVzdCgpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVz
dDpyZXF1ZXN0Lm5zVVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSkKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlOnJl
c3BvbnNlLm5zVVJMUmVzcG9uc2UoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZWdhdGU6W3dlYlZpZXcgZG93bmxvYWRE
ZWxlZ2F0ZV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHByb3h5OnByb3h5XTsKQEAgLTMxMiw3ICszMTIsNyBAQCBib29s
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZExvCiAgICAgaWYgKCFpbXBsZW1lbnRh
dGlvbnMtPmRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZUZ1bmMpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIENhbGxSZXNvdXJjZUxvYWREZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbnMt
PmRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZUZ1bmMsIHdlYlZpZXcsIEBzZWxlY3Rvcih3
ZWJWaWV3OmRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZTpyZXNwb25zZTpsZW5ndGg6ZnJv
bURhdGFTb3VyY2U6KSwgcmVxdWVzdC5uc1VSTFJlcXVlc3QoKSwgcmVzcG9uc2UubnNVUkxSZXNw
b25zZSgpLCBsZW5ndGgsIGRhdGFTb3VyY2UobG9hZGVyKSk7CisgICAgQ2FsbFJlc291cmNlTG9h
ZERlbGVnYXRlKGltcGxlbWVudGF0aW9ucy0+ZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hl
RnVuYywgd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6ZGlkTG9hZFJlc291cmNlRnJvbU1lbW9y
eUNhY2hlOnJlc3BvbnNlOmxlbmd0aDpmcm9tRGF0YVNvdXJjZTopLCByZXF1ZXN0Lm5zVVJMUmVx
dWVzdChVcGRhdGVIVFRQQm9keSksIHJlc3BvbnNlLm5zVVJMUmVzcG9uc2UoKSwgbGVuZ3RoLCBk
YXRhU291cmNlKGxvYWRlcikpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zMjQsNyArMzI0
LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6YXNzaWduSWRlbnRpZgogICAgIGlkIG9i
amVjdCA9IG5pbDsKICAgICBCT09MIHNob3VsZFJlbGVhc2UgPSBOTzsKICAgICBpZiAoaW1wbGVt
ZW50YXRpb25zLT5pZGVudGlmaWVyRm9yUmVxdWVzdEZ1bmMpCi0gICAgICAgIG9iamVjdCA9IENh
bGxSZXNvdXJjZUxvYWREZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbnMtPmlkZW50aWZpZXJGb3JSZXF1
ZXN0RnVuYywgd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6aWRlbnRpZmllckZvckluaXRpYWxS
ZXF1ZXN0OmZyb21EYXRhU291cmNlOiksIHJlcXVlc3QubnNVUkxSZXF1ZXN0KCksIGRhdGFTb3Vy
Y2UobG9hZGVyKSk7CisgICAgICAgIG9iamVjdCA9IENhbGxSZXNvdXJjZUxvYWREZWxlZ2F0ZShp
bXBsZW1lbnRhdGlvbnMtPmlkZW50aWZpZXJGb3JSZXF1ZXN0RnVuYywgd2ViVmlldywgQHNlbGVj
dG9yKHdlYlZpZXc6aWRlbnRpZmllckZvckluaXRpYWxSZXF1ZXN0OmZyb21EYXRhU291cmNlOiks
IHJlcXVlc3QubnNVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KSwgZGF0YVNvdXJjZShsb2FkZXIp
KTsKICAgICBlbHNlIHsKICAgICAgICAgb2JqZWN0ID0gW1tOU09iamVjdCBhbGxvY10gaW5pdF07
CiAgICAgICAgIHNob3VsZFJlbGVhc2UgPSBZRVM7CkBAIC0zNDYsNyArMzQ2LDcgQEAgdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsUwogICAgIGlmIChyZWRpcmVjdFJlc3Bv
bnNlLmlzTnVsbCgpKQogICAgICAgICBzdGF0aWNfY2FzdDxXZWJEb2N1bWVudExvYWRlck1hYyo+
KGxvYWRlciktPmluY3JlYXNlTG9hZENvdW50KGlkZW50aWZpZXIpOwogCi0gICAgTlNVUkxSZXF1
ZXN0ICpjdXJyZW50VVJMUmVxdWVzdCA9IHJlcXVlc3QubnNVUkxSZXF1ZXN0KCk7CisgICAgTlNV
UkxSZXF1ZXN0ICpjdXJyZW50VVJMUmVxdWVzdCA9IHJlcXVlc3QubnNVUkxSZXF1ZXN0KFVwZGF0
ZUhUVFBCb2R5KTsKICAgICBOU1VSTFJlcXVlc3QgKm5ld1VSTFJlcXVlc3QgPSBjdXJyZW50VVJM
UmVxdWVzdDsKICAgICBpZiAoaW1wbGVtZW50YXRpb25zLT53aWxsU2VuZFJlcXVlc3RGdW5jKQog
ICAgICAgICBuZXdVUkxSZXF1ZXN0ID0gKE5TVVJMUmVxdWVzdCAqKUNhbGxSZXNvdXJjZUxvYWRE
ZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbnMtPndpbGxTZW5kUmVxdWVzdEZ1bmMsIHdlYlZpZXcsIEBz
ZWxlY3Rvcih3ZWJWaWV3OnJlc291cmNlOndpbGxTZW5kUmVxdWVzdDpyZWRpcmVjdFJlc3BvbnNl
OmZyb21EYXRhU291cmNlOiksIFt3ZWJWaWV3IF9vYmplY3RGb3JJZGVudGlmaWVyOmlkZW50aWZp
ZXJdLCBjdXJyZW50VVJMUmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZS5uc1VSTFJlc3BvbnNlKCks
IGRhdGFTb3VyY2UobG9hZGVyKSk7CkBAIC03MjQsNyArNzI0LDcgQEAgdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZAogCiAgICAgW1t3ZWJWaWV3IF9wb2xpY3lEZWxlZ2F0
ZUZvcndhcmRlcl0gd2ViVmlldzp3ZWJWaWV3CiAgICAgICAgICAgICAgICAgICAgICAgICBkZWNp
ZGVQb2xpY3lGb3JNSU1FVHlwZTpyZXNwb25zZS5taW1lVHlwZSgpCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdDpyZXF1ZXN0Lm5zVVJMUmVxdWVzdCgpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdDpyZXF1ZXN0Lm5z
VVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZyYW1lOm1fd2ViRnJhbWUuZ2V0KCkKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkZWNpc2lvbkxpc3RlbmVyOnNldFVwUG9saWN5TGlzdGVuZXIoZnVuY3Rpb24p
LmdldCgpXTsKIH0KQEAgLTczNSw3ICs3MzUsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERlY2lkCiAgICAgV2ViVmlldyAqd2ViVmlldyA9IGdldFdlYlZpZXcobV93ZWJG
cmFtZS5nZXQoKSk7CiAgICAgW1t3ZWJWaWV3IF9wb2xpY3lEZWxlZ2F0ZUZvcndhcmRlcl0gd2Vi
Vmlldzp3ZWJWaWV3CiAgICAgICAgICAgICBkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb246
YWN0aW9uRGljdGlvbmFyeShhY3Rpb24sIGZvcm1TdGF0ZSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVxdWVzdDpyZXF1ZXN0Lm5zVVJMUmVxdWVzdCgpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoVXBk
YXRlSFRUUEJvZHkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdGcmFtZU5hbWU6
ZnJhbWVOYW1lCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2lzaW9uTGlzdGVuZXI6c2V0
VXBQb2xpY3lMaXN0ZW5lcihmdW5jdGlvbikuZ2V0KCldOwogfQpAQCAtNzQ2LDcgKzc0Niw3IEBA
IHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWQKICAgICBXZWJWaWV3ICp3
ZWJWaWV3ID0gZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdldCgpKTsKICAgICBbW3dlYlZpZXcgX3Bv
bGljeURlbGVnYXRlRm9yd2FyZGVyXSB3ZWJWaWV3OndlYlZpZXcKICAgICAgICAgICAgICAgICBk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOmFjdGlvbkRpY3Rpb25hcnkoYWN0aW9uLCBm
b3JtU3RhdGUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVz
dDpyZXF1ZXN0Lm5zVVJMUmVxdWVzdCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVxdWVzdDpyZXF1ZXN0Lm5zVVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSkKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lOm1fd2ViRnJhbWUu
Z2V0KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNpc2lvbkxpc3RlbmVyOnNl
dFVwUG9saWN5TGlzdGVuZXIoZnVuY3Rpb24pLmdldCgpXTsKIH0KQEAgLTg3MCw3ICs4NzAsNyBA
QCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp1cGRhdGVHbG9iYWxICiAgICAgICAgIGlmIChp
bXBsZW1lbnRhdGlvbnMtPm5hdmlnYXRlZEZ1bmMpIHsKICAgICAgICAgICAgIFdlYk5hdmlnYXRp
b25EYXRhICpkYXRhID0gW1tXZWJOYXZpZ2F0aW9uRGF0YSBhbGxvY10gaW5pdFdpdGhVUkxTdHJp
bmc6bG9hZGVyLT51cmxGb3JIaXN0b3J5KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6bmls
T3JOU1N0cmluZyhsb2FkZXItPnRpdGxlKCkuc3RyaW5nKCkpCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxS
ZXF1ZXN0OmxvYWRlci0+b3JpZ2luYWxSZXF1ZXN0Q29weSgpLm5zVVJMUmVxdWVzdCgpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb3JpZ2luYWxSZXF1ZXN0OmxvYWRlci0+b3JpZ2luYWxSZXF1ZXN0Q29weSgpLm5zVVJM
UmVxdWVzdChVcGRhdGVIVFRQQm9keSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2U6bG9hZGVy
LT5yZXNwb25zZSgpLm5zVVJMUmVzcG9uc2UoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNTdWJzdGl0dXRlRGF0YTps
b2FkZXItPnN1YnN0aXR1dGVEYXRhKCkuaXNWYWxpZCgpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudFJlZGlyZWN0U291
cmNlOmxvYWRlci0+Y2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5KCldOwpAQCAtMTAyNiw3
ICsxMDI2LDcgQEAgYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y2FuSGFuZGxlUmVxdQogICAg
IEZyYW1lKiBmcmFtZSA9IGNvcmUobV93ZWJGcmFtZS5nZXQoKSk7CiAgICAgUGFnZSogcGFnZSA9
IGZyYW1lLT5wYWdlKCk7CiAgICAgQk9PTCBmb3JNYWluRnJhbWUgPSBwYWdlICYmIHBhZ2UtPm1h
aW5GcmFtZSgpID09IGZyYW1lOwotICAgIHJldHVybiBbV2ViVmlldyBfY2FuSGFuZGxlUmVxdWVz
dDpyZXF1ZXN0Lm5zVVJMUmVxdWVzdCgpIGZvck1haW5GcmFtZTpmb3JNYWluRnJhbWVdOworICAg
IHJldHVybiBbV2ViVmlldyBfY2FuSGFuZGxlUmVxdWVzdDpyZXF1ZXN0Lm5zVVJMUmVxdWVzdChV
cGRhdGVIVFRQQm9keSkgZm9yTWFpbkZyYW1lOmZvck1haW5GcmFtZV07CiB9CiAKIGJvb2wgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmNhblNob3dNSU1FVHlwZShjb25zdCBTdHJpbmcmIE1JTUVUeXBl
KSBjb25zdApJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5t
bQkocmV2aXNpb24gMTQ0MDY3KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEYXRh
U291cmNlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MjMsNyArNDIzLDcgQEAgLSAoV2ViRnJhbWUg
Kil3ZWJGcmFtZQogCiAtIChOU1VSTFJlcXVlc3QgKilpbml0aWFsUmVxdWVzdAogewotICAgIHJl
dHVybiB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPm9yaWdpbmFsUmVxdWVzdCgpLm5zVVJM
UmVxdWVzdCgpOworICAgIHJldHVybiB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPm9yaWdp
bmFsUmVxdWVzdCgpLm5zVVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSk7CiB9CiAKIC0gKE5TTXV0
YWJsZVVSTFJlcXVlc3QgKilyZXF1ZXN0CkBAIC00MzMsNyArNDMzLDcgQEAgLSAoTlNNdXRhYmxl
VVJMUmVxdWVzdCAqKXJlcXVlc3QKICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIC8vIEZJWE1F
OiB0aGlzIGNhc3QgaXMgZHViaW91cwotICAgIHJldHVybiAoTlNNdXRhYmxlVVJMUmVxdWVzdCAq
KXRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+cmVxdWVzdCgpLm5zVVJMUmVxdWVzdCgpOwor
ICAgIHJldHVybiAoTlNNdXRhYmxlVVJMUmVxdWVzdCAqKXRvUHJpdmF0ZShfcHJpdmF0ZSktPmxv
YWRlci0+cmVxdWVzdCgpLm5zVVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSk7CiB9CiAKIC0gKE5T
VVJMUmVzcG9uc2UgKilyZXNwb25zZQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJGcmFtZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZy
YW1lLm1tCShyZXZpc2lvbiAxNDQwNjcpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YkZyYW1lLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzc2LDcgKzEzNzYsNyBAQCAtICh2b2lkKV9s
b2FkRGF0YTooTlNEYXRhICopZGF0YSBNSU1FVHlwCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVl
c3QoW2Jhc2VVUkwgYWJzb2x1dGVVUkxdKTsKIAogICAgIC8vIGhhY2sgYmVjYXVzZSBNYWlsIGNo
ZWNrcyBmb3IgdGhpcyBwcm9wZXJ0eSB0byBkZXRlY3QgZGF0YSAvIGFyY2hpdmUgbG9hZHMKLSAg
ICBbTlNVUkxQcm90b2NvbCBzZXRQcm9wZXJ0eTpAIiIgZm9yS2V5OkAiV2ViRGF0YVJlcXVlc3Qi
IGluUmVxdWVzdDooTlNNdXRhYmxlVVJMUmVxdWVzdCAqKXJlcXVlc3QubnNVUkxSZXF1ZXN0KCld
OworICAgIFtOU1VSTFByb3RvY29sIHNldFByb3BlcnR5OkAiIiBmb3JLZXk6QCJXZWJEYXRhUmVx
dWVzdCIgaW5SZXF1ZXN0OihOU011dGFibGVVUkxSZXF1ZXN0ICopcmVxdWVzdC5uc1VSTFJlcXVl
c3QoVXBkYXRlSFRUUEJvZHkpXTsKIAogICAgIFN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVEYXRh
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6d3JhcE5TRGF0YShkYXRhKSwgTUlNRVR5cGUsIGVuY29k
aW5nTmFtZSwgW3VucmVhY2hhYmxlVVJMIGFic29sdXRlVVJMXSwgcmVzcG9uc2VVUkwpOwogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDQxMTcpCisrKyBTb3VyY2UvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMiBAQAorMjAxMy0wMi0yNiAg
QWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KKworICAgICAgICBEb24ndCBhZGQg
YSBib2R5IHRvIHBsYXRmb3JtIHJlcXVlc3QgdW50aWwgbmVjZXNzYXJ5CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA5MDAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJLaXQxIGJlaGF2aW9yIGlzIHVu
Y2hhbmdlZCwgYm9keSBpcyBhZGRlZCBvbiBldmVyeSBjb252ZXJzaW9uLgorCisgICAgICAgICog
V2ViRG93bmxvYWRDRk5ldC5jcHA6CisgICAgICAgIChXZWJEb3dubG9hZDo6aW5pdCk6CisgICAg
ICAgIChXZWJEb3dubG9hZDo6aW5pdFdpdGhSZXF1ZXN0KToKKyAgICAgICAgKFdlYkRvd25sb2Fk
Ojp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAqIFdlYk11dGFibGVVUkxSZXF1ZXN0LmNwcDoK
KyAgICAgICAgKFdlYk11dGFibGVVUkxSZXF1ZXN0OjpjZlJlcXVlc3QpOgorICAgICAgICAoV2Vi
TXV0YWJsZVVSTFJlcXVlc3Q6Om11dGFibGVDb3B5KToKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoK
KyAgICAgICAgKFdlYlZpZXc6OmNhbkhhbmRsZVJlcXVlc3QpOgorCiAyMDEzLTAyLTI2ICBSb2dl
ciBGb25nICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBBcHBs
ZVdpbiBidWlsZCBmaXguCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJEb3dubG9hZENGTmV0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJEb3dubG9hZENGTmV0LmNw
cAkocmV2aXNpb24gMTQ0MDY3KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViRG93bmxvYWRDRk5l
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBXZWJEb3dubG9hZDo6
aW5pdChSZXNvdXJjZUhhbmRsZSogaAogICAgICAgICBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdn
ZXN0ZWRPYmplY3ROYW1lQ2FsbGJhY2ssIGRpZENyZWF0ZURlc3RpbmF0aW9uQ2FsbGJhY2ssIGRp
ZEZpbmlzaENhbGxiYWNrLCBkaWRGYWlsQ2FsbGJhY2t9OwogCiAgICAgbV9yZXF1ZXN0LmFkb3B0
UmVmKFdlYk11dGFibGVVUkxSZXF1ZXN0OjpjcmVhdGVJbnN0YW5jZShyZXF1ZXN0KSk7Ci0gICAg
bV9kb3dubG9hZC5hZG9wdENGKENGVVJMRG93bmxvYWRDcmVhdGVBbmRTdGFydFdpdGhMb2FkaW5n
Q29ubmVjdGlvbigwLCBjb25uZWN0aW9uLCByZXF1ZXN0LmNmVVJMUmVxdWVzdCgpLCByZXNwb25z
ZS5jZlVSTFJlc3BvbnNlKCksICZjbGllbnQpKTsKKyAgICBtX2Rvd25sb2FkLmFkb3B0Q0YoQ0ZV
UkxEb3dubG9hZENyZWF0ZUFuZFN0YXJ0V2l0aExvYWRpbmdDb25uZWN0aW9uKDAsIGNvbm5lY3Rp
b24sIHJlcXVlc3QuY2ZVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KSwgcmVzcG9uc2UuY2ZVUkxS
ZXNwb25zZSgpLCAmY2xpZW50KSk7CiAKICAgICAvLyBJdCBpcyBwb3NzaWJsZSBmb3IgQ0ZVUkxE
b3dubG9hZENyZWF0ZUFuZFN0YXJ0V2l0aExvYWRpbmdDb25uZWN0aW9uKCkgdG8gZmFpbCBpZiB0
aGUgcGFzc2VkIGluIENGVVJMQ29ubmVjdGlvbiBpcyBub3QgaW4gYSAiZG93bmxvYWRhYmxlIHN0
YXRlIgogICAgIC8vIEhvd2V2ZXIsIHdlIHNob3VsZCBuZXZlciBoaXQgdGhhdCBjYXNlCkBAIC0x
MDcsNyArMTA3LDcgQEAgdm9pZCBXZWJEb3dubG9hZDo6aW5pdChjb25zdCBLVVJMJiB1cmwsIAog
ICAgIExPR19FUlJPUigiRGVsZWdhdGUgaXMgJXAiLCBtX2RlbGVnYXRlLmdldCgpKTsKIAogICAg
IFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHVybCk7Ci0gICAgQ0ZVUkxSZXF1ZXN0UmVmIGNmUmVx
dWVzdCA9IHJlcXVlc3QuY2ZVUkxSZXF1ZXN0KCk7CisgICAgQ0ZVUkxSZXF1ZXN0UmVmIGNmUmVx
dWVzdCA9IHJlcXVlc3QuY2ZVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KTsKIAogICAgIENGVVJM
RG93bmxvYWRDbGllbnQgY2xpZW50ID0gezAsIHRoaXMsIDAsIDAsIDAsIGRpZFN0YXJ0Q2FsbGJh
Y2ssIHdpbGxTZW5kUmVxdWVzdENhbGxiYWNrLCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VDYWxsYmFjaywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkUmVj
ZWl2ZVJlc3BvbnNlQ2FsbGJhY2ssIHdpbGxSZXN1bWVXaXRoUmVzcG9uc2VDYWxsYmFjaywgZGlk
UmVjZWl2ZURhdGFDYWxsYmFjaywgc2hvdWxkRGVjb2RlRGF0YU9mTUlNRVR5cGVDYWxsYmFjaywg
CkBAIC0xMzgsNyArMTM4LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEb3dubG9h
ZDo6aQogICAgIG1fZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKICAgICBMT0coRG93bmxvYWQsICJEZWxl
Z2F0ZSBpcyAlcCIsIG1fZGVsZWdhdGUuZ2V0KCkpOwogCi0gICAgUmV0YWluUHRyPENGVVJMUmVx
dWVzdFJlZj4gY2ZSZXF1ZXN0ID0gd2ViUmVxdWVzdC0+cmVzb3VyY2VSZXF1ZXN0KCkuY2ZVUkxS
ZXF1ZXN0KCk7CisgICAgUmV0YWluUHRyPENGVVJMUmVxdWVzdFJlZj4gY2ZSZXF1ZXN0ID0gd2Vi
UmVxdWVzdC0+cmVzb3VyY2VSZXF1ZXN0KCkuY2ZVUkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KTsK
IAogICAgIENGVVJMRG93bmxvYWRDbGllbnQgY2xpZW50ID0gezAsIHRoaXMsIDAsIDAsIDAsIGRp
ZFN0YXJ0Q2FsbGJhY2ssIHdpbGxTZW5kUmVxdWVzdENhbGxiYWNrLCBkaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VDYWxsYmFjaywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGlkUmVjZWl2ZVJlc3BvbnNlQ2FsbGJhY2ssIHdpbGxSZXN1bWVXaXRoUmVzcG9uc2VD
YWxsYmFjaywgZGlkUmVjZWl2ZURhdGFDYWxsYmFjaywgc2hvdWxkRGVjb2RlRGF0YU9mTUlNRVR5
cGVDYWxsYmFjaywgCkBAIC0zNzMsNyArMzczLDcgQEAgQ0ZVUkxSZXF1ZXN0UmVmIFdlYkRvd25s
b2FkOjp3aWxsU2VuZFJlcQogCiAgICAgQ09NUHRyPFdlYk11dGFibGVVUkxSZXF1ZXN0PiBmaW5h
bFdlYlJlcXVlc3QoQWRvcHRDT00sIFdlYk11dGFibGVVUkxSZXF1ZXN0OjpjcmVhdGVJbnN0YW5j
ZShmaW5hbFJlcXVlc3QuZ2V0KCkpKTsKICAgICBtX3JlcXVlc3QgPSBmaW5hbFdlYlJlcXVlc3Qu
Z2V0KCk7Ci0gICAgQ0ZVUkxSZXF1ZXN0UmVmIHJlc3VsdCA9IGZpbmFsV2ViUmVxdWVzdC0+cmVz
b3VyY2VSZXF1ZXN0KCkuY2ZVUkxSZXF1ZXN0KCk7CisgICAgQ0ZVUkxSZXF1ZXN0UmVmIHJlc3Vs
dCA9IGZpbmFsV2ViUmVxdWVzdC0+cmVzb3VyY2VSZXF1ZXN0KCkuY2ZVUkxSZXF1ZXN0KFVwZGF0
ZUhUVFBCb2R5KTsKICAgICBDRlJldGFpbihyZXN1bHQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9
CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCShyZXZp
c2lvbiAxNDQwNjcpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM2Niw3ICszNjYsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFdlYk11dGFibGVVUkxSCiAKIENGVVJMUmVxdWVzdFJlZiBTVERNRVRIT0RDQUxMVFlQ
RSBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6Y2ZSZXF1ZXN0KCkKIHsKLSAgICByZXR1cm4gbV9yZXF1
ZXN0LmNmVVJMUmVxdWVzdCgpOworICAgIHJldHVybiBtX3JlcXVlc3QuY2ZVUkxSZXF1ZXN0KFVw
ZGF0ZUhUVFBCb2R5KTsKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJNdXRhYmxl
VVJMUmVxdWVzdDo6bXV0YWJsZUNvcHkoCkBAIC0zNzYsNyArMzc2LDcgQEAgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBXZWJNdXRhYmxlVVJMUgogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwog
CiAjaWYgVVNFKENGTkVUV09SSykKLSAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlVVJMUmVxdWVzdFJl
Zj4gbXV0YWJsZVJlcXVlc3QoQWRvcHRDRiwgQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0YWJsZUNvcHko
a0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9yZXF1ZXN0LmNmVVJMUmVxdWVzdCgpKSk7CisgICAgUmV0
YWluUHRyPENGTXV0YWJsZVVSTFJlcXVlc3RSZWY+IG11dGFibGVSZXF1ZXN0KEFkb3B0Q0YsIENG
VVJMUmVxdWVzdENyZWF0ZU11dGFibGVDb3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fcmVxdWVz
dC5jZlVSTFJlcXVlc3QoVXBkYXRlSFRUUEJvZHkpKSk7CiAgICAgKnJlc3VsdCA9IGNyZWF0ZUlu
c3RhbmNlKFJlc291cmNlUmVxdWVzdChtdXRhYmxlUmVxdWVzdC5nZXQoKSkpOwogICAgIHJldHVy
biBTX09LOwogI2Vsc2UKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiAxNDQwNjcp
CisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI4
Niw3ICsxMjg2LDcgQEAgYm9vbCBXZWJWaWV3OjpjYW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFdlYgog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAogI2lmIFVTRShDRk5FVFdPUkspCi0gICAgaWYgKENGVVJM
UHJvdG9jb2xDYW5IYW5kbGVSZXF1ZXN0KHJlcXVlc3QuY2ZVUkxSZXF1ZXN0KCkpKQorICAgIGlm
IChDRlVSTFByb3RvY29sQ2FuSGFuZGxlUmVxdWVzdChyZXF1ZXN0LmNmVVJMUmVxdWVzdChVcGRh
dGVIVFRQQm9keSkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIEZJWE1FOiBNYWMg
V2ViS2l0IGNhbGxzIF9yZXByZXNlbnRhdGlvbkV4aXN0c0ZvclVSTFNjaGVtZSBoZXJlCg==
</data>
<flag name="review"
          id="211083"
          type_id="1"
          status="+"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>