<?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>103327</bug_id>
          
          <creation_ts>2012-11-26 17:10:50 -0800</creation_ts>
          <short_desc>[CSS Exclusions] Add support for computing the first included interval position.</short_desc>
          <delta_ts>2012-12-17 10:58:08 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>103939</dependson>
    
    <dependson>104351</dependson>
          <blocked>96813</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hans Muller">giles_joplin</reporter>
          <assigned_to name="Hans Muller">giles_joplin</assigned_to>
          <cc>betravis</cc>
    
    <cc>eric</cc>
    
    <cc>jbadics</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>776097</commentid>
    <comment_count>0</comment_count>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2012-11-26 17:10:50 -0800</bug_when>
    <thetext>The first step towards completing the patch for https://bugs.webkit.org/show_bug.cgi?id=96813 is to add a ExclusionShape method for finding the first included interval position, create stub implementations, and then use it in RenderBlockLineLayout::layoutRunsAndFloatsInRange().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776113</commentid>
    <comment_count>1</comment_count>
      <attachid>176122</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2012-11-26 17:22:59 -0800</bug_when>
    <thetext>Created attachment 176122
Patch

Added ExclusionShape::firstIncludedIntervalPosition(float minLogicalIntervalTop, const FloatSize&amp; minLogicalIntervalSize, FloatPoint&amp; result)

The new virtual method computes the topmost/leftmost location where an line segment with the specified minLogicalIntervalSize will fit within the exclusion shape.  The result is additionally constrained to be at or below minLogicalIntervalTop.  If the segment will not fit anywhere within the shape, then false is returned.

During layout, minLogicalIntervalTop is the nominal top of the line being laid out within the exclusion shape. 

Currently the implementations of firstIncludedIntervalPosition() are stubs which behave in the same way as the current excluions implementation.  If a segment of minLogicalIntervalSize will fit within the shape&apos;s logical bounding box, then the returned point&apos;s Y coordinate is just minLogicalIntervalTop.

This patch also includes one minor cleanup: the protected ExclusionShape inlines, like minYForLogicalLine(), now use isFlippedBlocksWritingMode() instead of testing for RightToLeftWritingMode directly.  This changeimproves consistency with the rest of WebKit and will work correctly if &quot;horizontal-bt&quot; writing-mode support is ever added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776117</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-26 17:24:59 -0800</bug_when>
    <thetext>Attachment 176122 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/rendering/ExclusionPolygon....&quot; exit_code: 1
Source/WebCore/rendering/ExclusionShapeInsideInfo.h:60:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/rendering/RenderBlockLineLayout.cpp:1453:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 2 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776121</commentid>
    <comment_count>3</comment_count>
      <attachid>176125</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2012-11-26 17:27:07 -0800</bug_when>
    <thetext>Created attachment 176125
Patch

Fixed a whitespace-o.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776122</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-26 17:29:43 -0800</bug_when>
    <thetext>Attachment 176125 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/rendering/ExclusionPolygon....&quot; exit_code: 1
Source/WebCore/rendering/RenderBlockLineLayout.cpp:1453:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 1 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776123</commentid>
    <comment_count>5</comment_count>
      <attachid>176126</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2012-11-26 17:29:49 -0800</bug_when>
    <thetext>Created attachment 176126
Patch

Removed extraneous braces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776281</commentid>
    <comment_count>6</comment_count>
      <attachid>176126</attachid>
    <who name="Bem Jones-Bey">bjonesbe</who>
    <bug_when>2012-11-26 21:06:23 -0800</bug_when>
    <thetext>Comment on attachment 176126
Patch

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

&gt; Source/WebCore/rendering/ExclusionPolygon.cpp:381
&gt; +    // FIXME: This is just a stub, it will be replaced: TBD BUGID.

The BugID is still missing.

&gt; Source/WebCore/rendering/ExclusionRectangle.cpp:118
&gt; +bool ExclusionRectangle::firstIncludedIntervalPosition(float minLogicalIntervalTop, const FloatSize&amp; minLogicalIntervalSize, FloatPoint&amp; result) const

The logic in this method is identical to that in ExclusionPolygon::firstIncludedIntervalPosition. Since it&apos;s already virtual, can we move it to ExclusionShape and have it call methods to get x, y, and maxY?

&gt; Source/WebCore/rendering/ExclusionRectangle.cpp:120
&gt; +    // FIXME: This is just a stub, it will be replaced: TBD BUGID.

The BugID is still missing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776866</commentid>
    <comment_count>7</comment_count>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2012-11-27 09:35:48 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 176126 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=176126&amp;action=review

&gt; &gt; Source/WebCore/rendering/ExclusionRectangle.cpp:118
&gt; &gt; +bool ExclusionRectangle::firstIncludedIntervalPosition(float minLogicalIntervalTop, const FloatSize&amp; minLogicalIntervalSize, FloatPoint&amp; result) const
&gt; 
&gt; The logic in this method is identical to that in ExclusionPolygon::firstIncludedIntervalPosition. Since it&apos;s already virtual, can we move it to ExclusionShape and have it call methods to get x, y, and maxY?

Refactoring a temporary stub and adding ephemeral structure doesn&apos;t seem like a good idea to me.

&gt; &gt; Source/WebCore/rendering/ExclusionRectangle.cpp:120
&gt; &gt; +    // FIXME: This is just a stub, it will be replaced: TBD BUGID.
&gt; 
&gt; The BugID is still missing.

I&apos;ve added the BugIDs:

https://bugs.webkit.org/show_bug.cgi?id=103427
https://bugs.webkit.org/show_bug.cgi?id=103429</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776968</commentid>
    <comment_count>8</comment_count>
      <attachid>176300</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2012-11-27 10:45:43 -0800</bug_when>
    <thetext>Created attachment 176300
Patch

Fixed FIXMEs, added a ChangeLog entry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776986</commentid>
    <comment_count>9</comment_count>
      <attachid>176300</attachid>
    <who name="Bear Travis">betravis</who>
    <bug_when>2012-11-27 11:00:21 -0800</bug_when>
    <thetext>Comment on attachment 176300
Patch

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

&gt; Source/WebCore/rendering/ExclusionShape.h:75
&gt; +    float minYForLogicalLine(float logicalTop, float logicalHeight) const { return isFlippedBlocksWritingMode(m_writingMode) ? m_logicalBoxHeight - logicalTop - logicalHeight : logicalTop; }
&gt; +    float maxYForLogicalLine(float logicalTop, float logicalHeight) const { return  isFlippedBlocksWritingMode(m_writingMode) ? m_logicalBoxHeight - logicalTop : logicalTop + logicalHeight; }
&gt; +    FloatRect internalToLogicalBoundingBox(const FloatRect&amp; r) const { return isFlippedBlocksWritingMode(m_writingMode) ? FloatRect(r.x(), m_logicalBoxHeight - r.maxY(), r.width(), r.height()) : r; }

Should these be in a separate patch, as they will require test case cleanup?

&gt; Source/WebCore/rendering/ExclusionShapeInsideInfo.cpp:128
&gt; +        LayoutUnit newLineTop = LayoutUnit::fromFloatCeil(intervalPosition.y());

It seems like we have a general problem of correctly transforming to &amp; from floats. Should we have another bug to factor out some helper methods?

&gt; Source/WebCore/rendering/ExclusionShapeInsideInfo.cpp:131
&gt; +        return true;

I think this can be simplified to return true only when the line changes.

&gt; Source/WebCore/rendering/RenderBlockLineLayout.cpp:1452
&gt; +        if (exclusionShapeInsideInfo &amp;&amp; wordMeasurements.size() &gt; 0 &amp;&amp; exclusionShapeInsideInfo-&gt;adjustSegmentsForLine(wordMeasurements[0].width))
&gt; +            setLogicalHeight(exclusionShapeInsideInfo-&gt;lineLogicalTop() - absoluteLogicalTop);

After making this adjustment, you will need to reset &amp; re-run nextLineBreak, as there may be room for additional text. You can see paginated layout doing something similar below this in layoutRunsAndFloatsInRange, so we may want to follow that example (they are slightly different, so it isn&apos;t a copy-paste).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776997</commentid>
    <comment_count>10</comment_count>
    <who name="Bear Travis">betravis</who>
    <bug_when>2012-11-27 11:12:08 -0800</bug_when>
    <thetext>A general, high level comment. I think this patch may be hard to review because there isn&apos;t anything to test, especially since it is modifying layout code.

I know bug 103427 separately logs fixing first-fit for rounded rectangles, but would it be possible to combine these two, such that fixing the rounded rectangle case adds a simple stub for polygon?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777027</commentid>
    <comment_count>11</comment_count>
      <attachid>176300</attachid>
    <who name="Bear Travis">betravis</who>
    <bug_when>2012-11-27 11:31:12 -0800</bug_when>
    <thetext>Comment on attachment 176300
Patch

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

&gt;&gt; Source/WebCore/rendering/ExclusionShape.h:75
&gt;&gt; +    FloatRect internalToLogicalBoundingBox(const FloatRect&amp; r) const { return isFlippedBlocksWritingMode(m_writingMode) ? FloatRect(r.x(), m_logicalBoxHeight - r.maxY(), r.width(), r.height()) : r; }
&gt; 
&gt; Should these be in a separate patch, as they will require test case cleanup?

You can ignore my comment on these lines, I just confused this with a previous modification.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777124</commentid>
    <comment_count>12</comment_count>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2012-11-27 12:40:12 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; A general, high level comment. I think this patch may be hard to review because there isn&apos;t anything to test, especially since it is modifying layout code.
&gt; 
&gt; I know bug 103427 separately logs fixing first-fit for rounded rectangles, but would it be possible to combine these two, such that fixing the rounded rectangle case adds a simple stub for polygon?

Doing so will grow the patch quite a bit, but I agree that it&apos;s probably necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777285</commentid>
    <comment_count>13</comment_count>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2012-11-27 15:51:35 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 176300 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=176300&amp;action=review

&gt; &gt; Source/WebCore/rendering/ExclusionShapeInsideInfo.cpp:128
&gt; &gt; +        LayoutUnit newLineTop = LayoutUnit::fromFloatCeil(intervalPosition.y());
&gt; 
&gt; It seems like we have a general problem of correctly transforming to &amp; from floats. Should we have another bug to factor out some helper methods?

I&apos;ve filed [CSS Exclusions] Add helper functions for converting floats to LayoutUnits - https://bugs.webkit.org/show_bug.cgi?id=103450
&gt; 
&gt; &gt; Source/WebCore/rendering/ExclusionShapeInsideInfo.cpp:131
&gt; &gt; +        return true;
&gt; 
&gt; I think this can be simplified to return true only when the line changes.

Yes.   In fact, since I&apos;m going to restart the &apos;while (!end.atEnd())&apos; loop in this case, a call to computeSegmentsForLine() will happen anyway, so doing as much in adjustSegmentsForLine() isn&apos;t necessary.  Which makes adjustSegmentsForLine() a misnomer.  I&apos;ve changed the name to adjustLineLogicalTop().

&gt; 
&gt; &gt; Source/WebCore/rendering/RenderBlockLineLayout.cpp:1452
&gt; &gt; +        if (exclusionShapeInsideInfo &amp;&amp; wordMeasurements.size() &gt; 0 &amp;&amp; exclusionShapeInsideInfo-&gt;adjustSegmentsForLine(wordMeasurements[0].width))
&gt; &gt; +            setLogicalHeight(exclusionShapeInsideInfo-&gt;lineLogicalTop() - absoluteLogicalTop);
&gt; 
&gt; After making this adjustment, you will need to reset &amp; re-run nextLineBreak, as there may be room for additional text. You can see paginated layout doing something similar below this in layoutRunsAndFloatsInRange, so we may want to follow that example (they are slightly different, so it isn&apos;t a copy-paste).

The exclusions contribution to this loop is now:

        if (exclusionShapeInsideInfo &amp;&amp; wordMeasurements.size() &amp;&amp; exclusionShapeInsideInfo-&gt;adjustLogicalLineTop(wordMeasurements[0].width)) {
            removeFloatingObjectsBelow(lastFloatFromPreviousLine, logicalHeight());
            resolver.setPositionIgnoringNestedIsolates(oldEnd);
            end = oldEnd;
            setLogicalHeight(exclusionShapeInsideInfo-&gt;lineLogicalTop() - absoluteLogicalTop);
            continue;
        }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777326</commentid>
    <comment_count>14</comment_count>
      <attachid>176359</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2012-11-27 16:13:49 -0800</bug_when>
    <thetext>Created attachment 176359
Patch

Made the changes suggested by reviewers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778703</commentid>
    <comment_count>15</comment_count>
      <attachid>176650</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2012-11-28 22:31:00 -0800</bug_when>
    <thetext>Created attachment 176650
Patch

Added support for rounded rectangles.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783957</commentid>
    <comment_count>16</comment_count>
      <attachid>177804</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2012-12-05 12:01:56 -0800</bug_when>
    <thetext>Created attachment 177804
Patch

Removed the ExclusionShape.h cleanup that&apos;s been addressed by https://bugs.webkit.org/show_bug.cgi?id=103939.  Now this patch is slightly smaller.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784149</commentid>
    <comment_count>17</comment_count>
      <attachid>177804</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-12-05 14:56:03 -0800</bug_when>
    <thetext>Comment on attachment 177804
Patch

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

&gt; LayoutTests/fast/exclusions/shape-inside/shape-inside-rounded-rectangle-fit-002-expected.html:33
&gt; +    top: 29.2893219px;
&gt; +    left: 29.2893219px;
&gt; +    width: 200px;
&gt; +    height: 200px;
&gt; +    font: 141.421356px/1 Ahem, sans-serif;

Can you help me understand where these numbers came from?

&gt; Source/WebCore/rendering/ExclusionPolygon.cpp:381
&gt; +    // FIXME: This is just a temporary stub, https://bugs.webkit.org/show_bug.cgi?id=103429

This makes me a sad panda :(

&gt; Source/WebCore/rendering/ExclusionRectangle.cpp:148
&gt; +        float xi = (m_width - minLogicalIntervalSize.width()) / 2;
&gt; +        float yi = m_ry - ellipseYIntercept(m_rx - xi, m_rx, m_ry);

So sometimes we calculate these twice? This seems a bit inefficient, and at a minimum it seems the code could be shared.

&gt; Source/WebCore/rendering/RenderBlockLineLayout.cpp:1456
&gt; +            removeFloatingObjectsBelow(lastFloatFromPreviousLine, logicalHeight());
&gt; +            resolver.setPositionIgnoringNestedIsolates(oldEnd);
&gt; +            end = oldEnd;
&gt; +            setLogicalHeight(exclusionShapeInsideInfo-&gt;logicalLineTop() - absoluteLogicalTop);
&gt; +            continue;

It isn&apos;t obvious at all by looking at this what this is doing, and this is code that&apos;s duplicated elsewhere in this loop. Please extract it into a descriptive inline function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784500</commentid>
    <comment_count>18</comment_count>
      <attachid>177911</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2012-12-05 19:41:14 -0800</bug_when>
    <thetext>Created attachment 177911
Patch

Made the changes suggested by Levi.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784511</commentid>
    <comment_count>19</comment_count>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2012-12-05 19:52:09 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 177804 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=177804&amp;action=review
&gt; 
&gt; &gt; LayoutTests/fast/exclusions/shape-inside/shape-inside-rounded-rectangle-fit-002-expected.html:33
&gt; &gt; +    top: 29.2893219px;
&gt; &gt; +    left: 29.2893219px;
&gt; &gt; +    width: 200px;
&gt; &gt; +    height: 200px;
&gt; &gt; +    font: 141.421356px/1 Ahem, sans-serif;
&gt; 
&gt; Can you help me understand where these numbers came from?

I&apos;ve added comments to the tests:

In this test the shape-inside shape is a rounded rectangle configured as a circle with radius of 100px. The shape-inside element contains a single square Ahem font character that just fits wthin the circle. That means that the character&apos;s size is sqrt(2)*100px, which is 141.41356px.

The x and y coordinates of the points at which the square intersects the circle are half of the  difference between circle&apos;s diameter and the size of the square: (200px - sqrt(2)*100px) / 2 = 29.2893219px.


&gt; 
&gt; &gt; Source/WebCore/rendering/ExclusionPolygon.cpp:381
&gt; &gt; +    // FIXME: This is just a temporary stub, https://bugs.webkit.org/show_bug.cgi?id=103429
&gt; 
&gt; This makes me a sad panda :(

I left this part out to keep the patch small (smaller).  

The polygon first fit algorithm is more complicated and will make a big patch all on its own.  There&apos;s more about the polygon algorithm here if you&apos;re curious - http://hansmuller-webkit.blogspot.com/2012/08/revised-algorithm-for-finding-first.html.

&gt; 
&gt; &gt; Source/WebCore/rendering/ExclusionRectangle.cpp:148
&gt; &gt; +        float xi = (m_width - minLogicalIntervalSize.width()) / 2;
&gt; &gt; +        float yi = m_ry - ellipseYIntercept(m_rx - xi, m_rx, m_ry);
&gt; 
&gt; So sometimes we calculate these twice? This seems a bit inefficient, and at a minimum it seems the code could be shared.

I moved the common code into a help method and hoisted the call up, so that it only runs once.

This code could probably be tightened further, for example sometimes this intercept computation can be avoided altogether.  If it&apos;s OK, I&apos;d like to defer such refinements to another patch.  

&gt; 
&gt; &gt; Source/WebCore/rendering/RenderBlockLineLayout.cpp:1456
&gt; &gt; +            removeFloatingObjectsBelow(lastFloatFromPreviousLine, logicalHeight());
&gt; &gt; +            resolver.setPositionIgnoringNestedIsolates(oldEnd);
&gt; &gt; +            end = oldEnd;
&gt; &gt; +            setLogicalHeight(exclusionShapeInsideInfo-&gt;logicalLineTop() - absoluteLogicalTop);
&gt; &gt; +            continue;
&gt; 
&gt; It isn&apos;t obvious at all by looking at this what this is doing, and this is code that&apos;s duplicated elsewhere in this loop. Please extract it into a descriptive inline function.

I refactored the code as you&apos;ve suggested and called the new method &quot;restartLayoutRunsAndFloatsInRange&quot; to emphasize its connection to layoutRunsAndFloatsInRange().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785052</commentid>
    <comment_count>20</comment_count>
      <attachid>177911</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-12-06 10:56:34 -0800</bug_when>
    <thetext>Comment on attachment 177911
Patch

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

Okay.

&gt; Source/WebCore/rendering/RenderBlockLineLayout.cpp:1468
&gt; +// Before restarting the layout loop with a new logicalHeight, remove all floats that were added and reset the resolver.
&gt; +inline const InlineIterator&amp; RenderBlock::restartLayoutRunsAndFloatsInRange(LayoutUnit oldLogicalHeight, LayoutUnit newLogicalHeight,  FloatingObject* lastFloatFromPreviousLine, InlineBidiResolver&amp; resolver,  const InlineIterator&amp; oldEnd)

So much better to see this functionality get a descriptive name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785060</commentid>
    <comment_count>21</comment_count>
      <attachid>177911</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-06 11:06:12 -0800</bug_when>
    <thetext>Comment on attachment 177911
Patch

Clearing flags on attachment: 177911

Committed r136857: &lt;http://trac.webkit.org/changeset/136857&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785061</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-06 11:06:17 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785707</commentid>
    <comment_count>23</comment_count>
    <who name="János Badics">jbadics</who>
    <bug_when>2012-12-07 00:41:59 -0800</bug_when>
    <thetext>A test (fast/exclusions/shape-inside/shape-inside-rounded-rectangle-fit-002.html)
fails on Qt and GTK since it has been introduced in r136857.
You can see details about the fail at
https://bugs.webkit.org/show_bug.cgi?id=104351

I will skip this test on Qt. Please unskip it with the proper fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>792854</commentid>
    <comment_count>24</comment_count>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2012-12-17 10:58:08 -0800</bug_when>
    <thetext>*** Bug 103427 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176122</attachid>
            <date>2012-11-26 17:22:59 -0800</date>
            <delta_ts>2012-11-26 17:27:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>8588</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25Qb2x5Z29uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25Qb2x5Z29uLmNwcAppbmRleCAy
MWJlYWMxLi4yMzMwN2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhj
bHVzaW9uUG9seWdvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lv
blBvbHlnb24uY3BwCkBAIC0zNzYsNCArMzc2LDIwIEBAIHZvaWQgRXhjbHVzaW9uUG9seWdvbjo6
Z2V0SW5jbHVkZWRJbnRlcnZhbHMoZmxvYXQgbG9naWNhbFRvcCwgZmxvYXQgbG9naWNhbEhlaWdo
CiAgICAgfQogfQogCitib29sIEV4Y2x1c2lvblBvbHlnb246OmZpcnN0SW5jbHVkZWRJbnRlcnZh
bFBvc2l0aW9uKGZsb2F0IG1pbkxvZ2ljYWxJbnRlcnZhbFRvcCwgY29uc3QgRmxvYXRTaXplJiBt
aW5Mb2dpY2FsSW50ZXJ2YWxTaXplLCBGbG9hdFBvaW50JiByZXN1bHQpIGNvbnN0Cit7CisgICAg
Ly8gRklYTUU6IFRoaXMgaXMganVzdCBhIHN0dWIsIGl0IHdpbGwgYmUgcmVwbGFjZWQ6IFRCRCBC
VUdJRC4KKworICAgIGlmIChtaW5Mb2dpY2FsSW50ZXJ2YWxTaXplLndpZHRoKCkgPiBtX2JvdW5k
aW5nQm94LndpZHRoKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZsb2F0IG1pblkg
PSBtaW5ZRm9yTG9naWNhbExpbmUobWluTG9naWNhbEludGVydmFsVG9wLCBtaW5Mb2dpY2FsSW50
ZXJ2YWxTaXplLmhlaWdodCgpKTsKKyAgICBmbG9hdCBtYXhZID0gbWF4WUZvckxvZ2ljYWxMaW5l
KG1pbkxvZ2ljYWxJbnRlcnZhbFRvcCwgbWluTG9naWNhbEludGVydmFsU2l6ZS5oZWlnaHQoKSk7
CisgICAgaWYgKG1pblkgPCBtX2JvdW5kaW5nQm94LnkoKSB8fCBtYXhZID4gbV9ib3VuZGluZ0Jv
eC5tYXhZKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJlc3VsdC5zZXQobV9ib3Vu
ZGluZ0JveC54KCksIG1pbkxvZ2ljYWxJbnRlcnZhbFRvcCk7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9FeGNsdXNpb25Qb2x5Z29uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhj
bHVzaW9uUG9seWdvbi5oCmluZGV4IDY0N2ViMTcuLjkxMjJlMGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25Qb2x5Z29uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0V4Y2x1c2lvblBvbHlnb24uaApAQCAtNjYsNiArNjYsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBib29sIGlzRW1wdHkoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2Vt
cHR5OyB9CiAgICAgdmlydHVhbCB2b2lkIGdldEV4Y2x1ZGVkSW50ZXJ2YWxzKGZsb2F0IGxvZ2lj
YWxUb3AsIGZsb2F0IGxvZ2ljYWxIZWlnaHQsIFNlZ21lbnRMaXN0JikgY29uc3QgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIGdldEluY2x1ZGVkSW50ZXJ2YWxzKGZsb2F0IGxvZ2ljYWxUb3As
IGZsb2F0IGxvZ2ljYWxIZWlnaHQsIFNlZ21lbnRMaXN0JikgY29uc3QgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBib29sIGZpcnN0SW5jbHVkZWRJbnRlcnZhbFBvc2l0aW9uKGZsb2F0IG1pbkxvZ2lj
YWxJbnRlcnZhbFRvcCwgY29uc3QgRmxvYXRTaXplJiBtaW5Mb2dpY2FsSW50ZXJ2YWxTaXplLCBG
bG9hdFBvaW50JikgY29uc3QgT1ZFUlJJREU7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBjb21wdXRl
WEludGVyc2VjdGlvbnMoZmxvYXQgeSwgYm9vbCBpc01pblksIFZlY3RvcjxFeGNsdXNpb25JbnRl
cnZhbD4mKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNs
dXNpb25SZWN0YW5nbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblJl
Y3RhbmdsZS5jcHAKaW5kZXggMzI4Y2JhMi4uMGQ5OTcxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblJlY3RhbmdsZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0V4Y2x1c2lvblJlY3RhbmdsZS5jcHAKQEAgLTExNSw0ICsxMTUsMjAgQEAg
dm9pZCBFeGNsdXNpb25SZWN0YW5nbGU6OmdldEluY2x1ZGVkSW50ZXJ2YWxzKGZsb2F0IGxvZ2lj
YWxUb3AsIGZsb2F0IGxvZ2ljYWxIZWkKICAgICByZXN1bHQuYXBwZW5kKExpbmVTZWdtZW50KHgx
LCB4MikpOwogfQogCitib29sIEV4Y2x1c2lvblJlY3RhbmdsZTo6Zmlyc3RJbmNsdWRlZEludGVy
dmFsUG9zaXRpb24oZmxvYXQgbWluTG9naWNhbEludGVydmFsVG9wLCBjb25zdCBGbG9hdFNpemUm
IG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUsIEZsb2F0UG9pbnQmIHJlc3VsdCkgY29uc3QKK3sKKyAg
ICAvLyBGSVhNRTogVGhpcyBpcyBqdXN0IGEgc3R1YiwgaXQgd2lsbCBiZSByZXBsYWNlZDogVEJE
IEJVR0lELgorCisgICAgaWYgKG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUud2lkdGgoKSA+IG1fd2lk
dGgpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZsb2F0IG1pblkgPSBtaW5ZRm9yTG9n
aWNhbExpbmUobWluTG9naWNhbEludGVydmFsVG9wLCBtaW5Mb2dpY2FsSW50ZXJ2YWxTaXplLmhl
aWdodCgpKTsKKyAgICBmbG9hdCBtYXhZID0gbWF4WUZvckxvZ2ljYWxMaW5lKG1pbkxvZ2ljYWxJ
bnRlcnZhbFRvcCwgbWluTG9naWNhbEludGVydmFsU2l6ZS5oZWlnaHQoKSk7CisgICAgaWYgKG1p
blkgPCBtX3kgfHwgbWF4WSA+IG1feSArIG1faGVpZ2h0KQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICByZXN1bHQuc2V0KG1feCwgbWluTG9naWNhbEludGVydmFsVG9wKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblJlY3RhbmdsZS5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0V4Y2x1c2lvblJlY3RhbmdsZS5oCmluZGV4IDU4MzllZWMuLjU3MDVkOWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25SZWN0YW5nbGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uUmVjdGFuZ2xlLmgKQEAgLTU0
LDYgKzU0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5KCkgY29uc3QgT1ZF
UlJJREUgeyByZXR1cm4gbV93aWR0aCA8PSAwIHx8IG1faGVpZ2h0IDw9IDA7IH0KICAgICB2aXJ0
dWFsIHZvaWQgZ2V0RXhjbHVkZWRJbnRlcnZhbHMoZmxvYXQgbG9naWNhbFRvcCwgZmxvYXQgbG9n
aWNhbEhlaWdodCwgU2VnbWVudExpc3QmKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgZ2V0SW5jbHVkZWRJbnRlcnZhbHMoZmxvYXQgbG9naWNhbFRvcCwgZmxvYXQgbG9naWNhbEhl
aWdodCwgU2VnbWVudExpc3QmKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgZmly
c3RJbmNsdWRlZEludGVydmFsUG9zaXRpb24oZmxvYXQgbWluTG9naWNhbEludGVydmFsVG9wLCBj
b25zdCBGbG9hdFNpemUmIG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUsIEZsb2F0UG9pbnQmKSBjb25z
dCBPVkVSUklERTsKIAogcHJpdmF0ZToKICAgICBmbG9hdCBtX3g7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9FeGNsdXNpb25TaGFwZS5oCmluZGV4IDA3NWMwMDIuLjg0OWEwODAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25TaGFwZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25TaGFwZS5oCkBAIC02NywxMSArNjcsMTIgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5KCkgY29uc3QgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBnZXRJbmNsdWRlZEludGVydmFscyhmbG9hdCBsb2dpY2FsVG9wLCBmbG9hdCBsb2dp
Y2FsSGVpZ2h0LCBTZWdtZW50TGlzdCYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0
RXhjbHVkZWRJbnRlcnZhbHMoZmxvYXQgbG9naWNhbFRvcCwgZmxvYXQgbG9naWNhbEhlaWdodCwg
U2VnbWVudExpc3QmKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGZpcnN0SW5jbHVkZWRJ
bnRlcnZhbFBvc2l0aW9uKGZsb2F0IG1pbkxvZ2ljYWxJbnRlcnZhbFRvcCwgY29uc3QgRmxvYXRT
aXplJiBtaW5Mb2dpY2FsSW50ZXJ2YWxTaXplLCBGbG9hdFBvaW50JikgY29uc3QgPSAwOwogCiBw
cm90ZWN0ZWQ6Ci0gICAgZmxvYXQgbWluWUZvckxvZ2ljYWxMaW5lKGZsb2F0IGxvZ2ljYWxUb3As
IGZsb2F0IGxvZ2ljYWxIZWlnaHQpIGNvbnN0IHsgcmV0dXJuIChtX3dyaXRpbmdNb2RlID09IFJp
Z2h0VG9MZWZ0V3JpdGluZ01vZGUpID8gbV9sb2dpY2FsQm94SGVpZ2h0IC0gbG9naWNhbFRvcCAt
IGxvZ2ljYWxIZWlnaHQgOiBsb2dpY2FsVG9wOyB9Ci0gICAgZmxvYXQgbWF4WUZvckxvZ2ljYWxM
aW5lKGZsb2F0IGxvZ2ljYWxUb3AsIGZsb2F0IGxvZ2ljYWxIZWlnaHQpIGNvbnN0IHsgcmV0dXJu
IChtX3dyaXRpbmdNb2RlID09IFJpZ2h0VG9MZWZ0V3JpdGluZ01vZGUpID8gbV9sb2dpY2FsQm94
SGVpZ2h0IC0gbG9naWNhbFRvcCA6IGxvZ2ljYWxUb3AgKyBsb2dpY2FsSGVpZ2h0OyB9Ci0gICAg
RmxvYXRSZWN0IGludGVybmFsVG9Mb2dpY2FsQm91bmRpbmdCb3goRmxvYXRSZWN0IHIpIGNvbnN0
IHsgcmV0dXJuIChtX3dyaXRpbmdNb2RlID09IFJpZ2h0VG9MZWZ0V3JpdGluZ01vZGUpID8gRmxv
YXRSZWN0KHIueCgpLCBtX2xvZ2ljYWxCb3hIZWlnaHQgLSByLm1heFkoKSwgci53aWR0aCgpLCBy
LmhlaWdodCgpKSA6IHI7IH0KKyAgICBmbG9hdCBtaW5ZRm9yTG9naWNhbExpbmUoZmxvYXQgbG9n
aWNhbFRvcCwgZmxvYXQgbG9naWNhbEhlaWdodCkgY29uc3QgeyByZXR1cm4gaXNGbGlwcGVkQmxv
Y2tzV3JpdGluZ01vZGUobV93cml0aW5nTW9kZSkgPyBtX2xvZ2ljYWxCb3hIZWlnaHQgLSBsb2dp
Y2FsVG9wIC0gbG9naWNhbEhlaWdodCA6IGxvZ2ljYWxUb3A7IH0KKyAgICBmbG9hdCBtYXhZRm9y
TG9naWNhbExpbmUoZmxvYXQgbG9naWNhbFRvcCwgZmxvYXQgbG9naWNhbEhlaWdodCkgY29uc3Qg
eyByZXR1cm4gIGlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKG1fd3JpdGluZ01vZGUpID8gbV9s
b2dpY2FsQm94SGVpZ2h0IC0gbG9naWNhbFRvcCA6IGxvZ2ljYWxUb3AgKyBsb2dpY2FsSGVpZ2h0
OyB9CisgICAgRmxvYXRSZWN0IGludGVybmFsVG9Mb2dpY2FsQm91bmRpbmdCb3goY29uc3QgRmxv
YXRSZWN0JiByKSBjb25zdCB7IHJldHVybiBpc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZShtX3dy
aXRpbmdNb2RlKSA/IEZsb2F0UmVjdChyLngoKSwgbV9sb2dpY2FsQm94SGVpZ2h0IC0gci5tYXhZ
KCksIHIud2lkdGgoKSwgci5oZWlnaHQoKSkgOiByOyB9CiAKIHByaXZhdGU6CiAgICAgV3JpdGlu
Z01vZGUgbV93cml0aW5nTW9kZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9FeGNsdXNpb25TaGFwZUluc2lkZUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0V4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby5jcHAKaW5kZXggOTM0ZTNmMi4uZjQ2ZTE1OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlSW5zaWRlSW5m
by5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlSW5zaWRl
SW5mby5jcHAKQEAgLTExNyw1ICsxMTcsMjQgQEAgYm9vbCBFeGNsdXNpb25TaGFwZUluc2lkZUlu
Zm86OmNvbXB1dGVTZWdtZW50c0ZvckxpbmUoTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXQKICAg
ICByZXR1cm4gbV9zZWdtZW50cy5zaXplKCk7CiB9CiAKK2Jvb2wgRXhjbHVzaW9uU2hhcGVJbnNp
ZGVJbmZvOjphZGp1c3RTZWdtZW50c0ZvckxpbmUoZmxvYXQgbWluU2VnbWVudFdpZHRoKQorewor
ICAgIGlmICghbV9zaGFwZSB8fCBtX2xpbmVIZWlnaHQgPD0gMCkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgRmxvYXRQb2ludCBpbnRlcnZhbFBvc2l0aW9uOworICAgIFVOVVNFRF9QQVJB
TShtaW5TZWdtZW50V2lkdGgpOworCisgICAgaWYgKG1fc2hhcGUtPmZpcnN0SW5jbHVkZWRJbnRl
cnZhbFBvc2l0aW9uKG1fbGluZVRvcCwgRmxvYXRTaXplKG1pblNlZ21lbnRXaWR0aCwgbV9saW5l
SGVpZ2h0KSwgaW50ZXJ2YWxQb3NpdGlvbikpIHsKKyAgICAgICAgLy8gVXNlIGZyb21GbG9hdENl
aWwoKSB0byBlbnN1cmUgdGhhdCB0aGUgcmV0dXJuZWQgTGF5b3V0VW5pdCB2YWx1ZSBpcyB3aXRo
aW4gdGhlIHNoYXBlJ3MgYm91bmRzLgorICAgICAgICBMYXlvdXRVbml0IG5ld0xpbmVUb3AgPSBM
YXlvdXRVbml0Ojpmcm9tRmxvYXRDZWlsKGludGVydmFsUG9zaXRpb24ueSgpKTsKKyAgICAgICAg
aWYgKG5ld0xpbmVUb3AgIT0gbV9saW5lVG9wKQorICAgICAgICAgICAgY29tcHV0ZVNlZ21lbnRz
Rm9yTGluZShuZXdMaW5lVG9wLCBtX2xpbmVIZWlnaHQpOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby5oCmluZGV4IDhi
ZTExNGQuLmYzM2RmNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNs
dXNpb25TaGFwZUluc2lkZUluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhj
bHVzaW9uU2hhcGVJbnNpZGVJbmZvLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIExh
eW91dFVuaXQgc2hhcGVMb2dpY2FsVG9wKCkgY29uc3QgeyByZXR1cm4gc2hhcGVMb2dpY2FsQm91
bmRzWSgpOyB9CiAgICAgTGF5b3V0VW5pdCBzaGFwZUxvZ2ljYWxCb3R0b20oKSBjb25zdCB7IHJl
dHVybiBzaGFwZUxvZ2ljYWxCb3VuZHNNYXhZKCk7IH0KICAgICBib29sIGxpbmVPdmVybGFwc1No
YXBlQm91bmRzKCkgY29uc3QgeyByZXR1cm4gbV9saW5lVG9wIDwgc2hhcGVMb2dpY2FsQm90dG9t
KCkgJiYgbV9saW5lVG9wICsgbV9saW5lSGVpZ2h0ID49IHNoYXBlTG9naWNhbFRvcCgpOyB9Ci0K
KyAgIAogICAgIGJvb2wgaGFzU2VnbWVudHMoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJu
IGxpbmVPdmVybGFwc1NoYXBlQm91bmRzKCkgJiYgbV9zZWdtZW50cy5zaXplKCk7CkBAIC02OCw5
ICs2OCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX3NlZ21lbnRzOwogICAgIH0KICAg
ICBib29sIGNvbXB1dGVTZWdtZW50c0ZvckxpbmUoTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRV
bml0IGxpbmVIZWlnaHQpOworICAgIGJvb2wgYWRqdXN0U2VnbWVudHNGb3JMaW5lKGZsb2F0IG1p
blNlZ21lbnRXaWR0aCk7CiAgICAgdm9pZCBjb21wdXRlU2hhcGVTaXplKExheW91dFVuaXQgbG9n
aWNhbFdpZHRoLCBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQpOwogICAgIHZvaWQgZGlydHlTaGFw
ZVNpemUoKSB7IG1fc2hhcGVTaXplRGlydHkgPSB0cnVlOyB9CiAKKyAgICBMYXlvdXRVbml0IGxp
bmVMb2dpY2FsVG9wKCkgY29uc3QgeyByZXR1cm4gbV9saW5lVG9wOyB9CisKIHByaXZhdGU6CiAg
ICAgRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvKFJlbmRlckJsb2NrKik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKaW5kZXggZWI2
YjRiNS4uMDM3YjQ3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrTGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrTGluZUxheW91dC5jcHAKQEAgLTE0NDcsNiArMTQ0NywxMiBAQCB2b2lkIFJlbmRlckJs
b2NrOjpsYXlvdXRSdW5zQW5kRmxvYXRzSW5SYW5nZShMaW5lTGF5b3V0U3RhdGUmIGxheW91dFN0
YXRlLCBJbmxpbgogICAgICAgICB9CiAgICAgICAgIEFTU0VSVChlbmQgIT0gcmVzb2x2ZXIucG9z
aXRpb24oKSk7CiAKKyNpZiBFTkFCTEUoQ1NTX0VYQ0xVU0lPTlMpCisgICAgICAgIGlmIChleGNs
dXNpb25TaGFwZUluc2lkZUluZm8gJiYgd29yZE1lYXN1cmVtZW50cy5zaXplKCkgPiAwICYmIGV4
Y2x1c2lvblNoYXBlSW5zaWRlSW5mby0+YWRqdXN0U2VnbWVudHNGb3JMaW5lKHdvcmRNZWFzdXJl
bWVudHNbMF0ud2lkdGgpKSB7CisgICAgICAgICAgICBzZXRMb2dpY2FsSGVpZ2h0KGV4Y2x1c2lv
blNoYXBlSW5zaWRlSW5mby0+bGluZUxvZ2ljYWxUb3AoKSAtIGFic29sdXRlTG9naWNhbFRvcCk7
CisgICAgICAgIH0KKyNlbmRpZgorCiAgICAgICAgIC8vIFRoaXMgaXMgYSBzaG9ydC1jdXQgZm9y
IGVtcHR5IGxpbmVzLgogICAgICAgICBpZiAobGF5b3V0U3RhdGUubGluZUluZm8oKS5pc0VtcHR5
KCkpIHsKICAgICAgICAgICAgIGlmIChsYXN0Um9vdEJveCgpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176125</attachid>
            <date>2012-11-26 17:27:07 -0800</date>
            <delta_ts>2012-11-26 17:29:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>8164</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25Qb2x5Z29uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25Qb2x5Z29uLmNwcAppbmRleCAy
MWJlYWMxLi4yMzMwN2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhj
bHVzaW9uUG9seWdvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lv
blBvbHlnb24uY3BwCkBAIC0zNzYsNCArMzc2LDIwIEBAIHZvaWQgRXhjbHVzaW9uUG9seWdvbjo6
Z2V0SW5jbHVkZWRJbnRlcnZhbHMoZmxvYXQgbG9naWNhbFRvcCwgZmxvYXQgbG9naWNhbEhlaWdo
CiAgICAgfQogfQogCitib29sIEV4Y2x1c2lvblBvbHlnb246OmZpcnN0SW5jbHVkZWRJbnRlcnZh
bFBvc2l0aW9uKGZsb2F0IG1pbkxvZ2ljYWxJbnRlcnZhbFRvcCwgY29uc3QgRmxvYXRTaXplJiBt
aW5Mb2dpY2FsSW50ZXJ2YWxTaXplLCBGbG9hdFBvaW50JiByZXN1bHQpIGNvbnN0Cit7CisgICAg
Ly8gRklYTUU6IFRoaXMgaXMganVzdCBhIHN0dWIsIGl0IHdpbGwgYmUgcmVwbGFjZWQ6IFRCRCBC
VUdJRC4KKworICAgIGlmIChtaW5Mb2dpY2FsSW50ZXJ2YWxTaXplLndpZHRoKCkgPiBtX2JvdW5k
aW5nQm94LndpZHRoKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZsb2F0IG1pblkg
PSBtaW5ZRm9yTG9naWNhbExpbmUobWluTG9naWNhbEludGVydmFsVG9wLCBtaW5Mb2dpY2FsSW50
ZXJ2YWxTaXplLmhlaWdodCgpKTsKKyAgICBmbG9hdCBtYXhZID0gbWF4WUZvckxvZ2ljYWxMaW5l
KG1pbkxvZ2ljYWxJbnRlcnZhbFRvcCwgbWluTG9naWNhbEludGVydmFsU2l6ZS5oZWlnaHQoKSk7
CisgICAgaWYgKG1pblkgPCBtX2JvdW5kaW5nQm94LnkoKSB8fCBtYXhZID4gbV9ib3VuZGluZ0Jv
eC5tYXhZKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJlc3VsdC5zZXQobV9ib3Vu
ZGluZ0JveC54KCksIG1pbkxvZ2ljYWxJbnRlcnZhbFRvcCk7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9FeGNsdXNpb25Qb2x5Z29uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhj
bHVzaW9uUG9seWdvbi5oCmluZGV4IDY0N2ViMTcuLjkxMjJlMGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25Qb2x5Z29uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0V4Y2x1c2lvblBvbHlnb24uaApAQCAtNjYsNiArNjYsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBib29sIGlzRW1wdHkoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2Vt
cHR5OyB9CiAgICAgdmlydHVhbCB2b2lkIGdldEV4Y2x1ZGVkSW50ZXJ2YWxzKGZsb2F0IGxvZ2lj
YWxUb3AsIGZsb2F0IGxvZ2ljYWxIZWlnaHQsIFNlZ21lbnRMaXN0JikgY29uc3QgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIGdldEluY2x1ZGVkSW50ZXJ2YWxzKGZsb2F0IGxvZ2ljYWxUb3As
IGZsb2F0IGxvZ2ljYWxIZWlnaHQsIFNlZ21lbnRMaXN0JikgY29uc3QgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBib29sIGZpcnN0SW5jbHVkZWRJbnRlcnZhbFBvc2l0aW9uKGZsb2F0IG1pbkxvZ2lj
YWxJbnRlcnZhbFRvcCwgY29uc3QgRmxvYXRTaXplJiBtaW5Mb2dpY2FsSW50ZXJ2YWxTaXplLCBG
bG9hdFBvaW50JikgY29uc3QgT1ZFUlJJREU7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBjb21wdXRl
WEludGVyc2VjdGlvbnMoZmxvYXQgeSwgYm9vbCBpc01pblksIFZlY3RvcjxFeGNsdXNpb25JbnRl
cnZhbD4mKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNs
dXNpb25SZWN0YW5nbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblJl
Y3RhbmdsZS5jcHAKaW5kZXggMzI4Y2JhMi4uMGQ5OTcxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblJlY3RhbmdsZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0V4Y2x1c2lvblJlY3RhbmdsZS5jcHAKQEAgLTExNSw0ICsxMTUsMjAgQEAg
dm9pZCBFeGNsdXNpb25SZWN0YW5nbGU6OmdldEluY2x1ZGVkSW50ZXJ2YWxzKGZsb2F0IGxvZ2lj
YWxUb3AsIGZsb2F0IGxvZ2ljYWxIZWkKICAgICByZXN1bHQuYXBwZW5kKExpbmVTZWdtZW50KHgx
LCB4MikpOwogfQogCitib29sIEV4Y2x1c2lvblJlY3RhbmdsZTo6Zmlyc3RJbmNsdWRlZEludGVy
dmFsUG9zaXRpb24oZmxvYXQgbWluTG9naWNhbEludGVydmFsVG9wLCBjb25zdCBGbG9hdFNpemUm
IG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUsIEZsb2F0UG9pbnQmIHJlc3VsdCkgY29uc3QKK3sKKyAg
ICAvLyBGSVhNRTogVGhpcyBpcyBqdXN0IGEgc3R1YiwgaXQgd2lsbCBiZSByZXBsYWNlZDogVEJE
IEJVR0lELgorCisgICAgaWYgKG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUud2lkdGgoKSA+IG1fd2lk
dGgpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZsb2F0IG1pblkgPSBtaW5ZRm9yTG9n
aWNhbExpbmUobWluTG9naWNhbEludGVydmFsVG9wLCBtaW5Mb2dpY2FsSW50ZXJ2YWxTaXplLmhl
aWdodCgpKTsKKyAgICBmbG9hdCBtYXhZID0gbWF4WUZvckxvZ2ljYWxMaW5lKG1pbkxvZ2ljYWxJ
bnRlcnZhbFRvcCwgbWluTG9naWNhbEludGVydmFsU2l6ZS5oZWlnaHQoKSk7CisgICAgaWYgKG1p
blkgPCBtX3kgfHwgbWF4WSA+IG1feSArIG1faGVpZ2h0KQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICByZXN1bHQuc2V0KG1feCwgbWluTG9naWNhbEludGVydmFsVG9wKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblJlY3RhbmdsZS5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0V4Y2x1c2lvblJlY3RhbmdsZS5oCmluZGV4IDU4MzllZWMuLjU3MDVkOWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25SZWN0YW5nbGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uUmVjdGFuZ2xlLmgKQEAgLTU0
LDYgKzU0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5KCkgY29uc3QgT1ZF
UlJJREUgeyByZXR1cm4gbV93aWR0aCA8PSAwIHx8IG1faGVpZ2h0IDw9IDA7IH0KICAgICB2aXJ0
dWFsIHZvaWQgZ2V0RXhjbHVkZWRJbnRlcnZhbHMoZmxvYXQgbG9naWNhbFRvcCwgZmxvYXQgbG9n
aWNhbEhlaWdodCwgU2VnbWVudExpc3QmKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgZ2V0SW5jbHVkZWRJbnRlcnZhbHMoZmxvYXQgbG9naWNhbFRvcCwgZmxvYXQgbG9naWNhbEhl
aWdodCwgU2VnbWVudExpc3QmKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgZmly
c3RJbmNsdWRlZEludGVydmFsUG9zaXRpb24oZmxvYXQgbWluTG9naWNhbEludGVydmFsVG9wLCBj
b25zdCBGbG9hdFNpemUmIG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUsIEZsb2F0UG9pbnQmKSBjb25z
dCBPVkVSUklERTsKIAogcHJpdmF0ZToKICAgICBmbG9hdCBtX3g7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9FeGNsdXNpb25TaGFwZS5oCmluZGV4IDA3NWMwMDIuLjg0OWEwODAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25TaGFwZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25TaGFwZS5oCkBAIC02NywxMSArNjcsMTIgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5KCkgY29uc3QgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBnZXRJbmNsdWRlZEludGVydmFscyhmbG9hdCBsb2dpY2FsVG9wLCBmbG9hdCBsb2dp
Y2FsSGVpZ2h0LCBTZWdtZW50TGlzdCYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0
RXhjbHVkZWRJbnRlcnZhbHMoZmxvYXQgbG9naWNhbFRvcCwgZmxvYXQgbG9naWNhbEhlaWdodCwg
U2VnbWVudExpc3QmKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGZpcnN0SW5jbHVkZWRJ
bnRlcnZhbFBvc2l0aW9uKGZsb2F0IG1pbkxvZ2ljYWxJbnRlcnZhbFRvcCwgY29uc3QgRmxvYXRT
aXplJiBtaW5Mb2dpY2FsSW50ZXJ2YWxTaXplLCBGbG9hdFBvaW50JikgY29uc3QgPSAwOwogCiBw
cm90ZWN0ZWQ6Ci0gICAgZmxvYXQgbWluWUZvckxvZ2ljYWxMaW5lKGZsb2F0IGxvZ2ljYWxUb3As
IGZsb2F0IGxvZ2ljYWxIZWlnaHQpIGNvbnN0IHsgcmV0dXJuIChtX3dyaXRpbmdNb2RlID09IFJp
Z2h0VG9MZWZ0V3JpdGluZ01vZGUpID8gbV9sb2dpY2FsQm94SGVpZ2h0IC0gbG9naWNhbFRvcCAt
IGxvZ2ljYWxIZWlnaHQgOiBsb2dpY2FsVG9wOyB9Ci0gICAgZmxvYXQgbWF4WUZvckxvZ2ljYWxM
aW5lKGZsb2F0IGxvZ2ljYWxUb3AsIGZsb2F0IGxvZ2ljYWxIZWlnaHQpIGNvbnN0IHsgcmV0dXJu
IChtX3dyaXRpbmdNb2RlID09IFJpZ2h0VG9MZWZ0V3JpdGluZ01vZGUpID8gbV9sb2dpY2FsQm94
SGVpZ2h0IC0gbG9naWNhbFRvcCA6IGxvZ2ljYWxUb3AgKyBsb2dpY2FsSGVpZ2h0OyB9Ci0gICAg
RmxvYXRSZWN0IGludGVybmFsVG9Mb2dpY2FsQm91bmRpbmdCb3goRmxvYXRSZWN0IHIpIGNvbnN0
IHsgcmV0dXJuIChtX3dyaXRpbmdNb2RlID09IFJpZ2h0VG9MZWZ0V3JpdGluZ01vZGUpID8gRmxv
YXRSZWN0KHIueCgpLCBtX2xvZ2ljYWxCb3hIZWlnaHQgLSByLm1heFkoKSwgci53aWR0aCgpLCBy
LmhlaWdodCgpKSA6IHI7IH0KKyAgICBmbG9hdCBtaW5ZRm9yTG9naWNhbExpbmUoZmxvYXQgbG9n
aWNhbFRvcCwgZmxvYXQgbG9naWNhbEhlaWdodCkgY29uc3QgeyByZXR1cm4gaXNGbGlwcGVkQmxv
Y2tzV3JpdGluZ01vZGUobV93cml0aW5nTW9kZSkgPyBtX2xvZ2ljYWxCb3hIZWlnaHQgLSBsb2dp
Y2FsVG9wIC0gbG9naWNhbEhlaWdodCA6IGxvZ2ljYWxUb3A7IH0KKyAgICBmbG9hdCBtYXhZRm9y
TG9naWNhbExpbmUoZmxvYXQgbG9naWNhbFRvcCwgZmxvYXQgbG9naWNhbEhlaWdodCkgY29uc3Qg
eyByZXR1cm4gIGlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKG1fd3JpdGluZ01vZGUpID8gbV9s
b2dpY2FsQm94SGVpZ2h0IC0gbG9naWNhbFRvcCA6IGxvZ2ljYWxUb3AgKyBsb2dpY2FsSGVpZ2h0
OyB9CisgICAgRmxvYXRSZWN0IGludGVybmFsVG9Mb2dpY2FsQm91bmRpbmdCb3goY29uc3QgRmxv
YXRSZWN0JiByKSBjb25zdCB7IHJldHVybiBpc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZShtX3dy
aXRpbmdNb2RlKSA/IEZsb2F0UmVjdChyLngoKSwgbV9sb2dpY2FsQm94SGVpZ2h0IC0gci5tYXhZ
KCksIHIud2lkdGgoKSwgci5oZWlnaHQoKSkgOiByOyB9CiAKIHByaXZhdGU6CiAgICAgV3JpdGlu
Z01vZGUgbV93cml0aW5nTW9kZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9FeGNsdXNpb25TaGFwZUluc2lkZUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0V4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby5jcHAKaW5kZXggOTM0ZTNmMi4uZjQ2ZTE1OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlSW5zaWRlSW5m
by5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlSW5zaWRl
SW5mby5jcHAKQEAgLTExNyw1ICsxMTcsMjQgQEAgYm9vbCBFeGNsdXNpb25TaGFwZUluc2lkZUlu
Zm86OmNvbXB1dGVTZWdtZW50c0ZvckxpbmUoTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXQKICAg
ICByZXR1cm4gbV9zZWdtZW50cy5zaXplKCk7CiB9CiAKK2Jvb2wgRXhjbHVzaW9uU2hhcGVJbnNp
ZGVJbmZvOjphZGp1c3RTZWdtZW50c0ZvckxpbmUoZmxvYXQgbWluU2VnbWVudFdpZHRoKQorewor
ICAgIGlmICghbV9zaGFwZSB8fCBtX2xpbmVIZWlnaHQgPD0gMCkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgRmxvYXRQb2ludCBpbnRlcnZhbFBvc2l0aW9uOworICAgIFVOVVNFRF9QQVJB
TShtaW5TZWdtZW50V2lkdGgpOworCisgICAgaWYgKG1fc2hhcGUtPmZpcnN0SW5jbHVkZWRJbnRl
cnZhbFBvc2l0aW9uKG1fbGluZVRvcCwgRmxvYXRTaXplKG1pblNlZ21lbnRXaWR0aCwgbV9saW5l
SGVpZ2h0KSwgaW50ZXJ2YWxQb3NpdGlvbikpIHsKKyAgICAgICAgLy8gVXNlIGZyb21GbG9hdENl
aWwoKSB0byBlbnN1cmUgdGhhdCB0aGUgcmV0dXJuZWQgTGF5b3V0VW5pdCB2YWx1ZSBpcyB3aXRo
aW4gdGhlIHNoYXBlJ3MgYm91bmRzLgorICAgICAgICBMYXlvdXRVbml0IG5ld0xpbmVUb3AgPSBM
YXlvdXRVbml0Ojpmcm9tRmxvYXRDZWlsKGludGVydmFsUG9zaXRpb24ueSgpKTsKKyAgICAgICAg
aWYgKG5ld0xpbmVUb3AgIT0gbV9saW5lVG9wKQorICAgICAgICAgICAgY29tcHV0ZVNlZ21lbnRz
Rm9yTGluZShuZXdMaW5lVG9wLCBtX2xpbmVIZWlnaHQpOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby5oCmluZGV4IDhi
ZTExNGQuLjM2ZmM4ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNs
dXNpb25TaGFwZUluc2lkZUluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhj
bHVzaW9uU2hhcGVJbnNpZGVJbmZvLmgKQEAgLTY4LDkgKzY4LDEyIEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIG1fc2VnbWVudHM7CiAgICAgfQogICAgIGJvb2wgY29tcHV0ZVNlZ21lbnRzRm9y
TGluZShMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUhlaWdodCk7CisgICAgYm9v
bCBhZGp1c3RTZWdtZW50c0ZvckxpbmUoZmxvYXQgbWluU2VnbWVudFdpZHRoKTsKICAgICB2b2lk
IGNvbXB1dGVTaGFwZVNpemUoTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgsIExheW91dFVuaXQgbG9n
aWNhbEhlaWdodCk7CiAgICAgdm9pZCBkaXJ0eVNoYXBlU2l6ZSgpIHsgbV9zaGFwZVNpemVEaXJ0
eSA9IHRydWU7IH0KIAorICAgIExheW91dFVuaXQgbGluZUxvZ2ljYWxUb3AoKSBjb25zdCB7IHJl
dHVybiBtX2xpbmVUb3A7IH0KKwogcHJpdmF0ZToKICAgICBFeGNsdXNpb25TaGFwZUluc2lkZUlu
Zm8oUmVuZGVyQmxvY2sqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAppbmRleCBlYjZiNGI1Li4wMzdiNDc2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcApAQCAt
MTQ0Nyw2ICsxNDQ3LDEyIEBAIHZvaWQgUmVuZGVyQmxvY2s6OmxheW91dFJ1bnNBbmRGbG9hdHNJ
blJhbmdlKExpbmVMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIElubGluCiAgICAgICAgIH0KICAg
ICAgICAgQVNTRVJUKGVuZCAhPSByZXNvbHZlci5wb3NpdGlvbigpKTsKIAorI2lmIEVOQUJMRShD
U1NfRVhDTFVTSU9OUykKKyAgICAgICAgaWYgKGV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbyAmJiB3
b3JkTWVhc3VyZW1lbnRzLnNpemUoKSA+IDAgJiYgZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLT5h
ZGp1c3RTZWdtZW50c0ZvckxpbmUod29yZE1lYXN1cmVtZW50c1swXS53aWR0aCkpIHsKKyAgICAg
ICAgICAgIHNldExvZ2ljYWxIZWlnaHQoZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLT5saW5lTG9n
aWNhbFRvcCgpIC0gYWJzb2x1dGVMb2dpY2FsVG9wKTsKKyAgICAgICAgfQorI2VuZGlmCisKICAg
ICAgICAgLy8gVGhpcyBpcyBhIHNob3J0LWN1dCBmb3IgZW1wdHkgbGluZXMuCiAgICAgICAgIGlm
IChsYXlvdXRTdGF0ZS5saW5lSW5mbygpLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgaWYgKGxh
c3RSb290Qm94KCkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176126</attachid>
            <date>2012-11-26 17:29:49 -0800</date>
            <delta_ts>2012-11-27 10:45:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>8151</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25Qb2x5Z29uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25Qb2x5Z29uLmNwcAppbmRleCAy
MWJlYWMxLi4yMzMwN2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhj
bHVzaW9uUG9seWdvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lv
blBvbHlnb24uY3BwCkBAIC0zNzYsNCArMzc2LDIwIEBAIHZvaWQgRXhjbHVzaW9uUG9seWdvbjo6
Z2V0SW5jbHVkZWRJbnRlcnZhbHMoZmxvYXQgbG9naWNhbFRvcCwgZmxvYXQgbG9naWNhbEhlaWdo
CiAgICAgfQogfQogCitib29sIEV4Y2x1c2lvblBvbHlnb246OmZpcnN0SW5jbHVkZWRJbnRlcnZh
bFBvc2l0aW9uKGZsb2F0IG1pbkxvZ2ljYWxJbnRlcnZhbFRvcCwgY29uc3QgRmxvYXRTaXplJiBt
aW5Mb2dpY2FsSW50ZXJ2YWxTaXplLCBGbG9hdFBvaW50JiByZXN1bHQpIGNvbnN0Cit7CisgICAg
Ly8gRklYTUU6IFRoaXMgaXMganVzdCBhIHN0dWIsIGl0IHdpbGwgYmUgcmVwbGFjZWQ6IFRCRCBC
VUdJRC4KKworICAgIGlmIChtaW5Mb2dpY2FsSW50ZXJ2YWxTaXplLndpZHRoKCkgPiBtX2JvdW5k
aW5nQm94LndpZHRoKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZsb2F0IG1pblkg
PSBtaW5ZRm9yTG9naWNhbExpbmUobWluTG9naWNhbEludGVydmFsVG9wLCBtaW5Mb2dpY2FsSW50
ZXJ2YWxTaXplLmhlaWdodCgpKTsKKyAgICBmbG9hdCBtYXhZID0gbWF4WUZvckxvZ2ljYWxMaW5l
KG1pbkxvZ2ljYWxJbnRlcnZhbFRvcCwgbWluTG9naWNhbEludGVydmFsU2l6ZS5oZWlnaHQoKSk7
CisgICAgaWYgKG1pblkgPCBtX2JvdW5kaW5nQm94LnkoKSB8fCBtYXhZID4gbV9ib3VuZGluZ0Jv
eC5tYXhZKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJlc3VsdC5zZXQobV9ib3Vu
ZGluZ0JveC54KCksIG1pbkxvZ2ljYWxJbnRlcnZhbFRvcCk7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9FeGNsdXNpb25Qb2x5Z29uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhj
bHVzaW9uUG9seWdvbi5oCmluZGV4IDY0N2ViMTcuLjkxMjJlMGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25Qb2x5Z29uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0V4Y2x1c2lvblBvbHlnb24uaApAQCAtNjYsNiArNjYsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBib29sIGlzRW1wdHkoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2Vt
cHR5OyB9CiAgICAgdmlydHVhbCB2b2lkIGdldEV4Y2x1ZGVkSW50ZXJ2YWxzKGZsb2F0IGxvZ2lj
YWxUb3AsIGZsb2F0IGxvZ2ljYWxIZWlnaHQsIFNlZ21lbnRMaXN0JikgY29uc3QgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIGdldEluY2x1ZGVkSW50ZXJ2YWxzKGZsb2F0IGxvZ2ljYWxUb3As
IGZsb2F0IGxvZ2ljYWxIZWlnaHQsIFNlZ21lbnRMaXN0JikgY29uc3QgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBib29sIGZpcnN0SW5jbHVkZWRJbnRlcnZhbFBvc2l0aW9uKGZsb2F0IG1pbkxvZ2lj
YWxJbnRlcnZhbFRvcCwgY29uc3QgRmxvYXRTaXplJiBtaW5Mb2dpY2FsSW50ZXJ2YWxTaXplLCBG
bG9hdFBvaW50JikgY29uc3QgT1ZFUlJJREU7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBjb21wdXRl
WEludGVyc2VjdGlvbnMoZmxvYXQgeSwgYm9vbCBpc01pblksIFZlY3RvcjxFeGNsdXNpb25JbnRl
cnZhbD4mKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNs
dXNpb25SZWN0YW5nbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblJl
Y3RhbmdsZS5jcHAKaW5kZXggMzI4Y2JhMi4uMGQ5OTcxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblJlY3RhbmdsZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0V4Y2x1c2lvblJlY3RhbmdsZS5jcHAKQEAgLTExNSw0ICsxMTUsMjAgQEAg
dm9pZCBFeGNsdXNpb25SZWN0YW5nbGU6OmdldEluY2x1ZGVkSW50ZXJ2YWxzKGZsb2F0IGxvZ2lj
YWxUb3AsIGZsb2F0IGxvZ2ljYWxIZWkKICAgICByZXN1bHQuYXBwZW5kKExpbmVTZWdtZW50KHgx
LCB4MikpOwogfQogCitib29sIEV4Y2x1c2lvblJlY3RhbmdsZTo6Zmlyc3RJbmNsdWRlZEludGVy
dmFsUG9zaXRpb24oZmxvYXQgbWluTG9naWNhbEludGVydmFsVG9wLCBjb25zdCBGbG9hdFNpemUm
IG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUsIEZsb2F0UG9pbnQmIHJlc3VsdCkgY29uc3QKK3sKKyAg
ICAvLyBGSVhNRTogVGhpcyBpcyBqdXN0IGEgc3R1YiwgaXQgd2lsbCBiZSByZXBsYWNlZDogVEJE
IEJVR0lELgorCisgICAgaWYgKG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUud2lkdGgoKSA+IG1fd2lk
dGgpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZsb2F0IG1pblkgPSBtaW5ZRm9yTG9n
aWNhbExpbmUobWluTG9naWNhbEludGVydmFsVG9wLCBtaW5Mb2dpY2FsSW50ZXJ2YWxTaXplLmhl
aWdodCgpKTsKKyAgICBmbG9hdCBtYXhZID0gbWF4WUZvckxvZ2ljYWxMaW5lKG1pbkxvZ2ljYWxJ
bnRlcnZhbFRvcCwgbWluTG9naWNhbEludGVydmFsU2l6ZS5oZWlnaHQoKSk7CisgICAgaWYgKG1p
blkgPCBtX3kgfHwgbWF4WSA+IG1feSArIG1faGVpZ2h0KQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICByZXN1bHQuc2V0KG1feCwgbWluTG9naWNhbEludGVydmFsVG9wKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblJlY3RhbmdsZS5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0V4Y2x1c2lvblJlY3RhbmdsZS5oCmluZGV4IDU4MzllZWMuLjU3MDVkOWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25SZWN0YW5nbGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uUmVjdGFuZ2xlLmgKQEAgLTU0
LDYgKzU0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5KCkgY29uc3QgT1ZF
UlJJREUgeyByZXR1cm4gbV93aWR0aCA8PSAwIHx8IG1faGVpZ2h0IDw9IDA7IH0KICAgICB2aXJ0
dWFsIHZvaWQgZ2V0RXhjbHVkZWRJbnRlcnZhbHMoZmxvYXQgbG9naWNhbFRvcCwgZmxvYXQgbG9n
aWNhbEhlaWdodCwgU2VnbWVudExpc3QmKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgZ2V0SW5jbHVkZWRJbnRlcnZhbHMoZmxvYXQgbG9naWNhbFRvcCwgZmxvYXQgbG9naWNhbEhl
aWdodCwgU2VnbWVudExpc3QmKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgZmly
c3RJbmNsdWRlZEludGVydmFsUG9zaXRpb24oZmxvYXQgbWluTG9naWNhbEludGVydmFsVG9wLCBj
b25zdCBGbG9hdFNpemUmIG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUsIEZsb2F0UG9pbnQmKSBjb25z
dCBPVkVSUklERTsKIAogcHJpdmF0ZToKICAgICBmbG9hdCBtX3g7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9FeGNsdXNpb25TaGFwZS5oCmluZGV4IDA3NWMwMDIuLjg0OWEwODAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25TaGFwZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25TaGFwZS5oCkBAIC02NywxMSArNjcsMTIgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5KCkgY29uc3QgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBnZXRJbmNsdWRlZEludGVydmFscyhmbG9hdCBsb2dpY2FsVG9wLCBmbG9hdCBsb2dp
Y2FsSGVpZ2h0LCBTZWdtZW50TGlzdCYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0
RXhjbHVkZWRJbnRlcnZhbHMoZmxvYXQgbG9naWNhbFRvcCwgZmxvYXQgbG9naWNhbEhlaWdodCwg
U2VnbWVudExpc3QmKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGZpcnN0SW5jbHVkZWRJ
bnRlcnZhbFBvc2l0aW9uKGZsb2F0IG1pbkxvZ2ljYWxJbnRlcnZhbFRvcCwgY29uc3QgRmxvYXRT
aXplJiBtaW5Mb2dpY2FsSW50ZXJ2YWxTaXplLCBGbG9hdFBvaW50JikgY29uc3QgPSAwOwogCiBw
cm90ZWN0ZWQ6Ci0gICAgZmxvYXQgbWluWUZvckxvZ2ljYWxMaW5lKGZsb2F0IGxvZ2ljYWxUb3As
IGZsb2F0IGxvZ2ljYWxIZWlnaHQpIGNvbnN0IHsgcmV0dXJuIChtX3dyaXRpbmdNb2RlID09IFJp
Z2h0VG9MZWZ0V3JpdGluZ01vZGUpID8gbV9sb2dpY2FsQm94SGVpZ2h0IC0gbG9naWNhbFRvcCAt
IGxvZ2ljYWxIZWlnaHQgOiBsb2dpY2FsVG9wOyB9Ci0gICAgZmxvYXQgbWF4WUZvckxvZ2ljYWxM
aW5lKGZsb2F0IGxvZ2ljYWxUb3AsIGZsb2F0IGxvZ2ljYWxIZWlnaHQpIGNvbnN0IHsgcmV0dXJu
IChtX3dyaXRpbmdNb2RlID09IFJpZ2h0VG9MZWZ0V3JpdGluZ01vZGUpID8gbV9sb2dpY2FsQm94
SGVpZ2h0IC0gbG9naWNhbFRvcCA6IGxvZ2ljYWxUb3AgKyBsb2dpY2FsSGVpZ2h0OyB9Ci0gICAg
RmxvYXRSZWN0IGludGVybmFsVG9Mb2dpY2FsQm91bmRpbmdCb3goRmxvYXRSZWN0IHIpIGNvbnN0
IHsgcmV0dXJuIChtX3dyaXRpbmdNb2RlID09IFJpZ2h0VG9MZWZ0V3JpdGluZ01vZGUpID8gRmxv
YXRSZWN0KHIueCgpLCBtX2xvZ2ljYWxCb3hIZWlnaHQgLSByLm1heFkoKSwgci53aWR0aCgpLCBy
LmhlaWdodCgpKSA6IHI7IH0KKyAgICBmbG9hdCBtaW5ZRm9yTG9naWNhbExpbmUoZmxvYXQgbG9n
aWNhbFRvcCwgZmxvYXQgbG9naWNhbEhlaWdodCkgY29uc3QgeyByZXR1cm4gaXNGbGlwcGVkQmxv
Y2tzV3JpdGluZ01vZGUobV93cml0aW5nTW9kZSkgPyBtX2xvZ2ljYWxCb3hIZWlnaHQgLSBsb2dp
Y2FsVG9wIC0gbG9naWNhbEhlaWdodCA6IGxvZ2ljYWxUb3A7IH0KKyAgICBmbG9hdCBtYXhZRm9y
TG9naWNhbExpbmUoZmxvYXQgbG9naWNhbFRvcCwgZmxvYXQgbG9naWNhbEhlaWdodCkgY29uc3Qg
eyByZXR1cm4gIGlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKG1fd3JpdGluZ01vZGUpID8gbV9s
b2dpY2FsQm94SGVpZ2h0IC0gbG9naWNhbFRvcCA6IGxvZ2ljYWxUb3AgKyBsb2dpY2FsSGVpZ2h0
OyB9CisgICAgRmxvYXRSZWN0IGludGVybmFsVG9Mb2dpY2FsQm91bmRpbmdCb3goY29uc3QgRmxv
YXRSZWN0JiByKSBjb25zdCB7IHJldHVybiBpc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZShtX3dy
aXRpbmdNb2RlKSA/IEZsb2F0UmVjdChyLngoKSwgbV9sb2dpY2FsQm94SGVpZ2h0IC0gci5tYXhZ
KCksIHIud2lkdGgoKSwgci5oZWlnaHQoKSkgOiByOyB9CiAKIHByaXZhdGU6CiAgICAgV3JpdGlu
Z01vZGUgbV93cml0aW5nTW9kZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9FeGNsdXNpb25TaGFwZUluc2lkZUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0V4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby5jcHAKaW5kZXggOTM0ZTNmMi4uZjQ2ZTE1OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlSW5zaWRlSW5m
by5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlSW5zaWRl
SW5mby5jcHAKQEAgLTExNyw1ICsxMTcsMjQgQEAgYm9vbCBFeGNsdXNpb25TaGFwZUluc2lkZUlu
Zm86OmNvbXB1dGVTZWdtZW50c0ZvckxpbmUoTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXQKICAg
ICByZXR1cm4gbV9zZWdtZW50cy5zaXplKCk7CiB9CiAKK2Jvb2wgRXhjbHVzaW9uU2hhcGVJbnNp
ZGVJbmZvOjphZGp1c3RTZWdtZW50c0ZvckxpbmUoZmxvYXQgbWluU2VnbWVudFdpZHRoKQorewor
ICAgIGlmICghbV9zaGFwZSB8fCBtX2xpbmVIZWlnaHQgPD0gMCkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgRmxvYXRQb2ludCBpbnRlcnZhbFBvc2l0aW9uOworICAgIFVOVVNFRF9QQVJB
TShtaW5TZWdtZW50V2lkdGgpOworCisgICAgaWYgKG1fc2hhcGUtPmZpcnN0SW5jbHVkZWRJbnRl
cnZhbFBvc2l0aW9uKG1fbGluZVRvcCwgRmxvYXRTaXplKG1pblNlZ21lbnRXaWR0aCwgbV9saW5l
SGVpZ2h0KSwgaW50ZXJ2YWxQb3NpdGlvbikpIHsKKyAgICAgICAgLy8gVXNlIGZyb21GbG9hdENl
aWwoKSB0byBlbnN1cmUgdGhhdCB0aGUgcmV0dXJuZWQgTGF5b3V0VW5pdCB2YWx1ZSBpcyB3aXRo
aW4gdGhlIHNoYXBlJ3MgYm91bmRzLgorICAgICAgICBMYXlvdXRVbml0IG5ld0xpbmVUb3AgPSBM
YXlvdXRVbml0Ojpmcm9tRmxvYXRDZWlsKGludGVydmFsUG9zaXRpb24ueSgpKTsKKyAgICAgICAg
aWYgKG5ld0xpbmVUb3AgIT0gbV9saW5lVG9wKQorICAgICAgICAgICAgY29tcHV0ZVNlZ21lbnRz
Rm9yTGluZShuZXdMaW5lVG9wLCBtX2xpbmVIZWlnaHQpOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby5oCmluZGV4IDhi
ZTExNGQuLjM2ZmM4ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNs
dXNpb25TaGFwZUluc2lkZUluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhj
bHVzaW9uU2hhcGVJbnNpZGVJbmZvLmgKQEAgLTY4LDkgKzY4LDEyIEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIG1fc2VnbWVudHM7CiAgICAgfQogICAgIGJvb2wgY29tcHV0ZVNlZ21lbnRzRm9y
TGluZShMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUhlaWdodCk7CisgICAgYm9v
bCBhZGp1c3RTZWdtZW50c0ZvckxpbmUoZmxvYXQgbWluU2VnbWVudFdpZHRoKTsKICAgICB2b2lk
IGNvbXB1dGVTaGFwZVNpemUoTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgsIExheW91dFVuaXQgbG9n
aWNhbEhlaWdodCk7CiAgICAgdm9pZCBkaXJ0eVNoYXBlU2l6ZSgpIHsgbV9zaGFwZVNpemVEaXJ0
eSA9IHRydWU7IH0KIAorICAgIExheW91dFVuaXQgbGluZUxvZ2ljYWxUb3AoKSBjb25zdCB7IHJl
dHVybiBtX2xpbmVUb3A7IH0KKwogcHJpdmF0ZToKICAgICBFeGNsdXNpb25TaGFwZUluc2lkZUlu
Zm8oUmVuZGVyQmxvY2sqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAppbmRleCBlYjZiNGI1Li5lNTFkNzUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcApAQCAt
MTQ0Nyw2ICsxNDQ3LDExIEBAIHZvaWQgUmVuZGVyQmxvY2s6OmxheW91dFJ1bnNBbmRGbG9hdHNJ
blJhbmdlKExpbmVMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIElubGluCiAgICAgICAgIH0KICAg
ICAgICAgQVNTRVJUKGVuZCAhPSByZXNvbHZlci5wb3NpdGlvbigpKTsKIAorI2lmIEVOQUJMRShD
U1NfRVhDTFVTSU9OUykKKyAgICAgICAgaWYgKGV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbyAmJiB3
b3JkTWVhc3VyZW1lbnRzLnNpemUoKSA+IDAgJiYgZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLT5h
ZGp1c3RTZWdtZW50c0ZvckxpbmUod29yZE1lYXN1cmVtZW50c1swXS53aWR0aCkpCisgICAgICAg
ICAgICBzZXRMb2dpY2FsSGVpZ2h0KGV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby0+bGluZUxvZ2lj
YWxUb3AoKSAtIGFic29sdXRlTG9naWNhbFRvcCk7CisjZW5kaWYKKwogICAgICAgICAvLyBUaGlz
IGlzIGEgc2hvcnQtY3V0IGZvciBlbXB0eSBsaW5lcy4KICAgICAgICAgaWYgKGxheW91dFN0YXRl
LmxpbmVJbmZvKCkuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBpZiAobGFzdFJvb3RCb3goKSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176300</attachid>
            <date>2012-11-27 10:45:43 -0800</date>
            <delta_ts>2012-11-27 16:13:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>11996</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4YWRhYzk5Li5iMTMxYjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjAg
QEAKKzIwMTItMTEtMjcgIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CisKKyAgICAg
ICAgW0NTUyBFeGNsdXNpb25zXSBBZGQgc3VwcG9ydCBmb3IgY29tcHV0aW5nIHRoZSBmaXJzdCBp
bmNsdWRlZCBpbnRlcnZhbCBwb3NpdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwMzMyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZGVkIEV4Y2x1c2lvblNoYXBlOjpmaXJzdEluY2x1ZGVkSW50
ZXJ2YWxQb3NpdGlvbigpLiBUaGUgbmV3IHZpcnR1YWwgbWV0aG9kCisgICAgICAgIGNvbXB1dGVz
IHRoZSB0b3Btb3N0L2xlZnRtb3N0IGxvY2F0aW9uIHdoZXJlIGEgbGluZSBzZWdtZW50IHdpdGgg
dGhlIHNwZWNpZmllZAorICAgICAgICBtaW5Mb2dpY2FsSW50ZXJ2YWxTaXplIHdpbGwgZml0IHdp
dGhpbiB0aGUgZXhjbHVzaW9uIHNoYXBlLiBUaGUgcmVzdWx0IGlzCisgICAgICAgIGFkZGl0aW9u
YWxseSBjb25zdHJhaW5lZCB0byBiZSBhdCBvciBiZWxvdyBtaW5Mb2dpY2FsSW50ZXJ2YWxUb3Au
IElmIHRoZQorICAgICAgICBzZWdtZW50IHdpbGwgbm90IGZpdCBhbnl3aGVyZSB3aXRoaW4gdGhl
IHNoYXBlLCB0aGVuIGZhbHNlIGlzIHJldHVybmVkLgorCisgICAgICAgIER1cmluZyBsYXlvdXQs
IG1pbkxvZ2ljYWxJbnRlcnZhbFRvcCBpcyB0aGUgbm9taW5hbCB0b3Agb2YgdGhlIGxpbmUgYmVp
bmcgbGFpZAorICAgICAgICBvdXQgd2l0aGluIHRoZSBleGNsdXNpb24gc2hhcGUuCisKKyAgICAg
ICAgUmVuZGVyQmxvY2s6OmxheW91dFJ1bnNBbmRGbG9hdHNJblJhbmdlKCkgbm93IGNhbGxzIGEg
bmV3IEV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbworICAgICAgICBtZXRob2QsIGFkanVzdFNlZ21l
bnRzRm9yTGluZSgpLCB3aGljaCByZWNvbXB1dGVzIHRoZSBsb2dpY2FsIHRvcCBvZiB0aGUgbGlu
ZSBhbmQKKyAgICAgICAgdGhlIGxpbmUncyBzZWdtZW50cywgaWYgdGhlIGZpcnN0SW5jbHVkZWRJ
bnRlcnZhbFBvc2l0aW9uKCkgaGFzIHRvIG1vdmUgdGhlIHRvcAorICAgICAgICBvZiB0aGUgbGlu
ZSBkb3dud2FyZHMsIGZvciB0aGUgZmlyc3Qgd29yZCB0byBmaXQgd2l0aGluIHRoZSBleGNsdXNp
b24gc2hhcGUuCisKKyAgICAgICAgQ3VycmVudGx5LCB0aGUgaW1wbGVtZW50YXRpb25zIG9mIGZp
cnN0SW5jbHVkZWRJbnRlcnZhbFBvc2l0aW9uKCkgYXJlIHN0dWJzIHdoaWNoCisgICAgICAgIGJl
aGF2ZSBpbiB0aGUgc2FtZSB3YXkgYXMgdGhlIGN1cnJlbnQgZXhjbHVzaW9ucyBpbXBsZW1lbnRh
dGlvbi4KKyAgICAgICAgSWYgYSBzZWdtZW50IG9mIG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUgd2ls
bCBmaXQgd2l0aGluIHRoZSBzaGFwZSdzIGxvZ2ljYWwKKyAgICAgICAgYm91bmRpbmcgYm94LCB0
aGVuIHRoZSByZXR1cm5lZCBwb2ludCdzIFkgY29vcmRpbmF0ZSBpcyBqdXN0IG1pbkxvZ2ljYWxJ
bnRlcnZhbFRvcC4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gaW5jbHVkZXMgb25lIG1pbm9y
IGNsZWFudXA6IHRoZSBwcm90ZWN0ZWQgRXhjbHVzaW9uU2hhcGUgaW5saW5lcywKKyAgICAgICAg
bGlrZSBtaW5ZRm9yTG9naWNhbExpbmUoKSwgbm93IHVzZSBpc0ZsaXBwZWRCbG9ja3NXcml0aW5n
TW9kZSgpIGluc3RlYWQgb2YgdGVzdGluZworICAgICAgICBmb3IgUmlnaHRUb0xlZnRXcml0aW5n
TW9kZSBkaXJlY3RseS4gVGhpcyBjaGFuZ2VpbXByb3ZlcyBjb25zaXN0ZW5jeSB3aXRoIHRoZSBy
ZXN0CisgICAgICAgIG9mIFdlYktpdCBhbmQgd2lsbCB3b3JrIGNvcnJlY3RseSBpZiAiaG9yaXpv
bnRhbC1idCIgd3JpdGluZy1tb2RlIHN1cHBvcnQgaXMgZXZlciBhZGRlZC4KKworICAgICAgICBU
aGUgZmlyc3RJbmNsdWRlZEludGVydmFsUG9zaXRpb24oKSBzdHVicyB3aWxsIGJlIHJlcGxhY2Vk
IGJ5IHBhdGNoZXMgZm9yOgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTAzNDI3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDM0MjkKKworICAgICAgICBObyBuZXcgdGVzdHMgYXJlIG5lZWRlZCBzaW5jZSB0
aGUgcmVzdHJ1Y3R1cmluZyBpbnRyb2R1Y2VkIGhlcmUgZG9lc24ndCBjaGFuZ2UKKyAgICAgICAg
dGhlIGV4aXN0aW5nIGZ1bmN0aW9uYWxpdHksIGl0IGp1c3QgcGF2ZXMgdGhlIHdheSBmb3IgbmV3
IGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiByZW5kZXJpbmcvRXhjbHVzaW9uUG9seWdvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFeGNsdXNpb25Qb2x5Z29uOjpmaXJzdEluY2x1ZGVkSW50
ZXJ2YWxQb3NpdGlvbik6IFRoaXMgaXMgYSBzdHViIGltcGxlbWVudGF0aW9uLgorICAgICAgICAq
IHJlbmRlcmluZy9FeGNsdXNpb25Qb2x5Z29uLmg6CisgICAgICAgICogcmVuZGVyaW5nL0V4Y2x1
c2lvblJlY3RhbmdsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFeGNsdXNpb25SZWN0YW5nbGU6
OmZpcnN0SW5jbHVkZWRJbnRlcnZhbFBvc2l0aW9uKTogVGhpcyBpcyBhIHN0dWIgaW1wbGVtZW50
YXRpb24uCisgICAgICAgICogcmVuZGVyaW5nL0V4Y2x1c2lvblJlY3RhbmdsZS5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9FeGNsdXNpb25TaGFwZS5oOgorICAgICAgICAoRXhjbHVzaW9uU2hhcGUp
OiBBZGRlZCB0aGUgZmlyc3RJbmNsdWRlZEludGVydmFsUG9zaXRpb24oKSBtZXRob2QuCisgICAg
ICAgIChXZWJDb3JlOjpFeGNsdXNpb25TaGFwZTo6bWluWUZvckxvZ2ljYWxMaW5lKTogVXNlIGlz
RmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkgaW5zdGVhZCBvZiB0ZXN0aW5nIGZvciBSaWdodFRv
TGVmdFdyaXRpbmdNb2RlIGRpcmVjdGx5LgorICAgICAgICAoV2ViQ29yZTo6RXhjbHVzaW9uU2hh
cGU6Om1heFlGb3JMb2dpY2FsTGluZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RXhjbHVz
aW9uU2hhcGU6OmludGVybmFsVG9Mb2dpY2FsQm91bmRpbmdCb3gpOiBEaXR0by4KKyAgICAgICAg
KiByZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbzo6YWRqdXN0U2VnbWVudHNGb3JMaW5lKTogQSBu
ZXcgbWV0aG9kIHRoYXQgcmVjb21wdXRlcyB0aGUgbGluZVRvcCBhbmQgdGhlIGxpbmUgc2VnbWVu
dCBsaXN0IGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgKiByZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGVJ
bnNpZGVJbmZvLmg6CisgICAgICAgIChFeGNsdXNpb25TaGFwZUluc2lkZUluZm8pOgorICAgICAg
ICAoV2ViQ29yZTo6RXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvOjpsaW5lTG9naWNhbFRvcCk6IFRo
aXMgaXMganVzdCBhIGNvdmVyIGZvciB0aGUgcHJpdmF0ZSBtX2xpbmVUb3AgZmllbGQuCisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9jazo6bGF5b3V0UnVuc0FuZEZsb2F0c0luUmFuZ2UpOiBJbnNlcnRlZCBh
IGNhbGwgdG8gYWRqdXN0U2VnbWVudHNGb3JMaW5lKCkuCisKIDIwMTItMTEtMjcgIEFsbGFuIFNh
bmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCBjbGVhbnVwLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1
c2lvblBvbHlnb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblBvbHln
b24uY3BwCmluZGV4IDIxYmVhYzEuLjZiODFhZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9FeGNsdXNpb25Qb2x5Z29uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvRXhjbHVzaW9uUG9seWdvbi5jcHAKQEAgLTM3Niw0ICszNzYsMjAgQEAgdm9pZCBFeGNs
dXNpb25Qb2x5Z29uOjpnZXRJbmNsdWRlZEludGVydmFscyhmbG9hdCBsb2dpY2FsVG9wLCBmbG9h
dCBsb2dpY2FsSGVpZ2gKICAgICB9CiB9CiAKK2Jvb2wgRXhjbHVzaW9uUG9seWdvbjo6Zmlyc3RJ
bmNsdWRlZEludGVydmFsUG9zaXRpb24oZmxvYXQgbWluTG9naWNhbEludGVydmFsVG9wLCBjb25z
dCBGbG9hdFNpemUmIG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUsIEZsb2F0UG9pbnQmIHJlc3VsdCkg
Y29uc3QKK3sKKyAgICAvLyBGSVhNRTogVGhpcyBpcyBqdXN0IGEgdGVtcG9yYXJ5IHN0dWIsIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM0MjkKKworICAgIGlmICht
aW5Mb2dpY2FsSW50ZXJ2YWxTaXplLndpZHRoKCkgPiBtX2JvdW5kaW5nQm94LndpZHRoKCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZsb2F0IG1pblkgPSBtaW5ZRm9yTG9naWNhbExp
bmUobWluTG9naWNhbEludGVydmFsVG9wLCBtaW5Mb2dpY2FsSW50ZXJ2YWxTaXplLmhlaWdodCgp
KTsKKyAgICBmbG9hdCBtYXhZID0gbWF4WUZvckxvZ2ljYWxMaW5lKG1pbkxvZ2ljYWxJbnRlcnZh
bFRvcCwgbWluTG9naWNhbEludGVydmFsU2l6ZS5oZWlnaHQoKSk7CisgICAgaWYgKG1pblkgPCBt
X2JvdW5kaW5nQm94LnkoKSB8fCBtYXhZID4gbV9ib3VuZGluZ0JveC5tYXhZKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIHJlc3VsdC5zZXQobV9ib3VuZGluZ0JveC54KCksIG1pbkxv
Z2ljYWxJbnRlcnZhbFRvcCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25Q
b2x5Z29uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uUG9seWdvbi5oCmlu
ZGV4IDY0N2ViMTcuLjkxMjJlMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9FeGNsdXNpb25Qb2x5Z29uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1
c2lvblBvbHlnb24uaApAQCAtNjYsNiArNjYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29s
IGlzRW1wdHkoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2VtcHR5OyB9CiAgICAgdmlydHVh
bCB2b2lkIGdldEV4Y2x1ZGVkSW50ZXJ2YWxzKGZsb2F0IGxvZ2ljYWxUb3AsIGZsb2F0IGxvZ2lj
YWxIZWlnaHQsIFNlZ21lbnRMaXN0JikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IGdldEluY2x1ZGVkSW50ZXJ2YWxzKGZsb2F0IGxvZ2ljYWxUb3AsIGZsb2F0IGxvZ2ljYWxIZWln
aHQsIFNlZ21lbnRMaXN0JikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGZpcnN0
SW5jbHVkZWRJbnRlcnZhbFBvc2l0aW9uKGZsb2F0IG1pbkxvZ2ljYWxJbnRlcnZhbFRvcCwgY29u
c3QgRmxvYXRTaXplJiBtaW5Mb2dpY2FsSW50ZXJ2YWxTaXplLCBGbG9hdFBvaW50JikgY29uc3Qg
T1ZFUlJJREU7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBjb21wdXRlWEludGVyc2VjdGlvbnMoZmxv
YXQgeSwgYm9vbCBpc01pblksIFZlY3RvcjxFeGNsdXNpb25JbnRlcnZhbD4mKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25SZWN0YW5nbGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblJlY3RhbmdsZS5jcHAKaW5kZXgg
MzI4Y2JhMi4uOWRhMTY5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4
Y2x1c2lvblJlY3RhbmdsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1
c2lvblJlY3RhbmdsZS5jcHAKQEAgLTExNSw0ICsxMTUsMjAgQEAgdm9pZCBFeGNsdXNpb25SZWN0
YW5nbGU6OmdldEluY2x1ZGVkSW50ZXJ2YWxzKGZsb2F0IGxvZ2ljYWxUb3AsIGZsb2F0IGxvZ2lj
YWxIZWkKICAgICByZXN1bHQuYXBwZW5kKExpbmVTZWdtZW50KHgxLCB4MikpOwogfQogCitib29s
IEV4Y2x1c2lvblJlY3RhbmdsZTo6Zmlyc3RJbmNsdWRlZEludGVydmFsUG9zaXRpb24oZmxvYXQg
bWluTG9naWNhbEludGVydmFsVG9wLCBjb25zdCBGbG9hdFNpemUmIG1pbkxvZ2ljYWxJbnRlcnZh
bFNpemUsIEZsb2F0UG9pbnQmIHJlc3VsdCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogVGhpcyBp
cyBqdXN0IGEgdGVtcG9yYXJ5IHN0dWIsIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDM0MjcKKworICAgIGlmIChtaW5Mb2dpY2FsSW50ZXJ2YWxTaXplLndpZHRoKCkg
PiBtX3dpZHRoKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBmbG9hdCBtaW5ZID0gbWlu
WUZvckxvZ2ljYWxMaW5lKG1pbkxvZ2ljYWxJbnRlcnZhbFRvcCwgbWluTG9naWNhbEludGVydmFs
U2l6ZS5oZWlnaHQoKSk7CisgICAgZmxvYXQgbWF4WSA9IG1heFlGb3JMb2dpY2FsTGluZShtaW5M
b2dpY2FsSW50ZXJ2YWxUb3AsIG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUuaGVpZ2h0KCkpOworICAg
IGlmIChtaW5ZIDwgbV95IHx8IG1heFkgPiBtX3kgKyBtX2hlaWdodCkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgcmVzdWx0LnNldChtX3gsIG1pbkxvZ2ljYWxJbnRlcnZhbFRvcCk7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25SZWN0YW5nbGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25SZWN0YW5nbGUuaAppbmRleCA1ODM5ZWVjLi41NzA1
ZDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uUmVjdGFu
Z2xlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblJlY3RhbmdsZS5o
CkBAIC01NCw2ICs1NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNFbXB0eSgpIGNv
bnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fd2lkdGggPD0gMCB8fCBtX2hlaWdodCA8PSAwOyB9CiAg
ICAgdmlydHVhbCB2b2lkIGdldEV4Y2x1ZGVkSW50ZXJ2YWxzKGZsb2F0IGxvZ2ljYWxUb3AsIGZs
b2F0IGxvZ2ljYWxIZWlnaHQsIFNlZ21lbnRMaXN0JikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIGdldEluY2x1ZGVkSW50ZXJ2YWxzKGZsb2F0IGxvZ2ljYWxUb3AsIGZsb2F0IGxv
Z2ljYWxIZWlnaHQsIFNlZ21lbnRMaXN0JikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBi
b29sIGZpcnN0SW5jbHVkZWRJbnRlcnZhbFBvc2l0aW9uKGZsb2F0IG1pbkxvZ2ljYWxJbnRlcnZh
bFRvcCwgY29uc3QgRmxvYXRTaXplJiBtaW5Mb2dpY2FsSW50ZXJ2YWxTaXplLCBGbG9hdFBvaW50
JikgY29uc3QgT1ZFUlJJREU7CiAKIHByaXZhdGU6CiAgICAgZmxvYXQgbV94OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGUuaAppbmRleCAwNzVjMDAyLi44NDlhMDgwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGUuaApAQCAtNjcsMTEgKzY3
LDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNFbXB0eSgpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZ2V0SW5jbHVkZWRJbnRlcnZhbHMoZmxvYXQgbG9naWNhbFRvcCwgZmxv
YXQgbG9naWNhbEhlaWdodCwgU2VnbWVudExpc3QmKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGdldEV4Y2x1ZGVkSW50ZXJ2YWxzKGZsb2F0IGxvZ2ljYWxUb3AsIGZsb2F0IGxvZ2ljYWxI
ZWlnaHQsIFNlZ21lbnRMaXN0JikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBmaXJzdElu
Y2x1ZGVkSW50ZXJ2YWxQb3NpdGlvbihmbG9hdCBtaW5Mb2dpY2FsSW50ZXJ2YWxUb3AsIGNvbnN0
IEZsb2F0U2l6ZSYgbWluTG9naWNhbEludGVydmFsU2l6ZSwgRmxvYXRQb2ludCYpIGNvbnN0ID0g
MDsKIAogcHJvdGVjdGVkOgotICAgIGZsb2F0IG1pbllGb3JMb2dpY2FsTGluZShmbG9hdCBsb2dp
Y2FsVG9wLCBmbG9hdCBsb2dpY2FsSGVpZ2h0KSBjb25zdCB7IHJldHVybiAobV93cml0aW5nTW9k
ZSA9PSBSaWdodFRvTGVmdFdyaXRpbmdNb2RlKSA/IG1fbG9naWNhbEJveEhlaWdodCAtIGxvZ2lj
YWxUb3AgLSBsb2dpY2FsSGVpZ2h0IDogbG9naWNhbFRvcDsgfQotICAgIGZsb2F0IG1heFlGb3JM
b2dpY2FsTGluZShmbG9hdCBsb2dpY2FsVG9wLCBmbG9hdCBsb2dpY2FsSGVpZ2h0KSBjb25zdCB7
IHJldHVybiAobV93cml0aW5nTW9kZSA9PSBSaWdodFRvTGVmdFdyaXRpbmdNb2RlKSA/IG1fbG9n
aWNhbEJveEhlaWdodCAtIGxvZ2ljYWxUb3AgOiBsb2dpY2FsVG9wICsgbG9naWNhbEhlaWdodDsg
fQotICAgIEZsb2F0UmVjdCBpbnRlcm5hbFRvTG9naWNhbEJvdW5kaW5nQm94KEZsb2F0UmVjdCBy
KSBjb25zdCB7IHJldHVybiAobV93cml0aW5nTW9kZSA9PSBSaWdodFRvTGVmdFdyaXRpbmdNb2Rl
KSA/IEZsb2F0UmVjdChyLngoKSwgbV9sb2dpY2FsQm94SGVpZ2h0IC0gci5tYXhZKCksIHIud2lk
dGgoKSwgci5oZWlnaHQoKSkgOiByOyB9CisgICAgZmxvYXQgbWluWUZvckxvZ2ljYWxMaW5lKGZs
b2F0IGxvZ2ljYWxUb3AsIGZsb2F0IGxvZ2ljYWxIZWlnaHQpIGNvbnN0IHsgcmV0dXJuIGlzRmxp
cHBlZEJsb2Nrc1dyaXRpbmdNb2RlKG1fd3JpdGluZ01vZGUpID8gbV9sb2dpY2FsQm94SGVpZ2h0
IC0gbG9naWNhbFRvcCAtIGxvZ2ljYWxIZWlnaHQgOiBsb2dpY2FsVG9wOyB9CisgICAgZmxvYXQg
bWF4WUZvckxvZ2ljYWxMaW5lKGZsb2F0IGxvZ2ljYWxUb3AsIGZsb2F0IGxvZ2ljYWxIZWlnaHQp
IGNvbnN0IHsgcmV0dXJuICBpc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZShtX3dyaXRpbmdNb2Rl
KSA/IG1fbG9naWNhbEJveEhlaWdodCAtIGxvZ2ljYWxUb3AgOiBsb2dpY2FsVG9wICsgbG9naWNh
bEhlaWdodDsgfQorICAgIEZsb2F0UmVjdCBpbnRlcm5hbFRvTG9naWNhbEJvdW5kaW5nQm94KGNv
bnN0IEZsb2F0UmVjdCYgcikgY29uc3QgeyByZXR1cm4gaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01v
ZGUobV93cml0aW5nTW9kZSkgPyBGbG9hdFJlY3Qoci54KCksIG1fbG9naWNhbEJveEhlaWdodCAt
IHIubWF4WSgpLCByLndpZHRoKCksIHIuaGVpZ2h0KCkpIDogcjsgfQogCiBwcml2YXRlOgogICAg
IFdyaXRpbmdNb2RlIG1fd3JpdGluZ01vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9FeGNsdXNpb25TaGFwZUluc2lkZUluZm8uY3BwCmluZGV4IDkzNGUzZjIuLmViZDZl
ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25TaGFwZUlu
c2lkZUluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25TaGFw
ZUluc2lkZUluZm8uY3BwCkBAIC0xMTcsNSArMTE3LDIyIEBAIGJvb2wgRXhjbHVzaW9uU2hhcGVJ
bnNpZGVJbmZvOjpjb21wdXRlU2VnbWVudHNGb3JMaW5lKExheW91dFVuaXQgbGluZVRvcCwgTGF5
b3V0CiAgICAgcmV0dXJuIG1fc2VnbWVudHMuc2l6ZSgpOwogfQogCitib29sIEV4Y2x1c2lvblNo
YXBlSW5zaWRlSW5mbzo6YWRqdXN0U2VnbWVudHNGb3JMaW5lKGZsb2F0IG1pblNlZ21lbnRXaWR0
aCkKK3sKKyAgICBpZiAoIW1fc2hhcGUgfHwgbV9saW5lSGVpZ2h0IDw9IDApCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIEZsb2F0UG9pbnQgaW50ZXJ2YWxQb3NpdGlvbjsKKyAgICBpZiAo
bV9zaGFwZS0+Zmlyc3RJbmNsdWRlZEludGVydmFsUG9zaXRpb24obV9saW5lVG9wLCBGbG9hdFNp
emUobWluU2VnbWVudFdpZHRoLCBtX2xpbmVIZWlnaHQpLCBpbnRlcnZhbFBvc2l0aW9uKSkgewor
ICAgICAgICAvLyBVc2UgZnJvbUZsb2F0Q2VpbCgpIHRvIGVuc3VyZSB0aGF0IHRoZSByZXR1cm5l
ZCBMYXlvdXRVbml0IHZhbHVlIGlzIHdpdGhpbiB0aGUgc2hhcGUncyBib3VuZHMuCisgICAgICAg
IExheW91dFVuaXQgbmV3TGluZVRvcCA9IExheW91dFVuaXQ6OmZyb21GbG9hdENlaWwoaW50ZXJ2
YWxQb3NpdGlvbi55KCkpOworICAgICAgICBpZiAobmV3TGluZVRvcCAhPSBtX2xpbmVUb3ApCisg
ICAgICAgICAgICBjb21wdXRlU2VnbWVudHNGb3JMaW5lKG5ld0xpbmVUb3AsIG1fbGluZUhlaWdo
dCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30K
KwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVz
aW9uU2hhcGVJbnNpZGVJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9u
U2hhcGVJbnNpZGVJbmZvLmgKaW5kZXggOGJlMTE0ZC4uMzZmYzhmNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25TaGFwZUluc2lkZUluZm8uaApAQCAtNjgs
OSArNjgsMTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9zZWdtZW50czsKICAgICB9CiAg
ICAgYm9vbCBjb21wdXRlU2VnbWVudHNGb3JMaW5lKExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0
VW5pdCBsaW5lSGVpZ2h0KTsKKyAgICBib29sIGFkanVzdFNlZ21lbnRzRm9yTGluZShmbG9hdCBt
aW5TZWdtZW50V2lkdGgpOwogICAgIHZvaWQgY29tcHV0ZVNoYXBlU2l6ZShMYXlvdXRVbml0IGxv
Z2ljYWxXaWR0aCwgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0KTsKICAgICB2b2lkIGRpcnR5U2hh
cGVTaXplKCkgeyBtX3NoYXBlU2l6ZURpcnR5ID0gdHJ1ZTsgfQogCisgICAgTGF5b3V0VW5pdCBs
aW5lTG9naWNhbFRvcCgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZVRvcDsgfQorCiBwcml2YXRlOgog
ICAgIEV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbyhSZW5kZXJCbG9jayopOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCmluZGV4IDQ0
MmMwMTAuLjFiYmFkMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9ja0xpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9ja0xpbmVMYXlvdXQuY3BwCkBAIC0xNDQ3LDYgKzE0NDcsMTEgQEAgdm9pZCBSZW5kZXJC
bG9jazo6bGF5b3V0UnVuc0FuZEZsb2F0c0luUmFuZ2UoTGluZUxheW91dFN0YXRlJiBsYXlvdXRT
dGF0ZSwgSW5saW4KICAgICAgICAgfQogICAgICAgICBBU1NFUlQoZW5kICE9IHJlc29sdmVyLnBv
c2l0aW9uKCkpOwogCisjaWYgRU5BQkxFKENTU19FWENMVVNJT05TKQorICAgICAgICBpZiAoZXhj
bHVzaW9uU2hhcGVJbnNpZGVJbmZvICYmIHdvcmRNZWFzdXJlbWVudHMuc2l6ZSgpID4gMCAmJiBl
eGNsdXNpb25TaGFwZUluc2lkZUluZm8tPmFkanVzdFNlZ21lbnRzRm9yTGluZSh3b3JkTWVhc3Vy
ZW1lbnRzWzBdLndpZHRoKSkKKyAgICAgICAgICAgIHNldExvZ2ljYWxIZWlnaHQoZXhjbHVzaW9u
U2hhcGVJbnNpZGVJbmZvLT5saW5lTG9naWNhbFRvcCgpIC0gYWJzb2x1dGVMb2dpY2FsVG9wKTsK
KyNlbmRpZgorCiAgICAgICAgIC8vIFRoaXMgaXMgYSBzaG9ydC1jdXQgZm9yIGVtcHR5IGxpbmVz
LgogICAgICAgICBpZiAobGF5b3V0U3RhdGUubGluZUluZm8oKS5pc0VtcHR5KCkpIHsKICAgICAg
ICAgICAgIGlmIChsYXN0Um9vdEJveCgpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176359</attachid>
            <date>2012-11-27 16:13:49 -0800</date>
            <delta_ts>2012-11-28 22:31:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>12065</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjZDU4MmExLi43YTc2MzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjAg
QEAKKzIwMTItMTEtMjcgIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CisKKyAgICAg
ICAgW0NTUyBFeGNsdXNpb25zXSBBZGQgc3VwcG9ydCBmb3IgY29tcHV0aW5nIHRoZSBmaXJzdCBp
bmNsdWRlZCBpbnRlcnZhbCBwb3NpdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwMzMyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZGVkIEV4Y2x1c2lvblNoYXBlOjpmaXJzdEluY2x1ZGVkSW50
ZXJ2YWxQb3NpdGlvbigpLiBUaGUgbmV3IHZpcnR1YWwgbWV0aG9kCisgICAgICAgIGNvbXB1dGVz
IHRoZSB0b3Btb3N0L2xlZnRtb3N0IGxvY2F0aW9uIHdoZXJlIGEgbGluZSBzZWdtZW50IHdpdGgg
dGhlIHNwZWNpZmllZAorICAgICAgICBtaW5Mb2dpY2FsSW50ZXJ2YWxTaXplIHdpbGwgZml0IHdp
dGhpbiB0aGUgZXhjbHVzaW9uIHNoYXBlLiBUaGUgcmVzdWx0IGlzCisgICAgICAgIGFkZGl0aW9u
YWxseSBjb25zdHJhaW5lZCB0byBiZSBhdCBvciBiZWxvdyBtaW5Mb2dpY2FsSW50ZXJ2YWxUb3Au
IElmIHRoZQorICAgICAgICBzZWdtZW50IHdpbGwgbm90IGZpdCBhbnl3aGVyZSB3aXRoaW4gdGhl
IHNoYXBlLCB0aGVuIGZhbHNlIGlzIHJldHVybmVkLgorCisgICAgICAgIER1cmluZyBsYXlvdXQs
IG1pbkxvZ2ljYWxJbnRlcnZhbFRvcCBpcyB0aGUgbm9taW5hbCB0b3Agb2YgdGhlIGxpbmUgYmVp
bmcgbGFpZAorICAgICAgICBvdXQgd2l0aGluIHRoZSBleGNsdXNpb24gc2hhcGUuCisKKyAgICAg
ICAgUmVuZGVyQmxvY2s6OmxheW91dFJ1bnNBbmRGbG9hdHNJblJhbmdlKCkgbm93IGNhbGxzIGEg
bmV3IEV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbworICAgICAgICBtZXRob2QsIGFkanVzdFNlZ21l
bnRzRm9yTGluZSgpLCB3aGljaCB1c2VzIGZpcnN0SW5jbHVkZWRJbnRlcnZhbFBvc2l0aW9uKCkg
dG8KKyAgICAgICAgZGVjaWRlIGlmIHRoZSBsb2dpY2FsIHRvcCBvZiB0aGUgbGluZSBoYXMgdG8g
YmUgbW92ZWQgZG93bndhcmRzLCBmb3IgdGhlIGZpcnN0CisgICAgICAgIHdvcmQgdG8gZml0IHdp
dGhpbiB0aGUgZXhjbHVzaW9uIHNoYXBlLgorCisgICAgICAgIEN1cnJlbnRseSwgdGhlIGltcGxl
bWVudGF0aW9ucyBvZiBmaXJzdEluY2x1ZGVkSW50ZXJ2YWxQb3NpdGlvbigpIGFyZSBzdHVicyB3
aGljaAorICAgICAgICBiZWhhdmUgaW4gdGhlIHNhbWUgd2F5IGFzIHRoZSBjdXJyZW50IGV4Y2x1
c2lvbnMgaW1wbGVtZW50YXRpb24uCisgICAgICAgIElmIGEgc2VnbWVudCBvZiBtaW5Mb2dpY2Fs
SW50ZXJ2YWxTaXplIHdpbGwgZml0IHdpdGhpbiB0aGUgc2hhcGUncyBsb2dpY2FsCisgICAgICAg
IGJvdW5kaW5nIGJveCwgdGhlbiB0aGUgcmV0dXJuZWQgcG9pbnQncyBZIGNvb3JkaW5hdGUgaXMg
anVzdCBtaW5Mb2dpY2FsSW50ZXJ2YWxUb3AuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIGlu
Y2x1ZGVzIG9uZSBtaW5vciBjbGVhbnVwOiB0aGUgcHJvdGVjdGVkIEV4Y2x1c2lvblNoYXBlIGlu
bGluZXMsCisgICAgICAgIGxpa2UgbWluWUZvckxvZ2ljYWxMaW5lKCksIG5vdyB1c2UgaXNGbGlw
cGVkQmxvY2tzV3JpdGluZ01vZGUoKSBpbnN0ZWFkIG9mIHRlc3RpbmcKKyAgICAgICAgZm9yIFJp
Z2h0VG9MZWZ0V3JpdGluZ01vZGUgZGlyZWN0bHkuIFRoaXMgY2hhbmdlaW1wcm92ZXMgY29uc2lz
dGVuY3kgd2l0aCB0aGUgcmVzdAorICAgICAgICBvZiBXZWJLaXQgYW5kIHdpbGwgd29yayBjb3Jy
ZWN0bHkgaWYgImhvcml6b250YWwtYnQiIHdyaXRpbmctbW9kZSBzdXBwb3J0IGlzIGV2ZXIgYWRk
ZWQuCisKKyAgICAgICAgVGhlIGZpcnN0SW5jbHVkZWRJbnRlcnZhbFBvc2l0aW9uKCkgc3R1YnMg
d2lsbCBiZSByZXBsYWNlZCBieSBwYXRjaGVzIGZvcjoKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzQyNworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzNDI5CisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGFy
ZSBuZWVkZWQgc2luY2UgdGhlIHJlc3RydWN0dXJpbmcgaW50cm9kdWNlZCBoZXJlIGRvZXNuJ3Qg
Y2hhbmdlCisgICAgICAgIHRoZSBleGlzdGluZyBmdW5jdGlvbmFsaXR5LCBpdCBqdXN0IHBhdmVz
IHRoZSB3YXkgZm9yIG5ldyBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogcmVuZGVyaW5nL0V4
Y2x1c2lvblBvbHlnb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXhjbHVzaW9uUG9seWdvbjo6
Zmlyc3RJbmNsdWRlZEludGVydmFsUG9zaXRpb24pOiBUaGlzIGlzIGEgc3R1YiBpbXBsZW1lbnRh
dGlvbi4KKyAgICAgICAgKiByZW5kZXJpbmcvRXhjbHVzaW9uUG9seWdvbi5oOgorICAgICAgICAq
IHJlbmRlcmluZy9FeGNsdXNpb25SZWN0YW5nbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXhj
bHVzaW9uUmVjdGFuZ2xlOjpmaXJzdEluY2x1ZGVkSW50ZXJ2YWxQb3NpdGlvbik6IFRoaXMgaXMg
YSBzdHViIGltcGxlbWVudGF0aW9uLgorICAgICAgICAqIHJlbmRlcmluZy9FeGNsdXNpb25SZWN0
YW5nbGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGUuaDoKKyAgICAgICAg
KEV4Y2x1c2lvblNoYXBlKTogQWRkZWQgdGhlIGZpcnN0SW5jbHVkZWRJbnRlcnZhbFBvc2l0aW9u
KCkgbWV0aG9kLgorICAgICAgICAoV2ViQ29yZTo6RXhjbHVzaW9uU2hhcGU6Om1pbllGb3JMb2dp
Y2FsTGluZSk6IFVzZSBpc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpIGluc3RlYWQgb2YgdGVz
dGluZyBmb3IgUmlnaHRUb0xlZnRXcml0aW5nTW9kZSBkaXJlY3RseS4KKyAgICAgICAgKFdlYkNv
cmU6OkV4Y2x1c2lvblNoYXBlOjptYXhZRm9yTG9naWNhbExpbmUpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkV4Y2x1c2lvblNoYXBlOjppbnRlcm5hbFRvTG9naWNhbEJvdW5kaW5nQm94KTog
RGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpFeGNsdXNpb25TaGFwZUluc2lkZUluZm86OmFkanVzdExvZ2lj
YWxMaW5lVG9wKTogQSBuZXcgbWV0aG9kIHRoYXQgdXBkYXRlcyBtX2xpbmVUb3Agd2l0aCBmaXJz
dEluY2x1ZGVkSW50ZXJ2YWxQb3NpdGlvbigpLgorICAgICAgICAqIHJlbmRlcmluZy9FeGNsdXNp
b25TaGFwZUluc2lkZUluZm8uaDoKKyAgICAgICAgKEV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbyk6
CisgICAgICAgIChXZWJDb3JlOjpFeGNsdXNpb25TaGFwZUluc2lkZUluZm86OmxpbmVMb2dpY2Fs
VG9wKTogVGhpcyBpcyBqdXN0IGEgY292ZXIgZm9yIHRoZSBwcml2YXRlIG1fbGluZVRvcCBmaWVs
ZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpsYXlvdXRSdW5zQW5kRmxvYXRzSW5SYW5nZSk6IElu
c2VydGVkIGEgY2FsbCB0byBhZGp1c3RTZWdtZW50c0ZvckxpbmUoKS4KKwogMjAxMi0xMS0yNyAg
RGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSB0cmFjayBsaXN0
IGNvbnRyb2wgYWN0aXZlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhj
bHVzaW9uUG9seWdvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uUG9s
eWdvbi5jcHAKaW5kZXggMjFiZWFjMS4uNmI4MWFlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0V4Y2x1c2lvblBvbHlnb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9FeGNsdXNpb25Qb2x5Z29uLmNwcApAQCAtMzc2LDQgKzM3NiwyMCBAQCB2b2lkIEV4
Y2x1c2lvblBvbHlnb246OmdldEluY2x1ZGVkSW50ZXJ2YWxzKGZsb2F0IGxvZ2ljYWxUb3AsIGZs
b2F0IGxvZ2ljYWxIZWlnaAogICAgIH0KIH0KIAorYm9vbCBFeGNsdXNpb25Qb2x5Z29uOjpmaXJz
dEluY2x1ZGVkSW50ZXJ2YWxQb3NpdGlvbihmbG9hdCBtaW5Mb2dpY2FsSW50ZXJ2YWxUb3AsIGNv
bnN0IEZsb2F0U2l6ZSYgbWluTG9naWNhbEludGVydmFsU2l6ZSwgRmxvYXRQb2ludCYgcmVzdWx0
KSBjb25zdAoreworICAgIC8vIEZJWE1FOiBUaGlzIGlzIGp1c3QgYSB0ZW1wb3Jhcnkgc3R1Yiwg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzQyOQorCisgICAgaWYg
KG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUud2lkdGgoKSA+IG1fYm91bmRpbmdCb3gud2lkdGgoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZmxvYXQgbWluWSA9IG1pbllGb3JMb2dpY2Fs
TGluZShtaW5Mb2dpY2FsSW50ZXJ2YWxUb3AsIG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUuaGVpZ2h0
KCkpOworICAgIGZsb2F0IG1heFkgPSBtYXhZRm9yTG9naWNhbExpbmUobWluTG9naWNhbEludGVy
dmFsVG9wLCBtaW5Mb2dpY2FsSW50ZXJ2YWxTaXplLmhlaWdodCgpKTsKKyAgICBpZiAobWluWSA8
IG1fYm91bmRpbmdCb3gueSgpIHx8IG1heFkgPiBtX2JvdW5kaW5nQm94Lm1heFkoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgcmVzdWx0LnNldChtX2JvdW5kaW5nQm94LngoKSwgbWlu
TG9naWNhbEludGVydmFsVG9wKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lv
blBvbHlnb24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25Qb2x5Z29uLmgK
aW5kZXggNjQ3ZWIxNy4uOTEyMmUwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0V4Y2x1c2lvblBvbHlnb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhj
bHVzaW9uUG9seWdvbi5oCkBAIC02Niw2ICs2Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJv
b2wgaXNFbXB0eSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fZW1wdHk7IH0KICAgICB2aXJ0
dWFsIHZvaWQgZ2V0RXhjbHVkZWRJbnRlcnZhbHMoZmxvYXQgbG9naWNhbFRvcCwgZmxvYXQgbG9n
aWNhbEhlaWdodCwgU2VnbWVudExpc3QmKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgZ2V0SW5jbHVkZWRJbnRlcnZhbHMoZmxvYXQgbG9naWNhbFRvcCwgZmxvYXQgbG9naWNhbEhl
aWdodCwgU2VnbWVudExpc3QmKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgZmly
c3RJbmNsdWRlZEludGVydmFsUG9zaXRpb24oZmxvYXQgbWluTG9naWNhbEludGVydmFsVG9wLCBj
b25zdCBGbG9hdFNpemUmIG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUsIEZsb2F0UG9pbnQmKSBjb25z
dCBPVkVSUklERTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGNvbXB1dGVYSW50ZXJzZWN0aW9ucyhm
bG9hdCB5LCBib29sIGlzTWluWSwgVmVjdG9yPEV4Y2x1c2lvbkludGVydmFsPiYpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblJlY3RhbmdsZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uUmVjdGFuZ2xlLmNwcAppbmRl
eCAzMjhjYmEyLi45ZGExNjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
RXhjbHVzaW9uUmVjdGFuZ2xlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhj
bHVzaW9uUmVjdGFuZ2xlLmNwcApAQCAtMTE1LDQgKzExNSwyMCBAQCB2b2lkIEV4Y2x1c2lvblJl
Y3RhbmdsZTo6Z2V0SW5jbHVkZWRJbnRlcnZhbHMoZmxvYXQgbG9naWNhbFRvcCwgZmxvYXQgbG9n
aWNhbEhlaQogICAgIHJlc3VsdC5hcHBlbmQoTGluZVNlZ21lbnQoeDEsIHgyKSk7CiB9CiAKK2Jv
b2wgRXhjbHVzaW9uUmVjdGFuZ2xlOjpmaXJzdEluY2x1ZGVkSW50ZXJ2YWxQb3NpdGlvbihmbG9h
dCBtaW5Mb2dpY2FsSW50ZXJ2YWxUb3AsIGNvbnN0IEZsb2F0U2l6ZSYgbWluTG9naWNhbEludGVy
dmFsU2l6ZSwgRmxvYXRQb2ludCYgcmVzdWx0KSBjb25zdAoreworICAgIC8vIEZJWE1FOiBUaGlz
IGlzIGp1c3QgYSB0ZW1wb3Jhcnkgc3R1YiwgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwMzQyNworCisgICAgaWYgKG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUud2lkdGgo
KSA+IG1fd2lkdGgpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZsb2F0IG1pblkgPSBt
aW5ZRm9yTG9naWNhbExpbmUobWluTG9naWNhbEludGVydmFsVG9wLCBtaW5Mb2dpY2FsSW50ZXJ2
YWxTaXplLmhlaWdodCgpKTsKKyAgICBmbG9hdCBtYXhZID0gbWF4WUZvckxvZ2ljYWxMaW5lKG1p
bkxvZ2ljYWxJbnRlcnZhbFRvcCwgbWluTG9naWNhbEludGVydmFsU2l6ZS5oZWlnaHQoKSk7Cisg
ICAgaWYgKG1pblkgPCBtX3kgfHwgbWF4WSA+IG1feSArIG1faGVpZ2h0KQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICByZXN1bHQuc2V0KG1feCwgbWluTG9naWNhbEludGVydmFsVG9wKTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblJlY3RhbmdsZS5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblJlY3RhbmdsZS5oCmluZGV4IDU4MzllZWMuLjU3
MDVkOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25SZWN0
YW5nbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uUmVjdGFuZ2xl
LmgKQEAgLTU0LDYgKzU0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5KCkg
Y29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV93aWR0aCA8PSAwIHx8IG1faGVpZ2h0IDw9IDA7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgZ2V0RXhjbHVkZWRJbnRlcnZhbHMoZmxvYXQgbG9naWNhbFRvcCwg
ZmxvYXQgbG9naWNhbEhlaWdodCwgU2VnbWVudExpc3QmKSBjb25zdCBPVkVSUklERTsKICAgICB2
aXJ0dWFsIHZvaWQgZ2V0SW5jbHVkZWRJbnRlcnZhbHMoZmxvYXQgbG9naWNhbFRvcCwgZmxvYXQg
bG9naWNhbEhlaWdodCwgU2VnbWVudExpc3QmKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IGJvb2wgZmlyc3RJbmNsdWRlZEludGVydmFsUG9zaXRpb24oZmxvYXQgbWluTG9naWNhbEludGVy
dmFsVG9wLCBjb25zdCBGbG9hdFNpemUmIG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUsIEZsb2F0UG9p
bnQmKSBjb25zdCBPVkVSUklERTsKIAogcHJpdmF0ZToKICAgICBmbG9hdCBtX3g7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25TaGFwZS5oCmluZGV4IDA3NWMwMDIuLjg0OWEwODAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25TaGFwZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25TaGFwZS5oCkBAIC02NywxMSAr
NjcsMTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5KCkgY29uc3QgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBnZXRJbmNsdWRlZEludGVydmFscyhmbG9hdCBsb2dpY2FsVG9wLCBm
bG9hdCBsb2dpY2FsSGVpZ2h0LCBTZWdtZW50TGlzdCYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZ2V0RXhjbHVkZWRJbnRlcnZhbHMoZmxvYXQgbG9naWNhbFRvcCwgZmxvYXQgbG9naWNh
bEhlaWdodCwgU2VnbWVudExpc3QmKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGZpcnN0
SW5jbHVkZWRJbnRlcnZhbFBvc2l0aW9uKGZsb2F0IG1pbkxvZ2ljYWxJbnRlcnZhbFRvcCwgY29u
c3QgRmxvYXRTaXplJiBtaW5Mb2dpY2FsSW50ZXJ2YWxTaXplLCBGbG9hdFBvaW50JikgY29uc3Qg
PSAwOwogCiBwcm90ZWN0ZWQ6Ci0gICAgZmxvYXQgbWluWUZvckxvZ2ljYWxMaW5lKGZsb2F0IGxv
Z2ljYWxUb3AsIGZsb2F0IGxvZ2ljYWxIZWlnaHQpIGNvbnN0IHsgcmV0dXJuIChtX3dyaXRpbmdN
b2RlID09IFJpZ2h0VG9MZWZ0V3JpdGluZ01vZGUpID8gbV9sb2dpY2FsQm94SGVpZ2h0IC0gbG9n
aWNhbFRvcCAtIGxvZ2ljYWxIZWlnaHQgOiBsb2dpY2FsVG9wOyB9Ci0gICAgZmxvYXQgbWF4WUZv
ckxvZ2ljYWxMaW5lKGZsb2F0IGxvZ2ljYWxUb3AsIGZsb2F0IGxvZ2ljYWxIZWlnaHQpIGNvbnN0
IHsgcmV0dXJuIChtX3dyaXRpbmdNb2RlID09IFJpZ2h0VG9MZWZ0V3JpdGluZ01vZGUpID8gbV9s
b2dpY2FsQm94SGVpZ2h0IC0gbG9naWNhbFRvcCA6IGxvZ2ljYWxUb3AgKyBsb2dpY2FsSGVpZ2h0
OyB9Ci0gICAgRmxvYXRSZWN0IGludGVybmFsVG9Mb2dpY2FsQm91bmRpbmdCb3goRmxvYXRSZWN0
IHIpIGNvbnN0IHsgcmV0dXJuIChtX3dyaXRpbmdNb2RlID09IFJpZ2h0VG9MZWZ0V3JpdGluZ01v
ZGUpID8gRmxvYXRSZWN0KHIueCgpLCBtX2xvZ2ljYWxCb3hIZWlnaHQgLSByLm1heFkoKSwgci53
aWR0aCgpLCByLmhlaWdodCgpKSA6IHI7IH0KKyAgICBmbG9hdCBtaW5ZRm9yTG9naWNhbExpbmUo
ZmxvYXQgbG9naWNhbFRvcCwgZmxvYXQgbG9naWNhbEhlaWdodCkgY29uc3QgeyByZXR1cm4gaXNG
bGlwcGVkQmxvY2tzV3JpdGluZ01vZGUobV93cml0aW5nTW9kZSkgPyBtX2xvZ2ljYWxCb3hIZWln
aHQgLSBsb2dpY2FsVG9wIC0gbG9naWNhbEhlaWdodCA6IGxvZ2ljYWxUb3A7IH0KKyAgICBmbG9h
dCBtYXhZRm9yTG9naWNhbExpbmUoZmxvYXQgbG9naWNhbFRvcCwgZmxvYXQgbG9naWNhbEhlaWdo
dCkgY29uc3QgeyByZXR1cm4gIGlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKG1fd3JpdGluZ01v
ZGUpID8gbV9sb2dpY2FsQm94SGVpZ2h0IC0gbG9naWNhbFRvcCA6IGxvZ2ljYWxUb3AgKyBsb2dp
Y2FsSGVpZ2h0OyB9CisgICAgRmxvYXRSZWN0IGludGVybmFsVG9Mb2dpY2FsQm91bmRpbmdCb3go
Y29uc3QgRmxvYXRSZWN0JiByKSBjb25zdCB7IHJldHVybiBpc0ZsaXBwZWRCbG9ja3NXcml0aW5n
TW9kZShtX3dyaXRpbmdNb2RlKSA/IEZsb2F0UmVjdChyLngoKSwgbV9sb2dpY2FsQm94SGVpZ2h0
IC0gci5tYXhZKCksIHIud2lkdGgoKSwgci5oZWlnaHQoKSkgOiByOyB9CiAKIHByaXZhdGU6CiAg
ICAgV3JpdGluZ01vZGUgbV93cml0aW5nTW9kZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9FeGNsdXNpb25TaGFwZUluc2lkZUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby5jcHAKaW5kZXggOTM0ZTNmMi4uZjlj
MDdiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBl
SW5zaWRlSW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblNo
YXBlSW5zaWRlSW5mby5jcHAKQEAgLTExNyw1ICsxMTcsMjAgQEAgYm9vbCBFeGNsdXNpb25TaGFw
ZUluc2lkZUluZm86OmNvbXB1dGVTZWdtZW50c0ZvckxpbmUoTGF5b3V0VW5pdCBsaW5lVG9wLCBM
YXlvdXQKICAgICByZXR1cm4gbV9zZWdtZW50cy5zaXplKCk7CiB9CiAKK2Jvb2wgRXhjbHVzaW9u
U2hhcGVJbnNpZGVJbmZvOjphZGp1c3RMb2dpY2FsTGluZVRvcChmbG9hdCBtaW5TZWdtZW50V2lk
dGgpCit7CisgICAgaWYgKCFtX3NoYXBlIHx8IG1fbGluZUhlaWdodCA8PSAwKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBGbG9hdFBvaW50IGludGVydmFsUG9zaXRpb247CisgICAgaWYg
KG1fc2hhcGUtPmZpcnN0SW5jbHVkZWRJbnRlcnZhbFBvc2l0aW9uKG1fbGluZVRvcCwgRmxvYXRT
aXplKG1pblNlZ21lbnRXaWR0aCwgbV9saW5lSGVpZ2h0KSwgaW50ZXJ2YWxQb3NpdGlvbikpIHsK
KyAgICAgICAgLy8gVXNlIGZyb21GbG9hdENlaWwoKSB0byBlbnN1cmUgdGhhdCB0aGUgcmV0dXJu
ZWQgTGF5b3V0VW5pdCB2YWx1ZSBpcyB3aXRoaW4gdGhlIHNoYXBlJ3MgYm91bmRzLgorICAgICAg
ICBMYXlvdXRVbml0IG5ld0xpbmVUb3AgPSBMYXlvdXRVbml0Ojpmcm9tRmxvYXRDZWlsKGludGVy
dmFsUG9zaXRpb24ueSgpKTsKKyAgICAgICAgcmV0dXJuIG5ld0xpbmVUb3AgIT0gbV9saW5lVG9w
OworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwogfQogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLmgKaW5kZXgg
OGJlMTE0ZC4uNzYwM2RlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4
Y2x1c2lvblNoYXBlSW5zaWRlSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9F
eGNsdXNpb25TaGFwZUluc2lkZUluZm8uaApAQCAtNjgsOSArNjgsMTIgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gbV9zZWdtZW50czsKICAgICB9CiAgICAgYm9vbCBjb21wdXRlU2VnbWVudHNG
b3JMaW5lKExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lSGVpZ2h0KTsKKyAgICBi
b29sIGFkanVzdExvZ2ljYWxMaW5lVG9wKGZsb2F0IG1pblNlZ21lbnRXaWR0aCk7CiAgICAgdm9p
ZCBjb21wdXRlU2hhcGVTaXplKExheW91dFVuaXQgbG9naWNhbFdpZHRoLCBMYXlvdXRVbml0IGxv
Z2ljYWxIZWlnaHQpOwogICAgIHZvaWQgZGlydHlTaGFwZVNpemUoKSB7IG1fc2hhcGVTaXplRGly
dHkgPSB0cnVlOyB9CiAKKyAgICBMYXlvdXRVbml0IGxvZ2ljYWxMaW5lVG9wKCkgY29uc3QgeyBy
ZXR1cm4gbV9saW5lVG9wOyB9CisKIHByaXZhdGU6CiAgICAgRXhjbHVzaW9uU2hhcGVJbnNpZGVJ
bmZvKFJlbmRlckJsb2NrKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrTGluZUxheW91dC5jcHAKaW5kZXggNDQyYzAxMC4uYzA2Y2M5YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKQEAg
LTE0NDcsNiArMTQ0NywxNiBAQCB2b2lkIFJlbmRlckJsb2NrOjpsYXlvdXRSdW5zQW5kRmxvYXRz
SW5SYW5nZShMaW5lTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBJbmxpbgogICAgICAgICB9CiAg
ICAgICAgIEFTU0VSVChlbmQgIT0gcmVzb2x2ZXIucG9zaXRpb24oKSk7CiAKKyNpZiBFTkFCTEUo
Q1NTX0VYQ0xVU0lPTlMpCisgICAgICAgIGlmIChleGNsdXNpb25TaGFwZUluc2lkZUluZm8gJiYg
d29yZE1lYXN1cmVtZW50cy5zaXplKCkgJiYgZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLT5hZGp1
c3RMb2dpY2FsTGluZVRvcCh3b3JkTWVhc3VyZW1lbnRzWzBdLndpZHRoKSkgeworICAgICAgICAg
ICAgcmVtb3ZlRmxvYXRpbmdPYmplY3RzQmVsb3cobGFzdEZsb2F0RnJvbVByZXZpb3VzTGluZSwg
bG9naWNhbEhlaWdodCgpKTsKKyAgICAgICAgICAgIHJlc29sdmVyLnNldFBvc2l0aW9uSWdub3Jp
bmdOZXN0ZWRJc29sYXRlcyhvbGRFbmQpOworICAgICAgICAgICAgZW5kID0gb2xkRW5kOworICAg
ICAgICAgICAgc2V0TG9naWNhbEhlaWdodChleGNsdXNpb25TaGFwZUluc2lkZUluZm8tPmxvZ2lj
YWxMaW5lVG9wKCkgLSBhYnNvbHV0ZUxvZ2ljYWxUb3ApOworICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIH0KKyNlbmRpZgorCiAgICAgICAgIC8vIFRoaXMgaXMgYSBzaG9ydC1jdXQgZm9y
IGVtcHR5IGxpbmVzLgogICAgICAgICBpZiAobGF5b3V0U3RhdGUubGluZUluZm8oKS5pc0VtcHR5
KCkpIHsKICAgICAgICAgICAgIGlmIChsYXN0Um9vdEJveCgpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176650</attachid>
            <date>2012-11-28 22:31:00 -0800</date>
            <delta_ts>2012-12-05 12:01:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>20587</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwOTJmYzdhLi5jYjIzODI2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMTEt
MjggIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTUyBFeGNs
dXNpb25zXSBBZGQgc3VwcG9ydCBmb3IgY29tcHV0aW5nIHRoZSBmaXJzdCBpbmNsdWRlZCBpbnRl
cnZhbCBwb3NpdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwMzMyNworCisgICAgICAgIFRlc3QgdGhlIHJvdW5kZWQgcmVjdGFuZ2xlIHN1cHBv
cnQgZm9yIGFkanVzdGluZyB0aGUgdG9wIG9mIGEgbGluZSBkb3dud2FyZHMKKyAgICAgICAgd2hl
biB0aGUgZmlyc3Qgd29yZCBkb2Vzbid0IGZpdCB3aXRoaW4gdGhlIHNoYXBlLgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9leGNsdXNpb25z
L3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcm91bmRlZC1yZWN0YW5nbGUtZml0LTAwMS1leHBl
Y3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRl
L3NoYXBlLWluc2lkZS1yb3VuZGVkLXJlY3RhbmdsZS1maXQtMDAxLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXJvdW5kZWQt
cmVjdGFuZ2xlLWZpdC0wMDItZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9l
eGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcm91bmRlZC1yZWN0YW5nbGUtZml0
LTAwMi5odG1sOiBBZGRlZC4KKwogMjAxMi0xMS0yOCAgSGFqaW1lIE1vcnJpdGEgIDxtb3JyaXRh
QGdvb2dsZS5jb20+CiAKICAgICAgICAgW1NoYWRvdyBET01dIEVsZW1lbnQuY3JlYXRlU2hhZG93
Um9vdCgpIHNob3VsZCBiZSBwcmVmaXhlZC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXJvdW5kZWQtcmVjdGFuZ2xlLWZp
dC0wMDEtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1p
bnNpZGUvc2hhcGUtaW5zaWRlLXJvdW5kZWQtcmVjdGFuZ2xlLWZpdC0wMDEtZXhwZWN0ZWQuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZDJhNmM5Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1p
bnNpZGUtcm91bmRlZC1yZWN0YW5nbGUtZml0LTAwMS1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEs
NDQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisgICAgaWYg
KHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0
Q1NTRXhjbHVzaW9uc0VuYWJsZWQodHJ1ZSk7Cis8L3NjcmlwdD4KKzxzdHlsZT4KKy5zaGFwZS1j
b250YWluZXIgeworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICB3aWR0aDogNDAwcHg7IAor
ICAgIGhlaWdodDogMjBweDsKKyAgICBtYXJnaW46IDEwcHg7Cit9CisKKy5zaGFwZS1iYWNrZ3Jv
dW5kIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAwcHg7CisgICAgbGVmdDog
MHB4OworICAgIHdpZHRoOiA0MDBweDsKKyAgICBoZWlnaHQ6IDIwMHB4OworICAgIGJvcmRlci1y
YWRpdXM6IDIwMHB4IC8gNTBweDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjAwLDIwMCwy
MDApOworfQorCisuc2hhcGUtaW5zaWRlIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAg
dG9wOiA1MHB4OworICAgIGxlZnQ6IDBweDsKKyAgICB3aWR0aDogNDAwcHg7CisgICAgaGVpZ2h0
OiAyMDBweDsKKyAgICBmb250OiA1MHB4LzEgQWhlbSwgc2Fucy1zZXJpZjsKKyAgICBjb2xvcjog
Z3JlZW47Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGUgZ3JlZW4gcmVjdGFu
Z2xlIHNob3VsZCBhcHBlYXIganVzdCBiZWxvdyB0aGUgZ3JleSByb3VuZGVkIHJlY3RhbmdsZSdz
IHVwcGVyIGNvcm5lcnMuPC9wPgorPGRpdiBjbGFzcz0ic2hhcGUtY29udGFpbmVyIj4KKyAgPGRp
diBjbGFzcz0ic2hhcGUtYmFja2dyb3VuZCI+PC9kaXY+CisgIDxkaXYgY2xhc3M9InNoYXBlLWlu
c2lkZSI+WFhYWFhYWFg8L2Rpdj4KKzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUt
cm91bmRlZC1yZWN0YW5nbGUtZml0LTAwMS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNp
b25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcm91bmRlZC1yZWN0YW5nbGUtZml0LTAwMS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1YjVlN2MKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBl
LWluc2lkZS1yb3VuZGVkLXJlY3RhbmdsZS1maXQtMDAxLmh0bWwKQEAgLTAsMCArMSw0NSBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93
LmludGVybmFscykKKyAgICAgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRDU1NFeGNs
dXNpb25zRW5hYmxlZCh0cnVlKTsKKzwvc2NyaXB0PgorPHN0eWxlPgorLnNoYXBlLWNvbnRhaW5l
ciB7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIHdpZHRoOiA0MDBweDsgCisgICAgaGVp
Z2h0OiAyMHB4OworICAgIG1hcmdpbjogMTBweDsKK30KKworLnNoYXBlLWJhY2tncm91bmQgewor
ICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDBweDsKKyAgICBsZWZ0OiAwcHg7Cisg
ICAgd2lkdGg6IDQwMHB4OworICAgIGhlaWdodDogMjAwcHg7CisgICAgYm9yZGVyLXJhZGl1czog
MjAwcHggLyA1MHB4OworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigyMDAsMjAwLDIwMCk7Cit9
CisKKy5zaGFwZS1pbnNpZGUgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDBw
eDsKKyAgICBsZWZ0OiAwcHg7CisgICAgd2lkdGg6IDQwMHB4OworICAgIGhlaWdodDogMjAwcHg7
CisgICAgLXdlYmtpdC1zaGFwZS1pbnNpZGU6IHJlY3RhbmdsZSgwcHgsIDBweCwgNDAwcHgsIDIw
MHB4LCAyMDBweCwgNTBweCk7CisgICAgZm9udDogNTBweC8xIEFoZW0sIHNhbnMtc2VyaWY7Cisg
ICAgY29sb3I6IGdyZWVuOworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhlIGdy
ZWVuIHJlY3RhbmdsZSBzaG91bGQgYXBwZWFyIGp1c3QgYmVsb3cgdGhlIGdyZXkgcm91bmRlZCBy
ZWN0YW5nbGUncyB1cHBlciBjb3JuZXJzLjwvcD4KKzxkaXYgY2xhc3M9InNoYXBlLWNvbnRhaW5l
ciI+CisgIDxkaXYgY2xhc3M9InNoYXBlLWJhY2tncm91bmQiPjwvZGl2PgorICA8ZGl2IGNsYXNz
PSJzaGFwZS1pbnNpZGUiPlhYWFhYWFhYPC9kaXY+Cis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hh
cGUtaW5zaWRlLXJvdW5kZWQtcmVjdGFuZ2xlLWZpdC0wMDItZXhwZWN0ZWQuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXJvdW5kZWQt
cmVjdGFuZ2xlLWZpdC0wMDItZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi4yMmMxNDZlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9l
eGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcm91bmRlZC1yZWN0YW5nbGUtZml0
LTAwMi1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsNDUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAg
IHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0Q1NTRXhjbHVzaW9uc0VuYWJsZWQodHJ1ZSk7
Cis8L3NjcmlwdD4KKzxzdHlsZT4KKyNzaGFwZS1jb250YWluZXIgeworICAgIHBvc2l0aW9uOiBy
ZWxhdGl2ZTsKKyAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgd2lkdGg6IDIwMHB4OyAK
KyAgICBoZWlnaHQ6IDIwMHB4OworICAgIG1hcmdpbjogMTBweDsKK30KKworI3NoYXBlLWJhY2tn
cm91bmQgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDBweDsKKyAgICBsZWZ0
OiAwcHg7CisgICAgd2lkdGg6IDIwMHB4OworICAgIGhlaWdodDogMjAwcHg7CisgICAgYm9yZGVy
LXJhZGl1czogIDEwMHB4IC8gMTAwcHg7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIwMCwy
MDAsMjAwKTsKK30KKworI3NoYXBlLWluc2lkZSB7CisgICAgcG9zaXRpb246IGFic29sdXRlOwor
ICAgIHRvcDogMjkuMjg5MzIxOXB4OworICAgIGxlZnQ6IDI5LjI4OTMyMTlweDsKKyAgICB3aWR0
aDogMjAwcHg7CisgICAgaGVpZ2h0OiAyMDBweDsKKyAgICBmb250OiAxNDEuNDIxMzU2cHgvMSBB
aGVtLCBzYW5zLXNlcmlmOworICAgIGNvbG9yOiBncmVlbjsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxwPlRoZSBncmVlbiByZWN0YW5nbGUgc2hvdWxkIGFwcGVhciB3aXRoaW4gdGhl
IGdyZXkgY2lyY2xlLjwvcD4KKzxkaXYgaWQ9InNoYXBlLWNvbnRhaW5lciI+CisgIDxkaXYgaWQ9
InNoYXBlLWJhY2tncm91bmQiPjwvZGl2PgorICA8ZGl2IGlkPSJzaGFwZS1pbnNpZGUiPlg8L2Rp
dj4KKzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcm91bmRlZC1yZWN0YW5nbGUt
Zml0LTAwMi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9z
aGFwZS1pbnNpZGUtcm91bmRlZC1yZWN0YW5nbGUtZml0LTAwMi5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiYWU2NTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1yb3VuZGVkLXJl
Y3RhbmdsZS1maXQtMDAyLmh0bWwKQEAgLTAsMCArMSw0NiBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAg
ICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRDU1NFeGNsdXNpb25zRW5hYmxlZCh0cnVl
KTsKKzwvc2NyaXB0PgorPHN0eWxlPgorI3NoYXBlLWNvbnRhaW5lciB7CisgICAgcG9zaXRpb246
IHJlbGF0aXZlOworICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICB3aWR0aDogMjAwcHg7
IAorICAgIGhlaWdodDogMjAwcHg7CisgICAgbWFyZ2luOiAxMHB4OworfQorCisjc2hhcGUtYmFj
a2dyb3VuZCB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDogMHB4OworICAgIGxl
ZnQ6IDBweDsKKyAgICB3aWR0aDogMjAwcHg7CisgICAgaGVpZ2h0OiAyMDBweDsKKyAgICBib3Jk
ZXItcmFkaXVzOiAgMTAwcHggLyAxMDBweDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjAw
LDIwMCwyMDApOworfQorCisjc2hhcGUtaW5zaWRlIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7
CisgICAgdG9wOiAwcHg7CisgICAgbGVmdDogMHB4OworICAgIHdpZHRoOiAyMDBweDsKKyAgICBo
ZWlnaHQ6IDIwMHB4OworICAgIC13ZWJraXQtc2hhcGUtaW5zaWRlOiByZWN0YW5nbGUoMHB4LCAw
cHgsIDIwMHB4LCAyMDBweCwgMTAwcHgsIDEwMHB4KTsKKyAgICBmb250OiAxNDEuNDIxMzU2cHgv
MSBBaGVtLCBzYW5zLXNlcmlmOworICAgIGNvbG9yOiBncmVlbjsKK30KKzwvc3R5bGU+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxwPlRoZSBncmVlbiByZWN0YW5nbGUgc2hvdWxkIGFwcGVhciB3aXRoaW4g
dGhlIGdyZXkgY2lyY2xlLjwvcD4KKzxkaXYgaWQ9InNoYXBlLWNvbnRhaW5lciI+CisgIDxkaXYg
aWQ9InNoYXBlLWJhY2tncm91bmQiPjwvZGl2PgorICA8ZGl2IGlkPSJzaGFwZS1pbnNpZGUiPlg8
L2Rpdj4KKzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDE5NWRkYTQuLjM0
ZWFjZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1OSBAQAorMjAxMi0xMS0yOCAgSGFucyBNdWxs
ZXIgIDxobXVsbGVyQGFkb2JlLmNvbT4KKworICAgICAgICBbQ1NTIEV4Y2x1c2lvbnNdIEFkZCBz
dXBwb3J0IGZvciBjb21wdXRpbmcgdGhlIGZpcnN0IGluY2x1ZGVkIGludGVydmFsIHBvc2l0aW9u
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzMzI3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSWYgdGhl
IGZpcnN0ICJ3b3JkIiBpbiBhIGxpbmUgZG9lc24ndCBmaXQgd2l0aGluIHRoZSBzaGFwZS1pbnNp
ZGUgd2hlbiBsaW5lVG9wCisgICAgICAgIGlzIHRoZSB0b3Agb2YgdGhlIHNoYXBlJ3MgbG9naWNh
bCBib3VuZGluZyBib3gsIGFkanVzdCBsaW5lVG9wIGRvd253YXJkcyB0byB3aGVyZQorICAgICAg
ICB0aGUgd29yZCBmaXRzLiAgQ3VycmVudGx5IG9ubHkgcm91bmRlZCByZWN0YW5nbGUgc2hhcGVz
IGFyZSBzdXBwb3J0ZWQuCisKKyAgICAgICAgQWRkZWQgRXhjbHVzaW9uU2hhcGU6OmZpcnN0SW5j
bHVkZWRJbnRlcnZhbExvZ2ljYWxUb3AoKS4gVGhlIG5ldyB2aXJ0dWFsIG1ldGhvZAorICAgICAg
ICBjb21wdXRlcyB0aGUgdG9wbW9zdC9sZWZ0bW9zdCBsb2NhdGlvbiB3aGVyZSBhIGxpbmUgc2Vn
bWVudCB3aXRoIHRoZSBzcGVjaWZpZWQKKyAgICAgICAgbWluTG9naWNhbEludGVydmFsU2l6ZSB3
aWxsIGZpdCB3aXRoaW4gdGhlIGV4Y2x1c2lvbiBzaGFwZSBhbmQgcmV0dXJucyB0aGUKKyAgICAg
ICAgY29ycmVzcG9uZGluZyBsb2dpY2FsIFkgY29vcmRpbmF0ZS4gIFRoZSByZXN1bHQgaXMgYWRk
aXRpb25hbGx5IGNvbnN0cmFpbmVkIHRvCisgICAgICAgIGJlIGF0IG9yIGJlbG93IG1pbkxvZ2lj
YWxJbnRlcnZhbFRvcC4gSWYgdGhlIHNlZ21lbnQgd2lsbCBub3QgZml0IGFueXdoZXJlIHdpdGhp
bgorICAgICAgICB0aGUgc2hhcGUsIHRoZW4gZmFsc2UgaXMgcmV0dXJuZWQuCisKKyAgICAgICAg
RHVyaW5nIGxheW91dCwgbWluTG9naWNhbEludGVydmFsVG9wIGlzIHRoZSBub21pbmFsIHRvcCBv
ZiB0aGUgbGluZSBiZWluZyBsYWlkCisgICAgICAgIG91dCB3aXRoaW4gdGhlIGV4Y2x1c2lvbiBz
aGFwZS4KKworICAgICAgICBSZW5kZXJCbG9jazo6bGF5b3V0UnVuc0FuZEZsb2F0c0luUmFuZ2Uo
KSBub3cgY2FsbHMgYSBuZXcgRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvCisgICAgICAgIG1ldGhv
ZCwgYWRqdXN0TG9naWNhbExpbmVUb3AoKSwgd2hpY2ggdXNlcyBmaXJzdEluY2x1ZGVkSW50ZXJ2
YWxMb2dpY2FsVG9wKCkgdG8KKyAgICAgICAgZGVjaWRlIGlmIHRoZSBsb2dpY2FsIHRvcCBvZiB0
aGUgbGluZSBoYXMgdG8gYmUgbW92ZWQgZG93bndhcmRzLCBmb3IgdGhlIGZpcnN0CisgICAgICAg
IHdvcmQgdG8gZml0IHdpdGhpbiB0aGUgZXhjbHVzaW9uIHNoYXBlLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggYWxzbyBpbmNsdWRlcyBvbmUgbWlub3IgY2xlYW51cDogdGhlIHByb3RlY3RlZCBFeGNs
dXNpb25TaGFwZSBpbmxpbmVzLAorICAgICAgICBsaWtlIG1pbllGb3JMb2dpY2FsTGluZSgpLCBu
b3cgdXNlIGlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkgaW5zdGVhZCBvZiB0ZXN0aW5nCisg
ICAgICAgIGZvciBSaWdodFRvTGVmdFdyaXRpbmdNb2RlIGRpcmVjdGx5LiBUaGlzIGNoYW5nZWlt
cHJvdmVzIGNvbnNpc3RlbmN5IHdpdGggdGhlIHJlc3QKKyAgICAgICAgb2YgV2ViS2l0IGFuZCB3
aWxsIHdvcmsgY29ycmVjdGx5IGlmICJob3Jpem9udGFsLWJ0IiB3cml0aW5nLW1vZGUgc3VwcG9y
dCBpcyBldmVyIGFkZGVkLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUt
aW5zaWRlL3NoYXBlLWluc2lkZS1yb3VuZGVkLXJlY3RhbmdsZS1maXQtMDAxLmh0bWwKKyAgICAg
ICAgICAgICAgIGZhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXJvdW5k
ZWQtcmVjdGFuZ2xlLWZpdC0wMDIuaHRtbAorCisgICAgICAgICogcmVuZGVyaW5nL0V4Y2x1c2lv
blBvbHlnb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXhjbHVzaW9uUG9seWdvbjo6Zmlyc3RJ
bmNsdWRlZEludGVydmFsTG9naWNhbFRvcCk6IFRoaXMgaXMgYSBzdHViIGltcGxlbWVudGF0aW9u
LgorICAgICAgICAqIHJlbmRlcmluZy9FeGNsdXNpb25Qb2x5Z29uLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL0V4Y2x1c2lvblJlY3RhbmdsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjplbGxpcHNl
WEludGVyY2VwdCk6IEFkZGVkIHNwYWNlcyB0byBjb25mb3JtIHRvIHdlYmtpdCBzdHlsZSBhbmQg
dG8gYmUgY29uc2lzdGVudCB3aXRoIGVsbGlwc2VZSW50ZXJjZXB0KCkKKyAgICAgICAgKFdlYkNv
cmU6OmVsbGlwc2VZSW50ZXJjZXB0KTogQ29tcHV0ZSBhbiBlbGxpcHNlJ3MgWSBpbnRlcmNlcHQg
Zm9yIGFuIFggY29vcmRpbmF0ZS4KKyAgICAgICAgKFdlYkNvcmU6OkV4Y2x1c2lvblJlY3Rhbmds
ZTo6Zmlyc3RJbmNsdWRlZEludGVydmFsTG9naWNhbFRvcCk6IFNlZSB0aGUgZGVzY3JpcHRpb24g
YWJvdmUuCisgICAgICAgICogcmVuZGVyaW5nL0V4Y2x1c2lvblJlY3RhbmdsZS5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9FeGNsdXNpb25TaGFwZS5oOgorICAgICAgICAoRXhjbHVzaW9uU2hhcGUp
OgorICAgICAgICAoV2ViQ29yZTo6RXhjbHVzaW9uU2hhcGU6Om1pbllGb3JMb2dpY2FsTGluZSk6
IFVzZSBpc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpIGluc3RlYWQgb2YgdGVzdGluZyBmb3Ig
UmlnaHRUb0xlZnRXcml0aW5nTW9kZSBkaXJlY3RseS4KKyAgICAgICAgKFdlYkNvcmU6OkV4Y2x1
c2lvblNoYXBlOjptYXhZRm9yTG9naWNhbExpbmUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OkV4Y2x1c2lvblNoYXBlOjppbnRlcm5hbFRvTG9naWNhbEJvdW5kaW5nQm94KTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpFeGNsdXNpb25TaGFwZTo6bG9naWNhbFRvcEZvck1pblkpOiBJbnRl
cm5hbCB0byBsb2dpY2FsIGNvb3JkaW5hdGUgY29udmVyc2lvbi4KKyAgICAgICAgKiByZW5kZXJp
bmcvRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4Y2x1
c2lvblNoYXBlSW5zaWRlSW5mbzo6YWRqdXN0TG9naWNhbExpbmVUb3ApOiBBIG5ldyBtZXRob2Qg
dGhhdCB1cGRhdGVzIG1fbGluZVRvcCB3aXRoIGZpcnN0SW5jbHVkZWRJbnRlcnZhbFBvc2l0aW9u
KCkuCisgICAgICAgICogcmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby5oOgorICAg
ICAgICAoRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OkV4Y2x1
c2lvblNoYXBlSW5zaWRlSW5mbzo6bG9naWNhbExpbmVUb3ApOiBUaGlzIGlzIGp1c3QgYSBjb3Zl
ciBmb3IgdGhlIHByaXZhdGUgbV9saW5lVG9wIGZpZWxkLgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6
OmxheW91dFJ1bnNBbmRGbG9hdHNJblJhbmdlKTogQWRkZWQgY29kZSB0aGF0IHJlc3RhcnRzIHRo
ZSBsYXlvdXQgbG9vcCBpZiBpdCdzIG5lY2Vzc2FyeSB0byBhZGp1c3QgdGhlIGxpbmUncyBsb2dp
Y2FsVG9wLgorCiAyMDEyLTExLTI4ICBIYWppbWUgTW9ycml0YSAgPG1vcnJpdGFAZ29vZ2xlLmNv
bT4KIAogICAgICAgICBbU2hhZG93IERPTV0gRWxlbWVudC5jcmVhdGVTaGFkb3dSb290KCkgc2hv
dWxkIGJlIHByZWZpeGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4
Y2x1c2lvblBvbHlnb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblBv
bHlnb24uY3BwCmluZGV4IDIxYmVhYzEuLjk0YjkzZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9FeGNsdXNpb25Qb2x5Z29uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvRXhjbHVzaW9uUG9seWdvbi5jcHAKQEAgLTM3Niw0ICszNzYsMjAgQEAgdm9pZCBF
eGNsdXNpb25Qb2x5Z29uOjpnZXRJbmNsdWRlZEludGVydmFscyhmbG9hdCBsb2dpY2FsVG9wLCBm
bG9hdCBsb2dpY2FsSGVpZ2gKICAgICB9CiB9CiAKK2Jvb2wgRXhjbHVzaW9uUG9seWdvbjo6Zmly
c3RJbmNsdWRlZEludGVydmFsTG9naWNhbFRvcChmbG9hdCBtaW5Mb2dpY2FsSW50ZXJ2YWxUb3As
IGNvbnN0IEZsb2F0U2l6ZSYgbWluTG9naWNhbEludGVydmFsU2l6ZSwgZmxvYXQmIHJlc3VsdCkg
Y29uc3QKK3sKKyAgICAvLyBGSVhNRTogVGhpcyBpcyBqdXN0IGEgdGVtcG9yYXJ5IHN0dWIsIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM0MjkKKworICAgIGlmICht
aW5Mb2dpY2FsSW50ZXJ2YWxTaXplLndpZHRoKCkgPiBtX2JvdW5kaW5nQm94LndpZHRoKCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZsb2F0IG1pblkgPSBtaW5ZRm9yTG9naWNhbExp
bmUobWluTG9naWNhbEludGVydmFsVG9wLCBtaW5Mb2dpY2FsSW50ZXJ2YWxTaXplLmhlaWdodCgp
KTsKKyAgICBmbG9hdCBtYXhZID0gbWF4WUZvckxvZ2ljYWxMaW5lKG1pbkxvZ2ljYWxJbnRlcnZh
bFRvcCwgbWluTG9naWNhbEludGVydmFsU2l6ZS5oZWlnaHQoKSk7CisgICAgaWYgKG1pblkgPCBt
X2JvdW5kaW5nQm94LnkoKSB8fCBtYXhZID4gbV9ib3VuZGluZ0JveC5tYXhZKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIHJlc3VsdCA9IG1pbkxvZ2ljYWxJbnRlcnZhbFRvcDsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblBvbHlnb24uaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9FeGNsdXNpb25Qb2x5Z29uLmgKaW5kZXggNjQ3ZWIxNy4uMjVmYzZmNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblBvbHlnb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uUG9seWdvbi5oCkBAIC02Niw2
ICs2Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNFbXB0eSgpIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuIG1fZW1wdHk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZ2V0RXhjbHVkZWRJbnRl
cnZhbHMoZmxvYXQgbG9naWNhbFRvcCwgZmxvYXQgbG9naWNhbEhlaWdodCwgU2VnbWVudExpc3Qm
KSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0SW5jbHVkZWRJbnRlcnZhbHMo
ZmxvYXQgbG9naWNhbFRvcCwgZmxvYXQgbG9naWNhbEhlaWdodCwgU2VnbWVudExpc3QmKSBjb25z
dCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgZmlyc3RJbmNsdWRlZEludGVydmFsTG9naWNh
bFRvcChmbG9hdCBtaW5Mb2dpY2FsSW50ZXJ2YWxUb3AsIGNvbnN0IEZsb2F0U2l6ZSYgbWluTG9n
aWNhbEludGVydmFsU2l6ZSwgZmxvYXQmKSBjb25zdCBPVkVSUklERTsKIAogcHJpdmF0ZToKICAg
ICB2b2lkIGNvbXB1dGVYSW50ZXJzZWN0aW9ucyhmbG9hdCB5LCBib29sIGlzTWluWSwgVmVjdG9y
PEV4Y2x1c2lvbkludGVydmFsPiYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0V4Y2x1c2lvblJlY3RhbmdsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvRXhjbHVzaW9uUmVjdGFuZ2xlLmNwcAppbmRleCAzMjhjYmEyLi5jMWZlNmUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uUmVjdGFuZ2xlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uUmVjdGFuZ2xlLmNwcApAQCAtMzcs
NyArMzcsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RhdGljIGlubGluZSBmbG9hdCBlbGxp
cHNlWEludGVyY2VwdChmbG9hdCB5LCBmbG9hdCByeCwgZmxvYXQgcnkpCiB7CiAgICAgQVNTRVJU
KHJ5ID4gMCk7Ci0gICAgcmV0dXJuIHJ4ICogc3FydCgxIC0gKHkqeSkgLyAocnkqcnkpKTsKKyAg
ICByZXR1cm4gcnggKiBzcXJ0KDEgLSAoeSAqIHkpIC8gKHJ5ICogcnkpKTsKK30KKworc3RhdGlj
IGlubGluZSBmbG9hdCBlbGxpcHNlWUludGVyY2VwdChmbG9hdCB4LCBmbG9hdCByeCwgZmxvYXQg
cnkpCit7CisgICAgQVNTRVJUKHJ4ID4gMCk7CisgICAgcmV0dXJuIHJ5ICogc3FydCgxIC0gKHgg
KiB4KSAvIChyeCAqIHJ4KSk7CiB9CiAKIHZvaWQgRXhjbHVzaW9uUmVjdGFuZ2xlOjpnZXRFeGNs
dWRlZEludGVydmFscyhmbG9hdCBsb2dpY2FsVG9wLCBmbG9hdCBsb2dpY2FsSGVpZ2h0LCBTZWdt
ZW50TGlzdCYgcmVzdWx0KSBjb25zdApAQCAtMTE1LDQgKzEyMSw1MSBAQCB2b2lkIEV4Y2x1c2lv
blJlY3RhbmdsZTo6Z2V0SW5jbHVkZWRJbnRlcnZhbHMoZmxvYXQgbG9naWNhbFRvcCwgZmxvYXQg
bG9naWNhbEhlaQogICAgIHJlc3VsdC5hcHBlbmQoTGluZVNlZ21lbnQoeDEsIHgyKSk7CiB9CiAK
K2Jvb2wgRXhjbHVzaW9uUmVjdGFuZ2xlOjpmaXJzdEluY2x1ZGVkSW50ZXJ2YWxMb2dpY2FsVG9w
KGZsb2F0IG1pbkxvZ2ljYWxJbnRlcnZhbFRvcCwgY29uc3QgRmxvYXRTaXplJiBtaW5Mb2dpY2Fs
SW50ZXJ2YWxTaXplLCBmbG9hdCYgcmVzdWx0KSBjb25zdAoreworICAgIGlmIChtaW5Mb2dpY2Fs
SW50ZXJ2YWxTaXplLndpZHRoKCkgPiBtX3dpZHRoKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBmbG9hdCBtaW5ZID0gc3RkOjptYXgobV95LCBtaW5ZRm9yTG9naWNhbExpbmUobWluTG9n
aWNhbEludGVydmFsVG9wLCBtaW5Mb2dpY2FsSW50ZXJ2YWxTaXplLmhlaWdodCgpKSk7CisgICAg
ZmxvYXQgbWF4WSA9IG1pblkgKyBtaW5Mb2dpY2FsSW50ZXJ2YWxTaXplLmhlaWdodCgpOworICAg
IGlmIChtYXhZID4gbV95ICsgbV9oZWlnaHQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGJvb2wgaW50ZXJ2YWxPdmVybGFwc01pbkNvcm5lciA9IG1pblkgPCBtX3kgKyBtX3J5OworICAg
IGJvb2wgaW50ZXJ2YWxPdmVybGFwc01heENvcm5lciA9IG1heFkgPiBtX3kgKyBtX2hlaWdodCAt
IG1fcnk7CisKKyAgICBpZiAoIWludGVydmFsT3ZlcmxhcHNNaW5Db3JuZXIgJiYgIWludGVydmFs
T3ZlcmxhcHNNYXhDb3JuZXIpIHsKKyAgICAgICAgcmVzdWx0ID0gbG9naWNhbFRvcEZvck1pblko
bWluWSwgbWluTG9naWNhbEludGVydmFsU2l6ZS5oZWlnaHQoKSk7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKworICAgIGZsb2F0IGNlbnRlclkgPSBtX3kgKyBtX2hlaWdodCAvIDI7Cisg
ICAgYm9vbCBtaW5Db3JuZXJEZWZpbmVzWCA9IGZhYnMoY2VudGVyWSAtIG1pblkpID4gZmFicyhj
ZW50ZXJZIC0gbWF4WSk7CisgICAgYm9vbCBpbnRlcnZhbEZpdHNXaXRoaW5Db3JuZXJzID0gbWlu
TG9naWNhbEludGVydmFsU2l6ZS53aWR0aCgpICsgMiAqIG1fcnggPD0gbV93aWR0aDsKKworICAg
IGlmIChpbnRlcnZhbE92ZXJsYXBzTWluQ29ybmVyICYmICghaW50ZXJ2YWxPdmVybGFwc01heENv
cm5lciB8fCBtaW5Db3JuZXJEZWZpbmVzWCkpIHsKKyAgICAgICAgZmxvYXQgeGkgPSAobV93aWR0
aCAtIG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUud2lkdGgoKSkgLyAyOworICAgICAgICBmbG9hdCB5
aSA9IG1fcnkgLSBlbGxpcHNlWUludGVyY2VwdChtX3J4IC0geGksIG1fcngsIG1fcnkpOworICAg
ICAgICBpZiAoKG1feSArIHlpIDwgbWluWSkgfHwgaW50ZXJ2YWxGaXRzV2l0aGluQ29ybmVycykg
eworICAgICAgICAgICAgcmVzdWx0ID0gbG9naWNhbFRvcEZvck1pblkobWluWSwgbWluTG9naWNh
bEludGVydmFsU2l6ZS5oZWlnaHQoKSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgfQorICAgICAgICBpZiAobWluTG9naWNhbEludGVydmFsU2l6ZS5oZWlnaHQoKSA8IG1faGVp
Z2h0IC0gKDIgKiB5aSkpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IGxvZ2ljYWxUb3BGb3JNaW5Z
KG1feSArIHlpLCBtaW5Mb2dpY2FsSW50ZXJ2YWxTaXplLmhlaWdodCgpKTsKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGludGVydmFsT3Zlcmxh
cHNNYXhDb3JuZXIgJiYgKCFpbnRlcnZhbE92ZXJsYXBzTWluQ29ybmVyIHx8ICFtaW5Db3JuZXJE
ZWZpbmVzWCkpIHsKKyAgICAgICAgZmxvYXQgeGkgPSAobV93aWR0aCAtIG1pbkxvZ2ljYWxJbnRl
cnZhbFNpemUud2lkdGgoKSkgLyAyOworICAgICAgICBmbG9hdCB5aSA9IG1fcnkgLSBlbGxpcHNl
WUludGVyY2VwdChtX3J4IC0geGksIG1fcngsIG1fcnkpOworICAgICAgICBpZiAoaW50ZXJ2YWxG
aXRzV2l0aGluQ29ybmVycyB8fCBtaW5ZIDw9ICBtX3kgKyBtX2hlaWdodCAtIHlpIC0gbWluTG9n
aWNhbEludGVydmFsU2l6ZS5oZWlnaHQoKSkgeworICAgICAgICAgICAgcmVzdWx0ID0gbG9naWNh
bFRvcEZvck1pblkobWluWSwgbWluTG9naWNhbEludGVydmFsU2l6ZS5oZWlnaHQoKSk7CisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBmYWxz
ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0V4Y2x1c2lvblJlY3RhbmdsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0V4Y2x1c2lvblJlY3RhbmdsZS5oCmluZGV4IDU4MzllZWMuLmZmODhmMmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25SZWN0YW5nbGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uUmVjdGFuZ2xlLmgKQEAgLTU0LDYgKzU0
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5KCkgY29uc3QgT1ZFUlJJREUg
eyByZXR1cm4gbV93aWR0aCA8PSAwIHx8IG1faGVpZ2h0IDw9IDA7IH0KICAgICB2aXJ0dWFsIHZv
aWQgZ2V0RXhjbHVkZWRJbnRlcnZhbHMoZmxvYXQgbG9naWNhbFRvcCwgZmxvYXQgbG9naWNhbEhl
aWdodCwgU2VnbWVudExpc3QmKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0
SW5jbHVkZWRJbnRlcnZhbHMoZmxvYXQgbG9naWNhbFRvcCwgZmxvYXQgbG9naWNhbEhlaWdodCwg
U2VnbWVudExpc3QmKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgZmlyc3RJbmNs
dWRlZEludGVydmFsTG9naWNhbFRvcChmbG9hdCBtaW5Mb2dpY2FsSW50ZXJ2YWxUb3AsIGNvbnN0
IEZsb2F0U2l6ZSYgbWluTG9naWNhbEludGVydmFsU2l6ZSwgZmxvYXQmKSBjb25zdCBPVkVSUklE
RTsKIAogcHJpdmF0ZToKICAgICBmbG9hdCBtX3g7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9F
eGNsdXNpb25TaGFwZS5oCmluZGV4IDA3NWMwMDIuLjIzYmE2OTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25TaGFwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9FeGNsdXNpb25TaGFwZS5oCkBAIC02NywxMSArNjcsMTMgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBn
ZXRJbmNsdWRlZEludGVydmFscyhmbG9hdCBsb2dpY2FsVG9wLCBmbG9hdCBsb2dpY2FsSGVpZ2h0
LCBTZWdtZW50TGlzdCYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RXhjbHVkZWRJ
bnRlcnZhbHMoZmxvYXQgbG9naWNhbFRvcCwgZmxvYXQgbG9naWNhbEhlaWdodCwgU2VnbWVudExp
c3QmKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGZpcnN0SW5jbHVkZWRJbnRlcnZhbExv
Z2ljYWxUb3AoZmxvYXQgbWluTG9naWNhbEludGVydmFsVG9wLCBjb25zdCBGbG9hdFNpemUmIG1p
bkxvZ2ljYWxJbnRlcnZhbFNpemUsIGZsb2F0JiByZXN1bHQpIGNvbnN0ID0gMDsKIAogcHJvdGVj
dGVkOgotICAgIGZsb2F0IG1pbllGb3JMb2dpY2FsTGluZShmbG9hdCBsb2dpY2FsVG9wLCBmbG9h
dCBsb2dpY2FsSGVpZ2h0KSBjb25zdCB7IHJldHVybiAobV93cml0aW5nTW9kZSA9PSBSaWdodFRv
TGVmdFdyaXRpbmdNb2RlKSA/IG1fbG9naWNhbEJveEhlaWdodCAtIGxvZ2ljYWxUb3AgLSBsb2dp
Y2FsSGVpZ2h0IDogbG9naWNhbFRvcDsgfQotICAgIGZsb2F0IG1heFlGb3JMb2dpY2FsTGluZShm
bG9hdCBsb2dpY2FsVG9wLCBmbG9hdCBsb2dpY2FsSGVpZ2h0KSBjb25zdCB7IHJldHVybiAobV93
cml0aW5nTW9kZSA9PSBSaWdodFRvTGVmdFdyaXRpbmdNb2RlKSA/IG1fbG9naWNhbEJveEhlaWdo
dCAtIGxvZ2ljYWxUb3AgOiBsb2dpY2FsVG9wICsgbG9naWNhbEhlaWdodDsgfQotICAgIEZsb2F0
UmVjdCBpbnRlcm5hbFRvTG9naWNhbEJvdW5kaW5nQm94KEZsb2F0UmVjdCByKSBjb25zdCB7IHJl
dHVybiAobV93cml0aW5nTW9kZSA9PSBSaWdodFRvTGVmdFdyaXRpbmdNb2RlKSA/IEZsb2F0UmVj
dChyLngoKSwgbV9sb2dpY2FsQm94SGVpZ2h0IC0gci5tYXhZKCksIHIud2lkdGgoKSwgci5oZWln
aHQoKSkgOiByOyB9CisgICAgZmxvYXQgbWluWUZvckxvZ2ljYWxMaW5lKGZsb2F0IGxvZ2ljYWxU
b3AsIGZsb2F0IGxvZ2ljYWxIZWlnaHQpIGNvbnN0IHsgcmV0dXJuIGlzRmxpcHBlZEJsb2Nrc1dy
aXRpbmdNb2RlKG1fd3JpdGluZ01vZGUpID8gbV9sb2dpY2FsQm94SGVpZ2h0IC0gbG9naWNhbFRv
cCAtIGxvZ2ljYWxIZWlnaHQgOiBsb2dpY2FsVG9wOyB9CisgICAgZmxvYXQgbWF4WUZvckxvZ2lj
YWxMaW5lKGZsb2F0IGxvZ2ljYWxUb3AsIGZsb2F0IGxvZ2ljYWxIZWlnaHQpIGNvbnN0IHsgcmV0
dXJuICBpc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZShtX3dyaXRpbmdNb2RlKSA/IG1fbG9naWNh
bEJveEhlaWdodCAtIGxvZ2ljYWxUb3AgOiBsb2dpY2FsVG9wICsgbG9naWNhbEhlaWdodDsgfQor
ICAgIGZsb2F0IGxvZ2ljYWxUb3BGb3JNaW5ZKGZsb2F0IG1pblksIGZsb2F0IGxvZ2ljYWxIZWln
aHQpIGNvbnN0IHsgcmV0dXJuIGlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKG1fd3JpdGluZ01v
ZGUpID8gbV9sb2dpY2FsQm94SGVpZ2h0IC0gbWluWSAtIGxvZ2ljYWxIZWlnaHQgOiBtaW5ZOyB9
CisgICAgRmxvYXRSZWN0IGludGVybmFsVG9Mb2dpY2FsQm91bmRpbmdCb3goY29uc3QgRmxvYXRS
ZWN0JiByKSBjb25zdCB7IHJldHVybiBpc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZShtX3dyaXRp
bmdNb2RlKSA/IEZsb2F0UmVjdChyLngoKSwgbV9sb2dpY2FsQm94SGVpZ2h0IC0gci5tYXhZKCks
IHIud2lkdGgoKSwgci5oZWlnaHQoKSkgOiByOyB9CiAKIHByaXZhdGU6CiAgICAgV3JpdGluZ01v
ZGUgbV93cml0aW5nTW9kZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9F
eGNsdXNpb25TaGFwZUluc2lkZUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4
Y2x1c2lvblNoYXBlSW5zaWRlSW5mby5jcHAKaW5kZXggOTM0ZTNmMi4uZGVjM2UyZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlSW5zaWRlSW5m
by5jcHAKQEAgLTExNyw1ICsxMTcsMjMgQEAgYm9vbCBFeGNsdXNpb25TaGFwZUluc2lkZUluZm86
OmNvbXB1dGVTZWdtZW50c0ZvckxpbmUoTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXQKICAgICBy
ZXR1cm4gbV9zZWdtZW50cy5zaXplKCk7CiB9CiAKK2Jvb2wgRXhjbHVzaW9uU2hhcGVJbnNpZGVJ
bmZvOjphZGp1c3RMb2dpY2FsTGluZVRvcChmbG9hdCBtaW5TZWdtZW50V2lkdGgpCit7CisgICAg
aWYgKCFtX3NoYXBlIHx8IG1fbGluZUhlaWdodCA8PSAwIHx8IG1fbGluZVRvcCA+IHNoYXBlTG9n
aWNhbEJvdHRvbSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBmbG9hdCBmbG9hdE5l
d0xpbmVUb3A7CisgICAgaWYgKG1fc2hhcGUtPmZpcnN0SW5jbHVkZWRJbnRlcnZhbExvZ2ljYWxU
b3AobV9saW5lVG9wLCBGbG9hdFNpemUobWluU2VnbWVudFdpZHRoLCBtX2xpbmVIZWlnaHQpLCBm
bG9hdE5ld0xpbmVUb3ApKSB7CisgICAgICAgIC8vIFVzZSBmcm9tRmxvYXRDZWlsKCkgdG8gZW5z
dXJlIHRoYXQgdGhlIHJldHVybmVkIExheW91dFVuaXQgdmFsdWUgaXMgd2l0aGluIHRoZSBzaGFw
ZSdzIGJvdW5kcy4KKyAgICAgICAgTGF5b3V0VW5pdCBuZXdMaW5lVG9wID0gTGF5b3V0VW5pdDo6
ZnJvbUZsb2F0Q2VpbChmbG9hdE5ld0xpbmVUb3ApOworICAgICAgICBpZiAobmV3TGluZVRvcCA+
IG1fbGluZVRvcCkgeworICAgICAgICAgICAgbV9saW5lVG9wID0gbmV3TGluZVRvcDsKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNl
OworfQorCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9F
eGNsdXNpb25TaGFwZUluc2lkZUluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNs
dXNpb25TaGFwZUluc2lkZUluZm8uaAppbmRleCA4YmUxMTRkLi43NjAzZGVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby5oCkBA
IC02OCw5ICs2OCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX3NlZ21lbnRzOwogICAg
IH0KICAgICBib29sIGNvbXB1dGVTZWdtZW50c0ZvckxpbmUoTGF5b3V0VW5pdCBsaW5lVG9wLCBM
YXlvdXRVbml0IGxpbmVIZWlnaHQpOworICAgIGJvb2wgYWRqdXN0TG9naWNhbExpbmVUb3AoZmxv
YXQgbWluU2VnbWVudFdpZHRoKTsKICAgICB2b2lkIGNvbXB1dGVTaGFwZVNpemUoTGF5b3V0VW5p
dCBsb2dpY2FsV2lkdGgsIExheW91dFVuaXQgbG9naWNhbEhlaWdodCk7CiAgICAgdm9pZCBkaXJ0
eVNoYXBlU2l6ZSgpIHsgbV9zaGFwZVNpemVEaXJ0eSA9IHRydWU7IH0KIAorICAgIExheW91dFVu
aXQgbG9naWNhbExpbmVUb3AoKSBjb25zdCB7IHJldHVybiBtX2xpbmVUb3A7IH0KKwogcHJpdmF0
ZToKICAgICBFeGNsdXNpb25TaGFwZUluc2lkZUluZm8oUmVuZGVyQmxvY2sqKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAppbmRl
eCA5NzBmYmMzLi4wYzE2YTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcApAQCAtMTQ0Nyw2ICsxNDQ3LDE2IEBAIHZvaWQgUmVu
ZGVyQmxvY2s6OmxheW91dFJ1bnNBbmRGbG9hdHNJblJhbmdlKExpbmVMYXlvdXRTdGF0ZSYgbGF5
b3V0U3RhdGUsIElubGluCiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUKGVuZCAhPSByZXNvbHZl
ci5wb3NpdGlvbigpKTsKIAorI2lmIEVOQUJMRShDU1NfRVhDTFVTSU9OUykKKyAgICAgICAgaWYg
KGV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mbyAmJiB3b3JkTWVhc3VyZW1lbnRzLnNpemUoKSAmJiBl
eGNsdXNpb25TaGFwZUluc2lkZUluZm8tPmFkanVzdExvZ2ljYWxMaW5lVG9wKHdvcmRNZWFzdXJl
bWVudHNbMF0ud2lkdGgpKSB7CisgICAgICAgICAgICByZW1vdmVGbG9hdGluZ09iamVjdHNCZWxv
dyhsYXN0RmxvYXRGcm9tUHJldmlvdXNMaW5lLCBsb2dpY2FsSGVpZ2h0KCkpOworICAgICAgICAg
ICAgcmVzb2x2ZXIuc2V0UG9zaXRpb25JZ25vcmluZ05lc3RlZElzb2xhdGVzKG9sZEVuZCk7Cisg
ICAgICAgICAgICBlbmQgPSBvbGRFbmQ7CisgICAgICAgICAgICBzZXRMb2dpY2FsSGVpZ2h0KGV4
Y2x1c2lvblNoYXBlSW5zaWRlSW5mby0+bG9naWNhbExpbmVUb3AoKSAtIGFic29sdXRlTG9naWNh
bFRvcCk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorI2VuZGlmCisKICAgICAg
ICAgLy8gVGhpcyBpcyBhIHNob3J0LWN1dCBmb3IgZW1wdHkgbGluZXMuCiAgICAgICAgIGlmIChs
YXlvdXRTdGF0ZS5saW5lSW5mbygpLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgaWYgKGxhc3RS
b290Qm94KCkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177804</attachid>
            <date>2012-12-05 12:01:56 -0800</date>
            <delta_ts>2012-12-05 19:41:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>19321</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1NWVmNjE3Li4wNjZjMTE5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMTEt
MjggIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTUyBFeGNs
dXNpb25zXSBBZGQgc3VwcG9ydCBmb3IgY29tcHV0aW5nIHRoZSBmaXJzdCBpbmNsdWRlZCBpbnRl
cnZhbCBwb3NpdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwMzMyNworCisgICAgICAgIFRlc3QgdGhlIHJvdW5kZWQgcmVjdGFuZ2xlIHN1cHBv
cnQgZm9yIGFkanVzdGluZyB0aGUgdG9wIG9mIGEgbGluZSBkb3dud2FyZHMKKyAgICAgICAgd2hl
biB0aGUgZmlyc3Qgd29yZCBkb2Vzbid0IGZpdCB3aXRoaW4gdGhlIHNoYXBlLgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9leGNsdXNpb25z
L3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcm91bmRlZC1yZWN0YW5nbGUtZml0LTAwMS1leHBl
Y3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRl
L3NoYXBlLWluc2lkZS1yb3VuZGVkLXJlY3RhbmdsZS1maXQtMDAxLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXJvdW5kZWQt
cmVjdGFuZ2xlLWZpdC0wMDItZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9l
eGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcm91bmRlZC1yZWN0YW5nbGUtZml0
LTAwMi5odG1sOiBBZGRlZC4KKwogMjAxMi0xMi0wNSAgWmFuIERvYmVyc2VrICA8emFuZG9iZXJz
ZWtAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgZ2FyZGVuaW5nLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUt
cm91bmRlZC1yZWN0YW5nbGUtZml0LTAwMS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcm91bmRlZC1yZWN0YW5nbGUt
Zml0LTAwMS1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmE2ZWExNDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMv
c2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1yb3VuZGVkLXJlY3RhbmdsZS1maXQtMDAxLWV4cGVj
dGVkLmh0bWwKQEAgLTAsMCArMSw0NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgd2luZG93Lmlu
dGVybmFscy5zZXR0aW5ncy5zZXRDU1NFeGNsdXNpb25zRW5hYmxlZCh0cnVlKTsKKzwvc2NyaXB0
PgorPHN0eWxlPgorLnNoYXBlLWNvbnRhaW5lciB7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOwor
ICAgIHdpZHRoOiA0MDBweDsKKyAgICBoZWlnaHQ6IDIwcHg7CisgICAgbWFyZ2luOiAxMHB4Owor
fQorCisuc2hhcGUtYmFja2dyb3VuZCB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRv
cDogMHB4OworICAgIGxlZnQ6IDBweDsKKyAgICB3aWR0aDogNDAwcHg7CisgICAgaGVpZ2h0OiAy
MDBweDsKKyAgICBib3JkZXItcmFkaXVzOiAyMDBweCAvIDUwcHg7CisgICAgYmFja2dyb3VuZC1j
b2xvcjogcmdiKDIwMCwyMDAsMjAwKTsKK30KKworLnNoYXBlLWluc2lkZSB7CisgICAgcG9zaXRp
b246IGFic29sdXRlOworICAgIHRvcDogNTBweDsKKyAgICBsZWZ0OiAwcHg7CisgICAgd2lkdGg6
IDQwMHB4OworICAgIGhlaWdodDogMjAwcHg7CisgICAgZm9udDogNTBweC8xIEFoZW0sIHNhbnMt
c2VyaWY7CisgICAgY29sb3I6IGdyZWVuOworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5Pgor
PHA+VGhlIGdyZWVuIHJlY3RhbmdsZSBzaG91bGQgYXBwZWFyIGp1c3QgYmVsb3cgdGhlIGdyZXkg
cm91bmRlZCByZWN0YW5nbGUncyB1cHBlciBjb3JuZXJzLjwvcD4KKzxkaXYgY2xhc3M9InNoYXBl
LWNvbnRhaW5lciI+CisgIDxkaXYgY2xhc3M9InNoYXBlLWJhY2tncm91bmQiPjwvZGl2PgorICA8
ZGl2IGNsYXNzPSJzaGFwZS1pbnNpZGUiPlhYWFhYWFhYPC9kaXY+Cis8L2Rpdj4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1p
bnNpZGUvc2hhcGUtaW5zaWRlLXJvdW5kZWQtcmVjdGFuZ2xlLWZpdC0wMDEuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXJvdW5kZWQt
cmVjdGFuZ2xlLWZpdC0wMDEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li42YjdkZTVlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25z
L3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcm91bmRlZC1yZWN0YW5nbGUtZml0LTAwMS5odG1s
CkBAIC0wLDAgKzEsNDUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQ+CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIHdpbmRvdy5pbnRlcm5hbHMu
c2V0dGluZ3Muc2V0Q1NTRXhjbHVzaW9uc0VuYWJsZWQodHJ1ZSk7Cis8L3NjcmlwdD4KKzxzdHls
ZT4KKy5zaGFwZS1jb250YWluZXIgeworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICB3aWR0
aDogNDAwcHg7CisgICAgaGVpZ2h0OiAyMHB4OworICAgIG1hcmdpbjogMTBweDsKK30KKworLnNo
YXBlLWJhY2tncm91bmQgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDBweDsK
KyAgICBsZWZ0OiAwcHg7CisgICAgd2lkdGg6IDQwMHB4OworICAgIGhlaWdodDogMjAwcHg7Cisg
ICAgYm9yZGVyLXJhZGl1czogMjAwcHggLyA1MHB4OworICAgIGJhY2tncm91bmQtY29sb3I6IHJn
YigyMDAsMjAwLDIwMCk7Cit9CisKKy5zaGFwZS1pbnNpZGUgeworICAgIHBvc2l0aW9uOiBhYnNv
bHV0ZTsKKyAgICB0b3A6IDBweDsKKyAgICBsZWZ0OiAwcHg7CisgICAgd2lkdGg6IDQwMHB4Owor
ICAgIGhlaWdodDogMjAwcHg7CisgICAgLXdlYmtpdC1zaGFwZS1pbnNpZGU6IHJlY3RhbmdsZSgw
cHgsIDBweCwgNDAwcHgsIDIwMHB4LCAyMDBweCwgNTBweCk7CisgICAgZm9udDogNTBweC8xIEFo
ZW0sIHNhbnMtc2VyaWY7CisgICAgY29sb3I6IGdyZWVuOworfQorPC9zdHlsZT4KKzwvaGVhZD4K
Kzxib2R5PgorPHA+VGhlIGdyZWVuIHJlY3RhbmdsZSBzaG91bGQgYXBwZWFyIGp1c3QgYmVsb3cg
dGhlIGdyZXkgcm91bmRlZCByZWN0YW5nbGUncyB1cHBlciBjb3JuZXJzLjwvcD4KKzxkaXYgY2xh
c3M9InNoYXBlLWNvbnRhaW5lciI+CisgIDxkaXYgY2xhc3M9InNoYXBlLWJhY2tncm91bmQiPjwv
ZGl2PgorICA8ZGl2IGNsYXNzPSJzaGFwZS1pbnNpZGUiPlhYWFhYWFhYPC9kaXY+Cis8L2Rpdj4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9u
cy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXJvdW5kZWQtcmVjdGFuZ2xlLWZpdC0wMDItZXhw
ZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hh
cGUtaW5zaWRlLXJvdW5kZWQtcmVjdGFuZ2xlLWZpdC0wMDItZXhwZWN0ZWQuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYWI0YTJiCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcm91
bmRlZC1yZWN0YW5nbGUtZml0LTAwMi1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsNDUgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5p
bnRlcm5hbHMpCisgICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0Q1NTRXhjbHVz
aW9uc0VuYWJsZWQodHJ1ZSk7Cis8L3NjcmlwdD4KKzxzdHlsZT4KKyNzaGFwZS1jb250YWluZXIg
eworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cisg
ICAgd2lkdGg6IDIwMHB4OworICAgIGhlaWdodDogMjAwcHg7CisgICAgbWFyZ2luOiAxMHB4Owor
fQorCisjc2hhcGUtYmFja2dyb3VuZCB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRv
cDogMHB4OworICAgIGxlZnQ6IDBweDsKKyAgICB3aWR0aDogMjAwcHg7CisgICAgaGVpZ2h0OiAy
MDBweDsKKyAgICBib3JkZXItcmFkaXVzOiAgMTAwcHggLyAxMDBweDsKKyAgICBiYWNrZ3JvdW5k
LWNvbG9yOiByZ2IoMjAwLDIwMCwyMDApOworfQorCisjc2hhcGUtaW5zaWRlIHsKKyAgICBwb3Np
dGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAyOS4yODkzMjE5cHg7CisgICAgbGVmdDogMjkuMjg5
MzIxOXB4OworICAgIHdpZHRoOiAyMDBweDsKKyAgICBoZWlnaHQ6IDIwMHB4OworICAgIGZvbnQ6
IDE0MS40MjEzNTZweC8xIEFoZW0sIHNhbnMtc2VyaWY7CisgICAgY29sb3I6IGdyZWVuOworfQor
PC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhlIGdyZWVuIHJlY3RhbmdsZSBzaG91bGQg
YXBwZWFyIHdpdGhpbiB0aGUgZ3JleSBjaXJjbGUuPC9wPgorPGRpdiBpZD0ic2hhcGUtY29udGFp
bmVyIj4KKyAgPGRpdiBpZD0ic2hhcGUtYmFja2dyb3VuZCI+PC9kaXY+CisgIDxkaXYgaWQ9InNo
YXBlLWluc2lkZSI+WDwvZGl2PgorPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1y
b3VuZGVkLXJlY3RhbmdsZS1maXQtMDAyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lv
bnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1yb3VuZGVkLXJlY3RhbmdsZS1maXQtMDAyLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzNjNWJiNQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUt
aW5zaWRlLXJvdW5kZWQtcmVjdGFuZ2xlLWZpdC0wMDIuaHRtbApAQCAtMCwwICsxLDQ2IEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cu
aW50ZXJuYWxzKQorICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldENTU0V4Y2x1
c2lvbnNFbmFibGVkKHRydWUpOworPC9zY3JpcHQ+Cis8c3R5bGU+Cisjc2hhcGUtY29udGFpbmVy
IHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwor
ICAgIHdpZHRoOiAyMDBweDsKKyAgICBoZWlnaHQ6IDIwMHB4OworICAgIG1hcmdpbjogMTBweDsK
K30KKworI3NoYXBlLWJhY2tncm91bmQgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0
b3A6IDBweDsKKyAgICBsZWZ0OiAwcHg7CisgICAgd2lkdGg6IDIwMHB4OworICAgIGhlaWdodDog
MjAwcHg7CisgICAgYm9yZGVyLXJhZGl1czogIDEwMHB4IC8gMTAwcHg7CisgICAgYmFja2dyb3Vu
ZC1jb2xvcjogcmdiKDIwMCwyMDAsMjAwKTsKK30KKworI3NoYXBlLWluc2lkZSB7CisgICAgcG9z
aXRpb246IGFic29sdXRlOworICAgIHRvcDogMHB4OworICAgIGxlZnQ6IDBweDsKKyAgICB3aWR0
aDogMjAwcHg7CisgICAgaGVpZ2h0OiAyMDBweDsKKyAgICAtd2Via2l0LXNoYXBlLWluc2lkZTog
cmVjdGFuZ2xlKDBweCwgMHB4LCAyMDBweCwgMjAwcHgsIDEwMHB4LCAxMDBweCk7CisgICAgZm9u
dDogMTQxLjQyMTM1NnB4LzEgQWhlbSwgc2Fucy1zZXJpZjsKKyAgICBjb2xvcjogZ3JlZW47Cit9
Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGUgZ3JlZW4gcmVjdGFuZ2xlIHNob3Vs
ZCBhcHBlYXIgd2l0aGluIHRoZSBncmV5IGNpcmNsZS48L3A+Cis8ZGl2IGlkPSJzaGFwZS1jb250
YWluZXIiPgorICA8ZGl2IGlkPSJzaGFwZS1iYWNrZ3JvdW5kIj48L2Rpdj4KKyAgPGRpdiBpZD0i
c2hhcGUtaW5zaWRlIj5YPC9kaXY+Cis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCA3ZDIwZmRlLi5mMzFkMTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEgQEAKKzIwMTIt
MTEtMjggIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTUyBF
eGNsdXNpb25zXSBBZGQgc3VwcG9ydCBmb3IgY29tcHV0aW5nIHRoZSBmaXJzdCBpbmNsdWRlZCBp
bnRlcnZhbCBwb3NpdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwMzMyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIElmIHRoZSBmaXJzdCAid29yZCIgaW4gYSBsaW5lIGRvZXNuJ3QgZml0IHdpdGhp
biB0aGUgc2hhcGUtaW5zaWRlIHdoZW4gbGluZVRvcAorICAgICAgICBpcyB0aGUgdG9wIG9mIHRo
ZSBzaGFwZSdzIGxvZ2ljYWwgYm91bmRpbmcgYm94LCBhZGp1c3QgbGluZVRvcCBkb3dud2FyZHMg
dG8gd2hlcmUKKyAgICAgICAgdGhlIHdvcmQgZml0cy4gIEN1cnJlbnRseSBvbmx5IHJvdW5kZWQg
cmVjdGFuZ2xlIHNoYXBlcyBhcmUgc3VwcG9ydGVkLgorCisgICAgICAgIEFkZGVkIEV4Y2x1c2lv
blNoYXBlOjpmaXJzdEluY2x1ZGVkSW50ZXJ2YWxMb2dpY2FsVG9wKCkuIFRoZSBuZXcgdmlydHVh
bCBtZXRob2QKKyAgICAgICAgY29tcHV0ZXMgdGhlIHRvcG1vc3QvbGVmdG1vc3QgbG9jYXRpb24g
d2hlcmUgYSBsaW5lIHNlZ21lbnQgd2l0aCB0aGUgc3BlY2lmaWVkCisgICAgICAgIG1pbkxvZ2lj
YWxJbnRlcnZhbFNpemUgd2lsbCBmaXQgd2l0aGluIHRoZSBleGNsdXNpb24gc2hhcGUgYW5kIHJl
dHVybnMgdGhlCisgICAgICAgIGNvcnJlc3BvbmRpbmcgbG9naWNhbCBZIGNvb3JkaW5hdGUuICBU
aGUgcmVzdWx0IGlzIGFkZGl0aW9uYWxseSBjb25zdHJhaW5lZCB0bworICAgICAgICBiZSBhdCBv
ciBiZWxvdyBtaW5Mb2dpY2FsSW50ZXJ2YWxUb3AuIElmIHRoZSBzZWdtZW50IHdpbGwgbm90IGZp
dCBhbnl3aGVyZSB3aXRoaW4KKyAgICAgICAgdGhlIHNoYXBlLCB0aGVuIGZhbHNlIGlzIHJldHVy
bmVkLgorCisgICAgICAgIER1cmluZyBsYXlvdXQsIG1pbkxvZ2ljYWxJbnRlcnZhbFRvcCBpcyB0
aGUgbm9taW5hbCB0b3Agb2YgdGhlIGxpbmUgYmVpbmcgbGFpZAorICAgICAgICBvdXQgd2l0aGlu
IHRoZSBleGNsdXNpb24gc2hhcGUuCisKKyAgICAgICAgUmVuZGVyQmxvY2s6OmxheW91dFJ1bnNB
bmRGbG9hdHNJblJhbmdlKCkgbm93IGNhbGxzIGEgbmV3IEV4Y2x1c2lvblNoYXBlSW5zaWRlSW5m
bworICAgICAgICBtZXRob2QsIGFkanVzdExvZ2ljYWxMaW5lVG9wKCksIHdoaWNoIHVzZXMgZmly
c3RJbmNsdWRlZEludGVydmFsTG9naWNhbFRvcCgpIHRvCisgICAgICAgIGRlY2lkZSBpZiB0aGUg
bG9naWNhbCB0b3Agb2YgdGhlIGxpbmUgaGFzIHRvIGJlIG1vdmVkIGRvd253YXJkcywgZm9yIHRo
ZSBmaXJzdAorICAgICAgICB3b3JkIHRvIGZpdCB3aXRoaW4gdGhlIGV4Y2x1c2lvbiBzaGFwZS4K
KworICAgICAgICBUZXN0czogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNp
ZGUtcm91bmRlZC1yZWN0YW5nbGUtZml0LTAwMS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2V4
Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1yb3VuZGVkLXJlY3RhbmdsZS1maXQt
MDAyLmh0bWwKKworICAgICAgICAqIHJlbmRlcmluZy9FeGNsdXNpb25Qb2x5Z29uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkV4Y2x1c2lvblBvbHlnb246OmZpcnN0SW5jbHVkZWRJbnRlcnZhbExv
Z2ljYWxUb3ApOiBUaGlzIGlzIGEgc3R1YiBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKiByZW5k
ZXJpbmcvRXhjbHVzaW9uUG9seWdvbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9FeGNsdXNpb25S
ZWN0YW5nbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZWxsaXBzZVhJbnRlcmNlcHQpOiBBZGRl
ZCBzcGFjZXMgdG8gY29uZm9ybSB0byB3ZWJraXQgc3R5bGUgYW5kIHRvIGJlIGNvbnNpc3RlbnQg
d2l0aCBlbGxpcHNlWUludGVyY2VwdCgpCisgICAgICAgIChXZWJDb3JlOjplbGxpcHNlWUludGVy
Y2VwdCk6IENvbXB1dGUgYW4gZWxsaXBzZSdzIFkgaW50ZXJjZXB0IGZvciBhbiBYIGNvb3JkaW5h
dGUuCisgICAgICAgIChXZWJDb3JlOjpFeGNsdXNpb25SZWN0YW5nbGU6OmZpcnN0SW5jbHVkZWRJ
bnRlcnZhbExvZ2ljYWxUb3ApOiBTZWUgdGhlIGRlc2NyaXB0aW9uIGFib3ZlLgorICAgICAgICAq
IHJlbmRlcmluZy9FeGNsdXNpb25SZWN0YW5nbGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvRXhj
bHVzaW9uU2hhcGUuaDoKKyAgICAgICAgKEV4Y2x1c2lvblNoYXBlKToKKyAgICAgICAgKFdlYkNv
cmU6OkV4Y2x1c2lvblNoYXBlOjpsb2dpY2FsVG9wRm9yTWluWSk6IEludGVybmFsIHRvIGxvZ2lj
YWwgY29vcmRpbmF0ZSBjb252ZXJzaW9uLgorICAgICAgICAqIHJlbmRlcmluZy9FeGNsdXNpb25T
aGFwZUluc2lkZUluZm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXhjbHVzaW9uU2hhcGVJbnNp
ZGVJbmZvOjphZGp1c3RMb2dpY2FsTGluZVRvcCk6IEEgbmV3IG1ldGhvZCB0aGF0IHVwZGF0ZXMg
bV9saW5lVG9wIHdpdGggZmlyc3RJbmNsdWRlZEludGVydmFsUG9zaXRpb24oKS4KKyAgICAgICAg
KiByZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLmg6CisgICAgICAgIChFeGNsdXNp
b25TaGFwZUluc2lkZUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6RXhjbHVzaW9uU2hhcGVJbnNp
ZGVJbmZvOjpsb2dpY2FsTGluZVRvcCk6IFRoaXMgaXMganVzdCBhIGNvdmVyIGZvciB0aGUgcHJp
dmF0ZSBtX2xpbmVUb3AgZmllbGQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrTGlu
ZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bGF5b3V0UnVuc0Fu
ZEZsb2F0c0luUmFuZ2UpOiBBZGRlZCBjb2RlIHRoYXQgcmVzdGFydHMgdGhlIGxheW91dCBsb29w
IGlmIGl0J3MgbmVjZXNzYXJ5IHRvIGFkanVzdCB0aGUgbGluZSdzIGxvZ2ljYWxUb3AuCisKIDIw
MTItMTItMDUgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFJF
R1JFU1NJT04ocjEzNjYxNSk6IEluY29ycmVjdCBzdHlsZSBzaGFyaW5nIGluIHZpZXctc291cmNl
IGRvY3VtZW50cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNp
b25Qb2x5Z29uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25Qb2x5Z29u
LmNwcAppbmRleCAyMWJlYWMxLi45NGI5M2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvRXhjbHVzaW9uUG9seWdvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0V4Y2x1c2lvblBvbHlnb24uY3BwCkBAIC0zNzYsNCArMzc2LDIwIEBAIHZvaWQgRXhjbHVz
aW9uUG9seWdvbjo6Z2V0SW5jbHVkZWRJbnRlcnZhbHMoZmxvYXQgbG9naWNhbFRvcCwgZmxvYXQg
bG9naWNhbEhlaWdoCiAgICAgfQogfQogCitib29sIEV4Y2x1c2lvblBvbHlnb246OmZpcnN0SW5j
bHVkZWRJbnRlcnZhbExvZ2ljYWxUb3AoZmxvYXQgbWluTG9naWNhbEludGVydmFsVG9wLCBjb25z
dCBGbG9hdFNpemUmIG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUsIGZsb2F0JiByZXN1bHQpIGNvbnN0
Cit7CisgICAgLy8gRklYTUU6IFRoaXMgaXMganVzdCBhIHRlbXBvcmFyeSBzdHViLCBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzNDI5CisKKyAgICBpZiAobWluTG9n
aWNhbEludGVydmFsU2l6ZS53aWR0aCgpID4gbV9ib3VuZGluZ0JveC53aWR0aCgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBmbG9hdCBtaW5ZID0gbWluWUZvckxvZ2ljYWxMaW5lKG1p
bkxvZ2ljYWxJbnRlcnZhbFRvcCwgbWluTG9naWNhbEludGVydmFsU2l6ZS5oZWlnaHQoKSk7Cisg
ICAgZmxvYXQgbWF4WSA9IG1heFlGb3JMb2dpY2FsTGluZShtaW5Mb2dpY2FsSW50ZXJ2YWxUb3As
IG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUuaGVpZ2h0KCkpOworICAgIGlmIChtaW5ZIDwgbV9ib3Vu
ZGluZ0JveC55KCkgfHwgbWF4WSA+IG1fYm91bmRpbmdCb3gubWF4WSgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICByZXN1bHQgPSBtaW5Mb2dpY2FsSW50ZXJ2YWxUb3A7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25Qb2x5Z29uLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvRXhjbHVzaW9uUG9seWdvbi5oCmluZGV4IDY0N2ViMTcuLjI1ZmM2ZjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25Qb2x5Z29uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblBvbHlnb24uaApAQCAtNjYsNiArNjYs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzRW1wdHkoKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiBtX2VtcHR5OyB9CiAgICAgdmlydHVhbCB2b2lkIGdldEV4Y2x1ZGVkSW50ZXJ2YWxz
KGZsb2F0IGxvZ2ljYWxUb3AsIGZsb2F0IGxvZ2ljYWxIZWlnaHQsIFNlZ21lbnRMaXN0JikgY29u
c3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGdldEluY2x1ZGVkSW50ZXJ2YWxzKGZsb2F0
IGxvZ2ljYWxUb3AsIGZsb2F0IGxvZ2ljYWxIZWlnaHQsIFNlZ21lbnRMaXN0JikgY29uc3QgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBib29sIGZpcnN0SW5jbHVkZWRJbnRlcnZhbExvZ2ljYWxUb3Ao
ZmxvYXQgbWluTG9naWNhbEludGVydmFsVG9wLCBjb25zdCBGbG9hdFNpemUmIG1pbkxvZ2ljYWxJ
bnRlcnZhbFNpemUsIGZsb2F0JikgY29uc3QgT1ZFUlJJREU7CiAKIHByaXZhdGU6CiAgICAgdm9p
ZCBjb21wdXRlWEludGVyc2VjdGlvbnMoZmxvYXQgeSwgYm9vbCBpc01pblksIFZlY3RvcjxFeGNs
dXNpb25JbnRlcnZhbD4mKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9FeGNsdXNpb25SZWN0YW5nbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4
Y2x1c2lvblJlY3RhbmdsZS5jcHAKaW5kZXggMzI4Y2JhMi4uYzFmZTZlMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblJlY3RhbmdsZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblJlY3RhbmdsZS5jcHAKQEAgLTM3LDcgKzM3
LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0YXRpYyBpbmxpbmUgZmxvYXQgZWxsaXBzZVhJ
bnRlcmNlcHQoZmxvYXQgeSwgZmxvYXQgcngsIGZsb2F0IHJ5KQogewogICAgIEFTU0VSVChyeSA+
IDApOwotICAgIHJldHVybiByeCAqIHNxcnQoMSAtICh5KnkpIC8gKHJ5KnJ5KSk7CisgICAgcmV0
dXJuIHJ4ICogc3FydCgxIC0gKHkgKiB5KSAvIChyeSAqIHJ5KSk7Cit9CisKK3N0YXRpYyBpbmxp
bmUgZmxvYXQgZWxsaXBzZVlJbnRlcmNlcHQoZmxvYXQgeCwgZmxvYXQgcngsIGZsb2F0IHJ5KQor
eworICAgIEFTU0VSVChyeCA+IDApOworICAgIHJldHVybiByeSAqIHNxcnQoMSAtICh4ICogeCkg
LyAocnggKiByeCkpOwogfQogCiB2b2lkIEV4Y2x1c2lvblJlY3RhbmdsZTo6Z2V0RXhjbHVkZWRJ
bnRlcnZhbHMoZmxvYXQgbG9naWNhbFRvcCwgZmxvYXQgbG9naWNhbEhlaWdodCwgU2VnbWVudExp
c3QmIHJlc3VsdCkgY29uc3QKQEAgLTExNSw0ICsxMjEsNTEgQEAgdm9pZCBFeGNsdXNpb25SZWN0
YW5nbGU6OmdldEluY2x1ZGVkSW50ZXJ2YWxzKGZsb2F0IGxvZ2ljYWxUb3AsIGZsb2F0IGxvZ2lj
YWxIZWkKICAgICByZXN1bHQuYXBwZW5kKExpbmVTZWdtZW50KHgxLCB4MikpOwogfQogCitib29s
IEV4Y2x1c2lvblJlY3RhbmdsZTo6Zmlyc3RJbmNsdWRlZEludGVydmFsTG9naWNhbFRvcChmbG9h
dCBtaW5Mb2dpY2FsSW50ZXJ2YWxUb3AsIGNvbnN0IEZsb2F0U2l6ZSYgbWluTG9naWNhbEludGVy
dmFsU2l6ZSwgZmxvYXQmIHJlc3VsdCkgY29uc3QKK3sKKyAgICBpZiAobWluTG9naWNhbEludGVy
dmFsU2l6ZS53aWR0aCgpID4gbV93aWR0aCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
ZmxvYXQgbWluWSA9IHN0ZDo6bWF4KG1feSwgbWluWUZvckxvZ2ljYWxMaW5lKG1pbkxvZ2ljYWxJ
bnRlcnZhbFRvcCwgbWluTG9naWNhbEludGVydmFsU2l6ZS5oZWlnaHQoKSkpOworICAgIGZsb2F0
IG1heFkgPSBtaW5ZICsgbWluTG9naWNhbEludGVydmFsU2l6ZS5oZWlnaHQoKTsKKyAgICBpZiAo
bWF4WSA+IG1feSArIG1faGVpZ2h0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBib29s
IGludGVydmFsT3ZlcmxhcHNNaW5Db3JuZXIgPSBtaW5ZIDwgbV95ICsgbV9yeTsKKyAgICBib29s
IGludGVydmFsT3ZlcmxhcHNNYXhDb3JuZXIgPSBtYXhZID4gbV95ICsgbV9oZWlnaHQgLSBtX3J5
OworCisgICAgaWYgKCFpbnRlcnZhbE92ZXJsYXBzTWluQ29ybmVyICYmICFpbnRlcnZhbE92ZXJs
YXBzTWF4Q29ybmVyKSB7CisgICAgICAgIHJlc3VsdCA9IGxvZ2ljYWxUb3BGb3JNaW5ZKG1pblks
IG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUuaGVpZ2h0KCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKKyAgICBmbG9hdCBjZW50ZXJZID0gbV95ICsgbV9oZWlnaHQgLyAyOworICAgIGJv
b2wgbWluQ29ybmVyRGVmaW5lc1ggPSBmYWJzKGNlbnRlclkgLSBtaW5ZKSA+IGZhYnMoY2VudGVy
WSAtIG1heFkpOworICAgIGJvb2wgaW50ZXJ2YWxGaXRzV2l0aGluQ29ybmVycyA9IG1pbkxvZ2lj
YWxJbnRlcnZhbFNpemUud2lkdGgoKSArIDIgKiBtX3J4IDw9IG1fd2lkdGg7CisKKyAgICBpZiAo
aW50ZXJ2YWxPdmVybGFwc01pbkNvcm5lciAmJiAoIWludGVydmFsT3ZlcmxhcHNNYXhDb3JuZXIg
fHwgbWluQ29ybmVyRGVmaW5lc1gpKSB7CisgICAgICAgIGZsb2F0IHhpID0gKG1fd2lkdGggLSBt
aW5Mb2dpY2FsSW50ZXJ2YWxTaXplLndpZHRoKCkpIC8gMjsKKyAgICAgICAgZmxvYXQgeWkgPSBt
X3J5IC0gZWxsaXBzZVlJbnRlcmNlcHQobV9yeCAtIHhpLCBtX3J4LCBtX3J5KTsKKyAgICAgICAg
aWYgKChtX3kgKyB5aSA8IG1pblkpIHx8IGludGVydmFsRml0c1dpdGhpbkNvcm5lcnMpIHsKKyAg
ICAgICAgICAgIHJlc3VsdCA9IGxvZ2ljYWxUb3BGb3JNaW5ZKG1pblksIG1pbkxvZ2ljYWxJbnRl
cnZhbFNpemUuaGVpZ2h0KCkpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUuaGVpZ2h0KCkgPCBtX2hlaWdodCAt
ICgyICogeWkpKSB7CisgICAgICAgICAgICByZXN1bHQgPSBsb2dpY2FsVG9wRm9yTWluWShtX3kg
KyB5aSwgbWluTG9naWNhbEludGVydmFsU2l6ZS5oZWlnaHQoKSk7CisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChpbnRlcnZhbE92ZXJsYXBzTWF4
Q29ybmVyICYmICghaW50ZXJ2YWxPdmVybGFwc01pbkNvcm5lciB8fCAhbWluQ29ybmVyRGVmaW5l
c1gpKSB7CisgICAgICAgIGZsb2F0IHhpID0gKG1fd2lkdGggLSBtaW5Mb2dpY2FsSW50ZXJ2YWxT
aXplLndpZHRoKCkpIC8gMjsKKyAgICAgICAgZmxvYXQgeWkgPSBtX3J5IC0gZWxsaXBzZVlJbnRl
cmNlcHQobV9yeCAtIHhpLCBtX3J4LCBtX3J5KTsKKyAgICAgICAgaWYgKGludGVydmFsRml0c1dp
dGhpbkNvcm5lcnMgfHwgbWluWSA8PSAgbV95ICsgbV9oZWlnaHQgLSB5aSAtIG1pbkxvZ2ljYWxJ
bnRlcnZhbFNpemUuaGVpZ2h0KCkpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IGxvZ2ljYWxUb3BG
b3JNaW5ZKG1pblksIG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUuaGVpZ2h0KCkpOworICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9FeGNsdXNpb25SZWN0YW5nbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9F
eGNsdXNpb25SZWN0YW5nbGUuaAppbmRleCA1ODM5ZWVjLi5mZjg4ZjJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uUmVjdGFuZ2xlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblJlY3RhbmdsZS5oCkBAIC01NCw2ICs1NCw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNFbXB0eSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0
dXJuIG1fd2lkdGggPD0gMCB8fCBtX2hlaWdodCA8PSAwOyB9CiAgICAgdmlydHVhbCB2b2lkIGdl
dEV4Y2x1ZGVkSW50ZXJ2YWxzKGZsb2F0IGxvZ2ljYWxUb3AsIGZsb2F0IGxvZ2ljYWxIZWlnaHQs
IFNlZ21lbnRMaXN0JikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGdldEluY2x1
ZGVkSW50ZXJ2YWxzKGZsb2F0IGxvZ2ljYWxUb3AsIGZsb2F0IGxvZ2ljYWxIZWlnaHQsIFNlZ21l
bnRMaXN0JikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGZpcnN0SW5jbHVkZWRJ
bnRlcnZhbExvZ2ljYWxUb3AoZmxvYXQgbWluTG9naWNhbEludGVydmFsVG9wLCBjb25zdCBGbG9h
dFNpemUmIG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUsIGZsb2F0JikgY29uc3QgT1ZFUlJJREU7CiAK
IHByaXZhdGU6CiAgICAgZmxvYXQgbV94OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0V4Y2x1c2lvblNoYXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVz
aW9uU2hhcGUuaAppbmRleCBmNDNkYmY4Li4zNmRjMWI2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0V4Y2x1c2lvblNoYXBlLmgKQEAgLTY3LDExICs2NywxMyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBib29sIGlzRW1wdHkoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldElu
Y2x1ZGVkSW50ZXJ2YWxzKGZsb2F0IGxvZ2ljYWxUb3AsIGZsb2F0IGxvZ2ljYWxIZWlnaHQsIFNl
Z21lbnRMaXN0JikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRFeGNsdWRlZEludGVy
dmFscyhmbG9hdCBsb2dpY2FsVG9wLCBmbG9hdCBsb2dpY2FsSGVpZ2h0LCBTZWdtZW50TGlzdCYp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgZmlyc3RJbmNsdWRlZEludGVydmFsTG9naWNh
bFRvcChmbG9hdCBtaW5Mb2dpY2FsSW50ZXJ2YWxUb3AsIGNvbnN0IEZsb2F0U2l6ZSYgbWluTG9n
aWNhbEludGVydmFsU2l6ZSwgZmxvYXQmIHJlc3VsdCkgY29uc3QgPSAwOwogCiBwcm90ZWN0ZWQ6
CiAgICAgZmxvYXQgbWluWUZvckxvZ2ljYWxMaW5lKGZsb2F0IGxvZ2ljYWxUb3AsIGZsb2F0IGxv
Z2ljYWxIZWlnaHQpIGNvbnN0IHsgcmV0dXJuIGlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKG1f
d3JpdGluZ01vZGUpID8gbV9sb2dpY2FsQm94SGVpZ2h0IC0gbG9naWNhbFRvcCAtIGxvZ2ljYWxI
ZWlnaHQgOiBsb2dpY2FsVG9wOyB9CiAgICAgZmxvYXQgbWF4WUZvckxvZ2ljYWxMaW5lKGZsb2F0
IGxvZ2ljYWxUb3AsIGZsb2F0IGxvZ2ljYWxIZWlnaHQpIGNvbnN0IHsgcmV0dXJuICBpc0ZsaXBw
ZWRCbG9ja3NXcml0aW5nTW9kZShtX3dyaXRpbmdNb2RlKSA/IG1fbG9naWNhbEJveEhlaWdodCAt
IGxvZ2ljYWxUb3AgOiBsb2dpY2FsVG9wICsgbG9naWNhbEhlaWdodDsgfQogICAgIEZsb2F0UmVj
dCBpbnRlcm5hbFRvTG9naWNhbEJvdW5kaW5nQm94KGNvbnN0IEZsb2F0UmVjdCYgcikgY29uc3Qg
eyByZXR1cm4gaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUobV93cml0aW5nTW9kZSkgPyBGbG9h
dFJlY3Qoci54KCksIG1fbG9naWNhbEJveEhlaWdodCAtIHIubWF4WSgpLCByLndpZHRoKCksIHIu
aGVpZ2h0KCkpIDogcjsgfQorICAgIGZsb2F0IGxvZ2ljYWxUb3BGb3JNaW5ZKGZsb2F0IG1pblks
IGZsb2F0IGxvZ2ljYWxIZWlnaHQpIGNvbnN0IHsgcmV0dXJuIGlzRmxpcHBlZEJsb2Nrc1dyaXRp
bmdNb2RlKG1fd3JpdGluZ01vZGUpID8gbV9sb2dpY2FsQm94SGVpZ2h0IC0gbWluWSAtIGxvZ2lj
YWxIZWlnaHQgOiBtaW5ZOyB9CiAKIHByaXZhdGU6CiAgICAgV3JpdGluZ01vZGUgbV93cml0aW5n
TW9kZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25TaGFw
ZUluc2lkZUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBl
SW5zaWRlSW5mby5jcHAKaW5kZXggOTM0ZTNmMi4uZGVjM2UyZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby5jcHAKQEAgLTEx
Nyw1ICsxMTcsMjMgQEAgYm9vbCBFeGNsdXNpb25TaGFwZUluc2lkZUluZm86OmNvbXB1dGVTZWdt
ZW50c0ZvckxpbmUoTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXQKICAgICByZXR1cm4gbV9zZWdt
ZW50cy5zaXplKCk7CiB9CiAKK2Jvb2wgRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvOjphZGp1c3RM
b2dpY2FsTGluZVRvcChmbG9hdCBtaW5TZWdtZW50V2lkdGgpCit7CisgICAgaWYgKCFtX3NoYXBl
IHx8IG1fbGluZUhlaWdodCA8PSAwIHx8IG1fbGluZVRvcCA+IHNoYXBlTG9naWNhbEJvdHRvbSgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBmbG9hdCBmbG9hdE5ld0xpbmVUb3A7Cisg
ICAgaWYgKG1fc2hhcGUtPmZpcnN0SW5jbHVkZWRJbnRlcnZhbExvZ2ljYWxUb3AobV9saW5lVG9w
LCBGbG9hdFNpemUobWluU2VnbWVudFdpZHRoLCBtX2xpbmVIZWlnaHQpLCBmbG9hdE5ld0xpbmVU
b3ApKSB7CisgICAgICAgIC8vIFVzZSBmcm9tRmxvYXRDZWlsKCkgdG8gZW5zdXJlIHRoYXQgdGhl
IHJldHVybmVkIExheW91dFVuaXQgdmFsdWUgaXMgd2l0aGluIHRoZSBzaGFwZSdzIGJvdW5kcy4K
KyAgICAgICAgTGF5b3V0VW5pdCBuZXdMaW5lVG9wID0gTGF5b3V0VW5pdDo6ZnJvbUZsb2F0Q2Vp
bChmbG9hdE5ld0xpbmVUb3ApOworICAgICAgICBpZiAobmV3TGluZVRvcCA+IG1fbGluZVRvcCkg
eworICAgICAgICAgICAgbV9saW5lVG9wID0gbmV3TGluZVRvcDsKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCiB9CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25TaGFw
ZUluc2lkZUluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25TaGFwZUlu
c2lkZUluZm8uaAppbmRleCA4YmUxMTRkLi43NjAzZGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby5oCkBAIC02OCw5ICs2OCwx
MiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX3NlZ21lbnRzOwogICAgIH0KICAgICBib29s
IGNvbXB1dGVTZWdtZW50c0ZvckxpbmUoTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxp
bmVIZWlnaHQpOworICAgIGJvb2wgYWRqdXN0TG9naWNhbExpbmVUb3AoZmxvYXQgbWluU2VnbWVu
dFdpZHRoKTsKICAgICB2b2lkIGNvbXB1dGVTaGFwZVNpemUoTGF5b3V0VW5pdCBsb2dpY2FsV2lk
dGgsIExheW91dFVuaXQgbG9naWNhbEhlaWdodCk7CiAgICAgdm9pZCBkaXJ0eVNoYXBlU2l6ZSgp
IHsgbV9zaGFwZVNpemVEaXJ0eSA9IHRydWU7IH0KIAorICAgIExheW91dFVuaXQgbG9naWNhbExp
bmVUb3AoKSBjb25zdCB7IHJldHVybiBtX2xpbmVUb3A7IH0KKwogcHJpdmF0ZToKICAgICBFeGNs
dXNpb25TaGFwZUluc2lkZUluZm8oUmVuZGVyQmxvY2sqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAppbmRleCA5NzBmYmMzLi4w
YzE2YTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tM
aW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tM
aW5lTGF5b3V0LmNwcApAQCAtMTQ0Nyw2ICsxNDQ3LDE2IEBAIHZvaWQgUmVuZGVyQmxvY2s6Omxh
eW91dFJ1bnNBbmRGbG9hdHNJblJhbmdlKExpbmVMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIElu
bGluCiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUKGVuZCAhPSByZXNvbHZlci5wb3NpdGlvbigp
KTsKIAorI2lmIEVOQUJMRShDU1NfRVhDTFVTSU9OUykKKyAgICAgICAgaWYgKGV4Y2x1c2lvblNo
YXBlSW5zaWRlSW5mbyAmJiB3b3JkTWVhc3VyZW1lbnRzLnNpemUoKSAmJiBleGNsdXNpb25TaGFw
ZUluc2lkZUluZm8tPmFkanVzdExvZ2ljYWxMaW5lVG9wKHdvcmRNZWFzdXJlbWVudHNbMF0ud2lk
dGgpKSB7CisgICAgICAgICAgICByZW1vdmVGbG9hdGluZ09iamVjdHNCZWxvdyhsYXN0RmxvYXRG
cm9tUHJldmlvdXNMaW5lLCBsb2dpY2FsSGVpZ2h0KCkpOworICAgICAgICAgICAgcmVzb2x2ZXIu
c2V0UG9zaXRpb25JZ25vcmluZ05lc3RlZElzb2xhdGVzKG9sZEVuZCk7CisgICAgICAgICAgICBl
bmQgPSBvbGRFbmQ7CisgICAgICAgICAgICBzZXRMb2dpY2FsSGVpZ2h0KGV4Y2x1c2lvblNoYXBl
SW5zaWRlSW5mby0+bG9naWNhbExpbmVUb3AoKSAtIGFic29sdXRlTG9naWNhbFRvcCk7CisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorI2VuZGlmCisKICAgICAgICAgLy8gVGhpcyBp
cyBhIHNob3J0LWN1dCBmb3IgZW1wdHkgbGluZXMuCiAgICAgICAgIGlmIChsYXlvdXRTdGF0ZS5s
aW5lSW5mbygpLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgaWYgKGxhc3RSb290Qm94KCkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177911</attachid>
            <date>2012-12-05 19:41:14 -0800</date>
            <delta_ts>2012-12-06 11:06:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>23490</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1ZWJmOTAyLi40ZDdmOTZjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMTEt
MjggIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTUyBFeGNs
dXNpb25zXSBBZGQgc3VwcG9ydCBmb3IgY29tcHV0aW5nIHRoZSBmaXJzdCBpbmNsdWRlZCBpbnRl
cnZhbCBwb3NpdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwMzMyNworCisgICAgICAgIFRlc3QgdGhlIHJvdW5kZWQgcmVjdGFuZ2xlIHN1cHBv
cnQgZm9yIGFkanVzdGluZyB0aGUgdG9wIG9mIGEgbGluZSBkb3dud2FyZHMKKyAgICAgICAgd2hl
biB0aGUgZmlyc3Qgd29yZCBkb2Vzbid0IGZpdCB3aXRoaW4gdGhlIHNoYXBlLgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9leGNsdXNpb25z
L3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcm91bmRlZC1yZWN0YW5nbGUtZml0LTAwMS1leHBl
Y3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRl
L3NoYXBlLWluc2lkZS1yb3VuZGVkLXJlY3RhbmdsZS1maXQtMDAxLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXJvdW5kZWQt
cmVjdGFuZ2xlLWZpdC0wMDItZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9l
eGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcm91bmRlZC1yZWN0YW5nbGUtZml0
LTAwMi5odG1sOiBBZGRlZC4KKwogMjAxMi0xMi0wNSAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBw
bGUuY29tPgogCiAgICAgICAgIFRleHQgZGVjb3JhdGlvbnMgYXJlIHJvdGF0ZWQgd2hlbiB0ZXh0
LWNvbWJpbmUgdGFrZXMgZWZmZWN0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1
c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1yb3VuZGVkLXJlY3RhbmdsZS1maXQtMDAx
LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRl
L3NoYXBlLWluc2lkZS1yb3VuZGVkLXJlY3RhbmdsZS1maXQtMDAxLWV4cGVjdGVkLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTZlYTE0OQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRl
LXJvdW5kZWQtcmVjdGFuZ2xlLWZpdC0wMDEtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDQ0IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorICAgIGlmICh3aW5k
b3cuaW50ZXJuYWxzKQorICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldENTU0V4
Y2x1c2lvbnNFbmFibGVkKHRydWUpOworPC9zY3JpcHQ+Cis8c3R5bGU+Cisuc2hhcGUtY29udGFp
bmVyIHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgd2lkdGg6IDQwMHB4OworICAgIGhl
aWdodDogMjBweDsKKyAgICBtYXJnaW46IDEwcHg7Cit9CisKKy5zaGFwZS1iYWNrZ3JvdW5kIHsK
KyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAwcHg7CisgICAgbGVmdDogMHB4Owor
ICAgIHdpZHRoOiA0MDBweDsKKyAgICBoZWlnaHQ6IDIwMHB4OworICAgIGJvcmRlci1yYWRpdXM6
IDIwMHB4IC8gNTBweDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjAwLDIwMCwyMDApOwor
fQorCisuc2hhcGUtaW5zaWRlIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiA1
MHB4OworICAgIGxlZnQ6IDBweDsKKyAgICB3aWR0aDogNDAwcHg7CisgICAgaGVpZ2h0OiAyMDBw
eDsKKyAgICBmb250OiA1MHB4LzEgQWhlbSwgc2Fucy1zZXJpZjsKKyAgICBjb2xvcjogZ3JlZW47
Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGUgZ3JlZW4gcmVjdGFuZ2xlIHNo
b3VsZCBhcHBlYXIganVzdCBiZWxvdyB0aGUgZ3JleSByb3VuZGVkIHJlY3RhbmdsZSdzIHVwcGVy
IGNvcm5lcnMuPC9wPgorPGRpdiBjbGFzcz0ic2hhcGUtY29udGFpbmVyIj4KKyAgPGRpdiBjbGFz
cz0ic2hhcGUtYmFja2dyb3VuZCI+PC9kaXY+CisgIDxkaXYgY2xhc3M9InNoYXBlLWluc2lkZSI+
WFhYWFhYWFg8L2Rpdj4KKzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcm91bmRl
ZC1yZWN0YW5nbGUtZml0LTAwMS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3No
YXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcm91bmRlZC1yZWN0YW5nbGUtZml0LTAwMS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiN2RlNWUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lk
ZS1yb3VuZGVkLXJlY3RhbmdsZS1maXQtMDAxLmh0bWwKQEAgLTAsMCArMSw0NSBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmludGVy
bmFscykKKyAgICAgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRDU1NFeGNsdXNpb25z
RW5hYmxlZCh0cnVlKTsKKzwvc2NyaXB0PgorPHN0eWxlPgorLnNoYXBlLWNvbnRhaW5lciB7Cisg
ICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIHdpZHRoOiA0MDBweDsKKyAgICBoZWlnaHQ6IDIw
cHg7CisgICAgbWFyZ2luOiAxMHB4OworfQorCisuc2hhcGUtYmFja2dyb3VuZCB7CisgICAgcG9z
aXRpb246IGFic29sdXRlOworICAgIHRvcDogMHB4OworICAgIGxlZnQ6IDBweDsKKyAgICB3aWR0
aDogNDAwcHg7CisgICAgaGVpZ2h0OiAyMDBweDsKKyAgICBib3JkZXItcmFkaXVzOiAyMDBweCAv
IDUwcHg7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIwMCwyMDAsMjAwKTsKK30KKworLnNo
YXBlLWluc2lkZSB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDogMHB4OworICAg
IGxlZnQ6IDBweDsKKyAgICB3aWR0aDogNDAwcHg7CisgICAgaGVpZ2h0OiAyMDBweDsKKyAgICAt
d2Via2l0LXNoYXBlLWluc2lkZTogcmVjdGFuZ2xlKDBweCwgMHB4LCA0MDBweCwgMjAwcHgsIDIw
MHB4LCA1MHB4KTsKKyAgICBmb250OiA1MHB4LzEgQWhlbSwgc2Fucy1zZXJpZjsKKyAgICBjb2xv
cjogZ3JlZW47Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGUgZ3JlZW4gcmVj
dGFuZ2xlIHNob3VsZCBhcHBlYXIganVzdCBiZWxvdyB0aGUgZ3JleSByb3VuZGVkIHJlY3Rhbmds
ZSdzIHVwcGVyIGNvcm5lcnMuPC9wPgorPGRpdiBjbGFzcz0ic2hhcGUtY29udGFpbmVyIj4KKyAg
PGRpdiBjbGFzcz0ic2hhcGUtYmFja2dyb3VuZCI+PC9kaXY+CisgIDxkaXYgY2xhc3M9InNoYXBl
LWluc2lkZSI+WFhYWFhYWFg8L2Rpdj4KKzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNp
ZGUtcm91bmRlZC1yZWN0YW5nbGUtZml0LTAwMi1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcm91bmRlZC1yZWN0YW5n
bGUtZml0LTAwMi1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjlmYjNhZjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lv
bnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1yb3VuZGVkLXJlY3RhbmdsZS1maXQtMDAyLWV4
cGVjdGVkLmh0bWwKQEAgLTAsMCArMSw1MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgd2luZG93
LmludGVybmFscy5zZXR0aW5ncy5zZXRDU1NFeGNsdXNpb25zRW5hYmxlZCh0cnVlKTsKKzwvc2Ny
aXB0PgorPCEtLSAKK0luIHRoaXMgdGVzdCB0aGUgc2hhcGUtaW5zaWRlIHNoYXBlIGlzIGEgcm91
bmRlZCByZWN0YW5nbGUgY29uZmlndXJlZCBhcyBhIGNpcmNsZSB3aXRoIHJhZGl1cyBvZiAxMDBw
eC4KK1RoZSBzaGFwZS1pbnNpZGUgZWxlbWVudCBjb250YWlucyBhIHNpbmdsZSBzcXVhcmUgQWhl
bSBmb250IGNoYXJhY3RlciB0aGF0IGp1c3QgZml0cyB3dGhpbiB0aGUgY2lyY2xlLiAKK1RoYXQg
bWVhbnMgdGhhdCB0aGUgY2hhcmFjdGVyJ3Mgc2l6ZSBpcyBzcXJ0KDIpKjEwMHB4LCB3aGljaCBp
cyAxNDEuNDEzNTZweC4KKworVGhlIHggYW5kIHkgY29vcmRpbmF0ZXMgb2YgdGhlIHBvaW50cyBh
dCB3aGljaCB0aGUgc3F1YXJlIGludGVyc2VjdHMgdGhlIGNpcmNsZSBhcmUgaGFsZiBvZiB0aGUg
CitkaWZmZXJlbmNlIGJldHdlZW4gY2lyY2xlJ3MgZGlhbWV0ZXIgYW5kIHRoZSBzaXplIG9mIHRo
ZSBzcXVhcmU6ICgyMDBweCAtIHNxcnQoMikqMTAwcHgpIC8gMiA9IDI5LjI4OTMyMTlweC4KKy0t
PgorPHN0eWxlPgorI3NoYXBlLWNvbnRhaW5lciB7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOwor
ICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICB3aWR0aDogMjAwcHg7CisgICAgaGVpZ2h0
OiAyMDBweDsKKyAgICBtYXJnaW46IDEwcHg7Cit9CisKKyNzaGFwZS1iYWNrZ3JvdW5kIHsKKyAg
ICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAwcHg7CisgICAgbGVmdDogMHB4OworICAg
IHdpZHRoOiAyMDBweDsKKyAgICBoZWlnaHQ6IDIwMHB4OworICAgIGJvcmRlci1yYWRpdXM6ICAx
MDBweCAvIDEwMHB4OworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigyMDAsMjAwLDIwMCk7Cit9
CisKKyNzaGFwZS1pbnNpZGUgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDI5
LjI4OTMyMTlweDsKKyAgICBsZWZ0OiAyOS4yODkzMjE5cHg7CisgICAgd2lkdGg6IDIwMHB4Owor
ICAgIGhlaWdodDogMjAwcHg7CisgICAgZm9udDogMTQxLjQyMTM1NnB4LzEgQWhlbSwgc2Fucy1z
ZXJpZjsKKyAgICBjb2xvcjogZ3JlZW47Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8
cD5UaGUgZ3JlZW4gcmVjdGFuZ2xlIHNob3VsZCBhcHBlYXIgd2l0aGluIHRoZSBncmV5IGNpcmNs
ZS48L3A+Cis8ZGl2IGlkPSJzaGFwZS1jb250YWluZXIiPgorICA8ZGl2IGlkPSJzaGFwZS1iYWNr
Z3JvdW5kIj48L2Rpdj4KKyAgPGRpdiBpZD0ic2hhcGUtaW5zaWRlIj5YPC9kaXY+Cis8L2Rpdj4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9u
cy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXJvdW5kZWQtcmVjdGFuZ2xlLWZpdC0wMDIuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRl
LXJvdW5kZWQtcmVjdGFuZ2xlLWZpdC0wMDIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5mNTlmZmRmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9l
eGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtcm91bmRlZC1yZWN0YW5nbGUtZml0
LTAwMi5odG1sCkBAIC0wLDAgKzEsNTEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIHdpbmRvdy5p
bnRlcm5hbHMuc2V0dGluZ3Muc2V0Q1NTRXhjbHVzaW9uc0VuYWJsZWQodHJ1ZSk7Cis8L3Njcmlw
dD4KKzwhLS0gCitJbiB0aGlzIHRlc3QgdGhlIHNoYXBlLWluc2lkZSBzaGFwZSBpcyBhIHJvdW5k
ZWQgcmVjdGFuZ2xlIGNvbmZpZ3VyZWQgYXMgYSBjaXJjbGUgd2l0aCByYWRpdXMgb2YgMTAwcHgu
CitUaGUgc2hhcGUtaW5zaWRlIGVsZW1lbnQgY29udGFpbnMgYSBzaW5nbGUgc3F1YXJlIEFoZW0g
Zm9udCBjaGFyYWN0ZXIgdGhhdCBqdXN0IGZpdHMgd3RoaW4gdGhlIGNpcmNsZS4gCitUaGF0IG1l
YW5zIHRoYXQgdGhlIGNoYXJhY3RlcidzIHNpemUgaXMgc3FydCgyKSoxMDBweCwgd2hpY2ggaXMg
MTQxLjQxMzU2cHguCistLT4KKzxzdHlsZT4KKyNzaGFwZS1jb250YWluZXIgeworICAgIHBvc2l0
aW9uOiByZWxhdGl2ZTsKKyAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgd2lkdGg6IDIw
MHB4OworICAgIGhlaWdodDogMjAwcHg7CisgICAgbWFyZ2luOiAxMHB4OworfQorCisjc2hhcGUt
YmFja2dyb3VuZCB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDogMHB4OworICAg
IGxlZnQ6IDBweDsKKyAgICB3aWR0aDogMjAwcHg7CisgICAgaGVpZ2h0OiAyMDBweDsKKyAgICBi
b3JkZXItcmFkaXVzOiAgMTAwcHggLyAxMDBweDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2Io
MjAwLDIwMCwyMDApOworfQorCisjc2hhcGUtaW5zaWRlIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1
dGU7CisgICAgdG9wOiAwcHg7CisgICAgbGVmdDogMHB4OworICAgIHdpZHRoOiAyMDBweDsKKyAg
ICBoZWlnaHQ6IDIwMHB4OworICAgIC13ZWJraXQtc2hhcGUtaW5zaWRlOiByZWN0YW5nbGUoMHB4
LCAwcHgsIDIwMHB4LCAyMDBweCwgMTAwcHgsIDEwMHB4KTsKKyAgICBmb250OiAxNDEuNDIxMzU2
cHgvMSBBaGVtLCBzYW5zLXNlcmlmOworICAgIGNvbG9yOiBncmVlbjsKK30KKzwvc3R5bGU+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxwPlRoZSBncmVlbiByZWN0YW5nbGUgc2hvdWxkIGFwcGVhciB3aXRo
aW4gdGhlIGdyZXkgY2lyY2xlLjwvcD4KKzxkaXYgaWQ9InNoYXBlLWNvbnRhaW5lciI+CisgIDxk
aXYgaWQ9InNoYXBlLWJhY2tncm91bmQiPjwvZGl2PgorICA8ZGl2IGlkPSJzaGFwZS1pbnNpZGUi
Plg8L2Rpdj4KKzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGU0OTIyOGMu
LjdjMjAzNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MiBAQAorMjAxMi0xMS0yOCAgSGFucyBN
dWxsZXIgIDxobXVsbGVyQGFkb2JlLmNvbT4KKworICAgICAgICBbQ1NTIEV4Y2x1c2lvbnNdIEFk
ZCBzdXBwb3J0IGZvciBjb21wdXRpbmcgdGhlIGZpcnN0IGluY2x1ZGVkIGludGVydmFsIHBvc2l0
aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAz
MzI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSWYg
dGhlIGZpcnN0ICJ3b3JkIiBpbiBhIGxpbmUgZG9lc24ndCBmaXQgd2l0aGluIHRoZSBzaGFwZS1p
bnNpZGUgd2hlbiBsaW5lVG9wCisgICAgICAgIGlzIHRoZSB0b3Agb2YgdGhlIHNoYXBlJ3MgbG9n
aWNhbCBib3VuZGluZyBib3gsIGFkanVzdCBsaW5lVG9wIGRvd253YXJkcyB0byB3aGVyZQorICAg
ICAgICB0aGUgd29yZCBmaXRzLiAgQ3VycmVudGx5IG9ubHkgcm91bmRlZCByZWN0YW5nbGUgc2hh
cGVzIGFyZSBzdXBwb3J0ZWQuCisKKyAgICAgICAgQWRkZWQgRXhjbHVzaW9uU2hhcGU6OmZpcnN0
SW5jbHVkZWRJbnRlcnZhbExvZ2ljYWxUb3AoKS4gVGhlIG5ldyB2aXJ0dWFsIG1ldGhvZAorICAg
ICAgICBjb21wdXRlcyB0aGUgdG9wbW9zdC9sZWZ0bW9zdCBsb2NhdGlvbiB3aGVyZSBhIGxpbmUg
c2VnbWVudCB3aXRoIHRoZSBzcGVjaWZpZWQKKyAgICAgICAgbWluTG9naWNhbEludGVydmFsU2l6
ZSB3aWxsIGZpdCB3aXRoaW4gdGhlIGV4Y2x1c2lvbiBzaGFwZSBhbmQgcmV0dXJucyB0aGUKKyAg
ICAgICAgY29ycmVzcG9uZGluZyBsb2dpY2FsIFkgY29vcmRpbmF0ZS4gIFRoZSByZXN1bHQgaXMg
YWRkaXRpb25hbGx5IGNvbnN0cmFpbmVkIHRvCisgICAgICAgIGJlIGF0IG9yIGJlbG93IG1pbkxv
Z2ljYWxJbnRlcnZhbFRvcC4gSWYgdGhlIHNlZ21lbnQgd2lsbCBub3QgZml0IGFueXdoZXJlIHdp
dGhpbgorICAgICAgICB0aGUgc2hhcGUsIHRoZW4gZmFsc2UgaXMgcmV0dXJuZWQuCisKKyAgICAg
ICAgRHVyaW5nIGxheW91dCwgbWluTG9naWNhbEludGVydmFsVG9wIGlzIHRoZSBub21pbmFsIHRv
cCBvZiB0aGUgbGluZSBiZWluZyBsYWlkCisgICAgICAgIG91dCB3aXRoaW4gdGhlIGV4Y2x1c2lv
biBzaGFwZS4KKworICAgICAgICBSZW5kZXJCbG9jazo6bGF5b3V0UnVuc0FuZEZsb2F0c0luUmFu
Z2UoKSBub3cgY2FsbHMgYSBuZXcgRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvCisgICAgICAgIG1l
dGhvZCwgYWRqdXN0TG9naWNhbExpbmVUb3AoKSwgd2hpY2ggdXNlcyBmaXJzdEluY2x1ZGVkSW50
ZXJ2YWxMb2dpY2FsVG9wKCkgdG8KKyAgICAgICAgZGVjaWRlIGlmIHRoZSBsb2dpY2FsIHRvcCBv
ZiB0aGUgbGluZSBoYXMgdG8gYmUgbW92ZWQgZG93bndhcmRzLCBmb3IgdGhlIGZpcnN0CisgICAg
ICAgIHdvcmQgdG8gZml0IHdpdGhpbiB0aGUgZXhjbHVzaW9uIHNoYXBlLgorCisgICAgICAgIFRl
c3RzOiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1yb3VuZGVkLXJl
Y3RhbmdsZS1maXQtMDAxLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZXhjbHVzaW9ucy9zaGFw
ZS1pbnNpZGUvc2hhcGUtaW5zaWRlLXJvdW5kZWQtcmVjdGFuZ2xlLWZpdC0wMDIuaHRtbAorCisg
ICAgICAgICogcmVuZGVyaW5nL0V4Y2x1c2lvblBvbHlnb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RXhjbHVzaW9uUG9seWdvbjo6Zmlyc3RJbmNsdWRlZEludGVydmFsTG9naWNhbFRvcCk6IFRo
aXMgaXMgYSBzdHViIGltcGxlbWVudGF0aW9uLgorICAgICAgICAqIHJlbmRlcmluZy9FeGNsdXNp
b25Qb2x5Z29uLmg6CisgICAgICAgICogcmVuZGVyaW5nL0V4Y2x1c2lvblJlY3RhbmdsZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjplbGxpcHNlWEludGVyY2VwdCk6IEFkZGVkIHNwYWNlcyB0byBj
b25mb3JtIHRvIHdlYmtpdCBzdHlsZSBhbmQgdG8gYmUgY29uc2lzdGVudCB3aXRoIGVsbGlwc2VZ
SW50ZXJjZXB0KCkKKyAgICAgICAgKFdlYkNvcmU6OmVsbGlwc2VZSW50ZXJjZXB0KTogQ29tcHV0
ZSBhbiBlbGxpcHNlJ3MgWSBpbnRlcmNlcHQgZm9yIGFuIFggY29vcmRpbmF0ZS4KKyAgICAgICAg
KFdlYkNvcmU6OkV4Y2x1c2lvblJlY3RhbmdsZTo6Zmlyc3RJbmNsdWRlZEludGVydmFsTG9naWNh
bFRvcCk6IFNlZSB0aGUgZGVzY3JpcHRpb24gYWJvdmUuCisgICAgICAgICogcmVuZGVyaW5nL0V4
Y2x1c2lvblJlY3RhbmdsZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9FeGNsdXNpb25TaGFwZS5o
OgorICAgICAgICAoRXhjbHVzaW9uU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6RXhjbHVzaW9u
U2hhcGU6OmxvZ2ljYWxUb3BGb3JNaW5ZKTogSW50ZXJuYWwgdG8gbG9naWNhbCBjb29yZGluYXRl
IGNvbnZlcnNpb24uCisgICAgICAgICogcmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlSW5zaWRlSW5m
by5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFeGNsdXNpb25TaGFwZUluc2lkZUluZm86OmFkanVz
dExvZ2ljYWxMaW5lVG9wKTogQSBuZXcgbWV0aG9kIHRoYXQgdXBkYXRlcyBtX2xpbmVUb3Agd2l0
aCBmaXJzdEluY2x1ZGVkSW50ZXJ2YWxQb3NpdGlvbigpLgorICAgICAgICAqIHJlbmRlcmluZy9F
eGNsdXNpb25TaGFwZUluc2lkZUluZm8uaDoKKyAgICAgICAgKEV4Y2x1c2lvblNoYXBlSW5zaWRl
SW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpFeGNsdXNpb25TaGFwZUluc2lkZUluZm86OmxvZ2lj
YWxMaW5lVG9wKTogVGhpcyBpcyBqdXN0IGEgY292ZXIgZm9yIHRoZSBwcml2YXRlIG1fbGluZVRv
cCBmaWVsZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpsYXlvdXRSdW5zQW5kRmxvYXRzSW5SYW5n
ZSk6IEFkZGVkIGNvZGUgdGhhdCByZXN0YXJ0cyB0aGUgbGF5b3V0IGxvb3AgaWYgaXQncyBuZWNl
c3NhcnkgdG8gYWRqdXN0IHRoZSBsaW5lJ3MgbG9naWNhbFRvcC4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJsb2NrOjpyZXN0YXJ0TGF5b3V0UnVuc0FuZEZsb2F0c0luUmFuZ2UpOiBGYWN0b3Jl
ZCBuZXdseSBjb21tb24gY29kZSBpbnRvIHRoaXMgaGVscGVyIGZ1bmN0aW9uLgorCiAyMDEyLTEy
LTA1ICBEYXZpZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbmRl
eGVkREI6IEFib3J0IHRyYW5zYWN0aW9ucyBiZWNhdXNlIG9mIGxldmVsZGIgZXJyb3JzIHBhcnQg
MwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblBvbHlnb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblBvbHlnb24uY3BwCmluZGV4
IDIxYmVhYzEuLjk0YjkzZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9F
eGNsdXNpb25Qb2x5Z29uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVz
aW9uUG9seWdvbi5jcHAKQEAgLTM3Niw0ICszNzYsMjAgQEAgdm9pZCBFeGNsdXNpb25Qb2x5Z29u
OjpnZXRJbmNsdWRlZEludGVydmFscyhmbG9hdCBsb2dpY2FsVG9wLCBmbG9hdCBsb2dpY2FsSGVp
Z2gKICAgICB9CiB9CiAKK2Jvb2wgRXhjbHVzaW9uUG9seWdvbjo6Zmlyc3RJbmNsdWRlZEludGVy
dmFsTG9naWNhbFRvcChmbG9hdCBtaW5Mb2dpY2FsSW50ZXJ2YWxUb3AsIGNvbnN0IEZsb2F0U2l6
ZSYgbWluTG9naWNhbEludGVydmFsU2l6ZSwgZmxvYXQmIHJlc3VsdCkgY29uc3QKK3sKKyAgICAv
LyBGSVhNRTogVGhpcyBpcyBqdXN0IGEgdGVtcG9yYXJ5IHN0dWIsIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM0MjkKKworICAgIGlmIChtaW5Mb2dpY2FsSW50ZXJ2
YWxTaXplLndpZHRoKCkgPiBtX2JvdW5kaW5nQm94LndpZHRoKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGZsb2F0IG1pblkgPSBtaW5ZRm9yTG9naWNhbExpbmUobWluTG9naWNhbElu
dGVydmFsVG9wLCBtaW5Mb2dpY2FsSW50ZXJ2YWxTaXplLmhlaWdodCgpKTsKKyAgICBmbG9hdCBt
YXhZID0gbWF4WUZvckxvZ2ljYWxMaW5lKG1pbkxvZ2ljYWxJbnRlcnZhbFRvcCwgbWluTG9naWNh
bEludGVydmFsU2l6ZS5oZWlnaHQoKSk7CisgICAgaWYgKG1pblkgPCBtX2JvdW5kaW5nQm94Lnko
KSB8fCBtYXhZID4gbV9ib3VuZGluZ0JveC5tYXhZKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIHJlc3VsdCA9IG1pbkxvZ2ljYWxJbnRlcnZhbFRvcDsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0V4Y2x1c2lvblBvbHlnb24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9F
eGNsdXNpb25Qb2x5Z29uLmgKaW5kZXggNjQ3ZWIxNy4uMjVmYzZmNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblBvbHlnb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uUG9seWdvbi5oCkBAIC02Niw2ICs2Niw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGJvb2wgaXNFbXB0eSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1f
ZW1wdHk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZ2V0RXhjbHVkZWRJbnRlcnZhbHMoZmxvYXQgbG9n
aWNhbFRvcCwgZmxvYXQgbG9naWNhbEhlaWdodCwgU2VnbWVudExpc3QmKSBjb25zdCBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0SW5jbHVkZWRJbnRlcnZhbHMoZmxvYXQgbG9naWNhbFRv
cCwgZmxvYXQgbG9naWNhbEhlaWdodCwgU2VnbWVudExpc3QmKSBjb25zdCBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIGJvb2wgZmlyc3RJbmNsdWRlZEludGVydmFsTG9naWNhbFRvcChmbG9hdCBtaW5M
b2dpY2FsSW50ZXJ2YWxUb3AsIGNvbnN0IEZsb2F0U2l6ZSYgbWluTG9naWNhbEludGVydmFsU2l6
ZSwgZmxvYXQmKSBjb25zdCBPVkVSUklERTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGNvbXB1dGVY
SW50ZXJzZWN0aW9ucyhmbG9hdCB5LCBib29sIGlzTWluWSwgVmVjdG9yPEV4Y2x1c2lvbkludGVy
dmFsPiYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1
c2lvblJlY3RhbmdsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uUmVj
dGFuZ2xlLmNwcAppbmRleCAzMjhjYmEyLi45YmQyMmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uUmVjdGFuZ2xlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvRXhjbHVzaW9uUmVjdGFuZ2xlLmNwcApAQCAtMzcsNyArMzcsMTMgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogc3RhdGljIGlubGluZSBmbG9hdCBlbGxpcHNlWEludGVyY2VwdChm
bG9hdCB5LCBmbG9hdCByeCwgZmxvYXQgcnkpCiB7CiAgICAgQVNTRVJUKHJ5ID4gMCk7Ci0gICAg
cmV0dXJuIHJ4ICogc3FydCgxIC0gKHkqeSkgLyAocnkqcnkpKTsKKyAgICByZXR1cm4gcnggKiBz
cXJ0KDEgLSAoeSAqIHkpIC8gKHJ5ICogcnkpKTsKK30KKworc3RhdGljIGlubGluZSBmbG9hdCBl
bGxpcHNlWUludGVyY2VwdChmbG9hdCB4LCBmbG9hdCByeCwgZmxvYXQgcnkpCit7CisgICAgQVNT
RVJUKHJ4ID4gMCk7CisgICAgcmV0dXJuIHJ5ICogc3FydCgxIC0gKHggKiB4KSAvIChyeCAqIHJ4
KSk7CiB9CiAKIHZvaWQgRXhjbHVzaW9uUmVjdGFuZ2xlOjpnZXRFeGNsdWRlZEludGVydmFscyhm
bG9hdCBsb2dpY2FsVG9wLCBmbG9hdCBsb2dpY2FsSGVpZ2h0LCBTZWdtZW50TGlzdCYgcmVzdWx0
KSBjb25zdApAQCAtMTE1LDQgKzEyMSw1NSBAQCB2b2lkIEV4Y2x1c2lvblJlY3RhbmdsZTo6Z2V0
SW5jbHVkZWRJbnRlcnZhbHMoZmxvYXQgbG9naWNhbFRvcCwgZmxvYXQgbG9naWNhbEhlaQogICAg
IHJlc3VsdC5hcHBlbmQoTGluZVNlZ21lbnQoeDEsIHgyKSk7CiB9CiAKK0Zsb2F0UG9pbnQgRXhj
bHVzaW9uUmVjdGFuZ2xlOjpjb3JuZXJJbnRlcmNlcHRGb3JXaWR0aChmbG9hdCB3aWR0aCkgY29u
c3QKK3sKKyAgICBmbG9hdCB4aSA9IChtX3dpZHRoIC0gd2lkdGgpIC8gMjsKKyAgICBmbG9hdCB5
aSA9IG1fcnkgLSBlbGxpcHNlWUludGVyY2VwdChtX3J4IC0geGksIG1fcngsIG1fcnkpOworICAg
IHJldHVybiBGbG9hdFBvaW50KHhpLCB5aSk7Cit9CisKK2Jvb2wgRXhjbHVzaW9uUmVjdGFuZ2xl
OjpmaXJzdEluY2x1ZGVkSW50ZXJ2YWxMb2dpY2FsVG9wKGZsb2F0IG1pbkxvZ2ljYWxJbnRlcnZh
bFRvcCwgY29uc3QgRmxvYXRTaXplJiBtaW5Mb2dpY2FsSW50ZXJ2YWxTaXplLCBmbG9hdCYgcmVz
dWx0KSBjb25zdAoreworICAgIGlmIChtaW5Mb2dpY2FsSW50ZXJ2YWxTaXplLndpZHRoKCkgPiBt
X3dpZHRoKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBmbG9hdCBtaW5ZID0gc3RkOjpt
YXgobV95LCBtaW5ZRm9yTG9naWNhbExpbmUobWluTG9naWNhbEludGVydmFsVG9wLCBtaW5Mb2dp
Y2FsSW50ZXJ2YWxTaXplLmhlaWdodCgpKSk7CisgICAgZmxvYXQgbWF4WSA9IG1pblkgKyBtaW5M
b2dpY2FsSW50ZXJ2YWxTaXplLmhlaWdodCgpOworICAgIGlmIChtYXhZID4gbV95ICsgbV9oZWln
aHQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGJvb2wgaW50ZXJ2YWxPdmVybGFwc01p
bkNvcm5lciA9IG1pblkgPCBtX3kgKyBtX3J5OworICAgIGJvb2wgaW50ZXJ2YWxPdmVybGFwc01h
eENvcm5lciA9IG1heFkgPiBtX3kgKyBtX2hlaWdodCAtIG1fcnk7CisKKyAgICBpZiAoIWludGVy
dmFsT3ZlcmxhcHNNaW5Db3JuZXIgJiYgIWludGVydmFsT3ZlcmxhcHNNYXhDb3JuZXIpIHsKKyAg
ICAgICAgcmVzdWx0ID0gbG9naWNhbFRvcEZvck1pblkobWluWSwgbWluTG9naWNhbEludGVydmFs
U2l6ZS5oZWlnaHQoKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGZsb2F0
IGNlbnRlclkgPSBtX3kgKyBtX2hlaWdodCAvIDI7CisgICAgYm9vbCBtaW5Db3JuZXJEZWZpbmVz
WCA9IGZhYnMoY2VudGVyWSAtIG1pblkpID4gZmFicyhjZW50ZXJZIC0gbWF4WSk7CisgICAgYm9v
bCBpbnRlcnZhbEZpdHNXaXRoaW5Db3JuZXJzID0gbWluTG9naWNhbEludGVydmFsU2l6ZS53aWR0
aCgpICsgMiAqIG1fcnggPD0gbV93aWR0aDsKKyAgICBGbG9hdFBvaW50IGNvcm5lckludGVyY2Vw
dCA9IGNvcm5lckludGVyY2VwdEZvcldpZHRoKG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUud2lkdGgo
KSk7CisKKyAgICBpZiAoaW50ZXJ2YWxPdmVybGFwc01pbkNvcm5lciAmJiAoIWludGVydmFsT3Zl
cmxhcHNNYXhDb3JuZXIgfHwgbWluQ29ybmVyRGVmaW5lc1gpKSB7CisgICAgICAgIGlmIChpbnRl
cnZhbEZpdHNXaXRoaW5Db3JuZXJzIHx8IG1feSArIGNvcm5lckludGVyY2VwdC55KCkgPCBtaW5Z
KSB7CisgICAgICAgICAgICByZXN1bHQgPSBsb2dpY2FsVG9wRm9yTWluWShtaW5ZLCBtaW5Mb2dp
Y2FsSW50ZXJ2YWxTaXplLmhlaWdodCgpKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICB9CisgICAgICAgIGlmIChtaW5Mb2dpY2FsSW50ZXJ2YWxTaXplLmhlaWdodCgpIDwgbV9o
ZWlnaHQgLSAoMiAqIGNvcm5lckludGVyY2VwdC55KCkpKSB7CisgICAgICAgICAgICByZXN1bHQg
PSBsb2dpY2FsVG9wRm9yTWluWShtX3kgKyBjb3JuZXJJbnRlcmNlcHQueSgpLCBtaW5Mb2dpY2Fs
SW50ZXJ2YWxTaXplLmhlaWdodCgpKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICB9CisgICAgfQorCisgICAgaWYgKGludGVydmFsT3ZlcmxhcHNNYXhDb3JuZXIgJiYgKCFpbnRl
cnZhbE92ZXJsYXBzTWluQ29ybmVyIHx8ICFtaW5Db3JuZXJEZWZpbmVzWCkpIHsKKyAgICAgICAg
aWYgKGludGVydmFsRml0c1dpdGhpbkNvcm5lcnMgfHwgbWluWSA8PSAgbV95ICsgbV9oZWlnaHQg
LSBjb3JuZXJJbnRlcmNlcHQueSgpIC0gbWluTG9naWNhbEludGVydmFsU2l6ZS5oZWlnaHQoKSkg
eworICAgICAgICAgICAgcmVzdWx0ID0gbG9naWNhbFRvcEZvck1pblkobWluWSwgbWluTG9naWNh
bEludGVydmFsU2l6ZS5oZWlnaHQoKSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblJlY3Rh
bmdsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblJlY3RhbmdsZS5oCmlu
ZGV4IDU4MzllZWMuLjY2MzgyYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9FeGNsdXNpb25SZWN0YW5nbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhj
bHVzaW9uUmVjdGFuZ2xlLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNkZWZpbmUgRXhjbHVzaW9uUmVj
dGFuZ2xlX2gKIAogI2luY2x1ZGUgIkV4Y2x1c2lvblNoYXBlLmgiCisjaW5jbHVkZSAiRmxvYXRQ
b2ludC5oIgogI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25z
Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNTQsOCArNTUsMTEgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV93aWR0
aCA8PSAwIHx8IG1faGVpZ2h0IDw9IDA7IH0KICAgICB2aXJ0dWFsIHZvaWQgZ2V0RXhjbHVkZWRJ
bnRlcnZhbHMoZmxvYXQgbG9naWNhbFRvcCwgZmxvYXQgbG9naWNhbEhlaWdodCwgU2VnbWVudExp
c3QmKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0SW5jbHVkZWRJbnRlcnZh
bHMoZmxvYXQgbG9naWNhbFRvcCwgZmxvYXQgbG9naWNhbEhlaWdodCwgU2VnbWVudExpc3QmKSBj
b25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgZmlyc3RJbmNsdWRlZEludGVydmFsTG9n
aWNhbFRvcChmbG9hdCBtaW5Mb2dpY2FsSW50ZXJ2YWxUb3AsIGNvbnN0IEZsb2F0U2l6ZSYgbWlu
TG9naWNhbEludGVydmFsU2l6ZSwgZmxvYXQmKSBjb25zdCBPVkVSUklERTsKIAogcHJpdmF0ZToK
KyAgICBGbG9hdFBvaW50IGNvcm5lckludGVyY2VwdEZvcldpZHRoKGZsb2F0IHdpZHRoKSBjb25z
dDsKKwogICAgIGZsb2F0IG1feDsKICAgICBmbG9hdCBtX3k7CiAgICAgZmxvYXQgbV93aWR0aDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25TaGFwZS5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblNoYXBlLmgKaW5kZXggZjQzZGJmOC4u
MzZkYzFiNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25T
aGFwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25TaGFwZS5oCkBA
IC02NywxMSArNjcsMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5KCkgY29u
c3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBnZXRJbmNsdWRlZEludGVydmFscyhmbG9hdCBsb2dp
Y2FsVG9wLCBmbG9hdCBsb2dpY2FsSGVpZ2h0LCBTZWdtZW50TGlzdCYpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZ2V0RXhjbHVkZWRJbnRlcnZhbHMoZmxvYXQgbG9naWNhbFRvcCwgZmxv
YXQgbG9naWNhbEhlaWdodCwgU2VnbWVudExpc3QmKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBi
b29sIGZpcnN0SW5jbHVkZWRJbnRlcnZhbExvZ2ljYWxUb3AoZmxvYXQgbWluTG9naWNhbEludGVy
dmFsVG9wLCBjb25zdCBGbG9hdFNpemUmIG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUsIGZsb2F0JiBy
ZXN1bHQpIGNvbnN0ID0gMDsKIAogcHJvdGVjdGVkOgogICAgIGZsb2F0IG1pbllGb3JMb2dpY2Fs
TGluZShmbG9hdCBsb2dpY2FsVG9wLCBmbG9hdCBsb2dpY2FsSGVpZ2h0KSBjb25zdCB7IHJldHVy
biBpc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZShtX3dyaXRpbmdNb2RlKSA/IG1fbG9naWNhbEJv
eEhlaWdodCAtIGxvZ2ljYWxUb3AgLSBsb2dpY2FsSGVpZ2h0IDogbG9naWNhbFRvcDsgfQogICAg
IGZsb2F0IG1heFlGb3JMb2dpY2FsTGluZShmbG9hdCBsb2dpY2FsVG9wLCBmbG9hdCBsb2dpY2Fs
SGVpZ2h0KSBjb25zdCB7IHJldHVybiAgaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUobV93cml0
aW5nTW9kZSkgPyBtX2xvZ2ljYWxCb3hIZWlnaHQgLSBsb2dpY2FsVG9wIDogbG9naWNhbFRvcCAr
IGxvZ2ljYWxIZWlnaHQ7IH0KICAgICBGbG9hdFJlY3QgaW50ZXJuYWxUb0xvZ2ljYWxCb3VuZGlu
Z0JveChjb25zdCBGbG9hdFJlY3QmIHIpIGNvbnN0IHsgcmV0dXJuIGlzRmxpcHBlZEJsb2Nrc1dy
aXRpbmdNb2RlKG1fd3JpdGluZ01vZGUpID8gRmxvYXRSZWN0KHIueCgpLCBtX2xvZ2ljYWxCb3hI
ZWlnaHQgLSByLm1heFkoKSwgci53aWR0aCgpLCByLmhlaWdodCgpKSA6IHI7IH0KKyAgICBmbG9h
dCBsb2dpY2FsVG9wRm9yTWluWShmbG9hdCBtaW5ZLCBmbG9hdCBsb2dpY2FsSGVpZ2h0KSBjb25z
dCB7IHJldHVybiBpc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZShtX3dyaXRpbmdNb2RlKSA/IG1f
bG9naWNhbEJveEhlaWdodCAtIG1pblkgLSBsb2dpY2FsSGVpZ2h0IDogbWluWTsgfQogCiBwcml2
YXRlOgogICAgIFdyaXRpbmdNb2RlIG1fd3JpdGluZ01vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25TaGFwZUluc2lkZUluZm8uY3BwCmluZGV4IDJiNjdj
MTMuLmI4YzQ5YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNp
b25TaGFwZUluc2lkZUluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNs
dXNpb25TaGFwZUluc2lkZUluZm8uY3BwCkBAIC0xMTgsNSArMTE4LDIzIEBAIGJvb2wgRXhjbHVz
aW9uU2hhcGVJbnNpZGVJbmZvOjpjb21wdXRlU2VnbWVudHNGb3JMaW5lKExheW91dFVuaXQgbGlu
ZVRvcCwgTGF5b3V0CiAgICAgcmV0dXJuIG1fc2VnbWVudHMuc2l6ZSgpOwogfQogCitib29sIEV4
Y2x1c2lvblNoYXBlSW5zaWRlSW5mbzo6YWRqdXN0TG9naWNhbExpbmVUb3AoZmxvYXQgbWluU2Vn
bWVudFdpZHRoKQoreworICAgIGlmICghbV9zaGFwZSB8fCBtX2xpbmVIZWlnaHQgPD0gMCB8fCBt
X2xpbmVUb3AgPiBzaGFwZUxvZ2ljYWxCb3R0b20oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgZmxvYXQgZmxvYXROZXdMaW5lVG9wOworICAgIGlmIChtX3NoYXBlLT5maXJzdEluY2x1
ZGVkSW50ZXJ2YWxMb2dpY2FsVG9wKG1fbGluZVRvcCwgRmxvYXRTaXplKG1pblNlZ21lbnRXaWR0
aCwgbV9saW5lSGVpZ2h0KSwgZmxvYXROZXdMaW5lVG9wKSkgeworICAgICAgICAvLyBVc2UgZnJv
bUZsb2F0Q2VpbCgpIHRvIGVuc3VyZSB0aGF0IHRoZSByZXR1cm5lZCBMYXlvdXRVbml0IHZhbHVl
IGlzIHdpdGhpbiB0aGUgc2hhcGUncyBib3VuZHMuCisgICAgICAgIExheW91dFVuaXQgbmV3TGlu
ZVRvcCA9IExheW91dFVuaXQ6OmZyb21GbG9hdENlaWwoZmxvYXROZXdMaW5lVG9wKTsKKyAgICAg
ICAgaWYgKG5ld0xpbmVUb3AgPiBtX2xpbmVUb3ApIHsKKyAgICAgICAgICAgIG1fbGluZVRvcCA9
IG5ld0xpbmVUb3A7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIHJldHVybiBmYWxzZTsKK30KKwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvLmgKaW5kZXggODRhNmJhMi4u
MWYxMWNmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblNo
YXBlSW5zaWRlSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25T
aGFwZUluc2lkZUluZm8uaApAQCAtODksOSArODksMTIgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gJm1fc2VnbWVudHNbbV9zZWdtZW50UmFuZ2VzLnNpemUoKV07CiAgICAgfQogICAgIGJvb2wg
Y29tcHV0ZVNlZ21lbnRzRm9yTGluZShMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGlu
ZUhlaWdodCk7CisgICAgYm9vbCBhZGp1c3RMb2dpY2FsTGluZVRvcChmbG9hdCBtaW5TZWdtZW50
V2lkdGgpOwogICAgIHZvaWQgY29tcHV0ZVNoYXBlU2l6ZShMYXlvdXRVbml0IGxvZ2ljYWxXaWR0
aCwgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0KTsKICAgICB2b2lkIGRpcnR5U2hhcGVTaXplKCkg
eyBtX3NoYXBlU2l6ZURpcnR5ID0gdHJ1ZTsgfQogCisgICAgTGF5b3V0VW5pdCBsb2dpY2FsTGlu
ZVRvcCgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZVRvcDsgfQorCiBwcml2YXRlOgogICAgIEV4Y2x1
c2lvblNoYXBlSW5zaWRlSW5mbyhSZW5kZXJCbG9jayopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5oCmluZGV4IDRhYTUxM2EuLjM0NGQxZGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5oCkBAIC05OTUsNiArOTk1LDcgQEAgcHJpdmF0ZToKICAgICBS
b290SW5saW5lQm94KiBjcmVhdGVMaW5lQm94ZXNGcm9tQmlkaVJ1bnMoQmlkaVJ1bkxpc3Q8Qmlk
aVJ1bj4mLCBjb25zdCBJbmxpbmVJdGVyYXRvciYgZW5kLCBMaW5lSW5mbyYsIFZlcnRpY2FsUG9z
aXRpb25DYWNoZSYsIEJpZGlSdW4qIHRyYWlsaW5nU3BhY2VSdW4sIFdvcmRNZWFzdXJlbWVudHMm
KTsKICAgICB2b2lkIGxheW91dFJ1bnNBbmRGbG9hdHMoTGluZUxheW91dFN0YXRlJiwgYm9vbCBo
YXNJbmxpbmVDaGlsZCk7CiAgICAgdm9pZCBsYXlvdXRSdW5zQW5kRmxvYXRzSW5SYW5nZShMaW5l
TGF5b3V0U3RhdGUmLCBJbmxpbmVCaWRpUmVzb2x2ZXImLCBjb25zdCBJbmxpbmVJdGVyYXRvciYg
Y2xlYW5MaW5lU3RhcnQsIGNvbnN0IEJpZGlTdGF0dXMmIGNsZWFuTGluZUJpZGlTdGF0dXMsIHVu
c2lnbmVkIGNvbnNlY3V0aXZlSHlwaGVuYXRlZExpbmVzKTsKKyAgICBjb25zdCBJbmxpbmVJdGVy
YXRvciYgcmVzdGFydExheW91dFJ1bnNBbmRGbG9hdHNJblJhbmdlKExheW91dFVuaXQgb2xkTG9n
aWNhbEhlaWdodCwgTGF5b3V0VW5pdCBuZXdMb2dpY2FsSGVpZ2h0LCAgRmxvYXRpbmdPYmplY3Qq
IGxhc3RGbG9hdEZyb21QcmV2aW91c0xpbmUsIElubGluZUJpZGlSZXNvbHZlciYsICBjb25zdCBJ
bmxpbmVJdGVyYXRvciYpOwogICAgIHZvaWQgbGlua1RvRW5kTGluZUlmTmVlZGVkKExpbmVMYXlv
dXRTdGF0ZSYpOwogICAgIHN0YXRpYyB2b2lkIHJlcGFpbnREaXJ0eUZsb2F0cyhWZWN0b3I8Rmxv
YXRXaXRoUmVjdD4mIGZsb2F0cyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKaW5kZXggOWUwZDdiNy4uYWVlMjFmNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAK
QEAgLTE0NjQsNiArMTQ2NCwxNSBAQCBSZW5kZXJCbG9jazo6UmVuZGVyVGV4dEluZm86On5SZW5k
ZXJUZXh0SW5mbygpCiB7CiB9CiAKKy8vIEJlZm9yZSByZXN0YXJ0aW5nIHRoZSBsYXlvdXQgbG9v
cCB3aXRoIGEgbmV3IGxvZ2ljYWxIZWlnaHQsIHJlbW92ZSBhbGwgZmxvYXRzIHRoYXQgd2VyZSBh
ZGRlZCBhbmQgcmVzZXQgdGhlIHJlc29sdmVyLgoraW5saW5lIGNvbnN0IElubGluZUl0ZXJhdG9y
JiBSZW5kZXJCbG9jazo6cmVzdGFydExheW91dFJ1bnNBbmRGbG9hdHNJblJhbmdlKExheW91dFVu
aXQgb2xkTG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBuZXdMb2dpY2FsSGVpZ2h0LCAgRmxvYXRp
bmdPYmplY3QqIGxhc3RGbG9hdEZyb21QcmV2aW91c0xpbmUsIElubGluZUJpZGlSZXNvbHZlciYg
cmVzb2x2ZXIsICBjb25zdCBJbmxpbmVJdGVyYXRvciYgb2xkRW5kKQoreworICAgIHJlbW92ZUZs
b2F0aW5nT2JqZWN0c0JlbG93KGxhc3RGbG9hdEZyb21QcmV2aW91c0xpbmUsIG9sZExvZ2ljYWxI
ZWlnaHQpOworICAgIHNldExvZ2ljYWxIZWlnaHQobmV3TG9naWNhbEhlaWdodCk7CisgICAgcmVz
b2x2ZXIuc2V0UG9zaXRpb25JZ25vcmluZ05lc3RlZElzb2xhdGVzKG9sZEVuZCk7CisgICAgcmV0
dXJuIG9sZEVuZDsKK30KKwogdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0UnVuc0FuZEZsb2F0c0lu
UmFuZ2UoTGluZUxheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgSW5saW5lQmlkaVJlc29sdmVyJiBy
ZXNvbHZlciwgY29uc3QgSW5saW5lSXRlcmF0b3ImIGNsZWFuTGluZVN0YXJ0LCBjb25zdCBCaWRp
U3RhdHVzJiBjbGVhbkxpbmVCaWRpU3RhdHVzLCB1bnNpZ25lZCBjb25zZWN1dGl2ZUh5cGhlbmF0
ZWRMaW5lcykKIHsKICAgICBSZW5kZXJTdHlsZSogc3R5bGVUb1VzZSA9IHN0eWxlKCk7CkBAIC0x
NTMwLDYgKzE1MzksMTMgQEAgdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0UnVuc0FuZEZsb2F0c0lu
UmFuZ2UoTGluZUxheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgSW5saW4KICAgICAgICAgfQogICAg
ICAgICBBU1NFUlQoZW5kICE9IHJlc29sdmVyLnBvc2l0aW9uKCkpOwogCisjaWYgRU5BQkxFKENT
U19FWENMVVNJT05TKQorICAgICAgICBpZiAoZXhjbHVzaW9uU2hhcGVJbnNpZGVJbmZvICYmIHdv
cmRNZWFzdXJlbWVudHMuc2l6ZSgpICYmIGV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby0+YWRqdXN0
TG9naWNhbExpbmVUb3Aod29yZE1lYXN1cmVtZW50c1swXS53aWR0aCkpIHsKKyAgICAgICAgICAg
IGVuZCA9IHJlc3RhcnRMYXlvdXRSdW5zQW5kRmxvYXRzSW5SYW5nZShsb2dpY2FsSGVpZ2h0KCks
IGV4Y2x1c2lvblNoYXBlSW5zaWRlSW5mby0+bG9naWNhbExpbmVUb3AoKSAtIGFic29sdXRlTG9n
aWNhbFRvcCwgbGFzdEZsb2F0RnJvbVByZXZpb3VzTGluZSwgcmVzb2x2ZXIsIG9sZEVuZCk7Cisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorI2VuZGlmCisKICAgICAgICAgLy8gVGhp
cyBpcyBhIHNob3J0LWN1dCBmb3IgZW1wdHkgbGluZXMuCiAgICAgICAgIGlmIChsYXlvdXRTdGF0
ZS5saW5lSW5mbygpLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgaWYgKGxhc3RSb290Qm94KCkp
CkBAIC0xNTgyLDEwICsxNTk4LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0UnVuc0FuZEZs
b2F0c0luUmFuZ2UoTGluZUxheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgSW5saW4KICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChhdmFpbGFibGVMb2dpY2FsV2lkdGhGb3JMaW5lKG9sZExvZ2lj
YWxIZWlnaHQgKyBhZGp1c3RtZW50LCBsYXlvdXRTdGF0ZS5saW5lSW5mbygpLmlzRmlyc3RMaW5l
KCkpICE9IG9sZExpbmVXaWR0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdl
IGhhdmUgdG8gZGVsZXRlIHRoaXMgbGluZSwgcmVtb3ZlIGFsbCBmbG9hdHMgdGhhdCBnb3QgYWRk
ZWQsIGFuZCBsZXQgbGluZSBsYXlvdXQgcmUtcnVuLgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxpbmVCb3gtPmRlbGV0ZUxpbmUocmVuZGVyQXJlbmEoKSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVtb3ZlRmxvYXRpbmdPYmplY3RzQmVsb3cobGFzdEZsb2F0RnJvbVByZXZp
b3VzTGluZSwgb2xkTG9naWNhbEhlaWdodCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2V0TG9naWNhbEhlaWdodChvbGRMb2dpY2FsSGVpZ2h0ICsgYWRqdXN0bWVudCk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZXIuc2V0UG9zaXRpb25JZ25vcmluZ05lc3RlZElz
b2xhdGVzKG9sZEVuZCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kID0gb2xkRW5k
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCA9IHJlc3RhcnRMYXlvdXRSdW5zQW5k
RmxvYXRzSW5SYW5nZShvbGRMb2dpY2FsSGVpZ2h0LCBvbGRMb2dpY2FsSGVpZ2h0ICsgYWRqdXN0
bWVudCwgbGFzdEZsb2F0RnJvbVByZXZpb3VzTGluZSwgcmVzb2x2ZXIsIG9sZEVuZCk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAg
ICB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>