<?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>5146</bug_id>
          
          <creation_ts>2005-09-27 02:51:58 -0700</creation_ts>
          <short_desc>max-height/max-width not resizing images with correct aspect ratio</short_desc>
          <delta_ts>2006-02-24 14:05:12 -0800</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>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://www.yabbforum.com/community/YaBB.pl?num=1127367903/10#10</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andrew Aitken">loonypandora</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bdakin</cc>
    
    <cc>darin</cc>
    
    <cc>hyatt</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>20655</commentid>
    <comment_count>0</comment_count>
    <who name="Andrew Aitken">loonypandora</who>
    <bug_when>2005-09-27 02:51:58 -0700</bug_when>
    <thetext>When an image has only one of max-height or max-width specified - the spec states (I think) that the 
image should be resized so that the image continues to have the same aspect ratio.

In Safari, it doesn&apos;t resize the image with the correct ratio - so images can appear &quot;squashed&quot; when you 
specify only a max-width, or max-height on their own.

Relevant W3 Page: http://www.w3.org/TR/CSS21/visudet.html#min-max-widths


Works as expected in the following (Mac OS X 10.4.2):
Camino 1.0a1
Opera 8.5.2173
Firefox 1.5 beta 1

Works as Safari (suspected buggy behaviour)
Firefox 1.07</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>20656</commentid>
    <comment_count>1</comment_count>
      <attachid>4061</attachid>
    <who name="Andrew Aitken">loonypandora</who>
    <bug_when>2005-09-27 02:53:30 -0700</bug_when>
    <thetext>Created attachment 4061
Example HTML Page

This is the necessary HTML to demonstrate this issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>20657</commentid>
    <comment_count>2</comment_count>
      <attachid>4062</attachid>
    <who name="Andrew Aitken">loonypandora</who>
    <bug_when>2005-09-27 02:56:08 -0700</bug_when>
    <thetext>Created attachment 4062
Example Image

This image is naturally a rectangle 200x400 pixels. When viewed through the
example HTML page, Safari &quot;squishes&quot; the image, as only max-width is specified.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>20658</commentid>
    <comment_count>3</comment_count>
      <attachid>4063</attachid>
    <who name="Andrew Aitken">loonypandora</who>
    <bug_when>2005-09-27 02:57:33 -0700</bug_when>
    <thetext>Created attachment 4063
Example HTML

This is an example of the bug. The image will appear &quot;squished&quot; in Safari,
while most other browsers resize the image keeping the correct aspect ratio.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>20728</commentid>
    <comment_count>4</comment_count>
    <who name="Maks Orlovich">maksim</who>
    <bug_when>2005-09-28 06:15:50 -0700</bug_when>
    <thetext>This was recently fixed in our tree, FYI: 
 
http://lists.kde.org/?l=kde-commits&amp;m=112437812001222&amp;w=2 
  </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30543</commentid>
    <comment_count>5</comment_count>
      <attachid>6081</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-01-29 12:17:02 -0800</bug_when>
    <thetext>Created attachment 6081
patch

This is a patch is taken from Allan Sandfeld Jensen&apos;s (carewolf) patch of a similar bug from the kde side (http://bugs.kde.org/show_bug.cgi?id=120107).  I changed almost nothing, so I am not adding any copyright for myself, but I did add carewolfs name to the top (even though it is not there in the khtml version).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30551</commentid>
    <comment_count>6</comment_count>
      <attachid>6081</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-01-29 14:15:40 -0800</bug_when>
    <thetext>Comment on attachment 6081
patch

Looks really good. Thanks for doing this!

But we also need a layout test in the patch to land the test. The tests attached to the bug look pretty good, we just need to turn them into layout tests and include them along with expected results in the patch.

I also think that these lines:

+    
+    if (width &gt; maxW)
+        width = maxW;
+    
+    if (width &lt; minW)
+        width = minW;
+    
+    return width;

would read better if it instead it just said:

    return kMax(minW, kMin(width, maxW));

Setting review- due to the lack of a layout test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30566</commentid>
    <comment_count>7</comment_count>
      <attachid>6087</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-01-29 17:27:08 -0800</bug_when>
    <thetext>Created attachment 6087
image needed for test cases

Image intended to go in fast/replaced/resources/square-blue-100x100.png for use in test cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30570</commentid>
    <comment_count>8</comment_count>
      <attachid>6089</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-01-29 17:57:19 -0800</bug_when>
    <thetext>Created attachment 6089
patch 2

2 test cases added</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30584</commentid>
    <comment_count>9</comment_count>
      <attachid>6089</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-01-29 20:04:51 -0800</bug_when>
    <thetext>Comment on attachment 6089
patch 2

Looks good, r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>31023</commentid>
    <comment_count>10</comment_count>
      <attachid>6089</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-02-01 21:26:44 -0800</bug_when>
    <thetext>Comment on attachment 6089
patch 2

I went to land this patch, and discovered that the test case maxwidth-percent.html fails with the patch.

I debugged a bit and found that when computing the width, RenderBox::calcReplacedWidthUsing(MaxWidth) calls containingBlockWidth() and gets 0, so it returns intrinsicWidth, 100, instead of 50% of the containing block&apos;s width. The reason containingBlockWidth() gets 0 is that usesLineWidth() returns true.

It&apos;s possible this fix worked fine in the KDE tree but we need more work to get it to do the right thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>32285</commentid>
    <comment_count>11</comment_count>
      <attachid>6447</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-02-12 20:35:18 -0800</bug_when>
    <thetext>Created attachment 6447
patch 3

This patch fixes all the issues the last one had by adding a change to the calcMinMaxWidth() function in RenderReplaced that I forgot in the previous one.  I should note that this patch does not add correct functionality for max/min height/width for absolutly positioned images, but it also has no negative affect on absolutly position element either.  The code for absolutly positioned element is handled a little different and as it stands is quite messy.  In fact most of RenderBox up through RenderReplaced and RenderImage could use some love as the code paths are quite unclear at best.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>32286</commentid>
    <comment_count>12</comment_count>
      <attachid>6447</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-02-12 20:46:35 -0800</bug_when>
    <thetext>Comment on attachment 6447
patch 3

Can you explain this?

+    case Percent: {
+        const int cw = containingBlockWidth();
+        if (cw &gt; 0)
+            return calcContentBoxWidth(h.minWidth(cw));
+    }
+    // fall through


I do not understand why a containg block width of 0 would suddenly cause you to use intrinsic width instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>32297</commentid>
    <comment_count>13</comment_count>
      <attachid>6452</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-02-12 22:16:42 -0800</bug_when>
    <thetext>Created attachment 6452
patch 4

forgot to addback a call prefix, should work this time</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>32300</commentid>
    <comment_count>14</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-02-12 22:37:41 -0800</bug_when>
    <thetext>hyatt,
Now that you mention it, I can&apos;t really explain why it is there other that I was trying to match the behavior that the corresponding width function has already.  But I&apos;m not clear why the width has it either.  I&apos;ll have to experiment unless anyone knows of reason why this would be necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>32313</commentid>
    <comment_count>15</comment_count>
      <attachid>6452</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-02-13 05:12:46 -0800</bug_when>
    <thetext>Comment on attachment 6452
patch 4

removing review request flag until I smooth out some more kinks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>32905</commentid>
    <comment_count>16</comment_count>
      <attachid>6526</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-02-15 21:02:10 -0800</bug_when>
    <thetext>Created attachment 6526
patch 5

In this latest version of the patch, I&apos;ve cleaned up the changes and tried to focus them into RenderImage as to avoid unintended side effects with RenderReplaced.  There is still no functionality for absolutly positioned images.  I&apos;ve also added more test cases to more accuratly show all of the changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>32906</commentid>
    <comment_count>17</comment_count>
      <attachid>6527</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-02-15 21:04:08 -0800</bug_when>
    <thetext>Created attachment 6527
2nd file needed for test cases

Adding another image that is used in the new test cases involving min-width and min-height.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>32908</commentid>
    <comment_count>18</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2006-02-15 21:11:58 -0800</bug_when>
    <thetext>I wonder if there is any possiblity long term of sharing code with similar changes needed in SVG:
http://bugzilla.opendarwin.org/show_bug.cgi?id=5966

Currently SVG does not use the &quot;Length&quot; object, which would likely make any sharing now impossible.  SVG Images are a bit more configurable (and thus complicated) in this area.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>32911</commentid>
    <comment_count>19</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-02-15 21:31:07 -0800</bug_when>
    <thetext>Going forward sharing the code SVG images might be really helpful especially because some of the CSS 3 box model stuff includes the extra functionality.  But perhaps I am getting ahead of myself.  First someone really needs to rename the width and minWidth functions in the Length class.  They really confuse me when dealing with heights :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>32977</commentid>
    <comment_count>20</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-02-16 09:35:18 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; First someone really needs to rename the width and minWidth functions in the Length class.
&gt; They really confuse me when dealing with heights :(

Sounds good. Please propose some new names -- we can discuss then on IRC -- and then submit a patch to rename them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>33145</commentid>
    <comment_count>21</comment_count>
      <attachid>6526</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-02-17 13:05:38 -0800</bug_when>
    <thetext>Comment on attachment 6526
patch 5

Everything looks fine except for this section:

@@ -1216,15 +1213,15 @@ int RenderBox::calcReplacedWidthUsing(Wi
     else
         w = style()-&gt;maxWidth();
     
-    switch (w.type) {
+    switch (w.type)
+    {
     case Fixed:
         return calcContentBoxWidth(w.value);
-    case Percent: {
+    case Percent: 
         const int cw = containingBlockWidth();
         if (cw &gt; 0)
             return calcContentBoxWidth(w.minWidth(cw));
-    }
-    // fall through
+    //fall through
     default:
         return intrinsicWidth();
     }

You changed things here to no long match our style guidelines.  Can you just undo that section and re-attach the patch? Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>33150</commentid>
    <comment_count>22</comment_count>
      <attachid>6567</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-02-17 14:02:06 -0800</bug_when>
    <thetext>Created attachment 6567
patch 6

I reverted that section back, but I am not quite clear as to what the rule was being broken.  If you could elaborate or specify which part of the guidlines it broke it would help me in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>33481</commentid>
    <comment_count>23</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-02-20 06:31:53 -0800</bug_when>
    <thetext>This part violated the style guidelines:

-    switch (w.type) {
+    switch (w.type)
+    {

Our coding style guidelines call for the open brace to be on the same line as switch keyword.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>33487</commentid>
    <comment_count>24</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-02-20 06:58:23 -0800</bug_when>
    <thetext>I see (but in my defence, I did notice that change was only made in the last couple of days ;)  ), that means that there is actually another violation I made just a coulple lines down in the patch as well.  While I am changing it to be to spec, would it be ok for me to change the lines

-    case Percent: {
+    case Percent: 
         const int cw = containingBlockWidth();
         if (cw &gt; 0)
             return calcContentBoxWidth(w.minWidth(cw));
-    }
-    // fall through
+    //fall through

as I noticed in general, braces are no used inside switch statements in the code?  </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>33491</commentid>
    <comment_count>25</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-02-20 07:44:58 -0800</bug_when>
    <thetext>For that matter, what is the correct style (for webkit) for &apos;case&apos; statments in a &apos;switch&apos; statement?  Should braces be used at all?  If so, should the open brace be on the same line as the case or on the next line? How should indenting work?  Also, are their rules for how to style multiple case statements relating to the same thing?  I know not every situation can be specified in the style guidelines but perhaps answering some of the questions might help consistency, and appease the obsessively compulsive of us out there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>33504</commentid>
    <comment_count>26</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-02-20 10:05:04 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; -    case Percent: {
&gt; +    case Percent: 
&gt;          const int cw = containingBlockWidth();
&gt;          if (cw &gt; 0)
&gt;              return calcContentBoxWidth(w.minWidth(cw));
&gt; -    }
&gt; -    // fall through
&gt; +    //fall through
&gt;       default:

It&apos;s true that we don&apos;t always use braces for case statements.

But in this case, the braces are needed to scope the &quot;cw&quot; variable. If you don&apos;t have braces, jumping to the default case puts you in a place where &quot;cw&quot; is in scope, but not initialized. I believe gcc gives a warning about this.

So the braces are there for a reason and should not be removed. But it&apos;s true that many case statements won&apos;t have braces.

Also, I don&apos;t see the point in removing the space after the &quot;//&quot; in the comment. We always use a space there although it&apos;s not called out in the guidelines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>33608</commentid>
    <comment_count>27</comment_count>
      <attachid>6645</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-02-21 10:44:05 -0800</bug_when>
    <thetext>Created attachment 6645
patch (take 7)

After fleshing out the finer points of switch statement styling with darin, here is take 7 of the patch.  Hopefully ready for primetime.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>33645</commentid>
    <comment_count>28</comment_count>
      <attachid>6645</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-02-21 14:53:09 -0800</bug_when>
    <thetext>Comment on attachment 6645
patch (take 7)

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>33877</commentid>
    <comment_count>29</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2006-02-24 14:05:12 -0800</bug_when>
    <thetext>Landed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>4061</attachid>
            <date>2005-09-27 02:53:30 -0700</date>
            <delta_ts>2005-09-27 02:57:33 -0700</delta_ts>
            <desc>Example HTML Page</desc>
            <filename>max-height.html</filename>
            <type>text/html</type>
            <size>416</size>
            <attacher name="Andrew Aitken">loonypandora</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFs
Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25h
bC5kdGQiPgo8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgeG1sOmxh
bmc9ImVuIiBsYW5nPSJlbiI+CjxoZWFkPgo8dGl0bGU+VGVzdDwvdGl0bGU+CjxtZXRhIGh0dHAt
ZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiAv
Pgo8L2hlYWQ+Cgo8Ym9keT4KPGltZyBzcmM9Ii4vdGVzdC5wbmciIGFsdD0iIiB0aXRsZT0iIiBi
b3JkZXI9IjAiIHN0eWxlPSJtYXgtaGVpZ2h0OiAxNTBweDsgbWF4LXdpZHRoOiAxNTBweDsiIC8+
CjwvYm9keT4KPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>4062</attachid>
            <date>2005-09-27 02:56:08 -0700</date>
            <delta_ts>2005-09-27 02:56:08 -0700</delta_ts>
            <desc>Example Image</desc>
            <filename>test.png</filename>
            <type>image/png</type>
            <size>3003</size>
            <attacher name="Andrew Aitken">loonypandora</attacher>
            
              <data encoding="base64">iVBORw0KGgoAAAANSUhEUgAAAMgAAAGQCAMAAADcLN+CAAAABGdBTUEAANbY1E9YMgAAABl0RVh0
U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFfUExURfYAAMQAANIAAC0AADsAADgAAIYA
AIAAAFoAAF0AALYAAJEAABIAAJQAAIQAAO0AAHsAAG4AAKIAAPUAAKUAAGsAAE4AABAAALEAAEkA
APIAAL8AAH8AAMcAAAkAAAoAAA0AAO8AALMAAHkAAEwAAEAAADEAAI0AAEIAANQAAC8AAPQAAJ4A
ADAAALsAAKkAAMgAAAgAALQAAIUAAJIAANoAAEcAAOEAAHAAANsAAN8AANAAANcAAHoAAL0AAG0A
AM4AAJcAADIAAFkAAOIAAC4AADUAAM8AACgAAGQAANgAAHIAAGkAACAAAP0AALAAAGgAACIAAMoA
AN0AAA4AALgAAPwAAJUAACcAACQAAB4AAEsAAGoAAE8AAJsAAKYAAGUAAO4AAI8AAAsAADcAAAIA
AMUAANEAAJoAAM0AAFYAAPEAAD4AADoAAGEAAPcAACUAAJYAACsAAP8AAAAAAG/aImEAAAniSURB
VHja7J37VxJNGMcXARXloii3UiDRlJLCNNMuWIq3rMwuKAYU5aVMTWX+//Me4hx2dhFngb3M+22e
n8fd+eDuzsxz+T4SATFJgAgQASJABIgAESACRIAIEAEiQP5aKBUseEthWzJblnKVnFTOJm3hkrcQ
TIX+NyD5YsKf9lWamS/tTxTzvIPYzz1HQxW2DR15zu28gsQj3oxU0W5SxhuJcwcSG5/8VWndfk2O
x3gCcY7YKu2abcTJCcin3uE7lU7sznDvJ+tB3i7crnRutxfeWguy9+JlRR97+WLPOpCdxLOKfvYs
sWMNiHtplPXwr4d3BzaDjitHcHNgN7zOepVGl9wWgJw8umlOi9vdrgP1tNwHru7txZv+7NGJ2SBr
l3+azqZrOnDWfHWInQWmu5r+7Z/LNTNBooPHTSZyq29gKsr++6mBvltNrnA8GDUNxOFvsoMa21rW
fJHlrbEmuzK/wySQ99c/GaM9rU7A0XP956LrvRkgF/3vrrn37+Hedg4aod7h39dc7V3/heEg833X
3Pjp94m2vzYT359ec8W+eYNBvj1vvOnr2bsdrcl3Z183XvT5NyNBfow0fms+dt/reMN3r/tj4/dv
5IdhIPuexoPrnD6bcOdc4+HYs28QiP1rw70eftHthPflYcPVv9oNAXGOqW/04c2MjofumTcf1DcY
cxoAcvpAfebuX9XZEbLarz7zPzjVHWRCfX6yuQxwTrnUR+bbEzqDnKo5XtmJEWZ/pSY51RXEqXqu
Hg8eGuQwPBx8rHq6nDqC2FXv+eeIgU7cyGfVG2/XDWRf9d39uWGoO3rjp+orvK8TyA/lOni/J06M
tXjPfeXK+EMfkBHFVZ8EiPEWeKK454guIN8U+6uuFWKGrSjOPLe+6QAyr9jvdo0Tc2xcQfJ8vmOQ
C8X548kKMctWFE9X30WnIP2K9zxAzLOA4o3v7xDkveJc20PMtB7F6fd9RyAOxZP6M24qSFyxnnQ5
OgCJKvw+nzeIubahWOP90fZBBhX7qwgx2yKKfddg2yBrx9qvY4wpfsnjtXZBLhX79kMLQA4Vu/rL
NkFOaD+1zU6sMDt90vpz0haIm44bSC5ijbno0+8jdzsgSy2tR4aZYkVeagNkh3Ywf1i1DGSV9q2M
7rQOkqB/iTfEOntDTyTRMsgeHed8OGMhyAztuXu21yrIC9ov+oVYaV9ob+qLFkHe0vHzOWKtzdHx
+LetgSzQ/nanxSBO2le/0BLIJ9of102stm7aY/epFZBeOo5zz3KQe3QkqLcVkGHqD2eJ9TZLzWe4
BRAnlWzx9C4HIHepOOMdp3YQ2pP1nfBg35lerutAYtSW8/cEFyATVBTbFtMKMs5+Ik03+q0d1woy
yf5GmG70d3RSI0icyhcdDXECEqI247/i2kAilnmytHq5ItpAvFS+j4MbEAeVS+TVBpKhokWEH6Oi
ZhlNIHbqlLzFEcgW5UGwawE5p+ISyxyBLFNxmnMtIFSgrY/wZFSAw6MF5EgeP8AVyIA8sSMNIHnq
6zDFFcgU9TXNs0GKlCc/yhVIlIpxFNkglBtomvBl0ze5hRpAqJBIgDOQABUsYYOk5dFnnIGcyVNL
M0FCshNpMcYZSEzOq/eFWCApmXqb8Gbb8uRSLJAgT26gG9xCQRZIQR7r4g7EJU+uwAKh9vAH3IEc
3LCTV4OUZLeLmzsQt+ymKrFAwvWh64Q/W6/PLswCsTUfyoHJP7ONBZKsD93lEGS3PrskCyTL6R5e
vZPPskDK9aGbHIJs1mdXZoFIzZccDkxeriUWSK4+1MEhiKM+uxwLRF5yrjgEuZKn98/8R2DeEZiv
Fsw6ArOyw+y1YHa/MOcRmBMizJkdxosC49eC8TTC+H5xvPEw8RGYiBVMDBEmqosTZ4fJfIDJRYHJ
DsLJ14LJoIPJaYTJMsXJ+4XJxIbJjcepVoCpH8Gp6IGpsYKpesOpQ4SpDMWp1YWpnsapZ4dRGMDR
fIBR4cDRRcFRqoHRDsJRc4LR18JRPMPRoMNRBYTRacRRzsTRMsVRl4XR+8VRYMbRxMZRKcfRjcdR
8sfprYDT7QKn/whORxgC06OH4HRNwuljRWA6ixGcXm843fcITD/EqoF0qCQ4PUMJTBfXqoH01a0a
SKfjqoH0nq5twiG6gddWB4z+7DX/YMSbkVqAkDLeiI4+S/1A/p6Gzz1HQxogho485zr7k/QFqVq+
mPCnfU0ZfGl/opjX35OkP0jtoJEKFrylsC2ZLUu5Sk4qZ5O2cMlbCKaMSu02CMR8EyACRIAIEAEi
QASIABEgAkSACBABIkAEiAARIAJEgAgQASJANBqCNx4iPgIRscKIIYJEdTHi7CCZDyC5KCDZQSD5
WigZdCA5jSBZpih5vyiZ2CC58SjVCij1IyAVPSg1VihVbyh1iCiVoSi1uijV0yj17CgKAyiaDygq
HDC6KChKNSjaQShqTjD6WiiKZygadCiqgDA6jSjKmTBapijqsih6vzAKzCia2DAq5Si68TBK/ii9
FWC6XaD0H4HpCAPTowelaxJMHyuUzmIwvd5guu+h9EOE6VAJ0zMUposrSl9dmE7HML2nYbqBo/Rn
z1NfhymuQKaor2meDVKkPPlRrkCiVIyjyAah3EDThC+bvskt1ABChUQCnIEEqGAJGyQtjz7jDORM
nlqaCRKSnUiLMc5AYnJevS/EAknJ1NuEN9uWJ5digQR5cgPd4BYKskAK8lgXdyAueXIFFgi1hz/g
DuTghp28GqQku13c3IG4ZTdViQUSrg9dJ/zZen12YRaIrflQDkz+mW0skGR96C6HILv12SVZIFlO
9/DqnXyWBVKuD93kEGSzPrsyC0RqvuRwYPJyLbFAcvWhDg5BHPXZ5Vgg8pJzxSHIlTy9f+Y/AvOO
wHy1YNYRmJUdZq8Fs/uFOY/AnBBhzuwwXhQYvxaMpxHG94vjjYeJj8BErGBiiDBRXZw4O0zmA0wu
Ckx2EE6+FkwGHUxOI0yWKU7eL0wmNkxuPE61Akz9CE5FD0yNFUzVG04dIkxlKE6tLkz1NE49O4zC
AI7mA4wKB44uCo5SDYx2EI6aE4y+Fo7iGY4GHY4qIIxOI45yJo6WKY66LIzeL44CM44mNo5KOY5u
PI6SP05vBZxuFzj9R3A6whCYHj0Ep2sSTh8rAtNZjOD0esPpvkdg+iFWDaRDJcHpGUpgurhWDaSv
btVAOh1XDaT3dG0TDtENvLY6YPRnr/kHI96M1AKElPFGdPRZ6gfy9zR87jka0gAxdOQ519mfpC9I
1fLFhD/ta8rgS/sTxbz+niT9QWoHjVSw4C2FbclsWcpVclI5m7SFS95CMGVUardBIOabABEgAkSA
CBABIkAEiAARIAJEgFhl/wkwADOhx6ckSMd6AAAAAElFTkSuQmCC
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>4063</attachid>
            <date>2005-09-27 02:57:33 -0700</date>
            <delta_ts>2005-09-27 02:57:33 -0700</delta_ts>
            <desc>Example HTML</desc>
            <filename>max-width.html</filename>
            <type>text/html</type>
            <size>397</size>
            <attacher name="Andrew Aitken">loonypandora</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFs
Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25h
bC5kdGQiPgo8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgeG1sOmxh
bmc9ImVuIiBsYW5nPSJlbiI+CjxoZWFkPgo8dGl0bGU+VGVzdDwvdGl0bGU+CjxtZXRhIGh0dHAt
ZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiAv
Pgo8L2hlYWQ+Cgo8Ym9keT4KPGltZyBzcmM9Ii4vdGVzdC5wbmciIGFsdD0iIiB0aXRsZT0iIiBi
b3JkZXI9IjAiIHN0eWxlPSJtYXgtd2lkdGg6IDEwMHB4OyIgLz4KPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6081</attachid>
            <date>2006-01-29 12:17:02 -0800</date>
            <delta_ts>2006-01-29 17:57:19 -0800</delta_ts>
            <desc>patch</desc>
            <filename>code.patch</filename>
            <type>text/plain</type>
            <size>5045</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IHJlbmRlcmluZy9yZW5kZXJfaW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSByZW5kZXJpbmcv
cmVuZGVyX2ltYWdlLmgJKHJldmlzaW9uIDEyNDUzKQorKysgcmVuZGVyaW5nL3JlbmRlcl9pbWFn
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zLDYgKzMsNyBAQAogICoKICAqIENvcHlyaWdodCAoQykg
MTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAxOTk5IEFu
dHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQorICogICAgICAgICAgIChDKSAyMDA2IEFs
bGFuIFNhbmRmZWxkIEplbnNlbiAoa2RlQGNhcmV3b2xmLmNvbSkKICAqIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNSwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLgogICoKICAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTY5
LDYgKzcwLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQb2ludChOb2RlSW5m
byYgaW5mbywgaW50IHgsIGludCB5LCBpbnQgdHgsIGludCB0eSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgSGl0VGVzdEFjdGlvbiBoaXRUZXN0QWN0aW9uKTsKICAgICAKKyAgICBpbnQg
Y2FsY0FzcGVjdFJhdGlvV2lkdGgoKSBjb25zdDsKKyAgICBpbnQgY2FsY0FzcGVjdFJhdGlvSGVp
Z2h0KCkgY29uc3Q7CisgICAgCiAgICAgdmlydHVhbCBpbnQgY2FsY1JlcGxhY2VkV2lkdGgoKSBj
b25zdDsKICAgICB2aXJ0dWFsIGludCBjYWxjUmVwbGFjZWRIZWlnaHQoKSBjb25zdDsKIApJbmRl
eDogcmVuZGVyaW5nL3JlbmRlcl9pbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcmVuZGVyaW5nL3Jl
bmRlcl9pbWFnZS5jcHAJKHJldmlzaW9uIDEyNDUzKQorKysgcmVuZGVyaW5nL3JlbmRlcl9pbWFn
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQsNiArNCw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDE5
OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0
aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMCBEaXJr
IE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKKyAqICAgICAgICAgICAoQykgMjAwNiBBbGxhbiBT
YW5kZmVsZCBKZW5zZW4gKGtkZUBjYXJld29sZi5jb20pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDMs
IDIwMDQsIDIwMDUsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4KICAqCiAgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0z
NTksMzAgKzM2MCw2MSBAQCBib29sIFJlbmRlckltYWdlOjppc0hlaWdodFNwZWNpZmllZCgpIGNv
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitpbnQgUmVuZGVySW1hZ2U6OmNhbGNBc3BlY3RSYXRp
b1dpZHRoKCkgY29uc3QKK3sKKyAgICBpZiAoaW50cmluc2ljSGVpZ2h0KCkgPT0gMCkKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgaWYgKCFtX2NhY2hlZEltYWdlIHx8IG1fY2FjaGVkSW1hZ2UtPmlz
RXJyb3JJbWFnZSgpKQorICAgICAgICByZXR1cm4gaW50cmluc2ljV2lkdGgoKTsgLy8gRG9uJ3Qg
Ym90aGVyIHNjYWxpbmcuCisgICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjpjYWxjUmVwbGFjZWRI
ZWlnaHQoKSAqIGludHJpbnNpY1dpZHRoKCkgLyBpbnRyaW5zaWNIZWlnaHQoKTsKK30KKworaW50
IFJlbmRlckltYWdlOjpjYWxjQXNwZWN0UmF0aW9IZWlnaHQoKSBjb25zdAoreworICAgIGlmIChp
bnRyaW5zaWNXaWR0aCgpID09IDApCisgICAgICAgIHJldHVybiAwOworICAgIGlmICghbV9jYWNo
ZWRJbWFnZSB8fCBtX2NhY2hlZEltYWdlLT5pc0Vycm9ySW1hZ2UoKSkKKyAgICAgICAgcmV0dXJu
IGludHJpbnNpY0hlaWdodCgpOyAvLyBEb24ndCBib3RoZXIgc2NhbGluZy4KKyAgICByZXR1cm4g
UmVuZGVyUmVwbGFjZWQ6OmNhbGNSZXBsYWNlZFdpZHRoKCkgKiBpbnRyaW5zaWNIZWlnaHQoKSAv
IGludHJpbnNpY1dpZHRoKCk7Cit9CisKIGludCBSZW5kZXJJbWFnZTo6Y2FsY1JlcGxhY2VkV2lk
dGgoKSBjb25zdAogewotICAgIC8vIElmIGhlaWdodCBpcyBzcGVjaWZpZWQgYW5kIG5vdCB3aWR0
aCwgcHJlc2VydmUgYXNwZWN0IHJhdGlvLgotICAgIGlmIChpc0hlaWdodFNwZWNpZmllZCgpICYm
ICFpc1dpZHRoU3BlY2lmaWVkKCkpIHsKLSAgICAgICAgaWYgKGludHJpbnNpY0hlaWdodCgpID09
IDApCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgaWYgKCFtX2NhY2hlZEltYWdlIHx8
IG1fY2FjaGVkSW1hZ2UtPmlzRXJyb3JJbWFnZSgpKQotICAgICAgICAgICAgcmV0dXJuIGludHJp
bnNpY1dpZHRoKCk7IC8vIERvbid0IGJvdGhlciBzY2FsaW5nLgotICAgICAgICByZXR1cm4gY2Fs
Y1JlcGxhY2VkSGVpZ2h0KCkgKiBpbnRyaW5zaWNXaWR0aCgpIC8gaW50cmluc2ljSGVpZ2h0KCk7
Ci0gICAgfQotICAgIHJldHVybiBSZW5kZXJSZXBsYWNlZDo6Y2FsY1JlcGxhY2VkV2lkdGgoKTsK
KyAgICBpbnQgd2lkdGg7CisgICAgaWYgKGlzV2lkdGhTcGVjaWZpZWQoKSkKKyAgICAgICAgd2lk
dGggPSBjYWxjUmVwbGFjZWRXaWR0aFVzaW5nKFdpZHRoKTsKKyAgICBlbHNlCisgICAgICAgIHdp
ZHRoID0gY2FsY0FzcGVjdFJhdGlvV2lkdGgoKTsKKyAgICBpbnQgbWluVyA9IGNhbGNSZXBsYWNl
ZFdpZHRoVXNpbmcoTWluV2lkdGgpOworICAgIGludCBtYXhXID0gc3R5bGUoKS0+bWF4V2lkdGgo
KS5sZW5ndGgoKSA9PSBVTkRFRklORUQgPyB3aWR0aCA6IGNhbGNSZXBsYWNlZFdpZHRoVXNpbmco
TWF4V2lkdGgpOworICAgIAorICAgIGlmICh3aWR0aCA+IG1heFcpCisgICAgICAgIHdpZHRoID0g
bWF4VzsKKyAgICAKKyAgICBpZiAod2lkdGggPCBtaW5XKQorICAgICAgICB3aWR0aCA9IG1pblc7
CisgICAgCisgICAgcmV0dXJuIHdpZHRoOwogfQogCiBpbnQgUmVuZGVySW1hZ2U6OmNhbGNSZXBs
YWNlZEhlaWdodCgpIGNvbnN0CiB7Ci0gICAgLy8gSWYgd2lkdGggaXMgc3BlY2lmaWVkIGFuZCBu
b3QgaGVpZ2h0LCBwcmVzZXJ2ZSBhc3BlY3QgcmF0aW8uCi0gICAgaWYgKGlzV2lkdGhTcGVjaWZp
ZWQoKSAmJiAhaXNIZWlnaHRTcGVjaWZpZWQoKSkgewotICAgICAgICBpZiAoaW50cmluc2ljV2lk
dGgoKSA9PSAwKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIGlmICghbV9jYWNoZWRJ
bWFnZSB8fCBtX2NhY2hlZEltYWdlLT5pc0Vycm9ySW1hZ2UoKSkKLSAgICAgICAgICAgIHJldHVy
biBpbnRyaW5zaWNIZWlnaHQoKTsgLy8gRG9uJ3QgYm90aGVyIHNjYWxpbmcuCi0gICAgICAgIHJl
dHVybiBjYWxjUmVwbGFjZWRXaWR0aCgpICogaW50cmluc2ljSGVpZ2h0KCkgLyBpbnRyaW5zaWNX
aWR0aCgpOwotICAgIH0KLSAgICByZXR1cm4gUmVuZGVyUmVwbGFjZWQ6OmNhbGNSZXBsYWNlZEhl
aWdodCgpOworICAgIGludCBoZWlnaHQ7CisgICAgaWYgKGlzSGVpZ2h0U3BlY2lmaWVkKCkpCisg
ICAgICAgIGhlaWdodCA9IGNhbGNSZXBsYWNlZEhlaWdodFVzaW5nKEhlaWdodCk7CisgICAgZWxz
ZQorICAgICAgICBoZWlnaHQgPSBjYWxjQXNwZWN0UmF0aW9IZWlnaHQoKTsKKyAgICAKKyAgICBp
bnQgbWluSCA9IGNhbGNSZXBsYWNlZEhlaWdodFVzaW5nKE1pbkhlaWdodCk7CisgICAgaW50IG1h
eEggPSBzdHlsZSgpLT5tYXhIZWlnaHQoKS5sZW5ndGgoKSA9PSBVTkRFRklORUQgPyBoZWlnaHQg
OiBjYWxjUmVwbGFjZWRIZWlnaHRVc2luZyhNYXhIZWlnaHQpOworICAgIAorICAgIGlmIChoZWln
aHQgPiBtYXhIKQorICAgICAgICBoZWlnaHQgPSBtYXhIOworICAgIAorICAgIGlmIChoZWlnaHQg
PCBtaW5IKQorICAgICAgICBoZWlnaHQgPSBtaW5IOworICAgIAorICAgIHJldHVybiBoZWlnaHQ7
CiB9CiAKIH0KSW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlz
aW9uIDEyNDYzKQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAK
KzIwMDYtMDEtMjkgIFNhbSBXZWluaWcgIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtIGZpeCBodHRwOi8vYnVn
emlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTUxNDYKKyAgICAgICAgICBtYXgt
aGVpZ2h0L21heC13aWR0aCBub3QgcmVzaXppbmcgaW1hZ2VzIHdpdGggY29ycmVjdCBhc3BlY3Qg
cmF0aW8KKyAgICAgICAgICAKKyAgICAgICAgLSBUaGlzIHBhdGNoIGlzIHByZXR0eSBtdWNoIGNv
cGllZCBmcm9tIEFsbGFuIFNhbmRmZWxkIEplbnNlbidzIChjYXJld29sZikKKyAgICAgICAgICBw
YXRjaCBvZiBodHRwOi8vYnVncy5rZGUub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjAxMDcgd2l0aCBz
aW1wbGUKKyAgICAgICAgICBtb2RpZmljYXRpb25zIHRvIHN1aXQgdGhlIFdlYmNvcmUgdHJlZS4K
KworICAgICAgICAqIHJlbmRlcmluZy9yZW5kZXJfaW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVySW1hZ2U6OmNhbGNBc3BlY3RSYXRpb1dpZHRoKTogCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJJbWFnZTo6Y2FsY0FzcGVjdFJhdGlvSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckltYWdlOjpjYWxjUmVwbGFjZWRXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJJbWFnZTo6Y2FsY1JlcGxhY2VkSGVpZ2h0KToKKyAgICAgICAgKiByZW5kZXJpbmcvcmVuZGVy
X2ltYWdlLmg6CisKIDIwMDYtMDEtMjkgIE1pdHogUGV0dGVsICA8b3BlbmRhcndpbi5vcmdAbWl0
enBldHRlbC5jb20+CiAKICAgICAgICAgVGVzdDogZmFzdC90YWJsZS9ib3JkZXItY29sbGFwc2lu
Zy9ydGwtYm9yZGVyLWNvbGxhcHNpbmcuaHRtbAo=
</data>
<flag name="review"
          id="1462"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>6087</attachid>
            <date>2006-01-29 17:27:08 -0800</date>
            <delta_ts>2006-01-29 17:27:08 -0800</delta_ts>
            <desc>image needed for test cases</desc>
            <filename>square-blue-100x100.png</filename>
            <type>image/png</type>
            <size>199</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">iVBORw0KGgoAAAANSUhEUgAAAGQAAABkAQMAAABKLAcXAAAAFmlUWHRYTUw6Y29tLmFkb2JlLnht
cAAAAAAAaEZ+GgAAAAZQTFRFAAD/AAAAe2K/PgAAABl0RVh0U29mdHdhcmUAR3JhcGhpY0NvbnZl
cnRlcjVdSO4AAAA1SURBVHicYmCgK2Ckr3VogJ8GKgcTIDd0h6ZvRzIY2Hw0sACf35nI1Ecd20kA
AAAAAP//AwDMaQA2EUO6XAAAAABJRU5ErkJggg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6089</attachid>
            <date>2006-01-29 17:57:19 -0800</date>
            <delta_ts>2006-02-12 20:35:18 -0800</delta_ts>
            <desc>patch 2</desc>
            <filename>imgmaxmin.diff</filename>
            <type>text/plain</type>
            <size>8257</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDEyNDY3KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsMTUgQEAKIDIwMDYtMDEtMjkgIFNhbSBXZWluaWcgIDxzYW0u
d2VpbmlnQGdtYWlsLmNvbT4KIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAtdGVzdHMgZm9yIGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTE0NgorCisgICAgICAgICogZmFzdC9yZXBsYWNlZC9tYXh3aWR0aC1wZXJj
ZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcmVwbGFjZWQvbWF4d2lkdGgtcHhzLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcmVwbGFjZWQvcmVzb3VyY2VzL3NxdWFyZS1ibHVl
LTEwMHgxMDAucG5nOiBBZGRlZC4KKworMjAwNi0wMS0yOSAgU2FtIFdlaW5pZyAgPHNhbS53ZWlu
aWdAZ21haWwuY29tPgorCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluLgogCiAgICAgICAgIC0g
Zml4ZWQgc29tZSB0ZXN0cyB0aGF0IHdlcmUgbWlzc2luZyB0ZXN0IGltYWdlcwpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9yZXBsYWNlZC9tYXh3aWR0aC1weHMuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L3JlcGxhY2VkL21heHdpZHRoLXB4cy5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9yZXBsYWNlZC9tYXh3aWR0aC1weHMuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxNiBAQAorPGh0bWw+Cis8aGVhZD4KKyAgPG1ldGEgaHR0cC1lcXVpdj0i
Y29udGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorICA8dGl0
bGU+VGVzdDwvdGl0bGU+CisgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisgICAgLnRlc3QgeyBt
YXgtd2lkdGg6IDUwcHg7IH0KKyAgICAuY29udHJvbCB7IGhlaWdodDogNTBweDsgd2lkdGg6IDUw
cHg7IH0KKyAgPC9zdHlsZT4KKyAgPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3Lncz
Lm9yZy9UUi9DU1MyMS92aXN1ZGV0Lmh0bWwjbWluLW1heC13aWR0aHMiIHRpdGxlPSIxMC40IE1p
bmltdW0gYW5kIG1heGltdW0gd2lkdGhzOiAmYXBvczttaW4td2lkdGgmYXBvczsgYW5kICZhcG9z
O21heC13aWR0aCZhcG9zOyI+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPHA+SW4gdGhpcyB0ZXN0IHlv
dSBzaG91bGQgc2VlIHR3byBpZGVudGljYWwgYmx1ZSBzcXVhcmVzLCBlYWNoIDUwcHggYnkgNTBw
eC48L3A+CisgIDxpbWcgc3JjPSJyZXNvdXJjZXMvc3F1YXJlLWJsdWUtMTAweDEwMC5wbmciIGFs
dD0iRkFJTDogSW1hZ2Ugc3VwcG9ydCByZXF1aXJlZC4iIGNsYXNzPSJ0ZXN0Ij4KKyAgPGltZyBz
cmM9InJlc291cmNlcy9zcXVhcmUtYmx1ZS0xMDB4MTAwLnBuZyIgYWx0PSJGQUlMOiBJbWFnZSBz
dXBwb3J0IHJlcXVpcmVkLiIgY2xhc3M9ImNvbnRyb2wiPgorPC9ib2R5PgorPC9odG1sPgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9yZXBsYWNlZC9tYXh3aWR0aC1wZXJjZW50Lmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9yZXBsYWNlZC9tYXh3aWR0aC1wZXJjZW50Lmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3JlcGxhY2VkL21heHdpZHRoLXBlcmNl
bnQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMCBAQAorPGh0bWw+Cis8aGVhZD4KKyAg
PG1ldGEgaHR0cC1lcXVpdj0iY29udGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJz
ZXQ9dXRmLTgiPgorICA8dGl0bGU+VGVzdDwvdGl0bGU+CisgIDxzdHlsZSB0eXBlPSJ0ZXh0L2Nz
cyI+CisgICAgLm91dGVyIHsgd2lkdGg6IDEwMHB4OyB9CisgICAgLnRlc3QgeyBtYXgtd2lkdGg6
IDUwJTsgfQorICAgIC5jb250cm9sIHsgaGVpZ2h0OiA1MHB4OyB3aWR0aDogNTBweDsgfQorICA8
L3N0eWxlPgorICA8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL0NT
UzIxL3Zpc3VkZXQuaHRtbCNtaW4tbWF4LXdpZHRocyIgdGl0bGU9IjEwLjQgTWluaW11bSBhbmQg
bWF4aW11bSB3aWR0aHM6ICZhcG9zO21pbi13aWR0aCZhcG9zOyBhbmQgJmFwb3M7bWF4LXdpZHRo
JmFwb3M7Ij4KKzwvaGVhZD4KKzxib2R5PgorICA8cD5JbiB0aGlzIHRlc3QgeW91IHNob3VsZCBz
ZWUgdHdvIGlkZW50aWNhbCBibHVlIHNxdWFyZXMsIGVhY2ggNTBweCBieSA1MHB4LjwvcD4KKyAg
PGRpdiBjbGFzcz0ib3V0ZXIiPgorICAgIDxpbWcgc3JjPSJyZXNvdXJjZXMvc3F1YXJlLWJsdWUt
MTAweDEwMC5wbmciIGFsdD0iRkFJTDogSW1hZ2Ugc3VwcG9ydCByZXF1aXJlZC4iIGNsYXNzPSJ0
ZXN0Ij4KKyAgPC9kaXY+CisgIDxicj4KKyAgPGltZyBzcmM9InJlc291cmNlcy9zcXVhcmUtYmx1
ZS0xMDB4MTAwLnBuZyIgYWx0PSJGQUlMOiBJbWFnZSBzdXBwb3J0IHJlcXVpcmVkLiIgY2xhc3M9
ImNvbnRyb2wiPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9yZXBs
YWNlZC9yZXNvdXJjZXMvc3F1YXJlLWJsdWUtMTAweDEwMC5wbmcKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3Qg
ZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGFw
cGxpY2F0aW9uL29jdGV0LXN0cmVhbQoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMv
ZmFzdC9yZXBsYWNlZC9yZXNvdXJjZXMvc3F1YXJlLWJsdWUtMTAweDEwMC5wbmcKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpOYW1lOiBzdm46bWltZS10eXBlCiAgICsgYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCgpJbmRl
eDogV2ViQ29yZS9yZW5kZXJpbmcvcmVuZGVyX2ltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9yZW5kZXJpbmcvcmVuZGVyX2ltYWdlLmgJKHJldmlzaW9uIDEyNDY3KQorKysgV2ViQ29yZS9y
ZW5kZXJpbmcvcmVuZGVyX2ltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMsNiArMyw3IEBACiAg
KgogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAg
ICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCisgKiAg
ICAgICAgICAgKEMpIDIwMDYgQWxsYW4gU2FuZGZlbGQgSmVuc2VuIChrZGVAY2FyZXdvbGYuY29t
KQogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMu
CiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgpAQCAtNjcsNiArNjgsOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJv
b2wgbm9kZUF0UG9pbnQoTm9kZUluZm8mLCBpbnQgeCwgaW50IHksIGludCB0eCwgaW50IHR5LCBI
aXRUZXN0QWN0aW9uKTsKICAgICAKKyAgICBpbnQgY2FsY0FzcGVjdFJhdGlvV2lkdGgoKSBjb25z
dDsKKyAgICBpbnQgY2FsY0FzcGVjdFJhdGlvSGVpZ2h0KCkgY29uc3Q7CisgICAgCiAgICAgdmly
dHVhbCBpbnQgY2FsY1JlcGxhY2VkV2lkdGgoKSBjb25zdDsKICAgICB2aXJ0dWFsIGludCBjYWxj
UmVwbGFjZWRIZWlnaHQoKSBjb25zdDsKIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvcmVuZGVy
X2ltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9yZW5kZXJfaW1hZ2Uu
Y3BwCShyZXZpc2lvbiAxMjQ2NykKKysrIFdlYkNvcmUvcmVuZGVyaW5nL3JlbmRlcl9pbWFnZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQsNiArNCw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkg
TGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBL
b2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMCBEaXJrIE11
ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKKyAqICAgICAgICAgICAoQykgMjAwNiBBbGxhbiBTYW5k
ZmVsZCBKZW5zZW4gKGtkZUBjYXJld29sZi5jb20pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIw
MDQsIDIwMDUsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4KICAqCiAgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0zNTks
MzAgKzM2MCw1MCBAQCBib29sIFJlbmRlckltYWdlOjppc0hlaWdodFNwZWNpZmllZCgpIGNvCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCitpbnQgUmVuZGVySW1hZ2U6OmNhbGNBc3BlY3RSYXRpb1dp
ZHRoKCkgY29uc3QKK3sKKyAgICBpZiAoaW50cmluc2ljSGVpZ2h0KCkgPT0gMCkKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgaWYgKCFtX2NhY2hlZEltYWdlIHx8IG1fY2FjaGVkSW1hZ2UtPmlzRXJy
b3JJbWFnZSgpKQorICAgICAgICByZXR1cm4gaW50cmluc2ljV2lkdGgoKTsgLy8gRG9uJ3QgYm90
aGVyIHNjYWxpbmcuCisgICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjpjYWxjUmVwbGFjZWRIZWln
aHQoKSAqIGludHJpbnNpY1dpZHRoKCkgLyBpbnRyaW5zaWNIZWlnaHQoKTsKK30KKworaW50IFJl
bmRlckltYWdlOjpjYWxjQXNwZWN0UmF0aW9IZWlnaHQoKSBjb25zdAoreworICAgIGlmIChpbnRy
aW5zaWNXaWR0aCgpID09IDApCisgICAgICAgIHJldHVybiAwOworICAgIGlmICghbV9jYWNoZWRJ
bWFnZSB8fCBtX2NhY2hlZEltYWdlLT5pc0Vycm9ySW1hZ2UoKSkKKyAgICAgICAgcmV0dXJuIGlu
dHJpbnNpY0hlaWdodCgpOyAvLyBEb24ndCBib3RoZXIgc2NhbGluZy4KKyAgICByZXR1cm4gUmVu
ZGVyUmVwbGFjZWQ6OmNhbGNSZXBsYWNlZFdpZHRoKCkgKiBpbnRyaW5zaWNIZWlnaHQoKSAvIGlu
dHJpbnNpY1dpZHRoKCk7Cit9CisKIGludCBSZW5kZXJJbWFnZTo6Y2FsY1JlcGxhY2VkV2lkdGgo
KSBjb25zdAogewotICAgIC8vIElmIGhlaWdodCBpcyBzcGVjaWZpZWQgYW5kIG5vdCB3aWR0aCwg
cHJlc2VydmUgYXNwZWN0IHJhdGlvLgotICAgIGlmIChpc0hlaWdodFNwZWNpZmllZCgpICYmICFp
c1dpZHRoU3BlY2lmaWVkKCkpIHsKLSAgICAgICAgaWYgKGludHJpbnNpY0hlaWdodCgpID09IDAp
Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgaWYgKCFtX2NhY2hlZEltYWdlIHx8IG1f
Y2FjaGVkSW1hZ2UtPmlzRXJyb3JJbWFnZSgpKQotICAgICAgICAgICAgcmV0dXJuIGludHJpbnNp
Y1dpZHRoKCk7IC8vIERvbid0IGJvdGhlciBzY2FsaW5nLgotICAgICAgICByZXR1cm4gY2FsY1Jl
cGxhY2VkSGVpZ2h0KCkgKiBpbnRyaW5zaWNXaWR0aCgpIC8gaW50cmluc2ljSGVpZ2h0KCk7Ci0g
ICAgfQotICAgIHJldHVybiBSZW5kZXJSZXBsYWNlZDo6Y2FsY1JlcGxhY2VkV2lkdGgoKTsKKyAg
ICBpbnQgd2lkdGg7CisgICAgaWYgKGlzV2lkdGhTcGVjaWZpZWQoKSkKKyAgICAgICAgd2lkdGgg
PSBjYWxjUmVwbGFjZWRXaWR0aFVzaW5nKFdpZHRoKTsKKyAgICBlbHNlCisgICAgICAgIHdpZHRo
ID0gY2FsY0FzcGVjdFJhdGlvV2lkdGgoKTsKKworICAgIGludCBtaW5XID0gY2FsY1JlcGxhY2Vk
V2lkdGhVc2luZyhNaW5XaWR0aCk7CisgICAgaW50IG1heFcgPSBzdHlsZSgpLT5tYXhXaWR0aCgp
Lmxlbmd0aCgpID09IFVOREVGSU5FRCA/IHdpZHRoIDogY2FsY1JlcGxhY2VkV2lkdGhVc2luZyhN
YXhXaWR0aCk7CisKKyAgICByZXR1cm4ga01heChtaW5XLCBrTWluKHdpZHRoLCBtYXhXKSk7CiB9
CiAKIGludCBSZW5kZXJJbWFnZTo6Y2FsY1JlcGxhY2VkSGVpZ2h0KCkgY29uc3QKIHsKLSAgICAv
LyBJZiB3aWR0aCBpcyBzcGVjaWZpZWQgYW5kIG5vdCBoZWlnaHQsIHByZXNlcnZlIGFzcGVjdCBy
YXRpby4KLSAgICBpZiAoaXNXaWR0aFNwZWNpZmllZCgpICYmICFpc0hlaWdodFNwZWNpZmllZCgp
KSB7Ci0gICAgICAgIGlmIChpbnRyaW5zaWNXaWR0aCgpID09IDApCi0gICAgICAgICAgICByZXR1
cm4gMDsKLSAgICAgICAgaWYgKCFtX2NhY2hlZEltYWdlIHx8IG1fY2FjaGVkSW1hZ2UtPmlzRXJy
b3JJbWFnZSgpKQotICAgICAgICAgICAgcmV0dXJuIGludHJpbnNpY0hlaWdodCgpOyAvLyBEb24n
dCBib3RoZXIgc2NhbGluZy4KLSAgICAgICAgcmV0dXJuIGNhbGNSZXBsYWNlZFdpZHRoKCkgKiBp
bnRyaW5zaWNIZWlnaHQoKSAvIGludHJpbnNpY1dpZHRoKCk7Ci0gICAgfQotICAgIHJldHVybiBS
ZW5kZXJSZXBsYWNlZDo6Y2FsY1JlcGxhY2VkSGVpZ2h0KCk7CisgICAgaW50IGhlaWdodDsKKyAg
ICBpZiAoaXNIZWlnaHRTcGVjaWZpZWQoKSkKKyAgICAgICAgaGVpZ2h0ID0gY2FsY1JlcGxhY2Vk
SGVpZ2h0VXNpbmcoSGVpZ2h0KTsKKyAgICBlbHNlCisgICAgICAgIGhlaWdodCA9IGNhbGNBc3Bl
Y3RSYXRpb0hlaWdodCgpOworCisgICAgaW50IG1pbkggPSBjYWxjUmVwbGFjZWRIZWlnaHRVc2lu
ZyhNaW5IZWlnaHQpOworICAgIGludCBtYXhIID0gc3R5bGUoKS0+bWF4SGVpZ2h0KCkubGVuZ3Ro
KCkgPT0gVU5ERUZJTkVEID8gaGVpZ2h0IDogY2FsY1JlcGxhY2VkSGVpZ2h0VXNpbmcoTWF4SGVp
Z2h0KTsKKworICAgIHJldHVybiBrTWF4KG1pbkgsIGtNaW4oaGVpZ2h0LCBtYXhIKSk7CiB9CiAK
IGNvbnN0IEltYWdlJiBSZW5kZXJJbWFnZTo6bnVsbEltYWdlKCkKSW5kZXg6IFdlYkNvcmUvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjQ2NykK
KysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIw
MDYtMDEtMjkgIFNhbSBXZWluaWcgIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIC0gZml4IGh0dHA6
Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTE0NgorICAgICAgICAg
IG1heC1oZWlnaHQvbWF4LXdpZHRoIG5vdCByZXNpemluZyBpbWFnZXMgd2l0aCBjb3JyZWN0IGFz
cGVjdCByYXRpbworCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgcHJldHR5IG11Y2ggY29waWVkIGZy
b20gQWxsYW4gU2FuZGZlbGQgSmVuc2VuJ3MgKGNhcmV3b2xmKQorICAgICAgICBwYXRjaCBvZiBo
dHRwOi8vYnVncy5rZGUub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjAxMDcgd2l0aCBzaW1wbGUKKyAg
ICAgICAgbW9kaWZpY2F0aW9ucyB0byBzdWl0IHRoZSBXZWJjb3JlIHRyZWUuICBNYWtlcyBpbWFn
ZXMgcmVzcGVjdCBtaW4vbWF4IAorICAgICAgICBzaXplcyBhbmQgYXNwZWN0IHJhdGlvcyBhdCB0
aGUgc2FtZSB0aW1lLgorCisgICAgICAgIFRlc3Q6IGZhc3QvcmVwbGFjZWQvbWF4d2lkdGgtcGVy
Y2VudC5odG1sCisgICAgICAgIFRlc3Q6IGZhc3QvcmVwbGFjZWQvbWF4d2lkdGgtcHhzLmh0bWwK
KworICAgICAgICAqIHJlbmRlcmluZy9yZW5kZXJfaW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVySW1hZ2U6OmNhbGNBc3BlY3RSYXRpb1dpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckltYWdlOjpjYWxjQXNwZWN0UmF0aW9IZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVySW1hZ2U6OmNhbGNSZXBsYWNlZFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckltYWdlOjpjYWxjUmVwbGFjZWRIZWlnaHQpOgorICAgICAgICAqIHJlbmRlcmluZy9yZW5kZXJf
aW1hZ2UuaDoKKwogMjAwNi0wMS0yOSAgRGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CiAK
ICAgICAgICAgRml4IGZvciBidWcgNjkxMCwgZG9uJ3QgbGV0IEltYWdlIGJlIGFzc2lnbmFibGUg
b3IgY29waWFibGUuICBJdCB3aWxsIHNvb24gcmVwcmVzZW50ICB0aGUgYWN0dWFsCg==
</data>
<flag name="review"
          id="1465"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6447</attachid>
            <date>2006-02-12 20:35:18 -0800</date>
            <delta_ts>2006-02-12 22:16:42 -0800</delta_ts>
            <desc>patch 3</desc>
            <filename>maxmin3.diff</filename>
            <type>text/plain</type>
            <size>10811</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDEyNzc2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMDYtMDItMTIgIFNhbSBXZWluaWcgIDxzYW0u
d2VpbmlnQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAtdGVzdHMgZm9yIGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTE0NgorCisgICAgICAgICogZmFzdC9yZXBsYWNlZC9tYXh3aWR0aC1wZXJj
ZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcmVwbGFjZWQvbWF4d2lkdGgtcHhzLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcmVwbGFjZWQvcmVzb3VyY2VzL3NxdWFyZS1ibHVl
LTEwMHgxMDAucG5nOiBBZGRlZC4KKwogMjAwNi0wMi0xMiAgTWFjaWVqIFN0YWNob3dpYWsgIDxt
anNAYXBwbGUuY29tPgogCiAgICAgICAgIFJ1YmJlciBzdGFtcGVkIGJ5IEdlb2ZmLgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9yZXBsYWNlZC9tYXh3aWR0aC1weHMuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L3JlcGxhY2VkL21heHdpZHRoLXB4cy5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9yZXBsYWNlZC9tYXh3aWR0aC1weHMuaHRtbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxNiBAQAorPGh0bWw+Cis8aGVhZD4KKyAgPG1ldGEgaHR0cC1lcXVp
dj0iY29udGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorICA8
dGl0bGU+VGVzdDwvdGl0bGU+CisgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisgICAgLnRlc3Qg
eyBtYXgtd2lkdGg6IDUwcHg7IH0KKyAgICAuY29udHJvbCB7IGhlaWdodDogNTBweDsgd2lkdGg6
IDUwcHg7IH0KKyAgPC9zdHlsZT4KKyAgPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3
LnczLm9yZy9UUi9DU1MyMS92aXN1ZGV0Lmh0bWwjbWluLW1heC13aWR0aHMiIHRpdGxlPSIxMC40
IE1pbmltdW0gYW5kIG1heGltdW0gd2lkdGhzOiAmYXBvczttaW4td2lkdGgmYXBvczsgYW5kICZh
cG9zO21heC13aWR0aCZhcG9zOyI+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPHA+SW4gdGhpcyB0ZXN0
IHlvdSBzaG91bGQgc2VlIHR3byBpZGVudGljYWwgYmx1ZSBzcXVhcmVzLCBlYWNoIDUwcHggYnkg
NTBweC48L3A+CisgIDxpbWcgc3JjPSJyZXNvdXJjZXMvc3F1YXJlLWJsdWUtMTAweDEwMC5wbmci
IGFsdD0iRkFJTDogSW1hZ2Ugc3VwcG9ydCByZXF1aXJlZC4iIGNsYXNzPSJ0ZXN0Ij4KKyAgPGlt
ZyBzcmM9InJlc291cmNlcy9zcXVhcmUtYmx1ZS0xMDB4MTAwLnBuZyIgYWx0PSJGQUlMOiBJbWFn
ZSBzdXBwb3J0IHJlcXVpcmVkLiIgY2xhc3M9ImNvbnRyb2wiPgorPC9ib2R5PgorPC9odG1sPgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcmVwbGFj
ZWQvbWF4d2lkdGgtcGVyY2VudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
cmVwbGFjZWQvbWF4d2lkdGgtcGVyY2VudC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9yZXBsYWNlZC9tYXh3aWR0aC1wZXJjZW50Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMjAgQEAKKzxodG1sPgorPGhlYWQ+CisgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQt
dHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKyAgPHRpdGxlPlRlc3Q8
L3RpdGxlPgorICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgIC5vdXRlciB7IHdpZHRoOiAx
MDBweDsgfQorICAgIC50ZXN0IHsgbWF4LXdpZHRoOiA1MCU7IH0KKyAgICAuY29udHJvbCB7IGhl
aWdodDogNTBweDsgd2lkdGg6IDUwcHg7IH0KKyAgPC9zdHlsZT4KKyAgPGxpbmsgcmVsPSJoZWxw
IiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9DU1MyMS92aXN1ZGV0Lmh0bWwjbWluLW1heC13
aWR0aHMiIHRpdGxlPSIxMC40IE1pbmltdW0gYW5kIG1heGltdW0gd2lkdGhzOiAmYXBvczttaW4t
d2lkdGgmYXBvczsgYW5kICZhcG9zO21heC13aWR0aCZhcG9zOyI+Cis8L2hlYWQ+Cis8Ym9keT4K
KyAgPHA+SW4gdGhpcyB0ZXN0IHlvdSBzaG91bGQgc2VlIHR3byBpZGVudGljYWwgYmx1ZSBzcXVh
cmVzLCBlYWNoIDUwcHggYnkgNTBweC48L3A+CisgIDxkaXYgY2xhc3M9Im91dGVyIj4KKyAgICA8
aW1nIHNyYz0icmVzb3VyY2VzL3NxdWFyZS1ibHVlLTEwMHgxMDAucG5nIiBhbHQ9IkZBSUw6IElt
YWdlIHN1cHBvcnQgcmVxdWlyZWQuIiBjbGFzcz0idGVzdCI+CisgIDwvZGl2PgorICA8YnI+Cisg
IDxpbWcgc3JjPSJyZXNvdXJjZXMvc3F1YXJlLWJsdWUtMTAweDEwMC5wbmciIGFsdD0iRkFJTDog
SW1hZ2Ugc3VwcG9ydCByZXF1aXJlZC4iIGNsYXNzPSJjb250cm9sIj4KKzwvYm9keT4KKzwvaHRt
bD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Jl
cGxhY2VkL3Jlc291cmNlcy9zcXVhcmUtYmx1ZS0xMDB4MTAwLnBuZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5v
dCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0g
YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0
cy9mYXN0L3JlcGxhY2VkL3Jlc291cmNlcy9zcXVhcmUtYmx1ZS0xMDB4MTAwLnBuZwpfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCk5hbWU6IHN2bjptaW1lLXR5cGUKICAgKyBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KCklu
ZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9yZW5kZXJfaW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3JlbmRlcmluZy9yZW5kZXJfaW1hZ2UuaAkocmV2aXNpb24gMTI3NzYpCisrKyBXZWJDb3Jl
L3JlbmRlcmluZy9yZW5kZXJfaW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMyw2ICszLDcgQEAK
ICAqCiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAq
ICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKKyAq
ICAgICAgICAgICAoQykgMjAwNiBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gKGtkZUBjYXJld29sZi5j
b20pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIElu
Yy4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCkBAIC03MCw2ICs3MSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGlu
dCBjYWxjUmVwbGFjZWRXaWR0aCgpIGNvbnN0OwogICAgIHZpcnR1YWwgaW50IGNhbGNSZXBsYWNl
ZEhlaWdodCgpIGNvbnN0OwogCisgICAgaW50IGNhbGNBc3BlY3RSYXRpb1dpZHRoKCkgY29uc3Q7
CisgICAgaW50IGNhbGNBc3BlY3RSYXRpb0hlaWdodCgpIGNvbnN0OworCiAgICAgLy8gQ2FsbGVk
IHRvIHNldCBnZW5lcmF0ZWQgY29udGVudCBpbWFnZXMgKGUuZy4sIDpiZWZvcmUvOmFmdGVyIGdl
bmVyYXRlZCBpbWFnZXMpLgogICAgIHZvaWQgc2V0Q29udGVudE9iamVjdChDYWNoZWRPYmplY3Qq
KTsKICAgICAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL3JlbmRlcl9ib3guY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL3JlbmRlcl9ib3guY3BwCShyZXZpc2lvbiAxMjc3NikK
KysrIFdlYkNvcmUvcmVuZGVyaW5nL3JlbmRlcl9ib3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjM2LDExICsxMjM2LDggQEAgaW50IFJlbmRlckJveDo6Y2FsY1JlcGxhY2VkSGVpZ2h0KCkgY29u
cwogICAgIGludCBtaW5IID0gY2FsY1JlcGxhY2VkSGVpZ2h0VXNpbmcoTWluSGVpZ2h0KTsKICAg
ICBpbnQgbWF4SCA9IHN0eWxlKCktPm1heEhlaWdodCgpLnZhbHVlID09IFVOREVGSU5FRCA/IGhl
aWdodCA6IGNhbGNSZXBsYWNlZEhlaWdodFVzaW5nKE1heEhlaWdodCk7CiAKLSAgICBpZiAoaGVp
Z2h0ID4gbWF4SCkKLSAgICAgICAgaGVpZ2h0ID0gbWF4SDsKLQotICAgIGlmIChoZWlnaHQgPCBt
aW5IKQotICAgICAgICBoZWlnaHQgPSBtaW5IOworICAgIGhlaWdodCA9IGtNaW4oaGVpZ2h0LCBt
YXhIKTsKKyAgICBoZWlnaHQgPSBrTWF4KGhlaWdodCwgbWluSCk7CiAKICAgICByZXR1cm4gaGVp
Z2h0OwogfQpAQCAtMTI1NCwxMSArMTI1MSwxNSBAQCBpbnQgUmVuZGVyQm94OjpjYWxjUmVwbGFj
ZWRIZWlnaHRVc2luZyhICiAgICAgICAgIGggPSBzdHlsZSgpLT5taW5IZWlnaHQoKTsKICAgICBl
bHNlCiAgICAgICAgIGggPSBzdHlsZSgpLT5tYXhIZWlnaHQoKTsKLSAgICBzd2l0Y2goIGgudHlw
ZSApIHsKLSAgICBjYXNlIFBlcmNlbnQ6Ci0gICAgICAgIHJldHVybiBhdmFpbGFibGVIZWlnaHRV
c2luZyhoKTsKKyAgICBzd2l0Y2ggKGgudHlwZSkgewogICAgIGNhc2UgRml4ZWQ6CiAgICAgICAg
IHJldHVybiBjYWxjQ29udGVudEJveEhlaWdodChoLnZhbHVlKTsKKyAgICBjYXNlIFBlcmNlbnQ6
IHsKKyAgICAgICAgY29uc3QgaW50IGN3ID0gY29udGFpbmluZ0Jsb2NrV2lkdGgoKTsKKyAgICAg
ICAgaWYgKGN3ID4gMCkKKyAgICAgICAgICAgIHJldHVybiBjYWxjQ29udGVudEJveFdpZHRoKGgu
bWluV2lkdGgoY3cpKTsKKyAgICB9CisgICAgLy8gZmFsbCB0aHJvdWdoCiAgICAgZGVmYXVsdDoK
ICAgICAgICAgcmV0dXJuIGludHJpbnNpY0hlaWdodCgpOwogICAgIH07CkluZGV4OiBXZWJDb3Jl
L3JlbmRlcmluZy9yZW5kZXJfaW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVy
aW5nL3JlbmRlcl9pbWFnZS5jcHAJKHJldmlzaW9uIDEyNzc2KQorKysgV2ViQ29yZS9yZW5kZXJp
bmcvcmVuZGVyX2ltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNCw2ICs0LDcgQEAKICAqIENv
cHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAg
IChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAg
IChDKSAyMDAwIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQorICogICAgICAgICAgIChD
KSAyMDA2IEFsbGFuIFNhbmRmZWxkIEplbnNlbiAoa2RlQGNhcmV3b2xmLmNvbSkKICAqIENvcHly
aWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLgogICoK
ICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKQEAgLTM1OCwyOCArMzU5LDQ4IEBAIGJvb2wgUmVuZGVySW1hZ2U6OmlzSGVpZ2h0
U3BlY2lmaWVkKCkgY28KIAogaW50IFJlbmRlckltYWdlOjpjYWxjUmVwbGFjZWRXaWR0aCgpIGNv
bnN0CiB7Ci0gICAgLy8gSWYgaGVpZ2h0IGlzIHNwZWNpZmllZCBhbmQgbm90IHdpZHRoLCBwcmVz
ZXJ2ZSBhc3BlY3QgcmF0aW8uCi0gICAgaWYgKGlzSGVpZ2h0U3BlY2lmaWVkKCkgJiYgIWlzV2lk
dGhTcGVjaWZpZWQoKSkgewotICAgICAgICBpZiAoaW50cmluc2ljSGVpZ2h0KCkgPT0gMCkKLSAg
ICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBpZiAoIW1fY2FjaGVkSW1hZ2UgfHwgbV9jYWNo
ZWRJbWFnZS0+aXNFcnJvckltYWdlKCkpCi0gICAgICAgICAgICByZXR1cm4gaW50cmluc2ljV2lk
dGgoKTsgLy8gRG9uJ3QgYm90aGVyIHNjYWxpbmcuCi0gICAgICAgIHJldHVybiBjYWxjUmVwbGFj
ZWRIZWlnaHQoKSAqIGludHJpbnNpY1dpZHRoKCkgLyBpbnRyaW5zaWNIZWlnaHQoKTsKLSAgICB9
Ci0gICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjpjYWxjUmVwbGFjZWRXaWR0aCgpOworICAgIGlu
dCB3aWR0aDsKKyAgICBpZiAoaXNXaWR0aFNwZWNpZmllZCgpKQorICAgICAgICB3aWR0aCA9IGNh
bGNSZXBsYWNlZFdpZHRoVXNpbmcoV2lkdGgpOworICAgIGVsc2UKKyAgICAgICAgd2lkdGggPSBj
YWxjQXNwZWN0UmF0aW9XaWR0aCgpOworCisgICAgaW50IG1pblcgPSBjYWxjUmVwbGFjZWRXaWR0
aFVzaW5nKE1pbldpZHRoKTsKKyAgICBpbnQgbWF4VyA9IHN0eWxlKCktPm1heFdpZHRoKCkubGVu
Z3RoKCkgPT0gVU5ERUZJTkVEID8gd2lkdGggOiBjYWxjUmVwbGFjZWRXaWR0aFVzaW5nKE1heFdp
ZHRoKTsKKworICAgIHJldHVybiBrTWF4KG1pblcsIGtNaW4od2lkdGgsIG1heFcpKTsKIH0KIAog
aW50IFJlbmRlckltYWdlOjpjYWxjUmVwbGFjZWRIZWlnaHQoKSBjb25zdAogewotICAgIC8vIElm
IHdpZHRoIGlzIHNwZWNpZmllZCBhbmQgbm90IGhlaWdodCwgcHJlc2VydmUgYXNwZWN0IHJhdGlv
LgotICAgIGlmIChpc1dpZHRoU3BlY2lmaWVkKCkgJiYgIWlzSGVpZ2h0U3BlY2lmaWVkKCkpIHsK
LSAgICAgICAgaWYgKGludHJpbnNpY1dpZHRoKCkgPT0gMCkKLSAgICAgICAgICAgIHJldHVybiAw
OwotICAgICAgICBpZiAoIW1fY2FjaGVkSW1hZ2UgfHwgbV9jYWNoZWRJbWFnZS0+aXNFcnJvcklt
YWdlKCkpCi0gICAgICAgICAgICByZXR1cm4gaW50cmluc2ljSGVpZ2h0KCk7IC8vIERvbid0IGJv
dGhlciBzY2FsaW5nLgotICAgICAgICByZXR1cm4gY2FsY1JlcGxhY2VkV2lkdGgoKSAqIGludHJp
bnNpY0hlaWdodCgpIC8gaW50cmluc2ljV2lkdGgoKTsKLSAgICB9Ci0gICAgcmV0dXJuIFJlbmRl
clJlcGxhY2VkOjpjYWxjUmVwbGFjZWRIZWlnaHQoKTsKKyAgICBpbnQgaGVpZ2h0OworICAgIGlm
IChpc0hlaWdodFNwZWNpZmllZCgpKQorICAgICAgICBoZWlnaHQgPSBjYWxjUmVwbGFjZWRIZWln
aHRVc2luZyhIZWlnaHQpOworICAgIGVsc2UKKyAgICAgICAgaGVpZ2h0ID0gY2FsY0FzcGVjdFJh
dGlvSGVpZ2h0KCk7CisKKyAgICBpbnQgbWluSCA9IGNhbGNSZXBsYWNlZEhlaWdodFVzaW5nKE1p
bkhlaWdodCk7CisgICAgaW50IG1heEggPSBzdHlsZSgpLT5tYXhIZWlnaHQoKS5sZW5ndGgoKSA9
PSBVTkRFRklORUQgPyBoZWlnaHQgOiBjYWxjUmVwbGFjZWRIZWlnaHRVc2luZyhNYXhIZWlnaHQp
OworCisgICAgcmV0dXJuIGtNYXgobWluSCwga01pbihoZWlnaHQsIG1heEgpKTsKK30KKworaW50
IFJlbmRlckltYWdlOjpjYWxjQXNwZWN0UmF0aW9XaWR0aCgpIGNvbnN0Cit7CisgICAgaWYgKGlu
dHJpbnNpY0hlaWdodCgpID09IDApCisgICAgICAgIHJldHVybiAwOworICAgIGlmICghbV9jYWNo
ZWRJbWFnZSB8fCBtX2NhY2hlZEltYWdlLT5pc0Vycm9ySW1hZ2UoKSkKKyAgICAgICAgcmV0dXJu
IGludHJpbnNpY1dpZHRoKCk7IC8vIERvbid0IGJvdGhlciBzY2FsaW5nLgorICAgIHJldHVybiBj
YWxjUmVwbGFjZWRIZWlnaHQoKSAqIGludHJpbnNpY1dpZHRoKCkgLyBpbnRyaW5zaWNIZWlnaHQo
KTsKK30KKworaW50IFJlbmRlckltYWdlOjpjYWxjQXNwZWN0UmF0aW9IZWlnaHQoKSBjb25zdAor
eworICAgIGlmIChpbnRyaW5zaWNXaWR0aCgpID09IDApCisgICAgICAgIHJldHVybiAwOworICAg
IGlmICghbV9jYWNoZWRJbWFnZSB8fCBtX2NhY2hlZEltYWdlLT5pc0Vycm9ySW1hZ2UoKSkKKyAg
ICAgICAgcmV0dXJuIGludHJpbnNpY0hlaWdodCgpOyAvLyBEb24ndCBib3RoZXIgc2NhbGluZy4K
KyAgICByZXR1cm4gY2FsY1JlcGxhY2VkV2lkdGgoKSAqIGludHJpbnNpY0hlaWdodCgpIC8gaW50
cmluc2ljV2lkdGgoKTsKIH0KIAogSW1hZ2UqIFJlbmRlckltYWdlOjpudWxsSW1hZ2UoKQpJbmRl
eDogV2ViQ29yZS9yZW5kZXJpbmcvcmVuZGVyX3JlcGxhY2VkLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3JlbmRlcmluZy9yZW5kZXJfcmVwbGFjZWQuY3BwCShyZXZpc2lvbiAxMjc3NikKKysr
IFdlYkNvcmUvcmVuZGVyaW5nL3JlbmRlcl9yZXBsYWNlZC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTg5LDE0ICs4OSwxNyBAQCBib29sIFJlbmRlclJlcGxhY2VkOjpzaG91bGRQYWludChQYWludElu
CiAKIHZvaWQgUmVuZGVyUmVwbGFjZWQ6OmNhbGNNaW5NYXhXaWR0aCgpCiB7Ci0gICAgS0hUTUxB
c3NlcnQoICFtaW5NYXhLbm93bigpKTsKKyAgICBLSFRNTEFzc2VydCghbWluTWF4S25vd24oKSk7
CiAKICNpZmRlZiBERUJVR19MQVlPVVQKICAgICBrZERlYnVnKCA2MDQwICkgPDwgIlJlbmRlclJl
cGxhY2VkOjpjYWxjTWluTWF4V2lkdGgoKSBrbm93bj0iIDw8IG1pbk1heEtub3duKCkgPDwgZW5k
bDsKICNlbmRpZgogCi0gICAgaW50IHdpZHRoID0gY2FsY1JlcGxhY2VkV2lkdGgoKSArIHBhZGRp
bmdMZWZ0KCkgKyBwYWRkaW5nUmlnaHQoKSArIGJvcmRlckxlZnQoKSArIGJvcmRlclJpZ2h0KCk7
Ci0gICAgaWYgKHN0eWxlKCktPndpZHRoKCkuaXNQZXJjZW50KCkgfHwgKHN0eWxlKCktPndpZHRo
KCkuaXNBdXRvKCkgJiYgc3R5bGUoKS0+aGVpZ2h0KCkuaXNQZXJjZW50KCkpKSB7CisgICAgaW50
IHdpZHRoID0gY2FsY1JlcGxhY2VkV2lkdGgoKSArIGJvcmRlclRvcCgpICsgYm9yZGVyQm90dG9t
KCkgKyBwYWRkaW5nVG9wKCkgKyBwYWRkaW5nQm90dG9tKCk7CisKKyAgICBpZiAoc3R5bGUoKS0+
d2lkdGgoKS5pc1BlcmNlbnQoKSB8fCBzdHlsZSgpLT5oZWlnaHQoKS5pc1BlcmNlbnQoKSB8fCAK
KyAgICAgICAgc3R5bGUoKS0+bWF4V2lkdGgoKS5pc1BlcmNlbnQoKSB8fCBzdHlsZSgpLT5tYXhI
ZWlnaHQoKS5pc1BlcmNlbnQoKSB8fAorICAgICAgICBzdHlsZSgpLT5taW5XaWR0aCgpLmlzUGVy
Y2VudCgpIHx8IHN0eWxlKCktPm1pbkhlaWdodCgpLmlzUGVyY2VudCgpKSB7CiAgICAgICAgIG1f
bWluV2lkdGggPSAwOwogICAgICAgICBtX21heFdpZHRoID0gd2lkdGg7CiAgICAgfSBlbHNlCklu
ZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwko
cmV2aXNpb24gMTI3NzYpCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDMwIEBACisyMDA2LTAyLTEyICBTYW0gV2VpbmlnICA8c2FtLndlaW5pZ0BnbWFpbC5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBm
aXggaHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD01MTQ2Cisg
ICAgICAgICAgbWF4LWhlaWdodC9tYXgtd2lkdGggbm90IHJlc2l6aW5nIGltYWdlcyB3aXRoIGNv
cnJlY3QgYXNwZWN0IHJhdGlvCisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBwcmV0dHkgbXVjaCBj
b3BpZWQgZnJvbSBBbGxhbiBTYW5kZmVsZCBKZW5zZW4ncyAoY2FyZXdvbGYpCisgICAgICAgIHBh
dGNoIG9mIGh0dHA6Ly9idWdzLmtkZS5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDEwNyB3aXRoIHNp
bXBsZQorICAgICAgICBtb2RpZmljYXRpb25zIHRvIHN1aXQgdGhlIFdlYmNvcmUgdHJlZS4gIE1h
a2VzIGltYWdlcyByZXNwZWN0IG1pbi9tYXggCisgICAgICAgIHNpemVzIGFuZCBhc3BlY3QgcmF0
aW9zIGF0IHRoZSBzYW1lIHRpbWUuCisKKyAgICAgICAgVGVzdDogZmFzdC9yZXBsYWNlZC9tYXh3
aWR0aC1wZXJjZW50Lmh0bWwKKyAgICAgICAgVGVzdDogZmFzdC9yZXBsYWNlZC9tYXh3aWR0aC1w
eHMuaHRtbAorCisgICAgICAgICogcmVuZGVyaW5nL3JlbmRlcl9ib3guY3BwOiByZXNwZWN0IHBl
cmNlbnRzIGNvcnJlY3RseQorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpjYWxjUmVwbGFj
ZWRIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpjYWxjUmVwbGFjZWRIZWln
aHRVc2luZyk6CisgICAgICAgICogcmVuZGVyaW5nL3JlbmRlcl9pbWFnZS5jcHA6IHVzZSBjb3Jy
ZWN0IGFzcGVjdCByYXRpb3Mgd2hlbiBuZWVkZWQKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklt
YWdlOjpjYWxjUmVwbGFjZWRXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6
Y2FsY1JlcGxhY2VkSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpjYWxj
QXNwZWN0UmF0aW9XaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6Y2FsY0Fz
cGVjdFJhdGlvSGVpZ2h0KToKKyAgICAgICAgKiByZW5kZXJpbmcvcmVuZGVyX2ltYWdlLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL3JlbmRlcl9yZXBsYWNlZC5jcHA6IGZpeGVkIGFjY291bnQgZm9y
IGFsbCBwZXJjZW50YWdlIGNhc2VzCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZXBsYWNlZDo6
Y2FsY01pbk1heFdpZHRoKToKKwogMjAwNi0wMi0xMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFjaWVqLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6452</attachid>
            <date>2006-02-12 22:16:42 -0800</date>
            <delta_ts>2006-02-15 21:02:10 -0800</delta_ts>
            <desc>patch 4</desc>
            <filename>minmax4.diff</filename>
            <type>text/plain</type>
            <size>10843</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDEyNzc2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMDYtMDItMTIgIFNhbSBXZWluaWcgIDxzYW0u
d2VpbmlnQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAtdGVzdHMgZm9yIGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTE0NgorCisgICAgICAgICogZmFzdC9yZXBsYWNlZC9tYXh3aWR0aC1wZXJj
ZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcmVwbGFjZWQvbWF4d2lkdGgtcHhzLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcmVwbGFjZWQvcmVzb3VyY2VzL3NxdWFyZS1ibHVl
LTEwMHgxMDAucG5nOiBBZGRlZC4KKwogMjAwNi0wMi0xMiAgTWFjaWVqIFN0YWNob3dpYWsgIDxt
anNAYXBwbGUuY29tPgogCiAgICAgICAgIFJ1YmJlciBzdGFtcGVkIGJ5IEdlb2ZmLgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9yZXBsYWNlZC9tYXh3aWR0aC1weHMuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L3JlcGxhY2VkL21heHdpZHRoLXB4cy5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9yZXBsYWNlZC9tYXh3aWR0aC1weHMuaHRtbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxNiBAQAorPGh0bWw+Cis8aGVhZD4KKyAgPG1ldGEgaHR0cC1lcXVp
dj0iY29udGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorICA8
dGl0bGU+VGVzdDwvdGl0bGU+CisgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisgICAgLnRlc3Qg
eyBtYXgtd2lkdGg6IDUwcHg7IH0KKyAgICAuY29udHJvbCB7IGhlaWdodDogNTBweDsgd2lkdGg6
IDUwcHg7IH0KKyAgPC9zdHlsZT4KKyAgPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3
LnczLm9yZy9UUi9DU1MyMS92aXN1ZGV0Lmh0bWwjbWluLW1heC13aWR0aHMiIHRpdGxlPSIxMC40
IE1pbmltdW0gYW5kIG1heGltdW0gd2lkdGhzOiAmYXBvczttaW4td2lkdGgmYXBvczsgYW5kICZh
cG9zO21heC13aWR0aCZhcG9zOyI+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPHA+SW4gdGhpcyB0ZXN0
IHlvdSBzaG91bGQgc2VlIHR3byBpZGVudGljYWwgYmx1ZSBzcXVhcmVzLCBlYWNoIDUwcHggYnkg
NTBweC48L3A+CisgIDxpbWcgc3JjPSJyZXNvdXJjZXMvc3F1YXJlLWJsdWUtMTAweDEwMC5wbmci
IGFsdD0iRkFJTDogSW1hZ2Ugc3VwcG9ydCByZXF1aXJlZC4iIGNsYXNzPSJ0ZXN0Ij4KKyAgPGlt
ZyBzcmM9InJlc291cmNlcy9zcXVhcmUtYmx1ZS0xMDB4MTAwLnBuZyIgYWx0PSJGQUlMOiBJbWFn
ZSBzdXBwb3J0IHJlcXVpcmVkLiIgY2xhc3M9ImNvbnRyb2wiPgorPC9ib2R5PgorPC9odG1sPgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcmVwbGFj
ZWQvbWF4d2lkdGgtcGVyY2VudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
cmVwbGFjZWQvbWF4d2lkdGgtcGVyY2VudC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9yZXBsYWNlZC9tYXh3aWR0aC1wZXJjZW50Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMjAgQEAKKzxodG1sPgorPGhlYWQ+CisgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQt
dHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKyAgPHRpdGxlPlRlc3Q8
L3RpdGxlPgorICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgIC5vdXRlciB7IHdpZHRoOiAx
MDBweDsgfQorICAgIC50ZXN0IHsgbWF4LXdpZHRoOiA1MCU7IH0KKyAgICAuY29udHJvbCB7IGhl
aWdodDogNTBweDsgd2lkdGg6IDUwcHg7IH0KKyAgPC9zdHlsZT4KKyAgPGxpbmsgcmVsPSJoZWxw
IiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9DU1MyMS92aXN1ZGV0Lmh0bWwjbWluLW1heC13
aWR0aHMiIHRpdGxlPSIxMC40IE1pbmltdW0gYW5kIG1heGltdW0gd2lkdGhzOiAmYXBvczttaW4t
d2lkdGgmYXBvczsgYW5kICZhcG9zO21heC13aWR0aCZhcG9zOyI+Cis8L2hlYWQ+Cis8Ym9keT4K
KyAgPHA+SW4gdGhpcyB0ZXN0IHlvdSBzaG91bGQgc2VlIHR3byBpZGVudGljYWwgYmx1ZSBzcXVh
cmVzLCBlYWNoIDUwcHggYnkgNTBweC48L3A+CisgIDxkaXYgY2xhc3M9Im91dGVyIj4KKyAgICA8
aW1nIHNyYz0icmVzb3VyY2VzL3NxdWFyZS1ibHVlLTEwMHgxMDAucG5nIiBhbHQ9IkZBSUw6IElt
YWdlIHN1cHBvcnQgcmVxdWlyZWQuIiBjbGFzcz0idGVzdCI+CisgIDwvZGl2PgorICA8YnI+Cisg
IDxpbWcgc3JjPSJyZXNvdXJjZXMvc3F1YXJlLWJsdWUtMTAweDEwMC5wbmciIGFsdD0iRkFJTDog
SW1hZ2Ugc3VwcG9ydCByZXF1aXJlZC4iIGNsYXNzPSJjb250cm9sIj4KKzwvYm9keT4KKzwvaHRt
bD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Jl
cGxhY2VkL3Jlc291cmNlcy9zcXVhcmUtYmx1ZS0xMDB4MTAwLnBuZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5v
dCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0g
YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0
cy9mYXN0L3JlcGxhY2VkL3Jlc291cmNlcy9zcXVhcmUtYmx1ZS0xMDB4MTAwLnBuZwpfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCk5hbWU6IHN2bjptaW1lLXR5cGUKICAgKyBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KCklu
ZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9yZW5kZXJfaW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3JlbmRlcmluZy9yZW5kZXJfaW1hZ2UuaAkocmV2aXNpb24gMTI3NzYpCisrKyBXZWJDb3Jl
L3JlbmRlcmluZy9yZW5kZXJfaW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMyw2ICszLDcgQEAK
ICAqCiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAq
ICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKKyAq
ICAgICAgICAgICAoQykgMjAwNiBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gKGtkZUBjYXJld29sZi5j
b20pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIElu
Yy4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCkBAIC03MCw2ICs3MSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGlu
dCBjYWxjUmVwbGFjZWRXaWR0aCgpIGNvbnN0OwogICAgIHZpcnR1YWwgaW50IGNhbGNSZXBsYWNl
ZEhlaWdodCgpIGNvbnN0OwogCisgICAgaW50IGNhbGNBc3BlY3RSYXRpb1dpZHRoKCkgY29uc3Q7
CisgICAgaW50IGNhbGNBc3BlY3RSYXRpb0hlaWdodCgpIGNvbnN0OworCiAgICAgLy8gQ2FsbGVk
IHRvIHNldCBnZW5lcmF0ZWQgY29udGVudCBpbWFnZXMgKGUuZy4sIDpiZWZvcmUvOmFmdGVyIGdl
bmVyYXRlZCBpbWFnZXMpLgogICAgIHZvaWQgc2V0Q29udGVudE9iamVjdChDYWNoZWRPYmplY3Qq
KTsKICAgICAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL3JlbmRlcl9ib3guY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL3JlbmRlcl9ib3guY3BwCShyZXZpc2lvbiAxMjc3NikK
KysrIFdlYkNvcmUvcmVuZGVyaW5nL3JlbmRlcl9ib3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjM2LDExICsxMjM2LDggQEAgaW50IFJlbmRlckJveDo6Y2FsY1JlcGxhY2VkSGVpZ2h0KCkgY29u
cwogICAgIGludCBtaW5IID0gY2FsY1JlcGxhY2VkSGVpZ2h0VXNpbmcoTWluSGVpZ2h0KTsKICAg
ICBpbnQgbWF4SCA9IHN0eWxlKCktPm1heEhlaWdodCgpLnZhbHVlID09IFVOREVGSU5FRCA/IGhl
aWdodCA6IGNhbGNSZXBsYWNlZEhlaWdodFVzaW5nKE1heEhlaWdodCk7CiAKLSAgICBpZiAoaGVp
Z2h0ID4gbWF4SCkKLSAgICAgICAgaGVpZ2h0ID0gbWF4SDsKLQotICAgIGlmIChoZWlnaHQgPCBt
aW5IKQotICAgICAgICBoZWlnaHQgPSBtaW5IOworICAgIGhlaWdodCA9IGtNaW4oaGVpZ2h0LCBt
YXhIKTsKKyAgICBoZWlnaHQgPSBrTWF4KGhlaWdodCwgbWluSCk7CiAKICAgICByZXR1cm4gaGVp
Z2h0OwogfQpAQCAtMTI1NCwxMSArMTI1MSwxNSBAQCBpbnQgUmVuZGVyQm94OjpjYWxjUmVwbGFj
ZWRIZWlnaHRVc2luZyhICiAgICAgICAgIGggPSBzdHlsZSgpLT5taW5IZWlnaHQoKTsKICAgICBl
bHNlCiAgICAgICAgIGggPSBzdHlsZSgpLT5tYXhIZWlnaHQoKTsKLSAgICBzd2l0Y2goIGgudHlw
ZSApIHsKLSAgICBjYXNlIFBlcmNlbnQ6Ci0gICAgICAgIHJldHVybiBhdmFpbGFibGVIZWlnaHRV
c2luZyhoKTsKKyAgICBzd2l0Y2ggKGgudHlwZSkgewogICAgIGNhc2UgRml4ZWQ6CiAgICAgICAg
IHJldHVybiBjYWxjQ29udGVudEJveEhlaWdodChoLnZhbHVlKTsKKyAgICBjYXNlIFBlcmNlbnQ6
IHsKKyAgICAgICAgY29uc3QgaW50IGN3ID0gY29udGFpbmluZ0Jsb2NrV2lkdGgoKTsKKyAgICAg
ICAgaWYgKGN3ID4gMCkKKyAgICAgICAgICAgIHJldHVybiBjYWxjQ29udGVudEJveFdpZHRoKGgu
bWluV2lkdGgoY3cpKTsKKyAgICB9CisgICAgLy8gZmFsbCB0aHJvdWdoCiAgICAgZGVmYXVsdDoK
ICAgICAgICAgcmV0dXJuIGludHJpbnNpY0hlaWdodCgpOwogICAgIH07CkluZGV4OiBXZWJDb3Jl
L3JlbmRlcmluZy9yZW5kZXJfaW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVy
aW5nL3JlbmRlcl9pbWFnZS5jcHAJKHJldmlzaW9uIDEyNzc2KQorKysgV2ViQ29yZS9yZW5kZXJp
bmcvcmVuZGVyX2ltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNCw2ICs0LDcgQEAKICAqIENv
cHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAg
IChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAg
IChDKSAyMDAwIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQorICogICAgICAgICAgIChD
KSAyMDA2IEFsbGFuIFNhbmRmZWxkIEplbnNlbiAoa2RlQGNhcmV3b2xmLmNvbSkKICAqIENvcHly
aWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLgogICoK
ICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKQEAgLTM1OCwyOCArMzU5LDQ4IEBAIGJvb2wgUmVuZGVySW1hZ2U6OmlzSGVpZ2h0
U3BlY2lmaWVkKCkgY28KIAogaW50IFJlbmRlckltYWdlOjpjYWxjUmVwbGFjZWRXaWR0aCgpIGNv
bnN0CiB7Ci0gICAgLy8gSWYgaGVpZ2h0IGlzIHNwZWNpZmllZCBhbmQgbm90IHdpZHRoLCBwcmVz
ZXJ2ZSBhc3BlY3QgcmF0aW8uCi0gICAgaWYgKGlzSGVpZ2h0U3BlY2lmaWVkKCkgJiYgIWlzV2lk
dGhTcGVjaWZpZWQoKSkgewotICAgICAgICBpZiAoaW50cmluc2ljSGVpZ2h0KCkgPT0gMCkKLSAg
ICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBpZiAoIW1fY2FjaGVkSW1hZ2UgfHwgbV9jYWNo
ZWRJbWFnZS0+aXNFcnJvckltYWdlKCkpCi0gICAgICAgICAgICByZXR1cm4gaW50cmluc2ljV2lk
dGgoKTsgLy8gRG9uJ3QgYm90aGVyIHNjYWxpbmcuCi0gICAgICAgIHJldHVybiBjYWxjUmVwbGFj
ZWRIZWlnaHQoKSAqIGludHJpbnNpY1dpZHRoKCkgLyBpbnRyaW5zaWNIZWlnaHQoKTsKLSAgICB9
Ci0gICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjpjYWxjUmVwbGFjZWRXaWR0aCgpOworICAgIGlu
dCB3aWR0aDsKKyAgICBpZiAoaXNXaWR0aFNwZWNpZmllZCgpKQorICAgICAgICB3aWR0aCA9IGNh
bGNSZXBsYWNlZFdpZHRoVXNpbmcoV2lkdGgpOworICAgIGVsc2UKKyAgICAgICAgd2lkdGggPSBj
YWxjQXNwZWN0UmF0aW9XaWR0aCgpOworCisgICAgaW50IG1pblcgPSBjYWxjUmVwbGFjZWRXaWR0
aFVzaW5nKE1pbldpZHRoKTsKKyAgICBpbnQgbWF4VyA9IHN0eWxlKCktPm1heFdpZHRoKCkubGVu
Z3RoKCkgPT0gVU5ERUZJTkVEID8gd2lkdGggOiBjYWxjUmVwbGFjZWRXaWR0aFVzaW5nKE1heFdp
ZHRoKTsKKworICAgIHJldHVybiBrTWF4KG1pblcsIGtNaW4od2lkdGgsIG1heFcpKTsKIH0KIAog
aW50IFJlbmRlckltYWdlOjpjYWxjUmVwbGFjZWRIZWlnaHQoKSBjb25zdAogewotICAgIC8vIElm
IHdpZHRoIGlzIHNwZWNpZmllZCBhbmQgbm90IGhlaWdodCwgcHJlc2VydmUgYXNwZWN0IHJhdGlv
LgotICAgIGlmIChpc1dpZHRoU3BlY2lmaWVkKCkgJiYgIWlzSGVpZ2h0U3BlY2lmaWVkKCkpIHsK
LSAgICAgICAgaWYgKGludHJpbnNpY1dpZHRoKCkgPT0gMCkKLSAgICAgICAgICAgIHJldHVybiAw
OwotICAgICAgICBpZiAoIW1fY2FjaGVkSW1hZ2UgfHwgbV9jYWNoZWRJbWFnZS0+aXNFcnJvcklt
YWdlKCkpCi0gICAgICAgICAgICByZXR1cm4gaW50cmluc2ljSGVpZ2h0KCk7IC8vIERvbid0IGJv
dGhlciBzY2FsaW5nLgotICAgICAgICByZXR1cm4gY2FsY1JlcGxhY2VkV2lkdGgoKSAqIGludHJp
bnNpY0hlaWdodCgpIC8gaW50cmluc2ljV2lkdGgoKTsKLSAgICB9Ci0gICAgcmV0dXJuIFJlbmRl
clJlcGxhY2VkOjpjYWxjUmVwbGFjZWRIZWlnaHQoKTsKKyAgICBpbnQgaGVpZ2h0OworICAgIGlm
IChpc0hlaWdodFNwZWNpZmllZCgpKQorICAgICAgICBoZWlnaHQgPSBjYWxjUmVwbGFjZWRIZWln
aHRVc2luZyhIZWlnaHQpOworICAgIGVsc2UKKyAgICAgICAgaGVpZ2h0ID0gY2FsY0FzcGVjdFJh
dGlvSGVpZ2h0KCk7CisKKyAgICBpbnQgbWluSCA9IGNhbGNSZXBsYWNlZEhlaWdodFVzaW5nKE1p
bkhlaWdodCk7CisgICAgaW50IG1heEggPSBzdHlsZSgpLT5tYXhIZWlnaHQoKS5sZW5ndGgoKSA9
PSBVTkRFRklORUQgPyBoZWlnaHQgOiBjYWxjUmVwbGFjZWRIZWlnaHRVc2luZyhNYXhIZWlnaHQp
OworCisgICAgcmV0dXJuIGtNYXgobWluSCwga01pbihoZWlnaHQsIG1heEgpKTsKK30KKworaW50
IFJlbmRlckltYWdlOjpjYWxjQXNwZWN0UmF0aW9XaWR0aCgpIGNvbnN0Cit7CisgICAgaWYgKGlu
dHJpbnNpY0hlaWdodCgpID09IDApCisgICAgICAgIHJldHVybiAwOworICAgIGlmICghbV9jYWNo
ZWRJbWFnZSB8fCBtX2NhY2hlZEltYWdlLT5pc0Vycm9ySW1hZ2UoKSkKKyAgICAgICAgcmV0dXJu
IGludHJpbnNpY1dpZHRoKCk7IC8vIERvbid0IGJvdGhlciBzY2FsaW5nLgorICAgIHJldHVybiBS
ZW5kZXJSZXBsYWNlZDo6Y2FsY1JlcGxhY2VkSGVpZ2h0KCkgKiBpbnRyaW5zaWNXaWR0aCgpIC8g
aW50cmluc2ljSGVpZ2h0KCk7Cit9CisKK2ludCBSZW5kZXJJbWFnZTo6Y2FsY0FzcGVjdFJhdGlv
SGVpZ2h0KCkgY29uc3QKK3sKKyAgICBpZiAoaW50cmluc2ljV2lkdGgoKSA9PSAwKQorICAgICAg
ICByZXR1cm4gMDsKKyAgICBpZiAoIW1fY2FjaGVkSW1hZ2UgfHwgbV9jYWNoZWRJbWFnZS0+aXNF
cnJvckltYWdlKCkpCisgICAgICAgIHJldHVybiBpbnRyaW5zaWNIZWlnaHQoKTsgLy8gRG9uJ3Qg
Ym90aGVyIHNjYWxpbmcuCisgICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjpjYWxjUmVwbGFjZWRX
aWR0aCgpICogaW50cmluc2ljSGVpZ2h0KCkgLyBpbnRyaW5zaWNXaWR0aCgpOwogfQogCiBJbWFn
ZSogUmVuZGVySW1hZ2U6Om51bGxJbWFnZSgpCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9yZW5k
ZXJfcmVwbGFjZWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL3JlbmRlcl9y
ZXBsYWNlZC5jcHAJKHJldmlzaW9uIDEyNzc2KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvcmVuZGVy
X3JlcGxhY2VkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksMTQgKzg5LDE3IEBAIGJvb2wgUmVu
ZGVyUmVwbGFjZWQ6OnNob3VsZFBhaW50KFBhaW50SW4KIAogdm9pZCBSZW5kZXJSZXBsYWNlZDo6
Y2FsY01pbk1heFdpZHRoKCkKIHsKLSAgICBLSFRNTEFzc2VydCggIW1pbk1heEtub3duKCkpOwor
ICAgIEtIVE1MQXNzZXJ0KCFtaW5NYXhLbm93bigpKTsKIAogI2lmZGVmIERFQlVHX0xBWU9VVAog
ICAgIGtkRGVidWcoIDYwNDAgKSA8PCAiUmVuZGVyUmVwbGFjZWQ6OmNhbGNNaW5NYXhXaWR0aCgp
IGtub3duPSIgPDwgbWluTWF4S25vd24oKSA8PCBlbmRsOwogI2VuZGlmCiAKLSAgICBpbnQgd2lk
dGggPSBjYWxjUmVwbGFjZWRXaWR0aCgpICsgcGFkZGluZ0xlZnQoKSArIHBhZGRpbmdSaWdodCgp
ICsgYm9yZGVyTGVmdCgpICsgYm9yZGVyUmlnaHQoKTsKLSAgICBpZiAoc3R5bGUoKS0+d2lkdGgo
KS5pc1BlcmNlbnQoKSB8fCAoc3R5bGUoKS0+d2lkdGgoKS5pc0F1dG8oKSAmJiBzdHlsZSgpLT5o
ZWlnaHQoKS5pc1BlcmNlbnQoKSkpIHsKKyAgICBpbnQgd2lkdGggPSBjYWxjUmVwbGFjZWRXaWR0
aCgpICsgYm9yZGVyVG9wKCkgKyBib3JkZXJCb3R0b20oKSArIHBhZGRpbmdUb3AoKSArIHBhZGRp
bmdCb3R0b20oKTsKKworICAgIGlmIChzdHlsZSgpLT53aWR0aCgpLmlzUGVyY2VudCgpIHx8IHN0
eWxlKCktPmhlaWdodCgpLmlzUGVyY2VudCgpIHx8IAorICAgICAgICBzdHlsZSgpLT5tYXhXaWR0
aCgpLmlzUGVyY2VudCgpIHx8IHN0eWxlKCktPm1heEhlaWdodCgpLmlzUGVyY2VudCgpIHx8Cisg
ICAgICAgIHN0eWxlKCktPm1pbldpZHRoKCkuaXNQZXJjZW50KCkgfHwgc3R5bGUoKS0+bWluSGVp
Z2h0KCkuaXNQZXJjZW50KCkpIHsKICAgICAgICAgbV9taW5XaWR0aCA9IDA7CiAgICAgICAgIG1f
bWF4V2lkdGggPSB3aWR0aDsKICAgICB9IGVsc2UKSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjc3NikKKysrIFdlYkNv
cmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMDYtMDItMTIg
IFNhbSBXZWluaWcgIDxzYW0ud2VpbmlnQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtIGZpeCBodHRwOi8vYnVnemlsbGEub3BlbmRh
cndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTUxNDYKKyAgICAgICAgICBtYXgtaGVpZ2h0L21heC13
aWR0aCBub3QgcmVzaXppbmcgaW1hZ2VzIHdpdGggY29ycmVjdCBhc3BlY3QgcmF0aW8KKworICAg
ICAgICBUaGlzIHBhdGNoIGlzIHByZXR0eSBtdWNoIGNvcGllZCBmcm9tIEFsbGFuIFNhbmRmZWxk
IEplbnNlbidzIChjYXJld29sZikKKyAgICAgICAgcGF0Y2ggb2YgaHR0cDovL2J1Z3Mua2RlLm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTIwMTA3IHdpdGggc2ltcGxlCisgICAgICAgIG1vZGlmaWNhdGlv
bnMgdG8gc3VpdCB0aGUgV2ViY29yZSB0cmVlLiAgTWFrZXMgaW1hZ2VzIHJlc3BlY3QgbWluL21h
eCAKKyAgICAgICAgc2l6ZXMgYW5kIGFzcGVjdCByYXRpb3MgYXQgdGhlIHNhbWUgdGltZS4KKwor
ICAgICAgICBUZXN0OiBmYXN0L3JlcGxhY2VkL21heHdpZHRoLXBlcmNlbnQuaHRtbAorICAgICAg
ICBUZXN0OiBmYXN0L3JlcGxhY2VkL21heHdpZHRoLXB4cy5odG1sCisKKyAgICAgICAgKiByZW5k
ZXJpbmcvcmVuZGVyX2JveC5jcHA6IHJlc3BlY3QgcGVyY2VudHMgY29ycmVjdGx5CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3g6OmNhbGNSZXBsYWNlZEhlaWdodCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCb3g6OmNhbGNSZXBsYWNlZEhlaWdodFVzaW5nKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvcmVuZGVyX2ltYWdlLmNwcDogdXNlIGNvcnJlY3QgYXNwZWN0IHJhdGlvcyB3aGVuIG5l
ZWRlZAorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmNhbGNSZXBsYWNlZFdpZHRoKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpjYWxjUmVwbGFjZWRIZWlnaHQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmNhbGNBc3BlY3RSYXRpb1dpZHRoKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpjYWxjQXNwZWN0UmF0aW9IZWlnaHQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9yZW5kZXJfaW1hZ2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvcmVuZGVy
X3JlcGxhY2VkLmNwcDogZml4ZWQgYWNjb3VudCBmb3IgYWxsIHBlcmNlbnRhZ2UgY2FzZXMKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpjYWxjTWluTWF4V2lkdGgpOgorCiAyMDA2
LTAyLTEyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBNYWNpZWouCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6526</attachid>
            <date>2006-02-15 21:02:10 -0800</date>
            <delta_ts>2006-02-17 14:02:06 -0800</delta_ts>
            <desc>patch 5</desc>
            <filename>maxmin5.diff</filename>
            <type>text/plain</type>
            <size>18585</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDEyODM4KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMDYtMDItMTUgIFNhbSBXZWluaWcgIDxzYW0u
d2VpbmlnQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAtdGVzdHMgZm9yIGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTE0NgorCisgICAgICAgICogZmFzdC9yZXBsYWNlZC9tYXhoZWlnaHQtcGVy
Y2VudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlcGxhY2VkL21heGhlaWdodC1weHMu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZXBsYWNlZC9tYXh3aWR0aC1wZXJjZW50Lmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcmVwbGFjZWQvbWF4d2lkdGgtcHhzLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvcmVwbGFjZWQvbWluaGVpZ2h0LXBlcmNlbnQuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9yZXBsYWNlZC9taW5oZWlnaHQtcHhzLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvcmVwbGFjZWQvbWlud2lkdGgtcGVyY2VudC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L3JlcGxhY2VkL21pbndpZHRoLXB4cy5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L3JlcGxhY2VkL3Jlc291cmNlcy8xeDEtYmx1ZS5wbmc6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvcmVwbGFjZWQvcmVzb3VyY2VzL3NxdWFyZS1ibHVlLTEwMHgxMDAucG5nOiBBZGRlZC4K
KwogMjAwNi0wMi0xNSAgRXJpYyBTZWlkZWwgIDxlc2VpZGVsQGFwcGxlLmNvbT4KICAgICAgICAg
CiAgICAgICAgIEFkZCBmaWxlcyBtaXNzaW5nIGZyb20gcHJldmlvdXMgY29tbWl0LgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9yZXBsYWNlZC9tYXhoZWlnaHQtcHhzLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9yZXBsYWNlZC9tYXhoZWlnaHQtcHhzLmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3JlcGxhY2VkL21heGhlaWdodC1weHMuaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxNiBAQAorPGh0bWw+Cis8aGVhZD4KKyAgPG1ldGEgaHR0cC1l
cXVpdj0iY29udGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgor
ICA8dGl0bGU+VGVzdDwvdGl0bGU+CisgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisgICAgLnRl
c3QgeyBtYXgtaGVpZ2h0OiA1MHB4OyB9CisgICAgLmNvbnRyb2wgeyBoZWlnaHQ6IDUwcHg7IHdp
ZHRoOiA1MHB4OyB9CisgIDwvc3R5bGU+CisgIDxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDov
L3d3dy53My5vcmcvVFIvQ1NTMjEvdmlzdWRldC5odG1sI21pbi1tYXgtaGVpZ2h0cyIgdGl0bGU9
IjEwLjcgTWluaW11bSBhbmQgbWF4aW11bSBoZWlnaHRzOiAmYXBvczttaW4taGVpZ2h0JmFwb3M7
IGFuZCAmYXBvczttYXgtaGVpZ2h0JmFwb3M7Ij4KKzwvaGVhZD4KKzxib2R5PgorICA8cD5JbiB0
aGlzIHRlc3QgeW91IHNob3VsZCBzZWUgdHdvIGlkZW50aWNhbCBibHVlIHNxdWFyZXMsIGVhY2gg
NTBweCBieSA1MHB4LjwvcD4KKyAgPGltZyBzcmM9InJlc291cmNlcy9zcXVhcmUtYmx1ZS0xMDB4
MTAwLnBuZyIgYWx0PSJGQUlMOiBJbWFnZSBzdXBwb3J0IHJlcXVpcmVkLiIgY2xhc3M9InRlc3Qi
PgorICA8aW1nIHNyYz0icmVzb3VyY2VzL3NxdWFyZS1ibHVlLTEwMHgxMDAucG5nIiBhbHQ9IkZB
SUw6IEltYWdlIHN1cHBvcnQgcmVxdWlyZWQuIiBjbGFzcz0iY29udHJvbCI+Cis8L2JvZHk+Cis8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3JlcGxhY2VkL21pbndpZHRoLXB4cy5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcmVwbGFjZWQvbWlud2lkdGgtcHhzLmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3JlcGxhY2VkL21pbndpZHRoLXB4
cy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2IEBACis8aHRtbD4KKzxoZWFkPgorICA8
bWV0YSBodHRwLWVxdWl2PSJjb250ZW50LXR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNl
dD11dGYtOCI+CisgIDx0aXRsZT5UZXN0PC90aXRsZT4KKyAgPHN0eWxlIHR5cGU9InRleHQvY3Nz
Ij4KKyAgICAudGVzdCB7IG1pbi13aWR0aDogNTBweDsgfQorICAgIC5jb250cm9sIHsgaGVpZ2h0
OiA1MHB4OyB3aWR0aDogNTBweDsgfQorICA8L3N0eWxlPgorICA8bGluayByZWw9ImhlbHAiIGhy
ZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL3Zpc3VkZXQuaHRtbCNtaW4tbWF4LXdpZHRo
cyIgdGl0bGU9IjEwLjQgTWluaW11bSBhbmQgbWF4aW11bSB3aWR0aHM6ICZhcG9zO21pbi13aWR0
aCZhcG9zOyBhbmQgJmFwb3M7bWF4LXdpZHRoJmFwb3M7Ij4KKzwvaGVhZD4KKzxib2R5PgorICA8
cD5JbiB0aGlzIHRlc3QgeW91IHNob3VsZCBzZWUgdHdvIGlkZW50aWNhbCBibHVlIHNxdWFyZXMs
IGVhY2ggNTBweCBieSA1MHB4LjwvcD4KKyAgPGltZyBzcmM9InJlc291cmNlcy8xeDEtYmx1ZS5w
bmciIGFsdD0iRkFJTDogSW1hZ2Ugc3VwcG9ydCByZXF1aXJlZC4iIGNsYXNzPSJ0ZXN0Ij4KKyAg
PGltZyBzcmM9InJlc291cmNlcy8xeDEtYmx1ZS5wbmciIGFsdD0iRkFJTDogSW1hZ2Ugc3VwcG9y
dCByZXF1aXJlZC4iIGNsYXNzPSJjb250cm9sIj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvcmVwbGFjZWQvbWF4d2lkdGgtcHhzLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9yZXBsYWNlZC9tYXh3aWR0aC1weHMuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvcmVwbGFjZWQvbWF4d2lkdGgtcHhzLmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMTYgQEAKKzxodG1sPgorPGhlYWQ+CisgIDxtZXRhIGh0dHAtZXF1aXY9
ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKyAgPHRp
dGxlPlRlc3Q8L3RpdGxlPgorICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgIC50ZXN0IHsg
bWF4LXdpZHRoOiA1MHB4OyB9CisgICAgLmNvbnRyb2wgeyBoZWlnaHQ6IDUwcHg7IHdpZHRoOiA1
MHB4OyB9CisgIDwvc3R5bGU+CisgIDxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53
My5vcmcvVFIvQ1NTMjEvdmlzdWRldC5odG1sI21pbi1tYXgtd2lkdGhzIiB0aXRsZT0iMTAuNCBN
aW5pbXVtIGFuZCBtYXhpbXVtIHdpZHRoczogJmFwb3M7bWluLXdpZHRoJmFwb3M7IGFuZCAmYXBv
czttYXgtd2lkdGgmYXBvczsiPgorPC9oZWFkPgorPGJvZHk+CisgIDxwPkluIHRoaXMgdGVzdCB5
b3Ugc2hvdWxkIHNlZSB0d28gaWRlbnRpY2FsIGJsdWUgc3F1YXJlcywgZWFjaCA1MHB4IGJ5IDUw
cHguPC9wPgorICA8aW1nIHNyYz0icmVzb3VyY2VzL3NxdWFyZS1ibHVlLTEwMHgxMDAucG5nIiBh
bHQ9IkZBSUw6IEltYWdlIHN1cHBvcnQgcmVxdWlyZWQuIiBjbGFzcz0idGVzdCI+CisgIDxpbWcg
c3JjPSJyZXNvdXJjZXMvc3F1YXJlLWJsdWUtMTAweDEwMC5wbmciIGFsdD0iRkFJTDogSW1hZ2Ug
c3VwcG9ydCByZXF1aXJlZC4iIGNsYXNzPSJjb250cm9sIj4KKzwvYm9keT4KKzwvaHRtbD4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvcmVwbGFjZWQvbWF4aGVpZ2h0LXBlcmNlbnQuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3JlcGxhY2VkL21heGhlaWdodC1wZXJjZW50Lmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3JlcGxhY2VkL21heGhlaWdodC1w
ZXJjZW50Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjAgQEAKKzxodG1sPgorPGhlYWQ+
CisgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBj
aGFyc2V0PXV0Zi04Ij4KKyAgPHRpdGxlPlRlc3Q8L3RpdGxlPgorICA8c3R5bGUgdHlwZT0idGV4
dC9jc3MiPgorICAgIC5vdXRlciB7IGhlaWdodDogMTAwcHg7IH0KKyAgICAudGVzdCB7IG1heC1o
ZWlnaHQ6IDUwJTsgfQorICAgIC5jb250cm9sIHsgaGVpZ2h0OiA1MHB4OyB3aWR0aDogNTBweDsg
fQorICA8L3N0eWxlPgorICA8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3Jn
L1RSL0NTUzIxL3Zpc3VkZXQuaHRtbCNtaW4tbWF4LWhlaWdodHMiIHRpdGxlPSIxMC43IE1pbmlt
dW0gYW5kIG1heGltdW0gaGVpZ2h0czogJmFwb3M7bWluLWhlaWdodCZhcG9zOyBhbmQgJmFwb3M7
bWF4LWhlaWdodCZhcG9zOyI+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPHA+SW4gdGhpcyB0ZXN0IHlv
dSBzaG91bGQgc2VlIHR3byBpZGVudGljYWwgYmx1ZSBzcXVhcmVzLCBlYWNoIDUwcHggYnkgNTBw
eC48L3A+CisgIDxkaXYgY2xhc3M9Im91dGVyIj4KKyAgICA8aW1nIHNyYz0icmVzb3VyY2VzL3Nx
dWFyZS1ibHVlLTEwMHgxMDAucG5nIiBhbHQ9IkZBSUw6IEltYWdlIHN1cHBvcnQgcmVxdWlyZWQu
IiBjbGFzcz0idGVzdCI+CisgIDwvZGl2PgorICA8YnI+CisgIDxpbWcgc3JjPSJyZXNvdXJjZXMv
c3F1YXJlLWJsdWUtMTAweDEwMC5wbmciIGFsdD0iRkFJTDogSW1hZ2Ugc3VwcG9ydCByZXF1aXJl
ZC4iIGNsYXNzPSJjb250cm9sIj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvcmVwbGFjZWQvbWlud2lkdGgtcGVyY2VudC5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvcmVwbGFjZWQvbWlud2lkdGgtcGVyY2VudC5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9yZXBsYWNlZC9taW53aWR0aC1wZXJjZW50Lmh0bWwJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMjAgQEAKKzxodG1sPgorPGhlYWQ+CisgIDxtZXRhIGh0dHAtZXF1
aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKyAg
PHRpdGxlPlRlc3Q8L3RpdGxlPgorICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgIC5vdXRl
ciB7IHdpZHRoOiAxMDBweDsgfQorICAgIC50ZXN0IHsgbWluLXdpZHRoOiA1MCU7IH0KKyAgICAu
Y29udHJvbCB7IGhlaWdodDogNTBweDsgd2lkdGg6IDUwcHg7IH0KKyAgPC9zdHlsZT4KKyAgPGxp
bmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9DU1MyMS92aXN1ZGV0Lmh0
bWwjbWluLW1heC13aWR0aHMiIHRpdGxlPSIxMC40IE1pbmltdW0gYW5kIG1heGltdW0gd2lkdGhz
OiAmYXBvczttaW4td2lkdGgmYXBvczsgYW5kICZhcG9zO21heC13aWR0aCZhcG9zOyI+Cis8L2hl
YWQ+Cis8Ym9keT4KKyAgPHA+SW4gdGhpcyB0ZXN0IHlvdSBzaG91bGQgc2VlIHR3byBpZGVudGlj
YWwgYmx1ZSBzcXVhcmVzLCBlYWNoIDUwcHggYnkgNTBweC48L3A+CisgIDxkaXYgY2xhc3M9Im91
dGVyIj4KKyAgICA8aW1nIHNyYz0icmVzb3VyY2VzLzF4MS1ibHVlLnBuZyIgYWx0PSJGQUlMOiBJ
bWFnZSBzdXBwb3J0IHJlcXVpcmVkLiIgY2xhc3M9InRlc3QiPgorICA8L2Rpdj4KKyAgPGJyPgor
ICA8aW1nIHNyYz0icmVzb3VyY2VzLzF4MS1ibHVlLnBuZyIgYWx0PSJGQUlMOiBJbWFnZSBzdXBw
b3J0IHJlcXVpcmVkLiIgY2xhc3M9ImNvbnRyb2wiPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9yZXBsYWNlZC9tYXh3aWR0aC1wZXJjZW50Lmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9yZXBsYWNlZC9tYXh3aWR0aC1wZXJjZW50Lmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3JlcGxhY2VkL21heHdpZHRoLXBlcmNlbnQu
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMCBAQAorPGh0bWw+Cis8aGVhZD4KKyAgPG1l
dGEgaHR0cC1lcXVpdj0iY29udGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9
dXRmLTgiPgorICA8dGl0bGU+VGVzdDwvdGl0bGU+CisgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+
CisgICAgLm91dGVyIHsgd2lkdGg6IDEwMHB4OyB9CisgICAgLnRlc3QgeyBtYXgtd2lkdGg6IDUw
JTsgfQorICAgIC5jb250cm9sIHsgaGVpZ2h0OiA1MHB4OyB3aWR0aDogNTBweDsgfQorICA8L3N0
eWxlPgorICA8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIx
L3Zpc3VkZXQuaHRtbCNtaW4tbWF4LXdpZHRocyIgdGl0bGU9IjEwLjQgTWluaW11bSBhbmQgbWF4
aW11bSB3aWR0aHM6ICZhcG9zO21pbi13aWR0aCZhcG9zOyBhbmQgJmFwb3M7bWF4LXdpZHRoJmFw
b3M7Ij4KKzwvaGVhZD4KKzxib2R5PgorICA8cD5JbiB0aGlzIHRlc3QgeW91IHNob3VsZCBzZWUg
dHdvIGlkZW50aWNhbCBibHVlIHNxdWFyZXMsIGVhY2ggNTBweCBieSA1MHB4LjwvcD4KKyAgPGRp
diBjbGFzcz0ib3V0ZXIiPgorICAgIDxpbWcgc3JjPSJyZXNvdXJjZXMvc3F1YXJlLWJsdWUtMTAw
eDEwMC5wbmciIGFsdD0iRkFJTDogSW1hZ2Ugc3VwcG9ydCByZXF1aXJlZC4iIGNsYXNzPSJ0ZXN0
Ij4KKyAgPC9kaXY+CisgIDxicj4KKyAgPGltZyBzcmM9InJlc291cmNlcy9zcXVhcmUtYmx1ZS0x
MDB4MTAwLnBuZyIgYWx0PSJGQUlMOiBJbWFnZSBzdXBwb3J0IHJlcXVpcmVkLiIgY2xhc3M9ImNv
bnRyb2wiPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9yZXBsYWNl
ZC9taW5oZWlnaHQtcHhzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9yZXBs
YWNlZC9taW5oZWlnaHQtcHhzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L3JlcGxhY2VkL21pbmhlaWdodC1weHMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNiBA
QAorPGh0bWw+Cis8aGVhZD4KKyAgPG1ldGEgaHR0cC1lcXVpdj0iY29udGVudC10eXBlIiBjb250
ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorICA8dGl0bGU+VGVzdDwvdGl0bGU+Cisg
IDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisgICAgLnRlc3QgeyBtaW4taGVpZ2h0OiA1MHB4OyB9
CisgICAgLmNvbnRyb2wgeyBoZWlnaHQ6IDUwcHg7IHdpZHRoOiA1MHB4OyB9CisgIDwvc3R5bGU+
CisgIDxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvQ1NTMjEvdmlz
dWRldC5odG1sI21pbi1tYXgtaGVpZ2h0cyIgdGl0bGU9IjEwLjcgTWluaW11bSBhbmQgbWF4aW11
bSBoZWlnaHRzOiAmYXBvczttaW4taGVpZ2h0JmFwb3M7IGFuZCAmYXBvczttYXgtaGVpZ2h0JmFw
b3M7Ij4KKzwvaGVhZD4KKzxib2R5PgorICA8cD5JbiB0aGlzIHRlc3QgeW91IHNob3VsZCBzZWUg
dHdvIGlkZW50aWNhbCBibHVlIHNxdWFyZXMsIGVhY2ggNTBweCBieSA1MHB4LjwvcD4KKyAgPGlt
ZyBzcmM9InJlc291cmNlcy8xeDEtYmx1ZS5wbmciIGFsdD0iRkFJTDogSW1hZ2Ugc3VwcG9ydCBy
ZXF1aXJlZC4iIGNsYXNzPSJ0ZXN0Ij4KKyAgPGltZyBzcmM9InJlc291cmNlcy8xeDEtYmx1ZS5w
bmciIGFsdD0iRkFJTDogSW1hZ2Ugc3VwcG9ydCByZXF1aXJlZC4iIGNsYXNzPSJjb250cm9sIj4K
KzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcmVwbGFjZWQvbWluaGVp
Z2h0LXBlcmNlbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3JlcGxhY2Vk
L21pbmhlaWdodC1wZXJjZW50Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L3JlcGxhY2VkL21pbmhlaWdodC1wZXJjZW50Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MjAgQEAKKzxodG1sPgorPGhlYWQ+CisgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIg
Y29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKyAgPHRpdGxlPlRlc3Q8L3RpdGxl
PgorICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgIC5vdXRlciB7IGhlaWdodDogMTAwcHg7
IH0KKyAgICAudGVzdCB7IG1pbi1oZWlnaHQ6IDUwJTsgfQorICAgIC5jb250cm9sIHsgaGVpZ2h0
OiA1MHB4OyB3aWR0aDogNTBweDsgfQorICA8L3N0eWxlPgorICA8bGluayByZWw9ImhlbHAiIGhy
ZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL3Zpc3VkZXQuaHRtbCNtaW4tbWF4LWhlaWdo
dHMiIHRpdGxlPSIxMC43IE1pbmltdW0gYW5kIG1heGltdW0gaGVpZ2h0czogJmFwb3M7bWluLWhl
aWdodCZhcG9zOyBhbmQgJmFwb3M7bWF4LWhlaWdodCZhcG9zOyI+Cis8L2hlYWQ+Cis8Ym9keT4K
KyAgPHA+SW4gdGhpcyB0ZXN0IHlvdSBzaG91bGQgc2VlIHR3byBpZGVudGljYWwgYmx1ZSBzcXVh
cmVzLCBlYWNoIDUwcHggYnkgNTBweC48L3A+CisgIDxkaXYgY2xhc3M9Im91dGVyIj4KKyAgICA8
aW1nIHNyYz0icmVzb3VyY2VzLzF4MS1ibHVlLnBuZyIgYWx0PSJGQUlMOiBJbWFnZSBzdXBwb3J0
IHJlcXVpcmVkLiIgY2xhc3M9InRlc3QiPgorICA8L2Rpdj4KKyAgPGJyPgorICA8aW1nIHNyYz0i
cmVzb3VyY2VzLzF4MS1ibHVlLnBuZyIgYWx0PSJGQUlMOiBJbWFnZSBzdXBwb3J0IHJlcXVpcmVk
LiIgY2xhc3M9ImNvbnRyb2wiPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9yZXBsYWNlZC9yZXNvdXJjZXMvc3F1YXJlLWJsdWUtMTAweDEwMC5wbmcKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUt
dHlwZSA9IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5
b3V0VGVzdHMvZmFzdC9yZXBsYWNlZC9yZXNvdXJjZXMvc3F1YXJlLWJsdWUtMTAweDEwMC5wbmcK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpOYW1lOiBzdm46bWltZS10eXBlCiAgICsgYXBwbGljYXRpb24vb2N0ZXQtc3Ry
ZWFtCgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9yZXBsYWNlZC9yZXNvdXJjZXMvMXgxLWJsdWUu
cG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5
cGUuCnN2bjptaW1lLXR5cGUgPSBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KClByb3BlcnR5IGNo
YW5nZXMgb246IExheW91dFRlc3RzL2Zhc3QvcmVwbGFjZWQvcmVzb3VyY2VzLzF4MS1ibHVlLnBu
ZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCk5hbWU6IHN2bjptaW1lLXR5cGUKICAgKyBhcHBsaWNhdGlvbi9vY3RldC1z
dHJlYW0KCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9yZW5kZXJfaW1hZ2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9yZW5kZXJfaW1hZ2UuaAkocmV2aXNpb24gMTI4MzcpCisr
KyBXZWJDb3JlL3JlbmRlcmluZy9yZW5kZXJfaW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMyw2
ICszLDggQEAKICAqCiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2Rl
Lm9yZykKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2Rl
Lm9yZykKKyAqICAgICAgICAgICAoQykgMjAwNiBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gKGtkZUBj
YXJld29sZi5jb20pIAorICogICAgICAgICAgIChDKSAyMDA2IFNhbXVlbCBXZWluaWcgKHNhbS53
ZWluaWdAZ21haWwuY29tKQogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IEFwcGxl
IENvbXB1dGVyLCBJbmMuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtNzAsNiArNzIsMTEgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgaW50IGNhbGNSZXBsYWNlZFdpZHRoKCkgY29uc3Q7CiAgICAgdmlydHVhbCBp
bnQgY2FsY1JlcGxhY2VkSGVpZ2h0KCkgY29uc3Q7CiAKKyAgICBpbnQgY2FsY0FzcGVjdFJhdGlv
V2lkdGgoKSBjb25zdDsKKyAgICBpbnQgY2FsY0FzcGVjdFJhdGlvSGVpZ2h0KCkgY29uc3Q7CisK
KyAgICB2aXJ0dWFsIHZvaWQgY2FsY01pbk1heFdpZHRoKCk7CisKICAgICAvLyBDYWxsZWQgdG8g
c2V0IGdlbmVyYXRlZCBjb250ZW50IGltYWdlcyAoZS5nLiwgOmJlZm9yZS86YWZ0ZXIgZ2VuZXJh
dGVkIGltYWdlcykuCiAgICAgdm9pZCBzZXRDb250ZW50T2JqZWN0KENhY2hlZE9iamVjdCopOwog
ICAgIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvcmVuZGVyX2JveC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9yZW5kZXJpbmcvcmVuZGVyX2JveC5jcHAJKHJldmlzaW9uIDEyODM3KQorKysg
V2ViQ29yZS9yZW5kZXJpbmcvcmVuZGVyX2JveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMDAs
MTAgKzEyMDAsNyBAQCBpbnQgUmVuZGVyQm94OjpjYWxjUmVwbGFjZWRXaWR0aCgpIGNvbnN0CiAg
ICAgaW50IG1pblcgPSBjYWxjUmVwbGFjZWRXaWR0aFVzaW5nKE1pbldpZHRoKTsKICAgICBpbnQg
bWF4VyA9IHN0eWxlKCktPm1heFdpZHRoKCkudmFsdWUgPT0gVU5ERUZJTkVEID8gd2lkdGggOiBj
YWxjUmVwbGFjZWRXaWR0aFVzaW5nKE1heFdpZHRoKTsKIAotICAgIHdpZHRoID0ga01pbih3aWR0
aCwgbWF4Vyk7Ci0gICAgd2lkdGggPSBrTWF4KHdpZHRoLCBtaW5XKTsKLQotICAgIHJldHVybiB3
aWR0aDsKKyAgICByZXR1cm4ga01heChtaW5XLCBrTWluKHdpZHRoLCBtYXhXKSk7CiB9CiAKIGlu
dCBSZW5kZXJCb3g6OmNhbGNSZXBsYWNlZFdpZHRoVXNpbmcoV2lkdGhUeXBlIHdpZHRoVHlwZSkg
Y29uc3QKQEAgLTEyMTYsMTUgKzEyMTMsMTUgQEAgaW50IFJlbmRlckJveDo6Y2FsY1JlcGxhY2Vk
V2lkdGhVc2luZyhXaQogICAgIGVsc2UKICAgICAgICAgdyA9IHN0eWxlKCktPm1heFdpZHRoKCk7
CiAgICAgCi0gICAgc3dpdGNoICh3LnR5cGUpIHsKKyAgICBzd2l0Y2ggKHcudHlwZSkKKyAgICB7
CiAgICAgY2FzZSBGaXhlZDoKICAgICAgICAgcmV0dXJuIGNhbGNDb250ZW50Qm94V2lkdGgody52
YWx1ZSk7Ci0gICAgY2FzZSBQZXJjZW50OiB7CisgICAgY2FzZSBQZXJjZW50OiAKICAgICAgICAg
Y29uc3QgaW50IGN3ID0gY29udGFpbmluZ0Jsb2NrV2lkdGgoKTsKICAgICAgICAgaWYgKGN3ID4g
MCkKICAgICAgICAgICAgIHJldHVybiBjYWxjQ29udGVudEJveFdpZHRoKHcubWluV2lkdGgoY3cp
KTsKLSAgICB9Ci0gICAgLy8gZmFsbCB0aHJvdWdoCisgICAgLy9mYWxsIHRocm91Z2gKICAgICBk
ZWZhdWx0OgogICAgICAgICByZXR1cm4gaW50cmluc2ljV2lkdGgoKTsKICAgICB9CkBAIC0xMjM2
LDEzICsxMjMzLDcgQEAgaW50IFJlbmRlckJveDo6Y2FsY1JlcGxhY2VkSGVpZ2h0KCkgY29ucwog
ICAgIGludCBtaW5IID0gY2FsY1JlcGxhY2VkSGVpZ2h0VXNpbmcoTWluSGVpZ2h0KTsKICAgICBp
bnQgbWF4SCA9IHN0eWxlKCktPm1heEhlaWdodCgpLnZhbHVlID09IFVOREVGSU5FRCA/IGhlaWdo
dCA6IGNhbGNSZXBsYWNlZEhlaWdodFVzaW5nKE1heEhlaWdodCk7CiAKLSAgICBpZiAoaGVpZ2h0
ID4gbWF4SCkKLSAgICAgICAgaGVpZ2h0ID0gbWF4SDsKLQotICAgIGlmIChoZWlnaHQgPCBtaW5I
KQotICAgICAgICBoZWlnaHQgPSBtaW5IOwotCi0gICAgcmV0dXJuIGhlaWdodDsKKyAgICByZXR1
cm4ga01heChtaW5ILCBrTWluKGhlaWdodCwgbWF4SCkpOwogfQogCiBpbnQgUmVuZGVyQm94Ojpj
YWxjUmVwbGFjZWRIZWlnaHRVc2luZyhIZWlnaHRUeXBlIGhlaWdodFR5cGUpIGNvbnN0CkBAIC0x
MjU0LDE0ICsxMjQ1LDE2IEBAIGludCBSZW5kZXJCb3g6OmNhbGNSZXBsYWNlZEhlaWdodFVzaW5n
KEgKICAgICAgICAgaCA9IHN0eWxlKCktPm1pbkhlaWdodCgpOwogICAgIGVsc2UKICAgICAgICAg
aCA9IHN0eWxlKCktPm1heEhlaWdodCgpOwotICAgIHN3aXRjaCggaC50eXBlICkgewotICAgIGNh
c2UgUGVyY2VudDoKLSAgICAgICAgcmV0dXJuIGF2YWlsYWJsZUhlaWdodFVzaW5nKGgpOworCisg
ICAgc3dpdGNoKGgudHlwZSkKKyAgICB7CiAgICAgY2FzZSBGaXhlZDoKICAgICAgICAgcmV0dXJu
IGNhbGNDb250ZW50Qm94SGVpZ2h0KGgudmFsdWUpOworICAgIGNhc2UgUGVyY2VudDoKKyAgICAg
ICAgcmV0dXJuIGNhbGNDb250ZW50Qm94SGVpZ2h0KGgud2lkdGgoY29udGFpbmluZ0Jsb2NrKCkt
PmF2YWlsYWJsZUhlaWdodCgpKSk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGludHJp
bnNpY0hlaWdodCgpOwotICAgIH07CisgICAgfQogfQogCiBpbnQgUmVuZGVyQm94OjphdmFpbGFi
bGVIZWlnaHQoKSBjb25zdApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvcmVuZGVyX2ltYWdlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9yZW5kZXJfaW1hZ2UuY3BwCShyZXZp
c2lvbiAxMjgzNykKKysrIFdlYkNvcmUvcmVuZGVyaW5nL3JlbmRlcl9pbWFnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQsNiArNCw4IEBACiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9s
bCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAo
a29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMCBEaXJrIE11ZWxsZXIgKG11
ZWxsZXJAa2RlLm9yZykKKyAqICAgICAgICAgICAoQykgMjAwNiBBbGxhbiBTYW5kZmVsZCBKZW5z
ZW4gKGtkZUBjYXJld29sZi5jb20pCisgKiAgICAgICAgICAgKEMpIDIwMDYgU2FtdWVsIFdlaW5p
ZyAoc2FtLndlaW5pZ0BnbWFpbC5jb20pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIw
MDUsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0zNTgsMjggKzM2
MCw2NCBAQCBib29sIFJlbmRlckltYWdlOjppc0hlaWdodFNwZWNpZmllZCgpIGNvCiAKIGludCBS
ZW5kZXJJbWFnZTo6Y2FsY1JlcGxhY2VkV2lkdGgoKSBjb25zdAogewotICAgIC8vIElmIGhlaWdo
dCBpcyBzcGVjaWZpZWQgYW5kIG5vdCB3aWR0aCwgcHJlc2VydmUgYXNwZWN0IHJhdGlvLgotICAg
IGlmIChpc0hlaWdodFNwZWNpZmllZCgpICYmICFpc1dpZHRoU3BlY2lmaWVkKCkpIHsKLSAgICAg
ICAgaWYgKGludHJpbnNpY0hlaWdodCgpID09IDApCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAg
ICAgICAgaWYgKCFtX2NhY2hlZEltYWdlIHx8IG1fY2FjaGVkSW1hZ2UtPmlzRXJyb3JJbWFnZSgp
KQotICAgICAgICAgICAgcmV0dXJuIGludHJpbnNpY1dpZHRoKCk7IC8vIERvbid0IGJvdGhlciBz
Y2FsaW5nLgotICAgICAgICByZXR1cm4gY2FsY1JlcGxhY2VkSGVpZ2h0KCkgKiBpbnRyaW5zaWNX
aWR0aCgpIC8gaW50cmluc2ljSGVpZ2h0KCk7Ci0gICAgfQotICAgIHJldHVybiBSZW5kZXJSZXBs
YWNlZDo6Y2FsY1JlcGxhY2VkV2lkdGgoKTsKKyAgICBpbnQgd2lkdGg7CisgICAgaWYgKGlzV2lk
dGhTcGVjaWZpZWQoKSkKKyAgICAgICAgd2lkdGggPSBjYWxjUmVwbGFjZWRXaWR0aFVzaW5nKFdp
ZHRoKTsKKyAgICBlbHNlCisgICAgICAgIHdpZHRoID0gY2FsY0FzcGVjdFJhdGlvV2lkdGgoKTsK
KworICAgIGludCBtaW5XID0gY2FsY1JlcGxhY2VkV2lkdGhVc2luZyhNaW5XaWR0aCk7CisgICAg
aW50IG1heFcgPSBzdHlsZSgpLT5tYXhXaWR0aCgpLmxlbmd0aCgpID09IFVOREVGSU5FRCA/IHdp
ZHRoIDogY2FsY1JlcGxhY2VkV2lkdGhVc2luZyhNYXhXaWR0aCk7CisKKyAgICByZXR1cm4ga01h
eChtaW5XLCBrTWluKHdpZHRoLCBtYXhXKSk7CiB9CiAKIGludCBSZW5kZXJJbWFnZTo6Y2FsY1Jl
cGxhY2VkSGVpZ2h0KCkgY29uc3QKIHsKLSAgICAvLyBJZiB3aWR0aCBpcyBzcGVjaWZpZWQgYW5k
IG5vdCBoZWlnaHQsIHByZXNlcnZlIGFzcGVjdCByYXRpby4KLSAgICBpZiAoaXNXaWR0aFNwZWNp
ZmllZCgpICYmICFpc0hlaWdodFNwZWNpZmllZCgpKSB7Ci0gICAgICAgIGlmIChpbnRyaW5zaWNX
aWR0aCgpID09IDApCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgaWYgKCFtX2NhY2hl
ZEltYWdlIHx8IG1fY2FjaGVkSW1hZ2UtPmlzRXJyb3JJbWFnZSgpKQotICAgICAgICAgICAgcmV0
dXJuIGludHJpbnNpY0hlaWdodCgpOyAvLyBEb24ndCBib3RoZXIgc2NhbGluZy4KLSAgICAgICAg
cmV0dXJuIGNhbGNSZXBsYWNlZFdpZHRoKCkgKiBpbnRyaW5zaWNIZWlnaHQoKSAvIGludHJpbnNp
Y1dpZHRoKCk7Ci0gICAgfQotICAgIHJldHVybiBSZW5kZXJSZXBsYWNlZDo6Y2FsY1JlcGxhY2Vk
SGVpZ2h0KCk7CisgICAgaW50IGhlaWdodDsKKyAgICBpZiAoaXNIZWlnaHRTcGVjaWZpZWQoKSkK
KyAgICAgICAgaGVpZ2h0ID0gY2FsY1JlcGxhY2VkSGVpZ2h0VXNpbmcoSGVpZ2h0KTsKKyAgICBl
bHNlCisgICAgICAgIGhlaWdodCA9IGNhbGNBc3BlY3RSYXRpb0hlaWdodCgpOworCisgICAgaW50
IG1pbkggPSBjYWxjUmVwbGFjZWRIZWlnaHRVc2luZyhNaW5IZWlnaHQpOworICAgIGludCBtYXhI
ID0gc3R5bGUoKS0+bWF4SGVpZ2h0KCkubGVuZ3RoKCkgPT0gVU5ERUZJTkVEID8gaGVpZ2h0IDog
Y2FsY1JlcGxhY2VkSGVpZ2h0VXNpbmcoTWF4SGVpZ2h0KTsKKworICAgIHJldHVybiBrTWF4KG1p
bkgsIGtNaW4oaGVpZ2h0LCBtYXhIKSk7Cit9CisKK2ludCBSZW5kZXJJbWFnZTo6Y2FsY0FzcGVj
dFJhdGlvV2lkdGgoKSBjb25zdAoreworICAgIGlmIChpbnRyaW5zaWNIZWlnaHQoKSA9PSAwKQor
ICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoIW1fY2FjaGVkSW1hZ2UgfHwgbV9jYWNoZWRJbWFn
ZS0+aXNFcnJvckltYWdlKCkpCisgICAgICAgIHJldHVybiBpbnRyaW5zaWNXaWR0aCgpOyAvLyBE
b24ndCBib3RoZXIgc2NhbGluZy4KKyAgICByZXR1cm4gUmVuZGVyUmVwbGFjZWQ6OmNhbGNSZXBs
YWNlZEhlaWdodCgpICogaW50cmluc2ljV2lkdGgoKSAvIGludHJpbnNpY0hlaWdodCgpOworfQor
CitpbnQgUmVuZGVySW1hZ2U6OmNhbGNBc3BlY3RSYXRpb0hlaWdodCgpIGNvbnN0Cit7CisgICAg
aWYgKGludHJpbnNpY1dpZHRoKCkgPT0gMCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKCFt
X2NhY2hlZEltYWdlIHx8IG1fY2FjaGVkSW1hZ2UtPmlzRXJyb3JJbWFnZSgpKQorICAgICAgICBy
ZXR1cm4gaW50cmluc2ljSGVpZ2h0KCk7IC8vIERvbid0IGJvdGhlciBzY2FsaW5nLgorICAgIHJl
dHVybiBSZW5kZXJSZXBsYWNlZDo6Y2FsY1JlcGxhY2VkV2lkdGgoKSAqIGludHJpbnNpY0hlaWdo
dCgpIC8gaW50cmluc2ljV2lkdGgoKTsKK30KKwordm9pZCBSZW5kZXJJbWFnZTo6Y2FsY01pbk1h
eFdpZHRoKCkKK3sKKyAgICBBU1NFUlQoIW1pbk1heEtub3duKCkpOworCisgICAgbV9tYXhXaWR0
aCA9IGNhbGNSZXBsYWNlZFdpZHRoKCkgKyBwYWRkaW5nTGVmdCgpICsgcGFkZGluZ1JpZ2h0KCkg
KyBib3JkZXJMZWZ0KCkgKyBib3JkZXJSaWdodCgpOworCisgICAgaWYgKHN0eWxlKCktPndpZHRo
KCkuaXNQZXJjZW50KCkgfHwgc3R5bGUoKS0+aGVpZ2h0KCkuaXNQZXJjZW50KCkgfHwgCisgICAg
ICAgIHN0eWxlKCktPm1heFdpZHRoKCkuaXNQZXJjZW50KCkgfHwgc3R5bGUoKS0+bWF4SGVpZ2h0
KCkuaXNQZXJjZW50KCkgfHwKKyAgICAgICAgc3R5bGUoKS0+bWluV2lkdGgoKS5pc1BlcmNlbnQo
KSB8fCBzdHlsZSgpLT5taW5IZWlnaHQoKS5pc1BlcmNlbnQoKSkKKyAgICAgICAgbV9taW5XaWR0
aCA9IDA7CisgICAgZWxzZQorICAgICAgICBtX21pbldpZHRoID0gbV9tYXhXaWR0aDsKKworICAg
IHNldE1pbk1heEtub3duKCk7CiB9CiAKIEltYWdlKiBSZW5kZXJJbWFnZTo6bnVsbEltYWdlKCkK
SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxMjgzNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzkgQEAKKzIwMDYtMDItMTUgIFNhbSBXZWluaWcgIDxzYW0ud2VpbmlnQGdtYWls
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAt
IGZpeCBodHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTUxNDYK
KyAgICAgICAgICBtYXgtaGVpZ2h0L21heC13aWR0aCBub3QgcmVzaXppbmcgaW1hZ2VzIHdpdGgg
Y29ycmVjdCBhc3BlY3QgcmF0aW8KKworICAgICAgICBUaGlzIHBhdGNoIGlzIGEgcG9ydCBhbmQg
YWRhcHRhdGlvbiBvZiBBbGxhbiBTYW5kZmVsZCBKZW5zZW4ncyAoY2FyZXdvbGYpCisgICAgICAg
IHBhdGNoIG9mIGh0dHA6Ly9idWdzLmtkZS5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDEwNyB3aXRo
IHRoZSBuZWVkZWQKKyAgICAgICAgbW9kaWZpY2F0aW9ucyB0byBzdWl0IHRoZSBXZWJjb3JlIHRy
ZWUuICBNYWtlcyBpbWFnZXMgcmVzcGVjdCBtaW4vbWF4IAorICAgICAgICBzaXplcyBhbmQgdGhl
aXIgaW50cmluc2ljIGFzcGVjdCByYXRpb3MgYXQgdGhlIHNhbWUgdGltZSBhY2NvcmRpbmcgdG8g
CisgICAgICAgIENTUyAyLjEgKGh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL3Zpc3VkZXQuaHRt
bCNtaW4tbWF4LXdpZHRocykuICAKKworICAgICAgICBUZXN0OiBmYXN0L3JlcGxhY2VkL21heGhl
aWdodC1wZXJjZW50Lmh0bWwKKyAgICAgICAgVGVzdDogZmFzdC9yZXBsYWNlZC9tYXhoZWlnaHQt
cHhzLmh0bWwKKyAgICAgICAgVGVzdDogZmFzdC9yZXBsYWNlZC9tYXh3aWR0aC1wZXJjZW50Lmh0
bWwKKyAgICAgICAgVGVzdDogZmFzdC9yZXBsYWNlZC9tYXh3aWR0aC1weHMuaHRtbAorICAgICAg
ICBUZXN0OiBmYXN0L3JlcGxhY2VkL21pbmhlaWdodC1wZXJjZW50Lmh0bWwKKyAgICAgICAgVGVz
dDogZmFzdC9yZXBsYWNlZC9taW5oZWlnaHQtcHhzLmh0bWwKKyAgICAgICAgVGVzdDogZmFzdC9y
ZXBsYWNlZC9taW53aWR0aC1wZXJjZW50Lmh0bWwKKyAgICAgICAgVGVzdDogZmFzdC9yZXBsYWNl
ZC9taW53aWR0aC1weHMuaHRtbAorCisgICAgICAgIAorICAgICAgICAqIHJlbmRlcmluZy9yZW5k
ZXJfYm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y2FsY1JlcGxhY2VkV2lk
dGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpjYWxjUmVwbGFjZWRXaWR0aFVzaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y2FsY1JlcGxhY2VkSGVpZ2h0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y2FsY1JlcGxhY2VkSGVpZ2h0VXNpbmcpOiBDYWxj
dWxhdGUgcGVyY2VudCBoZWlnaHRzIGNvcnJlY3RseQorICAgICAgICAqIHJlbmRlcmluZy9yZW5k
ZXJfaW1hZ2UuY3BwOiBSZXNwZWN0IGFzcGVjdCByYXRpb3MgYW5kIGNhbGN1bGF0ZSBtYXgvbWlu
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6Y2FsY1JlcGxhY2VkV2lkdGgpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmNhbGNSZXBsYWNlZEhlaWdodCk6IAorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmNhbGNBc3BlY3RSYXRpb1dpZHRoKTogQWRkZWQKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpjYWxjQXNwZWN0UmF0aW9IZWlnaHQpOiBBZGRl
ZAorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmNhbGNNaW5NYXhXaWR0aCk6IEFkZGVk
CisgICAgICAgICogcmVuZGVyaW5nL3JlbmRlcl9pbWFnZS5oOgorCiAyMDA2LTAyLTE1ICBHZW9m
ZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJp
Yy4K
</data>
<flag name="review"
          id="1627"
          type_id="1"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>6527</attachid>
            <date>2006-02-15 21:04:08 -0800</date>
            <delta_ts>2006-02-15 21:04:08 -0800</delta_ts>
            <desc>2nd file needed for test cases</desc>
            <filename>1x1-blue.png</filename>
            <type>image/png</type>
            <size>91</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAABlBMVEUAAP8AAAB7Yr8+AAAAEElE
QVR4nGJgBQAAAP//AwAABwAGzHKrJgAAAABJRU5ErkJggg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6567</attachid>
            <date>2006-02-17 14:02:06 -0800</date>
            <delta_ts>2006-02-21 10:44:05 -0800</delta_ts>
            <desc>patch 6</desc>
            <filename>patch6.diff</filename>
            <type>text/plain</type>
            <size>18005</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDEyODc0KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMDYtMDItMTcgIFNhbSBXZWluaWcgIDxzYW0u
d2VpbmlnQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAtdGVzdHMgZm9yIGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTE0NgorCisgICAgICAgICogZmFzdC9yZXBsYWNlZC9tYXhoZWlnaHQtcGVy
Y2VudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlcGxhY2VkL21heGhlaWdodC1weHMu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZXBsYWNlZC9tYXh3aWR0aC1wZXJjZW50Lmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcmVwbGFjZWQvbWF4d2lkdGgtcHhzLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvcmVwbGFjZWQvbWluaGVpZ2h0LXBlcmNlbnQuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9yZXBsYWNlZC9taW5oZWlnaHQtcHhzLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvcmVwbGFjZWQvbWlud2lkdGgtcGVyY2VudC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L3JlcGxhY2VkL21pbndpZHRoLXB4cy5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L3JlcGxhY2VkL3Jlc291cmNlcy8xeDEtYmx1ZS5wbmc6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvcmVwbGFjZWQvcmVzb3VyY2VzL3NxdWFyZS1ibHVlLTEwMHgxMDAucG5nOiBBZGRlZC4K
KwogMjAwNi0wMi0xNyAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAa2lsemVyLm5ldD4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L3JlcGxhY2VkL21heGhlaWdodC1weHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L3JlcGxhY2VkL21heGhlaWdodC1weHMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvcmVwbGFjZWQvbWF4aGVpZ2h0LXB4cy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDE2IEBACis8aHRtbD4KKzxoZWFkPgorICA8bWV0YSBodHRwLWVxdWl2PSJjb250ZW50LXR5
cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+CisgIDx0aXRsZT5UZXN0PC90
aXRsZT4KKyAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyAgICAudGVzdCB7IG1heC1oZWlnaHQ6
IDUwcHg7IH0KKyAgICAuY29udHJvbCB7IGhlaWdodDogNTBweDsgd2lkdGg6IDUwcHg7IH0KKyAg
PC9zdHlsZT4KKyAgPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9D
U1MyMS92aXN1ZGV0Lmh0bWwjbWluLW1heC1oZWlnaHRzIiB0aXRsZT0iMTAuNyBNaW5pbXVtIGFu
ZCBtYXhpbXVtIGhlaWdodHM6ICZhcG9zO21pbi1oZWlnaHQmYXBvczsgYW5kICZhcG9zO21heC1o
ZWlnaHQmYXBvczsiPgorPC9oZWFkPgorPGJvZHk+CisgIDxwPkluIHRoaXMgdGVzdCB5b3Ugc2hv
dWxkIHNlZSB0d28gaWRlbnRpY2FsIGJsdWUgc3F1YXJlcywgZWFjaCA1MHB4IGJ5IDUwcHguPC9w
PgorICA8aW1nIHNyYz0icmVzb3VyY2VzL3NxdWFyZS1ibHVlLTEwMHgxMDAucG5nIiBhbHQ9IkZB
SUw6IEltYWdlIHN1cHBvcnQgcmVxdWlyZWQuIiBjbGFzcz0idGVzdCI+CisgIDxpbWcgc3JjPSJy
ZXNvdXJjZXMvc3F1YXJlLWJsdWUtMTAweDEwMC5wbmciIGFsdD0iRkFJTDogSW1hZ2Ugc3VwcG9y
dCByZXF1aXJlZC4iIGNsYXNzPSJjb250cm9sIj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvcmVwbGFjZWQvbWlud2lkdGgtcHhzLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9yZXBsYWNlZC9taW53aWR0aC1weHMuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvcmVwbGFjZWQvbWlud2lkdGgtcHhzLmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMTYgQEAKKzxodG1sPgorPGhlYWQ+CisgIDxtZXRhIGh0dHAtZXF1aXY9
ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKyAgPHRp
dGxlPlRlc3Q8L3RpdGxlPgorICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgIC50ZXN0IHsg
bWluLXdpZHRoOiA1MHB4OyB9CisgICAgLmNvbnRyb2wgeyBoZWlnaHQ6IDUwcHg7IHdpZHRoOiA1
MHB4OyB9CisgIDwvc3R5bGU+CisgIDxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53
My5vcmcvVFIvQ1NTMjEvdmlzdWRldC5odG1sI21pbi1tYXgtd2lkdGhzIiB0aXRsZT0iMTAuNCBN
aW5pbXVtIGFuZCBtYXhpbXVtIHdpZHRoczogJmFwb3M7bWluLXdpZHRoJmFwb3M7IGFuZCAmYXBv
czttYXgtd2lkdGgmYXBvczsiPgorPC9oZWFkPgorPGJvZHk+CisgIDxwPkluIHRoaXMgdGVzdCB5
b3Ugc2hvdWxkIHNlZSB0d28gaWRlbnRpY2FsIGJsdWUgc3F1YXJlcywgZWFjaCA1MHB4IGJ5IDUw
cHguPC9wPgorICA8aW1nIHNyYz0icmVzb3VyY2VzLzF4MS1ibHVlLnBuZyIgYWx0PSJGQUlMOiBJ
bWFnZSBzdXBwb3J0IHJlcXVpcmVkLiIgY2xhc3M9InRlc3QiPgorICA8aW1nIHNyYz0icmVzb3Vy
Y2VzLzF4MS1ibHVlLnBuZyIgYWx0PSJGQUlMOiBJbWFnZSBzdXBwb3J0IHJlcXVpcmVkLiIgY2xh
c3M9ImNvbnRyb2wiPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9y
ZXBsYWNlZC9tYXh3aWR0aC1weHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L3JlcGxhY2VkL21heHdpZHRoLXB4cy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9yZXBsYWNlZC9tYXh3aWR0aC1weHMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
NiBAQAorPGh0bWw+Cis8aGVhZD4KKyAgPG1ldGEgaHR0cC1lcXVpdj0iY29udGVudC10eXBlIiBj
b250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorICA8dGl0bGU+VGVzdDwvdGl0bGU+
CisgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisgICAgLnRlc3QgeyBtYXgtd2lkdGg6IDUwcHg7
IH0KKyAgICAuY29udHJvbCB7IGhlaWdodDogNTBweDsgd2lkdGg6IDUwcHg7IH0KKyAgPC9zdHls
ZT4KKyAgPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9DU1MyMS92
aXN1ZGV0Lmh0bWwjbWluLW1heC13aWR0aHMiIHRpdGxlPSIxMC40IE1pbmltdW0gYW5kIG1heGlt
dW0gd2lkdGhzOiAmYXBvczttaW4td2lkdGgmYXBvczsgYW5kICZhcG9zO21heC13aWR0aCZhcG9z
OyI+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPHA+SW4gdGhpcyB0ZXN0IHlvdSBzaG91bGQgc2VlIHR3
byBpZGVudGljYWwgYmx1ZSBzcXVhcmVzLCBlYWNoIDUwcHggYnkgNTBweC48L3A+CisgIDxpbWcg
c3JjPSJyZXNvdXJjZXMvc3F1YXJlLWJsdWUtMTAweDEwMC5wbmciIGFsdD0iRkFJTDogSW1hZ2Ug
c3VwcG9ydCByZXF1aXJlZC4iIGNsYXNzPSJ0ZXN0Ij4KKyAgPGltZyBzcmM9InJlc291cmNlcy9z
cXVhcmUtYmx1ZS0xMDB4MTAwLnBuZyIgYWx0PSJGQUlMOiBJbWFnZSBzdXBwb3J0IHJlcXVpcmVk
LiIgY2xhc3M9ImNvbnRyb2wiPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9yZXBsYWNlZC9tYXhoZWlnaHQtcGVyY2VudC5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvcmVwbGFjZWQvbWF4aGVpZ2h0LXBlcmNlbnQuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvcmVwbGFjZWQvbWF4aGVpZ2h0LXBlcmNlbnQuaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwyMCBAQAorPGh0bWw+Cis8aGVhZD4KKyAgPG1ldGEgaHR0cC1l
cXVpdj0iY29udGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgor
ICA8dGl0bGU+VGVzdDwvdGl0bGU+CisgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisgICAgLm91
dGVyIHsgaGVpZ2h0OiAxMDBweDsgfQorICAgIC50ZXN0IHsgbWF4LWhlaWdodDogNTAlOyB9Cisg
ICAgLmNvbnRyb2wgeyBoZWlnaHQ6IDUwcHg7IHdpZHRoOiA1MHB4OyB9CisgIDwvc3R5bGU+Cisg
IDxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvQ1NTMjEvdmlzdWRl
dC5odG1sI21pbi1tYXgtaGVpZ2h0cyIgdGl0bGU9IjEwLjcgTWluaW11bSBhbmQgbWF4aW11bSBo
ZWlnaHRzOiAmYXBvczttaW4taGVpZ2h0JmFwb3M7IGFuZCAmYXBvczttYXgtaGVpZ2h0JmFwb3M7
Ij4KKzwvaGVhZD4KKzxib2R5PgorICA8cD5JbiB0aGlzIHRlc3QgeW91IHNob3VsZCBzZWUgdHdv
IGlkZW50aWNhbCBibHVlIHNxdWFyZXMsIGVhY2ggNTBweCBieSA1MHB4LjwvcD4KKyAgPGRpdiBj
bGFzcz0ib3V0ZXIiPgorICAgIDxpbWcgc3JjPSJyZXNvdXJjZXMvc3F1YXJlLWJsdWUtMTAweDEw
MC5wbmciIGFsdD0iRkFJTDogSW1hZ2Ugc3VwcG9ydCByZXF1aXJlZC4iIGNsYXNzPSJ0ZXN0Ij4K
KyAgPC9kaXY+CisgIDxicj4KKyAgPGltZyBzcmM9InJlc291cmNlcy9zcXVhcmUtYmx1ZS0xMDB4
MTAwLnBuZyIgYWx0PSJGQUlMOiBJbWFnZSBzdXBwb3J0IHJlcXVpcmVkLiIgY2xhc3M9ImNvbnRy
b2wiPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9yZXBsYWNlZC9t
aW53aWR0aC1wZXJjZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9yZXBs
YWNlZC9taW53aWR0aC1wZXJjZW50Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L3JlcGxhY2VkL21pbndpZHRoLXBlcmNlbnQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwyMCBAQAorPGh0bWw+Cis8aGVhZD4KKyAgPG1ldGEgaHR0cC1lcXVpdj0iY29udGVudC10eXBl
IiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorICA8dGl0bGU+VGVzdDwvdGl0
bGU+CisgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisgICAgLm91dGVyIHsgd2lkdGg6IDEwMHB4
OyB9CisgICAgLnRlc3QgeyBtaW4td2lkdGg6IDUwJTsgfQorICAgIC5jb250cm9sIHsgaGVpZ2h0
OiA1MHB4OyB3aWR0aDogNTBweDsgfQorICA8L3N0eWxlPgorICA8bGluayByZWw9ImhlbHAiIGhy
ZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL3Zpc3VkZXQuaHRtbCNtaW4tbWF4LXdpZHRo
cyIgdGl0bGU9IjEwLjQgTWluaW11bSBhbmQgbWF4aW11bSB3aWR0aHM6ICZhcG9zO21pbi13aWR0
aCZhcG9zOyBhbmQgJmFwb3M7bWF4LXdpZHRoJmFwb3M7Ij4KKzwvaGVhZD4KKzxib2R5PgorICA8
cD5JbiB0aGlzIHRlc3QgeW91IHNob3VsZCBzZWUgdHdvIGlkZW50aWNhbCBibHVlIHNxdWFyZXMs
IGVhY2ggNTBweCBieSA1MHB4LjwvcD4KKyAgPGRpdiBjbGFzcz0ib3V0ZXIiPgorICAgIDxpbWcg
c3JjPSJyZXNvdXJjZXMvMXgxLWJsdWUucG5nIiBhbHQ9IkZBSUw6IEltYWdlIHN1cHBvcnQgcmVx
dWlyZWQuIiBjbGFzcz0idGVzdCI+CisgIDwvZGl2PgorICA8YnI+CisgIDxpbWcgc3JjPSJyZXNv
dXJjZXMvMXgxLWJsdWUucG5nIiBhbHQ9IkZBSUw6IEltYWdlIHN1cHBvcnQgcmVxdWlyZWQuIiBj
bGFzcz0iY29udHJvbCI+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L3JlcGxhY2VkL21heHdpZHRoLXBlcmNlbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L3JlcGxhY2VkL21heHdpZHRoLXBlcmNlbnQuaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvcmVwbGFjZWQvbWF4d2lkdGgtcGVyY2VudC5odG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDIwIEBACis8aHRtbD4KKzxoZWFkPgorICA8bWV0YSBodHRwLWVxdWl2PSJj
b250ZW50LXR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+CisgIDx0aXRs
ZT5UZXN0PC90aXRsZT4KKyAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyAgICAub3V0ZXIgeyB3
aWR0aDogMTAwcHg7IH0KKyAgICAudGVzdCB7IG1heC13aWR0aDogNTAlOyB9CisgICAgLmNvbnRy
b2wgeyBoZWlnaHQ6IDUwcHg7IHdpZHRoOiA1MHB4OyB9CisgIDwvc3R5bGU+CisgIDxsaW5rIHJl
bD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvQ1NTMjEvdmlzdWRldC5odG1sI21p
bi1tYXgtd2lkdGhzIiB0aXRsZT0iMTAuNCBNaW5pbXVtIGFuZCBtYXhpbXVtIHdpZHRoczogJmFw
b3M7bWluLXdpZHRoJmFwb3M7IGFuZCAmYXBvczttYXgtd2lkdGgmYXBvczsiPgorPC9oZWFkPgor
PGJvZHk+CisgIDxwPkluIHRoaXMgdGVzdCB5b3Ugc2hvdWxkIHNlZSB0d28gaWRlbnRpY2FsIGJs
dWUgc3F1YXJlcywgZWFjaCA1MHB4IGJ5IDUwcHguPC9wPgorICA8ZGl2IGNsYXNzPSJvdXRlciI+
CisgICAgPGltZyBzcmM9InJlc291cmNlcy9zcXVhcmUtYmx1ZS0xMDB4MTAwLnBuZyIgYWx0PSJG
QUlMOiBJbWFnZSBzdXBwb3J0IHJlcXVpcmVkLiIgY2xhc3M9InRlc3QiPgorICA8L2Rpdj4KKyAg
PGJyPgorICA8aW1nIHNyYz0icmVzb3VyY2VzL3NxdWFyZS1ibHVlLTEwMHgxMDAucG5nIiBhbHQ9
IkZBSUw6IEltYWdlIHN1cHBvcnQgcmVxdWlyZWQuIiBjbGFzcz0iY29udHJvbCI+Cis8L2JvZHk+
Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3JlcGxhY2VkL21pbmhlaWdodC1weHMu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3JlcGxhY2VkL21pbmhlaWdodC1w
eHMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvcmVwbGFjZWQvbWluaGVp
Z2h0LXB4cy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2IEBACis8aHRtbD4KKzxoZWFk
PgorICA8bWV0YSBodHRwLWVxdWl2PSJjb250ZW50LXR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsg
Y2hhcnNldD11dGYtOCI+CisgIDx0aXRsZT5UZXN0PC90aXRsZT4KKyAgPHN0eWxlIHR5cGU9InRl
eHQvY3NzIj4KKyAgICAudGVzdCB7IG1pbi1oZWlnaHQ6IDUwcHg7IH0KKyAgICAuY29udHJvbCB7
IGhlaWdodDogNTBweDsgd2lkdGg6IDUwcHg7IH0KKyAgPC9zdHlsZT4KKyAgPGxpbmsgcmVsPSJo
ZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9DU1MyMS92aXN1ZGV0Lmh0bWwjbWluLW1h
eC1oZWlnaHRzIiB0aXRsZT0iMTAuNyBNaW5pbXVtIGFuZCBtYXhpbXVtIGhlaWdodHM6ICZhcG9z
O21pbi1oZWlnaHQmYXBvczsgYW5kICZhcG9zO21heC1oZWlnaHQmYXBvczsiPgorPC9oZWFkPgor
PGJvZHk+CisgIDxwPkluIHRoaXMgdGVzdCB5b3Ugc2hvdWxkIHNlZSB0d28gaWRlbnRpY2FsIGJs
dWUgc3F1YXJlcywgZWFjaCA1MHB4IGJ5IDUwcHguPC9wPgorICA8aW1nIHNyYz0icmVzb3VyY2Vz
LzF4MS1ibHVlLnBuZyIgYWx0PSJGQUlMOiBJbWFnZSBzdXBwb3J0IHJlcXVpcmVkLiIgY2xhc3M9
InRlc3QiPgorICA8aW1nIHNyYz0icmVzb3VyY2VzLzF4MS1ibHVlLnBuZyIgYWx0PSJGQUlMOiBJ
bWFnZSBzdXBwb3J0IHJlcXVpcmVkLiIgY2xhc3M9ImNvbnRyb2wiPgorPC9ib2R5PgorPC9odG1s
PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9yZXBsYWNlZC9taW5oZWlnaHQtcGVyY2VudC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcmVwbGFjZWQvbWluaGVpZ2h0LXBlcmNl
bnQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvcmVwbGFjZWQvbWluaGVp
Z2h0LXBlcmNlbnQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMCBAQAorPGh0bWw+Cis8
aGVhZD4KKyAgPG1ldGEgaHR0cC1lcXVpdj0iY29udGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0
bWw7IGNoYXJzZXQ9dXRmLTgiPgorICA8dGl0bGU+VGVzdDwvdGl0bGU+CisgIDxzdHlsZSB0eXBl
PSJ0ZXh0L2NzcyI+CisgICAgLm91dGVyIHsgaGVpZ2h0OiAxMDBweDsgfQorICAgIC50ZXN0IHsg
bWluLWhlaWdodDogNTAlOyB9CisgICAgLmNvbnRyb2wgeyBoZWlnaHQ6IDUwcHg7IHdpZHRoOiA1
MHB4OyB9CisgIDwvc3R5bGU+CisgIDxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53
My5vcmcvVFIvQ1NTMjEvdmlzdWRldC5odG1sI21pbi1tYXgtaGVpZ2h0cyIgdGl0bGU9IjEwLjcg
TWluaW11bSBhbmQgbWF4aW11bSBoZWlnaHRzOiAmYXBvczttaW4taGVpZ2h0JmFwb3M7IGFuZCAm
YXBvczttYXgtaGVpZ2h0JmFwb3M7Ij4KKzwvaGVhZD4KKzxib2R5PgorICA8cD5JbiB0aGlzIHRl
c3QgeW91IHNob3VsZCBzZWUgdHdvIGlkZW50aWNhbCBibHVlIHNxdWFyZXMsIGVhY2ggNTBweCBi
eSA1MHB4LjwvcD4KKyAgPGRpdiBjbGFzcz0ib3V0ZXIiPgorICAgIDxpbWcgc3JjPSJyZXNvdXJj
ZXMvMXgxLWJsdWUucG5nIiBhbHQ9IkZBSUw6IEltYWdlIHN1cHBvcnQgcmVxdWlyZWQuIiBjbGFz
cz0idGVzdCI+CisgIDwvZGl2PgorICA8YnI+CisgIDxpbWcgc3JjPSJyZXNvdXJjZXMvMXgxLWJs
dWUucG5nIiBhbHQ9IkZBSUw6IEltYWdlIHN1cHBvcnQgcmVxdWlyZWQuIiBjbGFzcz0iY29udHJv
bCI+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3JlcGxhY2VkL3Jl
c291cmNlcy9zcXVhcmUtYmx1ZS0xMDB4MTAwLnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5
OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gYXBwbGljYXRp
b24vb2N0ZXQtc3RyZWFtCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9mYXN0L3Jl
cGxhY2VkL3Jlc291cmNlcy9zcXVhcmUtYmx1ZS0xMDB4MTAwLnBuZwpfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6
IHN2bjptaW1lLXR5cGUKICAgKyBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L3JlcGxhY2VkL3Jlc291cmNlcy8xeDEtYmx1ZS5wbmcKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpD
YW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlw
ZSA9IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0
VGVzdHMvZmFzdC9yZXBsYWNlZC9yZXNvdXJjZXMvMXgxLWJsdWUucG5nCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFt
ZTogc3ZuOm1pbWUtdHlwZQogICArIGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQoKSW5kZXg6IFdl
YkNvcmUvcmVuZGVyaW5nL3JlbmRlcl9pbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVu
ZGVyaW5nL3JlbmRlcl9pbWFnZS5oCShyZXZpc2lvbiAxMjg3NCkKKysrIFdlYkNvcmUvcmVuZGVy
aW5nL3JlbmRlcl9pbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zLDYgKzMsOCBAQAogICoKICAq
IENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAg
ICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQorICogICAgICAg
ICAgIChDKSAyMDA2IEFsbGFuIFNhbmRmZWxkIEplbnNlbiAoa2RlQGNhcmV3b2xmLmNvbSkgCisg
KiAgICAgICAgICAgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyAoc2FtLndlaW5pZ0BnbWFpbC5jb20p
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4K
ICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCkBAIC03MCw2ICs3MiwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBpbnQg
Y2FsY1JlcGxhY2VkV2lkdGgoKSBjb25zdDsKICAgICB2aXJ0dWFsIGludCBjYWxjUmVwbGFjZWRI
ZWlnaHQoKSBjb25zdDsKIAorICAgIGludCBjYWxjQXNwZWN0UmF0aW9XaWR0aCgpIGNvbnN0Owor
ICAgIGludCBjYWxjQXNwZWN0UmF0aW9IZWlnaHQoKSBjb25zdDsKKworICAgIHZpcnR1YWwgdm9p
ZCBjYWxjTWluTWF4V2lkdGgoKTsKKwogICAgIC8vIENhbGxlZCB0byBzZXQgZ2VuZXJhdGVkIGNv
bnRlbnQgaW1hZ2VzIChlLmcuLCA6YmVmb3JlLzphZnRlciBnZW5lcmF0ZWQgaW1hZ2VzKS4KICAg
ICB2b2lkIHNldENvbnRlbnRPYmplY3QoQ2FjaGVkT2JqZWN0Kik7CiAgICAgCkluZGV4OiBXZWJD
b3JlL3JlbmRlcmluZy9yZW5kZXJfYm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRl
cmluZy9yZW5kZXJfYm94LmNwcAkocmV2aXNpb24gMTI4NzQpCisrKyBXZWJDb3JlL3JlbmRlcmlu
Zy9yZW5kZXJfYm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI2MCwxMCArMTI2MCw3IEBAIGlu
dCBSZW5kZXJCb3g6OmNhbGNSZXBsYWNlZFdpZHRoKCkgY29uc3QKICAgICBpbnQgbWluVyA9IGNh
bGNSZXBsYWNlZFdpZHRoVXNpbmcoTWluV2lkdGgpOwogICAgIGludCBtYXhXID0gc3R5bGUoKS0+
bWF4V2lkdGgoKS52YWx1ZSA9PSBVTkRFRklORUQgPyB3aWR0aCA6IGNhbGNSZXBsYWNlZFdpZHRo
VXNpbmcoTWF4V2lkdGgpOwogCi0gICAgd2lkdGggPSBrTWluKHdpZHRoLCBtYXhXKTsKLSAgICB3
aWR0aCA9IGtNYXgod2lkdGgsIG1pblcpOwotCi0gICAgcmV0dXJuIHdpZHRoOworICAgIHJldHVy
biBrTWF4KG1pblcsIGtNaW4od2lkdGgsIG1heFcpKTsKIH0KIAogaW50IFJlbmRlckJveDo6Y2Fs
Y1JlcGxhY2VkV2lkdGhVc2luZyhXaWR0aFR5cGUgd2lkdGhUeXBlKSBjb25zdApAQCAtMTI5Niwx
MyArMTI5Myw3IEBAIGludCBSZW5kZXJCb3g6OmNhbGNSZXBsYWNlZEhlaWdodCgpIGNvbnMKICAg
ICBpbnQgbWluSCA9IGNhbGNSZXBsYWNlZEhlaWdodFVzaW5nKE1pbkhlaWdodCk7CiAgICAgaW50
IG1heEggPSBzdHlsZSgpLT5tYXhIZWlnaHQoKS52YWx1ZSA9PSBVTkRFRklORUQgPyBoZWlnaHQg
OiBjYWxjUmVwbGFjZWRIZWlnaHRVc2luZyhNYXhIZWlnaHQpOwogCi0gICAgaWYgKGhlaWdodCA+
IG1heEgpCi0gICAgICAgIGhlaWdodCA9IG1heEg7Ci0KLSAgICBpZiAoaGVpZ2h0IDwgbWluSCkK
LSAgICAgICAgaGVpZ2h0ID0gbWluSDsKLQotICAgIHJldHVybiBoZWlnaHQ7CisgICAgcmV0dXJu
IGtNYXgobWluSCwga01pbihoZWlnaHQsIG1heEgpKTsKIH0KIAogaW50IFJlbmRlckJveDo6Y2Fs
Y1JlcGxhY2VkSGVpZ2h0VXNpbmcoSGVpZ2h0VHlwZSBoZWlnaHRUeXBlKSBjb25zdApAQCAtMTMx
NCwxNCArMTMwNSwxNiBAQCBpbnQgUmVuZGVyQm94OjpjYWxjUmVwbGFjZWRIZWlnaHRVc2luZyhI
CiAgICAgICAgIGggPSBzdHlsZSgpLT5taW5IZWlnaHQoKTsKICAgICBlbHNlCiAgICAgICAgIGgg
PSBzdHlsZSgpLT5tYXhIZWlnaHQoKTsKLSAgICBzd2l0Y2goIGgudHlwZSApIHsKLSAgICBjYXNl
IFBlcmNlbnQ6Ci0gICAgICAgIHJldHVybiBhdmFpbGFibGVIZWlnaHRVc2luZyhoKTsKKworICAg
IHN3aXRjaChoLnR5cGUpCisgICAgewogICAgIGNhc2UgRml4ZWQ6CiAgICAgICAgIHJldHVybiBj
YWxjQ29udGVudEJveEhlaWdodChoLnZhbHVlKTsKKyAgICBjYXNlIFBlcmNlbnQ6CisgICAgICAg
IHJldHVybiBjYWxjQ29udGVudEJveEhlaWdodChoLndpZHRoKGNvbnRhaW5pbmdCbG9jaygpLT5h
dmFpbGFibGVIZWlnaHQoKSkpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBpbnRyaW5z
aWNIZWlnaHQoKTsKLSAgICB9OworICAgIH0KIH0KIAogaW50IFJlbmRlckJveDo6YXZhaWxhYmxl
SGVpZ2h0KCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL3JlbmRlcl9pbWFnZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvcmVuZGVyX2ltYWdlLmNwcAkocmV2aXNp
b24gMTI4NzQpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9yZW5kZXJfaW1hZ2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00LDYgKzQsOCBAQAogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwg
KGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtv
aXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDAgRGlyayBNdWVsbGVyIChtdWVs
bGVyQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDIwMDYgQWxsYW4gU2FuZGZlbGQgSmVuc2Vu
IChrZGVAY2FyZXdvbGYuY29tKQorICogICAgICAgICAgIChDKSAyMDA2IFNhbXVlbCBXZWluaWcg
KHNhbS53ZWluaWdAZ21haWwuY29tKQogICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1
LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtMzU4LDI4ICszNjAs
NjQgQEAgYm9vbCBSZW5kZXJJbWFnZTo6aXNIZWlnaHRTcGVjaWZpZWQoKSBjbwogCiBpbnQgUmVu
ZGVySW1hZ2U6OmNhbGNSZXBsYWNlZFdpZHRoKCkgY29uc3QKIHsKLSAgICAvLyBJZiBoZWlnaHQg
aXMgc3BlY2lmaWVkIGFuZCBub3Qgd2lkdGgsIHByZXNlcnZlIGFzcGVjdCByYXRpby4KLSAgICBp
ZiAoaXNIZWlnaHRTcGVjaWZpZWQoKSAmJiAhaXNXaWR0aFNwZWNpZmllZCgpKSB7Ci0gICAgICAg
IGlmIChpbnRyaW5zaWNIZWlnaHQoKSA9PSAwKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAg
ICAgIGlmICghbV9jYWNoZWRJbWFnZSB8fCBtX2NhY2hlZEltYWdlLT5pc0Vycm9ySW1hZ2UoKSkK
LSAgICAgICAgICAgIHJldHVybiBpbnRyaW5zaWNXaWR0aCgpOyAvLyBEb24ndCBib3RoZXIgc2Nh
bGluZy4KLSAgICAgICAgcmV0dXJuIGNhbGNSZXBsYWNlZEhlaWdodCgpICogaW50cmluc2ljV2lk
dGgoKSAvIGludHJpbnNpY0hlaWdodCgpOwotICAgIH0KLSAgICByZXR1cm4gUmVuZGVyUmVwbGFj
ZWQ6OmNhbGNSZXBsYWNlZFdpZHRoKCk7CisgICAgaW50IHdpZHRoOworICAgIGlmIChpc1dpZHRo
U3BlY2lmaWVkKCkpCisgICAgICAgIHdpZHRoID0gY2FsY1JlcGxhY2VkV2lkdGhVc2luZyhXaWR0
aCk7CisgICAgZWxzZQorICAgICAgICB3aWR0aCA9IGNhbGNBc3BlY3RSYXRpb1dpZHRoKCk7CisK
KyAgICBpbnQgbWluVyA9IGNhbGNSZXBsYWNlZFdpZHRoVXNpbmcoTWluV2lkdGgpOworICAgIGlu
dCBtYXhXID0gc3R5bGUoKS0+bWF4V2lkdGgoKS5sZW5ndGgoKSA9PSBVTkRFRklORUQgPyB3aWR0
aCA6IGNhbGNSZXBsYWNlZFdpZHRoVXNpbmcoTWF4V2lkdGgpOworCisgICAgcmV0dXJuIGtNYXgo
bWluVywga01pbih3aWR0aCwgbWF4VykpOwogfQogCiBpbnQgUmVuZGVySW1hZ2U6OmNhbGNSZXBs
YWNlZEhlaWdodCgpIGNvbnN0CiB7Ci0gICAgLy8gSWYgd2lkdGggaXMgc3BlY2lmaWVkIGFuZCBu
b3QgaGVpZ2h0LCBwcmVzZXJ2ZSBhc3BlY3QgcmF0aW8uCi0gICAgaWYgKGlzV2lkdGhTcGVjaWZp
ZWQoKSAmJiAhaXNIZWlnaHRTcGVjaWZpZWQoKSkgewotICAgICAgICBpZiAoaW50cmluc2ljV2lk
dGgoKSA9PSAwKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIGlmICghbV9jYWNoZWRJ
bWFnZSB8fCBtX2NhY2hlZEltYWdlLT5pc0Vycm9ySW1hZ2UoKSkKLSAgICAgICAgICAgIHJldHVy
biBpbnRyaW5zaWNIZWlnaHQoKTsgLy8gRG9uJ3QgYm90aGVyIHNjYWxpbmcuCi0gICAgICAgIHJl
dHVybiBjYWxjUmVwbGFjZWRXaWR0aCgpICogaW50cmluc2ljSGVpZ2h0KCkgLyBpbnRyaW5zaWNX
aWR0aCgpOwotICAgIH0KLSAgICByZXR1cm4gUmVuZGVyUmVwbGFjZWQ6OmNhbGNSZXBsYWNlZEhl
aWdodCgpOworICAgIGludCBoZWlnaHQ7CisgICAgaWYgKGlzSGVpZ2h0U3BlY2lmaWVkKCkpCisg
ICAgICAgIGhlaWdodCA9IGNhbGNSZXBsYWNlZEhlaWdodFVzaW5nKEhlaWdodCk7CisgICAgZWxz
ZQorICAgICAgICBoZWlnaHQgPSBjYWxjQXNwZWN0UmF0aW9IZWlnaHQoKTsKKworICAgIGludCBt
aW5IID0gY2FsY1JlcGxhY2VkSGVpZ2h0VXNpbmcoTWluSGVpZ2h0KTsKKyAgICBpbnQgbWF4SCA9
IHN0eWxlKCktPm1heEhlaWdodCgpLmxlbmd0aCgpID09IFVOREVGSU5FRCA/IGhlaWdodCA6IGNh
bGNSZXBsYWNlZEhlaWdodFVzaW5nKE1heEhlaWdodCk7CisKKyAgICByZXR1cm4ga01heChtaW5I
LCBrTWluKGhlaWdodCwgbWF4SCkpOworfQorCitpbnQgUmVuZGVySW1hZ2U6OmNhbGNBc3BlY3RS
YXRpb1dpZHRoKCkgY29uc3QKK3sKKyAgICBpZiAoaW50cmluc2ljSGVpZ2h0KCkgPT0gMCkKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgaWYgKCFtX2NhY2hlZEltYWdlIHx8IG1fY2FjaGVkSW1hZ2Ut
PmlzRXJyb3JJbWFnZSgpKQorICAgICAgICByZXR1cm4gaW50cmluc2ljV2lkdGgoKTsgLy8gRG9u
J3QgYm90aGVyIHNjYWxpbmcuCisgICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjpjYWxjUmVwbGFj
ZWRIZWlnaHQoKSAqIGludHJpbnNpY1dpZHRoKCkgLyBpbnRyaW5zaWNIZWlnaHQoKTsKK30KKwor
aW50IFJlbmRlckltYWdlOjpjYWxjQXNwZWN0UmF0aW9IZWlnaHQoKSBjb25zdAoreworICAgIGlm
IChpbnRyaW5zaWNXaWR0aCgpID09IDApCisgICAgICAgIHJldHVybiAwOworICAgIGlmICghbV9j
YWNoZWRJbWFnZSB8fCBtX2NhY2hlZEltYWdlLT5pc0Vycm9ySW1hZ2UoKSkKKyAgICAgICAgcmV0
dXJuIGludHJpbnNpY0hlaWdodCgpOyAvLyBEb24ndCBib3RoZXIgc2NhbGluZy4KKyAgICByZXR1
cm4gUmVuZGVyUmVwbGFjZWQ6OmNhbGNSZXBsYWNlZFdpZHRoKCkgKiBpbnRyaW5zaWNIZWlnaHQo
KSAvIGludHJpbnNpY1dpZHRoKCk7Cit9CisKK3ZvaWQgUmVuZGVySW1hZ2U6OmNhbGNNaW5NYXhX
aWR0aCgpCit7CisgICAgQVNTRVJUKCFtaW5NYXhLbm93bigpKTsKKworICAgIG1fbWF4V2lkdGgg
PSBjYWxjUmVwbGFjZWRXaWR0aCgpICsgcGFkZGluZ0xlZnQoKSArIHBhZGRpbmdSaWdodCgpICsg
Ym9yZGVyTGVmdCgpICsgYm9yZGVyUmlnaHQoKTsKKworICAgIGlmIChzdHlsZSgpLT53aWR0aCgp
LmlzUGVyY2VudCgpIHx8IHN0eWxlKCktPmhlaWdodCgpLmlzUGVyY2VudCgpIHx8IAorICAgICAg
ICBzdHlsZSgpLT5tYXhXaWR0aCgpLmlzUGVyY2VudCgpIHx8IHN0eWxlKCktPm1heEhlaWdodCgp
LmlzUGVyY2VudCgpIHx8CisgICAgICAgIHN0eWxlKCktPm1pbldpZHRoKCkuaXNQZXJjZW50KCkg
fHwgc3R5bGUoKS0+bWluSGVpZ2h0KCkuaXNQZXJjZW50KCkpCisgICAgICAgIG1fbWluV2lkdGgg
PSAwOworICAgIGVsc2UKKyAgICAgICAgbV9taW5XaWR0aCA9IG1fbWF4V2lkdGg7CisKKyAgICBz
ZXRNaW5NYXhLbm93bigpOwogfQogCiBJbWFnZSogUmVuZGVySW1hZ2U6Om51bGxJbWFnZSgpCklu
ZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwko
cmV2aXNpb24gMTI4NzQpCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDM4IEBACisyMDA2LTAyLTE3ICBTYW0gV2VpbmlnICA8c2FtLndlaW5pZ0BnbWFpbC5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBm
aXggaHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD01MTQ2Cisg
ICAgICAgICAgbWF4LWhlaWdodC9tYXgtd2lkdGggbm90IHJlc2l6aW5nIGltYWdlcyB3aXRoIGNv
cnJlY3QgYXNwZWN0IHJhdGlvCisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBhIHBvcnQgYW5kIGFk
YXB0YXRpb24gb2YgQWxsYW4gU2FuZGZlbGQgSmVuc2VuJ3MgKGNhcmV3b2xmKQorICAgICAgICBw
YXRjaCBvZiBodHRwOi8vYnVncy5rZGUub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjAxMDcgd2l0aCB0
aGUgbmVlZGVkCisgICAgICAgIG1vZGlmaWNhdGlvbnMgdG8gc3VpdCB0aGUgV2ViY29yZSB0cmVl
LiAgTWFrZXMgaW1hZ2VzIHJlc3BlY3QgbWluL21heCAKKyAgICAgICAgc2l6ZXMgYW5kIHRoZWly
IGludHJpbnNpYyBhc3BlY3QgcmF0aW9zIGF0IHRoZSBzYW1lIHRpbWUgYWNjb3JkaW5nIHRvIAor
ICAgICAgICBDU1MgMi4xIChodHRwOi8vd3d3LnczLm9yZy9UUi9DU1MyMS92aXN1ZGV0Lmh0bWwj
bWluLW1heC13aWR0aHMpLiAgCisKKyAgICAgICAgVGVzdDogZmFzdC9yZXBsYWNlZC9tYXhoZWln
aHQtcGVyY2VudC5odG1sCisgICAgICAgIFRlc3Q6IGZhc3QvcmVwbGFjZWQvbWF4aGVpZ2h0LXB4
cy5odG1sCisgICAgICAgIFRlc3Q6IGZhc3QvcmVwbGFjZWQvbWF4d2lkdGgtcGVyY2VudC5odG1s
CisgICAgICAgIFRlc3Q6IGZhc3QvcmVwbGFjZWQvbWF4d2lkdGgtcHhzLmh0bWwKKyAgICAgICAg
VGVzdDogZmFzdC9yZXBsYWNlZC9taW5oZWlnaHQtcGVyY2VudC5odG1sCisgICAgICAgIFRlc3Q6
IGZhc3QvcmVwbGFjZWQvbWluaGVpZ2h0LXB4cy5odG1sCisgICAgICAgIFRlc3Q6IGZhc3QvcmVw
bGFjZWQvbWlud2lkdGgtcGVyY2VudC5odG1sCisgICAgICAgIFRlc3Q6IGZhc3QvcmVwbGFjZWQv
bWlud2lkdGgtcHhzLmh0bWwKKworCisgICAgICAgICogcmVuZGVyaW5nL3JlbmRlcl9ib3guY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpjYWxjUmVwbGFjZWRXaWR0aCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNhbGNSZXBsYWNlZEhlaWdodCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCb3g6OmNhbGNSZXBsYWNlZEhlaWdodFVzaW5nKTogQ2FsY3VsYXRlIHBl
cmNlbnQgaGVpZ2h0cyBjb3JyZWN0bHkKKyAgICAgICAgKiByZW5kZXJpbmcvcmVuZGVyX2ltYWdl
LmNwcDogUmVzcGVjdCBhc3BlY3QgcmF0aW9zIGFuZCBjYWxjdWxhdGUgbWF4L21pbgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmNhbGNSZXBsYWNlZFdpZHRoKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckltYWdlOjpjYWxjUmVwbGFjZWRIZWlnaHQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVySW1hZ2U6OmNhbGNBc3BlY3RSYXRpb1dpZHRoKTogQWRkZWQKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckltYWdlOjpjYWxjQXNwZWN0UmF0aW9IZWlnaHQpOiBBZGRlZAorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmNhbGNNaW5NYXhXaWR0aCk6IEFkZGVkCisgICAgICAg
ICogcmVuZGVyaW5nL3JlbmRlcl9pbWFnZS5oOgorCiAyMDA2LTAyLTE3ICBBZGVsZSBQZXRlcnNv
biAgPGFkZWxlQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBCZXRoLgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6645</attachid>
            <date>2006-02-21 10:44:05 -0800</date>
            <delta_ts>2006-02-21 14:53:09 -0800</delta_ts>
            <desc>patch (take 7)</desc>
            <filename>maxmin7.diff</filename>
            <type>text/plain</type>
            <size>18943</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDEyOTIyKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMDYtMDItMjEgIFNhbSBXZWluaWcgIDxzYW0u
d2VpbmlnQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAtdGVzdHMgZm9yIGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTE0NgorCisgICAgICAgICogZmFzdC9yZXBsYWNlZC9tYXhoZWlnaHQtcGVy
Y2VudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlcGxhY2VkL21heGhlaWdodC1weHMu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZXBsYWNlZC9tYXh3aWR0aC1wZXJjZW50Lmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcmVwbGFjZWQvbWF4d2lkdGgtcHhzLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvcmVwbGFjZWQvbWluaGVpZ2h0LXBlcmNlbnQuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9yZXBsYWNlZC9taW5oZWlnaHQtcHhzLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvcmVwbGFjZWQvbWlud2lkdGgtcGVyY2VudC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L3JlcGxhY2VkL21pbndpZHRoLXB4cy5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L3JlcGxhY2VkL3Jlc291cmNlcy8xeDEtYmx1ZS5wbmc6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvcmVwbGFjZWQvcmVzb3VyY2VzL3NxdWFyZS1ibHVlLTEwMHgxMDAucG5nOiBBZGRlZC4K
KwogMjAwNi0wMi0yMCAgTWFjaWVqIFN0YWNob3dpYWsgIDxtanNAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEdlb2ZmIGFuZCBEYXJpbi4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
cmVwbGFjZWQvbWF4aGVpZ2h0LXB4cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvcmVwbGFjZWQvbWF4aGVpZ2h0LXB4cy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9yZXBsYWNlZC9tYXhoZWlnaHQtcHhzLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTYgQEAKKzxodG1sPgorPGhlYWQ+CisgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlw
ZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKyAgPHRpdGxlPlRlc3Q8L3Rp
dGxlPgorICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgIC50ZXN0IHsgbWF4LWhlaWdodDog
NTBweDsgfQorICAgIC5jb250cm9sIHsgaGVpZ2h0OiA1MHB4OyB3aWR0aDogNTBweDsgfQorICA8
L3N0eWxlPgorICA8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL0NT
UzIxL3Zpc3VkZXQuaHRtbCNtaW4tbWF4LWhlaWdodHMiIHRpdGxlPSIxMC43IE1pbmltdW0gYW5k
IG1heGltdW0gaGVpZ2h0czogJmFwb3M7bWluLWhlaWdodCZhcG9zOyBhbmQgJmFwb3M7bWF4LWhl
aWdodCZhcG9zOyI+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPHA+SW4gdGhpcyB0ZXN0IHlvdSBzaG91
bGQgc2VlIHR3byBpZGVudGljYWwgYmx1ZSBzcXVhcmVzLCBlYWNoIDUwcHggYnkgNTBweC48L3A+
CisgIDxpbWcgc3JjPSJyZXNvdXJjZXMvc3F1YXJlLWJsdWUtMTAweDEwMC5wbmciIGFsdD0iRkFJ
TDogSW1hZ2Ugc3VwcG9ydCByZXF1aXJlZC4iIGNsYXNzPSJ0ZXN0Ij4KKyAgPGltZyBzcmM9InJl
c291cmNlcy9zcXVhcmUtYmx1ZS0xMDB4MTAwLnBuZyIgYWx0PSJGQUlMOiBJbWFnZSBzdXBwb3J0
IHJlcXVpcmVkLiIgY2xhc3M9ImNvbnRyb2wiPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9yZXBsYWNlZC9taW53aWR0aC1weHMuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L3JlcGxhY2VkL21pbndpZHRoLXB4cy5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9yZXBsYWNlZC9taW53aWR0aC1weHMuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxNiBAQAorPGh0bWw+Cis8aGVhZD4KKyAgPG1ldGEgaHR0cC1lcXVpdj0i
Y29udGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorICA8dGl0
bGU+VGVzdDwvdGl0bGU+CisgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisgICAgLnRlc3QgeyBt
aW4td2lkdGg6IDUwcHg7IH0KKyAgICAuY29udHJvbCB7IGhlaWdodDogNTBweDsgd2lkdGg6IDUw
cHg7IH0KKyAgPC9zdHlsZT4KKyAgPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3Lncz
Lm9yZy9UUi9DU1MyMS92aXN1ZGV0Lmh0bWwjbWluLW1heC13aWR0aHMiIHRpdGxlPSIxMC40IE1p
bmltdW0gYW5kIG1heGltdW0gd2lkdGhzOiAmYXBvczttaW4td2lkdGgmYXBvczsgYW5kICZhcG9z
O21heC13aWR0aCZhcG9zOyI+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPHA+SW4gdGhpcyB0ZXN0IHlv
dSBzaG91bGQgc2VlIHR3byBpZGVudGljYWwgYmx1ZSBzcXVhcmVzLCBlYWNoIDUwcHggYnkgNTBw
eC48L3A+CisgIDxpbWcgc3JjPSJyZXNvdXJjZXMvMXgxLWJsdWUucG5nIiBhbHQ9IkZBSUw6IElt
YWdlIHN1cHBvcnQgcmVxdWlyZWQuIiBjbGFzcz0idGVzdCI+CisgIDxpbWcgc3JjPSJyZXNvdXJj
ZXMvMXgxLWJsdWUucG5nIiBhbHQ9IkZBSUw6IEltYWdlIHN1cHBvcnQgcmVxdWlyZWQuIiBjbGFz
cz0iY29udHJvbCI+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Jl
cGxhY2VkL21heHdpZHRoLXB4cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
cmVwbGFjZWQvbWF4d2lkdGgtcHhzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L3JlcGxhY2VkL21heHdpZHRoLXB4cy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2
IEBACis8aHRtbD4KKzxoZWFkPgorICA8bWV0YSBodHRwLWVxdWl2PSJjb250ZW50LXR5cGUiIGNv
bnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+CisgIDx0aXRsZT5UZXN0PC90aXRsZT4K
KyAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyAgICAudGVzdCB7IG1heC13aWR0aDogNTBweDsg
fQorICAgIC5jb250cm9sIHsgaGVpZ2h0OiA1MHB4OyB3aWR0aDogNTBweDsgfQorICA8L3N0eWxl
PgorICA8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL3Zp
c3VkZXQuaHRtbCNtaW4tbWF4LXdpZHRocyIgdGl0bGU9IjEwLjQgTWluaW11bSBhbmQgbWF4aW11
bSB3aWR0aHM6ICZhcG9zO21pbi13aWR0aCZhcG9zOyBhbmQgJmFwb3M7bWF4LXdpZHRoJmFwb3M7
Ij4KKzwvaGVhZD4KKzxib2R5PgorICA8cD5JbiB0aGlzIHRlc3QgeW91IHNob3VsZCBzZWUgdHdv
IGlkZW50aWNhbCBibHVlIHNxdWFyZXMsIGVhY2ggNTBweCBieSA1MHB4LjwvcD4KKyAgPGltZyBz
cmM9InJlc291cmNlcy9zcXVhcmUtYmx1ZS0xMDB4MTAwLnBuZyIgYWx0PSJGQUlMOiBJbWFnZSBz
dXBwb3J0IHJlcXVpcmVkLiIgY2xhc3M9InRlc3QiPgorICA8aW1nIHNyYz0icmVzb3VyY2VzL3Nx
dWFyZS1ibHVlLTEwMHgxMDAucG5nIiBhbHQ9IkZBSUw6IEltYWdlIHN1cHBvcnQgcmVxdWlyZWQu
IiBjbGFzcz0iY29udHJvbCI+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L3JlcGxhY2VkL21heGhlaWdodC1wZXJjZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9yZXBsYWNlZC9tYXhoZWlnaHQtcGVyY2VudC5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9yZXBsYWNlZC9tYXhoZWlnaHQtcGVyY2VudC5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDIwIEBACis8aHRtbD4KKzxoZWFkPgorICA8bWV0YSBodHRwLWVx
dWl2PSJjb250ZW50LXR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cisg
IDx0aXRsZT5UZXN0PC90aXRsZT4KKyAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyAgICAub3V0
ZXIgeyBoZWlnaHQ6IDEwMHB4OyB9CisgICAgLnRlc3QgeyBtYXgtaGVpZ2h0OiA1MCU7IH0KKyAg
ICAuY29udHJvbCB7IGhlaWdodDogNTBweDsgd2lkdGg6IDUwcHg7IH0KKyAgPC9zdHlsZT4KKyAg
PGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9DU1MyMS92aXN1ZGV0
Lmh0bWwjbWluLW1heC1oZWlnaHRzIiB0aXRsZT0iMTAuNyBNaW5pbXVtIGFuZCBtYXhpbXVtIGhl
aWdodHM6ICZhcG9zO21pbi1oZWlnaHQmYXBvczsgYW5kICZhcG9zO21heC1oZWlnaHQmYXBvczsi
PgorPC9oZWFkPgorPGJvZHk+CisgIDxwPkluIHRoaXMgdGVzdCB5b3Ugc2hvdWxkIHNlZSB0d28g
aWRlbnRpY2FsIGJsdWUgc3F1YXJlcywgZWFjaCA1MHB4IGJ5IDUwcHguPC9wPgorICA8ZGl2IGNs
YXNzPSJvdXRlciI+CisgICAgPGltZyBzcmM9InJlc291cmNlcy9zcXVhcmUtYmx1ZS0xMDB4MTAw
LnBuZyIgYWx0PSJGQUlMOiBJbWFnZSBzdXBwb3J0IHJlcXVpcmVkLiIgY2xhc3M9InRlc3QiPgor
ICA8L2Rpdj4KKyAgPGJyPgorICA8aW1nIHNyYz0icmVzb3VyY2VzL3NxdWFyZS1ibHVlLTEwMHgx
MDAucG5nIiBhbHQ9IkZBSUw6IEltYWdlIHN1cHBvcnQgcmVxdWlyZWQuIiBjbGFzcz0iY29udHJv
bCI+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3JlcGxhY2VkL21p
bndpZHRoLXBlcmNlbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3JlcGxh
Y2VkL21pbndpZHRoLXBlcmNlbnQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zh
c3QvcmVwbGFjZWQvbWlud2lkdGgtcGVyY2VudC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDIwIEBACis8aHRtbD4KKzxoZWFkPgorICA8bWV0YSBodHRwLWVxdWl2PSJjb250ZW50LXR5cGUi
IGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+CisgIDx0aXRsZT5UZXN0PC90aXRs
ZT4KKyAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyAgICAub3V0ZXIgeyB3aWR0aDogMTAwcHg7
IH0KKyAgICAudGVzdCB7IG1pbi13aWR0aDogNTAlOyB9CisgICAgLmNvbnRyb2wgeyBoZWlnaHQ6
IDUwcHg7IHdpZHRoOiA1MHB4OyB9CisgIDwvc3R5bGU+CisgIDxsaW5rIHJlbD0iaGVscCIgaHJl
Zj0iaHR0cDovL3d3dy53My5vcmcvVFIvQ1NTMjEvdmlzdWRldC5odG1sI21pbi1tYXgtd2lkdGhz
IiB0aXRsZT0iMTAuNCBNaW5pbXVtIGFuZCBtYXhpbXVtIHdpZHRoczogJmFwb3M7bWluLXdpZHRo
JmFwb3M7IGFuZCAmYXBvczttYXgtd2lkdGgmYXBvczsiPgorPC9oZWFkPgorPGJvZHk+CisgIDxw
PkluIHRoaXMgdGVzdCB5b3Ugc2hvdWxkIHNlZSB0d28gaWRlbnRpY2FsIGJsdWUgc3F1YXJlcywg
ZWFjaCA1MHB4IGJ5IDUwcHguPC9wPgorICA8ZGl2IGNsYXNzPSJvdXRlciI+CisgICAgPGltZyBz
cmM9InJlc291cmNlcy8xeDEtYmx1ZS5wbmciIGFsdD0iRkFJTDogSW1hZ2Ugc3VwcG9ydCByZXF1
aXJlZC4iIGNsYXNzPSJ0ZXN0Ij4KKyAgPC9kaXY+CisgIDxicj4KKyAgPGltZyBzcmM9InJlc291
cmNlcy8xeDEtYmx1ZS5wbmciIGFsdD0iRkFJTDogSW1hZ2Ugc3VwcG9ydCByZXF1aXJlZC4iIGNs
YXNzPSJjb250cm9sIj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
cmVwbGFjZWQvbWF4d2lkdGgtcGVyY2VudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvcmVwbGFjZWQvbWF4d2lkdGgtcGVyY2VudC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9yZXBsYWNlZC9tYXh3aWR0aC1wZXJjZW50Lmh0bWwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMjAgQEAKKzxodG1sPgorPGhlYWQ+CisgIDxtZXRhIGh0dHAtZXF1aXY9ImNv
bnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKyAgPHRpdGxl
PlRlc3Q8L3RpdGxlPgorICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgIC5vdXRlciB7IHdp
ZHRoOiAxMDBweDsgfQorICAgIC50ZXN0IHsgbWF4LXdpZHRoOiA1MCU7IH0KKyAgICAuY29udHJv
bCB7IGhlaWdodDogNTBweDsgd2lkdGg6IDUwcHg7IH0KKyAgPC9zdHlsZT4KKyAgPGxpbmsgcmVs
PSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9DU1MyMS92aXN1ZGV0Lmh0bWwjbWlu
LW1heC13aWR0aHMiIHRpdGxlPSIxMC40IE1pbmltdW0gYW5kIG1heGltdW0gd2lkdGhzOiAmYXBv
czttaW4td2lkdGgmYXBvczsgYW5kICZhcG9zO21heC13aWR0aCZhcG9zOyI+Cis8L2hlYWQ+Cis8
Ym9keT4KKyAgPHA+SW4gdGhpcyB0ZXN0IHlvdSBzaG91bGQgc2VlIHR3byBpZGVudGljYWwgYmx1
ZSBzcXVhcmVzLCBlYWNoIDUwcHggYnkgNTBweC48L3A+CisgIDxkaXYgY2xhc3M9Im91dGVyIj4K
KyAgICA8aW1nIHNyYz0icmVzb3VyY2VzL3NxdWFyZS1ibHVlLTEwMHgxMDAucG5nIiBhbHQ9IkZB
SUw6IEltYWdlIHN1cHBvcnQgcmVxdWlyZWQuIiBjbGFzcz0idGVzdCI+CisgIDwvZGl2PgorICA8
YnI+CisgIDxpbWcgc3JjPSJyZXNvdXJjZXMvc3F1YXJlLWJsdWUtMTAweDEwMC5wbmciIGFsdD0i
RkFJTDogSW1hZ2Ugc3VwcG9ydCByZXF1aXJlZC4iIGNsYXNzPSJjb250cm9sIj4KKzwvYm9keT4K
KzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcmVwbGFjZWQvbWluaGVpZ2h0LXB4cy5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcmVwbGFjZWQvbWluaGVpZ2h0LXB4
cy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9yZXBsYWNlZC9taW5oZWln
aHQtcHhzLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTYgQEAKKzxodG1sPgorPGhlYWQ+
CisgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBj
aGFyc2V0PXV0Zi04Ij4KKyAgPHRpdGxlPlRlc3Q8L3RpdGxlPgorICA8c3R5bGUgdHlwZT0idGV4
dC9jc3MiPgorICAgIC50ZXN0IHsgbWluLWhlaWdodDogNTBweDsgfQorICAgIC5jb250cm9sIHsg
aGVpZ2h0OiA1MHB4OyB3aWR0aDogNTBweDsgfQorICA8L3N0eWxlPgorICA8bGluayByZWw9Imhl
bHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL3Zpc3VkZXQuaHRtbCNtaW4tbWF4
LWhlaWdodHMiIHRpdGxlPSIxMC43IE1pbmltdW0gYW5kIG1heGltdW0gaGVpZ2h0czogJmFwb3M7
bWluLWhlaWdodCZhcG9zOyBhbmQgJmFwb3M7bWF4LWhlaWdodCZhcG9zOyI+Cis8L2hlYWQ+Cis8
Ym9keT4KKyAgPHA+SW4gdGhpcyB0ZXN0IHlvdSBzaG91bGQgc2VlIHR3byBpZGVudGljYWwgYmx1
ZSBzcXVhcmVzLCBlYWNoIDUwcHggYnkgNTBweC48L3A+CisgIDxpbWcgc3JjPSJyZXNvdXJjZXMv
MXgxLWJsdWUucG5nIiBhbHQ9IkZBSUw6IEltYWdlIHN1cHBvcnQgcmVxdWlyZWQuIiBjbGFzcz0i
dGVzdCI+CisgIDxpbWcgc3JjPSJyZXNvdXJjZXMvMXgxLWJsdWUucG5nIiBhbHQ9IkZBSUw6IElt
YWdlIHN1cHBvcnQgcmVxdWlyZWQuIiBjbGFzcz0iY29udHJvbCI+Cis8L2JvZHk+Cis8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3JlcGxhY2VkL21pbmhlaWdodC1wZXJjZW50Lmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9yZXBsYWNlZC9taW5oZWlnaHQtcGVyY2Vu
dC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9yZXBsYWNlZC9taW5oZWln
aHQtcGVyY2VudC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIwIEBACis8aHRtbD4KKzxo
ZWFkPgorICA8bWV0YSBodHRwLWVxdWl2PSJjb250ZW50LXR5cGUiIGNvbnRlbnQ9InRleHQvaHRt
bDsgY2hhcnNldD11dGYtOCI+CisgIDx0aXRsZT5UZXN0PC90aXRsZT4KKyAgPHN0eWxlIHR5cGU9
InRleHQvY3NzIj4KKyAgICAub3V0ZXIgeyBoZWlnaHQ6IDEwMHB4OyB9CisgICAgLnRlc3QgeyBt
aW4taGVpZ2h0OiA1MCU7IH0KKyAgICAuY29udHJvbCB7IGhlaWdodDogNTBweDsgd2lkdGg6IDUw
cHg7IH0KKyAgPC9zdHlsZT4KKyAgPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3Lncz
Lm9yZy9UUi9DU1MyMS92aXN1ZGV0Lmh0bWwjbWluLW1heC1oZWlnaHRzIiB0aXRsZT0iMTAuNyBN
aW5pbXVtIGFuZCBtYXhpbXVtIGhlaWdodHM6ICZhcG9zO21pbi1oZWlnaHQmYXBvczsgYW5kICZh
cG9zO21heC1oZWlnaHQmYXBvczsiPgorPC9oZWFkPgorPGJvZHk+CisgIDxwPkluIHRoaXMgdGVz
dCB5b3Ugc2hvdWxkIHNlZSB0d28gaWRlbnRpY2FsIGJsdWUgc3F1YXJlcywgZWFjaCA1MHB4IGJ5
IDUwcHguPC9wPgorICA8ZGl2IGNsYXNzPSJvdXRlciI+CisgICAgPGltZyBzcmM9InJlc291cmNl
cy8xeDEtYmx1ZS5wbmciIGFsdD0iRkFJTDogSW1hZ2Ugc3VwcG9ydCByZXF1aXJlZC4iIGNsYXNz
PSJ0ZXN0Ij4KKyAgPC9kaXY+CisgIDxicj4KKyAgPGltZyBzcmM9InJlc291cmNlcy8xeDEtYmx1
ZS5wbmciIGFsdD0iRkFJTDogSW1hZ2Ugc3VwcG9ydCByZXF1aXJlZC4iIGNsYXNzPSJjb250cm9s
Ij4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcmVwbGFjZWQvcmVz
b3VyY2VzL3NxdWFyZS1ibHVlLTEwMHgxMDAucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6
IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBhcHBsaWNhdGlv
bi9vY3RldC1zdHJlYW0KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2Zhc3QvcmVw
bGFjZWQvcmVzb3VyY2VzL3NxdWFyZS1ibHVlLTEwMHgxMDAucG5nCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTog
c3ZuOm1pbWUtdHlwZQogICArIGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQoKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvcmVwbGFjZWQvcmVzb3VyY2VzLzF4MS1ibHVlLnBuZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNh
bm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBl
ID0gYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRU
ZXN0cy9mYXN0L3JlcGxhY2VkL3Jlc291cmNlcy8xeDEtYmx1ZS5wbmcKX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1l
OiBzdm46bWltZS10eXBlCiAgICsgYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCgpJbmRleDogV2Vi
Q29yZS9yZW5kZXJpbmcvcmVuZGVyX2ltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5k
ZXJpbmcvcmVuZGVyX2ltYWdlLmgJKHJldmlzaW9uIDEyOTIyKQorKysgV2ViQ29yZS9yZW5kZXJp
bmcvcmVuZGVyX2ltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMsNiArMyw4IEBACiAgKgogICog
Q29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAg
ICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCisgKiAgICAgICAg
ICAgKEMpIDIwMDYgQWxsYW4gU2FuZGZlbGQgSmVuc2VuIChrZGVAY2FyZXdvbGYuY29tKSAKKyAq
ICAgICAgICAgICAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIChzYW0ud2VpbmlnQGdtYWlsLmNvbSkK
ICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLgog
ICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKQEAgLTcwLDYgKzcyLDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGludCBj
YWxjUmVwbGFjZWRXaWR0aCgpIGNvbnN0OwogICAgIHZpcnR1YWwgaW50IGNhbGNSZXBsYWNlZEhl
aWdodCgpIGNvbnN0OwogCisgICAgaW50IGNhbGNBc3BlY3RSYXRpb1dpZHRoKCkgY29uc3Q7Cisg
ICAgaW50IGNhbGNBc3BlY3RSYXRpb0hlaWdodCgpIGNvbnN0OworCisgICAgdmlydHVhbCB2b2lk
IGNhbGNNaW5NYXhXaWR0aCgpOworCiAgICAgLy8gQ2FsbGVkIHRvIHNldCBnZW5lcmF0ZWQgY29u
dGVudCBpbWFnZXMgKGUuZy4sIDpiZWZvcmUvOmFmdGVyIGdlbmVyYXRlZCBpbWFnZXMpLgogICAg
IHZvaWQgc2V0Q29udGVudE9iamVjdChDYWNoZWRPYmplY3QqKTsKICAgICAKSW5kZXg6IFdlYkNv
cmUvcmVuZGVyaW5nL3JlbmRlcl9ib3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVy
aW5nL3JlbmRlcl9ib3guY3BwCShyZXZpc2lvbiAxMjkyMikKKysrIFdlYkNvcmUvcmVuZGVyaW5n
L3JlbmRlcl9ib3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjU5LDEwICsxMjU5LDcgQEAgaW50
IFJlbmRlckJveDo6Y2FsY1JlcGxhY2VkV2lkdGgoKSBjb25zdAogICAgIGludCBtaW5XID0gY2Fs
Y1JlcGxhY2VkV2lkdGhVc2luZyhNaW5XaWR0aCk7CiAgICAgaW50IG1heFcgPSBzdHlsZSgpLT5t
YXhXaWR0aCgpLnZhbHVlID09IFVOREVGSU5FRCA/IHdpZHRoIDogY2FsY1JlcGxhY2VkV2lkdGhV
c2luZyhNYXhXaWR0aCk7CiAKLSAgICB3aWR0aCA9IGtNaW4od2lkdGgsIG1heFcpOwotICAgIHdp
ZHRoID0ga01heCh3aWR0aCwgbWluVyk7Ci0KLSAgICByZXR1cm4gd2lkdGg7CisgICAgcmV0dXJu
IGtNYXgobWluVywga01pbih3aWR0aCwgbWF4VykpOwogfQogCiBpbnQgUmVuZGVyQm94OjpjYWxj
UmVwbGFjZWRXaWR0aFVzaW5nKFdpZHRoVHlwZSB3aWR0aFR5cGUpIGNvbnN0CkBAIC0xMjc2LDE2
ICsxMjczLDE2IEBAIGludCBSZW5kZXJCb3g6OmNhbGNSZXBsYWNlZFdpZHRoVXNpbmcoV2kKICAg
ICAgICAgdyA9IHN0eWxlKCktPm1heFdpZHRoKCk7CiAgICAgCiAgICAgc3dpdGNoICh3LnR5cGUp
IHsKLSAgICBjYXNlIEZpeGVkOgotICAgICAgICByZXR1cm4gY2FsY0NvbnRlbnRCb3hXaWR0aCh3
LnZhbHVlKTsKLSAgICBjYXNlIFBlcmNlbnQ6IHsKLSAgICAgICAgY29uc3QgaW50IGN3ID0gY29u
dGFpbmluZ0Jsb2NrV2lkdGgoKTsKLSAgICAgICAgaWYgKGN3ID4gMCkKLSAgICAgICAgICAgIHJl
dHVybiBjYWxjQ29udGVudEJveFdpZHRoKHcubWluV2lkdGgoY3cpKTsKLSAgICB9Ci0gICAgLy8g
ZmFsbCB0aHJvdWdoCi0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGludHJpbnNpY1dpZHRo
KCk7CisgICAgICAgIGNhc2UgRml4ZWQ6CisgICAgICAgICAgICByZXR1cm4gY2FsY0NvbnRlbnRC
b3hXaWR0aCh3LnZhbHVlKTsKKyAgICAgICAgY2FzZSBQZXJjZW50OiB7CisgICAgICAgICAgICBj
b25zdCBpbnQgY3cgPSBjb250YWluaW5nQmxvY2tXaWR0aCgpOworICAgICAgICAgICAgaWYgKGN3
ID4gMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FsY0NvbnRlbnRCb3hXaWR0aCh3Lm1pbldp
ZHRoKGN3KSk7CisgICAgICAgIH0KKyAgICAgICAgLy8gZmFsbCB0aHJvdWdoCisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gaW50cmluc2ljV2lkdGgoKTsKICAgICB9CiB9CiAK
QEAgLTEyOTUsMTMgKzEyOTIsNyBAQCBpbnQgUmVuZGVyQm94OjpjYWxjUmVwbGFjZWRIZWlnaHQo
KSBjb25zCiAgICAgaW50IG1pbkggPSBjYWxjUmVwbGFjZWRIZWlnaHRVc2luZyhNaW5IZWlnaHQp
OwogICAgIGludCBtYXhIID0gc3R5bGUoKS0+bWF4SGVpZ2h0KCkudmFsdWUgPT0gVU5ERUZJTkVE
ID8gaGVpZ2h0IDogY2FsY1JlcGxhY2VkSGVpZ2h0VXNpbmcoTWF4SGVpZ2h0KTsKIAotICAgIGlm
IChoZWlnaHQgPiBtYXhIKQotICAgICAgICBoZWlnaHQgPSBtYXhIOwotCi0gICAgaWYgKGhlaWdo
dCA8IG1pbkgpCi0gICAgICAgIGhlaWdodCA9IG1pbkg7Ci0KLSAgICByZXR1cm4gaGVpZ2h0Owor
ICAgIHJldHVybiBrTWF4KG1pbkgsIGtNaW4oaGVpZ2h0LCBtYXhIKSk7CiB9CiAKIGludCBSZW5k
ZXJCb3g6OmNhbGNSZXBsYWNlZEhlaWdodFVzaW5nKEhlaWdodFR5cGUgaGVpZ2h0VHlwZSkgY29u
c3QKQEAgLTEzMTMsMTQgKzEzMDQsMTUgQEAgaW50IFJlbmRlckJveDo6Y2FsY1JlcGxhY2VkSGVp
Z2h0VXNpbmcoSAogICAgICAgICBoID0gc3R5bGUoKS0+bWluSGVpZ2h0KCk7CiAgICAgZWxzZQog
ICAgICAgICBoID0gc3R5bGUoKS0+bWF4SGVpZ2h0KCk7Ci0gICAgc3dpdGNoKCBoLnR5cGUgKSB7
Ci0gICAgY2FzZSBQZXJjZW50OgotICAgICAgICByZXR1cm4gYXZhaWxhYmxlSGVpZ2h0VXNpbmco
aCk7Ci0gICAgY2FzZSBGaXhlZDoKLSAgICAgICAgcmV0dXJuIGNhbGNDb250ZW50Qm94SGVpZ2h0
KGgudmFsdWUpOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBpbnRyaW5zaWNIZWlnaHQo
KTsKLSAgICB9OworCisgICAgc3dpdGNoIChoLnR5cGUpIHsKKyAgICAgICAgY2FzZSBGaXhlZDoK
KyAgICAgICAgICAgIHJldHVybiBjYWxjQ29udGVudEJveEhlaWdodChoLnZhbHVlKTsKKyAgICAg
ICAgY2FzZSBQZXJjZW50OgorICAgICAgICAgICAgcmV0dXJuIGNhbGNDb250ZW50Qm94SGVpZ2h0
KGgud2lkdGgoY29udGFpbmluZ0Jsb2NrKCktPmF2YWlsYWJsZUhlaWdodCgpKSk7CisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gaW50cmluc2ljSGVpZ2h0KCk7CisgICAgfQog
fQogCiBpbnQgUmVuZGVyQm94OjphdmFpbGFibGVIZWlnaHQoKSBjb25zdApJbmRleDogV2ViQ29y
ZS9yZW5kZXJpbmcvcmVuZGVyX2ltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRl
cmluZy9yZW5kZXJfaW1hZ2UuY3BwCShyZXZpc2lvbiAxMjkyMikKKysrIFdlYkNvcmUvcmVuZGVy
aW5nL3JlbmRlcl9pbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQsNiArNCw4IEBACiAgKiBD
b3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAg
ICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAg
ICAoQykgMjAwMCBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKKyAqICAgICAgICAgICAo
QykgMjAwNiBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gKGtkZUBjYXJld29sZi5jb20pCisgKiAgICAg
ICAgICAgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyAoc2FtLndlaW5pZ0BnbWFpbC5jb20pCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4K
ICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCkBAIC0zNTgsMjggKzM2MCw2NCBAQCBib29sIFJlbmRlckltYWdlOjppc0hl
aWdodFNwZWNpZmllZCgpIGNvCiAKIGludCBSZW5kZXJJbWFnZTo6Y2FsY1JlcGxhY2VkV2lkdGgo
KSBjb25zdAogewotICAgIC8vIElmIGhlaWdodCBpcyBzcGVjaWZpZWQgYW5kIG5vdCB3aWR0aCwg
cHJlc2VydmUgYXNwZWN0IHJhdGlvLgotICAgIGlmIChpc0hlaWdodFNwZWNpZmllZCgpICYmICFp
c1dpZHRoU3BlY2lmaWVkKCkpIHsKLSAgICAgICAgaWYgKGludHJpbnNpY0hlaWdodCgpID09IDAp
Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgaWYgKCFtX2NhY2hlZEltYWdlIHx8IG1f
Y2FjaGVkSW1hZ2UtPmlzRXJyb3JJbWFnZSgpKQotICAgICAgICAgICAgcmV0dXJuIGludHJpbnNp
Y1dpZHRoKCk7IC8vIERvbid0IGJvdGhlciBzY2FsaW5nLgotICAgICAgICByZXR1cm4gY2FsY1Jl
cGxhY2VkSGVpZ2h0KCkgKiBpbnRyaW5zaWNXaWR0aCgpIC8gaW50cmluc2ljSGVpZ2h0KCk7Ci0g
ICAgfQotICAgIHJldHVybiBSZW5kZXJSZXBsYWNlZDo6Y2FsY1JlcGxhY2VkV2lkdGgoKTsKKyAg
ICBpbnQgd2lkdGg7CisgICAgaWYgKGlzV2lkdGhTcGVjaWZpZWQoKSkKKyAgICAgICAgd2lkdGgg
PSBjYWxjUmVwbGFjZWRXaWR0aFVzaW5nKFdpZHRoKTsKKyAgICBlbHNlCisgICAgICAgIHdpZHRo
ID0gY2FsY0FzcGVjdFJhdGlvV2lkdGgoKTsKKworICAgIGludCBtaW5XID0gY2FsY1JlcGxhY2Vk
V2lkdGhVc2luZyhNaW5XaWR0aCk7CisgICAgaW50IG1heFcgPSBzdHlsZSgpLT5tYXhXaWR0aCgp
Lmxlbmd0aCgpID09IFVOREVGSU5FRCA/IHdpZHRoIDogY2FsY1JlcGxhY2VkV2lkdGhVc2luZyhN
YXhXaWR0aCk7CisKKyAgICByZXR1cm4ga01heChtaW5XLCBrTWluKHdpZHRoLCBtYXhXKSk7CiB9
CiAKIGludCBSZW5kZXJJbWFnZTo6Y2FsY1JlcGxhY2VkSGVpZ2h0KCkgY29uc3QKIHsKLSAgICAv
LyBJZiB3aWR0aCBpcyBzcGVjaWZpZWQgYW5kIG5vdCBoZWlnaHQsIHByZXNlcnZlIGFzcGVjdCBy
YXRpby4KLSAgICBpZiAoaXNXaWR0aFNwZWNpZmllZCgpICYmICFpc0hlaWdodFNwZWNpZmllZCgp
KSB7Ci0gICAgICAgIGlmIChpbnRyaW5zaWNXaWR0aCgpID09IDApCi0gICAgICAgICAgICByZXR1
cm4gMDsKLSAgICAgICAgaWYgKCFtX2NhY2hlZEltYWdlIHx8IG1fY2FjaGVkSW1hZ2UtPmlzRXJy
b3JJbWFnZSgpKQotICAgICAgICAgICAgcmV0dXJuIGludHJpbnNpY0hlaWdodCgpOyAvLyBEb24n
dCBib3RoZXIgc2NhbGluZy4KLSAgICAgICAgcmV0dXJuIGNhbGNSZXBsYWNlZFdpZHRoKCkgKiBp
bnRyaW5zaWNIZWlnaHQoKSAvIGludHJpbnNpY1dpZHRoKCk7Ci0gICAgfQotICAgIHJldHVybiBS
ZW5kZXJSZXBsYWNlZDo6Y2FsY1JlcGxhY2VkSGVpZ2h0KCk7CisgICAgaW50IGhlaWdodDsKKyAg
ICBpZiAoaXNIZWlnaHRTcGVjaWZpZWQoKSkKKyAgICAgICAgaGVpZ2h0ID0gY2FsY1JlcGxhY2Vk
SGVpZ2h0VXNpbmcoSGVpZ2h0KTsKKyAgICBlbHNlCisgICAgICAgIGhlaWdodCA9IGNhbGNBc3Bl
Y3RSYXRpb0hlaWdodCgpOworCisgICAgaW50IG1pbkggPSBjYWxjUmVwbGFjZWRIZWlnaHRVc2lu
ZyhNaW5IZWlnaHQpOworICAgIGludCBtYXhIID0gc3R5bGUoKS0+bWF4SGVpZ2h0KCkubGVuZ3Ro
KCkgPT0gVU5ERUZJTkVEID8gaGVpZ2h0IDogY2FsY1JlcGxhY2VkSGVpZ2h0VXNpbmcoTWF4SGVp
Z2h0KTsKKworICAgIHJldHVybiBrTWF4KG1pbkgsIGtNaW4oaGVpZ2h0LCBtYXhIKSk7Cit9CisK
K2ludCBSZW5kZXJJbWFnZTo6Y2FsY0FzcGVjdFJhdGlvV2lkdGgoKSBjb25zdAoreworICAgIGlm
ICghaW50cmluc2ljSGVpZ2h0KCkpCisgICAgICAgIHJldHVybiAwOworICAgIGlmICghbV9jYWNo
ZWRJbWFnZSB8fCBtX2NhY2hlZEltYWdlLT5pc0Vycm9ySW1hZ2UoKSkKKyAgICAgICAgcmV0dXJu
IGludHJpbnNpY1dpZHRoKCk7IC8vIERvbid0IGJvdGhlciBzY2FsaW5nLgorICAgIHJldHVybiBS
ZW5kZXJSZXBsYWNlZDo6Y2FsY1JlcGxhY2VkSGVpZ2h0KCkgKiBpbnRyaW5zaWNXaWR0aCgpIC8g
aW50cmluc2ljSGVpZ2h0KCk7Cit9CisKK2ludCBSZW5kZXJJbWFnZTo6Y2FsY0FzcGVjdFJhdGlv
SGVpZ2h0KCkgY29uc3QKK3sKKyAgICBpZiAoIWludHJpbnNpY1dpZHRoKCkpCisgICAgICAgIHJl
dHVybiAwOworICAgIGlmICghbV9jYWNoZWRJbWFnZSB8fCBtX2NhY2hlZEltYWdlLT5pc0Vycm9y
SW1hZ2UoKSkKKyAgICAgICAgcmV0dXJuIGludHJpbnNpY0hlaWdodCgpOyAvLyBEb24ndCBib3Ro
ZXIgc2NhbGluZy4KKyAgICByZXR1cm4gUmVuZGVyUmVwbGFjZWQ6OmNhbGNSZXBsYWNlZFdpZHRo
KCkgKiBpbnRyaW5zaWNIZWlnaHQoKSAvIGludHJpbnNpY1dpZHRoKCk7Cit9CisKK3ZvaWQgUmVu
ZGVySW1hZ2U6OmNhbGNNaW5NYXhXaWR0aCgpCit7CisgICAgQVNTRVJUKCFtaW5NYXhLbm93bigp
KTsKKworICAgIG1fbWF4V2lkdGggPSBjYWxjUmVwbGFjZWRXaWR0aCgpICsgcGFkZGluZ0xlZnQo
KSArIHBhZGRpbmdSaWdodCgpICsgYm9yZGVyTGVmdCgpICsgYm9yZGVyUmlnaHQoKTsKKworICAg
IGlmIChzdHlsZSgpLT53aWR0aCgpLmlzUGVyY2VudCgpIHx8IHN0eWxlKCktPmhlaWdodCgpLmlz
UGVyY2VudCgpIHx8IAorICAgICAgICBzdHlsZSgpLT5tYXhXaWR0aCgpLmlzUGVyY2VudCgpIHx8
IHN0eWxlKCktPm1heEhlaWdodCgpLmlzUGVyY2VudCgpIHx8CisgICAgICAgIHN0eWxlKCktPm1p
bldpZHRoKCkuaXNQZXJjZW50KCkgfHwgc3R5bGUoKS0+bWluSGVpZ2h0KCkuaXNQZXJjZW50KCkp
CisgICAgICAgIG1fbWluV2lkdGggPSAwOworICAgIGVsc2UKKyAgICAgICAgbV9taW5XaWR0aCA9
IG1fbWF4V2lkdGg7CisKKyAgICBzZXRNaW5NYXhLbm93bigpOwogfQogCiBJbWFnZSogUmVuZGVy
SW1hZ2U6Om51bGxJbWFnZSgpCkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTI5MjIpCisrKyBXZWJDb3JlL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDA2LTAyLTIxICBTYW0gV2Vpbmln
ICA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgLSBmaXggaHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3No
b3dfYnVnLmNnaT9pZD01MTQ2CisgICAgICAgICAgbWF4LWhlaWdodC9tYXgtd2lkdGggbm90IHJl
c2l6aW5nIGltYWdlcyB3aXRoIGNvcnJlY3QgYXNwZWN0IHJhdGlvCisKKyAgICAgICAgVGhpcyBw
YXRjaCBpcyBhIHBvcnQgYW5kIGFkYXB0YXRpb24gb2YgQWxsYW4gU2FuZGZlbGQgSmVuc2VuJ3Mg
KGNhcmV3b2xmKQorICAgICAgICBwYXRjaCBvZiBodHRwOi8vYnVncy5rZGUub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMjAxMDcgd2l0aCB0aGUgbmVlZGVkCisgICAgICAgIG1vZGlmaWNhdGlvbnMgdG8g
c3VpdCB0aGUgV2ViY29yZSB0cmVlLiAgTWFrZXMgaW1hZ2VzIHJlc3BlY3QgbWluL21heCAKKyAg
ICAgICAgc2l6ZXMgYW5kIHRoZWlyIGludHJpbnNpYyBhc3BlY3QgcmF0aW9zIGF0IHRoZSBzYW1l
IHRpbWUgYWNjb3JkaW5nIHRvIAorICAgICAgICBDU1MgMi4xIChodHRwOi8vd3d3LnczLm9yZy9U
Ui9DU1MyMS92aXN1ZGV0Lmh0bWwjbWluLW1heC13aWR0aHMpLiAgCisKKyAgICAgICAgVGVzdDog
ZmFzdC9yZXBsYWNlZC9tYXhoZWlnaHQtcGVyY2VudC5odG1sCisgICAgICAgIFRlc3Q6IGZhc3Qv
cmVwbGFjZWQvbWF4aGVpZ2h0LXB4cy5odG1sCisgICAgICAgIFRlc3Q6IGZhc3QvcmVwbGFjZWQv
bWF4d2lkdGgtcGVyY2VudC5odG1sCisgICAgICAgIFRlc3Q6IGZhc3QvcmVwbGFjZWQvbWF4d2lk
dGgtcHhzLmh0bWwKKyAgICAgICAgVGVzdDogZmFzdC9yZXBsYWNlZC9taW5oZWlnaHQtcGVyY2Vu
dC5odG1sCisgICAgICAgIFRlc3Q6IGZhc3QvcmVwbGFjZWQvbWluaGVpZ2h0LXB4cy5odG1sCisg
ICAgICAgIFRlc3Q6IGZhc3QvcmVwbGFjZWQvbWlud2lkdGgtcGVyY2VudC5odG1sCisgICAgICAg
IFRlc3Q6IGZhc3QvcmVwbGFjZWQvbWlud2lkdGgtcHhzLmh0bWwKKworICAgICAgICAqIHJlbmRl
cmluZy9yZW5kZXJfYm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y2FsY1Jl
cGxhY2VkV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpjYWxjUmVwbGFjZWRX
aWR0aFVzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y2FsY1JlcGxhY2VkSGVp
Z2h0KTogCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNhbGNSZXBsYWNlZEhlaWdodFVz
aW5nKTogQ2FsY3VsYXRlIHBlcmNlbnQgaGVpZ2h0cyBjb3JyZWN0bHkKKyAgICAgICAgKiByZW5k
ZXJpbmcvcmVuZGVyX2ltYWdlLmNwcDogUmVzcGVjdCBhc3BlY3QgcmF0aW9zIGFuZCBjYWxjdWxh
dGUgbWF4L21pbgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmNhbGNSZXBsYWNlZFdp
ZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpjYWxjUmVwbGFjZWRIZWlnaHQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmNhbGNBc3BlY3RSYXRpb1dpZHRoKTog
QWRkZWQKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpjYWxjQXNwZWN0UmF0aW9IZWln
aHQpOiBBZGRlZAorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OmNhbGNNaW5NYXhXaWR0
aCk6IEFkZGVkCisgICAgICAgICogcmVuZGVyaW5nL3JlbmRlcl9pbWFnZS5oOgorCiAyMDA2LTAy
LTIxICBNYWNpZWogU3RhY2hvd2lhayAgPG1qc0BhcHBsZS5jb20+CiAKICAgICAgICAgUnViYmVy
IFN0YW1wZWQgYnkgSHlhdHQuCg==
</data>
<flag name="review"
          id="1667"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>