<?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>144925</bug_id>
          
          <creation_ts>2015-05-12 12:49:24 -0700</creation_ts>
          <short_desc>Refactor MachineStackMarker.cpp so that it&apos;s easier to reason about MachineThreads::Thread.</short_desc>
          <delta_ts>2015-05-12 14:23:00 -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>JavaScriptCore</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>144924</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mmirman</cc>
    
    <cc>msaboff</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1094239</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-05-12 12:49:24 -0700</bug_when>
    <thetext>Currently, the code in MachineStackMarker.cpp is written as a bunch of functions that operate on the platformThread value in the MachineThreads::Thread struct.  Instead, we can apply better OO encapsulation and convert all these functions into methods of the MachineThreads::Thread struct.

This will also make it easier to reason about the fix for https://bugs.webkit.org/show_bug.cgi?id=144924 later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094242</commentid>
    <comment_count>1</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-05-12 12:52:29 -0700</bug_when>
    <thetext>&lt;rdar://problem/18736465&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094246</commentid>
    <comment_count>2</comment_count>
      <attachid>252977</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-05-12 13:03:03 -0700</bug_when>
    <thetext>Created attachment 252977
the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094248</commentid>
    <comment_count>3</comment_count>
      <attachid>252977</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-05-12 13:08:54 -0700</bug_when>
    <thetext>Comment on attachment 252977
the patch.

I think I can improve the readability a little more.  Will upload a 2nd patch shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094253</commentid>
    <comment_count>4</comment_count>
      <attachid>252979</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-05-12 13:38:00 -0700</bug_when>
    <thetext>Created attachment 252979
patch 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094254</commentid>
    <comment_count>5</comment_count>
      <attachid>252980</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-05-12 13:44:39 -0700</bug_when>
    <thetext>Created attachment 252980
patch 3: with build fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094257</commentid>
    <comment_count>6</comment_count>
      <attachid>252982</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-05-12 13:51:22 -0700</bug_when>
    <thetext>Created attachment 252982
patch 4: build fix 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094258</commentid>
    <comment_count>7</comment_count>
      <attachid>252982</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-05-12 14:02:29 -0700</bug_when>
    <thetext>Comment on attachment 252982
patch 4: build fix 2

r=me
Make sure Windows EWS builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094267</commentid>
    <comment_count>8</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-05-12 14:23:00 -0700</bug_when>
    <thetext>The EWS bots are happy.

Landed in r184218: &lt;http://trac.webkit.org/r184218&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252977</attachid>
            <date>2015-05-12 13:03:03 -0700</date>
            <delta_ts>2015-05-12 13:38:00 -0700</delta_ts>
            <desc>the patch.</desc>
            <filename>bug-144925.patch</filename>
            <type>text/plain</type>
            <size>12029</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg0MjExKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBA
CisyMDE1LTA1LTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZWZhY3RvciBNYWNoaW5lU3RhY2tNYXJrZXIuY3BwIHNvIHRoYXQgaXQncyBlYXNpZXIgdG8gcmVh
c29uIGFib3V0IE1hY2hpbmVUaHJlYWRzOjpUaHJlYWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ5MjUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHksIHRoZSBjb2RlIGluIE1hY2hpbmVT
dGFja01hcmtlci5jcHAgaXMgd3JpdHRlbiBhcyBhIGJ1bmNoIG9mIGZ1bmN0aW9ucyB0aGF0Cisg
ICAgICAgIG9wZXJhdGUgb24gdGhlIHBsYXRmb3JtVGhyZWFkIHZhbHVlIGluIHRoZSBNYWNoaW5l
VGhyZWFkczo6VGhyZWFkIHN0cnVjdC4gIEluc3RlYWQsIHdlCisgICAgICAgIGNhbiBhcHBseSBi
ZXR0ZXIgT08gZW5jYXBzdWxhdGlvbiBhbmQgY29udmVydCBhbGwgdGhlc2UgZnVuY3Rpb25zIGlu
dG8gbWV0aG9kcyBvZiB0aGUKKyAgICAgICAgTWFjaGluZVRocmVhZHM6OlRocmVhZCBzdHJ1Y3Qu
CisKKyAgICAgICAgVGhpcyB3aWxsIGFsc28gbWFrZSBpdCBlYXNpZXIgdG8gcmVhc29uIGFib3V0
IHRoZSBmaXggZm9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDQ5MjQgbGF0ZXIuCisKKyAgICAgICAgKiBoZWFwL01hY2hpbmVTdGFja01hcmtlci5j
cHA6CisgICAgICAgIChKU0M6OmdldEN1cnJlbnRQbGF0Zm9ybVRocmVhZCk6CisgICAgICAgIChK
U0M6Ok1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OlRocmVhZCk6CisgICAgICAgIChKU0M6Ok1hY2hp
bmVUaHJlYWRzOjpUaHJlYWQ6Om9wZXJhdG9yIT0pOgorICAgICAgICAoSlNDOjpNYWNoaW5lVGhy
ZWFkczo6VGhyZWFkOjpvcGVyYXRvcj09KToKKyAgICAgICAgKEpTQzo6TWFjaGluZVRocmVhZHM6
OmFkZEN1cnJlbnRUaHJlYWQpOgorICAgICAgICAoSlNDOjpNYWNoaW5lVGhyZWFkczo6cmVtb3Zl
VGhyZWFkSWZGb3VuZCk6CisgICAgICAgIChKU0M6Ok1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OnN1
c3BlbmQpOgorICAgICAgICAoSlNDOjpNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpyZXN1bWUpOgor
ICAgICAgICAoSlNDOjpNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpnZXRSZWdpc3RlcnMpOgorICAg
ICAgICAoSlNDOjpNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpzdGFja1BvaW50ZXJGb3IpOgorICAg
ICAgICAoSlNDOjpNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpmcmVlUmVnaXN0ZXJzKToKKyAgICAg
ICAgKEpTQzo6TWFjaGluZVRocmVhZHM6OlRocmVhZDo6Y2FwdHVyZVN0YWNrKToKKyAgICAgICAg
KEpTQzo6TWFjaGluZVRocmVhZHM6OnRyeUNvcHlPdGhlclRocmVhZFN0YWNrKToKKyAgICAgICAg
KEpTQzo6TWFjaGluZVRocmVhZHM6OnRyeUNvcHlPdGhlclRocmVhZFN0YWNrcyk6CisgICAgICAg
IChKU0M6OmVxdWFsVGhyZWFkKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6c3VzcGVuZFRocmVh
ZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OnJlc3VtZVRocmVhZCk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OmdldFBsYXRmb3JtVGhyZWFkUmVnaXN0ZXJzKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6b3RoZXJUaHJlYWRTdGFja1BvaW50ZXIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpm
cmVlUGxhdGZvcm1UaHJlYWRSZWdpc3RlcnMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpvdGhl
clRocmVhZFN0YWNrKTogRGVsZXRlZC4KKwogMjAxNS0wNS0xMSAgRmlsaXAgUGl6bG8gIDxmcGl6
bG9AYXBwbGUuY29tPgogCiAgICAgICAgIE9TUiBhdmFpbGFiaWxpdHkgYW5hbHlzaXMgd291bGQg
YmUgbW9yZSBzY2FsYWJsZSAoYW5kIGNvcnJlY3QpIGlmIGl0IGRpZCBtb3JlIGxpdmVuZXNzIHBy
dW5pbmcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hY2hpbmVTdGFja01hcmtl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0
YWNrTWFya2VyLmNwcAkocmV2aXNpb24gMTg0MjA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ2LDEzICsx
NDYsNTAgQEAgc3RhdGljIEFjdGl2ZU1hY2hpbmVUaHJlYWRzTWFuYWdlciYgYWN0aQogICAgIHJl
dHVybiAqbWFuYWdlcjsKIH0KICAgICAKK3N0YXRpYyBpbmxpbmUgUGxhdGZvcm1UaHJlYWQgZ2V0
Q3VycmVudFBsYXRmb3JtVGhyZWFkKCkKK3sKKyNpZiBPUyhEQVJXSU4pCisgICAgcmV0dXJuIHB0
aHJlYWRfbWFjaF90aHJlYWRfbnAocHRocmVhZF9zZWxmKCkpOworI2VsaWYgT1MoV0lORE9XUykK
KyAgICByZXR1cm4gR2V0Q3VycmVudFRocmVhZCgpOworI2VsaWYgVVNFKFBUSFJFQURTKQorICAg
IHJldHVybiBwdGhyZWFkX3NlbGYoKTsKKyNlbmRpZgorfQogCiBjbGFzcyBNYWNoaW5lVGhyZWFk
czo6VGhyZWFkIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBU
aHJlYWQoY29uc3QgUGxhdGZvcm1UaHJlYWQmIHBsYXRUaHJlYWQsIHZvaWQqIGJhc2UpCi0gICAg
ICAgIDogcGxhdGZvcm1UaHJlYWQocGxhdFRocmVhZCkKLSAgICAgICAgLCBzdGFja0Jhc2UoYmFz
ZSkKKworI2lmIE9TKERBUldJTikKKyNpZiBDUFUoWDg2KQorICAgIHR5cGVkZWYgaTM4Nl90aHJl
YWRfc3RhdGVfdCBSZWdpc3RlcnM7CisjZWxpZiBDUFUoWDg2XzY0KQorICAgIHR5cGVkZWYgeDg2
X3RocmVhZF9zdGF0ZTY0X3QgUmVnaXN0ZXJzOworI2VsaWYgQ1BVKFBQQykKKyAgICB0eXBlZGVm
IHBwY190aHJlYWRfc3RhdGVfdCBSZWdpc3RlcnM7CisjZWxpZiBDUFUoUFBDNjQpCisgICAgdHlw
ZWRlZiBwcGNfdGhyZWFkX3N0YXRlNjRfdCBSZWdpc3RlcnM7CisjZWxpZiBDUFUoQVJNKQorICAg
IHR5cGVkZWYgYXJtX3RocmVhZF9zdGF0ZV90IFJlZ2lzdGVyczsKKyNlbGlmIENQVShBUk02NCkK
KyAgICB0eXBlZGVmIGFybV90aHJlYWRfc3RhdGU2NF90IFJlZ2lzdGVyczsKKyNlbHNlCisjZXJy
b3IgVW5rbm93biBBcmNoaXRlY3R1cmUKKyNlbmRpZgorICAgIAorI2VsaWYgT1MoV0lORE9XUykK
KyAgICB0eXBlZGVmIENPTlRFWFQgUmVnaXN0ZXJzOworI2VsaWYgVVNFKFBUSFJFQURTKQorICAg
IHR5cGVkZWYgcHRocmVhZF9hdHRyX3QgUmVnaXN0ZXJzOworI2Vsc2UKKyNlcnJvciBOZWVkIGEg
dGhyZWFkIHJlZ2lzdGVyIHN0cnVjdCBmb3IgdGhpcyBwbGF0Zm9ybQorI2VuZGlmCisgICAgCisK
KyAgICBUaHJlYWQoKQorICAgICAgICA6IHBsYXRmb3JtVGhyZWFkKGdldEN1cnJlbnRQbGF0Zm9y
bVRocmVhZCgpKQorICAgICAgICAsIHN0YWNrQmFzZSh3dGZUaHJlYWREYXRhKCkuc3RhY2soKS5v
cmlnaW4oKSkKICAgICB7CiAjaWYgVVNFKFBUSFJFQURTKSAmJiAhT1MoV0lORE9XUykgJiYgIU9T
KERBUldJTikgJiYgZGVmaW5lZChTQV9SRVNUQVJUKQogICAgICAgICAvLyBpZiB3ZSBoYXZlIFNB
X1JFU1RBUlQsIGVuYWJsZSBTSUdVU1IyIGRlYnVnZ2luZyBtZWNoYW5pc20KQEAgLTE2OSw2ICsy
MDYsMTcgQEAgcHVibGljOgogI2VuZGlmCiAgICAgfQogCisgICAgaW5saW5lIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBQbGF0Zm9ybVRocmVhZCYgb3RoZXIpIGNvbnN0OworICAgIGlubGluZSBib29s
IG9wZXJhdG9yIT0oY29uc3QgUGxhdGZvcm1UaHJlYWQmIG90aGVyKSBjb25zdCB7IHJldHVybiAh
KCp0aGlzID09IG90aGVyKTsgfQorCisgICAgaW5saW5lIGJvb2wgc3VzcGVuZCgpOworICAgIGlu
bGluZSB2b2lkIHJlc3VtZSgpOworICAgIHNpemVfdCBnZXRSZWdpc3RlcnMoUmVnaXN0ZXJzJik7
CisgICAgdm9pZCBmcmVlUmVnaXN0ZXJzKFJlZ2lzdGVycyYpOworICAgIHN0ZDo6cGFpcjx2b2lk
Kiwgc2l6ZV90PiBjYXB0dXJlU3RhY2soY29uc3QgUmVnaXN0ZXJzJik7CisKKyAgICBzdGF0aWMg
aW5saW5lIHZvaWQqIHN0YWNrUG9pbnRlckZvcihjb25zdCBSZWdpc3RlcnMmIHJlZ3MpOworCiAg
ICAgVGhyZWFkKiBuZXh0OwogICAgIFBsYXRmb3JtVGhyZWFkIHBsYXRmb3JtVGhyZWFkOwogICAg
IHZvaWQqIHN0YWNrQmFzZTsKQEAgLTE5OSwyMyArMjQ3LDEyIEBAIE1hY2hpbmVUaHJlYWRzOjp+
TWFjaGluZVRocmVhZHMoKQogICAgIH0KIH0KIAotc3RhdGljIGlubGluZSBQbGF0Zm9ybVRocmVh
ZCBnZXRDdXJyZW50UGxhdGZvcm1UaHJlYWQoKQotewotI2lmIE9TKERBUldJTikKLSAgICByZXR1
cm4gcHRocmVhZF9tYWNoX3RocmVhZF9ucChwdGhyZWFkX3NlbGYoKSk7Ci0jZWxpZiBPUyhXSU5E
T1dTKQotICAgIHJldHVybiBHZXRDdXJyZW50VGhyZWFkKCk7Ci0jZWxpZiBVU0UoUFRIUkVBRFMp
Ci0gICAgcmV0dXJuIHB0aHJlYWRfc2VsZigpOwotI2VuZGlmCi19Ci0KLXN0YXRpYyBpbmxpbmUg
Ym9vbCBlcXVhbFRocmVhZChjb25zdCBQbGF0Zm9ybVRocmVhZCYgZmlyc3QsIGNvbnN0IFBsYXRm
b3JtVGhyZWFkJiBzZWNvbmQpCitpbmxpbmUgYm9vbCBNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpv
cGVyYXRvcj09KGNvbnN0IFBsYXRmb3JtVGhyZWFkJiBvdGhlcikgY29uc3QKIHsKICNpZiBPUyhE
QVJXSU4pIHx8IE9TKFdJTkRPV1MpCi0gICAgcmV0dXJuIGZpcnN0ID09IHNlY29uZDsKKyAgICBy
ZXR1cm4gcGxhdGZvcm1UaHJlYWQgPT0gb3RoZXI7CiAjZWxpZiBVU0UoUFRIUkVBRFMpCi0gICAg
cmV0dXJuICEhcHRocmVhZF9lcXVhbChmaXJzdCwgc2Vjb25kKTsKKyAgICByZXR1cm4gISFwdGhy
ZWFkX2VxdWFsKHBsYXRmb3JtVGhyZWFkLCBvdGhlcik7CiAjZWxzZQogI2Vycm9yIE5lZWQgYSB3
YXkgdG8gY29tcGFyZSB0aHJlYWRzIG9uIHRoaXMgcGxhdGZvcm0KICNlbmRpZgpAQCAtMjMxLDcg
KzI2OCw3IEBAIHZvaWQgTWFjaGluZVRocmVhZHM6OmFkZEN1cnJlbnRUaHJlYWQoKQogICAgIH0K
IAogICAgIHRocmVhZFNwZWNpZmljU2V0KG1fdGhyZWFkU3BlY2lmaWMsIHRoaXMpOwotICAgIFRo
cmVhZCogdGhyZWFkID0gbmV3IFRocmVhZChnZXRDdXJyZW50UGxhdGZvcm1UaHJlYWQoKSwgd3Rm
VGhyZWFkRGF0YSgpLnN0YWNrKCkub3JpZ2luKCkpOworICAgIFRocmVhZCogdGhyZWFkID0gbmV3
IFRocmVhZCgpOwogCiAgICAgTXV0ZXhMb2NrZXIgbG9jayhtX3JlZ2lzdGVyZWRUaHJlYWRzTXV0
ZXgpOwogCkBAIC0yNTgsMTUgKzI5NSwxNCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBQbGF0Zm9ybVRo
cmVhZD4KIHZvaWQgTWFjaGluZVRocmVhZHM6OnJlbW92ZVRocmVhZElmRm91bmQoUGxhdGZvcm1U
aHJlYWQgcGxhdGZvcm1UaHJlYWQpCiB7CiAgICAgTXV0ZXhMb2NrZXIgbG9jayhtX3JlZ2lzdGVy
ZWRUaHJlYWRzTXV0ZXgpOwotICAgIGlmIChlcXVhbFRocmVhZChwbGF0Zm9ybVRocmVhZCwgbV9y
ZWdpc3RlcmVkVGhyZWFkcy0+cGxhdGZvcm1UaHJlYWQpKSB7Ci0gICAgICAgIFRocmVhZCogdCA9
IG1fcmVnaXN0ZXJlZFRocmVhZHM7CisgICAgVGhyZWFkKiB0ID0gbV9yZWdpc3RlcmVkVGhyZWFk
czsKKyAgICBpZiAoKnQgPT0gcGxhdGZvcm1UaHJlYWQpIHsKICAgICAgICAgbV9yZWdpc3RlcmVk
VGhyZWFkcyA9IG1fcmVnaXN0ZXJlZFRocmVhZHMtPm5leHQ7CiAgICAgICAgIGRlbGV0ZSB0Owog
ICAgIH0gZWxzZSB7CiAgICAgICAgIFRocmVhZCogbGFzdCA9IG1fcmVnaXN0ZXJlZFRocmVhZHM7
Ci0gICAgICAgIFRocmVhZCogdDsKICAgICAgICAgZm9yICh0ID0gbV9yZWdpc3RlcmVkVGhyZWFk
cy0+bmV4dDsgdDsgdCA9IHQtPm5leHQpIHsKLSAgICAgICAgICAgIGlmIChlcXVhbFRocmVhZCh0
LT5wbGF0Zm9ybVRocmVhZCwgcGxhdGZvcm1UaHJlYWQpKSB7CisgICAgICAgICAgICBpZiAoKnQg
PT0gcGxhdGZvcm1UaHJlYWQpIHsKICAgICAgICAgICAgICAgICBsYXN0LT5uZXh0ID0gdC0+bmV4
dDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTI4NSw3ICszMjEs
NyBAQCB2b2lkIE1hY2hpbmVUaHJlYWRzOjpnYXRoZXJGcm9tQ3VycmVudFRoCiAgICAgY29uc2Vy
dmF0aXZlUm9vdHMuYWRkKHN0YWNrVG9wLCBzdGFja09yaWdpbiwgaml0U3R1YlJvdXRpbmVzLCBj
b2RlQmxvY2tzKTsKIH0KIAotc3RhdGljIGlubGluZSBib29sIHN1c3BlbmRUaHJlYWQoY29uc3Qg
UGxhdGZvcm1UaHJlYWQmIHBsYXRmb3JtVGhyZWFkKQoraW5saW5lIGJvb2wgTWFjaGluZVRocmVh
ZHM6OlRocmVhZDo6c3VzcGVuZCgpCiB7CiAjaWYgT1MoREFSV0lOKQogICAgIGtlcm5fcmV0dXJu
X3QgcmVzdWx0ID0gdGhyZWFkX3N1c3BlbmQocGxhdGZvcm1UaHJlYWQpOwpAQCAtMzAyLDcgKzMz
OCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzdXNwZW5kVGhyZWFkKGNvbnN0IFAKICNlbmRpZgog
fQogCi1zdGF0aWMgaW5saW5lIHZvaWQgcmVzdW1lVGhyZWFkKGNvbnN0IFBsYXRmb3JtVGhyZWFk
JiBwbGF0Zm9ybVRocmVhZCkKK2lubGluZSB2b2lkIE1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OnJl
c3VtZSgpCiB7CiAjaWYgT1MoREFSV0lOKQogICAgIHRocmVhZF9yZXN1bWUocGxhdGZvcm1UaHJl
YWQpOwpAQCAtMzE1LDM4ICszNTEsOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcmVzdW1lVGhyZWFk
KGNvbnN0IFBsCiAjZW5kaWYKIH0KIAotdHlwZWRlZiB1bnNpZ25lZCBsb25nIHVzd29yZF90OyAv
LyB3b3JkIHNpemUsIGFzc3VtZWQgdG8gYmUgZWl0aGVyIDMyIG9yIDY0IGJpdAotCi0jaWYgT1Mo
REFSV0lOKQotCi0jaWYgQ1BVKFg4NikKLXR5cGVkZWYgaTM4Nl90aHJlYWRfc3RhdGVfdCBQbGF0
Zm9ybVRocmVhZFJlZ2lzdGVyczsKLSNlbGlmIENQVShYODZfNjQpCi10eXBlZGVmIHg4Nl90aHJl
YWRfc3RhdGU2NF90IFBsYXRmb3JtVGhyZWFkUmVnaXN0ZXJzOwotI2VsaWYgQ1BVKFBQQykKLXR5
cGVkZWYgcHBjX3RocmVhZF9zdGF0ZV90IFBsYXRmb3JtVGhyZWFkUmVnaXN0ZXJzOwotI2VsaWYg
Q1BVKFBQQzY0KQotdHlwZWRlZiBwcGNfdGhyZWFkX3N0YXRlNjRfdCBQbGF0Zm9ybVRocmVhZFJl
Z2lzdGVyczsKLSNlbGlmIENQVShBUk0pCi10eXBlZGVmIGFybV90aHJlYWRfc3RhdGVfdCBQbGF0
Zm9ybVRocmVhZFJlZ2lzdGVyczsKLSNlbGlmIENQVShBUk02NCkKLXR5cGVkZWYgYXJtX3RocmVh
ZF9zdGF0ZTY0X3QgUGxhdGZvcm1UaHJlYWRSZWdpc3RlcnM7Ci0jZWxzZQotI2Vycm9yIFVua25v
d24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYKLQotI2VsaWYgT1MoV0lORE9XUykKLXR5cGVkZWYgQ09O
VEVYVCBQbGF0Zm9ybVRocmVhZFJlZ2lzdGVyczsKLSNlbGlmIFVTRShQVEhSRUFEUykKLXR5cGVk
ZWYgcHRocmVhZF9hdHRyX3QgUGxhdGZvcm1UaHJlYWRSZWdpc3RlcnM7Ci0jZWxzZQotI2Vycm9y
IE5lZWQgYSB0aHJlYWQgcmVnaXN0ZXIgc3RydWN0IGZvciB0aGlzIHBsYXRmb3JtCi0jZW5kaWYK
LQotc3RhdGljIHNpemVfdCBnZXRQbGF0Zm9ybVRocmVhZFJlZ2lzdGVycyhjb25zdCBQbGF0Zm9y
bVRocmVhZCYgcGxhdGZvcm1UaHJlYWQsIFBsYXRmb3JtVGhyZWFkUmVnaXN0ZXJzJiByZWdzKQor
c2l6ZV90IE1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OmdldFJlZ2lzdGVycyhNYWNoaW5lVGhyZWFk
czo6VGhyZWFkOjpSZWdpc3RlcnMmIHJlZ3MpCiB7CiAjaWYgT1MoREFSV0lOKQotCiAjaWYgQ1BV
KFg4NikKICAgICB1bnNpZ25lZCB1c2VyX2NvdW50ID0gc2l6ZW9mKHJlZ3MpL3NpemVvZihpbnQp
OwogICAgIHRocmVhZF9zdGF0ZV9mbGF2b3JfdCBmbGF2b3IgPSBpMzg2X1RIUkVBRF9TVEFURTsK
QEAgLTM3NSw3ICszODIsNyBAQCBzdGF0aWMgc2l6ZV90IGdldFBsYXRmb3JtVGhyZWFkUmVnaXN0
ZXJzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkphdmFTY3JpcHQgZ2FyYmFnZSBjb2xs
ZWN0aW9uIGZhaWxlZCBiZWNhdXNlIHRocmVhZF9nZXRfc3RhdGUgcmV0dXJuZWQgYW4gZXJyb3Ig
KCVkKS4gVGhpcyBpcyBwcm9iYWJseSB0aGUgcmVzdWx0IG9mIHJ1bm5pbmcgaW5zaWRlIFJvc2V0
dGEsIHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQuIiwgcmVzdWx0KTsKICAgICAgICAgQ1JBU0goKTsK
ICAgICB9Ci0gICAgcmV0dXJuIHVzZXJfY291bnQgKiBzaXplb2YodXN3b3JkX3QpOworICAgIHJl
dHVybiB1c2VyX2NvdW50ICogc2l6ZW9mKHVpbnRwdHJfdCk7CiAvLyBlbmQgT1MoREFSV0lOKQog
CiAjZWxpZiBPUyhXSU5ET1dTKQpAQCAtMzk5LDcgKzQwNiw3IEBAIHN0YXRpYyBzaXplX3QgZ2V0
UGxhdGZvcm1UaHJlYWRSZWdpc3RlcnMKICNlbmRpZgogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQq
IG90aGVyVGhyZWFkU3RhY2tQb2ludGVyKGNvbnN0IFBsYXRmb3JtVGhyZWFkUmVnaXN0ZXJzJiBy
ZWdzKQoraW5saW5lIHZvaWQqIE1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OnN0YWNrUG9pbnRlckZv
cihjb25zdCBNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpSZWdpc3RlcnMmIHJlZ3MpCiB7CiAjaWYg
T1MoREFSV0lOKQogCkBAIC00NjcsNyArNDc0LDcgQEAgc3RhdGljIGlubGluZSB2b2lkKiBvdGhl
clRocmVhZFN0YWNrUG9pbgogI2VuZGlmCiB9CiAKLXN0YXRpYyB2b2lkIGZyZWVQbGF0Zm9ybVRo
cmVhZFJlZ2lzdGVycyhQbGF0Zm9ybVRocmVhZFJlZ2lzdGVycyYgcmVncykKK3ZvaWQgTWFjaGlu
ZVRocmVhZHM6OlRocmVhZDo6ZnJlZVJlZ2lzdGVycyhNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpS
ZWdpc3RlcnMmIHJlZ3MpCiB7CiAjaWYgVVNFKFBUSFJFQURTKSAmJiAhT1MoV0lORE9XUykgJiYg
IU9TKERBUldJTikKICAgICBwdGhyZWFkX2F0dHJfZGVzdHJveSgmcmVncyk7CkBAIC00NzYsMTMg
KzQ4MywxMiBAQCBzdGF0aWMgdm9pZCBmcmVlUGxhdGZvcm1UaHJlYWRSZWdpc3RlcnMoCiAjZW5k
aWYKIH0KIAotc3RhdGljIHN0ZDo6cGFpcjx2b2lkKiwgc2l6ZV90PiBvdGhlclRocmVhZFN0YWNr
KHZvaWQqIHN0YWNrQmFzZSwgY29uc3QgUGxhdGZvcm1UaHJlYWRSZWdpc3RlcnMmIHJlZ2lzdGVy
cykKK3N0ZDo6cGFpcjx2b2lkKiwgc2l6ZV90PiBNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpjYXB0
dXJlU3RhY2soY29uc3QgTWFjaGluZVRocmVhZHM6OlRocmVhZDo6UmVnaXN0ZXJzJiByZWdpc3Rl
cnMpCiB7CiAgICAgdm9pZCogYmVnaW4gPSBzdGFja0Jhc2U7CiAgICAgdm9pZCogZW5kID0gcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4oCiAgICAgICAgIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxz
aXplb2Yodm9pZCopPigKLSAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PigK
LSAgICAgICAgICAgICAgICBvdGhlclRocmVhZFN0YWNrUG9pbnRlcihyZWdpc3RlcnMpKSkpOwor
ICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHN0YWNrUG9pbnRlckZvcihy
ZWdpc3RlcnMpKSkpOwogICAgIGlmIChiZWdpbiA+IGVuZCkKICAgICAgICAgc3RkOjpzd2FwKGJl
Z2luLCBlbmQpOwogICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihiZWdpbiwgc3RhdGljX2Nhc3Q8
Y2hhcio+KGVuZCkgLSBzdGF0aWNfY2FzdDxjaGFyKj4oYmVnaW4pKTsKQEAgLTUxMyw5ICs1MTks
OSBAQCB2b2lkIGFzYW5VbnNhZmVNZW1jcHkodm9pZCogZHN0LCBjb25zdCB2CiAvLyB3aWxsIGRl
YWRsb2NrIGlmICd0aHJlYWQnIGhvbGRzIHRoYXQgbG9jay4KIHZvaWQgTWFjaGluZVRocmVhZHM6
OnRyeUNvcHlPdGhlclRocmVhZFN0YWNrKFRocmVhZCogdGhyZWFkLCB2b2lkKiBidWZmZXIsIHNp
emVfdCBjYXBhY2l0eSwgc2l6ZV90KiBzaXplKQogewotICAgIFBsYXRmb3JtVGhyZWFkUmVnaXN0
ZXJzIHJlZ2lzdGVyczsKLSAgICBzaXplX3QgcmVnaXN0ZXJzU2l6ZSA9IGdldFBsYXRmb3JtVGhy
ZWFkUmVnaXN0ZXJzKHRocmVhZC0+cGxhdGZvcm1UaHJlYWQsIHJlZ2lzdGVycyk7Ci0gICAgc3Rk
OjpwYWlyPHZvaWQqLCBzaXplX3Q+IHN0YWNrID0gb3RoZXJUaHJlYWRTdGFjayh0aHJlYWQtPnN0
YWNrQmFzZSwgcmVnaXN0ZXJzKTsKKyAgICBUaHJlYWQ6OlJlZ2lzdGVycyByZWdpc3RlcnM7Cisg
ICAgc2l6ZV90IHJlZ2lzdGVyc1NpemUgPSB0aHJlYWQtPmdldFJlZ2lzdGVycyhyZWdpc3RlcnMp
OworICAgIHN0ZDo6cGFpcjx2b2lkKiwgc2l6ZV90PiBzdGFjayA9IHRocmVhZC0+Y2FwdHVyZVN0
YWNrKHJlZ2lzdGVycyk7CiAKICAgICBib29sIGNhbkNvcHkgPSAqc2l6ZSArIHJlZ2lzdGVyc1Np
emUgKyBzdGFjay5zZWNvbmQgPD0gY2FwYWNpdHk7CiAKQEAgLTUyNyw3ICs1MzMsNyBAQCB2b2lk
IE1hY2hpbmVUaHJlYWRzOjp0cnlDb3B5T3RoZXJUaHJlYWRTCiAgICAgICAgIG1lbWNweShzdGF0
aWNfY2FzdDxjaGFyKj4oYnVmZmVyKSArICpzaXplLCBzdGFjay5maXJzdCwgc3RhY2suc2Vjb25k
KTsKICAgICAqc2l6ZSArPSBzdGFjay5zZWNvbmQ7CiAKLSAgICBmcmVlUGxhdGZvcm1UaHJlYWRS
ZWdpc3RlcnMocmVnaXN0ZXJzKTsKKyAgICB0aHJlYWQtPmZyZWVSZWdpc3RlcnMocmVnaXN0ZXJz
KTsKIH0KIAogYm9vbCBNYWNoaW5lVGhyZWFkczo6dHJ5Q29weU90aGVyVGhyZWFkU3RhY2tzKE11
dGV4TG9ja2VyJiwgdm9pZCogYnVmZmVyLCBzaXplX3QgY2FwYWNpdHksIHNpemVfdCogc2l6ZSkK
QEAgLTU0MSw4ICs1NDcsOCBAQCBib29sIE1hY2hpbmVUaHJlYWRzOjp0cnlDb3B5T3RoZXJUaHJl
YWRTCiAKICAgICBUaHJlYWQqIHByZXZpb3VzVGhyZWFkID0gbnVsbHB0cjsKICAgICBmb3IgKFRo
cmVhZCogdGhyZWFkID0gbV9yZWdpc3RlcmVkVGhyZWFkczsgdGhyZWFkOyBpbmRleCsrKSB7Ci0g
ICAgICAgIGlmICghZXF1YWxUaHJlYWQodGhyZWFkLT5wbGF0Zm9ybVRocmVhZCwgY3VycmVudFBs
YXRmb3JtVGhyZWFkKSkgewotICAgICAgICAgICAgYm9vbCBzdWNjZXNzID0gc3VzcGVuZFRocmVh
ZCh0aHJlYWQtPnBsYXRmb3JtVGhyZWFkKTsKKyAgICAgICAgaWYgKCp0aHJlYWQgIT0gY3VycmVu
dFBsYXRmb3JtVGhyZWFkKSB7CisgICAgICAgICAgICBib29sIHN1Y2Nlc3MgPSB0aHJlYWQtPnN1
c3BlbmQoKTsKICNpZiBPUyhEQVJXSU4pCiAgICAgICAgICAgICBpZiAoIXN1Y2Nlc3MpIHsKICAg
ICAgICAgICAgICAgICBpZiAoIW51bWJlck9mVGhyZWFkcykgewpAQCAtNTg1LDEzICs1OTEsMTMg
QEAgYm9vbCBNYWNoaW5lVGhyZWFkczo6dHJ5Q29weU90aGVyVGhyZWFkUwogICAgIH0KIAogICAg
IGZvciAoVGhyZWFkKiB0aHJlYWQgPSBtX3JlZ2lzdGVyZWRUaHJlYWRzOyB0aHJlYWQ7IHRocmVh
ZCA9IHRocmVhZC0+bmV4dCkgewotICAgICAgICBpZiAoIWVxdWFsVGhyZWFkKHRocmVhZC0+cGxh
dGZvcm1UaHJlYWQsIGN1cnJlbnRQbGF0Zm9ybVRocmVhZCkpCisgICAgICAgIGlmICgqdGhyZWFk
ICE9IGN1cnJlbnRQbGF0Zm9ybVRocmVhZCkKICAgICAgICAgICAgIHRyeUNvcHlPdGhlclRocmVh
ZFN0YWNrKHRocmVhZCwgYnVmZmVyLCBjYXBhY2l0eSwgc2l6ZSk7CiAgICAgfQogCiAgICAgZm9y
IChUaHJlYWQqIHRocmVhZCA9IG1fcmVnaXN0ZXJlZFRocmVhZHM7IHRocmVhZDsgdGhyZWFkID0g
dGhyZWFkLT5uZXh0KSB7Ci0gICAgICAgIGlmICghZXF1YWxUaHJlYWQodGhyZWFkLT5wbGF0Zm9y
bVRocmVhZCwgY3VycmVudFBsYXRmb3JtVGhyZWFkKSkKLSAgICAgICAgICAgIHJlc3VtZVRocmVh
ZCh0aHJlYWQtPnBsYXRmb3JtVGhyZWFkKTsKKyAgICAgICAgaWYgKCp0aHJlYWQgIT0gY3VycmVu
dFBsYXRmb3JtVGhyZWFkKQorICAgICAgICAgICAgdGhyZWFkLT5yZXN1bWUoKTsKICAgICB9CiAK
ICAgICBmb3IgKFRocmVhZCogdGhyZWFkID0gdGhyZWFkc1RvQmVEZWxldGVkOyB0aHJlYWQ7ICkg
ewo=
</data>
<flag name="review"
          id="277830"
          type_id="1"
          status="-"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252979</attachid>
            <date>2015-05-12 13:38:00 -0700</date>
            <delta_ts>2015-05-12 13:44:39 -0700</delta_ts>
            <desc>patch 2</desc>
            <filename>bug-144925.patch</filename>
            <type>text/plain</type>
            <size>12084</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg0MjE0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBA
CisyMDE1LTA1LTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZWZhY3RvciBNYWNoaW5lU3RhY2tNYXJrZXIuY3BwIHNvIHRoYXQgaXQncyBlYXNpZXIgdG8gcmVh
c29uIGFib3V0IE1hY2hpbmVUaHJlYWRzOjpUaHJlYWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ5MjUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHksIHRoZSBjb2RlIGluIE1hY2hpbmVT
dGFja01hcmtlci5jcHAgaXMgd3JpdHRlbiBhcyBhIGJ1bmNoIG9mIGZ1bmN0aW9ucyB0aGF0Cisg
ICAgICAgIG9wZXJhdGUgb24gdGhlIHBsYXRmb3JtVGhyZWFkIHZhbHVlIGluIHRoZSBNYWNoaW5l
VGhyZWFkczo6VGhyZWFkIHN0cnVjdC4gIEluc3RlYWQsIHdlCisgICAgICAgIGNhbiBhcHBseSBi
ZXR0ZXIgT08gZW5jYXBzdWxhdGlvbiBhbmQgY29udmVydCBhbGwgdGhlc2UgZnVuY3Rpb25zIGlu
dG8gbWV0aG9kcyBvZiB0aGUKKyAgICAgICAgTWFjaGluZVRocmVhZHM6OlRocmVhZCBzdHJ1Y3Qu
CisKKyAgICAgICAgVGhpcyB3aWxsIGFsc28gbWFrZSBpdCBlYXNpZXIgdG8gcmVhc29uIGFib3V0
IHRoZSBmaXggZm9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDQ5MjQgbGF0ZXIuCisKKyAgICAgICAgKiBoZWFwL01hY2hpbmVTdGFja01hcmtlci5j
cHA6CisgICAgICAgIChKU0M6OmdldEN1cnJlbnRQbGF0Zm9ybVRocmVhZCk6CisgICAgICAgIChK
U0M6Ok1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OmNyZWF0ZUZvckN1cnJlbnRUaHJlYWQpOgorICAg
ICAgICAoSlNDOjpNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpvcGVyYXRvciE9KToKKyAgICAgICAg
KEpTQzo6TWFjaGluZVRocmVhZHM6OlRocmVhZDo6b3BlcmF0b3I9PSk6CisgICAgICAgIChKU0M6
Ok1hY2hpbmVUaHJlYWRzOjphZGRDdXJyZW50VGhyZWFkKToKKyAgICAgICAgKEpTQzo6TWFjaGlu
ZVRocmVhZHM6OnJlbW92ZVRocmVhZElmRm91bmQpOgorICAgICAgICAoSlNDOjpNYWNoaW5lVGhy
ZWFkczo6VGhyZWFkOjpzdXNwZW5kKToKKyAgICAgICAgKEpTQzo6TWFjaGluZVRocmVhZHM6OlRo
cmVhZDo6cmVzdW1lKToKKyAgICAgICAgKEpTQzo6TWFjaGluZVRocmVhZHM6OlRocmVhZDo6Z2V0
UmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6TWFjaGluZVRocmVhZHM6OlRocmVhZDo6UmVnaXN0
ZXJzOjpzdGFja1BvaW50ZXIpOgorICAgICAgICAoSlNDOjpNYWNoaW5lVGhyZWFkczo6VGhyZWFk
OjpmcmVlUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6TWFjaGluZVRocmVhZHM6OlRocmVhZDo6
Y2FwdHVyZVN0YWNrKToKKyAgICAgICAgKEpTQzo6TWFjaGluZVRocmVhZHM6OnRyeUNvcHlPdGhl
clRocmVhZFN0YWNrKToKKyAgICAgICAgKEpTQzo6TWFjaGluZVRocmVhZHM6OnRyeUNvcHlPdGhl
clRocmVhZFN0YWNrcyk6CisgICAgICAgIChKU0M6OmVxdWFsVGhyZWFkKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6c3VzcGVuZFRocmVhZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OnJlc3Vt
ZVRocmVhZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OmdldFBsYXRmb3JtVGhyZWFkUmVnaXN0
ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6b3RoZXJUaHJlYWRTdGFja1BvaW50ZXIpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpmcmVlUGxhdGZvcm1UaHJlYWRSZWdpc3RlcnMpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpvdGhlclRocmVhZFN0YWNrKTogRGVsZXRlZC4KKwogMjAxNS0w
NS0xMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIE9TUiBhdmFp
bGFiaWxpdHkgYW5hbHlzaXMgd291bGQgYmUgbW9yZSBzY2FsYWJsZSAoYW5kIGNvcnJlY3QpIGlm
IGl0IGRpZCBtb3JlIGxpdmVuZXNzIHBydW5pbmcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcAkocmV2aXNpb24gMTg0MjA4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTQ2LDEwICsxNDYsMjAgQEAgc3RhdGljIEFjdGl2ZU1hY2hpbmVUaHJl
YWRzTWFuYWdlciYgYWN0aQogICAgIHJldHVybiAqbWFuYWdlcjsKIH0KICAgICAKK3N0YXRpYyBp
bmxpbmUgUGxhdGZvcm1UaHJlYWQgZ2V0Q3VycmVudFBsYXRmb3JtVGhyZWFkKCkKK3sKKyNpZiBP
UyhEQVJXSU4pCisgICAgcmV0dXJuIHB0aHJlYWRfbWFjaF90aHJlYWRfbnAocHRocmVhZF9zZWxm
KCkpOworI2VsaWYgT1MoV0lORE9XUykKKyAgICByZXR1cm4gR2V0Q3VycmVudFRocmVhZCgpOwor
I2VsaWYgVVNFKFBUSFJFQURTKQorICAgIHJldHVybiBwdGhyZWFkX3NlbGYoKTsKKyNlbmRpZgor
fQogCiBjbGFzcyBNYWNoaW5lVGhyZWFkczo6VGhyZWFkIHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKLXB1YmxpYzoKKwogICAgIFRocmVhZChjb25zdCBQbGF0Zm9ybVRocmVhZCYgcGxh
dFRocmVhZCwgdm9pZCogYmFzZSkKICAgICAgICAgOiBwbGF0Zm9ybVRocmVhZChwbGF0VGhyZWFk
KQogICAgICAgICAsIHN0YWNrQmFzZShiYXNlKQpAQCAtMTY5LDYgKzE3OSw1MiBAQCBwdWJsaWM6
CiAjZW5kaWYKICAgICB9CiAKK3B1YmxpYzoKKyAgICBzdGF0aWMgVGhyZWFkKiBjcmVhdGVGb3JD
dXJyZW50VGhyZWFkKCkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgVGhyZWFkKGdldEN1cnJl
bnRQbGF0Zm9ybVRocmVhZCgpLCB3dGZUaHJlYWREYXRhKCkuc3RhY2soKS5vcmlnaW4oKSk7Cisg
ICAgfQorCisgICAgc3RydWN0IFJlZ2lzdGVycyB7CisgICAgICAgIGlubGluZSB2b2lkKiBzdGFj
a1BvaW50ZXIoKSBjb25zdDsKKyAgICAgICAgCisjaWYgT1MoREFSV0lOKQorI2lmIENQVShYODYp
CisgICAgICAgIHR5cGVkZWYgaTM4Nl90aHJlYWRfc3RhdGVfdCBQbGF0Zm9ybVJlZ2lzdGVyczsK
KyNlbGlmIENQVShYODZfNjQpCisgICAgICAgIHR5cGVkZWYgeDg2X3RocmVhZF9zdGF0ZTY0X3Qg
UGxhdGZvcm1SZWdpc3RlcnM7CisjZWxpZiBDUFUoUFBDKQorICAgICAgICB0eXBlZGVmIHBwY190
aHJlYWRfc3RhdGVfdCBQbGF0Zm9ybVJlZ2lzdGVyczsKKyNlbGlmIENQVShQUEM2NCkKKyAgICAg
ICAgdHlwZWRlZiBwcGNfdGhyZWFkX3N0YXRlNjRfdCBQbGF0Zm9ybVJlZ2lzdGVyczsKKyNlbGlm
IENQVShBUk0pCisgICAgICAgIHR5cGVkZWYgYXJtX3RocmVhZF9zdGF0ZV90IFBsYXRmb3JtUmVn
aXN0ZXJzOworI2VsaWYgQ1BVKEFSTTY0KQorICAgICAgICB0eXBlZGVmIGFybV90aHJlYWRfc3Rh
dGU2NF90IFBsYXRmb3JtUmVnaXN0ZXJzOworI2Vsc2UKKyNlcnJvciBVbmtub3duIEFyY2hpdGVj
dHVyZQorI2VuZGlmCisgICAgICAgIAorI2VsaWYgT1MoV0lORE9XUykKKyAgICAgICAgdHlwZWRl
ZiBDT05URVhUIFBsYXRmb3JtUmVnaXN0ZXJzOworI2VsaWYgVVNFKFBUSFJFQURTKQorICAgICAg
ICB0eXBlZGVmIHB0aHJlYWRfYXR0cl90IFBsYXRmb3JtUmVnaXN0ZXJzOworI2Vsc2UKKyNlcnJv
ciBOZWVkIGEgdGhyZWFkIHJlZ2lzdGVyIHN0cnVjdCBmb3IgdGhpcyBwbGF0Zm9ybQorI2VuZGlm
CisgICAgICAgIAorICAgICAgICBQbGF0Zm9ybVJlZ2lzdGVycyByZWdzOworICAgIH07CisgICAg
CisgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQbGF0Zm9ybVRocmVhZCYgb3RoZXIp
IGNvbnN0OworICAgIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUGxhdGZvcm1UaHJlYWQm
IG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQorCisgICAgaW5saW5l
IGJvb2wgc3VzcGVuZCgpOworICAgIGlubGluZSB2b2lkIHJlc3VtZSgpOworICAgIHNpemVfdCBn
ZXRSZWdpc3RlcnMoUmVnaXN0ZXJzJik7CisgICAgdm9pZCBmcmVlUmVnaXN0ZXJzKFJlZ2lzdGVy
cyYpOworICAgIHN0ZDo6cGFpcjx2b2lkKiwgc2l6ZV90PiBjYXB0dXJlU3RhY2sodm9pZCogc3Rh
Y2tUb3ApOworCiAgICAgVGhyZWFkKiBuZXh0OwogICAgIFBsYXRmb3JtVGhyZWFkIHBsYXRmb3Jt
VGhyZWFkOwogICAgIHZvaWQqIHN0YWNrQmFzZTsKQEAgLTE5OSwyMyArMjU1LDEyIEBAIE1hY2hp
bmVUaHJlYWRzOjp+TWFjaGluZVRocmVhZHMoKQogICAgIH0KIH0KIAotc3RhdGljIGlubGluZSBQ
bGF0Zm9ybVRocmVhZCBnZXRDdXJyZW50UGxhdGZvcm1UaHJlYWQoKQotewotI2lmIE9TKERBUldJ
TikKLSAgICByZXR1cm4gcHRocmVhZF9tYWNoX3RocmVhZF9ucChwdGhyZWFkX3NlbGYoKSk7Ci0j
ZWxpZiBPUyhXSU5ET1dTKQotICAgIHJldHVybiBHZXRDdXJyZW50VGhyZWFkKCk7Ci0jZWxpZiBV
U0UoUFRIUkVBRFMpCi0gICAgcmV0dXJuIHB0aHJlYWRfc2VsZigpOwotI2VuZGlmCi19Ci0KLXN0
YXRpYyBpbmxpbmUgYm9vbCBlcXVhbFRocmVhZChjb25zdCBQbGF0Zm9ybVRocmVhZCYgZmlyc3Qs
IGNvbnN0IFBsYXRmb3JtVGhyZWFkJiBzZWNvbmQpCitpbmxpbmUgYm9vbCBNYWNoaW5lVGhyZWFk
czo6VGhyZWFkOjpvcGVyYXRvcj09KGNvbnN0IFBsYXRmb3JtVGhyZWFkJiBvdGhlcikgY29uc3QK
IHsKICNpZiBPUyhEQVJXSU4pIHx8IE9TKFdJTkRPV1MpCi0gICAgcmV0dXJuIGZpcnN0ID09IHNl
Y29uZDsKKyAgICByZXR1cm4gcGxhdGZvcm1UaHJlYWQgPT0gb3RoZXI7CiAjZWxpZiBVU0UoUFRI
UkVBRFMpCi0gICAgcmV0dXJuICEhcHRocmVhZF9lcXVhbChmaXJzdCwgc2Vjb25kKTsKKyAgICBy
ZXR1cm4gISFwdGhyZWFkX2VxdWFsKHBsYXRmb3JtVGhyZWFkLCBvdGhlcik7CiAjZWxzZQogI2Vy
cm9yIE5lZWQgYSB3YXkgdG8gY29tcGFyZSB0aHJlYWRzIG9uIHRoaXMgcGxhdGZvcm0KICNlbmRp
ZgpAQCAtMjMxLDcgKzI3Niw3IEBAIHZvaWQgTWFjaGluZVRocmVhZHM6OmFkZEN1cnJlbnRUaHJl
YWQoKQogICAgIH0KIAogICAgIHRocmVhZFNwZWNpZmljU2V0KG1fdGhyZWFkU3BlY2lmaWMsIHRo
aXMpOwotICAgIFRocmVhZCogdGhyZWFkID0gbmV3IFRocmVhZChnZXRDdXJyZW50UGxhdGZvcm1U
aHJlYWQoKSwgd3RmVGhyZWFkRGF0YSgpLnN0YWNrKCkub3JpZ2luKCkpOworICAgIFRocmVhZCog
dGhyZWFkID0gVGhyZWFkOjpjcmVhdGVGb3JDdXJyZW50VGhyZWFkKCk7CiAKICAgICBNdXRleExv
Y2tlciBsb2NrKG1fcmVnaXN0ZXJlZFRocmVhZHNNdXRleCk7CiAKQEAgLTI1OCwxNSArMzAzLDE0
IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFBsYXRmb3JtVGhyZWFkPgogdm9pZCBNYWNoaW5lVGhyZWFk
czo6cmVtb3ZlVGhyZWFkSWZGb3VuZChQbGF0Zm9ybVRocmVhZCBwbGF0Zm9ybVRocmVhZCkKIHsK
ICAgICBNdXRleExvY2tlciBsb2NrKG1fcmVnaXN0ZXJlZFRocmVhZHNNdXRleCk7Ci0gICAgaWYg
KGVxdWFsVGhyZWFkKHBsYXRmb3JtVGhyZWFkLCBtX3JlZ2lzdGVyZWRUaHJlYWRzLT5wbGF0Zm9y
bVRocmVhZCkpIHsKLSAgICAgICAgVGhyZWFkKiB0ID0gbV9yZWdpc3RlcmVkVGhyZWFkczsKKyAg
ICBUaHJlYWQqIHQgPSBtX3JlZ2lzdGVyZWRUaHJlYWRzOworICAgIGlmICgqdCA9PSBwbGF0Zm9y
bVRocmVhZCkgewogICAgICAgICBtX3JlZ2lzdGVyZWRUaHJlYWRzID0gbV9yZWdpc3RlcmVkVGhy
ZWFkcy0+bmV4dDsKICAgICAgICAgZGVsZXRlIHQ7CiAgICAgfSBlbHNlIHsKICAgICAgICAgVGhy
ZWFkKiBsYXN0ID0gbV9yZWdpc3RlcmVkVGhyZWFkczsKLSAgICAgICAgVGhyZWFkKiB0OwogICAg
ICAgICBmb3IgKHQgPSBtX3JlZ2lzdGVyZWRUaHJlYWRzLT5uZXh0OyB0OyB0ID0gdC0+bmV4dCkg
ewotICAgICAgICAgICAgaWYgKGVxdWFsVGhyZWFkKHQtPnBsYXRmb3JtVGhyZWFkLCBwbGF0Zm9y
bVRocmVhZCkpIHsKKyAgICAgICAgICAgIGlmICgqdCA9PSBwbGF0Zm9ybVRocmVhZCkgewogICAg
ICAgICAgICAgICAgIGxhc3QtPm5leHQgPSB0LT5uZXh0OwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQpAQCAtMjg1LDcgKzMyOSw3IEBAIHZvaWQgTWFjaGluZVRocmVhZHM6
OmdhdGhlckZyb21DdXJyZW50VGgKICAgICBjb25zZXJ2YXRpdmVSb290cy5hZGQoc3RhY2tUb3As
IHN0YWNrT3JpZ2luLCBqaXRTdHViUm91dGluZXMsIGNvZGVCbG9ja3MpOwogfQogCi1zdGF0aWMg
aW5saW5lIGJvb2wgc3VzcGVuZFRocmVhZChjb25zdCBQbGF0Zm9ybVRocmVhZCYgcGxhdGZvcm1U
aHJlYWQpCitpbmxpbmUgYm9vbCBNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpzdXNwZW5kKCkKIHsK
ICNpZiBPUyhEQVJXSU4pCiAgICAga2Vybl9yZXR1cm5fdCByZXN1bHQgPSB0aHJlYWRfc3VzcGVu
ZChwbGF0Zm9ybVRocmVhZCk7CkBAIC0zMDIsNyArMzQ2LDcgQEAgc3RhdGljIGlubGluZSBib29s
IHN1c3BlbmRUaHJlYWQoY29uc3QgUAogI2VuZGlmCiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBy
ZXN1bWVUaHJlYWQoY29uc3QgUGxhdGZvcm1UaHJlYWQmIHBsYXRmb3JtVGhyZWFkKQoraW5saW5l
IHZvaWQgTWFjaGluZVRocmVhZHM6OlRocmVhZDo6cmVzdW1lKCkKIHsKICNpZiBPUyhEQVJXSU4p
CiAgICAgdGhyZWFkX3Jlc3VtZShwbGF0Zm9ybVRocmVhZCk7CkBAIC0zMTUsMzggKzM1OSw5IEBA
IHN0YXRpYyBpbmxpbmUgdm9pZCByZXN1bWVUaHJlYWQoY29uc3QgUGwKICNlbmRpZgogfQogCi10
eXBlZGVmIHVuc2lnbmVkIGxvbmcgdXN3b3JkX3Q7IC8vIHdvcmQgc2l6ZSwgYXNzdW1lZCB0byBi
ZSBlaXRoZXIgMzIgb3IgNjQgYml0Ci0KLSNpZiBPUyhEQVJXSU4pCi0KLSNpZiBDUFUoWDg2KQot
dHlwZWRlZiBpMzg2X3RocmVhZF9zdGF0ZV90IFBsYXRmb3JtVGhyZWFkUmVnaXN0ZXJzOwotI2Vs
aWYgQ1BVKFg4Nl82NCkKLXR5cGVkZWYgeDg2X3RocmVhZF9zdGF0ZTY0X3QgUGxhdGZvcm1UaHJl
YWRSZWdpc3RlcnM7Ci0jZWxpZiBDUFUoUFBDKQotdHlwZWRlZiBwcGNfdGhyZWFkX3N0YXRlX3Qg
UGxhdGZvcm1UaHJlYWRSZWdpc3RlcnM7Ci0jZWxpZiBDUFUoUFBDNjQpCi10eXBlZGVmIHBwY190
aHJlYWRfc3RhdGU2NF90IFBsYXRmb3JtVGhyZWFkUmVnaXN0ZXJzOwotI2VsaWYgQ1BVKEFSTSkK
LXR5cGVkZWYgYXJtX3RocmVhZF9zdGF0ZV90IFBsYXRmb3JtVGhyZWFkUmVnaXN0ZXJzOwotI2Vs
aWYgQ1BVKEFSTTY0KQotdHlwZWRlZiBhcm1fdGhyZWFkX3N0YXRlNjRfdCBQbGF0Zm9ybVRocmVh
ZFJlZ2lzdGVyczsKLSNlbHNlCi0jZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKLSNlbmRpZgot
Ci0jZWxpZiBPUyhXSU5ET1dTKQotdHlwZWRlZiBDT05URVhUIFBsYXRmb3JtVGhyZWFkUmVnaXN0
ZXJzOwotI2VsaWYgVVNFKFBUSFJFQURTKQotdHlwZWRlZiBwdGhyZWFkX2F0dHJfdCBQbGF0Zm9y
bVRocmVhZFJlZ2lzdGVyczsKLSNlbHNlCi0jZXJyb3IgTmVlZCBhIHRocmVhZCByZWdpc3RlciBz
dHJ1Y3QgZm9yIHRoaXMgcGxhdGZvcm0KLSNlbmRpZgotCi1zdGF0aWMgc2l6ZV90IGdldFBsYXRm
b3JtVGhyZWFkUmVnaXN0ZXJzKGNvbnN0IFBsYXRmb3JtVGhyZWFkJiBwbGF0Zm9ybVRocmVhZCwg
UGxhdGZvcm1UaHJlYWRSZWdpc3RlcnMmIHJlZ3MpCitzaXplX3QgTWFjaGluZVRocmVhZHM6OlRo
cmVhZDo6Z2V0UmVnaXN0ZXJzKE1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OlJlZ2lzdGVycyYgcmVn
cykKIHsKICNpZiBPUyhEQVJXSU4pCi0KICNpZiBDUFUoWDg2KQogICAgIHVuc2lnbmVkIHVzZXJf
Y291bnQgPSBzaXplb2YocmVncykvc2l6ZW9mKGludCk7CiAgICAgdGhyZWFkX3N0YXRlX2ZsYXZv
cl90IGZsYXZvciA9IGkzODZfVEhSRUFEX1NUQVRFOwpAQCAtMzc1LDcgKzM5MCw3IEBAIHN0YXRp
YyBzaXplX3QgZ2V0UGxhdGZvcm1UaHJlYWRSZWdpc3RlcnMKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiSmF2YVNjcmlwdCBnYXJiYWdlIGNvbGxlY3Rpb24gZmFpbGVkIGJlY2F1c2UgdGhy
ZWFkX2dldF9zdGF0ZSByZXR1cm5lZCBhbiBlcnJvciAoJWQpLiBUaGlzIGlzIHByb2JhYmx5IHRo
ZSByZXN1bHQgb2YgcnVubmluZyBpbnNpZGUgUm9zZXR0YSwgd2hpY2ggaXMgbm90IHN1cHBvcnRl
ZC4iLCByZXN1bHQpOwogICAgICAgICBDUkFTSCgpOwogICAgIH0KLSAgICByZXR1cm4gdXNlcl9j
b3VudCAqIHNpemVvZih1c3dvcmRfdCk7CisgICAgcmV0dXJuIHVzZXJfY291bnQgKiBzaXplb2Yo
dWludHB0cl90KTsKIC8vIGVuZCBPUyhEQVJXSU4pCiAKICNlbGlmIE9TKFdJTkRPV1MpCkBAIC0z
OTksNyArNDE0LDcgQEAgc3RhdGljIHNpemVfdCBnZXRQbGF0Zm9ybVRocmVhZFJlZ2lzdGVycwog
I2VuZGlmCiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCogb3RoZXJUaHJlYWRTdGFja1BvaW50ZXIo
Y29uc3QgUGxhdGZvcm1UaHJlYWRSZWdpc3RlcnMmIHJlZ3MpCitpbmxpbmUgdm9pZCogTWFjaGlu
ZVRocmVhZHM6OlRocmVhZDo6UmVnaXN0ZXJzOjpzdGFja1BvaW50ZXIoKSBjb25zdAogewogI2lm
IE9TKERBUldJTikKIApAQCAtNDY3LDcgKzQ4Miw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCogb3Ro
ZXJUaHJlYWRTdGFja1BvaW4KICNlbmRpZgogfQogCi1zdGF0aWMgdm9pZCBmcmVlUGxhdGZvcm1U
aHJlYWRSZWdpc3RlcnMoUGxhdGZvcm1UaHJlYWRSZWdpc3RlcnMmIHJlZ3MpCit2b2lkIE1hY2hp
bmVUaHJlYWRzOjpUaHJlYWQ6OmZyZWVSZWdpc3RlcnMoTWFjaGluZVRocmVhZHM6OlRocmVhZDo6
UmVnaXN0ZXJzJiByZWdzKQogewogI2lmIFVTRShQVEhSRUFEUykgJiYgIU9TKFdJTkRPV1MpICYm
ICFPUyhEQVJXSU4pCiAgICAgcHRocmVhZF9hdHRyX2Rlc3Ryb3koJnJlZ3MpOwpAQCAtNDc2LDEz
ICs0OTEsMTEgQEAgc3RhdGljIHZvaWQgZnJlZVBsYXRmb3JtVGhyZWFkUmVnaXN0ZXJzKAogI2Vu
ZGlmCiB9CiAKLXN0YXRpYyBzdGQ6OnBhaXI8dm9pZCosIHNpemVfdD4gb3RoZXJUaHJlYWRTdGFj
ayh2b2lkKiBzdGFja0Jhc2UsIGNvbnN0IFBsYXRmb3JtVGhyZWFkUmVnaXN0ZXJzJiByZWdpc3Rl
cnMpCitzdGQ6OnBhaXI8dm9pZCosIHNpemVfdD4gTWFjaGluZVRocmVhZHM6OlRocmVhZDo6Y2Fw
dHVyZVN0YWNrKHZvaWQqIHN0YWNrVG9wKQogewogICAgIHZvaWQqIGJlZ2luID0gc3RhY2tCYXNl
OwogICAgIHZvaWQqIGVuZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KAotICAgICAgICBXVEY6
OnJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9mKHZvaWQqKT4oCi0gICAgICAgICAgICByZWludGVy
cHJldF9jYXN0PHVpbnRwdHJfdD4oCi0gICAgICAgICAgICAgICAgb3RoZXJUaHJlYWRTdGFja1Bv
aW50ZXIocmVnaXN0ZXJzKSkpKTsKKyAgICAgICAgV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPHNp
emVvZih2b2lkKik+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihzdGFja1RvcCkpKTsKICAg
ICBpZiAoYmVnaW4gPiBlbmQpCiAgICAgICAgIHN0ZDo6c3dhcChiZWdpbiwgZW5kKTsKICAgICBy
ZXR1cm4gc3RkOjptYWtlX3BhaXIoYmVnaW4sIHN0YXRpY19jYXN0PGNoYXIqPihlbmQpIC0gc3Rh
dGljX2Nhc3Q8Y2hhcio+KGJlZ2luKSk7CkBAIC01MTMsOSArNTI2LDkgQEAgdm9pZCBhc2FuVW5z
YWZlTWVtY3B5KHZvaWQqIGRzdCwgY29uc3QgdgogLy8gd2lsbCBkZWFkbG9jayBpZiAndGhyZWFk
JyBob2xkcyB0aGF0IGxvY2suCiB2b2lkIE1hY2hpbmVUaHJlYWRzOjp0cnlDb3B5T3RoZXJUaHJl
YWRTdGFjayhUaHJlYWQqIHRocmVhZCwgdm9pZCogYnVmZmVyLCBzaXplX3QgY2FwYWNpdHksIHNp
emVfdCogc2l6ZSkKIHsKLSAgICBQbGF0Zm9ybVRocmVhZFJlZ2lzdGVycyByZWdpc3RlcnM7Ci0g
ICAgc2l6ZV90IHJlZ2lzdGVyc1NpemUgPSBnZXRQbGF0Zm9ybVRocmVhZFJlZ2lzdGVycyh0aHJl
YWQtPnBsYXRmb3JtVGhyZWFkLCByZWdpc3RlcnMpOwotICAgIHN0ZDo6cGFpcjx2b2lkKiwgc2l6
ZV90PiBzdGFjayA9IG90aGVyVGhyZWFkU3RhY2sodGhyZWFkLT5zdGFja0Jhc2UsIHJlZ2lzdGVy
cyk7CisgICAgVGhyZWFkOjpSZWdpc3RlcnMgcmVnaXN0ZXJzOworICAgIHNpemVfdCByZWdpc3Rl
cnNTaXplID0gdGhyZWFkLT5nZXRSZWdpc3RlcnMocmVnaXN0ZXJzKTsKKyAgICBzdGQ6OnBhaXI8
dm9pZCosIHNpemVfdD4gc3RhY2sgPSB0aHJlYWQtPmNhcHR1cmVTdGFjayhyZWdpc3RlcnMuc3Rh
Y2tQb2ludGVyKCkpOwogCiAgICAgYm9vbCBjYW5Db3B5ID0gKnNpemUgKyByZWdpc3RlcnNTaXpl
ICsgc3RhY2suc2Vjb25kIDw9IGNhcGFjaXR5OwogCkBAIC01MjcsNyArNTQwLDcgQEAgdm9pZCBN
YWNoaW5lVGhyZWFkczo6dHJ5Q29weU90aGVyVGhyZWFkUwogICAgICAgICBtZW1jcHkoc3RhdGlj
X2Nhc3Q8Y2hhcio+KGJ1ZmZlcikgKyAqc2l6ZSwgc3RhY2suZmlyc3QsIHN0YWNrLnNlY29uZCk7
CiAgICAgKnNpemUgKz0gc3RhY2suc2Vjb25kOwogCi0gICAgZnJlZVBsYXRmb3JtVGhyZWFkUmVn
aXN0ZXJzKHJlZ2lzdGVycyk7CisgICAgdGhyZWFkLT5mcmVlUmVnaXN0ZXJzKHJlZ2lzdGVycyk7
CiB9CiAKIGJvb2wgTWFjaGluZVRocmVhZHM6OnRyeUNvcHlPdGhlclRocmVhZFN0YWNrcyhNdXRl
eExvY2tlciYsIHZvaWQqIGJ1ZmZlciwgc2l6ZV90IGNhcGFjaXR5LCBzaXplX3QqIHNpemUpCkBA
IC01NDEsOCArNTU0LDggQEAgYm9vbCBNYWNoaW5lVGhyZWFkczo6dHJ5Q29weU90aGVyVGhyZWFk
UwogCiAgICAgVGhyZWFkKiBwcmV2aW91c1RocmVhZCA9IG51bGxwdHI7CiAgICAgZm9yIChUaHJl
YWQqIHRocmVhZCA9IG1fcmVnaXN0ZXJlZFRocmVhZHM7IHRocmVhZDsgaW5kZXgrKykgewotICAg
ICAgICBpZiAoIWVxdWFsVGhyZWFkKHRocmVhZC0+cGxhdGZvcm1UaHJlYWQsIGN1cnJlbnRQbGF0
Zm9ybVRocmVhZCkpIHsKLSAgICAgICAgICAgIGJvb2wgc3VjY2VzcyA9IHN1c3BlbmRUaHJlYWQo
dGhyZWFkLT5wbGF0Zm9ybVRocmVhZCk7CisgICAgICAgIGlmICgqdGhyZWFkICE9IGN1cnJlbnRQ
bGF0Zm9ybVRocmVhZCkgeworICAgICAgICAgICAgYm9vbCBzdWNjZXNzID0gdGhyZWFkLT5zdXNw
ZW5kKCk7CiAjaWYgT1MoREFSV0lOKQogICAgICAgICAgICAgaWYgKCFzdWNjZXNzKSB7CiAgICAg
ICAgICAgICAgICAgaWYgKCFudW1iZXJPZlRocmVhZHMpIHsKQEAgLTU4NSwxMyArNTk4LDEzIEBA
IGJvb2wgTWFjaGluZVRocmVhZHM6OnRyeUNvcHlPdGhlclRocmVhZFMKICAgICB9CiAKICAgICBm
b3IgKFRocmVhZCogdGhyZWFkID0gbV9yZWdpc3RlcmVkVGhyZWFkczsgdGhyZWFkOyB0aHJlYWQg
PSB0aHJlYWQtPm5leHQpIHsKLSAgICAgICAgaWYgKCFlcXVhbFRocmVhZCh0aHJlYWQtPnBsYXRm
b3JtVGhyZWFkLCBjdXJyZW50UGxhdGZvcm1UaHJlYWQpKQorICAgICAgICBpZiAoKnRocmVhZCAh
PSBjdXJyZW50UGxhdGZvcm1UaHJlYWQpCiAgICAgICAgICAgICB0cnlDb3B5T3RoZXJUaHJlYWRT
dGFjayh0aHJlYWQsIGJ1ZmZlciwgY2FwYWNpdHksIHNpemUpOwogICAgIH0KIAogICAgIGZvciAo
VGhyZWFkKiB0aHJlYWQgPSBtX3JlZ2lzdGVyZWRUaHJlYWRzOyB0aHJlYWQ7IHRocmVhZCA9IHRo
cmVhZC0+bmV4dCkgewotICAgICAgICBpZiAoIWVxdWFsVGhyZWFkKHRocmVhZC0+cGxhdGZvcm1U
aHJlYWQsIGN1cnJlbnRQbGF0Zm9ybVRocmVhZCkpCi0gICAgICAgICAgICByZXN1bWVUaHJlYWQo
dGhyZWFkLT5wbGF0Zm9ybVRocmVhZCk7CisgICAgICAgIGlmICgqdGhyZWFkICE9IGN1cnJlbnRQ
bGF0Zm9ybVRocmVhZCkKKyAgICAgICAgICAgIHRocmVhZC0+cmVzdW1lKCk7CiAgICAgfQogCiAg
ICAgZm9yIChUaHJlYWQqIHRocmVhZCA9IHRocmVhZHNUb0JlRGVsZXRlZDsgdGhyZWFkOyApIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252980</attachid>
            <date>2015-05-12 13:44:39 -0700</date>
            <delta_ts>2015-05-12 13:51:22 -0700</delta_ts>
            <desc>patch 3: with build fixes</desc>
            <filename>bug-144925.patch</filename>
            <type>text/plain</type>
            <size>13148</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg0MjE0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBA
CisyMDE1LTA1LTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZWZhY3RvciBNYWNoaW5lU3RhY2tNYXJrZXIuY3BwIHNvIHRoYXQgaXQncyBlYXNpZXIgdG8gcmVh
c29uIGFib3V0IE1hY2hpbmVUaHJlYWRzOjpUaHJlYWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ5MjUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHksIHRoZSBjb2RlIGluIE1hY2hpbmVT
dGFja01hcmtlci5jcHAgaXMgd3JpdHRlbiBhcyBhIGJ1bmNoIG9mIGZ1bmN0aW9ucyB0aGF0Cisg
ICAgICAgIG9wZXJhdGUgb24gdGhlIHBsYXRmb3JtVGhyZWFkIHZhbHVlIGluIHRoZSBNYWNoaW5l
VGhyZWFkczo6VGhyZWFkIHN0cnVjdC4gIEluc3RlYWQsIHdlCisgICAgICAgIGNhbiBhcHBseSBi
ZXR0ZXIgT08gZW5jYXBzdWxhdGlvbiBhbmQgY29udmVydCBhbGwgdGhlc2UgZnVuY3Rpb25zIGlu
dG8gbWV0aG9kcyBvZiB0aGUKKyAgICAgICAgTWFjaGluZVRocmVhZHM6OlRocmVhZCBzdHJ1Y3Qu
CisKKyAgICAgICAgVGhpcyB3aWxsIGFsc28gbWFrZSBpdCBlYXNpZXIgdG8gcmVhc29uIGFib3V0
IHRoZSBmaXggZm9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDQ5MjQgbGF0ZXIuCisKKyAgICAgICAgKiBoZWFwL01hY2hpbmVTdGFja01hcmtlci5j
cHA6CisgICAgICAgIChKU0M6OmdldEN1cnJlbnRQbGF0Zm9ybVRocmVhZCk6CisgICAgICAgIChK
U0M6Ok1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OmNyZWF0ZUZvckN1cnJlbnRUaHJlYWQpOgorICAg
ICAgICAoSlNDOjpNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpvcGVyYXRvciE9KToKKyAgICAgICAg
KEpTQzo6TWFjaGluZVRocmVhZHM6OlRocmVhZDo6b3BlcmF0b3I9PSk6CisgICAgICAgIChKU0M6
Ok1hY2hpbmVUaHJlYWRzOjphZGRDdXJyZW50VGhyZWFkKToKKyAgICAgICAgKEpTQzo6TWFjaGlu
ZVRocmVhZHM6OnJlbW92ZVRocmVhZElmRm91bmQpOgorICAgICAgICAoSlNDOjpNYWNoaW5lVGhy
ZWFkczo6VGhyZWFkOjpzdXNwZW5kKToKKyAgICAgICAgKEpTQzo6TWFjaGluZVRocmVhZHM6OlRo
cmVhZDo6cmVzdW1lKToKKyAgICAgICAgKEpTQzo6TWFjaGluZVRocmVhZHM6OlRocmVhZDo6Z2V0
UmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6TWFjaGluZVRocmVhZHM6OlRocmVhZDo6UmVnaXN0
ZXJzOjpzdGFja1BvaW50ZXIpOgorICAgICAgICAoSlNDOjpNYWNoaW5lVGhyZWFkczo6VGhyZWFk
OjpmcmVlUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6TWFjaGluZVRocmVhZHM6OlRocmVhZDo6
Y2FwdHVyZVN0YWNrKToKKyAgICAgICAgKEpTQzo6TWFjaGluZVRocmVhZHM6OnRyeUNvcHlPdGhl
clRocmVhZFN0YWNrKToKKyAgICAgICAgKEpTQzo6TWFjaGluZVRocmVhZHM6OnRyeUNvcHlPdGhl
clRocmVhZFN0YWNrcyk6CisgICAgICAgIChKU0M6OmVxdWFsVGhyZWFkKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6c3VzcGVuZFRocmVhZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OnJlc3Vt
ZVRocmVhZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OmdldFBsYXRmb3JtVGhyZWFkUmVnaXN0
ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6b3RoZXJUaHJlYWRTdGFja1BvaW50ZXIpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpmcmVlUGxhdGZvcm1UaHJlYWRSZWdpc3RlcnMpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpvdGhlclRocmVhZFN0YWNrKTogRGVsZXRlZC4KKwogMjAxNS0w
NS0xMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIE9TUiBhdmFp
bGFiaWxpdHkgYW5hbHlzaXMgd291bGQgYmUgbW9yZSBzY2FsYWJsZSAoYW5kIGNvcnJlY3QpIGlm
IGl0IGRpZCBtb3JlIGxpdmVuZXNzIHBydW5pbmcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcAkocmV2aXNpb24gMTg0MjA4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTQ2LDEwICsxNDYsMjAgQEAgc3RhdGljIEFjdGl2ZU1hY2hpbmVUaHJl
YWRzTWFuYWdlciYgYWN0aQogICAgIHJldHVybiAqbWFuYWdlcjsKIH0KICAgICAKK3N0YXRpYyBp
bmxpbmUgUGxhdGZvcm1UaHJlYWQgZ2V0Q3VycmVudFBsYXRmb3JtVGhyZWFkKCkKK3sKKyNpZiBP
UyhEQVJXSU4pCisgICAgcmV0dXJuIHB0aHJlYWRfbWFjaF90aHJlYWRfbnAocHRocmVhZF9zZWxm
KCkpOworI2VsaWYgT1MoV0lORE9XUykKKyAgICByZXR1cm4gR2V0Q3VycmVudFRocmVhZCgpOwor
I2VsaWYgVVNFKFBUSFJFQURTKQorICAgIHJldHVybiBwdGhyZWFkX3NlbGYoKTsKKyNlbmRpZgor
fQogCiBjbGFzcyBNYWNoaW5lVGhyZWFkczo6VGhyZWFkIHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKLXB1YmxpYzoKKwogICAgIFRocmVhZChjb25zdCBQbGF0Zm9ybVRocmVhZCYgcGxh
dFRocmVhZCwgdm9pZCogYmFzZSkKICAgICAgICAgOiBwbGF0Zm9ybVRocmVhZChwbGF0VGhyZWFk
KQogICAgICAgICAsIHN0YWNrQmFzZShiYXNlKQpAQCAtMTY5LDYgKzE3OSw1MiBAQCBwdWJsaWM6
CiAjZW5kaWYKICAgICB9CiAKK3B1YmxpYzoKKyAgICBzdGF0aWMgVGhyZWFkKiBjcmVhdGVGb3JD
dXJyZW50VGhyZWFkKCkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgVGhyZWFkKGdldEN1cnJl
bnRQbGF0Zm9ybVRocmVhZCgpLCB3dGZUaHJlYWREYXRhKCkuc3RhY2soKS5vcmlnaW4oKSk7Cisg
ICAgfQorCisgICAgc3RydWN0IFJlZ2lzdGVycyB7CisgICAgICAgIGlubGluZSB2b2lkKiBzdGFj
a1BvaW50ZXIoKSBjb25zdDsKKyAgICAgICAgCisjaWYgT1MoREFSV0lOKQorI2lmIENQVShYODYp
CisgICAgICAgIHR5cGVkZWYgaTM4Nl90aHJlYWRfc3RhdGVfdCBQbGF0Zm9ybVJlZ2lzdGVyczsK
KyNlbGlmIENQVShYODZfNjQpCisgICAgICAgIHR5cGVkZWYgeDg2X3RocmVhZF9zdGF0ZTY0X3Qg
UGxhdGZvcm1SZWdpc3RlcnM7CisjZWxpZiBDUFUoUFBDKQorICAgICAgICB0eXBlZGVmIHBwY190
aHJlYWRfc3RhdGVfdCBQbGF0Zm9ybVJlZ2lzdGVyczsKKyNlbGlmIENQVShQUEM2NCkKKyAgICAg
ICAgdHlwZWRlZiBwcGNfdGhyZWFkX3N0YXRlNjRfdCBQbGF0Zm9ybVJlZ2lzdGVyczsKKyNlbGlm
IENQVShBUk0pCisgICAgICAgIHR5cGVkZWYgYXJtX3RocmVhZF9zdGF0ZV90IFBsYXRmb3JtUmVn
aXN0ZXJzOworI2VsaWYgQ1BVKEFSTTY0KQorICAgICAgICB0eXBlZGVmIGFybV90aHJlYWRfc3Rh
dGU2NF90IFBsYXRmb3JtUmVnaXN0ZXJzOworI2Vsc2UKKyNlcnJvciBVbmtub3duIEFyY2hpdGVj
dHVyZQorI2VuZGlmCisgICAgICAgIAorI2VsaWYgT1MoV0lORE9XUykKKyAgICAgICAgdHlwZWRl
ZiBDT05URVhUIFBsYXRmb3JtUmVnaXN0ZXJzOworI2VsaWYgVVNFKFBUSFJFQURTKQorICAgICAg
ICB0eXBlZGVmIHB0aHJlYWRfYXR0cl90IFBsYXRmb3JtUmVnaXN0ZXJzOworI2Vsc2UKKyNlcnJv
ciBOZWVkIGEgdGhyZWFkIHJlZ2lzdGVyIHN0cnVjdCBmb3IgdGhpcyBwbGF0Zm9ybQorI2VuZGlm
CisgICAgICAgIAorICAgICAgICBQbGF0Zm9ybVJlZ2lzdGVycyByZWdzOworICAgIH07CisgICAg
CisgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQbGF0Zm9ybVRocmVhZCYgb3RoZXIp
IGNvbnN0OworICAgIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUGxhdGZvcm1UaHJlYWQm
IG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQorCisgICAgaW5saW5l
IGJvb2wgc3VzcGVuZCgpOworICAgIGlubGluZSB2b2lkIHJlc3VtZSgpOworICAgIHNpemVfdCBn
ZXRSZWdpc3RlcnMoUmVnaXN0ZXJzJik7CisgICAgdm9pZCBmcmVlUmVnaXN0ZXJzKFJlZ2lzdGVy
cyYpOworICAgIHN0ZDo6cGFpcjx2b2lkKiwgc2l6ZV90PiBjYXB0dXJlU3RhY2sodm9pZCogc3Rh
Y2tUb3ApOworCiAgICAgVGhyZWFkKiBuZXh0OwogICAgIFBsYXRmb3JtVGhyZWFkIHBsYXRmb3Jt
VGhyZWFkOwogICAgIHZvaWQqIHN0YWNrQmFzZTsKQEAgLTE5OSwyMyArMjU1LDEyIEBAIE1hY2hp
bmVUaHJlYWRzOjp+TWFjaGluZVRocmVhZHMoKQogICAgIH0KIH0KIAotc3RhdGljIGlubGluZSBQ
bGF0Zm9ybVRocmVhZCBnZXRDdXJyZW50UGxhdGZvcm1UaHJlYWQoKQotewotI2lmIE9TKERBUldJ
TikKLSAgICByZXR1cm4gcHRocmVhZF9tYWNoX3RocmVhZF9ucChwdGhyZWFkX3NlbGYoKSk7Ci0j
ZWxpZiBPUyhXSU5ET1dTKQotICAgIHJldHVybiBHZXRDdXJyZW50VGhyZWFkKCk7Ci0jZWxpZiBV
U0UoUFRIUkVBRFMpCi0gICAgcmV0dXJuIHB0aHJlYWRfc2VsZigpOwotI2VuZGlmCi19Ci0KLXN0
YXRpYyBpbmxpbmUgYm9vbCBlcXVhbFRocmVhZChjb25zdCBQbGF0Zm9ybVRocmVhZCYgZmlyc3Qs
IGNvbnN0IFBsYXRmb3JtVGhyZWFkJiBzZWNvbmQpCitpbmxpbmUgYm9vbCBNYWNoaW5lVGhyZWFk
czo6VGhyZWFkOjpvcGVyYXRvcj09KGNvbnN0IFBsYXRmb3JtVGhyZWFkJiBvdGhlcikgY29uc3QK
IHsKICNpZiBPUyhEQVJXSU4pIHx8IE9TKFdJTkRPV1MpCi0gICAgcmV0dXJuIGZpcnN0ID09IHNl
Y29uZDsKKyAgICByZXR1cm4gcGxhdGZvcm1UaHJlYWQgPT0gb3RoZXI7CiAjZWxpZiBVU0UoUFRI
UkVBRFMpCi0gICAgcmV0dXJuICEhcHRocmVhZF9lcXVhbChmaXJzdCwgc2Vjb25kKTsKKyAgICBy
ZXR1cm4gISFwdGhyZWFkX2VxdWFsKHBsYXRmb3JtVGhyZWFkLCBvdGhlcik7CiAjZWxzZQogI2Vy
cm9yIE5lZWQgYSB3YXkgdG8gY29tcGFyZSB0aHJlYWRzIG9uIHRoaXMgcGxhdGZvcm0KICNlbmRp
ZgpAQCAtMjMxLDcgKzI3Niw3IEBAIHZvaWQgTWFjaGluZVRocmVhZHM6OmFkZEN1cnJlbnRUaHJl
YWQoKQogICAgIH0KIAogICAgIHRocmVhZFNwZWNpZmljU2V0KG1fdGhyZWFkU3BlY2lmaWMsIHRo
aXMpOwotICAgIFRocmVhZCogdGhyZWFkID0gbmV3IFRocmVhZChnZXRDdXJyZW50UGxhdGZvcm1U
aHJlYWQoKSwgd3RmVGhyZWFkRGF0YSgpLnN0YWNrKCkub3JpZ2luKCkpOworICAgIFRocmVhZCog
dGhyZWFkID0gVGhyZWFkOjpjcmVhdGVGb3JDdXJyZW50VGhyZWFkKCk7CiAKICAgICBNdXRleExv
Y2tlciBsb2NrKG1fcmVnaXN0ZXJlZFRocmVhZHNNdXRleCk7CiAKQEAgLTI1OCwxNSArMzAzLDE0
IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFBsYXRmb3JtVGhyZWFkPgogdm9pZCBNYWNoaW5lVGhyZWFk
czo6cmVtb3ZlVGhyZWFkSWZGb3VuZChQbGF0Zm9ybVRocmVhZCBwbGF0Zm9ybVRocmVhZCkKIHsK
ICAgICBNdXRleExvY2tlciBsb2NrKG1fcmVnaXN0ZXJlZFRocmVhZHNNdXRleCk7Ci0gICAgaWYg
KGVxdWFsVGhyZWFkKHBsYXRmb3JtVGhyZWFkLCBtX3JlZ2lzdGVyZWRUaHJlYWRzLT5wbGF0Zm9y
bVRocmVhZCkpIHsKLSAgICAgICAgVGhyZWFkKiB0ID0gbV9yZWdpc3RlcmVkVGhyZWFkczsKKyAg
ICBUaHJlYWQqIHQgPSBtX3JlZ2lzdGVyZWRUaHJlYWRzOworICAgIGlmICgqdCA9PSBwbGF0Zm9y
bVRocmVhZCkgewogICAgICAgICBtX3JlZ2lzdGVyZWRUaHJlYWRzID0gbV9yZWdpc3RlcmVkVGhy
ZWFkcy0+bmV4dDsKICAgICAgICAgZGVsZXRlIHQ7CiAgICAgfSBlbHNlIHsKICAgICAgICAgVGhy
ZWFkKiBsYXN0ID0gbV9yZWdpc3RlcmVkVGhyZWFkczsKLSAgICAgICAgVGhyZWFkKiB0OwogICAg
ICAgICBmb3IgKHQgPSBtX3JlZ2lzdGVyZWRUaHJlYWRzLT5uZXh0OyB0OyB0ID0gdC0+bmV4dCkg
ewotICAgICAgICAgICAgaWYgKGVxdWFsVGhyZWFkKHQtPnBsYXRmb3JtVGhyZWFkLCBwbGF0Zm9y
bVRocmVhZCkpIHsKKyAgICAgICAgICAgIGlmICgqdCA9PSBwbGF0Zm9ybVRocmVhZCkgewogICAg
ICAgICAgICAgICAgIGxhc3QtPm5leHQgPSB0LT5uZXh0OwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQpAQCAtMjg1LDcgKzMyOSw3IEBAIHZvaWQgTWFjaGluZVRocmVhZHM6
OmdhdGhlckZyb21DdXJyZW50VGgKICAgICBjb25zZXJ2YXRpdmVSb290cy5hZGQoc3RhY2tUb3As
IHN0YWNrT3JpZ2luLCBqaXRTdHViUm91dGluZXMsIGNvZGVCbG9ja3MpOwogfQogCi1zdGF0aWMg
aW5saW5lIGJvb2wgc3VzcGVuZFRocmVhZChjb25zdCBQbGF0Zm9ybVRocmVhZCYgcGxhdGZvcm1U
aHJlYWQpCitpbmxpbmUgYm9vbCBNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpzdXNwZW5kKCkKIHsK
ICNpZiBPUyhEQVJXSU4pCiAgICAga2Vybl9yZXR1cm5fdCByZXN1bHQgPSB0aHJlYWRfc3VzcGVu
ZChwbGF0Zm9ybVRocmVhZCk7CkBAIC0zMDIsNyArMzQ2LDcgQEAgc3RhdGljIGlubGluZSBib29s
IHN1c3BlbmRUaHJlYWQoY29uc3QgUAogI2VuZGlmCiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBy
ZXN1bWVUaHJlYWQoY29uc3QgUGxhdGZvcm1UaHJlYWQmIHBsYXRmb3JtVGhyZWFkKQoraW5saW5l
IHZvaWQgTWFjaGluZVRocmVhZHM6OlRocmVhZDo6cmVzdW1lKCkKIHsKICNpZiBPUyhEQVJXSU4p
CiAgICAgdGhyZWFkX3Jlc3VtZShwbGF0Zm9ybVRocmVhZCk7CkBAIC0zMTUsMzggKzM1OSw5IEBA
IHN0YXRpYyBpbmxpbmUgdm9pZCByZXN1bWVUaHJlYWQoY29uc3QgUGwKICNlbmRpZgogfQogCi10
eXBlZGVmIHVuc2lnbmVkIGxvbmcgdXN3b3JkX3Q7IC8vIHdvcmQgc2l6ZSwgYXNzdW1lZCB0byBi
ZSBlaXRoZXIgMzIgb3IgNjQgYml0Ci0KLSNpZiBPUyhEQVJXSU4pCi0KLSNpZiBDUFUoWDg2KQot
dHlwZWRlZiBpMzg2X3RocmVhZF9zdGF0ZV90IFBsYXRmb3JtVGhyZWFkUmVnaXN0ZXJzOwotI2Vs
aWYgQ1BVKFg4Nl82NCkKLXR5cGVkZWYgeDg2X3RocmVhZF9zdGF0ZTY0X3QgUGxhdGZvcm1UaHJl
YWRSZWdpc3RlcnM7Ci0jZWxpZiBDUFUoUFBDKQotdHlwZWRlZiBwcGNfdGhyZWFkX3N0YXRlX3Qg
UGxhdGZvcm1UaHJlYWRSZWdpc3RlcnM7Ci0jZWxpZiBDUFUoUFBDNjQpCi10eXBlZGVmIHBwY190
aHJlYWRfc3RhdGU2NF90IFBsYXRmb3JtVGhyZWFkUmVnaXN0ZXJzOwotI2VsaWYgQ1BVKEFSTSkK
LXR5cGVkZWYgYXJtX3RocmVhZF9zdGF0ZV90IFBsYXRmb3JtVGhyZWFkUmVnaXN0ZXJzOwotI2Vs
aWYgQ1BVKEFSTTY0KQotdHlwZWRlZiBhcm1fdGhyZWFkX3N0YXRlNjRfdCBQbGF0Zm9ybVRocmVh
ZFJlZ2lzdGVyczsKLSNlbHNlCi0jZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKLSNlbmRpZgot
Ci0jZWxpZiBPUyhXSU5ET1dTKQotdHlwZWRlZiBDT05URVhUIFBsYXRmb3JtVGhyZWFkUmVnaXN0
ZXJzOwotI2VsaWYgVVNFKFBUSFJFQURTKQotdHlwZWRlZiBwdGhyZWFkX2F0dHJfdCBQbGF0Zm9y
bVRocmVhZFJlZ2lzdGVyczsKLSNlbHNlCi0jZXJyb3IgTmVlZCBhIHRocmVhZCByZWdpc3RlciBz
dHJ1Y3QgZm9yIHRoaXMgcGxhdGZvcm0KLSNlbmRpZgotCi1zdGF0aWMgc2l6ZV90IGdldFBsYXRm
b3JtVGhyZWFkUmVnaXN0ZXJzKGNvbnN0IFBsYXRmb3JtVGhyZWFkJiBwbGF0Zm9ybVRocmVhZCwg
UGxhdGZvcm1UaHJlYWRSZWdpc3RlcnMmIHJlZ3MpCitzaXplX3QgTWFjaGluZVRocmVhZHM6OlRo
cmVhZDo6Z2V0UmVnaXN0ZXJzKE1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OlJlZ2lzdGVycyYgcmVn
cykKIHsKICNpZiBPUyhEQVJXSU4pCi0KICNpZiBDUFUoWDg2KQogICAgIHVuc2lnbmVkIHVzZXJf
Y291bnQgPSBzaXplb2YocmVncykvc2l6ZW9mKGludCk7CiAgICAgdGhyZWFkX3N0YXRlX2ZsYXZv
cl90IGZsYXZvciA9IGkzODZfVEhSRUFEX1NUQVRFOwpAQCAtMzY5LDI5ICszODQsMjkgQEAgc3Rh
dGljIHNpemVfdCBnZXRQbGF0Zm9ybVRocmVhZFJlZ2lzdGVycwogI2Vycm9yIFVua25vd24gQXJj
aGl0ZWN0dXJlCiAjZW5kaWYKIAotICAgIGtlcm5fcmV0dXJuX3QgcmVzdWx0ID0gdGhyZWFkX2dl
dF9zdGF0ZShwbGF0Zm9ybVRocmVhZCwgZmxhdm9yLCAodGhyZWFkX3N0YXRlX3QpJnJlZ3MsICZ1
c2VyX2NvdW50KTsKKyAgICBrZXJuX3JldHVybl90IHJlc3VsdCA9IHRocmVhZF9nZXRfc3RhdGUo
cGxhdGZvcm1UaHJlYWQsIGZsYXZvciwgKHRocmVhZF9zdGF0ZV90KSZyZWdzLnJlZ3MsICZ1c2Vy
X2NvdW50KTsKICAgICBpZiAocmVzdWx0ICE9IEtFUk5fU1VDQ0VTUykgewogICAgICAgICBXVEZS
ZXBvcnRGYXRhbEVycm9yKF9fRklMRV9fLCBfX0xJTkVfXywgV1RGX1BSRVRUWV9GVU5DVElPTiwg
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkphdmFTY3JpcHQgZ2FyYmFnZSBjb2xsZWN0
aW9uIGZhaWxlZCBiZWNhdXNlIHRocmVhZF9nZXRfc3RhdGUgcmV0dXJuZWQgYW4gZXJyb3IgKCVk
KS4gVGhpcyBpcyBwcm9iYWJseSB0aGUgcmVzdWx0IG9mIHJ1bm5pbmcgaW5zaWRlIFJvc2V0dGEs
IHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQuIiwgcmVzdWx0KTsKICAgICAgICAgQ1JBU0goKTsKICAg
ICB9Ci0gICAgcmV0dXJuIHVzZXJfY291bnQgKiBzaXplb2YodXN3b3JkX3QpOworICAgIHJldHVy
biB1c2VyX2NvdW50ICogc2l6ZW9mKHVpbnRwdHJfdCk7CiAvLyBlbmQgT1MoREFSV0lOKQogCiAj
ZWxpZiBPUyhXSU5ET1dTKQogICAgIHJlZ3MuQ29udGV4dEZsYWdzID0gQ09OVEVYVF9JTlRFR0VS
IHwgQ09OVEVYVF9DT05UUk9MOwotICAgIEdldFRocmVhZENvbnRleHQocGxhdGZvcm1UaHJlYWQs
ICZyZWdzKTsKKyAgICBHZXRUaHJlYWRDb250ZXh0KHBsYXRmb3JtVGhyZWFkLCAmcmVncy5yZWdz
KTsKICAgICByZXR1cm4gc2l6ZW9mKENPTlRFWFQpOwogI2VsaWYgVVNFKFBUSFJFQURTKQogICAg
IHB0aHJlYWRfYXR0cl9pbml0KCZyZWdzKTsKICNpZiBIQVZFKFBUSFJFQURfTlBfSCkgfHwgT1Mo
TkVUQlNEKQogI2lmICFPUyhPUEVOQlNEKQogICAgIC8vIGUuZy4gb24gRnJlZUJTRCA1LjQsIG5l
dW5kb3JmQGtkZS5vcmcKLSAgICBwdGhyZWFkX2F0dHJfZ2V0X25wKHBsYXRmb3JtVGhyZWFkLCAm
cmVncyk7CisgICAgcHRocmVhZF9hdHRyX2dldF9ucChwbGF0Zm9ybVRocmVhZCwgJnJlZ3MucmVn
cyk7CiAjZW5kaWYKICNlbHNlCiAgICAgLy8gRklYTUU6IHRoaXMgZnVuY3Rpb24gaXMgbm9uLXBv
cnRhYmxlOyBvdGhlciBQT1NJWCBzeXN0ZW1zIG1heSBoYXZlIGRpZmZlcmVudCBucCBhbHRlcm5h
dGl2ZXMKLSAgICBwdGhyZWFkX2dldGF0dHJfbnAocGxhdGZvcm1UaHJlYWQsICZyZWdzKTsKKyAg
ICBwdGhyZWFkX2dldGF0dHJfbnAocGxhdGZvcm1UaHJlYWQsICZyZWdzLnJlZ3MpOwogI2VuZGlm
CiAgICAgcmV0dXJuIDA7CiAjZWxzZQpAQCAtMzk5LDcgKzQxNCw3IEBAIHN0YXRpYyBzaXplX3Qg
Z2V0UGxhdGZvcm1UaHJlYWRSZWdpc3RlcnMKICNlbmRpZgogfQogCi1zdGF0aWMgaW5saW5lIHZv
aWQqIG90aGVyVGhyZWFkU3RhY2tQb2ludGVyKGNvbnN0IFBsYXRmb3JtVGhyZWFkUmVnaXN0ZXJz
JiByZWdzKQoraW5saW5lIHZvaWQqIE1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OlJlZ2lzdGVyczo6
c3RhY2tQb2ludGVyKCkgY29uc3QKIHsKICNpZiBPUyhEQVJXSU4pCiAKQEAgLTQ2NywyMiArNDgy
LDIwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCogb3RoZXJUaHJlYWRTdGFja1BvaW4KICNlbmRpZgog
fQogCi1zdGF0aWMgdm9pZCBmcmVlUGxhdGZvcm1UaHJlYWRSZWdpc3RlcnMoUGxhdGZvcm1UaHJl
YWRSZWdpc3RlcnMmIHJlZ3MpCit2b2lkIE1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OmZyZWVSZWdp
c3RlcnMoTWFjaGluZVRocmVhZHM6OlRocmVhZDo6UmVnaXN0ZXJzJiByZWdzKQogewogI2lmIFVT
RShQVEhSRUFEUykgJiYgIU9TKFdJTkRPV1MpICYmICFPUyhEQVJXSU4pCi0gICAgcHRocmVhZF9h
dHRyX2Rlc3Ryb3koJnJlZ3MpOworICAgIHB0aHJlYWRfYXR0cl9kZXN0cm95KCZyZWdzLnJlZ3Mp
OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocmVncyk7CiAjZW5kaWYKIH0KIAotc3RhdGljIHN0
ZDo6cGFpcjx2b2lkKiwgc2l6ZV90PiBvdGhlclRocmVhZFN0YWNrKHZvaWQqIHN0YWNrQmFzZSwg
Y29uc3QgUGxhdGZvcm1UaHJlYWRSZWdpc3RlcnMmIHJlZ2lzdGVycykKK3N0ZDo6cGFpcjx2b2lk
Kiwgc2l6ZV90PiBNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpjYXB0dXJlU3RhY2sodm9pZCogc3Rh
Y2tUb3ApCiB7CiAgICAgdm9pZCogYmVnaW4gPSBzdGFja0Jhc2U7CiAgICAgdm9pZCogZW5kID0g
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oCi0gICAgICAgIFdURjo6cm91bmRVcFRvTXVsdGlwbGVP
ZjxzaXplb2Yodm9pZCopPigKLSAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90
PigKLSAgICAgICAgICAgICAgICBvdGhlclRocmVhZFN0YWNrUG9pbnRlcihyZWdpc3RlcnMpKSkp
OworICAgICAgICBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9mKHZvaWQqKT4ocmVpbnRl
cnByZXRfY2FzdDx1aW50cHRyX3Q+KHN0YWNrVG9wKSkpOwogICAgIGlmIChiZWdpbiA+IGVuZCkK
ICAgICAgICAgc3RkOjpzd2FwKGJlZ2luLCBlbmQpOwogICAgIHJldHVybiBzdGQ6Om1ha2VfcGFp
cihiZWdpbiwgc3RhdGljX2Nhc3Q8Y2hhcio+KGVuZCkgLSBzdGF0aWNfY2FzdDxjaGFyKj4oYmVn
aW4pKTsKQEAgLTUxMyw5ICs1MjYsOSBAQCB2b2lkIGFzYW5VbnNhZmVNZW1jcHkodm9pZCogZHN0
LCBjb25zdCB2CiAvLyB3aWxsIGRlYWRsb2NrIGlmICd0aHJlYWQnIGhvbGRzIHRoYXQgbG9jay4K
IHZvaWQgTWFjaGluZVRocmVhZHM6OnRyeUNvcHlPdGhlclRocmVhZFN0YWNrKFRocmVhZCogdGhy
ZWFkLCB2b2lkKiBidWZmZXIsIHNpemVfdCBjYXBhY2l0eSwgc2l6ZV90KiBzaXplKQogewotICAg
IFBsYXRmb3JtVGhyZWFkUmVnaXN0ZXJzIHJlZ2lzdGVyczsKLSAgICBzaXplX3QgcmVnaXN0ZXJz
U2l6ZSA9IGdldFBsYXRmb3JtVGhyZWFkUmVnaXN0ZXJzKHRocmVhZC0+cGxhdGZvcm1UaHJlYWQs
IHJlZ2lzdGVycyk7Ci0gICAgc3RkOjpwYWlyPHZvaWQqLCBzaXplX3Q+IHN0YWNrID0gb3RoZXJU
aHJlYWRTdGFjayh0aHJlYWQtPnN0YWNrQmFzZSwgcmVnaXN0ZXJzKTsKKyAgICBUaHJlYWQ6OlJl
Z2lzdGVycyByZWdpc3RlcnM7CisgICAgc2l6ZV90IHJlZ2lzdGVyc1NpemUgPSB0aHJlYWQtPmdl
dFJlZ2lzdGVycyhyZWdpc3RlcnMpOworICAgIHN0ZDo6cGFpcjx2b2lkKiwgc2l6ZV90PiBzdGFj
ayA9IHRocmVhZC0+Y2FwdHVyZVN0YWNrKHJlZ2lzdGVycy5zdGFja1BvaW50ZXIoKSk7CiAKICAg
ICBib29sIGNhbkNvcHkgPSAqc2l6ZSArIHJlZ2lzdGVyc1NpemUgKyBzdGFjay5zZWNvbmQgPD0g
Y2FwYWNpdHk7CiAKQEAgLTUyNyw3ICs1NDAsNyBAQCB2b2lkIE1hY2hpbmVUaHJlYWRzOjp0cnlD
b3B5T3RoZXJUaHJlYWRTCiAgICAgICAgIG1lbWNweShzdGF0aWNfY2FzdDxjaGFyKj4oYnVmZmVy
KSArICpzaXplLCBzdGFjay5maXJzdCwgc3RhY2suc2Vjb25kKTsKICAgICAqc2l6ZSArPSBzdGFj
ay5zZWNvbmQ7CiAKLSAgICBmcmVlUGxhdGZvcm1UaHJlYWRSZWdpc3RlcnMocmVnaXN0ZXJzKTsK
KyAgICB0aHJlYWQtPmZyZWVSZWdpc3RlcnMocmVnaXN0ZXJzKTsKIH0KIAogYm9vbCBNYWNoaW5l
VGhyZWFkczo6dHJ5Q29weU90aGVyVGhyZWFkU3RhY2tzKE11dGV4TG9ja2VyJiwgdm9pZCogYnVm
ZmVyLCBzaXplX3QgY2FwYWNpdHksIHNpemVfdCogc2l6ZSkKQEAgLTU0MSw4ICs1NTQsOCBAQCBi
b29sIE1hY2hpbmVUaHJlYWRzOjp0cnlDb3B5T3RoZXJUaHJlYWRTCiAKICAgICBUaHJlYWQqIHBy
ZXZpb3VzVGhyZWFkID0gbnVsbHB0cjsKICAgICBmb3IgKFRocmVhZCogdGhyZWFkID0gbV9yZWdp
c3RlcmVkVGhyZWFkczsgdGhyZWFkOyBpbmRleCsrKSB7Ci0gICAgICAgIGlmICghZXF1YWxUaHJl
YWQodGhyZWFkLT5wbGF0Zm9ybVRocmVhZCwgY3VycmVudFBsYXRmb3JtVGhyZWFkKSkgewotICAg
ICAgICAgICAgYm9vbCBzdWNjZXNzID0gc3VzcGVuZFRocmVhZCh0aHJlYWQtPnBsYXRmb3JtVGhy
ZWFkKTsKKyAgICAgICAgaWYgKCp0aHJlYWQgIT0gY3VycmVudFBsYXRmb3JtVGhyZWFkKSB7Cisg
ICAgICAgICAgICBib29sIHN1Y2Nlc3MgPSB0aHJlYWQtPnN1c3BlbmQoKTsKICNpZiBPUyhEQVJX
SU4pCiAgICAgICAgICAgICBpZiAoIXN1Y2Nlc3MpIHsKICAgICAgICAgICAgICAgICBpZiAoIW51
bWJlck9mVGhyZWFkcykgewpAQCAtNTg1LDEzICs1OTgsMTMgQEAgYm9vbCBNYWNoaW5lVGhyZWFk
czo6dHJ5Q29weU90aGVyVGhyZWFkUwogICAgIH0KIAogICAgIGZvciAoVGhyZWFkKiB0aHJlYWQg
PSBtX3JlZ2lzdGVyZWRUaHJlYWRzOyB0aHJlYWQ7IHRocmVhZCA9IHRocmVhZC0+bmV4dCkgewot
ICAgICAgICBpZiAoIWVxdWFsVGhyZWFkKHRocmVhZC0+cGxhdGZvcm1UaHJlYWQsIGN1cnJlbnRQ
bGF0Zm9ybVRocmVhZCkpCisgICAgICAgIGlmICgqdGhyZWFkICE9IGN1cnJlbnRQbGF0Zm9ybVRo
cmVhZCkKICAgICAgICAgICAgIHRyeUNvcHlPdGhlclRocmVhZFN0YWNrKHRocmVhZCwgYnVmZmVy
LCBjYXBhY2l0eSwgc2l6ZSk7CiAgICAgfQogCiAgICAgZm9yIChUaHJlYWQqIHRocmVhZCA9IG1f
cmVnaXN0ZXJlZFRocmVhZHM7IHRocmVhZDsgdGhyZWFkID0gdGhyZWFkLT5uZXh0KSB7Ci0gICAg
ICAgIGlmICghZXF1YWxUaHJlYWQodGhyZWFkLT5wbGF0Zm9ybVRocmVhZCwgY3VycmVudFBsYXRm
b3JtVGhyZWFkKSkKLSAgICAgICAgICAgIHJlc3VtZVRocmVhZCh0aHJlYWQtPnBsYXRmb3JtVGhy
ZWFkKTsKKyAgICAgICAgaWYgKCp0aHJlYWQgIT0gY3VycmVudFBsYXRmb3JtVGhyZWFkKQorICAg
ICAgICAgICAgdGhyZWFkLT5yZXN1bWUoKTsKICAgICB9CiAKICAgICBmb3IgKFRocmVhZCogdGhy
ZWFkID0gdGhyZWFkc1RvQmVEZWxldGVkOyB0aHJlYWQ7ICkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252982</attachid>
            <date>2015-05-12 13:51:22 -0700</date>
            <delta_ts>2015-05-12 14:02:29 -0700</delta_ts>
            <desc>patch 4: build fix 2</desc>
            <filename>bug-144925.patch</filename>
            <type>text/plain</type>
            <size>12234</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg0MjE0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBA
CisyMDE1LTA1LTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZWZhY3RvciBNYWNoaW5lU3RhY2tNYXJrZXIuY3BwIHNvIHRoYXQgaXQncyBlYXNpZXIgdG8gcmVh
c29uIGFib3V0IE1hY2hpbmVUaHJlYWRzOjpUaHJlYWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ5MjUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHksIHRoZSBjb2RlIGluIE1hY2hpbmVT
dGFja01hcmtlci5jcHAgaXMgd3JpdHRlbiBhcyBhIGJ1bmNoIG9mIGZ1bmN0aW9ucyB0aGF0Cisg
ICAgICAgIG9wZXJhdGUgb24gdGhlIHBsYXRmb3JtVGhyZWFkIHZhbHVlIGluIHRoZSBNYWNoaW5l
VGhyZWFkczo6VGhyZWFkIHN0cnVjdC4gIEluc3RlYWQsIHdlCisgICAgICAgIGNhbiBhcHBseSBi
ZXR0ZXIgT08gZW5jYXBzdWxhdGlvbiBhbmQgY29udmVydCBhbGwgdGhlc2UgZnVuY3Rpb25zIGlu
dG8gbWV0aG9kcyBvZiB0aGUKKyAgICAgICAgTWFjaGluZVRocmVhZHM6OlRocmVhZCBzdHJ1Y3Qu
CisKKyAgICAgICAgVGhpcyB3aWxsIGFsc28gbWFrZSBpdCBlYXNpZXIgdG8gcmVhc29uIGFib3V0
IHRoZSBmaXggZm9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDQ5MjQgbGF0ZXIuCisKKyAgICAgICAgKiBoZWFwL01hY2hpbmVTdGFja01hcmtlci5j
cHA6CisgICAgICAgIChKU0M6OmdldEN1cnJlbnRQbGF0Zm9ybVRocmVhZCk6CisgICAgICAgIChK
U0M6Ok1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OmNyZWF0ZUZvckN1cnJlbnRUaHJlYWQpOgorICAg
ICAgICAoSlNDOjpNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpvcGVyYXRvciE9KToKKyAgICAgICAg
KEpTQzo6TWFjaGluZVRocmVhZHM6OlRocmVhZDo6b3BlcmF0b3I9PSk6CisgICAgICAgIChKU0M6
Ok1hY2hpbmVUaHJlYWRzOjphZGRDdXJyZW50VGhyZWFkKToKKyAgICAgICAgKEpTQzo6TWFjaGlu
ZVRocmVhZHM6OnJlbW92ZVRocmVhZElmRm91bmQpOgorICAgICAgICAoSlNDOjpNYWNoaW5lVGhy
ZWFkczo6VGhyZWFkOjpzdXNwZW5kKToKKyAgICAgICAgKEpTQzo6TWFjaGluZVRocmVhZHM6OlRo
cmVhZDo6cmVzdW1lKToKKyAgICAgICAgKEpTQzo6TWFjaGluZVRocmVhZHM6OlRocmVhZDo6Z2V0
UmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6TWFjaGluZVRocmVhZHM6OlRocmVhZDo6UmVnaXN0
ZXJzOjpzdGFja1BvaW50ZXIpOgorICAgICAgICAoSlNDOjpNYWNoaW5lVGhyZWFkczo6VGhyZWFk
OjpmcmVlUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6TWFjaGluZVRocmVhZHM6OlRocmVhZDo6
Y2FwdHVyZVN0YWNrKToKKyAgICAgICAgKEpTQzo6TWFjaGluZVRocmVhZHM6OnRyeUNvcHlPdGhl
clRocmVhZFN0YWNrKToKKyAgICAgICAgKEpTQzo6TWFjaGluZVRocmVhZHM6OnRyeUNvcHlPdGhl
clRocmVhZFN0YWNrcyk6CisgICAgICAgIChKU0M6OmVxdWFsVGhyZWFkKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6c3VzcGVuZFRocmVhZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OnJlc3Vt
ZVRocmVhZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OmdldFBsYXRmb3JtVGhyZWFkUmVnaXN0
ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6b3RoZXJUaHJlYWRTdGFja1BvaW50ZXIpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpmcmVlUGxhdGZvcm1UaHJlYWRSZWdpc3RlcnMpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpvdGhlclRocmVhZFN0YWNrKTogRGVsZXRlZC4KKwogMjAxNS0w
NS0xMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIE9TUiBhdmFp
bGFiaWxpdHkgYW5hbHlzaXMgd291bGQgYmUgbW9yZSBzY2FsYWJsZSAoYW5kIGNvcnJlY3QpIGlm
IGl0IGRpZCBtb3JlIGxpdmVuZXNzIHBydW5pbmcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcAkocmV2aXNpb24gMTg0MjA4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTQ2LDEwICsxNDYsMjAgQEAgc3RhdGljIEFjdGl2ZU1hY2hpbmVUaHJl
YWRzTWFuYWdlciYgYWN0aQogICAgIHJldHVybiAqbWFuYWdlcjsKIH0KICAgICAKK3N0YXRpYyBp
bmxpbmUgUGxhdGZvcm1UaHJlYWQgZ2V0Q3VycmVudFBsYXRmb3JtVGhyZWFkKCkKK3sKKyNpZiBP
UyhEQVJXSU4pCisgICAgcmV0dXJuIHB0aHJlYWRfbWFjaF90aHJlYWRfbnAocHRocmVhZF9zZWxm
KCkpOworI2VsaWYgT1MoV0lORE9XUykKKyAgICByZXR1cm4gR2V0Q3VycmVudFRocmVhZCgpOwor
I2VsaWYgVVNFKFBUSFJFQURTKQorICAgIHJldHVybiBwdGhyZWFkX3NlbGYoKTsKKyNlbmRpZgor
fQogCiBjbGFzcyBNYWNoaW5lVGhyZWFkczo6VGhyZWFkIHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKLXB1YmxpYzoKKwogICAgIFRocmVhZChjb25zdCBQbGF0Zm9ybVRocmVhZCYgcGxh
dFRocmVhZCwgdm9pZCogYmFzZSkKICAgICAgICAgOiBwbGF0Zm9ybVRocmVhZChwbGF0VGhyZWFk
KQogICAgICAgICAsIHN0YWNrQmFzZShiYXNlKQpAQCAtMTY5LDYgKzE3OSw1MiBAQCBwdWJsaWM6
CiAjZW5kaWYKICAgICB9CiAKK3B1YmxpYzoKKyAgICBzdGF0aWMgVGhyZWFkKiBjcmVhdGVGb3JD
dXJyZW50VGhyZWFkKCkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgVGhyZWFkKGdldEN1cnJl
bnRQbGF0Zm9ybVRocmVhZCgpLCB3dGZUaHJlYWREYXRhKCkuc3RhY2soKS5vcmlnaW4oKSk7Cisg
ICAgfQorCisgICAgc3RydWN0IFJlZ2lzdGVycyB7CisgICAgICAgIGlubGluZSB2b2lkKiBzdGFj
a1BvaW50ZXIoKSBjb25zdDsKKyAgICAgICAgCisjaWYgT1MoREFSV0lOKQorI2lmIENQVShYODYp
CisgICAgICAgIHR5cGVkZWYgaTM4Nl90aHJlYWRfc3RhdGVfdCBQbGF0Zm9ybVJlZ2lzdGVyczsK
KyNlbGlmIENQVShYODZfNjQpCisgICAgICAgIHR5cGVkZWYgeDg2X3RocmVhZF9zdGF0ZTY0X3Qg
UGxhdGZvcm1SZWdpc3RlcnM7CisjZWxpZiBDUFUoUFBDKQorICAgICAgICB0eXBlZGVmIHBwY190
aHJlYWRfc3RhdGVfdCBQbGF0Zm9ybVJlZ2lzdGVyczsKKyNlbGlmIENQVShQUEM2NCkKKyAgICAg
ICAgdHlwZWRlZiBwcGNfdGhyZWFkX3N0YXRlNjRfdCBQbGF0Zm9ybVJlZ2lzdGVyczsKKyNlbGlm
IENQVShBUk0pCisgICAgICAgIHR5cGVkZWYgYXJtX3RocmVhZF9zdGF0ZV90IFBsYXRmb3JtUmVn
aXN0ZXJzOworI2VsaWYgQ1BVKEFSTTY0KQorICAgICAgICB0eXBlZGVmIGFybV90aHJlYWRfc3Rh
dGU2NF90IFBsYXRmb3JtUmVnaXN0ZXJzOworI2Vsc2UKKyNlcnJvciBVbmtub3duIEFyY2hpdGVj
dHVyZQorI2VuZGlmCisgICAgICAgIAorI2VsaWYgT1MoV0lORE9XUykKKyAgICAgICAgdHlwZWRl
ZiBDT05URVhUIFBsYXRmb3JtUmVnaXN0ZXJzOworI2VsaWYgVVNFKFBUSFJFQURTKQorICAgICAg
ICB0eXBlZGVmIHB0aHJlYWRfYXR0cl90IFBsYXRmb3JtUmVnaXN0ZXJzOworI2Vsc2UKKyNlcnJv
ciBOZWVkIGEgdGhyZWFkIHJlZ2lzdGVyIHN0cnVjdCBmb3IgdGhpcyBwbGF0Zm9ybQorI2VuZGlm
CisgICAgICAgIAorICAgICAgICBQbGF0Zm9ybVJlZ2lzdGVycyByZWdzOworICAgIH07CisgICAg
CisgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQbGF0Zm9ybVRocmVhZCYgb3RoZXIp
IGNvbnN0OworICAgIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUGxhdGZvcm1UaHJlYWQm
IG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQorCisgICAgaW5saW5l
IGJvb2wgc3VzcGVuZCgpOworICAgIGlubGluZSB2b2lkIHJlc3VtZSgpOworICAgIHNpemVfdCBn
ZXRSZWdpc3RlcnMoUmVnaXN0ZXJzJik7CisgICAgdm9pZCBmcmVlUmVnaXN0ZXJzKFJlZ2lzdGVy
cyYpOworICAgIHN0ZDo6cGFpcjx2b2lkKiwgc2l6ZV90PiBjYXB0dXJlU3RhY2sodm9pZCogc3Rh
Y2tUb3ApOworCiAgICAgVGhyZWFkKiBuZXh0OwogICAgIFBsYXRmb3JtVGhyZWFkIHBsYXRmb3Jt
VGhyZWFkOwogICAgIHZvaWQqIHN0YWNrQmFzZTsKQEAgLTE5OSwyMyArMjU1LDEyIEBAIE1hY2hp
bmVUaHJlYWRzOjp+TWFjaGluZVRocmVhZHMoKQogICAgIH0KIH0KIAotc3RhdGljIGlubGluZSBQ
bGF0Zm9ybVRocmVhZCBnZXRDdXJyZW50UGxhdGZvcm1UaHJlYWQoKQotewotI2lmIE9TKERBUldJ
TikKLSAgICByZXR1cm4gcHRocmVhZF9tYWNoX3RocmVhZF9ucChwdGhyZWFkX3NlbGYoKSk7Ci0j
ZWxpZiBPUyhXSU5ET1dTKQotICAgIHJldHVybiBHZXRDdXJyZW50VGhyZWFkKCk7Ci0jZWxpZiBV
U0UoUFRIUkVBRFMpCi0gICAgcmV0dXJuIHB0aHJlYWRfc2VsZigpOwotI2VuZGlmCi19Ci0KLXN0
YXRpYyBpbmxpbmUgYm9vbCBlcXVhbFRocmVhZChjb25zdCBQbGF0Zm9ybVRocmVhZCYgZmlyc3Qs
IGNvbnN0IFBsYXRmb3JtVGhyZWFkJiBzZWNvbmQpCitpbmxpbmUgYm9vbCBNYWNoaW5lVGhyZWFk
czo6VGhyZWFkOjpvcGVyYXRvcj09KGNvbnN0IFBsYXRmb3JtVGhyZWFkJiBvdGhlcikgY29uc3QK
IHsKICNpZiBPUyhEQVJXSU4pIHx8IE9TKFdJTkRPV1MpCi0gICAgcmV0dXJuIGZpcnN0ID09IHNl
Y29uZDsKKyAgICByZXR1cm4gcGxhdGZvcm1UaHJlYWQgPT0gb3RoZXI7CiAjZWxpZiBVU0UoUFRI
UkVBRFMpCi0gICAgcmV0dXJuICEhcHRocmVhZF9lcXVhbChmaXJzdCwgc2Vjb25kKTsKKyAgICBy
ZXR1cm4gISFwdGhyZWFkX2VxdWFsKHBsYXRmb3JtVGhyZWFkLCBvdGhlcik7CiAjZWxzZQogI2Vy
cm9yIE5lZWQgYSB3YXkgdG8gY29tcGFyZSB0aHJlYWRzIG9uIHRoaXMgcGxhdGZvcm0KICNlbmRp
ZgpAQCAtMjMxLDcgKzI3Niw3IEBAIHZvaWQgTWFjaGluZVRocmVhZHM6OmFkZEN1cnJlbnRUaHJl
YWQoKQogICAgIH0KIAogICAgIHRocmVhZFNwZWNpZmljU2V0KG1fdGhyZWFkU3BlY2lmaWMsIHRo
aXMpOwotICAgIFRocmVhZCogdGhyZWFkID0gbmV3IFRocmVhZChnZXRDdXJyZW50UGxhdGZvcm1U
aHJlYWQoKSwgd3RmVGhyZWFkRGF0YSgpLnN0YWNrKCkub3JpZ2luKCkpOworICAgIFRocmVhZCog
dGhyZWFkID0gVGhyZWFkOjpjcmVhdGVGb3JDdXJyZW50VGhyZWFkKCk7CiAKICAgICBNdXRleExv
Y2tlciBsb2NrKG1fcmVnaXN0ZXJlZFRocmVhZHNNdXRleCk7CiAKQEAgLTI1OCwxNSArMzAzLDE0
IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFBsYXRmb3JtVGhyZWFkPgogdm9pZCBNYWNoaW5lVGhyZWFk
czo6cmVtb3ZlVGhyZWFkSWZGb3VuZChQbGF0Zm9ybVRocmVhZCBwbGF0Zm9ybVRocmVhZCkKIHsK
ICAgICBNdXRleExvY2tlciBsb2NrKG1fcmVnaXN0ZXJlZFRocmVhZHNNdXRleCk7Ci0gICAgaWYg
KGVxdWFsVGhyZWFkKHBsYXRmb3JtVGhyZWFkLCBtX3JlZ2lzdGVyZWRUaHJlYWRzLT5wbGF0Zm9y
bVRocmVhZCkpIHsKLSAgICAgICAgVGhyZWFkKiB0ID0gbV9yZWdpc3RlcmVkVGhyZWFkczsKKyAg
ICBUaHJlYWQqIHQgPSBtX3JlZ2lzdGVyZWRUaHJlYWRzOworICAgIGlmICgqdCA9PSBwbGF0Zm9y
bVRocmVhZCkgewogICAgICAgICBtX3JlZ2lzdGVyZWRUaHJlYWRzID0gbV9yZWdpc3RlcmVkVGhy
ZWFkcy0+bmV4dDsKICAgICAgICAgZGVsZXRlIHQ7CiAgICAgfSBlbHNlIHsKICAgICAgICAgVGhy
ZWFkKiBsYXN0ID0gbV9yZWdpc3RlcmVkVGhyZWFkczsKLSAgICAgICAgVGhyZWFkKiB0OwogICAg
ICAgICBmb3IgKHQgPSBtX3JlZ2lzdGVyZWRUaHJlYWRzLT5uZXh0OyB0OyB0ID0gdC0+bmV4dCkg
ewotICAgICAgICAgICAgaWYgKGVxdWFsVGhyZWFkKHQtPnBsYXRmb3JtVGhyZWFkLCBwbGF0Zm9y
bVRocmVhZCkpIHsKKyAgICAgICAgICAgIGlmICgqdCA9PSBwbGF0Zm9ybVRocmVhZCkgewogICAg
ICAgICAgICAgICAgIGxhc3QtPm5leHQgPSB0LT5uZXh0OwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQpAQCAtMjg1LDcgKzMyOSw3IEBAIHZvaWQgTWFjaGluZVRocmVhZHM6
OmdhdGhlckZyb21DdXJyZW50VGgKICAgICBjb25zZXJ2YXRpdmVSb290cy5hZGQoc3RhY2tUb3As
IHN0YWNrT3JpZ2luLCBqaXRTdHViUm91dGluZXMsIGNvZGVCbG9ja3MpOwogfQogCi1zdGF0aWMg
aW5saW5lIGJvb2wgc3VzcGVuZFRocmVhZChjb25zdCBQbGF0Zm9ybVRocmVhZCYgcGxhdGZvcm1U
aHJlYWQpCitpbmxpbmUgYm9vbCBNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpzdXNwZW5kKCkKIHsK
ICNpZiBPUyhEQVJXSU4pCiAgICAga2Vybl9yZXR1cm5fdCByZXN1bHQgPSB0aHJlYWRfc3VzcGVu
ZChwbGF0Zm9ybVRocmVhZCk7CkBAIC0zMDIsNyArMzQ2LDcgQEAgc3RhdGljIGlubGluZSBib29s
IHN1c3BlbmRUaHJlYWQoY29uc3QgUAogI2VuZGlmCiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBy
ZXN1bWVUaHJlYWQoY29uc3QgUGxhdGZvcm1UaHJlYWQmIHBsYXRmb3JtVGhyZWFkKQoraW5saW5l
IHZvaWQgTWFjaGluZVRocmVhZHM6OlRocmVhZDo6cmVzdW1lKCkKIHsKICNpZiBPUyhEQVJXSU4p
CiAgICAgdGhyZWFkX3Jlc3VtZShwbGF0Zm9ybVRocmVhZCk7CkBAIC0zMTUsMzggKzM1OSwxMCBA
QCBzdGF0aWMgaW5saW5lIHZvaWQgcmVzdW1lVGhyZWFkKGNvbnN0IFBsCiAjZW5kaWYKIH0KIAot
dHlwZWRlZiB1bnNpZ25lZCBsb25nIHVzd29yZF90OyAvLyB3b3JkIHNpemUsIGFzc3VtZWQgdG8g
YmUgZWl0aGVyIDMyIG9yIDY0IGJpdAotCi0jaWYgT1MoREFSV0lOKQotCi0jaWYgQ1BVKFg4NikK
LXR5cGVkZWYgaTM4Nl90aHJlYWRfc3RhdGVfdCBQbGF0Zm9ybVRocmVhZFJlZ2lzdGVyczsKLSNl
bGlmIENQVShYODZfNjQpCi10eXBlZGVmIHg4Nl90aHJlYWRfc3RhdGU2NF90IFBsYXRmb3JtVGhy
ZWFkUmVnaXN0ZXJzOwotI2VsaWYgQ1BVKFBQQykKLXR5cGVkZWYgcHBjX3RocmVhZF9zdGF0ZV90
IFBsYXRmb3JtVGhyZWFkUmVnaXN0ZXJzOwotI2VsaWYgQ1BVKFBQQzY0KQotdHlwZWRlZiBwcGNf
dGhyZWFkX3N0YXRlNjRfdCBQbGF0Zm9ybVRocmVhZFJlZ2lzdGVyczsKLSNlbGlmIENQVShBUk0p
Ci10eXBlZGVmIGFybV90aHJlYWRfc3RhdGVfdCBQbGF0Zm9ybVRocmVhZFJlZ2lzdGVyczsKLSNl
bGlmIENQVShBUk02NCkKLXR5cGVkZWYgYXJtX3RocmVhZF9zdGF0ZTY0X3QgUGxhdGZvcm1UaHJl
YWRSZWdpc3RlcnM7Ci0jZWxzZQotI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCi0jZW5kaWYK
LQotI2VsaWYgT1MoV0lORE9XUykKLXR5cGVkZWYgQ09OVEVYVCBQbGF0Zm9ybVRocmVhZFJlZ2lz
dGVyczsKLSNlbGlmIFVTRShQVEhSRUFEUykKLXR5cGVkZWYgcHRocmVhZF9hdHRyX3QgUGxhdGZv
cm1UaHJlYWRSZWdpc3RlcnM7Ci0jZWxzZQotI2Vycm9yIE5lZWQgYSB0aHJlYWQgcmVnaXN0ZXIg
c3RydWN0IGZvciB0aGlzIHBsYXRmb3JtCi0jZW5kaWYKLQotc3RhdGljIHNpemVfdCBnZXRQbGF0
Zm9ybVRocmVhZFJlZ2lzdGVycyhjb25zdCBQbGF0Zm9ybVRocmVhZCYgcGxhdGZvcm1UaHJlYWQs
IFBsYXRmb3JtVGhyZWFkUmVnaXN0ZXJzJiByZWdzKQorc2l6ZV90IE1hY2hpbmVUaHJlYWRzOjpU
aHJlYWQ6OmdldFJlZ2lzdGVycyhNYWNoaW5lVGhyZWFkczo6VGhyZWFkOjpSZWdpc3RlcnMmIHJl
Z2lzdGVycykKIHsKKyAgICBUaHJlYWQ6OlJlZ2lzdGVyczo6UGxhdGZvcm1SZWdpc3RlcnMmIHJl
Z3MgPSByZWdpc3RlcnMucmVnczsKICNpZiBPUyhEQVJXSU4pCi0KICNpZiBDUFUoWDg2KQogICAg
IHVuc2lnbmVkIHVzZXJfY291bnQgPSBzaXplb2YocmVncykvc2l6ZW9mKGludCk7CiAgICAgdGhy
ZWFkX3N0YXRlX2ZsYXZvcl90IGZsYXZvciA9IGkzODZfVEhSRUFEX1NUQVRFOwpAQCAtMzc1LDcg
KzM5MSw3IEBAIHN0YXRpYyBzaXplX3QgZ2V0UGxhdGZvcm1UaHJlYWRSZWdpc3RlcnMKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiSmF2YVNjcmlwdCBnYXJiYWdlIGNvbGxlY3Rpb24gZmFp
bGVkIGJlY2F1c2UgdGhyZWFkX2dldF9zdGF0ZSByZXR1cm5lZCBhbiBlcnJvciAoJWQpLiBUaGlz
IGlzIHByb2JhYmx5IHRoZSByZXN1bHQgb2YgcnVubmluZyBpbnNpZGUgUm9zZXR0YSwgd2hpY2gg
aXMgbm90IHN1cHBvcnRlZC4iLCByZXN1bHQpOwogICAgICAgICBDUkFTSCgpOwogICAgIH0KLSAg
ICByZXR1cm4gdXNlcl9jb3VudCAqIHNpemVvZih1c3dvcmRfdCk7CisgICAgcmV0dXJuIHVzZXJf
Y291bnQgKiBzaXplb2YodWludHB0cl90KTsKIC8vIGVuZCBPUyhEQVJXSU4pCiAKICNlbGlmIE9T
KFdJTkRPV1MpCkBAIC0zOTksNyArNDE1LDcgQEAgc3RhdGljIHNpemVfdCBnZXRQbGF0Zm9ybVRo
cmVhZFJlZ2lzdGVycwogI2VuZGlmCiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCogb3RoZXJUaHJl
YWRTdGFja1BvaW50ZXIoY29uc3QgUGxhdGZvcm1UaHJlYWRSZWdpc3RlcnMmIHJlZ3MpCitpbmxp
bmUgdm9pZCogTWFjaGluZVRocmVhZHM6OlRocmVhZDo6UmVnaXN0ZXJzOjpzdGFja1BvaW50ZXIo
KSBjb25zdAogewogI2lmIE9TKERBUldJTikKIApAQCAtNDY3LDggKzQ4Myw5IEBAIHN0YXRpYyBp
bmxpbmUgdm9pZCogb3RoZXJUaHJlYWRTdGFja1BvaW4KICNlbmRpZgogfQogCi1zdGF0aWMgdm9p
ZCBmcmVlUGxhdGZvcm1UaHJlYWRSZWdpc3RlcnMoUGxhdGZvcm1UaHJlYWRSZWdpc3RlcnMmIHJl
Z3MpCit2b2lkIE1hY2hpbmVUaHJlYWRzOjpUaHJlYWQ6OmZyZWVSZWdpc3RlcnMoTWFjaGluZVRo
cmVhZHM6OlRocmVhZDo6UmVnaXN0ZXJzJiByZWdpc3RlcnMpCiB7CisgICAgVGhyZWFkOjpSZWdp
c3RlcnM6OlBsYXRmb3JtUmVnaXN0ZXJzJiByZWdzID0gcmVnaXN0ZXJzLnJlZ3M7CiAjaWYgVVNF
KFBUSFJFQURTKSAmJiAhT1MoV0lORE9XUykgJiYgIU9TKERBUldJTikKICAgICBwdGhyZWFkX2F0
dHJfZGVzdHJveSgmcmVncyk7CiAjZWxzZQpAQCAtNDc2LDEzICs0OTMsMTEgQEAgc3RhdGljIHZv
aWQgZnJlZVBsYXRmb3JtVGhyZWFkUmVnaXN0ZXJzKAogI2VuZGlmCiB9CiAKLXN0YXRpYyBzdGQ6
OnBhaXI8dm9pZCosIHNpemVfdD4gb3RoZXJUaHJlYWRTdGFjayh2b2lkKiBzdGFja0Jhc2UsIGNv
bnN0IFBsYXRmb3JtVGhyZWFkUmVnaXN0ZXJzJiByZWdpc3RlcnMpCitzdGQ6OnBhaXI8dm9pZCos
IHNpemVfdD4gTWFjaGluZVRocmVhZHM6OlRocmVhZDo6Y2FwdHVyZVN0YWNrKHZvaWQqIHN0YWNr
VG9wKQogewogICAgIHZvaWQqIGJlZ2luID0gc3RhY2tCYXNlOwogICAgIHZvaWQqIGVuZCA9IHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KAotICAgICAgICBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8
c2l6ZW9mKHZvaWQqKT4oCi0gICAgICAgICAgICByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4o
Ci0gICAgICAgICAgICAgICAgb3RoZXJUaHJlYWRTdGFja1BvaW50ZXIocmVnaXN0ZXJzKSkpKTsK
KyAgICAgICAgV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPHNpemVvZih2b2lkKik+KHJlaW50ZXJw
cmV0X2Nhc3Q8dWludHB0cl90PihzdGFja1RvcCkpKTsKICAgICBpZiAoYmVnaW4gPiBlbmQpCiAg
ICAgICAgIHN0ZDo6c3dhcChiZWdpbiwgZW5kKTsKICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIo
YmVnaW4sIHN0YXRpY19jYXN0PGNoYXIqPihlbmQpIC0gc3RhdGljX2Nhc3Q8Y2hhcio+KGJlZ2lu
KSk7CkBAIC01MTMsOSArNTI4LDkgQEAgdm9pZCBhc2FuVW5zYWZlTWVtY3B5KHZvaWQqIGRzdCwg
Y29uc3QgdgogLy8gd2lsbCBkZWFkbG9jayBpZiAndGhyZWFkJyBob2xkcyB0aGF0IGxvY2suCiB2
b2lkIE1hY2hpbmVUaHJlYWRzOjp0cnlDb3B5T3RoZXJUaHJlYWRTdGFjayhUaHJlYWQqIHRocmVh
ZCwgdm9pZCogYnVmZmVyLCBzaXplX3QgY2FwYWNpdHksIHNpemVfdCogc2l6ZSkKIHsKLSAgICBQ
bGF0Zm9ybVRocmVhZFJlZ2lzdGVycyByZWdpc3RlcnM7Ci0gICAgc2l6ZV90IHJlZ2lzdGVyc1Np
emUgPSBnZXRQbGF0Zm9ybVRocmVhZFJlZ2lzdGVycyh0aHJlYWQtPnBsYXRmb3JtVGhyZWFkLCBy
ZWdpc3RlcnMpOwotICAgIHN0ZDo6cGFpcjx2b2lkKiwgc2l6ZV90PiBzdGFjayA9IG90aGVyVGhy
ZWFkU3RhY2sodGhyZWFkLT5zdGFja0Jhc2UsIHJlZ2lzdGVycyk7CisgICAgVGhyZWFkOjpSZWdp
c3RlcnMgcmVnaXN0ZXJzOworICAgIHNpemVfdCByZWdpc3RlcnNTaXplID0gdGhyZWFkLT5nZXRS
ZWdpc3RlcnMocmVnaXN0ZXJzKTsKKyAgICBzdGQ6OnBhaXI8dm9pZCosIHNpemVfdD4gc3RhY2sg
PSB0aHJlYWQtPmNhcHR1cmVTdGFjayhyZWdpc3RlcnMuc3RhY2tQb2ludGVyKCkpOwogCiAgICAg
Ym9vbCBjYW5Db3B5ID0gKnNpemUgKyByZWdpc3RlcnNTaXplICsgc3RhY2suc2Vjb25kIDw9IGNh
cGFjaXR5OwogCkBAIC01MjcsNyArNTQyLDcgQEAgdm9pZCBNYWNoaW5lVGhyZWFkczo6dHJ5Q29w
eU90aGVyVGhyZWFkUwogICAgICAgICBtZW1jcHkoc3RhdGljX2Nhc3Q8Y2hhcio+KGJ1ZmZlcikg
KyAqc2l6ZSwgc3RhY2suZmlyc3QsIHN0YWNrLnNlY29uZCk7CiAgICAgKnNpemUgKz0gc3RhY2su
c2Vjb25kOwogCi0gICAgZnJlZVBsYXRmb3JtVGhyZWFkUmVnaXN0ZXJzKHJlZ2lzdGVycyk7Cisg
ICAgdGhyZWFkLT5mcmVlUmVnaXN0ZXJzKHJlZ2lzdGVycyk7CiB9CiAKIGJvb2wgTWFjaGluZVRo
cmVhZHM6OnRyeUNvcHlPdGhlclRocmVhZFN0YWNrcyhNdXRleExvY2tlciYsIHZvaWQqIGJ1ZmZl
ciwgc2l6ZV90IGNhcGFjaXR5LCBzaXplX3QqIHNpemUpCkBAIC01NDEsOCArNTU2LDggQEAgYm9v
bCBNYWNoaW5lVGhyZWFkczo6dHJ5Q29weU90aGVyVGhyZWFkUwogCiAgICAgVGhyZWFkKiBwcmV2
aW91c1RocmVhZCA9IG51bGxwdHI7CiAgICAgZm9yIChUaHJlYWQqIHRocmVhZCA9IG1fcmVnaXN0
ZXJlZFRocmVhZHM7IHRocmVhZDsgaW5kZXgrKykgewotICAgICAgICBpZiAoIWVxdWFsVGhyZWFk
KHRocmVhZC0+cGxhdGZvcm1UaHJlYWQsIGN1cnJlbnRQbGF0Zm9ybVRocmVhZCkpIHsKLSAgICAg
ICAgICAgIGJvb2wgc3VjY2VzcyA9IHN1c3BlbmRUaHJlYWQodGhyZWFkLT5wbGF0Zm9ybVRocmVh
ZCk7CisgICAgICAgIGlmICgqdGhyZWFkICE9IGN1cnJlbnRQbGF0Zm9ybVRocmVhZCkgeworICAg
ICAgICAgICAgYm9vbCBzdWNjZXNzID0gdGhyZWFkLT5zdXNwZW5kKCk7CiAjaWYgT1MoREFSV0lO
KQogICAgICAgICAgICAgaWYgKCFzdWNjZXNzKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFudW1i
ZXJPZlRocmVhZHMpIHsKQEAgLTU4NSwxMyArNjAwLDEzIEBAIGJvb2wgTWFjaGluZVRocmVhZHM6
OnRyeUNvcHlPdGhlclRocmVhZFMKICAgICB9CiAKICAgICBmb3IgKFRocmVhZCogdGhyZWFkID0g
bV9yZWdpc3RlcmVkVGhyZWFkczsgdGhyZWFkOyB0aHJlYWQgPSB0aHJlYWQtPm5leHQpIHsKLSAg
ICAgICAgaWYgKCFlcXVhbFRocmVhZCh0aHJlYWQtPnBsYXRmb3JtVGhyZWFkLCBjdXJyZW50UGxh
dGZvcm1UaHJlYWQpKQorICAgICAgICBpZiAoKnRocmVhZCAhPSBjdXJyZW50UGxhdGZvcm1UaHJl
YWQpCiAgICAgICAgICAgICB0cnlDb3B5T3RoZXJUaHJlYWRTdGFjayh0aHJlYWQsIGJ1ZmZlciwg
Y2FwYWNpdHksIHNpemUpOwogICAgIH0KIAogICAgIGZvciAoVGhyZWFkKiB0aHJlYWQgPSBtX3Jl
Z2lzdGVyZWRUaHJlYWRzOyB0aHJlYWQ7IHRocmVhZCA9IHRocmVhZC0+bmV4dCkgewotICAgICAg
ICBpZiAoIWVxdWFsVGhyZWFkKHRocmVhZC0+cGxhdGZvcm1UaHJlYWQsIGN1cnJlbnRQbGF0Zm9y
bVRocmVhZCkpCi0gICAgICAgICAgICByZXN1bWVUaHJlYWQodGhyZWFkLT5wbGF0Zm9ybVRocmVh
ZCk7CisgICAgICAgIGlmICgqdGhyZWFkICE9IGN1cnJlbnRQbGF0Zm9ybVRocmVhZCkKKyAgICAg
ICAgICAgIHRocmVhZC0+cmVzdW1lKCk7CiAgICAgfQogCiAgICAgZm9yIChUaHJlYWQqIHRocmVh
ZCA9IHRocmVhZHNUb0JlRGVsZXRlZDsgdGhyZWFkOyApIHsK
</data>
<flag name="review"
          id="277836"
          type_id="1"
          status="+"
          setter="msaboff"
    />
          </attachment>
      

    </bug>

</bugzilla>