<?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>136931</bug_id>
          
          <creation_ts>2014-09-18 15:15:13 -0700</creation_ts>
          <short_desc>Allow DOM methods to return references instead of pointers</short_desc>
          <delta_ts>2014-09-19 12:27:13 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>andersca</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1035996</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-18 15:15:13 -0700</bug_when>
    <thetext>It is common practice in WebKit to have methods return a reference instead of a pointer if the pointer can never be null.
However, this currently does not work for DOM methods (functions called by JS bindings), which is unfortunate.

We should support this in order to use more references in the code base and for consistency.
It is especially useful when DOM methods to be used in WebCore, in addition to the generated bindings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036007</commentid>
    <comment_count>1</comment_count>
      <attachid>238329</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-18 15:50:29 -0700</bug_when>
    <thetext>Created attachment 238329
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036023</commentid>
    <comment_count>2</comment_count>
      <attachid>238336</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-18 17:03:54 -0700</bug_when>
    <thetext>Created attachment 238336
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036145</commentid>
    <comment_count>3</comment_count>
      <attachid>238336</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-09-19 10:05:51 -0700</bug_when>
    <thetext>Comment on attachment 238336
Patch

Cool.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036170</commentid>
    <comment_count>4</comment_count>
      <attachid>238336</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-19 11:33:23 -0700</bug_when>
    <thetext>Comment on attachment 238336
Patch

Clearing flags on attachment: 238336

Committed r173765: &lt;http://trac.webkit.org/changeset/173765&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036171</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-19 11:33:27 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036183</commentid>
    <comment_count>6</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-09-19 12:27:13 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 238336 [details])
&gt; Cool.

Very!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238329</attachid>
            <date>2014-09-18 15:50:29 -0700</date>
            <delta_ts>2014-09-18 17:03:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136931-20140918155027.patch</filename>
            <type>text/plain</type>
            <size>25817</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczNzMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGZkMDNlOWIxZDY5NjRhZTMwMDViYzQ1
NjFkN2YzZWI1OTQwOGQ0MWMuLjA5ODllN2NlM2MzYmM1N2E0ZDNkZGIwMThhOWMzODBhMGQyNmZi
NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTQtMDktMTggIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBET00gbWV0aG9kcyB0byByZXR1cm4gcmVmZXJl
bmNlcyBpbnN0ZWFkIG9mIHBvaW50ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMzY5MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgaGF2aW5nIFdURjo6Z2V0UHRyKCkgdHJh
bnNmb3JtIHJlZmVyZW5jZSBhcmd1bWVudHMKKyAgICAgICAgaW50byByYXcgcG9pbnRlcnMgc28g
dGhhdCBET00gbWV0aG9kcyBjYW4gbm93IHJldHVybiByZWZlcmVuY2VzIHdoZW4KKyAgICAgICAg
YXBwcm9wcmlhdGUgYW5kIHNvIHRoYXQgdGhlIGdlbmVyYXRlZCBiaW5kaW5ncyBjb2RlIGNhbiBo
YW5kbGUgdGhpcworICAgICAgICB2aWEgV1RGOjpnZXRQdHIoKS4KKworICAgICAgICBUaGlzIHBh
dGNoIGhhZCB0byBhbHRlciB0aGUgd2F5IGdldFB0cigpIHdhcyBvdmVybG9hZGVkIGZvciBzbWFy
dAorICAgICAgICBwb2ludGVyIHR5cGVzIHNvIHRoYXQgd2UgZG9uJ3QgY2FsbCAmcCBvbiBzbWFy
dCBwb2ludGVycyBidXQgcC5nZXQoKS4KKyAgICAgICAgVGhpcyB3YXMgbmVlZGVkIGJlY2F1c2Ug
dGhlIG5ldyBXVEY6OmdldFB0cihUJikgd2FzIGJlaW5nIGNhbGxlZCBmb3IKKyAgICAgICAgUmVm
UHRyPFQ+IGFyZ3VtZW50cyBpbnN0ZWFkIG9mIHRoZSBnZXRQdHIoY29uc3QgUmVmUHRyPFQ+Jikg
b3ZlcmxvYWQuCisgICAgICAgIFRoaXMgd2FzIGFkZHJlc3NlZCB1c2luZyB0cmFpdHMgYW5kIHRl
bXBsYXRlIHNwZWNpYWxpemF0aW9uIHRvCisgICAgICAgIGRpc3Rpbmd1aXNoIFdURiBzbWFydCBw
b2ludGVycyBmcm9tIG90aGVyIHR5cGVzLgorCisgICAgICAgICogd3RmL0dldFB0ci5oOgorICAg
ICAgICAoV1RGOjpnZXRQdHIpOgorICAgICAgICAqIHd0Zi9Pd25QdHIuaDoKKyAgICAgICAgKFdU
Rjo6Z2V0UHRyKTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYvUGFzc093blB0ci5oOgorICAgICAg
ICAoV1RGOjpnZXRQdHIpOiBEZWxldGVkLgorICAgICAgICAqIHd0Zi9QYXNzUmVmUHRyLmg6Cisg
ICAgICAgIChXVEY6OmdldFB0cik6IERlbGV0ZWQuCisgICAgICAgICogd3RmL1JlZlB0ci5oOgor
ICAgICAgICAoV1RGOjpnZXRQdHIpOiBEZWxldGVkLgorICAgICAgICAqIHd0Zi9nb2JqZWN0L0dS
ZWZQdHIuaDoKKyAgICAgICAgKFdURjo6Z2V0UHRyKTogRGVsZXRlZC4KKwogMjAxNC0wOS0xOCAg
Sm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IFNob3VsZCBiZSBhYmxlIHRvIGF0dGFjaCBhIGRlYnVnZ2VyIHRvIGEgSlNDb250ZXh0
IGJlZm9yZSBhbnl0aGluZyBpcyBleGVjdXRlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGE3YjRmNjllNzlmMjVi
MTkzZjI1ZmNmNzUwYThhMTU2ZWMyNjA1ZGUuLjk3NTU0NTIzMzA1MTc3OWUwM2I4ZmE4ZjliNTZi
MTE0MTRkOGJkZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MSBAQAorMjAxNC0wOS0xOCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IERPTSBtZXRob2Rz
IHRvIHJldHVybiByZWZlcmVuY2VzIGluc3RlYWQgb2YgcG9pbnRlcnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjkzMQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEl0IGlzIGNvbW1vbiBwcmFjdGljZSBp
biBXZWJLaXQgdG8gaGF2ZSBtZXRob2RzIHJldHVybiBhIHJlZmVyZW5jZQorICAgICAgICBpbnN0
ZWFkIG9mIGEgcG9pbnRlciBpZiB0aGUgcG9pbnRlciBjYW4gbmV2ZXIgYmUgbnVsbC4gSG93ZXZl
ciwgdGhpcworICAgICAgICB1bmZvcnR1bmF0ZWx5IGRpZCBub3Qgd29yayBmb3IgRE9NIG1ldGhv
ZHMgKGZ1bmN0aW9ucyBjYWxsZWQgYnkgSlMKKyAgICAgICAgYmluZGluZ3MpLiBUaGlzIHByZXZl
bnRlZCBmdXJ0aGVyIHJlZmFjdG9yaW5nLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYnJpbmdzIHN1
cHBvcnQgZm9yIGhhdmluZyBET00gbWV0aG9kcyB0byByZXR1cm4gcmVmZXJlbmNlcworICAgICAg
ICBpbnN0ZWFkIG9mIHBvaW50ZXJzIHdoZW4gdGhlIHBvaW50ZXIgY2Fubm90IGJlIG51bGwuIFRo
ZSBnZW5lcmF0ZWQKKyAgICAgICAgYmluZGluZ3Mgd2VyZSBjYWxsaW5nIFdURjo6Z2V0UHRyKCkg
b24gdGhlIHBvaW50ZXIgdHlwZSByZXR1cm5lZCBieQorICAgICAgICB0aGUgaW1wbGVtZW50YXRp
b24gYWxyZWFkeSAoaW4gY2FzZSBpdCB3YXMgYSBzbWFydCBwb2ludGVyIHR5cGUpLgorICAgICAg
ICBUaGlzIHBhdGNoIGxldmVyYWdlcyB0aGlzIGJ5IGhhdmluZyBXVEY6OmdldFB0cigpIGNvbnZl
cnQgcmVmZXJlbmNlCisgICAgICAgIGFyZ3VtZW50cyBpbnRvIHJhdyBwb2ludGVycy4KKworICAg
ICAgICBUaGlzIHBhdGNoIGFsc28gdXBkYXRlcyBhIGZldyBET00gbWV0aG9kcyBvbiBEb2N1bWVu
dCBhbmQgRWxlbWVudAorICAgICAgICBjbGFzc2VzIHRvIHJldHVybiBhIHJlZmVyZW5jZSBpbnN0
ZWFkIG9mIGEgcG9pbnRlciwgdG8gdGVzdCB0aGUgY2hhbmdlLgorICAgICAgICBUaGVyZSBhcmUg
bGlrZWx5IG1vcmUgRE9NIG1ldGhvZHMgdGhhdCBjYW4gYmUgdXBkYXRlZCB0aG91Z2guCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLCBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdDo6Y2xhc3NMaXN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RP
TUJpbmRpbmcuaDoKKyAgICAgICAgKFdURjo6Z2V0UHRyKTogRGVsZXRlZC4KKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmltcGxlbWVudGF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJraXRHZXROYW1lZEZsb3dzKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpuYW1lZEZsb3dzKToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50OjpzZXRYTUxWZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
OjpzZXRYTUxTdGFuZGFsb25lKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZWN1cml0
eVBvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c3R5bGVTaGVldHMpOgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnRpbWlu
Zyk6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6Y2xhc3NMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmRhdGFzZXQpOgorICAg
ICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9s
RWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUGFuZWxFbGVtZW50
OjpzZXRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xQYW5lbEVsZW1l
bnQ6OnJlc2V0UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sQ2xvc2Vk
Q2FwdGlvbnNUcmFja0xpc3RFbGVtZW50Ojp1cGRhdGVEaXNwbGF5KToKKyAgICAgICAgKiBodG1s
L3RyYWNrL1ZUVFJlZ2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWVFRSZWdpb246OmRpc3Bs
YXlMYXN0VGV4dFRyYWNrQ3VlQm94KToKKyAgICAgICAgKFdlYkNvcmU6OlZUVFJlZ2lvbjo6d2ls
bFJlbW92ZVRleHRUcmFja0N1ZUJveCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNT
U0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpnZXRBbGxT
dHlsZVNoZWV0cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TmFt
ZWRGbG93Q29sbGVjdGlvbik6CisgICAgICAgICogcGFnZS9QZXJmb3JtYW5jZVRpbWluZy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZVRpbWluZzo6ZG9jdW1lbnRUaW1pbmcpOgor
ICAgICAgICAqIHJlbmRlcmluZy9GbG93VGhyZWFkQ29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGbG93VGhyZWFkQ29udHJvbGxlcjo6ZW5zdXJlUmVuZGVyRmxvd1RocmVhZFdpdGhO
YW1lKToKKwogMjAxNC0wOS0xOCAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29t
PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFNob3VsZCBiZSBhYmxlIHRvIGF0dGFjaCBhIGRl
YnVnZ2VyIHRvIGEgSlNDb250ZXh0IGJlZm9yZSBhbnl0aGluZyBpcyBleGVjdXRlZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvR2V0UHRyLmggYi9Tb3VyY2UvV1RGL3d0Zi9HZXRQdHIuaApp
bmRleCAxYTYzZmZiNjEyNjRiYWZjMWQ5ODlkMTBiYjdhNmM2YzUyM2U4NWMxLi5mY2U1NmI2YTlk
NmI2OWU1NjJiNDMzODdmNmVjMGI4N2FjZjg2ZDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9HZXRQdHIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9HZXRQdHIuaApAQCAtMjMsMTAgKzIzLDM4
IEBACiAKIG5hbWVzcGFjZSBXVEYgewogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGlu
ZSBUKiBnZXRQdHIoVCogcCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBwOwotICAgIH0KK3RlbXBs
YXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgVCogZ2V0UHRyKFQqIHApIHsgcmV0dXJuIHA7IH0KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBJc1NtYXJ0UHRyIHsKKyAgICBzdGF0aWMgY29u
c3QgYm9vbCB2YWx1ZSA9IGZhbHNlOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIGJvb2wg
SXNTbWFydFB0cj4KK3N0cnVjdCBHZXRQdHJIZWxwZXI7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
Pgorc3RydWN0IEdldFB0ckhlbHBlcjxULCBmYWxzZT4geworICAgIHR5cGVkZWYgVCogUHRyVHlw
ZTsKKyAgICBzdGF0aWMgVCogZ2V0UHRyKFQmIHApIHsgcmV0dXJuICZwOyB9Cit9OworCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBHZXRQdHJIZWxwZXI8VCwgdHJ1ZT4geworICAgIHR5
cGVkZWYgdHlwZW5hbWUgVDo6UHRyVHlwZSBQdHJUeXBlOworICAgIHN0YXRpYyBQdHJUeXBlIGdl
dFB0cihjb25zdCBUJiBwKSB7IHJldHVybiBwLmdldCgpOyB9Cit9OworCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK2lubGluZSB0eXBlbmFtZSBHZXRQdHJIZWxwZXI8VCwgSXNTbWFydFB0cjxUPjo6
dmFsdWU+OjpQdHJUeXBlIGdldFB0cihUJiBwKQoreworICAgIHJldHVybiBHZXRQdHJIZWxwZXI8
VCwgSXNTbWFydFB0cjxUPjo6dmFsdWU+OjpnZXRQdHIocCk7Cit9CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBUPgoraW5saW5lIHR5cGVuYW1lIEdldFB0ckhlbHBlcjxULCBJc1NtYXJ0UHRyPFQ+Ojp2
YWx1ZT46OlB0clR5cGUgZ2V0UHRyKGNvbnN0IFQmIHApCit7CisgICAgcmV0dXJuIEdldFB0ckhl
bHBlcjxULCBJc1NtYXJ0UHRyPFQ+Ojp2YWx1ZT46OmdldFB0cihwKTsKK30KIAogfSAvLyBuYW1l
c3BhY2UgV1RGCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL093blB0ci5oIGIvU291cmNl
L1dURi93dGYvT3duUHRyLmgKaW5kZXggZmEzNWI3MWUwZjliMzI3ZDM1ZWVlMTM1Yzc3OWI5Y2Nh
YTIyNzk5MS4uZDUyMGU0MmNmMDEwNmRiODUyYzgwYTdjYzU2YTVlZWU0MjhkMjc5NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvT3duUHRyLmgKKysrIGIvU291cmNlL1dURi93dGYvT3duUHRy
LmgKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5j
bHVkZSA8d3RmL0F0b21pY3MuaD4KKyNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ckNvbW1vbi5oPgogI2luY2x1
ZGUgPGFsZ29yaXRobT4KQEAgLTE5MywxMCArMTk0LDkgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAg
ICAgIHJldHVybiBhICE9IGIuZ2V0KCk7IAogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IGlubGluZSB0eXBlbmFtZSBPd25QdHI8VD46OlB0clR5cGUgZ2V0UHRyKGNvbnN0IE93blB0
cjxUPiYgcCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBwLmdldCgpOwotICAgIH0KKyAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IElzU21hcnRQdHI8T3duUHRyPFQ+PiB7CisgICAgICAg
IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsKKyAgICB9OwogCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4gdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gaW5saW5lIHZvaWQgT3duUHRy
PFQ+OjpjcmVhdGVUcmFuc2FjdGlvbmFsbHkoQXJncy4uLiBhcmdzKQogICAgIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL1Bhc3NPd25QdHIuaCBiL1NvdXJjZS9XVEYvd3RmL1Bhc3NPd25Q
dHIuaAppbmRleCAyYzFmOWQ0NTIyMjllZjJkZjdiYjE3YjlkYzE4NjQxMDcwMGRkOWRiLi5kYTgx
NjU5OGY5NGUzNGY0OTMzZjFhNWUyNGFkNjQyZmI3YWMwMjRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9QYXNzT3duUHRyLmgKKysrIGIvU291cmNlL1dURi93dGYvUGFzc093blB0ci5oCkBA
IC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlIDxjc3RkZGVmPgogI2luY2x1ZGUgPHd0Zi9Bc3Nl
cnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHJD
b21tb24uaD4KICNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KIApAQCAtMTU2LDEwICsxNTcsOSBAQCBu
YW1lc3BhY2UgV1RGIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKHN0YXRpY19jYXN0PFQqPihw
LmxlYWtQdHIoKSkpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBU
KiBnZXRQdHIoY29uc3QgUGFzc093blB0cjxUPiYgcCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBw
LmdldCgpOwotICAgIH0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IElzU21hcnRQ
dHI8UGFzc093blB0cjxUPj4geworICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRy
dWU7CisgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL1Bhc3NSZWZQdHIuaCBiL1NvdXJjZS9XVEYvd3RmL1Bhc3NSZWZQdHIuaAppbmRleCA2
MjkyNDQ2NGM3ZWNlYTc1OWYxYjk5MzUzNmRkNDA5NjBkMDk0NzM4Li42ZjgwNGEwYzk0NjQxNmZj
NGYzM2Y1YTAzMmVlMWFlYTk0NzBkOGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QYXNz
UmVmUHRyLmgKKysrIGIvU291cmNlL1dURi93dGYvUGFzc1JlZlB0ci5oCkBAIC0yMSw3ICsyMSw4
IEBACiAjaWZuZGVmIFdURl9QYXNzUmVmUHRyX2gKICNkZWZpbmUgV1RGX1Bhc3NSZWZQdHJfaAog
Ci0jaW5jbHVkZSAiUGFzc1JlZi5oIgorI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KKyNpbmNsdWRl
IDx3dGYvUGFzc1JlZi5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIApAQCAtNDEsNiArNDIsOSBAQCBu
YW1lc3BhY2UgV1RGIHsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFBhc3NSZWZQ
dHIgewogICAgIHB1YmxpYzoKKyAgICAgICAgdHlwZWRlZiBUIFZhbHVlVHlwZTsKKyAgICAgICAg
dHlwZWRlZiBWYWx1ZVR5cGUqIFB0clR5cGU7CisKICAgICAgICAgUGFzc1JlZlB0cigpIDogbV9w
dHIobnVsbHB0cikgeyB9CiAgICAgICAgIFBhc3NSZWZQdHIoVCogcHRyKSA6IG1fcHRyKHB0cikg
eyByZWZJZk5vdE51bGwocHRyKTsgfQogICAgICAgICAvLyBJdCBzb21ld2hhdCBicmVha3MgdGhl
IHR5cGUgc3lzdGVtIHRvIGFsbG93IHRyYW5zZmVyIG9mIG93bmVyc2hpcCBvdXQgb2YKQEAgLTE1
MywxMCArMTU3LDkgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihz
dGF0aWNfY2FzdDxUKj4ocC5sZWFrUmVmKCkpKTsgCiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gaW5saW5lIFQqIGdldFB0cihjb25zdCBQYXNzUmVmUHRyPFQ+JiBwKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIHAuZ2V0KCk7Ci0gICAgfQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PiBzdHJ1Y3QgSXNTbWFydFB0cjxQYXNzUmVmUHRyPFQ+PiB7CisgICAgICAgIHN0YXRpYyBjb25z
dCBib29sIHZhbHVlID0gdHJ1ZTsKKyAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvUmVmUHRyLmggYi9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIu
aAppbmRleCAyMmRmN2E3ZmRhMGFhZjIzY2JkZjA4MTg0YmQzOTMxODM0NWQxMTYzLi4zMjEzZmIx
YmQ0OGY5NDM1M2M3MzBjMmQxYTY4MTUzOGJkNjBmMzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9SZWZQdHIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaApAQCAtMjMsMTAgKzIz
LDExIEBACiAjaWZuZGVmIFdURl9SZWZQdHJfaAogI2RlZmluZSBXVEZfUmVmUHRyX2gKIAotI2lu
Y2x1ZGUgIkZhc3RNYWxsb2MuaCIKLSNpbmNsdWRlICJQYXNzUmVmUHRyLmgiCiAjaW5jbHVkZSA8
YWxnb3JpdGhtPgogI2luY2x1ZGUgPHV0aWxpdHk+CisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2Mu
aD4KKyNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
IAogbmFtZXNwYWNlIFdURiB7CiAKQEAgLTM1LDYgKzM2LDkgQEAgbmFtZXNwYWNlIFdURiB7CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgUmVmUHRyIHsKICAgICAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIFQgVmFsdWVUeXBl
OworICAgICAgICB0eXBlZGVmIFZhbHVlVHlwZSogUHRyVHlwZTsKKwogICAgICAgICBBTFdBWVNf
SU5MSU5FIFJlZlB0cigpIDogbV9wdHIobnVsbHB0cikgeyB9CiAgICAgICAgIEFMV0FZU19JTkxJ
TkUgUmVmUHRyKFQqIHB0cikgOiBtX3B0cihwdHIpIHsgcmVmSWZOb3ROdWxsKHB0cik7IH0KICAg
ICAgICAgQUxXQVlTX0lOTElORSBSZWZQdHIoY29uc3QgUmVmUHRyJiBvKSA6IG1fcHRyKG8ubV9w
dHIpIHsgcmVmSWZOb3ROdWxsKG1fcHRyKTsgfQpAQCAtMjA0LDEwICsyMDgsOSBAQCBuYW1lc3Bh
Y2UgV1RGIHsKICAgICAgICAgcmV0dXJuIFJlZlB0cjxUPihzdGF0aWNfY2FzdDxUKj4ocC5nZXQo
KSkpOyAKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgVCogZ2V0UHRy
KGNvbnN0IFJlZlB0cjxUPiYgcCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBwLmdldCgpOwotICAg
IH0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IElzU21hcnRQdHI8UmVmUHRyPFQ+
PiB7CisgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsKKyAgICB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXVEYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ29iamVjdC9H
UmVmUHRyLmggYi9Tb3VyY2UvV1RGL3d0Zi9nb2JqZWN0L0dSZWZQdHIuaAppbmRleCBmMDFlMmJi
NGMwYzliMjYxOTk4NThlYTAxY2MwMTZiOGMzNTQ5NmFhLi4yMTZjMTQ1MTI0ZDMxYjZlOTFiNmI3
YzgxZGM1ZTc3Zjg3NjM5OWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9nb2JqZWN0L0dS
ZWZQdHIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9nb2JqZWN0L0dSZWZQdHIuaApAQCAtMjUsNiAr
MjUsNyBAQAogCiAjaWYgVVNFKEdMSUIpCiAKKyNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPGFsZ29yaXRobT4KIApAQCAtNDEsNiArNDIs
OSBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gR1JlZlB0cjxUPiBhZG9wdEdSZWYoVCopOwogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgR1JlZlB0ciB7CiBwdWJsaWM6CisgICAgdHlwZWRl
ZiBUIFZhbHVlVHlwZTsKKyAgICB0eXBlZGVmIFZhbHVlVHlwZSogUHRyVHlwZTsKKwogICAgIEdS
ZWZQdHIoKSA6IG1fcHRyKDApIHsgfQogCiAgICAgR1JlZlB0cihUKiBwdHIpCkBAIC0yMDQsMTAg
KzIwOCw5IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgR1JlZlB0
cjxUPiBjb25zdF9wb2ludGVyX2Nhc3QoY29uc3QgR1JlCiAgICAgcmV0dXJuIEdSZWZQdHI8VD4o
Y29uc3RfY2FzdDxUKj4ocC5nZXQoKSkpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5s
aW5lIFQqIGdldFB0cihjb25zdCBHUmVmUHRyPFQ+JiBwKQotewotICAgIHJldHVybiBwLmdldCgp
OwotfQordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBJc1NtYXJ0UHRyPEdSZWZQdHI8VD4+
IHsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7Cit9OwogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4gR1JlZlB0cjxUPiBhZG9wdEdSZWYoVCogcCkKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IDM0
OTQ4NmI3N2IwYjM1MzczYjk2OTMzM2M1ZDNhNWZmZjlhN2VmOGUuLmJmYTgyNWU4N2MyNjhhZDZk
NDBlZDcxY2ZiN2M3ODEzOGNhZTA1MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApAQCAtMjA1NywxMiArMjA1NywxMCBA
QCB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmNsYXNzTGlzdChWZWN0b3I8U3RyaW5nPiYgY2xh
c3NMaXN0KSBjb25zdAogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgRWxlbWVudCogZWxlbWVu
dCA9IHRvRWxlbWVudChub2RlKTsKLSAgICBET01Ub2tlbkxpc3QqIGxpc3QgPSBlbGVtZW50LT5j
bGFzc0xpc3QoKTsKLSAgICBpZiAoIWxpc3QpCi0gICAgICAgIHJldHVybjsKLSAgICB1bnNpZ25l
ZCBsZW5ndGggPSBsaXN0LT5sZW5ndGgoKTsKKyAgICBET01Ub2tlbkxpc3QmIGxpc3QgPSBlbGVt
ZW50LT5jbGFzc0xpc3QoKTsKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBsaXN0Lmxlbmd0aCgpOwog
ICAgIGZvciAodW5zaWduZWQgayA9IDA7IGsgPCBsZW5ndGg7IGsrKykKLSAgICAgICAgY2xhc3NM
aXN0LmFwcGVuZChsaXN0LT5pdGVtKGspLnN0cmluZygpKTsKKyAgICAgICAgY2xhc3NMaXN0LmFw
cGVuZChsaXN0Lml0ZW0oaykuc3RyaW5nKCkpOwogfQogCiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCmluZGV4IGI1YzhjMTliNjFmM2Q0YmIzZjQxODEyYzg4
MmRiNjM2NGMwYWZmNDguLmM4ODhjOWM4OTBmZDI3MDQyMDg4ZTVmNTAxMWQ4NGM0MGE4NzlkN2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCkBAIC00NSw2ICs0
NSw3IEBACiAjaW5jbHVkZSA8cnVudGltZS9UeXBlZEFycmF5SW5saW5lcy5oPgogI2luY2x1ZGUg
PHJ1bnRpbWUvVHlwZWRBcnJheXMuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1
ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAKQEAgLTUyLDE3ICs1Myw2IEBAIG5hbWVzcGFjZSBKU0MgewogY2xh
c3MgSGFzaEVudHJ5OwogfQogCi0jaWYgRU5BQkxFKEdBTUVQQUQpCi1uYW1lc3BhY2UgV1RGIHsK
LQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFQqIGdldFB0cihjb25zdCBSZWY8VD4mIHAp
Ci17Ci0gICAgcmV0dXJuIGNvbnN0X2Nhc3Q8VCo+KCZwLmdldCgpKTsKLX0KLQotfQotI2VuZGlm
Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FjaGVkU2NyaXB0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKaW5kZXggZjdiMTk1OTljNjc3OTRjMmM4ZDU1ZDJkZTEzMDVlZTk3MDg3OGM0
NS4uYzIzZTc0NTJlODYwMzc5MDg2NGM5ZDFkZTUyZjhmNTJiZTFkMThmYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCkBAIC04MDUsMTEgKzgwNSwxMSBAQCB2b2lkIERvY3VtZW50OjpyZXNldEFj
dGl2ZUxpbmtDb2xvcigpCiAgICAgbV9hY3RpdmVMaW5rQ29sb3Iuc2V0TmFtZWRDb2xvcigicmVk
Iik7CiB9CiAKLURPTUltcGxlbWVudGF0aW9uKiBEb2N1bWVudDo6aW1wbGVtZW50YXRpb24oKQor
RE9NSW1wbGVtZW50YXRpb24mIERvY3VtZW50OjppbXBsZW1lbnRhdGlvbigpCiB7CiAgICAgaWYg
KCFtX2ltcGxlbWVudGF0aW9uKQogICAgICAgICBtX2ltcGxlbWVudGF0aW9uID0gc3RkOjptYWtl
X3VuaXF1ZTxET01JbXBsZW1lbnRhdGlvbj4oKnRoaXMpOwotICAgIHJldHVybiBtX2ltcGxlbWVu
dGF0aW9uLmdldCgpOworICAgIHJldHVybiAqbV9pbXBsZW1lbnRhdGlvbjsKIH0KIAogYm9vbCBE
b2N1bWVudDo6aGFzTWFuaWZlc3QoKSBjb25zdApAQCAtMTEyMiwxNyArMTEyMiwxNyBAQCBQYXNz
UmVmUHRyPERPTU5hbWVkRmxvd0NvbGxlY3Rpb24+IERvY3VtZW50Ojp3ZWJraXRHZXROYW1lZEZs
b3dzKCkKIAogICAgIHVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKIAotICAgIHJldHVybiBuYW1lZEZs
b3dzKCktPmNyZWF0ZUNTU09NU25hcHNob3QoKTsKKyAgICByZXR1cm4gbmFtZWRGbG93cygpLmNy
ZWF0ZUNTU09NU25hcHNob3QoKTsKIH0KIAogI2VuZGlmCiAKLU5hbWVkRmxvd0NvbGxlY3Rpb24q
IERvY3VtZW50OjpuYW1lZEZsb3dzKCkKK05hbWVkRmxvd0NvbGxlY3Rpb24mIERvY3VtZW50Ojpu
YW1lZEZsb3dzKCkKIHsKICAgICBpZiAoIW1fbmFtZWRGbG93cykKICAgICAgICAgbV9uYW1lZEZs
b3dzID0gTmFtZWRGbG93Q29sbGVjdGlvbjo6Y3JlYXRlKHRoaXMpOwogCi0gICAgcmV0dXJuIG1f
bmFtZWRGbG93cy5nZXQoKTsKKyAgICByZXR1cm4gKm1fbmFtZWRGbG93czsKIH0KIAogUGFzc1Jl
ZlB0cjxFbGVtZW50PiBEb2N1bWVudDo6Y3JlYXRlRWxlbWVudE5TKGNvbnN0IFN0cmluZyYgbmFt
ZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcmIHF1YWxpZmllZE5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVj
KQpAQCAtMTMxNiw3ICsxMzE2LDcgQEAgdm9pZCBEb2N1bWVudDo6c2V0Q29udGVudExhbmd1YWdl
KGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UpCiAKIHZvaWQgRG9jdW1lbnQ6OnNldFhNTFZlcnNpb24o
Y29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBpZiAoIWlt
cGxlbWVudGF0aW9uKCktPmhhc0ZlYXR1cmUoIlhNTCIsIFN0cmluZygpKSkgeworICAgIGlmICgh
aW1wbGVtZW50YXRpb24oKS5oYXNGZWF0dXJlKCJYTUwiLCBTdHJpbmcoKSkpIHsKICAgICAgICAg
ZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEzMzEs
NyArMTMzMSw3IEBAIHZvaWQgRG9jdW1lbnQ6OnNldFhNTFZlcnNpb24oY29uc3QgU3RyaW5nJiB2
ZXJzaW9uLCBFeGNlcHRpb25Db2RlJiBlYykKIAogdm9pZCBEb2N1bWVudDo6c2V0WE1MU3RhbmRh
bG9uZShib29sIHN0YW5kYWxvbmUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIGlmICghaW1w
bGVtZW50YXRpb24oKS0+aGFzRmVhdHVyZSgiWE1MIiwgU3RyaW5nKCkpKSB7CisgICAgaWYgKCFp
bXBsZW1lbnRhdGlvbigpLmhhc0ZlYXR1cmUoIlhNTCIsIFN0cmluZygpKSkgewogICAgICAgICBl
YyA9IE5PVF9TVVBQT1JURURfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTU4MSwx
MSArMTU4MSwxMSBAQCBib29sIERvY3VtZW50OjpoaWRkZW4oKSBjb25zdAogfQogCiAjaWYgRU5B
QkxFKENTUF9ORVhUKQotRE9NU2VjdXJpdHlQb2xpY3kqIERvY3VtZW50OjpzZWN1cml0eVBvbGlj
eSgpCitET01TZWN1cml0eVBvbGljeSYgRG9jdW1lbnQ6OnNlY3VyaXR5UG9saWN5KCkKIHsKICAg
ICBpZiAoIW1fZG9tU2VjdXJpdHlQb2xpY3kpCiAgICAgICAgIG1fZG9tU2VjdXJpdHlQb2xpY3kg
PSBET01TZWN1cml0eVBvbGljeTo6Y3JlYXRlKHRoaXMpOwotICAgIHJldHVybiBtX2RvbVNlY3Vy
aXR5UG9saWN5LmdldCgpOworICAgIHJldHVybiAqbV9kb21TZWN1cml0eVBvbGljeTsKIH0KICNl
bmRpZgogCkBAIC0zMTcyLDExICszMTcyLDExIEBAIHZvaWQgRG9jdW1lbnQ6OmNsb25lRGF0YUZy
b21Eb2N1bWVudChjb25zdCBEb2N1bWVudCYgb3RoZXIpCiAgICAgc2V0RGVjb2RlcihvdGhlci5k
ZWNvZGVyKCkpOwogfQogCi1TdHlsZVNoZWV0TGlzdCogRG9jdW1lbnQ6OnN0eWxlU2hlZXRzKCkK
K1N0eWxlU2hlZXRMaXN0JiBEb2N1bWVudDo6c3R5bGVTaGVldHMoKQogewogICAgIGlmICghbV9z
dHlsZVNoZWV0TGlzdCkKICAgICAgICAgbV9zdHlsZVNoZWV0TGlzdCA9IFN0eWxlU2hlZXRMaXN0
OjpjcmVhdGUodGhpcyk7Ci0gICAgcmV0dXJuIG1fc3R5bGVTaGVldExpc3QuZ2V0KCk7CisgICAg
cmV0dXJuICptX3N0eWxlU2hlZXRMaXN0OwogfQogCiBTdHJpbmcgRG9jdW1lbnQ6OnByZWZlcnJl
ZFN0eWxlc2hlZXRTZXQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCAwNWIyMjZkM2Fl
YWU2N2E0ZDg5YmE2MGVlMjA5NWRjYmVjZDU4OWZlLi5iMTY3MzU1NGRlZTlhMjViNjNjNDE1Njhh
OGY4MGQ1NThkM2RiN2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtNDA4LDcgKzQwOCw3IEBA
IHB1YmxpYzoKIAogICAgIERvY3VtZW50VHlwZSogZG9jdHlwZSgpIGNvbnN0OwogCi0gICAgRE9N
SW1wbGVtZW50YXRpb24qIGltcGxlbWVudGF0aW9uKCk7CisgICAgRE9NSW1wbGVtZW50YXRpb24m
IGltcGxlbWVudGF0aW9uKCk7CiAgICAgCiAgICAgRWxlbWVudCogZG9jdW1lbnRFbGVtZW50KCkg
Y29uc3QKICAgICB7CkBAIC00NDEsNyArNDQxLDcgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8
RE9NTmFtZWRGbG93Q29sbGVjdGlvbj4gd2Via2l0R2V0TmFtZWRGbG93cygpOwogI2VuZGlmCiAK
LSAgICBOYW1lZEZsb3dDb2xsZWN0aW9uKiBuYW1lZEZsb3dzKCk7CisgICAgTmFtZWRGbG93Q29s
bGVjdGlvbiYgbmFtZWRGbG93cygpOwogCiAgICAgRWxlbWVudCogZWxlbWVudEZyb21Qb2ludChp
bnQgeCwgaW50IHkpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8UmFuZ2U+IGNhcmV0UmFuZ2VGcm9t
UG9pbnQoaW50IHgsIGludCB5KTsKQEAgLTQ5Miw3ICs0OTIsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBoaWRkZW4oKSBjb25zdDsKIAogI2lmIEVOQUJMRShDU1BfTkVYVCkKLSAgICBET01TZWN1cml0
eVBvbGljeSogc2VjdXJpdHlQb2xpY3koKTsKKyAgICBET01TZWN1cml0eVBvbGljeSYgc2VjdXJp
dHlQb2xpY3koKTsKICNlbmRpZgogCiAgICAgUGFzc1JlZlB0cjxOb2RlPiBhZG9wdE5vZGUoUGFz
c1JlZlB0cjxOb2RlPiBzb3VyY2UsIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTU0Myw3ICs1NDMsNyBA
QCBwdWJsaWM6CiAgICAgYm9vbCBoYXZlU3R5bGVzaGVldHNMb2FkZWQoKSBjb25zdDsKIAogICAg
IC8vIFRoaXMgaXMgYSBET00gZnVuY3Rpb24uCi0gICAgU3R5bGVTaGVldExpc3QqIHN0eWxlU2hl
ZXRzKCk7CisgICAgU3R5bGVTaGVldExpc3QmIHN0eWxlU2hlZXRzKCk7CiAKICAgICBEb2N1bWVu
dFN0eWxlU2hlZXRDb2xsZWN0aW9uJiBzdHlsZVNoZWV0Q29sbGVjdGlvbigpIHsgcmV0dXJuIG1f
c3R5bGVTaGVldENvbGxlY3Rpb247IH0KIApAQCAtMTE3Nyw3ICsxMTc3LDcgQEAgcHVibGljOgog
I2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX1RJTUlORykKLSAgICBjb25zdCBEb2N1bWVudFRpbWlu
ZyogdGltaW5nKCkgY29uc3QgeyByZXR1cm4gJm1fZG9jdW1lbnRUaW1pbmc7IH0KKyAgICBjb25z
dCBEb2N1bWVudFRpbWluZyYgdGltaW5nKCkgY29uc3QgeyByZXR1cm4gbV9kb2N1bWVudFRpbWlu
ZzsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5jcHAKaW5kZXggNTQzZGI3NGI3ZjRlZWYwMzA3N2E2NGNhM2M1NzJjM2YxODU3
NmM5NC4uZjlmMDBhNTUyMjNmNjZjYjU3OGU1MTY1YTY5MjNiNmUxMzRmYWRlMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcApAQCAtMjMyNiwyMCArMjMyNiwyMCBAQCBib29sIEVsZW1lbnQ6OnNob3Vs
ZEFwcGVhckluZGV0ZXJtaW5hdGUoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotRE9N
VG9rZW5MaXN0KiBFbGVtZW50OjpjbGFzc0xpc3QoKQorRE9NVG9rZW5MaXN0JiBFbGVtZW50Ojpj
bGFzc0xpc3QoKQogewogICAgIEVsZW1lbnRSYXJlRGF0YSYgZGF0YSA9IGVuc3VyZUVsZW1lbnRS
YXJlRGF0YSgpOwogICAgIGlmICghZGF0YS5jbGFzc0xpc3QoKSkKICAgICAgICAgZGF0YS5zZXRD
bGFzc0xpc3Qoc3RkOjptYWtlX3VuaXF1ZTxDbGFzc0xpc3Q+KCp0aGlzKSk7Ci0gICAgcmV0dXJu
IGRhdGEuY2xhc3NMaXN0KCk7CisgICAgcmV0dXJuICpkYXRhLmNsYXNzTGlzdCgpOwogfQogCi1E
YXRhc2V0RE9NU3RyaW5nTWFwKiBFbGVtZW50OjpkYXRhc2V0KCkKK0RhdGFzZXRET01TdHJpbmdN
YXAmIEVsZW1lbnQ6OmRhdGFzZXQoKQogewogICAgIEVsZW1lbnRSYXJlRGF0YSYgZGF0YSA9IGVu
c3VyZUVsZW1lbnRSYXJlRGF0YSgpOwogICAgIGlmICghZGF0YS5kYXRhc2V0KCkpCiAgICAgICAg
IGRhdGEuc2V0RGF0YXNldChzdGQ6Om1ha2VfdW5pcXVlPERhdGFzZXRET01TdHJpbmdNYXA+KCp0
aGlzKSk7Ci0gICAgcmV0dXJuIGRhdGEuZGF0YXNldCgpOworICAgIHJldHVybiAqZGF0YS5kYXRh
c2V0KCk7CiB9CiAKIFVSTCBFbGVtZW50OjpnZXRVUkxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgbmFtZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDFlMzdlZWNjZmZhODcwMjk5
MGQ3Zjc0NzNkZTBlYWEyZWI5Njg5YjcuLmY2YzIwMWQ4YzM2Nzk1OGMzNDJmZWIxZGZhNjgxMDcz
YmQ1YjU2YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtNDU0LDkgKzQ1NCw5IEBAIHB1YmxpYzoK
ICAgICBib29sIG1hdGNoZXMoY29uc3QgU3RyaW5nJiBzZWxlY3RvcnMsIEV4Y2VwdGlvbkNvZGUm
KTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQXBwZWFySW5kZXRlcm1pbmF0ZSgpIGNvbnN0Owog
Ci0gICAgRE9NVG9rZW5MaXN0KiBjbGFzc0xpc3QoKTsKKyAgICBET01Ub2tlbkxpc3QmIGNsYXNz
TGlzdCgpOwogCi0gICAgRGF0YXNldERPTVN0cmluZ01hcCogZGF0YXNldCgpOworICAgIERhdGFz
ZXRET01TdHJpbmdNYXAmIGRhdGFzZXQoKTsKIAogI2lmIEVOQUJMRShWSURFTykKICAgICB2aXJ0
dWFsIGJvb2wgaXNNZWRpYUVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCmlu
ZGV4IDM2NmI5NWFmODYwY2MzYjY2YTlhZTU5MDkyMDk4MjdmNzIzNzI3NTQuLmE5MmI4NzIyMGQ4
ZTA5YjllZDVjMjg5YzRiNzQ2MWExMTlkNzMzODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKQEAgLTE2OSw3ICsxNjksNyBA
QCB2b2lkIE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudDo6c2V0UG9zaXRpb24oY29uc3QgTGF5b3V0
UG9pbnQmIHBvc2l0aW9uKQogICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlN
YXJnaW5MZWZ0LCAwLjAsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOwogICAgIHNldElubGlu
ZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlNYXJnaW5Ub3AsIDAuMCwgQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19QWCk7CiAKLSAgICBjbGFzc0xpc3QoKS0+YWRkKCJkcmFnZ2VkIiwgSUdOT1JFX0VY
Q0VQVElPTik7CisgICAgY2xhc3NMaXN0KCkuYWRkKCJkcmFnZ2VkIiwgSUdOT1JFX0VYQ0VQVElP
Tik7CiB9CiAKIHZvaWQgTWVkaWFDb250cm9sUGFuZWxFbGVtZW50OjpyZXNldFBvc2l0aW9uKCkK
QEAgLTE3OSw3ICsxNzksNyBAQCB2b2lkIE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudDo6cmVzZXRQ
b3NpdGlvbigpCiAgICAgcmVtb3ZlSW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmdp
bkxlZnQpOwogICAgIHJlbW92ZUlubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlNYXJnaW5U
b3ApOwogCi0gICAgY2xhc3NMaXN0KCktPnJlbW92ZSgiZHJhZ2dlZCIsIElHTk9SRV9FWENFUFRJ
T04pOworICAgIGNsYXNzTGlzdCgpLnJlbW92ZSgiZHJhZ2dlZCIsIElHTk9SRV9FWENFUFRJT04p
OwogCiAgICAgbV9jdW11bGF0aXZlRHJhZ09mZnNldC5zZXRYKDApOwogICAgIG1fY3VtdWxhdGl2
ZURyYWdPZmZzZXQuc2V0WSgwKTsKQEAgLTc2NCwyNCArNzY0LDI0IEBAIHZvaWQgTWVkaWFDb250
cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50Ojp1cGRhdGVEaXNwbGF5KCkKIAogICAg
ICAgICBpZiAodGV4dFRyYWNrID09IFRleHRUcmFjazo6Y2FwdGlvbk1lbnVBdXRvbWF0aWNJdGVt
KCkpIHsKICAgICAgICAgICAgIGlmIChkaXNwbGF5TW9kZSA9PSBDYXB0aW9uVXNlclByZWZlcmVu
Y2VzOjpBdXRvbWF0aWMpCi0gICAgICAgICAgICAgICAgdHJhY2tJdGVtLT5jbGFzc0xpc3QoKS0+
YWRkKHNlbGVjdGVkQ2xhc3NWYWx1ZSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAgICAgICAg
ICAgICAgdHJhY2tJdGVtLT5jbGFzc0xpc3QoKS5hZGQoc2VsZWN0ZWRDbGFzc1ZhbHVlLCBBU1NF
UlRfTk9fRVhDRVBUSU9OKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0cmFj
a0l0ZW0tPmNsYXNzTGlzdCgpLT5yZW1vdmUoc2VsZWN0ZWRDbGFzc1ZhbHVlLCBBU1NFUlRfTk9f
RVhDRVBUSU9OKTsKKyAgICAgICAgICAgICAgICB0cmFja0l0ZW0tPmNsYXNzTGlzdCgpLnJlbW92
ZShzZWxlY3RlZENsYXNzVmFsdWUsIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoZGlzcGxheU1vZGUgIT0gQ2FwdGlv
blVzZXJQcmVmZXJlbmNlczo6QXV0b21hdGljICYmIHRleHRUcmFjay0+bW9kZSgpID09IFRleHRU
cmFjazo6c2hvd2luZ0tleXdvcmQoKSkgewogICAgICAgICAgICAgdHJhY2tNZW51SXRlbVNlbGVj
dGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIHRyYWNrSXRlbS0+Y2xhc3NMaXN0KCktPmFkZChzZWxl
Y3RlZENsYXNzVmFsdWUsIEFTU0VSVF9OT19FWENFUFRJT04pOworICAgICAgICAgICAgdHJhY2tJ
dGVtLT5jbGFzc0xpc3QoKS5hZGQoc2VsZWN0ZWRDbGFzc1ZhbHVlLCBBU1NFUlRfTk9fRVhDRVBU
SU9OKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICB0cmFja0l0ZW0tPmNsYXNzTGlzdCgp
LT5yZW1vdmUoc2VsZWN0ZWRDbGFzc1ZhbHVlLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICAg
ICAgICAgIHRyYWNrSXRlbS0+Y2xhc3NMaXN0KCkucmVtb3ZlKHNlbGVjdGVkQ2xhc3NWYWx1ZSwg
QVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAgfQogCiAgICAgaWYgKG9mZk1lbnVJdGVtKSB7CiAg
ICAgICAgIGlmIChkaXNwbGF5TW9kZSA9PSBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpGb3JjZWRP
bmx5ICYmICF0cmFja01lbnVJdGVtU2VsZWN0ZWQpCi0gICAgICAgICAgICBvZmZNZW51SXRlbS0+
Y2xhc3NMaXN0KCktPmFkZChzZWxlY3RlZENsYXNzVmFsdWUsIEFTU0VSVF9OT19FWENFUFRJT04p
OworICAgICAgICAgICAgb2ZmTWVudUl0ZW0tPmNsYXNzTGlzdCgpLmFkZChzZWxlY3RlZENsYXNz
VmFsdWUsIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBv
ZmZNZW51SXRlbS0+Y2xhc3NMaXN0KCktPnJlbW92ZShzZWxlY3RlZENsYXNzVmFsdWUsIEFTU0VS
VF9OT19FWENFUFRJT04pOworICAgICAgICAgICAgb2ZmTWVudUl0ZW0tPmNsYXNzTGlzdCgpLnJl
bW92ZShzZWxlY3RlZENsYXNzVmFsdWUsIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgIH0KICNl
bmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRSZWdpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRSZWdpb24uY3BwCmluZGV4IDQ4OTZl
MjM3MzZhYjc3MWJmMWU3NmEyZmZhYTlmMjRkMzM2NThlNGQuLjZmYjVhYWRiMDc0ODMyMDNiOTJk
ODMxMGRjYzc4NjdkZTEzMDEyNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVlRUUmVnaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVFJlZ2lv
bi5jcHAKQEAgLTM2OCw3ICszNjgsNyBAQCB2b2lkIFZUVFJlZ2lvbjo6ZGlzcGxheUxhc3RUZXh0
VHJhY2tDdWVCb3goKQogCiAgICAgLy8gSWYgaXQncyBhIHNjcm9sbGluZyByZWdpb24sIGFkZCB0
aGUgc2Nyb2xsaW5nIGNsYXNzLgogICAgIGlmIChpc1Njcm9sbGluZ1JlZ2lvbigpKQotICAgICAg
ICBtX2N1ZUNvbnRhaW5lci0+Y2xhc3NMaXN0KCktPmFkZCh0ZXh0VHJhY2tDdWVDb250YWluZXJT
Y3JvbGxpbmdDbGFzcygpLCBJR05PUkVfRVhDRVBUSU9OKTsKKyAgICAgICAgbV9jdWVDb250YWlu
ZXItPmNsYXNzTGlzdCgpLmFkZCh0ZXh0VHJhY2tDdWVDb250YWluZXJTY3JvbGxpbmdDbGFzcygp
LCBJR05PUkVfRVhDRVBUSU9OKTsKIAogICAgIGZsb2F0IHJlZ2lvbkJvdHRvbSA9IG1fcmVnaW9u
RGlzcGxheVRyZWUtPmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLT5ib3R0b20oKTsKIApAQCAtMzk4
LDcgKzM5OCw3IEBAIHZvaWQgVlRUUmVnaW9uOjp3aWxsUmVtb3ZlVGV4dFRyYWNrQ3VlQm94KFZU
VEN1ZUJveCogYm94KQogCiAgICAgZG91YmxlIGJveEhlaWdodCA9IGJveC0+Z2V0Qm91bmRpbmdD
bGllbnRSZWN0KCktPmJvdHRvbSgpIC0gYm94LT5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS0+dG9w
KCk7CiAKLSAgICBtX2N1ZUNvbnRhaW5lci0+Y2xhc3NMaXN0KCktPnJlbW92ZSh0ZXh0VHJhY2tD
dWVDb250YWluZXJTY3JvbGxpbmdDbGFzcygpLCBJR05PUkVfRVhDRVBUSU9OKTsKKyAgICBtX2N1
ZUNvbnRhaW5lci0+Y2xhc3NMaXN0KCkucmVtb3ZlKHRleHRUcmFja0N1ZUNvbnRhaW5lclNjcm9s
bGluZ0NsYXNzKCksIElHTk9SRV9FWENFUFRJT04pOwogCiAgICAgbV9jdXJyZW50VG9wICs9IGJv
eEhlaWdodDsKICAgICBtX2N1ZUNvbnRhaW5lci0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQ
cm9wZXJ0eVRvcCwgbV9jdXJyZW50VG9wLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCmluZGV4IDlm
NTQ4Zjc2NDVjZjRmNDI2YjgwMmU4NDM1ODI4ZWQ2NDA5NjhmZjcuLmY1Y2FkYmZiMTdhZWRhYWQ4
ZGNjMDAzMTI4NDkwMGNkZGExZTU4OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtNjgxLDkgKzY4MSw5IEBAIHZvaWQgSW5zcGVjdG9y
Q1NTQWdlbnQ6OmdldEFsbFN0eWxlU2hlZXRzKEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jCiAgICAgc3R5bGVJbmZvcyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRlcj46OmNyZWF0ZSgpOwog
ICAgIFZlY3RvcjxEb2N1bWVudCo+IGRvY3VtZW50cyA9IG1fZG9tQWdlbnQtPmRvY3VtZW50cygp
OwogICAgIGZvciAoVmVjdG9yPERvY3VtZW50Kj46Oml0ZXJhdG9yIGl0ID0gZG9jdW1lbnRzLmJl
Z2luKCk7IGl0ICE9IGRvY3VtZW50cy5lbmQoKTsgKytpdCkgewotICAgICAgICBTdHlsZVNoZWV0
TGlzdCogbGlzdCA9ICgqaXQpLT5zdHlsZVNoZWV0cygpOwotICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbGlzdC0+bGVuZ3RoKCk7ICsraSkgewotICAgICAgICAgICAgU3R5bGVTaGVl
dCYgc3R5bGVTaGVldCA9ICpsaXN0LT5pdGVtKGkpOworICAgICAgICBTdHlsZVNoZWV0TGlzdCYg
bGlzdCA9ICgqaXQpLT5zdHlsZVNoZWV0cygpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbGlzdC5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICBTdHlsZVNoZWV0JiBzdHls
ZVNoZWV0ID0gKmxpc3QuaXRlbShpKTsKICAgICAgICAgICAgIGlmIChzdHlsZVNoZWV0LmlzQ1NT
U3R5bGVTaGVldCgpKQogICAgICAgICAgICAgICAgIGNvbGxlY3RTdHlsZVNoZWV0cygmdG9DU1NT
dHlsZVNoZWV0KHN0eWxlU2hlZXQpLCBzdHlsZUluZm9zLmdldCgpKTsKICAgICAgICAgfQpAQCAt
ODYyLDcgKzg2Miw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE5hbWVkRmxvd0NvbGxl
Y3Rpb24oRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgZG9jCiAKICAgICBtX25hbWVkRmxv
d0NvbGxlY3Rpb25zUmVxdWVzdGVkLmFkZChkb2N1bWVudE5vZGVJZCk7CiAKLSAgICBWZWN0b3I8
UmVmUHRyPFdlYktpdE5hbWVkRmxvdz4+IG5hbWVkRmxvd3NWZWN0b3IgPSBkb2N1bWVudC0+bmFt
ZWRGbG93cygpLT5uYW1lZEZsb3dzKCk7CisgICAgVmVjdG9yPFJlZlB0cjxXZWJLaXROYW1lZEZs
b3c+PiBuYW1lZEZsb3dzVmVjdG9yID0gZG9jdW1lbnQtPm5hbWVkRmxvd3MoKS5uYW1lZEZsb3dz
KCk7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNTUzo6TmFtZWRGbG93Pj4gbmFtZWRGbG93cyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6TmFtZWRGbG93Pjo6Y3JlYXRlKCk7CiAK
ICAgICBmb3IgKFZlY3RvcjxSZWZQdHI8V2ViS2l0TmFtZWRGbG93Pj46Oml0ZXJhdG9yIGl0ID0g
bmFtZWRGbG93c1ZlY3Rvci5iZWdpbigpOyBpdCAhPSBuYW1lZEZsb3dzVmVjdG9yLmVuZCgpOyAr
K2l0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVRpbWluZy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlVGltaW5nLmNwcAppbmRleCBiZDc1
NDBhNGJhNGEwYjY5NTE3MjM2YjZlNjdjMzMxZGU5N2NjMzIwLi5iYmQxNDhkM2ZmNTI2MmM0OWMy
ODhlY2I2N2ZkMDE5MGM2YTU4MDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bl
cmZvcm1hbmNlVGltaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNl
VGltaW5nLmNwcApAQCAtMzE5LDcgKzMxOSw3IEBAIGNvbnN0IERvY3VtZW50VGltaW5nKiBQZXJm
b3JtYW5jZVRpbWluZzo6ZG9jdW1lbnRUaW1pbmcoKSBjb25zdAogICAgIGlmICghZG9jdW1lbnQp
CiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIGRvY3VtZW50LT50aW1pbmcoKTsKKyAg
ICByZXR1cm4gJmRvY3VtZW50LT50aW1pbmcoKTsKIH0KIAogRG9jdW1lbnRMb2FkVGltaW5nKiBQ
ZXJmb3JtYW5jZVRpbWluZzo6ZG9jdW1lbnRMb2FkVGltaW5nKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG93VGhyZWFkQ29udHJvbGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvd1RocmVhZENvbnRyb2xsZXIuY3BwCmluZGV4IDQ4ZDRl
YmUwOTdkMmI5YWFkM2M4MTU3OTM1MmJkNmM2ODk1ZTBmMGMuLjJjZmE0MjgzYzc5ZjliNWVlYTNl
MTc4YWQxMjJkYzhiNjlmYmI5YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9GbG93VGhyZWFkQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0Zsb3dUaHJlYWRDb250cm9sbGVyLmNwcApAQCAtNjMsMTIgKzYzLDEyIEBAIFJlbmRlck5hbWVk
Rmxvd1RocmVhZCYgRmxvd1RocmVhZENvbnRyb2xsZXI6OmVuc3VyZVJlbmRlckZsb3dUaHJlYWRX
aXRoTmFtZShjb25zCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBOYW1lZEZsb3dDb2xsZWN0aW9u
KiBuYW1lZEZsb3dzID0gbV92aWV3LT5kb2N1bWVudCgpLm5hbWVkRmxvd3MoKTsKKyAgICBOYW1l
ZEZsb3dDb2xsZWN0aW9uJiBuYW1lZEZsb3dzID0gbV92aWV3LT5kb2N1bWVudCgpLm5hbWVkRmxv
d3MoKTsKIAogICAgIC8vIFNhbml0eSBjaGVjayBmb3IgdGhlIGFic2VuY2Ugb2YgYSBuYW1lZCBm
bG93IGluIHRoZSAiQ1JFQVRFRCIgc3RhdGUgd2l0aCB0aGUgc2FtZSBuYW1lLgotICAgIEFTU0VS
VCghbmFtZWRGbG93cy0+Zmxvd0J5TmFtZShuYW1lKSk7CisgICAgQVNTRVJUKCFuYW1lZEZsb3dz
LmZsb3dCeU5hbWUobmFtZSkpOwogCi0gICAgYXV0byBmbG93UmVuZGVyZXIgPSBuZXcgUmVuZGVy
TmFtZWRGbG93VGhyZWFkKG1fdmlldy0+ZG9jdW1lbnQoKSwgUmVuZGVyRmxvd1RocmVhZDo6Y3Jl
YXRlRmxvd1RocmVhZFN0eWxlKCZtX3ZpZXctPnN0eWxlKCkpLCBuYW1lZEZsb3dzLT5lbnN1cmVG
bG93V2l0aE5hbWUobmFtZSkpOworICAgIGF1dG8gZmxvd1JlbmRlcmVyID0gbmV3IFJlbmRlck5h
bWVkRmxvd1RocmVhZChtX3ZpZXctPmRvY3VtZW50KCksIFJlbmRlckZsb3dUaHJlYWQ6OmNyZWF0
ZUZsb3dUaHJlYWRTdHlsZSgmbV92aWV3LT5zdHlsZSgpKSwgbmFtZWRGbG93cy5lbnN1cmVGbG93
V2l0aE5hbWUobmFtZSkpOwogICAgIGZsb3dSZW5kZXJlci0+aW5pdGlhbGl6ZVN0eWxlKCk7CiAg
ICAgbV9yZW5kZXJOYW1lZEZsb3dUaHJlYWRMaXN0LT5hZGQoZmxvd1JlbmRlcmVyKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238336</attachid>
            <date>2014-09-18 17:03:54 -0700</date>
            <delta_ts>2014-09-19 11:33:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136931-20140918170352.patch</filename>
            <type>text/plain</type>
            <size>26572</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczNzQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDhhZWY4NjlmODk0MDk0NDAyZjBlODg3
OTc4YmEzMDBiYjBjODdmZDYuLjAyZTNhNjQxZTBjYThkNjMyZTEwZjU4NjBlN2VkMGFmNWExM2Zm
MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTQtMDktMTggIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBET00gbWV0aG9kcyB0byByZXR1cm4gcmVmZXJl
bmNlcyBpbnN0ZWFkIG9mIHBvaW50ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMzY5MzEKKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgaGF2aW5n
IFdURjo6Z2V0UHRyKCkgdHJhbnNmb3JtIHJlZmVyZW5jZSBhcmd1bWVudHMKKyAgICAgICAgaW50
byByYXcgcG9pbnRlcnMgc28gdGhhdCBET00gbWV0aG9kcyBjYW4gbm93IHJldHVybiByZWZlcmVu
Y2VzIHdoZW4KKyAgICAgICAgYXBwcm9wcmlhdGUgYW5kIHNvIHRoYXQgdGhlIGdlbmVyYXRlZCBi
aW5kaW5ncyBjb2RlIGNhbiBoYW5kbGUgdGhpcworICAgICAgICB2aWEgV1RGOjpnZXRQdHIoKS4K
KworICAgICAgICBUaGlzIHBhdGNoIGhhZCB0byBhbHRlciB0aGUgd2F5IGdldFB0cigpIHdhcyBv
dmVybG9hZGVkIGZvciBzbWFydAorICAgICAgICBwb2ludGVyIHR5cGVzIHNvIHRoYXQgd2UgZG9u
J3QgY2FsbCAmcCBvbiBzbWFydCBwb2ludGVycyBidXQgcC5nZXQoKS4KKyAgICAgICAgVGhpcyB3
YXMgbmVlZGVkIGJlY2F1c2UgdGhlIG5ldyBXVEY6OmdldFB0cihUJikgd2FzIGJlaW5nIGNhbGxl
ZCBmb3IKKyAgICAgICAgUmVmUHRyPFQ+IGFyZ3VtZW50cyBpbnN0ZWFkIG9mIHRoZSBnZXRQdHIo
Y29uc3QgUmVmUHRyPFQ+Jikgb3ZlcmxvYWQuCisgICAgICAgIFRoaXMgd2FzIGFkZHJlc3NlZCB1
c2luZyB0cmFpdHMgYW5kIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9uIHRvCisgICAgICAgIGRpc3Rp
bmd1aXNoIFdURiBzbWFydCBwb2ludGVycyBmcm9tIG90aGVyIHR5cGVzLgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0dldFB0ci5oOgorICAg
ICAgICAoV1RGOjpnZXRQdHIpOgorICAgICAgICAqIHd0Zi9Pd25QdHIuaDoKKyAgICAgICAgKFdU
Rjo6Z2V0UHRyKTogRGVsZXRlZC4KKyAgICAgICAgKiB3dGYvUGFzc093blB0ci5oOgorICAgICAg
ICAoV1RGOjpnZXRQdHIpOiBEZWxldGVkLgorICAgICAgICAqIHd0Zi9QYXNzUmVmUHRyLmg6Cisg
ICAgICAgIChXVEY6OmdldFB0cik6IERlbGV0ZWQuCisgICAgICAgICogd3RmL1JlZi5oOgorICAg
ICAgICAqIHd0Zi9SZWZQdHIuaDoKKyAgICAgICAgKFdURjo6Z2V0UHRyKTogRGVsZXRlZC4KKyAg
ICAgICAgKiB3dGYvZ29iamVjdC9HUmVmUHRyLmg6CisgICAgICAgIChXVEY6OmdldFB0cik6IERl
bGV0ZWQuCisKIDIwMTQtMDktMTggIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkIHJvbGxvdXQgcjE3MzczMS4gQnJva2UgbXVsdGlwbGUg
YnVpbGRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IDQxNTA4ZjkzZDcyN2MwNmMwMjMxZGRlOGYwNWM1NzNlZmIx
MjBiNmIuLjk5YzE2NmU2ODYzYzUwMGExNWZmOGZjNWY2MDlhM2UxYzM4MmJmMDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw2MSBAQAorMjAxNC0wOS0xOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgorCisgICAgICAgIEFsbG93IERPTSBtZXRob2RzIHRvIHJldHVybiByZWZlcmVuY2Vz
IGluc3RlYWQgb2YgcG9pbnRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEzNjkzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEl0IGlzIGNvbW1vbiBwcmFjdGljZSBpbiBXZWJLaXQgdG8gaGF2ZSBtZXRo
b2RzIHJldHVybiBhIHJlZmVyZW5jZQorICAgICAgICBpbnN0ZWFkIG9mIGEgcG9pbnRlciBpZiB0
aGUgcG9pbnRlciBjYW4gbmV2ZXIgYmUgbnVsbC4gSG93ZXZlciwgdGhpcworICAgICAgICB1bmZv
cnR1bmF0ZWx5IGRpZCBub3Qgd29yayBmb3IgRE9NIG1ldGhvZHMgKGZ1bmN0aW9ucyBjYWxsZWQg
YnkgSlMKKyAgICAgICAgYmluZGluZ3MpLiBUaGlzIHByZXZlbnRlZCBmdXJ0aGVyIHJlZmFjdG9y
aW5nLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYnJpbmdzIHN1cHBvcnQgZm9yIGhhdmluZyBET00g
bWV0aG9kcyB0byByZXR1cm4gcmVmZXJlbmNlcworICAgICAgICBpbnN0ZWFkIG9mIHBvaW50ZXJz
IHdoZW4gdGhlIHBvaW50ZXIgY2Fubm90IGJlIG51bGwuIFRoZSBnZW5lcmF0ZWQKKyAgICAgICAg
YmluZGluZ3Mgd2VyZSBjYWxsaW5nIFdURjo6Z2V0UHRyKCkgb24gdGhlIHBvaW50ZXIgdHlwZSBy
ZXR1cm5lZCBieQorICAgICAgICB0aGUgaW1wbGVtZW50YXRpb24gYWxyZWFkeSAoaW4gY2FzZSBp
dCB3YXMgYSBzbWFydCBwb2ludGVyIHR5cGUpLgorICAgICAgICBUaGlzIHBhdGNoIGxldmVyYWdl
cyB0aGlzIGJ5IGhhdmluZyBXVEY6OmdldFB0cigpIGNvbnZlcnQgcmVmZXJlbmNlCisgICAgICAg
IGFyZ3VtZW50cyBpbnRvIHJhdyBwb2ludGVycy4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28g
dXBkYXRlcyBhIGZldyBET00gbWV0aG9kcyBvbiBEb2N1bWVudCBhbmQgRWxlbWVudAorICAgICAg
ICBjbGFzc2VzIHRvIHJldHVybiBhIHJlZmVyZW5jZSBpbnN0ZWFkIG9mIGEgcG9pbnRlciwgdG8g
dGVzdCB0aGUgY2hhbmdlLgorICAgICAgICBUaGVyZSBhcmUgbGlrZWx5IG1vcmUgRE9NIG1ldGhv
ZHMgdGhhdCBjYW4gYmUgdXBkYXRlZCB0aG91Z2guCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBu
byBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6Y2xh
c3NMaXN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaDoKKyAgICAgICAg
KFdURjo6Z2V0UHRyKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50Ojp3ZWJraXRHZXROYW1lZEZsb3dzKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpuYW1lZEZsb3dzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRYTUxW
ZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRYTUxTdGFuZGFsb25lKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZWN1cml0eVBvbGljeSk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6c3R5bGVTaGVldHMpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5o
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnRpbWluZyk6CisgICAgICAgICogZG9tL0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y2xhc3NMaXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmRhdGFzZXQpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6
CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFDb250cm9sUGFuZWxFbGVtZW50OjpzZXRQb3NpdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQ6OnJlc2V0UG9zaXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVt
ZW50Ojp1cGRhdGVEaXNwbGF5KToKKyAgICAgICAgKiBodG1sL3RyYWNrL1ZUVFJlZ2lvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpWVFRSZWdpb246OmRpc3BsYXlMYXN0VGV4dFRyYWNrQ3VlQm94
KToKKyAgICAgICAgKFdlYkNvcmU6OlZUVFJlZ2lvbjo6d2lsbFJlbW92ZVRleHRUcmFja0N1ZUJv
eCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpnZXRBbGxTdHlsZVNoZWV0cyk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TmFtZWRGbG93Q29sbGVjdGlvbik6Cisg
ICAgICAgICogcGFnZS9QZXJmb3JtYW5jZVRpbWluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
ZXJmb3JtYW5jZVRpbWluZzo6ZG9jdW1lbnRUaW1pbmcpOgorICAgICAgICAqIHJlbmRlcmluZy9G
bG93VGhyZWFkQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGbG93VGhyZWFkQ29u
dHJvbGxlcjo6ZW5zdXJlUmVuZGVyRmxvd1RocmVhZFdpdGhOYW1lKToKKwogMjAxNC0wOS0xNyAg
TXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFRleHQg
bGFpZCBvdXQgd2l0aCB0aGUgU1ZHIC0+IE9URiBmb250IGNvbnZlcnRlciBkb2VzIG5vdCBoYXZl
IHRoZSBzYW1lIG1ldHJpY3MgYXMgd2l0aCB0aGUgU1ZHIGZvbnQgY29kZSBwYXRoCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9HZXRQdHIuaCBiL1NvdXJjZS9XVEYvd3RmL0dldFB0ci5oCmlu
ZGV4IDFhNjNmZmI2MTI2NGJhZmMxZDk4OWQxMGJiN2E2YzZjNTIzZTg1YzEuLjQ3NDM3ZmQ1OWJm
YmE0YWMxMTFjMTkyZDgxNDYwM2I3ZmI1NmM2ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L0dldFB0ci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0dldFB0ci5oCkBAIC0yMywxMCArMjMsMzgg
QEAKIAogbmFtZXNwYWNlIFdURiB7CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5l
IFQqIGdldFB0cihUKiBwKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHA7Ci0gICAgfQordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IGlubGluZSBUKiBnZXRQdHIoVCogcCkgeyByZXR1cm4gcDsgfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IElzU21hcnRQdHIgeworICAgIHN0YXRpYyBjb25z
dCBib29sIHZhbHVlID0gZmFsc2U7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgYm9vbCBp
c1NtYXJ0UHRyPgorc3RydWN0IEdldFB0ckhlbHBlcjsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CitzdHJ1Y3QgR2V0UHRySGVscGVyPFQsIGZhbHNlIC8qIGlzU21hcnRQdHIgKi8+IHsKKyAgICB0
eXBlZGVmIFQqIFB0clR5cGU7CisgICAgc3RhdGljIFQqIGdldFB0cihUJiBwKSB7IHJldHVybiAm
cDsgfQorfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgR2V0UHRySGVscGVyPFQs
IHRydWUgLyogaXNTbWFydFB0ciAqLz4geworICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6UHRyVHlw
ZSBQdHJUeXBlOworICAgIHN0YXRpYyBQdHJUeXBlIGdldFB0cihjb25zdCBUJiBwKSB7IHJldHVy
biBwLmdldCgpOyB9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2lubGluZSB0eXBlbmFt
ZSBHZXRQdHJIZWxwZXI8VCwgSXNTbWFydFB0cjxUPjo6dmFsdWU+OjpQdHJUeXBlIGdldFB0cihU
JiBwKQoreworICAgIHJldHVybiBHZXRQdHJIZWxwZXI8VCwgSXNTbWFydFB0cjxUPjo6dmFsdWU+
OjpnZXRQdHIocCk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgoraW5saW5lIHR5cGVuYW1l
IEdldFB0ckhlbHBlcjxULCBJc1NtYXJ0UHRyPFQ+Ojp2YWx1ZT46OlB0clR5cGUgZ2V0UHRyKGNv
bnN0IFQmIHApCit7CisgICAgcmV0dXJuIEdldFB0ckhlbHBlcjxULCBJc1NtYXJ0UHRyPFQ+Ojp2
YWx1ZT46OmdldFB0cihwKTsKK30KIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL093blB0ci5oIGIvU291cmNlL1dURi93dGYvT3duUHRyLmgKaW5kZXgg
ZmEzNWI3MWUwZjliMzI3ZDM1ZWVlMTM1Yzc3OWI5Y2NhYTIyNzk5MS4uZDUyMGU0MmNmMDEwNmRi
ODUyYzgwYTdjYzU2YTVlZWU0MjhkMjc5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvT3du
UHRyLmgKKysrIGIvU291cmNlL1dURi93dGYvT3duUHRyLmgKQEAgLTIzLDYgKzIzLDcgQEAKIAog
I2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0F0b21pY3MuaD4KKyNp
bmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5j
bHVkZSA8d3RmL093blB0ckNvbW1vbi5oPgogI2luY2x1ZGUgPGFsZ29yaXRobT4KQEAgLTE5Mywx
MCArMTk0LDkgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHJldHVybiBhICE9IGIuZ2V0KCk7
IAogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSB0eXBlbmFtZSBPd25Q
dHI8VD46OlB0clR5cGUgZ2V0UHRyKGNvbnN0IE93blB0cjxUPiYgcCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBwLmdldCgpOwotICAgIH0KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0
IElzU21hcnRQdHI8T3duUHRyPFQ+PiB7CisgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVl
ID0gdHJ1ZTsKKyAgICB9OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdGVtcGxhdGU8dHlw
ZW5hbWUuLi4gQXJncz4gaW5saW5lIHZvaWQgT3duUHRyPFQ+OjpjcmVhdGVUcmFuc2FjdGlvbmFs
bHkoQXJncy4uLiBhcmdzKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1Bhc3NP
d25QdHIuaCBiL1NvdXJjZS9XVEYvd3RmL1Bhc3NPd25QdHIuaAppbmRleCAyYzFmOWQ0NTIyMjll
ZjJkZjdiYjE3YjlkYzE4NjQxMDcwMGRkOWRiLi5kYTgxNjU5OGY5NGUzNGY0OTMzZjFhNWUyNGFk
NjQyZmI3YWMwMjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QYXNzT3duUHRyLmgKKysr
IGIvU291cmNlL1dURi93dGYvUGFzc093blB0ci5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNs
dWRlIDxjc3RkZGVmPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3Rm
L0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHJDb21tb24uaD4KICNpbmNsdWRlIDx0eXBl
X3RyYWl0cz4KIApAQCAtMTU2LDEwICsxNTcsOSBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAg
cmV0dXJuIGFkb3B0UHRyKHN0YXRpY19jYXN0PFQqPihwLmxlYWtQdHIoKSkpOwogICAgIH0KIAot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBUKiBnZXRQdHIoY29uc3QgUGFzc093blB0
cjxUPiYgcCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBwLmdldCgpOwotICAgIH0KKyAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IElzU21hcnRQdHI8UGFzc093blB0cjxUPj4geworICAg
ICAgICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7CisgICAgfTsKIAogfSAvLyBuYW1l
c3BhY2UgV1RGCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1Bhc3NSZWZQdHIuaCBiL1Nv
dXJjZS9XVEYvd3RmL1Bhc3NSZWZQdHIuaAppbmRleCA2MjkyNDQ2NGM3ZWNlYTc1OWYxYjk5MzUz
NmRkNDA5NjBkMDk0NzM4Li42ZjgwNGEwYzk0NjQxNmZjNGYzM2Y1YTAzMmVlMWFlYTk0NzBkOGRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QYXNzUmVmUHRyLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvUGFzc1JlZlB0ci5oCkBAIC0yMSw3ICsyMSw4IEBACiAjaWZuZGVmIFdURl9QYXNzUmVm
UHRyX2gKICNkZWZpbmUgV1RGX1Bhc3NSZWZQdHJfaAogCi0jaW5jbHVkZSAiUGFzc1JlZi5oIgor
I2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZi5oPgogCiBuYW1l
c3BhY2UgV1RGIHsKIApAQCAtNDEsNiArNDIsOSBAQCBuYW1lc3BhY2UgV1RGIHsKIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFBhc3NSZWZQdHIgewogICAgIHB1YmxpYzoKKyAgICAg
ICAgdHlwZWRlZiBUIFZhbHVlVHlwZTsKKyAgICAgICAgdHlwZWRlZiBWYWx1ZVR5cGUqIFB0clR5
cGU7CisKICAgICAgICAgUGFzc1JlZlB0cigpIDogbV9wdHIobnVsbHB0cikgeyB9CiAgICAgICAg
IFBhc3NSZWZQdHIoVCogcHRyKSA6IG1fcHRyKHB0cikgeyByZWZJZk5vdE51bGwocHRyKTsgfQog
ICAgICAgICAvLyBJdCBzb21ld2hhdCBicmVha3MgdGhlIHR5cGUgc3lzdGVtIHRvIGFsbG93IHRy
YW5zZmVyIG9mIG93bmVyc2hpcCBvdXQgb2YKQEAgLTE1MywxMCArMTU3LDkgQEAgbmFtZXNwYWNl
IFdURiB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihzdGF0aWNfY2FzdDxUKj4ocC5sZWFrUmVm
KCkpKTsgCiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFQqIGdldFB0
cihjb25zdCBQYXNzUmVmUHRyPFQ+JiBwKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHAuZ2V0KCk7
Ci0gICAgfQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgSXNTbWFydFB0cjxQYXNz
UmVmUHRyPFQ+PiB7CisgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsKKyAg
ICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
UmVmLmggYi9Tb3VyY2UvV1RGL3d0Zi9SZWYuaAppbmRleCA2ZmY3YzgyMjM2NTI1M2FkNWI1ZGQ2
MTk2ZDJmYTBhNzkwNTE4YzUwLi43MWMzODZjNGMwNzgzNDdhNDM5OTM2ZGI4OTIwOWExZDllNjJk
N2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9SZWYuaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9SZWYuaApAQCAtMjYsNyArMjYsOCBAQAogI2lmbmRlZiBXVEZfUmVmX2gKICNkZWZpbmUgV1RG
X1JlZl9oCiAKLSNpbmNsdWRlICJOb25jb3B5YWJsZS5oIgorI2luY2x1ZGUgPHd0Zi9HZXRQdHIu
aD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKQEAg
LTczLDYgKzc0LDEyIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHRlbXBsYXRlPHR5cGVuYW1lIFU+
IGlubGluZSBQYXNzUmVmPFQ+IFJlZjxUPjo6cmVwbGFjZShQYXNzCiAgICAgcmV0dXJuIG9sZFJl
ZmVyZW5jZTsKIH0KIAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgR2V0UHRySGVscGVy
PFJlZjxUPiwgZmFsc2UgLyogaXNTbWFydFB0ciAqLz4geworICAgIHR5cGVkZWYgVCogUHRyVHlw
ZTsKKyAgICBzdGF0aWMgVCogZ2V0UHRyKGNvbnN0IFJlZjxUPiYgcCkgeyByZXR1cm4gY29uc3Rf
Y2FzdDxUKj4oJnAuZ2V0KCkpOyB9Cit9OworCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcg
V1RGOjpSZWY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaCBiL1NvdXJjZS9X
VEYvd3RmL1JlZlB0ci5oCmluZGV4IDIyZGY3YTdmZGEwYWFmMjNjYmRmMDgxODRiZDM5MzE4MzQ1
ZDExNjMuLjMyMTNmYjFiZDQ4Zjk0MzUzYzczMGMyZDFhNjgxNTM4YmQ2MGYzMzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL1JlZlB0ci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1JlZlB0ci5o
CkBAIC0yMywxMCArMjMsMTEgQEAKICNpZm5kZWYgV1RGX1JlZlB0cl9oCiAjZGVmaW5lIFdURl9S
ZWZQdHJfaAogCi0jaW5jbHVkZSAiRmFzdE1hbGxvYy5oIgotI2luY2x1ZGUgIlBhc3NSZWZQdHIu
aCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8dXRpbGl0eT4KKyNpbmNsdWRlIDx3
dGYvRmFzdE1hbGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KKyNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIApAQCAtMzUsNiArMzYsOSBAQCBuYW1l
c3BhY2UgV1RGIHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBSZWZQdHIgewogICAg
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CisgICAgICAgIHR5cGVk
ZWYgVCBWYWx1ZVR5cGU7CisgICAgICAgIHR5cGVkZWYgVmFsdWVUeXBlKiBQdHJUeXBlOworCiAg
ICAgICAgIEFMV0FZU19JTkxJTkUgUmVmUHRyKCkgOiBtX3B0cihudWxscHRyKSB7IH0KICAgICAg
ICAgQUxXQVlTX0lOTElORSBSZWZQdHIoVCogcHRyKSA6IG1fcHRyKHB0cikgeyByZWZJZk5vdE51
bGwocHRyKTsgfQogICAgICAgICBBTFdBWVNfSU5MSU5FIFJlZlB0cihjb25zdCBSZWZQdHImIG8p
IDogbV9wdHIoby5tX3B0cikgeyByZWZJZk5vdE51bGwobV9wdHIpOyB9CkBAIC0yMDQsMTAgKzIw
OCw5IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICByZXR1cm4gUmVmUHRyPFQ+KHN0YXRpY19j
YXN0PFQqPihwLmdldCgpKSk7IAogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlu
bGluZSBUKiBnZXRQdHIoY29uc3QgUmVmUHRyPFQ+JiBwKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IHAuZ2V0KCk7Ci0gICAgfQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgSXNTbWFy
dFB0cjxSZWZQdHI8VD4+IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVl
OworICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9nb2JqZWN0L0dSZWZQdHIuaCBiL1NvdXJjZS9XVEYvd3RmL2dvYmplY3QvR1JlZlB0ci5o
CmluZGV4IGYwMWUyYmI0YzBjOWIyNjE5OTg1OGVhMDFjYzAxNmI4YzM1NDk2YWEuLjIxNmMxNDUx
MjRkMzFiNmU5MWI2YjdjODFkYzVlNzdmODc2Mzk5YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL2dvYmplY3QvR1JlZlB0ci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dvYmplY3QvR1JlZlB0
ci5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpZiBVU0UoR0xJQikKIAorI2luY2x1ZGUgPHd0Zi9H
ZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgog
CkBAIC00MSw2ICs0Miw5IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBHUmVmUHRyPFQ+IGFkb3B0
R1JlZihUKik7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBHUmVmUHRyIHsKIHB1Ymxp
YzoKKyAgICB0eXBlZGVmIFQgVmFsdWVUeXBlOworICAgIHR5cGVkZWYgVmFsdWVUeXBlKiBQdHJU
eXBlOworCiAgICAgR1JlZlB0cigpIDogbV9wdHIoMCkgeyB9CiAKICAgICBHUmVmUHRyKFQqIHB0
cikKQEAgLTIwNCwxMCArMjA4LDkgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+
IGlubGluZSBHUmVmUHRyPFQ+IGNvbnN0X3BvaW50ZXJfY2FzdChjb25zdCBHUmUKICAgICByZXR1
cm4gR1JlZlB0cjxUPihjb25zdF9jYXN0PFQqPihwLmdldCgpKSk7CiB9CiAKLXRlbXBsYXRlIDx0
eXBlbmFtZSBUPiBpbmxpbmUgVCogZ2V0UHRyKGNvbnN0IEdSZWZQdHI8VD4mIHApCi17Ci0gICAg
cmV0dXJuIHAuZ2V0KCk7Ci19Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IElzU21hcnRQ
dHI8R1JlZlB0cjxUPj4geworICAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsKK307
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBHUmVmUHRyPFQ+IGFkb3B0R1JlZihUKiBwKQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5jcHAKaW5kZXggMzQ5NDg2Yjc3YjBiMzUzNzNiOTY5MzMzYzVkM2E1ZmZmOWE3ZWY4ZS4uYmZh
ODI1ZTg3YzI2OGFkNmQ0MGVkNzFjZmI3Yzc4MTM4Y2FlMDUwNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC0yMDU3
LDEyICsyMDU3LDEwIEBAIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6Y2xhc3NMaXN0KFZlY3Rv
cjxTdHJpbmc+JiBjbGFzc0xpc3QpIGNvbnN0CiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBF
bGVtZW50KiBlbGVtZW50ID0gdG9FbGVtZW50KG5vZGUpOwotICAgIERPTVRva2VuTGlzdCogbGlz
dCA9IGVsZW1lbnQtPmNsYXNzTGlzdCgpOwotICAgIGlmICghbGlzdCkKLSAgICAgICAgcmV0dXJu
OwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGxpc3QtPmxlbmd0aCgpOworICAgIERPTVRva2VuTGlz
dCYgbGlzdCA9IGVsZW1lbnQtPmNsYXNzTGlzdCgpOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IGxp
c3QubGVuZ3RoKCk7CiAgICAgZm9yICh1bnNpZ25lZCBrID0gMDsgayA8IGxlbmd0aDsgaysrKQot
ICAgICAgICBjbGFzc0xpc3QuYXBwZW5kKGxpc3QtPml0ZW0oaykuc3RyaW5nKCkpOworICAgICAg
ICBjbGFzc0xpc3QuYXBwZW5kKGxpc3QuaXRlbShrKS5zdHJpbmcoKSk7CiB9CiAKICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKaW5kZXggYjVjOGMxOWI2MWYz
ZDRiYjNmNDE4MTJjODgyZGI2MzY0YzBhZmY0OC4uYzg4OGM5Yzg5MGZkMjcwNDIwODhlNWY1MDEx
ZDg0YzQwYTg3OWQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01CaW5kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5n
LmgKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlIDxydW50aW1lL1R5cGVkQXJyYXlJbmxpbmVz
Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9UeXBlZEFycmF5cy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CisjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtNTIsMTcgKzUzLDYgQEAgbmFtZXNw
YWNlIEpTQyB7CiBjbGFzcyBIYXNoRW50cnk7CiB9CiAKLSNpZiBFTkFCTEUoR0FNRVBBRCkKLW5h
bWVzcGFjZSBXVEYgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgVCogZ2V0UHRyKGNv
bnN0IFJlZjxUPiYgcCkKLXsKLSAgICByZXR1cm4gY29uc3RfY2FzdDxUKj4oJnAuZ2V0KCkpOwot
fQotCi19Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRTY3Jp
cHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBmN2IxOTU5OWM2Nzc5NGMyYzhkNTVkMmRl
MTMwNWVlOTcwODc4YzQ1Li5jMjNlNzQ1MmU4NjAzNzkwODY0YzlkMWRlNTJmOGY1MmJlMWQxOGZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTgwNSwxMSArODA1LDExIEBAIHZvaWQgRG9j
dW1lbnQ6OnJlc2V0QWN0aXZlTGlua0NvbG9yKCkKICAgICBtX2FjdGl2ZUxpbmtDb2xvci5zZXRO
YW1lZENvbG9yKCJyZWQiKTsKIH0KIAotRE9NSW1wbGVtZW50YXRpb24qIERvY3VtZW50OjppbXBs
ZW1lbnRhdGlvbigpCitET01JbXBsZW1lbnRhdGlvbiYgRG9jdW1lbnQ6OmltcGxlbWVudGF0aW9u
KCkKIHsKICAgICBpZiAoIW1faW1wbGVtZW50YXRpb24pCiAgICAgICAgIG1faW1wbGVtZW50YXRp
b24gPSBzdGQ6Om1ha2VfdW5pcXVlPERPTUltcGxlbWVudGF0aW9uPigqdGhpcyk7Ci0gICAgcmV0
dXJuIG1faW1wbGVtZW50YXRpb24uZ2V0KCk7CisgICAgcmV0dXJuICptX2ltcGxlbWVudGF0aW9u
OwogfQogCiBib29sIERvY3VtZW50OjpoYXNNYW5pZmVzdCgpIGNvbnN0CkBAIC0xMTIyLDE3ICsx
MTIyLDE3IEBAIFBhc3NSZWZQdHI8RE9NTmFtZWRGbG93Q29sbGVjdGlvbj4gRG9jdW1lbnQ6Ondl
YmtpdEdldE5hbWVkRmxvd3MoKQogCiAgICAgdXBkYXRlU3R5bGVJZk5lZWRlZCgpOwogCi0gICAg
cmV0dXJuIG5hbWVkRmxvd3MoKS0+Y3JlYXRlQ1NTT01TbmFwc2hvdCgpOworICAgIHJldHVybiBu
YW1lZEZsb3dzKCkuY3JlYXRlQ1NTT01TbmFwc2hvdCgpOwogfQogCiAjZW5kaWYKIAotTmFtZWRG
bG93Q29sbGVjdGlvbiogRG9jdW1lbnQ6Om5hbWVkRmxvd3MoKQorTmFtZWRGbG93Q29sbGVjdGlv
biYgRG9jdW1lbnQ6Om5hbWVkRmxvd3MoKQogewogICAgIGlmICghbV9uYW1lZEZsb3dzKQogICAg
ICAgICBtX25hbWVkRmxvd3MgPSBOYW1lZEZsb3dDb2xsZWN0aW9uOjpjcmVhdGUodGhpcyk7CiAK
LSAgICByZXR1cm4gbV9uYW1lZEZsb3dzLmdldCgpOworICAgIHJldHVybiAqbV9uYW1lZEZsb3dz
OwogfQogCiBQYXNzUmVmUHRyPEVsZW1lbnQ+IERvY3VtZW50OjpjcmVhdGVFbGVtZW50TlMoY29u
c3QgU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYgcXVhbGlmaWVkTmFtZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCkBAIC0xMzE2LDcgKzEzMTYsNyBAQCB2b2lkIERvY3VtZW50OjpzZXRD
b250ZW50TGFuZ3VhZ2UoY29uc3QgU3RyaW5nJiBsYW5ndWFnZSkKIAogdm9pZCBEb2N1bWVudDo6
c2V0WE1MVmVyc2lvbihjb25zdCBTdHJpbmcmIHZlcnNpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ewotICAgIGlmICghaW1wbGVtZW50YXRpb24oKS0+aGFzRmVhdHVyZSgiWE1MIiwgU3RyaW5nKCkp
KSB7CisgICAgaWYgKCFpbXBsZW1lbnRhdGlvbigpLmhhc0ZlYXR1cmUoIlhNTCIsIFN0cmluZygp
KSkgewogICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtMTMzMSw3ICsxMzMxLDcgQEAgdm9pZCBEb2N1bWVudDo6c2V0WE1MVmVyc2lvbihj
b25zdCBTdHJpbmcmIHZlcnNpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogCiB2b2lkIERvY3VtZW50
OjpzZXRYTUxTdGFuZGFsb25lKGJvb2wgc3RhbmRhbG9uZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7
Ci0gICAgaWYgKCFpbXBsZW1lbnRhdGlvbigpLT5oYXNGZWF0dXJlKCJYTUwiLCBTdHJpbmcoKSkp
IHsKKyAgICBpZiAoIWltcGxlbWVudGF0aW9uKCkuaGFzRmVhdHVyZSgiWE1MIiwgU3RyaW5nKCkp
KSB7CiAgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC0xNTgxLDExICsxNTgxLDExIEBAIGJvb2wgRG9jdW1lbnQ6OmhpZGRlbigpIGNvbnN0
CiB9CiAKICNpZiBFTkFCTEUoQ1NQX05FWFQpCi1ET01TZWN1cml0eVBvbGljeSogRG9jdW1lbnQ6
OnNlY3VyaXR5UG9saWN5KCkKK0RPTVNlY3VyaXR5UG9saWN5JiBEb2N1bWVudDo6c2VjdXJpdHlQ
b2xpY3koKQogewogICAgIGlmICghbV9kb21TZWN1cml0eVBvbGljeSkKICAgICAgICAgbV9kb21T
ZWN1cml0eVBvbGljeSA9IERPTVNlY3VyaXR5UG9saWN5OjpjcmVhdGUodGhpcyk7Ci0gICAgcmV0
dXJuIG1fZG9tU2VjdXJpdHlQb2xpY3kuZ2V0KCk7CisgICAgcmV0dXJuICptX2RvbVNlY3VyaXR5
UG9saWN5OwogfQogI2VuZGlmCiAKQEAgLTMxNzIsMTEgKzMxNzIsMTEgQEAgdm9pZCBEb2N1bWVu
dDo6Y2xvbmVEYXRhRnJvbURvY3VtZW50KGNvbnN0IERvY3VtZW50JiBvdGhlcikKICAgICBzZXRE
ZWNvZGVyKG90aGVyLmRlY29kZXIoKSk7CiB9CiAKLVN0eWxlU2hlZXRMaXN0KiBEb2N1bWVudDo6
c3R5bGVTaGVldHMoKQorU3R5bGVTaGVldExpc3QmIERvY3VtZW50OjpzdHlsZVNoZWV0cygpCiB7
CiAgICAgaWYgKCFtX3N0eWxlU2hlZXRMaXN0KQogICAgICAgICBtX3N0eWxlU2hlZXRMaXN0ID0g
U3R5bGVTaGVldExpc3Q6OmNyZWF0ZSh0aGlzKTsKLSAgICByZXR1cm4gbV9zdHlsZVNoZWV0TGlz
dC5nZXQoKTsKKyAgICByZXR1cm4gKm1fc3R5bGVTaGVldExpc3Q7CiB9CiAKIFN0cmluZyBEb2N1
bWVudDo6cHJlZmVycmVkU3R5bGVzaGVldFNldCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmlu
ZGV4IDA1YjIyNmQzYWVhZTY3YTRkODliYTYwZWUyMDk1ZGNiZWNkNTg5ZmUuLmIxNjczNTU0ZGVl
OWEyNWI2M2M0MTU2OGE4ZjgwZDU1OGQzZGI3ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC00
MDgsNyArNDA4LDcgQEAgcHVibGljOgogCiAgICAgRG9jdW1lbnRUeXBlKiBkb2N0eXBlKCkgY29u
c3Q7CiAKLSAgICBET01JbXBsZW1lbnRhdGlvbiogaW1wbGVtZW50YXRpb24oKTsKKyAgICBET01J
bXBsZW1lbnRhdGlvbiYgaW1wbGVtZW50YXRpb24oKTsKICAgICAKICAgICBFbGVtZW50KiBkb2N1
bWVudEVsZW1lbnQoKSBjb25zdAogICAgIHsKQEAgLTQ0MSw3ICs0NDEsNyBAQCBwdWJsaWM6CiAg
ICAgUGFzc1JlZlB0cjxET01OYW1lZEZsb3dDb2xsZWN0aW9uPiB3ZWJraXRHZXROYW1lZEZsb3dz
KCk7CiAjZW5kaWYKIAotICAgIE5hbWVkRmxvd0NvbGxlY3Rpb24qIG5hbWVkRmxvd3MoKTsKKyAg
ICBOYW1lZEZsb3dDb2xsZWN0aW9uJiBuYW1lZEZsb3dzKCk7CiAKICAgICBFbGVtZW50KiBlbGVt
ZW50RnJvbVBvaW50KGludCB4LCBpbnQgeSkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxSYW5nZT4g
Y2FyZXRSYW5nZUZyb21Qb2ludChpbnQgeCwgaW50IHkpOwpAQCAtNDkyLDcgKzQ5Miw3IEBAIHB1
YmxpYzoKICAgICBib29sIGhpZGRlbigpIGNvbnN0OwogCiAjaWYgRU5BQkxFKENTUF9ORVhUKQot
ICAgIERPTVNlY3VyaXR5UG9saWN5KiBzZWN1cml0eVBvbGljeSgpOworICAgIERPTVNlY3VyaXR5
UG9saWN5JiBzZWN1cml0eVBvbGljeSgpOwogI2VuZGlmCiAKICAgICBQYXNzUmVmUHRyPE5vZGU+
IGFkb3B0Tm9kZShQYXNzUmVmUHRyPE5vZGU+IHNvdXJjZSwgRXhjZXB0aW9uQ29kZSYpOwpAQCAt
NTQzLDcgKzU0Myw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhdmVTdHlsZXNoZWV0c0xvYWRlZCgp
IGNvbnN0OwogCiAgICAgLy8gVGhpcyBpcyBhIERPTSBmdW5jdGlvbi4KLSAgICBTdHlsZVNoZWV0
TGlzdCogc3R5bGVTaGVldHMoKTsKKyAgICBTdHlsZVNoZWV0TGlzdCYgc3R5bGVTaGVldHMoKTsK
IAogICAgIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24mIHN0eWxlU2hlZXRDb2xsZWN0aW9u
KCkgeyByZXR1cm4gbV9zdHlsZVNoZWV0Q29sbGVjdGlvbjsgfQogCkBAIC0xMTc3LDcgKzExNzcs
NyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfVElNSU5HKQotICAgIGNvbnN0
IERvY3VtZW50VGltaW5nKiB0aW1pbmcoKSBjb25zdCB7IHJldHVybiAmbV9kb2N1bWVudFRpbWlu
ZzsgfQorICAgIGNvbnN0IERvY3VtZW50VGltaW5nJiB0aW1pbmcoKSBjb25zdCB7IHJldHVybiBt
X2RvY3VtZW50VGltaW5nOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElP
Tl9GUkFNRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA1NDNkYjc0YjdmNGVlZjAzMDc3YTY0
Y2EzYzU3MmMzZjE4NTc2Yzk0Li5mOWYwMGE1NTIyM2Y2NmNiNTc4ZTUxNjVhNjkyM2I2ZTEzNGZh
ZGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0yMzI2LDIwICsyMzI2LDIwIEBAIGJvb2wg
RWxlbWVudDo6c2hvdWxkQXBwZWFySW5kZXRlcm1pbmF0ZSgpIGNvbnN0CiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi1ET01Ub2tlbkxpc3QqIEVsZW1lbnQ6OmNsYXNzTGlzdCgpCitET01Ub2tlbkxp
c3QmIEVsZW1lbnQ6OmNsYXNzTGlzdCgpCiB7CiAgICAgRWxlbWVudFJhcmVEYXRhJiBkYXRhID0g
ZW5zdXJlRWxlbWVudFJhcmVEYXRhKCk7CiAgICAgaWYgKCFkYXRhLmNsYXNzTGlzdCgpKQogICAg
ICAgICBkYXRhLnNldENsYXNzTGlzdChzdGQ6Om1ha2VfdW5pcXVlPENsYXNzTGlzdD4oKnRoaXMp
KTsKLSAgICByZXR1cm4gZGF0YS5jbGFzc0xpc3QoKTsKKyAgICByZXR1cm4gKmRhdGEuY2xhc3NM
aXN0KCk7CiB9CiAKLURhdGFzZXRET01TdHJpbmdNYXAqIEVsZW1lbnQ6OmRhdGFzZXQoKQorRGF0
YXNldERPTVN0cmluZ01hcCYgRWxlbWVudDo6ZGF0YXNldCgpCiB7CiAgICAgRWxlbWVudFJhcmVE
YXRhJiBkYXRhID0gZW5zdXJlRWxlbWVudFJhcmVEYXRhKCk7CiAgICAgaWYgKCFkYXRhLmRhdGFz
ZXQoKSkKICAgICAgICAgZGF0YS5zZXREYXRhc2V0KHN0ZDo6bWFrZV91bmlxdWU8RGF0YXNldERP
TVN0cmluZ01hcD4oKnRoaXMpKTsKLSAgICByZXR1cm4gZGF0YS5kYXRhc2V0KCk7CisgICAgcmV0
dXJuICpkYXRhLmRhdGFzZXQoKTsKIH0KIAogVVJMIEVsZW1lbnQ6OmdldFVSTEF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggMWUz
N2VlY2NmZmE4NzAyOTkwZDdmNzQ3M2RlMGVhYTJlYjk2ODliNy4uZjZjMjAxZDhjMzY3OTU4YzM0
MmZlYjFkZmE2ODEwNzNiZDViNTZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC00NTQsOSArNDU0
LDkgQEAgcHVibGljOgogICAgIGJvb2wgbWF0Y2hlcyhjb25zdCBTdHJpbmcmIHNlbGVjdG9ycywg
RXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRBcHBlYXJJbmRldGVybWlu
YXRlKCkgY29uc3Q7CiAKLSAgICBET01Ub2tlbkxpc3QqIGNsYXNzTGlzdCgpOworICAgIERPTVRv
a2VuTGlzdCYgY2xhc3NMaXN0KCk7CiAKLSAgICBEYXRhc2V0RE9NU3RyaW5nTWFwKiBkYXRhc2V0
KCk7CisgICAgRGF0YXNldERPTVN0cmluZ01hcCYgZGF0YXNldCgpOwogCiAjaWYgRU5BQkxFKFZJ
REVPKQogICAgIHZpcnR1YWwgYm9vbCBpc01lZGlhRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xFbGVtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xF
bGVtZW50cy5jcHAKaW5kZXggMzY2Yjk1YWY4NjBjYzNiNjZhOWFlNTkwOTIwOTgyN2Y3MjM3Mjc1
NC4uYTkyYjg3MjIwZDhlMDliOWVkNWMyODljNGI3NDYxYTExOWQ3MzM4NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcApAQCAt
MTY5LDcgKzE2OSw3IEBAIHZvaWQgTWVkaWFDb250cm9sUGFuZWxFbGVtZW50OjpzZXRQb3NpdGlv
bihjb25zdCBMYXlvdXRQb2ludCYgcG9zaXRpb24pCiAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0
eShDU1NQcm9wZXJ0eU1hcmdpbkxlZnQsIDAuMCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7
CiAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmdpblRvcCwgMC4wLCBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKIAotICAgIGNsYXNzTGlzdCgpLT5hZGQoImRyYWdn
ZWQiLCBJR05PUkVfRVhDRVBUSU9OKTsKKyAgICBjbGFzc0xpc3QoKS5hZGQoImRyYWdnZWQiLCBJ
R05PUkVfRVhDRVBUSU9OKTsKIH0KIAogdm9pZCBNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQ6OnJl
c2V0UG9zaXRpb24oKQpAQCAtMTc5LDcgKzE3OSw3IEBAIHZvaWQgTWVkaWFDb250cm9sUGFuZWxF
bGVtZW50OjpyZXNldFBvc2l0aW9uKCkKICAgICByZW1vdmVJbmxpbmVTdHlsZVByb3BlcnR5KENT
U1Byb3BlcnR5TWFyZ2luTGVmdCk7CiAgICAgcmVtb3ZlSW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQ
cm9wZXJ0eU1hcmdpblRvcCk7CiAKLSAgICBjbGFzc0xpc3QoKS0+cmVtb3ZlKCJkcmFnZ2VkIiwg
SUdOT1JFX0VYQ0VQVElPTik7CisgICAgY2xhc3NMaXN0KCkucmVtb3ZlKCJkcmFnZ2VkIiwgSUdO
T1JFX0VYQ0VQVElPTik7CiAKICAgICBtX2N1bXVsYXRpdmVEcmFnT2Zmc2V0LnNldFgoMCk7CiAg
ICAgbV9jdW11bGF0aXZlRHJhZ09mZnNldC5zZXRZKDApOwpAQCAtNzY0LDI0ICs3NjQsMjQgQEAg
dm9pZCBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ6OnVwZGF0ZURp
c3BsYXkoKQogCiAgICAgICAgIGlmICh0ZXh0VHJhY2sgPT0gVGV4dFRyYWNrOjpjYXB0aW9uTWVu
dUF1dG9tYXRpY0l0ZW0oKSkgewogICAgICAgICAgICAgaWYgKGRpc3BsYXlNb2RlID09IENhcHRp
b25Vc2VyUHJlZmVyZW5jZXM6OkF1dG9tYXRpYykKLSAgICAgICAgICAgICAgICB0cmFja0l0ZW0t
PmNsYXNzTGlzdCgpLT5hZGQoc2VsZWN0ZWRDbGFzc1ZhbHVlLCBBU1NFUlRfTk9fRVhDRVBUSU9O
KTsKKyAgICAgICAgICAgICAgICB0cmFja0l0ZW0tPmNsYXNzTGlzdCgpLmFkZChzZWxlY3RlZENs
YXNzVmFsdWUsIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgIHRyYWNrSXRlbS0+Y2xhc3NMaXN0KCktPnJlbW92ZShzZWxlY3RlZENsYXNzVmFs
dWUsIEFTU0VSVF9OT19FWENFUFRJT04pOworICAgICAgICAgICAgICAgIHRyYWNrSXRlbS0+Y2xh
c3NMaXN0KCkucmVtb3ZlKHNlbGVjdGVkQ2xhc3NWYWx1ZSwgQVNTRVJUX05PX0VYQ0VQVElPTik7
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChkaXNwbGF5
TW9kZSAhPSBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpBdXRvbWF0aWMgJiYgdGV4dFRyYWNrLT5t
b2RlKCkgPT0gVGV4dFRyYWNrOjpzaG93aW5nS2V5d29yZCgpKSB7CiAgICAgICAgICAgICB0cmFj
a01lbnVJdGVtU2VsZWN0ZWQgPSB0cnVlOwotICAgICAgICAgICAgdHJhY2tJdGVtLT5jbGFzc0xp
c3QoKS0+YWRkKHNlbGVjdGVkQ2xhc3NWYWx1ZSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAg
ICAgICAgICB0cmFja0l0ZW0tPmNsYXNzTGlzdCgpLmFkZChzZWxlY3RlZENsYXNzVmFsdWUsIEFT
U0VSVF9OT19FWENFUFRJT04pOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHRyYWNrSXRl
bS0+Y2xhc3NMaXN0KCktPnJlbW92ZShzZWxlY3RlZENsYXNzVmFsdWUsIEFTU0VSVF9OT19FWENF
UFRJT04pOworICAgICAgICAgICAgdHJhY2tJdGVtLT5jbGFzc0xpc3QoKS5yZW1vdmUoc2VsZWN0
ZWRDbGFzc1ZhbHVlLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICB9CiAKICAgICBpZiAob2Zm
TWVudUl0ZW0pIHsKICAgICAgICAgaWYgKGRpc3BsYXlNb2RlID09IENhcHRpb25Vc2VyUHJlZmVy
ZW5jZXM6OkZvcmNlZE9ubHkgJiYgIXRyYWNrTWVudUl0ZW1TZWxlY3RlZCkKLSAgICAgICAgICAg
IG9mZk1lbnVJdGVtLT5jbGFzc0xpc3QoKS0+YWRkKHNlbGVjdGVkQ2xhc3NWYWx1ZSwgQVNTRVJU
X05PX0VYQ0VQVElPTik7CisgICAgICAgICAgICBvZmZNZW51SXRlbS0+Y2xhc3NMaXN0KCkuYWRk
KHNlbGVjdGVkQ2xhc3NWYWx1ZSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgIG9mZk1lbnVJdGVtLT5jbGFzc0xpc3QoKS0+cmVtb3ZlKHNlbGVjdGVkQ2xh
c3NWYWx1ZSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAgICAgICAgICBvZmZNZW51SXRlbS0+
Y2xhc3NMaXN0KCkucmVtb3ZlKHNlbGVjdGVkQ2xhc3NWYWx1ZSwgQVNTRVJUX05PX0VYQ0VQVElP
Tik7CiAgICAgfQogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1ZUVFJlZ2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVFJlZ2lvbi5j
cHAKaW5kZXggNDg5NmUyMzczNmFiNzcxYmYxZTc2YTJmZmFhOWYyNGQzMzY1OGU0ZC4uNmZiNWFh
ZGIwNzQ4MzIwM2I5MmQ4MzEwZGNjNzg2N2RlMTMwMTI1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9WVFRSZWdpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVlRUUmVnaW9uLmNwcApAQCAtMzY4LDcgKzM2OCw3IEBAIHZvaWQgVlRUUmVnaW9uOjpk
aXNwbGF5TGFzdFRleHRUcmFja0N1ZUJveCgpCiAKICAgICAvLyBJZiBpdCdzIGEgc2Nyb2xsaW5n
IHJlZ2lvbiwgYWRkIHRoZSBzY3JvbGxpbmcgY2xhc3MuCiAgICAgaWYgKGlzU2Nyb2xsaW5nUmVn
aW9uKCkpCi0gICAgICAgIG1fY3VlQ29udGFpbmVyLT5jbGFzc0xpc3QoKS0+YWRkKHRleHRUcmFj
a0N1ZUNvbnRhaW5lclNjcm9sbGluZ0NsYXNzKCksIElHTk9SRV9FWENFUFRJT04pOworICAgICAg
ICBtX2N1ZUNvbnRhaW5lci0+Y2xhc3NMaXN0KCkuYWRkKHRleHRUcmFja0N1ZUNvbnRhaW5lclNj
cm9sbGluZ0NsYXNzKCksIElHTk9SRV9FWENFUFRJT04pOwogCiAgICAgZmxvYXQgcmVnaW9uQm90
dG9tID0gbV9yZWdpb25EaXNwbGF5VHJlZS0+Z2V0Qm91bmRpbmdDbGllbnRSZWN0KCktPmJvdHRv
bSgpOwogCkBAIC0zOTgsNyArMzk4LDcgQEAgdm9pZCBWVFRSZWdpb246OndpbGxSZW1vdmVUZXh0
VHJhY2tDdWVCb3goVlRUQ3VlQm94KiBib3gpCiAKICAgICBkb3VibGUgYm94SGVpZ2h0ID0gYm94
LT5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS0+Ym90dG9tKCkgLSBib3gtPmdldEJvdW5kaW5nQ2xp
ZW50UmVjdCgpLT50b3AoKTsKIAotICAgIG1fY3VlQ29udGFpbmVyLT5jbGFzc0xpc3QoKS0+cmVt
b3ZlKHRleHRUcmFja0N1ZUNvbnRhaW5lclNjcm9sbGluZ0NsYXNzKCksIElHTk9SRV9FWENFUFRJ
T04pOworICAgIG1fY3VlQ29udGFpbmVyLT5jbGFzc0xpc3QoKS5yZW1vdmUodGV4dFRyYWNrQ3Vl
Q29udGFpbmVyU2Nyb2xsaW5nQ2xhc3MoKSwgSUdOT1JFX0VYQ0VQVElPTik7CiAKICAgICBtX2N1
cnJlbnRUb3AgKz0gYm94SGVpZ2h0OwogICAgIG1fY3VlQ29udGFpbmVyLT5zZXRJbmxpbmVTdHls
ZVByb3BlcnR5KENTU1Byb3BlcnR5VG9wLCBtX2N1cnJlbnRUb3AsIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfUFgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNTU0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2Vu
dC5jcHAKaW5kZXggOWY1NDhmNzY0NWNmNGY0MjZiODAyZTg0MzU4MjhlZDY0MDk2OGZmNy4uZjVj
YWRiZmIxN2FlZGFhZDhkY2MwMDMxMjg0OTAwY2RkYTFlNTg5YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC02ODEsOSArNjgxLDkgQEAg
dm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0QWxsU3R5bGVTaGVldHMoRXJyb3JTdHJpbmcqLCBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2MKICAgICBzdHlsZUluZm9zID0gSW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVy
Pjo6Y3JlYXRlKCk7CiAgICAgVmVjdG9yPERvY3VtZW50Kj4gZG9jdW1lbnRzID0gbV9kb21BZ2Vu
dC0+ZG9jdW1lbnRzKCk7CiAgICAgZm9yIChWZWN0b3I8RG9jdW1lbnQqPjo6aXRlcmF0b3IgaXQg
PSBkb2N1bWVudHMuYmVnaW4oKTsgaXQgIT0gZG9jdW1lbnRzLmVuZCgpOyArK2l0KSB7Ci0gICAg
ICAgIFN0eWxlU2hlZXRMaXN0KiBsaXN0ID0gKCppdCktPnN0eWxlU2hlZXRzKCk7Ci0gICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsaXN0LT5sZW5ndGgoKTsgKytpKSB7Ci0gICAgICAg
ICAgICBTdHlsZVNoZWV0JiBzdHlsZVNoZWV0ID0gKmxpc3QtPml0ZW0oaSk7CisgICAgICAgIFN0
eWxlU2hlZXRMaXN0JiBsaXN0ID0gKCppdCktPnN0eWxlU2hlZXRzKCk7CisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgICAgIFN0
eWxlU2hlZXQmIHN0eWxlU2hlZXQgPSAqbGlzdC5pdGVtKGkpOwogICAgICAgICAgICAgaWYgKHN0
eWxlU2hlZXQuaXNDU1NTdHlsZVNoZWV0KCkpCiAgICAgICAgICAgICAgICAgY29sbGVjdFN0eWxl
U2hlZXRzKCZ0b0NTU1N0eWxlU2hlZXQoc3R5bGVTaGVldCksIHN0eWxlSW5mb3MuZ2V0KCkpOwog
ICAgICAgICB9CkBAIC04NjIsNyArODYyLDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0
TmFtZWRGbG93Q29sbGVjdGlvbihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBkb2MKIAog
ICAgIG1fbmFtZWRGbG93Q29sbGVjdGlvbnNSZXF1ZXN0ZWQuYWRkKGRvY3VtZW50Tm9kZUlkKTsK
IAotICAgIFZlY3RvcjxSZWZQdHI8V2ViS2l0TmFtZWRGbG93Pj4gbmFtZWRGbG93c1ZlY3RvciA9
IGRvY3VtZW50LT5uYW1lZEZsb3dzKCktPm5hbWVkRmxvd3MoKTsKKyAgICBWZWN0b3I8UmVmUHRy
PFdlYktpdE5hbWVkRmxvdz4+IG5hbWVkRmxvd3NWZWN0b3IgPSBkb2N1bWVudC0+bmFtZWRGbG93
cygpLm5hbWVkRmxvd3MoKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8
SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpOYW1lZEZsb3c+PiBuYW1lZEZsb3dzID0gSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpOYW1lZEZsb3c+
OjpjcmVhdGUoKTsKIAogICAgIGZvciAoVmVjdG9yPFJlZlB0cjxXZWJLaXROYW1lZEZsb3c+Pjo6
aXRlcmF0b3IgaXQgPSBuYW1lZEZsb3dzVmVjdG9yLmJlZ2luKCk7IGl0ICE9IG5hbWVkRmxvd3NW
ZWN0b3IuZW5kKCk7ICsraXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZv
cm1hbmNlVGltaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VUaW1pbmcu
Y3BwCmluZGV4IGJkNzU0MGE0YmE0YTBiNjk1MTcyMzZiNmU2N2MzMzFkZTk3Y2MzMjAuLmJiZDE0
OGQzZmY1MjYyYzQ5YzI4OGVjYjY3ZmQwMTkwYzZhNTgwMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGVyZm9ybWFuY2VUaW1pbmcuY3BwCkBAIC0zMTksNyArMzE5LDcgQEAgY29uc3QgRG9jdW1l
bnRUaW1pbmcqIFBlcmZvcm1hbmNlVGltaW5nOjpkb2N1bWVudFRpbWluZygpIGNvbnN0CiAgICAg
aWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gZG9jdW1lbnQt
PnRpbWluZygpOworICAgIHJldHVybiAmZG9jdW1lbnQtPnRpbWluZygpOwogfQogCiBEb2N1bWVu
dExvYWRUaW1pbmcqIFBlcmZvcm1hbmNlVGltaW5nOjpkb2N1bWVudExvYWRUaW1pbmcoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb3dUaHJlYWRDb250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG93VGhyZWFkQ29udHJvbGxlci5j
cHAKaW5kZXggNDhkNGViZTA5N2QyYjlhYWQzYzgxNTc5MzUyYmQ2YzY4OTVlMGYwYy4uMmNmYTQy
ODNjNzlmOWI1ZWVhM2UxNzhhZDEyMmRjOGI2OWZiYjlhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0Zsb3dUaHJlYWRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvRmxvd1RocmVhZENvbnRyb2xsZXIuY3BwCkBAIC02MywxMiArNjMsMTIg
QEAgUmVuZGVyTmFtZWRGbG93VGhyZWFkJiBGbG93VGhyZWFkQ29udHJvbGxlcjo6ZW5zdXJlUmVu
ZGVyRmxvd1RocmVhZFdpdGhOYW1lKGNvbnMKICAgICAgICAgfQogICAgIH0KIAotICAgIE5hbWVk
Rmxvd0NvbGxlY3Rpb24qIG5hbWVkRmxvd3MgPSBtX3ZpZXctPmRvY3VtZW50KCkubmFtZWRGbG93
cygpOworICAgIE5hbWVkRmxvd0NvbGxlY3Rpb24mIG5hbWVkRmxvd3MgPSBtX3ZpZXctPmRvY3Vt
ZW50KCkubmFtZWRGbG93cygpOwogCiAgICAgLy8gU2FuaXR5IGNoZWNrIGZvciB0aGUgYWJzZW5j
ZSBvZiBhIG5hbWVkIGZsb3cgaW4gdGhlICJDUkVBVEVEIiBzdGF0ZSB3aXRoIHRoZSBzYW1lIG5h
bWUuCi0gICAgQVNTRVJUKCFuYW1lZEZsb3dzLT5mbG93QnlOYW1lKG5hbWUpKTsKKyAgICBBU1NF
UlQoIW5hbWVkRmxvd3MuZmxvd0J5TmFtZShuYW1lKSk7CiAKLSAgICBhdXRvIGZsb3dSZW5kZXJl
ciA9IG5ldyBSZW5kZXJOYW1lZEZsb3dUaHJlYWQobV92aWV3LT5kb2N1bWVudCgpLCBSZW5kZXJG
bG93VGhyZWFkOjpjcmVhdGVGbG93VGhyZWFkU3R5bGUoJm1fdmlldy0+c3R5bGUoKSksIG5hbWVk
Rmxvd3MtPmVuc3VyZUZsb3dXaXRoTmFtZShuYW1lKSk7CisgICAgYXV0byBmbG93UmVuZGVyZXIg
PSBuZXcgUmVuZGVyTmFtZWRGbG93VGhyZWFkKG1fdmlldy0+ZG9jdW1lbnQoKSwgUmVuZGVyRmxv
d1RocmVhZDo6Y3JlYXRlRmxvd1RocmVhZFN0eWxlKCZtX3ZpZXctPnN0eWxlKCkpLCBuYW1lZEZs
b3dzLmVuc3VyZUZsb3dXaXRoTmFtZShuYW1lKSk7CiAgICAgZmxvd1JlbmRlcmVyLT5pbml0aWFs
aXplU3R5bGUoKTsKICAgICBtX3JlbmRlck5hbWVkRmxvd1RocmVhZExpc3QtPmFkZChmbG93UmVu
ZGVyZXIpOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>