<?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>109714</bug_id>
          
          <creation_ts>2013-02-13 10:42:40 -0800</creation_ts>
          <short_desc>[CSS Grid Layout] Add an internal 2D grid representation to RenderGrid</short_desc>
          <delta_ts>2013-02-14 12:17:13 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>103316</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Julien Chaffraix">jchaffraix</reporter>
          <assigned_to name="Julien Chaffraix">jchaffraix</assigned_to>
          <cc>eric</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>832052</commentid>
    <comment_count>0</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2013-02-13 10:42:40 -0800</bug_when>
    <thetext>In order to add grid-auto-flow support, we will need to represent our 2D grid so that we can place the grid items into the empty grid areas.

It would also make our algorithm a lot more efficient as we could easily answer which grid items are in a specific row or column.

Another upside of that would be that we won&apos;t have to resolve our grid position over and over as we are currently doing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832477</commentid>
    <comment_count>1</comment_count>
      <attachid>188212</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2013-02-13 16:17:42 -0800</bug_when>
    <thetext>Created attachment 188212
Proposed grid: Vector of Vector of Vector of RenderBoxes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832670</commentid>
    <comment_count>2</comment_count>
      <attachid>188212</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2013-02-13 19:34:08 -0800</bug_when>
    <thetext>Comment on attachment 188212
Proposed grid: Vector of Vector of Vector of RenderBoxes.

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

&gt; Source/WebCore/rendering/RenderGrid.cpp:376
&gt; +    // FIXME: We should have a column / row iterator.

I&apos;d prefer we do this as part of this patch. I actually think it&apos;d make the diff a lot smaller since the structure of the code wouldn&apos;t be changing as much. For example, you could keep this code sharing the same code inside the loop for the column and row cases.

&gt; Source/WebCore/rendering/RenderGrid.cpp:464
&gt; +        size_t columnTrack = resolveGridPosition(child-&gt;style()-&gt;gridItemColumn());
&gt; +        size_t rowTrack = resolveGridPosition(child-&gt;style()-&gt;gridItemRow());

Nit: about calling these columnIndex and rowIndex since they&apos;re size_t&apos;s?

&gt; Source/WebCore/rendering/RenderGrid.h:85
&gt; +    Vector&lt;Vector&lt;Vector&lt;RenderBox*, 1&gt; &gt; &gt; m_grid;

How do you feel about using typedefs to make this more readable?

typedef Vector&lt;RenderBox*&gt; GridAreaItems
typedef Vector&lt;GridAreaItems&gt; GridColumns
typedef Vector&lt;GridColumns&gt; GridRows

GridRows m_grid;

Then in the calling code you&apos;d have things like:
const GridAreaItems children = m_grid[trackIndex][i];

I&apos;m on the fence as to whether this is actually more readable. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833073</commentid>
    <comment_count>3</comment_count>
      <attachid>188212</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2013-02-14 07:49:37 -0800</bug_when>
    <thetext>Comment on attachment 188212
Proposed grid: Vector of Vector of Vector of RenderBoxes.

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

&gt;&gt; Source/WebCore/rendering/RenderGrid.cpp:376
&gt;&gt; +    // FIXME: We should have a column / row iterator.
&gt; 
&gt; I&apos;d prefer we do this as part of this patch. I actually think it&apos;d make the diff a lot smaller since the structure of the code wouldn&apos;t be changing as much. For example, you could keep this code sharing the same code inside the loop for the column and row cases.

Fine by me, I prefer atomic changes as they are easier to review (also usually smaller).

&gt;&gt; Source/WebCore/rendering/RenderGrid.h:85
&gt;&gt; +    Vector&lt;Vector&lt;Vector&lt;RenderBox*, 1&gt; &gt; &gt; m_grid;
&gt; 
&gt; How do you feel about using typedefs to make this more readable?
&gt; 
&gt; typedef Vector&lt;RenderBox*&gt; GridAreaItems
&gt; typedef Vector&lt;GridAreaItems&gt; GridColumns
&gt; typedef Vector&lt;GridColumns&gt; GridRows
&gt; 
&gt; GridRows m_grid;
&gt; 
&gt; Then in the calling code you&apos;d have things like:
&gt; const GridAreaItems children = m_grid[trackIndex][i];
&gt; 
&gt; I&apos;m on the fence as to whether this is actually more readable. :)

If you introduce the iterator, only 2 places in the code will have to deal with m_grid directly: placeItemsOnGrid and the iterator.

That said, I think that all the typedefs won&apos;t give us much as they suppose - and in a way enforce - a certain representation of the grid / iterator. Also GridAreaItems doesn&apos;t convey that it&apos;s a Vector, which is probably a requirement for any representation of the grid. The following typedef would be enough IMO:

typedef Grid Vector&lt;Vector&lt;Vector&lt;RenderBox*&gt; &gt; &gt;;
Grid m_grid;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833084</commentid>
    <comment_count>4</comment_count>
      <attachid>188212</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2013-02-14 07:59:46 -0800</bug_when>
    <thetext>Comment on attachment 188212
Proposed grid: Vector of Vector of Vector of RenderBoxes.

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

&gt;&gt; Source/WebCore/rendering/RenderGrid.cpp:464
&gt;&gt; +        size_t rowTrack = resolveGridPosition(child-&gt;style()-&gt;gridItemRow());
&gt; 
&gt; Nit: about calling these columnIndex and rowIndex since they&apos;re size_t&apos;s?

The rest of the code uses columnTrack / rowTrack. I would rather be consistent as both are equivalent (it&apos;s really which columnTrack / rowTrack ** your grid item belongs to)

** For now, we only span one column / row track. Once we lift this constraint, the definition will probably evolve to be the start track.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833146</commentid>
    <comment_count>5</comment_count>
      <attachid>188370</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2013-02-14 09:28:52 -0800</bug_when>
    <thetext>Created attachment 188370
Updated fix: Now with GridIterator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833202</commentid>
    <comment_count>6</comment_count>
      <attachid>188370</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2013-02-14 10:16:27 -0800</bug_when>
    <thetext>Comment on attachment 188370
Updated fix: Now with GridIterator.

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

&gt; Source/WebCore/rendering/RenderGrid.cpp:92
&gt; +            for (; m_childIndex &lt; children.size(); ++m_childIndex)

I think this can just be:
if (m_childIndex &lt; children.size())
    return ...;

&gt; Source/WebCore/rendering/RenderGrid.h:87
&gt; +    typedef Vector&lt;Vector&lt;Vector&lt;RenderBox*, 1&gt; &gt; &gt; Grid;
&gt; +    Grid m_grid;

Not sure this typedef adds much value. What I had in mind before was that the typedefs would help make it clear whether the first index is into the columns or the rows. But, I&apos;m fine with saying it was too confusing/complicated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833250</commentid>
    <comment_count>7</comment_count>
      <attachid>188370</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2013-02-14 11:09:11 -0800</bug_when>
    <thetext>Comment on attachment 188370
Updated fix: Now with GridIterator.

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

&gt;&gt; Source/WebCore/rendering/RenderGrid.cpp:92
&gt;&gt; +            for (; m_childIndex &lt; children.size(); ++m_childIndex)
&gt; 
&gt; I think this can just be:
&gt; if (m_childIndex &lt; children.size())
&gt;     return ...;

Good catch!

&gt;&gt; Source/WebCore/rendering/RenderGrid.h:87
&gt;&gt; +    Grid m_grid;
&gt; 
&gt; Not sure this typedef adds much value. What I had in mind before was that the typedefs would help make it clear whether the first index is into the columns or the rows. But, I&apos;m fine with saying it was too confusing/complicated.

I found the GridRows a bit confusing (but saw where you came from to explain which direction we use). I would also argue that putting such a specific typedef would constrain our design (if we ever wanted to change how the grid is represented).

Let&apos;s just drop it as it&apos;s really used in 3 places.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833256</commentid>
    <comment_count>8</comment_count>
      <attachid>188386</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2013-02-14 11:13:07 -0800</bug_when>
    <thetext>Created attachment 188386
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833270</commentid>
    <comment_count>9</comment_count>
      <attachid>188386</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2013-02-14 11:28:36 -0800</bug_when>
    <thetext>Comment on attachment 188386
Patch for landing

Hit wp too fast.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833273</commentid>
    <comment_count>10</comment_count>
      <attachid>188389</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2013-02-14 11:33:51 -0800</bug_when>
    <thetext>Created attachment 188389
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833309</commentid>
    <comment_count>11</comment_count>
      <attachid>188389</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-14 12:17:09 -0800</bug_when>
    <thetext>Comment on attachment 188389
Patch for landing

Clearing flags on attachment: 188389

Committed r142898: &lt;http://trac.webkit.org/changeset/142898&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833310</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-14 12:17:13 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188212</attachid>
            <date>2013-02-13 16:17:42 -0800</date>
            <delta_ts>2013-02-14 09:28:49 -0800</delta_ts>
            <desc>Proposed grid: Vector of Vector of Vector of RenderBoxes.</desc>
            <filename>bug-109714-20130213161411.patch</filename>
            <type>text/plain</type>
            <size>10663</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyODA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTc0ZDhiZWM4ZDIyNTI1
OTRhZjI3ZWE0NTk3YWUyMDQ5NzlhMGY4OS4uOWY1YmMwMGM4YWMxMGRhMjA0NWY4OGVlMmQxNDE4
YzYxOGFhNGI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEzLTAyLTEzICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIFtDU1MgR3Jp
ZCBMYXlvdXRdIEFkZCBhbiBpbnRlcm5hbCAyRCBncmlkIHJlcHJlc2VudGF0aW9uIHRvIFJlbmRl
ckdyaWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
OTcxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgY2hhbmdlIGludHJvZHVjZXMgYSAyRCBncmlkIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBncmlk
IGFyZWFzLiBPdXIgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaXMgYSBzdHJhaWdodCBWZWN0b3Ig
b2YgVmVjdG9ycyBmb3IgdGhlIGdyaWQgYXJlYXMsIGVhY2ggZ3JpZCBhcmVhIGFibGUgdG8gaG9s
ZCBhbgorICAgICAgICBhcmJpdHJhcnkgbnVtYmVyIG9mIFJlbmRlckJveCogc28gdGhleSBob2xk
IGEgVmVjdG9yIG9mIFJlbmRlckJveGVzLiBBcyBhbiBvcHRpbWl6YXRpb24sCisgICAgICAgIGVh
Y2ggZ3JpZCBhcmVhIGhhcyBlbm91Z2ggaW5saW5lIHN0b3JhZ2UgdG8gaG9sZCBvbmUgZ3JpZCBp
dGVtIHdoaWNoIHNob3VsZCBjb3ZlcgorICAgICAgICBtb3N0IGNhc2VzLgorCisgICAgICAgIFJl
ZmFjdG9yaW5nLCBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckdyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6Y29tcHV0
ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6
bGF5b3V0R3JpZEl0ZW1zKToKKyAgICAgICAgVXBkYXRlZCB0aGVzZSAyIGZ1bmN0aW9ucyB0byBw
bGFjZSB0aGUgaXRlbXMgb24gdGhlIGdyaWQgYW5kIGNsZWFyIGl0IGF0IHRoZSBlbmQuCisKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmNvbXB1dGVQcmVmZXJyZWRUcmFja1dpZHRoKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OnJlc29sdmVDb250ZW50QmFzZWRUcmFja1Np
emluZ0Z1bmN0aW9uc0Zvckl0ZW1zKToKKyAgICAgICAgVXBkYXRlZCB0byBpdGVyYXRlIG92ZXIg
dGhlIGdyaWQncyBzdHJ1Y3R1cmUuIFRoZXkgd2lsbCBiZSByZXBsYWNlZCBieSBzb21lCisgICAg
ICAgIGl0ZXJhdG9ycyBpbiBhIGZvbGxvdy11cCBjaGFuZ2UuCisKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckdyaWQ6OnBsYWNlSXRlbXNPbkdyaWQpOgorICAgICAgICBBZGRlZCB0aGlzIGZ1bmN0
aW9uIHRoYXQgaW5zZXJ0cyB0aGUgZ3JpZCBpdGVtcyBpbnRvIHRoZSByaWdodCBncmlkIGFyZWEu
CisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5oOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyR3JpZDo6Z3JpZENvbHVtbkNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdy
aWQ6OmdyaWRSb3dDb3VudCk6CisgICAgICAgIEFkZGVkIHRoZXNlIGhlbHBlciBmdW5jdGlvbnMu
CisKIDIwMTMtMDItMTMgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgW01hY10gQ2FwdGlvbiBtZW51IHNob3VsZCBoYXZlIG9ubHkgb25lIGl0ZW0gc2Vs
ZWN0ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAppbmRleCA0MDJkM2U5
NzY5ZGFjZjAwNzU2YTk4NjQ3ZDgxYmEyZmQ2ZGJiZDFkLi43MDgyY2EyOTMzMmE3N2M4YmNjOTU2
M2M0MjBhODM1MzE1Y2VhZGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQu
Y3BwCkBAIC0xMzQsNiArMTM0LDggQEAgdm9pZCBSZW5kZXJHcmlkOjpjb21wdXRlUHJlZmVycmVk
TG9naWNhbFdpZHRocygpCiB7CiAgICAgQVNTRVJUKHByZWZlcnJlZExvZ2ljYWxXaWR0aHNEaXJ0
eSgpKTsKIAorICAgIHBsYWNlSXRlbXNPbkdyaWQoKTsKKwogICAgIG1fbWluUHJlZmVycmVkTG9n
aWNhbFdpZHRoID0gMDsKICAgICBtX21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IDA7CiAKQEAg
LTE1OSw2ICsxNjEsNyBAQCB2b2lkIFJlbmRlckdyaWQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2Fs
V2lkdGhzKCkKICAgICBtX21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCArPSBib3JkZXJBbmRQYWRk
aW5nSW5JbmxpbmVEaXJlY3Rpb247CiAKICAgICBzZXRQcmVmZXJyZWRMb2dpY2FsV2lkdGhzRGly
dHkoZmFsc2UpOworICAgIG1fZ3JpZC5jbGVhcigpOwogfQogCiBMYXlvdXRVbml0IFJlbmRlckdy
aWQ6OmNvbXB1dGVQcmVmZXJyZWRUcmFja1dpZHRoKGNvbnN0IExlbmd0aCYgbGVuZ3RoLCBzaXpl
X3QgdHJhY2tJbmRleCkgY29uc3QKQEAgLTE3MiwyNiArMTc1LDI0IEBAIExheW91dFVuaXQgUmVu
ZGVyR3JpZDo6Y29tcHV0ZVByZWZlcnJlZFRyYWNrV2lkdGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgs
IHNpemVfdCB0CiAgICAgICAgIExheW91dFVuaXQgbWluQ29udGVudFNpemUgPSAwOwogICAgICAg
ICAvLyBGSVhNRTogSXQncyBpbmVmZmljaWVudCB0byBpdGVyYXRlIG92ZXIgb3VyIGdyaWQgaXRl
bXMuIFdlIHNob3VsZCBiZSBhYmxlIHRvCiAgICAgICAgIC8vIGdldCB0aGUgc3Vic2V0IG9mIGdy
aWQgaXRlbXMgaW4gdGhlIGN1cnJlbnQgcm93IC8gY29sdW1uIGZhc3Rlci4KLSAgICAgICAgZm9y
IChSZW5kZXJCb3gqIGNoaWxkID0gZmlyc3RDaGlsZEJveCgpOyBjaGlsZDsgY2hpbGQgPSBjaGls
ZC0+bmV4dFNpYmxpbmdCb3goKSkgewotICAgICAgICAgICAgc2l6ZV90IGNlbGxJbmRleCA9IHJl
c29sdmVHcmlkUG9zaXRpb24oRm9yQ29sdW1ucywgY2hpbGQpOwotICAgICAgICAgICAgaWYgKGNl
bGxJbmRleCAhPSB0cmFja0luZGV4KQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAg
ICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGluY2x1ZGUgdGhlIGNoaWxkJ3MgZml4ZWQgbWFy
Z2lucyBsaWtlIFJlbmRlckZsZXhpYmxlQm94LgotICAgICAgICAgICAgbWluQ29udGVudFNpemUg
PSBzdGQ6Om1heChtaW5Db250ZW50U2l6ZSwgY2hpbGQtPm1pblByZWZlcnJlZExvZ2ljYWxXaWR0
aCgpKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBncmlkUm93Q291bnQoKTsgKytp
KSB7CisgICAgICAgICAgICBjb25zdCBWZWN0b3I8UmVuZGVyQm94Kj4mIGNoaWxkcmVuID0gbV9n
cmlkW2ldW3RyYWNrSW5kZXhdOworICAgICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBj
aGlsZHJlbi5zaXplKCk7ICsraikgeworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91
bGQgaW5jbHVkZSB0aGUgY2hpbGQncyBmaXhlZCBtYXJnaW5zIGxpa2UgUmVuZGVyRmxleGlibGVC
b3guCisgICAgICAgICAgICAgICAgbWluQ29udGVudFNpemUgPSBzdGQ6Om1heChtaW5Db250ZW50
U2l6ZSwgY2hpbGRyZW5bal0tPm1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCgpKTsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgICAgICByZXR1cm4gbWluQ29udGVudFNpemU7CiAgICAgfQog
CiAgICAgaWYgKGxlbmd0aC5pc01heENvbnRlbnQoKSkgewogICAgICAgICBMYXlvdXRVbml0IG1h
eENvbnRlbnRTaXplID0gMDsKLSAgICAgICAgZm9yIChSZW5kZXJCb3gqIGNoaWxkID0gZmlyc3RD
aGlsZEJveCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmdCb3goKSkgewotICAg
ICAgICAgICAgc2l6ZV90IGNlbGxJbmRleCA9IHJlc29sdmVHcmlkUG9zaXRpb24oRm9yQ29sdW1u
cywgY2hpbGQpOwotICAgICAgICAgICAgaWYgKGNlbGxJbmRleCAhPSB0cmFja0luZGV4KQotICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IGluY2x1ZGUgdGhlIGNoaWxkJ3MgZml4ZWQgbWFyZ2lucyBsaWtlIFJlbmRlckZsZXhpYmxlQm94
LgotICAgICAgICAgICAgbWF4Q29udGVudFNpemUgPSBzdGQ6Om1heChtYXhDb250ZW50U2l6ZSwg
Y2hpbGQtPm1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCgpKTsKKyAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBncmlkUm93Q291bnQoKTsgKytpKSB7CisgICAgICAgICAgICBjb25zdCBWZWN0
b3I8UmVuZGVyQm94Kj4mIGNoaWxkcmVuID0gbV9ncmlkW2ldW3RyYWNrSW5kZXhdOworICAgICAg
ICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBjaGlsZHJlbi5zaXplKCk7ICsraikgeworICAg
ICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaW5jbHVkZSB0aGUgY2hpbGQncyBmaXhl
ZCBtYXJnaW5zIGxpa2UgUmVuZGVyRmxleGlibGVCb3guCisgICAgICAgICAgICAgICAgbWF4Q29u
dGVudFNpemUgPSBzdGQ6Om1heChtYXhDb250ZW50U2l6ZSwgY2hpbGRyZW5bal0tPm1heFByZWZl
cnJlZExvZ2ljYWxXaWR0aCgpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBy
ZXR1cm4gbWF4Q29udGVudFNpemU7CiAgICAgfQpAQCAtMzY5LDIwICszNzAsMzQgQEAgdm9pZCBS
ZW5kZXJHcmlkOjpyZXNvbHZlQ29udGVudEJhc2VkVHJhY2tTaXppbmdGdW5jdGlvbnMoVHJhY2tT
aXppbmdEaXJlY3Rpb24gZGkKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyR3JpZDo6cmVzb2x2ZUNv
bnRlbnRCYXNlZFRyYWNrU2l6aW5nRnVuY3Rpb25zRm9ySXRlbXMoVHJhY2tTaXppbmdEaXJlY3Rp
b24gZGlyZWN0aW9uLCBWZWN0b3I8R3JpZFRyYWNrPiYgY29sdW1uVHJhY2tzLCBWZWN0b3I8R3Jp
ZFRyYWNrPiYgcm93VHJhY2tzLCBzaXplX3QgaSwgU2l6aW5nRnVuY3Rpb24gc2l6aW5nRnVuY3Rp
b24sIEFjY3VtdWxhdG9yR2V0dGVyIHRyYWNrR2V0dGVyLCBBY2N1bXVsYXRvckdyb3dGdW5jdGlv
biB0cmFja0dyb3d0aEZ1bmN0aW9uKQordm9pZCBSZW5kZXJHcmlkOjpyZXNvbHZlQ29udGVudEJh
c2VkVHJhY2tTaXppbmdGdW5jdGlvbnNGb3JJdGVtcyhUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJl
Y3Rpb24sIFZlY3RvcjxHcmlkVHJhY2s+JiBjb2x1bW5UcmFja3MsIFZlY3RvcjxHcmlkVHJhY2s+
JiByb3dUcmFja3MsIHNpemVfdCB0cmFja0luZGV4LCBTaXppbmdGdW5jdGlvbiBzaXppbmdGdW5j
dGlvbiwgQWNjdW11bGF0b3JHZXR0ZXIgdHJhY2tHZXR0ZXIsIEFjY3VtdWxhdG9yR3Jvd0Z1bmN0
aW9uIHRyYWNrR3Jvd3RoRnVuY3Rpb24pCiB7Ci0gICAgR3JpZFRyYWNrJiB0cmFjayA9IChkaXJl
Y3Rpb24gPT0gRm9yQ29sdW1ucykgPyBjb2x1bW5UcmFja3NbaV0gOiByb3dUcmFja3NbaV07Ci0g
ICAgZm9yIChSZW5kZXJCb3gqIGNoaWxkID0gZmlyc3RDaGlsZEJveCgpOyBjaGlsZDsgY2hpbGQg
PSBjaGlsZC0+bmV4dFNpYmxpbmdCb3goKSkgewotICAgICAgICBzaXplX3QgY2VsbEluZGV4ID0g
cmVzb2x2ZUdyaWRQb3NpdGlvbihkaXJlY3Rpb24sIGNoaWxkKTsKLSAgICAgICAgaWYgKGNlbGxJ
bmRleCAhPSBpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgTGF5b3V0VW5pdCBj
b250ZW50U2l6ZSA9ICh0aGlzLT4qc2l6aW5nRnVuY3Rpb24pKGNoaWxkLCBkaXJlY3Rpb24sIGNv
bHVtblRyYWNrcyk7Ci0gICAgICAgIExheW91dFVuaXQgYWRkaXRpb25hbEJyZWFkdGhTcGFjZSA9
IGNvbnRlbnRTaXplIC0gKHRyYWNrLip0cmFja0dldHRlcikoKTsKLSAgICAgICAgVmVjdG9yPEdy
aWRUcmFjayo+IHRyYWNrczsKLSAgICAgICAgdHJhY2tzLmFwcGVuZCgmdHJhY2spOwotICAgICAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkIHBhc3MgZGlmZmVyZW50IHZhbHVlcyBmb3IgfHRyYWNrc0Zv
ckdyb3d0aEFib3ZlTWF4QnJlYWR0aHwuCi0gICAgICAgIGRpc3RyaWJ1dGVTcGFjZVRvVHJhY2tz
KHRyYWNrcywgJnRyYWNrcywgdHJhY2tHZXR0ZXIsIHRyYWNrR3Jvd3RoRnVuY3Rpb24sIGFkZGl0
aW9uYWxCcmVhZHRoU3BhY2UpOworICAgIEdyaWRUcmFjayYgdHJhY2sgPSAoZGlyZWN0aW9uID09
IEZvckNvbHVtbnMpID8gY29sdW1uVHJhY2tzW3RyYWNrSW5kZXhdIDogcm93VHJhY2tzW3RyYWNr
SW5kZXhdOworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaGF2ZSBhIGNvbHVtbiAvIHJvdyBpdGVy
YXRvci4KKyAgICBpZiAoZGlyZWN0aW9uID09IEZvckNvbHVtbnMpIHsKKyAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBncmlkUm93Q291bnQoKTsgKytpKSB7CisgICAgICAgICAgICBjb25z
dCBWZWN0b3I8UmVuZGVyQm94Kj4mIGNoaWxkcmVuID0gbV9ncmlkW2ldW3RyYWNrSW5kZXhdOwor
ICAgICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBjaGlsZHJlbi5zaXplKCk7ICsraikg
eworICAgICAgICAgICAgICAgIExheW91dFVuaXQgY29udGVudFNpemUgPSAodGhpcy0+KnNpemlu
Z0Z1bmN0aW9uKShjaGlsZHJlbltqXSwgZGlyZWN0aW9uLCBjb2x1bW5UcmFja3MpOworICAgICAg
ICAgICAgICAgIExheW91dFVuaXQgYWRkaXRpb25hbEJyZWFkdGhTcGFjZSA9IGNvbnRlbnRTaXpl
IC0gKHRyYWNrLip0cmFja0dldHRlcikoKTsKKyAgICAgICAgICAgICAgICBWZWN0b3I8R3JpZFRy
YWNrKj4gdHJhY2tzOworICAgICAgICAgICAgICAgIHRyYWNrcy5hcHBlbmQoJnRyYWNrKTsKKyAg
ICAgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHBhc3MgZGlmZmVyZW50IHZhbHVlcyBm
b3IgfHRyYWNrc0Zvckdyb3d0aEFib3ZlTWF4QnJlYWR0aHwuCisgICAgICAgICAgICAgICAgZGlz
dHJpYnV0ZVNwYWNlVG9UcmFja3ModHJhY2tzLCAmdHJhY2tzLCB0cmFja0dldHRlciwgdHJhY2tH
cm93dGhGdW5jdGlvbiwgYWRkaXRpb25hbEJyZWFkdGhTcGFjZSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGdy
aWRDb2x1bW5Db3VudCgpOyArK2kpIHsKKyAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxSZW5kZXJC
b3gqPiYgY2hpbGRyZW4gPSBtX2dyaWRbdHJhY2tJbmRleF1baV07CisgICAgICAgICAgICBmb3Ig
KHNpemVfdCBqID0gMDsgaiA8IGNoaWxkcmVuLnNpemUoKTsgKytqKSB7CisgICAgICAgICAgICAg
ICAgTGF5b3V0VW5pdCBjb250ZW50U2l6ZSA9ICh0aGlzLT4qc2l6aW5nRnVuY3Rpb24pKGNoaWxk
cmVuW2pdLCBkaXJlY3Rpb24sIGNvbHVtblRyYWNrcyk7CisgICAgICAgICAgICAgICAgTGF5b3V0
VW5pdCBhZGRpdGlvbmFsQnJlYWR0aFNwYWNlID0gY29udGVudFNpemUgLSAodHJhY2suKnRyYWNr
R2V0dGVyKSgpOworICAgICAgICAgICAgICAgIFZlY3RvcjxHcmlkVHJhY2sqPiB0cmFja3M7Cisg
ICAgICAgICAgICAgICAgdHJhY2tzLmFwcGVuZCgmdHJhY2spOworICAgICAgICAgICAgICAgIC8v
IEZJWE1FOiBXZSBzaG91bGQgcGFzcyBkaWZmZXJlbnQgdmFsdWVzIGZvciB8dHJhY2tzRm9yR3Jv
d3RoQWJvdmVNYXhCcmVhZHRofC4KKyAgICAgICAgICAgICAgICBkaXN0cmlidXRlU3BhY2VUb1Ry
YWNrcyh0cmFja3MsICZ0cmFja3MsIHRyYWNrR2V0dGVyLCB0cmFja0dyb3d0aEZ1bmN0aW9uLCBh
ZGRpdGlvbmFsQnJlYWR0aFNwYWNlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0K
IH0KIApAQCAtNDM2LDEwICs0NTEsMjggQEAgYm9vbCBSZW5kZXJHcmlkOjp0cmFja3NBcmVXaWRl
clRoYW5NaW5UcmFja0JyZWFkdGgoVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW8KIH0KICNl
bmRpZgogCit2b2lkIFJlbmRlckdyaWQ6OnBsYWNlSXRlbXNPbkdyaWQoKQoreworICAgIEFTU0VS
VChtX2dyaWQuaXNFbXB0eSgpKTsKKyAgICBtX2dyaWQuZ3JvdyhtYXhpbXVtSW5kZXhJbkRpcmVj
dGlvbihGb3JSb3dzKSk7CisgICAgc2l6ZV90IG1heGltdW1Db2x1bW5JbmRleCA9IG1heGltdW1J
bmRleEluRGlyZWN0aW9uKEZvckNvbHVtbnMpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
Z3JpZFJvd0NvdW50KCk7ICsraSkKKyAgICAgICAgbV9ncmlkW2ldLmdyb3cobWF4aW11bUNvbHVt
bkluZGV4KTsKKworICAgIGZvciAoUmVuZGVyQm94KiBjaGlsZCA9IGZpcnN0Q2hpbGRCb3goKTsg
Y2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nQm94KCkpIHsKKyAgICAgICAgc2l6ZV90
IGNvbHVtblRyYWNrID0gcmVzb2x2ZUdyaWRQb3NpdGlvbihjaGlsZC0+c3R5bGUoKS0+Z3JpZEl0
ZW1Db2x1bW4oKSk7CisgICAgICAgIHNpemVfdCByb3dUcmFjayA9IHJlc29sdmVHcmlkUG9zaXRp
b24oY2hpbGQtPnN0eWxlKCktPmdyaWRJdGVtUm93KCkpOworCisgICAgICAgIG1fZ3JpZFtyb3dU
cmFja11bY29sdW1uVHJhY2tdLmFwcGVuZChjaGlsZCk7CisgICAgfQorfQorCiB2b2lkIFJlbmRl
ckdyaWQ6OmxheW91dEdyaWRJdGVtcygpCiB7Ci0gICAgVmVjdG9yPEdyaWRUcmFjaz4gY29sdW1u
VHJhY2tzKG1heGltdW1JbmRleEluRGlyZWN0aW9uKEZvckNvbHVtbnMpKTsKLSAgICBWZWN0b3I8
R3JpZFRyYWNrPiByb3dUcmFja3MobWF4aW11bUluZGV4SW5EaXJlY3Rpb24oRm9yUm93cykpOwor
ICAgIHBsYWNlSXRlbXNPbkdyaWQoKTsKKworICAgIFZlY3RvcjxHcmlkVHJhY2s+IGNvbHVtblRy
YWNrcyhncmlkQ29sdW1uQ291bnQoKSk7CisgICAgVmVjdG9yPEdyaWRUcmFjaz4gcm93VHJhY2tz
KGdyaWRSb3dDb3VudCgpKTsKICAgICBjb21wdXRlZFVzZWRCcmVhZHRoT2ZHcmlkVHJhY2tzKEZv
ckNvbHVtbnMsIGNvbHVtblRyYWNrcywgcm93VHJhY2tzKTsKICAgICBBU1NFUlQodHJhY2tzQXJl
V2lkZXJUaGFuTWluVHJhY2tCcmVhZHRoKEZvckNvbHVtbnMsIGNvbHVtblRyYWNrcykpOwogICAg
IGNvbXB1dGVkVXNlZEJyZWFkdGhPZkdyaWRUcmFja3MoRm9yUm93cywgY29sdW1uVHJhY2tzLCBy
b3dUcmFja3MpOwpAQCAtNDc5LDYgKzUxMiw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6bGF5b3V0R3Jp
ZEl0ZW1zKCkKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGhhbmRsZSBtaW4gLyBtYXggbG9naWNh
bCBoZWlnaHQuCiAKICAgICBzZXRMb2dpY2FsSGVpZ2h0KGxvZ2ljYWxIZWlnaHQoKSArIGJvcmRl
ckFuZFBhZGRpbmdMb2dpY2FsSGVpZ2h0KCkpOworICAgIG1fZ3JpZC5jbGVhcigpOwogfQogCiBz
aXplX3QgUmVuZGVyR3JpZDo6cmVzb2x2ZUdyaWRQb3NpdGlvbihUcmFja1NpemluZ0RpcmVjdGlv
biBkaXJlY3Rpb24sIGNvbnN0IFJlbmRlck9iamVjdCogZ3JpZEl0ZW0pIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaAppbmRleCAyNTEzYzIxYjk3NWM0YWIzMmZhNTE2NDRl
ZGE4NmMxMTdjNmU5ZjdlLi5mNTk1YTMxOGU0OGY5MWFmYTYwMTc3ZTFhNWU0NTBhODBkZDNiOTFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKQEAgLTU2LDYgKzU2LDcgQEAg
cHJpdmF0ZToKICAgICBMYXlvdXRVbml0IGNvbXB1dGVVc2VkQnJlYWR0aE9mTWF4TGVuZ3RoKFRy
YWNrU2l6aW5nRGlyZWN0aW9uLCBjb25zdCBMZW5ndGgmKSBjb25zdDsKICAgICBMYXlvdXRVbml0
IGNvbXB1dGVVc2VkQnJlYWR0aE9mU3BlY2lmaWVkTGVuZ3RoKFRyYWNrU2l6aW5nRGlyZWN0aW9u
LCBjb25zdCBMZW5ndGgmKSBjb25zdDsKICAgICB2b2lkIHJlc29sdmVDb250ZW50QmFzZWRUcmFj
a1NpemluZ0Z1bmN0aW9ucyhUcmFja1NpemluZ0RpcmVjdGlvbiwgVmVjdG9yPEdyaWRUcmFjaz4m
IGNvbHVtblRyYWNrcywgVmVjdG9yPEdyaWRUcmFjaz4mIHJvd1RyYWNrcywgTGF5b3V0VW5pdCYg
YXZhaWxhYmxlTG9naWNhbFNwYWNlKTsKKyAgICB2b2lkIHBsYWNlSXRlbXNPbkdyaWQoKTsKICAg
ICB2b2lkIGxheW91dEdyaWRJdGVtcygpOwogCiAgICAgdHlwZWRlZiBMYXlvdXRVbml0IChSZW5k
ZXJHcmlkOjoqIFNpemluZ0Z1bmN0aW9uKShSZW5kZXJCb3gqLCBUcmFja1NpemluZ0RpcmVjdGlv
biwgVmVjdG9yPEdyaWRUcmFjaz4mKTsKQEAgLTc3LDYgKzc4LDExIEBAIHByaXZhdGU6CiAjaWZu
ZGVmIE5ERUJVRwogICAgIGJvb2wgdHJhY2tzQXJlV2lkZXJUaGFuTWluVHJhY2tCcmVhZHRoKFRy
YWNrU2l6aW5nRGlyZWN0aW9uLCBjb25zdCBWZWN0b3I8R3JpZFRyYWNrPiYpOwogI2VuZGlmCisK
KyAgICBzaXplX3QgZ3JpZENvbHVtbkNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9ncmlkLmlzRW1w
dHkoKSA/IDAgOiBtX2dyaWRbMF0uc2l6ZSgpOyB9CisgICAgc2l6ZV90IGdyaWRSb3dDb3VudCgp
IGNvbnN0IHsgcmV0dXJuIG1fZ3JpZC5zaXplKCk7IH0KKworICAgIFZlY3RvcjxWZWN0b3I8VmVj
dG9yPFJlbmRlckJveCosIDE+ID4gPiBtX2dyaWQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188370</attachid>
            <date>2013-02-14 09:28:52 -0800</date>
            <delta_ts>2013-02-14 11:13:05 -0800</delta_ts>
            <desc>Updated fix: Now with GridIterator.</desc>
            <filename>bug-109714-20130214092519.patch</filename>
            <type>text/plain</type>
            <size>11244</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyODc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWNhNTE2ODNjZDczMzJj
NmQyYTBhNzQ3ZTQ2ZWQ2OTJmZGRmNTdkOS4uODg2MzUyNDk1MjljMDcyZTEwYjQzOWY0ZDA5Nzkx
ZmRmZTQ3YTBmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEzLTAyLTE0ICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIFtDU1MgR3Jp
ZCBMYXlvdXRdIEFkZCBhbiBpbnRlcm5hbCAyRCBncmlkIHJlcHJlc2VudGF0aW9uIHRvIFJlbmRl
ckdyaWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
OTcxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgY2hhbmdlIGludHJvZHVjZXMgYSAyRCBncmlkIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBncmlk
IGFyZWFzLiBPdXIgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaXMgYSBzdHJhaWdodCBWZWN0b3Ig
b2YgVmVjdG9ycyBmb3IgdGhlIGdyaWQgYXJlYXMsIGVhY2ggZ3JpZCBhcmVhIGFibGUgdG8gaG9s
ZCBhbgorICAgICAgICBhcmJpdHJhcnkgbnVtYmVyIG9mIFJlbmRlckJveCogc28gdGhleSBob2xk
IGEgVmVjdG9yIG9mIFJlbmRlckJveGVzLiBBcyBhbiBvcHRpbWl6YXRpb24sCisgICAgICAgIGVh
Y2ggZ3JpZCBhcmVhIGhhcyBlbm91Z2ggaW5saW5lIHN0b3JhZ2UgdG8gaG9sZCBvbmUgZ3JpZCBp
dGVtIHdoaWNoIHNob3VsZCBjb3ZlcgorICAgICAgICBtb3N0IGNhc2VzLgorCisgICAgICAgIElu
IG9yZGVyIHRvIGtlZXAgdGhlIGNvZGUgcmVhZGFibGUsIGEgR3JpZEl0ZXJhdG9yIHdhcyBpbnRy
b2R1Y2VkIHRvIGhpZGUgdGhlIG5ldyBncmlkLgorCisgICAgICAgIFJlZmFjdG9yaW5nLCBjb3Zl
cmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdyaWQu
Y3BwOgorICAgICAgICAoUmVuZGVyR3JpZDo6R3JpZEl0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckdyaWQ6OkdyaWRJdGVyYXRvcjo6R3JpZEl0ZXJhdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckdyaWQ6OkdyaWRJdGVyYXRvcjo6bmV4dEdyaWRJdGVtKToKKyAgICAgICAg
QWRkZWQgYSBtb25vLWRpcmVjdGlvbmFsIGl0ZXJhdG9yLiBJbiBvcmRlciB0byBiZSBtb3JlIGFs
aWduZWQgd2l0aCB0aGUgcmVzdCBvZiB0aGUgY29kZSwKKyAgICAgICAgdGhpcyBpdGVyYXRvciBh
Y3R1YWxseSB3YWxrcyBvcnRob2dvbmFsbHkgdG8gdGhlIHxkaXJlY3Rpb258IChpZSBmaXhpbmcg
dGhlIHxkaXJlY3Rpb258J3MgdHJhY2spLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdy
aWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6Y29tcHV0ZVByZWZlcnJlZExv
Z2ljYWxXaWR0aHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6bGF5b3V0R3JpZEl0
ZW1zKToKKyAgICAgICAgVXBkYXRlZCB0aGVzZSAyIGZ1bmN0aW9ucyB0byBwbGFjZSB0aGUgaXRl
bXMgb24gdGhlIGdyaWQgYW5kIGNsZWFyIGl0IGF0IHRoZSBlbmQuCisKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckdyaWQ6OmNvbXB1dGVQcmVmZXJyZWRUcmFja1dpZHRoKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckdyaWQ6OnJlc29sdmVDb250ZW50QmFzZWRUcmFja1NpemluZ0Z1bmN0aW9u
c0Zvckl0ZW1zKToKKyAgICAgICAgVXBkYXRlZCB0byB1c2UgdGhlIEdyaWRJdGVyYXRvciB0byB3
YWxrIG92ZXIgdGhlIHJvd3MgLyBjb2x1bW5zLgorCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJH
cmlkOjpwbGFjZUl0ZW1zT25HcmlkKToKKyAgICAgICAgQWRkZWQgdGhpcyBmdW5jdGlvbiB0aGF0
IGluc2VydHMgdGhlIGdyaWQgaXRlbXMgaW50byB0aGUgcmlnaHQgZ3JpZCBhcmVhLgorCisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckdyaWQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdy
aWQ6OmdyaWRDb2x1bW5Db3VudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpncmlk
Um93Q291bnQpOgorICAgICAgICBBZGRlZCB0aGVzZSBoZWxwZXIgZnVuY3Rpb25zLgorCiAyMDEz
LTAyLTE0ICBWbGFkaXNsYXYgS2F6bmFjaGVldiAgPGthem5hY2hlZXZAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IENvbG9yIHBpY2tlciBzaG91bGQgbm90IGJlIGF2YWls
YWJsZSBpbiBDb21wdXRlZCBTdHlsZXMgcGFuZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJHcmlkLmNwcAppbmRleCA0MDJkM2U5NzY5ZGFjZjAwNzU2YTk4NjQ3ZDgxYmEyZmQ2ZGJiZDFk
Li4wN2IxYWI2MjIxMzIzZDZjOWQ3NWIwMDNkOWEwNmIzYjkwOTU1NjM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCkBAIC02Niw2ICs2Niw0NCBAQCBwdWJsaWM6CiAg
ICAgTGF5b3V0VW5pdCBtX21heEJyZWFkdGg7CiB9OwogCitjbGFzcyBSZW5kZXJHcmlkOjpHcmlk
SXRlcmF0b3IgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEdyaWRJdGVyYXRvcik7CitwdWJs
aWM6CisgICAgLy8gfGRpcmVjdGlvbnwgaXMgdGhlIGRpcmVjdGlvbiB0aGF0IGlzIGZpeGVkIHRv
IHxmaXhlZFRyYWNrSW5kZXh8IHNvIGUuZworICAgIC8vIEdyaWRJdGVyYXRvcihtX2dyaWQsIEZv
ckNvbHVtbnMsIDEpIHdpbGwgd2FsayBvdmVyIHRoZSByb3dzIG9mIHRoZSAybmQgY29sdW1uLgor
ICAgIEdyaWRJdGVyYXRvcihjb25zdCBHcmlkJiBncmlkLCBUcmFja1NpemluZ0RpcmVjdGlvbiBk
aXJlY3Rpb24sIHNpemVfdCBmaXhlZFRyYWNrSW5kZXgpCisgICAgICAgIDogbV9ncmlkKGdyaWQp
CisgICAgICAgICwgbV9kaXJlY3Rpb24oZGlyZWN0aW9uKQorICAgICAgICAsIG1fcm93SW5kZXgo
KGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zKSA/IDAgOiBmaXhlZFRyYWNrSW5kZXgpCisgICAgICAg
ICwgbV9jb2x1bW5JbmRleCgoZGlyZWN0aW9uID09IEZvckNvbHVtbnMpID8gZml4ZWRUcmFja0lu
ZGV4IDogMCkKKyAgICAgICAgLCBtX2NoaWxkSW5kZXgoMCkKKyAgICB7CisgICAgfQorCisgICAg
UmVuZGVyQm94KiBuZXh0R3JpZEl0ZW0oKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2dyaWQuc2l6
ZSgpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgc2l6ZV90JiB2YXJ5aW5nVHJh
Y2tJbmRleCA9IChtX2RpcmVjdGlvbiA9PSBGb3JDb2x1bW5zKSA/IG1fcm93SW5kZXggOiBtX2Nv
bHVtbkluZGV4OworICAgICAgICBjb25zdCBzaXplX3QgZW5kT2ZWYXJ5aW5nVHJhY2tJbmRleCA9
IChtX2RpcmVjdGlvbiA9PSBGb3JDb2x1bW5zKSA/IG1fZ3JpZC5zaXplKCkgOiBtX2dyaWRbMF0u
c2l6ZSgpOworICAgICAgICBmb3IgKDsgdmFyeWluZ1RyYWNrSW5kZXggPCBlbmRPZlZhcnlpbmdU
cmFja0luZGV4OyArK3ZhcnlpbmdUcmFja0luZGV4KSB7CisgICAgICAgICAgICBjb25zdCBWZWN0
b3I8UmVuZGVyQm94Kj4mIGNoaWxkcmVuID0gbV9ncmlkW21fcm93SW5kZXhdW21fY29sdW1uSW5k
ZXhdOworICAgICAgICAgICAgZm9yICg7IG1fY2hpbGRJbmRleCA8IGNoaWxkcmVuLnNpemUoKTsg
KyttX2NoaWxkSW5kZXgpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkcmVuW21fY2hpbGRJ
bmRleCsrXTsKKworICAgICAgICAgICAgbV9jaGlsZEluZGV4ID0gMDsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4gMDsKKyAgICB9Citwcml2YXRlOgorICAgIGNvbnN0IEdyaWQmIG1fZ3JpZDsK
KyAgICBUcmFja1NpemluZ0RpcmVjdGlvbiBtX2RpcmVjdGlvbjsKKyAgICBzaXplX3QgbV9yb3dJ
bmRleDsKKyAgICBzaXplX3QgbV9jb2x1bW5JbmRleDsKKyAgICBzaXplX3QgbV9jaGlsZEluZGV4
OworfTsKKwogUmVuZGVyR3JpZDo6UmVuZGVyR3JpZChFbGVtZW50KiBlbGVtZW50KQogICAgIDog
UmVuZGVyQmxvY2soZWxlbWVudCkKIHsKQEAgLTEzNCw2ICsxNzIsOCBAQCB2b2lkIFJlbmRlckdy
aWQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkKIHsKICAgICBBU1NFUlQocHJlZmVy
cmVkTG9naWNhbFdpZHRoc0RpcnR5KCkpOwogCisgICAgcGxhY2VJdGVtc09uR3JpZCgpOworCiAg
ICAgbV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGggPSAwOwogICAgIG1fbWF4UHJlZmVycmVkTG9n
aWNhbFdpZHRoID0gMDsKIApAQCAtMTU5LDYgKzE5OSw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6Y29t
cHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKQogICAgIG1fbWF4UHJlZmVycmVkTG9naWNhbFdp
ZHRoICs9IGJvcmRlckFuZFBhZGRpbmdJbklubGluZURpcmVjdGlvbjsKIAogICAgIHNldFByZWZl
cnJlZExvZ2ljYWxXaWR0aHNEaXJ0eShmYWxzZSk7CisgICAgbV9ncmlkLmNsZWFyKCk7CiB9CiAK
IExheW91dFVuaXQgUmVuZGVyR3JpZDo6Y29tcHV0ZVByZWZlcnJlZFRyYWNrV2lkdGgoY29uc3Qg
TGVuZ3RoJiBsZW5ndGgsIHNpemVfdCB0cmFja0luZGV4KSBjb25zdApAQCAtMTcwLDI4ICsyMTEs
MjAgQEAgTGF5b3V0VW5pdCBSZW5kZXJHcmlkOjpjb21wdXRlUHJlZmVycmVkVHJhY2tXaWR0aChj
b25zdCBMZW5ndGgmIGxlbmd0aCwgc2l6ZV90IHQKIAogICAgIGlmIChsZW5ndGguaXNNaW5Db250
ZW50KCkpIHsKICAgICAgICAgTGF5b3V0VW5pdCBtaW5Db250ZW50U2l6ZSA9IDA7Ci0gICAgICAg
IC8vIEZJWE1FOiBJdCdzIGluZWZmaWNpZW50IHRvIGl0ZXJhdGUgb3ZlciBvdXIgZ3JpZCBpdGVt
cy4gV2Ugc2hvdWxkIGJlIGFibGUgdG8KLSAgICAgICAgLy8gZ2V0IHRoZSBzdWJzZXQgb2YgZ3Jp
ZCBpdGVtcyBpbiB0aGUgY3VycmVudCByb3cgLyBjb2x1bW4gZmFzdGVyLgotICAgICAgICBmb3Ig
KFJlbmRlckJveCogY2hpbGQgPSBmaXJzdENoaWxkQm94KCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxk
LT5uZXh0U2libGluZ0JveCgpKSB7Ci0gICAgICAgICAgICBzaXplX3QgY2VsbEluZGV4ID0gcmVz
b2x2ZUdyaWRQb3NpdGlvbihGb3JDb2x1bW5zLCBjaGlsZCk7Ci0gICAgICAgICAgICBpZiAoY2Vs
bEluZGV4ICE9IHRyYWNrSW5kZXgpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KKyAgICAg
ICAgR3JpZEl0ZXJhdG9yIGl0ZXJhdG9yKG1fZ3JpZCwgRm9yQ29sdW1ucywgdHJhY2tJbmRleCk7
CisgICAgICAgIHdoaWxlIChSZW5kZXJCb3gqIGdyaWRJdGVtID0gaXRlcmF0b3IubmV4dEdyaWRJ
dGVtKCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaW5jbHVkZSB0aGUgY2hp
bGQncyBmaXhlZCBtYXJnaW5zIGxpa2UgUmVuZGVyRmxleGlibGVCb3guCi0gICAgICAgICAgICBt
aW5Db250ZW50U2l6ZSA9IHN0ZDo6bWF4KG1pbkNvbnRlbnRTaXplLCBjaGlsZC0+bWluUHJlZmVy
cmVkTG9naWNhbFdpZHRoKCkpOworICAgICAgICAgICAgbWluQ29udGVudFNpemUgPSBzdGQ6Om1h
eChtaW5Db250ZW50U2l6ZSwgZ3JpZEl0ZW0tPm1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCgpKTsK
ICAgICAgICAgfQogICAgICAgICByZXR1cm4gbWluQ29udGVudFNpemU7CiAgICAgfQogCiAgICAg
aWYgKGxlbmd0aC5pc01heENvbnRlbnQoKSkgewogICAgICAgICBMYXlvdXRVbml0IG1heENvbnRl
bnRTaXplID0gMDsKLSAgICAgICAgZm9yIChSZW5kZXJCb3gqIGNoaWxkID0gZmlyc3RDaGlsZEJv
eCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmdCb3goKSkgewotICAgICAgICAg
ICAgc2l6ZV90IGNlbGxJbmRleCA9IHJlc29sdmVHcmlkUG9zaXRpb24oRm9yQ29sdW1ucywgY2hp
bGQpOwotICAgICAgICAgICAgaWYgKGNlbGxJbmRleCAhPSB0cmFja0luZGV4KQotICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwotCisgICAgICAgIEdyaWRJdGVyYXRvciBpdGVyYXRvcihtX2dyaWQs
IEZvckNvbHVtbnMsIHRyYWNrSW5kZXgpOworICAgICAgICB3aGlsZSAoUmVuZGVyQm94KiBncmlk
SXRlbSA9IGl0ZXJhdG9yLm5leHRHcmlkSXRlbSgpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIGluY2x1ZGUgdGhlIGNoaWxkJ3MgZml4ZWQgbWFyZ2lucyBsaWtlIFJlbmRlckZs
ZXhpYmxlQm94LgotICAgICAgICAgICAgbWF4Q29udGVudFNpemUgPSBzdGQ6Om1heChtYXhDb250
ZW50U2l6ZSwgY2hpbGQtPm1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCgpKTsKKyAgICAgICAgICAg
IG1heENvbnRlbnRTaXplID0gc3RkOjptYXgobWF4Q29udGVudFNpemUsIGdyaWRJdGVtLT5tYXhQ
cmVmZXJyZWRMb2dpY2FsV2lkdGgoKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1heENv
bnRlbnRTaXplOwogICAgIH0KQEAgLTM2OSwxNSArNDAyLDEyIEBAIHZvaWQgUmVuZGVyR3JpZDo6
cmVzb2x2ZUNvbnRlbnRCYXNlZFRyYWNrU2l6aW5nRnVuY3Rpb25zKFRyYWNrU2l6aW5nRGlyZWN0
aW9uIGRpCiAgICAgfQogfQogCi12b2lkIFJlbmRlckdyaWQ6OnJlc29sdmVDb250ZW50QmFzZWRU
cmFja1NpemluZ0Z1bmN0aW9uc0Zvckl0ZW1zKFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlv
biwgVmVjdG9yPEdyaWRUcmFjaz4mIGNvbHVtblRyYWNrcywgVmVjdG9yPEdyaWRUcmFjaz4mIHJv
d1RyYWNrcywgc2l6ZV90IGksIFNpemluZ0Z1bmN0aW9uIHNpemluZ0Z1bmN0aW9uLCBBY2N1bXVs
YXRvckdldHRlciB0cmFja0dldHRlciwgQWNjdW11bGF0b3JHcm93RnVuY3Rpb24gdHJhY2tHcm93
dGhGdW5jdGlvbikKK3ZvaWQgUmVuZGVyR3JpZDo6cmVzb2x2ZUNvbnRlbnRCYXNlZFRyYWNrU2l6
aW5nRnVuY3Rpb25zRm9ySXRlbXMoVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCBWZWN0
b3I8R3JpZFRyYWNrPiYgY29sdW1uVHJhY2tzLCBWZWN0b3I8R3JpZFRyYWNrPiYgcm93VHJhY2tz
LCBzaXplX3QgdHJhY2tJbmRleCwgU2l6aW5nRnVuY3Rpb24gc2l6aW5nRnVuY3Rpb24sIEFjY3Vt
dWxhdG9yR2V0dGVyIHRyYWNrR2V0dGVyLCBBY2N1bXVsYXRvckdyb3dGdW5jdGlvbiB0cmFja0dy
b3d0aEZ1bmN0aW9uKQogewotICAgIEdyaWRUcmFjayYgdHJhY2sgPSAoZGlyZWN0aW9uID09IEZv
ckNvbHVtbnMpID8gY29sdW1uVHJhY2tzW2ldIDogcm93VHJhY2tzW2ldOwotICAgIGZvciAoUmVu
ZGVyQm94KiBjaGlsZCA9IGZpcnN0Q2hpbGRCb3goKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5l
eHRTaWJsaW5nQm94KCkpIHsKLSAgICAgICAgc2l6ZV90IGNlbGxJbmRleCA9IHJlc29sdmVHcmlk
UG9zaXRpb24oZGlyZWN0aW9uLCBjaGlsZCk7Ci0gICAgICAgIGlmIChjZWxsSW5kZXggIT0gaSkK
LSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIExheW91dFVuaXQgY29udGVudFNpemUg
PSAodGhpcy0+KnNpemluZ0Z1bmN0aW9uKShjaGlsZCwgZGlyZWN0aW9uLCBjb2x1bW5UcmFja3Mp
OworICAgIEdyaWRUcmFjayYgdHJhY2sgPSAoZGlyZWN0aW9uID09IEZvckNvbHVtbnMpID8gY29s
dW1uVHJhY2tzW3RyYWNrSW5kZXhdIDogcm93VHJhY2tzW3RyYWNrSW5kZXhdOworICAgIEdyaWRJ
dGVyYXRvciBpdGVyYXRvcihtX2dyaWQsIGRpcmVjdGlvbiwgdHJhY2tJbmRleCk7CisgICAgd2hp
bGUgKFJlbmRlckJveCogZ3JpZEl0ZW0gPSBpdGVyYXRvci5uZXh0R3JpZEl0ZW0oKSkgeworICAg
ICAgICBMYXlvdXRVbml0IGNvbnRlbnRTaXplID0gKHRoaXMtPipzaXppbmdGdW5jdGlvbikoZ3Jp
ZEl0ZW0sIGRpcmVjdGlvbiwgY29sdW1uVHJhY2tzKTsKICAgICAgICAgTGF5b3V0VW5pdCBhZGRp
dGlvbmFsQnJlYWR0aFNwYWNlID0gY29udGVudFNpemUgLSAodHJhY2suKnRyYWNrR2V0dGVyKSgp
OwogICAgICAgICBWZWN0b3I8R3JpZFRyYWNrKj4gdHJhY2tzOwogICAgICAgICB0cmFja3MuYXBw
ZW5kKCZ0cmFjayk7CkBAIC00MzYsMTAgKzQ2NiwyOCBAQCBib29sIFJlbmRlckdyaWQ6OnRyYWNr
c0FyZVdpZGVyVGhhbk1pblRyYWNrQnJlYWR0aChUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rp
bwogfQogI2VuZGlmCiAKK3ZvaWQgUmVuZGVyR3JpZDo6cGxhY2VJdGVtc09uR3JpZCgpCit7Cisg
ICAgQVNTRVJUKG1fZ3JpZC5pc0VtcHR5KCkpOworICAgIG1fZ3JpZC5ncm93KG1heGltdW1JbmRl
eEluRGlyZWN0aW9uKEZvclJvd3MpKTsKKyAgICBzaXplX3QgbWF4aW11bUNvbHVtbkluZGV4ID0g
bWF4aW11bUluZGV4SW5EaXJlY3Rpb24oRm9yQ29sdW1ucyk7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBncmlkUm93Q291bnQoKTsgKytpKQorICAgICAgICBtX2dyaWRbaV0uZ3JvdyhtYXhp
bXVtQ29sdW1uSW5kZXgpOworCisgICAgZm9yIChSZW5kZXJCb3gqIGNoaWxkID0gZmlyc3RDaGls
ZEJveCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmdCb3goKSkgeworICAgICAg
ICBzaXplX3QgY29sdW1uVHJhY2sgPSByZXNvbHZlR3JpZFBvc2l0aW9uKGNoaWxkLT5zdHlsZSgp
LT5ncmlkSXRlbUNvbHVtbigpKTsKKyAgICAgICAgc2l6ZV90IHJvd1RyYWNrID0gcmVzb2x2ZUdy
aWRQb3NpdGlvbihjaGlsZC0+c3R5bGUoKS0+Z3JpZEl0ZW1Sb3coKSk7CisKKyAgICAgICAgbV9n
cmlkW3Jvd1RyYWNrXVtjb2x1bW5UcmFja10uYXBwZW5kKGNoaWxkKTsKKyAgICB9Cit9CisKIHZv
aWQgUmVuZGVyR3JpZDo6bGF5b3V0R3JpZEl0ZW1zKCkKIHsKLSAgICBWZWN0b3I8R3JpZFRyYWNr
PiBjb2x1bW5UcmFja3MobWF4aW11bUluZGV4SW5EaXJlY3Rpb24oRm9yQ29sdW1ucykpOwotICAg
IFZlY3RvcjxHcmlkVHJhY2s+IHJvd1RyYWNrcyhtYXhpbXVtSW5kZXhJbkRpcmVjdGlvbihGb3JS
b3dzKSk7CisgICAgcGxhY2VJdGVtc09uR3JpZCgpOworCisgICAgVmVjdG9yPEdyaWRUcmFjaz4g
Y29sdW1uVHJhY2tzKGdyaWRDb2x1bW5Db3VudCgpKTsKKyAgICBWZWN0b3I8R3JpZFRyYWNrPiBy
b3dUcmFja3MoZ3JpZFJvd0NvdW50KCkpOwogICAgIGNvbXB1dGVkVXNlZEJyZWFkdGhPZkdyaWRU
cmFja3MoRm9yQ29sdW1ucywgY29sdW1uVHJhY2tzLCByb3dUcmFja3MpOwogICAgIEFTU0VSVCh0
cmFja3NBcmVXaWRlclRoYW5NaW5UcmFja0JyZWFkdGgoRm9yQ29sdW1ucywgY29sdW1uVHJhY2tz
KSk7CiAgICAgY29tcHV0ZWRVc2VkQnJlYWR0aE9mR3JpZFRyYWNrcyhGb3JSb3dzLCBjb2x1bW5U
cmFja3MsIHJvd1RyYWNrcyk7CkBAIC00NzksNiArNTI3LDcgQEAgdm9pZCBSZW5kZXJHcmlkOjps
YXlvdXRHcmlkSXRlbXMoKQogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaGFuZGxlIG1pbiAvIG1h
eCBsb2dpY2FsIGhlaWdodC4KIAogICAgIHNldExvZ2ljYWxIZWlnaHQobG9naWNhbEhlaWdodCgp
ICsgYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKSk7CisgICAgbV9ncmlkLmNsZWFyKCk7
CiB9CiAKIHNpemVfdCBSZW5kZXJHcmlkOjpyZXNvbHZlR3JpZFBvc2l0aW9uKFRyYWNrU2l6aW5n
RGlyZWN0aW9uIGRpcmVjdGlvbiwgY29uc3QgUmVuZGVyT2JqZWN0KiBncmlkSXRlbSkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCmluZGV4IDI1MTNjMjFiOTc1YzRhYjMy
ZmE1MTY0NGVkYTg2YzExN2M2ZTlmN2UuLmFmYWRiOGZhZWI5NDRmYmQ2YWM4YzE3MGQ3MTBjY2My
MTE4Y2JhZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlk
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaApAQCAtNTAsMTIg
KzUwLDE0IEBAIHByaXZhdGU6CiAKICAgICBMYXlvdXRVbml0IGNvbXB1dGVQcmVmZXJyZWRUcmFj
a1dpZHRoKGNvbnN0IExlbmd0aCYsIHNpemVfdCkgY29uc3Q7CiAKKyAgICBjbGFzcyBHcmlkSXRl
cmF0b3I7CiAgICAgZW51bSBUcmFja1NpemluZ0RpcmVjdGlvbiB7IEZvckNvbHVtbnMsIEZvclJv
d3MgfTsKICAgICB2b2lkIGNvbXB1dGVkVXNlZEJyZWFkdGhPZkdyaWRUcmFja3MoVHJhY2tTaXpp
bmdEaXJlY3Rpb24sIFZlY3RvcjxHcmlkVHJhY2s+JiBjb2x1bW5UcmFja3MsIFZlY3RvcjxHcmlk
VHJhY2s+JiByb3dUcmFja3MpOwogICAgIExheW91dFVuaXQgY29tcHV0ZVVzZWRCcmVhZHRoT2ZN
aW5MZW5ndGgoVHJhY2tTaXppbmdEaXJlY3Rpb24sIGNvbnN0IExlbmd0aCYpIGNvbnN0OwogICAg
IExheW91dFVuaXQgY29tcHV0ZVVzZWRCcmVhZHRoT2ZNYXhMZW5ndGgoVHJhY2tTaXppbmdEaXJl
Y3Rpb24sIGNvbnN0IExlbmd0aCYpIGNvbnN0OwogICAgIExheW91dFVuaXQgY29tcHV0ZVVzZWRC
cmVhZHRoT2ZTcGVjaWZpZWRMZW5ndGgoVHJhY2tTaXppbmdEaXJlY3Rpb24sIGNvbnN0IExlbmd0
aCYpIGNvbnN0OwogICAgIHZvaWQgcmVzb2x2ZUNvbnRlbnRCYXNlZFRyYWNrU2l6aW5nRnVuY3Rp
b25zKFRyYWNrU2l6aW5nRGlyZWN0aW9uLCBWZWN0b3I8R3JpZFRyYWNrPiYgY29sdW1uVHJhY2tz
LCBWZWN0b3I8R3JpZFRyYWNrPiYgcm93VHJhY2tzLCBMYXlvdXRVbml0JiBhdmFpbGFibGVMb2dp
Y2FsU3BhY2UpOworICAgIHZvaWQgcGxhY2VJdGVtc09uR3JpZCgpOwogICAgIHZvaWQgbGF5b3V0
R3JpZEl0ZW1zKCk7CiAKICAgICB0eXBlZGVmIExheW91dFVuaXQgKFJlbmRlckdyaWQ6OiogU2l6
aW5nRnVuY3Rpb24pKFJlbmRlckJveCosIFRyYWNrU2l6aW5nRGlyZWN0aW9uLCBWZWN0b3I8R3Jp
ZFRyYWNrPiYpOwpAQCAtNzcsNiArNzksMTIgQEAgcHJpdmF0ZToKICNpZm5kZWYgTkRFQlVHCiAg
ICAgYm9vbCB0cmFja3NBcmVXaWRlclRoYW5NaW5UcmFja0JyZWFkdGgoVHJhY2tTaXppbmdEaXJl
Y3Rpb24sIGNvbnN0IFZlY3RvcjxHcmlkVHJhY2s+Jik7CiAjZW5kaWYKKworICAgIHNpemVfdCBn
cmlkQ29sdW1uQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2dyaWQuaXNFbXB0eSgpID8gMCA6IG1f
Z3JpZFswXS5zaXplKCk7IH0KKyAgICBzaXplX3QgZ3JpZFJvd0NvdW50KCkgY29uc3QgeyByZXR1
cm4gbV9ncmlkLnNpemUoKTsgfQorCisgICAgdHlwZWRlZiBWZWN0b3I8VmVjdG9yPFZlY3RvcjxS
ZW5kZXJCb3gqLCAxPiA+ID4gR3JpZDsKKyAgICBHcmlkIG1fZ3JpZDsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188386</attachid>
            <date>2013-02-14 11:13:07 -0800</date>
            <delta_ts>2013-02-14 11:33:48 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-109714-20130214110935.patch</filename>
            <type>text/plain</type>
            <size>11286</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyODc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWNhNTE2ODNjZDczMzJj
NmQyYTBhNzQ3ZTQ2ZWQ2OTJmZGRmNTdkOS4uYjkzNDZiNTEzNTYxMGRjNzc2NmIzZmE2M2M2ZDll
MjkyYjEyZGQ1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEzLTAyLTE0ICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIFtDU1MgR3Jp
ZCBMYXlvdXRdIEFkZCBhbiBpbnRlcm5hbCAyRCBncmlkIHJlcHJlc2VudGF0aW9uIHRvIFJlbmRl
ckdyaWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
OTcxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE9qYW4gVmFmYWkuCisKKyAgICAgICAgVGhpcyBj
aGFuZ2UgaW50cm9kdWNlcyBhIDJEIGdyaWQgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdyaWQgYXJl
YXMuIE91ciBpbXBsZW1lbnRhdGlvbgorICAgICAgICBpcyBhIHN0cmFpZ2h0IFZlY3RvciBvZiBW
ZWN0b3JzIGZvciB0aGUgZ3JpZCBhcmVhcywgZWFjaCBncmlkIGFyZWEgYWJsZSB0byBob2xkIGFu
CisgICAgICAgIGFyYml0cmFyeSBudW1iZXIgb2YgUmVuZGVyQm94KiBzbyB0aGV5IGhvbGQgYSBW
ZWN0b3Igb2YgUmVuZGVyQm94ZXMuIEFzIGFuIG9wdGltaXphdGlvbiwKKyAgICAgICAgZWFjaCBn
cmlkIGFyZWEgaGFzIGVub3VnaCBpbmxpbmUgc3RvcmFnZSB0byBob2xkIG9uZSBncmlkIGl0ZW0g
d2hpY2ggc2hvdWxkIGNvdmVyCisgICAgICAgIG1vc3QgY2FzZXMuCisKKyAgICAgICAgSW4gb3Jk
ZXIgdG8ga2VlcCB0aGUgY29kZSByZWFkYWJsZSwgYSBHcmlkSXRlcmF0b3Igd2FzIGludHJvZHVj
ZWQgdG8gaGlkZSB0aGUgbmV3IGdyaWQuCisKKyAgICAgICAgUmVmYWN0b3JpbmcsIGNvdmVyZWQg
YnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHA6
CisgICAgICAgIChSZW5kZXJHcmlkOjpHcmlkSXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyR3JpZDo6R3JpZEl0ZXJhdG9yOjpHcmlkSXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyR3JpZDo6R3JpZEl0ZXJhdG9yOjpuZXh0R3JpZEl0ZW0pOgorICAgICAgICBBZGRl
ZCBhIG1vbm8tZGlyZWN0aW9uYWwgaXRlcmF0b3IuIEluIG9yZGVyIHRvIGJlIG1vcmUgYWxpZ25l
ZCB3aXRoIHRoZSByZXN0IG9mIHRoZSBjb2RlLAorICAgICAgICB0aGlzIGl0ZXJhdG9yIGFjdHVh
bGx5IHdhbGtzIG9ydGhvZ29uYWxseSB0byB0aGUgfGRpcmVjdGlvbnwgKGllIGZpeGluZyB0aGUg
fGRpcmVjdGlvbnwncyB0cmFjaykuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpjb21wdXRlUHJlZmVycmVkTG9naWNh
bFdpZHRocyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpsYXlvdXRHcmlkSXRlbXMp
OgorICAgICAgICBVcGRhdGVkIHRoZXNlIDIgZnVuY3Rpb25zIHRvIHBsYWNlIHRoZSBpdGVtcyBv
biB0aGUgZ3JpZCBhbmQgY2xlYXIgaXQgYXQgdGhlIGVuZC4KKworICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyR3JpZDo6Y29tcHV0ZVByZWZlcnJlZFRyYWNrV2lkdGgpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyR3JpZDo6cmVzb2x2ZUNvbnRlbnRCYXNlZFRyYWNrU2l6aW5nRnVuY3Rpb25zRm9y
SXRlbXMpOgorICAgICAgICBVcGRhdGVkIHRvIHVzZSB0aGUgR3JpZEl0ZXJhdG9yIHRvIHdhbGsg
b3ZlciB0aGUgcm93cyAvIGNvbHVtbnMuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6
OnBsYWNlSXRlbXNPbkdyaWQpOgorICAgICAgICBBZGRlZCB0aGlzIGZ1bmN0aW9uIHRoYXQgaW5z
ZXJ0cyB0aGUgZ3JpZCBpdGVtcyBpbnRvIHRoZSByaWdodCBncmlkIGFyZWEuCisKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyR3JpZC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6
Z3JpZENvbHVtbkNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmdyaWRSb3dD
b3VudCk6CisgICAgICAgIEFkZGVkIHRoZXNlIGhlbHBlciBmdW5jdGlvbnMuCisKIDIwMTMtMDIt
MTQgIFZsYWRpc2xhdiBLYXpuYWNoZWV2ICA8a2F6bmFjaGVldkBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgV2ViIEluc3BlY3RvcjogQ29sb3IgcGlja2VyIHNob3VsZCBub3QgYmUgYXZhaWxhYmxl
IGluIENvbXB1dGVkIFN0eWxlcyBwYW5lLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckdyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdy
aWQuY3BwCmluZGV4IDQwMmQzZTk3NjlkYWNmMDA3NTZhOTg2NDdkODFiYTJmZDZkYmJkMWQuLmYx
YWQ1NjkyZDU4OGM4MGZkOTAyZTY1NTRlMTRjYjkyZjQxYzY0YWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKQEAgLTY2LDYgKzY2LDQ0IEBAIHB1YmxpYzoKICAgICBM
YXlvdXRVbml0IG1fbWF4QnJlYWR0aDsKIH07CiAKK2NsYXNzIFJlbmRlckdyaWQ6OkdyaWRJdGVy
YXRvciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoR3JpZEl0ZXJhdG9yKTsKK3B1YmxpYzoK
KyAgICAvLyB8ZGlyZWN0aW9ufCBpcyB0aGUgZGlyZWN0aW9uIHRoYXQgaXMgZml4ZWQgdG8gfGZp
eGVkVHJhY2tJbmRleHwgc28gZS5nCisgICAgLy8gR3JpZEl0ZXJhdG9yKG1fZ3JpZCwgRm9yQ29s
dW1ucywgMSkgd2lsbCB3YWxrIG92ZXIgdGhlIHJvd3Mgb2YgdGhlIDJuZCBjb2x1bW4uCisgICAg
R3JpZEl0ZXJhdG9yKGNvbnN0IFZlY3RvcjxWZWN0b3I8VmVjdG9yPFJlbmRlckJveCosIDE+ID4g
PiYgZ3JpZCwgVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCBzaXplX3QgZml4ZWRUcmFj
a0luZGV4KQorICAgICAgICA6IG1fZ3JpZChncmlkKQorICAgICAgICAsIG1fZGlyZWN0aW9uKGRp
cmVjdGlvbikKKyAgICAgICAgLCBtX3Jvd0luZGV4KChkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykg
PyAwIDogZml4ZWRUcmFja0luZGV4KQorICAgICAgICAsIG1fY29sdW1uSW5kZXgoKGRpcmVjdGlv
biA9PSBGb3JDb2x1bW5zKSA/IGZpeGVkVHJhY2tJbmRleCA6IDApCisgICAgICAgICwgbV9jaGls
ZEluZGV4KDApCisgICAgeworICAgIH0KKworICAgIFJlbmRlckJveCogbmV4dEdyaWRJdGVtKCkK
KyAgICB7CisgICAgICAgIGlmICghbV9ncmlkLnNpemUoKSkKKyAgICAgICAgICAgIHJldHVybiAw
OworCisgICAgICAgIHNpemVfdCYgdmFyeWluZ1RyYWNrSW5kZXggPSAobV9kaXJlY3Rpb24gPT0g
Rm9yQ29sdW1ucykgPyBtX3Jvd0luZGV4IDogbV9jb2x1bW5JbmRleDsKKyAgICAgICAgY29uc3Qg
c2l6ZV90IGVuZE9mVmFyeWluZ1RyYWNrSW5kZXggPSAobV9kaXJlY3Rpb24gPT0gRm9yQ29sdW1u
cykgPyBtX2dyaWQuc2l6ZSgpIDogbV9ncmlkWzBdLnNpemUoKTsKKyAgICAgICAgZm9yICg7IHZh
cnlpbmdUcmFja0luZGV4IDwgZW5kT2ZWYXJ5aW5nVHJhY2tJbmRleDsgKyt2YXJ5aW5nVHJhY2tJ
bmRleCkgeworICAgICAgICAgICAgY29uc3QgVmVjdG9yPFJlbmRlckJveCo+JiBjaGlsZHJlbiA9
IG1fZ3JpZFttX3Jvd0luZGV4XVttX2NvbHVtbkluZGV4XTsKKyAgICAgICAgICAgIGZvciAoOyBt
X2NoaWxkSW5kZXggPCBjaGlsZHJlbi5zaXplKCk7ICsrbV9jaGlsZEluZGV4KQorICAgICAgICAg
ICAgICAgIHJldHVybiBjaGlsZHJlblttX2NoaWxkSW5kZXgrK107CisKKyAgICAgICAgICAgIG1f
Y2hpbGRJbmRleCA9IDA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorcHJp
dmF0ZToKKyAgICBjb25zdCBWZWN0b3I8VmVjdG9yPFZlY3RvcjxSZW5kZXJCb3gqLCAxPiA+ID4m
IG1fZ3JpZDsKKyAgICBUcmFja1NpemluZ0RpcmVjdGlvbiBtX2RpcmVjdGlvbjsKKyAgICBzaXpl
X3QgbV9yb3dJbmRleDsKKyAgICBzaXplX3QgbV9jb2x1bW5JbmRleDsKKyAgICBzaXplX3QgbV9j
aGlsZEluZGV4OworfTsKKwogUmVuZGVyR3JpZDo6UmVuZGVyR3JpZChFbGVtZW50KiBlbGVtZW50
KQogICAgIDogUmVuZGVyQmxvY2soZWxlbWVudCkKIHsKQEAgLTEzNCw2ICsxNzIsOCBAQCB2b2lk
IFJlbmRlckdyaWQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkKIHsKICAgICBBU1NF
UlQocHJlZmVycmVkTG9naWNhbFdpZHRoc0RpcnR5KCkpOwogCisgICAgcGxhY2VJdGVtc09uR3Jp
ZCgpOworCiAgICAgbV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGggPSAwOwogICAgIG1fbWF4UHJl
ZmVycmVkTG9naWNhbFdpZHRoID0gMDsKIApAQCAtMTU5LDYgKzE5OSw3IEBAIHZvaWQgUmVuZGVy
R3JpZDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKQogICAgIG1fbWF4UHJlZmVycmVk
TG9naWNhbFdpZHRoICs9IGJvcmRlckFuZFBhZGRpbmdJbklubGluZURpcmVjdGlvbjsKIAogICAg
IHNldFByZWZlcnJlZExvZ2ljYWxXaWR0aHNEaXJ0eShmYWxzZSk7CisgICAgbV9ncmlkLmNsZWFy
KCk7CiB9CiAKIExheW91dFVuaXQgUmVuZGVyR3JpZDo6Y29tcHV0ZVByZWZlcnJlZFRyYWNrV2lk
dGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIHNpemVfdCB0cmFja0luZGV4KSBjb25zdApAQCAtMTcw
LDI4ICsyMTEsMjAgQEAgTGF5b3V0VW5pdCBSZW5kZXJHcmlkOjpjb21wdXRlUHJlZmVycmVkVHJh
Y2tXaWR0aChjb25zdCBMZW5ndGgmIGxlbmd0aCwgc2l6ZV90IHQKIAogICAgIGlmIChsZW5ndGgu
aXNNaW5Db250ZW50KCkpIHsKICAgICAgICAgTGF5b3V0VW5pdCBtaW5Db250ZW50U2l6ZSA9IDA7
Ci0gICAgICAgIC8vIEZJWE1FOiBJdCdzIGluZWZmaWNpZW50IHRvIGl0ZXJhdGUgb3ZlciBvdXIg
Z3JpZCBpdGVtcy4gV2Ugc2hvdWxkIGJlIGFibGUgdG8KLSAgICAgICAgLy8gZ2V0IHRoZSBzdWJz
ZXQgb2YgZ3JpZCBpdGVtcyBpbiB0aGUgY3VycmVudCByb3cgLyBjb2x1bW4gZmFzdGVyLgotICAg
ICAgICBmb3IgKFJlbmRlckJveCogY2hpbGQgPSBmaXJzdENoaWxkQm94KCk7IGNoaWxkOyBjaGls
ZCA9IGNoaWxkLT5uZXh0U2libGluZ0JveCgpKSB7Ci0gICAgICAgICAgICBzaXplX3QgY2VsbElu
ZGV4ID0gcmVzb2x2ZUdyaWRQb3NpdGlvbihGb3JDb2x1bW5zLCBjaGlsZCk7Ci0gICAgICAgICAg
ICBpZiAoY2VsbEluZGV4ICE9IHRyYWNrSW5kZXgpCi0gICAgICAgICAgICAgICAgY29udGludWU7
Ci0KKyAgICAgICAgR3JpZEl0ZXJhdG9yIGl0ZXJhdG9yKG1fZ3JpZCwgRm9yQ29sdW1ucywgdHJh
Y2tJbmRleCk7CisgICAgICAgIHdoaWxlIChSZW5kZXJCb3gqIGdyaWRJdGVtID0gaXRlcmF0b3Iu
bmV4dEdyaWRJdGVtKCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaW5jbHVk
ZSB0aGUgY2hpbGQncyBmaXhlZCBtYXJnaW5zIGxpa2UgUmVuZGVyRmxleGlibGVCb3guCi0gICAg
ICAgICAgICBtaW5Db250ZW50U2l6ZSA9IHN0ZDo6bWF4KG1pbkNvbnRlbnRTaXplLCBjaGlsZC0+
bWluUHJlZmVycmVkTG9naWNhbFdpZHRoKCkpOworICAgICAgICAgICAgbWluQ29udGVudFNpemUg
PSBzdGQ6Om1heChtaW5Db250ZW50U2l6ZSwgZ3JpZEl0ZW0tPm1pblByZWZlcnJlZExvZ2ljYWxX
aWR0aCgpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbWluQ29udGVudFNpemU7CiAgICAg
fQogCiAgICAgaWYgKGxlbmd0aC5pc01heENvbnRlbnQoKSkgewogICAgICAgICBMYXlvdXRVbml0
IG1heENvbnRlbnRTaXplID0gMDsKLSAgICAgICAgZm9yIChSZW5kZXJCb3gqIGNoaWxkID0gZmly
c3RDaGlsZEJveCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmdCb3goKSkgewot
ICAgICAgICAgICAgc2l6ZV90IGNlbGxJbmRleCA9IHJlc29sdmVHcmlkUG9zaXRpb24oRm9yQ29s
dW1ucywgY2hpbGQpOwotICAgICAgICAgICAgaWYgKGNlbGxJbmRleCAhPSB0cmFja0luZGV4KQot
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCisgICAgICAgIEdyaWRJdGVyYXRvciBpdGVyYXRv
cihtX2dyaWQsIEZvckNvbHVtbnMsIHRyYWNrSW5kZXgpOworICAgICAgICB3aGlsZSAoUmVuZGVy
Qm94KiBncmlkSXRlbSA9IGl0ZXJhdG9yLm5leHRHcmlkSXRlbSgpKSB7CiAgICAgICAgICAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIGluY2x1ZGUgdGhlIGNoaWxkJ3MgZml4ZWQgbWFyZ2lucyBsaWtl
IFJlbmRlckZsZXhpYmxlQm94LgotICAgICAgICAgICAgbWF4Q29udGVudFNpemUgPSBzdGQ6Om1h
eChtYXhDb250ZW50U2l6ZSwgY2hpbGQtPm1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCgpKTsKKyAg
ICAgICAgICAgIG1heENvbnRlbnRTaXplID0gc3RkOjptYXgobWF4Q29udGVudFNpemUsIGdyaWRJ
dGVtLT5tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0
dXJuIG1heENvbnRlbnRTaXplOwogICAgIH0KQEAgLTM2OSwxNSArNDAyLDEyIEBAIHZvaWQgUmVu
ZGVyR3JpZDo6cmVzb2x2ZUNvbnRlbnRCYXNlZFRyYWNrU2l6aW5nRnVuY3Rpb25zKFRyYWNrU2l6
aW5nRGlyZWN0aW9uIGRpCiAgICAgfQogfQogCi12b2lkIFJlbmRlckdyaWQ6OnJlc29sdmVDb250
ZW50QmFzZWRUcmFja1NpemluZ0Z1bmN0aW9uc0Zvckl0ZW1zKFRyYWNrU2l6aW5nRGlyZWN0aW9u
IGRpcmVjdGlvbiwgVmVjdG9yPEdyaWRUcmFjaz4mIGNvbHVtblRyYWNrcywgVmVjdG9yPEdyaWRU
cmFjaz4mIHJvd1RyYWNrcywgc2l6ZV90IGksIFNpemluZ0Z1bmN0aW9uIHNpemluZ0Z1bmN0aW9u
LCBBY2N1bXVsYXRvckdldHRlciB0cmFja0dldHRlciwgQWNjdW11bGF0b3JHcm93RnVuY3Rpb24g
dHJhY2tHcm93dGhGdW5jdGlvbikKK3ZvaWQgUmVuZGVyR3JpZDo6cmVzb2x2ZUNvbnRlbnRCYXNl
ZFRyYWNrU2l6aW5nRnVuY3Rpb25zRm9ySXRlbXMoVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0
aW9uLCBWZWN0b3I8R3JpZFRyYWNrPiYgY29sdW1uVHJhY2tzLCBWZWN0b3I8R3JpZFRyYWNrPiYg
cm93VHJhY2tzLCBzaXplX3QgdHJhY2tJbmRleCwgU2l6aW5nRnVuY3Rpb24gc2l6aW5nRnVuY3Rp
b24sIEFjY3VtdWxhdG9yR2V0dGVyIHRyYWNrR2V0dGVyLCBBY2N1bXVsYXRvckdyb3dGdW5jdGlv
biB0cmFja0dyb3d0aEZ1bmN0aW9uKQogewotICAgIEdyaWRUcmFjayYgdHJhY2sgPSAoZGlyZWN0
aW9uID09IEZvckNvbHVtbnMpID8gY29sdW1uVHJhY2tzW2ldIDogcm93VHJhY2tzW2ldOwotICAg
IGZvciAoUmVuZGVyQm94KiBjaGlsZCA9IGZpcnN0Q2hpbGRCb3goKTsgY2hpbGQ7IGNoaWxkID0g
Y2hpbGQtPm5leHRTaWJsaW5nQm94KCkpIHsKLSAgICAgICAgc2l6ZV90IGNlbGxJbmRleCA9IHJl
c29sdmVHcmlkUG9zaXRpb24oZGlyZWN0aW9uLCBjaGlsZCk7Ci0gICAgICAgIGlmIChjZWxsSW5k
ZXggIT0gaSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIExheW91dFVuaXQgY29u
dGVudFNpemUgPSAodGhpcy0+KnNpemluZ0Z1bmN0aW9uKShjaGlsZCwgZGlyZWN0aW9uLCBjb2x1
bW5UcmFja3MpOworICAgIEdyaWRUcmFjayYgdHJhY2sgPSAoZGlyZWN0aW9uID09IEZvckNvbHVt
bnMpID8gY29sdW1uVHJhY2tzW3RyYWNrSW5kZXhdIDogcm93VHJhY2tzW3RyYWNrSW5kZXhdOwor
ICAgIEdyaWRJdGVyYXRvciBpdGVyYXRvcihtX2dyaWQsIGRpcmVjdGlvbiwgdHJhY2tJbmRleCk7
CisgICAgd2hpbGUgKFJlbmRlckJveCogZ3JpZEl0ZW0gPSBpdGVyYXRvci5uZXh0R3JpZEl0ZW0o
KSkgeworICAgICAgICBMYXlvdXRVbml0IGNvbnRlbnRTaXplID0gKHRoaXMtPipzaXppbmdGdW5j
dGlvbikoZ3JpZEl0ZW0sIGRpcmVjdGlvbiwgY29sdW1uVHJhY2tzKTsKICAgICAgICAgTGF5b3V0
VW5pdCBhZGRpdGlvbmFsQnJlYWR0aFNwYWNlID0gY29udGVudFNpemUgLSAodHJhY2suKnRyYWNr
R2V0dGVyKSgpOwogICAgICAgICBWZWN0b3I8R3JpZFRyYWNrKj4gdHJhY2tzOwogICAgICAgICB0
cmFja3MuYXBwZW5kKCZ0cmFjayk7CkBAIC00MzYsMTAgKzQ2NiwyOCBAQCBib29sIFJlbmRlckdy
aWQ6OnRyYWNrc0FyZVdpZGVyVGhhbk1pblRyYWNrQnJlYWR0aChUcmFja1NpemluZ0RpcmVjdGlv
biBkaXJlY3RpbwogfQogI2VuZGlmCiAKK3ZvaWQgUmVuZGVyR3JpZDo6cGxhY2VJdGVtc09uR3Jp
ZCgpCit7CisgICAgQVNTRVJUKG1fZ3JpZC5pc0VtcHR5KCkpOworICAgIG1fZ3JpZC5ncm93KG1h
eGltdW1JbmRleEluRGlyZWN0aW9uKEZvclJvd3MpKTsKKyAgICBzaXplX3QgbWF4aW11bUNvbHVt
bkluZGV4ID0gbWF4aW11bUluZGV4SW5EaXJlY3Rpb24oRm9yQ29sdW1ucyk7CisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBncmlkUm93Q291bnQoKTsgKytpKQorICAgICAgICBtX2dyaWRbaV0u
Z3JvdyhtYXhpbXVtQ29sdW1uSW5kZXgpOworCisgICAgZm9yIChSZW5kZXJCb3gqIGNoaWxkID0g
Zmlyc3RDaGlsZEJveCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmdCb3goKSkg
eworICAgICAgICBzaXplX3QgY29sdW1uVHJhY2sgPSByZXNvbHZlR3JpZFBvc2l0aW9uKGNoaWxk
LT5zdHlsZSgpLT5ncmlkSXRlbUNvbHVtbigpKTsKKyAgICAgICAgc2l6ZV90IHJvd1RyYWNrID0g
cmVzb2x2ZUdyaWRQb3NpdGlvbihjaGlsZC0+c3R5bGUoKS0+Z3JpZEl0ZW1Sb3coKSk7CisKKyAg
ICAgICAgbV9ncmlkW3Jvd1RyYWNrXVtjb2x1bW5UcmFja10uYXBwZW5kKGNoaWxkKTsKKyAgICB9
Cit9CisKIHZvaWQgUmVuZGVyR3JpZDo6bGF5b3V0R3JpZEl0ZW1zKCkKIHsKLSAgICBWZWN0b3I8
R3JpZFRyYWNrPiBjb2x1bW5UcmFja3MobWF4aW11bUluZGV4SW5EaXJlY3Rpb24oRm9yQ29sdW1u
cykpOwotICAgIFZlY3RvcjxHcmlkVHJhY2s+IHJvd1RyYWNrcyhtYXhpbXVtSW5kZXhJbkRpcmVj
dGlvbihGb3JSb3dzKSk7CisgICAgcGxhY2VJdGVtc09uR3JpZCgpOworCisgICAgVmVjdG9yPEdy
aWRUcmFjaz4gY29sdW1uVHJhY2tzKGdyaWRDb2x1bW5Db3VudCgpKTsKKyAgICBWZWN0b3I8R3Jp
ZFRyYWNrPiByb3dUcmFja3MoZ3JpZFJvd0NvdW50KCkpOwogICAgIGNvbXB1dGVkVXNlZEJyZWFk
dGhPZkdyaWRUcmFja3MoRm9yQ29sdW1ucywgY29sdW1uVHJhY2tzLCByb3dUcmFja3MpOwogICAg
IEFTU0VSVCh0cmFja3NBcmVXaWRlclRoYW5NaW5UcmFja0JyZWFkdGgoRm9yQ29sdW1ucywgY29s
dW1uVHJhY2tzKSk7CiAgICAgY29tcHV0ZWRVc2VkQnJlYWR0aE9mR3JpZFRyYWNrcyhGb3JSb3dz
LCBjb2x1bW5UcmFja3MsIHJvd1RyYWNrcyk7CkBAIC00NzksNiArNTI3LDcgQEAgdm9pZCBSZW5k
ZXJHcmlkOjpsYXlvdXRHcmlkSXRlbXMoKQogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgaGFuZGxl
IG1pbiAvIG1heCBsb2dpY2FsIGhlaWdodC4KIAogICAgIHNldExvZ2ljYWxIZWlnaHQobG9naWNh
bEhlaWdodCgpICsgYm9yZGVyQW5kUGFkZGluZ0xvZ2ljYWxIZWlnaHQoKSk7CisgICAgbV9ncmlk
LmNsZWFyKCk7CiB9CiAKIHNpemVfdCBSZW5kZXJHcmlkOjpyZXNvbHZlR3JpZFBvc2l0aW9uKFRy
YWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwgY29uc3QgUmVuZGVyT2JqZWN0KiBncmlkSXRl
bSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlk
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCmluZGV4IDI1MTNjMjFi
OTc1YzRhYjMyZmE1MTY0NGVkYTg2YzExN2M2ZTlmN2UuLmQzYzZiYjE5MGFjZWZkYjgzNTBkNTIw
NTI4OTFjYmM3Y2I3MjZhODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJHcmlkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaApA
QCAtNTAsMTIgKzUwLDE0IEBAIHByaXZhdGU6CiAKICAgICBMYXlvdXRVbml0IGNvbXB1dGVQcmVm
ZXJyZWRUcmFja1dpZHRoKGNvbnN0IExlbmd0aCYsIHNpemVfdCkgY29uc3Q7CiAKKyAgICBjbGFz
cyBHcmlkSXRlcmF0b3I7CiAgICAgZW51bSBUcmFja1NpemluZ0RpcmVjdGlvbiB7IEZvckNvbHVt
bnMsIEZvclJvd3MgfTsKICAgICB2b2lkIGNvbXB1dGVkVXNlZEJyZWFkdGhPZkdyaWRUcmFja3Mo
VHJhY2tTaXppbmdEaXJlY3Rpb24sIFZlY3RvcjxHcmlkVHJhY2s+JiBjb2x1bW5UcmFja3MsIFZl
Y3RvcjxHcmlkVHJhY2s+JiByb3dUcmFja3MpOwogICAgIExheW91dFVuaXQgY29tcHV0ZVVzZWRC
cmVhZHRoT2ZNaW5MZW5ndGgoVHJhY2tTaXppbmdEaXJlY3Rpb24sIGNvbnN0IExlbmd0aCYpIGNv
bnN0OwogICAgIExheW91dFVuaXQgY29tcHV0ZVVzZWRCcmVhZHRoT2ZNYXhMZW5ndGgoVHJhY2tT
aXppbmdEaXJlY3Rpb24sIGNvbnN0IExlbmd0aCYpIGNvbnN0OwogICAgIExheW91dFVuaXQgY29t
cHV0ZVVzZWRCcmVhZHRoT2ZTcGVjaWZpZWRMZW5ndGgoVHJhY2tTaXppbmdEaXJlY3Rpb24sIGNv
bnN0IExlbmd0aCYpIGNvbnN0OwogICAgIHZvaWQgcmVzb2x2ZUNvbnRlbnRCYXNlZFRyYWNrU2l6
aW5nRnVuY3Rpb25zKFRyYWNrU2l6aW5nRGlyZWN0aW9uLCBWZWN0b3I8R3JpZFRyYWNrPiYgY29s
dW1uVHJhY2tzLCBWZWN0b3I8R3JpZFRyYWNrPiYgcm93VHJhY2tzLCBMYXlvdXRVbml0JiBhdmFp
bGFibGVMb2dpY2FsU3BhY2UpOworICAgIHZvaWQgcGxhY2VJdGVtc09uR3JpZCgpOwogICAgIHZv
aWQgbGF5b3V0R3JpZEl0ZW1zKCk7CiAKICAgICB0eXBlZGVmIExheW91dFVuaXQgKFJlbmRlckdy
aWQ6OiogU2l6aW5nRnVuY3Rpb24pKFJlbmRlckJveCosIFRyYWNrU2l6aW5nRGlyZWN0aW9uLCBW
ZWN0b3I8R3JpZFRyYWNrPiYpOwpAQCAtNzcsNiArNzksMTEgQEAgcHJpdmF0ZToKICNpZm5kZWYg
TkRFQlVHCiAgICAgYm9vbCB0cmFja3NBcmVXaWRlclRoYW5NaW5UcmFja0JyZWFkdGgoVHJhY2tT
aXppbmdEaXJlY3Rpb24sIGNvbnN0IFZlY3RvcjxHcmlkVHJhY2s+Jik7CiAjZW5kaWYKKworICAg
IHNpemVfdCBncmlkQ29sdW1uQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2dyaWQuaXNFbXB0eSgp
ID8gMCA6IG1fZ3JpZFswXS5zaXplKCk7IH0KKyAgICBzaXplX3QgZ3JpZFJvd0NvdW50KCkgY29u
c3QgeyByZXR1cm4gbV9ncmlkLnNpemUoKTsgfQorCisgICAgVmVjdG9yPFZlY3RvcjxWZWN0b3I8
UmVuZGVyQm94KiwgMT4gPiA+IG1fZ3JpZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188389</attachid>
            <date>2013-02-14 11:33:51 -0800</date>
            <delta_ts>2013-02-14 12:17:09 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-109714-20130214113018.patch</filename>
            <type>text/plain</type>
            <size>11267</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyODc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWNhNTE2ODNjZDczMzJj
NmQyYTBhNzQ3ZTQ2ZWQ2OTJmZGRmNTdkOS4uYjkzNDZiNTEzNTYxMGRjNzc2NmIzZmE2M2M2ZDll
MjkyYjEyZGQ1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEzLTAyLTE0ICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIFtDU1MgR3Jp
ZCBMYXlvdXRdIEFkZCBhbiBpbnRlcm5hbCAyRCBncmlkIHJlcHJlc2VudGF0aW9uIHRvIFJlbmRl
ckdyaWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
OTcxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE9qYW4gVmFmYWkuCisKKyAgICAgICAgVGhpcyBj
aGFuZ2UgaW50cm9kdWNlcyBhIDJEIGdyaWQgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdyaWQgYXJl
YXMuIE91ciBpbXBsZW1lbnRhdGlvbgorICAgICAgICBpcyBhIHN0cmFpZ2h0IFZlY3RvciBvZiBW
ZWN0b3JzIGZvciB0aGUgZ3JpZCBhcmVhcywgZWFjaCBncmlkIGFyZWEgYWJsZSB0byBob2xkIGFu
CisgICAgICAgIGFyYml0cmFyeSBudW1iZXIgb2YgUmVuZGVyQm94KiBzbyB0aGV5IGhvbGQgYSBW
ZWN0b3Igb2YgUmVuZGVyQm94ZXMuIEFzIGFuIG9wdGltaXphdGlvbiwKKyAgICAgICAgZWFjaCBn
cmlkIGFyZWEgaGFzIGVub3VnaCBpbmxpbmUgc3RvcmFnZSB0byBob2xkIG9uZSBncmlkIGl0ZW0g
d2hpY2ggc2hvdWxkIGNvdmVyCisgICAgICAgIG1vc3QgY2FzZXMuCisKKyAgICAgICAgSW4gb3Jk
ZXIgdG8ga2VlcCB0aGUgY29kZSByZWFkYWJsZSwgYSBHcmlkSXRlcmF0b3Igd2FzIGludHJvZHVj
ZWQgdG8gaGlkZSB0aGUgbmV3IGdyaWQuCisKKyAgICAgICAgUmVmYWN0b3JpbmcsIGNvdmVyZWQg
YnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHA6
CisgICAgICAgIChSZW5kZXJHcmlkOjpHcmlkSXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyR3JpZDo6R3JpZEl0ZXJhdG9yOjpHcmlkSXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyR3JpZDo6R3JpZEl0ZXJhdG9yOjpuZXh0R3JpZEl0ZW0pOgorICAgICAgICBBZGRl
ZCBhIG1vbm8tZGlyZWN0aW9uYWwgaXRlcmF0b3IuIEluIG9yZGVyIHRvIGJlIG1vcmUgYWxpZ25l
ZCB3aXRoIHRoZSByZXN0IG9mIHRoZSBjb2RlLAorICAgICAgICB0aGlzIGl0ZXJhdG9yIGFjdHVh
bGx5IHdhbGtzIG9ydGhvZ29uYWxseSB0byB0aGUgfGRpcmVjdGlvbnwgKGllIGZpeGluZyB0aGUg
fGRpcmVjdGlvbnwncyB0cmFjaykuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpjb21wdXRlUHJlZmVycmVkTG9naWNh
bFdpZHRocyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpsYXlvdXRHcmlkSXRlbXMp
OgorICAgICAgICBVcGRhdGVkIHRoZXNlIDIgZnVuY3Rpb25zIHRvIHBsYWNlIHRoZSBpdGVtcyBv
biB0aGUgZ3JpZCBhbmQgY2xlYXIgaXQgYXQgdGhlIGVuZC4KKworICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyR3JpZDo6Y29tcHV0ZVByZWZlcnJlZFRyYWNrV2lkdGgpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyR3JpZDo6cmVzb2x2ZUNvbnRlbnRCYXNlZFRyYWNrU2l6aW5nRnVuY3Rpb25zRm9y
SXRlbXMpOgorICAgICAgICBVcGRhdGVkIHRvIHVzZSB0aGUgR3JpZEl0ZXJhdG9yIHRvIHdhbGsg
b3ZlciB0aGUgcm93cyAvIGNvbHVtbnMuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6
OnBsYWNlSXRlbXNPbkdyaWQpOgorICAgICAgICBBZGRlZCB0aGlzIGZ1bmN0aW9uIHRoYXQgaW5z
ZXJ0cyB0aGUgZ3JpZCBpdGVtcyBpbnRvIHRoZSByaWdodCBncmlkIGFyZWEuCisKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyR3JpZC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6
Z3JpZENvbHVtbkNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmdyaWRSb3dD
b3VudCk6CisgICAgICAgIEFkZGVkIHRoZXNlIGhlbHBlciBmdW5jdGlvbnMuCisKIDIwMTMtMDIt
MTQgIFZsYWRpc2xhdiBLYXpuYWNoZWV2ICA8a2F6bmFjaGVldkBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgV2ViIEluc3BlY3RvcjogQ29sb3IgcGlja2VyIHNob3VsZCBub3QgYmUgYXZhaWxhYmxl
IGluIENvbXB1dGVkIFN0eWxlcyBwYW5lLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckdyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdy
aWQuY3BwCmluZGV4IDQwMmQzZTk3NjlkYWNmMDA3NTZhOTg2NDdkODFiYTJmZDZkYmJkMWQuLjEz
ZWZhZDk5OWYyNGU0NzJmMTI1MzYwY2Y2YzljYzI4NzIyYzE5ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKQEAgLTY2LDYgKzY2LDQ0IEBAIHB1YmxpYzoKICAgICBM
YXlvdXRVbml0IG1fbWF4QnJlYWR0aDsKIH07CiAKK2NsYXNzIFJlbmRlckdyaWQ6OkdyaWRJdGVy
YXRvciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoR3JpZEl0ZXJhdG9yKTsKK3B1YmxpYzoK
KyAgICAvLyB8ZGlyZWN0aW9ufCBpcyB0aGUgZGlyZWN0aW9uIHRoYXQgaXMgZml4ZWQgdG8gfGZp
eGVkVHJhY2tJbmRleHwgc28gZS5nCisgICAgLy8gR3JpZEl0ZXJhdG9yKG1fZ3JpZCwgRm9yQ29s
dW1ucywgMSkgd2lsbCB3YWxrIG92ZXIgdGhlIHJvd3Mgb2YgdGhlIDJuZCBjb2x1bW4uCisgICAg
R3JpZEl0ZXJhdG9yKGNvbnN0IFZlY3RvcjxWZWN0b3I8VmVjdG9yPFJlbmRlckJveCosIDE+ID4g
PiYgZ3JpZCwgVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCBzaXplX3QgZml4ZWRUcmFj
a0luZGV4KQorICAgICAgICA6IG1fZ3JpZChncmlkKQorICAgICAgICAsIG1fZGlyZWN0aW9uKGRp
cmVjdGlvbikKKyAgICAgICAgLCBtX3Jvd0luZGV4KChkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykg
PyAwIDogZml4ZWRUcmFja0luZGV4KQorICAgICAgICAsIG1fY29sdW1uSW5kZXgoKGRpcmVjdGlv
biA9PSBGb3JDb2x1bW5zKSA/IGZpeGVkVHJhY2tJbmRleCA6IDApCisgICAgICAgICwgbV9jaGls
ZEluZGV4KDApCisgICAgeworICAgIH0KKworICAgIFJlbmRlckJveCogbmV4dEdyaWRJdGVtKCkK
KyAgICB7CisgICAgICAgIGlmICghbV9ncmlkLnNpemUoKSkKKyAgICAgICAgICAgIHJldHVybiAw
OworCisgICAgICAgIHNpemVfdCYgdmFyeWluZ1RyYWNrSW5kZXggPSAobV9kaXJlY3Rpb24gPT0g
Rm9yQ29sdW1ucykgPyBtX3Jvd0luZGV4IDogbV9jb2x1bW5JbmRleDsKKyAgICAgICAgY29uc3Qg
c2l6ZV90IGVuZE9mVmFyeWluZ1RyYWNrSW5kZXggPSAobV9kaXJlY3Rpb24gPT0gRm9yQ29sdW1u
cykgPyBtX2dyaWQuc2l6ZSgpIDogbV9ncmlkWzBdLnNpemUoKTsKKyAgICAgICAgZm9yICg7IHZh
cnlpbmdUcmFja0luZGV4IDwgZW5kT2ZWYXJ5aW5nVHJhY2tJbmRleDsgKyt2YXJ5aW5nVHJhY2tJ
bmRleCkgeworICAgICAgICAgICAgY29uc3QgVmVjdG9yPFJlbmRlckJveCo+JiBjaGlsZHJlbiA9
IG1fZ3JpZFttX3Jvd0luZGV4XVttX2NvbHVtbkluZGV4XTsKKyAgICAgICAgICAgIGlmIChtX2No
aWxkSW5kZXggPCBjaGlsZHJlbi5zaXplKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxk
cmVuW21fY2hpbGRJbmRleCsrXTsKKworICAgICAgICAgICAgbV9jaGlsZEluZGV4ID0gMDsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gMDsKKyAgICB9Citwcml2YXRlOgorICAgIGNvbnN0IFZl
Y3RvcjxWZWN0b3I8VmVjdG9yPFJlbmRlckJveCosIDE+ID4gPiYgbV9ncmlkOworICAgIFRyYWNr
U2l6aW5nRGlyZWN0aW9uIG1fZGlyZWN0aW9uOworICAgIHNpemVfdCBtX3Jvd0luZGV4OworICAg
IHNpemVfdCBtX2NvbHVtbkluZGV4OworICAgIHNpemVfdCBtX2NoaWxkSW5kZXg7Cit9OworCiBS
ZW5kZXJHcmlkOjpSZW5kZXJHcmlkKEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgOiBSZW5kZXJCbG9j
ayhlbGVtZW50KQogewpAQCAtMTM0LDYgKzE3Miw4IEBAIHZvaWQgUmVuZGVyR3JpZDo6Y29tcHV0
ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKQogewogICAgIEFTU0VSVChwcmVmZXJyZWRMb2dpY2Fs
V2lkdGhzRGlydHkoKSk7CiAKKyAgICBwbGFjZUl0ZW1zT25HcmlkKCk7CisKICAgICBtX21pblBy
ZWZlcnJlZExvZ2ljYWxXaWR0aCA9IDA7CiAgICAgbV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgg
PSAwOwogCkBAIC0xNTksNiArMTk5LDcgQEAgdm9pZCBSZW5kZXJHcmlkOjpjb21wdXRlUHJlZmVy
cmVkTG9naWNhbFdpZHRocygpCiAgICAgbV9tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGggKz0gYm9y
ZGVyQW5kUGFkZGluZ0luSW5saW5lRGlyZWN0aW9uOwogCiAgICAgc2V0UHJlZmVycmVkTG9naWNh
bFdpZHRoc0RpcnR5KGZhbHNlKTsKKyAgICBtX2dyaWQuY2xlYXIoKTsKIH0KIAogTGF5b3V0VW5p
dCBSZW5kZXJHcmlkOjpjb21wdXRlUHJlZmVycmVkVHJhY2tXaWR0aChjb25zdCBMZW5ndGgmIGxl
bmd0aCwgc2l6ZV90IHRyYWNrSW5kZXgpIGNvbnN0CkBAIC0xNzAsMjggKzIxMSwyMCBAQCBMYXlv
dXRVbml0IFJlbmRlckdyaWQ6OmNvbXB1dGVQcmVmZXJyZWRUcmFja1dpZHRoKGNvbnN0IExlbmd0
aCYgbGVuZ3RoLCBzaXplX3QgdAogCiAgICAgaWYgKGxlbmd0aC5pc01pbkNvbnRlbnQoKSkgewog
ICAgICAgICBMYXlvdXRVbml0IG1pbkNvbnRlbnRTaXplID0gMDsKLSAgICAgICAgLy8gRklYTUU6
IEl0J3MgaW5lZmZpY2llbnQgdG8gaXRlcmF0ZSBvdmVyIG91ciBncmlkIGl0ZW1zLiBXZSBzaG91
bGQgYmUgYWJsZSB0bwotICAgICAgICAvLyBnZXQgdGhlIHN1YnNldCBvZiBncmlkIGl0ZW1zIGlu
IHRoZSBjdXJyZW50IHJvdyAvIGNvbHVtbiBmYXN0ZXIuCi0gICAgICAgIGZvciAoUmVuZGVyQm94
KiBjaGlsZCA9IGZpcnN0Q2hpbGRCb3goKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJs
aW5nQm94KCkpIHsKLSAgICAgICAgICAgIHNpemVfdCBjZWxsSW5kZXggPSByZXNvbHZlR3JpZFBv
c2l0aW9uKEZvckNvbHVtbnMsIGNoaWxkKTsKLSAgICAgICAgICAgIGlmIChjZWxsSW5kZXggIT0g
dHJhY2tJbmRleCkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQorICAgICAgICBHcmlkSXRl
cmF0b3IgaXRlcmF0b3IobV9ncmlkLCBGb3JDb2x1bW5zLCB0cmFja0luZGV4KTsKKyAgICAgICAg
d2hpbGUgKFJlbmRlckJveCogZ3JpZEl0ZW0gPSBpdGVyYXRvci5uZXh0R3JpZEl0ZW0oKSkgewog
ICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBpbmNsdWRlIHRoZSBjaGlsZCdzIGZpeGVk
IG1hcmdpbnMgbGlrZSBSZW5kZXJGbGV4aWJsZUJveC4KLSAgICAgICAgICAgIG1pbkNvbnRlbnRT
aXplID0gc3RkOjptYXgobWluQ29udGVudFNpemUsIGNoaWxkLT5taW5QcmVmZXJyZWRMb2dpY2Fs
V2lkdGgoKSk7CisgICAgICAgICAgICBtaW5Db250ZW50U2l6ZSA9IHN0ZDo6bWF4KG1pbkNvbnRl
bnRTaXplLCBncmlkSXRlbS0+bWluUHJlZmVycmVkTG9naWNhbFdpZHRoKCkpOwogICAgICAgICB9
CiAgICAgICAgIHJldHVybiBtaW5Db250ZW50U2l6ZTsKICAgICB9CiAKICAgICBpZiAobGVuZ3Ro
LmlzTWF4Q29udGVudCgpKSB7CiAgICAgICAgIExheW91dFVuaXQgbWF4Q29udGVudFNpemUgPSAw
OwotICAgICAgICBmb3IgKFJlbmRlckJveCogY2hpbGQgPSBmaXJzdENoaWxkQm94KCk7IGNoaWxk
OyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZ0JveCgpKSB7Ci0gICAgICAgICAgICBzaXplX3Qg
Y2VsbEluZGV4ID0gcmVzb2x2ZUdyaWRQb3NpdGlvbihGb3JDb2x1bW5zLCBjaGlsZCk7Ci0gICAg
ICAgICAgICBpZiAoY2VsbEluZGV4ICE9IHRyYWNrSW5kZXgpCi0gICAgICAgICAgICAgICAgY29u
dGludWU7Ci0KKyAgICAgICAgR3JpZEl0ZXJhdG9yIGl0ZXJhdG9yKG1fZ3JpZCwgRm9yQ29sdW1u
cywgdHJhY2tJbmRleCk7CisgICAgICAgIHdoaWxlIChSZW5kZXJCb3gqIGdyaWRJdGVtID0gaXRl
cmF0b3IubmV4dEdyaWRJdGVtKCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
aW5jbHVkZSB0aGUgY2hpbGQncyBmaXhlZCBtYXJnaW5zIGxpa2UgUmVuZGVyRmxleGlibGVCb3gu
Ci0gICAgICAgICAgICBtYXhDb250ZW50U2l6ZSA9IHN0ZDo6bWF4KG1heENvbnRlbnRTaXplLCBj
aGlsZC0+bWF4UHJlZmVycmVkTG9naWNhbFdpZHRoKCkpOworICAgICAgICAgICAgbWF4Q29udGVu
dFNpemUgPSBzdGQ6Om1heChtYXhDb250ZW50U2l6ZSwgZ3JpZEl0ZW0tPm1heFByZWZlcnJlZExv
Z2ljYWxXaWR0aCgpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbWF4Q29udGVudFNpemU7
CiAgICAgfQpAQCAtMzY5LDE1ICs0MDIsMTIgQEAgdm9pZCBSZW5kZXJHcmlkOjpyZXNvbHZlQ29u
dGVudEJhc2VkVHJhY2tTaXppbmdGdW5jdGlvbnMoVHJhY2tTaXppbmdEaXJlY3Rpb24gZGkKICAg
ICB9CiB9CiAKLXZvaWQgUmVuZGVyR3JpZDo6cmVzb2x2ZUNvbnRlbnRCYXNlZFRyYWNrU2l6aW5n
RnVuY3Rpb25zRm9ySXRlbXMoVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCBWZWN0b3I8
R3JpZFRyYWNrPiYgY29sdW1uVHJhY2tzLCBWZWN0b3I8R3JpZFRyYWNrPiYgcm93VHJhY2tzLCBz
aXplX3QgaSwgU2l6aW5nRnVuY3Rpb24gc2l6aW5nRnVuY3Rpb24sIEFjY3VtdWxhdG9yR2V0dGVy
IHRyYWNrR2V0dGVyLCBBY2N1bXVsYXRvckdyb3dGdW5jdGlvbiB0cmFja0dyb3d0aEZ1bmN0aW9u
KQordm9pZCBSZW5kZXJHcmlkOjpyZXNvbHZlQ29udGVudEJhc2VkVHJhY2tTaXppbmdGdW5jdGlv
bnNGb3JJdGVtcyhUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIFZlY3RvcjxHcmlkVHJh
Y2s+JiBjb2x1bW5UcmFja3MsIFZlY3RvcjxHcmlkVHJhY2s+JiByb3dUcmFja3MsIHNpemVfdCB0
cmFja0luZGV4LCBTaXppbmdGdW5jdGlvbiBzaXppbmdGdW5jdGlvbiwgQWNjdW11bGF0b3JHZXR0
ZXIgdHJhY2tHZXR0ZXIsIEFjY3VtdWxhdG9yR3Jvd0Z1bmN0aW9uIHRyYWNrR3Jvd3RoRnVuY3Rp
b24pCiB7Ci0gICAgR3JpZFRyYWNrJiB0cmFjayA9IChkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykg
PyBjb2x1bW5UcmFja3NbaV0gOiByb3dUcmFja3NbaV07Ci0gICAgZm9yIChSZW5kZXJCb3gqIGNo
aWxkID0gZmlyc3RDaGlsZEJveCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmdC
b3goKSkgewotICAgICAgICBzaXplX3QgY2VsbEluZGV4ID0gcmVzb2x2ZUdyaWRQb3NpdGlvbihk
aXJlY3Rpb24sIGNoaWxkKTsKLSAgICAgICAgaWYgKGNlbGxJbmRleCAhPSBpKQotICAgICAgICAg
ICAgY29udGludWU7Ci0KLSAgICAgICAgTGF5b3V0VW5pdCBjb250ZW50U2l6ZSA9ICh0aGlzLT4q
c2l6aW5nRnVuY3Rpb24pKGNoaWxkLCBkaXJlY3Rpb24sIGNvbHVtblRyYWNrcyk7CisgICAgR3Jp
ZFRyYWNrJiB0cmFjayA9IChkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucykgPyBjb2x1bW5UcmFja3Nb
dHJhY2tJbmRleF0gOiByb3dUcmFja3NbdHJhY2tJbmRleF07CisgICAgR3JpZEl0ZXJhdG9yIGl0
ZXJhdG9yKG1fZ3JpZCwgZGlyZWN0aW9uLCB0cmFja0luZGV4KTsKKyAgICB3aGlsZSAoUmVuZGVy
Qm94KiBncmlkSXRlbSA9IGl0ZXJhdG9yLm5leHRHcmlkSXRlbSgpKSB7CisgICAgICAgIExheW91
dFVuaXQgY29udGVudFNpemUgPSAodGhpcy0+KnNpemluZ0Z1bmN0aW9uKShncmlkSXRlbSwgZGly
ZWN0aW9uLCBjb2x1bW5UcmFja3MpOwogICAgICAgICBMYXlvdXRVbml0IGFkZGl0aW9uYWxCcmVh
ZHRoU3BhY2UgPSBjb250ZW50U2l6ZSAtICh0cmFjay4qdHJhY2tHZXR0ZXIpKCk7CiAgICAgICAg
IFZlY3RvcjxHcmlkVHJhY2sqPiB0cmFja3M7CiAgICAgICAgIHRyYWNrcy5hcHBlbmQoJnRyYWNr
KTsKQEAgLTQzNiwxMCArNDY2LDI4IEBAIGJvb2wgUmVuZGVyR3JpZDo6dHJhY2tzQXJlV2lkZXJU
aGFuTWluVHJhY2tCcmVhZHRoKFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvCiB9CiAjZW5k
aWYKIAordm9pZCBSZW5kZXJHcmlkOjpwbGFjZUl0ZW1zT25HcmlkKCkKK3sKKyAgICBBU1NFUlQo
bV9ncmlkLmlzRW1wdHkoKSk7CisgICAgbV9ncmlkLmdyb3cobWF4aW11bUluZGV4SW5EaXJlY3Rp
b24oRm9yUm93cykpOworICAgIHNpemVfdCBtYXhpbXVtQ29sdW1uSW5kZXggPSBtYXhpbXVtSW5k
ZXhJbkRpcmVjdGlvbihGb3JDb2x1bW5zKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGdy
aWRSb3dDb3VudCgpOyArK2kpCisgICAgICAgIG1fZ3JpZFtpXS5ncm93KG1heGltdW1Db2x1bW5J
bmRleCk7CisKKyAgICBmb3IgKFJlbmRlckJveCogY2hpbGQgPSBmaXJzdENoaWxkQm94KCk7IGNo
aWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZ0JveCgpKSB7CisgICAgICAgIHNpemVfdCBj
b2x1bW5UcmFjayA9IHJlc29sdmVHcmlkUG9zaXRpb24oY2hpbGQtPnN0eWxlKCktPmdyaWRJdGVt
Q29sdW1uKCkpOworICAgICAgICBzaXplX3Qgcm93VHJhY2sgPSByZXNvbHZlR3JpZFBvc2l0aW9u
KGNoaWxkLT5zdHlsZSgpLT5ncmlkSXRlbVJvdygpKTsKKworICAgICAgICBtX2dyaWRbcm93VHJh
Y2tdW2NvbHVtblRyYWNrXS5hcHBlbmQoY2hpbGQpOworICAgIH0KK30KKwogdm9pZCBSZW5kZXJH
cmlkOjpsYXlvdXRHcmlkSXRlbXMoKQogewotICAgIFZlY3RvcjxHcmlkVHJhY2s+IGNvbHVtblRy
YWNrcyhtYXhpbXVtSW5kZXhJbkRpcmVjdGlvbihGb3JDb2x1bW5zKSk7Ci0gICAgVmVjdG9yPEdy
aWRUcmFjaz4gcm93VHJhY2tzKG1heGltdW1JbmRleEluRGlyZWN0aW9uKEZvclJvd3MpKTsKKyAg
ICBwbGFjZUl0ZW1zT25HcmlkKCk7CisKKyAgICBWZWN0b3I8R3JpZFRyYWNrPiBjb2x1bW5UcmFj
a3MoZ3JpZENvbHVtbkNvdW50KCkpOworICAgIFZlY3RvcjxHcmlkVHJhY2s+IHJvd1RyYWNrcyhn
cmlkUm93Q291bnQoKSk7CiAgICAgY29tcHV0ZWRVc2VkQnJlYWR0aE9mR3JpZFRyYWNrcyhGb3JD
b2x1bW5zLCBjb2x1bW5UcmFja3MsIHJvd1RyYWNrcyk7CiAgICAgQVNTRVJUKHRyYWNrc0FyZVdp
ZGVyVGhhbk1pblRyYWNrQnJlYWR0aChGb3JDb2x1bW5zLCBjb2x1bW5UcmFja3MpKTsKICAgICBj
b21wdXRlZFVzZWRCcmVhZHRoT2ZHcmlkVHJhY2tzKEZvclJvd3MsIGNvbHVtblRyYWNrcywgcm93
VHJhY2tzKTsKQEAgLTQ3OSw2ICs1MjcsNyBAQCB2b2lkIFJlbmRlckdyaWQ6OmxheW91dEdyaWRJ
dGVtcygpCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYW5kbGUgbWluIC8gbWF4IGxvZ2ljYWwg
aGVpZ2h0LgogCiAgICAgc2V0TG9naWNhbEhlaWdodChsb2dpY2FsSGVpZ2h0KCkgKyBib3JkZXJB
bmRQYWRkaW5nTG9naWNhbEhlaWdodCgpKTsKKyAgICBtX2dyaWQuY2xlYXIoKTsKIH0KIAogc2l6
ZV90IFJlbmRlckdyaWQ6OnJlc29sdmVHcmlkUG9zaXRpb24oVHJhY2tTaXppbmdEaXJlY3Rpb24g
ZGlyZWN0aW9uLCBjb25zdCBSZW5kZXJPYmplY3QqIGdyaWRJdGVtKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKaW5kZXggMjUxM2MyMWI5NzVjNGFiMzJmYTUxNjQ0ZWRh
ODZjMTE3YzZlOWY3ZS4uZDNjNmJiMTkwYWNlZmRiODM1MGQ1MjA1Mjg5MWNiYzdjYjcyNmE4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCkBAIC01MCwxMiArNTAsMTQgQEAg
cHJpdmF0ZToKIAogICAgIExheW91dFVuaXQgY29tcHV0ZVByZWZlcnJlZFRyYWNrV2lkdGgoY29u
c3QgTGVuZ3RoJiwgc2l6ZV90KSBjb25zdDsKIAorICAgIGNsYXNzIEdyaWRJdGVyYXRvcjsKICAg
ICBlbnVtIFRyYWNrU2l6aW5nRGlyZWN0aW9uIHsgRm9yQ29sdW1ucywgRm9yUm93cyB9OwogICAg
IHZvaWQgY29tcHV0ZWRVc2VkQnJlYWR0aE9mR3JpZFRyYWNrcyhUcmFja1NpemluZ0RpcmVjdGlv
biwgVmVjdG9yPEdyaWRUcmFjaz4mIGNvbHVtblRyYWNrcywgVmVjdG9yPEdyaWRUcmFjaz4mIHJv
d1RyYWNrcyk7CiAgICAgTGF5b3V0VW5pdCBjb21wdXRlVXNlZEJyZWFkdGhPZk1pbkxlbmd0aChU
cmFja1NpemluZ0RpcmVjdGlvbiwgY29uc3QgTGVuZ3RoJikgY29uc3Q7CiAgICAgTGF5b3V0VW5p
dCBjb21wdXRlVXNlZEJyZWFkdGhPZk1heExlbmd0aChUcmFja1NpemluZ0RpcmVjdGlvbiwgY29u
c3QgTGVuZ3RoJikgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBjb21wdXRlVXNlZEJyZWFkdGhPZlNw
ZWNpZmllZExlbmd0aChUcmFja1NpemluZ0RpcmVjdGlvbiwgY29uc3QgTGVuZ3RoJikgY29uc3Q7
CiAgICAgdm9pZCByZXNvbHZlQ29udGVudEJhc2VkVHJhY2tTaXppbmdGdW5jdGlvbnMoVHJhY2tT
aXppbmdEaXJlY3Rpb24sIFZlY3RvcjxHcmlkVHJhY2s+JiBjb2x1bW5UcmFja3MsIFZlY3RvcjxH
cmlkVHJhY2s+JiByb3dUcmFja3MsIExheW91dFVuaXQmIGF2YWlsYWJsZUxvZ2ljYWxTcGFjZSk7
CisgICAgdm9pZCBwbGFjZUl0ZW1zT25HcmlkKCk7CiAgICAgdm9pZCBsYXlvdXRHcmlkSXRlbXMo
KTsKIAogICAgIHR5cGVkZWYgTGF5b3V0VW5pdCAoUmVuZGVyR3JpZDo6KiBTaXppbmdGdW5jdGlv
bikoUmVuZGVyQm94KiwgVHJhY2tTaXppbmdEaXJlY3Rpb24sIFZlY3RvcjxHcmlkVHJhY2s+Jik7
CkBAIC03Nyw2ICs3OSwxMSBAQCBwcml2YXRlOgogI2lmbmRlZiBOREVCVUcKICAgICBib29sIHRy
YWNrc0FyZVdpZGVyVGhhbk1pblRyYWNrQnJlYWR0aChUcmFja1NpemluZ0RpcmVjdGlvbiwgY29u
c3QgVmVjdG9yPEdyaWRUcmFjaz4mKTsKICNlbmRpZgorCisgICAgc2l6ZV90IGdyaWRDb2x1bW5D
b3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fZ3JpZC5pc0VtcHR5KCkgPyAwIDogbV9ncmlkWzBdLnNp
emUoKTsgfQorICAgIHNpemVfdCBncmlkUm93Q291bnQoKSBjb25zdCB7IHJldHVybiBtX2dyaWQu
c2l6ZSgpOyB9CisKKyAgICBWZWN0b3I8VmVjdG9yPFZlY3RvcjxSZW5kZXJCb3gqLCAxPiA+ID4g
bV9ncmlkOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>