<?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>60409</bug_id>
          
          <creation_ts>2011-05-06 15:03:25 -0700</creation_ts>
          <short_desc>Convert x,y and width,height pairs to IntPoint and IntSize for RenderLayer</short_desc>
          <delta_ts>2011-05-10 17:06:56 -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>P3</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>60318</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Emil A Eklund">eae</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>hyatt</cc>
    
    <cc>leviw</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>399838</commentid>
    <comment_count>0</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-05-06 15:03:25 -0700</bug_when>
    <thetext>Convert RenderLayer to use IntPoint for x,y pairs and IntSize for offsets and sizes.

See https://bugs.webkit.org/show_bug.cgi?id=44412 for similar change to InlineBox.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>399843</commentid>
    <comment_count>1</comment_count>
      <attachid>92647</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-05-06 15:09:29 -0700</bug_when>
    <thetext>Created attachment 92647
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>399911</commentid>
    <comment_count>2</comment_count>
      <attachid>92647</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-06 16:48:55 -0700</bug_when>
    <thetext>Comment on attachment 92647
WIP Patch

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

You are my hero.

&gt; Source/WebCore/rendering/RenderLayer.cpp:144
&gt; +    , m_topLeft(0, 0)
&gt; +    , m_layerSize(0, 0)
&gt; +    , m_scrollOffset(0, 0)
&gt; +    , m_scrollOverflow(0, 0)
&gt; +    , m_scrollSize(0, 0)

Do we even need these now?  Doesn&apos;t IntSize(), IntPoint() do the right thing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>399912</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-06 16:49:13 -0700</bug_when>
    <thetext>Am I supposed to review this WIP?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>399913</commentid>
    <comment_count>4</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-05-06 16:50:57 -0700</bug_when>
    <thetext>No, I just wanted to get some initial feedback on the approach. I&apos;ll upload a new patch when I&apos;m ready. I should have made that clear.

&gt; Do we even need these now?  Doesn&apos;t IntSize(), IntPoint() do the right thing?

Good point, we don&apos;t as the constructors do the right thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>399921</commentid>
    <comment_count>5</comment_count>
      <attachid>92647</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-05-06 17:04:07 -0700</bug_when>
    <thetext>Comment on attachment 92647
WIP Patch

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

&gt; Source/WebCore/platform/graphics/IntPoint.h:93
&gt; +    void move(const IntPoint&amp; s) { move(s.x(), s.y()); } 

This is logically inconsistent - what does it mean to move a point by another point? It seems like the calling code should be using an IntSize.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>399924</commentid>
    <comment_count>6</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-05-06 17:08:33 -0700</bug_when>
    <thetext>&gt; This is logically inconsistent - what does it mean to move a point by another point? It seems like the calling code should be using an IntSize.

Yeah, I wasn&apos;t sure about that change. I&apos;ll revert it. 
Using an IntSize is probably not the right option either though (as it&apos;s used by RenderLayer::m_topLeft which represents a position).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>399983</commentid>
    <comment_count>7</comment_count>
      <attachid>92670</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-05-06 18:08:28 -0700</bug_when>
    <thetext>Created attachment 92670
Patch

Ready for review. I belive I&apos;ve fixed the issues you pointed out in the previous patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400034</commentid>
    <comment_count>8</comment_count>
      <attachid>92670</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-06 23:08:33 -0700</bug_when>
    <thetext>Comment on attachment 92670
Patch

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

Looks great to me!  But I think we should leave Simon (or someone else familiar with layers) a day to comment if they care.

&gt; Source/WebCore/rendering/RenderLayer.cpp:722
&gt; +        m_relativeOffset.setWidth(0);
&gt; +        m_relativeOffset.setHeight(0);

You could just do m_relativeOffset = IntSize(), no?  Or maybe intSize() has a clear() method?  I figure this can be expressed in one line regardless. :)

&gt; Source/WebCore/rendering/RenderLayer.h:215
&gt; +    int x() const { return m_topLeft.x(); }
&gt; +    int y() const { return m_topLeft.y(); }

I feel like there was some concern brought up about using &quot;topLeft&quot; in the InlineBox patch I wrote like this... something about how things might not always be &quot;top&quot; or &quot;left&quot;.   But that may not apply to layers... I think it was relating to vertical text.

&gt; Source/WebCore/rendering/RenderLayer.h:219
&gt; +        m_topLeft.setX(x);
&gt; +        m_topLeft.setY(y);

I suspect there is a one-line equivalent.  m_topLeft = IntPoint(x, y); would be one way. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400081</commentid>
    <comment_count>9</comment_count>
      <attachid>92670</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-05-07 10:15:40 -0700</bug_when>
    <thetext>Comment on attachment 92670
Patch

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

This is a good start.

&gt; Source/WebCore/rendering/RenderLayer.cpp:718
&gt; +        m_relativeOffset.setWidth(renderer()-&gt;relativePositionOffsetX());
&gt; +        m_relativeOffset.setHeight(renderer()-&gt;relativePositionOffsetY());

Seems like the renderer should have relativePositionOffset()

&gt; Source/WebCore/rendering/RenderLayer.h:224
&gt; +    IntSize size() const { return m_layerSize; }

This could return const IntSize&amp;

&gt; Source/WebCore/rendering/RenderLayer.h:237
&gt; +    IntSize scrolledContentOffset() const { return IntSize(scrollXOffset() + m_scrollOverflow.width(), scrollYOffset() + m_scrollOverflow.height()); }

Would be nice to do this math entirely in IntSize/IntPoint.

&gt; Source/WebCore/rendering/RenderLayer.h:310
&gt; +    IntSize relativePositionOffset() const { return m_relativeOffset; }

Could return const IntSize&amp;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400656</commentid>
    <comment_count>10</comment_count>
      <attachid>92827</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-05-09 12:31:37 -0700</bug_when>
    <thetext>Created attachment 92827
Patch

Thanks for the review Simon and Eric. I&apos;ve made the changes you suggested, please take another look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400663</commentid>
    <comment_count>11</comment_count>
      <attachid>92827</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-09 12:35:39 -0700</bug_when>
    <thetext>Comment on attachment 92827
Patch

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

Fantastic!

&gt; Source/WebCore/rendering/RenderLayer.cpp:1335
&gt; +    IntSize newScrollOffset = IntSize(x - m_scrollOrigin.x(), y - m_scrollOrigin.y());

I might have written this as IntPoint(x, y) - m_scrollOrigin, on the assumption that eventually this function will take a point instead of an int pair.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401533</commentid>
    <comment_count>12</comment_count>
      <attachid>93016</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-05-10 15:00:47 -0700</bug_when>
    <thetext>Created attachment 93016
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401656</commentid>
    <comment_count>13</comment_count>
      <attachid>93016</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-10 17:06:52 -0700</bug_when>
    <thetext>Comment on attachment 93016
Patch for landing

Clearing flags on attachment: 93016

Committed r86196: &lt;http://trac.webkit.org/changeset/86196&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401657</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-10 17:06:56 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92647</attachid>
            <date>2011-05-06 15:09:29 -0700</date>
            <delta_ts>2011-05-06 18:08:28 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>60409.patch</filename>
            <type>text/plain</type>
            <size>11277</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg1OTc5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTEtMDUtMDYgIEVtaWwgQSBF
a2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIENvbnZlcnQgeCx5IGFuZCB3aWR0aCxoZWlnaHQgcGFpcnMgdG8g
SW50UG9pbnQgYW5kIEludFNpemUgZm9yIFJlbmRlckxheWVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDQwOQorCisgICAgICAgIENvbnZlcnQgUmVu
ZGVyTGF5ZXIgdG8gdXNlIEludFBvaW50IGZvciB4LHkgcGFpcnMgYW5kIEludFNpemUgZm9yIG9m
ZnNldHMgYW5kIHNpemVzLgorCisgICAgICAgIEFkZCBJbnRQb2ludDo6bW92ZShJbnRQb2ludCkg
Zm9yIG1vdmluZyBhIHBvaW50IGJhc2VkIG9uIGFub3RoZXIgcG9pbnQuCisKKyAgICAgICAgUmVm
YWN0b3JpbmcsIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbnRQb2ludC5oOgorICAgICAgICAoV2ViQ29yZTo6SW50UG9pbnQ6Om1vdmUp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllcjo6UmVuZGVyTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
OjpzY3JvbGxUbyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dmlzaWJsZUhlaWdo
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dmlzaWJsZVdpZHRoKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzY3JvbGxXaWR0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllcjo6c2Nyb2xsSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyOjpjb21wdXRlU2Nyb2xsRGltZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6dXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp4KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyOjpzZXRMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6d2lkdGgp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmhlaWdodCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllcjo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6
c2V0V2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNldEhlaWdodCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2Nyb2xsZWRDb250ZW50T2Zmc2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzY3JvbGxYT2Zmc2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyOjpzY3JvbGxZT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyOjpzY3JvbGxUb1hPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXI6OnNjcm9sbFRvWU9mZnNldCk6CisKIDIwMTEtMDUtMDYgIEFkYW0gQmFydGggIDxhYmFydGhA
d2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFBvaW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9pbnQuaAkocmV2aXNpb24gODU4
NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRQb2ludC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04OSw3ICs4OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFgoaW50IHgp
IHsgbV94ID0geDsgfQogICAgIHZvaWQgc2V0WShpbnQgeSkgeyBtX3kgPSB5OyB9CiAKLSAgICB2
b2lkIG1vdmUoY29uc3QgSW50U2l6ZSYgcykgeyBtb3ZlKHMud2lkdGgoKSwgcy5oZWlnaHQoKSk7
IH0gCisgICAgdm9pZCBtb3ZlKGNvbnN0IEludFNpemUmIHMpIHsgbW92ZShzLndpZHRoKCksIHMu
aGVpZ2h0KCkpOyB9CisgICAgdm9pZCBtb3ZlKGNvbnN0IEludFBvaW50JiBzKSB7IG1vdmUocy54
KCksIHMueSgpKTsgfSAKICAgICB2b2lkIG1vdmUoaW50IGR4LCBpbnQgZHkpIHsgbV94ICs9IGR4
OyBtX3kgKz0gZHk7IH0KICAgICAKICAgICBJbnRQb2ludCBleHBhbmRlZFRvKGNvbnN0IEludFBv
aW50JiBvdGhlcikgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcAkocmV2aXNpb24gODU4NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzcsMTYgKzEzNywxMSBAQCBSZW5kZXJM
YXllcjo6UmVuZGVyTGF5ZXIoUmVuZGVyQm94TW9kZWxPCiAgICAgLCBtX2xhc3QoMCkKICAgICAs
IG1fcmVsWCgwKQogICAgICwgbV9yZWxZKDApCi0gICAgLCBtX3goMCkKLSAgICAsIG1feSgwKQot
ICAgICwgbV93aWR0aCgwKQotICAgICwgbV9oZWlnaHQoMCkKLSAgICAsIG1fc2Nyb2xsWCgwKQot
ICAgICwgbV9zY3JvbGxZKDApCi0gICAgLCBtX3Njcm9sbExlZnRPdmVyZmxvdygwKQotICAgICwg
bV9zY3JvbGxUb3BPdmVyZmxvdygwKQotICAgICwgbV9zY3JvbGxXaWR0aCgwKQotICAgICwgbV9z
Y3JvbGxIZWlnaHQoMCkKKyAgICAsIG1fdG9wTGVmdCgwLCAwKQorICAgICwgbV9sYXllclNpemUo
MCwgMCkKKyAgICAsIG1fc2Nyb2xsT2Zmc2V0KDAsIDApCisgICAgLCBtX3Njcm9sbE92ZXJmbG93
KDAsIDApCisgICAgLCBtX3Njcm9sbFNpemUoMCwgMCkKICAgICAsIG1faW5SZXNpemVNb2RlKGZh
bHNlKQogICAgICwgbV9wb3NaT3JkZXJMaXN0KDApCiAgICAgLCBtX25lZ1pPcmRlckxpc3QoMCkK
QEAgLTI4OCwxMCArMjgzLDEwIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRp
b25zKFUKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBvbGRDYWNoZWRPZmZzZXQgPSAqY2Fj
aGVkT2Zmc2V0OwogICAgICAgICAgICAgLy8gRnJlcXVlbnRseSBvdXIgcGFyZW50IGxheWVyJ3Mg
cmVuZGVyZXIgd2lsbCBiZSB0aGUgc2FtZSBhcyBvdXIgcmVuZGVyZXIncyBjb250YWluaW5nIGJs
b2NrLiAgSW4gdGhhdCBjYXNlLAotICAgICAgICAgICAgLy8gd2UganVzdCB1cGRhdGUgdGhlIGNh
Y2hlIHVzaW5nIG91ciBvZmZzZXQgdG8gb3VyIHBhcmVudCAod2hpY2ggaXMgbV94IC8gbV95KS4g
IE90aGVyd2lzZSwgcmVnZW5lcmF0ZWQgY2FjaGVkCisgICAgICAgICAgICAvLyB3ZSBqdXN0IHVw
ZGF0ZSB0aGUgY2FjaGUgdXNpbmcgb3VyIG9mZnNldCB0byBvdXIgcGFyZW50ICh3aGljaCBpcyBt
X3RvcExlZnQpLiBPdGhlcndpc2UsIHJlZ2VuZXJhdGVkIGNhY2hlZAogICAgICAgICAgICAgLy8g
b2Zmc2V0cyB0byB0aGUgcm9vdCBmcm9tIHRoZSByZW5kZXIgdHJlZS4KICAgICAgICAgICAgIGlm
ICghbV9wYXJlbnQgfHwgbV9wYXJlbnQtPnJlbmRlcmVyKCkgPT0gcmVuZGVyZXIoKS0+Y29udGFp
bmluZ0Jsb2NrKCkpCi0gICAgICAgICAgICAgICAgY2FjaGVkT2Zmc2V0LT5tb3ZlKG1feCwgbV95
KTsgLy8gRmFzdCBjYXNlCisgICAgICAgICAgICAgICAgY2FjaGVkT2Zmc2V0LT5tb3ZlKG1fdG9w
TGVmdCk7IC8vIEZhc3QgY2FzZQogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAg
aW50IHggPSAwOwogICAgICAgICAgICAgICAgIGludCB5ID0gMDsKQEAgLTEzNDQsMTIgKzEzMzks
MTAgQEAgdm9pZCBSZW5kZXJMYXllcjo6c2Nyb2xsVG8oaW50IHgsIGludCB5KQogICAgIC8vIGNv
bXBsaWNhdGVkIChzaW5jZSBpdCB3aWxsIGludm9sdmUgdGVzdGluZyB3aGV0aGVyIG91ciBsYXll
cgogICAgIC8vIGlzIGVpdGhlciBvY2NsdWRlZCBieSBhbm90aGVyIGxheWVyIG9yIGNsaXBwZWQg
YnkgYW4gZW5jbG9zaW5nCiAgICAgLy8gbGF5ZXIgb3IgY29udGFpbnMgZml4ZWQgYmFja2dyb3Vu
ZHMsIGV0Yy4pLgotICAgIGludCBuZXdTY3JvbGxYID0geCAtIG1fc2Nyb2xsT3JpZ2luLngoKTsK
LSAgICBpbnQgbmV3U2Nyb2xsWSA9IHkgLSBtX3Njcm9sbE9yaWdpbi55KCk7Ci0gICAgaWYgKG1f
c2Nyb2xsWSA9PSBuZXdTY3JvbGxZICYmIG1fc2Nyb2xsWCA9PSBuZXdTY3JvbGxYKQorICAgIElu
dFNpemUgbmV3U2Nyb2xsT2Zmc2V0ID0gSW50U2l6ZSh4IC0gbV9zY3JvbGxPcmlnaW4ueCgpLCB5
IC0gbV9zY3JvbGxPcmlnaW4ueSgpKTsKKyAgICBpZiAobV9zY3JvbGxPZmZzZXQgPT0gbmV3U2Ny
b2xsT2Zmc2V0KQogICAgICAgICByZXR1cm47Ci0gICAgbV9zY3JvbGxYID0gbmV3U2Nyb2xsWDsK
LSAgICBtX3Njcm9sbFkgPSBuZXdTY3JvbGxZOworICAgIG1fc2Nyb2xsT2Zmc2V0ID0gbmV3U2Ny
b2xsT2Zmc2V0OwogCiAgICAgLy8gVXBkYXRlIHRoZSBwb3NpdGlvbnMgb2Ygb3VyIGNoaWxkIGxh
eWVycy4gRG9uJ3QgaGF2ZSB1cGRhdGVMYXllclBvc2l0aW9ucygpIHVwZGF0ZQogICAgIC8vIGNv
bXBvc2l0aW5nIGxheWVycywgYmVjYXVzZSB3ZSBuZWVkIHRvIGRvIGEgZGVlcCB1cGRhdGUgZnJv
bSB0aGUgY29tcG9zaXRpbmcgYW5jZXN0b3IuCkBAIC0xNzkyLDEyICsxNzg1LDEyIEBAIEludFNp
emUgUmVuZGVyTGF5ZXI6OmNvbnRlbnRzU2l6ZSgpIGNvbnMKIAogaW50IFJlbmRlckxheWVyOjp2
aXNpYmxlSGVpZ2h0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9oZWlnaHQ7CisgICAgcmV0dXJu
IG1fbGF5ZXJTaXplLmhlaWdodCgpOwogfQogCiBpbnQgUmVuZGVyTGF5ZXI6OnZpc2libGVXaWR0
aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fd2lkdGg7CisgICAgcmV0dXJuIG1fbGF5ZXJTaXpl
LndpZHRoKCk7CiB9CiAKIGJvb2wgUmVuZGVyTGF5ZXI6OnNob3VsZFN1c3BlbmRTY3JvbGxBbmlt
YXRpb25zKCkgY29uc3QKQEAgLTIwMzQsMTQgKzIwMjcsMTQgQEAgaW50IFJlbmRlckxheWVyOjpz
Y3JvbGxXaWR0aCgpCiB7CiAgICAgaWYgKG1fc2Nyb2xsRGltZW5zaW9uc0RpcnR5KQogICAgICAg
ICBjb21wdXRlU2Nyb2xsRGltZW5zaW9ucygpOwotICAgIHJldHVybiBtX3Njcm9sbFdpZHRoOwor
ICAgIHJldHVybiBtX3Njcm9sbFNpemUud2lkdGgoKTsKIH0KIAogaW50IFJlbmRlckxheWVyOjpz
Y3JvbGxIZWlnaHQoKQogewogICAgIGlmIChtX3Njcm9sbERpbWVuc2lvbnNEaXJ0eSkKICAgICAg
ICAgY29tcHV0ZVNjcm9sbERpbWVuc2lvbnMoKTsKLSAgICByZXR1cm4gbV9zY3JvbGxIZWlnaHQ7
CisgICAgcmV0dXJuIG1fc2Nyb2xsU2l6ZS5oZWlnaHQoKTsKIH0KIAogaW50IFJlbmRlckxheWVy
OjpvdmVyZmxvd1RvcCgpIGNvbnN0CkBAIC0yMDgzLDE4ICsyMDc2LDE4IEBAIHZvaWQgUmVuZGVy
TGF5ZXI6OmNvbXB1dGVTY3JvbGxEaW1lbnNpb24KICAgICAKICAgICBtX3Njcm9sbERpbWVuc2lv
bnNEaXJ0eSA9IGZhbHNlOwogCi0gICAgbV9zY3JvbGxMZWZ0T3ZlcmZsb3cgPSBvdmVyZmxvd0xl
ZnQoKSAtIGJveC0+Ym9yZGVyTGVmdCgpOwotICAgIG1fc2Nyb2xsVG9wT3ZlcmZsb3cgPSBvdmVy
Zmxvd1RvcCgpIC0gYm94LT5ib3JkZXJUb3AoKTsKKyAgICBtX3Njcm9sbE92ZXJmbG93LnNldFdp
ZHRoKG92ZXJmbG93TGVmdCgpIC0gYm94LT5ib3JkZXJMZWZ0KCkpOworICAgIG1fc2Nyb2xsT3Zl
cmZsb3cuc2V0SGVpZ2h0KG92ZXJmbG93VG9wKCkgLSBib3gtPmJvcmRlclRvcCgpKTsKIAotICAg
IG1fc2Nyb2xsV2lkdGggPSBvdmVyZmxvd1JpZ2h0KCkgLSBvdmVyZmxvd0xlZnQoKTsKLSAgICBt
X3Njcm9sbEhlaWdodCA9IG92ZXJmbG93Qm90dG9tKCkgLSBvdmVyZmxvd1RvcCgpOworICAgIG1f
c2Nyb2xsU2l6ZS5zZXRXaWR0aChvdmVyZmxvd1JpZ2h0KCkgLSBvdmVyZmxvd0xlZnQoKSk7Cisg
ICAgbV9zY3JvbGxTaXplLnNldEhlaWdodChvdmVyZmxvd0JvdHRvbSgpIC0gb3ZlcmZsb3dUb3Ao
KSk7CiAgICAgCi0gICAgbV9zY3JvbGxPcmlnaW4gPSBJbnRQb2ludCgtbV9zY3JvbGxMZWZ0T3Zl
cmZsb3csIC1tX3Njcm9sbFRvcE92ZXJmbG93KTsKKyAgICBtX3Njcm9sbE9yaWdpbiA9IEludFBv
aW50KC1tX3Njcm9sbE92ZXJmbG93LndpZHRoKCksIC1tX3Njcm9sbE92ZXJmbG93LmhlaWdodCgp
KTsKIAogICAgIGlmIChuZWVkSEJhcikKLSAgICAgICAgKm5lZWRIQmFyID0gbV9zY3JvbGxXaWR0
aCA+IGJveC0+Y2xpZW50V2lkdGgoKTsKKyAgICAgICAgKm5lZWRIQmFyID0gbV9zY3JvbGxTaXpl
LndpZHRoKCkgPiBib3gtPmNsaWVudFdpZHRoKCk7CiAgICAgaWYgKG5lZWRWQmFyKQotICAgICAg
ICAqbmVlZFZCYXIgPSBtX3Njcm9sbEhlaWdodCA+IGJveC0+Y2xpZW50SGVpZ2h0KCk7CisgICAg
ICAgICpuZWVkVkJhciA9IG1fc2Nyb2xsU2l6ZS5oZWlnaHQoKSA+IGJveC0+Y2xpZW50SGVpZ2h0
KCk7CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZU92ZXJmbG93U3RhdHVzKGJvb2wgaG9y
aXpvbnRhbE92ZXJmbG93LCBib29sIHZlcnRpY2FsT3ZlcmZsb3cpCkBAIC0yMjExLDEzICsyMjA0
LDEzIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZVNjcm9sbEluZm9BZnRlckwKICAgICAgICAg
aW50IGNsaWVudFdpZHRoID0gYm94LT5jbGllbnRXaWR0aCgpOwogICAgICAgICBpbnQgcGFnZVN0
ZXAgPSBtYXgobWF4PGludD4oY2xpZW50V2lkdGggKiBTY3JvbGxiYXI6Om1pbkZyYWN0aW9uVG9T
dGVwV2hlblBhZ2luZygpLCBjbGllbnRXaWR0aCAtIFNjcm9sbGJhcjo6bWF4T3ZlcmxhcEJldHdl
ZW5QYWdlcygpKSwgMSk7CiAgICAgICAgIG1faEJhci0+c2V0U3RlcHMoU2Nyb2xsYmFyOjpwaXhl
bHNQZXJMaW5lU3RlcCgpLCBwYWdlU3RlcCk7Ci0gICAgICAgIG1faEJhci0+c2V0UHJvcG9ydGlv
bihjbGllbnRXaWR0aCwgbV9zY3JvbGxXaWR0aCk7CisgICAgICAgIG1faEJhci0+c2V0UHJvcG9y
dGlvbihjbGllbnRXaWR0aCwgbV9zY3JvbGxTaXplLndpZHRoKCkpOwogICAgIH0KICAgICBpZiAo
bV92QmFyKSB7CiAgICAgICAgIGludCBjbGllbnRIZWlnaHQgPSBib3gtPmNsaWVudEhlaWdodCgp
OwogICAgICAgICBpbnQgcGFnZVN0ZXAgPSBtYXgobWF4PGludD4oY2xpZW50SGVpZ2h0ICogU2Ny
b2xsYmFyOjptaW5GcmFjdGlvblRvU3RlcFdoZW5QYWdpbmcoKSwgY2xpZW50SGVpZ2h0IC0gU2Ny
b2xsYmFyOjptYXhPdmVybGFwQmV0d2VlblBhZ2VzKCkpLCAxKTsKICAgICAgICAgbV92QmFyLT5z
ZXRTdGVwcyhTY3JvbGxiYXI6OnBpeGVsc1BlckxpbmVTdGVwKCksIHBhZ2VTdGVwKTsKLSAgICAg
ICAgbV92QmFyLT5zZXRQcm9wb3J0aW9uKGNsaWVudEhlaWdodCwgbV9zY3JvbGxIZWlnaHQpOwor
ICAgICAgICBtX3ZCYXItPnNldFByb3BvcnRpb24oY2xpZW50SGVpZ2h0LCBtX3Njcm9sbFNpemUu
aGVpZ2h0KCkpOwogICAgIH0KICAKICAgICBSZW5kZXJWaWV3KiB2aWV3ID0gcmVuZGVyZXIoKS0+
dmlldygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgJKHJldmlz
aW9uIDg1ODY2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTIxMSwyMCArMjExLDIwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IGN1cnI7CiAgICAgfQogICAgIAotICAgIGludCB4KCkgY29uc3QgeyByZXR1cm4gbV94OyB9Ci0g
ICAgaW50IHkoKSBjb25zdCB7IHJldHVybiBtX3k7IH0KKyAgICBpbnQgeCgpIGNvbnN0IHsgcmV0
dXJuIG1fdG9wTGVmdC54KCk7IH0KKyAgICBpbnQgeSgpIGNvbnN0IHsgcmV0dXJuIG1fdG9wTGVm
dC55KCk7IH0KICAgICB2b2lkIHNldExvY2F0aW9uKGludCB4LCBpbnQgeSkKICAgICB7Ci0gICAg
ICAgIG1feCA9IHg7Ci0gICAgICAgIG1feSA9IHk7CisgICAgICAgIG1fdG9wTGVmdC5zZXRYKHgp
OworICAgICAgICBtX3RvcExlZnQuc2V0WSh5KTsKICAgICB9CiAKLSAgICBpbnQgd2lkdGgoKSBj
b25zdCB7IHJldHVybiBtX3dpZHRoOyB9Ci0gICAgaW50IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJu
IG1faGVpZ2h0OyB9Ci0gICAgSW50U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gSW50U2l6ZSht
X3dpZHRoLCBtX2hlaWdodCk7IH0KKyAgICBpbnQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2xh
eWVyU2l6ZS53aWR0aCgpOyB9CisgICAgaW50IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5
ZXJTaXplLmhlaWdodCgpOyB9CisgICAgSW50U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9s
YXllclNpemU7IH0KICAgICAKLSAgICB2b2lkIHNldFdpZHRoKGludCB3KSB7IG1fd2lkdGggPSB3
OyB9Ci0gICAgdm9pZCBzZXRIZWlnaHQoaW50IGgpIHsgbV9oZWlnaHQgPSBoOyB9CisgICAgdm9p
ZCBzZXRXaWR0aChpbnQgdykgeyBtX2xheWVyU2l6ZS5zZXRXaWR0aCh3KTsgfQorICAgIHZvaWQg
c2V0SGVpZ2h0KGludCBoKSB7IG1fbGF5ZXJTaXplLnNldEhlaWdodChoKTsgfQogCiAgICAgaW50
IHNjcm9sbFdpZHRoKCk7CiAgICAgaW50IHNjcm9sbEhlaWdodCgpOwpAQCAtMjM0LDE0ICsyMzQs
MTQgQEAgcHVibGljOgogICAgIC8vIFNjcm9sbGluZyBtZXRob2RzIGZvciBsYXllcnMgdGhhdCBj
YW4gc2Nyb2xsIHRoZWlyIG92ZXJmbG93LgogICAgIHZvaWQgc2Nyb2xsQnlSZWN1cnNpdmVseShp
bnQgeERlbHRhLCBpbnQgeURlbHRhKTsKIAotICAgIEludFNpemUgc2Nyb2xsZWRDb250ZW50T2Zm
c2V0KCkgY29uc3QgeyByZXR1cm4gSW50U2l6ZShzY3JvbGxYT2Zmc2V0KCkgKyBtX3Njcm9sbExl
ZnRPdmVyZmxvdywgc2Nyb2xsWU9mZnNldCgpICsgbV9zY3JvbGxUb3BPdmVyZmxvdyk7IH0KKyAg
ICBJbnRTaXplIHNjcm9sbGVkQ29udGVudE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIEludFNpemUo
c2Nyb2xsWE9mZnNldCgpICsgbV9zY3JvbGxPdmVyZmxvdy53aWR0aCgpLCBzY3JvbGxZT2Zmc2V0
KCkgKyBtX3Njcm9sbE92ZXJmbG93LmhlaWdodCgpKTsgfQogCi0gICAgaW50IHNjcm9sbFhPZmZz
ZXQoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbFggKyBtX3Njcm9sbE9yaWdpbi54KCk7IH0KLSAg
ICBpbnQgc2Nyb2xsWU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsWSArIG1fc2Nyb2xs
T3JpZ2luLnkoKTsgfQorICAgIGludCBzY3JvbGxYT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9z
Y3JvbGxPZmZzZXQud2lkdGgoKSArIG1fc2Nyb2xsT3JpZ2luLngoKTsgfQorICAgIGludCBzY3Jv
bGxZT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxPZmZzZXQuaGVpZ2h0KCkgKyBtX3Nj
cm9sbE9yaWdpbi55KCk7IH0KIAogICAgIHZvaWQgc2Nyb2xsVG9PZmZzZXQoaW50IHgsIGludCB5
KTsKLSAgICB2b2lkIHNjcm9sbFRvWE9mZnNldChpbnQgeCkgeyBzY3JvbGxUb09mZnNldCh4LCBt
X3Njcm9sbFkgKyBtX3Njcm9sbE9yaWdpbi55KCkpOyB9Ci0gICAgdm9pZCBzY3JvbGxUb1lPZmZz
ZXQoaW50IHkpIHsgc2Nyb2xsVG9PZmZzZXQobV9zY3JvbGxYICsgbV9zY3JvbGxPcmlnaW4ueCgp
LCB5KTsgfQorICAgIHZvaWQgc2Nyb2xsVG9YT2Zmc2V0KGludCB4KSB7IHNjcm9sbFRvT2Zmc2V0
KHgsIHNjcm9sbFlPZmZzZXQoKSk7IH0KKyAgICB2b2lkIHNjcm9sbFRvWU9mZnNldChpbnQgeSkg
eyBzY3JvbGxUb09mZnNldChzY3JvbGxYT2Zmc2V0KCksIHkpOyB9CiAgICAgdm9pZCBzY3JvbGxS
ZWN0VG9WaXNpYmxlKGNvbnN0IEludFJlY3QmLCBib29sIHNjcm9sbFRvQW5jaG9yID0gZmFsc2Us
IGNvbnN0IFNjcm9sbEFsaWdubWVudCYgYWxpZ25YID0gU2Nyb2xsQWxpZ25tZW50OjphbGlnbkNl
bnRlcklmTmVlZGVkLCBjb25zdCBTY3JvbGxBbGlnbm1lbnQmIGFsaWduWSA9IFNjcm9sbEFsaWdu
bWVudDo6YWxpZ25DZW50ZXJJZk5lZWRlZCk7CiAKICAgICBJbnRSZWN0IGdldFJlY3RUb0V4cG9z
ZShjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCwgY29uc3QgSW50UmVjdCYgZXhwb3NlUmVjdCwg
Y29uc3QgU2Nyb2xsQWxpZ25tZW50JiBhbGlnblgsIGNvbnN0IFNjcm9sbEFsaWdubWVudCYgYWxp
Z25ZKTsKQEAgLTYyNiwyMyArNjI2LDE4IEBAIHByb3RlY3RlZDoKICAgICBpbnQgbV9yZWxZOwog
CiAgICAgLy8gT3VyICh4LHkpIGNvb3JkaW5hdGVzIGFyZSBpbiBvdXIgcGFyZW50IGxheWVyJ3Mg
Y29vcmRpbmF0ZSBzcGFjZS4KLSAgICBpbnQgbV94OwotICAgIGludCBtX3k7CisgICAgSW50UG9p
bnQgbV90b3BMZWZ0OwogCiAgICAgLy8gVGhlIGxheWVyJ3Mgd2lkdGgvaGVpZ2h0Ci0gICAgaW50
IG1fd2lkdGg7Ci0gICAgaW50IG1faGVpZ2h0OworICAgIEludFNpemUgbV9sYXllclNpemU7CiAK
ICAgICAvLyBPdXIgc2Nyb2xsIG9mZnNldHMgaWYgdGhlIHZpZXcgaXMgc2Nyb2xsZWQuCi0gICAg
aW50IG1fc2Nyb2xsWDsKLSAgICBpbnQgbV9zY3JvbGxZOwotICAgIAotICAgIGludCBtX3Njcm9s
bExlZnRPdmVyZmxvdzsKLSAgICBpbnQgbV9zY3JvbGxUb3BPdmVyZmxvdzsKKyAgICBJbnRTaXpl
IG1fc2Nyb2xsT2Zmc2V0OworCisgICAgSW50U2l6ZSBtX3Njcm9sbE92ZXJmbG93OwogICAgIAog
ICAgIC8vIFRoZSB3aWR0aC9oZWlnaHQgb2Ygb3VyIHNjcm9sbGVkIGFyZWEuCi0gICAgaW50IG1f
c2Nyb2xsV2lkdGg7Ci0gICAgaW50IG1fc2Nyb2xsSGVpZ2h0OworICAgIEludFNpemUgbV9zY3Jv
bGxTaXplOwogCiAgICAgLy8gRm9yIGxheWVycyB3aXRoIG92ZXJmbG93LCB3ZSBoYXZlIGEgcGFp
ciBvZiBzY3JvbGxiYXJzLgogICAgIFJlZlB0cjxTY3JvbGxiYXI+IG1faEJhcjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92670</attachid>
            <date>2011-05-06 18:08:28 -0700</date>
            <delta_ts>2011-05-09 12:31:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>60409.patch</filename>
            <type>text/plain</type>
            <size>11888</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg1OTkwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTEtMDUtMDYgIEVtaWwgQSBF
a2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIENvbnZlcnQgeCx5IGFuZCB3aWR0aCxoZWlnaHQgcGFpcnMgdG8g
SW50UG9pbnQgYW5kIEludFNpemUgZm9yIFJlbmRlckxheWVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDQwOQorCisgICAgICAgIENvbnZlcnQgUmVu
ZGVyTGF5ZXIgdG8gdXNlIEludFBvaW50IGZvciB4LHkgcGFpcnMgYW5kIEludFNpemUgZm9yIG9m
ZnNldHMgYW5kIHNpemVzLgorCisgICAgICAgIFJlZmFjdG9yaW5nLCBjb3ZlcmVkIGJ5IGV4aXN0
aW5nIHRlc3RzLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpSZW5kZXJMYXllcik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllcjo6dXBkYXRlTGF5ZXJQb3NpdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXI6OnNjcm9sbFRvKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp2aXNp
YmxlSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp2aXNpYmxlV2lkdGgp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNjcm9sbFdpZHRoKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyOjpzY3JvbGxIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXI6OmNvbXB1dGVTY3JvbGxEaW1lbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyOjp1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXQpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJMYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6Ongp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnkpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXI6OnNldExvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
Ojp3aWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aGVpZ2h0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjpzZXRXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2V0SGVp
Z2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzY3JvbGxlZENvbnRlbnRPZmZz
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNjcm9sbFhPZmZzZXQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNjcm9sbFlPZmZzZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXI6OnNjcm9sbFRvWE9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllcjo6c2Nyb2xsVG9ZT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyOjpyZWxhdGl2ZVBvc2l0aW9uT2Zmc2V0KToKKwogMjAxMS0wNS0wNiAgQmV0aCBEYWtpbiAg
PGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJKHJldmlzaW9uIDg1
ODY2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTM1LDE4ICsxMzUsNiBAQCBSZW5kZXJMYXllcjo6UmVuZGVyTGF5ZXIoUmVu
ZGVyQm94TW9kZWxPCiAgICAgLCBtX25leHQoMCkKICAgICAsIG1fZmlyc3QoMCkKICAgICAsIG1f
bGFzdCgwKQotICAgICwgbV9yZWxYKDApCi0gICAgLCBtX3JlbFkoMCkKLSAgICAsIG1feCgwKQot
ICAgICwgbV95KDApCi0gICAgLCBtX3dpZHRoKDApCi0gICAgLCBtX2hlaWdodCgwKQotICAgICwg
bV9zY3JvbGxYKDApCi0gICAgLCBtX3Njcm9sbFkoMCkKLSAgICAsIG1fc2Nyb2xsTGVmdE92ZXJm
bG93KDApCi0gICAgLCBtX3Njcm9sbFRvcE92ZXJmbG93KDApCi0gICAgLCBtX3Njcm9sbFdpZHRo
KDApCi0gICAgLCBtX3Njcm9sbEhlaWdodCgwKQogICAgICwgbV9pblJlc2l6ZU1vZGUoZmFsc2Up
CiAgICAgLCBtX3Bvc1pPcmRlckxpc3QoMCkKICAgICAsIG1fbmVnWk9yZGVyTGlzdCgwKQpAQCAt
Mjg4LDEwICsyNzYsMTAgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlTGF5ZXJQb3NpdGlvbnMo
VQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIG9sZENhY2hlZE9mZnNldCA9ICpjYWNoZWRP
ZmZzZXQ7CiAgICAgICAgICAgICAvLyBGcmVxdWVudGx5IG91ciBwYXJlbnQgbGF5ZXIncyByZW5k
ZXJlciB3aWxsIGJlIHRoZSBzYW1lIGFzIG91ciByZW5kZXJlcidzIGNvbnRhaW5pbmcgYmxvY2su
ICBJbiB0aGF0IGNhc2UsCi0gICAgICAgICAgICAvLyB3ZSBqdXN0IHVwZGF0ZSB0aGUgY2FjaGUg
dXNpbmcgb3VyIG9mZnNldCB0byBvdXIgcGFyZW50ICh3aGljaCBpcyBtX3ggLyBtX3kpLiAgT3Ro
ZXJ3aXNlLCByZWdlbmVyYXRlZCBjYWNoZWQKKyAgICAgICAgICAgIC8vIHdlIGp1c3QgdXBkYXRl
IHRoZSBjYWNoZSB1c2luZyBvdXIgb2Zmc2V0IHRvIG91ciBwYXJlbnQgKHdoaWNoIGlzIG1fdG9w
TGVmdCkuIE90aGVyd2lzZSwgcmVnZW5lcmF0ZWQgY2FjaGVkCiAgICAgICAgICAgICAvLyBvZmZz
ZXRzIHRvIHRoZSByb290IGZyb20gdGhlIHJlbmRlciB0cmVlLgogICAgICAgICAgICAgaWYgKCFt
X3BhcmVudCB8fCBtX3BhcmVudC0+cmVuZGVyZXIoKSA9PSByZW5kZXJlcigpLT5jb250YWluaW5n
QmxvY2soKSkKLSAgICAgICAgICAgICAgICBjYWNoZWRPZmZzZXQtPm1vdmUobV94LCBtX3kpOyAv
LyBGYXN0IGNhc2UKKyAgICAgICAgICAgICAgICBjYWNoZWRPZmZzZXQtPm1vdmUobV90b3BMZWZ0
LngoKSwgbV90b3BMZWZ0LnkoKSk7IC8vIEZhc3QgY2FzZQogICAgICAgICAgICAgZWxzZSB7CiAg
ICAgICAgICAgICAgICAgaW50IHggPSAwOwogICAgICAgICAgICAgICAgIGludCB5ID0gMDsKQEAg
LTcyNSwxMSArNzEzLDEzIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb24o
KQogICAgICAgICBsb2NhbFBvaW50IC09IHNjcm9sbE9mZnNldDsKICAgICB9CiAgICAgICAgIAot
ICAgIG1fcmVsWCA9IG1fcmVsWSA9IDA7CiAgICAgaWYgKHJlbmRlcmVyKCktPmlzUmVsUG9zaXRp
b25lZCgpKSB7Ci0gICAgICAgIG1fcmVsWCA9IHJlbmRlcmVyKCktPnJlbGF0aXZlUG9zaXRpb25P
ZmZzZXRYKCk7Ci0gICAgICAgIG1fcmVsWSA9IHJlbmRlcmVyKCktPnJlbGF0aXZlUG9zaXRpb25P
ZmZzZXRZKCk7Ci0gICAgICAgIGxvY2FsUG9pbnQubW92ZShtX3JlbFgsIG1fcmVsWSk7CisgICAg
ICAgIG1fcmVsYXRpdmVPZmZzZXQuc2V0V2lkdGgocmVuZGVyZXIoKS0+cmVsYXRpdmVQb3NpdGlv
bk9mZnNldFgoKSk7CisgICAgICAgIG1fcmVsYXRpdmVPZmZzZXQuc2V0SGVpZ2h0KHJlbmRlcmVy
KCktPnJlbGF0aXZlUG9zaXRpb25PZmZzZXRZKCkpOworICAgICAgICBsb2NhbFBvaW50Lm1vdmUo
bV9yZWxhdGl2ZU9mZnNldCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9yZWxhdGl2ZU9mZnNl
dC5zZXRXaWR0aCgwKTsKKyAgICAgICAgbV9yZWxhdGl2ZU9mZnNldC5zZXRIZWlnaHQoMCk7CiAg
ICAgfQogCiAgICAgLy8gRklYTUU6IFdlJ2QgcmVhbGx5IGxpa2UgdG8ganVzdCBnZXQgcmlkIG9m
IHRoZSBjb25jZXB0IG9mIGEgbGF5ZXIgcmVjdGFuZ2xlIGFuZCByZWx5IG9uIHRoZSByZW5kZXJl
cnMuCkBAIC0xMzQ0LDEyICsxMzM0LDEwIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNjcm9sbFRvKGlu
dCB4LCBpbnQgeSkKICAgICAvLyBjb21wbGljYXRlZCAoc2luY2UgaXQgd2lsbCBpbnZvbHZlIHRl
c3Rpbmcgd2hldGhlciBvdXIgbGF5ZXIKICAgICAvLyBpcyBlaXRoZXIgb2NjbHVkZWQgYnkgYW5v
dGhlciBsYXllciBvciBjbGlwcGVkIGJ5IGFuIGVuY2xvc2luZwogICAgIC8vIGxheWVyIG9yIGNv
bnRhaW5zIGZpeGVkIGJhY2tncm91bmRzLCBldGMuKS4KLSAgICBpbnQgbmV3U2Nyb2xsWCA9IHgg
LSBtX3Njcm9sbE9yaWdpbi54KCk7Ci0gICAgaW50IG5ld1Njcm9sbFkgPSB5IC0gbV9zY3JvbGxP
cmlnaW4ueSgpOwotICAgIGlmIChtX3Njcm9sbFkgPT0gbmV3U2Nyb2xsWSAmJiBtX3Njcm9sbFgg
PT0gbmV3U2Nyb2xsWCkKKyAgICBJbnRTaXplIG5ld1Njcm9sbE9mZnNldCA9IEludFNpemUoeCAt
IG1fc2Nyb2xsT3JpZ2luLngoKSwgeSAtIG1fc2Nyb2xsT3JpZ2luLnkoKSk7CisgICAgaWYgKG1f
c2Nyb2xsT2Zmc2V0ID09IG5ld1Njcm9sbE9mZnNldCkKICAgICAgICAgcmV0dXJuOwotICAgIG1f
c2Nyb2xsWCA9IG5ld1Njcm9sbFg7Ci0gICAgbV9zY3JvbGxZID0gbmV3U2Nyb2xsWTsKKyAgICBt
X3Njcm9sbE9mZnNldCA9IG5ld1Njcm9sbE9mZnNldDsKIAogICAgIC8vIFVwZGF0ZSB0aGUgcG9z
aXRpb25zIG9mIG91ciBjaGlsZCBsYXllcnMuIERvbid0IGhhdmUgdXBkYXRlTGF5ZXJQb3NpdGlv
bnMoKSB1cGRhdGUKICAgICAvLyBjb21wb3NpdGluZyBsYXllcnMsIGJlY2F1c2Ugd2UgbmVlZCB0
byBkbyBhIGRlZXAgdXBkYXRlIGZyb20gdGhlIGNvbXBvc2l0aW5nIGFuY2VzdG9yLgpAQCAtMTc5
MiwxMiArMTc4MCwxMiBAQCBJbnRTaXplIFJlbmRlckxheWVyOjpjb250ZW50c1NpemUoKSBjb25z
CiAKIGludCBSZW5kZXJMYXllcjo6dmlzaWJsZUhlaWdodCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1faGVpZ2h0OworICAgIHJldHVybiBtX2xheWVyU2l6ZS5oZWlnaHQoKTsKIH0KIAogaW50IFJl
bmRlckxheWVyOjp2aXNpYmxlV2lkdGgoKSBjb25zdAogewotICAgIHJldHVybiBtX3dpZHRoOwor
ICAgIHJldHVybiBtX2xheWVyU2l6ZS53aWR0aCgpOwogfQogCiBib29sIFJlbmRlckxheWVyOjpz
aG91bGRTdXNwZW5kU2Nyb2xsQW5pbWF0aW9ucygpIGNvbnN0CkBAIC0yMDM0LDE0ICsyMDIyLDE0
IEBAIGludCBSZW5kZXJMYXllcjo6c2Nyb2xsV2lkdGgoKQogewogICAgIGlmIChtX3Njcm9sbERp
bWVuc2lvbnNEaXJ0eSkKICAgICAgICAgY29tcHV0ZVNjcm9sbERpbWVuc2lvbnMoKTsKLSAgICBy
ZXR1cm4gbV9zY3JvbGxXaWR0aDsKKyAgICByZXR1cm4gbV9zY3JvbGxTaXplLndpZHRoKCk7CiB9
CiAKIGludCBSZW5kZXJMYXllcjo6c2Nyb2xsSGVpZ2h0KCkKIHsKICAgICBpZiAobV9zY3JvbGxE
aW1lbnNpb25zRGlydHkpCiAgICAgICAgIGNvbXB1dGVTY3JvbGxEaW1lbnNpb25zKCk7Ci0gICAg
cmV0dXJuIG1fc2Nyb2xsSGVpZ2h0OworICAgIHJldHVybiBtX3Njcm9sbFNpemUuaGVpZ2h0KCk7
CiB9CiAKIGludCBSZW5kZXJMYXllcjo6b3ZlcmZsb3dUb3AoKSBjb25zdApAQCAtMjA4MywxOCAr
MjA3MSwxOCBAQCB2b2lkIFJlbmRlckxheWVyOjpjb21wdXRlU2Nyb2xsRGltZW5zaW9uCiAgICAg
CiAgICAgbV9zY3JvbGxEaW1lbnNpb25zRGlydHkgPSBmYWxzZTsKIAotICAgIG1fc2Nyb2xsTGVm
dE92ZXJmbG93ID0gb3ZlcmZsb3dMZWZ0KCkgLSBib3gtPmJvcmRlckxlZnQoKTsKLSAgICBtX3Nj
cm9sbFRvcE92ZXJmbG93ID0gb3ZlcmZsb3dUb3AoKSAtIGJveC0+Ym9yZGVyVG9wKCk7CisgICAg
bV9zY3JvbGxPdmVyZmxvdy5zZXRXaWR0aChvdmVyZmxvd0xlZnQoKSAtIGJveC0+Ym9yZGVyTGVm
dCgpKTsKKyAgICBtX3Njcm9sbE92ZXJmbG93LnNldEhlaWdodChvdmVyZmxvd1RvcCgpIC0gYm94
LT5ib3JkZXJUb3AoKSk7CiAKLSAgICBtX3Njcm9sbFdpZHRoID0gb3ZlcmZsb3dSaWdodCgpIC0g
b3ZlcmZsb3dMZWZ0KCk7Ci0gICAgbV9zY3JvbGxIZWlnaHQgPSBvdmVyZmxvd0JvdHRvbSgpIC0g
b3ZlcmZsb3dUb3AoKTsKKyAgICBtX3Njcm9sbFNpemUuc2V0V2lkdGgob3ZlcmZsb3dSaWdodCgp
IC0gb3ZlcmZsb3dMZWZ0KCkpOworICAgIG1fc2Nyb2xsU2l6ZS5zZXRIZWlnaHQob3ZlcmZsb3dC
b3R0b20oKSAtIG92ZXJmbG93VG9wKCkpOwogICAgIAotICAgIG1fc2Nyb2xsT3JpZ2luID0gSW50
UG9pbnQoLW1fc2Nyb2xsTGVmdE92ZXJmbG93LCAtbV9zY3JvbGxUb3BPdmVyZmxvdyk7CisgICAg
bV9zY3JvbGxPcmlnaW4gPSBJbnRQb2ludCgtbV9zY3JvbGxPdmVyZmxvdy53aWR0aCgpLCAtbV9z
Y3JvbGxPdmVyZmxvdy5oZWlnaHQoKSk7CiAKICAgICBpZiAobmVlZEhCYXIpCi0gICAgICAgICpu
ZWVkSEJhciA9IG1fc2Nyb2xsV2lkdGggPiBib3gtPmNsaWVudFdpZHRoKCk7CisgICAgICAgICpu
ZWVkSEJhciA9IG1fc2Nyb2xsU2l6ZS53aWR0aCgpID4gYm94LT5jbGllbnRXaWR0aCgpOwogICAg
IGlmIChuZWVkVkJhcikKLSAgICAgICAgKm5lZWRWQmFyID0gbV9zY3JvbGxIZWlnaHQgPiBib3gt
PmNsaWVudEhlaWdodCgpOworICAgICAgICAqbmVlZFZCYXIgPSBtX3Njcm9sbFNpemUuaGVpZ2h0
KCkgPiBib3gtPmNsaWVudEhlaWdodCgpOwogfQogCiB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVP
dmVyZmxvd1N0YXR1cyhib29sIGhvcml6b250YWxPdmVyZmxvdywgYm9vbCB2ZXJ0aWNhbE92ZXJm
bG93KQpAQCAtMjIxMSwxMyArMjE5OSwxMyBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVTY3Jv
bGxJbmZvQWZ0ZXJMCiAgICAgICAgIGludCBjbGllbnRXaWR0aCA9IGJveC0+Y2xpZW50V2lkdGgo
KTsKICAgICAgICAgaW50IHBhZ2VTdGVwID0gbWF4KG1heDxpbnQ+KGNsaWVudFdpZHRoICogU2Ny
b2xsYmFyOjptaW5GcmFjdGlvblRvU3RlcFdoZW5QYWdpbmcoKSwgY2xpZW50V2lkdGggLSBTY3Jv
bGxiYXI6Om1heE92ZXJsYXBCZXR3ZWVuUGFnZXMoKSksIDEpOwogICAgICAgICBtX2hCYXItPnNl
dFN0ZXBzKFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSwgcGFnZVN0ZXApOwotICAgICAg
ICBtX2hCYXItPnNldFByb3BvcnRpb24oY2xpZW50V2lkdGgsIG1fc2Nyb2xsV2lkdGgpOworICAg
ICAgICBtX2hCYXItPnNldFByb3BvcnRpb24oY2xpZW50V2lkdGgsIG1fc2Nyb2xsU2l6ZS53aWR0
aCgpKTsKICAgICB9CiAgICAgaWYgKG1fdkJhcikgewogICAgICAgICBpbnQgY2xpZW50SGVpZ2h0
ID0gYm94LT5jbGllbnRIZWlnaHQoKTsKICAgICAgICAgaW50IHBhZ2VTdGVwID0gbWF4KG1heDxp
bnQ+KGNsaWVudEhlaWdodCAqIFNjcm9sbGJhcjo6bWluRnJhY3Rpb25Ub1N0ZXBXaGVuUGFnaW5n
KCksIGNsaWVudEhlaWdodCAtIFNjcm9sbGJhcjo6bWF4T3ZlcmxhcEJldHdlZW5QYWdlcygpKSwg
MSk7CiAgICAgICAgIG1fdkJhci0+c2V0U3RlcHMoU2Nyb2xsYmFyOjpwaXhlbHNQZXJMaW5lU3Rl
cCgpLCBwYWdlU3RlcCk7Ci0gICAgICAgIG1fdkJhci0+c2V0UHJvcG9ydGlvbihjbGllbnRIZWln
aHQsIG1fc2Nyb2xsSGVpZ2h0KTsKKyAgICAgICAgbV92QmFyLT5zZXRQcm9wb3J0aW9uKGNsaWVu
dEhlaWdodCwgbV9zY3JvbGxTaXplLmhlaWdodCgpKTsKICAgICB9CiAgCiAgICAgUmVuZGVyVmll
dyogdmlldyA9IHJlbmRlcmVyKCktPnZpZXcoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5oCShyZXZpc2lvbiA4NTg2NikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTEsMjAgKzIxMSwyMCBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBjdXJyOwogICAgIH0KICAgICAKLSAgICBpbnQgeCgpIGNv
bnN0IHsgcmV0dXJuIG1feDsgfQotICAgIGludCB5KCkgY29uc3QgeyByZXR1cm4gbV95OyB9Cisg
ICAgaW50IHgoKSBjb25zdCB7IHJldHVybiBtX3RvcExlZnQueCgpOyB9CisgICAgaW50IHkoKSBj
b25zdCB7IHJldHVybiBtX3RvcExlZnQueSgpOyB9CiAgICAgdm9pZCBzZXRMb2NhdGlvbihpbnQg
eCwgaW50IHkpCiAgICAgewotICAgICAgICBtX3ggPSB4OwotICAgICAgICBtX3kgPSB5OworICAg
ICAgICBtX3RvcExlZnQuc2V0WCh4KTsKKyAgICAgICAgbV90b3BMZWZ0LnNldFkoeSk7CiAgICAg
fQogCi0gICAgaW50IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV93aWR0aDsgfQotICAgIGludCBo
ZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2hlaWdodDsgfQotICAgIEludFNpemUgc2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIEludFNpemUobV93aWR0aCwgbV9oZWlnaHQpOyB9CisgICAgaW50IHdpZHRo
KCkgY29uc3QgeyByZXR1cm4gbV9sYXllclNpemUud2lkdGgoKTsgfQorICAgIGludCBoZWlnaHQo
KSBjb25zdCB7IHJldHVybiBtX2xheWVyU2l6ZS5oZWlnaHQoKTsgfQorICAgIEludFNpemUgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJTaXplOyB9CiAgICAgCi0gICAgdm9pZCBzZXRXaWR0
aChpbnQgdykgeyBtX3dpZHRoID0gdzsgfQotICAgIHZvaWQgc2V0SGVpZ2h0KGludCBoKSB7IG1f
aGVpZ2h0ID0gaDsgfQorICAgIHZvaWQgc2V0V2lkdGgoaW50IHcpIHsgbV9sYXllclNpemUuc2V0
V2lkdGgodyk7IH0KKyAgICB2b2lkIHNldEhlaWdodChpbnQgaCkgeyBtX2xheWVyU2l6ZS5zZXRI
ZWlnaHQoaCk7IH0KIAogICAgIGludCBzY3JvbGxXaWR0aCgpOwogICAgIGludCBzY3JvbGxIZWln
aHQoKTsKQEAgLTIzNCwxNCArMjM0LDE0IEBAIHB1YmxpYzoKICAgICAvLyBTY3JvbGxpbmcgbWV0
aG9kcyBmb3IgbGF5ZXJzIHRoYXQgY2FuIHNjcm9sbCB0aGVpciBvdmVyZmxvdy4KICAgICB2b2lk
IHNjcm9sbEJ5UmVjdXJzaXZlbHkoaW50IHhEZWx0YSwgaW50IHlEZWx0YSk7CiAKLSAgICBJbnRT
aXplIHNjcm9sbGVkQ29udGVudE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIEludFNpemUoc2Nyb2xs
WE9mZnNldCgpICsgbV9zY3JvbGxMZWZ0T3ZlcmZsb3csIHNjcm9sbFlPZmZzZXQoKSArIG1fc2Ny
b2xsVG9wT3ZlcmZsb3cpOyB9CisgICAgSW50U2l6ZSBzY3JvbGxlZENvbnRlbnRPZmZzZXQoKSBj
b25zdCB7IHJldHVybiBJbnRTaXplKHNjcm9sbFhPZmZzZXQoKSArIG1fc2Nyb2xsT3ZlcmZsb3cu
d2lkdGgoKSwgc2Nyb2xsWU9mZnNldCgpICsgbV9zY3JvbGxPdmVyZmxvdy5oZWlnaHQoKSk7IH0K
IAotICAgIGludCBzY3JvbGxYT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxYICsgbV9z
Y3JvbGxPcmlnaW4ueCgpOyB9Ci0gICAgaW50IHNjcm9sbFlPZmZzZXQoKSBjb25zdCB7IHJldHVy
biBtX3Njcm9sbFkgKyBtX3Njcm9sbE9yaWdpbi55KCk7IH0KKyAgICBpbnQgc2Nyb2xsWE9mZnNl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsT2Zmc2V0LndpZHRoKCkgKyBtX3Njcm9sbE9yaWdp
bi54KCk7IH0KKyAgICBpbnQgc2Nyb2xsWU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xs
T2Zmc2V0LmhlaWdodCgpICsgbV9zY3JvbGxPcmlnaW4ueSgpOyB9CiAKICAgICB2b2lkIHNjcm9s
bFRvT2Zmc2V0KGludCB4LCBpbnQgeSk7Ci0gICAgdm9pZCBzY3JvbGxUb1hPZmZzZXQoaW50IHgp
IHsgc2Nyb2xsVG9PZmZzZXQoeCwgbV9zY3JvbGxZICsgbV9zY3JvbGxPcmlnaW4ueSgpKTsgfQot
ICAgIHZvaWQgc2Nyb2xsVG9ZT2Zmc2V0KGludCB5KSB7IHNjcm9sbFRvT2Zmc2V0KG1fc2Nyb2xs
WCArIG1fc2Nyb2xsT3JpZ2luLngoKSwgeSk7IH0KKyAgICB2b2lkIHNjcm9sbFRvWE9mZnNldChp
bnQgeCkgeyBzY3JvbGxUb09mZnNldCh4LCBzY3JvbGxZT2Zmc2V0KCkpOyB9CisgICAgdm9pZCBz
Y3JvbGxUb1lPZmZzZXQoaW50IHkpIHsgc2Nyb2xsVG9PZmZzZXQoc2Nyb2xsWE9mZnNldCgpLCB5
KTsgfQogICAgIHZvaWQgc2Nyb2xsUmVjdFRvVmlzaWJsZShjb25zdCBJbnRSZWN0JiwgYm9vbCBz
Y3JvbGxUb0FuY2hvciA9IGZhbHNlLCBjb25zdCBTY3JvbGxBbGlnbm1lbnQmIGFsaWduWCA9IFNj
cm9sbEFsaWdubWVudDo6YWxpZ25DZW50ZXJJZk5lZWRlZCwgY29uc3QgU2Nyb2xsQWxpZ25tZW50
JiBhbGlnblkgPSBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduQ2VudGVySWZOZWVkZWQpOwogCiAgICAg
SW50UmVjdCBnZXRSZWN0VG9FeHBvc2UoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QsIGNvbnN0
IEludFJlY3QmIGV4cG9zZVJlY3QsIGNvbnN0IFNjcm9sbEFsaWdubWVudCYgYWxpZ25YLCBjb25z
dCBTY3JvbGxBbGlnbm1lbnQmIGFsaWduWSk7CkBAIC0zMDYsOCArMzA2LDggQEAgcHVibGljOgog
CiAgICAgdm9pZCB1cGRhdGVUcmFuc2Zvcm0oKTsKIAotICAgIHZvaWQgcmVsYXRpdmVQb3NpdGlv
bk9mZnNldChpbnQmIHJlbFgsIGludCYgcmVsWSkgY29uc3QgeyByZWxYICs9IG1fcmVsWDsgcmVs
WSArPSBtX3JlbFk7IH0KLSAgICBJbnRTaXplIHJlbGF0aXZlUG9zaXRpb25PZmZzZXQoKSBjb25z
dCB7IHJldHVybiBJbnRTaXplKG1fcmVsWCwgbV9yZWxZKTsgfQorICAgIHZvaWQgcmVsYXRpdmVQ
b3NpdGlvbk9mZnNldChpbnQmIHJlbFgsIGludCYgcmVsWSkgY29uc3QgeyByZWxYICs9IG1fcmVs
YXRpdmVPZmZzZXQud2lkdGgoKTsgcmVsWSArPSBtX3JlbGF0aXZlT2Zmc2V0LmhlaWdodCgpOyB9
CisgICAgSW50U2l6ZSByZWxhdGl2ZVBvc2l0aW9uT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9y
ZWxhdGl2ZU9mZnNldDsgfQogCiAgICAgdm9pZCBjbGVhckNsaXBSZWN0c0luY2x1ZGluZ0Rlc2Nl
bmRhbnRzKCk7CiAgICAgdm9pZCBjbGVhckNsaXBSZWN0cygpOwpAQCAtNjIyLDI3ICs2MjIsMjEg
QEAgcHJvdGVjdGVkOgogICAgIEludFJlY3QgbV9vdXRsaW5lQm94OwogCiAgICAgLy8gT3VyIGN1
cnJlbnQgcmVsYXRpdmUgcG9zaXRpb24gb2Zmc2V0LgotICAgIGludCBtX3JlbFg7Ci0gICAgaW50
IG1fcmVsWTsKKyAgICBJbnRTaXplIG1fcmVsYXRpdmVPZmZzZXQ7CiAKICAgICAvLyBPdXIgKHgs
eSkgY29vcmRpbmF0ZXMgYXJlIGluIG91ciBwYXJlbnQgbGF5ZXIncyBjb29yZGluYXRlIHNwYWNl
LgotICAgIGludCBtX3g7Ci0gICAgaW50IG1feTsKKyAgICBJbnRQb2ludCBtX3RvcExlZnQ7CiAK
ICAgICAvLyBUaGUgbGF5ZXIncyB3aWR0aC9oZWlnaHQKLSAgICBpbnQgbV93aWR0aDsKLSAgICBp
bnQgbV9oZWlnaHQ7CisgICAgSW50U2l6ZSBtX2xheWVyU2l6ZTsKIAogICAgIC8vIE91ciBzY3Jv
bGwgb2Zmc2V0cyBpZiB0aGUgdmlldyBpcyBzY3JvbGxlZC4KLSAgICBpbnQgbV9zY3JvbGxYOwot
ICAgIGludCBtX3Njcm9sbFk7Ci0gICAgCi0gICAgaW50IG1fc2Nyb2xsTGVmdE92ZXJmbG93Owot
ICAgIGludCBtX3Njcm9sbFRvcE92ZXJmbG93OworICAgIEludFNpemUgbV9zY3JvbGxPZmZzZXQ7
CisKKyAgICBJbnRTaXplIG1fc2Nyb2xsT3ZlcmZsb3c7CiAgICAgCiAgICAgLy8gVGhlIHdpZHRo
L2hlaWdodCBvZiBvdXIgc2Nyb2xsZWQgYXJlYS4KLSAgICBpbnQgbV9zY3JvbGxXaWR0aDsKLSAg
ICBpbnQgbV9zY3JvbGxIZWlnaHQ7CisgICAgSW50U2l6ZSBtX3Njcm9sbFNpemU7CiAKICAgICAv
LyBGb3IgbGF5ZXJzIHdpdGggb3ZlcmZsb3csIHdlIGhhdmUgYSBwYWlyIG9mIHNjcm9sbGJhcnMu
CiAgICAgUmVmUHRyPFNjcm9sbGJhcj4gbV9oQmFyOwo=
</data>
<flag name="review"
          id="85682"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92827</attachid>
            <date>2011-05-09 12:31:37 -0700</date>
            <delta_ts>2011-05-10 15:00:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>60409.patch</filename>
            <type>text/plain</type>
            <size>11834</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg2MDc2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTEtMDUtMDkgIEVtaWwgQSBF
a2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIENvbnZlcnQgeCx5IGFuZCB3aWR0aCxoZWlnaHQgcGFpcnMgdG8g
SW50UG9pbnQgYW5kIEludFNpemUgZm9yIFJlbmRlckxheWVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDQwOQorCisgICAgICAgIENvbnZlcnQgUmVu
ZGVyTGF5ZXIgdG8gdXNlIEludFBvaW50IGZvciB4LHkgcGFpcnMgYW5kIEludFNpemUgZm9yIG9m
ZnNldHMgYW5kIHNpemVzLgorCisgICAgICAgIFJlZmFjdG9yaW5nLCBjb3ZlcmVkIGJ5IGV4aXN0
aW5nIHRlc3RzLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpSZW5kZXJMYXllcik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllcjo6dXBkYXRlTGF5ZXJQb3NpdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXI6OnNjcm9sbFRvKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp2aXNp
YmxlSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp2aXNpYmxlV2lkdGgp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNjcm9sbFdpZHRoKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyOjpzY3JvbGxIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXI6OmNvbXB1dGVTY3JvbGxEaW1lbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyOjp1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXQpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJMYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6Ongp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnkpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXI6OnNldExvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
Ojp3aWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aGVpZ2h0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjpzZXRXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2V0SGVp
Z2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzY3JvbGxlZENvbnRlbnRPZmZz
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNjcm9sbFhPZmZzZXQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNjcm9sbFlPZmZzZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXI6OnNjcm9sbE9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllcjo6c2Nyb2xsVG9YT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
OjpzY3JvbGxUb1lPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnJlbGF0
aXZlUG9zaXRpb25PZmZzZXQpOgorCiAyMDExLTA1LTA5ICBSb2JpbiBEdW5uICA8cm9iaW5AYWxs
ZHVubi5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2V2aW4gT2xsaXZpZXIuCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJKHJldmlzaW9uIDg1ODY2KQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTM1LDE4ICsxMzUsNiBAQCBSZW5kZXJMYXllcjo6UmVuZGVyTGF5ZXIoUmVuZGVyQm94
TW9kZWxPCiAgICAgLCBtX25leHQoMCkKICAgICAsIG1fZmlyc3QoMCkKICAgICAsIG1fbGFzdCgw
KQotICAgICwgbV9yZWxYKDApCi0gICAgLCBtX3JlbFkoMCkKLSAgICAsIG1feCgwKQotICAgICwg
bV95KDApCi0gICAgLCBtX3dpZHRoKDApCi0gICAgLCBtX2hlaWdodCgwKQotICAgICwgbV9zY3Jv
bGxYKDApCi0gICAgLCBtX3Njcm9sbFkoMCkKLSAgICAsIG1fc2Nyb2xsTGVmdE92ZXJmbG93KDAp
Ci0gICAgLCBtX3Njcm9sbFRvcE92ZXJmbG93KDApCi0gICAgLCBtX3Njcm9sbFdpZHRoKDApCi0g
ICAgLCBtX3Njcm9sbEhlaWdodCgwKQogICAgICwgbV9pblJlc2l6ZU1vZGUoZmFsc2UpCiAgICAg
LCBtX3Bvc1pPcmRlckxpc3QoMCkKICAgICAsIG1fbmVnWk9yZGVyTGlzdCgwKQpAQCAtMjg4LDEw
ICsyNzYsMTAgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlTGF5ZXJQb3NpdGlvbnMoVQogICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgIG9sZENhY2hlZE9mZnNldCA9ICpjYWNoZWRPZmZzZXQ7
CiAgICAgICAgICAgICAvLyBGcmVxdWVudGx5IG91ciBwYXJlbnQgbGF5ZXIncyByZW5kZXJlciB3
aWxsIGJlIHRoZSBzYW1lIGFzIG91ciByZW5kZXJlcidzIGNvbnRhaW5pbmcgYmxvY2suICBJbiB0
aGF0IGNhc2UsCi0gICAgICAgICAgICAvLyB3ZSBqdXN0IHVwZGF0ZSB0aGUgY2FjaGUgdXNpbmcg
b3VyIG9mZnNldCB0byBvdXIgcGFyZW50ICh3aGljaCBpcyBtX3ggLyBtX3kpLiAgT3RoZXJ3aXNl
LCByZWdlbmVyYXRlZCBjYWNoZWQKKyAgICAgICAgICAgIC8vIHdlIGp1c3QgdXBkYXRlIHRoZSBj
YWNoZSB1c2luZyBvdXIgb2Zmc2V0IHRvIG91ciBwYXJlbnQgKHdoaWNoIGlzIG1fdG9wTGVmdCku
IE90aGVyd2lzZSwgcmVnZW5lcmF0ZWQgY2FjaGVkCiAgICAgICAgICAgICAvLyBvZmZzZXRzIHRv
IHRoZSByb290IGZyb20gdGhlIHJlbmRlciB0cmVlLgogICAgICAgICAgICAgaWYgKCFtX3BhcmVu
dCB8fCBtX3BhcmVudC0+cmVuZGVyZXIoKSA9PSByZW5kZXJlcigpLT5jb250YWluaW5nQmxvY2so
KSkKLSAgICAgICAgICAgICAgICBjYWNoZWRPZmZzZXQtPm1vdmUobV94LCBtX3kpOyAvLyBGYXN0
IGNhc2UKKyAgICAgICAgICAgICAgICBjYWNoZWRPZmZzZXQtPm1vdmUobV90b3BMZWZ0LngoKSwg
bV90b3BMZWZ0LnkoKSk7IC8vIEZhc3QgY2FzZQogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICAgICAgaW50IHggPSAwOwogICAgICAgICAgICAgICAgIGludCB5ID0gMDsKQEAgLTcyNSwx
MSArNzEzLDExIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb24oKQogICAg
ICAgICBsb2NhbFBvaW50IC09IHNjcm9sbE9mZnNldDsKICAgICB9CiAgICAgICAgIAotICAgIG1f
cmVsWCA9IG1fcmVsWSA9IDA7CiAgICAgaWYgKHJlbmRlcmVyKCktPmlzUmVsUG9zaXRpb25lZCgp
KSB7Ci0gICAgICAgIG1fcmVsWCA9IHJlbmRlcmVyKCktPnJlbGF0aXZlUG9zaXRpb25PZmZzZXRY
KCk7Ci0gICAgICAgIG1fcmVsWSA9IHJlbmRlcmVyKCktPnJlbGF0aXZlUG9zaXRpb25PZmZzZXRZ
KCk7Ci0gICAgICAgIGxvY2FsUG9pbnQubW92ZShtX3JlbFgsIG1fcmVsWSk7CisgICAgICAgIG1f
cmVsYXRpdmVPZmZzZXQgPSByZW5kZXJlcigpLT5yZWxhdGl2ZVBvc2l0aW9uT2Zmc2V0KCk7Cisg
ICAgICAgIGxvY2FsUG9pbnQubW92ZShtX3JlbGF0aXZlT2Zmc2V0KTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBtX3JlbGF0aXZlT2Zmc2V0ID0gSW50U2l6ZSgpOwogICAgIH0KIAogICAgIC8vIEZJ
WE1FOiBXZSdkIHJlYWxseSBsaWtlIHRvIGp1c3QgZ2V0IHJpZCBvZiB0aGUgY29uY2VwdCBvZiBh
IGxheWVyIHJlY3RhbmdsZSBhbmQgcmVseSBvbiB0aGUgcmVuZGVyZXJzLgpAQCAtMTM0NCwxMiAr
MTMzMiwxMCBAQCB2b2lkIFJlbmRlckxheWVyOjpzY3JvbGxUbyhpbnQgeCwgaW50IHkpCiAgICAg
Ly8gY29tcGxpY2F0ZWQgKHNpbmNlIGl0IHdpbGwgaW52b2x2ZSB0ZXN0aW5nIHdoZXRoZXIgb3Vy
IGxheWVyCiAgICAgLy8gaXMgZWl0aGVyIG9jY2x1ZGVkIGJ5IGFub3RoZXIgbGF5ZXIgb3IgY2xp
cHBlZCBieSBhbiBlbmNsb3NpbmcKICAgICAvLyBsYXllciBvciBjb250YWlucyBmaXhlZCBiYWNr
Z3JvdW5kcywgZXRjLikuCi0gICAgaW50IG5ld1Njcm9sbFggPSB4IC0gbV9zY3JvbGxPcmlnaW4u
eCgpOwotICAgIGludCBuZXdTY3JvbGxZID0geSAtIG1fc2Nyb2xsT3JpZ2luLnkoKTsKLSAgICBp
ZiAobV9zY3JvbGxZID09IG5ld1Njcm9sbFkgJiYgbV9zY3JvbGxYID09IG5ld1Njcm9sbFgpCisg
ICAgSW50U2l6ZSBuZXdTY3JvbGxPZmZzZXQgPSBJbnRTaXplKHggLSBtX3Njcm9sbE9yaWdpbi54
KCksIHkgLSBtX3Njcm9sbE9yaWdpbi55KCkpOworICAgIGlmIChtX3Njcm9sbE9mZnNldCA9PSBu
ZXdTY3JvbGxPZmZzZXQpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3Njcm9sbFggPSBuZXdTY3Jv
bGxYOwotICAgIG1fc2Nyb2xsWSA9IG5ld1Njcm9sbFk7CisgICAgbV9zY3JvbGxPZmZzZXQgPSBu
ZXdTY3JvbGxPZmZzZXQ7CiAKICAgICAvLyBVcGRhdGUgdGhlIHBvc2l0aW9ucyBvZiBvdXIgY2hp
bGQgbGF5ZXJzLiBEb24ndCBoYXZlIHVwZGF0ZUxheWVyUG9zaXRpb25zKCkgdXBkYXRlCiAgICAg
Ly8gY29tcG9zaXRpbmcgbGF5ZXJzLCBiZWNhdXNlIHdlIG5lZWQgdG8gZG8gYSBkZWVwIHVwZGF0
ZSBmcm9tIHRoZSBjb21wb3NpdGluZyBhbmNlc3Rvci4KQEAgLTE3OTIsMTIgKzE3NzgsMTIgQEAg
SW50U2l6ZSBSZW5kZXJMYXllcjo6Y29udGVudHNTaXplKCkgY29ucwogCiBpbnQgUmVuZGVyTGF5
ZXI6OnZpc2libGVIZWlnaHQoKSBjb25zdAogewotICAgIHJldHVybiBtX2hlaWdodDsKKyAgICBy
ZXR1cm4gbV9sYXllclNpemUuaGVpZ2h0KCk7CiB9CiAKIGludCBSZW5kZXJMYXllcjo6dmlzaWJs
ZVdpZHRoKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV93aWR0aDsKKyAgICByZXR1cm4gbV9sYXll
clNpemUud2lkdGgoKTsKIH0KIAogYm9vbCBSZW5kZXJMYXllcjo6c2hvdWxkU3VzcGVuZFNjcm9s
bEFuaW1hdGlvbnMoKSBjb25zdApAQCAtMjAzNCwxNCArMjAyMCwxNCBAQCBpbnQgUmVuZGVyTGF5
ZXI6OnNjcm9sbFdpZHRoKCkKIHsKICAgICBpZiAobV9zY3JvbGxEaW1lbnNpb25zRGlydHkpCiAg
ICAgICAgIGNvbXB1dGVTY3JvbGxEaW1lbnNpb25zKCk7Ci0gICAgcmV0dXJuIG1fc2Nyb2xsV2lk
dGg7CisgICAgcmV0dXJuIG1fc2Nyb2xsU2l6ZS53aWR0aCgpOwogfQogCiBpbnQgUmVuZGVyTGF5
ZXI6OnNjcm9sbEhlaWdodCgpCiB7CiAgICAgaWYgKG1fc2Nyb2xsRGltZW5zaW9uc0RpcnR5KQog
ICAgICAgICBjb21wdXRlU2Nyb2xsRGltZW5zaW9ucygpOwotICAgIHJldHVybiBtX3Njcm9sbEhl
aWdodDsKKyAgICByZXR1cm4gbV9zY3JvbGxTaXplLmhlaWdodCgpOwogfQogCiBpbnQgUmVuZGVy
TGF5ZXI6Om92ZXJmbG93VG9wKCkgY29uc3QKQEAgLTIwODMsMTggKzIwNjksMTggQEAgdm9pZCBS
ZW5kZXJMYXllcjo6Y29tcHV0ZVNjcm9sbERpbWVuc2lvbgogICAgIAogICAgIG1fc2Nyb2xsRGlt
ZW5zaW9uc0RpcnR5ID0gZmFsc2U7CiAKLSAgICBtX3Njcm9sbExlZnRPdmVyZmxvdyA9IG92ZXJm
bG93TGVmdCgpIC0gYm94LT5ib3JkZXJMZWZ0KCk7Ci0gICAgbV9zY3JvbGxUb3BPdmVyZmxvdyA9
IG92ZXJmbG93VG9wKCkgLSBib3gtPmJvcmRlclRvcCgpOworICAgIG1fc2Nyb2xsT3ZlcmZsb3cu
c2V0V2lkdGgob3ZlcmZsb3dMZWZ0KCkgLSBib3gtPmJvcmRlckxlZnQoKSk7CisgICAgbV9zY3Jv
bGxPdmVyZmxvdy5zZXRIZWlnaHQob3ZlcmZsb3dUb3AoKSAtIGJveC0+Ym9yZGVyVG9wKCkpOwog
Ci0gICAgbV9zY3JvbGxXaWR0aCA9IG92ZXJmbG93UmlnaHQoKSAtIG92ZXJmbG93TGVmdCgpOwot
ICAgIG1fc2Nyb2xsSGVpZ2h0ID0gb3ZlcmZsb3dCb3R0b20oKSAtIG92ZXJmbG93VG9wKCk7Cisg
ICAgbV9zY3JvbGxTaXplLnNldFdpZHRoKG92ZXJmbG93UmlnaHQoKSAtIG92ZXJmbG93TGVmdCgp
KTsKKyAgICBtX3Njcm9sbFNpemUuc2V0SGVpZ2h0KG92ZXJmbG93Qm90dG9tKCkgLSBvdmVyZmxv
d1RvcCgpKTsKICAgICAKLSAgICBtX3Njcm9sbE9yaWdpbiA9IEludFBvaW50KC1tX3Njcm9sbExl
ZnRPdmVyZmxvdywgLW1fc2Nyb2xsVG9wT3ZlcmZsb3cpOworICAgIG1fc2Nyb2xsT3JpZ2luID0g
SW50UG9pbnQoLW1fc2Nyb2xsT3ZlcmZsb3cud2lkdGgoKSwgLW1fc2Nyb2xsT3ZlcmZsb3cuaGVp
Z2h0KCkpOwogCiAgICAgaWYgKG5lZWRIQmFyKQotICAgICAgICAqbmVlZEhCYXIgPSBtX3Njcm9s
bFdpZHRoID4gYm94LT5jbGllbnRXaWR0aCgpOworICAgICAgICAqbmVlZEhCYXIgPSBtX3Njcm9s
bFNpemUud2lkdGgoKSA+IGJveC0+Y2xpZW50V2lkdGgoKTsKICAgICBpZiAobmVlZFZCYXIpCi0g
ICAgICAgICpuZWVkVkJhciA9IG1fc2Nyb2xsSGVpZ2h0ID4gYm94LT5jbGllbnRIZWlnaHQoKTsK
KyAgICAgICAgKm5lZWRWQmFyID0gbV9zY3JvbGxTaXplLmhlaWdodCgpID4gYm94LT5jbGllbnRI
ZWlnaHQoKTsKIH0KIAogdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlT3ZlcmZsb3dTdGF0dXMoYm9v
bCBob3Jpem9udGFsT3ZlcmZsb3csIGJvb2wgdmVydGljYWxPdmVyZmxvdykKQEAgLTIyMTEsMTMg
KzIxOTcsMTMgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlU2Nyb2xsSW5mb0FmdGVyTAogICAg
ICAgICBpbnQgY2xpZW50V2lkdGggPSBib3gtPmNsaWVudFdpZHRoKCk7CiAgICAgICAgIGludCBw
YWdlU3RlcCA9IG1heChtYXg8aW50PihjbGllbnRXaWR0aCAqIFNjcm9sbGJhcjo6bWluRnJhY3Rp
b25Ub1N0ZXBXaGVuUGFnaW5nKCksIGNsaWVudFdpZHRoIC0gU2Nyb2xsYmFyOjptYXhPdmVybGFw
QmV0d2VlblBhZ2VzKCkpLCAxKTsKICAgICAgICAgbV9oQmFyLT5zZXRTdGVwcyhTY3JvbGxiYXI6
OnBpeGVsc1BlckxpbmVTdGVwKCksIHBhZ2VTdGVwKTsKLSAgICAgICAgbV9oQmFyLT5zZXRQcm9w
b3J0aW9uKGNsaWVudFdpZHRoLCBtX3Njcm9sbFdpZHRoKTsKKyAgICAgICAgbV9oQmFyLT5zZXRQ
cm9wb3J0aW9uKGNsaWVudFdpZHRoLCBtX3Njcm9sbFNpemUud2lkdGgoKSk7CiAgICAgfQogICAg
IGlmIChtX3ZCYXIpIHsKICAgICAgICAgaW50IGNsaWVudEhlaWdodCA9IGJveC0+Y2xpZW50SGVp
Z2h0KCk7CiAgICAgICAgIGludCBwYWdlU3RlcCA9IG1heChtYXg8aW50PihjbGllbnRIZWlnaHQg
KiBTY3JvbGxiYXI6Om1pbkZyYWN0aW9uVG9TdGVwV2hlblBhZ2luZygpLCBjbGllbnRIZWlnaHQg
LSBTY3JvbGxiYXI6Om1heE92ZXJsYXBCZXR3ZWVuUGFnZXMoKSksIDEpOwogICAgICAgICBtX3ZC
YXItPnNldFN0ZXBzKFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSwgcGFnZVN0ZXApOwot
ICAgICAgICBtX3ZCYXItPnNldFByb3BvcnRpb24oY2xpZW50SGVpZ2h0LCBtX3Njcm9sbEhlaWdo
dCk7CisgICAgICAgIG1fdkJhci0+c2V0UHJvcG9ydGlvbihjbGllbnRIZWlnaHQsIG1fc2Nyb2xs
U2l6ZS5oZWlnaHQoKSk7CiAgICAgfQogIAogICAgIFJlbmRlclZpZXcqIHZpZXcgPSByZW5kZXJl
cigpLT52aWV3KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAko
cmV2aXNpb24gODU4NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMjExLDIwICsyMTEsMTkgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gY3VycjsKICAgICB9CiAgICAgCi0gICAgaW50IHgoKSBjb25zdCB7IHJldHVybiBtX3g7
IH0KLSAgICBpbnQgeSgpIGNvbnN0IHsgcmV0dXJuIG1feTsgfQorICAgIGludCB4KCkgY29uc3Qg
eyByZXR1cm4gbV90b3BMZWZ0LngoKTsgfQorICAgIGludCB5KCkgY29uc3QgeyByZXR1cm4gbV90
b3BMZWZ0LnkoKTsgfQogICAgIHZvaWQgc2V0TG9jYXRpb24oaW50IHgsIGludCB5KQogICAgIHsK
LSAgICAgICAgbV94ID0geDsKLSAgICAgICAgbV95ID0geTsKKyAgICAgICAgbV90b3BMZWZ0ID0g
SW50UG9pbnQoeCwgeSk7CiAgICAgfQogCi0gICAgaW50IHdpZHRoKCkgY29uc3QgeyByZXR1cm4g
bV93aWR0aDsgfQotICAgIGludCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2hlaWdodDsgfQot
ICAgIEludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIEludFNpemUobV93aWR0aCwgbV9oZWln
aHQpOyB9CisgICAgaW50IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9sYXllclNpemUud2lkdGgo
KTsgfQorICAgIGludCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2xheWVyU2l6ZS5oZWlnaHQo
KTsgfQorICAgIGNvbnN0IEludFNpemUmIHNpemUoKSBjb25zdCB7IHJldHVybiBtX2xheWVyU2l6
ZTsgfQogICAgIAotICAgIHZvaWQgc2V0V2lkdGgoaW50IHcpIHsgbV93aWR0aCA9IHc7IH0KLSAg
ICB2b2lkIHNldEhlaWdodChpbnQgaCkgeyBtX2hlaWdodCA9IGg7IH0KKyAgICB2b2lkIHNldFdp
ZHRoKGludCB3KSB7IG1fbGF5ZXJTaXplLnNldFdpZHRoKHcpOyB9CisgICAgdm9pZCBzZXRIZWln
aHQoaW50IGgpIHsgbV9sYXllclNpemUuc2V0SGVpZ2h0KGgpOyB9CiAKICAgICBpbnQgc2Nyb2xs
V2lkdGgoKTsKICAgICBpbnQgc2Nyb2xsSGVpZ2h0KCk7CkBAIC0yMzQsMTQgKzIzMywxNSBAQCBw
dWJsaWM6CiAgICAgLy8gU2Nyb2xsaW5nIG1ldGhvZHMgZm9yIGxheWVycyB0aGF0IGNhbiBzY3Jv
bGwgdGhlaXIgb3ZlcmZsb3cuCiAgICAgdm9pZCBzY3JvbGxCeVJlY3Vyc2l2ZWx5KGludCB4RGVs
dGEsIGludCB5RGVsdGEpOwogCi0gICAgSW50U2l6ZSBzY3JvbGxlZENvbnRlbnRPZmZzZXQoKSBj
b25zdCB7IHJldHVybiBJbnRTaXplKHNjcm9sbFhPZmZzZXQoKSArIG1fc2Nyb2xsTGVmdE92ZXJm
bG93LCBzY3JvbGxZT2Zmc2V0KCkgKyBtX3Njcm9sbFRvcE92ZXJmbG93KTsgfQorICAgIEludFNp
emUgc2Nyb2xsZWRDb250ZW50T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gc2Nyb2xsT2Zmc2V0KCkg
KyBtX3Njcm9sbE92ZXJmbG93OyB9CiAKLSAgICBpbnQgc2Nyb2xsWE9mZnNldCgpIGNvbnN0IHsg
cmV0dXJuIG1fc2Nyb2xsWCArIG1fc2Nyb2xsT3JpZ2luLngoKTsgfQotICAgIGludCBzY3JvbGxZ
T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxZICsgbV9zY3JvbGxPcmlnaW4ueSgpOyB9
CisgICAgaW50IHNjcm9sbFhPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbE9mZnNldC53
aWR0aCgpICsgbV9zY3JvbGxPcmlnaW4ueCgpOyB9CisgICAgaW50IHNjcm9sbFlPZmZzZXQoKSBj
b25zdCB7IHJldHVybiBtX3Njcm9sbE9mZnNldC5oZWlnaHQoKSArIG1fc2Nyb2xsT3JpZ2luLnko
KTsgfQorICAgIEludFNpemUgc2Nyb2xsT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gSW50U2l6ZShz
Y3JvbGxYT2Zmc2V0KCksIHNjcm9sbFlPZmZzZXQoKSk7IH0KIAogICAgIHZvaWQgc2Nyb2xsVG9P
ZmZzZXQoaW50IHgsIGludCB5KTsKLSAgICB2b2lkIHNjcm9sbFRvWE9mZnNldChpbnQgeCkgeyBz
Y3JvbGxUb09mZnNldCh4LCBtX3Njcm9sbFkgKyBtX3Njcm9sbE9yaWdpbi55KCkpOyB9Ci0gICAg
dm9pZCBzY3JvbGxUb1lPZmZzZXQoaW50IHkpIHsgc2Nyb2xsVG9PZmZzZXQobV9zY3JvbGxYICsg
bV9zY3JvbGxPcmlnaW4ueCgpLCB5KTsgfQorICAgIHZvaWQgc2Nyb2xsVG9YT2Zmc2V0KGludCB4
KSB7IHNjcm9sbFRvT2Zmc2V0KHgsIHNjcm9sbFlPZmZzZXQoKSk7IH0KKyAgICB2b2lkIHNjcm9s
bFRvWU9mZnNldChpbnQgeSkgeyBzY3JvbGxUb09mZnNldChzY3JvbGxYT2Zmc2V0KCksIHkpOyB9
CiAgICAgdm9pZCBzY3JvbGxSZWN0VG9WaXNpYmxlKGNvbnN0IEludFJlY3QmLCBib29sIHNjcm9s
bFRvQW5jaG9yID0gZmFsc2UsIGNvbnN0IFNjcm9sbEFsaWdubWVudCYgYWxpZ25YID0gU2Nyb2xs
QWxpZ25tZW50OjphbGlnbkNlbnRlcklmTmVlZGVkLCBjb25zdCBTY3JvbGxBbGlnbm1lbnQmIGFs
aWduWSA9IFNjcm9sbEFsaWdubWVudDo6YWxpZ25DZW50ZXJJZk5lZWRlZCk7CiAKICAgICBJbnRS
ZWN0IGdldFJlY3RUb0V4cG9zZShjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCwgY29uc3QgSW50
UmVjdCYgZXhwb3NlUmVjdCwgY29uc3QgU2Nyb2xsQWxpZ25tZW50JiBhbGlnblgsIGNvbnN0IFNj
cm9sbEFsaWdubWVudCYgYWxpZ25ZKTsKQEAgLTMwNiw4ICszMDYsOCBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIHVwZGF0ZVRyYW5zZm9ybSgpOwogCi0gICAgdm9pZCByZWxhdGl2ZVBvc2l0aW9uT2Zm
c2V0KGludCYgcmVsWCwgaW50JiByZWxZKSBjb25zdCB7IHJlbFggKz0gbV9yZWxYOyByZWxZICs9
IG1fcmVsWTsgfQotICAgIEludFNpemUgcmVsYXRpdmVQb3NpdGlvbk9mZnNldCgpIGNvbnN0IHsg
cmV0dXJuIEludFNpemUobV9yZWxYLCBtX3JlbFkpOyB9CisgICAgdm9pZCByZWxhdGl2ZVBvc2l0
aW9uT2Zmc2V0KGludCYgcmVsWCwgaW50JiByZWxZKSBjb25zdCB7IHJlbFggKz0gbV9yZWxhdGl2
ZU9mZnNldC53aWR0aCgpOyByZWxZICs9IG1fcmVsYXRpdmVPZmZzZXQuaGVpZ2h0KCk7IH0KKyAg
ICBjb25zdCBJbnRTaXplJiByZWxhdGl2ZVBvc2l0aW9uT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4g
bV9yZWxhdGl2ZU9mZnNldDsgfQogCiAgICAgdm9pZCBjbGVhckNsaXBSZWN0c0luY2x1ZGluZ0Rl
c2NlbmRhbnRzKCk7CiAgICAgdm9pZCBjbGVhckNsaXBSZWN0cygpOwpAQCAtNjIyLDI3ICs2MjIs
MjEgQEAgcHJvdGVjdGVkOgogICAgIEludFJlY3QgbV9vdXRsaW5lQm94OwogCiAgICAgLy8gT3Vy
IGN1cnJlbnQgcmVsYXRpdmUgcG9zaXRpb24gb2Zmc2V0LgotICAgIGludCBtX3JlbFg7Ci0gICAg
aW50IG1fcmVsWTsKKyAgICBJbnRTaXplIG1fcmVsYXRpdmVPZmZzZXQ7CiAKICAgICAvLyBPdXIg
KHgseSkgY29vcmRpbmF0ZXMgYXJlIGluIG91ciBwYXJlbnQgbGF5ZXIncyBjb29yZGluYXRlIHNw
YWNlLgotICAgIGludCBtX3g7Ci0gICAgaW50IG1feTsKKyAgICBJbnRQb2ludCBtX3RvcExlZnQ7
CiAKICAgICAvLyBUaGUgbGF5ZXIncyB3aWR0aC9oZWlnaHQKLSAgICBpbnQgbV93aWR0aDsKLSAg
ICBpbnQgbV9oZWlnaHQ7CisgICAgSW50U2l6ZSBtX2xheWVyU2l6ZTsKIAogICAgIC8vIE91ciBz
Y3JvbGwgb2Zmc2V0cyBpZiB0aGUgdmlldyBpcyBzY3JvbGxlZC4KLSAgICBpbnQgbV9zY3JvbGxY
OwotICAgIGludCBtX3Njcm9sbFk7Ci0gICAgCi0gICAgaW50IG1fc2Nyb2xsTGVmdE92ZXJmbG93
OwotICAgIGludCBtX3Njcm9sbFRvcE92ZXJmbG93OworICAgIEludFNpemUgbV9zY3JvbGxPZmZz
ZXQ7CisKKyAgICBJbnRTaXplIG1fc2Nyb2xsT3ZlcmZsb3c7CiAgICAgCiAgICAgLy8gVGhlIHdp
ZHRoL2hlaWdodCBvZiBvdXIgc2Nyb2xsZWQgYXJlYS4KLSAgICBpbnQgbV9zY3JvbGxXaWR0aDsK
LSAgICBpbnQgbV9zY3JvbGxIZWlnaHQ7CisgICAgSW50U2l6ZSBtX3Njcm9sbFNpemU7CiAKICAg
ICAvLyBGb3IgbGF5ZXJzIHdpdGggb3ZlcmZsb3csIHdlIGhhdmUgYSBwYWlyIG9mIHNjcm9sbGJh
cnMuCiAgICAgUmVmUHRyPFNjcm9sbGJhcj4gbV9oQmFyOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93016</attachid>
            <date>2011-05-10 15:00:47 -0700</date>
            <delta_ts>2011-05-10 17:06:52 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-60409-20110510150046.patch</filename>
            <type>text/plain</type>
            <size>11828</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg2MTgwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTEtMDUtMTAgIEVtaWwgQSBF
a2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2Vp
ZGVsLgorCisgICAgICAgIENvbnZlcnQgeCx5IGFuZCB3aWR0aCxoZWlnaHQgcGFpcnMgdG8gSW50
UG9pbnQgYW5kIEludFNpemUgZm9yIFJlbmRlckxheWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDQwOQorCisgICAgICAgIENvbnZlcnQgUmVuZGVy
TGF5ZXIgdG8gdXNlIEludFBvaW50IGZvciB4LHkgcGFpcnMgYW5kIEludFNpemUgZm9yIG9mZnNl
dHMgYW5kIHNpemVzLgorCisgICAgICAgIFJlZmFjdG9yaW5nLCBjb3ZlcmVkIGJ5IGV4aXN0aW5n
IHRlc3RzLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyOjpSZW5kZXJMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllcjo6dXBkYXRlTGF5ZXJQb3NpdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXI6OnNjcm9sbFRvKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp2aXNpYmxl
SGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp2aXNpYmxlV2lkdGgpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNjcm9sbFdpZHRoKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyOjpzY3JvbGxIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXI6OmNvbXB1dGVTY3JvbGxEaW1lbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyOjp1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXQpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OngpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnkpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXI6OnNldExvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp3
aWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aGVpZ2h0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyOjpzaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyOjpzZXRXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2V0SGVpZ2h0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzY3JvbGxlZENvbnRlbnRPZmZzZXQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNjcm9sbFhPZmZzZXQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNjcm9sbFlPZmZzZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OnNjcm9sbE9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6c2Nyb2xsVG9YT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpz
Y3JvbGxUb1lPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnJlbGF0aXZl
UG9zaXRpb25PZmZzZXQpOgorCiAyMDExLTA1LTEwICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbGljZSBMaXUuCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJKHJldmlzaW9uIDg2MTgwKQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTM1LDE4ICsxMzUsNiBAQCBSZW5kZXJMYXllcjo6UmVuZGVyTGF5ZXIoUmVuZGVyQm94TW9kZWxP
CiAgICAgLCBtX25leHQoMCkKICAgICAsIG1fZmlyc3QoMCkKICAgICAsIG1fbGFzdCgwKQotICAg
ICwgbV9yZWxYKDApCi0gICAgLCBtX3JlbFkoMCkKLSAgICAsIG1feCgwKQotICAgICwgbV95KDAp
Ci0gICAgLCBtX3dpZHRoKDApCi0gICAgLCBtX2hlaWdodCgwKQotICAgICwgbV9zY3JvbGxYKDAp
Ci0gICAgLCBtX3Njcm9sbFkoMCkKLSAgICAsIG1fc2Nyb2xsTGVmdE92ZXJmbG93KDApCi0gICAg
LCBtX3Njcm9sbFRvcE92ZXJmbG93KDApCi0gICAgLCBtX3Njcm9sbFdpZHRoKDApCi0gICAgLCBt
X3Njcm9sbEhlaWdodCgwKQogICAgICwgbV9pblJlc2l6ZU1vZGUoZmFsc2UpCiAgICAgLCBtX3Bv
c1pPcmRlckxpc3QoMCkKICAgICAsIG1fbmVnWk9yZGVyTGlzdCgwKQpAQCAtMjgyLDEwICsyNzAs
MTAgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlTGF5ZXJQb3NpdGlvbnMoVQogICAgICAgICBl
bHNlIHsKICAgICAgICAgICAgIG9sZENhY2hlZE9mZnNldCA9ICpjYWNoZWRPZmZzZXQ7CiAgICAg
ICAgICAgICAvLyBGcmVxdWVudGx5IG91ciBwYXJlbnQgbGF5ZXIncyByZW5kZXJlciB3aWxsIGJl
IHRoZSBzYW1lIGFzIG91ciByZW5kZXJlcidzIGNvbnRhaW5pbmcgYmxvY2suICBJbiB0aGF0IGNh
c2UsCi0gICAgICAgICAgICAvLyB3ZSBqdXN0IHVwZGF0ZSB0aGUgY2FjaGUgdXNpbmcgb3VyIG9m
ZnNldCB0byBvdXIgcGFyZW50ICh3aGljaCBpcyBtX3ggLyBtX3kpLiAgT3RoZXJ3aXNlLCByZWdl
bmVyYXRlZCBjYWNoZWQKKyAgICAgICAgICAgIC8vIHdlIGp1c3QgdXBkYXRlIHRoZSBjYWNoZSB1
c2luZyBvdXIgb2Zmc2V0IHRvIG91ciBwYXJlbnQgKHdoaWNoIGlzIG1fdG9wTGVmdCkuIE90aGVy
d2lzZSwgcmVnZW5lcmF0ZWQgY2FjaGVkCiAgICAgICAgICAgICAvLyBvZmZzZXRzIHRvIHRoZSBy
b290IGZyb20gdGhlIHJlbmRlciB0cmVlLgogICAgICAgICAgICAgaWYgKCFtX3BhcmVudCB8fCBt
X3BhcmVudC0+cmVuZGVyZXIoKSA9PSByZW5kZXJlcigpLT5jb250YWluaW5nQmxvY2soKSkKLSAg
ICAgICAgICAgICAgICBjYWNoZWRPZmZzZXQtPm1vdmUobV94LCBtX3kpOyAvLyBGYXN0IGNhc2UK
KyAgICAgICAgICAgICAgICBjYWNoZWRPZmZzZXQtPm1vdmUobV90b3BMZWZ0LngoKSwgbV90b3BM
ZWZ0LnkoKSk7IC8vIEZhc3QgY2FzZQogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAg
ICAgaW50IHggPSAwOwogICAgICAgICAgICAgICAgIGludCB5ID0gMDsKQEAgLTcxOSwxMSArNzA3
LDExIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb24oKQogICAgICAgICBs
b2NhbFBvaW50IC09IHNjcm9sbE9mZnNldDsKICAgICB9CiAgICAgICAgIAotICAgIG1fcmVsWCA9
IG1fcmVsWSA9IDA7CiAgICAgaWYgKHJlbmRlcmVyKCktPmlzUmVsUG9zaXRpb25lZCgpKSB7Ci0g
ICAgICAgIG1fcmVsWCA9IHJlbmRlcmVyKCktPnJlbGF0aXZlUG9zaXRpb25PZmZzZXRYKCk7Ci0g
ICAgICAgIG1fcmVsWSA9IHJlbmRlcmVyKCktPnJlbGF0aXZlUG9zaXRpb25PZmZzZXRZKCk7Ci0g
ICAgICAgIGxvY2FsUG9pbnQubW92ZShtX3JlbFgsIG1fcmVsWSk7CisgICAgICAgIG1fcmVsYXRp
dmVPZmZzZXQgPSByZW5kZXJlcigpLT5yZWxhdGl2ZVBvc2l0aW9uT2Zmc2V0KCk7CisgICAgICAg
IGxvY2FsUG9pbnQubW92ZShtX3JlbGF0aXZlT2Zmc2V0KTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBtX3JlbGF0aXZlT2Zmc2V0ID0gSW50U2l6ZSgpOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBX
ZSdkIHJlYWxseSBsaWtlIHRvIGp1c3QgZ2V0IHJpZCBvZiB0aGUgY29uY2VwdCBvZiBhIGxheWVy
IHJlY3RhbmdsZSBhbmQgcmVseSBvbiB0aGUgcmVuZGVyZXJzLgpAQCAtMTMzOCwxMiArMTMyNiwx
MCBAQCB2b2lkIFJlbmRlckxheWVyOjpzY3JvbGxUbyhpbnQgeCwgaW50IHkpCiAgICAgLy8gY29t
cGxpY2F0ZWQgKHNpbmNlIGl0IHdpbGwgaW52b2x2ZSB0ZXN0aW5nIHdoZXRoZXIgb3VyIGxheWVy
CiAgICAgLy8gaXMgZWl0aGVyIG9jY2x1ZGVkIGJ5IGFub3RoZXIgbGF5ZXIgb3IgY2xpcHBlZCBi
eSBhbiBlbmNsb3NpbmcKICAgICAvLyBsYXllciBvciBjb250YWlucyBmaXhlZCBiYWNrZ3JvdW5k
cywgZXRjLikuCi0gICAgaW50IG5ld1Njcm9sbFggPSB4IC0gbV9zY3JvbGxPcmlnaW4ueCgpOwot
ICAgIGludCBuZXdTY3JvbGxZID0geSAtIG1fc2Nyb2xsT3JpZ2luLnkoKTsKLSAgICBpZiAobV9z
Y3JvbGxZID09IG5ld1Njcm9sbFkgJiYgbV9zY3JvbGxYID09IG5ld1Njcm9sbFgpCisgICAgSW50
U2l6ZSBuZXdTY3JvbGxPZmZzZXQgPSBJbnRTaXplKHggLSBtX3Njcm9sbE9yaWdpbi54KCksIHkg
LSBtX3Njcm9sbE9yaWdpbi55KCkpOworICAgIGlmIChtX3Njcm9sbE9mZnNldCA9PSBuZXdTY3Jv
bGxPZmZzZXQpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3Njcm9sbFggPSBuZXdTY3JvbGxYOwot
ICAgIG1fc2Nyb2xsWSA9IG5ld1Njcm9sbFk7CisgICAgbV9zY3JvbGxPZmZzZXQgPSBuZXdTY3Jv
bGxPZmZzZXQ7CiAKICAgICAvLyBVcGRhdGUgdGhlIHBvc2l0aW9ucyBvZiBvdXIgY2hpbGQgbGF5
ZXJzLiBEb24ndCBoYXZlIHVwZGF0ZUxheWVyUG9zaXRpb25zKCkgdXBkYXRlCiAgICAgLy8gY29t
cG9zaXRpbmcgbGF5ZXJzLCBiZWNhdXNlIHdlIG5lZWQgdG8gZG8gYSBkZWVwIHVwZGF0ZSBmcm9t
IHRoZSBjb21wb3NpdGluZyBhbmNlc3Rvci4KQEAgLTE3ODYsMTIgKzE3NzIsMTIgQEAgSW50U2l6
ZSBSZW5kZXJMYXllcjo6Y29udGVudHNTaXplKCkgY29ucwogCiBpbnQgUmVuZGVyTGF5ZXI6OnZp
c2libGVIZWlnaHQoKSBjb25zdAogewotICAgIHJldHVybiBtX2hlaWdodDsKKyAgICByZXR1cm4g
bV9sYXllclNpemUuaGVpZ2h0KCk7CiB9CiAKIGludCBSZW5kZXJMYXllcjo6dmlzaWJsZVdpZHRo
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV93aWR0aDsKKyAgICByZXR1cm4gbV9sYXllclNpemUu
d2lkdGgoKTsKIH0KIAogYm9vbCBSZW5kZXJMYXllcjo6c2hvdWxkU3VzcGVuZFNjcm9sbEFuaW1h
dGlvbnMoKSBjb25zdApAQCAtMjAzNiwxNCArMjAyMiwxNCBAQCBpbnQgUmVuZGVyTGF5ZXI6OnNj
cm9sbFdpZHRoKCkKIHsKICAgICBpZiAobV9zY3JvbGxEaW1lbnNpb25zRGlydHkpCiAgICAgICAg
IGNvbXB1dGVTY3JvbGxEaW1lbnNpb25zKCk7Ci0gICAgcmV0dXJuIG1fc2Nyb2xsV2lkdGg7Cisg
ICAgcmV0dXJuIG1fc2Nyb2xsU2l6ZS53aWR0aCgpOwogfQogCiBpbnQgUmVuZGVyTGF5ZXI6OnNj
cm9sbEhlaWdodCgpCiB7CiAgICAgaWYgKG1fc2Nyb2xsRGltZW5zaW9uc0RpcnR5KQogICAgICAg
ICBjb21wdXRlU2Nyb2xsRGltZW5zaW9ucygpOwotICAgIHJldHVybiBtX3Njcm9sbEhlaWdodDsK
KyAgICByZXR1cm4gbV9zY3JvbGxTaXplLmhlaWdodCgpOwogfQogCiBpbnQgUmVuZGVyTGF5ZXI6
Om92ZXJmbG93VG9wKCkgY29uc3QKQEAgLTIwODUsMTggKzIwNzEsMTggQEAgdm9pZCBSZW5kZXJM
YXllcjo6Y29tcHV0ZVNjcm9sbERpbWVuc2lvbgogICAgIAogICAgIG1fc2Nyb2xsRGltZW5zaW9u
c0RpcnR5ID0gZmFsc2U7CiAKLSAgICBtX3Njcm9sbExlZnRPdmVyZmxvdyA9IG92ZXJmbG93TGVm
dCgpIC0gYm94LT5ib3JkZXJMZWZ0KCk7Ci0gICAgbV9zY3JvbGxUb3BPdmVyZmxvdyA9IG92ZXJm
bG93VG9wKCkgLSBib3gtPmJvcmRlclRvcCgpOworICAgIG1fc2Nyb2xsT3ZlcmZsb3cuc2V0V2lk
dGgob3ZlcmZsb3dMZWZ0KCkgLSBib3gtPmJvcmRlckxlZnQoKSk7CisgICAgbV9zY3JvbGxPdmVy
Zmxvdy5zZXRIZWlnaHQob3ZlcmZsb3dUb3AoKSAtIGJveC0+Ym9yZGVyVG9wKCkpOwogCi0gICAg
bV9zY3JvbGxXaWR0aCA9IG92ZXJmbG93UmlnaHQoKSAtIG92ZXJmbG93TGVmdCgpOwotICAgIG1f
c2Nyb2xsSGVpZ2h0ID0gb3ZlcmZsb3dCb3R0b20oKSAtIG92ZXJmbG93VG9wKCk7CisgICAgbV9z
Y3JvbGxTaXplLnNldFdpZHRoKG92ZXJmbG93UmlnaHQoKSAtIG92ZXJmbG93TGVmdCgpKTsKKyAg
ICBtX3Njcm9sbFNpemUuc2V0SGVpZ2h0KG92ZXJmbG93Qm90dG9tKCkgLSBvdmVyZmxvd1RvcCgp
KTsKICAgICAKLSAgICBtX3Njcm9sbE9yaWdpbiA9IEludFBvaW50KC1tX3Njcm9sbExlZnRPdmVy
ZmxvdywgLW1fc2Nyb2xsVG9wT3ZlcmZsb3cpOworICAgIG1fc2Nyb2xsT3JpZ2luID0gSW50UG9p
bnQoLW1fc2Nyb2xsT3ZlcmZsb3cud2lkdGgoKSwgLW1fc2Nyb2xsT3ZlcmZsb3cuaGVpZ2h0KCkp
OwogCiAgICAgaWYgKG5lZWRIQmFyKQotICAgICAgICAqbmVlZEhCYXIgPSBtX3Njcm9sbFdpZHRo
ID4gYm94LT5jbGllbnRXaWR0aCgpOworICAgICAgICAqbmVlZEhCYXIgPSBtX3Njcm9sbFNpemUu
d2lkdGgoKSA+IGJveC0+Y2xpZW50V2lkdGgoKTsKICAgICBpZiAobmVlZFZCYXIpCi0gICAgICAg
ICpuZWVkVkJhciA9IG1fc2Nyb2xsSGVpZ2h0ID4gYm94LT5jbGllbnRIZWlnaHQoKTsKKyAgICAg
ICAgKm5lZWRWQmFyID0gbV9zY3JvbGxTaXplLmhlaWdodCgpID4gYm94LT5jbGllbnRIZWlnaHQo
KTsKIH0KIAogdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlT3ZlcmZsb3dTdGF0dXMoYm9vbCBob3Jp
em9udGFsT3ZlcmZsb3csIGJvb2wgdmVydGljYWxPdmVyZmxvdykKQEAgLTIyMTMsMTMgKzIxOTks
MTMgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlU2Nyb2xsSW5mb0FmdGVyTAogICAgICAgICBp
bnQgY2xpZW50V2lkdGggPSBib3gtPmNsaWVudFdpZHRoKCk7CiAgICAgICAgIGludCBwYWdlU3Rl
cCA9IG1heChtYXg8aW50PihjbGllbnRXaWR0aCAqIFNjcm9sbGJhcjo6bWluRnJhY3Rpb25Ub1N0
ZXBXaGVuUGFnaW5nKCksIGNsaWVudFdpZHRoIC0gU2Nyb2xsYmFyOjptYXhPdmVybGFwQmV0d2Vl
blBhZ2VzKCkpLCAxKTsKICAgICAgICAgbV9oQmFyLT5zZXRTdGVwcyhTY3JvbGxiYXI6OnBpeGVs
c1BlckxpbmVTdGVwKCksIHBhZ2VTdGVwKTsKLSAgICAgICAgbV9oQmFyLT5zZXRQcm9wb3J0aW9u
KGNsaWVudFdpZHRoLCBtX3Njcm9sbFdpZHRoKTsKKyAgICAgICAgbV9oQmFyLT5zZXRQcm9wb3J0
aW9uKGNsaWVudFdpZHRoLCBtX3Njcm9sbFNpemUud2lkdGgoKSk7CiAgICAgfQogICAgIGlmICht
X3ZCYXIpIHsKICAgICAgICAgaW50IGNsaWVudEhlaWdodCA9IGJveC0+Y2xpZW50SGVpZ2h0KCk7
CiAgICAgICAgIGludCBwYWdlU3RlcCA9IG1heChtYXg8aW50PihjbGllbnRIZWlnaHQgKiBTY3Jv
bGxiYXI6Om1pbkZyYWN0aW9uVG9TdGVwV2hlblBhZ2luZygpLCBjbGllbnRIZWlnaHQgLSBTY3Jv
bGxiYXI6Om1heE92ZXJsYXBCZXR3ZWVuUGFnZXMoKSksIDEpOwogICAgICAgICBtX3ZCYXItPnNl
dFN0ZXBzKFNjcm9sbGJhcjo6cGl4ZWxzUGVyTGluZVN0ZXAoKSwgcGFnZVN0ZXApOwotICAgICAg
ICBtX3ZCYXItPnNldFByb3BvcnRpb24oY2xpZW50SGVpZ2h0LCBtX3Njcm9sbEhlaWdodCk7Cisg
ICAgICAgIG1fdkJhci0+c2V0UHJvcG9ydGlvbihjbGllbnRIZWlnaHQsIG1fc2Nyb2xsU2l6ZS5o
ZWlnaHQoKSk7CiAgICAgfQogIAogICAgIFJlbmRlclZpZXcqIHZpZXcgPSByZW5kZXJlcigpLT52
aWV3KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAkocmV2aXNp
b24gODYxODApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMjExLDIwICsyMTEsMTkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
Y3VycjsKICAgICB9CiAgICAgCi0gICAgaW50IHgoKSBjb25zdCB7IHJldHVybiBtX3g7IH0KLSAg
ICBpbnQgeSgpIGNvbnN0IHsgcmV0dXJuIG1feTsgfQorICAgIGludCB4KCkgY29uc3QgeyByZXR1
cm4gbV90b3BMZWZ0LngoKTsgfQorICAgIGludCB5KCkgY29uc3QgeyByZXR1cm4gbV90b3BMZWZ0
LnkoKTsgfQogICAgIHZvaWQgc2V0TG9jYXRpb24oaW50IHgsIGludCB5KQogICAgIHsKLSAgICAg
ICAgbV94ID0geDsKLSAgICAgICAgbV95ID0geTsKKyAgICAgICAgbV90b3BMZWZ0ID0gSW50UG9p
bnQoeCwgeSk7CiAgICAgfQogCi0gICAgaW50IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV93aWR0
aDsgfQotICAgIGludCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2hlaWdodDsgfQotICAgIElu
dFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIEludFNpemUobV93aWR0aCwgbV9oZWlnaHQpOyB9
CisgICAgaW50IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9sYXllclNpemUud2lkdGgoKTsgfQor
ICAgIGludCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2xheWVyU2l6ZS5oZWlnaHQoKTsgfQor
ICAgIGNvbnN0IEludFNpemUmIHNpemUoKSBjb25zdCB7IHJldHVybiBtX2xheWVyU2l6ZTsgfQog
ICAgIAotICAgIHZvaWQgc2V0V2lkdGgoaW50IHcpIHsgbV93aWR0aCA9IHc7IH0KLSAgICB2b2lk
IHNldEhlaWdodChpbnQgaCkgeyBtX2hlaWdodCA9IGg7IH0KKyAgICB2b2lkIHNldFdpZHRoKGlu
dCB3KSB7IG1fbGF5ZXJTaXplLnNldFdpZHRoKHcpOyB9CisgICAgdm9pZCBzZXRIZWlnaHQoaW50
IGgpIHsgbV9sYXllclNpemUuc2V0SGVpZ2h0KGgpOyB9CiAKICAgICBpbnQgc2Nyb2xsV2lkdGgo
KTsKICAgICBpbnQgc2Nyb2xsSGVpZ2h0KCk7CkBAIC0yMzQsMTQgKzIzMywxNSBAQCBwdWJsaWM6
CiAgICAgLy8gU2Nyb2xsaW5nIG1ldGhvZHMgZm9yIGxheWVycyB0aGF0IGNhbiBzY3JvbGwgdGhl
aXIgb3ZlcmZsb3cuCiAgICAgdm9pZCBzY3JvbGxCeVJlY3Vyc2l2ZWx5KGludCB4RGVsdGEsIGlu
dCB5RGVsdGEpOwogCi0gICAgSW50U2l6ZSBzY3JvbGxlZENvbnRlbnRPZmZzZXQoKSBjb25zdCB7
IHJldHVybiBJbnRTaXplKHNjcm9sbFhPZmZzZXQoKSArIG1fc2Nyb2xsTGVmdE92ZXJmbG93LCBz
Y3JvbGxZT2Zmc2V0KCkgKyBtX3Njcm9sbFRvcE92ZXJmbG93KTsgfQorICAgIEludFNpemUgc2Ny
b2xsZWRDb250ZW50T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gc2Nyb2xsT2Zmc2V0KCkgKyBtX3Nj
cm9sbE92ZXJmbG93OyB9CiAKLSAgICBpbnQgc2Nyb2xsWE9mZnNldCgpIGNvbnN0IHsgcmV0dXJu
IG1fc2Nyb2xsWCArIG1fc2Nyb2xsT3JpZ2luLngoKTsgfQotICAgIGludCBzY3JvbGxZT2Zmc2V0
KCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxZICsgbV9zY3JvbGxPcmlnaW4ueSgpOyB9CisgICAg
aW50IHNjcm9sbFhPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbE9mZnNldC53aWR0aCgp
ICsgbV9zY3JvbGxPcmlnaW4ueCgpOyB9CisgICAgaW50IHNjcm9sbFlPZmZzZXQoKSBjb25zdCB7
IHJldHVybiBtX3Njcm9sbE9mZnNldC5oZWlnaHQoKSArIG1fc2Nyb2xsT3JpZ2luLnkoKTsgfQor
ICAgIEludFNpemUgc2Nyb2xsT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gSW50U2l6ZShzY3JvbGxY
T2Zmc2V0KCksIHNjcm9sbFlPZmZzZXQoKSk7IH0KIAogICAgIHZvaWQgc2Nyb2xsVG9PZmZzZXQo
aW50IHgsIGludCB5KTsKLSAgICB2b2lkIHNjcm9sbFRvWE9mZnNldChpbnQgeCkgeyBzY3JvbGxU
b09mZnNldCh4LCBtX3Njcm9sbFkgKyBtX3Njcm9sbE9yaWdpbi55KCkpOyB9Ci0gICAgdm9pZCBz
Y3JvbGxUb1lPZmZzZXQoaW50IHkpIHsgc2Nyb2xsVG9PZmZzZXQobV9zY3JvbGxYICsgbV9zY3Jv
bGxPcmlnaW4ueCgpLCB5KTsgfQorICAgIHZvaWQgc2Nyb2xsVG9YT2Zmc2V0KGludCB4KSB7IHNj
cm9sbFRvT2Zmc2V0KHgsIHNjcm9sbFlPZmZzZXQoKSk7IH0KKyAgICB2b2lkIHNjcm9sbFRvWU9m
ZnNldChpbnQgeSkgeyBzY3JvbGxUb09mZnNldChzY3JvbGxYT2Zmc2V0KCksIHkpOyB9CiAgICAg
dm9pZCBzY3JvbGxSZWN0VG9WaXNpYmxlKGNvbnN0IEludFJlY3QmLCBib29sIHNjcm9sbFRvQW5j
aG9yID0gZmFsc2UsIGNvbnN0IFNjcm9sbEFsaWdubWVudCYgYWxpZ25YID0gU2Nyb2xsQWxpZ25t
ZW50OjphbGlnbkNlbnRlcklmTmVlZGVkLCBjb25zdCBTY3JvbGxBbGlnbm1lbnQmIGFsaWduWSA9
IFNjcm9sbEFsaWdubWVudDo6YWxpZ25DZW50ZXJJZk5lZWRlZCk7CiAKICAgICBJbnRSZWN0IGdl
dFJlY3RUb0V4cG9zZShjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCwgY29uc3QgSW50UmVjdCYg
ZXhwb3NlUmVjdCwgY29uc3QgU2Nyb2xsQWxpZ25tZW50JiBhbGlnblgsIGNvbnN0IFNjcm9sbEFs
aWdubWVudCYgYWxpZ25ZKTsKQEAgLTMwNyw4ICszMDcsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IHVwZGF0ZVRyYW5zZm9ybSgpOwogCi0gICAgdm9pZCByZWxhdGl2ZVBvc2l0aW9uT2Zmc2V0KGlu
dCYgcmVsWCwgaW50JiByZWxZKSBjb25zdCB7IHJlbFggKz0gbV9yZWxYOyByZWxZICs9IG1fcmVs
WTsgfQotICAgIEludFNpemUgcmVsYXRpdmVQb3NpdGlvbk9mZnNldCgpIGNvbnN0IHsgcmV0dXJu
IEludFNpemUobV9yZWxYLCBtX3JlbFkpOyB9CisgICAgdm9pZCByZWxhdGl2ZVBvc2l0aW9uT2Zm
c2V0KGludCYgcmVsWCwgaW50JiByZWxZKSBjb25zdCB7IHJlbFggKz0gbV9yZWxhdGl2ZU9mZnNl
dC53aWR0aCgpOyByZWxZICs9IG1fcmVsYXRpdmVPZmZzZXQuaGVpZ2h0KCk7IH0KKyAgICBjb25z
dCBJbnRTaXplJiByZWxhdGl2ZVBvc2l0aW9uT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9yZWxh
dGl2ZU9mZnNldDsgfQogCiAgICAgdm9pZCBjbGVhckNsaXBSZWN0c0luY2x1ZGluZ0Rlc2NlbmRh
bnRzKCk7CiAgICAgdm9pZCBjbGVhckNsaXBSZWN0cygpOwpAQCAtNjIzLDI3ICs2MjMsMjEgQEAg
cHJvdGVjdGVkOgogICAgIEludFJlY3QgbV9vdXRsaW5lQm94OwogCiAgICAgLy8gT3VyIGN1cnJl
bnQgcmVsYXRpdmUgcG9zaXRpb24gb2Zmc2V0LgotICAgIGludCBtX3JlbFg7Ci0gICAgaW50IG1f
cmVsWTsKKyAgICBJbnRTaXplIG1fcmVsYXRpdmVPZmZzZXQ7CiAKICAgICAvLyBPdXIgKHgseSkg
Y29vcmRpbmF0ZXMgYXJlIGluIG91ciBwYXJlbnQgbGF5ZXIncyBjb29yZGluYXRlIHNwYWNlLgot
ICAgIGludCBtX3g7Ci0gICAgaW50IG1feTsKKyAgICBJbnRQb2ludCBtX3RvcExlZnQ7CiAKICAg
ICAvLyBUaGUgbGF5ZXIncyB3aWR0aC9oZWlnaHQKLSAgICBpbnQgbV93aWR0aDsKLSAgICBpbnQg
bV9oZWlnaHQ7CisgICAgSW50U2l6ZSBtX2xheWVyU2l6ZTsKIAogICAgIC8vIE91ciBzY3JvbGwg
b2Zmc2V0cyBpZiB0aGUgdmlldyBpcyBzY3JvbGxlZC4KLSAgICBpbnQgbV9zY3JvbGxYOwotICAg
IGludCBtX3Njcm9sbFk7Ci0gICAgCi0gICAgaW50IG1fc2Nyb2xsTGVmdE92ZXJmbG93OwotICAg
IGludCBtX3Njcm9sbFRvcE92ZXJmbG93OworICAgIEludFNpemUgbV9zY3JvbGxPZmZzZXQ7CisK
KyAgICBJbnRTaXplIG1fc2Nyb2xsT3ZlcmZsb3c7CiAgICAgCiAgICAgLy8gVGhlIHdpZHRoL2hl
aWdodCBvZiBvdXIgc2Nyb2xsZWQgYXJlYS4KLSAgICBpbnQgbV9zY3JvbGxXaWR0aDsKLSAgICBp
bnQgbV9zY3JvbGxIZWlnaHQ7CisgICAgSW50U2l6ZSBtX3Njcm9sbFNpemU7CiAKICAgICAvLyBG
b3IgbGF5ZXJzIHdpdGggb3ZlcmZsb3csIHdlIGhhdmUgYSBwYWlyIG9mIHNjcm9sbGJhcnMuCiAg
ICAgUmVmUHRyPFNjcm9sbGJhcj4gbV9oQmFyOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>