<?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>99887</bug_id>
          
          <creation_ts>2012-10-19 16:40:59 -0700</creation_ts>
          <short_desc>[CSS Shaders] Changing the blend mode in CSS doesn&apos;t update the custom filter rendering</short_desc>
          <delta_ts>2012-10-23 14:24:25 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</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>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>71392</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Max Vujovic">mvujovic</reporter>
          <assigned_to name="Max Vujovic">mvujovic</assigned_to>
          <cc>achicu</cc>
    
    <cc>dino</cc>
    
    <cc>eric</cc>
    
    <cc>krit</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>746759</commentid>
    <comment_count>0</comment_count>
    <who name="Max Vujovic">mvujovic</who>
    <bug_when>2012-10-19 16:40:59 -0700</bug_when>
    <thetext>Suppose an element initially has the style:
-webkit-filter: custom(none mix(url(shader.fs) normal source-atop));

Then, we change the blend mode from &quot;normal&quot; to &quot;multiply&quot;:
-webkit-filter: custom(none mix(url(shader.fs) multiply source-atop));

The element&apos;s appearance should change, but it doesn&apos;t.

I&apos;ve got a patch coming up for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747716</commentid>
    <comment_count>1</comment_count>
      <attachid>169946</attachid>
    <who name="Max Vujovic">mvujovic</who>
    <bug_when>2012-10-22 11:27:56 -0700</bug_when>
    <thetext>Created attachment 169946
Patch

I&apos;d like some feedback on the use of setTimeout(..., 0) in the test. In DRT, I want to make sure we render the custom filter with its original style once, and then we change the style. I&apos;m not sure about the best way to do this in DRT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747802</commentid>
    <comment_count>2</comment_count>
      <attachid>169946</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-10-22 13:10:17 -0700</bug_when>
    <thetext>Comment on attachment 169946
Patch

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

Looks good, Max!

&gt; LayoutTests/css3/filters/custom/custom-filter-change-blend-mode.html:28
&gt; +            document.getElementById(&quot;shaded&quot;).style.webkitFilter = &quot;custom(none mix(url(&apos;../resources/mix-color.fs&apos;) normal source-atop), mix_color 0 1 0 1)&quot;;

I would use a class name instead, just to keep the CSS code out of JS.

&gt; Source/WebCore/ChangeLog:8
&gt; +        Before this patch, WebKit would not rerender a custom filter when its blend mode changed.

What about using repaint instead of rerender?

&gt; Source/WebCore/platform/graphics/filters/CustomFilterProgram.cpp:94
&gt; +    if (m_programType == PROGRAM_TYPE_BLENDS_ELEMENT_TEXTURE &amp;&amp; m_mixSettings != o.m_mixSettings)
&gt; +        return false;
&gt; +
&gt; +    return m_programType == o.m_programType;
&gt; +}

nit: It looks like you could combine these two in the same line.

return (m_programType == o.m_programType) &amp;&amp; (m_programType != PROGRAM_TYPE_BLENDS_ELEMENT_TEXTURE || m_mixSettings == o.m_mixSettings);

&gt; Source/WebCore/platform/graphics/filters/CustomFilterProgramInfo.cpp:100
&gt; +    if (m_programType == PROGRAM_TYPE_BLENDS_ELEMENT_TEXTURE &amp;&amp; m_mixSettings != o.m_mixSettings)
&gt; +        return false;
&gt;  

Ditto.

&gt; Source/WebCore/platform/graphics/filters/CustomFilterProgramInfo.h:61
&gt; +    bool operator!=(const CustomFilterProgramMixSettings&amp; o) const
&gt; +    {
&gt; +        return !(*this == o);
&gt; +    }

If you do the previous refactorings, you wouldn&apos;t need this one anymore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747881</commentid>
    <comment_count>3</comment_count>
      <attachid>169984</attachid>
    <who name="Max Vujovic">mvujovic</who>
    <bug_when>2012-10-22 14:24:11 -0700</bug_when>
    <thetext>Created attachment 169984
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747891</commentid>
    <comment_count>4</comment_count>
      <attachid>169946</attachid>
    <who name="Max Vujovic">mvujovic</who>
    <bug_when>2012-10-22 14:31:12 -0700</bug_when>
    <thetext>Comment on attachment 169946
Patch

Thanks for the review, Alex!

Regarding the test, I changed it to trigger a style resolution with &quot;targetElement.clientWidth&quot; instead of using setTimeout. A repaint test would have also worked, but this way we can keep it a ref test. Thanks for the tip!

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

&gt;&gt; LayoutTests/css3/filters/custom/custom-filter-change-blend-mode.html:28
&gt;&gt; +            document.getElementById(&quot;shaded&quot;).style.webkitFilter = &quot;custom(none mix(url(&apos;../resources/mix-color.fs&apos;) normal source-atop), mix_color 0 1 0 1)&quot;;
&gt; 
&gt; I would use a class name instead, just to keep the CSS code out of JS.

Done. Looks much better.

&gt;&gt; Source/WebCore/ChangeLog:8
&gt;&gt; +        Before this patch, WebKit would not rerender a custom filter when its blend mode changed.
&gt; 
&gt; What about using repaint instead of rerender?

In the patch I just posted, I&apos;ve changed this to be more even specific:
&quot;Before this patch, WebKit would not recompute an element&apos;s style when just its custom filter blend mode changed.&quot;

&gt;&gt; Source/WebCore/platform/graphics/filters/CustomFilterProgram.cpp:94
&gt;&gt; +}
&gt; 
&gt; nit: It looks like you could combine these two in the same line.
&gt; 
&gt; return (m_programType == o.m_programType) &amp;&amp; (m_programType != PROGRAM_TYPE_BLENDS_ELEMENT_TEXTURE || m_mixSettings == o.m_mixSettings);

Done.

&gt;&gt; Source/WebCore/platform/graphics/filters/CustomFilterProgramInfo.cpp:100
&gt;&gt;  
&gt; 
&gt; Ditto.

Done.

&gt;&gt; Source/WebCore/platform/graphics/filters/CustomFilterProgramInfo.h:61
&gt;&gt; +    }
&gt; 
&gt; If you do the previous refactorings, you wouldn&apos;t need this one anymore.

Yup, I removed it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748944</commentid>
    <comment_count>5</comment_count>
      <attachid>169984</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-10-23 13:51:36 -0700</bug_when>
    <thetext>Comment on attachment 169984
Patch

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

&gt; LayoutTests/css3/filters/custom/custom-filter-change-blend-mode.html:47
&gt; +    .multiply {
&gt; +        -webkit-filter: custom(none mix(url(&apos;../resources/mix-color.fs&apos;) multiply source-atop), mix_color 0 1 0 1);
&gt; +    }
&gt; +    .normal {
&gt; +        -webkit-filter: custom(none mix(url(&apos;../resources/mix-color.fs&apos;) normal source-atop), mix_color 0 1 0 1);
&gt; +    }

Your description writes that just changing blend mode does not trigger repaint. In this case you set the whole property with all values. How can you make sure that just the blend mode is responsible for the repaint? Is there a way to set just the blend mode explicitly?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748964</commentid>
    <comment_count>6</comment_count>
    <who name="Max Vujovic">mvujovic</who>
    <bug_when>2012-10-23 14:03:45 -0700</bug_when>
    <thetext>Thanks for looking at this, Dirk.

(In reply to comment #5)
&gt; (From update of attachment 169984 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=169984&amp;action=review
&gt; 
&gt; &gt; LayoutTests/css3/filters/custom/custom-filter-change-blend-mode.html:47
&gt; &gt; +    .multiply {
&gt; &gt; +        -webkit-filter: custom(none mix(url(&apos;../resources/mix-color.fs&apos;) multiply source-atop), mix_color 0 1 0 1);
&gt; &gt; +    }
&gt; &gt; +    .normal {
&gt; &gt; +        -webkit-filter: custom(none mix(url(&apos;../resources/mix-color.fs&apos;) normal source-atop), mix_color 0 1 0 1);
&gt; &gt; +    }
&gt; 
&gt; Your description writes that just changing blend mode does not trigger repaint. In this case you set the whole property with all values. 

Right, I&apos;m just make sure all the new values are the same as the old values, except the blend mode.

&gt; How can you make sure that just the blend mode is responsible for the repaint?

CustomFilterOperation&apos;s equals operator provides the answer:
&quot;&quot;&quot;
    virtual bool operator==(const FilterOperation&amp; o) const
    {
        if (!isSameType(o))
            return false;

        const CustomFilterOperation* other = static_cast&lt;const CustomFilterOperation*&gt;(&amp;o);
        return *m_program.get() == *other-&gt;m_program.get()
               &amp;&amp; m_meshRows == other-&gt;m_meshRows
               &amp;&amp; m_meshColumns == other-&gt;m_meshColumns
               &amp;&amp; m_meshBoxType == other-&gt;m_meshBoxType
               &amp;&amp; m_meshType == other-&gt;m_meshType
               &amp;&amp; customFilterParametersEqual(m_parameters, other-&gt;m_parameters);
    }
&quot;&quot;&quot;

When we change only the blend mode, every condition matches between the old CustomFilterOperation and the new CustomFilterOperation except the first one, which compares the CustomFilterProgram.

With this patch, CustomFilterProgram&apos;s equals operator considers the mix settings.

&gt; Is there a way to set just the blend mode explicitly?

Unfortunately no. We haven&apos;t defined a CSSOM for the mix function yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748978</commentid>
    <comment_count>7</comment_count>
      <attachid>169984</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-10-23 14:14:18 -0700</bug_when>
    <thetext>Comment on attachment 169984
Patch

I see. r=me then. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748980</commentid>
    <comment_count>8</comment_count>
    <who name="Max Vujovic">mvujovic</who>
    <bug_when>2012-10-23 14:14:41 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 169984 [details])
&gt; I see. r=me then. :)

Thanks! :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748982</commentid>
    <comment_count>9</comment_count>
      <attachid>169984</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-23 14:24:21 -0700</bug_when>
    <thetext>Comment on attachment 169984
Patch

Clearing flags on attachment: 169984

Committed r132266: &lt;http://trac.webkit.org/changeset/132266&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748983</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-23 14:24:25 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169946</attachid>
            <date>2012-10-22 11:27:56 -0700</date>
            <delta_ts>2012-10-22 14:31:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>99887-1.patch</filename>
            <type>text/plain</type>
            <size>11976</size>
            <attacher name="Max Vujovic">mvujovic</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyYTExZGY4Li4wNDc3NDEyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMTAt
MTkgIE1heCBWdWpvdmljICA8bXZ1am92aWNAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1MgU2hh
ZGVyc10gQ2hhbmdpbmcgdGhlIGJsZW5kIG1vZGUgaW4gQ1NTIGRvZXNuJ3QgdXBkYXRlIHRoZSBj
dXN0b20gZmlsdGVyIHJlbmRlcmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTk4ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgdGVzdCB0aGF0IGZpcnN0IHJlbmRlcnMgYSBjdXN0b20gZmlsdGVy
IHdpdGggdGhlICJtdWx0aXBseSIgYmxlbmQgbW9kZSBhbmQgdGhlbiBjaGFuZ2VzCisgICAgICAg
IHRoZSBibGVuZCBtb2RlIHRvICJub3JtYWwiLiBUaGUgdGVzdCBtYWtlcyBzdXJlIG5vdCB0byBj
aGFuZ2UgYW55IG90aGVyIHBhcmFtZXRlcnMgYmVzaWRlcworICAgICAgICB0aGUgYmxlbmQgbW9k
ZSwgc2luY2UgdGhlIG90aGVyIHBhcmFtZXRlcnMgY2FuIHRyaWdnZXIgYW4gdXBkYXRlIG9uIHRo
ZWlyIG93bi4KKworICAgICAgICAqIGNzczMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci1j
aGFuZ2UtYmxlbmQtbW9kZS1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjc3MzL2Zp
bHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItY2hhbmdlLWJsZW5kLW1vZGUuaHRtbDogQWRkZWQu
CisKIDIwMTItMTAtMTkgIEVtaWwgQSBFa2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQgY2hyb21pdW0gcmViYXNlbGluZSBmb3IgcjEzMTUwMy4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci1jaGFuZ2Ut
YmxlbmQtbW9kZS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvY3NzMy9maWx0ZXJzL2N1c3Rv
bS9jdXN0b20tZmlsdGVyLWNoYW5nZS1ibGVuZC1tb2RlLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWM3MjM2MAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2NzczMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci1jaGFuZ2UtYmxlbmQt
bW9kZS1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMjAgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKyAgICA8dGl0bGU+VGVzdHMgdGhhdCBhIGN1c3RvbSBmaWx0ZXIgZGV0ZWN0
cyBhIGJsZW5kIG1vZGUgY2hhbmdlIGFuZCByZS1yZW5kZXJzIHdpdGggdGhlIG5ldyBibGVuZCBt
b2RlLjwvdGl0bGU+CisgICAgPCEtLSAKKyAgICAgICAgVGhpcyBpcyB0aGUgcmVmZXJlbmNlIGZp
bGUgZm9yIHRoZSB0ZXN0LgorICAgICAgICBJZiB0aGUgdGVzdCBwYXNzZXMsIHlvdSB3aWxsIHNl
ZSBhIGdyZWVuIHNxdWFyZS4KKyAgICAtLT4KKyAgICA8c3R5bGU+CisgICAgZGl2IHsKKyAgICAg
ICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiByZ2IoMCwgMjU1LCAwKTsKKyAgICB9CisgICAgPC9zdHlsZT4KKzwvaGVhZD4K
Kzxib2R5PgorICAgIDxkaXY+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItY2hhbmdlLWJsZW5k
LW1vZGUuaHRtbCBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRl
ci1jaGFuZ2UtYmxlbmQtbW9kZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmU3NWIxMmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMv
Y3VzdG9tL2N1c3RvbS1maWx0ZXItY2hhbmdlLWJsZW5kLW1vZGUuaHRtbApAQCAtMCwwICsxLDQ3
IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHRpdGxlPlRlc3RzIHRo
YXQgYSBjdXN0b20gZmlsdGVyIGRldGVjdHMgYSBibGVuZCBtb2RlIGNoYW5nZSBhbmQgcmUtcmVu
ZGVycyB3aXRoIHRoZSBuZXcgYmxlbmQgbW9kZS48L3RpdGxlPgorICAgIDwhLS0KKyAgICAgICAg
SWYgdGhlIHRlc3QgcGFzc2VzLCB5b3Ugd2lsbCBzZWUgYSBncmVlbiBzcXVhcmUuCisgICAgICAg
IFRoaXMgdGVzdCBjYW4gcnVuIGluIERSVCBvciBtYW51YWxseS4KKyAgICAtLT4KKyAgICA8c2Ny
aXB0PgorICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHdpbmRv
dy50ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0Q1NTQ3VzdG9tRmlsdGVyRW5h
YmxlZCIsICIxIik7CisgICAgICAgICAgICB3aW5kb3cudGVzdFJ1bm5lci5vdmVycmlkZVByZWZl
cmVuY2UoIldlYktpdFdlYkdMRW5hYmxlZCIsICIxIik7CisgICAgICAgICAgICB3aW5kb3cudGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBy
dW5UZXN0KCkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gUmVuZGVyIHRoZSBmaXJzdCBmcmFt
ZSB3aXRoIGJsZW5kIG1vZGUgbXVsdGlwbHkuIAorICAgICAgICAgICAgLy8gVGhlIHJlc3VsdCBz
aG91bGQgYmUgYSBibGFjayBzcXVhcmUgKHJlZCBiYWNrZ3JvdW5kICogZ3JlZW4gbWl4IGNvbG9y
ID0gYmxhY2spLgorICAgICAgICAgICAgc2V0VGltZW91dChhZnRlckZpcnN0RnJhbWUsIDApOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gYWZ0ZXJGaXJzdEZyYW1lKCkKKyAgICAgICAg
eworICAgICAgICAgICAgLy8gUmVuZGVyIHRoZSBzZWNvbmQgZnJhbWUgd2l0aCBibGVuZCBtb2Rl
IG5vcm1hbC4KKyAgICAgICAgICAgIC8vIEtlZXAgYWxsIG90aGVyIGZpbHRlciBwYXJhbWV0ZXJz
IGlkZW50aWNhbC4KKyAgICAgICAgICAgIC8vIFRoZSByZXN1bHQgc2hvdWxkIGJlIGEgZ3JlZW4g
c3F1YXJlIGlmIHRoZSBibGVuZCBtb2RlIGNoYW5nZWQgY29ycmVjdGx5LgorICAgICAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNoYWRlZCIpLnN0eWxlLndlYmtpdEZpbHRlciA9ICJj
dXN0b20obm9uZSBtaXgodXJsKCcuLi9yZXNvdXJjZXMvbWl4LWNvbG9yLmZzJykgbm9ybWFsIHNv
dXJjZS1hdG9wKSwgbWl4X2NvbG9yIDAgMSAwIDEpIjsKKworICAgICAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHdpbmRvdy50ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKKyAgICAgICAgfQorICAgIDwvc2NyaXB0PgorICAgIDxzdHlsZT4KKyAgICAjc2hhZGVk
IHsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7CisgICAgICAgIC8qIEluaXRpYWxseSwgYXBwbHkgYSBz
aGFkZXIgb24gdGhlIGRpdiB1c2luZyBibGVuZCBtb2RlIG11bHRpcGx5LiAqLworICAgICAgICAt
d2Via2l0LWZpbHRlcjogY3VzdG9tKG5vbmUgbWl4KHVybCgnLi4vcmVzb3VyY2VzL21peC1jb2xv
ci5mcycpIG11bHRpcGx5IHNvdXJjZS1hdG9wKSwgbWl4X2NvbG9yIDAgMSAwIDEpOworICAgIH0K
KyAgICA8L3N0eWxlPgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorICAgIDxk
aXYgaWQ9InNoYWRlZCI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzRm
OGM2ZC4uZjhlMTcxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDEyLTEwLTE5ICBN
YXggVnVqb3ZpYyAgPG12dWpvdmljQGFkb2JlLmNvbT4KKworICAgICAgICBbQ1NTIFNoYWRlcnNd
IENoYW5naW5nIHRoZSBibGVuZCBtb2RlIGluIENTUyBkb2Vzbid0IHVwZGF0ZSB0aGUgY3VzdG9t
IGZpbHRlciByZW5kZXJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTk5ODg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQmVmb3JlIHRoaXMgcGF0Y2gsIFdlYktpdCB3b3VsZCBub3QgcmVyZW5kZXIgYSBj
dXN0b20gZmlsdGVyIHdoZW4gaXRzIGJsZW5kIG1vZGUgY2hhbmdlZC4KKworICAgICAgICBGb3Ig
ZXhhbXBsZSwgc3VwcG9zZSBhbiBlbGVtZW50IGluaXRpYWxseSBoYXMgdGhlIHN0eWxlOgorICAg
ICAgICAtd2Via2l0LWZpbHRlcjogY3VzdG9tKG5vbmUgbWl4KHVybChzaGFkZXIuZnMpIG11bHRp
cGx5IHNvdXJjZS1hdG9wKSk7CisKKyAgICAgICAgVGhlbiwgd2UgY2hhbmdlIHRoZSBibGVuZCBt
b2RlIGZyb20gIm11bHRpcGx5IiB0byAibm9ybWFsIjoKKyAgICAgICAgLXdlYmtpdC1maWx0ZXI6
IGN1c3RvbShub25lIG1peCh1cmwoc2hhZGVyLmZzKSBub3JtYWwgc291cmNlLWF0b3ApKTsKKwor
ICAgICAgICBXZWJLaXQgbm93IGRldGVjdHMgdGhlc2UgY2hhbmdlcyBhbmQgcmVyZW5kZXJzIHRo
ZSBjdXN0b20gZmlsdGVyLgorCisgICAgICAgIEN1c3RvbUZpbHRlclByb2dyYW0gbm93IGhhcyBh
biBlcXVhbHMgb3BlcmF0b3IgdGhhdCBjb25zaWRlcnMgdGhlIHByb2dyYW0gdHlwZSBhbmQgdGhl
IG1peAorICAgICAgICBzZXR0aW5ncy4gVGhlIG1peCBzZXR0aW5ncyBjb250YWluIHRoZSBibGVu
ZCBtb2RlLgorCisgICAgICAgIFRlc3Q6IGNzczMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRl
ci1jaGFuZ2UtYmxlbmQtbW9kZS5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9t
RmlsdGVyUHJvZ3JhbTo6b3BlcmF0b3I9PSk6CisgICAgICAgICAgICBQcmV2aW91c2x5LCB0aGUg
ZXF1YWxzIG9wZXJhdG9yIHdhcyBwdXJlIHZpcnR1YWwgaW4gQ3VzdG9tRmlsdGVyUHJvZ3JhbS4g
Tm93LAorICAgICAgICAgICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbSBpbXBsZW1lbnRzIGl0IGFuZCBj
b21wYXJlcyB0aGUgcHJvZ3JhbSB0eXBlIGFuZCBtaXggc2V0dGluZ3MsIGlmCisgICAgICAgICAg
ICBhcHByb3ByaWF0ZS4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbUluZm86Omhhc2gpOgorICAgICAgICAgICAgUmVm
YWN0b3IgYSByZXBlYXRlZCBjb25kaXRpb24gaW50byBhIGJvb2xlYW4gdG8gaW1wcm92ZSByZWFk
YWJpbGl0eS4KKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlclByb2dyYW1JbmZvOjpvcGVy
YXRvcj09KToKKyAgICAgICAgICAgIFJlZmFjdG9yIHJlcGVhdGVkIGNvbmRpdGlvbnMgdG8gaW1w
cm92ZSByZWFkYWJpbGl0eS4gUmVvcmRlciB0aGUgY29uZGl0aW9ucyBzbyB0aGUgbGVzcworICAg
ICAgICAgICAgZXhwZW5zaXZlIG9uZXMgb2NjdXIgZmlyc3QuCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtSW5mby5oOgorICAgICAgICAoQ3Vz
dG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZp
bHRlclByb2dyYW1NaXhTZXR0aW5nczo6b3BlcmF0b3IhPSk6CisgICAgICAgICAgICBBZGQgdGhl
IG5vdCBlcXVhbHMgb3BlcmF0b3IgdG8gdGhlIG1peCBzZXR0aW5ncy4KKyAgICAgICAgKiByZW5k
ZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZUN1c3RvbUZpbHRlclByb2dyYW06Om9wZXJhdG9yPT0pOgorICAgICAgICAgICAgQ2Fs
bCB0aGUgYmFzZSBjbGFzcydzIGVxdWFscyBvcGVyYXRvci4KKwogMjAxMi0xMC0xOSAgTmF0ZSBD
aGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlb3JkZXIgc29tZSBmdW5j
dGlvbnMgaW4gU3VicmVzb3VyY2VMb2FkZXIgdG8gcGVybWl0IG1haW4gcmVzb3VyY2VzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZp
bHRlclByb2dyYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9DdXN0b21GaWx0ZXJQcm9ncmFtLmNwcAppbmRleCBjOTk5MGQ5Li42ZWZiYTY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRl
clByb2dyYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5jcHAKQEAgLTg1LDUgKzg1LDEzIEBAIEN1c3RvbUZpbHRl
clByb2dyYW1JbmZvIEN1c3RvbUZpbHRlclByb2dyYW06OnByb2dyYW1JbmZvKCkgY29uc3QKICAg
ICByZXR1cm4gQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8odmVydGV4U2hhZGVyU3RyaW5nKCksIGZy
YWdtZW50U2hhZGVyU3RyaW5nKCksIG1fcHJvZ3JhbVR5cGUsIG1fbWl4U2V0dGluZ3MpOwogfQog
Citib29sIEN1c3RvbUZpbHRlclByb2dyYW06Om9wZXJhdG9yPT0oY29uc3QgQ3VzdG9tRmlsdGVy
UHJvZ3JhbSYgbykgY29uc3QKK3sKKyAgICBpZiAobV9wcm9ncmFtVHlwZSA9PSBQUk9HUkFNX1RZ
UEVfQkxFTkRTX0VMRU1FTlRfVEVYVFVSRSAmJiBtX21peFNldHRpbmdzICE9IG8ubV9taXhTZXR0
aW5ncykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIG1fcHJvZ3JhbVR5cGUg
PT0gby5tX3Byb2dyYW1UeXBlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAjZW5kaWYg
Ly8gRU5BQkxFKENTU19TSEFERVJTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW0uaAppbmRleCAw
NDkyZDQ3Li40NDVmYjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW0uaApAQCAtNjIsNyAr
NjIsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0gaGFzIHRo
ZSBvbmx5IGltcGxlbWVudGF0aW9uIGZvciB0aGUgZm9sbG93aW5nIG1ldGhvZC4gVGhhdCBtZWFu
cywgaXQgY2FzdHMgdG8gU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtCiAgICAgLy8gd2l0aG91dGgg
Y2hlY2tpbmcgdGhlIHR5cGUuIElmIHlvdSBhZGQgYW5vdGhlciBpbXBsZW1lbnRhdGlvbiwgYWxz
byBhZGQgYSBtZWNoYW5pc20gdG8gY2hlY2sgZm9yIHRoZSBjb3JyZWN0IHR5cGUuCi0gICAgdmly
dHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbSYpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDdXN0b21GaWx0ZXJQcm9ncmFt
JikgY29uc3Q7CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEN1c3RvbUZpbHRlclByb2dyYW0m
IG8pIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gbyk7IH0KIHByb3RlY3RlZDoKICAgICAvLyBT
dHlsZUN1c3RvbUZpbHRlclByb2dyYW0gY2FuIG5vdGlmeSB0aGUgY2xpZW50cyB0aGF0IHRoZSBj
YWNoZWQgcmVzb3VyY2VzIGFyZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtSW5mby5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW1JbmZvLmNw
cAppbmRleCBiYzE0OTRmLi43MTdmMjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW1JbmZvLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dy
YW1JbmZvLmNwcApAQCAtNzgsMTIgKzc4LDE0IEBAIHVuc2lnbmVkIEN1c3RvbUZpbHRlclByb2dy
YW1JbmZvOjpoYXNoKCkgY29uc3QKIHsKICAgICAvLyBBdCBsZWFzdCBvbmUgb2YgdGhlIHNoYWRl
cnMgbmVlZHMgdG8gYmUgbm9uLW51bGwuCiAgICAgQVNTRVJUKCFtX3ZlcnRleFNoYWRlclN0cmlu
Zy5pc051bGwoKSB8fCAhbV9mcmFnbWVudFNoYWRlclN0cmluZy5pc051bGwoKSk7CisKKyAgICBi
b29sIGJsZW5kc0VsZW1lbnRUZXh0dXJlID0gKG1fcHJvZ3JhbVR5cGUgPT0gUFJPR1JBTV9UWVBF
X0JMRU5EU19FTEVNRU5UX1RFWFRVUkUpOwogICAgIHVpbnRwdHJfdCBoYXNoQ29kZXNbNV0gPSB7
CiAgICAgICAgIGhhc2hQb3NzaWJseU51bGxTdHJpbmcobV92ZXJ0ZXhTaGFkZXJTdHJpbmcpLAog
ICAgICAgICBoYXNoUG9zc2libHlOdWxsU3RyaW5nKG1fZnJhZ21lbnRTaGFkZXJTdHJpbmcpLAot
ICAgICAgICBtX3Byb2dyYW1UeXBlID09IFBST0dSQU1fVFlQRV9CTEVORFNfRUxFTUVOVF9URVhU
VVJFLAotICAgICAgICBtX3Byb2dyYW1UeXBlID09IFBST0dSQU1fVFlQRV9CTEVORFNfRUxFTUVO
VF9URVhUVVJFID8gbV9taXhTZXR0aW5ncy5ibGVuZE1vZGUgOiAwLAotICAgICAgICBtX3Byb2dy
YW1UeXBlID09IFBST0dSQU1fVFlQRV9CTEVORFNfRUxFTUVOVF9URVhUVVJFID8gbV9taXhTZXR0
aW5ncy5jb21wb3NpdGVPcGVyYXRvciA6IDAKKyAgICAgICAgYmxlbmRzRWxlbWVudFRleHR1cmUs
CisgICAgICAgIGJsZW5kc0VsZW1lbnRUZXh0dXJlID8gbV9taXhTZXR0aW5ncy5ibGVuZE1vZGUg
OiAwLAorICAgICAgICBibGVuZHNFbGVtZW50VGV4dHVyZSA/IG1fbWl4U2V0dGluZ3MuY29tcG9z
aXRlT3BlcmF0b3IgOiAwCiAgICAgfTsKICAgICByZXR1cm4gU3RyaW5nSGFzaGVyOjpoYXNoTWVt
b3J5PHNpemVvZihoYXNoQ29kZXMpPigmaGFzaENvZGVzKTsKIH0KQEAgLTkzLDE1ICs5NSwxMiBA
QCBib29sIEN1c3RvbUZpbHRlclByb2dyYW1JbmZvOjpvcGVyYXRvcj09KGNvbnN0IEN1c3RvbUZp
bHRlclByb2dyYW1JbmZvJiBvKSBjb25zdAogICAgIEFTU0VSVCghaXNIYXNoVGFibGVEZWxldGVk
VmFsdWUoKSk7CiAgICAgQVNTRVJUKCFvLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkpOwogCi0g
ICAgaWYgKG1fcHJvZ3JhbVR5cGUgPT0gUFJPR1JBTV9UWVBFX0JMRU5EU19FTEVNRU5UX1RFWFRV
UkUpCi0gICAgICAgIHJldHVybiBtX3ZlcnRleFNoYWRlclN0cmluZyA9PSBvLm1fdmVydGV4U2hh
ZGVyU3RyaW5nCi0gICAgICAgICAgICAmJiBtX2ZyYWdtZW50U2hhZGVyU3RyaW5nID09IG8ubV9m
cmFnbWVudFNoYWRlclN0cmluZwotICAgICAgICAgICAgJiYgbV9wcm9ncmFtVHlwZSA9PSBvLm1f
cHJvZ3JhbVR5cGUKLSAgICAgICAgICAgICYmIG1fbWl4U2V0dGluZ3MgPT0gby5tX21peFNldHRp
bmdzOworICAgIGlmIChtX3Byb2dyYW1UeXBlID09IFBST0dSQU1fVFlQRV9CTEVORFNfRUxFTUVO
VF9URVhUVVJFICYmIG1fbWl4U2V0dGluZ3MgIT0gby5tX21peFNldHRpbmdzKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gbV92ZXJ0ZXhTaGFkZXJTdHJpbmcgPT0gby5tX3Zl
cnRleFNoYWRlclN0cmluZwotICAgICAgICAmJiBtX2ZyYWdtZW50U2hhZGVyU3RyaW5nID09IG8u
bV9mcmFnbWVudFNoYWRlclN0cmluZwotICAgICAgICAmJiBtX3Byb2dyYW1UeXBlID09IG8ubV9w
cm9ncmFtVHlwZTsKKyAgICByZXR1cm4gbV9wcm9ncmFtVHlwZSA9PSBvLm1fcHJvZ3JhbVR5cGUK
KyAgICAgICAgJiYgbV92ZXJ0ZXhTaGFkZXJTdHJpbmcgPT0gby5tX3ZlcnRleFNoYWRlclN0cmlu
ZworICAgICAgICAmJiBtX2ZyYWdtZW50U2hhZGVyU3RyaW5nID09IG8ubV9mcmFnbWVudFNoYWRl
clN0cmluZzsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtSW5m
by5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0
ZXJQcm9ncmFtSW5mby5oCmluZGV4IDNiNTQ0YzUuLmQ3YTk5MjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbUlu
Zm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3Rv
bUZpbHRlclByb2dyYW1JbmZvLmgKQEAgLTQ5LDEyICs0OSwxNyBAQCBzdHJ1Y3QgQ3VzdG9tRmls
dGVyUHJvZ3JhbU1peFNldHRpbmdzIHsKICAgICAgICAgLCBjb21wb3NpdGVPcGVyYXRvcihDb21w
b3NpdGVTb3VyY2VPdmVyKQogICAgIHsKICAgICB9Ci0gICAgCisKICAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzJiBvKSBjb25zdAogICAgIHsK
ICAgICAgICAgcmV0dXJuIGJsZW5kTW9kZSA9PSBvLmJsZW5kTW9kZSAmJiBjb21wb3NpdGVPcGVy
YXRvciA9PSBvLmNvbXBvc2l0ZU9wZXJhdG9yOwogICAgIH0KLSAgICAKKworICAgIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBDdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3MmIG8pIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvKTsKKyAgICB9CisKICAgICBCbGVuZE1v
ZGUgYmxlbmRNb2RlOwogICAgIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUN1c3Rv
bUZpbHRlclByb2dyYW0uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUN1
c3RvbUZpbHRlclByb2dyYW0uaAppbmRleCA5NzQwMjRhLi41MzhhNTJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9tRmlsdGVyUHJv
Z3JhbS5oCkBAIC0xMjAsNiArMTIwLDEwIEBAIHB1YmxpYzoKICAgICAKICAgICB2aXJ0dWFsIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBDdXN0b21GaWx0ZXJQcm9ncmFtJiBvKSBjb25zdCAKICAgICB7
CisgICAgICAgIC8vIFdlIGRvbid0IHVzZSB0aGUgIT0gb3BlcmF0b3IgYmVjYXVzZSB0aGF0IHdv
dWxkIHJlY3Vyc2l2ZWx5IGNhbGwgdGhpcyBtZXRob2QuCisgICAgICAgIGlmICghQ3VzdG9tRmls
dGVyUHJvZ3JhbTo6b3BlcmF0b3I9PShvKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKwog
ICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGNhc3QgaXMgdWdseSwgYnV0IFN0eWxlQ3VzdG9tRmls
dGVyUHJvZ3JhbSBpcyB0aGUgc2luZ2xlIGltcGxlbWVudGF0aW9uIG9mIEN1c3RvbUZpbHRlclBy
b2dyYW0uCiAgICAgICAgIGNvbnN0IFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbSogb3RoZXIgPSBz
dGF0aWNfY2FzdDxjb25zdCBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0qPigmbyk7CiAgICAgICAg
IHJldHVybiBjYWNoZWRWZXJ0ZXhTaGFkZXIoKSA9PSBvdGhlci0+Y2FjaGVkVmVydGV4U2hhZGVy
KCkgJiYgY2FjaGVkRnJhZ21lbnRTaGFkZXIoKSA9PSBvdGhlci0+Y2FjaGVkRnJhZ21lbnRTaGFk
ZXIoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169984</attachid>
            <date>2012-10-22 14:24:11 -0700</date>
            <delta_ts>2012-10-23 14:24:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>99887-2.patch</filename>
            <type>text/plain</type>
            <size>11180</size>
            <attacher name="Max Vujovic">mvujovic</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyYTExZGY4Li40YjAwMzQ2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMTAt
MTkgIE1heCBWdWpvdmljICA8bXZ1am92aWNAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1MgU2hh
ZGVyc10gQ2hhbmdpbmcgdGhlIGJsZW5kIG1vZGUgaW4gQ1NTIGRvZXNuJ3QgdXBkYXRlIHRoZSBj
dXN0b20gZmlsdGVyIHJlbmRlcmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTk4ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgYSB0ZXN0IHRoYXQgcmVzb2x2ZXMgYSBjdXN0b20gZmlsdGVyJ3Mg
c3R5bGUgd2l0aCB0aGUgIm11bHRpcGx5IiBibGVuZCBtb2RlIGFuZCB0aGVuCisgICAgICAgIGNo
YW5nZXMgdGhlIGJsZW5kIG1vZGUgdG8gIm5vcm1hbCIuIFRoZSB0ZXN0IG1ha2VzIHN1cmUgbm90
IHRvIGNoYW5nZSBhbnkgb3RoZXIgcGFyYW1ldGVycworICAgICAgICBiZXNpZGVzIHRoZSBibGVu
ZCBtb2RlLCBzaW5jZSB0aGUgb3RoZXIgcGFyYW1ldGVycyBjYW4gdHJpZ2dlciBzdHlsZSByZWNh
bGN1bGF0aW9ucyBvbiB0aGVpcgorICAgICAgICBvd24uCisKKyAgICAgICAgKiBjc3MzL2ZpbHRl
cnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItY2hhbmdlLWJsZW5kLW1vZGUtZXhwZWN0ZWQuaHRtbDog
QWRkZWQuCisgICAgICAgICogY3NzMy9maWx0ZXJzL2N1c3RvbS9jdXN0b20tZmlsdGVyLWNoYW5n
ZS1ibGVuZC1tb2RlLmh0bWw6IEFkZGVkLgorCiAyMDEyLTEwLTE5ICBFbWlsIEEgRWtsdW5kICA8
ZWFlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIGNocm9taXVtIHJlYmFzZWxp
bmUgZm9yIHIxMzE1MDMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvY3Vz
dG9tL2N1c3RvbS1maWx0ZXItY2hhbmdlLWJsZW5kLW1vZGUtZXhwZWN0ZWQuaHRtbCBiL0xheW91
dFRlc3RzL2NzczMvZmlsdGVycy9jdXN0b20vY3VzdG9tLWZpbHRlci1jaGFuZ2UtYmxlbmQtbW9k
ZS1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjZWU1
MTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvY3VzdG9tL2N1
c3RvbS1maWx0ZXItY2hhbmdlLWJsZW5kLW1vZGUtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDIw
IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHRpdGxlPlRlc3RzIHRo
YXQgYSBjdXN0b20gZmlsdGVyIGRldGVjdHMgYSBibGVuZCBtb2RlIGNoYW5nZSBhbmQgcGFpbnRz
IHdpdGggdGhlIG5ldyBibGVuZCBtb2RlLjwvdGl0bGU+CisgICAgPCEtLSAKKyAgICAgICAgVGhp
cyBpcyB0aGUgcmVmZXJlbmNlIGZpbGUgZm9yIHRoZSB0ZXN0LgorICAgICAgICBJZiB0aGUgdGVz
dCBwYXNzZXMsIHlvdSB3aWxsIHNlZSBhIGdyZWVuIHNxdWFyZS4KKyAgICAtLT4KKyAgICA8c3R5
bGU+CisgICAgZGl2IHsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEw
MHB4OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCwgMjU1LCAwKTsKKyAgICB9Cisg
ICAgPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxkaXY+PC9kaXY+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MzL2ZpbHRlcnMvY3VzdG9tL2N1c3Rv
bS1maWx0ZXItY2hhbmdlLWJsZW5kLW1vZGUuaHRtbCBiL0xheW91dFRlc3RzL2NzczMvZmlsdGVy
cy9jdXN0b20vY3VzdG9tLWZpbHRlci1jaGFuZ2UtYmxlbmQtbW9kZS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiM2E2NWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9jc3MzL2ZpbHRlcnMvY3VzdG9tL2N1c3RvbS1maWx0ZXItY2hhbmdlLWJsZW5kLW1v
ZGUuaHRtbApAQCAtMCwwICsxLDU0IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
CisgICAgPHRpdGxlPlRlc3RzIHRoYXQgYSBjdXN0b20gZmlsdGVyIGRldGVjdHMgYSBibGVuZCBt
b2RlIGNoYW5nZSBhbmQgcGFpbnRzIHdpdGggdGhlIG5ldyBibGVuZCBtb2RlLjwvdGl0bGU+Cisg
ICAgPCEtLQorICAgICAgICBJZiB0aGUgdGVzdCBwYXNzZXMsIHlvdSB3aWxsIHNlZSBhIGdyZWVu
IHNxdWFyZS4KKyAgICAgICAgVGhpcyB0ZXN0IGNhbiBydW4gaW4gRFJUIG9yIG1hbnVhbGx5Lgor
ICAgIC0tPgorICAgIDxzY3JpcHQ+CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewor
ICAgICAgICAgICAgd2luZG93LnRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRD
U1NDdXN0b21GaWx0ZXJFbmFibGVkIiwgIjEiKTsKKyAgICAgICAgICAgIHdpbmRvdy50ZXN0UnVu
bmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0V2ViR0xFbmFibGVkIiwgIjEiKTsKKyAgICAg
ICAgICAgIHdpbmRvdy50ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgZmls
dGVyVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZpbHRlclRhcmdldCIpOworCisg
ICAgICAgICAgICAvLyBJbml0aWFsbHksIGFwcGx5IGEgY3VzdG9tIGZpbHRlciBvbiB0aGUgZGl2
IHVzaW5nIGJsZW5kIG1vZGUgbXVsdGlwbHkuCisgICAgICAgICAgICAvLyBUaGUgcmVzdWx0IHNo
b3VsZCBiZSBhIGJsYWNrIHNxdWFyZSAocmVkIGJhY2tncm91bmQgKiBncmVlbiBtaXggY29sb3Ig
PSBibGFjaykuCisgICAgICAgICAgICBmaWx0ZXJUYXJnZXQuY2xhc3NOYW1lID0gIm11bHRpcGx5
IjsKKworICAgICAgICAgICAgLy8gVHJpZ2dlciBhIHN0eWxlIHJlc29sdXRpb24gd2l0aCBibGVu
ZCBtb2RlIG11bHRpcGx5LgorICAgICAgICAgICAgLy8gVGhpcyBpcyByZXF1aXJlZCB0byByZXBy
b2R1Y2UgdGhpcyB0ZXN0J3MgYXNzb2NpYXRlZCBidWcuCisgICAgICAgICAgICBmaWx0ZXJUYXJn
ZXQuY2xpZW50V2lkdGg7CisKKyAgICAgICAgICAgIC8vIENoYW5nZSB0aGUgYmxlbmQgbW9kZSB0
byBub3JtYWwsIGFuZCBrZWVwIGFsbCBvdGhlciBmaWx0ZXIgcGFyYW1ldGVycyBpZGVudGljYWwu
CisgICAgICAgICAgICAvLyBUaGUgcmVzdWx0IHNob3VsZCBiZSBhIGdyZWVuIHNxdWFyZSBpZiB0
aGUgYmxlbmQgbW9kZSBjaGFuZ2VkIGNvcnJlY3RseS4gICAgICAgICAgICAKKyAgICAgICAgICAg
IGZpbHRlclRhcmdldC5jbGFzc05hbWUgPSAibm9ybWFsIjsKKworICAgICAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHdpbmRvdy50ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKKyAgICAgICAgfQorICAgIDwvc2NyaXB0PgorICAgIDxzdHlsZT4KKyAgICAjZmls
dGVyVGFyZ2V0IHsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4
OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7CisgICAgfQorICAgIC5tdWx0aXBseSB7
CisgICAgICAgIC13ZWJraXQtZmlsdGVyOiBjdXN0b20obm9uZSBtaXgodXJsKCcuLi9yZXNvdXJj
ZXMvbWl4LWNvbG9yLmZzJykgbXVsdGlwbHkgc291cmNlLWF0b3ApLCBtaXhfY29sb3IgMCAxIDAg
MSk7CisgICAgfQorICAgIC5ub3JtYWwgeworICAgICAgICAtd2Via2l0LWZpbHRlcjogY3VzdG9t
KG5vbmUgbWl4KHVybCgnLi4vcmVzb3VyY2VzL21peC1jb2xvci5mcycpIG5vcm1hbCBzb3VyY2Ut
YXRvcCksIG1peF9jb2xvciAwIDEgMCAxKTsKKyAgICB9CisgICAgPC9zdHlsZT4KKyAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9yZXBhaW50L3Jlc291cmNlcy9yZXBhaW50LmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKyAgICA8ZGl2IGlkPSJm
aWx0ZXJUYXJnZXQiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDc0Zjhj
NmQuLjI0ZDViNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAxMi0xMC0xOSAgTWF4
IFZ1am92aWMgIDxtdnVqb3ZpY0BhZG9iZS5jb20+CisKKyAgICAgICAgW0NTUyBTaGFkZXJzXSBD
aGFuZ2luZyB0aGUgYmxlbmQgbW9kZSBpbiBDU1MgZG9lc24ndCB1cGRhdGUgdGhlIGN1c3RvbSBm
aWx0ZXIgcmVuZGVyaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05OTg4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEJlZm9yZSB0aGlzIHBhdGNoLCBXZWJLaXQgd291bGQgbm90IHJlY29tcHV0ZSBhbiBl
bGVtZW50J3Mgc3R5bGUgd2hlbiBqdXN0IGl0cyBjdXN0b20gZmlsdGVyCisgICAgICAgIGJsZW5k
IG1vZGUgY2hhbmdlZC4KKworICAgICAgICBGb3IgZXhhbXBsZSwgc3VwcG9zZSBhbiBlbGVtZW50
IGluaXRpYWxseSBoYXMgdGhlIHN0eWxlOgorICAgICAgICAtd2Via2l0LWZpbHRlcjogY3VzdG9t
KG5vbmUgbWl4KHVybChzaGFkZXIuZnMpIG11bHRpcGx5IHNvdXJjZS1hdG9wKSk7CisKKyAgICAg
ICAgVGhlbiwgd2UgY2hhbmdlIHRoZSBibGVuZCBtb2RlIGZyb20gIm11bHRpcGx5IiB0byAibm9y
bWFsIjoKKyAgICAgICAgLXdlYmtpdC1maWx0ZXI6IGN1c3RvbShub25lIG1peCh1cmwoc2hhZGVy
LmZzKSBub3JtYWwgc291cmNlLWF0b3ApKTsKKworICAgICAgICBXZWJLaXQgbm93IGRldGVjdHMg
dGhpcyBjaGFuZ2UgYW5kIHJlY29tcHV0ZXMgdGhlIHN0eWxlLgorCisgICAgICAgIEN1c3RvbUZp
bHRlclByb2dyYW0gbm93IGhhcyBhbiBlcXVhbHMgb3BlcmF0b3IgdGhhdCBjb25zaWRlcnMgdGhl
IHByb2dyYW0gdHlwZSBhbmQgdGhlIG1peAorICAgICAgICBzZXR0aW5ncy4gVGhlIG1peCBzZXR0
aW5ncyBjb250YWluIHRoZSBibGVuZCBtb2RlLgorCisgICAgICAgIFRlc3Q6IGNzczMvZmlsdGVy
cy9jdXN0b20vY3VzdG9tLWZpbHRlci1jaGFuZ2UtYmxlbmQtbW9kZS5odG1sCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbTo6b3BlcmF0b3I9PSk6CisgICAgICAg
ICAgICBQcmV2aW91c2x5LCB0aGUgZXF1YWxzIG9wZXJhdG9yIHdhcyBwdXJlIHZpcnR1YWwgaW4g
Q3VzdG9tRmlsdGVyUHJvZ3JhbS4gTm93LAorICAgICAgICAgICAgQ3VzdG9tRmlsdGVyUHJvZ3Jh
bSBpbXBsZW1lbnRzIGl0IGFuZCBjb21wYXJlcyB0aGUgcHJvZ3JhbSB0eXBlIGFuZCBtaXggc2V0
dGluZ3MsIGlmCisgICAgICAgICAgICBhcHByb3ByaWF0ZS4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3Jh
bUluZm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbUluZm86Omhh
c2gpOgorICAgICAgICAgICAgUmVmYWN0b3IgYSByZXBlYXRlZCBjb25kaXRpb24gaW50byBhIGJv
b2xlYW4gdG8gaW1wcm92ZSByZWFkYWJpbGl0eS4KKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZp
bHRlclByb2dyYW1JbmZvOjpvcGVyYXRvcj09KToKKyAgICAgICAgICAgIFJlZmFjdG9yIHJlcGVh
dGVkIGNvbmRpdGlvbnMgdG8gaW1wcm92ZSByZWFkYWJpbGl0eS4gUmVvcmRlciB0aGUgY29uZGl0
aW9ucyBzbyB0aGUgbGVzcworICAgICAgICAgICAgZXhwZW5zaXZlIG9uZXMgb2NjdXIgZmlyc3Qu
CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtOjpvcGVyYXRvcj09KToK
KyAgICAgICAgICAgIENhbGwgdGhlIGJhc2UgY2xhc3MncyBlcXVhbHMgb3BlcmF0b3IuCisKIDIw
MTItMTAtMTkgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZW9yZGVyIHNvbWUgZnVuY3Rpb25zIGluIFN1YnJlc291cmNlTG9hZGVyIHRvIHBlcm1pdCBtYWlu
IHJlc291cmNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5jcHAKaW5kZXggYzk5OTBkOS4u
OGZkODhlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW0uY3BwCkBAIC04NSw1ICs4NSwx
MCBAQCBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyBDdXN0b21GaWx0ZXJQcm9ncmFtOjpwcm9ncmFt
SW5mbygpIGNvbnN0CiAgICAgcmV0dXJuIEN1c3RvbUZpbHRlclByb2dyYW1JbmZvKHZlcnRleFNo
YWRlclN0cmluZygpLCBmcmFnbWVudFNoYWRlclN0cmluZygpLCBtX3Byb2dyYW1UeXBlLCBtX21p
eFNldHRpbmdzKTsKIH0KIAorYm9vbCBDdXN0b21GaWx0ZXJQcm9ncmFtOjpvcGVyYXRvcj09KGNv
bnN0IEN1c3RvbUZpbHRlclByb2dyYW0mIG8pIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJvZ3Jh
bVR5cGUgPT0gby5tX3Byb2dyYW1UeXBlICYmIChtX3Byb2dyYW1UeXBlICE9IFBST0dSQU1fVFlQ
RV9CTEVORFNfRUxFTUVOVF9URVhUVVJFIHx8IG1fbWl4U2V0dGluZ3MgPT0gby5tX21peFNldHRp
bmdzKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogI2VuZGlmIC8vIEVOQUJMRShDU1Nf
U0hBREVSUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtLmgKaW5kZXggMDQ5MmQ0Ny4uNDQ1ZmI0
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9D
dXN0b21GaWx0ZXJQcm9ncmFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtLmgKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGlj
OgogCiAgICAgLy8gU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtIGhhcyB0aGUgb25seSBpbXBsZW1l
bnRhdGlvbiBmb3IgdGhlIGZvbGxvd2luZyBtZXRob2QuIFRoYXQgbWVhbnMsIGl0IGNhc3RzIHRv
IFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbQogICAgIC8vIHdpdGhvdXRoIGNoZWNraW5nIHRoZSB0
eXBlLiBJZiB5b3UgYWRkIGFub3RoZXIgaW1wbGVtZW50YXRpb24sIGFsc28gYWRkIGEgbWVjaGFu
aXNtIHRvIGNoZWNrIGZvciB0aGUgY29ycmVjdCB0eXBlLgotICAgIHZpcnR1YWwgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEN1c3RvbUZpbHRlclByb2dyYW0mKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBib29sIG9wZXJhdG9yPT0oY29uc3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbSYpIGNvbnN0OwogICAg
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBDdXN0b21GaWx0ZXJQcm9ncmFtJiBvKSBjb25zdCB7IHJl
dHVybiAhKCp0aGlzID09IG8pOyB9CiBwcm90ZWN0ZWQ6CiAgICAgLy8gU3R5bGVDdXN0b21GaWx0
ZXJQcm9ncmFtIGNhbiBub3RpZnkgdGhlIGNsaWVudHMgdGhhdCB0aGUgY2FjaGVkIHJlc291cmNl
cyBhcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtSW5mby5jcHAKaW5kZXggYmMxNDk0
Zi4uN2Y0YWYzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtSW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtSW5mby5jcHAKQEAg
LTc4LDEyICs3OCwxNCBAQCB1bnNpZ25lZCBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbzo6aGFzaCgp
IGNvbnN0CiB7CiAgICAgLy8gQXQgbGVhc3Qgb25lIG9mIHRoZSBzaGFkZXJzIG5lZWRzIHRvIGJl
IG5vbi1udWxsLgogICAgIEFTU0VSVCghbV92ZXJ0ZXhTaGFkZXJTdHJpbmcuaXNOdWxsKCkgfHwg
IW1fZnJhZ21lbnRTaGFkZXJTdHJpbmcuaXNOdWxsKCkpOworCisgICAgYm9vbCBibGVuZHNFbGVt
ZW50VGV4dHVyZSA9IChtX3Byb2dyYW1UeXBlID09IFBST0dSQU1fVFlQRV9CTEVORFNfRUxFTUVO
VF9URVhUVVJFKTsKICAgICB1aW50cHRyX3QgaGFzaENvZGVzWzVdID0gewogICAgICAgICBoYXNo
UG9zc2libHlOdWxsU3RyaW5nKG1fdmVydGV4U2hhZGVyU3RyaW5nKSwKICAgICAgICAgaGFzaFBv
c3NpYmx5TnVsbFN0cmluZyhtX2ZyYWdtZW50U2hhZGVyU3RyaW5nKSwKLSAgICAgICAgbV9wcm9n
cmFtVHlwZSA9PSBQUk9HUkFNX1RZUEVfQkxFTkRTX0VMRU1FTlRfVEVYVFVSRSwKLSAgICAgICAg
bV9wcm9ncmFtVHlwZSA9PSBQUk9HUkFNX1RZUEVfQkxFTkRTX0VMRU1FTlRfVEVYVFVSRSA/IG1f
bWl4U2V0dGluZ3MuYmxlbmRNb2RlIDogMCwKLSAgICAgICAgbV9wcm9ncmFtVHlwZSA9PSBQUk9H
UkFNX1RZUEVfQkxFTkRTX0VMRU1FTlRfVEVYVFVSRSA/IG1fbWl4U2V0dGluZ3MuY29tcG9zaXRl
T3BlcmF0b3IgOiAwCisgICAgICAgIGJsZW5kc0VsZW1lbnRUZXh0dXJlLAorICAgICAgICBibGVu
ZHNFbGVtZW50VGV4dHVyZSA/IG1fbWl4U2V0dGluZ3MuYmxlbmRNb2RlIDogMCwKKyAgICAgICAg
YmxlbmRzRWxlbWVudFRleHR1cmUgPyBtX21peFNldHRpbmdzLmNvbXBvc2l0ZU9wZXJhdG9yIDog
MAogICAgIH07CiAgICAgcmV0dXJuIFN0cmluZ0hhc2hlcjo6aGFzaE1lbW9yeTxzaXplb2YoaGFz
aENvZGVzKT4oJmhhc2hDb2Rlcyk7CiB9CkBAIC05MywxNSArOTUsMTAgQEAgYm9vbCBDdXN0b21G
aWx0ZXJQcm9ncmFtSW5mbzo6b3BlcmF0b3I9PShjb25zdCBDdXN0b21GaWx0ZXJQcm9ncmFtSW5m
byYgbykgY29uc3QKICAgICBBU1NFUlQoIWlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkpOwogICAg
IEFTU0VSVCghby5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpKTsKIAotICAgIGlmIChtX3Byb2dy
YW1UeXBlID09IFBST0dSQU1fVFlQRV9CTEVORFNfRUxFTUVOVF9URVhUVVJFKQotICAgICAgICBy
ZXR1cm4gbV92ZXJ0ZXhTaGFkZXJTdHJpbmcgPT0gby5tX3ZlcnRleFNoYWRlclN0cmluZwotICAg
ICAgICAgICAgJiYgbV9mcmFnbWVudFNoYWRlclN0cmluZyA9PSBvLm1fZnJhZ21lbnRTaGFkZXJT
dHJpbmcKLSAgICAgICAgICAgICYmIG1fcHJvZ3JhbVR5cGUgPT0gby5tX3Byb2dyYW1UeXBlCi0g
ICAgICAgICAgICAmJiBtX21peFNldHRpbmdzID09IG8ubV9taXhTZXR0aW5nczsKLQotICAgIHJl
dHVybiBtX3ZlcnRleFNoYWRlclN0cmluZyA9PSBvLm1fdmVydGV4U2hhZGVyU3RyaW5nCi0gICAg
ICAgICYmIG1fZnJhZ21lbnRTaGFkZXJTdHJpbmcgPT0gby5tX2ZyYWdtZW50U2hhZGVyU3RyaW5n
Ci0gICAgICAgICYmIG1fcHJvZ3JhbVR5cGUgPT0gby5tX3Byb2dyYW1UeXBlOworICAgIHJldHVy
biBtX3Byb2dyYW1UeXBlID09IG8ubV9wcm9ncmFtVHlwZQorICAgICAgICAmJiAobV9wcm9ncmFt
VHlwZSAhPSBQUk9HUkFNX1RZUEVfQkxFTkRTX0VMRU1FTlRfVEVYVFVSRSB8fCBtX21peFNldHRp
bmdzID09IG8ubV9taXhTZXR0aW5ncykKKyAgICAgICAgJiYgbV92ZXJ0ZXhTaGFkZXJTdHJpbmcg
PT0gby5tX3ZlcnRleFNoYWRlclN0cmluZworICAgICAgICAmJiBtX2ZyYWdtZW50U2hhZGVyU3Ry
aW5nID09IG8ubV9mcmFnbWVudFNoYWRlclN0cmluZzsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3Vz
dG9tRmlsdGVyUHJvZ3JhbS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
Q3VzdG9tRmlsdGVyUHJvZ3JhbS5oCmluZGV4IDk3NDAyNGEuLjUzOGE1MmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUN1c3RvbUZpbHRlclByb2dyYW0u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21GaWx0ZXJQ
cm9ncmFtLmgKQEAgLTEyMCw2ICsxMjAsMTAgQEAgcHVibGljOgogICAgIAogICAgIHZpcnR1YWwg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IEN1c3RvbUZpbHRlclByb2dyYW0mIG8pIGNvbnN0IAogICAg
IHsKKyAgICAgICAgLy8gV2UgZG9uJ3QgdXNlIHRoZSAhPSBvcGVyYXRvciBiZWNhdXNlIHRoYXQg
d291bGQgcmVjdXJzaXZlbHkgY2FsbCB0aGlzIG1ldGhvZC4KKyAgICAgICAgaWYgKCFDdXN0b21G
aWx0ZXJQcm9ncmFtOjpvcGVyYXRvcj09KG8pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
CiAgICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgY2FzdCBpcyB1Z2x5LCBidXQgU3R5bGVDdXN0b21G
aWx0ZXJQcm9ncmFtIGlzIHRoZSBzaW5nbGUgaW1wbGVtZW50YXRpb24gb2YgQ3VzdG9tRmlsdGVy
UHJvZ3JhbS4KICAgICAgICAgY29uc3QgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtKiBvdGhlciA9
IHN0YXRpY19jYXN0PGNvbnN0IFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbSo+KCZvKTsKICAgICAg
ICAgcmV0dXJuIGNhY2hlZFZlcnRleFNoYWRlcigpID09IG90aGVyLT5jYWNoZWRWZXJ0ZXhTaGFk
ZXIoKSAmJiBjYWNoZWRGcmFnbWVudFNoYWRlcigpID09IG90aGVyLT5jYWNoZWRGcmFnbWVudFNo
YWRlcigpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>