<?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>80918</bug_id>
          
          <creation_ts>2012-03-12 18:05:36 -0700</creation_ts>
          <short_desc>Update LayoutUnit usage in descendants of RenderReplaced</short_desc>
          <delta_ts>2012-03-21 02:32:17 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>60318</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Levi Weintraub">leviw</reporter>
          <assigned_to name="Levi Weintraub">leviw</assigned_to>
          <cc>darin</cc>
    
    <cc>eae</cc>
    
    <cc>eric</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>576833</commentid>
    <comment_count>0</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-03-12 18:05:36 -0700</bug_when>
    <thetext>Replaced elements have to flow in the new sub-pixel Render Tree, but since the rendering of these often takes place outside of WebCore (or in cases such as foreign objects, in WebCore after passing through platform code), care must be taken to determine the final rendered size and location before render time. This patch brings these classes up to the latest and greatest in the subpixellayout branch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576895</commentid>
    <comment_count>1</comment_count>
      <attachid>131490</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-03-12 19:09:54 -0700</bug_when>
    <thetext>Created attachment 131490
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582844</commentid>
    <comment_count>2</comment_count>
      <attachid>131490</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-03-20 01:12:32 -0700</bug_when>
    <thetext>Comment on attachment 131490
Patch

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

&gt; Source/WebCore/rendering/RenderVideo.cpp:169
&gt; +    IntRect contentRect = pixelSnappedIntRect(contentBoxRect());

Sigh.  I dislike all these free functions. :(

&gt; Source/WebCore/rendering/RenderWidget.cpp:147
&gt; +static inline IntRect roundedIntRect(const LayoutRect&amp; rect)
&gt; +{
&gt; +    return IntRect(roundedIntPoint(rect.location()), roundedIntSize(rect.size()));
&gt; +}

why can&apos;t this be a method on LayoutRect (and IntRect for hte time being?)

&gt; Source/WebCore/rendering/RenderWidget.cpp:165
&gt; +    m_widget-&gt;setFrameRect(IntRect(roundedIntRect(frame)));

IntRect() isn&apos;t needed here, is it?  Also again, why not a method on the rect instead of a free function?

&gt; Source/WebCore/rendering/RenderWidget.cpp:181
&gt; +    LayoutRect absoluteContentBox = LayoutRect(localToAbsoluteQuad(FloatQuad(contentBox)).boundingBox());

The constructor on the right side isnt&apos; neded.  If it is, you can just remove the = () and construct directly in place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582848</commentid>
    <comment_count>3</comment_count>
      <attachid>131490</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-03-20 01:19:11 -0700</bug_when>
    <thetext>Comment on attachment 131490
Patch

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

&gt;&gt; Source/WebCore/rendering/RenderVideo.cpp:169
&gt;&gt; +    IntRect contentRect = pixelSnappedIntRect(contentBoxRect());
&gt; 
&gt; Sigh.  I dislike all these free functions. :(

So you&apos;d rather have a LayoutRect::pixelSnap() function? It&apos;d definitely be shorter to type :) Since this would be a pretty large refactor at this point, I&apos;d propose it for a separate patch if you feel strongly.

&gt;&gt; Source/WebCore/rendering/RenderWidget.cpp:147
&gt;&gt; +}
&gt; 
&gt; why can&apos;t this be a method on LayoutRect (and IntRect for hte time being?)

I put it here to discourage usage since this is seldom what you want. I&apos;m happy to move it.

&gt;&gt; Source/WebCore/rendering/RenderWidget.cpp:165
&gt;&gt; +    m_widget-&gt;setFrameRect(IntRect(roundedIntRect(frame)));
&gt; 
&gt; IntRect() isn&apos;t needed here, is it?  Also again, why not a method on the rect instead of a free function?

The IntRect definitely isn&apos;t needed. Good catch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582850</commentid>
    <comment_count>4</comment_count>
      <attachid>131490</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-03-20 01:23:41 -0700</bug_when>
    <thetext>Comment on attachment 131490
Patch

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

&gt;&gt;&gt; Source/WebCore/rendering/RenderWidget.cpp:147
&gt;&gt;&gt; +}
&gt;&gt; 
&gt;&gt; why can&apos;t this be a method on LayoutRect (and IntRect for hte time being?)
&gt; 
&gt; I put it here to discourage usage since this is seldom what you want. I&apos;m happy to move it.

Ah, OK, that part wasn&apos;t immediately clear to me.  Might want to comment to that effect. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582903</commentid>
    <comment_count>5</comment_count>
      <attachid>132788</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-03-20 03:35:28 -0700</bug_when>
    <thetext>Created attachment 132788
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583185</commentid>
    <comment_count>6</comment_count>
      <attachid>132788</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-03-20 10:16:24 -0700</bug_when>
    <thetext>Comment on attachment 132788
Patch

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

ok.

&gt; Source/WebCore/rendering/RenderImage.cpp:530
&gt; +            containerSize.setWidth(roundToInt(containerSize.width() * style()-&gt;effectiveZoom()));
&gt; +            containerSize.setHeight(roundToInt(containerSize.height() * style()-&gt;effectiveZoom()));

Don&apos;t we have a method on size to do thos multiply already?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583584</commentid>
    <comment_count>7</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2012-03-20 16:23:55 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 132788 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=132788&amp;action=review
&gt; 
&gt; ok.
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderImage.cpp:530
&gt; &gt; +            containerSize.setWidth(roundToInt(containerSize.width() * style()-&gt;effectiveZoom()));
&gt; &gt; +            containerSize.setHeight(roundToInt(containerSize.height() * style()-&gt;effectiveZoom()));
&gt; 
&gt; Don&apos;t we have a method on size to do thos multiply already?

We have a scale method (on IntSize and FractionalLayoutSize) but they floor rather than round.

If flooring is acceptable here containerSize.scale(style()-&gt;effectiveZoom()) should do the trick.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583590</commentid>
    <comment_count>8</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-03-20 16:25:11 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; (From update of attachment 132788 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=132788&amp;action=review
&gt; &gt; 
&gt; &gt; ok.
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/rendering/RenderImage.cpp:530
&gt; &gt; &gt; +            containerSize.setWidth(roundToInt(containerSize.width() * style()-&gt;effectiveZoom()));
&gt; &gt; &gt; +            containerSize.setHeight(roundToInt(containerSize.height() * style()-&gt;effectiveZoom()));
&gt; &gt; 
&gt; &gt; Don&apos;t we have a method on size to do thos multiply already?
&gt; 
&gt; We have a scale method (on IntSize and FractionalLayoutSize) but they floor rather than round.
&gt; 
&gt; If flooring is acceptable here containerSize.scale(style()-&gt;effectiveZoom()) should do the trick.

Perhaps FractionalLayoutSize::scale shouldn&apos;t floor? A thought...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583930</commentid>
    <comment_count>9</comment_count>
      <attachid>132788</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-03-21 02:32:07 -0700</bug_when>
    <thetext>Comment on attachment 132788
Patch

Clearing flags on attachment: 132788

Committed r111515: &lt;http://trac.webkit.org/changeset/111515&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583931</commentid>
    <comment_count>10</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-03-21 02:32:17 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131490</attachid>
            <date>2012-03-12 19:09:54 -0700</date>
            <delta_ts>2012-03-20 03:35:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80918-20120312190953.patch</filename>
            <type>text/plain</type>
            <size>15021</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMDUxOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBACisyMDEyLTAzLTEyICBMZXZpIFdl
aW50cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4KKworICAgICAgICBVcGRhdGUgTGF5b3V0VW5p
dCB1c2FnZSBpbiBkZXNjZW5kYW50cyBvZiBSZW5kZXJSZXBsYWNlZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA5MTgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlZCBlbGVtZW50cyBoYXZlIHRv
IGZsb3cgaW4gdGhlIG5ldyBzdWItcGl4ZWwgUmVuZGVyIFRyZWUsIGJ1dCBzaW5jZSB0aGUgcmVu
ZGVyaW5nIG9mIHRoZXNlCisgICAgICAgIG9mdGVuIHRha2VzIHBsYWNlIG91dHNpZGUgb2YgV2Vi
Q29yZSAob3IgaW4gY2FzZXMgc3VjaCBhcyBmb3JlaWduIG9iamVjdHMsIGluIFdlYkNvcmUgYWZ0
ZXIKKyAgICAgICAgcGFzc2luZyB0aHJvdWdoIHBsYXRmb3JtIGNvZGUpLCBjYXJlIG11c3QgYmUg
dGFrZW4gdG8gZGV0ZXJtaW5lIHRoZSBmaW5hbCByZW5kZXJlZCBzaXplIGFuZAorICAgICAgICBs
b2NhdGlvbiBiZWZvcmUgcmVuZGVyIHRpbWUuIFRoaXMgcGF0Y2ggYnJpbmdzIHRoZXNlIGNsYXNz
ZXMgdXAgdG8gdGhlIGxhdGVzdCBhbmQgZ3JlYXRlc3QgaW4gdGhlCisgICAgICAgIHN1YnBpeGVs
bGF5b3V0IGJyYW5jaC4KKworICAgICAgICBTZWUgaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvd2lr
aS9MYXlvdXRVbml0IGZvciBtb3JlIGluZm9ybWF0aW9uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cy4gTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZy
YW1lQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFtZUJhc2U6OmxheW91dFdp
dGhGbGF0dGVuaW5nKTogQnVpbGQgRml4LgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGdWxs
U2NyZWVuLmNwcDoKKyAgICAgICAgKFJlbmRlckZ1bGxTY3JlZW46OmNyZWF0ZVBsYWNlaG9sZGVy
KTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uaDoKKyAgICAg
ICAgKFJlbmRlckZ1bGxTY3JlZW4pOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
SFRNTENhbnZhcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJIVE1MQ2FudmFzOjpjYW52
YXNTaXplQ2hhbmdlZCk6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJRnJhbWUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySUZyYW1lOjpjb21wdXRlTG9naWNhbEhlaWdo
dCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySUZyYW1lOjpjb21wdXRlTG9naWNh
bFdpZHRoKTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjp1cGRhdGVJbnRyaW5zaWNTaXplSWZOZWVkZWQp
OiBJbnRyaW5zaWMgc2l6ZXMgYXJlIGFsd2F5cyBpbnRlZ2Vycywgc2luY2UgdGhleQorICAgICAg
ICBvcmlnaW5hdGUgb3V0c2lkZSBvZiBXZWJDb3JlLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
SW1hZ2U6OnBhaW50SW50b1JlY3QpOiBVc2UgcGl4ZWwgc25hcHBpbmcgdG8gcGFpbnQgaW50byBh
biBhcmJpdHJhcnkgcmVjdC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpjb21wdXRl
UmVwbGFjZWRMb2dpY2FsV2lkdGgpOiBJbnRyaW5zaWMgc2l6ZSBpcyBhbHdheXMgaW50ZWdyYWwg
LS0gcm91bmRpbmcKKyAgICAgICAgdmFsdWVzIHRvIGludGVnZXJzLgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJJbWFnZS5oOgorICAgICAgICAoUmVuZGVySW1hZ2UpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJWaWRlby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWRlbzo6
dmlkZW9Cb3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlkZW86OnBhaW50UmVwbGFjZWQp
OiBQYWludGluZyBhdCBpbnRlZ2VyIGJvdW5kYXJpZXMuCisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlcldpZGdldC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnJv
dW5kZWRJbnRSZWN0KTogV2lkZ2V0cyBhcmUgcmVuZGVyZWQgb3V0c2lkZSBvZiBXZWJDb3JlLCBz
byB3ZSBhbHdheXMgYWxpZ24gdGhlbSB0bworICAgICAgICBpbnRlZ2VyIGJvdW5kYXJpZXMuIFRo
aXMgbWVhbnMgd2UgY2FuIGFjdHVhbGx5IHJvdW5kIHRoZSBzaXplIG9mIG91ciB1bHRpbWF0ZSBj
b250ZW50IGJveC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcldpZGdldDo6c2V0V2lkZ2V0R2Vv
bWV0cnkpOiBXZSBzaW1wbGlmeSBsYXlvdXQgYnkgdGFraW5nIGEgTGF5b3V0UmVjdCBhbmQgcm91
bmRpbmcKKyAgICAgICAgaXQgdG8gaXRzIGZpbmFsIGxvY2F0aW9uIHdpdGhpbiB0aGlzIGZ1bmN0
aW9uLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyV2lkZ2V0Ojp1cGRhdGVXaWRnZXRHZW9tZXRy
eSk6IFdlIGtlZXAgdGhpbmdzIGluIExheW91dFVuaXRzIHVudGlsIGhhbmRpbmcgb2ZmIHRvCisg
ICAgICAgIHNldFdpZGdldEdlb21ldHJ5LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyV2lkZ2V0
OjpwYWludCk6IFJvdW5kaW5nIHRoZSBwYWludCBsb2NhdGlvbiBiZWZvcmUgaGFuZGluZyBwYWlu
dGluZyBvZmYgdG8gdGhlCisgICAgICAgIHdpZGdldCBpdHNlbGYuCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlcldpZGdldC5oOgorICAgICAgICAoUmVuZGVyV2lkZ2V0KToKKwogMjAxMi0wMy0x
MiAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1Y4XSBS
ZWZhY3RvciBzb21lIGhlYWRlciBpbmNsdWRlcyBpbiBWOCBiaW5kaW5ncwpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5jcHAJKHJldmlzaW9uIDExMDQ0
OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03OCw5ICs3OCw5IEBAIHZvaWQgUmVuZGVyRnJhbWVCYXNlOjpsYXlvdXRX
aXRoRmxhdHRlbmkKIAogICAgIC8vIGV4cGFuZCB0aGUgZnJhbWUgYnkgc2V0dGluZyBmcmFtZSBo
ZWlnaHQgPSBjb250ZW50IGhlaWdodAogICAgIGlmIChpc1Njcm9sbGFibGUgfHwgIWZpeGVkSGVp
Z2h0IHx8IGNoaWxkUm9vdC0+aXNGcmFtZVNldCgpKQotICAgICAgICBzZXRIZWlnaHQobWF4KGhl
aWdodCgpLCBjaGlsZEZyYW1lVmlldy0+Y29udGVudHNIZWlnaHQoKSArIHZCb3JkZXIpKTsKKyAg
ICAgICAgc2V0SGVpZ2h0KG1heDxMYXlvdXRVbml0PihoZWlnaHQoKSwgY2hpbGRGcmFtZVZpZXct
PmNvbnRlbnRzSGVpZ2h0KCkgKyB2Qm9yZGVyKSk7CiAgICAgaWYgKGlzU2Nyb2xsYWJsZSB8fCAh
Zml4ZWRXaWR0aCB8fCBjaGlsZFJvb3QtPmlzRnJhbWVTZXQoKSkKLSAgICAgICAgc2V0V2lkdGgo
bWF4KHdpZHRoKCksIGNoaWxkRnJhbWVWaWV3LT5jb250ZW50c1dpZHRoKCkgKyBoQm9yZGVyKSk7
CisgICAgICAgIHNldFdpZHRoKG1heDxMYXlvdXRVbml0Pih3aWR0aCgpLCBjaGlsZEZyYW1lVmll
dy0+Y29udGVudHNXaWR0aCgpICsgaEJvcmRlcikpOwogCiAgICAgdXBkYXRlV2lkZ2V0UG9zaXRp
b24oKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGdWxsU2Ny
ZWVuLmNwcAkocmV2aXNpb24gMTEwNDQ4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZ1bGxTY3JlZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDAsNyArMTQwLDcgQEAgdm9p
ZCBSZW5kZXJGdWxsU2NyZWVuOjpzZXRQbGFjZWhvbGRlcihSZQogICAgIG1fcGxhY2Vob2xkZXIg
PSBwbGFjZWhvbGRlcjsKIH0KIAotdm9pZCBSZW5kZXJGdWxsU2NyZWVuOjpjcmVhdGVQbGFjZWhv
bGRlcihQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgSW50UmVjdCYgZnJhbWVS
ZWN0KQordm9pZCBSZW5kZXJGdWxsU2NyZWVuOjpjcmVhdGVQbGFjZWhvbGRlcihQYXNzUmVmUHRy
PFJlbmRlclN0eWxlPiBzdHlsZSwgY29uc3QgTGF5b3V0UmVjdCYgZnJhbWVSZWN0KQogewogICAg
IGlmIChzdHlsZS0+d2lkdGgoKS5pc0F1dG8oKSkKICAgICAgICAgc3R5bGUtPnNldFdpZHRoKExl
bmd0aChmcmFtZVJlY3Qud2lkdGgoKSwgRml4ZWQpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uaAkocmV2aXNpb24gMTEwNDQ4KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uaAkod29ya2luZyBjb3B5KQpAQCAt
MzksNyArMzksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFBsYWNlaG9sZGVyKFJlbmRlckJs
b2NrKik7CiAgICAgUmVuZGVyQmxvY2sqIHBsYWNlaG9sZGVyKCkgeyByZXR1cm4gbV9wbGFjZWhv
bGRlcjsgfQotICAgIHZvaWQgY3JlYXRlUGxhY2Vob2xkZXIoUGFzc1JlZlB0cjxSZW5kZXJTdHls
ZT4sIGNvbnN0IEludFJlY3QmIGZyYW1lUmVjdCk7CisgICAgdm9pZCBjcmVhdGVQbGFjZWhvbGRl
cihQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiwgY29uc3QgTGF5b3V0UmVjdCYgZnJhbWVSZWN0KTsK
IAogCiAgICAgc3RhdGljIFJlbmRlck9iamVjdCogd3JhcFJlbmRlcmVyKFJlbmRlck9iamVjdCog
cmVuZGVyZXIsIERvY3VtZW50Kik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySFRNTENhbnZhcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckhUTUxDYW52YXMuY3BwCShyZXZpc2lvbiAxMTA0NDgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4LDcg
Kzg4LDcgQEAgdm9pZCBSZW5kZXJIVE1MQ2FudmFzOjpjYW52YXNTaXplQ2hhbmdlZAogICAgIGlm
ICghcHJlZmVycmVkTG9naWNhbFdpZHRoc0RpcnR5KCkpCiAgICAgICAgIHNldFByZWZlcnJlZExv
Z2ljYWxXaWR0aHNEaXJ0eSh0cnVlKTsKIAotICAgIEludFNpemUgb2xkU2l6ZSA9IHNpemUoKTsK
KyAgICBMYXlvdXRTaXplIG9sZFNpemUgPSBzaXplKCk7CiAgICAgY29tcHV0ZUxvZ2ljYWxXaWR0
aCgpOwogICAgIGNvbXB1dGVMb2dpY2FsSGVpZ2h0KCk7CiAgICAgaWYgKG9sZFNpemUgPT0gc2l6
ZSgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5jcHAJKHJl
dmlzaW9uIDExMDQ0OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJRnJhbWUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgUmVuZGVySUZyYW1lOjpj
b21wdXRlTG9naWNhbEhlaWdodCgKICAgICAgICAgaWYgKCF2aWV3KQogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICBpbnQgYm9yZGVyID0gYm9yZGVyVG9wKCkgKyBib3JkZXJCb3R0b20oKTsK
LSAgICAgICAgc2V0SGVpZ2h0KG1heChoZWlnaHQoKSwgdmlldy0+Y29udGVudHNIZWlnaHQoKSAr
IGJvcmRlcikpOworICAgICAgICBzZXRIZWlnaHQobWF4PExheW91dFVuaXQ+KGhlaWdodCgpLCB2
aWV3LT5jb250ZW50c0hlaWdodCgpICsgYm9yZGVyKSk7CiAgICAgfQogfQogCkBAIC03NSw3ICs3
NSw3IEBAIHZvaWQgUmVuZGVySUZyYW1lOjpjb21wdXRlTG9naWNhbFdpZHRoKCkKICAgICAgICAg
aWYgKCF2aWV3KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBMYXlvdXRVbml0IGJvcmRl
ciA9IGJvcmRlckxlZnQoKSArIGJvcmRlclJpZ2h0KCk7Ci0gICAgICAgIHNldFdpZHRoKG1heCh3
aWR0aCgpLCB2aWV3LT5jb250ZW50c1dpZHRoKCkgKyBib3JkZXIpKTsKKyAgICAgICAgc2V0V2lk
dGgobWF4PExheW91dFVuaXQ+KHdpZHRoKCksIHZpZXctPmNvbnRlbnRzV2lkdGgoKSArIGJvcmRl
cikpOwogICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklt
YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1h
Z2UuY3BwCShyZXZpc2lvbiAxMTA0NDgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzUsNyArMTc1LDcgQEAgdm9pZCBSZW5k
ZXJJbWFnZTo6aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbQogICAgIGltYWdlRGltZW5zaW9uc0NoYW5n
ZWQoaW1hZ2VTaXplQ2hhbmdlZCwgcmVjdCk7CiB9CiAKLWJvb2wgUmVuZGVySW1hZ2U6OnVwZGF0
ZUludHJpbnNpY1NpemVJZk5lZWRlZChjb25zdCBMYXlvdXRTaXplJiBuZXdTaXplLCBib29sIGlt
YWdlU2l6ZUNoYW5nZWQpCitib29sIFJlbmRlckltYWdlOjp1cGRhdGVJbnRyaW5zaWNTaXplSWZO
ZWVkZWQoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSwgYm9vbCBpbWFnZVNpemVDaGFuZ2VkKQogewog
ICAgIGlmIChuZXdTaXplID09IGludHJpbnNpY1NpemUoKSAmJiAhaW1hZ2VTaXplQ2hhbmdlZCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDE2LDE4ICs0MTYsMTkgQEAgdm9pZCBSZW5kZXJJ
bWFnZTo6YXJlYUVsZW1lbnRGb2N1c0NoYW5nZQogCiB2b2lkIFJlbmRlckltYWdlOjpwYWludElu
dG9SZWN0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkK
IHsKLSAgICBpZiAoIW1faW1hZ2VSZXNvdXJjZS0+aGFzSW1hZ2UoKSB8fCBtX2ltYWdlUmVzb3Vy
Y2UtPmVycm9yT2NjdXJyZWQoKSB8fCByZWN0LndpZHRoKCkgPD0gMCB8fCByZWN0LmhlaWdodCgp
IDw9IDApCisgICAgSW50UmVjdCBhbGlnbmVkUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QocmVj
dCk7CisgICAgaWYgKCFtX2ltYWdlUmVzb3VyY2UtPmhhc0ltYWdlKCkgfHwgbV9pbWFnZVJlc291
cmNlLT5lcnJvck9jY3VycmVkKCkgfHwgYWxpZ25lZFJlY3Qud2lkdGgoKSA8PSAwIHx8IGFsaWdu
ZWRSZWN0LmhlaWdodCgpIDw9IDApCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxJbWFn
ZT4gaW1nID0gbV9pbWFnZVJlc291cmNlLT5pbWFnZShyZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0
KCkpOworICAgIFJlZlB0cjxJbWFnZT4gaW1nID0gbV9pbWFnZVJlc291cmNlLT5pbWFnZShhbGln
bmVkUmVjdC53aWR0aCgpLCBhbGlnbmVkUmVjdC5oZWlnaHQoKSk7CiAgICAgaWYgKCFpbWcgfHwg
aW1nLT5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgSFRNTEltYWdlRWxlbWVudCog
aW1hZ2VFbHQgPSAobm9kZSgpICYmIG5vZGUoKS0+aGFzVGFnTmFtZShpbWdUYWcpKSA/IHN0YXRp
Y19jYXN0PEhUTUxJbWFnZUVsZW1lbnQqPihub2RlKCkpIDogMDsKICAgICBDb21wb3NpdGVPcGVy
YXRvciBjb21wb3NpdGVPcGVyYXRvciA9IGltYWdlRWx0ID8gaW1hZ2VFbHQtPmNvbXBvc2l0ZU9w
ZXJhdG9yKCkgOiBDb21wb3NpdGVTb3VyY2VPdmVyOwogICAgIEltYWdlKiBpbWFnZSA9IG1faW1h
Z2VSZXNvdXJjZS0+aW1hZ2UoKS5nZXQoKTsKLSAgICBib29sIHVzZUxvd1F1YWxpdHlTY2FsaW5n
ID0gc2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoY29udGV4dCwgaW1hZ2UsIGltYWdlLCByZWN0LnNp
emUoKSk7Ci0gICAgY29udGV4dC0+ZHJhd0ltYWdlKG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2UocmVj
dC53aWR0aCgpLCByZWN0LmhlaWdodCgpKS5nZXQoKSwgc3R5bGUoKS0+Y29sb3JTcGFjZSgpLCBy
ZWN0LCBjb21wb3NpdGVPcGVyYXRvciwgdXNlTG93UXVhbGl0eVNjYWxpbmcpOworICAgIGJvb2wg
dXNlTG93UXVhbGl0eVNjYWxpbmcgPSBzaG91bGRQYWludEF0TG93UXVhbGl0eShjb250ZXh0LCBp
bWFnZSwgaW1hZ2UsIGFsaWduZWRSZWN0LnNpemUoKSk7CisgICAgY29udGV4dC0+ZHJhd0ltYWdl
KG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2UoYWxpZ25lZFJlY3Qud2lkdGgoKSwgYWxpZ25lZFJlY3Qu
aGVpZ2h0KCkpLmdldCgpLCBzdHlsZSgpLT5jb2xvclNwYWNlKCksIGFsaWduZWRSZWN0LCBjb21w
b3NpdGVPcGVyYXRvciwgdXNlTG93UXVhbGl0eVNjYWxpbmcpOwogfQogCiBib29sIFJlbmRlcklt
YWdlOjpiYWNrZ3JvdW5kSXNPYnNjdXJlZCgpIGNvbnN0CkBAIC01MjUsOCArNTI2LDggQEAgTGF5
b3V0VW5pdCBSZW5kZXJJbWFnZTo6Y29tcHV0ZVJlcGxhY2VkTAogICAgICAgICBpZiAoY2FjaGVk
SW1hZ2UgJiYgY2FjaGVkSW1hZ2UtPmltYWdlKCkpIHsKICAgICAgICAgICAgIGNvbnRhaW5lclNp
emUgPSBjYWNoZWRJbWFnZS0+aW1hZ2UoKS0+c2l6ZSgpOwogICAgICAgICAgICAgLy8gRklYTUU6
IFJlbW92ZSB1bm5lY2Vzc2FyeSByb3VuZGluZyB3aGVuIGxheW91dCBpcyBvZmYgaW50czogd2Vi
a2l0Lm9yZy9iLzYzNjU2Ci0gICAgICAgICAgICBjb250YWluZXJTaXplLnNldFdpZHRoKHN0YXRp
Y19jYXN0PExheW91dFVuaXQ+KGNvbnRhaW5lclNpemUud2lkdGgoKSAqIHN0eWxlKCktPmVmZmVj
dGl2ZVpvb20oKSkpOwotICAgICAgICAgICAgY29udGFpbmVyU2l6ZS5zZXRIZWlnaHQoc3RhdGlj
X2Nhc3Q8TGF5b3V0VW5pdD4oY29udGFpbmVyU2l6ZS5oZWlnaHQoKSAqIHN0eWxlKCktPmVmZmVj
dGl2ZVpvb20oKSkpOworICAgICAgICAgICAgY29udGFpbmVyU2l6ZS5zZXRXaWR0aChyb3VuZFRv
SW50KGNvbnRhaW5lclNpemUud2lkdGgoKSAqIHN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSkpOwor
ICAgICAgICAgICAgY29udGFpbmVyU2l6ZS5zZXRIZWlnaHQocm91bmRUb0ludChjb250YWluZXJT
aXplLmhlaWdodCgpICogc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKSk7CiAgICAgICAgIH0KICAg
ICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCShyZXZpc2lv
biAxMTA0NDgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaAkod29y
a2luZyBjb3B5KQpAQCAtOTQsNyArOTQsNyBAQCBwcml2YXRlOgogCiAgICAgSW50U2l6ZSBpbWFn
ZVNpemVGb3JFcnJvcihDYWNoZWRJbWFnZSopIGNvbnN0OwogICAgIHZvaWQgaW1hZ2VEaW1lbnNp
b25zQ2hhbmdlZChib29sIGltYWdlU2l6ZUNoYW5nZWQsIGNvbnN0IEludFJlY3QqID0gMCk7Ci0g
ICAgYm9vbCB1cGRhdGVJbnRyaW5zaWNTaXplSWZOZWVkZWQoY29uc3QgTGF5b3V0U2l6ZSYsIGJv
b2wgaW1hZ2VTaXplQ2hhbmdlZCk7CisgICAgYm9vbCB1cGRhdGVJbnRyaW5zaWNTaXplSWZOZWVk
ZWQoY29uc3QgSW50U2l6ZSYsIGJvb2wgaW1hZ2VTaXplQ2hhbmdlZCk7CiAKICAgICB2b2lkIHBh
aW50QXJlYUVsZW1lbnRGb2N1c1JpbmcoUGFpbnRJbmZvJik7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcAkocmV2aXNpb24gMTEwNDQ4KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY2
LDcgKzE2Niw3IEBAIEludFJlY3QgUmVuZGVyVmlkZW86OnZpZGVvQm94KCkgY29uc3QKICAgICBl
bHNlCiAgICAgICAgIGVsZW1lbnRTaXplID0gaW50cmluc2ljU2l6ZSgpOwogCi0gICAgSW50UmVj
dCBjb250ZW50UmVjdCA9IGNvbnRlbnRCb3hSZWN0KCk7CisgICAgSW50UmVjdCBjb250ZW50UmVj
dCA9IHBpeGVsU25hcHBlZEludFJlY3QoY29udGVudEJveFJlY3QoKSk7CiAgICAgaWYgKGVsZW1l
bnRTaXplLmlzRW1wdHkoKSB8fCBjb250ZW50UmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biBJbnRSZWN0KCk7CiAKQEAgLTIyNSw5ICsyMjUsOSBAQCB2b2lkIFJlbmRlclZpZGVvOjpwYWlu
dFJlcGxhY2VkKFBhaW50SW5mCiAgICAgaWYgKGRpc3BsYXlpbmdQb3N0ZXIpCiAgICAgICAgIHBh
aW50SW50b1JlY3QocGFpbnRJbmZvLmNvbnRleHQsIHJlY3QpOwogICAgIGVsc2UgaWYgKGRvY3Vt
ZW50KCktPnZpZXcoKSAmJiBkb2N1bWVudCgpLT52aWV3KCktPnBhaW50QmVoYXZpb3IoKSAmIFBh
aW50QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnMpCi0gICAgICAgIG1lZGlhUGxheWVy
LT5wYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChwYWludEluZm8uY29udGV4dCwgcmVjdCk7Cisg
ICAgICAgIG1lZGlhUGxheWVyLT5wYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChwYWludEluZm8u
Y29udGV4dCwgcGl4ZWxTbmFwcGVkSW50UmVjdChyZWN0KSk7CiAgICAgZWxzZQotICAgICAgICBt
ZWRpYVBsYXllci0+cGFpbnQocGFpbnRJbmZvLmNvbnRleHQsIHJlY3QpOworICAgICAgICBtZWRp
YVBsYXllci0+cGFpbnQocGFpbnRJbmZvLmNvbnRleHQsIHBpeGVsU25hcHBlZEludFJlY3QocmVj
dCkpOwogfQogCiB2b2lkIFJlbmRlclZpZGVvOjpsYXlvdXQoKQpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAJKHJldmlzaW9uIDExMDQ0OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDAsMTIgKzE0MCwxOCBAQCBSZW5kZXJXaWRnZXQ6On5SZW5kZXJXaWRnZXQoKQogICAgIGNsZWFy
V2lkZ2V0KCk7CiB9CiAKLWJvb2wgUmVuZGVyV2lkZ2V0OjpzZXRXaWRnZXRHZW9tZXRyeShjb25z
dCBJbnRSZWN0JiBmcmFtZSkKKy8vIFdlIGFsd2F5cyBwbGFjZSB3aWRnZXRzIG9uIGludGVnZXIg
Ym91bmRhcmllcywgc28gcm91bmRpbmcgdGhlIHNpemUgaXMgYWN0dWFsbHkgYWNjZXB0YWJsZQor
c3RhdGljIGlubGluZSBJbnRSZWN0IHJvdW5kZWRJbnRSZWN0KGNvbnN0IExheW91dFJlY3QmIHJl
Y3QpCit7CisgICAgcmV0dXJuIEludFJlY3Qocm91bmRlZEludFBvaW50KHJlY3QubG9jYXRpb24o
KSksIHJvdW5kZWRJbnRTaXplKHJlY3Quc2l6ZSgpKSk7Cit9CisKK2Jvb2wgUmVuZGVyV2lkZ2V0
OjpzZXRXaWRnZXRHZW9tZXRyeShjb25zdCBMYXlvdXRSZWN0JiBmcmFtZSkKIHsKICAgICBpZiAo
IW5vZGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgSW50UmVjdCBjbGlwUmVjdCA9
IGVuY2xvc2luZ0xheWVyKCktPmNoaWxkcmVuQ2xpcFJlY3QoKTsKKyAgICBJbnRSZWN0IGNsaXBS
ZWN0ID0gcm91bmRlZEludFJlY3QoZW5jbG9zaW5nTGF5ZXIoKS0+Y2hpbGRyZW5DbGlwUmVjdCgp
KTsKICAgICBib29sIGNsaXBDaGFuZ2VkID0gbV9jbGlwUmVjdCAhPSBjbGlwUmVjdDsKICAgICBi
b29sIGJvdW5kc0NoYW5nZWQgPSBtX3dpZGdldC0+ZnJhbWVSZWN0KCkgIT0gZnJhbWU7CiAKQEAg
LTE1Niw3ICsxNjIsNyBAQCBib29sIFJlbmRlcldpZGdldDo6c2V0V2lkZ2V0R2VvbWV0cnkoY29u
CiAKICAgICBSZW5kZXJXaWRnZXRQcm90ZWN0b3IgcHJvdGVjdG9yKHRoaXMpOwogICAgIFJlZlB0
cjxOb2RlPiBwcm90ZWN0ZWROb2RlKG5vZGUoKSk7Ci0gICAgbV93aWRnZXQtPnNldEZyYW1lUmVj
dChmcmFtZSk7CisgICAgbV93aWRnZXQtPnNldEZyYW1lUmVjdChJbnRSZWN0KHJvdW5kZWRJbnRS
ZWN0KGZyYW1lKSkpOwogICAgIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAg
ICBpZiAoaGFzTGF5ZXIoKSAmJiBsYXllcigpLT5pc0NvbXBvc2l0ZWQoKSkKQEAgLTE2OCwxMSAr
MTc0LDExIEBAIGJvb2wgUmVuZGVyV2lkZ2V0OjpzZXRXaWRnZXRHZW9tZXRyeShjb24KIAogYm9v
bCBSZW5kZXJXaWRnZXQ6OnVwZGF0ZVdpZGdldEdlb21ldHJ5KCkKIHsKLSAgICBJbnRSZWN0IGNv
bnRlbnRCb3ggPSBjb250ZW50Qm94UmVjdCgpOworICAgIExheW91dFJlY3QgY29udGVudEJveCA9
IGNvbnRlbnRCb3hSZWN0KCk7CiAgICAgaWYgKCFtX3dpZGdldC0+dHJhbnNmb3Jtc0FmZmVjdEZy
YW1lUmVjdCgpKQogICAgICAgICByZXR1cm4gc2V0V2lkZ2V0R2VvbWV0cnkoYWJzb2x1dGVDb250
ZW50Qm94KCkpOwogCi0gICAgSW50UmVjdCBhYnNvbHV0ZUNvbnRlbnRCb3ggPSBJbnRSZWN0KGxv
Y2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRRdWFkKGNvbnRlbnRCb3gpKS5ib3VuZGluZ0JveCgpKTsK
KyAgICBMYXlvdXRSZWN0IGFic29sdXRlQ29udGVudEJveCA9IExheW91dFJlY3QobG9jYWxUb0Fi
c29sdXRlUXVhZChGbG9hdFF1YWQoY29udGVudEJveCkpLmJvdW5kaW5nQm94KCkpOwogICAgIGlm
IChtX3dpZGdldC0+aXNGcmFtZVZpZXcoKSkgewogICAgICAgICBjb250ZW50Qm94LnNldExvY2F0
aW9uKGFic29sdXRlQ29udGVudEJveC5sb2NhdGlvbigpKTsKICAgICAgICAgcmV0dXJuIHNldFdp
ZGdldEdlb21ldHJ5KGNvbnRlbnRCb3gpOwpAQCAtMjc2LDExICsyODIsMTIgQEAgdm9pZCBSZW5k
ZXJXaWRnZXQ6OnBhaW50KFBhaW50SW5mbyYgcGFpbgogICAgIGlmIChtX3dpZGdldCkgewogICAg
ICAgICAvLyBUZWxsIHRoZSB3aWRnZXQgdG8gcGFpbnQgbm93LiAgVGhpcyBpcyB0aGUgb25seSB0
aW1lIHRoZSB3aWRnZXQgaXMgYWxsb3dlZAogICAgICAgICAvLyB0byBwYWludCBpdHNlbGYuICBU
aGF0IHdheSBpdCB3aWxsIGNvbXBvc2l0ZSBwcm9wZXJseSB3aXRoIHotaW5kZXhlZCBsYXllcnMu
Ci0gICAgICAgIExheW91dFBvaW50IHdpZGdldExvY2F0aW9uID0gbV93aWRnZXQtPmZyYW1lUmVj
dCgpLmxvY2F0aW9uKCk7Ci0gICAgICAgIExheW91dFBvaW50IHBhaW50TG9jYXRpb24oYWRqdXN0
ZWRQYWludE9mZnNldC54KCkgKyBib3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpLCBhZGp1c3Rl
ZFBhaW50T2Zmc2V0LnkoKSArIGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgpKTsKLSAgICAgICAg
TGF5b3V0UmVjdCBwYWludFJlY3QgPSBwYWludEluZm8ucmVjdDsKKyAgICAgICAgSW50UG9pbnQg
d2lkZ2V0TG9jYXRpb24gPSBtX3dpZGdldC0+ZnJhbWVSZWN0KCkubG9jYXRpb24oKTsKKyAgICAg
ICAgSW50UG9pbnQgcGFpbnRMb2NhdGlvbihyb3VuZFRvSW50KGFkanVzdGVkUGFpbnRPZmZzZXQu
eCgpICsgYm9yZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQoKSksCisgICAgICAgICAgICByb3VuZFRv
SW50KGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkp
KTsKKyAgICAgICAgSW50UmVjdCBwYWludFJlY3QgPSBwYWludEluZm8ucmVjdDsKIAotICAgICAg
ICBMYXlvdXRTaXplIHdpZGdldFBhaW50T2Zmc2V0ID0gcGFpbnRMb2NhdGlvbiAtIHdpZGdldExv
Y2F0aW9uOworICAgICAgICBJbnRTaXplIHdpZGdldFBhaW50T2Zmc2V0ID0gcGFpbnRMb2NhdGlv
biAtIHdpZGdldExvY2F0aW9uOwogICAgICAgICAvLyBXaGVuIHBhaW50aW5nIHdpZGdldHMgaW50
byBjb21wb3NpdGluZyBsYXllcnMsIHR4IGFuZCB0eSBhcmUgcmVsYXRpdmUgdG8gdGhlIGVuY2xv
c2luZyBjb21wb3NpdGluZyBsYXllciwKICAgICAgICAgLy8gbm90IHRoZSByb290LiBJbiB0aGlz
IGNhc2UsIHNoaWZ0IHRoZSBDVE0gYW5kIGFkanVzdCB0aGUgcGFpbnRSZWN0IHRvIGJlIHJvb3Qt
cmVsYXRpdmUgdG8gZml4IHBsdWctaW4gZHJhd2luZy4KICAgICAgICAgaWYgKCF3aWRnZXRQYWlu
dE9mZnNldC5pc1plcm8oKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
cldpZGdldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJX
aWRnZXQuaAkocmV2aXNpb24gMTEwNDQ4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlcldpZGdldC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGlvblN0YXRlKFNlbGVjdGlvblN0YXRlKTsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0T3ZlcmxhcFRlc3RSZXN1bHQoYm9vbCk7CiAKLSAgICBib29sIHNldFdp
ZGdldEdlb21ldHJ5KGNvbnN0IEludFJlY3QmKTsKKyAgICBib29sIHNldFdpZGdldEdlb21ldHJ5
KGNvbnN0IExheW91dFJlY3QmKTsKICAgICBib29sIHVwZGF0ZVdpZGdldEdlb21ldHJ5KCk7CiAK
ICAgICBSZWZQdHI8V2lkZ2V0PiBtX3dpZGdldDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132788</attachid>
            <date>2012-03-20 03:35:28 -0700</date>
            <delta_ts>2012-03-21 02:32:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80918-20120320113526.patch</filename>
            <type>text/plain</type>
            <size>15204</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMTM2OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU2IEBACisyMDEyLTAzLTIwICBMZXZpIFdl
aW50cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4KKworICAgICAgICBVcGRhdGUgTGF5b3V0VW5p
dCB1c2FnZSBpbiBkZXNjZW5kYW50cyBvZiBSZW5kZXJSZXBsYWNlZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA5MTgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlZCBlbGVtZW50cyBoYXZlIHRv
IGZsb3cgaW4gdGhlIG5ldyBzdWItcGl4ZWwgUmVuZGVyIFRyZWUsIGJ1dCBzaW5jZSB0aGUgcmVu
ZGVyaW5nIG9mIHRoZXNlCisgICAgICAgIG9mdGVuIHRha2VzIHBsYWNlIG91dHNpZGUgb2YgV2Vi
Q29yZSAob3IgaW4gY2FzZXMgc3VjaCBhcyBmb3JlaWduIG9iamVjdHMsIGluIFdlYkNvcmUgYWZ0
ZXIKKyAgICAgICAgcGFzc2luZyB0aHJvdWdoIHBsYXRmb3JtIGNvZGUpLCBjYXJlIG11c3QgYmUg
dGFrZW4gdG8gZGV0ZXJtaW5lIHRoZSBmaW5hbCByZW5kZXJlZCBzaXplIGFuZAorICAgICAgICBs
b2NhdGlvbiBiZWZvcmUgcmVuZGVyIHRpbWUuIFRoaXMgcGF0Y2ggYnJpbmdzIHRoZXNlIGNsYXNz
ZXMgdXAgdG8gdGhlIGxhdGVzdCBhbmQgZ3JlYXRlc3QgaW4gdGhlCisgICAgICAgIHN1YnBpeGVs
bGF5b3V0IGJyYW5jaC4KKworICAgICAgICBTZWUgaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvd2lr
aS9MYXlvdXRVbml0IGZvciBtb3JlIGluZm9ybWF0aW9uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cy4gTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZy
YW1lQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFtZUJhc2U6OmxheW91dFdp
dGhGbGF0dGVuaW5nKTogQnVpbGQgRml4LgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGdWxs
U2NyZWVuLmNwcDoKKyAgICAgICAgKFJlbmRlckZ1bGxTY3JlZW46OmNyZWF0ZVBsYWNlaG9sZGVy
KTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uaDoKKyAgICAg
ICAgKFJlbmRlckZ1bGxTY3JlZW4pOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
SFRNTENhbnZhcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJIVE1MQ2FudmFzOjpjYW52
YXNTaXplQ2hhbmdlZCk6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJRnJhbWUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySUZyYW1lOjpjb21wdXRlTG9naWNhbEhlaWdo
dCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySUZyYW1lOjpjb21wdXRlTG9naWNh
bFdpZHRoKTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjp1cGRhdGVJbnRyaW5zaWNTaXplSWZOZWVkZWQp
OiBJbnRyaW5zaWMgc2l6ZXMgYXJlIGFsd2F5cyBpbnRlZ2Vycywgc2luY2UgdGhleQorICAgICAg
ICBvcmlnaW5hdGUgb3V0c2lkZSBvZiBXZWJDb3JlLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
SW1hZ2U6OnBhaW50SW50b1JlY3QpOiBVc2UgcGl4ZWwgc25hcHBpbmcgdG8gcGFpbnQgaW50byBh
biBhcmJpdHJhcnkgcmVjdC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpjb21wdXRl
UmVwbGFjZWRMb2dpY2FsV2lkdGgpOiBJbnRyaW5zaWMgc2l6ZSBpcyBhbHdheXMgaW50ZWdyYWwg
LS0gcm91bmRpbmcKKyAgICAgICAgdmFsdWVzIHRvIGludGVnZXJzLgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJJbWFnZS5oOgorICAgICAgICAoUmVuZGVySW1hZ2UpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJWaWRlby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWRlbzo6
dmlkZW9Cb3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlkZW86OnBhaW50UmVwbGFjZWQp
OiBQYWludGluZyBhdCBpbnRlZ2VyIGJvdW5kYXJpZXMuCisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlcldpZGdldC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnJv
dW5kZWRJbnRSZWN0KTogV2lkZ2V0cyBhcmUgcmVuZGVyZWQgb3V0c2lkZSBvZiBXZWJDb3JlLCBz
byB3ZSBhbHdheXMgYWxpZ24gdGhlbSB0bworICAgICAgICBpbnRlZ2VyIGJvdW5kYXJpZXMuIFRo
aXMgbWVhbnMgd2UgY2FuIGFjdHVhbGx5IHJvdW5kIHRoZSBzaXplIG9mIG91ciB1bHRpbWF0ZSBj
b250ZW50IGJveC4gVGhpcworICAgICAgICBmdW5jdGlvbiBpcyBpbXBsZW1lbnRlZCBoZXJlIHNw
ZWNpZmljYWxseSB0byBwcmV2ZW50IGl0cyBtaXN1c2UgaWYgd2UgcHV0IGl0IGVsc2V3aGVyZS4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcldpZGdldDo6c2V0V2lkZ2V0R2VvbWV0cnkpOiBXZSBz
aW1wbGlmeSBsYXlvdXQgYnkgdGFraW5nIGEgTGF5b3V0UmVjdCBhbmQgcm91bmRpbmcKKyAgICAg
ICAgaXQgdG8gaXRzIGZpbmFsIGxvY2F0aW9uIHdpdGhpbiB0aGlzIGZ1bmN0aW9uLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyV2lkZ2V0Ojp1cGRhdGVXaWRnZXRHZW9tZXRyeSk6IFdlIGtlZXAg
dGhpbmdzIGluIExheW91dFVuaXRzIHVudGlsIGhhbmRpbmcgb2ZmIHRvCisgICAgICAgIHNldFdp
ZGdldEdlb21ldHJ5LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyV2lkZ2V0OjpwYWludCk6IFJv
dW5kaW5nIHRoZSBwYWludCBsb2NhdGlvbiBiZWZvcmUgaGFuZGluZyBwYWludGluZyBvZmYgdG8g
dGhlCisgICAgICAgIHdpZGdldCBpdHNlbGYuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcldp
ZGdldC5oOgorICAgICAgICAoUmVuZGVyV2lkZ2V0KToKKwogMjAxMi0wMy0xOSAgQmVuamFtaW4g
UG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBCdWlsZCBmaXggZm9yIERl
YnVnIGJ1aWxkIGFmdGVyIHIxMTEzNTgKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGcmFtZUJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGcmFtZUJhc2UuY3BwCShyZXZpc2lvbiAxMTEzNjkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgsOSAr
NzgsOSBAQCB2b2lkIFJlbmRlckZyYW1lQmFzZTo6bGF5b3V0V2l0aEZsYXR0ZW5pCiAKICAgICAv
LyBleHBhbmQgdGhlIGZyYW1lIGJ5IHNldHRpbmcgZnJhbWUgaGVpZ2h0ID0gY29udGVudCBoZWln
aHQKICAgICBpZiAoaXNTY3JvbGxhYmxlIHx8ICFmaXhlZEhlaWdodCB8fCBjaGlsZFJvb3QtPmlz
RnJhbWVTZXQoKSkKLSAgICAgICAgc2V0SGVpZ2h0KG1heChoZWlnaHQoKSwgY2hpbGRGcmFtZVZp
ZXctPmNvbnRlbnRzSGVpZ2h0KCkgKyB2Qm9yZGVyKSk7CisgICAgICAgIHNldEhlaWdodChtYXg8
TGF5b3V0VW5pdD4oaGVpZ2h0KCksIGNoaWxkRnJhbWVWaWV3LT5jb250ZW50c0hlaWdodCgpICsg
dkJvcmRlcikpOwogICAgIGlmIChpc1Njcm9sbGFibGUgfHwgIWZpeGVkV2lkdGggfHwgY2hpbGRS
b290LT5pc0ZyYW1lU2V0KCkpCi0gICAgICAgIHNldFdpZHRoKG1heCh3aWR0aCgpLCBjaGlsZEZy
YW1lVmlldy0+Y29udGVudHNXaWR0aCgpICsgaEJvcmRlcikpOworICAgICAgICBzZXRXaWR0aCht
YXg8TGF5b3V0VW5pdD4od2lkdGgoKSwgY2hpbGRGcmFtZVZpZXctPmNvbnRlbnRzV2lkdGgoKSAr
IGhCb3JkZXIpKTsKIAogICAgIHVwZGF0ZVdpZGdldFBvc2l0aW9uKCk7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5jcHAJKHJldmlzaW9uIDEx
MTM2OSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTQwLDcgKzE0MCw3IEBAIHZvaWQgUmVuZGVyRnVsbFNjcmVlbjo6
c2V0UGxhY2Vob2xkZXIoUmUKICAgICBtX3BsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXI7CiB9CiAK
LXZvaWQgUmVuZGVyRnVsbFNjcmVlbjo6Y3JlYXRlUGxhY2Vob2xkZXIoUGFzc1JlZlB0cjxSZW5k
ZXJTdHlsZT4gc3R5bGUsIGNvbnN0IEludFJlY3QmIGZyYW1lUmVjdCkKK3ZvaWQgUmVuZGVyRnVs
bFNjcmVlbjo6Y3JlYXRlUGxhY2Vob2xkZXIoUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGUs
IGNvbnN0IExheW91dFJlY3QmIGZyYW1lUmVjdCkKIHsKICAgICBpZiAoc3R5bGUtPndpZHRoKCku
aXNBdXRvKCkpCiAgICAgICAgIHN0eWxlLT5zZXRXaWR0aChMZW5ndGgoZnJhbWVSZWN0LndpZHRo
KCksIEZpeGVkKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnVsbFNj
cmVlbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGdWxs
U2NyZWVuLmgJKHJldmlzaW9uIDExMTM2OSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGdWxsU2NyZWVuLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBzZXRQbGFjZWhvbGRlcihSZW5kZXJCbG9jayopOwogICAgIFJlbmRlckJs
b2NrKiBwbGFjZWhvbGRlcigpIHsgcmV0dXJuIG1fcGxhY2Vob2xkZXI7IH0KLSAgICB2b2lkIGNy
ZWF0ZVBsYWNlaG9sZGVyKFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBJbnRSZWN0JiBm
cmFtZVJlY3QpOworICAgIHZvaWQgY3JlYXRlUGxhY2Vob2xkZXIoUGFzc1JlZlB0cjxSZW5kZXJT
dHlsZT4sIGNvbnN0IExheW91dFJlY3QmIGZyYW1lUmVjdCk7CiAKIAogICAgIHN0YXRpYyBSZW5k
ZXJPYmplY3QqIHdyYXBSZW5kZXJlcihSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBEb2N1bWVudCop
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmNw
cAkocmV2aXNpb24gMTExMzY5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckhU
TUxDYW52YXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgUmVuZGVy
SFRNTENhbnZhczo6Y2FudmFzU2l6ZUNoYW5nZWQKICAgICBpZiAoIXByZWZlcnJlZExvZ2ljYWxX
aWR0aHNEaXJ0eSgpKQogICAgICAgICBzZXRQcmVmZXJyZWRMb2dpY2FsV2lkdGhzRGlydHkodHJ1
ZSk7CiAKLSAgICBJbnRTaXplIG9sZFNpemUgPSBzaXplKCk7CisgICAgTGF5b3V0U2l6ZSBvbGRT
aXplID0gc2l6ZSgpOwogICAgIGNvbXB1dGVMb2dpY2FsV2lkdGgoKTsKICAgICBjb21wdXRlTG9n
aWNhbEhlaWdodCgpOwogICAgIGlmIChvbGRTaXplID09IHNpemUoKSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJRnJhbWUuY3BwCShyZXZpc2lvbiAxMTEzNjkpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySUZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTcsNyArNTcsNyBAQCB2b2lkIFJlbmRlcklGcmFtZTo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQo
CiAgICAgICAgIGlmICghdmlldykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgaW50IGJv
cmRlciA9IGJvcmRlclRvcCgpICsgYm9yZGVyQm90dG9tKCk7Ci0gICAgICAgIHNldEhlaWdodCht
YXgoaGVpZ2h0KCksIHZpZXctPmNvbnRlbnRzSGVpZ2h0KCkgKyBib3JkZXIpKTsKKyAgICAgICAg
c2V0SGVpZ2h0KG1heDxMYXlvdXRVbml0PihoZWlnaHQoKSwgdmlldy0+Y29udGVudHNIZWlnaHQo
KSArIGJvcmRlcikpOwogICAgIH0KIH0KIApAQCAtNzUsNyArNzUsNyBAQCB2b2lkIFJlbmRlcklG
cmFtZTo6Y29tcHV0ZUxvZ2ljYWxXaWR0aCgpCiAgICAgICAgIGlmICghdmlldykKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgTGF5b3V0VW5pdCBib3JkZXIgPSBib3JkZXJMZWZ0KCkgKyBi
b3JkZXJSaWdodCgpOwotICAgICAgICBzZXRXaWR0aChtYXgod2lkdGgoKSwgdmlldy0+Y29udGVu
dHNXaWR0aCgpICsgYm9yZGVyKSk7CisgICAgICAgIHNldFdpZHRoKG1heDxMYXlvdXRVbml0Pih3
aWR0aCgpLCB2aWV3LT5jb250ZW50c1dpZHRoKCkgKyBib3JkZXIpKTsKICAgICB9CiB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAkocmV2aXNpb24gMTEx
MzY5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQgUmVuZGVySW1hZ2U6OmltYWdlQ2hhbmdl
ZChXcmFwcGVkSW0KICAgICBpbWFnZURpbWVuc2lvbnNDaGFuZ2VkKGltYWdlU2l6ZUNoYW5nZWQs
IHJlY3QpOwogfQogCi1ib29sIFJlbmRlckltYWdlOjp1cGRhdGVJbnRyaW5zaWNTaXplSWZOZWVk
ZWQoY29uc3QgTGF5b3V0U2l6ZSYgbmV3U2l6ZSwgYm9vbCBpbWFnZVNpemVDaGFuZ2VkKQorYm9v
bCBSZW5kZXJJbWFnZTo6dXBkYXRlSW50cmluc2ljU2l6ZUlmTmVlZGVkKGNvbnN0IEludFNpemUm
IG5ld1NpemUsIGJvb2wgaW1hZ2VTaXplQ2hhbmdlZCkKIHsKICAgICBpZiAobmV3U2l6ZSA9PSBp
bnRyaW5zaWNTaXplKCkgJiYgIWltYWdlU2l6ZUNoYW5nZWQpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTQxNiwxOCArNDE2LDE5IEBAIHZvaWQgUmVuZGVySW1hZ2U6OmFyZWFFbGVtZW50Rm9j
dXNDaGFuZ2UKIAogdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRJbnRvUmVjdChHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIHJlY3QpCiB7Ci0gICAgaWYgKCFtX2ltYWdl
UmVzb3VyY2UtPmhhc0ltYWdlKCkgfHwgbV9pbWFnZVJlc291cmNlLT5lcnJvck9jY3VycmVkKCkg
fHwgcmVjdC53aWR0aCgpIDw9IDAgfHwgcmVjdC5oZWlnaHQoKSA8PSAwKQorICAgIEludFJlY3Qg
YWxpZ25lZFJlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KHJlY3QpOworICAgIGlmICghbV9pbWFn
ZVJlc291cmNlLT5oYXNJbWFnZSgpIHx8IG1faW1hZ2VSZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgp
IHx8IGFsaWduZWRSZWN0LndpZHRoKCkgPD0gMCB8fCBhbGlnbmVkUmVjdC5oZWlnaHQoKSA8PSAw
KQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8SW1hZ2U+IGltZyA9IG1faW1hZ2VSZXNv
dXJjZS0+aW1hZ2UocmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKKyAgICBSZWZQdHI8SW1h
Z2U+IGltZyA9IG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2UoYWxpZ25lZFJlY3Qud2lkdGgoKSwgYWxp
Z25lZFJlY3QuaGVpZ2h0KCkpOwogICAgIGlmICghaW1nIHx8IGltZy0+aXNOdWxsKCkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIEhUTUxJbWFnZUVsZW1lbnQqIGltYWdlRWx0ID0gKG5vZGUoKSAm
JiBub2RlKCktPmhhc1RhZ05hbWUoaW1nVGFnKSkgPyBzdGF0aWNfY2FzdDxIVE1MSW1hZ2VFbGVt
ZW50Kj4obm9kZSgpKSA6IDA7CiAgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0
b3IgPSBpbWFnZUVsdCA/IGltYWdlRWx0LT5jb21wb3NpdGVPcGVyYXRvcigpIDogQ29tcG9zaXRl
U291cmNlT3ZlcjsKICAgICBJbWFnZSogaW1hZ2UgPSBtX2ltYWdlUmVzb3VyY2UtPmltYWdlKCku
Z2V0KCk7Ci0gICAgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGluZyA9IHNob3VsZFBhaW50QXRMb3dR
dWFsaXR5KGNvbnRleHQsIGltYWdlLCBpbWFnZSwgcmVjdC5zaXplKCkpOwotICAgIGNvbnRleHQt
PmRyYXdJbWFnZShtX2ltYWdlUmVzb3VyY2UtPmltYWdlKHJlY3Qud2lkdGgoKSwgcmVjdC5oZWln
aHQoKSkuZ2V0KCksIHN0eWxlKCktPmNvbG9yU3BhY2UoKSwgcmVjdCwgY29tcG9zaXRlT3BlcmF0
b3IsIHVzZUxvd1F1YWxpdHlTY2FsaW5nKTsKKyAgICBib29sIHVzZUxvd1F1YWxpdHlTY2FsaW5n
ID0gc2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoY29udGV4dCwgaW1hZ2UsIGltYWdlLCBhbGlnbmVk
UmVjdC5zaXplKCkpOworICAgIGNvbnRleHQtPmRyYXdJbWFnZShtX2ltYWdlUmVzb3VyY2UtPmlt
YWdlKGFsaWduZWRSZWN0LndpZHRoKCksIGFsaWduZWRSZWN0LmhlaWdodCgpKS5nZXQoKSwgc3R5
bGUoKS0+Y29sb3JTcGFjZSgpLCBhbGlnbmVkUmVjdCwgY29tcG9zaXRlT3BlcmF0b3IsIHVzZUxv
d1F1YWxpdHlTY2FsaW5nKTsKIH0KIAogYm9vbCBSZW5kZXJJbWFnZTo6YmFja2dyb3VuZElzT2Jz
Y3VyZWQoKSBjb25zdApAQCAtNTI1LDggKzUyNiw4IEBAIExheW91dFVuaXQgUmVuZGVySW1hZ2U6
OmNvbXB1dGVSZXBsYWNlZEwKICAgICAgICAgaWYgKGNhY2hlZEltYWdlICYmIGNhY2hlZEltYWdl
LT5pbWFnZSgpKSB7CiAgICAgICAgICAgICBjb250YWluZXJTaXplID0gY2FjaGVkSW1hZ2UtPmlt
YWdlKCktPnNpemUoKTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdW5uZWNlc3Nhcnkg
cm91bmRpbmcgd2hlbiBsYXlvdXQgaXMgb2ZmIGludHM6IHdlYmtpdC5vcmcvYi82MzY1NgotICAg
ICAgICAgICAgY29udGFpbmVyU2l6ZS5zZXRXaWR0aChzdGF0aWNfY2FzdDxMYXlvdXRVbml0Pihj
b250YWluZXJTaXplLndpZHRoKCkgKiBzdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpKTsKLSAgICAg
ICAgICAgIGNvbnRhaW5lclNpemUuc2V0SGVpZ2h0KHN0YXRpY19jYXN0PExheW91dFVuaXQ+KGNv
bnRhaW5lclNpemUuaGVpZ2h0KCkgKiBzdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpKTsKKyAgICAg
ICAgICAgIGNvbnRhaW5lclNpemUuc2V0V2lkdGgocm91bmRUb0ludChjb250YWluZXJTaXplLndp
ZHRoKCkgKiBzdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpKTsKKyAgICAgICAgICAgIGNvbnRhaW5l
clNpemUuc2V0SGVpZ2h0KHJvdW5kVG9JbnQoY29udGFpbmVyU2l6ZS5oZWlnaHQoKSAqIHN0eWxl
KCktPmVmZmVjdGl2ZVpvb20oKSkpOwogICAgICAgICB9CiAgICAgfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaAkocmV2aXNpb24gMTExMzY5KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTk0LDcg
Kzk0LDcgQEAgcHJpdmF0ZToKIAogICAgIEludFNpemUgaW1hZ2VTaXplRm9yRXJyb3IoQ2FjaGVk
SW1hZ2UqKSBjb25zdDsKICAgICB2b2lkIGltYWdlRGltZW5zaW9uc0NoYW5nZWQoYm9vbCBpbWFn
ZVNpemVDaGFuZ2VkLCBjb25zdCBJbnRSZWN0KiA9IDApOwotICAgIGJvb2wgdXBkYXRlSW50cmlu
c2ljU2l6ZUlmTmVlZGVkKGNvbnN0IExheW91dFNpemUmLCBib29sIGltYWdlU2l6ZUNoYW5nZWQp
OworICAgIGJvb2wgdXBkYXRlSW50cmluc2ljU2l6ZUlmTmVlZGVkKGNvbnN0IEludFNpemUmLCBi
b29sIGltYWdlU2l6ZUNoYW5nZWQpOwogCiAgICAgdm9pZCBwYWludEFyZWFFbGVtZW50Rm9jdXNS
aW5nKFBhaW50SW5mbyYpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VmlkZW8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJW
aWRlby5jcHAJKHJldmlzaW9uIDExMTM2OSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJWaWRlby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Niw3ICsxNjYsNyBAQCBJbnRSZWN0
IFJlbmRlclZpZGVvOjp2aWRlb0JveCgpIGNvbnN0CiAgICAgZWxzZQogICAgICAgICBlbGVtZW50
U2l6ZSA9IGludHJpbnNpY1NpemUoKTsKIAotICAgIEludFJlY3QgY29udGVudFJlY3QgPSBjb250
ZW50Qm94UmVjdCgpOworICAgIEludFJlY3QgY29udGVudFJlY3QgPSBwaXhlbFNuYXBwZWRJbnRS
ZWN0KGNvbnRlbnRCb3hSZWN0KCkpOwogICAgIGlmIChlbGVtZW50U2l6ZS5pc0VtcHR5KCkgfHwg
Y29udGVudFJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gSW50UmVjdCgpOwogCkBAIC0y
MjUsOSArMjI1LDkgQEAgdm9pZCBSZW5kZXJWaWRlbzo6cGFpbnRSZXBsYWNlZChQYWludEluZgog
ICAgIGlmIChkaXNwbGF5aW5nUG9zdGVyKQogICAgICAgICBwYWludEludG9SZWN0KHBhaW50SW5m
by5jb250ZXh0LCByZWN0KTsKICAgICBlbHNlIGlmIChkb2N1bWVudCgpLT52aWV3KCkgJiYgZG9j
dW1lbnQoKS0+dmlldygpLT5wYWludEJlaGF2aW9yKCkgJiBQYWludEJlaGF2aW9yRmxhdHRlbkNv
bXBvc2l0aW5nTGF5ZXJzKQotICAgICAgICBtZWRpYVBsYXllci0+cGFpbnRDdXJyZW50RnJhbWVJ
bkNvbnRleHQocGFpbnRJbmZvLmNvbnRleHQsIHJlY3QpOworICAgICAgICBtZWRpYVBsYXllci0+
cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQocGFpbnRJbmZvLmNvbnRleHQsIHBpeGVsU25hcHBl
ZEludFJlY3QocmVjdCkpOwogICAgIGVsc2UKLSAgICAgICAgbWVkaWFQbGF5ZXItPnBhaW50KHBh
aW50SW5mby5jb250ZXh0LCByZWN0KTsKKyAgICAgICAgbWVkaWFQbGF5ZXItPnBhaW50KHBhaW50
SW5mby5jb250ZXh0LCBwaXhlbFNuYXBwZWRJbnRSZWN0KHJlY3QpKTsKIH0KIAogdm9pZCBSZW5k
ZXJWaWRlbzo6bGF5b3V0KCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJX
aWRnZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJX
aWRnZXQuY3BwCShyZXZpc2lvbiAxMTEzNjkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyV2lkZ2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQwLDEyICsxNDAsMjAgQEAgUmVu
ZGVyV2lkZ2V0Ojp+UmVuZGVyV2lkZ2V0KCkKICAgICBjbGVhcldpZGdldCgpOwogfQogCi1ib29s
IFJlbmRlcldpZGdldDo6c2V0V2lkZ2V0R2VvbWV0cnkoY29uc3QgSW50UmVjdCYgZnJhbWUpCisv
LyBXaWRnZXRzIGFyZSBhbHdheXMgcGxhY2VkIG9uIGludGVnZXIgYm91bmRhcmllcywgc28gcm91
bmRpbmcgdGhlIHNpemUgaXMgYWN0dWFsbHkKKy8vIHRoZSBkZXNpcmVkIGJlaGF2aW9yLiBUaGlz
IGZ1bmN0aW9uIGlzIGhlcmUgYmVjYXVzZSBpdCdzIG90aGVyd2lzZSBzZWxkb20gd2hhdCB3ZQor
Ly8gd2FudCB0byBkbyB3aXRoIGEgTGF5b3V0UmVjdC4KK3N0YXRpYyBpbmxpbmUgSW50UmVjdCBy
b3VuZGVkSW50UmVjdChjb25zdCBMYXlvdXRSZWN0JiByZWN0KQoreworICAgIHJldHVybiBJbnRS
ZWN0KHJvdW5kZWRJbnRQb2ludChyZWN0LmxvY2F0aW9uKCkpLCByb3VuZGVkSW50U2l6ZShyZWN0
LnNpemUoKSkpOworfQorCitib29sIFJlbmRlcldpZGdldDo6c2V0V2lkZ2V0R2VvbWV0cnkoY29u
c3QgTGF5b3V0UmVjdCYgZnJhbWUpCiB7CiAgICAgaWYgKCFub2RlKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIEludFJlY3QgY2xpcFJlY3QgPSBlbmNsb3NpbmdMYXllcigpLT5jaGls
ZHJlbkNsaXBSZWN0KCk7CisgICAgSW50UmVjdCBjbGlwUmVjdCA9IHJvdW5kZWRJbnRSZWN0KGVu
Y2xvc2luZ0xheWVyKCktPmNoaWxkcmVuQ2xpcFJlY3QoKSk7CiAgICAgYm9vbCBjbGlwQ2hhbmdl
ZCA9IG1fY2xpcFJlY3QgIT0gY2xpcFJlY3Q7CiAgICAgYm9vbCBib3VuZHNDaGFuZ2VkID0gbV93
aWRnZXQtPmZyYW1lUmVjdCgpICE9IGZyYW1lOwogCkBAIC0xNTYsNyArMTY0LDcgQEAgYm9vbCBS
ZW5kZXJXaWRnZXQ6OnNldFdpZGdldEdlb21ldHJ5KGNvbgogCiAgICAgUmVuZGVyV2lkZ2V0UHJv
dGVjdG9yIHByb3RlY3Rvcih0aGlzKTsKICAgICBSZWZQdHI8Tm9kZT4gcHJvdGVjdGVkTm9kZShu
b2RlKCkpOwotICAgIG1fd2lkZ2V0LT5zZXRGcmFtZVJlY3QoZnJhbWUpOworICAgIG1fd2lkZ2V0
LT5zZXRGcmFtZVJlY3Qocm91bmRlZEludFJlY3QoZnJhbWUpKTsKICAgICAKICNpZiBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgaWYgKGhhc0xheWVyKCkgJiYgbGF5ZXIoKS0+aXND
b21wb3NpdGVkKCkpCkBAIC0xNjgsMTEgKzE3NiwxMSBAQCBib29sIFJlbmRlcldpZGdldDo6c2V0
V2lkZ2V0R2VvbWV0cnkoY29uCiAKIGJvb2wgUmVuZGVyV2lkZ2V0Ojp1cGRhdGVXaWRnZXRHZW9t
ZXRyeSgpCiB7Ci0gICAgSW50UmVjdCBjb250ZW50Qm94ID0gY29udGVudEJveFJlY3QoKTsKKyAg
ICBMYXlvdXRSZWN0IGNvbnRlbnRCb3ggPSBjb250ZW50Qm94UmVjdCgpOwogICAgIGlmICghbV93
aWRnZXQtPnRyYW5zZm9ybXNBZmZlY3RGcmFtZVJlY3QoKSkKICAgICAgICAgcmV0dXJuIHNldFdp
ZGdldEdlb21ldHJ5KGFic29sdXRlQ29udGVudEJveCgpKTsKIAotICAgIEludFJlY3QgYWJzb2x1
dGVDb250ZW50Qm94ID0gSW50UmVjdChsb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UXVhZChjb250
ZW50Qm94KSkuYm91bmRpbmdCb3goKSk7CisgICAgTGF5b3V0UmVjdCBhYnNvbHV0ZUNvbnRlbnRC
b3gobG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFF1YWQoY29udGVudEJveCkpLmJvdW5kaW5nQm94
KCkpOwogICAgIGlmIChtX3dpZGdldC0+aXNGcmFtZVZpZXcoKSkgewogICAgICAgICBjb250ZW50
Qm94LnNldExvY2F0aW9uKGFic29sdXRlQ29udGVudEJveC5sb2NhdGlvbigpKTsKICAgICAgICAg
cmV0dXJuIHNldFdpZGdldEdlb21ldHJ5KGNvbnRlbnRCb3gpOwpAQCAtMjc2LDExICsyODQsMTIg
QEAgdm9pZCBSZW5kZXJXaWRnZXQ6OnBhaW50KFBhaW50SW5mbyYgcGFpbgogICAgIGlmIChtX3dp
ZGdldCkgewogICAgICAgICAvLyBUZWxsIHRoZSB3aWRnZXQgdG8gcGFpbnQgbm93LiAgVGhpcyBp
cyB0aGUgb25seSB0aW1lIHRoZSB3aWRnZXQgaXMgYWxsb3dlZAogICAgICAgICAvLyB0byBwYWlu
dCBpdHNlbGYuICBUaGF0IHdheSBpdCB3aWxsIGNvbXBvc2l0ZSBwcm9wZXJseSB3aXRoIHotaW5k
ZXhlZCBsYXllcnMuCi0gICAgICAgIExheW91dFBvaW50IHdpZGdldExvY2F0aW9uID0gbV93aWRn
ZXQtPmZyYW1lUmVjdCgpLmxvY2F0aW9uKCk7Ci0gICAgICAgIExheW91dFBvaW50IHBhaW50TG9j
YXRpb24oYWRqdXN0ZWRQYWludE9mZnNldC54KCkgKyBib3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVm
dCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSArIGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgp
KTsKLSAgICAgICAgTGF5b3V0UmVjdCBwYWludFJlY3QgPSBwYWludEluZm8ucmVjdDsKKyAgICAg
ICAgSW50UG9pbnQgd2lkZ2V0TG9jYXRpb24gPSBtX3dpZGdldC0+ZnJhbWVSZWN0KCkubG9jYXRp
b24oKTsKKyAgICAgICAgSW50UG9pbnQgcGFpbnRMb2NhdGlvbihyb3VuZFRvSW50KGFkanVzdGVk
UGFpbnRPZmZzZXQueCgpICsgYm9yZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQoKSksCisgICAgICAg
ICAgICByb3VuZFRvSW50KGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgYm9yZGVyVG9wKCkgKyBw
YWRkaW5nVG9wKCkpKTsKKyAgICAgICAgSW50UmVjdCBwYWludFJlY3QgPSBwYWludEluZm8ucmVj
dDsKIAotICAgICAgICBMYXlvdXRTaXplIHdpZGdldFBhaW50T2Zmc2V0ID0gcGFpbnRMb2NhdGlv
biAtIHdpZGdldExvY2F0aW9uOworICAgICAgICBJbnRTaXplIHdpZGdldFBhaW50T2Zmc2V0ID0g
cGFpbnRMb2NhdGlvbiAtIHdpZGdldExvY2F0aW9uOwogICAgICAgICAvLyBXaGVuIHBhaW50aW5n
IHdpZGdldHMgaW50byBjb21wb3NpdGluZyBsYXllcnMsIHR4IGFuZCB0eSBhcmUgcmVsYXRpdmUg
dG8gdGhlIGVuY2xvc2luZyBjb21wb3NpdGluZyBsYXllciwKICAgICAgICAgLy8gbm90IHRoZSBy
b290LiBJbiB0aGlzIGNhc2UsIHNoaWZ0IHRoZSBDVE0gYW5kIGFkanVzdCB0aGUgcGFpbnRSZWN0
IHRvIGJlIHJvb3QtcmVsYXRpdmUgdG8gZml4IHBsdWctaW4gZHJhd2luZy4KICAgICAgICAgaWYg
KCF3aWRnZXRQYWludE9mZnNldC5pc1plcm8oKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlcldpZGdldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJXaWRnZXQuaAkocmV2aXNpb24gMTExMzY5KQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcldpZGdldC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGlvblN0YXRlKFNlbGVjdGlvblN0
YXRlKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0T3ZlcmxhcFRlc3RSZXN1bHQoYm9vbCk7CiAKLSAg
ICBib29sIHNldFdpZGdldEdlb21ldHJ5KGNvbnN0IEludFJlY3QmKTsKKyAgICBib29sIHNldFdp
ZGdldEdlb21ldHJ5KGNvbnN0IExheW91dFJlY3QmKTsKICAgICBib29sIHVwZGF0ZVdpZGdldEdl
b21ldHJ5KCk7CiAKICAgICBSZWZQdHI8V2lkZ2V0PiBtX3dpZGdldDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>