<?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>117868</bug_id>
          <alias>TextureUnits</alias>
          <creation_ts>2013-06-21 02:58:08 -0700</creation_ts>
          <short_desc>Texture unit code refactoring</short_desc>
          <delta_ts>2013-10-07 12:19:13 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Przemyslaw Szymanski">p.szymanski3</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kalyan.kondapally</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>noam</cc>
    
    <cc>ostap73</cc>
    
    <cc>p.szymanski3</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>902487</commentid>
    <comment_count>0</comment_count>
      <attachid>205163</attachid>
    <who name="Przemyslaw Szymanski">p.szymanski3</who>
    <bug_when>2013-06-21 02:58:08 -0700</bug_when>
    <thetext>Created attachment 205163
TextureUnit code otpimization

WebGL specification points to OpenGL ES 2.0 specification (http://www.khronos.org/registry/gles/specs/2.0/es_full_spec_2.0.25.pdf)
and according to OpenGL ES 2.0 specification section 2.10:
&quot;It is not allowed to have variables of different sampler types pointing to 
the same texture image unit within a program object. This situation can only 
be detected at the next rendering command issued, and an INVALID_OPERATION 
error will then be generated&quot;

So now it is possible to bind both texture2D and textureCubeMap in the same texture unit.
Variables m_texture2DBinding and m_textureCubeMapBinding in WebGLRenderingContext::TextureUnitState are not necessary.
We can use just one variable m_textureBinding and provide less code for textureUnit operations and also slightly increase rendering performance</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902489</commentid>
    <comment_count>1</comment_count>
      <attachid>205165</attachid>
    <who name="Przemyslaw Szymanski">p.szymanski3</who>
    <bug_when>2013-06-21 03:10:44 -0700</bug_when>
    <thetext>Created attachment 205165
Texture unit code refactoring</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902491</commentid>
    <comment_count>2</comment_count>
    <who name="Przemyslaw Szymanski">p.szymanski3</who>
    <bug_when>2013-06-21 03:14:05 -0700</bug_when>
    <thetext>It is not possible to bind both texture2D and textureCubeMap in the same texture unit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902515</commentid>
    <comment_count>3</comment_count>
      <attachid>205165</attachid>
    <who name="Przemyslaw Szymanski">p.szymanski3</who>
    <bug_when>2013-06-21 04:56:46 -0700</bug_when>
    <thetext>Comment on attachment 205165
Texture unit code refactoring

some bugs in this patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902516</commentid>
    <comment_count>4</comment_count>
      <attachid>205172</attachid>
    <who name="Przemyslaw Szymanski">p.szymanski3</who>
    <bug_when>2013-06-21 04:57:21 -0700</bug_when>
    <thetext>Created attachment 205172
Texture unit code refactoring</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>903681</commentid>
    <comment_count>5</comment_count>
      <attachid>205172</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-06-26 06:26:29 -0700</bug_when>
    <thetext>Comment on attachment 205172
Texture unit code refactoring

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

&gt; Source/WebCore/ChangeLog:7
&gt; +

Please add a Changelog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>903686</commentid>
    <comment_count>6</comment_count>
      <attachid>205172</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-06-26 06:37:47 -0700</bug_when>
    <thetext>Comment on attachment 205172
Texture unit code refactoring

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

R- due to missing changelog.

&gt; Source/WebCore/html/canvas/WebGLRenderingContext.cpp:-612
&gt; -      m_textureUnits[i].m_texture2DBinding = 0;

4 spaces for indent please

&gt; Source/WebCore/html/canvas/WebGLRenderingContext.cpp:4811
&gt; +            const GC3Denum target = m_textureUnits[ii].m_textureBinding-&gt;getTarget();

We don&apos;t use local const in webkit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>904089</commentid>
    <comment_count>7</comment_count>
      <attachid>205571</attachid>
    <who name="Przemyslaw Szymanski">p.szymanski3</who>
    <bug_when>2013-06-27 00:32:44 -0700</bug_when>
    <thetext>Created attachment 205571
Texture unit code refactoring

Update after review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>904587</commentid>
    <comment_count>8</comment_count>
    <who name="Przemyslaw Szymanski">p.szymanski3</who>
    <bug_when>2013-06-28 05:42:21 -0700</bug_when>
    <thetext>Noam Rosenthal, could you review again my update? 
Thank you</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>904614</commentid>
    <comment_count>9</comment_count>
      <attachid>205571</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-06-28 07:17:11 -0700</bug_when>
    <thetext>Comment on attachment 205571
Texture unit code refactoring

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        According to OpenGL ES 2.0 specification there is not possible to use both

there -&gt; it

&gt; Source/WebCore/ChangeLog:11
&gt; +        and makes WebKit more consistent with OpenGL

Period at end of sentence.

&gt; Source/WebCore/ChangeLog:13
&gt; +        No new tests. Covered by existing tests

ditto.
btw always nice to put a reference to one of the tests that covers this.

&gt; Source/WebCore/html/canvas/WebGLRenderingContext.h:454
&gt; +    struct TextureUnitState {
&gt; +        RefPtr&lt;WebGLTexture&gt; m_textureBinding;
&gt;      };

Does this need to be a struct?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>904955</commentid>
    <comment_count>10</comment_count>
      <attachid>205791</attachid>
    <who name="Przemyslaw Szymanski">p.szymanski3</who>
    <bug_when>2013-07-01 02:47:39 -0700</bug_when>
    <thetext>Created attachment 205791
Texture unit code refactoring</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>904956</commentid>
    <comment_count>11</comment_count>
      <attachid>205791</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-07-01 02:51:34 -0700</bug_when>
    <thetext>Comment on attachment 205791
Texture unit code refactoring

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        According to OpenGL ES 2.0 specification there it is not possible to use both

&quot;there it&quot; -&gt; &quot;it&quot;

&gt; Source/WebCore/html/canvas/WebGLRenderingContext.h:452
&gt; +    struct TextureUnitState {

As Noam said, why use a struct here when there is only one member?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>904957</commentid>
    <comment_count>12</comment_count>
    <who name="Przemyslaw Szymanski">p.szymanski3</who>
    <bug_when>2013-07-01 03:00:24 -0700</bug_when>
    <thetext>In my opinion it should be a struct due to direct access to its member(s) just like in structs. And in this case it also a little simplifies the code.

We can make it (in a future patch) a class with all features e.g. member initialization in the constructor, member clear (null) in the destructor, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>904959</commentid>
    <comment_count>13</comment_count>
      <attachid>205791</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-07-01 03:06:20 -0700</bug_when>
    <thetext>Comment on attachment 205791
Texture unit code refactoring

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

&gt; Source/WebCore/html/canvas/WebGLRenderingContext.h:455
&gt;      Vector&lt;TextureUnitState&gt; m_textureUnits;

My proposal was not to make TextureUnitState a class but to get rid of TextureUnitState altogether. Then we could have the  following member:
Vector&lt;RefPtr&lt;WebGLTexture&gt; &gt; m_textureUnits;

Would that make sense? Noam should confirm but this is how I interpreted his comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>904960</commentid>
    <comment_count>14</comment_count>
      <attachid>205792</attachid>
    <who name="Przemyslaw Szymanski">p.szymanski3</who>
    <bug_when>2013-07-01 03:09:59 -0700</bug_when>
    <thetext>Created attachment 205792
Texture unit code refactoring

change log modified: there it -&gt; it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>904961</commentid>
    <comment_count>15</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-07-01 03:12:12 -0700</bug_when>
    <thetext>Please don&apos;t r+ your own patches. Leave the r flag unset and set cq? flag only if you have already updated the reviewer in the Changelog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>904962</commentid>
    <comment_count>16</comment_count>
    <who name="Przemyslaw Szymanski">p.szymanski3</who>
    <bug_when>2013-07-01 03:14:22 -0700</bug_when>
    <thetext>In my opinion making a vector:
Vector&lt;RefPtr&lt;WebGLTexture&gt; &gt; m_textureUnits;
is not a good idea because of a future patch(es). There could be another members so it will be refactored again to struct/class.
For example, we prepare another patch with texture units which adds another member to TextureUnitState.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>904963</commentid>
    <comment_count>17</comment_count>
      <attachid>205792</attachid>
    <who name="Przemyslaw Szymanski">p.szymanski3</who>
    <bug_when>2013-07-01 03:15:00 -0700</bug_when>
    <thetext>Comment on attachment 205792
Texture unit code refactoring

sorry, missclick</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>904964</commentid>
    <comment_count>18</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-07-01 03:16:29 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 205792 [details])
&gt; sorry, missclick

cq? not r?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>904965</commentid>
    <comment_count>19</comment_count>
      <attachid>205792</attachid>
    <who name="Przemyslaw Szymanski">p.szymanski3</who>
    <bug_when>2013-07-01 03:21:45 -0700</bug_when>
    <thetext>Comment on attachment 205792
Texture unit code refactoring

cq?
If this struct is ok for you. Thank you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>904966</commentid>
    <comment_count>20</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-07-01 03:25:31 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (From update of attachment 205792 [details])
&gt; cq?
&gt; If this struct is ok for you. Thank you.

Looks fine to me based on your explanation but I&apos;ll let Noam take one last look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>904984</commentid>
    <comment_count>21</comment_count>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2013-07-01 04:47:39 -0700</bug_when>
    <thetext>binding TEXTURE_2D and TEXTURE_CUBE_MAP to the same texture unit should be fine as long as they are not used at the same time in a shader program. 


conformance/textures/texture-active-bind-2.html  test covers this, seems missing in your change log. Have you checked this test??</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>905299</commentid>
    <comment_count>22</comment_count>
    <who name="Przemyslaw Szymanski">p.szymanski3</who>
    <bug_when>2013-07-02 02:40:37 -0700</bug_when>
    <thetext>Maybe I didn&apos;t wirte patch description clear. OpenGL allow to bind textures of different types in the same texture unit as you mentioned and I didn&apos;t change it in the WebKit code.
I only removed unnecessary texture variable from TextureUnitState because OpenGL allow to make operations only on actually bound texture at the same time. So in the WebKit code there is used only one pointer to texture at the same time in the same texture unit.

So it is still possible to:
bindTexture(TEXTURE_2D);
bindTexture(TEXTURE_CUBE_MAP);
with no erros, but in WebKit after each texture bind TextureUnitState.m_textureBinding is changed (first texture2D then textureCubeMap).

And to your question: yes, my patch is covered also by conformance/textures/texture-active-bind-2.html and conformance/textures/texture-active-bind.html
My patch is covered by all existing texture tests which are pass without my patch (so my patch doesn&apos;t break any of those tests).

I hope it is all clear now. Thank you for your attention.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>905314</commentid>
    <comment_count>23</comment_count>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2013-07-02 03:25:03 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; I hope it is all clear now. Thank you for your attention.

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>905315</commentid>
    <comment_count>24</comment_count>
    <who name="Kalyan">kalyan.kondapally</who>
    <bug_when>2013-07-02 03:33:23 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; Maybe I didn&apos;t wirte patch description clear. OpenGL allow to bind textures of different types in the same texture unit as you mentioned and I didn&apos;t change it in the WebKit code.
&gt; I only removed unnecessary texture variable from TextureUnitState because OpenGL allow to make operations only on actually bound texture at the same time. So in the WebKit code there is used only one pointer to texture at the same time in the same texture unit.
&gt; 
&gt; So it is still possible to:
&gt; bindTexture(TEXTURE_2D);
&gt; bindTexture(TEXTURE_CUBE_MAP);
&gt; with no erros, but in WebKit after each texture bind TextureUnitState.m_textureBinding is changed (first texture2D then textureCubeMap).
&gt; 

Yes, my question was only regarding the tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>905831</commentid>
    <comment_count>25</comment_count>
    <who name="Przemyslaw Szymanski">p.szymanski3</who>
    <bug_when>2013-07-03 05:31:56 -0700</bug_when>
    <thetext>Noam Rosenthal, can you confirm whether this patch is ok now? Thank you</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>905836</commentid>
    <comment_count>26</comment_count>
      <attachid>205792</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-07-03 06:00:39 -0700</bug_when>
    <thetext>Comment on attachment 205792
Texture unit code refactoring

Clearing flags on attachment: 205792

Committed r152351: &lt;http://trac.webkit.org/changeset/152351&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>905837</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-07-03 06:00:45 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936479</commentid>
    <comment_count>28</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-10-04 19:16:14 -0700</bug_when>
    <thetext>After some discussion in https://github.com/KhronosGroup/WebGL/pull/391
we&apos;ve concluded that this optimisation is incorrect.

Basically, it&apos;s ok to bind the same texture unit to multiple points as long as they are in different programs. I&apos;m going to revert this in 122369 

Afterwards, you can decide whether or not to optimise again, taking the program into account.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936979</commentid>
    <comment_count>29</comment_count>
    <who name="Przemyslaw Szymanski">p.szymanski3</who>
    <bug_when>2013-10-06 23:28:20 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; After some discussion in https://github.com/KhronosGroup/WebGL/pull/391
&gt; we&apos;ve concluded that this optimisation is incorrect.
&gt; 
&gt; Basically, it&apos;s ok to bind the same texture unit to multiple points as long as they are in different programs. I&apos;m going to revert this in 122369 
&gt; 
&gt; Afterwards, you can decide whether or not to optimise again, taking the program into account.
I tried to revert it in patch https://bugs.webkit.org/show_bug.cgi?id=120285 but seems that noone reviewed it yet</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937184</commentid>
    <comment_count>30</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-10-07 12:19:13 -0700</bug_when>
    <thetext>As, sorry I missed it. Anyway, it was reverted (and slightly cleaned up) in https://bugs.webkit.org/show_bug.cgi?id=122369</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>205163</attachid>
            <date>2013-06-21 02:58:08 -0700</date>
            <delta_ts>2013-06-21 03:09:36 -0700</delta_ts>
            <desc>TextureUnit code otpimization</desc>
            <filename>texunit.patch</filename>
            <type>text/plain</type>
            <size>10648</size>
            <attacher name="Przemyslaw Szymanski">p.szymanski3</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxOGFiZGFkLi5lZmE5M2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDI2
IEBACisyMDEzLTA2LTE4ICBQcnplbXlzbGF3IFN6eW1hbnNraSAgPHAuc3p5bWFuc2tpM0BzYW1z
dW5nLmNvbT4KKworICAgICAgICBUZXh0dXJlVW5pdCBjb2RlIG90cGltaXphdGlvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWNjb3JkaW5nIHRvIE9wZW5H
TCBFUyAyLjAgc3BlY2lmaWNhdGlvbiB0aGVyZSBpcyBub3QgcG9zc2libGUgdG8gdXNlIGJvdGgK
KyAgICAgICAgdGV4dHVyZTJEIGFuZCB0ZXh0dXJlQ3ViZU1hcCBpbiBvbmUgdGV4dHVyZSB1bml0
LgorICAgICAgICBUaGlzIHBhdGNoIHJlZHVjZXMgYW1vdW50IG9mIGNvZGUsIHNsaWdodGx5IGlu
Y3JlYXNlcyByZW5kZXJpbmcgcGVyZm9ybWFuY2UKKyAgICAgICAgYW5kIG1ha2VzIFdlYktpdCBt
b3JlIGNvbnNpc3RlbnQgd2l0aCBPcGVuR0wKKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5n
IHRlc3RzLgorCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6fldlYkdMUmVuZGVy
aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnJl
c2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpiaW5kVGV4
dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRlbGV0ZVRl
eHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQYXJh
bWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpoYW5kbGVO
UE9UVGV4dHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2
YWxpZGF0ZVRleHR1cmVCaW5kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dDo6cmVzdG9yZUN1cnJlbnRUZXh0dXJlMkQpOgorICAgICAgICAqIGh0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oOgorCiAyMDEzLTA2LTE4ICBQcmF2ZWVuIFIgSmFkaGF2
ICA8cHJhdmVlbi5qQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtXZWJTcGVlY2hdIFNwZWVjaCBS
ZWNvZ25pdGlvbiByZXF1aXJlcyBjb252ZXJ0VmFsdWUgc3VwcG9ydCBpbiBKU0RpY3Rpb25hcnkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHQuY3BwCmluZGV4IGFlNjliZDkuLmUxZGQxZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtNjA3LDEwICs2MDcs
OCBAQCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6On5XZWJHTFJlbmRlcmluZ0NvbnRleHQoKQogICAg
IG1fZnJhbWVidWZmZXJCaW5kaW5nID0gMDsKICAgICBtX3JlbmRlcmJ1ZmZlckJpbmRpbmcgPSAw
OwogCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3RleHR1cmVVbml0cy5zaXplKCk7ICsr
aSkgewotICAgICAgbV90ZXh0dXJlVW5pdHNbaV0ubV90ZXh0dXJlMkRCaW5kaW5nID0gMDsKLSAg
ICAgIG1fdGV4dHVyZVVuaXRzW2ldLm1fdGV4dHVyZUN1YmVNYXBCaW5kaW5nID0gMDsKLSAgICB9
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3RleHR1cmVVbml0cy5zaXplKCk7ICsraSkK
KyAgICAgICAgbV90ZXh0dXJlVW5pdHNbaV0ubV90ZXh0dXJlQmluZGluZyA9IDA7CiAKICAgICBt
X2JsYWNrVGV4dHVyZTJEID0gMDsKICAgICBtX2JsYWNrVGV4dHVyZUN1YmVNYXAgPSAwOwpAQCAt
ODE2LDcgKzgxNCw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpyZXNoYXBlKGludCB3
aWR0aCwgaW50IGhlaWdodCkKICAgICB9IGVsc2UKICAgICAgICAgbV9jb250ZXh0LT5yZXNoYXBl
KHdpZHRoLCBoZWlnaHQpOwogCi0gICAgbV9jb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV8yRCwgb2JqZWN0T3JaZXJvKG1fdGV4dHVyZVVuaXRzW21fYWN0aXZl
VGV4dHVyZVVuaXRdLm1fdGV4dHVyZTJEQmluZGluZy5nZXQoKSkpOworICAgIG1fY29udGV4dC0+
YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG9iamVjdE9yWmVybyht
X3RleHR1cmVVbml0c1ttX2FjdGl2ZVRleHR1cmVVbml0XS5tX3RleHR1cmVCaW5kaW5nLmdldCgp
KSk7CiAgICAgbV9jb250ZXh0LT5iaW5kUmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpS
RU5ERVJCVUZGRVIsIG9iamVjdE9yWmVybyhtX3JlbmRlcmJ1ZmZlckJpbmRpbmcuZ2V0KCkpKTsK
ICAgICBpZiAobV9mcmFtZWJ1ZmZlckJpbmRpbmcpCiAgICAgICBtX2NvbnRleHQtPmJpbmRGcmFt
ZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG9iamVjdE9yWmVybyhtX2Zy
YW1lYnVmZmVyQmluZGluZy5nZXQoKSkpOwpAQCAtMTAxNCwxNCArMTAxMiwxNCBAQCB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6YmluZFRleHR1cmUoR0MzRGVudW0gdGFyZ2V0LCBXZWJHTFRl
eHR1cmUqIHRleHR1cmUsCiAgICAgfQogICAgIEdDM0RpbnQgbWF4TGV2ZWwgPSAwOwogICAgIGlm
ICh0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQpIHsKLSAgICAgICAgbV90
ZXh0dXJlVW5pdHNbbV9hY3RpdmVUZXh0dXJlVW5pdF0ubV90ZXh0dXJlMkRCaW5kaW5nID0gdGV4
dHVyZTsKKyAgICAgICAgbV90ZXh0dXJlVW5pdHNbbV9hY3RpdmVUZXh0dXJlVW5pdF0ubV90ZXh0
dXJlQmluZGluZyA9IHRleHR1cmU7CiAgICAgICAgIG1heExldmVsID0gbV9tYXhUZXh0dXJlTGV2
ZWw7CiAKICAgICAgICAgaWYgKG1fZHJhd2luZ0J1ZmZlciAmJiAhbV9hY3RpdmVUZXh0dXJlVW5p
dCkKICAgICAgICAgICAgIG1fZHJhd2luZ0J1ZmZlci0+c2V0VGV4dHVyZTJEQmluZGluZyhvYmpl
Y3RPclplcm8odGV4dHVyZSkpOwogCiAgICAgfSBlbHNlIGlmICh0YXJnZXQgPT0gR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfQ1VCRV9NQVApIHsKLSAgICAgICAgbV90ZXh0dXJlVW5pdHNbbV9h
Y3RpdmVUZXh0dXJlVW5pdF0ubV90ZXh0dXJlQ3ViZU1hcEJpbmRpbmcgPSB0ZXh0dXJlOworICAg
ICAgICBtX3RleHR1cmVVbml0c1ttX2FjdGl2ZVRleHR1cmVVbml0XS5tX3RleHR1cmVCaW5kaW5n
ID0gdGV4dHVyZTsKICAgICAgICAgbWF4TGV2ZWwgPSBtX21heEN1YmVNYXBUZXh0dXJlTGV2ZWw7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
M0Q6OklOVkFMSURfRU5VTSwgImJpbmRUZXh0dXJlIiwgImludmFsaWQgdGFyZ2V0Iik7CkBAIC0x
NjM1LDEwICsxNjMzLDggQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRlbGV0ZVRleHR1
cmUoV2ViR0xUZXh0dXJlKiB0ZXh0dXJlKQogICAgIGlmICghZGVsZXRlT2JqZWN0KHRleHR1cmUp
KQogICAgICAgICByZXR1cm47CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3RleHR1cmVV
bml0cy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAodGV4dHVyZSA9PSBtX3RleHR1cmVVbml0
c1tpXS5tX3RleHR1cmUyREJpbmRpbmcpCi0gICAgICAgICAgICBtX3RleHR1cmVVbml0c1tpXS5t
X3RleHR1cmUyREJpbmRpbmcgPSAwOwotICAgICAgICBpZiAodGV4dHVyZSA9PSBtX3RleHR1cmVV
bml0c1tpXS5tX3RleHR1cmVDdWJlTWFwQmluZGluZykKLSAgICAgICAgICAgIG1fdGV4dHVyZVVu
aXRzW2ldLm1fdGV4dHVyZUN1YmVNYXBCaW5kaW5nID0gMDsKKyAgICAgICAgaWYgKHRleHR1cmUg
PT0gbV90ZXh0dXJlVW5pdHNbaV0ubV90ZXh0dXJlQmluZGluZykKKyAgICAgICAgICAgIG1fdGV4
dHVyZVVuaXRzW2ldLm1fdGV4dHVyZUJpbmRpbmcgPSAwOwogICAgIH0KICAgICBpZiAobV9mcmFt
ZWJ1ZmZlckJpbmRpbmcpCiAgICAgICAgIG1fZnJhbWVidWZmZXJCaW5kaW5nLT5yZW1vdmVBdHRh
Y2htZW50RnJvbUJvdW5kRnJhbWVidWZmZXIodGV4dHVyZSk7CkBAIC0yNjkyLDkgKzI2ODgsOSBA
QCBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQYXJhbWV0ZXIoR0MzRGVu
dW0gcG5hbWUsIEV4Y2VwdGlvbkNvZGUmCiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U1VC
UElYRUxfQklUUzoKICAgICAgICAgcmV0dXJuIGdldEludFBhcmFtZXRlcihwbmFtZSk7CiAgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9CSU5ESU5HXzJEOgotICAgICAgICByZXR1
cm4gV2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xUZXh0dXJlPihtX3RleHR1cmVVbml0c1tt
X2FjdGl2ZVRleHR1cmVVbml0XS5tX3RleHR1cmUyREJpbmRpbmcpKTsKKyAgICAgICAgcmV0dXJu
IFdlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMVGV4dHVyZT4obV90ZXh0dXJlVW5pdHNbbV9h
Y3RpdmVUZXh0dXJlVW5pdF0ubV90ZXh0dXJlQmluZGluZykpOwogICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfQklORElOR19DVUJFX01BUDoKLSAgICAgICAgcmV0dXJuIFdlYkdM
R2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMVGV4dHVyZT4obV90ZXh0dXJlVW5pdHNbbV9hY3RpdmVU
ZXh0dXJlVW5pdF0ubV90ZXh0dXJlQ3ViZU1hcEJpbmRpbmcpKTsKKyAgICAgICAgcmV0dXJuIFdl
YkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMVGV4dHVyZT4obV90ZXh0dXJlVW5pdHNbbV9hY3Rp
dmVUZXh0dXJlVW5pdF0ubV90ZXh0dXJlQmluZGluZykpOwogICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0M0Q6OlVOUEFDS19BTElHTk1FTlQ6CiAgICAgICAgIHJldHVybiBnZXRJbnRQYXJhbWV0ZXIo
cG5hbWUpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlVOUEFDS19GTElQX1lfV0VCR0w6
CkBAIC00ODAyLDggKzQ3OTgsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6aGFuZGxl
TlBPVFRleHR1cmVzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgYm9vbCBwcgogewogICAgIGJv
b2wgcmVzZXRBY3RpdmVVbml0ID0gZmFsc2U7CiAgICAgZm9yICh1bnNpZ25lZCBpaSA9IDA7IGlp
IDwgbV90ZXh0dXJlVW5pdHMuc2l6ZSgpOyArK2lpKSB7Ci0gICAgICAgIGlmICgobV90ZXh0dXJl
VW5pdHNbaWldLm1fdGV4dHVyZTJEQmluZGluZyAmJiBtX3RleHR1cmVVbml0c1tpaV0ubV90ZXh0
dXJlMkRCaW5kaW5nLT5uZWVkVG9Vc2VCbGFja1RleHR1cmUoKSkKLSAgICAgICAgICAgIHx8ICht
X3RleHR1cmVVbml0c1tpaV0ubV90ZXh0dXJlQ3ViZU1hcEJpbmRpbmcgJiYgbV90ZXh0dXJlVW5p
dHNbaWldLm1fdGV4dHVyZUN1YmVNYXBCaW5kaW5nLT5uZWVkVG9Vc2VCbGFja1RleHR1cmUoKSkp
IHsKKyAgICAgICAgaWYgKG1fdGV4dHVyZVVuaXRzW2lpXS5tX3RleHR1cmVCaW5kaW5nICYmIG1f
dGV4dHVyZVVuaXRzW2lpXS5tX3RleHR1cmVCaW5kaW5nLT5uZWVkVG9Vc2VCbGFja1RleHR1cmUo
KSkgewogICAgICAgICAgICAgaWYgKGlpICE9IG1fYWN0aXZlVGV4dHVyZVVuaXQpIHsKICAgICAg
ICAgICAgICAgICBtX2NvbnRleHQtPmFjdGl2ZVRleHR1cmUoaWkpOwogICAgICAgICAgICAgICAg
IHJlc2V0QWN0aXZlVW5pdCA9IHRydWU7CkBAIC00ODExLDIyICs0ODA2LDE5IEBAIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpoYW5kbGVOUE9UVGV4dHVyZXMoY29uc3QgY2hhciogZnVuY3Rp
b25OYW1lLCBib29sIHByCiAgICAgICAgICAgICAgICAgbV9jb250ZXh0LT5hY3RpdmVUZXh0dXJl
KGlpKTsKICAgICAgICAgICAgICAgICByZXNldEFjdGl2ZVVuaXQgPSBmYWxzZTsKICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIFdlYkdMVGV4dHVyZSogdGV4MkQ7Ci0gICAgICAgICAgICBXZWJH
TFRleHR1cmUqIHRleEN1YmVNYXA7CisgICAgICAgICAgICBXZWJHTFRleHR1cmUqIHRleHR1cmUg
PSAwOworICAgICAgICAgICAgY29uc3QgR0MzRGVudW0gdGFyZ2V0ID0gbV90ZXh0dXJlVW5pdHNb
aWldLm1fdGV4dHVyZUJpbmRpbmctPmdldFRhcmdldCgpOwogICAgICAgICAgICAgaWYgKHByZXBh
cmVUb0RyYXcpIHsKICAgICAgICAgICAgICAgICBTdHJpbmcgbXNnKFN0cmluZygidGV4dHVyZSBi
b3VuZCB0byB0ZXh0dXJlIHVuaXQgIikgKyBTdHJpbmc6Om51bWJlcihpaSkKICAgICAgICAgICAg
ICAgICAgICAgKyAiIGlzIG5vdCByZW5kZXJhYmxlLiBJdCBtYXliZSBub24tcG93ZXItb2YtMiBh
bmQgaGF2ZSBpbmNvbXBhdGlibGUgdGV4dHVyZSBmaWx0ZXJpbmcgb3IgaXMgbm90ICd0ZXh0dXJl
IGNvbXBsZXRlJyIpOwogICAgICAgICAgICAgICAgIHByaW50R0xXYXJuaW5nVG9Db25zb2xlKGZ1
bmN0aW9uTmFtZSwgbXNnLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICAgICAgICAgIHRleDJEID0g
bV9ibGFja1RleHR1cmUyRC5nZXQoKTsKLSAgICAgICAgICAgICAgICB0ZXhDdWJlTWFwID0gbV9i
bGFja1RleHR1cmVDdWJlTWFwLmdldCgpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICB0ZXgyRCA9IG1fdGV4dHVyZVVuaXRzW2lpXS5tX3RleHR1cmUyREJpbmRpbmcuZ2V0
KCk7Ci0gICAgICAgICAgICAgICAgdGV4Q3ViZU1hcCA9IG1fdGV4dHVyZVVuaXRzW2lpXS5tX3Rl
eHR1cmVDdWJlTWFwQmluZGluZy5nZXQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlm
IChtX3RleHR1cmVVbml0c1tpaV0ubV90ZXh0dXJlMkRCaW5kaW5nICYmIG1fdGV4dHVyZVVuaXRz
W2lpXS5tX3RleHR1cmUyREJpbmRpbmctPm5lZWRUb1VzZUJsYWNrVGV4dHVyZSgpKQotICAgICAg
ICAgICAgICAgIG1fY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfMkQsIG9iamVjdE9yWmVybyh0ZXgyRCkpOwotICAgICAgICAgICAgaWYgKG1fdGV4dHVyZVVu
aXRzW2lpXS5tX3RleHR1cmVDdWJlTWFwQmluZGluZyAmJiBtX3RleHR1cmVVbml0c1tpaV0ubV90
ZXh0dXJlQ3ViZU1hcEJpbmRpbmctPm5lZWRUb1VzZUJsYWNrVGV4dHVyZSgpKQotICAgICAgICAg
ICAgICAgIG1fY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
Q1VCRV9NQVAsIG9iamVjdE9yWmVybyh0ZXhDdWJlTWFwKSk7CisgICAgICAgICAgICAgICAgaWYg
KHRhcmdldCA9PSBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCkKKyAgICAgICAgICAgICAg
ICAgICAgdGV4dHVyZSA9IG1fYmxhY2tUZXh0dXJlMkQuZ2V0KCk7CisgICAgICAgICAgICAgICAg
ZWxzZSBpZiAodGFyZ2V0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX0NVQkVfTUFQKQor
ICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlID0gbV9ibGFja1RleHR1cmVDdWJlTWFwLmdldCgp
OworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgdGV4dHVyZSA9IG1fdGV4dHVy
ZVVuaXRzW2lpXS5tX3RleHR1cmVCaW5kaW5nLmdldCgpOworICAgICAgICAgICAgbV9jb250ZXh0
LT5iaW5kVGV4dHVyZSh0YXJnZXQsIG9iamVjdE9yWmVybyh0ZXh0dXJlKSk7CiAgICAgICAgIH0K
ICAgICB9CiAgICAgaWYgKHJlc2V0QWN0aXZlVW5pdCkKQEAgLTQ4OTEsMTAgKzQ4ODMsOCBAQCBp
bnQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRCb3VuZEZyYW1lYnVmZmVySGVpZ2h0KCkKIAog
V2ViR0xUZXh0dXJlKiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlVGV4dHVyZUJpbmRp
bmcoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQzNEZW51bSB0YXJnZXQsIGJvb2wgdXNlU2l4
RW51bXNGb3JDdWJlTWFwKQogewotICAgIFdlYkdMVGV4dHVyZSogdGV4ID0gMDsKICAgICBzd2l0
Y2ggKHRhcmdldCkgewogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQ6Ci0g
ICAgICAgIHRleCA9IG1fdGV4dHVyZVVuaXRzW21fYWN0aXZlVGV4dHVyZVVuaXRdLm1fdGV4dHVy
ZTJEQmluZGluZy5nZXQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHQzRDo6VEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YOgogICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWDoKQEAgLTQ5MDYsMTkgKzQ4OTYsMTgg
QEAgV2ViR0xUZXh0dXJlKiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlVGV4dHVyZUJp
bmRpbmcoY29uc3QgY2hhciogZnVuY3Rpb24KICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9y
KEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0sIGZ1bmN0aW9uTmFtZSwgImludmFsaWQg
dGV4dHVyZSB0YXJnZXQiKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9Ci0gICAg
ICAgIHRleCA9IG1fdGV4dHVyZVVuaXRzW21fYWN0aXZlVGV4dHVyZVVuaXRdLm1fdGV4dHVyZUN1
YmVNYXBCaW5kaW5nLmdldCgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFX0NVQkVfTUFQOgogICAgICAgICBpZiAodXNlU2l4RW51bXNGb3JDdWJl
TWFwKSB7CiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6
SU5WQUxJRF9FTlVNLCBmdW5jdGlvbk5hbWUsICJpbnZhbGlkIHRleHR1cmUgdGFyZ2V0Iik7CiAg
ICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQotICAgICAgICB0ZXggPSBtX3RleHR1cmVV
bml0c1ttX2FjdGl2ZVRleHR1cmVVbml0XS5tX3RleHR1cmVDdWJlTWFwQmluZGluZy5nZXQoKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3Io
R3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSwgZnVuY3Rpb25OYW1lLCAiaW52YWxpZCB0
ZXh0dXJlIHRhcmdldCIpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CisgICAgV2ViR0xUZXh0
dXJlKiB0ZXggPSBtX3RleHR1cmVVbml0c1ttX2FjdGl2ZVRleHR1cmVVbml0XS5tX3RleHR1cmVC
aW5kaW5nLmdldCgpOwogICAgIGlmICghdGV4KQogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihH
cmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgIm5vIHRl
eHR1cmUiKTsKICAgICByZXR1cm4gdGV4OwpAQCAtNjAyOSw3ICs2MDE4LDcgQEAgdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OnJlc3RvcmVDdXJyZW50RnJhbWVidWZmZXIoKQogdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OnJlc3RvcmVDdXJyZW50VGV4dHVyZTJEKCkKIHsKICAgICBFeGNl
cHRpb25Db2RlIGVjOwotICAgIGJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
XzJELCBtX3RleHR1cmVVbml0c1ttX2FjdGl2ZVRleHR1cmVVbml0XS5tX3RleHR1cmUyREJpbmRp
bmcuZ2V0KCksIGVjKTsKKyAgICBiaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV8yRCwgbV90ZXh0dXJlVW5pdHNbbV9hY3RpdmVUZXh0dXJlVW5pdF0ubV90ZXh0dXJlQmluZGlu
Zy5nZXQoKSwgZWMpOwogfQogCiBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6c3VwcG9ydHNE
cmF3QnVmZmVycygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dC5oCmluZGV4IDBkZWI3NTAuLjE2MWMzNDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCkBAIC00NTAsMTAg
KzQ1MCw4IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8V2ViR0xQcm9ncmFtPiBtX2N1cnJlbnRQcm9n
cmFtOwogICAgIFJlZlB0cjxXZWJHTEZyYW1lYnVmZmVyPiBtX2ZyYW1lYnVmZmVyQmluZGluZzsK
ICAgICBSZWZQdHI8V2ViR0xSZW5kZXJidWZmZXI+IG1fcmVuZGVyYnVmZmVyQmluZGluZzsKLSAg
ICBjbGFzcyBUZXh0dXJlVW5pdFN0YXRlIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFJlZlB0cjxX
ZWJHTFRleHR1cmU+IG1fdGV4dHVyZTJEQmluZGluZzsKLSAgICAgICAgUmVmUHRyPFdlYkdMVGV4
dHVyZT4gbV90ZXh0dXJlQ3ViZU1hcEJpbmRpbmc7CisgICAgc3RydWN0IFRleHR1cmVVbml0U3Rh
dGUgeworICAgICAgICBSZWZQdHI8V2ViR0xUZXh0dXJlPiBtX3RleHR1cmVCaW5kaW5nOwogICAg
IH07CiAgICAgVmVjdG9yPFRleHR1cmVVbml0U3RhdGU+IG1fdGV4dHVyZVVuaXRzOwogICAgIHVu
c2lnbmVkIGxvbmcgbV9hY3RpdmVUZXh0dXJlVW5pdDsKLS0gCjEuNy45LjUKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>205165</attachid>
            <date>2013-06-21 03:10:44 -0700</date>
            <delta_ts>2013-06-21 04:56:46 -0700</delta_ts>
            <desc>Texture unit code refactoring</desc>
            <filename>texunit.patch</filename>
            <type>text/plain</type>
            <size>10651</size>
            <attacher name="Przemyslaw Szymanski">p.szymanski3</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxOGFiZGFkLi5jNTYxNzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDI2
IEBACisyMDEzLTA2LTE4ICBQcnplbXlzbGF3IFN6eW1hbnNraSAgPHAuc3p5bWFuc2tpM0BzYW1z
dW5nLmNvbT4KKworICAgICAgICBUZXh0dXJlVW5pdCBjb2RlIG90cGltaXphdGlvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE3ODY4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWNjb3JkaW5nIHRvIE9w
ZW5HTCBFUyAyLjAgc3BlY2lmaWNhdGlvbiB0aGVyZSBpcyBub3QgcG9zc2libGUgdG8gdXNlIGJv
dGgKKyAgICAgICAgdGV4dHVyZTJEIGFuZCB0ZXh0dXJlQ3ViZU1hcCBpbiBvbmUgdGV4dHVyZSB1
bml0LgorICAgICAgICBUaGlzIHBhdGNoIHJlZHVjZXMgYW1vdW50IG9mIGNvZGUsIHNsaWdodGx5
IGluY3JlYXNlcyByZW5kZXJpbmcgcGVyZm9ybWFuY2UKKyAgICAgICAgYW5kIG1ha2VzIFdlYktp
dCBtb3JlIGNvbnNpc3RlbnQgd2l0aCBPcGVuR0wKKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0
aW5nIHRlc3RzLgorCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6fldlYkdMUmVu
ZGVyaW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OnJlc2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpiaW5k
VGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRlbGV0
ZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQ
YXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpoYW5k
bGVOUE9UVGV4dHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
Ojp2YWxpZGF0ZVRleHR1cmVCaW5kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVy
aW5nQ29udGV4dDo6cmVzdG9yZUN1cnJlbnRUZXh0dXJlMkQpOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oOgorCiAyMDEzLTA2LTE4ICBQcmF2ZWVuIFIgSmFk
aGF2ICA8cHJhdmVlbi5qQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtXZWJTcGVlY2hdIFNwZWVj
aCBSZWNvZ25pdGlvbiByZXF1aXJlcyBjb252ZXJ0VmFsdWUgc3VwcG9ydCBpbiBKU0RpY3Rpb25h
cnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHQuY3BwCmluZGV4IGFlNjliZDkuLmUxZGQxZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtNjA3LDEwICs2
MDcsOCBAQCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6On5XZWJHTFJlbmRlcmluZ0NvbnRleHQoKQog
ICAgIG1fZnJhbWVidWZmZXJCaW5kaW5nID0gMDsKICAgICBtX3JlbmRlcmJ1ZmZlckJpbmRpbmcg
PSAwOwogCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3RleHR1cmVVbml0cy5zaXplKCk7
ICsraSkgewotICAgICAgbV90ZXh0dXJlVW5pdHNbaV0ubV90ZXh0dXJlMkRCaW5kaW5nID0gMDsK
LSAgICAgIG1fdGV4dHVyZVVuaXRzW2ldLm1fdGV4dHVyZUN1YmVNYXBCaW5kaW5nID0gMDsKLSAg
ICB9CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3RleHR1cmVVbml0cy5zaXplKCk7ICsr
aSkKKyAgICAgICAgbV90ZXh0dXJlVW5pdHNbaV0ubV90ZXh0dXJlQmluZGluZyA9IDA7CiAKICAg
ICBtX2JsYWNrVGV4dHVyZTJEID0gMDsKICAgICBtX2JsYWNrVGV4dHVyZUN1YmVNYXAgPSAwOwpA
QCAtODE2LDcgKzgxNCw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpyZXNoYXBlKGlu
dCB3aWR0aCwgaW50IGhlaWdodCkKICAgICB9IGVsc2UKICAgICAgICAgbV9jb250ZXh0LT5yZXNo
YXBlKHdpZHRoLCBoZWlnaHQpOwogCi0gICAgbV9jb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgb2JqZWN0T3JaZXJvKG1fdGV4dHVyZVVuaXRzW21fYWN0
aXZlVGV4dHVyZVVuaXRdLm1fdGV4dHVyZTJEQmluZGluZy5nZXQoKSkpOworICAgIG1fY29udGV4
dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG9iamVjdE9yWmVy
byhtX3RleHR1cmVVbml0c1ttX2FjdGl2ZVRleHR1cmVVbml0XS5tX3RleHR1cmVCaW5kaW5nLmdl
dCgpKSk7CiAgICAgbV9jb250ZXh0LT5iaW5kUmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNE
OjpSRU5ERVJCVUZGRVIsIG9iamVjdE9yWmVybyhtX3JlbmRlcmJ1ZmZlckJpbmRpbmcuZ2V0KCkp
KTsKICAgICBpZiAobV9mcmFtZWJ1ZmZlckJpbmRpbmcpCiAgICAgICBtX2NvbnRleHQtPmJpbmRG
cmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG9iamVjdE9yWmVybyht
X2ZyYW1lYnVmZmVyQmluZGluZy5nZXQoKSkpOwpAQCAtMTAxNCwxNCArMTAxMiwxNCBAQCB2b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YmluZFRleHR1cmUoR0MzRGVudW0gdGFyZ2V0LCBXZWJH
TFRleHR1cmUqIHRleHR1cmUsCiAgICAgfQogICAgIEdDM0RpbnQgbWF4TGV2ZWwgPSAwOwogICAg
IGlmICh0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQpIHsKLSAgICAgICAg
bV90ZXh0dXJlVW5pdHNbbV9hY3RpdmVUZXh0dXJlVW5pdF0ubV90ZXh0dXJlMkRCaW5kaW5nID0g
dGV4dHVyZTsKKyAgICAgICAgbV90ZXh0dXJlVW5pdHNbbV9hY3RpdmVUZXh0dXJlVW5pdF0ubV90
ZXh0dXJlQmluZGluZyA9IHRleHR1cmU7CiAgICAgICAgIG1heExldmVsID0gbV9tYXhUZXh0dXJl
TGV2ZWw7CiAKICAgICAgICAgaWYgKG1fZHJhd2luZ0J1ZmZlciAmJiAhbV9hY3RpdmVUZXh0dXJl
VW5pdCkKICAgICAgICAgICAgIG1fZHJhd2luZ0J1ZmZlci0+c2V0VGV4dHVyZTJEQmluZGluZyhv
YmplY3RPclplcm8odGV4dHVyZSkpOwogCiAgICAgfSBlbHNlIGlmICh0YXJnZXQgPT0gR3JhcGhp
Y3NDb250ZXh0M0Q6OlRFWFRVUkVfQ1VCRV9NQVApIHsKLSAgICAgICAgbV90ZXh0dXJlVW5pdHNb
bV9hY3RpdmVUZXh0dXJlVW5pdF0ubV90ZXh0dXJlQ3ViZU1hcEJpbmRpbmcgPSB0ZXh0dXJlOwor
ICAgICAgICBtX3RleHR1cmVVbml0c1ttX2FjdGl2ZVRleHR1cmVVbml0XS5tX3RleHR1cmVCaW5k
aW5nID0gdGV4dHVyZTsKICAgICAgICAgbWF4TGV2ZWwgPSBtX21heEN1YmVNYXBUZXh0dXJlTGV2
ZWw7CiAgICAgfSBlbHNlIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250
ZXh0M0Q6OklOVkFMSURfRU5VTSwgImJpbmRUZXh0dXJlIiwgImludmFsaWQgdGFyZ2V0Iik7CkBA
IC0xNjM1LDEwICsxNjMzLDggQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRlbGV0ZVRl
eHR1cmUoV2ViR0xUZXh0dXJlKiB0ZXh0dXJlKQogICAgIGlmICghZGVsZXRlT2JqZWN0KHRleHR1
cmUpKQogICAgICAgICByZXR1cm47CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3RleHR1
cmVVbml0cy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAodGV4dHVyZSA9PSBtX3RleHR1cmVV
bml0c1tpXS5tX3RleHR1cmUyREJpbmRpbmcpCi0gICAgICAgICAgICBtX3RleHR1cmVVbml0c1tp
XS5tX3RleHR1cmUyREJpbmRpbmcgPSAwOwotICAgICAgICBpZiAodGV4dHVyZSA9PSBtX3RleHR1
cmVVbml0c1tpXS5tX3RleHR1cmVDdWJlTWFwQmluZGluZykKLSAgICAgICAgICAgIG1fdGV4dHVy
ZVVuaXRzW2ldLm1fdGV4dHVyZUN1YmVNYXBCaW5kaW5nID0gMDsKKyAgICAgICAgaWYgKHRleHR1
cmUgPT0gbV90ZXh0dXJlVW5pdHNbaV0ubV90ZXh0dXJlQmluZGluZykKKyAgICAgICAgICAgIG1f
dGV4dHVyZVVuaXRzW2ldLm1fdGV4dHVyZUJpbmRpbmcgPSAwOwogICAgIH0KICAgICBpZiAobV9m
cmFtZWJ1ZmZlckJpbmRpbmcpCiAgICAgICAgIG1fZnJhbWVidWZmZXJCaW5kaW5nLT5yZW1vdmVB
dHRhY2htZW50RnJvbUJvdW5kRnJhbWVidWZmZXIodGV4dHVyZSk7CkBAIC0yNjkyLDkgKzI2ODgs
OSBAQCBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQYXJhbWV0ZXIoR0Mz
RGVudW0gcG5hbWUsIEV4Y2VwdGlvbkNvZGUmCiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
U1VCUElYRUxfQklUUzoKICAgICAgICAgcmV0dXJuIGdldEludFBhcmFtZXRlcihwbmFtZSk7CiAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9CSU5ESU5HXzJEOgotICAgICAgICBy
ZXR1cm4gV2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xUZXh0dXJlPihtX3RleHR1cmVVbml0
c1ttX2FjdGl2ZVRleHR1cmVVbml0XS5tX3RleHR1cmUyREJpbmRpbmcpKTsKKyAgICAgICAgcmV0
dXJuIFdlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMVGV4dHVyZT4obV90ZXh0dXJlVW5pdHNb
bV9hY3RpdmVUZXh0dXJlVW5pdF0ubV90ZXh0dXJlQmluZGluZykpOwogICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0M0Q6OlRFWFRVUkVfQklORElOR19DVUJFX01BUDoKLSAgICAgICAgcmV0dXJuIFdl
YkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMVGV4dHVyZT4obV90ZXh0dXJlVW5pdHNbbV9hY3Rp
dmVUZXh0dXJlVW5pdF0ubV90ZXh0dXJlQ3ViZU1hcEJpbmRpbmcpKTsKKyAgICAgICAgcmV0dXJu
IFdlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMVGV4dHVyZT4obV90ZXh0dXJlVW5pdHNbbV9h
Y3RpdmVUZXh0dXJlVW5pdF0ubV90ZXh0dXJlQmluZGluZykpOwogICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0M0Q6OlVOUEFDS19BTElHTk1FTlQ6CiAgICAgICAgIHJldHVybiBnZXRJbnRQYXJhbWV0
ZXIocG5hbWUpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlVOUEFDS19GTElQX1lfV0VC
R0w6CkBAIC00ODAyLDggKzQ3OTgsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6aGFu
ZGxlTlBPVFRleHR1cmVzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgYm9vbCBwcgogewogICAg
IGJvb2wgcmVzZXRBY3RpdmVVbml0ID0gZmFsc2U7CiAgICAgZm9yICh1bnNpZ25lZCBpaSA9IDA7
IGlpIDwgbV90ZXh0dXJlVW5pdHMuc2l6ZSgpOyArK2lpKSB7Ci0gICAgICAgIGlmICgobV90ZXh0
dXJlVW5pdHNbaWldLm1fdGV4dHVyZTJEQmluZGluZyAmJiBtX3RleHR1cmVVbml0c1tpaV0ubV90
ZXh0dXJlMkRCaW5kaW5nLT5uZWVkVG9Vc2VCbGFja1RleHR1cmUoKSkKLSAgICAgICAgICAgIHx8
IChtX3RleHR1cmVVbml0c1tpaV0ubV90ZXh0dXJlQ3ViZU1hcEJpbmRpbmcgJiYgbV90ZXh0dXJl
VW5pdHNbaWldLm1fdGV4dHVyZUN1YmVNYXBCaW5kaW5nLT5uZWVkVG9Vc2VCbGFja1RleHR1cmUo
KSkpIHsKKyAgICAgICAgaWYgKG1fdGV4dHVyZVVuaXRzW2lpXS5tX3RleHR1cmVCaW5kaW5nICYm
IG1fdGV4dHVyZVVuaXRzW2lpXS5tX3RleHR1cmVCaW5kaW5nLT5uZWVkVG9Vc2VCbGFja1RleHR1
cmUoKSkgewogICAgICAgICAgICAgaWYgKGlpICE9IG1fYWN0aXZlVGV4dHVyZVVuaXQpIHsKICAg
ICAgICAgICAgICAgICBtX2NvbnRleHQtPmFjdGl2ZVRleHR1cmUoaWkpOwogICAgICAgICAgICAg
ICAgIHJlc2V0QWN0aXZlVW5pdCA9IHRydWU7CkBAIC00ODExLDIyICs0ODA2LDE5IEBAIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpoYW5kbGVOUE9UVGV4dHVyZXMoY29uc3QgY2hhciogZnVu
Y3Rpb25OYW1lLCBib29sIHByCiAgICAgICAgICAgICAgICAgbV9jb250ZXh0LT5hY3RpdmVUZXh0
dXJlKGlpKTsKICAgICAgICAgICAgICAgICByZXNldEFjdGl2ZVVuaXQgPSBmYWxzZTsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIFdlYkdMVGV4dHVyZSogdGV4MkQ7Ci0gICAgICAgICAgICBX
ZWJHTFRleHR1cmUqIHRleEN1YmVNYXA7CisgICAgICAgICAgICBXZWJHTFRleHR1cmUqIHRleHR1
cmUgPSAwOworICAgICAgICAgICAgY29uc3QgR0MzRGVudW0gdGFyZ2V0ID0gbV90ZXh0dXJlVW5p
dHNbaWldLm1fdGV4dHVyZUJpbmRpbmctPmdldFRhcmdldCgpOwogICAgICAgICAgICAgaWYgKHBy
ZXBhcmVUb0RyYXcpIHsKICAgICAgICAgICAgICAgICBTdHJpbmcgbXNnKFN0cmluZygidGV4dHVy
ZSBib3VuZCB0byB0ZXh0dXJlIHVuaXQgIikgKyBTdHJpbmc6Om51bWJlcihpaSkKICAgICAgICAg
ICAgICAgICAgICAgKyAiIGlzIG5vdCByZW5kZXJhYmxlLiBJdCBtYXliZSBub24tcG93ZXItb2Yt
MiBhbmQgaGF2ZSBpbmNvbXBhdGlibGUgdGV4dHVyZSBmaWx0ZXJpbmcgb3IgaXMgbm90ICd0ZXh0
dXJlIGNvbXBsZXRlJyIpOwogICAgICAgICAgICAgICAgIHByaW50R0xXYXJuaW5nVG9Db25zb2xl
KGZ1bmN0aW9uTmFtZSwgbXNnLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICAgICAgICAgIHRleDJE
ID0gbV9ibGFja1RleHR1cmUyRC5nZXQoKTsKLSAgICAgICAgICAgICAgICB0ZXhDdWJlTWFwID0g
bV9ibGFja1RleHR1cmVDdWJlTWFwLmdldCgpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICB0ZXgyRCA9IG1fdGV4dHVyZVVuaXRzW2lpXS5tX3RleHR1cmUyREJpbmRpbmcu
Z2V0KCk7Ci0gICAgICAgICAgICAgICAgdGV4Q3ViZU1hcCA9IG1fdGV4dHVyZVVuaXRzW2lpXS5t
X3RleHR1cmVDdWJlTWFwQmluZGluZy5nZXQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGlmIChtX3RleHR1cmVVbml0c1tpaV0ubV90ZXh0dXJlMkRCaW5kaW5nICYmIG1fdGV4dHVyZVVu
aXRzW2lpXS5tX3RleHR1cmUyREJpbmRpbmctPm5lZWRUb1VzZUJsYWNrVGV4dHVyZSgpKQotICAg
ICAgICAgICAgICAgIG1fY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfMkQsIG9iamVjdE9yWmVybyh0ZXgyRCkpOwotICAgICAgICAgICAgaWYgKG1fdGV4dHVy
ZVVuaXRzW2lpXS5tX3RleHR1cmVDdWJlTWFwQmluZGluZyAmJiBtX3RleHR1cmVVbml0c1tpaV0u
bV90ZXh0dXJlQ3ViZU1hcEJpbmRpbmctPm5lZWRUb1VzZUJsYWNrVGV4dHVyZSgpKQotICAgICAg
ICAgICAgICAgIG1fY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfQ1VCRV9NQVAsIG9iamVjdE9yWmVybyh0ZXhDdWJlTWFwKSk7CisgICAgICAgICAgICAgICAg
aWYgKHRhcmdldCA9PSBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCkKKyAgICAgICAgICAg
ICAgICAgICAgdGV4dHVyZSA9IG1fYmxhY2tUZXh0dXJlMkQuZ2V0KCk7CisgICAgICAgICAgICAg
ICAgZWxzZSBpZiAodGFyZ2V0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX0NVQkVfTUFQ
KQorICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlID0gbV9ibGFja1RleHR1cmVDdWJlTWFwLmdl
dCgpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgdGV4dHVyZSA9IG1fdGV4
dHVyZVVuaXRzW2lpXS5tX3RleHR1cmVCaW5kaW5nLmdldCgpOworICAgICAgICAgICAgbV9jb250
ZXh0LT5iaW5kVGV4dHVyZSh0YXJnZXQsIG9iamVjdE9yWmVybyh0ZXh0dXJlKSk7CiAgICAgICAg
IH0KICAgICB9CiAgICAgaWYgKHJlc2V0QWN0aXZlVW5pdCkKQEAgLTQ4OTEsMTAgKzQ4ODMsOCBA
QCBpbnQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRCb3VuZEZyYW1lYnVmZmVySGVpZ2h0KCkK
IAogV2ViR0xUZXh0dXJlKiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlVGV4dHVyZUJp
bmRpbmcoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQzNEZW51bSB0YXJnZXQsIGJvb2wgdXNl
U2l4RW51bXNGb3JDdWJlTWFwKQogewotICAgIFdlYkdMVGV4dHVyZSogdGV4ID0gMDsKICAgICBz
d2l0Y2ggKHRhcmdldCkgewogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQ6
Ci0gICAgICAgIHRleCA9IG1fdGV4dHVyZVVuaXRzW21fYWN0aXZlVGV4dHVyZVVuaXRdLm1fdGV4
dHVyZTJEQmluZGluZy5nZXQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YOgogICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWDoKQEAgLTQ5MDYsMTkgKzQ4OTYs
MTggQEAgV2ViR0xUZXh0dXJlKiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRlVGV4dHVy
ZUJpbmRpbmcoY29uc3QgY2hhciogZnVuY3Rpb24KICAgICAgICAgICAgIHN5bnRoZXNpemVHTEVy
cm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0sIGZ1bmN0aW9uTmFtZSwgImludmFs
aWQgdGV4dHVyZSB0YXJnZXQiKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9Ci0g
ICAgICAgIHRleCA9IG1fdGV4dHVyZVVuaXRzW21fYWN0aXZlVGV4dHVyZVVuaXRdLm1fdGV4dHVy
ZUN1YmVNYXBCaW5kaW5nLmdldCgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFX0NVQkVfTUFQOgogICAgICAgICBpZiAodXNlU2l4RW51bXNGb3JD
dWJlTWFwKSB7CiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQz
RDo6SU5WQUxJRF9FTlVNLCBmdW5jdGlvbk5hbWUsICJpbnZhbGlkIHRleHR1cmUgdGFyZ2V0Iik7
CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQotICAgICAgICB0ZXggPSBtX3RleHR1
cmVVbml0c1ttX2FjdGl2ZVRleHR1cmVVbml0XS5tX3RleHR1cmVDdWJlTWFwQmluZGluZy5nZXQo
KTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgc3ludGhlc2l6ZUdMRXJy
b3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSwgZnVuY3Rpb25OYW1lLCAiaW52YWxp
ZCB0ZXh0dXJlIHRhcmdldCIpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CisgICAgV2ViR0xU
ZXh0dXJlKiB0ZXggPSBtX3RleHR1cmVVbml0c1ttX2FjdGl2ZVRleHR1cmVVbml0XS5tX3RleHR1
cmVCaW5kaW5nLmdldCgpOwogICAgIGlmICghdGV4KQogICAgICAgICBzeW50aGVzaXplR0xFcnJv
cihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgIm5v
IHRleHR1cmUiKTsKICAgICByZXR1cm4gdGV4OwpAQCAtNjAyOSw3ICs2MDE4LDcgQEAgdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnJlc3RvcmVDdXJyZW50RnJhbWVidWZmZXIoKQogdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnJlc3RvcmVDdXJyZW50VGV4dHVyZTJEKCkKIHsKICAgICBF
eGNlcHRpb25Db2RlIGVjOwotICAgIGJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFXzJELCBtX3RleHR1cmVVbml0c1ttX2FjdGl2ZVRleHR1cmVVbml0XS5tX3RleHR1cmUyREJp
bmRpbmcuZ2V0KCksIGVjKTsKKyAgICBiaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV8yRCwgbV90ZXh0dXJlVW5pdHNbbV9hY3RpdmVUZXh0dXJlVW5pdF0ubV90ZXh0dXJlQmlu
ZGluZy5nZXQoKSwgZWMpOwogfQogCiBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6c3VwcG9y
dHNEcmF3QnVmZmVycygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDBkZWI3NTAuLjE2MWMzNDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCkBAIC00NTAs
MTAgKzQ1MCw4IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8V2ViR0xQcm9ncmFtPiBtX2N1cnJlbnRQ
cm9ncmFtOwogICAgIFJlZlB0cjxXZWJHTEZyYW1lYnVmZmVyPiBtX2ZyYW1lYnVmZmVyQmluZGlu
ZzsKICAgICBSZWZQdHI8V2ViR0xSZW5kZXJidWZmZXI+IG1fcmVuZGVyYnVmZmVyQmluZGluZzsK
LSAgICBjbGFzcyBUZXh0dXJlVW5pdFN0YXRlIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFJlZlB0
cjxXZWJHTFRleHR1cmU+IG1fdGV4dHVyZTJEQmluZGluZzsKLSAgICAgICAgUmVmUHRyPFdlYkdM
VGV4dHVyZT4gbV90ZXh0dXJlQ3ViZU1hcEJpbmRpbmc7CisgICAgc3RydWN0IFRleHR1cmVVbml0
U3RhdGUgeworICAgICAgICBSZWZQdHI8V2ViR0xUZXh0dXJlPiBtX3RleHR1cmVCaW5kaW5nOwog
ICAgIH07CiAgICAgVmVjdG9yPFRleHR1cmVVbml0U3RhdGU+IG1fdGV4dHVyZVVuaXRzOwogICAg
IHVuc2lnbmVkIGxvbmcgbV9hY3RpdmVUZXh0dXJlVW5pdDsKLS0gCjEuNy45LjUKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>205172</attachid>
            <date>2013-06-21 04:57:21 -0700</date>
            <delta_ts>2013-06-27 00:05:12 -0700</delta_ts>
            <desc>Texture unit code refactoring</desc>
            <filename>texunit.patch</filename>
            <type>text/plain</type>
            <size>10382</size>
            <attacher name="Przemyslaw Szymanski">p.szymanski3</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2OWUzOWYzLi40OWRhZTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMg
QEAKKzIwMTMtMDYtMjEgIFByemVteXNsYXcgU3p5bWFuc2tpICA8cC5zenltYW5za2kzQHNhbXN1
bmcuY29tPgorCisgICAgICAgIFRleHR1cmVVbml0IGNvZGUgb3B0aW1pemF0aW9uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTc4NjgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0
aW5nIHRlc3RzCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp+V2ViR0xSZW5k
ZXJpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6
cmVzaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJpbmRU
ZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZGVsZXRl
VGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFBh
cmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmhhbmRs
ZU5QT1RUZXh0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OnZhbGlkYXRlVGV4dHVyZUJpbmRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpyZXN0b3JlQ3VycmVudFRleHR1cmUyRCk6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0Lmg6CisKIDIwMTMtMDYtMjEgIENocmlzdG9waGUgRHVt
ZXogIDxjaC5kdW1lekBzaXNhLnNhbXN1bmcuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIx
NTA2NjMpOiBVc2luZyB3ZWJraXRBdWRpb0NvbnRleHQgaW4gSW5zcGVjdG9yIG1ha2VzIGl0IHVu
ZGVmaW5lZCBldmVyeXdoZXJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCAyZWQ3ZDBiLi5jYTRiMDMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5j
cHAKQEAgLTYwOCwxMCArNjA4LDggQEAgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp+V2ViR0xSZW5k
ZXJpbmdDb250ZXh0KCkKICAgICBtX2ZyYW1lYnVmZmVyQmluZGluZyA9IDA7CiAgICAgbV9yZW5k
ZXJidWZmZXJCaW5kaW5nID0gMDsKIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90ZXh0
dXJlVW5pdHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgIG1fdGV4dHVyZVVuaXRzW2ldLm1fdGV4dHVy
ZTJEQmluZGluZyA9IDA7Ci0gICAgICBtX3RleHR1cmVVbml0c1tpXS5tX3RleHR1cmVDdWJlTWFw
QmluZGluZyA9IDA7Ci0gICAgfQorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90ZXh0dXJl
VW5pdHMuc2l6ZSgpOyArK2kpCisgICAgICAgIG1fdGV4dHVyZVVuaXRzW2ldLm1fdGV4dHVyZUJp
bmRpbmcgPSAwOwogCiAgICAgbV9ibGFja1RleHR1cmUyRCA9IDA7CiAgICAgbV9ibGFja1RleHR1
cmVDdWJlTWFwID0gMDsKQEAgLTgxNyw3ICs4MTUsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAgICAgfSBlbHNlCiAgICAgICAg
IG1fY29udGV4dC0+cmVzaGFwZSh3aWR0aCwgaGVpZ2h0KTsKIAotICAgIG1fY29udGV4dC0+Ymlu
ZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG9iamVjdE9yWmVybyhtX3Rl
eHR1cmVVbml0c1ttX2FjdGl2ZVRleHR1cmVVbml0XS5tX3RleHR1cmUyREJpbmRpbmcuZ2V0KCkp
KTsKKyAgICBtX2NvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
XzJELCBvYmplY3RPclplcm8obV90ZXh0dXJlVW5pdHNbbV9hY3RpdmVUZXh0dXJlVW5pdF0ubV90
ZXh0dXJlQmluZGluZy5nZXQoKSkpOwogICAgIG1fY29udGV4dC0+YmluZFJlbmRlcmJ1ZmZlcihH
cmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBvYmplY3RPclplcm8obV9yZW5kZXJidWZm
ZXJCaW5kaW5nLmdldCgpKSk7CiAgICAgaWYgKG1fZnJhbWVidWZmZXJCaW5kaW5nKQogICAgICAg
bV9jb250ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVS
LCBvYmplY3RPclplcm8obV9mcmFtZWJ1ZmZlckJpbmRpbmcuZ2V0KCkpKTsKQEAgLTEwMTUsMTQg
KzEwMTMsMTQgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJpbmRUZXh0dXJlKEdDM0Rl
bnVtIHRhcmdldCwgV2ViR0xUZXh0dXJlKiB0ZXh0dXJlLAogICAgIH0KICAgICBHQzNEaW50IG1h
eExldmVsID0gMDsKICAgICBpZiAodGFyZ2V0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
XzJEKSB7Ci0gICAgICAgIG1fdGV4dHVyZVVuaXRzW21fYWN0aXZlVGV4dHVyZVVuaXRdLm1fdGV4
dHVyZTJEQmluZGluZyA9IHRleHR1cmU7CisgICAgICAgIG1fdGV4dHVyZVVuaXRzW21fYWN0aXZl
VGV4dHVyZVVuaXRdLm1fdGV4dHVyZUJpbmRpbmcgPSB0ZXh0dXJlOwogICAgICAgICBtYXhMZXZl
bCA9IG1fbWF4VGV4dHVyZUxldmVsOwogCiAgICAgICAgIGlmIChtX2RyYXdpbmdCdWZmZXIgJiYg
IW1fYWN0aXZlVGV4dHVyZVVuaXQpCiAgICAgICAgICAgICBtX2RyYXdpbmdCdWZmZXItPnNldFRl
eHR1cmUyREJpbmRpbmcob2JqZWN0T3JaZXJvKHRleHR1cmUpKTsKIAogICAgIH0gZWxzZSBpZiAo
dGFyZ2V0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX0NVQkVfTUFQKSB7Ci0gICAgICAg
IG1fdGV4dHVyZVVuaXRzW21fYWN0aXZlVGV4dHVyZVVuaXRdLm1fdGV4dHVyZUN1YmVNYXBCaW5k
aW5nID0gdGV4dHVyZTsKKyAgICAgICAgbV90ZXh0dXJlVW5pdHNbbV9hY3RpdmVUZXh0dXJlVW5p
dF0ubV90ZXh0dXJlQmluZGluZyA9IHRleHR1cmU7CiAgICAgICAgIG1heExldmVsID0gbV9tYXhD
dWJlTWFwVGV4dHVyZUxldmVsOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVy
cm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0sICJiaW5kVGV4dHVyZSIsICJpbnZh
bGlkIHRhcmdldCIpOwpAQCAtMTYzNiwxMCArMTYzNCw4IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpkZWxldGVUZXh0dXJlKFdlYkdMVGV4dHVyZSogdGV4dHVyZSkKICAgICBpZiAoIWRl
bGV0ZU9iamVjdCh0ZXh0dXJlKSkKICAgICAgICAgcmV0dXJuOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbV90ZXh0dXJlVW5pdHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKHRleHR1
cmUgPT0gbV90ZXh0dXJlVW5pdHNbaV0ubV90ZXh0dXJlMkRCaW5kaW5nKQotICAgICAgICAgICAg
bV90ZXh0dXJlVW5pdHNbaV0ubV90ZXh0dXJlMkRCaW5kaW5nID0gMDsKLSAgICAgICAgaWYgKHRl
eHR1cmUgPT0gbV90ZXh0dXJlVW5pdHNbaV0ubV90ZXh0dXJlQ3ViZU1hcEJpbmRpbmcpCi0gICAg
ICAgICAgICBtX3RleHR1cmVVbml0c1tpXS5tX3RleHR1cmVDdWJlTWFwQmluZGluZyA9IDA7Cisg
ICAgICAgIGlmICh0ZXh0dXJlID09IG1fdGV4dHVyZVVuaXRzW2ldLm1fdGV4dHVyZUJpbmRpbmcp
CisgICAgICAgICAgICBtX3RleHR1cmVVbml0c1tpXS5tX3RleHR1cmVCaW5kaW5nID0gMDsKICAg
ICB9CiAgICAgaWYgKG1fZnJhbWVidWZmZXJCaW5kaW5nKQogICAgICAgICBtX2ZyYW1lYnVmZmVy
QmluZGluZy0+cmVtb3ZlQXR0YWNobWVudEZyb21Cb3VuZEZyYW1lYnVmZmVyKHRleHR1cmUpOwpA
QCAtMjY5Myw5ICsyNjg5LDkgQEAgV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
Z2V0UGFyYW1ldGVyKEdDM0RlbnVtIHBuYW1lLCBFeGNlcHRpb25Db2RlJgogICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0M0Q6OlNVQlBJWEVMX0JJVFM6CiAgICAgICAgIHJldHVybiBnZXRJbnRQYXJh
bWV0ZXIocG5hbWUpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfQklORElO
R18yRDoKLSAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMVGV4dHVy
ZT4obV90ZXh0dXJlVW5pdHNbbV9hY3RpdmVUZXh0dXJlVW5pdF0ubV90ZXh0dXJlMkRCaW5kaW5n
KSk7CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oUGFzc1JlZlB0cjxXZWJHTFRleHR1cmU+
KG1fdGV4dHVyZVVuaXRzW21fYWN0aXZlVGV4dHVyZVVuaXRdLm1fdGV4dHVyZUJpbmRpbmcpKTsK
ICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVA6Ci0g
ICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oUGFzc1JlZlB0cjxXZWJHTFRleHR1cmU+KG1fdGV4
dHVyZVVuaXRzW21fYWN0aXZlVGV4dHVyZVVuaXRdLm1fdGV4dHVyZUN1YmVNYXBCaW5kaW5nKSk7
CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oUGFzc1JlZlB0cjxXZWJHTFRleHR1cmU+KG1f
dGV4dHVyZVVuaXRzW21fYWN0aXZlVGV4dHVyZVVuaXRdLm1fdGV4dHVyZUJpbmRpbmcpKTsKICAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpVTlBBQ0tfQUxJR05NRU5UOgogICAgICAgICByZXR1
cm4gZ2V0SW50UGFyYW1ldGVyKHBuYW1lKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpV
TlBBQ0tfRkxJUF9ZX1dFQkdMOgpAQCAtNDgwMyw4ICs0Nzk5LDcgQEAgdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmhhbmRsZU5QT1RUZXh0dXJlcyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUs
IGJvb2wgcHIKIHsKICAgICBib29sIHJlc2V0QWN0aXZlVW5pdCA9IGZhbHNlOwogICAgIGZvciAo
dW5zaWduZWQgaWkgPSAwOyBpaSA8IG1fdGV4dHVyZVVuaXRzLnNpemUoKTsgKytpaSkgewotICAg
ICAgICBpZiAoKG1fdGV4dHVyZVVuaXRzW2lpXS5tX3RleHR1cmUyREJpbmRpbmcgJiYgbV90ZXh0
dXJlVW5pdHNbaWldLm1fdGV4dHVyZTJEQmluZGluZy0+bmVlZFRvVXNlQmxhY2tUZXh0dXJlKCkp
Ci0gICAgICAgICAgICB8fCAobV90ZXh0dXJlVW5pdHNbaWldLm1fdGV4dHVyZUN1YmVNYXBCaW5k
aW5nICYmIG1fdGV4dHVyZVVuaXRzW2lpXS5tX3RleHR1cmVDdWJlTWFwQmluZGluZy0+bmVlZFRv
VXNlQmxhY2tUZXh0dXJlKCkpKSB7CisgICAgICAgIGlmIChtX3RleHR1cmVVbml0c1tpaV0ubV90
ZXh0dXJlQmluZGluZyAmJiBtX3RleHR1cmVVbml0c1tpaV0ubV90ZXh0dXJlQmluZGluZy0+bmVl
ZFRvVXNlQmxhY2tUZXh0dXJlKCkpIHsKICAgICAgICAgICAgIGlmIChpaSAhPSBtX2FjdGl2ZVRl
eHR1cmVVbml0KSB7CiAgICAgICAgICAgICAgICAgbV9jb250ZXh0LT5hY3RpdmVUZXh0dXJlKGlp
KTsKICAgICAgICAgICAgICAgICByZXNldEFjdGl2ZVVuaXQgPSB0cnVlOwpAQCAtNDgxMiwyMiAr
NDgwNywxOSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6aGFuZGxlTlBPVFRleHR1cmVz
KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgYm9vbCBwcgogICAgICAgICAgICAgICAgIG1fY29u
dGV4dC0+YWN0aXZlVGV4dHVyZShpaSk7CiAgICAgICAgICAgICAgICAgcmVzZXRBY3RpdmVVbml0
ID0gZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBXZWJHTFRleHR1cmUqIHRleDJE
OwotICAgICAgICAgICAgV2ViR0xUZXh0dXJlKiB0ZXhDdWJlTWFwOworICAgICAgICAgICAgV2Vi
R0xUZXh0dXJlKiB0ZXh0dXJlID0gMDsKKyAgICAgICAgICAgIGNvbnN0IEdDM0RlbnVtIHRhcmdl
dCA9IG1fdGV4dHVyZVVuaXRzW2lpXS5tX3RleHR1cmVCaW5kaW5nLT5nZXRUYXJnZXQoKTsKICAg
ICAgICAgICAgIGlmIChwcmVwYXJlVG9EcmF3KSB7CiAgICAgICAgICAgICAgICAgU3RyaW5nIG1z
ZyhTdHJpbmcoInRleHR1cmUgYm91bmQgdG8gdGV4dHVyZSB1bml0ICIpICsgU3RyaW5nOjpudW1i
ZXIoaWkpCiAgICAgICAgICAgICAgICAgICAgICsgIiBpcyBub3QgcmVuZGVyYWJsZS4gSXQgbWF5
YmUgbm9uLXBvd2VyLW9mLTIgYW5kIGhhdmUgaW5jb21wYXRpYmxlIHRleHR1cmUgZmlsdGVyaW5n
IG9yIGlzIG5vdCAndGV4dHVyZSBjb21wbGV0ZSciKTsKICAgICAgICAgICAgICAgICBwcmludEdM
V2FybmluZ1RvQ29uc29sZShmdW5jdGlvbk5hbWUsIG1zZy51dGY4KCkuZGF0YSgpKTsKLSAgICAg
ICAgICAgICAgICB0ZXgyRCA9IG1fYmxhY2tUZXh0dXJlMkQuZ2V0KCk7Ci0gICAgICAgICAgICAg
ICAgdGV4Q3ViZU1hcCA9IG1fYmxhY2tUZXh0dXJlQ3ViZU1hcC5nZXQoKTsKLSAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgdGV4MkQgPSBtX3RleHR1cmVVbml0c1tpaV0ubV90
ZXh0dXJlMkRCaW5kaW5nLmdldCgpOwotICAgICAgICAgICAgICAgIHRleEN1YmVNYXAgPSBtX3Rl
eHR1cmVVbml0c1tpaV0ubV90ZXh0dXJlQ3ViZU1hcEJpbmRpbmcuZ2V0KCk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBpZiAobV90ZXh0dXJlVW5pdHNbaWldLm1fdGV4dHVyZTJEQmluZGlu
ZyAmJiBtX3RleHR1cmVVbml0c1tpaV0ubV90ZXh0dXJlMkRCaW5kaW5nLT5uZWVkVG9Vc2VCbGFj
a1RleHR1cmUoKSkKLSAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBvYmplY3RPclplcm8odGV4MkQpKTsKLSAgICAgICAg
ICAgIGlmIChtX3RleHR1cmVVbml0c1tpaV0ubV90ZXh0dXJlQ3ViZU1hcEJpbmRpbmcgJiYgbV90
ZXh0dXJlVW5pdHNbaWldLm1fdGV4dHVyZUN1YmVNYXBCaW5kaW5nLT5uZWVkVG9Vc2VCbGFja1Rl
eHR1cmUoKSkKLSAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFX0NVQkVfTUFQLCBvYmplY3RPclplcm8odGV4Q3ViZU1hcCkpOwor
ICAgICAgICAgICAgICAgIGlmICh0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
MkQpCisgICAgICAgICAgICAgICAgICAgIHRleHR1cmUgPSBtX2JsYWNrVGV4dHVyZTJELmdldCgp
OworICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRhcmdldCA9PSBHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV9DVUJFX01BUCkKKyAgICAgICAgICAgICAgICAgICAgdGV4dHVyZSA9IG1fYmxhY2tU
ZXh0dXJlQ3ViZU1hcC5nZXQoKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAg
IHRleHR1cmUgPSBtX3RleHR1cmVVbml0c1tpaV0ubV90ZXh0dXJlQmluZGluZy5nZXQoKTsKKyAg
ICAgICAgICAgIG1fY29udGV4dC0+YmluZFRleHR1cmUodGFyZ2V0LCBvYmplY3RPclplcm8odGV4
dHVyZSkpOwogICAgICAgICB9CiAgICAgfQogICAgIGlmIChyZXNldEFjdGl2ZVVuaXQpCkBAIC00
ODkyLDEwICs0ODg0LDggQEAgaW50IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0Qm91bmRGcmFt
ZWJ1ZmZlckhlaWdodCgpCiAKIFdlYkdMVGV4dHVyZSogV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2
YWxpZGF0ZVRleHR1cmVCaW5kaW5nKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0MzRGVudW0g
dGFyZ2V0LCBib29sIHVzZVNpeEVudW1zRm9yQ3ViZU1hcCkKIHsKLSAgICBXZWJHTFRleHR1cmUq
IHRleCA9IDA7CiAgICAgc3dpdGNoICh0YXJnZXQpIHsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFXzJEOgotICAgICAgICB0ZXggPSBtX3RleHR1cmVVbml0c1ttX2FjdGl2ZVRl
eHR1cmVVbml0XS5tX3RleHR1cmUyREJpbmRpbmcuZ2V0KCk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWDoKICAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1g6CkBA
IC00OTA3LDE5ICs0ODk3LDE4IEBAIFdlYkdMVGV4dHVyZSogV2ViR0xSZW5kZXJpbmdDb250ZXh0
Ojp2YWxpZGF0ZVRleHR1cmVCaW5kaW5nKGNvbnN0IGNoYXIqIGZ1bmN0aW9uCiAgICAgICAgICAg
ICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNLCBmdW5j
dGlvbk5hbWUsICJpbnZhbGlkIHRleHR1cmUgdGFyZ2V0Iik7CiAgICAgICAgICAgICByZXR1cm4g
MDsKICAgICAgICAgfQotICAgICAgICB0ZXggPSBtX3RleHR1cmVVbml0c1ttX2FjdGl2ZVRleHR1
cmVVbml0XS5tX3RleHR1cmVDdWJlTWFwQmluZGluZy5nZXQoKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9DVUJFX01BUDoKICAgICAgICAgaWYg
KHVzZVNpeEVudW1zRm9yQ3ViZU1hcCkgewogICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3Io
R3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSwgZnVuY3Rpb25OYW1lLCAiaW52YWxpZCB0
ZXh0dXJlIHRhcmdldCIpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KLSAgICAg
ICAgdGV4ID0gbV90ZXh0dXJlVW5pdHNbbV9hY3RpdmVUZXh0dXJlVW5pdF0ubV90ZXh0dXJlQ3Vi
ZU1hcEJpbmRpbmcuZ2V0KCk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAg
IHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0sIGZ1bmN0
aW9uTmFtZSwgImludmFsaWQgdGV4dHVyZSB0YXJnZXQiKTsKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgfQorICAgIFdlYkdMVGV4dHVyZSogdGV4ID0gbV90ZXh0dXJlVW5pdHNbbV9hY3RpdmVUZXh0
dXJlVW5pdF0ubV90ZXh0dXJlQmluZGluZy5nZXQoKTsKICAgICBpZiAoIXRleCkKICAgICAgICAg
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OLCBm
dW5jdGlvbk5hbWUsICJubyB0ZXh0dXJlIik7CiAgICAgcmV0dXJuIHRleDsKQEAgLTYwMzAsNyAr
NjAxOSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpyZXN0b3JlQ3VycmVudEZyYW1l
YnVmZmVyKCkKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpyZXN0b3JlQ3VycmVudFRleHR1
cmUyRCgpCiB7CiAgICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAgICBiaW5kVGV4dHVyZShHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV90ZXh0dXJlVW5pdHNbbV9hY3RpdmVUZXh0dXJlVW5p
dF0ubV90ZXh0dXJlMkRCaW5kaW5nLmdldCgpLCBlYyk7CisgICAgYmluZFRleHR1cmUoR3JhcGhp
Y3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fdGV4dHVyZVVuaXRzW21fYWN0aXZlVGV4dHVyZVVu
aXRdLm1fdGV4dHVyZUJpbmRpbmcuZ2V0KCksIGVjKTsKIH0KIAogYm9vbCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OnN1cHBvcnRzRHJhd0J1ZmZlcnMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAppbmRleCAwZGViNzUwLi4xNjFjMzQ5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHQuaApAQCAtNDUwLDEwICs0NTAsOCBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPFdlYkdMUHJv
Z3JhbT4gbV9jdXJyZW50UHJvZ3JhbTsKICAgICBSZWZQdHI8V2ViR0xGcmFtZWJ1ZmZlcj4gbV9m
cmFtZWJ1ZmZlckJpbmRpbmc7CiAgICAgUmVmUHRyPFdlYkdMUmVuZGVyYnVmZmVyPiBtX3JlbmRl
cmJ1ZmZlckJpbmRpbmc7Ci0gICAgY2xhc3MgVGV4dHVyZVVuaXRTdGF0ZSB7Ci0gICAgcHVibGlj
OgotICAgICAgICBSZWZQdHI8V2ViR0xUZXh0dXJlPiBtX3RleHR1cmUyREJpbmRpbmc7Ci0gICAg
ICAgIFJlZlB0cjxXZWJHTFRleHR1cmU+IG1fdGV4dHVyZUN1YmVNYXBCaW5kaW5nOworICAgIHN0
cnVjdCBUZXh0dXJlVW5pdFN0YXRlIHsKKyAgICAgICAgUmVmUHRyPFdlYkdMVGV4dHVyZT4gbV90
ZXh0dXJlQmluZGluZzsKICAgICB9OwogICAgIFZlY3RvcjxUZXh0dXJlVW5pdFN0YXRlPiBtX3Rl
eHR1cmVVbml0czsKICAgICB1bnNpZ25lZCBsb25nIG1fYWN0aXZlVGV4dHVyZVVuaXQ7Ci0tIAox
LjcuOS41Cgo=
</data>
<flag name="review"
          id="226652"
          type_id="1"
          status="-"
          setter="noam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>205571</attachid>
            <date>2013-06-27 00:32:44 -0700</date>
            <delta_ts>2013-07-01 02:45:36 -0700</delta_ts>
            <desc>Texture unit code refactoring</desc>
            <filename>texunit.patch</filename>
            <type>text/plain</type>
            <size>10613</size>
            <attacher name="Przemyslaw Szymanski">p.szymanski3</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyNmNhYTgwLi43YzlmMDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjgg
QEAKKzIwMTMtMDYtMjYgIFByemVteXNsYXcgU3p5bWFuc2tpICA8cC5zenltYW5za2kzQHNhbXN1
bmcuY29tPgorCisgICAgICAgIFRleHR1cmVVbml0IGNvZGUgb3B0aW1pemF0aW9uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTc4NjgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBY2NvcmRpbmcgdG8gT3Bl
bkdMIEVTIDIuMCBzcGVjaWZpY2F0aW9uIHRoZXJlIGlzIG5vdCBwb3NzaWJsZSB0byB1c2UgYm90
aAorICAgICAgICB0ZXh0dXJlMkQgYW5kIHRleHR1cmVDdWJlTWFwIGluIG9uZSB0ZXh0dXJlIHVu
aXQuCisgICAgICAgIFRoaXMgcGF0Y2ggcmVkdWNlcyBhbW91bnQgb2YgY29kZSwgc2xpZ2h0bHkg
aW5jcmVhc2VzIHJlbmRlcmluZyBwZXJmb3JtYW5jZQorICAgICAgICBhbmQgbWFrZXMgV2ViS2l0
IG1vcmUgY29uc2lzdGVudCB3aXRoIE9wZW5HTAorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gQ292
ZXJlZCBieSBleGlzdGluZyB0ZXN0cworCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dDo6fldlYkdMUmVuZGVyaW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OnJlc2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpiaW5kVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmRlbGV0ZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpnZXRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpoYW5kbGVOUE9UVGV4dHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZVRleHR1cmVCaW5kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6cmVzdG9yZUN1cnJlbnRUZXh0dXJlMkQpOgorICAgICAg
ICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oOgorCiAyMDEzLTA2LTI2ICBD
aHJpc3RvcGhlIER1bWV6ICA8Y2guZHVtZXpAc2lzYS5zYW1zdW5nLmNvbT4KIAogICAgICAgICBS
ZW5hbWUgV29ya2VyQ29udGV4dCB0byBXb3JrZXJHbG9iYWxTY29wZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggNGY0
MTJiOS4uYzliMTE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC02MDcsMTAgKzYwNyw4IEBAIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6fldlYkdMUmVuZGVyaW5nQ29udGV4dCgpCiAgICAgbV9mcmFtZWJ1ZmZlckJp
bmRpbmcgPSAwOwogICAgIG1fcmVuZGVyYnVmZmVyQmluZGluZyA9IDA7CiAKLSAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG1fdGV4dHVyZVVuaXRzLnNpemUoKTsgKytpKSB7Ci0gICAgICBtX3Rl
eHR1cmVVbml0c1tpXS5tX3RleHR1cmUyREJpbmRpbmcgPSAwOwotICAgICAgbV90ZXh0dXJlVW5p
dHNbaV0ubV90ZXh0dXJlQ3ViZU1hcEJpbmRpbmcgPSAwOwotICAgIH0KKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fdGV4dHVyZVVuaXRzLnNpemUoKTsgKytpKQorICAgICAgICBtX3RleHR1
cmVVbml0c1tpXS5tX3RleHR1cmVCaW5kaW5nID0gMDsKIAogICAgIG1fYmxhY2tUZXh0dXJlMkQg
PSAwOwogICAgIG1fYmxhY2tUZXh0dXJlQ3ViZU1hcCA9IDA7CkBAIC04MTYsNyArODE0LDcgQEAg
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0
KQogICAgIH0gZWxzZQogICAgICAgICBtX2NvbnRleHQtPnJlc2hhcGUod2lkdGgsIGhlaWdodCk7
CiAKLSAgICBtX2NvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
XzJELCBvYmplY3RPclplcm8obV90ZXh0dXJlVW5pdHNbbV9hY3RpdmVUZXh0dXJlVW5pdF0ubV90
ZXh0dXJlMkRCaW5kaW5nLmdldCgpKSk7CisgICAgbV9jb250ZXh0LT5iaW5kVGV4dHVyZShHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgb2JqZWN0T3JaZXJvKG1fdGV4dHVyZVVuaXRzW21f
YWN0aXZlVGV4dHVyZVVuaXRdLm1fdGV4dHVyZUJpbmRpbmcuZ2V0KCkpKTsKICAgICBtX2NvbnRl
eHQtPmJpbmRSZW5kZXJidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgb2Jq
ZWN0T3JaZXJvKG1fcmVuZGVyYnVmZmVyQmluZGluZy5nZXQoKSkpOwogICAgIGlmIChtX2ZyYW1l
YnVmZmVyQmluZGluZykKICAgICAgIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNz
Q29udGV4dDNEOjpGUkFNRUJVRkZFUiwgb2JqZWN0T3JaZXJvKG1fZnJhbWVidWZmZXJCaW5kaW5n
LmdldCgpKSk7CkBAIC0xMDE0LDE0ICsxMDEyLDE0IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpiaW5kVGV4dHVyZShHQzNEZW51bSB0YXJnZXQsIFdlYkdMVGV4dHVyZSogdGV4dHVyZSwK
ICAgICB9CiAgICAgR0MzRGludCBtYXhMZXZlbCA9IDA7CiAgICAgaWYgKHRhcmdldCA9PSBHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCkgewotICAgICAgICBtX3RleHR1cmVVbml0c1ttX2Fj
dGl2ZVRleHR1cmVVbml0XS5tX3RleHR1cmUyREJpbmRpbmcgPSB0ZXh0dXJlOworICAgICAgICBt
X3RleHR1cmVVbml0c1ttX2FjdGl2ZVRleHR1cmVVbml0XS5tX3RleHR1cmVCaW5kaW5nID0gdGV4
dHVyZTsKICAgICAgICAgbWF4TGV2ZWwgPSBtX21heFRleHR1cmVMZXZlbDsKIAogICAgICAgICBp
ZiAobV9kcmF3aW5nQnVmZmVyICYmICFtX2FjdGl2ZVRleHR1cmVVbml0KQogICAgICAgICAgICAg
bV9kcmF3aW5nQnVmZmVyLT5zZXRUZXh0dXJlMkRCaW5kaW5nKG9iamVjdE9yWmVybyh0ZXh0dXJl
KSk7CiAKICAgICB9IGVsc2UgaWYgKHRhcmdldCA9PSBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV9DVUJFX01BUCkgewotICAgICAgICBtX3RleHR1cmVVbml0c1ttX2FjdGl2ZVRleHR1cmVVbml0
XS5tX3RleHR1cmVDdWJlTWFwQmluZGluZyA9IHRleHR1cmU7CisgICAgICAgIG1fdGV4dHVyZVVu
aXRzW21fYWN0aXZlVGV4dHVyZVVuaXRdLm1fdGV4dHVyZUJpbmRpbmcgPSB0ZXh0dXJlOwogICAg
ICAgICBtYXhMZXZlbCA9IG1fbWF4Q3ViZU1hcFRleHR1cmVMZXZlbDsKICAgICB9IGVsc2Ugewog
ICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVN
LCAiYmluZFRleHR1cmUiLCAiaW52YWxpZCB0YXJnZXQiKTsKQEAgLTE2MzUsMTAgKzE2MzMsOCBA
QCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZGVsZXRlVGV4dHVyZShXZWJHTFRleHR1cmUq
IHRleHR1cmUpCiAgICAgaWYgKCFkZWxldGVPYmplY3QodGV4dHVyZSkpCiAgICAgICAgIHJldHVy
bjsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fdGV4dHVyZVVuaXRzLnNpemUoKTsgKytp
KSB7Ci0gICAgICAgIGlmICh0ZXh0dXJlID09IG1fdGV4dHVyZVVuaXRzW2ldLm1fdGV4dHVyZTJE
QmluZGluZykKLSAgICAgICAgICAgIG1fdGV4dHVyZVVuaXRzW2ldLm1fdGV4dHVyZTJEQmluZGlu
ZyA9IDA7Ci0gICAgICAgIGlmICh0ZXh0dXJlID09IG1fdGV4dHVyZVVuaXRzW2ldLm1fdGV4dHVy
ZUN1YmVNYXBCaW5kaW5nKQotICAgICAgICAgICAgbV90ZXh0dXJlVW5pdHNbaV0ubV90ZXh0dXJl
Q3ViZU1hcEJpbmRpbmcgPSAwOworICAgICAgICBpZiAodGV4dHVyZSA9PSBtX3RleHR1cmVVbml0
c1tpXS5tX3RleHR1cmVCaW5kaW5nKQorICAgICAgICAgICAgbV90ZXh0dXJlVW5pdHNbaV0ubV90
ZXh0dXJlQmluZGluZyA9IDA7CiAgICAgfQogICAgIGlmIChtX2ZyYW1lYnVmZmVyQmluZGluZykK
ICAgICAgICAgbV9mcmFtZWJ1ZmZlckJpbmRpbmctPnJlbW92ZUF0dGFjaG1lbnRGcm9tQm91bmRG
cmFtZWJ1ZmZlcih0ZXh0dXJlKTsKQEAgLTI2OTIsOSArMjY4OCw5IEBAIFdlYkdMR2V0SW5mbyBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFBhcmFtZXRlcihHQzNEZW51bSBwbmFtZSwgRXhjZXB0
aW9uQ29kZSYKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTVUJQSVhFTF9CSVRTOgogICAg
ICAgICByZXR1cm4gZ2V0SW50UGFyYW1ldGVyKHBuYW1lKTsKICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFX0JJTkRJTkdfMkQ6Ci0gICAgICAgIHJldHVybiBXZWJHTEdldEluZm8o
UGFzc1JlZlB0cjxXZWJHTFRleHR1cmU+KG1fdGV4dHVyZVVuaXRzW21fYWN0aXZlVGV4dHVyZVVu
aXRdLm1fdGV4dHVyZTJEQmluZGluZykpOworICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKFBh
c3NSZWZQdHI8V2ViR0xUZXh0dXJlPihtX3RleHR1cmVVbml0c1ttX2FjdGl2ZVRleHR1cmVVbml0
XS5tX3RleHR1cmVCaW5kaW5nKSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV9CSU5ESU5HX0NVQkVfTUFQOgotICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKFBhc3NSZWZQ
dHI8V2ViR0xUZXh0dXJlPihtX3RleHR1cmVVbml0c1ttX2FjdGl2ZVRleHR1cmVVbml0XS5tX3Rl
eHR1cmVDdWJlTWFwQmluZGluZykpOworICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKFBhc3NS
ZWZQdHI8V2ViR0xUZXh0dXJlPihtX3RleHR1cmVVbml0c1ttX2FjdGl2ZVRleHR1cmVVbml0XS5t
X3RleHR1cmVCaW5kaW5nKSk7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VU5QQUNLX0FM
SUdOTUVOVDoKICAgICAgICAgcmV0dXJuIGdldEludFBhcmFtZXRlcihwbmFtZSk7CiAgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHQzRDo6VU5QQUNLX0ZMSVBfWV9XRUJHTDoKQEAgLTQ4MDIsOCArNDc5
OCw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpoYW5kbGVOUE9UVGV4dHVyZXMoY29u
c3QgY2hhciogZnVuY3Rpb25OYW1lLCBib29sIHByCiB7CiAgICAgYm9vbCByZXNldEFjdGl2ZVVu
aXQgPSBmYWxzZTsKICAgICBmb3IgKHVuc2lnbmVkIGlpID0gMDsgaWkgPCBtX3RleHR1cmVVbml0
cy5zaXplKCk7ICsraWkpIHsKLSAgICAgICAgaWYgKChtX3RleHR1cmVVbml0c1tpaV0ubV90ZXh0
dXJlMkRCaW5kaW5nICYmIG1fdGV4dHVyZVVuaXRzW2lpXS5tX3RleHR1cmUyREJpbmRpbmctPm5l
ZWRUb1VzZUJsYWNrVGV4dHVyZSgpKQotICAgICAgICAgICAgfHwgKG1fdGV4dHVyZVVuaXRzW2lp
XS5tX3RleHR1cmVDdWJlTWFwQmluZGluZyAmJiBtX3RleHR1cmVVbml0c1tpaV0ubV90ZXh0dXJl
Q3ViZU1hcEJpbmRpbmctPm5lZWRUb1VzZUJsYWNrVGV4dHVyZSgpKSkgeworICAgICAgICBpZiAo
bV90ZXh0dXJlVW5pdHNbaWldLm1fdGV4dHVyZUJpbmRpbmcgJiYgbV90ZXh0dXJlVW5pdHNbaWld
Lm1fdGV4dHVyZUJpbmRpbmctPm5lZWRUb1VzZUJsYWNrVGV4dHVyZSgpKSB7CiAgICAgICAgICAg
ICBpZiAoaWkgIT0gbV9hY3RpdmVUZXh0dXJlVW5pdCkgewogICAgICAgICAgICAgICAgIG1fY29u
dGV4dC0+YWN0aXZlVGV4dHVyZShpaSk7CiAgICAgICAgICAgICAgICAgcmVzZXRBY3RpdmVVbml0
ID0gdHJ1ZTsKQEAgLTQ4MTEsMjIgKzQ4MDYsMTkgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OmhhbmRsZU5QT1RUZXh0dXJlcyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGJvb2wgcHIK
ICAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmFjdGl2ZVRleHR1cmUoaWkpOwogICAgICAgICAg
ICAgICAgIHJlc2V0QWN0aXZlVW5pdCA9IGZhbHNlOwogICAgICAgICAgICAgfQotICAgICAgICAg
ICAgV2ViR0xUZXh0dXJlKiB0ZXgyRDsKLSAgICAgICAgICAgIFdlYkdMVGV4dHVyZSogdGV4Q3Vi
ZU1hcDsKKyAgICAgICAgICAgIFdlYkdMVGV4dHVyZSogdGV4dHVyZSA9IDA7CisgICAgICAgICAg
ICBHQzNEZW51bSB0YXJnZXQgPSBtX3RleHR1cmVVbml0c1tpaV0ubV90ZXh0dXJlQmluZGluZy0+
Z2V0VGFyZ2V0KCk7CiAgICAgICAgICAgICBpZiAocHJlcGFyZVRvRHJhdykgewogICAgICAgICAg
ICAgICAgIFN0cmluZyBtc2coU3RyaW5nKCJ0ZXh0dXJlIGJvdW5kIHRvIHRleHR1cmUgdW5pdCAi
KSArIFN0cmluZzo6bnVtYmVyKGlpKQogICAgICAgICAgICAgICAgICAgICArICIgaXMgbm90IHJl
bmRlcmFibGUuIEl0IG1heWJlIG5vbi1wb3dlci1vZi0yIGFuZCBoYXZlIGluY29tcGF0aWJsZSB0
ZXh0dXJlIGZpbHRlcmluZyBvciBpcyBub3QgJ3RleHR1cmUgY29tcGxldGUnIik7CiAgICAgICAg
ICAgICAgICAgcHJpbnRHTFdhcm5pbmdUb0NvbnNvbGUoZnVuY3Rpb25OYW1lLCBtc2cudXRmOCgp
LmRhdGEoKSk7Ci0gICAgICAgICAgICAgICAgdGV4MkQgPSBtX2JsYWNrVGV4dHVyZTJELmdldCgp
OwotICAgICAgICAgICAgICAgIHRleEN1YmVNYXAgPSBtX2JsYWNrVGV4dHVyZUN1YmVNYXAuZ2V0
KCk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHRleDJEID0gbV90ZXh0
dXJlVW5pdHNbaWldLm1fdGV4dHVyZTJEQmluZGluZy5nZXQoKTsKLSAgICAgICAgICAgICAgICB0
ZXhDdWJlTWFwID0gbV90ZXh0dXJlVW5pdHNbaWldLm1fdGV4dHVyZUN1YmVNYXBCaW5kaW5nLmdl
dCgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG1fdGV4dHVyZVVuaXRzW2lpXS5t
X3RleHR1cmUyREJpbmRpbmcgJiYgbV90ZXh0dXJlVW5pdHNbaWldLm1fdGV4dHVyZTJEQmluZGlu
Zy0+bmVlZFRvVXNlQmxhY2tUZXh0dXJlKCkpCi0gICAgICAgICAgICAgICAgbV9jb250ZXh0LT5i
aW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgb2JqZWN0T3JaZXJvKHRl
eDJEKSk7Ci0gICAgICAgICAgICBpZiAobV90ZXh0dXJlVW5pdHNbaWldLm1fdGV4dHVyZUN1YmVN
YXBCaW5kaW5nICYmIG1fdGV4dHVyZVVuaXRzW2lpXS5tX3RleHR1cmVDdWJlTWFwQmluZGluZy0+
bmVlZFRvVXNlQmxhY2tUZXh0dXJlKCkpCi0gICAgICAgICAgICAgICAgbV9jb250ZXh0LT5iaW5k
VGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9DVUJFX01BUCwgb2JqZWN0T3JaZXJv
KHRleEN1YmVNYXApKTsKKyAgICAgICAgICAgICAgICBpZiAodGFyZ2V0ID09IEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFXzJEKQorICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlID0gbV9ibGFj
a1RleHR1cmUyRC5nZXQoKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmICh0YXJnZXQgPT0gR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfQ1VCRV9NQVApCisgICAgICAgICAgICAgICAgICAgIHRl
eHR1cmUgPSBtX2JsYWNrVGV4dHVyZUN1YmVNYXAuZ2V0KCk7CisgICAgICAgICAgICB9IGVsc2UK
KyAgICAgICAgICAgICAgICB0ZXh0dXJlID0gbV90ZXh0dXJlVW5pdHNbaWldLm1fdGV4dHVyZUJp
bmRpbmcuZ2V0KCk7CisgICAgICAgICAgICBtX2NvbnRleHQtPmJpbmRUZXh0dXJlKHRhcmdldCwg
b2JqZWN0T3JaZXJvKHRleHR1cmUpKTsKICAgICAgICAgfQogICAgIH0KICAgICBpZiAocmVzZXRB
Y3RpdmVVbml0KQpAQCAtNDg5MSwxMCArNDg4Myw4IEBAIGludCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OmdldEJvdW5kRnJhbWVidWZmZXJIZWlnaHQoKQogCiBXZWJHTFRleHR1cmUqIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVUZXh0dXJlQmluZGluZyhjb25zdCBjaGFyKiBmdW5jdGlv
bk5hbWUsIEdDM0RlbnVtIHRhcmdldCwgYm9vbCB1c2VTaXhFbnVtc0ZvckN1YmVNYXApCiB7Ci0g
ICAgV2ViR0xUZXh0dXJlKiB0ZXggPSAwOwogICAgIHN3aXRjaCAodGFyZ2V0KSB7CiAgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRDoKLSAgICAgICAgdGV4ID0gbV90ZXh0dXJl
VW5pdHNbbV9hY3RpdmVUZXh0dXJlVW5pdF0ubV90ZXh0dXJlMkRCaW5kaW5nLmdldCgpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX0NVQkVfTUFQ
X1BPU0lUSVZFX1g6CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9DVUJFX01B
UF9ORUdBVElWRV9YOgpAQCAtNDkwNiwxOSArNDg5NiwxOCBAQCBXZWJHTFRleHR1cmUqIFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVUZXh0dXJlQmluZGluZyhjb25zdCBjaGFyKiBmdW5j
dGlvbgogICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklO
VkFMSURfRU5VTSwgZnVuY3Rpb25OYW1lLCAiaW52YWxpZCB0ZXh0dXJlIHRhcmdldCIpOwogICAg
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KLSAgICAgICAgdGV4ID0gbV90ZXh0dXJlVW5p
dHNbbV9hY3RpdmVUZXh0dXJlVW5pdF0ubV90ZXh0dXJlQ3ViZU1hcEJpbmRpbmcuZ2V0KCk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfQ1VCRV9N
QVA6CiAgICAgICAgIGlmICh1c2VTaXhFbnVtc0ZvckN1YmVNYXApIHsKICAgICAgICAgICAgIHN5
bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0sIGZ1bmN0aW9u
TmFtZSwgImludmFsaWQgdGV4dHVyZSB0YXJnZXQiKTsKICAgICAgICAgICAgIHJldHVybiAwOwog
ICAgICAgICB9Ci0gICAgICAgIHRleCA9IG1fdGV4dHVyZVVuaXRzW21fYWN0aXZlVGV4dHVyZVVu
aXRdLm1fdGV4dHVyZUN1YmVNYXBCaW5kaW5nLmdldCgpOwogICAgICAgICBicmVhazsKICAgICBk
ZWZhdWx0OgogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5W
QUxJRF9FTlVNLCBmdW5jdGlvbk5hbWUsICJpbnZhbGlkIHRleHR1cmUgdGFyZ2V0Iik7CiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KKyAgICBXZWJHTFRleHR1cmUqIHRleCA9IG1fdGV4dHVyZVVu
aXRzW21fYWN0aXZlVGV4dHVyZVVuaXRdLm1fdGV4dHVyZUJpbmRpbmcuZ2V0KCk7CiAgICAgaWYg
KCF0ZXgpCiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZB
TElEX09QRVJBVElPTiwgZnVuY3Rpb25OYW1lLCAibm8gdGV4dHVyZSIpOwogICAgIHJldHVybiB0
ZXg7CkBAIC02MDI5LDcgKzYwMTgsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6cmVz
dG9yZUN1cnJlbnRGcmFtZWJ1ZmZlcigpCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6cmVz
dG9yZUN1cnJlbnRUZXh0dXJlMkQoKQogewogICAgIEV4Y2VwdGlvbkNvZGUgZWM7Ci0gICAgYmlu
ZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fdGV4dHVyZVVuaXRzW21f
YWN0aXZlVGV4dHVyZVVuaXRdLm1fdGV4dHVyZTJEQmluZGluZy5nZXQoKSwgZWMpOworICAgIGJp
bmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX3RleHR1cmVVbml0c1tt
X2FjdGl2ZVRleHR1cmVVbml0XS5tX3RleHR1cmVCaW5kaW5nLmdldCgpLCBlYyk7CiB9CiAKIGJv
b2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpzdXBwb3J0c0RyYXdCdWZmZXJzKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgKaW5kZXgg
MzQ5OWZlOS4uNzhiYTA3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTQ0OSwxMCArNDQ5LDggQEAgcHVibGljOgogICAg
IFJlZlB0cjxXZWJHTFByb2dyYW0+IG1fY3VycmVudFByb2dyYW07CiAgICAgUmVmUHRyPFdlYkdM
RnJhbWVidWZmZXI+IG1fZnJhbWVidWZmZXJCaW5kaW5nOwogICAgIFJlZlB0cjxXZWJHTFJlbmRl
cmJ1ZmZlcj4gbV9yZW5kZXJidWZmZXJCaW5kaW5nOwotICAgIGNsYXNzIFRleHR1cmVVbml0U3Rh
dGUgewotICAgIHB1YmxpYzoKLSAgICAgICAgUmVmUHRyPFdlYkdMVGV4dHVyZT4gbV90ZXh0dXJl
MkRCaW5kaW5nOwotICAgICAgICBSZWZQdHI8V2ViR0xUZXh0dXJlPiBtX3RleHR1cmVDdWJlTWFw
QmluZGluZzsKKyAgICBzdHJ1Y3QgVGV4dHVyZVVuaXRTdGF0ZSB7CisgICAgICAgIFJlZlB0cjxX
ZWJHTFRleHR1cmU+IG1fdGV4dHVyZUJpbmRpbmc7CiAgICAgfTsKICAgICBWZWN0b3I8VGV4dHVy
ZVVuaXRTdGF0ZT4gbV90ZXh0dXJlVW5pdHM7CiAgICAgdW5zaWduZWQgbG9uZyBtX2FjdGl2ZVRl
eHR1cmVVbml0Owo=
</data>
<flag name="review"
          id="227130"
          type_id="1"
          status="+"
          setter="noam"
    />
    <flag name="commit-queue"
          id="227291"
          type_id="3"
          status="-"
          setter="noam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>205791</attachid>
            <date>2013-07-01 02:47:39 -0700</date>
            <delta_ts>2013-07-01 03:06:20 -0700</delta_ts>
            <desc>Texture unit code refactoring</desc>
            <filename>texunit.patch</filename>
            <type>text/plain</type>
            <size>10777</size>
            <attacher name="Przemyslaw Szymanski">p.szymanski3</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzY2JhODgwLi5lODU4ZmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAg
QEAKKzIwMTMtMDctMDEgIFByemVteXNsYXcgU3p5bWFuc2tpICA8cC5zenltYW5za2kzQHNhbXN1
bmcuY29tPgorCisgICAgICAgIFRleHR1cmVVbml0IGNvZGUgb3B0aW1pemF0aW9uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTc4NjgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOb2FtIFJvc2VudGhhbC4KKworICAgICAgICBBY2NvcmRpbmcgdG8gT3Bl
bkdMIEVTIDIuMCBzcGVjaWZpY2F0aW9uIHRoZXJlIGl0IGlzIG5vdCBwb3NzaWJsZSB0byB1c2Ug
Ym90aAorICAgICAgICB0ZXh0dXJlMkQgYW5kIHRleHR1cmVDdWJlTWFwIGluIG9uZSB0ZXh0dXJl
IHVuaXQuCisgICAgICAgIFRoaXMgcGF0Y2ggcmVkdWNlcyBhbW91bnQgb2YgY29kZSwgc2xpZ2h0
bHkgaW5jcmVhc2VzIHJlbmRlcmluZyBwZXJmb3JtYW5jZQorICAgICAgICBhbmQgbWFrZXMgV2Vi
S2l0IG1vcmUgY29uc2lzdGVudCB3aXRoIE9wZW5HTC4KKworICAgICAgICBObyBuZXcgdGVzdHMu
IENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHM6CisgICAgICAgIExheW91dFRlc3RzL3dlYmdsL2Nv
bmZvcm1hbmNlL3RleHR1cmVzL3RleC1pbWFnZS13ZWJnbC5odG1sCisgICAgICAgIExheW91dFRl
c3RzL3dlYmdsL2NvbmZvcm1hbmNlL3RleHR1cmVzL3RleHR1cmUtY29tcGxldGUuaHRtbAorCisg
ICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6fldlYkdMUmVuZGVyaW5nQ29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnJlc2hhcGUpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpiaW5kVGV4dHVyZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRlbGV0ZVRleHR1cmUpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQYXJhbWV0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpoYW5kbGVOUE9UVGV4dHVyZXMp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZVRleHR1
cmVCaW5kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6cmVz
dG9yZUN1cnJlbnRUZXh0dXJlMkQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dC5oOgorCiAyMDEzLTA2LTI5ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIEF2b2lkIGNhbGxpbmcgaW50byBPYmplY3RpdmUtQyBldmVy
eSB0aW1lIHdlIGdldCB0aGUgc2Nyb2xsYmFyIHdpZHRoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA0ZjQxMmI5Li5j
OWIxMTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dC5jcHAKQEAgLTYwNywxMCArNjA3LDggQEAgV2ViR0xSZW5kZXJpbmdDb250
ZXh0Ojp+V2ViR0xSZW5kZXJpbmdDb250ZXh0KCkKICAgICBtX2ZyYW1lYnVmZmVyQmluZGluZyA9
IDA7CiAgICAgbV9yZW5kZXJidWZmZXJCaW5kaW5nID0gMDsKIAotICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbV90ZXh0dXJlVW5pdHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgIG1fdGV4dHVyZVVu
aXRzW2ldLm1fdGV4dHVyZTJEQmluZGluZyA9IDA7Ci0gICAgICBtX3RleHR1cmVVbml0c1tpXS5t
X3RleHR1cmVDdWJlTWFwQmluZGluZyA9IDA7Ci0gICAgfQorICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV90ZXh0dXJlVW5pdHMuc2l6ZSgpOyArK2kpCisgICAgICAgIG1fdGV4dHVyZVVuaXRz
W2ldLm1fdGV4dHVyZUJpbmRpbmcgPSAwOwogCiAgICAgbV9ibGFja1RleHR1cmUyRCA9IDA7CiAg
ICAgbV9ibGFja1RleHR1cmVDdWJlTWFwID0gMDsKQEAgLTgxNiw3ICs4MTQsNyBAQCB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAgICAg
fSBlbHNlCiAgICAgICAgIG1fY29udGV4dC0+cmVzaGFwZSh3aWR0aCwgaGVpZ2h0KTsKIAotICAg
IG1fY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG9i
amVjdE9yWmVybyhtX3RleHR1cmVVbml0c1ttX2FjdGl2ZVRleHR1cmVVbml0XS5tX3RleHR1cmUy
REJpbmRpbmcuZ2V0KCkpKTsKKyAgICBtX2NvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFXzJELCBvYmplY3RPclplcm8obV90ZXh0dXJlVW5pdHNbbV9hY3RpdmVU
ZXh0dXJlVW5pdF0ubV90ZXh0dXJlQmluZGluZy5nZXQoKSkpOwogICAgIG1fY29udGV4dC0+Ymlu
ZFJlbmRlcmJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBvYmplY3RPclpl
cm8obV9yZW5kZXJidWZmZXJCaW5kaW5nLmdldCgpKSk7CiAgICAgaWYgKG1fZnJhbWVidWZmZXJC
aW5kaW5nKQogICAgICAgbV9jb250ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0
M0Q6OkZSQU1FQlVGRkVSLCBvYmplY3RPclplcm8obV9mcmFtZWJ1ZmZlckJpbmRpbmcuZ2V0KCkp
KTsKQEAgLTEwMTQsMTQgKzEwMTIsMTQgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJp
bmRUZXh0dXJlKEdDM0RlbnVtIHRhcmdldCwgV2ViR0xUZXh0dXJlKiB0ZXh0dXJlLAogICAgIH0K
ICAgICBHQzNEaW50IG1heExldmVsID0gMDsKICAgICBpZiAodGFyZ2V0ID09IEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFXzJEKSB7Ci0gICAgICAgIG1fdGV4dHVyZVVuaXRzW21fYWN0aXZlVGV4
dHVyZVVuaXRdLm1fdGV4dHVyZTJEQmluZGluZyA9IHRleHR1cmU7CisgICAgICAgIG1fdGV4dHVy
ZVVuaXRzW21fYWN0aXZlVGV4dHVyZVVuaXRdLm1fdGV4dHVyZUJpbmRpbmcgPSB0ZXh0dXJlOwog
ICAgICAgICBtYXhMZXZlbCA9IG1fbWF4VGV4dHVyZUxldmVsOwogCiAgICAgICAgIGlmIChtX2Ry
YXdpbmdCdWZmZXIgJiYgIW1fYWN0aXZlVGV4dHVyZVVuaXQpCiAgICAgICAgICAgICBtX2RyYXdp
bmdCdWZmZXItPnNldFRleHR1cmUyREJpbmRpbmcob2JqZWN0T3JaZXJvKHRleHR1cmUpKTsKIAog
ICAgIH0gZWxzZSBpZiAodGFyZ2V0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX0NVQkVf
TUFQKSB7Ci0gICAgICAgIG1fdGV4dHVyZVVuaXRzW21fYWN0aXZlVGV4dHVyZVVuaXRdLm1fdGV4
dHVyZUN1YmVNYXBCaW5kaW5nID0gdGV4dHVyZTsKKyAgICAgICAgbV90ZXh0dXJlVW5pdHNbbV9h
Y3RpdmVUZXh0dXJlVW5pdF0ubV90ZXh0dXJlQmluZGluZyA9IHRleHR1cmU7CiAgICAgICAgIG1h
eExldmVsID0gbV9tYXhDdWJlTWFwVGV4dHVyZUxldmVsOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0sICJiaW5k
VGV4dHVyZSIsICJpbnZhbGlkIHRhcmdldCIpOwpAQCAtMTYzNSwxMCArMTYzMyw4IEBAIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpkZWxldGVUZXh0dXJlKFdlYkdMVGV4dHVyZSogdGV4dHVy
ZSkKICAgICBpZiAoIWRlbGV0ZU9iamVjdCh0ZXh0dXJlKSkKICAgICAgICAgcmV0dXJuOwogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90ZXh0dXJlVW5pdHMuc2l6ZSgpOyArK2kpIHsKLSAg
ICAgICAgaWYgKHRleHR1cmUgPT0gbV90ZXh0dXJlVW5pdHNbaV0ubV90ZXh0dXJlMkRCaW5kaW5n
KQotICAgICAgICAgICAgbV90ZXh0dXJlVW5pdHNbaV0ubV90ZXh0dXJlMkRCaW5kaW5nID0gMDsK
LSAgICAgICAgaWYgKHRleHR1cmUgPT0gbV90ZXh0dXJlVW5pdHNbaV0ubV90ZXh0dXJlQ3ViZU1h
cEJpbmRpbmcpCi0gICAgICAgICAgICBtX3RleHR1cmVVbml0c1tpXS5tX3RleHR1cmVDdWJlTWFw
QmluZGluZyA9IDA7CisgICAgICAgIGlmICh0ZXh0dXJlID09IG1fdGV4dHVyZVVuaXRzW2ldLm1f
dGV4dHVyZUJpbmRpbmcpCisgICAgICAgICAgICBtX3RleHR1cmVVbml0c1tpXS5tX3RleHR1cmVC
aW5kaW5nID0gMDsKICAgICB9CiAgICAgaWYgKG1fZnJhbWVidWZmZXJCaW5kaW5nKQogICAgICAg
ICBtX2ZyYW1lYnVmZmVyQmluZGluZy0+cmVtb3ZlQXR0YWNobWVudEZyb21Cb3VuZEZyYW1lYnVm
ZmVyKHRleHR1cmUpOwpAQCAtMjY5Miw5ICsyNjg4LDkgQEAgV2ViR0xHZXRJbmZvIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6Z2V0UGFyYW1ldGVyKEdDM0RlbnVtIHBuYW1lLCBFeGNlcHRpb25Db2Rl
JgogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNVQlBJWEVMX0JJVFM6CiAgICAgICAgIHJl
dHVybiBnZXRJbnRQYXJhbWV0ZXIocG5hbWUpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfQklORElOR18yRDoKLSAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhQYXNzUmVm
UHRyPFdlYkdMVGV4dHVyZT4obV90ZXh0dXJlVW5pdHNbbV9hY3RpdmVUZXh0dXJlVW5pdF0ubV90
ZXh0dXJlMkRCaW5kaW5nKSk7CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oUGFzc1JlZlB0
cjxXZWJHTFRleHR1cmU+KG1fdGV4dHVyZVVuaXRzW21fYWN0aXZlVGV4dHVyZVVuaXRdLm1fdGV4
dHVyZUJpbmRpbmcpKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX0JJTkRJ
TkdfQ1VCRV9NQVA6Ci0gICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oUGFzc1JlZlB0cjxXZWJH
TFRleHR1cmU+KG1fdGV4dHVyZVVuaXRzW21fYWN0aXZlVGV4dHVyZVVuaXRdLm1fdGV4dHVyZUN1
YmVNYXBCaW5kaW5nKSk7CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oUGFzc1JlZlB0cjxX
ZWJHTFRleHR1cmU+KG1fdGV4dHVyZVVuaXRzW21fYWN0aXZlVGV4dHVyZVVuaXRdLm1fdGV4dHVy
ZUJpbmRpbmcpKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpVTlBBQ0tfQUxJR05NRU5U
OgogICAgICAgICByZXR1cm4gZ2V0SW50UGFyYW1ldGVyKHBuYW1lKTsKICAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dDNEOjpVTlBBQ0tfRkxJUF9ZX1dFQkdMOgpAQCAtNDgwMiw4ICs0Nzk4LDcgQEAg
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmhhbmRsZU5QT1RUZXh0dXJlcyhjb25zdCBjaGFy
KiBmdW5jdGlvbk5hbWUsIGJvb2wgcHIKIHsKICAgICBib29sIHJlc2V0QWN0aXZlVW5pdCA9IGZh
bHNlOwogICAgIGZvciAodW5zaWduZWQgaWkgPSAwOyBpaSA8IG1fdGV4dHVyZVVuaXRzLnNpemUo
KTsgKytpaSkgewotICAgICAgICBpZiAoKG1fdGV4dHVyZVVuaXRzW2lpXS5tX3RleHR1cmUyREJp
bmRpbmcgJiYgbV90ZXh0dXJlVW5pdHNbaWldLm1fdGV4dHVyZTJEQmluZGluZy0+bmVlZFRvVXNl
QmxhY2tUZXh0dXJlKCkpCi0gICAgICAgICAgICB8fCAobV90ZXh0dXJlVW5pdHNbaWldLm1fdGV4
dHVyZUN1YmVNYXBCaW5kaW5nICYmIG1fdGV4dHVyZVVuaXRzW2lpXS5tX3RleHR1cmVDdWJlTWFw
QmluZGluZy0+bmVlZFRvVXNlQmxhY2tUZXh0dXJlKCkpKSB7CisgICAgICAgIGlmIChtX3RleHR1
cmVVbml0c1tpaV0ubV90ZXh0dXJlQmluZGluZyAmJiBtX3RleHR1cmVVbml0c1tpaV0ubV90ZXh0
dXJlQmluZGluZy0+bmVlZFRvVXNlQmxhY2tUZXh0dXJlKCkpIHsKICAgICAgICAgICAgIGlmIChp
aSAhPSBtX2FjdGl2ZVRleHR1cmVVbml0KSB7CiAgICAgICAgICAgICAgICAgbV9jb250ZXh0LT5h
Y3RpdmVUZXh0dXJlKGlpKTsKICAgICAgICAgICAgICAgICByZXNldEFjdGl2ZVVuaXQgPSB0cnVl
OwpAQCAtNDgxMSwyMiArNDgwNiwxOSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6aGFu
ZGxlTlBPVFRleHR1cmVzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgYm9vbCBwcgogICAgICAg
ICAgICAgICAgIG1fY29udGV4dC0+YWN0aXZlVGV4dHVyZShpaSk7CiAgICAgICAgICAgICAgICAg
cmVzZXRBY3RpdmVVbml0ID0gZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBXZWJH
TFRleHR1cmUqIHRleDJEOwotICAgICAgICAgICAgV2ViR0xUZXh0dXJlKiB0ZXhDdWJlTWFwOwor
ICAgICAgICAgICAgV2ViR0xUZXh0dXJlKiB0ZXh0dXJlID0gMDsKKyAgICAgICAgICAgIEdDM0Rl
bnVtIHRhcmdldCA9IG1fdGV4dHVyZVVuaXRzW2lpXS5tX3RleHR1cmVCaW5kaW5nLT5nZXRUYXJn
ZXQoKTsKICAgICAgICAgICAgIGlmIChwcmVwYXJlVG9EcmF3KSB7CiAgICAgICAgICAgICAgICAg
U3RyaW5nIG1zZyhTdHJpbmcoInRleHR1cmUgYm91bmQgdG8gdGV4dHVyZSB1bml0ICIpICsgU3Ry
aW5nOjpudW1iZXIoaWkpCiAgICAgICAgICAgICAgICAgICAgICsgIiBpcyBub3QgcmVuZGVyYWJs
ZS4gSXQgbWF5YmUgbm9uLXBvd2VyLW9mLTIgYW5kIGhhdmUgaW5jb21wYXRpYmxlIHRleHR1cmUg
ZmlsdGVyaW5nIG9yIGlzIG5vdCAndGV4dHVyZSBjb21wbGV0ZSciKTsKICAgICAgICAgICAgICAg
ICBwcmludEdMV2FybmluZ1RvQ29uc29sZShmdW5jdGlvbk5hbWUsIG1zZy51dGY4KCkuZGF0YSgp
KTsKLSAgICAgICAgICAgICAgICB0ZXgyRCA9IG1fYmxhY2tUZXh0dXJlMkQuZ2V0KCk7Ci0gICAg
ICAgICAgICAgICAgdGV4Q3ViZU1hcCA9IG1fYmxhY2tUZXh0dXJlQ3ViZU1hcC5nZXQoKTsKLSAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgdGV4MkQgPSBtX3RleHR1cmVVbml0
c1tpaV0ubV90ZXh0dXJlMkRCaW5kaW5nLmdldCgpOwotICAgICAgICAgICAgICAgIHRleEN1YmVN
YXAgPSBtX3RleHR1cmVVbml0c1tpaV0ubV90ZXh0dXJlQ3ViZU1hcEJpbmRpbmcuZ2V0KCk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAobV90ZXh0dXJlVW5pdHNbaWldLm1fdGV4dHVy
ZTJEQmluZGluZyAmJiBtX3RleHR1cmVVbml0c1tpaV0ubV90ZXh0dXJlMkRCaW5kaW5nLT5uZWVk
VG9Vc2VCbGFja1RleHR1cmUoKSkKLSAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmJpbmRUZXh0
dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBvYmplY3RPclplcm8odGV4MkQpKTsK
LSAgICAgICAgICAgIGlmIChtX3RleHR1cmVVbml0c1tpaV0ubV90ZXh0dXJlQ3ViZU1hcEJpbmRp
bmcgJiYgbV90ZXh0dXJlVW5pdHNbaWldLm1fdGV4dHVyZUN1YmVNYXBCaW5kaW5nLT5uZWVkVG9V
c2VCbGFja1RleHR1cmUoKSkKLSAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmJpbmRUZXh0dXJl
KEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX0NVQkVfTUFQLCBvYmplY3RPclplcm8odGV4Q3Vi
ZU1hcCkpOworICAgICAgICAgICAgICAgIGlmICh0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQpCisgICAgICAgICAgICAgICAgICAgIHRleHR1cmUgPSBtX2JsYWNrVGV4dHVy
ZTJELmdldCgpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRhcmdldCA9PSBHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV9DVUJFX01BUCkKKyAgICAgICAgICAgICAgICAgICAgdGV4dHVyZSA9
IG1fYmxhY2tUZXh0dXJlQ3ViZU1hcC5nZXQoKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgICAgIHRleHR1cmUgPSBtX3RleHR1cmVVbml0c1tpaV0ubV90ZXh0dXJlQmluZGluZy5n
ZXQoKTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+YmluZFRleHR1cmUodGFyZ2V0LCBvYmplY3RP
clplcm8odGV4dHVyZSkpOwogICAgICAgICB9CiAgICAgfQogICAgIGlmIChyZXNldEFjdGl2ZVVu
aXQpCkBAIC00ODkxLDEwICs0ODgzLDggQEAgaW50IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0
Qm91bmRGcmFtZWJ1ZmZlckhlaWdodCgpCiAKIFdlYkdMVGV4dHVyZSogV2ViR0xSZW5kZXJpbmdD
b250ZXh0Ojp2YWxpZGF0ZVRleHR1cmVCaW5kaW5nKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwg
R0MzRGVudW0gdGFyZ2V0LCBib29sIHVzZVNpeEVudW1zRm9yQ3ViZU1hcCkKIHsKLSAgICBXZWJH
TFRleHR1cmUqIHRleCA9IDA7CiAgICAgc3dpdGNoICh0YXJnZXQpIHsKICAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJEOgotICAgICAgICB0ZXggPSBtX3RleHR1cmVVbml0c1tt
X2FjdGl2ZVRleHR1cmVVbml0XS5tX3RleHR1cmUyREJpbmRpbmcuZ2V0KCk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJ
VkVfWDoKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX0NVQkVfTUFQX05FR0FU
SVZFX1g6CkBAIC00OTA2LDE5ICs0ODk2LDE4IEBAIFdlYkdMVGV4dHVyZSogV2ViR0xSZW5kZXJp
bmdDb250ZXh0Ojp2YWxpZGF0ZVRleHR1cmVCaW5kaW5nKGNvbnN0IGNoYXIqIGZ1bmN0aW9uCiAg
ICAgICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9F
TlVNLCBmdW5jdGlvbk5hbWUsICJpbnZhbGlkIHRleHR1cmUgdGFyZ2V0Iik7CiAgICAgICAgICAg
ICByZXR1cm4gMDsKICAgICAgICAgfQotICAgICAgICB0ZXggPSBtX3RleHR1cmVVbml0c1ttX2Fj
dGl2ZVRleHR1cmVVbml0XS5tX3RleHR1cmVDdWJlTWFwQmluZGluZy5nZXQoKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9DVUJFX01BUDoKICAg
ICAgICAgaWYgKHVzZVNpeEVudW1zRm9yQ3ViZU1hcCkgewogICAgICAgICAgICAgc3ludGhlc2l6
ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSwgZnVuY3Rpb25OYW1lLCAi
aW52YWxpZCB0ZXh0dXJlIHRhcmdldCIpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAg
IH0KLSAgICAgICAgdGV4ID0gbV90ZXh0dXJlVW5pdHNbbV9hY3RpdmVUZXh0dXJlVW5pdF0ubV90
ZXh0dXJlQ3ViZU1hcEJpbmRpbmcuZ2V0KCk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VO
VU0sIGZ1bmN0aW9uTmFtZSwgImludmFsaWQgdGV4dHVyZSB0YXJnZXQiKTsKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgfQorICAgIFdlYkdMVGV4dHVyZSogdGV4ID0gbV90ZXh0dXJlVW5pdHNbbV9h
Y3RpdmVUZXh0dXJlVW5pdF0ubV90ZXh0dXJlQmluZGluZy5nZXQoKTsKICAgICBpZiAoIXRleCkK
ICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BF
UkFUSU9OLCBmdW5jdGlvbk5hbWUsICJubyB0ZXh0dXJlIik7CiAgICAgcmV0dXJuIHRleDsKQEAg
LTYwMjksNyArNjAxOCw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpyZXN0b3JlQ3Vy
cmVudEZyYW1lYnVmZmVyKCkKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpyZXN0b3JlQ3Vy
cmVudFRleHR1cmUyRCgpCiB7CiAgICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAgICBiaW5kVGV4dHVy
ZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV90ZXh0dXJlVW5pdHNbbV9hY3RpdmVU
ZXh0dXJlVW5pdF0ubV90ZXh0dXJlMkRCaW5kaW5nLmdldCgpLCBlYyk7CisgICAgYmluZFRleHR1
cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fdGV4dHVyZVVuaXRzW21fYWN0aXZl
VGV4dHVyZVVuaXRdLm1fdGV4dHVyZUJpbmRpbmcuZ2V0KCksIGVjKTsKIH0KIAogYm9vbCBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OnN1cHBvcnRzRHJhd0J1ZmZlcnMoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAppbmRleCAzNDk5ZmU5
Li43OGJhMDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHQuaApAQCAtNDQ5LDEwICs0NDksOCBAQCBwdWJsaWM6CiAgICAgUmVmUHRy
PFdlYkdMUHJvZ3JhbT4gbV9jdXJyZW50UHJvZ3JhbTsKICAgICBSZWZQdHI8V2ViR0xGcmFtZWJ1
ZmZlcj4gbV9mcmFtZWJ1ZmZlckJpbmRpbmc7CiAgICAgUmVmUHRyPFdlYkdMUmVuZGVyYnVmZmVy
PiBtX3JlbmRlcmJ1ZmZlckJpbmRpbmc7Ci0gICAgY2xhc3MgVGV4dHVyZVVuaXRTdGF0ZSB7Ci0g
ICAgcHVibGljOgotICAgICAgICBSZWZQdHI8V2ViR0xUZXh0dXJlPiBtX3RleHR1cmUyREJpbmRp
bmc7Ci0gICAgICAgIFJlZlB0cjxXZWJHTFRleHR1cmU+IG1fdGV4dHVyZUN1YmVNYXBCaW5kaW5n
OworICAgIHN0cnVjdCBUZXh0dXJlVW5pdFN0YXRlIHsKKyAgICAgICAgUmVmUHRyPFdlYkdMVGV4
dHVyZT4gbV90ZXh0dXJlQmluZGluZzsKICAgICB9OwogICAgIFZlY3RvcjxUZXh0dXJlVW5pdFN0
YXRlPiBtX3RleHR1cmVVbml0czsKICAgICB1bnNpZ25lZCBsb25nIG1fYWN0aXZlVGV4dHVyZVVu
aXQ7Cg==
</data>
<flag name="commit-queue"
          id="227392"
          type_id="3"
          status="-"
          setter="cdumez"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>205792</attachid>
            <date>2013-07-01 03:09:59 -0700</date>
            <delta_ts>2013-07-03 06:00:39 -0700</delta_ts>
            <desc>Texture unit code refactoring</desc>
            <filename>texunit.patch</filename>
            <type>text/plain</type>
            <size>10771</size>
            <attacher name="Przemyslaw Szymanski">p.szymanski3</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzY2JhODgwLi5hMDE1NmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAg
QEAKKzIwMTMtMDctMDEgIFByemVteXNsYXcgU3p5bWFuc2tpICA8cC5zenltYW5za2kzQHNhbXN1
bmcuY29tPgorCisgICAgICAgIFRleHR1cmVVbml0IGNvZGUgb3B0aW1pemF0aW9uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTc4NjgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOb2FtIFJvc2VudGhhbC4KKworICAgICAgICBBY2NvcmRpbmcgdG8gT3Bl
bkdMIEVTIDIuMCBzcGVjaWZpY2F0aW9uIGl0IGlzIG5vdCBwb3NzaWJsZSB0byB1c2UgYm90aAor
ICAgICAgICB0ZXh0dXJlMkQgYW5kIHRleHR1cmVDdWJlTWFwIGluIG9uZSB0ZXh0dXJlIHVuaXQu
CisgICAgICAgIFRoaXMgcGF0Y2ggcmVkdWNlcyBhbW91bnQgb2YgY29kZSwgc2xpZ2h0bHkgaW5j
cmVhc2VzIHJlbmRlcmluZyBwZXJmb3JtYW5jZQorICAgICAgICBhbmQgbWFrZXMgV2ViS2l0IG1v
cmUgY29uc2lzdGVudCB3aXRoIE9wZW5HTC4KKworICAgICAgICBObyBuZXcgdGVzdHMuIENvdmVy
ZWQgYnkgZXhpc3RpbmcgdGVzdHM6CisgICAgICAgIExheW91dFRlc3RzL3dlYmdsL2NvbmZvcm1h
bmNlL3RleHR1cmVzL3RleC1pbWFnZS13ZWJnbC5odG1sCisgICAgICAgIExheW91dFRlc3RzL3dl
YmdsL2NvbmZvcm1hbmNlL3RleHR1cmVzL3RleHR1cmUtY29tcGxldGUuaHRtbAorCisgICAgICAg
ICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6fldlYkdMUmVuZGVyaW5nQ29udGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnJlc2hhcGUpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpiaW5kVGV4dHVyZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRlbGV0ZVRleHR1cmUpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQYXJhbWV0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpoYW5kbGVOUE9UVGV4dHVyZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZVRleHR1cmVCaW5k
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6cmVzdG9yZUN1
cnJlbnRUZXh0dXJlMkQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dC5oOgorCiAyMDEzLTA2LTI5ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUu
Y29tPgogCiAgICAgICAgIEF2b2lkIGNhbGxpbmcgaW50byBPYmplY3RpdmUtQyBldmVyeSB0aW1l
IHdlIGdldCB0aGUgc2Nyb2xsYmFyIHdpZHRoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA0ZjQxMmI5Li5jOWIxMTZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5jcHAKQEAgLTYwNywxMCArNjA3LDggQEAgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp+
V2ViR0xSZW5kZXJpbmdDb250ZXh0KCkKICAgICBtX2ZyYW1lYnVmZmVyQmluZGluZyA9IDA7CiAg
ICAgbV9yZW5kZXJidWZmZXJCaW5kaW5nID0gMDsKIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbV90ZXh0dXJlVW5pdHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgIG1fdGV4dHVyZVVuaXRzW2ld
Lm1fdGV4dHVyZTJEQmluZGluZyA9IDA7Ci0gICAgICBtX3RleHR1cmVVbml0c1tpXS5tX3RleHR1
cmVDdWJlTWFwQmluZGluZyA9IDA7Ci0gICAgfQorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bV90ZXh0dXJlVW5pdHMuc2l6ZSgpOyArK2kpCisgICAgICAgIG1fdGV4dHVyZVVuaXRzW2ldLm1f
dGV4dHVyZUJpbmRpbmcgPSAwOwogCiAgICAgbV9ibGFja1RleHR1cmUyRCA9IDA7CiAgICAgbV9i
bGFja1RleHR1cmVDdWJlTWFwID0gMDsKQEAgLTgxNiw3ICs4MTQsNyBAQCB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAgICAgfSBlbHNl
CiAgICAgICAgIG1fY29udGV4dC0+cmVzaGFwZSh3aWR0aCwgaGVpZ2h0KTsKIAotICAgIG1fY29u
dGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG9iamVjdE9y
WmVybyhtX3RleHR1cmVVbml0c1ttX2FjdGl2ZVRleHR1cmVVbml0XS5tX3RleHR1cmUyREJpbmRp
bmcuZ2V0KCkpKTsKKyAgICBtX2NvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFXzJELCBvYmplY3RPclplcm8obV90ZXh0dXJlVW5pdHNbbV9hY3RpdmVUZXh0dXJl
VW5pdF0ubV90ZXh0dXJlQmluZGluZy5nZXQoKSkpOwogICAgIG1fY29udGV4dC0+YmluZFJlbmRl
cmJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBvYmplY3RPclplcm8obV9y
ZW5kZXJidWZmZXJCaW5kaW5nLmdldCgpKSk7CiAgICAgaWYgKG1fZnJhbWVidWZmZXJCaW5kaW5n
KQogICAgICAgbV9jb250ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZS
QU1FQlVGRkVSLCBvYmplY3RPclplcm8obV9mcmFtZWJ1ZmZlckJpbmRpbmcuZ2V0KCkpKTsKQEAg
LTEwMTQsMTQgKzEwMTIsMTQgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJpbmRUZXh0
dXJlKEdDM0RlbnVtIHRhcmdldCwgV2ViR0xUZXh0dXJlKiB0ZXh0dXJlLAogICAgIH0KICAgICBH
QzNEaW50IG1heExldmVsID0gMDsKICAgICBpZiAodGFyZ2V0ID09IEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFXzJEKSB7Ci0gICAgICAgIG1fdGV4dHVyZVVuaXRzW21fYWN0aXZlVGV4dHVyZVVu
aXRdLm1fdGV4dHVyZTJEQmluZGluZyA9IHRleHR1cmU7CisgICAgICAgIG1fdGV4dHVyZVVuaXRz
W21fYWN0aXZlVGV4dHVyZVVuaXRdLm1fdGV4dHVyZUJpbmRpbmcgPSB0ZXh0dXJlOwogICAgICAg
ICBtYXhMZXZlbCA9IG1fbWF4VGV4dHVyZUxldmVsOwogCiAgICAgICAgIGlmIChtX2RyYXdpbmdC
dWZmZXIgJiYgIW1fYWN0aXZlVGV4dHVyZVVuaXQpCiAgICAgICAgICAgICBtX2RyYXdpbmdCdWZm
ZXItPnNldFRleHR1cmUyREJpbmRpbmcob2JqZWN0T3JaZXJvKHRleHR1cmUpKTsKIAogICAgIH0g
ZWxzZSBpZiAodGFyZ2V0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX0NVQkVfTUFQKSB7
Ci0gICAgICAgIG1fdGV4dHVyZVVuaXRzW21fYWN0aXZlVGV4dHVyZVVuaXRdLm1fdGV4dHVyZUN1
YmVNYXBCaW5kaW5nID0gdGV4dHVyZTsKKyAgICAgICAgbV90ZXh0dXJlVW5pdHNbbV9hY3RpdmVU
ZXh0dXJlVW5pdF0ubV90ZXh0dXJlQmluZGluZyA9IHRleHR1cmU7CiAgICAgICAgIG1heExldmVs
ID0gbV9tYXhDdWJlTWFwVGV4dHVyZUxldmVsOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHN5bnRo
ZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0sICJiaW5kVGV4dHVy
ZSIsICJpbnZhbGlkIHRhcmdldCIpOwpAQCAtMTYzNSwxMCArMTYzMyw4IEBAIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpkZWxldGVUZXh0dXJlKFdlYkdMVGV4dHVyZSogdGV4dHVyZSkKICAg
ICBpZiAoIWRlbGV0ZU9iamVjdCh0ZXh0dXJlKSkKICAgICAgICAgcmV0dXJuOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbV90ZXh0dXJlVW5pdHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAg
aWYgKHRleHR1cmUgPT0gbV90ZXh0dXJlVW5pdHNbaV0ubV90ZXh0dXJlMkRCaW5kaW5nKQotICAg
ICAgICAgICAgbV90ZXh0dXJlVW5pdHNbaV0ubV90ZXh0dXJlMkRCaW5kaW5nID0gMDsKLSAgICAg
ICAgaWYgKHRleHR1cmUgPT0gbV90ZXh0dXJlVW5pdHNbaV0ubV90ZXh0dXJlQ3ViZU1hcEJpbmRp
bmcpCi0gICAgICAgICAgICBtX3RleHR1cmVVbml0c1tpXS5tX3RleHR1cmVDdWJlTWFwQmluZGlu
ZyA9IDA7CisgICAgICAgIGlmICh0ZXh0dXJlID09IG1fdGV4dHVyZVVuaXRzW2ldLm1fdGV4dHVy
ZUJpbmRpbmcpCisgICAgICAgICAgICBtX3RleHR1cmVVbml0c1tpXS5tX3RleHR1cmVCaW5kaW5n
ID0gMDsKICAgICB9CiAgICAgaWYgKG1fZnJhbWVidWZmZXJCaW5kaW5nKQogICAgICAgICBtX2Zy
YW1lYnVmZmVyQmluZGluZy0+cmVtb3ZlQXR0YWNobWVudEZyb21Cb3VuZEZyYW1lYnVmZmVyKHRl
eHR1cmUpOwpAQCAtMjY5Miw5ICsyNjg4LDkgQEAgV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6Z2V0UGFyYW1ldGVyKEdDM0RlbnVtIHBuYW1lLCBFeGNlcHRpb25Db2RlJgogICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNVQlBJWEVMX0JJVFM6CiAgICAgICAgIHJldHVybiBn
ZXRJbnRQYXJhbWV0ZXIocG5hbWUpOwogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfQklORElOR18yRDoKLSAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdl
YkdMVGV4dHVyZT4obV90ZXh0dXJlVW5pdHNbbV9hY3RpdmVUZXh0dXJlVW5pdF0ubV90ZXh0dXJl
MkRCaW5kaW5nKSk7CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oUGFzc1JlZlB0cjxXZWJH
TFRleHR1cmU+KG1fdGV4dHVyZVVuaXRzW21fYWN0aXZlVGV4dHVyZVVuaXRdLm1fdGV4dHVyZUJp
bmRpbmcpKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX0JJTkRJTkdfQ1VC
RV9NQVA6Ci0gICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oUGFzc1JlZlB0cjxXZWJHTFRleHR1
cmU+KG1fdGV4dHVyZVVuaXRzW21fYWN0aXZlVGV4dHVyZVVuaXRdLm1fdGV4dHVyZUN1YmVNYXBC
aW5kaW5nKSk7CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oUGFzc1JlZlB0cjxXZWJHTFRl
eHR1cmU+KG1fdGV4dHVyZVVuaXRzW21fYWN0aXZlVGV4dHVyZVVuaXRdLm1fdGV4dHVyZUJpbmRp
bmcpKTsKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpVTlBBQ0tfQUxJR05NRU5UOgogICAg
ICAgICByZXR1cm4gZ2V0SW50UGFyYW1ldGVyKHBuYW1lKTsKICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dDNEOjpVTlBBQ0tfRkxJUF9ZX1dFQkdMOgpAQCAtNDgwMiw4ICs0Nzk4LDcgQEAgdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmhhbmRsZU5QT1RUZXh0dXJlcyhjb25zdCBjaGFyKiBmdW5j
dGlvbk5hbWUsIGJvb2wgcHIKIHsKICAgICBib29sIHJlc2V0QWN0aXZlVW5pdCA9IGZhbHNlOwog
ICAgIGZvciAodW5zaWduZWQgaWkgPSAwOyBpaSA8IG1fdGV4dHVyZVVuaXRzLnNpemUoKTsgKytp
aSkgewotICAgICAgICBpZiAoKG1fdGV4dHVyZVVuaXRzW2lpXS5tX3RleHR1cmUyREJpbmRpbmcg
JiYgbV90ZXh0dXJlVW5pdHNbaWldLm1fdGV4dHVyZTJEQmluZGluZy0+bmVlZFRvVXNlQmxhY2tU
ZXh0dXJlKCkpCi0gICAgICAgICAgICB8fCAobV90ZXh0dXJlVW5pdHNbaWldLm1fdGV4dHVyZUN1
YmVNYXBCaW5kaW5nICYmIG1fdGV4dHVyZVVuaXRzW2lpXS5tX3RleHR1cmVDdWJlTWFwQmluZGlu
Zy0+bmVlZFRvVXNlQmxhY2tUZXh0dXJlKCkpKSB7CisgICAgICAgIGlmIChtX3RleHR1cmVVbml0
c1tpaV0ubV90ZXh0dXJlQmluZGluZyAmJiBtX3RleHR1cmVVbml0c1tpaV0ubV90ZXh0dXJlQmlu
ZGluZy0+bmVlZFRvVXNlQmxhY2tUZXh0dXJlKCkpIHsKICAgICAgICAgICAgIGlmIChpaSAhPSBt
X2FjdGl2ZVRleHR1cmVVbml0KSB7CiAgICAgICAgICAgICAgICAgbV9jb250ZXh0LT5hY3RpdmVU
ZXh0dXJlKGlpKTsKICAgICAgICAgICAgICAgICByZXNldEFjdGl2ZVVuaXQgPSB0cnVlOwpAQCAt
NDgxMSwyMiArNDgwNiwxOSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6aGFuZGxlTlBP
VFRleHR1cmVzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgYm9vbCBwcgogICAgICAgICAgICAg
ICAgIG1fY29udGV4dC0+YWN0aXZlVGV4dHVyZShpaSk7CiAgICAgICAgICAgICAgICAgcmVzZXRB
Y3RpdmVVbml0ID0gZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBXZWJHTFRleHR1
cmUqIHRleDJEOwotICAgICAgICAgICAgV2ViR0xUZXh0dXJlKiB0ZXhDdWJlTWFwOworICAgICAg
ICAgICAgV2ViR0xUZXh0dXJlKiB0ZXh0dXJlID0gMDsKKyAgICAgICAgICAgIEdDM0RlbnVtIHRh
cmdldCA9IG1fdGV4dHVyZVVuaXRzW2lpXS5tX3RleHR1cmVCaW5kaW5nLT5nZXRUYXJnZXQoKTsK
ICAgICAgICAgICAgIGlmIChwcmVwYXJlVG9EcmF3KSB7CiAgICAgICAgICAgICAgICAgU3RyaW5n
IG1zZyhTdHJpbmcoInRleHR1cmUgYm91bmQgdG8gdGV4dHVyZSB1bml0ICIpICsgU3RyaW5nOjpu
dW1iZXIoaWkpCiAgICAgICAgICAgICAgICAgICAgICsgIiBpcyBub3QgcmVuZGVyYWJsZS4gSXQg
bWF5YmUgbm9uLXBvd2VyLW9mLTIgYW5kIGhhdmUgaW5jb21wYXRpYmxlIHRleHR1cmUgZmlsdGVy
aW5nIG9yIGlzIG5vdCAndGV4dHVyZSBjb21wbGV0ZSciKTsKICAgICAgICAgICAgICAgICBwcmlu
dEdMV2FybmluZ1RvQ29uc29sZShmdW5jdGlvbk5hbWUsIG1zZy51dGY4KCkuZGF0YSgpKTsKLSAg
ICAgICAgICAgICAgICB0ZXgyRCA9IG1fYmxhY2tUZXh0dXJlMkQuZ2V0KCk7Ci0gICAgICAgICAg
ICAgICAgdGV4Q3ViZU1hcCA9IG1fYmxhY2tUZXh0dXJlQ3ViZU1hcC5nZXQoKTsKLSAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgdGV4MkQgPSBtX3RleHR1cmVVbml0c1tpaV0u
bV90ZXh0dXJlMkRCaW5kaW5nLmdldCgpOwotICAgICAgICAgICAgICAgIHRleEN1YmVNYXAgPSBt
X3RleHR1cmVVbml0c1tpaV0ubV90ZXh0dXJlQ3ViZU1hcEJpbmRpbmcuZ2V0KCk7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBpZiAobV90ZXh0dXJlVW5pdHNbaWldLm1fdGV4dHVyZTJEQmlu
ZGluZyAmJiBtX3RleHR1cmVVbml0c1tpaV0ubV90ZXh0dXJlMkRCaW5kaW5nLT5uZWVkVG9Vc2VC
bGFja1RleHR1cmUoKSkKLSAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmJpbmRUZXh0dXJlKEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBvYmplY3RPclplcm8odGV4MkQpKTsKLSAgICAg
ICAgICAgIGlmIChtX3RleHR1cmVVbml0c1tpaV0ubV90ZXh0dXJlQ3ViZU1hcEJpbmRpbmcgJiYg
bV90ZXh0dXJlVW5pdHNbaWldLm1fdGV4dHVyZUN1YmVNYXBCaW5kaW5nLT5uZWVkVG9Vc2VCbGFj
a1RleHR1cmUoKSkKLSAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFX0NVQkVfTUFQLCBvYmplY3RPclplcm8odGV4Q3ViZU1hcCkp
OworICAgICAgICAgICAgICAgIGlmICh0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfMkQpCisgICAgICAgICAgICAgICAgICAgIHRleHR1cmUgPSBtX2JsYWNrVGV4dHVyZTJELmdl
dCgpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRhcmdldCA9PSBHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV9DVUJFX01BUCkKKyAgICAgICAgICAgICAgICAgICAgdGV4dHVyZSA9IG1fYmxh
Y2tUZXh0dXJlQ3ViZU1hcC5nZXQoKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
ICAgIHRleHR1cmUgPSBtX3RleHR1cmVVbml0c1tpaV0ubV90ZXh0dXJlQmluZGluZy5nZXQoKTsK
KyAgICAgICAgICAgIG1fY29udGV4dC0+YmluZFRleHR1cmUodGFyZ2V0LCBvYmplY3RPclplcm8o
dGV4dHVyZSkpOwogICAgICAgICB9CiAgICAgfQogICAgIGlmIChyZXNldEFjdGl2ZVVuaXQpCkBA
IC00ODkxLDEwICs0ODgzLDggQEAgaW50IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0Qm91bmRG
cmFtZWJ1ZmZlckhlaWdodCgpCiAKIFdlYkdMVGV4dHVyZSogV2ViR0xSZW5kZXJpbmdDb250ZXh0
Ojp2YWxpZGF0ZVRleHR1cmVCaW5kaW5nKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0MzRGVu
dW0gdGFyZ2V0LCBib29sIHVzZVNpeEVudW1zRm9yQ3ViZU1hcCkKIHsKLSAgICBXZWJHTFRleHR1
cmUqIHRleCA9IDA7CiAgICAgc3dpdGNoICh0YXJnZXQpIHsKICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFXzJEOgotICAgICAgICB0ZXggPSBtX3RleHR1cmVVbml0c1ttX2FjdGl2
ZVRleHR1cmVVbml0XS5tX3RleHR1cmUyREJpbmRpbmcuZ2V0KCk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWDoK
ICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1g6
CkBAIC00OTA2LDE5ICs0ODk2LDE4IEBAIFdlYkdMVGV4dHVyZSogV2ViR0xSZW5kZXJpbmdDb250
ZXh0Ojp2YWxpZGF0ZVRleHR1cmVCaW5kaW5nKGNvbnN0IGNoYXIqIGZ1bmN0aW9uCiAgICAgICAg
ICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVNLCBm
dW5jdGlvbk5hbWUsICJpbnZhbGlkIHRleHR1cmUgdGFyZ2V0Iik7CiAgICAgICAgICAgICByZXR1
cm4gMDsKICAgICAgICAgfQotICAgICAgICB0ZXggPSBtX3RleHR1cmVVbml0c1ttX2FjdGl2ZVRl
eHR1cmVVbml0XS5tX3RleHR1cmVDdWJlTWFwQmluZGluZy5nZXQoKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9DVUJFX01BUDoKICAgICAgICAg
aWYgKHVzZVNpeEVudW1zRm9yQ3ViZU1hcCkgewogICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJy
b3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfRU5VTSwgZnVuY3Rpb25OYW1lLCAiaW52YWxp
ZCB0ZXh0dXJlIHRhcmdldCIpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KLSAg
ICAgICAgdGV4ID0gbV90ZXh0dXJlVW5pdHNbbV9hY3RpdmVUZXh0dXJlVW5pdF0ubV90ZXh0dXJl
Q3ViZU1hcEJpbmRpbmcuZ2V0KCk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAg
ICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX0VOVU0sIGZ1
bmN0aW9uTmFtZSwgImludmFsaWQgdGV4dHVyZSB0YXJnZXQiKTsKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgfQorICAgIFdlYkdMVGV4dHVyZSogdGV4ID0gbV90ZXh0dXJlVW5pdHNbbV9hY3RpdmVU
ZXh0dXJlVW5pdF0ubV90ZXh0dXJlQmluZGluZy5nZXQoKTsKICAgICBpZiAoIXRleCkKICAgICAg
ICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9O
LCBmdW5jdGlvbk5hbWUsICJubyB0ZXh0dXJlIik7CiAgICAgcmV0dXJuIHRleDsKQEAgLTYwMjks
NyArNjAxOCw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpyZXN0b3JlQ3VycmVudEZy
YW1lYnVmZmVyKCkKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpyZXN0b3JlQ3VycmVudFRl
eHR1cmUyRCgpCiB7CiAgICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAgICBiaW5kVGV4dHVyZShHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV90ZXh0dXJlVW5pdHNbbV9hY3RpdmVUZXh0dXJl
VW5pdF0ubV90ZXh0dXJlMkRCaW5kaW5nLmdldCgpLCBlYyk7CisgICAgYmluZFRleHR1cmUoR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fdGV4dHVyZVVuaXRzW21fYWN0aXZlVGV4dHVy
ZVVuaXRdLm1fdGV4dHVyZUJpbmRpbmcuZ2V0KCksIGVjKTsKIH0KIAogYm9vbCBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OnN1cHBvcnRzRHJhd0J1ZmZlcnMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAppbmRleCAzNDk5ZmU5Li43OGJh
MDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHQuaApAQCAtNDQ5LDEwICs0NDksOCBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPFdlYkdM
UHJvZ3JhbT4gbV9jdXJyZW50UHJvZ3JhbTsKICAgICBSZWZQdHI8V2ViR0xGcmFtZWJ1ZmZlcj4g
bV9mcmFtZWJ1ZmZlckJpbmRpbmc7CiAgICAgUmVmUHRyPFdlYkdMUmVuZGVyYnVmZmVyPiBtX3Jl
bmRlcmJ1ZmZlckJpbmRpbmc7Ci0gICAgY2xhc3MgVGV4dHVyZVVuaXRTdGF0ZSB7Ci0gICAgcHVi
bGljOgotICAgICAgICBSZWZQdHI8V2ViR0xUZXh0dXJlPiBtX3RleHR1cmUyREJpbmRpbmc7Ci0g
ICAgICAgIFJlZlB0cjxXZWJHTFRleHR1cmU+IG1fdGV4dHVyZUN1YmVNYXBCaW5kaW5nOworICAg
IHN0cnVjdCBUZXh0dXJlVW5pdFN0YXRlIHsKKyAgICAgICAgUmVmUHRyPFdlYkdMVGV4dHVyZT4g
bV90ZXh0dXJlQmluZGluZzsKICAgICB9OwogICAgIFZlY3RvcjxUZXh0dXJlVW5pdFN0YXRlPiBt
X3RleHR1cmVVbml0czsKICAgICB1bnNpZ25lZCBsb25nIG1fYWN0aXZlVGV4dHVyZVVuaXQ7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>