<?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>109038</bug_id>
          
          <creation_ts>2013-02-06 03:29:09 -0800</creation_ts>
          <short_desc>[WK2][EFL]REGRESSION (r141978): ewk_view_type_check api test failing</short_desc>
          <delta_ts>2013-02-15 09:09:46 -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>WebKit EFL</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>106752</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mikhail Pozdnyakov">mikhail.pozdnyakov</reporter>
          <assigned_to name="Mikhail Pozdnyakov">mikhail.pozdnyakov</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>benjamin</cc>
    
    <cc>d-r</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kenneth</cc>
    
    <cc>kling</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>826295</commentid>
    <comment_count>0</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-02-06 03:29:09 -0800</bug_when>
    <thetext>SSIA. Assertion.
ASSERTION FAILED: evasObject &amp;&amp; isViewEvasObject(evasObject)
/home/buildslave-1/webkit-buildslave/efl-linux-64-debug-wk2/build/Source/WebKit2/UIProcess/API/efl/EwkView.cpp(1393) : EwkView* toEwkView(const Evas_Object*)
1   0x2aac5162c073 toEwkView(_Evas_Object const*)
2   0x2aac5164b8c1 ewk_view_context_get
3   0x448cf3 EWK2UnitTestBase_ewk_view_type_check_Test::TestBody()
4   0x2aac52a49fdd testing::Test::Run()
5   0x2aac52a4a601 testing::internal::TestInfoImpl::Run()
6   0x2aac52a4ab72 testing::TestCase::Run()
7   0x2aac52a4f53e testing::internal::UnitTestImpl::RunAllTests()
8   0x2aac52a4e2bc testing::UnitTest::Run()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826326</commentid>
    <comment_count>1</comment_count>
      <attachid>186823</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-02-06 04:28:05 -0800</bug_when>
    <thetext>Created attachment 186823
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826357</commentid>
    <comment_count>2</comment_count>
      <attachid>186823</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-02-06 05:14:05 -0800</bug_when>
    <thetext>Comment on attachment 186823
patch

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

&gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:1407
&gt; +        if (Ewk_View_Smart_Data* smartData = static_cast&lt;Ewk_View_Smart_Data*&gt;(evas_object_smart_data_get(evasObject)))
&gt; +            return smartData-&gt;priv;

Is that if needed? I don&apos;t believe this will return null for an invalid cast, unlike qobject_cast or similar

&gt; Source/WebKit2/UIProcess/API/efl/EwkView.h:-319
&gt;  EwkView* toEwkView(const Evas_Object*);
&gt; -EwkView* toEwkView(const Ewk_View_Smart_Data* smartData);

You removed the smartData version. That deserves a comment in the changelog. It is only used internally?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826359</commentid>
    <comment_count>3</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-02-06 05:19:17 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 186823 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=186823&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:1407
&gt; &gt; +        if (Ewk_View_Smart_Data* smartData = static_cast&lt;Ewk_View_Smart_Data*&gt;(evas_object_smart_data_get(evasObject)))
&gt; &gt; +            return smartData-&gt;priv;
&gt; 
&gt; Is that if needed? I don&apos;t believe this will return null for an invalid cast, unlike qobject_cast or similar

well, evas_object_smart_data_get itself can return null:
&quot;A pointer to data stored using evas_object_smart_data_set(), or NULL, if none has been set.&quot;

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/EwkView.h:-319
&gt; &gt;  EwkView* toEwkView(const Evas_Object*);
&gt; &gt; -EwkView* toEwkView(const Ewk_View_Smart_Data* smartData);
&gt; 
&gt; You removed the smartData version. That deserves a comment in the changelog. It is only used internally?

yes, it&apos;s used only within EwkView. I&apos;ll add the comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826360</commentid>
    <comment_count>4</comment_count>
      <attachid>186823</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-02-06 05:20:20 -0800</bug_when>
    <thetext>Comment on attachment 186823
patch

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

&gt;&gt;&gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:1407
&gt;&gt;&gt; +            return smartData-&gt;priv;
&gt;&gt; 
&gt;&gt; Is that if needed? I don&apos;t believe this will return null for an invalid cast, unlike qobject_cast or similar
&gt; 
&gt; well, evas_object_smart_data_get itself can return null:
&gt; &quot;A pointer to data stored using evas_object_smart_data_set(), or NULL, if none has been set.&quot;

But it cannot really do that if it passes the isViewEvasObject test... you could assert for it though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826363</commentid>
    <comment_count>5</comment_count>
      <attachid>186835</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-02-06 05:24:19 -0800</bug_when>
    <thetext>Created attachment 186835
patch v2

Updated change log.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826365</commentid>
    <comment_count>6</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-02-06 05:29:35 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 186823 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=186823&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:1407
&gt; &gt;&gt;&gt; +            return smartData-&gt;priv;
&gt; &gt;&gt; 
&gt; &gt;&gt; Is that if needed? I don&apos;t believe this will return null for an invalid cast, unlike qobject_cast or similar
&gt; &gt; 
&gt; &gt; well, evas_object_smart_data_get itself can return null:
&gt; &gt; &quot;A pointer to data stored using evas_object_smart_data_set(), or NULL, if none has been set.&quot;
&gt; 
&gt; But it cannot really do that if it passes the isViewEvasObject test... you could assert for it though.

indeed, re-uploading..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826371</commentid>
    <comment_count>7</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-02-06 05:44:29 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #4)
&gt; &gt; (From update of attachment 186823 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=186823&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt;&gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:1407
&gt; &gt; &gt;&gt;&gt; +            return smartData-&gt;priv;
&gt; &gt; &gt;&gt; 
&gt; &gt; &gt;&gt; Is that if needed? I don&apos;t believe this will return null for an invalid cast, unlike qobject_cast or similar
&gt; &gt; &gt; 
&gt; &gt; &gt; well, evas_object_smart_data_get itself can return null:
&gt; &gt; &gt; &quot;A pointer to data stored using evas_object_smart_data_set(), or NULL, if none has been set.&quot;
&gt; &gt; 
&gt; &gt; But it cannot really do that if it passes the isViewEvasObject test... you could assert for it though.
&gt; 
&gt; indeed, re-uploading..

well, not actually as isViewEvasObject() checks that evas object belongs to a certain Smart class, but does not make sure that the given evas object has smart data set. Putting r? again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826372</commentid>
    <comment_count>8</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-02-06 05:45:32 -0800</bug_when>
    <thetext>LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826423</commentid>
    <comment_count>9</comment_count>
      <attachid>186835</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-06 07:17:49 -0800</bug_when>
    <thetext>Comment on attachment 186835
patch v2

Attachment 186835 did not pass win-ews (win):
Output: http://queues.webkit.org/results/16397188</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826427</commentid>
    <comment_count>10</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-02-06 07:23:12 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 186835 [details])
&gt; Attachment 186835 [details] did not pass win-ews (win):
&gt; Output: http://queues.webkit.org/results/16397188

Some problems on win-ews. Unrelated to the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828696</commentid>
    <comment_count>11</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-02-08 11:34:32 -0800</bug_when>
    <thetext>Could please anyone from WK2 owners list review this (sign it off for WK2)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828700</commentid>
    <comment_count>12</comment_count>
      <attachid>186835</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-02-08 11:38:12 -0800</bug_when>
    <thetext>Comment on attachment 186835
patch v2

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

&gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:125
&gt; +static inline EwkView* toEwkView(const Ewk_View_Smart_Data* smartData)

Why did this function get moved?

&gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:1405
&gt; +    if (evasObject &amp;&amp; isViewEvasObject(evasObject)) {

Why don&apos;t we use EINA safety checks? instead of if checks? It is more common in the EFL API implementation and it would print out warnings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828701</commentid>
    <comment_count>13</comment_count>
      <attachid>186835</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-02-08 11:42:41 -0800</bug_when>
    <thetext>Comment on attachment 186835
patch v2

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

&gt; Source/WebKit2/UIProcess/API/efl/EwkView.h:321
&gt; +EwkView* toEwkViewChecked(const Evas_Object*);

If this is for public EFL API, then why is it in EwkView? I think such checks should be done on ewk_view side, shouldn&apos;t they?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828705</commentid>
    <comment_count>14</comment_count>
      <attachid>186835</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-02-08 11:57:55 -0800</bug_when>
    <thetext>Comment on attachment 186835
patch v2

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

&gt;&gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:125
&gt;&gt; +static inline EwkView* toEwkView(const Ewk_View_Smart_Data* smartData)
&gt; 
&gt; Why did this function get moved?

because it&apos;s not used outside, no need to export.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:1405
&gt;&gt; +    if (evasObject &amp;&amp; isViewEvasObject(evasObject)) {
&gt; 
&gt; Why don&apos;t we use EINA safety checks? instead of if checks? It is more common in the EFL API implementation and it would print out warnings.

to keep code more compact, messages will be printed anyway from EWK_VIEW_IMPL_GET_OR_RETURN.
BTW, to my mind it&apos;s better to keep consistency with toEwkView() which does not emit &quot;spank, spank, spank&quot; to the client..

&gt;&gt; Source/WebKit2/UIProcess/API/efl/EwkView.h:321
&gt;&gt; +EwkView* toEwkViewChecked(const Evas_Object*);
&gt; 
&gt; If this is for public EFL API, then why is it in EwkView? I think such checks should be done on ewk_view side, shouldn&apos;t they?

Think this place is better - similar functions are in the same place. In ewk_view I would leave only wrappers for EwkView method calls.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828709</commentid>
    <comment_count>15</comment_count>
      <attachid>186835</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-02-08 12:07:26 -0800</bug_when>
    <thetext>Comment on attachment 186835
patch v2

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

&gt;&gt;&gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:125
&gt;&gt;&gt; +static inline EwkView* toEwkView(const Ewk_View_Smart_Data* smartData)
&gt;&gt; 
&gt;&gt; Why did this function get moved?
&gt; 
&gt; because it&apos;s not used outside, no need to export.

I see, makes sense.

&gt;&gt;&gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:1405
&gt;&gt;&gt; +    if (evasObject &amp;&amp; isViewEvasObject(evasObject)) {
&gt;&gt; 
&gt;&gt; Why don&apos;t we use EINA safety checks? instead of if checks? It is more common in the EFL API implementation and it would print out warnings.
&gt; 
&gt; to keep code more compact, messages will be printed anyway from EWK_VIEW_IMPL_GET_OR_RETURN.
&gt; BTW, to my mind it&apos;s better to keep consistency with toEwkView() which does not emit &quot;spank, spank, spank&quot; to the client..

This is called only in our public EFL API implementation. We want to emit warnings on bad arguments. Sure, EWK_VIEW_IMPL_GET_OR_RETURN will print a warning but we won&apos;t know which check has failed: Was the argument NULL? Was the argument not a view object? Was the smart data missing?

&gt;&gt;&gt; Source/WebKit2/UIProcess/API/efl/EwkView.h:321
&gt;&gt;&gt; +EwkView* toEwkViewChecked(const Evas_Object*);
&gt;&gt; 
&gt;&gt; If this is for public EFL API, then why is it in EwkView? I think such checks should be done on ewk_view side, shouldn&apos;t they?
&gt; 
&gt; Think this place is better - similar functions are in the same place. In ewk_view I would leave only wrappers for EwkView method calls.

This function is used only in ewk_view.cpp and is used only for checking arguments to our EFL C API. I still think it should be in ewk_view.cpp instead of EwkView (which is private implementation). We do not want people to start using this function is EwkView.cpp as it does not assert.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828730</commentid>
    <comment_count>16</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-02-08 13:07:29 -0800</bug_when>
    <thetext> 
&gt; &gt;&gt;&gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:1405
&gt; &gt;&gt;&gt; +    if (evasObject &amp;&amp; isViewEvasObject(evasObject)) {
&gt; &gt;&gt; 
&gt; &gt;&gt; Why don&apos;t we use EINA safety checks? instead of if checks? It is more common in the EFL API implementation and it would print out warnings.
&gt; &gt; 
&gt; &gt; to keep code more compact, messages will be printed anyway from EWK_VIEW_IMPL_GET_OR_RETURN.
&gt; &gt; BTW, to my mind it&apos;s better to keep consistency with toEwkView() which does not emit &quot;spank, spank, spank&quot; to the client..
&gt; 
&gt; This is called only in our public EFL API implementation. We want to emit warnings on bad arguments. Sure, EWK_VIEW_IMPL_GET_OR_RETURN will print a warning but we won&apos;t know which check has failed: Was the argument NULL? Was the argument not a view object? Was the smart data missing?
&gt; 
&gt; &gt;&gt;&gt; Source/WebKit2/UIProcess/API/efl/EwkView.h:321
&gt; &gt;&gt;&gt; +EwkView* toEwkViewChecked(const Evas_Object*);
&gt; &gt;&gt; 
&gt; &gt;&gt; If this is for public EFL API, then why is it in EwkView? I think such checks should be done on ewk_view side, shouldn&apos;t they?
&gt; &gt; 
&gt; &gt; Think this place is better - similar functions are in the same place. In ewk_view I would leave only wrappers for EwkView method calls.
&gt; 
&gt; This function is used only in ewk_view.cpp and is used only for checking arguments to our EFL C API. I still think it should be in ewk_view.cpp instead of EwkView (which is private implementation). We do not want people to start using this function is EwkView.cpp as it does not assert.

ok, let&apos;s do so.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828733</commentid>
    <comment_count>17</comment_count>
      <attachid>187354</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-02-08 13:08:59 -0800</bug_when>
    <thetext>Created attachment 187354
patch v3

took comments from Chris into consideration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828754</commentid>
    <comment_count>18</comment_count>
      <attachid>187362</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-02-08 14:02:30 -0800</bug_when>
    <thetext>Created attachment 187362
patch v4

1) isViewEvasObject can emit warnings itself, so no need to put it inside EINA safety check.
2) renamed isViewEvasObject to isEwkViewEvasObject to be consistent with other function names.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828760</commentid>
    <comment_count>19</comment_count>
      <attachid>187362</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-02-08 14:14:09 -0800</bug_when>
    <thetext>Comment on attachment 187362
patch v4

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

LGTM. Thanks.

&gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:124
&gt; +    ASSERT(smartData &amp;&amp; smartData-&gt;priv);

nit: Wouldn&apos;t it be better with 2 assertions so that we know which one fails?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>834056</commentid>
    <comment_count>20</comment_count>
      <attachid>187362</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-02-15 08:40:44 -0800</bug_when>
    <thetext>Comment on attachment 187362
patch v4

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

&gt; Source/WebKit2/UIProcess/API/efl/EwkView.cpp:1365
&gt; -    ASSERT(evasObject &amp;&amp; isViewEvasObject(evasObject));
&gt; +    ASSERT(evasObject &amp;&amp; isEwkViewEvasObject(evasObject));

Same comment about the assert here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>834080</commentid>
    <comment_count>21</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-02-15 09:09:46 -0800</bug_when>
    <thetext>Committed r143007: &lt;http://trac.webkit.org/changeset/143007&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186823</attachid>
            <date>2013-02-06 04:28:05 -0800</date>
            <delta_ts>2013-02-06 05:24:19 -0800</delta_ts>
            <desc>patch</desc>
            <filename>bug109038</filename>
            <type>text/plain</type>
            <size>4326</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IDNmOTgxNDA3YTUxMzlkOWE0ZTY5OGM1ZTBiZDg3MjFmYTlkMzg0ZjkKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
V2VkIEZlYiA2IDE0OjIyOjMwIDIwMTMgKzAyMDAKCiAgICBidWcxMDkwMzgKCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggYzFhNDgyNC4uNDM0YmQzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIzIEBACiAyMDEzLTAy
LTA2ICBNaWtoYWlsIFBvemRueWFrb3YgIDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tPgog
CisgICAgICAgIFtXSzJdW0VGTF1SRUdSRVNTSU9OIChyMTQxOTc4KTogZXdrX3ZpZXdfdHlwZV9j
aGVjayBhcGkgdGVzdCBmYWlsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDkwMzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBFRkwgQVBJIGlzIGRlZmVuc2l2ZSBieSBpdHMgbmF0dXJlIGFuZCBleHBl
Y3RzIGdyYWNlZnVsIGhhbmRsaW5nIG9mIHdyb25nIGZ1bmN0aW9uIGFyZ3VtZW50cworICAgICAg
ICB3aGVyZWFzIHdlYmtpdCBpbXBsZW1lbnRhdGlvbiBjb2RlIGRvZXMgbm90LiBUaGlzIHBhdGNo
IGFkZHMgbmV3ICd0b0V3a1ZpZXdDaGVja2VkJyBmdW5jdGlvbiwKKyAgICAgICAgd2hpY2ggcHJv
dmlkZXMgaGFuZGxpbmcgb2Ygd3JvbmcgYXJndW1lbnRzLCB0byBiZSB1c2VkIHdpdGhpbiBFRkwg
QVBJIGxheWVyIGNvZGUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNw
cDoKKyAgICAgICAgKHRvRXdrVmlldyk6CisgICAgICAgIChFd2tWaWV3OjpoYW5kbGVUb3VjaE1v
dmUpOgorICAgICAgICAodG9Fd2tWaWV3Q2hlY2tlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9lZmwvRXdrVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNw
cDoKKworMjAxMy0wMi0wNiAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlha292
QGludGVsLmNvbT4KKwogICAgICAgICBbRUZMXVtXSzJdIEVuY2Fwc3VsYXRlIEV3ayBWaWV3IGV2
YXMgc21hcnQgb2JqZWN0IGNvZGUgaW5zaWRlIEV3a1ZpZXcgY2xhc3MKICAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODA2MgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwCmluZGV4IDI4ZGNhYTUuLmNmZmE5ODQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwCkBAIC0x
MjIsNiArMTIyLDEyIEBAIHN0YXRpYyBpbmxpbmUgRXdrX1ZpZXdfU21hcnRfRGF0YSogdG9TbWFy
dERhdGEoRXZhc19PYmplY3QqIGV2YXNPYmplY3QpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEV3
a19WaWV3X1NtYXJ0X0RhdGEqPihldmFzX29iamVjdF9zbWFydF9kYXRhX2dldChldmFzT2JqZWN0
KSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgRXdrVmlldyogdG9Fd2tWaWV3KGNvbnN0IEV3a19WaWV3
X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKK3sKKyAgICBBU1NFUlQoc21hcnREYXRhICYmIHNtYXJ0
RGF0YS0+cHJpdik7CisgICAgcmV0dXJuIHNtYXJ0RGF0YS0+cHJpdjsKK30KKwogLy8gRXdrVmll
d0V2ZW50SGFuZGxlciBpbXBsZW1lbnRhdGlvbi4KIAogdGVtcGxhdGUgPEV2YXNfQ2FsbGJhY2tf
VHlwZSBFdmVudFR5cGU+CkBAIC0xMzQwLDcgKzEzNDYsNyBAQCB2b2lkIEV3a1ZpZXc6OmhhbmRs
ZVRvdWNoVXAodm9pZCogLyogZGF0YSAqLywgRXZhcyogLyogY2FudmFzICovLCBFdmFzX09iamVj
dCogZQogfQogCiB2b2lkIEV3a1ZpZXc6OmhhbmRsZVRvdWNoTW92ZSh2b2lkKiAvKiBkYXRhICov
LCBFdmFzKiAvKiBjYW52YXMgKi8sIEV2YXNfT2JqZWN0KiBld2tWaWV3LCB2b2lkKiAvKiBldmVu
dEluZm8gKi8pCi17ICAgIAorewogICAgIHRvRXdrVmlldyhld2tWaWV3KS0+ZmVlZFRvdWNoRXZl
bnRzKEVXS19UT1VDSF9NT1ZFKTsKIH0KICNlbmRpZgpAQCAtMTM5NCwxMCArMTQwMCwxMyBAQCBF
d2tWaWV3KiB0b0V3a1ZpZXcoY29uc3QgRXZhc19PYmplY3QqIGV2YXNPYmplY3QpCiAgICAgcmV0
dXJuIHRvRXdrVmlldyhzdGF0aWNfY2FzdDxFd2tfVmlld19TbWFydF9EYXRhKj4oZXZhc19vYmpl
Y3Rfc21hcnRfZGF0YV9nZXQoZXZhc09iamVjdCkpKTsKIH0KIAotRXdrVmlldyogdG9Fd2tWaWV3
KGNvbnN0IEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKK0V3a1ZpZXcqIHRvRXdrVmll
d0NoZWNrZWQoY29uc3QgRXZhc19PYmplY3QqIGV2YXNPYmplY3QpCiB7Ci0gICAgQVNTRVJUKHNt
YXJ0RGF0YSAmJiBzbWFydERhdGEtPnByaXYpOwotICAgIHJldHVybiBzbWFydERhdGEtPnByaXY7
CisgICAgaWYgKGV2YXNPYmplY3QgJiYgaXNWaWV3RXZhc09iamVjdChldmFzT2JqZWN0KSkgewor
ICAgICAgICBpZiAoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhID0gc3RhdGljX2Nhc3Q8
RXdrX1ZpZXdfU21hcnRfRGF0YSo+KGV2YXNfb2JqZWN0X3NtYXJ0X2RhdGFfZ2V0KGV2YXNPYmpl
Y3QpKSkKKyAgICAgICAgICAgIHJldHVybiBzbWFydERhdGEtPnByaXY7CisgICAgfQorICAgIHJl
dHVybiAwOwogfQogCiBib29sIGlzVmlld0V2YXNPYmplY3QoY29uc3QgRXZhc19PYmplY3QqIGV2
YXNPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9F
d2tWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmgKaW5k
ZXggMzY2ZDFiZC4uZDgzN2RhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvRXdrVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L0V3a1ZpZXcuaApAQCAtMzE2LDggKzMxNiwxMSBAQCBwcml2YXRlOgogfTsKIAogRXdrVmlldyog
dG9Fd2tWaWV3KGNvbnN0IEV2YXNfT2JqZWN0Kik7Ci1Fd2tWaWV3KiB0b0V3a1ZpZXcoY29uc3Qg
RXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKTsKIAotYm9vbCBpc1ZpZXdFdmFzT2JqZWN0
KGNvbnN0IEV2YXNfT2JqZWN0KiBldmFzT2JqZWN0KTsKKy8vIFB1YmxpYyBFRkwgQVBJIGV4cGVj
dHMgZ3JhY2VmdWwgaGFuZGxpbmcgb2Ygd3JvbmcgYXJndW1lbnRzLgorRXdrVmlldyogdG9Fd2tW
aWV3Q2hlY2tlZChjb25zdCBFdmFzX09iamVjdCopOworCitib29sIGlzVmlld0V2YXNPYmplY3Qo
Y29uc3QgRXZhc19PYmplY3QqKTsKKwogCiAjZW5kaWYgLy8gRXdrVmlld19oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKaW5kZXggYzUzZDg0ZC4uZTAx
NzM5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Zp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNw
cApAQCAtNjUsNyArNjUsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKICNkZWZpbmUgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKGV3a1Zp
ZXcsIGltcGwsIC4uLikgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgRXdrVmlldyogaW1w
bCA9IHRvRXdrVmlldyhld2tWaWV3KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgIEV3a1ZpZXcqIGltcGwgPSB0b0V3a1ZpZXdDaGVja2VkKGV3a1ZpZXcpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBkbyB7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CiAgICAgICAgIGlmICghaW1wbCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgRUlOQV9MT0dfQ1JJVCgibm8g
cHJpdmF0ZSBkYXRhIGZvciBvYmplY3QgJXAiLCBld2tWaWV3KTsgICAgICAgICAgIFwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186835</attachid>
            <date>2013-02-06 05:24:19 -0800</date>
            <delta_ts>2013-02-08 13:08:59 -0800</delta_ts>
            <desc>patch v2</desc>
            <filename>bug109038_v2</filename>
            <type>text/plain</type>
            <size>4477</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IDY5NGI5NDJhODgxMTQ3ZDhlYmEzNjQ4NTM5NTYzN2QzYjMwZjE0ZTUKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
V2VkIEZlYiA2IDE0OjIyOjMwIDIwMTMgKzAyMDAKCiAgICBidWcxMDkwMzgKCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggYzFhNDgyNC4uY2E0YWEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI3IEBACiAyMDEzLTAy
LTA2ICBNaWtoYWlsIFBvemRueWFrb3YgIDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tPgog
CisgICAgICAgIFtXSzJdW0VGTF1SRUdSRVNTSU9OIChyMTQxOTc4KTogZXdrX3ZpZXdfdHlwZV9j
aGVjayBhcGkgdGVzdCBmYWlsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDkwMzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBFRkwgQVBJIGlzIGRlZmVuc2l2ZSBieSBpdHMgbmF0dXJlIGFuZCBleHBl
Y3RzIGdyYWNlZnVsIGhhbmRsaW5nIG9mIHdyb25nIGZ1bmN0aW9uIGFyZ3VtZW50cworICAgICAg
ICB3aGVyZWFzIHdlYmtpdCBpbXBsZW1lbnRhdGlvbiBjb2RlIGRvZXMgbm90LiBUaGlzIHBhdGNo
IGFkZHMgbmV3ICd0b0V3a1ZpZXdDaGVja2VkJyBmdW5jdGlvbiwKKyAgICAgICAgd2hpY2ggcHJv
dmlkZXMgaGFuZGxpbmcgb2Ygd3JvbmcgYXJndW1lbnRzLCB0byBiZSB1c2VkIHdpdGhpbiBFRkwg
QVBJIGxheWVyIGNvZGUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNw
cDoKKyAgICAgICAgKHRvRXdrVmlldyk6CisKKyAgICAgICAgICAgIEV3a1ZpZXcqIHRvRXdrVmll
dyhjb25zdCBFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpIGlzIG5vdCBleHBvcnRlZCBh
bnltb3JlCisgICAgICAgICAgICBhcyBpdCdzIHVzZWQgd2l0aGluIEV3a1ZpZXcgY2xhc3Mgb25s
eS4KKworICAgICAgICAoRXdrVmlldzo6aGFuZGxlVG91Y2hNb3ZlKToKKyAgICAgICAgKHRvRXdr
Vmlld0NoZWNrZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHA6CisKKzIwMTMtMDItMDYgIE1p
a2hhaWwgUG96ZG55YWtvdiAgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CisKICAgICAg
ICAgW0VGTF1bV0syXSBFbmNhcHN1bGF0ZSBFd2sgVmlldyBldmFzIHNtYXJ0IG9iamVjdCBjb2Rl
IGluc2lkZSBFd2tWaWV3IGNsYXNzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDgwNjIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9Fd2tWaWV3LmNwcAppbmRleCAyOGRjYWE1Li5jZmZhOTg0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcApAQCAtMTIyLDYgKzEyMiwxMiBAQCBzdGF0
aWMgaW5saW5lIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHRvU21hcnREYXRhKEV2YXNfT2JqZWN0KiBl
dmFzT2JqZWN0KQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxFd2tfVmlld19TbWFydF9EYXRhKj4o
ZXZhc19vYmplY3Rfc21hcnRfZGF0YV9nZXQoZXZhc09iamVjdCkpOwogfQogCitzdGF0aWMgaW5s
aW5lIEV3a1ZpZXcqIHRvRXdrVmlldyhjb25zdCBFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERh
dGEpCit7CisgICAgQVNTRVJUKHNtYXJ0RGF0YSAmJiBzbWFydERhdGEtPnByaXYpOworICAgIHJl
dHVybiBzbWFydERhdGEtPnByaXY7Cit9CisKIC8vIEV3a1ZpZXdFdmVudEhhbmRsZXIgaW1wbGVt
ZW50YXRpb24uCiAKIHRlbXBsYXRlIDxFdmFzX0NhbGxiYWNrX1R5cGUgRXZlbnRUeXBlPgpAQCAt
MTM0MCw3ICsxMzQ2LDcgQEAgdm9pZCBFd2tWaWV3OjpoYW5kbGVUb3VjaFVwKHZvaWQqIC8qIGRh
dGEgKi8sIEV2YXMqIC8qIGNhbnZhcyAqLywgRXZhc19PYmplY3QqIGUKIH0KIAogdm9pZCBFd2tW
aWV3OjpoYW5kbGVUb3VjaE1vdmUodm9pZCogLyogZGF0YSAqLywgRXZhcyogLyogY2FudmFzICov
LCBFdmFzX09iamVjdCogZXdrVmlldywgdm9pZCogLyogZXZlbnRJbmZvICovKQoteyAgICAKK3sK
ICAgICB0b0V3a1ZpZXcoZXdrVmlldyktPmZlZWRUb3VjaEV2ZW50cyhFV0tfVE9VQ0hfTU9WRSk7
CiB9CiAjZW5kaWYKQEAgLTEzOTQsMTAgKzE0MDAsMTMgQEAgRXdrVmlldyogdG9Fd2tWaWV3KGNv
bnN0IEV2YXNfT2JqZWN0KiBldmFzT2JqZWN0KQogICAgIHJldHVybiB0b0V3a1ZpZXcoc3RhdGlj
X2Nhc3Q8RXdrX1ZpZXdfU21hcnRfRGF0YSo+KGV2YXNfb2JqZWN0X3NtYXJ0X2RhdGFfZ2V0KGV2
YXNPYmplY3QpKSk7CiB9CiAKLUV3a1ZpZXcqIHRvRXdrVmlldyhjb25zdCBFd2tfVmlld19TbWFy
dF9EYXRhKiBzbWFydERhdGEpCitFd2tWaWV3KiB0b0V3a1ZpZXdDaGVja2VkKGNvbnN0IEV2YXNf
T2JqZWN0KiBldmFzT2JqZWN0KQogewotICAgIEFTU0VSVChzbWFydERhdGEgJiYgc21hcnREYXRh
LT5wcml2KTsKLSAgICByZXR1cm4gc21hcnREYXRhLT5wcml2OworICAgIGlmIChldmFzT2JqZWN0
ICYmIGlzVmlld0V2YXNPYmplY3QoZXZhc09iamVjdCkpIHsKKyAgICAgICAgaWYgKEV3a19WaWV3
X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSA9IHN0YXRpY19jYXN0PEV3a19WaWV3X1NtYXJ0X0RhdGEq
PihldmFzX29iamVjdF9zbWFydF9kYXRhX2dldChldmFzT2JqZWN0KSkpCisgICAgICAgICAgICBy
ZXR1cm4gc21hcnREYXRhLT5wcml2OworICAgIH0KKyAgICByZXR1cm4gMDsKIH0KIAogYm9vbCBp
c1ZpZXdFdmFzT2JqZWN0KGNvbnN0IEV2YXNfT2JqZWN0KiBldmFzT2JqZWN0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oCmluZGV4IDM2NmQxYmQuLmQ4MzdkYTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmgKQEAgLTMxNiw4
ICszMTYsMTEgQEAgcHJpdmF0ZToKIH07CiAKIEV3a1ZpZXcqIHRvRXdrVmlldyhjb25zdCBFdmFz
X09iamVjdCopOwotRXdrVmlldyogdG9Fd2tWaWV3KGNvbnN0IEV3a19WaWV3X1NtYXJ0X0RhdGEq
IHNtYXJ0RGF0YSk7CiAKLWJvb2wgaXNWaWV3RXZhc09iamVjdChjb25zdCBFdmFzX09iamVjdCog
ZXZhc09iamVjdCk7CisvLyBQdWJsaWMgRUZMIEFQSSBleHBlY3RzIGdyYWNlZnVsIGhhbmRsaW5n
IG9mIHdyb25nIGFyZ3VtZW50cy4KK0V3a1ZpZXcqIHRvRXdrVmlld0NoZWNrZWQoY29uc3QgRXZh
c19PYmplY3QqKTsKKworYm9vbCBpc1ZpZXdFdmFzT2JqZWN0KGNvbnN0IEV2YXNfT2JqZWN0Kik7
CisKIAogI2VuZGlmIC8vIEV3a1ZpZXdfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3ZpZXcuY3BwCmluZGV4IGM1M2Q4NGQuLmUwMTczOWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKQEAgLTY1LDcgKzY1LDcgQEAg
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiAjZGVm
aW5lIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihld2tWaWV3LCBpbXBsLCAuLi4pICAgICAg
ICAgICAgICAgICAgICAgICAgXAotICAgIEV3a1ZpZXcqIGltcGwgPSB0b0V3a1ZpZXcoZXdrVmll
dyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBFd2tWaWV3
KiBpbXBsID0gdG9Fd2tWaWV3Q2hlY2tlZChld2tWaWV3KTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCiAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBpZiAoIWltcGwp
IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKICAgICAgICAgICAgIEVJTkFfTE9HX0NSSVQoIm5vIHByaXZhdGUgZGF0YSBmb3Igb2Jq
ZWN0ICVwIiwgZXdrVmlldyk7ICAgICAgICAgICBcCg==
</data>
<flag name="commit-queue"
          id="206441"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187354</attachid>
            <date>2013-02-08 13:08:59 -0800</date>
            <delta_ts>2013-02-08 13:44:23 -0800</delta_ts>
            <desc>patch v3</desc>
            <filename>bug109038_v3</filename>
            <type>text/plain</type>
            <size>4393</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IGM0NmZjYzM5ZjFhZmJmMTg3NmI4N2JkNjRjYjY5NmY3MWE3ZmZiMjAKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
V2VkIEZlYiA2IDE0OjIyOjMwIDIwMTMgKzAyMDAKCiAgICBidWcxMDkwMzgKCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggNjk5YTI3Ny4uMmUyYWM1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEzLTAy
LTA4ICBNaWtoYWlsIFBvemRueWFrb3YgIDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tPgor
CisgICAgICAgIFtXSzJdW0VGTF1SRUdSRVNTSU9OIChyMTQxOTc4KTogZXdrX3ZpZXdfdHlwZV9j
aGVjayBhcGkgdGVzdCBmYWlsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDkwMzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBFRkwgQVBJIGlzIGRlZmVuc2l2ZSBieSBpdHMgbmF0dXJlIGFuZCBleHBl
Y3RzIGdyYWNlZnVsIGhhbmRsaW5nIG9mIHdyb25nIGZ1bmN0aW9uIGFyZ3VtZW50cworICAgICAg
ICB3aGVyZWFzIHdlYmtpdCBpbXBsZW1lbnRhdGlvbiBjb2RlIGRvZXMgbm90LiBUaGlzIHBhdGNo
IGFkZHMgbmV3ICd0b0V3a1ZpZXdDaGVja2VkJyBmdW5jdGlvbiwKKyAgICAgICAgd2hpY2ggcHJv
dmlkZXMgaGFuZGxpbmcgb2Ygd3JvbmcgYXJndW1lbnRzLCB0byBiZSB1c2VkIHdpdGhpbiBFRkwg
QVBJIGxheWVyIGNvZGUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNw
cDoKKyAgICAgICAgKHRvRXdrVmlldyk6CisKKyAgICAgICAgICAgIEV3a1ZpZXcqIHRvRXdrVmll
dyhjb25zdCBFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpIGlzIG5vdCBleHBvcnRlZCBh
bnltb3JlCisgICAgICAgICAgICBhcyBpdCdzIHVzZWQgd2l0aGluIEV3a1ZpZXcgY2xhc3Mgb25s
eS4gICAgICAgIAorCisgICAgICAgIChFd2tWaWV3OjpoYW5kbGVUb3VjaE1vdmUpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfdmlldy5jcHA6CisgICAgICAgICh0b0V3a1ZpZXdDaGVja2VkKToKKwogMjAxMy0w
Mi0wNyAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE0MjIxMi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAKaW5kZXggYzQ1MzMxMy4uYWUyMWFjZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAKQEAgLTExOSw2ICsx
MTksMTIgQEAgc3RhdGljIGlubGluZSBFd2tfVmlld19TbWFydF9EYXRhKiB0b1NtYXJ0RGF0YShF
dmFzX09iamVjdCogZXZhc09iamVjdCkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdf
U21hcnRfRGF0YSo+KGV2YXNfb2JqZWN0X3NtYXJ0X2RhdGFfZ2V0KGV2YXNPYmplY3QpKTsKIH0K
IAorc3RhdGljIGlubGluZSBFd2tWaWV3KiB0b0V3a1ZpZXcoY29uc3QgRXdrX1ZpZXdfU21hcnRf
RGF0YSogc21hcnREYXRhKQoreworICAgIEFTU0VSVChzbWFydERhdGEgJiYgc21hcnREYXRhLT5w
cml2KTsKKyAgICByZXR1cm4gc21hcnREYXRhLT5wcml2OworfQorCiAvLyBFd2tWaWV3RXZlbnRI
YW5kbGVyIGltcGxlbWVudGF0aW9uLgogCiB0ZW1wbGF0ZSA8RXZhc19DYWxsYmFja19UeXBlIEV2
ZW50VHlwZT4KQEAgLTEzMTAsNyArMTMxNiw3IEBAIHZvaWQgRXdrVmlldzo6aGFuZGxlVG91Y2hV
cCh2b2lkKiAvKiBkYXRhICovLCBFdmFzKiAvKiBjYW52YXMgKi8sIEV2YXNfT2JqZWN0KiBlCiB9
CiAKIHZvaWQgRXdrVmlldzo6aGFuZGxlVG91Y2hNb3ZlKHZvaWQqIC8qIGRhdGEgKi8sIEV2YXMq
IC8qIGNhbnZhcyAqLywgRXZhc19PYmplY3QqIGV3a1ZpZXcsIHZvaWQqIC8qIGV2ZW50SW5mbyAq
LykKLXsgICAgCit7CiAgICAgdG9Fd2tWaWV3KGV3a1ZpZXcpLT5mZWVkVG91Y2hFdmVudHMoRVdL
X1RPVUNIX01PVkUpOwogfQogI2VuZGlmCkBAIC0xMzYwLDEyICsxMzY2LDYgQEAgRXdrVmlldyog
dG9Fd2tWaWV3KGNvbnN0IEV2YXNfT2JqZWN0KiBldmFzT2JqZWN0KQogICAgIHJldHVybiB0b0V3
a1ZpZXcoc3RhdGljX2Nhc3Q8RXdrX1ZpZXdfU21hcnRfRGF0YSo+KGV2YXNfb2JqZWN0X3NtYXJ0
X2RhdGFfZ2V0KGV2YXNPYmplY3QpKSk7CiB9CiAKLUV3a1ZpZXcqIHRvRXdrVmlldyhjb25zdCBF
d2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCi17Ci0gICAgQVNTRVJUKHNtYXJ0RGF0YSAm
JiBzbWFydERhdGEtPnByaXYpOwotICAgIHJldHVybiBzbWFydERhdGEtPnByaXY7Ci19Ci0KIGJv
b2wgaXNWaWV3RXZhc09iamVjdChjb25zdCBFdmFzX09iamVjdCogZXZhc09iamVjdCkKIHsKICAg
ICBBU1NFUlQoZXZhc09iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9Fd2tWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9F
d2tWaWV3LmgKaW5kZXggOWFkZmIwZi4uNGMzMmNlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaApAQCAtMjk4LDggKzI5OCw3IEBAIHByaXZhdGU6CiB9Owog
CiBFd2tWaWV3KiB0b0V3a1ZpZXcoY29uc3QgRXZhc19PYmplY3QqKTsKLUV3a1ZpZXcqIHRvRXdr
Vmlldyhjb25zdCBFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpOwogCi1ib29sIGlzVmll
d0V2YXNPYmplY3QoY29uc3QgRXZhc19PYmplY3QqIGV2YXNPYmplY3QpOworYm9vbCBpc1ZpZXdF
dmFzT2JqZWN0KGNvbnN0IEV2YXNfT2JqZWN0Kik7CiAKICNlbmRpZiAvLyBFd2tWaWV3X2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAppbmRleCA4NjNi
ZTQ4Li42Y2I4NmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3ZpZXcuY3BwCkBAIC02Miw4ICs2MiwxOSBAQAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCitzdGF0aWMgaW5saW5lIEV3a1ZpZXcqIHRvRXdrVmll
d0NoZWNrZWQoY29uc3QgRXZhc19PYmplY3QqIGV2YXNPYmplY3QpCit7CisgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk5fVkFMKGV2YXNPYmplY3QsIDApOworICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOX1ZBTChpc1ZpZXdFdmFzT2JqZWN0KGV2YXNPYmplY3QpLCAwKTsKKworICAg
IEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSA9IHN0YXRpY19jYXN0PEV3a19WaWV3X1Nt
YXJ0X0RhdGEqPihldmFzX29iamVjdF9zbWFydF9kYXRhX2dldChldmFzT2JqZWN0KSk7CisgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YSwgMCk7CisKKyAgICByZXR1
cm4gc21hcnREYXRhLT5wcml2OworfQorCiAjZGVmaW5lIEVXS19WSUVXX0lNUExfR0VUX09SX1JF
VFVSTihld2tWaWV3LCBpbXBsLCAuLi4pICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIEV3
a1ZpZXcqIGltcGwgPSB0b0V3a1ZpZXcoZXdrVmlldyk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICBFd2tWaWV3KiBpbXBsID0gdG9Fd2tWaWV3Q2hlY2tlZChl
d2tWaWV3KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgZG8geyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAogICAgICAgICBpZiAoIWltcGwpIHsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIEVJTkFfTE9H
X0NSSVQoIm5vIHByaXZhdGUgZGF0YSBmb3Igb2JqZWN0ICVwIiwgZXdrVmlldyk7ICAgICAgICAg
ICBcCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187362</attachid>
            <date>2013-02-08 14:02:30 -0800</date>
            <delta_ts>2013-02-15 08:40:44 -0800</delta_ts>
            <desc>patch v4</desc>
            <filename>bug109038_v4</filename>
            <type>text/plain</type>
            <size>4817</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IDU0MjExOGMxMjA3N2YyZGNiYmI5MTgyYjFkMDg0OGIxOTk4M2ZkYTgKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
V2VkIEZlYiA2IDE0OjIyOjMwIDIwMTMgKzAyMDAKCiAgICBidWcxMDkwMzgKCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggNjk5YTI3Ny4uMmUyYWM1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEzLTAy
LTA4ICBNaWtoYWlsIFBvemRueWFrb3YgIDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tPgor
CisgICAgICAgIFtXSzJdW0VGTF1SRUdSRVNTSU9OIChyMTQxOTc4KTogZXdrX3ZpZXdfdHlwZV9j
aGVjayBhcGkgdGVzdCBmYWlsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDkwMzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBFRkwgQVBJIGlzIGRlZmVuc2l2ZSBieSBpdHMgbmF0dXJlIGFuZCBleHBl
Y3RzIGdyYWNlZnVsIGhhbmRsaW5nIG9mIHdyb25nIGZ1bmN0aW9uIGFyZ3VtZW50cworICAgICAg
ICB3aGVyZWFzIHdlYmtpdCBpbXBsZW1lbnRhdGlvbiBjb2RlIGRvZXMgbm90LiBUaGlzIHBhdGNo
IGFkZHMgbmV3ICd0b0V3a1ZpZXdDaGVja2VkJyBmdW5jdGlvbiwKKyAgICAgICAgd2hpY2ggcHJv
dmlkZXMgaGFuZGxpbmcgb2Ygd3JvbmcgYXJndW1lbnRzLCB0byBiZSB1c2VkIHdpdGhpbiBFRkwg
QVBJIGxheWVyIGNvZGUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNw
cDoKKyAgICAgICAgKHRvRXdrVmlldyk6CisKKyAgICAgICAgICAgIEV3a1ZpZXcqIHRvRXdrVmll
dyhjb25zdCBFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpIGlzIG5vdCBleHBvcnRlZCBh
bnltb3JlCisgICAgICAgICAgICBhcyBpdCdzIHVzZWQgd2l0aGluIEV3a1ZpZXcgY2xhc3Mgb25s
eS4gICAgICAgIAorCisgICAgICAgIChFd2tWaWV3OjpoYW5kbGVUb3VjaE1vdmUpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfdmlldy5jcHA6CisgICAgICAgICh0b0V3a1ZpZXdDaGVja2VkKToKKwogMjAxMy0w
Mi0wNyAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE0MjIxMi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAKaW5kZXggYzQ1MzMxMy4uNDM4ZDA1OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHAKQEAgLTExNCwxMSAr
MTE0LDE3IEBAIHN0YXRpYyBFdmFzX1NtYXJ0KiBkZWZhdWx0U21hcnRDbGFzc0luc3RhbmNlKCkK
IAogc3RhdGljIGlubGluZSBFd2tfVmlld19TbWFydF9EYXRhKiB0b1NtYXJ0RGF0YShFdmFzX09i
amVjdCogZXZhc09iamVjdCkKIHsKLSAgICBBU1NFUlQoZXZhc09iamVjdCAmJiBpc1ZpZXdFdmFz
T2JqZWN0KGV2YXNPYmplY3QpKTsKKyAgICBBU1NFUlQoZXZhc09iamVjdCAmJiBpc0V3a1ZpZXdF
dmFzT2JqZWN0KGV2YXNPYmplY3QpKTsKIAogICAgIHJldHVybiBzdGF0aWNfY2FzdDxFd2tfVmll
d19TbWFydF9EYXRhKj4oZXZhc19vYmplY3Rfc21hcnRfZGF0YV9nZXQoZXZhc09iamVjdCkpOwog
fQogCitzdGF0aWMgaW5saW5lIEV3a1ZpZXcqIHRvRXdrVmlldyhjb25zdCBFd2tfVmlld19TbWFy
dF9EYXRhKiBzbWFydERhdGEpCit7CisgICAgQVNTRVJUKHNtYXJ0RGF0YSAmJiBzbWFydERhdGEt
PnByaXYpOworICAgIHJldHVybiBzbWFydERhdGEtPnByaXY7Cit9CisKIC8vIEV3a1ZpZXdFdmVu
dEhhbmRsZXIgaW1wbGVtZW50YXRpb24uCiAKIHRlbXBsYXRlIDxFdmFzX0NhbGxiYWNrX1R5cGUg
RXZlbnRUeXBlPgpAQCAtMTMxMCw3ICsxMzE2LDcgQEAgdm9pZCBFd2tWaWV3OjpoYW5kbGVUb3Vj
aFVwKHZvaWQqIC8qIGRhdGEgKi8sIEV2YXMqIC8qIGNhbnZhcyAqLywgRXZhc19PYmplY3QqIGUK
IH0KIAogdm9pZCBFd2tWaWV3OjpoYW5kbGVUb3VjaE1vdmUodm9pZCogLyogZGF0YSAqLywgRXZh
cyogLyogY2FudmFzICovLCBFdmFzX09iamVjdCogZXdrVmlldywgdm9pZCogLyogZXZlbnRJbmZv
ICovKQoteyAgICAKK3sKICAgICB0b0V3a1ZpZXcoZXdrVmlldyktPmZlZWRUb3VjaEV2ZW50cyhF
V0tfVE9VQ0hfTU9WRSk7CiB9CiAjZW5kaWYKQEAgLTEzNTYsMTcgKzEzNjIsMTEgQEAgRXZhc19T
bWFydF9DbGFzcyBFd2tWaWV3OjpwYXJlbnRTbWFydENsYXNzID0gRVZBU19TTUFSVF9DTEFTU19J
TklUX05VTEw7CiAKIEV3a1ZpZXcqIHRvRXdrVmlldyhjb25zdCBFdmFzX09iamVjdCogZXZhc09i
amVjdCkKIHsKLSAgICBBU1NFUlQoZXZhc09iamVjdCAmJiBpc1ZpZXdFdmFzT2JqZWN0KGV2YXNP
YmplY3QpKTsKKyAgICBBU1NFUlQoZXZhc09iamVjdCAmJiBpc0V3a1ZpZXdFdmFzT2JqZWN0KGV2
YXNPYmplY3QpKTsKICAgICByZXR1cm4gdG9Fd2tWaWV3KHN0YXRpY19jYXN0PEV3a19WaWV3X1Nt
YXJ0X0RhdGEqPihldmFzX29iamVjdF9zbWFydF9kYXRhX2dldChldmFzT2JqZWN0KSkpOwogfQog
Ci1Fd2tWaWV3KiB0b0V3a1ZpZXcoY29uc3QgRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRh
KQotewotICAgIEFTU0VSVChzbWFydERhdGEgJiYgc21hcnREYXRhLT5wcml2KTsKLSAgICByZXR1
cm4gc21hcnREYXRhLT5wcml2OwotfQotCi1ib29sIGlzVmlld0V2YXNPYmplY3QoY29uc3QgRXZh
c19PYmplY3QqIGV2YXNPYmplY3QpCitib29sIGlzRXdrVmlld0V2YXNPYmplY3QoY29uc3QgRXZh
c19PYmplY3QqIGV2YXNPYmplY3QpCiB7CiAgICAgQVNTRVJUKGV2YXNPYmplY3QpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmgKaW5kZXggOWFkZmIwZi4uODhm
MGUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmll
dy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaApAQCAt
Mjk4LDggKzI5OCw3IEBAIHByaXZhdGU6CiB9OwogCiBFd2tWaWV3KiB0b0V3a1ZpZXcoY29uc3Qg
RXZhc19PYmplY3QqKTsKLUV3a1ZpZXcqIHRvRXdrVmlldyhjb25zdCBFd2tfVmlld19TbWFydF9E
YXRhKiBzbWFydERhdGEpOwogCi1ib29sIGlzVmlld0V2YXNPYmplY3QoY29uc3QgRXZhc19PYmpl
Y3QqIGV2YXNPYmplY3QpOworYm9vbCBpc0V3a1ZpZXdFdmFzT2JqZWN0KGNvbnN0IEV2YXNfT2Jq
ZWN0Kik7CiAKICNlbmRpZiAvLyBFd2tWaWV3X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a192aWV3LmNwcAppbmRleCA4NjNiZTQ4Li5hN2Q5NjVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCkBAIC02Miw4ICs2Miwy
MCBAQAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CitzdGF0aWMgaW5saW5lIEV3a1ZpZXcqIHRvRXdrVmlld0NoZWNrZWQoY29uc3QgRXZhc19PYmpl
Y3QqIGV2YXNPYmplY3QpCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGV2
YXNPYmplY3QsIDApOworICAgIGlmICghaXNFd2tWaWV3RXZhc09iamVjdChldmFzT2JqZWN0KSkK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEg
PSBzdGF0aWNfY2FzdDxFd2tfVmlld19TbWFydF9EYXRhKj4oZXZhc19vYmplY3Rfc21hcnRfZGF0
YV9nZXQoZXZhc09iamVjdCkpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChz
bWFydERhdGEsIDApOworCisgICAgcmV0dXJuIHNtYXJ0RGF0YS0+cHJpdjsKK30KKwogI2RlZmlu
ZSBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgaW1wbCwgLi4uKSAgICAgICAg
ICAgICAgICAgICAgICAgIFwKLSAgICBFd2tWaWV3KiBpbXBsID0gdG9Fd2tWaWV3KGV3a1ZpZXcp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRXdrVmlldyog
aW1wbCA9IHRvRXdrVmlld0NoZWNrZWQoZXdrVmlldyk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAogICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgaWYgKCFpbXBsKSB7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCiAgICAgICAgICAgICBFSU5BX0xPR19DUklUKCJubyBwcml2YXRlIGRhdGEgZm9yIG9iamVj
dCAlcCIsIGV3a1ZpZXcpOyAgICAgICAgICAgXAo=
</data>
<flag name="review"
          id="207151"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>