<?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>22272</bug_id>
          
          <creation_ts>2008-11-14 15:59:05 -0800</creation_ts>
          <short_desc>The JIT code for calls is HUUUUUUUGE!</short_desc>
          <delta_ts>2008-11-14 17:37:23 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</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="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Gavin Barraclough">barraclough</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>98831</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2008-11-14 15:59:05 -0800</bug_when>
    <thetext>We should generate less of it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98832</commentid>
    <comment_count>1</comment_count>
      <attachid>25178</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2008-11-14 16:03:48 -0800</bug_when>
    <thetext>Created attachment 25178
The patch

1% progression on v8 tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98836</commentid>
    <comment_count>2</comment_count>
      <attachid>25178</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2008-11-14 16:21:41 -0800</bug_when>
    <thetext>Comment on attachment 25178
The patch

emitRetrieveArg

This is a fishy name.

The problem is really that emitGetArg is a bad name. So, we should rename emitGetArg to emitGetVirtualRegister. Probably a good thing to do after landing this patch.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98839</commentid>
    <comment_count>3</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2008-11-14 17:37:23 -0800</bug_when>
    <thetext>Sending        JavaScriptCore/ChangeLog
Sending        JavaScriptCore/VM/CTI.cpp
Sending        JavaScriptCore/VM/CTI.h
Sending        JavaScriptCore/VM/CodeBlock.h
Sending        JavaScriptCore/VM/Machine.cpp
Sending        JavaScriptCore/VM/Machine.h
Transmitting file data ......
Committed revision 38412.

</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25178</attachid>
            <date>2008-11-14 16:03:48 -0800</date>
            <delta_ts>2008-11-14 16:21:41 -0800</delta_ts>
            <desc>The patch</desc>
            <filename>patch.m_ctiVirtualCall.nine.txt</filename>
            <type>text/plain</type>
            <size>21110</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDM4NDEwKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMDgtMTEtMTQgIEdhdmluIEJh
cnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdlbmVyYXRlIGxlc3MgY29kZSBmb3IgdGhlIHNs
b3cgY2FzZXMgb2Ygb3BfY2FsbCBhbmQgb3BfY29uc3RydWN0LgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNzIKKworICAgICAgICAxJSBwcm9ncmVz
c2lvbiBvbiB2OCB0ZXN0cy4KKworICAgICAgICAqIFZNL0NUSS5jcHA6CisgICAgICAgIChKU0M6
OkNUSTo6ZW1pdFJldHJpZXZlQXJnKToKKyAgICAgICAgKEpTQzo6Q1RJOjplbWl0TmFrZWRDYWxs
KToKKyAgICAgICAgKEpTQzo6Q1RJOjpjb21waWxlT3BDYWxsSW5pdGlhbGl6ZUNhbGxGcmFtZSk6
CisgICAgICAgIChKU0M6OkNUSTo6Y29tcGlsZU9wQ2FsbCk6CisgICAgICAgIChKU0M6OkNUSTo6
cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpDVEk6OnByaXZhdGVDb21w
aWxlQ1RJTWFjaGluZVRyYW1wb2xpbmVzKToKKyAgICAgICAgKiBWTS9DVEkuaDoKKyAgICAgICAg
KiBWTS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Z2V0Q2FsbExpbmtJbmZvUmV0dXJuTG9j
YXRpb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmdldENhbGxMaW5rSW5mbyk6CisgICAg
ICAgICogVk0vTWFjaGluZS5jcHA6CisgICAgICAgIChKU0M6Ok1hY2hpbmU6Ok1hY2hpbmUpOgor
ICAgICAgICAoSlNDOjpNYWNoaW5lOjpjdGlfdm1fZG9udExhenlMaW5rQ2FsbCk6CisgICAgICAg
IChKU0M6Ok1hY2hpbmU6OmN0aV92bV9sYXp5TGlua0NhbGwpOgorICAgICAgICAqIFZNL01hY2hp
bmUuaDoKKwogMjAwOC0xMS0xMyAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9WTS9DVEku
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL1ZNL0NUSS5jcHAJKHJldmlzaW9uIDM4
NDEwKQorKysgSmF2YVNjcmlwdENvcmUvVk0vQ1RJLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQx
LDYgKzI0MSwxMiBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgQ1RJOjplbWl0UHV0QXJnKFg4NkFzCiAg
ICAgbV9qaXQubW92bF9ybShzcmMsIG9mZnNldCArIHNpemVvZih2b2lkKiksIFg4Njo6ZXNwKTsK
IH0KIAorQUxXQVlTX0lOTElORSB2b2lkIENUSTo6ZW1pdFJldHJpZXZlQXJnKHVuc2lnbmVkIG9m
ZnNldCwgWDg2QXNzZW1ibGVyOjpSZWdpc3RlcklEIGRzdCkKK3sKKyAgICBtX2ppdC5tb3ZsX21y
KG9mZnNldCArIHNpemVvZih2b2lkKiksIFg4Njo6ZXNwLCBkc3QpOworfQorCisKIEFMV0FZU19J
TkxJTkUgdm9pZCBDVEk6OmVtaXRQdXRBcmdDb25zdGFudCh1bnNpZ25lZCB2YWx1ZSwgdW5zaWdu
ZWQgb2Zmc2V0KQogewogICAgIG1faml0Lm1vdmxfaTMybSh2YWx1ZSwgb2Zmc2V0ICsgc2l6ZW9m
KHZvaWQqKSwgWDg2Ojplc3ApOwpAQCAtMzY1LDcgKzM3MSw3IEBAIEFMV0FZU19JTkxJTkUgWDg2
QXNzZW1ibGVyOjpKbXBTcmMgQ1RJOjoKICAgICByZXR1cm4gY2FsbDsKIH0KIAotQUxXQVlTX0lO
TElORSAgWDg2QXNzZW1ibGVyOjpKbXBTcmMgQ1RJOjplbWl0TmFrZWRDYWxsKHVuc2lnbmVkIG9w
Y29kZUluZGV4LCB2b2lkKCpmdW5jdGlvbikoKSkKK0FMV0FZU19JTkxJTkUgIFg4NkFzc2VtYmxl
cjo6Sm1wU3JjIENUSTo6ZW1pdE5ha2VkQ2FsbCh1bnNpZ25lZCBvcGNvZGVJbmRleCwgdm9pZCog
ZnVuY3Rpb24pCiB7CiAgICAgWDg2QXNzZW1ibGVyOjpKbXBTcmMgY2FsbCA9IG1faml0LmVtaXRD
YWxsKCk7CiAgICAgbV9jYWxscy5hcHBlbmQoQ2FsbFJlY29yZChjYWxsLCByZWludGVycHJldF9j
YXN0PENUSUhlbHBlcl92PihmdW5jdGlvbiksIG9wY29kZUluZGV4KSk7CkBAIC02NDUsMTQgKzY1
MSwxNSBAQCBzdGF0aWMgdm9pZCB1bnJlYWNoYWJsZSgpCiAgICAgZXhpdCgxKTsKIH0KIAotdm9p
ZCBDVEk6OmNvbXBpbGVPcENhbGxJbml0aWFsaXplQ2FsbEZyYW1lKHVuc2lnbmVkLCB1bnNpZ25l
ZCBhcmdDb3VudCkKK3ZvaWQgQ1RJOjpjb21waWxlT3BDYWxsSW5pdGlhbGl6ZUNhbGxGcmFtZSgp
CiB7Ci0gICAgbV9qaXQubW92bF9tcihPQkpFQ1RfT0ZGU0VUKEpTRnVuY3Rpb24sIG1fc2NvcGVD
aGFpbikgKyBPQkpFQ1RfT0ZGU0VUKFNjb3BlQ2hhaW4sIG1fbm9kZSksIFg4Njo6ZWN4LCBYODY6
OmVieCk7IC8vIG5ld1Njb3BlQ2hhaW4KKyAgICBtX2ppdC5tb3ZsX3JtKFg4Njo6ZWR4LCBSZWdp
c3RlckZpbGU6OkFyZ3VtZW50Q291bnQgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3Rl
cikpLCBYODY6OmVkaSk7CisKKyAgICBtX2ppdC5tb3ZsX21yKE9CSkVDVF9PRkZTRVQoSlNGdW5j
dGlvbiwgbV9zY29wZUNoYWluKSArIE9CSkVDVF9PRkZTRVQoU2NvcGVDaGFpbiwgbV9ub2RlKSwg
WDg2OjplY3gsIFg4Njo6ZWR4KTsgLy8gbmV3U2NvcGVDaGFpbgogCiAgICAgbV9qaXQubW92bF9p
MzJtKGFzSW50ZWdlcihub1ZhbHVlKCkpLCBSZWdpc3RlckZpbGU6Ok9wdGlvbmFsQ2FsbGVlQXJn
dW1lbnRzICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSwgWDg2OjplZGkpOwog
ICAgIG1faml0Lm1vdmxfcm0oWDg2OjplY3gsIFJlZ2lzdGVyRmlsZTo6Q2FsbGVlICogc3RhdGlj
X2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSwgWDg2OjplZGkpOwotICAgIG1faml0Lm1vdmxf
aTMybShhcmdDb3VudCwgUmVnaXN0ZXJGaWxlOjpBcmd1bWVudENvdW50ICogc3RhdGljX2Nhc3Q8
aW50PihzaXplb2YoUmVnaXN0ZXIpKSwgWDg2OjplZGkpOwotICAgIG1faml0Lm1vdmxfcm0oWDg2
OjplYngsIFJlZ2lzdGVyRmlsZTo6U2NvcGVDaGFpbiAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9m
KFJlZ2lzdGVyKSksIFg4Njo6ZWRpKTsKKyAgICBtX2ppdC5tb3ZsX3JtKFg4Njo6ZWR4LCBSZWdp
c3RlckZpbGU6OlNjb3BlQ2hhaW4gKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3Rlcikp
LCBYODY6OmVkaSk7CiB9CiAKIHZvaWQgQ1RJOjpjb21waWxlT3BDYWxsU2V0dXBBcmdzKEluc3Ry
dWN0aW9uKiBpbnN0cnVjdGlvbikKQEAgLTc0Nyw3ICs3NTQsNyBAQCB2b2lkIENUSTo6Y29tcGls
ZU9wQ2FsbChPcGNvZGVJRCBvcGNvZGVJCiAgICAgbV9qaXQuYWRkbF9pMzJyKHJlZ2lzdGVyT2Zm
c2V0ICogc2l6ZW9mKFJlZ2lzdGVyKSwgWDg2OjplZGkpOwogCiAgICAgLy8gQ2FsbCB0byB0aGUg
Y2FsbGVlCi0gICAgbV9jYWxsU3RydWN0dXJlU3R1YkNvbXBpbGF0aW9uSW5mb1tjYWxsTGlua0lu
Zm9JbmRleF0uaG90UGF0aE90aGVyID0gZW1pdE5ha2VkQ2FsbChpLCB1bnJlYWNoYWJsZSk7Cisg
ICAgbV9jYWxsU3RydWN0dXJlU3R1YkNvbXBpbGF0aW9uSW5mb1tjYWxsTGlua0luZm9JbmRleF0u
aG90UGF0aE90aGVyID0gZW1pdE5ha2VkQ2FsbChpLCByZWludGVycHJldF9jYXN0PHZvaWQqPih1
bnJlYWNoYWJsZSkpOwogICAgIAogICAgIGlmIChvcGNvZGVJRCA9PSBvcF9jYWxsX2V2YWwpCiAg
ICAgICAgIG1faml0Lmxpbmsod2FzRXZhbCwgbV9qaXQubGFiZWwoKSk7CkBAIC0yOTAwLDM3ICsy
OTA3LDE1IEBAIHZvaWQgQ1RJOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgICAg
ICAgICAgZW1pdEdldEFyZyhjYWxsZWUsIFg4Njo6ZWN4LCBpKTsKICAgICAgICAgICAgIH0KIAot
ICAgICAgICAgICAgLy8gTG9hZCB0aGUgY2FsbGVlIENvZGVCbG9jayogaW50byBlYXgKLSAgICAg
ICAgICAgIG1faml0Lm1vdmxfbXIoT0JKRUNUX09GRlNFVChKU0Z1bmN0aW9uLCBtX2JvZHkpLCBY
ODY6OmVjeCwgWDg2OjplYXgpOwotICAgICAgICAgICAgbV9qaXQubW92bF9tcihPQkpFQ1RfT0ZG
U0VUKEZ1bmN0aW9uQm9keU5vZGUsIG1fY29kZSksIFg4Njo6ZWF4LCBYODY6OmVheCk7Ci0gICAg
ICAgICAgICBtX2ppdC50ZXN0bF9ycihYODY6OmVheCwgWDg2OjplYXgpOwotICAgICAgICAgICAg
WDg2QXNzZW1ibGVyOjpKbXBTcmMgaGFzQ29kZUJsb2NrRm9yTGluayA9IG1faml0LmVtaXRVbmxp
bmtlZEpuZSgpOwotICAgICAgICAgICAgZW1pdENUSUNhbGwoaW5zdHJ1Y3Rpb24gKyBpLCBpLCBN
YWNoaW5lOjpjdGlfb3BfY2FsbF9KU0Z1bmN0aW9uKTsKLSAgICAgICAgICAgIGVtaXRHZXRBcmco
Y2FsbGVlLCBYODY6OmVjeCwgaSk7Ci0gICAgICAgICAgICBtX2ppdC5saW5rKGhhc0NvZGVCbG9j
a0ZvckxpbmssIG1faml0LmxhYmVsKCkpOworICAgICAgICAgICAgbV9qaXQubW92bF9pMzJyKGFy
Z0NvdW50LCBYODY6OmVkeCk7CiAKICAgICAgICAgICAgIC8vIFNwZWN1bGF0aXZlbHkgcm9sbCB0
aGUgY2FsbGZyYW1lLCBhc3N1bWluZyBhcmdDb3VudCB3aWxsIG1hdGNoIHRoZSBhcml0eS4KICAg
ICAgICAgICAgIG1faml0Lm1vdmxfcm0oWDg2OjplZGksIChSZWdpc3RlckZpbGU6OkNhbGxlckZy
YW1lICsgcmVnaXN0ZXJPZmZzZXQpICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIp
KSwgWDg2OjplZGkpOwogICAgICAgICAgICAgbV9qaXQuYWRkbF9pMzJyKHJlZ2lzdGVyT2Zmc2V0
ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSwgWDg2OjplZGkpOwogCi0gICAg
ICAgICAgICAvLyBDaGVjayBhcmdDb3VudCBtYXRjaGVzIGNhbGxlZSBhcml0eS4KLSAgICAgICAg
ICAgIG1faml0LmNtcGxfaTMybShhcmdDb3VudCwgT0JKRUNUX09GRlNFVChDb2RlQmxvY2ssIG51
bVBhcmFtZXRlcnMpLCBYODY6OmVheCk7Ci0gICAgICAgICAgICBYODZBc3NlbWJsZXI6OkptcFNy
YyBhcml0eUNoZWNrT2theUZvckxpbmsgPSBtX2ppdC5lbWl0VW5saW5rZWRKZSgpOwotICAgICAg
ICAgICAgZW1pdFB1dEFyZyhYODY6OmVheCwgMTIpOwotICAgICAgICAgICAgZW1pdENUSUNhbGwo
aW5zdHJ1Y3Rpb24gKyBpLCBpLCBNYWNoaW5lOjpjdGlfb3BfY2FsbF9hcml0eUNoZWNrKTsKLSAg
ICAgICAgICAgIGVtaXRHZXRBcmcoY2FsbGVlIC0gcmVnaXN0ZXJPZmZzZXQsIFg4Njo6ZWN4LCBp
KTsKLSAgICAgICAgICAgIG1faml0Lm1vdmxfcnIoWDg2OjplZHgsIFg4Njo6ZWRpKTsKLSAgICAg
ICAgICAgIG1faml0LmxpbmsoYXJpdHlDaGVja09rYXlGb3JMaW5rLCBtX2ppdC5sYWJlbCgpKTsK
LQotICAgICAgICAgICAgLy8gaW5pdGlhbGl6ZSB0aGUgbmV3IGNhbGwgZnJhbWUgKHBvaW50ZWQg
dG8gYnkgZWR4LCBhZnRlciB0aGUgbGFzdCBjYWxsKS4KLSAgICAgICAgICAgIGNvbXBpbGVPcENh
bGxJbml0aWFsaXplQ2FsbEZyYW1lKGNhbGxlZSwgYXJnQ291bnQpOwotCi0gICAgICAgICAgICAv
LyBUcnkgdG8gbGluayAmIHJlcGF0Y2ggdGhpcyBjYWxsLgotICAgICAgICAgICAgQ2FsbExpbmtJ
bmZvKiBpbmZvID0gJihtX2NvZGVCbG9jay0+Y2FsbExpbmtJbmZvc1tjYWxsTGlua0luZm9JbmRl
eF0pOwotICAgICAgICAgICAgZW1pdFB1dEFyZ0NvbnN0YW50KHJlaW50ZXJwcmV0X2Nhc3Q8dW5z
aWduZWQ+KGluZm8pLCA0KTsKICAgICAgICAgICAgIG1fY2FsbFN0cnVjdHVyZVN0dWJDb21waWxh
dGlvbkluZm9bY2FsbExpbmtJbmZvSW5kZXhdLmNhbGxSZXR1cm5Mb2NhdGlvbiA9Ci0gICAgICAg
ICAgICAgICAgZW1pdENUSUNhbGwoaW5zdHJ1Y3Rpb24gKyBpLCBpLCBNYWNoaW5lOjpjdGlfdm1f
bGF6eUxpbmtDYWxsKTsKLSAgICAgICAgICAgIGVtaXROYWtlZENhbGwoaSwgWDg2OjplYXgpOwor
ICAgICAgICAgICAgICAgIGVtaXROYWtlZENhbGwoaSwgbV9tYWNoaW5lLT5tX2N0aVZpcnR1YWxD
YWxsUHJlTGluayk7CisKICAgICAgICAgICAgIFg4NkFzc2VtYmxlcjo6Sm1wU3JjIHN0b3JlUmVz
dWx0Rm9yRmlyc3RSdW4gPSBtX2ppdC5lbWl0VW5saW5rZWRKbXAoKTsKIAogICAgICAgICAgICAg
Ly8gVGhpcyBpcyB0aGUgYWRkcmVzcyBmb3IgdGhlIGNvbGQgcGF0aCAqYWZ0ZXIqIHRoZSBmaXJz
dCBydW4gKHdoaWNoIHRyaWVzIHRvIGxpbmsgdGhlIGNhbGwpLgpAQCAtMjk2NiwzNSArMjk1MSwx
MiBAQCB2b2lkIENUSTo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICAgICAgICAg
IGVtaXRHZXRBcmcoY2FsbGVlLCBYODY6OmVjeCwgaSk7CiAgICAgICAgICAgICB9CiAKLSAgICAg
ICAgICAgIC8vIExvYWQgdGhlIGNhbGxlZSBDb2RlQmxvY2sqIGludG8gZWF4Ci0gICAgICAgICAg
ICBtX2ppdC5tb3ZsX21yKE9CSkVDVF9PRkZTRVQoSlNGdW5jdGlvbiwgbV9ib2R5KSwgWDg2Ojpl
Y3gsIFg4Njo6ZWF4KTsKLSAgICAgICAgICAgIG1faml0Lm1vdmxfbXIoT0JKRUNUX09GRlNFVChG
dW5jdGlvbkJvZHlOb2RlLCBtX2NvZGUpLCBYODY6OmVheCwgWDg2OjplYXgpOwotICAgICAgICAg
ICAgbV9qaXQudGVzdGxfcnIoWDg2OjplYXgsIFg4Njo6ZWF4KTsKLSAgICAgICAgICAgIFg4NkFz
c2VtYmxlcjo6Sm1wU3JjIGhhc0NvZGVCbG9jayA9IG1faml0LmVtaXRVbmxpbmtlZEpuZSgpOwot
ICAgICAgICAgICAgZW1pdENUSUNhbGwoaW5zdHJ1Y3Rpb24gKyBpLCBpLCBNYWNoaW5lOjpjdGlf
b3BfY2FsbF9KU0Z1bmN0aW9uKTsKLSAgICAgICAgICAgIGVtaXRHZXRBcmcoY2FsbGVlLCBYODY6
OmVjeCwgaSk7Ci0gICAgICAgICAgICBtX2ppdC5saW5rKGhhc0NvZGVCbG9jaywgbV9qaXQubGFi
ZWwoKSk7Ci0KICAgICAgICAgICAgIC8vIFNwZWN1bGF0aXZlbHkgcm9sbCB0aGUgY2FsbGZyYW1l
LCBhc3N1bWluZyBhcmdDb3VudCB3aWxsIG1hdGNoIHRoZSBhcml0eS4KICAgICAgICAgICAgIG1f
aml0Lm1vdmxfcm0oWDg2OjplZGksIChSZWdpc3RlckZpbGU6OkNhbGxlckZyYW1lICsgcmVnaXN0
ZXJPZmZzZXQpICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSwgWDg2OjplZGkp
OwogICAgICAgICAgICAgbV9qaXQuYWRkbF9pMzJyKHJlZ2lzdGVyT2Zmc2V0ICogc3RhdGljX2Nh
c3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSwgWDg2OjplZGkpOworICAgICAgICAgICAgbV9qaXQu
bW92bF9pMzJyKGFyZ0NvdW50LCBYODY6OmVkeCk7CiAKLSAgICAgICAgICAgIC8vIENoZWNrIGFy
Z0NvdW50IG1hdGNoZXMgY2FsbGVlIGFyaXR5LgotICAgICAgICAgICAgbV9qaXQuY21wbF9pMzJt
KGFyZ0NvdW50LCBPQkpFQ1RfT0ZGU0VUKENvZGVCbG9jaywgbnVtUGFyYW1ldGVycyksIFg4Njo6
ZWF4KTsKLSAgICAgICAgICAgIFg4NkFzc2VtYmxlcjo6Sm1wU3JjIGFyaXR5Q2hlY2tPa2F5ID0g
bV9qaXQuZW1pdFVubGlua2VkSmUoKTsKLSAgICAgICAgICAgIGVtaXRQdXRBcmcoWDg2OjplYXgs
IDEyKTsKLSAgICAgICAgICAgIGVtaXRDVElDYWxsKGluc3RydWN0aW9uICsgaSwgaSwgTWFjaGlu
ZTo6Y3RpX29wX2NhbGxfYXJpdHlDaGVjayk7Ci0gICAgICAgICAgICBlbWl0R2V0QXJnKGNhbGxl
ZSAtIHJlZ2lzdGVyT2Zmc2V0LCBYODY6OmVjeCwgaSk7Ci0gICAgICAgICAgICBtX2ppdC5tb3Zs
X3JyKFg4Njo6ZWR4LCBYODY6OmVkaSk7Ci0gICAgICAgICAgICBtX2ppdC5saW5rKGFyaXR5Q2hl
Y2tPa2F5LCBtX2ppdC5sYWJlbCgpKTsKLQotICAgICAgICAgICAgLy8gaW5pdGlhbGl6ZSB0aGUg
bmV3IGNhbGwgZnJhbWUgKHBvaW50ZWQgdG8gYnkgZWR4LCBhZnRlciB0aGUgbGFzdCBjYWxsKS4K
LSAgICAgICAgICAgIGNvbXBpbGVPcENhbGxJbml0aWFsaXplQ2FsbEZyYW1lKGNhbGxlZSwgYXJn
Q291bnQpOwotCi0gICAgICAgICAgICAvLyBsb2FkIGN0aUNvZGUgZnJvbSB0aGUgbmV3IGNvZGVC
bG9jay4KLSAgICAgICAgICAgIG1faml0Lm1vdmxfbXIoT0JKRUNUX09GRlNFVChDb2RlQmxvY2ss
IGN0aUNvZGUpLCBYODY6OmVheCwgWDg2OjplYXgpOwotCi0gICAgICAgICAgICBlbWl0TmFrZWRD
YWxsKGksIFg4Njo6ZWF4KTsKKyAgICAgICAgICAgIGVtaXROYWtlZENhbGwoaSwgbV9tYWNoaW5l
LT5tX2N0aVZpcnR1YWxDYWxsKTsKIAogICAgICAgICAgICAgLy8gUHV0IHRoZSByZXR1cm4gdmFs
dWUgaW4gZHN0LiBJbiB0aGUgaW50ZXJwcmV0ZXIsIG9wX3JldCBkb2VzIHRoaXMuCiAgICAgICAg
ICAgICBYODZBc3NlbWJsZXI6OkptcERzdCBzdG9yZVJlc3VsdCA9IG1faml0LmxhYmVsKCk7CkBA
IC0zNDc5LDYgKzM0NDEsMTI3IEBAIHZvaWQgQ1RJOjpwcml2YXRlQ29tcGlsZUNUSU1hY2hpbmVU
cmFtcG8KICAgICAKICAgICBtX2ppdC5yZXQoKTsKIAorICAgIC8vICgzKSBHaWdnaXR5IGdpZ2dp
dHkKKyAgICAKKyAgICBYODZBc3NlbWJsZXI6OkptcERzdCB2aXJ0dWFsQ2FsbFByZUxpbmtCZWdp
biA9IG1faml0LmFsaWduKDE2KTsKKworICAgIC8vIExvYWQgdGhlIGNhbGxlZSBDb2RlQmxvY2sq
IGludG8gZWF4CisgICAgbV9qaXQubW92bF9tcihPQkpFQ1RfT0ZGU0VUKEpTRnVuY3Rpb24sIG1f
Ym9keSksIFg4Njo6ZWN4LCBYODY6OmVheCk7CisgICAgbV9qaXQubW92bF9tcihPQkpFQ1RfT0ZG
U0VUKEZ1bmN0aW9uQm9keU5vZGUsIG1fY29kZSksIFg4Njo6ZWF4LCBYODY6OmVheCk7CisgICAg
bV9qaXQudGVzdGxfcnIoWDg2OjplYXgsIFg4Njo6ZWF4KTsKKyAgICBYODZBc3NlbWJsZXI6Okpt
cFNyYyBoYXNDb2RlQmxvY2sxID0gbV9qaXQuZW1pdFVubGlua2VkSm5lKCk7CisgICAgbV9qaXQu
cG9wbF9yKFg4Njo6ZWJ4KTsKKyAgICBtX2ppdC5lbWl0UmVzdG9yZUFyZ3VtZW50UmVmZXJlbmNl
KCk7CisgICAgZW1pdFB1dENUSVBhcmFtKFg4Njo6ZWRpLCBDVElfQVJHU19jYWxsRnJhbWUpOwor
ICAgIFg4NkFzc2VtYmxlcjo6Sm1wU3JjIGNhbGxKU0Z1bmN0aW9uMSA9IG1faml0LmVtaXRDYWxs
KCk7CisgICAgZW1pdFJldHJpZXZlQXJnKDAsIFg4Njo6ZWN4KTsKKyAgICBlbWl0UmV0cmlldmVB
cmcoOCwgWDg2OjplZHgpOworICAgIG1faml0LnB1c2hsX3IoWDg2OjplYngpOworICAgIG1faml0
LmxpbmsoaGFzQ29kZUJsb2NrMSwgbV9qaXQubGFiZWwoKSk7CisKKyAgICAvLyBDaGVjayBhcmdD
b3VudCBtYXRjaGVzIGNhbGxlZSBhcml0eS4KKyAgICBtX2ppdC5jbXBsX3JtKFg4Njo6ZWR4LCBP
QkpFQ1RfT0ZGU0VUKENvZGVCbG9jaywgbnVtUGFyYW1ldGVycyksIFg4Njo6ZWF4KTsKKyAgICBY
ODZBc3NlbWJsZXI6OkptcFNyYyBhcml0eUNoZWNrT2theTEgPSBtX2ppdC5lbWl0VW5saW5rZWRK
ZSgpOworICAgIG1faml0LnBvcGxfcihYODY6OmVieCk7CisgICAgZW1pdFB1dEFyZyhYODY6OmVh
eCwgMTIpOworICAgIG1faml0LmVtaXRSZXN0b3JlQXJndW1lbnRSZWZlcmVuY2UoKTsKKyAgICBl
bWl0UHV0Q1RJUGFyYW0oWDg2OjplZGksIENUSV9BUkdTX2NhbGxGcmFtZSk7CisgICAgWDg2QXNz
ZW1ibGVyOjpKbXBTcmMgY2FsbEFyaXR5Q2hlY2sxID0gbV9qaXQuZW1pdENhbGwoKTsKKyAgICBt
X2ppdC5tb3ZsX3JyKFg4Njo6ZWR4LCBYODY6OmVkaSk7CisgICAgZW1pdFJldHJpZXZlQXJnKDAs
IFg4Njo6ZWN4KTsKKyAgICBlbWl0UmV0cmlldmVBcmcoOCwgWDg2OjplZHgpOworICAgIG1faml0
LnB1c2hsX3IoWDg2OjplYngpOworICAgIG1faml0LmxpbmsoYXJpdHlDaGVja09rYXkxLCBtX2pp
dC5sYWJlbCgpKTsKKworICAgIGNvbXBpbGVPcENhbGxJbml0aWFsaXplQ2FsbEZyYW1lKCk7CisK
KyAgICBtX2ppdC5wb3BsX3IoWDg2OjplYngpOworICAgIGVtaXRQdXRBcmcoWDg2OjplYngsIDQp
OworICAgIG1faml0LmVtaXRSZXN0b3JlQXJndW1lbnRSZWZlcmVuY2UoKTsKKyAgICBlbWl0UHV0
Q1RJUGFyYW0oWDg2OjplZGksIENUSV9BUkdTX2NhbGxGcmFtZSk7CisgICAgWDg2QXNzZW1ibGVy
OjpKbXBTcmMgY2FsbERvbnRMYXp5TGlua0NhbGwgPSBtX2ppdC5lbWl0Q2FsbCgpOworICAgIG1f
aml0LnB1c2hsX3IoWDg2OjplYngpOworCisgICAgbV9qaXQuam1wX3IoWDg2OjplYXgpOworCisg
ICAgWDg2QXNzZW1ibGVyOjpKbXBEc3QgdmlydHVhbENhbGxMaW5rQmVnaW4gPSBtX2ppdC5hbGln
bigxNik7CisKKyAgICAvLyBMb2FkIHRoZSBjYWxsZWUgQ29kZUJsb2NrKiBpbnRvIGVheAorICAg
IG1faml0Lm1vdmxfbXIoT0JKRUNUX09GRlNFVChKU0Z1bmN0aW9uLCBtX2JvZHkpLCBYODY6OmVj
eCwgWDg2OjplYXgpOworICAgIG1faml0Lm1vdmxfbXIoT0JKRUNUX09GRlNFVChGdW5jdGlvbkJv
ZHlOb2RlLCBtX2NvZGUpLCBYODY6OmVheCwgWDg2OjplYXgpOworICAgIG1faml0LnRlc3RsX3Jy
KFg4Njo6ZWF4LCBYODY6OmVheCk7CisgICAgWDg2QXNzZW1ibGVyOjpKbXBTcmMgaGFzQ29kZUJs
b2NrMiA9IG1faml0LmVtaXRVbmxpbmtlZEpuZSgpOworICAgIG1faml0LnBvcGxfcihYODY6OmVi
eCk7CisgICAgbV9qaXQuZW1pdFJlc3RvcmVBcmd1bWVudFJlZmVyZW5jZSgpOworICAgIGVtaXRQ
dXRDVElQYXJhbShYODY6OmVkaSwgQ1RJX0FSR1NfY2FsbEZyYW1lKTsKKyAgICBYODZBc3NlbWJs
ZXI6OkptcFNyYyBjYWxsSlNGdW5jdGlvbjIgPSBtX2ppdC5lbWl0Q2FsbCgpOworICAgIGVtaXRS
ZXRyaWV2ZUFyZygwLCBYODY6OmVjeCk7CisgICAgZW1pdFJldHJpZXZlQXJnKDgsIFg4Njo6ZWR4
KTsKKyAgICBtX2ppdC5wdXNobF9yKFg4Njo6ZWJ4KTsKKyAgICBtX2ppdC5saW5rKGhhc0NvZGVC
bG9jazIsIG1faml0LmxhYmVsKCkpOworCisgICAgLy8gQ2hlY2sgYXJnQ291bnQgbWF0Y2hlcyBj
YWxsZWUgYXJpdHkuCisgICAgbV9qaXQuY21wbF9ybShYODY6OmVkeCwgT0JKRUNUX09GRlNFVChD
b2RlQmxvY2ssIG51bVBhcmFtZXRlcnMpLCBYODY6OmVheCk7CisgICAgWDg2QXNzZW1ibGVyOjpK
bXBTcmMgYXJpdHlDaGVja09rYXkyID0gbV9qaXQuZW1pdFVubGlua2VkSmUoKTsKKyAgICBtX2pp
dC5wb3BsX3IoWDg2OjplYngpOworICAgIGVtaXRQdXRBcmcoWDg2OjplYXgsIDEyKTsKKyAgICBt
X2ppdC5lbWl0UmVzdG9yZUFyZ3VtZW50UmVmZXJlbmNlKCk7CisgICAgZW1pdFB1dENUSVBhcmFt
KFg4Njo6ZWRpLCBDVElfQVJHU19jYWxsRnJhbWUpOworICAgIFg4NkFzc2VtYmxlcjo6Sm1wU3Jj
IGNhbGxBcml0eUNoZWNrMiA9IG1faml0LmVtaXRDYWxsKCk7CisgICAgbV9qaXQubW92bF9ycihY
ODY6OmVkeCwgWDg2OjplZGkpOworICAgIGVtaXRSZXRyaWV2ZUFyZygwLCBYODY6OmVjeCk7Cisg
ICAgZW1pdFJldHJpZXZlQXJnKDgsIFg4Njo6ZWR4KTsKKyAgICBtX2ppdC5wdXNobF9yKFg4Njo6
ZWJ4KTsKKyAgICBtX2ppdC5saW5rKGFyaXR5Q2hlY2tPa2F5MiwgbV9qaXQubGFiZWwoKSk7CisK
KyAgICBjb21waWxlT3BDYWxsSW5pdGlhbGl6ZUNhbGxGcmFtZSgpOworCisgICAgbV9qaXQucG9w
bF9yKFg4Njo6ZWJ4KTsKKyAgICBlbWl0UHV0QXJnKFg4Njo6ZWJ4LCA0KTsKKyAgICBtX2ppdC5l
bWl0UmVzdG9yZUFyZ3VtZW50UmVmZXJlbmNlKCk7CisgICAgZW1pdFB1dENUSVBhcmFtKFg4Njo6
ZWRpLCBDVElfQVJHU19jYWxsRnJhbWUpOworICAgIFg4NkFzc2VtYmxlcjo6Sm1wU3JjIGNhbGxM
YXp5TGlua0NhbGwgPSBtX2ppdC5lbWl0Q2FsbCgpOworICAgIG1faml0LnB1c2hsX3IoWDg2Ojpl
YngpOworCisgICAgbV9qaXQuam1wX3IoWDg2OjplYXgpOworCisgICAgWDg2QXNzZW1ibGVyOjpK
bXBEc3QgdmlydHVhbENhbGxCZWdpbiA9IG1faml0LmFsaWduKDE2KTsKKworICAgIC8vIExvYWQg
dGhlIGNhbGxlZSBDb2RlQmxvY2sqIGludG8gZWF4CisgICAgbV9qaXQubW92bF9tcihPQkpFQ1Rf
T0ZGU0VUKEpTRnVuY3Rpb24sIG1fYm9keSksIFg4Njo6ZWN4LCBYODY6OmVheCk7CisgICAgbV9q
aXQubW92bF9tcihPQkpFQ1RfT0ZGU0VUKEZ1bmN0aW9uQm9keU5vZGUsIG1fY29kZSksIFg4Njo6
ZWF4LCBYODY6OmVheCk7CisgICAgbV9qaXQudGVzdGxfcnIoWDg2OjplYXgsIFg4Njo6ZWF4KTsK
KyAgICBYODZBc3NlbWJsZXI6OkptcFNyYyBoYXNDb2RlQmxvY2szID0gbV9qaXQuZW1pdFVubGlu
a2VkSm5lKCk7CisgICAgbV9qaXQucG9wbF9yKFg4Njo6ZWJ4KTsKKyAgICBtX2ppdC5lbWl0UmVz
dG9yZUFyZ3VtZW50UmVmZXJlbmNlKCk7CisgICAgZW1pdFB1dENUSVBhcmFtKFg4Njo6ZWRpLCBD
VElfQVJHU19jYWxsRnJhbWUpOworICAgIFg4NkFzc2VtYmxlcjo6Sm1wU3JjIGNhbGxKU0Z1bmN0
aW9uMyA9IG1faml0LmVtaXRDYWxsKCk7CisgICAgZW1pdFJldHJpZXZlQXJnKDAsIFg4Njo6ZWN4
KTsKKyAgICBlbWl0UmV0cmlldmVBcmcoOCwgWDg2OjplZHgpOworICAgIG1faml0LnB1c2hsX3Io
WDg2OjplYngpOworICAgIG1faml0LmxpbmsoaGFzQ29kZUJsb2NrMywgbV9qaXQubGFiZWwoKSk7
CisKKyAgICAvLyBDaGVjayBhcmdDb3VudCBtYXRjaGVzIGNhbGxlZSBhcml0eS4KKyAgICBtX2pp
dC5jbXBsX3JtKFg4Njo6ZWR4LCBPQkpFQ1RfT0ZGU0VUKENvZGVCbG9jaywgbnVtUGFyYW1ldGVy
cyksIFg4Njo6ZWF4KTsKKyAgICBYODZBc3NlbWJsZXI6OkptcFNyYyBhcml0eUNoZWNrT2theTMg
PSBtX2ppdC5lbWl0VW5saW5rZWRKZSgpOworICAgIG1faml0LnBvcGxfcihYODY6OmVieCk7Cisg
ICAgZW1pdFB1dEFyZyhYODY6OmVheCwgMTIpOworICAgIG1faml0LmVtaXRSZXN0b3JlQXJndW1l
bnRSZWZlcmVuY2UoKTsKKyAgICBlbWl0UHV0Q1RJUGFyYW0oWDg2OjplZGksIENUSV9BUkdTX2Nh
bGxGcmFtZSk7CisgICAgWDg2QXNzZW1ibGVyOjpKbXBTcmMgY2FsbEFyaXR5Q2hlY2szID0gbV9q
aXQuZW1pdENhbGwoKTsKKyAgICBtX2ppdC5tb3ZsX3JyKFg4Njo6ZWR4LCBYODY6OmVkaSk7Cisg
ICAgZW1pdFJldHJpZXZlQXJnKDAsIFg4Njo6ZWN4KTsKKyAgICBlbWl0UmV0cmlldmVBcmcoOCwg
WDg2OjplZHgpOworICAgIG1faml0LnB1c2hsX3IoWDg2OjplYngpOworICAgIG1faml0Lmxpbmso
YXJpdHlDaGVja09rYXkzLCBtX2ppdC5sYWJlbCgpKTsKKworICAgIGNvbXBpbGVPcENhbGxJbml0
aWFsaXplQ2FsbEZyYW1lKCk7CisKKyAgICAvLyBsb2FkIGN0aUNvZGUgZnJvbSB0aGUgbmV3IGNv
ZGVCbG9jay4KKyAgICBtX2ppdC5tb3ZsX21yKE9CSkVDVF9PRkZTRVQoQ29kZUJsb2NrLCBjdGlD
b2RlKSwgWDg2OjplYXgsIFg4Njo6ZWF4KTsKKworICAgIG1faml0LmptcF9yKFg4Njo6ZWF4KTsK
KwogICAgIC8vIEFsbCB0cmFtcG9saW5lcyBjb25zdHJ1Y3RlZCEgY29weSB0aGUgY29kZSwgbGlu
ayB1cCBjYWxscywgYW5kIHNldCB0aGUgcG9pbnRlcnMgb24gdGhlIE1hY2hpbmUgb2JqZWN0Lgog
CiAgICAgdm9pZCogY29kZSA9IG1faml0LmNvcHkoKTsKQEAgLTM0OTAsOSArMzU3MywyMCBAQCB2
b2lkIENUSTo6cHJpdmF0ZUNvbXBpbGVDVElNYWNoaW5lVHJhbXBvCiAgICAgWDg2QXNzZW1ibGVy
OjpsaW5rKGNvZGUsIHN0cmluZ19mYWlsdXJlQ2FzZXMxLCByZWludGVycHJldF9jYXN0PHZvaWQq
PihNYWNoaW5lOjpjdGlfb3BfZ2V0X2J5X2lkX2ZhaWwpKTsKICAgICBYODZBc3NlbWJsZXI6Omxp
bmsoY29kZSwgc3RyaW5nX2ZhaWx1cmVDYXNlczIsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KE1h
Y2hpbmU6OmN0aV9vcF9nZXRfYnlfaWRfZmFpbCkpOwogICAgIFg4NkFzc2VtYmxlcjo6bGluayhj
b2RlLCBzdHJpbmdfZmFpbHVyZUNhc2VzMywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oTWFjaGlu
ZTo6Y3RpX29wX2dldF9ieV9pZF9mYWlsKSk7CisgICAgWDg2QXNzZW1ibGVyOjpsaW5rKGNvZGUs
IGNhbGxBcml0eUNoZWNrMSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oTWFjaGluZTo6Y3RpX29w
X2NhbGxfYXJpdHlDaGVjaykpOworICAgIFg4NkFzc2VtYmxlcjo6bGluayhjb2RlLCBjYWxsQXJp
dHlDaGVjazIsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KE1hY2hpbmU6OmN0aV9vcF9jYWxsX2Fy
aXR5Q2hlY2spKTsKKyAgICBYODZBc3NlbWJsZXI6OmxpbmsoY29kZSwgY2FsbEFyaXR5Q2hlY2sz
LCByZWludGVycHJldF9jYXN0PHZvaWQqPihNYWNoaW5lOjpjdGlfb3BfY2FsbF9hcml0eUNoZWNr
KSk7CisgICAgWDg2QXNzZW1ibGVyOjpsaW5rKGNvZGUsIGNhbGxKU0Z1bmN0aW9uMSwgcmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4oTWFjaGluZTo6Y3RpX29wX2NhbGxfSlNGdW5jdGlvbikpOworICAg
IFg4NkFzc2VtYmxlcjo6bGluayhjb2RlLCBjYWxsSlNGdW5jdGlvbjIsIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KE1hY2hpbmU6OmN0aV9vcF9jYWxsX0pTRnVuY3Rpb24pKTsKKyAgICBYODZBc3Nl
bWJsZXI6OmxpbmsoY29kZSwgY2FsbEpTRnVuY3Rpb24zLCByZWludGVycHJldF9jYXN0PHZvaWQq
PihNYWNoaW5lOjpjdGlfb3BfY2FsbF9KU0Z1bmN0aW9uKSk7CisgICAgWDg2QXNzZW1ibGVyOjps
aW5rKGNvZGUsIGNhbGxEb250TGF6eUxpbmtDYWxsLCByZWludGVycHJldF9jYXN0PHZvaWQqPihN
YWNoaW5lOjpjdGlfdm1fZG9udExhenlMaW5rQ2FsbCkpOworICAgIFg4NkFzc2VtYmxlcjo6bGlu
ayhjb2RlLCBjYWxsTGF6eUxpbmtDYWxsLCByZWludGVycHJldF9jYXN0PHZvaWQqPihNYWNoaW5l
OjpjdGlfdm1fbGF6eUxpbmtDYWxsKSk7CiAKICAgICBtX21hY2hpbmUtPm1fY3RpQXJyYXlMZW5n
dGhUcmFtcG9saW5lID0gY29kZTsKICAgICBtX21hY2hpbmUtPm1fY3RpU3RyaW5nTGVuZ3RoVHJh
bXBvbGluZSA9IFg4NkFzc2VtYmxlcjo6Z2V0UmVsb2NhdGVkQWRkcmVzcyhjb2RlLCBzdHJpbmdM
ZW5ndGhCZWdpbik7CisgICAgbV9tYWNoaW5lLT5tX2N0aVZpcnR1YWxDYWxsUHJlTGluayA9IFg4
NkFzc2VtYmxlcjo6Z2V0UmVsb2NhdGVkQWRkcmVzcyhjb2RlLCB2aXJ0dWFsQ2FsbFByZUxpbmtC
ZWdpbik7CisgICAgbV9tYWNoaW5lLT5tX2N0aVZpcnR1YWxDYWxsTGluayA9IFg4NkFzc2VtYmxl
cjo6Z2V0UmVsb2NhdGVkQWRkcmVzcyhjb2RlLCB2aXJ0dWFsQ2FsbExpbmtCZWdpbik7CisgICAg
bV9tYWNoaW5lLT5tX2N0aVZpcnR1YWxDYWxsID0gWDg2QXNzZW1ibGVyOjpnZXRSZWxvY2F0ZWRB
ZGRyZXNzKGNvZGUsIHZpcnR1YWxDYWxsQmVnaW4pOwogfQogCiB2b2lkIENUSTo6ZnJlZUNUSU1h
Y2hpbmVUcmFtcG9saW5lcyhNYWNoaW5lKiBtYWNoaW5lKQpJbmRleDogSmF2YVNjcmlwdENvcmUv
Vk0vQ1RJLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvVk0vQ1RJLmgJKHJldmlzaW9u
IDM4NDEwKQorKysgSmF2YVNjcmlwdENvcmUvVk0vQ1RJLmgJKHdvcmtpbmcgY29weSkKQEAgLTc5
LDcgKzc5LDcgQEAKICNkZWZpbmUgQVJHX2luc3RyNCBzdGF0aWNfY2FzdDxJbnN0cnVjdGlvbio+
KEFSR1NbNF0pCiAjZGVmaW5lIEFSR19pbnN0cjUgc3RhdGljX2Nhc3Q8SW5zdHJ1Y3Rpb24qPihB
UkdTWzVdKQogI2RlZmluZSBBUkdfaW5zdHI2IHN0YXRpY19jYXN0PEluc3RydWN0aW9uKj4oQVJH
U1s2XSkKLSNkZWZpbmUgQVJHX2xpbmtJbmZvMiBzdGF0aWNfY2FzdDxDYWxsTGlua0luZm8qPihB
UkdTWzJdKQorI2RlZmluZSBBUkdfcmV0dXJuQWRkcmVzczIgc3RhdGljX2Nhc3Q8dm9pZCo+KEFS
R1NbMl0pCiAjZGVmaW5lIEFSR19jb2RlQmxvY2s0IHN0YXRpY19jYXN0PENvZGVCbG9jayo+KEFS
R1NbNF0pCiAKICNkZWZpbmUgQ1RJX1JFVFVSTl9BRERSRVNTX1NMT1QgKEFSR1NbLTFdKQpAQCAt
MzY0LDcgKzM2NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHByaXZhdGVDb21w
aWxlUGF0Y2hHZXRBcnJheUxlbmd0aCh2b2lkKiByZXR1cm5BZGRyZXNzKTsKIAogICAgICAgICB2
b2lkIGNvbXBpbGVPcENhbGwoT3Bjb2RlSUQsIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgdW5z
aWduZWQgaSwgdW5zaWduZWQgY2FsbExpbmtJbmZvSW5kZXgpOwotICAgICAgICB2b2lkIGNvbXBp
bGVPcENhbGxJbml0aWFsaXplQ2FsbEZyYW1lKHVuc2lnbmVkIGNhbGxlZSwgdW5zaWduZWQgYXJn
Q291bnQpOworICAgICAgICB2b2lkIGNvbXBpbGVPcENhbGxJbml0aWFsaXplQ2FsbEZyYW1lKCk7
CiAgICAgICAgIHZvaWQgY29tcGlsZU9wQ2FsbFNldHVwQXJncyhJbnN0cnVjdGlvbiopOwogICAg
ICAgICB2b2lkIGNvbXBpbGVPcENhbGxFdmFsU2V0dXBBcmdzKEluc3RydWN0aW9uKik7CiAgICAg
ICAgIHZvaWQgY29tcGlsZU9wQ29uc3RydWN0U2V0dXBBcmdzKEluc3RydWN0aW9uKik7CkBAIC0z
NzgsNiArMzc4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdEdldEFyZ3Mo
aW50IHNyYzEsIFg4NkFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBkc3QxLCBpbnQgc3JjMiwgWDg2QXNz
ZW1ibGVyOjpSZWdpc3RlcklEIGRzdDIsIHVuc2lnbmVkIGkpOwogICAgICAgICB2b2lkIGVtaXRH
ZXRQdXRBcmcodW5zaWduZWQgc3JjLCB1bnNpZ25lZCBvZmZzZXQsIFg4NkFzc2VtYmxlcjo6UmVn
aXN0ZXJJRCBzY3JhdGNoKTsKICAgICAgICAgdm9pZCBlbWl0UHV0QXJnKFg4NkFzc2VtYmxlcjo6
UmVnaXN0ZXJJRCBzcmMsIHVuc2lnbmVkIG9mZnNldCk7CisgICAgICAgIHZvaWQgZW1pdFJldHJp
ZXZlQXJnKHVuc2lnbmVkIG9mZnNldCwgWDg2QXNzZW1ibGVyOjpSZWdpc3RlcklEIGRzdCk7CiAg
ICAgICAgIHZvaWQgZW1pdFB1dEFyZ0NvbnN0YW50KHVuc2lnbmVkIHZhbHVlLCB1bnNpZ25lZCBv
ZmZzZXQpOwogICAgICAgICB2b2lkIGVtaXRQdXRSZXN1bHQodW5zaWduZWQgZHN0LCBYODZBc3Nl
bWJsZXI6OlJlZ2lzdGVySUQgZnJvbSA9IFg4Njo6ZWF4KTsKIApAQCAtNDE0LDcgKzQxNSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRBbGxvY2F0ZU51bWJlcihKU0dsb2Jh
bERhdGEqLCB1bnNpZ25lZCk7CiAKICAgICAgICAgWDg2QXNzZW1ibGVyOjpKbXBTcmMgZW1pdE5h
a2VkQ2FsbCh1bnNpZ25lZCBvcGNvZGVJbmRleCwgWDg2OjpSZWdpc3RlcklEKTsKLSAgICAgICAg
WDg2QXNzZW1ibGVyOjpKbXBTcmMgZW1pdE5ha2VkQ2FsbCh1bnNpZ25lZCBvcGNvZGVJbmRleCwg
dm9pZCgqZnVuY3Rpb24pKCkpOworICAgICAgICBYODZBc3NlbWJsZXI6OkptcFNyYyBlbWl0TmFr
ZWRDYWxsKHVuc2lnbmVkIG9wY29kZUluZGV4LCB2b2lkKiBmdW5jdGlvbik7CiAgICAgICAgIFg4
NkFzc2VtYmxlcjo6Sm1wU3JjIGVtaXROYWtlZEZhc3RDYWxsKHVuc2lnbmVkIG9wY29kZUluZGV4
LCB2b2lkKik7CiAgICAgICAgIFg4NkFzc2VtYmxlcjo6Sm1wU3JjIGVtaXRDVElDYWxsKEluc3Ry
dWN0aW9uKiwgdW5zaWduZWQgb3Bjb2RlSW5kZXgsIENUSUhlbHBlcl9qKTsKICAgICAgICAgWDg2
QXNzZW1ibGVyOjpKbXBTcmMgZW1pdENUSUNhbGwoSW5zdHJ1Y3Rpb24qLCB1bnNpZ25lZCBvcGNv
ZGVJbmRleCwgQ1RJSGVscGVyX28pOwpJbmRleDogSmF2YVNjcmlwdENvcmUvVk0vQ29kZUJsb2Nr
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvVk0vQ29kZUJsb2NrLmgJKHJldmlzaW9u
IDM4NDEwKQorKysgSmF2YVNjcmlwdENvcmUvVk0vQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEyMCw2ICsxMjAsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiBzdHJ1
Y3R1cmVTdHViSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uOwogICAgIH0KIAorICAgIGlubGluZSB2
b2lkKiBnZXRDYWxsTGlua0luZm9SZXR1cm5Mb2NhdGlvbihDYWxsTGlua0luZm8qIGNhbGxMaW5r
SW5mbykKKyAgICB7CisgICAgICAgIHJldHVybiBjYWxsTGlua0luZm8tPmNhbGxSZXR1cm5Mb2Nh
dGlvbjsKKyAgICB9CisKICAgICAvLyBCaW5hcnkgY2hvcCBhbGdvcml0aG0sIGNhbGxzIHZhbHVl
QXRQb3NpdGlvbiBvbiBwcmUtc29ydGVkIGVsZW1lbnRzIGluIGFycmF5LAogICAgIC8vIGNvbXBh
cmVzIHJlc3VsdCB3aXRoIGtleSAoS2V5VHlwZXMgc2hvdWxkIGJlIGNvbXBhcmFibGUgd2l0aCAn
LS0nLCAnPCcsICc+JykuCiAgICAgLy8gT3B0aW1pemVkIGZvciBjYXNlcyB3aGVyZSB0aGUgYXJy
YXkgY29udGFpbnMgdGhlIGtleSwgY2hlY2tlZCBieSBhc3NlcnRpb25zLgpAQCAtMzAwLDYgKzMw
NSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiAqKGJpbmFyeUNob3A8
U3RydWN0dXJlU3R1YkluZm8sIHZvaWQqLCBnZXRTdHJ1Y3R1cmVTdHViSW5mb1JldHVybkxvY2F0
aW9uPihwcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5iZWdpbigpLCBwcm9wZXJ0eUFjY2Vzc0lu
c3RydWN0aW9ucy5zaXplKCksIHJldHVybkFkZHJlc3MpKTsKICAgICAgICAgfQogCisgICAgICAg
IENhbGxMaW5rSW5mbyYgZ2V0Q2FsbExpbmtJbmZvKHZvaWQqIHJldHVybkFkZHJlc3MpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiAqKGJpbmFyeUNob3A8Q2FsbExpbmtJbmZvLCB2b2lk
KiwgZ2V0Q2FsbExpbmtJbmZvUmV0dXJuTG9jYXRpb24+KGNhbGxMaW5rSW5mb3MuYmVnaW4oKSwg
Y2FsbExpbmtJbmZvcy5zaXplKCksIHJldHVybkFkZHJlc3MpKTsKKyAgICAgICAgfQorCiAgICAg
ICAgIFNjb3BlTm9kZSogb3duZXJOb2RlOwogICAgICAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGE7CiAjaWYgRU5BQkxFKENUSSkKSW5kZXg6IEphdmFTY3JpcHRDb3JlL1ZNL01hY2hpbmUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL1ZNL01hY2hpbmUuY3BwCShyZXZpc2lvbiAz
ODQxMCkKKysrIEphdmFTY3JpcHRDb3JlL1ZNL01hY2hpbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02MDgsNiArNjA4LDkgQEAgTWFjaGluZTo6TWFjaGluZSgpCiAjaWYgRU5BQkxFKENUSSkKICAg
ICAsIG1fY3RpQXJyYXlMZW5ndGhUcmFtcG9saW5lKDApCiAgICAgLCBtX2N0aVN0cmluZ0xlbmd0
aFRyYW1wb2xpbmUoMCkKKyAgICAsIG1fY3RpVmlydHVhbENhbGxQcmVMaW5rKDApCisgICAgLCBt
X2N0aVZpcnR1YWxDYWxsTGluaygwKQorICAgICwgbV9jdGlWaXJ0dWFsQ2FsbCgwKQogICAgICwg
bV9qaXRDb2RlQnVmZmVyKG5ldyBKSVRDb2RlQnVmZmVyKDEwMjQgKiAxMDI0KSkKICNlbmRpZgog
ICAgICwgbV9yZWVudHJ5RGVwdGgoMCkKQEAgLTQ3MzcsNiArNDc0MCwyMCBAQCBWb2lkUHRyUGFp
ciBNYWNoaW5lOjpjdGlfb3BfY2FsbF9hcml0eUNoCiAgICAgcmV0dXJuIHBhaXIuaTsKIH0KIAor
dm9pZCogTWFjaGluZTo6Y3RpX3ZtX2RvbnRMYXp5TGlua0NhbGwoQ1RJX0FSR1MpCit7CisgICAg
Q1RJX1NUQUNLX0hBQ0soKTsKKworICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGFzRnVuY3Rpb24o
QVJHX3NyYzEpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gJmNhbGxlZS0+bV9ib2R5LT5i
eXRlQ29kZShjYWxsZWUtPm1fc2NvcGVDaGFpbi5ub2RlKCkpOworICAgIGlmICghY29kZUJsb2Nr
LT5jdGlDb2RlKQorICAgICAgICBDVEk6OmNvbXBpbGUoQVJHX2dsb2JhbERhdGEsIGNvZGVCbG9j
ayk7CisKKyAgICBjdGlSZXBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhBUkdfcmV0dXJuQWRkcmVz
czIsIEFSR19nbG9iYWxEYXRhLT5tYWNoaW5lLT5tX2N0aVZpcnR1YWxDYWxsTGluayk7CisKKyAg
ICByZXR1cm4gY29kZUJsb2NrLT5jdGlDb2RlOworfQorCiB2b2lkKiBNYWNoaW5lOjpjdGlfdm1f
bGF6eUxpbmtDYWxsKENUSV9BUkdTKQogewogICAgIENUSV9TVEFDS19IQUNLKCk7CkBAIC00NzQ2
LDcgKzQ3NjMsOCBAQCB2b2lkKiBNYWNoaW5lOjpjdGlfdm1fbGF6eUxpbmtDYWxsKENUSV9BCiAg
ICAgaWYgKCFjb2RlQmxvY2stPmN0aUNvZGUpCiAgICAgICAgIENUSTo6Y29tcGlsZShBUkdfZ2xv
YmFsRGF0YSwgY29kZUJsb2NrKTsKIAotICAgIENUSTo6bGlua0NhbGwoY2FsbGVlLCBjb2RlQmxv
Y2ssIGNvZGVCbG9jay0+Y3RpQ29kZSwgQVJHX2xpbmtJbmZvMiwgQVJHX2ludDMpOworICAgIENh
bGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gJkFSR19jYWxsRnJhbWUtPmNhbGxlckZyYW1lKCkt
PmNvZGVCbG9jaygpLT5nZXRDYWxsTGlua0luZm8oQVJHX3JldHVybkFkZHJlc3MyKTsKKyAgICBD
VEk6OmxpbmtDYWxsKGNhbGxlZSwgY29kZUJsb2NrLCBjb2RlQmxvY2stPmN0aUNvZGUsIGNhbGxM
aW5rSW5mbywgQVJHX2ludDMpOwogCiAgICAgcmV0dXJuIGNvZGVCbG9jay0+Y3RpQ29kZTsKIH0K
SW5kZXg6IEphdmFTY3JpcHRDb3JlL1ZNL01hY2hpbmUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9WTS9NYWNoaW5lLmgJKHJldmlzaW9uIDM4NDEwKQorKysgSmF2YVNjcmlwdENvcmUv
Vk0vTWFjaGluZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzAsNiArMjcwLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHN0YXRpYyBKU1ZhbHVlKiBTRlhfQ0FMTCBjdGlfYWxsb2NhdGVfbnVt
YmVyKENUSV9BUkdTKTsKIAogICAgICAgICBzdGF0aWMgSlNWYWx1ZSogU0ZYX0NBTEwgY3RpX3Zt
X3Rocm93KENUSV9BUkdTKTsKKyAgICAgICAgc3RhdGljIHZvaWQqIFNGWF9DQUxMIGN0aV92bV9k
b250TGF6eUxpbmtDYWxsKENUSV9BUkdTKTsKICAgICAgICAgc3RhdGljIHZvaWQqIFNGWF9DQUxM
IGN0aV92bV9sYXp5TGlua0NhbGwoQ1RJX0FSR1MpOwogICAgICAgICBzdGF0aWMgSlNPYmplY3Qq
IFNGWF9DQUxMIGN0aV9vcF9wdXNoX2FjdGl2YXRpb24oQ1RJX0FSR1MpOwogICAgICAgICAKQEAg
LTMzMyw2ICszMzQsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICNpZiBFTkFCTEUoQ1RJKQogICAgICAg
ICB2b2lkKiBtX2N0aUFycmF5TGVuZ3RoVHJhbXBvbGluZTsKICAgICAgICAgdm9pZCogbV9jdGlT
dHJpbmdMZW5ndGhUcmFtcG9saW5lOworICAgICAgICB2b2lkKiBtX2N0aVZpcnR1YWxDYWxsUHJl
TGluazsKKyAgICAgICAgdm9pZCogbV9jdGlWaXJ0dWFsQ2FsbExpbms7CisgICAgICAgIHZvaWQq
IG1fY3RpVmlydHVhbENhbGw7CiAKICAgICAgICAgT3duUHRyPEpJVENvZGVCdWZmZXI+IG1faml0
Q29kZUJ1ZmZlcjsKICNlbmRpZgo=
</data>
<flag name="review"
          id="11617"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>