<?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>65883</bug_id>
          
          <creation_ts>2011-08-08 15:38:49 -0700</creation_ts>
          <short_desc>DFG JIT has no way of propagating predictions to loads and calls</short_desc>
          <delta_ts>2011-08-09 19:04:17 -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>All</rep_platform>
          <op_sys>All</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="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>barraclough</cc>
    
    <cc>fpizlo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>448318</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-08-08 15:38:49 -0700</bug_when>
    <thetext>The DFG JIT sometimes wants to predict the type of a variable based on how it gets used.  But it can only do this if the variable was assigned to by loading from the register file or from global variables.  It should be able to also do this if the variable is the result of a heap load (GetById, GetByVal) or a call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448329</commentid>
    <comment_count>1</comment_count>
      <attachid>103306</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-08-08 15:56:04 -0700</bug_when>
    <thetext>Created attachment 103306
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448359</commentid>
    <comment_count>2</comment_count>
      <attachid>103306</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-08-08 16:47:09 -0700</bug_when>
    <thetext>Comment on attachment 103306
the patch

All tests pass.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448887</commentid>
    <comment_count>3</comment_count>
      <attachid>103306</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-08-09 16:48:05 -0700</bug_when>
    <thetext>Comment on attachment 103306
the patch

View in context: https://bugs.webkit.org/attachment.cgi?id=103306&amp;action=review

Sorry to cq- for a typo, but I think there is a grammar error in the change log. :-)
Otherwise all looks good.  I think we might want a prediction for more (all) node types in the future, so may want to break this out as a separate field, but reuse of opInfo2 seems like a good call, at least for now.

&gt; Source/JavaScriptCore/ChangeLog:8
&gt; +        This introduces the capability to stored predictions on graph

stored -&gt; store ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448901</commentid>
    <comment_count>4</comment_count>
      <attachid>103423</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-08-09 17:15:38 -0700</bug_when>
    <thetext>Created attachment 103423
the patch (fix for review)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448915</commentid>
    <comment_count>5</comment_count>
      <attachid>103423</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-09 17:51:25 -0700</bug_when>
    <thetext>Comment on attachment 103423
the patch (fix for review)

Clearing flags on attachment: 103423

Committed r92734: &lt;http://trac.webkit.org/changeset/92734&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448916</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-09 17:51:30 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448941</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-08-09 19:04:17 -0700</bug_when>
    <thetext>When combined with https://bugs.webkit.org/show_bug.cgi?id=65949, this produces a 20% slow-down in v8-crypto without any significant speed-ups anywhere.  It should probably be disabled.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103306</attachid>
            <date>2011-08-08 15:56:04 -0700</date>
            <delta_ts>2011-08-09 17:15:38 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>predictheap_patch_1.diff</filename>
            <type>text/plain</type>
            <size>11377</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTI2NDYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDQgQEAK
KzIwMTEtMDgtMDggIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBE
RkcgSklUIGhhcyBubyB3YXkgb2YgcHJvcGFnYXRpbmcgcHJlZGljdGlvbnMgdG8gbG9hZHMgYW5k
IGNhbGxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
NTg4MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAg
ICAgICAgVGhpcyBpbnRyb2R1Y2VzIHRoZSBjYXBhYmlsaXR5IHRvIHN0b3JlZCBwcmVkaWN0aW9u
cyBvbiBncmFwaAorICAgICAgICBub2Rlcy4gIFRvIHNhdmUgc3BhY2Ugd2hpbGUgYmVpbmcgc29t
ZXdoYXQgY29uc2lzdGVudCwgdGhlCisgICAgICAgIHByZWRpY3Rpb24gaXMgYWx3YXlzIHN0b3Jl
ZCBpbiB0aGUgc2Vjb25kIE9wSW5mbyBzbG90IChzaW5jZQorICAgICAgICBhIEdldEJ5SWQgd2ls
bCB1c2UgdGhlIGZpcnN0IG9uZSBmb3IgdGhlIGlkZW50aWZpZXIpLiAgVGhpcworICAgICAgICBj
aGFuZ2UgaXMgYSBuYXR1cmFsIGV4dGVuc2lvbiBvZiByOTI1OTMgKGdsb2JhbCB2YXJpYWJsZQor
ICAgICAgICBwcmVkaWN0aW9uKS4KKyAgICAgICAgCisgICAgICAgIFRoaXMgaXMgYSAxLjUlIHdp
biBvbiBWOCBpbiB0aGUgYXJpdGhtZXRpYyBtZWFuLCBhbmQgYSAwLjYlCisgICAgICAgIHdpbiBv
biBWOCBpbiB0aGUgZ2VvbWV0cmljIG1lYW4uICBJdCBpcyBuZXV0cmFsIG9uIFN1blNwaWRlcgor
ICAgICAgICBhbmQgS3Jha2VuLiAgSW50ZXJlc3RpbmdseSwgb24gVjggaXQgcmVncmVzc2VzIGNy
eXB0byBieSAzJQorICAgICAgICB3aGlsZSBwcm9ncmVzc2luZyBkZWx0YWJsdWUgYW5kIHJpY2hh
cmRzIGJ5IDIuNiUgYW5kIDQuMyUsCisgICAgICAgIHJlc3BlY3RpdmVseS4KKworICAgICAgICAq
IGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OmFkZFRvR3JhcGgpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjph
ZGRDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6
CisgICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6
ZHVtcCk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAgIChKU0M6OkRGRzo6R3Jh
cGg6OnByZWRpY3QpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpnZXRQcmVkaWN0aW9uKToK
KyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6OmlzQ2VsbFByZWRp
Y3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6OmlzQXJyYXlQcmVkaWN0aW9uKToKKyAgICAgICAg
KEpTQzo6REZHOjppc0ludDMyUHJlZGljdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6aXNEb3Vi
bGVQcmVkaWN0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjppc051bWJlclByZWRpY3Rpb24pOgor
ICAgICAgICAoSlNDOjpERkc6OnByZWRpY3Rpb25Ub1N0cmluZyk6CisgICAgICAgIChKU0M6OkRG
Rzo6Tm9kZTo6Tm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzUHJlZGljdGlvbik6
CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Z2V0UHJlZGljdGlvbik6CisgICAgICAgIChKU0M6
OkRGRzo6Tm9kZTo6cHJlZGljdCk6CisKIDIwMTEtMDgtMDggIE9saXZlciBIdW50ICA8b2xpdmVy
QGFwcGxlLmNvbT4KIAogICAgICAgICBVc2luZyBtcHJvdGVjdCB0byBjcmVhdGUgZ3VhcmQgcGFn
ZXMgYnJlYWtzIG91ciB1c2Ugb2YgbWFkdmlzZSB0byByZWxlYXNlIGV4ZWN1dGFibGUgbWVtb3J5
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcAkocmV2aXNpb24gOTI2MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzk0LDEwICszOTQsMTAgQEAgcHJp
dmF0ZToKICAgICAgICAgcmV0dXJuIHJlc3VsdEluZGV4OwogICAgIH0KICAgICAKLSAgICBOb2Rl
SW5kZXggYWRkVG9HcmFwaChOb2RlOjpWYXJBcmdUYWcsIE5vZGVUeXBlIG9wKQorICAgIE5vZGVJ
bmRleCBhZGRUb0dyYXBoKE5vZGU6OlZhckFyZ1RhZywgTm9kZVR5cGUgb3AsIE9wSW5mbyBpbmZv
MSwgT3BJbmZvIGluZm8yKQogICAgIHsKICAgICAgICAgTm9kZUluZGV4IHJlc3VsdEluZGV4ID0g
KE5vZGVJbmRleCltX2dyYXBoLnNpemUoKTsKLSAgICAgICAgbV9ncmFwaC5hcHBlbmQoTm9kZShO
b2RlOjpWYXJBcmcsIG9wLCBtX2N1cnJlbnRJbmRleCwgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVu
LnNpemUoKSAtIG1fbnVtUGFzc2VkVmFyQXJncywgbV9udW1QYXNzZWRWYXJBcmdzKSk7CisgICAg
ICAgIG1fZ3JhcGguYXBwZW5kKE5vZGUoTm9kZTo6VmFyQXJnLCBvcCwgbV9jdXJyZW50SW5kZXgs
IGluZm8xLCBpbmZvMiwgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLnNpemUoKSAtIG1fbnVtUGFz
c2VkVmFyQXJncywgbV9udW1QYXNzZWRWYXJBcmdzKSk7CiAgICAgICAgIAogICAgICAgICBtX251
bVBhc3NlZFZhckFyZ3MgPSAwOwogICAgICAgICAKQEAgLTQxOSw3ICs0MTksNyBAQCBwcml2YXRl
OgogICAgICAgICBpbnQgZmlyc3RBcmcgPSByZWdpc3Rlck9mZnNldCAtIGFyZ0NvdW50IC0gUmVn
aXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJTaXplOwogICAgICAgICBmb3IgKGludCBhcmdJZHgg
PSBmaXJzdEFyZzsgYXJnSWR4IDwgZmlyc3RBcmcgKyBhcmdDb3VudDsgYXJnSWR4KyspCiAgICAg
ICAgICAgICBhZGRWYXJBcmdDaGlsZChnZXQoYXJnSWR4KSk7Ci0gICAgICAgIE5vZGVJbmRleCBj
YWxsID0gYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIG9wKTsKKyAgICAgICAgTm9kZUluZGV4IGNh
bGwgPSBhZGRUb0dyYXBoKE5vZGU6OlZhckFyZywgb3AsIE9wSW5mbygwKSwgT3BJbmZvKFByZWRp
Y3ROb25lKSk7CiAgICAgICAgIEluc3RydWN0aW9uKiBwdXRJbnN0cnVjdGlvbiA9IGN1cnJlbnRJ
bnN0cnVjdGlvbiArIE9QQ09ERV9MRU5HVEgob3BfY2FsbCk7CiAgICAgICAgIGlmIChpbnRlcnBy
ZXRlci0+Z2V0T3Bjb2RlSUQocHV0SW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKSA9PSBvcF9jYWxsX3B1
dF9yZXN1bHQpCiAgICAgICAgICAgICBzZXQocHV0SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBj
YWxsKTsKQEAgLTg2Miw3ICs4NjIsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2Nr
KHVuc2lnbmVkCiAgICAgICAgICAgICBwcmVkaWN0QXJyYXkoYmFzZSk7CiAgICAgICAgICAgICBw
cmVkaWN0SW50MzIocHJvcGVydHkpOwogCi0gICAgICAgICAgICBOb2RlSW5kZXggZ2V0QnlWYWwg
PSBhZGRUb0dyYXBoKEdldEJ5VmFsLCBiYXNlLCBwcm9wZXJ0eSwgYWxpYXNlcy5sb29rdXBHZXRC
eVZhbChiYXNlLCBwcm9wZXJ0eSkpOworICAgICAgICAgICAgTm9kZUluZGV4IGdldEJ5VmFsID0g
YWRkVG9HcmFwaChHZXRCeVZhbCwgT3BJbmZvKDApLCBPcEluZm8oUHJlZGljdE5vbmUpLCBiYXNl
LCBwcm9wZXJ0eSwgYWxpYXNlcy5sb29rdXBHZXRCeVZhbChiYXNlLCBwcm9wZXJ0eSkpOwogICAg
ICAgICAgICAgc2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIGdldEJ5VmFsKTsK
ICAgICAgICAgICAgIGFsaWFzZXMucmVjb3JkR2V0QnlWYWwoZ2V0QnlWYWwpOwogCkBAIC04OTEs
NyArODkxLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAg
ICAgICAgICAgTm9kZUluZGV4IGJhc2UgPSBnZXQoZ2V0SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5k
KTsKICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXIgPSBnZXRJbnN0cnVjdGlvblszXS51
Lm9wZXJhbmQ7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIE5vZGVJbmRleCBnZXRNZXRob2Qg
PSBhZGRUb0dyYXBoKEdldE1ldGhvZCwgT3BJbmZvKGlkZW50aWZpZXIpLCBiYXNlKTsKKyAgICAg
ICAgICAgIE5vZGVJbmRleCBnZXRNZXRob2QgPSBhZGRUb0dyYXBoKEdldE1ldGhvZCwgT3BJbmZv
KGlkZW50aWZpZXIpLCBPcEluZm8oUHJlZGljdE5vbmUpLCBiYXNlKTsKICAgICAgICAgICAgIHNl
dChnZXRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIGdldE1ldGhvZCk7CiAgICAgICAgICAgICBh
bGlhc2VzLnJlY29yZEdldE1ldGhvZChnZXRNZXRob2QpOwogICAgICAgICAgICAgCkBAIC05MDQs
NyArOTA0LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAg
ICAgICAgICAgTm9kZUluZGV4IGJhc2UgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3Bl
cmFuZCk7CiAgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyID0gY3VycmVudEluc3RydWN0
aW9uWzNdLnUub3BlcmFuZDsKICAgICAgICAgICAgIAotICAgICAgICAgICAgTm9kZUluZGV4IGdl
dEJ5SWQgPSBhZGRUb0dyYXBoKEdldEJ5SWQsIE9wSW5mbyhpZGVudGlmaWVyKSwgYmFzZSk7Cisg
ICAgICAgICAgICBOb2RlSW5kZXggZ2V0QnlJZCA9IGFkZFRvR3JhcGgoR2V0QnlJZCwgT3BJbmZv
KGlkZW50aWZpZXIpLCBPcEluZm8oUHJlZGljdE5vbmUpLCBiYXNlKTsKICAgICAgICAgICAgIHNl
dChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBnZXRCeUlkKTsKICAgICAgICAgICAg
IGFsaWFzZXMucmVjb3JkR2V0QnlJZChnZXRCeUlkKTsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5jcHAJKHJldmlzaW9uIDkyNjIwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOCw2ICsxMzgsOCBA
QCB2b2lkIEdyYXBoOjpkdW1wKE5vZGVJbmRleCBub2RlSW5kZXgsIENvCiAgICAgICAgIHByaW50
ZigiICBwcmVkaWN0aW5nICVzIiwgcHJlZGljdGlvblRvU3RyaW5nKGdldFByZWRpY3Rpb24obm9k
ZS5sb2NhbCgpKSkpOwogICAgIGlmIChub2RlLmhhc1Zhck51bWJlcigpKQogICAgICAgICBwcmlu
dGYoIiAgcHJlZGljdGluZyAlcyIsIHByZWRpY3Rpb25Ub1N0cmluZyhnZXRHbG9iYWxWYXJQcmVk
aWN0aW9uKG5vZGUudmFyTnVtYmVyKCkpKSk7CisgICAgaWYgKG5vZGUuaGFzUHJlZGljdGlvbigp
KQorICAgICAgICBwcmludGYoIiAgcHJlZGljdGluZyAlcyIsIHByZWRpY3Rpb25Ub1N0cmluZyhu
b2RlLmdldFByZWRpY3Rpb24oKSkpOwogICAgIAogICAgIHByaW50ZigiXG4iKTsKIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9uIDkyNjIwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw1
OSArNDQsNiBAQCBuYW1lc3BhY2UgREZHIHsKIC8vIGhlbHBlciBmdW5jdGlvbiB0byBkaXN0aW5n
dWlzaCB2YXJzICYgdGVtcG9yYXJpZXMgZnJvbSBhcmd1bWVudHMuCiBpbmxpbmUgYm9vbCBvcGVy
YW5kSXNBcmd1bWVudChpbnQgb3BlcmFuZCkgeyByZXR1cm4gb3BlcmFuZCA8IDA7IH0KIAotdHlw
ZWRlZiB1aW50OF90IFByZWRpY3RlZFR5cGU7Ci1zdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQ
cmVkaWN0Tm9uZSAgID0gMDsKLXN0YXRpYyBjb25zdCBQcmVkaWN0ZWRUeXBlIFByZWRpY3RDZWxs
ICAgPSAweDAxOwotc3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdEFycmF5ICA9IDB4
MDM7Ci1zdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0SW50MzIgID0gMHgwNDsKLXN0
YXRpYyBjb25zdCBQcmVkaWN0ZWRUeXBlIFByZWRpY3REb3VibGUgPSAweDA4Owotc3RhdGljIGNv
bnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdE51bWJlciA9IDB4MGM7Ci0KLWlubGluZSBib29sIGlz
Q2VsbFByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKLXsKLSAgICByZXR1cm4gKHZhbHVl
ICYgUHJlZGljdENlbGwpID09IFByZWRpY3RDZWxsICYmICEodmFsdWUgJiB+UHJlZGljdEFycmF5
KTsKLX0KLQotaW5saW5lIGJvb2wgaXNBcnJheVByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1
ZSkKLXsKLSAgICByZXR1cm4gdmFsdWUgPT0gUHJlZGljdEFycmF5OwotfQotCi1pbmxpbmUgYm9v
bCBpc0ludDMyUHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQotewotICAgIHJldHVybiB2
YWx1ZSA9PSBQcmVkaWN0SW50MzI7Ci19Ci0KLWlubGluZSBib29sIGlzRG91YmxlUHJlZGljdGlv
bihQcmVkaWN0ZWRUeXBlIHZhbHVlKQotewotICAgIHJldHVybiB2YWx1ZSA9PSBQcmVkaWN0RG91
YmxlOwotfQotCi1pbmxpbmUgYm9vbCBpc051bWJlclByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2
YWx1ZSkKLXsKLSAgICByZXR1cm4gISEodmFsdWUgJiBQcmVkaWN0TnVtYmVyKSAmJiAhKHZhbHVl
ICYgflByZWRpY3ROdW1iZXIpOwotfQotCi0jaWZuZGVmIE5ERUJVRwotaW5saW5lIGNvbnN0IGNo
YXIqIHByZWRpY3Rpb25Ub1N0cmluZyhQcmVkaWN0ZWRUeXBlIHZhbHVlKQotewotICAgIHN3aXRj
aCAodmFsdWUpIHsKLSAgICBjYXNlIFByZWRpY3ROb25lOgotICAgICAgICByZXR1cm4gInAtYm90
dG9tIjsKLSAgICBjYXNlIFByZWRpY3RDZWxsOgotICAgICAgICByZXR1cm4gInAtY2VsbCI7Ci0g
ICAgY2FzZSBQcmVkaWN0QXJyYXk6Ci0gICAgICAgIHJldHVybiAicC1hcnJheSI7Ci0gICAgY2Fz
ZSBQcmVkaWN0SW50MzI6Ci0gICAgICAgIHJldHVybiAicC1pbnQzMiI7Ci0gICAgY2FzZSBQcmVk
aWN0TnVtYmVyOgotICAgICAgICByZXR1cm4gInAtbnVtYmVyIjsKLSAgICBkZWZhdWx0OgotICAg
ICAgICByZXR1cm4gInAtdG9wIjsKLSAgICB9Ci19Ci0jZW5kaWYKLQogc3RydWN0IFByZWRpY3Rp
b25TbG90IHsKIHB1YmxpYzoKICAgICBQcmVkaWN0aW9uU2xvdCgpCkBAIC0yMTcsNiArMTY0LDEz
IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBHZXRHbG9iYWxWYXI6CiAgICAgICAgICAgICBwcmVk
aWN0R2xvYmFsVmFyKG5vZGUudmFyTnVtYmVyKCksIHByZWRpY3Rpb24pOwogICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgR2V0QnlJZDoKKyAgICAgICAgY2FzZSBHZXRNZXRob2Q6Cisg
ICAgICAgIGNhc2UgR2V0QnlWYWw6CisgICAgICAgIGNhc2UgQ2FsbDoKKyAgICAgICAgY2FzZSBD
b25zdHJ1Y3Q6CisgICAgICAgICAgICBub2RlLnByZWRpY3QocHJlZGljdGlvbik7CisgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CkBAIC0yNTYsNiArMjEwLDEyIEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBnZXRQ
cmVkaWN0aW9uKG5vZGVQdHItPmxvY2FsKCkpOwogICAgICAgICBjYXNlIEdldEdsb2JhbFZhcjoK
ICAgICAgICAgICAgIHJldHVybiBnZXRHbG9iYWxWYXJQcmVkaWN0aW9uKG5vZGVQdHItPnZhck51
bWJlcigpKTsKKyAgICAgICAgY2FzZSBHZXRCeUlkOgorICAgICAgICBjYXNlIEdldE1ldGhvZDoK
KyAgICAgICAgY2FzZSBHZXRCeVZhbDoKKyAgICAgICAgY2FzZSBDYWxsOgorICAgICAgICBjYXNl
IENvbnN0cnVjdDoKKyAgICAgICAgICAgIHJldHVybiBub2RlUHRyLT5nZXRQcmVkaWN0aW9uKCk7
CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gUHJlZGljdE5vbmU7CiAgICAg
ICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiA5MjYy
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xODQsNiArMTg0LDU5IEBAIHN0cnVjdCBPcEluZm8gewogICAgIHVuc2lnbmVkIG1fdmFs
dWU7CiB9OwogCit0eXBlZGVmIHVpbnQ4X3QgUHJlZGljdGVkVHlwZTsKK3N0YXRpYyBjb25zdCBQ
cmVkaWN0ZWRUeXBlIFByZWRpY3ROb25lICAgPSAwOworc3RhdGljIGNvbnN0IFByZWRpY3RlZFR5
cGUgUHJlZGljdENlbGwgICA9IDB4MDE7CitzdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQcmVk
aWN0QXJyYXkgID0gMHgwMzsKK3N0YXRpYyBjb25zdCBQcmVkaWN0ZWRUeXBlIFByZWRpY3RJbnQz
MiAgPSAweDA0Oworc3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdERvdWJsZSA9IDB4
MDg7CitzdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0TnVtYmVyID0gMHgwYzsKKwor
aW5saW5lIGJvb2wgaXNDZWxsUHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQoreworICAg
IHJldHVybiAodmFsdWUgJiBQcmVkaWN0Q2VsbCkgPT0gUHJlZGljdENlbGwgJiYgISh2YWx1ZSAm
IH5QcmVkaWN0QXJyYXkpOworfQorCitpbmxpbmUgYm9vbCBpc0FycmF5UHJlZGljdGlvbihQcmVk
aWN0ZWRUeXBlIHZhbHVlKQoreworICAgIHJldHVybiB2YWx1ZSA9PSBQcmVkaWN0QXJyYXk7Cit9
CisKK2lubGluZSBib29sIGlzSW50MzJQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCit7
CisgICAgcmV0dXJuIHZhbHVlID09IFByZWRpY3RJbnQzMjsKK30KKworaW5saW5lIGJvb2wgaXNE
b3VibGVQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCit7CisgICAgcmV0dXJuIHZhbHVl
ID09IFByZWRpY3REb3VibGU7Cit9CisKK2lubGluZSBib29sIGlzTnVtYmVyUHJlZGljdGlvbihQ
cmVkaWN0ZWRUeXBlIHZhbHVlKQoreworICAgIHJldHVybiAhISh2YWx1ZSAmIFByZWRpY3ROdW1i
ZXIpICYmICEodmFsdWUgJiB+UHJlZGljdE51bWJlcik7Cit9CisKKyNpZm5kZWYgTkRFQlVHCitp
bmxpbmUgY29uc3QgY2hhciogcHJlZGljdGlvblRvU3RyaW5nKFByZWRpY3RlZFR5cGUgdmFsdWUp
Cit7CisgICAgc3dpdGNoICh2YWx1ZSkgeworICAgIGNhc2UgUHJlZGljdE5vbmU6CisgICAgICAg
IHJldHVybiAicC1ib3R0b20iOworICAgIGNhc2UgUHJlZGljdENlbGw6CisgICAgICAgIHJldHVy
biAicC1jZWxsIjsKKyAgICBjYXNlIFByZWRpY3RBcnJheToKKyAgICAgICAgcmV0dXJuICJwLWFy
cmF5IjsKKyAgICBjYXNlIFByZWRpY3RJbnQzMjoKKyAgICAgICAgcmV0dXJuICJwLWludDMyIjsK
KyAgICBjYXNlIFByZWRpY3ROdW1iZXI6CisgICAgICAgIHJldHVybiAicC1udW1iZXIiOworICAg
IGRlZmF1bHQ6CisgICAgICAgIHJldHVybiAicC10b3AiOworICAgIH0KK30KKyNlbmRpZgorCiAv
LyA9PT0gTm9kZSA9PT0KIC8vCiAvLyBOb2RlIHJlcHJlc2VudHMgYSBzaW5nbGUgb3BlcmF0aW9u
IGluIHRoZSBkYXRhIGZsb3cgZ3JhcGguCkBAIC0yMzIsMTIgKzI4NSwxNCBAQCBzdHJ1Y3QgTm9k
ZSB7CiAgICAgICAgIGNoaWxkcmVuLmZpeGVkLmNoaWxkMyA9IGNoaWxkMzsKICAgICB9CiAgICAg
Ci0gICAgLy8gQ29uc3RydWN0IGEgbm9kZSB3aXRoIGEgdmFyaWFibGUgbnVtYmVyIG9mIGNoaWxk
cmVuIGFuZCBubyBpbW1lZGlhdGUgdmFsdWVzLgotICAgIE5vZGUoVmFyQXJnVGFnLCBOb2RlVHlw
ZSBvcCwgRXhjZXB0aW9uSW5mbyBleGNlcHRpb25JbmZvLCB1bnNpZ25lZCBmaXJzdENoaWxkLCB1
bnNpZ25lZCBudW1DaGlsZHJlbikKKyAgICAvLyBDb25zdHJ1Y3QgYSBub2RlIHdpdGggYSB2YXJp
YWJsZSBudW1iZXIgb2YgY2hpbGRyZW4gYW5kIHR3byBpbW1lZGlhdGUgdmFsdWVzLgorICAgIE5v
ZGUoVmFyQXJnVGFnLCBOb2RlVHlwZSBvcCwgRXhjZXB0aW9uSW5mbyBleGNlcHRpb25JbmZvLCBP
cEluZm8gaW1tMSwgT3BJbmZvIGltbTIsIHVuc2lnbmVkIGZpcnN0Q2hpbGQsIHVuc2lnbmVkIG51
bUNoaWxkcmVuKQogICAgICAgICA6IG9wKG9wKQogICAgICAgICAsIGV4Y2VwdGlvbkluZm8oZXhj
ZXB0aW9uSW5mbykKICAgICAgICAgLCBtX3ZpcnR1YWxSZWdpc3RlcihJbnZhbGlkVmlydHVhbFJl
Z2lzdGVyKQogICAgICAgICAsIG1fcmVmQ291bnQoMCkKKyAgICAgICAgLCBtX29wSW5mbyhpbW0x
Lm1fdmFsdWUpCisgICAgICAgICwgbV9vcEluZm8yKGltbTIubV92YWx1ZSkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChvcCAmIE5vZGVIYXNWYXJBcmdzKTsKICAgICAgICAgY2hpbGRyZW4udmFyaWFi
bGUuZmlyc3RDaGlsZCA9IGZpcnN0Q2hpbGQ7CkBAIC0zNTIsNiArNDA3LDMyIEBAIHN0cnVjdCBO
b2RlIHsKICAgICAgICAgQVNTRVJUKGlzQnJhbmNoKCkpOwogICAgICAgICByZXR1cm4gbV9vcElu
Zm8yOwogICAgIH0KKyAgICAKKyAgICBib29sIGhhc1ByZWRpY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgc3dpdGNoIChvcCkgeworICAgICAgICBjYXNlIEdldEJ5SWQ6CisgICAgICAgIGNhc2UgR2V0
TWV0aG9kOgorICAgICAgICBjYXNlIEdldEJ5VmFsOgorICAgICAgICBjYXNlIENhbGw6CisgICAg
ICAgIGNhc2UgQ29uc3RydWN0OgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisgICAg
CisgICAgUHJlZGljdGVkVHlwZSBnZXRQcmVkaWN0aW9uKCkKKyAgICB7CisgICAgICAgIEFTU0VS
VChoYXNQcmVkaWN0aW9uKCkpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UHJlZGljdGVk
VHlwZT4obV9vcEluZm8yKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBwcmVkaWN0KFByZWRpY3Rl
ZFR5cGUgcHJlZGljdGlvbikKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXNQcmVkaWN0aW9uKCkp
OworICAgICAgICBtX29wSW5mbzIgfD0gcHJlZGljdGlvbjsKKyAgICB9CiAKICAgICBWaXJ0dWFs
UmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyKCkKICAgICB7Cg==
</data>
<flag name="review"
          id="98869"
          type_id="1"
          status="+"
          setter="barraclough"
    />
    <flag name="commit-queue"
          id="98880"
          type_id="3"
          status="-"
          setter="barraclough"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103423</attachid>
            <date>2011-08-09 17:15:38 -0700</date>
            <delta_ts>2011-08-09 17:51:25 -0700</delta_ts>
            <desc>the patch (fix for review)</desc>
            <filename>predictheap_patch_2.diff</filename>
            <type>text/plain</type>
            <size>11379</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTI2NDYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDQgQEAK
KzIwMTEtMDgtMDggIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBE
RkcgSklUIGhhcyBubyB3YXkgb2YgcHJvcGFnYXRpbmcgcHJlZGljdGlvbnMgdG8gbG9hZHMgYW5k
IGNhbGxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
NTg4MworCisgICAgICAgIFJldmlld2VkIGJ5IEdhdmluIEJhcnJhY2xvdWdoLgorICAgICAgICAK
KyAgICAgICAgVGhpcyBpbnRyb2R1Y2VzIHRoZSBjYXBhYmlsaXR5IHRvIHN0b3JlIHByZWRpY3Rp
b25zIG9uIGdyYXBoCisgICAgICAgIG5vZGVzLiAgVG8gc2F2ZSBzcGFjZSB3aGlsZSBiZWluZyBz
b21ld2hhdCBjb25zaXN0ZW50LCB0aGUKKyAgICAgICAgcHJlZGljdGlvbiBpcyBhbHdheXMgc3Rv
cmVkIGluIHRoZSBzZWNvbmQgT3BJbmZvIHNsb3QgKHNpbmNlCisgICAgICAgIGEgR2V0QnlJZCB3
aWxsIHVzZSB0aGUgZmlyc3Qgb25lIGZvciB0aGUgaWRlbnRpZmllcikuICBUaGlzCisgICAgICAg
IGNoYW5nZSBpcyBhIG5hdHVyYWwgZXh0ZW5zaW9uIG9mIHI5MjU5MyAoZ2xvYmFsIHZhcmlhYmxl
CisgICAgICAgIHByZWRpY3Rpb24pLgorICAgICAgICAKKyAgICAgICAgVGhpcyBpcyBhIDEuNSUg
d2luIG9uIFY4IGluIHRoZSBhcml0aG1ldGljIG1lYW4sIGFuZCBhIDAuNiUKKyAgICAgICAgd2lu
IG9uIFY4IGluIHRoZSBnZW9tZXRyaWMgbWVhbi4gIEl0IGlzIG5ldXRyYWwgb24gU3VuU3BpZGVy
CisgICAgICAgIGFuZCBLcmFrZW4uICBJbnRlcmVzdGluZ2x5LCBvbiBWOCBpdCByZWdyZXNzZXMg
Y3J5cHRvIGJ5IDMlCisgICAgICAgIHdoaWxlIHByb2dyZXNzaW5nIGRlbHRhYmx1ZSBhbmQgcmlj
aGFyZHMgYnkgMi42JSBhbmQgNC4zJSwKKyAgICAgICAgcmVzcGVjdGl2ZWx5LgorCisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6YWRkVG9HcmFwaCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6
OmFkZENhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2Nr
KToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBo
OjpkdW1wKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAgICAgICAgKEpTQzo6REZHOjpH
cmFwaDo6cHJlZGljdCk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmdldFByZWRpY3Rpb24p
OgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6aXNDZWxsUHJl
ZGljdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6aXNBcnJheVByZWRpY3Rpb24pOgorICAgICAg
ICAoSlNDOjpERkc6OmlzSW50MzJQcmVkaWN0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjppc0Rv
dWJsZVByZWRpY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6OmlzTnVtYmVyUHJlZGljdGlvbik6
CisgICAgICAgIChKU0M6OkRGRzo6cHJlZGljdGlvblRvU3RyaW5nKToKKyAgICAgICAgKEpTQzo6
REZHOjpOb2RlOjpOb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNQcmVkaWN0aW9u
KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpnZXRQcmVkaWN0aW9uKToKKyAgICAgICAgKEpT
Qzo6REZHOjpOb2RlOjpwcmVkaWN0KToKKwogMjAxMS0wOC0wOCAgT2xpdmVyIEh1bnQgIDxvbGl2
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFVzaW5nIG1wcm90ZWN0IHRvIGNyZWF0ZSBndWFyZCBw
YWdlcyBicmVha3Mgb3VyIHVzZSBvZiBtYWR2aXNlIHRvIHJlbGVhc2UgZXhlY3V0YWJsZSBtZW1v
cnkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCShyZXZpc2lvbiA5MjYyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOTQsMTAgKzM5NCwxMCBAQCBw
cml2YXRlOgogICAgICAgICByZXR1cm4gcmVzdWx0SW5kZXg7CiAgICAgfQogICAgIAotICAgIE5v
ZGVJbmRleCBhZGRUb0dyYXBoKE5vZGU6OlZhckFyZ1RhZywgTm9kZVR5cGUgb3ApCisgICAgTm9k
ZUluZGV4IGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnVGFnLCBOb2RlVHlwZSBvcCwgT3BJbmZvIGlu
Zm8xLCBPcEluZm8gaW5mbzIpCiAgICAgewogICAgICAgICBOb2RlSW5kZXggcmVzdWx0SW5kZXgg
PSAoTm9kZUluZGV4KW1fZ3JhcGguc2l6ZSgpOwotICAgICAgICBtX2dyYXBoLmFwcGVuZChOb2Rl
KE5vZGU6OlZhckFyZywgb3AsIG1fY3VycmVudEluZGV4LCBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRy
ZW4uc2l6ZSgpIC0gbV9udW1QYXNzZWRWYXJBcmdzLCBtX251bVBhc3NlZFZhckFyZ3MpKTsKKyAg
ICAgICAgbV9ncmFwaC5hcHBlbmQoTm9kZShOb2RlOjpWYXJBcmcsIG9wLCBtX2N1cnJlbnRJbmRl
eCwgaW5mbzEsIGluZm8yLCBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uc2l6ZSgpIC0gbV9udW1Q
YXNzZWRWYXJBcmdzLCBtX251bVBhc3NlZFZhckFyZ3MpKTsKICAgICAgICAgCiAgICAgICAgIG1f
bnVtUGFzc2VkVmFyQXJncyA9IDA7CiAgICAgICAgIApAQCAtNDE5LDcgKzQxOSw3IEBAIHByaXZh
dGU6CiAgICAgICAgIGludCBmaXJzdEFyZyA9IHJlZ2lzdGVyT2Zmc2V0IC0gYXJnQ291bnQgLSBS
ZWdpc3RlckZpbGU6OkNhbGxGcmFtZUhlYWRlclNpemU7CiAgICAgICAgIGZvciAoaW50IGFyZ0lk
eCA9IGZpcnN0QXJnOyBhcmdJZHggPCBmaXJzdEFyZyArIGFyZ0NvdW50OyBhcmdJZHgrKykKICAg
ICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGdldChhcmdJZHgpKTsKLSAgICAgICAgTm9kZUluZGV4
IGNhbGwgPSBhZGRUb0dyYXBoKE5vZGU6OlZhckFyZywgb3ApOworICAgICAgICBOb2RlSW5kZXgg
Y2FsbCA9IGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBvcCwgT3BJbmZvKDApLCBPcEluZm8oUHJl
ZGljdE5vbmUpKTsKICAgICAgICAgSW5zdHJ1Y3Rpb24qIHB1dEluc3RydWN0aW9uID0gY3VycmVu
dEluc3RydWN0aW9uICsgT1BDT0RFX0xFTkdUSChvcF9jYWxsKTsKICAgICAgICAgaWYgKGludGVy
cHJldGVyLT5nZXRPcGNvZGVJRChwdXRJbnN0cnVjdGlvbi0+dS5vcGNvZGUpID09IG9wX2NhbGxf
cHV0X3Jlc3VsdCkKICAgICAgICAgICAgIHNldChwdXRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQs
IGNhbGwpOwpAQCAtODYyLDcgKzg2Miw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxv
Y2sodW5zaWduZWQKICAgICAgICAgICAgIHByZWRpY3RBcnJheShiYXNlKTsKICAgICAgICAgICAg
IHByZWRpY3RJbnQzMihwcm9wZXJ0eSk7CiAKLSAgICAgICAgICAgIE5vZGVJbmRleCBnZXRCeVZh
bCA9IGFkZFRvR3JhcGgoR2V0QnlWYWwsIGJhc2UsIHByb3BlcnR5LCBhbGlhc2VzLmxvb2t1cEdl
dEJ5VmFsKGJhc2UsIHByb3BlcnR5KSk7CisgICAgICAgICAgICBOb2RlSW5kZXggZ2V0QnlWYWwg
PSBhZGRUb0dyYXBoKEdldEJ5VmFsLCBPcEluZm8oMCksIE9wSW5mbyhQcmVkaWN0Tm9uZSksIGJh
c2UsIHByb3BlcnR5LCBhbGlhc2VzLmxvb2t1cEdldEJ5VmFsKGJhc2UsIHByb3BlcnR5KSk7CiAg
ICAgICAgICAgICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgZ2V0QnlWYWwp
OwogICAgICAgICAgICAgYWxpYXNlcy5yZWNvcmRHZXRCeVZhbChnZXRCeVZhbCk7CiAKQEAgLTg5
MSw3ICs4OTEsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAg
ICAgICAgICAgICBOb2RlSW5kZXggYmFzZSA9IGdldChnZXRJbnN0cnVjdGlvblsyXS51Lm9wZXJh
bmQpOwogICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllciA9IGdldEluc3RydWN0aW9uWzNd
LnUub3BlcmFuZDsKICAgICAgICAgICAgIAotICAgICAgICAgICAgTm9kZUluZGV4IGdldE1ldGhv
ZCA9IGFkZFRvR3JhcGgoR2V0TWV0aG9kLCBPcEluZm8oaWRlbnRpZmllciksIGJhc2UpOworICAg
ICAgICAgICAgTm9kZUluZGV4IGdldE1ldGhvZCA9IGFkZFRvR3JhcGgoR2V0TWV0aG9kLCBPcElu
Zm8oaWRlbnRpZmllciksIE9wSW5mbyhQcmVkaWN0Tm9uZSksIGJhc2UpOwogICAgICAgICAgICAg
c2V0KGdldEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgZ2V0TWV0aG9kKTsKICAgICAgICAgICAg
IGFsaWFzZXMucmVjb3JkR2V0TWV0aG9kKGdldE1ldGhvZCk7CiAgICAgICAgICAgICAKQEAgLTkw
NCw3ICs5MDQsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAg
ICAgICAgICAgICBOb2RlSW5kZXggYmFzZSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5v
cGVyYW5kKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXIgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bM10udS5vcGVyYW5kOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBOb2RlSW5kZXgg
Z2V0QnlJZCA9IGFkZFRvR3JhcGgoR2V0QnlJZCwgT3BJbmZvKGlkZW50aWZpZXIpLCBiYXNlKTsK
KyAgICAgICAgICAgIE5vZGVJbmRleCBnZXRCeUlkID0gYWRkVG9HcmFwaChHZXRCeUlkLCBPcElu
Zm8oaWRlbnRpZmllciksIE9wSW5mbyhQcmVkaWN0Tm9uZSksIGJhc2UpOwogICAgICAgICAgICAg
c2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIGdldEJ5SWQpOwogICAgICAgICAg
ICAgYWxpYXNlcy5yZWNvcmRHZXRCeUlkKGdldEJ5SWQpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmNwcAkocmV2aXNpb24gOTI2MjApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM4LDYgKzEzOCw4
IEBAIHZvaWQgR3JhcGg6OmR1bXAoTm9kZUluZGV4IG5vZGVJbmRleCwgQ28KICAgICAgICAgcHJp
bnRmKCIgIHByZWRpY3RpbmcgJXMiLCBwcmVkaWN0aW9uVG9TdHJpbmcoZ2V0UHJlZGljdGlvbihu
b2RlLmxvY2FsKCkpKSk7CiAgICAgaWYgKG5vZGUuaGFzVmFyTnVtYmVyKCkpCiAgICAgICAgIHBy
aW50ZigiICBwcmVkaWN0aW5nICVzIiwgcHJlZGljdGlvblRvU3RyaW5nKGdldEdsb2JhbFZhclBy
ZWRpY3Rpb24obm9kZS52YXJOdW1iZXIoKSkpKTsKKyAgICBpZiAobm9kZS5oYXNQcmVkaWN0aW9u
KCkpCisgICAgICAgIHByaW50ZigiICBwcmVkaWN0aW5nICVzIiwgcHJlZGljdGlvblRvU3RyaW5n
KG5vZGUuZ2V0UHJlZGljdGlvbigpKSk7CiAgICAgCiAgICAgcHJpbnRmKCJcbiIpOwogfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkocmV2aXNpb24gOTI2MjApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0
LDU5ICs0NCw2IEBAIG5hbWVzcGFjZSBERkcgewogLy8gaGVscGVyIGZ1bmN0aW9uIHRvIGRpc3Rp
bmd1aXNoIHZhcnMgJiB0ZW1wb3JhcmllcyBmcm9tIGFyZ3VtZW50cy4KIGlubGluZSBib29sIG9w
ZXJhbmRJc0FyZ3VtZW50KGludCBvcGVyYW5kKSB7IHJldHVybiBvcGVyYW5kIDwgMDsgfQogCi10
eXBlZGVmIHVpbnQ4X3QgUHJlZGljdGVkVHlwZTsKLXN0YXRpYyBjb25zdCBQcmVkaWN0ZWRUeXBl
IFByZWRpY3ROb25lICAgPSAwOwotc3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdENl
bGwgICA9IDB4MDE7Ci1zdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0QXJyYXkgID0g
MHgwMzsKLXN0YXRpYyBjb25zdCBQcmVkaWN0ZWRUeXBlIFByZWRpY3RJbnQzMiAgPSAweDA0Owot
c3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdERvdWJsZSA9IDB4MDg7Ci1zdGF0aWMg
Y29uc3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0TnVtYmVyID0gMHgwYzsKLQotaW5saW5lIGJvb2wg
aXNDZWxsUHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQotewotICAgIHJldHVybiAodmFs
dWUgJiBQcmVkaWN0Q2VsbCkgPT0gUHJlZGljdENlbGwgJiYgISh2YWx1ZSAmIH5QcmVkaWN0QXJy
YXkpOwotfQotCi1pbmxpbmUgYm9vbCBpc0FycmF5UHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZh
bHVlKQotewotICAgIHJldHVybiB2YWx1ZSA9PSBQcmVkaWN0QXJyYXk7Ci19Ci0KLWlubGluZSBi
b29sIGlzSW50MzJQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCi17Ci0gICAgcmV0dXJu
IHZhbHVlID09IFByZWRpY3RJbnQzMjsKLX0KLQotaW5saW5lIGJvb2wgaXNEb3VibGVQcmVkaWN0
aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCi17Ci0gICAgcmV0dXJuIHZhbHVlID09IFByZWRpY3RE
b3VibGU7Ci19Ci0KLWlubGluZSBib29sIGlzTnVtYmVyUHJlZGljdGlvbihQcmVkaWN0ZWRUeXBl
IHZhbHVlKQotewotICAgIHJldHVybiAhISh2YWx1ZSAmIFByZWRpY3ROdW1iZXIpICYmICEodmFs
dWUgJiB+UHJlZGljdE51bWJlcik7Ci19Ci0KLSNpZm5kZWYgTkRFQlVHCi1pbmxpbmUgY29uc3Qg
Y2hhciogcHJlZGljdGlvblRvU3RyaW5nKFByZWRpY3RlZFR5cGUgdmFsdWUpCi17Ci0gICAgc3dp
dGNoICh2YWx1ZSkgewotICAgIGNhc2UgUHJlZGljdE5vbmU6Ci0gICAgICAgIHJldHVybiAicC1i
b3R0b20iOwotICAgIGNhc2UgUHJlZGljdENlbGw6Ci0gICAgICAgIHJldHVybiAicC1jZWxsIjsK
LSAgICBjYXNlIFByZWRpY3RBcnJheToKLSAgICAgICAgcmV0dXJuICJwLWFycmF5IjsKLSAgICBj
YXNlIFByZWRpY3RJbnQzMjoKLSAgICAgICAgcmV0dXJuICJwLWludDMyIjsKLSAgICBjYXNlIFBy
ZWRpY3ROdW1iZXI6Ci0gICAgICAgIHJldHVybiAicC1udW1iZXIiOwotICAgIGRlZmF1bHQ6Ci0g
ICAgICAgIHJldHVybiAicC10b3AiOwotICAgIH0KLX0KLSNlbmRpZgotCiBzdHJ1Y3QgUHJlZGlj
dGlvblNsb3QgewogcHVibGljOgogICAgIFByZWRpY3Rpb25TbG90KCkKQEAgLTIxNyw2ICsxNjQs
MTMgQEAgcHVibGljOgogICAgICAgICBjYXNlIEdldEdsb2JhbFZhcjoKICAgICAgICAgICAgIHBy
ZWRpY3RHbG9iYWxWYXIobm9kZS52YXJOdW1iZXIoKSwgcHJlZGljdGlvbik7CiAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBHZXRCeUlkOgorICAgICAgICBjYXNlIEdldE1ldGhvZDoK
KyAgICAgICAgY2FzZSBHZXRCeVZhbDoKKyAgICAgICAgY2FzZSBDYWxsOgorICAgICAgICBjYXNl
IENvbnN0cnVjdDoKKyAgICAgICAgICAgIG5vZGUucHJlZGljdChwcmVkaWN0aW9uKTsKKyAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KQEAgLTI1Niw2ICsyMTAsMTIgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIGdl
dFByZWRpY3Rpb24obm9kZVB0ci0+bG9jYWwoKSk7CiAgICAgICAgIGNhc2UgR2V0R2xvYmFsVmFy
OgogICAgICAgICAgICAgcmV0dXJuIGdldEdsb2JhbFZhclByZWRpY3Rpb24obm9kZVB0ci0+dmFy
TnVtYmVyKCkpOworICAgICAgICBjYXNlIEdldEJ5SWQ6CisgICAgICAgIGNhc2UgR2V0TWV0aG9k
OgorICAgICAgICBjYXNlIEdldEJ5VmFsOgorICAgICAgICBjYXNlIENhbGw6CisgICAgICAgIGNh
c2UgQ29uc3RydWN0OgorICAgICAgICAgICAgcmV0dXJuIG5vZGVQdHItPmdldFByZWRpY3Rpb24o
KTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBQcmVkaWN0Tm9uZTsKICAg
ICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDky
NjIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE4NCw2ICsxODQsNTkgQEAgc3RydWN0IE9wSW5mbyB7CiAgICAgdW5zaWduZWQgbV92
YWx1ZTsKIH07CiAKK3R5cGVkZWYgdWludDhfdCBQcmVkaWN0ZWRUeXBlOworc3RhdGljIGNvbnN0
IFByZWRpY3RlZFR5cGUgUHJlZGljdE5vbmUgICA9IDA7CitzdGF0aWMgY29uc3QgUHJlZGljdGVk
VHlwZSBQcmVkaWN0Q2VsbCAgID0gMHgwMTsKK3N0YXRpYyBjb25zdCBQcmVkaWN0ZWRUeXBlIFBy
ZWRpY3RBcnJheSAgPSAweDAzOworc3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdElu
dDMyICA9IDB4MDQ7CitzdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0RG91YmxlID0g
MHgwODsKK3N0YXRpYyBjb25zdCBQcmVkaWN0ZWRUeXBlIFByZWRpY3ROdW1iZXIgPSAweDBjOwor
CitpbmxpbmUgYm9vbCBpc0NlbGxQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCit7Cisg
ICAgcmV0dXJuICh2YWx1ZSAmIFByZWRpY3RDZWxsKSA9PSBQcmVkaWN0Q2VsbCAmJiAhKHZhbHVl
ICYgflByZWRpY3RBcnJheSk7Cit9CisKK2lubGluZSBib29sIGlzQXJyYXlQcmVkaWN0aW9uKFBy
ZWRpY3RlZFR5cGUgdmFsdWUpCit7CisgICAgcmV0dXJuIHZhbHVlID09IFByZWRpY3RBcnJheTsK
K30KKworaW5saW5lIGJvb2wgaXNJbnQzMlByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkK
K3sKKyAgICByZXR1cm4gdmFsdWUgPT0gUHJlZGljdEludDMyOworfQorCitpbmxpbmUgYm9vbCBp
c0RvdWJsZVByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFs
dWUgPT0gUHJlZGljdERvdWJsZTsKK30KKworaW5saW5lIGJvb2wgaXNOdW1iZXJQcmVkaWN0aW9u
KFByZWRpY3RlZFR5cGUgdmFsdWUpCit7CisgICAgcmV0dXJuICEhKHZhbHVlICYgUHJlZGljdE51
bWJlcikgJiYgISh2YWx1ZSAmIH5QcmVkaWN0TnVtYmVyKTsKK30KKworI2lmbmRlZiBOREVCVUcK
K2lubGluZSBjb25zdCBjaGFyKiBwcmVkaWN0aW9uVG9TdHJpbmcoUHJlZGljdGVkVHlwZSB2YWx1
ZSkKK3sKKyAgICBzd2l0Y2ggKHZhbHVlKSB7CisgICAgY2FzZSBQcmVkaWN0Tm9uZToKKyAgICAg
ICAgcmV0dXJuICJwLWJvdHRvbSI7CisgICAgY2FzZSBQcmVkaWN0Q2VsbDoKKyAgICAgICAgcmV0
dXJuICJwLWNlbGwiOworICAgIGNhc2UgUHJlZGljdEFycmF5OgorICAgICAgICByZXR1cm4gInAt
YXJyYXkiOworICAgIGNhc2UgUHJlZGljdEludDMyOgorICAgICAgICByZXR1cm4gInAtaW50MzIi
OworICAgIGNhc2UgUHJlZGljdE51bWJlcjoKKyAgICAgICAgcmV0dXJuICJwLW51bWJlciI7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuICJwLXRvcCI7CisgICAgfQorfQorI2VuZGlmCisK
IC8vID09PSBOb2RlID09PQogLy8KIC8vIE5vZGUgcmVwcmVzZW50cyBhIHNpbmdsZSBvcGVyYXRp
b24gaW4gdGhlIGRhdGEgZmxvdyBncmFwaC4KQEAgLTIzMiwxMiArMjg1LDE0IEBAIHN0cnVjdCBO
b2RlIHsKICAgICAgICAgY2hpbGRyZW4uZml4ZWQuY2hpbGQzID0gY2hpbGQzOwogICAgIH0KICAg
ICAKLSAgICAvLyBDb25zdHJ1Y3QgYSBub2RlIHdpdGggYSB2YXJpYWJsZSBudW1iZXIgb2YgY2hp
bGRyZW4gYW5kIG5vIGltbWVkaWF0ZSB2YWx1ZXMuCi0gICAgTm9kZShWYXJBcmdUYWcsIE5vZGVU
eXBlIG9wLCBFeGNlcHRpb25JbmZvIGV4Y2VwdGlvbkluZm8sIHVuc2lnbmVkIGZpcnN0Q2hpbGQs
IHVuc2lnbmVkIG51bUNoaWxkcmVuKQorICAgIC8vIENvbnN0cnVjdCBhIG5vZGUgd2l0aCBhIHZh
cmlhYmxlIG51bWJlciBvZiBjaGlsZHJlbiBhbmQgdHdvIGltbWVkaWF0ZSB2YWx1ZXMuCisgICAg
Tm9kZShWYXJBcmdUYWcsIE5vZGVUeXBlIG9wLCBFeGNlcHRpb25JbmZvIGV4Y2VwdGlvbkluZm8s
IE9wSW5mbyBpbW0xLCBPcEluZm8gaW1tMiwgdW5zaWduZWQgZmlyc3RDaGlsZCwgdW5zaWduZWQg
bnVtQ2hpbGRyZW4pCiAgICAgICAgIDogb3Aob3ApCiAgICAgICAgICwgZXhjZXB0aW9uSW5mbyhl
eGNlcHRpb25JbmZvKQogICAgICAgICAsIG1fdmlydHVhbFJlZ2lzdGVyKEludmFsaWRWaXJ0dWFs
UmVnaXN0ZXIpCiAgICAgICAgICwgbV9yZWZDb3VudCgwKQorICAgICAgICAsIG1fb3BJbmZvKGlt
bTEubV92YWx1ZSkKKyAgICAgICAgLCBtX29wSW5mbzIoaW1tMi5tX3ZhbHVlKQogICAgIHsKICAg
ICAgICAgQVNTRVJUKG9wICYgTm9kZUhhc1ZhckFyZ3MpOwogICAgICAgICBjaGlsZHJlbi52YXJp
YWJsZS5maXJzdENoaWxkID0gZmlyc3RDaGlsZDsKQEAgLTM1Miw2ICs0MDcsMzIgQEAgc3RydWN0
IE5vZGUgewogICAgICAgICBBU1NFUlQoaXNCcmFuY2goKSk7CiAgICAgICAgIHJldHVybiBtX29w
SW5mbzI7CiAgICAgfQorICAgIAorICAgIGJvb2wgaGFzUHJlZGljdGlvbigpCisgICAgeworICAg
ICAgICBzd2l0Y2ggKG9wKSB7CisgICAgICAgIGNhc2UgR2V0QnlJZDoKKyAgICAgICAgY2FzZSBH
ZXRNZXRob2Q6CisgICAgICAgIGNhc2UgR2V0QnlWYWw6CisgICAgICAgIGNhc2UgQ2FsbDoKKyAg
ICAgICAgY2FzZSBDb25zdHJ1Y3Q6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICAKKyAgICBQcmVkaWN0ZWRUeXBlIGdldFByZWRpY3Rpb24oKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKGhhc1ByZWRpY3Rpb24oKSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxQcmVkaWN0
ZWRUeXBlPihtX29wSW5mbzIpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHByZWRpY3QoUHJlZGlj
dGVkVHlwZSBwcmVkaWN0aW9uKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGhhc1ByZWRpY3Rpb24o
KSk7CisgICAgICAgIG1fb3BJbmZvMiB8PSBwcmVkaWN0aW9uOworICAgIH0KIAogICAgIFZpcnR1
YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIoKQogICAgIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>