<?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>72326</bug_id>
          
          <creation_ts>2011-11-14 16:20:43 -0800</creation_ts>
          <short_desc>Towards 8 bit Strings - Initial JS String Tuning</short_desc>
          <delta_ts>2011-11-15 18:22:15 -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>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>
          
          <blocked>71337</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>502440</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2011-11-14 16:20:43 -0800</bug_when>
    <thetext>The String methods provided in JavaScript should be optimized for 8 bit strings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503054</commentid>
    <comment_count>1</comment_count>
      <attachid>115201</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2011-11-15 10:56:29 -0800</bug_when>
    <thetext>Created attachment 115201
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503117</commentid>
    <comment_count>2</comment_count>
      <attachid>115201</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-11-15 11:53:42 -0800</bug_when>
    <thetext>Comment on attachment 115201
Proposed patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503214</commentid>
    <comment_count>3</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2011-11-15 13:38:55 -0800</bug_when>
    <thetext>Committed r100314: &lt;http://trac.webkit.org/changeset/100314&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115201</attachid>
            <date>2011-11-15 10:56:29 -0800</date>
            <delta_ts>2011-11-15 11:53:41 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>72326-0.patch</filename>
            <type>text/plain</type>
            <size>13918</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTAwMjEzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBA
CisyMDExLTExLTE0ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIFRvd2FyZHMgOCBiaXQgU3RyaW5ncyAtIEluaXRpYWwgSlMgU3RyaW5nIFR1bmluZworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIzMjYKKworICAg
ICAgICBBZGRlZCA4IGJpdCBvcHRpbWl6ZWQgcGF0aHMgZm9yIHRoZSBtZXRob2RzIGJlbG93Lgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcnVudGlt
ZS9KU1N0cmluZy5oOgorICAgICAgICAoSlNDOjpqc1N1YnN0cmluZzgpOgorICAgICAgICAqIHJ1
bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6anNTcGxpY2VTdWJzdHJp
bmdzKToKKyAgICAgICAgKEpTQzo6anNTcGxpY2VTdWJzdHJpbmdzV2l0aFNlcGFyYXRvcnMpOgor
ICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNSZXBsYWNlKToKKyAgICAgICAgKEpTQzo6c3Ry
aW5nUHJvdG9GdW5jQ2hhckNvZGVBdCk6CisKIDIwMTEtMTEtMTQgIE1pY2hhZWwgU2Fib2ZmICA8
bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgRnVydGhlciBjaGFuZ2VzIGFuZCBjbGVhbnVw
IHRvIEpTU3RyaW5nLmggYW5kIGNwcC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTdHJpbmcuaAkocmV2aXNpb24gMTAwMjExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMzYzLDYgKzM2MywyMSBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIGpzU3Vic3RyaW5nKGdsb2JhbERhdGEsIHMt
PnZhbHVlKGV4ZWMpLCBvZmZzZXQsIGxlbmd0aCk7CiAgICAgfQogCisgICAgaW5saW5lIEpTU3Ry
aW5nKiBqc1N1YnN0cmluZzgoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5n
JiBzLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICB7CisgICAgICAgIEFT
U0VSVChvZmZzZXQgPD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHMubGVuZ3RoKCkpKTsKKyAgICAg
ICAgQVNTRVJUKGxlbmd0aCA8PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocy5sZW5ndGgoKSkpOwor
ICAgICAgICBBU1NFUlQob2Zmc2V0ICsgbGVuZ3RoIDw9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihz
Lmxlbmd0aCgpKSk7CisgICAgICAgIGlmICghbGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuIGds
b2JhbERhdGEtPnNtYWxsU3RyaW5ncy5lbXB0eVN0cmluZyhnbG9iYWxEYXRhKTsKKyAgICAgICAg
aWYgKGxlbmd0aCA9PSAxKSB7CisgICAgICAgICAgICBVQ2hhciBjID0gc1tvZmZzZXRdOworICAg
ICAgICAgICAgaWYgKGMgPD0gbWF4U2luZ2xlQ2hhcmFjdGVyU3RyaW5nKQorICAgICAgICAgICAg
ICAgIHJldHVybiBnbG9iYWxEYXRhLT5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5n
KGdsb2JhbERhdGEsIGMpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmaXh1cFZQdHIoZ2xv
YmFsRGF0YSwgSlNTdHJpbmc6OmNyZWF0ZUhhc090aGVyT3duZXIoKmdsb2JhbERhdGEsIFN0cmlu
Z0ltcGw6OmNyZWF0ZTgocy5pbXBsKCksIG9mZnNldCwgbGVuZ3RoKSkpOworICAgIH0KKwogICAg
IGlubGluZSBKU1N0cmluZyoganNTdWJzdHJpbmcoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBj
b25zdCBVU3RyaW5nJiBzLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKICAgICB7
CiAgICAgICAgIEFTU0VSVChvZmZzZXQgPD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHMubGVuZ3Ro
KCkpKTsKQEAgLTM5OSw2ICs0MTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBpbmxpbmUgSlNT
dHJpbmcqIGpzRW1wdHlTdHJpbmcoRXhlY1N0YXRlKiBleGVjKSB7IHJldHVybiBqc0VtcHR5U3Ry
aW5nKCZleGVjLT5nbG9iYWxEYXRhKCkpOyB9CiAgICAgaW5saW5lIEpTU3RyaW5nKiBqc1N0cmlu
ZyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIHMpIHsgcmV0dXJuIGpzU3RyaW5nKCZl
eGVjLT5nbG9iYWxEYXRhKCksIHMpOyB9CiAgICAgaW5saW5lIEpTU3RyaW5nKiBqc1NpbmdsZUNo
YXJhY3RlclN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIFVDaGFyIGMpIHsgcmV0dXJuIGpzU2luZ2xl
Q2hhcmFjdGVyU3RyaW5nKCZleGVjLT5nbG9iYWxEYXRhKCksIGMpOyB9CisgICAgaW5saW5lIEpT
U3RyaW5nKiBqc1N1YnN0cmluZzgoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBVU3RyaW5nJiBzLCB1
bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkgeyByZXR1cm4ganNTdWJzdHJpbmc4KCZl
eGVjLT5nbG9iYWxEYXRhKCksIHMsIG9mZnNldCwgbGVuZ3RoKTsgfQogICAgIGlubGluZSBKU1N0
cmluZyoganNTdWJzdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBVU3RyaW5nJiBzLCB1bnNp
Z25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkgeyByZXR1cm4ganNTdWJzdHJpbmcoJmV4ZWMt
Pmdsb2JhbERhdGEoKSwgcywgb2Zmc2V0LCBsZW5ndGgpOyB9CiAgICAgaW5saW5lIEpTU3RyaW5n
KiBqc05vbnRyaXZpYWxTdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBVU3RyaW5nJiBzKSB7
IHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcoJmV4ZWMtPmdsb2JhbERhdGEoKSwgcyk7IH0KICAg
ICBpbmxpbmUgSlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IGNoYXIqIHMpIHsgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZygmZXhlYy0+Z2xvYmFsRGF0
YSgpLCBzKTsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJv
dG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAxMDAyMTEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODMs
NyArMjgzLDI3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNTcGxpY2VTdWIKICAg
ICBpZiAoIXRvdGFsTGVuZ3RoKQogICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgIiIpOwog
CisgICAgaWYgKHNvdXJjZS5pczhCaXQoKSkgeworICAgICAgICBMQ2hhciogYnVmZmVyOworICAg
ICAgICBjb25zdCBMQ2hhciogc291cmNlRGF0YSA9IHNvdXJjZS5jaGFyYWN0ZXJzOCgpOworICAg
ICAgICBSZWZQdHI8U3RyaW5nSW1wbD4gaW1wbCA9IFN0cmluZ0ltcGw6OnRyeUNyZWF0ZVVuaW5p
dGlhbGl6ZWQodG90YWxMZW5ndGgsIGJ1ZmZlcik7CisgICAgICAgIGlmICghaW1wbCkKKyAgICAg
ICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisKKyAgICAgICAgaW50
IGJ1ZmZlclBvcyA9IDA7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmFuZ2VDb3VudDsg
aSsrKSB7CisgICAgICAgICAgICBpZiAoaW50IHNyY0xlbiA9IHN1YnN0cmluZ1Jhbmdlc1tpXS5s
ZW5ndGgpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMoYnVmZmVyICsg
YnVmZmVyUG9zLCBzb3VyY2VEYXRhICsgc3Vic3RyaW5nUmFuZ2VzW2ldLnBvc2l0aW9uLCBzcmNM
ZW4pOworICAgICAgICAgICAgICAgIGJ1ZmZlclBvcyArPSBzcmNMZW47CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgaW1wbC5yZWxlYXNl
KCkpOworICAgIH0KKwogICAgIFVDaGFyKiBidWZmZXI7CisgICAgY29uc3QgVUNoYXIqIHNvdXJj
ZURhdGEgPSBzb3VyY2UuY2hhcmFjdGVyczE2KCk7CisKICAgICBSZWZQdHI8U3RyaW5nSW1wbD4g
aW1wbCA9IFN0cmluZ0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodG90YWxMZW5ndGgsIGJ1
ZmZlcik7CiAgICAgaWYgKCFpbXBsKQogICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVy
cm9yKGV4ZWMpOwpAQCAtMjkxLDcgKzMxMSw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFs
dWUganNTcGxpY2VTdWIKICAgICBpbnQgYnVmZmVyUG9zID0gMDsKICAgICBmb3IgKGludCBpID0g
MDsgaSA8IHJhbmdlQ291bnQ7IGkrKykgewogICAgICAgICBpZiAoaW50IHNyY0xlbiA9IHN1YnN0
cmluZ1Jhbmdlc1tpXS5sZW5ndGgpIHsKLSAgICAgICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFy
cyhidWZmZXIgKyBidWZmZXJQb3MsIHNvdXJjZS5jaGFyYWN0ZXJzKCkgKyBzdWJzdHJpbmdSYW5n
ZXNbaV0ucG9zaXRpb24sIHNyY0xlbik7CisgICAgICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hh
cnMoYnVmZmVyICsgYnVmZmVyUG9zLCBzb3VyY2VEYXRhICsgc3Vic3RyaW5nUmFuZ2VzW2ldLnBv
c2l0aW9uLCBzcmNMZW4pOwogICAgICAgICAgICAgYnVmZmVyUG9zICs9IHNyY0xlbjsKICAgICAg
ICAgfQogICAgIH0KQEAgLTMxMiwxNCArMzMyLDQ2IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpT
VmFsdWUganNTcGxpY2VTdWIKICAgICB9CiAKICAgICBpbnQgdG90YWxMZW5ndGggPSAwOworICAg
IGJvb2wgYWxsU2VwZXJhdG9yczhCaXQgPSB0cnVlOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
cmFuZ2VDb3VudDsgaSsrKQogICAgICAgICB0b3RhbExlbmd0aCArPSBzdWJzdHJpbmdSYW5nZXNb
aV0ubGVuZ3RoOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2VwYXJhdG9yQ291bnQ7IGkrKykK
KyAgICBmb3IgKGludCBpID0gMDsgaSA8IHNlcGFyYXRvckNvdW50OyBpKyspIHsKICAgICAgICAg
dG90YWxMZW5ndGggKz0gc2VwYXJhdG9yc1tpXS5sZW5ndGgoKTsKKyAgICAgICAgaWYgKHNlcGFy
YXRvcnNbaV0ubGVuZ3RoKCkgJiYgIXNlcGFyYXRvcnNbaV0uaXM4Qml0KCkpCisgICAgICAgICAg
ICBhbGxTZXBlcmF0b3JzOEJpdCA9IGZhbHNlOworICAgIH0KIAogICAgIGlmICghdG90YWxMZW5n
dGgpCiAgICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCAiIik7CiAKKyAgICBpZiAoc291cmNl
LmlzOEJpdCgpICYmIGFsbFNlcGVyYXRvcnM4Qml0KSB7CisgICAgICAgIExDaGFyKiBidWZmZXI7
CisgICAgICAgIGNvbnN0IExDaGFyKiBzb3VyY2VEYXRhID0gc291cmNlLmNoYXJhY3RlcnM4KCk7
CisKKyAgICAgICAgUmVmUHRyPFN0cmluZ0ltcGw+IGltcGwgPSBTdHJpbmdJbXBsOjp0cnlDcmVh
dGVVbmluaXRpYWxpemVkKHRvdGFsTGVuZ3RoLCBidWZmZXIpOworICAgICAgICBpZiAoIWltcGwp
CisgICAgICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOworCisgICAg
ICAgIGludCBtYXhDb3VudCA9IG1heChyYW5nZUNvdW50LCBzZXBhcmF0b3JDb3VudCk7CisgICAg
ICAgIGludCBidWZmZXJQb3MgPSAwOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1heENv
dW50OyBpKyspIHsKKyAgICAgICAgICAgIGlmIChpIDwgcmFuZ2VDb3VudCkgeworICAgICAgICAg
ICAgICAgIGlmIChpbnQgc3JjTGVuID0gc3Vic3RyaW5nUmFuZ2VzW2ldLmxlbmd0aCkgeworICAg
ICAgICAgICAgICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMoYnVmZmVyICsgYnVmZmVyUG9z
LCBzb3VyY2VEYXRhICsgc3Vic3RyaW5nUmFuZ2VzW2ldLnBvc2l0aW9uLCBzcmNMZW4pOworICAg
ICAgICAgICAgICAgICAgICBidWZmZXJQb3MgKz0gc3JjTGVuOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChpIDwgc2VwYXJhdG9yQ291bnQpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoaW50IHNlcExlbiA9IHNlcGFyYXRvcnNbaV0ubGVuZ3RoKCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJzKGJ1ZmZlciArIGJ1ZmZl
clBvcywgc2VwYXJhdG9yc1tpXS5jaGFyYWN0ZXJzOCgpLCBzZXBMZW4pOworICAgICAgICAgICAg
ICAgICAgICBidWZmZXJQb3MgKz0gc2VwTGVuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfSAgICAgICAgCisKKyAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMs
IGltcGwucmVsZWFzZSgpKTsKKyAgICB9CisKICAgICBVQ2hhciogYnVmZmVyOwogICAgIFJlZlB0
cjxTdHJpbmdJbXBsPiBpbXBsID0gU3RyaW5nSW1wbDo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh0
b3RhbExlbmd0aCwgYnVmZmVyKTsKICAgICBpZiAoIWltcGwpCkBAIC0zMzAsMTMgKzM4MiwxMyBA
QCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzU3BsaWNlU3ViCiAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBtYXhDb3VudDsgaSsrKSB7CiAgICAgICAgIGlmIChpIDwgcmFuZ2VDb3VudCkg
ewogICAgICAgICAgICAgaWYgKGludCBzcmNMZW4gPSBzdWJzdHJpbmdSYW5nZXNbaV0ubGVuZ3Ro
KSB7Ci0gICAgICAgICAgICAgICAgU3RyaW5nSW1wbDo6Y29weUNoYXJzKGJ1ZmZlciArIGJ1ZmZl
clBvcywgc291cmNlLmNoYXJhY3RlcnMxNigpICsgc3Vic3RyaW5nUmFuZ2VzW2ldLnBvc2l0aW9u
LCBzcmNMZW4pOworICAgICAgICAgICAgICAgIFN0cmluZ0ltcGw6OmNvcHlDaGFycyhidWZmZXIg
KyBidWZmZXJQb3MsIHNvdXJjZS5jaGFyYWN0ZXJzKCkgKyBzdWJzdHJpbmdSYW5nZXNbaV0ucG9z
aXRpb24sIHNyY0xlbik7CiAgICAgICAgICAgICAgICAgYnVmZmVyUG9zICs9IHNyY0xlbjsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAoaSA8IHNlcGFyYXRvckNvdW50KSB7
CiAgICAgICAgICAgICBpZiAoaW50IHNlcExlbiA9IHNlcGFyYXRvcnNbaV0ubGVuZ3RoKCkpIHsK
LSAgICAgICAgICAgICAgICBTdHJpbmdJbXBsOjpjb3B5Q2hhcnMoYnVmZmVyICsgYnVmZmVyUG9z
LCBzZXBhcmF0b3JzW2ldLmNoYXJhY3RlcnMxNigpLCBzZXBMZW4pOworICAgICAgICAgICAgICAg
IFN0cmluZ0ltcGw6OmNvcHlDaGFycyhidWZmZXIgKyBidWZmZXJQb3MsIHNlcGFyYXRvcnNbaV0u
Y2hhcmFjdGVycygpLCBzZXBMZW4pOwogICAgICAgICAgICAgICAgIGJ1ZmZlclBvcyArPSBzZXBM
ZW47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTQyMyw0OCArNDc1LDk1IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KICAgICAgICAgICAgIENhY2hlZENh
bGwgY2FjaGVkQ2FsbChleGVjLCBmdW5jLCBhcmdDb3VudCk7CiAgICAgICAgICAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc051bGwoKSk7Ci0gICAgICAgICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICAgICAgICAg
IGludCBtYXRjaEluZGV4OwotICAgICAgICAgICAgICAgIGludCBtYXRjaExlbiA9IDA7Ci0gICAg
ICAgICAgICAgICAgaW50KiBvdmVjdG9yOwotICAgICAgICAgICAgICAgIHJlZ0V4cENvbnN0cnVj
dG9yLT5wZXJmb3JtTWF0Y2goKmdsb2JhbERhdGEsIHJlZywgc291cmNlLCBzdGFydFBvc2l0aW9u
LCBtYXRjaEluZGV4LCBtYXRjaExlbiwgJm92ZWN0b3IpOwotICAgICAgICAgICAgICAgIGlmICht
YXRjaEluZGV4IDwgMCkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBp
ZiAoc291cmNlLmlzOEJpdCgpKSB7CisgICAgICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAg
ICAgICAgICAgICAgICAgICAgaW50IG1hdGNoSW5kZXg7CisgICAgICAgICAgICAgICAgICAgIGlu
dCBtYXRjaExlbiA9IDA7CisgICAgICAgICAgICAgICAgICAgIGludCogb3ZlY3RvcjsKKyAgICAg
ICAgICAgICAgICAgICAgcmVnRXhwQ29uc3RydWN0b3ItPnBlcmZvcm1NYXRjaCgqZ2xvYmFsRGF0
YSwgcmVnLCBzb3VyY2UsIHN0YXJ0UG9zaXRpb24sIG1hdGNoSW5kZXgsIG1hdGNoTGVuLCAmb3Zl
Y3Rvcik7CisgICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaEluZGV4IDwgMCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgICAgIHNvdXJjZVJhbmdl
cy5hcHBlbmQoU3RyaW5nUmFuZ2UobGFzdEluZGV4LCBtYXRjaEluZGV4IC0gbGFzdEluZGV4KSk7
CisKKyAgICAgICAgICAgICAgICAgICAgaW50IGNvbXBsZXRlTWF0Y2hTdGFydCA9IG92ZWN0b3Jb
MF07CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGkgPSAwOworICAgICAgICAgICAgICAg
ICAgICBmb3IgKDsgaSA8IHJlZy0+bnVtU3VicGF0dGVybnMoKSArIDE7ICsraSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IG1hdGNoU3RhcnQgPSBvdmVjdG9yW2kgKiAyXTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBtYXRjaExlbiA9IG92ZWN0b3JbaSAqIDIgKyAxXSAtIG1h
dGNoU3RhcnQ7CiAKLSAgICAgICAgICAgICAgICBzb3VyY2VSYW5nZXMuYXBwZW5kKFN0cmluZ1Jh
bmdlKGxhc3RJbmRleCwgbWF0Y2hJbmRleCAtIGxhc3RJbmRleCkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKG1hdGNoU3RhcnQgPCAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNhY2hlZENhbGwuc2V0QXJndW1lbnQoaSwganNVbmRlZmluZWQoKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVkQ2FsbC5z
ZXRBcmd1bWVudChpLCBqc1N1YnN0cmluZzgoZ2xvYmFsRGF0YSwgc291cmNlLCBtYXRjaFN0YXJ0
LCBtYXRjaExlbikpOworICAgICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBp
bnQgY29tcGxldGVNYXRjaFN0YXJ0ID0gb3ZlY3RvclswXTsKLSAgICAgICAgICAgICAgICB1bnNp
Z25lZCBpID0gMDsKLSAgICAgICAgICAgICAgICBmb3IgKDsgaSA8IHJlZy0+bnVtU3VicGF0dGVy
bnMoKSArIDE7ICsraSkgewotICAgICAgICAgICAgICAgICAgICBpbnQgbWF0Y2hTdGFydCA9IG92
ZWN0b3JbaSAqIDJdOwotICAgICAgICAgICAgICAgICAgICBpbnQgbWF0Y2hMZW4gPSBvdmVjdG9y
W2kgKiAyICsgMV0gLSBtYXRjaFN0YXJ0OworICAgICAgICAgICAgICAgICAgICBjYWNoZWRDYWxs
LnNldEFyZ3VtZW50KGkrKywganNOdW1iZXIoY29tcGxldGVNYXRjaFN0YXJ0KSk7CisgICAgICAg
ICAgICAgICAgICAgIGNhY2hlZENhbGwuc2V0QXJndW1lbnQoaSsrLCBzb3VyY2VWYWwpOwogCi0g
ICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaFN0YXJ0IDwgMCkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGNhY2hlZENhbGwuc2V0QXJndW1lbnQoaSwganNVbmRlZmluZWQoKSk7CisgICAgICAg
ICAgICAgICAgICAgIGNhY2hlZENhbGwuc2V0VGhpcyhqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBjYWNoZWRDYWxsLmNhbGwoKTsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKExJS0VMWShyZXN1bHQuaXNTdHJpbmcoKSkpCisgICAgICAgICAgICAg
ICAgICAgICAgICByZXBsYWNlbWVudHMuYXBwZW5kKGFzU3RyaW5nKHJlc3VsdCktPnZhbHVlKGV4
ZWMpKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAg
Y2FjaGVkQ2FsbC5zZXRBcmd1bWVudChpLCBqc1N1YnN0cmluZyhleGVjLCBzb3VyY2UsIG1hdGNo
U3RhcnQsIG1hdGNoTGVuKSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlbWVudHMu
YXBwZW5kKHJlc3VsdC50b1N0cmluZyhjYWNoZWRDYWxsLm5ld0NhbGxGcmFtZShleGVjKSkpOwor
ICAgICAgICAgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgICAgICBsYXN0SW5kZXggPSBt
YXRjaEluZGV4ICsgbWF0Y2hMZW47CisgICAgICAgICAgICAgICAgICAgIHN0YXJ0UG9zaXRpb24g
PSBsYXN0SW5kZXg7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gc3BlY2lhbCBjYXNlIG9mIGVt
cHR5IG1hdGNoCisgICAgICAgICAgICAgICAgICAgIGlmICghbWF0Y2hMZW4pIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHN0YXJ0UG9zaXRpb24rKzsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChzdGFydFBvc2l0aW9uID4gc291cmNlTGVuKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAg
ICAgICAgICAgICAgICBpbnQgbWF0Y2hJbmRleDsKKyAgICAgICAgICAgICAgICAgICAgaW50IG1h
dGNoTGVuID0gMDsKKyAgICAgICAgICAgICAgICAgICAgaW50KiBvdmVjdG9yOworICAgICAgICAg
ICAgICAgICAgICByZWdFeHBDb25zdHJ1Y3Rvci0+cGVyZm9ybU1hdGNoKCpnbG9iYWxEYXRhLCBy
ZWcsIHNvdXJjZSwgc3RhcnRQb3NpdGlvbiwgbWF0Y2hJbmRleCwgbWF0Y2hMZW4sICZvdmVjdG9y
KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoSW5kZXggPCAwKQorICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgICAgICBjYWNoZWRDYWxsLnNldEFyZ3Vt
ZW50KGkrKywganNOdW1iZXIoY29tcGxldGVNYXRjaFN0YXJ0KSk7Ci0gICAgICAgICAgICAgICAg
Y2FjaGVkQ2FsbC5zZXRBcmd1bWVudChpKyssIHNvdXJjZVZhbCk7CisgICAgICAgICAgICAgICAg
ICAgIHNvdXJjZVJhbmdlcy5hcHBlbmQoU3RyaW5nUmFuZ2UobGFzdEluZGV4LCBtYXRjaEluZGV4
IC0gbGFzdEluZGV4KSk7CiAKLSAgICAgICAgICAgICAgICBjYWNoZWRDYWxsLnNldFRoaXMoanNV
bmRlZmluZWQoKSk7Ci0gICAgICAgICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBjYWNoZWRDYWxs
LmNhbGwoKTsKLSAgICAgICAgICAgICAgICBpZiAoTElLRUxZKHJlc3VsdC5pc1N0cmluZygpKSkK
LSAgICAgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRzLmFwcGVuZChhc1N0cmluZyhyZXN1bHQp
LT52YWx1ZShleGVjKSk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAg
ICByZXBsYWNlbWVudHMuYXBwZW5kKHJlc3VsdC50b1N0cmluZyhjYWNoZWRDYWxsLm5ld0NhbGxG
cmFtZShleGVjKSkpOwotICAgICAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
LSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGludCBjb21w
bGV0ZU1hdGNoU3RhcnQgPSBvdmVjdG9yWzBdOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBpID0gMDsKKyAgICAgICAgICAgICAgICAgICAgZm9yICg7IGkgPCByZWctPm51bVN1YnBhdHRl
cm5zKCkgKyAxOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBtYXRjaFN0YXJ0
ID0gb3ZlY3RvcltpICogMl07CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWF0Y2hMZW4g
PSBvdmVjdG9yW2kgKiAyICsgMV0gLSBtYXRjaFN0YXJ0OwogCi0gICAgICAgICAgICAgICAgbGFz
dEluZGV4ID0gbWF0Y2hJbmRleCArIG1hdGNoTGVuOwotICAgICAgICAgICAgICAgIHN0YXJ0UG9z
aXRpb24gPSBsYXN0SW5kZXg7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2hTdGFy
dCA8IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRBcmd1bWVu
dChpLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjYWNoZWRDYWxsLnNldEFyZ3VtZW50KGksIGpzU3Vic3Ry
aW5nKGdsb2JhbERhdGEsIHNvdXJjZSwgbWF0Y2hTdGFydCwgbWF0Y2hMZW4pKTsKKyAgICAgICAg
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgLy8gc3BlY2lhbCBjYXNlIG9mIGVtcHR5
IG1hdGNoCi0gICAgICAgICAgICAgICAgaWYgKCFtYXRjaExlbikgewotICAgICAgICAgICAgICAg
ICAgICBzdGFydFBvc2l0aW9uKys7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzdGFydFBvc2l0
aW9uID4gc291cmNlTGVuKQorICAgICAgICAgICAgICAgICAgICBjYWNoZWRDYWxsLnNldEFyZ3Vt
ZW50KGkrKywganNOdW1iZXIoY29tcGxldGVNYXRjaFN0YXJ0KSk7CisgICAgICAgICAgICAgICAg
ICAgIGNhY2hlZENhbGwuc2V0QXJndW1lbnQoaSsrLCBzb3VyY2VWYWwpOworCisgICAgICAgICAg
ICAgICAgICAgIGNhY2hlZENhbGwuc2V0VGhpcyhqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBjYWNoZWRDYWxsLmNhbGwoKTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKExJS0VMWShyZXN1bHQuaXNTdHJpbmcoKSkpCisgICAgICAgICAgICAgICAg
ICAgICAgICByZXBsYWNlbWVudHMuYXBwZW5kKGFzU3RyaW5nKHJlc3VsdCktPnZhbHVlKGV4ZWMp
KTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgcmVw
bGFjZW1lbnRzLmFwcGVuZChyZXN1bHQudG9TdHJpbmcoY2FjaGVkQ2FsbC5uZXdDYWxsRnJhbWUo
ZXhlYykpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQog
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICAgICAgbGFz
dEluZGV4ID0gbWF0Y2hJbmRleCArIG1hdGNoTGVuOworICAgICAgICAgICAgICAgICAgICBzdGFy
dFBvc2l0aW9uID0gbGFzdEluZGV4OworCisgICAgICAgICAgICAgICAgICAgIC8vIHNwZWNpYWwg
Y2FzZSBvZiBlbXB0eSBtYXRjaAorICAgICAgICAgICAgICAgICAgICBpZiAoIW1hdGNoTGVuKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBzdGFydFBvc2l0aW9uKys7CisgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoc3RhcnRQb3NpdGlvbiA+IHNvdXJjZUxlbikKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKQEAgLTYxNSw4ICs3MTQsMTEg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogICAgIEpTVmFsdWUg
YTAgPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBpZiAoYTAuaXNVSW50MzIoKSkgewogICAgICAg
ICB1aW50MzJfdCBpID0gYTAuYXNVSW50MzIoKTsKLSAgICAgICAgaWYgKGkgPCBsZW4pCi0gICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHMuY2hhcmFjdGVycygpW2ld
KSk7CisgICAgICAgIGlmIChpIDwgbGVuKSB7CisgICAgICAgICAgICBpZiAocy5pczhCaXQoKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHMuY2hhcmFj
dGVyczgoKVtpXSkpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJl
cihzLmNoYXJhY3RlcnMxNigpW2ldKSk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc05hTigpKTsKICAgICB9CiAgICAgZG91YmxlIGRwb3MgPSBhMC50b0ludGVn
ZXIoZXhlYyk7Cg==
</data>
<flag name="review"
          id="114050"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>