<?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>42073</bug_id>
          
          <creation_ts>2010-07-12 05:52:43 -0700</creation_ts>
          <short_desc>CSS color parsing optimizations</short_desc>
          <delta_ts>2010-07-12 13:36: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>CSS</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="Andreas Kling">kling</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>249784</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-07-12 05:52:43 -0700</bug_when>
    <thetext>Currently, parseColor() creates a CSSParser every time it&apos;s called. This is not always necessary.

Also, the fast path for #RRGGBB (or #RGB) colors doesn&apos;t work for color strings actually starting with &apos;#&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249785</commentid>
    <comment_count>1</comment_count>
      <attachid>61214</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-07-12 05:54:44 -0700</bug_when>
    <thetext>Created attachment 61214
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249857</commentid>
    <comment_count>2</comment_count>
      <attachid>61214</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-07-12 08:38:18 -0700</bug_when>
    <thetext>Comment on attachment 61214
Proposed patch

Do you have perf measurements for this? There was a canvas perf test from hixie that the #color optimisation was made for, are we sure it doesn&apos;t work? or was it regressed at some point?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249860</commentid>
    <comment_count>3</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-07-12 08:44:11 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; was it regressed at some point?

This regressed with https://bugs.webkit.org/show_bug.cgi?id=38845 where I unintentionally removed your optimization from https://bugs.webkit.org/show_bug.cgi?id=3781</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249864</commentid>
    <comment_count>4</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-07-12 08:48:46 -0700</bug_when>
    <thetext>Hixies test: http://hixie.ch/tests/adhoc/perf/video/002.html

Without this patch (current trunk):

  Elapsed wall-clock time: 1325ms (ideal: 640ms).
  Elapsed non-idle time: 685ms (ideal: 0ms).
  Speed: 11.32fps (ideal: 25.00fps).

With this patch:

  Elapsed wall-clock time: 1011ms (ideal: 640ms).
  Elapsed non-idle time: 371ms (ideal: 0ms).
  Speed: 14.84fps (ideal: 25.00fps).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249889</commentid>
    <comment_count>5</comment_count>
      <attachid>61214</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-07-12 09:48:37 -0700</bug_when>
    <thetext>Comment on attachment 61214
Proposed patch

I would prefer it if you had a separate patch to revert the #color parsing regression</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249894</commentid>
    <comment_count>6</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-07-12 10:09:13 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; I would prefer it if you had a separate patch to revert the #color parsing regression

I&apos;m not sure we want to revert that. Condensing the color parsing to one call (CSSParser::parseColor()) from the Canvas side is still desirable IMO.

Better to fix parseColor() to take the appropriate fast-path instead of doing the Color(string) trick in a bunch of places.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249900</commentid>
    <comment_count>7</comment_count>
      <attachid>61243</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-07-12 10:30:19 -0700</bug_when>
    <thetext>Created attachment 61243
Proposed patch v2

Updated patch to also avoid allocating a new string when getting the RRGGBB (or RGB) part of a &apos;#&apos; color.

  Elapsed wall-clock time: 996ms (ideal: 640ms).
  Elapsed non-idle time: 356ms (ideal: 0ms).
  Speed: 15.06fps (ideal: 25.00fps).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249912</commentid>
    <comment_count>8</comment_count>
      <attachid>61243</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-07-12 11:01:07 -0700</bug_when>
    <thetext>Comment on attachment 61243
Proposed patch v2

Clearing flags on attachment: 61243

Committed r63099: &lt;http://trac.webkit.org/changeset/63099&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249913</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-07-12 11:01:12 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249981</commentid>
    <comment_count>10</comment_count>
      <attachid>61243</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-07-12 13:01:05 -0700</bug_when>
    <thetext>Comment on attachment 61243
Proposed patch v2

Adding an include of PlatformString.h to Color.h is not correct. Why was that done?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249984</commentid>
    <comment_count>11</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-07-12 13:06:39 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Adding an include of PlatformString.h to Color.h is not correct. Why was that done?

For UChar. What is the correct way?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249996</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-07-12 13:24:33 -0700</bug_when>
    <thetext>wtf/unicode/Unicode.h is how you get UChar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250012</commentid>
    <comment_count>13</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-07-12 13:36:17 -0700</bug_when>
    <thetext>Right, thanks. Filed bug 42109 with a fix.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61214</attachid>
            <date>2010-07-12 05:54:44 -0700</date>
            <delta_ts>2010-07-12 10:30:19 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>bug-42073.diff</filename>
            <type>text/plain</type>
            <size>2991</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZDg2ODVmZi4uZWM0Njk4YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0wNy0xMiAgQW5kcmVhcyBLbGlu
ZyAgPGFuZHJlYXMua2xpbmdAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIENTUyBjb2xvciBwYXJzaW5nIG9wdGltaXphdGlvbnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyMDczCisKKyAg
ICAgICAgLSBBdm9pZCBpbnN0YW50aWF0aW5nIGEgQ1NTUGFyc2VyIGluIHBhcnNlQ29sb3IoKSB1
bmxlc3MgbmVjZXNzYXJ5LgorICAgICAgICAtIEZpeGVkIGhleCBjb2xvciBmYXN0LXBhdGggdG8g
c3VwcG9ydCBzdHJpbmdzIHN0YXJ0aW5nIHdpdGggJyMnLgorCisgICAgICAgICogY3NzL0NTU1Bh
cnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQ29sb3IpOgorCiAy
MDEwLTA3LTEyICBGcmFuw6dvaXMgU2F1c3NldCAgPHNhdXNzZXRAZ21haWwuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKaW5k
ZXggNDZiYzE0ZC4uZGM3ODBjNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNw
cAorKysgYi9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCkBAIC0yOTEsMjEgKzI5MSwyMSBAQCBi
b29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogZGVj
bGFyYXRpb24sIGludCBpZCwgY29ucwogLy8gcG9zc2libGUgdG8gc2V0IHVwIGEgZGVmYXVsdCBj
b2xvci4KIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKFJHQkEzMiYgY29sb3IsIGNvbnN0IFN0
cmluZyYgc3RyaW5nLCBib29sIHN0cmljdCkKIHsKKyAgICAvLyBGaXJzdCB0cnkgY3JlYXRpbmcg
YSBjb2xvciBzcGVjaWZpZWQgYnkgbmFtZSwgcmdiKCkgb3IgIiMiIHN5bnRheC4KKyAgICBpZiAo
cGFyc2VDb2xvcihzdHJpbmcsIGNvbG9yLCBzdHJpY3QpKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KwogICAgIENTU1BhcnNlciBwYXJzZXIodHJ1ZSk7CisgICAgUmVmUHRyPENTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uPiBkdW1teVN0eWxlRGVjbGFyYXRpb24gPSBDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbjo6Y3JlYXRlKCk7CiAKLSAgICAvLyBGaXJzdCB0cnkgY3JlYXRpbmcgYSBjb2xvciBz
cGVjaWZpZWQgYnkgbmFtZSBvciB0aGUgIiMiIHN5bnRheC4KLSAgICBpZiAoIXBhcnNlci5wYXJz
ZUNvbG9yKHN0cmluZywgY29sb3IsIHN0cmljdCkpIHsKLSAgICAgICAgUmVmUHRyPENTU011dGFi
bGVTdHlsZURlY2xhcmF0aW9uPiBkdW1teVN0eWxlRGVjbGFyYXRpb24gPSBDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKCk7CisgICAgLy8gTm93IHRyeSB0byBjcmVhdGUgYSBjb2xv
ciBmcm9tIHJnYmEoKSBzeW50YXguCisgICAgaWYgKCFwYXJzZXIucGFyc2VDb2xvcihkdW1teVN0
eWxlRGVjbGFyYXRpb24uZ2V0KCksIHN0cmluZykpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgICAgICAvLyBOb3cgdHJ5IHRvIGNyZWF0ZSBhIGNvbG9yIGZyb20gdGhlIHJnYigpIG9yIHJn
YmEoKSBzeW50YXguCi0gICAgICAgIGlmIChwYXJzZXIucGFyc2VDb2xvcihkdW1teVN0eWxlRGVj
bGFyYXRpb24uZ2V0KCksIHN0cmluZykpIHsKLSAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9
IHBhcnNlci5tX3BhcnNlZFByb3BlcnRpZXNbMF0tPnZhbHVlKCk7Ci0gICAgICAgICAgICBpZiAo
dmFsdWUtPmNzc1ZhbHVlVHlwZSgpID09IENTU1ZhbHVlOjpDU1NfUFJJTUlUSVZFX1ZBTFVFKSB7
Ci0gICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgY29s
b3IgPSBwcmltaXRpdmVWYWx1ZS0+Z2V0UkdCQTMyVmFsdWUoKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgQ1NTVmFsdWUqIHZh
bHVlID0gcGFyc2VyLm1fcGFyc2VkUHJvcGVydGllc1swXS0+dmFsdWUoKTsKKyAgICBpZiAodmFs
dWUtPmNzc1ZhbHVlVHlwZSgpID09IENTU1ZhbHVlOjpDU1NfUFJJTUlUSVZFX1ZBTFVFKSB7Cisg
ICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOworICAgICAgICBjb2xvciA9IHByaW1pdGl2ZVZhbHVl
LT5nZXRSR0JBMzJWYWx1ZSgpOwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwpAQCAtMzcxNiw4
ICszNzE2LDExIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBwYXJzZUNvbG9ySW50KGNvbnN0IFVDaGFy
KiYgc3RyaW5nLCBjb25zdCBVQ2hhciogZW5kLCBVQ2hhciB0CiAKIGJvb2wgQ1NTUGFyc2VyOjpw
YXJzZUNvbG9yKGNvbnN0IFN0cmluZyAmbmFtZSwgUkdCQTMyJiByZ2IsIGJvb2wgc3RyaWN0KQog
ewotICAgIGlmICghc3RyaWN0ICYmIENvbG9yOjpwYXJzZUhleENvbG9yKG5hbWUsIHJnYikpCi0g
ICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICghc3RyaWN0KSB7CisgICAgICAgIGJvb2wgaGFz
UG91bmQgPSBuYW1lWzBdID09ICcjJzsKKyAgICAgICAgaWYgKENvbG9yOjpwYXJzZUhleENvbG9y
KGhhc1BvdW5kID8gbmFtZS5zdWJzdHJpbmcoMSkgOiBuYW1lLCByZ2IpKQorICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQogCiAgICAgLy8gVHJ5IHJnYigpIHN5bnRheC4KICAgICBpZiAo
bmFtZS5zdGFydHNXaXRoKCJyZ2IoIikpIHsK
</data>
<flag name="review"
          id="49199"
          type_id="1"
          status="-"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61243</attachid>
            <date>2010-07-12 10:30:19 -0700</date>
            <delta_ts>2010-07-12 13:01:05 -0700</delta_ts>
            <desc>Proposed patch v2</desc>
            <filename>bug-42073-v2.diff</filename>
            <type>text/plain</type>
            <size>6020</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MTlhYWJiZi4uN2U0NjIyNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyMyBAQAogMjAxMC0wNy0xMiAgQW5kcmVhcyBLbGlu
ZyAgPGFuZHJlYXMua2xpbmdAbm9raWEuY29tPgogCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIENTUyBjb2xvciBwYXJzaW5nIG9wdGltaXphdGlvbnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyMDczCisKKyAg
ICAgICAgLSBBdm9pZCBpbnN0YW50aWF0aW5nIGEgQ1NTUGFyc2VyIGluIHBhcnNlQ29sb3IoKSB1
bmxlc3MgbmVjZXNzYXJ5LgorICAgICAgICAtIEZpeGVkIGhleCBjb2xvciBmYXN0LXBhdGggdG8g
c3VwcG9ydCBzdHJpbmdzIHN0YXJ0aW5nIHdpdGggJyMnLgorICAgICAgICAtIEF2b2lkIGFsbG9j
YXRpbmcgYSBuZXcgc3RyaW5nIGZvciB0aGUgdmFsdWUgcGFydCBvZiBhICcjJyBjb2xvci4KKwor
ICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2Vy
OjpwYXJzZUNvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb2xvcjo6cGFyc2VIZXhDb2xvcik6CisgICAgICAgIChXZWJDb3Jl
OjpDb2xvcjo6Q29sb3IpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmg6CisK
KzIwMTAtMDctMTIgIEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNvbT4KKwog
ICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KIAogICAgICAgICBbUXRdIERyYWdn
aW5nIHdpdGhpbiB3ZWJraXQgd2l0aCBhIGRyYWcgY3JlYXRlZCB2aWEgSmF2YXNjcmlwdCBlbmRz
IHVwIG1pc2ludGVycHJldGluZyB0aGUgZGF0YQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyLmNwcCBiL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKaW5kZXggNDZiYzE0ZC4uZDkw
ZDBlZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysgYi9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXIuY3BwCkBAIC0yOTEsMjEgKzI5MSwyMSBAQCBib29sIENTU1BhcnNlcjo6
cGFyc2VWYWx1ZShDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogZGVjbGFyYXRpb24sIGludCBp
ZCwgY29ucwogLy8gcG9zc2libGUgdG8gc2V0IHVwIGEgZGVmYXVsdCBjb2xvci4KIGJvb2wgQ1NT
UGFyc2VyOjpwYXJzZUNvbG9yKFJHQkEzMiYgY29sb3IsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBi
b29sIHN0cmljdCkKIHsKKyAgICAvLyBGaXJzdCB0cnkgY3JlYXRpbmcgYSBjb2xvciBzcGVjaWZp
ZWQgYnkgbmFtZSwgcmdiKCkgb3IgIiMiIHN5bnRheC4KKyAgICBpZiAocGFyc2VDb2xvcihzdHJp
bmcsIGNvbG9yLCBzdHJpY3QpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwogICAgIENTU1BhcnNl
ciBwYXJzZXIodHJ1ZSk7CisgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBk
dW1teVN0eWxlRGVjbGFyYXRpb24gPSBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRl
KCk7CiAKLSAgICAvLyBGaXJzdCB0cnkgY3JlYXRpbmcgYSBjb2xvciBzcGVjaWZpZWQgYnkgbmFt
ZSBvciB0aGUgIiMiIHN5bnRheC4KLSAgICBpZiAoIXBhcnNlci5wYXJzZUNvbG9yKHN0cmluZywg
Y29sb3IsIHN0cmljdCkpIHsKLSAgICAgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uPiBkdW1teVN0eWxlRGVjbGFyYXRpb24gPSBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6
Y3JlYXRlKCk7CisgICAgLy8gTm93IHRyeSB0byBjcmVhdGUgYSBjb2xvciBmcm9tIHJnYmEoKSBz
eW50YXguCisgICAgaWYgKCFwYXJzZXIucGFyc2VDb2xvcihkdW1teVN0eWxlRGVjbGFyYXRpb24u
Z2V0KCksIHN0cmluZykpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICAvLyBOb3cg
dHJ5IHRvIGNyZWF0ZSBhIGNvbG9yIGZyb20gdGhlIHJnYigpIG9yIHJnYmEoKSBzeW50YXguCi0g
ICAgICAgIGlmIChwYXJzZXIucGFyc2VDb2xvcihkdW1teVN0eWxlRGVjbGFyYXRpb24uZ2V0KCks
IHN0cmluZykpIHsKLSAgICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IHBhcnNlci5tX3BhcnNl
ZFByb3BlcnRpZXNbMF0tPnZhbHVlKCk7Ci0gICAgICAgICAgICBpZiAodmFsdWUtPmNzc1ZhbHVl
VHlwZSgpID09IENTU1ZhbHVlOjpDU1NfUFJJTUlUSVZFX1ZBTFVFKSB7Ci0gICAgICAgICAgICAg
ICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWUqPih2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgY29sb3IgPSBwcmltaXRpdmVW
YWx1ZS0+Z2V0UkdCQTMyVmFsdWUoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgQ1NTVmFsdWUqIHZhbHVlID0gcGFyc2VyLm1f
cGFyc2VkUHJvcGVydGllc1swXS0+dmFsdWUoKTsKKyAgICBpZiAodmFsdWUtPmNzc1ZhbHVlVHlw
ZSgpID09IENTU1ZhbHVlOjpDU1NfUFJJTUlUSVZFX1ZBTFVFKSB7CisgICAgICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Kj4odmFsdWUpOworICAgICAgICBjb2xvciA9IHByaW1pdGl2ZVZhbHVlLT5nZXRSR0JBMzJWYWx1
ZSgpOwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwpAQCAtMzcxNiwxMyArMzcxNiwyMyBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgcGFyc2VDb2xvckludChjb25zdCBVQ2hhciomIHN0cmluZywgY29u
c3QgVUNoYXIqIGVuZCwgVUNoYXIgdAogCiBib29sIENTU1BhcnNlcjo6cGFyc2VDb2xvcihjb25z
dCBTdHJpbmcgJm5hbWUsIFJHQkEzMiYgcmdiLCBib29sIHN0cmljdCkKIHsKLSAgICBpZiAoIXN0
cmljdCAmJiBDb2xvcjo6cGFyc2VIZXhDb2xvcihuYW1lLCByZ2IpKQotICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9IG5hbWUuY2hhcmFjdGVycygpOwor
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IG5hbWUubGVuZ3RoKCk7CisKKyAgICBpZiAoIXN0cmljdCAm
JiBsZW5ndGggPj0gMykgeworICAgICAgICBpZiAobmFtZVswXSA9PSAnIycpIHsKKyAgICAgICAg
ICAgIGlmIChDb2xvcjo6cGFyc2VIZXhDb2xvcihjaGFyYWN0ZXJzICsgMSwgbGVuZ3RoIC0gMSwg
cmdiKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIGlmIChDb2xvcjo6cGFyc2VIZXhDb2xvcihjaGFyYWN0ZXJzLCBsZW5ndGgsIHJn
YikpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CiAKICAg
ICAvLyBUcnkgcmdiKCkgc3ludGF4LgogICAgIGlmIChuYW1lLnN0YXJ0c1dpdGgoInJnYigiKSkg
ewotICAgICAgICBjb25zdCBVQ2hhciogY3VycmVudCA9IG5hbWUuY2hhcmFjdGVycygpICsgNDsK
LSAgICAgICAgY29uc3QgVUNoYXIqIGVuZCA9IG5hbWUuY2hhcmFjdGVycygpICsgbmFtZS5sZW5n
dGgoKTsKKyAgICAgICAgY29uc3QgVUNoYXIqIGN1cnJlbnQgPSBjaGFyYWN0ZXJzICsgNDsKKyAg
ICAgICAgY29uc3QgVUNoYXIqIGVuZCA9IGNoYXJhY3RlcnMgKyBsZW5ndGg7CiAgICAgICAgIGlu
dCByZWQ7CiAgICAgICAgIGludCBncmVlbjsKICAgICAgICAgaW50IGJsdWU7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQ29sb3IuY3BwCmluZGV4IDJmMmEzNTcuLjgyM2MwYmEgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQ29sb3IuY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiQ29sb3IuaCIKIAotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5j
bHVkZSA8bWF0aC5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3Rm
L01hdGhFeHRyYXMuaD4KQEAgLTEyNiw5ICsxMjUsOCBAQCBSR0JBMzIgbWFrZVJHQkFGcm9tQ01Z
S0EoZmxvYXQgYywgZmxvYXQgbSwgZmxvYXQgeSwgZmxvYXQgaywgZmxvYXQgYSkKIH0KIAogLy8g
b3JpZ2luYWxseSBtb3ZlZCBoZXJlIGZyb20gdGhlIENTUyBwYXJzZXIKLWJvb2wgQ29sb3I6OnBh
cnNlSGV4Q29sb3IoY29uc3QgU3RyaW5nJiBuYW1lLCBSR0JBMzImIHJnYikKK2Jvb2wgQ29sb3I6
OnBhcnNlSGV4Q29sb3IoY29uc3QgVUNoYXIqIG5hbWUsIHVuc2lnbmVkIGxlbmd0aCwgUkdCQTMy
JiByZ2IpCiB7Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gbmFtZS5sZW5ndGgoKTsKICAgICBpZiAo
bGVuZ3RoICE9IDMgJiYgbGVuZ3RoICE9IDYpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB1
bnNpZ25lZCB2YWx1ZSA9IDA7CkBAIC0xNTAsNiArMTQ4LDExIEBAIGJvb2wgQ29sb3I6OnBhcnNl
SGV4Q29sb3IoY29uc3QgU3RyaW5nJiBuYW1lLCBSR0JBMzImIHJnYikKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAorYm9vbCBDb2xvcjo6cGFyc2VIZXhDb2xvcihjb25zdCBTdHJpbmcmIG5hbWUsIFJH
QkEzMiYgcmdiKQoreworICAgIHJldHVybiBwYXJzZUhleENvbG9yKG5hbWUuY2hhcmFjdGVycygp
LCBuYW1lLmxlbmd0aCgpLCByZ2IpOworfQorCiBpbnQgZGlmZmVyZW5jZVNxdWFyZWQoY29uc3Qg
Q29sb3ImIGMxLCBjb25zdCBDb2xvciYgYzIpCiB7CiAgICAgaW50IGRSID0gYzEucmVkKCkgLSBj
Mi5yZWQoKTsKQEAgLTE2MCw4ICsxNjMsOCBAQCBpbnQgZGlmZmVyZW5jZVNxdWFyZWQoY29uc3Qg
Q29sb3ImIGMxLCBjb25zdCBDb2xvciYgYzIpCiAKIENvbG9yOjpDb2xvcihjb25zdCBTdHJpbmcm
IG5hbWUpCiB7Ci0gICAgaWYgKG5hbWUuc3RhcnRzV2l0aCgiIyIpKQotICAgICAgICBtX3ZhbGlk
ID0gcGFyc2VIZXhDb2xvcihuYW1lLnN1YnN0cmluZygxKSwgbV9jb2xvcik7CisgICAgaWYgKG5h
bWVbMF0gPT0gJyMnKQorICAgICAgICBtX3ZhbGlkID0gcGFyc2VIZXhDb2xvcihuYW1lLmNoYXJh
Y3RlcnMoKSArIDEsIG5hbWUubGVuZ3RoKCkgLSAxLCBtX2NvbG9yKTsKICAgICBlbHNlCiAgICAg
ICAgIHNldE5hbWVkQ29sb3IobmFtZSk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbG9yLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgKaW5k
ZXggZDE4MjIwMS4uNGNiNjU4NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db2xvci5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaApAQCAtMjYs
NiArMjYsNyBAQAogI2lmbmRlZiBDb2xvcl9oCiAjZGVmaW5lIENvbG9yX2gKIAorI2luY2x1ZGUg
IlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4KIAogI2lm
IFBMQVRGT1JNKENHKQpAQCAtNTMsNyArNTQsNiBAQCBzdHJ1Y3QgcmdiX2NvbG9yOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFN0cmluZzsKIGNsYXNzIENvbG9yOwogCiB0eXBlZGVm
IHVuc2lnbmVkIFJHQkEzMjsgICAgICAgIC8vIFJHQkEgcXVhZHJ1cGxldApAQCAtMTM1LDYgKzEz
NSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgc3RhdGljIGJvb2wgcGFyc2VIZXhDb2xvcihj
b25zdCBTdHJpbmcmIG5hbWUsIFJHQkEzMiYgcmdiKTsKKyAgICBzdGF0aWMgYm9vbCBwYXJzZUhl
eENvbG9yKGNvbnN0IFVDaGFyKiBuYW1lLCB1bnNpZ25lZCBsZW5ndGgsIFJHQkEzMiYgcmdiKTsK
IAogICAgIHN0YXRpYyBjb25zdCBSR0JBMzIgYmxhY2sgPSAweEZGMDAwMDAwOwogICAgIHN0YXRp
YyBjb25zdCBSR0JBMzIgd2hpdGUgPSAweEZGRkZGRkZGOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>