<?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>103428</bug_id>
          
          <creation_ts>2012-11-27 09:24:52 -0800</creation_ts>
          <short_desc>[WK2] TiledBackingStore: Frame view re-layouts with wrong Fixed Visible Content Rect.</short_desc>
          <delta_ts>2012-12-02 05:29:43 -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>WebKit2</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>95959</blocked>
    
    <blocked>103105</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mikhail Pozdnyakov">mikhail.pozdnyakov</reporter>
          <assigned_to name="Mikhail Pozdnyakov">mikhail.pozdnyakov</assigned_to>
          <cc>hugo.lima</cc>
    
    <cc>jesus</cc>
    
    <cc>jussi.kukkonen</cc>
    
    <cc>kenneth</cc>
    
    <cc>noam</cc>
    
    <cc>rafael.lobo</cc>
    
    <cc>tmpsantos</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zeno</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>776852</commentid>
    <comment_count>0</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-11-27 09:24:52 -0800</bug_when>
    <thetext>WebPage re-layouts its view with wrong Fixed Visible Content Rect. This happens because Fixed Visible Content Rect is set with a delay by LayerTreeCoordinator when layout is already done. As a result have failing css3/device-adapt/opera/constrain-006(7).xhtml tests and maybe others.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776891</commentid>
    <comment_count>1</comment_count>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-11-27 09:50:54 -0800</bug_when>
    <thetext>*** Bug 102922 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777930</commentid>
    <comment_count>2</comment_count>
      <attachid>176489</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-11-28 08:26:04 -0800</bug_when>
    <thetext>Created attachment 176489
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777941</commentid>
    <comment_count>3</comment_count>
      <attachid>176489</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-11-28 08:44:20 -0800</bug_when>
    <thetext>Comment on attachment 176489
patch

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

&gt; Source/WebKit2/UIProcess/DrawingAreaProxy.h:91
&gt; +    virtual void setFixedLayoutSize(const WebCore::IntSize&amp; /*layoutSize*/, const WebCore::FloatRect&amp; /*visibleContentsRect*/, float /*scale*/) { }

space after /* and before */

&gt; Source/WebKit2/UIProcess/PageViewportController.cpp:223
&gt; -    drawingArea-&gt;setVisibleContentsRect(visibleContentsRect, m_effectiveScale, trajectoryVector);
&gt; +    if (trajectoryVector == FloatPoint::zero()) {
&gt; +        IntSize fixedLayoutSize = IntSize(static_cast&lt;int&gt;(m_rawAttributes.layoutSize.width()), static_cast&lt;int&gt;(m_rawAttributes.layoutSize.height()));
&gt; +        drawingArea-&gt;setFixedLayoutSize(fixedLayoutSize, visibleContentsRect, m_effectiveScale);
&gt; +    } else
&gt; +        drawingArea-&gt;setVisibleContentsRect(visibleContentsRect, m_effectiveScale, trajectoryVector);
&gt;  

It is zero in other cases than when setting new fixed layout size. For instance when panning ends.

Why not replace syncVisibleContents() inside didChangeViewportAttributes instead?

IntSize fixedLayoutSize = IntSize(static_cast&lt;int&gt;(m_rawAttributes.layoutSize.width()), static_cast&lt;int&gt;(m_rawAttributes.layoutSize.height()));
drawingArea-&gt;setFixedLayoutSize(fixedLayoutSize, visibleContentsRect, m_effectiveScale);

Also why not

IntSize fixedLayoutSize = roundedIntRect(m_rawAttributes.layoutSize);

Or

drawingArea-&gt;setFixedLayoutSize(roundedIntRect(m_rawAttributes.layoutSize), visibleContentsRect, m_effectiveScale);


Notice that in the code above m_contentsSize cannot be trusted, it is from the old content (old layout sizes)

I guess you should use:

FloatRect visibleContentsRect(FloatPoint(), viewportSizeInContentsCoordinates());
drawingArea-&gt;setFixedLayoutSize(roundedIntRect(m_rawAttributes.layoutSize), visibleContentsRect, m_effectiveScale);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777943</commentid>
    <comment_count>4</comment_count>
      <attachid>176489</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-11-28 08:47:07 -0800</bug_when>
    <thetext>Comment on attachment 176489
patch

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

&gt; Source/WebKit2/UIProcess/PageViewportController.cpp:218
&gt; +    if (trajectoryVector == FloatPoint::zero()) {

Can you explain this in a comment?

&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.cpp:729
&gt; +void LayerTreeCoordinator::setFixedLayoutSize(const IntSize&amp; layoutSize, const IntRect&amp; rect, float scale)
&gt; +{
&gt; +    setVisibleContentsRect(rect, scale, FloatPoint());
&gt; +    m_webPage-&gt;setFixedLayoutSize(layoutSize);
&gt; +}

This is a bit messy. Why not have this message in WebPage, and have WebPage call layerTreeCoordinator-&gt;setVisibleContentsRect?
I prefer it if LayerTreeCoordinator dealt with viewport/graphics only and not with layout magic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777946</commentid>
    <comment_count>5</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-11-28 08:49:20 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 176489 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=176489&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/PageViewportController.cpp:218
&gt; &gt; +    if (trajectoryVector == FloatPoint::zero()) {
&gt; 
&gt; Can you explain this in a comment?
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.cpp:729
&gt; &gt; +void LayerTreeCoordinator::setFixedLayoutSize(const IntSize&amp; layoutSize, const IntRect&amp; rect, float scale)
&gt; &gt; +{
&gt; &gt; +    setVisibleContentsRect(rect, scale, FloatPoint());
&gt; &gt; +    m_webPage-&gt;setFixedLayoutSize(layoutSize);
&gt; &gt; +}
&gt; 
&gt; This is a bit messy. Why not have this message in WebPage, and have WebPage call layerTreeCoordinator-&gt;setVisibleContentsRect?
&gt; I prefer it if LayerTreeCoordinator dealt with viewport/graphics only and not with layout magic.

but seems like Kenneth&apos;s comments and mine might collide... his are better :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778102</commentid>
    <comment_count>6</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-11-28 11:25:11 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 176489 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=176489&amp;action=review
&gt; 
&gt; Why not replace syncVisibleContents() inside didChangeViewportAttributes instead?
&gt; 
Ah indeed! this is much much better, thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778847</commentid>
    <comment_count>7</comment_count>
      <attachid>176489</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-11-29 02:20:14 -0800</bug_when>
    <thetext>Comment on attachment 176489
patch

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

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:-1029
&gt; -    // This also takes care of the relayout.
&gt; -    setFixedLayoutSize(IntSize(static_cast&lt;int&gt;(attr.layoutSize.width()), static_cast&lt;int&gt;(attr.layoutSize.height())));

So this is wrong; we need to do the layout immediate when we get the viewport info, because otherwise it is going to layout using old info.

Say it parses the document and finds the viewport meta tag, then calls then and then continues to layout.

Instead we should make sure here that we update the visibleContentsRect as well.

You know the scale from the viewport info (will require a few changes) and you know the viewport size m_viewportSize. You also have the current position from the previous visibleContentsRect, but it should be set to (0, 0) if page-&gt;layoutMilestones() == 0; (no layout was done yet)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779988</commentid>
    <comment_count>8</comment_count>
      <attachid>176936</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-11-30 03:37:59 -0800</bug_when>
    <thetext>Created attachment 176936
patch v2

New approach is applied, set contents fixed rect before the layout and still layout immediately after viewport attrs are changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779995</commentid>
    <comment_count>9</comment_count>
      <attachid>176936</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-11-30 04:15:21 -0800</bug_when>
    <thetext>Comment on attachment 176936
patch v2

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

&gt; Source/WebKit2/UIProcess/PageViewportController.cpp:237
&gt;      if (updateMinimumScaleToFit(true))
&gt;          m_client-&gt;didChangeViewportAttributes();
&gt; -
&gt; -    syncVisibleContents();
&gt;  }

Maybe a comment here some how? that this is not needed

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1032
&gt; +    // Keep the current position, update size only.
&gt; +    FrameView* view = m_page-&gt;mainFrame()-&gt;view();
&gt; +    IntPoint contentFixedOrigin = view-&gt;fixedVisibleContentRect().location();

It should be mentioned here that this is indeed (0, 0) for new loads and not the position for the previous page

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1041
&gt; -    setFixedLayoutSize(IntSize(static_cast&lt;int&gt;(attr.layoutSize.width()), static_cast&lt;int&gt;(attr.layoutSize.height())));
&gt; +    setFixedLayoutSize(roundedIntSize(attr.layoutSize));

much nicer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780002</commentid>
    <comment_count>10</comment_count>
      <attachid>176936</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-11-30 04:24:17 -0800</bug_when>
    <thetext>Comment on attachment 176936
patch v2

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

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1036
&gt; +    IntSize contentFixedSize = m_viewportSize;
&gt; +    contentFixedSize.scale(1 / m_page-&gt;deviceScaleFactor());

This should further more be at the current scale!
1 / (deviceScaleFactor() * attr.initialScale)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780023</commentid>
    <comment_count>11</comment_count>
      <attachid>176945</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-11-30 05:05:32 -0800</bug_when>
    <thetext>Created attachment 176945
patch v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780056</commentid>
    <comment_count>12</comment_count>
      <attachid>176945</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-30 05:57:45 -0800</bug_when>
    <thetext>Comment on attachment 176945
patch v3

Clearing flags on attachment: 176945

Committed r136231: &lt;http://trac.webkit.org/changeset/136231&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780057</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-30 05:57:49 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780942</commentid>
    <comment_count>14</comment_count>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-12-02 05:29:43 -0800</bug_when>
    <thetext>This patch made css3/device-adapt/viewport-width-not-affecting-next-page.html flaky.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176489</attachid>
            <date>2012-11-28 08:26:04 -0800</date>
            <delta_ts>2012-11-30 03:37:59 -0800</delta_ts>
            <desc>patch</desc>
            <filename>bug103428</filename>
            <type>text/plain</type>
            <size>13778</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IDQ5MmVlNDhmNjgzNGQzNDgyZTcyZTU0NzFlMTM2NWFkNjBjMDYzODMKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
V2VkIE5vdiAyOCAxODoxMzowNSAyMDEyICswMjAwCgogICAgYnVnMTAzNDI4CgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDRj
YmM2ZWQuLjU0Mjc5YWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0xMS0yOCAgTWlraGFp
bCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlha292QGludGVsLmNvbT4KKworICAgICAgICBb
V0syXSBUaWxlZEJhY2tpbmdTdG9yZTogRnJhbWUgdmlldyByZS1sYXlvdXRzIHdpdGggd3Jvbmcg
Rml4ZWQgVmlzaWJsZSBDb250ZW50IFJlY3QuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM0MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVbnNraXBwZWQgY29ycmVzcG9uZGluZyB0ZXN0cyBmb3IgV0sy
IEVGTC4KKworICAgICAgICAqIHBsYXRmb3JtL2VmbC13azIvVGVzdEV4cGVjdGF0aW9uczoKKwog
MjAxMi0xMS0yOCAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
TWVyZ2UgdGVzdHMgZm9yIGRhdGUgcHNldWRvIGNsYXNzZXMgaW50byBvbmUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2VmbC13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAzNWUwZGE1Li45NmE2
YWVlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwtd2syL1Rlc3RFeHBlY3Rh
dGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsLXdrMi9UZXN0RXhwZWN0YXRpb25z
CkBAIC0yNzEsMTAgKzI3MSw2IEBAIHdlYmtpdC5vcmcvYi8xMDMxMjcgY3NzMy9kZXZpY2UtYWRh
cHQvb3BlcmEvY29uc3RyYWluLTAyMi54aHRtbCBbIEZhaWx1cmUgXQogIyBQYWdlIGNsaWVudCBk
b2Vzbid0IHJlYWN0IHRvIG9yaWVudGF0aW9uIGNoYW5nZXMgZnJvbSBDU1MgVmlld3BvcnQgcnVs
ZXMuCiB3ZWJraXQub3JnL2IvMTAzMTMwIGNzczMvZGV2aWNlLWFkYXB0L29wZXJhL29yaWVudGF0
aW9uLTAwMS54aHRtbCBbIEZhaWx1cmUgXQogCi0jIElzc3VlIHdpdGggdmlld3BvcnQgd2lkdGgg
YW5kIHJlbGF0aXZlIHVuaXRzLgotd2Via2l0Lm9yZy9iLzEwMjkyMiBjc3MzL2RldmljZS1hZGFw
dC9vcGVyYS9jb25zdHJhaW4tMDA2LnhodG1sIFsgRmFpbHVyZSBdCi13ZWJraXQub3JnL2IvMTAy
OTIyIGNzczMvZGV2aWNlLWFkYXB0L29wZXJhL2NvbnN0cmFpbi0wMDcueGh0bWwgWyBGYWlsdXJl
IF0KLQogIyBUZXh0IGlucHV0IGNvbnRyb2xsZXIgbmVlZHMgc2VsZWN0ZWRSYW5nZSBpbXBsZW1l
bnRhdGlvbgogd2Via2l0Lm9yZy9iLzk5NDM4IGVkaXRpbmcvc2VsZWN0aW9uL21peGVkLWVkaXRh
YmlsaXR5LTEwLmh0bWwgWyBGYWlsdXJlIF0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDY2OWM3NDQuLmE5M2Qy
N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsNSArMSwzOSBAQAogMjAxMi0xMS0yOCAgTWlraGFpbCBQb3pk
bnlha292ICA8bWlraGFpbC5wb3pkbnlha292QGludGVsLmNvbT4KIAorICAgICAgICBbV0syXSBU
aWxlZEJhY2tpbmdTdG9yZTogRnJhbWUgdmlldyByZS1sYXlvdXRzIHdpdGggd3JvbmcgRml4ZWQg
VmlzaWJsZSBDb250ZW50IFJlY3QuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDM0MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGRlZCBuZXcgSVBDICdzZXRGaXhlZExheW91dFNpemUnIG1lc3NhZ2Ug
Zm9yIExheWVyVHJlZUNvb3JkaW5hdG9yLiBUaGUgbWVzc2FnZSBpcyBzZW50CisgICAgICAgIGZy
b20gUGFnZVZpZXdwb3J0Q29udHJvbGxlciBhdCB0aGUgbW9tZW50IHdoZW4gYWxsIHRoZSB2aWV3
IHNldHRpbmdzICh3aGljaCBhcmUgbmVjZXNzYXJ5IGZvcgorICAgICAgICByZS1sYXlvdXQpIGFy
ZSBkZXRlY3RlZC4gVGhlIG1lc3NhZ2UgY2FsbGJhY2sgdGhlbiBzZXRzIHRoZW0gdG8gV2ViUGFn
ZSdzIGZyYW1lIHZpZXcgYW5kCisgICAgICAgIGludm9rZXMgcmUtbGF5b3V0LgorCisgICAgICAg
ICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6OnNldEZp
eGVkTGF5b3V0U2l6ZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuaDoKKyAgICAgICAg
KExheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9EcmF3aW5n
QXJlYVByb3h5Lmg6CisgICAgICAgIChEcmF3aW5nQXJlYVByb3h5KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5n
QXJlYVByb3h5SW1wbDo6c2V0Rml4ZWRMYXlvdXRTaXplKToKKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBsLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdl
Vmlld3BvcnRDb250cm9sbGVyOjpzeW5jVmlzaWJsZUNvbnRlbnRzKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUNvb3JkaW5hdG9yOjpzZXRGaXhlZExheW91
dFNpemUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5oOgorICAgICAgICAoTGF5
ZXJUcmVlQ29vcmRpbmF0b3IpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLm1lc3NhZ2VzLmluOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6c2VuZFZpZXdwb3J0QXR0cmlidXRlc0NoYW5nZWQpOgorCisyMDEyLTExLTI4ICBNaWtoYWls
IFBvemRueWFrb3YgIDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tPgorCiAgICAgICAgIFtF
RkxdW1dLMl1bQUNdIE5vIG5lZWQgdG8gZXhwb3J0IEdMIHByb3BlcnRpZXMgZnJvbSBFd2tWaWV3
SW1wbCBjbGFzcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTAzNTA1CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGlu
YXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94
eS5jcHAKaW5kZXggOGZiMTJiOS4uYmIyNjk3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5
ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5jcHAKQEAgLTE5NCw2ICsxOTQsMjMgQEAgdm9pZCBMYXll
clRyZWVDb29yZGluYXRvclByb3h5OjpzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCwgZmwKICAgICBtX2xhc3RTZW50VHJhamVjdG9yeVZlY3RvciA9IHRyYWplY3Rv
cnlWZWN0b3I7CiB9CiAKK3ZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6c2V0Rml4ZWRM
YXlvdXRTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGxheW91dFNpemUsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgc2NhbGUpCit7CisgICAgLy8gSW5mb3JtIHRoZSBy
ZW5kZXJlciB0byBhZGp1c3Qgdmlld3BvcnQtZml4ZWQgbGF5ZXJzLgorICAgIGRpc3BhdGNoVXBk
YXRlKGJpbmQoJkxheWVyVHJlZVJlbmRlcmVyOjpzZXRWaXNpYmxlQ29udGVudHNSZWN0LCBtX3Jl
bmRlcmVyLmdldCgpLCByZWN0KSk7CisKKyAgICAvLyBSb3VuZCB0aGUgcmVjdCBpbnN0ZWFkIG9m
IGVuY2xvc2luZyBpdCB0byBtYWtlIHN1cmUgdGhhdCBpdHMgc2l6ZSBzdGF5cyB0aGUgc2FtZSB3
aGlsZSBwYW5uaW5nLiBUaGlzIGNhbiBoYXZlIG5hc3R5IGVmZmVjdHMgb24gbGF5b3V0LgorICAg
IEludFJlY3Qgcm91bmRlZFJlY3QgPSByb3VuZGVkSW50UmVjdChyZWN0KTsKKyAgICBpZiAocm91
bmRlZFJlY3QgPT0gbV9sYXN0U2VudFZpc2libGVSZWN0ICYmIHNjYWxlID09IG1fbGFzdFNlbnRT
Y2FsZSAmJiBsYXlvdXRTaXplID09IG1fbGFzdEZpeGVkTGF5b3V0U2l6ZSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgbV9kcmF3aW5nQXJlYVByb3h5LT5wYWdlKCktPnByb2Nlc3MoKS0+c2VuZChN
ZXNzYWdlczo6TGF5ZXJUcmVlQ29vcmRpbmF0b3I6OlNldEZpeGVkTGF5b3V0U2l6ZShsYXlvdXRT
aXplLCByb3VuZGVkUmVjdCwgc2NhbGUpLCBtX2RyYXdpbmdBcmVhUHJveHktPnBhZ2UoKS0+cGFn
ZUlEKCkpOworICAgIG1fbGFzdEZpeGVkTGF5b3V0U2l6ZSA9IGxheW91dFNpemU7CisgICAgbV9s
YXN0U2VudFZpc2libGVSZWN0ID0gcm91bmRlZFJlY3Q7CisgICAgbV9sYXN0U2VudFNjYWxlID0g
c2NhbGU7CisgICAgbV9sYXN0U2VudFRyYWplY3RvcnlWZWN0b3IgPSBGbG9hdFBvaW50KCk7Cit9
CisKIHZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6cmVuZGVyTmV4dEZyYW1lKCkKIHsK
ICAgICBtX2RyYXdpbmdBcmVhUHJveHktPnBhZ2UoKS0+cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2Vz
OjpMYXllclRyZWVDb29yZGluYXRvcjo6UmVuZGVyTmV4dEZyYW1lKCksIG1fZHJhd2luZ0FyZWFQ
cm94eS0+cGFnZSgpLT5wYWdlSUQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29y
ZGluYXRvclByb3h5LmgKaW5kZXggZmI1OGIxYS4uMzcxYjYzMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0
b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBo
aWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuaApAQCAtNjUsNiArNjUsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRSb290Q29tcG9zaXRpbmdMYXllcihXZWJMYXllcklEKTsKICAgICB2b2lk
IHNldENvbnRlbnRzU2l6ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKICAgICB2b2lkIHNl
dFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgZmxvYXQgc2Nh
bGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHRyYWplY3RvcnlWZWN0b3IpOworICAgIHZv
aWQgc2V0Rml4ZWRMYXlvdXRTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGxheW91dFNpemUs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdmlzaWJsZUNvbnRlbnRzUmVjdCwgZmxvYXQgc2Nh
bGUpOwogICAgIHZvaWQgZGlkUmVuZGVyRnJhbWUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgY29u
dGVudHNTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjb3ZlcmVkUmVjdCk7CiAgICAgdm9p
ZCBjcmVhdGVUaWxlRm9yTGF5ZXIoaW50IGxheWVySUQsIGludCB0aWxlSUQsIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmLCBjb25zdCBTdXJmYWNlVXBkYXRlSW5mbyYpOwogICAgIHZvaWQgdXBkYXRl
VGlsZUZvckxheWVyKGludCBsYXllcklELCBpbnQgdGlsZUlELCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiwgY29uc3QgU3VyZmFjZVVwZGF0ZUluZm8mKTsKQEAgLTEwMiw2ICsxMDMsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgV2ViQ29yZTo6SW50UmVjdCBtX2xhc3RTZW50VmlzaWJsZVJlY3Q7CiAgICAg
ZmxvYXQgbV9sYXN0U2VudFNjYWxlOwogICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgbV9sYXN0U2Vu
dFRyYWplY3RvcnlWZWN0b3I7CisgICAgV2ViQ29yZTo6SW50U2l6ZSBtX2xhc3RGaXhlZExheW91
dFNpemU7CiAgICAgdHlwZWRlZiBIYXNoTWFwPGludCAvKiBhdGxhc0lEICovLCBSZWZQdHI8U2hh
cmVhYmxlU3VyZmFjZT4gPiBTdXJmYWNlTWFwOwogICAgIFN1cmZhY2VNYXAgbV9zdXJmYWNlczsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94
eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaAppbmRleCA3
NGE4N2E0Li5iMTgwZmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJh
d2luZ0FyZWFQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJl
YVByb3h5LmgKQEAgLTg4LDYgKzg4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgV2ViQ29yZTo6
SW50UmVjdCBjb250ZW50c1JlY3QoKSBjb25zdDsKICAgICBMYXllclRyZWVDb29yZGluYXRvclBy
b3h5KiBsYXllclRyZWVDb29yZGluYXRvclByb3h5KCkgY29uc3QgeyByZXR1cm4gbV9sYXllclRy
ZWVDb29yZGluYXRvclByb3h5LmdldCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldFZpc2libGVD
b250ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiAvKiB2aXNpYmxlQ29udGVudHNS
ZWN0ICovLCBmbG9hdCAvKiBzY2FsZSAqLywgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgLyog
dHJhamVjdG9yeVZlY3RvciAqLykgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldEZpeGVkTGF5b3V0
U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiAvKmxheW91dFNpemUqLywgY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0JiAvKnZpc2libGVDb250ZW50c1JlY3QqLywgZmxvYXQgLypzY2FsZSovKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUxheWVyVHJlZUNvb3JkaW5hdG9yUHJveHlN
ZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6
Ok1lc3NhZ2VEZWNvZGVyJik7CiAKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UoKSB7IHJldHVybiBt
X3dlYlBhZ2VQcm94eTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Ry
YXdpbmdBcmVhUHJveHlJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5n
QXJlYVByb3h5SW1wbC5jcHAKaW5kZXggMTM4ZjRjOC4uMzBiNDU4MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuY3BwCkBAIC0zNzgsNiAr
Mzc4LDEyIEBAIHZvaWQgRHJhd2luZ0FyZWFQcm94eUltcGw6OnNldFZpc2libGVDb250ZW50c1Jl
Y3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB2aXNpCiAgICAgICAgIG1fbGF5ZXJUcmVlQ29v
cmRpbmF0b3JQcm94eS0+c2V0VmlzaWJsZUNvbnRlbnRzUmVjdCh2aXNpYmxlQ29udGVudHNSZWN0
LCBzY2FsZSwgdHJhamVjdG9yeVZlY3Rvcik7CiB9CiAKK3ZvaWQgRHJhd2luZ0FyZWFQcm94eUlt
cGw6OnNldEZpeGVkTGF5b3V0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBsYXlvdXRTaXpl
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHZpc2libGVDb250ZW50c1JlY3QsIGZsb2F0IHNj
YWxlKQoreworICAgIGlmIChtX2xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkpCisgICAgICAgIG1f
bGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS0+c2V0Rml4ZWRMYXlvdXRTaXplKGxheW91dFNpemUs
IHZpc2libGVDb250ZW50c1JlY3QsIHNjYWxlKTsKK30KKwogI2VuZGlmCiAKIHZvaWQgRHJhd2lu
Z0FyZWFQcm94eUltcGw6OmV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5oCmluZGV4IGZlMDUx
MGUuLmU1OWVjNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5n
QXJlYVByb3h5SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJl
YVByb3h5SW1wbC5oCkBAIC04NCw2ICs4NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25zdCBMYXllclRyZWVDb250ZXh0Jik7CiAjaWYg
VVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlQ29u
dGVudHNSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdmlzaWJsZUNvbnRlbnRzUmVjdCwg
ZmxvYXQgc2NhbGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHRyYWplY3RvcnkpOworICAg
IHZpcnR1YWwgdm9pZCBzZXRGaXhlZExheW91dFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYg
bGF5b3V0U2l6ZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB2aXNpYmxlQ29udGVudHNSZWN0
LCBmbG9hdCBzY2FsZSk7CiAgICAgdm9pZCBkaWRSZWNlaXZlTGF5ZXJUcmVlQ29vcmRpbmF0b3JQ
cm94eU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29y
ZUlQQzo6TWVzc2FnZURlY29kZXImKTsKICNlbmRpZgogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmNwcAppbmRleCBmZjEzNWEy
Li41NGY1YTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZVZpZXdw
b3J0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VWaWV3
cG9ydENvbnRyb2xsZXIuY3BwCkBAIC0yMTUsNyArMjE1LDExIEBAIHZvaWQgUGFnZVZpZXdwb3J0
Q29udHJvbGxlcjo6c3luY1Zpc2libGVDb250ZW50cyhjb25zdCBGbG9hdFBvaW50JiB0cmFqZWN0
b3J5VmVjCiAKICAgICBGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRzUmVjdChjbGFtcFZpZXdwb3J0
VG9Db250ZW50cyhtX3ZpZXdwb3J0UG9zLCBtX2VmZmVjdGl2ZVNjYWxlKSwgdmlld3BvcnRTaXpl
SW5Db250ZW50c0Nvb3JkaW5hdGVzKCkpOwogICAgIHZpc2libGVDb250ZW50c1JlY3QuaW50ZXJz
ZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIG1fY29udGVudHNTaXplKSk7Ci0gICAg
ZHJhd2luZ0FyZWEtPnNldFZpc2libGVDb250ZW50c1JlY3QodmlzaWJsZUNvbnRlbnRzUmVjdCwg
bV9lZmZlY3RpdmVTY2FsZSwgdHJhamVjdG9yeVZlY3Rvcik7CisgICAgaWYgKHRyYWplY3RvcnlW
ZWN0b3IgPT0gRmxvYXRQb2ludDo6emVybygpKSB7CisgICAgICAgIEludFNpemUgZml4ZWRMYXlv
dXRTaXplID0gSW50U2l6ZShzdGF0aWNfY2FzdDxpbnQ+KG1fcmF3QXR0cmlidXRlcy5sYXlvdXRT
aXplLndpZHRoKCkpLCBzdGF0aWNfY2FzdDxpbnQ+KG1fcmF3QXR0cmlidXRlcy5sYXlvdXRTaXpl
LmhlaWdodCgpKSk7CisgICAgICAgIGRyYXdpbmdBcmVhLT5zZXRGaXhlZExheW91dFNpemUoZml4
ZWRMYXlvdXRTaXplLCB2aXNpYmxlQ29udGVudHNSZWN0LCBtX2VmZmVjdGl2ZVNjYWxlKTsKKyAg
ICB9IGVsc2UKKyAgICAgICAgZHJhd2luZ0FyZWEtPnNldFZpc2libGVDb250ZW50c1JlY3Qodmlz
aWJsZUNvbnRlbnRzUmVjdCwgbV9lZmZlY3RpdmVTY2FsZSwgdHJhamVjdG9yeVZlY3Rvcik7CiAK
ICAgICBtX2NsaWVudC0+ZGlkQ2hhbmdlVmlzaWJsZUNvbnRlbnRzKCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9M
YXllclRyZWVDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5jcHAKaW5kZXggMTc2
ZGNmNi4uMTA2MWY4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVy
VHJlZUNvb3JkaW5hdG9yLmNwcApAQCAtNzIyLDYgKzcyMiwxMiBAQCB2b2lkIExheWVyVHJlZUNv
b3JkaW5hdG9yOjpzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QsIGZs
b2F0IHNjYQogICAgICAgICBtX3Nob3VsZFNlbmRTY3JvbGxQb3NpdGlvblVwZGF0ZSA9IHRydWU7
CiB9CiAKK3ZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnNldEZpeGVkTGF5b3V0U2l6ZShjb25z
dCBJbnRTaXplJiBsYXlvdXRTaXplLCBjb25zdCBJbnRSZWN0JiByZWN0LCBmbG9hdCBzY2FsZSkK
K3sKKyAgICBzZXRWaXNpYmxlQ29udGVudHNSZWN0KHJlY3QsIHNjYWxlLCBGbG9hdFBvaW50KCkp
OworICAgIG1fd2ViUGFnZS0+c2V0Rml4ZWRMYXlvdXRTaXplKGxheW91dFNpemUpOworfQorCiBH
cmFwaGljc0xheWVyRmFjdG9yeSogTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OmdyYXBoaWNzTGF5ZXJG
YWN0b3J5KCkKIHsKICAgICByZXR1cm4gdGhpczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5h
dG9yLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9MYXllclRyZWVDb29yZGluYXRvci5oCmluZGV4IGYwNGI1MDguLjhiMjk4YjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuaApAQCAt
ODYsNiArODYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHB1cmdlQmFja2luZ1N0b3Jl
cygpOwogICAgIHZpcnR1YWwgYm9vbCBsYXllclRyZWVUaWxlVXBkYXRlc0FsbG93ZWQoKSBjb25z
dDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiwgZmxvYXQgc2NhbGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0Rml4ZWRMYXlvdXRTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUm
IGxheW91dFNpemUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHZpc2libGVDb250ZW50c1JlY3Qs
IGZsb2F0IHNjYWxlKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUxheWVyVHJlZUNvb3Jk
aW5hdG9yTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBD
b3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6R3JhcGhpY3NM
YXllckZhY3RvcnkqIGdyYXBoaWNzTGF5ZXJGYWN0b3J5KCkgT1ZFUlJJREU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0xheWVyVHJlZUNvb3JkaW5hdG9yLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IubWVz
c2FnZXMuaW4KaW5kZXggNmFjMzcyNS4uZTU4YTkyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRp
bmF0b3IubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IubWVzc2FnZXMuaW4KQEAg
LTIxLDYgKzIxLDcgQEAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiBtZXNzYWdlcyAt
PiBMYXllclRyZWVDb29yZGluYXRvciB7CiAgICAgU2V0VmlzaWJsZUNvbnRlbnRzUmVjdChXZWJD
b3JlOjpJbnRSZWN0IHZpc2libGVDb250ZW50c1JlY3QsIGZsb2F0IHNjYWxlLCBXZWJDb3JlOjpG
bG9hdFBvaW50IHRyYWplY3RvcnlWZWN0b3J5KQorICAgIFNldEZpeGVkTGF5b3V0U2l6ZShXZWJD
b3JlOjpJbnRTaXplIGxheW91dFNpemUsIFdlYkNvcmU6OkludFJlY3QgdmlzaWJsZUNvbnRlbnRz
UmVjdCwgZmxvYXQgc2NhbGUpCiAgICAgUmVuZGVyTmV4dEZyYW1lKCkKICAgICBQdXJnZUJhY2tp
bmdTdG9yZXMoKQogI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA4M2MwYWU3Li43
ZDExZmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCkBAIC0xMDI1LDggKzEwMjUsNiBAQCB2b2lkIFdlYlBhZ2U6OnNlbmRWaWV3cG9ydEF0dHJp
YnV0ZXNDaGFuZ2VkKCkKICAgICBWaWV3cG9ydEF0dHJpYnV0ZXMgYXR0ciA9IGNvbXB1dGVWaWV3
cG9ydEF0dHJpYnV0ZXMobV9wYWdlLT52aWV3cG9ydEFyZ3VtZW50cygpLCBtaW5pbXVtTGF5b3V0
RmFsbGJhY2tXaWR0aCwgZGV2aWNlV2lkdGgsIGRldmljZUhlaWdodCwgbV9wYWdlLT5kZXZpY2VT
Y2FsZUZhY3RvcigpLCBtX3ZpZXdwb3J0U2l6ZSk7CiAgICAgYXR0ci5pbml0aWFsU2NhbGUgPSBt
X3BhZ2UtPnZpZXdwb3J0QXJndW1lbnRzKCkuem9vbTsgLy8gUmVzZXRzIGF1dG8gKC0xKSBpZiBu
byB2YWx1ZSB3YXMgc2V0IGJ5IHVzZXIuCiAKLSAgICAvLyBUaGlzIGFsc28gdGFrZXMgY2FyZSBv
ZiB0aGUgcmVsYXlvdXQuCi0gICAgc2V0Rml4ZWRMYXlvdXRTaXplKEludFNpemUoc3RhdGljX2Nh
c3Q8aW50PihhdHRyLmxheW91dFNpemUud2lkdGgoKSksIHN0YXRpY19jYXN0PGludD4oYXR0ci5s
YXlvdXRTaXplLmhlaWdodCgpKSkpOwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGF0dHIpKTsKIH0KIAo=
</data>
<flag name="review"
          id="192290"
          type_id="1"
          status="-"
          setter="kenneth"
    />
    <flag name="commit-queue"
          id="192291"
          type_id="3"
          status="-"
          setter="kenneth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176936</attachid>
            <date>2012-11-30 03:37:59 -0800</date>
            <delta_ts>2012-11-30 05:05:32 -0800</delta_ts>
            <desc>patch v2</desc>
            <filename>bug103428_v2</filename>
            <type>text/plain</type>
            <size>5104</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IDBkMDRhMjI4Y2UxYWJjZmI0OWExY2MyMGNhOTUwNGY0NjE4ZTQ0ZDAKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
RnJpIE5vdiAzMCAxMzowNzoxNiAyMDEyICswMjAwCgogICAgYnVnMTAzNDI4CgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDFl
NjVhMWIuLjY0ZGE1OWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0xMS0zMCAgTWlraGFp
bCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlha292QGludGVsLmNvbT4KKworICAgICAgICBb
V0syXSBUaWxlZEJhY2tpbmdTdG9yZTogRnJhbWUgdmlldyByZS1sYXlvdXRzIHdpdGggd3Jvbmcg
Rml4ZWQgVmlzaWJsZSBDb250ZW50IFJlY3QuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM0MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVbnNraXBwZWQgY29ycmVzcG9uZGluZyB0ZXN0IGNhc2VzIGZv
ciBFRkwgV0syLgorCisgICAgICAgICogcGxhdGZvcm0vZWZsLXdrMi9UZXN0RXhwZWN0YXRpb25z
OgorCiAyMDEyLTExLTMwICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBbQ2hyb21pdW1dIExheW91dCBUZXN0IGZhc3QvZm9ybXMvKi1tdWx0aXBsZS1maWVsZHMv
Ki1tdWx0aXBsZS1maWVsZHMtcHJlc2VydmUtdmFsdWUtYWZ0ZXItaGlzdG9yeS1iYWNrLmh0bWwg
aXMgZmFpbGluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsLXdrMi9UZXN0
RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsLXdrMi9UZXN0RXhwZWN0YXRp
b25zCmluZGV4IDFkNDc2ZjUuLmU3N2FmYWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2VmbC13azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9l
Zmwtd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTI2OSwxMCArMjY5LDYgQEAgd2Via2l0Lm9yZy9i
LzEwMzEyNyBjc3MzL2RldmljZS1hZGFwdC9vcGVyYS9jb25zdHJhaW4tMDIyLnhodG1sIFsgRmFp
bHVyZSBdCiAjIFBhZ2UgY2xpZW50IGRvZXNuJ3QgcmVhY3QgdG8gb3JpZW50YXRpb24gY2hhbmdl
cyBmcm9tIENTUyBWaWV3cG9ydCBydWxlcy4KIHdlYmtpdC5vcmcvYi8xMDMxMzAgY3NzMy9kZXZp
Y2UtYWRhcHQvb3BlcmEvb3JpZW50YXRpb24tMDAxLnhodG1sIFsgRmFpbHVyZSBdCiAKLSMgSXNz
dWUgd2l0aCB2aWV3cG9ydCB3aWR0aCBhbmQgcmVsYXRpdmUgdW5pdHMuCi13ZWJraXQub3JnL2Iv
MTAyOTIyIGNzczMvZGV2aWNlLWFkYXB0L29wZXJhL2NvbnN0cmFpbi0wMDYueGh0bWwgWyBGYWls
dXJlIF0KLXdlYmtpdC5vcmcvYi8xMDI5MjIgY3NzMy9kZXZpY2UtYWRhcHQvb3BlcmEvY29uc3Ry
YWluLTAwNy54aHRtbCBbIEZhaWx1cmUgXQotCiAjIFRleHQgaW5wdXQgY29udHJvbGxlciBuZWVk
cyBzZWxlY3RlZFJhbmdlIGltcGxlbWVudGF0aW9uCiB3ZWJraXQub3JnL2IvOTk0MzggZWRpdGlu
Zy9zZWxlY3Rpb24vbWl4ZWQtZWRpdGFiaWxpdHktMTAuaHRtbCBbIEZhaWx1cmUgXQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKaW5kZXggODYyM2ZiMS4uOTQzMDg1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisy
MDEyLTExLTMwICBNaWtoYWlsIFBvemRueWFrb3YgIDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwu
Y29tPgorCisgICAgICAgIFtXSzJdIFRpbGVkQmFja2luZ1N0b3JlOiBGcmFtZSB2aWV3IHJlLWxh
eW91dHMgd2l0aCB3cm9uZyBGaXhlZCBWaXNpYmxlIENvbnRlbnQgUmVjdC4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzQyOAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNldCBub3cgYXBwcm9wcmlhdGUg
Zml4ZWQgdmlzaWJsZSBjb250ZW50IHJlY3QgYmVmb3JlIGxheW91dCB3aGVuIHZpZXdwb3J0Cisg
ICAgICAgIGF0dHJpYnV0ZXMgY2hhbmdlLgorCisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VWaWV3
cG9ydENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9s
bGVyOjpzeW5jVmlzaWJsZUNvbnRlbnRzKToKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0
Q29udHJvbGxlcjo6ZGlkQ2hhbmdlVmlld3BvcnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNl
bmRWaWV3cG9ydEF0dHJpYnV0ZXNDaGFuZ2VkKToKKwogMjAxMi0xMS0zMCAgTWloYWkgTWFlcmVh
biAgPG1tYWVyZWFuQGFkb2JlLmNvbT4KIAogICAgICAgICBbQ1NTUmVnaW9uc10gd2hlbiBXZWJL
aXQgdXNlcyBWOCwgdGhlcmUgc2hvdWxkIGJlIGEgc2luZ2xlIHZhcmlhYmxlIHRvIHN0b3JlIGlm
IHRoZSBDU1MgUmVnaW9ucyBmZWF0dXJlIGlzIGVuYWJsZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmNwcAppbmRleCA3YjRlNjY1Li5l
NTY4NjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZVZpZXdwb3J0
Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VWaWV3cG9y
dENvbnRyb2xsZXIuY3BwCkBAIC0yMDksNyArMjA5LDcgQEAgdm9pZCBQYWdlVmlld3BvcnRDb250
cm9sbGVyOjpkaWRDaGFuZ2VDb250ZW50c1Zpc2liaWxpdHkoY29uc3QgRmxvYXRQb2ludCYgdmll
d3AKIAogdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyOjpzeW5jVmlzaWJsZUNvbnRlbnRzKGNv
bnN0IEZsb2F0UG9pbnQmIHRyYWplY3RvcnlWZWN0b3IpCiB7Ci0gICAgRHJhd2luZ0FyZWFQcm94
eSogY29uc3QgZHJhd2luZ0FyZWEgPSBtX3dlYlBhZ2VQcm94eS0+ZHJhd2luZ0FyZWEoKTsKKyAg
ICBEcmF3aW5nQXJlYVByb3h5KiBkcmF3aW5nQXJlYSA9IG1fd2ViUGFnZVByb3h5LT5kcmF3aW5n
QXJlYSgpOwogICAgIGlmICghZHJhd2luZ0FyZWEgfHwgbV92aWV3cG9ydFNpemUuaXNFbXB0eSgp
IHx8IG1fY29udGVudHNTaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yMzQs
OCArMjM0LDYgQEAgdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyOjpkaWRDaGFuZ2VWaWV3cG9y
dEF0dHJpYnV0ZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnQKIAogICAgIGlmICh1cGRhdGVNaW5p
bXVtU2NhbGVUb0ZpdCh0cnVlKSkKICAgICAgICAgbV9jbGllbnQtPmRpZENoYW5nZVZpZXdwb3J0
QXR0cmlidXRlcygpOwotCi0gICAgc3luY1Zpc2libGVDb250ZW50cygpOwogfQogCiBXZWJDb3Jl
OjpGbG9hdFNpemUgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6dmlld3BvcnRTaXplSW5Db250ZW50
c0Nvb3JkaW5hdGVzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAppbmRleCBhMmI5NWMzLi44MmU1MmNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xMDI3LDggKzEwMjcsMTkgQEAg
dm9pZCBXZWJQYWdlOjpzZW5kVmlld3BvcnRBdHRyaWJ1dGVzQ2hhbmdlZCgpCiAgICAgVmlld3Bv
cnRBdHRyaWJ1dGVzIGF0dHIgPSBjb21wdXRlVmlld3BvcnRBdHRyaWJ1dGVzKG1fcGFnZS0+dmll
d3BvcnRBcmd1bWVudHMoKSwgbWluaW11bUxheW91dEZhbGxiYWNrV2lkdGgsIGRldmljZVdpZHRo
LCBkZXZpY2VIZWlnaHQsIG1fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSwgbV92aWV3cG9ydFNp
emUpOwogICAgIGF0dHIuaW5pdGlhbFNjYWxlID0gbV9wYWdlLT52aWV3cG9ydEFyZ3VtZW50cygp
Lnpvb207IC8vIFJlc2V0cyBhdXRvICgtMSkgaWYgbm8gdmFsdWUgd2FzIHNldCBieSB1c2VyLgog
CisgICAgLy8gS2VlcCB0aGUgY3VycmVudCBwb3NpdGlvbiwgdXBkYXRlIHNpemUgb25seS4KKyAg
ICBGcmFtZVZpZXcqIHZpZXcgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCk7CisgICAgSW50
UG9pbnQgY29udGVudEZpeGVkT3JpZ2luID0gdmlldy0+Zml4ZWRWaXNpYmxlQ29udGVudFJlY3Qo
KS5sb2NhdGlvbigpOworCisgICAgLy8gUHV0IHRoZSB3aWR0aCBhbmQgaGVpZ2h0IHRvIHRoZSB2
aWV3cG9ydCB3aWR0aCBhbmQgaGVpZ2h0LiBJbiBjc3MgdW5pdHMgaG93ZXZlci4KKyAgICBJbnRT
aXplIGNvbnRlbnRGaXhlZFNpemUgPSBtX3ZpZXdwb3J0U2l6ZTsKKyAgICBjb250ZW50Rml4ZWRT
aXplLnNjYWxlKDEgLyBtX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkpOworCisgICAgc2V0Rml4
ZWRWaXNpYmxlQ29udGVudFJlY3QoSW50UmVjdChjb250ZW50Rml4ZWRPcmlnaW4sIGNvbnRlbnRG
aXhlZFNpemUpKTsKKwogICAgIC8vIFRoaXMgYWxzbyB0YWtlcyBjYXJlIG9mIHRoZSByZWxheW91
dC4KLSAgICBzZXRGaXhlZExheW91dFNpemUoSW50U2l6ZShzdGF0aWNfY2FzdDxpbnQ+KGF0dHIu
bGF5b3V0U2l6ZS53aWR0aCgpKSwgc3RhdGljX2Nhc3Q8aW50PihhdHRyLmxheW91dFNpemUuaGVp
Z2h0KCkpKSk7CisgICAgc2V0Rml4ZWRMYXlvdXRTaXplKHJvdW5kZWRJbnRTaXplKGF0dHIubGF5
b3V0U2l6ZSkpOworCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRDaGFuZ2VW
aWV3cG9ydFByb3BlcnRpZXMoYXR0cikpOwogfQogCg==
</data>
<flag name="review"
          id="192879"
          type_id="1"
          status="+"
          setter="kenneth"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176945</attachid>
            <date>2012-11-30 05:05:32 -0800</date>
            <delta_ts>2012-11-30 05:57:44 -0800</delta_ts>
            <desc>patch v3</desc>
            <filename>bug103428_v3</filename>
            <type>text/plain</type>
            <size>5296</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IGQzZjU3OGVhZmIwOTY3NjZkOWIyY2I0MDdjMTA2NDZhMTJlMjkyYTIKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
RnJpIE5vdiAzMCAxMzowNzoxNiAyMDEyICswMjAwCgogICAgYnVnMTAzNDI4CgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDFl
NjVhMWIuLjMwMWIwNGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0xMS0zMCAgTWlraGFp
bCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlha292QGludGVsLmNvbT4KKworICAgICAgICBb
V0syXSBUaWxlZEJhY2tpbmdTdG9yZTogRnJhbWUgdmlldyByZS1sYXlvdXRzIHdpdGggd3Jvbmcg
Rml4ZWQgVmlzaWJsZSBDb250ZW50IFJlY3QuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM0MjgKKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRo
IFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICBVbnNraXBwZWQgY29ycmVzcG9uZGluZyB0
ZXN0IGNhc2VzIGZvciBFRkwgV0syLgorCisgICAgICAgICogcGxhdGZvcm0vZWZsLXdrMi9UZXN0
RXhwZWN0YXRpb25zOgorCiAyMDEyLTExLTMwICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIExheW91dCBUZXN0IGZhc3QvZm9ybXMvKi1tdWx0
aXBsZS1maWVsZHMvKi1tdWx0aXBsZS1maWVsZHMtcHJlc2VydmUtdmFsdWUtYWZ0ZXItaGlzdG9y
eS1iYWNrLmh0bWwgaXMgZmFpbGluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
ZWZsLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsLXdrMi9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IDFkNDc2ZjUuLmU3N2FmYWEgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2VmbC13azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9lZmwtd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTI2OSwxMCArMjY5LDYgQEAg
d2Via2l0Lm9yZy9iLzEwMzEyNyBjc3MzL2RldmljZS1hZGFwdC9vcGVyYS9jb25zdHJhaW4tMDIy
LnhodG1sIFsgRmFpbHVyZSBdCiAjIFBhZ2UgY2xpZW50IGRvZXNuJ3QgcmVhY3QgdG8gb3JpZW50
YXRpb24gY2hhbmdlcyBmcm9tIENTUyBWaWV3cG9ydCBydWxlcy4KIHdlYmtpdC5vcmcvYi8xMDMx
MzAgY3NzMy9kZXZpY2UtYWRhcHQvb3BlcmEvb3JpZW50YXRpb24tMDAxLnhodG1sIFsgRmFpbHVy
ZSBdCiAKLSMgSXNzdWUgd2l0aCB2aWV3cG9ydCB3aWR0aCBhbmQgcmVsYXRpdmUgdW5pdHMuCi13
ZWJraXQub3JnL2IvMTAyOTIyIGNzczMvZGV2aWNlLWFkYXB0L29wZXJhL2NvbnN0cmFpbi0wMDYu
eGh0bWwgWyBGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8xMDI5MjIgY3NzMy9kZXZpY2UtYWRhcHQv
b3BlcmEvY29uc3RyYWluLTAwNy54aHRtbCBbIEZhaWx1cmUgXQotCiAjIFRleHQgaW5wdXQgY29u
dHJvbGxlciBuZWVkcyBzZWxlY3RlZFJhbmdlIGltcGxlbWVudGF0aW9uCiB3ZWJraXQub3JnL2Iv
OTk0MzggZWRpdGluZy9zZWxlY3Rpb24vbWl4ZWQtZWRpdGFiaWxpdHktMTAuaHRtbCBbIEZhaWx1
cmUgXQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKaW5kZXggODYyM2ZiMS4uMTQ4ZmVlOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE5IEBACisyMDEyLTExLTMwICBNaWtoYWlsIFBvemRueWFrb3YgIDxtaWtoYWlsLnBvemRu
eWFrb3ZAaW50ZWwuY29tPgorCisgICAgICAgIFtXSzJdIFRpbGVkQmFja2luZ1N0b3JlOiBGcmFt
ZSB2aWV3IHJlLWxheW91dHMgd2l0aCB3cm9uZyBGaXhlZCBWaXNpYmxlIENvbnRlbnQgUmVjdC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzQyOAor
CisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAg
ICAgIFNldCBub3cgYXBwcm9wcmlhdGUgZml4ZWQgdmlzaWJsZSBjb250ZW50IHJlY3QgYmVmb3Jl
IGxheW91dCB3aGVuIHZpZXdwb3J0CisgICAgICAgIGF0dHJpYnV0ZXMgY2hhbmdlLgorCisgICAg
ICAgICogVUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyOjpzeW5jVmlzaWJsZUNvbnRlbnRzKToKKyAgICAg
ICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6ZGlkQ2hhbmdlVmlld3BvcnRBdHRy
aWJ1dGVzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNlbmRWaWV3cG9ydEF0dHJpYnV0ZXNDaGFuZ2VkKToKKwog
MjAxMi0xMS0zMCAgTWloYWkgTWFlcmVhbiAgPG1tYWVyZWFuQGFkb2JlLmNvbT4KIAogICAgICAg
ICBbQ1NTUmVnaW9uc10gd2hlbiBXZWJLaXQgdXNlcyBWOCwgdGhlcmUgc2hvdWxkIGJlIGEgc2lu
Z2xlIHZhcmlhYmxlIHRvIHN0b3JlIGlmIHRoZSBDU1MgUmVnaW9ucyBmZWF0dXJlIGlzIGVuYWJs
ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlVmlld3BvcnRDb250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlVmlld3BvcnRDb250cm9s
bGVyLmNwcAppbmRleCA3YjRlNjY1Li5lNTY4NjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvUGFnZVZpZXdwb3J0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuY3BwCkBAIC0yMDksNyArMjA5LDcg
QEAgdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyOjpkaWRDaGFuZ2VDb250ZW50c1Zpc2liaWxp
dHkoY29uc3QgRmxvYXRQb2ludCYgdmlld3AKIAogdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVy
OjpzeW5jVmlzaWJsZUNvbnRlbnRzKGNvbnN0IEZsb2F0UG9pbnQmIHRyYWplY3RvcnlWZWN0b3Ip
CiB7Ci0gICAgRHJhd2luZ0FyZWFQcm94eSogY29uc3QgZHJhd2luZ0FyZWEgPSBtX3dlYlBhZ2VQ
cm94eS0+ZHJhd2luZ0FyZWEoKTsKKyAgICBEcmF3aW5nQXJlYVByb3h5KiBkcmF3aW5nQXJlYSA9
IG1fd2ViUGFnZVByb3h5LT5kcmF3aW5nQXJlYSgpOwogICAgIGlmICghZHJhd2luZ0FyZWEgfHwg
bV92aWV3cG9ydFNpemUuaXNFbXB0eSgpIHx8IG1fY29udGVudHNTaXplLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuOwogCkBAIC0yMzQsOCArMjM0LDYgQEAgdm9pZCBQYWdlVmlld3BvcnRDb250
cm9sbGVyOjpkaWRDaGFuZ2VWaWV3cG9ydEF0dHJpYnV0ZXMoY29uc3QgV2ViQ29yZTo6Vmlld3Bv
cnQKIAogICAgIGlmICh1cGRhdGVNaW5pbXVtU2NhbGVUb0ZpdCh0cnVlKSkKICAgICAgICAgbV9j
bGllbnQtPmRpZENoYW5nZVZpZXdwb3J0QXR0cmlidXRlcygpOwotCi0gICAgc3luY1Zpc2libGVD
b250ZW50cygpOwogfQogCiBXZWJDb3JlOjpGbG9hdFNpemUgUGFnZVZpZXdwb3J0Q29udHJvbGxl
cjo6dmlld3BvcnRTaXplSW5Db250ZW50c0Nvb3JkaW5hdGVzKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBhMmI5NWMzLi4zZTIw
YzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CkBAIC0xMDI3LDggKzEwMjcsMjEgQEAgdm9pZCBXZWJQYWdlOjpzZW5kVmlld3BvcnRBdHRyaWJ1
dGVzQ2hhbmdlZCgpCiAgICAgVmlld3BvcnRBdHRyaWJ1dGVzIGF0dHIgPSBjb21wdXRlVmlld3Bv
cnRBdHRyaWJ1dGVzKG1fcGFnZS0+dmlld3BvcnRBcmd1bWVudHMoKSwgbWluaW11bUxheW91dEZh
bGxiYWNrV2lkdGgsIGRldmljZVdpZHRoLCBkZXZpY2VIZWlnaHQsIG1fcGFnZS0+ZGV2aWNlU2Nh
bGVGYWN0b3IoKSwgbV92aWV3cG9ydFNpemUpOwogICAgIGF0dHIuaW5pdGlhbFNjYWxlID0gbV9w
YWdlLT52aWV3cG9ydEFyZ3VtZW50cygpLnpvb207IC8vIFJlc2V0cyBhdXRvICgtMSkgaWYgbm8g
dmFsdWUgd2FzIHNldCBieSB1c2VyLgogCisgICAgLy8gS2VlcCB0aGUgY3VycmVudCBwb3NpdGlv
biwgdXBkYXRlIHNpemUgb25seS4KKyAgICAvLyBGb3IgdGhlIG5ldyBsb2FkcyBwb3NpdGlvbiBp
cyBhbHJlYWR5IHJlc2V0IHRvICgwLDApLgorICAgIEZyYW1lVmlldyogdmlldyA9IG1fcGFnZS0+
bWFpbkZyYW1lKCktPnZpZXcoKTsKKyAgICBJbnRQb2ludCBjb250ZW50Rml4ZWRPcmlnaW4gPSB2
aWV3LT5maXhlZFZpc2libGVDb250ZW50UmVjdCgpLmxvY2F0aW9uKCk7CisKKyAgICAvLyBQdXQg
dGhlIHdpZHRoIGFuZCBoZWlnaHQgdG8gdGhlIHZpZXdwb3J0IHdpZHRoIGFuZCBoZWlnaHQuIElu
IGNzcyB1bml0cyBob3dldmVyLgorICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBpbiBzY2Fs
ZWQgdW5pdHMgYnV0IHRoaXMgY3VycmVudGx5IGFmZmVjdHMgdmlld3BvcnQgYXR0cmlidXRlcyBj
YWxjdWxhdGlvbi4KKyAgICBJbnRTaXplIGNvbnRlbnRGaXhlZFNpemUgPSBtX3ZpZXdwb3J0U2l6
ZTsKKyAgICBjb250ZW50Rml4ZWRTaXplLnNjYWxlKDEgLyBtX3BhZ2UtPmRldmljZVNjYWxlRmFj
dG9yKCkpOworCisgICAgc2V0Rml4ZWRWaXNpYmxlQ29udGVudFJlY3QoSW50UmVjdChjb250ZW50
Rml4ZWRPcmlnaW4sIGNvbnRlbnRGaXhlZFNpemUpKTsKKwogICAgIC8vIFRoaXMgYWxzbyB0YWtl
cyBjYXJlIG9mIHRoZSByZWxheW91dC4KLSAgICBzZXRGaXhlZExheW91dFNpemUoSW50U2l6ZShz
dGF0aWNfY2FzdDxpbnQ+KGF0dHIubGF5b3V0U2l6ZS53aWR0aCgpKSwgc3RhdGljX2Nhc3Q8aW50
PihhdHRyLmxheW91dFNpemUuaGVpZ2h0KCkpKSk7CisgICAgc2V0Rml4ZWRMYXlvdXRTaXplKHJv
dW5kZWRJbnRTaXplKGF0dHIubGF5b3V0U2l6ZSkpOworCiAgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpEaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoYXR0cikpOwogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>