<?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>52840</bug_id>
          
          <creation_ts>2011-01-20 13:27:58 -0800</creation_ts>
          <short_desc>When marking conservatively, guard against reviving dead objects.</short_desc>
          <delta_ts>2011-01-20 20:07:45 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>337556</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-01-20 13:27:58 -0800</bug_when>
    <thetext>When marking conservatively, guard against reviving dead objects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337557</commentid>
    <comment_count>1</comment_count>
      <attachid>79645</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-01-20 13:28:21 -0800</bug_when>
    <thetext>Created attachment 79645
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337694</commentid>
    <comment_count>2</comment_count>
      <attachid>79663</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-01-20 16:17:11 -0800</bug_when>
    <thetext>Created attachment 79663
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337699</commentid>
    <comment_count>3</comment_count>
      <attachid>79663</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-01-20 16:29:12 -0800</bug_when>
    <thetext>Comment on attachment 79663
Patch

r=me assuming no perf impact</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337834</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-01-20 20:07:45 -0800</bug_when>
    <thetext>Committed r76331: &lt;http://trac.webkit.org/changeset/76331&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79645</attachid>
            <date>2011-01-20 13:28:21 -0800</date>
            <delta_ts>2011-01-20 16:17:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52840-20110120132820.patch</filename>
            <type>text/plain</type>
            <size>18005</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNzYyNzMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTQgQEAK
KzIwMTEtMDEtMjAgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIG1hcmtpbmcgY29u
c2VydmF0aXZlbHksIGd1YXJkIGFnYWluc3QgcmV2aXZpbmcgZGVhZCBvYmplY3RzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI4NDAKKworICAgICAg
ICAqIGludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5oOgorICAgICAgICAoSlNDOjpSZWdpc3RlckZp
bGU6Om1hcmtDYWxsRnJhbWVzKTogVXBkYXRlZCB0byB1c2UgdGhlIENvbnNlcnZhdGl2ZVNldCBB
UEkuCisKKyAgICAgICAgKiBydW50aW1lL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpy
ZWNvcmRFeHRyYUNvc3QpOiBObyBuZWVkIHRvIGd1YXJkIGFnYWluc3QgY29uc2VydmF0aXZlCisg
ICAgICAgIG1hcmtpbmcgcmV2aXZpbmcgZGVhZCBvYmplY3RzIGFueW1vcmUsIHNpbmNlIHRoZSBj
b25zZXJ2YXRpdmUgbWFya2luZworICAgICAgICBtZWNoYW5pc20gZ3VhcmRzIGFnYWluc3QgdGhp
cyBub3cuCisKKyAgICAgICAgKEpTQzo6SGVhcDo6bWFya0NvbnNlcnZhdGl2ZWx5KToKKyAgICAg
ICAgKEpTQzo6SGVhcDo6bWFya1Byb3RlY3RlZE9iamVjdHMpOgorICAgICAgICAoSlNDOjpIZWFw
OjptYXJrVGVtcFNvcnRWZWN0b3JzKTogRG9uJ3QgZHJhaW4gdGhlIG1hcmsgc3RhY2sgaW5zaWRl
IGEKKyAgICAgICAgbWFya2luZyBmdW5jdGlvbi4gV2Ugd2FudCB0byBlc3RhYmxpc2ggYSBzZXBh
cmF0aW9uIG9mIGNvbmNlcm5zIGJldHdlZW4KKyAgICAgICAgdmlzaXRpbmcgcm9vdHMgYW5kIGRy
YWluaW5nIHRoZSBtYXJrIHN0YWNrLgorCisgICAgICAgIChKU0M6OkhlYXA6Om1hcmtSb290cyk6
IEdhdGhlciB0aGUgc2V0IG9mIGNvbnNlcnZhdGl2ZSByZWZlcmVuY2VzIGJlZm9yZQorICAgICAg
ICBjbGVhcm5pbmcgbWFyayBiaXRzLCBiZWNhdXNlIGNvbnNlcnZhdGl2ZSBtYXJraW5nIG5vdyB1
c2VzIHRoZSBtYXJrIGJpdHMKKyAgICAgICAgdG8gZGV0ZXJtaW5lIGlmIGEgcmVmZXJlbmNlIGlz
IHZhbGlkLCBhbmQgYXZvaWQgcmV2aXZpbmcgZGVhZCBvYmplY3RzLgorCisgICAgICAgIChKU0M6
OkhlYXA6OmNvbGxlY3RBbGxHYXJiYWdlKTogTm8gbmVlZCB0byBndWFyZCBhZ2FpbnN0IGNvbnNl
cnZhdGl2ZQorICAgICAgICBtYXJraW5nIHJldml2aW5nIGRlYWQgb2JqZWN0cyBhbnltb3JlLCBz
aW5jZSB0aGUgY29uc2VydmF0aXZlIG1hcmtpbmcKKyAgICAgICAgbWVjaGFuaXNtIGd1YXJkcyBh
Z2FpbnN0IHRoaXMgbm93LgorCisgICAgICAgICogcnVudGltZS9IZWFwLmg6IFVwZGF0ZWQgdG8g
dXNlIHRoZSBDb25zZXJ2YXRpdmVTZXQgQVBJLgorCisgICAgICAgICogcnVudGltZS9NYWNoaW5l
U3RhY2tNYXJrZXIuY3BwOgorICAgICAgICAoSlNDOjpNYWNoaW5lU3RhY2tNYXJrZXI6Om1hcmtD
dXJyZW50VGhyZWFkQ29uc2VydmF0aXZlbHlJbnRlcm5hbCk6CisgICAgICAgIChKU0M6Ok1hY2hp
bmVTdGFja01hcmtlcjo6bWFya0N1cnJlbnRUaHJlYWRDb25zZXJ2YXRpdmVseSk6CisgICAgICAg
IChKU0M6Ok1hY2hpbmVTdGFja01hcmtlcjo6bWFya090aGVyVGhyZWFkQ29uc2VydmF0aXZlbHkp
OgorICAgICAgICAoSlNDOjpNYWNoaW5lU3RhY2tNYXJrZXI6Om1hcmtNYWNoaW5lU3RhY2tDb25z
ZXJ2YXRpdmVseSk6CisgICAgICAgICogcnVudGltZS9NYWNoaW5lU3RhY2tNYXJrZXIuaDogRGl0
dG8uCisKKyAgICAgICAgKiBydW50aW1lL01hcmtTdGFjay5oOgorICAgICAgICAoSlNDOjpDb25z
ZXJ2YXRpdmVTZXQ6OmFkZCk6CisgICAgICAgIChKU0M6OkNvbnNlcnZhdGl2ZVNldDo6bWFyayk6
IEFkZGVkIENvbnNlcnZhdGl2ZVNldCwgZm9yIGdhdGhlcmluZyB0aGUKKyAgICAgICAgc2V0IG9m
IGNvbnNlcnZhdGl2ZSByZWZlcmVuY2VzLiBUaGlzIGlzIGRpZmZlcmVudCBmcm9tIE1hcmtTdGFj
aywgc2luY2UKKyAgICAgICAgd2UgZG9uJ3QgbWFyayB0aGUgc2V0IHVudGlsIGl0IGlzIGNvbXBs
ZXRlbHkgZ2F0aGVyZWQuCisKKyAgICAgICAgKiBydW50aW1lL01hcmtlZFNwYWNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmZyZWVCbG9jayk6CisgICAgICAgIChKU0M6Ok1hcmtl
ZFNwYWNlOjpyZXNpemVCbG9ja3MpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6bWFya0Nv
bnNlcnZhdGl2ZWx5KToKKyAgICAgICAgKiBydW50aW1lL01hcmtlZFNwYWNlLmg6IFdoZW4gbWFy
a2luZyBjb25zZXJ2YXRpdmVseSwgZ3VhcmQgYWdhaW5zdAorICAgICAgICByZXZpdmluZyBkZWFk
IG9iamVjdHMuCisKIDIwMTEtMDEtMjAgIEFuZHJhcyBCZWNzaSAgPGFiZWNzaUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IENzYWJhIE9zenRyb2dvbsOhYy4KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3RlckZpbGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmgJKHJldmlz
aW9uIDc2MTkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVy
RmlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzEsNyArMTMxLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICAgICAgUmVnaXN0ZXIqIGxhc3RHbG9iYWwoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0
IC0gbV9udW1HbG9iYWxzOyB9CiAgICAgICAgIAotICAgICAgICB2b2lkIG1hcmtDYWxsRnJhbWVz
KE1hcmtTdGFjayYgbWFya1N0YWNrLCBIZWFwKiBoZWFwKSB7IGhlYXAtPm1hcmtDb25zZXJ2YXRp
dmVseShtYXJrU3RhY2ssIG1fc3RhcnQsIG1fZW5kKTsgfQorICAgICAgICB2b2lkIG1hcmtDYWxs
RnJhbWVzKENvbnNlcnZhdGl2ZVNldCYgY29uc2VydmF0aXZlU2V0LCBIZWFwKiBoZWFwKSB7IGhl
YXAtPm1hcmtDb25zZXJ2YXRpdmVseShjb25zZXJ2YXRpdmVTZXQsIG1fc3RhcnQsIG1fZW5kKTsg
fQogCiAgICAgICAgIHN0YXRpYyBzaXplX3QgY29tbWl0dGVkQnl0ZUNvdW50KCk7CiAgICAgICAg
IHN0YXRpYyB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0hlYXAuY3BwCShyZXZpc2lvbiA3NjE5MikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MywxMiArOTMsNiBA
QCB2b2lkIEhlYXA6OnJlY29yZEV4dHJhQ29zdChzaXplX3QgY29zdCkKICAgICBpZiAobV9leHRy
YUNvc3QgPiBtYXhFeHRyYUNvc3QgJiYgbV9leHRyYUNvc3QgPiBtX21hcmtlZFNwYWNlLnNpemUo
KSAvIDIpIHsKICAgICAgICAgSkFWQVNDUklQVENPUkVfR0NfQkVHSU4oKTsKIAotICAgICAgICAv
LyBJZiB0aGUgbGFzdCBpdGVyYXRpb24gdGhyb3VnaCB0aGUgaGVhcCBkZWFsbG9jYXRlZCBibG9j
a3MsIHdlIG5lZWQKLSAgICAgICAgLy8gdG8gY2xlYW4gdXAgcmVtYWluaW5nIGdhcmJhZ2UgYmVm
b3JlIG1hcmtpbmcuIE90aGVyd2lzZSwgdGhlIGNvbnNlcnZhdGl2ZQotICAgICAgICAvLyBtYXJr
aW5nIG1lY2hhbmlzbSBtaWdodCBmb2xsb3cgYSBwb2ludGVyIHRvIHVubWFwcGVkIG1lbW9yeS4K
LSAgICAgICAgaWYgKG1fbWFya2VkU3BhY2UuZGlkU2hyaW5rKCkpCi0gICAgICAgICAgICBtX21h
cmtlZFNwYWNlLnN3ZWVwKCk7Ci0KICAgICAgICAgbWFya1Jvb3RzKCk7CiAKICAgICAgICAgSkFW
QVNDUklQVENPUkVfR0NfTUFSS0VEKCk7CkBAIC0xNTIsOSArMTQ2LDkgQEAgdm9pZCogSGVhcDo6
YWxsb2NhdGUoc2l6ZV90IHMpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBIZWFwOjpt
YXJrQ29uc2VydmF0aXZlbHkoTWFya1N0YWNrJiBtYXJrU3RhY2ssIHZvaWQqIHN0YXJ0LCB2b2lk
KiBlbmQpCit2b2lkIEhlYXA6Om1hcmtDb25zZXJ2YXRpdmVseShDb25zZXJ2YXRpdmVTZXQmIGNv
bnNlcnZhdGl2ZVNldCwgdm9pZCogc3RhcnQsIHZvaWQqIGVuZCkKIHsKLSAgICBtX21hcmtlZFNw
YWNlLm1hcmtDb25zZXJ2YXRpdmVseShtYXJrU3RhY2ssIHN0YXJ0LCBlbmQpOworICAgIG1fbWFy
a2VkU3BhY2UubWFya0NvbnNlcnZhdGl2ZWx5KGNvbnNlcnZhdGl2ZVNldCwgc3RhcnQsIGVuZCk7
CiB9CiAKIHZvaWQgSGVhcDo6dXBkYXRlV2Vha0dDSGFuZGxlcygpCkBAIC0yMTIsMTAgKzIwNiw4
IEBAIGJvb2wgSGVhcDo6dW5wcm90ZWN0KEpTVmFsdWUgaykKIHZvaWQgSGVhcDo6bWFya1Byb3Rl
Y3RlZE9iamVjdHMoTWFya1N0YWNrJiBtYXJrU3RhY2spCiB7CiAgICAgUHJvdGVjdENvdW50U2V0
OjppdGVyYXRvciBlbmQgPSBtX3Byb3RlY3RlZFZhbHVlcy5lbmQoKTsKLSAgICBmb3IgKFByb3Rl
Y3RDb3VudFNldDo6aXRlcmF0b3IgaXQgPSBtX3Byb3RlY3RlZFZhbHVlcy5iZWdpbigpOyBpdCAh
PSBlbmQ7ICsraXQpIHsKKyAgICBmb3IgKFByb3RlY3RDb3VudFNldDo6aXRlcmF0b3IgaXQgPSBt
X3Byb3RlY3RlZFZhbHVlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCiAgICAgICAgIG1hcmtT
dGFjay5hcHBlbmQoaXQtPmZpcnN0KTsKLSAgICAgICAgbWFya1N0YWNrLmRyYWluKCk7Ci0gICAg
fQogfQogCiB2b2lkIEhlYXA6OnB1c2hUZW1wU29ydFZlY3RvcihWZWN0b3I8VmFsdWVTdHJpbmdQ
YWlyPiogdGVtcFZlY3RvcikKQEAgLTIzOCwxMCArMjMwLDEwIEBAIHZvaWQgSGVhcDo6bWFya1Rl
bXBTb3J0VmVjdG9ycyhNYXJrU3RhY2sKICAgICAgICAgVmVjdG9yPFZhbHVlU3RyaW5nUGFpcj4q
IHRlbXBTb3J0aW5nVmVjdG9yID0gKml0OwogCiAgICAgICAgIFZlY3RvcjxWYWx1ZVN0cmluZ1Bh
aXI+OjppdGVyYXRvciB2ZWN0b3JFbmQgPSB0ZW1wU29ydGluZ1ZlY3Rvci0+ZW5kKCk7Ci0gICAg
ICAgIGZvciAoVmVjdG9yPFZhbHVlU3RyaW5nUGFpcj46Oml0ZXJhdG9yIHZlY3Rvckl0ID0gdGVt
cFNvcnRpbmdWZWN0b3ItPmJlZ2luKCk7IHZlY3Rvckl0ICE9IHZlY3RvckVuZDsgKyt2ZWN0b3JJ
dCkKKyAgICAgICAgZm9yIChWZWN0b3I8VmFsdWVTdHJpbmdQYWlyPjo6aXRlcmF0b3IgdmVjdG9y
SXQgPSB0ZW1wU29ydGluZ1ZlY3Rvci0+YmVnaW4oKTsgdmVjdG9ySXQgIT0gdmVjdG9yRW5kOyAr
K3ZlY3Rvckl0KSB7CiAgICAgICAgICAgICBpZiAodmVjdG9ySXQtPmZpcnN0KQogICAgICAgICAg
ICAgICAgIG1hcmtTdGFjay5hcHBlbmQodmVjdG9ySXQtPmZpcnN0KTsKLSAgICAgICAgbWFya1N0
YWNrLmRyYWluKCk7CisgICAgICAgIH0KICAgICB9CiB9CiAgICAgCkBAIC0yNjAsMjAgKzI1Miwy
NyBAQCB2b2lkIEhlYXA6Om1hcmtSb290cygpCiAKICAgICBtX29wZXJhdGlvbkluUHJvZ3Jlc3Mg
PSBDb2xsZWN0aW9uOwogCi0gICAgTWFya1N0YWNrJiBtYXJrU3RhY2sgPSBtX2dsb2JhbERhdGEt
Pm1hcmtTdGFjazsKKyAgICAvLyBXZSBnYXRoZXIgdGhlIGNvbnNlcnZhdGl2ZSBzZXQgYmVmb3Jl
IGNsZWFyaW5nIG1hcmsgYml0cywgYmVjYXVzZQorICAgIC8vIGNvbnNlcnZhdGl2ZSBnYXRoZXJp
bmcgdXNlcyB0aGUgbWFyayBiaXRzIGZyb20gb3VyIGxhc3QgbWFyayBwYXNzIHRvCisgICAgLy8g
ZGV0ZXJtaW5lIHdoZXRoZXIgYSByZWZlcmVuY2UgaXMgdmFsaWQuCisgICAgQ29uc2VydmF0aXZl
U2V0IGNvbnNlcnZhdGl2ZVNldDsKKyAgICBtX21hY2hpbmVTdGFja01hcmtlci5tYXJrTWFjaGlu
ZVN0YWNrQ29uc2VydmF0aXZlbHkoY29uc2VydmF0aXZlU2V0KTsKKyAgICBtX2dsb2JhbERhdGEt
PmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKS5tYXJrQ2FsbEZyYW1lcyhjb25zZXJ2YXRpdmVT
ZXQsIHRoaXMpOwogCiAgICAgLy8gUmVzZXQgbWFyayBiaXRzLgogICAgIG1fbWFya2VkU3BhY2Uu
Y2xlYXJNYXJrQml0cygpOwogCi0gICAgLy8gTWFyayBzdGFjayByb290cy4KLSAgICBtX21hY2hp
bmVTdGFja01hcmtlci5tYXJrTWFjaGluZVN0YWNrQ29uc2VydmF0aXZlbHkobWFya1N0YWNrKTsK
LSAgICBtX2dsb2JhbERhdGEtPmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKS5tYXJrQ2FsbEZy
YW1lcyhtYXJrU3RhY2ssIHRoaXMpOworICAgIE1hcmtTdGFjayYgbWFya1N0YWNrID0gbV9nbG9i
YWxEYXRhLT5tYXJrU3RhY2s7CisgICAgY29uc2VydmF0aXZlU2V0Lm1hcmsobWFya1N0YWNrKTsK
KyAgICBtYXJrU3RhY2suZHJhaW4oKTsKIAogICAgIC8vIE1hcmsgZXhwbGljaXRseSByZWdpc3Rl
cmVkIHJvb3RzLgogICAgIG1hcmtQcm90ZWN0ZWRPYmplY3RzKG1hcmtTdGFjayk7CisgICAgbWFy
a1N0YWNrLmRyYWluKCk7CiAgICAgCiAgICAgLy8gTWFyayB0ZW1wb3JhcnkgdmVjdG9yIGZvciBB
cnJheSBzb3J0aW5nCiAgICAgbWFya1RlbXBTb3J0VmVjdG9ycyhtYXJrU3RhY2spOworICAgIG1h
cmtTdGFjay5kcmFpbigpOwogCiAgICAgLy8gTWFyayBtaXNjLiBvdGhlciByb290cy4KICAgICBp
ZiAobV9tYXJrTGlzdFNldCAmJiBtX21hcmtMaXN0U2V0LT5zaXplKCkpCkBAIC0yODIsNiArMjgx
LDcgQEAgdm9pZCBIZWFwOjptYXJrUm9vdHMoKQogICAgICAgICBtYXJrU3RhY2suYXBwZW5kKG1f
Z2xvYmFsRGF0YS0+ZXhjZXB0aW9uKTsKICAgICBpZiAobV9nbG9iYWxEYXRhLT5maXJzdFN0cmlu
Z2lmaWVyVG9NYXJrKQogICAgICAgICBKU09OT2JqZWN0OjptYXJrU3RyaW5naWZpZXJzKG1hcmtT
dGFjaywgbV9nbG9iYWxEYXRhLT5maXJzdFN0cmluZ2lmaWVyVG9NYXJrKTsKKyAgICBtYXJrU3Rh
Y2suZHJhaW4oKTsKIAogICAgIC8vIE1hcmsgdGhlIHNtYWxsIHN0cmluZ3MgY2FjaGUgbGFzdCwg
c2luY2UgaXQgd2lsbCBjbGVhciBpdHNlbGYgaWYgbm90aGluZwogICAgIC8vIGVsc2UgaGFzIG1h
cmtlZCBpdC4KQEAgLTM5MiwxMiArMzkyLDYgQEAgdm9pZCBIZWFwOjpjb2xsZWN0QWxsR2FyYmFn
ZSgpCiAgICAgQVNTRVJUKGdsb2JhbERhdGEoKS0+aWRlbnRpZmllclRhYmxlID09IHd0ZlRocmVh
ZERhdGEoKS5jdXJyZW50SWRlbnRpZmllclRhYmxlKCkpOwogICAgIEpBVkFTQ1JJUFRDT1JFX0dD
X0JFR0lOKCk7CiAKLSAgICAvLyBJZiB0aGUgbGFzdCBpdGVyYXRpb24gdGhyb3VnaCB0aGUgaGVh
cCBkZWFsbG9jYXRlZCBibG9ja3MsIHdlIG5lZWQKLSAgICAvLyB0byBjbGVhbiB1cCByZW1haW5p
bmcgZ2FyYmFnZSBiZWZvcmUgbWFya2luZy4gT3RoZXJ3aXNlLCB0aGUgY29uc2VydmF0aXZlCi0g
ICAgLy8gbWFya2luZyBtZWNoYW5pc20gbWlnaHQgZm9sbG93IGEgcG9pbnRlciB0byB1bm1hcHBl
ZCBtZW1vcnkuCi0gICAgaWYgKG1fbWFya2VkU3BhY2UuZGlkU2hyaW5rKCkpCi0gICAgICAgIG1f
bWFya2VkU3BhY2Uuc3dlZXAoKTsKLQogICAgIG1hcmtSb290cygpOwogCiAgICAgSkFWQVNDUklQ
VENPUkVfR0NfTUFSS0VEKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9I
ZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGVhcC5o
CShyZXZpc2lvbiA3NjE5MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hlYXAu
aAkod29ya2luZyBjb3B5KQpAQCAtODYsNyArODYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
ICAgICBXZWFrR0NIYW5kbGUqIGFkZFdlYWtHQ0hhbmRsZShKU0NlbGwqKTsKIAotICAgICAgICB2
b2lkIG1hcmtDb25zZXJ2YXRpdmVseShNYXJrU3RhY2smLCB2b2lkKiBzdGFydCwgdm9pZCogZW5k
KTsKKyAgICAgICAgdm9pZCBtYXJrQ29uc2VydmF0aXZlbHkoQ29uc2VydmF0aXZlU2V0Jiwgdm9p
ZCogc3RhcnQsIHZvaWQqIGVuZCk7CiAKICAgICAgICAgdm9pZCBwdXNoVGVtcFNvcnRWZWN0b3Io
V1RGOjpWZWN0b3I8VmFsdWVTdHJpbmdQYWlyPiopOwogICAgICAgICB2b2lkIHBvcFRlbXBTb3J0
VmVjdG9yKFdURjo6VmVjdG9yPFZhbHVlU3RyaW5nUGFpcj4qKTsgICAgICAgIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFjaGluZVN0YWNrTWFya2VyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYWNoaW5lU3RhY2tNYXJrZXIu
Y3BwCShyZXZpc2lvbiA3NjE5MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01h
Y2hpbmVTdGFja01hcmtlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NCwxMCArMTk0LDkgQEAg
dm9pZCBNYWNoaW5lU3RhY2tNYXJrZXI6OnVucmVnaXN0ZXJUaHJlYQogCiAjZW5kaWYKIAotdm9p
ZCBORVZFUl9JTkxJTkUgTWFjaGluZVN0YWNrTWFya2VyOjptYXJrQ3VycmVudFRocmVhZENvbnNl
cnZhdGl2ZWx5SW50ZXJuYWwoTWFya1N0YWNrJiBtYXJrU3RhY2spCit2b2lkIE5FVkVSX0lOTElO
RSBNYWNoaW5lU3RhY2tNYXJrZXI6Om1hcmtDdXJyZW50VGhyZWFkQ29uc2VydmF0aXZlbHlJbnRl
cm5hbChDb25zZXJ2YXRpdmVTZXQmIGNvbnNlcnZhdGl2ZVNldCkKIHsKLSAgICBtX2hlYXAtPm1h
cmtDb25zZXJ2YXRpdmVseShtYXJrU3RhY2ssIG1faGVhcC0+Z2xvYmFsRGF0YSgpLT5zdGFjaygp
LmN1cnJlbnQoKSwgbV9oZWFwLT5nbG9iYWxEYXRhKCktPnN0YWNrKCkub3JpZ2luKCkpOwotICAg
IG1hcmtTdGFjay5kcmFpbigpOworICAgIG1faGVhcC0+bWFya0NvbnNlcnZhdGl2ZWx5KGNvbnNl
cnZhdGl2ZVNldCwgbV9oZWFwLT5nbG9iYWxEYXRhKCktPnN0YWNrKCkuY3VycmVudCgpLCBtX2hl
YXAtPmdsb2JhbERhdGEoKS0+c3RhY2soKS5vcmlnaW4oKSk7CiB9CiAKICNpZiBDT01QSUxFUihH
Q0MpCkBAIC0yMDYsNyArMjA1LDcgQEAgdm9pZCBORVZFUl9JTkxJTkUgTWFjaGluZVN0YWNrTWFy
a2VyOjptYQogI2RlZmluZSBSRUdJU1RFUl9CVUZGRVJfQUxJR05NRU5UCiAjZW5kaWYKIAotdm9p
ZCBNYWNoaW5lU3RhY2tNYXJrZXI6Om1hcmtDdXJyZW50VGhyZWFkQ29uc2VydmF0aXZlbHkoTWFy
a1N0YWNrJiBtYXJrU3RhY2spCit2b2lkIE1hY2hpbmVTdGFja01hcmtlcjo6bWFya0N1cnJlbnRU
aHJlYWRDb25zZXJ2YXRpdmVseShDb25zZXJ2YXRpdmVTZXQmIGNvbnNlcnZhdGl2ZVNldCkKIHsK
ICAgICAvLyBzZXRqbXAgZm9yY2VzIHZvbGF0aWxlIHJlZ2lzdGVycyBvbnRvIHRoZSBzdGFjawog
ICAgIGptcF9idWYgcmVnaXN0ZXJzIFJFR0lTVEVSX0JVRkZFUl9BTElHTk1FTlQ7CkBAIC0yMTks
NyArMjE4LDcgQEAgdm9pZCBNYWNoaW5lU3RhY2tNYXJrZXI6Om1hcmtDdXJyZW50VGhyZQogI3By
YWdtYSB3YXJuaW5nKHBvcCkKICNlbmRpZgogCi0gICAgbWFya0N1cnJlbnRUaHJlYWRDb25zZXJ2
YXRpdmVseUludGVybmFsKG1hcmtTdGFjayk7CisgICAgbWFya0N1cnJlbnRUaHJlYWRDb25zZXJ2
YXRpdmVseUludGVybmFsKGNvbnNlcnZhdGl2ZVNldCk7CiB9CiAKICNpZiBFTkFCTEUoSlNDX01V
TFRJUExFX1RIUkVBRFMpCkBAIC0zNTEsNyArMzUwLDcgQEAgc3RhdGljIGlubGluZSB2b2lkKiBv
dGhlclRocmVhZFN0YWNrUG9pbgogI2VuZGlmCiB9CiAKLXZvaWQgTWFjaGluZVN0YWNrTWFya2Vy
OjptYXJrT3RoZXJUaHJlYWRDb25zZXJ2YXRpdmVseShNYXJrU3RhY2smIG1hcmtTdGFjaywgVGhy
ZWFkKiB0aHJlYWQpCit2b2lkIE1hY2hpbmVTdGFja01hcmtlcjo6bWFya090aGVyVGhyZWFkQ29u
c2VydmF0aXZlbHkoQ29uc2VydmF0aXZlU2V0JiBjb25zZXJ2YXRpdmVTZXQsIFRocmVhZCogdGhy
ZWFkKQogewogICAgIHN1c3BlbmRUaHJlYWQodGhyZWFkLT5wbGF0Zm9ybVRocmVhZCk7CiAKQEAg
LTM1OSwyMSArMzU4LDE5IEBAIHZvaWQgTWFjaGluZVN0YWNrTWFya2VyOjptYXJrT3RoZXJUaHJl
YWQKICAgICBzaXplX3QgcmVnU2l6ZSA9IGdldFBsYXRmb3JtVGhyZWFkUmVnaXN0ZXJzKHRocmVh
ZC0+cGxhdGZvcm1UaHJlYWQsIHJlZ3MpOwogCiAgICAgLy8gbWFyayB0aGUgdGhyZWFkJ3MgcmVn
aXN0ZXJzCi0gICAgbV9oZWFwLT5tYXJrQ29uc2VydmF0aXZlbHkobWFya1N0YWNrLCBzdGF0aWNf
Y2FzdDx2b2lkKj4oJnJlZ3MpLCBzdGF0aWNfY2FzdDx2b2lkKj4ocmVpbnRlcnByZXRfY2FzdDxj
aGFyKj4oJnJlZ3MpICsgcmVnU2l6ZSkpOwotICAgIG1hcmtTdGFjay5kcmFpbigpOworICAgIG1f
aGVhcC0+bWFya0NvbnNlcnZhdGl2ZWx5KGNvbnNlcnZhdGl2ZVNldCwgc3RhdGljX2Nhc3Q8dm9p
ZCo+KCZyZWdzKSwgc3RhdGljX2Nhc3Q8dm9pZCo+KHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KCZy
ZWdzKSArIHJlZ1NpemUpKTsKIAogICAgIHZvaWQqIHN0YWNrUG9pbnRlciA9IG90aGVyVGhyZWFk
U3RhY2tQb2ludGVyKHJlZ3MpOwotICAgIG1faGVhcC0+bWFya0NvbnNlcnZhdGl2ZWx5KG1hcmtT
dGFjaywgc3RhY2tQb2ludGVyLCB0aHJlYWQtPnN0YWNrQmFzZSk7Ci0gICAgbWFya1N0YWNrLmRy
YWluKCk7CisgICAgbV9oZWFwLT5tYXJrQ29uc2VydmF0aXZlbHkoY29uc2VydmF0aXZlU2V0LCBz
dGFja1BvaW50ZXIsIHRocmVhZC0+c3RhY2tCYXNlKTsKIAogICAgIHJlc3VtZVRocmVhZCh0aHJl
YWQtPnBsYXRmb3JtVGhyZWFkKTsKIH0KIAogI2VuZGlmCiAKLXZvaWQgTWFjaGluZVN0YWNrTWFy
a2VyOjptYXJrTWFjaGluZVN0YWNrQ29uc2VydmF0aXZlbHkoTWFya1N0YWNrJiBtYXJrU3RhY2sp
Cit2b2lkIE1hY2hpbmVTdGFja01hcmtlcjo6bWFya01hY2hpbmVTdGFja0NvbnNlcnZhdGl2ZWx5
KENvbnNlcnZhdGl2ZVNldCYgY29uc2VydmF0aXZlU2V0KQogewotICAgIG1hcmtDdXJyZW50VGhy
ZWFkQ29uc2VydmF0aXZlbHkobWFya1N0YWNrKTsKKyAgICBtYXJrQ3VycmVudFRocmVhZENvbnNl
cnZhdGl2ZWx5KGNvbnNlcnZhdGl2ZVNldCk7CiAKICNpZiBFTkFCTEUoSlNDX01VTFRJUExFX1RI
UkVBRFMpCiAKQEAgLTM5MSw3ICszODgsNyBAQCB2b2lkIE1hY2hpbmVTdGFja01hcmtlcjo6bWFy
a01hY2hpbmVTdGFjCiAgICAgICAgIC8vIGFuZCBzaW5jZSB0aGlzIGlzIGEgc2hhcmVkIGhlYXAs
IHRoZXkgYXJlIHJlYWwgbG9ja3MuCiAgICAgICAgIGZvciAoVGhyZWFkKiB0aHJlYWQgPSBtX3Jl
Z2lzdGVyZWRUaHJlYWRzOyB0aHJlYWQ7IHRocmVhZCA9IHRocmVhZC0+bmV4dCkgewogICAgICAg
ICAgICAgaWYgKCFwdGhyZWFkX2VxdWFsKHRocmVhZC0+cG9zaXhUaHJlYWQsIHB0aHJlYWRfc2Vs
ZigpKSkKLSAgICAgICAgICAgICAgICBtYXJrT3RoZXJUaHJlYWRDb25zZXJ2YXRpdmVseShtYXJr
U3RhY2ssIHRocmVhZCk7CisgICAgICAgICAgICAgICAgbWFya090aGVyVGhyZWFkQ29uc2VydmF0
aXZlbHkoY29uc2VydmF0aXZlU2V0LCB0aHJlYWQpOwogICAgICAgICB9CiAjaWZuZGVmIE5ERUJV
RwogICAgICAgICBmYXN0TWFsbG9jQWxsb3coKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL01hY2hpbmVTdGFja01hcmtlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01hY2hpbmVTdGFja01hcmtlci5oCShyZXZpc2lvbiA3NjE5MikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hY2hpbmVTdGFja01hcmtlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMiwxNCArMzIsMTQgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
Y2xhc3MgSGVhcDsKLSAgICBjbGFzcyBNYXJrU3RhY2s7CisgICAgY2xhc3MgQ29uc2VydmF0aXZl
U2V0OwogCiAgICAgY2xhc3MgTWFjaGluZVN0YWNrTWFya2VyIDogcHVibGljIE5vbmNvcHlhYmxl
IHsKICAgICBwdWJsaWM6CiAgICAgICAgIE1hY2hpbmVTdGFja01hcmtlcihIZWFwKik7CiAgICAg
ICAgIH5NYWNoaW5lU3RhY2tNYXJrZXIoKTsKIAotICAgICAgICB2b2lkIG1hcmtNYWNoaW5lU3Rh
Y2tDb25zZXJ2YXRpdmVseShNYXJrU3RhY2smKTsKKyAgICAgICAgdm9pZCBtYXJrTWFjaGluZVN0
YWNrQ29uc2VydmF0aXZlbHkoQ29uc2VydmF0aXZlU2V0Jik7CiAKICNpZiBFTkFCTEUoSlNDX01V
TFRJUExFX1RIUkVBRFMpCiAgICAgICAgIHZvaWQgbWFrZVVzYWJsZUZyb21NdWx0aXBsZVRocmVh
ZHMoKTsKQEAgLTQ3LDggKzQ3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKIAogICAgIHBy
aXZhdGU6Ci0gICAgICAgIHZvaWQgbWFya0N1cnJlbnRUaHJlYWRDb25zZXJ2YXRpdmVseShNYXJr
U3RhY2smKTsKLSAgICAgICAgdm9pZCBtYXJrQ3VycmVudFRocmVhZENvbnNlcnZhdGl2ZWx5SW50
ZXJuYWwoTWFya1N0YWNrJik7CisgICAgICAgIHZvaWQgbWFya0N1cnJlbnRUaHJlYWRDb25zZXJ2
YXRpdmVseShDb25zZXJ2YXRpdmVTZXQmKTsKKyAgICAgICAgdm9pZCBtYXJrQ3VycmVudFRocmVh
ZENvbnNlcnZhdGl2ZWx5SW50ZXJuYWwoQ29uc2VydmF0aXZlU2V0Jik7CiAKICNpZiBFTkFCTEUo
SlNDX01VTFRJUExFX1RIUkVBRFMpCiAgICAgICAgIGNsYXNzIFRocmVhZDsKQEAgLTU2LDcgKzU2
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyB2b2lkIHVucmVnaXN0ZXJUaHJl
YWQodm9pZCopOwogCiAgICAgICAgIHZvaWQgdW5yZWdpc3RlclRocmVhZCgpOwotICAgICAgICB2
b2lkIG1hcmtPdGhlclRocmVhZENvbnNlcnZhdGl2ZWx5KE1hcmtTdGFjayYsIFRocmVhZCopOwor
ICAgICAgICB2b2lkIG1hcmtPdGhlclRocmVhZENvbnNlcnZhdGl2ZWx5KENvbnNlcnZhdGl2ZVNl
dCYsIFRocmVhZCopOwogI2VuZGlmCiAKICAgICAgICAgSGVhcCogbV9oZWFwOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFya1N0YWNrLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFya1N0YWNrLmgJKHJldmlzaW9uIDc2MTkyKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFya1N0YWNrLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgTWFya1N0YWNrX2gKIAogI2luY2x1ZGUgIkpT
VmFsdWUuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9PU0FsbG9jYXRvci5oPgogCkBAIC0xODUsNiArMTg2LDIw
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIG1faXNEcmFpbmluZzsKICNlbmRpZgog
ICAgIH07CisgICAgCisgICAgY2xhc3MgQ29uc2VydmF0aXZlU2V0IHsKKyAgICBwdWJsaWM6Cisg
ICAgICAgIHZvaWQgYWRkKEpTQ2VsbCogY2VsbCkgeyBtX3NldC5hZGQoY2VsbCk7IH0KKyAgICAg
ICAgdm9pZCBtYXJrKE1hcmtTdGFjayYgbWFya1N0YWNrKQorICAgICAgICB7CisgICAgICAgICAg
ICBIYXNoU2V0PEpTQ2VsbCo+OjppdGVyYXRvciBlbmQgPSBtX3NldC5lbmQoKTsKKyAgICAgICAg
ICAgIGZvciAoSGFzaFNldDxKU0NlbGwqPjo6aXRlcmF0b3IgaXQgPSBtX3NldC5iZWdpbigpOyBp
dCAhPSBlbmQ7ICsraXQpCisgICAgICAgICAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgqaXQpOwor
ICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBIYXNoU2V0PEpTQ2VsbCo+IG1fc2V0
OworICAgIH07CiB9CiAKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTWFya2VkU3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01hcmtlZFNwYWNlLmNwcAkocmV2aXNpb24gNzYxOTIpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9NYXJrZWRTcGFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw4
ICsxMDgsNiBAQCBORVZFUl9JTkxJTkUgQ29sbGVjdG9yQmxvY2sqIE1hcmtlZFNwYWNlCiAKIE5F
VkVSX0lOTElORSB2b2lkIE1hcmtlZFNwYWNlOjpmcmVlQmxvY2soc2l6ZV90IGJsb2NrKQogewot
ICAgIG1faGVhcC5kaWRTaHJpbmsgPSB0cnVlOwotCiAgICAgT2JqZWN0SXRlcmF0b3IgaXQobV9o
ZWFwLCBibG9jayk7CiAgICAgT2JqZWN0SXRlcmF0b3IgZW5kKG1faGVhcCwgYmxvY2sgKyAxKTsK
ICAgICBmb3IgKCA7IGl0ICE9IGVuZDsgKytpdCkKQEAgLTE2Miw4ICsxNjAsNiBAQCB2b2lkKiBN
YXJrZWRTcGFjZTo6YWxsb2NhdGUoc2l6ZV90IHMpCiAKIHZvaWQgTWFya2VkU3BhY2U6OnJlc2l6
ZUJsb2NrcygpCiB7Ci0gICAgbV9oZWFwLmRpZFNocmluayA9IGZhbHNlOwotCiAgICAgc2l6ZV90
IHVzZWRDZWxsQ291bnQgPSBtYXJrZWRDZWxscygpOwogICAgIHNpemVfdCBtaW5DZWxsQ291bnQg
PSB1c2VkQ2VsbENvdW50ICsgbWF4KEFMTE9DQVRJT05TX1BFUl9DT0xMRUNUSU9OLCB1c2VkQ2Vs
bENvdW50KTsKICAgICBzaXplX3QgbWluQmxvY2tDb3VudCA9IChtaW5DZWxsQ291bnQgKyBIZWFw
Q29uc3RhbnRzOjpjZWxsc1BlckJsb2NrIC0gMSkgLyBIZWFwQ29uc3RhbnRzOjpjZWxsc1BlckJs
b2NrOwpAQCAtMjIyLDcgKzIxOCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1Bvc3NpYmxlQ2Vs
bCh2b2lkKiAKICAgICByZXR1cm4gaXNDZWxsQWxpZ25lZChwKSAmJiBwOwogfQogCi12b2lkIE1h
cmtlZFNwYWNlOjptYXJrQ29uc2VydmF0aXZlbHkoTWFya1N0YWNrJiBtYXJrU3RhY2ssIHZvaWQq
IHN0YXJ0LCB2b2lkKiBlbmQpCit2b2lkIE1hcmtlZFNwYWNlOjptYXJrQ29uc2VydmF0aXZlbHko
Q29uc2VydmF0aXZlU2V0JiBjb25zZXJ2YXRpdmVTZXQsIHZvaWQqIHN0YXJ0LCB2b2lkKiBlbmQp
CiB7CiAjaWYgT1MoV0lOQ0UpCiAgICAgaWYgKHN0YXJ0ID4gZW5kKSB7CkBAIC0yNDQsNyArMjQw
LDYgQEAgdm9pZCBNYXJrZWRTcGFjZTo6bWFya0NvbnNlcnZhdGl2ZWx5KE1hcgogICAgIHdoaWxl
IChwICE9IGUpIHsKICAgICAgICAgY2hhciogeCA9ICpwKys7CiAgICAgICAgIGlmIChpc1Bvc3Np
YmxlQ2VsbCh4KSkgewotICAgICAgICAgICAgc2l6ZV90IHVzZWRCbG9ja3M7CiAgICAgICAgICAg
ICB1aW50cHRyX3QgeEFzQml0cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih4KTsKICAg
ICAgICAgICAgIHhBc0JpdHMgJj0gQ0VMTF9BTElHTl9NQVNLOwogCkBAIC0yNTQsMTEgKzI0OSwz
MCBAQCB2b2lkIE1hcmtlZFNwYWNlOjptYXJrQ29uc2VydmF0aXZlbHkoTWFyCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIENvbGxlY3RvckJsb2NrKiBibG9ja0FkZHIg
PSByZWludGVycHJldF9jYXN0PENvbGxlY3RvckJsb2NrKj4oeEFzQml0cyAtIG9mZnNldCk7Ci0g
ICAgICAgICAgICB1c2VkQmxvY2tzID0gbV9oZWFwLnVzZWRCbG9ja3M7CisgICAgICAgICAgICBz
aXplX3QgdXNlZEJsb2NrcyA9IG1faGVhcC51c2VkQmxvY2tzOwogICAgICAgICAgICAgZm9yIChz
aXplX3QgYmxvY2sgPSAwOyBibG9jayA8IHVzZWRCbG9ja3M7IGJsb2NrKyspIHsKICAgICAgICAg
ICAgICAgICBpZiAobV9oZWFwLmNvbGxlY3RvckJsb2NrKGJsb2NrKSAhPSBibG9ja0FkZHIpCiAg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIG1hcmtTdGFjay5h
cHBlbmQocmVpbnRlcnByZXRfY2FzdDxKU0NlbGwqPih4QXNCaXRzKSk7CisKKyAgICAgICAgICAg
ICAgICAvLyB4IGlzIGEgcG9pbnRlciBpbnRvIHRoZSBoZWFwLiBOb3csIHZlcmlmeSB0aGF0IHRo
ZSBjZWxsIGl0CisgICAgICAgICAgICAgICAgLy8gcG9pbnRzIHRvIGlzIGxpdmUuIChJZiB0aGUg
Y2VsbCBpcyBkZWFkLCB3ZSBtdXN0IG5vdCBtYXJrIGl0LAorICAgICAgICAgICAgICAgIC8vIHNp
bmNlIHRoYXQgd291bGQgcmV2aXZlIGl0IGluIGEgem9tYmllIHN0YXRlLikKKyAgICAgICAgICAg
ICAgICBpZiAoYmxvY2sgPCBtX2hlYXAubmV4dEJsb2NrKSB7CisgICAgICAgICAgICAgICAgICAg
IGNvbnNlcnZhdGl2ZVNldC5hZGQocmVpbnRlcnByZXRfY2FzdDxKU0NlbGwqPih4QXNCaXRzKSk7
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgICAgICBzaXplX3QgY2VsbE9mZnNldCA9IG9mZnNldCAvIENF
TExfU0laRTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoYmxvY2sgPT0g
bV9oZWFwLm5leHRCbG9jayAmJiBjZWxsT2Zmc2V0IDwgbV9oZWFwLm5leHRDZWxsKSB7CisgICAg
ICAgICAgICAgICAgICAgIGNvbnNlcnZhdGl2ZVNldC5hZGQocmVpbnRlcnByZXRfY2FzdDxKU0Nl
bGwqPih4QXNCaXRzKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoYmxvY2tBZGRyLT5t
YXJrZWQuZ2V0KGNlbGxPZmZzZXQpKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnNlcnZhdGl2
ZVNldC5hZGQocmVpbnRlcnByZXRfY2FzdDxKU0NlbGwqPih4QXNCaXRzKSk7CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcmtlZFNw
YWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFya2Vk
U3BhY2UuaAkocmV2aXNpb24gNzYxOTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9NYXJrZWRTcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw4ICs1NSw2IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBzaXplX3QgbnVtQmxvY2tzOwogICAgICAgICBzaXplX3QgdXNlZEJs
b2NrczsKIAotICAgICAgICBib29sIGRpZFNocmluazsKLQogICAgICAgICBDb2xsZWN0b3JCbG9j
ayogY29sbGVjdG9yQmxvY2soc2l6ZV90IGluZGV4KSBjb25zdAogICAgICAgICB7CiAgICAgICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q29sbGVjdG9yQmxvY2sqPihibG9ja3NbaW5kZXhdLmJh
c2UoKSk7CkBAIC04Niw3ICs4NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIFdlYWtH
Q0hhbmRsZSogYWRkV2Vha0dDSGFuZGxlKEpTQ2VsbCopOwogCi0gICAgICAgIHZvaWQgbWFya0Nv
bnNlcnZhdGl2ZWx5KE1hcmtTdGFjayYsIHZvaWQqIHN0YXJ0LCB2b2lkKiBlbmQpOworICAgICAg
ICB2b2lkIG1hcmtDb25zZXJ2YXRpdmVseShDb25zZXJ2YXRpdmVTZXQmLCB2b2lkKiBzdGFydCwg
dm9pZCogZW5kKTsKIAogICAgICAgICBzdGF0aWMgYm9vbCBpc051bWJlcihKU0NlbGwqKTsKICAg
ICAgICAgCkBAIC0xMTQsOCArMTEyLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9p
ZCBtYXJrUm9vdHMoKTsKIAotICAgICAgICBib29sIGRpZFNocmluaygpIHsgcmV0dXJuIG1faGVh
cC5kaWRTaHJpbms7IH0KLSAgICAgICAgCiAgICAgcHJpdmF0ZToKICAgICAgICAgQ29sbGVjdG9y
SGVhcCBtX2hlYXA7CiAgICAgICAgIEpTR2xvYmFsRGF0YSogbV9nbG9iYWxEYXRhOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79663</attachid>
            <date>2011-01-20 16:17:11 -0800</date>
            <delta_ts>2011-01-20 16:29:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52840-20110120161710.patch</filename>
            <type>text/plain</type>
            <size>18063</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNzYzMDQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTQgQEAK
KzIwMTEtMDEtMjAgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIG1hcmtpbmcgY29u
c2VydmF0aXZlbHksIGd1YXJkIGFnYWluc3QgcmV2aXZpbmcgZGVhZCBvYmplY3RzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI4NDAKKworICAgICAg
ICAqIGludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5oOgorICAgICAgICAoSlNDOjpSZWdpc3RlckZp
bGU6Om1hcmtDYWxsRnJhbWVzKTogVXBkYXRlZCB0byB1c2UgdGhlIENvbnNlcnZhdGl2ZVNldCBB
UEkuCisKKyAgICAgICAgKiBydW50aW1lL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpy
ZWNvcmRFeHRyYUNvc3QpOiBObyBuZWVkIHRvIGd1YXJkIGFnYWluc3QgY29uc2VydmF0aXZlCisg
ICAgICAgIG1hcmtpbmcgcmV2aXZpbmcgZGVhZCBvYmplY3RzIGFueW1vcmUsIHNpbmNlIHRoZSBj
b25zZXJ2YXRpdmUgbWFya2luZworICAgICAgICBtZWNoYW5pc20gZ3VhcmRzIGFnYWluc3QgdGhp
cyBub3cuCisKKyAgICAgICAgKEpTQzo6SGVhcDo6bWFya0NvbnNlcnZhdGl2ZWx5KToKKyAgICAg
ICAgKEpTQzo6SGVhcDo6bWFya1Byb3RlY3RlZE9iamVjdHMpOgorICAgICAgICAoSlNDOjpIZWFw
OjptYXJrVGVtcFNvcnRWZWN0b3JzKTogRG9uJ3QgZHJhaW4gdGhlIG1hcmsgc3RhY2sgaW5zaWRl
IGEKKyAgICAgICAgbWFya2luZyBmdW5jdGlvbi4gV2Ugd2FudCB0byBlc3RhYmxpc2ggYSBzZXBh
cmF0aW9uIG9mIGNvbmNlcm5zIGJldHdlZW4KKyAgICAgICAgdmlzaXRpbmcgcm9vdHMgYW5kIGRy
YWluaW5nIHRoZSBtYXJrIHN0YWNrLgorCisgICAgICAgIChKU0M6OkhlYXA6Om1hcmtSb290cyk6
IEdhdGhlciB0aGUgc2V0IG9mIGNvbnNlcnZhdGl2ZSByZWZlcmVuY2VzIGJlZm9yZQorICAgICAg
ICBjbGVhcm5pbmcgbWFyayBiaXRzLCBiZWNhdXNlIGNvbnNlcnZhdGl2ZSBtYXJraW5nIG5vdyB1
c2VzIHRoZSBtYXJrIGJpdHMKKyAgICAgICAgdG8gZGV0ZXJtaW5lIGlmIGEgcmVmZXJlbmNlIGlz
IHZhbGlkLCBhbmQgYXZvaWQgcmV2aXZpbmcgZGVhZCBvYmplY3RzLgorCisgICAgICAgIChKU0M6
OkhlYXA6OmNvbGxlY3RBbGxHYXJiYWdlKTogTm8gbmVlZCB0byBndWFyZCBhZ2FpbnN0IGNvbnNl
cnZhdGl2ZQorICAgICAgICBtYXJraW5nIHJldml2aW5nIGRlYWQgb2JqZWN0cyBhbnltb3JlLCBz
aW5jZSB0aGUgY29uc2VydmF0aXZlIG1hcmtpbmcKKyAgICAgICAgbWVjaGFuaXNtIGd1YXJkcyBh
Z2FpbnN0IHRoaXMgbm93LgorCisgICAgICAgICogcnVudGltZS9IZWFwLmg6IFVwZGF0ZWQgdG8g
dXNlIHRoZSBDb25zZXJ2YXRpdmVTZXQgQVBJLgorCisgICAgICAgICogcnVudGltZS9NYWNoaW5l
U3RhY2tNYXJrZXIuY3BwOgorICAgICAgICAoSlNDOjpNYWNoaW5lU3RhY2tNYXJrZXI6Om1hcmtD
dXJyZW50VGhyZWFkQ29uc2VydmF0aXZlbHlJbnRlcm5hbCk6CisgICAgICAgIChKU0M6Ok1hY2hp
bmVTdGFja01hcmtlcjo6bWFya0N1cnJlbnRUaHJlYWRDb25zZXJ2YXRpdmVseSk6CisgICAgICAg
IChKU0M6Ok1hY2hpbmVTdGFja01hcmtlcjo6bWFya090aGVyVGhyZWFkQ29uc2VydmF0aXZlbHkp
OgorICAgICAgICAoSlNDOjpNYWNoaW5lU3RhY2tNYXJrZXI6Om1hcmtNYWNoaW5lU3RhY2tDb25z
ZXJ2YXRpdmVseSk6CisgICAgICAgICogcnVudGltZS9NYWNoaW5lU3RhY2tNYXJrZXIuaDogRGl0
dG8uCisKKyAgICAgICAgKiBydW50aW1lL01hcmtTdGFjay5oOgorICAgICAgICAoSlNDOjpDb25z
ZXJ2YXRpdmVTZXQ6OmFkZCk6CisgICAgICAgIChKU0M6OkNvbnNlcnZhdGl2ZVNldDo6bWFyayk6
IEFkZGVkIENvbnNlcnZhdGl2ZVNldCwgZm9yIGdhdGhlcmluZyB0aGUKKyAgICAgICAgc2V0IG9m
IGNvbnNlcnZhdGl2ZSByZWZlcmVuY2VzLiBUaGlzIGlzIGRpZmZlcmVudCBmcm9tIE1hcmtTdGFj
aywgc2luY2UKKyAgICAgICAgd2UgZG9uJ3QgbWFyayB0aGUgc2V0IHVudGlsIGl0IGlzIGNvbXBs
ZXRlbHkgZ2F0aGVyZWQuCisKKyAgICAgICAgKiBydW50aW1lL01hcmtlZFNwYWNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmZyZWVCbG9jayk6CisgICAgICAgIChKU0M6Ok1hcmtl
ZFNwYWNlOjpyZXNpemVCbG9ja3MpOgorICAgICAgICAoSlNDOjpNYXJrZWRTcGFjZTo6bWFya0Nv
bnNlcnZhdGl2ZWx5KToKKyAgICAgICAgKiBydW50aW1lL01hcmtlZFNwYWNlLmg6IFdoZW4gbWFy
a2luZyBjb25zZXJ2YXRpdmVseSwgZ3VhcmQgYWdhaW5zdAorICAgICAgICByZXZpdmluZyBkZWFk
IG9iamVjdHMuCisKIDIwMTEtMDEtMjAgIFNpZGRoYXJ0aCBNYXRodXIgIDxzaWRkaGFydGgubWF0
aHVyQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3RlckZpbGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxl
LmgJKHJldmlzaW9uIDc2MzA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L1JlZ2lzdGVyRmlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzIsNyArMTMyLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICAgICAgUmVnaXN0ZXIqIGxhc3RHbG9iYWwoKSBjb25zdCB7IHJldHVy
biBtX3N0YXJ0IC0gbV9udW1HbG9iYWxzOyB9CiAgICAgICAgIAotICAgICAgICB2b2lkIG1hcmtD
YWxsRnJhbWVzKE1hcmtTdGFjayYgbWFya1N0YWNrLCBIZWFwKiBoZWFwKSB7IGhlYXAtPm1hcmtD
b25zZXJ2YXRpdmVseShtYXJrU3RhY2ssIG1fc3RhcnQsIG1fZW5kKTsgfQorICAgICAgICB2b2lk
IG1hcmtDYWxsRnJhbWVzKENvbnNlcnZhdGl2ZVNldCYgY29uc2VydmF0aXZlU2V0LCBIZWFwKiBo
ZWFwKSB7IGhlYXAtPm1hcmtDb25zZXJ2YXRpdmVseShjb25zZXJ2YXRpdmVTZXQsIG1fc3RhcnQs
IG1fZW5kKTsgfQogCiAgICAgICAgIHN0YXRpYyBzaXplX3QgY29tbWl0dGVkQnl0ZUNvdW50KCk7
CiAgICAgICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmcoKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0hlYXAuY3BwCShyZXZpc2lvbiA3NjMwNCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Mywx
MiArOTMsNiBAQCB2b2lkIEhlYXA6OnJlY29yZEV4dHJhQ29zdChzaXplX3QgY29zdCkKICAgICBp
ZiAobV9leHRyYUNvc3QgPiBtYXhFeHRyYUNvc3QgJiYgbV9leHRyYUNvc3QgPiBtX21hcmtlZFNw
YWNlLnNpemUoKSAvIDIpIHsKICAgICAgICAgSkFWQVNDUklQVENPUkVfR0NfQkVHSU4oKTsKIAot
ICAgICAgICAvLyBJZiB0aGUgbGFzdCBpdGVyYXRpb24gdGhyb3VnaCB0aGUgaGVhcCBkZWFsbG9j
YXRlZCBibG9ja3MsIHdlIG5lZWQKLSAgICAgICAgLy8gdG8gY2xlYW4gdXAgcmVtYWluaW5nIGdh
cmJhZ2UgYmVmb3JlIG1hcmtpbmcuIE90aGVyd2lzZSwgdGhlIGNvbnNlcnZhdGl2ZQotICAgICAg
ICAvLyBtYXJraW5nIG1lY2hhbmlzbSBtaWdodCBmb2xsb3cgYSBwb2ludGVyIHRvIHVubWFwcGVk
IG1lbW9yeS4KLSAgICAgICAgaWYgKG1fbWFya2VkU3BhY2UuZGlkU2hyaW5rKCkpCi0gICAgICAg
ICAgICBtX21hcmtlZFNwYWNlLnN3ZWVwKCk7Ci0KICAgICAgICAgbWFya1Jvb3RzKCk7CiAKICAg
ICAgICAgSkFWQVNDUklQVENPUkVfR0NfTUFSS0VEKCk7CkBAIC0xNTIsOSArMTQ2LDkgQEAgdm9p
ZCogSGVhcDo6YWxsb2NhdGUoc2l6ZV90IHMpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9p
ZCBIZWFwOjptYXJrQ29uc2VydmF0aXZlbHkoTWFya1N0YWNrJiBtYXJrU3RhY2ssIHZvaWQqIHN0
YXJ0LCB2b2lkKiBlbmQpCit2b2lkIEhlYXA6Om1hcmtDb25zZXJ2YXRpdmVseShDb25zZXJ2YXRp
dmVTZXQmIGNvbnNlcnZhdGl2ZVNldCwgdm9pZCogc3RhcnQsIHZvaWQqIGVuZCkKIHsKLSAgICBt
X21hcmtlZFNwYWNlLm1hcmtDb25zZXJ2YXRpdmVseShtYXJrU3RhY2ssIHN0YXJ0LCBlbmQpOwor
ICAgIG1fbWFya2VkU3BhY2UubWFya0NvbnNlcnZhdGl2ZWx5KGNvbnNlcnZhdGl2ZVNldCwgc3Rh
cnQsIGVuZCk7CiB9CiAKIHZvaWQgSGVhcDo6dXBkYXRlV2Vha0dDSGFuZGxlcygpCkBAIC0yMTIs
MTAgKzIwNiw4IEBAIGJvb2wgSGVhcDo6dW5wcm90ZWN0KEpTVmFsdWUgaykKIHZvaWQgSGVhcDo6
bWFya1Byb3RlY3RlZE9iamVjdHMoTWFya1N0YWNrJiBtYXJrU3RhY2spCiB7CiAgICAgUHJvdGVj
dENvdW50U2V0OjppdGVyYXRvciBlbmQgPSBtX3Byb3RlY3RlZFZhbHVlcy5lbmQoKTsKLSAgICBm
b3IgKFByb3RlY3RDb3VudFNldDo6aXRlcmF0b3IgaXQgPSBtX3Byb3RlY3RlZFZhbHVlcy5iZWdp
bigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICBmb3IgKFByb3RlY3RDb3VudFNldDo6aXRlcmF0
b3IgaXQgPSBtX3Byb3RlY3RlZFZhbHVlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCiAgICAg
ICAgIG1hcmtTdGFjay5hcHBlbmQoaXQtPmZpcnN0KTsKLSAgICAgICAgbWFya1N0YWNrLmRyYWlu
KCk7Ci0gICAgfQogfQogCiB2b2lkIEhlYXA6OnB1c2hUZW1wU29ydFZlY3RvcihWZWN0b3I8VmFs
dWVTdHJpbmdQYWlyPiogdGVtcFZlY3RvcikKQEAgLTIzOCwxMCArMjMwLDEwIEBAIHZvaWQgSGVh
cDo6bWFya1RlbXBTb3J0VmVjdG9ycyhNYXJrU3RhY2sKICAgICAgICAgVmVjdG9yPFZhbHVlU3Ry
aW5nUGFpcj4qIHRlbXBTb3J0aW5nVmVjdG9yID0gKml0OwogCiAgICAgICAgIFZlY3RvcjxWYWx1
ZVN0cmluZ1BhaXI+OjppdGVyYXRvciB2ZWN0b3JFbmQgPSB0ZW1wU29ydGluZ1ZlY3Rvci0+ZW5k
KCk7Ci0gICAgICAgIGZvciAoVmVjdG9yPFZhbHVlU3RyaW5nUGFpcj46Oml0ZXJhdG9yIHZlY3Rv
ckl0ID0gdGVtcFNvcnRpbmdWZWN0b3ItPmJlZ2luKCk7IHZlY3Rvckl0ICE9IHZlY3RvckVuZDsg
Kyt2ZWN0b3JJdCkKKyAgICAgICAgZm9yIChWZWN0b3I8VmFsdWVTdHJpbmdQYWlyPjo6aXRlcmF0
b3IgdmVjdG9ySXQgPSB0ZW1wU29ydGluZ1ZlY3Rvci0+YmVnaW4oKTsgdmVjdG9ySXQgIT0gdmVj
dG9yRW5kOyArK3ZlY3Rvckl0KSB7CiAgICAgICAgICAgICBpZiAodmVjdG9ySXQtPmZpcnN0KQog
ICAgICAgICAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQodmVjdG9ySXQtPmZpcnN0KTsKLSAgICAg
ICAgbWFya1N0YWNrLmRyYWluKCk7CisgICAgICAgIH0KICAgICB9CiB9CiAgICAgCkBAIC0yNjAs
MjAgKzI1MiwyNyBAQCB2b2lkIEhlYXA6Om1hcmtSb290cygpCiAKICAgICBtX29wZXJhdGlvbklu
UHJvZ3Jlc3MgPSBDb2xsZWN0aW9uOwogCi0gICAgTWFya1N0YWNrJiBtYXJrU3RhY2sgPSBtX2ds
b2JhbERhdGEtPm1hcmtTdGFjazsKKyAgICAvLyBXZSBnYXRoZXIgdGhlIGNvbnNlcnZhdGl2ZSBz
ZXQgYmVmb3JlIGNsZWFyaW5nIG1hcmsgYml0cywgYmVjYXVzZQorICAgIC8vIGNvbnNlcnZhdGl2
ZSBnYXRoZXJpbmcgdXNlcyB0aGUgbWFyayBiaXRzIGZyb20gb3VyIGxhc3QgbWFyayBwYXNzIHRv
CisgICAgLy8gZGV0ZXJtaW5lIHdoZXRoZXIgYSByZWZlcmVuY2UgaXMgdmFsaWQuCisgICAgQ29u
c2VydmF0aXZlU2V0IGNvbnNlcnZhdGl2ZVNldDsKKyAgICBtX21hY2hpbmVTdGFja01hcmtlci5t
YXJrTWFjaGluZVN0YWNrQ29uc2VydmF0aXZlbHkoY29uc2VydmF0aXZlU2V0KTsKKyAgICBtX2ds
b2JhbERhdGEtPmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKS5tYXJrQ2FsbEZyYW1lcyhjb25z
ZXJ2YXRpdmVTZXQsIHRoaXMpOwogCiAgICAgLy8gUmVzZXQgbWFyayBiaXRzLgogICAgIG1fbWFy
a2VkU3BhY2UuY2xlYXJNYXJrQml0cygpOwogCi0gICAgLy8gTWFyayBzdGFjayByb290cy4KLSAg
ICBtX21hY2hpbmVTdGFja01hcmtlci5tYXJrTWFjaGluZVN0YWNrQ29uc2VydmF0aXZlbHkobWFy
a1N0YWNrKTsKLSAgICBtX2dsb2JhbERhdGEtPmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKS5t
YXJrQ2FsbEZyYW1lcyhtYXJrU3RhY2ssIHRoaXMpOworICAgIE1hcmtTdGFjayYgbWFya1N0YWNr
ID0gbV9nbG9iYWxEYXRhLT5tYXJrU3RhY2s7CisgICAgY29uc2VydmF0aXZlU2V0Lm1hcmsobWFy
a1N0YWNrKTsKKyAgICBtYXJrU3RhY2suZHJhaW4oKTsKIAogICAgIC8vIE1hcmsgZXhwbGljaXRs
eSByZWdpc3RlcmVkIHJvb3RzLgogICAgIG1hcmtQcm90ZWN0ZWRPYmplY3RzKG1hcmtTdGFjayk7
CisgICAgbWFya1N0YWNrLmRyYWluKCk7CiAgICAgCiAgICAgLy8gTWFyayB0ZW1wb3JhcnkgdmVj
dG9yIGZvciBBcnJheSBzb3J0aW5nCiAgICAgbWFya1RlbXBTb3J0VmVjdG9ycyhtYXJrU3RhY2sp
OworICAgIG1hcmtTdGFjay5kcmFpbigpOwogCiAgICAgLy8gTWFyayBtaXNjLiBvdGhlciByb290
cy4KICAgICBpZiAobV9tYXJrTGlzdFNldCAmJiBtX21hcmtMaXN0U2V0LT5zaXplKCkpCkBAIC0y
ODIsNiArMjgxLDcgQEAgdm9pZCBIZWFwOjptYXJrUm9vdHMoKQogICAgICAgICBtYXJrU3RhY2su
YXBwZW5kKG1fZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uKTsKICAgICBpZiAobV9nbG9iYWxEYXRhLT5m
aXJzdFN0cmluZ2lmaWVyVG9NYXJrKQogICAgICAgICBKU09OT2JqZWN0OjptYXJrU3RyaW5naWZp
ZXJzKG1hcmtTdGFjaywgbV9nbG9iYWxEYXRhLT5maXJzdFN0cmluZ2lmaWVyVG9NYXJrKTsKKyAg
ICBtYXJrU3RhY2suZHJhaW4oKTsKIAogICAgIC8vIE1hcmsgdGhlIHNtYWxsIHN0cmluZ3MgY2Fj
aGUgbGFzdCwgc2luY2UgaXQgd2lsbCBjbGVhciBpdHNlbGYgaWYgbm90aGluZwogICAgIC8vIGVs
c2UgaGFzIG1hcmtlZCBpdC4KQEAgLTM5MiwxMiArMzkyLDYgQEAgdm9pZCBIZWFwOjpjb2xsZWN0
QWxsR2FyYmFnZSgpCiAgICAgQVNTRVJUKGdsb2JhbERhdGEoKS0+aWRlbnRpZmllclRhYmxlID09
IHd0ZlRocmVhZERhdGEoKS5jdXJyZW50SWRlbnRpZmllclRhYmxlKCkpOwogICAgIEpBVkFTQ1JJ
UFRDT1JFX0dDX0JFR0lOKCk7CiAKLSAgICAvLyBJZiB0aGUgbGFzdCBpdGVyYXRpb24gdGhyb3Vn
aCB0aGUgaGVhcCBkZWFsbG9jYXRlZCBibG9ja3MsIHdlIG5lZWQKLSAgICAvLyB0byBjbGVhbiB1
cCByZW1haW5pbmcgZ2FyYmFnZSBiZWZvcmUgbWFya2luZy4gT3RoZXJ3aXNlLCB0aGUgY29uc2Vy
dmF0aXZlCi0gICAgLy8gbWFya2luZyBtZWNoYW5pc20gbWlnaHQgZm9sbG93IGEgcG9pbnRlciB0
byB1bm1hcHBlZCBtZW1vcnkuCi0gICAgaWYgKG1fbWFya2VkU3BhY2UuZGlkU2hyaW5rKCkpCi0g
ICAgICAgIG1fbWFya2VkU3BhY2Uuc3dlZXAoKTsKLQogICAgIG1hcmtSb290cygpOwogCiAgICAg
SkFWQVNDUklQVENPUkVfR0NfTUFSS0VEKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSGVhcC5oCShyZXZpc2lvbiA3NjMwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0hlYXAuaAkod29ya2luZyBjb3B5KQpAQCAtODcsNyArODcsNyBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgICAgICBXZWFrR0NIYW5kbGUqIGFkZFdlYWtHQ0hhbmRsZShKU0NlbGwqKTsKIAot
ICAgICAgICB2b2lkIG1hcmtDb25zZXJ2YXRpdmVseShNYXJrU3RhY2smLCB2b2lkKiBzdGFydCwg
dm9pZCogZW5kKTsKKyAgICAgICAgdm9pZCBtYXJrQ29uc2VydmF0aXZlbHkoQ29uc2VydmF0aXZl
U2V0Jiwgdm9pZCogc3RhcnQsIHZvaWQqIGVuZCk7CiAKICAgICAgICAgdm9pZCBwdXNoVGVtcFNv
cnRWZWN0b3IoV1RGOjpWZWN0b3I8VmFsdWVTdHJpbmdQYWlyPiopOwogICAgICAgICB2b2lkIHBv
cFRlbXBTb3J0VmVjdG9yKFdURjo6VmVjdG9yPFZhbHVlU3RyaW5nUGFpcj4qKTsgICAgICAgIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFjaGluZVN0YWNrTWFya2VyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYWNoaW5lU3Rh
Y2tNYXJrZXIuY3BwCShyZXZpc2lvbiA3NjMwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL01hY2hpbmVTdGFja01hcmtlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NCwxMCAr
MTk0LDkgQEAgdm9pZCBNYWNoaW5lU3RhY2tNYXJrZXI6OnVucmVnaXN0ZXJUaHJlYQogCiAjZW5k
aWYKIAotdm9pZCBORVZFUl9JTkxJTkUgTWFjaGluZVN0YWNrTWFya2VyOjptYXJrQ3VycmVudFRo
cmVhZENvbnNlcnZhdGl2ZWx5SW50ZXJuYWwoTWFya1N0YWNrJiBtYXJrU3RhY2spCit2b2lkIE5F
VkVSX0lOTElORSBNYWNoaW5lU3RhY2tNYXJrZXI6Om1hcmtDdXJyZW50VGhyZWFkQ29uc2VydmF0
aXZlbHlJbnRlcm5hbChDb25zZXJ2YXRpdmVTZXQmIGNvbnNlcnZhdGl2ZVNldCkKIHsKLSAgICBt
X2hlYXAtPm1hcmtDb25zZXJ2YXRpdmVseShtYXJrU3RhY2ssIG1faGVhcC0+Z2xvYmFsRGF0YSgp
LT5zdGFjaygpLmN1cnJlbnQoKSwgbV9oZWFwLT5nbG9iYWxEYXRhKCktPnN0YWNrKCkub3JpZ2lu
KCkpOwotICAgIG1hcmtTdGFjay5kcmFpbigpOworICAgIG1faGVhcC0+bWFya0NvbnNlcnZhdGl2
ZWx5KGNvbnNlcnZhdGl2ZVNldCwgbV9oZWFwLT5nbG9iYWxEYXRhKCktPnN0YWNrKCkuY3VycmVu
dCgpLCBtX2hlYXAtPmdsb2JhbERhdGEoKS0+c3RhY2soKS5vcmlnaW4oKSk7CiB9CiAKICNpZiBD
T01QSUxFUihHQ0MpCkBAIC0yMDYsNyArMjA1LDcgQEAgdm9pZCBORVZFUl9JTkxJTkUgTWFjaGlu
ZVN0YWNrTWFya2VyOjptYQogI2RlZmluZSBSRUdJU1RFUl9CVUZGRVJfQUxJR05NRU5UCiAjZW5k
aWYKIAotdm9pZCBNYWNoaW5lU3RhY2tNYXJrZXI6Om1hcmtDdXJyZW50VGhyZWFkQ29uc2VydmF0
aXZlbHkoTWFya1N0YWNrJiBtYXJrU3RhY2spCit2b2lkIE1hY2hpbmVTdGFja01hcmtlcjo6bWFy
a0N1cnJlbnRUaHJlYWRDb25zZXJ2YXRpdmVseShDb25zZXJ2YXRpdmVTZXQmIGNvbnNlcnZhdGl2
ZVNldCkKIHsKICAgICAvLyBzZXRqbXAgZm9yY2VzIHZvbGF0aWxlIHJlZ2lzdGVycyBvbnRvIHRo
ZSBzdGFjawogICAgIGptcF9idWYgcmVnaXN0ZXJzIFJFR0lTVEVSX0JVRkZFUl9BTElHTk1FTlQ7
CkBAIC0yMTksNyArMjE4LDcgQEAgdm9pZCBNYWNoaW5lU3RhY2tNYXJrZXI6Om1hcmtDdXJyZW50
VGhyZQogI3ByYWdtYSB3YXJuaW5nKHBvcCkKICNlbmRpZgogCi0gICAgbWFya0N1cnJlbnRUaHJl
YWRDb25zZXJ2YXRpdmVseUludGVybmFsKG1hcmtTdGFjayk7CisgICAgbWFya0N1cnJlbnRUaHJl
YWRDb25zZXJ2YXRpdmVseUludGVybmFsKGNvbnNlcnZhdGl2ZVNldCk7CiB9CiAKICNpZiBFTkFC
TEUoSlNDX01VTFRJUExFX1RIUkVBRFMpCkBAIC0zNTEsNyArMzUwLDcgQEAgc3RhdGljIGlubGlu
ZSB2b2lkKiBvdGhlclRocmVhZFN0YWNrUG9pbgogI2VuZGlmCiB9CiAKLXZvaWQgTWFjaGluZVN0
YWNrTWFya2VyOjptYXJrT3RoZXJUaHJlYWRDb25zZXJ2YXRpdmVseShNYXJrU3RhY2smIG1hcmtT
dGFjaywgVGhyZWFkKiB0aHJlYWQpCit2b2lkIE1hY2hpbmVTdGFja01hcmtlcjo6bWFya090aGVy
VGhyZWFkQ29uc2VydmF0aXZlbHkoQ29uc2VydmF0aXZlU2V0JiBjb25zZXJ2YXRpdmVTZXQsIFRo
cmVhZCogdGhyZWFkKQogewogICAgIHN1c3BlbmRUaHJlYWQodGhyZWFkLT5wbGF0Zm9ybVRocmVh
ZCk7CiAKQEAgLTM1OSwyMSArMzU4LDE5IEBAIHZvaWQgTWFjaGluZVN0YWNrTWFya2VyOjptYXJr
T3RoZXJUaHJlYWQKICAgICBzaXplX3QgcmVnU2l6ZSA9IGdldFBsYXRmb3JtVGhyZWFkUmVnaXN0
ZXJzKHRocmVhZC0+cGxhdGZvcm1UaHJlYWQsIHJlZ3MpOwogCiAgICAgLy8gbWFyayB0aGUgdGhy
ZWFkJ3MgcmVnaXN0ZXJzCi0gICAgbV9oZWFwLT5tYXJrQ29uc2VydmF0aXZlbHkobWFya1N0YWNr
LCBzdGF0aWNfY2FzdDx2b2lkKj4oJnJlZ3MpLCBzdGF0aWNfY2FzdDx2b2lkKj4ocmVpbnRlcnBy
ZXRfY2FzdDxjaGFyKj4oJnJlZ3MpICsgcmVnU2l6ZSkpOwotICAgIG1hcmtTdGFjay5kcmFpbigp
OworICAgIG1faGVhcC0+bWFya0NvbnNlcnZhdGl2ZWx5KGNvbnNlcnZhdGl2ZVNldCwgc3RhdGlj
X2Nhc3Q8dm9pZCo+KCZyZWdzKSwgc3RhdGljX2Nhc3Q8dm9pZCo+KHJlaW50ZXJwcmV0X2Nhc3Q8
Y2hhcio+KCZyZWdzKSArIHJlZ1NpemUpKTsKIAogICAgIHZvaWQqIHN0YWNrUG9pbnRlciA9IG90
aGVyVGhyZWFkU3RhY2tQb2ludGVyKHJlZ3MpOwotICAgIG1faGVhcC0+bWFya0NvbnNlcnZhdGl2
ZWx5KG1hcmtTdGFjaywgc3RhY2tQb2ludGVyLCB0aHJlYWQtPnN0YWNrQmFzZSk7Ci0gICAgbWFy
a1N0YWNrLmRyYWluKCk7CisgICAgbV9oZWFwLT5tYXJrQ29uc2VydmF0aXZlbHkoY29uc2VydmF0
aXZlU2V0LCBzdGFja1BvaW50ZXIsIHRocmVhZC0+c3RhY2tCYXNlKTsKIAogICAgIHJlc3VtZVRo
cmVhZCh0aHJlYWQtPnBsYXRmb3JtVGhyZWFkKTsKIH0KIAogI2VuZGlmCiAKLXZvaWQgTWFjaGlu
ZVN0YWNrTWFya2VyOjptYXJrTWFjaGluZVN0YWNrQ29uc2VydmF0aXZlbHkoTWFya1N0YWNrJiBt
YXJrU3RhY2spCit2b2lkIE1hY2hpbmVTdGFja01hcmtlcjo6bWFya01hY2hpbmVTdGFja0NvbnNl
cnZhdGl2ZWx5KENvbnNlcnZhdGl2ZVNldCYgY29uc2VydmF0aXZlU2V0KQogewotICAgIG1hcmtD
dXJyZW50VGhyZWFkQ29uc2VydmF0aXZlbHkobWFya1N0YWNrKTsKKyAgICBtYXJrQ3VycmVudFRo
cmVhZENvbnNlcnZhdGl2ZWx5KGNvbnNlcnZhdGl2ZVNldCk7CiAKICNpZiBFTkFCTEUoSlNDX01V
TFRJUExFX1RIUkVBRFMpCiAKQEAgLTM5MSw3ICszODgsNyBAQCB2b2lkIE1hY2hpbmVTdGFja01h
cmtlcjo6bWFya01hY2hpbmVTdGFjCiAgICAgICAgIC8vIGFuZCBzaW5jZSB0aGlzIGlzIGEgc2hh
cmVkIGhlYXAsIHRoZXkgYXJlIHJlYWwgbG9ja3MuCiAgICAgICAgIGZvciAoVGhyZWFkKiB0aHJl
YWQgPSBtX3JlZ2lzdGVyZWRUaHJlYWRzOyB0aHJlYWQ7IHRocmVhZCA9IHRocmVhZC0+bmV4dCkg
ewogICAgICAgICAgICAgaWYgKCFwdGhyZWFkX2VxdWFsKHRocmVhZC0+cG9zaXhUaHJlYWQsIHB0
aHJlYWRfc2VsZigpKSkKLSAgICAgICAgICAgICAgICBtYXJrT3RoZXJUaHJlYWRDb25zZXJ2YXRp
dmVseShtYXJrU3RhY2ssIHRocmVhZCk7CisgICAgICAgICAgICAgICAgbWFya090aGVyVGhyZWFk
Q29uc2VydmF0aXZlbHkoY29uc2VydmF0aXZlU2V0LCB0aHJlYWQpOwogICAgICAgICB9CiAjaWZu
ZGVmIE5ERUJVRwogICAgICAgICBmYXN0TWFsbG9jQWxsb3coKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01hY2hpbmVTdGFja01hcmtlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hY2hpbmVTdGFja01hcmtlci5oCShyZXZpc2lv
biA3NjMwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hY2hpbmVTdGFja01h
cmtlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiBuYW1lc3BhY2UgSlNDIHsK
IAogICAgIGNsYXNzIEhlYXA7Ci0gICAgY2xhc3MgTWFya1N0YWNrOworICAgIGNsYXNzIENvbnNl
cnZhdGl2ZVNldDsKIAogICAgIGNsYXNzIE1hY2hpbmVTdGFja01hcmtlciB7CiAgICAgICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKE1hY2hpbmVTdGFja01hcmtlcik7CkBAIC00MCw3ICs0MCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBNYWNoaW5lU3RhY2tNYXJrZXIoSGVhcCopOwogICAg
ICAgICB+TWFjaGluZVN0YWNrTWFya2VyKCk7CiAKLSAgICAgICAgdm9pZCBtYXJrTWFjaGluZVN0
YWNrQ29uc2VydmF0aXZlbHkoTWFya1N0YWNrJik7CisgICAgICAgIHZvaWQgbWFya01hY2hpbmVT
dGFja0NvbnNlcnZhdGl2ZWx5KENvbnNlcnZhdGl2ZVNldCYpOwogCiAjaWYgRU5BQkxFKEpTQ19N
VUxUSVBMRV9USFJFQURTKQogICAgICAgICB2b2lkIG1ha2VVc2FibGVGcm9tTXVsdGlwbGVUaHJl
YWRzKCk7CkBAIC00OCw4ICs0OCw4IEBAIG5hbWVzcGFjZSBKU0MgewogI2VuZGlmCiAKICAgICBw
cml2YXRlOgotICAgICAgICB2b2lkIG1hcmtDdXJyZW50VGhyZWFkQ29uc2VydmF0aXZlbHkoTWFy
a1N0YWNrJik7Ci0gICAgICAgIHZvaWQgbWFya0N1cnJlbnRUaHJlYWRDb25zZXJ2YXRpdmVseUlu
dGVybmFsKE1hcmtTdGFjayYpOworICAgICAgICB2b2lkIG1hcmtDdXJyZW50VGhyZWFkQ29uc2Vy
dmF0aXZlbHkoQ29uc2VydmF0aXZlU2V0Jik7CisgICAgICAgIHZvaWQgbWFya0N1cnJlbnRUaHJl
YWRDb25zZXJ2YXRpdmVseUludGVybmFsKENvbnNlcnZhdGl2ZVNldCYpOwogCiAjaWYgRU5BQkxF
KEpTQ19NVUxUSVBMRV9USFJFQURTKQogICAgICAgICBjbGFzcyBUaHJlYWQ7CkBAIC01Nyw3ICs1
Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgdm9pZCB1bnJlZ2lzdGVyVGhy
ZWFkKHZvaWQqKTsKIAogICAgICAgICB2b2lkIHVucmVnaXN0ZXJUaHJlYWQoKTsKLSAgICAgICAg
dm9pZCBtYXJrT3RoZXJUaHJlYWRDb25zZXJ2YXRpdmVseShNYXJrU3RhY2smLCBUaHJlYWQqKTsK
KyAgICAgICAgdm9pZCBtYXJrT3RoZXJUaHJlYWRDb25zZXJ2YXRpdmVseShDb25zZXJ2YXRpdmVT
ZXQmLCBUaHJlYWQqKTsKICNlbmRpZgogCiAgICAgICAgIEhlYXAqIG1faGVhcDsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcmtTdGFjay5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcmtTdGFjay5oCShyZXZpc2lvbiA3NjMwNCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcmtTdGFjay5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIE1hcmtTdGFja19oCiAKICNpbmNsdWRlICJK
U1ZhbHVlLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KICNpbmNsdWRlIDx3dGYvT1NBbGxvY2F0b3IuaD4KIApAQCAtMTg2LDYgKzE4Nywy
MCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBtX2lzRHJhaW5pbmc7CiAjZW5kaWYK
ICAgICB9OworICAgIAorICAgIGNsYXNzIENvbnNlcnZhdGl2ZVNldCB7CisgICAgcHVibGljOgor
ICAgICAgICB2b2lkIGFkZChKU0NlbGwqIGNlbGwpIHsgbV9zZXQuYWRkKGNlbGwpOyB9CisgICAg
ICAgIHZvaWQgbWFyayhNYXJrU3RhY2smIG1hcmtTdGFjaykKKyAgICAgICAgeworICAgICAgICAg
ICAgSGFzaFNldDxKU0NlbGwqPjo6aXRlcmF0b3IgZW5kID0gbV9zZXQuZW5kKCk7CisgICAgICAg
ICAgICBmb3IgKEhhc2hTZXQ8SlNDZWxsKj46Oml0ZXJhdG9yIGl0ID0gbV9zZXQuYmVnaW4oKTsg
aXQgIT0gZW5kOyArK2l0KQorICAgICAgICAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQoKml0KTsK
KyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgSGFzaFNldDxKU0NlbGwqPiBtX3Nl
dDsKKyAgICB9OwogfQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL01hcmtlZFNwYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9NYXJrZWRTcGFjZS5jcHAJKHJldmlzaW9uIDc2MzA0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTWFya2VkU3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgs
OCArMTA4LDYgQEAgTkVWRVJfSU5MSU5FIENvbGxlY3RvckJsb2NrKiBNYXJrZWRTcGFjZQogCiBO
RVZFUl9JTkxJTkUgdm9pZCBNYXJrZWRTcGFjZTo6ZnJlZUJsb2NrKHNpemVfdCBibG9jaykKIHsK
LSAgICBtX2hlYXAuZGlkU2hyaW5rID0gdHJ1ZTsKLQogICAgIE9iamVjdEl0ZXJhdG9yIGl0KG1f
aGVhcCwgYmxvY2spOwogICAgIE9iamVjdEl0ZXJhdG9yIGVuZChtX2hlYXAsIGJsb2NrICsgMSk7
CiAgICAgZm9yICggOyBpdCAhPSBlbmQ7ICsraXQpCkBAIC0xNjIsOCArMTYwLDYgQEAgdm9pZCog
TWFya2VkU3BhY2U6OmFsbG9jYXRlKHNpemVfdCBzKQogCiB2b2lkIE1hcmtlZFNwYWNlOjpyZXNp
emVCbG9ja3MoKQogewotICAgIG1faGVhcC5kaWRTaHJpbmsgPSBmYWxzZTsKLQogICAgIHNpemVf
dCB1c2VkQ2VsbENvdW50ID0gbWFya2VkQ2VsbHMoKTsKICAgICBzaXplX3QgbWluQ2VsbENvdW50
ID0gdXNlZENlbGxDb3VudCArIG1heChBTExPQ0FUSU9OU19QRVJfQ09MTEVDVElPTiwgdXNlZENl
bGxDb3VudCk7CiAgICAgc2l6ZV90IG1pbkJsb2NrQ291bnQgPSAobWluQ2VsbENvdW50ICsgSGVh
cENvbnN0YW50czo6Y2VsbHNQZXJCbG9jayAtIDEpIC8gSGVhcENvbnN0YW50czo6Y2VsbHNQZXJC
bG9jazsKQEAgLTIyMiw3ICsyMTgsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNQb3NzaWJsZUNl
bGwodm9pZCogCiAgICAgcmV0dXJuIGlzQ2VsbEFsaWduZWQocCkgJiYgcDsKIH0KIAotdm9pZCBN
YXJrZWRTcGFjZTo6bWFya0NvbnNlcnZhdGl2ZWx5KE1hcmtTdGFjayYgbWFya1N0YWNrLCB2b2lk
KiBzdGFydCwgdm9pZCogZW5kKQordm9pZCBNYXJrZWRTcGFjZTo6bWFya0NvbnNlcnZhdGl2ZWx5
KENvbnNlcnZhdGl2ZVNldCYgY29uc2VydmF0aXZlU2V0LCB2b2lkKiBzdGFydCwgdm9pZCogZW5k
KQogewogI2lmIE9TKFdJTkNFKQogICAgIGlmIChzdGFydCA+IGVuZCkgewpAQCAtMjQ0LDcgKzI0
MCw2IEBAIHZvaWQgTWFya2VkU3BhY2U6Om1hcmtDb25zZXJ2YXRpdmVseShNYXIKICAgICB3aGls
ZSAocCAhPSBlKSB7CiAgICAgICAgIGNoYXIqIHggPSAqcCsrOwogICAgICAgICBpZiAoaXNQb3Nz
aWJsZUNlbGwoeCkpIHsKLSAgICAgICAgICAgIHNpemVfdCB1c2VkQmxvY2tzOwogICAgICAgICAg
ICAgdWludHB0cl90IHhBc0JpdHMgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oeCk7CiAg
ICAgICAgICAgICB4QXNCaXRzICY9IENFTExfQUxJR05fTUFTSzsKIApAQCAtMjU0LDExICsyNDks
MzAgQEAgdm9pZCBNYXJrZWRTcGFjZTo6bWFya0NvbnNlcnZhdGl2ZWx5KE1hcgogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBDb2xsZWN0b3JCbG9jayogYmxvY2tBZGRy
ID0gcmVpbnRlcnByZXRfY2FzdDxDb2xsZWN0b3JCbG9jayo+KHhBc0JpdHMgLSBvZmZzZXQpOwot
ICAgICAgICAgICAgdXNlZEJsb2NrcyA9IG1faGVhcC51c2VkQmxvY2tzOworICAgICAgICAgICAg
c2l6ZV90IHVzZWRCbG9ja3MgPSBtX2hlYXAudXNlZEJsb2NrczsKICAgICAgICAgICAgIGZvciAo
c2l6ZV90IGJsb2NrID0gMDsgYmxvY2sgPCB1c2VkQmxvY2tzOyBibG9jaysrKSB7CiAgICAgICAg
ICAgICAgICAgaWYgKG1faGVhcC5jb2xsZWN0b3JCbG9jayhibG9jaykgIT0gYmxvY2tBZGRyKQog
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBtYXJrU3RhY2su
YXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4oeEFzQml0cykpOworCisgICAgICAgICAg
ICAgICAgLy8geCBpcyBhIHBvaW50ZXIgaW50byB0aGUgaGVhcC4gTm93LCB2ZXJpZnkgdGhhdCB0
aGUgY2VsbCBpdAorICAgICAgICAgICAgICAgIC8vIHBvaW50cyB0byBpcyBsaXZlLiAoSWYgdGhl
IGNlbGwgaXMgZGVhZCwgd2UgbXVzdCBub3QgbWFyayBpdCwKKyAgICAgICAgICAgICAgICAvLyBz
aW5jZSB0aGF0IHdvdWxkIHJldml2ZSBpdCBpbiBhIHpvbWJpZSBzdGF0ZS4pCisgICAgICAgICAg
ICAgICAgaWYgKGJsb2NrIDwgbV9oZWFwLm5leHRCbG9jaykgeworICAgICAgICAgICAgICAgICAg
ICBjb25zZXJ2YXRpdmVTZXQuYWRkKHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4oeEFzQml0cykp
OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgCisgICAgICAgICAgICAgICAgc2l6ZV90IGNlbGxPZmZzZXQgPSBvZmZzZXQgLyBD
RUxMX1NJWkU7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKGJsb2NrID09
IG1faGVhcC5uZXh0QmxvY2sgJiYgY2VsbE9mZnNldCA8IG1faGVhcC5uZXh0Q2VsbCkgeworICAg
ICAgICAgICAgICAgICAgICBjb25zZXJ2YXRpdmVTZXQuYWRkKHJlaW50ZXJwcmV0X2Nhc3Q8SlND
ZWxsKj4oeEFzQml0cykpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKGJsb2NrQWRkci0+
bWFya2VkLmdldChjZWxsT2Zmc2V0KSkgeworICAgICAgICAgICAgICAgICAgICBjb25zZXJ2YXRp
dmVTZXQuYWRkKHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4oeEFzQml0cykpOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXJrZWRT
cGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcmtl
ZFNwYWNlLmgJKHJldmlzaW9uIDc2MzA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTWFya2VkU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsOCArNTUsNiBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgc2l6ZV90IG51bUJsb2NrczsKICAgICAgICAgc2l6ZV90IHVzZWRC
bG9ja3M7CiAKLSAgICAgICAgYm9vbCBkaWRTaHJpbms7Ci0KICAgICAgICAgQ29sbGVjdG9yQmxv
Y2sqIGNvbGxlY3RvckJsb2NrKHNpemVfdCBpbmRleCkgY29uc3QKICAgICAgICAgewogICAgICAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENvbGxlY3RvckJsb2NrKj4oYmxvY2tzW2luZGV4XS5i
YXNlKCkpOwpAQCAtODcsNyArODUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBXZWFr
R0NIYW5kbGUqIGFkZFdlYWtHQ0hhbmRsZShKU0NlbGwqKTsKIAotICAgICAgICB2b2lkIG1hcmtD
b25zZXJ2YXRpdmVseShNYXJrU3RhY2smLCB2b2lkKiBzdGFydCwgdm9pZCogZW5kKTsKKyAgICAg
ICAgdm9pZCBtYXJrQ29uc2VydmF0aXZlbHkoQ29uc2VydmF0aXZlU2V0Jiwgdm9pZCogc3RhcnQs
IHZvaWQqIGVuZCk7CiAKICAgICAgICAgc3RhdGljIGJvb2wgaXNOdW1iZXIoSlNDZWxsKik7CiAg
ICAgICAgIApAQCAtMTE1LDggKzExMyw2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZv
aWQgbWFya1Jvb3RzKCk7CiAKLSAgICAgICAgYm9vbCBkaWRTaHJpbmsoKSB7IHJldHVybiBtX2hl
YXAuZGlkU2hyaW5rOyB9Ci0gICAgICAgIAogICAgIHByaXZhdGU6CiAgICAgICAgIENvbGxlY3Rv
ckhlYXAgbV9oZWFwOwogICAgICAgICBKU0dsb2JhbERhdGEqIG1fZ2xvYmFsRGF0YTsK
</data>
<flag name="review"
          id="71081"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>