<?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>137701</bug_id>
          
          <creation_ts>2014-10-14 10:36:45 -0700</creation_ts>
          <short_desc>[Mac] Avoid unnecessary dictionary lookup in ImageSource::isSizeAvailable()</short_desc>
          <delta_ts>2014-10-14 16:05:53 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>137723</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>kling</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1041600</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-14 10:36:45 -0700</bug_when>
    <thetext>The CG implementation of ImageSource::isSizeAvailable() currently looks up both the width and the height keys in the dictionary even though it can abort early (and return false) if the first key is not in the dictionary.
Aborting early here is a small win but ImageSource::isSizeAvailable() is called quite frequently during page loads.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041602</commentid>
    <comment_count>1</comment_count>
      <attachid>239805</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-14 10:40:59 -0700</bug_when>
    <thetext>Created attachment 239805
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041614</commentid>
    <comment_count>2</comment_count>
      <attachid>239805</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-10-14 11:13:47 -0700</bug_when>
    <thetext>Comment on attachment 239805
Patch

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

&gt; Source/WebCore/platform/graphics/cg/ImageSourceCG.cpp:-187
&gt; -    // Ragnaros yells: TOO SOON! You have awakened me TOO SOON, Executus!

Hyatt/Tim will be very sad this comment is gone.

&gt; Source/WebCore/platform/graphics/cg/ImageSourceCG.cpp:192
&gt; +    return CFDictionaryGetValue(image0Properties.get(), kCGImagePropertyPixelWidth)
&gt; +        &amp;&amp; CFDictionaryGetValue(image0Properties.get(), kCGImagePropertyPixelHeight);

This is a behavior change; you&apos;re no longer considering the value of these properties. Is that OK?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041622</commentid>
    <comment_count>3</comment_count>
      <attachid>239805</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-14 11:36:06 -0700</bug_when>
    <thetext>Comment on attachment 239805
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/cg/ImageSourceCG.cpp:-187
&gt;&gt; -    // Ragnaros yells: TOO SOON! You have awakened me TOO SOON, Executus!
&gt; 
&gt; Hyatt/Tim will be very sad this comment is gone.

Oh sorry about that, I am happy to leave it :)

&gt;&gt; Source/WebCore/platform/graphics/cg/ImageSourceCG.cpp:192
&gt;&gt; +        &amp;&amp; CFDictionaryGetValue(image0Properties.get(), kCGImagePropertyPixelHeight);
&gt; 
&gt; This is a behavior change; you&apos;re no longer considering the value of these properties. Is that OK?

Oh, if I changed behavior, this was not intentional. All I did is remove casts from void* to CFNumberRef, right? Why does this impact behavior?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041624</commentid>
    <comment_count>4</comment_count>
      <attachid>239805</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-10-14 11:39:59 -0700</bug_when>
    <thetext>Comment on attachment 239805
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/graphics/cg/ImageSourceCG.cpp:192
&gt;&gt;&gt; +        &amp;&amp; CFDictionaryGetValue(image0Properties.get(), kCGImagePropertyPixelHeight);
&gt;&gt; 
&gt;&gt; This is a behavior change; you&apos;re no longer considering the value of these properties. Is that OK?
&gt; 
&gt; Oh, if I changed behavior, this was not intentional. All I did is remove casts from void* to CFNumberRef, right? Why does this impact behavior?

You removed the result = widthNumber &amp;&amp; heightNumber;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041625</commentid>
    <comment_count>5</comment_count>
      <attachid>239810</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-14 11:40:06 -0700</bug_when>
    <thetext>Created attachment 239810
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041626</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-14 11:42:10 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 239805 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=239805&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/platform/graphics/cg/ImageSourceCG.cpp:192
&gt; &gt;&gt;&gt; +        &amp;&amp; CFDictionaryGetValue(image0Properties.get(), kCGImagePropertyPixelHeight);
&gt; &gt;&gt; 
&gt; &gt;&gt; This is a behavior change; you&apos;re no longer considering the value of these properties. Is that OK?
&gt; &gt; 
&gt; &gt; Oh, if I changed behavior, this was not intentional. All I did is remove casts from void* to CFNumberRef, right? Why does this impact behavior?
&gt; 
&gt; You removed the result = widthNumber &amp;&amp; heightNumber;

Right, but widthNumber and heightNumber are CFNumberRef. Those are pointers, right? (I don&apos;t know much about those types). My understanding is that now I am doing (void*) &amp;&amp; (void*) instead of CFNumberRef &amp;&amp; CFNumberRef. I thought this was equivalent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041628</commentid>
    <comment_count>7</comment_count>
      <attachid>239810</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-10-14 11:44:04 -0700</bug_when>
    <thetext>Comment on attachment 239810
Patch

You&apos;re right, I was confused.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041646</commentid>
    <comment_count>8</comment_count>
      <attachid>239810</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-14 12:24:34 -0700</bug_when>
    <thetext>Comment on attachment 239810
Patch

Clearing flags on attachment: 239810

Committed r174695: &lt;http://trac.webkit.org/changeset/174695&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041647</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-14 12:24:40 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041709</commentid>
    <comment_count>10</comment_count>
      <attachid>239810</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-10-14 15:55:18 -0700</bug_when>
    <thetext>Comment on attachment 239810
Patch

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

&gt; Source/WebCore/ChangeLog:15
&gt; +        This is a small win but ImageSource::isSizeAvailable() is called quite
&gt; +        frequently during page loads

We could also cache this boolean as long as we come up with some way to invalidate the cache when we pump more data into the decoder.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041710</commentid>
    <comment_count>11</comment_count>
      <attachid>239810</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-10-14 15:57:36 -0700</bug_when>
    <thetext>Comment on attachment 239810
Patch

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

&gt; Source/WebCore/platform/graphics/cg/ImageSourceCG.cpp:193
&gt; +    return CFDictionaryGetValue(image0Properties.get(), kCGImagePropertyPixelWidth)
&gt; +        &amp;&amp; CFDictionaryGetValue(image0Properties.get(), kCGImagePropertyPixelHeight);

Since we are just checking if the dictionary contains a value, there’s a chance that CFDictionaryContainsValue might be slightly faster than CFDictionaryGetValue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041711</commentid>
    <comment_count>12</comment_count>
      <attachid>239810</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-14 15:59:12 -0700</bug_when>
    <thetext>Comment on attachment 239810
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:15
&gt;&gt; +        frequently during page loads
&gt; 
&gt; We could also cache this boolean as long as we come up with some way to invalidate the cache when we pump more data into the decoder.

Oh, the boolean is already cached in BitmapImage class. But every time there is new image data available and m_sizeAvailable is false, we end up calling ImageSource::isSizeAvailable(), which makes sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041712</commentid>
    <comment_count>13</comment_count>
      <attachid>239810</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-14 16:00:47 -0700</bug_when>
    <thetext>Comment on attachment 239810
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/cg/ImageSourceCG.cpp:193
&gt;&gt; +        &amp;&amp; CFDictionaryGetValue(image0Properties.get(), kCGImagePropertyPixelHeight);
&gt; 
&gt; Since we are just checking if the dictionary contains a value, there’s a chance that CFDictionaryContainsValue might be slightly faster than CFDictionaryGetValue.

I guess you mean CFDictionaryContainsKey(). That&apos;s a good point, it is a bit cleaner.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239805</attachid>
            <date>2014-10-14 10:40:59 -0700</date>
            <delta_ts>2014-10-14 11:40:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137701-20141014104103.patch</filename>
            <type>text/plain</type>
            <size>3049</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0Njg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzAzYWNmMWUwNDQ4OTc3
M2UyNWQ3MGM3ZjE1OGVlNDRmMGI1NTFhMi4uMTVjMWQ4MDllZWFhMGU4MDAxNjFiOTc1YThjYTNi
NGZkYWJhMjkwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE0LTEwLTE0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW01hY10gQXZvaWQgdW5uZWNl
c3NhcnkgZGljdGlvbmFyeSBsb29rdXAgaW4gSW1hZ2VTb3VyY2U6OmlzU2l6ZUF2YWlsYWJsZSgp
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzc3MDEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgQ0cg
aW1wbGVtZW50YXRpb24gb2YgSW1hZ2VTb3VyY2U6OmlzU2l6ZUF2YWlsYWJsZSgpIHdhcyBsb29r
aW5nIHVwCisgICAgICAgIGJvdGggdGhlIHdpZHRoIGFuZCB0aGUgaGVpZ2h0IGtleXMgaW4gdGhl
IGRpY3Rpb25hcnkgYmVmb3JlIGRldGVybWluaW5nCisgICAgICAgIGlmIHRoZSBzaXplIGlzIGF2
YWlsYWJsZS4gV2UgY2FuIGFib3J0IGVhcmx5IGFuZCByZXR1cm4gZmFsc2UgaWYgdGhlCisgICAg
ICAgIGZpcnN0IGtleSAodGhlIHdpZHRoKSBpcyBtaXNzaW5nLCB0aHVzIGF2b2lkaW5nIGFuIGV4
dHJhIGRpY3Rpb25hcnkKKyAgICAgICAgbG9va3VwIGluIHRoaXMgY2FzZS4KKworICAgICAgICBU
aGlzIGlzIGEgc21hbGwgd2luIGJ1dCBJbWFnZVNvdXJjZTo6aXNTaXplQXZhaWxhYmxlKCkgaXMg
Y2FsbGVkIHF1aXRlCisgICAgICAgIGZyZXF1ZW50bHkgZHVyaW5nIHBhZ2UgbG9hZHMKKworICAg
ICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VTb3VyY2U6OmlzU2l6ZUF2YWlsYWJsZSk6CisKIDIwMTQtMTAtMTQgIFlvdWVubiBGYWJsZXQg
IDx5b3Vlbm5mQGdtYWlsLmNvbT4KIAogICAgICAgICBbWEhSXSBBYm9ydCBtZXRob2QgZXhlY3V0
aW9uIHdoZW4gbV9sb2FkZXItPmNhbmNlbCgpIGluIGludGVybmFsQWJvcnQoKSBjYXVzZWQgcmVl
bnRyeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VTb3VyY2VDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZVNvdXJjZUNHLmNwcAppbmRleCA0NDRiZDk3NmY4OTkyZGMzYTQ3ZjRmOTI3MWMyMzUyMzg2MGMz
ODQyLi5kMDEzNGI0YmU4YTA5NmRhNzBlMTg3YTc3MjFmNjA0OTMzMTJjY2JlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNw
cApAQCAtMTgxLDIwICsxODEsMTUgQEAgU3Vic2FtcGxpbmdMZXZlbCBJbWFnZVNvdXJjZTo6c3Vi
c2FtcGxpbmdMZXZlbEZvclNjYWxlKGZsb2F0IHNjYWxlKSBjb25zdAogCiBib29sIEltYWdlU291
cmNlOjppc1NpemVBdmFpbGFibGUoKQogewotICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAg
Q0dJbWFnZVNvdXJjZVN0YXR1cyBpbWFnZVNvdXJjZVN0YXR1cyA9IENHSW1hZ2VTb3VyY2VHZXRT
dGF0dXMobV9kZWNvZGVyKTsKLQotICAgIC8vIFJhZ25hcm9zIHllbGxzOiBUT08gU09PTiEgWW91
IGhhdmUgYXdha2VuZWQgbWUgVE9PIFNPT04sIEV4ZWN1dHVzIQotICAgIGlmIChpbWFnZVNvdXJj
ZVN0YXR1cyA+PSBrQ0dJbWFnZVN0YXR1c0luY29tcGxldGUpIHsKLSAgICAgICAgUmV0YWluUHRy
PENGRGljdGlvbmFyeVJlZj4gaW1hZ2UwUHJvcGVydGllcyA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJj
ZUNvcHlQcm9wZXJ0aWVzQXRJbmRleChtX2RlY29kZXIsIDAsIGltYWdlU291cmNlT3B0aW9ucygp
LmdldCgpKSk7Ci0gICAgICAgIGlmIChpbWFnZTBQcm9wZXJ0aWVzKSB7Ci0gICAgICAgICAgICBD
Rk51bWJlclJlZiB3aWR0aE51bWJlciA9IChDRk51bWJlclJlZilDRkRpY3Rpb25hcnlHZXRWYWx1
ZShpbWFnZTBQcm9wZXJ0aWVzLmdldCgpLCBrQ0dJbWFnZVByb3BlcnR5UGl4ZWxXaWR0aCk7Ci0g
ICAgICAgICAgICBDRk51bWJlclJlZiBoZWlnaHROdW1iZXIgPSAoQ0ZOdW1iZXJSZWYpQ0ZEaWN0
aW9uYXJ5R2V0VmFsdWUoaW1hZ2UwUHJvcGVydGllcy5nZXQoKSwga0NHSW1hZ2VQcm9wZXJ0eVBp
eGVsSGVpZ2h0KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHdpZHRoTnVtYmVyICYmIGhlaWdodE51
bWJlcjsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICByZXR1cm4gcmVzdWx0OworICAgIGlm
IChDR0ltYWdlU291cmNlR2V0U3RhdHVzKG1fZGVjb2RlcikgPCBrQ0dJbWFnZVN0YXR1c0luY29t
cGxldGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFJldGFpblB0cjxDRkRpY3Rpb25h
cnlSZWY+IGltYWdlMFByb3BlcnRpZXMgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDb3B5UHJvcGVy
dGllc0F0SW5kZXgobV9kZWNvZGVyLCAwLCBpbWFnZVNvdXJjZU9wdGlvbnMoKS5nZXQoKSkpOwor
ICAgIGlmICghaW1hZ2UwUHJvcGVydGllcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
cmV0dXJuIENGRGljdGlvbmFyeUdldFZhbHVlKGltYWdlMFByb3BlcnRpZXMuZ2V0KCksIGtDR0lt
YWdlUHJvcGVydHlQaXhlbFdpZHRoKQorICAgICAgICAmJiBDRkRpY3Rpb25hcnlHZXRWYWx1ZShp
bWFnZTBQcm9wZXJ0aWVzLmdldCgpLCBrQ0dJbWFnZVByb3BlcnR5UGl4ZWxIZWlnaHQpOwogfQog
CiBzdGF0aWMgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbkZyb21Qcm9wZXJ0aWVzKENGRGlj
dGlvbmFyeVJlZiBpbWFnZVByb3BlcnRpZXMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239810</attachid>
            <date>2014-10-14 11:40:06 -0700</date>
            <delta_ts>2014-10-14 16:00:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137701-20141014114010.patch</filename>
            <type>text/plain</type>
            <size>3076</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0Njg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmZkMjcyNDEwYmE2MGFm
N2ZiMzI2Njc0MGJjMDNhZDQyNTc1N2FjOS4uMGVmOTllMWViNGZlYmI4NTg0YTgxMTdkYTFkNGRi
YzY4Y2NiMWY3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI2IEBACiAyMDE0LTEwLTE0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgW01hY10gQXZvaWQgdW5uZWNl
c3NhcnkgZGljdGlvbmFyeSBsb29rdXAgaW4gSW1hZ2VTb3VyY2U6OmlzU2l6ZUF2YWlsYWJsZSgp
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzc3MDEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgQ0cg
aW1wbGVtZW50YXRpb24gb2YgSW1hZ2VTb3VyY2U6OmlzU2l6ZUF2YWlsYWJsZSgpIHdhcyBsb29r
aW5nIHVwCisgICAgICAgIGJvdGggdGhlIHdpZHRoIGFuZCB0aGUgaGVpZ2h0IGtleXMgaW4gdGhl
IGRpY3Rpb25hcnkgYmVmb3JlIGRldGVybWluaW5nCisgICAgICAgIGlmIHRoZSBzaXplIGlzIGF2
YWlsYWJsZS4gV2UgY2FuIGFib3J0IGVhcmx5IGFuZCByZXR1cm4gZmFsc2UgaWYgdGhlCisgICAg
ICAgIGZpcnN0IGtleSAodGhlIHdpZHRoKSBpcyBtaXNzaW5nLCB0aHVzIGF2b2lkaW5nIGFuIGV4
dHJhIGRpY3Rpb25hcnkKKyAgICAgICAgbG9va3VwIGluIHRoaXMgY2FzZS4KKworICAgICAgICBU
aGlzIGlzIGEgc21hbGwgd2luIGJ1dCBJbWFnZVNvdXJjZTo6aXNTaXplQXZhaWxhYmxlKCkgaXMg
Y2FsbGVkIHF1aXRlCisgICAgICAgIGZyZXF1ZW50bHkgZHVyaW5nIHBhZ2UgbG9hZHMKKworICAg
ICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VTb3VyY2U6OmlzU2l6ZUF2YWlsYWJsZSk6CisKKzIwMTQtMTAtMTQgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KKwogICAgICAgICBVc2UgaXM8PigpIC8gZG93bmNhc3Q8PigpIGZv
ciBSZW5kZXJGcmFtZSAvIFJlbmRlckZyYW1lU2V0CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzc2OTYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcAppbmRleCA0NDRiZDk3NmY4
OTkyZGMzYTQ3ZjRmOTI3MWMyMzUyMzg2MGMzODQyLi40Nzk3ZWI1NWM0ZWYxNTcwMDQwODQ1Yjk5
Zjc0YWJkN2ViODEzNzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcApAQCAtMTgxLDIwICsxODEsMTYgQEAgU3Vic2Ft
cGxpbmdMZXZlbCBJbWFnZVNvdXJjZTo6c3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKGZsb2F0IHNj
YWxlKSBjb25zdAogCiBib29sIEltYWdlU291cmNlOjppc1NpemVBdmFpbGFibGUoKQogewotICAg
IGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgQ0dJbWFnZVNvdXJjZVN0YXR1cyBpbWFnZVNvdXJj
ZVN0YXR1cyA9IENHSW1hZ2VTb3VyY2VHZXRTdGF0dXMobV9kZWNvZGVyKTsKLQogICAgIC8vIFJh
Z25hcm9zIHllbGxzOiBUT08gU09PTiEgWW91IGhhdmUgYXdha2VuZWQgbWUgVE9PIFNPT04sIEV4
ZWN1dHVzIQotICAgIGlmIChpbWFnZVNvdXJjZVN0YXR1cyA+PSBrQ0dJbWFnZVN0YXR1c0luY29t
cGxldGUpIHsKLSAgICAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gaW1hZ2UwUHJvcGVy
dGllcyA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNvcHlQcm9wZXJ0aWVzQXRJbmRleChtX2RlY29k
ZXIsIDAsIGltYWdlU291cmNlT3B0aW9ucygpLmdldCgpKSk7Ci0gICAgICAgIGlmIChpbWFnZTBQ
cm9wZXJ0aWVzKSB7Ci0gICAgICAgICAgICBDRk51bWJlclJlZiB3aWR0aE51bWJlciA9IChDRk51
bWJlclJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShpbWFnZTBQcm9wZXJ0aWVzLmdldCgpLCBrQ0dJ
bWFnZVByb3BlcnR5UGl4ZWxXaWR0aCk7Ci0gICAgICAgICAgICBDRk51bWJlclJlZiBoZWlnaHRO
dW1iZXIgPSAoQ0ZOdW1iZXJSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoaW1hZ2UwUHJvcGVydGll
cy5nZXQoKSwga0NHSW1hZ2VQcm9wZXJ0eVBpeGVsSGVpZ2h0KTsKLSAgICAgICAgICAgIHJlc3Vs
dCA9IHdpZHRoTnVtYmVyICYmIGhlaWdodE51bWJlcjsKLSAgICAgICAgfQotICAgIH0KLSAgICAK
LSAgICByZXR1cm4gcmVzdWx0OworICAgIGlmIChDR0ltYWdlU291cmNlR2V0U3RhdHVzKG1fZGVj
b2RlcikgPCBrQ0dJbWFnZVN0YXR1c0luY29tcGxldGUpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGltYWdlMFByb3BlcnRpZXMgPSBhZG9w
dENGKENHSW1hZ2VTb3VyY2VDb3B5UHJvcGVydGllc0F0SW5kZXgobV9kZWNvZGVyLCAwLCBpbWFn
ZVNvdXJjZU9wdGlvbnMoKS5nZXQoKSkpOworICAgIGlmICghaW1hZ2UwUHJvcGVydGllcykKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIENGRGljdGlvbmFyeUdldFZhbHVlKGlt
YWdlMFByb3BlcnRpZXMuZ2V0KCksIGtDR0ltYWdlUHJvcGVydHlQaXhlbFdpZHRoKQorICAgICAg
ICAmJiBDRkRpY3Rpb25hcnlHZXRWYWx1ZShpbWFnZTBQcm9wZXJ0aWVzLmdldCgpLCBrQ0dJbWFn
ZVByb3BlcnR5UGl4ZWxIZWlnaHQpOwogfQogCiBzdGF0aWMgSW1hZ2VPcmllbnRhdGlvbiBvcmll
bnRhdGlvbkZyb21Qcm9wZXJ0aWVzKENGRGljdGlvbmFyeVJlZiBpbWFnZVByb3BlcnRpZXMpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>