<?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>61414</bug_id>
          
          <creation_ts>2011-05-24 20:41:07 -0700</creation_ts>
          <short_desc>Replace RenderLayer::x/y/width/height with location/size</short_desc>
          <delta_ts>2011-05-26 21:54:04 -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>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>60318</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Emil A Eklund">eae</reporter>
          <assigned_to name="Emil A Eklund">eae</assigned_to>
          <cc>cmarrin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>leviw</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>409414</commentid>
    <comment_count>0</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-05-24 20:41:07 -0700</bug_when>
    <thetext>Replace the individual x/w/with/height methods with location/size using IntSize/IntPoint.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409417</commentid>
    <comment_count>1</comment_count>
      <attachid>94737</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-05-24 20:44:17 -0700</bug_when>
    <thetext>Created attachment 94737
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409609</commentid>
    <comment_count>2</comment_count>
      <attachid>94737</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-25 06:26:44 -0700</bug_when>
    <thetext>Comment on attachment 94737
Patch

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

&gt; Source/WebCore/rendering/RenderLayer.cpp:655
&gt;          inlineBoundingBoxOffset = IntSize(lineBox.x(), lineBox.y());

I assume lineBox has a location() function by now.

&gt; Source/WebCore/rendering/RenderLayer.cpp:2007
&gt; +    IntPoint bottomRight = toPoint(size());

Kinda a funny assumption that location() is always 0, 0.  Seems this should be asking for m_frameRect.bottomRight() or whatever location() + size() is.  Or maybe we should be ASSERTing that location() is 0, 0?  Or maybe its that the internal and external size of the layer are considered the same, and that the offset this returns is in local coordinates?  Confused.

&gt; Source/WebCore/rendering/RenderLayer.cpp:3454
&gt;      convertToLayerCoords(rootLayer, x, y);
&gt; -    layerBounds = IntRect(x, y, width(), height());
&gt; +    layerBounds = IntRect(IntPoint(x, y), size());

Seems odd that we wouldn&apos;t just map the whole rect.

&gt; Source/WebCore/rendering/RenderTreeAsText.cpp:583
&gt; +                    writeLayers(ts, l, l, IntRect(l-&gt;location(), l-&gt;size()), indent + 1, behavior);

Why not just ask for l-&gt;rect()?

&gt; Source/WebCore/rendering/RenderTreeAsText.cpp:778
&gt; +        writeLayers(ts, l, l, IntRect(l-&gt;location(), l-&gt;size()), 0, behavior);

l-&gt;rect() here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409987</commentid>
    <comment_count>3</comment_count>
      <attachid>94875</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-05-25 15:55:10 -0700</bug_when>
    <thetext>Created attachment 94875
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409989</commentid>
    <comment_count>4</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-05-25 15:58:34 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; I assume lineBox has a location() function by now.

Ah, of course. Thanks!

&gt; 
&gt; &gt; Source/WebCore/rendering/RenderLayer.cpp:2007
&gt; &gt; +    IntPoint bottomRight = toPoint(size());
&gt; 
&gt; Kinda a funny assumption that location() is always 0, 0.  Seems this should be asking for m_frameRect.bottomRight() or whatever location() + size() is.  Or maybe we should be ASSERTing that location() is 0, 0?  Or maybe its that the internal and external size of the layer are considered the same, and that the offset this returns is in local coordinates?  Confused.

Yeah, this is a bit weird. The way I understand it the internal and external coordinates are both considered to be the same here. 

&gt; 
&gt; &gt; Source/WebCore/rendering/RenderLayer.cpp:3454
&gt; &gt;      convertToLayerCoords(rootLayer, x, y);
&gt; &gt; -    layerBounds = IntRect(x, y, width(), height());
&gt; &gt; +    layerBounds = IntRect(IntPoint(x, y), size());
&gt; 
&gt; Seems odd that we wouldn&apos;t just map the whole rect.

Odd indeed, I&apos;d rather not make any behavior changes in this patch though.

&gt; 
&gt; &gt; Source/WebCore/rendering/RenderTreeAsText.cpp:583
&gt; &gt; +                    writeLayers(ts, l, l, IntRect(l-&gt;location(), l-&gt;size()), indent + 1, behavior);
&gt; 
&gt; Why not just ask for l-&gt;rect()?

I didn&apos;t have a rect method before, now I do :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>410708</commentid>
    <comment_count>5</comment_count>
      <attachid>94875</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-26 12:02:59 -0700</bug_when>
    <thetext>Comment on attachment 94875
Patch

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

I don&apos;t need to see this again, but you should look at fixing some of the below mentioned nits before landing (with teh cq or otherwise).

&gt; Source/WebCore/dom/MouseRelatedEvent.cpp:209
&gt; +            m_layerX -= location.x();
&gt; +            m_layerY -= location.y();

An obvious next candidate? :)

&gt; Source/WebCore/rendering/RenderInline.cpp:1083
&gt; +        IntRect boxRect(IntPoint(), containerBox-&gt;layer()-&gt;size());
&gt;          rect = intersection(repaintRect, boxRect);

What is similar about this and the previous function?  Should IntRect rect(IntPoint(), containingBlock-&gt;layer()-&gt;size());  rect.intercect(repaintRect, boxRect); be some helper fucntion?

&gt; Source/WebCore/rendering/RenderLayer.cpp:655
&gt; +        inlineBoundingBoxOffset = toSize(lineBox.location());

I take it we youse inlineBoundingBoxOffset again later, or should this just get merged into the localPoint += line below?

&gt; Source/WebCore/rendering/RenderLayer.cpp:2007
&gt; +    IntPoint bottomRight = toPoint(size());

I feel like this needs a FIXME to explain why we assume the location is 0, 0.

&gt; Source/WebCore/rendering/RenderLayer.cpp:3453
&gt;      convertToLayerCoords(rootLayer, x, y);

An obvious next target.

&gt; Source/WebCore/rendering/RenderLayer.h:220
&gt; +    IntRect rect() const { return IntRect(location(), size()); }

Seems we should just move m_topLeft and m_layerSize into a rect soon. :)  Unless the location and size don&apos;t actually make sense paired as a rect? (except for DRT dumping).

&gt; Source/WebCore/rendering/RenderView.cpp:331
&gt; +    quads.append(FloatRect(IntPoint(), m_layer-&gt;size()));

I think you meant FloatPoint() here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>410925</commentid>
    <comment_count>6</comment_count>
      <attachid>95058</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-05-26 15:34:21 -0700</bug_when>
    <thetext>Created attachment 95058
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411139</commentid>
    <comment_count>7</comment_count>
      <attachid>95058</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-26 21:53:58 -0700</bug_when>
    <thetext>Comment on attachment 95058
Patch for landing

Clearing flags on attachment: 95058

Committed r87467: &lt;http://trac.webkit.org/changeset/87467&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411140</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-26 21:54:04 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>94737</attachid>
            <date>2011-05-24 20:44:17 -0700</date>
            <delta_ts>2011-05-25 15:55:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61414-20110524204416.patch</filename>
            <type>text/plain</type>
            <size>11428</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg3MjU5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTEtMDUtMjQgIEVtaWwgQSBF
a2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlcGxhY2UgUmVuZGVyTGF5ZXI6OngveS93aWR0aC9oZWlnaHQg
d2l0aCBsb2NhdGlvbi9zaXplCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02MTQxNAorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisK
KyAgICAgICAgKiBkb20vTW91c2VSZWxhdGVkRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TW91c2VSZWxhdGVkRXZlbnQ6OmNvbXB1dGVSZWxhdGl2ZVBvc2l0aW9uKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29t
cHV0ZVJlY3RGb3JSZXBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6Om1heExheW91dE92ZXJmbG93KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklu
bGluZTo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVySW5saW5lOjpjb21wdXRlUmVjdEZvclJlcGFpbnQpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRl
TGF5ZXJQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6Y29udmVydFRv
TGF5ZXJDb29yZHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6Om9mZnNldEZyb21S
ZXNpemVDb3JuZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZVJl
Y3RzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyOjpsb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
cjo6c2V0U2l6ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmNvbXB1dGVSZWN0Rm9yUmVwYWludCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVMYXllcnMpOgorICAgICAgICAoV2ViQ29y
ZTo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZp
ZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6YWJzb2x1dGVSZWN0cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjphYnNvbHV0ZVF1YWRzKToKKwogMjAxMS0wNS0y
NCAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQuIEZpeCBzdHlsZSBlcnJvci4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Nb3Vz
ZVJlbGF0ZWRFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL01vdXNl
UmVsYXRlZEV2ZW50LmNwcAkocmV2aXNpb24gODcyMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
TW91c2VSZWxhdGVkRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDQsOCArMjA0LDkgQEAg
dm9pZCBNb3VzZVJlbGF0ZWRFdmVudDo6Y29tcHV0ZVJlbGF0aXZlUAogICAgIGlmIChuICYmIChs
YXllciA9IG4tPnJlbmRlcmVyKCktPmVuY2xvc2luZ0xheWVyKCkpKSB7CiAgICAgICAgIGxheWVy
LT51cGRhdGVMYXllclBvc2l0aW9uKCk7CiAgICAgICAgIGZvciAoOyBsYXllcjsgbGF5ZXIgPSBs
YXllci0+cGFyZW50KCkpIHsKLSAgICAgICAgICAgIG1fbGF5ZXJYIC09IGxheWVyLT54KCk7Ci0g
ICAgICAgICAgICBtX2xheWVyWSAtPSBsYXllci0+eSgpOworICAgICAgICAgICAgY29uc3QgSW50
UG9pbnQmIGxvY2F0aW9uID0gbGF5ZXItPmxvY2F0aW9uKCk7CisgICAgICAgICAgICBtX2xheWVy
WCAtPSBsb2NhdGlvbi54KCk7CisgICAgICAgICAgICBtX2xheWVyWSAtPSBsb2NhdGlvbi55KCk7
CiAgICAgICAgIH0KICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3guY3BwCShyZXZpc2lvbiA4NzIxNikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTA2LDcgKzE1MDYsNyBAQCB2b2lkIFJlbmRl
ckJveDo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlCiAgICAgICAgIHRvcExlZnQgLT0gY29udGFp
bmVyQm94LT5sYXllcigpLT5zY3JvbGxlZENvbnRlbnRPZmZzZXQoKTsgLy8gRm9yIG92ZXJmbG93
OmF1dG8vc2Nyb2xsL2hpZGRlbi4KIAogICAgICAgICBJbnRSZWN0IHJlcGFpbnRSZWN0KHRvcExl
ZnQsIHJlY3Quc2l6ZSgpKTsKLSAgICAgICAgSW50UmVjdCBib3hSZWN0KDAsIDAsIGNvbnRhaW5l
ckJveC0+bGF5ZXIoKS0+d2lkdGgoKSwgY29udGFpbmVyQm94LT5sYXllcigpLT5oZWlnaHQoKSk7
CisgICAgICAgIEludFJlY3QgYm94UmVjdChJbnRQb2ludCgpLCBjb250YWluZXJCb3gtPmxheWVy
KCktPnNpemUoKSk7CiAgICAgICAgIHJlY3QgPSBpbnRlcnNlY3Rpb24ocmVwYWludFJlY3QsIGJv
eFJlY3QpOwogICAgICAgICBpZiAocmVjdC5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm47
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCShyZXZpc2lvbiA4NzIxNikK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAkod29ya2luZyBjb3B5KQpA
QCAtMTQ0LDYgKzE0NCw3IEBAIHB1YmxpYzoKICAgICBpbnQgbWF4WUxheW91dE92ZXJmbG93KCkg
Y29uc3QgeyByZXR1cm4gbV9vdmVyZmxvdyA/IG1fb3ZlcmZsb3ctPm1heFlMYXlvdXRPdmVyZmxv
dygpIDogYm9yZGVyVG9wKCkgKyBjbGllbnRIZWlnaHQoKTsgfQogICAgIGludCBtaW5YTGF5b3V0
T3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBtX292ZXJmbG93ID8gbV9vdmVyZmxvdy0+bWluWExh
eW91dE92ZXJmbG93KCkgOiBib3JkZXJMZWZ0KCk7IH0KICAgICBpbnQgbWF4WExheW91dE92ZXJm
bG93KCkgY29uc3QgeyByZXR1cm4gbV9vdmVyZmxvdyA/IG1fb3ZlcmZsb3ctPm1heFhMYXlvdXRP
dmVyZmxvdygpIDogYm9yZGVyTGVmdCgpICsgY2xpZW50V2lkdGgoKTsgfQorICAgIEludFNpemUg
bWF4TGF5b3V0T3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBJbnRTaXplKG1heFhMYXlvdXRPdmVy
ZmxvdygpLCBtYXhZTGF5b3V0T3ZlcmZsb3coKSk7IH0KICAgICBpbnQgbG9naWNhbExlZnRMYXlv
dXRPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIHN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdN
b2RlKCkgPyBtaW5YTGF5b3V0T3ZlcmZsb3coKSA6IG1pbllMYXlvdXRPdmVyZmxvdygpOyB9CiAg
ICAgaW50IGxvZ2ljYWxSaWdodExheW91dE92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gc3R5bGUo
KS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IG1heFhMYXlvdXRPdmVyZmxvdygpIDogbWF4
WUxheW91dE92ZXJmbG93KCk7IH0KICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbmxpbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbmxpbmUuY3BwCShyZXZpc2lvbiA4NzIxNikKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05ODksNyArOTg5LDcg
QEAgSW50UmVjdCBSZW5kZXJJbmxpbmU6OmNsaXBwZWRPdmVyZmxvd1JlYwogICAgICAgICBJbnRS
ZWN0IHJlcGFpbnRSZWN0KHIpOwogICAgICAgICByZXBhaW50UmVjdC5tb3ZlKC1jYi0+bGF5ZXIo
KS0+c2Nyb2xsZWRDb250ZW50T2Zmc2V0KCkpOyAvLyBGb3Igb3ZlcmZsb3c6YXV0by9zY3JvbGwv
aGlkZGVuLgogCi0gICAgICAgIEludFJlY3QgYm94UmVjdCgwLCAwLCBjYi0+bGF5ZXIoKS0+d2lk
dGgoKSwgY2ItPmxheWVyKCktPmhlaWdodCgpKTsKKyAgICAgICAgSW50UmVjdCBib3hSZWN0KElu
dFBvaW50KCksIGNiLT5sYXllcigpLT5zaXplKCkpOwogICAgICAgICByID0gaW50ZXJzZWN0aW9u
KHJlcGFpbnRSZWN0LCBib3hSZWN0KTsKICAgICB9CiAgICAgCkBAIC0xMDc5LDcgKzEwNzksNyBA
QCB2b2lkIFJlbmRlcklubGluZTo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50CiAgICAgICAgIHRvcExl
ZnQgLT0gY29udGFpbmVyQm94LT5sYXllcigpLT5zY3JvbGxlZENvbnRlbnRPZmZzZXQoKTsgLy8g
Rm9yIG92ZXJmbG93OmF1dG8vc2Nyb2xsL2hpZGRlbi4KIAogICAgICAgICBJbnRSZWN0IHJlcGFp
bnRSZWN0KHRvcExlZnQsIHJlY3Quc2l6ZSgpKTsKLSAgICAgICAgSW50UmVjdCBib3hSZWN0KDAs
IDAsIGNvbnRhaW5lckJveC0+bGF5ZXIoKS0+d2lkdGgoKSwgY29udGFpbmVyQm94LT5sYXllcigp
LT5oZWlnaHQoKSk7CisgICAgICAgIEludFJlY3QgYm94UmVjdChJbnRQb2ludCgpLCBjb250YWlu
ZXJCb3gtPmxheWVyKCktPnNpemUoKSk7CiAgICAgICAgIHJlY3QgPSBpbnRlcnNlY3Rpb24ocmVw
YWludFJlY3QsIGJveFJlY3QpOwogICAgICAgICBpZiAocmVjdC5pc0VtcHR5KCkpCiAgICAgICAg
ICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAJKHJldmlzaW9uIDg3MjE2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUxLDEzICs2NTEsMTEgQEAgdm9pZCBSZW5kZXJM
YXllcjo6dXBkYXRlTGF5ZXJQb3NpdGlvbigpCiAgICAgaWYgKHJlbmRlcmVyKCktPmlzUmVuZGVy
SW5saW5lKCkpIHsKICAgICAgICAgUmVuZGVySW5saW5lKiBpbmxpbmVGbG93ID0gdG9SZW5kZXJJ
bmxpbmUocmVuZGVyZXIoKSk7CiAgICAgICAgIEludFJlY3QgbGluZUJveCA9IGlubGluZUZsb3ct
PmxpbmVzQm91bmRpbmdCb3goKTsKLSAgICAgICAgc2V0V2lkdGgobGluZUJveC53aWR0aCgpKTsK
LSAgICAgICAgc2V0SGVpZ2h0KGxpbmVCb3guaGVpZ2h0KCkpOworICAgICAgICBzZXRTaXplKGxp
bmVCb3guc2l6ZSgpKTsKICAgICAgICAgaW5saW5lQm91bmRpbmdCb3hPZmZzZXQgPSBJbnRTaXpl
KGxpbmVCb3gueCgpLCBsaW5lQm94LnkoKSk7CiAgICAgICAgIGxvY2FsUG9pbnQgKz0gaW5saW5l
Qm91bmRpbmdCb3hPZmZzZXQ7CiAgICAgfSBlbHNlIGlmIChSZW5kZXJCb3gqIGJveCA9IHJlbmRl
ckJveCgpKSB7Ci0gICAgICAgIHNldFdpZHRoKGJveC0+d2lkdGgoKSk7Ci0gICAgICAgIHNldEhl
aWdodChib3gtPmhlaWdodCgpKTsKKyAgICAgICAgc2V0U2l6ZShib3gtPnNpemUoKSk7CiAgICAg
ICAgIGxvY2FsUG9pbnQgKz0gYm94LT5sb2NhdGlvbk9mZnNldEluY2x1ZGluZ0ZsaXBwaW5nKCk7
CiAgICAgfQogCkBAIC0xMjA0LDkgKzEyMDIsOSBAQCBSZW5kZXJMYXllcjo6Y29udmVydFRvTGF5
ZXJDb29yZHMoY29uc3QgCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBwYXJlbnRMYXllci0+
Y29udmVydFRvTGF5ZXJDb29yZHMoYW5jZXN0b3JMYXllciwgeFBvcywgeVBvcyk7Ci0gICAgCi0g
ICAgeFBvcyArPSB4KCk7Ci0gICAgeVBvcyArPSB5KCk7CisKKyAgICB4UG9zICs9IG1fdG9wTGVm
dC54KCk7CisgICAgeVBvcyArPSBtX3RvcExlZnQueSgpOwogfQogCiBzdGF0aWMgaW5saW5lIGlu
dCBhZGp1c3RlZFNjcm9sbERlbHRhKGludCBiZWdpbm5pbmdEZWx0YSkgewpAQCAtMjAwNiw3ICsy
MDA0LDcgQEAgaW50IFJlbmRlckxheWVyOjpob3Jpem9udGFsU2Nyb2xsYmFySGVpZwogSW50U2l6
ZSBSZW5kZXJMYXllcjo6b2Zmc2V0RnJvbVJlc2l6ZUNvcm5lcihjb25zdCBJbnRQb2ludCYgYWJz
b2x1dGVQb2ludCkgY29uc3QKIHsKICAgICAvLyBDdXJyZW50bHkgdGhlIHJlc2l6ZSBjb3JuZXIg
aXMgYWx3YXlzIHRoZSBib3R0b20gcmlnaHQgY29ybmVyCi0gICAgSW50UG9pbnQgYm90dG9tUmln
aHQod2lkdGgoKSwgaGVpZ2h0KCkpOworICAgIEludFBvaW50IGJvdHRvbVJpZ2h0ID0gdG9Qb2lu
dChzaXplKCkpOwogICAgIEludFBvaW50IGxvY2FsUG9pbnQgPSBhYnNvbHV0ZVRvQ29udGVudHMo
YWJzb2x1dGVQb2ludCk7CiAgICAgcmV0dXJuIGxvY2FsUG9pbnQgLSBib3R0b21SaWdodDsKIH0K
QEAgLTM0NTMsNyArMzQ1MSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZVJlY3RzKGNv
bnN0IFIKICAgICBpbnQgeCA9IDA7CiAgICAgaW50IHkgPSAwOwogICAgIGNvbnZlcnRUb0xheWVy
Q29vcmRzKHJvb3RMYXllciwgeCwgeSk7Ci0gICAgbGF5ZXJCb3VuZHMgPSBJbnRSZWN0KHgsIHks
IHdpZHRoKCksIGhlaWdodCgpKTsKKyAgICBsYXllckJvdW5kcyA9IEludFJlY3QoSW50UG9pbnQo
eCwgeSksIHNpemUoKSk7CiAgICAgCiAgICAgLy8gVXBkYXRlIHRoZSBjbGlwIHJlY3RzIHRoYXQg
d2lsbCBiZSBwYXNzZWQgdG8gY2hpbGQgbGF5ZXJzLgogICAgIGlmIChyZW5kZXJlcigpLT5oYXNP
dmVyZmxvd0NsaXAoKSB8fCByZW5kZXJlcigpLT5oYXNDbGlwKCkpIHsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCShyZXZpc2lvbiA4NzIxNikKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTEsMTkg
KzIxMSwxNSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBjdXJyOwogICAgIH0KICAgICAKLSAg
ICBpbnQgeCgpIGNvbnN0IHsgcmV0dXJuIG1fdG9wTGVmdC54KCk7IH0KLSAgICBpbnQgeSgpIGNv
bnN0IHsgcmV0dXJuIG1fdG9wTGVmdC55KCk7IH0KKyAgICBjb25zdCBJbnRQb2ludCYgbG9jYXRp
b24oKSBjb25zdCB7IHJldHVybiBtX3RvcExlZnQ7IH0KICAgICB2b2lkIHNldExvY2F0aW9uKGlu
dCB4LCBpbnQgeSkKICAgICB7CiAgICAgICAgIG1fdG9wTGVmdCA9IEludFBvaW50KHgsIHkpOwog
ICAgIH0KIAotICAgIGludCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJTaXplLndpZHRo
KCk7IH0KLSAgICBpbnQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9sYXllclNpemUuaGVpZ2h0
KCk7IH0KICAgICBjb25zdCBJbnRTaXplJiBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9sYXllclNp
emU7IH0KLSAgICAKLSAgICB2b2lkIHNldFdpZHRoKGludCB3KSB7IG1fbGF5ZXJTaXplLnNldFdp
ZHRoKHcpOyB9Ci0gICAgdm9pZCBzZXRIZWlnaHQoaW50IGgpIHsgbV9sYXllclNpemUuc2V0SGVp
Z2h0KGgpOyB9CisKKyAgICB2b2lkIHNldFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkgeyBtX2xh
eWVyU2l6ZSA9IHNpemU7IH0KIAogICAgIGludCBzY3JvbGxXaWR0aCgpOwogICAgIGludCBzY3Jv
bGxIZWlnaHQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
Y3BwCShyZXZpc2lvbiA4NzIxNikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzg3LDcgKzEzODcsNyBAQCB2b2lkIFJlbmRl
ck9iamVjdDo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50CiAgICAgICAgICAgICBJbnRSZWN0IHJlcGFp
bnRSZWN0KHJlY3QpOwogICAgICAgICAgICAgcmVwYWludFJlY3QubW92ZSgtYm94UGFyZW50LT5s
YXllcigpLT5zY3JvbGxlZENvbnRlbnRPZmZzZXQoKSk7IC8vIEZvciBvdmVyZmxvdzphdXRvL3Nj
cm9sbC9oaWRkZW4uCiAKLSAgICAgICAgICAgIEludFJlY3QgYm94UmVjdCgwLCAwLCBib3hQYXJl
bnQtPmxheWVyKCktPndpZHRoKCksIGJveFBhcmVudC0+bGF5ZXIoKS0+aGVpZ2h0KCkpOworICAg
ICAgICAgICAgSW50UmVjdCBib3hSZWN0KEludFBvaW50KCksIGJveFBhcmVudC0+bGF5ZXIoKS0+
c2l6ZSgpKTsKICAgICAgICAgICAgIHJlY3QgPSBpbnRlcnNlY3Rpb24ocmVwYWludFJlY3QsIGJv
eFJlY3QpOwogICAgICAgICAgICAgaWYgKHJlY3QuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAg
IHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFz
VGV4dC5jcHAJKHJldmlzaW9uIDg3MjE2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRyZWVBc1RleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01ODAsNyArNTgwLDcgQEAgdm9p
ZCB3cml0ZShUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVuZGVyTwogICAgICAgICAgICAgICAgIHZp
ZXctPmxheW91dCgpOwogICAgICAgICAgICAgICAgIFJlbmRlckxheWVyKiBsID0gcm9vdC0+bGF5
ZXIoKTsKICAgICAgICAgICAgICAgICBpZiAobCkKLSAgICAgICAgICAgICAgICAgICAgd3JpdGVM
YXllcnModHMsIGwsIGwsIEludFJlY3QobC0+eCgpLCBsLT55KCksIGwtPndpZHRoKCksIGwtPmhl
aWdodCgpKSwgaW5kZW50ICsgMSwgYmVoYXZpb3IpOworICAgICAgICAgICAgICAgICAgICB3cml0
ZUxheWVycyh0cywgbCwgbCwgSW50UmVjdChsLT5sb2NhdGlvbigpLCBsLT5zaXplKCkpLCBpbmRl
bnQgKyAxLCBiZWhhdmlvcik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC02
NTMsOCArNjUzLDcgQEAgc3RhdGljIHZvaWQgd3JpdGVMYXllcnMoVGV4dFN0cmVhbSYgdHMsIAog
ICAgIGlmIChyb290TGF5ZXIgPT0gbCkgewogICAgICAgICBwYWludERpcnR5UmVjdC5zZXRXaWR0
aChtYXgocGFpbnREaXJ0eVJlY3Qud2lkdGgoKSwgcm9vdExheWVyLT5yZW5kZXJCb3goKS0+bWF4
WExheW91dE92ZXJmbG93KCkpKTsKICAgICAgICAgcGFpbnREaXJ0eVJlY3Quc2V0SGVpZ2h0KG1h
eChwYWludERpcnR5UmVjdC5oZWlnaHQoKSwgcm9vdExheWVyLT5yZW5kZXJCb3goKS0+bWF4WUxh
eW91dE92ZXJmbG93KCkpKTsKLSAgICAgICAgbC0+c2V0V2lkdGgobWF4KGwtPndpZHRoKCksIGwt
PnJlbmRlckJveCgpLT5tYXhYTGF5b3V0T3ZlcmZsb3coKSkpOwotICAgICAgICBsLT5zZXRIZWln
aHQobWF4KGwtPmhlaWdodCgpLCBsLT5yZW5kZXJCb3goKS0+bWF4WUxheW91dE92ZXJmbG93KCkp
KTsKKyAgICAgICAgbC0+c2V0U2l6ZShsLT5zaXplKCkuZXhwYW5kZWRUbyhsLT5yZW5kZXJCb3go
KS0+bWF4TGF5b3V0T3ZlcmZsb3coKSkpOwogICAgIH0KICAgICAKICAgICAvLyBDYWxjdWxhdGUg
dGhlIGNsaXAgcmVjdHMgd2Ugc2hvdWxkIHVzZS4KQEAgLTc3Niw3ICs3NzUsNyBAQCBTdHJpbmcg
ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihGcmFtZSogZnJhCiAgICAgVGV4dFN0cmVhbSB0czsKICAg
ICBpZiAoby0+aGFzTGF5ZXIoKSkgewogICAgICAgICBSZW5kZXJMYXllciogbCA9IHRvUmVuZGVy
Qm94KG8pLT5sYXllcigpOwotICAgICAgICB3cml0ZUxheWVycyh0cywgbCwgbCwgSW50UmVjdChs
LT54KCksIGwtPnkoKSwgbC0+d2lkdGgoKSwgbC0+aGVpZ2h0KCkpLCAwLCBiZWhhdmlvcik7Cisg
ICAgICAgIHdyaXRlTGF5ZXJzKHRzLCBsLCBsLCBJbnRSZWN0KGwtPmxvY2F0aW9uKCksIGwtPnNp
emUoKSksIDAsIGJlaGF2aW9yKTsKICAgICAgICAgd3JpdGVTZWxlY3Rpb24odHMsIG8pOwogICAg
IH0KICAgICByZXR1cm4gdHMucmVsZWFzZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJWaWV3LmNwcAkocmV2aXNpb24gODcyMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyMywxMiArMzIzLDEyIEBA
IHZvaWQgUmVuZGVyVmlldzo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KFIKIAogdm9pZCBSZW5kZXJW
aWV3OjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGludCB0eCwgaW50IHR5
KQogewotICAgIHJlY3RzLmFwcGVuZChJbnRSZWN0KHR4LCB0eSwgbV9sYXllci0+d2lkdGgoKSwg
bV9sYXllci0+aGVpZ2h0KCkpKTsKKyAgICByZWN0cy5hcHBlbmQoSW50UmVjdChJbnRQb2ludCh0
eCwgdHkpLCBtX2xheWVyLT5zaXplKCkpKTsKIH0KIAogdm9pZCBSZW5kZXJWaWV3OjphYnNvbHV0
ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcykKIHsKLSAgICBxdWFkcy5hcHBlbmQoRmxv
YXRSZWN0KDAsIDAsIG1fbGF5ZXItPndpZHRoKCksIG1fbGF5ZXItPmhlaWdodCgpKSk7CisgICAg
cXVhZHMuYXBwZW5kKEZsb2F0UmVjdChJbnRQb2ludCgpLCBtX2xheWVyLT5zaXplKCkpKTsKIH0K
IAogc3RhdGljIFJlbmRlck9iamVjdCogcmVuZGVyZXJBZnRlclBvc2l0aW9uKFJlbmRlck9iamVj
dCogb2JqZWN0LCB1bnNpZ25lZCBvZmZzZXQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>94875</attachid>
            <date>2011-05-25 15:55:10 -0700</date>
            <delta_ts>2011-05-26 15:34:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61414-20110525155509.patch</filename>
            <type>text/plain</type>
            <size>11577</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg3MjU5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTEtMDUtMjQgIEVtaWwgQSBF
a2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlcGxhY2UgUmVuZGVyTGF5ZXI6OngveS93aWR0aC9oZWlnaHQg
d2l0aCBsb2NhdGlvbi9zaXplCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02MTQxNAorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisK
KyAgICAgICAgKiBkb20vTW91c2VSZWxhdGVkRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TW91c2VSZWxhdGVkRXZlbnQ6OmNvbXB1dGVSZWxhdGl2ZVBvc2l0aW9uKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29t
cHV0ZVJlY3RGb3JSZXBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6Om1heExheW91dE92ZXJmbG93KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklu
bGluZTo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVySW5saW5lOjpjb21wdXRlUmVjdEZvclJlcGFpbnQpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRl
TGF5ZXJQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6Y29udmVydFRv
TGF5ZXJDb29yZHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6Om9mZnNldEZyb21S
ZXNpemVDb3JuZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZVJl
Y3RzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyOjpsb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
cjo6c2V0U2l6ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmNvbXB1dGVSZWN0Rm9yUmVwYWludCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVMYXllcnMpOgorICAgICAgICAoV2ViQ29y
ZTo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZp
ZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6YWJzb2x1dGVSZWN0cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjphYnNvbHV0ZVF1YWRzKToKKwogMjAxMS0wNS0y
NCAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQuIEZpeCBzdHlsZSBlcnJvci4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Nb3Vz
ZVJlbGF0ZWRFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL01vdXNl
UmVsYXRlZEV2ZW50LmNwcAkocmV2aXNpb24gODcyMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
TW91c2VSZWxhdGVkRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDQsOCArMjA0LDkgQEAg
dm9pZCBNb3VzZVJlbGF0ZWRFdmVudDo6Y29tcHV0ZVJlbGF0aXZlUAogICAgIGlmIChuICYmIChs
YXllciA9IG4tPnJlbmRlcmVyKCktPmVuY2xvc2luZ0xheWVyKCkpKSB7CiAgICAgICAgIGxheWVy
LT51cGRhdGVMYXllclBvc2l0aW9uKCk7CiAgICAgICAgIGZvciAoOyBsYXllcjsgbGF5ZXIgPSBs
YXllci0+cGFyZW50KCkpIHsKLSAgICAgICAgICAgIG1fbGF5ZXJYIC09IGxheWVyLT54KCk7Ci0g
ICAgICAgICAgICBtX2xheWVyWSAtPSBsYXllci0+eSgpOworICAgICAgICAgICAgY29uc3QgSW50
UG9pbnQmIGxvY2F0aW9uID0gbGF5ZXItPmxvY2F0aW9uKCk7CisgICAgICAgICAgICBtX2xheWVy
WCAtPSBsb2NhdGlvbi54KCk7CisgICAgICAgICAgICBtX2xheWVyWSAtPSBsb2NhdGlvbi55KCk7
CiAgICAgICAgIH0KICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3guY3BwCShyZXZpc2lvbiA4NzIxNikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTA2LDcgKzE1MDYsNyBAQCB2b2lkIFJlbmRl
ckJveDo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlCiAgICAgICAgIHRvcExlZnQgLT0gY29udGFp
bmVyQm94LT5sYXllcigpLT5zY3JvbGxlZENvbnRlbnRPZmZzZXQoKTsgLy8gRm9yIG92ZXJmbG93
OmF1dG8vc2Nyb2xsL2hpZGRlbi4KIAogICAgICAgICBJbnRSZWN0IHJlcGFpbnRSZWN0KHRvcExl
ZnQsIHJlY3Quc2l6ZSgpKTsKLSAgICAgICAgSW50UmVjdCBib3hSZWN0KDAsIDAsIGNvbnRhaW5l
ckJveC0+bGF5ZXIoKS0+d2lkdGgoKSwgY29udGFpbmVyQm94LT5sYXllcigpLT5oZWlnaHQoKSk7
CisgICAgICAgIEludFJlY3QgYm94UmVjdChJbnRQb2ludCgpLCBjb250YWluZXJCb3gtPmxheWVy
KCktPnNpemUoKSk7CiAgICAgICAgIHJlY3QgPSBpbnRlcnNlY3Rpb24ocmVwYWludFJlY3QsIGJv
eFJlY3QpOwogICAgICAgICBpZiAocmVjdC5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm47
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCShyZXZpc2lvbiA4NzIxNikK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAkod29ya2luZyBjb3B5KQpA
QCAtMTQ0LDYgKzE0NCw3IEBAIHB1YmxpYzoKICAgICBpbnQgbWF4WUxheW91dE92ZXJmbG93KCkg
Y29uc3QgeyByZXR1cm4gbV9vdmVyZmxvdyA/IG1fb3ZlcmZsb3ctPm1heFlMYXlvdXRPdmVyZmxv
dygpIDogYm9yZGVyVG9wKCkgKyBjbGllbnRIZWlnaHQoKTsgfQogICAgIGludCBtaW5YTGF5b3V0
T3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBtX292ZXJmbG93ID8gbV9vdmVyZmxvdy0+bWluWExh
eW91dE92ZXJmbG93KCkgOiBib3JkZXJMZWZ0KCk7IH0KICAgICBpbnQgbWF4WExheW91dE92ZXJm
bG93KCkgY29uc3QgeyByZXR1cm4gbV9vdmVyZmxvdyA/IG1fb3ZlcmZsb3ctPm1heFhMYXlvdXRP
dmVyZmxvdygpIDogYm9yZGVyTGVmdCgpICsgY2xpZW50V2lkdGgoKTsgfQorICAgIEludFNpemUg
bWF4TGF5b3V0T3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBJbnRTaXplKG1heFhMYXlvdXRPdmVy
ZmxvdygpLCBtYXhZTGF5b3V0T3ZlcmZsb3coKSk7IH0KICAgICBpbnQgbG9naWNhbExlZnRMYXlv
dXRPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIHN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdN
b2RlKCkgPyBtaW5YTGF5b3V0T3ZlcmZsb3coKSA6IG1pbllMYXlvdXRPdmVyZmxvdygpOyB9CiAg
ICAgaW50IGxvZ2ljYWxSaWdodExheW91dE92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gc3R5bGUo
KS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IG1heFhMYXlvdXRPdmVyZmxvdygpIDogbWF4
WUxheW91dE92ZXJmbG93KCk7IH0KICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbmxpbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbmxpbmUuY3BwCShyZXZpc2lvbiA4NzIxNikKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05ODksNyArOTg5LDcg
QEAgSW50UmVjdCBSZW5kZXJJbmxpbmU6OmNsaXBwZWRPdmVyZmxvd1JlYwogICAgICAgICBJbnRS
ZWN0IHJlcGFpbnRSZWN0KHIpOwogICAgICAgICByZXBhaW50UmVjdC5tb3ZlKC1jYi0+bGF5ZXIo
KS0+c2Nyb2xsZWRDb250ZW50T2Zmc2V0KCkpOyAvLyBGb3Igb3ZlcmZsb3c6YXV0by9zY3JvbGwv
aGlkZGVuLgogCi0gICAgICAgIEludFJlY3QgYm94UmVjdCgwLCAwLCBjYi0+bGF5ZXIoKS0+d2lk
dGgoKSwgY2ItPmxheWVyKCktPmhlaWdodCgpKTsKKyAgICAgICAgSW50UmVjdCBib3hSZWN0KElu
dFBvaW50KCksIGNiLT5sYXllcigpLT5zaXplKCkpOwogICAgICAgICByID0gaW50ZXJzZWN0aW9u
KHJlcGFpbnRSZWN0LCBib3hSZWN0KTsKICAgICB9CiAgICAgCkBAIC0xMDc5LDcgKzEwNzksNyBA
QCB2b2lkIFJlbmRlcklubGluZTo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50CiAgICAgICAgIHRvcExl
ZnQgLT0gY29udGFpbmVyQm94LT5sYXllcigpLT5zY3JvbGxlZENvbnRlbnRPZmZzZXQoKTsgLy8g
Rm9yIG92ZXJmbG93OmF1dG8vc2Nyb2xsL2hpZGRlbi4KIAogICAgICAgICBJbnRSZWN0IHJlcGFp
bnRSZWN0KHRvcExlZnQsIHJlY3Quc2l6ZSgpKTsKLSAgICAgICAgSW50UmVjdCBib3hSZWN0KDAs
IDAsIGNvbnRhaW5lckJveC0+bGF5ZXIoKS0+d2lkdGgoKSwgY29udGFpbmVyQm94LT5sYXllcigp
LT5oZWlnaHQoKSk7CisgICAgICAgIEludFJlY3QgYm94UmVjdChJbnRQb2ludCgpLCBjb250YWlu
ZXJCb3gtPmxheWVyKCktPnNpemUoKSk7CiAgICAgICAgIHJlY3QgPSBpbnRlcnNlY3Rpb24ocmVw
YWludFJlY3QsIGJveFJlY3QpOwogICAgICAgICBpZiAocmVjdC5pc0VtcHR5KCkpCiAgICAgICAg
ICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAJKHJldmlzaW9uIDg3MjE2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUxLDEzICs2NTEsMTEgQEAgdm9pZCBSZW5kZXJM
YXllcjo6dXBkYXRlTGF5ZXJQb3NpdGlvbigpCiAgICAgaWYgKHJlbmRlcmVyKCktPmlzUmVuZGVy
SW5saW5lKCkpIHsKICAgICAgICAgUmVuZGVySW5saW5lKiBpbmxpbmVGbG93ID0gdG9SZW5kZXJJ
bmxpbmUocmVuZGVyZXIoKSk7CiAgICAgICAgIEludFJlY3QgbGluZUJveCA9IGlubGluZUZsb3ct
PmxpbmVzQm91bmRpbmdCb3goKTsKLSAgICAgICAgc2V0V2lkdGgobGluZUJveC53aWR0aCgpKTsK
LSAgICAgICAgc2V0SGVpZ2h0KGxpbmVCb3guaGVpZ2h0KCkpOwotICAgICAgICBpbmxpbmVCb3Vu
ZGluZ0JveE9mZnNldCA9IEludFNpemUobGluZUJveC54KCksIGxpbmVCb3gueSgpKTsKKyAgICAg
ICAgc2V0U2l6ZShsaW5lQm94LnNpemUoKSk7CisgICAgICAgIGlubGluZUJvdW5kaW5nQm94T2Zm
c2V0ID0gdG9TaXplKGxpbmVCb3gubG9jYXRpb24oKSk7CiAgICAgICAgIGxvY2FsUG9pbnQgKz0g
aW5saW5lQm91bmRpbmdCb3hPZmZzZXQ7CiAgICAgfSBlbHNlIGlmIChSZW5kZXJCb3gqIGJveCA9
IHJlbmRlckJveCgpKSB7Ci0gICAgICAgIHNldFdpZHRoKGJveC0+d2lkdGgoKSk7Ci0gICAgICAg
IHNldEhlaWdodChib3gtPmhlaWdodCgpKTsKKyAgICAgICAgc2V0U2l6ZShib3gtPnNpemUoKSk7
CiAgICAgICAgIGxvY2FsUG9pbnQgKz0gYm94LT5sb2NhdGlvbk9mZnNldEluY2x1ZGluZ0ZsaXBw
aW5nKCk7CiAgICAgfQogCkBAIC0xMjA0LDkgKzEyMDIsOSBAQCBSZW5kZXJMYXllcjo6Y29udmVy
dFRvTGF5ZXJDb29yZHMoY29uc3QgCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBwYXJlbnRM
YXllci0+Y29udmVydFRvTGF5ZXJDb29yZHMoYW5jZXN0b3JMYXllciwgeFBvcywgeVBvcyk7Ci0g
ICAgCi0gICAgeFBvcyArPSB4KCk7Ci0gICAgeVBvcyArPSB5KCk7CisKKyAgICB4UG9zICs9IG1f
dG9wTGVmdC54KCk7CisgICAgeVBvcyArPSBtX3RvcExlZnQueSgpOwogfQogCiBzdGF0aWMgaW5s
aW5lIGludCBhZGp1c3RlZFNjcm9sbERlbHRhKGludCBiZWdpbm5pbmdEZWx0YSkgewpAQCAtMjAw
Niw3ICsyMDA0LDcgQEAgaW50IFJlbmRlckxheWVyOjpob3Jpem9udGFsU2Nyb2xsYmFySGVpZwog
SW50U2l6ZSBSZW5kZXJMYXllcjo6b2Zmc2V0RnJvbVJlc2l6ZUNvcm5lcihjb25zdCBJbnRQb2lu
dCYgYWJzb2x1dGVQb2ludCkgY29uc3QKIHsKICAgICAvLyBDdXJyZW50bHkgdGhlIHJlc2l6ZSBj
b3JuZXIgaXMgYWx3YXlzIHRoZSBib3R0b20gcmlnaHQgY29ybmVyCi0gICAgSW50UG9pbnQgYm90
dG9tUmlnaHQod2lkdGgoKSwgaGVpZ2h0KCkpOworICAgIEludFBvaW50IGJvdHRvbVJpZ2h0ID0g
dG9Qb2ludChzaXplKCkpOwogICAgIEludFBvaW50IGxvY2FsUG9pbnQgPSBhYnNvbHV0ZVRvQ29u
dGVudHMoYWJzb2x1dGVQb2ludCk7CiAgICAgcmV0dXJuIGxvY2FsUG9pbnQgLSBib3R0b21SaWdo
dDsKIH0KQEAgLTM0NTMsNyArMzQ1MSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZVJl
Y3RzKGNvbnN0IFIKICAgICBpbnQgeCA9IDA7CiAgICAgaW50IHkgPSAwOwogICAgIGNvbnZlcnRU
b0xheWVyQ29vcmRzKHJvb3RMYXllciwgeCwgeSk7Ci0gICAgbGF5ZXJCb3VuZHMgPSBJbnRSZWN0
KHgsIHksIHdpZHRoKCksIGhlaWdodCgpKTsKKyAgICBsYXllckJvdW5kcyA9IEludFJlY3QoSW50
UG9pbnQoeCwgeSksIHNpemUoKSk7CiAgICAgCiAgICAgLy8gVXBkYXRlIHRoZSBjbGlwIHJlY3Rz
IHRoYXQgd2lsbCBiZSBwYXNzZWQgdG8gY2hpbGQgbGF5ZXJzLgogICAgIGlmIChyZW5kZXJlcigp
LT5oYXNPdmVyZmxvd0NsaXAoKSB8fCByZW5kZXJlcigpLT5oYXNDbGlwKCkpIHsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCShyZXZpc2lvbiA4NzIxNikKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
MTEsMTkgKzIxMSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBjdXJyOwogICAgIH0KICAg
ICAKLSAgICBpbnQgeCgpIGNvbnN0IHsgcmV0dXJuIG1fdG9wTGVmdC54KCk7IH0KLSAgICBpbnQg
eSgpIGNvbnN0IHsgcmV0dXJuIG1fdG9wTGVmdC55KCk7IH0KLSAgICB2b2lkIHNldExvY2F0aW9u
KGludCB4LCBpbnQgeSkKLSAgICB7Ci0gICAgICAgIG1fdG9wTGVmdCA9IEludFBvaW50KHgsIHkp
OwotICAgIH0KKyAgICBjb25zdCBJbnRQb2ludCYgbG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBt
X3RvcExlZnQ7IH0KKyAgICB2b2lkIHNldExvY2F0aW9uKGludCB4LCBpbnQgeSkgeyBtX3RvcExl
ZnQgPSBJbnRQb2ludCh4LCB5KTsgfQogCi0gICAgaW50IHdpZHRoKCkgY29uc3QgeyByZXR1cm4g
bV9sYXllclNpemUud2lkdGgoKTsgfQotICAgIGludCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBt
X2xheWVyU2l6ZS5oZWlnaHQoKTsgfQogICAgIGNvbnN0IEludFNpemUmIHNpemUoKSBjb25zdCB7
IHJldHVybiBtX2xheWVyU2l6ZTsgfQotICAgIAotICAgIHZvaWQgc2V0V2lkdGgoaW50IHcpIHsg
bV9sYXllclNpemUuc2V0V2lkdGgodyk7IH0KLSAgICB2b2lkIHNldEhlaWdodChpbnQgaCkgeyBt
X2xheWVyU2l6ZS5zZXRIZWlnaHQoaCk7IH0KKyAgICB2b2lkIHNldFNpemUoY29uc3QgSW50U2l6
ZSYgc2l6ZSkgeyBtX2xheWVyU2l6ZSA9IHNpemU7IH0KKworICAgIEludFJlY3QgcmVjdCgpIGNv
bnN0IHsgcmV0dXJuIEludFJlY3QobG9jYXRpb24oKSwgc2l6ZSgpKTsgfQogCiAgICAgaW50IHNj
cm9sbFdpZHRoKCk7CiAgICAgaW50IHNjcm9sbEhlaWdodCgpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAJKHJldmlzaW9uIDg3MjE2KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEz
ODcsNyArMTM4Nyw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQK
ICAgICAgICAgICAgIEludFJlY3QgcmVwYWludFJlY3QocmVjdCk7CiAgICAgICAgICAgICByZXBh
aW50UmVjdC5tb3ZlKC1ib3hQYXJlbnQtPmxheWVyKCktPnNjcm9sbGVkQ29udGVudE9mZnNldCgp
KTsgLy8gRm9yIG92ZXJmbG93OmF1dG8vc2Nyb2xsL2hpZGRlbi4KIAotICAgICAgICAgICAgSW50
UmVjdCBib3hSZWN0KDAsIDAsIGJveFBhcmVudC0+bGF5ZXIoKS0+d2lkdGgoKSwgYm94UGFyZW50
LT5sYXllcigpLT5oZWlnaHQoKSk7CisgICAgICAgICAgICBJbnRSZWN0IGJveFJlY3QoSW50UG9p
bnQoKSwgYm94UGFyZW50LT5sYXllcigpLT5zaXplKCkpOwogICAgICAgICAgICAgcmVjdCA9IGlu
dGVyc2VjdGlvbihyZXBhaW50UmVjdCwgYm94UmVjdCk7CiAgICAgICAgICAgICBpZiAocmVjdC5p
c0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAkocmV2aXNpb24gODcyMTYpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU4MCw3ICs1ODAsNyBAQCB2b2lkIHdyaXRlKFRleHRTdHJlYW0mIHRzLCBjb25zdCBS
ZW5kZXJPCiAgICAgICAgICAgICAgICAgdmlldy0+bGF5b3V0KCk7CiAgICAgICAgICAgICAgICAg
UmVuZGVyTGF5ZXIqIGwgPSByb290LT5sYXllcigpOwogICAgICAgICAgICAgICAgIGlmIChsKQot
ICAgICAgICAgICAgICAgICAgICB3cml0ZUxheWVycyh0cywgbCwgbCwgSW50UmVjdChsLT54KCks
IGwtPnkoKSwgbC0+d2lkdGgoKSwgbC0+aGVpZ2h0KCkpLCBpbmRlbnQgKyAxLCBiZWhhdmlvcik7
CisgICAgICAgICAgICAgICAgICAgIHdyaXRlTGF5ZXJzKHRzLCBsLCBsLCBsLT5yZWN0KCksIGlu
ZGVudCArIDEsIGJlaGF2aW9yKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAg
LTY1Myw4ICs2NTMsNyBAQCBzdGF0aWMgdm9pZCB3cml0ZUxheWVycyhUZXh0U3RyZWFtJiB0cywg
CiAgICAgaWYgKHJvb3RMYXllciA9PSBsKSB7CiAgICAgICAgIHBhaW50RGlydHlSZWN0LnNldFdp
ZHRoKG1heChwYWludERpcnR5UmVjdC53aWR0aCgpLCByb290TGF5ZXItPnJlbmRlckJveCgpLT5t
YXhYTGF5b3V0T3ZlcmZsb3coKSkpOwogICAgICAgICBwYWludERpcnR5UmVjdC5zZXRIZWlnaHQo
bWF4KHBhaW50RGlydHlSZWN0LmhlaWdodCgpLCByb290TGF5ZXItPnJlbmRlckJveCgpLT5tYXhZ
TGF5b3V0T3ZlcmZsb3coKSkpOwotICAgICAgICBsLT5zZXRXaWR0aChtYXgobC0+d2lkdGgoKSwg
bC0+cmVuZGVyQm94KCktPm1heFhMYXlvdXRPdmVyZmxvdygpKSk7Ci0gICAgICAgIGwtPnNldEhl
aWdodChtYXgobC0+aGVpZ2h0KCksIGwtPnJlbmRlckJveCgpLT5tYXhZTGF5b3V0T3ZlcmZsb3co
KSkpOworICAgICAgICBsLT5zZXRTaXplKGwtPnNpemUoKS5leHBhbmRlZFRvKGwtPnJlbmRlckJv
eCgpLT5tYXhMYXlvdXRPdmVyZmxvdygpKSk7CiAgICAgfQogICAgIAogICAgIC8vIENhbGN1bGF0
ZSB0aGUgY2xpcCByZWN0cyB3ZSBzaG91bGQgdXNlLgpAQCAtNzc2LDcgKzc3NSw3IEBAIFN0cmlu
ZyBleHRlcm5hbFJlcHJlc2VudGF0aW9uKEZyYW1lKiBmcmEKICAgICBUZXh0U3RyZWFtIHRzOwog
ICAgIGlmIChvLT5oYXNMYXllcigpKSB7CiAgICAgICAgIFJlbmRlckxheWVyKiBsID0gdG9SZW5k
ZXJCb3gobyktPmxheWVyKCk7Ci0gICAgICAgIHdyaXRlTGF5ZXJzKHRzLCBsLCBsLCBJbnRSZWN0
KGwtPngoKSwgbC0+eSgpLCBsLT53aWR0aCgpLCBsLT5oZWlnaHQoKSksIDAsIGJlaGF2aW9yKTsK
KyAgICAgICAgd3JpdGVMYXllcnModHMsIGwsIGwsIGwtPnJlY3QoKSwgMCwgYmVoYXZpb3IpOwog
ICAgICAgICB3cml0ZVNlbGVjdGlvbih0cywgbyk7CiAgICAgfQogICAgIHJldHVybiB0cy5yZWxl
YXNlKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCShyZXZp
c2lvbiA4NzIxNikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzIzLDEyICszMjMsMTIgQEAgdm9pZCBSZW5kZXJWaWV3Ojpjb21w
dXRlUmVjdEZvclJlcGFpbnQoUgogCiB2b2lkIFJlbmRlclZpZXc6OmFic29sdXRlUmVjdHMoVmVj
dG9yPEludFJlY3Q+JiByZWN0cywgaW50IHR4LCBpbnQgdHkpCiB7Ci0gICAgcmVjdHMuYXBwZW5k
KEludFJlY3QodHgsIHR5LCBtX2xheWVyLT53aWR0aCgpLCBtX2xheWVyLT5oZWlnaHQoKSkpOwor
ICAgIHJlY3RzLmFwcGVuZChJbnRSZWN0KEludFBvaW50KHR4LCB0eSksIG1fbGF5ZXItPnNpemUo
KSkpOwogfQogCiB2b2lkIFJlbmRlclZpZXc6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVh
ZD4mIHF1YWRzKQogewotICAgIHF1YWRzLmFwcGVuZChGbG9hdFJlY3QoMCwgMCwgbV9sYXllci0+
d2lkdGgoKSwgbV9sYXllci0+aGVpZ2h0KCkpKTsKKyAgICBxdWFkcy5hcHBlbmQoRmxvYXRSZWN0
KEludFBvaW50KCksIG1fbGF5ZXItPnNpemUoKSkpOwogfQogCiBzdGF0aWMgUmVuZGVyT2JqZWN0
KiByZW5kZXJlckFmdGVyUG9zaXRpb24oUmVuZGVyT2JqZWN0KiBvYmplY3QsIHVuc2lnbmVkIG9m
ZnNldCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95058</attachid>
            <date>2011-05-26 15:34:21 -0700</date>
            <delta_ts>2011-05-26 21:53:58 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-61414-20110526153420.patch</filename>
            <type>text/plain</type>
            <size>11656</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg3NDI5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTEtMDUtMjYgIEVtaWwgQSBF
a2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2Vp
ZGVsLgorCisgICAgICAgIFJlcGxhY2UgUmVuZGVyTGF5ZXI6OngveS93aWR0aC9oZWlnaHQgd2l0
aCBsb2NhdGlvbi9zaXplCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02MTQxNAorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAg
ICAgICAgKiBkb20vTW91c2VSZWxhdGVkRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW91
c2VSZWxhdGVkRXZlbnQ6OmNvbXB1dGVSZWxhdGl2ZVBvc2l0aW9uKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0
ZVJlY3RGb3JSZXBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6Om1heExheW91dE92ZXJmbG93KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGlu
ZTo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVySW5saW5lOjpjb21wdXRlUmVjdEZvclJlcGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlTGF5
ZXJQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6Y29udmVydFRvTGF5
ZXJDb29yZHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6Om9mZnNldEZyb21SZXNp
emVDb3JuZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZVJlY3Rz
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyOjpsb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6
c2V0U2l6ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmNvbXB1dGVSZWN0Rm9yUmVwYWludCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6d3Jp
dGUpOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6
ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6YWJzb2x1dGVSZWN0cyk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjphYnNvbHV0ZVF1YWRzKToKKwogMjAxMS0wNS0wMiAg
Um9iZXJ0IEhvZ2FuICA8cm9iZXJ0QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
QWRhbSBSb2Jlbi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNw
cAkocmV2aXNpb24gODc0MjkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZl
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDQsOCArMjA0LDkgQEAgdm9pZCBNb3VzZVJlbGF0
ZWRFdmVudDo6Y29tcHV0ZVJlbGF0aXZlUAogICAgIGlmIChuICYmIChsYXllciA9IG4tPnJlbmRl
cmVyKCktPmVuY2xvc2luZ0xheWVyKCkpKSB7CiAgICAgICAgIGxheWVyLT51cGRhdGVMYXllclBv
c2l0aW9uKCk7CiAgICAgICAgIGZvciAoOyBsYXllcjsgbGF5ZXIgPSBsYXllci0+cGFyZW50KCkp
IHsKLSAgICAgICAgICAgIG1fbGF5ZXJYIC09IGxheWVyLT54KCk7Ci0gICAgICAgICAgICBtX2xh
eWVyWSAtPSBsYXllci0+eSgpOworICAgICAgICAgICAgY29uc3QgSW50UG9pbnQmIGxvY2F0aW9u
ID0gbGF5ZXItPmxvY2F0aW9uKCk7CisgICAgICAgICAgICBtX2xheWVyWCAtPSBsb2NhdGlvbi54
KCk7CisgICAgICAgICAgICBtX2xheWVyWSAtPSBsb2NhdGlvbi55KCk7CiAgICAgICAgIH0KICAg
ICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCShyZXZpc2lv
biA4NzQyOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTA2LDcgKzE1MDYsNyBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVJl
Y3RGb3JSZXBhaW50KFJlCiAgICAgICAgIHRvcExlZnQgLT0gY29udGFpbmVyQm94LT5sYXllcigp
LT5zY3JvbGxlZENvbnRlbnRPZmZzZXQoKTsgLy8gRm9yIG92ZXJmbG93OmF1dG8vc2Nyb2xsL2hp
ZGRlbi4KIAogICAgICAgICBJbnRSZWN0IHJlcGFpbnRSZWN0KHRvcExlZnQsIHJlY3Quc2l6ZSgp
KTsKLSAgICAgICAgSW50UmVjdCBib3hSZWN0KDAsIDAsIGNvbnRhaW5lckJveC0+bGF5ZXIoKS0+
d2lkdGgoKSwgY29udGFpbmVyQm94LT5sYXllcigpLT5oZWlnaHQoKSk7CisgICAgICAgIEludFJl
Y3QgYm94UmVjdChJbnRQb2ludCgpLCBjb250YWluZXJCb3gtPmxheWVyKCktPnNpemUoKSk7CiAg
ICAgICAgIHJlY3QgPSBpbnRlcnNlY3Rpb24ocmVwYWludFJlY3QsIGJveFJlY3QpOwogICAgICAg
ICBpZiAocmVjdC5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCShyZXZpc2lvbiA4NzQyOSkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAkod29ya2luZyBjb3B5KQpAQCAtMTQ0LDYgKzE0NCw3
IEBAIHB1YmxpYzoKICAgICBpbnQgbWF4WUxheW91dE92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4g
bV9vdmVyZmxvdyA/IG1fb3ZlcmZsb3ctPm1heFlMYXlvdXRPdmVyZmxvdygpIDogYm9yZGVyVG9w
KCkgKyBjbGllbnRIZWlnaHQoKTsgfQogICAgIGludCBtaW5YTGF5b3V0T3ZlcmZsb3coKSBjb25z
dCB7IHJldHVybiBtX292ZXJmbG93ID8gbV9vdmVyZmxvdy0+bWluWExheW91dE92ZXJmbG93KCkg
OiBib3JkZXJMZWZ0KCk7IH0KICAgICBpbnQgbWF4WExheW91dE92ZXJmbG93KCkgY29uc3QgeyBy
ZXR1cm4gbV9vdmVyZmxvdyA/IG1fb3ZlcmZsb3ctPm1heFhMYXlvdXRPdmVyZmxvdygpIDogYm9y
ZGVyTGVmdCgpICsgY2xpZW50V2lkdGgoKTsgfQorICAgIEludFNpemUgbWF4TGF5b3V0T3ZlcmZs
b3coKSBjb25zdCB7IHJldHVybiBJbnRTaXplKG1heFhMYXlvdXRPdmVyZmxvdygpLCBtYXhZTGF5
b3V0T3ZlcmZsb3coKSk7IH0KICAgICBpbnQgbG9naWNhbExlZnRMYXlvdXRPdmVyZmxvdygpIGNv
bnN0IHsgcmV0dXJuIHN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBtaW5YTGF5
b3V0T3ZlcmZsb3coKSA6IG1pbllMYXlvdXRPdmVyZmxvdygpOyB9CiAgICAgaW50IGxvZ2ljYWxS
aWdodExheW91dE92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS0+aXNIb3Jpem9udGFs
V3JpdGluZ01vZGUoKSA/IG1heFhMYXlvdXRPdmVyZmxvdygpIDogbWF4WUxheW91dE92ZXJmbG93
KCk7IH0KICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUu
Y3BwCShyZXZpc2lvbiA4NzQyOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bmxpbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05ODksNyArOTg5LDcgQEAgSW50UmVjdCBSZW5k
ZXJJbmxpbmU6OmNsaXBwZWRPdmVyZmxvd1JlYwogICAgICAgICBJbnRSZWN0IHJlcGFpbnRSZWN0
KHIpOwogICAgICAgICByZXBhaW50UmVjdC5tb3ZlKC1jYi0+bGF5ZXIoKS0+c2Nyb2xsZWRDb250
ZW50T2Zmc2V0KCkpOyAvLyBGb3Igb3ZlcmZsb3c6YXV0by9zY3JvbGwvaGlkZGVuLgogCi0gICAg
ICAgIEludFJlY3QgYm94UmVjdCgwLCAwLCBjYi0+bGF5ZXIoKS0+d2lkdGgoKSwgY2ItPmxheWVy
KCktPmhlaWdodCgpKTsKKyAgICAgICAgSW50UmVjdCBib3hSZWN0KEludFBvaW50KCksIGNiLT5s
YXllcigpLT5zaXplKCkpOwogICAgICAgICByID0gaW50ZXJzZWN0aW9uKHJlcGFpbnRSZWN0LCBi
b3hSZWN0KTsKICAgICB9CiAgICAgCkBAIC0xMDc5LDcgKzEwNzksNyBAQCB2b2lkIFJlbmRlcklu
bGluZTo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50CiAgICAgICAgIHRvcExlZnQgLT0gY29udGFpbmVy
Qm94LT5sYXllcigpLT5zY3JvbGxlZENvbnRlbnRPZmZzZXQoKTsgLy8gRm9yIG92ZXJmbG93OmF1
dG8vc2Nyb2xsL2hpZGRlbi4KIAogICAgICAgICBJbnRSZWN0IHJlcGFpbnRSZWN0KHRvcExlZnQs
IHJlY3Quc2l6ZSgpKTsKLSAgICAgICAgSW50UmVjdCBib3hSZWN0KDAsIDAsIGNvbnRhaW5lckJv
eC0+bGF5ZXIoKS0+d2lkdGgoKSwgY29udGFpbmVyQm94LT5sYXllcigpLT5oZWlnaHQoKSk7Cisg
ICAgICAgIEludFJlY3QgYm94UmVjdChJbnRQb2ludCgpLCBjb250YWluZXJCb3gtPmxheWVyKCkt
PnNpemUoKSk7CiAgICAgICAgIHJlY3QgPSBpbnRlcnNlY3Rpb24ocmVwYWludFJlY3QsIGJveFJl
Y3QpOwogICAgICAgICBpZiAocmVjdC5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm47Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJKHJldmlzaW9uIDg3
NDI5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjUxLDEzICs2NTEsMTEgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlTGF5
ZXJQb3NpdGlvbigpCiAgICAgaWYgKHJlbmRlcmVyKCktPmlzUmVuZGVySW5saW5lKCkpIHsKICAg
ICAgICAgUmVuZGVySW5saW5lKiBpbmxpbmVGbG93ID0gdG9SZW5kZXJJbmxpbmUocmVuZGVyZXIo
KSk7CiAgICAgICAgIEludFJlY3QgbGluZUJveCA9IGlubGluZUZsb3ctPmxpbmVzQm91bmRpbmdC
b3goKTsKLSAgICAgICAgc2V0V2lkdGgobGluZUJveC53aWR0aCgpKTsKLSAgICAgICAgc2V0SGVp
Z2h0KGxpbmVCb3guaGVpZ2h0KCkpOwotICAgICAgICBpbmxpbmVCb3VuZGluZ0JveE9mZnNldCA9
IEludFNpemUobGluZUJveC54KCksIGxpbmVCb3gueSgpKTsKKyAgICAgICAgc2V0U2l6ZShsaW5l
Qm94LnNpemUoKSk7CisgICAgICAgIGlubGluZUJvdW5kaW5nQm94T2Zmc2V0ID0gdG9TaXplKGxp
bmVCb3gubG9jYXRpb24oKSk7CiAgICAgICAgIGxvY2FsUG9pbnQgKz0gaW5saW5lQm91bmRpbmdC
b3hPZmZzZXQ7CiAgICAgfSBlbHNlIGlmIChSZW5kZXJCb3gqIGJveCA9IHJlbmRlckJveCgpKSB7
Ci0gICAgICAgIHNldFdpZHRoKGJveC0+d2lkdGgoKSk7Ci0gICAgICAgIHNldEhlaWdodChib3gt
PmhlaWdodCgpKTsKKyAgICAgICAgc2V0U2l6ZShib3gtPnNpemUoKSk7CiAgICAgICAgIGxvY2Fs
UG9pbnQgKz0gYm94LT5sb2NhdGlvbk9mZnNldEluY2x1ZGluZ0ZsaXBwaW5nKCk7CiAgICAgfQog
CkBAIC0xMjA0LDkgKzEyMDIsOSBAQCBSZW5kZXJMYXllcjo6Y29udmVydFRvTGF5ZXJDb29yZHMo
Y29uc3QgCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBwYXJlbnRMYXllci0+Y29udmVydFRv
TGF5ZXJDb29yZHMoYW5jZXN0b3JMYXllciwgeFBvcywgeVBvcyk7Ci0gICAgCi0gICAgeFBvcyAr
PSB4KCk7Ci0gICAgeVBvcyArPSB5KCk7CisKKyAgICB4UG9zICs9IG1fdG9wTGVmdC54KCk7Cisg
ICAgeVBvcyArPSBtX3RvcExlZnQueSgpOwogfQogCiBzdGF0aWMgaW5saW5lIGludCBhZGp1c3Rl
ZFNjcm9sbERlbHRhKGludCBiZWdpbm5pbmdEZWx0YSkgewpAQCAtMjAwNiw3ICsyMDA0LDggQEAg
aW50IFJlbmRlckxheWVyOjpob3Jpem9udGFsU2Nyb2xsYmFySGVpZwogSW50U2l6ZSBSZW5kZXJM
YXllcjo6b2Zmc2V0RnJvbVJlc2l6ZUNvcm5lcihjb25zdCBJbnRQb2ludCYgYWJzb2x1dGVQb2lu
dCkgY29uc3QKIHsKICAgICAvLyBDdXJyZW50bHkgdGhlIHJlc2l6ZSBjb3JuZXIgaXMgYWx3YXlz
IHRoZSBib3R0b20gcmlnaHQgY29ybmVyCi0gICAgSW50UG9pbnQgYm90dG9tUmlnaHQod2lkdGgo
KSwgaGVpZ2h0KCkpOworICAgIC8vIEZJWE1FOiBUaGlzIGFzc3VtZXMgdGhlIGxvY2F0aW9uIGlz
IDAsIDAuIElzIHRoaXMgZ3VhcmFudGVlZCB0byBhbHdheXMgYmUgdGhlIGNhc2U/CisgICAgSW50
UG9pbnQgYm90dG9tUmlnaHQgPSB0b1BvaW50KHNpemUoKSk7CiAgICAgSW50UG9pbnQgbG9jYWxQ
b2ludCA9IGFic29sdXRlVG9Db250ZW50cyhhYnNvbHV0ZVBvaW50KTsKICAgICByZXR1cm4gbG9j
YWxQb2ludCAtIGJvdHRvbVJpZ2h0OwogfQpAQCAtMzQ1MSw3ICszNDUwLDcgQEAgdm9pZCBSZW5k
ZXJMYXllcjo6Y2FsY3VsYXRlUmVjdHMoY29uc3QgUgogICAgIGludCB4ID0gMDsKICAgICBpbnQg
eSA9IDA7CiAgICAgY29udmVydFRvTGF5ZXJDb29yZHMocm9vdExheWVyLCB4LCB5KTsKLSAgICBs
YXllckJvdW5kcyA9IEludFJlY3QoeCwgeSwgd2lkdGgoKSwgaGVpZ2h0KCkpOworICAgIGxheWVy
Qm91bmRzID0gSW50UmVjdChJbnRQb2ludCh4LCB5KSwgc2l6ZSgpKTsKICAgICAKICAgICAvLyBV
cGRhdGUgdGhlIGNsaXAgcmVjdHMgdGhhdCB3aWxsIGJlIHBhc3NlZCB0byBjaGlsZCBsYXllcnMu
CiAgICAgaWYgKHJlbmRlcmVyKCktPmhhc092ZXJmbG93Q2xpcCgpIHx8IHJlbmRlcmVyKCktPmhh
c0NsaXAoKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgJKHJl
dmlzaW9uIDg3NDI5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIxMSwxOSArMjExLDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIGN1cnI7CiAgICAgfQogICAgIAotICAgIGludCB4KCkgY29uc3QgeyByZXR1cm4gbV90b3BM
ZWZ0LngoKTsgfQotICAgIGludCB5KCkgY29uc3QgeyByZXR1cm4gbV90b3BMZWZ0LnkoKTsgfQot
ICAgIHZvaWQgc2V0TG9jYXRpb24oaW50IHgsIGludCB5KQotICAgIHsKLSAgICAgICAgbV90b3BM
ZWZ0ID0gSW50UG9pbnQoeCwgeSk7Ci0gICAgfQorICAgIGNvbnN0IEludFBvaW50JiBsb2NhdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fdG9wTGVmdDsgfQorICAgIHZvaWQgc2V0TG9jYXRpb24oaW50
IHgsIGludCB5KSB7IG1fdG9wTGVmdCA9IEludFBvaW50KHgsIHkpOyB9CiAKLSAgICBpbnQgd2lk
dGgoKSBjb25zdCB7IHJldHVybiBtX2xheWVyU2l6ZS53aWR0aCgpOyB9Ci0gICAgaW50IGhlaWdo
dCgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJTaXplLmhlaWdodCgpOyB9CiAgICAgY29uc3QgSW50
U2l6ZSYgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJTaXplOyB9Ci0gICAgCi0gICAgdm9p
ZCBzZXRXaWR0aChpbnQgdykgeyBtX2xheWVyU2l6ZS5zZXRXaWR0aCh3KTsgfQotICAgIHZvaWQg
c2V0SGVpZ2h0KGludCBoKSB7IG1fbGF5ZXJTaXplLnNldEhlaWdodChoKTsgfQorICAgIHZvaWQg
c2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKSB7IG1fbGF5ZXJTaXplID0gc2l6ZTsgfQorCisg
ICAgSW50UmVjdCByZWN0KCkgY29uc3QgeyByZXR1cm4gSW50UmVjdChsb2NhdGlvbigpLCBzaXpl
KCkpOyB9CiAKICAgICBpbnQgc2Nyb2xsV2lkdGgoKTsKICAgICBpbnQgc2Nyb2xsSGVpZ2h0KCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAkocmV2aXNp
b24gODc0MjkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTM4Nyw3ICsxMzg3LDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmNv
bXB1dGVSZWN0Rm9yUmVwYWludAogICAgICAgICAgICAgSW50UmVjdCByZXBhaW50UmVjdChyZWN0
KTsKICAgICAgICAgICAgIHJlcGFpbnRSZWN0Lm1vdmUoLWJveFBhcmVudC0+bGF5ZXIoKS0+c2Ny
b2xsZWRDb250ZW50T2Zmc2V0KCkpOyAvLyBGb3Igb3ZlcmZsb3c6YXV0by9zY3JvbGwvaGlkZGVu
LgogCi0gICAgICAgICAgICBJbnRSZWN0IGJveFJlY3QoMCwgMCwgYm94UGFyZW50LT5sYXllcigp
LT53aWR0aCgpLCBib3hQYXJlbnQtPmxheWVyKCktPmhlaWdodCgpKTsKKyAgICAgICAgICAgIElu
dFJlY3QgYm94UmVjdChJbnRQb2ludCgpLCBib3hQYXJlbnQtPmxheWVyKCktPnNpemUoKSk7CiAg
ICAgICAgICAgICByZWN0ID0gaW50ZXJzZWN0aW9uKHJlcGFpbnRSZWN0LCBib3hSZWN0KTsKICAg
ICAgICAgICAgIGlmIChyZWN0LmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICByZXR1cm47Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCShy
ZXZpc2lvbiA4NzQyOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNU
ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgwLDcgKzU4MCw3IEBAIHZvaWQgd3JpdGUoVGV4
dFN0cmVhbSYgdHMsIGNvbnN0IFJlbmRlck8KICAgICAgICAgICAgICAgICB2aWV3LT5sYXlvdXQo
KTsKICAgICAgICAgICAgICAgICBSZW5kZXJMYXllciogbCA9IHJvb3QtPmxheWVyKCk7CiAgICAg
ICAgICAgICAgICAgaWYgKGwpCi0gICAgICAgICAgICAgICAgICAgIHdyaXRlTGF5ZXJzKHRzLCBs
LCBsLCBJbnRSZWN0KGwtPngoKSwgbC0+eSgpLCBsLT53aWR0aCgpLCBsLT5oZWlnaHQoKSksIGlu
ZGVudCArIDEsIGJlaGF2aW9yKTsKKyAgICAgICAgICAgICAgICAgICAgd3JpdGVMYXllcnModHMs
IGwsIGwsIGwtPnJlY3QoKSwgaW5kZW50ICsgMSwgYmVoYXZpb3IpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgfQpAQCAtNjUzLDggKzY1Myw3IEBAIHN0YXRpYyB2b2lkIHdyaXRlTGF5
ZXJzKFRleHRTdHJlYW0mIHRzLCAKICAgICBpZiAocm9vdExheWVyID09IGwpIHsKICAgICAgICAg
cGFpbnREaXJ0eVJlY3Quc2V0V2lkdGgobWF4KHBhaW50RGlydHlSZWN0LndpZHRoKCksIHJvb3RM
YXllci0+cmVuZGVyQm94KCktPm1heFhMYXlvdXRPdmVyZmxvdygpKSk7CiAgICAgICAgIHBhaW50
RGlydHlSZWN0LnNldEhlaWdodChtYXgocGFpbnREaXJ0eVJlY3QuaGVpZ2h0KCksIHJvb3RMYXll
ci0+cmVuZGVyQm94KCktPm1heFlMYXlvdXRPdmVyZmxvdygpKSk7Ci0gICAgICAgIGwtPnNldFdp
ZHRoKG1heChsLT53aWR0aCgpLCBsLT5yZW5kZXJCb3goKS0+bWF4WExheW91dE92ZXJmbG93KCkp
KTsKLSAgICAgICAgbC0+c2V0SGVpZ2h0KG1heChsLT5oZWlnaHQoKSwgbC0+cmVuZGVyQm94KCkt
Pm1heFlMYXlvdXRPdmVyZmxvdygpKSk7CisgICAgICAgIGwtPnNldFNpemUobC0+c2l6ZSgpLmV4
cGFuZGVkVG8obC0+cmVuZGVyQm94KCktPm1heExheW91dE92ZXJmbG93KCkpKTsKICAgICB9CiAg
ICAgCiAgICAgLy8gQ2FsY3VsYXRlIHRoZSBjbGlwIHJlY3RzIHdlIHNob3VsZCB1c2UuCkBAIC03
NzYsNyArNzc1LDcgQEAgU3RyaW5nIGV4dGVybmFsUmVwcmVzZW50YXRpb24oRnJhbWUqIGZyYQog
ICAgIFRleHRTdHJlYW0gdHM7CiAgICAgaWYgKG8tPmhhc0xheWVyKCkpIHsKICAgICAgICAgUmVu
ZGVyTGF5ZXIqIGwgPSB0b1JlbmRlckJveChvKS0+bGF5ZXIoKTsKLSAgICAgICAgd3JpdGVMYXll
cnModHMsIGwsIGwsIEludFJlY3QobC0+eCgpLCBsLT55KCksIGwtPndpZHRoKCksIGwtPmhlaWdo
dCgpKSwgMCwgYmVoYXZpb3IpOworICAgICAgICB3cml0ZUxheWVycyh0cywgbCwgbCwgbC0+cmVj
dCgpLCAwLCBiZWhhdmlvcik7CiAgICAgICAgIHdyaXRlU2VsZWN0aW9uKHRzLCBvKTsKICAgICB9
CiAgICAgcmV0dXJuIHRzLnJlbGVhc2UoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVmlldy5jcHAJKHJldmlzaW9uIDg3NDI5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjMsMTIgKzMyMywxMiBAQCB2
b2lkIFJlbmRlclZpZXc6OmNvbXB1dGVSZWN0Rm9yUmVwYWludChSCiAKIHZvaWQgUmVuZGVyVmll
dzo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBpbnQgdHgsIGludCB0eSkK
IHsKLSAgICByZWN0cy5hcHBlbmQoSW50UmVjdCh0eCwgdHksIG1fbGF5ZXItPndpZHRoKCksIG1f
bGF5ZXItPmhlaWdodCgpKSk7CisgICAgcmVjdHMuYXBwZW5kKEludFJlY3QoSW50UG9pbnQodHgs
IHR5KSwgbV9sYXllci0+c2l6ZSgpKSk7CiB9CiAKIHZvaWQgUmVuZGVyVmlldzo6YWJzb2x1dGVR
dWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMpCiB7Ci0gICAgcXVhZHMuYXBwZW5kKEZsb2F0
UmVjdCgwLCAwLCBtX2xheWVyLT53aWR0aCgpLCBtX2xheWVyLT5oZWlnaHQoKSkpOworICAgIHF1
YWRzLmFwcGVuZChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBtX2xheWVyLT5zaXplKCkpKTsKIH0K
IAogc3RhdGljIFJlbmRlck9iamVjdCogcmVuZGVyZXJBZnRlclBvc2l0aW9uKFJlbmRlck9iamVj
dCogb2JqZWN0LCB1bnNpZ25lZCBvZmZzZXQpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>