<?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>73338</bug_id>
          
          <creation_ts>2011-11-29 11:06:47 -0800</creation_ts>
          <short_desc>[Qt] [WK2] QQuickWebView covers QML elements that should be rendered on top.</short_desc>
          <delta_ts>2011-12-01 10:02:41 -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 Qt</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>Qt</keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Viatcheslav Ostapenko">ostap73</reporter>
          <assigned_to name="Viatcheslav Ostapenko">ostap73</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>hausmann</cc>
    
    <cc>igor.oliveira</cc>
    
    <cc>noam</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>510920</commentid>
    <comment_count>0</comment_count>
    <who name="Viatcheslav Ostapenko">ostap73</who>
    <bug_when>2011-11-29 11:06:47 -0800</bug_when>
    <thetext>QQuickWebPage renders contents in canvas afterRendering() handler and covers all QML elements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510953</commentid>
    <comment_count>1</comment_count>
      <attachid>117009</attachid>
    <who name="Viatcheslav Ostapenko">ostap73</who>
    <bug_when>2011-11-29 11:37:22 -0800</bug_when>
    <thetext>Created attachment 117009
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510965</commentid>
    <comment_count>2</comment_count>
      <attachid>117009</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2011-11-29 11:48:37 -0800</bug_when>
    <thetext>Comment on attachment 117009
Patch

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

This needs to be two patches; 1 for purging the tiled-backingstore, and one for using the QSG node.

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp:240
&gt; +        return QSize(1, 1);

Comment

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp:285
&gt; +    if (!m_textureId) {
&gt; +        glGenTextures(1, &amp;m_textureId);
&gt; +        glBindTexture(GL_TEXTURE_2D, m_textureId);
&gt; +        QImage image(1, 1, QImage::Format_ARGB32);
&gt; +        image.fill(Qt::transparent);
&gt; +        glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, image.constBits());
&gt; +    } else
&gt; +        glBindTexture(GL_TEXTURE_2D, m_textureId);

nitpick: swap the directives and use early return

&gt; Source/WebKit2/UIProcess/qt/LayerTreeHostProxyQt.cpp:645
&gt; +    callOnMainThread(&amp;NeedTileBuffersRecreateReq,
&gt; +                     new NeedTileBuffersRecreateReqData(m_drawingAreaProxy-&gt;page()-&gt;process(),
&gt; +                                                        m_drawingAreaProxy-&gt;page()-&gt;pageID()));

For now LayerTreeHostProxyQt is not thread safe anyway; so maybe we should keep this for later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510972</commentid>
    <comment_count>3</comment_count>
      <attachid>117009</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-11-29 11:59:13 -0800</bug_when>
    <thetext>Comment on attachment 117009
Patch

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

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp:276
&gt; +void PageProxyTexture::bind()
&gt; +{
&gt; +    if (m_node-&gt;m_pagePrivate)
&gt; +        m_node-&gt;m_pagePrivate-&gt;paintToCurrentGLContext();

Since we are making a &quot;strange&quot; use of QSGTexture::bind(), I think it deserves a comment.

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp:173
&gt; +    if (q_ptr-&gt;isVisible())
&gt; +        pageView-&gt;setFlag(QQuickItem::ItemHasContents);

From IRC discussion I&apos;ve understood that this will be used as hidden API. I suggest that you explain this either here or in the check for ItemHasContents.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511127</commentid>
    <comment_count>4</comment_count>
    <who name="Viatcheslav Ostapenko">ostap73</who>
    <bug_when>2011-11-29 14:52:37 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 117009 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=117009&amp;action=review
&gt; 
&gt; This needs to be two patches; 1 for purging the tiled-backingstore, and one for using the QSG node.

Should it be some extra API for purging tiled backing store, or just separate functionality form current patch?
I, actually, tried to do memory saving patch 1st and it is quite tricky to invoke something on paint thread without having paint node. 

&gt; &gt; Source/WebKit2/UIProcess/qt/LayerTreeHostProxyQt.cpp:645
&gt; &gt; +    callOnMainThread(&amp;NeedTileBuffersRecreateReq,
&gt; &gt; +                     new NeedTileBuffersRecreateReqData(m_drawingAreaProxy-&gt;page()-&gt;process(),
&gt; &gt; +                                                        m_drawingAreaProxy-&gt;page()-&gt;pageID()));
&gt; 
&gt; For now LayerTreeHostProxyQt is not thread safe anyway; so maybe we should keep this for later.

I&apos;m not sure, can I do process-&gt;send() from paint thread? I briefly looked around and all send() calls are invoked form main thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511135</commentid>
    <comment_count>5</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2011-11-29 15:00:26 -0800</bug_when>
    <thetext>(In reply to comment #4)

&gt; Should it be some extra API for purging tiled backing store, or just separate functionality form current patch?
&gt; I, actually, tried to do memory saving patch 1st and it is quite tricky to invoke something on paint thread without having paint node. 

See below re. paint thread. I was actually thinking to do the QSG-paint-on-bind trick first, and add another patch for memory saving later as it&apos;s a different bug. 



&gt; I&apos;m not sure, can I do process-&gt;send() from paint thread? I briefly looked around and all send() calls are invoked form main thread.

Let me rephrase: right now in mini-browser we disable QSG multi-thread, and code in QtWebKit is not expected (yet) to be safe for multithread. That&apos;s because webKit2 already parallelizes everything for us, so adding yet another thread for painting creates complexity and doesn&apos;t solve much.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511141</commentid>
    <comment_count>6</comment_count>
    <who name="Viatcheslav Ostapenko">ostap73</who>
    <bug_when>2011-11-29 15:06:47 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 117009 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=117009&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp:276
&gt; &gt; +void PageProxyTexture::bind()
&gt; &gt; +{
&gt; &gt; +    if (m_node-&gt;m_pagePrivate)
&gt; &gt; +        m_node-&gt;m_pagePrivate-&gt;paintToCurrentGLContext();
&gt; 
&gt; Since we are making a &quot;strange&quot; use of QSGTexture::bind(), I think it deserves a comment.

I&apos;ll add comment.

&gt; &gt; Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp:173
&gt; &gt; +    if (q_ptr-&gt;isVisible())
&gt; &gt; +        pageView-&gt;setFlag(QQuickItem::ItemHasContents);
&gt; 
&gt; From IRC discussion I&apos;ve understood that this will be used as hidden API. I suggest that you explain this either here or in the check for ItemHasContents.

The kind of API is to clear flag ItemHasContents when page is not visible. This way it would cause drop of paint node.
The question is, where to add this comment?
And, actually, this might be not necessary. It can be done also by removing item from canvas - it will also drop all nodes associated with item.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511819</commentid>
    <comment_count>7</comment_count>
      <attachid>117009</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2011-11-30 09:39:12 -0800</bug_when>
    <thetext>Comment on attachment 117009
Patch

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

&gt; Source/WebKit2/ChangeLog:12
&gt; +        This considered to be temporary until QSGNode::UserNodeType will be available.

FWI we&apos;ll try to get this GL painted user node thing solved as soon as possible, maybe January or February.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511826</commentid>
    <comment_count>8</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2011-11-30 10:01:52 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 117009 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=117009&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:12
&gt; &gt; +        This considered to be temporary until QSGNode::UserNodeType will be available.
&gt; 
&gt; FWI we&apos;ll try to get this GL painted user node thing solved as soon as possible, maybe January or February.

That&apos;s great. Any objections to using this temporary hack until then? I&apos;m inclined to let it in (once the comments are addressed).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511853</commentid>
    <comment_count>9</comment_count>
      <attachid>117214</attachid>
    <who name="Viatcheslav Ostapenko">ostap73</who>
    <bug_when>2011-11-30 10:18:36 -0800</bug_when>
    <thetext>Created attachment 117214
Painting only patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511862</commentid>
    <comment_count>10</comment_count>
      <attachid>117214</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-11-30 10:28:13 -0800</bug_when>
    <thetext>Comment on attachment 117214
Painting only patch

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

ChangeLog is duplicated. Also some comments.

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp:241
&gt; +        // Return size of this texture.

This line can be removed.

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp:294
&gt; +    if (!(flags() &amp; ItemHasContents)) {

This new version doesn&apos;t set ItemHasContents. Is that intentional? About where to comment on the hidden API, I think here is a fine place to comment if you want to have it.

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp:296
&gt; +        if (oldNode)
&gt; +            delete oldNode;

Should we clear m_paintNode here too?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511885</commentid>
    <comment_count>11</comment_count>
    <who name="Viatcheslav Ostapenko">ostap73</who>
    <bug_when>2011-11-30 10:53:38 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 117214 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=117214&amp;action=review
&gt; 
&gt; ChangeLog is duplicated. Also some comments.

Oops! :(

&gt; &gt; Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp:241
&gt; &gt; +        // Return size of this texture.
&gt; 
&gt; This line can be removed.

Ok

&gt; &gt; Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp:294
&gt; &gt; +    if (!(flags() &amp; ItemHasContents)) {
&gt; 
&gt; This new version doesn&apos;t set ItemHasContents. Is that intentional? About where to comment on the hidden API, I think here is a fine place to comment if you want to have it.

Yes, it is intentional.
1. It has no use in this patch because it is painting only.
2. It can be done other way (like removeFromCanvas test does), so I&apos;ll skip it completely.

&gt; &gt; Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp:296
&gt; &gt; +        if (oldNode)
&gt; &gt; +            delete oldNode;
&gt; 
&gt; Should we clear m_paintNode here too?

No.
Destructor will be called and it there resetPaintNode will be called.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511919</commentid>
    <comment_count>12</comment_count>
      <attachid>117231</attachid>
    <who name="Viatcheslav Ostapenko">ostap73</who>
    <bug_when>2011-11-30 11:11:55 -0800</bug_when>
    <thetext>Created attachment 117231
Fix Changelog mess</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511924</commentid>
    <comment_count>13</comment_count>
      <attachid>117214</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2011-11-30 11:14:21 -0800</bug_when>
    <thetext>Comment on attachment 117214
Painting only patch

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

&gt;&gt;&gt; Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp:296
&gt;&gt;&gt; +            delete oldNode;
&gt;&gt; 
&gt;&gt; Should we clear m_paintNode here too?
&gt; 
&gt; No.
&gt; Destructor will be called and it there resetPaintNode will be called.

Thanks for explaining. I still have a last question: Is resetPaintNode necessary? IOW, can a node be destroyed before the item behind our back? If not I think it is better to explicitly clear m_paintNode here and get rid of resetPaintNode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511962</commentid>
    <comment_count>14</comment_count>
    <who name="Viatcheslav Ostapenko">ostap73</who>
    <bug_when>2011-11-30 11:38:27 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 117214 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=117214&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp:296
&gt; &gt;&gt;&gt; +            delete oldNode;
&gt; &gt;&gt; 
&gt; &gt;&gt; Should we clear m_paintNode here too?
&gt; &gt; 
&gt; &gt; No.
&gt; &gt; Destructor will be called and it there resetPaintNode will be called.
&gt; 
&gt; Thanks for explaining. I still have a last question: Is resetPaintNode 
&gt; necessary? IOW, can a node be destroyed before the item behind our back? 
&gt; If not I think it is better to explicitly clear m_paintNode here and get 
&gt; rid of resetPaintNode.

Yes, it can - when the item get removed from canvas. Check removeFromCanvas test in 1st patch. I fixed bug like this on internal branch for old (no AC) tiles implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512060</commentid>
    <comment_count>15</comment_count>
      <attachid>117231</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2011-11-30 13:10:40 -0800</bug_when>
    <thetext>Comment on attachment 117231
Fix Changelog mess

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

Talked to the QSG guys about this; If we do a hack, we should use the material&apos;s virtual functions instead of the texture&apos;s.

&gt; Source/WebKit2/ChangeLog:12
&gt; +        This considered to be temporary until QSGNode::UserNodeType will be available.

This is considered to be temporary until QSGNode::UserNodeType will be available.

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp:166
&gt; +    , m_paintNode(0)

Any chance we could use OwnPtr here?

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp:223
&gt; +    PageProxyTexture(PageProxyNode* node)  : m_node(node), m_textureId(0) { }

Remove double spacing, new lines.

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp:240
&gt; +        // We use transparent 1x1 texture to satisfy scene graph painter.

We use a transparent 1x1 texture to satisfy the scene graph painter.

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp:288
&gt; +    glGenTextures(1, &amp;m_textureId);
&gt; +    glBindTexture(GL_TEXTURE_2D, m_textureId);
&gt; +    QImage image(1, 1, QImage::Format_ARGB32);
&gt; +    image.fill(Qt::transparent);
&gt; +    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, image.constBits());

Comment (FIXME: temporary until Qt Scenegraph support custom painting).
You can add that comment in several places, e.g. here and before the class definitions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512360</commentid>
    <comment_count>16</comment_count>
    <who name="Viatcheslav Ostapenko">ostap73</who>
    <bug_when>2011-11-30 19:35:11 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 117231 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=117231&amp;action=review
&gt; &gt; Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp:166
&gt; &gt; +    , m_paintNode(0)
&gt; 
&gt; Any chance we could use OwnPtr here?

No way.
Paint nodes are owned by QSGCanvas and deallocated usually by QSGCanvas.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512366</commentid>
    <comment_count>17</comment_count>
      <attachid>117313</attachid>
    <who name="Viatcheslav Ostapenko">ostap73</who>
    <bug_when>2011-11-30 19:42:38 -0800</bug_when>
    <thetext>Created attachment 117313
QSGMaterial based painting</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512377</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-30 19:50:39 -0800</bug_when>
    <thetext>Attachment 117313 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1

Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp:32:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512471</commentid>
    <comment_count>19</comment_count>
      <attachid>117338</attachid>
    <who name="Viatcheslav Ostapenko">ostap73</who>
    <bug_when>2011-11-30 22:16:18 -0800</bug_when>
    <thetext>Created attachment 117338
Fix style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512487</commentid>
    <comment_count>20</comment_count>
      <attachid>117338</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2011-11-30 22:28:03 -0800</bug_when>
    <thetext>Comment on attachment 117338
Fix style.

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

Some nitpicks.... not r&apos;ing it yet, I feel like I need a second opinion on this.

&gt; Source/WebKit2/ChangeLog:10
&gt; +        updateState() method to draw texture mapper graphics layers.

texture mapper -&gt; TextureMapper

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp:224
&gt; +// FIXME: temporary until Qt Scenegraph will support custom painting

Period at end of sentence.

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp:227
&gt; +    virtual char const* const* attributeNames() const

Weird signature. But it&apos;s a QSG reimp so nothing I can do about it :(

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp:234
&gt; +    // vertexShader and fragmentShader are no-op shaders
&gt; +    // All real painting is gone by texture mapper through LayerTreeHostProxy

Ditto

&gt; Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp:291
&gt; +    if (node-&gt;m_pagePrivate)
&gt; +        node-&gt;m_pagePrivate-&gt;paintToCurrentGLContext();

Comment something like &quot;FIXME: Normally we wouldn&apos;t paint inside QSGMaterialShader::updateState, but this is a temporary hack until custom paint nodes are available.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512584</commentid>
    <comment_count>21</comment_count>
      <attachid>117338</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2011-12-01 00:39:01 -0800</bug_when>
    <thetext>Comment on attachment 117338
Fix style.

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

Talked to Simon, let&apos;s go ahead with this, please fix the style nitpicks before committing...

&gt;&gt; Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp:234
&gt;&gt; +    // All real painting is gone by texture mapper through LayerTreeHostProxy
&gt; 
&gt; Ditto

(Period at end of sentence)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512758</commentid>
    <comment_count>22</comment_count>
      <attachid>117418</attachid>
    <who name="Viatcheslav Ostapenko">ostap73</who>
    <bug_when>2011-12-01 07:43:04 -0800</bug_when>
    <thetext>Created attachment 117418
Final comment fixes. Reviewed by Noam.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512865</commentid>
    <comment_count>23</comment_count>
      <attachid>117418</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-01 10:02:35 -0800</bug_when>
    <thetext>Comment on attachment 117418
Final comment fixes. Reviewed by Noam.

Clearing flags on attachment: 117418

Committed r101683: &lt;http://trac.webkit.org/changeset/101683&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512866</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-01 10:02:41 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117009</attachid>
            <date>2011-11-29 11:37:22 -0800</date>
            <delta_ts>2011-11-30 10:18:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>texture_painting_01.diff</filename>
            <type>text/plain</type>
            <size>24072</size>
            <attacher name="Viatcheslav Ostapenko">ostap73</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlZmQ1NmJhLi4zNTdiZDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTEtMTEtMjkgIFZpYXRjaGVzbGF2IE9zdGFwZW5rbyAgPG9zdGFwZW5rby52aWF0Y2hl
c2xhdkBub2tpYS5jb20+CisKKyAgICAgICAgW1F0XSBbV0syXSBRUXVpY2tXZWJWaWV3IGNvdmVy
cyBRTUwgZWxlbWVudHMgdGhhdCBzaG91bGQgYmUgcmVuZGVyZWQgb24gdG9wLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMzMzgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnRhdGlvbiBvZiBo
ZWxwZXIgZnVuY3Rpb24gdG8gcmVtb3ZlIGFsbCBHTCBhbGxvY2F0ZWQgdGlsZXMKKyAgICAgICAg
d2hlbiBRUXVpY2tXZWJWaWV3IGdldHMgcmVtb3ZlZCBmcm9tIGNhbnZhcy4KKworICAgICAgICBU
ZXN0ZWQgYnkgbmV3IEFQSSB0ZXN0IGluIFdLMiAodHN0X1FRdWlja1dlYlZpZXc6OnJlbW92ZUZy
b21DYW52YXMpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJOb2RlOjpjbGVh
bk5vZGVUaWxlc1JlY3Vyc2l2ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJOb2RlLmg6CisKIDIwMTEtMTEtMjYgIEFsZWphbmRybyBHLiBDYXN0cm8g
IDxhbGV4QGlnYWxpYS5jb20+CiAKICAgICAgICAgRml4IGNvbXBpbGF0aW9uIGFmdGVyIHIxMDEx
NTcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJOb2RlLmNwcAppbmRleCBhMjdlYzhjLi4yMzZjYTY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyTm9kZS5jcHAKQEAgLTYxOSw2ICs2MTksMTQgQEAgdm9pZCBUZXh0dXJl
TWFwcGVyTm9kZTo6cmVtb3ZlQ29udGVudHNUaWxlKGludCBpZCkKICAgICBtX2V4dGVybmFsbHlN
YW5hZ2VkVGlsZXMucmVtb3ZlKGlkKTsKIH0KIAordm9pZCBUZXh0dXJlTWFwcGVyTm9kZTo6Y2xl
YW5Ob2RlVGlsZXNSZWN1cnNpdmUoKQoreworICAgIG1fZXh0ZXJuYWxseU1hbmFnZWRUaWxlcy5j
bGVhcigpOworCisgICAgZm9yIChpbnQgaSA9IG1fY2hpbGRyZW4uc2l6ZSgpIC0gMTsgaSA+PSAw
OyAtLWkpCisgICAgICAgIG1fY2hpbGRyZW5baV0tPmNsZWFuTm9kZVRpbGVzUmVjdXJzaXZlKCk7
Cit9CisKIHZvaWQgVGV4dHVyZU1hcHBlck5vZGU6OnNldFRpbGVCYWNrQnVmZmVyVGV4dHVyZUZv
ckRpcmVjdGx5Q29tcG9zaXRlZEltYWdlKGludCBpZCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVj
dCwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBCaXRtYXBUZXh0dXJlKiB0ZXh0dXJlKQog
ewogICAgIEhhc2hNYXA8aW50LCBFeHRlcm5hbGx5TWFuYWdlZFRpbGU+OjppdGVyYXRvciBpdCA9
IG1fZXh0ZXJuYWxseU1hbmFnZWRUaWxlcy5maW5kKGlkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTm9kZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJOb2RlLmgK
aW5kZXggZWI5YzY5MmUuLmQ1NzYxN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTm9kZS5oCkBAIC0xNTgs
NiArMTU4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VGlsZUJhY2tCdWZmZXJUZXh0dXJlRm9y
RGlyZWN0bHlDb21wb3NpdGVkSW1hZ2UoaW50IGlkLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIEJpdG1hcFRleHR1cmUqKTsKICAgICB2b2lk
IGNsZWFyQWxsRGlyZWN0bHlDb21wb3NpdGVkSW1hZ2VUaWxlcygpOwogICAgIGJvb2wgY29sbGVj
dFZpc2libGVDb250ZW50c1JlY3RzKE5vZGVSZWN0TWFwJiwgY29uc3QgRmxvYXRSZWN0Jik7Cisg
ICAgdm9pZCBjbGVhbk5vZGVUaWxlc1JlY3Vyc2l2ZSgpOwogI2VuZGlmCiAgICAgdm9pZCBzZXRJ
RChpbnQgaWQpIHsgbV9pZCA9IGlkOyB9CiAgICAgaW50IGlkKCkgY29uc3QgeyByZXR1cm4gbV9p
ZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCmluZGV4IGE3MTI4OTUuLmQyYzE1MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw2MiBAQAorMjAxMS0xMS0yOSAgVmlhdGNoZXNsYXYgT3N0YXBlbmtvICA8b3N0YXBlbmtvLnZp
YXRjaGVzbGF2QG5va2lhLmNvbT4KKworICAgICAgICBbUXRdIFtXSzJdIFFRdWlja1dlYlZpZXcg
Y292ZXJzIFFNTCBlbGVtZW50cyB0aGF0IHNob3VsZCBiZSByZW5kZXJlZCBvbiB0b3AuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzMzOAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgcGFpbnRpbmcg
b2YgUVF1aWNrV2ViUGFnZSBjb250ZW50IGZyb20gY2FudmFzIGFmdGVycmVuZGVyaW5nKCkgdG8K
KyAgICAgICAgUVNHU2ltcGxlVGV4dHVyZSBiYXNlZCBwYWludCBub2RlLiBJbXBsZW1lbnRhdGlv
biB1c2VzIFFTR1RleHR1cmUgYmluZCgpIG1ldGhvZAorICAgICAgICB0byBkcmF3IHRleHR1cmUg
bWFwcGVyIGdyYXBoaWNzIGxheWVycyBhbmQgYWZ0ZXIgdGhhdCBiaW5kcyAxeDEgcGl4ZWwgdHJh
bnNwYXJlbnQKKyAgICAgICAgdGV4dHVyZSBpbiBvcmRlciB0byBzYXRpc2Z5IFF0IGNhbnZhcyBy
ZW5kZXJpbmcuCisgICAgICAgIFRoaXMgY29uc2lkZXJlZCB0byBiZSB0ZW1wb3JhcnkgdW50aWwg
UVNHTm9kZTo6VXNlck5vZGVUeXBlIHdpbGwgYmUgYXZhaWxhYmxlLgorCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFRdWlja1dlYlBhZ2U6
OlFRdWlja1dlYlBhZ2UpOgorICAgICAgICAoUVF1aWNrV2ViUGFnZVByaXZhdGU6OlFRdWlja1dl
YlBhZ2VQcml2YXRlKToKKyAgICAgICAgKFBhZ2VQcm94eVRleHR1cmU6OlBhZ2VQcm94eVRleHR1
cmUpOgorICAgICAgICAoUGFnZVByb3h5VGV4dHVyZTo6flBhZ2VQcm94eVRleHR1cmUpOgorICAg
ICAgICAoUGFnZVByb3h5VGV4dHVyZTo6dGV4dHVyZUlkKToKKyAgICAgICAgKFBhZ2VQcm94eVRl
eHR1cmU6OnRleHR1cmVTaXplKToKKyAgICAgICAgKFBhZ2VQcm94eVRleHR1cmU6Omhhc0FscGhh
Q2hhbm5lbCk6CisgICAgICAgIChQYWdlUHJveHlUZXh0dXJlOjpoYXNNaXBtYXBzKToKKyAgICAg
ICAgKFBhZ2VQcm94eU5vZGU6OlBhZ2VQcm94eU5vZGUpOgorICAgICAgICAoUGFnZVByb3h5Tm9k
ZTo6flBhZ2VQcm94eU5vZGUpOgorICAgICAgICAoUGFnZVByb3h5VGV4dHVyZTo6YmluZCk6Cisg
ICAgICAgIChRUXVpY2tXZWJQYWdlOjp1cGRhdGVQYWludE5vZGUpOgorICAgICAgICAoUVF1aWNr
V2ViUGFnZVByaXZhdGU6OnJlc2V0UGFpbnROb2RlKToKKyAgICAgICAgKFFRdWlja1dlYlBhZ2VQ
cml2YXRlOjp+UVF1aWNrV2ViUGFnZVByaXZhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
cXQvcXF1aWNrd2VicGFnZV9wLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3
ZWJwYWdlX3BfcC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5j
cHA6CisgICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6X3Ffb25WaXNpYmxlQ2hhbmdlZCk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xcXVpY2t3ZWJ2aWV3L3RzdF9xcXVp
Y2t3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHRzdF9RUXVpY2tXZWJWaWV3OjpzaG93V2ViVmlldyk6
CisgICAgICAgICh0c3RfUVF1aWNrV2ViVmlldzo6cmVtb3ZlRnJvbUNhbnZhcyk6CisgICAgICAg
ICogVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2lu
Z0FyZWFQcm94eTo6bGF5ZXJUcmVlSG9zdFByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF5
ZXJUcmVlSG9zdFByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL3F0L0xheWVyVHJlZUhvc3RQ
cm94eVF0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdFByb3h5OjpkaWRSZW5k
ZXJGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6Ok5lZWRUaWxlQnVmZmVyc1JlY3JlYXRlUmVxRGF0
YTo6TmVlZFRpbGVCdWZmZXJzUmVjcmVhdGVSZXFEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmVl
ZFRpbGVCdWZmZXJzUmVjcmVhdGVSZXEpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0
UHJveHk6OnB1cmdlR0xDb250ZXh0RGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0V2Vi
UGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFF0V2ViUGFnZVByb3h5OjpwdXJnZUdMQ29udGV4dERh
dGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHcmFwaGljc0xheWVyOjpkcm9wVGlsZWRCYWNraW5nU3RvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR3JhcGhpY3NMYXllcjo6cmVDcmVhdGVUaWxlZEJhY2tpbmdTdG9y
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGljc0xheWVy
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaDoKKyAgICAg
ICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdDo6bmVlZFRpbGVCdWZmZXJzUmVjcmVhdGUpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0Lm1lc3NhZ2VzLmluOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9xdC9MYXllclRyZWVIb3N0UXQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpMYXllclRyZWVIb3N0UXQ6OkxheWVyVHJlZUhvc3RRdCk6CisgICAgICAgIChX
ZWJLaXQ6OkxheWVyVHJlZUhvc3RRdDo6Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKToKKyAgICAg
ICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdFF0OjpuZWVkVGlsZUJ1ZmZlcnNSZWNyZWF0ZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L0xheWVyVHJlZUhvc3RRdC5oOgorCiAyMDEx
LTExLTI2ICBDYWlvIE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9w
ZW5ib3NzYS5vcmc+CiAKICAgICAgICAgW1F0XSBbV0syXSBRdERvd25sb2FkTWFuYWdlciBkb2Vz
bid0IG5lZWQgdG8gYmUgUmVmQ291bnRlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJwYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcXF1aWNrd2VicGFnZS5jcHAKaW5kZXggNTQ2YmRlNi4uZTQ0NTdhOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJwYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnBhZ2UuY3BwCkBA
IC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAicXF1aWNrd2Vidmlld19wLmgiCiAjaW5jbHVkZSA8
UXRDb3JlL1FVcmw+CiAjaW5jbHVkZSA8UXREZWNsYXJhdGl2ZS9RUXVpY2tDYW52YXM+CisjaW5j
bHVkZSA8UXREZWNsYXJhdGl2ZS9RU0dTaW1wbGVUZXh0dXJlTm9kZT4KIAogUVF1aWNrV2ViUGFn
ZTo6UVF1aWNrV2ViUGFnZShRUXVpY2tJdGVtKiBwYXJlbnQpCiAgICAgOiBRUXVpY2tJdGVtKHBh
cmVudCkKQEAgLTM4LDcgKzM5LDYgQEAgUVF1aWNrV2ViUGFnZTo6UVF1aWNrV2ViUGFnZShRUXVp
Y2tJdGVtKiBwYXJlbnQpCiAgICAgLy8gV2UgZG8gdGhlIHRyYW5zZm9ybSBmcm9tIHRoZSB0b3Ag
bGVmdCBzbyB0aGUgdmlld3BvcnQgY2FuIGFzc3VtZSB0aGUgcG9zaXRpb24gMCwgMAogICAgIC8v
IGlzIGFsd2F5cyB3aGVyZSByZW5kZXJpbmcgc3RhcnRzLgogICAgIHNldFRyYW5zZm9ybU9yaWdp
bihUb3BMZWZ0KTsKLSAgICBkLT5pbml0aWFsaXplU2NlbmVHcmFwaENvbm5lY3Rpb25zKCk7CiB9
CiAKIFFRdWlja1dlYlBhZ2U6On5RUXVpY2tXZWJQYWdlKCkKQEAgLTE1OCwzMSArMTU4LDE1IEBA
IHZvaWQgUVF1aWNrV2ViUGFnZTo6dG91Y2hFdmVudChRVG91Y2hFdmVudCogZXZlbnQpCiAgICAg
dGhpcy0+ZXZlbnQoZXZlbnQpOwogfQogCi12b2lkIFFRdWlja1dlYlBhZ2U6Oml0ZW1DaGFuZ2Uo
SXRlbUNoYW5nZSBjaGFuZ2UsIGNvbnN0IEl0ZW1DaGFuZ2VEYXRhJiBkYXRhKQotewotICAgIGlm
IChjaGFuZ2UgPT0gSXRlbVNjZW5lQ2hhbmdlKQotICAgICAgICBkLT5pbml0aWFsaXplU2NlbmVH
cmFwaENvbm5lY3Rpb25zKCk7Ci0gICAgUVF1aWNrSXRlbTo6aXRlbUNoYW5nZShjaGFuZ2UsIGRh
dGEpOwotfQotCiBRUXVpY2tXZWJQYWdlUHJpdmF0ZTo6UVF1aWNrV2ViUGFnZVByaXZhdGUoUVF1
aWNrV2ViUGFnZSogdmlldykKICAgICA6IHEodmlldykKICAgICAsIHBhZ2VQcm94eSgwKQogICAg
ICwgc2dVcGRhdGVRdWV1ZSh2aWV3KQogICAgICwgcGFpbnRpbmdJc0luaXRpYWxpemVkKGZhbHNl
KQorICAgICwgbV9wYWludE5vZGUoMCkKIHsKIH0KIAotdm9pZCBRUXVpY2tXZWJQYWdlUHJpdmF0
ZTo6aW5pdGlhbGl6ZVNjZW5lR3JhcGhDb25uZWN0aW9ucygpCi17Ci0gICAgaWYgKHBhaW50aW5n
SXNJbml0aWFsaXplZCkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmICghcS0+Y2FudmFzKCkpCi0g
ICAgICAgIHJldHVybjsKLSAgICBwYWludGluZ0lzSW5pdGlhbGl6ZWQgPSB0cnVlOwotICAgIFFP
YmplY3Q6OmNvbm5lY3QocS0+Y2FudmFzKCksIFNJR05BTChhZnRlclJlbmRlcmluZygpKSwgcSwg
U0xPVChfcV9vbkFmdGVyU2NlbmVSZW5kZXIoKSksIFF0OjpEaXJlY3RDb25uZWN0aW9uKTsKLX0K
LQogdm9pZCBRUXVpY2tXZWJQYWdlUHJpdmF0ZTo6c2V0UGFnZVByb3h5KFF0V2ViUGFnZVByb3h5
KiBwYWdlUHJveHkpCiB7CiAgICAgQVNTRVJUKCF0aGlzLT5wYWdlUHJveHkpOwpAQCAtMjMzLDEw
ICsyMTcsMTAxIEBAIHZvaWQgUVF1aWNrV2ViUGFnZVByaXZhdGU6OnBhaW50VG9DdXJyZW50R0xD
b250ZXh0KCkKICAgICBBU1NFUlQoIWdsR2V0RXJyb3IoKSk7CiB9CiAKLXZvaWQgUVF1aWNrV2Vi
UGFnZVByaXZhdGU6Ol9xX29uQWZ0ZXJTY2VuZVJlbmRlcigpCitzdHJ1Y3QgUGFnZVByb3h5Tm9k
ZTsKKworc3RydWN0IFBhZ2VQcm94eVRleHR1cmUgOiBwdWJsaWMgUVNHVGV4dHVyZSB7CisgICAg
UGFnZVByb3h5VGV4dHVyZShQYWdlUHJveHlOb2RlKiBub2RlKSAgOiBtX25vZGUobm9kZSksIG1f
dGV4dHVyZUlkKDApIHsgfQorCisgICAgflBhZ2VQcm94eVRleHR1cmUoKQorICAgIHsKKyAgICAg
ICAgaWYgKG1fdGV4dHVyZUlkKQorICAgICAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmbV90
ZXh0dXJlSWQpOworICAgIH0KKworICAgIHZvaWQgYmluZCgpOworCisgICAgaW50IHRleHR1cmVJ
ZCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV90ZXh0dXJlSWQ7CisgICAgfQorCisg
ICAgUVNpemUgdGV4dHVyZVNpemUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIFFTaXpl
KDEsIDEpOworICAgIH0KKworICAgIGJvb2wgaGFzQWxwaGFDaGFubmVsKCkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHZpcnR1YWwgYm9vbCBoYXNNaXBt
YXBzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBQ
YWdlUHJveHlOb2RlKiBtX25vZGU7CisgICAgR0x1aW50IG1fdGV4dHVyZUlkOworfTsKKworc3Ry
dWN0IFBhZ2VQcm94eU5vZGUgOiBwdWJsaWMgUVNHU2ltcGxlVGV4dHVyZU5vZGUgeworICAgIFBh
Z2VQcm94eU5vZGUoUVF1aWNrV2ViUGFnZVByaXZhdGUqIHBhZ2UpIDogbV9wYWdlUHJpdmF0ZShw
YWdlKSwgbV90ZXh0dXJlKHRoaXMpCisgICAgeworICAgICAgICBzZXRUZXh0dXJlKCZtX3RleHR1
cmUpOworICAgIH0KKworICAgIH5QYWdlUHJveHlOb2RlKCkKKyAgICB7CisgICAgICAgIGlmICht
X3BhZ2VQcml2YXRlKQorICAgICAgICAgICAgbV9wYWdlUHJpdmF0ZS0+cmVzZXRQYWludE5vZGUo
KTsKKyAgICB9CisKKyAgICBRUXVpY2tXZWJQYWdlUHJpdmF0ZSogbV9wYWdlUHJpdmF0ZTsKKyAg
ICBQYWdlUHJveHlUZXh0dXJlIG1fdGV4dHVyZTsKK307CisKK3ZvaWQgUGFnZVByb3h5VGV4dHVy
ZTo6YmluZCgpCit7CisgICAgaWYgKG1fbm9kZS0+bV9wYWdlUHJpdmF0ZSkKKyAgICAgICAgbV9u
b2RlLT5tX3BhZ2VQcml2YXRlLT5wYWludFRvQ3VycmVudEdMQ29udGV4dCgpOworCisgICAgaWYg
KCFtX3RleHR1cmVJZCkgeworICAgICAgICBnbEdlblRleHR1cmVzKDEsICZtX3RleHR1cmVJZCk7
CisgICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbV90ZXh0dXJlSWQpOworICAg
ICAgICBRSW1hZ2UgaW1hZ2UoMSwgMSwgUUltYWdlOjpGb3JtYXRfQVJHQjMyKTsKKyAgICAgICAg
aW1hZ2UuZmlsbChRdDo6dHJhbnNwYXJlbnQpOworICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVY
VFVSRV8yRCwgMCwgR0xfUkdCQSwgMSwgMSwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwg
aW1hZ2UuY29uc3RCaXRzKCkpOworICAgIH0gZWxzZQorICAgICAgICBnbEJpbmRUZXh0dXJlKEdM
X1RFWFRVUkVfMkQsIG1fdGV4dHVyZUlkKTsKK30KKworUVNHTm9kZSogUVF1aWNrV2ViUGFnZTo6
dXBkYXRlUGFpbnROb2RlKFFTR05vZGUqIG9sZE5vZGUsIFVwZGF0ZVBhaW50Tm9kZURhdGEqKQor
eworICAgIGlmICghKGZsYWdzKCkgJiBJdGVtSGFzQ29udGVudHMpKSB7CisgICAgICAgIGlmIChv
bGROb2RlKQorICAgICAgICAgICAgZGVsZXRlIG9sZE5vZGU7CisgICAgICAgIHJldHVybiAwOwor
ICAgIH0KKworICAgIFBhZ2VQcm94eU5vZGUqIHByb3h5Tm9kZSA9IHN0YXRpY19jYXN0PFBhZ2VQ
cm94eU5vZGUqPihvbGROb2RlKTsKKyAgICBpZiAoIXByb3h5Tm9kZSkgeworICAgICAgICBwcm94
eU5vZGUgPSBuZXcgUGFnZVByb3h5Tm9kZShkKTsKKyAgICAgICAgZC0+bV9wYWludE5vZGUgPSBw
cm94eU5vZGU7CisgICAgfQorCisgICAgcmV0dXJuIHByb3h5Tm9kZTsKK30KKwordm9pZCBRUXVp
Y2tXZWJQYWdlUHJpdmF0ZTo6cmVzZXRQYWludE5vZGUoKQoreworICAgIG1fcGFpbnROb2RlID0g
MDsKKyAgICBwYWdlUHJveHktPnB1cmdlR0xDb250ZXh0RGF0YSgpOworfQorCitRUXVpY2tXZWJQ
YWdlUHJpdmF0ZTo6flFRdWlja1dlYlBhZ2VQcml2YXRlKCkKIHsKLSAgICAvLyBUT0RPOiBBbGxv
dyBwYWludGluZyBiZWZvcmUgdGhlIHNjZW5lIG9yIGluIHRoZSBtaWRkbGUgb2YgdGhlIHNjZW5l
IHdpdGggYW4gRkJPLgotICAgIHBhaW50VG9DdXJyZW50R0xDb250ZXh0KCk7CisgICAgaWYgKG1f
cGFpbnROb2RlKQorICAgICAgICBzdGF0aWNfY2FzdDxQYWdlUHJveHlOb2RlKj4obV9wYWludE5v
ZGUpLT5tX3BhZ2VQcml2YXRlID0gMDsKIH0KIAogI2luY2x1ZGUgIm1vY19xcXVpY2t3ZWJwYWdl
X3AuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVp
Y2t3ZWJwYWdlX3AuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vi
cGFnZV9wLmgKaW5kZXggYjE5MDg5Mi4uMDRhYzA2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJwYWdlX3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnBhZ2VfcC5oCkBAIC02NSwxMSArNjUsOSBAQCBw
cm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHRvdWNoRXZlbnQoUVRvdWNoRXZlbnQqKTsKICAg
ICB2aXJ0dWFsIGJvb2wgZXZlbnQoUUV2ZW50Kik7CiAgICAgdmlydHVhbCB2b2lkIGdlb21ldHJ5
Q2hhbmdlZChjb25zdCBRUmVjdEYmLCBjb25zdCBRUmVjdEYmKTsKLSAgICB2aXJ0dWFsIHZvaWQg
aXRlbUNoYW5nZShJdGVtQ2hhbmdlLCBjb25zdCBJdGVtQ2hhbmdlRGF0YSYpOworICAgIHZpcnR1
YWwgUVNHTm9kZSogdXBkYXRlUGFpbnROb2RlKFFTR05vZGUqLCBVcGRhdGVQYWludE5vZGVEYXRh
Kik7CiAKIHByaXZhdGU6Ci0gICAgUV9QUklWQVRFX1NMT1QoZCwgdm9pZCBfcV9vbkFmdGVyU2Nl
bmVSZW5kZXIoKSk7Ci0KICAgICBRUXVpY2tXZWJQYWdlUHJpdmF0ZSogZDsKICAgICBmcmllbmQg
Y2xhc3MgUVF1aWNrV2ViVmlldzsKICAgICBmcmllbmQgY2xhc3MgUVF1aWNrV2ViVmlld1ByaXZh
dGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dl
YnBhZ2VfcF9wLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnBh
Z2VfcF9wLmgKaW5kZXggNmNiMTJmYS4uYTZhNjM1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJwYWdlX3BfcC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2VicGFnZV9wX3AuaApAQCAtMzYsMTggKzM2LDE4
IEBAIGNsYXNzIFFRdWlja1dlYlBhZ2U7CiBjbGFzcyBRUXVpY2tXZWJQYWdlUHJpdmF0ZSB7CiBw
dWJsaWM6CiAgICAgUVF1aWNrV2ViUGFnZVByaXZhdGUoUVF1aWNrV2ViUGFnZSogdmlldyk7Cisg
ICAgflFRdWlja1dlYlBhZ2VQcml2YXRlKCk7CiAKICAgICB2b2lkIHNldFBhZ2VQcm94eShRdFdl
YlBhZ2VQcm94eSopOwogCi0gICAgdm9pZCBpbml0aWFsaXplU2NlbmVHcmFwaENvbm5lY3Rpb25z
KCk7Ci0KLSAgICB2b2lkIF9xX29uQWZ0ZXJTY2VuZVJlbmRlcigpOwogICAgIHZvaWQgcGFpbnRU
b0N1cnJlbnRHTENvbnRleHQoKTsKKyAgICB2b2lkIHJlc2V0UGFpbnROb2RlKCk7CiAKICAgICBR
UXVpY2tXZWJQYWdlKiBjb25zdCBxOwogICAgIFF0V2ViUGFnZVByb3h5KiBwYWdlUHJveHk7CiAg
ICAgV2ViS2l0OjpRdFNHVXBkYXRlUXVldWUgc2dVcGRhdGVRdWV1ZTsKICAgICBib29sIHBhaW50
aW5nSXNJbml0aWFsaXplZDsKKyAgICBRU0dOb2RlKiBtX3BhaW50Tm9kZTsKIH07CiAKICNlbmRp
ZiAvLyBxcXVpY2t3ZWJwYWdlX3BfcF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcAppbmRleCA2NDc0NTljLi43ZDRlM2I1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAKQEAg
LTE2OSw2ICsxNjksOCBAQCB2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpfcV9vblZpc2libGVD
aGFuZ2VkKCkKICAgICBXZWJQYWdlUHJveHkqIHdrUGFnZSA9IHRvSW1wbChwYWdlUHJveHktPnBh
Z2VSZWYoKSk7CiAKICAgICB3a1BhZ2UtPnZpZXdTdGF0ZURpZENoYW5nZShXZWJQYWdlUHJveHk6
OlZpZXdJc1Zpc2libGUpOworICAgIGlmIChxX3B0ci0+aXNWaXNpYmxlKCkpCisgICAgICAgIHBh
Z2VWaWV3LT5zZXRGbGFnKFFRdWlja0l0ZW06Okl0ZW1IYXNDb250ZW50cyk7CiB9CiAKIHZvaWQg
UVF1aWNrV2ViVmlld1ByaXZhdGU6OnVwZGF0ZVZpZXdwb3J0U2l6ZSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FxdWlja3dlYnZpZXcvdHN0X3Fx
dWlja3dlYnZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9x
cXVpY2t3ZWJ2aWV3L3RzdF9xcXVpY2t3ZWJ2aWV3LmNwcAppbmRleCA2YzE4OGFmLi43NTQ3M2Ex
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FxdWlj
a3dlYnZpZXcvdHN0X3FxdWlja3dlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvdGVzdHMvcXF1aWNrd2Vidmlldy90c3RfcXF1aWNrd2Vidmlldy5jcHAKQEAg
LTQ5LDYgKzQ5LDggQEAgcHJpdmF0ZSBzbG90czoKICAgICB2b2lkIHNjcm9sbFJlcXVlc3QoKTsK
IAogICAgIHZvaWQgc2hvdygpOworICAgIHZvaWQgc2hvd1dlYlZpZXcoKTsKKyAgICB2b2lkIHJl
bW92ZUZyb21DYW52YXMoKTsKIAogcHJpdmF0ZToKICAgICBpbmxpbmUgUVF1aWNrV2ViVmlldyog
d2ViVmlldygpIGNvbnN0OwpAQCAtMjM5LDYgKzI0MSwzNSBAQCB2b2lkIHRzdF9RUXVpY2tXZWJW
aWV3OjpzaG93KCkKICAgICBtX3dpbmRvdy0+aGlkZSgpOwogfQogCit2b2lkIHRzdF9RUXVpY2tX
ZWJWaWV3OjpzaG93V2ViVmlldygpCit7CisgICAgd2ViVmlldygpLT5zZXRTaXplKFFTaXplRigz
MDAsIDQwMCkpOworCisgICAgd2ViVmlldygpLT5sb2FkKFFVcmw6OmZyb21Mb2NhbEZpbGUoUUxh
dGluMVN0cmluZyhURVNUU19TT1VSQ0VfRElSICIvaHRtbC9zY3JvbGwuaHRtbCIpKSk7CisgICAg
UVZFUklGWSh3YWl0Rm9yU2lnbmFsKHdlYlZpZXcoKSwgU0lHTkFMKGxvYWRTdWNjZWVkZWQoKSkp
KTsKKworICAgIG1fd2luZG93LT5zaG93KCk7CisgICAgLy8gVGhpcyBzaG91bGQgbm90IGNyYXNo
LgorICAgIHdlYlZpZXcoKS0+c2V0VmlzaWJsZSh0cnVlKTsKKyAgICBRVGVzdDo6cVdhaXQoMjAw
KTsKKyAgICB3ZWJWaWV3KCktPnNldFZpc2libGUoZmFsc2UpOworICAgIFFUZXN0OjpxV2FpdCgy
MDApOworfQorCit2b2lkIHRzdF9RUXVpY2tXZWJWaWV3OjpyZW1vdmVGcm9tQ2FudmFzKCkKK3sK
KyAgICBzaG93V2ViVmlldygpOworCisgICAgLy8gVGhpcyBzaG91bGQgbm90IGNyYXNoLgorICAg
IFFRdWlja0l0ZW0qIHBhcmVudCA9IHdlYlZpZXcoKS0+cGFyZW50SXRlbSgpOworICAgIFFRdWlj
a0l0ZW0gbm9DYW52YXNJdGVtOworICAgIHdlYlZpZXcoKS0+c2V0UGFyZW50SXRlbSgmbm9DYW52
YXNJdGVtKTsKKyAgICBRVGVzdDo6cVdhaXQoMjAwKTsKKyAgICB3ZWJWaWV3KCktPnNldFBhcmVu
dEl0ZW0ocGFyZW50KTsKKyAgICBRVGVzdDo6cVdhaXQoMjAwKTsKK30KKworCiB2b2lkIHRzdF9R
UXVpY2tXZWJWaWV3OjpzY3JvbGxSZXF1ZXN0KCkKIHsKICAgICB3ZWJWaWV3KCktPnNldFNpemUo
UVNpemVGKDMwMCwgNDAwKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
RHJhd2luZ0FyZWFQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVh
UHJveHkuaAppbmRleCA5ZDcyNDEyLi41YWQwM2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgKQEAgLTg2LDYgKzg2LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgV2ViQ29yZTo6SW50UmVjdCBjb250ZW50c1JlY3QoKSBjb25zdDsKICAgICB2aXJ0dWFs
IGJvb2wgaXNCYWNraW5nU3RvcmVSZWFkeSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRUb0N1cnJlbnRHTENvbnRleHQoY29uc3QgV2ViQ29yZTo6VHJhbnNm
b3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5KSB7IH0KKyAgICBMYXllclRyZWVIb3N0UHJv
eHkqIGxheWVyVHJlZUhvc3RQcm94eSgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJUcmVlSG9zdFBy
b3h5LmdldCgpOyB9CiAKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKICAgICB2aXJ0dWFs
IHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRzUmVjdEFuZFNjYWxlKGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmIHZpc2libGVDb250ZW50c1JlY3QsIGZsb2F0IHNjYWxlKSB7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXllclRyZWVIb3N0UHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9MYXllclRyZWVIb3N0UHJveHkuaAppbmRleCA5Y2UwZGQ5Li5iYWVlZjFk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF5ZXJUcmVlSG9zdFByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xheWVyVHJlZUhvc3RQcm94eS5oCkBA
IC01NSw2ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFJvb3RDb21wb3NpdGluZ0xheWVy
KFdlYkxheWVySUQpOwogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVj
dGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7CiAg
ICAgdm9pZCBwYWludFRvQ3VycmVudEdMQ29udGV4dChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYsIGZsb2F0KTsKKyAgICB2b2lkIHB1cmdlR0xDb250ZXh0RGF0YSgpOwogICAgIHZvaWQgc2V0
VmlzaWJsZUNvbnRlbnRzUmVjdEFuZFNjYWxlKGNvbnN0IEludFJlY3QmLCBmbG9hdCk7CiAgICAg
dm9pZCBzZXRWaXNpYmxlQ29udGVudFJlY3RUcmFqZWN0b3J5VmVjdG9yKGNvbnN0IEZsb2F0UG9p
bnQmKTsKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9MYXllclRyZWVIb3N0UHJveHlRdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvTGF5ZXJUcmVlSG9zdFByb3h5UXQuY3BwCmluZGV4IDljYjE5ODku
LjM0YTM4OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9MYXllclRy
ZWVIb3N0UHJveHlRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0xheWVy
VHJlZUhvc3RQcm94eVF0LmNwcApAQCAtNTg4LDYgKzU4OCw3IEBAIHZvaWQgTGF5ZXJUcmVlSG9z
dFByb3h5OjpkaWRSZW5kZXJGcmFtZSgpCiB7CiAgICAgbV9kcmF3aW5nQXJlYVByb3h5LT5wYWdl
KCktPnByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6TGF5ZXJUcmVlSG9zdDo6UmVuZGVyTmV4dEZy
YW1lKCksIG1fZHJhd2luZ0FyZWFQcm94eS0+cGFnZSgpLT5wYWdlSUQoKSk7CiAgICAgcHVzaFVw
ZGF0ZVRvUXVldWUoRmx1c2hMYXllckNoYW5nZXNNZXNzYWdlOjpjcmVhdGUoKSk7CisgICAgdXBk
YXRlVmlld3BvcnQoKTsKIH0KIAogdm9pZCBMYXllclRyZWVIb3N0UHJveHk6OmNyZWF0ZURpcmVj
dGx5Q29tcG9zaXRlZEltYWdlKGludDY0X3Qga2V5LCBjb25zdCBXZWJLaXQ6OlNoYXJlYWJsZUJp
dG1hcDo6SGFuZGxlJiBoYW5kbGUpCkBAIC02MTgsNSArNjE5LDMxIEBAIHZvaWQgTGF5ZXJUcmVl
SG9zdFByb3h5OjpzZXRWaXNpYmxlQ29udGVudHNSZWN0QW5kU2NhbGUoY29uc3QgSW50UmVjdCYg
cmVjdCwgZmxvCiAgICAgbV9kcmF3aW5nQXJlYVByb3h5LT5wYWdlKCktPnByb2Nlc3MoKS0+c2Vu
ZChNZXNzYWdlczo6TGF5ZXJUcmVlSG9zdDo6U2V0VmlzaWJsZUNvbnRlbnRSZWN0QW5kU2NhbGUo
cmVjdCwgc2NhbGUpLCBtX2RyYXdpbmdBcmVhUHJveHktPnBhZ2UoKS0+cGFnZUlEKCkpOwogfQog
CitzdHJ1Y3QgTmVlZFRpbGVCdWZmZXJzUmVjcmVhdGVSZXFEYXRhIHsKKyAgICBOZWVkVGlsZUJ1
ZmZlcnNSZWNyZWF0ZVJlcURhdGEoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzUHJveHksIHVpbnQ2
NF90IElEKSA6IHByb2Nlc3MocHJvY2Vzc1Byb3h5KSwgcGFnZUlEKElEKSB7IH0KKyAgICBXZWJQ
cm9jZXNzUHJveHkqIHByb2Nlc3M7CisgICAgdWludDY0X3QgcGFnZUlEOworfTsKKworc3RhdGlj
IHZvaWQgTmVlZFRpbGVCdWZmZXJzUmVjcmVhdGVSZXEodm9pZCogcGFyYW0pCit7CisgICAgTmVl
ZFRpbGVCdWZmZXJzUmVjcmVhdGVSZXFEYXRhKiBkYXRhID0gc3RhdGljX2Nhc3Q8TmVlZFRpbGVC
dWZmZXJzUmVjcmVhdGVSZXFEYXRhKj4ocGFyYW0pOworICAgIGRhdGEtPnByb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OkxheWVyVHJlZUhvc3Q6Ok5lZWRUaWxlQnVmZmVyc1JlY3JlYXRlKCksIGRhdGEt
PnBhZ2VJRCk7CisgICAgZGVsZXRlIGRhdGE7Cit9CisKK3ZvaWQgTGF5ZXJUcmVlSG9zdFByb3h5
OjpwdXJnZUdMQ29udGV4dERhdGEoKQoreworICAgIFRleHR1cmVNYXBwZXJOb2RlKiBub2RlID0g
dG9UZXh0dXJlTWFwcGVyTm9kZShyb290TGF5ZXIoKSk7CisKKyAgICBub2RlLT5jbGVhbk5vZGVU
aWxlc1JlY3Vyc2l2ZSgpOworCisgICAgbV90ZXh0dXJlTWFwcGVyLmNsZWFyKCk7CisKKyAgICBj
YWxsT25NYWluVGhyZWFkKCZOZWVkVGlsZUJ1ZmZlcnNSZWNyZWF0ZVJlcSwKKyAgICAgICAgICAg
ICAgICAgICAgIG5ldyBOZWVkVGlsZUJ1ZmZlcnNSZWNyZWF0ZVJlcURhdGEobV9kcmF3aW5nQXJl
YVByb3h5LT5wYWdlKCktPnByb2Nlc3MoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9kcmF3aW5nQXJlYVByb3h5LT5wYWdlKCktPnBh
Z2VJRCgpKSk7Cit9CisKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9RdFdlYlBhZ2VQcm94eS5jcHAKaW5kZXggNGFjMDRmNC4uYzMyNWE4NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwCkBAIC0zNyw2ICszNyw3
IEBACiAjaW5jbHVkZSAicXdraGlzdG9yeS5oIgogI2luY2x1ZGUgInF3a2hpc3RvcnlfcC5oIgog
I2luY2x1ZGUgIkZpbmRJbmRpY2F0b3IuaCIKKyNpbmNsdWRlICJMYXllclRyZWVIb3N0UHJveHku
aCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50
ZWQuaCIKICNpbmNsdWRlICJRdERvd25sb2FkTWFuYWdlci5oIgpAQCAtNTM2LDYgKzUzNywxMyBA
QCB2b2lkIFF0V2ViUGFnZVByb3h5OjpyZW5kZXJUb0N1cnJlbnRHTENvbnRleHQoY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZgogICAgICAgICBkcmF3aW5nQXJlYS0+cGFpbnRUb0N1
cnJlbnRHTENvbnRleHQodHJhbnNmb3JtLCBvcGFjaXR5KTsKIH0KIAordm9pZCBRdFdlYlBhZ2VQ
cm94eTo6cHVyZ2VHTENvbnRleHREYXRhKCkKK3sKKyAgICBEcmF3aW5nQXJlYVByb3h5KiBkcmF3
aW5nQXJlYSA9IG1fd2ViUGFnZVByb3h5LT5kcmF3aW5nQXJlYSgpOworICAgIGlmIChkcmF3aW5n
QXJlYSAmJiBkcmF3aW5nQXJlYS0+bGF5ZXJUcmVlSG9zdFByb3h5KCkpCisgICAgICAgIGRyYXdp
bmdBcmVhLT5sYXllclRyZWVIb3N0UHJveHkoKS0+cHVyZ2VHTENvbnRleHREYXRhKCk7Cit9CisK
ICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogdm9pZCBRdFdlYlBhZ2VQcm94eTo6ZG9uZVdpdGhU
b3VjaEV2ZW50KGNvbnN0IE5hdGl2ZVdlYlRvdWNoRXZlbnQmIGV2ZW50LCBib29sIHdhc0V2ZW50
SGFuZGxlZCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdl
YlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5
LmgKaW5kZXggMzMxNzA0NC4uMzBhNGRmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3F0L1F0V2ViUGFnZVByb3h5LmgKQEAgLTE3Miw2ICsxNzIsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRWaXNpYmxlQ29udGVudFJlY3RBbmRTY2FsZShjb25zdCBRUmVjdEYmLCBmbG9hdCk7CiAg
ICAgdm9pZCBzZXRWaXNpYmxlQ29udGVudFJlY3RUcmFqZWN0b3J5VmVjdG9yKGNvbnN0IFFQb2lu
dEYmKTsKICAgICB2b2lkIHJlbmRlclRvQ3VycmVudEdMQ29udGV4dChjb25zdCBXZWJDb3JlOjpU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0KTsKKyAgICB2b2lkIHB1cmdlR0xDb250ZXh0RGF0
YSgpOwogCiAgICAgUVdLSGlzdG9yeSogaGlzdG9yeSgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5ZXIu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHcmFwaGlj
c0xheWVyLmNwcAppbmRleCBhNzk3OTE2Li5lOWI2N2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR3JhcGhpY3NMYXll
ci5jcHAKQEAgLTU2NSw2ICs1NjUsMzAgQEAgdm9pZCBXZWJHcmFwaGljc0xheWVyOjp1cGRhdGVD
b250ZW50QnVmZmVycygpCiAgICAgbV9pblVwZGF0ZU1vZGUgPSBmYWxzZTsKIH0KIAordm9pZCBX
ZWJHcmFwaGljc0xheWVyOjpkcm9wVGlsZWRCYWNraW5nU3RvcmUoKQoreworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgY2hpbGRyZW4oKS5zaXplKCk7ICsraSkgeworICAgICAgICBXZWJHcmFw
aGljc0xheWVyKiBsYXllciA9IHRvV2ViR3JhcGhpY3NMYXllcih0aGlzLT5jaGlsZHJlbigpW2ld
KTsKKyAgICAgICAgbGF5ZXItPmRyb3BUaWxlZEJhY2tpbmdTdG9yZSgpOworICAgIH0KKworICAg
IGlmIChtX21haW5CYWNraW5nU3RvcmUpCisgICAgICAgIG1fbWFpbkJhY2tpbmdTdG9yZS5jbGVh
cigpOworfQorCit2b2lkIFdlYkdyYXBoaWNzTGF5ZXI6OnJlQ3JlYXRlVGlsZWRCYWNraW5nU3Rv
cmUoKQoreworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjaGlsZHJlbigpLnNpemUoKTsg
KytpKSB7CisgICAgICAgIFdlYkdyYXBoaWNzTGF5ZXIqIGxheWVyID0gdG9XZWJHcmFwaGljc0xh
eWVyKHRoaXMtPmNoaWxkcmVuKClbaV0pOworICAgICAgICBsYXllci0+cmVDcmVhdGVUaWxlZEJh
Y2tpbmdTdG9yZSgpOworICAgIH0KKworICAgIGlmICghbV9tYWluQmFja2luZ1N0b3JlKSB7Cisg
ICAgICAgIG1fbWFpbkJhY2tpbmdTdG9yZSA9IGFkb3B0UHRyKG5ldyBUaWxlZEJhY2tpbmdTdG9y
ZSh0aGlzLCBUaWxlZEJhY2tpbmdTdG9yZVJlbW90ZVRpbGVCYWNrZW5kOjpjcmVhdGUodGhpcykp
KTsKKyAgICAgICAgbV9tYWluQmFja2luZ1N0b3JlLT5zZXRDb250ZW50c1NjYWxlKG1fY29udGVu
dHNTY2FsZSk7CisgICAgfQorfQogI2VuZGlmCiAKIHN0YXRpYyBQYXNzT3duUHRyPEdyYXBoaWNz
TGF5ZXI+IGNyZWF0ZVdlYkdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllckNsaWVudCogY2xpZW50
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJHcmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkdyYXBoaWNzTGF5ZXIuaAppbmRleCBhYzA1NThlLi43NTQyNzFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdyYXBoaWNzTGF5
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdy
YXBoaWNzTGF5ZXIuaApAQCAtMTMxLDYgKzEzMSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0
ZVRpbGVCdWZmZXJzUmVjdXJzaXZlbHkoKTsKICAgICB2b2lkIHNldENvbnRlbnRzU2NhbGUoZmxv
YXQpOwogICAgIHZvaWQgdXBkYXRlQ29udGVudEJ1ZmZlcnMoKTsKKyAgICB2b2lkIGRyb3BUaWxl
ZEJhY2tpbmdTdG9yZSgpOworICAgIHZvaWQgcmVDcmVhdGVUaWxlZEJhY2tpbmdTdG9yZSgpOwog
I2VuZGlmCiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0xheWVyVHJlZUhvc3QuaAppbmRleCA5ODYwYTdhLi4yMzQxN2JiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmgKQEAgLTg0LDYg
Kzg0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlQ29udGVudFJlY3RU
cmFqZWN0b3J5VmVjdG9yKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRSZWN0Rm9yTGF5ZXIoaW50IGxheWVySUQsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyTmV4dEZyYW1l
KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIG5lZWRUaWxlQnVmZmVyc1JlY3JlYXRlKCkgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVMYXllclRyZWVIb3N0TWVzc2FnZShDb3JlSVBDOjpD
b25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIq
KTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvTGF5ZXJUcmVlSG9zdC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9MYXllclRyZWVIb3N0Lm1lc3NhZ2VzLmluCmluZGV4IDZiOTEzOWMuLjA3ZDU2NTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVI
b3N0Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9M
YXllclRyZWVIb3N0Lm1lc3NhZ2VzLmluCkBAIC0yNCw1ICsyNCw2IEBAIG1lc3NhZ2VzIC0+IExh
eWVyVHJlZUhvc3QgewogICAgIFNldFZpc2libGVDb250ZW50UmVjdFRyYWplY3RvcnlWZWN0b3Io
V2ViQ29yZTo6RmxvYXRQb2ludCB0cmFqZWN0b3J5VmVjdG9yeSkKICAgICBTZXRWaXNpYmxlQ29u
dGVudFJlY3RBbmRTY2FsZShXZWJDb3JlOjpJbnRSZWN0IGNvbnRlbnRSZWN0LCBmbG9hdCBzY2Fs
ZSkKICAgICBSZW5kZXJOZXh0RnJhbWUoKQorICAgIE5lZWRUaWxlQnVmZmVyc1JlY3JlYXRlKCkK
IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L3F0L0xheWVyVHJlZUhvc3RRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvcXQvTGF5ZXJUcmVlSG9zdFF0LmNwcAppbmRleCA1MTk5MDA4Li42ZjE5ZWM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvcXQvTGF5ZXJUcmVlSG9zdFF0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvcXQvTGF5ZXJUcmVl
SG9zdFF0LmNwcApAQCAtNjYsNiArNjYsNyBAQCBMYXllclRyZWVIb3N0UXQ6OkxheWVyVHJlZUhv
c3RRdChXZWJQYWdlKiB3ZWJQYWdlKQogICAgICwgbV9zaG91bGRTeW5jUm9vdExheWVyKHRydWUp
CiAgICAgLCBtX2xheWVyRmx1c2hUaW1lcih0aGlzLCAmTGF5ZXJUcmVlSG9zdFF0OjpsYXllckZs
dXNoVGltZXJGaXJlZCkKICAgICAsIG1fbGF5ZXJGbHVzaFNjaGVkdWxpbmdFbmFibGVkKHRydWUp
CisgICAgLCBtX25lZWRUaWxlQnVmZmVyc1JlY3JlYXRlKGZhbHNlKQogewogICAgIC8vIENyZWF0
ZSBhIHJvb3QgbGF5ZXIuCiAgICAgbV9yb290TGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUo
dGhpcyk7CkBAIC0yMTAsNiArMjExLDEyIEBAIHZvaWQgTGF5ZXJUcmVlSG9zdFF0OjpzZXRQYWdl
T3ZlcmxheU5lZWRzRGlzcGxheShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KQogCiBib29s
IExheWVyVHJlZUhvc3RRdDo6Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCkKIHsKKyAgICBpZiAo
bV9uZWVkVGlsZUJ1ZmZlcnNSZWNyZWF0ZSkgeworICAgICAgICBtX25lZWRUaWxlQnVmZmVyc1Jl
Y3JlYXRlID0gZmFsc2U7CisgICAgICAgIFdlYkdyYXBoaWNzTGF5ZXIqIHdlYlJvb3RMYXllciA9
IHRvV2ViR3JhcGhpY3NMYXllcihtX3Jvb3RMYXllci5nZXQoKSk7CisgICAgICAgIHdlYlJvb3RM
YXllci0+cmVDcmVhdGVUaWxlZEJhY2tpbmdTdG9yZSgpOworICAgIH0KKwogICAgIGJvb2wgZGlk
U3luYyA9IG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+c3luY0Nv
bXBvc2l0aW5nU3RhdGVJbmNsdWRpbmdTdWJmcmFtZXMoKTsKICAgICBtX25vbkNvbXBvc2l0ZWRD
b250ZW50TGF5ZXItPnN5bmNDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpOwogICAg
IGlmIChtX3BhZ2VPdmVybGF5TGF5ZXIpCkBAIC00MjMsNiArNDMwLDEzIEBAIGJvb2wgTGF5ZXJU
cmVlSG9zdFF0OjpsYXllclRyZWVUaWxlVXBkYXRlc0FsbG93ZWQoKSBjb25zdAogICAgIHJldHVy
biAhbV9pc1N1c3BlbmRlZCAmJiAhbV93YWl0aW5nRm9yVUlQcm9jZXNzOwogfQogCit2b2lkIExh
eWVyVHJlZUhvc3RRdDo6bmVlZFRpbGVCdWZmZXJzUmVjcmVhdGUoKQoreworICAgIG1fbmVlZFRp
bGVCdWZmZXJzUmVjcmVhdGUgPSB0cnVlOworICAgIFdlYkdyYXBoaWNzTGF5ZXIqIHdlYlJvb3RM
YXllciA9IHRvV2ViR3JhcGhpY3NMYXllcihtX3Jvb3RMYXllci5nZXQoKSk7CisgICAgd2ViUm9v
dExheWVyLT5kcm9wVGlsZWRCYWNraW5nU3RvcmUoKTsKK30KKwogI2VuZGlmCiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL3F0L0xheWVyVHJlZUhvc3RRdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL3F0L0xheWVyVHJlZUhvc3RRdC5oCmluZGV4IDMxMDExYzYuLmU2MzBkNWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9xdC9MYXllclRyZWVIb3N0UXQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvcXQvTGF5ZXJUcmVlSG9z
dFF0LmgKQEAgLTcxLDYgKzcxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVU
aWxlKFdlYkxheWVySUQsIGludCB0aWxlSUQpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxl
Q29udGVudFJlY3RGb3JMYXllcihpbnQgbGF5ZXJJRCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYp
OwogICAgIHZpcnR1YWwgdm9pZCByZW5kZXJOZXh0RnJhbWUoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
bmVlZFRpbGVCdWZmZXJzUmVjcmVhdGUoKTsKICAgICB2aXJ0dWFsIGJvb2wgbGF5ZXJUcmVlVGls
ZVVwZGF0ZXNBbGxvd2VkKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHNldFZpc2libGVDb250
ZW50UmVjdEFuZFNjYWxlKGNvbnN0IEludFJlY3QmLCBmbG9hdCBzY2FsZSk7CiAgICAgdmlydHVh
bCB2b2lkIHNldFZpc2libGVDb250ZW50UmVjdFRyYWplY3RvcnlWZWN0b3IoY29uc3QgRmxvYXRQ
b2ludCYpOwpAQCAtMTE5LDYgKzEyMCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBsYXllckZsdXNo
VGltZXJGaXJlZChXZWJDb3JlOjpUaW1lcjxMYXllclRyZWVIb3N0UXQ+Kik7CiAgICAgV2ViQ29y
ZTo6VGltZXI8TGF5ZXJUcmVlSG9zdFF0PiBtX2xheWVyRmx1c2hUaW1lcjsKICAgICBib29sIG1f
bGF5ZXJGbHVzaFNjaGVkdWxpbmdFbmFibGVkOworICAgIGJvb2wgbV9uZWVkVGlsZUJ1ZmZlcnNS
ZWNyZWF0ZTsKIH07CiAKIH0K
</data>
<flag name="review"
          id="116323"
          type_id="1"
          status="-"
          setter="noam"
    />
    <flag name="commit-queue"
          id="116324"
          type_id="3"
          status="-"
          setter="noam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117214</attachid>
            <date>2011-11-30 10:18:36 -0800</date>
            <delta_ts>2011-11-30 11:14:21 -0800</delta_ts>
            <desc>Painting only patch</desc>
            <filename>texture_painting_only_01.diff</filename>
            <type>text/plain</type>
            <size>10878</size>
            <attacher name="Viatcheslav Ostapenko">ostap73</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBmMTMyYjVmLi5lY2JjMzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjgg
QEAKKzIwMTEtMTEtMzAgIFZpYXRjaGVzbGF2IE9zdGFwZW5rbyAgPG9zdGFwZW5rby52aWF0Y2hl
c2xhdkBub2tpYS5jb20+CisKKyAgICAgICAgW1F0XSBbV0syXSBRUXVpY2tXZWJWaWV3IGNvdmVy
cyBRTUwgZWxlbWVudHMgdGhhdCBzaG91bGQgYmUgcmVuZGVyZWQgb24gdG9wLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMzMzgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIHBhaW50aW5nIG9mIFFR
dWlja1dlYlBhZ2UgY29udGVudCBmcm9tIGNhbnZhcyBhZnRlcnJlbmRlcmluZygpIHRvCisgICAg
ICAgIFFTR1NpbXBsZVRleHR1cmUgYmFzZWQgcGFpbnQgbm9kZS4gSW1wbGVtZW50YXRpb24gdXNl
cyBRU0dUZXh0dXJlIGJpbmQoKSBtZXRob2QKKyAgICAgICAgdG8gZHJhdyB0ZXh0dXJlIG1hcHBl
ciBncmFwaGljcyBsYXllcnMgYW5kIGFmdGVyIHRoYXQgYmluZHMgMXgxIHBpeGVsIHRyYW5zcGFy
ZW50CisgICAgICAgIHRleHR1cmUgaW4gb3JkZXIgdG8gc2F0aXNmeSBRdCBjYW52YXMgcmVuZGVy
aW5nLgorICAgICAgICBUaGlzIGNvbnNpZGVyZWQgdG8gYmUgdGVtcG9yYXJ5IHVudGlsIFFTR05v
ZGU6OlVzZXJOb2RlVHlwZSB3aWxsIGJlIGF2YWlsYWJsZS4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvcXQvcXF1aWNrd2VicGFnZS5jcHA6CisgICAgICAgIChRUXVpY2tXZWJQYWdlOjpRUXVp
Y2tXZWJQYWdlKToKKyAgICAgICAgKFFRdWlja1dlYlBhZ2VQcml2YXRlOjpRUXVpY2tXZWJQYWdl
UHJpdmF0ZSk6CisgICAgICAgIChQYWdlUHJveHlUZXh0dXJlOjpQYWdlUHJveHlUZXh0dXJlKToK
KyAgICAgICAgKFBhZ2VQcm94eVRleHR1cmU6On5QYWdlUHJveHlUZXh0dXJlKToKKyAgICAgICAg
KFBhZ2VQcm94eVRleHR1cmU6OnRleHR1cmVJZCk6CisgICAgICAgIChQYWdlUHJveHlUZXh0dXJl
Ojp0ZXh0dXJlU2l6ZSk6CisgICAgICAgIChQYWdlUHJveHlUZXh0dXJlOjpoYXNBbHBoYUNoYW5u
ZWwpOgorICAgICAgICAoUGFnZVByb3h5VGV4dHVyZTo6aGFzTWlwbWFwcyk6CisgICAgICAgIChQ
YWdlUHJveHlOb2RlOjpQYWdlUHJveHlOb2RlKToKKyAgICAgICAgKFBhZ2VQcm94eU5vZGU6On5Q
YWdlUHJveHlOb2RlKToKKyAgICAgICAgKFBhZ2VQcm94eVRleHR1cmU6OmJpbmQpOgorICAgICAg
ICAoUVF1aWNrV2ViUGFnZTo6dXBkYXRlUGFpbnROb2RlKToKKyAgICAgICAgKFFRdWlja1dlYlBh
Z2VQcml2YXRlOjpyZXNldFBhaW50Tm9kZSk6CisgICAgICAgIChRUXVpY2tXZWJQYWdlUHJpdmF0
ZTo6flFRdWlja1dlYlBhZ2VQcml2YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Fx
dWlja3dlYnBhZ2VfcC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2VicGFn
ZV9wX3AuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FxdWlja3dlYnZpZXcv
dHN0X3FxdWlja3dlYnZpZXcuY3BwOgorICAgICAgICAodHN0X1FRdWlja1dlYlZpZXc6OnNob3dX
ZWJWaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvTGF5ZXJUcmVlSG9zdFByb3h5UXQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0UHJveHk6OmRpZFJlbmRlckZyYW1lKToK
KworMjAxMS0xMS0zMCAgVmlhdGNoZXNsYXYgT3N0YXBlbmtvICA8b3N0YXBlbmtvLnZpYXRjaGVz
bGF2QG5va2lhLmNvbT4KKworICAgICAgICBbUXRdIFtXSzJdIFFRdWlja1dlYlZpZXcgY292ZXJz
IFFNTCBlbGVtZW50cyB0aGF0IHNob3VsZCBiZSByZW5kZXJlZCBvbiB0b3AuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzMzOAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9x
cXVpY2t3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFRdWlja1dlYlBhZ2U6OlFRdWlja1dlYlBhZ2Up
OgorICAgICAgICAoUVF1aWNrV2ViUGFnZVByaXZhdGU6OlFRdWlja1dlYlBhZ2VQcml2YXRlKToK
KyAgICAgICAgKFBhZ2VQcm94eVRleHR1cmU6OlBhZ2VQcm94eVRleHR1cmUpOgorICAgICAgICAo
UGFnZVByb3h5VGV4dHVyZTo6flBhZ2VQcm94eVRleHR1cmUpOgorICAgICAgICAoUGFnZVByb3h5
VGV4dHVyZTo6dGV4dHVyZUlkKToKKyAgICAgICAgKFBhZ2VQcm94eVRleHR1cmU6OnRleHR1cmVT
aXplKToKKyAgICAgICAgKFBhZ2VQcm94eVRleHR1cmU6Omhhc0FscGhhQ2hhbm5lbCk6CisgICAg
ICAgIChQYWdlUHJveHlUZXh0dXJlOjpoYXNNaXBtYXBzKToKKyAgICAgICAgKFBhZ2VQcm94eU5v
ZGU6OlBhZ2VQcm94eU5vZGUpOgorICAgICAgICAoUGFnZVByb3h5Tm9kZTo6flBhZ2VQcm94eU5v
ZGUpOgorICAgICAgICAoUGFnZVByb3h5VGV4dHVyZTo6YmluZCk6CisgICAgICAgIChRUXVpY2tX
ZWJQYWdlOjp1cGRhdGVQYWludE5vZGUpOgorICAgICAgICAoUVF1aWNrV2ViUGFnZVByaXZhdGU6
OnJlc2V0UGFpbnROb2RlKToKKyAgICAgICAgKFFRdWlja1dlYlBhZ2VQcml2YXRlOjp+UVF1aWNr
V2ViUGFnZVByaXZhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2VicGFn
ZV9wLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJwYWdlX3BfcC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcXF1aWNrd2Vidmlldy90c3RfcXF1aWNr
d2Vidmlldy5jcHA6CisgICAgICAgICh0c3RfUVF1aWNrV2ViVmlldzo6c2hvd1dlYlZpZXcpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9xdC9MYXllclRyZWVIb3N0UHJveHlRdC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkxheWVyVHJlZUhvc3RQcm94eTo6ZGlkUmVuZGVyRnJhbWUpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHA6CisKIDIwMTEtMTEtMzAgIEFsZXhleSBQ
cm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgRG93bmxvYWQgcGFnZSBVUkwg
c2hvdWxkIGJlIHNldCBieSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3FxdWlja3dlYnBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC9xcXVpY2t3ZWJwYWdlLmNwcAppbmRleCA1NDZiZGU2Li5iZjY1ZDVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnBhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2VicGFnZS5jcHAKQEAg
LTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJxcXVpY2t3ZWJ2aWV3X3AuaCIKICNpbmNsdWRlIDxR
dENvcmUvUVVybD4KICNpbmNsdWRlIDxRdERlY2xhcmF0aXZlL1FRdWlja0NhbnZhcz4KKyNpbmNs
dWRlIDxRdERlY2xhcmF0aXZlL1FTR1NpbXBsZVRleHR1cmVOb2RlPgogCiBRUXVpY2tXZWJQYWdl
OjpRUXVpY2tXZWJQYWdlKFFRdWlja0l0ZW0qIHBhcmVudCkKICAgICA6IFFRdWlja0l0ZW0ocGFy
ZW50KQpAQCAtMzgsNyArMzksNiBAQCBRUXVpY2tXZWJQYWdlOjpRUXVpY2tXZWJQYWdlKFFRdWlj
a0l0ZW0qIHBhcmVudCkKICAgICAvLyBXZSBkbyB0aGUgdHJhbnNmb3JtIGZyb20gdGhlIHRvcCBs
ZWZ0IHNvIHRoZSB2aWV3cG9ydCBjYW4gYXNzdW1lIHRoZSBwb3NpdGlvbiAwLCAwCiAgICAgLy8g
aXMgYWx3YXlzIHdoZXJlIHJlbmRlcmluZyBzdGFydHMuCiAgICAgc2V0VHJhbnNmb3JtT3JpZ2lu
KFRvcExlZnQpOwotICAgIGQtPmluaXRpYWxpemVTY2VuZUdyYXBoQ29ubmVjdGlvbnMoKTsKIH0K
IAogUVF1aWNrV2ViUGFnZTo6flFRdWlja1dlYlBhZ2UoKQpAQCAtMTU4LDMxICsxNTgsMTUgQEAg
dm9pZCBRUXVpY2tXZWJQYWdlOjp0b3VjaEV2ZW50KFFUb3VjaEV2ZW50KiBldmVudCkKICAgICB0
aGlzLT5ldmVudChldmVudCk7CiB9CiAKLXZvaWQgUVF1aWNrV2ViUGFnZTo6aXRlbUNoYW5nZShJ
dGVtQ2hhbmdlIGNoYW5nZSwgY29uc3QgSXRlbUNoYW5nZURhdGEmIGRhdGEpCi17Ci0gICAgaWYg
KGNoYW5nZSA9PSBJdGVtU2NlbmVDaGFuZ2UpCi0gICAgICAgIGQtPmluaXRpYWxpemVTY2VuZUdy
YXBoQ29ubmVjdGlvbnMoKTsKLSAgICBRUXVpY2tJdGVtOjppdGVtQ2hhbmdlKGNoYW5nZSwgZGF0
YSk7Ci19Ci0KIFFRdWlja1dlYlBhZ2VQcml2YXRlOjpRUXVpY2tXZWJQYWdlUHJpdmF0ZShRUXVp
Y2tXZWJQYWdlKiB2aWV3KQogICAgIDogcSh2aWV3KQogICAgICwgcGFnZVByb3h5KDApCiAgICAg
LCBzZ1VwZGF0ZVF1ZXVlKHZpZXcpCiAgICAgLCBwYWludGluZ0lzSW5pdGlhbGl6ZWQoZmFsc2Up
CisgICAgLCBtX3BhaW50Tm9kZSgwKQogewogfQogCi12b2lkIFFRdWlja1dlYlBhZ2VQcml2YXRl
Ojppbml0aWFsaXplU2NlbmVHcmFwaENvbm5lY3Rpb25zKCkKLXsKLSAgICBpZiAocGFpbnRpbmdJ
c0luaXRpYWxpemVkKQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKCFxLT5jYW52YXMoKSkKLSAg
ICAgICAgcmV0dXJuOwotICAgIHBhaW50aW5nSXNJbml0aWFsaXplZCA9IHRydWU7Ci0gICAgUU9i
amVjdDo6Y29ubmVjdChxLT5jYW52YXMoKSwgU0lHTkFMKGFmdGVyUmVuZGVyaW5nKCkpLCBxLCBT
TE9UKF9xX29uQWZ0ZXJTY2VuZVJlbmRlcigpKSwgUXQ6OkRpcmVjdENvbm5lY3Rpb24pOwotfQot
CiB2b2lkIFFRdWlja1dlYlBhZ2VQcml2YXRlOjpzZXRQYWdlUHJveHkoUXRXZWJQYWdlUHJveHkq
IHBhZ2VQcm94eSkKIHsKICAgICBBU1NFUlQoIXRoaXMtPnBhZ2VQcm94eSk7CkBAIC0yMzMsMTAg
KzIxNywxMDQgQEAgdm9pZCBRUXVpY2tXZWJQYWdlUHJpdmF0ZTo6cGFpbnRUb0N1cnJlbnRHTENv
bnRleHQoKQogICAgIEFTU0VSVCghZ2xHZXRFcnJvcigpKTsKIH0KIAotdm9pZCBRUXVpY2tXZWJQ
YWdlUHJpdmF0ZTo6X3Ffb25BZnRlclNjZW5lUmVuZGVyKCkKK3N0cnVjdCBQYWdlUHJveHlOb2Rl
OworCitzdHJ1Y3QgUGFnZVByb3h5VGV4dHVyZSA6IHB1YmxpYyBRU0dUZXh0dXJlIHsKKyAgICBQ
YWdlUHJveHlUZXh0dXJlKFBhZ2VQcm94eU5vZGUqIG5vZGUpICA6IG1fbm9kZShub2RlKSwgbV90
ZXh0dXJlSWQoMCkgeyB9CisKKyAgICB+UGFnZVByb3h5VGV4dHVyZSgpCisgICAgeworICAgICAg
ICBpZiAobV90ZXh0dXJlSWQpCisgICAgICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZtX3Rl
eHR1cmVJZCk7CisgICAgfQorCisgICAgdm9pZCBiaW5kKCk7CisKKyAgICBpbnQgdGV4dHVyZUlk
KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3RleHR1cmVJZDsKKyAgICB9CisKKyAg
ICBRU2l6ZSB0ZXh0dXJlU2l6ZSgpIGNvbnN0CisgICAgeworICAgICAgICAvLyBXZSB1c2UgdHJh
bnNwYXJlbnQgMXgxIHRleHR1cmUgdG8gc2F0aXNmeSBzY2VuZSBncmFwaCBwYWludGVyLgorICAg
ICAgICAvLyBSZXR1cm4gc2l6ZSBvZiB0aGlzIHRleHR1cmUuCisgICAgICAgIHJldHVybiBRU2l6
ZSgxLCAxKTsKKyAgICB9CisKKyAgICBib29sIGhhc0FscGhhQ2hhbm5lbCgpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIGJvb2wgaGFzTWlw
bWFwcygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
UGFnZVByb3h5Tm9kZSogbV9ub2RlOworICAgIEdMdWludCBtX3RleHR1cmVJZDsKK307CisKK3N0
cnVjdCBQYWdlUHJveHlOb2RlIDogcHVibGljIFFTR1NpbXBsZVRleHR1cmVOb2RlIHsKKyAgICBQ
YWdlUHJveHlOb2RlKFFRdWlja1dlYlBhZ2VQcml2YXRlKiBwYWdlKSA6IG1fcGFnZVByaXZhdGUo
cGFnZSksIG1fdGV4dHVyZSh0aGlzKQorICAgIHsKKyAgICAgICAgc2V0VGV4dHVyZSgmbV90ZXh0
dXJlKTsKKyAgICB9CisKKyAgICB+UGFnZVByb3h5Tm9kZSgpCisgICAgeworICAgICAgICBpZiAo
bV9wYWdlUHJpdmF0ZSkKKyAgICAgICAgICAgIG1fcGFnZVByaXZhdGUtPnJlc2V0UGFpbnROb2Rl
KCk7CisgICAgfQorCisgICAgUVF1aWNrV2ViUGFnZVByaXZhdGUqIG1fcGFnZVByaXZhdGU7Cisg
ICAgUGFnZVByb3h5VGV4dHVyZSBtX3RleHR1cmU7Cit9OworCit2b2lkIFBhZ2VQcm94eVRleHR1
cmU6OmJpbmQoKQoreworICAgIGlmIChtX25vZGUtPm1fcGFnZVByaXZhdGUpCisgICAgICAgIG1f
bm9kZS0+bV9wYWdlUHJpdmF0ZS0+cGFpbnRUb0N1cnJlbnRHTENvbnRleHQoKTsKKworICAgIGlm
IChtX3RleHR1cmVJZCkgeworICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1f
dGV4dHVyZUlkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGdsR2VuVGV4dHVyZXMo
MSwgJm1fdGV4dHVyZUlkKTsKKyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1fdGV4
dHVyZUlkKTsKKyAgICBRSW1hZ2UgaW1hZ2UoMSwgMSwgUUltYWdlOjpGb3JtYXRfQVJHQjMyKTsK
KyAgICBpbWFnZS5maWxsKFF0Ojp0cmFuc3BhcmVudCk7CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RF
WFRVUkVfMkQsIDAsIEdMX1JHQkEsIDEsIDEsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUs
IGltYWdlLmNvbnN0Qml0cygpKTsKK30KKworUVNHTm9kZSogUVF1aWNrV2ViUGFnZTo6dXBkYXRl
UGFpbnROb2RlKFFTR05vZGUqIG9sZE5vZGUsIFVwZGF0ZVBhaW50Tm9kZURhdGEqKQoreworICAg
IGlmICghKGZsYWdzKCkgJiBJdGVtSGFzQ29udGVudHMpKSB7CisgICAgICAgIGlmIChvbGROb2Rl
KQorICAgICAgICAgICAgZGVsZXRlIG9sZE5vZGU7CisgICAgICAgIHJldHVybiAwOworICAgIH0K
KworICAgIFBhZ2VQcm94eU5vZGUqIHByb3h5Tm9kZSA9IHN0YXRpY19jYXN0PFBhZ2VQcm94eU5v
ZGUqPihvbGROb2RlKTsKKyAgICBpZiAoIXByb3h5Tm9kZSkgeworICAgICAgICBwcm94eU5vZGUg
PSBuZXcgUGFnZVByb3h5Tm9kZShkKTsKKyAgICAgICAgZC0+bV9wYWludE5vZGUgPSBwcm94eU5v
ZGU7CisgICAgfQorCisgICAgcmV0dXJuIHByb3h5Tm9kZTsKK30KKwordm9pZCBRUXVpY2tXZWJQ
YWdlUHJpdmF0ZTo6cmVzZXRQYWludE5vZGUoKQoreworICAgIG1fcGFpbnROb2RlID0gMDsKK30K
KworUVF1aWNrV2ViUGFnZVByaXZhdGU6On5RUXVpY2tXZWJQYWdlUHJpdmF0ZSgpCiB7Ci0gICAg
Ly8gVE9ETzogQWxsb3cgcGFpbnRpbmcgYmVmb3JlIHRoZSBzY2VuZSBvciBpbiB0aGUgbWlkZGxl
IG9mIHRoZSBzY2VuZSB3aXRoIGFuIEZCTy4KLSAgICBwYWludFRvQ3VycmVudEdMQ29udGV4dCgp
OworICAgIGlmIChtX3BhaW50Tm9kZSkKKyAgICAgICAgc3RhdGljX2Nhc3Q8UGFnZVByb3h5Tm9k
ZSo+KG1fcGFpbnROb2RlKS0+bV9wYWdlUHJpdmF0ZSA9IDA7CiB9CiAKICNpbmNsdWRlICJtb2Nf
cXF1aWNrd2VicGFnZV9wLmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcXF1aWNrd2VicGFnZV9wLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3FxdWlja3dlYnBhZ2VfcC5oCmluZGV4IGIxOTA4OTIuLjA0YWMwNmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2VicGFnZV9wLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJwYWdlX3AuaApAQCAtNjUs
MTEgKzY1LDkgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCB0b3VjaEV2ZW50KFFUb3Vj
aEV2ZW50Kik7CiAgICAgdmlydHVhbCBib29sIGV2ZW50KFFFdmVudCopOwogICAgIHZpcnR1YWwg
dm9pZCBnZW9tZXRyeUNoYW5nZWQoY29uc3QgUVJlY3RGJiwgY29uc3QgUVJlY3RGJik7Ci0gICAg
dmlydHVhbCB2b2lkIGl0ZW1DaGFuZ2UoSXRlbUNoYW5nZSwgY29uc3QgSXRlbUNoYW5nZURhdGEm
KTsKKyAgICB2aXJ0dWFsIFFTR05vZGUqIHVwZGF0ZVBhaW50Tm9kZShRU0dOb2RlKiwgVXBkYXRl
UGFpbnROb2RlRGF0YSopOwogCiBwcml2YXRlOgotICAgIFFfUFJJVkFURV9TTE9UKGQsIHZvaWQg
X3Ffb25BZnRlclNjZW5lUmVuZGVyKCkpOwotCiAgICAgUVF1aWNrV2ViUGFnZVByaXZhdGUqIGQ7
CiAgICAgZnJpZW5kIGNsYXNzIFFRdWlja1dlYlZpZXc7CiAgICAgZnJpZW5kIGNsYXNzIFFRdWlj
a1dlYlZpZXdQcml2YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC9xcXVpY2t3ZWJwYWdlX3BfcC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xcXVpY2t3ZWJwYWdlX3BfcC5oCmluZGV4IDZjYjEyZmEuLmE2YTYzNWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2VicGFnZV9wX3AuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnBhZ2VfcF9wLmgKQEAg
LTM2LDE4ICszNiwxOCBAQCBjbGFzcyBRUXVpY2tXZWJQYWdlOwogY2xhc3MgUVF1aWNrV2ViUGFn
ZVByaXZhdGUgewogcHVibGljOgogICAgIFFRdWlja1dlYlBhZ2VQcml2YXRlKFFRdWlja1dlYlBh
Z2UqIHZpZXcpOworICAgIH5RUXVpY2tXZWJQYWdlUHJpdmF0ZSgpOwogCiAgICAgdm9pZCBzZXRQ
YWdlUHJveHkoUXRXZWJQYWdlUHJveHkqKTsKIAotICAgIHZvaWQgaW5pdGlhbGl6ZVNjZW5lR3Jh
cGhDb25uZWN0aW9ucygpOwotCi0gICAgdm9pZCBfcV9vbkFmdGVyU2NlbmVSZW5kZXIoKTsKICAg
ICB2b2lkIHBhaW50VG9DdXJyZW50R0xDb250ZXh0KCk7CisgICAgdm9pZCByZXNldFBhaW50Tm9k
ZSgpOwogCiAgICAgUVF1aWNrV2ViUGFnZSogY29uc3QgcTsKICAgICBRdFdlYlBhZ2VQcm94eSog
cGFnZVByb3h5OwogICAgIFdlYktpdDo6UXRTR1VwZGF0ZVF1ZXVlIHNnVXBkYXRlUXVldWU7CiAg
ICAgYm9vbCBwYWludGluZ0lzSW5pdGlhbGl6ZWQ7CisgICAgUVNHTm9kZSogbV9wYWludE5vZGU7
CiB9OwogCiAjZW5kaWYgLy8gcXF1aWNrd2VicGFnZV9wX3BfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xcXVpY2t3ZWJ2aWV3L3RzdF9xcXVpY2t3
ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcXF1aWNr
d2Vidmlldy90c3RfcXF1aWNrd2Vidmlldy5jcHAKaW5kZXggNmMxODhhZi4uN2Y0MTM3OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xcXVpY2t3ZWJ2
aWV3L3RzdF9xcXVpY2t3ZWJ2aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3Rlc3RzL3FxdWlja3dlYnZpZXcvdHN0X3FxdWlja3dlYnZpZXcuY3BwCkBAIC00OSw2
ICs0OSw3IEBAIHByaXZhdGUgc2xvdHM6CiAgICAgdm9pZCBzY3JvbGxSZXF1ZXN0KCk7CiAKICAg
ICB2b2lkIHNob3coKTsKKyAgICB2b2lkIHNob3dXZWJWaWV3KCk7CiAKIHByaXZhdGU6CiAgICAg
aW5saW5lIFFRdWlja1dlYlZpZXcqIHdlYlZpZXcoKSBjb25zdDsKQEAgLTIzOSw2ICsyNDAsMjEg
QEAgdm9pZCB0c3RfUVF1aWNrV2ViVmlldzo6c2hvdygpCiAgICAgbV93aW5kb3ctPmhpZGUoKTsK
IH0KIAordm9pZCB0c3RfUVF1aWNrV2ViVmlldzo6c2hvd1dlYlZpZXcoKQoreworICAgIHdlYlZp
ZXcoKS0+c2V0U2l6ZShRU2l6ZUYoMzAwLCA0MDApKTsKKworICAgIHdlYlZpZXcoKS0+bG9hZChR
VXJsOjpmcm9tTG9jYWxGaWxlKFFMYXRpbjFTdHJpbmcoVEVTVFNfU09VUkNFX0RJUiAiL2h0bWwv
c2Nyb2xsLmh0bWwiKSkpOworICAgIFFWRVJJRlkod2FpdEZvclNpZ25hbCh3ZWJWaWV3KCksIFNJ
R05BTChsb2FkU3VjY2VlZGVkKCkpKSk7CisKKyAgICBtX3dpbmRvdy0+c2hvdygpOworICAgIC8v
IFRoaXMgc2hvdWxkIG5vdCBjcmFzaC4KKyAgICB3ZWJWaWV3KCktPnNldFZpc2libGUodHJ1ZSk7
CisgICAgUVRlc3Q6OnFXYWl0KDIwMCk7CisgICAgd2ViVmlldygpLT5zZXRWaXNpYmxlKGZhbHNl
KTsKKyAgICBRVGVzdDo6cVdhaXQoMjAwKTsKK30KKwogdm9pZCB0c3RfUVF1aWNrV2ViVmlldzo6
c2Nyb2xsUmVxdWVzdCgpCiB7CiAgICAgd2ViVmlldygpLT5zZXRTaXplKFFTaXplRigzMDAsIDQw
MCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0xheWVyVHJlZUhv
c3RQcm94eVF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9MYXllclRyZWVIb3N0
UHJveHlRdC5jcHAKaW5kZXggOWNiMTk4OS4uMjRlMWQyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L0xheWVyVHJlZUhvc3RQcm94eVF0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvcXQvTGF5ZXJUcmVlSG9zdFByb3h5UXQuY3BwCkBAIC01ODgsNiAr
NTg4LDcgQEAgdm9pZCBMYXllclRyZWVIb3N0UHJveHk6OmRpZFJlbmRlckZyYW1lKCkKIHsKICAg
ICBtX2RyYXdpbmdBcmVhUHJveHktPnBhZ2UoKS0+cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpM
YXllclRyZWVIb3N0OjpSZW5kZXJOZXh0RnJhbWUoKSwgbV9kcmF3aW5nQXJlYVByb3h5LT5wYWdl
KCktPnBhZ2VJRCgpKTsKICAgICBwdXNoVXBkYXRlVG9RdWV1ZShGbHVzaExheWVyQ2hhbmdlc01l
c3NhZ2U6OmNyZWF0ZSgpKTsKKyAgICB1cGRhdGVWaWV3cG9ydCgpOwogfQogCiB2b2lkIExheWVy
VHJlZUhvc3RQcm94eTo6Y3JlYXRlRGlyZWN0bHlDb21wb3NpdGVkSW1hZ2UoaW50NjRfdCBrZXks
IGNvbnN0IFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGhhbmRsZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117231</attachid>
            <date>2011-11-30 11:11:55 -0800</date>
            <delta_ts>2011-11-30 19:42:38 -0800</delta_ts>
            <desc>Fix Changelog mess</desc>
            <filename>texture_painting_only_02.diff</filename>
            <type>text/plain</type>
            <size>9549</size>
            <attacher name="Viatcheslav Ostapenko">ostap73</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBmMTMyYjVmLi43MTg3YjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzgg
QEAKKzIwMTEtMTEtMzAgIFZpYXRjaGVzbGF2IE9zdGFwZW5rbyAgPG9zdGFwZW5rby52aWF0Y2hl
c2xhdkBub2tpYS5jb20+CisKKyAgICAgICAgW1F0XSBbV0syXSBRUXVpY2tXZWJWaWV3IGNvdmVy
cyBRTUwgZWxlbWVudHMgdGhhdCBzaG91bGQgYmUgcmVuZGVyZWQgb24gdG9wLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMzMzgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIHBhaW50aW5nIG9mIFFR
dWlja1dlYlBhZ2UgY29udGVudCBmcm9tIGNhbnZhcyBhZnRlcnJlbmRlcmluZygpIHRvCisgICAg
ICAgIFFTR1NpbXBsZVRleHR1cmUgYmFzZWQgcGFpbnQgbm9kZS4gSW1wbGVtZW50YXRpb24gdXNl
cyBRU0dUZXh0dXJlIGJpbmQoKSBtZXRob2QKKyAgICAgICAgdG8gZHJhdyB0ZXh0dXJlIG1hcHBl
ciBncmFwaGljcyBsYXllcnMgYW5kIGFmdGVyIHRoYXQgYmluZHMgMXgxIHBpeGVsIHRyYW5zcGFy
ZW50CisgICAgICAgIHRleHR1cmUgaW4gb3JkZXIgdG8gc2F0aXNmeSBRdCBjYW52YXMgcmVuZGVy
aW5nLgorICAgICAgICBUaGlzIGNvbnNpZGVyZWQgdG8gYmUgdGVtcG9yYXJ5IHVudGlsIFFTR05v
ZGU6OlVzZXJOb2RlVHlwZSB3aWxsIGJlIGF2YWlsYWJsZS4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvcXQvcXF1aWNrd2VicGFnZS5jcHA6CisgICAgICAgIChRUXVpY2tXZWJQYWdlOjpRUXVp
Y2tXZWJQYWdlKToKKyAgICAgICAgKFFRdWlja1dlYlBhZ2VQcml2YXRlOjpRUXVpY2tXZWJQYWdl
UHJpdmF0ZSk6CisgICAgICAgIChQYWdlUHJveHlUZXh0dXJlOjpQYWdlUHJveHlUZXh0dXJlKToK
KyAgICAgICAgKFBhZ2VQcm94eVRleHR1cmU6On5QYWdlUHJveHlUZXh0dXJlKToKKyAgICAgICAg
KFBhZ2VQcm94eVRleHR1cmU6OnRleHR1cmVJZCk6CisgICAgICAgIChQYWdlUHJveHlUZXh0dXJl
Ojp0ZXh0dXJlU2l6ZSk6CisgICAgICAgIChQYWdlUHJveHlUZXh0dXJlOjpoYXNBbHBoYUNoYW5u
ZWwpOgorICAgICAgICAoUGFnZVByb3h5VGV4dHVyZTo6aGFzTWlwbWFwcyk6CisgICAgICAgIChQ
YWdlUHJveHlOb2RlOjpQYWdlUHJveHlOb2RlKToKKyAgICAgICAgKFBhZ2VQcm94eU5vZGU6On5Q
YWdlUHJveHlOb2RlKToKKyAgICAgICAgKFBhZ2VQcm94eVRleHR1cmU6OmJpbmQpOgorICAgICAg
ICAoUVF1aWNrV2ViUGFnZTo6dXBkYXRlUGFpbnROb2RlKToKKyAgICAgICAgKFFRdWlja1dlYlBh
Z2VQcml2YXRlOjpyZXNldFBhaW50Tm9kZSk6CisgICAgICAgIChRUXVpY2tXZWJQYWdlUHJpdmF0
ZTo6flFRdWlja1dlYlBhZ2VQcml2YXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Fx
dWlja3dlYnBhZ2VfcC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2VicGFn
ZV9wX3AuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FxdWlja3dlYnZpZXcv
dHN0X3FxdWlja3dlYnZpZXcuY3BwOgorICAgICAgICAodHN0X1FRdWlja1dlYlZpZXc6OnNob3dX
ZWJWaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvTGF5ZXJUcmVlSG9zdFByb3h5UXQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0UHJveHk6OmRpZFJlbmRlckZyYW1lKToK
KwogMjAxMS0xMS0zMCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAg
ICAgICBEb3dubG9hZCBwYWdlIFVSTCBzaG91bGQgYmUgc2V0IGJ5IFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2VicGFnZS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnBhZ2UuY3BwCmluZGV4IDU0
NmJkZTYuLjc1M2FjYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcXF1aWNrd2VicGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xcXVpY2t3ZWJwYWdlLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgInFxdWlja3dl
YnZpZXdfcC5oIgogI2luY2x1ZGUgPFF0Q29yZS9RVXJsPgogI2luY2x1ZGUgPFF0RGVjbGFyYXRp
dmUvUVF1aWNrQ2FudmFzPgorI2luY2x1ZGUgPFF0RGVjbGFyYXRpdmUvUVNHU2ltcGxlVGV4dHVy
ZU5vZGU+CiAKIFFRdWlja1dlYlBhZ2U6OlFRdWlja1dlYlBhZ2UoUVF1aWNrSXRlbSogcGFyZW50
KQogICAgIDogUVF1aWNrSXRlbShwYXJlbnQpCkBAIC0zOCw3ICszOSw2IEBAIFFRdWlja1dlYlBh
Z2U6OlFRdWlja1dlYlBhZ2UoUVF1aWNrSXRlbSogcGFyZW50KQogICAgIC8vIFdlIGRvIHRoZSB0
cmFuc2Zvcm0gZnJvbSB0aGUgdG9wIGxlZnQgc28gdGhlIHZpZXdwb3J0IGNhbiBhc3N1bWUgdGhl
IHBvc2l0aW9uIDAsIDAKICAgICAvLyBpcyBhbHdheXMgd2hlcmUgcmVuZGVyaW5nIHN0YXJ0cy4K
ICAgICBzZXRUcmFuc2Zvcm1PcmlnaW4oVG9wTGVmdCk7Ci0gICAgZC0+aW5pdGlhbGl6ZVNjZW5l
R3JhcGhDb25uZWN0aW9ucygpOwogfQogCiBRUXVpY2tXZWJQYWdlOjp+UVF1aWNrV2ViUGFnZSgp
CkBAIC0xNTgsMzEgKzE1OCwxNSBAQCB2b2lkIFFRdWlja1dlYlBhZ2U6OnRvdWNoRXZlbnQoUVRv
dWNoRXZlbnQqIGV2ZW50KQogICAgIHRoaXMtPmV2ZW50KGV2ZW50KTsKIH0KIAotdm9pZCBRUXVp
Y2tXZWJQYWdlOjppdGVtQ2hhbmdlKEl0ZW1DaGFuZ2UgY2hhbmdlLCBjb25zdCBJdGVtQ2hhbmdl
RGF0YSYgZGF0YSkKLXsKLSAgICBpZiAoY2hhbmdlID09IEl0ZW1TY2VuZUNoYW5nZSkKLSAgICAg
ICAgZC0+aW5pdGlhbGl6ZVNjZW5lR3JhcGhDb25uZWN0aW9ucygpOwotICAgIFFRdWlja0l0ZW06
Oml0ZW1DaGFuZ2UoY2hhbmdlLCBkYXRhKTsKLX0KLQogUVF1aWNrV2ViUGFnZVByaXZhdGU6OlFR
dWlja1dlYlBhZ2VQcml2YXRlKFFRdWlja1dlYlBhZ2UqIHZpZXcpCiAgICAgOiBxKHZpZXcpCiAg
ICAgLCBwYWdlUHJveHkoMCkKICAgICAsIHNnVXBkYXRlUXVldWUodmlldykKICAgICAsIHBhaW50
aW5nSXNJbml0aWFsaXplZChmYWxzZSkKKyAgICAsIG1fcGFpbnROb2RlKDApCiB7CiB9CiAKLXZv
aWQgUVF1aWNrV2ViUGFnZVByaXZhdGU6OmluaXRpYWxpemVTY2VuZUdyYXBoQ29ubmVjdGlvbnMo
KQotewotICAgIGlmIChwYWludGluZ0lzSW5pdGlhbGl6ZWQpCi0gICAgICAgIHJldHVybjsKLSAg
ICBpZiAoIXEtPmNhbnZhcygpKQotICAgICAgICByZXR1cm47Ci0gICAgcGFpbnRpbmdJc0luaXRp
YWxpemVkID0gdHJ1ZTsKLSAgICBRT2JqZWN0Ojpjb25uZWN0KHEtPmNhbnZhcygpLCBTSUdOQUwo
YWZ0ZXJSZW5kZXJpbmcoKSksIHEsIFNMT1QoX3Ffb25BZnRlclNjZW5lUmVuZGVyKCkpLCBRdDo6
RGlyZWN0Q29ubmVjdGlvbik7Ci19Ci0KIHZvaWQgUVF1aWNrV2ViUGFnZVByaXZhdGU6OnNldFBh
Z2VQcm94eShRdFdlYlBhZ2VQcm94eSogcGFnZVByb3h5KQogewogICAgIEFTU0VSVCghdGhpcy0+
cGFnZVByb3h5KTsKQEAgLTIzMywxMCArMjE3LDEwMyBAQCB2b2lkIFFRdWlja1dlYlBhZ2VQcml2
YXRlOjpwYWludFRvQ3VycmVudEdMQ29udGV4dCgpCiAgICAgQVNTRVJUKCFnbEdldEVycm9yKCkp
OwogfQogCi12b2lkIFFRdWlja1dlYlBhZ2VQcml2YXRlOjpfcV9vbkFmdGVyU2NlbmVSZW5kZXIo
KQorc3RydWN0IFBhZ2VQcm94eU5vZGU7CisKK3N0cnVjdCBQYWdlUHJveHlUZXh0dXJlIDogcHVi
bGljIFFTR1RleHR1cmUgeworICAgIFBhZ2VQcm94eVRleHR1cmUoUGFnZVByb3h5Tm9kZSogbm9k
ZSkgIDogbV9ub2RlKG5vZGUpLCBtX3RleHR1cmVJZCgwKSB7IH0KKworICAgIH5QYWdlUHJveHlU
ZXh0dXJlKCkKKyAgICB7CisgICAgICAgIGlmIChtX3RleHR1cmVJZCkKKyAgICAgICAgICAgIGds
RGVsZXRlVGV4dHVyZXMoMSwgJm1fdGV4dHVyZUlkKTsKKyAgICB9CisKKyAgICB2b2lkIGJpbmQo
KTsKKworICAgIGludCB0ZXh0dXJlSWQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
dGV4dHVyZUlkOworICAgIH0KKworICAgIFFTaXplIHRleHR1cmVTaXplKCkgY29uc3QKKyAgICB7
CisgICAgICAgIC8vIFdlIHVzZSB0cmFuc3BhcmVudCAxeDEgdGV4dHVyZSB0byBzYXRpc2Z5IHNj
ZW5lIGdyYXBoIHBhaW50ZXIuCisgICAgICAgIHJldHVybiBRU2l6ZSgxLCAxKTsKKyAgICB9CisK
KyAgICBib29sIGhhc0FscGhhQ2hhbm5lbCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIGJvb2wgaGFzTWlwbWFwcygpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgUGFnZVByb3h5Tm9kZSogbV9u
b2RlOworICAgIEdMdWludCBtX3RleHR1cmVJZDsKK307CisKK3N0cnVjdCBQYWdlUHJveHlOb2Rl
IDogcHVibGljIFFTR1NpbXBsZVRleHR1cmVOb2RlIHsKKyAgICBQYWdlUHJveHlOb2RlKFFRdWlj
a1dlYlBhZ2VQcml2YXRlKiBwYWdlKSA6IG1fcGFnZVByaXZhdGUocGFnZSksIG1fdGV4dHVyZSh0
aGlzKQorICAgIHsKKyAgICAgICAgc2V0VGV4dHVyZSgmbV90ZXh0dXJlKTsKKyAgICB9CisKKyAg
ICB+UGFnZVByb3h5Tm9kZSgpCisgICAgeworICAgICAgICBpZiAobV9wYWdlUHJpdmF0ZSkKKyAg
ICAgICAgICAgIG1fcGFnZVByaXZhdGUtPnJlc2V0UGFpbnROb2RlKCk7CisgICAgfQorCisgICAg
UVF1aWNrV2ViUGFnZVByaXZhdGUqIG1fcGFnZVByaXZhdGU7CisgICAgUGFnZVByb3h5VGV4dHVy
ZSBtX3RleHR1cmU7Cit9OworCit2b2lkIFBhZ2VQcm94eVRleHR1cmU6OmJpbmQoKQoreworICAg
IGlmIChtX25vZGUtPm1fcGFnZVByaXZhdGUpCisgICAgICAgIG1fbm9kZS0+bV9wYWdlUHJpdmF0
ZS0+cGFpbnRUb0N1cnJlbnRHTENvbnRleHQoKTsKKworICAgIGlmIChtX3RleHR1cmVJZCkgewor
ICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1fdGV4dHVyZUlkKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGdsR2VuVGV4dHVyZXMoMSwgJm1fdGV4dHVyZUlkKTsK
KyAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1fdGV4dHVyZUlkKTsKKyAgICBRSW1h
Z2UgaW1hZ2UoMSwgMSwgUUltYWdlOjpGb3JtYXRfQVJHQjMyKTsKKyAgICBpbWFnZS5maWxsKFF0
Ojp0cmFuc3BhcmVudCk7CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JH
QkEsIDEsIDEsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIGltYWdlLmNvbnN0Qml0cygp
KTsKK30KKworUVNHTm9kZSogUVF1aWNrV2ViUGFnZTo6dXBkYXRlUGFpbnROb2RlKFFTR05vZGUq
IG9sZE5vZGUsIFVwZGF0ZVBhaW50Tm9kZURhdGEqKQoreworICAgIGlmICghKGZsYWdzKCkgJiBJ
dGVtSGFzQ29udGVudHMpKSB7CisgICAgICAgIGlmIChvbGROb2RlKQorICAgICAgICAgICAgZGVs
ZXRlIG9sZE5vZGU7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIFBhZ2VQcm94eU5v
ZGUqIHByb3h5Tm9kZSA9IHN0YXRpY19jYXN0PFBhZ2VQcm94eU5vZGUqPihvbGROb2RlKTsKKyAg
ICBpZiAoIXByb3h5Tm9kZSkgeworICAgICAgICBwcm94eU5vZGUgPSBuZXcgUGFnZVByb3h5Tm9k
ZShkKTsKKyAgICAgICAgZC0+bV9wYWludE5vZGUgPSBwcm94eU5vZGU7CisgICAgfQorCisgICAg
cmV0dXJuIHByb3h5Tm9kZTsKK30KKwordm9pZCBRUXVpY2tXZWJQYWdlUHJpdmF0ZTo6cmVzZXRQ
YWludE5vZGUoKQoreworICAgIG1fcGFpbnROb2RlID0gMDsKK30KKworUVF1aWNrV2ViUGFnZVBy
aXZhdGU6On5RUXVpY2tXZWJQYWdlUHJpdmF0ZSgpCiB7Ci0gICAgLy8gVE9ETzogQWxsb3cgcGFp
bnRpbmcgYmVmb3JlIHRoZSBzY2VuZSBvciBpbiB0aGUgbWlkZGxlIG9mIHRoZSBzY2VuZSB3aXRo
IGFuIEZCTy4KLSAgICBwYWludFRvQ3VycmVudEdMQ29udGV4dCgpOworICAgIGlmIChtX3BhaW50
Tm9kZSkKKyAgICAgICAgc3RhdGljX2Nhc3Q8UGFnZVByb3h5Tm9kZSo+KG1fcGFpbnROb2RlKS0+
bV9wYWdlUHJpdmF0ZSA9IDA7CiB9CiAKICNpbmNsdWRlICJtb2NfcXF1aWNrd2VicGFnZV9wLmNw
cCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vi
cGFnZV9wLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnBhZ2Vf
cC5oCmluZGV4IGIxOTA4OTIuLjA0YWMwNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2VicGFnZV9wLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJwYWdlX3AuaApAQCAtNjUsMTEgKzY1LDkgQEAgcHJvdGVj
dGVkOgogICAgIHZpcnR1YWwgdm9pZCB0b3VjaEV2ZW50KFFUb3VjaEV2ZW50Kik7CiAgICAgdmly
dHVhbCBib29sIGV2ZW50KFFFdmVudCopOwogICAgIHZpcnR1YWwgdm9pZCBnZW9tZXRyeUNoYW5n
ZWQoY29uc3QgUVJlY3RGJiwgY29uc3QgUVJlY3RGJik7Ci0gICAgdmlydHVhbCB2b2lkIGl0ZW1D
aGFuZ2UoSXRlbUNoYW5nZSwgY29uc3QgSXRlbUNoYW5nZURhdGEmKTsKKyAgICB2aXJ0dWFsIFFT
R05vZGUqIHVwZGF0ZVBhaW50Tm9kZShRU0dOb2RlKiwgVXBkYXRlUGFpbnROb2RlRGF0YSopOwog
CiBwcml2YXRlOgotICAgIFFfUFJJVkFURV9TTE9UKGQsIHZvaWQgX3Ffb25BZnRlclNjZW5lUmVu
ZGVyKCkpOwotCiAgICAgUVF1aWNrV2ViUGFnZVByaXZhdGUqIGQ7CiAgICAgZnJpZW5kIGNsYXNz
IFFRdWlja1dlYlZpZXc7CiAgICAgZnJpZW5kIGNsYXNzIFFRdWlja1dlYlZpZXdQcml2YXRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJwYWdl
X3BfcC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJwYWdlX3Bf
cC5oCmluZGV4IDZjYjEyZmEuLmE2YTYzNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2VicGFnZV9wX3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnBhZ2VfcF9wLmgKQEAgLTM2LDE4ICszNiwxOCBAQCBj
bGFzcyBRUXVpY2tXZWJQYWdlOwogY2xhc3MgUVF1aWNrV2ViUGFnZVByaXZhdGUgewogcHVibGlj
OgogICAgIFFRdWlja1dlYlBhZ2VQcml2YXRlKFFRdWlja1dlYlBhZ2UqIHZpZXcpOworICAgIH5R
UXVpY2tXZWJQYWdlUHJpdmF0ZSgpOwogCiAgICAgdm9pZCBzZXRQYWdlUHJveHkoUXRXZWJQYWdl
UHJveHkqKTsKIAotICAgIHZvaWQgaW5pdGlhbGl6ZVNjZW5lR3JhcGhDb25uZWN0aW9ucygpOwot
Ci0gICAgdm9pZCBfcV9vbkFmdGVyU2NlbmVSZW5kZXIoKTsKICAgICB2b2lkIHBhaW50VG9DdXJy
ZW50R0xDb250ZXh0KCk7CisgICAgdm9pZCByZXNldFBhaW50Tm9kZSgpOwogCiAgICAgUVF1aWNr
V2ViUGFnZSogY29uc3QgcTsKICAgICBRdFdlYlBhZ2VQcm94eSogcGFnZVByb3h5OwogICAgIFdl
YktpdDo6UXRTR1VwZGF0ZVF1ZXVlIHNnVXBkYXRlUXVldWU7CiAgICAgYm9vbCBwYWludGluZ0lz
SW5pdGlhbGl6ZWQ7CisgICAgUVNHTm9kZSogbV9wYWludE5vZGU7CiB9OwogCiAjZW5kaWYgLy8g
cXF1aWNrd2VicGFnZV9wX3BfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC90ZXN0cy9xcXVpY2t3ZWJ2aWV3L3RzdF9xcXVpY2t3ZWJ2aWV3LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcXF1aWNrd2Vidmlldy90c3RfcXF1aWNr
d2Vidmlldy5jcHAKaW5kZXggNmMxODhhZi4uN2Y0MTM3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xcXVpY2t3ZWJ2aWV3L3RzdF9xcXVpY2t3ZWJ2
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FxdWlj
a3dlYnZpZXcvdHN0X3FxdWlja3dlYnZpZXcuY3BwCkBAIC00OSw2ICs0OSw3IEBAIHByaXZhdGUg
c2xvdHM6CiAgICAgdm9pZCBzY3JvbGxSZXF1ZXN0KCk7CiAKICAgICB2b2lkIHNob3coKTsKKyAg
ICB2b2lkIHNob3dXZWJWaWV3KCk7CiAKIHByaXZhdGU6CiAgICAgaW5saW5lIFFRdWlja1dlYlZp
ZXcqIHdlYlZpZXcoKSBjb25zdDsKQEAgLTIzOSw2ICsyNDAsMjEgQEAgdm9pZCB0c3RfUVF1aWNr
V2ViVmlldzo6c2hvdygpCiAgICAgbV93aW5kb3ctPmhpZGUoKTsKIH0KIAordm9pZCB0c3RfUVF1
aWNrV2ViVmlldzo6c2hvd1dlYlZpZXcoKQoreworICAgIHdlYlZpZXcoKS0+c2V0U2l6ZShRU2l6
ZUYoMzAwLCA0MDApKTsKKworICAgIHdlYlZpZXcoKS0+bG9hZChRVXJsOjpmcm9tTG9jYWxGaWxl
KFFMYXRpbjFTdHJpbmcoVEVTVFNfU09VUkNFX0RJUiAiL2h0bWwvc2Nyb2xsLmh0bWwiKSkpOwor
ICAgIFFWRVJJRlkod2FpdEZvclNpZ25hbCh3ZWJWaWV3KCksIFNJR05BTChsb2FkU3VjY2VlZGVk
KCkpKSk7CisKKyAgICBtX3dpbmRvdy0+c2hvdygpOworICAgIC8vIFRoaXMgc2hvdWxkIG5vdCBj
cmFzaC4KKyAgICB3ZWJWaWV3KCktPnNldFZpc2libGUodHJ1ZSk7CisgICAgUVRlc3Q6OnFXYWl0
KDIwMCk7CisgICAgd2ViVmlldygpLT5zZXRWaXNpYmxlKGZhbHNlKTsKKyAgICBRVGVzdDo6cVdh
aXQoMjAwKTsKK30KKwogdm9pZCB0c3RfUVF1aWNrV2ViVmlldzo6c2Nyb2xsUmVxdWVzdCgpCiB7
CiAgICAgd2ViVmlldygpLT5zZXRTaXplKFFTaXplRigzMDAsIDQwMCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0xheWVyVHJlZUhvc3RQcm94eVF0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9MYXllclRyZWVIb3N0UHJveHlRdC5jcHAKaW5kZXgg
OWNiMTk4OS4uMjRlMWQyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0
L0xheWVyVHJlZUhvc3RQcm94eVF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvTGF5ZXJUcmVlSG9zdFByb3h5UXQuY3BwCkBAIC01ODgsNiArNTg4LDcgQEAgdm9pZCBMYXll
clRyZWVIb3N0UHJveHk6OmRpZFJlbmRlckZyYW1lKCkKIHsKICAgICBtX2RyYXdpbmdBcmVhUHJv
eHktPnBhZ2UoKS0+cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpMYXllclRyZWVIb3N0OjpSZW5k
ZXJOZXh0RnJhbWUoKSwgbV9kcmF3aW5nQXJlYVByb3h5LT5wYWdlKCktPnBhZ2VJRCgpKTsKICAg
ICBwdXNoVXBkYXRlVG9RdWV1ZShGbHVzaExheWVyQ2hhbmdlc01lc3NhZ2U6OmNyZWF0ZSgpKTsK
KyAgICB1cGRhdGVWaWV3cG9ydCgpOwogfQogCiB2b2lkIExheWVyVHJlZUhvc3RQcm94eTo6Y3Jl
YXRlRGlyZWN0bHlDb21wb3NpdGVkSW1hZ2UoaW50NjRfdCBrZXksIGNvbnN0IFdlYktpdDo6U2hh
cmVhYmxlQml0bWFwOjpIYW5kbGUmIGhhbmRsZSkK
</data>
<flag name="review"
          id="116606"
          type_id="1"
          status="-"
          setter="noam"
    />
    <flag name="commit-queue"
          id="116607"
          type_id="3"
          status="-"
          setter="noam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117313</attachid>
            <date>2011-11-30 19:42:38 -0800</date>
            <delta_ts>2011-11-30 22:16:18 -0800</delta_ts>
            <desc>QSGMaterial based painting</desc>
            <filename>material_painting_only.diff</filename>
            <type>text/plain</type>
            <size>10012</size>
            <attacher name="Viatcheslav Ostapenko">ostap73</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBmMTMyYjVmLi44MWY5YTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcg
QEAKKzIwMTEtMTEtMzAgIFZpYXRjaGVzbGF2IE9zdGFwZW5rbyAgPG9zdGFwZW5rby52aWF0Y2hl
c2xhdkBub2tpYS5jb20+CisKKyAgICAgICAgW1F0XSBbV0syXSBRUXVpY2tXZWJWaWV3IGNvdmVy
cyBRTUwgZWxlbWVudHMgdGhhdCBzaG91bGQgYmUgcmVuZGVyZWQgb24gdG9wLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMzMzgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIHBhaW50aW5nIG9mIFFR
dWlja1dlYlBhZ2UgY29udGVudCBmcm9tIGNhbnZhcyBhZnRlcnJlbmRlcmluZygpIHRvCisgICAg
ICAgIFFTR0dlb21ldHJ5Tm9kZS9RU0dNYXRlcmlhbCBiYXNlZCBwYWludCBub2RlLiBJbXBsZW1l
bnRhdGlvbiB1c2VzIFFTR01hdGVyaWFsU2hhZGVyCisgICAgICAgIHVwZGF0ZVN0YXRlKCkgbWV0
aG9kIHRvIGRyYXcgdGV4dHVyZSBtYXBwZXIgZ3JhcGhpY3MgbGF5ZXJzLgorICAgICAgICBUaGlz
IGlzIGNvbnNpZGVyZWQgdG8gYmUgdGVtcG9yYXJ5IHVudGlsIFFTR05vZGU6OlVzZXJOb2RlVHlw
ZSB3aWxsIGJlIGF2YWlsYWJsZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNr
d2VicGFnZS5jcHA6CisgICAgICAgIChRUXVpY2tXZWJQYWdlOjpRUXVpY2tXZWJQYWdlKToKKyAg
ICAgICAgKFFRdWlja1dlYlBhZ2VQcml2YXRlOjpRUXVpY2tXZWJQYWdlUHJpdmF0ZSk6CisgICAg
ICAgIChQYWdlUHJveHlNYXRlcmlhbFNoYWRlcjo6YXR0cmlidXRlTmFtZXMpOgorICAgICAgICAo
UGFnZVByb3h5TWF0ZXJpYWxTaGFkZXI6OnZlcnRleFNoYWRlcik6CisgICAgICAgIChQYWdlUHJv
eHlNYXRlcmlhbFNoYWRlcjo6ZnJhZ21lbnRTaGFkZXIpOgorICAgICAgICAoUGFnZVByb3h5TWF0
ZXJpYWw6OlBhZ2VQcm94eU1hdGVyaWFsKToKKyAgICAgICAgKFBhZ2VQcm94eU1hdGVyaWFsOjp0
eXBlKToKKyAgICAgICAgKFBhZ2VQcm94eU1hdGVyaWFsOjpjcmVhdGVTaGFkZXIpOgorICAgICAg
ICAoUGFnZVByb3h5Tm9kZTo6UGFnZVByb3h5Tm9kZSk6CisgICAgICAgIChQYWdlUHJveHlOb2Rl
Ojp+UGFnZVByb3h5Tm9kZSk6CisgICAgICAgIChQYWdlUHJveHlNYXRlcmlhbFNoYWRlcjo6dXBk
YXRlU3RhdGUpOgorICAgICAgICAoUVF1aWNrV2ViUGFnZTo6dXBkYXRlUGFpbnROb2RlKToKKyAg
ICAgICAgKFFRdWlja1dlYlBhZ2VQcml2YXRlOjpyZXNldFBhaW50Tm9kZSk6CisgICAgICAgIChR
UXVpY2tXZWJQYWdlUHJpdmF0ZTo6flFRdWlja1dlYlBhZ2VQcml2YXRlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnBhZ2VfcC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvcXQvcXF1aWNrd2VicGFnZV9wX3AuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rl
c3RzL3FxdWlja3dlYnZpZXcvdHN0X3FxdWlja3dlYnZpZXcuY3BwOgorICAgICAgICAodHN0X1FR
dWlja1dlYlZpZXc6OnNob3dXZWJWaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvTGF5ZXJU
cmVlSG9zdFByb3h5UXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0UHJveHk6
OmRpZFJlbmRlckZyYW1lKToKKwogMjAxMS0xMS0zMCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFw
QGFwcGxlLmNvbT4KIAogICAgICAgICBEb3dubG9hZCBwYWdlIFVSTCBzaG91bGQgYmUgc2V0IGJ5
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1
aWNrd2VicGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dl
YnBhZ2UuY3BwCmluZGV4IDU0NmJkZTYuLjY2NTVhNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2VicGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJwYWdlLmNwcApAQCAtMjgsNiArMjgsOCBAQAog
I2luY2x1ZGUgInFxdWlja3dlYnZpZXdfcC5oIgogI2luY2x1ZGUgPFF0Q29yZS9RVXJsPgogI2lu
Y2x1ZGUgPFF0RGVjbGFyYXRpdmUvUVF1aWNrQ2FudmFzPgorI2luY2x1ZGUgPFF0RGVjbGFyYXRp
dmUvUVNHTWF0ZXJpYWw+CisjaW5jbHVkZSA8UXREZWNsYXJhdGl2ZS9RU0dHZW9tZXRyeU5vZGU+
CiAKIFFRdWlja1dlYlBhZ2U6OlFRdWlja1dlYlBhZ2UoUVF1aWNrSXRlbSogcGFyZW50KQogICAg
IDogUVF1aWNrSXRlbShwYXJlbnQpCkBAIC0zOCw3ICs0MCw2IEBAIFFRdWlja1dlYlBhZ2U6OlFR
dWlja1dlYlBhZ2UoUVF1aWNrSXRlbSogcGFyZW50KQogICAgIC8vIFdlIGRvIHRoZSB0cmFuc2Zv
cm0gZnJvbSB0aGUgdG9wIGxlZnQgc28gdGhlIHZpZXdwb3J0IGNhbiBhc3N1bWUgdGhlIHBvc2l0
aW9uIDAsIDAKICAgICAvLyBpcyBhbHdheXMgd2hlcmUgcmVuZGVyaW5nIHN0YXJ0cy4KICAgICBz
ZXRUcmFuc2Zvcm1PcmlnaW4oVG9wTGVmdCk7Ci0gICAgZC0+aW5pdGlhbGl6ZVNjZW5lR3JhcGhD
b25uZWN0aW9ucygpOwogfQogCiBRUXVpY2tXZWJQYWdlOjp+UVF1aWNrV2ViUGFnZSgpCkBAIC0x
NTgsMzEgKzE1OSwxNSBAQCB2b2lkIFFRdWlja1dlYlBhZ2U6OnRvdWNoRXZlbnQoUVRvdWNoRXZl
bnQqIGV2ZW50KQogICAgIHRoaXMtPmV2ZW50KGV2ZW50KTsKIH0KIAotdm9pZCBRUXVpY2tXZWJQ
YWdlOjppdGVtQ2hhbmdlKEl0ZW1DaGFuZ2UgY2hhbmdlLCBjb25zdCBJdGVtQ2hhbmdlRGF0YSYg
ZGF0YSkKLXsKLSAgICBpZiAoY2hhbmdlID09IEl0ZW1TY2VuZUNoYW5nZSkKLSAgICAgICAgZC0+
aW5pdGlhbGl6ZVNjZW5lR3JhcGhDb25uZWN0aW9ucygpOwotICAgIFFRdWlja0l0ZW06Oml0ZW1D
aGFuZ2UoY2hhbmdlLCBkYXRhKTsKLX0KLQogUVF1aWNrV2ViUGFnZVByaXZhdGU6OlFRdWlja1dl
YlBhZ2VQcml2YXRlKFFRdWlja1dlYlBhZ2UqIHZpZXcpCiAgICAgOiBxKHZpZXcpCiAgICAgLCBw
YWdlUHJveHkoMCkKICAgICAsIHNnVXBkYXRlUXVldWUodmlldykKICAgICAsIHBhaW50aW5nSXNJ
bml0aWFsaXplZChmYWxzZSkKKyAgICAsIG1fcGFpbnROb2RlKDApCiB7CiB9CiAKLXZvaWQgUVF1
aWNrV2ViUGFnZVByaXZhdGU6OmluaXRpYWxpemVTY2VuZUdyYXBoQ29ubmVjdGlvbnMoKQotewot
ICAgIGlmIChwYWludGluZ0lzSW5pdGlhbGl6ZWQpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAo
IXEtPmNhbnZhcygpKQotICAgICAgICByZXR1cm47Ci0gICAgcGFpbnRpbmdJc0luaXRpYWxpemVk
ID0gdHJ1ZTsKLSAgICBRT2JqZWN0Ojpjb25uZWN0KHEtPmNhbnZhcygpLCBTSUdOQUwoYWZ0ZXJS
ZW5kZXJpbmcoKSksIHEsIFNMT1QoX3Ffb25BZnRlclNjZW5lUmVuZGVyKCkpLCBRdDo6RGlyZWN0
Q29ubmVjdGlvbik7Ci19Ci0KIHZvaWQgUVF1aWNrV2ViUGFnZVByaXZhdGU6OnNldFBhZ2VQcm94
eShRdFdlYlBhZ2VQcm94eSogcGFnZVByb3h5KQogewogICAgIEFTU0VSVCghdGhpcy0+cGFnZVBy
b3h5KTsKQEAgLTIzMywxMCArMjE4LDEwNSBAQCB2b2lkIFFRdWlja1dlYlBhZ2VQcml2YXRlOjpw
YWludFRvQ3VycmVudEdMQ29udGV4dCgpCiAgICAgQVNTRVJUKCFnbEdldEVycm9yKCkpOwogfQog
Ci12b2lkIFFRdWlja1dlYlBhZ2VQcml2YXRlOjpfcV9vbkFmdGVyU2NlbmVSZW5kZXIoKQorc3Ry
dWN0IFBhZ2VQcm94eU1hdGVyaWFsOworc3RydWN0IFBhZ2VQcm94eU5vZGU7CisKKy8vIEZJWE1F
OiB0ZW1wb3JhcnkgdW50aWwgUXQgU2NlbmVncmFwaCB3aWxsIHN1cHBvcnQgY3VzdG9tIHBhaW50
aW5nCitzdHJ1Y3QgUGFnZVByb3h5TWF0ZXJpYWxTaGFkZXIgOiBwdWJsaWMgUVNHTWF0ZXJpYWxT
aGFkZXIgeworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTdGF0ZShjb25zdCBSZW5kZXJTdGF0ZSYg
c3RhdGUsIFFTR01hdGVyaWFsKiBuZXdNYXRlcmlhbCwgUVNHTWF0ZXJpYWwqIG9sZE1hdGVyaWFs
KTsKKyAgICB2aXJ0dWFsIGNoYXIgY29uc3QqIGNvbnN0KiBhdHRyaWJ1dGVOYW1lcygpIGNvbnN0
CisgICAgeworICAgICAgICBzdGF0aWMgY2hhciBjb25zdCogY29uc3QgYXR0cltdID0geyAwIH07
CisgICAgICAgIHJldHVybiBhdHRyOworICAgIH0KKworICAgIC8vIHZlcnRleFNoYWRlciBhbmQg
ZnJhZ21lbnRTaGFkZXIgYXJlIG5vLW9wIHNoYWRlcnMKKyAgICAvLyBBbGwgcmVhbCBwYWludGlu
ZyBpcyBnb25lIGJ5IHRleHR1cmUgbWFwcGVyIHRocm91Z2ggTGF5ZXJUcmVlSG9zdFByb3h5Cisg
ICAgdmlydHVhbCBjb25zdCBjaGFyKiB2ZXJ0ZXhTaGFkZXIoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuICJ2b2lkIG1haW4oKSB7IGdsX1Bvc2l0aW9uID0gZ2xfVmVydGV4OyB9IjsKKyAg
ICB9CisKKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIGZyYWdtZW50U2hhZGVyKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiAidm9pZCBtYWluKCkgeyBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAu
MCwgMC4wLCAwLjAsIDAuMCk7IH0iOworICAgIH0KK307CisKK3N0cnVjdCBQYWdlUHJveHlNYXRl
cmlhbCA6IHB1YmxpYyBRU0dNYXRlcmlhbCB7CisgICAgUGFnZVByb3h5TWF0ZXJpYWwoUGFnZVBy
b3h5Tm9kZSogbm9kZSkgOiBtX25vZGUobm9kZSkgeyB9CisKKyAgICBRU0dNYXRlcmlhbFR5cGUq
IHR5cGUoKSBjb25zdAorICAgIHsKKyAgICAgICAgc3RhdGljIFFTR01hdGVyaWFsVHlwZSB0eXBl
OworICAgICAgICByZXR1cm4gJnR5cGU7CisgICAgfQorCisgICAgUVNHTWF0ZXJpYWxTaGFkZXIq
IGNyZWF0ZVNoYWRlcigpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbmV3IFBhZ2VQcm94
eU1hdGVyaWFsU2hhZGVyOworICAgIH0KKworICAgIFBhZ2VQcm94eU5vZGUqIG1fbm9kZTsKK307
CisKK3N0cnVjdCBQYWdlUHJveHlOb2RlIDogcHVibGljIFFTR0dlb21ldHJ5Tm9kZSB7CisgICAg
UGFnZVByb3h5Tm9kZShRUXVpY2tXZWJQYWdlUHJpdmF0ZSogcGFnZSkgOgorICAgICAgICBtX3Bh
Z2VQcml2YXRlKHBhZ2UpCisgICAgICAsIG1fbWF0ZXJpYWwodGhpcykKKyAgICAgICwgbV9nZW9t
ZXRyeShRU0dHZW9tZXRyeTo6ZGVmYXVsdEF0dHJpYnV0ZXNfUG9pbnQyRCgpLCA0KQorICAgIHsK
KyAgICAgICAgc2V0R2VvbWV0cnkoJm1fZ2VvbWV0cnkpOworICAgICAgICBzZXRNYXRlcmlhbCgm
bV9tYXRlcmlhbCk7CisgICAgfQorCisgICAgflBhZ2VQcm94eU5vZGUoKQorICAgIHsKKyAgICAg
ICAgaWYgKG1fcGFnZVByaXZhdGUpCisgICAgICAgICAgICBtX3BhZ2VQcml2YXRlLT5yZXNldFBh
aW50Tm9kZSgpOworICAgIH0KKworICAgIFFRdWlja1dlYlBhZ2VQcml2YXRlKiBtX3BhZ2VQcml2
YXRlOworICAgIFBhZ2VQcm94eU1hdGVyaWFsIG1fbWF0ZXJpYWw7CisgICAgUVNHR2VvbWV0cnkg
bV9nZW9tZXRyeTsKK307CisKK3ZvaWQgUGFnZVByb3h5TWF0ZXJpYWxTaGFkZXI6OnVwZGF0ZVN0
YXRlKGNvbnN0IFJlbmRlclN0YXRlJiBzdGF0ZSwgUVNHTWF0ZXJpYWwqIG5ld01hdGVyaWFsLCBR
U0dNYXRlcmlhbCogb2xkTWF0ZXJpYWwpCit7CisgICAgaWYgKCFuZXdNYXRlcmlhbCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgUGFnZVByb3h5Tm9kZSogbm9kZSA9IHN0YXRpY19jYXN0PFBhZ2VQ
cm94eU1hdGVyaWFsKj4obmV3TWF0ZXJpYWwpLT5tX25vZGU7CisgICAgaWYgKG5vZGUtPm1fcGFn
ZVByaXZhdGUpCisgICAgICAgIG5vZGUtPm1fcGFnZVByaXZhdGUtPnBhaW50VG9DdXJyZW50R0xD
b250ZXh0KCk7Cit9CisKK1FTR05vZGUqIFFRdWlja1dlYlBhZ2U6OnVwZGF0ZVBhaW50Tm9kZShR
U0dOb2RlKiBvbGROb2RlLCBVcGRhdGVQYWludE5vZGVEYXRhKikKK3sKKyAgICBpZiAoIShmbGFn
cygpICYgSXRlbUhhc0NvbnRlbnRzKSkgeworICAgICAgICBpZiAob2xkTm9kZSkKKyAgICAgICAg
ICAgIGRlbGV0ZSBvbGROb2RlOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBQYWdl
UHJveHlOb2RlKiBwcm94eU5vZGUgPSBzdGF0aWNfY2FzdDxQYWdlUHJveHlOb2RlKj4ob2xkTm9k
ZSk7CisgICAgaWYgKCFwcm94eU5vZGUpIHsKKyAgICAgICAgcHJveHlOb2RlID0gbmV3IFBhZ2VQ
cm94eU5vZGUoZCk7CisgICAgICAgIGQtPm1fcGFpbnROb2RlID0gcHJveHlOb2RlOworICAgIH0K
KworICAgIHJldHVybiBwcm94eU5vZGU7Cit9CisKK3ZvaWQgUVF1aWNrV2ViUGFnZVByaXZhdGU6
OnJlc2V0UGFpbnROb2RlKCkKK3sKKyAgICBtX3BhaW50Tm9kZSA9IDA7Cit9CisKK1FRdWlja1dl
YlBhZ2VQcml2YXRlOjp+UVF1aWNrV2ViUGFnZVByaXZhdGUoKQogewotICAgIC8vIFRPRE86IEFs
bG93IHBhaW50aW5nIGJlZm9yZSB0aGUgc2NlbmUgb3IgaW4gdGhlIG1pZGRsZSBvZiB0aGUgc2Nl
bmUgd2l0aCBhbiBGQk8uCi0gICAgcGFpbnRUb0N1cnJlbnRHTENvbnRleHQoKTsKKyAgICBpZiAo
bV9wYWludE5vZGUpCisgICAgICAgIHN0YXRpY19jYXN0PFBhZ2VQcm94eU5vZGUqPihtX3BhaW50
Tm9kZSktPm1fcGFnZVByaXZhdGUgPSAwOwogfQogCiAjaW5jbHVkZSAibW9jX3FxdWlja3dlYnBh
Z2VfcC5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Fx
dWlja3dlYnBhZ2VfcC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3
ZWJwYWdlX3AuaAppbmRleCBiMTkwODkyLi4wNGFjMDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnBhZ2VfcC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2VicGFnZV9wLmgKQEAgLTY1LDExICs2NSw5IEBA
IHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgdG91Y2hFdmVudChRVG91Y2hFdmVudCopOwog
ICAgIHZpcnR1YWwgYm9vbCBldmVudChRRXZlbnQqKTsKICAgICB2aXJ0dWFsIHZvaWQgZ2VvbWV0
cnlDaGFuZ2VkKGNvbnN0IFFSZWN0RiYsIGNvbnN0IFFSZWN0RiYpOwotICAgIHZpcnR1YWwgdm9p
ZCBpdGVtQ2hhbmdlKEl0ZW1DaGFuZ2UsIGNvbnN0IEl0ZW1DaGFuZ2VEYXRhJik7CisgICAgdmly
dHVhbCBRU0dOb2RlKiB1cGRhdGVQYWludE5vZGUoUVNHTm9kZSosIFVwZGF0ZVBhaW50Tm9kZURh
dGEqKTsKIAogcHJpdmF0ZToKLSAgICBRX1BSSVZBVEVfU0xPVChkLCB2b2lkIF9xX29uQWZ0ZXJT
Y2VuZVJlbmRlcigpKTsKLQogICAgIFFRdWlja1dlYlBhZ2VQcml2YXRlKiBkOwogICAgIGZyaWVu
ZCBjbGFzcyBRUXVpY2tXZWJWaWV3OwogICAgIGZyaWVuZCBjbGFzcyBRUXVpY2tXZWJWaWV3UHJp
dmF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNr
d2VicGFnZV9wX3AuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vi
cGFnZV9wX3AuaAppbmRleCA2Y2IxMmZhLi5hNmE2MzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnBhZ2VfcF9wLmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJwYWdlX3BfcC5oCkBAIC0zNiwxOCArMzYs
MTggQEAgY2xhc3MgUVF1aWNrV2ViUGFnZTsKIGNsYXNzIFFRdWlja1dlYlBhZ2VQcml2YXRlIHsK
IHB1YmxpYzoKICAgICBRUXVpY2tXZWJQYWdlUHJpdmF0ZShRUXVpY2tXZWJQYWdlKiB2aWV3KTsK
KyAgICB+UVF1aWNrV2ViUGFnZVByaXZhdGUoKTsKIAogICAgIHZvaWQgc2V0UGFnZVByb3h5KFF0
V2ViUGFnZVByb3h5Kik7CiAKLSAgICB2b2lkIGluaXRpYWxpemVTY2VuZUdyYXBoQ29ubmVjdGlv
bnMoKTsKLQotICAgIHZvaWQgX3Ffb25BZnRlclNjZW5lUmVuZGVyKCk7CiAgICAgdm9pZCBwYWlu
dFRvQ3VycmVudEdMQ29udGV4dCgpOworICAgIHZvaWQgcmVzZXRQYWludE5vZGUoKTsKIAogICAg
IFFRdWlja1dlYlBhZ2UqIGNvbnN0IHE7CiAgICAgUXRXZWJQYWdlUHJveHkqIHBhZ2VQcm94eTsK
ICAgICBXZWJLaXQ6OlF0U0dVcGRhdGVRdWV1ZSBzZ1VwZGF0ZVF1ZXVlOwogICAgIGJvb2wgcGFp
bnRpbmdJc0luaXRpYWxpemVkOworICAgIFFTR05vZGUqIG1fcGFpbnROb2RlOwogfTsKIAogI2Vu
ZGlmIC8vIHFxdWlja3dlYnBhZ2VfcF9wX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvdGVzdHMvcXF1aWNrd2Vidmlldy90c3RfcXF1aWNrd2Vidmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FxdWlja3dlYnZpZXcvdHN0
X3FxdWlja3dlYnZpZXcuY3BwCmluZGV4IDZjMTg4YWYuLjdmNDEzNzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcXF1aWNrd2Vidmlldy90c3RfcXF1
aWNrd2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0
cy9xcXVpY2t3ZWJ2aWV3L3RzdF9xcXVpY2t3ZWJ2aWV3LmNwcApAQCAtNDksNiArNDksNyBAQCBw
cml2YXRlIHNsb3RzOgogICAgIHZvaWQgc2Nyb2xsUmVxdWVzdCgpOwogCiAgICAgdm9pZCBzaG93
KCk7CisgICAgdm9pZCBzaG93V2ViVmlldygpOwogCiBwcml2YXRlOgogICAgIGlubGluZSBRUXVp
Y2tXZWJWaWV3KiB3ZWJWaWV3KCkgY29uc3Q7CkBAIC0yMzksNiArMjQwLDIxIEBAIHZvaWQgdHN0
X1FRdWlja1dlYlZpZXc6OnNob3coKQogICAgIG1fd2luZG93LT5oaWRlKCk7CiB9CiAKK3ZvaWQg
dHN0X1FRdWlja1dlYlZpZXc6OnNob3dXZWJWaWV3KCkKK3sKKyAgICB3ZWJWaWV3KCktPnNldFNp
emUoUVNpemVGKDMwMCwgNDAwKSk7CisKKyAgICB3ZWJWaWV3KCktPmxvYWQoUVVybDo6ZnJvbUxv
Y2FsRmlsZShRTGF0aW4xU3RyaW5nKFRFU1RTX1NPVVJDRV9ESVIgIi9odG1sL3Njcm9sbC5odG1s
IikpKTsKKyAgICBRVkVSSUZZKHdhaXRGb3JTaWduYWwod2ViVmlldygpLCBTSUdOQUwobG9hZFN1
Y2NlZWRlZCgpKSkpOworCisgICAgbV93aW5kb3ctPnNob3coKTsKKyAgICAvLyBUaGlzIHNob3Vs
ZCBub3QgY3Jhc2guCisgICAgd2ViVmlldygpLT5zZXRWaXNpYmxlKHRydWUpOworICAgIFFUZXN0
OjpxV2FpdCgyMDApOworICAgIHdlYlZpZXcoKS0+c2V0VmlzaWJsZShmYWxzZSk7CisgICAgUVRl
c3Q6OnFXYWl0KDIwMCk7Cit9CisKIHZvaWQgdHN0X1FRdWlja1dlYlZpZXc6OnNjcm9sbFJlcXVl
c3QoKQogewogICAgIHdlYlZpZXcoKS0+c2V0U2l6ZShRU2l6ZUYoMzAwLCA0MDApKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9MYXllclRyZWVIb3N0UHJveHlRdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvTGF5ZXJUcmVlSG9zdFByb3h5UXQuY3Bw
CmluZGV4IDljYjE5ODkuLjI0ZTFkMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9MYXllclRyZWVIb3N0UHJveHlRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L0xheWVyVHJlZUhvc3RQcm94eVF0LmNwcApAQCAtNTg4LDYgKzU4OCw3IEBAIHZv
aWQgTGF5ZXJUcmVlSG9zdFByb3h5OjpkaWRSZW5kZXJGcmFtZSgpCiB7CiAgICAgbV9kcmF3aW5n
QXJlYVByb3h5LT5wYWdlKCktPnByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6TGF5ZXJUcmVlSG9z
dDo6UmVuZGVyTmV4dEZyYW1lKCksIG1fZHJhd2luZ0FyZWFQcm94eS0+cGFnZSgpLT5wYWdlSUQo
KSk7CiAgICAgcHVzaFVwZGF0ZVRvUXVldWUoRmx1c2hMYXllckNoYW5nZXNNZXNzYWdlOjpjcmVh
dGUoKSk7CisgICAgdXBkYXRlVmlld3BvcnQoKTsKIH0KIAogdm9pZCBMYXllclRyZWVIb3N0UHJv
eHk6OmNyZWF0ZURpcmVjdGx5Q29tcG9zaXRlZEltYWdlKGludDY0X3Qga2V5LCBjb25zdCBXZWJL
aXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBoYW5kbGUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117338</attachid>
            <date>2011-11-30 22:16:18 -0800</date>
            <delta_ts>2011-12-01 07:43:04 -0800</delta_ts>
            <desc>Fix style.</desc>
            <filename>material_painting_only_01.diff</filename>
            <type>text/plain</type>
            <size>10044</size>
            <attacher name="Viatcheslav Ostapenko">ostap73</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBmMTMyYjVmLi44MWY5YTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcg
QEAKKzIwMTEtMTEtMzAgIFZpYXRjaGVzbGF2IE9zdGFwZW5rbyAgPG9zdGFwZW5rby52aWF0Y2hl
c2xhdkBub2tpYS5jb20+CisKKyAgICAgICAgW1F0XSBbV0syXSBRUXVpY2tXZWJWaWV3IGNvdmVy
cyBRTUwgZWxlbWVudHMgdGhhdCBzaG91bGQgYmUgcmVuZGVyZWQgb24gdG9wLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMzMzgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIHBhaW50aW5nIG9mIFFR
dWlja1dlYlBhZ2UgY29udGVudCBmcm9tIGNhbnZhcyBhZnRlcnJlbmRlcmluZygpIHRvCisgICAg
ICAgIFFTR0dlb21ldHJ5Tm9kZS9RU0dNYXRlcmlhbCBiYXNlZCBwYWludCBub2RlLiBJbXBsZW1l
bnRhdGlvbiB1c2VzIFFTR01hdGVyaWFsU2hhZGVyCisgICAgICAgIHVwZGF0ZVN0YXRlKCkgbWV0
aG9kIHRvIGRyYXcgdGV4dHVyZSBtYXBwZXIgZ3JhcGhpY3MgbGF5ZXJzLgorICAgICAgICBUaGlz
IGlzIGNvbnNpZGVyZWQgdG8gYmUgdGVtcG9yYXJ5IHVudGlsIFFTR05vZGU6OlVzZXJOb2RlVHlw
ZSB3aWxsIGJlIGF2YWlsYWJsZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNr
d2VicGFnZS5jcHA6CisgICAgICAgIChRUXVpY2tXZWJQYWdlOjpRUXVpY2tXZWJQYWdlKToKKyAg
ICAgICAgKFFRdWlja1dlYlBhZ2VQcml2YXRlOjpRUXVpY2tXZWJQYWdlUHJpdmF0ZSk6CisgICAg
ICAgIChQYWdlUHJveHlNYXRlcmlhbFNoYWRlcjo6YXR0cmlidXRlTmFtZXMpOgorICAgICAgICAo
UGFnZVByb3h5TWF0ZXJpYWxTaGFkZXI6OnZlcnRleFNoYWRlcik6CisgICAgICAgIChQYWdlUHJv
eHlNYXRlcmlhbFNoYWRlcjo6ZnJhZ21lbnRTaGFkZXIpOgorICAgICAgICAoUGFnZVByb3h5TWF0
ZXJpYWw6OlBhZ2VQcm94eU1hdGVyaWFsKToKKyAgICAgICAgKFBhZ2VQcm94eU1hdGVyaWFsOjp0
eXBlKToKKyAgICAgICAgKFBhZ2VQcm94eU1hdGVyaWFsOjpjcmVhdGVTaGFkZXIpOgorICAgICAg
ICAoUGFnZVByb3h5Tm9kZTo6UGFnZVByb3h5Tm9kZSk6CisgICAgICAgIChQYWdlUHJveHlOb2Rl
Ojp+UGFnZVByb3h5Tm9kZSk6CisgICAgICAgIChQYWdlUHJveHlNYXRlcmlhbFNoYWRlcjo6dXBk
YXRlU3RhdGUpOgorICAgICAgICAoUVF1aWNrV2ViUGFnZTo6dXBkYXRlUGFpbnROb2RlKToKKyAg
ICAgICAgKFFRdWlja1dlYlBhZ2VQcml2YXRlOjpyZXNldFBhaW50Tm9kZSk6CisgICAgICAgIChR
UXVpY2tXZWJQYWdlUHJpdmF0ZTo6flFRdWlja1dlYlBhZ2VQcml2YXRlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnBhZ2VfcC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvcXQvcXF1aWNrd2VicGFnZV9wX3AuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rl
c3RzL3FxdWlja3dlYnZpZXcvdHN0X3FxdWlja3dlYnZpZXcuY3BwOgorICAgICAgICAodHN0X1FR
dWlja1dlYlZpZXc6OnNob3dXZWJWaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvTGF5ZXJU
cmVlSG9zdFByb3h5UXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0UHJveHk6
OmRpZFJlbmRlckZyYW1lKToKKwogMjAxMS0xMS0zMCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFw
QGFwcGxlLmNvbT4KIAogICAgICAgICBEb3dubG9hZCBwYWdlIFVSTCBzaG91bGQgYmUgc2V0IGJ5
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1
aWNrd2VicGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dl
YnBhZ2UuY3BwCmluZGV4IDU0NmJkZTYuLmI3YTQzNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2VicGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJwYWdlLmNwcApAQCAtMjcsNyArMjcsOSBAQAog
I2luY2x1ZGUgInFxdWlja3dlYnBhZ2VfcF9wLmgiCiAjaW5jbHVkZSAicXF1aWNrd2Vidmlld19w
LmgiCiAjaW5jbHVkZSA8UXRDb3JlL1FVcmw+CisjaW5jbHVkZSA8UXREZWNsYXJhdGl2ZS9RU0dH
ZW9tZXRyeU5vZGU+CiAjaW5jbHVkZSA8UXREZWNsYXJhdGl2ZS9RUXVpY2tDYW52YXM+CisjaW5j
bHVkZSA8UXREZWNsYXJhdGl2ZS9RU0dNYXRlcmlhbD4KIAogUVF1aWNrV2ViUGFnZTo6UVF1aWNr
V2ViUGFnZShRUXVpY2tJdGVtKiBwYXJlbnQpCiAgICAgOiBRUXVpY2tJdGVtKHBhcmVudCkKQEAg
LTM4LDcgKzQwLDYgQEAgUVF1aWNrV2ViUGFnZTo6UVF1aWNrV2ViUGFnZShRUXVpY2tJdGVtKiBw
YXJlbnQpCiAgICAgLy8gV2UgZG8gdGhlIHRyYW5zZm9ybSBmcm9tIHRoZSB0b3AgbGVmdCBzbyB0
aGUgdmlld3BvcnQgY2FuIGFzc3VtZSB0aGUgcG9zaXRpb24gMCwgMAogICAgIC8vIGlzIGFsd2F5
cyB3aGVyZSByZW5kZXJpbmcgc3RhcnRzLgogICAgIHNldFRyYW5zZm9ybU9yaWdpbihUb3BMZWZ0
KTsKLSAgICBkLT5pbml0aWFsaXplU2NlbmVHcmFwaENvbm5lY3Rpb25zKCk7CiB9CiAKIFFRdWlj
a1dlYlBhZ2U6On5RUXVpY2tXZWJQYWdlKCkKQEAgLTE1OCwzMSArMTU5LDE1IEBAIHZvaWQgUVF1
aWNrV2ViUGFnZTo6dG91Y2hFdmVudChRVG91Y2hFdmVudCogZXZlbnQpCiAgICAgdGhpcy0+ZXZl
bnQoZXZlbnQpOwogfQogCi12b2lkIFFRdWlja1dlYlBhZ2U6Oml0ZW1DaGFuZ2UoSXRlbUNoYW5n
ZSBjaGFuZ2UsIGNvbnN0IEl0ZW1DaGFuZ2VEYXRhJiBkYXRhKQotewotICAgIGlmIChjaGFuZ2Ug
PT0gSXRlbVNjZW5lQ2hhbmdlKQotICAgICAgICBkLT5pbml0aWFsaXplU2NlbmVHcmFwaENvbm5l
Y3Rpb25zKCk7Ci0gICAgUVF1aWNrSXRlbTo6aXRlbUNoYW5nZShjaGFuZ2UsIGRhdGEpOwotfQot
CiBRUXVpY2tXZWJQYWdlUHJpdmF0ZTo6UVF1aWNrV2ViUGFnZVByaXZhdGUoUVF1aWNrV2ViUGFn
ZSogdmlldykKICAgICA6IHEodmlldykKICAgICAsIHBhZ2VQcm94eSgwKQogICAgICwgc2dVcGRh
dGVRdWV1ZSh2aWV3KQogICAgICwgcGFpbnRpbmdJc0luaXRpYWxpemVkKGZhbHNlKQorICAgICwg
bV9wYWludE5vZGUoMCkKIHsKIH0KIAotdm9pZCBRUXVpY2tXZWJQYWdlUHJpdmF0ZTo6aW5pdGlh
bGl6ZVNjZW5lR3JhcGhDb25uZWN0aW9ucygpCi17Ci0gICAgaWYgKHBhaW50aW5nSXNJbml0aWFs
aXplZCkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmICghcS0+Y2FudmFzKCkpCi0gICAgICAgIHJl
dHVybjsKLSAgICBwYWludGluZ0lzSW5pdGlhbGl6ZWQgPSB0cnVlOwotICAgIFFPYmplY3Q6OmNv
bm5lY3QocS0+Y2FudmFzKCksIFNJR05BTChhZnRlclJlbmRlcmluZygpKSwgcSwgU0xPVChfcV9v
bkFmdGVyU2NlbmVSZW5kZXIoKSksIFF0OjpEaXJlY3RDb25uZWN0aW9uKTsKLX0KLQogdm9pZCBR
UXVpY2tXZWJQYWdlUHJpdmF0ZTo6c2V0UGFnZVByb3h5KFF0V2ViUGFnZVByb3h5KiBwYWdlUHJv
eHkpCiB7CiAgICAgQVNTRVJUKCF0aGlzLT5wYWdlUHJveHkpOwpAQCAtMjMzLDEwICsyMTgsMTA1
IEBAIHZvaWQgUVF1aWNrV2ViUGFnZVByaXZhdGU6OnBhaW50VG9DdXJyZW50R0xDb250ZXh0KCkK
ICAgICBBU1NFUlQoIWdsR2V0RXJyb3IoKSk7CiB9CiAKLXZvaWQgUVF1aWNrV2ViUGFnZVByaXZh
dGU6Ol9xX29uQWZ0ZXJTY2VuZVJlbmRlcigpCitzdHJ1Y3QgUGFnZVByb3h5TWF0ZXJpYWw7Citz
dHJ1Y3QgUGFnZVByb3h5Tm9kZTsKKworLy8gRklYTUU6IHRlbXBvcmFyeSB1bnRpbCBRdCBTY2Vu
ZWdyYXBoIHdpbGwgc3VwcG9ydCBjdXN0b20gcGFpbnRpbmcKK3N0cnVjdCBQYWdlUHJveHlNYXRl
cmlhbFNoYWRlciA6IHB1YmxpYyBRU0dNYXRlcmlhbFNoYWRlciB7CisgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZVN0YXRlKGNvbnN0IFJlbmRlclN0YXRlJiBzdGF0ZSwgUVNHTWF0ZXJpYWwqIG5ld01h
dGVyaWFsLCBRU0dNYXRlcmlhbCogb2xkTWF0ZXJpYWwpOworICAgIHZpcnR1YWwgY2hhciBjb25z
dCogY29uc3QqIGF0dHJpYnV0ZU5hbWVzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHN0YXRpYyBj
aGFyIGNvbnN0KiBjb25zdCBhdHRyW10gPSB7IDAgfTsKKyAgICAgICAgcmV0dXJuIGF0dHI7Cisg
ICAgfQorCisgICAgLy8gdmVydGV4U2hhZGVyIGFuZCBmcmFnbWVudFNoYWRlciBhcmUgbm8tb3Ag
c2hhZGVycworICAgIC8vIEFsbCByZWFsIHBhaW50aW5nIGlzIGdvbmUgYnkgdGV4dHVyZSBtYXBw
ZXIgdGhyb3VnaCBMYXllclRyZWVIb3N0UHJveHkKKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHZl
cnRleFNoYWRlcigpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gInZvaWQgbWFpbigpIHsg
Z2xfUG9zaXRpb24gPSBnbF9WZXJ0ZXg7IH0iOworICAgIH0KKworICAgIHZpcnR1YWwgY29uc3Qg
Y2hhciogZnJhZ21lbnRTaGFkZXIoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICJ2b2lk
IG1haW4oKSB7IGdsX0ZyYWdDb2xvciA9IHZlYzQoMC4wLCAwLjAsIDAuMCwgMC4wKTsgfSI7Cisg
ICAgfQorfTsKKworc3RydWN0IFBhZ2VQcm94eU1hdGVyaWFsIDogcHVibGljIFFTR01hdGVyaWFs
IHsKKyAgICBQYWdlUHJveHlNYXRlcmlhbChQYWdlUHJveHlOb2RlKiBub2RlKSA6IG1fbm9kZShu
b2RlKSB7IH0KKworICAgIFFTR01hdGVyaWFsVHlwZSogdHlwZSgpIGNvbnN0CisgICAgeworICAg
ICAgICBzdGF0aWMgUVNHTWF0ZXJpYWxUeXBlIHR5cGU7CisgICAgICAgIHJldHVybiAmdHlwZTsK
KyAgICB9CisKKyAgICBRU0dNYXRlcmlhbFNoYWRlciogY3JlYXRlU2hhZGVyKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBuZXcgUGFnZVByb3h5TWF0ZXJpYWxTaGFkZXI7CisgICAgfQor
CisgICAgUGFnZVByb3h5Tm9kZSogbV9ub2RlOworfTsKKworc3RydWN0IFBhZ2VQcm94eU5vZGUg
OiBwdWJsaWMgUVNHR2VvbWV0cnlOb2RlIHsKKyAgICBQYWdlUHJveHlOb2RlKFFRdWlja1dlYlBh
Z2VQcml2YXRlKiBwYWdlKSA6CisgICAgICAgIG1fcGFnZVByaXZhdGUocGFnZSkKKyAgICAgICwg
bV9tYXRlcmlhbCh0aGlzKQorICAgICAgLCBtX2dlb21ldHJ5KFFTR0dlb21ldHJ5OjpkZWZhdWx0
QXR0cmlidXRlc19Qb2ludDJEKCksIDQpCisgICAgeworICAgICAgICBzZXRHZW9tZXRyeSgmbV9n
ZW9tZXRyeSk7CisgICAgICAgIHNldE1hdGVyaWFsKCZtX21hdGVyaWFsKTsKKyAgICB9CisKKyAg
ICB+UGFnZVByb3h5Tm9kZSgpCisgICAgeworICAgICAgICBpZiAobV9wYWdlUHJpdmF0ZSkKKyAg
ICAgICAgICAgIG1fcGFnZVByaXZhdGUtPnJlc2V0UGFpbnROb2RlKCk7CisgICAgfQorCisgICAg
UVF1aWNrV2ViUGFnZVByaXZhdGUqIG1fcGFnZVByaXZhdGU7CisgICAgUGFnZVByb3h5TWF0ZXJp
YWwgbV9tYXRlcmlhbDsKKyAgICBRU0dHZW9tZXRyeSBtX2dlb21ldHJ5OworfTsKKwordm9pZCBQ
YWdlUHJveHlNYXRlcmlhbFNoYWRlcjo6dXBkYXRlU3RhdGUoY29uc3QgUmVuZGVyU3RhdGUmIHN0
YXRlLCBRU0dNYXRlcmlhbCogbmV3TWF0ZXJpYWwsIFFTR01hdGVyaWFsKiBvbGRNYXRlcmlhbCkK
K3sKKyAgICBpZiAoIW5ld01hdGVyaWFsKQorICAgICAgICByZXR1cm47CisKKyAgICBQYWdlUHJv
eHlOb2RlKiBub2RlID0gc3RhdGljX2Nhc3Q8UGFnZVByb3h5TWF0ZXJpYWwqPihuZXdNYXRlcmlh
bCktPm1fbm9kZTsKKyAgICBpZiAobm9kZS0+bV9wYWdlUHJpdmF0ZSkKKyAgICAgICAgbm9kZS0+
bV9wYWdlUHJpdmF0ZS0+cGFpbnRUb0N1cnJlbnRHTENvbnRleHQoKTsKK30KKworUVNHTm9kZSog
UVF1aWNrV2ViUGFnZTo6dXBkYXRlUGFpbnROb2RlKFFTR05vZGUqIG9sZE5vZGUsIFVwZGF0ZVBh
aW50Tm9kZURhdGEqKQoreworICAgIGlmICghKGZsYWdzKCkgJiBJdGVtSGFzQ29udGVudHMpKSB7
CisgICAgICAgIGlmIChvbGROb2RlKQorICAgICAgICAgICAgZGVsZXRlIG9sZE5vZGU7CisgICAg
ICAgIHJldHVybiAwOworICAgIH0KKworICAgIFBhZ2VQcm94eU5vZGUqIHByb3h5Tm9kZSA9IHN0
YXRpY19jYXN0PFBhZ2VQcm94eU5vZGUqPihvbGROb2RlKTsKKyAgICBpZiAoIXByb3h5Tm9kZSkg
eworICAgICAgICBwcm94eU5vZGUgPSBuZXcgUGFnZVByb3h5Tm9kZShkKTsKKyAgICAgICAgZC0+
bV9wYWludE5vZGUgPSBwcm94eU5vZGU7CisgICAgfQorCisgICAgcmV0dXJuIHByb3h5Tm9kZTsK
K30KKwordm9pZCBRUXVpY2tXZWJQYWdlUHJpdmF0ZTo6cmVzZXRQYWludE5vZGUoKQoreworICAg
IG1fcGFpbnROb2RlID0gMDsKK30KKworUVF1aWNrV2ViUGFnZVByaXZhdGU6On5RUXVpY2tXZWJQ
YWdlUHJpdmF0ZSgpCiB7Ci0gICAgLy8gVE9ETzogQWxsb3cgcGFpbnRpbmcgYmVmb3JlIHRoZSBz
Y2VuZSBvciBpbiB0aGUgbWlkZGxlIG9mIHRoZSBzY2VuZSB3aXRoIGFuIEZCTy4KLSAgICBwYWlu
dFRvQ3VycmVudEdMQ29udGV4dCgpOworICAgIGlmIChtX3BhaW50Tm9kZSkKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8UGFnZVByb3h5Tm9kZSo+KG1fcGFpbnROb2RlKS0+bV9wYWdlUHJpdmF0ZSA9IDA7
CiB9CiAKICNpbmNsdWRlICJtb2NfcXF1aWNrd2VicGFnZV9wLmNwcCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2VicGFnZV9wLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnBhZ2VfcC5oCmluZGV4IGIxOTA4OTIu
LjA0YWMwNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1
aWNrd2VicGFnZV9wLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVp
Y2t3ZWJwYWdlX3AuaApAQCAtNjUsMTEgKzY1LDkgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwg
dm9pZCB0b3VjaEV2ZW50KFFUb3VjaEV2ZW50Kik7CiAgICAgdmlydHVhbCBib29sIGV2ZW50KFFF
dmVudCopOwogICAgIHZpcnR1YWwgdm9pZCBnZW9tZXRyeUNoYW5nZWQoY29uc3QgUVJlY3RGJiwg
Y29uc3QgUVJlY3RGJik7Ci0gICAgdmlydHVhbCB2b2lkIGl0ZW1DaGFuZ2UoSXRlbUNoYW5nZSwg
Y29uc3QgSXRlbUNoYW5nZURhdGEmKTsKKyAgICB2aXJ0dWFsIFFTR05vZGUqIHVwZGF0ZVBhaW50
Tm9kZShRU0dOb2RlKiwgVXBkYXRlUGFpbnROb2RlRGF0YSopOwogCiBwcml2YXRlOgotICAgIFFf
UFJJVkFURV9TTE9UKGQsIHZvaWQgX3Ffb25BZnRlclNjZW5lUmVuZGVyKCkpOwotCiAgICAgUVF1
aWNrV2ViUGFnZVByaXZhdGUqIGQ7CiAgICAgZnJpZW5kIGNsYXNzIFFRdWlja1dlYlZpZXc7CiAg
ICAgZnJpZW5kIGNsYXNzIFFRdWlja1dlYlZpZXdQcml2YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJwYWdlX3BfcC5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJwYWdlX3BfcC5oCmluZGV4IDZjYjEyZmEu
LmE2YTYzNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1
aWNrd2VicGFnZV9wX3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Fx
dWlja3dlYnBhZ2VfcF9wLmgKQEAgLTM2LDE4ICszNiwxOCBAQCBjbGFzcyBRUXVpY2tXZWJQYWdl
OwogY2xhc3MgUVF1aWNrV2ViUGFnZVByaXZhdGUgewogcHVibGljOgogICAgIFFRdWlja1dlYlBh
Z2VQcml2YXRlKFFRdWlja1dlYlBhZ2UqIHZpZXcpOworICAgIH5RUXVpY2tXZWJQYWdlUHJpdmF0
ZSgpOwogCiAgICAgdm9pZCBzZXRQYWdlUHJveHkoUXRXZWJQYWdlUHJveHkqKTsKIAotICAgIHZv
aWQgaW5pdGlhbGl6ZVNjZW5lR3JhcGhDb25uZWN0aW9ucygpOwotCi0gICAgdm9pZCBfcV9vbkFm
dGVyU2NlbmVSZW5kZXIoKTsKICAgICB2b2lkIHBhaW50VG9DdXJyZW50R0xDb250ZXh0KCk7Cisg
ICAgdm9pZCByZXNldFBhaW50Tm9kZSgpOwogCiAgICAgUVF1aWNrV2ViUGFnZSogY29uc3QgcTsK
ICAgICBRdFdlYlBhZ2VQcm94eSogcGFnZVByb3h5OwogICAgIFdlYktpdDo6UXRTR1VwZGF0ZVF1
ZXVlIHNnVXBkYXRlUXVldWU7CiAgICAgYm9vbCBwYWludGluZ0lzSW5pdGlhbGl6ZWQ7CisgICAg
UVNHTm9kZSogbV9wYWludE5vZGU7CiB9OwogCiAjZW5kaWYgLy8gcXF1aWNrd2VicGFnZV9wX3Bf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xcXVp
Y2t3ZWJ2aWV3L3RzdF9xcXVpY2t3ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvdGVzdHMvcXF1aWNrd2Vidmlldy90c3RfcXF1aWNrd2Vidmlldy5jcHAKaW5kZXgg
NmMxODhhZi4uN2Y0MTM3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC90ZXN0cy9xcXVpY2t3ZWJ2aWV3L3RzdF9xcXVpY2t3ZWJ2aWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FxdWlja3dlYnZpZXcvdHN0X3FxdWlj
a3dlYnZpZXcuY3BwCkBAIC00OSw2ICs0OSw3IEBAIHByaXZhdGUgc2xvdHM6CiAgICAgdm9pZCBz
Y3JvbGxSZXF1ZXN0KCk7CiAKICAgICB2b2lkIHNob3coKTsKKyAgICB2b2lkIHNob3dXZWJWaWV3
KCk7CiAKIHByaXZhdGU6CiAgICAgaW5saW5lIFFRdWlja1dlYlZpZXcqIHdlYlZpZXcoKSBjb25z
dDsKQEAgLTIzOSw2ICsyNDAsMjEgQEAgdm9pZCB0c3RfUVF1aWNrV2ViVmlldzo6c2hvdygpCiAg
ICAgbV93aW5kb3ctPmhpZGUoKTsKIH0KIAordm9pZCB0c3RfUVF1aWNrV2ViVmlldzo6c2hvd1dl
YlZpZXcoKQoreworICAgIHdlYlZpZXcoKS0+c2V0U2l6ZShRU2l6ZUYoMzAwLCA0MDApKTsKKwor
ICAgIHdlYlZpZXcoKS0+bG9hZChRVXJsOjpmcm9tTG9jYWxGaWxlKFFMYXRpbjFTdHJpbmcoVEVT
VFNfU09VUkNFX0RJUiAiL2h0bWwvc2Nyb2xsLmh0bWwiKSkpOworICAgIFFWRVJJRlkod2FpdEZv
clNpZ25hbCh3ZWJWaWV3KCksIFNJR05BTChsb2FkU3VjY2VlZGVkKCkpKSk7CisKKyAgICBtX3dp
bmRvdy0+c2hvdygpOworICAgIC8vIFRoaXMgc2hvdWxkIG5vdCBjcmFzaC4KKyAgICB3ZWJWaWV3
KCktPnNldFZpc2libGUodHJ1ZSk7CisgICAgUVRlc3Q6OnFXYWl0KDIwMCk7CisgICAgd2ViVmll
dygpLT5zZXRWaXNpYmxlKGZhbHNlKTsKKyAgICBRVGVzdDo6cVdhaXQoMjAwKTsKK30KKwogdm9p
ZCB0c3RfUVF1aWNrV2ViVmlldzo6c2Nyb2xsUmVxdWVzdCgpCiB7CiAgICAgd2ViVmlldygpLT5z
ZXRTaXplKFFTaXplRigzMDAsIDQwMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L0xheWVyVHJlZUhvc3RQcm94eVF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9MYXllclRyZWVIb3N0UHJveHlRdC5jcHAKaW5kZXggOWNiMTk4OS4uMjRlMWQyMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0xheWVyVHJlZUhvc3RQcm94
eVF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvTGF5ZXJUcmVlSG9zdFBy
b3h5UXQuY3BwCkBAIC01ODgsNiArNTg4LDcgQEAgdm9pZCBMYXllclRyZWVIb3N0UHJveHk6OmRp
ZFJlbmRlckZyYW1lKCkKIHsKICAgICBtX2RyYXdpbmdBcmVhUHJveHktPnBhZ2UoKS0+cHJvY2Vz
cygpLT5zZW5kKE1lc3NhZ2VzOjpMYXllclRyZWVIb3N0OjpSZW5kZXJOZXh0RnJhbWUoKSwgbV9k
cmF3aW5nQXJlYVByb3h5LT5wYWdlKCktPnBhZ2VJRCgpKTsKICAgICBwdXNoVXBkYXRlVG9RdWV1
ZShGbHVzaExheWVyQ2hhbmdlc01lc3NhZ2U6OmNyZWF0ZSgpKTsKKyAgICB1cGRhdGVWaWV3cG9y
dCgpOwogfQogCiB2b2lkIExheWVyVHJlZUhvc3RQcm94eTo6Y3JlYXRlRGlyZWN0bHlDb21wb3Np
dGVkSW1hZ2UoaW50NjRfdCBrZXksIGNvbnN0IFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5k
bGUmIGhhbmRsZSkK
</data>
<flag name="review"
          id="116747"
          type_id="1"
          status="+"
          setter="noam"
    />
    <flag name="commit-queue"
          id="116748"
          type_id="3"
          status="-"
          setter="noam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117418</attachid>
            <date>2011-12-01 07:43:04 -0800</date>
            <delta_ts>2011-12-01 10:02:35 -0800</delta_ts>
            <desc>Final comment fixes. Reviewed by Noam.</desc>
            <filename>material_painting_only_02.diff</filename>
            <type>text/plain</type>
            <size>10203</size>
            <attacher name="Viatcheslav Ostapenko">ostap73</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBmMTMyYjVmLi5lMDExMzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcg
QEAKKzIwMTEtMTEtMzAgIFZpYXRjaGVzbGF2IE9zdGFwZW5rbyAgPG9zdGFwZW5rby52aWF0Y2hl
c2xhdkBub2tpYS5jb20+CisKKyAgICAgICAgW1F0XSBbV0syXSBRUXVpY2tXZWJWaWV3IGNvdmVy
cyBRTUwgZWxlbWVudHMgdGhhdCBzaG91bGQgYmUgcmVuZGVyZWQgb24gdG9wLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMzMzgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOb2FtIFJvc2VudGhhbC4KKworICAgICAgICBNb3ZlIHBhaW50aW5nIG9mIFFR
dWlja1dlYlBhZ2UgY29udGVudCBmcm9tIGNhbnZhcyBhZnRlcnJlbmRlcmluZygpIHRvCisgICAg
ICAgIFFTR0dlb21ldHJ5Tm9kZS9RU0dNYXRlcmlhbCBiYXNlZCBwYWludCBub2RlLiBJbXBsZW1l
bnRhdGlvbiB1c2VzIFFTR01hdGVyaWFsU2hhZGVyCisgICAgICAgIHVwZGF0ZVN0YXRlKCkgbWV0
aG9kIHRvIGRyYXcgVGV4dHVyZU1hcHBlciBncmFwaGljcyBsYXllcnMuCisgICAgICAgIFRoaXMg
aXMgY29uc2lkZXJlZCB0byBiZSB0ZW1wb3JhcnkgdW50aWwgUVNHTm9kZTo6VXNlck5vZGVUeXBl
IHdpbGwgYmUgYXZhaWxhYmxlLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3
ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFRdWlja1dlYlBhZ2U6OlFRdWlja1dlYlBhZ2UpOgorICAg
ICAgICAoUVF1aWNrV2ViUGFnZVByaXZhdGU6OlFRdWlja1dlYlBhZ2VQcml2YXRlKToKKyAgICAg
ICAgKFBhZ2VQcm94eU1hdGVyaWFsU2hhZGVyOjphdHRyaWJ1dGVOYW1lcyk6CisgICAgICAgIChQ
YWdlUHJveHlNYXRlcmlhbFNoYWRlcjo6dmVydGV4U2hhZGVyKToKKyAgICAgICAgKFBhZ2VQcm94
eU1hdGVyaWFsU2hhZGVyOjpmcmFnbWVudFNoYWRlcik6CisgICAgICAgIChQYWdlUHJveHlNYXRl
cmlhbDo6UGFnZVByb3h5TWF0ZXJpYWwpOgorICAgICAgICAoUGFnZVByb3h5TWF0ZXJpYWw6OnR5
cGUpOgorICAgICAgICAoUGFnZVByb3h5TWF0ZXJpYWw6OmNyZWF0ZVNoYWRlcik6CisgICAgICAg
IChQYWdlUHJveHlOb2RlOjpQYWdlUHJveHlOb2RlKToKKyAgICAgICAgKFBhZ2VQcm94eU5vZGU6
On5QYWdlUHJveHlOb2RlKToKKyAgICAgICAgKFBhZ2VQcm94eU1hdGVyaWFsU2hhZGVyOjp1cGRh
dGVTdGF0ZSk6CisgICAgICAgIChRUXVpY2tXZWJQYWdlOjp1cGRhdGVQYWludE5vZGUpOgorICAg
ICAgICAoUVF1aWNrV2ViUGFnZVByaXZhdGU6OnJlc2V0UGFpbnROb2RlKToKKyAgICAgICAgKFFR
dWlja1dlYlBhZ2VQcml2YXRlOjp+UVF1aWNrV2ViUGFnZVByaXZhdGUpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2VicGFnZV9wLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9xdC9xcXVpY2t3ZWJwYWdlX3BfcC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvdGVz
dHMvcXF1aWNrd2Vidmlldy90c3RfcXF1aWNrd2Vidmlldy5jcHA6CisgICAgICAgICh0c3RfUVF1
aWNrV2ViVmlldzo6c2hvd1dlYlZpZXcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9MYXllclRy
ZWVIb3N0UHJveHlRdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3RQcm94eTo6
ZGlkUmVuZGVyRnJhbWUpOgorCiAyMDExLTExLTMwICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBA
YXBwbGUuY29tPgogCiAgICAgICAgIERvd25sb2FkIHBhZ2UgVVJMIHNob3VsZCBiZSBzZXQgYnkg
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVp
Y2t3ZWJwYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vi
cGFnZS5jcHAKaW5kZXggNTQ2YmRlNi4uNWNiNmM2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJwYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnBhZ2UuY3BwCkBAIC0yNyw3ICsyNyw5IEBACiAj
aW5jbHVkZSAicXF1aWNrd2VicGFnZV9wX3AuaCIKICNpbmNsdWRlICJxcXVpY2t3ZWJ2aWV3X3Au
aCIKICNpbmNsdWRlIDxRdENvcmUvUVVybD4KKyNpbmNsdWRlIDxRdERlY2xhcmF0aXZlL1FTR0dl
b21ldHJ5Tm9kZT4KICNpbmNsdWRlIDxRdERlY2xhcmF0aXZlL1FRdWlja0NhbnZhcz4KKyNpbmNs
dWRlIDxRdERlY2xhcmF0aXZlL1FTR01hdGVyaWFsPgogCiBRUXVpY2tXZWJQYWdlOjpRUXVpY2tX
ZWJQYWdlKFFRdWlja0l0ZW0qIHBhcmVudCkKICAgICA6IFFRdWlja0l0ZW0ocGFyZW50KQpAQCAt
MzgsNyArNDAsNiBAQCBRUXVpY2tXZWJQYWdlOjpRUXVpY2tXZWJQYWdlKFFRdWlja0l0ZW0qIHBh
cmVudCkKICAgICAvLyBXZSBkbyB0aGUgdHJhbnNmb3JtIGZyb20gdGhlIHRvcCBsZWZ0IHNvIHRo
ZSB2aWV3cG9ydCBjYW4gYXNzdW1lIHRoZSBwb3NpdGlvbiAwLCAwCiAgICAgLy8gaXMgYWx3YXlz
IHdoZXJlIHJlbmRlcmluZyBzdGFydHMuCiAgICAgc2V0VHJhbnNmb3JtT3JpZ2luKFRvcExlZnQp
OwotICAgIGQtPmluaXRpYWxpemVTY2VuZUdyYXBoQ29ubmVjdGlvbnMoKTsKIH0KIAogUVF1aWNr
V2ViUGFnZTo6flFRdWlja1dlYlBhZ2UoKQpAQCAtMTU4LDMxICsxNTksMTUgQEAgdm9pZCBRUXVp
Y2tXZWJQYWdlOjp0b3VjaEV2ZW50KFFUb3VjaEV2ZW50KiBldmVudCkKICAgICB0aGlzLT5ldmVu
dChldmVudCk7CiB9CiAKLXZvaWQgUVF1aWNrV2ViUGFnZTo6aXRlbUNoYW5nZShJdGVtQ2hhbmdl
IGNoYW5nZSwgY29uc3QgSXRlbUNoYW5nZURhdGEmIGRhdGEpCi17Ci0gICAgaWYgKGNoYW5nZSA9
PSBJdGVtU2NlbmVDaGFuZ2UpCi0gICAgICAgIGQtPmluaXRpYWxpemVTY2VuZUdyYXBoQ29ubmVj
dGlvbnMoKTsKLSAgICBRUXVpY2tJdGVtOjppdGVtQ2hhbmdlKGNoYW5nZSwgZGF0YSk7Ci19Ci0K
IFFRdWlja1dlYlBhZ2VQcml2YXRlOjpRUXVpY2tXZWJQYWdlUHJpdmF0ZShRUXVpY2tXZWJQYWdl
KiB2aWV3KQogICAgIDogcSh2aWV3KQogICAgICwgcGFnZVByb3h5KDApCiAgICAgLCBzZ1VwZGF0
ZVF1ZXVlKHZpZXcpCiAgICAgLCBwYWludGluZ0lzSW5pdGlhbGl6ZWQoZmFsc2UpCisgICAgLCBt
X3BhaW50Tm9kZSgwKQogewogfQogCi12b2lkIFFRdWlja1dlYlBhZ2VQcml2YXRlOjppbml0aWFs
aXplU2NlbmVHcmFwaENvbm5lY3Rpb25zKCkKLXsKLSAgICBpZiAocGFpbnRpbmdJc0luaXRpYWxp
emVkKQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKCFxLT5jYW52YXMoKSkKLSAgICAgICAgcmV0
dXJuOwotICAgIHBhaW50aW5nSXNJbml0aWFsaXplZCA9IHRydWU7Ci0gICAgUU9iamVjdDo6Y29u
bmVjdChxLT5jYW52YXMoKSwgU0lHTkFMKGFmdGVyUmVuZGVyaW5nKCkpLCBxLCBTTE9UKF9xX29u
QWZ0ZXJTY2VuZVJlbmRlcigpKSwgUXQ6OkRpcmVjdENvbm5lY3Rpb24pOwotfQotCiB2b2lkIFFR
dWlja1dlYlBhZ2VQcml2YXRlOjpzZXRQYWdlUHJveHkoUXRXZWJQYWdlUHJveHkqIHBhZ2VQcm94
eSkKIHsKICAgICBBU1NFUlQoIXRoaXMtPnBhZ2VQcm94eSk7CkBAIC0yMzMsMTAgKzIxOCwxMDcg
QEAgdm9pZCBRUXVpY2tXZWJQYWdlUHJpdmF0ZTo6cGFpbnRUb0N1cnJlbnRHTENvbnRleHQoKQog
ICAgIEFTU0VSVCghZ2xHZXRFcnJvcigpKTsKIH0KIAotdm9pZCBRUXVpY2tXZWJQYWdlUHJpdmF0
ZTo6X3Ffb25BZnRlclNjZW5lUmVuZGVyKCkKK3N0cnVjdCBQYWdlUHJveHlNYXRlcmlhbDsKK3N0
cnVjdCBQYWdlUHJveHlOb2RlOworCisvLyBGSVhNRTogdGVtcG9yYXJ5IHVudGlsIFF0IFNjZW5l
Z3JhcGggd2lsbCBzdXBwb3J0IGN1c3RvbSBwYWludGluZy4KK3N0cnVjdCBQYWdlUHJveHlNYXRl
cmlhbFNoYWRlciA6IHB1YmxpYyBRU0dNYXRlcmlhbFNoYWRlciB7CisgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZVN0YXRlKGNvbnN0IFJlbmRlclN0YXRlJiBzdGF0ZSwgUVNHTWF0ZXJpYWwqIG5ld01h
dGVyaWFsLCBRU0dNYXRlcmlhbCogb2xkTWF0ZXJpYWwpOworICAgIHZpcnR1YWwgY2hhciBjb25z
dCogY29uc3QqIGF0dHJpYnV0ZU5hbWVzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHN0YXRpYyBj
aGFyIGNvbnN0KiBjb25zdCBhdHRyW10gPSB7IDAgfTsKKyAgICAgICAgcmV0dXJuIGF0dHI7Cisg
ICAgfQorCisgICAgLy8gdmVydGV4U2hhZGVyIGFuZCBmcmFnbWVudFNoYWRlciBhcmUgbm8tb3Ag
c2hhZGVycy4KKyAgICAvLyBBbGwgcmVhbCBwYWludGluZyBpcyBnb25lIGJ5IFRleHR1cmVNYXBw
ZXIgdGhyb3VnaCBMYXllclRyZWVIb3N0UHJveHkuCisgICAgdmlydHVhbCBjb25zdCBjaGFyKiB2
ZXJ0ZXhTaGFkZXIoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICJ2b2lkIG1haW4oKSB7
IGdsX1Bvc2l0aW9uID0gZ2xfVmVydGV4OyB9IjsKKyAgICB9CisKKyAgICB2aXJ0dWFsIGNvbnN0
IGNoYXIqIGZyYWdtZW50U2hhZGVyKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAidm9p
ZCBtYWluKCkgeyBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwgMC4wLCAwLjAsIDAuMCk7IH0iOwor
ICAgIH0KK307CisKK3N0cnVjdCBQYWdlUHJveHlNYXRlcmlhbCA6IHB1YmxpYyBRU0dNYXRlcmlh
bCB7CisgICAgUGFnZVByb3h5TWF0ZXJpYWwoUGFnZVByb3h5Tm9kZSogbm9kZSkgOiBtX25vZGUo
bm9kZSkgeyB9CisKKyAgICBRU0dNYXRlcmlhbFR5cGUqIHR5cGUoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgc3RhdGljIFFTR01hdGVyaWFsVHlwZSB0eXBlOworICAgICAgICByZXR1cm4gJnR5cGU7
CisgICAgfQorCisgICAgUVNHTWF0ZXJpYWxTaGFkZXIqIGNyZWF0ZVNoYWRlcigpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gbmV3IFBhZ2VQcm94eU1hdGVyaWFsU2hhZGVyOworICAgIH0K
KworICAgIFBhZ2VQcm94eU5vZGUqIG1fbm9kZTsKK307CisKK3N0cnVjdCBQYWdlUHJveHlOb2Rl
IDogcHVibGljIFFTR0dlb21ldHJ5Tm9kZSB7CisgICAgUGFnZVByb3h5Tm9kZShRUXVpY2tXZWJQ
YWdlUHJpdmF0ZSogcGFnZSkgOgorICAgICAgICBtX3BhZ2VQcml2YXRlKHBhZ2UpCisgICAgICAs
IG1fbWF0ZXJpYWwodGhpcykKKyAgICAgICwgbV9nZW9tZXRyeShRU0dHZW9tZXRyeTo6ZGVmYXVs
dEF0dHJpYnV0ZXNfUG9pbnQyRCgpLCA0KQorICAgIHsKKyAgICAgICAgc2V0R2VvbWV0cnkoJm1f
Z2VvbWV0cnkpOworICAgICAgICBzZXRNYXRlcmlhbCgmbV9tYXRlcmlhbCk7CisgICAgfQorCisg
ICAgflBhZ2VQcm94eU5vZGUoKQorICAgIHsKKyAgICAgICAgaWYgKG1fcGFnZVByaXZhdGUpCisg
ICAgICAgICAgICBtX3BhZ2VQcml2YXRlLT5yZXNldFBhaW50Tm9kZSgpOworICAgIH0KKworICAg
IFFRdWlja1dlYlBhZ2VQcml2YXRlKiBtX3BhZ2VQcml2YXRlOworICAgIFBhZ2VQcm94eU1hdGVy
aWFsIG1fbWF0ZXJpYWw7CisgICAgUVNHR2VvbWV0cnkgbV9nZW9tZXRyeTsKK307CisKK3ZvaWQg
UGFnZVByb3h5TWF0ZXJpYWxTaGFkZXI6OnVwZGF0ZVN0YXRlKGNvbnN0IFJlbmRlclN0YXRlJiBz
dGF0ZSwgUVNHTWF0ZXJpYWwqIG5ld01hdGVyaWFsLCBRU0dNYXRlcmlhbCogb2xkTWF0ZXJpYWwp
Cit7CisgICAgaWYgKCFuZXdNYXRlcmlhbCkKKyAgICAgICAgcmV0dXJuOworCisgICAgUGFnZVBy
b3h5Tm9kZSogbm9kZSA9IHN0YXRpY19jYXN0PFBhZ2VQcm94eU1hdGVyaWFsKj4obmV3TWF0ZXJp
YWwpLT5tX25vZGU7CisgICAgLy8gRklYTUU6IE5vcm1hbGx5IHdlIHdvdWxkbid0IHBhaW50IGlu
c2lkZSBRU0dNYXRlcmlhbFNoYWRlcjo6dXBkYXRlU3RhdGUsCisgICAgLy8gYnV0IHRoaXMgaXMg
YSB0ZW1wb3JhcnkgaGFjayB1bnRpbCBjdXN0b20gcGFpbnQgbm9kZXMgYXJlIGF2YWlsYWJsZS4K
KyAgICBpZiAobm9kZS0+bV9wYWdlUHJpdmF0ZSkKKyAgICAgICAgbm9kZS0+bV9wYWdlUHJpdmF0
ZS0+cGFpbnRUb0N1cnJlbnRHTENvbnRleHQoKTsKK30KKworUVNHTm9kZSogUVF1aWNrV2ViUGFn
ZTo6dXBkYXRlUGFpbnROb2RlKFFTR05vZGUqIG9sZE5vZGUsIFVwZGF0ZVBhaW50Tm9kZURhdGEq
KQoreworICAgIGlmICghKGZsYWdzKCkgJiBJdGVtSGFzQ29udGVudHMpKSB7CisgICAgICAgIGlm
IChvbGROb2RlKQorICAgICAgICAgICAgZGVsZXRlIG9sZE5vZGU7CisgICAgICAgIHJldHVybiAw
OworICAgIH0KKworICAgIFBhZ2VQcm94eU5vZGUqIHByb3h5Tm9kZSA9IHN0YXRpY19jYXN0PFBh
Z2VQcm94eU5vZGUqPihvbGROb2RlKTsKKyAgICBpZiAoIXByb3h5Tm9kZSkgeworICAgICAgICBw
cm94eU5vZGUgPSBuZXcgUGFnZVByb3h5Tm9kZShkKTsKKyAgICAgICAgZC0+bV9wYWludE5vZGUg
PSBwcm94eU5vZGU7CisgICAgfQorCisgICAgcmV0dXJuIHByb3h5Tm9kZTsKK30KKwordm9pZCBR
UXVpY2tXZWJQYWdlUHJpdmF0ZTo6cmVzZXRQYWludE5vZGUoKQoreworICAgIG1fcGFpbnROb2Rl
ID0gMDsKK30KKworUVF1aWNrV2ViUGFnZVByaXZhdGU6On5RUXVpY2tXZWJQYWdlUHJpdmF0ZSgp
CiB7Ci0gICAgLy8gVE9ETzogQWxsb3cgcGFpbnRpbmcgYmVmb3JlIHRoZSBzY2VuZSBvciBpbiB0
aGUgbWlkZGxlIG9mIHRoZSBzY2VuZSB3aXRoIGFuIEZCTy4KLSAgICBwYWludFRvQ3VycmVudEdM
Q29udGV4dCgpOworICAgIGlmIChtX3BhaW50Tm9kZSkKKyAgICAgICAgc3RhdGljX2Nhc3Q8UGFn
ZVByb3h5Tm9kZSo+KG1fcGFpbnROb2RlKS0+bV9wYWdlUHJpdmF0ZSA9IDA7CiB9CiAKICNpbmNs
dWRlICJtb2NfcXF1aWNrd2VicGFnZV9wLmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2VicGFnZV9wLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3FxdWlja3dlYnBhZ2VfcC5oCmluZGV4IGIxOTA4OTIuLjA0YWMwNmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2VicGFnZV9w
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJwYWdlX3Au
aApAQCAtNjUsMTEgKzY1LDkgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCB0b3VjaEV2
ZW50KFFUb3VjaEV2ZW50Kik7CiAgICAgdmlydHVhbCBib29sIGV2ZW50KFFFdmVudCopOwogICAg
IHZpcnR1YWwgdm9pZCBnZW9tZXRyeUNoYW5nZWQoY29uc3QgUVJlY3RGJiwgY29uc3QgUVJlY3RG
Jik7Ci0gICAgdmlydHVhbCB2b2lkIGl0ZW1DaGFuZ2UoSXRlbUNoYW5nZSwgY29uc3QgSXRlbUNo
YW5nZURhdGEmKTsKKyAgICB2aXJ0dWFsIFFTR05vZGUqIHVwZGF0ZVBhaW50Tm9kZShRU0dOb2Rl
KiwgVXBkYXRlUGFpbnROb2RlRGF0YSopOwogCiBwcml2YXRlOgotICAgIFFfUFJJVkFURV9TTE9U
KGQsIHZvaWQgX3Ffb25BZnRlclNjZW5lUmVuZGVyKCkpOwotCiAgICAgUVF1aWNrV2ViUGFnZVBy
aXZhdGUqIGQ7CiAgICAgZnJpZW5kIGNsYXNzIFFRdWlja1dlYlZpZXc7CiAgICAgZnJpZW5kIGNs
YXNzIFFRdWlja1dlYlZpZXdQcml2YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJwYWdlX3BfcC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC9xcXVpY2t3ZWJwYWdlX3BfcC5oCmluZGV4IDZjYjEyZmEuLmE2YTYzNWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2VicGFnZV9w
X3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnBhZ2Vf
cF9wLmgKQEAgLTM2LDE4ICszNiwxOCBAQCBjbGFzcyBRUXVpY2tXZWJQYWdlOwogY2xhc3MgUVF1
aWNrV2ViUGFnZVByaXZhdGUgewogcHVibGljOgogICAgIFFRdWlja1dlYlBhZ2VQcml2YXRlKFFR
dWlja1dlYlBhZ2UqIHZpZXcpOworICAgIH5RUXVpY2tXZWJQYWdlUHJpdmF0ZSgpOwogCiAgICAg
dm9pZCBzZXRQYWdlUHJveHkoUXRXZWJQYWdlUHJveHkqKTsKIAotICAgIHZvaWQgaW5pdGlhbGl6
ZVNjZW5lR3JhcGhDb25uZWN0aW9ucygpOwotCi0gICAgdm9pZCBfcV9vbkFmdGVyU2NlbmVSZW5k
ZXIoKTsKICAgICB2b2lkIHBhaW50VG9DdXJyZW50R0xDb250ZXh0KCk7CisgICAgdm9pZCByZXNl
dFBhaW50Tm9kZSgpOwogCiAgICAgUVF1aWNrV2ViUGFnZSogY29uc3QgcTsKICAgICBRdFdlYlBh
Z2VQcm94eSogcGFnZVByb3h5OwogICAgIFdlYktpdDo6UXRTR1VwZGF0ZVF1ZXVlIHNnVXBkYXRl
UXVldWU7CiAgICAgYm9vbCBwYWludGluZ0lzSW5pdGlhbGl6ZWQ7CisgICAgUVNHTm9kZSogbV9w
YWludE5vZGU7CiB9OwogCiAjZW5kaWYgLy8gcXF1aWNrd2VicGFnZV9wX3BfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xcXVpY2t3ZWJ2aWV3L3Rz
dF9xcXVpY2t3ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVz
dHMvcXF1aWNrd2Vidmlldy90c3RfcXF1aWNrd2Vidmlldy5jcHAKaW5kZXggNmMxODhhZi4uN2Y0
MTM3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9x
cXVpY2t3ZWJ2aWV3L3RzdF9xcXVpY2t3ZWJ2aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FxdWlja3dlYnZpZXcvdHN0X3FxdWlja3dlYnZpZXcuY3Bw
CkBAIC00OSw2ICs0OSw3IEBAIHByaXZhdGUgc2xvdHM6CiAgICAgdm9pZCBzY3JvbGxSZXF1ZXN0
KCk7CiAKICAgICB2b2lkIHNob3coKTsKKyAgICB2b2lkIHNob3dXZWJWaWV3KCk7CiAKIHByaXZh
dGU6CiAgICAgaW5saW5lIFFRdWlja1dlYlZpZXcqIHdlYlZpZXcoKSBjb25zdDsKQEAgLTIzOSw2
ICsyNDAsMjEgQEAgdm9pZCB0c3RfUVF1aWNrV2ViVmlldzo6c2hvdygpCiAgICAgbV93aW5kb3ct
PmhpZGUoKTsKIH0KIAordm9pZCB0c3RfUVF1aWNrV2ViVmlldzo6c2hvd1dlYlZpZXcoKQorewor
ICAgIHdlYlZpZXcoKS0+c2V0U2l6ZShRU2l6ZUYoMzAwLCA0MDApKTsKKworICAgIHdlYlZpZXco
KS0+bG9hZChRVXJsOjpmcm9tTG9jYWxGaWxlKFFMYXRpbjFTdHJpbmcoVEVTVFNfU09VUkNFX0RJ
UiAiL2h0bWwvc2Nyb2xsLmh0bWwiKSkpOworICAgIFFWRVJJRlkod2FpdEZvclNpZ25hbCh3ZWJW
aWV3KCksIFNJR05BTChsb2FkU3VjY2VlZGVkKCkpKSk7CisKKyAgICBtX3dpbmRvdy0+c2hvdygp
OworICAgIC8vIFRoaXMgc2hvdWxkIG5vdCBjcmFzaC4KKyAgICB3ZWJWaWV3KCktPnNldFZpc2li
bGUodHJ1ZSk7CisgICAgUVRlc3Q6OnFXYWl0KDIwMCk7CisgICAgd2ViVmlldygpLT5zZXRWaXNp
YmxlKGZhbHNlKTsKKyAgICBRVGVzdDo6cVdhaXQoMjAwKTsKK30KKwogdm9pZCB0c3RfUVF1aWNr
V2ViVmlldzo6c2Nyb2xsUmVxdWVzdCgpCiB7CiAgICAgd2ViVmlldygpLT5zZXRTaXplKFFTaXpl
RigzMDAsIDQwMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0xh
eWVyVHJlZUhvc3RQcm94eVF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9MYXll
clRyZWVIb3N0UHJveHlRdC5jcHAKaW5kZXggOWNiMTk4OS4uMjRlMWQyMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0xheWVyVHJlZUhvc3RQcm94eVF0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvTGF5ZXJUcmVlSG9zdFByb3h5UXQuY3BwCkBA
IC01ODgsNiArNTg4LDcgQEAgdm9pZCBMYXllclRyZWVIb3N0UHJveHk6OmRpZFJlbmRlckZyYW1l
KCkKIHsKICAgICBtX2RyYXdpbmdBcmVhUHJveHktPnBhZ2UoKS0+cHJvY2VzcygpLT5zZW5kKE1l
c3NhZ2VzOjpMYXllclRyZWVIb3N0OjpSZW5kZXJOZXh0RnJhbWUoKSwgbV9kcmF3aW5nQXJlYVBy
b3h5LT5wYWdlKCktPnBhZ2VJRCgpKTsKICAgICBwdXNoVXBkYXRlVG9RdWV1ZShGbHVzaExheWVy
Q2hhbmdlc01lc3NhZ2U6OmNyZWF0ZSgpKTsKKyAgICB1cGRhdGVWaWV3cG9ydCgpOwogfQogCiB2
b2lkIExheWVyVHJlZUhvc3RQcm94eTo6Y3JlYXRlRGlyZWN0bHlDb21wb3NpdGVkSW1hZ2UoaW50
NjRfdCBrZXksIGNvbnN0IFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGhhbmRsZSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>