<?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>60585</bug_id>
          
          <creation_ts>2011-05-10 14:52:01 -0700</creation_ts>
          <short_desc>Convert RenderBox::setLocation, setLogicalLocation and setLogicalSize to IntPoint/IntSize</short_desc>
          <delta_ts>2011-05-12 16: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>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>60318</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Emil A Eklund">eae</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>401522</commentid>
    <comment_count>0</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-05-10 14:52:01 -0700</bug_when>
    <thetext>Convert RenderBox to use IntPoint for setLocation and setLogicalLocation instead of x,y pairs and setLogicalSize to use IntSize.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401612</commentid>
    <comment_count>1</comment_count>
      <attachid>93036</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-05-10 16:15:12 -0700</bug_when>
    <thetext>Created attachment 93036
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401655</commentid>
    <comment_count>2</comment_count>
      <attachid>93036</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-05-10 17:01:48 -0700</bug_when>
    <thetext>Comment on attachment 93036
Patch

Attachment 93036 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/8691028</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402412</commentid>
    <comment_count>3</comment_count>
      <attachid>93209</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-05-11 16:29:46 -0700</bug_when>
    <thetext>Created attachment 93209
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402580</commentid>
    <comment_count>4</comment_count>
      <attachid>93209</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-11 20:12:54 -0700</bug_when>
    <thetext>Comment on attachment 93209
Patch

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

&gt; Source/WebCore/rendering/RenderBox.cpp:1374
&gt; +        setLocation(roundedAwayFromZeroIntPoint(FloatPoint(box-&gt;x(), box-&gt;y())));

Seems we should add a box-&gt;position() accessor...  Except aren&apos;t x() y() ints here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402582</commentid>
    <comment_count>5</comment_count>
      <attachid>93209</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-11 20:13:21 -0700</bug_when>
    <thetext>Comment on attachment 93209
Patch

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

&gt; Source/WebCore/platform/graphics/FloatPoint.h:207
&gt; +inline IntPoint roundedAwayFromZeroIntPoint(const FloatPoint&amp; p)
&gt; +{
&gt; +    return IntPoint(lroundf(p.x()), lroundf(p.y()));

I don&apos;t understand why this is the right name?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402948</commentid>
    <comment_count>6</comment_count>
      <attachid>93209</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-05-12 10:40:15 -0700</bug_when>
    <thetext>Comment on attachment 93209
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/FloatPoint.h:207
&gt;&gt; +    return IntPoint(lroundf(p.x()), lroundf(p.y()));
&gt; 
&gt; I don&apos;t understand why this is the right name?

I don&apos;t particularly like the name either but it was the best I could come up with given that roundedIntPoint was already taken and the difference between lround and other similar rounding functions such rint is the handling of the half way case.

Anyway, I suppose I should be using roundedIntPoint instead, it&apos;ll introduce an extra cast but simplifies the code.

&gt;&gt; Source/WebCore/rendering/RenderBox.cpp:1374
&gt;&gt; +        setLocation(roundedAwayFromZeroIntPoint(FloatPoint(box-&gt;x(), box-&gt;y())));
&gt; 
&gt; Seems we should add a box-&gt;position() accessor...  Except aren&apos;t x() y() ints here?

The patch for bug 44412 adds a box-&gt;position method, once that has been landed this will change to 
setLocation(roundedAwayFromZeroIntPoint(box-&gt;location()));</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402987</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-05-12 11:19:53 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; the difference between lround and other similar rounding functions such rint is the handling of the half way case

We should never use rint because we don’t want our code’s behavior to change based on the prevailing rounding mode. For some reason roundedIntPoint uses roundf, but it should probably use lroundf.

I don’t see why we can’t use roundedIntPoint here. Does it give the wrong results for something?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402996</commentid>
    <comment_count>8</comment_count>
      <attachid>93313</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-05-12 11:23:12 -0700</bug_when>
    <thetext>Created attachment 93313
Patch

&gt; I don’t see why we can’t use roundedIntPoint here. Does it give the wrong results for something?
No, it gives the same result for all cases I can come up with. 

Changed RenderBox::positionLineBox to use roundedIntPoint and removed new rounding function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403005</commentid>
    <comment_count>9</comment_count>
      <attachid>93313</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-12 11:27:29 -0700</bug_when>
    <thetext>Comment on attachment 93313
Patch

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

OK.

&gt; Source/WebCore/rendering/RenderBox.h:83
&gt; +            setLocation(IntPoint(location.y(), location.x()));

Seems we want some sort of helper function to do this flip for us.  Not necessarily in this change, but eventually. :)

&gt; Source/WebCore/rendering/RenderBox.h:104
&gt; +            setSize(IntSize(size.height(), size.width()));

Again here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403029</commentid>
    <comment_count>10</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-05-12 11:40:50 -0700</bug_when>
    <thetext>Thanks Eric!

&gt; Seems we want some sort of helper function to do this flip for us.  Not necessarily in this change, but eventually. :)

Couldn&apos;t come up with a good name for one, will add one once I do.


I&apos;ll wait a couple of hours before landing this to give others a chance to object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403032</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-05-12 11:49:20 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Couldn&apos;t come up with a good name for one, will add one once I do.

One idea: flipAxes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403064</commentid>
    <comment_count>12</comment_count>
      <attachid>93323</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-05-12 12:15:09 -0700</bug_when>
    <thetext>Created attachment 93323
Patch

Turns out we already have IntSize::transposedSize and IntPoint::transposedPoint.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403071</commentid>
    <comment_count>13</comment_count>
      <attachid>93323</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-05-12 12:19:48 -0700</bug_when>
    <thetext>Comment on attachment 93323
Patch

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

&gt; Source/WebCore/rendering/RenderTextControlSingleLine.cpp:329
&gt; +        IntPoint location(width() - borderRight() - paddingRight() - spinBox-&gt;width(),
&gt; +                          (diff / 2) + (diff % 2));

This indentation is not the WebKit coding style. I think you should just add IntPoint around (x,y) instead of changing the code so much.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403076</commentid>
    <comment_count>14</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-05-12 12:24:36 -0700</bug_when>
    <thetext>&gt; I think you should just add IntPoint around (x,y) instead of changing the code so much.

Yeah, probably makes more sense in this case. I&apos;ll change it as suggested.

Thanks for the review Darin!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403160</commentid>
    <comment_count>15</comment_count>
      <attachid>93343</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-05-12 14:26:41 -0700</bug_when>
    <thetext>Created attachment 93343
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403236</commentid>
    <comment_count>16</comment_count>
      <attachid>93343</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-12 16:30:20 -0700</bug_when>
    <thetext>Comment on attachment 93343
Patch for landing

Clearing flags on attachment: 93343

Committed r86395: &lt;http://trac.webkit.org/changeset/86395&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403237</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-12 16: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>93036</attachid>
            <date>2011-05-10 16:15:12 -0700</date>
            <delta_ts>2011-05-10 17:56:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>60585.patch</filename>
            <type>text/plain</type>
            <size>13759</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg2MTgyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTEtMDUtMTAgIEVtaWwgQSBF
a2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIENvbnZlcnQgUmVuZGVyQm94OjpzZXRMb2NhdGlvbiwgc2V0TG9n
aWNhbExvY2F0aW9uIGFuZCBzZXRMb2dpY2FsU2l6ZSB0byBJbnRQb2ludC9JbnRTaXplCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDU4NQorCisgICAg
ICAgIFJlZmFjdG9yaW5nLCBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5oOgorICAgICAgICAoV2ViQ29yZTo6cm91bmRl
ZEF3YXlGcm9tWmVyb0ludFBvaW50KToKKyAgICAgICAgQWRkIEZsb2F0LXRvLUludCBjb252ZXJz
aW9uIHVzaW5nIGxyb3VuZGYuCisgICAgICAgIAorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJC
b3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpwb3NpdGlvbkxpbmVCb3gpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJveDo6c2V0TG9naWNhbExvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6
c2V0TG9naWNhbFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpzZXRMb2NhdGlv
bik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjpwbGFjZUNoaWxkKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRnJhbWVT
ZXQ6OnBvc2l0aW9uRnJhbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYW1lU2V0Ojpw
b3NpdGlvbkZyYW1lc1dpdGhGbGF0dGVuaW5nKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TWVkaWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWVkaWE6OmxheW91dCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU2Nyb2xsYmFyUGFydDo6cGFpbnRJbnRvUmVjdCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjphZGp1
c3RMb2dpY2FsSGVpZ2h0Rm9yQ2FwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJs
ZTo6bGF5b3V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlU2VjdGlvbjo6bGF5b3V0Um93cyk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmxheW91dCk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9TVkdSb290SW5saW5lQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1Jvb3RJbmxpbmVCb3g6OmxheW91dFJvb3RCb3gpOgorCiAyMDExLTA1LTEwICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgTGV2
aW4uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2lu
dC5oCShyZXZpc2lvbiA4NjE4MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0Zsb2F0UG9pbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjAyLDYgKzIwMiwxMSBAQCBpbmxpbmUg
SW50UG9pbnQgcm91bmRlZEludFBvaW50KGNvbnN0IEZsCiAgICAgcmV0dXJuIEludFBvaW50KHN0
YXRpY19jYXN0PGludD4ocm91bmRmKHAueCgpKSksIHN0YXRpY19jYXN0PGludD4ocm91bmRmKHAu
eSgpKSkpOwogfQogCitpbmxpbmUgSW50UG9pbnQgcm91bmRlZEF3YXlGcm9tWmVyb0ludFBvaW50
KGNvbnN0IEZsb2F0UG9pbnQmIHApCit7CisgICAgcmV0dXJuIEludFBvaW50KHN0YXRpY19jYXN0
PGludD4obHJvdW5kZihwLngoKSkpLCBzdGF0aWNfY2FzdDxpbnQ+KGxyb3VuZGYocC55KCkpKSk7
Cit9CisKIGZsb2F0IGZpbmRTbG9wZShjb25zdCBGbG9hdFBvaW50JiBwMSwgY29uc3QgRmxvYXRQ
b2ludCYgcDIsIGZsb2F0JiBjKTsKIAogLy8gRmluZCBwb2ludCB3aGVyZSBsaW5lcyB0aHJvdWdo
IHRoZSB0d28gcGFpcnMgb2YgcG9pbnRzIGludGVyc2VjdC4gUmV0dXJucyBmYWxzZSBpZiB0aGUg
bGluZXMgZG9uJ3QgaW50ZXJzZWN0LgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5jcHAJKHJldmlzaW9uIDg2MTgxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNzEsNyArMTM3MSw3IEBAIHZvaWQgUmVu
ZGVyQm94Ojpwb3NpdGlvbkxpbmVCb3goSW5saW5lQm8KICAgICAgICAgYm94LT5yZW1vdmUoKTsK
ICAgICAgICAgYm94LT5kZXN0cm95KHJlbmRlckFyZW5hKCkpOwogICAgIH0gZWxzZSBpZiAoaXNS
ZXBsYWNlZCgpKSB7Ci0gICAgICAgIHNldExvY2F0aW9uKGxyb3VuZGYoYm94LT54KCkpLCBscm91
bmRmKGJveC0+eSgpKSk7CisgICAgICAgIHNldExvY2F0aW9uKHJvdW5kZWRBd2F5RnJvbVplcm9J
bnRQb2ludChGbG9hdFBvaW50KGJveC0+eCgpLCBib3gtPnkoKSkpKTsKICAgICAgICAgbV9pbmxp
bmVCb3hXcmFwcGVyID0gYm94OwogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmgJKHJldmlzaW9uIDg2MTgxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveC5oCSh3b3JraW5nIGNvcHkpCkBAIC03NSw2ICs3NSwxMyBAQCBwdWJsaWM6CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIHNldFgodG9wKTsKICAgICB9CisgICAgdm9pZCBzZXRM
b2dpY2FsTG9jYXRpb24oY29uc3QgSW50UG9pbnQmIGxvY2F0aW9uKQorICAgIHsKKyAgICAgICAg
aWYgKHN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCisgICAgICAgICAgICBzZXRM
b2NhdGlvbihsb2NhdGlvbik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNldExvY2F0aW9u
KEludFBvaW50KGxvY2F0aW9uLnkoKSwgbG9jYXRpb24ueCgpKSk7CisgICAgfQogICAgIHZvaWQg
c2V0TG9naWNhbFdpZHRoKGludCBzaXplKQogICAgIHsKICAgICAgICAgaWYgKHN0eWxlKCktPmlz
SG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCkBAIC04OSwxMiArOTYsMTIgQEAgcHVibGljOgogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICBzZXRXaWR0aChzaXplKTsKICAgICB9Ci0gICAgdm9pZCBz
ZXRMb2dpY2FsTG9jYXRpb24oaW50IGxlZnQsIGludCB0b3ApCisgICAgdm9pZCBzZXRMb2dpY2Fs
U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogICAgIHsKICAgICAgICAgaWYgKHN0eWxlKCktPmlz
SG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCi0gICAgICAgICAgICBzZXRMb2NhdGlvbihsZWZ0LCB0
b3ApOworICAgICAgICAgICAgc2V0U2l6ZShzaXplKTsKICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgc2V0TG9jYXRpb24odG9wLCBsZWZ0KTsKKyAgICAgICAgICAgIHNldFNpemUoSW50U2l6ZShz
aXplLmhlaWdodCgpLCBzaXplLndpZHRoKCkpKTsKICAgICB9CiAKICAgICBJbnRQb2ludCBsb2Nh
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVSZWN0LmxvY2F0aW9uKCk7IH0KQEAgLTEwMiw3
ICsxMDksNiBAQCBwdWJsaWM6CiAgICAgSW50U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9m
cmFtZVJlY3Quc2l6ZSgpOyB9CiAKICAgICB2b2lkIHNldExvY2F0aW9uKGNvbnN0IEludFBvaW50
JiBsb2NhdGlvbikgeyBtX2ZyYW1lUmVjdC5zZXRMb2NhdGlvbihsb2NhdGlvbik7IH0KLSAgICB2
b2lkIHNldExvY2F0aW9uKGludCB4LCBpbnQgeSkgeyBzZXRMb2NhdGlvbihJbnRQb2ludCh4LCB5
KSk7IH0KICAgICAKICAgICB2b2lkIHNldFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkgeyBtX2Zy
YW1lUmVjdC5zZXRTaXplKHNpemUpOyB9CiAgICAgdm9pZCBtb3ZlKGludCBkeCwgaW50IGR5KSB7
IG1fZnJhbWVSZWN0Lm1vdmUoZHgsIGR5KTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCShyZXZpc2lvbiA4NjE4MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTkzOSw3ICs5MzksNyBAQCB2b2lkIFJlbmRlckZsZXhpYmxlQm94OjpwbGFjZUNoaWxkKFJl
bmRlCiAgICAgSW50UmVjdCBvbGRSZWN0KGNoaWxkLT54KCksIGNoaWxkLT55KCkgLCBjaGlsZC0+
d2lkdGgoKSwgY2hpbGQtPmhlaWdodCgpKTsKIAogICAgIC8vIFBsYWNlIHRoZSBjaGlsZC4KLSAg
ICBjaGlsZC0+c2V0TG9jYXRpb24oeCwgeSk7CisgICAgY2hpbGQtPnNldExvY2F0aW9uKEludFBv
aW50KHgsIHkpKTsKIAogICAgIC8vIElmIHRoZSBjaGlsZCBtb3ZlZCwgd2UgaGF2ZSB0byByZXBh
aW50IGl0IGFzIHdlbGwgYXMgYW55IGZsb2F0aW5nL3Bvc2l0aW9uZWQKICAgICAvLyBkZXNjZW5k
YW50cy4gIEFuIGV4Y2VwdGlvbiBpcyBpZiB3ZSBuZWVkIGEgbGF5b3V0LiAgSW4gdGhpcyBjYXNl
LCB3ZSBrbm93IHdlJ3JlIGdvaW5nIHRvCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRnJhbWVTZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGcmFtZVNldC5jcHAJKHJldmlzaW9uIDg2MTgxKQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTA5LDcgKzUw
OSw3IEBAIHZvaWQgUmVuZGVyRnJhbWVTZXQ6OnBvc2l0aW9uRnJhbWVzKCkKICAgICAgICAgaW50
IHhQb3MgPSAwOwogICAgICAgICBpbnQgaGVpZ2h0ID0gbV9yb3dzLm1fc2l6ZXNbcl07CiAgICAg
ICAgIGZvciAoaW50IGMgPSAwOyBjIDwgY29sczsgYysrKSB7Ci0gICAgICAgICAgICBjaGlsZC0+
c2V0TG9jYXRpb24oeFBvcywgeVBvcyk7CisgICAgICAgICAgICBjaGlsZC0+c2V0TG9jYXRpb24o
SW50UG9pbnQoeFBvcywgeVBvcykpOwogICAgICAgICAgICAgaW50IHdpZHRoID0gbV9jb2xzLm1f
c2l6ZXNbY107CiAKICAgICAgICAgICAgIC8vIGhhcyB0byBiZSByZXNpemVkIGFuZCBpdHNlbGYg
cmVzaXplIGl0cyBjb250ZW50cwpAQCAtNjA2LDcgKzYwNiw3IEBAIHZvaWQgUmVuZGVyRnJhbWVT
ZXQ6OnBvc2l0aW9uRnJhbWVzV2l0aEYKICAgICAgICAgICAgIC8vIGVuc3VyZSB0aGUgcm93cyBh
bmQgY29sdW1ucyBhcmUgZmlsbGVkCiAgICAgICAgICAgICBJbnRSZWN0IG9sZFJlY3QgPSBjaGls
ZC0+ZnJhbWVSZWN0KCk7CiAKLSAgICAgICAgICAgIGNoaWxkLT5zZXRMb2NhdGlvbih4UG9zLCB5
UG9zKTsKKyAgICAgICAgICAgIGNoaWxkLT5zZXRMb2NhdGlvbihJbnRQb2ludCh4UG9zLCB5UG9z
KSk7CiAgICAgICAgICAgICBjaGlsZC0+c2V0SGVpZ2h0KG1fcm93cy5tX3NpemVzW3JdKTsKICAg
ICAgICAgICAgIGNoaWxkLT5zZXRXaWR0aChtX2NvbHMubV9zaXplc1tjXSk7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhLmNwcAkocmV2aXNpb24gODYxODEpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgUmVuZGVyTWVkaWE6OmxheW91dCgpCiAgICAgLy8gYW5k
IHRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIG1hbnkgdGltZXMgcGVyIHNlY29uZCBkdXJpbmcg
cGxheWJhY2ssIHVzZSBhIExheW91dFN0YXRlTWFpbnRhaW5lcjoKICAgICBMYXlvdXRTdGF0ZU1h
aW50YWluZXIgc3RhdGVQdXNoZXIodmlldygpLCB0aGlzLCBJbnRTaXplKHgoKSwgeSgpKSwgaGFz
VHJhbnNmb3JtKCkgfHwgaGFzUmVmbGVjdGlvbigpIHx8IHN0eWxlKCktPmlzRmxpcHBlZEJsb2Nr
c1dyaXRpbmdNb2RlKCkpOwogCi0gICAgY29udHJvbHNSZW5kZXJlci0+c2V0TG9jYXRpb24oYm9y
ZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQoKSwgYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkpOwor
ICAgIGNvbnRyb2xzUmVuZGVyZXItPnNldExvY2F0aW9uKEludFBvaW50KGJvcmRlckxlZnQoKSwg
Ym9yZGVyVG9wKCkpICsgSW50U2l6ZShwYWRkaW5nTGVmdCgpLCBwYWRkaW5nVG9wKCkpKTsKICAg
ICBjb250cm9sc1JlbmRlcmVyLT5zdHlsZSgpLT5zZXRIZWlnaHQoTGVuZ3RoKG5ld1NpemUuaGVp
Z2h0KCksIEZpeGVkKSk7CiAgICAgY29udHJvbHNSZW5kZXJlci0+c3R5bGUoKS0+c2V0V2lkdGgo
TGVuZ3RoKG5ld1NpemUud2lkdGgoKSwgRml4ZWQpKTsKICAgICBjb250cm9sc1JlbmRlcmVyLT5z
ZXROZWVkc0xheW91dCh0cnVlLCBmYWxzZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuY3BwCShyZXZpc2lvbiA4NjE4MSkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTYyLDcgKzE2Miw3IEBAIHZvaWQgUmVuZGVyU2Nyb2xsYmFyUGFydDo6aW1hZ2VD
aGFuZ2VkKFcKIHZvaWQgUmVuZGVyU2Nyb2xsYmFyUGFydDo6cGFpbnRJbnRvUmVjdChHcmFwaGlj
c0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgaW50IHR4LCBpbnQgdHksIGNvbnN0IEludFJlY3Qm
IHJlY3QpCiB7CiAgICAgLy8gTWFrZSBzdXJlIG91ciBkaW1lbnNpb25zIG1hdGNoIHRoZSByZWN0
LgotICAgIHNldExvY2F0aW9uKHJlY3QueCgpIC0gdHgsIHJlY3QueSgpIC0gdHkpOworICAgIHNl
dExvY2F0aW9uKHJlY3QubG9jYXRpb24oKSAtIEludFNpemUodHgsIHR5KSk7CiAgICAgc2V0V2lk
dGgocmVjdC53aWR0aCgpKTsKICAgICBzZXRIZWlnaHQocmVjdC5oZWlnaHQoKSk7CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAkocmV2aXNpb24gODYxODEp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNTcsNyArMjU3LDcgQEAgdm9pZCBSZW5kZXJUYWJsZTo6YWRqdXN0TG9naWNhbEhl
aWdodEZvcgogICAgIEFTU0VSVChtX2NhcHRpb24pOwogICAgIEludFJlY3QgY2FwdGlvblJlY3Qo
bV9jYXB0aW9uLT54KCksIG1fY2FwdGlvbi0+eSgpLCBtX2NhcHRpb24tPndpZHRoKCksIG1fY2Fw
dGlvbi0+aGVpZ2h0KCkpOwogCi0gICAgbV9jYXB0aW9uLT5zZXRMb2dpY2FsTG9jYXRpb24obV9j
YXB0aW9uLT5tYXJnaW5TdGFydCgpLCBsb2dpY2FsSGVpZ2h0KCkpOworICAgIG1fY2FwdGlvbi0+
c2V0TG9naWNhbExvY2F0aW9uKEludFBvaW50KG1fY2FwdGlvbi0+bWFyZ2luU3RhcnQoKSwgbG9n
aWNhbEhlaWdodCgpKSk7CiAgICAgaWYgKCFzZWxmTmVlZHNMYXlvdXQoKSAmJiBtX2NhcHRpb24t
PmNoZWNrRm9yUmVwYWludER1cmluZ0xheW91dCgpKQogICAgICAgICBtX2NhcHRpb24tPnJlcGFp
bnREdXJpbmdMYXlvdXRJZk1vdmVkKGNhcHRpb25SZWN0KTsKIApAQCAtMzc0LDcgKzM3NCw3IEBA
IHZvaWQgUmVuZGVyVGFibGU6OmxheW91dCgpCiAgICAgICAgICAgICBzZWN0aW9uTW92ZWQgPSB0
cnVlOwogICAgICAgICAgICAgbW92ZWRTZWN0aW9uTG9naWNhbFRvcCA9IG1pbihsb2dpY2FsSGVp
Z2h0KCksIHNlY3Rpb24tPmxvZ2ljYWxUb3AoKSkgKyAoc3R5bGUoKS0+aXNIb3Jpem9udGFsV3Jp
dGluZ01vZGUoKSA/IHNlY3Rpb24tPm1pbllWaXN1YWxPdmVyZmxvdygpIDogc2VjdGlvbi0+bWlu
WFZpc3VhbE92ZXJmbG93KCkpOwogICAgICAgICB9Ci0gICAgICAgIHNlY3Rpb24tPnNldExvZ2lj
YWxMb2NhdGlvbihzZWN0aW9uTG9naWNhbExlZnQsIGxvZ2ljYWxIZWlnaHQoKSk7CisgICAgICAg
IHNlY3Rpb24tPnNldExvZ2ljYWxMb2NhdGlvbihJbnRQb2ludChzZWN0aW9uTG9naWNhbExlZnQs
IGxvZ2ljYWxIZWlnaHQoKSkpOwogCiAgICAgICAgIHNldExvZ2ljYWxIZWlnaHQobG9naWNhbEhl
aWdodCgpICsgc2VjdGlvbi0+bG9naWNhbEhlaWdodCgpKTsKICAgICAgICAgc2VjdGlvbiA9IHNl
Y3Rpb25CZWxvdyhzZWN0aW9uKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZVNlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCShyZXZpc2lvbiA4NjE4MSkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
OTMsNyArNDkzLDcgQEAgaW50IFJlbmRlclRhYmxlU2VjdGlvbjo6bGF5b3V0Um93cyhpbnQgdAog
ICAgIGZvciAoaW50IHIgPSAwOyByIDwgdG90YWxSb3dzOyByKyspIHsKICAgICAgICAgLy8gU2V0
IHRoZSByb3cncyB4L3kgcG9zaXRpb24gYW5kIHdpZHRoL2hlaWdodC4KICAgICAgICAgaWYgKFJl
bmRlclRhYmxlUm93KiByb3dSZW5kZXJlciA9IG1fZ3JpZFtyXS5yb3dSZW5kZXJlcikgewotICAg
ICAgICAgICAgcm93UmVuZGVyZXItPnNldExvY2F0aW9uKDAsIG1fcm93UG9zW3JdKTsKKyAgICAg
ICAgICAgIHJvd1JlbmRlcmVyLT5zZXRMb2NhdGlvbihJbnRQb2ludCgwLCBtX3Jvd1Bvc1tyXSkp
OwogICAgICAgICAgICAgcm93UmVuZGVyZXItPnNldExvZ2ljYWxXaWR0aChsb2dpY2FsV2lkdGgo
KSk7CiAgICAgICAgICAgICByb3dSZW5kZXJlci0+c2V0TG9naWNhbEhlaWdodChtX3Jvd1Bvc1ty
ICsgMV0gLSBtX3Jvd1Bvc1tyXSAtIHZzcGFjaW5nKTsKICAgICAgICAgICAgIHJvd1JlbmRlcmVy
LT51cGRhdGVMYXllclRyYW5zZm9ybSgpOwpAQCAtNjA3LDEwICs2MDcsMTIgQEAgaW50IFJlbmRl
clRhYmxlU2VjdGlvbjo6bGF5b3V0Um93cyhpbnQgdAogCiAgICAgICAgICAgICBJbnRSZWN0IG9s
ZENlbGxSZWN0KGNlbGwtPngoKSwgY2VsbC0+eSgpICwgY2VsbC0+d2lkdGgoKSwgY2VsbC0+aGVp
Z2h0KCkpOwogCisgICAgICAgICAgICBJbnRQb2ludCBjZWxsTG9jYXRpb24oMCwgbV9yb3dQb3Nb
cmluZHhdKTsKICAgICAgICAgICAgIGlmICghc3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlv
bigpKQotICAgICAgICAgICAgICAgIGNlbGwtPnNldExvZ2ljYWxMb2NhdGlvbih0YWJsZSgpLT5j
b2x1bW5Qb3NpdGlvbnMoKVtuRWZmQ29sc10gLSB0YWJsZSgpLT5jb2x1bW5Qb3NpdGlvbnMoKVt0
YWJsZSgpLT5jb2xUb0VmZkNvbChjZWxsLT5jb2woKSArIGNlbGwtPmNvbFNwYW4oKSldICsgaHNw
YWNpbmcsIG1fcm93UG9zW3JpbmR4XSk7CisgICAgICAgICAgICAgICAgY2VsbExvY2F0aW9uLnNl
dFgodGFibGUoKS0+Y29sdW1uUG9zaXRpb25zKClbbkVmZkNvbHNdIC0gdGFibGUoKS0+Y29sdW1u
UG9zaXRpb25zKClbdGFibGUoKS0+Y29sVG9FZmZDb2woY2VsbC0+Y29sKCkgKyBjZWxsLT5jb2xT
cGFuKCkpXSArIGhzcGFjaW5nKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBj
ZWxsLT5zZXRMb2dpY2FsTG9jYXRpb24odGFibGUoKS0+Y29sdW1uUG9zaXRpb25zKClbY10gKyBo
c3BhY2luZywgbV9yb3dQb3NbcmluZHhdKTsKKyAgICAgICAgICAgICAgICBjZWxsTG9jYXRpb24u
c2V0WCh0YWJsZSgpLT5jb2x1bW5Qb3NpdGlvbnMoKVtjXSArIGhzcGFjaW5nKTsKKyAgICAgICAg
ICAgIGNlbGwtPnNldExvZ2ljYWxMb2NhdGlvbihjZWxsTG9jYXRpb24pOwogICAgICAgICAgICAg
dmlldygpLT5hZGRMYXlvdXREZWx0YShJbnRTaXplKG9sZENlbGxSZWN0LngoKSAtIGNlbGwtPngo
KSwgb2xkQ2VsbFJlY3QueSgpIC0gY2VsbC0+eSgpKSk7CiAKICAgICAgICAgICAgIGlmIChpbnRy
aW5zaWNQYWRkaW5nQmVmb3JlICE9IG9sZEludHJpbnNpY1BhZGRpbmdCZWZvcmUgfHwgaW50cmlu
c2ljUGFkZGluZ0FmdGVyICE9IG9sZEludHJpbnNpY1BhZGRpbmdBZnRlcikKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmds
ZUxpbmUuY3BwCShyZXZpc2lvbiA4NjE4MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTEsNyAr
MjkxLDcgQEAgdm9pZCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmxheW91dAogCiAgICAg
Ly8gSWdub3JlcyB0aGUgcGFkZGluZ3MgZm9yIHRoZSBpbm5lciBzcGluIGJ1dHRvbi4KICAgICBp
ZiAoUmVuZGVyQm94KiBzcGluQm94ID0gbV9pbm5lclNwaW5CdXR0b24gPyBtX2lubmVyU3BpbkJ1
dHRvbi0+cmVuZGVyQm94KCkgOiAwKSB7Ci0gICAgICAgIHNwaW5Cb3gtPnNldExvY2F0aW9uKHNw
aW5Cb3gtPngoKSArIHBhZGRpbmdSaWdodCgpLCBib3JkZXJUb3AoKSk7CisgICAgICAgIHNwaW5C
b3gtPnNldExvY2F0aW9uKEludFBvaW50KHNwaW5Cb3gtPngoKSArIHBhZGRpbmdSaWdodCgpLCBi
b3JkZXJUb3AoKSkpOwogICAgICAgICBzcGluQm94LT5zZXRIZWlnaHQoaGVpZ2h0KCkgLSBib3Jk
ZXJUb3AoKSAtIGJvcmRlckJvdHRvbSgpKTsKICAgICB9CiAKQEAgLTMyNiw5ICszMjYsMTAgQEAg
dm9pZCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmxheW91dAogICAgICAgICAvLyBJZiB0
aGUgZGlmZiBpcyBvZGQsIHRoZSB0b3AgYXJlYSBvdmVyIHRoZSBzcGluIGJ1dHRvbiB0YWtlcyB0
aGUKICAgICAgICAgLy8gcmVtYWluaW5nIG9uZSBwaXhlbC4gSXQncyBnb29kIGZvciBNYWMgTlNT
dGVwcGVyIGJlY2F1c2UgaXQgaGFzCiAgICAgICAgIC8vIHNoYWRvdyBhdCB0aGUgYm90dG9tLgot
ICAgICAgICBpbnQgeSA9IChkaWZmIC8gMikgKyAoZGlmZiAlIDIpOwotICAgICAgICBpbnQgeCA9
IHdpZHRoKCkgLSBib3JkZXJSaWdodCgpIC0gcGFkZGluZ1JpZ2h0KCkgLSBzcGluQm94LT53aWR0
aCgpOwotICAgICAgICBzcGluQm94LT5zZXRMb2NhdGlvbih4LCB5KTsKKyAgICAgICAgSW50UG9p
bnQgbG9jYXRpb247CisgICAgICAgIGxvY2F0aW9uLnNldFkoKGRpZmYgLyAyKSArIChkaWZmICUg
MikpOworICAgICAgICBsb2NhdGlvbi5zZXRYKHdpZHRoKCkgLSBib3JkZXJSaWdodCgpIC0gcGFk
ZGluZ1JpZ2h0KCkgLSBzcGluQm94LT53aWR0aCgpKTsKKyAgICAgICAgc3BpbkJveC0+c2V0TG9j
YXRpb24obG9jYXRpb24pOwogICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdSb290SW5saW5lQm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJbmxpbmVCb3guY3BwCShyZXZpc2lvbiA4NjE4MSkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUm9vdElubGluZUJveC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE3NiwyMiArMTc2LDE5IEBAIHZvaWQgU1ZHUm9vdElubGluZUJveDo6bGF5
b3V0Um9vdEJveCgpCiAgICAgICAgIGNoaWxkUmVjdC51bml0ZShjaGlsZC0+Y2FsY3VsYXRlQm91
bmRhcmllcygpKTsKICAgICB9CiAKLSAgICBpbnQgeEJsb2NrID0gY2hpbGRSZWN0LngoKTsKLSAg
ICBpbnQgeUJsb2NrID0gY2hpbGRSZWN0LnkoKTsKICAgICBpbnQgd2lkdGhCbG9jayA9IGNoaWxk
UmVjdC53aWR0aCgpOwogICAgIGludCBoZWlnaHRCbG9jayA9IGNoaWxkUmVjdC5oZWlnaHQoKTsK
IAogICAgIC8vIEZpbmFsbHksIGFzc2lnbiB0aGUgcm9vdCBibG9jayBwb3NpdGlvbiwgbm93IHRo
YXQgYWxsIGNvbnRlbnQgaXMgbGFpZCBvdXQuCi0gICAgcGFyZW50QmxvY2stPnNldExvY2F0aW9u
KHhCbG9jaywgeUJsb2NrKTsKLSAgICBwYXJlbnRCbG9jay0+c2V0V2lkdGgod2lkdGhCbG9jayk7
Ci0gICAgcGFyZW50QmxvY2stPnNldEhlaWdodChoZWlnaHRCbG9jayk7CisgICAgcGFyZW50Qmxv
Y2stPnNldExvY2F0aW9uKGNoaWxkUmVjdC5sb2NhdGlvbigpKTsKKyAgICBwYXJlbnRCbG9jay0+
c2V0U2l6ZShjaGlsZFJlY3Quc2l6ZSgpKTsKIAogICAgIC8vIFBvc2l0aW9uIGFsbCBjaGlsZHJl
biByZWxhdGl2ZSB0byB0aGUgcGFyZW50IGJsb2NrLgogICAgIGZvciAoSW5saW5lQm94KiBjaGls
ZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRPbkxpbmUoKSkgewog
ICAgICAgICAvLyBTa2lwIGdlbmVyYXRlZCBjb250ZW50LgogICAgICAgICBpZiAoIWNoaWxkLT5y
ZW5kZXJlcigpLT5ub2RlKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgY2hpbGQt
PmFkanVzdFBvc2l0aW9uKC14QmxvY2ssIC15QmxvY2spOworICAgICAgICBjaGlsZC0+YWRqdXN0
UG9zaXRpb24oLWNoaWxkUmVjdC54KCksIC1jaGlsZFJlY3QueSgpKTsKICAgICB9CiAKICAgICAv
LyBQb3NpdGlvbiBvdXJzZWx2ZXMuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93209</attachid>
            <date>2011-05-11 16:29:46 -0700</date>
            <delta_ts>2011-05-12 11:23:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>60585.patch</filename>
            <type>text/plain</type>
            <size>14321</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg2MjcwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTEtMDUtMTAgIEVtaWwgQSBF
a2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIENvbnZlcnQgUmVuZGVyQm94OjpzZXRMb2NhdGlvbiwgc2V0TG9n
aWNhbExvY2F0aW9uIGFuZCBzZXRMb2dpY2FsU2l6ZSB0byBJbnRQb2ludC9JbnRTaXplCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDU4NQorCisgICAg
ICAgIFJlZmFjdG9yaW5nLCBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5oOgorICAgICAgICAoV2ViQ29yZTo6cm91bmRl
ZEF3YXlGcm9tWmVyb0ludFBvaW50KToKKyAgICAgICAgQWRkIEZsb2F0LXRvLUludCBjb252ZXJz
aW9uIHVzaW5nIGxyb3VuZGYuCisgICAgICAgIAorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJC
b3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpwb3NpdGlvbkxpbmVCb3gpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJveDo6c2V0TG9naWNhbExvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6
c2V0TG9naWNhbFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpzZXRMb2NhdGlv
bik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjpwbGFjZUNoaWxkKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRnJhbWVT
ZXQ6OnBvc2l0aW9uRnJhbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYW1lU2V0Ojpw
b3NpdGlvbkZyYW1lc1dpdGhGbGF0dGVuaW5nKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TWVkaWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWVkaWE6OmxheW91dCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU2Nyb2xsYmFyUGFydDo6cGFpbnRJbnRvUmVjdCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjphZGp1
c3RMb2dpY2FsSGVpZ2h0Rm9yQ2FwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJs
ZTo6bGF5b3V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlU2VjdGlvbjo6bGF5b3V0Um93cyk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmxheW91dCk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9TVkdSb290SW5saW5lQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1Jvb3RJbmxpbmVCb3g6OmxheW91dFJvb3RCb3gpOgorCiAyMDExLTA1LTExICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwu
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5o
CShyZXZpc2lvbiA4NjI3MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zs
b2F0UG9pbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjAyLDYgKzIwMiwxMSBAQCBpbmxpbmUgSW50
UG9pbnQgcm91bmRlZEludFBvaW50KGNvbnN0IEZsCiAgICAgcmV0dXJuIEludFBvaW50KHN0YXRp
Y19jYXN0PGludD4ocm91bmRmKHAueCgpKSksIHN0YXRpY19jYXN0PGludD4ocm91bmRmKHAueSgp
KSkpOwogfQogCitpbmxpbmUgSW50UG9pbnQgcm91bmRlZEF3YXlGcm9tWmVyb0ludFBvaW50KGNv
bnN0IEZsb2F0UG9pbnQmIHApCit7CisgICAgcmV0dXJuIEludFBvaW50KGxyb3VuZGYocC54KCkp
LCBscm91bmRmKHAueSgpKSk7Cit9CisKIGZsb2F0IGZpbmRTbG9wZShjb25zdCBGbG9hdFBvaW50
JiBwMSwgY29uc3QgRmxvYXRQb2ludCYgcDIsIGZsb2F0JiBjKTsKIAogLy8gRmluZCBwb2ludCB3
aGVyZSBsaW5lcyB0aHJvdWdoIHRoZSB0d28gcGFpcnMgb2YgcG9pbnRzIGludGVyc2VjdC4gUmV0
dXJucyBmYWxzZSBpZiB0aGUgbGluZXMgZG9uJ3QgaW50ZXJzZWN0LgpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAJKHJldmlzaW9uIDg2MjcwKQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNzEsNyAr
MTM3MSw3IEBAIHZvaWQgUmVuZGVyQm94Ojpwb3NpdGlvbkxpbmVCb3goSW5saW5lQm8KICAgICAg
ICAgYm94LT5yZW1vdmUoKTsKICAgICAgICAgYm94LT5kZXN0cm95KHJlbmRlckFyZW5hKCkpOwog
ICAgIH0gZWxzZSBpZiAoaXNSZXBsYWNlZCgpKSB7Ci0gICAgICAgIHNldExvY2F0aW9uKGxyb3Vu
ZGYoYm94LT54KCkpLCBscm91bmRmKGJveC0+eSgpKSk7CisgICAgICAgIHNldExvY2F0aW9uKHJv
dW5kZWRBd2F5RnJvbVplcm9JbnRQb2ludChGbG9hdFBvaW50KGJveC0+eCgpLCBib3gtPnkoKSkp
KTsKICAgICAgICAgbV9pbmxpbmVCb3hXcmFwcGVyID0gYm94OwogICAgIH0KIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgJKHJldmlzaW9uIDg2MjcwKQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCSh3b3JraW5nIGNvcHkpCkBAIC03NSw2ICs3
NSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHNldFgodG9wKTsKICAg
ICB9CisgICAgdm9pZCBzZXRMb2dpY2FsTG9jYXRpb24oY29uc3QgSW50UG9pbnQmIGxvY2F0aW9u
KQorICAgIHsKKyAgICAgICAgaWYgKHN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkp
CisgICAgICAgICAgICBzZXRMb2NhdGlvbihsb2NhdGlvbik7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIHNldExvY2F0aW9uKEludFBvaW50KGxvY2F0aW9uLnkoKSwgbG9jYXRpb24ueCgpKSk7
CisgICAgfQogICAgIHZvaWQgc2V0TG9naWNhbFdpZHRoKGludCBzaXplKQogICAgIHsKICAgICAg
ICAgaWYgKHN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCkBAIC04OSwxMiArOTYs
MTIgQEAgcHVibGljOgogICAgICAgICBlbHNlCiAgICAgICAgICAgICBzZXRXaWR0aChzaXplKTsK
ICAgICB9Ci0gICAgdm9pZCBzZXRMb2dpY2FsTG9jYXRpb24oaW50IGxlZnQsIGludCB0b3ApCisg
ICAgdm9pZCBzZXRMb2dpY2FsU2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogICAgIHsKICAgICAg
ICAgaWYgKHN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCi0gICAgICAgICAgICBz
ZXRMb2NhdGlvbihsZWZ0LCB0b3ApOworICAgICAgICAgICAgc2V0U2l6ZShzaXplKTsKICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgc2V0TG9jYXRpb24odG9wLCBsZWZ0KTsKKyAgICAgICAgICAg
IHNldFNpemUoSW50U2l6ZShzaXplLmhlaWdodCgpLCBzaXplLndpZHRoKCkpKTsKICAgICB9CiAK
ICAgICBJbnRQb2ludCBsb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVSZWN0LmxvY2F0
aW9uKCk7IH0KQEAgLTEwMiw3ICsxMDksNiBAQCBwdWJsaWM6CiAgICAgSW50U2l6ZSBzaXplKCkg
Y29uc3QgeyByZXR1cm4gbV9mcmFtZVJlY3Quc2l6ZSgpOyB9CiAKICAgICB2b2lkIHNldExvY2F0
aW9uKGNvbnN0IEludFBvaW50JiBsb2NhdGlvbikgeyBtX2ZyYW1lUmVjdC5zZXRMb2NhdGlvbihs
b2NhdGlvbik7IH0KLSAgICB2b2lkIHNldExvY2F0aW9uKGludCB4LCBpbnQgeSkgeyBzZXRMb2Nh
dGlvbihJbnRQb2ludCh4LCB5KSk7IH0KICAgICAKICAgICB2b2lkIHNldFNpemUoY29uc3QgSW50
U2l6ZSYgc2l6ZSkgeyBtX2ZyYW1lUmVjdC5zZXRTaXplKHNpemUpOyB9CiAgICAgdm9pZCBtb3Zl
KGludCBkeCwgaW50IGR5KSB7IG1fZnJhbWVSZWN0Lm1vdmUoZHgsIGR5KTsgfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwCShyZXZpc2lvbiA4NjI3
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZVNldC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTUwOSw3ICs1MDksNyBAQCB2b2lkIFJlbmRlckZyYW1lU2V0Ojpwb3NpdGlv
bkZyYW1lcygpCiAgICAgICAgIGludCB4UG9zID0gMDsKICAgICAgICAgaW50IGhlaWdodCA9IG1f
cm93cy5tX3NpemVzW3JdOwogICAgICAgICBmb3IgKGludCBjID0gMDsgYyA8IGNvbHM7IGMrKykg
ewotICAgICAgICAgICAgY2hpbGQtPnNldExvY2F0aW9uKHhQb3MsIHlQb3MpOworICAgICAgICAg
ICAgY2hpbGQtPnNldExvY2F0aW9uKEludFBvaW50KHhQb3MsIHlQb3MpKTsKICAgICAgICAgICAg
IGludCB3aWR0aCA9IG1fY29scy5tX3NpemVzW2NdOwogCiAgICAgICAgICAgICAvLyBoYXMgdG8g
YmUgcmVzaXplZCBhbmQgaXRzZWxmIHJlc2l6ZSBpdHMgY29udGVudHMKQEAgLTYwNiw3ICs2MDYs
NyBAQCB2b2lkIFJlbmRlckZyYW1lU2V0Ojpwb3NpdGlvbkZyYW1lc1dpdGhGCiAgICAgICAgICAg
ICAvLyBlbnN1cmUgdGhlIHJvd3MgYW5kIGNvbHVtbnMgYXJlIGZpbGxlZAogICAgICAgICAgICAg
SW50UmVjdCBvbGRSZWN0ID0gY2hpbGQtPmZyYW1lUmVjdCgpOwogCi0gICAgICAgICAgICBjaGls
ZC0+c2V0TG9jYXRpb24oeFBvcywgeVBvcyk7CisgICAgICAgICAgICBjaGlsZC0+c2V0TG9jYXRp
b24oSW50UG9pbnQoeFBvcywgeVBvcykpOwogICAgICAgICAgICAgY2hpbGQtPnNldEhlaWdodCht
X3Jvd3MubV9zaXplc1tyXSk7CiAgICAgICAgICAgICBjaGlsZC0+c2V0V2lkdGgobV9jb2xzLm1f
c2l6ZXNbY10pOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYS5j
cHAJKHJldmlzaW9uIDg2MjcwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1l
ZGlhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNyBAQCB2b2lkIFJlbmRlck1lZGlh
OjpsYXlvdXQoKQogICAgIC8vIGFuZCB0aGlzIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCBtYW55IHRp
bWVzIHBlciBzZWNvbmQgZHVyaW5nIHBsYXliYWNrLCB1c2UgYSBMYXlvdXRTdGF0ZU1haW50YWlu
ZXI6CiAgICAgTGF5b3V0U3RhdGVNYWludGFpbmVyIHN0YXRlUHVzaGVyKHZpZXcoKSwgdGhpcywg
SW50U2l6ZSh4KCksIHkoKSksIGhhc1RyYW5zZm9ybSgpIHx8IGhhc1JlZmxlY3Rpb24oKSB8fCBz
dHlsZSgpLT5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpKTsKIAotICAgIGNvbnRyb2xzUmVu
ZGVyZXItPnNldExvY2F0aW9uKGJvcmRlckxlZnQoKSArIHBhZGRpbmdMZWZ0KCksIGJvcmRlclRv
cCgpICsgcGFkZGluZ1RvcCgpKTsKKyAgICBjb250cm9sc1JlbmRlcmVyLT5zZXRMb2NhdGlvbihJ
bnRQb2ludChib3JkZXJMZWZ0KCksIGJvcmRlclRvcCgpKSArIEludFNpemUocGFkZGluZ0xlZnQo
KSwgcGFkZGluZ1RvcCgpKSk7CiAgICAgY29udHJvbHNSZW5kZXJlci0+c3R5bGUoKS0+c2V0SGVp
Z2h0KExlbmd0aChuZXdTaXplLmhlaWdodCgpLCBGaXhlZCkpOwogICAgIGNvbnRyb2xzUmVuZGVy
ZXItPnN0eWxlKCktPnNldFdpZHRoKExlbmd0aChuZXdTaXplLndpZHRoKCksIEZpeGVkKSk7CiAg
ICAgY29udHJvbHNSZW5kZXJlci0+c2V0TmVlZHNMYXlvdXQodHJ1ZSwgZmFsc2UpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcAko
cmV2aXNpb24gODYyNzApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xs
YmFyUGFydC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Miw3ICsxNjIsNyBAQCB2b2lkIFJlbmRl
clNjcm9sbGJhclBhcnQ6OmltYWdlQ2hhbmdlZChXCiB2b2lkIFJlbmRlclNjcm9sbGJhclBhcnQ6
OnBhaW50SW50b1JlY3QoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGludCB0eCwg
aW50IHR5LCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIC8vIE1ha2Ugc3VyZSBvdXIgZGlt
ZW5zaW9ucyBtYXRjaCB0aGUgcmVjdC4KLSAgICBzZXRMb2NhdGlvbihyZWN0LngoKSAtIHR4LCBy
ZWN0LnkoKSAtIHR5KTsKKyAgICBzZXRMb2NhdGlvbihyZWN0LmxvY2F0aW9uKCkgLSBJbnRTaXpl
KHR4LCB0eSkpOwogICAgIHNldFdpZHRoKHJlY3Qud2lkdGgoKSk7CiAgICAgc2V0SGVpZ2h0KHJl
Y3QuaGVpZ2h0KCkpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZS5jcHAJKHJldmlzaW9uIDg2MjcwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU3LDcgKzI1Nyw3IEBAIHZvaWQgUmVuZGVy
VGFibGU6OmFkanVzdExvZ2ljYWxIZWlnaHRGb3IKICAgICBBU1NFUlQobV9jYXB0aW9uKTsKICAg
ICBJbnRSZWN0IGNhcHRpb25SZWN0KG1fY2FwdGlvbi0+eCgpLCBtX2NhcHRpb24tPnkoKSwgbV9j
YXB0aW9uLT53aWR0aCgpLCBtX2NhcHRpb24tPmhlaWdodCgpKTsKIAotICAgIG1fY2FwdGlvbi0+
c2V0TG9naWNhbExvY2F0aW9uKG1fY2FwdGlvbi0+bWFyZ2luU3RhcnQoKSwgbG9naWNhbEhlaWdo
dCgpKTsKKyAgICBtX2NhcHRpb24tPnNldExvZ2ljYWxMb2NhdGlvbihJbnRQb2ludChtX2NhcHRp
b24tPm1hcmdpblN0YXJ0KCksIGxvZ2ljYWxIZWlnaHQoKSkpOwogICAgIGlmICghc2VsZk5lZWRz
TGF5b3V0KCkgJiYgbV9jYXB0aW9uLT5jaGVja0ZvclJlcGFpbnREdXJpbmdMYXlvdXQoKSkKICAg
ICAgICAgbV9jYXB0aW9uLT5yZXBhaW50RHVyaW5nTGF5b3V0SWZNb3ZlZChjYXB0aW9uUmVjdCk7
CiAKQEAgLTM3NCw3ICszNzQsNyBAQCB2b2lkIFJlbmRlclRhYmxlOjpsYXlvdXQoKQogICAgICAg
ICAgICAgc2VjdGlvbk1vdmVkID0gdHJ1ZTsKICAgICAgICAgICAgIG1vdmVkU2VjdGlvbkxvZ2lj
YWxUb3AgPSBtaW4obG9naWNhbEhlaWdodCgpLCBzZWN0aW9uLT5sb2dpY2FsVG9wKCkpICsgKHN0
eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBzZWN0aW9uLT5taW5ZVmlzdWFsT3Zl
cmZsb3coKSA6IHNlY3Rpb24tPm1pblhWaXN1YWxPdmVyZmxvdygpKTsKICAgICAgICAgfQotICAg
ICAgICBzZWN0aW9uLT5zZXRMb2dpY2FsTG9jYXRpb24oc2VjdGlvbkxvZ2ljYWxMZWZ0LCBsb2dp
Y2FsSGVpZ2h0KCkpOworICAgICAgICBzZWN0aW9uLT5zZXRMb2dpY2FsTG9jYXRpb24oSW50UG9p
bnQoc2VjdGlvbkxvZ2ljYWxMZWZ0LCBsb2dpY2FsSGVpZ2h0KCkpKTsKIAogICAgICAgICBzZXRM
b2dpY2FsSGVpZ2h0KGxvZ2ljYWxIZWlnaHQoKSArIHNlY3Rpb24tPmxvZ2ljYWxIZWlnaHQoKSk7
CiAgICAgICAgIHNlY3Rpb24gPSBzZWN0aW9uQmVsb3coc2VjdGlvbik7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAkocmV2aXNpb24g
ODYyNzApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDkzLDcgKzQ5Myw3IEBAIGludCBSZW5kZXJUYWJsZVNlY3Rp
b246OmxheW91dFJvd3MoaW50IHQKICAgICBmb3IgKGludCByID0gMDsgciA8IHRvdGFsUm93czsg
cisrKSB7CiAgICAgICAgIC8vIFNldCB0aGUgcm93J3MgeC95IHBvc2l0aW9uIGFuZCB3aWR0aC9o
ZWlnaHQuCiAgICAgICAgIGlmIChSZW5kZXJUYWJsZVJvdyogcm93UmVuZGVyZXIgPSBtX2dyaWRb
cl0ucm93UmVuZGVyZXIpIHsKLSAgICAgICAgICAgIHJvd1JlbmRlcmVyLT5zZXRMb2NhdGlvbigw
LCBtX3Jvd1Bvc1tyXSk7CisgICAgICAgICAgICByb3dSZW5kZXJlci0+c2V0TG9jYXRpb24oSW50
UG9pbnQoMCwgbV9yb3dQb3Nbcl0pKTsKICAgICAgICAgICAgIHJvd1JlbmRlcmVyLT5zZXRMb2dp
Y2FsV2lkdGgobG9naWNhbFdpZHRoKCkpOwogICAgICAgICAgICAgcm93UmVuZGVyZXItPnNldExv
Z2ljYWxIZWlnaHQobV9yb3dQb3NbciArIDFdIC0gbV9yb3dQb3Nbcl0gLSB2c3BhY2luZyk7CiAg
ICAgICAgICAgICByb3dSZW5kZXJlci0+dXBkYXRlTGF5ZXJUcmFuc2Zvcm0oKTsKQEAgLTYwNywx
MCArNjA3LDEyIEBAIGludCBSZW5kZXJUYWJsZVNlY3Rpb246OmxheW91dFJvd3MoaW50IHQKIAog
ICAgICAgICAgICAgSW50UmVjdCBvbGRDZWxsUmVjdChjZWxsLT54KCksIGNlbGwtPnkoKSAsIGNl
bGwtPndpZHRoKCksIGNlbGwtPmhlaWdodCgpKTsKIAorICAgICAgICAgICAgSW50UG9pbnQgY2Vs
bExvY2F0aW9uKDAsIG1fcm93UG9zW3JpbmR4XSk7CiAgICAgICAgICAgICBpZiAoIXN0eWxlKCkt
PmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkKLSAgICAgICAgICAgICAgICBjZWxsLT5zZXRMb2dp
Y2FsTG9jYXRpb24odGFibGUoKS0+Y29sdW1uUG9zaXRpb25zKClbbkVmZkNvbHNdIC0gdGFibGUo
KS0+Y29sdW1uUG9zaXRpb25zKClbdGFibGUoKS0+Y29sVG9FZmZDb2woY2VsbC0+Y29sKCkgKyBj
ZWxsLT5jb2xTcGFuKCkpXSArIGhzcGFjaW5nLCBtX3Jvd1Bvc1tyaW5keF0pOworICAgICAgICAg
ICAgICAgIGNlbGxMb2NhdGlvbi5zZXRYKHRhYmxlKCktPmNvbHVtblBvc2l0aW9ucygpW25FZmZD
b2xzXSAtIHRhYmxlKCktPmNvbHVtblBvc2l0aW9ucygpW3RhYmxlKCktPmNvbFRvRWZmQ29sKGNl
bGwtPmNvbCgpICsgY2VsbC0+Y29sU3BhbigpKV0gKyBoc3BhY2luZyk7CiAgICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgY2VsbC0+c2V0TG9naWNhbExvY2F0aW9uKHRhYmxlKCktPmNv
bHVtblBvc2l0aW9ucygpW2NdICsgaHNwYWNpbmcsIG1fcm93UG9zW3JpbmR4XSk7CisgICAgICAg
ICAgICAgICAgY2VsbExvY2F0aW9uLnNldFgodGFibGUoKS0+Y29sdW1uUG9zaXRpb25zKClbY10g
KyBoc3BhY2luZyk7CisgICAgICAgICAgICBjZWxsLT5zZXRMb2dpY2FsTG9jYXRpb24oY2VsbExv
Y2F0aW9uKTsKICAgICAgICAgICAgIHZpZXcoKS0+YWRkTGF5b3V0RGVsdGEoSW50U2l6ZShvbGRD
ZWxsUmVjdC54KCkgLSBjZWxsLT54KCksIG9sZENlbGxSZWN0LnkoKSAtIGNlbGwtPnkoKSkpOwog
CiAgICAgICAgICAgICBpZiAoaW50cmluc2ljUGFkZGluZ0JlZm9yZSAhPSBvbGRJbnRyaW5zaWNQ
YWRkaW5nQmVmb3JlIHx8IGludHJpbnNpY1BhZGRpbmdBZnRlciAhPSBvbGRJbnRyaW5zaWNQYWRk
aW5nQWZ0ZXIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRy
b2xTaW5nbGVMaW5lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcAkocmV2aXNpb24gODYyNzApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjkxLDcgKzI5MSw3IEBAIHZvaWQgUmVuZGVyVGV4dENvbnRyb2xTaW5n
bGVMaW5lOjpsYXlvdXQKIAogICAgIC8vIElnbm9yZXMgdGhlIHBhZGRpbmdzIGZvciB0aGUgaW5u
ZXIgc3BpbiBidXR0b24uCiAgICAgaWYgKFJlbmRlckJveCogc3BpbkJveCA9IG1faW5uZXJTcGlu
QnV0dG9uID8gbV9pbm5lclNwaW5CdXR0b24tPnJlbmRlckJveCgpIDogMCkgewotICAgICAgICBz
cGluQm94LT5zZXRMb2NhdGlvbihzcGluQm94LT54KCkgKyBwYWRkaW5nUmlnaHQoKSwgYm9yZGVy
VG9wKCkpOworICAgICAgICBzcGluQm94LT5zZXRMb2NhdGlvbihJbnRQb2ludChzcGluQm94LT54
KCkgKyBwYWRkaW5nUmlnaHQoKSwgYm9yZGVyVG9wKCkpKTsKICAgICAgICAgc3BpbkJveC0+c2V0
SGVpZ2h0KGhlaWdodCgpIC0gYm9yZGVyVG9wKCkgLSBib3JkZXJCb3R0b20oKSk7CiAgICAgfQog
CkBAIC0zMDAsOSArMzAwLDkgQEAgdm9pZCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6Omxh
eW91dAogICAgICAgICBpZiAobV9pbm5lckJsb2NrKSB7CiAgICAgICAgICAgICAvLyBUaGlzIGlz
IG1vc3RseSB0aGUgY2FzZSB3aGVyZSB0aGlzIGlzIGEgc2VhcmNoIGZpZWxkLiBUaGUgc3BlZWNo
IGJ1dHRvbiBpcyBhIHNpYmxpbmcKICAgICAgICAgICAgIC8vIG9mIHRoZSBpbm5lciBibG9jayBh
bmQgbGFpZCBvdXQgYXQgdGhlIGZhciByaWdodC4KLSAgICAgICAgICAgIGludCB4ID0gd2lkdGgo
KSAtIGJvcmRlckFuZFBhZGRpbmdXaWR0aCgpIC0gYnV0dG9uLT53aWR0aCgpIC0gYnV0dG9uLT5i
b3JkZXJBbmRQYWRkaW5nV2lkdGgoKTsKLSAgICAgICAgICAgIGludCB5ID0gKGhlaWdodCgpIC0g
YnV0dG9uLT5oZWlnaHQoKSkgLyAyOwotICAgICAgICAgICAgYnV0dG9uLT5zZXRMb2NhdGlvbih4
LCB5KTsKKyAgICAgICAgICAgIEludFBvaW50IGxvY2F0aW9uKHdpZHRoKCkgLSBib3JkZXJBbmRQ
YWRkaW5nV2lkdGgoKSAtIGJ1dHRvbi0+d2lkdGgoKSAtIGJ1dHRvbi0+Ym9yZGVyQW5kUGFkZGlu
Z1dpZHRoKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaGVpZ2h0KCkgLSBidXR0
b24tPmhlaWdodCgpKSAvIDIpOworICAgICAgICAgICAgYnV0dG9uLT5zZXRMb2NhdGlvbihsb2Nh
dGlvbik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpbnQgeCA9IHdpZHRoKCkgLSBi
b3JkZXJSaWdodCgpIC0gcGFkZGluZ1JpZ2h0KCkgLSBidXR0b24tPndpZHRoKCk7CiAgICAgICAg
ICAgICBpZiAobV9vdXRlclNwaW5CdXR0b24gJiYgbV9vdXRlclNwaW5CdXR0b24tPnJlbmRlckJv
eCgpKQpAQCAtMzEzLDggKzMxMyw3IEBAIHZvaWQgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5l
OjpsYXlvdXQKICAgICAgICAgICAgICAgICB4IC09IHNwaW5Cb3ggPyBzcGluQm94LT53aWR0aCgp
IDogMDsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBpbm5lclRleHRSZW5kZXJl
ci0+c2V0WChwYWRkaW5nTGVmdCgpICsgYm9yZGVyTGVmdCgpICsgKHNwaW5Cb3ggPyBzcGluQm94
LT53aWR0aCgpIDogMCkpOwotICAgICAgICAgICAgaW50IHkgPSAoaGVpZ2h0KCkgLSBidXR0b24t
PmhlaWdodCgpKSAvIDI7Ci0gICAgICAgICAgICBidXR0b24tPnNldExvY2F0aW9uKHgsIHkpOwor
ICAgICAgICAgICAgYnV0dG9uLT5zZXRMb2NhdGlvbihJbnRQb2ludCh4LCAoaGVpZ2h0KCkgLSBi
dXR0b24tPmhlaWdodCgpKSAvIDIpKTsKICAgICAgICAgfQogICAgIH0KICNlbmRpZgpAQCAtMzI2
LDkgKzMyNSw5IEBAIHZvaWQgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpsYXlvdXQKICAg
ICAgICAgLy8gSWYgdGhlIGRpZmYgaXMgb2RkLCB0aGUgdG9wIGFyZWEgb3ZlciB0aGUgc3BpbiBi
dXR0b24gdGFrZXMgdGhlCiAgICAgICAgIC8vIHJlbWFpbmluZyBvbmUgcGl4ZWwuIEl0J3MgZ29v
ZCBmb3IgTWFjIE5TU3RlcHBlciBiZWNhdXNlIGl0IGhhcwogICAgICAgICAvLyBzaGFkb3cgYXQg
dGhlIGJvdHRvbS4KLSAgICAgICAgaW50IHkgPSAoZGlmZiAvIDIpICsgKGRpZmYgJSAyKTsKLSAg
ICAgICAgaW50IHggPSB3aWR0aCgpIC0gYm9yZGVyUmlnaHQoKSAtIHBhZGRpbmdSaWdodCgpIC0g
c3BpbkJveC0+d2lkdGgoKTsKLSAgICAgICAgc3BpbkJveC0+c2V0TG9jYXRpb24oeCwgeSk7Cisg
ICAgICAgIEludFBvaW50IGxvY2F0aW9uKHdpZHRoKCkgLSBib3JkZXJSaWdodCgpIC0gcGFkZGlu
Z1JpZ2h0KCkgLSBzcGluQm94LT53aWR0aCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAo
ZGlmZiAvIDIpICsgKGRpZmYgJSAyKSk7CisgICAgICAgIHNwaW5Cb3gtPnNldExvY2F0aW9uKGxv
Y2F0aW9uKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
U1ZHUm9vdElubGluZUJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdSb290SW5saW5lQm94LmNwcAkocmV2aXNpb24gODYyNzApCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJbmxpbmVCb3guY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzYsMjIgKzE3NiwxOSBAQCB2b2lkIFNWR1Jvb3RJbmxpbmVCb3g6OmxheW91dFJvb3RC
b3goKQogICAgICAgICBjaGlsZFJlY3QudW5pdGUoY2hpbGQtPmNhbGN1bGF0ZUJvdW5kYXJpZXMo
KSk7CiAgICAgfQogCi0gICAgaW50IHhCbG9jayA9IGNoaWxkUmVjdC54KCk7Ci0gICAgaW50IHlC
bG9jayA9IGNoaWxkUmVjdC55KCk7CiAgICAgaW50IHdpZHRoQmxvY2sgPSBjaGlsZFJlY3Qud2lk
dGgoKTsKICAgICBpbnQgaGVpZ2h0QmxvY2sgPSBjaGlsZFJlY3QuaGVpZ2h0KCk7CiAKICAgICAv
LyBGaW5hbGx5LCBhc3NpZ24gdGhlIHJvb3QgYmxvY2sgcG9zaXRpb24sIG5vdyB0aGF0IGFsbCBj
b250ZW50IGlzIGxhaWQgb3V0LgotICAgIHBhcmVudEJsb2NrLT5zZXRMb2NhdGlvbih4QmxvY2ss
IHlCbG9jayk7Ci0gICAgcGFyZW50QmxvY2stPnNldFdpZHRoKHdpZHRoQmxvY2spOwotICAgIHBh
cmVudEJsb2NrLT5zZXRIZWlnaHQoaGVpZ2h0QmxvY2spOworICAgIHBhcmVudEJsb2NrLT5zZXRM
b2NhdGlvbihjaGlsZFJlY3QubG9jYXRpb24oKSk7CisgICAgcGFyZW50QmxvY2stPnNldFNpemUo
Y2hpbGRSZWN0LnNpemUoKSk7CiAKICAgICAvLyBQb3NpdGlvbiBhbGwgY2hpbGRyZW4gcmVsYXRp
dmUgdG8gdGhlIHBhcmVudCBibG9jay4KICAgICBmb3IgKElubGluZUJveCogY2hpbGQgPSBmaXJz
dENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0T25MaW5lKCkpIHsKICAgICAgICAg
Ly8gU2tpcCBnZW5lcmF0ZWQgY29udGVudC4KICAgICAgICAgaWYgKCFjaGlsZC0+cmVuZGVyZXIo
KS0+bm9kZSgpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGNoaWxkLT5hZGp1c3RQ
b3NpdGlvbigteEJsb2NrLCAteUJsb2NrKTsKKyAgICAgICAgY2hpbGQtPmFkanVzdFBvc2l0aW9u
KC1jaGlsZFJlY3QueCgpLCAtY2hpbGRSZWN0LnkoKSk7CiAgICAgfQogCiAgICAgLy8gUG9zaXRp
b24gb3Vyc2VsdmVzLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93313</attachid>
            <date>2011-05-12 11:23:12 -0700</date>
            <delta_ts>2011-05-12 12:15:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>60585_3.patch</filename>
            <type>text/plain</type>
            <size>13355</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg2MzU3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMDUtMTIgIEVtaWwgQSBF
a2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIENvbnZlcnQgUmVuZGVyQm94OjpzZXRMb2NhdGlvbiwgc2V0TG9n
aWNhbExvY2F0aW9uIGFuZCBzZXRMb2dpY2FsU2l6ZSB0byBJbnRQb2ludC9JbnRTaXplCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDU4NQorCisgICAg
ICAgIFJlZmFjdG9yaW5nLCBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBv
c2l0aW9uTGluZUJveCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5oOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQm94OjpzZXRMb2dpY2FsTG9jYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQm94OjpzZXRMb2dpY2FsU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCb3g6OnNldExvY2F0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRnJhbWVTZXQ6OnBvc2l0aW9uRnJhbWVzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYW1lU2V0Ojpwb3NpdGlvbkZyYW1lc1dpdGhGbGF0
dGVuaW5nKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVkaWEuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTWVkaWE6OmxheW91dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clNjcm9sbGJhclBhcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyUGFy
dDo6cGFpbnRJbnRvUmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjphZGp1c3RMb2dpY2FsSGVpZ2h0Rm9yQ2Fw
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6bGF5b3V0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRhYmxlU2VjdGlvbjo6bGF5b3V0Um93cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRleHRDb250cm9sU2luZ2xlTGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0
Q29udHJvbFNpbmdsZUxpbmU6OmxheW91dCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdS
b290SW5saW5lQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jvb3RJbmxpbmVCb3g6Omxh
eW91dFJvb3RCb3gpOgorCiAyMDExLTA1LTEyICBMdWtlIE1hY3BoZXJzb24gICA8bWFjcGhlcnNv
bkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAJKHJldmlzaW9uIDg2Mjcw
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEzNzEsNyArMTM3MSw3IEBAIHZvaWQgUmVuZGVyQm94Ojpwb3NpdGlvbkxpbmVCb3go
SW5saW5lQm8KICAgICAgICAgYm94LT5yZW1vdmUoKTsKICAgICAgICAgYm94LT5kZXN0cm95KHJl
bmRlckFyZW5hKCkpOwogICAgIH0gZWxzZSBpZiAoaXNSZXBsYWNlZCgpKSB7Ci0gICAgICAgIHNl
dExvY2F0aW9uKGxyb3VuZGYoYm94LT54KCkpLCBscm91bmRmKGJveC0+eSgpKSk7CisgICAgICAg
IHNldExvY2F0aW9uKHJvdW5kZWRJbnRQb2ludChGbG9hdFBvaW50KGJveC0+eCgpLCBib3gtPnko
KSkpKTsKICAgICAgICAgbV9pbmxpbmVCb3hXcmFwcGVyID0gYm94OwogICAgIH0KIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgJKHJldmlzaW9uIDg2MjcwKQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCSh3b3JraW5nIGNvcHkpCkBAIC03NSw2
ICs3NSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHNldFgodG9wKTsK
ICAgICB9CisgICAgdm9pZCBzZXRMb2dpY2FsTG9jYXRpb24oY29uc3QgSW50UG9pbnQmIGxvY2F0
aW9uKQorICAgIHsKKyAgICAgICAgaWYgKHN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2Rl
KCkpCisgICAgICAgICAgICBzZXRMb2NhdGlvbihsb2NhdGlvbik7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHNldExvY2F0aW9uKEludFBvaW50KGxvY2F0aW9uLnkoKSwgbG9jYXRpb24ueCgp
KSk7CisgICAgfQogICAgIHZvaWQgc2V0TG9naWNhbFdpZHRoKGludCBzaXplKQogICAgIHsKICAg
ICAgICAgaWYgKHN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCkBAIC04OSwxMiAr
OTYsMTIgQEAgcHVibGljOgogICAgICAgICBlbHNlCiAgICAgICAgICAgICBzZXRXaWR0aChzaXpl
KTsKICAgICB9Ci0gICAgdm9pZCBzZXRMb2dpY2FsTG9jYXRpb24oaW50IGxlZnQsIGludCB0b3Ap
CisgICAgdm9pZCBzZXRMb2dpY2FsU2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogICAgIHsKICAg
ICAgICAgaWYgKHN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCi0gICAgICAgICAg
ICBzZXRMb2NhdGlvbihsZWZ0LCB0b3ApOworICAgICAgICAgICAgc2V0U2l6ZShzaXplKTsKICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgc2V0TG9jYXRpb24odG9wLCBsZWZ0KTsKKyAgICAgICAg
ICAgIHNldFNpemUoSW50U2l6ZShzaXplLmhlaWdodCgpLCBzaXplLndpZHRoKCkpKTsKICAgICB9
CiAKICAgICBJbnRQb2ludCBsb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVSZWN0Lmxv
Y2F0aW9uKCk7IH0KQEAgLTEwMiw3ICsxMDksNiBAQCBwdWJsaWM6CiAgICAgSW50U2l6ZSBzaXpl
KCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZVJlY3Quc2l6ZSgpOyB9CiAKICAgICB2b2lkIHNldExv
Y2F0aW9uKGNvbnN0IEludFBvaW50JiBsb2NhdGlvbikgeyBtX2ZyYW1lUmVjdC5zZXRMb2NhdGlv
bihsb2NhdGlvbik7IH0KLSAgICB2b2lkIHNldExvY2F0aW9uKGludCB4LCBpbnQgeSkgeyBzZXRM
b2NhdGlvbihJbnRQb2ludCh4LCB5KSk7IH0KICAgICAKICAgICB2b2lkIHNldFNpemUoY29uc3Qg
SW50U2l6ZSYgc2l6ZSkgeyBtX2ZyYW1lUmVjdC5zZXRTaXplKHNpemUpOyB9CiAgICAgdm9pZCBt
b3ZlKGludCBkeCwgaW50IGR5KSB7IG1fZnJhbWVSZWN0Lm1vdmUoZHgsIGR5KTsgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwCShyZXZpc2lvbiA4
NjI3MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZVNldC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTUwOSw3ICs1MDksNyBAQCB2b2lkIFJlbmRlckZyYW1lU2V0Ojpwb3Np
dGlvbkZyYW1lcygpCiAgICAgICAgIGludCB4UG9zID0gMDsKICAgICAgICAgaW50IGhlaWdodCA9
IG1fcm93cy5tX3NpemVzW3JdOwogICAgICAgICBmb3IgKGludCBjID0gMDsgYyA8IGNvbHM7IGMr
KykgewotICAgICAgICAgICAgY2hpbGQtPnNldExvY2F0aW9uKHhQb3MsIHlQb3MpOworICAgICAg
ICAgICAgY2hpbGQtPnNldExvY2F0aW9uKEludFBvaW50KHhQb3MsIHlQb3MpKTsKICAgICAgICAg
ICAgIGludCB3aWR0aCA9IG1fY29scy5tX3NpemVzW2NdOwogCiAgICAgICAgICAgICAvLyBoYXMg
dG8gYmUgcmVzaXplZCBhbmQgaXRzZWxmIHJlc2l6ZSBpdHMgY29udGVudHMKQEAgLTYwNiw3ICs2
MDYsNyBAQCB2b2lkIFJlbmRlckZyYW1lU2V0Ojpwb3NpdGlvbkZyYW1lc1dpdGhGCiAgICAgICAg
ICAgICAvLyBlbnN1cmUgdGhlIHJvd3MgYW5kIGNvbHVtbnMgYXJlIGZpbGxlZAogICAgICAgICAg
ICAgSW50UmVjdCBvbGRSZWN0ID0gY2hpbGQtPmZyYW1lUmVjdCgpOwogCi0gICAgICAgICAgICBj
aGlsZC0+c2V0TG9jYXRpb24oeFBvcywgeVBvcyk7CisgICAgICAgICAgICBjaGlsZC0+c2V0TG9j
YXRpb24oSW50UG9pbnQoeFBvcywgeVBvcykpOwogICAgICAgICAgICAgY2hpbGQtPnNldEhlaWdo
dChtX3Jvd3MubV9zaXplc1tyXSk7CiAgICAgICAgICAgICBjaGlsZC0+c2V0V2lkdGgobV9jb2xz
Lm1fc2l6ZXNbY10pOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVk
aWEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRp
YS5jcHAJKHJldmlzaW9uIDg2MjcwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck1lZGlhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQsNyArNzQsNyBAQCB2b2lkIFJlbmRlck1l
ZGlhOjpsYXlvdXQoKQogICAgIC8vIGFuZCB0aGlzIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCBtYW55
IHRpbWVzIHBlciBzZWNvbmQgZHVyaW5nIHBsYXliYWNrLCB1c2UgYSBMYXlvdXRTdGF0ZU1haW50
YWluZXI6CiAgICAgTGF5b3V0U3RhdGVNYWludGFpbmVyIHN0YXRlUHVzaGVyKHZpZXcoKSwgdGhp
cywgSW50U2l6ZSh4KCksIHkoKSksIGhhc1RyYW5zZm9ybSgpIHx8IGhhc1JlZmxlY3Rpb24oKSB8
fCBzdHlsZSgpLT5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpKTsKIAotICAgIGNvbnRyb2xz
UmVuZGVyZXItPnNldExvY2F0aW9uKGJvcmRlckxlZnQoKSArIHBhZGRpbmdMZWZ0KCksIGJvcmRl
clRvcCgpICsgcGFkZGluZ1RvcCgpKTsKKyAgICBjb250cm9sc1JlbmRlcmVyLT5zZXRMb2NhdGlv
bihJbnRQb2ludChib3JkZXJMZWZ0KCksIGJvcmRlclRvcCgpKSArIEludFNpemUocGFkZGluZ0xl
ZnQoKSwgcGFkZGluZ1RvcCgpKSk7CiAgICAgY29udHJvbHNSZW5kZXJlci0+c3R5bGUoKS0+c2V0
SGVpZ2h0KExlbmd0aChuZXdTaXplLmhlaWdodCgpLCBGaXhlZCkpOwogICAgIGNvbnRyb2xzUmVu
ZGVyZXItPnN0eWxlKCktPnNldFdpZHRoKExlbmd0aChuZXdTaXplLndpZHRoKCksIEZpeGVkKSk7
CiAgICAgY29udHJvbHNSZW5kZXJlci0+c2V0TmVlZHNMYXlvdXQodHJ1ZSwgZmFsc2UpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmNw
cAkocmV2aXNpb24gODYyNzApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Ny
b2xsYmFyUGFydC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Miw3ICsxNjIsNyBAQCB2b2lkIFJl
bmRlclNjcm9sbGJhclBhcnQ6OmltYWdlQ2hhbmdlZChXCiB2b2lkIFJlbmRlclNjcm9sbGJhclBh
cnQ6OnBhaW50SW50b1JlY3QoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGludCB0
eCwgaW50IHR5LCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIC8vIE1ha2Ugc3VyZSBvdXIg
ZGltZW5zaW9ucyBtYXRjaCB0aGUgcmVjdC4KLSAgICBzZXRMb2NhdGlvbihyZWN0LngoKSAtIHR4
LCByZWN0LnkoKSAtIHR5KTsKKyAgICBzZXRMb2NhdGlvbihyZWN0LmxvY2F0aW9uKCkgLSBJbnRT
aXplKHR4LCB0eSkpOwogICAgIHNldFdpZHRoKHJlY3Qud2lkdGgoKSk7CiAgICAgc2V0SGVpZ2h0
KHJlY3QuaGVpZ2h0KCkpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZS5jcHAJKHJldmlzaW9uIDg2MjcwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU3LDcgKzI1Nyw3IEBAIHZvaWQgUmVu
ZGVyVGFibGU6OmFkanVzdExvZ2ljYWxIZWlnaHRGb3IKICAgICBBU1NFUlQobV9jYXB0aW9uKTsK
ICAgICBJbnRSZWN0IGNhcHRpb25SZWN0KG1fY2FwdGlvbi0+eCgpLCBtX2NhcHRpb24tPnkoKSwg
bV9jYXB0aW9uLT53aWR0aCgpLCBtX2NhcHRpb24tPmhlaWdodCgpKTsKIAotICAgIG1fY2FwdGlv
bi0+c2V0TG9naWNhbExvY2F0aW9uKG1fY2FwdGlvbi0+bWFyZ2luU3RhcnQoKSwgbG9naWNhbEhl
aWdodCgpKTsKKyAgICBtX2NhcHRpb24tPnNldExvZ2ljYWxMb2NhdGlvbihJbnRQb2ludChtX2Nh
cHRpb24tPm1hcmdpblN0YXJ0KCksIGxvZ2ljYWxIZWlnaHQoKSkpOwogICAgIGlmICghc2VsZk5l
ZWRzTGF5b3V0KCkgJiYgbV9jYXB0aW9uLT5jaGVja0ZvclJlcGFpbnREdXJpbmdMYXlvdXQoKSkK
ICAgICAgICAgbV9jYXB0aW9uLT5yZXBhaW50RHVyaW5nTGF5b3V0SWZNb3ZlZChjYXB0aW9uUmVj
dCk7CiAKQEAgLTM3NCw3ICszNzQsNyBAQCB2b2lkIFJlbmRlclRhYmxlOjpsYXlvdXQoKQogICAg
ICAgICAgICAgc2VjdGlvbk1vdmVkID0gdHJ1ZTsKICAgICAgICAgICAgIG1vdmVkU2VjdGlvbkxv
Z2ljYWxUb3AgPSBtaW4obG9naWNhbEhlaWdodCgpLCBzZWN0aW9uLT5sb2dpY2FsVG9wKCkpICsg
KHN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBzZWN0aW9uLT5taW5ZVmlzdWFs
T3ZlcmZsb3coKSA6IHNlY3Rpb24tPm1pblhWaXN1YWxPdmVyZmxvdygpKTsKICAgICAgICAgfQot
ICAgICAgICBzZWN0aW9uLT5zZXRMb2dpY2FsTG9jYXRpb24oc2VjdGlvbkxvZ2ljYWxMZWZ0LCBs
b2dpY2FsSGVpZ2h0KCkpOworICAgICAgICBzZWN0aW9uLT5zZXRMb2dpY2FsTG9jYXRpb24oSW50
UG9pbnQoc2VjdGlvbkxvZ2ljYWxMZWZ0LCBsb2dpY2FsSGVpZ2h0KCkpKTsKIAogICAgICAgICBz
ZXRMb2dpY2FsSGVpZ2h0KGxvZ2ljYWxIZWlnaHQoKSArIHNlY3Rpb24tPmxvZ2ljYWxIZWlnaHQo
KSk7CiAgICAgICAgIHNlY3Rpb24gPSBzZWN0aW9uQmVsb3coc2VjdGlvbik7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAkocmV2aXNp
b24gODYyNzApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9u
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDkzLDcgKzQ5Myw3IEBAIGludCBSZW5kZXJUYWJsZVNl
Y3Rpb246OmxheW91dFJvd3MoaW50IHQKICAgICBmb3IgKGludCByID0gMDsgciA8IHRvdGFsUm93
czsgcisrKSB7CiAgICAgICAgIC8vIFNldCB0aGUgcm93J3MgeC95IHBvc2l0aW9uIGFuZCB3aWR0
aC9oZWlnaHQuCiAgICAgICAgIGlmIChSZW5kZXJUYWJsZVJvdyogcm93UmVuZGVyZXIgPSBtX2dy
aWRbcl0ucm93UmVuZGVyZXIpIHsKLSAgICAgICAgICAgIHJvd1JlbmRlcmVyLT5zZXRMb2NhdGlv
bigwLCBtX3Jvd1Bvc1tyXSk7CisgICAgICAgICAgICByb3dSZW5kZXJlci0+c2V0TG9jYXRpb24o
SW50UG9pbnQoMCwgbV9yb3dQb3Nbcl0pKTsKICAgICAgICAgICAgIHJvd1JlbmRlcmVyLT5zZXRM
b2dpY2FsV2lkdGgobG9naWNhbFdpZHRoKCkpOwogICAgICAgICAgICAgcm93UmVuZGVyZXItPnNl
dExvZ2ljYWxIZWlnaHQobV9yb3dQb3NbciArIDFdIC0gbV9yb3dQb3Nbcl0gLSB2c3BhY2luZyk7
CiAgICAgICAgICAgICByb3dSZW5kZXJlci0+dXBkYXRlTGF5ZXJUcmFuc2Zvcm0oKTsKQEAgLTYw
NywxMCArNjA3LDEyIEBAIGludCBSZW5kZXJUYWJsZVNlY3Rpb246OmxheW91dFJvd3MoaW50IHQK
IAogICAgICAgICAgICAgSW50UmVjdCBvbGRDZWxsUmVjdChjZWxsLT54KCksIGNlbGwtPnkoKSAs
IGNlbGwtPndpZHRoKCksIGNlbGwtPmhlaWdodCgpKTsKIAorICAgICAgICAgICAgSW50UG9pbnQg
Y2VsbExvY2F0aW9uKDAsIG1fcm93UG9zW3JpbmR4XSk7CiAgICAgICAgICAgICBpZiAoIXN0eWxl
KCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkKLSAgICAgICAgICAgICAgICBjZWxsLT5zZXRM
b2dpY2FsTG9jYXRpb24odGFibGUoKS0+Y29sdW1uUG9zaXRpb25zKClbbkVmZkNvbHNdIC0gdGFi
bGUoKS0+Y29sdW1uUG9zaXRpb25zKClbdGFibGUoKS0+Y29sVG9FZmZDb2woY2VsbC0+Y29sKCkg
KyBjZWxsLT5jb2xTcGFuKCkpXSArIGhzcGFjaW5nLCBtX3Jvd1Bvc1tyaW5keF0pOworICAgICAg
ICAgICAgICAgIGNlbGxMb2NhdGlvbi5zZXRYKHRhYmxlKCktPmNvbHVtblBvc2l0aW9ucygpW25F
ZmZDb2xzXSAtIHRhYmxlKCktPmNvbHVtblBvc2l0aW9ucygpW3RhYmxlKCktPmNvbFRvRWZmQ29s
KGNlbGwtPmNvbCgpICsgY2VsbC0+Y29sU3BhbigpKV0gKyBoc3BhY2luZyk7CiAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgY2VsbC0+c2V0TG9naWNhbExvY2F0aW9uKHRhYmxlKCkt
PmNvbHVtblBvc2l0aW9ucygpW2NdICsgaHNwYWNpbmcsIG1fcm93UG9zW3JpbmR4XSk7CisgICAg
ICAgICAgICAgICAgY2VsbExvY2F0aW9uLnNldFgodGFibGUoKS0+Y29sdW1uUG9zaXRpb25zKClb
Y10gKyBoc3BhY2luZyk7CisgICAgICAgICAgICBjZWxsLT5zZXRMb2dpY2FsTG9jYXRpb24oY2Vs
bExvY2F0aW9uKTsKICAgICAgICAgICAgIHZpZXcoKS0+YWRkTGF5b3V0RGVsdGEoSW50U2l6ZShv
bGRDZWxsUmVjdC54KCkgLSBjZWxsLT54KCksIG9sZENlbGxSZWN0LnkoKSAtIGNlbGwtPnkoKSkp
OwogCiAgICAgICAgICAgICBpZiAoaW50cmluc2ljUGFkZGluZ0JlZm9yZSAhPSBvbGRJbnRyaW5z
aWNQYWRkaW5nQmVmb3JlIHx8IGludHJpbnNpY1BhZGRpbmdBZnRlciAhPSBvbGRJbnRyaW5zaWNQ
YWRkaW5nQWZ0ZXIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENv
bnRyb2xTaW5nbGVMaW5lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcAkocmV2aXNpb24gODYyNzApCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjkxLDcgKzI5MSw3IEBAIHZvaWQgUmVuZGVyVGV4dENvbnRyb2xT
aW5nbGVMaW5lOjpsYXlvdXQKIAogICAgIC8vIElnbm9yZXMgdGhlIHBhZGRpbmdzIGZvciB0aGUg
aW5uZXIgc3BpbiBidXR0b24uCiAgICAgaWYgKFJlbmRlckJveCogc3BpbkJveCA9IG1faW5uZXJT
cGluQnV0dG9uID8gbV9pbm5lclNwaW5CdXR0b24tPnJlbmRlckJveCgpIDogMCkgewotICAgICAg
ICBzcGluQm94LT5zZXRMb2NhdGlvbihzcGluQm94LT54KCkgKyBwYWRkaW5nUmlnaHQoKSwgYm9y
ZGVyVG9wKCkpOworICAgICAgICBzcGluQm94LT5zZXRMb2NhdGlvbihJbnRQb2ludChzcGluQm94
LT54KCkgKyBwYWRkaW5nUmlnaHQoKSwgYm9yZGVyVG9wKCkpKTsKICAgICAgICAgc3BpbkJveC0+
c2V0SGVpZ2h0KGhlaWdodCgpIC0gYm9yZGVyVG9wKCkgLSBib3JkZXJCb3R0b20oKSk7CiAgICAg
fQogCkBAIC0zMDAsOSArMzAwLDkgQEAgdm9pZCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6
OmxheW91dAogICAgICAgICBpZiAobV9pbm5lckJsb2NrKSB7CiAgICAgICAgICAgICAvLyBUaGlz
IGlzIG1vc3RseSB0aGUgY2FzZSB3aGVyZSB0aGlzIGlzIGEgc2VhcmNoIGZpZWxkLiBUaGUgc3Bl
ZWNoIGJ1dHRvbiBpcyBhIHNpYmxpbmcKICAgICAgICAgICAgIC8vIG9mIHRoZSBpbm5lciBibG9j
ayBhbmQgbGFpZCBvdXQgYXQgdGhlIGZhciByaWdodC4KLSAgICAgICAgICAgIGludCB4ID0gd2lk
dGgoKSAtIGJvcmRlckFuZFBhZGRpbmdXaWR0aCgpIC0gYnV0dG9uLT53aWR0aCgpIC0gYnV0dG9u
LT5ib3JkZXJBbmRQYWRkaW5nV2lkdGgoKTsKLSAgICAgICAgICAgIGludCB5ID0gKGhlaWdodCgp
IC0gYnV0dG9uLT5oZWlnaHQoKSkgLyAyOwotICAgICAgICAgICAgYnV0dG9uLT5zZXRMb2NhdGlv
bih4LCB5KTsKKyAgICAgICAgICAgIEludFBvaW50IGxvY2F0aW9uKHdpZHRoKCkgLSBib3JkZXJB
bmRQYWRkaW5nV2lkdGgoKSAtIGJ1dHRvbi0+d2lkdGgoKSAtIGJ1dHRvbi0+Ym9yZGVyQW5kUGFk
ZGluZ1dpZHRoKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaGVpZ2h0KCkgLSBi
dXR0b24tPmhlaWdodCgpKSAvIDIpOworICAgICAgICAgICAgYnV0dG9uLT5zZXRMb2NhdGlvbihs
b2NhdGlvbik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpbnQgeCA9IHdpZHRoKCkg
LSBib3JkZXJSaWdodCgpIC0gcGFkZGluZ1JpZ2h0KCkgLSBidXR0b24tPndpZHRoKCk7CiAgICAg
ICAgICAgICBpZiAobV9vdXRlclNwaW5CdXR0b24gJiYgbV9vdXRlclNwaW5CdXR0b24tPnJlbmRl
ckJveCgpKQpAQCAtMzEzLDggKzMxMyw3IEBAIHZvaWQgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVM
aW5lOjpsYXlvdXQKICAgICAgICAgICAgICAgICB4IC09IHNwaW5Cb3ggPyBzcGluQm94LT53aWR0
aCgpIDogMDsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBpbm5lclRleHRSZW5k
ZXJlci0+c2V0WChwYWRkaW5nTGVmdCgpICsgYm9yZGVyTGVmdCgpICsgKHNwaW5Cb3ggPyBzcGlu
Qm94LT53aWR0aCgpIDogMCkpOwotICAgICAgICAgICAgaW50IHkgPSAoaGVpZ2h0KCkgLSBidXR0
b24tPmhlaWdodCgpKSAvIDI7Ci0gICAgICAgICAgICBidXR0b24tPnNldExvY2F0aW9uKHgsIHkp
OworICAgICAgICAgICAgYnV0dG9uLT5zZXRMb2NhdGlvbihJbnRQb2ludCh4LCAoaGVpZ2h0KCkg
LSBidXR0b24tPmhlaWdodCgpKSAvIDIpKTsKICAgICAgICAgfQogICAgIH0KICNlbmRpZgpAQCAt
MzI2LDkgKzMyNSw5IEBAIHZvaWQgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpsYXlvdXQK
ICAgICAgICAgLy8gSWYgdGhlIGRpZmYgaXMgb2RkLCB0aGUgdG9wIGFyZWEgb3ZlciB0aGUgc3Bp
biBidXR0b24gdGFrZXMgdGhlCiAgICAgICAgIC8vIHJlbWFpbmluZyBvbmUgcGl4ZWwuIEl0J3Mg
Z29vZCBmb3IgTWFjIE5TU3RlcHBlciBiZWNhdXNlIGl0IGhhcwogICAgICAgICAvLyBzaGFkb3cg
YXQgdGhlIGJvdHRvbS4KLSAgICAgICAgaW50IHkgPSAoZGlmZiAvIDIpICsgKGRpZmYgJSAyKTsK
LSAgICAgICAgaW50IHggPSB3aWR0aCgpIC0gYm9yZGVyUmlnaHQoKSAtIHBhZGRpbmdSaWdodCgp
IC0gc3BpbkJveC0+d2lkdGgoKTsKLSAgICAgICAgc3BpbkJveC0+c2V0TG9jYXRpb24oeCwgeSk7
CisgICAgICAgIEludFBvaW50IGxvY2F0aW9uKHdpZHRoKCkgLSBib3JkZXJSaWdodCgpIC0gcGFk
ZGluZ1JpZ2h0KCkgLSBzcGluQm94LT53aWR0aCgpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAoZGlmZiAvIDIpICsgKGRpZmYgJSAyKSk7CisgICAgICAgIHNwaW5Cb3gtPnNldExvY2F0aW9u
KGxvY2F0aW9uKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHUm9vdElubGluZUJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdSb290SW5saW5lQm94LmNwcAkocmV2aXNpb24gODYyNzApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJbmxpbmVCb3guY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNzYsMjIgKzE3NiwxOSBAQCB2b2lkIFNWR1Jvb3RJbmxpbmVCb3g6OmxheW91dFJv
b3RCb3goKQogICAgICAgICBjaGlsZFJlY3QudW5pdGUoY2hpbGQtPmNhbGN1bGF0ZUJvdW5kYXJp
ZXMoKSk7CiAgICAgfQogCi0gICAgaW50IHhCbG9jayA9IGNoaWxkUmVjdC54KCk7Ci0gICAgaW50
IHlCbG9jayA9IGNoaWxkUmVjdC55KCk7CiAgICAgaW50IHdpZHRoQmxvY2sgPSBjaGlsZFJlY3Qu
d2lkdGgoKTsKICAgICBpbnQgaGVpZ2h0QmxvY2sgPSBjaGlsZFJlY3QuaGVpZ2h0KCk7CiAKICAg
ICAvLyBGaW5hbGx5LCBhc3NpZ24gdGhlIHJvb3QgYmxvY2sgcG9zaXRpb24sIG5vdyB0aGF0IGFs
bCBjb250ZW50IGlzIGxhaWQgb3V0LgotICAgIHBhcmVudEJsb2NrLT5zZXRMb2NhdGlvbih4Qmxv
Y2ssIHlCbG9jayk7Ci0gICAgcGFyZW50QmxvY2stPnNldFdpZHRoKHdpZHRoQmxvY2spOwotICAg
IHBhcmVudEJsb2NrLT5zZXRIZWlnaHQoaGVpZ2h0QmxvY2spOworICAgIHBhcmVudEJsb2NrLT5z
ZXRMb2NhdGlvbihjaGlsZFJlY3QubG9jYXRpb24oKSk7CisgICAgcGFyZW50QmxvY2stPnNldFNp
emUoY2hpbGRSZWN0LnNpemUoKSk7CiAKICAgICAvLyBQb3NpdGlvbiBhbGwgY2hpbGRyZW4gcmVs
YXRpdmUgdG8gdGhlIHBhcmVudCBibG9jay4KICAgICBmb3IgKElubGluZUJveCogY2hpbGQgPSBm
aXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0T25MaW5lKCkpIHsKICAgICAg
ICAgLy8gU2tpcCBnZW5lcmF0ZWQgY29udGVudC4KICAgICAgICAgaWYgKCFjaGlsZC0+cmVuZGVy
ZXIoKS0+bm9kZSgpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGNoaWxkLT5hZGp1
c3RQb3NpdGlvbigteEJsb2NrLCAteUJsb2NrKTsKKyAgICAgICAgY2hpbGQtPmFkanVzdFBvc2l0
aW9uKC1jaGlsZFJlY3QueCgpLCAtY2hpbGRSZWN0LnkoKSk7CiAgICAgfQogCiAgICAgLy8gUG9z
aXRpb24gb3Vyc2VsdmVzLgo=
</data>
<flag name="review"
          id="86458"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93323</attachid>
            <date>2011-05-12 12:15:09 -0700</date>
            <delta_ts>2011-05-12 14:26:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>60585_4.patch</filename>
            <type>text/plain</type>
            <size>13330</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg2MzU3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMDUtMTIgIEVtaWwgQSBF
a2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIENvbnZlcnQgUmVuZGVyQm94OjpzZXRMb2NhdGlvbiwgc2V0TG9n
aWNhbExvY2F0aW9uIGFuZCBzZXRMb2dpY2FsU2l6ZSB0byBJbnRQb2ludC9JbnRTaXplCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDU4NQorCisgICAg
ICAgIFJlZmFjdG9yaW5nLCBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBv
c2l0aW9uTGluZUJveCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5oOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQm94OjpzZXRMb2dpY2FsTG9jYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQm94OjpzZXRMb2dpY2FsU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCb3g6OnNldExvY2F0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRnJhbWVTZXQ6OnBvc2l0aW9uRnJhbWVzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYW1lU2V0Ojpwb3NpdGlvbkZyYW1lc1dpdGhGbGF0
dGVuaW5nKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVkaWEuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTWVkaWE6OmxheW91dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clNjcm9sbGJhclBhcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyUGFy
dDo6cGFpbnRJbnRvUmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjphZGp1c3RMb2dpY2FsSGVpZ2h0Rm9yQ2Fw
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6bGF5b3V0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRhYmxlU2VjdGlvbjo6bGF5b3V0Um93cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRleHRDb250cm9sU2luZ2xlTGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0
Q29udHJvbFNpbmdsZUxpbmU6OmxheW91dCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdS
b290SW5saW5lQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jvb3RJbmxpbmVCb3g6Omxh
eW91dFJvb3RCb3gpOgorCiAyMDExLTA1LTEyICBMdWtlIE1hY3BoZXJzb24gICA8bWFjcGhlcnNv
bkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAJKHJldmlzaW9uIDg2Mjcw
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEzNzEsNyArMTM3MSw3IEBAIHZvaWQgUmVuZGVyQm94Ojpwb3NpdGlvbkxpbmVCb3go
SW5saW5lQm8KICAgICAgICAgYm94LT5yZW1vdmUoKTsKICAgICAgICAgYm94LT5kZXN0cm95KHJl
bmRlckFyZW5hKCkpOwogICAgIH0gZWxzZSBpZiAoaXNSZXBsYWNlZCgpKSB7Ci0gICAgICAgIHNl
dExvY2F0aW9uKGxyb3VuZGYoYm94LT54KCkpLCBscm91bmRmKGJveC0+eSgpKSk7CisgICAgICAg
IHNldExvY2F0aW9uKHJvdW5kZWRJbnRQb2ludChGbG9hdFBvaW50KGJveC0+eCgpLCBib3gtPnko
KSkpKTsKICAgICAgICAgbV9pbmxpbmVCb3hXcmFwcGVyID0gYm94OwogICAgIH0KIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgJKHJldmlzaW9uIDg2MjcwKQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCSh3b3JraW5nIGNvcHkpCkBAIC03NSw2
ICs3NSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHNldFgodG9wKTsK
ICAgICB9CisgICAgdm9pZCBzZXRMb2dpY2FsTG9jYXRpb24oY29uc3QgSW50UG9pbnQmIGxvY2F0
aW9uKQorICAgIHsKKyAgICAgICAgaWYgKHN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2Rl
KCkpCisgICAgICAgICAgICBzZXRMb2NhdGlvbihsb2NhdGlvbik7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHNldExvY2F0aW9uKGxvY2F0aW9uLnRyYW5zcG9zZWRQb2ludCgpKTsKKyAgICB9
CiAgICAgdm9pZCBzZXRMb2dpY2FsV2lkdGgoaW50IHNpemUpCiAgICAgewogICAgICAgICBpZiAo
c3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKQEAgLTg5LDEyICs5NiwxMiBAQCBw
dWJsaWM6CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHNldFdpZHRoKHNpemUpOwogICAgIH0K
LSAgICB2b2lkIHNldExvZ2ljYWxMb2NhdGlvbihpbnQgbGVmdCwgaW50IHRvcCkKKyAgICB2b2lk
IHNldExvZ2ljYWxTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgewogICAgICAgICBpZiAo
c3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKLSAgICAgICAgICAgIHNldExvY2F0
aW9uKGxlZnQsIHRvcCk7CisgICAgICAgICAgICBzZXRTaXplKHNpemUpOwogICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBzZXRMb2NhdGlvbih0b3AsIGxlZnQpOworICAgICAgICAgICAgc2V0U2l6
ZShzaXplLnRyYW5zcG9zZWRTaXplKCkpOwogICAgIH0KIAogICAgIEludFBvaW50IGxvY2F0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZVJlY3QubG9jYXRpb24oKTsgfQpAQCAtMTAyLDcgKzEw
OSw2IEBAIHB1YmxpYzoKICAgICBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1l
UmVjdC5zaXplKCk7IH0KIAogICAgIHZvaWQgc2V0TG9jYXRpb24oY29uc3QgSW50UG9pbnQmIGxv
Y2F0aW9uKSB7IG1fZnJhbWVSZWN0LnNldExvY2F0aW9uKGxvY2F0aW9uKTsgfQotICAgIHZvaWQg
c2V0TG9jYXRpb24oaW50IHgsIGludCB5KSB7IHNldExvY2F0aW9uKEludFBvaW50KHgsIHkpKTsg
fQogICAgIAogICAgIHZvaWQgc2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKSB7IG1fZnJhbWVS
ZWN0LnNldFNpemUoc2l6ZSk7IH0KICAgICB2b2lkIG1vdmUoaW50IGR4LCBpbnQgZHkpIHsgbV9m
cmFtZVJlY3QubW92ZShkeCwgZHkpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRnJhbWVTZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGcmFtZVNldC5jcHAJKHJldmlzaW9uIDg2MjcwKQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTA5LDcgKzUw
OSw3IEBAIHZvaWQgUmVuZGVyRnJhbWVTZXQ6OnBvc2l0aW9uRnJhbWVzKCkKICAgICAgICAgaW50
IHhQb3MgPSAwOwogICAgICAgICBpbnQgaGVpZ2h0ID0gbV9yb3dzLm1fc2l6ZXNbcl07CiAgICAg
ICAgIGZvciAoaW50IGMgPSAwOyBjIDwgY29sczsgYysrKSB7Ci0gICAgICAgICAgICBjaGlsZC0+
c2V0TG9jYXRpb24oeFBvcywgeVBvcyk7CisgICAgICAgICAgICBjaGlsZC0+c2V0TG9jYXRpb24o
SW50UG9pbnQoeFBvcywgeVBvcykpOwogICAgICAgICAgICAgaW50IHdpZHRoID0gbV9jb2xzLm1f
c2l6ZXNbY107CiAKICAgICAgICAgICAgIC8vIGhhcyB0byBiZSByZXNpemVkIGFuZCBpdHNlbGYg
cmVzaXplIGl0cyBjb250ZW50cwpAQCAtNjA2LDcgKzYwNiw3IEBAIHZvaWQgUmVuZGVyRnJhbWVT
ZXQ6OnBvc2l0aW9uRnJhbWVzV2l0aEYKICAgICAgICAgICAgIC8vIGVuc3VyZSB0aGUgcm93cyBh
bmQgY29sdW1ucyBhcmUgZmlsbGVkCiAgICAgICAgICAgICBJbnRSZWN0IG9sZFJlY3QgPSBjaGls
ZC0+ZnJhbWVSZWN0KCk7CiAKLSAgICAgICAgICAgIGNoaWxkLT5zZXRMb2NhdGlvbih4UG9zLCB5
UG9zKTsKKyAgICAgICAgICAgIGNoaWxkLT5zZXRMb2NhdGlvbihJbnRQb2ludCh4UG9zLCB5UG9z
KSk7CiAgICAgICAgICAgICBjaGlsZC0+c2V0SGVpZ2h0KG1fcm93cy5tX3NpemVzW3JdKTsKICAg
ICAgICAgICAgIGNoaWxkLT5zZXRXaWR0aChtX2NvbHMubV9zaXplc1tjXSk7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhLmNwcAkocmV2aXNpb24gODYyNzApCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgUmVuZGVyTWVkaWE6OmxheW91dCgpCiAgICAgLy8gYW5k
IHRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIG1hbnkgdGltZXMgcGVyIHNlY29uZCBkdXJpbmcg
cGxheWJhY2ssIHVzZSBhIExheW91dFN0YXRlTWFpbnRhaW5lcjoKICAgICBMYXlvdXRTdGF0ZU1h
aW50YWluZXIgc3RhdGVQdXNoZXIodmlldygpLCB0aGlzLCBJbnRTaXplKHgoKSwgeSgpKSwgaGFz
VHJhbnNmb3JtKCkgfHwgaGFzUmVmbGVjdGlvbigpIHx8IHN0eWxlKCktPmlzRmxpcHBlZEJsb2Nr
c1dyaXRpbmdNb2RlKCkpOwogCi0gICAgY29udHJvbHNSZW5kZXJlci0+c2V0TG9jYXRpb24oYm9y
ZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQoKSwgYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkpOwor
ICAgIGNvbnRyb2xzUmVuZGVyZXItPnNldExvY2F0aW9uKEludFBvaW50KGJvcmRlckxlZnQoKSwg
Ym9yZGVyVG9wKCkpICsgSW50U2l6ZShwYWRkaW5nTGVmdCgpLCBwYWRkaW5nVG9wKCkpKTsKICAg
ICBjb250cm9sc1JlbmRlcmVyLT5zdHlsZSgpLT5zZXRIZWlnaHQoTGVuZ3RoKG5ld1NpemUuaGVp
Z2h0KCksIEZpeGVkKSk7CiAgICAgY29udHJvbHNSZW5kZXJlci0+c3R5bGUoKS0+c2V0V2lkdGgo
TGVuZ3RoKG5ld1NpemUud2lkdGgoKSwgRml4ZWQpKTsKICAgICBjb250cm9sc1JlbmRlcmVyLT5z
ZXROZWVkc0xheW91dCh0cnVlLCBmYWxzZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuY3BwCShyZXZpc2lvbiA4NjI3MCkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTYyLDcgKzE2Miw3IEBAIHZvaWQgUmVuZGVyU2Nyb2xsYmFyUGFydDo6aW1hZ2VD
aGFuZ2VkKFcKIHZvaWQgUmVuZGVyU2Nyb2xsYmFyUGFydDo6cGFpbnRJbnRvUmVjdChHcmFwaGlj
c0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgaW50IHR4LCBpbnQgdHksIGNvbnN0IEludFJlY3Qm
IHJlY3QpCiB7CiAgICAgLy8gTWFrZSBzdXJlIG91ciBkaW1lbnNpb25zIG1hdGNoIHRoZSByZWN0
LgotICAgIHNldExvY2F0aW9uKHJlY3QueCgpIC0gdHgsIHJlY3QueSgpIC0gdHkpOworICAgIHNl
dExvY2F0aW9uKHJlY3QubG9jYXRpb24oKSAtIEludFNpemUodHgsIHR5KSk7CiAgICAgc2V0V2lk
dGgocmVjdC53aWR0aCgpKTsKICAgICBzZXRIZWlnaHQocmVjdC5oZWlnaHQoKSk7CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAkocmV2aXNpb24gODYyNzAp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNTcsNyArMjU3LDcgQEAgdm9pZCBSZW5kZXJUYWJsZTo6YWRqdXN0TG9naWNhbEhl
aWdodEZvcgogICAgIEFTU0VSVChtX2NhcHRpb24pOwogICAgIEludFJlY3QgY2FwdGlvblJlY3Qo
bV9jYXB0aW9uLT54KCksIG1fY2FwdGlvbi0+eSgpLCBtX2NhcHRpb24tPndpZHRoKCksIG1fY2Fw
dGlvbi0+aGVpZ2h0KCkpOwogCi0gICAgbV9jYXB0aW9uLT5zZXRMb2dpY2FsTG9jYXRpb24obV9j
YXB0aW9uLT5tYXJnaW5TdGFydCgpLCBsb2dpY2FsSGVpZ2h0KCkpOworICAgIG1fY2FwdGlvbi0+
c2V0TG9naWNhbExvY2F0aW9uKEludFBvaW50KG1fY2FwdGlvbi0+bWFyZ2luU3RhcnQoKSwgbG9n
aWNhbEhlaWdodCgpKSk7CiAgICAgaWYgKCFzZWxmTmVlZHNMYXlvdXQoKSAmJiBtX2NhcHRpb24t
PmNoZWNrRm9yUmVwYWludER1cmluZ0xheW91dCgpKQogICAgICAgICBtX2NhcHRpb24tPnJlcGFp
bnREdXJpbmdMYXlvdXRJZk1vdmVkKGNhcHRpb25SZWN0KTsKIApAQCAtMzc0LDcgKzM3NCw3IEBA
IHZvaWQgUmVuZGVyVGFibGU6OmxheW91dCgpCiAgICAgICAgICAgICBzZWN0aW9uTW92ZWQgPSB0
cnVlOwogICAgICAgICAgICAgbW92ZWRTZWN0aW9uTG9naWNhbFRvcCA9IG1pbihsb2dpY2FsSGVp
Z2h0KCksIHNlY3Rpb24tPmxvZ2ljYWxUb3AoKSkgKyAoc3R5bGUoKS0+aXNIb3Jpem9udGFsV3Jp
dGluZ01vZGUoKSA/IHNlY3Rpb24tPm1pbllWaXN1YWxPdmVyZmxvdygpIDogc2VjdGlvbi0+bWlu
WFZpc3VhbE92ZXJmbG93KCkpOwogICAgICAgICB9Ci0gICAgICAgIHNlY3Rpb24tPnNldExvZ2lj
YWxMb2NhdGlvbihzZWN0aW9uTG9naWNhbExlZnQsIGxvZ2ljYWxIZWlnaHQoKSk7CisgICAgICAg
IHNlY3Rpb24tPnNldExvZ2ljYWxMb2NhdGlvbihJbnRQb2ludChzZWN0aW9uTG9naWNhbExlZnQs
IGxvZ2ljYWxIZWlnaHQoKSkpOwogCiAgICAgICAgIHNldExvZ2ljYWxIZWlnaHQobG9naWNhbEhl
aWdodCgpICsgc2VjdGlvbi0+bG9naWNhbEhlaWdodCgpKTsKICAgICAgICAgc2VjdGlvbiA9IHNl
Y3Rpb25CZWxvdyhzZWN0aW9uKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZVNlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCShyZXZpc2lvbiA4NjI3MCkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
OTMsNyArNDkzLDcgQEAgaW50IFJlbmRlclRhYmxlU2VjdGlvbjo6bGF5b3V0Um93cyhpbnQgdAog
ICAgIGZvciAoaW50IHIgPSAwOyByIDwgdG90YWxSb3dzOyByKyspIHsKICAgICAgICAgLy8gU2V0
IHRoZSByb3cncyB4L3kgcG9zaXRpb24gYW5kIHdpZHRoL2hlaWdodC4KICAgICAgICAgaWYgKFJl
bmRlclRhYmxlUm93KiByb3dSZW5kZXJlciA9IG1fZ3JpZFtyXS5yb3dSZW5kZXJlcikgewotICAg
ICAgICAgICAgcm93UmVuZGVyZXItPnNldExvY2F0aW9uKDAsIG1fcm93UG9zW3JdKTsKKyAgICAg
ICAgICAgIHJvd1JlbmRlcmVyLT5zZXRMb2NhdGlvbihJbnRQb2ludCgwLCBtX3Jvd1Bvc1tyXSkp
OwogICAgICAgICAgICAgcm93UmVuZGVyZXItPnNldExvZ2ljYWxXaWR0aChsb2dpY2FsV2lkdGgo
KSk7CiAgICAgICAgICAgICByb3dSZW5kZXJlci0+c2V0TG9naWNhbEhlaWdodChtX3Jvd1Bvc1ty
ICsgMV0gLSBtX3Jvd1Bvc1tyXSAtIHZzcGFjaW5nKTsKICAgICAgICAgICAgIHJvd1JlbmRlcmVy
LT51cGRhdGVMYXllclRyYW5zZm9ybSgpOwpAQCAtNjA3LDEwICs2MDcsMTIgQEAgaW50IFJlbmRl
clRhYmxlU2VjdGlvbjo6bGF5b3V0Um93cyhpbnQgdAogCiAgICAgICAgICAgICBJbnRSZWN0IG9s
ZENlbGxSZWN0KGNlbGwtPngoKSwgY2VsbC0+eSgpICwgY2VsbC0+d2lkdGgoKSwgY2VsbC0+aGVp
Z2h0KCkpOwogCisgICAgICAgICAgICBJbnRQb2ludCBjZWxsTG9jYXRpb24oMCwgbV9yb3dQb3Nb
cmluZHhdKTsKICAgICAgICAgICAgIGlmICghc3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlv
bigpKQotICAgICAgICAgICAgICAgIGNlbGwtPnNldExvZ2ljYWxMb2NhdGlvbih0YWJsZSgpLT5j
b2x1bW5Qb3NpdGlvbnMoKVtuRWZmQ29sc10gLSB0YWJsZSgpLT5jb2x1bW5Qb3NpdGlvbnMoKVt0
YWJsZSgpLT5jb2xUb0VmZkNvbChjZWxsLT5jb2woKSArIGNlbGwtPmNvbFNwYW4oKSldICsgaHNw
YWNpbmcsIG1fcm93UG9zW3JpbmR4XSk7CisgICAgICAgICAgICAgICAgY2VsbExvY2F0aW9uLnNl
dFgodGFibGUoKS0+Y29sdW1uUG9zaXRpb25zKClbbkVmZkNvbHNdIC0gdGFibGUoKS0+Y29sdW1u
UG9zaXRpb25zKClbdGFibGUoKS0+Y29sVG9FZmZDb2woY2VsbC0+Y29sKCkgKyBjZWxsLT5jb2xT
cGFuKCkpXSArIGhzcGFjaW5nKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBj
ZWxsLT5zZXRMb2dpY2FsTG9jYXRpb24odGFibGUoKS0+Y29sdW1uUG9zaXRpb25zKClbY10gKyBo
c3BhY2luZywgbV9yb3dQb3NbcmluZHhdKTsKKyAgICAgICAgICAgICAgICBjZWxsTG9jYXRpb24u
c2V0WCh0YWJsZSgpLT5jb2x1bW5Qb3NpdGlvbnMoKVtjXSArIGhzcGFjaW5nKTsKKyAgICAgICAg
ICAgIGNlbGwtPnNldExvZ2ljYWxMb2NhdGlvbihjZWxsTG9jYXRpb24pOwogICAgICAgICAgICAg
dmlldygpLT5hZGRMYXlvdXREZWx0YShJbnRTaXplKG9sZENlbGxSZWN0LngoKSAtIGNlbGwtPngo
KSwgb2xkQ2VsbFJlY3QueSgpIC0gY2VsbC0+eSgpKSk7CiAKICAgICAgICAgICAgIGlmIChpbnRy
aW5zaWNQYWRkaW5nQmVmb3JlICE9IG9sZEludHJpbnNpY1BhZGRpbmdCZWZvcmUgfHwgaW50cmlu
c2ljUGFkZGluZ0FmdGVyICE9IG9sZEludHJpbnNpY1BhZGRpbmdBZnRlcikKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmds
ZUxpbmUuY3BwCShyZXZpc2lvbiA4NjI3MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTEsNyAr
MjkxLDcgQEAgdm9pZCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmxheW91dAogCiAgICAg
Ly8gSWdub3JlcyB0aGUgcGFkZGluZ3MgZm9yIHRoZSBpbm5lciBzcGluIGJ1dHRvbi4KICAgICBp
ZiAoUmVuZGVyQm94KiBzcGluQm94ID0gbV9pbm5lclNwaW5CdXR0b24gPyBtX2lubmVyU3BpbkJ1
dHRvbi0+cmVuZGVyQm94KCkgOiAwKSB7Ci0gICAgICAgIHNwaW5Cb3gtPnNldExvY2F0aW9uKHNw
aW5Cb3gtPngoKSArIHBhZGRpbmdSaWdodCgpLCBib3JkZXJUb3AoKSk7CisgICAgICAgIHNwaW5C
b3gtPnNldExvY2F0aW9uKEludFBvaW50KHNwaW5Cb3gtPngoKSArIHBhZGRpbmdSaWdodCgpLCBi
b3JkZXJUb3AoKSkpOwogICAgICAgICBzcGluQm94LT5zZXRIZWlnaHQoaGVpZ2h0KCkgLSBib3Jk
ZXJUb3AoKSAtIGJvcmRlckJvdHRvbSgpKTsKICAgICB9CiAKQEAgLTMwMCw5ICszMDAsOSBAQCB2
b2lkIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6bGF5b3V0CiAgICAgICAgIGlmIChtX2lu
bmVyQmxvY2spIHsKICAgICAgICAgICAgIC8vIFRoaXMgaXMgbW9zdGx5IHRoZSBjYXNlIHdoZXJl
IHRoaXMgaXMgYSBzZWFyY2ggZmllbGQuIFRoZSBzcGVlY2ggYnV0dG9uIGlzIGEgc2libGluZwog
ICAgICAgICAgICAgLy8gb2YgdGhlIGlubmVyIGJsb2NrIGFuZCBsYWlkIG91dCBhdCB0aGUgZmFy
IHJpZ2h0LgotICAgICAgICAgICAgaW50IHggPSB3aWR0aCgpIC0gYm9yZGVyQW5kUGFkZGluZ1dp
ZHRoKCkgLSBidXR0b24tPndpZHRoKCkgLSBidXR0b24tPmJvcmRlckFuZFBhZGRpbmdXaWR0aCgp
OwotICAgICAgICAgICAgaW50IHkgPSAoaGVpZ2h0KCkgLSBidXR0b24tPmhlaWdodCgpKSAvIDI7
Ci0gICAgICAgICAgICBidXR0b24tPnNldExvY2F0aW9uKHgsIHkpOworICAgICAgICAgICAgSW50
UG9pbnQgbG9jYXRpb24od2lkdGgoKSAtIGJvcmRlckFuZFBhZGRpbmdXaWR0aCgpIC0gYnV0dG9u
LT53aWR0aCgpIC0gYnV0dG9uLT5ib3JkZXJBbmRQYWRkaW5nV2lkdGgoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChoZWlnaHQoKSAtIGJ1dHRvbi0+aGVpZ2h0KCkpIC8gMik7Cisg
ICAgICAgICAgICBidXR0b24tPnNldExvY2F0aW9uKGxvY2F0aW9uKTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIGludCB4ID0gd2lkdGgoKSAtIGJvcmRlclJpZ2h0KCkgLSBwYWRkaW5n
UmlnaHQoKSAtIGJ1dHRvbi0+d2lkdGgoKTsKICAgICAgICAgICAgIGlmIChtX291dGVyU3BpbkJ1
dHRvbiAmJiBtX291dGVyU3BpbkJ1dHRvbi0+cmVuZGVyQm94KCkpCkBAIC0zMTMsOCArMzEzLDcg
QEAgdm9pZCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmxheW91dAogICAgICAgICAgICAg
ICAgIHggLT0gc3BpbkJveCA/IHNwaW5Cb3gtPndpZHRoKCkgOiAwOwogICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgIGlubmVyVGV4dFJlbmRlcmVyLT5zZXRYKHBhZGRpbmdMZWZ0KCkg
KyBib3JkZXJMZWZ0KCkgKyAoc3BpbkJveCA/IHNwaW5Cb3gtPndpZHRoKCkgOiAwKSk7Ci0gICAg
ICAgICAgICBpbnQgeSA9IChoZWlnaHQoKSAtIGJ1dHRvbi0+aGVpZ2h0KCkpIC8gMjsKLSAgICAg
ICAgICAgIGJ1dHRvbi0+c2V0TG9jYXRpb24oeCwgeSk7CisgICAgICAgICAgICBidXR0b24tPnNl
dExvY2F0aW9uKEludFBvaW50KHgsIChoZWlnaHQoKSAtIGJ1dHRvbi0+aGVpZ2h0KCkpIC8gMikp
OwogICAgICAgICB9CiAgICAgfQogI2VuZGlmCkBAIC0zMjYsOSArMzI1LDkgQEAgdm9pZCBSZW5k
ZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmxheW91dAogICAgICAgICAvLyBJZiB0aGUgZGlmZiBp
cyBvZGQsIHRoZSB0b3AgYXJlYSBvdmVyIHRoZSBzcGluIGJ1dHRvbiB0YWtlcyB0aGUKICAgICAg
ICAgLy8gcmVtYWluaW5nIG9uZSBwaXhlbC4gSXQncyBnb29kIGZvciBNYWMgTlNTdGVwcGVyIGJl
Y2F1c2UgaXQgaGFzCiAgICAgICAgIC8vIHNoYWRvdyBhdCB0aGUgYm90dG9tLgotICAgICAgICBp
bnQgeSA9IChkaWZmIC8gMikgKyAoZGlmZiAlIDIpOwotICAgICAgICBpbnQgeCA9IHdpZHRoKCkg
LSBib3JkZXJSaWdodCgpIC0gcGFkZGluZ1JpZ2h0KCkgLSBzcGluQm94LT53aWR0aCgpOwotICAg
ICAgICBzcGluQm94LT5zZXRMb2NhdGlvbih4LCB5KTsKKyAgICAgICAgSW50UG9pbnQgbG9jYXRp
b24od2lkdGgoKSAtIGJvcmRlclJpZ2h0KCkgLSBwYWRkaW5nUmlnaHQoKSAtIHNwaW5Cb3gtPndp
ZHRoKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIChkaWZmIC8gMikgKyAoZGlmZiAlIDIp
KTsKKyAgICAgICAgc3BpbkJveC0+c2V0TG9jYXRpb24obG9jYXRpb24pOwogICAgIH0KIH0KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSb290SW5saW5lQm94LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJbmxpbmVC
b3guY3BwCShyZXZpc2lvbiA4NjI3MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
U1ZHUm9vdElubGluZUJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NiwyMiArMTc2LDE5IEBA
IHZvaWQgU1ZHUm9vdElubGluZUJveDo6bGF5b3V0Um9vdEJveCgpCiAgICAgICAgIGNoaWxkUmVj
dC51bml0ZShjaGlsZC0+Y2FsY3VsYXRlQm91bmRhcmllcygpKTsKICAgICB9CiAKLSAgICBpbnQg
eEJsb2NrID0gY2hpbGRSZWN0LngoKTsKLSAgICBpbnQgeUJsb2NrID0gY2hpbGRSZWN0LnkoKTsK
ICAgICBpbnQgd2lkdGhCbG9jayA9IGNoaWxkUmVjdC53aWR0aCgpOwogICAgIGludCBoZWlnaHRC
bG9jayA9IGNoaWxkUmVjdC5oZWlnaHQoKTsKIAogICAgIC8vIEZpbmFsbHksIGFzc2lnbiB0aGUg
cm9vdCBibG9jayBwb3NpdGlvbiwgbm93IHRoYXQgYWxsIGNvbnRlbnQgaXMgbGFpZCBvdXQuCi0g
ICAgcGFyZW50QmxvY2stPnNldExvY2F0aW9uKHhCbG9jaywgeUJsb2NrKTsKLSAgICBwYXJlbnRC
bG9jay0+c2V0V2lkdGgod2lkdGhCbG9jayk7Ci0gICAgcGFyZW50QmxvY2stPnNldEhlaWdodCho
ZWlnaHRCbG9jayk7CisgICAgcGFyZW50QmxvY2stPnNldExvY2F0aW9uKGNoaWxkUmVjdC5sb2Nh
dGlvbigpKTsKKyAgICBwYXJlbnRCbG9jay0+c2V0U2l6ZShjaGlsZFJlY3Quc2l6ZSgpKTsKIAog
ICAgIC8vIFBvc2l0aW9uIGFsbCBjaGlsZHJlbiByZWxhdGl2ZSB0byB0aGUgcGFyZW50IGJsb2Nr
LgogICAgIGZvciAoSW5saW5lQm94KiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxk
ID0gY2hpbGQtPm5leHRPbkxpbmUoKSkgewogICAgICAgICAvLyBTa2lwIGdlbmVyYXRlZCBjb250
ZW50LgogICAgICAgICBpZiAoIWNoaWxkLT5yZW5kZXJlcigpLT5ub2RlKCkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgY2hpbGQtPmFkanVzdFBvc2l0aW9uKC14QmxvY2ssIC15Qmxv
Y2spOworICAgICAgICBjaGlsZC0+YWRqdXN0UG9zaXRpb24oLWNoaWxkUmVjdC54KCksIC1jaGls
ZFJlY3QueSgpKTsKICAgICB9CiAKICAgICAvLyBQb3NpdGlvbiBvdXJzZWx2ZXMuCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93343</attachid>
            <date>2011-05-12 14:26:41 -0700</date>
            <delta_ts>2011-05-12 16:30:20 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-60585-20110512142640.patch</filename>
            <type>text/plain</type>
            <size>12645</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg2MzU3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMDUtMTIgIEVtaWwgQSBF
a2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFk
bGVyLgorCisgICAgICAgIENvbnZlcnQgUmVuZGVyQm94OjpzZXRMb2NhdGlvbiwgc2V0TG9naWNh
bExvY2F0aW9uIGFuZCBzZXRMb2dpY2FsU2l6ZSB0byBJbnRQb2ludC9JbnRTaXplCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDU4NQorCisgICAgICAg
IFJlZmFjdG9yaW5nLCBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBvc2l0
aW9uTGluZUJveCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5oOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94OjpzZXRMb2dpY2FsTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQm94OjpzZXRMb2dpY2FsU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
b3g6OnNldExvY2F0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRnJhbWVTZXQ6OnBvc2l0aW9uRnJhbWVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYW1lU2V0Ojpwb3NpdGlvbkZyYW1lc1dpdGhGbGF0dGVu
aW5nKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVkaWEuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTWVkaWE6OmxheW91dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNj
cm9sbGJhclBhcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyUGFydDo6
cGFpbnRJbnRvUmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjphZGp1c3RMb2dpY2FsSGVpZ2h0Rm9yQ2FwdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6bGF5b3V0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRhYmxlU2VjdGlvbjo6bGF5b3V0Um93cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRl
eHRDb250cm9sU2luZ2xlTGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29u
dHJvbFNpbmdsZUxpbmU6OmxheW91dCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSb290
SW5saW5lQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jvb3RJbmxpbmVCb3g6OmxheW91
dFJvb3RCb3gpOgorCiAyMDExLTA1LTEyICBMdWtlIE1hY3BoZXJzb24gICA8bWFjcGhlcnNvbkBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAJKHJldmlzaW9uIDg2MjcwKQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEzNzEsNyArMTM3MSw3IEBAIHZvaWQgUmVuZGVyQm94Ojpwb3NpdGlvbkxpbmVCb3goSW5s
aW5lQm8KICAgICAgICAgYm94LT5yZW1vdmUoKTsKICAgICAgICAgYm94LT5kZXN0cm95KHJlbmRl
ckFyZW5hKCkpOwogICAgIH0gZWxzZSBpZiAoaXNSZXBsYWNlZCgpKSB7Ci0gICAgICAgIHNldExv
Y2F0aW9uKGxyb3VuZGYoYm94LT54KCkpLCBscm91bmRmKGJveC0+eSgpKSk7CisgICAgICAgIHNl
dExvY2F0aW9uKHJvdW5kZWRJbnRQb2ludChGbG9hdFBvaW50KGJveC0+eCgpLCBib3gtPnkoKSkp
KTsKICAgICAgICAgbV9pbmxpbmVCb3hXcmFwcGVyID0gYm94OwogICAgIH0KIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgJKHJldmlzaW9uIDg2MjcwKQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCSh3b3JraW5nIGNvcHkpCkBAIC03NSw2ICs3
NSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHNldFgodG9wKTsKICAg
ICB9CisgICAgdm9pZCBzZXRMb2dpY2FsTG9jYXRpb24oY29uc3QgSW50UG9pbnQmIGxvY2F0aW9u
KQorICAgIHsKKyAgICAgICAgaWYgKHN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkp
CisgICAgICAgICAgICBzZXRMb2NhdGlvbihsb2NhdGlvbik7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIHNldExvY2F0aW9uKGxvY2F0aW9uLnRyYW5zcG9zZWRQb2ludCgpKTsKKyAgICB9CiAg
ICAgdm9pZCBzZXRMb2dpY2FsV2lkdGgoaW50IHNpemUpCiAgICAgewogICAgICAgICBpZiAoc3R5
bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKQEAgLTg5LDEyICs5NiwxMiBAQCBwdWJs
aWM6CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHNldFdpZHRoKHNpemUpOwogICAgIH0KLSAg
ICB2b2lkIHNldExvZ2ljYWxMb2NhdGlvbihpbnQgbGVmdCwgaW50IHRvcCkKKyAgICB2b2lkIHNl
dExvZ2ljYWxTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgewogICAgICAgICBpZiAoc3R5
bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKLSAgICAgICAgICAgIHNldExvY2F0aW9u
KGxlZnQsIHRvcCk7CisgICAgICAgICAgICBzZXRTaXplKHNpemUpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBzZXRMb2NhdGlvbih0b3AsIGxlZnQpOworICAgICAgICAgICAgc2V0U2l6ZShz
aXplLnRyYW5zcG9zZWRTaXplKCkpOwogICAgIH0KIAogICAgIEludFBvaW50IGxvY2F0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9mcmFtZVJlY3QubG9jYXRpb24oKTsgfQpAQCAtMTAyLDcgKzEwOSw2
IEBAIHB1YmxpYzoKICAgICBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lUmVj
dC5zaXplKCk7IH0KIAogICAgIHZvaWQgc2V0TG9jYXRpb24oY29uc3QgSW50UG9pbnQmIGxvY2F0
aW9uKSB7IG1fZnJhbWVSZWN0LnNldExvY2F0aW9uKGxvY2F0aW9uKTsgfQotICAgIHZvaWQgc2V0
TG9jYXRpb24oaW50IHgsIGludCB5KSB7IHNldExvY2F0aW9uKEludFBvaW50KHgsIHkpKTsgfQog
ICAgIAogICAgIHZvaWQgc2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKSB7IG1fZnJhbWVSZWN0
LnNldFNpemUoc2l6ZSk7IH0KICAgICB2b2lkIG1vdmUoaW50IGR4LCBpbnQgZHkpIHsgbV9mcmFt
ZVJlY3QubW92ZShkeCwgZHkpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRnJhbWVTZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGcmFtZVNldC5jcHAJKHJldmlzaW9uIDg2MjcwKQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTA5LDcgKzUwOSw3
IEBAIHZvaWQgUmVuZGVyRnJhbWVTZXQ6OnBvc2l0aW9uRnJhbWVzKCkKICAgICAgICAgaW50IHhQ
b3MgPSAwOwogICAgICAgICBpbnQgaGVpZ2h0ID0gbV9yb3dzLm1fc2l6ZXNbcl07CiAgICAgICAg
IGZvciAoaW50IGMgPSAwOyBjIDwgY29sczsgYysrKSB7Ci0gICAgICAgICAgICBjaGlsZC0+c2V0
TG9jYXRpb24oeFBvcywgeVBvcyk7CisgICAgICAgICAgICBjaGlsZC0+c2V0TG9jYXRpb24oSW50
UG9pbnQoeFBvcywgeVBvcykpOwogICAgICAgICAgICAgaW50IHdpZHRoID0gbV9jb2xzLm1fc2l6
ZXNbY107CiAKICAgICAgICAgICAgIC8vIGhhcyB0byBiZSByZXNpemVkIGFuZCBpdHNlbGYgcmVz
aXplIGl0cyBjb250ZW50cwpAQCAtNjA2LDcgKzYwNiw3IEBAIHZvaWQgUmVuZGVyRnJhbWVTZXQ6
OnBvc2l0aW9uRnJhbWVzV2l0aEYKICAgICAgICAgICAgIC8vIGVuc3VyZSB0aGUgcm93cyBhbmQg
Y29sdW1ucyBhcmUgZmlsbGVkCiAgICAgICAgICAgICBJbnRSZWN0IG9sZFJlY3QgPSBjaGlsZC0+
ZnJhbWVSZWN0KCk7CiAKLSAgICAgICAgICAgIGNoaWxkLT5zZXRMb2NhdGlvbih4UG9zLCB5UG9z
KTsKKyAgICAgICAgICAgIGNoaWxkLT5zZXRMb2NhdGlvbihJbnRQb2ludCh4UG9zLCB5UG9zKSk7
CiAgICAgICAgICAgICBjaGlsZC0+c2V0SGVpZ2h0KG1fcm93cy5tX3NpemVzW3JdKTsKICAgICAg
ICAgICAgIGNoaWxkLT5zZXRXaWR0aChtX2NvbHMubV9zaXplc1tjXSk7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhLmNwcAkocmV2aXNpb24gODYyNzApCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03NCw3ICs3NCw3IEBAIHZvaWQgUmVuZGVyTWVkaWE6OmxheW91dCgpCiAgICAgLy8gYW5kIHRo
aXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIG1hbnkgdGltZXMgcGVyIHNlY29uZCBkdXJpbmcgcGxh
eWJhY2ssIHVzZSBhIExheW91dFN0YXRlTWFpbnRhaW5lcjoKICAgICBMYXlvdXRTdGF0ZU1haW50
YWluZXIgc3RhdGVQdXNoZXIodmlldygpLCB0aGlzLCBJbnRTaXplKHgoKSwgeSgpKSwgaGFzVHJh
bnNmb3JtKCkgfHwgaGFzUmVmbGVjdGlvbigpIHx8IHN0eWxlKCktPmlzRmxpcHBlZEJsb2Nrc1dy
aXRpbmdNb2RlKCkpOwogCi0gICAgY29udHJvbHNSZW5kZXJlci0+c2V0TG9jYXRpb24oYm9yZGVy
TGVmdCgpICsgcGFkZGluZ0xlZnQoKSwgYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkpOworICAg
IGNvbnRyb2xzUmVuZGVyZXItPnNldExvY2F0aW9uKEludFBvaW50KGJvcmRlckxlZnQoKSwgYm9y
ZGVyVG9wKCkpICsgSW50U2l6ZShwYWRkaW5nTGVmdCgpLCBwYWRkaW5nVG9wKCkpKTsKICAgICBj
b250cm9sc1JlbmRlcmVyLT5zdHlsZSgpLT5zZXRIZWlnaHQoTGVuZ3RoKG5ld1NpemUuaGVpZ2h0
KCksIEZpeGVkKSk7CiAgICAgY29udHJvbHNSZW5kZXJlci0+c3R5bGUoKS0+c2V0V2lkdGgoTGVu
Z3RoKG5ld1NpemUud2lkdGgoKSwgRml4ZWQpKTsKICAgICBjb250cm9sc1JlbmRlcmVyLT5zZXRO
ZWVkc0xheW91dCh0cnVlLCBmYWxzZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuY3BwCShyZXZpc2lvbiA4NjI3MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTYyLDcgKzE2Miw3IEBAIHZvaWQgUmVuZGVyU2Nyb2xsYmFyUGFydDo6aW1hZ2VDaGFu
Z2VkKFcKIHZvaWQgUmVuZGVyU2Nyb2xsYmFyUGFydDo6cGFpbnRJbnRvUmVjdChHcmFwaGljc0Nv
bnRleHQqIGdyYXBoaWNzQ29udGV4dCwgaW50IHR4LCBpbnQgdHksIGNvbnN0IEludFJlY3QmIHJl
Y3QpCiB7CiAgICAgLy8gTWFrZSBzdXJlIG91ciBkaW1lbnNpb25zIG1hdGNoIHRoZSByZWN0Lgot
ICAgIHNldExvY2F0aW9uKHJlY3QueCgpIC0gdHgsIHJlY3QueSgpIC0gdHkpOworICAgIHNldExv
Y2F0aW9uKHJlY3QubG9jYXRpb24oKSAtIEludFNpemUodHgsIHR5KSk7CiAgICAgc2V0V2lkdGgo
cmVjdC53aWR0aCgpKTsKICAgICBzZXRIZWlnaHQocmVjdC5oZWlnaHQoKSk7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAkocmV2aXNpb24gODYyNzApCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNTcsNyArMjU3LDcgQEAgdm9pZCBSZW5kZXJUYWJsZTo6YWRqdXN0TG9naWNhbEhlaWdo
dEZvcgogICAgIEFTU0VSVChtX2NhcHRpb24pOwogICAgIEludFJlY3QgY2FwdGlvblJlY3QobV9j
YXB0aW9uLT54KCksIG1fY2FwdGlvbi0+eSgpLCBtX2NhcHRpb24tPndpZHRoKCksIG1fY2FwdGlv
bi0+aGVpZ2h0KCkpOwogCi0gICAgbV9jYXB0aW9uLT5zZXRMb2dpY2FsTG9jYXRpb24obV9jYXB0
aW9uLT5tYXJnaW5TdGFydCgpLCBsb2dpY2FsSGVpZ2h0KCkpOworICAgIG1fY2FwdGlvbi0+c2V0
TG9naWNhbExvY2F0aW9uKEludFBvaW50KG1fY2FwdGlvbi0+bWFyZ2luU3RhcnQoKSwgbG9naWNh
bEhlaWdodCgpKSk7CiAgICAgaWYgKCFzZWxmTmVlZHNMYXlvdXQoKSAmJiBtX2NhcHRpb24tPmNo
ZWNrRm9yUmVwYWludER1cmluZ0xheW91dCgpKQogICAgICAgICBtX2NhcHRpb24tPnJlcGFpbnRE
dXJpbmdMYXlvdXRJZk1vdmVkKGNhcHRpb25SZWN0KTsKIApAQCAtMzc0LDcgKzM3NCw3IEBAIHZv
aWQgUmVuZGVyVGFibGU6OmxheW91dCgpCiAgICAgICAgICAgICBzZWN0aW9uTW92ZWQgPSB0cnVl
OwogICAgICAgICAgICAgbW92ZWRTZWN0aW9uTG9naWNhbFRvcCA9IG1pbihsb2dpY2FsSGVpZ2h0
KCksIHNlY3Rpb24tPmxvZ2ljYWxUb3AoKSkgKyAoc3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGlu
Z01vZGUoKSA/IHNlY3Rpb24tPm1pbllWaXN1YWxPdmVyZmxvdygpIDogc2VjdGlvbi0+bWluWFZp
c3VhbE92ZXJmbG93KCkpOwogICAgICAgICB9Ci0gICAgICAgIHNlY3Rpb24tPnNldExvZ2ljYWxM
b2NhdGlvbihzZWN0aW9uTG9naWNhbExlZnQsIGxvZ2ljYWxIZWlnaHQoKSk7CisgICAgICAgIHNl
Y3Rpb24tPnNldExvZ2ljYWxMb2NhdGlvbihJbnRQb2ludChzZWN0aW9uTG9naWNhbExlZnQsIGxv
Z2ljYWxIZWlnaHQoKSkpOwogCiAgICAgICAgIHNldExvZ2ljYWxIZWlnaHQobG9naWNhbEhlaWdo
dCgpICsgc2VjdGlvbi0+bG9naWNhbEhlaWdodCgpKTsKICAgICAgICAgc2VjdGlvbiA9IHNlY3Rp
b25CZWxvdyhzZWN0aW9uKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZVNlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUYWJsZVNlY3Rpb24uY3BwCShyZXZpc2lvbiA4NjI3MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OTMs
NyArNDkzLDcgQEAgaW50IFJlbmRlclRhYmxlU2VjdGlvbjo6bGF5b3V0Um93cyhpbnQgdAogICAg
IGZvciAoaW50IHIgPSAwOyByIDwgdG90YWxSb3dzOyByKyspIHsKICAgICAgICAgLy8gU2V0IHRo
ZSByb3cncyB4L3kgcG9zaXRpb24gYW5kIHdpZHRoL2hlaWdodC4KICAgICAgICAgaWYgKFJlbmRl
clRhYmxlUm93KiByb3dSZW5kZXJlciA9IG1fZ3JpZFtyXS5yb3dSZW5kZXJlcikgewotICAgICAg
ICAgICAgcm93UmVuZGVyZXItPnNldExvY2F0aW9uKDAsIG1fcm93UG9zW3JdKTsKKyAgICAgICAg
ICAgIHJvd1JlbmRlcmVyLT5zZXRMb2NhdGlvbihJbnRQb2ludCgwLCBtX3Jvd1Bvc1tyXSkpOwog
ICAgICAgICAgICAgcm93UmVuZGVyZXItPnNldExvZ2ljYWxXaWR0aChsb2dpY2FsV2lkdGgoKSk7
CiAgICAgICAgICAgICByb3dSZW5kZXJlci0+c2V0TG9naWNhbEhlaWdodChtX3Jvd1Bvc1tyICsg
MV0gLSBtX3Jvd1Bvc1tyXSAtIHZzcGFjaW5nKTsKICAgICAgICAgICAgIHJvd1JlbmRlcmVyLT51
cGRhdGVMYXllclRyYW5zZm9ybSgpOwpAQCAtNjA3LDEwICs2MDcsMTIgQEAgaW50IFJlbmRlclRh
YmxlU2VjdGlvbjo6bGF5b3V0Um93cyhpbnQgdAogCiAgICAgICAgICAgICBJbnRSZWN0IG9sZENl
bGxSZWN0KGNlbGwtPngoKSwgY2VsbC0+eSgpICwgY2VsbC0+d2lkdGgoKSwgY2VsbC0+aGVpZ2h0
KCkpOwogCisgICAgICAgICAgICBJbnRQb2ludCBjZWxsTG9jYXRpb24oMCwgbV9yb3dQb3Nbcmlu
ZHhdKTsKICAgICAgICAgICAgIGlmICghc3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigp
KQotICAgICAgICAgICAgICAgIGNlbGwtPnNldExvZ2ljYWxMb2NhdGlvbih0YWJsZSgpLT5jb2x1
bW5Qb3NpdGlvbnMoKVtuRWZmQ29sc10gLSB0YWJsZSgpLT5jb2x1bW5Qb3NpdGlvbnMoKVt0YWJs
ZSgpLT5jb2xUb0VmZkNvbChjZWxsLT5jb2woKSArIGNlbGwtPmNvbFNwYW4oKSldICsgaHNwYWNp
bmcsIG1fcm93UG9zW3JpbmR4XSk7CisgICAgICAgICAgICAgICAgY2VsbExvY2F0aW9uLnNldFgo
dGFibGUoKS0+Y29sdW1uUG9zaXRpb25zKClbbkVmZkNvbHNdIC0gdGFibGUoKS0+Y29sdW1uUG9z
aXRpb25zKClbdGFibGUoKS0+Y29sVG9FZmZDb2woY2VsbC0+Y29sKCkgKyBjZWxsLT5jb2xTcGFu
KCkpXSArIGhzcGFjaW5nKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjZWxs
LT5zZXRMb2dpY2FsTG9jYXRpb24odGFibGUoKS0+Y29sdW1uUG9zaXRpb25zKClbY10gKyBoc3Bh
Y2luZywgbV9yb3dQb3NbcmluZHhdKTsKKyAgICAgICAgICAgICAgICBjZWxsTG9jYXRpb24uc2V0
WCh0YWJsZSgpLT5jb2x1bW5Qb3NpdGlvbnMoKVtjXSArIGhzcGFjaW5nKTsKKyAgICAgICAgICAg
IGNlbGwtPnNldExvZ2ljYWxMb2NhdGlvbihjZWxsTG9jYXRpb24pOwogICAgICAgICAgICAgdmll
dygpLT5hZGRMYXlvdXREZWx0YShJbnRTaXplKG9sZENlbGxSZWN0LngoKSAtIGNlbGwtPngoKSwg
b2xkQ2VsbFJlY3QueSgpIC0gY2VsbC0+eSgpKSk7CiAKICAgICAgICAgICAgIGlmIChpbnRyaW5z
aWNQYWRkaW5nQmVmb3JlICE9IG9sZEludHJpbnNpY1BhZGRpbmdCZWZvcmUgfHwgaW50cmluc2lj
UGFkZGluZ0FmdGVyICE9IG9sZEludHJpbnNpY1BhZGRpbmdBZnRlcikKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxp
bmUuY3BwCShyZXZpc2lvbiA4NjI3MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTEsNyArMjkx
LDcgQEAgdm9pZCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmxheW91dAogCiAgICAgLy8g
SWdub3JlcyB0aGUgcGFkZGluZ3MgZm9yIHRoZSBpbm5lciBzcGluIGJ1dHRvbi4KICAgICBpZiAo
UmVuZGVyQm94KiBzcGluQm94ID0gbV9pbm5lclNwaW5CdXR0b24gPyBtX2lubmVyU3BpbkJ1dHRv
bi0+cmVuZGVyQm94KCkgOiAwKSB7Ci0gICAgICAgIHNwaW5Cb3gtPnNldExvY2F0aW9uKHNwaW5C
b3gtPngoKSArIHBhZGRpbmdSaWdodCgpLCBib3JkZXJUb3AoKSk7CisgICAgICAgIHNwaW5Cb3gt
PnNldExvY2F0aW9uKEludFBvaW50KHNwaW5Cb3gtPngoKSArIHBhZGRpbmdSaWdodCgpLCBib3Jk
ZXJUb3AoKSkpOwogICAgICAgICBzcGluQm94LT5zZXRIZWlnaHQoaGVpZ2h0KCkgLSBib3JkZXJU
b3AoKSAtIGJvcmRlckJvdHRvbSgpKTsKICAgICB9CiAKQEAgLTMwMiw3ICszMDIsNyBAQCB2b2lk
IFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6bGF5b3V0CiAgICAgICAgICAgICAvLyBvZiB0
aGUgaW5uZXIgYmxvY2sgYW5kIGxhaWQgb3V0IGF0IHRoZSBmYXIgcmlnaHQuCiAgICAgICAgICAg
ICBpbnQgeCA9IHdpZHRoKCkgLSBib3JkZXJBbmRQYWRkaW5nV2lkdGgoKSAtIGJ1dHRvbi0+d2lk
dGgoKSAtIGJ1dHRvbi0+Ym9yZGVyQW5kUGFkZGluZ1dpZHRoKCk7CiAgICAgICAgICAgICBpbnQg
eSA9IChoZWlnaHQoKSAtIGJ1dHRvbi0+aGVpZ2h0KCkpIC8gMjsKLSAgICAgICAgICAgIGJ1dHRv
bi0+c2V0TG9jYXRpb24oeCwgeSk7CisgICAgICAgICAgICBidXR0b24tPnNldExvY2F0aW9uKElu
dFBvaW50KHgsIHkpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGludCB4ID0gd2lk
dGgoKSAtIGJvcmRlclJpZ2h0KCkgLSBwYWRkaW5nUmlnaHQoKSAtIGJ1dHRvbi0+d2lkdGgoKTsK
ICAgICAgICAgICAgIGlmIChtX291dGVyU3BpbkJ1dHRvbiAmJiBtX291dGVyU3BpbkJ1dHRvbi0+
cmVuZGVyQm94KCkpCkBAIC0zMTQsNyArMzE0LDcgQEAgdm9pZCBSZW5kZXJUZXh0Q29udHJvbFNp
bmdsZUxpbmU6OmxheW91dAogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGlubmVy
VGV4dFJlbmRlcmVyLT5zZXRYKHBhZGRpbmdMZWZ0KCkgKyBib3JkZXJMZWZ0KCkgKyAoc3BpbkJv
eCA/IHNwaW5Cb3gtPndpZHRoKCkgOiAwKSk7CiAgICAgICAgICAgICBpbnQgeSA9IChoZWlnaHQo
KSAtIGJ1dHRvbi0+aGVpZ2h0KCkpIC8gMjsKLSAgICAgICAgICAgIGJ1dHRvbi0+c2V0TG9jYXRp
b24oeCwgeSk7CisgICAgICAgICAgICBidXR0b24tPnNldExvY2F0aW9uKEludFBvaW50KHgsIHkp
KTsKICAgICAgICAgfQogICAgIH0KICNlbmRpZgpAQCAtMzI4LDcgKzMyOCw3IEBAIHZvaWQgUmVu
ZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpsYXlvdXQKICAgICAgICAgLy8gc2hhZG93IGF0IHRo
ZSBib3R0b20uCiAgICAgICAgIGludCB5ID0gKGRpZmYgLyAyKSArIChkaWZmICUgMik7CiAgICAg
ICAgIGludCB4ID0gd2lkdGgoKSAtIGJvcmRlclJpZ2h0KCkgLSBwYWRkaW5nUmlnaHQoKSAtIHNw
aW5Cb3gtPndpZHRoKCk7Ci0gICAgICAgIHNwaW5Cb3gtPnNldExvY2F0aW9uKHgsIHkpOworICAg
ICAgICBzcGluQm94LT5zZXRMb2NhdGlvbihJbnRQb2ludCh4LCB5KSk7CiAgICAgfQogfQogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJbmxpbmVCb3guY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUm9vdElubGluZUJv
eC5jcHAJKHJldmlzaW9uIDg2MjcwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdSb290SW5saW5lQm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc2LDIyICsxNzYsMTkgQEAg
dm9pZCBTVkdSb290SW5saW5lQm94OjpsYXlvdXRSb290Qm94KCkKICAgICAgICAgY2hpbGRSZWN0
LnVuaXRlKGNoaWxkLT5jYWxjdWxhdGVCb3VuZGFyaWVzKCkpOwogICAgIH0KIAotICAgIGludCB4
QmxvY2sgPSBjaGlsZFJlY3QueCgpOwotICAgIGludCB5QmxvY2sgPSBjaGlsZFJlY3QueSgpOwog
ICAgIGludCB3aWR0aEJsb2NrID0gY2hpbGRSZWN0LndpZHRoKCk7CiAgICAgaW50IGhlaWdodEJs
b2NrID0gY2hpbGRSZWN0LmhlaWdodCgpOwogCiAgICAgLy8gRmluYWxseSwgYXNzaWduIHRoZSBy
b290IGJsb2NrIHBvc2l0aW9uLCBub3cgdGhhdCBhbGwgY29udGVudCBpcyBsYWlkIG91dC4KLSAg
ICBwYXJlbnRCbG9jay0+c2V0TG9jYXRpb24oeEJsb2NrLCB5QmxvY2spOwotICAgIHBhcmVudEJs
b2NrLT5zZXRXaWR0aCh3aWR0aEJsb2NrKTsKLSAgICBwYXJlbnRCbG9jay0+c2V0SGVpZ2h0KGhl
aWdodEJsb2NrKTsKKyAgICBwYXJlbnRCbG9jay0+c2V0TG9jYXRpb24oY2hpbGRSZWN0LmxvY2F0
aW9uKCkpOworICAgIHBhcmVudEJsb2NrLT5zZXRTaXplKGNoaWxkUmVjdC5zaXplKCkpOwogCiAg
ICAgLy8gUG9zaXRpb24gYWxsIGNoaWxkcmVuIHJlbGF0aXZlIHRvIHRoZSBwYXJlbnQgYmxvY2su
CiAgICAgZm9yIChJbmxpbmVCb3gqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQg
PSBjaGlsZC0+bmV4dE9uTGluZSgpKSB7CiAgICAgICAgIC8vIFNraXAgZ2VuZXJhdGVkIGNvbnRl
bnQuCiAgICAgICAgIGlmICghY2hpbGQtPnJlbmRlcmVyKCktPm5vZGUoKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICBjaGlsZC0+YWRqdXN0UG9zaXRpb24oLXhCbG9jaywgLXlCbG9j
ayk7CisgICAgICAgIGNoaWxkLT5hZGp1c3RQb3NpdGlvbigtY2hpbGRSZWN0LngoKSwgLWNoaWxk
UmVjdC55KCkpOwogICAgIH0KIAogICAgIC8vIFBvc2l0aW9uIG91cnNlbHZlcy4K
</data>

          </attachment>
      

    </bug>

</bugzilla>