<?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>46336</bug_id>
          
          <creation_ts>2010-09-22 21:12:04 -0700</creation_ts>
          <short_desc>Make Document::nodesFromRect more flexible</short_desc>
          <delta_ts>2010-11-12 12:27:39 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>46492</dependson>
    
    <dependson>46580</dependson>
    
    <dependson>47766</dependson>
          <blocked>44089</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Antonio Gomes">tonikitoo</reporter>
          <assigned_to name="Antonio Gomes">tonikitoo</assigned_to>
          <cc>ademar</cc>
    
    <cc>eric</cc>
    
    <cc>gmak</cc>
    
    <cc>gustavo</cc>
    
    <cc>hyatt</cc>
    
    <cc>kenneth</cc>
    
    <cc>klobag</cc>
    
    <cc>manyoso</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>283496</commentid>
    <comment_count>0</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-09-22 21:12:04 -0700</bug_when>
    <thetext>I propose we follow the flexibility of Mozilla&apos;s nodesFromRect as in http://mxr.mozilla.org/mozilla-central/source/dom/interfaces/base/nsIDOMWindowUtils.idl#416


It would require also a feel changes in HitTestResult and in the existing LayoutTests for this API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284182</commentid>
    <comment_count>1</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-09-23 19:15:16 -0700</bug_when>
    <thetext>If you do this Antonio, I&apos;m OK with you changing the API you introduced in QWebSettings, but due to our QtWebKit 2.1 release, I would prefer you to make that change in the Qt API asap.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284184</commentid>
    <comment_count>2</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-09-23 19:19:14 -0700</bug_when>
    <thetext>I got a patch running on Qt. Building on Mac to check the layout tests. Going to upload soon.

(In reply to comment #1)
&gt; If you do this Antonio, I&apos;m OK with you changing the API you introduced in QWebSettings, but due to our QtWebKit 2.1 release, I would prefer you to make that change in the Qt API asap.

OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284213</commentid>
    <comment_count>3</comment_count>
      <attachid>68644</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-09-23 21:53:22 -0700</bug_when>
    <thetext>Created attachment 68644
patch v1

Summary

1) Patch changes Document::nodesFromRect API from
 
 - RefPtf&lt;NodeList&gt; nodesFromRect(int x,
                                                                  int y, 
                                                                  unsigned horizontalPadding, 
                                                                  unsigned verticalPadding,
                                                                  bool ignoreClipping)
 to
 
 - RefPtf&lt;NodeList&gt; nodesFromRect(int x, int y,
                                                                  unsigned topPadding,
                                                                  unsigned rightPadding,
                                                                  unsigned bottomPadding,
                                                                  unsigned leftPadding,
                                                                  bool ignoreClipping)
 
2) Patch adjust WebCore related classes accordingly to support this, incluing HitTestResult, RenderLayer, etc.
3) Fixes the layout test accordingly to the proposed API change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284345</commentid>
    <comment_count>4</comment_count>
      <attachid>68644</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-09-24 06:44:07 -0700</bug_when>
    <thetext>Comment on attachment 68644
patch v1

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

&gt; WebCore/ChangeLog:9
&gt; +        Make Document::nodesFromRect more flexible
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=46336
&gt; +
&gt; +        Make Document::nodesFromRect more flexible
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=46336

Why twice? :-)

&gt; WebCore/ChangeLog:26
&gt; +        In practive, the horizontal padding was being used to expand a given center point in both

practice*

&gt; WebCore/ChangeLog:54
&gt; +        (WebCore::EventHandler::hitTestResultAtPoint): For simplicity, I did not change the signature
&gt; +                                                       but the way the padding value passed in as parameter
&gt; +                                                       is being used to construct a HitTestResult.
&gt; +        * rendering/HitTestResult.cpp: Changed the rect-based bits from using IntSize (padding) to separated paddings
&gt; +                                       for each direction.

Why not write the comment on the line below... this looks really strange!

&gt; WebCore/dom/Document.cpp:1072
&gt; +    else if (!frameView-&gt;visibleContentRect().intersects(HitTestResult::rectFromPoint(IntPoint(centerX, centerY), topPadding, rightPadding, bottomPadding, leftPadding)))

Is this the order we normally use? top, right, bottom, left? Just checking

&gt; WebCore/rendering/HitTestResult.cpp:555
&gt; +IntRect HitTestResult::rectFromPoint(const IntPoint&amp; point, unsigned topPadding, unsigned rightPadding, unsigned bottomPadding, unsigned leftPadding)

ForPoint?

&gt; WebCore/rendering/HitTestResult.cpp:560
&gt; +    IntSize realPadding(leftPadding + rightPadding, topPadding + bottomPadding);

Is there a fake padding :) ? Maybe actualPadding? or something more descriptive.

&gt; WebCore/rendering/HitTestResult.cpp:561
&gt; +    realPadding += IntSize(1, 1);

Maybe add a comment why you are doing this

&gt; WebCore/rendering/HitTestResult.h:107
&gt; +    int topPadding() const { return m_topPadding; }
&gt; +    int rightPadding() const { return m_rightPadding; }
&gt; +    int bottomPadding() const { return m_bottomPadding; }
&gt; +    int leftPadding() const { return m_leftPadding; }

Is it useful to know the padding in the result? This is the result of a hit test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284389</commentid>
    <comment_count>5</comment_count>
      <attachid>68683</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-09-24 08:23:09 -0700</bug_when>
    <thetext>Created attachment 68683
patch v2 - addressed kenneth&apos;s comments.

&gt; &gt; WebCore/ChangeLog:26
&gt; &gt; +        In practive, the horizontal padding was being used to expand a given center point in both
&gt; 
&gt; practice*

Fixed.
 
&gt; &gt; WebCore/ChangeLog:54
&gt; &gt; +        (WebCore::EventHandler::hitTestResultAtPoint): For simplicity, I did not change the signature
&gt; &gt; +                                                       but the way the padding value passed in as parameter
&gt; &gt; +                                                       is being used to construct a HitTestResult.
&gt; &gt; +        * rendering/HitTestResult.cpp: Changed the rect-based bits from using IntSize (padding) to separated paddings
&gt; &gt; +                                       for each direction.
&gt; 
&gt; Why not write the comment on the line below... this looks really strange!

Fixed.

&gt; &gt; WebCore/dom/Document.cpp:1072
&gt; &gt; +    else if (!frameView-&gt;visibleContentRect().intersects(HitTestResult::rectFromPoint(IntPoint(centerX, centerY), topPadding, rightPadding, bottomPadding, leftPadding)))
&gt; 
&gt; Is this the order we normally use? top, right, bottom, left? Just checking

To match mozilla&apos;s signature for the their similar method.

&gt; &gt; WebCore/rendering/HitTestResult.cpp:555
&gt; &gt; +IntRect HitTestResult::rectFromPoint(const IntPoint&amp; point, unsigned topPadding, unsigned rightPadding, unsigned bottomPadding, unsigned leftPadding)
&gt; 
&gt; ForPoint?

ForPoint sounds good. Can I keep this as is for now, and fix in a follow up? Reason: there are other two method overloaded in this class that would have to change, and many call sites of these methods that would need change. It would make the patch too bloat.

&gt; 
&gt; &gt; WebCore/rendering/HitTestResult.cpp:560
&gt; &gt; +    IntSize realPadding(leftPadding + rightPadding, topPadding + bottomPadding);
&gt; 
&gt; Is there a fake padding :) ? Maybe actualPadding? or something more descriptive.

&apos;Actual&apos; sounds good. Changed.

&gt; &gt; WebCore/rendering/HitTestResult.cpp:561
&gt; &gt; +    realPadding += IntSize(1, 1);
&gt; 
&gt; Maybe add a comment why you are doing this

Comment added.
 
&gt; &gt; WebCore/rendering/HitTestResult.h:107
&gt; &gt; +    int topPadding() const { return m_topPadding; }
&gt; &gt; +    int rightPadding() const { return m_rightPadding; }
&gt; &gt; +    int bottomPadding() const { return m_bottomPadding; }
&gt; &gt; +    int leftPadding() const { return m_leftPadding; }
&gt; 
&gt; Is it useful to know the padding in the result? This is the result of a hit test

See we using them in RenderLineBoxList.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284848</commentid>
    <comment_count>6</comment_count>
      <attachid>68683</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-09-24 16:40:43 -0700</bug_when>
    <thetext>Comment on attachment 68683
patch v2 - addressed kenneth&apos;s comments.

Clearing review flag.

Let me fix bug 46492 and a few others first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284851</commentid>
    <comment_count>7</comment_count>
      <attachid>68683</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-09-24 16:42:42 -0700</bug_when>
    <thetext>Comment on attachment 68683
patch v2 - addressed kenneth&apos;s comments.

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

&gt; WebCore/dom/Document.idl:190
&gt;          NodeList           nodesFromRect(in long x, in long y,

This should really have the webkit prefix, since it is not standardized</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284854</commentid>
    <comment_count>8</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-09-24 16:48:34 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 68683 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=68683&amp;action=review
&gt; 
&gt; &gt; WebCore/dom/Document.idl:190
&gt; &gt;          NodeList           nodesFromRect(in long x, in long y,
&gt; 
&gt; This should really have the webkit prefix, since it is not standardized

Simon, we are going to remove it from the Document.idl instead, and not expose to web content, at least for now.

This will also require changes on how it is being tested by DRT. Probably I am going to add a new method to LayoutTestController.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>285148</commentid>
    <comment_count>9</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-09-26 12:17:24 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 68683 [details])
&gt; Clearing review flag.
&gt; 
&gt; Let me fix bug 46492 and a few others first.

... and also bug  46580.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>285222</commentid>
    <comment_count>10</comment_count>
      <attachid>68867</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-09-26 18:14:54 -0700</bug_when>
    <thetext>Created attachment 68867
patch v3

Basically same patch as v2 (attachment 68683), but rebased against ToT and including the adjustment needed by the new LayoutTestController::nodesFromRect (added by bug 46580) to test this feature.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>285223</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-26 18:17:24 -0700</bug_when>
    <thetext>Attachment 68867 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebKitTools/DumpRenderTree/LayoutTestController.cpp:523:  Use 0 instead of NULL.  [readability/null] [5]
WebKitTools/DumpRenderTree/LayoutTestController.cpp:524:  Use 0 instead of NULL.  [readability/null] [5]
WebKitTools/DumpRenderTree/LayoutTestController.cpp:525:  Use 0 instead of NULL.  [readability/null] [5]
WebKitTools/DumpRenderTree/LayoutTestController.cpp:526:  Use 0 instead of NULL.  [readability/null] [5]
Total errors found: 4 in 18 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>285244</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-26 19:16:50 -0700</bug_when>
    <thetext>Attachment 68867 did not build on mac:
Build output: http://queues.webkit.org/results/4002156</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>285261</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-26 20:30:16 -0700</bug_when>
    <thetext>Attachment 68867 did not build on gtk:
Build output: http://queues.webkit.org/results/3997154</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>285262</commentid>
    <comment_count>14</comment_count>
      <attachid>68872</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-09-26 20:31:22 -0700</bug_when>
    <thetext>Created attachment 68872
patch v3.1 - same patch as v3, but builds on Mac

Fixed Mac build: updated WebCore.exp.in symbols.

Nothing changed from v2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>285265</commentid>
    <comment_count>15</comment_count>
      <attachid>68873</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-09-26 20:45:02 -0700</bug_when>
    <thetext>Created attachment 68873
(committed r68475, r=kenneth) patch v3.2 - actual fixed patch.

Build Mac, Gtk and others.

Uploaded the real patch, this time. The style error is FALSE ALARM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>285268</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-26 20:50:13 -0700</bug_when>
    <thetext>Attachment 68873 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebKitTools/DumpRenderTree/LayoutTestController.cpp:523:  Use 0 instead of NULL.  [readability/null] [5]
WebKitTools/DumpRenderTree/LayoutTestController.cpp:524:  Use 0 instead of NULL.  [readability/null] [5]
WebKitTools/DumpRenderTree/LayoutTestController.cpp:525:  Use 0 instead of NULL.  [readability/null] [5]
WebKitTools/DumpRenderTree/LayoutTestController.cpp:526:  Use 0 instead of NULL.  [readability/null] [5]
Total errors found: 4 in 22 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>285274</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-26 21:01:26 -0700</bug_when>
    <thetext>Attachment 68867 did not build on win:
Build output: http://queues.webkit.org/results/4060156</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>285337</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-26 23:19:25 -0700</bug_when>
    <thetext>Attachment 68872 did not build on gtk:
Build output: http://queues.webkit.org/results/4055157</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>285423</commentid>
    <comment_count>19</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-09-27 06:33:25 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; Attachment 68867 [details] did not build on win:
&gt; Build output: http://queues.webkit.org/results/4060156

(In reply to comment #18)
&gt; Attachment 68872 [details] did not build on gtk:
&gt; Build output: http://queues.webkit.org/results/4055157

Warnings about obsolete versions. Latest patch (attachment 68873) built on all platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>285927</commentid>
    <comment_count>20</comment_count>
      <attachid>68873</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-09-27 17:13:06 -0700</bug_when>
    <thetext>Comment on attachment 68873
(committed r68475, r=kenneth) patch v3.2 - actual fixed patch.

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

LGTM

&gt; WebCore/dom/Document.cpp:1071
&gt; +    else if (!frameView-&gt;visibleContentRect().intersects(HitTestResult::rectFromPoint(point, topPadding, rightPadding, bottomPadding, leftPadding)))

rectForPoint?

&gt; WebCore/dom/Document.cpp:1078
&gt; +    if (!topPadding &amp;&amp; !rightPadding &amp;&amp; !bottomPadding &amp;&amp; !leftPadding) {

are all these unsigned?

&gt; WebCore/dom/Document.h:326
&gt; +    PassRefPtr&lt;NodeList&gt; nodesFromRect(int centerX,
&gt; +                                       int centerY,
&gt; +                                       unsigned topPadding,
&gt; +                                       unsigned rightPadding,
&gt; +                                       unsigned bottomPadding,
&gt; +                                       unsigned leftPadding,
&gt; +                                       bool ignoreClipping) const;

we usually put all these on one line, I even think the style guide says somethiong about that</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286015</commentid>
    <comment_count>21</comment_count>
      <attachid>68873</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-09-27 19:31:51 -0700</bug_when>
    <thetext>Comment on attachment 68873
(committed r68475, r=kenneth) patch v3.2 - actual fixed patch.

Clearing review flags on attachment: 68873.

Committed r68475: &lt;http://trac.webkit.org/changeset/68475&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286017</commentid>
    <comment_count>22</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-09-27 19:33:05 -0700</bug_when>
    <thetext>
&gt; &gt; WebCore/dom/Document.cpp:1071
&gt; &gt; +    else if (!frameView-&gt;visibleContentRect().intersects(HitTestResult::rectFromPoint(point, topPadding, rightPadding, bottomPadding, leftPadding)))
&gt; 
&gt; rectForPoint?

Sure. I can fix in a follow up, just to avoid inflating this patch with renaming changes.
 
&gt; 
&gt; &gt; WebCore/dom/Document.h:326
&gt; &gt; +    PassRefPtr&lt;NodeList&gt; nodesFromRect(int centerX,
&gt; &gt; +                                       int centerY,
&gt; &gt; +                                       unsigned topPadding,
&gt; &gt; +                                       unsigned rightPadding,
&gt; &gt; +                                       unsigned bottomPadding,
&gt; &gt; +                                       unsigned leftPadding,
&gt; &gt; +                                       bool ignoreClipping) const;
&gt; 
&gt; we usually put all these on one line, I even think the style guide says somethiong about that

Fixed before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290282</commentid>
    <comment_count>23</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-10-06 07:24:30 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; &gt; &gt; WebCore/dom/Document.cpp:1071
&gt; &gt; &gt; +    else if (!frameView-&gt;visibleContentRect().intersects(HitTestResult::rectFromPoint(point, topPadding, rightPadding, bottomPadding, leftPadding)))
&gt; &gt; 
&gt; &gt; rectForPoint?

Filed bug 47261 about this renaming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295320</commentid>
    <comment_count>24</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-10-17 20:38:11 -0700</bug_when>
    <thetext>Better tests using the new API capabilities being worked on bug 47766.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>308702</commentid>
    <comment_count>25</comment_count>
    <who name="Ademar Reis">ademar</who>
    <bug_when>2010-11-12 12:27:39 -0800</bug_when>
    <thetext>Revision r68475 cherry-picked into qtwebkit-2.1 with commit 848c9ed &lt;http://gitorious.org/webkit/qtwebkit/commit/848c9ed&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68644</attachid>
            <date>2010-09-23 21:53:22 -0700</date>
            <delta_ts>2010-09-24 08:23:09 -0700</delta_ts>
            <desc>patch v1</desc>
            <filename>0001-Make-Document-nodesFromRect-more-flexible.patch</filename>
            <type>text/plain</type>
            <size>36438</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSAzMjFmOWFkZmYwZGJkMjM4MjBjMzA4MzdlNzc4Njk5YzdiNTVjMjViIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4K
RGF0ZTogVGh1LCAyMyBTZXAgMjAxMCAyMzo1MDoyMyAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIE1h
a2UgRG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QgbW9yZSBmbGV4aWJsZQogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2MzM2CgpQYXRjaCBieSBBbnRvbmlvIEdvbWVzIDxh
Z29tZXNAcmltLmNvbT4gb24gMjAxMC0wOS0yMwpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
ClRoZSBwYXRjaCBjaGFuZ2VzIHRoZSBBUEkgZm9yIHRoZSBEb2N1bWVudDo6bm9kZXNGcm9tUmVj
dCgpIG1ldGhvZCBhcyBmb2xsb3dzOgoKZnJvbQoKLSBSZWZQdGY8Tm9kZUxpc3Q+IG5vZGVzRnJv
bVJlY3QoaW50IHgsIGludCB5LCB1bnNpZ25lZCBob3Jpem9udGFsUGFkZGluZywgdW5zaWduZWQg
dmVydGljYWxQYWRkaW5nLCBib29sIGlnbm9yZUNsaXBwaW5nKQoKdG8KCi0gUmVmUHRmPE5vZGVM
aXN0PiBub2Rlc0Zyb21SZWN0KGludCB4LCBpbnQgeSwgdW5zaWduZWQgdG9wUGFkZGluZywgdW5z
aWduZWQgcmlnaHRQYWRkaW5nLCB1bnNpZ25lZCBib3R0b21QYWRkaW5nLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsZWZ0UGFkZGluZywgYm9vbCBpZ25vcmVDbGlw
cGluZykKClByZXZpb3VzbHkgdGhlIG1ldGhvZCB3YXMgcmVjZWl2aW5nIGFzIHBhcmFtZXRlciBo
b3Jpem9udGFsIGFuZCB2ZXJ0aWNhbCBwYWRkaW5nIHZhbHVlcy4KSW4gcHJhY3RpdmUsIHRoZSBo
b3Jpem9udGFsIHBhZGRpbmcgd2FzIGJlaW5nIHVzZWQgdG8gZXhwYW5kIGEgZ2l2ZW4gY2VudGVy
IHBvaW50IGluIGJvdGgKcmlnaHQgYW5kIGxlZnQgZGlyZWN0aW9ucywgd2hpbGUgdGhlIHZlcnRp
Y2FsIHBhZGRpbmcgd2FzIGV4cGFuZGluZyBpdCB0byB0aGUgdG9wIGFuZCBib3R0b20KZGlyZWN0
aW9ucy4KCkFsdGhvdWdoIHRoaXMgZGVzaWduIG1ha2VzIGl0IHBvc3NpYmxlIHRvIGltcHJvdmUg
dGhlIHRvdWNoIGV4cGVyaWVuY2Ugb24gbW9iaWxlIGRldmljZXMKKERvY3VtZW50Ojpub2Rlc0Zy
b21SZWN0IGV4cG9zZXMgdGhlIHJlY3QgYmFzZWQgaGl0IHRlc3Rpbmcgc3lzdGVtKSwgZW1waXJp
Y2FsIGV4cGVyaW1lbnRzCnNob3dlZCB0aGF0LCBzcGVjaWFsbHkgaW4gY2FwYWNpdGl2ZSB0b3Vj
aCBzY3JlZW5zLCB1c2VycyB0ZW5kIHRvIHRhcCBiZWxvdyBlbGVtZW50cy4gU28KZm9yIGV2ZW4g
bW9yZSBhY2N1cmF0ZSByZXN1bHRzICh3aGljaCBtZWFucyBoZXJlIHRoZSBwb3NzaWJpbGl0eSBv
ZiBwbGVhc2FudCB0YXBwaW5nIGV4cGVyaWVuY2UpLAppdCBtYWtlcyBzZW5zZSB0byB1c2UgYSBy
ZWdpb24gdGhhdCBpcyBvZmZzZXQgbW9yZSBhYm92ZSB0aGUgdG91Y2ggcG9pbnQsIGZhdm9yaW5n
IGVsZW1lbnRzCmFib3ZlIHRoZSB0b3VjaCBwb2ludC4KClRoZSBwYXRjaCBiYXNpY2FsbHkgaW1w
bGVtZW50cyB0aGF0LCBpbmNyZWFzaW5nIHRoZSBBUEkgZmxleGlibGUgYW5kIHBvd2VyIGJ5IG1h
a2luZyBpdCBwb3NzaWJsZQp0byBzcGVjaWZ5IGRpZmZlcmVudCBwYWRkaW5nIHZhbHVlcyBmb3Ig
ZWFjaCBkaXJlY3Rpb24gaW4gYSBnaXZlbiBvcmllbnRhdGlvbi4KCkNoYW5nZXMgd2VyZSBtYWRl
IGFjY29yZGluZ2x5IHRvIHRoZSBIaXRUZXN0UmVzdWx0LCBSZW5kZXJMYXllciwgUmVuZGVySW1h
Z2UgYW5kIFJlbmRlckxpbmVCb3hMaXN0CmNsYXNzZXMuCgpXZWJDb3JlOgoKKiBXZWJDb3JlLmV4
cC5pbjoKKiBkb20vRG9jdW1lbnQuY3BwOgooV2ViQ29yZTo6RG9jdW1lbnQ6Om5vZGVzRnJvbVJl
Y3QpOgoqIGRvbS9Eb2N1bWVudC5oOgoqIGRvbS9Eb2N1bWVudC5pZGw6CiogcGFnZS9FdmVudEhh
bmRsZXIuY3BwOgooV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoaXRUZXN0UmVzdWx0QXRQb2ludCk6
IEZvciBzaW1wbGljaXR5LCBJIGRpZCBub3QgY2hhbmdlIHRoZSBzaWduYXR1cmUKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXQgdGhlIHdheSB0aGUgcGFk
ZGluZyB2YWx1ZSBwYXNzZWQgaW4gYXMgcGFyYW1ldGVyCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaXMgYmVpbmcgdXNlZCB0byBjb25zdHJ1Y3QgYSBIaXRU
ZXN0UmVzdWx0LgoqIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcDogQ2hhbmdlZCB0aGUgcmVj
dC1iYXNlZCBiaXRzIGZyb20gdXNpbmcgSW50U2l6ZSAocGFkZGluZykgdG8gc2VwYXJhdGVkIHBh
ZGRpbmdzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZWFjaCBkaXJlY3Rpb24u
CihXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpIaXRUZXN0UmVzdWx0KTogRGl0dG8uCihXZWJDb3Jl
OjpIaXRUZXN0UmVzdWx0OjpvcGVyYXRvcj0pOiBEaXR0by4KKFdlYkNvcmU6OkhpdFRlc3RSZXN1
bHQ6OnJlY3RGcm9tUG9pbnQpOiBEaXR0b24uCiogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaDoK
KFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OnRvcFBhZGRpbmcpOiBnZXR0ZXIgZm9yIHRoZSB0b3Ag
cGFkZGluZy4KKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OnJpZ2h0UGFkZGluZyk6IGdldHRlciBm
b3IgdGhlIHJpZ2h0IHBhZGRpbmcuCihXZWJDb3JlOjpIaXRUZXN0UmVzdWx0Ojpib3R0b21QYWRk
aW5nKTogZ2V0dGVyIGZvciB0aGUgYm90dG9tIHBhZGRpbmcuCihXZWJDb3JlOjpIaXRUZXN0UmVz
dWx0OjpsZWZ0UGFkZGluZyk6IGdldHRlciBmb3IgdGhlIGxlZnQgcGFkZGluZy4KKFdlYkNvcmU6
OkhpdFRlc3RSZXN1bHQ6OnJlY3RGcm9tUG9pbnQpOiBBZGRlZCBhIHN0YXRpYyBtZXRob2QgdGhh
dCBnaXZlbiBhIGNlbnRlciBwb2ludAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFuZCBwYWRkaW5nIHZhbHVlcyBmb3IgZWFjaCBkaXJlY3Rpb24sIHJldHVybnMKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgcmVjdCB0aGF0IGlzIGdv
aW5nIHRvIGJlIHVzZWQgaW4gV2ViQ29yZSdzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaGl0IHRlc3RpbmcgcHJvY2Vzc2luZy4KKiByZW5kZXJpbmcvUmVuZGVySW1h
Z2UuY3BwOiBDaGFuZ2VkIHRoZSByZWN0LWJhc2VkIGJpdHMgZnJvbSB1c2luZyBJbnRTaXplIChw
YWRkaW5nKSB0byBzZXBhcmF0ZWQgcGFkZGluZ3MKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmb3IgZWFjaCBkaXJlY3Rpb24uCihXZWJDb3JlOjpSZW5kZXJJbWFnZTo6bm9kZUF0UG9pbnQp
OiBEaXR0by4KKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOiBEaXR0by4KKFdlYkNvcmU6OlJl
bmRlckxheWVyOjpoaXRUZXN0TGF5ZXIpOiBEaXR0by4KKFdlYkNvcmU6OlJlbmRlckxheWVyOjpo
aXRUZXN0TGlzdCk6IERpdHRvLgoqIHJlbmRlcmluZy9SZW5kZXJMaW5lQm94TGlzdC5jcHA6IERp
dHRvLgooV2ViQ29yZTo6UmVuZGVyTGluZUJveExpc3Q6OmhpdFRlc3QpOiBEaXR0by4KCkxheW91
dFRlc3RzOgoKKiBmYXN0L2RvbS9ub2Rlc0Zyb21SZWN0LWJhc2ljLWV4cGVjdGVkLnR4dDoKKiBm
YXN0L2RvbS9ub2Rlc0Zyb21SZWN0LWJhc2ljLmh0bWw6CiogZmFzdC9kb20vcmVzb3VyY2VzL25v
ZGVzRnJvbVJlY3QuanM6CihjaGVjayk6Ci0tLQogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE0ICsrKysKIC4uLi9mYXN0L2RvbS9ub2Rlc0Zy
b21SZWN0LWJhc2ljLWV4cGVjdGVkLnR4dCAgICAgIHwgICA0NCArKysrKystLS0tLS0KIExheW91
dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3QtYmFzaWMuaHRtbCAgICAgIHwgICA0NCArKysr
KystLS0tLS0KIExheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNlcy9ub2Rlc0Zyb21SZWN0Lmpz
ICAgIHwgICAyMiArKysrLS0KIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgICA3NiArKysrKysrKysrKysrKysrKysrKwogV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKIFdlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgOSArLS0KIFdlYkNv
cmUvZG9tL0RvY3VtZW50LmggICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMCArKy0K
IFdlYkNvcmUvZG9tL0RvY3VtZW50LmlkbCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAg
NiArLQogV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgICAgICAgICAgICAgICAgICAgICAg
fCAgICA0ICstCiBXZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcCAgICAgICAgICAg
ICAgICB8ICAgNDcgKysrKysrKysrKy0tLQogV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3Vs
dC5oICAgICAgICAgICAgICAgICAgfCAgIDQxICsrKysrLS0tLS0tCiBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5jcHAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcCAgICAgICAgICAgICAgICAgIHwgICAgNiArLQogV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJveExpc3QuY3BwICAgICAgICAgICAgfCAgICA4ICstCiAx
NSBmaWxlcyBjaGFuZ2VkLCAyMzEgaW5zZXJ0aW9ucygrKSwgMTAzIGRlbGV0aW9ucygtKQoKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCBlNTYwZGVkLi5hZGQ5MGFkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDktMjMg
IEFudG9uaW8gR29tZXMgIDxhZ29tZXNAcmltLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIERvY3VtZW50Ojpub2Rlc0Zyb21SZWN0IG1v
cmUgZmxleGlibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQ2MzM2CisKKyAgICAgICAgVGVzdHMgYmFzaWNhbGx5IGFkanVzdGVkIHRvIHRoZSBuZXcg
QVBJLgorCisgICAgICAgICogZmFzdC9kb20vbm9kZXNGcm9tUmVjdC1iYXNpYy1leHBlY3RlZC50
eHQ6CisgICAgICAgICogZmFzdC9kb20vbm9kZXNGcm9tUmVjdC1iYXNpYy5odG1sOgorICAgICAg
ICAqIGZhc3QvZG9tL3Jlc291cmNlcy9ub2Rlc0Zyb21SZWN0LmpzOgorICAgICAgICAoY2hlY2sp
OgorCiAyMDEwLTA5LTIyICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3QtYmFzaWMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vbm9kZXNGcm9tUmVjdC1iYXNpYy1leHBlY3RlZC50eHQKaW5kZXggODlmMWVh
My4uNDU5MTVmZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9tUmVj
dC1iYXNpYy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9t
UmVjdC1iYXNpYy1leHBlY3RlZC50eHQKQEAgLTEsMjYgKzEsMjYgQEAKIFBBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQotUEFTUyBBbGwgY29ycmVjdCBub2Rl
cyBmb3VuZCBmb3IgcmVjdCBbNTMsNzFdLCBbMCwwXQotUEFTUyBBbGwgY29ycmVjdCBub2RlcyBm
b3VuZCBmb3IgcmVjdCBbNTMsNzFdLCBbMTAsMF0KLVBBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91
bmQgZm9yIHJlY3QgWzUzLDcxXSwgWzAsMTBdCi1QQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5k
IGZvciByZWN0IFs1Myw3MV0sIFsxMCwxMF0KLVBBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQg
Zm9yIHJlY3QgWzE1MiwxMDVdLCBbMCwxMF0KLVBBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQg
Zm9yIHJlY3QgWzE1MiwxMDVdLCBbMTAsMF0KLVBBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQg
Zm9yIHJlY3QgWzE1MiwxMDVdLCBbMTAsMTBdCi1QQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5k
IGZvciByZWN0IFsxNTMsMTkzXSwgWzAsMF0KLVBBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQg
Zm9yIHJlY3QgWzE1MywxOTNdLCBbMjAsMF0KLVBBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQg
Zm9yIHJlY3QgWzE1MywxOTNdLCBbMCwyMF0KLVBBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQg
Zm9yIHJlY3QgWzE0NCwxODNdLCBbMCwwXQotUEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBm
b3IgcmVjdCBbMTQ0LDE4M10sIFswLDFdCi1QQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZv
ciByZWN0IFsxNDQsMTgzXSwgWzEsMF0KLVBBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9y
IHJlY3QgWzE0NCwxODNdLCBbMSwxXQotUEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3Ig
cmVjdCBbNzcsMjQwXSwgWzAsMF0KLVBBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJl
Y3QgWzc3LDI0MF0sIFsxMCwwXQotUEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVj
dCBbNzcsMjQwXSwgWzAsMTBdCi1QQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0
IFs3NywyNDBdLCBbMTAsMTBdCi1QQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0
IFszOSwyMTJdLCBbMCwwXQotUEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdCBb
MzksMjEyXSwgWzAsMTBdCi1QQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0IFsz
OSwyMTJdLCBbMTAsMF0KLVBBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QgWzM5
LDIxMl0sIFsxMCwxMF0KK1BBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QgWzUz
LDcxXSwgWzAsMCwwLDBdCitQQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0IFs1
Myw3MV0sIFswLDEwLDAsMTBdCitQQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0
IFs1Myw3MV0sIFsxMCwwLDEwLDBdCitQQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciBy
ZWN0IFs1Myw3MV0sIFsxMCwxMCwxMCwxMF0KK1BBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQg
Zm9yIHJlY3QgWzE1MiwxMDVdLCBbMTAsMCwxMCwwXQorUEFTUyBBbGwgY29ycmVjdCBub2RlcyBm
b3VuZCBmb3IgcmVjdCBbMTUyLDEwNV0sIFswLDEwLDAsMTBdCitQQVNTIEFsbCBjb3JyZWN0IG5v
ZGVzIGZvdW5kIGZvciByZWN0IFsxNTIsMTA1XSwgWzEwLDEwLDEwLDEwXQorUEFTUyBBbGwgY29y
cmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdCBbMTUzLDE5M10sIFswLDAsMCwwXQorUEFTUyBBbGwg
Y29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdCBbMTUzLDE5M10sIFswLDIwLDAsMjBdCitQQVNT
IEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0IFsxNTMsMTkzXSwgWzIwLDAsMjAsMF0K
K1BBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QgWzE0NCwxODNdLCBbMCwwLDAs
MF0KK1BBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QgWzE0NCwxODNdLCBbMSww
LDEsMF0KK1BBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QgWzE0NCwxODNdLCBb
MCwxLDAsMV0KK1BBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QgWzE0NCwxODNd
LCBbMSwxLDEsMV0KK1BBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QgWzc3LDI0
MF0sIFswLDAsMCwwXQorUEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdCBbNzcs
MjQwXSwgWzAsMTAsMCwxMF0KK1BBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3Qg
Wzc3LDI0MF0sIFsxMCwwLDEwLDBdCitQQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciBy
ZWN0IFs3NywyNDBdLCBbMTAsMTAsMTAsMTBdCitQQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5k
IGZvciByZWN0IFszOSwyMTJdLCBbMCwwLDAsMF0KK1BBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91
bmQgZm9yIHJlY3QgWzM5LDIxMl0sIFsxMCwwLDEwLDBdCitQQVNTIEFsbCBjb3JyZWN0IG5vZGVz
IGZvdW5kIGZvciByZWN0IFszOSwyMTJdLCBbMCwxMCwwLDEwXQorUEFTUyBBbGwgY29ycmVjdCBu
b2RlcyBmb3VuZCBmb3IgcmVjdCBbMzksMjEyXSwgWzEwLDEwLDEwLDEwXQogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2Rlc0Zyb21SZWN0LWJhc2ljLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9ub2Rlc0Zyb21SZWN0LWJhc2ljLmh0bWwKaW5kZXggNmE0MDY0YS4uMmI0
M2M2NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9tUmVjdC1iYXNp
Yy5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3QtYmFzaWMuaHRt
bApAQCAtMjIsMzcgKzIyLDM3IEBACiAKICAgICAgIHdpbmRvdy5zY3JvbGxUbygwLCAwKTsKIAot
ICAgICAgY2hlY2soNTMsIDcxLCAwLCAwLCBbZS5ib2R5XSk7Ci0gICAgICBjaGVjayg1MywgNzEs
IDEwLCAwLCBbZS5wMywgZS5ib2R5XSk7Ci0gICAgICBjaGVjayg1MywgNzEsIDAsIDEwLCBbZS5k
MSwgZS5oMSwgZS5ib2R5XSk7Ci0gICAgICBjaGVjayg1MywgNzEsIDEwLCAxMCwgW2UucDMsIGUu
ZDEsIGUuaDEsIGUuYm9keV0pOworICAgICAgY2hlY2soNTMsIDcxLCAwLCAwLCAwLCAwLCBbZS5i
b2R5XSk7CisgICAgICBjaGVjayg1MywgNzEsIDAsIDEwLCAwLCAxMCwgW2UucDMsIGUuYm9keV0p
OworICAgICAgY2hlY2soNTMsIDcxLCAxMCwgMCwgMTAsIDAsIFtlLmQxLCBlLmgxLCBlLmJvZHld
KTsKKyAgICAgIGNoZWNrKDUzLCA3MSwgMTAsIDEwLCAxMCwgMTAsIFtlLnAzLCBlLmQxLCBlLmgx
LCBlLmJvZHldKTsKIAotICAgICAgY2hlY2soMTUyLCAxMDUsIDAsIDEwLCBbZS5wMywgZS5ib2R5
XSk7Ci0gICAgICBjaGVjaygxNTIsIDEwNSwgMTAsIDAsIFtlLnA0LCBlLmQxLCBlLmJvZHldKTsK
LSAgICAgIGNoZWNrKDE1MiwgMTA1LCAxMCwgMTAsIFtlLnA0LCBlLnAzLCBlLmQxLCBlLmJvZHld
KTsKKyAgICAgIGNoZWNrKDE1MiwgMTA1LCAxMCwgMCwgMTAsIDAsIFtlLnAzLCBlLmJvZHldKTsK
KyAgICAgIGNoZWNrKDE1MiwgMTA1LCAwLCAxMCwgMCwgMTAsIFtlLnA0LCBlLmQxLCBlLmJvZHld
KTsKKyAgICAgIGNoZWNrKDE1MiwgMTA1LCAxMCwgMTAsIDEwLCAxMCwgW2UucDQsIGUucDMsIGUu
ZDEsIGUuYm9keV0pOwogCiAgICAgICAvLyBlLnAxIGlzIGludmlzaWJsZSBhbmQgc2hvdWxkbid0
IGFwcGVhcjoKLSAgICAgIGNoZWNrKDE1MywxOTMsMCwwLFtlLnA1XSk7CisgICAgICBjaGVjaygx
NTMsIDE5MywgMCwgMCwgMCwgMCwgW2UucDVdKTsKICAgICAgIC8vIE5PVEU6IFtlLnA1LCBlLmQy
XSkgc2hvdWxkIGJlIHJldHVybmVkIGlmIHdlIGRpZCBub3Qgc3RvcAogICAgICAgLy8gYXQgZS5w
NSwgd2hpY2ggZnVsbHkgZW5jbG9zZXMgdGhlIHRhcmdldCByZWN0LgotICAgICAgY2hlY2soMTUz
LDE5MywyMCwwLCBbZS5wNV0pOwotICAgICAgY2hlY2soMTUzLDE5MywwLDIwLCBbZS5wNSwgZS5i
b2R5XSk7CisgICAgICBjaGVjaygxNTMsMTkzLDAsIDIwLCAwLCAyMCwgW2UucDVdKTsKKyAgICAg
IGNoZWNrKDE1MywxOTMsMjAsIDAsIDIwLCAwLCBbZS5wNSwgZS5ib2R5XSk7CiAKICAgICAgIC8v
IFByZWNpc2UgcGl4ZWwgY2hlY2tzOgotICAgICAgY2hlY2soMTQ0LCAxODMsIDAsIDAsIFtlLmJv
ZHldKTsKLSAgICAgIGNoZWNrKDE0NCwgMTgzLCAwLCAxLCBbZS5wNSwgZS5ib2R5XSk7Ci0gICAg
ICBjaGVjaygxNDQsIDE4MywgMSwgMCwgW2UuZDIsIGUuYm9keV0pOwotICAgICAgY2hlY2soMTQ0
LCAxODMsIDEsIDEsIFtlLnA1LCBlLmQyLCBlLmJvZHldKTsKLSAgICAgIGNoZWNrKDc3LCAyNDAs
IDAsIDAsIFtlLnAyXSk7Ci0gICAgICBjaGVjayg3NywgMjQwLCAxMCwgMCwgW2UucDJdKTsKLSAg
ICAgIGNoZWNrKDc3LCAyNDAsIDAsIDEwLCBbZS5wNSwgZS5zcGFuLCBlLnAyXSk7Ci0gICAgICBj
aGVjayg3NywgMjQwLCAxMCwgMTAsIFtlLnA1LCBlLnNwYW4sIGUucDJdKTsKKyAgICAgIGNoZWNr
KDE0NCwgMTgzLCAwLCAwLCAwLCAwLCBbZS5ib2R5XSk7CisgICAgICBjaGVjaygxNDQsIDE4Mywg
MSwgMCwgMSwgMCwgW2UucDUsIGUuYm9keV0pOworICAgICAgY2hlY2soMTQ0LCAxODMsIDAsIDEs
IDAsIDEsIFtlLmQyLCBlLmJvZHldKTsKKyAgICAgIGNoZWNrKDE0NCwgMTgzLCAxLCAxLCAxLCAx
LCBbZS5wNSwgZS5kMiwgZS5ib2R5XSk7CisgICAgICBjaGVjayg3NywgMjQwLCAwLCAwLCAwLCAw
LCBbZS5wMl0pOworICAgICAgY2hlY2soNzcsIDI0MCwgMCwgMTAsIDAsIDEwLCBbZS5wMl0pOwor
ICAgICAgY2hlY2soNzcsIDI0MCwgMTAsIDAsIDEwLCAwLCBbZS5wNSwgZS5zcGFuLCBlLnAyXSk7
CisgICAgICBjaGVjayg3NywgMjQwLCAxMCwgMTAsIDEwLCAxMCwgW2UucDUsIGUuc3BhbiwgZS5w
Ml0pOwogCiAgICAgICAvLyBFeHBhbmRpbmcgYXJlYSBjaGVja3M6Ci0gICAgICBjaGVjaygzOSwg
MjEyLCAwLCAgMCwgW2UuYm9keV0pOwotICAgICAgY2hlY2soMzksIDIxMiwgMCwgMTAsIFtlLmQy
LCBlLnAyLCBlLmJvZHldKTsKLSAgICAgIGNoZWNrKDM5LCAyMTIsIDEwLCAwLCBbZS5wNSwgZS5i
b2R5XSk7Ci0gICAgICBjaGVjaygzOSwgMjEyLCAxMCwgMTAsIFtlLnA1LCBlLmQyLCBlLnAyLCBl
LmJvZHldKTsKKyAgICAgIGNoZWNrKDM5LCAyMTIsIDAsICAwLCAwLCAwLCBbZS5ib2R5XSk7Cisg
ICAgICBjaGVjaygzOSwgMjEyLCAxMCwgMCwgMTAsIDAsIFtlLmQyLCBlLnAyLCBlLmJvZHldKTsK
KyAgICAgIGNoZWNrKDM5LCAyMTIsIDAsIDEwLCAwLCAxMCwgW2UucDUsIGUuYm9keV0pOworICAg
ICAgY2hlY2soMzksIDIxMiwgMTAsIDEwLCAxMCwgMTAsIFtlLnA1LCBlLmQyLCBlLnAyLCBlLmJv
ZHldKTsKIAogICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKICAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vcmVzb3VyY2VzL25vZGVzRnJvbVJlY3QuanMgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9yZXNvdXJjZXMvbm9kZXNGcm9tUmVjdC5qcwppbmRleCBiZTA2YzZhLi5lZGZhMjAyIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMvbm9kZXNGcm9tUmVjdC5q
cworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMvbm9kZXNGcm9tUmVjdC5qcwpA
QCAtMywyMSArMywyNSBAQAogICogICAgICogQW50b25pbyBHb21lcyA8dG9uaWtpdG9vQHdlYmtp
dC5vcmc+CiAgKiovCiAKLWZ1bmN0aW9uIGNoZWNrKHgsIHksIGhQYWRkaW5nLCB2UGFkZGluZywg
bGlzdCkKK2Z1bmN0aW9uIGNoZWNrKHgsIHksIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90
dG9tUGFkZGluZywgbGVmdFBhZGRpbmcsIGxpc3QpCiB7CiAgIC8qCiAgICAgTm9kZUxpc3Qgbm9k
ZXNGcm9tUmVjdChpbiBsb25nIHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBsb25n
IHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBsb25nIGhQYWRkaW5nLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW4gbG9uZyB2UGFkZGluZywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluIHVuc2lnbmVkIGxvbmcgdG9wUGFkZGluZywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluIHVuc2lnbmVkIGxvbmcgcmlnaHRQYWRkaW5nLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW4gdW5zaWduZWQgbG9uZyBib3R0b21QYWRkaW5nLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW4gdW5zaWduZWQgbG9uZyBsZWZ0UGFkZGluZywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluIGJvb2xlYW4gaWdub3JlQ2xpcHBpbmcpOwogICAqLwotICB2YXIg
bm9kZXMgPSBkb2N1bWVudC5ub2Rlc0Zyb21SZWN0KHgsIHksIGhQYWRkaW5nLCB2UGFkZGluZywg
dHJ1ZSAvKiBpZ25vcmVDbGlwcGluZyAqLyk7CisgIHZhciBub2RlcyA9IGRvY3VtZW50Lm5vZGVz
RnJvbVJlY3QoeCwgeSwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBs
ZWZ0UGFkZGluZywgdHJ1ZSAvKiBpZ25vcmVDbGlwcGluZyAqLyk7CiAKICAgaWYgKG5vZGVzLmxl
bmd0aCAhPSBsaXN0Lmxlbmd0aCkgewogICAgIHRlc3RGYWlsZWQoIkRpZmZlcmVudCBudW1iZXIg
b2Ygbm9kZXMgZm9yIHJlY3QiICsKICAgICAgICAgICAgICAgIlsiICsgeCArICIsIiArIHkgKyAi
XSwgIiArCi0gICAgICAgICAgICAgICJbIiArIGhQYWRkaW5nICsgIiwiICsgdlBhZGRpbmcgKyAi
XTogJyIgKyBsaXN0Lmxlbmd0aCArICInIHZzICciICsgbm9kZXMubGVuZ3RoICsgIiciKTsKKyAg
ICAgICAgICAgICAgIlsiICsgdG9wUGFkZGluZyArICIsIiArIHJpZ2h0UGFkZGluZyArCisgICAg
ICAgICAgICAgICIsIiArIGJvdHRvbVBhZGRpbmcgKyAiLCIgKyBsZWZ0UGFkZGluZyArCisgICAg
ICAgICAgICAgICJdOiAnIiArIGxpc3QubGVuZ3RoICsgIicgdnMgJyIgKyBub2Rlcy5sZW5ndGgg
KyAiJyIpOwogICAgIHJldHVybjsKICAgfQogCkBAIC0yNSwxNCArMjksMTYgQEAgZnVuY3Rpb24g
Y2hlY2soeCwgeSwgaFBhZGRpbmcsIHZQYWRkaW5nLCBsaXN0KQogICAgIGlmIChub2Rlc1tpXSAh
PSBsaXN0W2ldKSB7CiAgICAgICB0ZXN0RmFpbGVkKCJVbmV4cGVjdGVkIG5vZGUgIyIgKyBpICsg
IiBmb3IgcmVjdCAiICsKICAgICAgICAgICAgICAgICAiWyIgKyB4ICsgIiwiICsgeSArICJdLCAi
ICsKLSAgICAgICAgICAgICAgICAiWyIgKyBoUGFkZGluZyArICIsIiArIHZQYWRkaW5nICsgIl0i
ICsgIiAtICIgKyBub2Rlc1tpXSk7CisgICAgICAgICAgICAgICAgIlsiICsgdG9wUGFkZGluZyAr
ICIsIiArIHJpZ2h0UGFkZGluZyArCisgICAgICAgICAgICAgICAgIiwiICsgYm90dG9tUGFkZGlu
ZyArICIsIiArIGxlZnRQYWRkaW5nICsgIl0iICsgIiAtICIgKyBub2Rlc1tpXSk7CiAgICAgICBy
ZXR1cm47CiAgICAgfQogICB9CiAKICAgdGVzdFBhc3NlZCgiQWxsIGNvcnJlY3Qgbm9kZXMgZm91
bmQgZm9yIHJlY3QgIiAgKwotICAgICAgICAgICAiWyIgKyB4ICsgIiwiICsgeSArICJdLCAiICsK
LSAgICAgICAgICAgIlsiICsgaFBhZGRpbmcgKyAiLCIgKyB2UGFkZGluZyArICJdIik7CisgICAg
ICAgICAgICAgIlsiICsgeCArICIsIiArIHkgKyAiXSwgIiArCisgICAgICAgICAgICAgIlsiICsg
dG9wUGFkZGluZyArICIsIiArIHJpZ2h0UGFkZGluZyArCisgICAgICAgICAgICAgIiwiICsgYm90
dG9tUGFkZGluZyArICIsIiArIGxlZnRQYWRkaW5nICsgIl0iKTsKIH0KIAogZnVuY3Rpb24gZ2V0
Q2VudGVyRm9yKGVsZW1lbnQpCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDA5MzkzYTEuLjcxMjk0M2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzkgQEAKKzIwMTAt
MDktMjMgIEFudG9uaW8gR29tZXMgIDxhZ29tZXNAcmltLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIERvY3VtZW50Ojpub2Rlc0Zyb21S
ZWN0IG1vcmUgZmxleGlibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ2MzM2CisKKyAgICAgICAgTWFrZSBEb2N1bWVudDo6bm9kZXNGcm9tUmVjdCBt
b3JlIGZsZXhpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00NjMzNgorCisgICAgICAgIFBhdGNoIGJ5IEFudG9uaW8gR29tZXMgPGFnb21lc0ByaW0u
Y29tPiBvbiAyMDEwLTA5LTIzCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoZSBwYXRjaCBjaGFuZ2VzIHRoZSBBUEkgZm9yIHRoZSBEb2N1bWVudDo6bm9k
ZXNGcm9tUmVjdCgpIG1ldGhvZCBhcyBmb2xsb3dzOgorCisgICAgICAgIGZyb20KKworICAgICAg
ICAtIFJlZlB0ZjxOb2RlTGlzdD4gbm9kZXNGcm9tUmVjdChpbnQgeCwgaW50IHksIHVuc2lnbmVk
IGhvcml6b250YWxQYWRkaW5nLCB1bnNpZ25lZCB2ZXJ0aWNhbFBhZGRpbmcsIGJvb2wgaWdub3Jl
Q2xpcHBpbmcpCisKKyAgICAgICAgdG8KKworICAgICAgICAtIFJlZlB0ZjxOb2RlTGlzdD4gbm9k
ZXNGcm9tUmVjdChpbnQgeCwgaW50IHksIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJp
Z2h0UGFkZGluZywgdW5zaWduZWQgYm90dG9tUGFkZGluZywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbGVmdFBhZGRpbmcsIGJvb2wgaWdub3JlQ2xp
cHBpbmcpCisKKyAgICAgICAgUHJldmlvdXNseSB0aGUgbWV0aG9kIHdhcyByZWNlaXZpbmcgYXMg
cGFyYW1ldGVyIGhvcml6b250YWwgYW5kIHZlcnRpY2FsIHBhZGRpbmcgdmFsdWVzLgorICAgICAg
ICBJbiBwcmFjdGl2ZSwgdGhlIGhvcml6b250YWwgcGFkZGluZyB3YXMgYmVpbmcgdXNlZCB0byBl
eHBhbmQgYSBnaXZlbiBjZW50ZXIgcG9pbnQgaW4gYm90aAorICAgICAgICByaWdodCBhbmQgbGVm
dCBkaXJlY3Rpb25zLCB3aGlsZSB2ZXJ0aWNhbCBwYWRkaW5nIHdhcyBleHBhbmRpbmcgaXQgdG8g
dGhlIHRvcCBhbmQgYm90dG9tIGRpcmVjdGlvbnMuCisKKyAgICAgICAgQWx0aG91Z2ggdGhpcyBk
ZXNpZ24gbWFrZXMgaXQgcG9zc2libGUgdG8gaW1wcm92ZSB0aGUgdG91Y2ggZXhwZXJpZW5jZSBv
biBtb2JpbGUgZGV2aWNlcworICAgICAgICAoRG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QgZXhwb3Nl
cyB0aGUgcmVjdCBiYXNlZCBoaXQgdGVzdGluZyBzeXN0ZW0pLCBlbXBpcmljYWwgZXhwZXJpbWVu
dHMKKyAgICAgICAgc2hvd2VkIHRoYXQsIHNwZWNpYWxseSBpbiBjYXBhY2l0aXZlIHRvdWNoIHNj
cmVlbnMsIHVzZXJzIHRlbmQgdG8gdGFwIGJlbG93IGVsZW1lbnRzLiBTbworICAgICAgICBmb3Ig
ZXZlbiBtb3JlIGFjY3VyYXRlIHJlc3VsdHMgKHdoaWNoIG1lYW5zIGhlcmUgdGhlIHBvc3NpYmls
aXR5IG9mIHBsZWFzYW50IHRhcHBpbmcgZXhwZXJpZW5jZSksCisgICAgICAgIGl0IG1ha2VzIHNl
bnNlIHRvIHVzZSBhIHJlZ2lvbiB0aGF0IGlzIG9mZnNldCBtb3JlIGFib3ZlIHRoZSB0b3VjaCBw
b2ludCwgZmF2b3JpbmcgZWxlbWVudHMKKyAgICAgICAgYWJvdmUgdGhlIHRvdWNoIHBvaW50Lgor
CisgICAgICAgIFRoZSBwYXRjaCBiYXNpY2FsbHkgaW1wbGVtZW50cyB0aGF0LCBpbmNyZWFzaW5n
IHRoZSBBUEkgZmxleGlibGUgYW5kIHBvd2VyIGJ5IG1ha2luZyBpdCBwb3NzaWJsZQorICAgICAg
ICB0byBzcGVjaWZ5IGRpZmZlcmVudCBwYWRkaW5nIHZhbHVlcyBmb3IgZWFjaCBkaXJlY3Rpb24g
aW4gYSBnaXZlbiBvcmllbnRhdGlvbi4KKworICAgICAgICBDaGFuZ2VzIHdlcmUgbWFkZSBhY2Nv
cmRpbmdseSB0byB0aGUgSGl0VGVzdFJlc3VsdCwgUmVuZGVyTGF5ZXIsIFJlbmRlckltYWdlIGFu
ZCBSZW5kZXJMaW5lQm94TGlzdAorICAgICAgICBjbGFzc2VzLgorCisgICAgICAgIFdlYkNvcmU6
CisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDog
QVBJIGFkanVzdG1lbnQuCisgICAgICAgICogZG9tL0RvY3VtZW50LmlkbDogRGl0dG8uCisgICAg
ICAgICogZG9tL0RvY3VtZW50LmNwcDogQVBJIGFkanVzdG1lbnQgYW5kIG1ldGhvZCBib2R5IGlt
cGxlbWVudGF0aW9uIGFjY29yZGluZ2x5LgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Om5v
ZGVzRnJvbVJlY3QpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGl0VGVzdFJlc3VsdEF0UG9pbnQpOiBGb3Igc2ltcGxp
Y2l0eSwgSSBkaWQgbm90IGNoYW5nZSB0aGUgc2lnbmF0dXJlCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0IHRoZSB3YXkgdGhlIHBhZGRp
bmcgdmFsdWUgcGFzc2VkIGluIGFzIHBhcmFtZXRlcgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGJlaW5nIHVzZWQgdG8gY29uc3RydWN0
IGEgSGl0VGVzdFJlc3VsdC4KKyAgICAgICAgKiByZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHA6
IENoYW5nZWQgdGhlIHJlY3QtYmFzZWQgYml0cyBmcm9tIHVzaW5nIEludFNpemUgKHBhZGRpbmcp
IHRvIHNlcGFyYXRlZCBwYWRkaW5ncworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZm9yIGVhY2ggZGlyZWN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3Vs
dDo6SGl0VGVzdFJlc3VsdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3Vs
dDo6b3BlcmF0b3I9KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0Ojpy
ZWN0RnJvbVBvaW50KTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OnRvcFBhZGRpbmcpOiBnZXR0ZXIg
Zm9yIHRoZSB0b3AgcGFkZGluZy4KKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OnJp
Z2h0UGFkZGluZyk6IGdldHRlciBmb3IgdGhlIHJpZ2h0IHBhZGRpbmcuCisgICAgICAgIChXZWJD
b3JlOjpIaXRUZXN0UmVzdWx0Ojpib3R0b21QYWRkaW5nKTogZ2V0dGVyIGZvciB0aGUgYm90dG9t
IHBhZGRpbmcuCisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpsZWZ0UGFkZGluZyk6
IGdldHRlciBmb3IgdGhlIGxlZnQgcGFkZGluZy4KKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RS
ZXN1bHQ6OnJlY3RGcm9tUG9pbnQpOiBBZGRlZCBhIHN0YXRpYyBtZXRob2QgdGhhdCBnaXZlbiBh
IGNlbnRlciBwb2ludAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFuZCBwYWRkaW5nIHZhbHVlcyBmb3IgZWFjaCBkaXJlY3Rpb24sIHJldHVybnMKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgcmVjdCB0
aGF0IGlzIGdvaW5nIHRvIGJlIHVzZWQgaW4gV2ViQ29yZSdzCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGl0IHRlc3RpbmcgcHJvY2Vzc2luZy4KKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOiBDaGFuZ2VkIHRoZSByZWN0LWJhc2Vk
IGJpdHMgZnJvbSB1c2luZyBJbnRTaXplIChwYWRkaW5nKSB0byBzZXBhcmF0ZWQgcGFkZGluZ3MK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZWFjaCBkaXJlY3Rpb24u
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6bm9kZUF0UG9pbnQpOiBEaXR0by4KKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyOjpoaXRUZXN0TGF5ZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyOjpoaXRUZXN0TGlzdCk6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJMaW5lQm94TGlzdC5jcHA6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlu
ZUJveExpc3Q6OmhpdFRlc3QpOiBEaXR0by4KKworCiAyMDEwLTA5LTIyICBBbmR5IEVzdGVzICA8
YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBEYXJpbiBBZGxl
ci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCmluZGV4IDJkOTc2ZjQuLjE5MjQ4ZGIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KKysrIGIvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtOTE3LDYgKzkxNyw3IEBA
IF9fWk5LN1dlYkNvcmUxM0hpdFRlc3RSZXN1bHQxOHRpdGxlRGlzcGxheVN0cmluZ0V2CiBfX1pO
SzdXZWJDb3JlMTNIaXRUZXN0UmVzdWx0NWltYWdlRXYKIF9fWk5LN1dlYkNvcmUxM0hpdFRlc3RS
ZXN1bHQ1dGl0bGVFUk5TXzEzVGV4dERpcmVjdGlvbkUKIF9fWk5LN1dlYkNvcmUxM0hpdFRlc3RS
ZXN1bHQ5aW1hZ2VSZWN0RXYKK19fWk43V2ViQ29yZTEzSGl0VGVzdFJlc3VsdDEzcmVjdEZyb21Q
b2ludEVSS05TXzhJbnRQb2ludEVqampqCiBfX1pOSzdXZWJDb3JlMTNSZXNvdXJjZUVycm9yY3ZQ
N05TRXJyb3JFdgogX19aTks3V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXIxMHJlcXVlc3RVUkxFdgog
X19aTks3V2ViQ29yZTE0RG9jdW1lbnRMb2FkZXIxMWZyYW1lTG9hZGVyRXYKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRl
eCAzNjdmYmY0Li43ZGFlZmYwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
KysrIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0xMDQ5LDcgKzEwNDksNyBAQCBLVVJM
IERvY3VtZW50OjpiYXNlVVJJKCkgY29uc3QKIC8vICogbWFraW5nIGl0IHJlY2VpdmUgYSByZWN0
IGFzIHBhcmFtZXRlciwgaS5lLiBub2Rlc0Zyb21SZWN0KHgsIHksIHcsIGgpOwogLy8gKiBtYWtp
bmcgaXQgcmVjZWl2ZSB0aGUgZXhwYWRpbmcgc2l6ZSBvZiBlYWNoIGRpcmVjdGlvbiBzZXBhcmF0
ZWx5LAogLy8gICBpLmUuIG5vZGVzRnJvbVJlY3QoeCwgeSwgdG9wU2l6ZSwgcmlnaHRTaXplLCBi
b3R0b21TaXplLCBsZWZ0U2l6ZSk7Ci1QYXNzUmVmUHRyPE5vZGVMaXN0PiBEb2N1bWVudDo6bm9k
ZXNGcm9tUmVjdChpbnQgY2VudGVyWCwgaW50IGNlbnRlclksIHVuc2lnbmVkIGhQYWRkaW5nLCB1
bnNpZ25lZCB2UGFkZGluZywgYm9vbCBpZ25vcmVDbGlwcGluZykgY29uc3QKK1Bhc3NSZWZQdHI8
Tm9kZUxpc3Q+IERvY3VtZW50Ojpub2Rlc0Zyb21SZWN0KGludCBjZW50ZXJYLCBpbnQgY2VudGVy
WSwgdW5zaWduZWQgdG9wUGFkZGluZywgdW5zaWduZWQgcmlnaHRQYWRkaW5nLCB1bnNpZ25lZCBi
b3R0b21QYWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGluZywgYm9vbCBpZ25vcmVDbGlwcGluZykg
Y29uc3QKIHsKICAgICAvLyBGSVhNRTogU2hhcmUgY29kZSBiZXR3ZWVuIHRoaXMsIGVsZW1lbnRG
cm9tUG9pbnQgYW5kIGNhcmV0UmFuZ2VGcm9tUG9pbnQuCiAgICAgaWYgKCFyZW5kZXJlcigpKQpA
QCAtMTA2MywyNiArMTA2MywyNSBAQCBQYXNzUmVmUHRyPE5vZGVMaXN0PiBEb2N1bWVudDo6bm9k
ZXNGcm9tUmVjdChpbnQgY2VudGVyWCwgaW50IGNlbnRlclksIHVuc2lnbmVkCiAKICAgICBmbG9h
dCB6b29tRmFjdG9yID0gZnJhbWUtPnBhZ2Vab29tRmFjdG9yKCk7CiAgICAgSW50UG9pbnQgcG9p
bnQgPSByb3VuZGVkSW50UG9pbnQoRmxvYXRQb2ludChjZW50ZXJYICogem9vbUZhY3RvciArIHZp
ZXcoKS0+c2Nyb2xsWCgpLCBjZW50ZXJZICogem9vbUZhY3RvciArIHZpZXcoKS0+c2Nyb2xsWSgp
KSk7Ci0gICAgSW50U2l6ZSBwYWRkaW5nKGhQYWRkaW5nLCB2UGFkZGluZyk7CiAKICAgICBpbnQg
dHlwZSA9IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmU7
CiAKICAgICAvLyBXaGVuIGlnbm9yZUNsaXBwaW5nIGlzIGZhbHNlLCB0aGlzIG1ldGhvZCByZXR1
cm5zIG51bGwgZm9yIGNvb3JkaW5hdGVzIG91dHNpZGUgb2YgdGhlIHZpZXdwb3J0LgogICAgIGlm
IChpZ25vcmVDbGlwcGluZykKICAgICAgICAgdHlwZSB8PSBIaXRUZXN0UmVxdWVzdDo6SWdub3Jl
Q2xpcHBpbmc7Ci0gICAgZWxzZSBpZiAoIWZyYW1lVmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0KCku
aW50ZXJzZWN0cyhJbnRSZWN0KHBvaW50LCBwYWRkaW5nKSkpCisgICAgZWxzZSBpZiAoIWZyYW1l
Vmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0KCkuaW50ZXJzZWN0cyhIaXRUZXN0UmVzdWx0OjpyZWN0
RnJvbVBvaW50KEludFBvaW50KGNlbnRlclgsIGNlbnRlclkpLCB0b3BQYWRkaW5nLCByaWdodFBh
ZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nKSkpCiAgICAgICAgIHJldHVybiAwOwog
CiAgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdCh0eXBlKTsKIAogICAgIC8vIFBhc3NpbmcgYSB6
ZXJvIHBhZGRpbmcgd2lsbCB0cmlnZ2VyIGEgcmVjdCBoaXQgdGVzdCwgaG93ZXZlciBmb3IgdGhl
IHB1cnBvc2VzIG9mIG5vZGVzRnJvbVJlY3QsCiAgICAgLy8gd2Ugc3BlY2lhbCBoYW5kbGUgdGhp
cyBjYXNlIGluIG9yZGVyIHRvIHJldHVybiBhIHZhbGlkIE5vZGVMaXN0LgotICAgIGlmIChwYWRk
aW5nLmlzWmVybygpKSB7CisgICAgaWYgKCF0b3BQYWRkaW5nICYmICFyaWdodFBhZGRpbmcgJiYg
IWJvdHRvbVBhZGRpbmcgJiYgIWxlZnRQYWRkaW5nKSB7CiAgICAgICAgIEhpdFRlc3RSZXN1bHQg
cmVzdWx0KHBvaW50KTsKICAgICAgICAgcmV0dXJuIGhhbmRsZVplcm9QYWRkaW5nKHJlcXVlc3Qs
IHJlc3VsdCk7CiAgICAgfQogCi0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQocG9pbnQsIHBhZGRp
bmcpOworICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHBvaW50LCB0b3BQYWRkaW5nLCByaWdodFBh
ZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nKTsKICAgICByZW5kZXJWaWV3KCktPmxh
eWVyKCktPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0KTsKIAogICAgIHJldHVybiBTdGF0aWNIYXNo
U2V0Tm9kZUxpc3Q6OmFkb3B0KHJlc3VsdC5yZWN0QmFzZWRUZXN0UmVzdWx0KCkpOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5k
ZXggNDJkMjcwNi4uNGU3NzMxYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAor
KysgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0zMDUsNyArMzA1LDcgQEAgcHVibGljOgog
CiAgICAgLyoqCiAgICAgICogUmV0cmlldmUgYWxsIG5vZGVzIHRoYXQgaW50ZXJzZWN0IGEgcmVj
dCBpbiB0aGUgd2luZG93J3MgZG9jdW1lbnQsIHVudGlsIGl0IGlzIGZ1bGx5IGVuY2xvc2VkIGJ5
Ci0gICAgICogdGhlIGJvdW5kYXJpZXMgb2Ygbm9kZS4KKyAgICAgKiB0aGUgYm91bmRhcmllcyBv
ZiBhIG5vZGUuCiAgICAgICoKICAgICAgKiBAcGFyYW0gY2VudGVyWCB4IHJlZmVyZW5jZSBmb3Ig
dGhlIHJlY3RhbmdsZSBpbiBDU1MgcGl4ZWxzCiAgICAgICogQHBhcmFtIGNlbnRlclkgeSByZWZl
cmVuY2UgZm9yIHRoZSByZWN0YW5nbGUgaW4gQ1NTIHBpeGVscwpAQCAtMzE0LDcgKzMxNCwxMyBA
QCBwdWJsaWM6CiAgICAgICogQHBhcmFtIGlnbm9yZUNsaXBwaW5nIHdoZXRoZXIgb3Igbm90IHRv
IGlnbm9yZSB0aGUgcm9vdCBzY3JvbGwgZnJhbWUgd2hlbiByZXRyaWV2aW5nIHRoZSBlbGVtZW50
LgogICAgICAqICAgICAgICBJZiBmYWxzZSwgdGhpcyBtZXRob2QgcmV0dXJucyBudWxsIGZvciBj
b29yZGluYXRlcyBvdXRzaWRlIG9mIHRoZSB2aWV3cG9ydC4KICAgICAgKi8KLSAgICBQYXNzUmVm
UHRyPE5vZGVMaXN0PiBub2Rlc0Zyb21SZWN0KGludCBjZW50ZXJYLCBpbnQgY2VudGVyWSwgdW5z
aWduZWQgaFBhZGRpbmcsIHVuc2lnbmVkIHZQYWRkaW5nLCBib29sIGlnbm9yZUNsaXBwaW5nKSBj
b25zdDsKKyAgICBQYXNzUmVmUHRyPE5vZGVMaXN0PiBub2Rlc0Zyb21SZWN0KGludCBjZW50ZXJY
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNlbnRlclksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCB0b3BQYWRkaW5n
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgcmlnaHRQ
YWRkaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
Ym90dG9tUGFkZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGxlZnRQYWRkaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBpZ25vcmVDbGlwcGluZykgY29uc3Q7CiAgICAgRWxlbWVudCogZWxlbWVudEZyb21Q
b2ludChpbnQgeCwgaW50IHkpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8UmFuZ2U+IGNhcmV0UmFu
Z2VGcm9tUG9pbnQoaW50IHgsIGludCB5KTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaWRsIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCmluZGV4IDI5NmJkNDQuLjlkZDJl
NTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAorKysgYi9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5pZGwKQEAgLTE4OCw4ICsxODgsMTAgQEAgbW9kdWxlIGNvcmUgewogCiAKICAg
ICAgICAgTm9kZUxpc3QgICAgICAgICAgIG5vZGVzRnJvbVJlY3QoaW4gbG9uZyB4LCBpbiBsb25n
IHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHVuc2lnbmVk
IGxvbmcgaFBhZGRpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGluIHVuc2lnbmVkIGxvbmcgdlBhZGRpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGluIHVuc2lnbmVkIGxvbmcgdG9wUGFkZGluZywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gdW5zaWduZWQgbG9uZyByaWdodFBhZGRpbmcs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHVuc2lnbmVkIGxv
bmcgYm90dG9tUGFkZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW4gdW5zaWduZWQgbG9uZyBsZWZ0UGFkZGluZywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW4gYm9vbGVhbiBpZ25vcmVDbGlwcGluZyk7CiAgICAgICAgIEVs
ZW1lbnQgICAgICAgICAgICBlbGVtZW50RnJvbVBvaW50KGluIGxvbmcgeCwgaW4gbG9uZyB5KTsK
ICAgICAgICAgUmFuZ2UgICAgICAgICAgICAgIGNhcmV0UmFuZ2VGcm9tUG9pbnQoaW4gbG9uZyB4
LCBpbiBsb25nIHkpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAg
Yi9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCA4OTMyZTVmLi5kMzcwOWZiIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtODY2LDcgKzg2Niw3IEBAIHZvaWQgRXZlbnRIYW5kbGVy
OjphbGxvd0RIVE1MRHJhZyhib29sJiBmbGFnREhUTUwsIGJvb2wmIGZsYWdVQSkgY29uc3QKICAg
ICAKIEhpdFRlc3RSZXN1bHQgRXZlbnRIYW5kbGVyOjpoaXRUZXN0UmVzdWx0QXRQb2ludChjb25z
dCBJbnRQb2ludCYgcG9pbnQsIGJvb2wgYWxsb3dTaGFkb3dDb250ZW50LCBib29sIGlnbm9yZUNs
aXBwaW5nLCBIaXRUZXN0U2Nyb2xsYmFycyB0ZXN0U2Nyb2xsYmFycywgSGl0VGVzdFJlcXVlc3Q6
OkhpdFRlc3RSZXF1ZXN0VHlwZSBoaXRUeXBlLCBjb25zdCBJbnRTaXplJiBwYWRkaW5nKQogewot
ICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHBvaW50LCBwYWRkaW5nKTsKKyAgICBIaXRUZXN0UmVz
dWx0IHJlc3VsdChwb2ludCwgcGFkZGluZy5oZWlnaHQoKSwgcGFkZGluZy53aWR0aCgpLCBwYWRk
aW5nLmhlaWdodCgpLCBwYWRkaW5nLndpZHRoKCkpOwogICAgIGlmICghbV9mcmFtZS0+Y29udGVu
dFJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgaWYgKGlnbm9yZUNsaXBw
aW5nKQpAQCAtODg3LDcgKzg4Nyw3IEBAIEhpdFRlc3RSZXN1bHQgRXZlbnRIYW5kbGVyOjpoaXRU
ZXN0UmVzdWx0QXRQb2ludChjb25zdCBJbnRQb2ludCYgcG9pbnQsIGJvb2wgYWxsCiAgICAgICAg
IEZyYW1lVmlldyogdmlldyA9IHN0YXRpY19jYXN0PEZyYW1lVmlldyo+KHdpZGdldCk7CiAgICAg
ICAgIEludFBvaW50IHdpZGdldFBvaW50KHJlc3VsdC5sb2NhbFBvaW50KCkueCgpICsgdmlldy0+
c2Nyb2xsWCgpIC0gcmVuZGVyV2lkZ2V0LT5ib3JkZXJMZWZ0KCkgLSByZW5kZXJXaWRnZXQtPnBh
ZGRpbmdMZWZ0KCksIAogICAgICAgICAgICAgcmVzdWx0LmxvY2FsUG9pbnQoKS55KCkgKyB2aWV3
LT5zY3JvbGxZKCkgLSByZW5kZXJXaWRnZXQtPmJvcmRlclRvcCgpIC0gcmVuZGVyV2lkZ2V0LT5w
YWRkaW5nVG9wKCkpOwotICAgICAgICBIaXRUZXN0UmVzdWx0IHdpZGdldEhpdFRlc3RSZXN1bHQo
d2lkZ2V0UG9pbnQsIHBhZGRpbmcpOworICAgICAgICBIaXRUZXN0UmVzdWx0IHdpZGdldEhpdFRl
c3RSZXN1bHQod2lkZ2V0UG9pbnQsIHBhZGRpbmcuaGVpZ2h0KCksIHBhZGRpbmcud2lkdGgoKSwg
cGFkZGluZy5oZWlnaHQoKSwgcGFkZGluZy53aWR0aCgpKTsKICAgICAgICAgZnJhbWUtPmNvbnRl
bnRSZW5kZXJlcigpLT5sYXllcigpLT5oaXRUZXN0KEhpdFRlc3RSZXF1ZXN0KGhpdFR5cGUpLCB3
aWRnZXRIaXRUZXN0UmVzdWx0KTsKICAgICAgICAgcmVzdWx0ID0gd2lkZ2V0SGl0VGVzdFJlc3Vs
dDsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAgYi9X
ZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAppbmRleCBmMjg2OTJlLi40NTMwMzcz
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAorKysgYi9X
ZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcApAQCAtNTEsMTcgKzUxLDI3IEBAIEhp
dFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQoY29uc3QgSW50UG9pbnQmIHBvaW50KQogICAgIDog
bV9wb2ludChwb2ludCkKICAgICAsIG1faXNPdmVyV2lkZ2V0KGZhbHNlKQogICAgICwgbV9pc1Jl
Y3RCYXNlZChmYWxzZSkKKyAgICAsIG1fdG9wUGFkZGluZygwKQorICAgICwgbV9yaWdodFBhZGRp
bmcoMCkKKyAgICAsIG1fYm90dG9tUGFkZGluZygwKQorICAgICwgbV9sZWZ0UGFkZGluZygwKQog
ewogfQogCi1IaXRUZXN0UmVzdWx0OjpIaXRUZXN0UmVzdWx0KGNvbnN0IEludFBvaW50JiBjZW50
ZXJQb2ludCwgY29uc3QgSW50U2l6ZSYgcGFkZGluZykKK0hpdFRlc3RSZXN1bHQ6OkhpdFRlc3RS
ZXN1bHQoY29uc3QgSW50UG9pbnQmIGNlbnRlclBvaW50LCB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1
bnNpZ25lZCByaWdodFBhZGRpbmcsIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxl
ZnRQYWRkaW5nKQogICAgIDogbV9wb2ludChjZW50ZXJQb2ludCkKICAgICAsIG1faXNPdmVyV2lk
Z2V0KGZhbHNlKQorICAgICwgbV90b3BQYWRkaW5nKHRvcFBhZGRpbmcpCisgICAgLCBtX3JpZ2h0
UGFkZGluZyhyaWdodFBhZGRpbmcpCisgICAgLCBtX2JvdHRvbVBhZGRpbmcoYm90dG9tUGFkZGlu
ZykKKyAgICAsIG1fbGVmdFBhZGRpbmcobGVmdFBhZGRpbmcpCiB7Ci0gICAgLy8gSWYgYSB6ZXJv
IHBhZGRpbmcgaXMgcGFzc2VkIGluIG9yIGVpdGhlciB3aWR0aCBvciBoZWlnaHQgaXMgbmVnYXRp
dmUsIHRoZW4gaXQKLSAgICAvLyBpcyBub3QgYSB2YWxpZCBwYWRkaW5nIGFuZCBoZW5jZSBub3Qg
YSByZWN0IGJhc2VkIGhpdCB0ZXN0LgotICAgIG1faXNSZWN0QmFzZWQgPSAhKHBhZGRpbmcuaXNa
ZXJvKCkgfHwgKHBhZGRpbmcud2lkdGgoKSA8IDAgfHwgcGFkZGluZy5oZWlnaHQoKSA8IDApKTsK
LSAgICBtX3BhZGRpbmcgPSBtX2lzUmVjdEJhc2VkID8gcGFkZGluZyA6IEludFNpemUoKTsKKyAg
ICAvLyBJZiBhbGwgcGFkZGluZyB2YWx1ZXMgcGFzc2VkIGluIGFyZSB6ZXJvIHRoZW4gaXQgaXMg
bm90IGEgcmVjdCBiYXNlZCBoaXQgdGVzdC4KKyAgICBtX2lzUmVjdEJhc2VkID0gdG9wUGFkZGlu
ZyB8fCByaWdodFBhZGRpbmcgfHwgYm90dG9tUGFkZGluZyB8fCBsZWZ0UGFkZGluZzsKKworICAg
IC8vIE1ha2Ugc3VyZSBhbGwgcGFkZGluZyB2YWx1ZXMgYXJlIGNsYW1wZWQgdG8gemVybyBpZiBp
dCBpcyBub3QgYSByZWN0IGhpdCB0ZXN0LgorICAgIGlmICghbV9pc1JlY3RCYXNlZCkKKyAgICAg
ICAgbV90b3BQYWRkaW5nID0gbV9yaWdodFBhZGRpbmcgPSBtX2JvdHRvbVBhZGRpbmcgPSBtX2xl
ZnRQYWRkaW5nID0gMDsKIH0KIAogSGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3VsdChjb25zdCBI
aXRUZXN0UmVzdWx0JiBvdGhlcikKQEAgLTc2LDkgKzg2LDEzIEBAIEhpdFRlc3RSZXN1bHQ6Okhp
dFRlc3RSZXN1bHQoY29uc3QgSGl0VGVzdFJlc3VsdCYgb3RoZXIpCiAgICAgLy8gT25seSBjb3B5
IHRoZSBwYWRkaW5nIGFuZCBMaXN0SGFzaFNldCBpbiBjYXNlIG9mIHJlY3QgaGl0IHRlc3QuCiAg
ICAgLy8gQ29weWluZyB0aGUgbGF0ZXIgaXMgcmF0aGVyIGV4cGVuc2l2ZS4KICAgICBpZiAoKG1f
aXNSZWN0QmFzZWQgPSBvdGhlci5pc1JlY3RCYXNlZFRlc3QoKSkpIHsKLSAgICAgICAgbV9wYWRk
aW5nID0gb3RoZXIucGFkZGluZygpOworICAgICAgICBtX3RvcFBhZGRpbmcgPSBvdGhlci5tX3Rv
cFBhZGRpbmc7CisgICAgICAgIG1fcmlnaHRQYWRkaW5nID0gb3RoZXIubV9yaWdodFBhZGRpbmc7
CisgICAgICAgIG1fYm90dG9tUGFkZGluZyA9IG90aGVyLm1fYm90dG9tUGFkZGluZzsKKyAgICAg
ICAgbV9sZWZ0UGFkZGluZyA9IG90aGVyLm1fbGVmdFBhZGRpbmc7CiAgICAgICAgIG1fcmVjdEJh
c2VkVGVzdFJlc3VsdCA9IG90aGVyLnJlY3RCYXNlZFRlc3RSZXN1bHQoKTsKLSAgICB9CisgICAg
fSBlbHNlCisgICAgICAgIG1fdG9wUGFkZGluZyA9IG1fcmlnaHRQYWRkaW5nID0gbV9ib3R0b21Q
YWRkaW5nID0gbV9sZWZ0UGFkZGluZyA9IDA7CiB9CiAKIEhpdFRlc3RSZXN1bHQ6On5IaXRUZXN0
UmVzdWx0KCkKQEAgLTk3LDkgKzExMSwxMyBAQCBIaXRUZXN0UmVzdWx0JiBIaXRUZXN0UmVzdWx0
OjpvcGVyYXRvcj0oY29uc3QgSGl0VGVzdFJlc3VsdCYgb3RoZXIpCiAgICAgLy8gT25seSBjb3B5
IHRoZSBwYWRkaW5nIGFuZCBMaXN0SGFzaFNldCBpbiBjYXNlIG9mIHJlY3QgaGl0IHRlc3QuCiAg
ICAgLy8gQ29weWluZyB0aGUgbGF0ZXIgaXMgcmF0aGVyIGV4cGVuc2l2ZS4KICAgICBpZiAoKG1f
aXNSZWN0QmFzZWQgPSBvdGhlci5pc1JlY3RCYXNlZFRlc3QoKSkpIHsKLSAgICAgICAgbV9wYWRk
aW5nID0gb3RoZXIucGFkZGluZygpOworICAgICAgICBtX3RvcFBhZGRpbmcgPSBvdGhlci5tX3Rv
cFBhZGRpbmc7CisgICAgICAgIG1fcmlnaHRQYWRkaW5nID0gb3RoZXIubV9yaWdodFBhZGRpbmc7
CisgICAgICAgIG1fYm90dG9tUGFkZGluZyA9IG90aGVyLm1fYm90dG9tUGFkZGluZzsKKyAgICAg
ICAgbV9sZWZ0UGFkZGluZyA9IG90aGVyLm1fbGVmdFBhZGRpbmc7CiAgICAgICAgIG1fcmVjdEJh
c2VkVGVzdFJlc3VsdCA9IG90aGVyLnJlY3RCYXNlZFRlc3RSZXN1bHQoKTsKLSAgICB9CisgICAg
fSBlbHNlCisgICAgICAgIG1fdG9wUGFkZGluZyA9IG1fcmlnaHRQYWRkaW5nID0gbV9ib3R0b21Q
YWRkaW5nID0gbV9sZWZ0UGFkZGluZyA9IDA7CiAgICAgcmV0dXJuICp0aGlzOwogfQogCkBAIC01
MzQsNCArNTUyLDE1IEBAIHZvaWQgSGl0VGVzdFJlc3VsdDo6YXBwZW5kKGNvbnN0IEhpdFRlc3RS
ZXN1bHQmIG90aGVyKQogICAgICAgICBtX3JlY3RCYXNlZFRlc3RSZXN1bHQuYWRkKGl0LT5nZXQo
KSk7CiB9CiAKK0ludFJlY3QgSGl0VGVzdFJlc3VsdDo6cmVjdEZyb21Qb2ludChjb25zdCBJbnRQ
b2ludCYgcG9pbnQsIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFkZGluZywg
dW5zaWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcpCit7CisgICAgSW50
UG9pbnQgcmVhbFBvaW50KHBvaW50KTsKKyAgICByZWFsUG9pbnQgLT0gSW50U2l6ZShsZWZ0UGFk
ZGluZywgdG9wUGFkZGluZyk7CisKKyAgICBJbnRTaXplIHJlYWxQYWRkaW5nKGxlZnRQYWRkaW5n
ICsgcmlnaHRQYWRkaW5nLCB0b3BQYWRkaW5nICsgYm90dG9tUGFkZGluZyk7CisgICAgcmVhbFBh
ZGRpbmcgKz0gSW50U2l6ZSgxLCAxKTsKKworICAgIHJldHVybiBJbnRSZWN0KHJlYWxQb2ludCwg
cmVhbFBhZGRpbmcpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmggYi9XZWJDb3JlL3JlbmRlcmluZy9IaXRU
ZXN0UmVzdWx0LmgKaW5kZXggMzFlODhmMS4uMTMwNGUyMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9y
ZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RS
ZXN1bHQuaApAQCAtNDQsOCArNDQsOCBAQCBjbGFzcyBTY3JvbGxiYXI7CiBjbGFzcyBIaXRUZXN0
UmVzdWx0IHsKIHB1YmxpYzoKICAgICBIaXRUZXN0UmVzdWx0KGNvbnN0IEludFBvaW50Jik7Ci0g
ICAgLy8gUGFzcyBhIG5vbi1uZWdhdGl2ZSBJbnRTaXplIHZhbHVlIGFzIHBhZGRpbmcgdG8gcGVy
Zm9ybSBhIHJlY3QtYmFzZWQgaGl0IHRlc3QuCi0gICAgSGl0VGVzdFJlc3VsdChjb25zdCBJbnRQ
b2ludCYgY2VudGVyUG9pbnQsIGNvbnN0IEludFNpemUmIHBhZGRpbmcpOworICAgIC8vIFBhc3Mg
bm9uLW5lZ2F0aXZlIHBhZGRpbmcgdmFsdWVzIHRvIHBlcmZvcm0gYSByZWN0LWJhc2VkIGhpdCB0
ZXN0LgorICAgIEhpdFRlc3RSZXN1bHQoY29uc3QgSW50UG9pbnQmIGNlbnRlclBvaW50LCB1bnNp
Z25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcsIHVuc2lnbmVkIGJvdHRvbVBh
ZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nKTsKICAgICBIaXRUZXN0UmVzdWx0KGNvbnN0IEhp
dFRlc3RSZXN1bHQmKTsKICAgICB+SGl0VGVzdFJlc3VsdCgpOwogICAgIEhpdFRlc3RSZXN1bHQm
IG9wZXJhdG9yPShjb25zdCBIaXRUZXN0UmVzdWx0Jik7CkBAIC0xMDAsOSArMTAwLDEyIEBAIHB1
YmxpYzoKICAgICBib29sIGlzUmVjdEJhc2VkVGVzdCgpIGNvbnN0IHsgcmV0dXJuIG1faXNSZWN0
QmFzZWQ7IH0KICAgICBJbnRSZWN0IHJlY3RGcm9tUG9pbnQoaW50IHgsIGludCB5KSBjb25zdDsK
ICAgICBJbnRSZWN0IHJlY3RGcm9tUG9pbnQoY29uc3QgSW50UG9pbnQmKSBjb25zdDsKLSAgICBJ
bnRTaXplIHBhZGRpbmcoKSBjb25zdCB7IHJldHVybiBtX3BhZGRpbmc7IH0KLSAgICBpbnQgcGFk
ZGluZ1dpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9wYWRkaW5nLndpZHRoKCk7IH0KLSAgICBpbnQg
cGFkZGluZ0hlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFkZGluZy5oZWlnaHQoKTsgfQorICAg
IHN0YXRpYyBJbnRSZWN0IHJlY3RGcm9tUG9pbnQoY29uc3QgSW50UG9pbnQmLCB1bnNpZ25lZCB0
b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcsIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcs
IHVuc2lnbmVkIGxlZnRQYWRkaW5nKTsKKyAgICBpbnQgdG9wUGFkZGluZygpIGNvbnN0IHsgcmV0
dXJuIG1fdG9wUGFkZGluZzsgfQorICAgIGludCByaWdodFBhZGRpbmcoKSBjb25zdCB7IHJldHVy
biBtX3JpZ2h0UGFkZGluZzsgfQorICAgIGludCBib3R0b21QYWRkaW5nKCkgY29uc3QgeyByZXR1
cm4gbV9ib3R0b21QYWRkaW5nOyB9CisgICAgaW50IGxlZnRQYWRkaW5nKCkgY29uc3QgeyByZXR1
cm4gbV9sZWZ0UGFkZGluZzsgfQorCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIGl0IGlzIHJlY3Qt
YmFzZWQgaGl0IHRlc3QgYW5kIG5lZWRzIHRvIGNvbnRpbnVlIHVudGlsIHRoZSByZWN0IGlzIGZ1
bGx5CiAgICAgLy8gZW5jbG9zZWQgYnkgdGhlIGJvdW5kYXJpZXMgb2YgYSBub2RlLgogICAgIGJv
b2wgYWRkTm9kZVRvUmVjdEJhc2VkVGVzdFJlc3VsdChOb2RlKiwgaW50IHgsIGludCB5LCBjb25z
dCBJbnRSZWN0JiByZWN0ID0gSW50UmVjdCgpKTsKQEAgLTEyNCwzNCArMTI3LDI2IEBAIHByaXZh
dGU6CiAgICAgUmVmUHRyPFNjcm9sbGJhcj4gbV9zY3JvbGxiYXI7CiAgICAgYm9vbCBtX2lzT3Zl
cldpZGdldDsgLy8gUmV0dXJucyB0cnVlIGlmIHdlIGFyZSBvdmVyIGEgd2lkZ2V0IChhbmQgbm90
IGluIHRoZSBib3JkZXIvcGFkZGluZyBhcmVhIG9mIGEgUmVuZGVyV2lkZ2V0IGZvciBleGFtcGxl
KS4KICAgICBib29sIG1faXNSZWN0QmFzZWQ7Ci0gICAgSW50U2l6ZSBtX3BhZGRpbmc7CisgICAg
aW50IG1fdG9wUGFkZGluZzsKKyAgICBpbnQgbV9yaWdodFBhZGRpbmc7CisgICAgaW50IG1fYm90
dG9tUGFkZGluZzsKKyAgICBpbnQgbV9sZWZ0UGFkZGluZzsKICAgICBMaXN0SGFzaFNldDxSZWZQ
dHI8Tm9kZT4gPiBtX3JlY3RCYXNlZFRlc3RSZXN1bHQ7CiB9OwogCiBpbmxpbmUgSW50UmVjdCBI
aXRUZXN0UmVzdWx0OjpyZWN0RnJvbVBvaW50KGludCB4LCBpbnQgeSkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gcmVjdEZyb21Qb2ludChJbnRQb2ludCh4LCB5KSk7CisgICAgcmV0dXJuIHJlY3RGcm9t
UG9pbnQoSW50UG9pbnQoeCwgeSksIG1fdG9wUGFkZGluZywgbV9yaWdodFBhZGRpbmcsIG1fYm90
dG9tUGFkZGluZywgbV9sZWZ0UGFkZGluZyk7CiB9CiAKIC8vIEZvcm11bGE6Ci0vLyB4ID0gcC54
KCkgLSBwYWRkaW5nLndpZHRoKCkKLS8vIHkgPSBwLnkoKSAtIHBhZGRpbmcuaGVpZ2h0KCkKLS8v
IHdpZHRoID0gMiAqIHBhZGRpbmcud2lkdGgoKSArIDEKLS8vIGhlaWdodCA9IDIgKiBtX3BhZGRp
bmcuaGVpZ2h0KCkgKyAxCisvLyB4ID0gcC54KCkgLSByaWdodFBhZGRpbmcKKy8vIHkgPSBwLnko
KSAtIHRvcFBhZGRpbmcKKy8vIHdpZHRoID0gbGVmdFBhZGRpbmcgKyByaWdodFBhZGRpbmcgKyAx
CisvLyBoZWlnaHQgPSB0b3BQYWRkaW5nICsgYm90dG9tUGFkZGluZyArIDEKIGlubGluZSBJbnRS
ZWN0IEhpdFRlc3RSZXN1bHQ6OnJlY3RGcm9tUG9pbnQoY29uc3QgSW50UG9pbnQmIHBvaW50KSBj
b25zdAogewotICAgIEludFBvaW50IHJlYWxQb2ludChwb2ludCk7Ci0gICAgSW50U2l6ZSByZWFs
UGFkZGluZyhtX3BhZGRpbmcpOwotCi0gICAgLy8gUmVhbCBJbnRQb2ludCBmb3IgdGhlIHJlY3Qu
Ci0gICAgcmVhbFBhZGRpbmcuY2xhbXBOZWdhdGl2ZVRvWmVybygpOwotICAgIHJlYWxQb2ludCAt
PSByZWFsUGFkZGluZzsKLQotICAgIC8vIFJlYWwgSW50U2l6ZSBmb3IgdGhlIHJlY3QuCi0gICAg
cmVhbFBhZGRpbmcuc2NhbGUoMik7Ci0gICAgcmVhbFBhZGRpbmcgKz0gSW50U2l6ZSgxLCAxKTsK
LQotICAgIHJldHVybiBJbnRSZWN0KHJlYWxQb2ludCwgcmVhbFBhZGRpbmcpOworICAgIHJldHVy
biByZWN0RnJvbVBvaW50KHBvaW50LCBtX3RvcFBhZGRpbmcsIG1fcmlnaHRQYWRkaW5nLCBtX2Jv
dHRvbVBhZGRpbmcsIG1fbGVmdFBhZGRpbmcpOwogfQogCiBTdHJpbmcgZGlzcGxheVN0cmluZyhj
b25zdCBTdHJpbmcmLCBjb25zdCBOb2RlKik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5k
ZXggZjc2MTFiNi4uZTFlZGY1ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW1hZ2UuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcApAQCAtMzU5
LDcgKzM1OSw3IEBAIEhUTUxNYXBFbGVtZW50KiBSZW5kZXJJbWFnZTo6aW1hZ2VNYXAoKSBjb25z
dAogCiBib29sIFJlbmRlckltYWdlOjpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYg
cmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBpbnQgeCwgaW50IHksIGludCB0eCwgaW50
IHR5LCBIaXRUZXN0QWN0aW9uIGhpdFRlc3RBY3Rpb24pCiB7Ci0gICAgSGl0VGVzdFJlc3VsdCB0
ZW1wUmVzdWx0KHJlc3VsdC5wb2ludCgpLCByZXN1bHQucGFkZGluZygpKTsKKyAgICBIaXRUZXN0
UmVzdWx0IHRlbXBSZXN1bHQocmVzdWx0LnBvaW50KCksIHJlc3VsdC50b3BQYWRkaW5nKCksIHJl
c3VsdC5yaWdodFBhZGRpbmcoKSwgcmVzdWx0LmJvdHRvbVBhZGRpbmcoKSwgcmVzdWx0LmxlZnRQ
YWRkaW5nKCkpOwogICAgIGJvb2wgaW5zaWRlID0gUmVuZGVyUmVwbGFjZWQ6Om5vZGVBdFBvaW50
KHJlcXVlc3QsIHRlbXBSZXN1bHQsIHgsIHksIHR4LCB0eSwgaGl0VGVzdEFjdGlvbik7CiAKICAg
ICBpZiAodGVtcFJlc3VsdC5pbm5lck5vZGUoKSAmJiBub2RlKCkpIHsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmNwcAppbmRleCAxNGUyYWY4Li4xYjRiMWRhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwCkBAIC0yOTAxLDcgKzI5MDEsNyBAQCBSZW5kZXJMYXllciogUmVuZGVyTGF5ZXI6Omhp
dFRlc3RMYXllcihSZW5kZXJMYXllciogcm9vdExheWVyLCBSZW5kZXJMYXllciogY29udAogICAg
IC8vIE5leHQgd2Ugd2FudCB0byBzZWUgaWYgdGhlIG1vdXNlIHBvcyBpcyBpbnNpZGUgdGhlIGNo
aWxkIFJlbmRlck9iamVjdHMgb2YgdGhlIGxheWVyLgogICAgIGlmIChmZ1JlY3QuaW50ZXJzZWN0
cyhoaXRUZXN0QXJlYSkgJiYgaXNTZWxmUGFpbnRpbmdMYXllcigpKSB7CiAgICAgICAgIC8vIEhp
dCB0ZXN0IHdpdGggYSB0ZW1wb3JhcnkgSGl0VGVzdFJlc3VsdCwgYmVjYXVzZSB3ZSBvbmx5IHdh
bnQgdG8gY29tbWl0IHRvICdyZXN1bHQnIGlmIHdlIGtub3cgd2UncmUgZnJvbnRtb3N0LgotICAg
ICAgICBIaXRUZXN0UmVzdWx0IHRlbXBSZXN1bHQocmVzdWx0LnBvaW50KCksIHJlc3VsdC5wYWRk
aW5nKCkpOworICAgICAgICBIaXRUZXN0UmVzdWx0IHRlbXBSZXN1bHQocmVzdWx0LnBvaW50KCks
IHJlc3VsdC50b3BQYWRkaW5nKCksIHJlc3VsdC5yaWdodFBhZGRpbmcoKSwgcmVzdWx0LmJvdHRv
bVBhZGRpbmcoKSwgcmVzdWx0LmxlZnRQYWRkaW5nKCkpOwogICAgICAgICBpZiAoaGl0VGVzdENv
bnRlbnRzKHJlcXVlc3QsIHRlbXBSZXN1bHQsIGxheWVyQm91bmRzLCBoaXRUZXN0UG9pbnQsIEhp
dFRlc3REZXNjZW5kYW50cykgJiYKICAgICAgICAgICAgIGlzSGl0Q2FuZGlkYXRlKHRoaXMsIGZh
bHNlLCB6T2Zmc2V0Rm9yQ29udGVudHNQdHIsIHVuZmxhdHRlbmVkVHJhbnNmb3JtU3RhdGUuZ2V0
KCkpKSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0LmlzUmVjdEJhc2VkVGVzdCgpKQpAQCAtMjkz
MCw3ICsyOTMwLDcgQEAgUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjpoaXRUZXN0TGF5ZXIoUmVu
ZGVyTGF5ZXIqIHJvb3RMYXllciwgUmVuZGVyTGF5ZXIqIGNvbnQKICAgICAgICAgcmV0dXJuIGNh
bmRpZGF0ZUxheWVyOwogCiAgICAgaWYgKGJnUmVjdC5pbnRlcnNlY3RzKGhpdFRlc3RBcmVhKSAm
JiBpc1NlbGZQYWludGluZ0xheWVyKCkpIHsKLSAgICAgICAgSGl0VGVzdFJlc3VsdCB0ZW1wUmVz
dWx0KHJlc3VsdC5wb2ludCgpLCByZXN1bHQucGFkZGluZygpKTsKKyAgICAgICAgSGl0VGVzdFJl
c3VsdCB0ZW1wUmVzdWx0KHJlc3VsdC5wb2ludCgpLCByZXN1bHQudG9wUGFkZGluZygpLCByZXN1
bHQucmlnaHRQYWRkaW5nKCksIHJlc3VsdC5ib3R0b21QYWRkaW5nKCksIHJlc3VsdC5sZWZ0UGFk
ZGluZygpKTsKICAgICAgICAgaWYgKGhpdFRlc3RDb250ZW50cyhyZXF1ZXN0LCB0ZW1wUmVzdWx0
LCBsYXllckJvdW5kcywgaGl0VGVzdFBvaW50LCBIaXRUZXN0U2VsZikgJiYKICAgICAgICAgICAg
IGlzSGl0Q2FuZGlkYXRlKHRoaXMsIGZhbHNlLCB6T2Zmc2V0Rm9yQ29udGVudHNQdHIsIHVuZmxh
dHRlbmVkVHJhbnNmb3JtU3RhdGUuZ2V0KCkpKSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0Lmlz
UmVjdEJhc2VkVGVzdCgpKQpAQCAtMjk4Nyw3ICsyOTg3LDcgQEAgUmVuZGVyTGF5ZXIqIFJlbmRl
ckxheWVyOjpoaXRUZXN0TGlzdChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbGlzdCwgUmVuZGVyTGF5
ZXIqIHIKICAgICBmb3IgKGludCBpID0gbGlzdC0+c2l6ZSgpIC0gMTsgaSA+PSAwOyAtLWkpIHsK
ICAgICAgICAgUmVuZGVyTGF5ZXIqIGNoaWxkTGF5ZXIgPSBsaXN0LT5hdChpKTsKICAgICAgICAg
UmVuZGVyTGF5ZXIqIGhpdExheWVyID0gMDsKLSAgICAgICAgSGl0VGVzdFJlc3VsdCB0ZW1wUmVz
dWx0KHJlc3VsdC5wb2ludCgpLCByZXN1bHQucGFkZGluZygpKTsKKyAgICAgICAgSGl0VGVzdFJl
c3VsdCB0ZW1wUmVzdWx0KHJlc3VsdC5wb2ludCgpLCByZXN1bHQudG9wUGFkZGluZygpLCByZXN1
bHQucmlnaHRQYWRkaW5nKCksIHJlc3VsdC5ib3R0b21QYWRkaW5nKCksIHJlc3VsdC5sZWZ0UGFk
ZGluZygpKTsKICAgICAgICAgaWYgKGNoaWxkTGF5ZXItPmlzUGFnaW5hdGVkKCkpCiAgICAgICAg
ICAgICBoaXRMYXllciA9IGhpdFRlc3RQYWdpbmF0ZWRDaGlsZExheWVyKGNoaWxkTGF5ZXIsIHJv
b3RMYXllciwgcmVxdWVzdCwgdGVtcFJlc3VsdCwgaGl0VGVzdFJlY3QsIGhpdFRlc3RQb2ludCwg
dHJhbnNmb3JtU3RhdGUsIHpPZmZzZXRGb3JEZXNjZW5kYW50cyk7CiAgICAgICAgIGVsc2UKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCb3hMaXN0LmNwcCBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCb3hMaXN0LmNwcAppbmRleCA0NWU2NmViLi43NjBkMmVh
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQm94TGlzdC5jcHAKKysr
IGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJveExpc3QuY3BwCkBAIC0yNDYsMTYgKzI0
NiwxNiBAQCBib29sIFJlbmRlckxpbmVCb3hMaXN0OjpoaXRUZXN0KFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiByZW5kZXJlciwgY29uc3QgSGl0VGVzdFJlcQogICAgIC8vIGNvbnRhaW4gdGhlIHBvaW50
LiAgVGhpcyBpcyBhIHF1aWNrIHNob3J0LWNpcmN1aXQgdGhhdCB3ZSBjYW4gdGFrZSB0byBhdm9p
ZCB3YWxraW5nIGFueSBsaW5lcy4KICAgICAvLyBGSVhNRTogVGhpcyBjaGVjayBpcyBmbGF3ZWQg
aW4gdGhlIGZvbGxvd2luZyBleHRyZW1lbHkgb2JzY3VyZSB3YXk6CiAgICAgLy8gaWYgc29tZSBs
aW5lIGluIHRoZSBtaWRkbGUgaGFzIGEgaHVnZSBvdmVyZmxvdywgaXQgbWlnaHQgYWN0dWFsbHkg
ZXh0ZW5kIGJlbG93IHRoZSBsYXN0IGxpbmUuCi0gICAgaWYgKHkgLSByZXN1bHQucGFkZGluZ0hl
aWdodCgpID49IHR5ICsgbGFzdExpbmVCb3goKS0+cm9vdCgpLT5ib3R0b21WaXNpYmxlT3ZlcmZs
b3coKQotICAgICB8fCB5ICsgcmVzdWx0LnBhZGRpbmdIZWlnaHQoKSA8IHR5ICsgZmlyc3RMaW5l
Qm94KCktPnJvb3QoKS0+dG9wVmlzaWJsZU92ZXJmbG93KCkpCisgICAgaWYgKHkgLSByZXN1bHQu
dG9wUGFkZGluZygpID49IHR5ICsgbGFzdExpbmVCb3goKS0+cm9vdCgpLT5ib3R0b21WaXNpYmxl
T3ZlcmZsb3coKQorICAgICB8fCB5ICsgcmVzdWx0LmJvdHRvbVBhZGRpbmcoKSA8IHR5ICsgZmly
c3RMaW5lQm94KCktPnJvb3QoKS0+dG9wVmlzaWJsZU92ZXJmbG93KCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIC8vIFNlZSBpZiBvdXIgcm9vdCBsaW5lcyBjb250YWluIHRoZSBwb2lu
dC4gIElmIHNvLCB0aGVuIHdlIGhpdCB0ZXN0CiAgICAgLy8gdGhlbSBmdXJ0aGVyLiAgTm90ZSB0
aGF0IGJveGVzIGNhbiBlYXNpbHkgb3ZlcmxhcCwgc28gd2UgY2FuJ3QgbWFrZSBhbnkgYXNzdW1w
dGlvbnMKICAgICAvLyBiYXNlZCBvZmYgcG9zaXRpb25zIG9mIG91ciBmaXJzdCBsaW5lIGJveCBv
ciBvdXIgbGFzdCBsaW5lIGJveC4KICAgICBmb3IgKElubGluZUZsb3dCb3gqIGN1cnIgPSBsYXN0
TGluZUJveCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+cHJldkxpbmVCb3goKSkgewotICAgICAgICBp
ZiAoeSArIHJlc3VsdC5wYWRkaW5nSGVpZ2h0KCkgPj0gdHkgKyBjdXJyLT5yb290KCktPnRvcFZp
c2libGVPdmVyZmxvdygpCi0gICAgICAgICAmJiB5IC0gcmVzdWx0LnBhZGRpbmdIZWlnaHQoKSA8
IHR5ICsgY3Vyci0+cm9vdCgpLT5ib3R0b21WaXNpYmxlT3ZlcmZsb3coKSkgeworICAgICAgICBp
ZiAoeSArIHJlc3VsdC5ib3R0b21QYWRkaW5nKCkgPj0gdHkgKyBjdXJyLT5yb290KCktPnRvcFZp
c2libGVPdmVyZmxvdygpCisgICAgICAgICAmJiB5IC0gcmVzdWx0LnRvcFBhZGRpbmcoKSA8IHR5
ICsgY3Vyci0+cm9vdCgpLT5ib3R0b21WaXNpYmxlT3ZlcmZsb3coKSkgewogICAgICAgICAgICAg
Ym9vbCBpbnNpZGUgPSBjdXJyLT5ub2RlQXRQb2ludChyZXF1ZXN0LCByZXN1bHQsIHgsIHksIHR4
LCB0eSk7CiAgICAgICAgICAgICBpZiAoaW5zaWRlKSB7CiAgICAgICAgICAgICAgICAgcmVuZGVy
ZXItPnVwZGF0ZUhpdFRlc3RSZXN1bHQocmVzdWx0LCBJbnRQb2ludCh4IC0gdHgsIHkgLSB0eSkp
OwotLSAKMS42LjQuMgoK
</data>
<flag name="commit-queue"
          id="58201"
          type_id="3"
          status="-"
          setter="tonikitoo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68683</attachid>
            <date>2010-09-24 08:23:09 -0700</date>
            <delta_ts>2010-09-26 18:27:15 -0700</delta_ts>
            <desc>patch v2 - addressed kenneth&apos;s comments.</desc>
            <filename>0001-Make-Document-nodesFromRect-more-flexible.patch</filename>
            <type>text/plain</type>
            <size>35772</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSA5NmE3Zjg2MTc3NGYyMjMzY2MxMWJjZDRmYjEzYmY0N2YxZDI2MmU4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4K
RGF0ZTogVGh1LCAyMyBTZXAgMjAxMCAyMzo1MDoyMyAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIE1h
a2UgRG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QgbW9yZSBmbGV4aWJsZQogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2MzM2CgpQYXRjaCBieSBBbnRvbmlvIEdvbWVzIDxh
Z29tZXNAcmltLmNvbT4gb24gMjAxMC0wOS0yMwpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
ClRoZSBwYXRjaCBjaGFuZ2VzIHRoZSBBUEkgZm9yIHRoZSBEb2N1bWVudDo6bm9kZXNGcm9tUmVj
dCgpIG1ldGhvZCBhcyBmb2xsb3dzOgoKZnJvbQoKLSBSZWZQdGY8Tm9kZUxpc3Q+IG5vZGVzRnJv
bVJlY3QoaW50IHgsIGludCB5LCB1bnNpZ25lZCBob3Jpem9udGFsUGFkZGluZywgdW5zaWduZWQg
dmVydGljYWxQYWRkaW5nLCBib29sIGlnbm9yZUNsaXBwaW5nKQoKdG8KCi0gUmVmUHRmPE5vZGVM
aXN0PiBub2Rlc0Zyb21SZWN0KGludCB4LCBpbnQgeSwgdW5zaWduZWQgdG9wUGFkZGluZywgdW5z
aWduZWQgcmlnaHRQYWRkaW5nLCB1bnNpZ25lZCBib3R0b21QYWRkaW5nLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsZWZ0UGFkZGluZywgYm9vbCBpZ25vcmVDbGlw
cGluZykKClByZXZpb3VzbHkgdGhlIG1ldGhvZCB3YXMgcmVjZWl2aW5nIGFzIHBhcmFtZXRlciBo
b3Jpem9udGFsIGFuZCB2ZXJ0aWNhbCBwYWRkaW5nIHZhbHVlcy4KSW4gcHJhY3RpY2UsIHRoZSBo
b3Jpem9udGFsIHBhZGRpbmcgd2FzIGJlaW5nIHVzZWQgdG8gZXhwYW5kIGEgZ2l2ZW4gY2VudGVy
IHBvaW50IGluIGJvdGgKcmlnaHQgYW5kIGxlZnQgZGlyZWN0aW9ucywgd2hpbGUgdmVydGljYWwg
cGFkZGluZyB3YXMgZXhwYW5kaW5nIGl0IHRvIHRoZSB0b3AgYW5kIGJvdHRvbSBkaXJlY3Rpb25z
LgoKQWx0aG91Z2ggdGhpcyBkZXNpZ24gbWFrZXMgaXQgcG9zc2libGUgdG8gaW1wcm92ZSB0aGUg
dG91Y2ggZXhwZXJpZW5jZSBvbiBtb2JpbGUgZGV2aWNlcwooRG9jdW1lbnQ6Om5vZGVzRnJvbVJl
Y3QgZXhwb3NlcyB0aGUgcmVjdCBiYXNlZCBoaXQgdGVzdGluZyBzeXN0ZW0pLCBlbXBpcmljYWwg
ZXhwZXJpbWVudHMKc2hvd2VkIHRoYXQsIHNwZWNpYWxseSBpbiBjYXBhY2l0aXZlIHRvdWNoIHNj
cmVlbnMsIHVzZXJzIHRlbmQgdG8gdGFwIGJlbG93IGVsZW1lbnRzLiBTbwpmb3IgZXZlbiBtb3Jl
IGFjY3VyYXRlIHJlc3VsdHMgKHdoaWNoIG1lYW5zIGhlcmUgdGhlIHBvc3NpYmlsaXR5IG9mIHBs
ZWFzYW50IHRhcHBpbmcgZXhwZXJpZW5jZSksCml0IG1ha2VzIHNlbnNlIHRvIHVzZSBhIHJlZ2lv
biB0aGF0IGlzIG9mZnNldCBtb3JlIGFib3ZlIHRoZSB0b3VjaCBwb2ludCwgZmF2b3JpbmcgZWxl
bWVudHMKYWJvdmUgdGhlIHRvdWNoIHBvaW50LgoKVGhlIHBhdGNoIGJhc2ljYWxseSBpbXBsZW1l
bnRzIHRoYXQsIGluY3JlYXNpbmcgdGhlIEFQSSBmbGV4aWJsZSBhbmQgcG93ZXIgYnkgbWFraW5n
IGl0IHBvc3NpYmxlCnRvIHNwZWNpZnkgZGlmZmVyZW50IHBhZGRpbmcgdmFsdWVzIGZvciBlYWNo
IGRpcmVjdGlvbiBpbiBhIGdpdmVuIG9yaWVudGF0aW9uLgoKQ2hhbmdlcyB3ZXJlIG1hZGUgYWNj
b3JkaW5nbHkgdG8gdGhlIEhpdFRlc3RSZXN1bHQsIFJlbmRlckxheWVyLCBSZW5kZXJJbWFnZSBh
bmQgUmVuZGVyTGluZUJveExpc3QKY2xhc3Nlcy4KCldlYkNvcmU6CgoqIFdlYkNvcmUuZXhwLmlu
OgoqIGRvbS9Eb2N1bWVudC5jcHA6CihXZWJDb3JlOjpEb2N1bWVudDo6bm9kZXNGcm9tUmVjdCk6
CiogZG9tL0RvY3VtZW50Lmg6CiogZG9tL0RvY3VtZW50LmlkbDoKKiBwYWdlL0V2ZW50SGFuZGxl
ci5jcHA6CihXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhpdFRlc3RSZXN1bHRBdFBvaW50KTogRm9y
IHNpbXBsaWNpdHksIEkgZGlkIG5vdCBjaGFuZ2UgdGhlIHNpZ25hdHVyZQogICAgYnV0IHRoZSB3
YXkgdGhlIHBhZGRpbmcgdmFsdWUgcGFzc2VkIGluIGFzIHBhcmFtZXRlciBpcyBiZWluZyB1c2Vk
IHRvIGNvbnN0cnVjdCBhIEhpdFRlc3RSZXN1bHQuCiogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQu
Y3BwOiBDaGFuZ2VkIHRoZSByZWN0LWJhc2VkIGJpdHMgZnJvbSB1c2luZyBJbnRTaXplIChwYWRk
aW5nKSB0byBzZXBhcmF0ZWQgcGFkZGluZ3MKICAgIGZvciBlYWNoIGRpcmVjdGlvbi4KKFdlYkNv
cmU6OkhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQpOiBEaXR0by4KKFdlYkNvcmU6OkhpdFRl
c3RSZXN1bHQ6Om9wZXJhdG9yPSk6IERpdHRvLgooV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6cmVj
dEZyb21Qb2ludCk6IERpdHRvbi4KKiByZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oOgooV2ViQ29y
ZTo6SGl0VGVzdFJlc3VsdDo6dG9wUGFkZGluZyk6IGdldHRlciBmb3IgdGhlIHRvcCBwYWRkaW5n
LgooV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6cmlnaHRQYWRkaW5nKTogZ2V0dGVyIGZvciB0aGUg
cmlnaHQgcGFkZGluZy4KKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OmJvdHRvbVBhZGRpbmcpOiBn
ZXR0ZXIgZm9yIHRoZSBib3R0b20gcGFkZGluZy4KKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6Omxl
ZnRQYWRkaW5nKTogZ2V0dGVyIGZvciB0aGUgbGVmdCBwYWRkaW5nLgooV2ViQ29yZTo6SGl0VGVz
dFJlc3VsdDo6cmVjdEZyb21Qb2ludCk6IEFkZGVkIGEgc3RhdGljIG1ldGhvZCB0aGF0IGdpdmVu
IGEgY2VudGVyIHBvaW50IGFuZCBwYWRkaW5nIHZhbHVlcyBmb3IKICAgIGVhY2ggZGlyZWN0aW9u
LCByZXR1cm5zIHRoZSByZWN0IHRoYXQgaXMgZ29pbmcgdG8gYmUgdXNlZCBpbiBXZWJDb3JlJ3Mg
aGl0IHRlc3RpbmcgcHJvY2Vzc2luZy4KKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOiBDaGFu
Z2VkIHRoZSByZWN0LWJhc2VkIGJpdHMgZnJvbSB1c2luZyBJbnRTaXplIChwYWRkaW5nKSB0byBz
ZXBhcmF0ZWQgcGFkZGluZ3MgZm9yIGVhY2ggZGlyZWN0aW9uLgooV2ViQ29yZTo6UmVuZGVySW1h
Z2U6Om5vZGVBdFBvaW50KTogRGl0dG8uCiogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDogRGl0
dG8uCihXZWJDb3JlOjpSZW5kZXJMYXllcjo6aGl0VGVzdExheWVyKTogRGl0dG8uCihXZWJDb3Jl
OjpSZW5kZXJMYXllcjo6aGl0VGVzdExpc3QpOiBEaXR0by4KKiByZW5kZXJpbmcvUmVuZGVyTGlu
ZUJveExpc3QuY3BwOiBEaXR0by4KKFdlYkNvcmU6OlJlbmRlckxpbmVCb3hMaXN0OjpoaXRUZXN0
KTogRGl0dG8uCgpMYXlvdXRUZXN0czoKCiogZmFzdC9kb20vbm9kZXNGcm9tUmVjdC1iYXNpYy1l
eHBlY3RlZC50eHQ6CiogZmFzdC9kb20vbm9kZXNGcm9tUmVjdC1iYXNpYy5odG1sOgoqIGZhc3Qv
ZG9tL3Jlc291cmNlcy9ub2Rlc0Zyb21SZWN0LmpzOgooY2hlY2spOgotLS0KIExheW91dFRlc3Rz
L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxNCArKysrCiAuLi4v
ZmFzdC9kb20vbm9kZXNGcm9tUmVjdC1iYXNpYy1leHBlY3RlZC50eHQgICAgICB8ICAgNDQgKysr
KysrKy0tLS0tLS0KIExheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3QtYmFzaWMuaHRt
bCAgICAgIHwgICA0NCArKysrKysrLS0tLS0tLQogTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVzb3Vy
Y2VzL25vZGVzRnJvbVJlY3QuanMgICAgfCAgIDIyICsrKystLS0KIFdlYkNvcmUvQ2hhbmdlTG9n
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA2NCArKysrKysrKysrKysrKysr
KysrKwogV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCAgICAxICsKIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgICAgOSArLS0KIFdlYkNvcmUvZG9tL0RvY3VtZW50LmggICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgICAxMCArKystCiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgIDYgKy0KIFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
ICAgICAgICAgICAgICAgICAgICAgIHwgICAgNCArLQogV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVz
dFJlc3VsdC5jcHAgICAgICAgICAgICAgICAgfCAgIDQ4ICsrKysrKysrKysrKy0tLQogV2ViQ29y
ZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oICAgICAgICAgICAgICAgICAgfCAgIDQxICsrKysr
Ky0tLS0tLS0KIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCAgICAgICAgICAgICAg
ICAgIHwgICAgMiArLQogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwICAgICAgICAg
ICAgICAgICAgfCAgICA2ICstCiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQm94TGlzdC5j
cHAgICAgICAgICAgICB8ICAgIDggKy0KIDE1IGZpbGVzIGNoYW5nZWQsIDIyMCBpbnNlcnRpb25z
KCspLCAxMDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDljN2FlYTMuLjNkNTY4N2YgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNyBAQAorMjAxMC0wOS0yMyAgQW50b25pbyBHb21lcyAgPGFnb21lc0ByaW0uY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2Ug
RG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QgbW9yZSBmbGV4aWJsZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDYzMzYKKworICAgICAgICBUZXN0cyBiYXNp
Y2FsbHkgYWRqdXN0ZWQgdG8gdGhlIG5ldyBBUEkuCisKKyAgICAgICAgKiBmYXN0L2RvbS9ub2Rl
c0Zyb21SZWN0LWJhc2ljLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9ub2Rlc0Zy
b21SZWN0LWJhc2ljLmh0bWw6CisgICAgICAgICogZmFzdC9kb20vcmVzb3VyY2VzL25vZGVzRnJv
bVJlY3QuanM6CisgICAgICAgIChjaGVjayk6CisKIDIwMTAtMDktMjMgIFNpbW9uIEZyYXNlciAg
PHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5z
dGVpbi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3QtYmFz
aWMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9tUmVjdC1iYXNp
Yy1leHBlY3RlZC50eHQKaW5kZXggODlmMWVhMy4uNDU5MTVmZSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9tUmVjdC1iYXNpYy1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9tUmVjdC1iYXNpYy1leHBlY3RlZC50eHQKQEAgLTEs
MjYgKzEsMjYgQEAKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01Q
TEVURQotUEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdCBbNTMsNzFdLCBbMCww
XQotUEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdCBbNTMsNzFdLCBbMTAsMF0K
LVBBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QgWzUzLDcxXSwgWzAsMTBdCi1Q
QVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0IFs1Myw3MV0sIFsxMCwxMF0KLVBB
U1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QgWzE1MiwxMDVdLCBbMCwxMF0KLVBB
U1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QgWzE1MiwxMDVdLCBbMTAsMF0KLVBB
U1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QgWzE1MiwxMDVdLCBbMTAsMTBdCi1Q
QVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0IFsxNTMsMTkzXSwgWzAsMF0KLVBB
U1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QgWzE1MywxOTNdLCBbMjAsMF0KLVBB
U1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QgWzE1MywxOTNdLCBbMCwyMF0KLVBB
U1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QgWzE0NCwxODNdLCBbMCwwXQotUEFT
UyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdCBbMTQ0LDE4M10sIFswLDFdCi1QQVNT
IEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0IFsxNDQsMTgzXSwgWzEsMF0KLVBBU1Mg
QWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QgWzE0NCwxODNdLCBbMSwxXQotUEFTUyBB
bGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdCBbNzcsMjQwXSwgWzAsMF0KLVBBU1MgQWxs
IGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QgWzc3LDI0MF0sIFsxMCwwXQotUEFTUyBBbGwg
Y29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdCBbNzcsMjQwXSwgWzAsMTBdCi1QQVNTIEFsbCBj
b3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0IFs3NywyNDBdLCBbMTAsMTBdCi1QQVNTIEFsbCBj
b3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0IFszOSwyMTJdLCBbMCwwXQotUEFTUyBBbGwgY29y
cmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdCBbMzksMjEyXSwgWzAsMTBdCi1QQVNTIEFsbCBjb3Jy
ZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0IFszOSwyMTJdLCBbMTAsMF0KLVBBU1MgQWxsIGNvcnJl
Y3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QgWzM5LDIxMl0sIFsxMCwxMF0KK1BBU1MgQWxsIGNvcnJl
Y3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QgWzUzLDcxXSwgWzAsMCwwLDBdCitQQVNTIEFsbCBjb3Jy
ZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0IFs1Myw3MV0sIFswLDEwLDAsMTBdCitQQVNTIEFsbCBj
b3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0IFs1Myw3MV0sIFsxMCwwLDEwLDBdCitQQVNTIEFs
bCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0IFs1Myw3MV0sIFsxMCwxMCwxMCwxMF0KK1BB
U1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QgWzE1MiwxMDVdLCBbMTAsMCwxMCww
XQorUEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdCBbMTUyLDEwNV0sIFswLDEw
LDAsMTBdCitQQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0IFsxNTIsMTA1XSwg
WzEwLDEwLDEwLDEwXQorUEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdCBbMTUz
LDE5M10sIFswLDAsMCwwXQorUEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdCBb
MTUzLDE5M10sIFswLDIwLDAsMjBdCitQQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciBy
ZWN0IFsxNTMsMTkzXSwgWzIwLDAsMjAsMF0KK1BBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQg
Zm9yIHJlY3QgWzE0NCwxODNdLCBbMCwwLDAsMF0KK1BBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91
bmQgZm9yIHJlY3QgWzE0NCwxODNdLCBbMSwwLDEsMF0KK1BBU1MgQWxsIGNvcnJlY3Qgbm9kZXMg
Zm91bmQgZm9yIHJlY3QgWzE0NCwxODNdLCBbMCwxLDAsMV0KK1BBU1MgQWxsIGNvcnJlY3Qgbm9k
ZXMgZm91bmQgZm9yIHJlY3QgWzE0NCwxODNdLCBbMSwxLDEsMV0KK1BBU1MgQWxsIGNvcnJlY3Qg
bm9kZXMgZm91bmQgZm9yIHJlY3QgWzc3LDI0MF0sIFswLDAsMCwwXQorUEFTUyBBbGwgY29ycmVj
dCBub2RlcyBmb3VuZCBmb3IgcmVjdCBbNzcsMjQwXSwgWzAsMTAsMCwxMF0KK1BBU1MgQWxsIGNv
cnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QgWzc3LDI0MF0sIFsxMCwwLDEwLDBdCitQQVNTIEFs
bCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0IFs3NywyNDBdLCBbMTAsMTAsMTAsMTBdCitQ
QVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0IFszOSwyMTJdLCBbMCwwLDAsMF0K
K1BBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QgWzM5LDIxMl0sIFsxMCwwLDEw
LDBdCitQQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0IFszOSwyMTJdLCBbMCwx
MCwwLDEwXQorUEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdCBbMzksMjEyXSwg
WzEwLDEwLDEwLDEwXQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2Rlc0Zy
b21SZWN0LWJhc2ljLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2Rlc0Zyb21SZWN0LWJh
c2ljLmh0bWwKaW5kZXggNmE0MDY0YS4uMmI0M2M2NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vbm9kZXNGcm9tUmVjdC1iYXNpYy5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL25vZGVzRnJvbVJlY3QtYmFzaWMuaHRtbApAQCAtMjIsMzcgKzIyLDM3IEBACiAKICAgICAg
IHdpbmRvdy5zY3JvbGxUbygwLCAwKTsKIAotICAgICAgY2hlY2soNTMsIDcxLCAwLCAwLCBbZS5i
b2R5XSk7Ci0gICAgICBjaGVjayg1MywgNzEsIDEwLCAwLCBbZS5wMywgZS5ib2R5XSk7Ci0gICAg
ICBjaGVjayg1MywgNzEsIDAsIDEwLCBbZS5kMSwgZS5oMSwgZS5ib2R5XSk7Ci0gICAgICBjaGVj
ayg1MywgNzEsIDEwLCAxMCwgW2UucDMsIGUuZDEsIGUuaDEsIGUuYm9keV0pOworICAgICAgY2hl
Y2soNTMsIDcxLCAwLCAwLCAwLCAwLCBbZS5ib2R5XSk7CisgICAgICBjaGVjayg1MywgNzEsIDAs
IDEwLCAwLCAxMCwgW2UucDMsIGUuYm9keV0pOworICAgICAgY2hlY2soNTMsIDcxLCAxMCwgMCwg
MTAsIDAsIFtlLmQxLCBlLmgxLCBlLmJvZHldKTsKKyAgICAgIGNoZWNrKDUzLCA3MSwgMTAsIDEw
LCAxMCwgMTAsIFtlLnAzLCBlLmQxLCBlLmgxLCBlLmJvZHldKTsKIAotICAgICAgY2hlY2soMTUy
LCAxMDUsIDAsIDEwLCBbZS5wMywgZS5ib2R5XSk7Ci0gICAgICBjaGVjaygxNTIsIDEwNSwgMTAs
IDAsIFtlLnA0LCBlLmQxLCBlLmJvZHldKTsKLSAgICAgIGNoZWNrKDE1MiwgMTA1LCAxMCwgMTAs
IFtlLnA0LCBlLnAzLCBlLmQxLCBlLmJvZHldKTsKKyAgICAgIGNoZWNrKDE1MiwgMTA1LCAxMCwg
MCwgMTAsIDAsIFtlLnAzLCBlLmJvZHldKTsKKyAgICAgIGNoZWNrKDE1MiwgMTA1LCAwLCAxMCwg
MCwgMTAsIFtlLnA0LCBlLmQxLCBlLmJvZHldKTsKKyAgICAgIGNoZWNrKDE1MiwgMTA1LCAxMCwg
MTAsIDEwLCAxMCwgW2UucDQsIGUucDMsIGUuZDEsIGUuYm9keV0pOwogCiAgICAgICAvLyBlLnAx
IGlzIGludmlzaWJsZSBhbmQgc2hvdWxkbid0IGFwcGVhcjoKLSAgICAgIGNoZWNrKDE1MywxOTMs
MCwwLFtlLnA1XSk7CisgICAgICBjaGVjaygxNTMsIDE5MywgMCwgMCwgMCwgMCwgW2UucDVdKTsK
ICAgICAgIC8vIE5PVEU6IFtlLnA1LCBlLmQyXSkgc2hvdWxkIGJlIHJldHVybmVkIGlmIHdlIGRp
ZCBub3Qgc3RvcAogICAgICAgLy8gYXQgZS5wNSwgd2hpY2ggZnVsbHkgZW5jbG9zZXMgdGhlIHRh
cmdldCByZWN0LgotICAgICAgY2hlY2soMTUzLDE5MywyMCwwLCBbZS5wNV0pOwotICAgICAgY2hl
Y2soMTUzLDE5MywwLDIwLCBbZS5wNSwgZS5ib2R5XSk7CisgICAgICBjaGVjaygxNTMsMTkzLDAs
IDIwLCAwLCAyMCwgW2UucDVdKTsKKyAgICAgIGNoZWNrKDE1MywxOTMsMjAsIDAsIDIwLCAwLCBb
ZS5wNSwgZS5ib2R5XSk7CiAKICAgICAgIC8vIFByZWNpc2UgcGl4ZWwgY2hlY2tzOgotICAgICAg
Y2hlY2soMTQ0LCAxODMsIDAsIDAsIFtlLmJvZHldKTsKLSAgICAgIGNoZWNrKDE0NCwgMTgzLCAw
LCAxLCBbZS5wNSwgZS5ib2R5XSk7Ci0gICAgICBjaGVjaygxNDQsIDE4MywgMSwgMCwgW2UuZDIs
IGUuYm9keV0pOwotICAgICAgY2hlY2soMTQ0LCAxODMsIDEsIDEsIFtlLnA1LCBlLmQyLCBlLmJv
ZHldKTsKLSAgICAgIGNoZWNrKDc3LCAyNDAsIDAsIDAsIFtlLnAyXSk7Ci0gICAgICBjaGVjayg3
NywgMjQwLCAxMCwgMCwgW2UucDJdKTsKLSAgICAgIGNoZWNrKDc3LCAyNDAsIDAsIDEwLCBbZS5w
NSwgZS5zcGFuLCBlLnAyXSk7Ci0gICAgICBjaGVjayg3NywgMjQwLCAxMCwgMTAsIFtlLnA1LCBl
LnNwYW4sIGUucDJdKTsKKyAgICAgIGNoZWNrKDE0NCwgMTgzLCAwLCAwLCAwLCAwLCBbZS5ib2R5
XSk7CisgICAgICBjaGVjaygxNDQsIDE4MywgMSwgMCwgMSwgMCwgW2UucDUsIGUuYm9keV0pOwor
ICAgICAgY2hlY2soMTQ0LCAxODMsIDAsIDEsIDAsIDEsIFtlLmQyLCBlLmJvZHldKTsKKyAgICAg
IGNoZWNrKDE0NCwgMTgzLCAxLCAxLCAxLCAxLCBbZS5wNSwgZS5kMiwgZS5ib2R5XSk7CisgICAg
ICBjaGVjayg3NywgMjQwLCAwLCAwLCAwLCAwLCBbZS5wMl0pOworICAgICAgY2hlY2soNzcsIDI0
MCwgMCwgMTAsIDAsIDEwLCBbZS5wMl0pOworICAgICAgY2hlY2soNzcsIDI0MCwgMTAsIDAsIDEw
LCAwLCBbZS5wNSwgZS5zcGFuLCBlLnAyXSk7CisgICAgICBjaGVjayg3NywgMjQwLCAxMCwgMTAs
IDEwLCAxMCwgW2UucDUsIGUuc3BhbiwgZS5wMl0pOwogCiAgICAgICAvLyBFeHBhbmRpbmcgYXJl
YSBjaGVja3M6Ci0gICAgICBjaGVjaygzOSwgMjEyLCAwLCAgMCwgW2UuYm9keV0pOwotICAgICAg
Y2hlY2soMzksIDIxMiwgMCwgMTAsIFtlLmQyLCBlLnAyLCBlLmJvZHldKTsKLSAgICAgIGNoZWNr
KDM5LCAyMTIsIDEwLCAwLCBbZS5wNSwgZS5ib2R5XSk7Ci0gICAgICBjaGVjaygzOSwgMjEyLCAx
MCwgMTAsIFtlLnA1LCBlLmQyLCBlLnAyLCBlLmJvZHldKTsKKyAgICAgIGNoZWNrKDM5LCAyMTIs
IDAsICAwLCAwLCAwLCBbZS5ib2R5XSk7CisgICAgICBjaGVjaygzOSwgMjEyLCAxMCwgMCwgMTAs
IDAsIFtlLmQyLCBlLnAyLCBlLmJvZHldKTsKKyAgICAgIGNoZWNrKDM5LCAyMTIsIDAsIDEwLCAw
LCAxMCwgW2UucDUsIGUuYm9keV0pOworICAgICAgY2hlY2soMzksIDIxMiwgMTAsIDEwLCAxMCwg
MTAsIFtlLnA1LCBlLmQyLCBlLnAyLCBlLmJvZHldKTsKIAogICAgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVzb3VyY2VzL25vZGVzRnJv
bVJlY3QuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMvbm9kZXNGcm9tUmVjdC5q
cwppbmRleCBiZTA2YzZhLi5lZGZhMjAyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9yZXNvdXJjZXMvbm9kZXNGcm9tUmVjdC5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9y
ZXNvdXJjZXMvbm9kZXNGcm9tUmVjdC5qcwpAQCAtMywyMSArMywyNSBAQAogICogICAgICogQW50
b25pbyBHb21lcyA8dG9uaWtpdG9vQHdlYmtpdC5vcmc+CiAgKiovCiAKLWZ1bmN0aW9uIGNoZWNr
KHgsIHksIGhQYWRkaW5nLCB2UGFkZGluZywgbGlzdCkKK2Z1bmN0aW9uIGNoZWNrKHgsIHksIHRv
cFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcsIGxpc3Qp
CiB7CiAgIC8qCiAgICAgTm9kZUxpc3Qgbm9kZXNGcm9tUmVjdChpbiBsb25nIHgsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbiBsb25nIHksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbiBsb25nIGhQYWRkaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gbG9uZyB2
UGFkZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHVuc2lnbmVkIGxvbmcgdG9w
UGFkZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHVuc2lnbmVkIGxvbmcgcmln
aHRQYWRkaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gdW5zaWduZWQgbG9uZyBi
b3R0b21QYWRkaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gdW5zaWduZWQgbG9u
ZyBsZWZ0UGFkZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGJvb2xlYW4gaWdu
b3JlQ2xpcHBpbmcpOwogICAqLwotICB2YXIgbm9kZXMgPSBkb2N1bWVudC5ub2Rlc0Zyb21SZWN0
KHgsIHksIGhQYWRkaW5nLCB2UGFkZGluZywgdHJ1ZSAvKiBpZ25vcmVDbGlwcGluZyAqLyk7Cisg
IHZhciBub2RlcyA9IGRvY3VtZW50Lm5vZGVzRnJvbVJlY3QoeCwgeSwgdG9wUGFkZGluZywgcmln
aHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0UGFkZGluZywgdHJ1ZSAvKiBpZ25vcmVDbGlw
cGluZyAqLyk7CiAKICAgaWYgKG5vZGVzLmxlbmd0aCAhPSBsaXN0Lmxlbmd0aCkgewogICAgIHRl
c3RGYWlsZWQoIkRpZmZlcmVudCBudW1iZXIgb2Ygbm9kZXMgZm9yIHJlY3QiICsKICAgICAgICAg
ICAgICAgIlsiICsgeCArICIsIiArIHkgKyAiXSwgIiArCi0gICAgICAgICAgICAgICJbIiArIGhQ
YWRkaW5nICsgIiwiICsgdlBhZGRpbmcgKyAiXTogJyIgKyBsaXN0Lmxlbmd0aCArICInIHZzICci
ICsgbm9kZXMubGVuZ3RoICsgIiciKTsKKyAgICAgICAgICAgICAgIlsiICsgdG9wUGFkZGluZyAr
ICIsIiArIHJpZ2h0UGFkZGluZyArCisgICAgICAgICAgICAgICIsIiArIGJvdHRvbVBhZGRpbmcg
KyAiLCIgKyBsZWZ0UGFkZGluZyArCisgICAgICAgICAgICAgICJdOiAnIiArIGxpc3QubGVuZ3Ro
ICsgIicgdnMgJyIgKyBub2Rlcy5sZW5ndGggKyAiJyIpOwogICAgIHJldHVybjsKICAgfQogCkBA
IC0yNSwxNCArMjksMTYgQEAgZnVuY3Rpb24gY2hlY2soeCwgeSwgaFBhZGRpbmcsIHZQYWRkaW5n
LCBsaXN0KQogICAgIGlmIChub2Rlc1tpXSAhPSBsaXN0W2ldKSB7CiAgICAgICB0ZXN0RmFpbGVk
KCJVbmV4cGVjdGVkIG5vZGUgIyIgKyBpICsgIiBmb3IgcmVjdCAiICsKICAgICAgICAgICAgICAg
ICAiWyIgKyB4ICsgIiwiICsgeSArICJdLCAiICsKLSAgICAgICAgICAgICAgICAiWyIgKyBoUGFk
ZGluZyArICIsIiArIHZQYWRkaW5nICsgIl0iICsgIiAtICIgKyBub2Rlc1tpXSk7CisgICAgICAg
ICAgICAgICAgIlsiICsgdG9wUGFkZGluZyArICIsIiArIHJpZ2h0UGFkZGluZyArCisgICAgICAg
ICAgICAgICAgIiwiICsgYm90dG9tUGFkZGluZyArICIsIiArIGxlZnRQYWRkaW5nICsgIl0iICsg
IiAtICIgKyBub2Rlc1tpXSk7CiAgICAgICByZXR1cm47CiAgICAgfQogICB9CiAKICAgdGVzdFBh
c3NlZCgiQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QgIiAgKwotICAgICAgICAgICAi
WyIgKyB4ICsgIiwiICsgeSArICJdLCAiICsKLSAgICAgICAgICAgIlsiICsgaFBhZGRpbmcgKyAi
LCIgKyB2UGFkZGluZyArICJdIik7CisgICAgICAgICAgICAgIlsiICsgeCArICIsIiArIHkgKyAi
XSwgIiArCisgICAgICAgICAgICAgIlsiICsgdG9wUGFkZGluZyArICIsIiArIHJpZ2h0UGFkZGlu
ZyArCisgICAgICAgICAgICAgIiwiICsgYm90dG9tUGFkZGluZyArICIsIiArIGxlZnRQYWRkaW5n
ICsgIl0iKTsKIH0KIAogZnVuY3Rpb24gZ2V0Q2VudGVyRm9yKGVsZW1lbnQpCmRpZmYgLS1naXQg
YS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGNjMTQ4MjEuLjUw
OGUxMzQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNjcgQEAKKzIwMTAtMDktMjMgIEFudG9uaW8gR29tZXMgIDxhZ29tZXNA
cmltLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBNYWtlIERvY3VtZW50Ojpub2Rlc0Zyb21SZWN0IG1vcmUgZmxleGlibGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2MzM2CisKKyAgICAgICAgVGhl
IHBhdGNoIGNoYW5nZXMgdGhlIEFQSSBmb3IgdGhlIERvY3VtZW50Ojpub2Rlc0Zyb21SZWN0KCkg
bWV0aG9kIGFzIGZvbGxvd3M6CisKKyAgICAgICAgZnJvbQorCisgICAgICAgIC0gUmVmUHRmPE5v
ZGVMaXN0PiBub2Rlc0Zyb21SZWN0KGludCB4LCBpbnQgeSwgdW5zaWduZWQgaG9yaXpvbnRhbFBh
ZGRpbmcsIHVuc2lnbmVkIHZlcnRpY2FsUGFkZGluZywgYm9vbCBpZ25vcmVDbGlwcGluZykKKwor
ICAgICAgICB0bworCisgICAgICAgIC0gUmVmUHRmPE5vZGVMaXN0PiBub2Rlc0Zyb21SZWN0KGlu
dCB4LCBpbnQgeSwgdW5zaWduZWQgdG9wUGFkZGluZywgdW5zaWduZWQgcmlnaHRQYWRkaW5nLCB1
bnNpZ25lZCBib3R0b21QYWRkaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBsZWZ0UGFkZGluZywgYm9vbCBpZ25vcmVDbGlwcGluZykKKworICAg
ICAgICBQcmV2aW91c2x5IHRoZSBtZXRob2Qgd2FzIHJlY2VpdmluZyBhcyBwYXJhbWV0ZXIgaG9y
aXpvbnRhbCBhbmQgdmVydGljYWwgcGFkZGluZyB2YWx1ZXMuCisgICAgICAgIEluIHByYWN0aWNl
LCB0aGUgaG9yaXpvbnRhbCBwYWRkaW5nIHdhcyBiZWluZyB1c2VkIHRvIGV4cGFuZCBhIGdpdmVu
IGNlbnRlciBwb2ludCBpbiBib3RoCisgICAgICAgIHJpZ2h0IGFuZCBsZWZ0IGRpcmVjdGlvbnMs
IHdoaWxlIHZlcnRpY2FsIHBhZGRpbmcgd2FzIGV4cGFuZGluZyBpdCB0byB0aGUgdG9wIGFuZCBi
b3R0b20gZGlyZWN0aW9ucy4KKworICAgICAgICBBbHRob3VnaCB0aGlzIGRlc2lnbiBtYWtlcyBp
dCBwb3NzaWJsZSB0byBpbXByb3ZlIHRoZSB0b3VjaCBleHBlcmllbmNlIG9uIG1vYmlsZSBkZXZp
Y2VzCisgICAgICAgIChEb2N1bWVudDo6bm9kZXNGcm9tUmVjdCBleHBvc2VzIHRoZSByZWN0IGJh
c2VkIGhpdCB0ZXN0aW5nIHN5c3RlbSksIGVtcGlyaWNhbCBleHBlcmltZW50cworICAgICAgICBz
aG93ZWQgdGhhdCwgc3BlY2lhbGx5IGluIGNhcGFjaXRpdmUgdG91Y2ggc2NyZWVucywgdXNlcnMg
dGVuZCB0byB0YXAgYmVsb3cgZWxlbWVudHMuIFNvCisgICAgICAgIGZvciBldmVuIG1vcmUgYWNj
dXJhdGUgcmVzdWx0cyAod2hpY2ggbWVhbnMgaGVyZSB0aGUgcG9zc2liaWxpdHkgb2YgcGxlYXNh
bnQgdGFwcGluZyBleHBlcmllbmNlKSwKKyAgICAgICAgaXQgbWFrZXMgc2Vuc2UgdG8gdXNlIGEg
cmVnaW9uIHRoYXQgaXMgb2Zmc2V0IG1vcmUgYWJvdmUgdGhlIHRvdWNoIHBvaW50LCBmYXZvcmlu
ZyBlbGVtZW50cworICAgICAgICBhYm92ZSB0aGUgdG91Y2ggcG9pbnQuCisKKyAgICAgICAgVGhl
IHBhdGNoIGJhc2ljYWxseSBpbXBsZW1lbnRzIHRoYXQsIGluY3JlYXNpbmcgdGhlIEFQSSBmbGV4
aWJsZSBhbmQgcG93ZXIgYnkgbWFraW5nIGl0IHBvc3NpYmxlCisgICAgICAgIHRvIHNwZWNpZnkg
ZGlmZmVyZW50IHBhZGRpbmcgdmFsdWVzIGZvciBlYWNoIGRpcmVjdGlvbiBpbiBhIGdpdmVuIG9y
aWVudGF0aW9uLgorCisgICAgICAgIENoYW5nZXMgd2VyZSBtYWRlIGFjY29yZGluZ2x5IHRvIHRo
ZSBIaXRUZXN0UmVzdWx0LCBSZW5kZXJMYXllciwgUmVuZGVySW1hZ2UgYW5kIFJlbmRlckxpbmVC
b3hMaXN0CisgICAgICAgIGNsYXNzZXMuCisKKyAgICAgICAgV2ViQ29yZToKKworICAgICAgICAq
IFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOiBBUEkgYWRqdXN0bWVu
dC4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaWRsOiBEaXR0by4KKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuY3BwOiBBUEkgYWRqdXN0bWVudCBhbmQgbWV0aG9kIGJvZHkgaW1wbGVtZW50YXRpb24g
YWNjb3JkaW5nbHkuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6bm9kZXNGcm9tUmVjdCk6
CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRIYW5kbGVyOjpoaXRUZXN0UmVzdWx0QXRQb2ludCk6IEZvciBzaW1wbGljaXR5LCBJIGRpZCBu
b3QgY2hhbmdlIHRoZSBzaWduYXR1cmUKKyAgICAgICAgICAgIGJ1dCB0aGUgd2F5IHRoZSBwYWRk
aW5nIHZhbHVlIHBhc3NlZCBpbiBhcyBwYXJhbWV0ZXIgaXMgYmVpbmcgdXNlZCB0byBjb25zdHJ1
Y3QgYSBIaXRUZXN0UmVzdWx0LgorICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNw
cDogQ2hhbmdlZCB0aGUgcmVjdC1iYXNlZCBiaXRzIGZyb20gdXNpbmcgSW50U2l6ZSAocGFkZGlu
ZykgdG8gc2VwYXJhdGVkIHBhZGRpbmdzIGZvciBlYWNoIGRpcmVjdGlvbi4KKyAgICAgICAgKFdl
YkNvcmU6OkhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OkhpdFRlc3RSZXN1bHQ6Om9wZXJhdG9yPSk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6SGl0VGVzdFJlc3VsdDo6cmVjdEZyb21Qb2ludCk6IERpdHRvLgorICAgICAgICAqIHJlbmRl
cmluZy9IaXRUZXN0UmVzdWx0Lmg6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0Ojp0
b3BQYWRkaW5nKTogZ2V0dGVyIGZvciB0aGUgdG9wIHBhZGRpbmcuCisgICAgICAgIChXZWJDb3Jl
OjpIaXRUZXN0UmVzdWx0OjpyaWdodFBhZGRpbmcpOiBnZXR0ZXIgZm9yIHRoZSByaWdodCBwYWRk
aW5nLgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6Ym90dG9tUGFkZGluZyk6IGdl
dHRlciBmb3IgdGhlIGJvdHRvbSBwYWRkaW5nLgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJl
c3VsdDo6bGVmdFBhZGRpbmcpOiBnZXR0ZXIgZm9yIHRoZSBsZWZ0IHBhZGRpbmcuCisgICAgICAg
IChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpyZWN0RnJvbVBvaW50KTogQWRkZWQgYSBzdGF0aWMg
bWV0aG9kIHRoYXQgZ2l2ZW4gYSBjZW50ZXIgcG9pbnQgYW5kIHBhZGRpbmcgdmFsdWVzIGZvciBl
YWNoIGRpcmVjdGlvbiwKKyAgICAgICAgICAgIHJldHVybnMgdGhlIHJlY3QgdGhhdCBpcyBnb2lu
ZyB0byBiZSB1c2VkIGluIFdlYkNvcmUncyBoaXQgdGVzdGluZyBwcm9jZXNzaW5nLgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6IENoYW5nZWQgdGhlIHJlY3QtYmFzZWQgYml0
cyBmcm9tIHVzaW5nIEludFNpemUgKHBhZGRpbmcpIHRvIHNlcGFyYXRlZCBwYWRkaW5ncyBmb3Ig
ZWFjaCBkaXJlY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6bm9kZUF0UG9p
bnQpOiBEaXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpoaXRUZXN0TGF5ZXIpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpoaXRUZXN0TGlzdCk6IERpdHRvLgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJMaW5lQm94TGlzdC5jcHA6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGluZUJveExpc3Q6OmhpdFRlc3QpOiBEaXR0by4KKwogMjAxMC0wOS0yMyAg
U2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBEYW4gQmVybnN0ZWluLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBi
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggZTMxNmZjMi4uNDhmYWYyZSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBA
IC05MTgsNiArOTE4LDcgQEAgX19aTks3V2ViQ29yZTEzSGl0VGVzdFJlc3VsdDE4dGl0bGVEaXNw
bGF5U3RyaW5nRXYKIF9fWk5LN1dlYkNvcmUxM0hpdFRlc3RSZXN1bHQ1aW1hZ2VFdgogX19aTks3
V2ViQ29yZTEzSGl0VGVzdFJlc3VsdDV0aXRsZUVSTlNfMTNUZXh0RGlyZWN0aW9uRQogX19aTks3
V2ViQ29yZTEzSGl0VGVzdFJlc3VsdDlpbWFnZVJlY3RFdgorX19aTjdXZWJDb3JlMTNIaXRUZXN0
UmVzdWx0MTNyZWN0RnJvbVBvaW50RVJLTlNfOEludFBvaW50RWpqamoKIF9fWk5LN1dlYkNvcmUx
M1Jlc291cmNlRXJyb3JjdlA3TlNFcnJvckV2CiBfX1pOSzdXZWJDb3JlMTREb2N1bWVudExvYWRl
cjEwcmVxdWVzdFVSTEV2CiBfX1pOSzdXZWJDb3JlMTREb2N1bWVudExvYWRlcjExZnJhbWVMb2Fk
ZXJFdgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCmluZGV4IGZhN2I2ODUuLjg2MWYyOGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAorKysgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTEwNDks
NyArMTA0OSw3IEBAIEtVUkwgRG9jdW1lbnQ6OmJhc2VVUkkoKSBjb25zdAogLy8gKiBtYWtpbmcg
aXQgcmVjZWl2ZSBhIHJlY3QgYXMgcGFyYW1ldGVyLCBpLmUuIG5vZGVzRnJvbVJlY3QoeCwgeSwg
dywgaCk7CiAvLyAqIG1ha2luZyBpdCByZWNlaXZlIHRoZSBleHBhZGluZyBzaXplIG9mIGVhY2gg
ZGlyZWN0aW9uIHNlcGFyYXRlbHksCiAvLyAgIGkuZS4gbm9kZXNGcm9tUmVjdCh4LCB5LCB0b3BT
aXplLCByaWdodFNpemUsIGJvdHRvbVNpemUsIGxlZnRTaXplKTsKLVBhc3NSZWZQdHI8Tm9kZUxp
c3Q+IERvY3VtZW50Ojpub2Rlc0Zyb21SZWN0KGludCBjZW50ZXJYLCBpbnQgY2VudGVyWSwgdW5z
aWduZWQgaFBhZGRpbmcsIHVuc2lnbmVkIHZQYWRkaW5nLCBib29sIGlnbm9yZUNsaXBwaW5nKSBj
b25zdAorUGFzc1JlZlB0cjxOb2RlTGlzdD4gRG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QoaW50IGNl
bnRlclgsIGludCBjZW50ZXJZLCB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBh
ZGRpbmcsIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nLCBib29s
IGlnbm9yZUNsaXBwaW5nKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBTaGFyZSBjb2RlIGJldHdl
ZW4gdGhpcywgZWxlbWVudEZyb21Qb2ludCBhbmQgY2FyZXRSYW5nZUZyb21Qb2ludC4KICAgICBp
ZiAoIXJlbmRlcmVyKCkpCkBAIC0xMDYzLDI2ICsxMDYzLDI1IEBAIFBhc3NSZWZQdHI8Tm9kZUxp
c3Q+IERvY3VtZW50Ojpub2Rlc0Zyb21SZWN0KGludCBjZW50ZXJYLCBpbnQgY2VudGVyWSwgdW5z
aWduZWQKIAogICAgIGZsb2F0IHpvb21GYWN0b3IgPSBmcmFtZS0+cGFnZVpvb21GYWN0b3IoKTsK
ICAgICBJbnRQb2ludCBwb2ludCA9IHJvdW5kZWRJbnRQb2ludChGbG9hdFBvaW50KGNlbnRlclgg
KiB6b29tRmFjdG9yICsgdmlldygpLT5zY3JvbGxYKCksIGNlbnRlclkgKiB6b29tRmFjdG9yICsg
dmlldygpLT5zY3JvbGxZKCkpKTsKLSAgICBJbnRTaXplIHBhZGRpbmcoaFBhZGRpbmcsIHZQYWRk
aW5nKTsKIAogICAgIGludCB0eXBlID0gSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVz
dFJlcXVlc3Q6OkFjdGl2ZTsKIAogICAgIC8vIFdoZW4gaWdub3JlQ2xpcHBpbmcgaXMgZmFsc2Us
IHRoaXMgbWV0aG9kIHJldHVybnMgbnVsbCBmb3IgY29vcmRpbmF0ZXMgb3V0c2lkZSBvZiB0aGUg
dmlld3BvcnQuCiAgICAgaWYgKGlnbm9yZUNsaXBwaW5nKQogICAgICAgICB0eXBlIHw9IEhpdFRl
c3RSZXF1ZXN0OjpJZ25vcmVDbGlwcGluZzsKLSAgICBlbHNlIGlmICghZnJhbWVWaWV3LT52aXNp
YmxlQ29udGVudFJlY3QoKS5pbnRlcnNlY3RzKEludFJlY3QocG9pbnQsIHBhZGRpbmcpKSkKKyAg
ICBlbHNlIGlmICghZnJhbWVWaWV3LT52aXNpYmxlQ29udGVudFJlY3QoKS5pbnRlcnNlY3RzKEhp
dFRlc3RSZXN1bHQ6OnJlY3RGcm9tUG9pbnQoSW50UG9pbnQoY2VudGVyWCwgY2VudGVyWSksIHRv
cFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcpKSkKICAg
ICAgICAgcmV0dXJuIDA7CiAKICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KHR5cGUpOwogCiAg
ICAgLy8gUGFzc2luZyBhIHplcm8gcGFkZGluZyB3aWxsIHRyaWdnZXIgYSByZWN0IGhpdCB0ZXN0
LCBob3dldmVyIGZvciB0aGUgcHVycG9zZXMgb2Ygbm9kZXNGcm9tUmVjdCwKICAgICAvLyB3ZSBz
cGVjaWFsIGhhbmRsZSB0aGlzIGNhc2UgaW4gb3JkZXIgdG8gcmV0dXJuIGEgdmFsaWQgTm9kZUxp
c3QuCi0gICAgaWYgKHBhZGRpbmcuaXNaZXJvKCkpIHsKKyAgICBpZiAoIXRvcFBhZGRpbmcgJiYg
IXJpZ2h0UGFkZGluZyAmJiAhYm90dG9tUGFkZGluZyAmJiAhbGVmdFBhZGRpbmcpIHsKICAgICAg
ICAgSGl0VGVzdFJlc3VsdCByZXN1bHQocG9pbnQpOwogICAgICAgICByZXR1cm4gaGFuZGxlWmVy
b1BhZGRpbmcocmVxdWVzdCwgcmVzdWx0KTsKICAgICB9CiAKLSAgICBIaXRUZXN0UmVzdWx0IHJl
c3VsdChwb2ludCwgcGFkZGluZyk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQocG9pbnQsIHRv
cFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcpOwogICAg
IHJlbmRlclZpZXcoKS0+bGF5ZXIoKS0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOwogCiAgICAg
cmV0dXJuIFN0YXRpY0hhc2hTZXROb2RlTGlzdDo6YWRvcHQocmVzdWx0LnJlY3RCYXNlZFRlc3RS
ZXN1bHQoKSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaAppbmRleCA4MmQ4MjM5Li44ZjczYTg2IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCisrKyBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTMwNSw3ICsz
MDUsNyBAQCBwdWJsaWM6CiAKICAgICAvKioKICAgICAgKiBSZXRyaWV2ZSBhbGwgbm9kZXMgdGhh
dCBpbnRlcnNlY3QgYSByZWN0IGluIHRoZSB3aW5kb3cncyBkb2N1bWVudCwgdW50aWwgaXQgaXMg
ZnVsbHkgZW5jbG9zZWQgYnkKLSAgICAgKiB0aGUgYm91bmRhcmllcyBvZiBub2RlLgorICAgICAq
IHRoZSBib3VuZGFyaWVzIG9mIGEgbm9kZS4KICAgICAgKgogICAgICAqIEBwYXJhbSBjZW50ZXJY
IHggcmVmZXJlbmNlIGZvciB0aGUgcmVjdGFuZ2xlIGluIENTUyBwaXhlbHMKICAgICAgKiBAcGFy
YW0gY2VudGVyWSB5IHJlZmVyZW5jZSBmb3IgdGhlIHJlY3RhbmdsZSBpbiBDU1MgcGl4ZWxzCkBA
IC0zMTQsNyArMzE0LDEzIEBAIHB1YmxpYzoKICAgICAgKiBAcGFyYW0gaWdub3JlQ2xpcHBpbmcg
d2hldGhlciBvciBub3QgdG8gaWdub3JlIHRoZSByb290IHNjcm9sbCBmcmFtZSB3aGVuIHJldHJp
ZXZpbmcgdGhlIGVsZW1lbnQuCiAgICAgICogICAgICAgIElmIGZhbHNlLCB0aGlzIG1ldGhvZCBy
ZXR1cm5zIG51bGwgZm9yIGNvb3JkaW5hdGVzIG91dHNpZGUgb2YgdGhlIHZpZXdwb3J0LgogICAg
ICAqLwotICAgIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IG5vZGVzRnJvbVJlY3QoaW50IGNlbnRlclgs
IGludCBjZW50ZXJZLCB1bnNpZ25lZCBoUGFkZGluZywgdW5zaWduZWQgdlBhZGRpbmcsIGJvb2wg
aWdub3JlQ2xpcHBpbmcpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IG5vZGVzRnJv
bVJlY3QoaW50IGNlbnRlclgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgY2VudGVyWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIHRvcFBhZGRpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCByaWdodFBhZGRpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBib3R0b21QYWRkaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgbGVmdFBhZGRpbmcsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIGlnbm9yZUNsaXBwaW5nKSBjb25zdDsKICAgICBFbGVt
ZW50KiBlbGVtZW50RnJvbVBvaW50KGludCB4LCBpbnQgeSkgY29uc3Q7CiAgICAgUGFzc1JlZlB0
cjxSYW5nZT4gY2FyZXRSYW5nZUZyb21Qb2ludChpbnQgeCwgaW50IHkpOwogCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKaW5k
ZXggMjk2YmQ0NC4uOWRkMmU1OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRs
CisrKyBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbApAQCAtMTg4LDggKzE4OCwxMCBAQCBtb2R1
bGUgY29yZSB7CiAKIAogICAgICAgICBOb2RlTGlzdCAgICAgICAgICAgbm9kZXNGcm9tUmVjdChp
biBsb25nIHgsIGluIGxvbmcgeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW4gdW5zaWduZWQgbG9uZyBoUGFkZGluZywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW4gdW5zaWduZWQgbG9uZyB2UGFkZGluZywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gdW5zaWduZWQgbG9uZyB0b3BQYWRkaW5n
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB1bnNpZ25lZCBs
b25nIHJpZ2h0UGFkZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW4gdW5zaWduZWQgbG9uZyBib3R0b21QYWRkaW5nLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbiB1bnNpZ25lZCBsb25nIGxlZnRQYWRkaW5nLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBib29sZWFuIGlnbm9yZUNsaXBw
aW5nKTsKICAgICAgICAgRWxlbWVudCAgICAgICAgICAgIGVsZW1lbnRGcm9tUG9pbnQoaW4gbG9u
ZyB4LCBpbiBsb25nIHkpOwogICAgICAgICBSYW5nZSAgICAgICAgICAgICAgY2FyZXRSYW5nZUZy
b21Qb2ludChpbiBsb25nIHgsIGluIGxvbmcgeSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmNwcCBiL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDg5
MzJlNWYuLmQzNzA5ZmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
CisrKyBiL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC04NjYsNyArODY2LDcgQEAg
dm9pZCBFdmVudEhhbmRsZXI6OmFsbG93REhUTUxEcmFnKGJvb2wmIGZsYWdESFRNTCwgYm9vbCYg
ZmxhZ1VBKSBjb25zdAogICAgIAogSGl0VGVzdFJlc3VsdCBFdmVudEhhbmRsZXI6OmhpdFRlc3RS
ZXN1bHRBdFBvaW50KGNvbnN0IEludFBvaW50JiBwb2ludCwgYm9vbCBhbGxvd1NoYWRvd0NvbnRl
bnQsIGJvb2wgaWdub3JlQ2xpcHBpbmcsIEhpdFRlc3RTY3JvbGxiYXJzIHRlc3RTY3JvbGxiYXJz
LCBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhpdFR5cGUsIGNvbnN0IEludFNp
emUmIHBhZGRpbmcpCiB7Ci0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQocG9pbnQsIHBhZGRpbmcp
OworICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHBvaW50LCBwYWRkaW5nLmhlaWdodCgpLCBwYWRk
aW5nLndpZHRoKCksIHBhZGRpbmcuaGVpZ2h0KCksIHBhZGRpbmcud2lkdGgoKSk7CiAgICAgaWYg
KCFtX2ZyYW1lLT5jb250ZW50UmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICBpZiAoaWdub3JlQ2xpcHBpbmcpCkBAIC04ODcsNyArODg3LDcgQEAgSGl0VGVzdFJlc3VsdCBF
dmVudEhhbmRsZXI6OmhpdFRlc3RSZXN1bHRBdFBvaW50KGNvbnN0IEludFBvaW50JiBwb2ludCwg
Ym9vbCBhbGwKICAgICAgICAgRnJhbWVWaWV3KiB2aWV3ID0gc3RhdGljX2Nhc3Q8RnJhbWVWaWV3
Kj4od2lkZ2V0KTsKICAgICAgICAgSW50UG9pbnQgd2lkZ2V0UG9pbnQocmVzdWx0LmxvY2FsUG9p
bnQoKS54KCkgKyB2aWV3LT5zY3JvbGxYKCkgLSByZW5kZXJXaWRnZXQtPmJvcmRlckxlZnQoKSAt
IHJlbmRlcldpZGdldC0+cGFkZGluZ0xlZnQoKSwgCiAgICAgICAgICAgICByZXN1bHQubG9jYWxQ
b2ludCgpLnkoKSArIHZpZXctPnNjcm9sbFkoKSAtIHJlbmRlcldpZGdldC0+Ym9yZGVyVG9wKCkg
LSByZW5kZXJXaWRnZXQtPnBhZGRpbmdUb3AoKSk7Ci0gICAgICAgIEhpdFRlc3RSZXN1bHQgd2lk
Z2V0SGl0VGVzdFJlc3VsdCh3aWRnZXRQb2ludCwgcGFkZGluZyk7CisgICAgICAgIEhpdFRlc3RS
ZXN1bHQgd2lkZ2V0SGl0VGVzdFJlc3VsdCh3aWRnZXRQb2ludCwgcGFkZGluZy5oZWlnaHQoKSwg
cGFkZGluZy53aWR0aCgpLCBwYWRkaW5nLmhlaWdodCgpLCBwYWRkaW5nLndpZHRoKCkpOwogICAg
ICAgICBmcmFtZS0+Y29udGVudFJlbmRlcmVyKCktPmxheWVyKCktPmhpdFRlc3QoSGl0VGVzdFJl
cXVlc3QoaGl0VHlwZSksIHdpZGdldEhpdFRlc3RSZXN1bHQpOwogICAgICAgICByZXN1bHQgPSB3
aWRnZXRIaXRUZXN0UmVzdWx0OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9IaXRU
ZXN0UmVzdWx0LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCmluZGV4
IGYyODY5MmUuLjM1YTZkMjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RS
ZXN1bHQuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCkBAIC01
MSwxNyArNTEsMjcgQEAgSGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3VsdChjb25zdCBJbnRQb2lu
dCYgcG9pbnQpCiAgICAgOiBtX3BvaW50KHBvaW50KQogICAgICwgbV9pc092ZXJXaWRnZXQoZmFs
c2UpCiAgICAgLCBtX2lzUmVjdEJhc2VkKGZhbHNlKQorICAgICwgbV90b3BQYWRkaW5nKDApCisg
ICAgLCBtX3JpZ2h0UGFkZGluZygwKQorICAgICwgbV9ib3R0b21QYWRkaW5nKDApCisgICAgLCBt
X2xlZnRQYWRkaW5nKDApCiB7CiB9CiAKLUhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQoY29u
c3QgSW50UG9pbnQmIGNlbnRlclBvaW50LCBjb25zdCBJbnRTaXplJiBwYWRkaW5nKQorSGl0VGVz
dFJlc3VsdDo6SGl0VGVzdFJlc3VsdChjb25zdCBJbnRQb2ludCYgY2VudGVyUG9pbnQsIHVuc2ln
bmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFkZGluZywgdW5zaWduZWQgYm90dG9tUGFk
ZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcpCiAgICAgOiBtX3BvaW50KGNlbnRlclBvaW50KQog
ICAgICwgbV9pc092ZXJXaWRnZXQoZmFsc2UpCisgICAgLCBtX3RvcFBhZGRpbmcodG9wUGFkZGlu
ZykKKyAgICAsIG1fcmlnaHRQYWRkaW5nKHJpZ2h0UGFkZGluZykKKyAgICAsIG1fYm90dG9tUGFk
ZGluZyhib3R0b21QYWRkaW5nKQorICAgICwgbV9sZWZ0UGFkZGluZyhsZWZ0UGFkZGluZykKIHsK
LSAgICAvLyBJZiBhIHplcm8gcGFkZGluZyBpcyBwYXNzZWQgaW4gb3IgZWl0aGVyIHdpZHRoIG9y
IGhlaWdodCBpcyBuZWdhdGl2ZSwgdGhlbiBpdAotICAgIC8vIGlzIG5vdCBhIHZhbGlkIHBhZGRp
bmcgYW5kIGhlbmNlIG5vdCBhIHJlY3QgYmFzZWQgaGl0IHRlc3QuCi0gICAgbV9pc1JlY3RCYXNl
ZCA9ICEocGFkZGluZy5pc1plcm8oKSB8fCAocGFkZGluZy53aWR0aCgpIDwgMCB8fCBwYWRkaW5n
LmhlaWdodCgpIDwgMCkpOwotICAgIG1fcGFkZGluZyA9IG1faXNSZWN0QmFzZWQgPyBwYWRkaW5n
IDogSW50U2l6ZSgpOworICAgIC8vIElmIGFsbCBwYWRkaW5nIHZhbHVlcyBwYXNzZWQgaW4gYXJl
IHplcm8gdGhlbiBpdCBpcyBub3QgYSByZWN0IGJhc2VkIGhpdCB0ZXN0LgorICAgIG1faXNSZWN0
QmFzZWQgPSB0b3BQYWRkaW5nIHx8IHJpZ2h0UGFkZGluZyB8fCBib3R0b21QYWRkaW5nIHx8IGxl
ZnRQYWRkaW5nOworCisgICAgLy8gTWFrZSBzdXJlIGFsbCBwYWRkaW5nIHZhbHVlcyBhcmUgY2xh
bXBlZCB0byB6ZXJvIGlmIGl0IGlzIG5vdCBhIHJlY3QgaGl0IHRlc3QuCisgICAgaWYgKCFtX2lz
UmVjdEJhc2VkKQorICAgICAgICBtX3RvcFBhZGRpbmcgPSBtX3JpZ2h0UGFkZGluZyA9IG1fYm90
dG9tUGFkZGluZyA9IG1fbGVmdFBhZGRpbmcgPSAwOwogfQogCiBIaXRUZXN0UmVzdWx0OjpIaXRU
ZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RSZXN1bHQmIG90aGVyKQpAQCAtNzYsOSArODYsMTMgQEAg
SGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3VsdChjb25zdCBIaXRUZXN0UmVzdWx0JiBvdGhlcikK
ICAgICAvLyBPbmx5IGNvcHkgdGhlIHBhZGRpbmcgYW5kIExpc3RIYXNoU2V0IGluIGNhc2Ugb2Yg
cmVjdCBoaXQgdGVzdC4KICAgICAvLyBDb3B5aW5nIHRoZSBsYXRlciBpcyByYXRoZXIgZXhwZW5z
aXZlLgogICAgIGlmICgobV9pc1JlY3RCYXNlZCA9IG90aGVyLmlzUmVjdEJhc2VkVGVzdCgpKSkg
ewotICAgICAgICBtX3BhZGRpbmcgPSBvdGhlci5wYWRkaW5nKCk7CisgICAgICAgIG1fdG9wUGFk
ZGluZyA9IG90aGVyLm1fdG9wUGFkZGluZzsKKyAgICAgICAgbV9yaWdodFBhZGRpbmcgPSBvdGhl
ci5tX3JpZ2h0UGFkZGluZzsKKyAgICAgICAgbV9ib3R0b21QYWRkaW5nID0gb3RoZXIubV9ib3R0
b21QYWRkaW5nOworICAgICAgICBtX2xlZnRQYWRkaW5nID0gb3RoZXIubV9sZWZ0UGFkZGluZzsK
ICAgICAgICAgbV9yZWN0QmFzZWRUZXN0UmVzdWx0ID0gb3RoZXIucmVjdEJhc2VkVGVzdFJlc3Vs
dCgpOwotICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgbV90b3BQYWRkaW5nID0gbV9yaWdodFBh
ZGRpbmcgPSBtX2JvdHRvbVBhZGRpbmcgPSBtX2xlZnRQYWRkaW5nID0gMDsKIH0KIAogSGl0VGVz
dFJlc3VsdDo6fkhpdFRlc3RSZXN1bHQoKQpAQCAtOTcsOSArMTExLDEzIEBAIEhpdFRlc3RSZXN1
bHQmIEhpdFRlc3RSZXN1bHQ6Om9wZXJhdG9yPShjb25zdCBIaXRUZXN0UmVzdWx0JiBvdGhlcikK
ICAgICAvLyBPbmx5IGNvcHkgdGhlIHBhZGRpbmcgYW5kIExpc3RIYXNoU2V0IGluIGNhc2Ugb2Yg
cmVjdCBoaXQgdGVzdC4KICAgICAvLyBDb3B5aW5nIHRoZSBsYXRlciBpcyByYXRoZXIgZXhwZW5z
aXZlLgogICAgIGlmICgobV9pc1JlY3RCYXNlZCA9IG90aGVyLmlzUmVjdEJhc2VkVGVzdCgpKSkg
ewotICAgICAgICBtX3BhZGRpbmcgPSBvdGhlci5wYWRkaW5nKCk7CisgICAgICAgIG1fdG9wUGFk
ZGluZyA9IG90aGVyLm1fdG9wUGFkZGluZzsKKyAgICAgICAgbV9yaWdodFBhZGRpbmcgPSBvdGhl
ci5tX3JpZ2h0UGFkZGluZzsKKyAgICAgICAgbV9ib3R0b21QYWRkaW5nID0gb3RoZXIubV9ib3R0
b21QYWRkaW5nOworICAgICAgICBtX2xlZnRQYWRkaW5nID0gb3RoZXIubV9sZWZ0UGFkZGluZzsK
ICAgICAgICAgbV9yZWN0QmFzZWRUZXN0UmVzdWx0ID0gb3RoZXIucmVjdEJhc2VkVGVzdFJlc3Vs
dCgpOwotICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgbV90b3BQYWRkaW5nID0gbV9yaWdodFBh
ZGRpbmcgPSBtX2JvdHRvbVBhZGRpbmcgPSBtX2xlZnRQYWRkaW5nID0gMDsKICAgICByZXR1cm4g
KnRoaXM7CiB9CiAKQEAgLTUzNCw0ICs1NTIsMTYgQEAgdm9pZCBIaXRUZXN0UmVzdWx0OjphcHBl
bmQoY29uc3QgSGl0VGVzdFJlc3VsdCYgb3RoZXIpCiAgICAgICAgIG1fcmVjdEJhc2VkVGVzdFJl
c3VsdC5hZGQoaXQtPmdldCgpKTsKIH0KIAorSW50UmVjdCBIaXRUZXN0UmVzdWx0OjpyZWN0RnJv
bVBvaW50KGNvbnN0IEludFBvaW50JiBwb2ludCwgdW5zaWduZWQgdG9wUGFkZGluZywgdW5zaWdu
ZWQgcmlnaHRQYWRkaW5nLCB1bnNpZ25lZCBib3R0b21QYWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFk
ZGluZykKK3sKKyAgICBJbnRQb2ludCBhY3R1YWxQb2ludChwb2ludCk7CisgICAgYWN0dWFsUG9p
bnQgLT0gSW50U2l6ZShsZWZ0UGFkZGluZywgdG9wUGFkZGluZyk7CisKKyAgICBJbnRTaXplIGFj
dHVhbFBhZGRpbmcobGVmdFBhZGRpbmcgKyByaWdodFBhZGRpbmcsIHRvcFBhZGRpbmcgKyBib3R0
b21QYWRkaW5nKTsKKyAgICAvLyBBcyBJbnRSZWN0IGlzIGxlZnQgaW5jbHVzaXZlIGFuZCByaWdo
dCBleGNsdXNpdmUgKHNlZWluZyBJbnRSZWN0Ojpjb250YWlucyh4LCB5KSksIGFkZGluZyAiMSIu
CisgICAgYWN0dWFsUGFkZGluZyArPSBJbnRTaXplKDEsIDEpOworCisgICAgcmV0dXJuIEludFJl
Y3QoYWN0dWFsUG9pbnQsIGFjdHVhbFBhZGRpbmcpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmggYi9XZWJD
b3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKaW5kZXggMzFlODhmMS4uMTMwNGUyMiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCisrKyBiL1dlYkNvcmUv
cmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaApAQCAtNDQsOCArNDQsOCBAQCBjbGFzcyBTY3JvbGxi
YXI7CiBjbGFzcyBIaXRUZXN0UmVzdWx0IHsKIHB1YmxpYzoKICAgICBIaXRUZXN0UmVzdWx0KGNv
bnN0IEludFBvaW50Jik7Ci0gICAgLy8gUGFzcyBhIG5vbi1uZWdhdGl2ZSBJbnRTaXplIHZhbHVl
IGFzIHBhZGRpbmcgdG8gcGVyZm9ybSBhIHJlY3QtYmFzZWQgaGl0IHRlc3QuCi0gICAgSGl0VGVz
dFJlc3VsdChjb25zdCBJbnRQb2ludCYgY2VudGVyUG9pbnQsIGNvbnN0IEludFNpemUmIHBhZGRp
bmcpOworICAgIC8vIFBhc3Mgbm9uLW5lZ2F0aXZlIHBhZGRpbmcgdmFsdWVzIHRvIHBlcmZvcm0g
YSByZWN0LWJhc2VkIGhpdCB0ZXN0LgorICAgIEhpdFRlc3RSZXN1bHQoY29uc3QgSW50UG9pbnQm
IGNlbnRlclBvaW50LCB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcs
IHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nKTsKICAgICBIaXRU
ZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RSZXN1bHQmKTsKICAgICB+SGl0VGVzdFJlc3VsdCgpOwog
ICAgIEhpdFRlc3RSZXN1bHQmIG9wZXJhdG9yPShjb25zdCBIaXRUZXN0UmVzdWx0Jik7CkBAIC0x
MDAsOSArMTAwLDEyIEBAIHB1YmxpYzoKICAgICBib29sIGlzUmVjdEJhc2VkVGVzdCgpIGNvbnN0
IHsgcmV0dXJuIG1faXNSZWN0QmFzZWQ7IH0KICAgICBJbnRSZWN0IHJlY3RGcm9tUG9pbnQoaW50
IHgsIGludCB5KSBjb25zdDsKICAgICBJbnRSZWN0IHJlY3RGcm9tUG9pbnQoY29uc3QgSW50UG9p
bnQmKSBjb25zdDsKLSAgICBJbnRTaXplIHBhZGRpbmcoKSBjb25zdCB7IHJldHVybiBtX3BhZGRp
bmc7IH0KLSAgICBpbnQgcGFkZGluZ1dpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9wYWRkaW5nLndp
ZHRoKCk7IH0KLSAgICBpbnQgcGFkZGluZ0hlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFkZGlu
Zy5oZWlnaHQoKTsgfQorICAgIHN0YXRpYyBJbnRSZWN0IHJlY3RGcm9tUG9pbnQoY29uc3QgSW50
UG9pbnQmLCB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcsIHVuc2ln
bmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nKTsKKyAgICBpbnQgdG9wUGFk
ZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fdG9wUGFkZGluZzsgfQorICAgIGludCByaWdodFBhZGRp
bmcoKSBjb25zdCB7IHJldHVybiBtX3JpZ2h0UGFkZGluZzsgfQorICAgIGludCBib3R0b21QYWRk
aW5nKCkgY29uc3QgeyByZXR1cm4gbV9ib3R0b21QYWRkaW5nOyB9CisgICAgaW50IGxlZnRQYWRk
aW5nKCkgY29uc3QgeyByZXR1cm4gbV9sZWZ0UGFkZGluZzsgfQorCiAgICAgLy8gUmV0dXJucyB0
cnVlIGlmIGl0IGlzIHJlY3QtYmFzZWQgaGl0IHRlc3QgYW5kIG5lZWRzIHRvIGNvbnRpbnVlIHVu
dGlsIHRoZSByZWN0IGlzIGZ1bGx5CiAgICAgLy8gZW5jbG9zZWQgYnkgdGhlIGJvdW5kYXJpZXMg
b2YgYSBub2RlLgogICAgIGJvb2wgYWRkTm9kZVRvUmVjdEJhc2VkVGVzdFJlc3VsdChOb2RlKiwg
aW50IHgsIGludCB5LCBjb25zdCBJbnRSZWN0JiByZWN0ID0gSW50UmVjdCgpKTsKQEAgLTEyNCwz
NCArMTI3LDI2IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFNjcm9sbGJhcj4gbV9zY3JvbGxiYXI7
CiAgICAgYm9vbCBtX2lzT3ZlcldpZGdldDsgLy8gUmV0dXJucyB0cnVlIGlmIHdlIGFyZSBvdmVy
IGEgd2lkZ2V0IChhbmQgbm90IGluIHRoZSBib3JkZXIvcGFkZGluZyBhcmVhIG9mIGEgUmVuZGVy
V2lkZ2V0IGZvciBleGFtcGxlKS4KICAgICBib29sIG1faXNSZWN0QmFzZWQ7Ci0gICAgSW50U2l6
ZSBtX3BhZGRpbmc7CisgICAgaW50IG1fdG9wUGFkZGluZzsKKyAgICBpbnQgbV9yaWdodFBhZGRp
bmc7CisgICAgaW50IG1fYm90dG9tUGFkZGluZzsKKyAgICBpbnQgbV9sZWZ0UGFkZGluZzsKICAg
ICBMaXN0SGFzaFNldDxSZWZQdHI8Tm9kZT4gPiBtX3JlY3RCYXNlZFRlc3RSZXN1bHQ7CiB9Owog
CiBpbmxpbmUgSW50UmVjdCBIaXRUZXN0UmVzdWx0OjpyZWN0RnJvbVBvaW50KGludCB4LCBpbnQg
eSkgY29uc3QKIHsKLSAgICByZXR1cm4gcmVjdEZyb21Qb2ludChJbnRQb2ludCh4LCB5KSk7Cisg
ICAgcmV0dXJuIHJlY3RGcm9tUG9pbnQoSW50UG9pbnQoeCwgeSksIG1fdG9wUGFkZGluZywgbV9y
aWdodFBhZGRpbmcsIG1fYm90dG9tUGFkZGluZywgbV9sZWZ0UGFkZGluZyk7CiB9CiAKIC8vIEZv
cm11bGE6Ci0vLyB4ID0gcC54KCkgLSBwYWRkaW5nLndpZHRoKCkKLS8vIHkgPSBwLnkoKSAtIHBh
ZGRpbmcuaGVpZ2h0KCkKLS8vIHdpZHRoID0gMiAqIHBhZGRpbmcud2lkdGgoKSArIDEKLS8vIGhl
aWdodCA9IDIgKiBtX3BhZGRpbmcuaGVpZ2h0KCkgKyAxCisvLyB4ID0gcC54KCkgLSByaWdodFBh
ZGRpbmcKKy8vIHkgPSBwLnkoKSAtIHRvcFBhZGRpbmcKKy8vIHdpZHRoID0gbGVmdFBhZGRpbmcg
KyByaWdodFBhZGRpbmcgKyAxCisvLyBoZWlnaHQgPSB0b3BQYWRkaW5nICsgYm90dG9tUGFkZGlu
ZyArIDEKIGlubGluZSBJbnRSZWN0IEhpdFRlc3RSZXN1bHQ6OnJlY3RGcm9tUG9pbnQoY29uc3Qg
SW50UG9pbnQmIHBvaW50KSBjb25zdAogewotICAgIEludFBvaW50IHJlYWxQb2ludChwb2ludCk7
Ci0gICAgSW50U2l6ZSByZWFsUGFkZGluZyhtX3BhZGRpbmcpOwotCi0gICAgLy8gUmVhbCBJbnRQ
b2ludCBmb3IgdGhlIHJlY3QuCi0gICAgcmVhbFBhZGRpbmcuY2xhbXBOZWdhdGl2ZVRvWmVybygp
OwotICAgIHJlYWxQb2ludCAtPSByZWFsUGFkZGluZzsKLQotICAgIC8vIFJlYWwgSW50U2l6ZSBm
b3IgdGhlIHJlY3QuCi0gICAgcmVhbFBhZGRpbmcuc2NhbGUoMik7Ci0gICAgcmVhbFBhZGRpbmcg
Kz0gSW50U2l6ZSgxLCAxKTsKLQotICAgIHJldHVybiBJbnRSZWN0KHJlYWxQb2ludCwgcmVhbFBh
ZGRpbmcpOworICAgIHJldHVybiByZWN0RnJvbVBvaW50KHBvaW50LCBtX3RvcFBhZGRpbmcsIG1f
cmlnaHRQYWRkaW5nLCBtX2JvdHRvbVBhZGRpbmcsIG1fbGVmdFBhZGRpbmcpOwogfQogCiBTdHJp
bmcgZGlzcGxheVN0cmluZyhjb25zdCBTdHJpbmcmLCBjb25zdCBOb2RlKik7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbWFnZS5jcHAKaW5kZXggZjc2MTFiNi4uZTFlZGY1ZCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmNwcApAQCAtMzU5LDcgKzM1OSw3IEBAIEhUTUxNYXBFbGVtZW50KiBSZW5kZXJJbWFn
ZTo6aW1hZ2VNYXAoKSBjb25zdAogCiBib29sIFJlbmRlckltYWdlOjpub2RlQXRQb2ludChjb25z
dCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBpbnQgeCwg
aW50IHksIGludCB0eCwgaW50IHR5LCBIaXRUZXN0QWN0aW9uIGhpdFRlc3RBY3Rpb24pCiB7Ci0g
ICAgSGl0VGVzdFJlc3VsdCB0ZW1wUmVzdWx0KHJlc3VsdC5wb2ludCgpLCByZXN1bHQucGFkZGlu
ZygpKTsKKyAgICBIaXRUZXN0UmVzdWx0IHRlbXBSZXN1bHQocmVzdWx0LnBvaW50KCksIHJlc3Vs
dC50b3BQYWRkaW5nKCksIHJlc3VsdC5yaWdodFBhZGRpbmcoKSwgcmVzdWx0LmJvdHRvbVBhZGRp
bmcoKSwgcmVzdWx0LmxlZnRQYWRkaW5nKCkpOwogICAgIGJvb2wgaW5zaWRlID0gUmVuZGVyUmVw
bGFjZWQ6Om5vZGVBdFBvaW50KHJlcXVlc3QsIHRlbXBSZXN1bHQsIHgsIHksIHR4LCB0eSwgaGl0
VGVzdEFjdGlvbik7CiAKICAgICBpZiAodGVtcFJlc3VsdC5pbm5lck5vZGUoKSAmJiBub2RlKCkp
IHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCAxNGUyYWY4Li4xYjRiMWRhIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0yOTAxLDcgKzI5MDEsNyBAQCBSZW5kZXJMYXll
ciogUmVuZGVyTGF5ZXI6OmhpdFRlc3RMYXllcihSZW5kZXJMYXllciogcm9vdExheWVyLCBSZW5k
ZXJMYXllciogY29udAogICAgIC8vIE5leHQgd2Ugd2FudCB0byBzZWUgaWYgdGhlIG1vdXNlIHBv
cyBpcyBpbnNpZGUgdGhlIGNoaWxkIFJlbmRlck9iamVjdHMgb2YgdGhlIGxheWVyLgogICAgIGlm
IChmZ1JlY3QuaW50ZXJzZWN0cyhoaXRUZXN0QXJlYSkgJiYgaXNTZWxmUGFpbnRpbmdMYXllcigp
KSB7CiAgICAgICAgIC8vIEhpdCB0ZXN0IHdpdGggYSB0ZW1wb3JhcnkgSGl0VGVzdFJlc3VsdCwg
YmVjYXVzZSB3ZSBvbmx5IHdhbnQgdG8gY29tbWl0IHRvICdyZXN1bHQnIGlmIHdlIGtub3cgd2Un
cmUgZnJvbnRtb3N0LgotICAgICAgICBIaXRUZXN0UmVzdWx0IHRlbXBSZXN1bHQocmVzdWx0LnBv
aW50KCksIHJlc3VsdC5wYWRkaW5nKCkpOworICAgICAgICBIaXRUZXN0UmVzdWx0IHRlbXBSZXN1
bHQocmVzdWx0LnBvaW50KCksIHJlc3VsdC50b3BQYWRkaW5nKCksIHJlc3VsdC5yaWdodFBhZGRp
bmcoKSwgcmVzdWx0LmJvdHRvbVBhZGRpbmcoKSwgcmVzdWx0LmxlZnRQYWRkaW5nKCkpOwogICAg
ICAgICBpZiAoaGl0VGVzdENvbnRlbnRzKHJlcXVlc3QsIHRlbXBSZXN1bHQsIGxheWVyQm91bmRz
LCBoaXRUZXN0UG9pbnQsIEhpdFRlc3REZXNjZW5kYW50cykgJiYKICAgICAgICAgICAgIGlzSGl0
Q2FuZGlkYXRlKHRoaXMsIGZhbHNlLCB6T2Zmc2V0Rm9yQ29udGVudHNQdHIsIHVuZmxhdHRlbmVk
VHJhbnNmb3JtU3RhdGUuZ2V0KCkpKSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0LmlzUmVjdEJh
c2VkVGVzdCgpKQpAQCAtMjkzMCw3ICsyOTMwLDcgQEAgUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVy
OjpoaXRUZXN0TGF5ZXIoUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgUmVuZGVyTGF5ZXIqIGNvbnQK
ICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZUxheWVyOwogCiAgICAgaWYgKGJnUmVjdC5pbnRlcnNl
Y3RzKGhpdFRlc3RBcmVhKSAmJiBpc1NlbGZQYWludGluZ0xheWVyKCkpIHsKLSAgICAgICAgSGl0
VGVzdFJlc3VsdCB0ZW1wUmVzdWx0KHJlc3VsdC5wb2ludCgpLCByZXN1bHQucGFkZGluZygpKTsK
KyAgICAgICAgSGl0VGVzdFJlc3VsdCB0ZW1wUmVzdWx0KHJlc3VsdC5wb2ludCgpLCByZXN1bHQu
dG9wUGFkZGluZygpLCByZXN1bHQucmlnaHRQYWRkaW5nKCksIHJlc3VsdC5ib3R0b21QYWRkaW5n
KCksIHJlc3VsdC5sZWZ0UGFkZGluZygpKTsKICAgICAgICAgaWYgKGhpdFRlc3RDb250ZW50cyhy
ZXF1ZXN0LCB0ZW1wUmVzdWx0LCBsYXllckJvdW5kcywgaGl0VGVzdFBvaW50LCBIaXRUZXN0U2Vs
ZikgJiYKICAgICAgICAgICAgIGlzSGl0Q2FuZGlkYXRlKHRoaXMsIGZhbHNlLCB6T2Zmc2V0Rm9y
Q29udGVudHNQdHIsIHVuZmxhdHRlbmVkVHJhbnNmb3JtU3RhdGUuZ2V0KCkpKSB7CiAgICAgICAg
ICAgICBpZiAocmVzdWx0LmlzUmVjdEJhc2VkVGVzdCgpKQpAQCAtMjk4Nyw3ICsyOTg3LDcgQEAg
UmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjpoaXRUZXN0TGlzdChWZWN0b3I8UmVuZGVyTGF5ZXIq
PiogbGlzdCwgUmVuZGVyTGF5ZXIqIHIKICAgICBmb3IgKGludCBpID0gbGlzdC0+c2l6ZSgpIC0g
MTsgaSA+PSAwOyAtLWkpIHsKICAgICAgICAgUmVuZGVyTGF5ZXIqIGNoaWxkTGF5ZXIgPSBsaXN0
LT5hdChpKTsKICAgICAgICAgUmVuZGVyTGF5ZXIqIGhpdExheWVyID0gMDsKLSAgICAgICAgSGl0
VGVzdFJlc3VsdCB0ZW1wUmVzdWx0KHJlc3VsdC5wb2ludCgpLCByZXN1bHQucGFkZGluZygpKTsK
KyAgICAgICAgSGl0VGVzdFJlc3VsdCB0ZW1wUmVzdWx0KHJlc3VsdC5wb2ludCgpLCByZXN1bHQu
dG9wUGFkZGluZygpLCByZXN1bHQucmlnaHRQYWRkaW5nKCksIHJlc3VsdC5ib3R0b21QYWRkaW5n
KCksIHJlc3VsdC5sZWZ0UGFkZGluZygpKTsKICAgICAgICAgaWYgKGNoaWxkTGF5ZXItPmlzUGFn
aW5hdGVkKCkpCiAgICAgICAgICAgICBoaXRMYXllciA9IGhpdFRlc3RQYWdpbmF0ZWRDaGlsZExh
eWVyKGNoaWxkTGF5ZXIsIHJvb3RMYXllciwgcmVxdWVzdCwgdGVtcFJlc3VsdCwgaGl0VGVzdFJl
Y3QsIGhpdFRlc3RQb2ludCwgdHJhbnNmb3JtU3RhdGUsIHpPZmZzZXRGb3JEZXNjZW5kYW50cyk7
CiAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVC
b3hMaXN0LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCb3hMaXN0LmNwcAppbmRl
eCA0NWU2NmViLi43NjBkMmVhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
aW5lQm94TGlzdC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJveExpc3Qu
Y3BwCkBAIC0yNDYsMTYgKzI0NiwxNiBAQCBib29sIFJlbmRlckxpbmVCb3hMaXN0OjpoaXRUZXN0
KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZW5kZXJlciwgY29uc3QgSGl0VGVzdFJlcQogICAgIC8v
IGNvbnRhaW4gdGhlIHBvaW50LiAgVGhpcyBpcyBhIHF1aWNrIHNob3J0LWNpcmN1aXQgdGhhdCB3
ZSBjYW4gdGFrZSB0byBhdm9pZCB3YWxraW5nIGFueSBsaW5lcy4KICAgICAvLyBGSVhNRTogVGhp
cyBjaGVjayBpcyBmbGF3ZWQgaW4gdGhlIGZvbGxvd2luZyBleHRyZW1lbHkgb2JzY3VyZSB3YXk6
CiAgICAgLy8gaWYgc29tZSBsaW5lIGluIHRoZSBtaWRkbGUgaGFzIGEgaHVnZSBvdmVyZmxvdywg
aXQgbWlnaHQgYWN0dWFsbHkgZXh0ZW5kIGJlbG93IHRoZSBsYXN0IGxpbmUuCi0gICAgaWYgKHkg
LSByZXN1bHQucGFkZGluZ0hlaWdodCgpID49IHR5ICsgbGFzdExpbmVCb3goKS0+cm9vdCgpLT5i
b3R0b21WaXNpYmxlT3ZlcmZsb3coKQotICAgICB8fCB5ICsgcmVzdWx0LnBhZGRpbmdIZWlnaHQo
KSA8IHR5ICsgZmlyc3RMaW5lQm94KCktPnJvb3QoKS0+dG9wVmlzaWJsZU92ZXJmbG93KCkpCisg
ICAgaWYgKHkgLSByZXN1bHQudG9wUGFkZGluZygpID49IHR5ICsgbGFzdExpbmVCb3goKS0+cm9v
dCgpLT5ib3R0b21WaXNpYmxlT3ZlcmZsb3coKQorICAgICB8fCB5ICsgcmVzdWx0LmJvdHRvbVBh
ZGRpbmcoKSA8IHR5ICsgZmlyc3RMaW5lQm94KCktPnJvb3QoKS0+dG9wVmlzaWJsZU92ZXJmbG93
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIFNlZSBpZiBvdXIgcm9vdCBsaW5l
cyBjb250YWluIHRoZSBwb2ludC4gIElmIHNvLCB0aGVuIHdlIGhpdCB0ZXN0CiAgICAgLy8gdGhl
bSBmdXJ0aGVyLiAgTm90ZSB0aGF0IGJveGVzIGNhbiBlYXNpbHkgb3ZlcmxhcCwgc28gd2UgY2Fu
J3QgbWFrZSBhbnkgYXNzdW1wdGlvbnMKICAgICAvLyBiYXNlZCBvZmYgcG9zaXRpb25zIG9mIG91
ciBmaXJzdCBsaW5lIGJveCBvciBvdXIgbGFzdCBsaW5lIGJveC4KICAgICBmb3IgKElubGluZUZs
b3dCb3gqIGN1cnIgPSBsYXN0TGluZUJveCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+cHJldkxpbmVC
b3goKSkgewotICAgICAgICBpZiAoeSArIHJlc3VsdC5wYWRkaW5nSGVpZ2h0KCkgPj0gdHkgKyBj
dXJyLT5yb290KCktPnRvcFZpc2libGVPdmVyZmxvdygpCi0gICAgICAgICAmJiB5IC0gcmVzdWx0
LnBhZGRpbmdIZWlnaHQoKSA8IHR5ICsgY3Vyci0+cm9vdCgpLT5ib3R0b21WaXNpYmxlT3ZlcmZs
b3coKSkgeworICAgICAgICBpZiAoeSArIHJlc3VsdC5ib3R0b21QYWRkaW5nKCkgPj0gdHkgKyBj
dXJyLT5yb290KCktPnRvcFZpc2libGVPdmVyZmxvdygpCisgICAgICAgICAmJiB5IC0gcmVzdWx0
LnRvcFBhZGRpbmcoKSA8IHR5ICsgY3Vyci0+cm9vdCgpLT5ib3R0b21WaXNpYmxlT3ZlcmZsb3co
KSkgewogICAgICAgICAgICAgYm9vbCBpbnNpZGUgPSBjdXJyLT5ub2RlQXRQb2ludChyZXF1ZXN0
LCByZXN1bHQsIHgsIHksIHR4LCB0eSk7CiAgICAgICAgICAgICBpZiAoaW5zaWRlKSB7CiAgICAg
ICAgICAgICAgICAgcmVuZGVyZXItPnVwZGF0ZUhpdFRlc3RSZXN1bHQocmVzdWx0LCBJbnRQb2lu
dCh4IC0gdHgsIHkgLSB0eSkpOwotLSAKMS42LjQuMgoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68867</attachid>
            <date>2010-09-26 18:14:54 -0700</date>
            <delta_ts>2010-09-26 20:31:22 -0700</delta_ts>
            <desc>patch v3</desc>
            <filename>0001-Make-Document-nodesFromRect-more-flexible.patch</filename>
            <type>text/plain</type>
            <size>38101</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSAwMjkwOTEzZGQwZjMxMzcyMzRmODlkZjQ5NjNmYzNlZGNkNjUzNmI3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4K
RGF0ZTogVGh1LCAyMyBTZXAgMjAxMCAyMzo1MDoyMyAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIE1h
a2UgRG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QgbW9yZSBmbGV4aWJsZQogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2MzM2CgpQYXRjaCBieSBBbnRvbmlvIEdvbWVzIDxh
Z29tZXNAcmltLmNvbT4gb24gMjAxMC0wOS0yMwpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
ClRoZSBwYXRjaCBjaGFuZ2VzIHRoZSBBUEkgZm9yIHRoZSBEb2N1bWVudDo6bm9kZXNGcm9tUmVj
dCgpIG1ldGhvZCBhcyBmb2xsb3dzOgoKZnJvbQoKLSBSZWZQdGY8Tm9kZUxpc3Q+IG5vZGVzRnJv
bVJlY3QoaW50IHgsIGludCB5LCB1bnNpZ25lZCBob3Jpem9udGFsUGFkZGluZywgdW5zaWduZWQg
dmVydGljYWxQYWRkaW5nLCBib29sIGlnbm9yZUNsaXBwaW5nKQoKdG8KCi0gUmVmUHRmPE5vZGVM
aXN0PiBub2Rlc0Zyb21SZWN0KGludCB4LCBpbnQgeSwgdW5zaWduZWQgdG9wUGFkZGluZywgdW5z
aWduZWQgcmlnaHRQYWRkaW5nLCB1bnNpZ25lZCBib3R0b21QYWRkaW5nLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsZWZ0UGFkZGluZywgYm9vbCBpZ25vcmVDbGlw
cGluZykKClByZXZpb3VzbHkgdGhlIG1ldGhvZCB3YXMgcmVjZWl2aW5nIGFzIHBhcmFtZXRlciBo
b3Jpem9udGFsIGFuZCB2ZXJ0aWNhbCBwYWRkaW5nIHZhbHVlcy4KSW4gcHJhY3RpY2UsIHRoZSBo
b3Jpem9udGFsIHBhZGRpbmcgd2FzIGJlaW5nIHVzZWQgdG8gZXhwYW5kIGEgZ2l2ZW4gY2VudGVy
IHBvaW50IGluIGJvdGgKcmlnaHQgYW5kIGxlZnQgZGlyZWN0aW9ucywgd2hpbGUgdmVydGljYWwg
cGFkZGluZyB3YXMgZXhwYW5kaW5nIGl0IHRvIHRoZSB0b3AgYW5kIGJvdHRvbSBkaXJlY3Rpb25z
LgoKQWx0aG91Z2ggdGhpcyBkZXNpZ24gbWFrZXMgaXQgcG9zc2libGUgdG8gaW1wcm92ZSB0aGUg
dG91Y2ggZXhwZXJpZW5jZSBvbiBtb2JpbGUgZGV2aWNlcwooRG9jdW1lbnQ6Om5vZGVzRnJvbVJl
Y3QgZXhwb3NlcyB0aGUgcmVjdCBiYXNlZCBoaXQgdGVzdGluZyBzeXN0ZW0pLCBlbXBpcmljYWwg
ZXhwZXJpbWVudHMKc2hvd2VkIHRoYXQsIHNwZWNpYWxseSBpbiBjYXBhY2l0aXZlIHRvdWNoIHNj
cmVlbnMsIHVzZXJzIHRlbmQgdG8gdGFwIGJlbG93IGVsZW1lbnRzLiBTbwpmb3IgZXZlbiBtb3Jl
IGFjY3VyYXRlIHJlc3VsdHMgKHdoaWNoIG1lYW5zIGhlcmUgdGhlIHBvc3NpYmlsaXR5IG9mIHBs
ZWFzYW50IHRhcHBpbmcgZXhwZXJpZW5jZSksCml0IG1ha2VzIHNlbnNlIHRvIHVzZSBhIHJlZ2lv
biB0aGF0IGlzIG9mZnNldCBtb3JlIGFib3ZlIHRoZSB0b3VjaCBwb2ludCwgZmF2b3JpbmcgZWxl
bWVudHMKYWJvdmUgdGhlIHRvdWNoIHBvaW50LgoKVGhlIHBhdGNoIGJhc2ljYWxseSBpbXBsZW1l
bnRzIHRoYXQsIGluY3JlYXNpbmcgdGhlIEFQSSBmbGV4aWJsZSBhbmQgcG93ZXIgYnkgbWFraW5n
IGl0IHBvc3NpYmxlCnRvIHNwZWNpZnkgZGlmZmVyZW50IHBhZGRpbmcgdmFsdWVzIGZvciBlYWNo
IGRpcmVjdGlvbiBpbiBhIGdpdmVuIG9yaWVudGF0aW9uLgoKQ2hhbmdlcyB3ZXJlIG1hZGUgYWNj
b3JkaW5nbHkgdG8gdGhlIEhpdFRlc3RSZXN1bHQsIFJlbmRlckxheWVyLCBSZW5kZXJJbWFnZSBh
bmQgUmVuZGVyTGluZUJveExpc3QKY2xhc3Nlcy4KCldlYkNvcmU6CgoqIFdlYkNvcmUuZXhwLmlu
OgoqIGRvbS9Eb2N1bWVudC5jcHA6CihXZWJDb3JlOjpEb2N1bWVudDo6bm9kZXNGcm9tUmVjdCk6
CiogZG9tL0RvY3VtZW50Lmg6CiogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgooV2ViQ29yZTo6RXZl
bnRIYW5kbGVyOjpoaXRUZXN0UmVzdWx0QXRQb2ludCk6IEZvciBzaW1wbGljaXR5LCBJIGRpZCBu
b3QgY2hhbmdlIHRoZSBzaWduYXR1cmUKICAgIGJ1dCB0aGUgd2F5IHRoZSBwYWRkaW5nIHZhbHVl
IHBhc3NlZCBpbiBhcyBwYXJhbWV0ZXIgaXMgYmVpbmcgdXNlZCB0byBjb25zdHJ1Y3QgYSBIaXRU
ZXN0UmVzdWx0LgoqIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcDogQ2hhbmdlZCB0aGUgcmVj
dC1iYXNlZCBiaXRzIGZyb20gdXNpbmcgSW50U2l6ZSAocGFkZGluZykgdG8gc2VwYXJhdGVkIHBh
ZGRpbmdzCiAgICBmb3IgZWFjaCBkaXJlY3Rpb24uCihXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpI
aXRUZXN0UmVzdWx0KTogRGl0dG8uCihXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpvcGVyYXRvcj0p
OiBEaXR0by4KKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OnJlY3RGcm9tUG9pbnQpOiBEaXR0b24u
CiogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaDoKKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OnRv
cFBhZGRpbmcpOiBnZXR0ZXIgZm9yIHRoZSB0b3AgcGFkZGluZy4KKFdlYkNvcmU6OkhpdFRlc3RS
ZXN1bHQ6OnJpZ2h0UGFkZGluZyk6IGdldHRlciBmb3IgdGhlIHJpZ2h0IHBhZGRpbmcuCihXZWJD
b3JlOjpIaXRUZXN0UmVzdWx0Ojpib3R0b21QYWRkaW5nKTogZ2V0dGVyIGZvciB0aGUgYm90dG9t
IHBhZGRpbmcuCihXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpsZWZ0UGFkZGluZyk6IGdldHRlciBm
b3IgdGhlIGxlZnQgcGFkZGluZy4KKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OnJlY3RGcm9tUG9p
bnQpOiBBZGRlZCBhIHN0YXRpYyBtZXRob2QgdGhhdCBnaXZlbiBhIGNlbnRlciBwb2ludCBhbmQg
cGFkZGluZyB2YWx1ZXMgZm9yCiAgICBlYWNoIGRpcmVjdGlvbiwgcmV0dXJucyB0aGUgcmVjdCB0
aGF0IGlzIGdvaW5nIHRvIGJlIHVzZWQgaW4gV2ViQ29yZSdzIGhpdCB0ZXN0aW5nIHByb2Nlc3Np
bmcuCiogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDogQ2hhbmdlZCB0aGUgcmVjdC1iYXNlZCBi
aXRzIGZyb20gdXNpbmcgSW50U2l6ZSAocGFkZGluZykgdG8gc2VwYXJhdGVkIHBhZGRpbmdzIGZv
ciBlYWNoIGRpcmVjdGlvbi4KKFdlYkNvcmU6OlJlbmRlckltYWdlOjpub2RlQXRQb2ludCk6IERp
dHRvLgoqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6IERpdHRvLgooV2ViQ29yZTo6UmVuZGVy
TGF5ZXI6OmhpdFRlc3RMYXllcik6IERpdHRvLgooV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmhpdFRl
c3RMaXN0KTogRGl0dG8uCiogcmVuZGVyaW5nL1JlbmRlckxpbmVCb3hMaXN0LmNwcDogRGl0dG8u
CihXZWJDb3JlOjpSZW5kZXJMaW5lQm94TGlzdDo6aGl0VGVzdCk6IERpdHRvLgoKTGF5b3V0VGVz
dHM6CgoqIGZhc3QvZG9tL25vZGVzRnJvbVJlY3QtYmFzaWMtZXhwZWN0ZWQudHh0OgoqIGZhc3Qv
ZG9tL25vZGVzRnJvbVJlY3QtYmFzaWMuaHRtbDoKKiBmYXN0L2RvbS9yZXNvdXJjZXMvbm9kZXNG
cm9tUmVjdC5qczoKKGNoZWNrKToKLS0tCiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgMTQgKysrKwogLi4uL2Zhc3QvZG9tL25vZGVzRnJvbVJl
Y3QtYmFzaWMtZXhwZWN0ZWQudHh0ICAgICAgfCAgIDQ0ICsrKysrKystLS0tLS0tCiBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMvbm9kZXNGcm9tUmVjdC5qcyAgICB8ICAgMTYgKysrLS0K
IFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA2
NCArKysrKysrKysrKysrKysrKysrKwogV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCAgICAxICsKIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgICAgOSArLS0KIFdlYkNvcmUvZG9tL0RvY3VtZW50Lmgg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMCArKystCiBXZWJDb3JlL3BhZ2UvRXZl
bnRIYW5kbGVyLmNwcCAgICAgICAgICAgICAgICAgICAgICB8ICAgIDQgKy0KIFdlYkNvcmUvcmVu
ZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwICAgICAgICAgICAgICAgIHwgICA0OCArKysrKysrKysr
KystLS0KIFdlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaCAgICAgICAgICAgICAgICAg
IHwgICA0MSArKysrKystLS0tLS0tCiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAg
ICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcCAgICAgICAgICAgICAgICAgIHwgICAgNiArLQogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGluZUJveExpc3QuY3BwICAgICAgICAgICAgfCAgICA4ICstCiBXZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbSAgICAgICAgICAgICAgICAgICAgICB8ICAgIDQgKy0KIFdlYktpdC9tYWMvV2Vi
Vmlldy9XZWJWaWV3UHJpdmF0ZS5oICAgICAgICAgICAgICAgIHwgICAgMiArLQogLi4uL0R1bXBS
ZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCAgICAgICAgfCAgIDEyICsrLS0KIFdl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmggIHwgICAgMiAr
LQogLi4uL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbSAgfCAg
ICA0ICstCiAxOCBmaWxlcyBjaGFuZ2VkLCAyMDMgaW5zZXJ0aW9ucygrKSwgODggZGVsZXRpb25z
KC0pCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IGQ3NDA5N2QuLmM3OTMxMDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAx
MC0wOS0yMyAgQW50b25pbyBHb21lcyAgPGFnb21lc0ByaW0uY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgRG9jdW1lbnQ6Om5vZGVzRnJv
bVJlY3QgbW9yZSBmbGV4aWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDYzMzYKKworICAgICAgICBUZXN0cyBiYXNpY2FsbHkgYWRqdXN0ZWQgdG8g
dGhlIG5ldyBBUEkuCisKKyAgICAgICAgKiBmYXN0L2RvbS9ub2Rlc0Zyb21SZWN0LWJhc2ljLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9ub2Rlc0Zyb21SZWN0LWJhc2ljLmh0bWw6
CisgICAgICAgICogZmFzdC9kb20vcmVzb3VyY2VzL25vZGVzRnJvbVJlY3QuanM6CisgICAgICAg
IChjaGVjayk6CisKIDIwMTAtMDktMjYgIEFudG9uaW8gR29tZXMgIDxhZ29tZXNAcmltLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3QtYmFzaWMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9tUmVjdC1iYXNpYy1leHBlY3RlZC50
eHQKaW5kZXggODlmMWVhMy4uNDU5MTVmZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9k
b20vbm9kZXNGcm9tUmVjdC1iYXNpYy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vbm9kZXNGcm9tUmVjdC1iYXNpYy1leHBlY3RlZC50eHQKQEAgLTEsMjYgKzEsMjYgQEAK
IFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQotUEFTUyBB
bGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdCBbNTMsNzFdLCBbMCwwXQotUEFTUyBBbGwg
Y29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdCBbNTMsNzFdLCBbMTAsMF0KLVBBU1MgQWxsIGNv
cnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QgWzUzLDcxXSwgWzAsMTBdCi1QQVNTIEFsbCBjb3Jy
ZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0IFs1Myw3MV0sIFsxMCwxMF0KLVBBU1MgQWxsIGNvcnJl
Y3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QgWzE1MiwxMDVdLCBbMCwxMF0KLVBBU1MgQWxsIGNvcnJl
Y3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QgWzE1MiwxMDVdLCBbMTAsMF0KLVBBU1MgQWxsIGNvcnJl
Y3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QgWzE1MiwxMDVdLCBbMTAsMTBdCi1QQVNTIEFsbCBjb3Jy
ZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0IFsxNTMsMTkzXSwgWzAsMF0KLVBBU1MgQWxsIGNvcnJl
Y3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QgWzE1MywxOTNdLCBbMjAsMF0KLVBBU1MgQWxsIGNvcnJl
Y3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QgWzE1MywxOTNdLCBbMCwyMF0KLVBBU1MgQWxsIGNvcnJl
Y3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QgWzE0NCwxODNdLCBbMCwwXQotUEFTUyBBbGwgY29ycmVj
dCBub2RlcyBmb3VuZCBmb3IgcmVjdCBbMTQ0LDE4M10sIFswLDFdCi1QQVNTIEFsbCBjb3JyZWN0
IG5vZGVzIGZvdW5kIGZvciByZWN0IFsxNDQsMTgzXSwgWzEsMF0KLVBBU1MgQWxsIGNvcnJlY3Qg
bm9kZXMgZm91bmQgZm9yIHJlY3QgWzE0NCwxODNdLCBbMSwxXQotUEFTUyBBbGwgY29ycmVjdCBu
b2RlcyBmb3VuZCBmb3IgcmVjdCBbNzcsMjQwXSwgWzAsMF0KLVBBU1MgQWxsIGNvcnJlY3Qgbm9k
ZXMgZm91bmQgZm9yIHJlY3QgWzc3LDI0MF0sIFsxMCwwXQotUEFTUyBBbGwgY29ycmVjdCBub2Rl
cyBmb3VuZCBmb3IgcmVjdCBbNzcsMjQwXSwgWzAsMTBdCi1QQVNTIEFsbCBjb3JyZWN0IG5vZGVz
IGZvdW5kIGZvciByZWN0IFs3NywyNDBdLCBbMTAsMTBdCi1QQVNTIEFsbCBjb3JyZWN0IG5vZGVz
IGZvdW5kIGZvciByZWN0IFszOSwyMTJdLCBbMCwwXQotUEFTUyBBbGwgY29ycmVjdCBub2RlcyBm
b3VuZCBmb3IgcmVjdCBbMzksMjEyXSwgWzAsMTBdCi1QQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZv
dW5kIGZvciByZWN0IFszOSwyMTJdLCBbMTAsMF0KLVBBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91
bmQgZm9yIHJlY3QgWzM5LDIxMl0sIFsxMCwxMF0KK1BBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91
bmQgZm9yIHJlY3QgWzUzLDcxXSwgWzAsMCwwLDBdCitQQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZv
dW5kIGZvciByZWN0IFs1Myw3MV0sIFswLDEwLDAsMTBdCitQQVNTIEFsbCBjb3JyZWN0IG5vZGVz
IGZvdW5kIGZvciByZWN0IFs1Myw3MV0sIFsxMCwwLDEwLDBdCitQQVNTIEFsbCBjb3JyZWN0IG5v
ZGVzIGZvdW5kIGZvciByZWN0IFs1Myw3MV0sIFsxMCwxMCwxMCwxMF0KK1BBU1MgQWxsIGNvcnJl
Y3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QgWzE1MiwxMDVdLCBbMTAsMCwxMCwwXQorUEFTUyBBbGwg
Y29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdCBbMTUyLDEwNV0sIFswLDEwLDAsMTBdCitQQVNT
IEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0IFsxNTIsMTA1XSwgWzEwLDEwLDEwLDEw
XQorUEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdCBbMTUzLDE5M10sIFswLDAs
MCwwXQorUEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdCBbMTUzLDE5M10sIFsw
LDIwLDAsMjBdCitQQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0IFsxNTMsMTkz
XSwgWzIwLDAsMjAsMF0KK1BBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QgWzE0
NCwxODNdLCBbMCwwLDAsMF0KK1BBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3Qg
WzE0NCwxODNdLCBbMSwwLDEsMF0KK1BBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJl
Y3QgWzE0NCwxODNdLCBbMCwxLDAsMV0KK1BBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9y
IHJlY3QgWzE0NCwxODNdLCBbMSwxLDEsMV0KK1BBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQg
Zm9yIHJlY3QgWzc3LDI0MF0sIFswLDAsMCwwXQorUEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3Vu
ZCBmb3IgcmVjdCBbNzcsMjQwXSwgWzAsMTAsMCwxMF0KK1BBU1MgQWxsIGNvcnJlY3Qgbm9kZXMg
Zm91bmQgZm9yIHJlY3QgWzc3LDI0MF0sIFsxMCwwLDEwLDBdCitQQVNTIEFsbCBjb3JyZWN0IG5v
ZGVzIGZvdW5kIGZvciByZWN0IFs3NywyNDBdLCBbMTAsMTAsMTAsMTBdCitQQVNTIEFsbCBjb3Jy
ZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0IFszOSwyMTJdLCBbMCwwLDAsMF0KK1BBU1MgQWxsIGNv
cnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QgWzM5LDIxMl0sIFsxMCwwLDEwLDBdCitQQVNTIEFs
bCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0IFszOSwyMTJdLCBbMCwxMCwwLDEwXQorUEFT
UyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdCBbMzksMjEyXSwgWzEwLDEwLDEwLDEw
XQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMvbm9kZXNGcm9t
UmVjdC5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNlcy9ub2Rlc0Zyb21SZWN0Lmpz
CmluZGV4IDA2NzE2MzkuLjQyZDdmOWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3Jlc291cmNlcy9ub2Rlc0Zyb21SZWN0LmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3Jl
c291cmNlcy9ub2Rlc0Zyb21SZWN0LmpzCkBAIC0zLDE5ICszLDIxIEBACiAgKiAgICAgKiBBbnRv
bmlvIEdvbWVzIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4KICAqKi8KIAotZnVuY3Rpb24gY2hlY2so
eCwgeSwgaFBhZGRpbmcsIHZQYWRkaW5nLCBsaXN0KQorZnVuY3Rpb24gY2hlY2soeCwgeSwgdG9w
UGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0UGFkZGluZywgbGlzdCkK
IHsKICAgaWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCiAgICAgcmV0dXJuOwogCi0g
IHZhciBub2RlcyA9IGxheW91dFRlc3RDb250cm9sbGVyLm5vZGVzRnJvbVJlY3QoZG9jdW1lbnQs
IHgsIHksIGhQYWRkaW5nLCB2UGFkZGluZywgdHJ1ZSAvKiBpZ25vcmVDbGlwcGluZyAqLyk7Cisg
IHZhciBub2RlcyA9IGxheW91dFRlc3RDb250cm9sbGVyLm5vZGVzRnJvbVJlY3QoZG9jdW1lbnQs
IHgsIHksIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRp
bmcsIHRydWUgLyogaWdub3JlQ2xpcHBpbmcgKi8pOwogICBpZiAoIW5vZGVzKQogICAgIHJldHVy
bjsKIAogICBpZiAobm9kZXMubGVuZ3RoICE9IGxpc3QubGVuZ3RoKSB7CiAgICAgdGVzdEZhaWxl
ZCgiRGlmZmVyZW50IG51bWJlciBvZiBub2RlcyBmb3IgcmVjdCIgKwogICAgICAgICAgICAgICAi
WyIgKyB4ICsgIiwiICsgeSArICJdLCAiICsKLSAgICAgICAgICAgICAgIlsiICsgaFBhZGRpbmcg
KyAiLCIgKyB2UGFkZGluZyArICJdOiAnIiArIGxpc3QubGVuZ3RoICsgIicgdnMgJyIgKyBub2Rl
cy5sZW5ndGggKyAiJyIpOworICAgICAgICAgICAgICAiWyIgKyB0b3BQYWRkaW5nICsgIiwiICsg
cmlnaHRQYWRkaW5nICsKKyAgICAgICAgICAgICAgIiwiICsgYm90dG9tUGFkZGluZyArICIsIiAr
IGxlZnRQYWRkaW5nICsKKyAgICAgICAgICAgICAgIl06ICciICsgbGlzdC5sZW5ndGggKyAiJyB2
cyAnIiArIG5vZGVzLmxlbmd0aCArICInIik7CiAgICAgcmV0dXJuOwogICB9CiAKQEAgLTIzLDE0
ICsyNSwxNiBAQCBmdW5jdGlvbiBjaGVjayh4LCB5LCBoUGFkZGluZywgdlBhZGRpbmcsIGxpc3Qp
CiAgICAgaWYgKG5vZGVzW2ldICE9IGxpc3RbaV0pIHsKICAgICAgIHRlc3RGYWlsZWQoIlVuZXhw
ZWN0ZWQgbm9kZSAjIiArIGkgKyAiIGZvciByZWN0ICIgKwogICAgICAgICAgICAgICAgICJbIiAr
IHggKyAiLCIgKyB5ICsgIl0sICIgKwotICAgICAgICAgICAgICAgICJbIiArIGhQYWRkaW5nICsg
IiwiICsgdlBhZGRpbmcgKyAiXSIgKyAiIC0gIiArIG5vZGVzW2ldKTsKKyAgICAgICAgICAgICAg
ICAiWyIgKyB0b3BQYWRkaW5nICsgIiwiICsgcmlnaHRQYWRkaW5nICsKKyAgICAgICAgICAgICAg
ICAiLCIgKyBib3R0b21QYWRkaW5nICsgIiwiICsgbGVmdFBhZGRpbmcgKyAiXSIgKyAiIC0gIiAr
IG5vZGVzW2ldKTsKICAgICAgIHJldHVybjsKICAgICB9CiAgIH0KIAogICB0ZXN0UGFzc2VkKCJB
bGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdCAiICArCi0gICAgICAgICAgICJbIiArIHgg
KyAiLCIgKyB5ICsgIl0sICIgKwotICAgICAgICAgICAiWyIgKyBoUGFkZGluZyArICIsIiArIHZQ
YWRkaW5nICsgIl0iKTsKKyAgICAgICAgICAgICAiWyIgKyB4ICsgIiwiICsgeSArICJdLCAiICsK
KyAgICAgICAgICAgICAiWyIgKyB0b3BQYWRkaW5nICsgIiwiICsgcmlnaHRQYWRkaW5nICsKKyAg
ICAgICAgICAgICAiLCIgKyBib3R0b21QYWRkaW5nICsgIiwiICsgbGVmdFBhZGRpbmcgKyAiXSIp
OwogfQogCiBmdW5jdGlvbiBnZXRDZW50ZXJGb3IoZWxlbWVudCkKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWE2OTFlZC4uMDRiMzVmMyAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw2NyBAQAorMjAxMC0wOS0yMyAgQW50b25pbyBHb21lcyAgPGFnb21lc0ByaW0uY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2Ug
RG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QgbW9yZSBmbGV4aWJsZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDYzMzYKKworICAgICAgICBUaGUgcGF0Y2gg
Y2hhbmdlcyB0aGUgQVBJIGZvciB0aGUgRG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QoKSBtZXRob2Qg
YXMgZm9sbG93czoKKworICAgICAgICBmcm9tCisKKyAgICAgICAgLSBSZWZQdGY8Tm9kZUxpc3Q+
IG5vZGVzRnJvbVJlY3QoaW50IHgsIGludCB5LCB1bnNpZ25lZCBob3Jpem9udGFsUGFkZGluZywg
dW5zaWduZWQgdmVydGljYWxQYWRkaW5nLCBib29sIGlnbm9yZUNsaXBwaW5nKQorCisgICAgICAg
IHRvCisKKyAgICAgICAgLSBSZWZQdGY8Tm9kZUxpc3Q+IG5vZGVzRnJvbVJlY3QoaW50IHgsIGlu
dCB5LCB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcsIHVuc2lnbmVk
IGJvdHRvbVBhZGRpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGxlZnRQYWRkaW5nLCBib29sIGlnbm9yZUNsaXBwaW5nKQorCisgICAgICAgIFBy
ZXZpb3VzbHkgdGhlIG1ldGhvZCB3YXMgcmVjZWl2aW5nIGFzIHBhcmFtZXRlciBob3Jpem9udGFs
IGFuZCB2ZXJ0aWNhbCBwYWRkaW5nIHZhbHVlcy4KKyAgICAgICAgSW4gcHJhY3RpY2UsIHRoZSBo
b3Jpem9udGFsIHBhZGRpbmcgd2FzIGJlaW5nIHVzZWQgdG8gZXhwYW5kIGEgZ2l2ZW4gY2VudGVy
IHBvaW50IGluIGJvdGgKKyAgICAgICAgcmlnaHQgYW5kIGxlZnQgZGlyZWN0aW9ucywgd2hpbGUg
dmVydGljYWwgcGFkZGluZyB3YXMgZXhwYW5kaW5nIGl0IHRvIHRoZSB0b3AgYW5kIGJvdHRvbSBk
aXJlY3Rpb25zLgorCisgICAgICAgIEFsdGhvdWdoIHRoaXMgZGVzaWduIG1ha2VzIGl0IHBvc3Np
YmxlIHRvIGltcHJvdmUgdGhlIHRvdWNoIGV4cGVyaWVuY2Ugb24gbW9iaWxlIGRldmljZXMKKyAg
ICAgICAgKERvY3VtZW50Ojpub2Rlc0Zyb21SZWN0IGV4cG9zZXMgdGhlIHJlY3QgYmFzZWQgaGl0
IHRlc3Rpbmcgc3lzdGVtKSwgZW1waXJpY2FsIGV4cGVyaW1lbnRzCisgICAgICAgIHNob3dlZCB0
aGF0LCBzcGVjaWFsbHkgaW4gY2FwYWNpdGl2ZSB0b3VjaCBzY3JlZW5zLCB1c2VycyB0ZW5kIHRv
IHRhcCBiZWxvdyBlbGVtZW50cy4gU28KKyAgICAgICAgZm9yIGV2ZW4gbW9yZSBhY2N1cmF0ZSBy
ZXN1bHRzICh3aGljaCBtZWFucyBoZXJlIHRoZSBwb3NzaWJpbGl0eSBvZiBwbGVhc2FudCB0YXBw
aW5nIGV4cGVyaWVuY2UpLAorICAgICAgICBpdCBtYWtlcyBzZW5zZSB0byB1c2UgYSByZWdpb24g
dGhhdCBpcyBvZmZzZXQgbW9yZSBhYm92ZSB0aGUgdG91Y2ggcG9pbnQsIGZhdm9yaW5nIGVsZW1l
bnRzCisgICAgICAgIGFib3ZlIHRoZSB0b3VjaCBwb2ludC4KKworICAgICAgICBUaGUgcGF0Y2gg
YmFzaWNhbGx5IGltcGxlbWVudHMgdGhhdCwgaW5jcmVhc2luZyB0aGUgQVBJIGZsZXhpYmxlIGFu
ZCBwb3dlciBieSBtYWtpbmcgaXQgcG9zc2libGUKKyAgICAgICAgdG8gc3BlY2lmeSBkaWZmZXJl
bnQgcGFkZGluZyB2YWx1ZXMgZm9yIGVhY2ggZGlyZWN0aW9uIGluIGEgZ2l2ZW4gb3JpZW50YXRp
b24uCisKKyAgICAgICAgQ2hhbmdlcyB3ZXJlIG1hZGUgYWNjb3JkaW5nbHkgdG8gdGhlIEhpdFRl
c3RSZXN1bHQsIFJlbmRlckxheWVyLCBSZW5kZXJJbWFnZSBhbmQgUmVuZGVyTGluZUJveExpc3QK
KyAgICAgICAgY2xhc3Nlcy4KKworICAgICAgICBXZWJDb3JlOgorCisgICAgICAgICogV2ViQ29y
ZS5leHAuaW46CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6IEFQSSBhZGp1c3RtZW50LgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudC5pZGw6IERpdHRvLgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5j
cHA6IEFQSSBhZGp1c3RtZW50IGFuZCBtZXRob2QgYm9keSBpbXBsZW1lbnRhdGlvbiBhY2NvcmRp
bmdseS4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpub2Rlc0Zyb21SZWN0KToKKyAgICAg
ICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRs
ZXI6OmhpdFRlc3RSZXN1bHRBdFBvaW50KTogRm9yIHNpbXBsaWNpdHksIEkgZGlkIG5vdCBjaGFu
Z2UgdGhlIHNpZ25hdHVyZQorICAgICAgICAgICAgYnV0IHRoZSB3YXkgdGhlIHBhZGRpbmcgdmFs
dWUgcGFzc2VkIGluIGFzIHBhcmFtZXRlciBpcyBiZWluZyB1c2VkIHRvIGNvbnN0cnVjdCBhIEhp
dFRlc3RSZXN1bHQuCisgICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwOiBDaGFu
Z2VkIHRoZSByZWN0LWJhc2VkIGJpdHMgZnJvbSB1c2luZyBJbnRTaXplIChwYWRkaW5nKSB0byBz
ZXBhcmF0ZWQgcGFkZGluZ3MgZm9yIGVhY2ggZGlyZWN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6
SGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3VsdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
SGl0VGVzdFJlc3VsdDo6b3BlcmF0b3I9KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIaXRU
ZXN0UmVzdWx0OjpyZWN0RnJvbVBvaW50KTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL0hp
dFRlc3RSZXN1bHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OnRvcFBhZGRp
bmcpOiBnZXR0ZXIgZm9yIHRoZSB0b3AgcGFkZGluZy4KKyAgICAgICAgKFdlYkNvcmU6OkhpdFRl
c3RSZXN1bHQ6OnJpZ2h0UGFkZGluZyk6IGdldHRlciBmb3IgdGhlIHJpZ2h0IHBhZGRpbmcuCisg
ICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0Ojpib3R0b21QYWRkaW5nKTogZ2V0dGVyIGZv
ciB0aGUgYm90dG9tIHBhZGRpbmcuCisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0Ojps
ZWZ0UGFkZGluZyk6IGdldHRlciBmb3IgdGhlIGxlZnQgcGFkZGluZy4KKyAgICAgICAgKFdlYkNv
cmU6OkhpdFRlc3RSZXN1bHQ6OnJlY3RGcm9tUG9pbnQpOiBBZGRlZCBhIHN0YXRpYyBtZXRob2Qg
dGhhdCBnaXZlbiBhIGNlbnRlciBwb2ludCBhbmQgcGFkZGluZyB2YWx1ZXMgZm9yIGVhY2ggZGly
ZWN0aW9uLAorICAgICAgICAgICAgcmV0dXJucyB0aGUgcmVjdCB0aGF0IGlzIGdvaW5nIHRvIGJl
IHVzZWQgaW4gV2ViQ29yZSdzIGhpdCB0ZXN0aW5nIHByb2Nlc3NpbmcuCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckltYWdlLmNwcDogQ2hhbmdlZCB0aGUgcmVjdC1iYXNlZCBiaXRzIGZyb20g
dXNpbmcgSW50U2l6ZSAocGFkZGluZykgdG8gc2VwYXJhdGVkIHBhZGRpbmdzIGZvciBlYWNoIGRp
cmVjdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpub2RlQXRQb2ludCk6IERp
dHRvLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmhpdFRlc3RMYXllcik6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmhpdFRlc3RMaXN0KTogRGl0dG8uCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckxpbmVCb3hMaXN0LmNwcDogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMaW5lQm94TGlzdDo6aGl0VGVzdCk6IERpdHRvLgorCiAyMDEwLTA5LTI2ICBBbnRvbmlv
IEdvbWVzICA8YWdvbWVzQHJpbS5jb21nPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGgg
Um9oZGUgQ2hyaXN0aWFuc2VuLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBi
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggZWJmMWNjMy4uZjU5NmVlZSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBA
IC05MjMsNiArOTIzLDcgQEAgX19aTks3V2ViQ29yZTEzSGl0VGVzdFJlc3VsdDE4dGl0bGVEaXNw
bGF5U3RyaW5nRXYKIF9fWk5LN1dlYkNvcmUxM0hpdFRlc3RSZXN1bHQ1aW1hZ2VFdgogX19aTks3
V2ViQ29yZTEzSGl0VGVzdFJlc3VsdDV0aXRsZUVSTlNfMTNUZXh0RGlyZWN0aW9uRQogX19aTks3
V2ViQ29yZTEzSGl0VGVzdFJlc3VsdDlpbWFnZVJlY3RFdgorX19aTjdXZWJDb3JlMTNIaXRUZXN0
UmVzdWx0MTNyZWN0RnJvbVBvaW50RVJLTlNfOEludFBvaW50RWpqamoKIF9fWk5LN1dlYkNvcmUx
M1Jlc291cmNlRXJyb3JjdlA3TlNFcnJvckV2CiBfX1pOSzdXZWJDb3JlMTREb2N1bWVudExvYWRl
cjEwcmVxdWVzdFVSTEV2CiBfX1pOSzdXZWJDb3JlMTREb2N1bWVudExvYWRlcjExZnJhbWVMb2Fk
ZXJFdgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCmluZGV4IGMzZmVhZTQuLjU3MDFjMzUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAorKysgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTEwNDgs
NyArMTA0OCw3IEBAIEtVUkwgRG9jdW1lbnQ6OmJhc2VVUkkoKSBjb25zdAogLy8gKiBtYWtpbmcg
aXQgcmVjZWl2ZSBhIHJlY3QgYXMgcGFyYW1ldGVyLCBpLmUuIG5vZGVzRnJvbVJlY3QoeCwgeSwg
dywgaCk7CiAvLyAqIG1ha2luZyBpdCByZWNlaXZlIHRoZSBleHBhZGluZyBzaXplIG9mIGVhY2gg
ZGlyZWN0aW9uIHNlcGFyYXRlbHksCiAvLyAgIGkuZS4gbm9kZXNGcm9tUmVjdCh4LCB5LCB0b3BT
aXplLCByaWdodFNpemUsIGJvdHRvbVNpemUsIGxlZnRTaXplKTsKLVBhc3NSZWZQdHI8Tm9kZUxp
c3Q+IERvY3VtZW50Ojpub2Rlc0Zyb21SZWN0KGludCBjZW50ZXJYLCBpbnQgY2VudGVyWSwgdW5z
aWduZWQgaFBhZGRpbmcsIHVuc2lnbmVkIHZQYWRkaW5nLCBib29sIGlnbm9yZUNsaXBwaW5nKSBj
b25zdAorUGFzc1JlZlB0cjxOb2RlTGlzdD4gRG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QoaW50IGNl
bnRlclgsIGludCBjZW50ZXJZLCB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBh
ZGRpbmcsIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nLCBib29s
IGlnbm9yZUNsaXBwaW5nKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBTaGFyZSBjb2RlIGJldHdl
ZW4gdGhpcywgZWxlbWVudEZyb21Qb2ludCBhbmQgY2FyZXRSYW5nZUZyb21Qb2ludC4KICAgICBp
ZiAoIXJlbmRlcmVyKCkpCkBAIC0xMDYyLDI2ICsxMDYyLDI1IEBAIFBhc3NSZWZQdHI8Tm9kZUxp
c3Q+IERvY3VtZW50Ojpub2Rlc0Zyb21SZWN0KGludCBjZW50ZXJYLCBpbnQgY2VudGVyWSwgdW5z
aWduZWQKIAogICAgIGZsb2F0IHpvb21GYWN0b3IgPSBmcmFtZS0+cGFnZVpvb21GYWN0b3IoKTsK
ICAgICBJbnRQb2ludCBwb2ludCA9IHJvdW5kZWRJbnRQb2ludChGbG9hdFBvaW50KGNlbnRlclgg
KiB6b29tRmFjdG9yICsgdmlldygpLT5zY3JvbGxYKCksIGNlbnRlclkgKiB6b29tRmFjdG9yICsg
dmlldygpLT5zY3JvbGxZKCkpKTsKLSAgICBJbnRTaXplIHBhZGRpbmcoaFBhZGRpbmcsIHZQYWRk
aW5nKTsKIAogICAgIGludCB0eXBlID0gSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVz
dFJlcXVlc3Q6OkFjdGl2ZTsKIAogICAgIC8vIFdoZW4gaWdub3JlQ2xpcHBpbmcgaXMgZmFsc2Us
IHRoaXMgbWV0aG9kIHJldHVybnMgbnVsbCBmb3IgY29vcmRpbmF0ZXMgb3V0c2lkZSBvZiB0aGUg
dmlld3BvcnQuCiAgICAgaWYgKGlnbm9yZUNsaXBwaW5nKQogICAgICAgICB0eXBlIHw9IEhpdFRl
c3RSZXF1ZXN0OjpJZ25vcmVDbGlwcGluZzsKLSAgICBlbHNlIGlmICghZnJhbWVWaWV3LT52aXNp
YmxlQ29udGVudFJlY3QoKS5pbnRlcnNlY3RzKEludFJlY3QocG9pbnQsIHBhZGRpbmcpKSkKKyAg
ICBlbHNlIGlmICghZnJhbWVWaWV3LT52aXNpYmxlQ29udGVudFJlY3QoKS5pbnRlcnNlY3RzKEhp
dFRlc3RSZXN1bHQ6OnJlY3RGcm9tUG9pbnQocG9pbnQsIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGlu
ZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcpKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAg
ICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KHR5cGUpOwogCiAgICAgLy8gUGFzc2luZyBhIHplcm8g
cGFkZGluZyB3aWxsIHRyaWdnZXIgYSByZWN0IGhpdCB0ZXN0LCBob3dldmVyIGZvciB0aGUgcHVy
cG9zZXMgb2Ygbm9kZXNGcm9tUmVjdCwKICAgICAvLyB3ZSBzcGVjaWFsIGhhbmRsZSB0aGlzIGNh
c2UgaW4gb3JkZXIgdG8gcmV0dXJuIGEgdmFsaWQgTm9kZUxpc3QuCi0gICAgaWYgKHBhZGRpbmcu
aXNaZXJvKCkpIHsKKyAgICBpZiAoIXRvcFBhZGRpbmcgJiYgIXJpZ2h0UGFkZGluZyAmJiAhYm90
dG9tUGFkZGluZyAmJiAhbGVmdFBhZGRpbmcpIHsKICAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1
bHQocG9pbnQpOwogICAgICAgICByZXR1cm4gaGFuZGxlWmVyb1BhZGRpbmcocmVxdWVzdCwgcmVz
dWx0KTsKICAgICB9CiAKLSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdChwb2ludCwgcGFkZGluZyk7
CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQocG9pbnQsIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGlu
ZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcpOwogICAgIHJlbmRlclZpZXcoKS0+bGF5ZXIo
KS0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOwogCiAgICAgcmV0dXJuIFN0YXRpY0hhc2hTZXRO
b2RlTGlzdDo6YWRvcHQocmVzdWx0LnJlY3RCYXNlZFRlc3RSZXN1bHQoKSk7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCAx
YWQ3ZWNkLi4wMzdlMmU4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBi
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTMwOCw3ICszMDgsNyBAQCBwdWJsaWM6CiAKICAg
ICAvKioKICAgICAgKiBSZXRyaWV2ZSBhbGwgbm9kZXMgdGhhdCBpbnRlcnNlY3QgYSByZWN0IGlu
IHRoZSB3aW5kb3cncyBkb2N1bWVudCwgdW50aWwgaXQgaXMgZnVsbHkgZW5jbG9zZWQgYnkKLSAg
ICAgKiB0aGUgYm91bmRhcmllcyBvZiBub2RlLgorICAgICAqIHRoZSBib3VuZGFyaWVzIG9mIGEg
bm9kZS4KICAgICAgKgogICAgICAqIEBwYXJhbSBjZW50ZXJYIHggcmVmZXJlbmNlIGZvciB0aGUg
cmVjdGFuZ2xlIGluIENTUyBwaXhlbHMKICAgICAgKiBAcGFyYW0gY2VudGVyWSB5IHJlZmVyZW5j
ZSBmb3IgdGhlIHJlY3RhbmdsZSBpbiBDU1MgcGl4ZWxzCkBAIC0zMTcsNyArMzE3LDEzIEBAIHB1
YmxpYzoKICAgICAgKiBAcGFyYW0gaWdub3JlQ2xpcHBpbmcgd2hldGhlciBvciBub3QgdG8gaWdu
b3JlIHRoZSByb290IHNjcm9sbCBmcmFtZSB3aGVuIHJldHJpZXZpbmcgdGhlIGVsZW1lbnQuCiAg
ICAgICogICAgICAgIElmIGZhbHNlLCB0aGlzIG1ldGhvZCByZXR1cm5zIG51bGwgZm9yIGNvb3Jk
aW5hdGVzIG91dHNpZGUgb2YgdGhlIHZpZXdwb3J0LgogICAgICAqLwotICAgIFBhc3NSZWZQdHI8
Tm9kZUxpc3Q+IG5vZGVzRnJvbVJlY3QoaW50IGNlbnRlclgsIGludCBjZW50ZXJZLCB1bnNpZ25l
ZCBoUGFkZGluZywgdW5zaWduZWQgdlBhZGRpbmcsIGJvb2wgaWdub3JlQ2xpcHBpbmcpIGNvbnN0
OworICAgIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IG5vZGVzRnJvbVJlY3QoaW50IGNlbnRlclgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2VudGVyWSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHRvcFBhZGRpbmcsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCByaWdodFBhZGRp
bmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBib3R0
b21QYWRkaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgbGVmdFBhZGRpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIGlnbm9yZUNsaXBwaW5nKSBjb25zdDsKICAgICBFbGVtZW50KiBlbGVtZW50RnJvbVBvaW50
KGludCB4LCBpbnQgeSkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxSYW5nZT4gY2FyZXRSYW5nZUZy
b21Qb2ludChpbnQgeCwgaW50IHkpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcCBiL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDg5MzJlNWYu
LmQzNzA5ZmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBi
L1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC04NjYsNyArODY2LDcgQEAgdm9pZCBF
dmVudEhhbmRsZXI6OmFsbG93REhUTUxEcmFnKGJvb2wmIGZsYWdESFRNTCwgYm9vbCYgZmxhZ1VB
KSBjb25zdAogICAgIAogSGl0VGVzdFJlc3VsdCBFdmVudEhhbmRsZXI6OmhpdFRlc3RSZXN1bHRB
dFBvaW50KGNvbnN0IEludFBvaW50JiBwb2ludCwgYm9vbCBhbGxvd1NoYWRvd0NvbnRlbnQsIGJv
b2wgaWdub3JlQ2xpcHBpbmcsIEhpdFRlc3RTY3JvbGxiYXJzIHRlc3RTY3JvbGxiYXJzLCBIaXRU
ZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhpdFR5cGUsIGNvbnN0IEludFNpemUmIHBh
ZGRpbmcpCiB7Ci0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQocG9pbnQsIHBhZGRpbmcpOworICAg
IEhpdFRlc3RSZXN1bHQgcmVzdWx0KHBvaW50LCBwYWRkaW5nLmhlaWdodCgpLCBwYWRkaW5nLndp
ZHRoKCksIHBhZGRpbmcuaGVpZ2h0KCksIHBhZGRpbmcud2lkdGgoKSk7CiAgICAgaWYgKCFtX2Zy
YW1lLT5jb250ZW50UmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICBpZiAo
aWdub3JlQ2xpcHBpbmcpCkBAIC04ODcsNyArODg3LDcgQEAgSGl0VGVzdFJlc3VsdCBFdmVudEhh
bmRsZXI6OmhpdFRlc3RSZXN1bHRBdFBvaW50KGNvbnN0IEludFBvaW50JiBwb2ludCwgYm9vbCBh
bGwKICAgICAgICAgRnJhbWVWaWV3KiB2aWV3ID0gc3RhdGljX2Nhc3Q8RnJhbWVWaWV3Kj4od2lk
Z2V0KTsKICAgICAgICAgSW50UG9pbnQgd2lkZ2V0UG9pbnQocmVzdWx0LmxvY2FsUG9pbnQoKS54
KCkgKyB2aWV3LT5zY3JvbGxYKCkgLSByZW5kZXJXaWRnZXQtPmJvcmRlckxlZnQoKSAtIHJlbmRl
cldpZGdldC0+cGFkZGluZ0xlZnQoKSwgCiAgICAgICAgICAgICByZXN1bHQubG9jYWxQb2ludCgp
LnkoKSArIHZpZXctPnNjcm9sbFkoKSAtIHJlbmRlcldpZGdldC0+Ym9yZGVyVG9wKCkgLSByZW5k
ZXJXaWRnZXQtPnBhZGRpbmdUb3AoKSk7Ci0gICAgICAgIEhpdFRlc3RSZXN1bHQgd2lkZ2V0SGl0
VGVzdFJlc3VsdCh3aWRnZXRQb2ludCwgcGFkZGluZyk7CisgICAgICAgIEhpdFRlc3RSZXN1bHQg
d2lkZ2V0SGl0VGVzdFJlc3VsdCh3aWRnZXRQb2ludCwgcGFkZGluZy5oZWlnaHQoKSwgcGFkZGlu
Zy53aWR0aCgpLCBwYWRkaW5nLmhlaWdodCgpLCBwYWRkaW5nLndpZHRoKCkpOwogICAgICAgICBm
cmFtZS0+Y29udGVudFJlbmRlcmVyKCktPmxheWVyKCktPmhpdFRlc3QoSGl0VGVzdFJlcXVlc3Qo
aGl0VHlwZSksIHdpZGdldEhpdFRlc3RSZXN1bHQpOwogICAgICAgICByZXN1bHQgPSB3aWRnZXRI
aXRUZXN0UmVzdWx0OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVz
dWx0LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCmluZGV4IGYyODY5
MmUuLjM1YTZkMjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQu
Y3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCkBAIC01MSwxNyAr
NTEsMjcgQEAgSGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3VsdChjb25zdCBJbnRQb2ludCYgcG9p
bnQpCiAgICAgOiBtX3BvaW50KHBvaW50KQogICAgICwgbV9pc092ZXJXaWRnZXQoZmFsc2UpCiAg
ICAgLCBtX2lzUmVjdEJhc2VkKGZhbHNlKQorICAgICwgbV90b3BQYWRkaW5nKDApCisgICAgLCBt
X3JpZ2h0UGFkZGluZygwKQorICAgICwgbV9ib3R0b21QYWRkaW5nKDApCisgICAgLCBtX2xlZnRQ
YWRkaW5nKDApCiB7CiB9CiAKLUhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQoY29uc3QgSW50
UG9pbnQmIGNlbnRlclBvaW50LCBjb25zdCBJbnRTaXplJiBwYWRkaW5nKQorSGl0VGVzdFJlc3Vs
dDo6SGl0VGVzdFJlc3VsdChjb25zdCBJbnRQb2ludCYgY2VudGVyUG9pbnQsIHVuc2lnbmVkIHRv
cFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFkZGluZywgdW5zaWduZWQgYm90dG9tUGFkZGluZywg
dW5zaWduZWQgbGVmdFBhZGRpbmcpCiAgICAgOiBtX3BvaW50KGNlbnRlclBvaW50KQogICAgICwg
bV9pc092ZXJXaWRnZXQoZmFsc2UpCisgICAgLCBtX3RvcFBhZGRpbmcodG9wUGFkZGluZykKKyAg
ICAsIG1fcmlnaHRQYWRkaW5nKHJpZ2h0UGFkZGluZykKKyAgICAsIG1fYm90dG9tUGFkZGluZyhi
b3R0b21QYWRkaW5nKQorICAgICwgbV9sZWZ0UGFkZGluZyhsZWZ0UGFkZGluZykKIHsKLSAgICAv
LyBJZiBhIHplcm8gcGFkZGluZyBpcyBwYXNzZWQgaW4gb3IgZWl0aGVyIHdpZHRoIG9yIGhlaWdo
dCBpcyBuZWdhdGl2ZSwgdGhlbiBpdAotICAgIC8vIGlzIG5vdCBhIHZhbGlkIHBhZGRpbmcgYW5k
IGhlbmNlIG5vdCBhIHJlY3QgYmFzZWQgaGl0IHRlc3QuCi0gICAgbV9pc1JlY3RCYXNlZCA9ICEo
cGFkZGluZy5pc1plcm8oKSB8fCAocGFkZGluZy53aWR0aCgpIDwgMCB8fCBwYWRkaW5nLmhlaWdo
dCgpIDwgMCkpOwotICAgIG1fcGFkZGluZyA9IG1faXNSZWN0QmFzZWQgPyBwYWRkaW5nIDogSW50
U2l6ZSgpOworICAgIC8vIElmIGFsbCBwYWRkaW5nIHZhbHVlcyBwYXNzZWQgaW4gYXJlIHplcm8g
dGhlbiBpdCBpcyBub3QgYSByZWN0IGJhc2VkIGhpdCB0ZXN0LgorICAgIG1faXNSZWN0QmFzZWQg
PSB0b3BQYWRkaW5nIHx8IHJpZ2h0UGFkZGluZyB8fCBib3R0b21QYWRkaW5nIHx8IGxlZnRQYWRk
aW5nOworCisgICAgLy8gTWFrZSBzdXJlIGFsbCBwYWRkaW5nIHZhbHVlcyBhcmUgY2xhbXBlZCB0
byB6ZXJvIGlmIGl0IGlzIG5vdCBhIHJlY3QgaGl0IHRlc3QuCisgICAgaWYgKCFtX2lzUmVjdEJh
c2VkKQorICAgICAgICBtX3RvcFBhZGRpbmcgPSBtX3JpZ2h0UGFkZGluZyA9IG1fYm90dG9tUGFk
ZGluZyA9IG1fbGVmdFBhZGRpbmcgPSAwOwogfQogCiBIaXRUZXN0UmVzdWx0OjpIaXRUZXN0UmVz
dWx0KGNvbnN0IEhpdFRlc3RSZXN1bHQmIG90aGVyKQpAQCAtNzYsOSArODYsMTMgQEAgSGl0VGVz
dFJlc3VsdDo6SGl0VGVzdFJlc3VsdChjb25zdCBIaXRUZXN0UmVzdWx0JiBvdGhlcikKICAgICAv
LyBPbmx5IGNvcHkgdGhlIHBhZGRpbmcgYW5kIExpc3RIYXNoU2V0IGluIGNhc2Ugb2YgcmVjdCBo
aXQgdGVzdC4KICAgICAvLyBDb3B5aW5nIHRoZSBsYXRlciBpcyByYXRoZXIgZXhwZW5zaXZlLgog
ICAgIGlmICgobV9pc1JlY3RCYXNlZCA9IG90aGVyLmlzUmVjdEJhc2VkVGVzdCgpKSkgewotICAg
ICAgICBtX3BhZGRpbmcgPSBvdGhlci5wYWRkaW5nKCk7CisgICAgICAgIG1fdG9wUGFkZGluZyA9
IG90aGVyLm1fdG9wUGFkZGluZzsKKyAgICAgICAgbV9yaWdodFBhZGRpbmcgPSBvdGhlci5tX3Jp
Z2h0UGFkZGluZzsKKyAgICAgICAgbV9ib3R0b21QYWRkaW5nID0gb3RoZXIubV9ib3R0b21QYWRk
aW5nOworICAgICAgICBtX2xlZnRQYWRkaW5nID0gb3RoZXIubV9sZWZ0UGFkZGluZzsKICAgICAg
ICAgbV9yZWN0QmFzZWRUZXN0UmVzdWx0ID0gb3RoZXIucmVjdEJhc2VkVGVzdFJlc3VsdCgpOwot
ICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgbV90b3BQYWRkaW5nID0gbV9yaWdodFBhZGRpbmcg
PSBtX2JvdHRvbVBhZGRpbmcgPSBtX2xlZnRQYWRkaW5nID0gMDsKIH0KIAogSGl0VGVzdFJlc3Vs
dDo6fkhpdFRlc3RSZXN1bHQoKQpAQCAtOTcsOSArMTExLDEzIEBAIEhpdFRlc3RSZXN1bHQmIEhp
dFRlc3RSZXN1bHQ6Om9wZXJhdG9yPShjb25zdCBIaXRUZXN0UmVzdWx0JiBvdGhlcikKICAgICAv
LyBPbmx5IGNvcHkgdGhlIHBhZGRpbmcgYW5kIExpc3RIYXNoU2V0IGluIGNhc2Ugb2YgcmVjdCBo
aXQgdGVzdC4KICAgICAvLyBDb3B5aW5nIHRoZSBsYXRlciBpcyByYXRoZXIgZXhwZW5zaXZlLgog
ICAgIGlmICgobV9pc1JlY3RCYXNlZCA9IG90aGVyLmlzUmVjdEJhc2VkVGVzdCgpKSkgewotICAg
ICAgICBtX3BhZGRpbmcgPSBvdGhlci5wYWRkaW5nKCk7CisgICAgICAgIG1fdG9wUGFkZGluZyA9
IG90aGVyLm1fdG9wUGFkZGluZzsKKyAgICAgICAgbV9yaWdodFBhZGRpbmcgPSBvdGhlci5tX3Jp
Z2h0UGFkZGluZzsKKyAgICAgICAgbV9ib3R0b21QYWRkaW5nID0gb3RoZXIubV9ib3R0b21QYWRk
aW5nOworICAgICAgICBtX2xlZnRQYWRkaW5nID0gb3RoZXIubV9sZWZ0UGFkZGluZzsKICAgICAg
ICAgbV9yZWN0QmFzZWRUZXN0UmVzdWx0ID0gb3RoZXIucmVjdEJhc2VkVGVzdFJlc3VsdCgpOwot
ICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgbV90b3BQYWRkaW5nID0gbV9yaWdodFBhZGRpbmcg
PSBtX2JvdHRvbVBhZGRpbmcgPSBtX2xlZnRQYWRkaW5nID0gMDsKICAgICByZXR1cm4gKnRoaXM7
CiB9CiAKQEAgLTUzNCw0ICs1NTIsMTYgQEAgdm9pZCBIaXRUZXN0UmVzdWx0OjphcHBlbmQoY29u
c3QgSGl0VGVzdFJlc3VsdCYgb3RoZXIpCiAgICAgICAgIG1fcmVjdEJhc2VkVGVzdFJlc3VsdC5h
ZGQoaXQtPmdldCgpKTsKIH0KIAorSW50UmVjdCBIaXRUZXN0UmVzdWx0OjpyZWN0RnJvbVBvaW50
KGNvbnN0IEludFBvaW50JiBwb2ludCwgdW5zaWduZWQgdG9wUGFkZGluZywgdW5zaWduZWQgcmln
aHRQYWRkaW5nLCB1bnNpZ25lZCBib3R0b21QYWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGluZykK
K3sKKyAgICBJbnRQb2ludCBhY3R1YWxQb2ludChwb2ludCk7CisgICAgYWN0dWFsUG9pbnQgLT0g
SW50U2l6ZShsZWZ0UGFkZGluZywgdG9wUGFkZGluZyk7CisKKyAgICBJbnRTaXplIGFjdHVhbFBh
ZGRpbmcobGVmdFBhZGRpbmcgKyByaWdodFBhZGRpbmcsIHRvcFBhZGRpbmcgKyBib3R0b21QYWRk
aW5nKTsKKyAgICAvLyBBcyBJbnRSZWN0IGlzIGxlZnQgaW5jbHVzaXZlIGFuZCByaWdodCBleGNs
dXNpdmUgKHNlZWluZyBJbnRSZWN0Ojpjb250YWlucyh4LCB5KSksIGFkZGluZyAiMSIuCisgICAg
YWN0dWFsUGFkZGluZyArPSBJbnRTaXplKDEsIDEpOworCisgICAgcmV0dXJuIEludFJlY3QoYWN0
dWFsUG9pbnQsIGFjdHVhbFBhZGRpbmcpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmggYi9XZWJDb3JlL3Jl
bmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKaW5kZXggMzFlODhmMS4uMTMwNGUyMiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCisrKyBiL1dlYkNvcmUvcmVuZGVy
aW5nL0hpdFRlc3RSZXN1bHQuaApAQCAtNDQsOCArNDQsOCBAQCBjbGFzcyBTY3JvbGxiYXI7CiBj
bGFzcyBIaXRUZXN0UmVzdWx0IHsKIHB1YmxpYzoKICAgICBIaXRUZXN0UmVzdWx0KGNvbnN0IElu
dFBvaW50Jik7Ci0gICAgLy8gUGFzcyBhIG5vbi1uZWdhdGl2ZSBJbnRTaXplIHZhbHVlIGFzIHBh
ZGRpbmcgdG8gcGVyZm9ybSBhIHJlY3QtYmFzZWQgaGl0IHRlc3QuCi0gICAgSGl0VGVzdFJlc3Vs
dChjb25zdCBJbnRQb2ludCYgY2VudGVyUG9pbnQsIGNvbnN0IEludFNpemUmIHBhZGRpbmcpOwor
ICAgIC8vIFBhc3Mgbm9uLW5lZ2F0aXZlIHBhZGRpbmcgdmFsdWVzIHRvIHBlcmZvcm0gYSByZWN0
LWJhc2VkIGhpdCB0ZXN0LgorICAgIEhpdFRlc3RSZXN1bHQoY29uc3QgSW50UG9pbnQmIGNlbnRl
clBvaW50LCB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcsIHVuc2ln
bmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nKTsKICAgICBIaXRUZXN0UmVz
dWx0KGNvbnN0IEhpdFRlc3RSZXN1bHQmKTsKICAgICB+SGl0VGVzdFJlc3VsdCgpOwogICAgIEhp
dFRlc3RSZXN1bHQmIG9wZXJhdG9yPShjb25zdCBIaXRUZXN0UmVzdWx0Jik7CkBAIC0xMDAsOSAr
MTAwLDEyIEBAIHB1YmxpYzoKICAgICBib29sIGlzUmVjdEJhc2VkVGVzdCgpIGNvbnN0IHsgcmV0
dXJuIG1faXNSZWN0QmFzZWQ7IH0KICAgICBJbnRSZWN0IHJlY3RGcm9tUG9pbnQoaW50IHgsIGlu
dCB5KSBjb25zdDsKICAgICBJbnRSZWN0IHJlY3RGcm9tUG9pbnQoY29uc3QgSW50UG9pbnQmKSBj
b25zdDsKLSAgICBJbnRTaXplIHBhZGRpbmcoKSBjb25zdCB7IHJldHVybiBtX3BhZGRpbmc7IH0K
LSAgICBpbnQgcGFkZGluZ1dpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9wYWRkaW5nLndpZHRoKCk7
IH0KLSAgICBpbnQgcGFkZGluZ0hlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFkZGluZy5oZWln
aHQoKTsgfQorICAgIHN0YXRpYyBJbnRSZWN0IHJlY3RGcm9tUG9pbnQoY29uc3QgSW50UG9pbnQm
LCB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcsIHVuc2lnbmVkIGJv
dHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nKTsKKyAgICBpbnQgdG9wUGFkZGluZygp
IGNvbnN0IHsgcmV0dXJuIG1fdG9wUGFkZGluZzsgfQorICAgIGludCByaWdodFBhZGRpbmcoKSBj
b25zdCB7IHJldHVybiBtX3JpZ2h0UGFkZGluZzsgfQorICAgIGludCBib3R0b21QYWRkaW5nKCkg
Y29uc3QgeyByZXR1cm4gbV9ib3R0b21QYWRkaW5nOyB9CisgICAgaW50IGxlZnRQYWRkaW5nKCkg
Y29uc3QgeyByZXR1cm4gbV9sZWZ0UGFkZGluZzsgfQorCiAgICAgLy8gUmV0dXJucyB0cnVlIGlm
IGl0IGlzIHJlY3QtYmFzZWQgaGl0IHRlc3QgYW5kIG5lZWRzIHRvIGNvbnRpbnVlIHVudGlsIHRo
ZSByZWN0IGlzIGZ1bGx5CiAgICAgLy8gZW5jbG9zZWQgYnkgdGhlIGJvdW5kYXJpZXMgb2YgYSBu
b2RlLgogICAgIGJvb2wgYWRkTm9kZVRvUmVjdEJhc2VkVGVzdFJlc3VsdChOb2RlKiwgaW50IHgs
IGludCB5LCBjb25zdCBJbnRSZWN0JiByZWN0ID0gSW50UmVjdCgpKTsKQEAgLTEyNCwzNCArMTI3
LDI2IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFNjcm9sbGJhcj4gbV9zY3JvbGxiYXI7CiAgICAg
Ym9vbCBtX2lzT3ZlcldpZGdldDsgLy8gUmV0dXJucyB0cnVlIGlmIHdlIGFyZSBvdmVyIGEgd2lk
Z2V0IChhbmQgbm90IGluIHRoZSBib3JkZXIvcGFkZGluZyBhcmVhIG9mIGEgUmVuZGVyV2lkZ2V0
IGZvciBleGFtcGxlKS4KICAgICBib29sIG1faXNSZWN0QmFzZWQ7Ci0gICAgSW50U2l6ZSBtX3Bh
ZGRpbmc7CisgICAgaW50IG1fdG9wUGFkZGluZzsKKyAgICBpbnQgbV9yaWdodFBhZGRpbmc7Cisg
ICAgaW50IG1fYm90dG9tUGFkZGluZzsKKyAgICBpbnQgbV9sZWZ0UGFkZGluZzsKICAgICBMaXN0
SGFzaFNldDxSZWZQdHI8Tm9kZT4gPiBtX3JlY3RCYXNlZFRlc3RSZXN1bHQ7CiB9OwogCiBpbmxp
bmUgSW50UmVjdCBIaXRUZXN0UmVzdWx0OjpyZWN0RnJvbVBvaW50KGludCB4LCBpbnQgeSkgY29u
c3QKIHsKLSAgICByZXR1cm4gcmVjdEZyb21Qb2ludChJbnRQb2ludCh4LCB5KSk7CisgICAgcmV0
dXJuIHJlY3RGcm9tUG9pbnQoSW50UG9pbnQoeCwgeSksIG1fdG9wUGFkZGluZywgbV9yaWdodFBh
ZGRpbmcsIG1fYm90dG9tUGFkZGluZywgbV9sZWZ0UGFkZGluZyk7CiB9CiAKIC8vIEZvcm11bGE6
Ci0vLyB4ID0gcC54KCkgLSBwYWRkaW5nLndpZHRoKCkKLS8vIHkgPSBwLnkoKSAtIHBhZGRpbmcu
aGVpZ2h0KCkKLS8vIHdpZHRoID0gMiAqIHBhZGRpbmcud2lkdGgoKSArIDEKLS8vIGhlaWdodCA9
IDIgKiBtX3BhZGRpbmcuaGVpZ2h0KCkgKyAxCisvLyB4ID0gcC54KCkgLSByaWdodFBhZGRpbmcK
Ky8vIHkgPSBwLnkoKSAtIHRvcFBhZGRpbmcKKy8vIHdpZHRoID0gbGVmdFBhZGRpbmcgKyByaWdo
dFBhZGRpbmcgKyAxCisvLyBoZWlnaHQgPSB0b3BQYWRkaW5nICsgYm90dG9tUGFkZGluZyArIDEK
IGlubGluZSBJbnRSZWN0IEhpdFRlc3RSZXN1bHQ6OnJlY3RGcm9tUG9pbnQoY29uc3QgSW50UG9p
bnQmIHBvaW50KSBjb25zdAogewotICAgIEludFBvaW50IHJlYWxQb2ludChwb2ludCk7Ci0gICAg
SW50U2l6ZSByZWFsUGFkZGluZyhtX3BhZGRpbmcpOwotCi0gICAgLy8gUmVhbCBJbnRQb2ludCBm
b3IgdGhlIHJlY3QuCi0gICAgcmVhbFBhZGRpbmcuY2xhbXBOZWdhdGl2ZVRvWmVybygpOwotICAg
IHJlYWxQb2ludCAtPSByZWFsUGFkZGluZzsKLQotICAgIC8vIFJlYWwgSW50U2l6ZSBmb3IgdGhl
IHJlY3QuCi0gICAgcmVhbFBhZGRpbmcuc2NhbGUoMik7Ci0gICAgcmVhbFBhZGRpbmcgKz0gSW50
U2l6ZSgxLCAxKTsKLQotICAgIHJldHVybiBJbnRSZWN0KHJlYWxQb2ludCwgcmVhbFBhZGRpbmcp
OworICAgIHJldHVybiByZWN0RnJvbVBvaW50KHBvaW50LCBtX3RvcFBhZGRpbmcsIG1fcmlnaHRQ
YWRkaW5nLCBtX2JvdHRvbVBhZGRpbmcsIG1fbGVmdFBhZGRpbmcpOwogfQogCiBTdHJpbmcgZGlz
cGxheVN0cmluZyhjb25zdCBTdHJpbmcmLCBjb25zdCBOb2RlKik7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZS5jcHAKaW5kZXggMmJkNjBhMy4uYTIyMGNhMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW1hZ2UuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdl
LmNwcApAQCAtMzU5LDcgKzM1OSw3IEBAIEhUTUxNYXBFbGVtZW50KiBSZW5kZXJJbWFnZTo6aW1h
Z2VNYXAoKSBjb25zdAogCiBib29sIFJlbmRlckltYWdlOjpub2RlQXRQb2ludChjb25zdCBIaXRU
ZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBpbnQgeCwgaW50IHks
IGludCB0eCwgaW50IHR5LCBIaXRUZXN0QWN0aW9uIGhpdFRlc3RBY3Rpb24pCiB7Ci0gICAgSGl0
VGVzdFJlc3VsdCB0ZW1wUmVzdWx0KHJlc3VsdC5wb2ludCgpLCByZXN1bHQucGFkZGluZygpKTsK
KyAgICBIaXRUZXN0UmVzdWx0IHRlbXBSZXN1bHQocmVzdWx0LnBvaW50KCksIHJlc3VsdC50b3BQ
YWRkaW5nKCksIHJlc3VsdC5yaWdodFBhZGRpbmcoKSwgcmVzdWx0LmJvdHRvbVBhZGRpbmcoKSwg
cmVzdWx0LmxlZnRQYWRkaW5nKCkpOwogICAgIGJvb2wgaW5zaWRlID0gUmVuZGVyUmVwbGFjZWQ6
Om5vZGVBdFBvaW50KHJlcXVlc3QsIHRlbXBSZXN1bHQsIHgsIHksIHR4LCB0eSwgaGl0VGVzdEFj
dGlvbik7CiAKICAgICBpZiAodGVtcFJlc3VsdC5pbm5lck5vZGUoKSAmJiBub2RlKCkpIHsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCAxNGUyYWY4Li4xYjRiMWRhIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0yOTAxLDcgKzI5MDEsNyBAQCBSZW5kZXJMYXllciogUmVu
ZGVyTGF5ZXI6OmhpdFRlc3RMYXllcihSZW5kZXJMYXllciogcm9vdExheWVyLCBSZW5kZXJMYXll
ciogY29udAogICAgIC8vIE5leHQgd2Ugd2FudCB0byBzZWUgaWYgdGhlIG1vdXNlIHBvcyBpcyBp
bnNpZGUgdGhlIGNoaWxkIFJlbmRlck9iamVjdHMgb2YgdGhlIGxheWVyLgogICAgIGlmIChmZ1Jl
Y3QuaW50ZXJzZWN0cyhoaXRUZXN0QXJlYSkgJiYgaXNTZWxmUGFpbnRpbmdMYXllcigpKSB7CiAg
ICAgICAgIC8vIEhpdCB0ZXN0IHdpdGggYSB0ZW1wb3JhcnkgSGl0VGVzdFJlc3VsdCwgYmVjYXVz
ZSB3ZSBvbmx5IHdhbnQgdG8gY29tbWl0IHRvICdyZXN1bHQnIGlmIHdlIGtub3cgd2UncmUgZnJv
bnRtb3N0LgotICAgICAgICBIaXRUZXN0UmVzdWx0IHRlbXBSZXN1bHQocmVzdWx0LnBvaW50KCks
IHJlc3VsdC5wYWRkaW5nKCkpOworICAgICAgICBIaXRUZXN0UmVzdWx0IHRlbXBSZXN1bHQocmVz
dWx0LnBvaW50KCksIHJlc3VsdC50b3BQYWRkaW5nKCksIHJlc3VsdC5yaWdodFBhZGRpbmcoKSwg
cmVzdWx0LmJvdHRvbVBhZGRpbmcoKSwgcmVzdWx0LmxlZnRQYWRkaW5nKCkpOwogICAgICAgICBp
ZiAoaGl0VGVzdENvbnRlbnRzKHJlcXVlc3QsIHRlbXBSZXN1bHQsIGxheWVyQm91bmRzLCBoaXRU
ZXN0UG9pbnQsIEhpdFRlc3REZXNjZW5kYW50cykgJiYKICAgICAgICAgICAgIGlzSGl0Q2FuZGlk
YXRlKHRoaXMsIGZhbHNlLCB6T2Zmc2V0Rm9yQ29udGVudHNQdHIsIHVuZmxhdHRlbmVkVHJhbnNm
b3JtU3RhdGUuZ2V0KCkpKSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0LmlzUmVjdEJhc2VkVGVz
dCgpKQpAQCAtMjkzMCw3ICsyOTMwLDcgQEAgUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjpoaXRU
ZXN0TGF5ZXIoUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgUmVuZGVyTGF5ZXIqIGNvbnQKICAgICAg
ICAgcmV0dXJuIGNhbmRpZGF0ZUxheWVyOwogCiAgICAgaWYgKGJnUmVjdC5pbnRlcnNlY3RzKGhp
dFRlc3RBcmVhKSAmJiBpc1NlbGZQYWludGluZ0xheWVyKCkpIHsKLSAgICAgICAgSGl0VGVzdFJl
c3VsdCB0ZW1wUmVzdWx0KHJlc3VsdC5wb2ludCgpLCByZXN1bHQucGFkZGluZygpKTsKKyAgICAg
ICAgSGl0VGVzdFJlc3VsdCB0ZW1wUmVzdWx0KHJlc3VsdC5wb2ludCgpLCByZXN1bHQudG9wUGFk
ZGluZygpLCByZXN1bHQucmlnaHRQYWRkaW5nKCksIHJlc3VsdC5ib3R0b21QYWRkaW5nKCksIHJl
c3VsdC5sZWZ0UGFkZGluZygpKTsKICAgICAgICAgaWYgKGhpdFRlc3RDb250ZW50cyhyZXF1ZXN0
LCB0ZW1wUmVzdWx0LCBsYXllckJvdW5kcywgaGl0VGVzdFBvaW50LCBIaXRUZXN0U2VsZikgJiYK
ICAgICAgICAgICAgIGlzSGl0Q2FuZGlkYXRlKHRoaXMsIGZhbHNlLCB6T2Zmc2V0Rm9yQ29udGVu
dHNQdHIsIHVuZmxhdHRlbmVkVHJhbnNmb3JtU3RhdGUuZ2V0KCkpKSB7CiAgICAgICAgICAgICBp
ZiAocmVzdWx0LmlzUmVjdEJhc2VkVGVzdCgpKQpAQCAtMjk4Nyw3ICsyOTg3LDcgQEAgUmVuZGVy
TGF5ZXIqIFJlbmRlckxheWVyOjpoaXRUZXN0TGlzdChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbGlz
dCwgUmVuZGVyTGF5ZXIqIHIKICAgICBmb3IgKGludCBpID0gbGlzdC0+c2l6ZSgpIC0gMTsgaSA+
PSAwOyAtLWkpIHsKICAgICAgICAgUmVuZGVyTGF5ZXIqIGNoaWxkTGF5ZXIgPSBsaXN0LT5hdChp
KTsKICAgICAgICAgUmVuZGVyTGF5ZXIqIGhpdExheWVyID0gMDsKLSAgICAgICAgSGl0VGVzdFJl
c3VsdCB0ZW1wUmVzdWx0KHJlc3VsdC5wb2ludCgpLCByZXN1bHQucGFkZGluZygpKTsKKyAgICAg
ICAgSGl0VGVzdFJlc3VsdCB0ZW1wUmVzdWx0KHJlc3VsdC5wb2ludCgpLCByZXN1bHQudG9wUGFk
ZGluZygpLCByZXN1bHQucmlnaHRQYWRkaW5nKCksIHJlc3VsdC5ib3R0b21QYWRkaW5nKCksIHJl
c3VsdC5sZWZ0UGFkZGluZygpKTsKICAgICAgICAgaWYgKGNoaWxkTGF5ZXItPmlzUGFnaW5hdGVk
KCkpCiAgICAgICAgICAgICBoaXRMYXllciA9IGhpdFRlc3RQYWdpbmF0ZWRDaGlsZExheWVyKGNo
aWxkTGF5ZXIsIHJvb3RMYXllciwgcmVxdWVzdCwgdGVtcFJlc3VsdCwgaGl0VGVzdFJlY3QsIGhp
dFRlc3RQb2ludCwgdHJhbnNmb3JtU3RhdGUsIHpPZmZzZXRGb3JEZXNjZW5kYW50cyk7CiAgICAg
ICAgIGVsc2UKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCb3hMaXN0
LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCb3hMaXN0LmNwcAppbmRleCA0NWU2
NmViLi43NjBkMmVhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQm94
TGlzdC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJveExpc3QuY3BwCkBA
IC0yNDYsMTYgKzI0NiwxNiBAQCBib29sIFJlbmRlckxpbmVCb3hMaXN0OjpoaXRUZXN0KFJlbmRl
ckJveE1vZGVsT2JqZWN0KiByZW5kZXJlciwgY29uc3QgSGl0VGVzdFJlcQogICAgIC8vIGNvbnRh
aW4gdGhlIHBvaW50LiAgVGhpcyBpcyBhIHF1aWNrIHNob3J0LWNpcmN1aXQgdGhhdCB3ZSBjYW4g
dGFrZSB0byBhdm9pZCB3YWxraW5nIGFueSBsaW5lcy4KICAgICAvLyBGSVhNRTogVGhpcyBjaGVj
ayBpcyBmbGF3ZWQgaW4gdGhlIGZvbGxvd2luZyBleHRyZW1lbHkgb2JzY3VyZSB3YXk6CiAgICAg
Ly8gaWYgc29tZSBsaW5lIGluIHRoZSBtaWRkbGUgaGFzIGEgaHVnZSBvdmVyZmxvdywgaXQgbWln
aHQgYWN0dWFsbHkgZXh0ZW5kIGJlbG93IHRoZSBsYXN0IGxpbmUuCi0gICAgaWYgKHkgLSByZXN1
bHQucGFkZGluZ0hlaWdodCgpID49IHR5ICsgbGFzdExpbmVCb3goKS0+cm9vdCgpLT5ib3R0b21W
aXNpYmxlT3ZlcmZsb3coKQotICAgICB8fCB5ICsgcmVzdWx0LnBhZGRpbmdIZWlnaHQoKSA8IHR5
ICsgZmlyc3RMaW5lQm94KCktPnJvb3QoKS0+dG9wVmlzaWJsZU92ZXJmbG93KCkpCisgICAgaWYg
KHkgLSByZXN1bHQudG9wUGFkZGluZygpID49IHR5ICsgbGFzdExpbmVCb3goKS0+cm9vdCgpLT5i
b3R0b21WaXNpYmxlT3ZlcmZsb3coKQorICAgICB8fCB5ICsgcmVzdWx0LmJvdHRvbVBhZGRpbmco
KSA8IHR5ICsgZmlyc3RMaW5lQm94KCktPnJvb3QoKS0+dG9wVmlzaWJsZU92ZXJmbG93KCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIFNlZSBpZiBvdXIgcm9vdCBsaW5lcyBjb250
YWluIHRoZSBwb2ludC4gIElmIHNvLCB0aGVuIHdlIGhpdCB0ZXN0CiAgICAgLy8gdGhlbSBmdXJ0
aGVyLiAgTm90ZSB0aGF0IGJveGVzIGNhbiBlYXNpbHkgb3ZlcmxhcCwgc28gd2UgY2FuJ3QgbWFr
ZSBhbnkgYXNzdW1wdGlvbnMKICAgICAvLyBiYXNlZCBvZmYgcG9zaXRpb25zIG9mIG91ciBmaXJz
dCBsaW5lIGJveCBvciBvdXIgbGFzdCBsaW5lIGJveC4KICAgICBmb3IgKElubGluZUZsb3dCb3gq
IGN1cnIgPSBsYXN0TGluZUJveCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+cHJldkxpbmVCb3goKSkg
ewotICAgICAgICBpZiAoeSArIHJlc3VsdC5wYWRkaW5nSGVpZ2h0KCkgPj0gdHkgKyBjdXJyLT5y
b290KCktPnRvcFZpc2libGVPdmVyZmxvdygpCi0gICAgICAgICAmJiB5IC0gcmVzdWx0LnBhZGRp
bmdIZWlnaHQoKSA8IHR5ICsgY3Vyci0+cm9vdCgpLT5ib3R0b21WaXNpYmxlT3ZlcmZsb3coKSkg
eworICAgICAgICBpZiAoeSArIHJlc3VsdC5ib3R0b21QYWRkaW5nKCkgPj0gdHkgKyBjdXJyLT5y
b290KCktPnRvcFZpc2libGVPdmVyZmxvdygpCisgICAgICAgICAmJiB5IC0gcmVzdWx0LnRvcFBh
ZGRpbmcoKSA8IHR5ICsgY3Vyci0+cm9vdCgpLT5ib3R0b21WaXNpYmxlT3ZlcmZsb3coKSkgewog
ICAgICAgICAgICAgYm9vbCBpbnNpZGUgPSBjdXJyLT5ub2RlQXRQb2ludChyZXF1ZXN0LCByZXN1
bHQsIHgsIHksIHR4LCB0eSk7CiAgICAgICAgICAgICBpZiAoaW5zaWRlKSB7CiAgICAgICAgICAg
ICAgICAgcmVuZGVyZXItPnVwZGF0ZUhpdFRlc3RSZXN1bHQocmVzdWx0LCBJbnRQb2ludCh4IC0g
dHgsIHkgLSB0eSkpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0g
Yi9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCAxYTA0MzdhLi4xZmNhOGQxIDEw
MDY0NAotLS0gYS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtNjA1Nyw3ICs2MDU3LDcgQEAgc3RhdGljIHZvaWQgZ2xp
YkNvbnRleHRJdGVyYXRpb25DYWxsYmFjayhDRlJ1bkxvb3BPYnNlcnZlclJlZiwgQ0ZSdW5Mb29w
QWN0aXZpdHkKIAogQGltcGxlbWVudGF0aW9uIFdlYlZpZXcgKFdlYlZpZXdQcml2YXRlTm9kZXNG
cm9tUmVjdCkKIAotLSAoSlNWYWx1ZVJlZilfbm9kZXNGcm9tUmVjdDooSlNDb250ZXh0UmVmKWNv
bnRleHQgZm9yRG9jdW1lbnQ6KEpTVmFsdWVSZWYpdmFsdWUgeDooaW50KXggIHk6KGludCl5IGhQ
YWRkaW5nOih1bnNpZ25lZCloUGFkZGluZyB2UGFkZGluZzoodW5zaWduZWQpdlBhZGRpbmcgaWdu
b3JlQ2xpcHBpbmc6KEJPT0wpaWdub3JlQ2xpcHBpbmcKKy0gKEpTVmFsdWVSZWYpX25vZGVzRnJv
bVJlY3Q6KEpTQ29udGV4dFJlZiljb250ZXh0IGZvckRvY3VtZW50OihKU1ZhbHVlUmVmKXZhbHVl
IHg6KGludCl4ICB5OihpbnQpeSB0b3A6KHVuc2lnbmVkKXRvcCByaWdodDoodW5zaWduZWQpcmln
aHQgYm90dG9tOih1bnNpZ25lZClib3R0b20gbGVmdDoodW5zaWduZWQpbGVmdCBpZ25vcmVDbGlw
cGluZzooQk9PTClpZ25vcmVDbGlwcGluZwogewogICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3Nl
cnRpb25zT25seSk7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjb250ZXh0KTsKQEAgLTYw
NjgsNyArNjA2OCw3IEBAIHN0YXRpYyB2b2lkIGdsaWJDb250ZXh0SXRlcmF0aW9uQ2FsbGJhY2so
Q0ZSdW5Mb29wT2JzZXJ2ZXJSZWYsIENGUnVuTG9vcEFjdGl2aXR5CiAgICAgICAgIHJldHVybiBK
U1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKICAgICBKU0RvY3VtZW50KiBqc0RvY3VtZW50
ID0gc3RhdGljX2Nhc3Q8SlNEb2N1bWVudCo+KGFzT2JqZWN0KGpzVmFsdWUpKTsKICAgICBEb2N1
bWVudCogZG9jdW1lbnQgPSBqc0RvY3VtZW50LT5pbXBsKCk7Ci0gICAgUmVmUHRyPE5vZGVMaXN0
PiBub2RlcyA9IGRvY3VtZW50LT5ub2Rlc0Zyb21SZWN0KHgsIHksIGhQYWRkaW5nLCB2UGFkZGlu
ZywgaWdub3JlQ2xpcHBpbmcpOworICAgIFJlZlB0cjxOb2RlTGlzdD4gbm9kZXMgPSBkb2N1bWVu
dC0+bm9kZXNGcm9tUmVjdCh4LCB5LCB0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQsIGlnbm9yZUNs
aXBwaW5nKTsKICAgICByZXR1cm4gdG9SZWYoZXhlYywgdG9KUyhleGVjLCBqc0RvY3VtZW50LT5n
bG9iYWxPYmplY3QoKSwgbm9kZXMuZ2V0KCkpKTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmggYi9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1By
aXZhdGUuaAppbmRleCA4NzNlOGUxLi43NDllZWIzIDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlld1ByaXZhdGUuaAorKysgYi9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1By
aXZhdGUuaApAQCAtNjMxLDcgKzYzMSw3IEBAIENvdWxkIGJlIHdvcnRoIGFkZGluZyB0byB0aGUg
QVBJLgogQGVuZAogCiBAaW50ZXJmYWNlIFdlYlZpZXcgKFdlYlZpZXdQcml2YXRlTm9kZXNGcm9t
UmVjdCkKLS0gKEpTVmFsdWVSZWYpX25vZGVzRnJvbVJlY3Q6KEpTQ29udGV4dFJlZiljb250ZXh0
IGZvckRvY3VtZW50OihKU1ZhbHVlUmVmKXZhbHVlIHg6KGludCl4ICB5OihpbnQpeSBoUGFkZGlu
ZzoodW5zaWduZWQpaFBhZGRpbmcgdlBhZGRpbmc6KHVuc2lnbmVkKXZQYWRkaW5nIGlnbm9yZUNs
aXBwaW5nOihCT09MKWlnbm9yZUNsaXBwaW5nOworLSAoSlNWYWx1ZVJlZilfbm9kZXNGcm9tUmVj
dDooSlNDb250ZXh0UmVmKWNvbnRleHQgZm9yRG9jdW1lbnQ6KEpTVmFsdWVSZWYpdmFsdWUgeDoo
aW50KXggIHk6KGludCl5IHRvcDoodW5zaWduZWQpdG9wIHJpZ2h0Oih1bnNpZ25lZClyaWdodCBi
b3R0b206KHVuc2lnbmVkKWJvdHRvbSBsZWZ0Oih1bnNpZ25lZClsZWZ0IGlnbm9yZUNsaXBwaW5n
OihCT09MKWlnbm9yZUNsaXBwaW5nOwogQGVuZAogCiBAaW50ZXJmYWNlIE5TT2JqZWN0IChXZWJG
cmFtZUxvYWREZWxlZ2F0ZVByaXZhdGUpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXggNzMwZjVjNy4uZWU0NDMyNSAxMDA2
NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIu
Y3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVy
LmNwcApAQCAtNTE1LDE4ICs1MTUsMjAgQEAgc3RhdGljIEpTVmFsdWVSZWYgY29tcHV0ZWRTdHls
ZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQKIAogc3Rh
dGljIEpTVmFsdWVSZWYgbm9kZXNGcm9tUmVjdENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0
LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFy
Z3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4
Y2VwdGlvbikKIHsKLSAgICBpZiAoYXJndW1lbnRDb3VudCAhPSA2KQorICAgIGlmIChhcmd1bWVu
dENvdW50ICE9IDgpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0
KTsKIAogICAgIGludCB4ID0gSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1sxXSwg
TlVMTCk7CiAgICAgaW50IHkgPSBKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzJd
LCBOVUxMKTsKLSAgICBpbnQgaFBhZGRpbmcgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNWYWx1
ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1szXSwgTlVMTCkpOwotICAgIGludCB2UGFkZGlu
ZyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1l
bnRzWzRdLCBOVUxMKSk7Ci0gICAgYm9vbCBpZ25vcmVDbGlwcGluZyA9IEpTVmFsdWVUb0Jvb2xl
YW4oY29udGV4dCwgYXJndW1lbnRzWzVdKTsKKyAgICBpbnQgdG9wID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbM10sIE5VTEwpKTsKKyAg
ICBpbnQgcmlnaHQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNWYWx1ZVRvTnVtYmVyKGNvbnRl
eHQsIGFyZ3VtZW50c1s0XSwgTlVMTCkpOworICAgIGludCBib3R0b20gPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1s1XSwgTlVMTCkpOwor
ICAgIGludCBsZWZ0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTVmFsdWVUb051bWJlcihjb250
ZXh0LCBhcmd1bWVudHNbNl0sIE5VTEwpKTsKKyAgICBib29sIGlnbm9yZUNsaXBwaW5nID0gSlNW
YWx1ZVRvQm9vbGVhbihjb250ZXh0LCBhcmd1bWVudHNbN10pOwogCiAgICAgLy8gSGFzIG1hYyBp
bXBsZW1lbnRhdGlvbi4KICAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0
YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNP
YmplY3QpKTsKLSAgICByZXR1cm4gY29udHJvbGxlci0+bm9kZXNGcm9tUmVjdChjb250ZXh0LCBh
cmd1bWVudHNbMF0sIHgsIHksIGhQYWRkaW5nLCB2UGFkZGluZywgaWdub3JlQ2xpcHBpbmcpOwor
ICAgIHJldHVybiBjb250cm9sbGVyLT5ub2Rlc0Zyb21SZWN0KGNvbnRleHQsIGFyZ3VtZW50c1sw
XSwgeCwgeSwgdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0LCBpZ25vcmVDbGlwcGluZyk7CiB9CiAK
IHN0YXRpYyBKU1ZhbHVlUmVmIGxheWVyVHJlZUFzVGV4dENhbGxiYWNrKEpTQ29udGV4dFJlZiBj
b250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6
ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVS
ZWYqIGV4Y2VwdGlvbikKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xh
eW91dFRlc3RDb250cm9sbGVyLmggYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5oCmluZGV4IDRkMjAzMDEuLjc1NWEyYjIgMTAwNjQ0Ci0tLSBhL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKKysrIGIvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaApAQCAtNjAsNyArNjAs
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0NvbW1hbmRFbmFibGVkKEpTU3RyaW5nUmVmIG5hbWUp
OwogICAgIHZvaWQga2VlcFdlYkhpc3RvcnkoKTsKICAgICBKU1ZhbHVlUmVmIGNvbXB1dGVkU3R5
bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYpOwotICAgIEpT
VmFsdWVSZWYgbm9kZXNGcm9tUmVjdChKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYsIGludCB4LCBp
bnQgeSwgdW5zaWduZWQgaFBhZGRpbmcsIHVuc2lnbmVkIHZQYWRkaW5nLCBib29sIGlnbm9yZUNs
aXBwaW5nKTsKKyAgICBKU1ZhbHVlUmVmIG5vZGVzRnJvbVJlY3QoSlNDb250ZXh0UmVmLCBKU1Zh
bHVlUmVmLCBpbnQgeCwgaW50IHksIHVuc2lnbmVkIHRvcCwgdW5zaWduZWQgcmlnaHQsIHVuc2ln
bmVkIGJvdHRvbSwgdW5zaWduZWQgbGVmdCwgYm9vbCBpZ25vcmVDbGlwcGluZyk7CiAgICAgdm9p
ZCBub3RpZnlEb25lKCk7CiAgICAgaW50IG51bWJlck9mUGFnZXMoZmxvYXQgcGFnZVdpZHRoSW5Q
aXhlbHMsIGZsb2F0IHBhZ2VIZWlnaHRJblBpeGVscyk7CiAgICAgdm9pZCBvdmVycmlkZVByZWZl
cmVuY2UoSlNTdHJpbmdSZWYga2V5LCBKU1N0cmluZ1JlZiB2YWx1ZSk7CmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0g
Yi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMu
bW0KaW5kZXggZDQ0MjNkMy4uZDJhNmY3OSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCisrKyBiL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQpAQCAtMTk4LDkg
KzE5OCw5IEBAIEpTVmFsdWVSZWYgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNvbXB1dGVkU3R5bGVJ
bmNsdWRpbmdWaXNpdGVkSW5mbyhKU0NvbnRleHRSZWYKICAgICByZXR1cm4gW1ttYWluRnJhbWUg
d2ViVmlld10gX2NvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbzpjb250ZXh0IGZvckVs
ZW1lbnQ6dmFsdWVdOwogfQogCi1KU1ZhbHVlUmVmIExheW91dFRlc3RDb250cm9sbGVyOjpub2Rl
c0Zyb21SZWN0KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIHZhbHVlLCBpbnQgeCwg
aW50IHksIHVuc2lnbmVkIGhQYWRkaW5nLCB1bnNpZ25lZCB2UGFkZGluZywgYm9vbCBpZ25vcmVD
bGlwcGluZykKK0pTVmFsdWVSZWYgTGF5b3V0VGVzdENvbnRyb2xsZXI6Om5vZGVzRnJvbVJlY3Qo
SlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgdmFsdWUsIGludCB4LCBpbnQgeSwgdW5z
aWduZWQgdG9wLCB1bnNpZ25lZCByaWdodCwgdW5zaWduZWQgYm90dG9tLCB1bnNpZ25lZCBsZWZ0
LCBib29sIGlnbm9yZUNsaXBwaW5nKQogewotICAgIHJldHVybiBbW21haW5GcmFtZSB3ZWJWaWV3
XSBfbm9kZXNGcm9tUmVjdDpjb250ZXh0IGZvckRvY3VtZW50OnZhbHVlIHg6eCB5OnkgaFBhZGRp
bmc6aFBhZGRpbmcgdlBhZGRpbmc6dlBhZGRpbmcgaWdub3JlQ2xpcHBpbmc6aWdub3JlQ2xpcHBp
bmddOworICAgIHJldHVybiBbW21haW5GcmFtZSB3ZWJWaWV3XSBfbm9kZXNGcm9tUmVjdDpjb250
ZXh0IGZvckRvY3VtZW50OnZhbHVlIHg6eCB5OnkgdG9wOnRvcCByaWdodDpyaWdodCBib3R0b206
Ym90dG9tIGxlZnQ6bGVmdCBpZ25vcmVDbGlwcGluZzppZ25vcmVDbGlwcGluZ107CiB9CiAKIEpT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bGF5ZXJUcmVlQXNU
ZXh0KCkgY29uc3QKLS0gCjEuNi40LjIKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68872</attachid>
            <date>2010-09-26 20:31:22 -0700</date>
            <delta_ts>2010-09-26 20:45:02 -0700</delta_ts>
            <desc>patch v3.1 - same patch as v3, but builds on Mac</desc>
            <filename>0001-Make-Document-nodesFromRect-more-flexible.patch</filename>
            <type>text/plain</type>
            <size>41910</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSA2ZjQzN2FiZGFmNDYzODcyYTc0ZDliY2YzM2ZmZmY2MGM1NTcxMGY1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4K
RGF0ZTogVGh1LCAyMyBTZXAgMjAxMCAyMzo1MDoyMyAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIE1h
a2UgRG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QgbW9yZSBmbGV4aWJsZQogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2MzM2CgpQYXRjaCBieSBBbnRvbmlvIEdvbWVzIDxh
Z29tZXNAcmltLmNvbT4gb24gMjAxMC0wOS0yMwpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
ClRoZSBwYXRjaCBjaGFuZ2VzIHRoZSBBUEkgZm9yIHRoZSBEb2N1bWVudDo6bm9kZXNGcm9tUmVj
dCgpIG1ldGhvZCBhcyBmb2xsb3dzOgoKZnJvbQoKLSBSZWZQdGY8Tm9kZUxpc3Q+IG5vZGVzRnJv
bVJlY3QoaW50IHgsIGludCB5LCB1bnNpZ25lZCBob3Jpem9udGFsUGFkZGluZywgdW5zaWduZWQg
dmVydGljYWxQYWRkaW5nLCBib29sIGlnbm9yZUNsaXBwaW5nKQoKdG8KCi0gUmVmUHRmPE5vZGVM
aXN0PiBub2Rlc0Zyb21SZWN0KGludCB4LCBpbnQgeSwgdW5zaWduZWQgdG9wUGFkZGluZywgdW5z
aWduZWQgcmlnaHRQYWRkaW5nLCB1bnNpZ25lZCBib3R0b21QYWRkaW5nLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsZWZ0UGFkZGluZywgYm9vbCBpZ25vcmVDbGlw
cGluZykKClByZXZpb3VzbHkgdGhlIG1ldGhvZCB3YXMgcmVjZWl2aW5nIGFzIHBhcmFtZXRlciBo
b3Jpem9udGFsIGFuZCB2ZXJ0aWNhbCBwYWRkaW5nIHZhbHVlcy4KSW4gcHJhY3RpY2UsIHRoZSBo
b3Jpem9udGFsIHBhZGRpbmcgd2FzIGJlaW5nIHVzZWQgdG8gZXhwYW5kIGEgZ2l2ZW4gY2VudGVy
IHBvaW50IGluIGJvdGgKcmlnaHQgYW5kIGxlZnQgZGlyZWN0aW9ucywgd2hpbGUgdmVydGljYWwg
cGFkZGluZyB3YXMgZXhwYW5kaW5nIGl0IHRvIHRoZSB0b3AgYW5kIGJvdHRvbSBkaXJlY3Rpb25z
LgoKQWx0aG91Z2ggdGhpcyBkZXNpZ24gbWFrZXMgaXQgcG9zc2libGUgdG8gaW1wcm92ZSB0aGUg
dG91Y2ggZXhwZXJpZW5jZSBvbiBtb2JpbGUgZGV2aWNlcwooRG9jdW1lbnQ6Om5vZGVzRnJvbVJl
Y3QgZXhwb3NlcyB0aGUgcmVjdCBiYXNlZCBoaXQgdGVzdGluZyBzeXN0ZW0pLCBlbXBpcmljYWwg
ZXhwZXJpbWVudHMKc2hvd2VkIHRoYXQsIHNwZWNpYWxseSBpbiBjYXBhY2l0aXZlIHRvdWNoIHNj
cmVlbnMsIHVzZXJzIHRlbmQgdG8gdGFwIGJlbG93IGVsZW1lbnRzLiBTbwpmb3IgZXZlbiBtb3Jl
IGFjY3VyYXRlIHJlc3VsdHMgKHdoaWNoIG1lYW5zIGhlcmUgdGhlIHBvc3NpYmlsaXR5IG9mIHBs
ZWFzYW50IHRhcHBpbmcgZXhwZXJpZW5jZSksCml0IG1ha2VzIHNlbnNlIHRvIHVzZSBhIHJlZ2lv
biB0aGF0IGlzIG9mZnNldCBtb3JlIGFib3ZlIHRoZSB0b3VjaCBwb2ludCwgZmF2b3JpbmcgZWxl
bWVudHMKYWJvdmUgdGhlIHRvdWNoIHBvaW50LgoKVGhlIHBhdGNoIGJhc2ljYWxseSBpbXBsZW1l
bnRzIHRoYXQsIGluY3JlYXNpbmcgdGhlIEFQSSBmbGV4aWJsZSBhbmQgcG93ZXIgYnkgbWFraW5n
IGl0IHBvc3NpYmxlCnRvIHNwZWNpZnkgZGlmZmVyZW50IHBhZGRpbmcgdmFsdWVzIGZvciBlYWNo
IGRpcmVjdGlvbiBpbiBhIGdpdmVuIG9yaWVudGF0aW9uLgoKQ2hhbmdlcyB3ZXJlIG1hZGUgYWNj
b3JkaW5nbHkgdG8gdGhlIEhpdFRlc3RSZXN1bHQsIFJlbmRlckxheWVyLCBSZW5kZXJJbWFnZSBh
bmQgUmVuZGVyTGluZUJveExpc3QKY2xhc3Nlcy4KCldlYkNvcmU6CgoqIFdlYkNvcmUuZXhwLmlu
OgoqIGRvbS9Eb2N1bWVudC5jcHA6CihXZWJDb3JlOjpEb2N1bWVudDo6bm9kZXNGcm9tUmVjdCk6
CiogZG9tL0RvY3VtZW50Lmg6CiogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgooV2ViQ29yZTo6RXZl
bnRIYW5kbGVyOjpoaXRUZXN0UmVzdWx0QXRQb2ludCk6IEZvciBzaW1wbGljaXR5LCBJIGRpZCBu
b3QgY2hhbmdlIHRoZSBzaWduYXR1cmUKICAgIGJ1dCB0aGUgd2F5IHRoZSBwYWRkaW5nIHZhbHVl
IHBhc3NlZCBpbiBhcyBwYXJhbWV0ZXIgaXMgYmVpbmcgdXNlZCB0byBjb25zdHJ1Y3QgYSBIaXRU
ZXN0UmVzdWx0LgoqIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcDogQ2hhbmdlZCB0aGUgcmVj
dC1iYXNlZCBiaXRzIGZyb20gdXNpbmcgSW50U2l6ZSAocGFkZGluZykgdG8gc2VwYXJhdGVkIHBh
ZGRpbmdzCiAgICBmb3IgZWFjaCBkaXJlY3Rpb24uCihXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpI
aXRUZXN0UmVzdWx0KTogRGl0dG8uCihXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpvcGVyYXRvcj0p
OiBEaXR0by4KKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OnJlY3RGcm9tUG9pbnQpOiBEaXR0b24u
CiogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaDoKKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OnRv
cFBhZGRpbmcpOiBnZXR0ZXIgZm9yIHRoZSB0b3AgcGFkZGluZy4KKFdlYkNvcmU6OkhpdFRlc3RS
ZXN1bHQ6OnJpZ2h0UGFkZGluZyk6IGdldHRlciBmb3IgdGhlIHJpZ2h0IHBhZGRpbmcuCihXZWJD
b3JlOjpIaXRUZXN0UmVzdWx0Ojpib3R0b21QYWRkaW5nKTogZ2V0dGVyIGZvciB0aGUgYm90dG9t
IHBhZGRpbmcuCihXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpsZWZ0UGFkZGluZyk6IGdldHRlciBm
b3IgdGhlIGxlZnQgcGFkZGluZy4KKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OnJlY3RGcm9tUG9p
bnQpOiBBZGRlZCBhIHN0YXRpYyBtZXRob2QgdGhhdCBnaXZlbiBhIGNlbnRlciBwb2ludCBhbmQg
cGFkZGluZyB2YWx1ZXMgZm9yCiAgICBlYWNoIGRpcmVjdGlvbiwgcmV0dXJucyB0aGUgcmVjdCB0
aGF0IGlzIGdvaW5nIHRvIGJlIHVzZWQgaW4gV2ViQ29yZSdzIGhpdCB0ZXN0aW5nIHByb2Nlc3Np
bmcuCiogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDogQ2hhbmdlZCB0aGUgcmVjdC1iYXNlZCBi
aXRzIGZyb20gdXNpbmcgSW50U2l6ZSAocGFkZGluZykgdG8gc2VwYXJhdGVkIHBhZGRpbmdzIGZv
ciBlYWNoIGRpcmVjdGlvbi4KKFdlYkNvcmU6OlJlbmRlckltYWdlOjpub2RlQXRQb2ludCk6IERp
dHRvLgoqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6IERpdHRvLgooV2ViQ29yZTo6UmVuZGVy
TGF5ZXI6OmhpdFRlc3RMYXllcik6IERpdHRvLgooV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmhpdFRl
c3RMaXN0KTogRGl0dG8uCiogcmVuZGVyaW5nL1JlbmRlckxpbmVCb3hMaXN0LmNwcDogRGl0dG8u
CihXZWJDb3JlOjpSZW5kZXJMaW5lQm94TGlzdDo6aGl0VGVzdCk6IERpdHRvLgoKTGF5b3V0VGVz
dHM6CgoqIGZhc3QvZG9tL25vZGVzRnJvbVJlY3QtYmFzaWMtZXhwZWN0ZWQudHh0OgoqIGZhc3Qv
ZG9tL25vZGVzRnJvbVJlY3QtYmFzaWMuaHRtbDoKKiBmYXN0L2RvbS9yZXNvdXJjZXMvbm9kZXNG
cm9tUmVjdC5qczoKKGNoZWNrKToKLS0tCiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgMTQgKysrKwogLi4uL2Zhc3QvZG9tL25vZGVzRnJvbVJl
Y3QtYmFzaWMtZXhwZWN0ZWQudHh0ICAgICAgfCAgIDQ0ICsrKysrKystLS0tLS0tCiBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9ub2Rlc0Zyb21SZWN0LWJhc2ljLmh0bWwgICAgICB8ICAgNDQgKysrKysr
Ky0tLS0tLS0KIExheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNlcy9ub2Rlc0Zyb21SZWN0Lmpz
ICAgIHwgICAxNiArKystLQogV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCAgIDY0ICsrKysrKysrKysrKysrKysrKysrCiBXZWJDb3JlL1dlYkNvcmUu
ZXhwLmluICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDMgKy0KIFdlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgOSArLS0KIFdlYkNv
cmUvZG9tL0RvY3VtZW50LmggICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMCArKyst
CiBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCAgICAgICAgICAgICAgICAgICAgICB8ICAg
IDQgKy0KIFdlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwICAgICAgICAgICAgICAg
IHwgICA0OCArKysrKysrKysrKystLS0KIFdlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQu
aCAgICAgICAgICAgICAgICAgIHwgICA0MSArKysrKystLS0tLS0tCiBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZS5jcHAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcCAgICAgICAgICAgICAgICAgIHwgICAgNiArLQogV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJveExpc3QuY3BwICAgICAgICAgICAgfCAgICA4ICstCiBX
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSAgICAgICAgICAgICAgICAgICAgICB8ICAgIDQg
Ky0KIFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oICAgICAgICAgICAgICAgIHwg
ICAgMiArLQogLi4uL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCAgICAg
ICAgfCAgIDEyICsrLS0KIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250
cm9sbGVyLmggIHwgICAgMiArLQogLi4uL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29u
dHJvbGxlck1hYy5tbSAgfCAgICA0ICstCiAxOSBmaWxlcyBjaGFuZ2VkLCAyMjYgaW5zZXJ0aW9u
cygrKSwgMTExIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkNzQwOTdkLi5jNzkzMTAxIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMTAtMDktMjMgIEFudG9uaW8gR29tZXMgIDxhZ29tZXNAcmltLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtl
IERvY3VtZW50Ojpub2Rlc0Zyb21SZWN0IG1vcmUgZmxleGlibGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2MzM2CisKKyAgICAgICAgVGVzdHMgYmFz
aWNhbGx5IGFkanVzdGVkIHRvIHRoZSBuZXcgQVBJLgorCisgICAgICAgICogZmFzdC9kb20vbm9k
ZXNGcm9tUmVjdC1iYXNpYy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vbm9kZXNG
cm9tUmVjdC1iYXNpYy5odG1sOgorICAgICAgICAqIGZhc3QvZG9tL3Jlc291cmNlcy9ub2Rlc0Zy
b21SZWN0LmpzOgorICAgICAgICAoY2hlY2spOgorCiAyMDEwLTA5LTI2ICBBbnRvbmlvIEdvbWVz
ICA8YWdvbWVzQHJpbS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBD
aHJpc3RpYW5zZW4uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2Rlc0Zyb21S
ZWN0LWJhc2ljLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJl
Y3QtYmFzaWMtZXhwZWN0ZWQudHh0CmluZGV4IDg5ZjFlYTMuLjQ1OTE1ZmUgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3QtYmFzaWMtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3QtYmFzaWMtZXhwZWN0ZWQudHh0
CkBAIC0xLDI2ICsxLDI2IEBACiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRF
U1QgQ09NUExFVEUKLVBBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QgWzUzLDcx
XSwgWzAsMF0KLVBBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QgWzUzLDcxXSwg
WzEwLDBdCi1QQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0IFs1Myw3MV0sIFsw
LDEwXQotUEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdCBbNTMsNzFdLCBbMTAs
MTBdCi1QQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0IFsxNTIsMTA1XSwgWzAs
MTBdCi1QQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0IFsxNTIsMTA1XSwgWzEw
LDBdCi1QQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0IFsxNTIsMTA1XSwgWzEw
LDEwXQotUEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdCBbMTUzLDE5M10sIFsw
LDBdCi1QQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0IFsxNTMsMTkzXSwgWzIw
LDBdCi1QQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0IFsxNTMsMTkzXSwgWzAs
MjBdCi1QQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0IFsxNDQsMTgzXSwgWzAs
MF0KLVBBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QgWzE0NCwxODNdLCBbMCwx
XQotUEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdCBbMTQ0LDE4M10sIFsxLDBd
Ci1QQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0IFsxNDQsMTgzXSwgWzEsMV0K
LVBBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QgWzc3LDI0MF0sIFswLDBdCi1Q
QVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0IFs3NywyNDBdLCBbMTAsMF0KLVBB
U1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QgWzc3LDI0MF0sIFswLDEwXQotUEFT
UyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdCBbNzcsMjQwXSwgWzEwLDEwXQotUEFT
UyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdCBbMzksMjEyXSwgWzAsMF0KLVBBU1Mg
QWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QgWzM5LDIxMl0sIFswLDEwXQotUEFTUyBB
bGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdCBbMzksMjEyXSwgWzEwLDBdCi1QQVNTIEFs
bCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0IFszOSwyMTJdLCBbMTAsMTBdCitQQVNTIEFs
bCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0IFs1Myw3MV0sIFswLDAsMCwwXQorUEFTUyBB
bGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdCBbNTMsNzFdLCBbMCwxMCwwLDEwXQorUEFT
UyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdCBbNTMsNzFdLCBbMTAsMCwxMCwwXQor
UEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdCBbNTMsNzFdLCBbMTAsMTAsMTAs
MTBdCitQQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0IFsxNTIsMTA1XSwgWzEw
LDAsMTAsMF0KK1BBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QgWzE1MiwxMDVd
LCBbMCwxMCwwLDEwXQorUEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdCBbMTUy
LDEwNV0sIFsxMCwxMCwxMCwxMF0KK1BBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJl
Y3QgWzE1MywxOTNdLCBbMCwwLDAsMF0KK1BBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9y
IHJlY3QgWzE1MywxOTNdLCBbMCwyMCwwLDIwXQorUEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3Vu
ZCBmb3IgcmVjdCBbMTUzLDE5M10sIFsyMCwwLDIwLDBdCitQQVNTIEFsbCBjb3JyZWN0IG5vZGVz
IGZvdW5kIGZvciByZWN0IFsxNDQsMTgzXSwgWzAsMCwwLDBdCitQQVNTIEFsbCBjb3JyZWN0IG5v
ZGVzIGZvdW5kIGZvciByZWN0IFsxNDQsMTgzXSwgWzEsMCwxLDBdCitQQVNTIEFsbCBjb3JyZWN0
IG5vZGVzIGZvdW5kIGZvciByZWN0IFsxNDQsMTgzXSwgWzAsMSwwLDFdCitQQVNTIEFsbCBjb3Jy
ZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0IFsxNDQsMTgzXSwgWzEsMSwxLDFdCitQQVNTIEFsbCBj
b3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0IFs3NywyNDBdLCBbMCwwLDAsMF0KK1BBU1MgQWxs
IGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QgWzc3LDI0MF0sIFswLDEwLDAsMTBdCitQQVNT
IEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0IFs3NywyNDBdLCBbMTAsMCwxMCwwXQor
UEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdCBbNzcsMjQwXSwgWzEwLDEwLDEw
LDEwXQorUEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdCBbMzksMjEyXSwgWzAs
MCwwLDBdCitQQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0IFszOSwyMTJdLCBb
MTAsMCwxMCwwXQorUEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdCBbMzksMjEy
XSwgWzAsMTAsMCwxMF0KK1BBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QgWzM5
LDIxMl0sIFsxMCwxMCwxMCwxMF0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
bm9kZXNGcm9tUmVjdC1iYXNpYy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9t
UmVjdC1iYXNpYy5odG1sCmluZGV4IDZhNDA2NGEuLjJiNDNjNjUgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3QtYmFzaWMuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9ub2Rlc0Zyb21SZWN0LWJhc2ljLmh0bWwKQEAgLTIyLDM3ICsyMiwzNyBAQAog
CiAgICAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7CiAKLSAgICAgIGNoZWNrKDUzLCA3MSwgMCwg
MCwgW2UuYm9keV0pOwotICAgICAgY2hlY2soNTMsIDcxLCAxMCwgMCwgW2UucDMsIGUuYm9keV0p
OwotICAgICAgY2hlY2soNTMsIDcxLCAwLCAxMCwgW2UuZDEsIGUuaDEsIGUuYm9keV0pOwotICAg
ICAgY2hlY2soNTMsIDcxLCAxMCwgMTAsIFtlLnAzLCBlLmQxLCBlLmgxLCBlLmJvZHldKTsKKyAg
ICAgIGNoZWNrKDUzLCA3MSwgMCwgMCwgMCwgMCwgW2UuYm9keV0pOworICAgICAgY2hlY2soNTMs
IDcxLCAwLCAxMCwgMCwgMTAsIFtlLnAzLCBlLmJvZHldKTsKKyAgICAgIGNoZWNrKDUzLCA3MSwg
MTAsIDAsIDEwLCAwLCBbZS5kMSwgZS5oMSwgZS5ib2R5XSk7CisgICAgICBjaGVjayg1MywgNzEs
IDEwLCAxMCwgMTAsIDEwLCBbZS5wMywgZS5kMSwgZS5oMSwgZS5ib2R5XSk7CiAKLSAgICAgIGNo
ZWNrKDE1MiwgMTA1LCAwLCAxMCwgW2UucDMsIGUuYm9keV0pOwotICAgICAgY2hlY2soMTUyLCAx
MDUsIDEwLCAwLCBbZS5wNCwgZS5kMSwgZS5ib2R5XSk7Ci0gICAgICBjaGVjaygxNTIsIDEwNSwg
MTAsIDEwLCBbZS5wNCwgZS5wMywgZS5kMSwgZS5ib2R5XSk7CisgICAgICBjaGVjaygxNTIsIDEw
NSwgMTAsIDAsIDEwLCAwLCBbZS5wMywgZS5ib2R5XSk7CisgICAgICBjaGVjaygxNTIsIDEwNSwg
MCwgMTAsIDAsIDEwLCBbZS5wNCwgZS5kMSwgZS5ib2R5XSk7CisgICAgICBjaGVjaygxNTIsIDEw
NSwgMTAsIDEwLCAxMCwgMTAsIFtlLnA0LCBlLnAzLCBlLmQxLCBlLmJvZHldKTsKIAogICAgICAg
Ly8gZS5wMSBpcyBpbnZpc2libGUgYW5kIHNob3VsZG4ndCBhcHBlYXI6Ci0gICAgICBjaGVjaygx
NTMsMTkzLDAsMCxbZS5wNV0pOworICAgICAgY2hlY2soMTUzLCAxOTMsIDAsIDAsIDAsIDAsIFtl
LnA1XSk7CiAgICAgICAvLyBOT1RFOiBbZS5wNSwgZS5kMl0pIHNob3VsZCBiZSByZXR1cm5lZCBp
ZiB3ZSBkaWQgbm90IHN0b3AKICAgICAgIC8vIGF0IGUucDUsIHdoaWNoIGZ1bGx5IGVuY2xvc2Vz
IHRoZSB0YXJnZXQgcmVjdC4KLSAgICAgIGNoZWNrKDE1MywxOTMsMjAsMCwgW2UucDVdKTsKLSAg
ICAgIGNoZWNrKDE1MywxOTMsMCwyMCwgW2UucDUsIGUuYm9keV0pOworICAgICAgY2hlY2soMTUz
LDE5MywwLCAyMCwgMCwgMjAsIFtlLnA1XSk7CisgICAgICBjaGVjaygxNTMsMTkzLDIwLCAwLCAy
MCwgMCwgW2UucDUsIGUuYm9keV0pOwogCiAgICAgICAvLyBQcmVjaXNlIHBpeGVsIGNoZWNrczoK
LSAgICAgIGNoZWNrKDE0NCwgMTgzLCAwLCAwLCBbZS5ib2R5XSk7Ci0gICAgICBjaGVjaygxNDQs
IDE4MywgMCwgMSwgW2UucDUsIGUuYm9keV0pOwotICAgICAgY2hlY2soMTQ0LCAxODMsIDEsIDAs
IFtlLmQyLCBlLmJvZHldKTsKLSAgICAgIGNoZWNrKDE0NCwgMTgzLCAxLCAxLCBbZS5wNSwgZS5k
MiwgZS5ib2R5XSk7Ci0gICAgICBjaGVjayg3NywgMjQwLCAwLCAwLCBbZS5wMl0pOwotICAgICAg
Y2hlY2soNzcsIDI0MCwgMTAsIDAsIFtlLnAyXSk7Ci0gICAgICBjaGVjayg3NywgMjQwLCAwLCAx
MCwgW2UucDUsIGUuc3BhbiwgZS5wMl0pOwotICAgICAgY2hlY2soNzcsIDI0MCwgMTAsIDEwLCBb
ZS5wNSwgZS5zcGFuLCBlLnAyXSk7CisgICAgICBjaGVjaygxNDQsIDE4MywgMCwgMCwgMCwgMCwg
W2UuYm9keV0pOworICAgICAgY2hlY2soMTQ0LCAxODMsIDEsIDAsIDEsIDAsIFtlLnA1LCBlLmJv
ZHldKTsKKyAgICAgIGNoZWNrKDE0NCwgMTgzLCAwLCAxLCAwLCAxLCBbZS5kMiwgZS5ib2R5XSk7
CisgICAgICBjaGVjaygxNDQsIDE4MywgMSwgMSwgMSwgMSwgW2UucDUsIGUuZDIsIGUuYm9keV0p
OworICAgICAgY2hlY2soNzcsIDI0MCwgMCwgMCwgMCwgMCwgW2UucDJdKTsKKyAgICAgIGNoZWNr
KDc3LCAyNDAsIDAsIDEwLCAwLCAxMCwgW2UucDJdKTsKKyAgICAgIGNoZWNrKDc3LCAyNDAsIDEw
LCAwLCAxMCwgMCwgW2UucDUsIGUuc3BhbiwgZS5wMl0pOworICAgICAgY2hlY2soNzcsIDI0MCwg
MTAsIDEwLCAxMCwgMTAsIFtlLnA1LCBlLnNwYW4sIGUucDJdKTsKIAogICAgICAgLy8gRXhwYW5k
aW5nIGFyZWEgY2hlY2tzOgotICAgICAgY2hlY2soMzksIDIxMiwgMCwgIDAsIFtlLmJvZHldKTsK
LSAgICAgIGNoZWNrKDM5LCAyMTIsIDAsIDEwLCBbZS5kMiwgZS5wMiwgZS5ib2R5XSk7Ci0gICAg
ICBjaGVjaygzOSwgMjEyLCAxMCwgMCwgW2UucDUsIGUuYm9keV0pOwotICAgICAgY2hlY2soMzks
IDIxMiwgMTAsIDEwLCBbZS5wNSwgZS5kMiwgZS5wMiwgZS5ib2R5XSk7CisgICAgICBjaGVjaygz
OSwgMjEyLCAwLCAgMCwgMCwgMCwgW2UuYm9keV0pOworICAgICAgY2hlY2soMzksIDIxMiwgMTAs
IDAsIDEwLCAwLCBbZS5kMiwgZS5wMiwgZS5ib2R5XSk7CisgICAgICBjaGVjaygzOSwgMjEyLCAw
LCAxMCwgMCwgMTAsIFtlLnA1LCBlLmJvZHldKTsKKyAgICAgIGNoZWNrKDM5LCAyMTIsIDEwLCAx
MCwgMTAsIDEwLCBbZS5wNSwgZS5kMiwgZS5wMiwgZS5ib2R5XSk7CiAKICAgICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCiAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5v
dGlmeURvbmUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNlcy9u
b2Rlc0Zyb21SZWN0LmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVzb3VyY2VzL25vZGVzRnJv
bVJlY3QuanMKaW5kZXggMDY3MTYzOS4uNDJkN2Y5YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vcmVzb3VyY2VzL25vZGVzRnJvbVJlY3QuanMKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vcmVzb3VyY2VzL25vZGVzRnJvbVJlY3QuanMKQEAgLTMsMTkgKzMsMjEgQEAKICAqICAg
ICAqIEFudG9uaW8gR29tZXMgPHRvbmlraXRvb0B3ZWJraXQub3JnPgogICoqLwogCi1mdW5jdGlv
biBjaGVjayh4LCB5LCBoUGFkZGluZywgdlBhZGRpbmcsIGxpc3QpCitmdW5jdGlvbiBjaGVjayh4
LCB5LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5n
LCBsaXN0KQogewogICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKICAgICByZXR1
cm47CiAKLSAgdmFyIG5vZGVzID0gbGF5b3V0VGVzdENvbnRyb2xsZXIubm9kZXNGcm9tUmVjdChk
b2N1bWVudCwgeCwgeSwgaFBhZGRpbmcsIHZQYWRkaW5nLCB0cnVlIC8qIGlnbm9yZUNsaXBwaW5n
ICovKTsKKyAgdmFyIG5vZGVzID0gbGF5b3V0VGVzdENvbnRyb2xsZXIubm9kZXNGcm9tUmVjdChk
b2N1bWVudCwgeCwgeSwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBs
ZWZ0UGFkZGluZywgdHJ1ZSAvKiBpZ25vcmVDbGlwcGluZyAqLyk7CiAgIGlmICghbm9kZXMpCiAg
ICAgcmV0dXJuOwogCiAgIGlmIChub2Rlcy5sZW5ndGggIT0gbGlzdC5sZW5ndGgpIHsKICAgICB0
ZXN0RmFpbGVkKCJEaWZmZXJlbnQgbnVtYmVyIG9mIG5vZGVzIGZvciByZWN0IiArCiAgICAgICAg
ICAgICAgICJbIiArIHggKyAiLCIgKyB5ICsgIl0sICIgKwotICAgICAgICAgICAgICAiWyIgKyBo
UGFkZGluZyArICIsIiArIHZQYWRkaW5nICsgIl06ICciICsgbGlzdC5sZW5ndGggKyAiJyB2cyAn
IiArIG5vZGVzLmxlbmd0aCArICInIik7CisgICAgICAgICAgICAgICJbIiArIHRvcFBhZGRpbmcg
KyAiLCIgKyByaWdodFBhZGRpbmcgKworICAgICAgICAgICAgICAiLCIgKyBib3R0b21QYWRkaW5n
ICsgIiwiICsgbGVmdFBhZGRpbmcgKworICAgICAgICAgICAgICAiXTogJyIgKyBsaXN0Lmxlbmd0
aCArICInIHZzICciICsgbm9kZXMubGVuZ3RoICsgIiciKTsKICAgICByZXR1cm47CiAgIH0KIApA
QCAtMjMsMTQgKzI1LDE2IEBAIGZ1bmN0aW9uIGNoZWNrKHgsIHksIGhQYWRkaW5nLCB2UGFkZGlu
ZywgbGlzdCkKICAgICBpZiAobm9kZXNbaV0gIT0gbGlzdFtpXSkgewogICAgICAgdGVzdEZhaWxl
ZCgiVW5leHBlY3RlZCBub2RlICMiICsgaSArICIgZm9yIHJlY3QgIiArCiAgICAgICAgICAgICAg
ICAgIlsiICsgeCArICIsIiArIHkgKyAiXSwgIiArCi0gICAgICAgICAgICAgICAgIlsiICsgaFBh
ZGRpbmcgKyAiLCIgKyB2UGFkZGluZyArICJdIiArICIgLSAiICsgbm9kZXNbaV0pOworICAgICAg
ICAgICAgICAgICJbIiArIHRvcFBhZGRpbmcgKyAiLCIgKyByaWdodFBhZGRpbmcgKworICAgICAg
ICAgICAgICAgICIsIiArIGJvdHRvbVBhZGRpbmcgKyAiLCIgKyBsZWZ0UGFkZGluZyArICJdIiAr
ICIgLSAiICsgbm9kZXNbaV0pOwogICAgICAgcmV0dXJuOwogICAgIH0KICAgfQogCiAgIHRlc3RQ
YXNzZWQoIkFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0ICIgICsKLSAgICAgICAgICAg
IlsiICsgeCArICIsIiArIHkgKyAiXSwgIiArCi0gICAgICAgICAgICJbIiArIGhQYWRkaW5nICsg
IiwiICsgdlBhZGRpbmcgKyAiXSIpOworICAgICAgICAgICAgICJbIiArIHggKyAiLCIgKyB5ICsg
Il0sICIgKworICAgICAgICAgICAgICJbIiArIHRvcFBhZGRpbmcgKyAiLCIgKyByaWdodFBhZGRp
bmcgKworICAgICAgICAgICAgICIsIiArIGJvdHRvbVBhZGRpbmcgKyAiLCIgKyBsZWZ0UGFkZGlu
ZyArICJdIik7CiB9CiAKIGZ1bmN0aW9uIGdldENlbnRlckZvcihlbGVtZW50KQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5YTY5MWVkLi4w
NGIzNWYzIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDEwLTA5LTIzICBBbnRvbmlvIEdvbWVzICA8YWdvbWVz
QHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTWFrZSBEb2N1bWVudDo6bm9kZXNGcm9tUmVjdCBtb3JlIGZsZXhpYmxlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjMzNgorCisgICAgICAgIFRo
ZSBwYXRjaCBjaGFuZ2VzIHRoZSBBUEkgZm9yIHRoZSBEb2N1bWVudDo6bm9kZXNGcm9tUmVjdCgp
IG1ldGhvZCBhcyBmb2xsb3dzOgorCisgICAgICAgIGZyb20KKworICAgICAgICAtIFJlZlB0ZjxO
b2RlTGlzdD4gbm9kZXNGcm9tUmVjdChpbnQgeCwgaW50IHksIHVuc2lnbmVkIGhvcml6b250YWxQ
YWRkaW5nLCB1bnNpZ25lZCB2ZXJ0aWNhbFBhZGRpbmcsIGJvb2wgaWdub3JlQ2xpcHBpbmcpCisK
KyAgICAgICAgdG8KKworICAgICAgICAtIFJlZlB0ZjxOb2RlTGlzdD4gbm9kZXNGcm9tUmVjdChp
bnQgeCwgaW50IHksIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFkZGluZywg
dW5zaWduZWQgYm90dG9tUGFkZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgbGVmdFBhZGRpbmcsIGJvb2wgaWdub3JlQ2xpcHBpbmcpCisKKyAg
ICAgICAgUHJldmlvdXNseSB0aGUgbWV0aG9kIHdhcyByZWNlaXZpbmcgYXMgcGFyYW1ldGVyIGhv
cml6b250YWwgYW5kIHZlcnRpY2FsIHBhZGRpbmcgdmFsdWVzLgorICAgICAgICBJbiBwcmFjdGlj
ZSwgdGhlIGhvcml6b250YWwgcGFkZGluZyB3YXMgYmVpbmcgdXNlZCB0byBleHBhbmQgYSBnaXZl
biBjZW50ZXIgcG9pbnQgaW4gYm90aAorICAgICAgICByaWdodCBhbmQgbGVmdCBkaXJlY3Rpb25z
LCB3aGlsZSB2ZXJ0aWNhbCBwYWRkaW5nIHdhcyBleHBhbmRpbmcgaXQgdG8gdGhlIHRvcCBhbmQg
Ym90dG9tIGRpcmVjdGlvbnMuCisKKyAgICAgICAgQWx0aG91Z2ggdGhpcyBkZXNpZ24gbWFrZXMg
aXQgcG9zc2libGUgdG8gaW1wcm92ZSB0aGUgdG91Y2ggZXhwZXJpZW5jZSBvbiBtb2JpbGUgZGV2
aWNlcworICAgICAgICAoRG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QgZXhwb3NlcyB0aGUgcmVjdCBi
YXNlZCBoaXQgdGVzdGluZyBzeXN0ZW0pLCBlbXBpcmljYWwgZXhwZXJpbWVudHMKKyAgICAgICAg
c2hvd2VkIHRoYXQsIHNwZWNpYWxseSBpbiBjYXBhY2l0aXZlIHRvdWNoIHNjcmVlbnMsIHVzZXJz
IHRlbmQgdG8gdGFwIGJlbG93IGVsZW1lbnRzLiBTbworICAgICAgICBmb3IgZXZlbiBtb3JlIGFj
Y3VyYXRlIHJlc3VsdHMgKHdoaWNoIG1lYW5zIGhlcmUgdGhlIHBvc3NpYmlsaXR5IG9mIHBsZWFz
YW50IHRhcHBpbmcgZXhwZXJpZW5jZSksCisgICAgICAgIGl0IG1ha2VzIHNlbnNlIHRvIHVzZSBh
IHJlZ2lvbiB0aGF0IGlzIG9mZnNldCBtb3JlIGFib3ZlIHRoZSB0b3VjaCBwb2ludCwgZmF2b3Jp
bmcgZWxlbWVudHMKKyAgICAgICAgYWJvdmUgdGhlIHRvdWNoIHBvaW50LgorCisgICAgICAgIFRo
ZSBwYXRjaCBiYXNpY2FsbHkgaW1wbGVtZW50cyB0aGF0LCBpbmNyZWFzaW5nIHRoZSBBUEkgZmxl
eGlibGUgYW5kIHBvd2VyIGJ5IG1ha2luZyBpdCBwb3NzaWJsZQorICAgICAgICB0byBzcGVjaWZ5
IGRpZmZlcmVudCBwYWRkaW5nIHZhbHVlcyBmb3IgZWFjaCBkaXJlY3Rpb24gaW4gYSBnaXZlbiBv
cmllbnRhdGlvbi4KKworICAgICAgICBDaGFuZ2VzIHdlcmUgbWFkZSBhY2NvcmRpbmdseSB0byB0
aGUgSGl0VGVzdFJlc3VsdCwgUmVuZGVyTGF5ZXIsIFJlbmRlckltYWdlIGFuZCBSZW5kZXJMaW5l
Qm94TGlzdAorICAgICAgICBjbGFzc2VzLgorCisgICAgICAgIFdlYkNvcmU6CisKKyAgICAgICAg
KiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDogQVBJIGFkanVzdG1l
bnQuCisgICAgICAgICogZG9tL0RvY3VtZW50LmlkbDogRGl0dG8uCisgICAgICAgICogZG9tL0Rv
Y3VtZW50LmNwcDogQVBJIGFkanVzdG1lbnQgYW5kIG1ldGhvZCBib2R5IGltcGxlbWVudGF0aW9u
IGFjY29yZGluZ2x5LgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3Qp
OgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGl0VGVzdFJlc3VsdEF0UG9pbnQpOiBGb3Igc2ltcGxpY2l0eSwgSSBkaWQg
bm90IGNoYW5nZSB0aGUgc2lnbmF0dXJlCisgICAgICAgICAgICBidXQgdGhlIHdheSB0aGUgcGFk
ZGluZyB2YWx1ZSBwYXNzZWQgaW4gYXMgcGFyYW1ldGVyIGlzIGJlaW5nIHVzZWQgdG8gY29uc3Ry
dWN0IGEgSGl0VGVzdFJlc3VsdC4KKyAgICAgICAgKiByZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5j
cHA6IENoYW5nZWQgdGhlIHJlY3QtYmFzZWQgYml0cyBmcm9tIHVzaW5nIEludFNpemUgKHBhZGRp
bmcpIHRvIHNlcGFyYXRlZCBwYWRkaW5ncyBmb3IgZWFjaCBkaXJlY3Rpb24uCisgICAgICAgIChX
ZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpIaXRUZXN0UmVzdWx0KTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpvcGVyYXRvcj0pOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkhpdFRlc3RSZXN1bHQ6OnJlY3RGcm9tUG9pbnQpOiBEaXR0by4KKyAgICAgICAgKiByZW5k
ZXJpbmcvSGl0VGVzdFJlc3VsdC5oOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6
dG9wUGFkZGluZyk6IGdldHRlciBmb3IgdGhlIHRvcCBwYWRkaW5nLgorICAgICAgICAoV2ViQ29y
ZTo6SGl0VGVzdFJlc3VsdDo6cmlnaHRQYWRkaW5nKTogZ2V0dGVyIGZvciB0aGUgcmlnaHQgcGFk
ZGluZy4KKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OmJvdHRvbVBhZGRpbmcpOiBn
ZXR0ZXIgZm9yIHRoZSBib3R0b20gcGFkZGluZy4KKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RS
ZXN1bHQ6OmxlZnRQYWRkaW5nKTogZ2V0dGVyIGZvciB0aGUgbGVmdCBwYWRkaW5nLgorICAgICAg
ICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6cmVjdEZyb21Qb2ludCk6IEFkZGVkIGEgc3RhdGlj
IG1ldGhvZCB0aGF0IGdpdmVuIGEgY2VudGVyIHBvaW50IGFuZCBwYWRkaW5nIHZhbHVlcyBmb3Ig
ZWFjaCBkaXJlY3Rpb24sCisgICAgICAgICAgICByZXR1cm5zIHRoZSByZWN0IHRoYXQgaXMgZ29p
bmcgdG8gYmUgdXNlZCBpbiBXZWJDb3JlJ3MgaGl0IHRlc3RpbmcgcHJvY2Vzc2luZy4KKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOiBDaGFuZ2VkIHRoZSByZWN0LWJhc2VkIGJp
dHMgZnJvbSB1c2luZyBJbnRTaXplIChwYWRkaW5nKSB0byBzZXBhcmF0ZWQgcGFkZGluZ3MgZm9y
IGVhY2ggZGlyZWN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6Om5vZGVBdFBv
aW50KTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aGl0VGVzdExheWVyKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aGl0VGVzdExpc3QpOiBEaXR0by4KKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTGluZUJveExpc3QuY3BwOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxpbmVCb3hMaXN0OjpoaXRUZXN0KTogRGl0dG8uCisKIDIwMTAtMDktMjYg
IEFudG9uaW8gR29tZXMgIDxhZ29tZXNAcmltLmNvbWc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
S2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluIGIvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBlYmYxY2MzLi41MzU3OTU4IDEw
MDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KQEAgLTQ5Miw3ICs0OTIsNiBAQCBfX1pON1dlYkNvcmUyNmNvbnRleHRNZW51SXRlbVRh
Z0ZvbnRNZW51RXYKIF9fWk43V2ViQ29yZTI2Y29udGV4dE1lbnVJdGVtVGFnT3BlbkxpbmtFdgog
X19aTjdXZWJDb3JlMjZ1c2VzVGVzdE1vZGVGb2N1c1JpbmdDb2xvckV2CiBfX1pON1dlYkNvcmUy
N0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbkMxRU4zV1RGMTBQYXNzUmVmUHRySU5TXzROb2Rl
RUVFYlJLTlMxXzZTdHJpbmdFCi1fX1pOSzdXZWJDb3JlOERvY3VtZW50MTNub2Rlc0Zyb21SZWN0
RWlpampiCiBfX1pON1dlYkNvcmUyN0RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazE0c2V0T3Jp
ZW50YXRpb25FTjNXVEYxMFBhc3NSZWZQdHJJTlNfMTdEZXZpY2VPcmllbnRhdGlvbkVFRQogX19a
TjdXZWJDb3JlMjdEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2tDMUV2CiBfX1pON1dlYkNvcmUy
N2FwcGxpY2F0aW9uSXNBZG9iZUluc3RhbGxlckV2CkBAIC02ODksNiArNjg4LDcgQEAgX19aTjdX
ZWJDb3JlOERvY3VtZW50MjZwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVsc0VpUk5TXzdJbnRTaXpl
RVJpUzNfUzNfUzNfCiBfX1pON1dlYkNvcmU4RG9jdW1lbnQyN3JlbW92ZU1lZGlhQ2FuU3RhcnRM
aXN0ZW5lckVQTlNfMjFNZWRpYUNhblN0YXJ0TGlzdGVuZXJFCiBfX1pON1dlYkNvcmU4RG9jdW1l
bnQzNnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0c0V2CiBfX1pON1dlYkNvcmU4
RG9jdW1lbnQ0aGVhZEV2CitfX1pOSzdXZWJDb3JlOERvY3VtZW50MTNub2Rlc0Zyb21SZWN0RWlp
ampqamIKIF9fWk43V2ViQ29yZTEwSlNEb2N1bWVudDZzX2luZm9FCiBfX1pON1dlYkNvcmU4Rm9y
bURhdGE2Y3JlYXRlRVBLdm0KIF9fWk43V2ViQ29yZThGb3JtRGF0YUQxRXYKQEAgLTkyMyw2ICs5
MjMsNyBAQCBfX1pOSzdXZWJDb3JlMTNIaXRUZXN0UmVzdWx0MTh0aXRsZURpc3BsYXlTdHJpbmdF
dgogX19aTks3V2ViQ29yZTEzSGl0VGVzdFJlc3VsdDVpbWFnZUV2CiBfX1pOSzdXZWJDb3JlMTNI
aXRUZXN0UmVzdWx0NXRpdGxlRVJOU18xM1RleHREaXJlY3Rpb25FCiBfX1pOSzdXZWJDb3JlMTNI
aXRUZXN0UmVzdWx0OWltYWdlUmVjdEV2CitfX1pON1dlYkNvcmUxM0hpdFRlc3RSZXN1bHQxM3Jl
Y3RGcm9tUG9pbnRFUktOU184SW50UG9pbnRFampqagogX19aTks3V2ViQ29yZTEzUmVzb3VyY2VF
cnJvcmN2UDdOU0Vycm9yRXYKIF9fWk5LN1dlYkNvcmUxNERvY3VtZW50TG9hZGVyMTByZXF1ZXN0
VVJMRXYKIF9fWk5LN1dlYkNvcmUxNERvY3VtZW50TG9hZGVyMTFmcmFtZUxvYWRlckV2CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKaW5kZXggYzNmZWFlNC4uNTcwMWMzNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMTA0OCw3ICsxMDQ4LDcg
QEAgS1VSTCBEb2N1bWVudDo6YmFzZVVSSSgpIGNvbnN0CiAvLyAqIG1ha2luZyBpdCByZWNlaXZl
IGEgcmVjdCBhcyBwYXJhbWV0ZXIsIGkuZS4gbm9kZXNGcm9tUmVjdCh4LCB5LCB3LCBoKTsKIC8v
ICogbWFraW5nIGl0IHJlY2VpdmUgdGhlIGV4cGFkaW5nIHNpemUgb2YgZWFjaCBkaXJlY3Rpb24g
c2VwYXJhdGVseSwKIC8vICAgaS5lLiBub2Rlc0Zyb21SZWN0KHgsIHksIHRvcFNpemUsIHJpZ2h0
U2l6ZSwgYm90dG9tU2l6ZSwgbGVmdFNpemUpOwotUGFzc1JlZlB0cjxOb2RlTGlzdD4gRG9jdW1l
bnQ6Om5vZGVzRnJvbVJlY3QoaW50IGNlbnRlclgsIGludCBjZW50ZXJZLCB1bnNpZ25lZCBoUGFk
ZGluZywgdW5zaWduZWQgdlBhZGRpbmcsIGJvb2wgaWdub3JlQ2xpcHBpbmcpIGNvbnN0CitQYXNz
UmVmUHRyPE5vZGVMaXN0PiBEb2N1bWVudDo6bm9kZXNGcm9tUmVjdChpbnQgY2VudGVyWCwgaW50
IGNlbnRlclksIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFkZGluZywgdW5z
aWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcsIGJvb2wgaWdub3JlQ2xp
cHBpbmcpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFNoYXJlIGNvZGUgYmV0d2VlbiB0aGlzLCBl
bGVtZW50RnJvbVBvaW50IGFuZCBjYXJldFJhbmdlRnJvbVBvaW50LgogICAgIGlmICghcmVuZGVy
ZXIoKSkKQEAgLTEwNjIsMjYgKzEwNjIsMjUgQEAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gRG9jdW1l
bnQ6Om5vZGVzRnJvbVJlY3QoaW50IGNlbnRlclgsIGludCBjZW50ZXJZLCB1bnNpZ25lZAogCiAg
ICAgZmxvYXQgem9vbUZhY3RvciA9IGZyYW1lLT5wYWdlWm9vbUZhY3RvcigpOwogICAgIEludFBv
aW50IHBvaW50ID0gcm91bmRlZEludFBvaW50KEZsb2F0UG9pbnQoY2VudGVyWCAqIHpvb21GYWN0
b3IgKyB2aWV3KCktPnNjcm9sbFgoKSwgY2VudGVyWSAqIHpvb21GYWN0b3IgKyB2aWV3KCktPnNj
cm9sbFkoKSkpOwotICAgIEludFNpemUgcGFkZGluZyhoUGFkZGluZywgdlBhZGRpbmcpOwogCiAg
ICAgaW50IHR5cGUgPSBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6
QWN0aXZlOwogCiAgICAgLy8gV2hlbiBpZ25vcmVDbGlwcGluZyBpcyBmYWxzZSwgdGhpcyBtZXRo
b2QgcmV0dXJucyBudWxsIGZvciBjb29yZGluYXRlcyBvdXRzaWRlIG9mIHRoZSB2aWV3cG9ydC4K
ICAgICBpZiAoaWdub3JlQ2xpcHBpbmcpCiAgICAgICAgIHR5cGUgfD0gSGl0VGVzdFJlcXVlc3Q6
Oklnbm9yZUNsaXBwaW5nOwotICAgIGVsc2UgaWYgKCFmcmFtZVZpZXctPnZpc2libGVDb250ZW50
UmVjdCgpLmludGVyc2VjdHMoSW50UmVjdChwb2ludCwgcGFkZGluZykpKQorICAgIGVsc2UgaWYg
KCFmcmFtZVZpZXctPnZpc2libGVDb250ZW50UmVjdCgpLmludGVyc2VjdHMoSGl0VGVzdFJlc3Vs
dDo6cmVjdEZyb21Qb2ludChwb2ludCwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21Q
YWRkaW5nLCBsZWZ0UGFkZGluZykpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIEhpdFRlc3RS
ZXF1ZXN0IHJlcXVlc3QodHlwZSk7CiAKICAgICAvLyBQYXNzaW5nIGEgemVybyBwYWRkaW5nIHdp
bGwgdHJpZ2dlciBhIHJlY3QgaGl0IHRlc3QsIGhvd2V2ZXIgZm9yIHRoZSBwdXJwb3NlcyBvZiBu
b2Rlc0Zyb21SZWN0LAogICAgIC8vIHdlIHNwZWNpYWwgaGFuZGxlIHRoaXMgY2FzZSBpbiBvcmRl
ciB0byByZXR1cm4gYSB2YWxpZCBOb2RlTGlzdC4KLSAgICBpZiAocGFkZGluZy5pc1plcm8oKSkg
eworICAgIGlmICghdG9wUGFkZGluZyAmJiAhcmlnaHRQYWRkaW5nICYmICFib3R0b21QYWRkaW5n
ICYmICFsZWZ0UGFkZGluZykgewogICAgICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdChwb2ludCk7
CiAgICAgICAgIHJldHVybiBoYW5kbGVaZXJvUGFkZGluZyhyZXF1ZXN0LCByZXN1bHQpOwogICAg
IH0KIAotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHBvaW50LCBwYWRkaW5nKTsKKyAgICBIaXRU
ZXN0UmVzdWx0IHJlc3VsdChwb2ludCwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21Q
YWRkaW5nLCBsZWZ0UGFkZGluZyk7CiAgICAgcmVuZGVyVmlldygpLT5sYXllcigpLT5oaXRUZXN0
KHJlcXVlc3QsIHJlc3VsdCk7CiAKICAgICByZXR1cm4gU3RhdGljSGFzaFNldE5vZGVMaXN0Ojph
ZG9wdChyZXN1bHQucmVjdEJhc2VkVGVzdFJlc3VsdCgpKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmggYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDFhZDdlY2QuLjAz
N2UyZTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaApAQCAtMzA4LDcgKzMwOCw3IEBAIHB1YmxpYzoKIAogICAgIC8qKgogICAg
ICAqIFJldHJpZXZlIGFsbCBub2RlcyB0aGF0IGludGVyc2VjdCBhIHJlY3QgaW4gdGhlIHdpbmRv
dydzIGRvY3VtZW50LCB1bnRpbCBpdCBpcyBmdWxseSBlbmNsb3NlZCBieQotICAgICAqIHRoZSBi
b3VuZGFyaWVzIG9mIG5vZGUuCisgICAgICogdGhlIGJvdW5kYXJpZXMgb2YgYSBub2RlLgogICAg
ICAqCiAgICAgICogQHBhcmFtIGNlbnRlclggeCByZWZlcmVuY2UgZm9yIHRoZSByZWN0YW5nbGUg
aW4gQ1NTIHBpeGVscwogICAgICAqIEBwYXJhbSBjZW50ZXJZIHkgcmVmZXJlbmNlIGZvciB0aGUg
cmVjdGFuZ2xlIGluIENTUyBwaXhlbHMKQEAgLTMxNyw3ICszMTcsMTMgQEAgcHVibGljOgogICAg
ICAqIEBwYXJhbSBpZ25vcmVDbGlwcGluZyB3aGV0aGVyIG9yIG5vdCB0byBpZ25vcmUgdGhlIHJv
b3Qgc2Nyb2xsIGZyYW1lIHdoZW4gcmV0cmlldmluZyB0aGUgZWxlbWVudC4KICAgICAgKiAgICAg
ICAgSWYgZmFsc2UsIHRoaXMgbWV0aG9kIHJldHVybnMgbnVsbCBmb3IgY29vcmRpbmF0ZXMgb3V0
c2lkZSBvZiB0aGUgdmlld3BvcnQuCiAgICAgICovCi0gICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4g
bm9kZXNGcm9tUmVjdChpbnQgY2VudGVyWCwgaW50IGNlbnRlclksIHVuc2lnbmVkIGhQYWRkaW5n
LCB1bnNpZ25lZCB2UGFkZGluZywgYm9vbCBpZ25vcmVDbGlwcGluZykgY29uc3Q7CisgICAgUGFz
c1JlZlB0cjxOb2RlTGlzdD4gbm9kZXNGcm9tUmVjdChpbnQgY2VudGVyWCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjZW50ZXJZLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgdG9wUGFkZGluZywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHJpZ2h0UGFkZGluZywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsZWZ0UGFk
ZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaWdub3Jl
Q2xpcHBpbmcpIGNvbnN0OwogICAgIEVsZW1lbnQqIGVsZW1lbnRGcm9tUG9pbnQoaW50IHgsIGlu
dCB5KSBjb25zdDsKICAgICBQYXNzUmVmUHRyPFJhbmdlPiBjYXJldFJhbmdlRnJvbVBvaW50KGlu
dCB4LCBpbnQgeSk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
IGIvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggODkzMmU1Zi4uZDM3MDlmYiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTg2Niw3ICs4NjYsNyBAQCB2b2lkIEV2ZW50SGFuZGxl
cjo6YWxsb3dESFRNTERyYWcoYm9vbCYgZmxhZ0RIVE1MLCBib29sJiBmbGFnVUEpIGNvbnN0CiAg
ICAgCiBIaXRUZXN0UmVzdWx0IEV2ZW50SGFuZGxlcjo6aGl0VGVzdFJlc3VsdEF0UG9pbnQoY29u
c3QgSW50UG9pbnQmIHBvaW50LCBib29sIGFsbG93U2hhZG93Q29udGVudCwgYm9vbCBpZ25vcmVD
bGlwcGluZywgSGl0VGVzdFNjcm9sbGJhcnMgdGVzdFNjcm9sbGJhcnMsIEhpdFRlc3RSZXF1ZXN0
OjpIaXRUZXN0UmVxdWVzdFR5cGUgaGl0VHlwZSwgY29uc3QgSW50U2l6ZSYgcGFkZGluZykKIHsK
LSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdChwb2ludCwgcGFkZGluZyk7CisgICAgSGl0VGVzdFJl
c3VsdCByZXN1bHQocG9pbnQsIHBhZGRpbmcuaGVpZ2h0KCksIHBhZGRpbmcud2lkdGgoKSwgcGFk
ZGluZy5oZWlnaHQoKSwgcGFkZGluZy53aWR0aCgpKTsKICAgICBpZiAoIW1fZnJhbWUtPmNvbnRl
bnRSZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIGlmIChpZ25vcmVDbGlw
cGluZykKQEAgLTg4Nyw3ICs4ODcsNyBAQCBIaXRUZXN0UmVzdWx0IEV2ZW50SGFuZGxlcjo6aGl0
VGVzdFJlc3VsdEF0UG9pbnQoY29uc3QgSW50UG9pbnQmIHBvaW50LCBib29sIGFsbAogICAgICAg
ICBGcmFtZVZpZXcqIHZpZXcgPSBzdGF0aWNfY2FzdDxGcmFtZVZpZXcqPih3aWRnZXQpOwogICAg
ICAgICBJbnRQb2ludCB3aWRnZXRQb2ludChyZXN1bHQubG9jYWxQb2ludCgpLngoKSArIHZpZXct
PnNjcm9sbFgoKSAtIHJlbmRlcldpZGdldC0+Ym9yZGVyTGVmdCgpIC0gcmVuZGVyV2lkZ2V0LT5w
YWRkaW5nTGVmdCgpLCAKICAgICAgICAgICAgIHJlc3VsdC5sb2NhbFBvaW50KCkueSgpICsgdmll
dy0+c2Nyb2xsWSgpIC0gcmVuZGVyV2lkZ2V0LT5ib3JkZXJUb3AoKSAtIHJlbmRlcldpZGdldC0+
cGFkZGluZ1RvcCgpKTsKLSAgICAgICAgSGl0VGVzdFJlc3VsdCB3aWRnZXRIaXRUZXN0UmVzdWx0
KHdpZGdldFBvaW50LCBwYWRkaW5nKTsKKyAgICAgICAgSGl0VGVzdFJlc3VsdCB3aWRnZXRIaXRU
ZXN0UmVzdWx0KHdpZGdldFBvaW50LCBwYWRkaW5nLmhlaWdodCgpLCBwYWRkaW5nLndpZHRoKCks
IHBhZGRpbmcuaGVpZ2h0KCksIHBhZGRpbmcud2lkdGgoKSk7CiAgICAgICAgIGZyYW1lLT5jb250
ZW50UmVuZGVyZXIoKS0+bGF5ZXIoKS0+aGl0VGVzdChIaXRUZXN0UmVxdWVzdChoaXRUeXBlKSwg
d2lkZ2V0SGl0VGVzdFJlc3VsdCk7CiAgICAgICAgIHJlc3VsdCA9IHdpZGdldEhpdFRlc3RSZXN1
bHQ7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwIGIv
V2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKaW5kZXggZjI4NjkyZS4uMzVhNmQy
MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKKysrIGIv
V2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKQEAgLTUxLDE3ICs1MSwyNyBAQCBI
aXRUZXN0UmVzdWx0OjpIaXRUZXN0UmVzdWx0KGNvbnN0IEludFBvaW50JiBwb2ludCkKICAgICA6
IG1fcG9pbnQocG9pbnQpCiAgICAgLCBtX2lzT3ZlcldpZGdldChmYWxzZSkKICAgICAsIG1faXNS
ZWN0QmFzZWQoZmFsc2UpCisgICAgLCBtX3RvcFBhZGRpbmcoMCkKKyAgICAsIG1fcmlnaHRQYWRk
aW5nKDApCisgICAgLCBtX2JvdHRvbVBhZGRpbmcoMCkKKyAgICAsIG1fbGVmdFBhZGRpbmcoMCkK
IHsKIH0KIAotSGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3VsdChjb25zdCBJbnRQb2ludCYgY2Vu
dGVyUG9pbnQsIGNvbnN0IEludFNpemUmIHBhZGRpbmcpCitIaXRUZXN0UmVzdWx0OjpIaXRUZXN0
UmVzdWx0KGNvbnN0IEludFBvaW50JiBjZW50ZXJQb2ludCwgdW5zaWduZWQgdG9wUGFkZGluZywg
dW5zaWduZWQgcmlnaHRQYWRkaW5nLCB1bnNpZ25lZCBib3R0b21QYWRkaW5nLCB1bnNpZ25lZCBs
ZWZ0UGFkZGluZykKICAgICA6IG1fcG9pbnQoY2VudGVyUG9pbnQpCiAgICAgLCBtX2lzT3Zlcldp
ZGdldChmYWxzZSkKKyAgICAsIG1fdG9wUGFkZGluZyh0b3BQYWRkaW5nKQorICAgICwgbV9yaWdo
dFBhZGRpbmcocmlnaHRQYWRkaW5nKQorICAgICwgbV9ib3R0b21QYWRkaW5nKGJvdHRvbVBhZGRp
bmcpCisgICAgLCBtX2xlZnRQYWRkaW5nKGxlZnRQYWRkaW5nKQogewotICAgIC8vIElmIGEgemVy
byBwYWRkaW5nIGlzIHBhc3NlZCBpbiBvciBlaXRoZXIgd2lkdGggb3IgaGVpZ2h0IGlzIG5lZ2F0
aXZlLCB0aGVuIGl0Ci0gICAgLy8gaXMgbm90IGEgdmFsaWQgcGFkZGluZyBhbmQgaGVuY2Ugbm90
IGEgcmVjdCBiYXNlZCBoaXQgdGVzdC4KLSAgICBtX2lzUmVjdEJhc2VkID0gIShwYWRkaW5nLmlz
WmVybygpIHx8IChwYWRkaW5nLndpZHRoKCkgPCAwIHx8IHBhZGRpbmcuaGVpZ2h0KCkgPCAwKSk7
Ci0gICAgbV9wYWRkaW5nID0gbV9pc1JlY3RCYXNlZCA/IHBhZGRpbmcgOiBJbnRTaXplKCk7Cisg
ICAgLy8gSWYgYWxsIHBhZGRpbmcgdmFsdWVzIHBhc3NlZCBpbiBhcmUgemVybyB0aGVuIGl0IGlz
IG5vdCBhIHJlY3QgYmFzZWQgaGl0IHRlc3QuCisgICAgbV9pc1JlY3RCYXNlZCA9IHRvcFBhZGRp
bmcgfHwgcmlnaHRQYWRkaW5nIHx8IGJvdHRvbVBhZGRpbmcgfHwgbGVmdFBhZGRpbmc7CisKKyAg
ICAvLyBNYWtlIHN1cmUgYWxsIHBhZGRpbmcgdmFsdWVzIGFyZSBjbGFtcGVkIHRvIHplcm8gaWYg
aXQgaXMgbm90IGEgcmVjdCBoaXQgdGVzdC4KKyAgICBpZiAoIW1faXNSZWN0QmFzZWQpCisgICAg
ICAgIG1fdG9wUGFkZGluZyA9IG1fcmlnaHRQYWRkaW5nID0gbV9ib3R0b21QYWRkaW5nID0gbV9s
ZWZ0UGFkZGluZyA9IDA7CiB9CiAKIEhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQoY29uc3Qg
SGl0VGVzdFJlc3VsdCYgb3RoZXIpCkBAIC03Niw5ICs4NiwxMyBAQCBIaXRUZXN0UmVzdWx0OjpI
aXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RSZXN1bHQmIG90aGVyKQogICAgIC8vIE9ubHkgY29w
eSB0aGUgcGFkZGluZyBhbmQgTGlzdEhhc2hTZXQgaW4gY2FzZSBvZiByZWN0IGhpdCB0ZXN0Lgog
ICAgIC8vIENvcHlpbmcgdGhlIGxhdGVyIGlzIHJhdGhlciBleHBlbnNpdmUuCiAgICAgaWYgKCht
X2lzUmVjdEJhc2VkID0gb3RoZXIuaXNSZWN0QmFzZWRUZXN0KCkpKSB7Ci0gICAgICAgIG1fcGFk
ZGluZyA9IG90aGVyLnBhZGRpbmcoKTsKKyAgICAgICAgbV90b3BQYWRkaW5nID0gb3RoZXIubV90
b3BQYWRkaW5nOworICAgICAgICBtX3JpZ2h0UGFkZGluZyA9IG90aGVyLm1fcmlnaHRQYWRkaW5n
OworICAgICAgICBtX2JvdHRvbVBhZGRpbmcgPSBvdGhlci5tX2JvdHRvbVBhZGRpbmc7CisgICAg
ICAgIG1fbGVmdFBhZGRpbmcgPSBvdGhlci5tX2xlZnRQYWRkaW5nOwogICAgICAgICBtX3JlY3RC
YXNlZFRlc3RSZXN1bHQgPSBvdGhlci5yZWN0QmFzZWRUZXN0UmVzdWx0KCk7Ci0gICAgfQorICAg
IH0gZWxzZQorICAgICAgICBtX3RvcFBhZGRpbmcgPSBtX3JpZ2h0UGFkZGluZyA9IG1fYm90dG9t
UGFkZGluZyA9IG1fbGVmdFBhZGRpbmcgPSAwOwogfQogCiBIaXRUZXN0UmVzdWx0Ojp+SGl0VGVz
dFJlc3VsdCgpCkBAIC05Nyw5ICsxMTEsMTMgQEAgSGl0VGVzdFJlc3VsdCYgSGl0VGVzdFJlc3Vs
dDo6b3BlcmF0b3I9KGNvbnN0IEhpdFRlc3RSZXN1bHQmIG90aGVyKQogICAgIC8vIE9ubHkgY29w
eSB0aGUgcGFkZGluZyBhbmQgTGlzdEhhc2hTZXQgaW4gY2FzZSBvZiByZWN0IGhpdCB0ZXN0Lgog
ICAgIC8vIENvcHlpbmcgdGhlIGxhdGVyIGlzIHJhdGhlciBleHBlbnNpdmUuCiAgICAgaWYgKCht
X2lzUmVjdEJhc2VkID0gb3RoZXIuaXNSZWN0QmFzZWRUZXN0KCkpKSB7Ci0gICAgICAgIG1fcGFk
ZGluZyA9IG90aGVyLnBhZGRpbmcoKTsKKyAgICAgICAgbV90b3BQYWRkaW5nID0gb3RoZXIubV90
b3BQYWRkaW5nOworICAgICAgICBtX3JpZ2h0UGFkZGluZyA9IG90aGVyLm1fcmlnaHRQYWRkaW5n
OworICAgICAgICBtX2JvdHRvbVBhZGRpbmcgPSBvdGhlci5tX2JvdHRvbVBhZGRpbmc7CisgICAg
ICAgIG1fbGVmdFBhZGRpbmcgPSBvdGhlci5tX2xlZnRQYWRkaW5nOwogICAgICAgICBtX3JlY3RC
YXNlZFRlc3RSZXN1bHQgPSBvdGhlci5yZWN0QmFzZWRUZXN0UmVzdWx0KCk7Ci0gICAgfQorICAg
IH0gZWxzZQorICAgICAgICBtX3RvcFBhZGRpbmcgPSBtX3JpZ2h0UGFkZGluZyA9IG1fYm90dG9t
UGFkZGluZyA9IG1fbGVmdFBhZGRpbmcgPSAwOwogICAgIHJldHVybiAqdGhpczsKIH0KIApAQCAt
NTM0LDQgKzU1MiwxNiBAQCB2b2lkIEhpdFRlc3RSZXN1bHQ6OmFwcGVuZChjb25zdCBIaXRUZXN0
UmVzdWx0JiBvdGhlcikKICAgICAgICAgbV9yZWN0QmFzZWRUZXN0UmVzdWx0LmFkZChpdC0+Z2V0
KCkpOwogfQogCitJbnRSZWN0IEhpdFRlc3RSZXN1bHQ6OnJlY3RGcm9tUG9pbnQoY29uc3QgSW50
UG9pbnQmIHBvaW50LCB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcs
IHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nKQoreworICAgIElu
dFBvaW50IGFjdHVhbFBvaW50KHBvaW50KTsKKyAgICBhY3R1YWxQb2ludCAtPSBJbnRTaXplKGxl
ZnRQYWRkaW5nLCB0b3BQYWRkaW5nKTsKKworICAgIEludFNpemUgYWN0dWFsUGFkZGluZyhsZWZ0
UGFkZGluZyArIHJpZ2h0UGFkZGluZywgdG9wUGFkZGluZyArIGJvdHRvbVBhZGRpbmcpOworICAg
IC8vIEFzIEludFJlY3QgaXMgbGVmdCBpbmNsdXNpdmUgYW5kIHJpZ2h0IGV4Y2x1c2l2ZSAoc2Vl
aW5nIEludFJlY3Q6OmNvbnRhaW5zKHgsIHkpKSwgYWRkaW5nICIxIi4KKyAgICBhY3R1YWxQYWRk
aW5nICs9IEludFNpemUoMSwgMSk7CisKKyAgICByZXR1cm4gSW50UmVjdChhY3R1YWxQb2ludCwg
YWN0dWFsUGFkZGluZyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL0hp
dFRlc3RSZXN1bHQuaAppbmRleCAzMWU4OGYxLi4xMzA0ZTIyIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVz
dFJlc3VsdC5oCkBAIC00NCw4ICs0NCw4IEBAIGNsYXNzIFNjcm9sbGJhcjsKIGNsYXNzIEhpdFRl
c3RSZXN1bHQgewogcHVibGljOgogICAgIEhpdFRlc3RSZXN1bHQoY29uc3QgSW50UG9pbnQmKTsK
LSAgICAvLyBQYXNzIGEgbm9uLW5lZ2F0aXZlIEludFNpemUgdmFsdWUgYXMgcGFkZGluZyB0byBw
ZXJmb3JtIGEgcmVjdC1iYXNlZCBoaXQgdGVzdC4KLSAgICBIaXRUZXN0UmVzdWx0KGNvbnN0IElu
dFBvaW50JiBjZW50ZXJQb2ludCwgY29uc3QgSW50U2l6ZSYgcGFkZGluZyk7CisgICAgLy8gUGFz
cyBub24tbmVnYXRpdmUgcGFkZGluZyB2YWx1ZXMgdG8gcGVyZm9ybSBhIHJlY3QtYmFzZWQgaGl0
IHRlc3QuCisgICAgSGl0VGVzdFJlc3VsdChjb25zdCBJbnRQb2ludCYgY2VudGVyUG9pbnQsIHVu
c2lnbmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFkZGluZywgdW5zaWduZWQgYm90dG9t
UGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcpOwogICAgIEhpdFRlc3RSZXN1bHQoY29uc3Qg
SGl0VGVzdFJlc3VsdCYpOwogICAgIH5IaXRUZXN0UmVzdWx0KCk7CiAgICAgSGl0VGVzdFJlc3Vs
dCYgb3BlcmF0b3I9KGNvbnN0IEhpdFRlc3RSZXN1bHQmKTsKQEAgLTEwMCw5ICsxMDAsMTIgQEAg
cHVibGljOgogICAgIGJvb2wgaXNSZWN0QmFzZWRUZXN0KCkgY29uc3QgeyByZXR1cm4gbV9pc1Jl
Y3RCYXNlZDsgfQogICAgIEludFJlY3QgcmVjdEZyb21Qb2ludChpbnQgeCwgaW50IHkpIGNvbnN0
OwogICAgIEludFJlY3QgcmVjdEZyb21Qb2ludChjb25zdCBJbnRQb2ludCYpIGNvbnN0OwotICAg
IEludFNpemUgcGFkZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fcGFkZGluZzsgfQotICAgIGludCBw
YWRkaW5nV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3BhZGRpbmcud2lkdGgoKTsgfQotICAgIGlu
dCBwYWRkaW5nSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9wYWRkaW5nLmhlaWdodCgpOyB9Cisg
ICAgc3RhdGljIEludFJlY3QgcmVjdEZyb21Qb2ludChjb25zdCBJbnRQb2ludCYsIHVuc2lnbmVk
IHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFkZGluZywgdW5zaWduZWQgYm90dG9tUGFkZGlu
ZywgdW5zaWduZWQgbGVmdFBhZGRpbmcpOworICAgIGludCB0b3BQYWRkaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV90b3BQYWRkaW5nOyB9CisgICAgaW50IHJpZ2h0UGFkZGluZygpIGNvbnN0IHsgcmV0
dXJuIG1fcmlnaHRQYWRkaW5nOyB9CisgICAgaW50IGJvdHRvbVBhZGRpbmcoKSBjb25zdCB7IHJl
dHVybiBtX2JvdHRvbVBhZGRpbmc7IH0KKyAgICBpbnQgbGVmdFBhZGRpbmcoKSBjb25zdCB7IHJl
dHVybiBtX2xlZnRQYWRkaW5nOyB9CisKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgaXQgaXMgcmVj
dC1iYXNlZCBoaXQgdGVzdCBhbmQgbmVlZHMgdG8gY29udGludWUgdW50aWwgdGhlIHJlY3QgaXMg
ZnVsbHkKICAgICAvLyBlbmNsb3NlZCBieSB0aGUgYm91bmRhcmllcyBvZiBhIG5vZGUuCiAgICAg
Ym9vbCBhZGROb2RlVG9SZWN0QmFzZWRUZXN0UmVzdWx0KE5vZGUqLCBpbnQgeCwgaW50IHksIGNv
bnN0IEludFJlY3QmIHJlY3QgPSBJbnRSZWN0KCkpOwpAQCAtMTI0LDM0ICsxMjcsMjYgQEAgcHJp
dmF0ZToKICAgICBSZWZQdHI8U2Nyb2xsYmFyPiBtX3Njcm9sbGJhcjsKICAgICBib29sIG1faXNP
dmVyV2lkZ2V0OyAvLyBSZXR1cm5zIHRydWUgaWYgd2UgYXJlIG92ZXIgYSB3aWRnZXQgKGFuZCBu
b3QgaW4gdGhlIGJvcmRlci9wYWRkaW5nIGFyZWEgb2YgYSBSZW5kZXJXaWRnZXQgZm9yIGV4YW1w
bGUpLgogICAgIGJvb2wgbV9pc1JlY3RCYXNlZDsKLSAgICBJbnRTaXplIG1fcGFkZGluZzsKKyAg
ICBpbnQgbV90b3BQYWRkaW5nOworICAgIGludCBtX3JpZ2h0UGFkZGluZzsKKyAgICBpbnQgbV9i
b3R0b21QYWRkaW5nOworICAgIGludCBtX2xlZnRQYWRkaW5nOwogICAgIExpc3RIYXNoU2V0PFJl
ZlB0cjxOb2RlPiA+IG1fcmVjdEJhc2VkVGVzdFJlc3VsdDsKIH07CiAKIGlubGluZSBJbnRSZWN0
IEhpdFRlc3RSZXN1bHQ6OnJlY3RGcm9tUG9pbnQoaW50IHgsIGludCB5KSBjb25zdAogewotICAg
IHJldHVybiByZWN0RnJvbVBvaW50KEludFBvaW50KHgsIHkpKTsKKyAgICByZXR1cm4gcmVjdEZy
b21Qb2ludChJbnRQb2ludCh4LCB5KSwgbV90b3BQYWRkaW5nLCBtX3JpZ2h0UGFkZGluZywgbV9i
b3R0b21QYWRkaW5nLCBtX2xlZnRQYWRkaW5nKTsKIH0KIAogLy8gRm9ybXVsYToKLS8vIHggPSBw
LngoKSAtIHBhZGRpbmcud2lkdGgoKQotLy8geSA9IHAueSgpIC0gcGFkZGluZy5oZWlnaHQoKQot
Ly8gd2lkdGggPSAyICogcGFkZGluZy53aWR0aCgpICsgMQotLy8gaGVpZ2h0ID0gMiAqIG1fcGFk
ZGluZy5oZWlnaHQoKSArIDEKKy8vIHggPSBwLngoKSAtIHJpZ2h0UGFkZGluZworLy8geSA9IHAu
eSgpIC0gdG9wUGFkZGluZworLy8gd2lkdGggPSBsZWZ0UGFkZGluZyArIHJpZ2h0UGFkZGluZyAr
IDEKKy8vIGhlaWdodCA9IHRvcFBhZGRpbmcgKyBib3R0b21QYWRkaW5nICsgMQogaW5saW5lIElu
dFJlY3QgSGl0VGVzdFJlc3VsdDo6cmVjdEZyb21Qb2ludChjb25zdCBJbnRQb2ludCYgcG9pbnQp
IGNvbnN0CiB7Ci0gICAgSW50UG9pbnQgcmVhbFBvaW50KHBvaW50KTsKLSAgICBJbnRTaXplIHJl
YWxQYWRkaW5nKG1fcGFkZGluZyk7Ci0KLSAgICAvLyBSZWFsIEludFBvaW50IGZvciB0aGUgcmVj
dC4KLSAgICByZWFsUGFkZGluZy5jbGFtcE5lZ2F0aXZlVG9aZXJvKCk7Ci0gICAgcmVhbFBvaW50
IC09IHJlYWxQYWRkaW5nOwotCi0gICAgLy8gUmVhbCBJbnRTaXplIGZvciB0aGUgcmVjdC4KLSAg
ICByZWFsUGFkZGluZy5zY2FsZSgyKTsKLSAgICByZWFsUGFkZGluZyArPSBJbnRTaXplKDEsIDEp
OwotCi0gICAgcmV0dXJuIEludFJlY3QocmVhbFBvaW50LCByZWFsUGFkZGluZyk7CisgICAgcmV0
dXJuIHJlY3RGcm9tUG9pbnQocG9pbnQsIG1fdG9wUGFkZGluZywgbV9yaWdodFBhZGRpbmcsIG1f
Ym90dG9tUGFkZGluZywgbV9sZWZ0UGFkZGluZyk7CiB9CiAKIFN0cmluZyBkaXNwbGF5U3RyaW5n
KGNvbnN0IFN0cmluZyYsIGNvbnN0IE5vZGUqKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckltYWdlLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcApp
bmRleCAyYmQ2MGEzLi5hMjIwY2EyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbWFnZS5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBAIC0z
NTksNyArMzU5LDcgQEAgSFRNTE1hcEVsZW1lbnQqIFJlbmRlckltYWdlOjppbWFnZU1hcCgpIGNv
bnN0CiAKIGJvb2wgUmVuZGVySW1hZ2U6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0
JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGludCB4LCBpbnQgeSwgaW50IHR4LCBp
bnQgdHksIEhpdFRlc3RBY3Rpb24gaGl0VGVzdEFjdGlvbikKIHsKLSAgICBIaXRUZXN0UmVzdWx0
IHRlbXBSZXN1bHQocmVzdWx0LnBvaW50KCksIHJlc3VsdC5wYWRkaW5nKCkpOworICAgIEhpdFRl
c3RSZXN1bHQgdGVtcFJlc3VsdChyZXN1bHQucG9pbnQoKSwgcmVzdWx0LnRvcFBhZGRpbmcoKSwg
cmVzdWx0LnJpZ2h0UGFkZGluZygpLCByZXN1bHQuYm90dG9tUGFkZGluZygpLCByZXN1bHQubGVm
dFBhZGRpbmcoKSk7CiAgICAgYm9vbCBpbnNpZGUgPSBSZW5kZXJSZXBsYWNlZDo6bm9kZUF0UG9p
bnQocmVxdWVzdCwgdGVtcFJlc3VsdCwgeCwgeSwgdHgsIHR5LCBoaXRUZXN0QWN0aW9uKTsKIAog
ICAgIGlmICh0ZW1wUmVzdWx0LmlubmVyTm9kZSgpICYmIG5vZGUoKSkgewpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwCmluZGV4IDE0ZTJhZjguLjFiNGIxZGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5jcHAKQEAgLTI5MDEsNyArMjkwMSw3IEBAIFJlbmRlckxheWVyKiBSZW5kZXJMYXllcjo6
aGl0VGVzdExheWVyKFJlbmRlckxheWVyKiByb290TGF5ZXIsIFJlbmRlckxheWVyKiBjb250CiAg
ICAgLy8gTmV4dCB3ZSB3YW50IHRvIHNlZSBpZiB0aGUgbW91c2UgcG9zIGlzIGluc2lkZSB0aGUg
Y2hpbGQgUmVuZGVyT2JqZWN0cyBvZiB0aGUgbGF5ZXIuCiAgICAgaWYgKGZnUmVjdC5pbnRlcnNl
Y3RzKGhpdFRlc3RBcmVhKSAmJiBpc1NlbGZQYWludGluZ0xheWVyKCkpIHsKICAgICAgICAgLy8g
SGl0IHRlc3Qgd2l0aCBhIHRlbXBvcmFyeSBIaXRUZXN0UmVzdWx0LCBiZWNhdXNlIHdlIG9ubHkg
d2FudCB0byBjb21taXQgdG8gJ3Jlc3VsdCcgaWYgd2Uga25vdyB3ZSdyZSBmcm9udG1vc3QuCi0g
ICAgICAgIEhpdFRlc3RSZXN1bHQgdGVtcFJlc3VsdChyZXN1bHQucG9pbnQoKSwgcmVzdWx0LnBh
ZGRpbmcoKSk7CisgICAgICAgIEhpdFRlc3RSZXN1bHQgdGVtcFJlc3VsdChyZXN1bHQucG9pbnQo
KSwgcmVzdWx0LnRvcFBhZGRpbmcoKSwgcmVzdWx0LnJpZ2h0UGFkZGluZygpLCByZXN1bHQuYm90
dG9tUGFkZGluZygpLCByZXN1bHQubGVmdFBhZGRpbmcoKSk7CiAgICAgICAgIGlmIChoaXRUZXN0
Q29udGVudHMocmVxdWVzdCwgdGVtcFJlc3VsdCwgbGF5ZXJCb3VuZHMsIGhpdFRlc3RQb2ludCwg
SGl0VGVzdERlc2NlbmRhbnRzKSAmJgogICAgICAgICAgICAgaXNIaXRDYW5kaWRhdGUodGhpcywg
ZmFsc2UsIHpPZmZzZXRGb3JDb250ZW50c1B0ciwgdW5mbGF0dGVuZWRUcmFuc2Zvcm1TdGF0ZS5n
ZXQoKSkpIHsKICAgICAgICAgICAgIGlmIChyZXN1bHQuaXNSZWN0QmFzZWRUZXN0KCkpCkBAIC0y
OTMwLDcgKzI5MzAsNyBAQCBSZW5kZXJMYXllciogUmVuZGVyTGF5ZXI6OmhpdFRlc3RMYXllcihS
ZW5kZXJMYXllciogcm9vdExheWVyLCBSZW5kZXJMYXllciogY29udAogICAgICAgICByZXR1cm4g
Y2FuZGlkYXRlTGF5ZXI7CiAKICAgICBpZiAoYmdSZWN0LmludGVyc2VjdHMoaGl0VGVzdEFyZWEp
ICYmIGlzU2VsZlBhaW50aW5nTGF5ZXIoKSkgewotICAgICAgICBIaXRUZXN0UmVzdWx0IHRlbXBS
ZXN1bHQocmVzdWx0LnBvaW50KCksIHJlc3VsdC5wYWRkaW5nKCkpOworICAgICAgICBIaXRUZXN0
UmVzdWx0IHRlbXBSZXN1bHQocmVzdWx0LnBvaW50KCksIHJlc3VsdC50b3BQYWRkaW5nKCksIHJl
c3VsdC5yaWdodFBhZGRpbmcoKSwgcmVzdWx0LmJvdHRvbVBhZGRpbmcoKSwgcmVzdWx0LmxlZnRQ
YWRkaW5nKCkpOwogICAgICAgICBpZiAoaGl0VGVzdENvbnRlbnRzKHJlcXVlc3QsIHRlbXBSZXN1
bHQsIGxheWVyQm91bmRzLCBoaXRUZXN0UG9pbnQsIEhpdFRlc3RTZWxmKSAmJgogICAgICAgICAg
ICAgaXNIaXRDYW5kaWRhdGUodGhpcywgZmFsc2UsIHpPZmZzZXRGb3JDb250ZW50c1B0ciwgdW5m
bGF0dGVuZWRUcmFuc2Zvcm1TdGF0ZS5nZXQoKSkpIHsKICAgICAgICAgICAgIGlmIChyZXN1bHQu
aXNSZWN0QmFzZWRUZXN0KCkpCkBAIC0yOTg3LDcgKzI5ODcsNyBAQCBSZW5kZXJMYXllciogUmVu
ZGVyTGF5ZXI6OmhpdFRlc3RMaXN0KFZlY3RvcjxSZW5kZXJMYXllcio+KiBsaXN0LCBSZW5kZXJM
YXllciogcgogICAgIGZvciAoaW50IGkgPSBsaXN0LT5zaXplKCkgLSAxOyBpID49IDA7IC0taSkg
ewogICAgICAgICBSZW5kZXJMYXllciogY2hpbGRMYXllciA9IGxpc3QtPmF0KGkpOwogICAgICAg
ICBSZW5kZXJMYXllciogaGl0TGF5ZXIgPSAwOwotICAgICAgICBIaXRUZXN0UmVzdWx0IHRlbXBS
ZXN1bHQocmVzdWx0LnBvaW50KCksIHJlc3VsdC5wYWRkaW5nKCkpOworICAgICAgICBIaXRUZXN0
UmVzdWx0IHRlbXBSZXN1bHQocmVzdWx0LnBvaW50KCksIHJlc3VsdC50b3BQYWRkaW5nKCksIHJl
c3VsdC5yaWdodFBhZGRpbmcoKSwgcmVzdWx0LmJvdHRvbVBhZGRpbmcoKSwgcmVzdWx0LmxlZnRQ
YWRkaW5nKCkpOwogICAgICAgICBpZiAoY2hpbGRMYXllci0+aXNQYWdpbmF0ZWQoKSkKICAgICAg
ICAgICAgIGhpdExheWVyID0gaGl0VGVzdFBhZ2luYXRlZENoaWxkTGF5ZXIoY2hpbGRMYXllciwg
cm9vdExheWVyLCByZXF1ZXN0LCB0ZW1wUmVzdWx0LCBoaXRUZXN0UmVjdCwgaGl0VGVzdFBvaW50
LCB0cmFuc2Zvcm1TdGF0ZSwgek9mZnNldEZvckRlc2NlbmRhbnRzKTsKICAgICAgICAgZWxzZQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJveExpc3QuY3BwIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJveExpc3QuY3BwCmluZGV4IDQ1ZTY2ZWIuLjc2MGQy
ZWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCb3hMaXN0LmNwcAor
KysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQm94TGlzdC5jcHAKQEAgLTI0NiwxNiAr
MjQ2LDE2IEBAIGJvb2wgUmVuZGVyTGluZUJveExpc3Q6OmhpdFRlc3QoUmVuZGVyQm94TW9kZWxP
YmplY3QqIHJlbmRlcmVyLCBjb25zdCBIaXRUZXN0UmVxCiAgICAgLy8gY29udGFpbiB0aGUgcG9p
bnQuICBUaGlzIGlzIGEgcXVpY2sgc2hvcnQtY2lyY3VpdCB0aGF0IHdlIGNhbiB0YWtlIHRvIGF2
b2lkIHdhbGtpbmcgYW55IGxpbmVzLgogICAgIC8vIEZJWE1FOiBUaGlzIGNoZWNrIGlzIGZsYXdl
ZCBpbiB0aGUgZm9sbG93aW5nIGV4dHJlbWVseSBvYnNjdXJlIHdheToKICAgICAvLyBpZiBzb21l
IGxpbmUgaW4gdGhlIG1pZGRsZSBoYXMgYSBodWdlIG92ZXJmbG93LCBpdCBtaWdodCBhY3R1YWxs
eSBleHRlbmQgYmVsb3cgdGhlIGxhc3QgbGluZS4KLSAgICBpZiAoeSAtIHJlc3VsdC5wYWRkaW5n
SGVpZ2h0KCkgPj0gdHkgKyBsYXN0TGluZUJveCgpLT5yb290KCktPmJvdHRvbVZpc2libGVPdmVy
ZmxvdygpCi0gICAgIHx8IHkgKyByZXN1bHQucGFkZGluZ0hlaWdodCgpIDwgdHkgKyBmaXJzdExp
bmVCb3goKS0+cm9vdCgpLT50b3BWaXNpYmxlT3ZlcmZsb3coKSkKKyAgICBpZiAoeSAtIHJlc3Vs
dC50b3BQYWRkaW5nKCkgPj0gdHkgKyBsYXN0TGluZUJveCgpLT5yb290KCktPmJvdHRvbVZpc2li
bGVPdmVyZmxvdygpCisgICAgIHx8IHkgKyByZXN1bHQuYm90dG9tUGFkZGluZygpIDwgdHkgKyBm
aXJzdExpbmVCb3goKS0+cm9vdCgpLT50b3BWaXNpYmxlT3ZlcmZsb3coKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgLy8gU2VlIGlmIG91ciByb290IGxpbmVzIGNvbnRhaW4gdGhlIHBv
aW50LiAgSWYgc28sIHRoZW4gd2UgaGl0IHRlc3QKICAgICAvLyB0aGVtIGZ1cnRoZXIuICBOb3Rl
IHRoYXQgYm94ZXMgY2FuIGVhc2lseSBvdmVybGFwLCBzbyB3ZSBjYW4ndCBtYWtlIGFueSBhc3N1
bXB0aW9ucwogICAgIC8vIGJhc2VkIG9mZiBwb3NpdGlvbnMgb2Ygb3VyIGZpcnN0IGxpbmUgYm94
IG9yIG91ciBsYXN0IGxpbmUgYm94LgogICAgIGZvciAoSW5saW5lRmxvd0JveCogY3VyciA9IGxh
c3RMaW5lQm94KCk7IGN1cnI7IGN1cnIgPSBjdXJyLT5wcmV2TGluZUJveCgpKSB7Ci0gICAgICAg
IGlmICh5ICsgcmVzdWx0LnBhZGRpbmdIZWlnaHQoKSA+PSB0eSArIGN1cnItPnJvb3QoKS0+dG9w
VmlzaWJsZU92ZXJmbG93KCkKLSAgICAgICAgICYmIHkgLSByZXN1bHQucGFkZGluZ0hlaWdodCgp
IDwgdHkgKyBjdXJyLT5yb290KCktPmJvdHRvbVZpc2libGVPdmVyZmxvdygpKSB7CisgICAgICAg
IGlmICh5ICsgcmVzdWx0LmJvdHRvbVBhZGRpbmcoKSA+PSB0eSArIGN1cnItPnJvb3QoKS0+dG9w
VmlzaWJsZU92ZXJmbG93KCkKKyAgICAgICAgICYmIHkgLSByZXN1bHQudG9wUGFkZGluZygpIDwg
dHkgKyBjdXJyLT5yb290KCktPmJvdHRvbVZpc2libGVPdmVyZmxvdygpKSB7CiAgICAgICAgICAg
ICBib29sIGluc2lkZSA9IGN1cnItPm5vZGVBdFBvaW50KHJlcXVlc3QsIHJlc3VsdCwgeCwgeSwg
dHgsIHR5KTsKICAgICAgICAgICAgIGlmIChpbnNpZGUpIHsKICAgICAgICAgICAgICAgICByZW5k
ZXJlci0+dXBkYXRlSGl0VGVzdFJlc3VsdChyZXN1bHQsIEludFBvaW50KHggLSB0eCwgeSAtIHR5
KSk7CmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDFhMDQzN2EuLjFmY2E4ZDEgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJWaWV3Lm1tCkBAIC02MDU3LDcgKzYwNTcsNyBAQCBzdGF0aWMgdm9pZCBnbGliQ29udGV4dEl0
ZXJhdGlvbkNhbGxiYWNrKENGUnVuTG9vcE9ic2VydmVyUmVmLCBDRlJ1bkxvb3BBY3Rpdml0eQog
CiBAaW1wbGVtZW50YXRpb24gV2ViVmlldyAoV2ViVmlld1ByaXZhdGVOb2Rlc0Zyb21SZWN0KQog
Ci0tIChKU1ZhbHVlUmVmKV9ub2Rlc0Zyb21SZWN0OihKU0NvbnRleHRSZWYpY29udGV4dCBmb3JE
b2N1bWVudDooSlNWYWx1ZVJlZil2YWx1ZSB4OihpbnQpeCAgeTooaW50KXkgaFBhZGRpbmc6KHVu
c2lnbmVkKWhQYWRkaW5nIHZQYWRkaW5nOih1bnNpZ25lZCl2UGFkZGluZyBpZ25vcmVDbGlwcGlu
ZzooQk9PTClpZ25vcmVDbGlwcGluZworLSAoSlNWYWx1ZVJlZilfbm9kZXNGcm9tUmVjdDooSlND
b250ZXh0UmVmKWNvbnRleHQgZm9yRG9jdW1lbnQ6KEpTVmFsdWVSZWYpdmFsdWUgeDooaW50KXgg
IHk6KGludCl5IHRvcDoodW5zaWduZWQpdG9wIHJpZ2h0Oih1bnNpZ25lZClyaWdodCBib3R0b206
KHVuc2lnbmVkKWJvdHRvbSBsZWZ0Oih1bnNpZ25lZClsZWZ0IGlnbm9yZUNsaXBwaW5nOihCT09M
KWlnbm9yZUNsaXBwaW5nCiB7CiAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5
KTsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGNvbnRleHQpOwpAQCAtNjA2OCw3ICs2MDY4
LDcgQEAgc3RhdGljIHZvaWQgZ2xpYkNvbnRleHRJdGVyYXRpb25DYWxsYmFjayhDRlJ1bkxvb3BP
YnNlcnZlclJlZiwgQ0ZSdW5Mb29wQWN0aXZpdHkKICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtl
VW5kZWZpbmVkKGNvbnRleHQpOwogICAgIEpTRG9jdW1lbnQqIGpzRG9jdW1lbnQgPSBzdGF0aWNf
Y2FzdDxKU0RvY3VtZW50Kj4oYXNPYmplY3QoanNWYWx1ZSkpOwogICAgIERvY3VtZW50KiBkb2N1
bWVudCA9IGpzRG9jdW1lbnQtPmltcGwoKTsKLSAgICBSZWZQdHI8Tm9kZUxpc3Q+IG5vZGVzID0g
ZG9jdW1lbnQtPm5vZGVzRnJvbVJlY3QoeCwgeSwgaFBhZGRpbmcsIHZQYWRkaW5nLCBpZ25vcmVD
bGlwcGluZyk7CisgICAgUmVmUHRyPE5vZGVMaXN0PiBub2RlcyA9IGRvY3VtZW50LT5ub2Rlc0Zy
b21SZWN0KHgsIHksIHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCwgaWdub3JlQ2xpcHBpbmcpOwog
ICAgIHJldHVybiB0b1JlZihleGVjLCB0b0pTKGV4ZWMsIGpzRG9jdW1lbnQtPmdsb2JhbE9iamVj
dCgpLCBub2Rlcy5nZXQoKSkpOwogfQogCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlld1ByaXZhdGUuaCBiL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCmlu
ZGV4IDg3M2U4ZTEuLjc0OWVlYjMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvV2ViVmlldy9XZWJW
aWV3UHJpdmF0ZS5oCisrKyBiL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCkBA
IC02MzEsNyArNjMxLDcgQEAgQ291bGQgYmUgd29ydGggYWRkaW5nIHRvIHRoZSBBUEkuCiBAZW5k
CiAKIEBpbnRlcmZhY2UgV2ViVmlldyAoV2ViVmlld1ByaXZhdGVOb2Rlc0Zyb21SZWN0KQotLSAo
SlNWYWx1ZVJlZilfbm9kZXNGcm9tUmVjdDooSlNDb250ZXh0UmVmKWNvbnRleHQgZm9yRG9jdW1l
bnQ6KEpTVmFsdWVSZWYpdmFsdWUgeDooaW50KXggIHk6KGludCl5IGhQYWRkaW5nOih1bnNpZ25l
ZCloUGFkZGluZyB2UGFkZGluZzoodW5zaWduZWQpdlBhZGRpbmcgaWdub3JlQ2xpcHBpbmc6KEJP
T0wpaWdub3JlQ2xpcHBpbmc7CistIChKU1ZhbHVlUmVmKV9ub2Rlc0Zyb21SZWN0OihKU0NvbnRl
eHRSZWYpY29udGV4dCBmb3JEb2N1bWVudDooSlNWYWx1ZVJlZil2YWx1ZSB4OihpbnQpeCAgeToo
aW50KXkgdG9wOih1bnNpZ25lZCl0b3AgcmlnaHQ6KHVuc2lnbmVkKXJpZ2h0IGJvdHRvbToodW5z
aWduZWQpYm90dG9tIGxlZnQ6KHVuc2lnbmVkKWxlZnQgaWdub3JlQ2xpcHBpbmc6KEJPT0wpaWdu
b3JlQ2xpcHBpbmc7CiBAZW5kCiAKIEBpbnRlcmZhY2UgTlNPYmplY3QgKFdlYkZyYW1lTG9hZERl
bGVnYXRlUHJpdmF0ZSkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xh
eW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91
dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCA3MzBmNWM3Li5lZTQ0MzI1IDEwMDY0NAotLS0gYS9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC01
MTUsMTggKzUxNSwyMCBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBjb21wdXRlZFN0eWxlSW5jbHVkaW5n
VmlzaXRlZEluZm9DYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dAogCiBzdGF0aWMgSlNWYWx1
ZVJlZiBub2Rlc0Zyb21SZWN0Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0
UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3Vu
dCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQog
ewotICAgIGlmIChhcmd1bWVudENvdW50ICE9IDYpCisgICAgaWYgKGFyZ3VtZW50Q291bnQgIT0g
OCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogCiAgICAg
aW50IHggPSBKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzFdLCBOVUxMKTsKICAg
ICBpbnQgeSA9IEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbMl0sIE5VTEwpOwot
ICAgIGludCBoUGFkZGluZyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU1ZhbHVlVG9OdW1iZXIo
Y29udGV4dCwgYXJndW1lbnRzWzNdLCBOVUxMKSk7Ci0gICAgaW50IHZQYWRkaW5nID0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbNF0sIE5V
TEwpKTsKLSAgICBib29sIGlnbm9yZUNsaXBwaW5nID0gSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0
LCBhcmd1bWVudHNbNV0pOworICAgIGludCB0b3AgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNW
YWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1szXSwgTlVMTCkpOworICAgIGludCByaWdo
dCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1l
bnRzWzRdLCBOVUxMKSk7CisgICAgaW50IGJvdHRvbSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihK
U1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzVdLCBOVUxMKSk7CisgICAgaW50IGxl
ZnQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3Vt
ZW50c1s2XSwgTlVMTCkpOworICAgIGJvb2wgaWdub3JlQ2xpcHBpbmcgPSBKU1ZhbHVlVG9Cb29s
ZWFuKGNvbnRleHQsIGFyZ3VtZW50c1s3XSk7CiAKICAgICAvLyBIYXMgbWFjIGltcGxlbWVudGF0
aW9uLgogICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8
TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwot
ICAgIHJldHVybiBjb250cm9sbGVyLT5ub2Rlc0Zyb21SZWN0KGNvbnRleHQsIGFyZ3VtZW50c1sw
XSwgeCwgeSwgaFBhZGRpbmcsIHZQYWRkaW5nLCBpZ25vcmVDbGlwcGluZyk7CisgICAgcmV0dXJu
IGNvbnRyb2xsZXItPm5vZGVzRnJvbVJlY3QoY29udGV4dCwgYXJndW1lbnRzWzBdLCB4LCB5LCB0
b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQsIGlnbm9yZUNsaXBwaW5nKTsKIH0KIAogc3RhdGljIEpT
VmFsdWVSZWYgbGF5ZXJUcmVlQXNUZXh0Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
T2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1l
bnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENv
bnRyb2xsZXIuaCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9s
bGVyLmgKaW5kZXggNGQyMDMwMS4uNzU1YTJiMiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAorKysgYi9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCkBAIC02MCw3ICs2MCw3IEBAIHB1Ymxp
YzoKICAgICBib29sIGlzQ29tbWFuZEVuYWJsZWQoSlNTdHJpbmdSZWYgbmFtZSk7CiAgICAgdm9p
ZCBrZWVwV2ViSGlzdG9yeSgpOwogICAgIEpTVmFsdWVSZWYgY29tcHV0ZWRTdHlsZUluY2x1ZGlu
Z1Zpc2l0ZWRJbmZvKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZik7Ci0gICAgSlNWYWx1ZVJlZiBu
b2Rlc0Zyb21SZWN0KEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZiwgaW50IHgsIGludCB5LCB1bnNp
Z25lZCBoUGFkZGluZywgdW5zaWduZWQgdlBhZGRpbmcsIGJvb2wgaWdub3JlQ2xpcHBpbmcpOwor
ICAgIEpTVmFsdWVSZWYgbm9kZXNGcm9tUmVjdChKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYsIGlu
dCB4LCBpbnQgeSwgdW5zaWduZWQgdG9wLCB1bnNpZ25lZCByaWdodCwgdW5zaWduZWQgYm90dG9t
LCB1bnNpZ25lZCBsZWZ0LCBib29sIGlnbm9yZUNsaXBwaW5nKTsKICAgICB2b2lkIG5vdGlmeURv
bmUoKTsKICAgICBpbnQgbnVtYmVyT2ZQYWdlcyhmbG9hdCBwYWdlV2lkdGhJblBpeGVscywgZmxv
YXQgcGFnZUhlaWdodEluUGl4ZWxzKTsKICAgICB2b2lkIG92ZXJyaWRlUHJlZmVyZW5jZShKU1N0
cmluZ1JlZiBrZXksIEpTU3RyaW5nUmVmIHZhbHVlKTsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbSBiL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQppbmRleCBk
NDQyM2QzLi5kMmE2Zjc5IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCkBAIC0xOTgsOSArMTk4LDkgQEAg
SlNWYWx1ZVJlZiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zp
c2l0ZWRJbmZvKEpTQ29udGV4dFJlZgogICAgIHJldHVybiBbW21haW5GcmFtZSB3ZWJWaWV3XSBf
Y29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvOmNvbnRleHQgZm9yRWxlbWVudDp2YWx1
ZV07CiB9CiAKLUpTVmFsdWVSZWYgTGF5b3V0VGVzdENvbnRyb2xsZXI6Om5vZGVzRnJvbVJlY3Qo
SlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgdmFsdWUsIGludCB4LCBpbnQgeSwgdW5z
aWduZWQgaFBhZGRpbmcsIHVuc2lnbmVkIHZQYWRkaW5nLCBib29sIGlnbm9yZUNsaXBwaW5nKQor
SlNWYWx1ZVJlZiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bm9kZXNGcm9tUmVjdChKU0NvbnRleHRS
ZWYgY29udGV4dCwgSlNWYWx1ZVJlZiB2YWx1ZSwgaW50IHgsIGludCB5LCB1bnNpZ25lZCB0b3As
IHVuc2lnbmVkIHJpZ2h0LCB1bnNpZ25lZCBib3R0b20sIHVuc2lnbmVkIGxlZnQsIGJvb2wgaWdu
b3JlQ2xpcHBpbmcpCiB7Ci0gICAgcmV0dXJuIFtbbWFpbkZyYW1lIHdlYlZpZXddIF9ub2Rlc0Zy
b21SZWN0OmNvbnRleHQgZm9yRG9jdW1lbnQ6dmFsdWUgeDp4IHk6eSBoUGFkZGluZzpoUGFkZGlu
ZyB2UGFkZGluZzp2UGFkZGluZyBpZ25vcmVDbGlwcGluZzppZ25vcmVDbGlwcGluZ107CisgICAg
cmV0dXJuIFtbbWFpbkZyYW1lIHdlYlZpZXddIF9ub2Rlc0Zyb21SZWN0OmNvbnRleHQgZm9yRG9j
dW1lbnQ6dmFsdWUgeDp4IHk6eSB0b3A6dG9wIHJpZ2h0OnJpZ2h0IGJvdHRvbTpib3R0b20gbGVm
dDpsZWZ0IGlnbm9yZUNsaXBwaW5nOmlnbm9yZUNsaXBwaW5nXTsKIH0KIAogSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IExheW91dFRlc3RDb250cm9sbGVyOjpsYXllclRyZWVBc1RleHQoKSBjb25z
dAotLSAKMS42LjQuMgoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68873</attachid>
            <date>2010-09-26 20:45:02 -0700</date>
            <delta_ts>2010-09-27 19:31:51 -0700</delta_ts>
            <desc>(committed r68475, r=kenneth) patch v3.2 - actual fixed patch.</desc>
            <filename>0001-Make-Document-nodesFromRect-more-flexible.patch</filename>
            <type>text/plain</type>
            <size>44515</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSBkYjliOWY0ZDk4ZDgxNGMwYzg5YzFkMDQ1MWYyYWFiYWRmMzBlOGI0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4K
RGF0ZTogVGh1LCAyMyBTZXAgMjAxMCAyMzo1MDoyMyAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIE1h
a2UgRG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QgbW9yZSBmbGV4aWJsZQogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ2MzM2CgpQYXRjaCBieSBBbnRvbmlvIEdvbWVzIDxh
Z29tZXNAcmltLmNvbT4gb24gMjAxMC0wOS0yMwpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
ClRoZSBwYXRjaCBjaGFuZ2VzIHRoZSBBUEkgZm9yIHRoZSBEb2N1bWVudDo6bm9kZXNGcm9tUmVj
dCgpIG1ldGhvZCBhcyBmb2xsb3dzOgoKZnJvbQotIFJlZlB0ZjxOb2RlTGlzdD4gbm9kZXNGcm9t
UmVjdChpbnQgeCwgaW50IHksIHVuc2lnbmVkIGhvcml6b250YWxQYWRkaW5nLCB1bnNpZ25lZCB2
ZXJ0aWNhbFBhZGRpbmcsIGJvb2wgaWdub3JlQ2xpcHBpbmcpCgp0bwotIFJlZlB0ZjxOb2RlTGlz
dD4gbm9kZXNGcm9tUmVjdChpbnQgeCwgaW50IHksIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2ln
bmVkIHJpZ2h0UGFkZGluZywgdW5zaWduZWQgYm90dG9tUGFkZGluZywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbGVmdFBhZGRpbmcsIGJvb2wgaWdub3JlQ2xpcHBp
bmcpCgpQcmV2aW91c2x5IHRoZSBtZXRob2Qgd2FzIHJlY2VpdmluZyBhcyBwYXJhbWV0ZXIgaG9y
aXpvbnRhbCBhbmQgdmVydGljYWwgcGFkZGluZyB2YWx1ZXMuCkluIHByYWN0aWNlLCB0aGUgaG9y
aXpvbnRhbCBwYWRkaW5nIHdhcyBiZWluZyB1c2VkIHRvIGV4cGFuZCBhIGdpdmVuIGNlbnRlciBw
b2ludCBpbiBib3RoCnJpZ2h0IGFuZCBsZWZ0IGRpcmVjdGlvbnMsIHdoaWxlIHZlcnRpY2FsIHBh
ZGRpbmcgd2FzIGV4cGFuZGluZyBpdCB0byB0aGUgdG9wIGFuZCBib3R0b20gZGlyZWN0aW9ucy4K
CkFsdGhvdWdoIHRoaXMgZGVzaWduIG1ha2VzIGl0IHBvc3NpYmxlIHRvIGltcHJvdmUgdGhlIHRv
dWNoIGV4cGVyaWVuY2Ugb24gbW9iaWxlIGRldmljZXMKKERvY3VtZW50Ojpub2Rlc0Zyb21SZWN0
IGV4cG9zZXMgdGhlIHJlY3QgYmFzZWQgaGl0IHRlc3Rpbmcgc3lzdGVtKSwgZW1waXJpY2FsIGV4
cGVyaW1lbnRzCnNob3dlZCB0aGF0LCBzcGVjaWFsbHkgaW4gY2FwYWNpdGl2ZSB0b3VjaCBzY3Jl
ZW5zLCB1c2VycyB0ZW5kIHRvIHRhcCBiZWxvdyBlbGVtZW50cy4gU28KZm9yIGV2ZW4gbW9yZSBh
Y2N1cmF0ZSByZXN1bHRzICh3aGljaCBtZWFucyBoZXJlIHRoZSBwb3NzaWJpbGl0eSBvZiBwbGVh
c2FudCB0YXBwaW5nIGV4cGVyaWVuY2UpLAppdCBtYWtlcyBzZW5zZSB0byB1c2UgYSByZWdpb24g
dGhhdCBpcyBvZmZzZXQgbW9yZSBhYm92ZSB0aGUgdG91Y2ggcG9pbnQsIGZhdm9yaW5nIGVsZW1l
bnRzCmFib3ZlIHRoZSB0b3VjaCBwb2ludC4KClRoZSBwYXRjaCBiYXNpY2FsbHkgaW1wbGVtZW50
cyB0aGF0LCBpbmNyZWFzaW5nIHRoZSBBUEkgZmxleGlibGUgYW5kIHBvd2VyIGJ5IG1ha2luZyBp
dCBwb3NzaWJsZQp0byBzcGVjaWZ5IGRpZmZlcmVudCBwYWRkaW5nIHZhbHVlcyBmb3IgZWFjaCBk
aXJlY3Rpb24gaW4gYSBnaXZlbiBvcmllbnRhdGlvbi4KCkNoYW5nZXMgd2VyZSBtYWRlIGFjY29y
ZGluZ2x5IHRvIHRoZSBIaXRUZXN0UmVzdWx0LCBSZW5kZXJMYXllciwgUmVuZGVySW1hZ2UgYW5k
IFJlbmRlckxpbmVCb3hMaXN0CmNsYXNzZXMuCgpXZWJDb3JlOgoKKiBXZWJDb3JlLmV4cC5pbjoK
KiBkb20vRG9jdW1lbnQuY3BwOgooV2ViQ29yZTo6RG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QpOgoq
IGRvbS9Eb2N1bWVudC5oOgoqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6aGl0VGVzdFJlc3VsdEF0UG9pbnQpOiBGb3Igc2ltcGxpY2l0eSwgSSBkaWQgbm90
IGNoYW5nZSB0aGUgc2lnbmF0dXJlCiAgICBidXQgdGhlIHdheSB0aGUgcGFkZGluZyB2YWx1ZSBw
YXNzZWQgaW4gYXMgcGFyYW1ldGVyIGlzIGJlaW5nIHVzZWQgdG8gY29uc3RydWN0IGEgSGl0VGVz
dFJlc3VsdC4KKiByZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHA6IENoYW5nZWQgdGhlIHJlY3Qt
YmFzZWQgYml0cyBmcm9tIHVzaW5nIEludFNpemUgKHBhZGRpbmcpIHRvIHNlcGFyYXRlZCBwYWRk
aW5ncwogICAgZm9yIGVhY2ggZGlyZWN0aW9uLgooV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6SGl0
VGVzdFJlc3VsdCk6IERpdHRvLgooV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6b3BlcmF0b3I9KTog
RGl0dG8uCihXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpyZWN0RnJvbVBvaW50KTogRGl0dG9uLgoq
IHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0Lmg6CihXZWJDb3JlOjpIaXRUZXN0UmVzdWx0Ojp0b3BQ
YWRkaW5nKTogZ2V0dGVyIGZvciB0aGUgdG9wIHBhZGRpbmcuCihXZWJDb3JlOjpIaXRUZXN0UmVz
dWx0OjpyaWdodFBhZGRpbmcpOiBnZXR0ZXIgZm9yIHRoZSByaWdodCBwYWRkaW5nLgooV2ViQ29y
ZTo6SGl0VGVzdFJlc3VsdDo6Ym90dG9tUGFkZGluZyk6IGdldHRlciBmb3IgdGhlIGJvdHRvbSBw
YWRkaW5nLgooV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6bGVmdFBhZGRpbmcpOiBnZXR0ZXIgZm9y
IHRoZSBsZWZ0IHBhZGRpbmcuCihXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpyZWN0RnJvbVBvaW50
KTogQWRkZWQgYSBzdGF0aWMgbWV0aG9kIHRoYXQgZ2l2ZW4gYSBjZW50ZXIgcG9pbnQgYW5kIHBh
ZGRpbmcgdmFsdWVzIGZvcgogICAgZWFjaCBkaXJlY3Rpb24sIHJldHVybnMgdGhlIHJlY3QgdGhh
dCBpcyBnb2luZyB0byBiZSB1c2VkIGluIFdlYkNvcmUncyBoaXQgdGVzdGluZyBwcm9jZXNzaW5n
LgoqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6IENoYW5nZWQgdGhlIHJlY3QtYmFzZWQgYml0
cyBmcm9tIHVzaW5nIEludFNpemUgKHBhZGRpbmcpIHRvIHNlcGFyYXRlZCBwYWRkaW5ncyBmb3Ig
ZWFjaCBkaXJlY3Rpb24uCihXZWJDb3JlOjpSZW5kZXJJbWFnZTo6bm9kZUF0UG9pbnQpOiBEaXR0
by4KKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOiBEaXR0by4KKFdlYkNvcmU6OlJlbmRlckxh
eWVyOjpoaXRUZXN0TGF5ZXIpOiBEaXR0by4KKFdlYkNvcmU6OlJlbmRlckxheWVyOjpoaXRUZXN0
TGlzdCk6IERpdHRvLgoqIHJlbmRlcmluZy9SZW5kZXJMaW5lQm94TGlzdC5jcHA6IERpdHRvLgoo
V2ViQ29yZTo6UmVuZGVyTGluZUJveExpc3Q6OmhpdFRlc3QpOiBEaXR0by4KCkxheW91dFRlc3Rz
OgoKKiBmYXN0L2RvbS9ub2Rlc0Zyb21SZWN0LWJhc2ljLWV4cGVjdGVkLnR4dDoKKiBmYXN0L2Rv
bS9ub2Rlc0Zyb21SZWN0LWJhc2ljLmh0bWw6CiogZmFzdC9kb20vcmVzb3VyY2VzL25vZGVzRnJv
bVJlY3QuanM6CihjaGVjayk6Ci0tLQogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCAgIDE0ICsrKysKIC4uLi9mYXN0L2RvbS9ub2Rlc0Zyb21SZWN0
LWJhc2ljLWV4cGVjdGVkLnR4dCAgICAgIHwgICA0NCArKysrKysrLS0tLS0tLQogTGF5b3V0VGVz
dHMvZmFzdC9kb20vbm9kZXNGcm9tUmVjdC1iYXNpYy5odG1sICAgICAgfCAgIDQ0ICsrKysrKyst
LS0tLS0tCiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMvbm9kZXNGcm9tUmVjdC5qcyAg
ICB8ICAgMTYgKysrLS0KIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgICA2NCArKysrKysrKysrKysrKysrKysrKwogV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAzICstCiBXZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDkgKy0tCiBXZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTAgKysrLQog
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgICAgICAgICAgICAgICAgICAgICAgfCAgICA0
ICstCiBXZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcCAgICAgICAgICAgICAgICB8
ICAgNDggKysrKysrKysrKysrLS0tCiBXZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0Lmgg
ICAgICAgICAgICAgICAgICB8ICAgNDEgKysrKysrLS0tLS0tLQogV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW1hZ2UuY3BwICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5jcHAgICAgICAgICAgICAgICAgICB8ICAgIDYgKy0KIFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxpbmVCb3hMaXN0LmNwcCAgICAgICAgICAgIHwgICAgOCArLQogV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gICAgICAgICAgICAgICAgICAgICAgfCAgICA0ICst
CiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaCAgICAgICAgICAgICAgICB8ICAg
IDIgKy0KIC4uLi9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgICAgICAg
IHwgICAxMiArKy0tCiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJv
bGxlci5oICB8ICAgIDIgKy0KIC4uLi9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRy
b2xsZXJHdGsuY3BwIHwgICAgMiArLQogLi4uL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0
Q29udHJvbGxlck1hYy5tbSAgfCAgICA0ICstCiAuLi4vRHVtcFJlbmRlclRyZWUvd2luL0xheW91
dFRlc3RDb250cm9sbGVyV2luLmNwcCB8ICAgIDIgKy0KIC4uLi9EdW1wUmVuZGVyVHJlZS93eC9M
YXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcCAgIHwgICAgMiArLQogMjIgZmlsZXMgY2hhbmdlZCwg
MjI5IGluc2VydGlvbnMoKyksIDExNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZDc0MDk3ZC4uYzc5
MzEwMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEwLTA5LTIzICBBbnRvbmlvIEdvbWVzICA8
YWdvbWVzQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTWFrZSBEb2N1bWVudDo6bm9kZXNGcm9tUmVjdCBtb3JlIGZsZXhpYmxlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjMzNgorCisgICAg
ICAgIFRlc3RzIGJhc2ljYWxseSBhZGp1c3RlZCB0byB0aGUgbmV3IEFQSS4KKworICAgICAgICAq
IGZhc3QvZG9tL25vZGVzRnJvbVJlY3QtYmFzaWMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZh
c3QvZG9tL25vZGVzRnJvbVJlY3QtYmFzaWMuaHRtbDoKKyAgICAgICAgKiBmYXN0L2RvbS9yZXNv
dXJjZXMvbm9kZXNGcm9tUmVjdC5qczoKKyAgICAgICAgKGNoZWNrKToKKwogMjAxMC0wOS0yNiAg
QW50b25pbyBHb21lcyAgPGFnb21lc0ByaW0uY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtl
bm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9k
b20vbm9kZXNGcm9tUmVjdC1iYXNpYy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9ub2Rlc0Zyb21SZWN0LWJhc2ljLWV4cGVjdGVkLnR4dAppbmRleCA4OWYxZWEzLi40NTkxNWZl
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2Rlc0Zyb21SZWN0LWJhc2ljLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2Rlc0Zyb21SZWN0LWJhc2lj
LWV4cGVjdGVkLnR4dApAQCAtMSwyNiArMSwyNiBAQAogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCi1QQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZv
ciByZWN0IFs1Myw3MV0sIFswLDBdCi1QQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciBy
ZWN0IFs1Myw3MV0sIFsxMCwwXQotUEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVj
dCBbNTMsNzFdLCBbMCwxMF0KLVBBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3Qg
WzUzLDcxXSwgWzEwLDEwXQotUEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdCBb
MTUyLDEwNV0sIFswLDEwXQotUEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdCBb
MTUyLDEwNV0sIFsxMCwwXQotUEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdCBb
MTUyLDEwNV0sIFsxMCwxMF0KLVBBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3Qg
WzE1MywxOTNdLCBbMCwwXQotUEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdCBb
MTUzLDE5M10sIFsyMCwwXQotUEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdCBb
MTUzLDE5M10sIFswLDIwXQotUEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdCBb
MTQ0LDE4M10sIFswLDBdCi1QQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0IFsx
NDQsMTgzXSwgWzAsMV0KLVBBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QgWzE0
NCwxODNdLCBbMSwwXQotUEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdCBbMTQ0
LDE4M10sIFsxLDFdCi1QQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0IFs3Nywy
NDBdLCBbMCwwXQotUEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdCBbNzcsMjQw
XSwgWzEwLDBdCi1QQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0IFs3NywyNDBd
LCBbMCwxMF0KLVBBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QgWzc3LDI0MF0s
IFsxMCwxMF0KLVBBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QgWzM5LDIxMl0s
IFswLDBdCi1QQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0IFszOSwyMTJdLCBb
MCwxMF0KLVBBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QgWzM5LDIxMl0sIFsx
MCwwXQotUEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdCBbMzksMjEyXSwgWzEw
LDEwXQorUEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdCBbNTMsNzFdLCBbMCww
LDAsMF0KK1BBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QgWzUzLDcxXSwgWzAs
MTAsMCwxMF0KK1BBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QgWzUzLDcxXSwg
WzEwLDAsMTAsMF0KK1BBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QgWzUzLDcx
XSwgWzEwLDEwLDEwLDEwXQorUEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdCBb
MTUyLDEwNV0sIFsxMCwwLDEwLDBdCitQQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciBy
ZWN0IFsxNTIsMTA1XSwgWzAsMTAsMCwxMF0KK1BBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQg
Zm9yIHJlY3QgWzE1MiwxMDVdLCBbMTAsMTAsMTAsMTBdCitQQVNTIEFsbCBjb3JyZWN0IG5vZGVz
IGZvdW5kIGZvciByZWN0IFsxNTMsMTkzXSwgWzAsMCwwLDBdCitQQVNTIEFsbCBjb3JyZWN0IG5v
ZGVzIGZvdW5kIGZvciByZWN0IFsxNTMsMTkzXSwgWzAsMjAsMCwyMF0KK1BBU1MgQWxsIGNvcnJl
Y3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QgWzE1MywxOTNdLCBbMjAsMCwyMCwwXQorUEFTUyBBbGwg
Y29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdCBbMTQ0LDE4M10sIFswLDAsMCwwXQorUEFTUyBB
bGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdCBbMTQ0LDE4M10sIFsxLDAsMSwwXQorUEFT
UyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdCBbMTQ0LDE4M10sIFswLDEsMCwxXQor
UEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdCBbMTQ0LDE4M10sIFsxLDEsMSwx
XQorUEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdCBbNzcsMjQwXSwgWzAsMCww
LDBdCitQQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0IFs3NywyNDBdLCBbMCwx
MCwwLDEwXQorUEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdCBbNzcsMjQwXSwg
WzEwLDAsMTAsMF0KK1BBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QgWzc3LDI0
MF0sIFsxMCwxMCwxMCwxMF0KK1BBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3Qg
WzM5LDIxMl0sIFswLDAsMCwwXQorUEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVj
dCBbMzksMjEyXSwgWzEwLDAsMTAsMF0KK1BBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9y
IHJlY3QgWzM5LDIxMl0sIFswLDEwLDAsMTBdCitQQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5k
IGZvciByZWN0IFszOSwyMTJdLCBbMTAsMTAsMTAsMTBdCiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3QtYmFzaWMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL25vZGVzRnJvbVJlY3QtYmFzaWMuaHRtbAppbmRleCA2YTQwNjRhLi4yYjQzYzY1IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2Rlc0Zyb21SZWN0LWJhc2ljLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9tUmVjdC1iYXNpYy5odG1sCkBAIC0yMiwz
NyArMjIsMzcgQEAKIAogICAgICAgd2luZG93LnNjcm9sbFRvKDAsIDApOwogCi0gICAgICBjaGVj
ayg1MywgNzEsIDAsIDAsIFtlLmJvZHldKTsKLSAgICAgIGNoZWNrKDUzLCA3MSwgMTAsIDAsIFtl
LnAzLCBlLmJvZHldKTsKLSAgICAgIGNoZWNrKDUzLCA3MSwgMCwgMTAsIFtlLmQxLCBlLmgxLCBl
LmJvZHldKTsKLSAgICAgIGNoZWNrKDUzLCA3MSwgMTAsIDEwLCBbZS5wMywgZS5kMSwgZS5oMSwg
ZS5ib2R5XSk7CisgICAgICBjaGVjayg1MywgNzEsIDAsIDAsIDAsIDAsIFtlLmJvZHldKTsKKyAg
ICAgIGNoZWNrKDUzLCA3MSwgMCwgMTAsIDAsIDEwLCBbZS5wMywgZS5ib2R5XSk7CisgICAgICBj
aGVjayg1MywgNzEsIDEwLCAwLCAxMCwgMCwgW2UuZDEsIGUuaDEsIGUuYm9keV0pOworICAgICAg
Y2hlY2soNTMsIDcxLCAxMCwgMTAsIDEwLCAxMCwgW2UucDMsIGUuZDEsIGUuaDEsIGUuYm9keV0p
OwogCi0gICAgICBjaGVjaygxNTIsIDEwNSwgMCwgMTAsIFtlLnAzLCBlLmJvZHldKTsKLSAgICAg
IGNoZWNrKDE1MiwgMTA1LCAxMCwgMCwgW2UucDQsIGUuZDEsIGUuYm9keV0pOwotICAgICAgY2hl
Y2soMTUyLCAxMDUsIDEwLCAxMCwgW2UucDQsIGUucDMsIGUuZDEsIGUuYm9keV0pOworICAgICAg
Y2hlY2soMTUyLCAxMDUsIDEwLCAwLCAxMCwgMCwgW2UucDMsIGUuYm9keV0pOworICAgICAgY2hl
Y2soMTUyLCAxMDUsIDAsIDEwLCAwLCAxMCwgW2UucDQsIGUuZDEsIGUuYm9keV0pOworICAgICAg
Y2hlY2soMTUyLCAxMDUsIDEwLCAxMCwgMTAsIDEwLCBbZS5wNCwgZS5wMywgZS5kMSwgZS5ib2R5
XSk7CiAKICAgICAgIC8vIGUucDEgaXMgaW52aXNpYmxlIGFuZCBzaG91bGRuJ3QgYXBwZWFyOgot
ICAgICAgY2hlY2soMTUzLDE5MywwLDAsW2UucDVdKTsKKyAgICAgIGNoZWNrKDE1MywgMTkzLCAw
LCAwLCAwLCAwLCBbZS5wNV0pOwogICAgICAgLy8gTk9URTogW2UucDUsIGUuZDJdKSBzaG91bGQg
YmUgcmV0dXJuZWQgaWYgd2UgZGlkIG5vdCBzdG9wCiAgICAgICAvLyBhdCBlLnA1LCB3aGljaCBm
dWxseSBlbmNsb3NlcyB0aGUgdGFyZ2V0IHJlY3QuCi0gICAgICBjaGVjaygxNTMsMTkzLDIwLDAs
IFtlLnA1XSk7Ci0gICAgICBjaGVjaygxNTMsMTkzLDAsMjAsIFtlLnA1LCBlLmJvZHldKTsKKyAg
ICAgIGNoZWNrKDE1MywxOTMsMCwgMjAsIDAsIDIwLCBbZS5wNV0pOworICAgICAgY2hlY2soMTUz
LDE5MywyMCwgMCwgMjAsIDAsIFtlLnA1LCBlLmJvZHldKTsKIAogICAgICAgLy8gUHJlY2lzZSBw
aXhlbCBjaGVja3M6Ci0gICAgICBjaGVjaygxNDQsIDE4MywgMCwgMCwgW2UuYm9keV0pOwotICAg
ICAgY2hlY2soMTQ0LCAxODMsIDAsIDEsIFtlLnA1LCBlLmJvZHldKTsKLSAgICAgIGNoZWNrKDE0
NCwgMTgzLCAxLCAwLCBbZS5kMiwgZS5ib2R5XSk7Ci0gICAgICBjaGVjaygxNDQsIDE4MywgMSwg
MSwgW2UucDUsIGUuZDIsIGUuYm9keV0pOwotICAgICAgY2hlY2soNzcsIDI0MCwgMCwgMCwgW2Uu
cDJdKTsKLSAgICAgIGNoZWNrKDc3LCAyNDAsIDEwLCAwLCBbZS5wMl0pOwotICAgICAgY2hlY2so
NzcsIDI0MCwgMCwgMTAsIFtlLnA1LCBlLnNwYW4sIGUucDJdKTsKLSAgICAgIGNoZWNrKDc3LCAy
NDAsIDEwLCAxMCwgW2UucDUsIGUuc3BhbiwgZS5wMl0pOworICAgICAgY2hlY2soMTQ0LCAxODMs
IDAsIDAsIDAsIDAsIFtlLmJvZHldKTsKKyAgICAgIGNoZWNrKDE0NCwgMTgzLCAxLCAwLCAxLCAw
LCBbZS5wNSwgZS5ib2R5XSk7CisgICAgICBjaGVjaygxNDQsIDE4MywgMCwgMSwgMCwgMSwgW2Uu
ZDIsIGUuYm9keV0pOworICAgICAgY2hlY2soMTQ0LCAxODMsIDEsIDEsIDEsIDEsIFtlLnA1LCBl
LmQyLCBlLmJvZHldKTsKKyAgICAgIGNoZWNrKDc3LCAyNDAsIDAsIDAsIDAsIDAsIFtlLnAyXSk7
CisgICAgICBjaGVjayg3NywgMjQwLCAwLCAxMCwgMCwgMTAsIFtlLnAyXSk7CisgICAgICBjaGVj
ayg3NywgMjQwLCAxMCwgMCwgMTAsIDAsIFtlLnA1LCBlLnNwYW4sIGUucDJdKTsKKyAgICAgIGNo
ZWNrKDc3LCAyNDAsIDEwLCAxMCwgMTAsIDEwLCBbZS5wNSwgZS5zcGFuLCBlLnAyXSk7CiAKICAg
ICAgIC8vIEV4cGFuZGluZyBhcmVhIGNoZWNrczoKLSAgICAgIGNoZWNrKDM5LCAyMTIsIDAsICAw
LCBbZS5ib2R5XSk7Ci0gICAgICBjaGVjaygzOSwgMjEyLCAwLCAxMCwgW2UuZDIsIGUucDIsIGUu
Ym9keV0pOwotICAgICAgY2hlY2soMzksIDIxMiwgMTAsIDAsIFtlLnA1LCBlLmJvZHldKTsKLSAg
ICAgIGNoZWNrKDM5LCAyMTIsIDEwLCAxMCwgW2UucDUsIGUuZDIsIGUucDIsIGUuYm9keV0pOwor
ICAgICAgY2hlY2soMzksIDIxMiwgMCwgIDAsIDAsIDAsIFtlLmJvZHldKTsKKyAgICAgIGNoZWNr
KDM5LCAyMTIsIDEwLCAwLCAxMCwgMCwgW2UuZDIsIGUucDIsIGUuYm9keV0pOworICAgICAgY2hl
Y2soMzksIDIxMiwgMCwgMTAsIDAsIDEwLCBbZS5wNSwgZS5ib2R5XSk7CisgICAgICBjaGVjaygz
OSwgMjEyLCAxMCwgMTAsIDEwLCAxMCwgW2UucDUsIGUuZDIsIGUucDIsIGUuYm9keV0pOwogCiAg
ICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQogICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9yZXNvdXJjZXMvbm9kZXNGcm9tUmVjdC5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291
cmNlcy9ub2Rlc0Zyb21SZWN0LmpzCmluZGV4IDA2NzE2MzkuLjQyZDdmOWIgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNlcy9ub2Rlc0Zyb21SZWN0LmpzCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNlcy9ub2Rlc0Zyb21SZWN0LmpzCkBAIC0zLDE5ICsz
LDIxIEBACiAgKiAgICAgKiBBbnRvbmlvIEdvbWVzIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4KICAq
Ki8KIAotZnVuY3Rpb24gY2hlY2soeCwgeSwgaFBhZGRpbmcsIHZQYWRkaW5nLCBsaXN0KQorZnVu
Y3Rpb24gY2hlY2soeCwgeSwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5n
LCBsZWZ0UGFkZGluZywgbGlzdCkKIHsKICAgaWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCiAgICAgcmV0dXJuOwogCi0gIHZhciBub2RlcyA9IGxheW91dFRlc3RDb250cm9sbGVyLm5v
ZGVzRnJvbVJlY3QoZG9jdW1lbnQsIHgsIHksIGhQYWRkaW5nLCB2UGFkZGluZywgdHJ1ZSAvKiBp
Z25vcmVDbGlwcGluZyAqLyk7CisgIHZhciBub2RlcyA9IGxheW91dFRlc3RDb250cm9sbGVyLm5v
ZGVzRnJvbVJlY3QoZG9jdW1lbnQsIHgsIHksIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90
dG9tUGFkZGluZywgbGVmdFBhZGRpbmcsIHRydWUgLyogaWdub3JlQ2xpcHBpbmcgKi8pOwogICBp
ZiAoIW5vZGVzKQogICAgIHJldHVybjsKIAogICBpZiAobm9kZXMubGVuZ3RoICE9IGxpc3QubGVu
Z3RoKSB7CiAgICAgdGVzdEZhaWxlZCgiRGlmZmVyZW50IG51bWJlciBvZiBub2RlcyBmb3IgcmVj
dCIgKwogICAgICAgICAgICAgICAiWyIgKyB4ICsgIiwiICsgeSArICJdLCAiICsKLSAgICAgICAg
ICAgICAgIlsiICsgaFBhZGRpbmcgKyAiLCIgKyB2UGFkZGluZyArICJdOiAnIiArIGxpc3QubGVu
Z3RoICsgIicgdnMgJyIgKyBub2Rlcy5sZW5ndGggKyAiJyIpOworICAgICAgICAgICAgICAiWyIg
KyB0b3BQYWRkaW5nICsgIiwiICsgcmlnaHRQYWRkaW5nICsKKyAgICAgICAgICAgICAgIiwiICsg
Ym90dG9tUGFkZGluZyArICIsIiArIGxlZnRQYWRkaW5nICsKKyAgICAgICAgICAgICAgIl06ICci
ICsgbGlzdC5sZW5ndGggKyAiJyB2cyAnIiArIG5vZGVzLmxlbmd0aCArICInIik7CiAgICAgcmV0
dXJuOwogICB9CiAKQEAgLTIzLDE0ICsyNSwxNiBAQCBmdW5jdGlvbiBjaGVjayh4LCB5LCBoUGFk
ZGluZywgdlBhZGRpbmcsIGxpc3QpCiAgICAgaWYgKG5vZGVzW2ldICE9IGxpc3RbaV0pIHsKICAg
ICAgIHRlc3RGYWlsZWQoIlVuZXhwZWN0ZWQgbm9kZSAjIiArIGkgKyAiIGZvciByZWN0ICIgKwog
ICAgICAgICAgICAgICAgICJbIiArIHggKyAiLCIgKyB5ICsgIl0sICIgKwotICAgICAgICAgICAg
ICAgICJbIiArIGhQYWRkaW5nICsgIiwiICsgdlBhZGRpbmcgKyAiXSIgKyAiIC0gIiArIG5vZGVz
W2ldKTsKKyAgICAgICAgICAgICAgICAiWyIgKyB0b3BQYWRkaW5nICsgIiwiICsgcmlnaHRQYWRk
aW5nICsKKyAgICAgICAgICAgICAgICAiLCIgKyBib3R0b21QYWRkaW5nICsgIiwiICsgbGVmdFBh
ZGRpbmcgKyAiXSIgKyAiIC0gIiArIG5vZGVzW2ldKTsKICAgICAgIHJldHVybjsKICAgICB9CiAg
IH0KIAogICB0ZXN0UGFzc2VkKCJBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdCAiICAr
Ci0gICAgICAgICAgICJbIiArIHggKyAiLCIgKyB5ICsgIl0sICIgKwotICAgICAgICAgICAiWyIg
KyBoUGFkZGluZyArICIsIiArIHZQYWRkaW5nICsgIl0iKTsKKyAgICAgICAgICAgICAiWyIgKyB4
ICsgIiwiICsgeSArICJdLCAiICsKKyAgICAgICAgICAgICAiWyIgKyB0b3BQYWRkaW5nICsgIiwi
ICsgcmlnaHRQYWRkaW5nICsKKyAgICAgICAgICAgICAiLCIgKyBib3R0b21QYWRkaW5nICsgIiwi
ICsgbGVmdFBhZGRpbmcgKyAiXSIpOwogfQogCiBmdW5jdGlvbiBnZXRDZW50ZXJGb3IoZWxlbWVu
dCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggOWE2OTFlZC4uMDRiMzVmMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NyBAQAorMjAxMC0wOS0yMyAgQW50b25pbyBH
b21lcyAgPGFnb21lc0ByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE1ha2UgRG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QgbW9yZSBmbGV4aWJs
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDYzMzYK
KworICAgICAgICBUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgQVBJIGZvciB0aGUgRG9jdW1lbnQ6Om5v
ZGVzRnJvbVJlY3QoKSBtZXRob2QgYXMgZm9sbG93czoKKworICAgICAgICBmcm9tCisKKyAgICAg
ICAgLSBSZWZQdGY8Tm9kZUxpc3Q+IG5vZGVzRnJvbVJlY3QoaW50IHgsIGludCB5LCB1bnNpZ25l
ZCBob3Jpem9udGFsUGFkZGluZywgdW5zaWduZWQgdmVydGljYWxQYWRkaW5nLCBib29sIGlnbm9y
ZUNsaXBwaW5nKQorCisgICAgICAgIHRvCisKKyAgICAgICAgLSBSZWZQdGY8Tm9kZUxpc3Q+IG5v
ZGVzRnJvbVJlY3QoaW50IHgsIGludCB5LCB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCBy
aWdodFBhZGRpbmcsIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxlZnRQYWRkaW5nLCBib29sIGlnbm9yZUNs
aXBwaW5nKQorCisgICAgICAgIFByZXZpb3VzbHkgdGhlIG1ldGhvZCB3YXMgcmVjZWl2aW5nIGFz
IHBhcmFtZXRlciBob3Jpem9udGFsIGFuZCB2ZXJ0aWNhbCBwYWRkaW5nIHZhbHVlcy4KKyAgICAg
ICAgSW4gcHJhY3RpY2UsIHRoZSBob3Jpem9udGFsIHBhZGRpbmcgd2FzIGJlaW5nIHVzZWQgdG8g
ZXhwYW5kIGEgZ2l2ZW4gY2VudGVyIHBvaW50IGluIGJvdGgKKyAgICAgICAgcmlnaHQgYW5kIGxl
ZnQgZGlyZWN0aW9ucywgd2hpbGUgdmVydGljYWwgcGFkZGluZyB3YXMgZXhwYW5kaW5nIGl0IHRv
IHRoZSB0b3AgYW5kIGJvdHRvbSBkaXJlY3Rpb25zLgorCisgICAgICAgIEFsdGhvdWdoIHRoaXMg
ZGVzaWduIG1ha2VzIGl0IHBvc3NpYmxlIHRvIGltcHJvdmUgdGhlIHRvdWNoIGV4cGVyaWVuY2Ug
b24gbW9iaWxlIGRldmljZXMKKyAgICAgICAgKERvY3VtZW50Ojpub2Rlc0Zyb21SZWN0IGV4cG9z
ZXMgdGhlIHJlY3QgYmFzZWQgaGl0IHRlc3Rpbmcgc3lzdGVtKSwgZW1waXJpY2FsIGV4cGVyaW1l
bnRzCisgICAgICAgIHNob3dlZCB0aGF0LCBzcGVjaWFsbHkgaW4gY2FwYWNpdGl2ZSB0b3VjaCBz
Y3JlZW5zLCB1c2VycyB0ZW5kIHRvIHRhcCBiZWxvdyBlbGVtZW50cy4gU28KKyAgICAgICAgZm9y
IGV2ZW4gbW9yZSBhY2N1cmF0ZSByZXN1bHRzICh3aGljaCBtZWFucyBoZXJlIHRoZSBwb3NzaWJp
bGl0eSBvZiBwbGVhc2FudCB0YXBwaW5nIGV4cGVyaWVuY2UpLAorICAgICAgICBpdCBtYWtlcyBz
ZW5zZSB0byB1c2UgYSByZWdpb24gdGhhdCBpcyBvZmZzZXQgbW9yZSBhYm92ZSB0aGUgdG91Y2gg
cG9pbnQsIGZhdm9yaW5nIGVsZW1lbnRzCisgICAgICAgIGFib3ZlIHRoZSB0b3VjaCBwb2ludC4K
KworICAgICAgICBUaGUgcGF0Y2ggYmFzaWNhbGx5IGltcGxlbWVudHMgdGhhdCwgaW5jcmVhc2lu
ZyB0aGUgQVBJIGZsZXhpYmxlIGFuZCBwb3dlciBieSBtYWtpbmcgaXQgcG9zc2libGUKKyAgICAg
ICAgdG8gc3BlY2lmeSBkaWZmZXJlbnQgcGFkZGluZyB2YWx1ZXMgZm9yIGVhY2ggZGlyZWN0aW9u
IGluIGEgZ2l2ZW4gb3JpZW50YXRpb24uCisKKyAgICAgICAgQ2hhbmdlcyB3ZXJlIG1hZGUgYWNj
b3JkaW5nbHkgdG8gdGhlIEhpdFRlc3RSZXN1bHQsIFJlbmRlckxheWVyLCBSZW5kZXJJbWFnZSBh
bmQgUmVuZGVyTGluZUJveExpc3QKKyAgICAgICAgY2xhc3Nlcy4KKworICAgICAgICBXZWJDb3Jl
OgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6
IEFQSSBhZGp1c3RtZW50LgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5pZGw6IERpdHRvLgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6IEFQSSBhZGp1c3RtZW50IGFuZCBtZXRob2QgYm9keSBp
bXBsZW1lbnRhdGlvbiBhY2NvcmRpbmdseS4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpu
b2Rlc0Zyb21SZWN0KToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhpdFRlc3RSZXN1bHRBdFBvaW50KTogRm9yIHNpbXBs
aWNpdHksIEkgZGlkIG5vdCBjaGFuZ2UgdGhlIHNpZ25hdHVyZQorICAgICAgICAgICAgYnV0IHRo
ZSB3YXkgdGhlIHBhZGRpbmcgdmFsdWUgcGFzc2VkIGluIGFzIHBhcmFtZXRlciBpcyBiZWluZyB1
c2VkIHRvIGNvbnN0cnVjdCBhIEhpdFRlc3RSZXN1bHQuCisgICAgICAgICogcmVuZGVyaW5nL0hp
dFRlc3RSZXN1bHQuY3BwOiBDaGFuZ2VkIHRoZSByZWN0LWJhc2VkIGJpdHMgZnJvbSB1c2luZyBJ
bnRTaXplIChwYWRkaW5nKSB0byBzZXBhcmF0ZWQgcGFkZGluZ3MgZm9yIGVhY2ggZGlyZWN0aW9u
LgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3VsdCk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6b3BlcmF0b3I9KTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpyZWN0RnJvbVBvaW50KTogRGl0dG8uCisg
ICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaDoKKyAgICAgICAgKFdlYkNvcmU6Okhp
dFRlc3RSZXN1bHQ6OnRvcFBhZGRpbmcpOiBnZXR0ZXIgZm9yIHRoZSB0b3AgcGFkZGluZy4KKyAg
ICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OnJpZ2h0UGFkZGluZyk6IGdldHRlciBmb3Ig
dGhlIHJpZ2h0IHBhZGRpbmcuCisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0Ojpib3R0
b21QYWRkaW5nKTogZ2V0dGVyIGZvciB0aGUgYm90dG9tIHBhZGRpbmcuCisgICAgICAgIChXZWJD
b3JlOjpIaXRUZXN0UmVzdWx0OjpsZWZ0UGFkZGluZyk6IGdldHRlciBmb3IgdGhlIGxlZnQgcGFk
ZGluZy4KKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OnJlY3RGcm9tUG9pbnQpOiBB
ZGRlZCBhIHN0YXRpYyBtZXRob2QgdGhhdCBnaXZlbiBhIGNlbnRlciBwb2ludCBhbmQgcGFkZGlu
ZyB2YWx1ZXMgZm9yIGVhY2ggZGlyZWN0aW9uLAorICAgICAgICAgICAgcmV0dXJucyB0aGUgcmVj
dCB0aGF0IGlzIGdvaW5nIHRvIGJlIHVzZWQgaW4gV2ViQ29yZSdzIGhpdCB0ZXN0aW5nIHByb2Nl
c3NpbmcuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDogQ2hhbmdlZCB0aGUg
cmVjdC1iYXNlZCBiaXRzIGZyb20gdXNpbmcgSW50U2l6ZSAocGFkZGluZykgdG8gc2VwYXJhdGVk
IHBhZGRpbmdzIGZvciBlYWNoIGRpcmVjdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklt
YWdlOjpub2RlQXRQb2ludCk6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHA6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmhpdFRlc3RMYXll
cik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmhpdFRlc3RMaXN0KTog
RGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpbmVCb3hMaXN0LmNwcDogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaW5lQm94TGlzdDo6aGl0VGVzdCk6IERpdHRvLgor
CiAyMDEwLTA5LTI2ICBBbnRvbmlvIEdvbWVzICA8YWdvbWVzQHJpbS5jb21nPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbiBiL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggZWJmMWNj
My4uNTM1Nzk1OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCkBAIC00OTIsNyArNDkyLDYgQEAgX19aTjdXZWJDb3JlMjZjb250
ZXh0TWVudUl0ZW1UYWdGb250TWVudUV2CiBfX1pON1dlYkNvcmUyNmNvbnRleHRNZW51SXRlbVRh
Z09wZW5MaW5rRXYKIF9fWk43V2ViQ29yZTI2dXNlc1Rlc3RNb2RlRm9jdXNSaW5nQ29sb3JFdgog
X19aTjdXZWJDb3JlMjdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb25DMUVOM1dURjEwUGFzc1Jl
ZlB0cklOU180Tm9kZUVFRWJSS05TMV82U3RyaW5nRQotX19aTks3V2ViQ29yZThEb2N1bWVudDEz
bm9kZXNGcm9tUmVjdEVpaWpqYgogX19aTjdXZWJDb3JlMjdEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dE1vY2sxNHNldE9yaWVudGF0aW9uRU4zV1RGMTBQYXNzUmVmUHRySU5TXzE3RGV2aWNlT3JpZW50
YXRpb25FRUUKIF9fWk43V2ViQ29yZTI3RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrQzFFdgog
X19aTjdXZWJDb3JlMjdhcHBsaWNhdGlvbklzQWRvYmVJbnN0YWxsZXJFdgpAQCAtNjg5LDYgKzY4
OCw3IEBAIF9fWk43V2ViQ29yZThEb2N1bWVudDI2cGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHNF
aVJOU183SW50U2l6ZUVSaVMzX1MzX1MzXwogX19aTjdXZWJDb3JlOERvY3VtZW50MjdyZW1vdmVN
ZWRpYUNhblN0YXJ0TGlzdGVuZXJFUE5TXzIxTWVkaWFDYW5TdGFydExpc3RlbmVyRQogX19aTjdX
ZWJDb3JlOERvY3VtZW50MzZ1cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHNFdgog
X19aTjdXZWJDb3JlOERvY3VtZW50NGhlYWRFdgorX19aTks3V2ViQ29yZThEb2N1bWVudDEzbm9k
ZXNGcm9tUmVjdEVpaWpqampiCiBfX1pON1dlYkNvcmUxMEpTRG9jdW1lbnQ2c19pbmZvRQogX19a
TjdXZWJDb3JlOEZvcm1EYXRhNmNyZWF0ZUVQS3ZtCiBfX1pON1dlYkNvcmU4Rm9ybURhdGFEMUV2
CkBAIC05MjMsNiArOTIzLDcgQEAgX19aTks3V2ViQ29yZTEzSGl0VGVzdFJlc3VsdDE4dGl0bGVE
aXNwbGF5U3RyaW5nRXYKIF9fWk5LN1dlYkNvcmUxM0hpdFRlc3RSZXN1bHQ1aW1hZ2VFdgogX19a
Tks3V2ViQ29yZTEzSGl0VGVzdFJlc3VsdDV0aXRsZUVSTlNfMTNUZXh0RGlyZWN0aW9uRQogX19a
Tks3V2ViQ29yZTEzSGl0VGVzdFJlc3VsdDlpbWFnZVJlY3RFdgorX19aTjdXZWJDb3JlMTNIaXRU
ZXN0UmVzdWx0MTNyZWN0RnJvbVBvaW50RVJLTlNfOEludFBvaW50RWpqamoKIF9fWk5LN1dlYkNv
cmUxM1Jlc291cmNlRXJyb3JjdlA3TlNFcnJvckV2CiBfX1pOSzdXZWJDb3JlMTREb2N1bWVudExv
YWRlcjEwcmVxdWVzdFVSTEV2CiBfX1pOSzdXZWJDb3JlMTREb2N1bWVudExvYWRlcjExZnJhbWVM
b2FkZXJFdgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCmluZGV4IGMzZmVhZTQuLjU3MDFjMzUgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTEw
NDgsNyArMTA0OCw3IEBAIEtVUkwgRG9jdW1lbnQ6OmJhc2VVUkkoKSBjb25zdAogLy8gKiBtYWtp
bmcgaXQgcmVjZWl2ZSBhIHJlY3QgYXMgcGFyYW1ldGVyLCBpLmUuIG5vZGVzRnJvbVJlY3QoeCwg
eSwgdywgaCk7CiAvLyAqIG1ha2luZyBpdCByZWNlaXZlIHRoZSBleHBhZGluZyBzaXplIG9mIGVh
Y2ggZGlyZWN0aW9uIHNlcGFyYXRlbHksCiAvLyAgIGkuZS4gbm9kZXNGcm9tUmVjdCh4LCB5LCB0
b3BTaXplLCByaWdodFNpemUsIGJvdHRvbVNpemUsIGxlZnRTaXplKTsKLVBhc3NSZWZQdHI8Tm9k
ZUxpc3Q+IERvY3VtZW50Ojpub2Rlc0Zyb21SZWN0KGludCBjZW50ZXJYLCBpbnQgY2VudGVyWSwg
dW5zaWduZWQgaFBhZGRpbmcsIHVuc2lnbmVkIHZQYWRkaW5nLCBib29sIGlnbm9yZUNsaXBwaW5n
KSBjb25zdAorUGFzc1JlZlB0cjxOb2RlTGlzdD4gRG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QoaW50
IGNlbnRlclgsIGludCBjZW50ZXJZLCB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdo
dFBhZGRpbmcsIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nLCBi
b29sIGlnbm9yZUNsaXBwaW5nKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBTaGFyZSBjb2RlIGJl
dHdlZW4gdGhpcywgZWxlbWVudEZyb21Qb2ludCBhbmQgY2FyZXRSYW5nZUZyb21Qb2ludC4KICAg
ICBpZiAoIXJlbmRlcmVyKCkpCkBAIC0xMDYyLDI2ICsxMDYyLDI1IEBAIFBhc3NSZWZQdHI8Tm9k
ZUxpc3Q+IERvY3VtZW50Ojpub2Rlc0Zyb21SZWN0KGludCBjZW50ZXJYLCBpbnQgY2VudGVyWSwg
dW5zaWduZWQKIAogICAgIGZsb2F0IHpvb21GYWN0b3IgPSBmcmFtZS0+cGFnZVpvb21GYWN0b3Io
KTsKICAgICBJbnRQb2ludCBwb2ludCA9IHJvdW5kZWRJbnRQb2ludChGbG9hdFBvaW50KGNlbnRl
clggKiB6b29tRmFjdG9yICsgdmlldygpLT5zY3JvbGxYKCksIGNlbnRlclkgKiB6b29tRmFjdG9y
ICsgdmlldygpLT5zY3JvbGxZKCkpKTsKLSAgICBJbnRTaXplIHBhZGRpbmcoaFBhZGRpbmcsIHZQ
YWRkaW5nKTsKIAogICAgIGludCB0eXBlID0gSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0
VGVzdFJlcXVlc3Q6OkFjdGl2ZTsKIAogICAgIC8vIFdoZW4gaWdub3JlQ2xpcHBpbmcgaXMgZmFs
c2UsIHRoaXMgbWV0aG9kIHJldHVybnMgbnVsbCBmb3IgY29vcmRpbmF0ZXMgb3V0c2lkZSBvZiB0
aGUgdmlld3BvcnQuCiAgICAgaWYgKGlnbm9yZUNsaXBwaW5nKQogICAgICAgICB0eXBlIHw9IEhp
dFRlc3RSZXF1ZXN0OjpJZ25vcmVDbGlwcGluZzsKLSAgICBlbHNlIGlmICghZnJhbWVWaWV3LT52
aXNpYmxlQ29udGVudFJlY3QoKS5pbnRlcnNlY3RzKEludFJlY3QocG9pbnQsIHBhZGRpbmcpKSkK
KyAgICBlbHNlIGlmICghZnJhbWVWaWV3LT52aXNpYmxlQ29udGVudFJlY3QoKS5pbnRlcnNlY3Rz
KEhpdFRlc3RSZXN1bHQ6OnJlY3RGcm9tUG9pbnQocG9pbnQsIHRvcFBhZGRpbmcsIHJpZ2h0UGFk
ZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcpKSkKICAgICAgICAgcmV0dXJuIDA7CiAK
ICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KHR5cGUpOwogCiAgICAgLy8gUGFzc2luZyBhIHpl
cm8gcGFkZGluZyB3aWxsIHRyaWdnZXIgYSByZWN0IGhpdCB0ZXN0LCBob3dldmVyIGZvciB0aGUg
cHVycG9zZXMgb2Ygbm9kZXNGcm9tUmVjdCwKICAgICAvLyB3ZSBzcGVjaWFsIGhhbmRsZSB0aGlz
IGNhc2UgaW4gb3JkZXIgdG8gcmV0dXJuIGEgdmFsaWQgTm9kZUxpc3QuCi0gICAgaWYgKHBhZGRp
bmcuaXNaZXJvKCkpIHsKKyAgICBpZiAoIXRvcFBhZGRpbmcgJiYgIXJpZ2h0UGFkZGluZyAmJiAh
Ym90dG9tUGFkZGluZyAmJiAhbGVmdFBhZGRpbmcpIHsKICAgICAgICAgSGl0VGVzdFJlc3VsdCBy
ZXN1bHQocG9pbnQpOwogICAgICAgICByZXR1cm4gaGFuZGxlWmVyb1BhZGRpbmcocmVxdWVzdCwg
cmVzdWx0KTsKICAgICB9CiAKLSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdChwb2ludCwgcGFkZGlu
Zyk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQocG9pbnQsIHRvcFBhZGRpbmcsIHJpZ2h0UGFk
ZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcpOwogICAgIHJlbmRlclZpZXcoKS0+bGF5
ZXIoKS0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOwogCiAgICAgcmV0dXJuIFN0YXRpY0hhc2hT
ZXROb2RlTGlzdDo6YWRvcHQocmVzdWx0LnJlY3RCYXNlZFRlc3RSZXN1bHQoKSk7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRl
eCAxYWQ3ZWNkLi4wMzdlMmU4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisr
KyBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTMwOCw3ICszMDgsNyBAQCBwdWJsaWM6CiAK
ICAgICAvKioKICAgICAgKiBSZXRyaWV2ZSBhbGwgbm9kZXMgdGhhdCBpbnRlcnNlY3QgYSByZWN0
IGluIHRoZSB3aW5kb3cncyBkb2N1bWVudCwgdW50aWwgaXQgaXMgZnVsbHkgZW5jbG9zZWQgYnkK
LSAgICAgKiB0aGUgYm91bmRhcmllcyBvZiBub2RlLgorICAgICAqIHRoZSBib3VuZGFyaWVzIG9m
IGEgbm9kZS4KICAgICAgKgogICAgICAqIEBwYXJhbSBjZW50ZXJYIHggcmVmZXJlbmNlIGZvciB0
aGUgcmVjdGFuZ2xlIGluIENTUyBwaXhlbHMKICAgICAgKiBAcGFyYW0gY2VudGVyWSB5IHJlZmVy
ZW5jZSBmb3IgdGhlIHJlY3RhbmdsZSBpbiBDU1MgcGl4ZWxzCkBAIC0zMTcsNyArMzE3LDEzIEBA
IHB1YmxpYzoKICAgICAgKiBAcGFyYW0gaWdub3JlQ2xpcHBpbmcgd2hldGhlciBvciBub3QgdG8g
aWdub3JlIHRoZSByb290IHNjcm9sbCBmcmFtZSB3aGVuIHJldHJpZXZpbmcgdGhlIGVsZW1lbnQu
CiAgICAgICogICAgICAgIElmIGZhbHNlLCB0aGlzIG1ldGhvZCByZXR1cm5zIG51bGwgZm9yIGNv
b3JkaW5hdGVzIG91dHNpZGUgb2YgdGhlIHZpZXdwb3J0LgogICAgICAqLwotICAgIFBhc3NSZWZQ
dHI8Tm9kZUxpc3Q+IG5vZGVzRnJvbVJlY3QoaW50IGNlbnRlclgsIGludCBjZW50ZXJZLCB1bnNp
Z25lZCBoUGFkZGluZywgdW5zaWduZWQgdlBhZGRpbmcsIGJvb2wgaWdub3JlQ2xpcHBpbmcpIGNv
bnN0OworICAgIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IG5vZGVzRnJvbVJlY3QoaW50IGNlbnRlclgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2VudGVyWSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHRvcFBhZGRpbmcs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCByaWdodFBh
ZGRpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBi
b3R0b21QYWRkaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgbGVmdFBhZGRpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIGlnbm9yZUNsaXBwaW5nKSBjb25zdDsKICAgICBFbGVtZW50KiBlbGVtZW50RnJvbVBv
aW50KGludCB4LCBpbnQgeSkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxSYW5nZT4gY2FyZXRSYW5n
ZUZyb21Qb2ludChpbnQgeCwgaW50IHkpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRXZl
bnRIYW5kbGVyLmNwcCBiL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDg5MzJl
NWYuLmQzNzA5ZmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisr
KyBiL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC04NjYsNyArODY2LDcgQEAgdm9p
ZCBFdmVudEhhbmRsZXI6OmFsbG93REhUTUxEcmFnKGJvb2wmIGZsYWdESFRNTCwgYm9vbCYgZmxh
Z1VBKSBjb25zdAogICAgIAogSGl0VGVzdFJlc3VsdCBFdmVudEhhbmRsZXI6OmhpdFRlc3RSZXN1
bHRBdFBvaW50KGNvbnN0IEludFBvaW50JiBwb2ludCwgYm9vbCBhbGxvd1NoYWRvd0NvbnRlbnQs
IGJvb2wgaWdub3JlQ2xpcHBpbmcsIEhpdFRlc3RTY3JvbGxiYXJzIHRlc3RTY3JvbGxiYXJzLCBI
aXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhpdFR5cGUsIGNvbnN0IEludFNpemUm
IHBhZGRpbmcpCiB7Ci0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQocG9pbnQsIHBhZGRpbmcpOwor
ICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHBvaW50LCBwYWRkaW5nLmhlaWdodCgpLCBwYWRkaW5n
LndpZHRoKCksIHBhZGRpbmcuaGVpZ2h0KCksIHBhZGRpbmcud2lkdGgoKSk7CiAgICAgaWYgKCFt
X2ZyYW1lLT5jb250ZW50UmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICBp
ZiAoaWdub3JlQ2xpcHBpbmcpCkBAIC04ODcsNyArODg3LDcgQEAgSGl0VGVzdFJlc3VsdCBFdmVu
dEhhbmRsZXI6OmhpdFRlc3RSZXN1bHRBdFBvaW50KGNvbnN0IEludFBvaW50JiBwb2ludCwgYm9v
bCBhbGwKICAgICAgICAgRnJhbWVWaWV3KiB2aWV3ID0gc3RhdGljX2Nhc3Q8RnJhbWVWaWV3Kj4o
d2lkZ2V0KTsKICAgICAgICAgSW50UG9pbnQgd2lkZ2V0UG9pbnQocmVzdWx0LmxvY2FsUG9pbnQo
KS54KCkgKyB2aWV3LT5zY3JvbGxYKCkgLSByZW5kZXJXaWRnZXQtPmJvcmRlckxlZnQoKSAtIHJl
bmRlcldpZGdldC0+cGFkZGluZ0xlZnQoKSwgCiAgICAgICAgICAgICByZXN1bHQubG9jYWxQb2lu
dCgpLnkoKSArIHZpZXctPnNjcm9sbFkoKSAtIHJlbmRlcldpZGdldC0+Ym9yZGVyVG9wKCkgLSBy
ZW5kZXJXaWRnZXQtPnBhZGRpbmdUb3AoKSk7Ci0gICAgICAgIEhpdFRlc3RSZXN1bHQgd2lkZ2V0
SGl0VGVzdFJlc3VsdCh3aWRnZXRQb2ludCwgcGFkZGluZyk7CisgICAgICAgIEhpdFRlc3RSZXN1
bHQgd2lkZ2V0SGl0VGVzdFJlc3VsdCh3aWRnZXRQb2ludCwgcGFkZGluZy5oZWlnaHQoKSwgcGFk
ZGluZy53aWR0aCgpLCBwYWRkaW5nLmhlaWdodCgpLCBwYWRkaW5nLndpZHRoKCkpOwogICAgICAg
ICBmcmFtZS0+Y29udGVudFJlbmRlcmVyKCktPmxheWVyKCktPmhpdFRlc3QoSGl0VGVzdFJlcXVl
c3QoaGl0VHlwZSksIHdpZGdldEhpdFRlc3RSZXN1bHQpOwogICAgICAgICByZXN1bHQgPSB3aWRn
ZXRIaXRUZXN0UmVzdWx0OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0
UmVzdWx0LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCmluZGV4IGYy
ODY5MmUuLjM1YTZkMjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1
bHQuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCkBAIC01MSwx
NyArNTEsMjcgQEAgSGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3VsdChjb25zdCBJbnRQb2ludCYg
cG9pbnQpCiAgICAgOiBtX3BvaW50KHBvaW50KQogICAgICwgbV9pc092ZXJXaWRnZXQoZmFsc2Up
CiAgICAgLCBtX2lzUmVjdEJhc2VkKGZhbHNlKQorICAgICwgbV90b3BQYWRkaW5nKDApCisgICAg
LCBtX3JpZ2h0UGFkZGluZygwKQorICAgICwgbV9ib3R0b21QYWRkaW5nKDApCisgICAgLCBtX2xl
ZnRQYWRkaW5nKDApCiB7CiB9CiAKLUhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQoY29uc3Qg
SW50UG9pbnQmIGNlbnRlclBvaW50LCBjb25zdCBJbnRTaXplJiBwYWRkaW5nKQorSGl0VGVzdFJl
c3VsdDo6SGl0VGVzdFJlc3VsdChjb25zdCBJbnRQb2ludCYgY2VudGVyUG9pbnQsIHVuc2lnbmVk
IHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFkZGluZywgdW5zaWduZWQgYm90dG9tUGFkZGlu
ZywgdW5zaWduZWQgbGVmdFBhZGRpbmcpCiAgICAgOiBtX3BvaW50KGNlbnRlclBvaW50KQogICAg
ICwgbV9pc092ZXJXaWRnZXQoZmFsc2UpCisgICAgLCBtX3RvcFBhZGRpbmcodG9wUGFkZGluZykK
KyAgICAsIG1fcmlnaHRQYWRkaW5nKHJpZ2h0UGFkZGluZykKKyAgICAsIG1fYm90dG9tUGFkZGlu
Zyhib3R0b21QYWRkaW5nKQorICAgICwgbV9sZWZ0UGFkZGluZyhsZWZ0UGFkZGluZykKIHsKLSAg
ICAvLyBJZiBhIHplcm8gcGFkZGluZyBpcyBwYXNzZWQgaW4gb3IgZWl0aGVyIHdpZHRoIG9yIGhl
aWdodCBpcyBuZWdhdGl2ZSwgdGhlbiBpdAotICAgIC8vIGlzIG5vdCBhIHZhbGlkIHBhZGRpbmcg
YW5kIGhlbmNlIG5vdCBhIHJlY3QgYmFzZWQgaGl0IHRlc3QuCi0gICAgbV9pc1JlY3RCYXNlZCA9
ICEocGFkZGluZy5pc1plcm8oKSB8fCAocGFkZGluZy53aWR0aCgpIDwgMCB8fCBwYWRkaW5nLmhl
aWdodCgpIDwgMCkpOwotICAgIG1fcGFkZGluZyA9IG1faXNSZWN0QmFzZWQgPyBwYWRkaW5nIDog
SW50U2l6ZSgpOworICAgIC8vIElmIGFsbCBwYWRkaW5nIHZhbHVlcyBwYXNzZWQgaW4gYXJlIHpl
cm8gdGhlbiBpdCBpcyBub3QgYSByZWN0IGJhc2VkIGhpdCB0ZXN0LgorICAgIG1faXNSZWN0QmFz
ZWQgPSB0b3BQYWRkaW5nIHx8IHJpZ2h0UGFkZGluZyB8fCBib3R0b21QYWRkaW5nIHx8IGxlZnRQ
YWRkaW5nOworCisgICAgLy8gTWFrZSBzdXJlIGFsbCBwYWRkaW5nIHZhbHVlcyBhcmUgY2xhbXBl
ZCB0byB6ZXJvIGlmIGl0IGlzIG5vdCBhIHJlY3QgaGl0IHRlc3QuCisgICAgaWYgKCFtX2lzUmVj
dEJhc2VkKQorICAgICAgICBtX3RvcFBhZGRpbmcgPSBtX3JpZ2h0UGFkZGluZyA9IG1fYm90dG9t
UGFkZGluZyA9IG1fbGVmdFBhZGRpbmcgPSAwOwogfQogCiBIaXRUZXN0UmVzdWx0OjpIaXRUZXN0
UmVzdWx0KGNvbnN0IEhpdFRlc3RSZXN1bHQmIG90aGVyKQpAQCAtNzYsOSArODYsMTMgQEAgSGl0
VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3VsdChjb25zdCBIaXRUZXN0UmVzdWx0JiBvdGhlcikKICAg
ICAvLyBPbmx5IGNvcHkgdGhlIHBhZGRpbmcgYW5kIExpc3RIYXNoU2V0IGluIGNhc2Ugb2YgcmVj
dCBoaXQgdGVzdC4KICAgICAvLyBDb3B5aW5nIHRoZSBsYXRlciBpcyByYXRoZXIgZXhwZW5zaXZl
LgogICAgIGlmICgobV9pc1JlY3RCYXNlZCA9IG90aGVyLmlzUmVjdEJhc2VkVGVzdCgpKSkgewot
ICAgICAgICBtX3BhZGRpbmcgPSBvdGhlci5wYWRkaW5nKCk7CisgICAgICAgIG1fdG9wUGFkZGlu
ZyA9IG90aGVyLm1fdG9wUGFkZGluZzsKKyAgICAgICAgbV9yaWdodFBhZGRpbmcgPSBvdGhlci5t
X3JpZ2h0UGFkZGluZzsKKyAgICAgICAgbV9ib3R0b21QYWRkaW5nID0gb3RoZXIubV9ib3R0b21Q
YWRkaW5nOworICAgICAgICBtX2xlZnRQYWRkaW5nID0gb3RoZXIubV9sZWZ0UGFkZGluZzsKICAg
ICAgICAgbV9yZWN0QmFzZWRUZXN0UmVzdWx0ID0gb3RoZXIucmVjdEJhc2VkVGVzdFJlc3VsdCgp
OwotICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgbV90b3BQYWRkaW5nID0gbV9yaWdodFBhZGRp
bmcgPSBtX2JvdHRvbVBhZGRpbmcgPSBtX2xlZnRQYWRkaW5nID0gMDsKIH0KIAogSGl0VGVzdFJl
c3VsdDo6fkhpdFRlc3RSZXN1bHQoKQpAQCAtOTcsOSArMTExLDEzIEBAIEhpdFRlc3RSZXN1bHQm
IEhpdFRlc3RSZXN1bHQ6Om9wZXJhdG9yPShjb25zdCBIaXRUZXN0UmVzdWx0JiBvdGhlcikKICAg
ICAvLyBPbmx5IGNvcHkgdGhlIHBhZGRpbmcgYW5kIExpc3RIYXNoU2V0IGluIGNhc2Ugb2YgcmVj
dCBoaXQgdGVzdC4KICAgICAvLyBDb3B5aW5nIHRoZSBsYXRlciBpcyByYXRoZXIgZXhwZW5zaXZl
LgogICAgIGlmICgobV9pc1JlY3RCYXNlZCA9IG90aGVyLmlzUmVjdEJhc2VkVGVzdCgpKSkgewot
ICAgICAgICBtX3BhZGRpbmcgPSBvdGhlci5wYWRkaW5nKCk7CisgICAgICAgIG1fdG9wUGFkZGlu
ZyA9IG90aGVyLm1fdG9wUGFkZGluZzsKKyAgICAgICAgbV9yaWdodFBhZGRpbmcgPSBvdGhlci5t
X3JpZ2h0UGFkZGluZzsKKyAgICAgICAgbV9ib3R0b21QYWRkaW5nID0gb3RoZXIubV9ib3R0b21Q
YWRkaW5nOworICAgICAgICBtX2xlZnRQYWRkaW5nID0gb3RoZXIubV9sZWZ0UGFkZGluZzsKICAg
ICAgICAgbV9yZWN0QmFzZWRUZXN0UmVzdWx0ID0gb3RoZXIucmVjdEJhc2VkVGVzdFJlc3VsdCgp
OwotICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgbV90b3BQYWRkaW5nID0gbV9yaWdodFBhZGRp
bmcgPSBtX2JvdHRvbVBhZGRpbmcgPSBtX2xlZnRQYWRkaW5nID0gMDsKICAgICByZXR1cm4gKnRo
aXM7CiB9CiAKQEAgLTUzNCw0ICs1NTIsMTYgQEAgdm9pZCBIaXRUZXN0UmVzdWx0OjphcHBlbmQo
Y29uc3QgSGl0VGVzdFJlc3VsdCYgb3RoZXIpCiAgICAgICAgIG1fcmVjdEJhc2VkVGVzdFJlc3Vs
dC5hZGQoaXQtPmdldCgpKTsKIH0KIAorSW50UmVjdCBIaXRUZXN0UmVzdWx0OjpyZWN0RnJvbVBv
aW50KGNvbnN0IEludFBvaW50JiBwb2ludCwgdW5zaWduZWQgdG9wUGFkZGluZywgdW5zaWduZWQg
cmlnaHRQYWRkaW5nLCB1bnNpZ25lZCBib3R0b21QYWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGlu
ZykKK3sKKyAgICBJbnRQb2ludCBhY3R1YWxQb2ludChwb2ludCk7CisgICAgYWN0dWFsUG9pbnQg
LT0gSW50U2l6ZShsZWZ0UGFkZGluZywgdG9wUGFkZGluZyk7CisKKyAgICBJbnRTaXplIGFjdHVh
bFBhZGRpbmcobGVmdFBhZGRpbmcgKyByaWdodFBhZGRpbmcsIHRvcFBhZGRpbmcgKyBib3R0b21Q
YWRkaW5nKTsKKyAgICAvLyBBcyBJbnRSZWN0IGlzIGxlZnQgaW5jbHVzaXZlIGFuZCByaWdodCBl
eGNsdXNpdmUgKHNlZWluZyBJbnRSZWN0Ojpjb250YWlucyh4LCB5KSksIGFkZGluZyAiMSIuCisg
ICAgYWN0dWFsUGFkZGluZyArPSBJbnRTaXplKDEsIDEpOworCisgICAgcmV0dXJuIEludFJlY3Qo
YWN0dWFsUG9pbnQsIGFjdHVhbFBhZGRpbmcpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmggYi9XZWJDb3Jl
L3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKaW5kZXggMzFlODhmMS4uMTMwNGUyMiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCisrKyBiL1dlYkNvcmUvcmVu
ZGVyaW5nL0hpdFRlc3RSZXN1bHQuaApAQCAtNDQsOCArNDQsOCBAQCBjbGFzcyBTY3JvbGxiYXI7
CiBjbGFzcyBIaXRUZXN0UmVzdWx0IHsKIHB1YmxpYzoKICAgICBIaXRUZXN0UmVzdWx0KGNvbnN0
IEludFBvaW50Jik7Ci0gICAgLy8gUGFzcyBhIG5vbi1uZWdhdGl2ZSBJbnRTaXplIHZhbHVlIGFz
IHBhZGRpbmcgdG8gcGVyZm9ybSBhIHJlY3QtYmFzZWQgaGl0IHRlc3QuCi0gICAgSGl0VGVzdFJl
c3VsdChjb25zdCBJbnRQb2ludCYgY2VudGVyUG9pbnQsIGNvbnN0IEludFNpemUmIHBhZGRpbmcp
OworICAgIC8vIFBhc3Mgbm9uLW5lZ2F0aXZlIHBhZGRpbmcgdmFsdWVzIHRvIHBlcmZvcm0gYSBy
ZWN0LWJhc2VkIGhpdCB0ZXN0LgorICAgIEhpdFRlc3RSZXN1bHQoY29uc3QgSW50UG9pbnQmIGNl
bnRlclBvaW50LCB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcsIHVu
c2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nKTsKICAgICBIaXRUZXN0
UmVzdWx0KGNvbnN0IEhpdFRlc3RSZXN1bHQmKTsKICAgICB+SGl0VGVzdFJlc3VsdCgpOwogICAg
IEhpdFRlc3RSZXN1bHQmIG9wZXJhdG9yPShjb25zdCBIaXRUZXN0UmVzdWx0Jik7CkBAIC0xMDAs
OSArMTAwLDEyIEBAIHB1YmxpYzoKICAgICBib29sIGlzUmVjdEJhc2VkVGVzdCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNSZWN0QmFzZWQ7IH0KICAgICBJbnRSZWN0IHJlY3RGcm9tUG9pbnQoaW50IHgs
IGludCB5KSBjb25zdDsKICAgICBJbnRSZWN0IHJlY3RGcm9tUG9pbnQoY29uc3QgSW50UG9pbnQm
KSBjb25zdDsKLSAgICBJbnRTaXplIHBhZGRpbmcoKSBjb25zdCB7IHJldHVybiBtX3BhZGRpbmc7
IH0KLSAgICBpbnQgcGFkZGluZ1dpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9wYWRkaW5nLndpZHRo
KCk7IH0KLSAgICBpbnQgcGFkZGluZ0hlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFkZGluZy5o
ZWlnaHQoKTsgfQorICAgIHN0YXRpYyBJbnRSZWN0IHJlY3RGcm9tUG9pbnQoY29uc3QgSW50UG9p
bnQmLCB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcsIHVuc2lnbmVk
IGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nKTsKKyAgICBpbnQgdG9wUGFkZGlu
ZygpIGNvbnN0IHsgcmV0dXJuIG1fdG9wUGFkZGluZzsgfQorICAgIGludCByaWdodFBhZGRpbmco
KSBjb25zdCB7IHJldHVybiBtX3JpZ2h0UGFkZGluZzsgfQorICAgIGludCBib3R0b21QYWRkaW5n
KCkgY29uc3QgeyByZXR1cm4gbV9ib3R0b21QYWRkaW5nOyB9CisgICAgaW50IGxlZnRQYWRkaW5n
KCkgY29uc3QgeyByZXR1cm4gbV9sZWZ0UGFkZGluZzsgfQorCiAgICAgLy8gUmV0dXJucyB0cnVl
IGlmIGl0IGlzIHJlY3QtYmFzZWQgaGl0IHRlc3QgYW5kIG5lZWRzIHRvIGNvbnRpbnVlIHVudGls
IHRoZSByZWN0IGlzIGZ1bGx5CiAgICAgLy8gZW5jbG9zZWQgYnkgdGhlIGJvdW5kYXJpZXMgb2Yg
YSBub2RlLgogICAgIGJvb2wgYWRkTm9kZVRvUmVjdEJhc2VkVGVzdFJlc3VsdChOb2RlKiwgaW50
IHgsIGludCB5LCBjb25zdCBJbnRSZWN0JiByZWN0ID0gSW50UmVjdCgpKTsKQEAgLTEyNCwzNCAr
MTI3LDI2IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFNjcm9sbGJhcj4gbV9zY3JvbGxiYXI7CiAg
ICAgYm9vbCBtX2lzT3ZlcldpZGdldDsgLy8gUmV0dXJucyB0cnVlIGlmIHdlIGFyZSBvdmVyIGEg
d2lkZ2V0IChhbmQgbm90IGluIHRoZSBib3JkZXIvcGFkZGluZyBhcmVhIG9mIGEgUmVuZGVyV2lk
Z2V0IGZvciBleGFtcGxlKS4KICAgICBib29sIG1faXNSZWN0QmFzZWQ7Ci0gICAgSW50U2l6ZSBt
X3BhZGRpbmc7CisgICAgaW50IG1fdG9wUGFkZGluZzsKKyAgICBpbnQgbV9yaWdodFBhZGRpbmc7
CisgICAgaW50IG1fYm90dG9tUGFkZGluZzsKKyAgICBpbnQgbV9sZWZ0UGFkZGluZzsKICAgICBM
aXN0SGFzaFNldDxSZWZQdHI8Tm9kZT4gPiBtX3JlY3RCYXNlZFRlc3RSZXN1bHQ7CiB9OwogCiBp
bmxpbmUgSW50UmVjdCBIaXRUZXN0UmVzdWx0OjpyZWN0RnJvbVBvaW50KGludCB4LCBpbnQgeSkg
Y29uc3QKIHsKLSAgICByZXR1cm4gcmVjdEZyb21Qb2ludChJbnRQb2ludCh4LCB5KSk7CisgICAg
cmV0dXJuIHJlY3RGcm9tUG9pbnQoSW50UG9pbnQoeCwgeSksIG1fdG9wUGFkZGluZywgbV9yaWdo
dFBhZGRpbmcsIG1fYm90dG9tUGFkZGluZywgbV9sZWZ0UGFkZGluZyk7CiB9CiAKIC8vIEZvcm11
bGE6Ci0vLyB4ID0gcC54KCkgLSBwYWRkaW5nLndpZHRoKCkKLS8vIHkgPSBwLnkoKSAtIHBhZGRp
bmcuaGVpZ2h0KCkKLS8vIHdpZHRoID0gMiAqIHBhZGRpbmcud2lkdGgoKSArIDEKLS8vIGhlaWdo
dCA9IDIgKiBtX3BhZGRpbmcuaGVpZ2h0KCkgKyAxCisvLyB4ID0gcC54KCkgLSByaWdodFBhZGRp
bmcKKy8vIHkgPSBwLnkoKSAtIHRvcFBhZGRpbmcKKy8vIHdpZHRoID0gbGVmdFBhZGRpbmcgKyBy
aWdodFBhZGRpbmcgKyAxCisvLyBoZWlnaHQgPSB0b3BQYWRkaW5nICsgYm90dG9tUGFkZGluZyAr
IDEKIGlubGluZSBJbnRSZWN0IEhpdFRlc3RSZXN1bHQ6OnJlY3RGcm9tUG9pbnQoY29uc3QgSW50
UG9pbnQmIHBvaW50KSBjb25zdAogewotICAgIEludFBvaW50IHJlYWxQb2ludChwb2ludCk7Ci0g
ICAgSW50U2l6ZSByZWFsUGFkZGluZyhtX3BhZGRpbmcpOwotCi0gICAgLy8gUmVhbCBJbnRQb2lu
dCBmb3IgdGhlIHJlY3QuCi0gICAgcmVhbFBhZGRpbmcuY2xhbXBOZWdhdGl2ZVRvWmVybygpOwot
ICAgIHJlYWxQb2ludCAtPSByZWFsUGFkZGluZzsKLQotICAgIC8vIFJlYWwgSW50U2l6ZSBmb3Ig
dGhlIHJlY3QuCi0gICAgcmVhbFBhZGRpbmcuc2NhbGUoMik7Ci0gICAgcmVhbFBhZGRpbmcgKz0g
SW50U2l6ZSgxLCAxKTsKLQotICAgIHJldHVybiBJbnRSZWN0KHJlYWxQb2ludCwgcmVhbFBhZGRp
bmcpOworICAgIHJldHVybiByZWN0RnJvbVBvaW50KHBvaW50LCBtX3RvcFBhZGRpbmcsIG1fcmln
aHRQYWRkaW5nLCBtX2JvdHRvbVBhZGRpbmcsIG1fbGVmdFBhZGRpbmcpOwogfQogCiBTdHJpbmcg
ZGlzcGxheVN0cmluZyhjb25zdCBTdHJpbmcmLCBjb25zdCBOb2RlKik7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbWFnZS5jcHAKaW5kZXggMmJkNjBhMy4uYTIyMGNhMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklt
YWdlLmNwcApAQCAtMzU5LDcgKzM1OSw3IEBAIEhUTUxNYXBFbGVtZW50KiBSZW5kZXJJbWFnZTo6
aW1hZ2VNYXAoKSBjb25zdAogCiBib29sIFJlbmRlckltYWdlOjpub2RlQXRQb2ludChjb25zdCBI
aXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBpbnQgeCwgaW50
IHksIGludCB0eCwgaW50IHR5LCBIaXRUZXN0QWN0aW9uIGhpdFRlc3RBY3Rpb24pCiB7Ci0gICAg
SGl0VGVzdFJlc3VsdCB0ZW1wUmVzdWx0KHJlc3VsdC5wb2ludCgpLCByZXN1bHQucGFkZGluZygp
KTsKKyAgICBIaXRUZXN0UmVzdWx0IHRlbXBSZXN1bHQocmVzdWx0LnBvaW50KCksIHJlc3VsdC50
b3BQYWRkaW5nKCksIHJlc3VsdC5yaWdodFBhZGRpbmcoKSwgcmVzdWx0LmJvdHRvbVBhZGRpbmco
KSwgcmVzdWx0LmxlZnRQYWRkaW5nKCkpOwogICAgIGJvb2wgaW5zaWRlID0gUmVuZGVyUmVwbGFj
ZWQ6Om5vZGVBdFBvaW50KHJlcXVlc3QsIHRlbXBSZXN1bHQsIHgsIHksIHR4LCB0eSwgaGl0VGVz
dEFjdGlvbik7CiAKICAgICBpZiAodGVtcFJlc3VsdC5pbm5lck5vZGUoKSAmJiBub2RlKCkpIHsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCAxNGUyYWY4Li4xYjRiMWRhIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0yOTAxLDcgKzI5MDEsNyBAQCBSZW5kZXJMYXllciog
UmVuZGVyTGF5ZXI6OmhpdFRlc3RMYXllcihSZW5kZXJMYXllciogcm9vdExheWVyLCBSZW5kZXJM
YXllciogY29udAogICAgIC8vIE5leHQgd2Ugd2FudCB0byBzZWUgaWYgdGhlIG1vdXNlIHBvcyBp
cyBpbnNpZGUgdGhlIGNoaWxkIFJlbmRlck9iamVjdHMgb2YgdGhlIGxheWVyLgogICAgIGlmIChm
Z1JlY3QuaW50ZXJzZWN0cyhoaXRUZXN0QXJlYSkgJiYgaXNTZWxmUGFpbnRpbmdMYXllcigpKSB7
CiAgICAgICAgIC8vIEhpdCB0ZXN0IHdpdGggYSB0ZW1wb3JhcnkgSGl0VGVzdFJlc3VsdCwgYmVj
YXVzZSB3ZSBvbmx5IHdhbnQgdG8gY29tbWl0IHRvICdyZXN1bHQnIGlmIHdlIGtub3cgd2UncmUg
ZnJvbnRtb3N0LgotICAgICAgICBIaXRUZXN0UmVzdWx0IHRlbXBSZXN1bHQocmVzdWx0LnBvaW50
KCksIHJlc3VsdC5wYWRkaW5nKCkpOworICAgICAgICBIaXRUZXN0UmVzdWx0IHRlbXBSZXN1bHQo
cmVzdWx0LnBvaW50KCksIHJlc3VsdC50b3BQYWRkaW5nKCksIHJlc3VsdC5yaWdodFBhZGRpbmco
KSwgcmVzdWx0LmJvdHRvbVBhZGRpbmcoKSwgcmVzdWx0LmxlZnRQYWRkaW5nKCkpOwogICAgICAg
ICBpZiAoaGl0VGVzdENvbnRlbnRzKHJlcXVlc3QsIHRlbXBSZXN1bHQsIGxheWVyQm91bmRzLCBo
aXRUZXN0UG9pbnQsIEhpdFRlc3REZXNjZW5kYW50cykgJiYKICAgICAgICAgICAgIGlzSGl0Q2Fu
ZGlkYXRlKHRoaXMsIGZhbHNlLCB6T2Zmc2V0Rm9yQ29udGVudHNQdHIsIHVuZmxhdHRlbmVkVHJh
bnNmb3JtU3RhdGUuZ2V0KCkpKSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0LmlzUmVjdEJhc2Vk
VGVzdCgpKQpAQCAtMjkzMCw3ICsyOTMwLDcgQEAgUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjpo
aXRUZXN0TGF5ZXIoUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgUmVuZGVyTGF5ZXIqIGNvbnQKICAg
ICAgICAgcmV0dXJuIGNhbmRpZGF0ZUxheWVyOwogCiAgICAgaWYgKGJnUmVjdC5pbnRlcnNlY3Rz
KGhpdFRlc3RBcmVhKSAmJiBpc1NlbGZQYWludGluZ0xheWVyKCkpIHsKLSAgICAgICAgSGl0VGVz
dFJlc3VsdCB0ZW1wUmVzdWx0KHJlc3VsdC5wb2ludCgpLCByZXN1bHQucGFkZGluZygpKTsKKyAg
ICAgICAgSGl0VGVzdFJlc3VsdCB0ZW1wUmVzdWx0KHJlc3VsdC5wb2ludCgpLCByZXN1bHQudG9w
UGFkZGluZygpLCByZXN1bHQucmlnaHRQYWRkaW5nKCksIHJlc3VsdC5ib3R0b21QYWRkaW5nKCks
IHJlc3VsdC5sZWZ0UGFkZGluZygpKTsKICAgICAgICAgaWYgKGhpdFRlc3RDb250ZW50cyhyZXF1
ZXN0LCB0ZW1wUmVzdWx0LCBsYXllckJvdW5kcywgaGl0VGVzdFBvaW50LCBIaXRUZXN0U2VsZikg
JiYKICAgICAgICAgICAgIGlzSGl0Q2FuZGlkYXRlKHRoaXMsIGZhbHNlLCB6T2Zmc2V0Rm9yQ29u
dGVudHNQdHIsIHVuZmxhdHRlbmVkVHJhbnNmb3JtU3RhdGUuZ2V0KCkpKSB7CiAgICAgICAgICAg
ICBpZiAocmVzdWx0LmlzUmVjdEJhc2VkVGVzdCgpKQpAQCAtMjk4Nyw3ICsyOTg3LDcgQEAgUmVu
ZGVyTGF5ZXIqIFJlbmRlckxheWVyOjpoaXRUZXN0TGlzdChWZWN0b3I8UmVuZGVyTGF5ZXIqPiog
bGlzdCwgUmVuZGVyTGF5ZXIqIHIKICAgICBmb3IgKGludCBpID0gbGlzdC0+c2l6ZSgpIC0gMTsg
aSA+PSAwOyAtLWkpIHsKICAgICAgICAgUmVuZGVyTGF5ZXIqIGNoaWxkTGF5ZXIgPSBsaXN0LT5h
dChpKTsKICAgICAgICAgUmVuZGVyTGF5ZXIqIGhpdExheWVyID0gMDsKLSAgICAgICAgSGl0VGVz
dFJlc3VsdCB0ZW1wUmVzdWx0KHJlc3VsdC5wb2ludCgpLCByZXN1bHQucGFkZGluZygpKTsKKyAg
ICAgICAgSGl0VGVzdFJlc3VsdCB0ZW1wUmVzdWx0KHJlc3VsdC5wb2ludCgpLCByZXN1bHQudG9w
UGFkZGluZygpLCByZXN1bHQucmlnaHRQYWRkaW5nKCksIHJlc3VsdC5ib3R0b21QYWRkaW5nKCks
IHJlc3VsdC5sZWZ0UGFkZGluZygpKTsKICAgICAgICAgaWYgKGNoaWxkTGF5ZXItPmlzUGFnaW5h
dGVkKCkpCiAgICAgICAgICAgICBoaXRMYXllciA9IGhpdFRlc3RQYWdpbmF0ZWRDaGlsZExheWVy
KGNoaWxkTGF5ZXIsIHJvb3RMYXllciwgcmVxdWVzdCwgdGVtcFJlc3VsdCwgaGl0VGVzdFJlY3Qs
IGhpdFRlc3RQb2ludCwgdHJhbnNmb3JtU3RhdGUsIHpPZmZzZXRGb3JEZXNjZW5kYW50cyk7CiAg
ICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCb3hM
aXN0LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCb3hMaXN0LmNwcAppbmRleCA0
NWU2NmViLi43NjBkMmVhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5l
Qm94TGlzdC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJveExpc3QuY3Bw
CkBAIC0yNDYsMTYgKzI0NiwxNiBAQCBib29sIFJlbmRlckxpbmVCb3hMaXN0OjpoaXRUZXN0KFJl
bmRlckJveE1vZGVsT2JqZWN0KiByZW5kZXJlciwgY29uc3QgSGl0VGVzdFJlcQogICAgIC8vIGNv
bnRhaW4gdGhlIHBvaW50LiAgVGhpcyBpcyBhIHF1aWNrIHNob3J0LWNpcmN1aXQgdGhhdCB3ZSBj
YW4gdGFrZSB0byBhdm9pZCB3YWxraW5nIGFueSBsaW5lcy4KICAgICAvLyBGSVhNRTogVGhpcyBj
aGVjayBpcyBmbGF3ZWQgaW4gdGhlIGZvbGxvd2luZyBleHRyZW1lbHkgb2JzY3VyZSB3YXk6CiAg
ICAgLy8gaWYgc29tZSBsaW5lIGluIHRoZSBtaWRkbGUgaGFzIGEgaHVnZSBvdmVyZmxvdywgaXQg
bWlnaHQgYWN0dWFsbHkgZXh0ZW5kIGJlbG93IHRoZSBsYXN0IGxpbmUuCi0gICAgaWYgKHkgLSBy
ZXN1bHQucGFkZGluZ0hlaWdodCgpID49IHR5ICsgbGFzdExpbmVCb3goKS0+cm9vdCgpLT5ib3R0
b21WaXNpYmxlT3ZlcmZsb3coKQotICAgICB8fCB5ICsgcmVzdWx0LnBhZGRpbmdIZWlnaHQoKSA8
IHR5ICsgZmlyc3RMaW5lQm94KCktPnJvb3QoKS0+dG9wVmlzaWJsZU92ZXJmbG93KCkpCisgICAg
aWYgKHkgLSByZXN1bHQudG9wUGFkZGluZygpID49IHR5ICsgbGFzdExpbmVCb3goKS0+cm9vdCgp
LT5ib3R0b21WaXNpYmxlT3ZlcmZsb3coKQorICAgICB8fCB5ICsgcmVzdWx0LmJvdHRvbVBhZGRp
bmcoKSA8IHR5ICsgZmlyc3RMaW5lQm94KCktPnJvb3QoKS0+dG9wVmlzaWJsZU92ZXJmbG93KCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIFNlZSBpZiBvdXIgcm9vdCBsaW5lcyBj
b250YWluIHRoZSBwb2ludC4gIElmIHNvLCB0aGVuIHdlIGhpdCB0ZXN0CiAgICAgLy8gdGhlbSBm
dXJ0aGVyLiAgTm90ZSB0aGF0IGJveGVzIGNhbiBlYXNpbHkgb3ZlcmxhcCwgc28gd2UgY2FuJ3Qg
bWFrZSBhbnkgYXNzdW1wdGlvbnMKICAgICAvLyBiYXNlZCBvZmYgcG9zaXRpb25zIG9mIG91ciBm
aXJzdCBsaW5lIGJveCBvciBvdXIgbGFzdCBsaW5lIGJveC4KICAgICBmb3IgKElubGluZUZsb3dC
b3gqIGN1cnIgPSBsYXN0TGluZUJveCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+cHJldkxpbmVCb3go
KSkgewotICAgICAgICBpZiAoeSArIHJlc3VsdC5wYWRkaW5nSGVpZ2h0KCkgPj0gdHkgKyBjdXJy
LT5yb290KCktPnRvcFZpc2libGVPdmVyZmxvdygpCi0gICAgICAgICAmJiB5IC0gcmVzdWx0LnBh
ZGRpbmdIZWlnaHQoKSA8IHR5ICsgY3Vyci0+cm9vdCgpLT5ib3R0b21WaXNpYmxlT3ZlcmZsb3co
KSkgeworICAgICAgICBpZiAoeSArIHJlc3VsdC5ib3R0b21QYWRkaW5nKCkgPj0gdHkgKyBjdXJy
LT5yb290KCktPnRvcFZpc2libGVPdmVyZmxvdygpCisgICAgICAgICAmJiB5IC0gcmVzdWx0LnRv
cFBhZGRpbmcoKSA8IHR5ICsgY3Vyci0+cm9vdCgpLT5ib3R0b21WaXNpYmxlT3ZlcmZsb3coKSkg
ewogICAgICAgICAgICAgYm9vbCBpbnNpZGUgPSBjdXJyLT5ub2RlQXRQb2ludChyZXF1ZXN0LCBy
ZXN1bHQsIHgsIHksIHR4LCB0eSk7CiAgICAgICAgICAgICBpZiAoaW5zaWRlKSB7CiAgICAgICAg
ICAgICAgICAgcmVuZGVyZXItPnVwZGF0ZUhpdFRlc3RSZXN1bHQocmVzdWx0LCBJbnRQb2ludCh4
IC0gdHgsIHkgLSB0eSkpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0gYi9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCAxYTA0MzdhLi4xZmNhOGQx
IDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtNjA1Nyw3ICs2MDU3LDcgQEAgc3RhdGljIHZvaWQg
Z2xpYkNvbnRleHRJdGVyYXRpb25DYWxsYmFjayhDRlJ1bkxvb3BPYnNlcnZlclJlZiwgQ0ZSdW5M
b29wQWN0aXZpdHkKIAogQGltcGxlbWVudGF0aW9uIFdlYlZpZXcgKFdlYlZpZXdQcml2YXRlTm9k
ZXNGcm9tUmVjdCkKIAotLSAoSlNWYWx1ZVJlZilfbm9kZXNGcm9tUmVjdDooSlNDb250ZXh0UmVm
KWNvbnRleHQgZm9yRG9jdW1lbnQ6KEpTVmFsdWVSZWYpdmFsdWUgeDooaW50KXggIHk6KGludCl5
IGhQYWRkaW5nOih1bnNpZ25lZCloUGFkZGluZyB2UGFkZGluZzoodW5zaWduZWQpdlBhZGRpbmcg
aWdub3JlQ2xpcHBpbmc6KEJPT0wpaWdub3JlQ2xpcHBpbmcKKy0gKEpTVmFsdWVSZWYpX25vZGVz
RnJvbVJlY3Q6KEpTQ29udGV4dFJlZiljb250ZXh0IGZvckRvY3VtZW50OihKU1ZhbHVlUmVmKXZh
bHVlIHg6KGludCl4ICB5OihpbnQpeSB0b3A6KHVuc2lnbmVkKXRvcCByaWdodDoodW5zaWduZWQp
cmlnaHQgYm90dG9tOih1bnNpZ25lZClib3R0b20gbGVmdDoodW5zaWduZWQpbGVmdCBpZ25vcmVD
bGlwcGluZzooQk9PTClpZ25vcmVDbGlwcGluZwogewogICAgIEpTTG9jayBsb2NrKFNpbGVuY2VB
c3NlcnRpb25zT25seSk7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjb250ZXh0KTsKQEAg
LTYwNjgsNyArNjA2OCw3IEBAIHN0YXRpYyB2b2lkIGdsaWJDb250ZXh0SXRlcmF0aW9uQ2FsbGJh
Y2soQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYsIENGUnVuTG9vcEFjdGl2aXR5CiAgICAgICAgIHJldHVy
biBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKICAgICBKU0RvY3VtZW50KiBqc0RvY3Vt
ZW50ID0gc3RhdGljX2Nhc3Q8SlNEb2N1bWVudCo+KGFzT2JqZWN0KGpzVmFsdWUpKTsKICAgICBE
b2N1bWVudCogZG9jdW1lbnQgPSBqc0RvY3VtZW50LT5pbXBsKCk7Ci0gICAgUmVmUHRyPE5vZGVM
aXN0PiBub2RlcyA9IGRvY3VtZW50LT5ub2Rlc0Zyb21SZWN0KHgsIHksIGhQYWRkaW5nLCB2UGFk
ZGluZywgaWdub3JlQ2xpcHBpbmcpOworICAgIFJlZlB0cjxOb2RlTGlzdD4gbm9kZXMgPSBkb2N1
bWVudC0+bm9kZXNGcm9tUmVjdCh4LCB5LCB0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQsIGlnbm9y
ZUNsaXBwaW5nKTsKICAgICByZXR1cm4gdG9SZWYoZXhlYywgdG9KUyhleGVjLCBqc0RvY3VtZW50
LT5nbG9iYWxPYmplY3QoKSwgbm9kZXMuZ2V0KCkpKTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmggYi9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
d1ByaXZhdGUuaAppbmRleCA4NzNlOGUxLi43NDllZWIzIDEwMDY0NAotLS0gYS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAorKysgYi9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
d1ByaXZhdGUuaApAQCAtNjMxLDcgKzYzMSw3IEBAIENvdWxkIGJlIHdvcnRoIGFkZGluZyB0byB0
aGUgQVBJLgogQGVuZAogCiBAaW50ZXJmYWNlIFdlYlZpZXcgKFdlYlZpZXdQcml2YXRlTm9kZXNG
cm9tUmVjdCkKLS0gKEpTVmFsdWVSZWYpX25vZGVzRnJvbVJlY3Q6KEpTQ29udGV4dFJlZiljb250
ZXh0IGZvckRvY3VtZW50OihKU1ZhbHVlUmVmKXZhbHVlIHg6KGludCl4ICB5OihpbnQpeSBoUGFk
ZGluZzoodW5zaWduZWQpaFBhZGRpbmcgdlBhZGRpbmc6KHVuc2lnbmVkKXZQYWRkaW5nIGlnbm9y
ZUNsaXBwaW5nOihCT09MKWlnbm9yZUNsaXBwaW5nOworLSAoSlNWYWx1ZVJlZilfbm9kZXNGcm9t
UmVjdDooSlNDb250ZXh0UmVmKWNvbnRleHQgZm9yRG9jdW1lbnQ6KEpTVmFsdWVSZWYpdmFsdWUg
eDooaW50KXggIHk6KGludCl5IHRvcDoodW5zaWduZWQpdG9wIHJpZ2h0Oih1bnNpZ25lZClyaWdo
dCBib3R0b206KHVuc2lnbmVkKWJvdHRvbSBsZWZ0Oih1bnNpZ25lZClsZWZ0IGlnbm9yZUNsaXBw
aW5nOihCT09MKWlnbm9yZUNsaXBwaW5nOwogQGVuZAogCiBAaW50ZXJmYWNlIE5TT2JqZWN0IChX
ZWJGcmFtZUxvYWREZWxlZ2F0ZVByaXZhdGUpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXggNzMwZjVjNy4uZWU0NDMyNSAx
MDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xs
ZXIuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9s
bGVyLmNwcApAQCAtNTE1LDE4ICs1MTUsMjAgQEAgc3RhdGljIEpTVmFsdWVSZWYgY29tcHV0ZWRT
dHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQKIAog
c3RhdGljIEpTVmFsdWVSZWYgbm9kZXNGcm9tUmVjdENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250
ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90
IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYq
IGV4Y2VwdGlvbikKIHsKLSAgICBpZiAoYXJndW1lbnRDb3VudCAhPSA2KQorICAgIGlmIChhcmd1
bWVudENvdW50ICE9IDgpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250
ZXh0KTsKIAogICAgIGludCB4ID0gSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1sx
XSwgTlVMTCk7CiAgICAgaW50IHkgPSBKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRz
WzJdLCBOVUxMKTsKLSAgICBpbnQgaFBhZGRpbmcgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNW
YWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1szXSwgTlVMTCkpOwotICAgIGludCB2UGFk
ZGluZyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJn
dW1lbnRzWzRdLCBOVUxMKSk7Ci0gICAgYm9vbCBpZ25vcmVDbGlwcGluZyA9IEpTVmFsdWVUb0Jv
b2xlYW4oY29udGV4dCwgYXJndW1lbnRzWzVdKTsKKyAgICBpbnQgdG9wID0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbM10sIE5VTEwpKTsK
KyAgICBpbnQgcmlnaHQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNWYWx1ZVRvTnVtYmVyKGNv
bnRleHQsIGFyZ3VtZW50c1s0XSwgTlVMTCkpOworICAgIGludCBib3R0b20gPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1s1XSwgTlVMTCkp
OworICAgIGludCBsZWZ0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTVmFsdWVUb051bWJlcihj
b250ZXh0LCBhcmd1bWVudHNbNl0sIE5VTEwpKTsKKyAgICBib29sIGlnbm9yZUNsaXBwaW5nID0g
SlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBhcmd1bWVudHNbN10pOwogCiAgICAgLy8gSGFzIG1h
YyBpbXBsZW1lbnRhdGlvbi4KICAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9
IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRo
aXNPYmplY3QpKTsKLSAgICByZXR1cm4gY29udHJvbGxlci0+bm9kZXNGcm9tUmVjdChjb250ZXh0
LCBhcmd1bWVudHNbMF0sIHgsIHksIGhQYWRkaW5nLCB2UGFkZGluZywgaWdub3JlQ2xpcHBpbmcp
OworICAgIHJldHVybiBjb250cm9sbGVyLT5ub2Rlc0Zyb21SZWN0KGNvbnRleHQsIGFyZ3VtZW50
c1swXSwgeCwgeSwgdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0LCBpZ25vcmVDbGlwcGluZyk7CiB9
CiAKIHN0YXRpYyBKU1ZhbHVlUmVmIGxheWVyVHJlZUFzVGV4dENhbGxiYWNrKEpTQ29udGV4dFJl
ZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwg
c2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFs
dWVSZWYqIGV4Y2VwdGlvbikKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L0xheW91dFRlc3RDb250cm9sbGVyLmggYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5oCmluZGV4IDRkMjAzMDEuLjc1NWEyYjIgMTAwNjQ0Ci0tLSBhL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKKysrIGIvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaApAQCAtNjAsNyAr
NjAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0NvbW1hbmRFbmFibGVkKEpTU3RyaW5nUmVmIG5h
bWUpOwogICAgIHZvaWQga2VlcFdlYkhpc3RvcnkoKTsKICAgICBKU1ZhbHVlUmVmIGNvbXB1dGVk
U3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYpOwotICAg
IEpTVmFsdWVSZWYgbm9kZXNGcm9tUmVjdChKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYsIGludCB4
LCBpbnQgeSwgdW5zaWduZWQgaFBhZGRpbmcsIHVuc2lnbmVkIHZQYWRkaW5nLCBib29sIGlnbm9y
ZUNsaXBwaW5nKTsKKyAgICBKU1ZhbHVlUmVmIG5vZGVzRnJvbVJlY3QoSlNDb250ZXh0UmVmLCBK
U1ZhbHVlUmVmLCBpbnQgeCwgaW50IHksIHVuc2lnbmVkIHRvcCwgdW5zaWduZWQgcmlnaHQsIHVu
c2lnbmVkIGJvdHRvbSwgdW5zaWduZWQgbGVmdCwgYm9vbCBpZ25vcmVDbGlwcGluZyk7CiAgICAg
dm9pZCBub3RpZnlEb25lKCk7CiAgICAgaW50IG51bWJlck9mUGFnZXMoZmxvYXQgcGFnZVdpZHRo
SW5QaXhlbHMsIGZsb2F0IHBhZ2VIZWlnaHRJblBpeGVscyk7CiAgICAgdm9pZCBvdmVycmlkZVBy
ZWZlcmVuY2UoSlNTdHJpbmdSZWYga2V5LCBKU1N0cmluZ1JlZiB2YWx1ZSk7CmRpZmYgLS1naXQg
YS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsu
Y3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVy
R3RrLmNwcAppbmRleCAyNDZiYmI0Li5kODMxMDc2IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCisrKyBiL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKQEAg
LTEzNyw3ICsxMzcsNyBAQCBKU1ZhbHVlUmVmIExheW91dFRlc3RDb250cm9sbGVyOjpjb21wdXRl
ZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oSlNDb250ZXh0UmVmCiAgICAgcmV0dXJuIEpTVmFs
dWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCi1KU1ZhbHVlUmVmIExheW91dFRlc3RDb250
cm9sbGVyOjpub2Rlc0Zyb21SZWN0KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIHZh
bHVlLCBpbnQgLCBpbnQsIHVuc2lnbmVkLCB1bnNpZ25lZCwgYm9vbCkKK0pTVmFsdWVSZWYgTGF5
b3V0VGVzdENvbnRyb2xsZXI6Om5vZGVzRnJvbVJlY3QoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
VmFsdWVSZWYgdmFsdWUsIGludCB4LCBpbnQgeSwgdW5zaWduZWQgdG9wLCB1bnNpZ25lZCByaWdo
dCwgdW5zaWduZWQgYm90dG9tLCB1bnNpZ25lZCBsZWZ0LCBib29sIGlnbm9yZUNsaXBwaW5nKQog
ewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KICAgICByZXR1cm4gSlNWYWx1ZU1ha2VV
bmRlZmluZWQoY29udGV4dCk7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0gYi9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KaW5kZXggZDQ0MjNkMy4uZDJhNmY3
OSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RD
b250cm9sbGVyTWFjLm1tCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlv
dXRUZXN0Q29udHJvbGxlck1hYy5tbQpAQCAtMTk4LDkgKzE5OCw5IEBAIEpTVmFsdWVSZWYgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OmNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhKU0Nv
bnRleHRSZWYKICAgICByZXR1cm4gW1ttYWluRnJhbWUgd2ViVmlld10gX2NvbXB1dGVkU3R5bGVJ
bmNsdWRpbmdWaXNpdGVkSW5mbzpjb250ZXh0IGZvckVsZW1lbnQ6dmFsdWVdOwogfQogCi1KU1Zh
bHVlUmVmIExheW91dFRlc3RDb250cm9sbGVyOjpub2Rlc0Zyb21SZWN0KEpTQ29udGV4dFJlZiBj
b250ZXh0LCBKU1ZhbHVlUmVmIHZhbHVlLCBpbnQgeCwgaW50IHksIHVuc2lnbmVkIGhQYWRkaW5n
LCB1bnNpZ25lZCB2UGFkZGluZywgYm9vbCBpZ25vcmVDbGlwcGluZykKK0pTVmFsdWVSZWYgTGF5
b3V0VGVzdENvbnRyb2xsZXI6Om5vZGVzRnJvbVJlY3QoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
VmFsdWVSZWYgdmFsdWUsIGludCB4LCBpbnQgeSwgdW5zaWduZWQgdG9wLCB1bnNpZ25lZCByaWdo
dCwgdW5zaWduZWQgYm90dG9tLCB1bnNpZ25lZCBsZWZ0LCBib29sIGlnbm9yZUNsaXBwaW5nKQog
ewotICAgIHJldHVybiBbW21haW5GcmFtZSB3ZWJWaWV3XSBfbm9kZXNGcm9tUmVjdDpjb250ZXh0
IGZvckRvY3VtZW50OnZhbHVlIHg6eCB5OnkgaFBhZGRpbmc6aFBhZGRpbmcgdlBhZGRpbmc6dlBh
ZGRpbmcgaWdub3JlQ2xpcHBpbmc6aWdub3JlQ2xpcHBpbmddOworICAgIHJldHVybiBbW21haW5G
cmFtZSB3ZWJWaWV3XSBfbm9kZXNGcm9tUmVjdDpjb250ZXh0IGZvckRvY3VtZW50OnZhbHVlIHg6
eCB5OnkgdG9wOnRvcCByaWdodDpyaWdodCBib3R0b206Ym90dG9tIGxlZnQ6bGVmdCBpZ25vcmVD
bGlwcGluZzppZ25vcmVDbGlwcGluZ107CiB9CiAKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6bGF5ZXJUcmVlQXNUZXh0KCkgY29uc3QKZGlmZiAtLWdpdCBh
L1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5j
cHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJX
aW4uY3BwCmluZGV4IDA3YjEwZmMuLjZkZDYwOWMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKKysrIGIvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcApAQCAt
MTc5LDcgKzE3OSw3IEBAIEpTVmFsdWVSZWYgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNvbXB1dGVk
U3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhKU0NvbnRleHRSZWYKICAgICByZXR1cm4gSlNWYWx1
ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKLUpTVmFsdWVSZWYgTGF5b3V0VGVzdENvbnRy
b2xsZXI6Om5vZGVzRnJvbVJlY3QoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgdmFs
dWUsIGludCAsIGludCwgdW5zaWduZWQsIHVuc2lnbmVkLCBib29sKQorSlNWYWx1ZVJlZiBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6bm9kZXNGcm9tUmVjdChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNW
YWx1ZVJlZiB2YWx1ZSwgaW50IHgsIGludCB5LCB1bnNpZ25lZCB0b3AsIHVuc2lnbmVkIHJpZ2h0
LCB1bnNpZ25lZCBib3R0b20sIHVuc2lnbmVkIGxlZnQsIGJvb2wgaWdub3JlQ2xpcHBpbmcpCiB7
CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVu
ZGVmaW5lZChjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvd3gvTGF5b3V0VGVzdENvbnRyb2xsZXJXeC5jcHAKaW5kZXggNmZhMzk2YS4uNWZiYTFjZiAx
MDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVzdENvbnRy
b2xsZXJXeC5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvTGF5b3V0VGVz
dENvbnRyb2xsZXJXeC5jcHAKQEAgLTQ4Niw3ICs0ODYsNyBAQCBKU1ZhbHVlUmVmIExheW91dFRl
c3RDb250cm9sbGVyOjpjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oSlNDb250ZXh0
UmVmLAogICAgIHJldHVybiAwOwogfQogCi1KU1ZhbHVlUmVmIExheW91dFRlc3RDb250cm9sbGVy
Ojpub2Rlc0Zyb21SZWN0KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIHZhbHVlLCBp
bnQgLCBpbnQsIHVuc2lnbmVkLCB1bnNpZ25lZCwgYm9vbCkKK0pTVmFsdWVSZWYgTGF5b3V0VGVz
dENvbnRyb2xsZXI6Om5vZGVzRnJvbVJlY3QoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVS
ZWYgdmFsdWUsIGludCB4LCBpbnQgeSwgdW5zaWduZWQgdG9wLCB1bnNpZ25lZCByaWdodCwgdW5z
aWduZWQgYm90dG9tLCB1bnNpZ25lZCBsZWZ0LCBib29sIGlnbm9yZUNsaXBwaW5nKQogewogICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KICAgICByZXR1cm4gMDsKLS0gCjEuNi40LjIKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>