<?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>62130</bug_id>
          
          <creation_ts>2011-06-06 10:58:55 -0700</creation_ts>
          <short_desc>Convert RenderBox::absoluteRects to IntPoint</short_desc>
          <delta_ts>2011-06-07 17:30:26 -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>
          <dependson>62182</dependson>
          <blocked>60318</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Emil A Eklund">eae</reporter>
          <assigned_to name="Emil A Eklund">eae</assigned_to>
          <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>leviw</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thakis</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>415897</commentid>
    <comment_count>0</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-06-06 10:58:55 -0700</bug_when>
    <thetext>Ongoing tx, ty removal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415961</commentid>
    <comment_count>1</comment_count>
      <attachid>96113</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-06-06 13:02:53 -0700</bug_when>
    <thetext>Created attachment 96113
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415990</commentid>
    <comment_count>2</comment_count>
      <attachid>96113</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-06 14:07:28 -0700</bug_when>
    <thetext>Comment on attachment 96113
Patch

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

&gt; Source/WebCore/dom/Node.cpp:842
&gt; -    renderer()-&gt;absoluteRects(rects, absPos.x(), absPos.y());
&gt; +    renderer()-&gt;absoluteRects(rects, flooredIntPoint(absPos));

Confused.  Is that what the old behavior did?

&gt; Source/WebCore/rendering/RenderBlock.cpp:5692
&gt; +        continuation()-&gt;absoluteRects(rects, accumulatedOffset - toSize(location() +
&gt; +                inlineElementContinuation()-&gt;containingBlock()-&gt;location()));

I might have broken this out into a local IntPOint variable.  But looks fine.

&gt; Source/WebCore/rendering/RenderInline.cpp:474
&gt; +            rects.append(enclosingIntRect(FloatRect(accumulatedOffset + IntSize(curr-&gt;x(), curr-&gt;y()), IntSize(curr-&gt;width(), curr-&gt;height()))));

curr-&gt;location()?  curr-&gt;size()?

&gt; Source/WebCore/rendering/RenderText.cpp:275
&gt; +        rects.append(enclosingIntRect(FloatRect(accumulatedOffset + IntSize(box-&gt;x(), box-&gt;y()), IntSize(box-&gt;x(), box-&gt;y()))));

you meant box width/height.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416028</commentid>
    <comment_count>3</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-06-06 14:50:50 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; &gt; Source/WebCore/dom/Node.cpp:842
&gt; &gt; -    renderer()-&gt;absoluteRects(rects, absPos.x(), absPos.y());
&gt; &gt; +    renderer()-&gt;absoluteRects(rects, flooredIntPoint(absPos));
&gt; 
&gt; Confused.  Is that what the old behavior did?

Yeah, before there was an implicit cast from float to int, now it&apos;s explicit.

&gt; &gt; Source/WebCore/rendering/RenderInline.cpp:474
&gt; &gt; +            rects.append(enclosingIntRect(FloatRect(accumulatedOffset + IntSize(curr-&gt;x(), curr-&gt;y()), IntSize(curr-&gt;width(), curr-&gt;height()))));
&gt; 
&gt; curr-&gt;location()?  curr-&gt;size()?

Sadly we don&apos;t have InlineBox::size yet. Changed x, y to topLeft which is the location equivalent for InlineBox.

&gt; 
&gt; &gt; Source/WebCore/rendering/RenderText.cpp:275
&gt; &gt; +        rects.append(enclosingIntRect(FloatRect(accumulatedOffset + IntSize(box-&gt;x(), box-&gt;y()), IntSize(box-&gt;x(), box-&gt;y()))));
&gt; 
&gt; you meant box width/height.

Good catch, thank you!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416030</commentid>
    <comment_count>4</comment_count>
      <attachid>96129</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-06-06 14:51:40 -0700</bug_when>
    <thetext>Created attachment 96129
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416046</commentid>
    <comment_count>5</comment_count>
      <attachid>96129</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-06 15:10:31 -0700</bug_when>
    <thetext>Comment on attachment 96129
Patch

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

&gt; Source/WebCore/rendering/RenderInline.cpp:474
&gt; +            rects.append(enclosingIntRect(FloatRect(accumulatedOffset + curr-&gt;topLeft(), IntSize(curr-&gt;width(), curr-&gt;height()))));

It might be worth adding a InlineBox::size(), even just for thsi one caller.

&gt; Source/WebCore/rendering/RenderText.cpp:275
&gt; +        rects.append(enclosingIntRect(FloatRect(accumulatedOffset + box-&gt;topLeft(), IntSize(box-&gt;width(), box-&gt;height()))));

two callers. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416064</commentid>
    <comment_count>6</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-06-06 15:27:00 -0700</bug_when>
    <thetext>&gt; It might be worth adding a InlineBox::size(), even just for thsi one caller.
&gt; ...
&gt; two callers. :)

Good point, will fix before landing.

Thanks for the review Eric!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416074</commentid>
    <comment_count>7</comment_count>
      <attachid>96141</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-06-06 15:40:11 -0700</bug_when>
    <thetext>Created attachment 96141
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416119</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-06-06 16:44:03 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 96141:

http/tests/websocket/tests/frame-length-overflow.html bug 61507 (author: abarth@webkit.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416120</commentid>
    <comment_count>9</comment_count>
      <attachid>96141</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-06-06 16:45:35 -0700</bug_when>
    <thetext>Comment on attachment 96141
Patch for landing

Clearing flags on attachment: 96141

Committed r88202: &lt;http://trac.webkit.org/changeset/88202&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416121</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-06-06 16:45:40 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416268</commentid>
    <comment_count>11</comment_count>
    <who name="Nico Weber">thakis</who>
    <bug_when>2011-06-06 20:55:19 -0700</bug_when>
    <thetext>This broke the clang build thusly:

In file included from third_party/WebKit/Source/WebCore/rendering/svg/RenderSVGContainer.h:28:
third_party/WebKit/Source/WebCore/rendering/svg/RenderSVGModelObject.h:58:18:error: &apos;WebCore::RenderSVGModelObject::absoluteRects&apos; hides overloaded virtual function [-Werror,-Woverloaded-virtual]
    virtual void absoluteRects(Vector&lt;IntRect&gt;&amp;, int tx, int ty);
                 ^
third_party/WebKit/Source/WebCore/rendering/RenderObject.h:593:18: note: hidden overloaded virtual function &apos;WebCore::RenderObject::absoluteRects&apos; declared here
    virtual void absoluteRects(Vector&lt;IntRect&gt;&amp;, const IntPoint&amp;) { }
                 ^


Please be careful when doing refactorings. We have a chromium bot upstream (the clang bot) that catches some of the problems (as in this case), but it doesn&apos;t catch everything.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416622</commentid>
    <comment_count>12</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-06-07 10:39:43 -0700</bug_when>
    <thetext>Thanks Nico! I&apos;ll be more careful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416624</commentid>
    <comment_count>13</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-06-07 10:40:35 -0700</bug_when>
    <thetext>Reopening as the patch got reverted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416783</commentid>
    <comment_count>14</comment_count>
      <attachid>96296</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-06-07 14:21:29 -0700</bug_when>
    <thetext>Created attachment 96296
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416956</commentid>
    <comment_count>15</comment_count>
      <attachid>96296</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-07 17:30:20 -0700</bug_when>
    <thetext>Comment on attachment 96296
Patch

Clearing flags on attachment: 96296

Committed r88297: &lt;http://trac.webkit.org/changeset/88297&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416957</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-07 17:30:26 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96113</attachid>
            <date>2011-06-06 13:02:53 -0700</date>
            <delta_ts>2011-06-06 14:51:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62130-20110606130252.patch</filename>
            <type>text/plain</type>
            <size>12512</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg4MTgzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTEtMDYtMDYgIEVtaWwgQSBF
a2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIENvbnZlcnQgUmVuZGVyQm94OjphYnNvbHV0ZVJlY3RzIHRvIElu
dFBvaW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
MjEzMAorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBk
b20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpoYXNOb25FbXB0eUJvdW5kaW5n
Qm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQmxvY2s6OmFic29sdXRlUmVjdHMpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJCbG9jay5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQm94OjphYnNvbHV0ZVJlY3RzKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmFic29sdXRlUmVjdHMpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6YWJzb2x1dGVCb3VuZGlu
Z0JveFJlY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck9iamVjdDo6YWJzb2x1dGVSZWN0cyk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6YWJzb2x1
dGVSZWN0cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3Ojph
YnNvbHV0ZVJlY3RzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5oOgorCiAyMDEx
LTA2LTA2ICBFbWlsIEEgRWtsdW5kICA8ZWFlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAJKHJldmlzaW9uIDg3OTMy
KQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Mzks
NyArODM5LDcgQEAgYm9vbCBOb2RlOjpoYXNOb25FbXB0eUJvdW5kaW5nQm94KCkgY29ucwogCiAg
ICAgVmVjdG9yPEludFJlY3Q+IHJlY3RzOwogICAgIEZsb2F0UG9pbnQgYWJzUG9zID0gcmVuZGVy
ZXIoKS0+bG9jYWxUb0Fic29sdXRlKCk7Ci0gICAgcmVuZGVyZXIoKS0+YWJzb2x1dGVSZWN0cyhy
ZWN0cywgYWJzUG9zLngoKSwgYWJzUG9zLnkoKSk7CisgICAgcmVuZGVyZXIoKS0+YWJzb2x1dGVS
ZWN0cyhyZWN0cywgZmxvb3JlZEludFBvaW50KGFic1BvcykpOwogICAgIHNpemVfdCBuID0gcmVj
dHMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbjsgKytpKQogICAgICAgICBp
ZiAoIXJlY3RzW2ldLmlzRW1wdHkoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcAkocmV2aXNpb24gODc5MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Njc4LDcgKzU2NzgsNyBAQCB2
b2lkIFJlbmRlckJsb2NrOjpzZXRQYWdlTG9naWNhbE9mZnNldChpCiAgICAgbV9yYXJlRGF0YS0+
bV9wYWdlTG9naWNhbE9mZnNldCA9IGxvZ2ljYWxPZmZzZXQ7CiB9CiAKLXZvaWQgUmVuZGVyQmxv
Y2s6OmFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgaW50IHR4LCBpbnQgdHkp
Cit2b2lkIFJlbmRlckJsb2NrOjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMs
IGNvbnN0IEludFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkKIHsKICAgICAvLyBGb3IgYmxvY2tz
IGluc2lkZSBpbmxpbmVzLCB3ZSBnbyBhaGVhZCBhbmQgaW5jbHVkZSBtYXJnaW5zIHNvIHRoYXQg
d2UgcnVuIHJpZ2h0IHVwIHRvIHRoZQogICAgIC8vIGlubGluZSBib3hlcyBhYm92ZSBhbmQgYmVs
b3cgdXMgKHRodXMgZ2V0dGluZyBtZXJnZWQgd2l0aCB0aGVtIHRvIGZvcm0gYSBzaW5nbGUgaXJy
ZWd1bGFyCkBAIC01Njg2LDEzICs1Njg2LDEyIEBAIHZvaWQgUmVuZGVyQmxvY2s6OmFic29sdXRl
UmVjdHMoVmVjdG9yPEkKICAgICBpZiAoaXNBbm9ueW1vdXNCbG9ja0NvbnRpbnVhdGlvbigpKSB7
CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIHdyb25nIGZvciBibG9jay1mbG93cyB0aGF0IGFy
ZSBob3Jpem9udGFsLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDY3ODEKLSAgICAgICAgcmVjdHMuYXBwZW5kKEludFJlY3QodHgsIHR5IC0gY29s
bGFwc2VkTWFyZ2luQmVmb3JlKCksCisgICAgICAgIHJlY3RzLmFwcGVuZChJbnRSZWN0KGFjY3Vt
dWxhdGVkT2Zmc2V0LngoKSwgYWNjdW11bGF0ZWRPZmZzZXQueSgpIC0gY29sbGFwc2VkTWFyZ2lu
QmVmb3JlKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoKCksIGhlaWdodCgp
ICsgY29sbGFwc2VkTWFyZ2luQmVmb3JlKCkgKyBjb2xsYXBzZWRNYXJnaW5BZnRlcigpKSk7Ci0g
ICAgICAgIGNvbnRpbnVhdGlvbigpLT5hYnNvbHV0ZVJlY3RzKHJlY3RzLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0eCAtIHgoKSArIGlubGluZUVsZW1lbnRDb250aW51
YXRpb24oKS0+Y29udGFpbmluZ0Jsb2NrKCktPngoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdHkgLSB5KCkgKyBpbmxpbmVFbGVtZW50Q29udGludWF0aW9uKCktPmNv
bnRhaW5pbmdCbG9jaygpLT55KCkpOworICAgICAgICBjb250aW51YXRpb24oKS0+YWJzb2x1dGVS
ZWN0cyhyZWN0cywgYWNjdW11bGF0ZWRPZmZzZXQgLSB0b1NpemUobG9jYXRpb24oKSArCisgICAg
ICAgICAgICAgICAgaW5saW5lRWxlbWVudENvbnRpbnVhdGlvbigpLT5jb250YWluaW5nQmxvY2so
KS0+bG9jYXRpb24oKSkpOwogICAgIH0gZWxzZQotICAgICAgICByZWN0cy5hcHBlbmQoSW50UmVj
dCh0eCwgdHksIHdpZHRoKCksIGhlaWdodCgpKSk7CisgICAgICAgIHJlY3RzLmFwcGVuZChJbnRS
ZWN0KGFjY3VtdWxhdGVkT2Zmc2V0LCBzaXplKCkpKTsKIH0KIAogdm9pZCBSZW5kZXJCbG9jazo6
YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAkocmV2aXNpb24gODc5MzIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNjI1LDcgKzYy
NSw3IEBAIHByaXZhdGU6CiAgICAgaW50IGxvZ2ljYWxMZWZ0U2VsZWN0aW9uT2Zmc2V0KFJlbmRl
ckJsb2NrKiByb290QmxvY2ssIGludCBwb3NpdGlvbik7CiAgICAgaW50IGxvZ2ljYWxSaWdodFNl
bGVjdGlvbk9mZnNldChSZW5kZXJCbG9jayogcm9vdEJsb2NrLCBpbnQgcG9zaXRpb24pOwogICAg
IAotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGludCB0
eCwgaW50IHR5KTsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVj
dD4mLCBjb25zdCBJbnRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpOwogICAgIHZpcnR1YWwgdm9p
ZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+Jik7CiAKICAgICBpbnQgZGVzaXJlZENv
bHVtbldpZHRoKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmNwcAkocmV2aXNpb24gODc5MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDU1LDkgKzQ1NSw5IEBAIHZvaWQgUmVuZGVyQm94
OjpzZXRTY3JvbGxUb3AoaW50IG5ld1RvcCkKICAgICAgICAgbGF5ZXIoKS0+c2Nyb2xsVG9ZT2Zm
c2V0KG5ld1RvcCk7CiB9CiAKLXZvaWQgUmVuZGVyQm94OjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxJ
bnRSZWN0PiYgcmVjdHMsIGludCB0eCwgaW50IHR5KQordm9pZCBSZW5kZXJCb3g6OmFic29sdXRl
UmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgY29uc3QgSW50UG9pbnQmIGFjY3VtdWxhdGVk
T2Zmc2V0KQogewotICAgIHJlY3RzLmFwcGVuZChJbnRSZWN0KHR4LCB0eSwgd2lkdGgoKSwgaGVp
Z2h0KCkpKTsKKyAgICByZWN0cy5hcHBlbmQoSW50UmVjdChhY2N1bXVsYXRlZE9mZnNldCwgc2l6
ZSgpKSk7CiB9CiAKIHZvaWQgUmVuZGVyQm94OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1
YWQ+JiBxdWFkcykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgJKHJldmlz
aW9uIDg3OTMyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMzAsNyArMjMwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgaW50IGNv
bGxhcHNlZE1hcmdpbkJlZm9yZSgpIGNvbnN0IHsgcmV0dXJuIG1hcmdpbkJlZm9yZSgpOyB9CiAg
ICAgdmlydHVhbCBpbnQgY29sbGFwc2VkTWFyZ2luQWZ0ZXIoKSBjb25zdCB7IHJldHVybiBtYXJn
aW5BZnRlcigpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50
UmVjdD4mLCBpbnQgdHgsIGludCB0eSk7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMo
VmVjdG9yPEludFJlY3Q+JiwgY29uc3QgSW50UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KTsKICAg
ICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYpOwogICAgIAog
ICAgIEludFJlY3QgcmVmbGVjdGlvbkJveCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAJKHJldmlzaW9uIDg3OTMyKQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2NSwy
NCArNDY1LDIyIEBAIHZvaWQgUmVuZGVySW5saW5lOjpwYWludChQYWludEluZm8mIHBhaW4KICAg
ICBtX2xpbmVCb3hlcy5wYWludCh0aGlzLCBwYWludEluZm8sIHR4LCB0eSk7CiB9CiAKLXZvaWQg
UmVuZGVySW5saW5lOjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGludCB0
eCwgaW50IHR5KQordm9pZCBSZW5kZXJJbmxpbmU6OmFic29sdXRlUmVjdHMoVmVjdG9yPEludFJl
Y3Q+JiByZWN0cywgY29uc3QgSW50UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KQogewogICAgIGlm
ICghYWx3YXlzQ3JlYXRlTGluZUJveGVzKCkpCi0gICAgICAgIGN1bGxlZElubGluZUFic29sdXRl
UmVjdHModGhpcywgcmVjdHMsIEludFNpemUodHgsIHR5KSk7CisgICAgICAgIGN1bGxlZElubGlu
ZUFic29sdXRlUmVjdHModGhpcywgcmVjdHMsIHRvU2l6ZShhY2N1bXVsYXRlZE9mZnNldCkpOwog
ICAgIGVsc2UgaWYgKElubGluZUZsb3dCb3gqIGN1cnIgPSBmaXJzdExpbmVCb3goKSkgewogICAg
ICAgICBmb3IgKDsgY3VycjsgY3VyciA9IGN1cnItPm5leHRMaW5lQm94KCkpCi0gICAgICAgICAg
ICByZWN0cy5hcHBlbmQoZW5jbG9zaW5nSW50UmVjdChGbG9hdFJlY3QodHggKyBjdXJyLT54KCks
IHR5ICsgY3Vyci0+eSgpLCBjdXJyLT53aWR0aCgpLCBjdXJyLT5oZWlnaHQoKSkpKTsKKyAgICAg
ICAgICAgIHJlY3RzLmFwcGVuZChlbmNsb3NpbmdJbnRSZWN0KEZsb2F0UmVjdChhY2N1bXVsYXRl
ZE9mZnNldCArIEludFNpemUoY3Vyci0+eCgpLCBjdXJyLT55KCkpLCBJbnRTaXplKGN1cnItPndp
ZHRoKCksIGN1cnItPmhlaWdodCgpKSkpKTsKICAgICB9IGVsc2UKLSAgICAgICAgcmVjdHMuYXBw
ZW5kKEludFJlY3QodHgsIHR5LCAwLCAwKSk7CisgICAgICAgIHJlY3RzLmFwcGVuZChJbnRSZWN0
KGFjY3VtdWxhdGVkT2Zmc2V0LCBJbnRTaXplKCkpKTsKIAogICAgIGlmIChjb250aW51YXRpb24o
KSkgewogICAgICAgICBpZiAoY29udGludWF0aW9uKCktPmlzQm94KCkpIHsKICAgICAgICAgICAg
IFJlbmRlckJveCogYm94ID0gdG9SZW5kZXJCb3goY29udGludWF0aW9uKCkpOwotICAgICAgICAg
ICAgY29udGludWF0aW9uKCktPmFic29sdXRlUmVjdHMocmVjdHMsIAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdHggLSBjb250YWluaW5nQmxvY2soKS0+eCgpICsg
Ym94LT54KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eSAt
IGNvbnRhaW5pbmdCbG9jaygpLT55KCkgKyBib3gtPnkoKSk7CisgICAgICAgICAgICBjb250aW51
YXRpb24oKS0+YWJzb2x1dGVSZWN0cyhyZWN0cywgdG9Qb2ludChhY2N1bXVsYXRlZE9mZnNldCAt
IGNvbnRhaW5pbmdCbG9jaygpLT5sb2NhdGlvbigpICsgSW50U2l6ZShib3gtPngoKSwgYm94LT55
KCkpKSk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgY29udGludWF0aW9uKCktPmFic29s
dXRlUmVjdHMocmVjdHMsIHR4IC0gY29udGFpbmluZ0Jsb2NrKCktPngoKSwgdHkgLSBjb250YWlu
aW5nQmxvY2soKS0+eSgpKTsKKyAgICAgICAgICAgIGNvbnRpbnVhdGlvbigpLT5hYnNvbHV0ZVJl
Y3RzKHJlY3RzLCB0b1BvaW50KGFjY3VtdWxhdGVkT2Zmc2V0IC0gY29udGFpbmluZ0Jsb2NrKCkt
PmxvY2F0aW9uKCkpKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbmxpbmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW5saW5lLmgJKHJldmlzaW9uIDg3OTMyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlcklubGluZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGludCBtYXJnaW5TdGFydCgpIGNvbnN0OwogICAgIHZpcnR1YWwgaW50
IG1hcmdpbkVuZCgpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVj
dG9yPEludFJlY3Q+JiwgaW50IHR4LCBpbnQgdHkpOworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0
ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0IEludFBvaW50JiBhY2N1bXVsYXRlZE9mZnNl
dCk7CiAgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mKTsK
IAogICAgIHZpcnR1YWwgSW50U2l6ZSBvZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRlck9iamVjdCos
IGNvbnN0IEludFBvaW50JikgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gODc5MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA5OSw3ICsxMDk5LDcg
QEAgSW50UmVjdCBSZW5kZXJPYmplY3Q6OmFic29sdXRlQm91bmRpbmdCbwogCiAgICAgRmxvYXRQ
b2ludCBhYnNQb3MgPSBsb2NhbFRvQWJzb2x1dGUoKTsKICAgICBWZWN0b3I8SW50UmVjdD4gcmVj
dHM7Ci0gICAgYWJzb2x1dGVSZWN0cyhyZWN0cywgYWJzUG9zLngoKSwgYWJzUG9zLnkoKSk7Cisg
ICAgYWJzb2x1dGVSZWN0cyhyZWN0cywgZmxvb3JlZEludFBvaW50KGFic1BvcykpOwogCiAgICAg
c2l6ZV90IG4gPSByZWN0cy5zaXplKCk7CiAgICAgaWYgKCFuKQpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAkocmV2aXNpb24gODc5MzIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU5MCw3ICs1
OTAsNyBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJuIHRoZSBvZmZzZXQgZnJvbSBhbiBvYmplY3Qg
dXAgdGhlIGNvbnRhaW5lcigpIGNoYWluLiBBc3NlcnRzIHRoYXQgbm9uZSBvZiB0aGUgaW50ZXJt
ZWRpYXRlIG9iamVjdHMgaGF2ZSB0cmFuc2Zvcm1zLgogICAgIEludFNpemUgb2Zmc2V0RnJvbUFu
Y2VzdG9yQ29udGFpbmVyKFJlbmRlck9iamVjdCopIGNvbnN0OwogICAgIAotICAgIHZpcnR1YWwg
dm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGludCwgaW50KSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBJbnRQb2lu
dCYpIHsgfQogICAgIC8vIEZJWE1FOiB1c2VUcmFuc2Zvcm1zIHNob3VsZCBnbyBhd2F5IGV2ZW50
dWFsbHkKICAgICBJbnRSZWN0IGFic29sdXRlQm91bmRpbmdCb3hSZWN0KGJvb2wgdXNlVHJhbnNm
b3JtcyA9IGZhbHNlKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
LmNwcAkocmV2aXNpb24gODc5MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2OSwxMCArMjY5LDEwIEBAIFBhc3NSZWZQdHI8
U3RyaW5nSW1wbD4gUmVuZGVyVGV4dDo6b3JpZ2kKICAgICByZXR1cm4gKGUgJiYgZS0+aXNUZXh0
Tm9kZSgpKSA/IHN0YXRpY19jYXN0PFRleHQqPihlKS0+ZGF0YUltcGwoKSA6IDA7CiB9CiAKLXZv
aWQgUmVuZGVyVGV4dDo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBpbnQg
dHgsIGludCB0eSkKK3ZvaWQgUmVuZGVyVGV4dDo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVj
dD4mIHJlY3RzLCBjb25zdCBJbnRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpCiB7CiAgICAgZm9y
IChJbmxpbmVUZXh0Qm94KiBib3ggPSBmaXJzdFRleHRCb3goKTsgYm94OyBib3ggPSBib3gtPm5l
eHRUZXh0Qm94KCkpCi0gICAgICAgIHJlY3RzLmFwcGVuZChlbmNsb3NpbmdJbnRSZWN0KEZsb2F0
UmVjdCh0eCArIGJveC0+eCgpLCB0eSArIGJveC0+eSgpLCBib3gtPndpZHRoKCksIGJveC0+aGVp
Z2h0KCkpKSk7CisgICAgICAgIHJlY3RzLmFwcGVuZChlbmNsb3NpbmdJbnRSZWN0KEZsb2F0UmVj
dChhY2N1bXVsYXRlZE9mZnNldCArIEludFNpemUoYm94LT54KCksIGJveC0+eSgpKSwgSW50U2l6
ZShib3gtPngoKSwgYm94LT55KCkpKSkpOwogfQogCiB2b2lkIFJlbmRlclRleHQ6OmFic29sdXRl
UmVjdHNGb3JSYW5nZShWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCB1bnNpZ25lZCBzdGFydCwgdW5z
aWduZWQgZW5kLCBib29sIHVzZVNlbGVjdGlvbkhlaWdodCkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHQuaAkocmV2aXNpb24gODc5MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIHB1
YmxpYzoKICAgICBJbmxpbmVUZXh0Qm94KiBjcmVhdGVJbmxpbmVUZXh0Qm94KCk7CiAgICAgdm9p
ZCBkaXJ0eUxpbmVCb3hlcyhib29sIGZ1bGxMYXlvdXQpOwogCi0gICAgdmlydHVhbCB2b2lkIGFi
c29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgaW50IHR4LCBpbnQgdHkpOworICAgIHZpcnR1
YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0IEludFBvaW50JiBh
Y2N1bXVsYXRlZE9mZnNldCk7CiAgICAgdm9pZCBhYnNvbHV0ZVJlY3RzRm9yUmFuZ2UoVmVjdG9y
PEludFJlY3Q+JiwgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSAwLCB1bnNpZ25lZCBlbmRPZmZzZXQg
PSBVSU5UX01BWCwgYm9vbCB1c2VTZWxlY3Rpb25IZWlnaHQgPSBmYWxzZSk7CiAKICAgICB2aXJ0
dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAkocmV2aXNpb24gODc5MzIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMy
MSw5ICszMjEsOSBAQCB2b2lkIFJlbmRlclZpZXc6OmNvbXB1dGVSZWN0Rm9yUmVwYWludChSCiAg
ICAgICAgIHJlY3QgPSBtX2xheWVyLT50cmFuc2Zvcm0oKS0+bWFwUmVjdChyZWN0KTsKIH0KIAot
dm9pZCBSZW5kZXJWaWV3OjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGlu
dCB0eCwgaW50IHR5KQordm9pZCBSZW5kZXJWaWV3OjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRS
ZWN0PiYgcmVjdHMsIGNvbnN0IEludFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkKIHsKLSAgICBy
ZWN0cy5hcHBlbmQoSW50UmVjdChJbnRQb2ludCh0eCwgdHkpLCBtX2xheWVyLT5zaXplKCkpKTsK
KyAgICByZWN0cy5hcHBlbmQoSW50UmVjdChhY2N1bXVsYXRlZE9mZnNldCwgbV9sYXllci0+c2l6
ZSgpKSk7CiB9CiAKIHZvaWQgUmVuZGVyVmlldzo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRR
dWFkPiYgcXVhZHMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgJKHJl
dmlzaW9uIDg3OTMyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAko
d29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIHByaW50
aW5nKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50
UmVjdD4mLCBpbnQgdHgsIGludCB0eSk7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMo
VmVjdG9yPEludFJlY3Q+JiwgY29uc3QgSW50UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KTsKICAg
ICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYpOwogCiAjaWYg
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96129</attachid>
            <date>2011-06-06 14:51:40 -0700</date>
            <delta_ts>2011-06-06 15:40:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62130-20110606145139.patch</filename>
            <type>text/plain</type>
            <size>12481</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg4MTg2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTEtMDYtMDYgIEVtaWwgQSBF
a2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIENvbnZlcnQgUmVuZGVyQm94OjphYnNvbHV0ZVJlY3RzIHRvIElu
dFBvaW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
MjEzMAorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBk
b20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpoYXNOb25FbXB0eUJvdW5kaW5n
Qm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQmxvY2s6OmFic29sdXRlUmVjdHMpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJCbG9jay5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQm94OjphYnNvbHV0ZVJlY3RzKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmFic29sdXRlUmVjdHMpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6YWJzb2x1dGVCb3VuZGlu
Z0JveFJlY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck9iamVjdDo6YWJzb2x1dGVSZWN0cyk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6YWJzb2x1
dGVSZWN0cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3Ojph
YnNvbHV0ZVJlY3RzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5oOgorCiAyMDEx
LTA2LTAzICBMZXZpIFdlaW50cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAJKHJldmlzaW9uIDg4
MTg2KQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
MzksNyArODM5LDcgQEAgYm9vbCBOb2RlOjpoYXNOb25FbXB0eUJvdW5kaW5nQm94KCkgY29ucwog
CiAgICAgVmVjdG9yPEludFJlY3Q+IHJlY3RzOwogICAgIEZsb2F0UG9pbnQgYWJzUG9zID0gcmVu
ZGVyZXIoKS0+bG9jYWxUb0Fic29sdXRlKCk7Ci0gICAgcmVuZGVyZXIoKS0+YWJzb2x1dGVSZWN0
cyhyZWN0cywgYWJzUG9zLngoKSwgYWJzUG9zLnkoKSk7CisgICAgcmVuZGVyZXIoKS0+YWJzb2x1
dGVSZWN0cyhyZWN0cywgZmxvb3JlZEludFBvaW50KGFic1BvcykpOwogICAgIHNpemVfdCBuID0g
cmVjdHMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbjsgKytpKQogICAgICAg
ICBpZiAoIXJlY3RzW2ldLmlzRW1wdHkoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmNwcAkocmV2aXNpb24gODgxODYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NjY3LDcgKzU2NjcsNyBA
QCB2b2lkIFJlbmRlckJsb2NrOjpzZXRQYWdlTG9naWNhbE9mZnNldChpCiAgICAgbV9yYXJlRGF0
YS0+bV9wYWdlTG9naWNhbE9mZnNldCA9IGxvZ2ljYWxPZmZzZXQ7CiB9CiAKLXZvaWQgUmVuZGVy
QmxvY2s6OmFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgaW50IHR4LCBpbnQg
dHkpCit2b2lkIFJlbmRlckJsb2NrOjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVj
dHMsIGNvbnN0IEludFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkKIHsKICAgICAvLyBGb3IgYmxv
Y2tzIGluc2lkZSBpbmxpbmVzLCB3ZSBnbyBhaGVhZCBhbmQgaW5jbHVkZSBtYXJnaW5zIHNvIHRo
YXQgd2UgcnVuIHJpZ2h0IHVwIHRvIHRoZQogICAgIC8vIGlubGluZSBib3hlcyBhYm92ZSBhbmQg
YmVsb3cgdXMgKHRodXMgZ2V0dGluZyBtZXJnZWQgd2l0aCB0aGVtIHRvIGZvcm0gYSBzaW5nbGUg
aXJyZWd1bGFyCkBAIC01Njc1LDEzICs1Njc1LDEyIEBAIHZvaWQgUmVuZGVyQmxvY2s6OmFic29s
dXRlUmVjdHMoVmVjdG9yPEkKICAgICBpZiAoaXNBbm9ueW1vdXNCbG9ja0NvbnRpbnVhdGlvbigp
KSB7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIHdyb25nIGZvciBibG9jay1mbG93cyB0aGF0
IGFyZSBob3Jpem9udGFsLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDY3ODEKLSAgICAgICAgcmVjdHMuYXBwZW5kKEludFJlY3QodHgsIHR5IC0g
Y29sbGFwc2VkTWFyZ2luQmVmb3JlKCksCisgICAgICAgIHJlY3RzLmFwcGVuZChJbnRSZWN0KGFj
Y3VtdWxhdGVkT2Zmc2V0LngoKSwgYWNjdW11bGF0ZWRPZmZzZXQueSgpIC0gY29sbGFwc2VkTWFy
Z2luQmVmb3JlKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoKCksIGhlaWdo
dCgpICsgY29sbGFwc2VkTWFyZ2luQmVmb3JlKCkgKyBjb2xsYXBzZWRNYXJnaW5BZnRlcigpKSk7
Ci0gICAgICAgIGNvbnRpbnVhdGlvbigpLT5hYnNvbHV0ZVJlY3RzKHJlY3RzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eCAtIHgoKSArIGlubGluZUVsZW1lbnRDb250
aW51YXRpb24oKS0+Y29udGFpbmluZ0Jsb2NrKCktPngoKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdHkgLSB5KCkgKyBpbmxpbmVFbGVtZW50Q29udGludWF0aW9uKCkt
PmNvbnRhaW5pbmdCbG9jaygpLT55KCkpOworICAgICAgICBjb250aW51YXRpb24oKS0+YWJzb2x1
dGVSZWN0cyhyZWN0cywgYWNjdW11bGF0ZWRPZmZzZXQgLSB0b1NpemUobG9jYXRpb24oKSArCisg
ICAgICAgICAgICAgICAgaW5saW5lRWxlbWVudENvbnRpbnVhdGlvbigpLT5jb250YWluaW5nQmxv
Y2soKS0+bG9jYXRpb24oKSkpOwogICAgIH0gZWxzZQotICAgICAgICByZWN0cy5hcHBlbmQoSW50
UmVjdCh0eCwgdHksIHdpZHRoKCksIGhlaWdodCgpKSk7CisgICAgICAgIHJlY3RzLmFwcGVuZChJ
bnRSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0LCBzaXplKCkpKTsKIH0KIAogdm9pZCBSZW5kZXJCbG9j
azo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAkocmV2aXNpb24gODgxODYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNjI1LDcg
KzYyNSw3IEBAIHByaXZhdGU6CiAgICAgaW50IGxvZ2ljYWxMZWZ0U2VsZWN0aW9uT2Zmc2V0KFJl
bmRlckJsb2NrKiByb290QmxvY2ssIGludCBwb3NpdGlvbik7CiAgICAgaW50IGxvZ2ljYWxSaWdo
dFNlbGVjdGlvbk9mZnNldChSZW5kZXJCbG9jayogcm9vdEJsb2NrLCBpbnQgcG9zaXRpb24pOwog
ICAgIAotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGlu
dCB0eCwgaW50IHR5KTsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50
UmVjdD4mLCBjb25zdCBJbnRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpOwogICAgIHZpcnR1YWwg
dm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+Jik7CiAKICAgICBpbnQgZGVzaXJl
ZENvbHVtbldpZHRoKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmNwcAkocmV2aXNpb24gODgxODYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDU1LDkgKzQ1NSw5IEBAIHZvaWQgUmVuZGVy
Qm94OjpzZXRTY3JvbGxUb3AoaW50IG5ld1RvcCkKICAgICAgICAgbGF5ZXIoKS0+c2Nyb2xsVG9Z
T2Zmc2V0KG5ld1RvcCk7CiB9CiAKLXZvaWQgUmVuZGVyQm94OjphYnNvbHV0ZVJlY3RzKFZlY3Rv
cjxJbnRSZWN0PiYgcmVjdHMsIGludCB0eCwgaW50IHR5KQordm9pZCBSZW5kZXJCb3g6OmFic29s
dXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgY29uc3QgSW50UG9pbnQmIGFjY3VtdWxh
dGVkT2Zmc2V0KQogewotICAgIHJlY3RzLmFwcGVuZChJbnRSZWN0KHR4LCB0eSwgd2lkdGgoKSwg
aGVpZ2h0KCkpKTsKKyAgICByZWN0cy5hcHBlbmQoSW50UmVjdChhY2N1bXVsYXRlZE9mZnNldCwg
c2l6ZSgpKSk7CiB9CiAKIHZvaWQgUmVuZGVyQm94OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9h
dFF1YWQ+JiBxdWFkcykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgJKHJl
dmlzaW9uIDg4MTg2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMzAsNyArMjMwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgaW50
IGNvbGxhcHNlZE1hcmdpbkJlZm9yZSgpIGNvbnN0IHsgcmV0dXJuIG1hcmdpbkJlZm9yZSgpOyB9
CiAgICAgdmlydHVhbCBpbnQgY29sbGFwc2VkTWFyZ2luQWZ0ZXIoKSBjb25zdCB7IHJldHVybiBt
YXJnaW5BZnRlcigpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8
SW50UmVjdD4mLCBpbnQgdHgsIGludCB0eSk7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVj
dHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgSW50UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KTsK
ICAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYpOwogICAg
IAogICAgIEludFJlY3QgcmVmbGVjdGlvbkJveCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAJKHJldmlzaW9uIDg4MTg2KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2
NSwyNCArNDY1LDIyIEBAIHZvaWQgUmVuZGVySW5saW5lOjpwYWludChQYWludEluZm8mIHBhaW4K
ICAgICBtX2xpbmVCb3hlcy5wYWludCh0aGlzLCBwYWludEluZm8sIHR4LCB0eSk7CiB9CiAKLXZv
aWQgUmVuZGVySW5saW5lOjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGlu
dCB0eCwgaW50IHR5KQordm9pZCBSZW5kZXJJbmxpbmU6OmFic29sdXRlUmVjdHMoVmVjdG9yPElu
dFJlY3Q+JiByZWN0cywgY29uc3QgSW50UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KQogewogICAg
IGlmICghYWx3YXlzQ3JlYXRlTGluZUJveGVzKCkpCi0gICAgICAgIGN1bGxlZElubGluZUFic29s
dXRlUmVjdHModGhpcywgcmVjdHMsIEludFNpemUodHgsIHR5KSk7CisgICAgICAgIGN1bGxlZElu
bGluZUFic29sdXRlUmVjdHModGhpcywgcmVjdHMsIHRvU2l6ZShhY2N1bXVsYXRlZE9mZnNldCkp
OwogICAgIGVsc2UgaWYgKElubGluZUZsb3dCb3gqIGN1cnIgPSBmaXJzdExpbmVCb3goKSkgewog
ICAgICAgICBmb3IgKDsgY3VycjsgY3VyciA9IGN1cnItPm5leHRMaW5lQm94KCkpCi0gICAgICAg
ICAgICByZWN0cy5hcHBlbmQoZW5jbG9zaW5nSW50UmVjdChGbG9hdFJlY3QodHggKyBjdXJyLT54
KCksIHR5ICsgY3Vyci0+eSgpLCBjdXJyLT53aWR0aCgpLCBjdXJyLT5oZWlnaHQoKSkpKTsKKyAg
ICAgICAgICAgIHJlY3RzLmFwcGVuZChlbmNsb3NpbmdJbnRSZWN0KEZsb2F0UmVjdChhY2N1bXVs
YXRlZE9mZnNldCArIGN1cnItPnRvcExlZnQoKSwgSW50U2l6ZShjdXJyLT53aWR0aCgpLCBjdXJy
LT5oZWlnaHQoKSkpKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIHJlY3RzLmFwcGVuZChJbnRSZWN0
KHR4LCB0eSwgMCwgMCkpOworICAgICAgICByZWN0cy5hcHBlbmQoSW50UmVjdChhY2N1bXVsYXRl
ZE9mZnNldCwgSW50U2l6ZSgpKSk7CiAKICAgICBpZiAoY29udGludWF0aW9uKCkpIHsKICAgICAg
ICAgaWYgKGNvbnRpbnVhdGlvbigpLT5pc0JveCgpKSB7CiAgICAgICAgICAgICBSZW5kZXJCb3gq
IGJveCA9IHRvUmVuZGVyQm94KGNvbnRpbnVhdGlvbigpKTsKLSAgICAgICAgICAgIGNvbnRpbnVh
dGlvbigpLT5hYnNvbHV0ZVJlY3RzKHJlY3RzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHR4IC0gY29udGFpbmluZ0Jsb2NrKCktPngoKSArIGJveC0+eCgpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHkgLSBjb250YWluaW5n
QmxvY2soKS0+eSgpICsgYm94LT55KCkpOworICAgICAgICAgICAgY29udGludWF0aW9uKCktPmFi
c29sdXRlUmVjdHMocmVjdHMsIHRvUG9pbnQoYWNjdW11bGF0ZWRPZmZzZXQgLSBjb250YWluaW5n
QmxvY2soKS0+bG9jYXRpb24oKSArIGJveC0+c2l6ZSgpKSk7CiAgICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgY29udGludWF0aW9uKCktPmFic29sdXRlUmVjdHMocmVjdHMsIHR4IC0gY29udGFp
bmluZ0Jsb2NrKCktPngoKSwgdHkgLSBjb250YWluaW5nQmxvY2soKS0+eSgpKTsKKyAgICAgICAg
ICAgIGNvbnRpbnVhdGlvbigpLT5hYnNvbHV0ZVJlY3RzKHJlY3RzLCB0b1BvaW50KGFjY3VtdWxh
dGVkT2Zmc2V0IC0gY29udGFpbmluZ0Jsb2NrKCktPmxvY2F0aW9uKCkpKTsKICAgICB9CiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgJKHJldmlzaW9uIDg4
MTg2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGludCBtYXJnaW5T
dGFydCgpIGNvbnN0OwogICAgIHZpcnR1YWwgaW50IG1hcmdpbkVuZCgpIGNvbnN0OwogCi0gICAg
dmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgaW50IHR4LCBpbnQg
dHkpOworICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNv
bnN0IEludFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCk7CiAgICAgdmlydHVhbCB2b2lkIGFic29s
dXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mKTsKIAogICAgIHZpcnR1YWwgSW50U2l6ZSBvZmZz
ZXRGcm9tQ29udGFpbmVyKFJlbmRlck9iamVjdCosIGNvbnN0IEludFBvaW50JikgY29uc3Q7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24g
ODgxODYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTA5OSw3ICsxMDk5LDcgQEAgSW50UmVjdCBSZW5kZXJPYmplY3Q6OmFi
c29sdXRlQm91bmRpbmdCbwogCiAgICAgRmxvYXRQb2ludCBhYnNQb3MgPSBsb2NhbFRvQWJzb2x1
dGUoKTsKICAgICBWZWN0b3I8SW50UmVjdD4gcmVjdHM7Ci0gICAgYWJzb2x1dGVSZWN0cyhyZWN0
cywgYWJzUG9zLngoKSwgYWJzUG9zLnkoKSk7CisgICAgYWJzb2x1dGVSZWN0cyhyZWN0cywgZmxv
b3JlZEludFBvaW50KGFic1BvcykpOwogCiAgICAgc2l6ZV90IG4gPSByZWN0cy5zaXplKCk7CiAg
ICAgaWYgKCFuKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAko
cmV2aXNpb24gODgxODYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTU5MCw3ICs1OTAsNyBAQCBwdWJsaWM6CiAgICAgLy8gUmV0
dXJuIHRoZSBvZmZzZXQgZnJvbSBhbiBvYmplY3QgdXAgdGhlIGNvbnRhaW5lcigpIGNoYWluLiBB
c3NlcnRzIHRoYXQgbm9uZSBvZiB0aGUgaW50ZXJtZWRpYXRlIG9iamVjdHMgaGF2ZSB0cmFuc2Zv
cm1zLgogICAgIEludFNpemUgb2Zmc2V0RnJvbUFuY2VzdG9yQ29udGFpbmVyKFJlbmRlck9iamVj
dCopIGNvbnN0OwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxJ
bnRSZWN0PiYsIGludCwgaW50KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhW
ZWN0b3I8SW50UmVjdD4mLCBjb25zdCBJbnRQb2ludCYpIHsgfQogICAgIC8vIEZJWE1FOiB1c2VU
cmFuc2Zvcm1zIHNob3VsZCBnbyBhd2F5IGV2ZW50dWFsbHkKICAgICBJbnRSZWN0IGFic29sdXRl
Qm91bmRpbmdCb3hSZWN0KGJvb2wgdXNlVHJhbnNmb3JtcyA9IGZhbHNlKTsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAkocmV2aXNpb24gODgxODYpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI2OSwxMCArMjY5LDEwIEBAIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gUmVuZGVyVGV4dDo6b3Jp
Z2kKICAgICByZXR1cm4gKGUgJiYgZS0+aXNUZXh0Tm9kZSgpKSA/IHN0YXRpY19jYXN0PFRleHQq
PihlKS0+ZGF0YUltcGwoKSA6IDA7CiB9CiAKLXZvaWQgUmVuZGVyVGV4dDo6YWJzb2x1dGVSZWN0
cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBpbnQgdHgsIGludCB0eSkKK3ZvaWQgUmVuZGVyVGV4
dDo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBjb25zdCBJbnRQb2ludCYg
YWNjdW11bGF0ZWRPZmZzZXQpCiB7CiAgICAgZm9yIChJbmxpbmVUZXh0Qm94KiBib3ggPSBmaXJz
dFRleHRCb3goKTsgYm94OyBib3ggPSBib3gtPm5leHRUZXh0Qm94KCkpCi0gICAgICAgIHJlY3Rz
LmFwcGVuZChlbmNsb3NpbmdJbnRSZWN0KEZsb2F0UmVjdCh0eCArIGJveC0+eCgpLCB0eSArIGJv
eC0+eSgpLCBib3gtPndpZHRoKCksIGJveC0+aGVpZ2h0KCkpKSk7CisgICAgICAgIHJlY3RzLmFw
cGVuZChlbmNsb3NpbmdJbnRSZWN0KEZsb2F0UmVjdChhY2N1bXVsYXRlZE9mZnNldCArIGJveC0+
dG9wTGVmdCgpLCBJbnRTaXplKGJveC0+d2lkdGgoKSwgYm94LT5oZWlnaHQoKSkpKSk7CiB9CiAK
IHZvaWQgUmVuZGVyVGV4dDo6YWJzb2x1dGVSZWN0c0ZvclJhbmdlKFZlY3RvcjxJbnRSZWN0PiYg
cmVjdHMsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQsIGJvb2wgdXNlU2VsZWN0aW9uSGVp
Z2h0KQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCShyZXZpc2lvbiA4
ODE4NikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIElubGluZVRleHRCb3gqIGNyZWF0
ZUlubGluZVRleHRCb3goKTsKICAgICB2b2lkIGRpcnR5TGluZUJveGVzKGJvb2wgZnVsbExheW91
dCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBp
bnQgdHgsIGludCB0eSk7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPElu
dFJlY3Q+JiwgY29uc3QgSW50UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KTsKICAgICB2b2lkIGFi
c29sdXRlUmVjdHNGb3JSYW5nZShWZWN0b3I8SW50UmVjdD4mLCB1bnNpZ25lZCBzdGFydE9mZnNl
dCA9IDAsIHVuc2lnbmVkIGVuZE9mZnNldCA9IFVJTlRfTUFYLCBib29sIHVzZVNlbGVjdGlvbkhl
aWdodCA9IGZhbHNlKTsKIAogICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxG
bG9hdFF1YWQ+Jik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3Bw
CShyZXZpc2lvbiA4ODE4NikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIxLDkgKzMyMSw5IEBAIHZvaWQgUmVuZGVyVmlldzo6
Y29tcHV0ZVJlY3RGb3JSZXBhaW50KFIKICAgICAgICAgcmVjdCA9IG1fbGF5ZXItPnRyYW5zZm9y
bSgpLT5tYXBSZWN0KHJlY3QpOwogfQogCi12b2lkIFJlbmRlclZpZXc6OmFic29sdXRlUmVjdHMo
VmVjdG9yPEludFJlY3Q+JiByZWN0cywgaW50IHR4LCBpbnQgdHkpCit2b2lkIFJlbmRlclZpZXc6
OmFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgY29uc3QgSW50UG9pbnQmIGFj
Y3VtdWxhdGVkT2Zmc2V0KQogewotICAgIHJlY3RzLmFwcGVuZChJbnRSZWN0KEludFBvaW50KHR4
LCB0eSksIG1fbGF5ZXItPnNpemUoKSkpOworICAgIHJlY3RzLmFwcGVuZChJbnRSZWN0KGFjY3Vt
dWxhdGVkT2Zmc2V0LCBtX2xheWVyLT5zaXplKCkpKTsKIH0KIAogdm9pZCBSZW5kZXJWaWV3Ojph
YnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcykKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclZpZXcuaAkocmV2aXNpb24gODgxODYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBA
IHB1YmxpYzoKIAogICAgIGJvb2wgcHJpbnRpbmcoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9p
ZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGludCB0eCwgaW50IHR5KTsKKyAgICB2
aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBJbnRQb2lu
dCYgYWNjdW11bGF0ZWRPZmZzZXQpOwogICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZl
Y3RvcjxGbG9hdFF1YWQ+Jik7CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96141</attachid>
            <date>2011-06-06 15:40:11 -0700</date>
            <delta_ts>2011-06-07 10:40:49 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-62130-20110606154010.patch</filename>
            <type>text/plain</type>
            <size>13033</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg4MTk1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTEtMDYtMDYgIEVtaWwgQSBF
a2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2Vp
ZGVsLgorCisgICAgICAgIENvbnZlcnQgUmVuZGVyQm94OjphYnNvbHV0ZVJlY3RzIHRvIEludFBv
aW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MjEz
MAorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBkb20v
Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpoYXNOb25FbXB0eUJvdW5kaW5nQm94
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQmxvY2s6OmFic29sdXRlUmVjdHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJCbG9jay5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94OjphYnNvbHV0ZVJlY3RzKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmFic29sdXRlUmVjdHMpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJJbmxpbmUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6YWJzb2x1dGVCb3VuZGluZ0Jv
eFJlY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck9iamVjdDo6YWJzb2x1dGVSZWN0cyk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6YWJzb2x1dGVS
ZWN0cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjphYnNv
bHV0ZVJlY3RzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5oOgorCiAyMDExLTA2
LTA2ICBFbWlsIEEgRWtsdW5kICA8ZWFlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAJKHJldmlzaW9uIDg4MTk1KQor
KysgU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MzksNyAr
ODM5LDcgQEAgYm9vbCBOb2RlOjpoYXNOb25FbXB0eUJvdW5kaW5nQm94KCkgY29ucwogCiAgICAg
VmVjdG9yPEludFJlY3Q+IHJlY3RzOwogICAgIEZsb2F0UG9pbnQgYWJzUG9zID0gcmVuZGVyZXIo
KS0+bG9jYWxUb0Fic29sdXRlKCk7Ci0gICAgcmVuZGVyZXIoKS0+YWJzb2x1dGVSZWN0cyhyZWN0
cywgYWJzUG9zLngoKSwgYWJzUG9zLnkoKSk7CisgICAgcmVuZGVyZXIoKS0+YWJzb2x1dGVSZWN0
cyhyZWN0cywgZmxvb3JlZEludFBvaW50KGFic1BvcykpOwogICAgIHNpemVfdCBuID0gcmVjdHMu
c2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbjsgKytpKQogICAgICAgICBpZiAo
IXJlY3RzW2ldLmlzRW1wdHkoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Jbmxp
bmVCb3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94
LmgJKHJldmlzaW9uIDg4MTk1KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJv
eC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzYsNiArMjM2LDcgQEAgcHVibGljOgogCiAgICAgZmxv
YXQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBpc0hvcml6b250YWwoKSA/IGxvZ2ljYWxXaWR0aCgp
IDogbG9naWNhbEhlaWdodCgpOyB9CiAgICAgZmxvYXQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4g
aXNIb3Jpem9udGFsKCkgPyBsb2dpY2FsSGVpZ2h0KCkgOiBsb2dpY2FsV2lkdGgoKTsgfQorICAg
IEZsb2F0U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gSW50U2l6ZSh3aWR0aCgpLCBoZWlnaHQo
KSk7IH0KICAgICBmbG9hdCByaWdodCgpIGNvbnN0IHsgcmV0dXJuIGxlZnQoKSArIHdpZHRoKCk7
IH0KICAgICBmbG9hdCBib3R0b20oKSBjb25zdCB7IHJldHVybiB0b3AoKSArIGhlaWdodCgpOyB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkocmV2aXNp
b24gODgxOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01NjY1LDcgKzU2NjUsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpzZXRQ
YWdlTG9naWNhbE9mZnNldChpCiAgICAgbV9yYXJlRGF0YS0+bV9wYWdlTG9naWNhbE9mZnNldCA9
IGxvZ2ljYWxPZmZzZXQ7CiB9CiAKLXZvaWQgUmVuZGVyQmxvY2s6OmFic29sdXRlUmVjdHMoVmVj
dG9yPEludFJlY3Q+JiByZWN0cywgaW50IHR4LCBpbnQgdHkpCit2b2lkIFJlbmRlckJsb2NrOjph
YnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGNvbnN0IEludFBvaW50JiBhY2N1
bXVsYXRlZE9mZnNldCkKIHsKICAgICAvLyBGb3IgYmxvY2tzIGluc2lkZSBpbmxpbmVzLCB3ZSBn
byBhaGVhZCBhbmQgaW5jbHVkZSBtYXJnaW5zIHNvIHRoYXQgd2UgcnVuIHJpZ2h0IHVwIHRvIHRo
ZQogICAgIC8vIGlubGluZSBib3hlcyBhYm92ZSBhbmQgYmVsb3cgdXMgKHRodXMgZ2V0dGluZyBt
ZXJnZWQgd2l0aCB0aGVtIHRvIGZvcm0gYSBzaW5nbGUgaXJyZWd1bGFyCkBAIC01NjczLDEzICs1
NjczLDEyIEBAIHZvaWQgUmVuZGVyQmxvY2s6OmFic29sdXRlUmVjdHMoVmVjdG9yPEkKICAgICBp
ZiAoaXNBbm9ueW1vdXNCbG9ja0NvbnRpbnVhdGlvbigpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBU
aGlzIGlzIHdyb25nIGZvciBibG9jay1mbG93cyB0aGF0IGFyZSBob3Jpem9udGFsLgogICAgICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY3ODEKLSAgICAg
ICAgcmVjdHMuYXBwZW5kKEludFJlY3QodHgsIHR5IC0gY29sbGFwc2VkTWFyZ2luQmVmb3JlKCks
CisgICAgICAgIHJlY3RzLmFwcGVuZChJbnRSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0LngoKSwgYWNj
dW11bGF0ZWRPZmZzZXQueSgpIC0gY29sbGFwc2VkTWFyZ2luQmVmb3JlKCksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHdpZHRoKCksIGhlaWdodCgpICsgY29sbGFwc2VkTWFyZ2luQmVm
b3JlKCkgKyBjb2xsYXBzZWRNYXJnaW5BZnRlcigpKSk7Ci0gICAgICAgIGNvbnRpbnVhdGlvbigp
LT5hYnNvbHV0ZVJlY3RzKHJlY3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0eCAtIHgoKSArIGlubGluZUVsZW1lbnRDb250aW51YXRpb24oKS0+Y29udGFpbmluZ0Js
b2NrKCktPngoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHkgLSB5
KCkgKyBpbmxpbmVFbGVtZW50Q29udGludWF0aW9uKCktPmNvbnRhaW5pbmdCbG9jaygpLT55KCkp
OworICAgICAgICBjb250aW51YXRpb24oKS0+YWJzb2x1dGVSZWN0cyhyZWN0cywgYWNjdW11bGF0
ZWRPZmZzZXQgLSB0b1NpemUobG9jYXRpb24oKSArCisgICAgICAgICAgICAgICAgaW5saW5lRWxl
bWVudENvbnRpbnVhdGlvbigpLT5jb250YWluaW5nQmxvY2soKS0+bG9jYXRpb24oKSkpOwogICAg
IH0gZWxzZQotICAgICAgICByZWN0cy5hcHBlbmQoSW50UmVjdCh0eCwgdHksIHdpZHRoKCksIGhl
aWdodCgpKSk7CisgICAgICAgIHJlY3RzLmFwcGVuZChJbnRSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0
LCBzaXplKCkpKTsKIH0KIAogdm9pZCBSZW5kZXJCbG9jazo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8
RmxvYXRRdWFkPiYgcXVhZHMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suaAkocmV2aXNpb24gODgxOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNjI1LDcgKzYyNSw3IEBAIHByaXZhdGU6CiAgICAg
aW50IGxvZ2ljYWxMZWZ0U2VsZWN0aW9uT2Zmc2V0KFJlbmRlckJsb2NrKiByb290QmxvY2ssIGlu
dCBwb3NpdGlvbik7CiAgICAgaW50IGxvZ2ljYWxSaWdodFNlbGVjdGlvbk9mZnNldChSZW5kZXJC
bG9jayogcm9vdEJsb2NrLCBpbnQgcG9zaXRpb24pOwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBh
YnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGludCB0eCwgaW50IHR5KTsKKyAgICB2aXJ0
dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBJbnRQb2ludCYg
YWNjdW11bGF0ZWRPZmZzZXQpOwogICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3Rv
cjxGbG9hdFF1YWQ+Jik7CiAKICAgICBpbnQgZGVzaXJlZENvbHVtbldpZHRoKCkgY29uc3Q7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAkocmV2aXNpb24gODgxOTUp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDU1LDkgKzQ1NSw5IEBAIHZvaWQgUmVuZGVyQm94OjpzZXRTY3JvbGxUb3AoaW50IG5l
d1RvcCkKICAgICAgICAgbGF5ZXIoKS0+c2Nyb2xsVG9ZT2Zmc2V0KG5ld1RvcCk7CiB9CiAKLXZv
aWQgUmVuZGVyQm94OjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGludCB0
eCwgaW50IHR5KQordm9pZCBSZW5kZXJCb3g6OmFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+
JiByZWN0cywgY29uc3QgSW50UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KQogewotICAgIHJlY3Rz
LmFwcGVuZChJbnRSZWN0KHR4LCB0eSwgd2lkdGgoKSwgaGVpZ2h0KCkpKTsKKyAgICByZWN0cy5h
cHBlbmQoSW50UmVjdChhY2N1bXVsYXRlZE9mZnNldCwgc2l6ZSgpKSk7CiB9CiAKIHZvaWQgUmVu
ZGVyQm94OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcykKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgJKHJldmlzaW9uIDg4MTk1KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzAsNyAr
MjMwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgaW50IGNvbGxhcHNlZE1hcmdpbkJlZm9yZSgp
IGNvbnN0IHsgcmV0dXJuIG1hcmdpbkJlZm9yZSgpOyB9CiAgICAgdmlydHVhbCBpbnQgY29sbGFw
c2VkTWFyZ2luQWZ0ZXIoKSBjb25zdCB7IHJldHVybiBtYXJnaW5BZnRlcigpOyB9CiAKLSAgICB2
aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBpbnQgdHgsIGludCB0
eSk7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgY29u
c3QgSW50UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KTsKICAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1
dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYpOwogICAgIAogICAgIEludFJlY3QgcmVmbGVjdGlv
bkJveCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGlu
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGlu
ZS5jcHAJKHJldmlzaW9uIDg4MTk1KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
cklubGluZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2NSwyNCArNDY1LDIyIEBAIHZvaWQgUmVu
ZGVySW5saW5lOjpwYWludChQYWludEluZm8mIHBhaW4KICAgICBtX2xpbmVCb3hlcy5wYWludCh0
aGlzLCBwYWludEluZm8sIHR4LCB0eSk7CiB9CiAKLXZvaWQgUmVuZGVySW5saW5lOjphYnNvbHV0
ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGludCB0eCwgaW50IHR5KQordm9pZCBSZW5k
ZXJJbmxpbmU6OmFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgY29uc3QgSW50
UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KQogewogICAgIGlmICghYWx3YXlzQ3JlYXRlTGluZUJv
eGVzKCkpCi0gICAgICAgIGN1bGxlZElubGluZUFic29sdXRlUmVjdHModGhpcywgcmVjdHMsIElu
dFNpemUodHgsIHR5KSk7CisgICAgICAgIGN1bGxlZElubGluZUFic29sdXRlUmVjdHModGhpcywg
cmVjdHMsIHRvU2l6ZShhY2N1bXVsYXRlZE9mZnNldCkpOwogICAgIGVsc2UgaWYgKElubGluZUZs
b3dCb3gqIGN1cnIgPSBmaXJzdExpbmVCb3goKSkgewogICAgICAgICBmb3IgKDsgY3VycjsgY3Vy
ciA9IGN1cnItPm5leHRMaW5lQm94KCkpCi0gICAgICAgICAgICByZWN0cy5hcHBlbmQoZW5jbG9z
aW5nSW50UmVjdChGbG9hdFJlY3QodHggKyBjdXJyLT54KCksIHR5ICsgY3Vyci0+eSgpLCBjdXJy
LT53aWR0aCgpLCBjdXJyLT5oZWlnaHQoKSkpKTsKKyAgICAgICAgICAgIHJlY3RzLmFwcGVuZChl
bmNsb3NpbmdJbnRSZWN0KEZsb2F0UmVjdChhY2N1bXVsYXRlZE9mZnNldCArIGN1cnItPnRvcExl
ZnQoKSwgY3Vyci0+c2l6ZSgpKSkpOwogICAgIH0gZWxzZQotICAgICAgICByZWN0cy5hcHBlbmQo
SW50UmVjdCh0eCwgdHksIDAsIDApKTsKKyAgICAgICAgcmVjdHMuYXBwZW5kKEludFJlY3QoYWNj
dW11bGF0ZWRPZmZzZXQsIEludFNpemUoKSkpOwogCiAgICAgaWYgKGNvbnRpbnVhdGlvbigpKSB7
CiAgICAgICAgIGlmIChjb250aW51YXRpb24oKS0+aXNCb3goKSkgewogICAgICAgICAgICAgUmVu
ZGVyQm94KiBib3ggPSB0b1JlbmRlckJveChjb250aW51YXRpb24oKSk7Ci0gICAgICAgICAgICBj
b250aW51YXRpb24oKS0+YWJzb2x1dGVSZWN0cyhyZWN0cywgCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0eCAtIGNvbnRhaW5pbmdCbG9jaygpLT54KCkgKyBib3gt
PngoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5IC0gY29u
dGFpbmluZ0Jsb2NrKCktPnkoKSArIGJveC0+eSgpKTsKKyAgICAgICAgICAgIGNvbnRpbnVhdGlv
bigpLT5hYnNvbHV0ZVJlY3RzKHJlY3RzLCB0b1BvaW50KGFjY3VtdWxhdGVkT2Zmc2V0IC0gY29u
dGFpbmluZ0Jsb2NrKCktPmxvY2F0aW9uKCkgKyBib3gtPnNpemUoKSkpOwogICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgIGNvbnRpbnVhdGlvbigpLT5hYnNvbHV0ZVJlY3RzKHJlY3RzLCB0eCAt
IGNvbnRhaW5pbmdCbG9jaygpLT54KCksIHR5IC0gY29udGFpbmluZ0Jsb2NrKCktPnkoKSk7Cisg
ICAgICAgICAgICBjb250aW51YXRpb24oKS0+YWJzb2x1dGVSZWN0cyhyZWN0cywgdG9Qb2ludChh
Y2N1bXVsYXRlZE9mZnNldCAtIGNvbnRhaW5pbmdCbG9jaygpLT5sb2NhdGlvbigpKSk7CiAgICAg
fQogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCShyZXZp
c2lvbiA4ODE5NSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAko
d29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBpbnQg
bWFyZ2luU3RhcnQoKSBjb25zdDsKICAgICB2aXJ0dWFsIGludCBtYXJnaW5FbmQoKSBjb25zdDsK
IAotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGludCB0
eCwgaW50IHR5KTsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVj
dD4mLCBjb25zdCBJbnRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpOwogICAgIHZpcnR1YWwgdm9p
ZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+Jik7CiAKICAgICB2aXJ0dWFsIEludFNp
emUgb2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJPYmplY3QqLCBjb25zdCBJbnRQb2ludCYpIGNv
bnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAJKHJl
dmlzaW9uIDg4MTk1KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOTksNyArMTA5OSw3IEBAIEludFJlY3QgUmVuZGVyT2Jq
ZWN0OjphYnNvbHV0ZUJvdW5kaW5nQm8KIAogICAgIEZsb2F0UG9pbnQgYWJzUG9zID0gbG9jYWxU
b0Fic29sdXRlKCk7CiAgICAgVmVjdG9yPEludFJlY3Q+IHJlY3RzOwotICAgIGFic29sdXRlUmVj
dHMocmVjdHMsIGFic1Bvcy54KCksIGFic1Bvcy55KCkpOworICAgIGFic29sdXRlUmVjdHMocmVj
dHMsIGZsb29yZWRJbnRQb2ludChhYnNQb3MpKTsKIAogICAgIHNpemVfdCBuID0gcmVjdHMuc2l6
ZSgpOwogICAgIGlmICghbikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmgJKHJldmlzaW9uIDg4MTk1KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OTAsNyArNTkwLDcgQEAgcHVibGljOgogICAg
IC8vIFJldHVybiB0aGUgb2Zmc2V0IGZyb20gYW4gb2JqZWN0IHVwIHRoZSBjb250YWluZXIoKSBj
aGFpbi4gQXNzZXJ0cyB0aGF0IG5vbmUgb2YgdGhlIGludGVybWVkaWF0ZSBvYmplY3RzIGhhdmUg
dHJhbnNmb3Jtcy4KICAgICBJbnRTaXplIG9mZnNldEZyb21BbmNlc3RvckNvbnRhaW5lcihSZW5k
ZXJPYmplY3QqKSBjb25zdDsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhW
ZWN0b3I8SW50UmVjdD4mLCBpbnQsIGludCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRl
UmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgSW50UG9pbnQmKSB7IH0KICAgICAvLyBGSVhN
RTogdXNlVHJhbnNmb3JtcyBzaG91bGQgZ28gYXdheSBldmVudHVhbGx5CiAgICAgSW50UmVjdCBh
YnNvbHV0ZUJvdW5kaW5nQm94UmVjdChib29sIHVzZVRyYW5zZm9ybXMgPSBmYWxzZSk7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAJKHJldmlzaW9uIDg4MTk1
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNjksMTAgKzI2OSwxMCBAQCBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IFJlbmRlclRl
eHQ6Om9yaWdpCiAgICAgcmV0dXJuIChlICYmIGUtPmlzVGV4dE5vZGUoKSkgPyBzdGF0aWNfY2Fz
dDxUZXh0Kj4oZSktPmRhdGFJbXBsKCkgOiAwOwogfQogCi12b2lkIFJlbmRlclRleHQ6OmFic29s
dXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgaW50IHR4LCBpbnQgdHkpCit2b2lkIFJl
bmRlclRleHQ6OmFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgY29uc3QgSW50
UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KQogewogICAgIGZvciAoSW5saW5lVGV4dEJveCogYm94
ID0gZmlyc3RUZXh0Qm94KCk7IGJveDsgYm94ID0gYm94LT5uZXh0VGV4dEJveCgpKQotICAgICAg
ICByZWN0cy5hcHBlbmQoZW5jbG9zaW5nSW50UmVjdChGbG9hdFJlY3QodHggKyBib3gtPngoKSwg
dHkgKyBib3gtPnkoKSwgYm94LT53aWR0aCgpLCBib3gtPmhlaWdodCgpKSkpOworICAgICAgICBy
ZWN0cy5hcHBlbmQoZW5jbG9zaW5nSW50UmVjdChGbG9hdFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQg
KyBib3gtPnRvcExlZnQoKSwgYm94LT5zaXplKCkpKSk7CiB9CiAKIHZvaWQgUmVuZGVyVGV4dDo6
YWJzb2x1dGVSZWN0c0ZvclJhbmdlKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIHVuc2lnbmVkIHN0
YXJ0LCB1bnNpZ25lZCBlbmQsIGJvb2wgdXNlU2VsZWN0aW9uSGVpZ2h0KQpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCShyZXZpc2lvbiA4ODE5NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2
LDcgQEAgcHVibGljOgogICAgIElubGluZVRleHRCb3gqIGNyZWF0ZUlubGluZVRleHRCb3goKTsK
ICAgICB2b2lkIGRpcnR5TGluZUJveGVzKGJvb2wgZnVsbExheW91dCk7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBpbnQgdHgsIGludCB0eSk7Cisg
ICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgSW50
UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KTsKICAgICB2b2lkIGFic29sdXRlUmVjdHNGb3JSYW5n
ZShWZWN0b3I8SW50UmVjdD4mLCB1bnNpZ25lZCBzdGFydE9mZnNldCA9IDAsIHVuc2lnbmVkIGVu
ZE9mZnNldCA9IFVJTlRfTUFYLCBib29sIHVzZVNlbGVjdGlvbkhlaWdodCA9IGZhbHNlKTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+Jik7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCShyZXZpc2lvbiA4ODE5NSkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzIxLDkgKzMyMSw5IEBAIHZvaWQgUmVuZGVyVmlldzo6Y29tcHV0ZVJlY3RGb3JSZXBh
aW50KFIKICAgICAgICAgcmVjdCA9IG1fbGF5ZXItPnRyYW5zZm9ybSgpLT5tYXBSZWN0KHJlY3Qp
OwogfQogCi12b2lkIFJlbmRlclZpZXc6OmFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiBy
ZWN0cywgaW50IHR4LCBpbnQgdHkpCit2b2lkIFJlbmRlclZpZXc6OmFic29sdXRlUmVjdHMoVmVj
dG9yPEludFJlY3Q+JiByZWN0cywgY29uc3QgSW50UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KQog
ewotICAgIHJlY3RzLmFwcGVuZChJbnRSZWN0KEludFBvaW50KHR4LCB0eSksIG1fbGF5ZXItPnNp
emUoKSkpOworICAgIHJlY3RzLmFwcGVuZChJbnRSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0LCBtX2xh
eWVyLT5zaXplKCkpKTsKIH0KIAogdm9pZCBSZW5kZXJWaWV3OjphYnNvbHV0ZVF1YWRzKFZlY3Rv
cjxGbG9hdFF1YWQ+JiBxdWFkcykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZp
ZXcuaAkocmV2aXNpb24gODgxOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Vmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoKIAogICAgIGJv
b2wgcHJpbnRpbmcoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZl
Y3RvcjxJbnRSZWN0PiYsIGludCB0eCwgaW50IHR5KTsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1
dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBJbnRQb2ludCYgYWNjdW11bGF0ZWRPZmZz
ZXQpOwogICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+Jik7
CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96296</attachid>
            <date>2011-06-07 14:21:29 -0700</date>
            <delta_ts>2011-06-07 17:30:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62130-20110607142128.patch</filename>
            <type>text/plain</type>
            <size>16157</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg4MjY2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTEtMDYtMDcgIEVtaWwgQSBF
a2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIENvbnZlcnQgUmVuZGVyQm94OjphYnNvbHV0ZVJlY3RzIHRvIElu
dFBvaW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
MjEzMAorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBk
b20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpoYXNOb25FbXB0eUJvdW5kaW5n
Qm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lQm94Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpJbmxpbmVCb3g6OnNpemUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6YWJzb2x1dGVSZWN0cyk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJv
eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmFic29sdXRlUmVjdHMpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
SW5saW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklubGluZTo6YWJzb2x1dGVSZWN0
cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5oOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojph
YnNvbHV0ZUJvdW5kaW5nQm94UmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjphYnNvbHV0ZVJlY3RzKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUZXh0OjphYnNvbHV0ZVJlY3RzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5o
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclZpZXc6OmFic29sdXRlUmVjdHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJW
aWV3Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTVkdCbG9jazo6YWJzb2x1dGVSZWN0cyk6CisgICAgICAgICog
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHTW9k
ZWxPYmplY3Q6OmFic29sdXRlUmVjdHMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHTW9kZWxPYmplY3QuaDoKKwogMjAxMS0wNi0wNyAgUm9iIEJ1aXMgIDxyYnVpc0ByaW0uY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpcmsgU2NodWx6ZS4KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5j
cHAJKHJldmlzaW9uIDg4MjQ5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04MzksNyArODM5LDcgQEAgYm9vbCBOb2RlOjpoYXNOb25FbXB0eUJvdW5k
aW5nQm94KCkgY29ucwogCiAgICAgVmVjdG9yPEludFJlY3Q+IHJlY3RzOwogICAgIEZsb2F0UG9p
bnQgYWJzUG9zID0gcmVuZGVyZXIoKS0+bG9jYWxUb0Fic29sdXRlKCk7Ci0gICAgcmVuZGVyZXIo
KS0+YWJzb2x1dGVSZWN0cyhyZWN0cywgYWJzUG9zLngoKSwgYWJzUG9zLnkoKSk7CisgICAgcmVu
ZGVyZXIoKS0+YWJzb2x1dGVSZWN0cyhyZWN0cywgZmxvb3JlZEludFBvaW50KGFic1BvcykpOwog
ICAgIHNpemVfdCBuID0gcmVjdHMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bjsgKytpKQogICAgICAgICBpZiAoIXJlY3RzW2ldLmlzRW1wdHkoKSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSW5saW5lQm94LmgJKHJldmlzaW9uIDg4MjQ5KQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0lubGluZUJveC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzYsNiArMjM2LDcg
QEAgcHVibGljOgogCiAgICAgZmxvYXQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBpc0hvcml6b250
YWwoKSA/IGxvZ2ljYWxXaWR0aCgpIDogbG9naWNhbEhlaWdodCgpOyB9CiAgICAgZmxvYXQgaGVp
Z2h0KCkgY29uc3QgeyByZXR1cm4gaXNIb3Jpem9udGFsKCkgPyBsb2dpY2FsSGVpZ2h0KCkgOiBs
b2dpY2FsV2lkdGgoKTsgfQorICAgIEZsb2F0U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gSW50
U2l6ZSh3aWR0aCgpLCBoZWlnaHQoKSk7IH0KICAgICBmbG9hdCByaWdodCgpIGNvbnN0IHsgcmV0
dXJuIGxlZnQoKSArIHdpZHRoKCk7IH0KICAgICBmbG9hdCBib3R0b20oKSBjb25zdCB7IHJldHVy
biB0b3AoKSArIGhlaWdodCgpOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcAkocmV2aXNpb24gODgyNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NjY0LDcgKzU2NjQsNyBAQCB2
b2lkIFJlbmRlckJsb2NrOjpzZXRQYWdlTG9naWNhbE9mZnNldChpCiAgICAgbV9yYXJlRGF0YS0+
bV9wYWdlTG9naWNhbE9mZnNldCA9IGxvZ2ljYWxPZmZzZXQ7CiB9CiAKLXZvaWQgUmVuZGVyQmxv
Y2s6OmFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgaW50IHR4LCBpbnQgdHkp
Cit2b2lkIFJlbmRlckJsb2NrOjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMs
IGNvbnN0IEludFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkKIHsKICAgICAvLyBGb3IgYmxvY2tz
IGluc2lkZSBpbmxpbmVzLCB3ZSBnbyBhaGVhZCBhbmQgaW5jbHVkZSBtYXJnaW5zIHNvIHRoYXQg
d2UgcnVuIHJpZ2h0IHVwIHRvIHRoZQogICAgIC8vIGlubGluZSBib3hlcyBhYm92ZSBhbmQgYmVs
b3cgdXMgKHRodXMgZ2V0dGluZyBtZXJnZWQgd2l0aCB0aGVtIHRvIGZvcm0gYSBzaW5nbGUgaXJy
ZWd1bGFyCkBAIC01NjcyLDEzICs1NjcyLDEyIEBAIHZvaWQgUmVuZGVyQmxvY2s6OmFic29sdXRl
UmVjdHMoVmVjdG9yPEkKICAgICBpZiAoaXNBbm9ueW1vdXNCbG9ja0NvbnRpbnVhdGlvbigpKSB7
CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIHdyb25nIGZvciBibG9jay1mbG93cyB0aGF0IGFy
ZSBob3Jpem9udGFsLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDY3ODEKLSAgICAgICAgcmVjdHMuYXBwZW5kKEludFJlY3QodHgsIHR5IC0gY29s
bGFwc2VkTWFyZ2luQmVmb3JlKCksCisgICAgICAgIHJlY3RzLmFwcGVuZChJbnRSZWN0KGFjY3Vt
dWxhdGVkT2Zmc2V0LngoKSwgYWNjdW11bGF0ZWRPZmZzZXQueSgpIC0gY29sbGFwc2VkTWFyZ2lu
QmVmb3JlKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoKCksIGhlaWdodCgp
ICsgY29sbGFwc2VkTWFyZ2luQmVmb3JlKCkgKyBjb2xsYXBzZWRNYXJnaW5BZnRlcigpKSk7Ci0g
ICAgICAgIGNvbnRpbnVhdGlvbigpLT5hYnNvbHV0ZVJlY3RzKHJlY3RzLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0eCAtIHgoKSArIGlubGluZUVsZW1lbnRDb250aW51
YXRpb24oKS0+Y29udGFpbmluZ0Jsb2NrKCktPngoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdHkgLSB5KCkgKyBpbmxpbmVFbGVtZW50Q29udGludWF0aW9uKCktPmNv
bnRhaW5pbmdCbG9jaygpLT55KCkpOworICAgICAgICBjb250aW51YXRpb24oKS0+YWJzb2x1dGVS
ZWN0cyhyZWN0cywgYWNjdW11bGF0ZWRPZmZzZXQgLSB0b1NpemUobG9jYXRpb24oKSArCisgICAg
ICAgICAgICAgICAgaW5saW5lRWxlbWVudENvbnRpbnVhdGlvbigpLT5jb250YWluaW5nQmxvY2so
KS0+bG9jYXRpb24oKSkpOwogICAgIH0gZWxzZQotICAgICAgICByZWN0cy5hcHBlbmQoSW50UmVj
dCh0eCwgdHksIHdpZHRoKCksIGhlaWdodCgpKSk7CisgICAgICAgIHJlY3RzLmFwcGVuZChJbnRS
ZWN0KGFjY3VtdWxhdGVkT2Zmc2V0LCBzaXplKCkpKTsKIH0KIAogdm9pZCBSZW5kZXJCbG9jazo6
YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAkocmV2aXNpb24gODgyNDkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNjI1LDcgKzYy
NSw3IEBAIHByaXZhdGU6CiAgICAgaW50IGxvZ2ljYWxMZWZ0U2VsZWN0aW9uT2Zmc2V0KFJlbmRl
ckJsb2NrKiByb290QmxvY2ssIGludCBwb3NpdGlvbik7CiAgICAgaW50IGxvZ2ljYWxSaWdodFNl
bGVjdGlvbk9mZnNldChSZW5kZXJCbG9jayogcm9vdEJsb2NrLCBpbnQgcG9zaXRpb24pOwogICAg
IAotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGludCB0
eCwgaW50IHR5KTsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVj
dD4mLCBjb25zdCBJbnRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpOwogICAgIHZpcnR1YWwgdm9p
ZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+Jik7CiAKICAgICBpbnQgZGVzaXJlZENv
bHVtbldpZHRoKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmNwcAkocmV2aXNpb24gODgyNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDU1LDkgKzQ1NSw5IEBAIHZvaWQgUmVuZGVyQm94
OjpzZXRTY3JvbGxUb3AoaW50IG5ld1RvcCkKICAgICAgICAgbGF5ZXIoKS0+c2Nyb2xsVG9ZT2Zm
c2V0KG5ld1RvcCk7CiB9CiAKLXZvaWQgUmVuZGVyQm94OjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxJ
bnRSZWN0PiYgcmVjdHMsIGludCB0eCwgaW50IHR5KQordm9pZCBSZW5kZXJCb3g6OmFic29sdXRl
UmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgY29uc3QgSW50UG9pbnQmIGFjY3VtdWxhdGVk
T2Zmc2V0KQogewotICAgIHJlY3RzLmFwcGVuZChJbnRSZWN0KHR4LCB0eSwgd2lkdGgoKSwgaGVp
Z2h0KCkpKTsKKyAgICByZWN0cy5hcHBlbmQoSW50UmVjdChhY2N1bXVsYXRlZE9mZnNldCwgc2l6
ZSgpKSk7CiB9CiAKIHZvaWQgUmVuZGVyQm94OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1
YWQ+JiBxdWFkcykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgJKHJldmlz
aW9uIDg4MjQ5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMzAsNyArMjMwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgaW50IGNv
bGxhcHNlZE1hcmdpbkJlZm9yZSgpIGNvbnN0IHsgcmV0dXJuIG1hcmdpbkJlZm9yZSgpOyB9CiAg
ICAgdmlydHVhbCBpbnQgY29sbGFwc2VkTWFyZ2luQWZ0ZXIoKSBjb25zdCB7IHJldHVybiBtYXJn
aW5BZnRlcigpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50
UmVjdD4mLCBpbnQgdHgsIGludCB0eSk7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMo
VmVjdG9yPEludFJlY3Q+JiwgY29uc3QgSW50UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KTsKICAg
ICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYpOwogICAgIAog
ICAgIEludFJlY3QgcmVmbGVjdGlvbkJveCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAJKHJldmlzaW9uIDg4MjQ5KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2NSwy
NCArNDY1LDIyIEBAIHZvaWQgUmVuZGVySW5saW5lOjpwYWludChQYWludEluZm8mIHBhaW4KICAg
ICBtX2xpbmVCb3hlcy5wYWludCh0aGlzLCBwYWludEluZm8sIHR4LCB0eSk7CiB9CiAKLXZvaWQg
UmVuZGVySW5saW5lOjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGludCB0
eCwgaW50IHR5KQordm9pZCBSZW5kZXJJbmxpbmU6OmFic29sdXRlUmVjdHMoVmVjdG9yPEludFJl
Y3Q+JiByZWN0cywgY29uc3QgSW50UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KQogewogICAgIGlm
ICghYWx3YXlzQ3JlYXRlTGluZUJveGVzKCkpCi0gICAgICAgIGN1bGxlZElubGluZUFic29sdXRl
UmVjdHModGhpcywgcmVjdHMsIEludFNpemUodHgsIHR5KSk7CisgICAgICAgIGN1bGxlZElubGlu
ZUFic29sdXRlUmVjdHModGhpcywgcmVjdHMsIHRvU2l6ZShhY2N1bXVsYXRlZE9mZnNldCkpOwog
ICAgIGVsc2UgaWYgKElubGluZUZsb3dCb3gqIGN1cnIgPSBmaXJzdExpbmVCb3goKSkgewogICAg
ICAgICBmb3IgKDsgY3VycjsgY3VyciA9IGN1cnItPm5leHRMaW5lQm94KCkpCi0gICAgICAgICAg
ICByZWN0cy5hcHBlbmQoZW5jbG9zaW5nSW50UmVjdChGbG9hdFJlY3QodHggKyBjdXJyLT54KCks
IHR5ICsgY3Vyci0+eSgpLCBjdXJyLT53aWR0aCgpLCBjdXJyLT5oZWlnaHQoKSkpKTsKKyAgICAg
ICAgICAgIHJlY3RzLmFwcGVuZChlbmNsb3NpbmdJbnRSZWN0KEZsb2F0UmVjdChhY2N1bXVsYXRl
ZE9mZnNldCArIGN1cnItPnRvcExlZnQoKSwgY3Vyci0+c2l6ZSgpKSkpOwogICAgIH0gZWxzZQot
ICAgICAgICByZWN0cy5hcHBlbmQoSW50UmVjdCh0eCwgdHksIDAsIDApKTsKKyAgICAgICAgcmVj
dHMuYXBwZW5kKEludFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQsIEludFNpemUoKSkpOwogCiAgICAg
aWYgKGNvbnRpbnVhdGlvbigpKSB7CiAgICAgICAgIGlmIChjb250aW51YXRpb24oKS0+aXNCb3go
KSkgewogICAgICAgICAgICAgUmVuZGVyQm94KiBib3ggPSB0b1JlbmRlckJveChjb250aW51YXRp
b24oKSk7Ci0gICAgICAgICAgICBjb250aW51YXRpb24oKS0+YWJzb2x1dGVSZWN0cyhyZWN0cywg
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eCAtIGNvbnRhaW5p
bmdCbG9jaygpLT54KCkgKyBib3gtPngoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHR5IC0gY29udGFpbmluZ0Jsb2NrKCktPnkoKSArIGJveC0+eSgpKTsKKyAg
ICAgICAgICAgIGNvbnRpbnVhdGlvbigpLT5hYnNvbHV0ZVJlY3RzKHJlY3RzLCB0b1BvaW50KGFj
Y3VtdWxhdGVkT2Zmc2V0IC0gY29udGFpbmluZ0Jsb2NrKCktPmxvY2F0aW9uKCkgKyBib3gtPnNp
emUoKSkpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGNvbnRpbnVhdGlvbigpLT5hYnNv
bHV0ZVJlY3RzKHJlY3RzLCB0eCAtIGNvbnRhaW5pbmdCbG9jaygpLT54KCksIHR5IC0gY29udGFp
bmluZ0Jsb2NrKCktPnkoKSk7CisgICAgICAgICAgICBjb250aW51YXRpb24oKS0+YWJzb2x1dGVS
ZWN0cyhyZWN0cywgdG9Qb2ludChhY2N1bXVsYXRlZE9mZnNldCAtIGNvbnRhaW5pbmdCbG9jaygp
LT5sb2NhdGlvbigpKSk7CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW5saW5lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcklubGluZS5oCShyZXZpc2lvbiA4ODI0OSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbmxpbmUuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBpbnQgbWFyZ2luU3RhcnQoKSBjb25zdDsKICAgICB2aXJ0dWFsIGlu
dCBtYXJnaW5FbmQoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZl
Y3RvcjxJbnRSZWN0PiYsIGludCB0eCwgaW50IHR5KTsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1
dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBJbnRQb2ludCYgYWNjdW11bGF0ZWRPZmZz
ZXQpOwogICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+Jik7
CiAKICAgICB2aXJ0dWFsIEludFNpemUgb2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJPYmplY3Qq
LCBjb25zdCBJbnRQb2ludCYpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5jcHAJKHJldmlzaW9uIDg4MjQ5KQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOTksNyArMTA5OSw3
IEBAIEludFJlY3QgUmVuZGVyT2JqZWN0OjphYnNvbHV0ZUJvdW5kaW5nQm8KIAogICAgIEZsb2F0
UG9pbnQgYWJzUG9zID0gbG9jYWxUb0Fic29sdXRlKCk7CiAgICAgVmVjdG9yPEludFJlY3Q+IHJl
Y3RzOwotICAgIGFic29sdXRlUmVjdHMocmVjdHMsIGFic1Bvcy54KCksIGFic1Bvcy55KCkpOwor
ICAgIGFic29sdXRlUmVjdHMocmVjdHMsIGZsb29yZWRJbnRQb2ludChhYnNQb3MpKTsKIAogICAg
IHNpemVfdCBuID0gcmVjdHMuc2l6ZSgpOwogICAgIGlmICghbikKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgJKHJldmlzaW9uIDg4MjQ5KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OTAsNyAr
NTkwLDcgQEAgcHVibGljOgogICAgIC8vIFJldHVybiB0aGUgb2Zmc2V0IGZyb20gYW4gb2JqZWN0
IHVwIHRoZSBjb250YWluZXIoKSBjaGFpbi4gQXNzZXJ0cyB0aGF0IG5vbmUgb2YgdGhlIGludGVy
bWVkaWF0ZSBvYmplY3RzIGhhdmUgdHJhbnNmb3Jtcy4KICAgICBJbnRTaXplIG9mZnNldEZyb21B
bmNlc3RvckNvbnRhaW5lcihSZW5kZXJPYmplY3QqKSBjb25zdDsKICAgICAKLSAgICB2aXJ0dWFs
IHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBpbnQsIGludCkgeyB9CisgICAg
dmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgSW50UG9p
bnQmKSB7IH0KICAgICAvLyBGSVhNRTogdXNlVHJhbnNmb3JtcyBzaG91bGQgZ28gYXdheSBldmVu
dHVhbGx5CiAgICAgSW50UmVjdCBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdChib29sIHVzZVRyYW5z
Zm9ybXMgPSBmYWxzZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dC5jcHAJKHJldmlzaW9uIDg4MjQ5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjksMTAgKzI2OSwxMCBAQCBQYXNzUmVmUHRy
PFN0cmluZ0ltcGw+IFJlbmRlclRleHQ6Om9yaWdpCiAgICAgcmV0dXJuIChlICYmIGUtPmlzVGV4
dE5vZGUoKSkgPyBzdGF0aWNfY2FzdDxUZXh0Kj4oZSktPmRhdGFJbXBsKCkgOiAwOwogfQogCi12
b2lkIFJlbmRlclRleHQ6OmFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgaW50
IHR4LCBpbnQgdHkpCit2b2lkIFJlbmRlclRleHQ6OmFic29sdXRlUmVjdHMoVmVjdG9yPEludFJl
Y3Q+JiByZWN0cywgY29uc3QgSW50UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KQogewogICAgIGZv
ciAoSW5saW5lVGV4dEJveCogYm94ID0gZmlyc3RUZXh0Qm94KCk7IGJveDsgYm94ID0gYm94LT5u
ZXh0VGV4dEJveCgpKQotICAgICAgICByZWN0cy5hcHBlbmQoZW5jbG9zaW5nSW50UmVjdChGbG9h
dFJlY3QodHggKyBib3gtPngoKSwgdHkgKyBib3gtPnkoKSwgYm94LT53aWR0aCgpLCBib3gtPmhl
aWdodCgpKSkpOworICAgICAgICByZWN0cy5hcHBlbmQoZW5jbG9zaW5nSW50UmVjdChGbG9hdFJl
Y3QoYWNjdW11bGF0ZWRPZmZzZXQgKyBib3gtPnRvcExlZnQoKSwgYm94LT5zaXplKCkpKSk7CiB9
CiAKIHZvaWQgUmVuZGVyVGV4dDo6YWJzb2x1dGVSZWN0c0ZvclJhbmdlKFZlY3RvcjxJbnRSZWN0
PiYgcmVjdHMsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQsIGJvb2wgdXNlU2VsZWN0aW9u
SGVpZ2h0KQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCShyZXZpc2lv
biA4ODI0OSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIElubGluZVRleHRCb3gqIGNy
ZWF0ZUlubGluZVRleHRCb3goKTsKICAgICB2b2lkIGRpcnR5TGluZUJveGVzKGJvb2wgZnVsbExh
eW91dCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4m
LCBpbnQgdHgsIGludCB0eSk7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9y
PEludFJlY3Q+JiwgY29uc3QgSW50UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KTsKICAgICB2b2lk
IGFic29sdXRlUmVjdHNGb3JSYW5nZShWZWN0b3I8SW50UmVjdD4mLCB1bnNpZ25lZCBzdGFydE9m
ZnNldCA9IDAsIHVuc2lnbmVkIGVuZE9mZnNldCA9IFVJTlRfTUFYLCBib29sIHVzZVNlbGVjdGlv
bkhlaWdodCA9IGZhbHNlKTsKIAogICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3Rv
cjxGbG9hdFF1YWQ+Jik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmll
dy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcu
Y3BwCShyZXZpc2lvbiA4ODI0OSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJW
aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIxLDkgKzMyMSw5IEBAIHZvaWQgUmVuZGVyVmll
dzo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KFIKICAgICAgICAgcmVjdCA9IG1fbGF5ZXItPnRyYW5z
Zm9ybSgpLT5tYXBSZWN0KHJlY3QpOwogfQogCi12b2lkIFJlbmRlclZpZXc6OmFic29sdXRlUmVj
dHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgaW50IHR4LCBpbnQgdHkpCit2b2lkIFJlbmRlclZp
ZXc6OmFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgY29uc3QgSW50UG9pbnQm
IGFjY3VtdWxhdGVkT2Zmc2V0KQogewotICAgIHJlY3RzLmFwcGVuZChJbnRSZWN0KEludFBvaW50
KHR4LCB0eSksIG1fbGF5ZXItPnNpemUoKSkpOworICAgIHJlY3RzLmFwcGVuZChJbnRSZWN0KGFj
Y3VtdWxhdGVkT2Zmc2V0LCBtX2xheWVyLT5zaXplKCkpKTsKIH0KIAogdm9pZCBSZW5kZXJWaWV3
OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcykKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAkocmV2aXNpb24gODgyNDkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgcHJpbnRpbmcoKSBjb25zdDsKIAotICAgIHZpcnR1YWwg
dm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGludCB0eCwgaW50IHR5KTsKKyAg
ICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBJbnRQ
b2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpOwogICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRz
KFZlY3RvcjxGbG9hdFF1YWQ+Jik7CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2Nr
LmNwcAkocmV2aXNpb24gODgyNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0Jsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgsNyArNjgsNyBAQCB2b2lkIFJl
bmRlclNWR0Jsb2NrOjp1cGRhdGVCb3hNb2RlbEluZm9GCiAgICAgc2V0SGFzT3ZlcmZsb3dDbGlw
KGZhbHNlKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdCbG9jazo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8
SW50UmVjdD4mLCBpbnQsIGludCkKK3ZvaWQgUmVuZGVyU1ZHQmxvY2s6OmFic29sdXRlUmVjdHMo
VmVjdG9yPEludFJlY3Q+JiwgY29uc3QgSW50UG9pbnQmKQogewogICAgIC8vIFRoaXMgY29kZSBw
YXRoIHNob3VsZCBuZXZlciBiZSB0YWtlbiBmb3IgU1ZHLCBhcyB3ZSdyZSBhc3N1bWluZyB1c2VU
cmFuc2Zvcm1zPXRydWUgZXZlcnl3aGVyZSwgYWJzb2x1dGVRdWFkcyBzaG91bGQgYmUgdXNlZC4K
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmgJKHJldmlzaW9uIDg4MjQ5KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Niw3ICszNiw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNldFN0eWxlKFBhc3NSZWZQ
dHI8UmVuZGVyU3R5bGU+KTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQm94TW9kZWxJbmZvRnJv
bVN0eWxlKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVj
dD4mLCBpbnQgdHgsIGludCB0eSk7CisgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVj
dG9yPEludFJlY3Q+JiwgY29uc3QgSW50UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KTsKIAogICAg
IHZpcnR1YWwgdm9pZCBkZXN0cm95KCk7CiAgICAgdmlydHVhbCB2b2lkIHN0eWxlV2lsbENoYW5n
ZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBuZXdTdHlsZSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2Jq
ZWN0LmNwcAkocmV2aXNpb24gODgyNDkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBA
QCBJbnRSZWN0IFJlbmRlclNWR01vZGVsT2JqZWN0OjpvdXRsaW5lQm91CiAgICAgcmV0dXJuIGNv
bnRhaW5lclJlbGF0aXZlUXVhZC5lbmNsb3NpbmdCb3VuZGluZ0JveCgpOwogfQogCi12b2lkIFJl
bmRlclNWR01vZGVsT2JqZWN0OjphYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGludCwg
aW50KQordm9pZCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50
UmVjdD4mLCBjb25zdCBJbnRQb2ludCYpCiB7CiAgICAgLy8gVGhpcyBjb2RlIHBhdGggc2hvdWxk
IG5ldmVyIGJlIHRha2VuIGZvciBTVkcsIGFzIHdlJ3JlIGFzc3VtaW5nIHVzZVRyYW5zZm9ybXM9
dHJ1ZSBldmVyeXdoZXJlLCBhYnNvbHV0ZVF1YWRzIHNob3VsZCBiZSB1c2VkLgogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdNb2RlbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaAkocmV2aXNpb24gODgyNDkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUmVj
dEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEludFJl
Y3QmLCBib29sIGZpeGVkID0gZmFsc2UpOwogICAgIHZpcnR1YWwgSW50UmVjdCBvdXRsaW5lQm91
bmRzRm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgSW50
UG9pbnQqKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxJ
bnRSZWN0PiYsIGludCB0eCwgaW50IHR5KTsKKyAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0
cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBJbnRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpOwog
ICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+Jik7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>