<?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>36463</bug_id>
          
          <creation_ts>2010-03-22 15:42:45 -0700</creation_ts>
          <short_desc>Spatial Navigation: make it work with focusable elements in overflow content</short_desc>
          <delta_ts>2011-04-19 05:15:29 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>CLOSED</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>18662</dependson>
    
    <dependson>36168</dependson>
    
    <dependson>36773</dependson>
    
    <dependson>37461</dependson>
    
    <dependson>37802</dependson>
    
    <dependson>37803</dependson>
          <blocked>38590</blocked>
    
    <blocked>39195</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Antonio Gomes">tonikitoo</reporter>
          <assigned_to name="Antonio Gomes">tonikitoo</assigned_to>
          <cc>cjerdonek</cc>
    
    <cc>hausmann</cc>
    
    <cc>kenneth</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>202805</commentid>
    <comment_count>0</comment_count>
      <attachid>51364</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-03-22 15:42:45 -0700</bug_when>
    <thetext>Created attachment 51364
testcase

The attached testcase has a overflow&apos;ed content (a scrollable &lt;div&gt; for instance) with some focusable offscreen content in it.

It is currently not supported by Spatial Navigation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205620</commentid>
    <comment_count>1</comment_count>
      <attachid>51954</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-03-29 13:10:04 -0700</bug_when>
    <thetext>Created attachment 51954
WIP - make scrollable divs to work.

Not ready for review yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211709</commentid>
    <comment_count>2</comment_count>
      <attachid>53183</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-04-12 13:20:37 -0700</bug_when>
    <thetext>Created attachment 53183
patch v1

I will request review as soon as patch in bug 37461 is landed, otherwise, commit bots will acuse build errors</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213887</commentid>
    <comment_count>3</comment_count>
      <attachid>53652</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-04-18 20:22:00 -0700</bug_when>
    <thetext>Created attachment 53652
patch v2

patch v2 is not yet to be reviewed, but is totally functional.

v3 will bring it simpler as well as with some further improvement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214058</commentid>
    <comment_count>4</comment_count>
      <attachid>53683</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-04-19 09:19:37 -0700</bug_when>
    <thetext>Created attachment 53683
patch v3

In order to make reviewing easier, I filed bug 37802 and bug 37803 and splitted up patch v2, resulting in a smallar patch.

I am not yet requesting review, but will as soon as the blocks mentioned earlier get FIXED.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>225851</commentid>
    <comment_count>5</comment_count>
      <attachid>56073</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-05-14 08:45:48 -0700</bug_when>
    <thetext>Created attachment 56073
patch v4 - patch ready for review

Patch addresses the problem that current Spatial Navigation does not properly traverse scrollable contents, including scrollable div&apos;s. For that, a new class member called scrollableEnclosingBox was introduced to FocusCandidate class to keep the track of current scrollable box Node wrapping a FocusCandidate. The common case is obviously that there is no scrollable container wrapping it.
    
To make use of enclosingScrollableBox of FocusCandidate, the DOM traversal algorithm routine  (FocusController::findNextFocusableInDirection) was changed as follows: At the time it encounters a scrollable Node (read for now a scrollable div), each focusable node that is inner of it keeps track of the scrollable node. By the time a sibling of the scrollable Node in case is encountered, there is not need to track this reference any more, and the traverse continues ...
    
updateFocusCandiditeIfCloser logic was also adapted to fit the need of the newly introduced enclosingScrollableBox class member, getting simpler and more easily maintainable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226590</commentid>
    <comment_count>6</comment_count>
      <attachid>56073</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-05-16 19:28:53 -0700</bug_when>
    <thetext>Comment on attachment 56073
patch v4 - patch ready for review

WebCore/page/FocusController.cpp:398
 +          // sameContainerAsCandidate and sameContainerAsClosest are mutually excluvive.
Typo: &quot;excluvive&quot;

WebCore/page/FocusController.cpp:405
 +          } else if (sameContainerAsClosest) {
Don&apos;t use &apos;else&apos; after a return.

WebCore/page/FocusController.cpp:409
 +          } else { // ### !sameContainerAsCandidate &amp;&amp; !sameContainerAsClosest
Ditto

WebCore/page/FocusController.cpp:449
 +          } else if (candidate-&gt;hasTagName(divTag) &amp;&amp; isScrollableContainerNode(candidate)) {
It&apos;s not correct to assume that only divs can have overflow: scroll. Any block element can. It would be more appropriate to check the style for overflow.



r- for assuming that only divs can have overflow:scroll.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227444</commentid>
    <comment_count>7</comment_count>
      <attachid>56402</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-05-18 12:52:14 -0700</bug_when>
    <thetext>Created attachment 56402
patch v5

Fixed what Simon pointed out: Algorithm is working not only for scrollable &lt;div&gt;, but for any scrollable block element that is different than #document and has child nodes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227800</commentid>
    <comment_count>8</comment_count>
      <attachid>56483</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-05-19 06:44:03 -0700</bug_when>
    <thetext>Created attachment 56483
patch v5.1

Patch is the same as patch v5, but fixed a typo in the ChangeLog.

Summary:
- Addressed Simon&apos;s requests by extending support for travesing any scrollable block elements that has at least one child node and is not a document node.
- Patch basically handle scrollable block elements in the same way {i}frame are handle. Internal traversal has precedence over elements outside it.
- Patch refactories updateFocusCandidateIfCloser to work with the newly introduced enclosingScrollableBox class member of FocusCandidate.
- As a real world testcase: patch makes pages like maps.google.com useful</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229014</commentid>
    <comment_count>9</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-05-21 11:21:35 -0700</bug_when>
    <thetext>Why all these newlines in the tests?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229252</commentid>
    <comment_count>10</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-05-22 04:56:54 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Why all these newlines in the tests?

(In reply to comment #9)
&gt; Why all these newlines in the tests?

+It has a visible link_2.
+
+
+
+
+
+
+
+... and an overflowed link like link_3.

In this case, for example, there is a div, and &quot;It has visible link_2&quot; is in the clipped overflow part of it, while &quot;and and overflowed link like link_3&quot; is overflowed.

that said, the &quot;newlines&quot; seems to be the way empty content inside the div is represented by DRT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229289</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-05-22 11:01:20 -0700</bug_when>
    <thetext>FYI, these patches aren&apos;t applying because the ChangeLog portions of the patch have more than 3 lines of trailing context:

&gt; diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
&gt; index 84d49ec..35111da 100644
&gt; --- a/WebCore/ChangeLog
&gt; +++ b/WebCore/ChangeLog
&gt; @@ -1,8 +1,46 @@
&gt; +2010-05-14  Antonio Gomes  &lt;tonikitoo@webkit.org&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Spatial Navigation: make it work with focusable elements in overflow content
&gt; &lt;snip!&gt;
&gt; +        (WebCore::FocusCandidate::FocusCandidate):
&gt; +        (WebCore::FocusCandidate::isInScrollableContainer):
&gt; +
&gt;  2010-05-18  Chris Jerdonek  &lt;cjerdonek@webkit.org&gt;
&gt;  
&gt;          Reviewed by Darin Adler.
&gt;  
&gt;          Refactored FrameLoader::isDocumentSandboxed() from a private member function
&gt;          to a static, non-member, non-friend function.
&gt;  
&gt;          https://bugs.webkit.org/show_bug.cgi?id=39157
&gt; diff --git a/WebCore/page/FocusController.cpp b/WebCore/page/FocusController.cpp
&gt; index 08219a6..9bdee79 100644
&gt; --- a/WebCore/page/FocusController.cpp
&gt; +++ b/WebCore/page/FocusController.cpp
&gt; @@ -337,113 +337,169 @@ bool FocusController::advanceFocusDirectionally(FocusDirection direction, Keyboa
&gt;      Element* element = static_cast&lt;Element*&gt;(node);

IIRC, the ChangeLog diffs are applied with &quot;fuzz=3&quot; to allow the patch to apply (and be inserted at the top) in the frequent case that new ChangeLogs are added to the file between the time you generate the diff and the time the patch is applied using svn-apply.

Do you know why your diffs have more than 3 lines of context?  People normally have 3.  Are you invoking git diff with special parameters?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229313</commentid>
    <comment_count>12</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-05-22 13:34:42 -0700</bug_when>
    <thetext>
&gt; Do you know why your diffs have more than 3 lines of context?  People normally have 3.  Are you invoking git diff with special parameters?

as I said on the email, I am using &quot;git format-patch -1 COMMIT_HASH -U8&quot; to generate my patches, so 8 lines of context.

I personally think that 3 lines of context is Ok for changeLogs, but not code, specially in less simple patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229317</commentid>
    <comment_count>13</comment_count>
      <attachid>56483</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-05-22 13:54:07 -0700</bug_when>
    <thetext>Comment on attachment 56483
patch v5.1

Not must a review of the actual code, but there goes my comments.

&gt; Patch addresses the problem that Spatial Navigation currently does not properly
&gt; traverse scrollable contents, including scrollable div&apos;s. For that to work, a new
&gt; class member called scrollableEnclosingBox was introduced to FocusCandidate class
&gt; to keep the track of current scrollable box Node wrapping a FocusCandidate. To make
&gt; use of enclosingScrollableBox of FocusCandidate, the DOM traversal algorithm routine
&gt; (FocusController::findNextFocusableInDirection) was changed as follows: At the
&gt; time it encounters a scrollable Node, each focusable node that is inner of it keeps
&gt; track of the container reference. By the time a sibling of the scrollable Node in case
&gt; is encountered, there is not need to track this reference any more, and the traversal
&gt; algorithm continues normally.

This is a bit hard reading; consider adding a few newlines where it logically makes sense.


&gt; +    This test ensures the content overflow traversal correctness of Spatial Navigation

No need to use capitals for Spatial Navigation.

&gt; +    algorithm: focusable elements in an scrollable containers (e.g. &lt;div&gt;) should be
&gt; +    accessible, including offscreen content.

That doesn&apos;t sounds like an algorithm to me.

&gt; +
&gt; +    * Pre-conditions:
&gt; +    1) DRT support for SNav enable/disable.

Just write out spatial navigation.


&gt; -// FIXME: Make this method more modular, and simpler to understand and maintain.
&gt; -static void updateFocusCandidateIfCloser(Node* focusedNode, const FocusCandidate&amp; candidate, FocusCandidate&amp; closest)
&gt; +static void updateFocusCandidateInTheSameContainer(const FocusCandidate&amp; candidate, FocusCandidate&amp; closest)

I would leave out the The.


&gt; +        // ### !sameContainerAsCandidate &amp;&amp; !sameContainerAsClosest

### what does that means? is that a FIXME: ?


&gt;  void FocusController::deepFindFocusableNodeInDirection(Node* container, Node* focusedNode,
&gt;                                                         FocusDirection direction, KeyboardEvent* event,
&gt;                                                         FocusCandidate&amp; closestFocusCandidate)

Do not add newlines in the function definition.



&gt; +    if (RenderObject* renderer = node-&gt;renderer())
&gt; +        return (renderer-&gt;isBox() &amp;&amp; toRenderBox(renderer)-&gt;canBeScrolledAndHasScrollableArea()
&gt; +             &amp;&amp; node-&gt;hasChildNodes() &amp;&amp; !node-&gt;isDocumentNode());

Code style issue, you will need braces here: the return spans two real lines.

&gt; +    bool isInScrollableContainer() const { return node &amp;&amp; enclosingScrollableBox; }

Please check if other &quot;isIn&quot; methods exist, or they whether they just use &quot;in&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229722</commentid>
    <comment_count>14</comment_count>
      <attachid>56880</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-05-24 06:36:58 -0700</bug_when>
    <thetext>Created attachment 56880
patch v5.2

(In reply to comment #13)
&gt; (From update of attachment 56483 [details])
&gt; Not must a review of the actual code, but there goes my comments.

Thank you for looking. Comments addressed.

&gt; &gt; +        // ### !sameContainerAsCandidate &amp;&amp; !sameContainerAsClosest
&gt; 
&gt; ### what does that means? is that a FIXME: ?

It means more like a NOTE: than a FIXME: . see other uses here http://pastebin.com/BSJrtURx

&gt; Please check if other &quot;isIn&quot; methods exist, or they whether they just use &quot;in&quot;

only &quot;in&quot; is generally used. Changed accordingly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229724</commentid>
    <comment_count>15</comment_count>
      <attachid>56882</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-05-24 06:47:09 -0700</bug_when>
    <thetext>Created attachment 56882
patch v5.3

... this time uploaded the right patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235540</commentid>
    <comment_count>16</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-06-08 14:51:51 -0700</bug_when>
    <thetext>Ping review?

Patch is waiting for weeks, and blocks bug 38590 and bug 39195, both already with patches, but waiting for this one to land.

These three are likely the last three spatial navigation patches I want to land before QtWebKit2.0 (and qt 4.7) release.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237800</commentid>
    <comment_count>17</comment_count>
      <attachid>58640</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-06-14 06:53:09 -0700</bug_when>
    <thetext>Created attachment 58640
patch v5.4 - same as patch v5.3 but rebased against tot and applicable by ews bots</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237802</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-14 06:58:00 -0700</bug_when>
    <thetext>Attachment 58640 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/page/FocusController.cpp:379:  An else statement can be removed when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Total errors found: 1 in 9 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>237808</commentid>
    <comment_count>19</comment_count>
      <attachid>58644</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-06-14 07:18:42 -0700</bug_when>
    <thetext>Created attachment 58644
(committed in r61134, reviewed by smfr and kenneth) patch v5.4 - same as patch v5.4 but fixed style bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237885</commentid>
    <comment_count>20</comment_count>
      <attachid>58644</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-06-14 10:11:44 -0700</bug_when>
    <thetext>Comment on attachment 58644
(committed in r61134, reviewed by smfr and kenneth) patch v5.4 - same as patch v5.4 but fixed style bug



&gt; +    bool sameContainer;
&gt; +    if (candidate.document() != closest.document())
&gt; +        sameContainer = false;
&gt; +    else
&gt; +        sameContainer = candidate.enclosingScrollableBox == closest.enclosingScrollableBox;

This would be clearer as
  bool sameContainer == candidate.document() == closest.document() &amp;&amp; candidate.enclosingScrollableBox == closest.enclosingScrollableBox;

&gt; +    // ### !sameContainerAsCandidate &amp;&amp; !sameContainerAsClosest

Odd comment style; please don&apos;t use ####

&gt; +            // 1) If candidateParent is not null, and it holds the distance and alignment data of the
&gt; +            // parent container element itself.
&gt; +            if (!candidateParent.isNull()) {
&gt; +                currentFocusCandidate.parentAlignment = candidateParent.alignment;
&gt; +                currentFocusCandidate.parentDistance = candidateParent.distance;
&gt; +                currentFocusCandidate.enclosingScrollableBox = candidateParent.node;
&gt; +
&gt; +            // 2) Parent of outer is either:
&gt; +            // * &lt;frame&gt; or &lt;iframe&gt;;
&gt; +            // * or any other scrollable block element.
&gt; +            } else if (!isInRootDocument(outer)) {
&gt; +                if (Document* document = static_cast&lt;Document*&gt;(outer-&gt;parent()))
&gt; +                    currentFocusCandidate.enclosingScrollableBox = static_cast&lt;Node*&gt;(document-&gt;ownerElement());
&gt; +

Put the comments inside the relevant braces. This style is confusing.

r=me with those comments addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237976</commentid>
    <comment_count>21</comment_count>
      <attachid>58644</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-06-14 12:14:43 -0700</bug_when>
    <thetext>Comment on attachment 58644
(committed in r61134, reviewed by smfr and kenneth) patch v5.4 - same as patch v5.4 but fixed style bug

Clearing flags on attachment: 58644

Committed r61134: &lt;http://trac.webkit.org/changeset/61134&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237977</commentid>
    <comment_count>22</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-06-14 12:15:28 -0700</bug_when>
    <thetext>&gt; r=me with those comments addressed.

fixed before landing. thank you</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238290</commentid>
    <comment_count>23</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-06-15 01:20:35 -0700</bug_when>
    <thetext>Antonio, the patch doesn&apos;t apply against the qtwebkit-2.0 branch. Could you help resolve the conflicts? Is there another patch missing maybe?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238366</commentid>
    <comment_count>24</comment_count>
      <attachid>58773</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-06-15 07:01:20 -0700</bug_when>
    <thetext>Created attachment 58773
patch v5.4 that applies against qtwebkit-2.0 branch

(In reply to comment #23)
&gt; Antonio, the patch doesn&apos;t apply against the qtwebkit-2.0 branch. Could you help resolve the conflicts? Is there another patch missing maybe?

patch for qtwebkit-2.0 branch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238368</commentid>
    <comment_count>25</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-06-15 07:04:17 -0700</bug_when>
    <thetext>Revision r61134 cherry-picked into qtwebkit-2.0 with commit 1e7918b7e0a6e32b4f4cf63dea80e5a5f002561b</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>51364</attachid>
            <date>2010-03-22 15:42:45 -0700</date>
            <delta_ts>2010-03-22 15:42:45 -0700</delta_ts>
            <desc>testcase</desc>
            <filename>div.html</filename>
            <type>text/html</type>
            <size>520</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">PGh0bWw+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CiAgZGl2LnNjcm9sbCB7CiAgICBoZWlnaHQ6
IDIwMHB4OwogICAgd2lkdGg6IDMwMHB4OwogICAgb3ZlcmZsb3c6IGF1dG87CiAgICBib3JkZXI6
IDFweCBzb2xpZCAjNjY2OwogICAgYmFja2dyb3VuZC1jb2xvcjogI2NjYzsKICAgIHBhZGRpbmc6
IDhweDsKICB9Cjwvc3R5bGU+Cjxib2R5PgogIDxkaXYgY2xhc3M9InNjcm9sbCI+CiAgICA8cD5U
aGlzIGlzIGEgc2Nyb2xsYWJsZSBESVYgY3JlYXRlZCB3aXRoIHRoZSBDU1MgcHJvcGVydHkgb3Zl
cmZsb3cuPC9wPgogICAgPHA+SXQgaGFzIGEgdmlzaWJsZSA8YSBocmVmPSJhIj5saW5rPC9hPi48
L3A+CiAgICA8YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+CiAgICA8cD4uLi4gYW5kIGFuIG92
ZXJmbG93IGxpbmsgbGlrZSA8YSBocmVmPSJhIj50aGlzPC9hPi48L3A+CiAgPC9kaXY+CgogIDxw
PkFuZCB0aGlzIGlzIGEgbm9ybWFsIDxhIGhyZWY9ImEiPmxpbms8L2E+LjwvcD4KPC9ib2R5Pgo8
L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51954</attachid>
            <date>2010-03-29 13:10:04 -0700</date>
            <delta_ts>2010-04-12 13:20:37 -0700</delta_ts>
            <desc>WIP - make scrollable divs to work.</desc>
            <filename>0001-scrollable-DIVs.patch</filename>
            <type>text/plain</type>
            <size>11541</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSA4YmQ3YWFjYTk1MjgyMjQ3MDNmODY2ZGNiMzk5NmQ5YWU0YjRiODViIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4K
RGF0ZTogTW9uLCAyOSBNYXIgMjAxMCAxMjowNTozMyAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIHNj
cm9sbGFibGUgRElWcwoKLS0tCiAuLi4vc25hdi1jb250ZW50LW92ZXJmbG93LWV4cGVjdGVkLnR4
dCAgICAgICAgICAgICB8ICAgMjcgKysrKysKIC4uLi9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1j
b250ZW50LW92ZXJmbG93Lmh0bWwgIHwgIDEyMCArKysrKysrKysrKysrKysrKysrKwogV2ViQ29y
ZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAgICAgICAgICAgICAgICAgICAgfCAgIDQ5ICsrKysr
KystLQogV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcCAgICAgICAgICAgICAgICAg
fCAgICA1ICsKIFdlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5oICAgICAgICAgICAgICAg
ICAgIHwgICAgMyArCiA1IGZpbGVzIGNoYW5nZWQsIDE5NSBpbnNlcnRpb25zKCspLCA5IGRlbGV0
aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NwYXRp
YWwtbmF2aWdhdGlvbi9zbmF2LWNvbnRlbnQtb3ZlcmZsb3ctZXhwZWN0ZWQudHh0CiBjcmVhdGUg
bW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3Nu
YXYtY29udGVudC1vdmVyZmxvdy5odG1sCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtY29udGVudC1vdmVyZmxvdy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1jb250
ZW50LW92ZXJmbG93LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi41YzczNWM0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
c3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtY29udGVudC1vdmVyZmxvdy1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwyNyBAQAorVGhhdCBpcyBpcyBhIG5vcm1hbCBsaW5rXzEuCisKK0JlbG93IGlzIGEg
c2Nyb2xsYWJsZSBEaXYgY3JlYXRlZCB3aXRoIHRoZSBDU1MgcHJvcGVydHkgb3ZlcmZsb3cuCisK
K0l0IGhhcyBhIHZpc2libGUgbGlua18yLgorCisKKworCisKKworCisKKworCisKKy4uLiBhbmQg
YW4gb3ZlcmZsb3dlZCBsaW5rIGxpa2UgdGhpcy4KKworQW5kIHRoaXMgaXMgYW5vdGhlciBub3Jt
YWwgbGlua18zLgorCitQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCJp
ZCIpIGlzICIxIgorUEFTUyBkb2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgiaWQi
KSBpcyAiMiIKK1BBU1MgZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoImlkIikg
aXMgIjMiCitQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCJpZCIpIGlz
ICIyIgorUEFTUyBkb2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAi
MSIKK1BBU1MgZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoImlkIikgaXMgInN0
YXJ0IgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmln
YXRpb24vc25hdi1jb250ZW50LW92ZXJmbG93Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1jb250ZW50LW92ZXJmbG93Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzRiNzI0NAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWNvbnRlbnQtb3Zl
cmZsb3cuaHRtbApAQCAtMCwwICsxLDEyMCBAQAorPGh0bWw+CisgIDwhLS0KKyAgICBUaGlzIHRl
c3QgZW5zdXJlcyB0aGUgY29udGVudCBvdmVyZmxvdyB0cmF2ZXJzYWwgY29ycmVjdG5lc3Mgb2Yg
U3BhdGlhbCBOYXZpZ2F0aW9uCisgICAgYWxnb3JpdGhtOiBmb2N1c2FibGUgZWxlbWVudHMgaW4g
YW4gc2Nyb2xsYWJsZSBjb250YWluZXJzIChlLmcuIDxkaXY+KSBzaG91bGQgYmUKKyAgICBhY2Nl
c3NpYmxlLCBpbmNsdWRpbmcgb2Zmc2NyZWVuIGNvbnRlbnQuCisKKyAgICAqIFByZS1jb25kaXRp
b25zOgorICAgIDEpIERSVCBzdXBwb3J0IGZvciBTTmF2IGVuYWJsZS9kaXNhYmxlLgorCisgICAg
KiBOYXZpZ2F0aW9uIHN0ZXBzOgorICAgIDEpIExvYWRzIHRoaXMgcGFnZSwgZm9jdXMgZ29lcyB0
byAic3RhcnQiIGF1dG9tYXRpY2FsbHkuCisgICAgMikgTW92ZSBmb2N1cyBkb3duIHRvIHRoZSB2
aXNpYmxlIGZvY3VzYWJsZSBlbGVtZW50IGluCisgICAgICAgc2Nyb2xsYWJsZSBkaXYuCisgICAg
MykgVHJhdmVyc2UgdGhlIHBhZ2UgdGhyb3VnaCBvdGhlciBmb2N1c2FibGUgZWxlbWVudHMgZG93
biB0aGUgcGFnZS4KKyAgICAgICBhbmQgdGhlbiBiYWNrIHVwLgorCisgICAgKiBFeHBlY3RlZCBy
ZXN1bHRzOiBBbGwgZm9jdXNhYmxlIGVsZW1lbnQgaW4gc2Nyb2xsYWJsZSBjb250ZW50LCBpbmNs
dWRpbmcKKyAgICBvZmZzY3JlZW4gb25lcywgc2hvdWxkIGJlIGFjY2Vzc2libGUgdmlhIFNOYXYu
IC0tPgorICA8aGVhZD4KKyAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgICAgZGl2LnNj
cm9sbCB7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAg
ICAgICAgb3ZlcmZsb3c6IGF1dG87CisgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICM2NjY7Cisg
ICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNjY2M7CisgICAgICAgIHBhZGRpbmc6IDhweDsKKyAg
ICAgIH0KKyAgICA8L3N0eWxlPgorCisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9z
cGF0aWFsLW5hdmlnYXRpb24tdXRpbHMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0i
YXBwbGljYXRpb24vamF2YXNjcmlwdCI+CisKKyAgICB2YXIgcmVzdWx0TWFwMSA9IFsKKyAgICAg
IFsiRG93biIsICIxIl0sCisgICAgICBbIiIsICIiXQorICAgIF07CisKKyAgICB2YXIgcmVzdWx0
TWFwMiA9IFsKKyAgICAgIFsiRG93biIsICIyIl0sCisgICAgICBbIkRvd24iLCAiMyJdLAorICAg
ICAgWyJVcCIsICIyIl0sCisgICAgICBbIiIsICIiXQorICAgIF07CisKKyAgICB2YXIgcmVzdWx0
TWFwMyA9IFsKKyAgICAgIFsiVXAiLCAiMSJdLAorICAgICAgWyJVcCIsICJzdGFydCJdLAorICAg
ICAgWyJET05FIiwgIkRPTkUiXQorICAgIF0KKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKKyAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZCh0cnVl
KTsKKyAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0
VGFiVG9MaW5rc1ByZWZlcmVuY2VLZXkiLCAxKTsKKyAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBydW5UZXN0KCkKKyAgICB7
CisgICAgICAvLyBzdGFydGluZyB0aGUgdGVzdCBpdHNlbGY6IGdldCB0byBhIGtub3duIHBsYWNl
LgorICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0YXJ0IikuZm9jdXMoKTsKKworICAg
ICAgc2V0VGltZW91dChzdGVwMSwgMCk7CisgICAgICBzZXRUaW1lb3V0KHN0ZXAyLCA1MCk7Cisg
ICAgICBzZXRUaW1lb3V0KHN0ZXAzLCAxNTApOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXAx
KCkKKyAgICB7CisgICAgICAvLyBBY3Rpb25zIGluICdyZXN1bHRNYXAxJyBzaG91bGQga2VlcCB0
aGUgZm9jdXMgaW4gdGhlIGN1cnJlbnRseQorICAgICAgLy8gZm9jdXNlZCBlbGVtZW50ICgnc3Rh
cnQnKSBvbmNlIHRoZSBiZXN0IGNhbmRpZGF0ZSAoJ2VuZCcpIGlzIG5vdAorICAgICAgLy8gdmlz
aWJsZSBpbiBjdXJyZW50IHZpZXdwb3J0LgorICAgICAgaW5pdFRlc3QocmVzdWx0TWFwMSk7Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDIoKQorICAgIHsKKyAgICAgIC8vIFRoZW4gaXQgc2Ny
b2xscyBkb3duIHRvIHRoZSBlbmQgb2YgdGhlIGRpdiAuLi4KKyAgICAgIGlmICh3aW5kb3cuZXZl
bnRTZW5kZXIpCisgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oImVuZCIpOworCisgICAgICAv
LyBBbmQgJ3Jlc3VsdE1hcDInIHJlLXRyaWVzIHRvIG1vdmUgZm9jdXMgZG93bi4KKyAgICAgIGlu
aXRUZXN0KHJlc3VsdE1hcDIpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXAzKCkKKyAgICB7
CisgICAgICAvLyBUaGVuIGl0IHNjcm9sbHMgYmFjayB1cCB0aGUgZGl2IC4uLgorICAgICAgaWYg
KHdpbmRvdy5ldmVudFNlbmRlcikKKyAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigiaG9tZSIp
OworCisgICAgICBpbml0VGVzdChyZXN1bHRNYXAzLCB0ZXN0Q29tcGxldGVkKTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiB0ZXN0Q29tcGxldGVkKCkKKyAgICB7CisgICAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7CisgICAgfQorCisgICAgd2luZG93Lm9ubG9hZCA9IHJ1blRlc3Q7CisKKyAgICA8L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+CisgIDwvaGVhZD4KKworICA8Ym9keSBpZD0ic29tZS1jb250ZW50IiB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+CisgICAgPHA+VGhhdCBpcyBpcyBhIG5vcm1h
bCA8YSBpZD0ic3RhcnQiIGhyZWY9ImEiPmxpbmtfMTwvYT4uPC9wPgorICAgIDxwPkJlbG93IGlz
IGEgc2Nyb2xsYWJsZSBEaXYgY3JlYXRlZCB3aXRoIHRoZSBDU1MgcHJvcGVydHkgb3ZlcmZsb3cu
PC9wPgorICAgIDxkaXYgY2xhc3M9InNjcm9sbCI+CisgICAgICA8cD5JdCBoYXMgYSB2aXNpYmxl
IDxhIGlkPSIxIiBocmVmPSJhIj5saW5rXzI8L2E+LjwvcD4KKyAgICAgIDxicj48YnI+PGJyPjxi
cj48YnI+PGJyPjxicj48YnI+PGJyPjxicj4KKyAgICAgIDxwPi4uLiBhbmQgYW4gb3ZlcmZsb3dl
ZCBsaW5rIGxpa2UgPGEgaWQ9IjIiIGhyZWY9ImEiPnRoaXM8L2E+LjwvcD4KKyAgICA8L2Rpdj4K
KyAgICA8cD5BbmQgdGhpcyBpcyBhbm90aGVyIG5vcm1hbCA8YSBpZD0iMyIgaHJlZj0iYSI+bGlu
a18zPC9hPi48L3A+CisgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgIDwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwIGIvV2Vi
Q29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKaW5kZXggYzUwMmJmYS4uMjgxODU5ZSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9w
YWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKQEAgLTM2OCwxNiArMzY4LDI4IEBAIHN0YXRpYyB2b2lk
IHVwZGF0ZUZvY3VzQ2FuZGlkYXRlSWZDbG9zZXIoTm9kZSogZm9jdXNlZE5vZGUsIGNvbnN0IEZv
Y3VzQ2FuZGlkYXRlCiAgICAgICAgIGNsb3Nlc3QuYWxpZ25tZW50ID0gY2FuZGlkYXRlLmFsaWdu
bWVudDsKICAgICB9CiAKLSAgICAvLyBCYWlsIG91dCBpZiBjYW5kaWRhdGUncyBkaXN0YW5jZSBp
cyBsYXJnZXIgdGhhbiB0aGF0IG9mIHRoZSBjbG9zZXN0IGNhbmRpZGF0ZS4KKyAgICAvLyBCYWls
IG91dCBpZiBjYW5kaWRhdGUncyBkaXN0YW5jZSBpcyBsYXJnZXIgdGhhbiB0aGF0IG9mIHRoZSBj
bG9zZXN0IGNhbmRpZGF0ZSwKKyAgICAvLyB1bmxlc3Mgd2UgYXJlIGluIGEgc2Nyb2xsYWJsZSBv
dmVyZmxvd2VkIGNvbnRlbnQuCiAgICAgaWYgKGNhbmRpZGF0ZS5kaXN0YW5jZSA+PSBjbG9zZXN0
LmRpc3RhbmNlKQotICAgICAgICByZXR1cm47CisgICAgICAgIGlmICghY2FuZGlkYXRlLmVuY2xv
c2luZ1Njcm9sbGFibGVCb3gKKyAgICAgICAgIHx8IGNhbmRpZGF0ZS5lbmNsb3NpbmdTY3JvbGxh
YmxlQm94ID09IGNsb3Nlc3QuZW5jbG9zaW5nU2Nyb2xsYWJsZUJveAorICAgICAgICAgfHwgKGNh
bmRpZGF0ZS5lbmNsb3NpbmdTY3JvbGxhYmxlQm94ICYmICFmb2N1c2VkTm9kZS0+aXNEZXNjZW5k
YW50T2YoY2FuZGlkYXRlLmVuY2xvc2luZ1Njcm9sbGFibGVCb3gpKSkKKyAgICAgICAgICAgIHJl
dHVybjsKIAogICAgIC8vIElmIHRoZSBmb2N1c2VkIG5vZGUgYW5kIHRoZSBjYW5kYWRhdGUgYXJl
IGluIHRoZSBzYW1lIGRvY3VtZW50IGFuZCBjdXJyZW50CiAgICAgLy8gY2xvc2VzdCBjYW5kaWRh
dGUgaXMgbm90IGluIGFuIHtpfWZyYW1lIHRoYXQgaXMgcHJlZmVyYWJsZSB0byBnZXQgZm9jdXNl
ZCAuLi4KLSAgICBpZiAoZm9jdXNlZE5vZGUtPmRvY3VtZW50KCkgPT0gY2FuZGlkYXRlLmRvY3Vt
ZW50KCkKLSAgICAgICAgJiYgY2FuZGlkYXRlLmRpc3RhbmNlIDwgY2xvc2VzdC5wYXJlbnREaXN0
YW5jZSkKLSAgICAgICAgY2xvc2VzdCA9IGNhbmRpZGF0ZTsKLSAgICBlbHNlIGlmIChmb2N1c2Vk
Tm9kZS0+ZG9jdW1lbnQoKSAhPSBjYW5kaWRhdGUuZG9jdW1lbnQoKSkgeworICAgIGlmIChmb2N1
c2VkTm9kZS0+ZG9jdW1lbnQoKSA9PSBjYW5kaWRhdGUuZG9jdW1lbnQoKSkgeworICAgICAgICBp
ZiAoY2FuZGlkYXRlLmRpc3RhbmNlIDwgY2xvc2VzdC5wYXJlbnREaXN0YW5jZSkgeworICAgICAg
ICAgICAgaWYgKCFjbG9zZXN0LmVuY2xvc2luZ1Njcm9sbGFibGVCb3ggfHwgY2xvc2VzdC5pc051
bGwoKSkKKyAgICAgICAgICAgICAgICBjbG9zZXN0ID0gY2FuZGlkYXRlOworICAgICAgICAgICAg
ZWxzZSBpZiAoY2xvc2VzdC5lbmNsb3NpbmdTY3JvbGxhYmxlQm94CisgICAgICAgICAgICAgICAg
ICAmJiBjbG9zZXN0LmVuY2xvc2luZ1Njcm9sbGFibGVCb3ggPT0gY2FuZGlkYXRlLmVuY2xvc2lu
Z1Njcm9sbGFibGVCb3gpCisgICAgICAgICAgICAgICAgY2xvc2VzdCA9IGNhbmRpZGF0ZTsKKwor
ICAgICAgICB9IGVsc2UgaWYgKGNhbmRpZGF0ZS5lbmNsb3NpbmdTY3JvbGxhYmxlQm94ICYmIGZv
Y3VzZWROb2RlLT5pc0Rlc2NlbmRhbnRPZihjYW5kaWRhdGUuZW5jbG9zaW5nU2Nyb2xsYWJsZUJv
eCkpCisgICAgICAgICAgICBjbG9zZXN0ID0gY2FuZGlkYXRlOworCisgICAgfSBlbHNlIHsKICAg
ICAgICAgLy8gSWYgdGhlIGZvY3VzZWROb2RlIGlzIGluIGFuIGlubmVyIGRvY3VtZW50IGFuZCBj
YW5kaWRhdGUgaXMgaW4gYQogICAgICAgICAvLyBkaWZmZXJlbnQgZG9jdW1lbnQsIHdlIG9ubHkg
Y29uc2lkZXIgdG8gY2hhbmdlIGZvY3VzIGlmIHRoZXJlIGlzIG5vdAogICAgICAgICAvLyBhbm90
aGVyIGFscmVhZHkgZ29vZCBmb2N1c2FibGUgY2FuZGlkYXRlIGluIHRoZSBzYW1lIGRvY3VtZW50
IGFzIGZvY3VzZWROb2RlLgpAQCAtMzkwLDIwICs0MDIsMzkgQEAgc3RhdGljIHZvaWQgdXBkYXRl
Rm9jdXNDYW5kaWRhdGVJZkNsb3NlcihOb2RlKiBmb2N1c2VkTm9kZSwgY29uc3QgRm9jdXNDYW5k
aWRhdGUKIHZvaWQgRm9jdXNDb250cm9sbGVyOjpmaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9u
KERvY3VtZW50KiBkb2N1bWVudCwgTm9kZSogZm9jdXNlZE5vZGUsIEZvY3VzRGlyZWN0aW9uIGRp
cmVjdGlvbiwgS2V5Ym9hcmRFdmVudCogZXZlbnQsIEZvY3VzQ2FuZGlkYXRlJiBjbG9zZXN0Rm9j
dXNDYW5kaWRhdGUsIGNvbnN0IEZvY3VzQ2FuZGlkYXRlJiBjYW5kaWRhdGVQYXJlbnQpCiB7CiAg
ICAgQVNTRVJUKGRvY3VtZW50KTsKLSAgICBBU1NFUlQoIWNhbmRpZGF0ZVBhcmVudC5pc051bGwo
KSAmJiAhc3RhdGljX2Nhc3Q8SFRNTEZyYW1lT3duZXJFbGVtZW50Kj4oY2FuZGlkYXRlUGFyZW50
Lm5vZGUpKTsKKyAgICBBU1NFUlQoY2FuZGlkYXRlUGFyZW50LmlzTnVsbCgpIHx8IHN0YXRpY19j
YXN0PEhUTUxGcmFtZU93bmVyRWxlbWVudCo+KGNhbmRpZGF0ZVBhcmVudC5ub2RlKSk7CisKKyAg
ICAvLyBIZWxwZXIgdG8ga2VlcCB0cmFjayBvZiB0aGUgY3VycmVudCBzY3JvbGxhYmxlIGVuY2xv
c2luZyBib3guCisgICAgTm9kZSogc2Nyb2xsYWJsZUJveCA9IDA7CiAKICAgICAvLyBXYWxrIGFs
bCB0aGUgY2hpbGQgbm9kZXMgYW5kIHVwZGF0ZSBjbG9zZXN0Rm9jdXNDYW5kaWRhdGUgaWYgd2Ug
ZmluZCBhIG5lYXJlciBub2RlLgogICAgIGZvciAoTm9kZSogY2FuZGlkYXRlID0gZG9jdW1lbnQt
PmZpcnN0Q2hpbGQoKTsgY2FuZGlkYXRlOyBjYW5kaWRhdGUgPSBjYW5kaWRhdGUtPnRyYXZlcnNl
TmV4dE5vZGUoKSkgewotICAgICAgICAvLyBJbm5lciBkb2N1bWVudHMgY2FzZS4KIAotICAgICAg
ICBpZiAoY2FuZGlkYXRlLT5pc0ZyYW1lT3duZXJFbGVtZW50KCkpCisgICAgICAgIC8vIFNjcm9s
bGFibGUgY29udGFpbmVycyAoZS5nLiA8ZGl2PikuCisgICAgICAgIGlmIChjYW5kaWRhdGUtPmhh
c1RhZ05hbWUoZGl2VGFnKSkgeworICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9
IGNhbmRpZGF0ZS0+cmVuZGVyZXIoKTsKKyAgICAgICAgICAgIGlmKHJlbmRlcmVyICYmIHJlbmRl
cmVyLT5pc0JveCgpICYmIHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+Y2FuQmVTY3JvbGxlZEFuZEhh
c1Njcm9sbGFibGVBcmVhKCkpCisgICAgICAgICAgICAgICAgc2Nyb2xsYWJsZUJveCA9IGNhbmRp
ZGF0ZTsKKworICAgICAgICAvLyBJbm5lciBkb2N1bWVudHMgY2FzZS4KKyAgICAgICAgfSBlbHNl
IGlmIChjYW5kaWRhdGUtPmlzRnJhbWVPd25lckVsZW1lbnQoKSkKICAgICAgICAgICAgIGRlZXBG
aW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKGZvY3VzZWROb2RlLCBjYW5kaWRhdGUsIGRpcmVj
dGlvbiwgZXZlbnQsIGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZSk7CisKICAgICAgICAgZWxzZSBpZiAo
Y2FuZGlkYXRlICE9IGZvY3VzZWROb2RlICYmIGNhbmRpZGF0ZS0+aXNLZXlib2FyZEZvY3VzYWJs
ZShldmVudCkpIHsKICAgICAgICAgICAgIEZvY3VzQ2FuZGlkYXRlIGN1cnJlbnRGb2N1c0NhbmRp
ZGF0ZShjYW5kaWRhdGUpOwogCisgICAgICAgICAgICBpZiAoc2Nyb2xsYWJsZUJveCAmJiBjYW5k
aWRhdGUtPmlzRGVzY2VuZGFudE9mKHNjcm9sbGFibGVCb3gpKQorICAgICAgICAgICAgICAgIGN1
cnJlbnRGb2N1c0NhbmRpZGF0ZS5lbmNsb3NpbmdTY3JvbGxhYmxlQm94ID0gc2Nyb2xsYWJsZUJv
eDsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzY3JvbGxhYmxlQm94ID0gMDsK
KwogICAgICAgICAgICAgLy8gR2V0IGRpc3RhbmNlIGFuZCBhbGlnbm1lbnQgZnJvbSBjdXJyZW50
IGNhbmRpZGF0ZS4KICAgICAgICAgICAgIGRpc3RhbmNlRGF0YUZvck5vZGUoZGlyZWN0aW9uLCBm
b2N1c2VkTm9kZSwgY3VycmVudEZvY3VzQ2FuZGlkYXRlKTsKIAorICAgICAgICAgICAgLy8gQmFp
bCBvdXQgaWYgZGlzdGFuY2UgaXMgbWF4aW11bS4KKyAgICAgICAgICAgIGlmIChjdXJyZW50Rm9j
dXNDYW5kaWRhdGUuZGlzdGFuY2UgPT0gbWF4RGlzdGFuY2UoKSkKKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKKwogICAgICAgICAgICAgLy8gSWYgY2FuZGlkYXRlUGFyZW50IGlzIG5vdCBudWxs
LCBpdCBtZWFucyB0aGF0IHdlIGFyZSBpbiBhIHJlY3Vyc2l2ZSBjYWxsCiAgICAgICAgICAgICAv
LyBmcm9tIGRlZXBGaW5lRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uIChpLmUuIHByb2Nlc3Npbmcg
YW4gZWxlbWVudCBpbiBhbiBpZnJhbWUpLAogICAgICAgICAgICAgLy8gYW5kIGhvbGRzIHRoZSBk
aXN0YW5jZSBhbmQgYWxpZ25tZW50IGRhdGEgb2YgdGhlIGlmcmFtZSBlbGVtZW50IGl0c2VsZi4K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAgYi9XZWJDb3Jl
L3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwCmluZGV4IDVjZmJmYjMuLjJhZWRlNzEgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAKKysrIGIvV2ViQ29yZS9w
YWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcApAQCAtMTA1LDYgKzEwNSwxMSBAQCBzdGF0aWMgSW50
UmVjdCByZW5kZXJSZWN0UmVsYXRpdmVUb1Jvb3REb2N1bWVudChSZW5kZXJPYmplY3QqIHJlbmRl
cikKICAgICBBU1NFUlQocmVuZGVyKTsKICAgICBJbnRSZWN0IHJlY3QocmVuZGVyLT5hYnNvbHV0
ZUNsaXBwZWRPdmVyZmxvd1JlY3QoKSk7CiAKKyAgICBpZiAocmVjdC5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgRWxlbWVudCogZSA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihyZW5kZXItPm5vZGUoKSk7
CisgICAgICAgIHJlY3QgPSBlLT5nZXRSZWN0KCk7CisgICAgfQorCiAgICAgLy8gSW4gY2FzZXMg
d2hlbiB0aGUgfHJlbmRlcnwncyBhc3NvY2lhdGVkIG5vZGUgaXMgaW4gYSBzY3JvbGxhYmxlIGlu
bmVyCiAgICAgLy8gZG9jdW1lbnQsIHdlIG9ubHkgY29uc2lkZXIgaXRzIHNjcm9sbE9mZnNldCBp
ZiBpdCBpcyBub3Qgb2Zmc2NyZWVuLgogICAgIE5vZGUqIG5vZGUgPSByZW5kZXItPm5vZGUoKTsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5oIGIvV2ViQ29yZS9w
YWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmgKaW5kZXggN2E0MDg5Ny4uNWEwZWFkNSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmgKKysrIGIvV2ViQ29yZS9wYWdlL1Nw
YXRpYWxOYXZpZ2F0aW9uLmgKQEAgLTk3LDYgKzk3LDcgQEAgZW51bSBSZWN0c0FsaWdubWVudCB7
CiBzdHJ1Y3QgRm9jdXNDYW5kaWRhdGUgewogICAgIEZvY3VzQ2FuZGlkYXRlKCkKICAgICAgICAg
OiBub2RlKDApCisgICAgICAgICwgZW5jbG9zaW5nU2Nyb2xsYWJsZUJveCgwKQogICAgICAgICAs
IGRpc3RhbmNlKG1heERpc3RhbmNlKCkpCiAgICAgICAgICwgcGFyZW50RGlzdGFuY2UobWF4RGlz
dGFuY2UoKSkKICAgICAgICAgLCBhbGlnbm1lbnQoTm9uZSkKQEAgLTEwNiw2ICsxMDcsNyBAQCBz
dHJ1Y3QgRm9jdXNDYW5kaWRhdGUgewogCiAgICAgRm9jdXNDYW5kaWRhdGUoTm9kZSogbikKICAg
ICAgICAgOiBub2RlKG4pCisgICAgICAgICwgZW5jbG9zaW5nU2Nyb2xsYWJsZUJveCgwKQogICAg
ICAgICAsIGRpc3RhbmNlKG1heERpc3RhbmNlKCkpCiAgICAgICAgICwgcGFyZW50RGlzdGFuY2Uo
bWF4RGlzdGFuY2UoKSkKICAgICAgICAgLCBhbGlnbm1lbnQoTm9uZSkKQEAgLTExNyw2ICsxMTks
NyBAQCBzdHJ1Y3QgRm9jdXNDYW5kaWRhdGUgewogICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNv
bnN0IHsgcmV0dXJuIG5vZGUgPyBub2RlLT5kb2N1bWVudCgpIDogMDsgfQogCiAgICAgTm9kZSog
bm9kZTsKKyAgICBOb2RlKiBlbmNsb3NpbmdTY3JvbGxhYmxlQm94OwogICAgIGxvbmcgbG9uZyBk
aXN0YW5jZTsKICAgICBsb25nIGxvbmcgcGFyZW50RGlzdGFuY2U7CiAgICAgUmVjdHNBbGlnbm1l
bnQgYWxpZ25tZW50OwotLSAKMS42LjAuNAoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53183</attachid>
            <date>2010-04-12 13:20:37 -0700</date>
            <delta_ts>2010-04-18 20:22:00 -0700</delta_ts>
            <desc>patch v1</desc>
            <filename>0001-Spatial-Navigation-make-it-work-with-focusable-elem.patch</filename>
            <type>text/plain</type>
            <size>13493</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSA4YmJjNmNhNTBlNWVkZmEzNjA0NzE1MGVhNWMzM2I3ZTM0MjIwMTljIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4K
RGF0ZTogTW9uLCAxMiBBcHIgMjAxMCAxNDo0NjozNCAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIFNw
YXRpYWwgTmF2aWdhdGlvbjogbWFrZSBpdCB3b3JrIHdpdGggZm9jdXNhYmxlIGVsZW1lbnRzIGlu
IG92ZXJmbG93IGNvbnRlbnQKIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zNjQ2MwoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuClBhdGNoIGJ5IEFudG9uaW8gR29t
ZXMgPHRvbmlraXRvb0B3ZWJraXQub3JnPgoKV2ViQ29yZToKClRlc3Q6IGZhc3QvZXZlbnRzL3Nw
YXRpYWwtbmF2aWdhdGlvbi9zbmF2LWNvbnRlbnQtb3ZlcmZsb3cuaHRtbAoKKiBwYWdlL0ZvY3Vz
Q29udHJvbGxlci5jcHA6CihXZWJDb3JlOjp1cGRhdGVGb2N1c0NhbmRpZGF0ZUlmQ2xvc2VyKToK
KFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6ZmluZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbik6
CiogcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHA6CihXZWJDb3JlOjpyZW5kZXJSZWN0UmVsYXRp
dmVUb1Jvb3REb2N1bWVudCk6CiogcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5oOgooV2ViQ29yZTo6
Rm9jdXNDYW5kaWRhdGU6OkZvY3VzQ2FuZGlkYXRlKToKCkxheW91dFRlc3RzOgoKKiBmYXN0L2V2
ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1jb250ZW50LW92ZXJmbG93LWV4cGVjdGVkLnR4
dDogQWRkZWQuCiogZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtY29udGVudC1v
dmVyZmxvdy5odG1sOiBBZGRlZC4KLS0tCiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgMTAgKysKIC4uLi9zbmF2LWNvbnRlbnQtb3ZlcmZsb3ct
ZXhwZWN0ZWQudHh0ICAgICAgICAgICAgIHwgICAzMSArKysrKwogLi4uL3NwYXRpYWwtbmF2aWdh
dGlvbi9zbmF2LWNvbnRlbnQtb3ZlcmZsb3cuaHRtbCAgfCAgMTIwICsrKysrKysrKysrKysrKysr
KysrCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
ICAgMTcgKysrCiBXZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcCAgICAgICAgICAgICAg
ICAgICB8ICAgNjAgKysrKysrKystLQogV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmgg
ICAgICAgICAgICAgICAgICAgfCAgICAzICsKIDYgZmlsZXMgY2hhbmdlZCwgMjMxIGluc2VydGlv
bnMoKyksIDEwIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWNvbnRlbnQtb3ZlcmZsb3ctZXhwZWN0
ZWQudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3BhdGlh
bC1uYXZpZ2F0aW9uL3NuYXYtY29udGVudC1vdmVyZmxvdy5odG1sCgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGQxYzc5MWQu
Ljk3ZjZhZjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTIsNiArMiwxNiBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgogCisgICAgICAgIFNwYXRpYWwgTmF2aWdhdGlvbjogbWFrZSBpdCB3b3Jr
IHdpdGggZm9jdXNhYmxlIGVsZW1lbnRzIGluIG92ZXJmbG93IGNvbnRlbnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2NDYzCisKKyAgICAgICAgKiBm
YXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1jb250ZW50LW92ZXJmbG93LWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9u
L3NuYXYtY29udGVudC1vdmVyZmxvdy5odG1sOiBBZGRlZC4KKworMjAxMC0wNC0xMiAgQW50b25p
byBHb21lcyAgPHRvbmlraXRvb0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCiAgICAgICAgIFNwYXRpYWwgTmF2aWdhdGlvbjogbWFrZSByZW5kZXJS
ZWN0UmVsYXRpdmVUb1Jvb3REb2N1bWVudCBtZXRob2QgdG8gZmFsbGJhY2sgdG8gZ2V0UmVjdCgp
IG9mIEVsZW1lbnQgd2hlbiBuZWVkZWQKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTM3NDYxCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWNvbnRlbnQtb3ZlcmZsb3ctZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtY29udGVu
dC1vdmVyZmxvdy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uMTQ3MDYyZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Nw
YXRpYWwtbmF2aWdhdGlvbi9zbmF2LWNvbnRlbnQtb3ZlcmZsb3ctZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMzEgQEAKK0xpbmtfMSBpcyBhIG5vcm1hbCBsaW5rLgorCitCZWxvdyBpcyBhIHNjcm9s
bGFibGUgRGl2IGNyZWF0ZWQgd2l0aCB0aGUgQ1NTIHByb3BlcnR5IG92ZXJmbG93LgorCitJdCBo
YXMgYSB2aXNpYmxlIGxpbmtfMi4KKworCisKKworCisKKworCisKKworCisKKworCisKKy4uLiBh
bmQgYW4gb3ZlcmZsb3dlZCBsaW5rIGxpa2UgdGhpcy4KKworQW5kIHRoaXMgaXMgYW5vdGhlciBu
b3JtYWwgbGlua18zLgorCitQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRl
KCJpZCIpIGlzICIxIgorUEFTUyBkb2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgi
aWQiKSBpcyAiMiIKK1BBU1MgZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoImlk
IikgaXMgIjMiCitQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCJpZCIp
IGlzICIyIgorUEFTUyBkb2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgiaWQiKSBp
cyAiMSIKK1BBU1MgZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoImlkIikgaXMg
InN0YXJ0IgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zcGF0aWFsLW5h
dmlnYXRpb24vc25hdi1jb250ZW50LW92ZXJmbG93Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1jb250ZW50LW92ZXJmbG93Lmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTRiNTExYgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWNvbnRlbnQt
b3ZlcmZsb3cuaHRtbApAQCAtMCwwICsxLDEyMCBAQAorPGh0bWw+CisgIDwhLS0KKyAgICBUaGlz
IHRlc3QgZW5zdXJlcyB0aGUgY29udGVudCBvdmVyZmxvdyB0cmF2ZXJzYWwgY29ycmVjdG5lc3Mg
b2YgU3BhdGlhbCBOYXZpZ2F0aW9uCisgICAgYWxnb3JpdGhtOiBmb2N1c2FibGUgZWxlbWVudHMg
aW4gc2Nyb2xsYWJsZSBjb250YWluZXJzIChlLmcuIDxkaXY+KSBzaG91bGQgYmUKKyAgICBhY2Nl
c3NpYmxlLCBpbmNsdWRpbmcgb2Zmc2NyZWVuIGNvbnRlbnQuCisKKyAgICAqIFByZS1jb25kaXRp
b25zOgorICAgIDEpIERSVCBzdXBwb3J0IGZvciBTTmF2IGVuYWJsZS9kaXNhYmxlLgorCisgICAg
KiBOYXZpZ2F0aW9uIHN0ZXBzOgorICAgIDEpIExvYWRzIHRoaXMgcGFnZSwgZm9jdXMgZ29lcyB0
byAic3RhcnQiIGF1dG9tYXRpY2FsbHkuCisgICAgMikgTW92ZSBmb2N1cyBkb3duIHRvIHRoZSB2
aXNpYmxlIGZvY3VzYWJsZSBlbGVtZW50IGluCisgICAgICAgc2Nyb2xsYWJsZSBkaXYuCisgICAg
MykgVHJhdmVyc2UgdGhlIHBhZ2UgdGhyb3VnaCBvdGhlciBmb2N1c2FibGUgZWxlbWVudHMgZG93
biB0aGUgcGFnZS4KKyAgICAgICBhbmQgdGhlbiBiYWNrIHVwLgorCisgICAgKiBFeHBlY3RlZCBy
ZXN1bHRzOiBBbGwgZm9jdXNhYmxlIGVsZW1lbnQgaW4gc2Nyb2xsYWJsZSBjb250ZW50LCBpbmNs
dWRpbmcKKyAgICBvZmZzY3JlZW4gb25lcywgc2hvdWxkIGJlIGFjY2Vzc2libGUgdmlhIFNOYXYu
IC0tPgorICA8aGVhZD4KKyAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgICAgZGl2LnNj
cm9sbCB7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAg
ICAgICAgb3ZlcmZsb3c6IGF1dG87CisgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICM2NjY7Cisg
ICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNjY2M7CisgICAgICAgIHBhZGRpbmc6IDhweDsKKyAg
ICAgIH0KKyAgICA8L3N0eWxlPgorCisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9z
cGF0aWFsLW5hdmlnYXRpb24tdXRpbHMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0i
YXBwbGljYXRpb24vamF2YXNjcmlwdCI+CisKKyAgICB2YXIgcmVzdWx0TWFwMSA9IFsKKyAgICAg
IFsiRG93biIsICIxIl0sCisgICAgICBbIiIsICIiXQorICAgIF07CisKKyAgICB2YXIgcmVzdWx0
TWFwMiA9IFsKKyAgICAgIFsiRG93biIsICIyIl0sCisgICAgICBbIkRvd24iLCAiMyJdLAorICAg
ICAgWyJVcCIsICIyIl0sCisgICAgICBbIiIsICIiXQorICAgIF07CisKKyAgICB2YXIgcmVzdWx0
TWFwMyA9IFsKKyAgICAgIFsiVXAiLCAiMSJdLAorICAgICAgWyJVcCIsICJzdGFydCJdLAorICAg
ICAgWyJET05FIiwgIkRPTkUiXQorICAgIF0KKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKKyAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZCh0cnVl
KTsKKyAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0
VGFiVG9MaW5rc1ByZWZlcmVuY2VLZXkiLCAxKTsKKyAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBydW5UZXN0KCkKKyAgICB7
CisgICAgICAvLyBzdGFydGluZyB0aGUgdGVzdCBpdHNlbGY6IGdldCB0byBhIGtub3duIHBsYWNl
LgorICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0YXJ0IikuZm9jdXMoKTsKKworICAg
ICAgc2V0VGltZW91dChzdGVwMSwgMCk7CisgICAgICBzZXRUaW1lb3V0KHN0ZXAyLCA1MCk7Cisg
ICAgICBzZXRUaW1lb3V0KHN0ZXAzLCAxNTApOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXAx
KCkKKyAgICB7CisgICAgICAvLyBBY3Rpb25zIGluICdyZXN1bHRNYXAxJyBzaG91bGQga2VlcCB0
aGUgZm9jdXMgaW4gdGhlIGN1cnJlbnRseQorICAgICAgLy8gZm9jdXNlZCBlbGVtZW50ICgnc3Rh
cnQnKSBvbmNlIHRoZSBiZXN0IGNhbmRpZGF0ZSAoJ2VuZCcpIGlzIG5vdAorICAgICAgLy8gdmlz
aWJsZSBpbiBjdXJyZW50IHZpZXdwb3J0LgorICAgICAgaW5pdFRlc3QocmVzdWx0TWFwMSk7Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDIoKQorICAgIHsKKyAgICAgIC8vIFRoZW4gaXQgc2Ny
b2xscyBkb3duIHRvIHRoZSBlbmQgb2YgdGhlIGRpdiAuLi4KKyAgICAgIGlmICh3aW5kb3cuZXZl
bnRTZW5kZXIpCisgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oImVuZCIpOworCisgICAgICAv
LyBBbmQgJ3Jlc3VsdE1hcDInIHJlLXRyaWVzIHRvIG1vdmUgZm9jdXMgZG93bi4KKyAgICAgIGlu
aXRUZXN0KHJlc3VsdE1hcDIpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXAzKCkKKyAgICB7
CisgICAgICAvLyBUaGVuIGl0IHNjcm9sbHMgYmFjayB1cCB0aGUgZGl2IC4uLgorICAgICAgaWYg
KHdpbmRvdy5ldmVudFNlbmRlcikKKyAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigiaG9tZSIp
OworCisgICAgICBpbml0VGVzdChyZXN1bHRNYXAzLCB0ZXN0Q29tcGxldGVkKTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiB0ZXN0Q29tcGxldGVkKCkKKyAgICB7CisgICAgICBpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7CisgICAgfQorCisgICAgd2luZG93Lm9ubG9hZCA9IHJ1blRlc3Q7CisKKyAgICA8L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+CisgIDwvaGVhZD4KKworICA8Ym9keSBpZD0ic29tZS1jb250ZW50IiB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+CisgICAgPHA+PGEgaWQ9InN0YXJ0IiBocmVm
PSJhIj5MaW5rXzE8L2E+IGlzIGEgbm9ybWFsIGxpbmsuPC9wPgorICAgIDxwPkJlbG93IGlzIGEg
c2Nyb2xsYWJsZSBEaXYgY3JlYXRlZCB3aXRoIHRoZSBDU1MgcHJvcGVydHkgb3ZlcmZsb3cuPC9w
PgorICAgIDxkaXYgY2xhc3M9InNjcm9sbCI+CisgICAgICA8cD5JdCBoYXMgYSB2aXNpYmxlIDxh
IGlkPSIxIiBocmVmPSJhIj5saW5rXzI8L2E+LjwvcD4KKyAgICAgIDxicj48YnI+PGJyPjxicj48
YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+CisgICAgICA8cD4uLi4gYW5k
IGFuIG92ZXJmbG93ZWQgbGluayBsaWtlIDxhIGlkPSIyIiBocmVmPSJhIj50aGlzPC9hPi48L3A+
CisgICAgPC9kaXY+CisgICAgPHA+QW5kIHRoaXMgaXMgYW5vdGhlciBub3JtYWwgPGEgaWQ9IjMi
IGhyZWY9ImEiPmxpbmtfMzwvYT4uPC9wPgorICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
ICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDllNTJiZTUuLmZmOTkwZjUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0yLDYgKzIsMjMgQEAKIAogICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAorICAgICAgICBTcGF0aWFsIE5hdmln
YXRpb246IG1ha2UgaXQgd29yayB3aXRoIGZvY3VzYWJsZSBlbGVtZW50cyBpbiBvdmVyZmxvdyBj
b250ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
NjQ2MworCisgICAgICAgIFRlc3Q6IGZhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2
LWNvbnRlbnQtb3ZlcmZsb3cuaHRtbAorCisgICAgICAgICogcGFnZS9Gb2N1c0NvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRlRm9jdXNDYW5kaWRhdGVJZkNsb3Nlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OmZpbmRGb2N1c2FibGVOb2RlSW5EaXJl
Y3Rpb24pOgorICAgICAgICAqIHBhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6cmVuZGVyUmVjdFJlbGF0aXZlVG9Sb290RG9jdW1lbnQpOgorICAgICAgICAqIHBh
Z2UvU3BhdGlhbE5hdmlnYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ2FuZGlkYXRl
OjpGb2N1c0NhbmRpZGF0ZSk6CisKKzIwMTAtMDQtMTIgIEFudG9uaW8gR29tZXMgIDx0b25pa2l0
b29Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwog
ICAgICAgICBTcGF0aWFsIE5hdmlnYXRpb246IG1ha2UgcmVuZGVyUmVjdFJlbGF0aXZlVG9Sb290
RG9jdW1lbnQgbWV0aG9kIHRvIGZhbGxiYWNrIHRvIGdldFJlY3QoKSBvZiBFbGVtZW50IHdoZW4g
bmVlZGVkCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
NzQ2MQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcCBiL1dl
YkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCmluZGV4IDk0MDI3YWEuLmIxYmExYmYgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUv
cGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCkBAIC0zNjgsMjEgKzM2OCw0NiBAQCBzdGF0aWMgdm9p
ZCB1cGRhdGVGb2N1c0NhbmRpZGF0ZUlmQ2xvc2VyKE5vZGUqIGZvY3VzZWROb2RlLCBjb25zdCBG
b2N1c0NhbmRpZGF0ZQogICAgICAgICBjbG9zZXN0LmFsaWdubWVudCA9IGNhbmRpZGF0ZS5hbGln
bm1lbnQ7CiAgICAgfQogCi0gICAgLy8gQmFpbCBvdXQgaWYgY2FuZGlkYXRlJ3MgZGlzdGFuY2Ug
aXMgbGFyZ2VyIHRoYW4gdGhhdCBvZiB0aGUgY2xvc2VzdCBjYW5kaWRhdGUuCisgICAgLy8gQmFp
bCBvdXQgaWYgY2FuZGlkYXRlJ3MgZGlzdGFuY2UgaXMgbGFyZ2VyIHRoYW4gdGhhdCBvZiB0aGUg
Y2xvc2VzdCBjYW5kaWRhdGUsCisgICAgLy8gdW5sZXNzIHdlIGFyZSBpbiBhIHNjcm9sbGFibGUg
b3ZlcmZsb3dlZCBjb250ZW50LgogICAgIGlmIChjYW5kaWRhdGUuZGlzdGFuY2UgPj0gY2xvc2Vz
dC5kaXN0YW5jZSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoIWNhbmRpZGF0ZS5lbmNs
b3NpbmdTY3JvbGxhYmxlQm94CisgICAgICAgICB8fCBjYW5kaWRhdGUuZW5jbG9zaW5nU2Nyb2xs
YWJsZUJveCA9PSBjbG9zZXN0LmVuY2xvc2luZ1Njcm9sbGFibGVCb3gKKyAgICAgICAgIHx8IChj
YW5kaWRhdGUuZW5jbG9zaW5nU2Nyb2xsYWJsZUJveCAmJiAhZm9jdXNlZE5vZGUtPmlzRGVzY2Vu
ZGFudE9mKGNhbmRpZGF0ZS5lbmNsb3NpbmdTY3JvbGxhYmxlQm94KSkpCisgICAgICAgICAgICBy
ZXR1cm47CiAKICAgICBpZiAoY2xvc2VzdC5pc051bGwoKSkgewogICAgICAgICBjbG9zZXN0ID0g
Y2FuZGlkYXRlOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gSWYgdGhlIGZvY3Vz
ZWQgbm9kZSBhbmQgdGhlIGNhbmRhZGF0ZSBhcmUgaW4gdGhlIHNhbWUgZG9jdW1lbnQgYW5kIGN1
cnJlbnQKLSAgICAvLyBjbG9zZXN0IGNhbmRpZGF0ZSBpcyBub3QgaW4gYW4ge2l9ZnJhbWUgdGhh
dCBpcyBwcmVmZXJhYmxlIHRvIGdldCBmb2N1c2VkIC4uLgotICAgIGlmIChmb2N1c2VkTm9kZS0+
ZG9jdW1lbnQoKSA9PSBjYW5kaWRhdGUuZG9jdW1lbnQoKQotICAgICAgICAmJiBjYW5kaWRhdGUu
ZGlzdGFuY2UgPCBjbG9zZXN0LnBhcmVudERpc3RhbmNlKQotICAgICAgICBjbG9zZXN0ID0gY2Fu
ZGlkYXRlOwotICAgIGVsc2UgaWYgKGZvY3VzZWROb2RlLT5kb2N1bWVudCgpICE9IGNhbmRpZGF0
ZS5kb2N1bWVudCgpKSB7CisgICAgLy8gSWYgdGhlIGZvY3VzZWQgbm9kZSBhbmQgdGhlIGNhbmRh
ZGF0ZSBhcmUgaW4gdGhlIHNhbWUgZG9jdW1lbnQ6CisgICAgaWYgKGZvY3VzZWROb2RlLT5kb2N1
bWVudCgpID09IGNhbmRpZGF0ZS5kb2N1bWVudCgpKSB7CisKKyAgICAgICAgLy8gRmlyc3QsIGNo
ZWNrIGZvciB0aGUgY29tbW9uIGNhc2U6IGZvY3VzIGNhbmRpZGF0ZSBpcyAqbm90KiBpbiBhIHNj
cm9sbGFibGUgY29udGFpbmVyLgorICAgICAgICBpZiAoIWNhbmRpZGF0ZS5lbmNsb3NpbmdTY3Jv
bGxhYmxlQm94KSB7CisgICAgICAgICAgICBpZiAoY2FuZGlkYXRlLmRpc3RhbmNlIDwgY2xvc2Vz
dC5wYXJlbnREaXN0YW5jZSkgeworICAgICAgICAgICAgICAgIGlmICghY2xvc2VzdC5lbmNsb3Np
bmdTY3JvbGxhYmxlQm94KQorICAgICAgICAgICAgICAgICAgICBjbG9zZXN0ID0gY2FuZGlkYXRl
OworICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNsb3Nlc3QuZW5jbG9zaW5nU2Nyb2xsYWJsZUJv
eCA9PSBjYW5kaWRhdGUuZW5jbG9zaW5nU2Nyb2xsYWJsZUJveCkKKyAgICAgICAgICAgICAgICAg
ICAgY2xvc2VzdCA9IGNhbmRpZGF0ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgLy8gV2hlbiBpdCBpcyBpbiBhIHNjcm9sbGFibGUgY29udGFpbmVyLCB0
aGVuOgorICAgICAgICAgICAgLy8gIzEgLSBjaGVjayBpZiBjdXJyZW50IGZvY3VzZWQgbm9kZSBp
cyBpbiB0aGUgc2FtZSBlbmNsb3Npbmcgc2Nyb2xsYWJsZQorICAgICAgICAgICAgLy8gYm94IHRo
YW4gY2FuZGlkYXRlLgorICAgICAgICAgICAgaWYgKGZvY3VzZWROb2RlLT5pc0Rlc2NlbmRhbnRP
ZihjYW5kaWRhdGUuZW5jbG9zaW5nU2Nyb2xsYWJsZUJveCkpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoY2FuZGlkYXRlLmVuY2xvc2luZ1Njcm9sbGFibGVCb3ggIT0gY2xvc2VzdC5lbmNsb3NpbmdT
Y3JvbGxhYmxlQm94KQorICAgICAgICAgICAgICAgICAgICBjbG9zZXN0ID0gY2FuZGlkYXRlOwor
ICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNhbmRpZGF0ZS5kaXN0YW5jZSA8IGNsb3Nlc3QuZGlz
dGFuY2UpCisgICAgICAgICAgICAgICAgICAgIGNsb3Nlc3QgPSBjYW5kaWRhdGU7CisKKyAgICAg
ICAgICAgIC8vICMyIC0gT3Igb25seSB0aGUgc3BhdGlhbCBkaXN0YW5jZSBpcyBlbm91Z2guCisg
ICAgICAgICAgICB9IGVsc2UgaWYgKGNhbmRpZGF0ZS5kaXN0YW5jZSA8IGNsb3Nlc3QuZGlzdGFu
Y2UpCisgICAgICAgICAgICAgICAgY2xvc2VzdCA9IGNhbmRpZGF0ZTsKKyAgICAgICAgfQorICAg
IH0gZWxzZSB7CiAgICAgICAgIC8vIElmIHRoZSBmb2N1c2VkTm9kZSBpcyBpbiBhbiBpbm5lciBk
b2N1bWVudCBhbmQgY2FuZGlkYXRlIGlzIGluIGEKICAgICAgICAgLy8gZGlmZmVyZW50IGRvY3Vt
ZW50LCB3ZSBvbmx5IGNvbnNpZGVyIHRvIGNoYW5nZSBmb2N1cyBpZiB0aGVyZSBpcyBub3QKICAg
ICAgICAgLy8gYW5vdGhlciBhbHJlYWR5IGdvb2QgZm9jdXNhYmxlIGNhbmRpZGF0ZSBpbiB0aGUg
c2FtZSBkb2N1bWVudCBhcyBmb2N1c2VkTm9kZS4KQEAgLTQwMCwxNSArNDI1LDMwIEBAIHZvaWQg
Rm9jdXNDb250cm9sbGVyOjpmaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKERvY3VtZW50KiBk
b2N1bWVudCwgTm9kZSogZm9jCiAgICAgQVNTRVJUKGRvY3VtZW50KTsKICAgICBBU1NFUlQoY2Fu
ZGlkYXRlUGFyZW50LmlzTnVsbCgpIHx8IHN0YXRpY19jYXN0PEhUTUxGcmFtZU93bmVyRWxlbWVu
dCo+KGNhbmRpZGF0ZVBhcmVudC5ub2RlKSk7CiAKKyAgICAvLyBIZWxwZXIgdG8ga2VlcCB0cmFj
ayBvZiB0aGUgY3VycmVudCBzY3JvbGxhYmxlIGVuY2xvc2luZyBib3guCisgICAgTm9kZSogc2Ny
b2xsYWJsZUJveCA9IDA7CisKICAgICAvLyBXYWxrIGFsbCB0aGUgY2hpbGQgbm9kZXMgYW5kIHVw
ZGF0ZSBjbG9zZXN0Rm9jdXNDYW5kaWRhdGUgaWYgd2UgZmluZCBhIG5lYXJlciBub2RlLgogICAg
IGZvciAoTm9kZSogY2FuZGlkYXRlID0gZG9jdW1lbnQtPmZpcnN0Q2hpbGQoKTsgY2FuZGlkYXRl
OyBjYW5kaWRhdGUgPSBjYW5kaWRhdGUtPnRyYXZlcnNlTmV4dE5vZGUoKSkgewotICAgICAgICAv
LyBJbm5lciBkb2N1bWVudHMgY2FzZS4KIAotICAgICAgICBpZiAoY2FuZGlkYXRlLT5pc0ZyYW1l
T3duZXJFbGVtZW50KCkpCisgICAgICAgIC8vIFNjcm9sbGFibGUgY29udGFpbmVycyAoZS5nLiA8
ZGl2PikuCisgICAgICAgIGlmIChjYW5kaWRhdGUtPmhhc1RhZ05hbWUoZGl2VGFnKSkgeworICAg
ICAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGNhbmRpZGF0ZS0+cmVuZGVyZXIoKTsK
KyAgICAgICAgICAgIGlmKHJlbmRlcmVyICYmIHJlbmRlcmVyLT5pc0JveCgpICYmIHRvUmVuZGVy
Qm94KHJlbmRlcmVyKS0+Y2FuQmVTY3JvbGxlZEFuZEhhc1Njcm9sbGFibGVBcmVhKCkpCisgICAg
ICAgICAgICAgICAgc2Nyb2xsYWJsZUJveCA9IGNhbmRpZGF0ZTsKKworICAgICAgICAvLyBJbm5l
ciBkb2N1bWVudHMgY2FzZS4KKyAgICAgICAgfSBlbHNlIGlmIChjYW5kaWRhdGUtPmlzRnJhbWVP
d25lckVsZW1lbnQoKSkKICAgICAgICAgICAgIGRlZXBGaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0
aW9uKGZvY3VzZWROb2RlLCBjYW5kaWRhdGUsIGRpcmVjdGlvbiwgZXZlbnQsIGNsb3Nlc3RGb2N1
c0NhbmRpZGF0ZSk7CisKICAgICAgICAgZWxzZSBpZiAoY2FuZGlkYXRlICE9IGZvY3VzZWROb2Rl
ICYmIGNhbmRpZGF0ZS0+aXNLZXlib2FyZEZvY3VzYWJsZShldmVudCkpIHsKICAgICAgICAgICAg
IEZvY3VzQ2FuZGlkYXRlIGN1cnJlbnRGb2N1c0NhbmRpZGF0ZShjYW5kaWRhdGUpOwogCisgICAg
ICAgICAgICBpZiAoc2Nyb2xsYWJsZUJveCAmJiBjYW5kaWRhdGUtPmlzRGVzY2VuZGFudE9mKHNj
cm9sbGFibGVCb3gpKQorICAgICAgICAgICAgICAgIGN1cnJlbnRGb2N1c0NhbmRpZGF0ZS5lbmNs
b3NpbmdTY3JvbGxhYmxlQm94ID0gc2Nyb2xsYWJsZUJveDsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICBzY3JvbGxhYmxlQm94ID0gMDsKKwogICAgICAgICAgICAgLy8gR2V0IGRp
c3RhbmNlIGFuZCBhbGlnbm1lbnQgZnJvbSBjdXJyZW50IGNhbmRpZGF0ZS4KICAgICAgICAgICAg
IGRpc3RhbmNlRGF0YUZvck5vZGUoZGlyZWN0aW9uLCBmb2N1c2VkTm9kZSwgY3VycmVudEZvY3Vz
Q2FuZGlkYXRlKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9u
LmggYi9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uaAppbmRleCA3YTQwODk3Li41YTBl
YWQ1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uaAorKysgYi9X
ZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uaApAQCAtOTcsNiArOTcsNyBAQCBlbnVtIFJl
Y3RzQWxpZ25tZW50IHsKIHN0cnVjdCBGb2N1c0NhbmRpZGF0ZSB7CiAgICAgRm9jdXNDYW5kaWRh
dGUoKQogICAgICAgICA6IG5vZGUoMCkKKyAgICAgICAgLCBlbmNsb3NpbmdTY3JvbGxhYmxlQm94
KDApCiAgICAgICAgICwgZGlzdGFuY2UobWF4RGlzdGFuY2UoKSkKICAgICAgICAgLCBwYXJlbnRE
aXN0YW5jZShtYXhEaXN0YW5jZSgpKQogICAgICAgICAsIGFsaWdubWVudChOb25lKQpAQCAtMTA2
LDYgKzEwNyw3IEBAIHN0cnVjdCBGb2N1c0NhbmRpZGF0ZSB7CiAKICAgICBGb2N1c0NhbmRpZGF0
ZShOb2RlKiBuKQogICAgICAgICA6IG5vZGUobikKKyAgICAgICAgLCBlbmNsb3NpbmdTY3JvbGxh
YmxlQm94KDApCiAgICAgICAgICwgZGlzdGFuY2UobWF4RGlzdGFuY2UoKSkKICAgICAgICAgLCBw
YXJlbnREaXN0YW5jZShtYXhEaXN0YW5jZSgpKQogICAgICAgICAsIGFsaWdubWVudChOb25lKQpA
QCAtMTE3LDYgKzExOSw3IEBAIHN0cnVjdCBGb2N1c0NhbmRpZGF0ZSB7CiAgICAgRG9jdW1lbnQq
IGRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbm9kZSA/IG5vZGUtPmRvY3VtZW50KCkgOiAwOyB9
CiAKICAgICBOb2RlKiBub2RlOworICAgIE5vZGUqIGVuY2xvc2luZ1Njcm9sbGFibGVCb3g7CiAg
ICAgbG9uZyBsb25nIGRpc3RhbmNlOwogICAgIGxvbmcgbG9uZyBwYXJlbnREaXN0YW5jZTsKICAg
ICBSZWN0c0FsaWdubWVudCBhbGlnbm1lbnQ7Ci0tIAoxLjYuMC40Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53652</attachid>
            <date>2010-04-18 20:22:00 -0700</date>
            <delta_ts>2010-04-19 09:19:37 -0700</delta_ts>
            <desc>patch v2</desc>
            <filename>0001-Spatial-Navigation-make-it-work-with-focusable-elem.patch</filename>
            <type>text/plain</type>
            <size>24715</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSBiYjRjZjQ2ODFlYjIzMzJhNWMxOGMwN2JkOWVkZTQ2YWY4NDI5Nzc5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4K
RGF0ZTogTW9uLCAxMiBBcHIgMjAxMCAxNDo0NjozNCAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIFNw
YXRpYWwgTmF2aWdhdGlvbjogbWFrZSBpdCB3b3JrIHdpdGggZm9jdXNhYmxlIGVsZW1lbnRzIGlu
IG92ZXJmbG93IGNvbnRlbnQKIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zNjQ2MwoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuClBhdGNoIGJ5IEFudG9uaW8gR29t
ZXMgPHRvbmlraXRvb0B3ZWJraXQub3JnPgoKV2ViQ29yZToKClRlc3Q6IGZhc3QvZXZlbnRzL3Nw
YXRpYWwtbmF2aWdhdGlvbi9zbmF2LWNvbnRlbnQtb3ZlcmZsb3cuaHRtbAoKKiBwYWdlL0ZvY3Vz
Q29udHJvbGxlci5jcHA6CihXZWJDb3JlOjp1cGRhdGVGb2N1c0NhbmRpZGF0ZUlmQ2xvc2VyKToK
KFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6ZmluZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbik6
CiogcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHA6CihXZWJDb3JlOjpyZW5kZXJSZWN0UmVsYXRp
dmVUb1Jvb3REb2N1bWVudCk6CiogcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5oOgooV2ViQ29yZTo6
Rm9jdXNDYW5kaWRhdGU6OkZvY3VzQ2FuZGlkYXRlKToKCkxheW91dFRlc3RzOgoKKiBmYXN0L2V2
ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1jb250ZW50LW92ZXJmbG93LWV4cGVjdGVkLnR4
dDogQWRkZWQuCiogZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtY29udGVudC1v
dmVyZmxvdy5odG1sOiBBZGRlZC4KLS0tCiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgMTAgKwogLi4uL3NuYXYtY29udGVudC1vdmVyZmxvdy1l
eHBlY3RlZC50eHQgICAgICAgICAgICAgfCAgIDMxICsrKwogLi4uL3NwYXRpYWwtbmF2aWdhdGlv
bi9zbmF2LWNvbnRlbnQtb3ZlcmZsb3cuaHRtbCAgfCAgMTIwICsrKysrKysrKysrKwogV2ViQ29y
ZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE3ICsrCiBX
ZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcCAgICAgICAgICAgICAgICAgICB8ICAxOTYg
KysrKysrKysrKysrKysrLS0tLS0KIFdlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuaCAgICAg
ICAgICAgICAgICAgICAgIHwgICAgNSArLQogV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9u
LmNwcCAgICAgICAgICAgICAgICAgfCAgIDEwICstCiBXZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmln
YXRpb24uaCAgICAgICAgICAgICAgICAgICB8ICAgIDMgKwogOCBmaWxlcyBjaGFuZ2VkLCAzMzUg
aW5zZXJ0aW9ucygrKSwgNTcgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtY29udGVudC1vdmVyZmxv
dy1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1jb250ZW50LW92ZXJmbG93Lmh0bWwKCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
ZGM2MTU1OS4uNDA5NzRiZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMTUwMSw2ICsxNTAxLDE2IEBACiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgogCisgICAgICAgIFNwYXRpYWwgTmF2aWdhdGlvbjog
bWFrZSBpdCB3b3JrIHdpdGggZm9jdXNhYmxlIGVsZW1lbnRzIGluIG92ZXJmbG93IGNvbnRlbnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2NDYzCisK
KyAgICAgICAgKiBmYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1jb250ZW50LW92
ZXJmbG93LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvc3BhdGlh
bC1uYXZpZ2F0aW9uL3NuYXYtY29udGVudC1vdmVyZmxvdy5odG1sOiBBZGRlZC4KKworMjAxMC0w
NC0xMiAgQW50b25pbyBHb21lcyAgPHRvbmlraXRvb0B3ZWJraXQub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCiAgICAgICAgIFNwYXRpYWwgTmF2aWdhdGlvbjog
bWFrZSByZW5kZXJSZWN0UmVsYXRpdmVUb1Jvb3REb2N1bWVudCBtZXRob2QgdG8gZmFsbGJhY2sg
dG8gZ2V0UmVjdCgpIG9mIEVsZW1lbnQgd2hlbiBuZWVkZWQKICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3NDYxCiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWNvbnRlbnQtb3ZlcmZsb3ct
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9u
L3NuYXYtY29udGVudC1vdmVyZmxvdy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uMTQ3MDYyZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWNvbnRlbnQtb3ZlcmZsb3ctZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMzEgQEAKK0xpbmtfMSBpcyBhIG5vcm1hbCBsaW5rLgorCitCZWxv
dyBpcyBhIHNjcm9sbGFibGUgRGl2IGNyZWF0ZWQgd2l0aCB0aGUgQ1NTIHByb3BlcnR5IG92ZXJm
bG93LgorCitJdCBoYXMgYSB2aXNpYmxlIGxpbmtfMi4KKworCisKKworCisKKworCisKKworCisK
KworCisKKy4uLiBhbmQgYW4gb3ZlcmZsb3dlZCBsaW5rIGxpa2UgdGhpcy4KKworQW5kIHRoaXMg
aXMgYW5vdGhlciBub3JtYWwgbGlua18zLgorCitQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQu
Z2V0QXR0cmlidXRlKCJpZCIpIGlzICIxIgorUEFTUyBkb2N1bWVudC5hY3RpdmVFbGVtZW50Lmdl
dEF0dHJpYnV0ZSgiaWQiKSBpcyAiMiIKK1BBU1MgZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5nZXRB
dHRyaWJ1dGUoImlkIikgaXMgIjMiCitQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuZ2V0QXR0
cmlidXRlKCJpZCIpIGlzICIyIgorUEFTUyBkb2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJp
YnV0ZSgiaWQiKSBpcyAiMSIKK1BBU1MgZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1
dGUoImlkIikgaXMgInN0YXJ0IgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1jb250ZW50LW92ZXJmbG93Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1jb250ZW50LW92ZXJmbG93
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTRiNTExYgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9z
bmF2LWNvbnRlbnQtb3ZlcmZsb3cuaHRtbApAQCAtMCwwICsxLDEyMCBAQAorPGh0bWw+CisgIDwh
LS0KKyAgICBUaGlzIHRlc3QgZW5zdXJlcyB0aGUgY29udGVudCBvdmVyZmxvdyB0cmF2ZXJzYWwg
Y29ycmVjdG5lc3Mgb2YgU3BhdGlhbCBOYXZpZ2F0aW9uCisgICAgYWxnb3JpdGhtOiBmb2N1c2Fi
bGUgZWxlbWVudHMgaW4gc2Nyb2xsYWJsZSBjb250YWluZXJzIChlLmcuIDxkaXY+KSBzaG91bGQg
YmUKKyAgICBhY2Nlc3NpYmxlLCBpbmNsdWRpbmcgb2Zmc2NyZWVuIGNvbnRlbnQuCisKKyAgICAq
IFByZS1jb25kaXRpb25zOgorICAgIDEpIERSVCBzdXBwb3J0IGZvciBTTmF2IGVuYWJsZS9kaXNh
YmxlLgorCisgICAgKiBOYXZpZ2F0aW9uIHN0ZXBzOgorICAgIDEpIExvYWRzIHRoaXMgcGFnZSwg
Zm9jdXMgZ29lcyB0byAic3RhcnQiIGF1dG9tYXRpY2FsbHkuCisgICAgMikgTW92ZSBmb2N1cyBk
b3duIHRvIHRoZSB2aXNpYmxlIGZvY3VzYWJsZSBlbGVtZW50IGluCisgICAgICAgc2Nyb2xsYWJs
ZSBkaXYuCisgICAgMykgVHJhdmVyc2UgdGhlIHBhZ2UgdGhyb3VnaCBvdGhlciBmb2N1c2FibGUg
ZWxlbWVudHMgZG93biB0aGUgcGFnZS4KKyAgICAgICBhbmQgdGhlbiBiYWNrIHVwLgorCisgICAg
KiBFeHBlY3RlZCByZXN1bHRzOiBBbGwgZm9jdXNhYmxlIGVsZW1lbnQgaW4gc2Nyb2xsYWJsZSBj
b250ZW50LCBpbmNsdWRpbmcKKyAgICBvZmZzY3JlZW4gb25lcywgc2hvdWxkIGJlIGFjY2Vzc2li
bGUgdmlhIFNOYXYuIC0tPgorICA8aGVhZD4KKyAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgor
ICAgICAgZGl2LnNjcm9sbCB7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgICAgIHdpZHRo
OiAzMDBweDsKKyAgICAgICAgb3ZlcmZsb3c6IGF1dG87CisgICAgICAgIGJvcmRlcjogMXB4IHNv
bGlkICM2NjY7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNjY2M7CisgICAgICAgIHBhZGRp
bmc6IDhweDsKKyAgICAgIH0KKyAgICA8L3N0eWxlPgorCisgICAgPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9
InJlc291cmNlcy9zcGF0aWFsLW5hdmlnYXRpb24tdXRpbHMuanMiPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCI+CisKKyAgICB2YXIgcmVzdWx0TWFw
MSA9IFsKKyAgICAgIFsiRG93biIsICIxIl0sCisgICAgICBbIiIsICIiXQorICAgIF07CisKKyAg
ICB2YXIgcmVzdWx0TWFwMiA9IFsKKyAgICAgIFsiRG93biIsICIyIl0sCisgICAgICBbIkRvd24i
LCAiMyJdLAorICAgICAgWyJVcCIsICIyIl0sCisgICAgICBbIiIsICIiXQorICAgIF07CisKKyAg
ICB2YXIgcmVzdWx0TWFwMyA9IFsKKyAgICAgIFsiVXAiLCAiMSJdLAorICAgICAgWyJVcCIsICJz
dGFydCJdLAorICAgICAgWyJET05FIiwgIkRPTkUiXQorICAgIF0KKworICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKyAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFNwYXRpYWxOYXZpZ2F0aW9u
RW5hYmxlZCh0cnVlKTsKKyAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVy
ZW5jZSgiV2ViS2l0VGFiVG9MaW5rc1ByZWZlcmVuY2VLZXkiLCAxKTsKKyAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBydW5U
ZXN0KCkKKyAgICB7CisgICAgICAvLyBzdGFydGluZyB0aGUgdGVzdCBpdHNlbGY6IGdldCB0byBh
IGtub3duIHBsYWNlLgorICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0YXJ0IikuZm9j
dXMoKTsKKworICAgICAgc2V0VGltZW91dChzdGVwMSwgMCk7CisgICAgICBzZXRUaW1lb3V0KHN0
ZXAyLCA1MCk7CisgICAgICBzZXRUaW1lb3V0KHN0ZXAzLCAxNTApOworICAgIH0KKworICAgIGZ1
bmN0aW9uIHN0ZXAxKCkKKyAgICB7CisgICAgICAvLyBBY3Rpb25zIGluICdyZXN1bHRNYXAxJyBz
aG91bGQga2VlcCB0aGUgZm9jdXMgaW4gdGhlIGN1cnJlbnRseQorICAgICAgLy8gZm9jdXNlZCBl
bGVtZW50ICgnc3RhcnQnKSBvbmNlIHRoZSBiZXN0IGNhbmRpZGF0ZSAoJ2VuZCcpIGlzIG5vdAor
ICAgICAgLy8gdmlzaWJsZSBpbiBjdXJyZW50IHZpZXdwb3J0LgorICAgICAgaW5pdFRlc3QocmVz
dWx0TWFwMSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDIoKQorICAgIHsKKyAgICAgIC8v
IFRoZW4gaXQgc2Nyb2xscyBkb3duIHRvIHRoZSBlbmQgb2YgdGhlIGRpdiAuLi4KKyAgICAgIGlm
ICh3aW5kb3cuZXZlbnRTZW5kZXIpCisgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oImVuZCIp
OworCisgICAgICAvLyBBbmQgJ3Jlc3VsdE1hcDInIHJlLXRyaWVzIHRvIG1vdmUgZm9jdXMgZG93
bi4KKyAgICAgIGluaXRUZXN0KHJlc3VsdE1hcDIpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0
ZXAzKCkKKyAgICB7CisgICAgICAvLyBUaGVuIGl0IHNjcm9sbHMgYmFjayB1cCB0aGUgZGl2IC4u
LgorICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikKKyAgICAgICAgZXZlbnRTZW5kZXIua2V5
RG93bigiaG9tZSIpOworCisgICAgICBpbml0VGVzdChyZXN1bHRNYXAzLCB0ZXN0Q29tcGxldGVk
KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0Q29tcGxldGVkKCkKKyAgICB7CisgICAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7CisgICAgfQorCisgICAgd2luZG93Lm9ubG9hZCA9IHJ1blRlc3Q7
CisKKyAgICA8L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisgIDwvaGVhZD4KKworICA8Ym9keSBpZD0ic29tZS1jb250
ZW50IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+CisgICAgPHA+PGEgaWQ9
InN0YXJ0IiBocmVmPSJhIj5MaW5rXzE8L2E+IGlzIGEgbm9ybWFsIGxpbmsuPC9wPgorICAgIDxw
PkJlbG93IGlzIGEgc2Nyb2xsYWJsZSBEaXYgY3JlYXRlZCB3aXRoIHRoZSBDU1MgcHJvcGVydHkg
b3ZlcmZsb3cuPC9wPgorICAgIDxkaXYgY2xhc3M9InNjcm9sbCI+CisgICAgICA8cD5JdCBoYXMg
YSB2aXNpYmxlIDxhIGlkPSIxIiBocmVmPSJhIj5saW5rXzI8L2E+LjwvcD4KKyAgICAgIDxicj48
YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+CisgICAg
ICA8cD4uLi4gYW5kIGFuIG92ZXJmbG93ZWQgbGluayBsaWtlIDxhIGlkPSIyIiBocmVmPSJhIj50
aGlzPC9hPi48L3A+CisgICAgPC9kaXY+CisgICAgPHA+QW5kIHRoaXMgaXMgYW5vdGhlciBub3Jt
YWwgPGEgaWQ9IjMiIGhyZWY9ImEiPmxpbmtfMzwvYT4uPC9wPgorICAgIDxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGM4ZWJhYWUuLjUyZGMzMzQgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjAgQEAKKzIwMTAtMDQtMTIgIEFudG9uaW8gR29tZXMgIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTcGF0aWFs
IE5hdmlnYXRpb246IG1ha2UgaXQgd29yayB3aXRoIGZvY3VzYWJsZSBlbGVtZW50cyBpbiBvdmVy
ZmxvdyBjb250ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zNjQ2MworCisgICAgICAgIFRlc3Q6IGZhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlv
bi9zbmF2LWNvbnRlbnQtb3ZlcmZsb3cuaHRtbAorCisgICAgICAgICogcGFnZS9Gb2N1c0NvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRlRm9jdXNDYW5kaWRhdGVJZkNsb3Nl
cik6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OmZpbmRGb2N1c2FibGVOb2Rl
SW5EaXJlY3Rpb24pOgorICAgICAgICAqIHBhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6cmVuZGVyUmVjdFJlbGF0aXZlVG9Sb290RG9jdW1lbnQpOgorICAgICAg
ICAqIHBhZ2UvU3BhdGlhbE5hdmlnYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ2Fu
ZGlkYXRlOjpGb2N1c0NhbmRpZGF0ZSk6CisKIDIwMTAtMDQtMTcgIEFsZXhleSBQcm9za3VyeWFr
b3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9wYWdl
L0ZvY3VzQ29udHJvbGxlci5jcHAKaW5kZXggNmRiOWVmNC4uZjFhNWM3MSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0ZvY3Vz
Q29udHJvbGxlci5jcHAKQEAgLTMwNSw3ICszMDUsNyBAQCBib29sIEZvY3VzQ29udHJvbGxlcjo6
YWR2YW5jZUZvY3VzRGlyZWN0aW9uYWxseShGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIEtleWJv
YQogICAgIGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dG9wKCk7CiAKICAgICBGb2N1c0NhbmRpZGF0
ZSBmb2N1c0NhbmRpZGF0ZTsKLSAgICBmaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKGZyYW1l
LT5kb2N1bWVudCgpLCBmb2N1c2VkTm9kZSwgZGlyZWN0aW9uLCBldmVudCwgZm9jdXNDYW5kaWRh
dGUpOworICAgIGZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24oZnJhbWUtPmRvY3VtZW50KCkt
PmZpcnN0Q2hpbGQoKSwgZm9jdXNlZE5vZGUsIGRpcmVjdGlvbiwgZXZlbnQsIGZvY3VzQ2FuZGlk
YXRlKTsKIAogICAgIE5vZGUqIG5vZGUgPSBmb2N1c0NhbmRpZGF0ZS5ub2RlOwogICAgIGlmICgh
bm9kZSB8fCAhbm9kZS0+aXNFbGVtZW50Tm9kZSgpKSB7CkBAIC0zNDUsMTQgKzM0NSw0MiBAQCBi
b29sIEZvY3VzQ29udHJvbGxlcjo6YWR2YW5jZUZvY3VzRGlyZWN0aW9uYWxseShGb2N1c0RpcmVj
dGlvbiBkaXJlY3Rpb24sIEtleWJvYQogLy8gRklYTUU6IE1ha2UgdGhpcyBtZXRob2QgbW9yZSBt
b2R1bGFyLCBhbmQgc2ltcGxlciB0byB1bmRlcnN0YW5kIGFuZCBtYWludGFpbi4KIHN0YXRpYyB2
b2lkIHVwZGF0ZUZvY3VzQ2FuZGlkYXRlSWZDbG9zZXIoTm9kZSogZm9jdXNlZE5vZGUsIGNvbnN0
IEZvY3VzQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIEZvY3VzQ2FuZGlkYXRlJiBjbG9zZXN0KQogewot
ICAgIGJvb2wgc2FtZURvY3VtZW50ID0gY2FuZGlkYXRlLmRvY3VtZW50KCkgPT0gY2xvc2VzdC5k
b2N1bWVudCgpOwotICAgIGlmIChzYW1lRG9jdW1lbnQpIHsKLSAgICAgICAgaWYgKGNsb3Nlc3Qu
YWxpZ25tZW50ID4gY2FuZGlkYXRlLmFsaWdubWVudAotICAgICAgICAgfHwgKGNsb3Nlc3QucGFy
ZW50QWxpZ25tZW50ICYmIGNhbmRpZGF0ZS5hbGlnbm1lbnQgPiBjbG9zZXN0LnBhcmVudEFsaWdu
bWVudCkpCisgICAgYm9vbCBzYW1lQ29udGFpbmVyOworICAgIGlmIChjYW5kaWRhdGUuZG9jdW1l
bnQoKSAhPSBjbG9zZXN0LmRvY3VtZW50KCkpCisgICAgICAgIHNhbWVDb250YWluZXIgPSBmYWxz
ZTsKKyAgICBlbHNlCisgICAgICAgIHNhbWVDb250YWluZXIgPSAhKGNhbmRpZGF0ZS5lbmNsb3Np
bmdTY3JvbGxhYmxlQm94ICE9IGNsb3Nlc3QuZW5jbG9zaW5nU2Nyb2xsYWJsZUJveCk7CisKKyAg
ICBpZiAoY2xvc2VzdC5hbGlnbm1lbnQgPiBjYW5kaWRhdGUuYWxpZ25tZW50KSB7CisKKyAgICAg
ICAgaWYgKHNhbWVDb250YWluZXIpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgfSBlbHNlIGlm
IChjbG9zZXN0LmFsaWdubWVudCA+IGNhbmRpZGF0ZS5hbGlnbm1lbnQKLSAgICAgICAgICAgICYm
IChjbG9zZXN0LnBhcmVudEFsaWdubWVudCAmJiBjYW5kaWRhdGUuYWxpZ25tZW50ID4gY2xvc2Vz
dC5wYXJlbnRBbGlnbm1lbnQpKQotICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKGNhbmRp
ZGF0ZS5wYXJlbnRBbGlnbm1lbnQgJiYgY2FuZGlkYXRlLnBhcmVudEFsaWdubWVudCA8IGNsb3Nl
c3QuYWxpZ25tZW50KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgfSBlbHNlIGlmIChjbG9z
ZXN0LmFsaWdubWVudCA8IGNhbmRpZGF0ZS5hbGlnbm1lbnQpIHsKKworICAgICAgICBpZiAoIXNh
bWVDb250YWluZXIpCisgICAgICAgICAgICBpZiAoY2xvc2VzdC5wYXJlbnRBbGlnbm1lbnQgJiYg
Y2FuZGlkYXRlLnBhcmVudEFsaWdubWVudCkKKyAgICAgICAgICAgICAgICBpZiAoY2xvc2VzdC5w
YXJlbnREaXN0YW5jZSA8IGNhbmRpZGF0ZS5wYXJlbnREaXN0YW5jZSkKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgfSBlbHNlIHsKKworICAgICAgICAvLyBXZSB3b3VsZCBnZW5l
cmFsbHkganVzdCBiYWlsIG91dCBpZiBjYW5kaWRhdGUncyBkaXN0YW5jZSBpcyBsYXJnZXIgdGhh
biB0aGF0CisgICAgICAgIC8vIG9mIHRoZSBjbG9zZXN0IGNhbmRpZGF0ZSwgaG93ZXZlciwgdGhl
cmUgYXJlIHNjcm9sbGFibGUgb3ZlcmZsb3dlZCBjb250ZW50IGNvbmRpdGlvbnMKKyAgICAgICAg
Ly8gaW52b2x2ZWQgdG8gYmUgY2hlY2tlZCBmaXJzdDoKKyAgICAgICAgaWYgKGNhbmRpZGF0ZS5k
aXN0YW5jZSA+PSBjbG9zZXN0LmRpc3RhbmNlKSB7CisgICAgICAgICAgICAvLyAxKSBJZiB0aGUg
Y2FuZGlkYXRlIGlzIG5vdCBpbiBhIHNjcm9sbGFibGUgY29udGFpbmVyOworICAgICAgICAgICAg
Ly8gMikgSWYgdGhlIGN1cnJlbnQgY2FuZGlkYXRlIGFuZCB0aGUgY2xvc2VzdCBhcmUgaW4gdGhl
IHNhbWUgc2Nyb2xsYWJsZSBjb250YWluZXI7CisgICAgICAgICAgICAvLyAzKSBJZiB0aGUgY2Fu
ZGlkYXRlIGlzIGluIGEgc2Nyb2xsYWJsZSBjb250YWluZXIgYnV0IHRoZSBjdXJyZW50IGZvY3Vz
ZWQgbm9kZSBpcyBub3QuCisgICAgICAgICAgICBpZiAoIWNhbmRpZGF0ZS5lbmNsb3NpbmdTY3Jv
bGxhYmxlQm94CisgICAgICAgICAgICAgfHwgY2FuZGlkYXRlLmVuY2xvc2luZ1Njcm9sbGFibGVC
b3ggPT0gY2xvc2VzdC5lbmNsb3NpbmdTY3JvbGxhYmxlQm94CisgICAgICAgICAgICAgfHwgKGNh
bmRpZGF0ZS5lbmNsb3NpbmdTY3JvbGxhYmxlQm94ICYmICFmb2N1c2VkTm9kZS0+aXNEZXNjZW5k
YW50T2YoY2FuZGlkYXRlLmVuY2xvc2luZ1Njcm9sbGFibGVCb3gpKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CiAKICAgICBpZiAoY2FuZGlkYXRlLmFsaWdubWVu
dCAhPSBOb25lCiAgICAgIHx8IChjbG9zZXN0LnBhcmVudEFsaWdubWVudCA+PSBjYW5kaWRhdGUu
YWxpZ25tZW50CkBAIC0zNjIsMjUgKzM5MCw0NSBAQCBzdGF0aWMgdm9pZCB1cGRhdGVGb2N1c0Nh
bmRpZGF0ZUlmQ2xvc2VyKE5vZGUqIGZvY3VzZWROb2RlLCBjb25zdCBGb2N1c0NhbmRpZGF0ZQog
ICAgICAgICAvLyBkaXN0YW5jZSBzbyB3ZSBmb3JjZSBpdCB0byBiZSBiaWdnZXIgdGhhbiBhbnkg
cmVzdWx0IHdlIHdpbGwgZ2V0IGZyb20KICAgICAgICAgLy8gc3BhdGlhbERpc3RhbmNlKCkuCiAg
ICAgICAgIGlmIChjbG9zZXN0LmFsaWdubWVudCA8IGNhbmRpZGF0ZS5hbGlnbm1lbnQKLSAgICAg
ICAgICYmIGNsb3Nlc3QucGFyZW50QWxpZ25tZW50IDwgY2FuZGlkYXRlLmFsaWdubWVudCkKKyAg
ICAgICAgICYmIGNsb3Nlc3QucGFyZW50QWxpZ25tZW50IDwgY2FuZGlkYXRlLmFsaWdubWVudAor
ICAgICAgICAgJiYgY2xvc2VzdC5lbmNsb3NpbmdTY3JvbGxhYmxlQm94ID09IGNhbmRpZGF0ZS5l
bmNsb3NpbmdTY3JvbGxhYmxlQm94KQogICAgICAgICAgICAgY2xvc2VzdC5kaXN0YW5jZSA9IG1h
eERpc3RhbmNlKCk7CiAgICAgfQogCi0gICAgLy8gQmFpbCBvdXQgaWYgY2FuZGlkYXRlJ3MgZGlz
dGFuY2UgaXMgbGFyZ2VyIHRoYW4gdGhhdCBvZiB0aGUgY2xvc2VzdCBjYW5kaWRhdGUuCi0gICAg
aWYgKGNhbmRpZGF0ZS5kaXN0YW5jZSA+PSBjbG9zZXN0LmRpc3RhbmNlKQotICAgICAgICByZXR1
cm47Ci0KICAgICBpZiAoY2xvc2VzdC5pc051bGwoKSkgewogICAgICAgICBjbG9zZXN0ID0gY2Fu
ZGlkYXRlOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gSWYgdGhlIGZvY3VzZWQg
bm9kZSBhbmQgdGhlIGNhbmRhZGF0ZSBhcmUgaW4gdGhlIHNhbWUgZG9jdW1lbnQgYW5kIGN1cnJl
bnQKLSAgICAvLyBjbG9zZXN0IGNhbmRpZGF0ZSBpcyBub3QgaW4gYW4ge2l9ZnJhbWUgdGhhdCBp
cyBwcmVmZXJhYmxlIHRvIGdldCBmb2N1c2VkIC4uLgotICAgIGlmIChmb2N1c2VkTm9kZS0+ZG9j
dW1lbnQoKSA9PSBjYW5kaWRhdGUuZG9jdW1lbnQoKQotICAgICAgICAmJiBjYW5kaWRhdGUuZGlz
dGFuY2UgPCBjbG9zZXN0LnBhcmVudERpc3RhbmNlKQotICAgICAgICBjbG9zZXN0ID0gY2FuZGlk
YXRlOwotICAgIGVsc2UgaWYgKGZvY3VzZWROb2RlLT5kb2N1bWVudCgpICE9IGNhbmRpZGF0ZS5k
b2N1bWVudCgpKSB7CisgICAgLy8gSWYgdGhlIGZvY3VzZWQgbm9kZSBhbmQgdGhlIGNhbmRpZGF0
ZSBhcmUgaW4gdGhlIHNhbWUgZG9jdW1lbnQ6CisgICAgaWYgKGZvY3VzZWROb2RlLT5kb2N1bWVu
dCgpID09IGNhbmRpZGF0ZS5kb2N1bWVudCgpKSB7CisKKyAgICAgICAgLy8gRmlyc3QsIGNoZWNr
IGZvciB0aGUgY29tbW9uIGNhc2U6IGZvY3VzIGNhbmRpZGF0ZSBpcyAqbm90KiBpbiBhIHNjcm9s
bGFibGUgY29udGFpbmVyLgorICAgICAgICBpZiAoIWNhbmRpZGF0ZS5lbmNsb3NpbmdTY3JvbGxh
YmxlQm94KSB7CisgICAgICAgICAgICBpZiAoY2FuZGlkYXRlLmRpc3RhbmNlIDwgY2xvc2VzdC5w
YXJlbnREaXN0YW5jZSkgeworICAgICAgICAgICAgICAgIGlmICghY2xvc2VzdC5lbmNsb3NpbmdT
Y3JvbGxhYmxlQm94KQorICAgICAgICAgICAgICAgICAgICBjbG9zZXN0ID0gY2FuZGlkYXRlOwor
CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoY2xvc2VzdC5lbmNsb3NpbmdTY3JvbGxhYmxlQm94
ID09IGNhbmRpZGF0ZS5lbmNsb3NpbmdTY3JvbGxhYmxlQm94KQorICAgICAgICAgICAgICAgICAg
ICBjbG9zZXN0ID0gY2FuZGlkYXRlOworICAgICAgICAgICAgfQorCisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAvLyBXaGVuIGl0IGlzIGluIGEgc2Nyb2xsYWJsZSBjb250YWluZXIsIHRo
ZW46CisgICAgICAgICAgICAvLyAjMSAtIGNoZWNrIGlmIGN1cnJlbnQgZm9jdXNlZCBub2RlIGlz
IGluIHRoZSBzYW1lIGVuY2xvc2luZyBzY3JvbGxhYmxlCisgICAgICAgICAgICAvLyBib3ggdGhh
biBjYW5kaWRhdGUuCisgICAgICAgICAgICBpZiAoZm9jdXNlZE5vZGUtPmlzRGVzY2VuZGFudE9m
KGNhbmRpZGF0ZS5lbmNsb3NpbmdTY3JvbGxhYmxlQm94KSkgeworICAgICAgICAgICAgICAgIGlm
IChjYW5kaWRhdGUuZW5jbG9zaW5nU2Nyb2xsYWJsZUJveCAhPSBjbG9zZXN0LmVuY2xvc2luZ1Nj
cm9sbGFibGVCb3gpCisgICAgICAgICAgICAgICAgICAgIGNsb3Nlc3QgPSBjYW5kaWRhdGU7CisK
KyAgICAgICAgICAgICAgICBlbHNlIGlmIChjYW5kaWRhdGUuZGlzdGFuY2UgPCBjbG9zZXN0LmRp
c3RhbmNlKQorICAgICAgICAgICAgICAgICAgICBjbG9zZXN0ID0gY2FuZGlkYXRlOworCisgICAg
ICAgICAgICAvLyAjMiAtIE9yIG9ubHkgdGhlIHNwYXRpYWwgZGlzdGFuY2UgaXMgZW5vdWdoLgor
ICAgICAgICAgICAgfSBlbHNlIGlmIChjYW5kaWRhdGUuZGlzdGFuY2UgPCBjbG9zZXN0LmRpc3Rh
bmNlKQorICAgICAgICAgICAgICAgIGNsb3Nlc3QgPSBjYW5kaWRhdGU7CisgICAgICAgIH0KKyAg
ICB9IGVsc2UgewogICAgICAgICAvLyBJZiB0aGUgZm9jdXNlZE5vZGUgaXMgaW4gYW4gaW5uZXIg
ZG9jdW1lbnQgYW5kIGNhbmRpZGF0ZSBpcyBpbiBhCiAgICAgICAgIC8vIGRpZmZlcmVudCBkb2N1
bWVudCwgd2Ugb25seSBjb25zaWRlciB0byBjaGFuZ2UgZm9jdXMgaWYgdGhlcmUgaXMgbm90CiAg
ICAgICAgIC8vIGFub3RoZXIgYWxyZWFkeSBnb29kIGZvY3VzYWJsZSBjYW5kaWRhdGUgaW4gdGhl
IHNhbWUgZG9jdW1lbnQgYXMgZm9jdXNlZE5vZGUuCkBAIC0zOTAsNjcgKzQzOCwxMTMgQEAgc3Rh
dGljIHZvaWQgdXBkYXRlRm9jdXNDYW5kaWRhdGVJZkNsb3NlcihOb2RlKiBmb2N1c2VkTm9kZSwg
Y29uc3QgRm9jdXNDYW5kaWRhdGUKICAgICB9CiB9CiAKLXZvaWQgRm9jdXNDb250cm9sbGVyOjpm
aW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKERvY3VtZW50KiBkb2N1bWVudCwgTm9kZSogZm9j
dXNlZE5vZGUsCit2b2lkIEZvY3VzQ29udHJvbGxlcjo6ZmluZEZvY3VzYWJsZU5vZGVJbkRpcmVj
dGlvbihOb2RlKiBvdXR0ZXIsIE5vZGUqIGZvY3VzZWROb2RlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9u
LCBLZXlib2FyZEV2ZW50KiBldmVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEZvY3VzQ2FuZGlkYXRlJiBjbG9zZXN0Rm9jdXNDYW5kaWRhdGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBGb2N1c0NhbmRpZGF0ZSYgY2FuZGlkYXRlUGFyZW50KQogewotICAgIEFTU0VSVChkb2N1bWVu
dCk7Ci0gICAgQVNTRVJUKGNhbmRpZGF0ZVBhcmVudC5pc051bGwoKSB8fCBzdGF0aWNfY2FzdDxI
VE1MRnJhbWVPd25lckVsZW1lbnQqPihjYW5kaWRhdGVQYXJlbnQubm9kZSkpOworICAgIEFTU0VS
VChvdXR0ZXIpOworICAgIEFTU0VSVChjYW5kaWRhdGVQYXJlbnQuaXNOdWxsKCkgfHwgY29udGFp
bmVyLT5oYXNUYWdOYW1lKGZyYW1lVGFnKSB8fCBjb250YWluZXItPmhhc1RhZ05hbWUoaWZyYW1l
VGFnKSB8fCBjb250YWluZXItPmhhc1RhZ05hbWUoZGl2VGFnKSk7CiAKICAgICAvLyBXYWxrIGFs
bCB0aGUgY2hpbGQgbm9kZXMgYW5kIHVwZGF0ZSBjbG9zZXN0Rm9jdXNDYW5kaWRhdGUgaWYgd2Ug
ZmluZCBhIG5lYXJlciBub2RlLgotICAgIGZvciAoTm9kZSogY2FuZGlkYXRlID0gZG9jdW1lbnQt
PmZpcnN0Q2hpbGQoKTsgY2FuZGlkYXRlOyBjYW5kaWRhdGUgPSBjYW5kaWRhdGUtPnRyYXZlcnNl
TmV4dE5vZGUoKSkgeworICAgIE5vZGUqIGNhbmRpZGF0ZSA9IG91dHRlcjsKKyAgICB3aGlsZSAo
Y2FuZGlkYXRlKSB7CisKKyAgICAgICAgLy8gU2Nyb2xsYWJsZSBjb250YWluZXJzIChlLmcuIDxk
aXY+KSBjYXNlLgorICAgICAgICBpZiAoY2FuZGlkYXRlLT5oYXNUYWdOYW1lKGRpdlRhZykpIHsK
KyAgICAgICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBjYW5kaWRhdGUtPnJlbmRlcmVy
KCk7CisgICAgICAgICAgICBpZihyZW5kZXJlciAmJiByZW5kZXJlci0+aXNCb3goKSAmJiB0b1Jl
bmRlckJveChyZW5kZXJlciktPmNhbkJlU2Nyb2xsZWRBbmRIYXNTY3JvbGxhYmxlQXJlYSgpKSB7
CisgICAgICAgICAgICAgICAgZGVlcEZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24oY2FuZGlk
YXRlLCBmb2N1c2VkTm9kZSwgZGlyZWN0aW9uLCBldmVudCwgY2xvc2VzdEZvY3VzQ2FuZGlkYXRl
KTsKKyAgICAgICAgICAgICAgICBjYW5kaWRhdGUgPSBjYW5kaWRhdGUtPnRyYXZlcnNlTmV4dFNp
YmxpbmcoKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgLy8gSW5uZXIgZG9jdW1lbnRzIGNhc2UuCisgICAgICAgIH0gZWxzZSBpZiAoY2FuZGlkYXRl
LT5pc0ZyYW1lT3duZXJFbGVtZW50KCkpIHsKKyAgICAgICAgICAgIGRlZXBGaW5kRm9jdXNhYmxl
Tm9kZUluRGlyZWN0aW9uKGNhbmRpZGF0ZSwgZm9jdXNlZE5vZGUsIGRpcmVjdGlvbiwgZXZlbnQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZXN0Rm9j
dXNDYW5kaWRhdGUpOworCisgICAgICAgIH0gZWxzZSBpZiAoY2FuZGlkYXRlICE9IGZvY3VzZWRO
b2RlICYmIGNhbmRpZGF0ZS0+aXNLZXlib2FyZEZvY3VzYWJsZShldmVudCkpIHsKIAotICAgICAg
ICBpZiAoY2FuZGlkYXRlLT5pc0ZyYW1lT3duZXJFbGVtZW50KCkpCi0gICAgICAgICAgICBkZWVw
RmluZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbihmb2N1c2VkTm9kZSwgY2FuZGlkYXRlLCBkaXJl
Y3Rpb24sIGV2ZW50LCBjbG9zZXN0Rm9jdXNDYW5kaWRhdGUpOwotICAgICAgICBlbHNlIGlmIChj
YW5kaWRhdGUgIT0gZm9jdXNlZE5vZGUgJiYgY2FuZGlkYXRlLT5pc0tleWJvYXJkRm9jdXNhYmxl
KGV2ZW50KSkgewogICAgICAgICAgICAgRm9jdXNDYW5kaWRhdGUgY3VycmVudEZvY3VzQ2FuZGlk
YXRlKGNhbmRpZGF0ZSk7CiAKKyAgICAgICAgICAgIC8vIFRoZXJlIGFyZSB0d28gd2F5cyB0byBp
ZGVudGlmeSB3ZSBhcmUgaW4gYSByZWN1cnNpdmUgY2FsbCBmcm9tIGRlZXBGaW5kRm9jdXNhYmxl
Tm9kZUluRGlyZWN0aW9uCisgICAgICAgICAgICAvLyAoaS5lLiBwcm9jZXNzaW5nIGFuIGVsZW1l
bnQgaW4gYW4gaWZyYW1lLCBmcmFtZSBvciBhIHNjcm9sbGFibGUgZGl2KToKKworICAgICAgICAg
ICAgLy8gMSkgSWYgY2FuZGlkYXRlUGFyZW50IGlzIG5vdCBudWxsLCBhbmQgaXQgaG9sZHMgdGhl
IGRpc3RhbmNlIGFuZCBhbGlnbm1lbnQgZGF0YSBvZiB0aGUKKyAgICAgICAgICAgIC8vIHBhcmVu
dCBjb250YWluZXIgZWxlbWVudCBpdHNlbGYuCisgICAgICAgICAgICBpZiAoIWNhbmRpZGF0ZVBh
cmVudC5pc051bGwoKSkgeworICAgICAgICAgICAgICAgIGN1cnJlbnRGb2N1c0NhbmRpZGF0ZS5w
YXJlbnRBbGlnbm1lbnQgPSBjYW5kaWRhdGVQYXJlbnQuYWxpZ25tZW50OworICAgICAgICAgICAg
ICAgIGN1cnJlbnRGb2N1c0NhbmRpZGF0ZS5wYXJlbnREaXN0YW5jZSA9IGNhbmRpZGF0ZVBhcmVu
dC5kaXN0YW5jZTsKKyAgICAgICAgICAgICAgICBjdXJyZW50Rm9jdXNDYW5kaWRhdGUuZW5jbG9z
aW5nU2Nyb2xsYWJsZUJveCA9IGNhbmRpZGF0ZVBhcmVudC5ub2RlOworCisgICAgICAgICAgICAv
LyAyKSBQYXJlbnQgb2Ygb3V0dGVyIGlzIGVpdGhlciBhIGRpdiwgYSBmcmFtZSBvciBhbiBpZnJh
bWUgdGFnLgorICAgICAgICAgICAgfSBlbHNlIGlmIChvdXR0ZXItPnBhcmVudCgpLT5oYXNUYWdO
YW1lKGRpdlRhZykgfHwgIWlzSW5Sb290RG9jdW1lbnQob3V0dGVyKSkKKyAgICAgICAgICAgICAg
ICBjdXJyZW50Rm9jdXNDYW5kaWRhdGUuZW5jbG9zaW5nU2Nyb2xsYWJsZUJveCA9IG91dHRlci0+
cGFyZW50KCk7CisKICAgICAgICAgICAgIC8vIEdldCBkaXN0YW5jZSBhbmQgYWxpZ25tZW50IGZy
b20gY3VycmVudCBjYW5kaWRhdGUuCiAgICAgICAgICAgICBkaXN0YW5jZURhdGFGb3JOb2RlKGRp
cmVjdGlvbiwgZm9jdXNlZE5vZGUsIGN1cnJlbnRGb2N1c0NhbmRpZGF0ZSk7CiAKICAgICAgICAg
ICAgIC8vIEJhaWwgb3V0IGlmIGRpc3RhbmNlIGlzIG1heGltdW0uCi0gICAgICAgICAgICBpZiAo
Y3VycmVudEZvY3VzQ2FuZGlkYXRlLmRpc3RhbmNlID09IG1heERpc3RhbmNlKCkpCisgICAgICAg
ICAgICBpZiAoY3VycmVudEZvY3VzQ2FuZGlkYXRlLmRpc3RhbmNlID09IG1heERpc3RhbmNlKCkp
IHsKKyAgICAgICAgICAgICAgICBjYW5kaWRhdGUgPSBjYW5kaWRhdGUtPnRyYXZlcnNlTmV4dE5v
ZGUob3V0dGVyLT5wYXJlbnQoKSk7CiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAg
ICAgICAgIC8vIElmIGNhbmRpZGF0ZVBhcmVudCBpcyBub3QgbnVsbCwgaXQgbWVhbnMgdGhhdCB3
ZSBhcmUgaW4gYSByZWN1cnNpdmUgY2FsbAotICAgICAgICAgICAgLy8gZnJvbSBkZWVwRmluZUZv
Y3VzYWJsZU5vZGVJbkRpcmVjdGlvbiAoaS5lLiBwcm9jZXNzaW5nIGFuIGVsZW1lbnQgaW4gYW4g
aWZyYW1lKSwKLSAgICAgICAgICAgIC8vIGFuZCBob2xkcyB0aGUgZGlzdGFuY2UgYW5kIGFsaWdu
bWVudCBkYXRhIG9mIHRoZSBpZnJhbWUgZWxlbWVudCBpdHNlbGYuCi0gICAgICAgICAgICBpZiAo
IWNhbmRpZGF0ZVBhcmVudC5pc051bGwoKSkgewotICAgICAgICAgICAgICAgIGN1cnJlbnRGb2N1
c0NhbmRpZGF0ZS5wYXJlbnRBbGlnbm1lbnQgPSBjYW5kaWRhdGVQYXJlbnQuYWxpZ25tZW50Owot
ICAgICAgICAgICAgICAgIGN1cnJlbnRGb2N1c0NhbmRpZGF0ZS5wYXJlbnREaXN0YW5jZSA9IGNh
bmRpZGF0ZVBhcmVudC5kaXN0YW5jZTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgdXBk
YXRlRm9jdXNDYW5kaWRhdGVJZkNsb3Nlcihmb2N1c2VkTm9kZSwgY3VycmVudEZvY3VzQ2FuZGlk
YXRlLCBjbG9zZXN0Rm9jdXNDYW5kaWRhdGUpOwogICAgICAgICB9CisKKyAgICAgICAgY2FuZGlk
YXRlID0gY2FuZGlkYXRlLT50cmF2ZXJzZU5leHROb2RlKG91dHRlci0+cGFyZW50KCkpOwogICAg
IH0KIH0KIAotdm9pZCBGb2N1c0NvbnRyb2xsZXI6OmRlZXBGaW5kRm9jdXNhYmxlTm9kZUluRGly
ZWN0aW9uKE5vZGUqIGZvY3VzZWROb2RlLCBOb2RlKiBjYW5kaWRhdGUsCit2b2lkIEZvY3VzQ29u
dHJvbGxlcjo6ZGVlcEZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24oTm9kZSogY29udGFpbmVy
LCBOb2RlKiBmb2N1c2VkTm9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIEtleWJvYXJkRXZl
bnQqIGV2ZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEZvY3VzQ2FuZGlkYXRlJiBjbG9zZXN0Rm9jdXNDYW5kaWRhdGUpCiB7Ci0gICAg
SFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lciA9IHN0YXRpY19jYXN0PEhUTUxGcmFtZU93bmVy
RWxlbWVudCo+KGNhbmRpZGF0ZSk7Ci0gICAgaWYgKCFvd25lci0+Y29udGVudEZyYW1lKCkpCisg
ICAgQVNTRVJUKGNvbnRhaW5lci0+aGFzVGFnTmFtZShmcmFtZVRhZykgfHwgY29udGFpbmVyLT5o
YXNUYWdOYW1lKGlmcmFtZVRhZykgfHwgY29udGFpbmVyLT5oYXNUYWdOYW1lKGRpdlRhZykpOwor
CisgICAgLy8gVHJhY2sgaWYgZm9jdXNlZE5vZGUgaXMgYSBkZXNjZW5kYW50IG9yIG5vdCBvZiB0
aGUgY3VycmVudCBjb250YWluZXIgbm9kZSBiZWluZyBwcm9jZXNzZWQuCisgICAgYm9vbCBkZXNj
ZW5kYW50T2ZDb250YWluZXIgPSBmYWxzZTsKKyAgICBOb2RlKiBmaXJzdENoaWxkID0gMDsKKwor
ICAgIC8vIElmcmFtZSBvciBGcmFtZS4KKyAgICBpZiAoY29udGFpbmVyLT5oYXNUYWdOYW1lKGZy
YW1lVGFnKSB8fCBjb250YWluZXItPmhhc1RhZ05hbWUoaWZyYW1lVGFnKSkgeworCisgICAgICAg
IEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXIgPSBzdGF0aWNfY2FzdDxIVE1MRnJhbWVPd25l
ckVsZW1lbnQqPihjb250YWluZXIpOworICAgICAgICBpZiAoIW93bmVyLT5jb250ZW50RnJhbWUo
KSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBEb2N1bWVudCogaW5uZXJEb2N1bWVu
dCA9IG93bmVyLT5jb250ZW50RnJhbWUoKS0+ZG9jdW1lbnQoKTsKKyAgICAgICAgaWYgKCFpbm5l
ckRvY3VtZW50KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGRlc2NlbmRhbnRPZkNv
bnRhaW5lciA9IGlubmVyRG9jdW1lbnQgPT0gZm9jdXNlZE5vZGUtPmRvY3VtZW50KCk7CisgICAg
ICAgIGZpcnN0Q2hpbGQgPSBpbm5lckRvY3VtZW50LT5maXJzdENoaWxkKCk7CisKKyAgICAvLyBT
Y3JvbGxhYmxlIGRpdi4KKyAgICB9IGVsc2UgaWYgKGNvbnRhaW5lci0+aGFzVGFnTmFtZShkaXZU
YWcpKSB7CisKKyAgICAgICAgZmlyc3RDaGlsZCA9IGNvbnRhaW5lci0+Zmlyc3RDaGlsZCgpOwor
ICAgICAgICBkZXNjZW5kYW50T2ZDb250YWluZXIgPSBmb2N1c2VkTm9kZS0+aXNEZXNjZW5kYW50
T2YoY29udGFpbmVyKTsKKyAgICB9CisKKyAgICBpZiAoZGVzY2VuZGFudE9mQ29udGFpbmVyKSB7
CisgICAgICAgIGZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24oZmlyc3RDaGlsZCwgZm9jdXNl
ZE5vZGUsIGRpcmVjdGlvbiwgZXZlbnQsIGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZSk7CiAgICAgICAg
IHJldHVybjsKKyAgICB9CiAKLSAgICBEb2N1bWVudCogaW5uZXJEb2N1bWVudCA9IG93bmVyLT5j
b250ZW50RnJhbWUoKS0+ZG9jdW1lbnQoKTsKLSAgICBpZiAoIWlubmVyRG9jdW1lbnQpCisgICAg
Ly8gQ2hlY2sgaWYgdGhlIGN1cnJlbnQgY29udGFpbmVyIGVsZW1lbnQgaXRzZWxmIGlzIGEgZ29v
ZCBjYW5kaWRhdGUKKyAgICAvLyB0byBtb3ZlIGZvY3VzIHRvLiBJZiBpdCBpcywgdGhlbiB3ZSB0
cmF2ZXJzZSBpdHMgaW5uZXIgbm9kZXMuCisgICAgRm9jdXNDYW5kaWRhdGUgY2FuZGlkYXRlUGFy
ZW50ID0gRm9jdXNDYW5kaWRhdGUoY29udGFpbmVyKTsKKyAgICBkaXN0YW5jZURhdGFGb3JOb2Rl
KGRpcmVjdGlvbiwgZm9jdXNlZE5vZGUsIGNhbmRpZGF0ZVBhcmVudCk7CisKKyAgICAvLyBCYWls
IG91dCBpZiBkaXN0YW5jZSBpcyBtYXhpbXVtLgorICAgIGlmIChjYW5kaWRhdGVQYXJlbnQuZGlz
dGFuY2UgPT0gbWF4RGlzdGFuY2UoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlubmVy
RG9jdW1lbnQgPT0gZm9jdXNlZE5vZGUtPmRvY3VtZW50KCkpCi0gICAgICAgIGZpbmRGb2N1c2Fi
bGVOb2RlSW5EaXJlY3Rpb24oaW5uZXJEb2N1bWVudCwgZm9jdXNlZE5vZGUsIGRpcmVjdGlvbiwg
ZXZlbnQsIGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8vIENo
ZWNrIGlmIHRoZSBjdXJyZW50IHtpfWZyYW1lIGVsZW1lbnQgaXRzZWxmIGlzIGEgZ29vZCBjYW5k
aWRhdGUKLSAgICAgICAgLy8gdG8gbW92ZSBmb2N1cyB0by4gSWYgaXQgaXMsIHRoZW4gd2UgdHJh
dmVyc2UgaXRzIGlubmVyIG5vZGVzLgotICAgICAgICBGb2N1c0NhbmRpZGF0ZSBjYW5kaWRhdGVQ
YXJlbnQgPSBGb2N1c0NhbmRpZGF0ZShjYW5kaWRhdGUpOwotICAgICAgICBkaXN0YW5jZURhdGFG
b3JOb2RlKGRpcmVjdGlvbiwgZm9jdXNlZE5vZGUsIGNhbmRpZGF0ZVBhcmVudCk7Ci0KLSAgICAg
ICAgLy8gRklYTUU6IENvbnNpZGVyIGFsaWdubWVudD8KLSAgICAgICAgaWYgKGNhbmRpZGF0ZVBh
cmVudC5kaXN0YW5jZSA8IGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZS5kaXN0YW5jZSkKLSAgICAgICAg
ICAgIGZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24oaW5uZXJEb2N1bWVudCwgZm9jdXNlZE5v
ZGUsIGRpcmVjdGlvbiwgZXZlbnQsIGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZSwgY2FuZGlkYXRlUGFy
ZW50KTsKLSAgICB9CisgICAgLy8gRklYTUU6IENvbnNpZGVyIGFsaWdubWVudD8KKyAgICBpZiAo
Y2FuZGlkYXRlUGFyZW50LmRpc3RhbmNlIDwgY2xvc2VzdEZvY3VzQ2FuZGlkYXRlLmRpc3RhbmNl
KQorICAgICAgICBmaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKGZpcnN0Q2hpbGQsIGZvY3Vz
ZWROb2RlLCBkaXJlY3Rpb24sIGV2ZW50LCBjbG9zZXN0Rm9jdXNDYW5kaWRhdGUsIGNhbmRpZGF0
ZVBhcmVudCk7CiB9CiAKIHN0YXRpYyBib29sIHJlbGlucXVpc2hlc0VkaXRpbmdGb2N1cyhOb2Rl
ICpub2RlKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5oIGIvV2Vi
Q29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5oCmluZGV4IGRmYTM3ODAuLjQ0MTA4MzMgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuaAorKysgYi9XZWJDb3JlL3BhZ2Uv
Rm9jdXNDb250cm9sbGVyLmgKQEAgLTYzLDkgKzYzLDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBh
ZHZhbmNlRm9jdXNEaXJlY3Rpb25hbGx5KEZvY3VzRGlyZWN0aW9uLCBLZXlib2FyZEV2ZW50Kik7
CiAgICAgYm9vbCBhZHZhbmNlRm9jdXNJbkRvY3VtZW50T3JkZXIoRm9jdXNEaXJlY3Rpb24sIEtl
eWJvYXJkRXZlbnQqLCBib29sIGluaXRpYWxGb2N1cyk7CiAKLSAgICB2b2lkIGZpbmRGb2N1c2Fi
bGVOb2RlSW5EaXJlY3Rpb24oRG9jdW1lbnQqLCBOb2RlKiwgRm9jdXNEaXJlY3Rpb24sIEtleWJv
YXJkRXZlbnQqLCBGb2N1c0NhbmRpZGF0ZSYgY2xvc2VzdEZvY3VzQ2FuZGlkYXRlLAorICAgIHZv
aWQgZmluZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbihOb2RlKiBvdXR0ZXIsIE5vZGUqLCBGb2N1
c0RpcmVjdGlvbiwgS2V5Ym9hcmRFdmVudCosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEZvY3VzQ2FuZGlkYXRlJiBjbG9zZXN0Rm9jdXNDYW5kaWRhdGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZvY3VzQ2FuZGlkYXRlJiBwYXJl
bnRDYW5kaWRhdGUgPSBGb2N1c0NhbmRpZGF0ZSgpKTsKLSAgICB2b2lkIGRlZXBGaW5kRm9jdXNh
YmxlTm9kZUluRGlyZWN0aW9uKE5vZGUqLCBOb2RlKiwgRm9jdXNEaXJlY3Rpb24sIEtleWJvYXJk
RXZlbnQqLCBGb2N1c0NhbmRpZGF0ZSYpOworICAgIHZvaWQgZGVlcEZpbmRGb2N1c2FibGVOb2Rl
SW5EaXJlY3Rpb24oTm9kZSogY29udGFpbmVyLCBOb2RlKiBmb2N1c2VkLCBGb2N1c0RpcmVjdGlv
biwgS2V5Ym9hcmRFdmVudCosIEZvY3VzQ2FuZGlkYXRlJik7CiAKICAgICBQYWdlKiBtX3BhZ2U7
CiAgICAgUmVmUHRyPEZyYW1lPiBtX2ZvY3VzZWRGcmFtZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAgYi9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRp
b24uY3BwCmluZGV4IDliYjkwM2QuLjQ0NTI4MGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9T
cGF0aWFsTmF2aWdhdGlvbi5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9u
LmNwcApAQCAtOTUsNiArOTUsNyBAQCB2b2lkIGRpc3RhbmNlRGF0YUZvck5vZGUoRm9jdXNEaXJl
Y3Rpb24gZGlyZWN0aW9uLCBOb2RlKiBzdGFydCwgRm9jdXNDYW5kaWRhdGUmCiAgICAgLy8gVGhl
IGRpc3RhbmNlIGJldHdlZW4gdHdvIG5vZGVzIGlzIG5vdCB0byBiZSBjb25zaWRlcmVkIGFsb25l
IHdoZW4gZXZhbHVhdGluZy9sb29raW5nCiAgICAgLy8gZm9yIHRoZSBiZXN0IGZvY3VzIGNhbmRp
ZGF0ZSBub2RlLiBBbGlnbm1lbnQgb2YgcmVjdHMgY2FuIGJlIGFsc28gYSBnb29kIHBvaW50IHRv
IGJlCiAgICAgLy8gY29uc2lkZXJlZCBpbiBvcmRlciB0byBtYWtlIHRoZSBhbGdvcml0aG0gdG8g
YmVoYXZpb3IgaW4gYSBtb3JlIGludHVpdGl2ZSB3YXkuCisKICAgICBjYW5kaWRhdGUuYWxpZ25t
ZW50ID0gYWxpZ25tZW50Rm9yUmVjdHMoZGlyZWN0aW9uLCBjdXJSZWN0LCB0YXJnZXRSZWN0KTsK
ICAgICBjYW5kaWRhdGUuZGlzdGFuY2UgPSBzcGF0aWFsRGlzdGFuY2UoZGlyZWN0aW9uLCBjdXJS
ZWN0LCB0YXJnZXRSZWN0KTsKIH0KQEAgLTExNCwxMiArMTE1LDEzIEBAIHN0YXRpYyBJbnRSZWN0
IHJlbmRlclJlY3RSZWxhdGl2ZVRvUm9vdERvY3VtZW50KFJlbmRlck9iamVjdCogcmVuZGVyKQog
ICAgIC8vIGRvY3VtZW50LCB3ZSBvbmx5IGNvbnNpZGVyIGl0cyBzY3JvbGxPZmZzZXQgaWYgaXQg
aXMgbm90IG9mZnNjcmVlbi4KICAgICBOb2RlKiBub2RlID0gcmVuZGVyLT5ub2RlKCk7CiAgICAg
RG9jdW1lbnQqIG1haW5Eb2N1bWVudCA9IG5vZGUtPmRvY3VtZW50KCktPnBhZ2UoKS0+bWFpbkZy
YW1lKCktPmRvY3VtZW50KCk7CisKICAgICBib29sIGNvbnNpZGVyU2Nyb2xsT2Zmc2V0ID0gIWhh
c09mZnNjcmVlblJlY3Qobm9kZSkgJiYgbm9kZS0+ZG9jdW1lbnQoKSAhPSBtYWluRG9jdW1lbnQ7
CiAKLSAgICBpZiAoY29uc2lkZXJTY3JvbGxPZmZzZXQpIHsKLSAgICAgICAgaWYgKEZyYW1lVmll
dyogZnJhbWVWaWV3ID0gcmVuZGVyLT5ub2RlKCktPmRvY3VtZW50KCktPnZpZXcoKSkKLSAgICAg
ICAgICAgIHJlY3QubW92ZSgtZnJhbWVWaWV3LT5zY3JvbGxPZmZzZXQoKSk7Ci0gICAgfQorICAg
ICBpZiAoY29uc2lkZXJTY3JvbGxPZmZzZXQpIHsKKyAgICAgICAgIGlmIChGcmFtZVZpZXcqIGZy
YW1lVmlldyA9IHJlbmRlci0+bm9kZSgpLT5kb2N1bWVudCgpLT52aWV3KCkpCisgICAgICAgICAg
ICAgcmVjdC5tb3ZlKC1mcmFtZVZpZXctPnNjcm9sbE9mZnNldCgpKTsKKyAgICAgfQogCiAgICAg
Ly8gSGFuZGxlIG5lc3RlZCBmcmFtZXMuCiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSByZW5kZXIt
PmRvY3VtZW50KCktPmZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnBhcmVu
dCgpKSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uaCBiL1dl
YkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5oCmluZGV4IGRmMGFjYjQuLjZkYTFiYmEgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5oCisrKyBiL1dlYkNvcmUv
cGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5oCkBAIC05OCw2ICs5OCw3IEBAIGVudW0gUmVjdHNBbGln
bm1lbnQgewogc3RydWN0IEZvY3VzQ2FuZGlkYXRlIHsKICAgICBGb2N1c0NhbmRpZGF0ZSgpCiAg
ICAgICAgIDogbm9kZSgwKQorICAgICAgICAsIGVuY2xvc2luZ1Njcm9sbGFibGVCb3goMCkKICAg
ICAgICAgLCBkaXN0YW5jZShtYXhEaXN0YW5jZSgpKQogICAgICAgICAsIHBhcmVudERpc3RhbmNl
KG1heERpc3RhbmNlKCkpCiAgICAgICAgICwgYWxpZ25tZW50KE5vbmUpCkBAIC0xMDcsNiArMTA4
LDcgQEAgc3RydWN0IEZvY3VzQ2FuZGlkYXRlIHsKIAogICAgIEZvY3VzQ2FuZGlkYXRlKE5vZGUq
IG4pCiAgICAgICAgIDogbm9kZShuKQorICAgICAgICAsIGVuY2xvc2luZ1Njcm9sbGFibGVCb3go
MCkKICAgICAgICAgLCBkaXN0YW5jZShtYXhEaXN0YW5jZSgpKQogICAgICAgICAsIHBhcmVudERp
c3RhbmNlKG1heERpc3RhbmNlKCkpCiAgICAgICAgICwgYWxpZ25tZW50KE5vbmUpCkBAIC0xMTgs
NiArMTIwLDcgQEAgc3RydWN0IEZvY3VzQ2FuZGlkYXRlIHsKICAgICBEb2N1bWVudCogZG9jdW1l
bnQoKSBjb25zdCB7IHJldHVybiBub2RlID8gbm9kZS0+ZG9jdW1lbnQoKSA6IDA7IH0KIAogICAg
IE5vZGUqIG5vZGU7CisgICAgTm9kZSogZW5jbG9zaW5nU2Nyb2xsYWJsZUJveDsKICAgICBsb25n
IGxvbmcgZGlzdGFuY2U7CiAgICAgbG9uZyBsb25nIHBhcmVudERpc3RhbmNlOwogICAgIFJlY3Rz
QWxpZ25tZW50IGFsaWdubWVudDsKLS0gCjEuNi4wLjQKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53683</attachid>
            <date>2010-04-19 09:19:37 -0700</date>
            <delta_ts>2010-05-14 08:45:48 -0700</delta_ts>
            <desc>patch v3</desc>
            <filename>0001-WebCore-Spatial-Navigation-make-it-work-with-focus.patch</filename>
            <type>text/plain</type>
            <size>20061</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSA3YmE2ODg3MmJmOWQzOWI2ZmIyMGY5ZDkyMzg0MWQ4MWU2ZGU2MThmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4K
RGF0ZTogTW9uLCAxOSBBcHIgMjAxMCAxMTo1NToyNCAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIFdl
YkNvcmU6IFNwYXRpYWwgTmF2aWdhdGlvbjogbWFrZSBpdCB3b3JrIHdpdGggZm9jdXNhYmxlIGVs
ZW1lbnRzIGluIG92ZXJmbG93IGNvbnRlbnQKIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zNjQ2MwoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuClBhdGNoIGJ5IEFu
dG9uaW8gR29tZXMgPHRvbmlraXRvb0B3ZWJraXQub3JnPgoKVGVzdDogZmFzdC9ldmVudHMvc3Bh
dGlhbC1uYXZpZ2F0aW9uL3NuYXYtY29udGVudC1vdmVyZmxvdy5odG1sCgoqIHBhZ2UvRm9jdXND
b250cm9sbGVyLmNwcDoKKFdlYkNvcmU6OnVwZGF0ZUZvY3VzQ2FuZGlkYXRlSWZDbG9zZXIpOgoo
V2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjpmaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKToK
KiBwYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcDoKKFdlYkNvcmU6OnJlbmRlclJlY3RSZWxhdGl2
ZVRvUm9vdERvY3VtZW50KToKKiBwYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmg6CihXZWJDb3JlOjpG
b2N1c0NhbmRpZGF0ZTo6Rm9jdXNDYW5kaWRhdGUpOgoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiODg4ODc5Li5lNjdhMzhm
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xNTUzLDE2ICsxNTUzLDI2IEBACiAgICAgICAgIFVucmV2aWV3ZWQsIHNraXBw
aW5nIHR3byB0ZXN0cyBvbiBDaHJvbWl1bSBiZWNhdXNlIHRoZXkgZmFpbC4KIAogICAgICAgICAq
IHBsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dDoKIAogMjAxMC0wNC0xMiAg
QW50b25pbyBHb21lcyAgPHRvbmlraXRvb0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IFNpbW9uIEZyYXNlci4KIAorICAgICAgICBTcGF0aWFsIE5hdmlnYXRpb246IG1ha2UgaXQg
d29yayB3aXRoIGZvY3VzYWJsZSBlbGVtZW50cyBpbiBvdmVyZmxvdyBjb250ZW50CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjQ2MworCisgICAgICAg
ICogZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtY29udGVudC1vdmVyZmxvdy1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdh
dGlvbi9zbmF2LWNvbnRlbnQtb3ZlcmZsb3cuaHRtbDogQWRkZWQuCisKKzIwMTAtMDQtMTIgIEFu
dG9uaW8gR29tZXMgIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKwogICAgICAgICBTcGF0aWFsIE5hdmlnYXRpb246IG1ha2UgcmVu
ZGVyUmVjdFJlbGF0aXZlVG9Sb290RG9jdW1lbnQgbWV0aG9kIHRvIGZhbGxiYWNrIHRvIGdldFJl
Y3QoKSBvZiBFbGVtZW50IHdoZW4gbmVlZGVkCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zNzQ2MQogCiAgICAgICAgICogZmFzdC9ldmVudHMvc3BhdGlh
bC1uYXZpZ2F0aW9uL3NuYXYtc2ltcGxlLWNvbnRlbnQtb3ZlcmZsb3ctZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KICAgICAgICAgKiBmYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1zaW1w
bGUtY29udGVudC1vdmVyZmxvdy5odG1sOiBBZGRlZC4KIAogCiAyMDEwLTA0LTA4ICB5YWVsIGFo
YXJvbiAgPHlhZWwuYWhhcm9uQG5va2lhLmNvbT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWNvbnRlbnQtb3ZlcmZsb3ctZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYt
Y29udGVudC1vdmVyZmxvdy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uMTQ3MDYyZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWNvbnRlbnQtb3ZlcmZsb3ctZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMzEgQEAKK0xpbmtfMSBpcyBhIG5vcm1hbCBsaW5rLgorCitCZWxvdyBpcyBh
IHNjcm9sbGFibGUgRGl2IGNyZWF0ZWQgd2l0aCB0aGUgQ1NTIHByb3BlcnR5IG92ZXJmbG93Lgor
CitJdCBoYXMgYSB2aXNpYmxlIGxpbmtfMi4KKworCisKKworCisKKworCisKKworCisKKworCisK
Ky4uLiBhbmQgYW4gb3ZlcmZsb3dlZCBsaW5rIGxpa2UgdGhpcy4KKworQW5kIHRoaXMgaXMgYW5v
dGhlciBub3JtYWwgbGlua18zLgorCitQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuZ2V0QXR0
cmlidXRlKCJpZCIpIGlzICIxIgorUEFTUyBkb2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJp
YnV0ZSgiaWQiKSBpcyAiMiIKK1BBU1MgZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1
dGUoImlkIikgaXMgIjMiCitQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRl
KCJpZCIpIGlzICIyIgorUEFTUyBkb2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgi
aWQiKSBpcyAiMSIKK1BBU1MgZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoImlk
IikgaXMgInN0YXJ0IgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zcGF0
aWFsLW5hdmlnYXRpb24vc25hdi1jb250ZW50LW92ZXJmbG93Lmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1jb250ZW50LW92ZXJmbG93Lmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTRiNTExYgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWNv
bnRlbnQtb3ZlcmZsb3cuaHRtbApAQCAtMCwwICsxLDEyMCBAQAorPGh0bWw+CisgIDwhLS0KKyAg
ICBUaGlzIHRlc3QgZW5zdXJlcyB0aGUgY29udGVudCBvdmVyZmxvdyB0cmF2ZXJzYWwgY29ycmVj
dG5lc3Mgb2YgU3BhdGlhbCBOYXZpZ2F0aW9uCisgICAgYWxnb3JpdGhtOiBmb2N1c2FibGUgZWxl
bWVudHMgaW4gc2Nyb2xsYWJsZSBjb250YWluZXJzIChlLmcuIDxkaXY+KSBzaG91bGQgYmUKKyAg
ICBhY2Nlc3NpYmxlLCBpbmNsdWRpbmcgb2Zmc2NyZWVuIGNvbnRlbnQuCisKKyAgICAqIFByZS1j
b25kaXRpb25zOgorICAgIDEpIERSVCBzdXBwb3J0IGZvciBTTmF2IGVuYWJsZS9kaXNhYmxlLgor
CisgICAgKiBOYXZpZ2F0aW9uIHN0ZXBzOgorICAgIDEpIExvYWRzIHRoaXMgcGFnZSwgZm9jdXMg
Z29lcyB0byAic3RhcnQiIGF1dG9tYXRpY2FsbHkuCisgICAgMikgTW92ZSBmb2N1cyBkb3duIHRv
IHRoZSB2aXNpYmxlIGZvY3VzYWJsZSBlbGVtZW50IGluCisgICAgICAgc2Nyb2xsYWJsZSBkaXYu
CisgICAgMykgVHJhdmVyc2UgdGhlIHBhZ2UgdGhyb3VnaCBvdGhlciBmb2N1c2FibGUgZWxlbWVu
dHMgZG93biB0aGUgcGFnZS4KKyAgICAgICBhbmQgdGhlbiBiYWNrIHVwLgorCisgICAgKiBFeHBl
Y3RlZCByZXN1bHRzOiBBbGwgZm9jdXNhYmxlIGVsZW1lbnQgaW4gc2Nyb2xsYWJsZSBjb250ZW50
LCBpbmNsdWRpbmcKKyAgICBvZmZzY3JlZW4gb25lcywgc2hvdWxkIGJlIGFjY2Vzc2libGUgdmlh
IFNOYXYuIC0tPgorICA8aGVhZD4KKyAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgICAg
ZGl2LnNjcm9sbCB7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgICAgIHdpZHRoOiAzMDBw
eDsKKyAgICAgICAgb3ZlcmZsb3c6IGF1dG87CisgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICM2
NjY7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNjY2M7CisgICAgICAgIHBhZGRpbmc6IDhw
eDsKKyAgICAgIH0KKyAgICA8L3N0eWxlPgorCisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291
cmNlcy9zcGF0aWFsLW5hdmlnYXRpb24tdXRpbHMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQg
dHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCI+CisKKyAgICB2YXIgcmVzdWx0TWFwMSA9IFsK
KyAgICAgIFsiRG93biIsICIxIl0sCisgICAgICBbIiIsICIiXQorICAgIF07CisKKyAgICB2YXIg
cmVzdWx0TWFwMiA9IFsKKyAgICAgIFsiRG93biIsICIyIl0sCisgICAgICBbIkRvd24iLCAiMyJd
LAorICAgICAgWyJVcCIsICIyIl0sCisgICAgICBbIiIsICIiXQorICAgIF07CisKKyAgICB2YXIg
cmVzdWx0TWFwMyA9IFsKKyAgICAgIFsiVXAiLCAiMSJdLAorICAgICAgWyJVcCIsICJzdGFydCJd
LAorICAgICAgWyJET05FIiwgIkRPTkUiXQorICAgIF0KKworICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKyAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxl
ZCh0cnVlKTsKKyAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgi
V2ViS2l0VGFiVG9MaW5rc1ByZWZlcmVuY2VLZXkiLCAxKTsKKyAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBydW5UZXN0KCkK
KyAgICB7CisgICAgICAvLyBzdGFydGluZyB0aGUgdGVzdCBpdHNlbGY6IGdldCB0byBhIGtub3du
IHBsYWNlLgorICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0YXJ0IikuZm9jdXMoKTsK
KworICAgICAgc2V0VGltZW91dChzdGVwMSwgMCk7CisgICAgICBzZXRUaW1lb3V0KHN0ZXAyLCA1
MCk7CisgICAgICBzZXRUaW1lb3V0KHN0ZXAzLCAxNTApOworICAgIH0KKworICAgIGZ1bmN0aW9u
IHN0ZXAxKCkKKyAgICB7CisgICAgICAvLyBBY3Rpb25zIGluICdyZXN1bHRNYXAxJyBzaG91bGQg
a2VlcCB0aGUgZm9jdXMgaW4gdGhlIGN1cnJlbnRseQorICAgICAgLy8gZm9jdXNlZCBlbGVtZW50
ICgnc3RhcnQnKSBvbmNlIHRoZSBiZXN0IGNhbmRpZGF0ZSAoJ2VuZCcpIGlzIG5vdAorICAgICAg
Ly8gdmlzaWJsZSBpbiBjdXJyZW50IHZpZXdwb3J0LgorICAgICAgaW5pdFRlc3QocmVzdWx0TWFw
MSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDIoKQorICAgIHsKKyAgICAgIC8vIFRoZW4g
aXQgc2Nyb2xscyBkb3duIHRvIHRoZSBlbmQgb2YgdGhlIGRpdiAuLi4KKyAgICAgIGlmICh3aW5k
b3cuZXZlbnRTZW5kZXIpCisgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oImVuZCIpOworCisg
ICAgICAvLyBBbmQgJ3Jlc3VsdE1hcDInIHJlLXRyaWVzIHRvIG1vdmUgZm9jdXMgZG93bi4KKyAg
ICAgIGluaXRUZXN0KHJlc3VsdE1hcDIpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXAzKCkK
KyAgICB7CisgICAgICAvLyBUaGVuIGl0IHNjcm9sbHMgYmFjayB1cCB0aGUgZGl2IC4uLgorICAg
ICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikKKyAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigi
aG9tZSIpOworCisgICAgICBpbml0VGVzdChyZXN1bHRNYXAzLCB0ZXN0Q29tcGxldGVkKTsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0Q29tcGxldGVkKCkKKyAgICB7CisgICAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7CisgICAgfQorCisgICAgd2luZG93Lm9ubG9hZCA9IHJ1blRlc3Q7CisKKyAg
ICA8L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+CisgIDwvaGVhZD4KKworICA8Ym9keSBpZD0ic29tZS1jb250ZW50IiB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+CisgICAgPHA+PGEgaWQ9InN0YXJ0
IiBocmVmPSJhIj5MaW5rXzE8L2E+IGlzIGEgbm9ybWFsIGxpbmsuPC9wPgorICAgIDxwPkJlbG93
IGlzIGEgc2Nyb2xsYWJsZSBEaXYgY3JlYXRlZCB3aXRoIHRoZSBDU1MgcHJvcGVydHkgb3ZlcmZs
b3cuPC9wPgorICAgIDxkaXYgY2xhc3M9InNjcm9sbCI+CisgICAgICA8cD5JdCBoYXMgYSB2aXNp
YmxlIDxhIGlkPSIxIiBocmVmPSJhIj5saW5rXzI8L2E+LjwvcD4KKyAgICAgIDxicj48YnI+PGJy
Pjxicj48YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+CisgICAgICA8cD4u
Li4gYW5kIGFuIG92ZXJmbG93ZWQgbGluayBsaWtlIDxhIGlkPSIyIiBocmVmPSJhIj50aGlzPC9h
Pi48L3A+CisgICAgPC9kaXY+CisgICAgPHA+QW5kIHRoaXMgaXMgYW5vdGhlciBub3JtYWwgPGEg
aWQ9IjMiIGhyZWY9ImEiPmxpbmtfMzwvYT4uPC9wPgorICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDlhZjRjYjcuLmY3ZGIyMGEgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDggKzEsMjUgQEAK
KzIwMTAtMDQtMTIgIEFudG9uaW8gR29tZXMgIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTcGF0aWFsIE5hdmln
YXRpb246IG1ha2UgaXQgd29yayB3aXRoIGZvY3VzYWJsZSBlbGVtZW50cyBpbiBvdmVyZmxvdyBj
b250ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
NjQ2MworCisgICAgICAgIFRlc3Q6IGZhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2
LWNvbnRlbnQtb3ZlcmZsb3cuaHRtbAorCisgICAgICAgICogcGFnZS9Gb2N1c0NvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRlRm9jdXNDYW5kaWRhdGVJZkNsb3Nlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OmZpbmRGb2N1c2FibGVOb2RlSW5EaXJl
Y3Rpb24pOgorICAgICAgICAqIHBhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6cmVuZGVyUmVjdFJlbGF0aXZlVG9Sb290RG9jdW1lbnQpOgorICAgICAgICAqIHBh
Z2UvU3BhdGlhbE5hdmlnYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ2FuZGlkYXRl
OjpGb2N1c0NhbmRpZGF0ZSk6CisKIDIwMTAtMDQtMTkgIEFudG9uaW8gR29tZXMgIDx0b25pa2l0
b29Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAog
ICAgICAgICBTcGF0aWFsIE5hdmlnYXRpb246IG1vZGlmeSB0aGUgbG9naWMgb2Yge2RlZXB9Zmlu
ZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbiB0byB3b3JrIHdpdGggY29udGFpbmVyIG5vZGVzLCBu
b3QgRG9jdW1lbnQqCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zNzgwMwogCiAgICAgICAgIEluc3RlYWQgb2YgcmVjZWl2aW5nIGEgRG9jdW1lbnQgcG9p
bnRlciBhcyBpbmNvbWluZyBwYXJhbWV0ZXIsIHBhdGNoIG1vZGlmaWVzCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRy
b2xsZXIuY3BwCmluZGV4IDk0ODQyY2MuLmY4M2QzOWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFn
ZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIu
Y3BwCkBAIC0zNDAsNTIgKzM0MCwxMDAgQEAgYm9vbCBGb2N1c0NvbnRyb2xsZXI6OmFkdmFuY2VG
b2N1c0RpcmVjdGlvbmFsbHkoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBLZXlib2EKICAgICBz
Y3JvbGxJbnRvVmlldyhlbGVtZW50KTsKICAgICBlbGVtZW50LT5mb2N1cyhmYWxzZSk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKIC8vIEZJWE1FOiBNYWtlIHRoaXMgbWV0aG9kIG1vcmUgbW9kdWxh
ciwgYW5kIHNpbXBsZXIgdG8gdW5kZXJzdGFuZCBhbmQgbWFpbnRhaW4uCiBzdGF0aWMgdm9pZCB1
cGRhdGVGb2N1c0NhbmRpZGF0ZUlmQ2xvc2VyKE5vZGUqIGZvY3VzZWROb2RlLCBjb25zdCBGb2N1
c0NhbmRpZGF0ZSYgY2FuZGlkYXRlLCBGb2N1c0NhbmRpZGF0ZSYgY2xvc2VzdCkKIHsKLSAgICBi
b29sIHNhbWVEb2N1bWVudCA9IGNhbmRpZGF0ZS5kb2N1bWVudCgpID09IGNsb3Nlc3QuZG9jdW1l
bnQoKTsKLSAgICBpZiAoc2FtZURvY3VtZW50KSB7Ci0gICAgICAgIGlmIChjbG9zZXN0LmFsaWdu
bWVudCA+IGNhbmRpZGF0ZS5hbGlnbm1lbnQKLSAgICAgICAgIHx8IChjbG9zZXN0LnBhcmVudEFs
aWdubWVudCAmJiBjYW5kaWRhdGUuYWxpZ25tZW50ID4gY2xvc2VzdC5wYXJlbnRBbGlnbm1lbnQp
KQorICAgIGJvb2wgc2FtZUNvbnRhaW5lcjsKKyAgICBpZiAoY2FuZGlkYXRlLmRvY3VtZW50KCkg
IT0gY2xvc2VzdC5kb2N1bWVudCgpKQorICAgICAgICBzYW1lQ29udGFpbmVyID0gZmFsc2U7Cisg
ICAgZWxzZQorICAgICAgICBzYW1lQ29udGFpbmVyID0gIShjYW5kaWRhdGUuZW5jbG9zaW5nU2Ny
b2xsYWJsZUJveCAhPSBjbG9zZXN0LmVuY2xvc2luZ1Njcm9sbGFibGVCb3gpOworCisgICAgaWYg
KGNsb3Nlc3QuYWxpZ25tZW50ID4gY2FuZGlkYXRlLmFsaWdubWVudCkgeworCisgICAgICAgIGlm
IChzYW1lQ29udGFpbmVyKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChjYW5k
aWRhdGUucGFyZW50QWxpZ25tZW50ICYmIGNhbmRpZGF0ZS5wYXJlbnRBbGlnbm1lbnQgPCBjbG9z
ZXN0LmFsaWdubWVudCkKICAgICAgICAgICAgIHJldHVybjsKLSAgICB9IGVsc2UgaWYgKGNsb3Nl
c3QuYWxpZ25tZW50ID4gY2FuZGlkYXRlLmFsaWdubWVudAotICAgICAgICAgICAgJiYgKGNsb3Nl
c3QucGFyZW50QWxpZ25tZW50ICYmIGNhbmRpZGF0ZS5hbGlnbm1lbnQgPiBjbG9zZXN0LnBhcmVu
dEFsaWdubWVudCkpCi0gICAgICAgIHJldHVybjsKKworICAgIH0gZWxzZSBpZiAoY2xvc2VzdC5h
bGlnbm1lbnQgPCBjYW5kaWRhdGUuYWxpZ25tZW50KSB7CisKKyAgICAgICAgaWYgKCFzYW1lQ29u
dGFpbmVyKQorICAgICAgICAgICAgaWYgKGNsb3Nlc3QucGFyZW50QWxpZ25tZW50ICYmIGNhbmRp
ZGF0ZS5wYXJlbnRBbGlnbm1lbnQpCisgICAgICAgICAgICAgICAgaWYgKGNsb3Nlc3QucGFyZW50
RGlzdGFuY2UgPCBjYW5kaWRhdGUucGFyZW50RGlzdGFuY2UpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKKworICAgIH0gZWxzZSB7CisKKyAgICAgICAgLy8gV2Ugd291bGQgZ2VuZXJhbGx5
IGp1c3QgYmFpbCBvdXQgaWYgY2FuZGlkYXRlJ3MgZGlzdGFuY2UgaXMgbGFyZ2VyIHRoYW4gdGhh
dAorICAgICAgICAvLyBvZiB0aGUgY2xvc2VzdCBjYW5kaWRhdGUsIGhvd2V2ZXIsIHRoZXJlIGFy
ZSBzY3JvbGxhYmxlIG92ZXJmbG93ZWQgY29udGVudCBjb25kaXRpb25zCisgICAgICAgIC8vIGlu
dm9sdmVkIHRvIGJlIGNoZWNrZWQgZmlyc3Q6CisgICAgICAgIGlmIChjYW5kaWRhdGUuZGlzdGFu
Y2UgPj0gY2xvc2VzdC5kaXN0YW5jZSkgeworICAgICAgICAgICAgLy8gMSkgSWYgdGhlIGNhbmRp
ZGF0ZSBpcyBub3QgaW4gYSBzY3JvbGxhYmxlIGNvbnRhaW5lcjsKKyAgICAgICAgICAgIC8vIDIp
IElmIHRoZSBjdXJyZW50IGNhbmRpZGF0ZSBhbmQgdGhlIGNsb3Nlc3QgYXJlIGluIHRoZSBzYW1l
IHNjcm9sbGFibGUgY29udGFpbmVyOworICAgICAgICAgICAgLy8gMykgSWYgdGhlIGNhbmRpZGF0
ZSBpcyBpbiBhIHNjcm9sbGFibGUgY29udGFpbmVyIGJ1dCB0aGUgY3VycmVudCBmb2N1c2VkIG5v
ZGUgaXMgbm90LgorICAgICAgICAgICAgaWYgKCFjYW5kaWRhdGUuZW5jbG9zaW5nU2Nyb2xsYWJs
ZUJveAorICAgICAgICAgICAgIHx8IGNhbmRpZGF0ZS5lbmNsb3NpbmdTY3JvbGxhYmxlQm94ID09
IGNsb3Nlc3QuZW5jbG9zaW5nU2Nyb2xsYWJsZUJveAorICAgICAgICAgICAgIHx8IChjYW5kaWRh
dGUuZW5jbG9zaW5nU2Nyb2xsYWJsZUJveCAmJiAhZm9jdXNlZE5vZGUtPmlzRGVzY2VuZGFudE9m
KGNhbmRpZGF0ZS5lbmNsb3NpbmdTY3JvbGxhYmxlQm94KSkpCisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisgICAgfQogCiAgICAgaWYgKGNhbmRpZGF0ZS5hbGlnbm1lbnQgIT0g
Tm9uZQogICAgICB8fCAoY2xvc2VzdC5wYXJlbnRBbGlnbm1lbnQgPj0gY2FuZGlkYXRlLmFsaWdu
bWVudAogICAgICAmJiBjbG9zZXN0LmRvY3VtZW50KCkgPT0gY2FuZGlkYXRlLmRvY3VtZW50KCkp
KSB7CiAKICAgICAgICAgLy8gSWYgd2UgYXJlIG5vdyBpbiBhbiBoaWdoZXIgcHJlY2VkZW50IGNh
c2UsIGxldHMgcmVzZXQgdGhlIGN1cnJlbnQgY2xvc2VzdCdzCiAgICAgICAgIC8vIGRpc3RhbmNl
IHNvIHdlIGZvcmNlIGl0IHRvIGJlIGJpZ2dlciB0aGFuIGFueSByZXN1bHQgd2Ugd2lsbCBnZXQg
ZnJvbQogICAgICAgICAvLyBzcGF0aWFsRGlzdGFuY2UoKS4KICAgICAgICAgaWYgKGNsb3Nlc3Qu
YWxpZ25tZW50IDwgY2FuZGlkYXRlLmFsaWdubWVudAotICAgICAgICAgJiYgY2xvc2VzdC5wYXJl
bnRBbGlnbm1lbnQgPCBjYW5kaWRhdGUuYWxpZ25tZW50KQorICAgICAgICAgJiYgY2xvc2VzdC5w
YXJlbnRBbGlnbm1lbnQgPCBjYW5kaWRhdGUuYWxpZ25tZW50CisgICAgICAgICAmJiBjbG9zZXN0
LmVuY2xvc2luZ1Njcm9sbGFibGVCb3ggPT0gY2FuZGlkYXRlLmVuY2xvc2luZ1Njcm9sbGFibGVC
b3gpCiAgICAgICAgICAgICBjbG9zZXN0LmRpc3RhbmNlID0gbWF4RGlzdGFuY2UoKTsKICAgICB9
CiAKLSAgICAvLyBCYWlsIG91dCBpZiBjYW5kaWRhdGUncyBkaXN0YW5jZSBpcyBsYXJnZXIgdGhh
biB0aGF0IG9mIHRoZSBjbG9zZXN0IGNhbmRpZGF0ZS4KLSAgICBpZiAoY2FuZGlkYXRlLmRpc3Rh
bmNlID49IGNsb3Nlc3QuZGlzdGFuY2UpCi0gICAgICAgIHJldHVybjsKLQogICAgIGlmIChjbG9z
ZXN0LmlzTnVsbCgpKSB7CiAgICAgICAgIGNsb3Nlc3QgPSBjYW5kaWRhdGU7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICAvLyBJZiB0aGUgZm9jdXNlZCBub2RlIGFuZCB0aGUgY2FuZGFk
YXRlIGFyZSBpbiB0aGUgc2FtZSBkb2N1bWVudCBhbmQgY3VycmVudAotICAgIC8vIGNsb3Nlc3Qg
Y2FuZGlkYXRlIGlzIG5vdCBpbiBhbiB7aX1mcmFtZSB0aGF0IGlzIHByZWZlcmFibGUgdG8gZ2V0
IGZvY3VzZWQgLi4uCi0gICAgaWYgKGZvY3VzZWROb2RlLT5kb2N1bWVudCgpID09IGNhbmRpZGF0
ZS5kb2N1bWVudCgpCi0gICAgICAgICYmIGNhbmRpZGF0ZS5kaXN0YW5jZSA8IGNsb3Nlc3QucGFy
ZW50RGlzdGFuY2UpCi0gICAgICAgIGNsb3Nlc3QgPSBjYW5kaWRhdGU7Ci0gICAgZWxzZSBpZiAo
Zm9jdXNlZE5vZGUtPmRvY3VtZW50KCkgIT0gY2FuZGlkYXRlLmRvY3VtZW50KCkpIHsKKyAgICAv
LyBJZiB0aGUgZm9jdXNlZCBub2RlIGFuZCB0aGUgY2FuZGlkYXRlIGFyZSBpbiB0aGUgc2FtZSBk
b2N1bWVudDoKKyAgICBpZiAoZm9jdXNlZE5vZGUtPmRvY3VtZW50KCkgPT0gY2FuZGlkYXRlLmRv
Y3VtZW50KCkpIHsKKworICAgICAgICAvLyBGaXJzdCwgY2hlY2sgZm9yIHRoZSBjb21tb24gY2Fz
ZTogZm9jdXMgY2FuZGlkYXRlIGlzICpub3QqIGluIGEgc2Nyb2xsYWJsZSBjb250YWluZXIuCisg
ICAgICAgIGlmICghY2FuZGlkYXRlLmVuY2xvc2luZ1Njcm9sbGFibGVCb3gpIHsKKyAgICAgICAg
ICAgIGlmIChjYW5kaWRhdGUuZGlzdGFuY2UgPCBjbG9zZXN0LnBhcmVudERpc3RhbmNlKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKCFjbG9zZXN0LmVuY2xvc2luZ1Njcm9sbGFibGVCb3gpCisgICAg
ICAgICAgICAgICAgICAgIGNsb3Nlc3QgPSBjYW5kaWRhdGU7CisKKyAgICAgICAgICAgICAgICBl
bHNlIGlmIChjbG9zZXN0LmVuY2xvc2luZ1Njcm9sbGFibGVCb3ggPT0gY2FuZGlkYXRlLmVuY2xv
c2luZ1Njcm9sbGFibGVCb3gpCisgICAgICAgICAgICAgICAgICAgIGNsb3Nlc3QgPSBjYW5kaWRh
dGU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFdo
ZW4gaXQgaXMgaW4gYSBzY3JvbGxhYmxlIGNvbnRhaW5lciwgdGhlbjoKKyAgICAgICAgICAgIC8v
ICMxIC0gY2hlY2sgaWYgY3VycmVudCBmb2N1c2VkIG5vZGUgaXMgaW4gdGhlIHNhbWUgZW5jbG9z
aW5nIHNjcm9sbGFibGUKKyAgICAgICAgICAgIC8vIGJveCB0aGFuIGNhbmRpZGF0ZS4KKyAgICAg
ICAgICAgIGlmIChmb2N1c2VkTm9kZS0+aXNEZXNjZW5kYW50T2YoY2FuZGlkYXRlLmVuY2xvc2lu
Z1Njcm9sbGFibGVCb3gpKSB7CisgICAgICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZS5lbmNsb3Np
bmdTY3JvbGxhYmxlQm94ICE9IGNsb3Nlc3QuZW5jbG9zaW5nU2Nyb2xsYWJsZUJveCkKKyAgICAg
ICAgICAgICAgICAgICAgY2xvc2VzdCA9IGNhbmRpZGF0ZTsKKworICAgICAgICAgICAgICAgIGVs
c2UgaWYgKGNhbmRpZGF0ZS5kaXN0YW5jZSA8IGNsb3Nlc3QuZGlzdGFuY2UpCisgICAgICAgICAg
ICAgICAgICAgIGNsb3Nlc3QgPSBjYW5kaWRhdGU7CisKKyAgICAgICAgICAgIC8vICMyIC0gT3Ig
b25seSB0aGUgc3BhdGlhbCBkaXN0YW5jZSBpcyBlbm91Z2guCisgICAgICAgICAgICB9IGVsc2Ug
aWYgKGNhbmRpZGF0ZS5kaXN0YW5jZSA8IGNsb3Nlc3QuZGlzdGFuY2UpCisgICAgICAgICAgICAg
ICAgY2xvc2VzdCA9IGNhbmRpZGF0ZTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CiAgICAgICAg
IC8vIElmIHRoZSBmb2N1c2VkTm9kZSBpcyBpbiBhbiBpbm5lciBkb2N1bWVudCBhbmQgY2FuZGlk
YXRlIGlzIGluIGEKICAgICAgICAgLy8gZGlmZmVyZW50IGRvY3VtZW50LCB3ZSBvbmx5IGNvbnNp
ZGVyIHRvIGNoYW5nZSBmb2N1cyBpZiB0aGVyZSBpcyBub3QKICAgICAgICAgLy8gYW5vdGhlciBh
bHJlYWR5IGdvb2QgZm9jdXNhYmxlIGNhbmRpZGF0ZSBpbiB0aGUgc2FtZSBkb2N1bWVudCBhcyBm
b2N1c2VkTm9kZS4KICAgICAgICAgaWYgKCEoKGlzSW5Sb290RG9jdW1lbnQoY2FuZGlkYXRlLm5v
ZGUpICYmICFpc0luUm9vdERvY3VtZW50KGZvY3VzZWROb2RlKSkKICAgICAgICAgICAgICYmIGZv
Y3VzZWROb2RlLT5kb2N1bWVudCgpID09IGNsb3Nlc3QuZG9jdW1lbnQoKSkpCiAgICAgICAgICAg
ICBjbG9zZXN0ID0gY2FuZGlkYXRlOwogICAgIH0KIH0KQEAgLTM5Myw0NSArNDQxLDYwIEBAIHN0
YXRpYyB2b2lkIHVwZGF0ZUZvY3VzQ2FuZGlkYXRlSWZDbG9zZXIoTm9kZSogZm9jdXNlZE5vZGUs
IGNvbnN0IEZvY3VzQ2FuZGlkYXRlCiB2b2lkIEZvY3VzQ29udHJvbGxlcjo6ZmluZEZvY3VzYWJs
ZU5vZGVJbkRpcmVjdGlvbihOb2RlKiBvdXR0ZXIsIE5vZGUqIGZvY3VzZWROb2RlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9jdXNEaXJlY3Rp
b24gZGlyZWN0aW9uLCBLZXlib2FyZEV2ZW50KiBldmVudCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvY3VzQ2FuZGlkYXRlJiBjbG9zZXN0Rm9j
dXNDYW5kaWRhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBGb2N1c0NhbmRpZGF0ZSYgY2FuZGlkYXRlUGFyZW50KQogewogICAgIEFT
U0VSVChvdXR0ZXIpOwogICAgIEFTU0VSVChjYW5kaWRhdGVQYXJlbnQuaXNOdWxsKCkKICAgICAg
ICAgfHwgY2FuZGlkYXRlUGFyZW50Lm5vZGUtPmhhc1RhZ05hbWUoZnJhbWVUYWcpCi0gICAgICAg
IHx8IGNhbmRpZGF0ZVBhcmVudC5ub2RlLT5oYXNUYWdOYW1lKGlmcmFtZVRhZykpOworICAgICAg
ICB8fCBjYW5kaWRhdGVQYXJlbnQubm9kZS0+aGFzVGFnTmFtZShpZnJhbWVUYWcpCisgICAgICAg
IHx8IGNhbmRpZGF0ZVBhcmVudC5ub2RlLT5oYXNUYWdOYW1lKGRpdlRhZykpOwogCiAgICAgLy8g
V2FsayBhbGwgdGhlIGNoaWxkIG5vZGVzIGFuZCB1cGRhdGUgY2xvc2VzdEZvY3VzQ2FuZGlkYXRl
IGlmIHdlIGZpbmQgYSBuZWFyZXIgbm9kZS4KICAgICBOb2RlKiBjYW5kaWRhdGUgPSBvdXR0ZXI7
CiAgICAgd2hpbGUgKGNhbmRpZGF0ZSkgewotICAgICAgICAvLyBJbm5lciBkb2N1bWVudHMgY2Fz
ZS4KIAotICAgICAgICBpZiAoY2FuZGlkYXRlLT5pc0ZyYW1lT3duZXJFbGVtZW50KCkpCisgICAg
ICAgIC8vIFNjcm9sbGFibGUgY29udGFpbmVycyAoZS5nLiA8ZGl2PikgY2FzZS4KKyAgICAgICAg
aWYgKGNhbmRpZGF0ZS0+aGFzVGFnTmFtZShkaXZUYWcpICYmIGlzU2Nyb2xsYWJsZUNvbnRhaW5l
ck5vZGUoY2FuZGlkYXRlKSkgewogICAgICAgICAgICAgZGVlcEZpbmRGb2N1c2FibGVOb2RlSW5E
aXJlY3Rpb24oY2FuZGlkYXRlLCBmb2N1c2VkTm9kZSwgZGlyZWN0aW9uLCBldmVudCwgY2xvc2Vz
dEZvY3VzQ2FuZGlkYXRlKTsKLSAgICAgICAgZWxzZSBpZiAoY2FuZGlkYXRlICE9IGZvY3VzZWRO
b2RlICYmIGNhbmRpZGF0ZS0+aXNLZXlib2FyZEZvY3VzYWJsZShldmVudCkpIHsKKyAgICAgICAg
ICAgIGNhbmRpZGF0ZSA9IGNhbmRpZGF0ZS0+dHJhdmVyc2VOZXh0U2libGluZygpOworICAgICAg
ICAgICAgY29udGludWU7CisKKyAgICAgICAgLy8gSW5uZXIgZG9jdW1lbnRzIGNhc2UuCisgICAg
ICAgIH0gZWxzZSBpZiAoY2FuZGlkYXRlLT5pc0ZyYW1lT3duZXJFbGVtZW50KCkpIHsKKyAgICAg
ICAgICAgIGRlZXBGaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKGNhbmRpZGF0ZSwgZm9jdXNl
ZE5vZGUsIGRpcmVjdGlvbiwgZXZlbnQsIGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZSk7CisKKyAgICAg
ICAgfSBlbHNlIGlmIChjYW5kaWRhdGUgIT0gZm9jdXNlZE5vZGUgJiYgY2FuZGlkYXRlLT5pc0tl
eWJvYXJkRm9jdXNhYmxlKGV2ZW50KSkgeworCiAgICAgICAgICAgICBGb2N1c0NhbmRpZGF0ZSBj
dXJyZW50Rm9jdXNDYW5kaWRhdGUoY2FuZGlkYXRlKTsKIAorICAgICAgICAgICAgLy8gVGhlcmUg
YXJlIHR3byB3YXlzIHRvIGlkZW50aWZ5IHdlIGFyZSBpbiBhIHJlY3Vyc2l2ZSBjYWxsIGZyb20g
ZGVlcEZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24KKyAgICAgICAgICAgIC8vIChpLmUuIHBy
b2Nlc3NpbmcgYW4gZWxlbWVudCBpbiBhbiBpZnJhbWUsIGZyYW1lIG9yIGEgc2Nyb2xsYWJsZSBk
aXYpOgorCisgICAgICAgICAgICAvLyAxKSBJZiBjYW5kaWRhdGVQYXJlbnQgaXMgbm90IG51bGws
IGFuZCBpdCBob2xkcyB0aGUgZGlzdGFuY2UgYW5kIGFsaWdubWVudCBkYXRhIG9mIHRoZQorICAg
ICAgICAgICAgLy8gcGFyZW50IGNvbnRhaW5lciBlbGVtZW50IGl0c2VsZi4KKyAgICAgICAgICAg
IGlmICghY2FuZGlkYXRlUGFyZW50LmlzTnVsbCgpKSB7CisgICAgICAgICAgICAgICAgY3VycmVu
dEZvY3VzQ2FuZGlkYXRlLnBhcmVudEFsaWdubWVudCA9IGNhbmRpZGF0ZVBhcmVudC5hbGlnbm1l
bnQ7CisgICAgICAgICAgICAgICAgY3VycmVudEZvY3VzQ2FuZGlkYXRlLnBhcmVudERpc3RhbmNl
ID0gY2FuZGlkYXRlUGFyZW50LmRpc3RhbmNlOworICAgICAgICAgICAgICAgIGN1cnJlbnRGb2N1
c0NhbmRpZGF0ZS5lbmNsb3NpbmdTY3JvbGxhYmxlQm94ID0gY2FuZGlkYXRlUGFyZW50Lm5vZGU7
CisKKyAgICAgICAgICAgIC8vIDIpIFBhcmVudCBvZiBvdXR0ZXIgaXMgZWl0aGVyIGEgZGl2LCBh
IGZyYW1lIG9yIGFuIGlmcmFtZSB0YWcuCisgICAgICAgICAgICB9IGVsc2UgaWYgKG91dHRlci0+
cGFyZW50KCktPmhhc1RhZ05hbWUoZGl2VGFnKSB8fCAhaXNJblJvb3REb2N1bWVudChvdXR0ZXIp
KQorICAgICAgICAgICAgICAgIGN1cnJlbnRGb2N1c0NhbmRpZGF0ZS5lbmNsb3NpbmdTY3JvbGxh
YmxlQm94ID0gb3V0dGVyLT5wYXJlbnQoKTsKKwogICAgICAgICAgICAgLy8gR2V0IGRpc3RhbmNl
IGFuZCBhbGlnbm1lbnQgZnJvbSBjdXJyZW50IGNhbmRpZGF0ZS4KICAgICAgICAgICAgIGRpc3Rh
bmNlRGF0YUZvck5vZGUoZGlyZWN0aW9uLCBmb2N1c2VkTm9kZSwgY3VycmVudEZvY3VzQ2FuZGlk
YXRlKTsKIAogICAgICAgICAgICAgLy8gQmFpbCBvdXQgaWYgZGlzdGFuY2UgaXMgbWF4aW11bS4K
ICAgICAgICAgICAgIGlmIChjdXJyZW50Rm9jdXNDYW5kaWRhdGUuZGlzdGFuY2UgPT0gbWF4RGlz
dGFuY2UoKSkgewogICAgICAgICAgICAgICAgIGNhbmRpZGF0ZSA9IGNhbmRpZGF0ZS0+dHJhdmVy
c2VOZXh0Tm9kZShvdXR0ZXItPnBhcmVudCgpKTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgLy8gSWYgY2FuZGlkYXRlUGFyZW50IGlzIG5v
dCBudWxsLCBpdCBtZWFucyB0aGF0IHdlIGFyZSBpbiBhIHJlY3Vyc2l2ZSBjYWxsCi0gICAgICAg
ICAgICAvLyBmcm9tIGRlZXBGaW5lRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uIChpLmUuIHByb2Nl
c3NpbmcgYW4gZWxlbWVudCBpbiBhbiBpZnJhbWUpLAotICAgICAgICAgICAgLy8gYW5kIGhvbGRz
IHRoZSBkaXN0YW5jZSBhbmQgYWxpZ25tZW50IGRhdGEgb2YgdGhlIGlmcmFtZSBlbGVtZW50IGl0
c2VsZi4KLSAgICAgICAgICAgIGlmICghY2FuZGlkYXRlUGFyZW50LmlzTnVsbCgpKSB7Ci0gICAg
ICAgICAgICAgICAgY3VycmVudEZvY3VzQ2FuZGlkYXRlLnBhcmVudEFsaWdubWVudCA9IGNhbmRp
ZGF0ZVBhcmVudC5hbGlnbm1lbnQ7Ci0gICAgICAgICAgICAgICAgY3VycmVudEZvY3VzQ2FuZGlk
YXRlLnBhcmVudERpc3RhbmNlID0gY2FuZGlkYXRlUGFyZW50LmRpc3RhbmNlOwotICAgICAgICAg
ICAgfQotCiAgICAgICAgICAgICB1cGRhdGVGb2N1c0NhbmRpZGF0ZUlmQ2xvc2VyKGZvY3VzZWRO
b2RlLCBjdXJyZW50Rm9jdXNDYW5kaWRhdGUsIGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZSk7CiAgICAg
ICAgIH0KIAogICAgICAgICBjYW5kaWRhdGUgPSBjYW5kaWRhdGUtPnRyYXZlcnNlTmV4dE5vZGUo
b3V0dGVyLT5wYXJlbnQoKSk7CiAgICAgfQogfQogCiB2b2lkIEZvY3VzQ29udHJvbGxlcjo6ZGVl
cEZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24oTm9kZSogY29udGFpbmVyLCBOb2RlKiBmb2N1
c2VkTm9kZSwKQEAgLTQ1MywxNiArNTE2LDIxIEBAIHZvaWQgRm9jdXNDb250cm9sbGVyOjpkZWVw
RmluZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbihOb2RlKiBjb250YWluZXIsIE5vZGUqIGZvCiAK
ICAgICAgICAgRG9jdW1lbnQqIGlubmVyRG9jdW1lbnQgPSBvd25lci0+Y29udGVudEZyYW1lKCkt
PmRvY3VtZW50KCk7CiAgICAgICAgIGlmICghaW5uZXJEb2N1bWVudCkKICAgICAgICAgICAgIHJl
dHVybjsKIAogICAgICAgICBkZXNjZW5kYW50T2ZDb250YWluZXIgPSBpbm5lckRvY3VtZW50ID09
IGZvY3VzZWROb2RlLT5kb2N1bWVudCgpOwogICAgICAgICBmaXJzdENoaWxkID0gaW5uZXJEb2N1
bWVudC0+Zmlyc3RDaGlsZCgpOwogCisgICAgLy8gU2Nyb2xsYWJsZSBkaXYuCisgICAgfSBlbHNl
IGlmIChjb250YWluZXItPmhhc1RhZ05hbWUoZGl2VGFnKSkgeworCisgICAgICAgIGZpcnN0Q2hp
bGQgPSBjb250YWluZXItPmZpcnN0Q2hpbGQoKTsKKyAgICAgICAgZGVzY2VuZGFudE9mQ29udGFp
bmVyID0gZm9jdXNlZE5vZGUtPmlzRGVzY2VuZGFudE9mKGNvbnRhaW5lcik7CiAgICAgfQogCiAg
ICAgaWYgKGRlc2NlbmRhbnRPZkNvbnRhaW5lcikgewogICAgICAgICBmaW5kRm9jdXNhYmxlTm9k
ZUluRGlyZWN0aW9uKGZpcnN0Q2hpbGQsIGZvY3VzZWROb2RlLCBkaXJlY3Rpb24sIGV2ZW50LCBj
bG9zZXN0Rm9jdXNDYW5kaWRhdGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgLy8g
Q2hlY2sgaWYgdGhlIGN1cnJlbnQgY29udGFpbmVyIGVsZW1lbnQgaXRzZWxmIGlzIGEgZ29vZCBj
YW5kaWRhdGUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAg
Yi9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwCmluZGV4IDliYjkwM2QuLmJjOTRk
ZWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAKKysrIGIv
V2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcApAQCAtNTIxLDkgKzUyMSwxOCBAQCBz
dGF0aWMgYm9vbCBjaGVja05lZ2F0aXZlQ29vcmRzRm9yTm9kZShOb2RlKiBub2RlLCBjb25zdCBJ
bnRSZWN0JiBjdXJSZWN0KQogICAgICAgICAgICAgY2FuQmVTY3JvbGxlZCA9IHRydWU7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiBjYW5CZVNjcm9s
bGVkOwogfQogCitib29sIGlzU2Nyb2xsYWJsZUNvbnRhaW5lck5vZGUoTm9kZSogbm9kZSkKK3sK
KyAgICBpZiAobm9kZSkKKyAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2Rl
LT5yZW5kZXJlcigpKQorICAgICAgICAgICAgcmV0dXJuIChyZW5kZXJlciAmJiByZW5kZXJlci0+
aXNCb3goKSAmJiB0b1JlbmRlckJveChyZW5kZXJlciktPmNhbkJlU2Nyb2xsZWRBbmRIYXNTY3Jv
bGxhYmxlQXJlYSgpKTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmggYi9X
ZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uaAppbmRleCBkZjBhY2I0Li44NWIwMTUzIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uaAorKysgYi9XZWJDb3Jl
L3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uaApAQCAtOTMsNDMgKzkzLDQ3IEBAIGVudW0gUmVjdHNB
bGlnbm1lbnQgewogICAgIE5vbmUgPSAwLAogICAgIFBhcnRpYWwsCiAgICAgRnVsbAogfTsKIAog
c3RydWN0IEZvY3VzQ2FuZGlkYXRlIHsKICAgICBGb2N1c0NhbmRpZGF0ZSgpCiAgICAgICAgIDog
bm9kZSgwKQorICAgICAgICAsIGVuY2xvc2luZ1Njcm9sbGFibGVCb3goMCkKICAgICAgICAgLCBk
aXN0YW5jZShtYXhEaXN0YW5jZSgpKQogICAgICAgICAsIHBhcmVudERpc3RhbmNlKG1heERpc3Rh
bmNlKCkpCiAgICAgICAgICwgYWxpZ25tZW50KE5vbmUpCiAgICAgICAgICwgcGFyZW50QWxpZ25t
ZW50KE5vbmUpCiAgICAgewogICAgIH0KIAogICAgIEZvY3VzQ2FuZGlkYXRlKE5vZGUqIG4pCiAg
ICAgICAgIDogbm9kZShuKQorICAgICAgICAsIGVuY2xvc2luZ1Njcm9sbGFibGVCb3goMCkKICAg
ICAgICAgLCBkaXN0YW5jZShtYXhEaXN0YW5jZSgpKQogICAgICAgICAsIHBhcmVudERpc3RhbmNl
KG1heERpc3RhbmNlKCkpCiAgICAgICAgICwgYWxpZ25tZW50KE5vbmUpCiAgICAgICAgICwgcGFy
ZW50QWxpZ25tZW50KE5vbmUpCiAgICAgewogICAgIH0KIAogICAgIGJvb2wgaXNOdWxsKCkgY29u
c3QgeyByZXR1cm4gIW5vZGU7IH0KICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdCB7IHJl
dHVybiBub2RlID8gbm9kZS0+ZG9jdW1lbnQoKSA6IDA7IH0KIAogICAgIE5vZGUqIG5vZGU7Cisg
ICAgTm9kZSogZW5jbG9zaW5nU2Nyb2xsYWJsZUJveDsKICAgICBsb25nIGxvbmcgZGlzdGFuY2U7
CiAgICAgbG9uZyBsb25nIHBhcmVudERpc3RhbmNlOwogICAgIFJlY3RzQWxpZ25tZW50IGFsaWdu
bWVudDsKICAgICBSZWN0c0FsaWdubWVudCBwYXJlbnRBbGlnbm1lbnQ7CiB9OwogCiB2b2lkIGRp
c3RhbmNlRGF0YUZvck5vZGUoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBOb2RlKiBzdGFydCwg
Rm9jdXNDYW5kaWRhdGUmIGNhbmRpZGF0ZSk7CiBib29sIHNjcm9sbEluRGlyZWN0aW9uKEZyYW1l
KiwgRm9jdXNEaXJlY3Rpb24pOwogdm9pZCBzY3JvbGxJbnRvVmlldyhFbGVtZW50Kik7CiBib29s
IGhhc09mZnNjcmVlblJlY3QoTm9kZSopOwogYm9vbCBpc0luUm9vdERvY3VtZW50KE5vZGUqKTsK
K2Jvb2wgaXNTY3JvbGxhYmxlQ29udGFpbmVyTm9kZShOb2RlKik7CiAKIH0gLy8gbmFtc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gU3BhdGlhbE5hdmlnYXRpb25faAotLSAKMS42LjAuNAoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56073</attachid>
            <date>2010-05-14 08:45:48 -0700</date>
            <delta_ts>2010-05-18 12:52:14 -0700</delta_ts>
            <desc>patch v4 - patch ready for review</desc>
            <filename>0001-2010-05-14-Antonio-Gomes-tonikitoo-webkit.org.patch</filename>
            <type>text/plain</type>
            <size>29944</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSBlMTg3MDI4NWMzODY0OGNhOGEzMzFlOGIxNThiYTJjZWY4Y2QxNWU4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4K
RGF0ZTogV2VkLCA1IE1heSAyMDEwIDAwOjMxOjE4IC0wNDAwClN1YmplY3Q6IFtQQVRDSF0gMjAx
MC0wNS0xNCAgQW50b25pbyBHb21lcyAgPHRvbmlraXRvb0B3ZWJraXQub3JnPgoKICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgU3BhdGlhbCBOYXZpZ2F0aW9uOiBt
YWtlIGl0IHdvcmsgd2l0aCBmb2N1c2FibGUgZWxlbWVudHMgaW4gb3ZlcmZsb3cgY29udGVudAog
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjQ2MwoKICAg
ICAgICBUZXN0czogZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtZGl2LXNjcm9s
bGFibGUtYnV0LXdpdGhvdXQtZm9jdXNhYmxlLWNvbnRlbnQuaHRtbAogICAgICAgICAgICAgICBm
YXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1kaXYtd2l0aC1vZmZzY3JlZW4tZm9j
dXNhYmxlLWVsZW1lbnQuaHRtbAoKICAgICAgICBXZWJDb3JlOgoKICAgICAgICBQYXRjaCBhZGRy
ZXNzZXMgdGhlIHByb2JsZW0gdGhhdCBjdXJyZW50IFNwYXRpYWwgTmF2aWdhdGlvbiBkb2VzIG5v
dCBwcm9wZXJseQogICAgICAgIHRyYXZlcnNlIHNjcm9sbGFibGUgY29udGVudHMsIGluY2x1ZGlu
ZyBzY3JvbGxhYmxlIGRpdidzLiBGb3IgdGhhdCwgYSBuZXcKICAgICAgICBjbGFzcyBtZW1iZXIg
Y2FsbGVkIHNjcm9sbGFibGVFbmNsb3NpbmdCb3ggd2FzIGludHJvZHVjZWQgdG8gRm9jdXNDYW5k
aWRhdGUgY2xhc3MKICAgICAgICB0byBrZWVwIHRoZSB0cmFjayBvZiBjdXJyZW50IHNjcm9sbGFi
bGUgYm94IE5vZGUgd3JhcHBpbmcgYSBGb2N1c0NhbmRpZGF0ZS4gVGhlCiAgICAgICAgY29tbW9u
IGNhc2UgaXMgb2J2aW91c2x5IHRoYXQgdGhlcmUgaXMgbm8gc2Nyb2xsYWJsZSBjb250YWluZXIg
d3JhcHBpbmcgaXQuCgogICAgICAgIFRvIG1ha2UgdXNlIG9mIGVuY2xvc2luZ1Njcm9sbGFibGVC
b3ggb2YgRm9jdXNDYW5kaWRhdGUsIHRoZSBET00gdHJhdmVyc2FsIGFsZ29yaXRobQogICAgICAg
IHJvdXRpbmUgKEZvY3VzQ29udHJvbGxlcjo6ZmluZE5leHRGb2N1c2FibGVJbkRpcmVjdGlvbikg
d2FzIGNoYW5nZWQgYXMgZm9sbG93czogQXQgdGhlCiAgICAgICAgdGltZSBpdCBlbmNvdW50ZXJz
IGEgc2Nyb2xsYWJsZSBOb2RlIChyZWFkIGZvciBub3cgYSBzY3JvbGxhYmxlIGRpdiksIGVhY2gg
Zm9jdXNhYmxlCiAgICAgICAgbm9kZSB0aGF0IGlzIGlubmVyIG9mIGl0IGtlZXBzIHRyYWNrIG9m
IHRoZSBjb250YWluZXIgcmVmZXJlbmNlLiBCeSB0aGUgdGltZSBhIHNpYmxpbmcKICAgICAgICBv
ZiB0aGUgc2Nyb2xsYWJsZSBOb2RlIGluIGNhc2UgaXMgZW5jb3VudGVyZWQsIHRoZXJlIGlzIG5v
dCBuZWVkIHRvIHRyYWNrIHRoaXMgcmVmZXJlbmNlCiAgICAgICAgYW55IG1vcmUuCgogICAgICAg
IHVwZGF0ZUZvY3VzQ2FuZGlkaXRlSWZDbG9zZXIgbG9naWMgd2FzIGFsc28gYWRhcHRlZCB0byBm
aXQgdGhlIG5lZWQgb2YgdGhlCiAgICAgICAgbmV3bHkgaW50cm9kdWNlZCBlbmNsb3NpbmdTY3Jv
bGxhYmxlQm94IGNsYXNzIG1lbWJlciwgZ2V0dGluZyBzaW1wbGVyIGFuZCBtb3JlCiAgICAgICAg
ZWFzaWx5IG1haW50YWluYWJsZS4KCiAgICAgICAgKiBwYWdlL0ZvY3VzQ29udHJvbGxlci5jcHA6
CiAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZUZvY3VzQ2FuZGlkYXRlSW5UaGVTYW1lQ29udGFpbmVy
KToKICAgICAgICAoV2ViQ29yZTo6dXBkYXRlRm9jdXNDYW5kaWRhdGVJZkNsb3Nlcik6CiAgICAg
ICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6ZmluZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlv
bik6CiAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6ZGVlcEZpbmRGb2N1c2FibGVO
b2RlSW5EaXJlY3Rpb24pOgogICAgICAgICogcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHA6CiAg
ICAgICAgKFdlYkNvcmU6OmlzU2Nyb2xsYWJsZUNvbnRhaW5lck5vZGUpOgogICAgICAgICogcGFn
ZS9TcGF0aWFsTmF2aWdhdGlvbi5oOgogICAgICAgIChXZWJDb3JlOjpGb2N1c0NhbmRpZGF0ZTo6
Rm9jdXNDYW5kaWRhdGUpOgogICAgICAgIChXZWJDb3JlOjpGb2N1c0NhbmRpZGF0ZTo6aXNJblNj
cm9sbGFibGVDb250YWluZXIpOgoKICAgICAgICBMYXlvdXRUZXN0czoKCiAgICAgICAgKiBmYXN0
L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1kaXYtc2Nyb2xsYWJsZS1idXQtd2l0aG91
dC1mb2N1c2FibGUtY29udGVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgogICAgICAgICogZmFzdC9l
dmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtZGl2LXNjcm9sbGFibGUtYnV0LXdpdGhvdXQt
Zm9jdXNhYmxlLWNvbnRlbnQuaHRtbDogQWRkZWQuCiAgICAgICAgKiBmYXN0L2V2ZW50cy9zcGF0
aWFsLW5hdmlnYXRpb24vc25hdi1kaXYtd2l0aC1vZmZzY3JlZW4tZm9jdXNhYmxlLWVsZW1lbnQt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KICAgICAgICAqIGZhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdh
dGlvbi9zbmF2LWRpdi13aXRoLW9mZnNjcmVlbi1mb2N1c2FibGUtZWxlbWVudC5odG1sOiBBZGRl
ZC4KLS0tCiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgMTIgKysKIC4uLmFibGUtYnV0LXdpdGhvdXQtZm9jdXNhYmxlLWNvbnRlbnQtZXhwZWN0
ZWQudHh0IHwgICAzNSArKysrKwogLi4udi1zY3JvbGxhYmxlLWJ1dC13aXRob3V0LWZvY3VzYWJs
ZS1jb250ZW50Lmh0bWwgfCAgIDgwICsrKysrKysrKysKIC4uLnYtd2l0aC1vZmZzY3JlZW4tZm9j
dXNhYmxlLWVsZW1lbnQtZXhwZWN0ZWQudHh0IHwgICAzMSArKysrCiAuLi4vc25hdi1kaXYtd2l0
aC1vZmZzY3JlZW4tZm9jdXNhYmxlLWVsZW1lbnQuaHRtbCB8ICAxMjAgKysrKysrKysrKysrKysr
CiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg
MzggKysrKysKIFdlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwICAgICAgICAgICAgICAg
ICAgIHwgIDE1MyArKysrKysrKysrKysrKy0tLS0tLQogV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZp
Z2F0aW9uLmNwcCAgICAgICAgICAgICAgICAgfCAgIDExICsrCiBXZWJDb3JlL3BhZ2UvU3BhdGlh
bE5hdmlnYXRpb24uaCAgICAgICAgICAgICAgICAgICB8ICAgIDUgKwogOSBmaWxlcyBjaGFuZ2Vk
LCA0MzkgaW5zZXJ0aW9ucygrKSwgNDYgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQg
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtZGl2LXNjcm9s
bGFibGUtYnV0LXdpdGhvdXQtZm9jdXNhYmxlLWNvbnRlbnQtZXhwZWN0ZWQudHh0CiBjcmVhdGUg
bW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3Nu
YXYtZGl2LXNjcm9sbGFibGUtYnV0LXdpdGhvdXQtZm9jdXNhYmxlLWNvbnRlbnQuaHRtbAogY3Jl
YXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlv
bi9zbmF2LWRpdi13aXRoLW9mZnNjcmVlbi1mb2N1c2FibGUtZWxlbWVudC1leHBlY3RlZC50eHQK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmln
YXRpb24vc25hdi1kaXYtd2l0aC1vZmZzY3JlZW4tZm9jdXNhYmxlLWVsZW1lbnQuaHRtbAoKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCBhNGNjMjg2Li40NDE2YWU3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDEwICsxLDIyIEBACisyMDEwLTA1LTE0
ICBBbnRvbmlvIEdvbWVzICA8dG9uaWtpdG9vQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3BhdGlhbCBOYXZpZ2F0aW9uOiBtYWtl
IGl0IHdvcmsgd2l0aCBmb2N1c2FibGUgZWxlbWVudHMgaW4gb3ZlcmZsb3cgY29udGVudAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY0NjMKKworICAg
ICAgICAqIGZhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWRpdi1zY3JvbGxhYmxl
LWJ1dC13aXRob3V0LWZvY3VzYWJsZS1jb250ZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtZGl2LXNjcm9sbGFibGUt
YnV0LXdpdGhvdXQtZm9jdXNhYmxlLWNvbnRlbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtZGl2LXdpdGgtb2Zmc2NyZWVuLWZvY3Vz
YWJsZS1lbGVtZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMv
c3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtZGl2LXdpdGgtb2Zmc2NyZWVuLWZvY3VzYWJsZS1lbGVt
ZW50Lmh0bWw6IEFkZGVkLgorCiAyMDEwLTA1LTEyICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29v
Z2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCiAKICAgICAg
ICAgQWxpYXMgV2ViR0xBcnJheSB0eXBlIG5hbWVzIHRvIFR5cGVkQXJyYXkgdHlwZSBuYW1lcwog
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzkwMzYKIAog
ICAgICAgICBFeHBvc2VkIHRoZSBleGlzdGluZyBXZWJHTDxUPkFycmF5IGNvbnN0cnVjdG9yIGZ1
bmN0aW9ucyBvbiB0aGUKICAgICAgICAgRE9NV2luZG93IHVuZGVyIHRoZSBuYW1pbmcgY29udmVu
dGlvbiBpbiB0aGUgVHlwZWRBcnJheSBzcGVjLiBUaGUKICAgICAgICAgaW1wbGVtZW50YXRpb25z
IHdpbGwgYmUgcmVuYW1lZCBpbiBhIHN1YnNlcXVlbnQgYnVnLCBhbmQgdGhlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1kaXYtc2Ny
b2xsYWJsZS1idXQtd2l0aG91dC1mb2N1c2FibGUtY29udGVudC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1kaXYtc2Nyb2xsYWJs
ZS1idXQtd2l0aG91dC1mb2N1c2FibGUtY29udGVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzUxYjk0MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWRpdi1zY3JvbGxhYmxl
LWJ1dC13aXRob3V0LWZvY3VzYWJsZS1jb250ZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM1
IEBACithCitUaGlzIGlzIGEgc2Nyb2xsYWJsZSBEaXYgY3JlYXRlZCB3aXRoIHRoZSBDU1MgcHJv
cGVydHkgb3ZlcmZsb3cuCisKK0l0IGhhcyBubyBrZXlib2FyZCBmb2N1c2FibGUgZWxlbWVudHMg
Li4uLgorCisKKworCisKKworCisKKworCisKKworCisuLi4gYW5kIHNjcm9sbGJhcnMhCisKK1Ro
aXMgaXMgYW5vdGhlciBzY3JvbGxhYmxlIGRpdiBjcmVhdGVkIHdpdGggdGhlIENTUyBwcm9wZXJ0
eSBvdmVyZmxvdy4KKworSXQgaGFzIGFsc28gbm8ga2V5Ym9hcmQgZm9jdXNhYmxlIGVsZW1lbnRz
IC4uLi4KKworCisKKworCisKKworLi4uIGFzIHdlbGwgYXMgc2Nyb2xsYmFycyEKKworZQorUEFT
UyBkb2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAiZW5kIgorUEFT
UyBkb2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAic3RhcnQiCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9z
bmF2LWRpdi1zY3JvbGxhYmxlLWJ1dC13aXRob3V0LWZvY3VzYWJsZS1jb250ZW50Lmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1kaXYtc2Nyb2xs
YWJsZS1idXQtd2l0aG91dC1mb2N1c2FibGUtY29udGVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjlmMzdiZTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1kaXYtc2Nyb2xsYWJsZS1idXQt
d2l0aG91dC1mb2N1c2FibGUtY29udGVudC5odG1sCkBAIC0wLDAgKzEsODAgQEAKKzxodG1sPgor
ICA8IS0tCisgICAgVGhpcyB0ZXN0IGVuc3VyZXMgdGhlIGJhc2ljIHRyYXZlcnNhbCBjb3JyZWN0
bmVzcyBvZiBTcGF0aWFsIE5hdmlnYXRpb24KKyAgICBhbGdvcml0aG06IHNjcm9sbGFibGUgZGl2
cyB3aXRob3V0IGFueSBmb2N1c2FibGUgY29udGVudCBzaG91bGQgYmUgaWdub3JlZC4KKworICAg
ICogUHJlLWNvbmRpdGlvbnM6CisgICAgMSkgRFJUIHN1cHBvcnQgZm9yIFNOYXYgZW5hYmxlL2Rp
c2FibGUuCisKKyAgICAqIE5hdmlnYXRpb24gc3RlcHM6CisgICAgMSkgTG9hZHMgdGhpcyBwYWdl
LCBmb2N1cyBnb2VzIHRvICJzdGFydCIgYXV0b21hdGljYWxseS4KKyAgICAyKSBGb2N1cyBtb3Zl
cyBmcm9tICJzdGFydCIgdG8gImVuZCIgYnlwYXNzaW5nIHRoZSB0d28gaWZyYW1lcworICAgICAg
IGluIGJldHdlZW4gdGhlbSwgb25jZSBib3RoIGhhdmUgbm8gZm9jdXNhYmxlIGVsZW1lbnRzIGlu
c2lkZS4KKyAgLS0+CisgIDxoZWFkPgorICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisgICAg
ICBkaXYuc2Nyb2xsIHsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICAgICAgd2lkdGg6IDMw
MHB4OworICAgICAgICBvdmVyZmxvdzogYXV0bzsKKyAgICAgICAgYm9yZGVyOiAxcHggc29saWQg
IzY2NjsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2NjYzsKKyAgICAgICAgcGFkZGluZzog
OHB4OworICAgICAgfQorICAgIDwvc3R5bGU+CisKKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3NwYXRpYWwtbmF2aWdhdGlvbi11dGlscy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Ij4KKworICAgIHZhciByZXN1bHRNYXAgPSBb
CisgICAgICBbIkRvd24iLCAiZW5kIl0sCisgICAgICBbIlVwIiAgLCAic3RhcnQiXSwKKyAgICAg
IFsiRE9ORSIsICJET05FIl0KKyAgICBdOworCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgeworICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0U3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKHRydWUp
OworICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRU
YWJUb0xpbmtzUHJlZmVyZW5jZUtleSIsIDEpOworICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQorICAgIHsK
KyAgICAgIC8vIHN0YXJ0aW5nIHRoZSB0ZXN0IGl0c2VsZjogZ2V0IHRvIGEga25vd24gcGxhY2Uu
CisgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3RhcnQiKS5mb2N1cygpOworCisgICAg
ICBpbml0VGVzdChyZXN1bHRNYXAsIHRlc3RDb21wbGV0ZWQpOworICAgIH0KKworICAgIGZ1bmN0
aW9uIHRlc3RDb21wbGV0ZWQoKQorICAgIHsKKyAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAg
ICB9CisKKyAgICB3aW5kb3cub25sb2FkID0gcnVuVGVzdDsKKyAgICA8L3NjcmlwdD4KKyAgICA8
c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cisg
IDwvaGVhZD4KKyAgPGJvZHkgaWQ9InNvbWUtY29udGVudCIgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGh0bWwiPgorICAgIDxkaXY+PGEgaWQ9InN0YXJ0IiBocmVmPSJhIj5hPC9hPjwv
ZGl2PgorICAgIDxkaXYgY2xhc3M9InNjcm9sbCI+CisgICAgICA8cD5UaGlzIGlzIGEgc2Nyb2xs
YWJsZSBEaXYgY3JlYXRlZCB3aXRoIHRoZSBDU1MgcHJvcGVydHkgb3ZlcmZsb3cuPC9wPgorICAg
ICAgPHA+SXQgaGFzIG5vIGtleWJvYXJkIGZvY3VzYWJsZSBlbGVtZW50cyAuLi4uPC9wPgorICAg
ICAgPGJyPjxicj48YnI+PGJyPjxicj48YnI+CisgICAgICA8YnI+PGJyPjxicj48YnI+PGJyPjxi
cj4KKyAgICAgIDxwPi4uLiBhbmQgc2Nyb2xsYmFycyE8L3A+CisgICAgPC9kaXY+CisKKyAgICA8
ZGl2IGNsYXNzPSJzY3JvbGwiPgorICAgICAgPHA+VGhpcyBpcyBhbm90aGVyIHNjcm9sbGFibGUg
ZGl2IGNyZWF0ZWQgd2l0aCB0aGUgQ1NTIHByb3BlcnR5IG92ZXJmbG93LjwvcD4KKyAgICAgIDxw
Pkl0IGhhcyBhbHNvIG5vIGtleWJvYXJkIGZvY3VzYWJsZSBlbGVtZW50cyAuLi4uPC9wPgorICAg
ICAgPGJyPjxicj48YnI+PGJyPjxicj48YnI+CisgICAgICA8cD4uLi4gYXMgd2VsbCBhcyBzY3Jv
bGxiYXJzITwvcD4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2PjxhIGlkPSJlbmQiIGhyZWY9ImEiPmU8
L2E+PC9kaXY+CisgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgIDwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlv
bi9zbmF2LWRpdi13aXRoLW9mZnNjcmVlbi1mb2N1c2FibGUtZWxlbWVudC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1kaXYtd2l0
aC1vZmZzY3JlZW4tZm9jdXNhYmxlLWVsZW1lbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0NzA2MmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1kaXYtd2l0aC1vZmZzY3Jl
ZW4tZm9jdXNhYmxlLWVsZW1lbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzEgQEAKK0xpbmtf
MSBpcyBhIG5vcm1hbCBsaW5rLgorCitCZWxvdyBpcyBhIHNjcm9sbGFibGUgRGl2IGNyZWF0ZWQg
d2l0aCB0aGUgQ1NTIHByb3BlcnR5IG92ZXJmbG93LgorCitJdCBoYXMgYSB2aXNpYmxlIGxpbmtf
Mi4KKworCisKKworCisKKworCisKKworCisKKworCisKKy4uLiBhbmQgYW4gb3ZlcmZsb3dlZCBs
aW5rIGxpa2UgdGhpcy4KKworQW5kIHRoaXMgaXMgYW5vdGhlciBub3JtYWwgbGlua18zLgorCitQ
QVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCJpZCIpIGlzICIxIgorUEFT
UyBkb2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAiMiIKK1BBU1Mg
ZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoImlkIikgaXMgIjMiCitQQVNTIGRv
Y3VtZW50LmFjdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCJpZCIpIGlzICIyIgorUEFTUyBkb2N1
bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAiMSIKK1BBU1MgZG9jdW1l
bnQuYWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoImlkIikgaXMgInN0YXJ0IgorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1kaXYt
d2l0aC1vZmZzY3JlZW4tZm9jdXNhYmxlLWVsZW1lbnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWRpdi13aXRoLW9mZnNjcmVlbi1mb2N1c2Fi
bGUtZWxlbWVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0YjUx
MWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zcGF0aWFsLW5h
dmlnYXRpb24vc25hdi1kaXYtd2l0aC1vZmZzY3JlZW4tZm9jdXNhYmxlLWVsZW1lbnQuaHRtbApA
QCAtMCwwICsxLDEyMCBAQAorPGh0bWw+CisgIDwhLS0KKyAgICBUaGlzIHRlc3QgZW5zdXJlcyB0
aGUgY29udGVudCBvdmVyZmxvdyB0cmF2ZXJzYWwgY29ycmVjdG5lc3Mgb2YgU3BhdGlhbCBOYXZp
Z2F0aW9uCisgICAgYWxnb3JpdGhtOiBmb2N1c2FibGUgZWxlbWVudHMgaW4gc2Nyb2xsYWJsZSBj
b250YWluZXJzIChlLmcuIDxkaXY+KSBzaG91bGQgYmUKKyAgICBhY2Nlc3NpYmxlLCBpbmNsdWRp
bmcgb2Zmc2NyZWVuIGNvbnRlbnQuCisKKyAgICAqIFByZS1jb25kaXRpb25zOgorICAgIDEpIERS
VCBzdXBwb3J0IGZvciBTTmF2IGVuYWJsZS9kaXNhYmxlLgorCisgICAgKiBOYXZpZ2F0aW9uIHN0
ZXBzOgorICAgIDEpIExvYWRzIHRoaXMgcGFnZSwgZm9jdXMgZ29lcyB0byAic3RhcnQiIGF1dG9t
YXRpY2FsbHkuCisgICAgMikgTW92ZSBmb2N1cyBkb3duIHRvIHRoZSB2aXNpYmxlIGZvY3VzYWJs
ZSBlbGVtZW50IGluCisgICAgICAgc2Nyb2xsYWJsZSBkaXYuCisgICAgMykgVHJhdmVyc2UgdGhl
IHBhZ2UgdGhyb3VnaCBvdGhlciBmb2N1c2FibGUgZWxlbWVudHMgZG93biB0aGUgcGFnZS4KKyAg
ICAgICBhbmQgdGhlbiBiYWNrIHVwLgorCisgICAgKiBFeHBlY3RlZCByZXN1bHRzOiBBbGwgZm9j
dXNhYmxlIGVsZW1lbnQgaW4gc2Nyb2xsYWJsZSBjb250ZW50LCBpbmNsdWRpbmcKKyAgICBvZmZz
Y3JlZW4gb25lcywgc2hvdWxkIGJlIGFjY2Vzc2libGUgdmlhIFNOYXYuIC0tPgorICA8aGVhZD4K
KyAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgICAgZGl2LnNjcm9sbCB7CisgICAgICAg
IGhlaWdodDogMjAwcHg7CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgb3ZlcmZsb3c6
IGF1dG87CisgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICM2NjY7CisgICAgICAgIGJhY2tncm91
bmQtY29sb3I6ICNjY2M7CisgICAgICAgIHBhZGRpbmc6IDhweDsKKyAgICAgIH0KKyAgICA8L3N0
eWxlPgorCisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9zcGF0aWFsLW5hdmlnYXRp
b24tdXRpbHMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2
YXNjcmlwdCI+CisKKyAgICB2YXIgcmVzdWx0TWFwMSA9IFsKKyAgICAgIFsiRG93biIsICIxIl0s
CisgICAgICBbIiIsICIiXQorICAgIF07CisKKyAgICB2YXIgcmVzdWx0TWFwMiA9IFsKKyAgICAg
IFsiRG93biIsICIyIl0sCisgICAgICBbIkRvd24iLCAiMyJdLAorICAgICAgWyJVcCIsICIyIl0s
CisgICAgICBbIiIsICIiXQorICAgIF07CisKKyAgICB2YXIgcmVzdWx0TWFwMyA9IFsKKyAgICAg
IFsiVXAiLCAiMSJdLAorICAgICAgWyJVcCIsICJzdGFydCJdLAorICAgICAgWyJET05FIiwgIkRP
TkUiXQorICAgIF0KKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLnNldFNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZCh0cnVlKTsKKyAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0VGFiVG9MaW5rc1ByZWZl
cmVuY2VLZXkiLCAxKTsKKyAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUo
KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBydW5UZXN0KCkKKyAgICB7CisgICAgICAvLyBzdGFy
dGluZyB0aGUgdGVzdCBpdHNlbGY6IGdldCB0byBhIGtub3duIHBsYWNlLgorICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInN0YXJ0IikuZm9jdXMoKTsKKworICAgICAgc2V0VGltZW91dChz
dGVwMSwgMCk7CisgICAgICBzZXRUaW1lb3V0KHN0ZXAyLCA1MCk7CisgICAgICBzZXRUaW1lb3V0
KHN0ZXAzLCAxNTApOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXAxKCkKKyAgICB7CisgICAg
ICAvLyBBY3Rpb25zIGluICdyZXN1bHRNYXAxJyBzaG91bGQga2VlcCB0aGUgZm9jdXMgaW4gdGhl
IGN1cnJlbnRseQorICAgICAgLy8gZm9jdXNlZCBlbGVtZW50ICgnc3RhcnQnKSBvbmNlIHRoZSBi
ZXN0IGNhbmRpZGF0ZSAoJ2VuZCcpIGlzIG5vdAorICAgICAgLy8gdmlzaWJsZSBpbiBjdXJyZW50
IHZpZXdwb3J0LgorICAgICAgaW5pdFRlc3QocmVzdWx0TWFwMSk7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gc3RlcDIoKQorICAgIHsKKyAgICAgIC8vIFRoZW4gaXQgc2Nyb2xscyBkb3duIHRvIHRo
ZSBlbmQgb2YgdGhlIGRpdiAuLi4KKyAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpCisgICAg
ICAgIGV2ZW50U2VuZGVyLmtleURvd24oImVuZCIpOworCisgICAgICAvLyBBbmQgJ3Jlc3VsdE1h
cDInIHJlLXRyaWVzIHRvIG1vdmUgZm9jdXMgZG93bi4KKyAgICAgIGluaXRUZXN0KHJlc3VsdE1h
cDIpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0ZXAzKCkKKyAgICB7CisgICAgICAvLyBUaGVu
IGl0IHNjcm9sbHMgYmFjayB1cCB0aGUgZGl2IC4uLgorICAgICAgaWYgKHdpbmRvdy5ldmVudFNl
bmRlcikKKyAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bigiaG9tZSIpOworCisgICAgICBpbml0
VGVzdChyZXN1bHRNYXAzLCB0ZXN0Q29tcGxldGVkKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0
ZXN0Q29tcGxldGVkKCkKKyAgICB7CisgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgfQor
CisgICAgd2luZG93Lm9ubG9hZCA9IHJ1blRlc3Q7CisKKyAgICA8L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisgIDwv
aGVhZD4KKworICA8Ym9keSBpZD0ic29tZS1jb250ZW50IiB4bWxucz0iaHR0cDovL3d3dy53My5v
cmcvMTk5OS94aHRtbCI+CisgICAgPHA+PGEgaWQ9InN0YXJ0IiBocmVmPSJhIj5MaW5rXzE8L2E+
IGlzIGEgbm9ybWFsIGxpbmsuPC9wPgorICAgIDxwPkJlbG93IGlzIGEgc2Nyb2xsYWJsZSBEaXYg
Y3JlYXRlZCB3aXRoIHRoZSBDU1MgcHJvcGVydHkgb3ZlcmZsb3cuPC9wPgorICAgIDxkaXYgY2xh
c3M9InNjcm9sbCI+CisgICAgICA8cD5JdCBoYXMgYSB2aXNpYmxlIDxhIGlkPSIxIiBocmVmPSJh
Ij5saW5rXzI8L2E+LjwvcD4KKyAgICAgIDxicj48YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+
PGJyPjxicj48YnI+PGJyPjxicj48YnI+CisgICAgICA8cD4uLi4gYW5kIGFuIG92ZXJmbG93ZWQg
bGluayBsaWtlIDxhIGlkPSIyIiBocmVmPSJhIj50aGlzPC9hPi48L3A+CisgICAgPC9kaXY+Cisg
ICAgPHA+QW5kIHRoaXMgaXMgYW5vdGhlciBub3JtYWwgPGEgaWQ9IjMiIGhyZWY9ImEiPmxpbmtf
MzwvYT4uPC9wPgorICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICA8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDA3YWNjZDAuLmU5YTU3ZjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDEwICsxLDQ4IEBACisyMDEwLTA1LTE0ICBBbnRvbmlv
IEdvbWVzICA8dG9uaWtpdG9vQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgU3BhdGlhbCBOYXZpZ2F0aW9uOiBtYWtlIGl0IHdvcmsg
d2l0aCBmb2N1c2FibGUgZWxlbWVudHMgaW4gb3ZlcmZsb3cgY29udGVudAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY0NjMKKworICAgICAgICBQYXRj
aCBhZGRyZXNzZXMgdGhlIHByb2JsZW0gdGhhdCBjdXJyZW50IFNwYXRpYWwgTmF2aWdhdGlvbiBk
b2VzIG5vdCBwcm9wZXJseQorICAgICAgICB0cmF2ZXJzZSBzY3JvbGxhYmxlIGNvbnRlbnRzLCBp
bmNsdWRpbmcgc2Nyb2xsYWJsZSBkaXYncy4gRm9yIHRoYXQsIGEgbmV3CisgICAgICAgIGNsYXNz
IG1lbWJlciBjYWxsZWQgc2Nyb2xsYWJsZUVuY2xvc2luZ0JveCB3YXMgaW50cm9kdWNlZCB0byBG
b2N1c0NhbmRpZGF0ZSBjbGFzcworICAgICAgICB0byBrZWVwIHRoZSB0cmFjayBvZiBjdXJyZW50
IHNjcm9sbGFibGUgYm94IE5vZGUgd3JhcHBpbmcgYSBGb2N1c0NhbmRpZGF0ZS4gVGhlCisgICAg
ICAgIGNvbW1vbiBjYXNlIGlzIG9idmlvdXNseSB0aGF0IHRoZXJlIGlzIG5vIHNjcm9sbGFibGUg
Y29udGFpbmVyIHdyYXBwaW5nIGl0LgorCisgICAgICAgIFRvIG1ha2UgdXNlIG9mIGVuY2xvc2lu
Z1Njcm9sbGFibGVCb3ggb2YgRm9jdXNDYW5kaWRhdGUsIHRoZSBET00gdHJhdmVyc2FsIGFsZ29y
aXRobQorICAgICAgICByb3V0aW5lIChGb2N1c0NvbnRyb2xsZXI6OmZpbmROZXh0Rm9jdXNhYmxl
SW5EaXJlY3Rpb24pIHdhcyBjaGFuZ2VkIGFzIGZvbGxvd3M6IEF0IHRoZQorICAgICAgICB0aW1l
IGl0IGVuY291bnRlcnMgYSBzY3JvbGxhYmxlIE5vZGUgKHJlYWQgZm9yIG5vdyBhIHNjcm9sbGFi
bGUgZGl2KSwgZWFjaCBmb2N1c2FibGUKKyAgICAgICAgbm9kZSB0aGF0IGlzIGlubmVyIG9mIGl0
IGtlZXBzIHRyYWNrIG9mIHRoZSBjb250YWluZXIgcmVmZXJlbmNlLiBCeSB0aGUgdGltZSBhIHNp
YmxpbmcKKyAgICAgICAgb2YgdGhlIHNjcm9sbGFibGUgTm9kZSBpbiBjYXNlIGlzIGVuY291bnRl
cmVkLCB0aGVyZSBpcyBub3QgbmVlZCB0byB0cmFjayB0aGlzIHJlZmVyZW5jZQorICAgICAgICBh
bnkgbW9yZS4KKworICAgICAgICB1cGRhdGVGb2N1c0NhbmRpZGl0ZUlmQ2xvc2VyIGxvZ2ljIHdh
cyBhbHNvIGFkYXB0ZWQgdG8gZml0IHRoZSBuZWVkIG9mIHRoZQorICAgICAgICBuZXdseSBpbnRy
b2R1Y2VkIGVuY2xvc2luZ1Njcm9sbGFibGVCb3ggY2xhc3MgbWVtYmVyLCBnZXR0aW5nIHNpbXBs
ZXIgYW5kIG1vcmUKKyAgICAgICAgZWFzaWx5IG1haW50YWluYWJsZS4KKworICAgICAgICBUZXN0
czogZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtZGl2LXNjcm9sbGFibGUtYnV0
LXdpdGhvdXQtZm9jdXNhYmxlLWNvbnRlbnQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9ldmVu
dHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtZGl2LXdpdGgtb2Zmc2NyZWVuLWZvY3VzYWJsZS1l
bGVtZW50Lmh0bWwKKworICAgICAgICAqIHBhZ2UvRm9jdXNDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnVwZGF0ZUZvY3VzQ2FuZGlkYXRlSW5UaGVTYW1lQ29udGFpbmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OnVwZGF0ZUZvY3VzQ2FuZGlkYXRlSWZDbG9zZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjpmaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6ZGVlcEZpbmRGb2N1c2FibGVOb2Rl
SW5EaXJlY3Rpb24pOgorICAgICAgICAqIHBhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6aXNTY3JvbGxhYmxlQ29udGFpbmVyTm9kZSk6CisgICAgICAgICogcGFn
ZS9TcGF0aWFsTmF2aWdhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDYW5kaWRhdGU6
OkZvY3VzQ2FuZGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ2FuZGlkYXRlOjppc0lu
U2Nyb2xsYWJsZUNvbnRhaW5lcik6CisKIDIwMTAtMDUtMTIgIEtlbm5ldGggUnVzc2VsbCAgPGti
ckBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KIAog
ICAgICAgICBBbGlhcyBXZWJHTEFycmF5IHR5cGUgbmFtZXMgdG8gVHlwZWRBcnJheSB0eXBlIG5h
bWVzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTAz
NgogCiAgICAgICAgIEV4cG9zZWQgdGhlIGV4aXN0aW5nIFdlYkdMPFQ+QXJyYXkgY29uc3RydWN0
b3IgZnVuY3Rpb25zIG9uIHRoZQogICAgICAgICBET01XaW5kb3cgdW5kZXIgdGhlIG5hbWluZyBj
b252ZW50aW9uIGluIHRoZSBUeXBlZEFycmF5IHNwZWMuIFRoZQogICAgICAgICBpbXBsZW1lbnRh
dGlvbnMgd2lsbCBiZSByZW5hbWVkIGluIGEgc3Vic2VxdWVudCBidWcsIGFuZCB0aGUKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9wYWdlL0Zv
Y3VzQ29udHJvbGxlci5jcHAKaW5kZXggMDgyMTlhNi4uOTIxYjA5OSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0ZvY3VzQ29u
dHJvbGxlci5jcHAKQEAgLTMzNSwxMzYgKzMzNSwxOTcgQEAgYm9vbCBGb2N1c0NvbnRyb2xsZXI6
OmFkdmFuY2VGb2N1c0RpcmVjdGlvbmFsbHkoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBLZXli
b2EKICAgICAgICAgc2V0Rm9jdXNlZEZyYW1lKG5ld0RvY3VtZW50LT5mcmFtZSgpKTsKIAogICAg
IEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSk7CiAgICAgQVNT
RVJUKGVsZW1lbnQpOwogCiAgICAgc2Nyb2xsSW50b1ZpZXcoZWxlbWVudCk7CiAgICAgZWxlbWVu
dC0+Zm9jdXMoZmFsc2UpOwogICAgIHJldHVybiB0cnVlOwogfQogCi0vLyBGSVhNRTogTWFrZSB0
aGlzIG1ldGhvZCBtb3JlIG1vZHVsYXIsIGFuZCBzaW1wbGVyIHRvIHVuZGVyc3RhbmQgYW5kIG1h
aW50YWluLgotc3RhdGljIHZvaWQgdXBkYXRlRm9jdXNDYW5kaWRhdGVJZkNsb3NlcihOb2RlKiBm
b2N1c2VkTm9kZSwgY29uc3QgRm9jdXNDYW5kaWRhdGUmIGNhbmRpZGF0ZSwgRm9jdXNDYW5kaWRh
dGUmIGNsb3Nlc3QpCitzdGF0aWMgdm9pZCB1cGRhdGVGb2N1c0NhbmRpZGF0ZUluVGhlU2FtZUNv
bnRhaW5lcihjb25zdCBGb2N1c0NhbmRpZGF0ZSYgY2FuZGlkYXRlLCBGb2N1c0NhbmRpZGF0ZSYg
Y2xvc2VzdCkKIHsKLSAgICBib29sIHNhbWVEb2N1bWVudCA9IGNhbmRpZGF0ZS5kb2N1bWVudCgp
ID09IGNsb3Nlc3QuZG9jdW1lbnQoKTsKLSAgICBpZiAoc2FtZURvY3VtZW50KSB7Ci0gICAgICAg
IGlmIChjbG9zZXN0LmFsaWdubWVudCA+IGNhbmRpZGF0ZS5hbGlnbm1lbnQKLSAgICAgICAgIHx8
IChjbG9zZXN0LnBhcmVudEFsaWdubWVudCAmJiBjYW5kaWRhdGUuYWxpZ25tZW50ID4gY2xvc2Vz
dC5wYXJlbnRBbGlnbm1lbnQpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0gZWxzZSBpZiAo
Y2xvc2VzdC5hbGlnbm1lbnQgPiBjYW5kaWRhdGUuYWxpZ25tZW50Ci0gICAgICAgICAgICAmJiAo
Y2xvc2VzdC5wYXJlbnRBbGlnbm1lbnQgJiYgY2FuZGlkYXRlLmFsaWdubWVudCA+IGNsb3Nlc3Qu
cGFyZW50QWxpZ25tZW50KSkKKyAgICBpZiAoY2xvc2VzdC5pc051bGwoKSkgeworICAgICAgICBj
bG9zZXN0ID0gY2FuZGlkYXRlOwogICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoY2FuZGlkYXRl
LmFsaWdubWVudCAhPSBOb25lCi0gICAgIHx8IChjbG9zZXN0LnBhcmVudEFsaWdubWVudCA+PSBj
YW5kaWRhdGUuYWxpZ25tZW50Ci0gICAgICYmIGNsb3Nlc3QuZG9jdW1lbnQoKSA9PSBjYW5kaWRh
dGUuZG9jdW1lbnQoKSkpIHsKLQotICAgICAgICAvLyBJZiB3ZSBhcmUgbm93IGluIGFuIGhpZ2hl
ciBwcmVjZWRlbnQgY2FzZSwgbGV0cyByZXNldCB0aGUgY3VycmVudCBjbG9zZXN0J3MKLSAgICAg
ICAgLy8gZGlzdGFuY2Ugc28gd2UgZm9yY2UgaXQgdG8gYmUgYmlnZ2VyIHRoYW4gYW55IHJlc3Vs
dCB3ZSB3aWxsIGdldCBmcm9tCi0gICAgICAgIC8vIHNwYXRpYWxEaXN0YW5jZSgpLgotICAgICAg
ICBpZiAoY2xvc2VzdC5hbGlnbm1lbnQgPCBjYW5kaWRhdGUuYWxpZ25tZW50Ci0gICAgICAgICAm
JiBjbG9zZXN0LnBhcmVudEFsaWdubWVudCA8IGNhbmRpZGF0ZS5hbGlnbm1lbnQpCi0gICAgICAg
ICAgICBjbG9zZXN0LmRpc3RhbmNlID0gbWF4RGlzdGFuY2UoKTsKICAgICB9CiAKLSAgICAvLyBC
YWlsIG91dCBpZiBjYW5kaWRhdGUncyBkaXN0YW5jZSBpcyBsYXJnZXIgdGhhbiB0aGF0IG9mIHRo
ZSBjbG9zZXN0IGNhbmRpZGF0ZS4KLSAgICBpZiAoY2FuZGlkYXRlLmRpc3RhbmNlID49IGNsb3Nl
c3QuZGlzdGFuY2UpCisgICAgaWYgKGNhbmRpZGF0ZS5hbGlnbm1lbnQgPT0gY2xvc2VzdC5hbGln
bm1lbnQpIHsKKyAgICAgICAgaWYgKGNhbmRpZGF0ZS5kaXN0YW5jZSA8IGNsb3Nlc3QuZGlzdGFu
Y2UpCisgICAgICAgICAgICBjbG9zZXN0ID0gY2FuZGlkYXRlOwogICAgICAgICByZXR1cm47Cisg
ICAgfQogCi0gICAgaWYgKGNsb3Nlc3QuaXNOdWxsKCkpIHsKKyAgICBpZiAoY2FuZGlkYXRlLmFs
aWdubWVudCA+IGNsb3Nlc3QuYWxpZ25tZW50KQogICAgICAgICBjbG9zZXN0ID0gY2FuZGlkYXRl
OworfQorCitzdGF0aWMgdm9pZCB1cGRhdGVGb2N1c0NhbmRpZGF0ZUlmQ2xvc2VyKE5vZGUqIGZv
Y3VzZWROb2RlLCBjb25zdCBGb2N1c0NhbmRpZGF0ZSYgY2FuZGlkYXRlLCBGb2N1c0NhbmRpZGF0
ZSYgY2xvc2VzdCkKK3sKKyAgICAvLyBGaXJzdCwgY2hlY2sgdGhlIGNvbW1vbiBjYXNlOiBuZWl0
aGVyIGNhbmRpZGF0ZSBub3IgY2xvc2VzdCBhcmUKKyAgICAvLyBpbnNpZGUgc2Nyb2xsYWJsZSBj
b250ZW50LCB0aGVuIG5vIG5lZWQgdG8gY2FyZSBhYm91dCBlbmNsb3NpbmdTY3JvbGxhYmxlQm94
CisgICAgLy8gaGV1cmlzdGljcyBvciBwYXJlbnR7RGlzdGFuY2UsQWxpZ25tZW50fSwgYnV0IG9u
bHkgZGlzdGFuY2UgYW5kIGFsaWdubWVudC4KKyAgICBpZiAoIWNhbmRpZGF0ZS5pc0luU2Nyb2xs
YWJsZUNvbnRhaW5lcigpICYmICFjbG9zZXN0LmlzSW5TY3JvbGxhYmxlQ29udGFpbmVyKCkpIHsK
KworICAgICAgICB1cGRhdGVGb2N1c0NhbmRpZGF0ZUluVGhlU2FtZUNvbnRhaW5lcihjYW5kaWRh
dGUsIGNsb3Nlc3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gSWYgdGhlIGZv
Y3VzZWQgbm9kZSBhbmQgdGhlIGNhbmRhZGF0ZSBhcmUgaW4gdGhlIHNhbWUgZG9jdW1lbnQgYW5k
IGN1cnJlbnQKLSAgICAvLyBjbG9zZXN0IGNhbmRpZGF0ZSBpcyBub3QgaW4gYW4ge2l9ZnJhbWUg
dGhhdCBpcyBwcmVmZXJhYmxlIHRvIGdldCBmb2N1c2VkIC4uLgotICAgIGlmIChmb2N1c2VkTm9k
ZS0+ZG9jdW1lbnQoKSA9PSBjYW5kaWRhdGUuZG9jdW1lbnQoKQotICAgICAgICAmJiBjYW5kaWRh
dGUuZGlzdGFuY2UgPCBjbG9zZXN0LnBhcmVudERpc3RhbmNlKQotICAgICAgICBjbG9zZXN0ID0g
Y2FuZGlkYXRlOwotICAgIGVsc2UgaWYgKGZvY3VzZWROb2RlLT5kb2N1bWVudCgpICE9IGNhbmRp
ZGF0ZS5kb2N1bWVudCgpKSB7Ci0gICAgICAgIC8vIElmIHRoZSBmb2N1c2VkTm9kZSBpcyBpbiBh
biBpbm5lciBkb2N1bWVudCBhbmQgY2FuZGlkYXRlIGlzIGluIGEKLSAgICAgICAgLy8gZGlmZmVy
ZW50IGRvY3VtZW50LCB3ZSBvbmx5IGNvbnNpZGVyIHRvIGNoYW5nZSBmb2N1cyBpZiB0aGVyZSBp
cyBub3QKLSAgICAgICAgLy8gYW5vdGhlciBhbHJlYWR5IGdvb2QgZm9jdXNhYmxlIGNhbmRpZGF0
ZSBpbiB0aGUgc2FtZSBkb2N1bWVudCBhcyBmb2N1c2VkTm9kZS4KLSAgICAgICAgaWYgKCEoKGlz
SW5Sb290RG9jdW1lbnQoY2FuZGlkYXRlLm5vZGUpICYmICFpc0luUm9vdERvY3VtZW50KGZvY3Vz
ZWROb2RlKSkKLSAgICAgICAgICAgICYmIGZvY3VzZWROb2RlLT5kb2N1bWVudCgpID09IGNsb3Nl
c3QuZG9jdW1lbnQoKSkpCisgICAgYm9vbCBzYW1lQ29udGFpbmVyOworICAgIGlmIChjYW5kaWRh
dGUuZG9jdW1lbnQoKSAhPSBjbG9zZXN0LmRvY3VtZW50KCkpCisgICAgICAgIHNhbWVDb250YWlu
ZXIgPSBmYWxzZTsKKyAgICBlbHNlCisgICAgICAgIHNhbWVDb250YWluZXIgPSBjYW5kaWRhdGUu
ZW5jbG9zaW5nU2Nyb2xsYWJsZUJveCA9PSBjbG9zZXN0LmVuY2xvc2luZ1Njcm9sbGFibGVCb3g7
CisKKyAgICAvLyBTZWNvbmQsIGlmIGNhbmRpZGF0ZSBhbmQgY2xvc2VzdCBhcmUgaW4gdGhlIHNh
bWUgImNvbnRhaW5lciIgKGkuZS4ge2l9ZnJhbWUgb3Igc2Nyb2xsYWJsZQorICAgIC8vIGRpdiks
IHdlIGNhbiBoYW5kbGUgdGhlbSBhcyBjb21tb24gY2FzZS4KKyAgICBpZiAoc2FtZUNvbnRhaW5l
cikgeworCisgICAgICAgIHVwZGF0ZUZvY3VzQ2FuZGlkYXRlSW5UaGVTYW1lQ29udGFpbmVyKGNh
bmRpZGF0ZSwgY2xvc2VzdCk7CisgICAgICAgIHJldHVybjsKKworICAgIC8vIExhc3QsIHdlIGFy
ZSBjb25zaWRlcmluZyBtb3ZpbmcgdG8gYSBjYW5kaWRhdGUgbG9jYXRlZCBpbiBhIGRpZmZlcmVu
dCBlbmNsb3NpbmcKKyAgICAvLyBzY3JvbGxhYmxlIGJveCB0aGFuIGNsb3Nlc3QuCisgICAgfSBl
bHNlIHsKKworICAgICAgICBib29sIGlzSW5Jbm5lckRvY3VtZW50ID0gIWlzSW5Sb290RG9jdW1l
bnQoZm9jdXNlZE5vZGUpOworCisgICAgICAgIGJvb2wgc2FtZUNvbnRhaW5lckFzQ2FuZGlkYXRl
ID0gaXNJbklubmVyRG9jdW1lbnQgPyBmb2N1c2VkTm9kZS0+ZG9jdW1lbnQoKSA9PSBjYW5kaWRh
dGUuZG9jdW1lbnQoKSA6CisgICAgICAgICAgICBmb2N1c2VkTm9kZS0+aXNEZXNjZW5kYW50T2Yo
Y2FuZGlkYXRlLmVuY2xvc2luZ1Njcm9sbGFibGVCb3gpOworCisgICAgICAgIGJvb2wgc2FtZUNv
bnRhaW5lckFzQ2xvc2VzdCA9IGlzSW5Jbm5lckRvY3VtZW50ID8gZm9jdXNlZE5vZGUtPmRvY3Vt
ZW50KCkgPT0gY2xvc2VzdC5kb2N1bWVudCgpIDoKKyAgICAgICAgICAgIGZvY3VzZWROb2RlLT5p
c0Rlc2NlbmRhbnRPZihjbG9zZXN0LmVuY2xvc2luZ1Njcm9sbGFibGVCb3gpOworCisgICAgICAg
IC8vIHNhbWVDb250YWluZXJBc0NhbmRpZGF0ZSBhbmQgc2FtZUNvbnRhaW5lckFzQ2xvc2VzdCBh
cmUgbXV0dWFsbHkgZXhjbHV2aXZlLgorICAgICAgICBBU1NFUlQoIShzYW1lQ29udGFpbmVyQXND
YW5kaWRhdGUgJiYgc2FtZUNvbnRhaW5lckFzQ2xvc2VzdCkpOworCisgICAgICAgIGlmIChzYW1l
Q29udGFpbmVyQXNDYW5kaWRhdGUpIHsKICAgICAgICAgICAgIGNsb3Nlc3QgPSBjYW5kaWRhdGU7
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgfSBlbHNlIGlmIChzYW1lQ29udGFpbmVy
QXNDbG9zZXN0KSB7CisgICAgICAgICAgICAvLyBOb3RoaW5nIHRvIGJlIGRvbmUuCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgfSBlbHNlIHsgLy8gIyMjICFzYW1lQ29udGFpbmVyQXND
YW5kaWRhdGUgJiYgIXNhbWVDb250YWluZXJBc0Nsb3Nlc3QKKworICAgICAgICAgICAgLy8gSWYg
ZGlzdGFuY2UgaXMgc2hvcnRlciwgYW5kIHdlIGFyZSB0YWxraW5nIGFib3V0IHNjcm9sbGFibGUg
Y29udGFpbmVyLAorICAgICAgICAgICAgLy8gbGV0cyBjb21wYXJlIHBhcmVudCBkaXN0YW5jZSBh
bmQgYWxpZ25tZW50IGJlZm9yZSBhbnl0aGluZy4KKyAgICAgICAgICAgIGlmIChjYW5kaWRhdGUu
ZGlzdGFuY2UgPCBjbG9zZXN0LmRpc3RhbmNlKSB7CisgICAgICAgICAgICAgICAgaWYgKGNhbmRp
ZGF0ZS5wYXJlbnRBbGlnbm1lbnQgPj0gY2xvc2VzdC5hbGlnbm1lbnQpIHsKKyAgICAgICAgICAg
ICAgICAgICAgY2xvc2VzdCA9IGNhbmRpZGF0ZTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgfSBlbHNlIGlmIChjYW5kaWRhdGUu
cGFyZW50RGlzdGFuY2UgPCBjbG9zZXN0LmRpc3RhbmNlKSB7CisgICAgICAgICAgICAgICAgaWYg
KGNhbmRpZGF0ZS5wYXJlbnRBbGlnbm1lbnQgPj0gY2xvc2VzdC5hbGlnbm1lbnQpIHsKKyAgICAg
ICAgICAgICAgICAgICAgY2xvc2VzdCA9IGNhbmRpZGF0ZTsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAg
IH0KIH0KIAogdm9pZCBGb2N1c0NvbnRyb2xsZXI6OmZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rp
b24oTm9kZSogb3V0ZXIsIE5vZGUqIGZvY3VzZWROb2RlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBL
ZXlib2FyZEV2ZW50KiBldmVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEZvY3VzQ2FuZGlkYXRlJiBjbG9zZXN0Rm9jdXNDYW5kaWRhdGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBG
b2N1c0NhbmRpZGF0ZSYgY2FuZGlkYXRlUGFyZW50KQogewogICAgIEFTU0VSVChvdXRlcik7CiAg
ICAgQVNTRVJUKGNhbmRpZGF0ZVBhcmVudC5pc051bGwoKQogICAgICAgICB8fCBjYW5kaWRhdGVQ
YXJlbnQubm9kZS0+aGFzVGFnTmFtZShmcmFtZVRhZykKLSAgICAgICAgfHwgY2FuZGlkYXRlUGFy
ZW50Lm5vZGUtPmhhc1RhZ05hbWUoaWZyYW1lVGFnKSk7CisgICAgICAgIHx8IGNhbmRpZGF0ZVBh
cmVudC5ub2RlLT5oYXNUYWdOYW1lKGlmcmFtZVRhZykKKyAgICAgICAgfHwgY2FuZGlkYXRlUGFy
ZW50Lm5vZGUtPmhhc1RhZ05hbWUoZGl2VGFnKSk7CiAKICAgICAvLyBXYWxrIGFsbCB0aGUgY2hp
bGQgbm9kZXMgYW5kIHVwZGF0ZSBjbG9zZXN0Rm9jdXNDYW5kaWRhdGUgaWYgd2UgZmluZCBhIG5l
YXJlciBub2RlLgogICAgIE5vZGUqIGNhbmRpZGF0ZSA9IG91dGVyOwogICAgIHdoaWxlIChjYW5k
aWRhdGUpIHsKKwogICAgICAgICAvLyBJbm5lciBkb2N1bWVudHMgY2FzZS4KKyAgICAgICAgaWYg
KGNhbmRpZGF0ZS0+aXNGcmFtZU93bmVyRWxlbWVudCgpKSB7CisgICAgICAgICAgICBkZWVwRmlu
ZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbihjYW5kaWRhdGUsIGZvY3VzZWROb2RlLCBkaXJlY3Rp
b24sIGV2ZW50LCBjbG9zZXN0Rm9jdXNDYW5kaWRhdGUpOwogCi0gICAgICAgIGlmIChjYW5kaWRh
dGUtPmlzRnJhbWVPd25lckVsZW1lbnQoKSkKKyAgICAgICAgLy8gU2Nyb2xsYWJsZSBjb250YWlu
ZXJzIChlLmcuIDxkaXY+KSBjYXNlLgorICAgICAgICB9IGVsc2UgaWYgKGNhbmRpZGF0ZS0+aGFz
VGFnTmFtZShkaXZUYWcpICYmIGlzU2Nyb2xsYWJsZUNvbnRhaW5lck5vZGUoY2FuZGlkYXRlKSkg
ewogICAgICAgICAgICAgZGVlcEZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24oY2FuZGlkYXRl
LCBmb2N1c2VkTm9kZSwgZGlyZWN0aW9uLCBldmVudCwgY2xvc2VzdEZvY3VzQ2FuZGlkYXRlKTsK
LSAgICAgICAgZWxzZSBpZiAoY2FuZGlkYXRlICE9IGZvY3VzZWROb2RlICYmIGNhbmRpZGF0ZS0+
aXNLZXlib2FyZEZvY3VzYWJsZShldmVudCkpIHsKKyAgICAgICAgICAgIGNhbmRpZGF0ZSA9IGNh
bmRpZGF0ZS0+dHJhdmVyc2VOZXh0U2libGluZygpOworICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgfSBlbHNlIGlmIChjYW5kaWRhdGUgIT0gZm9jdXNlZE5vZGUgJiYgY2FuZGlkYXRl
LT5pc0tleWJvYXJkRm9jdXNhYmxlKGV2ZW50KSkgeworCiAgICAgICAgICAgICBGb2N1c0NhbmRp
ZGF0ZSBjdXJyZW50Rm9jdXNDYW5kaWRhdGUoY2FuZGlkYXRlKTsKIAorICAgICAgICAgICAgLy8g
VGhlcmUgYXJlIHR3byB3YXlzIHRvIGlkZW50aWZ5IHdlIGFyZSBpbiBhIHJlY3Vyc2l2ZSBjYWxs
IGZyb20gZGVlcEZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24KKyAgICAgICAgICAgIC8vIChp
LmUuIHByb2Nlc3NpbmcgYW4gZWxlbWVudCBpbiBhbiBpZnJhbWUsIGZyYW1lIG9yIGEgc2Nyb2xs
YWJsZSBkaXYpOgorCisgICAgICAgICAgICAvLyAxKSBJZiBjYW5kaWRhdGVQYXJlbnQgaXMgbm90
IG51bGwsIGFuZCBpdCBob2xkcyB0aGUgZGlzdGFuY2UgYW5kIGFsaWdubWVudCBkYXRhIG9mIHRo
ZQorICAgICAgICAgICAgLy8gcGFyZW50IGNvbnRhaW5lciBlbGVtZW50IGl0c2VsZi4KKyAgICAg
ICAgICAgIGlmICghY2FuZGlkYXRlUGFyZW50LmlzTnVsbCgpKSB7CisgICAgICAgICAgICAgICAg
Y3VycmVudEZvY3VzQ2FuZGlkYXRlLnBhcmVudEFsaWdubWVudCA9IGNhbmRpZGF0ZVBhcmVudC5h
bGlnbm1lbnQ7CisgICAgICAgICAgICAgICAgY3VycmVudEZvY3VzQ2FuZGlkYXRlLnBhcmVudERp
c3RhbmNlID0gY2FuZGlkYXRlUGFyZW50LmRpc3RhbmNlOworICAgICAgICAgICAgICAgIGN1cnJl
bnRGb2N1c0NhbmRpZGF0ZS5lbmNsb3NpbmdTY3JvbGxhYmxlQm94ID0gY2FuZGlkYXRlUGFyZW50
Lm5vZGU7CisKKyAgICAgICAgICAgIC8vIDIpIFBhcmVudCBvZiBvdXRlciBpcyBlaXRoZXI6Cisg
ICAgICAgICAgICAvLyAqIDxmcmFtZT4gb3IgPGlmcmFtZT47CisgICAgICAgICAgICAvLyAqIDxk
aXY+LgorICAgICAgICAgICAgfSBlbHNlIGlmICghaXNJblJvb3REb2N1bWVudChvdXRlcikpIHsK
KyAgICAgICAgICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVu
dCo+KG91dGVyLT5wYXJlbnQoKSk7CisgICAgICAgICAgICAgICAgY3VycmVudEZvY3VzQ2FuZGlk
YXRlLmVuY2xvc2luZ1Njcm9sbGFibGVCb3ggPSAoTm9kZSopIGRvY3VtZW50LT5vd25lckVsZW1l
bnQoKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAob3V0ZXItPnBhcmVudCgpLT5oYXNUYWdOYW1l
KGRpdlRhZykpCisgICAgICAgICAgICAgICAgY3VycmVudEZvY3VzQ2FuZGlkYXRlLmVuY2xvc2lu
Z1Njcm9sbGFibGVCb3ggPSBvdXRlci0+cGFyZW50KCk7CisKICAgICAgICAgICAgIC8vIEdldCBk
aXN0YW5jZSBhbmQgYWxpZ25tZW50IGZyb20gY3VycmVudCBjYW5kaWRhdGUuCiAgICAgICAgICAg
ICBkaXN0YW5jZURhdGFGb3JOb2RlKGRpcmVjdGlvbiwgZm9jdXNlZE5vZGUsIGN1cnJlbnRGb2N1
c0NhbmRpZGF0ZSk7CiAKICAgICAgICAgICAgIC8vIEJhaWwgb3V0IGlmIGRpc3RhbmNlIGlzIG1h
eGltdW0uCiAgICAgICAgICAgICBpZiAoY3VycmVudEZvY3VzQ2FuZGlkYXRlLmRpc3RhbmNlID09
IG1heERpc3RhbmNlKCkpIHsKICAgICAgICAgICAgICAgICBjYW5kaWRhdGUgPSBjYW5kaWRhdGUt
PnRyYXZlcnNlTmV4dE5vZGUob3V0ZXItPnBhcmVudCgpKTsKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgLy8gSWYgY2FuZGlkYXRlUGFyZW50
IGlzIG5vdCBudWxsLCBpdCBtZWFucyB0aGF0IHdlIGFyZSBpbiBhIHJlY3Vyc2l2ZSBjYWxsCi0g
ICAgICAgICAgICAvLyBmcm9tIGRlZXBGaW5lRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uIChpLmUu
IHByb2Nlc3NpbmcgYW4gZWxlbWVudCBpbiBhbiBpZnJhbWUpLAotICAgICAgICAgICAgLy8gYW5k
IGhvbGRzIHRoZSBkaXN0YW5jZSBhbmQgYWxpZ25tZW50IGRhdGEgb2YgdGhlIGlmcmFtZSBlbGVt
ZW50IGl0c2VsZi4KLSAgICAgICAgICAgIGlmICghY2FuZGlkYXRlUGFyZW50LmlzTnVsbCgpKSB7
Ci0gICAgICAgICAgICAgICAgY3VycmVudEZvY3VzQ2FuZGlkYXRlLnBhcmVudEFsaWdubWVudCA9
IGNhbmRpZGF0ZVBhcmVudC5hbGlnbm1lbnQ7Ci0gICAgICAgICAgICAgICAgY3VycmVudEZvY3Vz
Q2FuZGlkYXRlLnBhcmVudERpc3RhbmNlID0gY2FuZGlkYXRlUGFyZW50LmRpc3RhbmNlOwotICAg
ICAgICAgICAgfQotCiAgICAgICAgICAgICB1cGRhdGVGb2N1c0NhbmRpZGF0ZUlmQ2xvc2VyKGZv
Y3VzZWROb2RlLCBjdXJyZW50Rm9jdXNDYW5kaWRhdGUsIGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZSk7
CiAgICAgICAgIH0KIAogICAgICAgICBjYW5kaWRhdGUgPSBjYW5kaWRhdGUtPnRyYXZlcnNlTmV4
dE5vZGUob3V0ZXItPnBhcmVudCgpKTsKICAgICB9CiB9CiAKIHZvaWQgRm9jdXNDb250cm9sbGVy
OjpkZWVwRmluZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbihOb2RlKiBjb250YWluZXIsIE5vZGUq
IGZvY3VzZWROb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgS2V5Ym9hcmRFdmVudCogZXZl
bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRm9jdXNDYW5kaWRhdGUmIGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZSkKIHsKLSAgICBBU1NFUlQo
Y29udGFpbmVyLT5oYXNUYWdOYW1lKGZyYW1lVGFnKSB8fCBjb250YWluZXItPmhhc1RhZ05hbWUo
aWZyYW1lVGFnKSk7CisgICAgQVNTRVJUKGNvbnRhaW5lci0+aGFzVGFnTmFtZShmcmFtZVRhZykg
fHwgY29udGFpbmVyLT5oYXNUYWdOYW1lKGlmcmFtZVRhZykgfHwgY29udGFpbmVyLT5oYXNUYWdO
YW1lKGRpdlRhZykpOwogCiAgICAgLy8gVHJhY2sgaWYgZm9jdXNlZE5vZGUgaXMgYSBkZXNjZW5k
YW50IG9mIHRoZSBjdXJyZW50IGNvbnRhaW5lciBub2RlIGJlaW5nIHByb2Nlc3NlZC4KICAgICBi
b29sIGRlc2NlbmRhbnRPZkNvbnRhaW5lciA9IGZhbHNlOwogICAgIE5vZGUqIGZpcnN0Q2hpbGQg
PSAwOwogCiAgICAgLy8gSWZyYW1lIG9yIEZyYW1lLgogICAgIGlmIChjb250YWluZXItPmhhc1Rh
Z05hbWUoZnJhbWVUYWcpIHx8IGNvbnRhaW5lci0+aGFzVGFnTmFtZShpZnJhbWVUYWcpKSB7CiAK
ICAgICAgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lciA9IHN0YXRpY19jYXN0PEhUTUxG
cmFtZU93bmVyRWxlbWVudCo+KGNvbnRhaW5lcik7CiAgICAgICAgIGlmICghb3duZXItPmNvbnRl
bnRGcmFtZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIERvY3VtZW50KiBpbm5l
ckRvY3VtZW50ID0gb3duZXItPmNvbnRlbnRGcmFtZSgpLT5kb2N1bWVudCgpOwogICAgICAgICBp
ZiAoIWlubmVyRG9jdW1lbnQpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgZGVzY2Vu
ZGFudE9mQ29udGFpbmVyID0gaW5uZXJEb2N1bWVudCA9PSBmb2N1c2VkTm9kZS0+ZG9jdW1lbnQo
KTsKICAgICAgICAgZmlyc3RDaGlsZCA9IGlubmVyRG9jdW1lbnQtPmZpcnN0Q2hpbGQoKTsKIAor
ICAgIC8vIFNjcm9sbGFibGUgZGl2LgorICAgIH0gZWxzZSBpZiAoY29udGFpbmVyLT5oYXNUYWdO
YW1lKGRpdlRhZykpIHsKKworICAgICAgICBmaXJzdENoaWxkID0gY29udGFpbmVyLT5maXJzdENo
aWxkKCk7CisgICAgICAgIGRlc2NlbmRhbnRPZkNvbnRhaW5lciA9IGZvY3VzZWROb2RlLT5pc0Rl
c2NlbmRhbnRPZihjb250YWluZXIpOwogICAgIH0KIAogICAgIGlmIChkZXNjZW5kYW50T2ZDb250
YWluZXIpIHsKICAgICAgICAgZmluZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbihmaXJzdENoaWxk
LCBmb2N1c2VkTm9kZSwgZGlyZWN0aW9uLCBldmVudCwgY2xvc2VzdEZvY3VzQ2FuZGlkYXRlKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIC8vIENoZWNrIGlmIHRoZSBjdXJyZW50IGNv
bnRhaW5lciBlbGVtZW50IGl0c2VsZiBpcyBhIGdvb2QgY2FuZGlkYXRlCiAgICAgLy8gdG8gbW92
ZSBmb2N1cyB0by4gSWYgaXQgaXMsIHRoZW4gd2UgdHJhdmVyc2UgaXRzIGlubmVyIG5vZGVzLgog
ICAgIEZvY3VzQ2FuZGlkYXRlIGNhbmRpZGF0ZVBhcmVudCA9IEZvY3VzQ2FuZGlkYXRlKGNvbnRh
aW5lcik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwIGIv
V2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcAppbmRleCA3NjZjMzA2Li5lZmQ5Yjg5
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwCisrKyBiL1dl
YkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAKQEAgLTUyMywxMSArNTIzLDIyIEBAIHN0
YXRpYyBib29sIGNoZWNrTmVnYXRpdmVDb29yZHNGb3JOb2RlKE5vZGUqIG5vZGUsIGNvbnN0IElu
dFJlY3QmIGN1clJlY3QpCiAgICAgZm9yICg7IHJlbmRlcmVyOyByZW5kZXJlciA9IHJlbmRlcmVy
LT5wYXJlbnQoKSkgewogICAgICAgICBpZiAocmVuZGVyZXItPmlzQm94KCkgJiYgdG9SZW5kZXJC
b3gocmVuZGVyZXIpLT5jYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEoKSkgewogICAg
ICAgICAgICAgY2FuQmVTY3JvbGxlZCA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgIH0KIAogICAgIHJldHVybiBjYW5CZVNjcm9sbGVkOwogfQogCitib29sIGlzU2Ny
b2xsYWJsZUNvbnRhaW5lck5vZGUoTm9kZSogbm9kZSkKK3sKKyAgICBpZiAoIW5vZGUpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9k
ZS0+cmVuZGVyZXIoKSkKKyAgICAgICAgcmV0dXJuIChyZW5kZXJlci0+aXNCb3goKSAmJiB0b1Jl
bmRlckJveChyZW5kZXJlciktPmNhbkJlU2Nyb2xsZWRBbmRIYXNTY3JvbGxhYmxlQXJlYSgpKTsK
KworICAgIHJldHVybiBmYWxzZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmggYi9XZWJDb3JlL3BhZ2UvU3Bh
dGlhbE5hdmlnYXRpb24uaAppbmRleCBkMzhmYjA5Li4yOWE1MjdmIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uaAorKysgYi9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5h
dmlnYXRpb24uaApAQCAtOTAsNDUgKzkwLDUwIEBAIGlubGluZSBpbnQgZnVkZ2VGYWN0b3IoKQog
Ly8gbW9yZSBwcmVmZXJhYmxlIHRoYW4gIk5vdCBBbGlnbmVkIi4KIGVudW0gUmVjdHNBbGlnbm1l
bnQgewogICAgIE5vbmUgPSAwLAogICAgIFBhcnRpYWwsCiAgICAgRnVsbAogfTsKIAogc3RydWN0
IEZvY3VzQ2FuZGlkYXRlIHsKICAgICBGb2N1c0NhbmRpZGF0ZSgpCiAgICAgICAgIDogbm9kZSgw
KQorICAgICAgICAsIGVuY2xvc2luZ1Njcm9sbGFibGVCb3goMCkKICAgICAgICAgLCBkaXN0YW5j
ZShtYXhEaXN0YW5jZSgpKQogICAgICAgICAsIHBhcmVudERpc3RhbmNlKG1heERpc3RhbmNlKCkp
CiAgICAgICAgICwgYWxpZ25tZW50KE5vbmUpCiAgICAgICAgICwgcGFyZW50QWxpZ25tZW50KE5v
bmUpCiAgICAgewogICAgIH0KIAogICAgIEZvY3VzQ2FuZGlkYXRlKE5vZGUqIG4pCiAgICAgICAg
IDogbm9kZShuKQorICAgICAgICAsIGVuY2xvc2luZ1Njcm9sbGFibGVCb3goMCkKICAgICAgICAg
LCBkaXN0YW5jZShtYXhEaXN0YW5jZSgpKQogICAgICAgICAsIHBhcmVudERpc3RhbmNlKG1heERp
c3RhbmNlKCkpCiAgICAgICAgICwgYWxpZ25tZW50KE5vbmUpCiAgICAgICAgICwgcGFyZW50QWxp
Z25tZW50KE5vbmUpCiAgICAgewogICAgIH0KIAogICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyBy
ZXR1cm4gIW5vZGU7IH0KKyAgICBib29sIGlzSW5TY3JvbGxhYmxlQ29udGFpbmVyKCkgY29uc3Qg
eyByZXR1cm4gbm9kZSAmJiBlbmNsb3NpbmdTY3JvbGxhYmxlQm94OyB9CiAgICAgRG9jdW1lbnQq
IGRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbm9kZSA/IG5vZGUtPmRvY3VtZW50KCkgOiAwOyB9
CiAKICAgICBOb2RlKiBub2RlOworICAgIE5vZGUqIGVuY2xvc2luZ1Njcm9sbGFibGVCb3g7CiAg
ICAgbG9uZyBsb25nIGRpc3RhbmNlOwogICAgIGxvbmcgbG9uZyBwYXJlbnREaXN0YW5jZTsKICAg
ICBSZWN0c0FsaWdubWVudCBhbGlnbm1lbnQ7CiAgICAgUmVjdHNBbGlnbm1lbnQgcGFyZW50QWxp
Z25tZW50OwogfTsKIAogdm9pZCBkaXN0YW5jZURhdGFGb3JOb2RlKEZvY3VzRGlyZWN0aW9uIGRp
cmVjdGlvbiwgTm9kZSogc3RhcnQsIEZvY3VzQ2FuZGlkYXRlJiBjYW5kaWRhdGUpOwogYm9vbCBz
Y3JvbGxJbkRpcmVjdGlvbihGcmFtZSosIEZvY3VzRGlyZWN0aW9uKTsKIHZvaWQgc2Nyb2xsSW50
b1ZpZXcoRWxlbWVudCopOwogYm9vbCBoYXNPZmZzY3JlZW5SZWN0KE5vZGUqKTsKIGJvb2wgaXNJ
blJvb3REb2N1bWVudChOb2RlKik7Citib29sIGlzU2Nyb2xsYWJsZUNvbnRhaW5lck5vZGUoTm9k
ZSopOwogCiB9IC8vIG5hbXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFNwYXRpYWxOYXZpZ2F0
aW9uX2gKLS0gCjEuNi4zLjMKCg==
</data>
<flag name="review"
          id="40403"
          type_id="1"
          status="-"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56402</attachid>
            <date>2010-05-18 12:52:14 -0700</date>
            <delta_ts>2010-05-19 06:44:03 -0700</delta_ts>
            <desc>patch v5</desc>
            <filename>0001-Spatial-Navigation-make-it-work-with-focusable-eleme.patch</filename>
            <type>text/plain</type>
            <size>28298</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSAwNGFjMzM5Nzg1OTdlYTU0ZjMwMjRmMzY1ZmQzNTVlYTFiYzg0ZjNjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4K
RGF0ZTogTW9uLCAxNyBNYXkgMjAxMCAxMTozNzowNyAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIFNw
YXRpYWwgTmF2aWdhdGlvbjogbWFrZSBpdCB3b3JrIHdpdGggZm9jdXNhYmxlIGVsZW1lbnRzIGlu
IG92ZXJmbG93IGNvbnRlbnQKIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zNjQ2MwoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuClBhdGNoIGJ1IEFudG9uaW8gR29t
ZXMgPHRvbmlraXRvb0B3ZWJraXQub3JnPgoKV2ViQ29yZToKClBhdGNoIGFkZHJlc3NlcyB0aGUg
cHJvYmxlbSB0aGF0IFNwYXRpYWwgTmF2aWdhdGlvbiBjdXJyZW50bHkgZG9lcyBub3QgcHJvcGVy
bHkKdHJhdmVyc2Ugc2Nyb2xsYWJsZSBjb250ZW50cywgaW5jbHVkaW5nIHNjcm9sbGFibGUgZGl2
J3MuIEZvciB0aGF0IHRvIHdvcmssIGEgbmV3CmNsYXNzIG1lbWJlciBjYWxsZWQgc2Nyb2xsYWJs
ZUVuY2xvc2luZ0JveCB3YXMgaW50cm9kdWNlZCB0byBGb2N1c0NhbmRpZGF0ZSBjbGFzcwp0byBr
ZWVwIHRoZSB0cmFjayBvZiBjdXJyZW50IHNjcm9sbGFibGUgYm94IE5vZGUgd3JhcHBpbmcgYSBG
b2N1c0NhbmRpZGF0ZS4gVG8gbWFrZQp1c2Ugb2YgZW5jbG9zaW5nU2Nyb2xsYWJsZUJveCBvZiBG
b2N1c0NhbmRpZGF0ZSwgdGhlIERPTSB0cmF2ZXJzYWwgYWxnb3JpdGhtIHJvdXRpbmUKKEZvY3Vz
Q29udHJvbGxlcjo6ZmluZE5leHRGb2N1c2FibGVJbkRpcmVjdGlvbikgd2FzIGNoYW5nZWQgYXMg
Zm9sbG93czogQXQgdGhlCnRpbWUgaXQgZW5jb3VudGVycyBhIHNjcm9sbGFibGUgTm9kZSwgZWFj
aCBmb2N1c2FibGUgbm9kZSB0aGF0IGlzIGlubmVyIG9mIGl0IGtlZXBzCnRyYWNrIG9mIHRoZSBj
b250YWluZXIgcmVmZXJlbmNlLiBCeSB0aGUgdGltZSBhIHNpYmxpbmcgb2YgdGhlIHNjcm9sbGFi
bGUgTm9kZSBpbiBjYXNlCmlzIGVuY291bnRlcmVkLCB0aGVyZSBpcyBub3QgbmVlZCB0byB0cmFj
ayB0aGlzIHJlZmVyZW5jZSBhbnkgbW9yZSwgYW5kIHRoZSB0cmF2ZXJzYWwKYWxnb3JpdGhtIGNv
bnRpbnVlcyBub3JtYWxseS4KClRoZSBjb21tb24gY2FzZSBpcyBvYnZpb3VzbHkgdGhhdCB0aGVy
ZSBpcyBubyBzY3JvbGxhYmxlIGNvbnRhaW5lciB3cmFwcGluZyBpdC4KCnVwZGF0ZUZvY3VzQ2Fu
ZGlkaXRlSWZDbG9zZXIgbG9naWMgd2FzIGFsc28gYWRhcHRlZCB0byBmaXQgdGhlIG5lZWQgb2Yg
dGhlCm5ld2x5IGludHJvZHVjZWQgZW5jbG9zaW5nU2Nyb2xsYWJsZUJveCBjbGFzcyBtZW1iZXIs
IGdldHRpbmcgc2ltcGxlciBhbmQgbW9yZQplYXNpbHkgbWFpbnRhaW5hYmxlLgoKVGVzdHM6IGZh
c3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWRpdi1zY3JvbGxhYmxlLWJ1dC13aXRo
b3V0LWZvY3VzYWJsZS1jb250ZW50Lmh0bWwKICAgICAgIGZhc3QvZXZlbnRzL3NwYXRpYWwtbmF2
aWdhdGlvbi9zbmF2LWNsaXBwZWQtb3ZlcmZsb3ctY29udGVudC5odG1sCgoqIHBhZ2UvRm9jdXND
b250cm9sbGVyLmNwcDoKKFdlYkNvcmU6OnVwZGF0ZUZvY3VzQ2FuZGlkYXRlSW5UaGVTYW1lQ29u
dGFpbmVyKToKKFdlYkNvcmU6OnVwZGF0ZUZvY3VzQ2FuZGlkYXRlSWZDbG9zZXIpOgooV2ViQ29y
ZTo6Rm9jdXNDb250cm9sbGVyOjpmaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKToKKFdlYkNv
cmU6OkZvY3VzQ29udHJvbGxlcjo6ZGVlcEZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24pOgoq
IHBhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwOgooV2ViQ29yZTo6aXNTY3JvbGxhYmxlQ29udGFp
bmVyTm9kZSk6CiogcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5oOgooV2ViQ29yZTo6Rm9jdXNDYW5k
aWRhdGU6OkZvY3VzQ2FuZGlkYXRlKToKKFdlYkNvcmU6OkZvY3VzQ2FuZGlkYXRlOjppc0luU2Ny
b2xsYWJsZUNvbnRhaW5lcik6CgpMYXlvdXRUZXN0czoKCiogZmFzdC9ldmVudHMvc3BhdGlhbC1u
YXZpZ2F0aW9uL3NuYXYtZGl2LXNjcm9sbGFibGUtYnV0LXdpdGhvdXQtZm9jdXNhYmxlLWNvbnRl
bnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKiBmYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24v
c25hdi1kaXYtc2Nyb2xsYWJsZS1idXQtd2l0aG91dC1mb2N1c2FibGUtY29udGVudC5odG1sOiBB
ZGRlZC4KKiBmYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1jbGlwcGVkLW92ZXJm
bG93LWNvbnRlbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKiBmYXN0L2V2ZW50cy9zcGF0aWFsLW5h
dmlnYXRpb24vc25hdi1jbGlwcGVkLW92ZXJmbG93LWNvbnRlbnQuaHRtbDogQWRkZWQuCi0tLQog
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEy
ICsrCiAuLi4vc25hdi1jbGlwcGVkLW92ZXJmbG93ZWQtY29udGVudC1leHBlY3RlZC50eHQgICB8
ICAgMjQgKysrCiAuLi4vc25hdi1jbGlwcGVkLW92ZXJmbG93ZWQtY29udGVudC5odG1sICAgICAg
ICAgICB8ICAgODUgKysrKysrKysrKysKIC4uLmFibGUtYnV0LXdpdGhvdXQtZm9jdXNhYmxlLWNv
bnRlbnQtZXhwZWN0ZWQudHh0IHwgICAzNSArKysrKwogLi4udi1zY3JvbGxhYmxlLWJ1dC13aXRo
b3V0LWZvY3VzYWJsZS1jb250ZW50Lmh0bWwgfCAgIDgwICsrKysrKysrKysKIFdlYkNvcmUvQ2hh
bmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzOCArKysrKwogV2Vi
Q29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAgICAgICAgICAgICAgICAgICAgfCAgMTU2ICsr
KysrKysrKysrKysrLS0tLS0tCiBXZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwICAg
ICAgICAgICAgICAgICB8ICAgMTIgKysKIFdlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5o
ICAgICAgICAgICAgICAgICAgIHwgICAgNSArCiA5IGZpbGVzIGNoYW5nZWQsIDQwMSBpbnNlcnRp
b25zKCspLCA0NiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1jbGlwcGVkLW92ZXJmbG93ZWQtY29u
dGVudC1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1jbGlwcGVkLW92ZXJmbG93ZWQtY29udGVudC5o
dG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3BhdGlhbC1u
YXZpZ2F0aW9uL3NuYXYtZGl2LXNjcm9sbGFibGUtYnV0LXdpdGhvdXQtZm9jdXNhYmxlLWNvbnRl
bnQtZXhwZWN0ZWQudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtZGl2LXNjcm9sbGFibGUtYnV0LXdpdGhvdXQtZm9j
dXNhYmxlLWNvbnRlbnQuaHRtbAoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyZjgwNzQ5Li44ODM3YWQ3IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDggKzEsMjAgQEAKKzIwMTAtMDUtMTQgIEFudG9uaW8gR29tZXMgIDx0b25pa2l0b29Ad2Via2l0
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBT
cGF0aWFsIE5hdmlnYXRpb246IG1ha2UgaXQgd29yayB3aXRoIGZvY3VzYWJsZSBlbGVtZW50cyBp
biBvdmVyZmxvdyBjb250ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zNjQ2MworCisgICAgICAgICogZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0
aW9uL3NuYXYtZGl2LXNjcm9sbGFibGUtYnV0LXdpdGhvdXQtZm9jdXNhYmxlLWNvbnRlbnQtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRp
b24vc25hdi1kaXYtc2Nyb2xsYWJsZS1idXQtd2l0aG91dC1mb2N1c2FibGUtY29udGVudC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1j
bGlwcGVkLW92ZXJmbG93LWNvbnRlbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1jbGlwcGVkLW92ZXJmbG93LWNvbnRl
bnQuaHRtbDogQWRkZWQuCisKIDIwMTAtMDUtMTggIEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEJ1aWxkIGZpeC4gRGlzYWJsZSB0ZXN0IGNhc2Vz
IGluIGZpbGUtcmVhZGVyLmh0bWwgdGhhdAogICAgICAgICBjYXVzZSB0aW1lLW91dCBpbiBtYWMg
Ym90IGZvciBmdXJ0aGVyIGludmVzdGlnYXRpb24uCiAKICAgICAgICAgKiBmYXN0L2ZpbGVzL2Zp
bGUtcmVhZGVyLWV4cGVjdGVkLnR4dDoKICAgICAgICAgKiBmYXN0L2ZpbGVzL2ZpbGUtcmVhZGVy
Lmh0bWw6CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NwYXRpYWwtbmF2
aWdhdGlvbi9zbmF2LWNsaXBwZWQtb3ZlcmZsb3dlZC1jb250ZW50LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWNsaXBwZWQtb3Zl
cmZsb3dlZC1jb250ZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5iMjhiMDllCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtY2xpcHBlZC1vdmVyZmxvd2VkLWNvbnRlbnQtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjQgQEAKK1RoYXQgaXMgaXMgYSBub3JtYWwgbGlua18xLgor
CitUaGlzIGlzIGEgc2Nyb2xsYWJsZSBEaXYgY3JlYXRlZCB3aXRoIHRoZSBDU1MgcHJvcGVydHkg
b3ZlcmZsb3cuCisKK0l0IGhhcyBhIHZpc2libGUgbGlua18yLgorCisKKworCisKKworCisuLi4g
YW5kIGFuIG92ZXJmbG93ZWQgbGluayBsaWtlIGxpbmtfMy4KKworQW5kIHRoaXMgaXMgYW5vdGhl
ciBub3JtYWwgbGlua180LgorCitQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuZ2V0QXR0cmli
dXRlKCJpZCIpIGlzICIxIgorUEFTUyBkb2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJpYnV0
ZSgiaWQiKSBpcyAiMSIKK1BBU1MgZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUo
ImlkIikgaXMgIjIiCitQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCJp
ZCIpIGlzICIzIgorUEFTUyBkb2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgiaWQi
KSBpcyAiMiIKK1BBU1MgZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoImlkIikg
aXMgIjEiCitQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCJpZCIpIGlz
ICJzdGFydCIKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3BhdGlhbC1u
YXZpZ2F0aW9uL3NuYXYtY2xpcHBlZC1vdmVyZmxvd2VkLWNvbnRlbnQuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWNsaXBwZWQtb3ZlcmZsb3dl
ZC1jb250ZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzEyZjFk
NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NwYXRpYWwtbmF2
aWdhdGlvbi9zbmF2LWNsaXBwZWQtb3ZlcmZsb3dlZC1jb250ZW50Lmh0bWwKQEAgLTAsMCArMSw4
NSBAQAorPGh0bWw+CisgIDwhLS0KKyAgICBUaGlzIHRlc3QgZW5zdXJlcyB0aGUgY29udGVudCBv
dmVyZmxvdyB0cmF2ZXJzYWwgY29ycmVjdG5lc3Mgb2YgU3BhdGlhbCBOYXZpZ2F0aW9uCisgICAg
YWxnb3JpdGhtOiBmb2N1c2FibGUgZWxlbWVudHMgaW4gYW4gc2Nyb2xsYWJsZSBjb250YWluZXJz
IChlLmcuIDxkaXY+KSBzaG91bGQgYmUKKyAgICBhY2Nlc3NpYmxlLCBpbmNsdWRpbmcgb2Zmc2Ny
ZWVuIGNvbnRlbnQuCisKKyAgICAqIFByZS1jb25kaXRpb25zOgorICAgIDEpIERSVCBzdXBwb3J0
IGZvciBTTmF2IGVuYWJsZS9kaXNhYmxlLgorCisgICAgKiBOYXZpZ2F0aW9uIHN0ZXBzOgorICAg
IDEpIExvYWRzIHRoaXMgcGFnZSwgZm9jdXMgZ29lcyB0byAic3RhcnQiIGF1dG9tYXRpY2FsbHku
CisgICAgMikgTW92ZSBmb2N1cyBkb3duIHRvIHRoZSB2aXNpYmxlIGZvY3VzYWJsZSBlbGVtZW50
IGluCisgICAgICAgc2Nyb2xsYWJsZSBkaXYuCisgICAgMykgVHJhdmVyc2UgdGhlIHBhZ2UgdGhy
b3VnaCBvdGhlciBmb2N1c2FibGUgZWxlbWVudHMgZG93biB0aGUgcGFnZS4KKyAgICAgICBhbmQg
dGhlbiBiYWNrIHVwLgorCisgICAgKiBFeHBlY3RlZCByZXN1bHRzOiBBbGwgZm9jdXNhYmxlIGVs
ZW1lbnQgaW4gc2Nyb2xsYWJsZSBjb250ZW50LCBpbmNsdWRpbmcKKyAgICBvZmZzY3JlZW4gb25l
cywgc2hvdWxkIGJlIGFjY2Vzc2libGUgdmlhIFNOYXYuIC0tPgorICA8aGVhZD4KKyAgICA8c3R5
bGUgdHlwZT0idGV4dC9jc3MiPgorICAgICAgZGl2LnNjcm9sbCB7CisgICAgICAgIGhlaWdodDog
MjAwcHg7CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgb3ZlcmZsb3c6IGF1dG87Cisg
ICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICM2NjY7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6
ICNjY2M7CisgICAgICAgIHBhZGRpbmc6IDhweDsKKyAgICAgIH0KKyAgICA8L3N0eWxlPgorCisg
ICAgPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9zcGF0aWFsLW5hdmlnYXRpb24tdXRpbHMu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCI+
CisKKyAgICB2YXIgcmVzdWx0TWFwID0gWworICAgICAgWyJEb3duIiwgIjEiXSwKKyAgICAgIFsi
RG93biIsICIxIl0sCisgICAgICBbIkRvd24iLCAiMiJdLAorICAgICAgWyJEb3duIiwgIjMiXSwK
KyAgICAgIFsiVXAiLCAiMiJdLAorICAgICAgWyJVcCIsICIxIl0sCisgICAgICBbIlVwIiwgInN0
YXJ0Il0sCisgICAgICBbIkRPTkUiLCAiRE9ORSJdCisgICAgXTsKKworICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKyAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFNwYXRpYWxOYXZpZ2F0aW9u
RW5hYmxlZCh0cnVlKTsKKyAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVy
ZW5jZSgiV2ViS2l0VGFiVG9MaW5rc1ByZWZlcmVuY2VLZXkiLCAxKTsKKyAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBydW5U
ZXN0KCkKKyAgICB7CisgICAgICAvLyBzdGFydGluZyB0aGUgdGVzdCBpdHNlbGY6IGdldCB0byBh
IGtub3duIHBsYWNlLgorICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0YXJ0IikuZm9j
dXMoKTsKKworICAgICAgaW5pdFRlc3QocmVzdWx0TWFwLCB0ZXN0Q29tcGxldGVkKTsKKyAgICB9
CisKKyAgICBmdW5jdGlvbiB0ZXN0Q29tcGxldGVkKCkKKyAgICB7CisgICAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3Rp
ZnlEb25lKCk7CisgICAgfQorCisgICAgd2luZG93Lm9ubG9hZCA9IHJ1blRlc3Q7CisKKyAgICA8
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+CisgIDwvaGVhZD4KKworICA8Ym9keSBpZD0ic29tZS1jb250ZW50IiB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+CisgICAgPHA+VGhhdCBpcyBpcyBhIG5v
cm1hbCA8YSBpZD0ic3RhcnQiIGhyZWY9ImEiPmxpbmtfMTwvYT4uPC9wPgorICAgIDxkaXYgY2xh
c3M9InNjcm9sbCI+CisgICAgICA8cD5UaGlzIGlzIGEgc2Nyb2xsYWJsZSBEaXYgY3JlYXRlZCB3
aXRoIHRoZSBDU1MgcHJvcGVydHkgb3ZlcmZsb3cuPC9wPgorICAgICAgPHA+SXQgaGFzIGEgdmlz
aWJsZSA8YSBpZD0iMSIgaHJlZj0iYSI+bGlua18yPC9hPi48L3A+CisgICAgICA8YnI+PGJyPjxi
cj48YnI+PGJyPjxicj4KKyAgICAgIDxwPi4uLiBhbmQgYW4gb3ZlcmZsb3dlZCBsaW5rIGxpa2Ug
PGEgaWQ9IjIiIGhyZWY9ImEiPmxpbmtfMzwvYT4uPC9wPgorICAgIDwvZGl2PgorICAgIDxwPkFu
ZCB0aGlzIGlzIGFub3RoZXIgbm9ybWFsIDxhIGlkPSIzIiBocmVmPSJhIj5saW5rXzQ8L2E+Ljwv
cD4KKyAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgPC9ib2R5PgorPC9odG1sPgorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25h
di1kaXYtc2Nyb2xsYWJsZS1idXQtd2l0aG91dC1mb2N1c2FibGUtY29udGVudC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1kaXYt
c2Nyb2xsYWJsZS1idXQtd2l0aG91dC1mb2N1c2FibGUtY29udGVudC1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzUxYjk0MwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWRpdi1z
Y3JvbGxhYmxlLWJ1dC13aXRob3V0LWZvY3VzYWJsZS1jb250ZW50LWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDM1IEBACithCitUaGlzIGlzIGEgc2Nyb2xsYWJsZSBEaXYgY3JlYXRlZCB3aXRoIHRo
ZSBDU1MgcHJvcGVydHkgb3ZlcmZsb3cuCisKK0l0IGhhcyBubyBrZXlib2FyZCBmb2N1c2FibGUg
ZWxlbWVudHMgLi4uLgorCisKKworCisKKworCisKKworCisKKworCisuLi4gYW5kIHNjcm9sbGJh
cnMhCisKK1RoaXMgaXMgYW5vdGhlciBzY3JvbGxhYmxlIGRpdiBjcmVhdGVkIHdpdGggdGhlIENT
UyBwcm9wZXJ0eSBvdmVyZmxvdy4KKworSXQgaGFzIGFsc28gbm8ga2V5Ym9hcmQgZm9jdXNhYmxl
IGVsZW1lbnRzIC4uLi4KKworCisKKworCisKKworLi4uIGFzIHdlbGwgYXMgc2Nyb2xsYmFycyEK
KworZQorUEFTUyBkb2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAi
ZW5kIgorUEFTUyBkb2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAi
c3RhcnQiCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NwYXRpYWwtbmF2
aWdhdGlvbi9zbmF2LWRpdi1zY3JvbGxhYmxlLWJ1dC13aXRob3V0LWZvY3VzYWJsZS1jb250ZW50
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1k
aXYtc2Nyb2xsYWJsZS1idXQtd2l0aG91dC1mb2N1c2FibGUtY29udGVudC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4ZmFlM2MKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1kaXYtc2Nyb2xs
YWJsZS1idXQtd2l0aG91dC1mb2N1c2FibGUtY29udGVudC5odG1sCkBAIC0wLDAgKzEsODAgQEAK
KzxodG1sPgorICA8IS0tCisgICAgVGhpcyB0ZXN0IGVuc3VyZXMgdGhlIGJhc2ljIHRyYXZlcnNh
bCBjb3JyZWN0bmVzcyBvZiBTcGF0aWFsIE5hdmlnYXRpb24KKyAgICBhbGdvcml0aG06IHNjcm9s
bGFibGUgZGl2cyB3aXRob3V0IGFueSBmb2N1c2FibGUgY29udGVudCBzaG91bGQgYmUgaWdub3Jl
ZC4KKworICAgICogUHJlLWNvbmRpdGlvbnM6CisgICAgMSkgRFJUIHN1cHBvcnQgZm9yIFNOYXYg
ZW5hYmxlL2Rpc2FibGUuCisKKyAgICAqIE5hdmlnYXRpb24gc3RlcHM6CisgICAgMSkgTG9hZHMg
dGhpcyBwYWdlLCBmb2N1cyBnb2VzIHRvICJzdGFydCIgYXV0b21hdGljYWxseS4KKyAgICAyKSBG
b2N1cyBtb3ZlcyBmcm9tICJzdGFydCIgdG8gImVuZCIgYnlwYXNzaW5nIHRoZSB0d28gZGl2J3MK
KyAgICAgICBpbiBiZXR3ZWVuIHRoZW0sIG9uY2UgYm90aCBoYXZlIG5vIGZvY3VzYWJsZSBlbGVt
ZW50cyBpbnNpZGUuCisgIC0tPgorICA8aGVhZD4KKyAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3Mi
PgorICAgICAgZGl2LnNjcm9sbCB7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgICAgIHdp
ZHRoOiAzMDBweDsKKyAgICAgICAgb3ZlcmZsb3c6IGF1dG87CisgICAgICAgIGJvcmRlcjogMXB4
IHNvbGlkICM2NjY7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNjY2M7CisgICAgICAgIHBh
ZGRpbmc6IDhweDsKKyAgICAgIH0KKyAgICA8L3N0eWxlPgorCisgICAgPHNjcmlwdCBzcmM9Ii4u
Ly4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBz
cmM9InJlc291cmNlcy9zcGF0aWFsLW5hdmlnYXRpb24tdXRpbHMuanMiPjwvc2NyaXB0PgorICAg
IDxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCI+CisKKyAgICB2YXIgcmVzdWx0
TWFwID0gWworICAgICAgWyJEb3duIiwgImVuZCJdLAorICAgICAgWyJVcCIgICwgInN0YXJ0Il0s
CisgICAgICBbIkRPTkUiLCAiRE9ORSJdCisgICAgXTsKKworICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKyAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxl
ZCh0cnVlKTsKKyAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgi
V2ViS2l0VGFiVG9MaW5rc1ByZWZlcmVuY2VLZXkiLCAxKTsKKyAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBydW5UZXN0KCkK
KyAgICB7CisgICAgICAvLyBzdGFydGluZyB0aGUgdGVzdCBpdHNlbGY6IGdldCB0byBhIGtub3du
IHBsYWNlLgorICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0YXJ0IikuZm9jdXMoKTsK
KworICAgICAgaW5pdFRlc3QocmVzdWx0TWFwLCB0ZXN0Q29tcGxldGVkKTsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiB0ZXN0Q29tcGxldGVkKCkKKyAgICB7CisgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7CisgICAgfQorCisgICAgd2luZG93Lm9ubG9hZCA9IHJ1blRlc3Q7CisgICAgPC9zY3JpcHQ+
CisgICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorICA8L2hlYWQ+CisgIDxib2R5IGlkPSJzb21lLWNvbnRlbnQiIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKyAgICA8ZGl2PjxhIGlkPSJzdGFydCIgaHJlZj0iYSI+
YTwvYT48L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJzY3JvbGwiPgorICAgICAgPHA+VGhpcyBpcyBh
IHNjcm9sbGFibGUgRGl2IGNyZWF0ZWQgd2l0aCB0aGUgQ1NTIHByb3BlcnR5IG92ZXJmbG93Ljwv
cD4KKyAgICAgIDxwPkl0IGhhcyBubyBrZXlib2FyZCBmb2N1c2FibGUgZWxlbWVudHMgLi4uLjwv
cD4KKyAgICAgIDxicj48YnI+PGJyPjxicj48YnI+PGJyPgorICAgICAgPGJyPjxicj48YnI+PGJy
Pjxicj48YnI+CisgICAgICA8cD4uLi4gYW5kIHNjcm9sbGJhcnMhPC9wPgorICAgIDwvZGl2Pgor
CisgICAgPGRpdiBjbGFzcz0ic2Nyb2xsIj4KKyAgICAgIDxwPlRoaXMgaXMgYW5vdGhlciBzY3Jv
bGxhYmxlIGRpdiBjcmVhdGVkIHdpdGggdGhlIENTUyBwcm9wZXJ0eSBvdmVyZmxvdy48L3A+Cisg
ICAgICA8cD5JdCBoYXMgYWxzbyBubyBrZXlib2FyZCBmb2N1c2FibGUgZWxlbWVudHMgLi4uLjwv
cD4KKyAgICAgIDxicj48YnI+PGJyPjxicj48YnI+PGJyPgorICAgICAgPHA+Li4uIGFzIHdlbGwg
YXMgc2Nyb2xsYmFycyE8L3A+CisgICAgPC9kaXY+CisgICAgPGRpdj48YSBpZD0iZW5kIiBocmVm
PSJhIj5lPC9hPjwvZGl2PgorICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICA8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDg0ZDQ5ZWMuLjM1MTExZGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDggKzEsNDYgQEAKKzIwMTAtMDUtMTQgIEFu
dG9uaW8gR29tZXMgIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTcGF0aWFsIE5hdmlnYXRpb246IG1ha2UgaXQg
d29yayB3aXRoIGZvY3VzYWJsZSBlbGVtZW50cyBpbiBvdmVyZmxvdyBjb250ZW50CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjQ2MworCisgICAgICAg
IFBhdGNoIGFkZHJlc3NlcyB0aGUgcHJvYmxlbSB0aGF0IFNwYXRpYWwgTmF2aWdhdGlvbiBjdXJy
ZW50bHkgZG9lcyBub3QgcHJvcGVybHkKKyAgICAgICAgdHJhdmVyc2Ugc2Nyb2xsYWJsZSBjb250
ZW50cywgaW5jbHVkaW5nIHNjcm9sbGFibGUgZGl2J3MuIEZvciB0aGF0IHRvIHdvcmssIGEgbmV3
CisgICAgICAgIGNsYXNzIG1lbWJlciBjYWxsZWQgc2Nyb2xsYWJsZUVuY2xvc2luZ0JveCB3YXMg
aW50cm9kdWNlZCB0byBGb2N1c0NhbmRpZGF0ZSBjbGFzcworICAgICAgICB0byBrZWVwIHRoZSB0
cmFjayBvZiBjdXJyZW50IHNjcm9sbGFibGUgYm94IE5vZGUgd3JhcHBpbmcgYSBGb2N1c0NhbmRp
ZGF0ZS4gVG8gbWFrZQorICAgICAgICB1c2Ugb2YgZW5jbG9zaW5nU2Nyb2xsYWJsZUJveCBvZiBG
b2N1c0NhbmRpZGF0ZSwgdGhlIERPTSB0cmF2ZXJzYWwgYWxnb3JpdGhtIHJvdXRpbmUKKyAgICAg
ICAgKEZvY3VzQ29udHJvbGxlcjo6ZmluZE5leHRGb2N1c2FibGVJbkRpcmVjdGlvbikgd2FzIGNo
YW5nZWQgYXMgZm9sbG93czogQXQgdGhlCisgICAgICAgIHRpbWUgaXQgZW5jb3VudGVycyBhIHNj
cm9sbGFibGUgTm9kZSwgZWFjaCBmb2N1c2FibGUgbm9kZSB0aGF0IGlzIGlubmVyIG9mIGl0IGtl
ZXBzCisgICAgICAgIHRyYWNrIG9mIHRoZSBjb250YWluZXIgcmVmZXJlbmNlLiBCeSB0aGUgdGlt
ZSBhIHNpYmxpbmcgb2YgdGhlIHNjcm9sbGFibGUgTm9kZSBpbiBjYXNlCisgICAgICAgIGlzIGVu
Y291bnRlcmVkLCB0aGVyZSBpcyBub3QgbmVlZCB0byB0cmFjayB0aGlzIHJlZmVyZW5jZSBhbnkg
bW9yZSwgYW5kIHRoZSB0cmF2ZXJzYWwKKyAgICAgICAgYWxnb3JpdGhtIGNvbnRpbnVlcyBub3Jt
YWxseS4KKworICAgICAgICBUaGUgY29tbW9uIGNhc2UgaXMgb2J2aW91c2x5IHRoYXQgdGhlcmUg
aXMgbm8gc2Nyb2xsYWJsZSBjb250YWluZXIgd3JhcHBpbmcgaXQuCisKKyAgICAgICAgdXBkYXRl
Rm9jdXNDYW5kaWRpdGVJZkNsb3NlciBsb2dpYyB3YXMgYWxzbyBhZGFwdGVkIHRvIGZpdCB0aGUg
bmVlZCBvZiB0aGUKKyAgICAgICAgbmV3bHkgaW50cm9kdWNlZCBlbmNsb3NpbmdTY3JvbGxhYmxl
Qm94IGNsYXNzIG1lbWJlciwgZ2V0dGluZyBzaW1wbGVyIGFuZCBtb3JlCisgICAgICAgIGVhc2ls
eSBtYWludGFpbmFibGUuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZXZlbnRzL3NwYXRpYWwtbmF2
aWdhdGlvbi9zbmF2LWRpdi1zY3JvbGxhYmxlLWJ1dC13aXRob3V0LWZvY3VzYWJsZS1jb250ZW50
Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2
LWNsaXBwZWQtb3ZlcmZsb3ctY29udGVudC5odG1sCisKKyAgICAgICAgKiBwYWdlL0ZvY3VzQ29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVGb2N1c0NhbmRpZGF0ZUluVGhl
U2FtZUNvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVGb2N1c0NhbmRpZGF0ZUlm
Q2xvc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6ZmluZEZvY3VzYWJs
ZU5vZGVJbkRpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OmRl
ZXBGaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKToKKyAgICAgICAgKiBwYWdlL1NwYXRpYWxO
YXZpZ2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzU2Nyb2xsYWJsZUNvbnRhaW5lck5v
ZGUpOgorICAgICAgICAqIHBhZ2UvU3BhdGlhbE5hdmlnYXRpb24uaDoKKyAgICAgICAgKFdlYkNv
cmU6OkZvY3VzQ2FuZGlkYXRlOjpGb2N1c0NhbmRpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpG
b2N1c0NhbmRpZGF0ZTo6aXNJblNjcm9sbGFibGVDb250YWluZXIpOgorCiAyMDEwLTA1LTE4ICBD
aHJpcyBKZXJkb25layAgPGNqZXJkb25la0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLgogCiAgICAgICAgIFJlZmFjdG9yZWQgRnJhbWVMb2FkZXI6OmlzRG9j
dW1lbnRTYW5kYm94ZWQoKSBmcm9tIGEgcHJpdmF0ZSBtZW1iZXIgZnVuY3Rpb24KICAgICAgICAg
dG8gYSBzdGF0aWMsIG5vbi1tZW1iZXIsIG5vbi1mcmllbmQgZnVuY3Rpb24uCiAKICAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5MTU3CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUvcGFnZS9Gb2N1c0Nv
bnRyb2xsZXIuY3BwCmluZGV4IDA4MjE5YTYuLmY5NTQ2MzggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xs
ZXIuY3BwCkBAIC0zMzcsMTEzICszMzcsMTcyIEBAIGJvb2wgRm9jdXNDb250cm9sbGVyOjphZHZh
bmNlRm9jdXNEaXJlY3Rpb25hbGx5KEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgS2V5Ym9hCiAg
ICAgRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKTsKICAgICBB
U1NFUlQoZWxlbWVudCk7CiAKICAgICBzY3JvbGxJbnRvVmlldyhlbGVtZW50KTsKICAgICBlbGVt
ZW50LT5mb2N1cyhmYWxzZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLS8vIEZJWE1FOiBNYWtl
IHRoaXMgbWV0aG9kIG1vcmUgbW9kdWxhciwgYW5kIHNpbXBsZXIgdG8gdW5kZXJzdGFuZCBhbmQg
bWFpbnRhaW4uCi1zdGF0aWMgdm9pZCB1cGRhdGVGb2N1c0NhbmRpZGF0ZUlmQ2xvc2VyKE5vZGUq
IGZvY3VzZWROb2RlLCBjb25zdCBGb2N1c0NhbmRpZGF0ZSYgY2FuZGlkYXRlLCBGb2N1c0NhbmRp
ZGF0ZSYgY2xvc2VzdCkKK3N0YXRpYyB2b2lkIHVwZGF0ZUZvY3VzQ2FuZGlkYXRlSW5UaGVTYW1l
Q29udGFpbmVyKGNvbnN0IEZvY3VzQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIEZvY3VzQ2FuZGlkYXRl
JiBjbG9zZXN0KQogewotICAgIGJvb2wgc2FtZURvY3VtZW50ID0gY2FuZGlkYXRlLmRvY3VtZW50
KCkgPT0gY2xvc2VzdC5kb2N1bWVudCgpOwotICAgIGlmIChzYW1lRG9jdW1lbnQpIHsKLSAgICAg
ICAgaWYgKGNsb3Nlc3QuYWxpZ25tZW50ID4gY2FuZGlkYXRlLmFsaWdubWVudAotICAgICAgICAg
fHwgKGNsb3Nlc3QucGFyZW50QWxpZ25tZW50ICYmIGNhbmRpZGF0ZS5hbGlnbm1lbnQgPiBjbG9z
ZXN0LnBhcmVudEFsaWdubWVudCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfSBlbHNlIGlm
IChjbG9zZXN0LmFsaWdubWVudCA+IGNhbmRpZGF0ZS5hbGlnbm1lbnQKLSAgICAgICAgICAgICYm
IChjbG9zZXN0LnBhcmVudEFsaWdubWVudCAmJiBjYW5kaWRhdGUuYWxpZ25tZW50ID4gY2xvc2Vz
dC5wYXJlbnRBbGlnbm1lbnQpKQorICAgIGlmIChjbG9zZXN0LmlzTnVsbCgpKSB7CisgICAgICAg
IGNsb3Nlc3QgPSBjYW5kaWRhdGU7CiAgICAgICAgIHJldHVybjsKLQotICAgIGlmIChjYW5kaWRh
dGUuYWxpZ25tZW50ICE9IE5vbmUKLSAgICAgfHwgKGNsb3Nlc3QucGFyZW50QWxpZ25tZW50ID49
IGNhbmRpZGF0ZS5hbGlnbm1lbnQKLSAgICAgJiYgY2xvc2VzdC5kb2N1bWVudCgpID09IGNhbmRp
ZGF0ZS5kb2N1bWVudCgpKSkgewotCi0gICAgICAgIC8vIElmIHdlIGFyZSBub3cgaW4gYW4gaGln
aGVyIHByZWNlZGVudCBjYXNlLCBsZXRzIHJlc2V0IHRoZSBjdXJyZW50IGNsb3Nlc3QncwotICAg
ICAgICAvLyBkaXN0YW5jZSBzbyB3ZSBmb3JjZSBpdCB0byBiZSBiaWdnZXIgdGhhbiBhbnkgcmVz
dWx0IHdlIHdpbGwgZ2V0IGZyb20KLSAgICAgICAgLy8gc3BhdGlhbERpc3RhbmNlKCkuCi0gICAg
ICAgIGlmIChjbG9zZXN0LmFsaWdubWVudCA8IGNhbmRpZGF0ZS5hbGlnbm1lbnQKLSAgICAgICAg
ICYmIGNsb3Nlc3QucGFyZW50QWxpZ25tZW50IDwgY2FuZGlkYXRlLmFsaWdubWVudCkKLSAgICAg
ICAgICAgIGNsb3Nlc3QuZGlzdGFuY2UgPSBtYXhEaXN0YW5jZSgpOwogICAgIH0KIAotICAgIC8v
IEJhaWwgb3V0IGlmIGNhbmRpZGF0ZSdzIGRpc3RhbmNlIGlzIGxhcmdlciB0aGFuIHRoYXQgb2Yg
dGhlIGNsb3Nlc3QgY2FuZGlkYXRlLgotICAgIGlmIChjYW5kaWRhdGUuZGlzdGFuY2UgPj0gY2xv
c2VzdC5kaXN0YW5jZSkKKyAgICBpZiAoY2FuZGlkYXRlLmFsaWdubWVudCA9PSBjbG9zZXN0LmFs
aWdubWVudCkgeworICAgICAgICBpZiAoY2FuZGlkYXRlLmRpc3RhbmNlIDwgY2xvc2VzdC5kaXN0
YW5jZSkKKyAgICAgICAgICAgIGNsb3Nlc3QgPSBjYW5kaWRhdGU7CiAgICAgICAgIHJldHVybjsK
KyAgICB9CiAKLSAgICBpZiAoY2xvc2VzdC5pc051bGwoKSkgeworICAgIGlmIChjYW5kaWRhdGUu
YWxpZ25tZW50ID4gY2xvc2VzdC5hbGlnbm1lbnQpCiAgICAgICAgIGNsb3Nlc3QgPSBjYW5kaWRh
dGU7Cit9CisKK3N0YXRpYyB2b2lkIHVwZGF0ZUZvY3VzQ2FuZGlkYXRlSWZDbG9zZXIoTm9kZSog
Zm9jdXNlZE5vZGUsIGNvbnN0IEZvY3VzQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIEZvY3VzQ2FuZGlk
YXRlJiBjbG9zZXN0KQoreworICAgIC8vIEZpcnN0LCBjaGVjayB0aGUgY29tbW9uIGNhc2U6IG5l
aXRoZXIgY2FuZGlkYXRlIG5vciBjbG9zZXN0IGFyZQorICAgIC8vIGluc2lkZSBzY3JvbGxhYmxl
IGNvbnRlbnQsIHRoZW4gbm8gbmVlZCB0byBjYXJlIGFib3V0IGVuY2xvc2luZ1Njcm9sbGFibGVC
b3gKKyAgICAvLyBoZXVyaXN0aWNzIG9yIHBhcmVudHtEaXN0YW5jZSxBbGlnbm1lbnR9LCBidXQg
b25seSBkaXN0YW5jZSBhbmQgYWxpZ25tZW50LgorICAgIGlmICghY2FuZGlkYXRlLmlzSW5TY3Jv
bGxhYmxlQ29udGFpbmVyKCkgJiYgIWNsb3Nlc3QuaXNJblNjcm9sbGFibGVDb250YWluZXIoKSkg
eworICAgICAgICB1cGRhdGVGb2N1c0NhbmRpZGF0ZUluVGhlU2FtZUNvbnRhaW5lcihjYW5kaWRh
dGUsIGNsb3Nlc3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gSWYgdGhlIGZv
Y3VzZWQgbm9kZSBhbmQgdGhlIGNhbmRhZGF0ZSBhcmUgaW4gdGhlIHNhbWUgZG9jdW1lbnQgYW5k
IGN1cnJlbnQKLSAgICAvLyBjbG9zZXN0IGNhbmRpZGF0ZSBpcyBub3QgaW4gYW4ge2l9ZnJhbWUg
dGhhdCBpcyBwcmVmZXJhYmxlIHRvIGdldCBmb2N1c2VkIC4uLgotICAgIGlmIChmb2N1c2VkTm9k
ZS0+ZG9jdW1lbnQoKSA9PSBjYW5kaWRhdGUuZG9jdW1lbnQoKQotICAgICAgICAmJiBjYW5kaWRh
dGUuZGlzdGFuY2UgPCBjbG9zZXN0LnBhcmVudERpc3RhbmNlKQotICAgICAgICBjbG9zZXN0ID0g
Y2FuZGlkYXRlOwotICAgIGVsc2UgaWYgKGZvY3VzZWROb2RlLT5kb2N1bWVudCgpICE9IGNhbmRp
ZGF0ZS5kb2N1bWVudCgpKSB7Ci0gICAgICAgIC8vIElmIHRoZSBmb2N1c2VkTm9kZSBpcyBpbiBh
biBpbm5lciBkb2N1bWVudCBhbmQgY2FuZGlkYXRlIGlzIGluIGEKLSAgICAgICAgLy8gZGlmZmVy
ZW50IGRvY3VtZW50LCB3ZSBvbmx5IGNvbnNpZGVyIHRvIGNoYW5nZSBmb2N1cyBpZiB0aGVyZSBp
cyBub3QKLSAgICAgICAgLy8gYW5vdGhlciBhbHJlYWR5IGdvb2QgZm9jdXNhYmxlIGNhbmRpZGF0
ZSBpbiB0aGUgc2FtZSBkb2N1bWVudCBhcyBmb2N1c2VkTm9kZS4KLSAgICAgICAgaWYgKCEoKGlz
SW5Sb290RG9jdW1lbnQoY2FuZGlkYXRlLm5vZGUpICYmICFpc0luUm9vdERvY3VtZW50KGZvY3Vz
ZWROb2RlKSkKLSAgICAgICAgICAgICYmIGZvY3VzZWROb2RlLT5kb2N1bWVudCgpID09IGNsb3Nl
c3QuZG9jdW1lbnQoKSkpCisgICAgYm9vbCBzYW1lQ29udGFpbmVyOworICAgIGlmIChjYW5kaWRh
dGUuZG9jdW1lbnQoKSAhPSBjbG9zZXN0LmRvY3VtZW50KCkpCisgICAgICAgIHNhbWVDb250YWlu
ZXIgPSBmYWxzZTsKKyAgICBlbHNlCisgICAgICAgIHNhbWVDb250YWluZXIgPSBjYW5kaWRhdGUu
ZW5jbG9zaW5nU2Nyb2xsYWJsZUJveCA9PSBjbG9zZXN0LmVuY2xvc2luZ1Njcm9sbGFibGVCb3g7
CisKKyAgICAvLyBTZWNvbmQsIGlmIGNhbmRpZGF0ZSBhbmQgY2xvc2VzdCBhcmUgaW4gdGhlIHNh
bWUgImNvbnRhaW5lciIgKGkuZS4ge2l9ZnJhbWUgb3IgYW55CisgICAgLy8gc2Nyb2xsYWJsZSBi
bG9jayBlbGVtZW50KSwgd2UgY2FuIGhhbmRsZSB0aGVtIGFzIGNvbW1vbiBjYXNlLgorICAgIGlm
IChzYW1lQ29udGFpbmVyKSB7CisgICAgICAgIHVwZGF0ZUZvY3VzQ2FuZGlkYXRlSW5UaGVTYW1l
Q29udGFpbmVyKGNhbmRpZGF0ZSwgY2xvc2VzdCk7CisgICAgICAgIHJldHVybjsKKworICAgIC8v
IExhc3QsIHdlIGFyZSBjb25zaWRlcmluZyBtb3ZpbmcgdG8gYSBjYW5kaWRhdGUgbG9jYXRlZCBp
biBhIGRpZmZlcmVudCBlbmNsb3NpbmcKKyAgICAvLyBzY3JvbGxhYmxlIGJveCB0aGFuIGNsb3Nl
c3QuCisgICAgfSBlbHNlIHsKKyAgICAgICAgYm9vbCBpc0luSW5uZXJEb2N1bWVudCA9ICFpc0lu
Um9vdERvY3VtZW50KGZvY3VzZWROb2RlKTsKKworICAgICAgICBib29sIHNhbWVDb250YWluZXJB
c0NhbmRpZGF0ZSA9IGlzSW5Jbm5lckRvY3VtZW50ID8gZm9jdXNlZE5vZGUtPmRvY3VtZW50KCkg
PT0gY2FuZGlkYXRlLmRvY3VtZW50KCkgOgorICAgICAgICAgICAgZm9jdXNlZE5vZGUtPmlzRGVz
Y2VuZGFudE9mKGNhbmRpZGF0ZS5lbmNsb3NpbmdTY3JvbGxhYmxlQm94KTsKKworICAgICAgICBi
b29sIHNhbWVDb250YWluZXJBc0Nsb3Nlc3QgPSBpc0luSW5uZXJEb2N1bWVudCA/IGZvY3VzZWRO
b2RlLT5kb2N1bWVudCgpID09IGNsb3Nlc3QuZG9jdW1lbnQoKSA6CisgICAgICAgICAgICBmb2N1
c2VkTm9kZS0+aXNEZXNjZW5kYW50T2YoY2xvc2VzdC5lbmNsb3NpbmdTY3JvbGxhYmxlQm94KTsK
KworICAgICAgICAvLyBzYW1lQ29udGFpbmVyQXNDYW5kaWRhdGUgYW5kIHNhbWVDb250YWluZXJB
c0Nsb3Nlc3QgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4KKyAgICAgICAgQVNTRVJUKCEoc2FtZUNv
bnRhaW5lckFzQ2FuZGlkYXRlICYmIHNhbWVDb250YWluZXJBc0Nsb3Nlc3QpKTsKKworICAgICAg
ICBpZiAoc2FtZUNvbnRhaW5lckFzQ2FuZGlkYXRlKSB7CiAgICAgICAgICAgICBjbG9zZXN0ID0g
Y2FuZGlkYXRlOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KHNhbWVDb250YWluZXJBc0Nsb3Nlc3QpIHsKKyAgICAgICAgICAgIC8vIE5vdGhpbmcgdG8gYmUg
ZG9uZS4KKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vICMjIyAh
c2FtZUNvbnRhaW5lckFzQ2FuZGlkYXRlICYmICFzYW1lQ29udGFpbmVyQXNDbG9zZXN0CisgICAg
ICAgIC8vIElmIGRpc3RhbmNlIGlzIHNob3J0ZXIsIGFuZCB3ZSBhcmUgdGFsa2luZyBhYm91dCBz
Y3JvbGxhYmxlIGNvbnRhaW5lciwKKyAgICAgICAgLy8gbGV0cyBjb21wYXJlIHBhcmVudCBkaXN0
YW5jZSBhbmQgYWxpZ25tZW50IGJlZm9yZSBhbnl0aGluZy4KKyAgICAgICAgaWYgKGNhbmRpZGF0
ZS5kaXN0YW5jZSA8IGNsb3Nlc3QuZGlzdGFuY2UpIHsKKyAgICAgICAgICAgIGlmIChjYW5kaWRh
dGUuYWxpZ25tZW50ID49IGNsb3Nlc3QucGFyZW50QWxpZ25tZW50CisgICAgICAgICAgICAgfHwg
Y2FuZGlkYXRlLnBhcmVudEFsaWdubWVudCA9PSBjbG9zZXN0LnBhcmVudEFsaWdubWVudCkgewor
ICAgICAgICAgICAgICAgIGNsb3Nlc3QgPSBjYW5kaWRhdGU7CisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgIH0gZWxzZSBpZiAoY2FuZGlkYXRlLnBhcmVu
dERpc3RhbmNlIDwgY2xvc2VzdC5kaXN0YW5jZSkgeworICAgICAgICAgICAgaWYgKGNhbmRpZGF0
ZS5wYXJlbnRBbGlnbm1lbnQgPj0gY2xvc2VzdC5hbGlnbm1lbnQpIHsKKyAgICAgICAgICAgICAg
ICBjbG9zZXN0ID0gY2FuZGlkYXRlOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQogICAgIH0KIH0KIAogdm9pZCBGb2N1c0NvbnRyb2xsZXI6OmZpbmRG
b2N1c2FibGVOb2RlSW5EaXJlY3Rpb24oTm9kZSogb3V0ZXIsIE5vZGUqIGZvY3VzZWROb2RlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9jdXNE
aXJlY3Rpb24gZGlyZWN0aW9uLCBLZXlib2FyZEV2ZW50KiBldmVudCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvY3VzQ2FuZGlkYXRlJiBjbG9z
ZXN0Rm9jdXNDYW5kaWRhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBGb2N1c0NhbmRpZGF0ZSYgY2FuZGlkYXRlUGFyZW50KQogewog
ICAgIEFTU0VSVChvdXRlcik7CiAgICAgQVNTRVJUKGNhbmRpZGF0ZVBhcmVudC5pc051bGwoKQog
ICAgICAgICB8fCBjYW5kaWRhdGVQYXJlbnQubm9kZS0+aGFzVGFnTmFtZShmcmFtZVRhZykKLSAg
ICAgICAgfHwgY2FuZGlkYXRlUGFyZW50Lm5vZGUtPmhhc1RhZ05hbWUoaWZyYW1lVGFnKSk7Cisg
ICAgICAgIHx8IGNhbmRpZGF0ZVBhcmVudC5ub2RlLT5oYXNUYWdOYW1lKGlmcmFtZVRhZykKKyAg
ICAgICAgfHwgaXNTY3JvbGxhYmxlQ29udGFpbmVyTm9kZShjYW5kaWRhdGVQYXJlbnQubm9kZSkp
OwogCiAgICAgLy8gV2FsayBhbGwgdGhlIGNoaWxkIG5vZGVzIGFuZCB1cGRhdGUgY2xvc2VzdEZv
Y3VzQ2FuZGlkYXRlIGlmIHdlIGZpbmQgYSBuZWFyZXIgbm9kZS4KICAgICBOb2RlKiBjYW5kaWRh
dGUgPSBvdXRlcjsKICAgICB3aGlsZSAoY2FuZGlkYXRlKSB7CisKICAgICAgICAgLy8gSW5uZXIg
ZG9jdW1lbnRzIGNhc2UuCisgICAgICAgIGlmIChjYW5kaWRhdGUtPmlzRnJhbWVPd25lckVsZW1l
bnQoKSkgeworICAgICAgICAgICAgZGVlcEZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24oY2Fu
ZGlkYXRlLCBmb2N1c2VkTm9kZSwgZGlyZWN0aW9uLCBldmVudCwgY2xvc2VzdEZvY3VzQ2FuZGlk
YXRlKTsKIAotICAgICAgICBpZiAoY2FuZGlkYXRlLT5pc0ZyYW1lT3duZXJFbGVtZW50KCkpCisg
ICAgICAgIC8vIFNjcm9sbGFibGUgYmxvY2sgZWxlbWVudHMgKGUuZy4gPGRpdj4sIGV0YykgY2Fz
ZS4KKyAgICAgICAgfSBlbHNlIGlmIChpc1Njcm9sbGFibGVDb250YWluZXJOb2RlKGNhbmRpZGF0
ZSkpIHsKICAgICAgICAgICAgIGRlZXBGaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKGNhbmRp
ZGF0ZSwgZm9jdXNlZE5vZGUsIGRpcmVjdGlvbiwgZXZlbnQsIGNsb3Nlc3RGb2N1c0NhbmRpZGF0
ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGNhbmRpZGF0ZSAhPSBmb2N1c2VkTm9kZSAmJiBjYW5kaWRh
dGUtPmlzS2V5Ym9hcmRGb2N1c2FibGUoZXZlbnQpKSB7CisgICAgICAgICAgICBjYW5kaWRhdGUg
PSBjYW5kaWRhdGUtPnRyYXZlcnNlTmV4dFNpYmxpbmcoKTsKKyAgICAgICAgICAgIGNvbnRpbnVl
OworCisgICAgICAgIH0gZWxzZSBpZiAoY2FuZGlkYXRlICE9IGZvY3VzZWROb2RlICYmIGNhbmRp
ZGF0ZS0+aXNLZXlib2FyZEZvY3VzYWJsZShldmVudCkpIHsKICAgICAgICAgICAgIEZvY3VzQ2Fu
ZGlkYXRlIGN1cnJlbnRGb2N1c0NhbmRpZGF0ZShjYW5kaWRhdGUpOwogCisgICAgICAgICAgICAv
LyBUaGVyZSBhcmUgdHdvIHdheXMgdG8gaWRlbnRpZnkgd2UgYXJlIGluIGEgcmVjdXJzaXZlIGNh
bGwgZnJvbSBkZWVwRmluZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbgorICAgICAgICAgICAgLy8g
KGkuZS4gcHJvY2Vzc2luZyBhbiBlbGVtZW50IGluIGFuIGlmcmFtZSwgZnJhbWUgb3IgYSBzY3Jv
bGxhYmxlIGJsb2NrIGVsZW1lbnQpOgorCisgICAgICAgICAgICAvLyAxKSBJZiBjYW5kaWRhdGVQ
YXJlbnQgaXMgbm90IG51bGwsIGFuZCBpdCBob2xkcyB0aGUgZGlzdGFuY2UgYW5kIGFsaWdubWVu
dCBkYXRhIG9mIHRoZQorICAgICAgICAgICAgLy8gcGFyZW50IGNvbnRhaW5lciBlbGVtZW50IGl0
c2VsZi4KKyAgICAgICAgICAgIGlmICghY2FuZGlkYXRlUGFyZW50LmlzTnVsbCgpKSB7CisgICAg
ICAgICAgICAgICAgY3VycmVudEZvY3VzQ2FuZGlkYXRlLnBhcmVudEFsaWdubWVudCA9IGNhbmRp
ZGF0ZVBhcmVudC5hbGlnbm1lbnQ7CisgICAgICAgICAgICAgICAgY3VycmVudEZvY3VzQ2FuZGlk
YXRlLnBhcmVudERpc3RhbmNlID0gY2FuZGlkYXRlUGFyZW50LmRpc3RhbmNlOworICAgICAgICAg
ICAgICAgIGN1cnJlbnRGb2N1c0NhbmRpZGF0ZS5lbmNsb3NpbmdTY3JvbGxhYmxlQm94ID0gY2Fu
ZGlkYXRlUGFyZW50Lm5vZGU7CisKKyAgICAgICAgICAgIC8vIDIpIFBhcmVudCBvZiBvdXRlciBp
cyBlaXRoZXI6CisgICAgICAgICAgICAvLyAqIDxmcmFtZT4gb3IgPGlmcmFtZT47CisgICAgICAg
ICAgICAvLyAqIG9yIGFueSBvdGhlciBzY3JvbGxhYmxlIGJsb2NrIGVsZW1lbnQuCisgICAgICAg
ICAgICB9IGVsc2UgaWYgKCFpc0luUm9vdERvY3VtZW50KG91dGVyKSkgeworICAgICAgICAgICAg
ICAgIGlmIChEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KG91dGVy
LT5wYXJlbnQoKSkpCisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRGb2N1c0NhbmRpZGF0ZS5l
bmNsb3NpbmdTY3JvbGxhYmxlQm94ID0gc3RhdGljX2Nhc3Q8Tm9kZSo+KGRvY3VtZW50LT5vd25l
ckVsZW1lbnQoKSk7CisKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgTm9k
ZSogcGFyZW50ID0gb3V0ZXItPnBhcmVudCgpOworICAgICAgICAgICAgICAgIGlmIChwYXJlbnQg
JiYgaXNTY3JvbGxhYmxlQ29udGFpbmVyTm9kZShwYXJlbnQpICYmICFwYXJlbnQtPmlzRG9jdW1l
bnROb2RlKCkpCisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRGb2N1c0NhbmRpZGF0ZS5lbmNs
b3NpbmdTY3JvbGxhYmxlQm94ID0gb3V0ZXItPnBhcmVudCgpOworICAgICAgICAgICAgfQorCiAg
ICAgICAgICAgICAvLyBHZXQgZGlzdGFuY2UgYW5kIGFsaWdubWVudCBmcm9tIGN1cnJlbnQgY2Fu
ZGlkYXRlLgogICAgICAgICAgICAgZGlzdGFuY2VEYXRhRm9yTm9kZShkaXJlY3Rpb24sIGZvY3Vz
ZWROb2RlLCBjdXJyZW50Rm9jdXNDYW5kaWRhdGUpOwogCiAgICAgICAgICAgICAvLyBCYWlsIG91
dCBpZiBkaXN0YW5jZSBpcyBtYXhpbXVtLgogICAgICAgICAgICAgaWYgKGN1cnJlbnRGb2N1c0Nh
bmRpZGF0ZS5kaXN0YW5jZSA9PSBtYXhEaXN0YW5jZSgpKSB7CiAgICAgICAgICAgICAgICAgY2Fu
ZGlkYXRlID0gY2FuZGlkYXRlLT50cmF2ZXJzZU5leHROb2RlKG91dGVyLT5wYXJlbnQoKSk7CiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIC8v
IElmIGNhbmRpZGF0ZVBhcmVudCBpcyBub3QgbnVsbCwgaXQgbWVhbnMgdGhhdCB3ZSBhcmUgaW4g
YSByZWN1cnNpdmUgY2FsbAotICAgICAgICAgICAgLy8gZnJvbSBkZWVwRmluZUZvY3VzYWJsZU5v
ZGVJbkRpcmVjdGlvbiAoaS5lLiBwcm9jZXNzaW5nIGFuIGVsZW1lbnQgaW4gYW4gaWZyYW1lKSwK
LSAgICAgICAgICAgIC8vIGFuZCBob2xkcyB0aGUgZGlzdGFuY2UgYW5kIGFsaWdubWVudCBkYXRh
IG9mIHRoZSBpZnJhbWUgZWxlbWVudCBpdHNlbGYuCi0gICAgICAgICAgICBpZiAoIWNhbmRpZGF0
ZVBhcmVudC5pc051bGwoKSkgewotICAgICAgICAgICAgICAgIGN1cnJlbnRGb2N1c0NhbmRpZGF0
ZS5wYXJlbnRBbGlnbm1lbnQgPSBjYW5kaWRhdGVQYXJlbnQuYWxpZ25tZW50OwotICAgICAgICAg
ICAgICAgIGN1cnJlbnRGb2N1c0NhbmRpZGF0ZS5wYXJlbnREaXN0YW5jZSA9IGNhbmRpZGF0ZVBh
cmVudC5kaXN0YW5jZTsKLSAgICAgICAgICAgIH0KLQogICAgICAgICAgICAgdXBkYXRlRm9jdXND
YW5kaWRhdGVJZkNsb3Nlcihmb2N1c2VkTm9kZSwgY3VycmVudEZvY3VzQ2FuZGlkYXRlLCBjbG9z
ZXN0Rm9jdXNDYW5kaWRhdGUpOwogICAgICAgICB9CiAKICAgICAgICAgY2FuZGlkYXRlID0gY2Fu
ZGlkYXRlLT50cmF2ZXJzZU5leHROb2RlKG91dGVyLT5wYXJlbnQoKSk7CiAgICAgfQogfQogCiB2
b2lkIEZvY3VzQ29udHJvbGxlcjo6ZGVlcEZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24oTm9k
ZSogY29udGFpbmVyLCBOb2RlKiBmb2N1c2VkTm9kZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24s
IEtleWJvYXJkRXZlbnQqIGV2ZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEZvY3VzQ2FuZGlkYXRlJiBjbG9zZXN0Rm9jdXNDYW5kaWRh
dGUpCiB7Ci0gICAgQVNTRVJUKGNvbnRhaW5lci0+aGFzVGFnTmFtZShmcmFtZVRhZykgfHwgY29u
dGFpbmVyLT5oYXNUYWdOYW1lKGlmcmFtZVRhZykpOworICAgIEFTU0VSVChjb250YWluZXItPmhh
c1RhZ05hbWUoZnJhbWVUYWcpCisgICAgICAgIHx8IGNvbnRhaW5lci0+aGFzVGFnTmFtZShpZnJh
bWVUYWcpCisgICAgICAgIHx8IGlzU2Nyb2xsYWJsZUNvbnRhaW5lck5vZGUoY29udGFpbmVyKSk7
CiAKICAgICAvLyBUcmFjayBpZiBmb2N1c2VkTm9kZSBpcyBhIGRlc2NlbmRhbnQgb2YgdGhlIGN1
cnJlbnQgY29udGFpbmVyIG5vZGUgYmVpbmcgcHJvY2Vzc2VkLgogICAgIGJvb2wgZGVzY2VuZGFu
dE9mQ29udGFpbmVyID0gZmFsc2U7CiAgICAgTm9kZSogZmlyc3RDaGlsZCA9IDA7CiAKICAgICAv
LyBJZnJhbWUgb3IgRnJhbWUuCiAgICAgaWYgKGNvbnRhaW5lci0+aGFzVGFnTmFtZShmcmFtZVRh
ZykgfHwgY29udGFpbmVyLT5oYXNUYWdOYW1lKGlmcmFtZVRhZykpIHsKIApAQCAtNDUzLDE2ICs1
MTIsMjEgQEAgdm9pZCBGb2N1c0NvbnRyb2xsZXI6OmRlZXBGaW5kRm9jdXNhYmxlTm9kZUluRGly
ZWN0aW9uKE5vZGUqIGNvbnRhaW5lciwgTm9kZSogZm8KIAogICAgICAgICBEb2N1bWVudCogaW5u
ZXJEb2N1bWVudCA9IG93bmVyLT5jb250ZW50RnJhbWUoKS0+ZG9jdW1lbnQoKTsKICAgICAgICAg
aWYgKCFpbm5lckRvY3VtZW50KQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGRlc2Nl
bmRhbnRPZkNvbnRhaW5lciA9IGlubmVyRG9jdW1lbnQgPT0gZm9jdXNlZE5vZGUtPmRvY3VtZW50
KCk7CiAgICAgICAgIGZpcnN0Q2hpbGQgPSBpbm5lckRvY3VtZW50LT5maXJzdENoaWxkKCk7CiAK
KyAgICAvLyBTY3JvbGxhYmxlIGJsb2NrIGVsZW1lbnRzIChlLmcuIDxkaXY+LCBldGMpCisgICAg
fSBlbHNlIGlmIChpc1Njcm9sbGFibGVDb250YWluZXJOb2RlKGNvbnRhaW5lcikpIHsKKworICAg
ICAgICBmaXJzdENoaWxkID0gY29udGFpbmVyLT5maXJzdENoaWxkKCk7CisgICAgICAgIGRlc2Nl
bmRhbnRPZkNvbnRhaW5lciA9IGZvY3VzZWROb2RlLT5pc0Rlc2NlbmRhbnRPZihjb250YWluZXIp
OwogICAgIH0KIAogICAgIGlmIChkZXNjZW5kYW50T2ZDb250YWluZXIpIHsKICAgICAgICAgZmlu
ZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbihmaXJzdENoaWxkLCBmb2N1c2VkTm9kZSwgZGlyZWN0
aW9uLCBldmVudCwgY2xvc2VzdEZvY3VzQ2FuZGlkYXRlKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAogICAgIC8vIENoZWNrIGlmIHRoZSBjdXJyZW50IGNvbnRhaW5lciBlbGVtZW50IGl0c2Vs
ZiBpcyBhIGdvb2QgY2FuZGlkYXRlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5h
dmlnYXRpb24uY3BwIGIvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcAppbmRleCBk
NDMzMzBjLi5hYzhjMTA4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRp
b24uY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAKQEAgLTUyNCw5
ICs1MjQsMjEgQEAgc3RhdGljIGJvb2wgY2hlY2tOZWdhdGl2ZUNvb3Jkc0Zvck5vZGUoTm9kZSog
bm9kZSwgY29uc3QgSW50UmVjdCYgY3VyUmVjdCkKICAgICAgICAgICAgIGNhbkJlU2Nyb2xsZWQg
PSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CiAKICAgICByZXR1
cm4gY2FuQmVTY3JvbGxlZDsKIH0KIAorYm9vbCBpc1Njcm9sbGFibGVDb250YWluZXJOb2RlKE5v
ZGUqIG5vZGUpCit7CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCkpCisgICAgICAg
IHJldHVybiAocmVuZGVyZXItPmlzQm94KCkgJiYgdG9SZW5kZXJCb3gocmVuZGVyZXIpLT5jYW5C
ZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEoKQorICAgICAgICAgICAgICYmIG5vZGUtPmhh
c0NoaWxkTm9kZXMoKSk7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5oIGIv
V2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmgKaW5kZXggZDM4ZmIwOS4uMjlhNTI3ZiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmgKKysrIGIvV2ViQ29y
ZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmgKQEAgLTkyLDQzICs5Miw0OCBAQCBlbnVtIFJlY3Rz
QWxpZ25tZW50IHsKICAgICBOb25lID0gMCwKICAgICBQYXJ0aWFsLAogICAgIEZ1bGwKIH07CiAK
IHN0cnVjdCBGb2N1c0NhbmRpZGF0ZSB7CiAgICAgRm9jdXNDYW5kaWRhdGUoKQogICAgICAgICA6
IG5vZGUoMCkKKyAgICAgICAgLCBlbmNsb3NpbmdTY3JvbGxhYmxlQm94KDApCiAgICAgICAgICwg
ZGlzdGFuY2UobWF4RGlzdGFuY2UoKSkKICAgICAgICAgLCBwYXJlbnREaXN0YW5jZShtYXhEaXN0
YW5jZSgpKQogICAgICAgICAsIGFsaWdubWVudChOb25lKQogICAgICAgICAsIHBhcmVudEFsaWdu
bWVudChOb25lKQogICAgIHsKICAgICB9CiAKICAgICBGb2N1c0NhbmRpZGF0ZShOb2RlKiBuKQog
ICAgICAgICA6IG5vZGUobikKKyAgICAgICAgLCBlbmNsb3NpbmdTY3JvbGxhYmxlQm94KDApCiAg
ICAgICAgICwgZGlzdGFuY2UobWF4RGlzdGFuY2UoKSkKICAgICAgICAgLCBwYXJlbnREaXN0YW5j
ZShtYXhEaXN0YW5jZSgpKQogICAgICAgICAsIGFsaWdubWVudChOb25lKQogICAgICAgICAsIHBh
cmVudEFsaWdubWVudChOb25lKQogICAgIHsKICAgICB9CiAKICAgICBib29sIGlzTnVsbCgpIGNv
bnN0IHsgcmV0dXJuICFub2RlOyB9CisgICAgYm9vbCBpc0luU2Nyb2xsYWJsZUNvbnRhaW5lcigp
IGNvbnN0IHsgcmV0dXJuIG5vZGUgJiYgZW5jbG9zaW5nU2Nyb2xsYWJsZUJveDsgfQogICAgIERv
Y3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG5vZGUgPyBub2RlLT5kb2N1bWVudCgp
IDogMDsgfQogCiAgICAgTm9kZSogbm9kZTsKKyAgICBOb2RlKiBlbmNsb3NpbmdTY3JvbGxhYmxl
Qm94OwogICAgIGxvbmcgbG9uZyBkaXN0YW5jZTsKICAgICBsb25nIGxvbmcgcGFyZW50RGlzdGFu
Y2U7CiAgICAgUmVjdHNBbGlnbm1lbnQgYWxpZ25tZW50OwogICAgIFJlY3RzQWxpZ25tZW50IHBh
cmVudEFsaWdubWVudDsKIH07CiAKIHZvaWQgZGlzdGFuY2VEYXRhRm9yTm9kZShGb2N1c0RpcmVj
dGlvbiBkaXJlY3Rpb24sIE5vZGUqIHN0YXJ0LCBGb2N1c0NhbmRpZGF0ZSYgY2FuZGlkYXRlKTsK
IGJvb2wgc2Nyb2xsSW5EaXJlY3Rpb24oRnJhbWUqLCBGb2N1c0RpcmVjdGlvbik7CiB2b2lkIHNj
cm9sbEludG9WaWV3KEVsZW1lbnQqKTsKIGJvb2wgaGFzT2Zmc2NyZWVuUmVjdChOb2RlKik7CiBi
b29sIGlzSW5Sb290RG9jdW1lbnQoTm9kZSopOworYm9vbCBpc1Njcm9sbGFibGVDb250YWluZXJO
b2RlKE5vZGUqKTsKIAogfSAvLyBuYW1zcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBTcGF0aWFs
TmF2aWdhdGlvbl9oCi0tIAoxLjYuMy4zCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56483</attachid>
            <date>2010-05-19 06:44:03 -0700</date>
            <delta_ts>2010-05-24 06:36:58 -0700</delta_ts>
            <desc>patch v5.1</desc>
            <filename>0001-Spatial-Navigation-make-it-work-with-focusable-eleme.patch</filename>
            <type>text/plain</type>
            <size>28208</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSA3Y2IzNDFkMGU3ZmExYjZlNmVjMGQ5MGM0MjdkY2ViM2Q0N2MxYzE1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4K
RGF0ZTogTW9uLCAxNyBNYXkgMjAxMCAxMTozNzowNyAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIFNw
YXRpYWwgTmF2aWdhdGlvbjogbWFrZSBpdCB3b3JrIHdpdGggZm9jdXNhYmxlIGVsZW1lbnRzIGlu
IG92ZXJmbG93IGNvbnRlbnQKIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zNjQ2MwoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuClBhdGNoIGJ1IEFudG9uaW8gR29t
ZXMgPHRvbmlraXRvb0B3ZWJraXQub3JnPgoKV2ViQ29yZToKClBhdGNoIGFkZHJlc3NlcyB0aGUg
cHJvYmxlbSB0aGF0IFNwYXRpYWwgTmF2aWdhdGlvbiBjdXJyZW50bHkgZG9lcyBub3QgcHJvcGVy
bHkKdHJhdmVyc2Ugc2Nyb2xsYWJsZSBjb250ZW50cywgaW5jbHVkaW5nIHNjcm9sbGFibGUgZGl2
J3MuIEZvciB0aGF0IHRvIHdvcmssIGEgbmV3CmNsYXNzIG1lbWJlciBjYWxsZWQgc2Nyb2xsYWJs
ZUVuY2xvc2luZ0JveCB3YXMgaW50cm9kdWNlZCB0byBGb2N1c0NhbmRpZGF0ZSBjbGFzcwp0byBr
ZWVwIHRoZSB0cmFjayBvZiBjdXJyZW50IHNjcm9sbGFibGUgYm94IE5vZGUgd3JhcHBpbmcgYSBG
b2N1c0NhbmRpZGF0ZS4gVG8gbWFrZQp1c2Ugb2YgZW5jbG9zaW5nU2Nyb2xsYWJsZUJveCBvZiBG
b2N1c0NhbmRpZGF0ZSwgdGhlIERPTSB0cmF2ZXJzYWwgYWxnb3JpdGhtIHJvdXRpbmUKKEZvY3Vz
Q29udHJvbGxlcjo6ZmluZE5leHRGb2N1c2FibGVJbkRpcmVjdGlvbikgd2FzIGNoYW5nZWQgYXMg
Zm9sbG93czogQXQgdGhlCnRpbWUgaXQgZW5jb3VudGVycyBhIHNjcm9sbGFibGUgTm9kZSwgZWFj
aCBmb2N1c2FibGUgbm9kZSB0aGF0IGlzIGlubmVyIG9mIGl0IGtlZXBzCnRyYWNrIG9mIHRoZSBj
b250YWluZXIgcmVmZXJlbmNlLiBCeSB0aGUgdGltZSBhIHNpYmxpbmcgb2YgdGhlIHNjcm9sbGFi
bGUgTm9kZSBpbiBjYXNlCmlzIGVuY291bnRlcmVkLCB0aGVyZSBpcyBub3QgbmVlZCB0byB0cmFj
ayB0aGlzIHJlZmVyZW5jZSBhbnkgbW9yZSwgYW5kIHRoZSB0cmF2ZXJzYWwKYWxnb3JpdGhtIGNv
bnRpbnVlcyBub3JtYWxseS4KClRoZSBjb21tb24gY2FzZSBpcyBvYnZpb3VzbHkgdGhhdCB0aGVy
ZSBpcyBubyBzY3JvbGxhYmxlIGNvbnRhaW5lciB3cmFwcGluZyBpdC4KCnVwZGF0ZUZvY3VzQ2Fu
ZGlkaXRlSWZDbG9zZXIgbG9naWMgd2FzIGFsc28gYWRhcHRlZCB0byBmaXQgdGhlIG5lZWQgb2Yg
dGhlCm5ld2x5IGludHJvZHVjZWQgZW5jbG9zaW5nU2Nyb2xsYWJsZUJveCBjbGFzcyBtZW1iZXIs
IGdldHRpbmcgc2ltcGxlciBhbmQgbW9yZQplYXNpbHkgbWFpbnRhaW5hYmxlLgoKVGVzdHM6IGZh
c3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWRpdi1zY3JvbGxhYmxlLWJ1dC13aXRo
b3V0LWZvY3VzYWJsZS1jb250ZW50Lmh0bWwKICAgICAgIGZhc3QvZXZlbnRzL3NwYXRpYWwtbmF2
aWdhdGlvbi9zbmF2LWNsaXBwZWQtb3ZlcmZsb3ctY29udGVudC5odG1sCgoqIHBhZ2UvRm9jdXND
b250cm9sbGVyLmNwcDoKKFdlYkNvcmU6OnVwZGF0ZUZvY3VzQ2FuZGlkYXRlSW5UaGVTYW1lQ29u
dGFpbmVyKToKKFdlYkNvcmU6OnVwZGF0ZUZvY3VzQ2FuZGlkYXRlSWZDbG9zZXIpOgooV2ViQ29y
ZTo6Rm9jdXNDb250cm9sbGVyOjpmaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKToKKFdlYkNv
cmU6OkZvY3VzQ29udHJvbGxlcjo6ZGVlcEZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24pOgoq
IHBhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwOgooV2ViQ29yZTo6aXNTY3JvbGxhYmxlQ29udGFp
bmVyTm9kZSk6CiogcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5oOgooV2ViQ29yZTo6Rm9jdXNDYW5k
aWRhdGU6OkZvY3VzQ2FuZGlkYXRlKToKKFdlYkNvcmU6OkZvY3VzQ2FuZGlkYXRlOjppc0luU2Ny
b2xsYWJsZUNvbnRhaW5lcik6CgpMYXlvdXRUZXN0czoKCiogZmFzdC9ldmVudHMvc3BhdGlhbC1u
YXZpZ2F0aW9uL3NuYXYtZGl2LXNjcm9sbGFibGUtYnV0LXdpdGhvdXQtZm9jdXNhYmxlLWNvbnRl
bnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKiBmYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24v
c25hdi1kaXYtc2Nyb2xsYWJsZS1idXQtd2l0aG91dC1mb2N1c2FibGUtY29udGVudC5odG1sOiBB
ZGRlZC4KKiBmYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1jbGlwcGVkLW92ZXJm
bG93LWNvbnRlbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKiBmYXN0L2V2ZW50cy9zcGF0aWFsLW5h
dmlnYXRpb24vc25hdi1jbGlwcGVkLW92ZXJmbG93LWNvbnRlbnQuaHRtbDogQWRkZWQuCi0tLQog
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEy
ICsrCiAuLi4vc25hdi1jbGlwcGVkLW92ZXJmbG93ZWQtY29udGVudC1leHBlY3RlZC50eHQgICB8
ICAgMjQgKysrCiAuLi4vc25hdi1jbGlwcGVkLW92ZXJmbG93ZWQtY29udGVudC5odG1sICAgICAg
ICAgICB8ICAgODUgKysrKysrKysrKysKIC4uLmFibGUtYnV0LXdpdGhvdXQtZm9jdXNhYmxlLWNv
bnRlbnQtZXhwZWN0ZWQudHh0IHwgICAzNSArKysrKwogLi4udi1zY3JvbGxhYmxlLWJ1dC13aXRo
b3V0LWZvY3VzYWJsZS1jb250ZW50Lmh0bWwgfCAgIDgwICsrKysrKysrKysKIFdlYkNvcmUvQ2hh
bmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzOCArKysrKwogV2Vi
Q29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAgICAgICAgICAgICAgICAgICAgfCAgMTUzICsr
KysrKysrKysrKysrLS0tLS0tCiBXZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwICAg
ICAgICAgICAgICAgICB8ICAgMTIgKysKIFdlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5o
ICAgICAgICAgICAgICAgICAgIHwgICAgNSArCiA5IGZpbGVzIGNoYW5nZWQsIDM5OCBpbnNlcnRp
b25zKCspLCA0NiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1jbGlwcGVkLW92ZXJmbG93ZWQtY29u
dGVudC1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1jbGlwcGVkLW92ZXJmbG93ZWQtY29udGVudC5o
dG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3BhdGlhbC1u
YXZpZ2F0aW9uL3NuYXYtZGl2LXNjcm9sbGFibGUtYnV0LXdpdGhvdXQtZm9jdXNhYmxlLWNvbnRl
bnQtZXhwZWN0ZWQudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtZGl2LXNjcm9sbGFibGUtYnV0LXdpdGhvdXQtZm9j
dXNhYmxlLWNvbnRlbnQuaHRtbAoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyZjgwNzQ5Li44ODM3YWQ3IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDggKzEsMjAgQEAKKzIwMTAtMDUtMTQgIEFudG9uaW8gR29tZXMgIDx0b25pa2l0b29Ad2Via2l0
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBT
cGF0aWFsIE5hdmlnYXRpb246IG1ha2UgaXQgd29yayB3aXRoIGZvY3VzYWJsZSBlbGVtZW50cyBp
biBvdmVyZmxvdyBjb250ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zNjQ2MworCisgICAgICAgICogZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0
aW9uL3NuYXYtZGl2LXNjcm9sbGFibGUtYnV0LXdpdGhvdXQtZm9jdXNhYmxlLWNvbnRlbnQtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRp
b24vc25hdi1kaXYtc2Nyb2xsYWJsZS1idXQtd2l0aG91dC1mb2N1c2FibGUtY29udGVudC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1j
bGlwcGVkLW92ZXJmbG93LWNvbnRlbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1jbGlwcGVkLW92ZXJmbG93LWNvbnRl
bnQuaHRtbDogQWRkZWQuCisKIDIwMTAtMDUtMTggIEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEJ1aWxkIGZpeC4gRGlzYWJsZSB0ZXN0IGNhc2Vz
IGluIGZpbGUtcmVhZGVyLmh0bWwgdGhhdAogICAgICAgICBjYXVzZSB0aW1lLW91dCBpbiBtYWMg
Ym90IGZvciBmdXJ0aGVyIGludmVzdGlnYXRpb24uCiAKICAgICAgICAgKiBmYXN0L2ZpbGVzL2Zp
bGUtcmVhZGVyLWV4cGVjdGVkLnR4dDoKICAgICAgICAgKiBmYXN0L2ZpbGVzL2ZpbGUtcmVhZGVy
Lmh0bWw6CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NwYXRpYWwtbmF2
aWdhdGlvbi9zbmF2LWNsaXBwZWQtb3ZlcmZsb3dlZC1jb250ZW50LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWNsaXBwZWQtb3Zl
cmZsb3dlZC1jb250ZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5iMjhiMDllCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtY2xpcHBlZC1vdmVyZmxvd2VkLWNvbnRlbnQtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjQgQEAKK1RoYXQgaXMgaXMgYSBub3JtYWwgbGlua18xLgor
CitUaGlzIGlzIGEgc2Nyb2xsYWJsZSBEaXYgY3JlYXRlZCB3aXRoIHRoZSBDU1MgcHJvcGVydHkg
b3ZlcmZsb3cuCisKK0l0IGhhcyBhIHZpc2libGUgbGlua18yLgorCisKKworCisKKworCisuLi4g
YW5kIGFuIG92ZXJmbG93ZWQgbGluayBsaWtlIGxpbmtfMy4KKworQW5kIHRoaXMgaXMgYW5vdGhl
ciBub3JtYWwgbGlua180LgorCitQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuZ2V0QXR0cmli
dXRlKCJpZCIpIGlzICIxIgorUEFTUyBkb2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJpYnV0
ZSgiaWQiKSBpcyAiMSIKK1BBU1MgZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUo
ImlkIikgaXMgIjIiCitQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCJp
ZCIpIGlzICIzIgorUEFTUyBkb2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgiaWQi
KSBpcyAiMiIKK1BBU1MgZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoImlkIikg
aXMgIjEiCitQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCJpZCIpIGlz
ICJzdGFydCIKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3BhdGlhbC1u
YXZpZ2F0aW9uL3NuYXYtY2xpcHBlZC1vdmVyZmxvd2VkLWNvbnRlbnQuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWNsaXBwZWQtb3ZlcmZsb3dl
ZC1jb250ZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzEyZjFk
NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NwYXRpYWwtbmF2
aWdhdGlvbi9zbmF2LWNsaXBwZWQtb3ZlcmZsb3dlZC1jb250ZW50Lmh0bWwKQEAgLTAsMCArMSw4
NSBAQAorPGh0bWw+CisgIDwhLS0KKyAgICBUaGlzIHRlc3QgZW5zdXJlcyB0aGUgY29udGVudCBv
dmVyZmxvdyB0cmF2ZXJzYWwgY29ycmVjdG5lc3Mgb2YgU3BhdGlhbCBOYXZpZ2F0aW9uCisgICAg
YWxnb3JpdGhtOiBmb2N1c2FibGUgZWxlbWVudHMgaW4gYW4gc2Nyb2xsYWJsZSBjb250YWluZXJz
IChlLmcuIDxkaXY+KSBzaG91bGQgYmUKKyAgICBhY2Nlc3NpYmxlLCBpbmNsdWRpbmcgb2Zmc2Ny
ZWVuIGNvbnRlbnQuCisKKyAgICAqIFByZS1jb25kaXRpb25zOgorICAgIDEpIERSVCBzdXBwb3J0
IGZvciBTTmF2IGVuYWJsZS9kaXNhYmxlLgorCisgICAgKiBOYXZpZ2F0aW9uIHN0ZXBzOgorICAg
IDEpIExvYWRzIHRoaXMgcGFnZSwgZm9jdXMgZ29lcyB0byAic3RhcnQiIGF1dG9tYXRpY2FsbHku
CisgICAgMikgTW92ZSBmb2N1cyBkb3duIHRvIHRoZSB2aXNpYmxlIGZvY3VzYWJsZSBlbGVtZW50
IGluCisgICAgICAgc2Nyb2xsYWJsZSBkaXYuCisgICAgMykgVHJhdmVyc2UgdGhlIHBhZ2UgdGhy
b3VnaCBvdGhlciBmb2N1c2FibGUgZWxlbWVudHMgZG93biB0aGUgcGFnZS4KKyAgICAgICBhbmQg
dGhlbiBiYWNrIHVwLgorCisgICAgKiBFeHBlY3RlZCByZXN1bHRzOiBBbGwgZm9jdXNhYmxlIGVs
ZW1lbnQgaW4gc2Nyb2xsYWJsZSBjb250ZW50LCBpbmNsdWRpbmcKKyAgICBvZmZzY3JlZW4gb25l
cywgc2hvdWxkIGJlIGFjY2Vzc2libGUgdmlhIFNOYXYuIC0tPgorICA8aGVhZD4KKyAgICA8c3R5
bGUgdHlwZT0idGV4dC9jc3MiPgorICAgICAgZGl2LnNjcm9sbCB7CisgICAgICAgIGhlaWdodDog
MjAwcHg7CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgb3ZlcmZsb3c6IGF1dG87Cisg
ICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICM2NjY7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6
ICNjY2M7CisgICAgICAgIHBhZGRpbmc6IDhweDsKKyAgICAgIH0KKyAgICA8L3N0eWxlPgorCisg
ICAgPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9zcGF0aWFsLW5hdmlnYXRpb24tdXRpbHMu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCI+
CisKKyAgICB2YXIgcmVzdWx0TWFwID0gWworICAgICAgWyJEb3duIiwgIjEiXSwKKyAgICAgIFsi
RG93biIsICIxIl0sCisgICAgICBbIkRvd24iLCAiMiJdLAorICAgICAgWyJEb3duIiwgIjMiXSwK
KyAgICAgIFsiVXAiLCAiMiJdLAorICAgICAgWyJVcCIsICIxIl0sCisgICAgICBbIlVwIiwgInN0
YXJ0Il0sCisgICAgICBbIkRPTkUiLCAiRE9ORSJdCisgICAgXTsKKworICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKyAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFNwYXRpYWxOYXZpZ2F0aW9u
RW5hYmxlZCh0cnVlKTsKKyAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVy
ZW5jZSgiV2ViS2l0VGFiVG9MaW5rc1ByZWZlcmVuY2VLZXkiLCAxKTsKKyAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBydW5U
ZXN0KCkKKyAgICB7CisgICAgICAvLyBzdGFydGluZyB0aGUgdGVzdCBpdHNlbGY6IGdldCB0byBh
IGtub3duIHBsYWNlLgorICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0YXJ0IikuZm9j
dXMoKTsKKworICAgICAgaW5pdFRlc3QocmVzdWx0TWFwLCB0ZXN0Q29tcGxldGVkKTsKKyAgICB9
CisKKyAgICBmdW5jdGlvbiB0ZXN0Q29tcGxldGVkKCkKKyAgICB7CisgICAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3Rp
ZnlEb25lKCk7CisgICAgfQorCisgICAgd2luZG93Lm9ubG9hZCA9IHJ1blRlc3Q7CisKKyAgICA8
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+CisgIDwvaGVhZD4KKworICA8Ym9keSBpZD0ic29tZS1jb250ZW50IiB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+CisgICAgPHA+VGhhdCBpcyBpcyBhIG5v
cm1hbCA8YSBpZD0ic3RhcnQiIGhyZWY9ImEiPmxpbmtfMTwvYT4uPC9wPgorICAgIDxkaXYgY2xh
c3M9InNjcm9sbCI+CisgICAgICA8cD5UaGlzIGlzIGEgc2Nyb2xsYWJsZSBEaXYgY3JlYXRlZCB3
aXRoIHRoZSBDU1MgcHJvcGVydHkgb3ZlcmZsb3cuPC9wPgorICAgICAgPHA+SXQgaGFzIGEgdmlz
aWJsZSA8YSBpZD0iMSIgaHJlZj0iYSI+bGlua18yPC9hPi48L3A+CisgICAgICA8YnI+PGJyPjxi
cj48YnI+PGJyPjxicj4KKyAgICAgIDxwPi4uLiBhbmQgYW4gb3ZlcmZsb3dlZCBsaW5rIGxpa2Ug
PGEgaWQ9IjIiIGhyZWY9ImEiPmxpbmtfMzwvYT4uPC9wPgorICAgIDwvZGl2PgorICAgIDxwPkFu
ZCB0aGlzIGlzIGFub3RoZXIgbm9ybWFsIDxhIGlkPSIzIiBocmVmPSJhIj5saW5rXzQ8L2E+Ljwv
cD4KKyAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgPC9ib2R5PgorPC9odG1sPgorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25h
di1kaXYtc2Nyb2xsYWJsZS1idXQtd2l0aG91dC1mb2N1c2FibGUtY29udGVudC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1kaXYt
c2Nyb2xsYWJsZS1idXQtd2l0aG91dC1mb2N1c2FibGUtY29udGVudC1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzUxYjk0MwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWRpdi1z
Y3JvbGxhYmxlLWJ1dC13aXRob3V0LWZvY3VzYWJsZS1jb250ZW50LWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDM1IEBACithCitUaGlzIGlzIGEgc2Nyb2xsYWJsZSBEaXYgY3JlYXRlZCB3aXRoIHRo
ZSBDU1MgcHJvcGVydHkgb3ZlcmZsb3cuCisKK0l0IGhhcyBubyBrZXlib2FyZCBmb2N1c2FibGUg
ZWxlbWVudHMgLi4uLgorCisKKworCisKKworCisKKworCisKKworCisuLi4gYW5kIHNjcm9sbGJh
cnMhCisKK1RoaXMgaXMgYW5vdGhlciBzY3JvbGxhYmxlIGRpdiBjcmVhdGVkIHdpdGggdGhlIENT
UyBwcm9wZXJ0eSBvdmVyZmxvdy4KKworSXQgaGFzIGFsc28gbm8ga2V5Ym9hcmQgZm9jdXNhYmxl
IGVsZW1lbnRzIC4uLi4KKworCisKKworCisKKworLi4uIGFzIHdlbGwgYXMgc2Nyb2xsYmFycyEK
KworZQorUEFTUyBkb2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAi
ZW5kIgorUEFTUyBkb2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAi
c3RhcnQiCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NwYXRpYWwtbmF2
aWdhdGlvbi9zbmF2LWRpdi1zY3JvbGxhYmxlLWJ1dC13aXRob3V0LWZvY3VzYWJsZS1jb250ZW50
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1k
aXYtc2Nyb2xsYWJsZS1idXQtd2l0aG91dC1mb2N1c2FibGUtY29udGVudC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4ZmFlM2MKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1kaXYtc2Nyb2xs
YWJsZS1idXQtd2l0aG91dC1mb2N1c2FibGUtY29udGVudC5odG1sCkBAIC0wLDAgKzEsODAgQEAK
KzxodG1sPgorICA8IS0tCisgICAgVGhpcyB0ZXN0IGVuc3VyZXMgdGhlIGJhc2ljIHRyYXZlcnNh
bCBjb3JyZWN0bmVzcyBvZiBTcGF0aWFsIE5hdmlnYXRpb24KKyAgICBhbGdvcml0aG06IHNjcm9s
bGFibGUgZGl2cyB3aXRob3V0IGFueSBmb2N1c2FibGUgY29udGVudCBzaG91bGQgYmUgaWdub3Jl
ZC4KKworICAgICogUHJlLWNvbmRpdGlvbnM6CisgICAgMSkgRFJUIHN1cHBvcnQgZm9yIFNOYXYg
ZW5hYmxlL2Rpc2FibGUuCisKKyAgICAqIE5hdmlnYXRpb24gc3RlcHM6CisgICAgMSkgTG9hZHMg
dGhpcyBwYWdlLCBmb2N1cyBnb2VzIHRvICJzdGFydCIgYXV0b21hdGljYWxseS4KKyAgICAyKSBG
b2N1cyBtb3ZlcyBmcm9tICJzdGFydCIgdG8gImVuZCIgYnlwYXNzaW5nIHRoZSB0d28gZGl2J3MK
KyAgICAgICBpbiBiZXR3ZWVuIHRoZW0sIG9uY2UgYm90aCBoYXZlIG5vIGZvY3VzYWJsZSBlbGVt
ZW50cyBpbnNpZGUuCisgIC0tPgorICA8aGVhZD4KKyAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3Mi
PgorICAgICAgZGl2LnNjcm9sbCB7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgICAgIHdp
ZHRoOiAzMDBweDsKKyAgICAgICAgb3ZlcmZsb3c6IGF1dG87CisgICAgICAgIGJvcmRlcjogMXB4
IHNvbGlkICM2NjY7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNjY2M7CisgICAgICAgIHBh
ZGRpbmc6IDhweDsKKyAgICAgIH0KKyAgICA8L3N0eWxlPgorCisgICAgPHNjcmlwdCBzcmM9Ii4u
Ly4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBz
cmM9InJlc291cmNlcy9zcGF0aWFsLW5hdmlnYXRpb24tdXRpbHMuanMiPjwvc2NyaXB0PgorICAg
IDxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCI+CisKKyAgICB2YXIgcmVzdWx0
TWFwID0gWworICAgICAgWyJEb3duIiwgImVuZCJdLAorICAgICAgWyJVcCIgICwgInN0YXJ0Il0s
CisgICAgICBbIkRPTkUiLCAiRE9ORSJdCisgICAgXTsKKworICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKyAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxl
ZCh0cnVlKTsKKyAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgi
V2ViS2l0VGFiVG9MaW5rc1ByZWZlcmVuY2VLZXkiLCAxKTsKKyAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBydW5UZXN0KCkK
KyAgICB7CisgICAgICAvLyBzdGFydGluZyB0aGUgdGVzdCBpdHNlbGY6IGdldCB0byBhIGtub3du
IHBsYWNlLgorICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0YXJ0IikuZm9jdXMoKTsK
KworICAgICAgaW5pdFRlc3QocmVzdWx0TWFwLCB0ZXN0Q29tcGxldGVkKTsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiB0ZXN0Q29tcGxldGVkKCkKKyAgICB7CisgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7CisgICAgfQorCisgICAgd2luZG93Lm9ubG9hZCA9IHJ1blRlc3Q7CisgICAgPC9zY3JpcHQ+
CisgICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgorICA8L2hlYWQ+CisgIDxib2R5IGlkPSJzb21lLWNvbnRlbnQiIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKyAgICA8ZGl2PjxhIGlkPSJzdGFydCIgaHJlZj0iYSI+
YTwvYT48L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJzY3JvbGwiPgorICAgICAgPHA+VGhpcyBpcyBh
IHNjcm9sbGFibGUgRGl2IGNyZWF0ZWQgd2l0aCB0aGUgQ1NTIHByb3BlcnR5IG92ZXJmbG93Ljwv
cD4KKyAgICAgIDxwPkl0IGhhcyBubyBrZXlib2FyZCBmb2N1c2FibGUgZWxlbWVudHMgLi4uLjwv
cD4KKyAgICAgIDxicj48YnI+PGJyPjxicj48YnI+PGJyPgorICAgICAgPGJyPjxicj48YnI+PGJy
Pjxicj48YnI+CisgICAgICA8cD4uLi4gYW5kIHNjcm9sbGJhcnMhPC9wPgorICAgIDwvZGl2Pgor
CisgICAgPGRpdiBjbGFzcz0ic2Nyb2xsIj4KKyAgICAgIDxwPlRoaXMgaXMgYW5vdGhlciBzY3Jv
bGxhYmxlIGRpdiBjcmVhdGVkIHdpdGggdGhlIENTUyBwcm9wZXJ0eSBvdmVyZmxvdy48L3A+Cisg
ICAgICA8cD5JdCBoYXMgYWxzbyBubyBrZXlib2FyZCBmb2N1c2FibGUgZWxlbWVudHMgLi4uLjwv
cD4KKyAgICAgIDxicj48YnI+PGJyPjxicj48YnI+PGJyPgorICAgICAgPHA+Li4uIGFzIHdlbGwg
YXMgc2Nyb2xsYmFycyE8L3A+CisgICAgPC9kaXY+CisgICAgPGRpdj48YSBpZD0iZW5kIiBocmVm
PSJhIj5lPC9hPjwvZGl2PgorICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICA8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDg0ZDQ5ZWMuLjM1MTExZGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDggKzEsNDYgQEAKKzIwMTAtMDUtMTQgIEFu
dG9uaW8gR29tZXMgIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTcGF0aWFsIE5hdmlnYXRpb246IG1ha2UgaXQg
d29yayB3aXRoIGZvY3VzYWJsZSBlbGVtZW50cyBpbiBvdmVyZmxvdyBjb250ZW50CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjQ2MworCisgICAgICAg
IFBhdGNoIGFkZHJlc3NlcyB0aGUgcHJvYmxlbSB0aGF0IFNwYXRpYWwgTmF2aWdhdGlvbiBjdXJy
ZW50bHkgZG9lcyBub3QgcHJvcGVybHkKKyAgICAgICAgdHJhdmVyc2Ugc2Nyb2xsYWJsZSBjb250
ZW50cywgaW5jbHVkaW5nIHNjcm9sbGFibGUgZGl2J3MuIEZvciB0aGF0IHRvIHdvcmssIGEgbmV3
CisgICAgICAgIGNsYXNzIG1lbWJlciBjYWxsZWQgc2Nyb2xsYWJsZUVuY2xvc2luZ0JveCB3YXMg
aW50cm9kdWNlZCB0byBGb2N1c0NhbmRpZGF0ZSBjbGFzcworICAgICAgICB0byBrZWVwIHRoZSB0
cmFjayBvZiBjdXJyZW50IHNjcm9sbGFibGUgYm94IE5vZGUgd3JhcHBpbmcgYSBGb2N1c0NhbmRp
ZGF0ZS4gVG8gbWFrZQorICAgICAgICB1c2Ugb2YgZW5jbG9zaW5nU2Nyb2xsYWJsZUJveCBvZiBG
b2N1c0NhbmRpZGF0ZSwgdGhlIERPTSB0cmF2ZXJzYWwgYWxnb3JpdGhtIHJvdXRpbmUKKyAgICAg
ICAgKEZvY3VzQ29udHJvbGxlcjo6ZmluZE5leHRGb2N1c2FibGVJbkRpcmVjdGlvbikgd2FzIGNo
YW5nZWQgYXMgZm9sbG93czogQXQgdGhlCisgICAgICAgIHRpbWUgaXQgZW5jb3VudGVycyBhIHNj
cm9sbGFibGUgTm9kZSwgZWFjaCBmb2N1c2FibGUgbm9kZSB0aGF0IGlzIGlubmVyIG9mIGl0IGtl
ZXBzCisgICAgICAgIHRyYWNrIG9mIHRoZSBjb250YWluZXIgcmVmZXJlbmNlLiBCeSB0aGUgdGlt
ZSBhIHNpYmxpbmcgb2YgdGhlIHNjcm9sbGFibGUgTm9kZSBpbiBjYXNlCisgICAgICAgIGlzIGVu
Y291bnRlcmVkLCB0aGVyZSBpcyBub3QgbmVlZCB0byB0cmFjayB0aGlzIHJlZmVyZW5jZSBhbnkg
bW9yZSwgYW5kIHRoZSB0cmF2ZXJzYWwKKyAgICAgICAgYWxnb3JpdGhtIGNvbnRpbnVlcyBub3Jt
YWxseS4KKworICAgICAgICBUaGUgY29tbW9uIGNhc2UgaXMgb2J2aW91c2x5IHRoYXQgdGhlcmUg
aXMgbm8gc2Nyb2xsYWJsZSBjb250YWluZXIgd3JhcHBpbmcgaXQuCisKKyAgICAgICAgdXBkYXRl
Rm9jdXNDYW5kaWRpdGVJZkNsb3NlciBsb2dpYyB3YXMgYWxzbyBhZGFwdGVkIHRvIGZpdCB0aGUg
bmVlZCBvZiB0aGUKKyAgICAgICAgbmV3bHkgaW50cm9kdWNlZCBlbmNsb3NpbmdTY3JvbGxhYmxl
Qm94IGNsYXNzIG1lbWJlciwgZ2V0dGluZyBzaW1wbGVyIGFuZCBtb3JlCisgICAgICAgIGVhc2ls
eSBtYWludGFpbmFibGUuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZXZlbnRzL3NwYXRpYWwtbmF2
aWdhdGlvbi9zbmF2LWRpdi1zY3JvbGxhYmxlLWJ1dC13aXRob3V0LWZvY3VzYWJsZS1jb250ZW50
Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2
LWNsaXBwZWQtb3ZlcmZsb3ctY29udGVudC5odG1sCisKKyAgICAgICAgKiBwYWdlL0ZvY3VzQ29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVGb2N1c0NhbmRpZGF0ZUluVGhl
U2FtZUNvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVGb2N1c0NhbmRpZGF0ZUlm
Q2xvc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6ZmluZEZvY3VzYWJs
ZU5vZGVJbkRpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OmRl
ZXBGaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKToKKyAgICAgICAgKiBwYWdlL1NwYXRpYWxO
YXZpZ2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzU2Nyb2xsYWJsZUNvbnRhaW5lck5v
ZGUpOgorICAgICAgICAqIHBhZ2UvU3BhdGlhbE5hdmlnYXRpb24uaDoKKyAgICAgICAgKFdlYkNv
cmU6OkZvY3VzQ2FuZGlkYXRlOjpGb2N1c0NhbmRpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpG
b2N1c0NhbmRpZGF0ZTo6aXNJblNjcm9sbGFibGVDb250YWluZXIpOgorCiAyMDEwLTA1LTE4ICBD
aHJpcyBKZXJkb25layAgPGNqZXJkb25la0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLgogCiAgICAgICAgIFJlZmFjdG9yZWQgRnJhbWVMb2FkZXI6OmlzRG9j
dW1lbnRTYW5kYm94ZWQoKSBmcm9tIGEgcHJpdmF0ZSBtZW1iZXIgZnVuY3Rpb24KICAgICAgICAg
dG8gYSBzdGF0aWMsIG5vbi1tZW1iZXIsIG5vbi1mcmllbmQgZnVuY3Rpb24uCiAKICAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5MTU3CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUvcGFnZS9Gb2N1c0Nv
bnRyb2xsZXIuY3BwCmluZGV4IDA4MjE5YTYuLjliZGVlNzkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xs
ZXIuY3BwCkBAIC0zMzcsMTEzICszMzcsMTY5IEBAIGJvb2wgRm9jdXNDb250cm9sbGVyOjphZHZh
bmNlRm9jdXNEaXJlY3Rpb25hbGx5KEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgS2V5Ym9hCiAg
ICAgRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKTsKICAgICBB
U1NFUlQoZWxlbWVudCk7CiAKICAgICBzY3JvbGxJbnRvVmlldyhlbGVtZW50KTsKICAgICBlbGVt
ZW50LT5mb2N1cyhmYWxzZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLS8vIEZJWE1FOiBNYWtl
IHRoaXMgbWV0aG9kIG1vcmUgbW9kdWxhciwgYW5kIHNpbXBsZXIgdG8gdW5kZXJzdGFuZCBhbmQg
bWFpbnRhaW4uCi1zdGF0aWMgdm9pZCB1cGRhdGVGb2N1c0NhbmRpZGF0ZUlmQ2xvc2VyKE5vZGUq
IGZvY3VzZWROb2RlLCBjb25zdCBGb2N1c0NhbmRpZGF0ZSYgY2FuZGlkYXRlLCBGb2N1c0NhbmRp
ZGF0ZSYgY2xvc2VzdCkKK3N0YXRpYyB2b2lkIHVwZGF0ZUZvY3VzQ2FuZGlkYXRlSW5UaGVTYW1l
Q29udGFpbmVyKGNvbnN0IEZvY3VzQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIEZvY3VzQ2FuZGlkYXRl
JiBjbG9zZXN0KQogewotICAgIGJvb2wgc2FtZURvY3VtZW50ID0gY2FuZGlkYXRlLmRvY3VtZW50
KCkgPT0gY2xvc2VzdC5kb2N1bWVudCgpOwotICAgIGlmIChzYW1lRG9jdW1lbnQpIHsKLSAgICAg
ICAgaWYgKGNsb3Nlc3QuYWxpZ25tZW50ID4gY2FuZGlkYXRlLmFsaWdubWVudAotICAgICAgICAg
fHwgKGNsb3Nlc3QucGFyZW50QWxpZ25tZW50ICYmIGNhbmRpZGF0ZS5hbGlnbm1lbnQgPiBjbG9z
ZXN0LnBhcmVudEFsaWdubWVudCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfSBlbHNlIGlm
IChjbG9zZXN0LmFsaWdubWVudCA+IGNhbmRpZGF0ZS5hbGlnbm1lbnQKLSAgICAgICAgICAgICYm
IChjbG9zZXN0LnBhcmVudEFsaWdubWVudCAmJiBjYW5kaWRhdGUuYWxpZ25tZW50ID4gY2xvc2Vz
dC5wYXJlbnRBbGlnbm1lbnQpKQorICAgIGlmIChjbG9zZXN0LmlzTnVsbCgpKSB7CisgICAgICAg
IGNsb3Nlc3QgPSBjYW5kaWRhdGU7CiAgICAgICAgIHJldHVybjsKLQotICAgIGlmIChjYW5kaWRh
dGUuYWxpZ25tZW50ICE9IE5vbmUKLSAgICAgfHwgKGNsb3Nlc3QucGFyZW50QWxpZ25tZW50ID49
IGNhbmRpZGF0ZS5hbGlnbm1lbnQKLSAgICAgJiYgY2xvc2VzdC5kb2N1bWVudCgpID09IGNhbmRp
ZGF0ZS5kb2N1bWVudCgpKSkgewotCi0gICAgICAgIC8vIElmIHdlIGFyZSBub3cgaW4gYW4gaGln
aGVyIHByZWNlZGVudCBjYXNlLCBsZXRzIHJlc2V0IHRoZSBjdXJyZW50IGNsb3Nlc3QncwotICAg
ICAgICAvLyBkaXN0YW5jZSBzbyB3ZSBmb3JjZSBpdCB0byBiZSBiaWdnZXIgdGhhbiBhbnkgcmVz
dWx0IHdlIHdpbGwgZ2V0IGZyb20KLSAgICAgICAgLy8gc3BhdGlhbERpc3RhbmNlKCkuCi0gICAg
ICAgIGlmIChjbG9zZXN0LmFsaWdubWVudCA8IGNhbmRpZGF0ZS5hbGlnbm1lbnQKLSAgICAgICAg
ICYmIGNsb3Nlc3QucGFyZW50QWxpZ25tZW50IDwgY2FuZGlkYXRlLmFsaWdubWVudCkKLSAgICAg
ICAgICAgIGNsb3Nlc3QuZGlzdGFuY2UgPSBtYXhEaXN0YW5jZSgpOwogICAgIH0KIAotICAgIC8v
IEJhaWwgb3V0IGlmIGNhbmRpZGF0ZSdzIGRpc3RhbmNlIGlzIGxhcmdlciB0aGFuIHRoYXQgb2Yg
dGhlIGNsb3Nlc3QgY2FuZGlkYXRlLgotICAgIGlmIChjYW5kaWRhdGUuZGlzdGFuY2UgPj0gY2xv
c2VzdC5kaXN0YW5jZSkKKyAgICBpZiAoY2FuZGlkYXRlLmFsaWdubWVudCA9PSBjbG9zZXN0LmFs
aWdubWVudCkgeworICAgICAgICBpZiAoY2FuZGlkYXRlLmRpc3RhbmNlIDwgY2xvc2VzdC5kaXN0
YW5jZSkKKyAgICAgICAgICAgIGNsb3Nlc3QgPSBjYW5kaWRhdGU7CiAgICAgICAgIHJldHVybjsK
KyAgICB9CiAKLSAgICBpZiAoY2xvc2VzdC5pc051bGwoKSkgeworICAgIGlmIChjYW5kaWRhdGUu
YWxpZ25tZW50ID4gY2xvc2VzdC5hbGlnbm1lbnQpCiAgICAgICAgIGNsb3Nlc3QgPSBjYW5kaWRh
dGU7Cit9CisKK3N0YXRpYyB2b2lkIHVwZGF0ZUZvY3VzQ2FuZGlkYXRlSWZDbG9zZXIoTm9kZSog
Zm9jdXNlZE5vZGUsIGNvbnN0IEZvY3VzQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIEZvY3VzQ2FuZGlk
YXRlJiBjbG9zZXN0KQoreworICAgIC8vIEZpcnN0LCBjaGVjayB0aGUgY29tbW9uIGNhc2U6IG5l
aXRoZXIgY2FuZGlkYXRlIG5vciBjbG9zZXN0IGFyZQorICAgIC8vIGluc2lkZSBzY3JvbGxhYmxl
IGNvbnRlbnQsIHRoZW4gbm8gbmVlZCB0byBjYXJlIGFib3V0IGVuY2xvc2luZ1Njcm9sbGFibGVC
b3gKKyAgICAvLyBoZXVyaXN0aWNzIG9yIHBhcmVudHtEaXN0YW5jZSxBbGlnbm1lbnR9LCBidXQg
b25seSBkaXN0YW5jZSBhbmQgYWxpZ25tZW50LgorICAgIGlmICghY2FuZGlkYXRlLmlzSW5TY3Jv
bGxhYmxlQ29udGFpbmVyKCkgJiYgIWNsb3Nlc3QuaXNJblNjcm9sbGFibGVDb250YWluZXIoKSkg
eworICAgICAgICB1cGRhdGVGb2N1c0NhbmRpZGF0ZUluVGhlU2FtZUNvbnRhaW5lcihjYW5kaWRh
dGUsIGNsb3Nlc3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gSWYgdGhlIGZv
Y3VzZWQgbm9kZSBhbmQgdGhlIGNhbmRhZGF0ZSBhcmUgaW4gdGhlIHNhbWUgZG9jdW1lbnQgYW5k
IGN1cnJlbnQKLSAgICAvLyBjbG9zZXN0IGNhbmRpZGF0ZSBpcyBub3QgaW4gYW4ge2l9ZnJhbWUg
dGhhdCBpcyBwcmVmZXJhYmxlIHRvIGdldCBmb2N1c2VkIC4uLgotICAgIGlmIChmb2N1c2VkTm9k
ZS0+ZG9jdW1lbnQoKSA9PSBjYW5kaWRhdGUuZG9jdW1lbnQoKQotICAgICAgICAmJiBjYW5kaWRh
dGUuZGlzdGFuY2UgPCBjbG9zZXN0LnBhcmVudERpc3RhbmNlKQotICAgICAgICBjbG9zZXN0ID0g
Y2FuZGlkYXRlOwotICAgIGVsc2UgaWYgKGZvY3VzZWROb2RlLT5kb2N1bWVudCgpICE9IGNhbmRp
ZGF0ZS5kb2N1bWVudCgpKSB7Ci0gICAgICAgIC8vIElmIHRoZSBmb2N1c2VkTm9kZSBpcyBpbiBh
biBpbm5lciBkb2N1bWVudCBhbmQgY2FuZGlkYXRlIGlzIGluIGEKLSAgICAgICAgLy8gZGlmZmVy
ZW50IGRvY3VtZW50LCB3ZSBvbmx5IGNvbnNpZGVyIHRvIGNoYW5nZSBmb2N1cyBpZiB0aGVyZSBp
cyBub3QKLSAgICAgICAgLy8gYW5vdGhlciBhbHJlYWR5IGdvb2QgZm9jdXNhYmxlIGNhbmRpZGF0
ZSBpbiB0aGUgc2FtZSBkb2N1bWVudCBhcyBmb2N1c2VkTm9kZS4KLSAgICAgICAgaWYgKCEoKGlz
SW5Sb290RG9jdW1lbnQoY2FuZGlkYXRlLm5vZGUpICYmICFpc0luUm9vdERvY3VtZW50KGZvY3Vz
ZWROb2RlKSkKLSAgICAgICAgICAgICYmIGZvY3VzZWROb2RlLT5kb2N1bWVudCgpID09IGNsb3Nl
c3QuZG9jdW1lbnQoKSkpCisgICAgYm9vbCBzYW1lQ29udGFpbmVyOworICAgIGlmIChjYW5kaWRh
dGUuZG9jdW1lbnQoKSAhPSBjbG9zZXN0LmRvY3VtZW50KCkpCisgICAgICAgIHNhbWVDb250YWlu
ZXIgPSBmYWxzZTsKKyAgICBlbHNlCisgICAgICAgIHNhbWVDb250YWluZXIgPSBjYW5kaWRhdGUu
ZW5jbG9zaW5nU2Nyb2xsYWJsZUJveCA9PSBjbG9zZXN0LmVuY2xvc2luZ1Njcm9sbGFibGVCb3g7
CisKKyAgICAvLyBTZWNvbmQsIGlmIGNhbmRpZGF0ZSBhbmQgY2xvc2VzdCBhcmUgaW4gdGhlIHNh
bWUgImNvbnRhaW5lciIgKGkuZS4ge2l9ZnJhbWUgb3IgYW55CisgICAgLy8gc2Nyb2xsYWJsZSBi
bG9jayBlbGVtZW50KSwgd2UgY2FuIGhhbmRsZSB0aGVtIGFzIGNvbW1vbiBjYXNlLgorICAgIGlm
IChzYW1lQ29udGFpbmVyKSB7CisgICAgICAgIHVwZGF0ZUZvY3VzQ2FuZGlkYXRlSW5UaGVTYW1l
Q29udGFpbmVyKGNhbmRpZGF0ZSwgY2xvc2VzdCk7CisgICAgICAgIHJldHVybjsKKworICAgIC8v
IExhc3QsIHdlIGFyZSBjb25zaWRlcmluZyBtb3ZpbmcgdG8gYSBjYW5kaWRhdGUgbG9jYXRlZCBp
biBhIGRpZmZlcmVudCBlbmNsb3NpbmcKKyAgICAvLyBzY3JvbGxhYmxlIGJveCB0aGFuIGNsb3Nl
c3QuCisgICAgfSBlbHNlIHsKKyAgICAgICAgYm9vbCBpc0luSW5uZXJEb2N1bWVudCA9ICFpc0lu
Um9vdERvY3VtZW50KGZvY3VzZWROb2RlKTsKKworICAgICAgICBib29sIHNhbWVDb250YWluZXJB
c0NhbmRpZGF0ZSA9IGlzSW5Jbm5lckRvY3VtZW50ID8gZm9jdXNlZE5vZGUtPmRvY3VtZW50KCkg
PT0gY2FuZGlkYXRlLmRvY3VtZW50KCkgOgorICAgICAgICAgICAgZm9jdXNlZE5vZGUtPmlzRGVz
Y2VuZGFudE9mKGNhbmRpZGF0ZS5lbmNsb3NpbmdTY3JvbGxhYmxlQm94KTsKKworICAgICAgICBi
b29sIHNhbWVDb250YWluZXJBc0Nsb3Nlc3QgPSBpc0luSW5uZXJEb2N1bWVudCA/IGZvY3VzZWRO
b2RlLT5kb2N1bWVudCgpID09IGNsb3Nlc3QuZG9jdW1lbnQoKSA6CisgICAgICAgICAgICBmb2N1
c2VkTm9kZS0+aXNEZXNjZW5kYW50T2YoY2xvc2VzdC5lbmNsb3NpbmdTY3JvbGxhYmxlQm94KTsK
KworICAgICAgICAvLyBzYW1lQ29udGFpbmVyQXNDYW5kaWRhdGUgYW5kIHNhbWVDb250YWluZXJB
c0Nsb3Nlc3QgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4KKyAgICAgICAgQVNTRVJUKCEoc2FtZUNv
bnRhaW5lckFzQ2FuZGlkYXRlICYmIHNhbWVDb250YWluZXJBc0Nsb3Nlc3QpKTsKKworICAgICAg
ICBpZiAoc2FtZUNvbnRhaW5lckFzQ2FuZGlkYXRlKSB7CiAgICAgICAgICAgICBjbG9zZXN0ID0g
Y2FuZGlkYXRlOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KHNhbWVDb250YWluZXJBc0Nsb3Nlc3QpIHsKKyAgICAgICAgICAgIC8vIE5vdGhpbmcgdG8gYmUg
ZG9uZS4KKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vICMjIyAh
c2FtZUNvbnRhaW5lckFzQ2FuZGlkYXRlICYmICFzYW1lQ29udGFpbmVyQXNDbG9zZXN0CisgICAg
ICAgIC8vIElmIGRpc3RhbmNlIGlzIHNob3J0ZXIsIGFuZCB3ZSBhcmUgdGFsa2luZyBhYm91dCBz
Y3JvbGxhYmxlIGNvbnRhaW5lciwKKyAgICAgICAgLy8gbGV0cyBjb21wYXJlIHBhcmVudCBkaXN0
YW5jZSBhbmQgYWxpZ25tZW50IGJlZm9yZSBhbnl0aGluZy4KKyAgICAgICAgaWYgKGNhbmRpZGF0
ZS5kaXN0YW5jZSA8IGNsb3Nlc3QuZGlzdGFuY2UpIHsKKyAgICAgICAgICAgIGlmIChjYW5kaWRh
dGUuYWxpZ25tZW50ID49IGNsb3Nlc3QucGFyZW50QWxpZ25tZW50CisgICAgICAgICAgICAgfHwg
Y2FuZGlkYXRlLnBhcmVudEFsaWdubWVudCA9PSBjbG9zZXN0LnBhcmVudEFsaWdubWVudCkgewor
ICAgICAgICAgICAgICAgIGNsb3Nlc3QgPSBjYW5kaWRhdGU7CisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgIH0gZWxzZSBpZiAoY2FuZGlkYXRlLnBhcmVu
dERpc3RhbmNlIDwgY2xvc2VzdC5kaXN0YW5jZSkgeworICAgICAgICAgICAgaWYgKGNhbmRpZGF0
ZS5wYXJlbnRBbGlnbm1lbnQgPj0gY2xvc2VzdC5hbGlnbm1lbnQpIHsKKyAgICAgICAgICAgICAg
ICBjbG9zZXN0ID0gY2FuZGlkYXRlOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQogICAgIH0KIH0KIAogdm9pZCBGb2N1c0NvbnRyb2xsZXI6OmZpbmRG
b2N1c2FibGVOb2RlSW5EaXJlY3Rpb24oTm9kZSogb3V0ZXIsIE5vZGUqIGZvY3VzZWROb2RlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9jdXNE
aXJlY3Rpb24gZGlyZWN0aW9uLCBLZXlib2FyZEV2ZW50KiBldmVudCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvY3VzQ2FuZGlkYXRlJiBjbG9z
ZXN0Rm9jdXNDYW5kaWRhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBGb2N1c0NhbmRpZGF0ZSYgY2FuZGlkYXRlUGFyZW50KQogewog
ICAgIEFTU0VSVChvdXRlcik7CiAgICAgQVNTRVJUKGNhbmRpZGF0ZVBhcmVudC5pc051bGwoKQog
ICAgICAgICB8fCBjYW5kaWRhdGVQYXJlbnQubm9kZS0+aGFzVGFnTmFtZShmcmFtZVRhZykKLSAg
ICAgICAgfHwgY2FuZGlkYXRlUGFyZW50Lm5vZGUtPmhhc1RhZ05hbWUoaWZyYW1lVGFnKSk7Cisg
ICAgICAgIHx8IGNhbmRpZGF0ZVBhcmVudC5ub2RlLT5oYXNUYWdOYW1lKGlmcmFtZVRhZykKKyAg
ICAgICAgfHwgaXNTY3JvbGxhYmxlQ29udGFpbmVyTm9kZShjYW5kaWRhdGVQYXJlbnQubm9kZSkp
OwogCiAgICAgLy8gV2FsayBhbGwgdGhlIGNoaWxkIG5vZGVzIGFuZCB1cGRhdGUgY2xvc2VzdEZv
Y3VzQ2FuZGlkYXRlIGlmIHdlIGZpbmQgYSBuZWFyZXIgbm9kZS4KICAgICBOb2RlKiBjYW5kaWRh
dGUgPSBvdXRlcjsKICAgICB3aGlsZSAoY2FuZGlkYXRlKSB7CisKICAgICAgICAgLy8gSW5uZXIg
ZG9jdW1lbnRzIGNhc2UuCisgICAgICAgIGlmIChjYW5kaWRhdGUtPmlzRnJhbWVPd25lckVsZW1l
bnQoKSkgeworICAgICAgICAgICAgZGVlcEZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24oY2Fu
ZGlkYXRlLCBmb2N1c2VkTm9kZSwgZGlyZWN0aW9uLCBldmVudCwgY2xvc2VzdEZvY3VzQ2FuZGlk
YXRlKTsKIAotICAgICAgICBpZiAoY2FuZGlkYXRlLT5pc0ZyYW1lT3duZXJFbGVtZW50KCkpCisg
ICAgICAgIC8vIFNjcm9sbGFibGUgYmxvY2sgZWxlbWVudHMgKGUuZy4gPGRpdj4sIGV0YykgY2Fz
ZS4KKyAgICAgICAgfSBlbHNlIGlmIChpc1Njcm9sbGFibGVDb250YWluZXJOb2RlKGNhbmRpZGF0
ZSkpIHsKICAgICAgICAgICAgIGRlZXBGaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKGNhbmRp
ZGF0ZSwgZm9jdXNlZE5vZGUsIGRpcmVjdGlvbiwgZXZlbnQsIGNsb3Nlc3RGb2N1c0NhbmRpZGF0
ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGNhbmRpZGF0ZSAhPSBmb2N1c2VkTm9kZSAmJiBjYW5kaWRh
dGUtPmlzS2V5Ym9hcmRGb2N1c2FibGUoZXZlbnQpKSB7CisgICAgICAgICAgICBjYW5kaWRhdGUg
PSBjYW5kaWRhdGUtPnRyYXZlcnNlTmV4dFNpYmxpbmcoKTsKKyAgICAgICAgICAgIGNvbnRpbnVl
OworCisgICAgICAgIH0gZWxzZSBpZiAoY2FuZGlkYXRlICE9IGZvY3VzZWROb2RlICYmIGNhbmRp
ZGF0ZS0+aXNLZXlib2FyZEZvY3VzYWJsZShldmVudCkpIHsKICAgICAgICAgICAgIEZvY3VzQ2Fu
ZGlkYXRlIGN1cnJlbnRGb2N1c0NhbmRpZGF0ZShjYW5kaWRhdGUpOwogCisgICAgICAgICAgICAv
LyBUaGVyZSBhcmUgdHdvIHdheXMgdG8gaWRlbnRpZnkgd2UgYXJlIGluIGEgcmVjdXJzaXZlIGNh
bGwgZnJvbSBkZWVwRmluZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbgorICAgICAgICAgICAgLy8g
KGkuZS4gcHJvY2Vzc2luZyBhbiBlbGVtZW50IGluIGFuIGlmcmFtZSwgZnJhbWUgb3IgYSBzY3Jv
bGxhYmxlIGJsb2NrIGVsZW1lbnQpOgorCisgICAgICAgICAgICAvLyAxKSBJZiBjYW5kaWRhdGVQ
YXJlbnQgaXMgbm90IG51bGwsIGFuZCBpdCBob2xkcyB0aGUgZGlzdGFuY2UgYW5kIGFsaWdubWVu
dCBkYXRhIG9mIHRoZQorICAgICAgICAgICAgLy8gcGFyZW50IGNvbnRhaW5lciBlbGVtZW50IGl0
c2VsZi4KKyAgICAgICAgICAgIGlmICghY2FuZGlkYXRlUGFyZW50LmlzTnVsbCgpKSB7CisgICAg
ICAgICAgICAgICAgY3VycmVudEZvY3VzQ2FuZGlkYXRlLnBhcmVudEFsaWdubWVudCA9IGNhbmRp
ZGF0ZVBhcmVudC5hbGlnbm1lbnQ7CisgICAgICAgICAgICAgICAgY3VycmVudEZvY3VzQ2FuZGlk
YXRlLnBhcmVudERpc3RhbmNlID0gY2FuZGlkYXRlUGFyZW50LmRpc3RhbmNlOworICAgICAgICAg
ICAgICAgIGN1cnJlbnRGb2N1c0NhbmRpZGF0ZS5lbmNsb3NpbmdTY3JvbGxhYmxlQm94ID0gY2Fu
ZGlkYXRlUGFyZW50Lm5vZGU7CisKKyAgICAgICAgICAgIC8vIDIpIFBhcmVudCBvZiBvdXRlciBp
cyBlaXRoZXI6CisgICAgICAgICAgICAvLyAqIDxmcmFtZT4gb3IgPGlmcmFtZT47CisgICAgICAg
ICAgICAvLyAqIG9yIGFueSBvdGhlciBzY3JvbGxhYmxlIGJsb2NrIGVsZW1lbnQuCisgICAgICAg
ICAgICB9IGVsc2UgaWYgKCFpc0luUm9vdERvY3VtZW50KG91dGVyKSkgeworICAgICAgICAgICAg
ICAgIGlmIChEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KG91dGVy
LT5wYXJlbnQoKSkpCisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRGb2N1c0NhbmRpZGF0ZS5l
bmNsb3NpbmdTY3JvbGxhYmxlQm94ID0gc3RhdGljX2Nhc3Q8Tm9kZSo+KGRvY3VtZW50LT5vd25l
ckVsZW1lbnQoKSk7CisKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNTY3JvbGxhYmxlQ29udGFp
bmVyTm9kZShvdXRlci0+cGFyZW50KCkpKQorICAgICAgICAgICAgICAgIGN1cnJlbnRGb2N1c0Nh
bmRpZGF0ZS5lbmNsb3NpbmdTY3JvbGxhYmxlQm94ID0gb3V0ZXItPnBhcmVudCgpOworCiAgICAg
ICAgICAgICAvLyBHZXQgZGlzdGFuY2UgYW5kIGFsaWdubWVudCBmcm9tIGN1cnJlbnQgY2FuZGlk
YXRlLgogICAgICAgICAgICAgZGlzdGFuY2VEYXRhRm9yTm9kZShkaXJlY3Rpb24sIGZvY3VzZWRO
b2RlLCBjdXJyZW50Rm9jdXNDYW5kaWRhdGUpOwogCiAgICAgICAgICAgICAvLyBCYWlsIG91dCBp
ZiBkaXN0YW5jZSBpcyBtYXhpbXVtLgogICAgICAgICAgICAgaWYgKGN1cnJlbnRGb2N1c0NhbmRp
ZGF0ZS5kaXN0YW5jZSA9PSBtYXhEaXN0YW5jZSgpKSB7CiAgICAgICAgICAgICAgICAgY2FuZGlk
YXRlID0gY2FuZGlkYXRlLT50cmF2ZXJzZU5leHROb2RlKG91dGVyLT5wYXJlbnQoKSk7CiAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIC8vIElm
IGNhbmRpZGF0ZVBhcmVudCBpcyBub3QgbnVsbCwgaXQgbWVhbnMgdGhhdCB3ZSBhcmUgaW4gYSBy
ZWN1cnNpdmUgY2FsbAotICAgICAgICAgICAgLy8gZnJvbSBkZWVwRmluZUZvY3VzYWJsZU5vZGVJ
bkRpcmVjdGlvbiAoaS5lLiBwcm9jZXNzaW5nIGFuIGVsZW1lbnQgaW4gYW4gaWZyYW1lKSwKLSAg
ICAgICAgICAgIC8vIGFuZCBob2xkcyB0aGUgZGlzdGFuY2UgYW5kIGFsaWdubWVudCBkYXRhIG9m
IHRoZSBpZnJhbWUgZWxlbWVudCBpdHNlbGYuCi0gICAgICAgICAgICBpZiAoIWNhbmRpZGF0ZVBh
cmVudC5pc051bGwoKSkgewotICAgICAgICAgICAgICAgIGN1cnJlbnRGb2N1c0NhbmRpZGF0ZS5w
YXJlbnRBbGlnbm1lbnQgPSBjYW5kaWRhdGVQYXJlbnQuYWxpZ25tZW50OwotICAgICAgICAgICAg
ICAgIGN1cnJlbnRGb2N1c0NhbmRpZGF0ZS5wYXJlbnREaXN0YW5jZSA9IGNhbmRpZGF0ZVBhcmVu
dC5kaXN0YW5jZTsKLSAgICAgICAgICAgIH0KLQogICAgICAgICAgICAgdXBkYXRlRm9jdXNDYW5k
aWRhdGVJZkNsb3Nlcihmb2N1c2VkTm9kZSwgY3VycmVudEZvY3VzQ2FuZGlkYXRlLCBjbG9zZXN0
Rm9jdXNDYW5kaWRhdGUpOwogICAgICAgICB9CiAKICAgICAgICAgY2FuZGlkYXRlID0gY2FuZGlk
YXRlLT50cmF2ZXJzZU5leHROb2RlKG91dGVyLT5wYXJlbnQoKSk7CiAgICAgfQogfQogCiB2b2lk
IEZvY3VzQ29udHJvbGxlcjo6ZGVlcEZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24oTm9kZSog
Y29udGFpbmVyLCBOb2RlKiBmb2N1c2VkTm9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIEtl
eWJvYXJkRXZlbnQqIGV2ZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEZvY3VzQ2FuZGlkYXRlJiBjbG9zZXN0Rm9jdXNDYW5kaWRhdGUp
CiB7Ci0gICAgQVNTRVJUKGNvbnRhaW5lci0+aGFzVGFnTmFtZShmcmFtZVRhZykgfHwgY29udGFp
bmVyLT5oYXNUYWdOYW1lKGlmcmFtZVRhZykpOworICAgIEFTU0VSVChjb250YWluZXItPmhhc1Rh
Z05hbWUoZnJhbWVUYWcpCisgICAgICAgIHx8IGNvbnRhaW5lci0+aGFzVGFnTmFtZShpZnJhbWVU
YWcpCisgICAgICAgIHx8IGlzU2Nyb2xsYWJsZUNvbnRhaW5lck5vZGUoY29udGFpbmVyKSk7CiAK
ICAgICAvLyBUcmFjayBpZiBmb2N1c2VkTm9kZSBpcyBhIGRlc2NlbmRhbnQgb2YgdGhlIGN1cnJl
bnQgY29udGFpbmVyIG5vZGUgYmVpbmcgcHJvY2Vzc2VkLgogICAgIGJvb2wgZGVzY2VuZGFudE9m
Q29udGFpbmVyID0gZmFsc2U7CiAgICAgTm9kZSogZmlyc3RDaGlsZCA9IDA7CiAKICAgICAvLyBJ
ZnJhbWUgb3IgRnJhbWUuCiAgICAgaWYgKGNvbnRhaW5lci0+aGFzVGFnTmFtZShmcmFtZVRhZykg
fHwgY29udGFpbmVyLT5oYXNUYWdOYW1lKGlmcmFtZVRhZykpIHsKIApAQCAtNDUzLDE2ICs1MDks
MjEgQEAgdm9pZCBGb2N1c0NvbnRyb2xsZXI6OmRlZXBGaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0
aW9uKE5vZGUqIGNvbnRhaW5lciwgTm9kZSogZm8KIAogICAgICAgICBEb2N1bWVudCogaW5uZXJE
b2N1bWVudCA9IG93bmVyLT5jb250ZW50RnJhbWUoKS0+ZG9jdW1lbnQoKTsKICAgICAgICAgaWYg
KCFpbm5lckRvY3VtZW50KQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGRlc2NlbmRh
bnRPZkNvbnRhaW5lciA9IGlubmVyRG9jdW1lbnQgPT0gZm9jdXNlZE5vZGUtPmRvY3VtZW50KCk7
CiAgICAgICAgIGZpcnN0Q2hpbGQgPSBpbm5lckRvY3VtZW50LT5maXJzdENoaWxkKCk7CiAKKyAg
ICAvLyBTY3JvbGxhYmxlIGJsb2NrIGVsZW1lbnRzIChlLmcuIDxkaXY+LCBldGMpCisgICAgfSBl
bHNlIGlmIChpc1Njcm9sbGFibGVDb250YWluZXJOb2RlKGNvbnRhaW5lcikpIHsKKworICAgICAg
ICBmaXJzdENoaWxkID0gY29udGFpbmVyLT5maXJzdENoaWxkKCk7CisgICAgICAgIGRlc2NlbmRh
bnRPZkNvbnRhaW5lciA9IGZvY3VzZWROb2RlLT5pc0Rlc2NlbmRhbnRPZihjb250YWluZXIpOwog
ICAgIH0KIAogICAgIGlmIChkZXNjZW5kYW50T2ZDb250YWluZXIpIHsKICAgICAgICAgZmluZEZv
Y3VzYWJsZU5vZGVJbkRpcmVjdGlvbihmaXJzdENoaWxkLCBmb2N1c2VkTm9kZSwgZGlyZWN0aW9u
LCBldmVudCwgY2xvc2VzdEZvY3VzQ2FuZGlkYXRlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIC8vIENoZWNrIGlmIHRoZSBjdXJyZW50IGNvbnRhaW5lciBlbGVtZW50IGl0c2VsZiBp
cyBhIGdvb2QgY2FuZGlkYXRlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmln
YXRpb24uY3BwIGIvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcAppbmRleCBkNDMz
MzBjLi5iMzVjNjAyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24u
Y3BwCisrKyBiL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAKQEAgLTUyNCw5ICs1
MjQsMjEgQEAgc3RhdGljIGJvb2wgY2hlY2tOZWdhdGl2ZUNvb3Jkc0Zvck5vZGUoTm9kZSogbm9k
ZSwgY29uc3QgSW50UmVjdCYgY3VyUmVjdCkKICAgICAgICAgICAgIGNhbkJlU2Nyb2xsZWQgPSB0
cnVlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CiAKICAgICByZXR1cm4g
Y2FuQmVTY3JvbGxlZDsKIH0KIAorYm9vbCBpc1Njcm9sbGFibGVDb250YWluZXJOb2RlKE5vZGUq
IG5vZGUpCit7CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBp
ZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCkpCisgICAgICAgIHJl
dHVybiAocmVuZGVyZXItPmlzQm94KCkgJiYgdG9SZW5kZXJCb3gocmVuZGVyZXIpLT5jYW5CZVNj
cm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEoKQorICAgICAgICAgICAgICYmIG5vZGUtPmhhc0No
aWxkTm9kZXMoKSAmJiAhbm9kZS0+aXNEb2N1bWVudE5vZGUoKSk7CisKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFn
ZS9TcGF0aWFsTmF2aWdhdGlvbi5oIGIvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmgK
aW5kZXggZDM4ZmIwOS4uMjlhNTI3ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1NwYXRpYWxO
YXZpZ2F0aW9uLmgKKysrIGIvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmgKQEAgLTky
LDQzICs5Miw0OCBAQCBlbnVtIFJlY3RzQWxpZ25tZW50IHsKICAgICBOb25lID0gMCwKICAgICBQ
YXJ0aWFsLAogICAgIEZ1bGwKIH07CiAKIHN0cnVjdCBGb2N1c0NhbmRpZGF0ZSB7CiAgICAgRm9j
dXNDYW5kaWRhdGUoKQogICAgICAgICA6IG5vZGUoMCkKKyAgICAgICAgLCBlbmNsb3NpbmdTY3Jv
bGxhYmxlQm94KDApCiAgICAgICAgICwgZGlzdGFuY2UobWF4RGlzdGFuY2UoKSkKICAgICAgICAg
LCBwYXJlbnREaXN0YW5jZShtYXhEaXN0YW5jZSgpKQogICAgICAgICAsIGFsaWdubWVudChOb25l
KQogICAgICAgICAsIHBhcmVudEFsaWdubWVudChOb25lKQogICAgIHsKICAgICB9CiAKICAgICBG
b2N1c0NhbmRpZGF0ZShOb2RlKiBuKQogICAgICAgICA6IG5vZGUobikKKyAgICAgICAgLCBlbmNs
b3NpbmdTY3JvbGxhYmxlQm94KDApCiAgICAgICAgICwgZGlzdGFuY2UobWF4RGlzdGFuY2UoKSkK
ICAgICAgICAgLCBwYXJlbnREaXN0YW5jZShtYXhEaXN0YW5jZSgpKQogICAgICAgICAsIGFsaWdu
bWVudChOb25lKQogICAgICAgICAsIHBhcmVudEFsaWdubWVudChOb25lKQogICAgIHsKICAgICB9
CiAKICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFub2RlOyB9CisgICAgYm9vbCBp
c0luU2Nyb2xsYWJsZUNvbnRhaW5lcigpIGNvbnN0IHsgcmV0dXJuIG5vZGUgJiYgZW5jbG9zaW5n
U2Nyb2xsYWJsZUJveDsgfQogICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJu
IG5vZGUgPyBub2RlLT5kb2N1bWVudCgpIDogMDsgfQogCiAgICAgTm9kZSogbm9kZTsKKyAgICBO
b2RlKiBlbmNsb3NpbmdTY3JvbGxhYmxlQm94OwogICAgIGxvbmcgbG9uZyBkaXN0YW5jZTsKICAg
ICBsb25nIGxvbmcgcGFyZW50RGlzdGFuY2U7CiAgICAgUmVjdHNBbGlnbm1lbnQgYWxpZ25tZW50
OwogICAgIFJlY3RzQWxpZ25tZW50IHBhcmVudEFsaWdubWVudDsKIH07CiAKIHZvaWQgZGlzdGFu
Y2VEYXRhRm9yTm9kZShGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIE5vZGUqIHN0YXJ0LCBGb2N1
c0NhbmRpZGF0ZSYgY2FuZGlkYXRlKTsKIGJvb2wgc2Nyb2xsSW5EaXJlY3Rpb24oRnJhbWUqLCBG
b2N1c0RpcmVjdGlvbik7CiB2b2lkIHNjcm9sbEludG9WaWV3KEVsZW1lbnQqKTsKIGJvb2wgaGFz
T2Zmc2NyZWVuUmVjdChOb2RlKik7CiBib29sIGlzSW5Sb290RG9jdW1lbnQoTm9kZSopOworYm9v
bCBpc1Njcm9sbGFibGVDb250YWluZXJOb2RlKE5vZGUqKTsKIAogfSAvLyBuYW1zcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBTcGF0aWFsTmF2aWdhdGlvbl9oCi0tIAoxLjYuMy4zCgo=
</data>
<flag name="review"
          id="40904"
          type_id="1"
          status="-"
          setter="kenneth"
    />
    <flag name="commit-queue"
          id="40905"
          type_id="3"
          status="-"
          setter="tonikitoo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56880</attachid>
            <date>2010-05-24 06:36:58 -0700</date>
            <delta_ts>2010-05-24 06:47:09 -0700</delta_ts>
            <desc>patch v5.2</desc>
            <filename>0001-Spatial-Navigation-make-it-work-with-focusable-eleme.patch</filename>
            <type>text/plain</type>
            <size>29922</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSA0MDIwYmUzNzQxNmU3YzgyOGI1M2U3MjRmNjEzMzM1MTBkZWY1NmUwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4K
RGF0ZTogTW9uLCAxNyBNYXkgMjAxMCAxMTozNzowNyAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIFNw
YXRpYWwgTmF2aWdhdGlvbjogbWFrZSBpdCB3b3JrIHdpdGggZm9jdXNhYmxlIGVsZW1lbnRzIGlu
IG92ZXJmbG93IGNvbnRlbnQKIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zNjQ2MwoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuClBhdGNoIGJ1IEFudG9uaW8gR29t
ZXMgPHRvbmlraXRvb0B3ZWJraXQub3JnPgoKV2ViQ29yZToKClRoaXMgcGF0Y2ggYWRkcmVzc2Vz
IHRoZSBwcm9ibGVtIHdpdGggU3BhdGlhbCBOYXZpZ2F0aW9uLiBJdCBjdXJyZW50bHkgZG9lcyBu
b3QKcHJvcGVybHkgdHJhdmVyc2Ugc2Nyb2xsYWJsZSBjb250ZW50cywgaW5jbHVkaW5nIHNjcm9s
bGFibGUgZGl2J3MuIEZvciB0aGlzIHRvIHdvcmssCmEgbmV3IGNsYXNzIG1lbWJlciBjYWxsZWQg
c2Nyb2xsYWJsZUVuY2xvc2luZ0JveCB3YXMgaW50cm9kdWNlZCB0byBGb2N1c0NhbmRpZGF0ZSBj
bGFzcyB3aGljaAprZWVwcyB0cmFjayBvZiB0aGUgY3VycmVudCBzY3JvbGxhYmxlIGJveCBOb2Rl
IHdyYXBwaW5nIGEgRm9jdXNDYW5kaWRhdGUuCgpUbyBtYWtlIHVzZSBvZiBlbmNsb3NpbmdTY3Jv
bGxhYmxlQm94IG9mIEZvY3VzQ2FuZGlkYXRlLCB0aGUgRE9NIHRyYXZlcnNhbCByb3V0aW5lCihG
b2N1c0NvbnRyb2xsZXI6OmZpbmROZXh0Rm9jdXNhYmxlSW5EaXJlY3Rpb24pIHdhcyBjaGFuZ2Vk
IGFzIGZvbGxvd3M6IHdoZW4gaXQKZW5jb3VudGVycyBhIHNjcm9sbGFibGUgTm9kZSwgZWFjaCBm
b2N1c2FibGUgbm9kZSB3aGljaCBpcyAnaW5uZXInIGtlZXBzIHRyYWNrIG9mCnRoZSBjb250YWlu
ZXIgcmVmZXJlbmNlLiBCeSB0aGUgdGltZSBhIHNpYmxpbmcgb2YgdGhlIHNjcm9sbGFibGUgTm9k
ZSBpcyBlbmNvdW50ZXJlZCwKdGhlcmUgaXMgbm8gbmVlZCB0byB0cmFjayB0aGlzIHJlZmVyZW5j
ZSBhbnkgbW9yZSBhbmQgdGhlIHRyYXZlcnNhbCBhbGdvcml0aG0gY29udGludWVzCm5vcm1hbGx5
LgoKVGhlIGNvbW1vbiBjYXNlIGlzIG9idmlvdXNseSB0aGF0IHRoZXJlIGlzIG5vIHNjcm9sbGFi
bGUgY29udGFpbmVyIHdyYXBwaW5nIGl0LgoKdXBkYXRlRm9jdXNDYW5kaWRpdGVJZkNsb3NlciBs
b2dpYyB3YXMgYWxzbyBhZGFwdGVkIHRvIGZpdCB0aGUgbmVlZCBvZiB0aGUKbmV3bHkgaW50cm9k
dWNlZCBlbmNsb3NpbmdTY3JvbGxhYmxlQm94IGNsYXNzIG1lbWJlciwgZ2V0dGluZyBzaW1wbGVy
IGFuZCBtb3JlCmVhc2lseSBtYWludGFpbmFibGUuCgpUZXN0czogZmFzdC9ldmVudHMvc3BhdGlh
bC1uYXZpZ2F0aW9uL3NuYXYtZGl2LXNjcm9sbGFibGUtYnV0LXdpdGhvdXQtZm9jdXNhYmxlLWNv
bnRlbnQuaHRtbAogICAgICAgZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtY2xp
cHBlZC1vdmVyZmxvdy1jb250ZW50Lmh0bWwKCiogcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwOgoo
V2ViQ29yZTo6dXBkYXRlRm9jdXNDYW5kaWRhdGVJblRoZVNhbWVDb250YWluZXIpOgooV2ViQ29y
ZTo6dXBkYXRlRm9jdXNDYW5kaWRhdGVJZkNsb3Nlcik6CihXZWJDb3JlOjpGb2N1c0NvbnRyb2xs
ZXI6OmZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24pOgooV2ViQ29yZTo6Rm9jdXNDb250cm9s
bGVyOjpkZWVwRmluZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbik6CiogcGFnZS9TcGF0aWFsTmF2
aWdhdGlvbi5jcHA6CihXZWJDb3JlOjppc1Njcm9sbGFibGVDb250YWluZXJOb2RlKToKKiBwYWdl
L1NwYXRpYWxOYXZpZ2F0aW9uLmg6CihXZWJDb3JlOjpGb2N1c0NhbmRpZGF0ZTo6Rm9jdXNDYW5k
aWRhdGUpOgooV2ViQ29yZTo6Rm9jdXNDYW5kaWRhdGU6OmlzSW5TY3JvbGxhYmxlQ29udGFpbmVy
KToKCkxheW91dFRlc3RzOgoKKiBmYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1k
aXYtc2Nyb2xsYWJsZS1idXQtd2l0aG91dC1mb2N1c2FibGUtY29udGVudC1leHBlY3RlZC50eHQ6
IEFkZGVkLgoqIGZhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWRpdi1zY3JvbGxh
YmxlLWJ1dC13aXRob3V0LWZvY3VzYWJsZS1jb250ZW50Lmh0bWw6IEFkZGVkLgoqIGZhc3QvZXZl
bnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWNsaXBwZWQtb3ZlcmZsb3ctY29udGVudC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgoqIGZhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWNs
aXBwZWQtb3ZlcmZsb3ctY29udGVudC5odG1sOiBBZGRlZC4KLS0tCiBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTIgKysKIC4uLi9zbmF2LWNs
aXBwZWQtb3ZlcmZsb3dlZC1jb250ZW50LWV4cGVjdGVkLnR4dCAgIHwgICAyNCArKysKIC4uLi9z
bmF2LWNsaXBwZWQtb3ZlcmZsb3dlZC1jb250ZW50Lmh0bWwgICAgICAgICAgIHwgICA4NSArKysr
KysrKysrKwogLi4uYWJsZS1idXQtd2l0aG91dC1mb2N1c2FibGUtY29udGVudC1leHBlY3RlZC50
eHQgfCAgIDM1ICsrKysrCiAuLi52LXNjcm9sbGFibGUtYnV0LXdpdGhvdXQtZm9jdXNhYmxlLWNv
bnRlbnQuaHRtbCB8ICAgODAgKysrKysrKysrKwogV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDM5ICsrKysrCiBXZWJDb3JlL3BhZ2UvRm9jdXND
b250cm9sbGVyLmNwcCAgICAgICAgICAgICAgICAgICB8ICAxNTMgKysrKysrKysrKysrKystLS0t
LS0KIFdlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAgICAgICAgICAgICAgICAgIHwg
ICAzNiArKysrKy0KIFdlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5oICAgICAgICAgICAg
ICAgICAgIHwgICAgNSArCiA5IGZpbGVzIGNoYW5nZWQsIDQyMiBpbnNlcnRpb25zKCspLCA0NyBk
ZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9z
cGF0aWFsLW5hdmlnYXRpb24vc25hdi1jbGlwcGVkLW92ZXJmbG93ZWQtY29udGVudC1leHBlY3Rl
ZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zcGF0aWFs
LW5hdmlnYXRpb24vc25hdi1jbGlwcGVkLW92ZXJmbG93ZWQtY29udGVudC5odG1sCiBjcmVhdGUg
bW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3Nu
YXYtZGl2LXNjcm9sbGFibGUtYnV0LXdpdGhvdXQtZm9jdXNhYmxlLWNvbnRlbnQtZXhwZWN0ZWQu
dHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3BhdGlhbC1u
YXZpZ2F0aW9uL3NuYXYtZGl2LXNjcm9sbGFibGUtYnV0LXdpdGhvdXQtZm9jdXNhYmxlLWNvbnRl
bnQuaHRtbAoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCA0ZWM4MmQ3Li44OTBiYmEwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDggKzEsMjAgQEAK
KzIwMTAtMDUtMTQgIEFudG9uaW8gR29tZXMgIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTcGF0aWFsIE5hdmln
YXRpb246IG1ha2UgaXQgd29yayB3aXRoIGZvY3VzYWJsZSBlbGVtZW50cyBpbiBvdmVyZmxvdyBj
b250ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
NjQ2MworCisgICAgICAgICogZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtZGl2
LXNjcm9sbGFibGUtYnV0LXdpdGhvdXQtZm9jdXNhYmxlLWNvbnRlbnQtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1kaXYt
c2Nyb2xsYWJsZS1idXQtd2l0aG91dC1mb2N1c2FibGUtY29udGVudC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1jbGlwcGVkLW92ZXJm
bG93LWNvbnRlbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9z
cGF0aWFsLW5hdmlnYXRpb24vc25hdi1jbGlwcGVkLW92ZXJmbG93LWNvbnRlbnQuaHRtbDogQWRk
ZWQuCisKIDIwMTAtMDUtMjMgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBOb3QgcmV2aWV3ZWQsIHVwZGF0aW5nIHRlc3RfZXhwZWN0YXRpb25zLnR4dAogCiAgICAg
ICAgIFtjaHJvbWl1bV0gcmVtb3ZlIGVkaXRpbmcvcGFzdGVib2FyZC9kcm9wLWxpbmsuaHRtbCBm
cm9tIHRlc3RfZXhwZWN0YXRpb25zLnR4dAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Mzk1ODAKIAogICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3Rl
c3RfZXhwZWN0YXRpb25zLnR4dDoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWNsaXBwZWQtb3ZlcmZsb3dlZC1jb250ZW50LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2
LWNsaXBwZWQtb3ZlcmZsb3dlZC1jb250ZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5iMjhiMDllCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtY2xpcHBlZC1vdmVyZmxvd2Vk
LWNvbnRlbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjQgQEAKK1RoYXQgaXMgaXMgYSBub3Jt
YWwgbGlua18xLgorCitUaGlzIGlzIGEgc2Nyb2xsYWJsZSBEaXYgY3JlYXRlZCB3aXRoIHRoZSBD
U1MgcHJvcGVydHkgb3ZlcmZsb3cuCisKK0l0IGhhcyBhIHZpc2libGUgbGlua18yLgorCisKKwor
CisKKworCisuLi4gYW5kIGFuIG92ZXJmbG93ZWQgbGluayBsaWtlIGxpbmtfMy4KKworQW5kIHRo
aXMgaXMgYW5vdGhlciBub3JtYWwgbGlua180LgorCitQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1l
bnQuZ2V0QXR0cmlidXRlKCJpZCIpIGlzICIxIgorUEFTUyBkb2N1bWVudC5hY3RpdmVFbGVtZW50
LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAiMSIKK1BBU1MgZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5n
ZXRBdHRyaWJ1dGUoImlkIikgaXMgIjIiCitQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuZ2V0
QXR0cmlidXRlKCJpZCIpIGlzICIzIgorUEFTUyBkb2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0
dHJpYnV0ZSgiaWQiKSBpcyAiMiIKK1BBU1MgZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5nZXRBdHRy
aWJ1dGUoImlkIikgaXMgIjEiCitQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuZ2V0QXR0cmli
dXRlKCJpZCIpIGlzICJzdGFydCIKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtY2xpcHBlZC1vdmVyZmxvd2VkLWNvbnRlbnQuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWNsaXBw
ZWQtb3ZlcmZsb3dlZC1jb250ZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uMGEzMDFjYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWNsaXBwZWQtb3ZlcmZsb3dlZC1jb250ZW50Lmh0bWwK
QEAgLTAsMCArMSw4NSBAQAorPGh0bWw+CisgIDwhLS0KKyAgICBUaGlzIHRlc3QgZW5zdXJlcyB0
aGUgY29ycmVjdG5lc3Mgb2YgYSBiYXNpYyBhc3BlY3Qgb2Ygc3BhdGlhbCBuYXZpZ2F0aW9uIHRy
YXZlcnNhbAorICAgIHJvdXRpbmVzOiBmb2N1c2FibGUgZWxlbWVudHMgaW4gc2Nyb2xsYWJsZSBj
b250YWluZXJzIChlLmcuIDxkaXY+KSBzaG91bGQgYmUKKyAgICBhY2Nlc3NpYmxlLCBpbmNsdWRp
bmcgb2Zmc2NyZWVuIGNvbnRlbnQuCisKKyAgICAqIFByZS1jb25kaXRpb25zOgorICAgIDEpIERS
VCBzdXBwb3J0IGZvciBzcGF0aWFsIG5hdml2YXRpb24gZW5hYmxlL2Rpc2FibGUuCisKKyAgICAq
IE5hdmlnYXRpb24gc3RlcHM6CisgICAgMSkgTG9hZHMgdGhpcyBwYWdlLCBmb2N1cyBnb2VzIHRv
ICJzdGFydCIgYXV0b21hdGljYWxseS4KKyAgICAyKSBNb3ZlIGZvY3VzIGRvd24gdG8gdGhlIHZp
c2libGUgZm9jdXNhYmxlIGVsZW1lbnQgaW4KKyAgICAgICBzY3JvbGxhYmxlIGRpdi4KKyAgICAz
KSBUcmF2ZXJzZSB0aGUgcGFnZSB0aHJvdWdoIG90aGVyIGZvY3VzYWJsZSBlbGVtZW50cyBkb3du
IHRoZSBwYWdlLgorICAgICAgIGFuZCB0aGVuIGJhY2sgdXAuCisKKyAgICAqIEV4cGVjdGVkIHJl
c3VsdHM6IEFsbCBmb2N1c2FibGUgZWxlbWVudCBpbiBzY3JvbGxhYmxlIGNvbnRlbnQsIGluY2x1
ZGluZworICAgIG9mZnNjcmVlbiBvbmVzLCBzaG91bGQgYmUgYWNjZXNzaWJsZSB2aWEgc3BhdGlh
bCBuYXZpZ2F0aW9uLiAtLT4KKyAgPGhlYWQ+CisgICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4K
KyAgICAgIGRpdi5zY3JvbGwgeworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgICAgICB3aWR0
aDogMzAwcHg7CisgICAgICAgIG92ZXJmbG93OiBhdXRvOworICAgICAgICBib3JkZXI6IDFweCBz
b2xpZCAjNjY2OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2NjOworICAgICAgICBwYWRk
aW5nOiA4cHg7CisgICAgICB9CisgICAgPC9zdHlsZT4KKworICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvc3BhdGlhbC1uYXZpZ2F0aW9uLXV0aWxzLmpzIj48L3NjcmlwdD4KKyAgICA8
c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiPgorCisgICAgdmFyIHJlc3VsdE1h
cCA9IFsKKyAgICAgIFsiRG93biIsICIxIl0sCisgICAgICBbIkRvd24iLCAiMSJdLAorICAgICAg
WyJEb3duIiwgIjIiXSwKKyAgICAgIFsiRG93biIsICIzIl0sCisgICAgICBbIlVwIiwgIjIiXSwK
KyAgICAgIFsiVXAiLCAiMSJdLAorICAgICAgWyJVcCIsICJzdGFydCJdLAorICAgICAgWyJET05F
IiwgIkRPTkUiXQorICAgIF07CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7CisgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5zZXRTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQodHJ1ZSk7CisgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdFRhYlRvTGlu
a3NQcmVmZXJlbmNlS2V5IiwgMSk7CisgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpCisgICAgeworICAgICAg
Ly8gc3RhcnRpbmcgdGhlIHRlc3QgaXRzZWxmOiBnZXQgdG8gYSBrbm93biBwbGFjZS4KKyAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdGFydCIpLmZvY3VzKCk7CisKKyAgICAgIGluaXRU
ZXN0KHJlc3VsdE1hcCwgdGVzdENvbXBsZXRlZCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVz
dENvbXBsZXRlZCgpCisgICAgeworICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIH0KKwor
ICAgIHdpbmRvdy5vbmxvYWQgPSBydW5UZXN0OworCisgICAgPC9zY3JpcHQ+CisgICAgPHNjcmlw
dCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorICA8L2hl
YWQ+CisKKyAgPGJvZHkgaWQ9InNvbWUtY29udGVudCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGh0bWwiPgorICAgIDxwPlRoYXQgaXMgaXMgYSBub3JtYWwgPGEgaWQ9InN0YXJ0IiBo
cmVmPSJhIj5saW5rXzE8L2E+LjwvcD4KKyAgICA8ZGl2IGNsYXNzPSJzY3JvbGwiPgorICAgICAg
PHA+VGhpcyBpcyBhIHNjcm9sbGFibGUgRGl2IGNyZWF0ZWQgd2l0aCB0aGUgQ1NTIHByb3BlcnR5
IG92ZXJmbG93LjwvcD4KKyAgICAgIDxwPkl0IGhhcyBhIHZpc2libGUgPGEgaWQ9IjEiIGhyZWY9
ImEiPmxpbmtfMjwvYT4uPC9wPgorICAgICAgPGJyPjxicj48YnI+PGJyPjxicj48YnI+CisgICAg
ICA8cD4uLi4gYW5kIGFuIG92ZXJmbG93ZWQgbGluayBsaWtlIDxhIGlkPSIyIiBocmVmPSJhIj5s
aW5rXzM8L2E+LjwvcD4KKyAgICA8L2Rpdj4KKyAgICA8cD5BbmQgdGhpcyBpcyBhbm90aGVyIG5v
cm1hbCA8YSBpZD0iMyIgaHJlZj0iYSI+bGlua180PC9hPi48L3A+CisgICAgPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+CisgIDwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtZGl2LXNjcm9sbGFibGUtYnV0
LXdpdGhvdXQtZm9jdXNhYmxlLWNvbnRlbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtZGl2LXNjcm9sbGFibGUtYnV0LXdpdGhv
dXQtZm9jdXNhYmxlLWNvbnRlbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjc1MWI5NDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1kaXYtc2Nyb2xsYWJsZS1idXQtd2l0aG91
dC1mb2N1c2FibGUtY29udGVudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzNSBAQAorYQorVGhp
cyBpcyBhIHNjcm9sbGFibGUgRGl2IGNyZWF0ZWQgd2l0aCB0aGUgQ1NTIHByb3BlcnR5IG92ZXJm
bG93LgorCitJdCBoYXMgbm8ga2V5Ym9hcmQgZm9jdXNhYmxlIGVsZW1lbnRzIC4uLi4KKworCisK
KworCisKKworCisKKworCisKKworLi4uIGFuZCBzY3JvbGxiYXJzIQorCitUaGlzIGlzIGFub3Ro
ZXIgc2Nyb2xsYWJsZSBkaXYgY3JlYXRlZCB3aXRoIHRoZSBDU1MgcHJvcGVydHkgb3ZlcmZsb3cu
CisKK0l0IGhhcyBhbHNvIG5vIGtleWJvYXJkIGZvY3VzYWJsZSBlbGVtZW50cyAuLi4uCisKKwor
CisKKworCisKKy4uLiBhcyB3ZWxsIGFzIHNjcm9sbGJhcnMhCisKK2UKK1BBU1MgZG9jdW1lbnQu
YWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoImlkIikgaXMgImVuZCIKK1BBU1MgZG9jdW1lbnQu
YWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoImlkIikgaXMgInN0YXJ0IgorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1kaXYtc2Ny
b2xsYWJsZS1idXQtd2l0aG91dC1mb2N1c2FibGUtY29udGVudC5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtZGl2LXNjcm9sbGFibGUtYnV0LXdp
dGhvdXQtZm9jdXNhYmxlLWNvbnRlbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5iYTcwMmY3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtZGl2LXNjcm9sbGFibGUtYnV0LXdpdGhvdXQtZm9j
dXNhYmxlLWNvbnRlbnQuaHRtbApAQCAtMCwwICsxLDgwIEBACis8aHRtbD4KKyAgPCEtLQorICAg
IFRoaXMgdGVzdCBlbnN1cmVzIHRoZSBjb3JyZWN0bmVzcyBvZiBhIGJhc2ljIGFzcGVjdCBvZiBz
cGF0aWFsIG5hdmlnYXRpb24gdHJhdmVyc2FsCisgICAgcm91dGluZXM6IHNjcm9sbGFibGUgYmxv
Y2sgaHRtbCBlbGVtZW50cyB3aXRob3V0IGFueSBmb2N1c2FibGUgY29udGVudCBzaG91bGQgYmUg
aWdub3JlZC4KKworICAgICogUHJlLWNvbmRpdGlvbnM6CisgICAgMSkgRFJUIHN1cHBvcnQgZm9y
IHNwYXRpYWwgbmF2aWdhdGlvbiBlbmFibGUvZGlzYWJsZS4KKworICAgICogTmF2aWdhdGlvbiBz
dGVwczoKKyAgICAxKSBMb2FkcyB0aGlzIHBhZ2UsIGZvY3VzIGdvZXMgdG8gInN0YXJ0IiBhdXRv
bWF0aWNhbGx5LgorICAgIDIpIEZvY3VzIG1vdmVzIGZyb20gInN0YXJ0IiB0byAiZW5kIiBieXBh
c3NpbmcgdGhlIHR3byBkaXYncworICAgICAgIGluIGJldHdlZW4gdGhlbSwgb25jZSBib3RoIGhh
dmUgbm8gZm9jdXNhYmxlIGVsZW1lbnRzIGluc2lkZS4KKyAgLS0+CisgIDxoZWFkPgorICAgIDxz
dHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisgICAgICBkaXYuc2Nyb2xsIHsKKyAgICAgICAgaGVpZ2h0
OiAyMDBweDsKKyAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICBvdmVyZmxvdzogYXV0bzsK
KyAgICAgICAgYm9yZGVyOiAxcHggc29saWQgIzY2NjsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xv
cjogI2NjYzsKKyAgICAgICAgcGFkZGluZzogOHB4OworICAgICAgfQorICAgIDwvc3R5bGU+CisK
KyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NwYXRpYWwtbmF2aWdhdGlvbi11dGls
cy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0
Ij4KKworICAgIHZhciByZXN1bHRNYXAgPSBbCisgICAgICBbIkRvd24iLCAiZW5kIl0sCisgICAg
ICBbIlVwIiAgLCAic3RhcnQiXSwKKyAgICAgIFsiRE9ORSIsICJET05FIl0KKyAgICBdOworCisg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0U3Bh
dGlhbE5hdmlnYXRpb25FbmFibGVkKHRydWUpOworICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
b3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRUYWJUb0xpbmtzUHJlZmVyZW5jZUtleSIsIDEpOwor
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIH0KKworICAg
IGZ1bmN0aW9uIHJ1blRlc3QoKQorICAgIHsKKyAgICAgIC8vIHN0YXJ0aW5nIHRoZSB0ZXN0IGl0
c2VsZjogZ2V0IHRvIGEga25vd24gcGxhY2UuCisgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgic3RhcnQiKS5mb2N1cygpOworCisgICAgICBpbml0VGVzdChyZXN1bHRNYXAsIHRlc3RDb21w
bGV0ZWQpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3RDb21wbGV0ZWQoKQorICAgIHsKKyAg
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB9CisKKyAgICB3aW5kb3cub25sb2FkID0gcnVu
VGVzdDsKKyAgICA8L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisgIDwvaGVhZD4KKyAgPGJvZHkgaWQ9InNvbWUtY29u
dGVudCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorICAgIDxkaXY+PGEg
aWQ9InN0YXJ0IiBocmVmPSJhIj5hPC9hPjwvZGl2PgorICAgIDxkaXYgY2xhc3M9InNjcm9sbCI+
CisgICAgICA8cD5UaGlzIGlzIGEgc2Nyb2xsYWJsZSBEaXYgY3JlYXRlZCB3aXRoIHRoZSBDU1Mg
cHJvcGVydHkgb3ZlcmZsb3cuPC9wPgorICAgICAgPHA+SXQgaGFzIG5vIGtleWJvYXJkIGZvY3Vz
YWJsZSBlbGVtZW50cyAuLi4uPC9wPgorICAgICAgPGJyPjxicj48YnI+PGJyPjxicj48YnI+Cisg
ICAgICA8YnI+PGJyPjxicj48YnI+PGJyPjxicj4KKyAgICAgIDxwPi4uLiBhbmQgc2Nyb2xsYmFy
cyE8L3A+CisgICAgPC9kaXY+CisKKyAgICA8ZGl2IGNsYXNzPSJzY3JvbGwiPgorICAgICAgPHA+
VGhpcyBpcyBhbm90aGVyIHNjcm9sbGFibGUgZGl2IGNyZWF0ZWQgd2l0aCB0aGUgQ1NTIHByb3Bl
cnR5IG92ZXJmbG93LjwvcD4KKyAgICAgIDxwPkl0IGhhcyBhbHNvIG5vIGtleWJvYXJkIGZvY3Vz
YWJsZSBlbGVtZW50cyAuLi4uPC9wPgorICAgICAgPGJyPjxicj48YnI+PGJyPjxicj48YnI+Cisg
ICAgICA8cD4uLi4gYXMgd2VsbCBhcyBzY3JvbGxiYXJzITwvcD4KKyAgICA8L2Rpdj4KKyAgICA8
ZGl2PjxhIGlkPSJlbmQiIGhyZWY9ImEiPmU8L2E+PC9kaXY+CisgICAgPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+CisgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmFhOTBhYy4uMTQ4YzMwMCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsOCArMSw0
NyBAQAorMjAxMC0wNS0xNCAgQW50b25pbyBHb21lcyAgPHRvbmlraXRvb0B3ZWJraXQub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNwYXRpYWwg
TmF2aWdhdGlvbjogbWFrZSBpdCB3b3JrIHdpdGggZm9jdXNhYmxlIGVsZW1lbnRzIGluIG92ZXJm
bG93IGNvbnRlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTM2NDYzCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRyZXNzZXMgdGhlIHByb2JsZW0gd2l0
aCBTcGF0aWFsIE5hdmlnYXRpb24uIEl0IGN1cnJlbnRseSBkb2VzIG5vdAorICAgICAgICBwcm9w
ZXJseSB0cmF2ZXJzZSBzY3JvbGxhYmxlIGNvbnRlbnRzLCBpbmNsdWRpbmcgc2Nyb2xsYWJsZSBk
aXYncy4gRm9yIHRoaXMgdG8gd29yaywKKyAgICAgICAgYSBuZXcgY2xhc3MgbWVtYmVyIGNhbGxl
ZCBzY3JvbGxhYmxlRW5jbG9zaW5nQm94IHdhcyBpbnRyb2R1Y2VkIHRvIEZvY3VzQ2FuZGlkYXRl
IGNsYXNzIHdoaWNoCisgICAgICAgIGtlZXBzIHRyYWNrIG9mIHRoZSBjdXJyZW50IHNjcm9sbGFi
bGUgYm94IE5vZGUgd3JhcHBpbmcgYSBGb2N1c0NhbmRpZGF0ZS4KKworICAgICAgICBUbyBtYWtl
IHVzZSBvZiBlbmNsb3NpbmdTY3JvbGxhYmxlQm94IG9mIEZvY3VzQ2FuZGlkYXRlLCB0aGUgRE9N
IHRyYXZlcnNhbCByb3V0aW5lCisgICAgICAgIChGb2N1c0NvbnRyb2xsZXI6OmZpbmROZXh0Rm9j
dXNhYmxlSW5EaXJlY3Rpb24pIHdhcyBjaGFuZ2VkIGFzIGZvbGxvd3M6IHdoZW4gaXQKKyAgICAg
ICAgZW5jb3VudGVycyBhIHNjcm9sbGFibGUgTm9kZSwgZWFjaCBmb2N1c2FibGUgbm9kZSB3aGlj
aCBpcyAnaW5uZXInIGtlZXBzIHRyYWNrIG9mCisgICAgICAgIHRoZSBjb250YWluZXIgcmVmZXJl
bmNlLiBCeSB0aGUgdGltZSBhIHNpYmxpbmcgb2YgdGhlIHNjcm9sbGFibGUgTm9kZSBpcyBlbmNv
dW50ZXJlZCwKKyAgICAgICAgdGhlcmUgaXMgbm8gbmVlZCB0byB0cmFjayB0aGlzIHJlZmVyZW5j
ZSBhbnkgbW9yZSBhbmQgdGhlIHRyYXZlcnNhbCBhbGdvcml0aG0gY29udGludWVzCisgICAgICAg
IG5vcm1hbGx5LgorCisgICAgICAgIFRoZSBjb21tb24gY2FzZSBpcyBvYnZpb3VzbHkgdGhhdCB0
aGVyZSBpcyBubyBzY3JvbGxhYmxlIGNvbnRhaW5lciB3cmFwcGluZyBpdC4KKworICAgICAgICB1
cGRhdGVGb2N1c0NhbmRpZGl0ZUlmQ2xvc2VyIGxvZ2ljIHdhcyBhbHNvIGFkYXB0ZWQgdG8gZml0
IHRoZSBuZWVkIG9mIHRoZQorICAgICAgICBuZXdseSBpbnRyb2R1Y2VkIGVuY2xvc2luZ1Njcm9s
bGFibGVCb3ggY2xhc3MgbWVtYmVyLCBnZXR0aW5nIHNpbXBsZXIgYW5kIG1vcmUKKyAgICAgICAg
ZWFzaWx5IG1haW50YWluYWJsZS4KKworICAgICAgICBUZXN0czogZmFzdC9ldmVudHMvc3BhdGlh
bC1uYXZpZ2F0aW9uL3NuYXYtZGl2LXNjcm9sbGFibGUtYnV0LXdpdGhvdXQtZm9jdXNhYmxlLWNv
bnRlbnQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9u
L3NuYXYtY2xpcHBlZC1vdmVyZmxvdy1jb250ZW50Lmh0bWwKKworICAgICAgICAqIHBhZ2UvRm9j
dXNDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZUZvY3VzQ2FuZGlkYXRl
SW5TYW1lQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZUZvY3VzQ2FuZGlkYXRl
SWZDbG9zZXIpOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjpmaW5kRm9jdXNh
YmxlTm9kZUluRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6
ZGVlcEZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24pOgorICAgICAgICAqIHBhZ2UvU3BhdGlh
bE5hdmlnYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNTY3JvbGxhYmxlQ29udGFpbmVy
Tm9kZSk6CisgICAgICAgICogcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5oOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9jdXNDYW5kaWRhdGU6OkZvY3VzQ2FuZGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkZvY3VzQ2FuZGlkYXRlOjppc0luU2Nyb2xsYWJsZUNvbnRhaW5lcik6CisKIDIwMTAtMDUtMjMg
IFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBPbGl2
ZXIgSHVudC4KIAogICAgICAgICBGaXggZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zOTU3NQogICAgICAgICBNYWtlIEpTIERPTU9iamVjdCBpbmhlcml0IGZyb20g
SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0IGluc3RlYWQgb2YgSlNPYmplY3QKIAogICAgICAgICAt
IENoYW5nZXMgSlNET01XaW5kb3dTaGVsbCB0byBpbmhlcml0IGZyb20gSlNPYmplY3QgaW5zdGVh
ZCBvZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAgYi9XZWJD
b3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAppbmRleCAwODIxOWE2Li4wODEwMTBkIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL3Bh
Z2UvRm9jdXNDb250cm9sbGVyLmNwcApAQCAtMzM3LDExMyArMzM3LDE2OSBAQCBib29sIEZvY3Vz
Q29udHJvbGxlcjo6YWR2YW5jZUZvY3VzRGlyZWN0aW9uYWxseShGb2N1c0RpcmVjdGlvbiBkaXJl
Y3Rpb24sIEtleWJvYQogICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50
Kj4obm9kZSk7CiAgICAgQVNTRVJUKGVsZW1lbnQpOwogCiAgICAgc2Nyb2xsSW50b1ZpZXcoZWxl
bWVudCk7CiAgICAgZWxlbWVudC0+Zm9jdXMoZmFsc2UpOwogICAgIHJldHVybiB0cnVlOwogfQog
Ci0vLyBGSVhNRTogTWFrZSB0aGlzIG1ldGhvZCBtb3JlIG1vZHVsYXIsIGFuZCBzaW1wbGVyIHRv
IHVuZGVyc3RhbmQgYW5kIG1haW50YWluLgotc3RhdGljIHZvaWQgdXBkYXRlRm9jdXNDYW5kaWRh
dGVJZkNsb3NlcihOb2RlKiBmb2N1c2VkTm9kZSwgY29uc3QgRm9jdXNDYW5kaWRhdGUmIGNhbmRp
ZGF0ZSwgRm9jdXNDYW5kaWRhdGUmIGNsb3Nlc3QpCitzdGF0aWMgdm9pZCB1cGRhdGVGb2N1c0Nh
bmRpZGF0ZUluU2FtZUNvbnRhaW5lcihjb25zdCBGb2N1c0NhbmRpZGF0ZSYgY2FuZGlkYXRlLCBG
b2N1c0NhbmRpZGF0ZSYgY2xvc2VzdCkKIHsKLSAgICBib29sIHNhbWVEb2N1bWVudCA9IGNhbmRp
ZGF0ZS5kb2N1bWVudCgpID09IGNsb3Nlc3QuZG9jdW1lbnQoKTsKLSAgICBpZiAoc2FtZURvY3Vt
ZW50KSB7Ci0gICAgICAgIGlmIChjbG9zZXN0LmFsaWdubWVudCA+IGNhbmRpZGF0ZS5hbGlnbm1l
bnQKLSAgICAgICAgIHx8IChjbG9zZXN0LnBhcmVudEFsaWdubWVudCAmJiBjYW5kaWRhdGUuYWxp
Z25tZW50ID4gY2xvc2VzdC5wYXJlbnRBbGlnbm1lbnQpKQotICAgICAgICAgICAgcmV0dXJuOwot
ICAgIH0gZWxzZSBpZiAoY2xvc2VzdC5hbGlnbm1lbnQgPiBjYW5kaWRhdGUuYWxpZ25tZW50Ci0g
ICAgICAgICAgICAmJiAoY2xvc2VzdC5wYXJlbnRBbGlnbm1lbnQgJiYgY2FuZGlkYXRlLmFsaWdu
bWVudCA+IGNsb3Nlc3QucGFyZW50QWxpZ25tZW50KSkKKyAgICBpZiAoY2xvc2VzdC5pc051bGwo
KSkgeworICAgICAgICBjbG9zZXN0ID0gY2FuZGlkYXRlOwogICAgICAgICByZXR1cm47Ci0KLSAg
ICBpZiAoY2FuZGlkYXRlLmFsaWdubWVudCAhPSBOb25lCi0gICAgIHx8IChjbG9zZXN0LnBhcmVu
dEFsaWdubWVudCA+PSBjYW5kaWRhdGUuYWxpZ25tZW50Ci0gICAgICYmIGNsb3Nlc3QuZG9jdW1l
bnQoKSA9PSBjYW5kaWRhdGUuZG9jdW1lbnQoKSkpIHsKLQotICAgICAgICAvLyBJZiB3ZSBhcmUg
bm93IGluIGFuIGhpZ2hlciBwcmVjZWRlbnQgY2FzZSwgbGV0cyByZXNldCB0aGUgY3VycmVudCBj
bG9zZXN0J3MKLSAgICAgICAgLy8gZGlzdGFuY2Ugc28gd2UgZm9yY2UgaXQgdG8gYmUgYmlnZ2Vy
IHRoYW4gYW55IHJlc3VsdCB3ZSB3aWxsIGdldCBmcm9tCi0gICAgICAgIC8vIHNwYXRpYWxEaXN0
YW5jZSgpLgotICAgICAgICBpZiAoY2xvc2VzdC5hbGlnbm1lbnQgPCBjYW5kaWRhdGUuYWxpZ25t
ZW50Ci0gICAgICAgICAmJiBjbG9zZXN0LnBhcmVudEFsaWdubWVudCA8IGNhbmRpZGF0ZS5hbGln
bm1lbnQpCi0gICAgICAgICAgICBjbG9zZXN0LmRpc3RhbmNlID0gbWF4RGlzdGFuY2UoKTsKICAg
ICB9CiAKLSAgICAvLyBCYWlsIG91dCBpZiBjYW5kaWRhdGUncyBkaXN0YW5jZSBpcyBsYXJnZXIg
dGhhbiB0aGF0IG9mIHRoZSBjbG9zZXN0IGNhbmRpZGF0ZS4KLSAgICBpZiAoY2FuZGlkYXRlLmRp
c3RhbmNlID49IGNsb3Nlc3QuZGlzdGFuY2UpCisgICAgaWYgKGNhbmRpZGF0ZS5hbGlnbm1lbnQg
PT0gY2xvc2VzdC5hbGlnbm1lbnQpIHsKKyAgICAgICAgaWYgKGNhbmRpZGF0ZS5kaXN0YW5jZSA8
IGNsb3Nlc3QuZGlzdGFuY2UpCisgICAgICAgICAgICBjbG9zZXN0ID0gY2FuZGlkYXRlOwogICAg
ICAgICByZXR1cm47CisgICAgfQogCi0gICAgaWYgKGNsb3Nlc3QuaXNOdWxsKCkpIHsKKyAgICBp
ZiAoY2FuZGlkYXRlLmFsaWdubWVudCA+IGNsb3Nlc3QuYWxpZ25tZW50KQogICAgICAgICBjbG9z
ZXN0ID0gY2FuZGlkYXRlOworfQorCitzdGF0aWMgdm9pZCB1cGRhdGVGb2N1c0NhbmRpZGF0ZUlm
Q2xvc2VyKE5vZGUqIGZvY3VzZWROb2RlLCBjb25zdCBGb2N1c0NhbmRpZGF0ZSYgY2FuZGlkYXRl
LCBGb2N1c0NhbmRpZGF0ZSYgY2xvc2VzdCkKK3sKKyAgICAvLyBGaXJzdCwgY2hlY2sgdGhlIGNv
bW1vbiBjYXNlOiBuZWl0aGVyIGNhbmRpZGF0ZSBub3IgY2xvc2VzdCBhcmUKKyAgICAvLyBpbnNp
ZGUgc2Nyb2xsYWJsZSBjb250ZW50LCB0aGVuIG5vIG5lZWQgdG8gY2FyZSBhYm91dCBlbmNsb3Np
bmdTY3JvbGxhYmxlQm94CisgICAgLy8gaGV1cmlzdGljcyBvciBwYXJlbnR7RGlzdGFuY2UsQWxp
Z25tZW50fSwgYnV0IG9ubHkgZGlzdGFuY2UgYW5kIGFsaWdubWVudC4KKyAgICBpZiAoIWNhbmRp
ZGF0ZS5pblNjcm9sbGFibGVDb250YWluZXIoKSAmJiAhY2xvc2VzdC5pblNjcm9sbGFibGVDb250
YWluZXIoKSkgeworICAgICAgICB1cGRhdGVGb2N1c0NhbmRpZGF0ZUluU2FtZUNvbnRhaW5lcihj
YW5kaWRhdGUsIGNsb3Nlc3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gSWYg
dGhlIGZvY3VzZWQgbm9kZSBhbmQgdGhlIGNhbmRhZGF0ZSBhcmUgaW4gdGhlIHNhbWUgZG9jdW1l
bnQgYW5kIGN1cnJlbnQKLSAgICAvLyBjbG9zZXN0IGNhbmRpZGF0ZSBpcyBub3QgaW4gYW4ge2l9
ZnJhbWUgdGhhdCBpcyBwcmVmZXJhYmxlIHRvIGdldCBmb2N1c2VkIC4uLgotICAgIGlmIChmb2N1
c2VkTm9kZS0+ZG9jdW1lbnQoKSA9PSBjYW5kaWRhdGUuZG9jdW1lbnQoKQotICAgICAgICAmJiBj
YW5kaWRhdGUuZGlzdGFuY2UgPCBjbG9zZXN0LnBhcmVudERpc3RhbmNlKQotICAgICAgICBjbG9z
ZXN0ID0gY2FuZGlkYXRlOwotICAgIGVsc2UgaWYgKGZvY3VzZWROb2RlLT5kb2N1bWVudCgpICE9
IGNhbmRpZGF0ZS5kb2N1bWVudCgpKSB7Ci0gICAgICAgIC8vIElmIHRoZSBmb2N1c2VkTm9kZSBp
cyBpbiBhbiBpbm5lciBkb2N1bWVudCBhbmQgY2FuZGlkYXRlIGlzIGluIGEKLSAgICAgICAgLy8g
ZGlmZmVyZW50IGRvY3VtZW50LCB3ZSBvbmx5IGNvbnNpZGVyIHRvIGNoYW5nZSBmb2N1cyBpZiB0
aGVyZSBpcyBub3QKLSAgICAgICAgLy8gYW5vdGhlciBhbHJlYWR5IGdvb2QgZm9jdXNhYmxlIGNh
bmRpZGF0ZSBpbiB0aGUgc2FtZSBkb2N1bWVudCBhcyBmb2N1c2VkTm9kZS4KLSAgICAgICAgaWYg
KCEoKGlzSW5Sb290RG9jdW1lbnQoY2FuZGlkYXRlLm5vZGUpICYmICFpc0luUm9vdERvY3VtZW50
KGZvY3VzZWROb2RlKSkKLSAgICAgICAgICAgICYmIGZvY3VzZWROb2RlLT5kb2N1bWVudCgpID09
IGNsb3Nlc3QuZG9jdW1lbnQoKSkpCisgICAgYm9vbCBzYW1lQ29udGFpbmVyOworICAgIGlmIChj
YW5kaWRhdGUuZG9jdW1lbnQoKSAhPSBjbG9zZXN0LmRvY3VtZW50KCkpCisgICAgICAgIHNhbWVD
b250YWluZXIgPSBmYWxzZTsKKyAgICBlbHNlCisgICAgICAgIHNhbWVDb250YWluZXIgPSBjYW5k
aWRhdGUuZW5jbG9zaW5nU2Nyb2xsYWJsZUJveCA9PSBjbG9zZXN0LmVuY2xvc2luZ1Njcm9sbGFi
bGVCb3g7CisKKyAgICAvLyBTZWNvbmQsIGlmIGNhbmRpZGF0ZSBhbmQgY2xvc2VzdCBhcmUgaW4g
dGhlIHNhbWUgImNvbnRhaW5lciIgKGkuZS4ge2l9ZnJhbWUgb3IgYW55CisgICAgLy8gc2Nyb2xs
YWJsZSBibG9jayBlbGVtZW50KSwgd2UgY2FuIGhhbmRsZSB0aGVtIGFzIGNvbW1vbiBjYXNlLgor
ICAgIGlmIChzYW1lQ29udGFpbmVyKSB7CisgICAgICAgIHVwZGF0ZUZvY3VzQ2FuZGlkYXRlSW5T
YW1lQ29udGFpbmVyKGNhbmRpZGF0ZSwgY2xvc2VzdCk7CisgICAgICAgIHJldHVybjsKKworICAg
IC8vIExhc3QsIHdlIGFyZSBjb25zaWRlcmluZyBtb3ZpbmcgdG8gYSBjYW5kaWRhdGUgbG9jYXRl
ZCBpbiBhIGRpZmZlcmVudCBlbmNsb3NpbmcKKyAgICAvLyBzY3JvbGxhYmxlIGJveCB0aGFuIGNs
b3Nlc3QuCisgICAgfSBlbHNlIHsKKyAgICAgICAgYm9vbCBpc0luSW5uZXJEb2N1bWVudCA9ICFp
c0luUm9vdERvY3VtZW50KGZvY3VzZWROb2RlKTsKKworICAgICAgICBib29sIHNhbWVDb250YWlu
ZXJBc0NhbmRpZGF0ZSA9IGlzSW5Jbm5lckRvY3VtZW50ID8gZm9jdXNlZE5vZGUtPmRvY3VtZW50
KCkgPT0gY2FuZGlkYXRlLmRvY3VtZW50KCkgOgorICAgICAgICAgICAgZm9jdXNlZE5vZGUtPmlz
RGVzY2VuZGFudE9mKGNhbmRpZGF0ZS5lbmNsb3NpbmdTY3JvbGxhYmxlQm94KTsKKworICAgICAg
ICBib29sIHNhbWVDb250YWluZXJBc0Nsb3Nlc3QgPSBpc0luSW5uZXJEb2N1bWVudCA/IGZvY3Vz
ZWROb2RlLT5kb2N1bWVudCgpID09IGNsb3Nlc3QuZG9jdW1lbnQoKSA6CisgICAgICAgICAgICBm
b2N1c2VkTm9kZS0+aXNEZXNjZW5kYW50T2YoY2xvc2VzdC5lbmNsb3NpbmdTY3JvbGxhYmxlQm94
KTsKKworICAgICAgICAvLyBzYW1lQ29udGFpbmVyQXNDYW5kaWRhdGUgYW5kIHNhbWVDb250YWlu
ZXJBc0Nsb3Nlc3QgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4KKyAgICAgICAgQVNTRVJUKCEoc2Ft
ZUNvbnRhaW5lckFzQ2FuZGlkYXRlICYmIHNhbWVDb250YWluZXJBc0Nsb3Nlc3QpKTsKKworICAg
ICAgICBpZiAoc2FtZUNvbnRhaW5lckFzQ2FuZGlkYXRlKSB7CiAgICAgICAgICAgICBjbG9zZXN0
ID0gY2FuZGlkYXRlOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKHNhbWVDb250YWluZXJBc0Nsb3Nlc3QpIHsKKyAgICAgICAgICAgIC8vIE5vdGhpbmcgdG8g
YmUgZG9uZS4KKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vICMj
IyAhc2FtZUNvbnRhaW5lckFzQ2FuZGlkYXRlICYmICFzYW1lQ29udGFpbmVyQXNDbG9zZXN0Cisg
ICAgICAgIC8vIElmIGRpc3RhbmNlIGlzIHNob3J0ZXIsIGFuZCB3ZSBhcmUgdGFsa2luZyBhYm91
dCBzY3JvbGxhYmxlIGNvbnRhaW5lciwKKyAgICAgICAgLy8gbGV0cyBjb21wYXJlIHBhcmVudCBk
aXN0YW5jZSBhbmQgYWxpZ25tZW50IGJlZm9yZSBhbnl0aGluZy4KKyAgICAgICAgaWYgKGNhbmRp
ZGF0ZS5kaXN0YW5jZSA8IGNsb3Nlc3QuZGlzdGFuY2UpIHsKKyAgICAgICAgICAgIGlmIChjYW5k
aWRhdGUuYWxpZ25tZW50ID49IGNsb3Nlc3QucGFyZW50QWxpZ25tZW50CisgICAgICAgICAgICAg
fHwgY2FuZGlkYXRlLnBhcmVudEFsaWdubWVudCA9PSBjbG9zZXN0LnBhcmVudEFsaWdubWVudCkg
eworICAgICAgICAgICAgICAgIGNsb3Nlc3QgPSBjYW5kaWRhdGU7CisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgIH0gZWxzZSBpZiAoY2FuZGlkYXRlLnBh
cmVudERpc3RhbmNlIDwgY2xvc2VzdC5kaXN0YW5jZSkgeworICAgICAgICAgICAgaWYgKGNhbmRp
ZGF0ZS5wYXJlbnRBbGlnbm1lbnQgPj0gY2xvc2VzdC5hbGlnbm1lbnQpIHsKKyAgICAgICAgICAg
ICAgICBjbG9zZXN0ID0gY2FuZGlkYXRlOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KIH0KIAogdm9pZCBGb2N1c0NvbnRyb2xsZXI6OmZp
bmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24oTm9kZSogb3V0ZXIsIE5vZGUqIGZvY3VzZWROb2Rl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9j
dXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBLZXlib2FyZEV2ZW50KiBldmVudCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvY3VzQ2FuZGlkYXRlJiBj
bG9zZXN0Rm9jdXNDYW5kaWRhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBGb2N1c0NhbmRpZGF0ZSYgY2FuZGlkYXRlUGFyZW50KQog
ewogICAgIEFTU0VSVChvdXRlcik7CiAgICAgQVNTRVJUKGNhbmRpZGF0ZVBhcmVudC5pc051bGwo
KQogICAgICAgICB8fCBjYW5kaWRhdGVQYXJlbnQubm9kZS0+aGFzVGFnTmFtZShmcmFtZVRhZykK
LSAgICAgICAgfHwgY2FuZGlkYXRlUGFyZW50Lm5vZGUtPmhhc1RhZ05hbWUoaWZyYW1lVGFnKSk7
CisgICAgICAgIHx8IGNhbmRpZGF0ZVBhcmVudC5ub2RlLT5oYXNUYWdOYW1lKGlmcmFtZVRhZykK
KyAgICAgICAgfHwgaXNTY3JvbGxhYmxlQ29udGFpbmVyTm9kZShjYW5kaWRhdGVQYXJlbnQubm9k
ZSkpOwogCiAgICAgLy8gV2FsayBhbGwgdGhlIGNoaWxkIG5vZGVzIGFuZCB1cGRhdGUgY2xvc2Vz
dEZvY3VzQ2FuZGlkYXRlIGlmIHdlIGZpbmQgYSBuZWFyZXIgbm9kZS4KICAgICBOb2RlKiBjYW5k
aWRhdGUgPSBvdXRlcjsKICAgICB3aGlsZSAoY2FuZGlkYXRlKSB7CisKICAgICAgICAgLy8gSW5u
ZXIgZG9jdW1lbnRzIGNhc2UuCisgICAgICAgIGlmIChjYW5kaWRhdGUtPmlzRnJhbWVPd25lckVs
ZW1lbnQoKSkgeworICAgICAgICAgICAgZGVlcEZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24o
Y2FuZGlkYXRlLCBmb2N1c2VkTm9kZSwgZGlyZWN0aW9uLCBldmVudCwgY2xvc2VzdEZvY3VzQ2Fu
ZGlkYXRlKTsKIAotICAgICAgICBpZiAoY2FuZGlkYXRlLT5pc0ZyYW1lT3duZXJFbGVtZW50KCkp
CisgICAgICAgIC8vIFNjcm9sbGFibGUgYmxvY2sgZWxlbWVudHMgKGUuZy4gPGRpdj4sIGV0Yykg
Y2FzZS4KKyAgICAgICAgfSBlbHNlIGlmIChpc1Njcm9sbGFibGVDb250YWluZXJOb2RlKGNhbmRp
ZGF0ZSkpIHsKICAgICAgICAgICAgIGRlZXBGaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKGNh
bmRpZGF0ZSwgZm9jdXNlZE5vZGUsIGRpcmVjdGlvbiwgZXZlbnQsIGNsb3Nlc3RGb2N1c0NhbmRp
ZGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGNhbmRpZGF0ZSAhPSBmb2N1c2VkTm9kZSAmJiBjYW5k
aWRhdGUtPmlzS2V5Ym9hcmRGb2N1c2FibGUoZXZlbnQpKSB7CisgICAgICAgICAgICBjYW5kaWRh
dGUgPSBjYW5kaWRhdGUtPnRyYXZlcnNlTmV4dFNpYmxpbmcoKTsKKyAgICAgICAgICAgIGNvbnRp
bnVlOworCisgICAgICAgIH0gZWxzZSBpZiAoY2FuZGlkYXRlICE9IGZvY3VzZWROb2RlICYmIGNh
bmRpZGF0ZS0+aXNLZXlib2FyZEZvY3VzYWJsZShldmVudCkpIHsKICAgICAgICAgICAgIEZvY3Vz
Q2FuZGlkYXRlIGN1cnJlbnRGb2N1c0NhbmRpZGF0ZShjYW5kaWRhdGUpOwogCisgICAgICAgICAg
ICAvLyBUaGVyZSBhcmUgdHdvIHdheXMgdG8gaWRlbnRpZnkgd2UgYXJlIGluIGEgcmVjdXJzaXZl
IGNhbGwgZnJvbSBkZWVwRmluZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbgorICAgICAgICAgICAg
Ly8gKGkuZS4gcHJvY2Vzc2luZyBhbiBlbGVtZW50IGluIGFuIGlmcmFtZSwgZnJhbWUgb3IgYSBz
Y3JvbGxhYmxlIGJsb2NrIGVsZW1lbnQpOgorCisgICAgICAgICAgICAvLyAxKSBJZiBjYW5kaWRh
dGVQYXJlbnQgaXMgbm90IG51bGwsIGFuZCBpdCBob2xkcyB0aGUgZGlzdGFuY2UgYW5kIGFsaWdu
bWVudCBkYXRhIG9mIHRoZQorICAgICAgICAgICAgLy8gcGFyZW50IGNvbnRhaW5lciBlbGVtZW50
IGl0c2VsZi4KKyAgICAgICAgICAgIGlmICghY2FuZGlkYXRlUGFyZW50LmlzTnVsbCgpKSB7Cisg
ICAgICAgICAgICAgICAgY3VycmVudEZvY3VzQ2FuZGlkYXRlLnBhcmVudEFsaWdubWVudCA9IGNh
bmRpZGF0ZVBhcmVudC5hbGlnbm1lbnQ7CisgICAgICAgICAgICAgICAgY3VycmVudEZvY3VzQ2Fu
ZGlkYXRlLnBhcmVudERpc3RhbmNlID0gY2FuZGlkYXRlUGFyZW50LmRpc3RhbmNlOworICAgICAg
ICAgICAgICAgIGN1cnJlbnRGb2N1c0NhbmRpZGF0ZS5lbmNsb3NpbmdTY3JvbGxhYmxlQm94ID0g
Y2FuZGlkYXRlUGFyZW50Lm5vZGU7CisKKyAgICAgICAgICAgIC8vIDIpIFBhcmVudCBvZiBvdXRl
ciBpcyBlaXRoZXI6CisgICAgICAgICAgICAvLyAqIDxmcmFtZT4gb3IgPGlmcmFtZT47CisgICAg
ICAgICAgICAvLyAqIG9yIGFueSBvdGhlciBzY3JvbGxhYmxlIGJsb2NrIGVsZW1lbnQuCisgICAg
ICAgICAgICB9IGVsc2UgaWYgKCFpc0luUm9vdERvY3VtZW50KG91dGVyKSkgeworICAgICAgICAg
ICAgICAgIGlmIChEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KG91
dGVyLT5wYXJlbnQoKSkpCisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRGb2N1c0NhbmRpZGF0
ZS5lbmNsb3NpbmdTY3JvbGxhYmxlQm94ID0gc3RhdGljX2Nhc3Q8Tm9kZSo+KGRvY3VtZW50LT5v
d25lckVsZW1lbnQoKSk7CisKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNTY3JvbGxhYmxlQ29u
dGFpbmVyTm9kZShvdXRlci0+cGFyZW50KCkpKQorICAgICAgICAgICAgICAgIGN1cnJlbnRGb2N1
c0NhbmRpZGF0ZS5lbmNsb3NpbmdTY3JvbGxhYmxlQm94ID0gb3V0ZXItPnBhcmVudCgpOworCiAg
ICAgICAgICAgICAvLyBHZXQgZGlzdGFuY2UgYW5kIGFsaWdubWVudCBmcm9tIGN1cnJlbnQgY2Fu
ZGlkYXRlLgogICAgICAgICAgICAgZGlzdGFuY2VEYXRhRm9yTm9kZShkaXJlY3Rpb24sIGZvY3Vz
ZWROb2RlLCBjdXJyZW50Rm9jdXNDYW5kaWRhdGUpOwogCiAgICAgICAgICAgICAvLyBCYWlsIG91
dCBpZiBkaXN0YW5jZSBpcyBtYXhpbXVtLgogICAgICAgICAgICAgaWYgKGN1cnJlbnRGb2N1c0Nh
bmRpZGF0ZS5kaXN0YW5jZSA9PSBtYXhEaXN0YW5jZSgpKSB7CiAgICAgICAgICAgICAgICAgY2Fu
ZGlkYXRlID0gY2FuZGlkYXRlLT50cmF2ZXJzZU5leHROb2RlKG91dGVyLT5wYXJlbnQoKSk7CiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIC8v
IElmIGNhbmRpZGF0ZVBhcmVudCBpcyBub3QgbnVsbCwgaXQgbWVhbnMgdGhhdCB3ZSBhcmUgaW4g
YSByZWN1cnNpdmUgY2FsbAotICAgICAgICAgICAgLy8gZnJvbSBkZWVwRmluZUZvY3VzYWJsZU5v
ZGVJbkRpcmVjdGlvbiAoaS5lLiBwcm9jZXNzaW5nIGFuIGVsZW1lbnQgaW4gYW4gaWZyYW1lKSwK
LSAgICAgICAgICAgIC8vIGFuZCBob2xkcyB0aGUgZGlzdGFuY2UgYW5kIGFsaWdubWVudCBkYXRh
IG9mIHRoZSBpZnJhbWUgZWxlbWVudCBpdHNlbGYuCi0gICAgICAgICAgICBpZiAoIWNhbmRpZGF0
ZVBhcmVudC5pc051bGwoKSkgewotICAgICAgICAgICAgICAgIGN1cnJlbnRGb2N1c0NhbmRpZGF0
ZS5wYXJlbnRBbGlnbm1lbnQgPSBjYW5kaWRhdGVQYXJlbnQuYWxpZ25tZW50OwotICAgICAgICAg
ICAgICAgIGN1cnJlbnRGb2N1c0NhbmRpZGF0ZS5wYXJlbnREaXN0YW5jZSA9IGNhbmRpZGF0ZVBh
cmVudC5kaXN0YW5jZTsKLSAgICAgICAgICAgIH0KLQogICAgICAgICAgICAgdXBkYXRlRm9jdXND
YW5kaWRhdGVJZkNsb3Nlcihmb2N1c2VkTm9kZSwgY3VycmVudEZvY3VzQ2FuZGlkYXRlLCBjbG9z
ZXN0Rm9jdXNDYW5kaWRhdGUpOwogICAgICAgICB9CiAKICAgICAgICAgY2FuZGlkYXRlID0gY2Fu
ZGlkYXRlLT50cmF2ZXJzZU5leHROb2RlKG91dGVyLT5wYXJlbnQoKSk7CiAgICAgfQogfQogCiB2
b2lkIEZvY3VzQ29udHJvbGxlcjo6ZGVlcEZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24oTm9k
ZSogY29udGFpbmVyLCBOb2RlKiBmb2N1c2VkTm9kZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24s
IEtleWJvYXJkRXZlbnQqIGV2ZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEZvY3VzQ2FuZGlkYXRlJiBjbG9zZXN0Rm9jdXNDYW5kaWRh
dGUpCiB7Ci0gICAgQVNTRVJUKGNvbnRhaW5lci0+aGFzVGFnTmFtZShmcmFtZVRhZykgfHwgY29u
dGFpbmVyLT5oYXNUYWdOYW1lKGlmcmFtZVRhZykpOworICAgIEFTU0VSVChjb250YWluZXItPmhh
c1RhZ05hbWUoZnJhbWVUYWcpCisgICAgICAgIHx8IGNvbnRhaW5lci0+aGFzVGFnTmFtZShpZnJh
bWVUYWcpCisgICAgICAgIHx8IGlzU2Nyb2xsYWJsZUNvbnRhaW5lck5vZGUoY29udGFpbmVyKSk7
CiAKICAgICAvLyBUcmFjayBpZiBmb2N1c2VkTm9kZSBpcyBhIGRlc2NlbmRhbnQgb2YgdGhlIGN1
cnJlbnQgY29udGFpbmVyIG5vZGUgYmVpbmcgcHJvY2Vzc2VkLgogICAgIGJvb2wgZGVzY2VuZGFu
dE9mQ29udGFpbmVyID0gZmFsc2U7CiAgICAgTm9kZSogZmlyc3RDaGlsZCA9IDA7CiAKICAgICAv
LyBJZnJhbWUgb3IgRnJhbWUuCiAgICAgaWYgKGNvbnRhaW5lci0+aGFzVGFnTmFtZShmcmFtZVRh
ZykgfHwgY29udGFpbmVyLT5oYXNUYWdOYW1lKGlmcmFtZVRhZykpIHsKIApAQCAtNDUzLDE2ICs1
MDksMjEgQEAgdm9pZCBGb2N1c0NvbnRyb2xsZXI6OmRlZXBGaW5kRm9jdXNhYmxlTm9kZUluRGly
ZWN0aW9uKE5vZGUqIGNvbnRhaW5lciwgTm9kZSogZm8KIAogICAgICAgICBEb2N1bWVudCogaW5u
ZXJEb2N1bWVudCA9IG93bmVyLT5jb250ZW50RnJhbWUoKS0+ZG9jdW1lbnQoKTsKICAgICAgICAg
aWYgKCFpbm5lckRvY3VtZW50KQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGRlc2Nl
bmRhbnRPZkNvbnRhaW5lciA9IGlubmVyRG9jdW1lbnQgPT0gZm9jdXNlZE5vZGUtPmRvY3VtZW50
KCk7CiAgICAgICAgIGZpcnN0Q2hpbGQgPSBpbm5lckRvY3VtZW50LT5maXJzdENoaWxkKCk7CiAK
KyAgICAvLyBTY3JvbGxhYmxlIGJsb2NrIGVsZW1lbnRzIChlLmcuIDxkaXY+LCBldGMpCisgICAg
fSBlbHNlIGlmIChpc1Njcm9sbGFibGVDb250YWluZXJOb2RlKGNvbnRhaW5lcikpIHsKKworICAg
ICAgICBmaXJzdENoaWxkID0gY29udGFpbmVyLT5maXJzdENoaWxkKCk7CisgICAgICAgIGRlc2Nl
bmRhbnRPZkNvbnRhaW5lciA9IGZvY3VzZWROb2RlLT5pc0Rlc2NlbmRhbnRPZihjb250YWluZXIp
OwogICAgIH0KIAogICAgIGlmIChkZXNjZW5kYW50T2ZDb250YWluZXIpIHsKICAgICAgICAgZmlu
ZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbihmaXJzdENoaWxkLCBmb2N1c2VkTm9kZSwgZGlyZWN0
aW9uLCBldmVudCwgY2xvc2VzdEZvY3VzQ2FuZGlkYXRlKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAogICAgIC8vIENoZWNrIGlmIHRoZSBjdXJyZW50IGNvbnRhaW5lciBlbGVtZW50IGl0c2Vs
ZiBpcyBhIGdvb2QgY2FuZGlkYXRlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5h
dmlnYXRpb24uY3BwIGIvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcAppbmRleCBk
NDMzMzBjLi4zYTY0N2FkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRp
b24uY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAKQEAgLTQzNywx
NyArNDM3LDM4IEBAIGJvb2wgaGFzT2Zmc2NyZWVuUmVjdChOb2RlKiBub2RlKQogICAgIEludFJl
Y3QgcmVjdChyZW5kZXItPmFic29sdXRlQ2xpcHBlZE92ZXJmbG93UmVjdCgpKTsKICAgICBpZiAo
cmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaW50IGRlZmxhdGVG
YWN0b3IgPSAtZnVkZ2VGYWN0b3IoKTsKICAgICBpZiAoKHJlY3Qud2lkdGgoKSArIDIgKiBkZWZs
YXRlRmFjdG9yID4gMCkgJiYgKHJlY3QuaGVpZ2h0KCkgKyAyICogZGVmbGF0ZUZhY3RvciA+IDAp
KQogICAgICAgICByZWN0LmluZmxhdGUoZGVmbGF0ZUZhY3Rvcik7CiAKLSAgICByZXR1cm4gIWNv
bnRhaW5lclZpZXdwb3J0UmVjdC5pbnRlcnNlY3RzKHJlY3QpOworICAgIC8vIEZpcnN0IGhhbmRs
ZSB0aGUgY29tbW9uIGNhc2U6IG5vZGUgbm90IGlubmVyIG9mIGFueSBzY3JvbGxhYmxlIGNvbnRh
aW5lcgorICAgIC8vIChkaXYsIGlmcmFtZSwgZXRjKS4KKyAgICBpZiAoIWNhbmRpZGF0ZS5pblNj
cm9sbGFibGVDb250YWluZXIoKSkKKyAgICAgICAgcmV0dXJuICF2aWV3cG9ydFJlY3QuaW50ZXJz
ZWN0cyhyZWN0KTsKKworICAgIC8vIEluIHRoZSBjYXNlIHdoZW4gY2FuZGlkYXRlIGlzIGluIGEg
c2Nyb2xsYWJsZSBib3gsIHdlIGhhdmUgdG8gbWFrZSBzdXJlOgorICAgIC8vIDEpIE5vZGUgbm90
IGNsaXBwZWQgb2ZmIGluIHRoZSBjb250YWluZXIgc2Nyb2xsYWJsZSBib3g7CisgICAgLy8gMikg
dGhlIHNjcm9sbGFibGUgYm94IGl0c2VsZiBpcyBub3Qgb2Zmc2NyZWVuLgorICAgIFJlbmRlck9i
amVjdCogY29udGFpbmVyUmVuZGVyZXIgPSBjYW5kaWRhdGUuZW5jbG9zaW5nU2Nyb2xsYWJsZUJv
eC0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIWNvbnRhaW5lclJlbmRlcmVyKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKworICAgIEludFJlY3QgY29udGFpbmVyUmVjdCA9IHJlbmRlclJlY3RSZWxhdGl2
ZVRvUm9vdERvY3VtZW50KGNvbnRhaW5lclJlbmRlcmVyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlIC8qIGZpeEVtcHR5
ICovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZhbHNlIC8qIGNvbnNpZGVyU2Nyb2xsT2Zmc2V0ICovKTsKKyAgICBpZiAoY29u
dGFpbmVyUmVjdC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKCF2
aWV3cG9ydFJlY3QuaW50ZXJzZWN0cyhjb250YWluZXJSZWN0KSkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisKKyAgICByZXR1cm4gIWNvbnRhaW5lclJlY3QuaW50ZXJzZWN0cyhyZWN0KTsKIH0KIAog
Ly8gSW4gYSBib3R0b20tdXAgd2F5LCB0aGlzIG1ldGhvZCB0cmllcyB0byBzY3JvbGwgfGZyYW1l
fCBpbiBhIGdpdmVuIGRpcmVjdGlvbgogLy8gfGRpcmVjdGlvbnwsIGdvaW5nIHVwIGluIHRoZSBm
cmFtZSB0cmVlIGhpZXJhcmNoeSBpbiBjYXNlIGl0IGRvZXMgbm90IHN1Y2NlZWQuCiBib29sIHNj
cm9sbEluRGlyZWN0aW9uKEZyYW1lKiBmcmFtZSwgRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uKQog
ewogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTUyNCw5ICs1NDUs
MjIgQEAgc3RhdGljIGJvb2wgY2hlY2tOZWdhdGl2ZUNvb3Jkc0Zvck5vZGUoTm9kZSogbm9kZSwg
Y29uc3QgSW50UmVjdCYgY3VyUmVjdCkKICAgICAgICAgICAgIGNhbkJlU2Nyb2xsZWQgPSB0cnVl
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gY2Fu
QmVTY3JvbGxlZDsKIH0KIAorYm9vbCBpc1Njcm9sbGFibGVDb250YWluZXJOb2RlKE5vZGUqIG5v
ZGUpCit7CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAo
UmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCkpIHsKKyAgICAgICAgcmV0
dXJuIChyZW5kZXJlci0+aXNCb3goKSAmJiB0b1JlbmRlckJveChyZW5kZXJlciktPmNhbkJlU2Ny
b2xsZWRBbmRIYXNTY3JvbGxhYmxlQXJlYSgpCisgICAgICAgICAgICAgJiYgbm9kZS0+aGFzQ2hp
bGROb2RlcygpICYmICFub2RlLT5pc0RvY3VtZW50Tm9kZSgpKTsKKyAgICB9CisKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5oIGIvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0
aW9uLmgKaW5kZXggZDM4ZmIwOS4uOTI1ODkwMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1Nw
YXRpYWxOYXZpZ2F0aW9uLmgKKysrIGIvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmgK
QEAgLTkyLDQzICs5Miw0OCBAQCBlbnVtIFJlY3RzQWxpZ25tZW50IHsKICAgICBOb25lID0gMCwK
ICAgICBQYXJ0aWFsLAogICAgIEZ1bGwKIH07CiAKIHN0cnVjdCBGb2N1c0NhbmRpZGF0ZSB7CiAg
ICAgRm9jdXNDYW5kaWRhdGUoKQogICAgICAgICA6IG5vZGUoMCkKKyAgICAgICAgLCBlbmNsb3Np
bmdTY3JvbGxhYmxlQm94KDApCiAgICAgICAgICwgZGlzdGFuY2UobWF4RGlzdGFuY2UoKSkKICAg
ICAgICAgLCBwYXJlbnREaXN0YW5jZShtYXhEaXN0YW5jZSgpKQogICAgICAgICAsIGFsaWdubWVu
dChOb25lKQogICAgICAgICAsIHBhcmVudEFsaWdubWVudChOb25lKQogICAgIHsKICAgICB9CiAK
ICAgICBGb2N1c0NhbmRpZGF0ZShOb2RlKiBuKQogICAgICAgICA6IG5vZGUobikKKyAgICAgICAg
LCBlbmNsb3NpbmdTY3JvbGxhYmxlQm94KDApCiAgICAgICAgICwgZGlzdGFuY2UobWF4RGlzdGFu
Y2UoKSkKICAgICAgICAgLCBwYXJlbnREaXN0YW5jZShtYXhEaXN0YW5jZSgpKQogICAgICAgICAs
IGFsaWdubWVudChOb25lKQogICAgICAgICAsIHBhcmVudEFsaWdubWVudChOb25lKQogICAgIHsK
ICAgICB9CiAKICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFub2RlOyB9CisgICAg
Ym9vbCBpblNjcm9sbGFibGVDb250YWluZXIoKSBjb25zdCB7IHJldHVybiBub2RlICYmIGVuY2xv
c2luZ1Njcm9sbGFibGVCb3g7IH0KICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdCB7IHJl
dHVybiBub2RlID8gbm9kZS0+ZG9jdW1lbnQoKSA6IDA7IH0KIAogICAgIE5vZGUqIG5vZGU7Cisg
ICAgTm9kZSogZW5jbG9zaW5nU2Nyb2xsYWJsZUJveDsKICAgICBsb25nIGxvbmcgZGlzdGFuY2U7
CiAgICAgbG9uZyBsb25nIHBhcmVudERpc3RhbmNlOwogICAgIFJlY3RzQWxpZ25tZW50IGFsaWdu
bWVudDsKICAgICBSZWN0c0FsaWdubWVudCBwYXJlbnRBbGlnbm1lbnQ7CiB9OwogCiB2b2lkIGRp
c3RhbmNlRGF0YUZvck5vZGUoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBOb2RlKiBzdGFydCwg
Rm9jdXNDYW5kaWRhdGUmIGNhbmRpZGF0ZSk7CiBib29sIHNjcm9sbEluRGlyZWN0aW9uKEZyYW1l
KiwgRm9jdXNEaXJlY3Rpb24pOwogdm9pZCBzY3JvbGxJbnRvVmlldyhFbGVtZW50Kik7CiBib29s
IGhhc09mZnNjcmVlblJlY3QoTm9kZSopOwogYm9vbCBpc0luUm9vdERvY3VtZW50KE5vZGUqKTsK
K2Jvb2wgaXNTY3JvbGxhYmxlQ29udGFpbmVyTm9kZShOb2RlKik7CiAKIH0gLy8gbmFtc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gU3BhdGlhbE5hdmlnYXRpb25faAotLSAKMS43LjAuNAoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56882</attachid>
            <date>2010-05-24 06:47:09 -0700</date>
            <delta_ts>2010-06-14 06:53:09 -0700</delta_ts>
            <desc>patch v5.3</desc>
            <filename>0001-Spatial-Navigation-make-it-work-with-focusable-eleme.patch</filename>
            <type>text/plain</type>
            <size>28266</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSA3YzAyZTcxNzc2Nzk5Nzk4OGYzMzdiYTYyMWU0ODA0ZGM2YjgwMjk1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4K
RGF0ZTogTW9uLCAxNyBNYXkgMjAxMCAxMTozNzowNyAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIFNw
YXRpYWwgTmF2aWdhdGlvbjogbWFrZSBpdCB3b3JrIHdpdGggZm9jdXNhYmxlIGVsZW1lbnRzIGlu
IG92ZXJmbG93IGNvbnRlbnQKIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zNjQ2MwoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuClBhdGNoIGJ1IEFudG9uaW8gR29t
ZXMgPHRvbmlraXRvb0B3ZWJraXQub3JnPgoKV2ViQ29yZToKClRoaXMgcGF0Y2ggYWRkcmVzc2Vz
IHRoZSBwcm9ibGVtIHdpdGggU3BhdGlhbCBOYXZpZ2F0aW9uLiBJdCBjdXJyZW50bHkgZG9lcyBu
b3QKcHJvcGVybHkgdHJhdmVyc2Ugc2Nyb2xsYWJsZSBjb250ZW50cywgaW5jbHVkaW5nIHNjcm9s
bGFibGUgZGl2J3MuIEZvciB0aGlzIHRvIHdvcmssCmEgbmV3IGNsYXNzIG1lbWJlciBjYWxsZWQg
c2Nyb2xsYWJsZUVuY2xvc2luZ0JveCB3YXMgaW50cm9kdWNlZCB0byBGb2N1c0NhbmRpZGF0ZSBj
bGFzcyB3aGljaAprZWVwcyB0cmFjayBvZiB0aGUgY3VycmVudCBzY3JvbGxhYmxlIGJveCBOb2Rl
IHdyYXBwaW5nIGEgRm9jdXNDYW5kaWRhdGUuCgpUbyBtYWtlIHVzZSBvZiBlbmNsb3NpbmdTY3Jv
bGxhYmxlQm94IG9mIEZvY3VzQ2FuZGlkYXRlLCB0aGUgRE9NIHRyYXZlcnNhbCByb3V0aW5lCihG
b2N1c0NvbnRyb2xsZXI6OmZpbmROZXh0Rm9jdXNhYmxlSW5EaXJlY3Rpb24pIHdhcyBjaGFuZ2Vk
IGFzIGZvbGxvd3M6IHdoZW4gaXQKZW5jb3VudGVycyBhIHNjcm9sbGFibGUgTm9kZSwgZWFjaCBm
b2N1c2FibGUgbm9kZSB3aGljaCBpcyAnaW5uZXInIGtlZXBzIHRyYWNrIG9mCnRoZSBjb250YWlu
ZXIgcmVmZXJlbmNlLiBCeSB0aGUgdGltZSBhIHNpYmxpbmcgb2YgdGhlIHNjcm9sbGFibGUgTm9k
ZSBpcyBlbmNvdW50ZXJlZCwKdGhlcmUgaXMgbm8gbmVlZCB0byB0cmFjayB0aGlzIHJlZmVyZW5j
ZSBhbnkgbW9yZSBhbmQgdGhlIHRyYXZlcnNhbCBhbGdvcml0aG0gY29udGludWVzCm5vcm1hbGx5
LgoKVGhlIGNvbW1vbiBjYXNlIGlzIG9idmlvdXNseSB0aGF0IHRoZXJlIGlzIG5vIHNjcm9sbGFi
bGUgY29udGFpbmVyIHdyYXBwaW5nIGl0LgoKdXBkYXRlRm9jdXNDYW5kaWRpdGVJZkNsb3NlciBs
b2dpYyB3YXMgYWxzbyBhZGFwdGVkIHRvIGZpdCB0aGUgbmVlZCBvZiB0aGUKbmV3bHkgaW50cm9k
dWNlZCBlbmNsb3NpbmdTY3JvbGxhYmxlQm94IGNsYXNzIG1lbWJlciwgZ2V0dGluZyBzaW1wbGVy
IGFuZCBtb3JlCmVhc2lseSBtYWludGFpbmFibGUuCgpUZXN0czogZmFzdC9ldmVudHMvc3BhdGlh
bC1uYXZpZ2F0aW9uL3NuYXYtZGl2LXNjcm9sbGFibGUtYnV0LXdpdGhvdXQtZm9jdXNhYmxlLWNv
bnRlbnQuaHRtbAogICAgICAgZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtY2xp
cHBlZC1vdmVyZmxvdy1jb250ZW50Lmh0bWwKCiogcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwOgoo
V2ViQ29yZTo6dXBkYXRlRm9jdXNDYW5kaWRhdGVJblNhbWVDb250YWluZXIpOgooV2ViQ29yZTo6
dXBkYXRlRm9jdXNDYW5kaWRhdGVJZkNsb3Nlcik6CihXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6
OmZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24pOgooV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVy
OjpkZWVwRmluZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbik6CiogcGFnZS9TcGF0aWFsTmF2aWdh
dGlvbi5jcHA6CihXZWJDb3JlOjppc1Njcm9sbGFibGVDb250YWluZXJOb2RlKToKKiBwYWdlL1Nw
YXRpYWxOYXZpZ2F0aW9uLmg6CihXZWJDb3JlOjpGb2N1c0NhbmRpZGF0ZTo6Rm9jdXNDYW5kaWRh
dGUpOgooV2ViQ29yZTo6Rm9jdXNDYW5kaWRhdGU6OmluU2Nyb2xsYWJsZUNvbnRhaW5lcik6CgpM
YXlvdXRUZXN0czoKCiogZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtZGl2LXNj
cm9sbGFibGUtYnV0LXdpdGhvdXQtZm9jdXNhYmxlLWNvbnRlbnQtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKiBmYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1kaXYtc2Nyb2xsYWJsZS1i
dXQtd2l0aG91dC1mb2N1c2FibGUtY29udGVudC5odG1sOiBBZGRlZC4KKiBmYXN0L2V2ZW50cy9z
cGF0aWFsLW5hdmlnYXRpb24vc25hdi1jbGlwcGVkLW92ZXJmbG93LWNvbnRlbnQtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKiBmYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1jbGlwcGVk
LW92ZXJmbG93LWNvbnRlbnQuaHRtbDogQWRkZWQuCi0tLQogTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEyICsrCiAuLi4vc25hdi1jbGlwcGVk
LW92ZXJmbG93ZWQtY29udGVudC1leHBlY3RlZC50eHQgICB8ICAgMjQgKysrCiAuLi4vc25hdi1j
bGlwcGVkLW92ZXJmbG93ZWQtY29udGVudC5odG1sICAgICAgICAgICB8ICAgODUgKysrKysrKysr
KysKIC4uLmFibGUtYnV0LXdpdGhvdXQtZm9jdXNhYmxlLWNvbnRlbnQtZXhwZWN0ZWQudHh0IHwg
ICAzNSArKysrKwogLi4udi1zY3JvbGxhYmxlLWJ1dC13aXRob3V0LWZvY3VzYWJsZS1jb250ZW50
Lmh0bWwgfCAgIDgwICsrKysrKysrKysKIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAzOSArKysrKwogV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJv
bGxlci5jcHAgICAgICAgICAgICAgICAgICAgfCAgMTUzICsrKysrKysrKysrKysrLS0tLS0tCiBX
ZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwICAgICAgICAgICAgICAgICB8ICAgMTMg
KysKIFdlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5oICAgICAgICAgICAgICAgICAgIHwg
ICAgNSArCiA5IGZpbGVzIGNoYW5nZWQsIDQwMCBpbnNlcnRpb25zKCspLCA0NiBkZWxldGlvbnMo
LSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zcGF0aWFsLW5h
dmlnYXRpb24vc25hdi1jbGlwcGVkLW92ZXJmbG93ZWQtY29udGVudC1leHBlY3RlZC50eHQKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRp
b24vc25hdi1jbGlwcGVkLW92ZXJmbG93ZWQtY29udGVudC5odG1sCiBjcmVhdGUgbW9kZSAxMDA2
NDQgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtZGl2LXNj
cm9sbGFibGUtYnV0LXdpdGhvdXQtZm9jdXNhYmxlLWNvbnRlbnQtZXhwZWN0ZWQudHh0CiBjcmVh
dGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9u
L3NuYXYtZGl2LXNjcm9sbGFibGUtYnV0LXdpdGhvdXQtZm9jdXNhYmxlLWNvbnRlbnQuaHRtbAoK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0ZWM4MmQ3Li44OTBiYmEwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDggKzEsMjAgQEAKKzIwMTAtMDUt
MTQgIEFudG9uaW8gR29tZXMgIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTcGF0aWFsIE5hdmlnYXRpb246IG1h
a2UgaXQgd29yayB3aXRoIGZvY3VzYWJsZSBlbGVtZW50cyBpbiBvdmVyZmxvdyBjb250ZW50Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjQ2MworCisg
ICAgICAgICogZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtZGl2LXNjcm9sbGFi
bGUtYnV0LXdpdGhvdXQtZm9jdXNhYmxlLWNvbnRlbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1kaXYtc2Nyb2xsYWJs
ZS1idXQtd2l0aG91dC1mb2N1c2FibGUtY29udGVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1jbGlwcGVkLW92ZXJmbG93LWNvbnRl
bnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9zcGF0aWFsLW5h
dmlnYXRpb24vc25hdi1jbGlwcGVkLW92ZXJmbG93LWNvbnRlbnQuaHRtbDogQWRkZWQuCisKIDIw
MTAtMDUtMjMgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KIAogICAgICAgICBOb3Qg
cmV2aWV3ZWQsIHVwZGF0aW5nIHRlc3RfZXhwZWN0YXRpb25zLnR4dAogCiAgICAgICAgIFtjaHJv
bWl1bV0gcmVtb3ZlIGVkaXRpbmcvcGFzdGVib2FyZC9kcm9wLWxpbmsuaHRtbCBmcm9tIHRlc3Rf
ZXhwZWN0YXRpb25zLnR4dAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9Mzk1ODAKIAogICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0
YXRpb25zLnR4dDoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NwYXRpYWwt
bmF2aWdhdGlvbi9zbmF2LWNsaXBwZWQtb3ZlcmZsb3dlZC1jb250ZW50LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWNsaXBwZWQt
b3ZlcmZsb3dlZC1jb250ZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5iMjhiMDllCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtY2xpcHBlZC1vdmVyZmxvd2VkLWNvbnRlbnQt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjQgQEAKK1RoYXQgaXMgaXMgYSBub3JtYWwgbGlua18x
LgorCitUaGlzIGlzIGEgc2Nyb2xsYWJsZSBEaXYgY3JlYXRlZCB3aXRoIHRoZSBDU1MgcHJvcGVy
dHkgb3ZlcmZsb3cuCisKK0l0IGhhcyBhIHZpc2libGUgbGlua18yLgorCisKKworCisKKworCisu
Li4gYW5kIGFuIG92ZXJmbG93ZWQgbGluayBsaWtlIGxpbmtfMy4KKworQW5kIHRoaXMgaXMgYW5v
dGhlciBub3JtYWwgbGlua180LgorCitQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuZ2V0QXR0
cmlidXRlKCJpZCIpIGlzICIxIgorUEFTUyBkb2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJp
YnV0ZSgiaWQiKSBpcyAiMSIKK1BBU1MgZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1
dGUoImlkIikgaXMgIjIiCitQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRl
KCJpZCIpIGlzICIzIgorUEFTUyBkb2N1bWVudC5hY3RpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgi
aWQiKSBpcyAiMiIKK1BBU1MgZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoImlk
IikgaXMgIjEiCitQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCJpZCIp
IGlzICJzdGFydCIKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3BhdGlh
bC1uYXZpZ2F0aW9uL3NuYXYtY2xpcHBlZC1vdmVyZmxvd2VkLWNvbnRlbnQuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWNsaXBwZWQtb3ZlcmZs
b3dlZC1jb250ZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGEz
MDFjYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NwYXRpYWwt
bmF2aWdhdGlvbi9zbmF2LWNsaXBwZWQtb3ZlcmZsb3dlZC1jb250ZW50Lmh0bWwKQEAgLTAsMCAr
MSw4NSBAQAorPGh0bWw+CisgIDwhLS0KKyAgICBUaGlzIHRlc3QgZW5zdXJlcyB0aGUgY29ycmVj
dG5lc3Mgb2YgYSBiYXNpYyBhc3BlY3Qgb2Ygc3BhdGlhbCBuYXZpZ2F0aW9uIHRyYXZlcnNhbAor
ICAgIHJvdXRpbmVzOiBmb2N1c2FibGUgZWxlbWVudHMgaW4gc2Nyb2xsYWJsZSBjb250YWluZXJz
IChlLmcuIDxkaXY+KSBzaG91bGQgYmUKKyAgICBhY2Nlc3NpYmxlLCBpbmNsdWRpbmcgb2Zmc2Ny
ZWVuIGNvbnRlbnQuCisKKyAgICAqIFByZS1jb25kaXRpb25zOgorICAgIDEpIERSVCBzdXBwb3J0
IGZvciBzcGF0aWFsIG5hdml2YXRpb24gZW5hYmxlL2Rpc2FibGUuCisKKyAgICAqIE5hdmlnYXRp
b24gc3RlcHM6CisgICAgMSkgTG9hZHMgdGhpcyBwYWdlLCBmb2N1cyBnb2VzIHRvICJzdGFydCIg
YXV0b21hdGljYWxseS4KKyAgICAyKSBNb3ZlIGZvY3VzIGRvd24gdG8gdGhlIHZpc2libGUgZm9j
dXNhYmxlIGVsZW1lbnQgaW4KKyAgICAgICBzY3JvbGxhYmxlIGRpdi4KKyAgICAzKSBUcmF2ZXJz
ZSB0aGUgcGFnZSB0aHJvdWdoIG90aGVyIGZvY3VzYWJsZSBlbGVtZW50cyBkb3duIHRoZSBwYWdl
LgorICAgICAgIGFuZCB0aGVuIGJhY2sgdXAuCisKKyAgICAqIEV4cGVjdGVkIHJlc3VsdHM6IEFs
bCBmb2N1c2FibGUgZWxlbWVudCBpbiBzY3JvbGxhYmxlIGNvbnRlbnQsIGluY2x1ZGluZworICAg
IG9mZnNjcmVlbiBvbmVzLCBzaG91bGQgYmUgYWNjZXNzaWJsZSB2aWEgc3BhdGlhbCBuYXZpZ2F0
aW9uLiAtLT4KKyAgPGhlYWQ+CisgICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyAgICAgIGRp
di5zY3JvbGwgeworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgICAgICB3aWR0aDogMzAwcHg7
CisgICAgICAgIG92ZXJmbG93OiBhdXRvOworICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjNjY2
OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2NjOworICAgICAgICBwYWRkaW5nOiA4cHg7
CisgICAgICB9CisgICAgPC9zdHlsZT4KKworICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvc3BhdGlhbC1uYXZpZ2F0aW9uLXV0aWxzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5
cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiPgorCisgICAgdmFyIHJlc3VsdE1hcCA9IFsKKyAg
ICAgIFsiRG93biIsICIxIl0sCisgICAgICBbIkRvd24iLCAiMSJdLAorICAgICAgWyJEb3duIiwg
IjIiXSwKKyAgICAgIFsiRG93biIsICIzIl0sCisgICAgICBbIlVwIiwgIjIiXSwKKyAgICAgIFsi
VXAiLCAiMSJdLAorICAgICAgWyJVcCIsICJzdGFydCJdLAorICAgICAgWyJET05FIiwgIkRPTkUi
XQorICAgIF07CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5zZXRTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQodHJ1ZSk7CisgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdFRhYlRvTGlua3NQcmVmZXJl
bmNlS2V5IiwgMSk7CisgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpCisgICAgeworICAgICAgLy8gc3RhcnRp
bmcgdGhlIHRlc3QgaXRzZWxmOiBnZXQgdG8gYSBrbm93biBwbGFjZS4KKyAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJzdGFydCIpLmZvY3VzKCk7CisKKyAgICAgIGluaXRUZXN0KHJlc3Vs
dE1hcCwgdGVzdENvbXBsZXRlZCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdENvbXBsZXRl
ZCgpCisgICAgeworICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIH0KKworICAgIHdpbmRv
dy5vbmxvYWQgPSBydW5UZXN0OworCisgICAgPC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorICA8L2hlYWQ+CisKKyAg
PGJvZHkgaWQ9InNvbWUtY29udGVudCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0
bWwiPgorICAgIDxwPlRoYXQgaXMgaXMgYSBub3JtYWwgPGEgaWQ9InN0YXJ0IiBocmVmPSJhIj5s
aW5rXzE8L2E+LjwvcD4KKyAgICA8ZGl2IGNsYXNzPSJzY3JvbGwiPgorICAgICAgPHA+VGhpcyBp
cyBhIHNjcm9sbGFibGUgRGl2IGNyZWF0ZWQgd2l0aCB0aGUgQ1NTIHByb3BlcnR5IG92ZXJmbG93
LjwvcD4KKyAgICAgIDxwPkl0IGhhcyBhIHZpc2libGUgPGEgaWQ9IjEiIGhyZWY9ImEiPmxpbmtf
MjwvYT4uPC9wPgorICAgICAgPGJyPjxicj48YnI+PGJyPjxicj48YnI+CisgICAgICA8cD4uLi4g
YW5kIGFuIG92ZXJmbG93ZWQgbGluayBsaWtlIDxhIGlkPSIyIiBocmVmPSJhIj5saW5rXzM8L2E+
LjwvcD4KKyAgICA8L2Rpdj4KKyAgICA8cD5BbmQgdGhpcyBpcyBhbm90aGVyIG5vcm1hbCA8YSBp
ZD0iMyIgaHJlZj0iYSI+bGlua180PC9hPi48L3A+CisgICAgPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+CisgIDwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtZGl2LXNjcm9sbGFibGUtYnV0LXdpdGhvdXQt
Zm9jdXNhYmxlLWNvbnRlbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
c3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtZGl2LXNjcm9sbGFibGUtYnV0LXdpdGhvdXQtZm9jdXNh
YmxlLWNvbnRlbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjc1MWI5NDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9z
cGF0aWFsLW5hdmlnYXRpb24vc25hdi1kaXYtc2Nyb2xsYWJsZS1idXQtd2l0aG91dC1mb2N1c2Fi
bGUtY29udGVudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzNSBAQAorYQorVGhpcyBpcyBhIHNj
cm9sbGFibGUgRGl2IGNyZWF0ZWQgd2l0aCB0aGUgQ1NTIHByb3BlcnR5IG92ZXJmbG93LgorCitJ
dCBoYXMgbm8ga2V5Ym9hcmQgZm9jdXNhYmxlIGVsZW1lbnRzIC4uLi4KKworCisKKworCisKKwor
CisKKworCisKKworLi4uIGFuZCBzY3JvbGxiYXJzIQorCitUaGlzIGlzIGFub3RoZXIgc2Nyb2xs
YWJsZSBkaXYgY3JlYXRlZCB3aXRoIHRoZSBDU1MgcHJvcGVydHkgb3ZlcmZsb3cuCisKK0l0IGhh
cyBhbHNvIG5vIGtleWJvYXJkIGZvY3VzYWJsZSBlbGVtZW50cyAuLi4uCisKKworCisKKworCisK
Ky4uLiBhcyB3ZWxsIGFzIHNjcm9sbGJhcnMhCisKK2UKK1BBU1MgZG9jdW1lbnQuYWN0aXZlRWxl
bWVudC5nZXRBdHRyaWJ1dGUoImlkIikgaXMgImVuZCIKK1BBU1MgZG9jdW1lbnQuYWN0aXZlRWxl
bWVudC5nZXRBdHRyaWJ1dGUoImlkIikgaXMgInN0YXJ0IgorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1kaXYtc2Nyb2xsYWJsZS1i
dXQtd2l0aG91dC1mb2N1c2FibGUtY29udGVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtZGl2LXNjcm9sbGFibGUtYnV0LXdpdGhvdXQtZm9j
dXNhYmxlLWNvbnRlbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5i
YTcwMmY3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3BhdGlh
bC1uYXZpZ2F0aW9uL3NuYXYtZGl2LXNjcm9sbGFibGUtYnV0LXdpdGhvdXQtZm9jdXNhYmxlLWNv
bnRlbnQuaHRtbApAQCAtMCwwICsxLDgwIEBACis8aHRtbD4KKyAgPCEtLQorICAgIFRoaXMgdGVz
dCBlbnN1cmVzIHRoZSBjb3JyZWN0bmVzcyBvZiBhIGJhc2ljIGFzcGVjdCBvZiBzcGF0aWFsIG5h
dmlnYXRpb24gdHJhdmVyc2FsCisgICAgcm91dGluZXM6IHNjcm9sbGFibGUgYmxvY2sgaHRtbCBl
bGVtZW50cyB3aXRob3V0IGFueSBmb2N1c2FibGUgY29udGVudCBzaG91bGQgYmUgaWdub3JlZC4K
KworICAgICogUHJlLWNvbmRpdGlvbnM6CisgICAgMSkgRFJUIHN1cHBvcnQgZm9yIHNwYXRpYWwg
bmF2aWdhdGlvbiBlbmFibGUvZGlzYWJsZS4KKworICAgICogTmF2aWdhdGlvbiBzdGVwczoKKyAg
ICAxKSBMb2FkcyB0aGlzIHBhZ2UsIGZvY3VzIGdvZXMgdG8gInN0YXJ0IiBhdXRvbWF0aWNhbGx5
LgorICAgIDIpIEZvY3VzIG1vdmVzIGZyb20gInN0YXJ0IiB0byAiZW5kIiBieXBhc3NpbmcgdGhl
IHR3byBkaXYncworICAgICAgIGluIGJldHdlZW4gdGhlbSwgb25jZSBib3RoIGhhdmUgbm8gZm9j
dXNhYmxlIGVsZW1lbnRzIGluc2lkZS4KKyAgLS0+CisgIDxoZWFkPgorICAgIDxzdHlsZSB0eXBl
PSJ0ZXh0L2NzcyI+CisgICAgICBkaXYuc2Nyb2xsIHsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsK
KyAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICBvdmVyZmxvdzogYXV0bzsKKyAgICAgICAg
Ym9yZGVyOiAxcHggc29saWQgIzY2NjsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2NjYzsK
KyAgICAgICAgcGFkZGluZzogOHB4OworICAgICAgfQorICAgIDwvc3R5bGU+CisKKyAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NwYXRpYWwtbmF2aWdhdGlvbi11dGlscy5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Ij4KKworICAg
IHZhciByZXN1bHRNYXAgPSBbCisgICAgICBbIkRvd24iLCAiZW5kIl0sCisgICAgICBbIlVwIiAg
LCAic3RhcnQiXSwKKyAgICAgIFsiRE9ORSIsICJET05FIl0KKyAgICBdOworCisgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0U3BhdGlhbE5hdmln
YXRpb25FbmFibGVkKHRydWUpOworICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQ
cmVmZXJlbmNlKCJXZWJLaXRUYWJUb0xpbmtzUHJlZmVyZW5jZUtleSIsIDEpOworICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIH0KKworICAgIGZ1bmN0aW9u
IHJ1blRlc3QoKQorICAgIHsKKyAgICAgIC8vIHN0YXJ0aW5nIHRoZSB0ZXN0IGl0c2VsZjogZ2V0
IHRvIGEga25vd24gcGxhY2UuCisgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3RhcnQi
KS5mb2N1cygpOworCisgICAgICBpbml0VGVzdChyZXN1bHRNYXAsIHRlc3RDb21wbGV0ZWQpOwor
ICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3RDb21wbGV0ZWQoKQorICAgIHsKKyAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoKTsKKyAgICB9CisKKyAgICB3aW5kb3cub25sb2FkID0gcnVuVGVzdDsKKyAg
ICA8L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+CisgIDwvaGVhZD4KKyAgPGJvZHkgaWQ9InNvbWUtY29udGVudCIgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorICAgIDxkaXY+PGEgaWQ9InN0YXJ0
IiBocmVmPSJhIj5hPC9hPjwvZGl2PgorICAgIDxkaXYgY2xhc3M9InNjcm9sbCI+CisgICAgICA8
cD5UaGlzIGlzIGEgc2Nyb2xsYWJsZSBEaXYgY3JlYXRlZCB3aXRoIHRoZSBDU1MgcHJvcGVydHkg
b3ZlcmZsb3cuPC9wPgorICAgICAgPHA+SXQgaGFzIG5vIGtleWJvYXJkIGZvY3VzYWJsZSBlbGVt
ZW50cyAuLi4uPC9wPgorICAgICAgPGJyPjxicj48YnI+PGJyPjxicj48YnI+CisgICAgICA8YnI+
PGJyPjxicj48YnI+PGJyPjxicj4KKyAgICAgIDxwPi4uLiBhbmQgc2Nyb2xsYmFycyE8L3A+Cisg
ICAgPC9kaXY+CisKKyAgICA8ZGl2IGNsYXNzPSJzY3JvbGwiPgorICAgICAgPHA+VGhpcyBpcyBh
bm90aGVyIHNjcm9sbGFibGUgZGl2IGNyZWF0ZWQgd2l0aCB0aGUgQ1NTIHByb3BlcnR5IG92ZXJm
bG93LjwvcD4KKyAgICAgIDxwPkl0IGhhcyBhbHNvIG5vIGtleWJvYXJkIGZvY3VzYWJsZSBlbGVt
ZW50cyAuLi4uPC9wPgorICAgICAgPGJyPjxicj48YnI+PGJyPjxicj48YnI+CisgICAgICA8cD4u
Li4gYXMgd2VsbCBhcyBzY3JvbGxiYXJzITwvcD4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2PjxhIGlk
PSJlbmQiIGhyZWY9ImEiPmU8L2E+PC9kaXY+CisgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
CisgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggZmFhOTBhYy4uMTQ4YzMwMCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsOCArMSw0NyBAQAorMjAx
MC0wNS0xNCAgQW50b25pbyBHb21lcyAgPHRvbmlraXRvb0B3ZWJraXQub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNwYXRpYWwgTmF2aWdhdGlv
bjogbWFrZSBpdCB3b3JrIHdpdGggZm9jdXNhYmxlIGVsZW1lbnRzIGluIG92ZXJmbG93IGNvbnRl
bnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2NDYz
CisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRyZXNzZXMgdGhlIHByb2JsZW0gd2l0aCBTcGF0aWFs
IE5hdmlnYXRpb24uIEl0IGN1cnJlbnRseSBkb2VzIG5vdAorICAgICAgICBwcm9wZXJseSB0cmF2
ZXJzZSBzY3JvbGxhYmxlIGNvbnRlbnRzLCBpbmNsdWRpbmcgc2Nyb2xsYWJsZSBkaXYncy4gRm9y
IHRoaXMgdG8gd29yaywKKyAgICAgICAgYSBuZXcgY2xhc3MgbWVtYmVyIGNhbGxlZCBzY3JvbGxh
YmxlRW5jbG9zaW5nQm94IHdhcyBpbnRyb2R1Y2VkIHRvIEZvY3VzQ2FuZGlkYXRlIGNsYXNzIHdo
aWNoCisgICAgICAgIGtlZXBzIHRyYWNrIG9mIHRoZSBjdXJyZW50IHNjcm9sbGFibGUgYm94IE5v
ZGUgd3JhcHBpbmcgYSBGb2N1c0NhbmRpZGF0ZS4KKworICAgICAgICBUbyBtYWtlIHVzZSBvZiBl
bmNsb3NpbmdTY3JvbGxhYmxlQm94IG9mIEZvY3VzQ2FuZGlkYXRlLCB0aGUgRE9NIHRyYXZlcnNh
bCByb3V0aW5lCisgICAgICAgIChGb2N1c0NvbnRyb2xsZXI6OmZpbmROZXh0Rm9jdXNhYmxlSW5E
aXJlY3Rpb24pIHdhcyBjaGFuZ2VkIGFzIGZvbGxvd3M6IHdoZW4gaXQKKyAgICAgICAgZW5jb3Vu
dGVycyBhIHNjcm9sbGFibGUgTm9kZSwgZWFjaCBmb2N1c2FibGUgbm9kZSB3aGljaCBpcyAnaW5u
ZXInIGtlZXBzIHRyYWNrIG9mCisgICAgICAgIHRoZSBjb250YWluZXIgcmVmZXJlbmNlLiBCeSB0
aGUgdGltZSBhIHNpYmxpbmcgb2YgdGhlIHNjcm9sbGFibGUgTm9kZSBpcyBlbmNvdW50ZXJlZCwK
KyAgICAgICAgdGhlcmUgaXMgbm8gbmVlZCB0byB0cmFjayB0aGlzIHJlZmVyZW5jZSBhbnkgbW9y
ZSBhbmQgdGhlIHRyYXZlcnNhbCBhbGdvcml0aG0gY29udGludWVzCisgICAgICAgIG5vcm1hbGx5
LgorCisgICAgICAgIFRoZSBjb21tb24gY2FzZSBpcyBvYnZpb3VzbHkgdGhhdCB0aGVyZSBpcyBu
byBzY3JvbGxhYmxlIGNvbnRhaW5lciB3cmFwcGluZyBpdC4KKworICAgICAgICB1cGRhdGVGb2N1
c0NhbmRpZGl0ZUlmQ2xvc2VyIGxvZ2ljIHdhcyBhbHNvIGFkYXB0ZWQgdG8gZml0IHRoZSBuZWVk
IG9mIHRoZQorICAgICAgICBuZXdseSBpbnRyb2R1Y2VkIGVuY2xvc2luZ1Njcm9sbGFibGVCb3gg
Y2xhc3MgbWVtYmVyLCBnZXR0aW5nIHNpbXBsZXIgYW5kIG1vcmUKKyAgICAgICAgZWFzaWx5IG1h
aW50YWluYWJsZS4KKworICAgICAgICBUZXN0czogZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0
aW9uL3NuYXYtZGl2LXNjcm9sbGFibGUtYnV0LXdpdGhvdXQtZm9jdXNhYmxlLWNvbnRlbnQuaHRt
bAorICAgICAgICAgICAgICAgZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtY2xp
cHBlZC1vdmVyZmxvdy1jb250ZW50Lmh0bWwKKworICAgICAgICAqIHBhZ2UvRm9jdXNDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZUZvY3VzQ2FuZGlkYXRlSW5TYW1lQ29u
dGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZUZvY3VzQ2FuZGlkYXRlSWZDbG9zZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjpmaW5kRm9jdXNhYmxlTm9kZUlu
RGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6ZGVlcEZpbmRG
b2N1c2FibGVOb2RlSW5EaXJlY3Rpb24pOgorICAgICAgICAqIHBhZ2UvU3BhdGlhbE5hdmlnYXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNTY3JvbGxhYmxlQ29udGFpbmVyTm9kZSk6Cisg
ICAgICAgICogcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9j
dXNDYW5kaWRhdGU6OkZvY3VzQ2FuZGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ2Fu
ZGlkYXRlOjppc0luU2Nyb2xsYWJsZUNvbnRhaW5lcik6CisKIDIwMTAtMDUtMjMgIFNhbSBXZWlu
aWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4K
IAogICAgICAgICBGaXggZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zOTU3NQogICAgICAgICBNYWtlIEpTIERPTU9iamVjdCBpbmhlcml0IGZyb20gSlNPYmplY3RX
aXRoR2xvYmFsT2JqZWN0IGluc3RlYWQgb2YgSlNPYmplY3QKIAogICAgICAgICAtIENoYW5nZXMg
SlNET01XaW5kb3dTaGVsbCB0byBpbmhlcml0IGZyb20gSlNPYmplY3QgaW5zdGVhZCBvZgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAgYi9XZWJDb3JlL3BhZ2Uv
Rm9jdXNDb250cm9sbGVyLmNwcAppbmRleCAwODIxOWE2Li4wODEwMTBkIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRm9jdXND
b250cm9sbGVyLmNwcApAQCAtMzM3LDExMyArMzM3LDE2OSBAQCBib29sIEZvY3VzQ29udHJvbGxl
cjo6YWR2YW5jZUZvY3VzRGlyZWN0aW9uYWxseShGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIEtl
eWJvYQogICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSk7
CiAgICAgQVNTRVJUKGVsZW1lbnQpOwogCiAgICAgc2Nyb2xsSW50b1ZpZXcoZWxlbWVudCk7CiAg
ICAgZWxlbWVudC0+Zm9jdXMoZmFsc2UpOwogICAgIHJldHVybiB0cnVlOwogfQogCi0vLyBGSVhN
RTogTWFrZSB0aGlzIG1ldGhvZCBtb3JlIG1vZHVsYXIsIGFuZCBzaW1wbGVyIHRvIHVuZGVyc3Rh
bmQgYW5kIG1haW50YWluLgotc3RhdGljIHZvaWQgdXBkYXRlRm9jdXNDYW5kaWRhdGVJZkNsb3Nl
cihOb2RlKiBmb2N1c2VkTm9kZSwgY29uc3QgRm9jdXNDYW5kaWRhdGUmIGNhbmRpZGF0ZSwgRm9j
dXNDYW5kaWRhdGUmIGNsb3Nlc3QpCitzdGF0aWMgdm9pZCB1cGRhdGVGb2N1c0NhbmRpZGF0ZUlu
U2FtZUNvbnRhaW5lcihjb25zdCBGb2N1c0NhbmRpZGF0ZSYgY2FuZGlkYXRlLCBGb2N1c0NhbmRp
ZGF0ZSYgY2xvc2VzdCkKIHsKLSAgICBib29sIHNhbWVEb2N1bWVudCA9IGNhbmRpZGF0ZS5kb2N1
bWVudCgpID09IGNsb3Nlc3QuZG9jdW1lbnQoKTsKLSAgICBpZiAoc2FtZURvY3VtZW50KSB7Ci0g
ICAgICAgIGlmIChjbG9zZXN0LmFsaWdubWVudCA+IGNhbmRpZGF0ZS5hbGlnbm1lbnQKLSAgICAg
ICAgIHx8IChjbG9zZXN0LnBhcmVudEFsaWdubWVudCAmJiBjYW5kaWRhdGUuYWxpZ25tZW50ID4g
Y2xvc2VzdC5wYXJlbnRBbGlnbm1lbnQpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0gZWxz
ZSBpZiAoY2xvc2VzdC5hbGlnbm1lbnQgPiBjYW5kaWRhdGUuYWxpZ25tZW50Ci0gICAgICAgICAg
ICAmJiAoY2xvc2VzdC5wYXJlbnRBbGlnbm1lbnQgJiYgY2FuZGlkYXRlLmFsaWdubWVudCA+IGNs
b3Nlc3QucGFyZW50QWxpZ25tZW50KSkKKyAgICBpZiAoY2xvc2VzdC5pc051bGwoKSkgeworICAg
ICAgICBjbG9zZXN0ID0gY2FuZGlkYXRlOwogICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoY2Fu
ZGlkYXRlLmFsaWdubWVudCAhPSBOb25lCi0gICAgIHx8IChjbG9zZXN0LnBhcmVudEFsaWdubWVu
dCA+PSBjYW5kaWRhdGUuYWxpZ25tZW50Ci0gICAgICYmIGNsb3Nlc3QuZG9jdW1lbnQoKSA9PSBj
YW5kaWRhdGUuZG9jdW1lbnQoKSkpIHsKLQotICAgICAgICAvLyBJZiB3ZSBhcmUgbm93IGluIGFu
IGhpZ2hlciBwcmVjZWRlbnQgY2FzZSwgbGV0cyByZXNldCB0aGUgY3VycmVudCBjbG9zZXN0J3MK
LSAgICAgICAgLy8gZGlzdGFuY2Ugc28gd2UgZm9yY2UgaXQgdG8gYmUgYmlnZ2VyIHRoYW4gYW55
IHJlc3VsdCB3ZSB3aWxsIGdldCBmcm9tCi0gICAgICAgIC8vIHNwYXRpYWxEaXN0YW5jZSgpLgot
ICAgICAgICBpZiAoY2xvc2VzdC5hbGlnbm1lbnQgPCBjYW5kaWRhdGUuYWxpZ25tZW50Ci0gICAg
ICAgICAmJiBjbG9zZXN0LnBhcmVudEFsaWdubWVudCA8IGNhbmRpZGF0ZS5hbGlnbm1lbnQpCi0g
ICAgICAgICAgICBjbG9zZXN0LmRpc3RhbmNlID0gbWF4RGlzdGFuY2UoKTsKICAgICB9CiAKLSAg
ICAvLyBCYWlsIG91dCBpZiBjYW5kaWRhdGUncyBkaXN0YW5jZSBpcyBsYXJnZXIgdGhhbiB0aGF0
IG9mIHRoZSBjbG9zZXN0IGNhbmRpZGF0ZS4KLSAgICBpZiAoY2FuZGlkYXRlLmRpc3RhbmNlID49
IGNsb3Nlc3QuZGlzdGFuY2UpCisgICAgaWYgKGNhbmRpZGF0ZS5hbGlnbm1lbnQgPT0gY2xvc2Vz
dC5hbGlnbm1lbnQpIHsKKyAgICAgICAgaWYgKGNhbmRpZGF0ZS5kaXN0YW5jZSA8IGNsb3Nlc3Qu
ZGlzdGFuY2UpCisgICAgICAgICAgICBjbG9zZXN0ID0gY2FuZGlkYXRlOwogICAgICAgICByZXR1
cm47CisgICAgfQogCi0gICAgaWYgKGNsb3Nlc3QuaXNOdWxsKCkpIHsKKyAgICBpZiAoY2FuZGlk
YXRlLmFsaWdubWVudCA+IGNsb3Nlc3QuYWxpZ25tZW50KQogICAgICAgICBjbG9zZXN0ID0gY2Fu
ZGlkYXRlOworfQorCitzdGF0aWMgdm9pZCB1cGRhdGVGb2N1c0NhbmRpZGF0ZUlmQ2xvc2VyKE5v
ZGUqIGZvY3VzZWROb2RlLCBjb25zdCBGb2N1c0NhbmRpZGF0ZSYgY2FuZGlkYXRlLCBGb2N1c0Nh
bmRpZGF0ZSYgY2xvc2VzdCkKK3sKKyAgICAvLyBGaXJzdCwgY2hlY2sgdGhlIGNvbW1vbiBjYXNl
OiBuZWl0aGVyIGNhbmRpZGF0ZSBub3IgY2xvc2VzdCBhcmUKKyAgICAvLyBpbnNpZGUgc2Nyb2xs
YWJsZSBjb250ZW50LCB0aGVuIG5vIG5lZWQgdG8gY2FyZSBhYm91dCBlbmNsb3NpbmdTY3JvbGxh
YmxlQm94CisgICAgLy8gaGV1cmlzdGljcyBvciBwYXJlbnR7RGlzdGFuY2UsQWxpZ25tZW50fSwg
YnV0IG9ubHkgZGlzdGFuY2UgYW5kIGFsaWdubWVudC4KKyAgICBpZiAoIWNhbmRpZGF0ZS5pblNj
cm9sbGFibGVDb250YWluZXIoKSAmJiAhY2xvc2VzdC5pblNjcm9sbGFibGVDb250YWluZXIoKSkg
eworICAgICAgICB1cGRhdGVGb2N1c0NhbmRpZGF0ZUluU2FtZUNvbnRhaW5lcihjYW5kaWRhdGUs
IGNsb3Nlc3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gSWYgdGhlIGZvY3Vz
ZWQgbm9kZSBhbmQgdGhlIGNhbmRhZGF0ZSBhcmUgaW4gdGhlIHNhbWUgZG9jdW1lbnQgYW5kIGN1
cnJlbnQKLSAgICAvLyBjbG9zZXN0IGNhbmRpZGF0ZSBpcyBub3QgaW4gYW4ge2l9ZnJhbWUgdGhh
dCBpcyBwcmVmZXJhYmxlIHRvIGdldCBmb2N1c2VkIC4uLgotICAgIGlmIChmb2N1c2VkTm9kZS0+
ZG9jdW1lbnQoKSA9PSBjYW5kaWRhdGUuZG9jdW1lbnQoKQotICAgICAgICAmJiBjYW5kaWRhdGUu
ZGlzdGFuY2UgPCBjbG9zZXN0LnBhcmVudERpc3RhbmNlKQotICAgICAgICBjbG9zZXN0ID0gY2Fu
ZGlkYXRlOwotICAgIGVsc2UgaWYgKGZvY3VzZWROb2RlLT5kb2N1bWVudCgpICE9IGNhbmRpZGF0
ZS5kb2N1bWVudCgpKSB7Ci0gICAgICAgIC8vIElmIHRoZSBmb2N1c2VkTm9kZSBpcyBpbiBhbiBp
bm5lciBkb2N1bWVudCBhbmQgY2FuZGlkYXRlIGlzIGluIGEKLSAgICAgICAgLy8gZGlmZmVyZW50
IGRvY3VtZW50LCB3ZSBvbmx5IGNvbnNpZGVyIHRvIGNoYW5nZSBmb2N1cyBpZiB0aGVyZSBpcyBu
b3QKLSAgICAgICAgLy8gYW5vdGhlciBhbHJlYWR5IGdvb2QgZm9jdXNhYmxlIGNhbmRpZGF0ZSBp
biB0aGUgc2FtZSBkb2N1bWVudCBhcyBmb2N1c2VkTm9kZS4KLSAgICAgICAgaWYgKCEoKGlzSW5S
b290RG9jdW1lbnQoY2FuZGlkYXRlLm5vZGUpICYmICFpc0luUm9vdERvY3VtZW50KGZvY3VzZWRO
b2RlKSkKLSAgICAgICAgICAgICYmIGZvY3VzZWROb2RlLT5kb2N1bWVudCgpID09IGNsb3Nlc3Qu
ZG9jdW1lbnQoKSkpCisgICAgYm9vbCBzYW1lQ29udGFpbmVyOworICAgIGlmIChjYW5kaWRhdGUu
ZG9jdW1lbnQoKSAhPSBjbG9zZXN0LmRvY3VtZW50KCkpCisgICAgICAgIHNhbWVDb250YWluZXIg
PSBmYWxzZTsKKyAgICBlbHNlCisgICAgICAgIHNhbWVDb250YWluZXIgPSBjYW5kaWRhdGUuZW5j
bG9zaW5nU2Nyb2xsYWJsZUJveCA9PSBjbG9zZXN0LmVuY2xvc2luZ1Njcm9sbGFibGVCb3g7CisK
KyAgICAvLyBTZWNvbmQsIGlmIGNhbmRpZGF0ZSBhbmQgY2xvc2VzdCBhcmUgaW4gdGhlIHNhbWUg
ImNvbnRhaW5lciIgKGkuZS4ge2l9ZnJhbWUgb3IgYW55CisgICAgLy8gc2Nyb2xsYWJsZSBibG9j
ayBlbGVtZW50KSwgd2UgY2FuIGhhbmRsZSB0aGVtIGFzIGNvbW1vbiBjYXNlLgorICAgIGlmIChz
YW1lQ29udGFpbmVyKSB7CisgICAgICAgIHVwZGF0ZUZvY3VzQ2FuZGlkYXRlSW5TYW1lQ29udGFp
bmVyKGNhbmRpZGF0ZSwgY2xvc2VzdCk7CisgICAgICAgIHJldHVybjsKKworICAgIC8vIExhc3Qs
IHdlIGFyZSBjb25zaWRlcmluZyBtb3ZpbmcgdG8gYSBjYW5kaWRhdGUgbG9jYXRlZCBpbiBhIGRp
ZmZlcmVudCBlbmNsb3NpbmcKKyAgICAvLyBzY3JvbGxhYmxlIGJveCB0aGFuIGNsb3Nlc3QuCisg
ICAgfSBlbHNlIHsKKyAgICAgICAgYm9vbCBpc0luSW5uZXJEb2N1bWVudCA9ICFpc0luUm9vdERv
Y3VtZW50KGZvY3VzZWROb2RlKTsKKworICAgICAgICBib29sIHNhbWVDb250YWluZXJBc0NhbmRp
ZGF0ZSA9IGlzSW5Jbm5lckRvY3VtZW50ID8gZm9jdXNlZE5vZGUtPmRvY3VtZW50KCkgPT0gY2Fu
ZGlkYXRlLmRvY3VtZW50KCkgOgorICAgICAgICAgICAgZm9jdXNlZE5vZGUtPmlzRGVzY2VuZGFu
dE9mKGNhbmRpZGF0ZS5lbmNsb3NpbmdTY3JvbGxhYmxlQm94KTsKKworICAgICAgICBib29sIHNh
bWVDb250YWluZXJBc0Nsb3Nlc3QgPSBpc0luSW5uZXJEb2N1bWVudCA/IGZvY3VzZWROb2RlLT5k
b2N1bWVudCgpID09IGNsb3Nlc3QuZG9jdW1lbnQoKSA6CisgICAgICAgICAgICBmb2N1c2VkTm9k
ZS0+aXNEZXNjZW5kYW50T2YoY2xvc2VzdC5lbmNsb3NpbmdTY3JvbGxhYmxlQm94KTsKKworICAg
ICAgICAvLyBzYW1lQ29udGFpbmVyQXNDYW5kaWRhdGUgYW5kIHNhbWVDb250YWluZXJBc0Nsb3Nl
c3QgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4KKyAgICAgICAgQVNTRVJUKCEoc2FtZUNvbnRhaW5l
ckFzQ2FuZGlkYXRlICYmIHNhbWVDb250YWluZXJBc0Nsb3Nlc3QpKTsKKworICAgICAgICBpZiAo
c2FtZUNvbnRhaW5lckFzQ2FuZGlkYXRlKSB7CiAgICAgICAgICAgICBjbG9zZXN0ID0gY2FuZGlk
YXRlOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHNhbWVD
b250YWluZXJBc0Nsb3Nlc3QpIHsKKyAgICAgICAgICAgIC8vIE5vdGhpbmcgdG8gYmUgZG9uZS4K
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vICMjIyAhc2FtZUNv
bnRhaW5lckFzQ2FuZGlkYXRlICYmICFzYW1lQ29udGFpbmVyQXNDbG9zZXN0CisgICAgICAgIC8v
IElmIGRpc3RhbmNlIGlzIHNob3J0ZXIsIGFuZCB3ZSBhcmUgdGFsa2luZyBhYm91dCBzY3JvbGxh
YmxlIGNvbnRhaW5lciwKKyAgICAgICAgLy8gbGV0cyBjb21wYXJlIHBhcmVudCBkaXN0YW5jZSBh
bmQgYWxpZ25tZW50IGJlZm9yZSBhbnl0aGluZy4KKyAgICAgICAgaWYgKGNhbmRpZGF0ZS5kaXN0
YW5jZSA8IGNsb3Nlc3QuZGlzdGFuY2UpIHsKKyAgICAgICAgICAgIGlmIChjYW5kaWRhdGUuYWxp
Z25tZW50ID49IGNsb3Nlc3QucGFyZW50QWxpZ25tZW50CisgICAgICAgICAgICAgfHwgY2FuZGlk
YXRlLnBhcmVudEFsaWdubWVudCA9PSBjbG9zZXN0LnBhcmVudEFsaWdubWVudCkgeworICAgICAg
ICAgICAgICAgIGNsb3Nlc3QgPSBjYW5kaWRhdGU7CisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgfQorCisgICAgICAgIH0gZWxzZSBpZiAoY2FuZGlkYXRlLnBhcmVudERpc3Rh
bmNlIDwgY2xvc2VzdC5kaXN0YW5jZSkgeworICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZS5wYXJl
bnRBbGlnbm1lbnQgPj0gY2xvc2VzdC5hbGlnbm1lbnQpIHsKKyAgICAgICAgICAgICAgICBjbG9z
ZXN0ID0gY2FuZGlkYXRlOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQogICAgIH0KIH0KIAogdm9pZCBGb2N1c0NvbnRyb2xsZXI6OmZpbmRGb2N1c2Fi
bGVOb2RlSW5EaXJlY3Rpb24oTm9kZSogb3V0ZXIsIE5vZGUqIGZvY3VzZWROb2RlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9jdXNEaXJlY3Rp
b24gZGlyZWN0aW9uLCBLZXlib2FyZEV2ZW50KiBldmVudCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvY3VzQ2FuZGlkYXRlJiBjbG9zZXN0Rm9j
dXNDYW5kaWRhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBGb2N1c0NhbmRpZGF0ZSYgY2FuZGlkYXRlUGFyZW50KQogewogICAgIEFT
U0VSVChvdXRlcik7CiAgICAgQVNTRVJUKGNhbmRpZGF0ZVBhcmVudC5pc051bGwoKQogICAgICAg
ICB8fCBjYW5kaWRhdGVQYXJlbnQubm9kZS0+aGFzVGFnTmFtZShmcmFtZVRhZykKLSAgICAgICAg
fHwgY2FuZGlkYXRlUGFyZW50Lm5vZGUtPmhhc1RhZ05hbWUoaWZyYW1lVGFnKSk7CisgICAgICAg
IHx8IGNhbmRpZGF0ZVBhcmVudC5ub2RlLT5oYXNUYWdOYW1lKGlmcmFtZVRhZykKKyAgICAgICAg
fHwgaXNTY3JvbGxhYmxlQ29udGFpbmVyTm9kZShjYW5kaWRhdGVQYXJlbnQubm9kZSkpOwogCiAg
ICAgLy8gV2FsayBhbGwgdGhlIGNoaWxkIG5vZGVzIGFuZCB1cGRhdGUgY2xvc2VzdEZvY3VzQ2Fu
ZGlkYXRlIGlmIHdlIGZpbmQgYSBuZWFyZXIgbm9kZS4KICAgICBOb2RlKiBjYW5kaWRhdGUgPSBv
dXRlcjsKICAgICB3aGlsZSAoY2FuZGlkYXRlKSB7CisKICAgICAgICAgLy8gSW5uZXIgZG9jdW1l
bnRzIGNhc2UuCisgICAgICAgIGlmIChjYW5kaWRhdGUtPmlzRnJhbWVPd25lckVsZW1lbnQoKSkg
eworICAgICAgICAgICAgZGVlcEZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24oY2FuZGlkYXRl
LCBmb2N1c2VkTm9kZSwgZGlyZWN0aW9uLCBldmVudCwgY2xvc2VzdEZvY3VzQ2FuZGlkYXRlKTsK
IAotICAgICAgICBpZiAoY2FuZGlkYXRlLT5pc0ZyYW1lT3duZXJFbGVtZW50KCkpCisgICAgICAg
IC8vIFNjcm9sbGFibGUgYmxvY2sgZWxlbWVudHMgKGUuZy4gPGRpdj4sIGV0YykgY2FzZS4KKyAg
ICAgICAgfSBlbHNlIGlmIChpc1Njcm9sbGFibGVDb250YWluZXJOb2RlKGNhbmRpZGF0ZSkpIHsK
ICAgICAgICAgICAgIGRlZXBGaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKGNhbmRpZGF0ZSwg
Zm9jdXNlZE5vZGUsIGRpcmVjdGlvbiwgZXZlbnQsIGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZSk7Ci0g
ICAgICAgIGVsc2UgaWYgKGNhbmRpZGF0ZSAhPSBmb2N1c2VkTm9kZSAmJiBjYW5kaWRhdGUtPmlz
S2V5Ym9hcmRGb2N1c2FibGUoZXZlbnQpKSB7CisgICAgICAgICAgICBjYW5kaWRhdGUgPSBjYW5k
aWRhdGUtPnRyYXZlcnNlTmV4dFNpYmxpbmcoKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisg
ICAgICAgIH0gZWxzZSBpZiAoY2FuZGlkYXRlICE9IGZvY3VzZWROb2RlICYmIGNhbmRpZGF0ZS0+
aXNLZXlib2FyZEZvY3VzYWJsZShldmVudCkpIHsKICAgICAgICAgICAgIEZvY3VzQ2FuZGlkYXRl
IGN1cnJlbnRGb2N1c0NhbmRpZGF0ZShjYW5kaWRhdGUpOwogCisgICAgICAgICAgICAvLyBUaGVy
ZSBhcmUgdHdvIHdheXMgdG8gaWRlbnRpZnkgd2UgYXJlIGluIGEgcmVjdXJzaXZlIGNhbGwgZnJv
bSBkZWVwRmluZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbgorICAgICAgICAgICAgLy8gKGkuZS4g
cHJvY2Vzc2luZyBhbiBlbGVtZW50IGluIGFuIGlmcmFtZSwgZnJhbWUgb3IgYSBzY3JvbGxhYmxl
IGJsb2NrIGVsZW1lbnQpOgorCisgICAgICAgICAgICAvLyAxKSBJZiBjYW5kaWRhdGVQYXJlbnQg
aXMgbm90IG51bGwsIGFuZCBpdCBob2xkcyB0aGUgZGlzdGFuY2UgYW5kIGFsaWdubWVudCBkYXRh
IG9mIHRoZQorICAgICAgICAgICAgLy8gcGFyZW50IGNvbnRhaW5lciBlbGVtZW50IGl0c2VsZi4K
KyAgICAgICAgICAgIGlmICghY2FuZGlkYXRlUGFyZW50LmlzTnVsbCgpKSB7CisgICAgICAgICAg
ICAgICAgY3VycmVudEZvY3VzQ2FuZGlkYXRlLnBhcmVudEFsaWdubWVudCA9IGNhbmRpZGF0ZVBh
cmVudC5hbGlnbm1lbnQ7CisgICAgICAgICAgICAgICAgY3VycmVudEZvY3VzQ2FuZGlkYXRlLnBh
cmVudERpc3RhbmNlID0gY2FuZGlkYXRlUGFyZW50LmRpc3RhbmNlOworICAgICAgICAgICAgICAg
IGN1cnJlbnRGb2N1c0NhbmRpZGF0ZS5lbmNsb3NpbmdTY3JvbGxhYmxlQm94ID0gY2FuZGlkYXRl
UGFyZW50Lm5vZGU7CisKKyAgICAgICAgICAgIC8vIDIpIFBhcmVudCBvZiBvdXRlciBpcyBlaXRo
ZXI6CisgICAgICAgICAgICAvLyAqIDxmcmFtZT4gb3IgPGlmcmFtZT47CisgICAgICAgICAgICAv
LyAqIG9yIGFueSBvdGhlciBzY3JvbGxhYmxlIGJsb2NrIGVsZW1lbnQuCisgICAgICAgICAgICB9
IGVsc2UgaWYgKCFpc0luUm9vdERvY3VtZW50KG91dGVyKSkgeworICAgICAgICAgICAgICAgIGlm
IChEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KG91dGVyLT5wYXJl
bnQoKSkpCisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRGb2N1c0NhbmRpZGF0ZS5lbmNsb3Np
bmdTY3JvbGxhYmxlQm94ID0gc3RhdGljX2Nhc3Q8Tm9kZSo+KGRvY3VtZW50LT5vd25lckVsZW1l
bnQoKSk7CisKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNTY3JvbGxhYmxlQ29udGFpbmVyTm9k
ZShvdXRlci0+cGFyZW50KCkpKQorICAgICAgICAgICAgICAgIGN1cnJlbnRGb2N1c0NhbmRpZGF0
ZS5lbmNsb3NpbmdTY3JvbGxhYmxlQm94ID0gb3V0ZXItPnBhcmVudCgpOworCiAgICAgICAgICAg
ICAvLyBHZXQgZGlzdGFuY2UgYW5kIGFsaWdubWVudCBmcm9tIGN1cnJlbnQgY2FuZGlkYXRlLgog
ICAgICAgICAgICAgZGlzdGFuY2VEYXRhRm9yTm9kZShkaXJlY3Rpb24sIGZvY3VzZWROb2RlLCBj
dXJyZW50Rm9jdXNDYW5kaWRhdGUpOwogCiAgICAgICAgICAgICAvLyBCYWlsIG91dCBpZiBkaXN0
YW5jZSBpcyBtYXhpbXVtLgogICAgICAgICAgICAgaWYgKGN1cnJlbnRGb2N1c0NhbmRpZGF0ZS5k
aXN0YW5jZSA9PSBtYXhEaXN0YW5jZSgpKSB7CiAgICAgICAgICAgICAgICAgY2FuZGlkYXRlID0g
Y2FuZGlkYXRlLT50cmF2ZXJzZU5leHROb2RlKG91dGVyLT5wYXJlbnQoKSk7CiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIC8vIElmIGNhbmRp
ZGF0ZVBhcmVudCBpcyBub3QgbnVsbCwgaXQgbWVhbnMgdGhhdCB3ZSBhcmUgaW4gYSByZWN1cnNp
dmUgY2FsbAotICAgICAgICAgICAgLy8gZnJvbSBkZWVwRmluZUZvY3VzYWJsZU5vZGVJbkRpcmVj
dGlvbiAoaS5lLiBwcm9jZXNzaW5nIGFuIGVsZW1lbnQgaW4gYW4gaWZyYW1lKSwKLSAgICAgICAg
ICAgIC8vIGFuZCBob2xkcyB0aGUgZGlzdGFuY2UgYW5kIGFsaWdubWVudCBkYXRhIG9mIHRoZSBp
ZnJhbWUgZWxlbWVudCBpdHNlbGYuCi0gICAgICAgICAgICBpZiAoIWNhbmRpZGF0ZVBhcmVudC5p
c051bGwoKSkgewotICAgICAgICAgICAgICAgIGN1cnJlbnRGb2N1c0NhbmRpZGF0ZS5wYXJlbnRB
bGlnbm1lbnQgPSBjYW5kaWRhdGVQYXJlbnQuYWxpZ25tZW50OwotICAgICAgICAgICAgICAgIGN1
cnJlbnRGb2N1c0NhbmRpZGF0ZS5wYXJlbnREaXN0YW5jZSA9IGNhbmRpZGF0ZVBhcmVudC5kaXN0
YW5jZTsKLSAgICAgICAgICAgIH0KLQogICAgICAgICAgICAgdXBkYXRlRm9jdXNDYW5kaWRhdGVJ
ZkNsb3Nlcihmb2N1c2VkTm9kZSwgY3VycmVudEZvY3VzQ2FuZGlkYXRlLCBjbG9zZXN0Rm9jdXND
YW5kaWRhdGUpOwogICAgICAgICB9CiAKICAgICAgICAgY2FuZGlkYXRlID0gY2FuZGlkYXRlLT50
cmF2ZXJzZU5leHROb2RlKG91dGVyLT5wYXJlbnQoKSk7CiAgICAgfQogfQogCiB2b2lkIEZvY3Vz
Q29udHJvbGxlcjo6ZGVlcEZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24oTm9kZSogY29udGFp
bmVyLCBOb2RlKiBmb2N1c2VkTm9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIEtleWJvYXJk
RXZlbnQqIGV2ZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEZvY3VzQ2FuZGlkYXRlJiBjbG9zZXN0Rm9jdXNDYW5kaWRhdGUpCiB7Ci0g
ICAgQVNTRVJUKGNvbnRhaW5lci0+aGFzVGFnTmFtZShmcmFtZVRhZykgfHwgY29udGFpbmVyLT5o
YXNUYWdOYW1lKGlmcmFtZVRhZykpOworICAgIEFTU0VSVChjb250YWluZXItPmhhc1RhZ05hbWUo
ZnJhbWVUYWcpCisgICAgICAgIHx8IGNvbnRhaW5lci0+aGFzVGFnTmFtZShpZnJhbWVUYWcpCisg
ICAgICAgIHx8IGlzU2Nyb2xsYWJsZUNvbnRhaW5lck5vZGUoY29udGFpbmVyKSk7CiAKICAgICAv
LyBUcmFjayBpZiBmb2N1c2VkTm9kZSBpcyBhIGRlc2NlbmRhbnQgb2YgdGhlIGN1cnJlbnQgY29u
dGFpbmVyIG5vZGUgYmVpbmcgcHJvY2Vzc2VkLgogICAgIGJvb2wgZGVzY2VuZGFudE9mQ29udGFp
bmVyID0gZmFsc2U7CiAgICAgTm9kZSogZmlyc3RDaGlsZCA9IDA7CiAKICAgICAvLyBJZnJhbWUg
b3IgRnJhbWUuCiAgICAgaWYgKGNvbnRhaW5lci0+aGFzVGFnTmFtZShmcmFtZVRhZykgfHwgY29u
dGFpbmVyLT5oYXNUYWdOYW1lKGlmcmFtZVRhZykpIHsKIApAQCAtNDUzLDE2ICs1MDksMjEgQEAg
dm9pZCBGb2N1c0NvbnRyb2xsZXI6OmRlZXBGaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKE5v
ZGUqIGNvbnRhaW5lciwgTm9kZSogZm8KIAogICAgICAgICBEb2N1bWVudCogaW5uZXJEb2N1bWVu
dCA9IG93bmVyLT5jb250ZW50RnJhbWUoKS0+ZG9jdW1lbnQoKTsKICAgICAgICAgaWYgKCFpbm5l
ckRvY3VtZW50KQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGRlc2NlbmRhbnRPZkNv
bnRhaW5lciA9IGlubmVyRG9jdW1lbnQgPT0gZm9jdXNlZE5vZGUtPmRvY3VtZW50KCk7CiAgICAg
ICAgIGZpcnN0Q2hpbGQgPSBpbm5lckRvY3VtZW50LT5maXJzdENoaWxkKCk7CiAKKyAgICAvLyBT
Y3JvbGxhYmxlIGJsb2NrIGVsZW1lbnRzIChlLmcuIDxkaXY+LCBldGMpCisgICAgfSBlbHNlIGlm
IChpc1Njcm9sbGFibGVDb250YWluZXJOb2RlKGNvbnRhaW5lcikpIHsKKworICAgICAgICBmaXJz
dENoaWxkID0gY29udGFpbmVyLT5maXJzdENoaWxkKCk7CisgICAgICAgIGRlc2NlbmRhbnRPZkNv
bnRhaW5lciA9IGZvY3VzZWROb2RlLT5pc0Rlc2NlbmRhbnRPZihjb250YWluZXIpOwogICAgIH0K
IAogICAgIGlmIChkZXNjZW5kYW50T2ZDb250YWluZXIpIHsKICAgICAgICAgZmluZEZvY3VzYWJs
ZU5vZGVJbkRpcmVjdGlvbihmaXJzdENoaWxkLCBmb2N1c2VkTm9kZSwgZGlyZWN0aW9uLCBldmVu
dCwgY2xvc2VzdEZvY3VzQ2FuZGlkYXRlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAg
IC8vIENoZWNrIGlmIHRoZSBjdXJyZW50IGNvbnRhaW5lciBlbGVtZW50IGl0c2VsZiBpcyBhIGdv
b2QgY2FuZGlkYXRlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24u
Y3BwIGIvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcAppbmRleCBkNDMzMzBjLi4y
MGYwMDg4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwCisr
KyBiL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAKQEAgLTUyNCw5ICs1MjQsMjIg
QEAgc3RhdGljIGJvb2wgY2hlY2tOZWdhdGl2ZUNvb3Jkc0Zvck5vZGUoTm9kZSogbm9kZSwgY29u
c3QgSW50UmVjdCYgY3VyUmVjdCkKICAgICAgICAgICAgIGNhbkJlU2Nyb2xsZWQgPSB0cnVlOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gY2FuQmVT
Y3JvbGxlZDsKIH0KIAorYm9vbCBpc1Njcm9sbGFibGVDb250YWluZXJOb2RlKE5vZGUqIG5vZGUp
Cit7CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCkpIHsKKyAgICAgICAgcmV0dXJu
IChyZW5kZXJlci0+aXNCb3goKSAmJiB0b1JlbmRlckJveChyZW5kZXJlciktPmNhbkJlU2Nyb2xs
ZWRBbmRIYXNTY3JvbGxhYmxlQXJlYSgpCisgICAgICAgICAgICAgJiYgbm9kZS0+aGFzQ2hpbGRO
b2RlcygpICYmICFub2RlLT5pc0RvY3VtZW50Tm9kZSgpKTsKKyAgICB9CisKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5oIGIvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9u
LmgKaW5kZXggZDM4ZmIwOS4uOTI1ODkwMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1NwYXRp
YWxOYXZpZ2F0aW9uLmgKKysrIGIvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmgKQEAg
LTkyLDQzICs5Miw0OCBAQCBlbnVtIFJlY3RzQWxpZ25tZW50IHsKICAgICBOb25lID0gMCwKICAg
ICBQYXJ0aWFsLAogICAgIEZ1bGwKIH07CiAKIHN0cnVjdCBGb2N1c0NhbmRpZGF0ZSB7CiAgICAg
Rm9jdXNDYW5kaWRhdGUoKQogICAgICAgICA6IG5vZGUoMCkKKyAgICAgICAgLCBlbmNsb3NpbmdT
Y3JvbGxhYmxlQm94KDApCiAgICAgICAgICwgZGlzdGFuY2UobWF4RGlzdGFuY2UoKSkKICAgICAg
ICAgLCBwYXJlbnREaXN0YW5jZShtYXhEaXN0YW5jZSgpKQogICAgICAgICAsIGFsaWdubWVudChO
b25lKQogICAgICAgICAsIHBhcmVudEFsaWdubWVudChOb25lKQogICAgIHsKICAgICB9CiAKICAg
ICBGb2N1c0NhbmRpZGF0ZShOb2RlKiBuKQogICAgICAgICA6IG5vZGUobikKKyAgICAgICAgLCBl
bmNsb3NpbmdTY3JvbGxhYmxlQm94KDApCiAgICAgICAgICwgZGlzdGFuY2UobWF4RGlzdGFuY2Uo
KSkKICAgICAgICAgLCBwYXJlbnREaXN0YW5jZShtYXhEaXN0YW5jZSgpKQogICAgICAgICAsIGFs
aWdubWVudChOb25lKQogICAgICAgICAsIHBhcmVudEFsaWdubWVudChOb25lKQogICAgIHsKICAg
ICB9CiAKICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFub2RlOyB9CisgICAgYm9v
bCBpblNjcm9sbGFibGVDb250YWluZXIoKSBjb25zdCB7IHJldHVybiBub2RlICYmIGVuY2xvc2lu
Z1Njcm9sbGFibGVCb3g7IH0KICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdCB7IHJldHVy
biBub2RlID8gbm9kZS0+ZG9jdW1lbnQoKSA6IDA7IH0KIAogICAgIE5vZGUqIG5vZGU7CisgICAg
Tm9kZSogZW5jbG9zaW5nU2Nyb2xsYWJsZUJveDsKICAgICBsb25nIGxvbmcgZGlzdGFuY2U7CiAg
ICAgbG9uZyBsb25nIHBhcmVudERpc3RhbmNlOwogICAgIFJlY3RzQWxpZ25tZW50IGFsaWdubWVu
dDsKICAgICBSZWN0c0FsaWdubWVudCBwYXJlbnRBbGlnbm1lbnQ7CiB9OwogCiB2b2lkIGRpc3Rh
bmNlRGF0YUZvck5vZGUoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBOb2RlKiBzdGFydCwgRm9j
dXNDYW5kaWRhdGUmIGNhbmRpZGF0ZSk7CiBib29sIHNjcm9sbEluRGlyZWN0aW9uKEZyYW1lKiwg
Rm9jdXNEaXJlY3Rpb24pOwogdm9pZCBzY3JvbGxJbnRvVmlldyhFbGVtZW50Kik7CiBib29sIGhh
c09mZnNjcmVlblJlY3QoTm9kZSopOwogYm9vbCBpc0luUm9vdERvY3VtZW50KE5vZGUqKTsKK2Jv
b2wgaXNTY3JvbGxhYmxlQ29udGFpbmVyTm9kZShOb2RlKik7CiAKIH0gLy8gbmFtc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gU3BhdGlhbE5hdmlnYXRpb25faAotLSAKMS43LjAuNAoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58640</attachid>
            <date>2010-06-14 06:53:09 -0700</date>
            <delta_ts>2010-06-14 07:18:42 -0700</delta_ts>
            <desc>patch v5.4 - same as patch v5.3 but rebased against tot and applicable by ews bots</desc>
            <filename>0001-Spatial-Navigation-make-it-work-with-focusable-eleme.patch</filename>
            <type>text/plain</type>
            <size>26541</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSA3MTI1MDA0N2Y3ZDFmZGYxYWQ3YjAxNzU0NTIwNDliNzhhNGI5MTE4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4K
RGF0ZTogTW9uLCAxNyBNYXkgMjAxMCAxMTozNzowNyAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIFNw
YXRpYWwgTmF2aWdhdGlvbjogbWFrZSBpdCB3b3JrIHdpdGggZm9jdXNhYmxlIGVsZW1lbnRzIGlu
IG92ZXJmbG93IGNvbnRlbnQKIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zNjQ2MwoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuClBhdGNoIGJ1IEFudG9uaW8gR29t
ZXMgPHRvbmlraXRvb0B3ZWJraXQub3JnPgoKV2ViQ29yZToKClRoaXMgcGF0Y2ggYWRkcmVzc2Vz
IHRoZSBwcm9ibGVtIHdpdGggU3BhdGlhbCBOYXZpZ2F0aW9uLiBJdCBjdXJyZW50bHkgZG9lcyBu
b3QKcHJvcGVybHkgdHJhdmVyc2Ugc2Nyb2xsYWJsZSBjb250ZW50cywgaW5jbHVkaW5nIHNjcm9s
bGFibGUgZGl2J3MuIEZvciB0aGlzIHRvIHdvcmssCmEgbmV3IGNsYXNzIG1lbWJlciBjYWxsZWQg
c2Nyb2xsYWJsZUVuY2xvc2luZ0JveCB3YXMgaW50cm9kdWNlZCB0byBGb2N1c0NhbmRpZGF0ZSBj
bGFzcyB3aGljaAprZWVwcyB0cmFjayBvZiB0aGUgY3VycmVudCBzY3JvbGxhYmxlIGJveCBOb2Rl
IHdyYXBwaW5nIGEgRm9jdXNDYW5kaWRhdGUuCgpUbyBtYWtlIHVzZSBvZiBlbmNsb3NpbmdTY3Jv
bGxhYmxlQm94IG9mIEZvY3VzQ2FuZGlkYXRlLCB0aGUgRE9NIHRyYXZlcnNhbCByb3V0aW5lCihG
b2N1c0NvbnRyb2xsZXI6OmZpbmROZXh0Rm9jdXNhYmxlSW5EaXJlY3Rpb24pIHdhcyBjaGFuZ2Vk
IGFzIGZvbGxvd3M6IHdoZW4gaXQKZW5jb3VudGVycyBhIHNjcm9sbGFibGUgTm9kZSwgZWFjaCBm
b2N1c2FibGUgbm9kZSB3aGljaCBpcyAnaW5uZXInIGtlZXBzIHRyYWNrIG9mCnRoZSBjb250YWlu
ZXIgcmVmZXJlbmNlLiBCeSB0aGUgdGltZSBhIHNpYmxpbmcgb2YgdGhlIHNjcm9sbGFibGUgTm9k
ZSBpcyBlbmNvdW50ZXJlZCwKdGhlcmUgaXMgbm8gbmVlZCB0byB0cmFjayB0aGlzIHJlZmVyZW5j
ZSBhbnkgbW9yZSBhbmQgdGhlIHRyYXZlcnNhbCBhbGdvcml0aG0gY29udGludWVzCm5vcm1hbGx5
LgoKVGhlIGNvbW1vbiBjYXNlIGlzIG9idmlvdXNseSB0aGF0IHRoZXJlIGlzIG5vIHNjcm9sbGFi
bGUgY29udGFpbmVyIHdyYXBwaW5nIGl0LgoKdXBkYXRlRm9jdXNDYW5kaWRpdGVJZkNsb3NlciBs
b2dpYyB3YXMgYWxzbyBhZGFwdGVkIHRvIGZpdCB0aGUgbmVlZCBvZiB0aGUKbmV3bHkgaW50cm9k
dWNlZCBlbmNsb3NpbmdTY3JvbGxhYmxlQm94IGNsYXNzIG1lbWJlciwgZ2V0dGluZyBzaW1wbGVy
IGFuZCBtb3JlCmVhc2lseSBtYWludGFpbmFibGUuCgpUZXN0czogZmFzdC9ldmVudHMvc3BhdGlh
bC1uYXZpZ2F0aW9uL3NuYXYtZGl2LXNjcm9sbGFibGUtYnV0LXdpdGhvdXQtZm9jdXNhYmxlLWNv
bnRlbnQuaHRtbAogICAgICAgZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtY2xp
cHBlZC1vdmVyZmxvdy1jb250ZW50Lmh0bWwKCiogcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwOgoo
V2ViQ29yZTo6dXBkYXRlRm9jdXNDYW5kaWRhdGVJblNhbWVDb250YWluZXIpOgooV2ViQ29yZTo6
dXBkYXRlRm9jdXNDYW5kaWRhdGVJZkNsb3Nlcik6CihXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6
OmZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24pOgooV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVy
OjpkZWVwRmluZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbik6CiogcGFnZS9TcGF0aWFsTmF2aWdh
dGlvbi5jcHA6CihXZWJDb3JlOjppc1Njcm9sbGFibGVDb250YWluZXJOb2RlKToKKiBwYWdlL1Nw
YXRpYWxOYXZpZ2F0aW9uLmg6CihXZWJDb3JlOjpGb2N1c0NhbmRpZGF0ZTo6Rm9jdXNDYW5kaWRh
dGUpOgooV2ViQ29yZTo6Rm9jdXNDYW5kaWRhdGU6OmluU2Nyb2xsYWJsZUNvbnRhaW5lcik6CgpM
YXlvdXRUZXN0czoKCiogZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtZGl2LXNj
cm9sbGFibGUtYnV0LXdpdGhvdXQtZm9jdXNhYmxlLWNvbnRlbnQtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKiBmYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1kaXYtc2Nyb2xsYWJsZS1i
dXQtd2l0aG91dC1mb2N1c2FibGUtY29udGVudC5odG1sOiBBZGRlZC4KKiBmYXN0L2V2ZW50cy9z
cGF0aWFsLW5hdmlnYXRpb24vc25hdi1jbGlwcGVkLW92ZXJmbG93LWNvbnRlbnQtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKiBmYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1jbGlwcGVk
LW92ZXJmbG93LWNvbnRlbnQuaHRtbDogQWRkZWQuCi0tLQogTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEyICsrCiAuLi4vc25hdi1jbGlwcGVk
LW92ZXJmbG93ZWQtY29udGVudC1leHBlY3RlZC50eHQgICB8ICAgMjQgKysrCiAuLi4vc25hdi1j
bGlwcGVkLW92ZXJmbG93ZWQtY29udGVudC5odG1sICAgICAgICAgICB8ICAgODUgKysrKysrKysr
KysKIC4uLmFibGUtYnV0LXdpdGhvdXQtZm9jdXNhYmxlLWNvbnRlbnQtZXhwZWN0ZWQudHh0IHwg
ICAzNSArKysrKwogLi4udi1zY3JvbGxhYmxlLWJ1dC13aXRob3V0LWZvY3VzYWJsZS1jb250ZW50
Lmh0bWwgfCAgIDgwICsrKysrKysrKysKIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAzOSArKysrKwogV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJv
bGxlci5jcHAgICAgICAgICAgICAgICAgICAgfCAgMTUzICsrKysrKysrKysrKysrLS0tLS0tCiBX
ZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwICAgICAgICAgICAgICAgICB8ICAgMTMg
KysKIFdlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5oICAgICAgICAgICAgICAgICAgIHwg
ICAgNSArCiA5IGZpbGVzIGNoYW5nZWQsIDQwMCBpbnNlcnRpb25zKCspLCA0NiBkZWxldGlvbnMo
LSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zcGF0aWFsLW5h
dmlnYXRpb24vc25hdi1jbGlwcGVkLW92ZXJmbG93ZWQtY29udGVudC1leHBlY3RlZC50eHQKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRp
b24vc25hdi1jbGlwcGVkLW92ZXJmbG93ZWQtY29udGVudC5odG1sCiBjcmVhdGUgbW9kZSAxMDA2
NDQgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtZGl2LXNj
cm9sbGFibGUtYnV0LXdpdGhvdXQtZm9jdXNhYmxlLWNvbnRlbnQtZXhwZWN0ZWQudHh0CiBjcmVh
dGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9u
L3NuYXYtZGl2LXNjcm9sbGFibGUtYnV0LXdpdGhvdXQtZm9jdXNhYmxlLWNvbnRlbnQuaHRtbAoK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2ODM5OWUxLi5hM2E2OGRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDUt
MTQgIEFudG9uaW8gR29tZXMgIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTcGF0aWFsIE5hdmlnYXRpb246IG1h
a2UgaXQgd29yayB3aXRoIGZvY3VzYWJsZSBlbGVtZW50cyBpbiBvdmVyZmxvdyBjb250ZW50Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjQ2MworCisg
ICAgICAgICogZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtZGl2LXNjcm9sbGFi
bGUtYnV0LXdpdGhvdXQtZm9jdXNhYmxlLWNvbnRlbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1kaXYtc2Nyb2xsYWJs
ZS1idXQtd2l0aG91dC1mb2N1c2FibGUtY29udGVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1jbGlwcGVkLW92ZXJmbG93LWNvbnRl
bnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9zcGF0aWFsLW5h
dmlnYXRpb24vc25hdi1jbGlwcGVkLW92ZXJmbG93LWNvbnRlbnQuaHRtbDogQWRkZWQuCisKIDIw
MTAtMDYtMTMgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBbGRlci4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWNsaXBwZWQtb3ZlcmZsb3dlZC1jb250ZW50
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlv
bi9zbmF2LWNsaXBwZWQtb3ZlcmZsb3dlZC1jb250ZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjhiMDllCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtY2xpcHBlZC1vdmVy
Zmxvd2VkLWNvbnRlbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjQgQEAKK1RoYXQgaXMgaXMg
YSBub3JtYWwgbGlua18xLgorCitUaGlzIGlzIGEgc2Nyb2xsYWJsZSBEaXYgY3JlYXRlZCB3aXRo
IHRoZSBDU1MgcHJvcGVydHkgb3ZlcmZsb3cuCisKK0l0IGhhcyBhIHZpc2libGUgbGlua18yLgor
CisKKworCisKKworCisuLi4gYW5kIGFuIG92ZXJmbG93ZWQgbGluayBsaWtlIGxpbmtfMy4KKwor
QW5kIHRoaXMgaXMgYW5vdGhlciBub3JtYWwgbGlua180LgorCitQQVNTIGRvY3VtZW50LmFjdGl2
ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCJpZCIpIGlzICIxIgorUEFTUyBkb2N1bWVudC5hY3RpdmVF
bGVtZW50LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAiMSIKK1BBU1MgZG9jdW1lbnQuYWN0aXZlRWxl
bWVudC5nZXRBdHRyaWJ1dGUoImlkIikgaXMgIjIiCitQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1l
bnQuZ2V0QXR0cmlidXRlKCJpZCIpIGlzICIzIgorUEFTUyBkb2N1bWVudC5hY3RpdmVFbGVtZW50
LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAiMiIKK1BBU1MgZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5n
ZXRBdHRyaWJ1dGUoImlkIikgaXMgIjEiCitQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuZ2V0
QXR0cmlidXRlKCJpZCIpIGlzICJzdGFydCIKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtY2xpcHBlZC1vdmVyZmxvd2VkLWNvbnRl
bnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2
LWNsaXBwZWQtb3ZlcmZsb3dlZC1jb250ZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMGEzMDFjYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWNsaXBwZWQtb3ZlcmZsb3dlZC1jb250ZW50
Lmh0bWwKQEAgLTAsMCArMSw4NSBAQAorPGh0bWw+CisgIDwhLS0KKyAgICBUaGlzIHRlc3QgZW5z
dXJlcyB0aGUgY29ycmVjdG5lc3Mgb2YgYSBiYXNpYyBhc3BlY3Qgb2Ygc3BhdGlhbCBuYXZpZ2F0
aW9uIHRyYXZlcnNhbAorICAgIHJvdXRpbmVzOiBmb2N1c2FibGUgZWxlbWVudHMgaW4gc2Nyb2xs
YWJsZSBjb250YWluZXJzIChlLmcuIDxkaXY+KSBzaG91bGQgYmUKKyAgICBhY2Nlc3NpYmxlLCBp
bmNsdWRpbmcgb2Zmc2NyZWVuIGNvbnRlbnQuCisKKyAgICAqIFByZS1jb25kaXRpb25zOgorICAg
IDEpIERSVCBzdXBwb3J0IGZvciBzcGF0aWFsIG5hdml2YXRpb24gZW5hYmxlL2Rpc2FibGUuCisK
KyAgICAqIE5hdmlnYXRpb24gc3RlcHM6CisgICAgMSkgTG9hZHMgdGhpcyBwYWdlLCBmb2N1cyBn
b2VzIHRvICJzdGFydCIgYXV0b21hdGljYWxseS4KKyAgICAyKSBNb3ZlIGZvY3VzIGRvd24gdG8g
dGhlIHZpc2libGUgZm9jdXNhYmxlIGVsZW1lbnQgaW4KKyAgICAgICBzY3JvbGxhYmxlIGRpdi4K
KyAgICAzKSBUcmF2ZXJzZSB0aGUgcGFnZSB0aHJvdWdoIG90aGVyIGZvY3VzYWJsZSBlbGVtZW50
cyBkb3duIHRoZSBwYWdlLgorICAgICAgIGFuZCB0aGVuIGJhY2sgdXAuCisKKyAgICAqIEV4cGVj
dGVkIHJlc3VsdHM6IEFsbCBmb2N1c2FibGUgZWxlbWVudCBpbiBzY3JvbGxhYmxlIGNvbnRlbnQs
IGluY2x1ZGluZworICAgIG9mZnNjcmVlbiBvbmVzLCBzaG91bGQgYmUgYWNjZXNzaWJsZSB2aWEg
c3BhdGlhbCBuYXZpZ2F0aW9uLiAtLT4KKyAgPGhlYWQ+CisgICAgPHN0eWxlIHR5cGU9InRleHQv
Y3NzIj4KKyAgICAgIGRpdi5zY3JvbGwgeworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgICAg
ICB3aWR0aDogMzAwcHg7CisgICAgICAgIG92ZXJmbG93OiBhdXRvOworICAgICAgICBib3JkZXI6
IDFweCBzb2xpZCAjNjY2OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2NjOworICAgICAg
ICBwYWRkaW5nOiA4cHg7CisgICAgICB9CisgICAgPC9zdHlsZT4KKworICAgIDxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvc3BhdGlhbC1uYXZpZ2F0aW9uLXV0aWxzLmpzIj48L3NjcmlwdD4K
KyAgICA8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiPgorCisgICAgdmFyIHJl
c3VsdE1hcCA9IFsKKyAgICAgIFsiRG93biIsICIxIl0sCisgICAgICBbIkRvd24iLCAiMSJdLAor
ICAgICAgWyJEb3duIiwgIjIiXSwKKyAgICAgIFsiRG93biIsICIzIl0sCisgICAgICBbIlVwIiwg
IjIiXSwKKyAgICAgIFsiVXAiLCAiMSJdLAorICAgICAgWyJVcCIsICJzdGFydCJdLAorICAgICAg
WyJET05FIiwgIkRPTkUiXQorICAgIF07CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7CisgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQodHJ1ZSk7
CisgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdFRh
YlRvTGlua3NQcmVmZXJlbmNlS2V5IiwgMSk7CisgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpCisgICAgewor
ICAgICAgLy8gc3RhcnRpbmcgdGhlIHRlc3QgaXRzZWxmOiBnZXQgdG8gYSBrbm93biBwbGFjZS4K
KyAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdGFydCIpLmZvY3VzKCk7CisKKyAgICAg
IGluaXRUZXN0KHJlc3VsdE1hcCwgdGVzdENvbXBsZXRlZCk7CisgICAgfQorCisgICAgZnVuY3Rp
b24gdGVzdENvbXBsZXRlZCgpCisgICAgeworICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAg
IH0KKworICAgIHdpbmRvdy5vbmxvYWQgPSBydW5UZXN0OworCisgICAgPC9zY3JpcHQ+CisgICAg
PHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
ICA8L2hlYWQ+CisKKyAgPGJvZHkgaWQ9InNvbWUtY29udGVudCIgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGh0bWwiPgorICAgIDxwPlRoYXQgaXMgaXMgYSBub3JtYWwgPGEgaWQ9InN0
YXJ0IiBocmVmPSJhIj5saW5rXzE8L2E+LjwvcD4KKyAgICA8ZGl2IGNsYXNzPSJzY3JvbGwiPgor
ICAgICAgPHA+VGhpcyBpcyBhIHNjcm9sbGFibGUgRGl2IGNyZWF0ZWQgd2l0aCB0aGUgQ1NTIHBy
b3BlcnR5IG92ZXJmbG93LjwvcD4KKyAgICAgIDxwPkl0IGhhcyBhIHZpc2libGUgPGEgaWQ9IjEi
IGhyZWY9ImEiPmxpbmtfMjwvYT4uPC9wPgorICAgICAgPGJyPjxicj48YnI+PGJyPjxicj48YnI+
CisgICAgICA8cD4uLi4gYW5kIGFuIG92ZXJmbG93ZWQgbGluayBsaWtlIDxhIGlkPSIyIiBocmVm
PSJhIj5saW5rXzM8L2E+LjwvcD4KKyAgICA8L2Rpdj4KKyAgICA8cD5BbmQgdGhpcyBpcyBhbm90
aGVyIG5vcm1hbCA8YSBpZD0iMyIgaHJlZj0iYSI+bGlua180PC9hPi48L3A+CisgICAgPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+CisgIDwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtZGl2LXNjcm9sbGFi
bGUtYnV0LXdpdGhvdXQtZm9jdXNhYmxlLWNvbnRlbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtZGl2LXNjcm9sbGFibGUtYnV0
LXdpdGhvdXQtZm9jdXNhYmxlLWNvbnRlbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjc1MWI5NDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1kaXYtc2Nyb2xsYWJsZS1idXQt
d2l0aG91dC1mb2N1c2FibGUtY29udGVudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzNSBAQAor
YQorVGhpcyBpcyBhIHNjcm9sbGFibGUgRGl2IGNyZWF0ZWQgd2l0aCB0aGUgQ1NTIHByb3BlcnR5
IG92ZXJmbG93LgorCitJdCBoYXMgbm8ga2V5Ym9hcmQgZm9jdXNhYmxlIGVsZW1lbnRzIC4uLi4K
KworCisKKworCisKKworCisKKworCisKKworLi4uIGFuZCBzY3JvbGxiYXJzIQorCitUaGlzIGlz
IGFub3RoZXIgc2Nyb2xsYWJsZSBkaXYgY3JlYXRlZCB3aXRoIHRoZSBDU1MgcHJvcGVydHkgb3Zl
cmZsb3cuCisKK0l0IGhhcyBhbHNvIG5vIGtleWJvYXJkIGZvY3VzYWJsZSBlbGVtZW50cyAuLi4u
CisKKworCisKKworCisKKy4uLiBhcyB3ZWxsIGFzIHNjcm9sbGJhcnMhCisKK2UKK1BBU1MgZG9j
dW1lbnQuYWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoImlkIikgaXMgImVuZCIKK1BBU1MgZG9j
dW1lbnQuYWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoImlkIikgaXMgInN0YXJ0IgorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1k
aXYtc2Nyb2xsYWJsZS1idXQtd2l0aG91dC1mb2N1c2FibGUtY29udGVudC5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtZGl2LXNjcm9sbGFibGUt
YnV0LXdpdGhvdXQtZm9jdXNhYmxlLWNvbnRlbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5iYTcwMmY3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtZGl2LXNjcm9sbGFibGUtYnV0LXdpdGhv
dXQtZm9jdXNhYmxlLWNvbnRlbnQuaHRtbApAQCAtMCwwICsxLDgwIEBACis8aHRtbD4KKyAgPCEt
LQorICAgIFRoaXMgdGVzdCBlbnN1cmVzIHRoZSBjb3JyZWN0bmVzcyBvZiBhIGJhc2ljIGFzcGVj
dCBvZiBzcGF0aWFsIG5hdmlnYXRpb24gdHJhdmVyc2FsCisgICAgcm91dGluZXM6IHNjcm9sbGFi
bGUgYmxvY2sgaHRtbCBlbGVtZW50cyB3aXRob3V0IGFueSBmb2N1c2FibGUgY29udGVudCBzaG91
bGQgYmUgaWdub3JlZC4KKworICAgICogUHJlLWNvbmRpdGlvbnM6CisgICAgMSkgRFJUIHN1cHBv
cnQgZm9yIHNwYXRpYWwgbmF2aWdhdGlvbiBlbmFibGUvZGlzYWJsZS4KKworICAgICogTmF2aWdh
dGlvbiBzdGVwczoKKyAgICAxKSBMb2FkcyB0aGlzIHBhZ2UsIGZvY3VzIGdvZXMgdG8gInN0YXJ0
IiBhdXRvbWF0aWNhbGx5LgorICAgIDIpIEZvY3VzIG1vdmVzIGZyb20gInN0YXJ0IiB0byAiZW5k
IiBieXBhc3NpbmcgdGhlIHR3byBkaXYncworICAgICAgIGluIGJldHdlZW4gdGhlbSwgb25jZSBi
b3RoIGhhdmUgbm8gZm9jdXNhYmxlIGVsZW1lbnRzIGluc2lkZS4KKyAgLS0+CisgIDxoZWFkPgor
ICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisgICAgICBkaXYuc2Nyb2xsIHsKKyAgICAgICAg
aGVpZ2h0OiAyMDBweDsKKyAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICBvdmVyZmxvdzog
YXV0bzsKKyAgICAgICAgYm9yZGVyOiAxcHggc29saWQgIzY2NjsKKyAgICAgICAgYmFja2dyb3Vu
ZC1jb2xvcjogI2NjYzsKKyAgICAgICAgcGFkZGluZzogOHB4OworICAgICAgfQorICAgIDwvc3R5
bGU+CisKKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NwYXRpYWwtbmF2aWdhdGlv
bi11dGlscy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZh
c2NyaXB0Ij4KKworICAgIHZhciByZXN1bHRNYXAgPSBbCisgICAgICBbIkRvd24iLCAiZW5kIl0s
CisgICAgICBbIlVwIiAgLCAic3RhcnQiXSwKKyAgICAgIFsiRE9ORSIsICJET05FIl0KKyAgICBd
OworCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
c2V0U3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKHRydWUpOworICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRUYWJUb0xpbmtzUHJlZmVyZW5jZUtleSIs
IDEpOworICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIH0K
KworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQorICAgIHsKKyAgICAgIC8vIHN0YXJ0aW5nIHRoZSB0
ZXN0IGl0c2VsZjogZ2V0IHRvIGEga25vd24gcGxhY2UuCisgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgic3RhcnQiKS5mb2N1cygpOworCisgICAgICBpbml0VGVzdChyZXN1bHRNYXAsIHRl
c3RDb21wbGV0ZWQpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3RDb21wbGV0ZWQoKQorICAg
IHsKKyAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB9CisKKyAgICB3aW5kb3cub25sb2Fk
ID0gcnVuVGVzdDsKKyAgICA8L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisgIDwvaGVhZD4KKyAgPGJvZHkgaWQ9InNv
bWUtY29udGVudCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorICAgIDxk
aXY+PGEgaWQ9InN0YXJ0IiBocmVmPSJhIj5hPC9hPjwvZGl2PgorICAgIDxkaXYgY2xhc3M9InNj
cm9sbCI+CisgICAgICA8cD5UaGlzIGlzIGEgc2Nyb2xsYWJsZSBEaXYgY3JlYXRlZCB3aXRoIHRo
ZSBDU1MgcHJvcGVydHkgb3ZlcmZsb3cuPC9wPgorICAgICAgPHA+SXQgaGFzIG5vIGtleWJvYXJk
IGZvY3VzYWJsZSBlbGVtZW50cyAuLi4uPC9wPgorICAgICAgPGJyPjxicj48YnI+PGJyPjxicj48
YnI+CisgICAgICA8YnI+PGJyPjxicj48YnI+PGJyPjxicj4KKyAgICAgIDxwPi4uLiBhbmQgc2Ny
b2xsYmFycyE8L3A+CisgICAgPC9kaXY+CisKKyAgICA8ZGl2IGNsYXNzPSJzY3JvbGwiPgorICAg
ICAgPHA+VGhpcyBpcyBhbm90aGVyIHNjcm9sbGFibGUgZGl2IGNyZWF0ZWQgd2l0aCB0aGUgQ1NT
IHByb3BlcnR5IG92ZXJmbG93LjwvcD4KKyAgICAgIDxwPkl0IGhhcyBhbHNvIG5vIGtleWJvYXJk
IGZvY3VzYWJsZSBlbGVtZW50cyAuLi4uPC9wPgorICAgICAgPGJyPjxicj48YnI+PGJyPjxicj48
YnI+CisgICAgICA8cD4uLi4gYXMgd2VsbCBhcyBzY3JvbGxiYXJzITwvcD4KKyAgICA8L2Rpdj4K
KyAgICA8ZGl2PjxhIGlkPSJlbmQiIGhyZWY9ImEiPmU8L2E+PC9kaXY+CisgICAgPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+CisgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWNlNWNiOC4uMDM5M2U0OSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MiBAQAorMjAxMC0wNS0xNCAgQW50b25pbyBHb21lcyAgPHRvbmlraXRvb0B3ZWJraXQu
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNw
YXRpYWwgTmF2aWdhdGlvbjogbWFrZSBpdCB3b3JrIHdpdGggZm9jdXNhYmxlIGVsZW1lbnRzIGlu
IG92ZXJmbG93IGNvbnRlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTM2NDYzCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRyZXNzZXMgdGhlIHByb2Js
ZW0gd2l0aCBTcGF0aWFsIE5hdmlnYXRpb24uIEl0IGN1cnJlbnRseSBkb2VzIG5vdAorICAgICAg
ICBwcm9wZXJseSB0cmF2ZXJzZSBzY3JvbGxhYmxlIGNvbnRlbnRzLCBpbmNsdWRpbmcgc2Nyb2xs
YWJsZSBkaXYncy4gRm9yIHRoaXMgdG8gd29yaywKKyAgICAgICAgYSBuZXcgY2xhc3MgbWVtYmVy
IGNhbGxlZCBzY3JvbGxhYmxlRW5jbG9zaW5nQm94IHdhcyBpbnRyb2R1Y2VkIHRvIEZvY3VzQ2Fu
ZGlkYXRlIGNsYXNzIHdoaWNoCisgICAgICAgIGtlZXBzIHRyYWNrIG9mIHRoZSBjdXJyZW50IHNj
cm9sbGFibGUgYm94IE5vZGUgd3JhcHBpbmcgYSBGb2N1c0NhbmRpZGF0ZS4KKworICAgICAgICBU
byBtYWtlIHVzZSBvZiBlbmNsb3NpbmdTY3JvbGxhYmxlQm94IG9mIEZvY3VzQ2FuZGlkYXRlLCB0
aGUgRE9NIHRyYXZlcnNhbCByb3V0aW5lCisgICAgICAgIChGb2N1c0NvbnRyb2xsZXI6OmZpbmRO
ZXh0Rm9jdXNhYmxlSW5EaXJlY3Rpb24pIHdhcyBjaGFuZ2VkIGFzIGZvbGxvd3M6IHdoZW4gaXQK
KyAgICAgICAgZW5jb3VudGVycyBhIHNjcm9sbGFibGUgTm9kZSwgZWFjaCBmb2N1c2FibGUgbm9k
ZSB3aGljaCBpcyAnaW5uZXInIGtlZXBzIHRyYWNrIG9mCisgICAgICAgIHRoZSBjb250YWluZXIg
cmVmZXJlbmNlLiBCeSB0aGUgdGltZSBhIHNpYmxpbmcgb2YgdGhlIHNjcm9sbGFibGUgTm9kZSBp
cyBlbmNvdW50ZXJlZCwKKyAgICAgICAgdGhlcmUgaXMgbm8gbmVlZCB0byB0cmFjayB0aGlzIHJl
ZmVyZW5jZSBhbnkgbW9yZSBhbmQgdGhlIHRyYXZlcnNhbCBhbGdvcml0aG0gY29udGludWVzCisg
ICAgICAgIG5vcm1hbGx5LgorCisgICAgICAgIFRoZSBjb21tb24gY2FzZSBpcyBvYnZpb3VzbHkg
dGhhdCB0aGVyZSBpcyBubyBzY3JvbGxhYmxlIGNvbnRhaW5lciB3cmFwcGluZyBpdC4KKworICAg
ICAgICB1cGRhdGVGb2N1c0NhbmRpZGl0ZUlmQ2xvc2VyIGxvZ2ljIHdhcyBhbHNvIGFkYXB0ZWQg
dG8gZml0IHRoZSBuZWVkIG9mIHRoZQorICAgICAgICBuZXdseSBpbnRyb2R1Y2VkIGVuY2xvc2lu
Z1Njcm9sbGFibGVCb3ggY2xhc3MgbWVtYmVyLCBnZXR0aW5nIHNpbXBsZXIgYW5kIG1vcmUKKyAg
ICAgICAgZWFzaWx5IG1haW50YWluYWJsZS4KKworICAgICAgICBUZXN0czogZmFzdC9ldmVudHMv
c3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtZGl2LXNjcm9sbGFibGUtYnV0LXdpdGhvdXQtZm9jdXNh
YmxlLWNvbnRlbnQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZp
Z2F0aW9uL3NuYXYtY2xpcHBlZC1vdmVyZmxvdy1jb250ZW50Lmh0bWwKKworICAgICAgICAqIHBh
Z2UvRm9jdXNDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZUZvY3VzQ2Fu
ZGlkYXRlSW5TYW1lQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZUZvY3VzQ2Fu
ZGlkYXRlSWZDbG9zZXIpOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjpmaW5k
Rm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJv
bGxlcjo6ZGVlcEZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24pOgorICAgICAgICAqIHBhZ2Uv
U3BhdGlhbE5hdmlnYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNTY3JvbGxhYmxlQ29u
dGFpbmVyTm9kZSk6CisgICAgICAgICogcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5oOgorICAgICAg
ICAoV2ViQ29yZTo6Rm9jdXNDYW5kaWRhdGU6OkZvY3VzQ2FuZGlkYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkZvY3VzQ2FuZGlkYXRlOjppc0luU2Nyb2xsYWJsZUNvbnRhaW5lcik6CisKIDIwMTAt
MDYtMTMgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9Gb2N1c0Nv
bnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKaW5kZXggNWVl
NDZiYy4uZmJlMTAzNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5j
cHAKKysrIGIvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKQEAgLTM0Miw1MSArMzQy
LDg1IEBAIGJvb2wgRm9jdXNDb250cm9sbGVyOjphZHZhbmNlRm9jdXNEaXJlY3Rpb25hbGx5KEZv
Y3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgS2V5Ym9hCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLS8v
IEZJWE1FOiBNYWtlIHRoaXMgbWV0aG9kIG1vcmUgbW9kdWxhciwgYW5kIHNpbXBsZXIgdG8gdW5k
ZXJzdGFuZCBhbmQgbWFpbnRhaW4uCi1zdGF0aWMgdm9pZCB1cGRhdGVGb2N1c0NhbmRpZGF0ZUlm
Q2xvc2VyKE5vZGUqIGZvY3VzZWROb2RlLCBjb25zdCBGb2N1c0NhbmRpZGF0ZSYgY2FuZGlkYXRl
LCBGb2N1c0NhbmRpZGF0ZSYgY2xvc2VzdCkKK3N0YXRpYyB2b2lkIHVwZGF0ZUZvY3VzQ2FuZGlk
YXRlSW5TYW1lQ29udGFpbmVyKGNvbnN0IEZvY3VzQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIEZvY3Vz
Q2FuZGlkYXRlJiBjbG9zZXN0KQogewotICAgIGJvb2wgc2FtZURvY3VtZW50ID0gY2FuZGlkYXRl
LmRvY3VtZW50KCkgPT0gY2xvc2VzdC5kb2N1bWVudCgpOwotICAgIGlmIChzYW1lRG9jdW1lbnQp
IHsKLSAgICAgICAgaWYgKGNsb3Nlc3QuYWxpZ25tZW50ID4gY2FuZGlkYXRlLmFsaWdubWVudAot
ICAgICAgICAgfHwgKGNsb3Nlc3QucGFyZW50QWxpZ25tZW50ICYmIGNhbmRpZGF0ZS5hbGlnbm1l
bnQgPiBjbG9zZXN0LnBhcmVudEFsaWdubWVudCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
fSBlbHNlIGlmIChjbG9zZXN0LmFsaWdubWVudCA+IGNhbmRpZGF0ZS5hbGlnbm1lbnQKLSAgICAg
ICAgICAgICYmIChjbG9zZXN0LnBhcmVudEFsaWdubWVudCAmJiBjYW5kaWRhdGUuYWxpZ25tZW50
ID4gY2xvc2VzdC5wYXJlbnRBbGlnbm1lbnQpKQorICAgIGlmIChjbG9zZXN0LmlzTnVsbCgpKSB7
CisgICAgICAgIGNsb3Nlc3QgPSBjYW5kaWRhdGU7CiAgICAgICAgIHJldHVybjsKLQotICAgIGlm
IChjYW5kaWRhdGUuYWxpZ25tZW50ICE9IE5vbmUKLSAgICAgfHwgKGNsb3Nlc3QucGFyZW50QWxp
Z25tZW50ID49IGNhbmRpZGF0ZS5hbGlnbm1lbnQKLSAgICAgJiYgY2xvc2VzdC5kb2N1bWVudCgp
ID09IGNhbmRpZGF0ZS5kb2N1bWVudCgpKSkgewotCi0gICAgICAgIC8vIElmIHdlIGFyZSBub3cg
aW4gYW4gaGlnaGVyIHByZWNlZGVudCBjYXNlLCBsZXRzIHJlc2V0IHRoZSBjdXJyZW50IGNsb3Nl
c3QncwotICAgICAgICAvLyBkaXN0YW5jZSBzbyB3ZSBmb3JjZSBpdCB0byBiZSBiaWdnZXIgdGhh
biBhbnkgcmVzdWx0IHdlIHdpbGwgZ2V0IGZyb20KLSAgICAgICAgLy8gc3BhdGlhbERpc3RhbmNl
KCkuCi0gICAgICAgIGlmIChjbG9zZXN0LmFsaWdubWVudCA8IGNhbmRpZGF0ZS5hbGlnbm1lbnQK
LSAgICAgICAgICYmIGNsb3Nlc3QucGFyZW50QWxpZ25tZW50IDwgY2FuZGlkYXRlLmFsaWdubWVu
dCkKLSAgICAgICAgICAgIGNsb3Nlc3QuZGlzdGFuY2UgPSBtYXhEaXN0YW5jZSgpOwogICAgIH0K
IAotICAgIC8vIEJhaWwgb3V0IGlmIGNhbmRpZGF0ZSdzIGRpc3RhbmNlIGlzIGxhcmdlciB0aGFu
IHRoYXQgb2YgdGhlIGNsb3Nlc3QgY2FuZGlkYXRlLgotICAgIGlmIChjYW5kaWRhdGUuZGlzdGFu
Y2UgPj0gY2xvc2VzdC5kaXN0YW5jZSkKKyAgICBpZiAoY2FuZGlkYXRlLmFsaWdubWVudCA9PSBj
bG9zZXN0LmFsaWdubWVudCkgeworICAgICAgICBpZiAoY2FuZGlkYXRlLmRpc3RhbmNlIDwgY2xv
c2VzdC5kaXN0YW5jZSkKKyAgICAgICAgICAgIGNsb3Nlc3QgPSBjYW5kaWRhdGU7CiAgICAgICAg
IHJldHVybjsKKyAgICB9CiAKLSAgICBpZiAoY2xvc2VzdC5pc051bGwoKSkgeworICAgIGlmIChj
YW5kaWRhdGUuYWxpZ25tZW50ID4gY2xvc2VzdC5hbGlnbm1lbnQpCiAgICAgICAgIGNsb3Nlc3Qg
PSBjYW5kaWRhdGU7Cit9CisKK3N0YXRpYyB2b2lkIHVwZGF0ZUZvY3VzQ2FuZGlkYXRlSWZDbG9z
ZXIoTm9kZSogZm9jdXNlZE5vZGUsIGNvbnN0IEZvY3VzQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIEZv
Y3VzQ2FuZGlkYXRlJiBjbG9zZXN0KQoreworICAgIC8vIEZpcnN0LCBjaGVjayB0aGUgY29tbW9u
IGNhc2U6IG5laXRoZXIgY2FuZGlkYXRlIG5vciBjbG9zZXN0IGFyZQorICAgIC8vIGluc2lkZSBz
Y3JvbGxhYmxlIGNvbnRlbnQsIHRoZW4gbm8gbmVlZCB0byBjYXJlIGFib3V0IGVuY2xvc2luZ1Nj
cm9sbGFibGVCb3gKKyAgICAvLyBoZXVyaXN0aWNzIG9yIHBhcmVudHtEaXN0YW5jZSxBbGlnbm1l
bnR9LCBidXQgb25seSBkaXN0YW5jZSBhbmQgYWxpZ25tZW50LgorICAgIGlmICghY2FuZGlkYXRl
LmluU2Nyb2xsYWJsZUNvbnRhaW5lcigpICYmICFjbG9zZXN0LmluU2Nyb2xsYWJsZUNvbnRhaW5l
cigpKSB7CisgICAgICAgIHVwZGF0ZUZvY3VzQ2FuZGlkYXRlSW5TYW1lQ29udGFpbmVyKGNhbmRp
ZGF0ZSwgY2xvc2VzdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAvLyBJZiB0aGUg
Zm9jdXNlZCBub2RlIGFuZCB0aGUgY2FuZGFkYXRlIGFyZSBpbiB0aGUgc2FtZSBkb2N1bWVudCBh
bmQgY3VycmVudAotICAgIC8vIGNsb3Nlc3QgY2FuZGlkYXRlIGlzIG5vdCBpbiBhbiB7aX1mcmFt
ZSB0aGF0IGlzIHByZWZlcmFibGUgdG8gZ2V0IGZvY3VzZWQgLi4uCi0gICAgaWYgKGZvY3VzZWRO
b2RlLT5kb2N1bWVudCgpID09IGNhbmRpZGF0ZS5kb2N1bWVudCgpCi0gICAgICAgICYmIGNhbmRp
ZGF0ZS5kaXN0YW5jZSA8IGNsb3Nlc3QucGFyZW50RGlzdGFuY2UpCi0gICAgICAgIGNsb3Nlc3Qg
PSBjYW5kaWRhdGU7Ci0gICAgZWxzZSBpZiAoZm9jdXNlZE5vZGUtPmRvY3VtZW50KCkgIT0gY2Fu
ZGlkYXRlLmRvY3VtZW50KCkpIHsKLSAgICAgICAgLy8gSWYgdGhlIGZvY3VzZWROb2RlIGlzIGlu
IGFuIGlubmVyIGRvY3VtZW50IGFuZCBjYW5kaWRhdGUgaXMgaW4gYQotICAgICAgICAvLyBkaWZm
ZXJlbnQgZG9jdW1lbnQsIHdlIG9ubHkgY29uc2lkZXIgdG8gY2hhbmdlIGZvY3VzIGlmIHRoZXJl
IGlzIG5vdAotICAgICAgICAvLyBhbm90aGVyIGFscmVhZHkgZ29vZCBmb2N1c2FibGUgY2FuZGlk
YXRlIGluIHRoZSBzYW1lIGRvY3VtZW50IGFzIGZvY3VzZWROb2RlLgotICAgICAgICBpZiAoISgo
aXNJblJvb3REb2N1bWVudChjYW5kaWRhdGUubm9kZSkgJiYgIWlzSW5Sb290RG9jdW1lbnQoZm9j
dXNlZE5vZGUpKQotICAgICAgICAgICAgJiYgZm9jdXNlZE5vZGUtPmRvY3VtZW50KCkgPT0gY2xv
c2VzdC5kb2N1bWVudCgpKSkKKyAgICBib29sIHNhbWVDb250YWluZXI7CisgICAgaWYgKGNhbmRp
ZGF0ZS5kb2N1bWVudCgpICE9IGNsb3Nlc3QuZG9jdW1lbnQoKSkKKyAgICAgICAgc2FtZUNvbnRh
aW5lciA9IGZhbHNlOworICAgIGVsc2UKKyAgICAgICAgc2FtZUNvbnRhaW5lciA9IGNhbmRpZGF0
ZS5lbmNsb3NpbmdTY3JvbGxhYmxlQm94ID09IGNsb3Nlc3QuZW5jbG9zaW5nU2Nyb2xsYWJsZUJv
eDsKKworICAgIC8vIFNlY29uZCwgaWYgY2FuZGlkYXRlIGFuZCBjbG9zZXN0IGFyZSBpbiB0aGUg
c2FtZSAiY29udGFpbmVyIiAoaS5lLiB7aX1mcmFtZSBvciBhbnkKKyAgICAvLyBzY3JvbGxhYmxl
IGJsb2NrIGVsZW1lbnQpLCB3ZSBjYW4gaGFuZGxlIHRoZW0gYXMgY29tbW9uIGNhc2UuCisgICAg
aWYgKHNhbWVDb250YWluZXIpIHsKKyAgICAgICAgdXBkYXRlRm9jdXNDYW5kaWRhdGVJblNhbWVD
b250YWluZXIoY2FuZGlkYXRlLCBjbG9zZXN0KTsKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8g
TGFzdCwgd2UgYXJlIGNvbnNpZGVyaW5nIG1vdmluZyB0byBhIGNhbmRpZGF0ZSBsb2NhdGVkIGlu
IGEgZGlmZmVyZW50IGVuY2xvc2luZworICAgIC8vIHNjcm9sbGFibGUgYm94IHRoYW4gY2xvc2Vz
dC4KKyAgICB9IGVsc2UgeworICAgICAgICBib29sIGlzSW5Jbm5lckRvY3VtZW50ID0gIWlzSW5S
b290RG9jdW1lbnQoZm9jdXNlZE5vZGUpOworCisgICAgICAgIGJvb2wgc2FtZUNvbnRhaW5lckFz
Q2FuZGlkYXRlID0gaXNJbklubmVyRG9jdW1lbnQgPyBmb2N1c2VkTm9kZS0+ZG9jdW1lbnQoKSA9
PSBjYW5kaWRhdGUuZG9jdW1lbnQoKSA6CisgICAgICAgICAgICBmb2N1c2VkTm9kZS0+aXNEZXNj
ZW5kYW50T2YoY2FuZGlkYXRlLmVuY2xvc2luZ1Njcm9sbGFibGVCb3gpOworCisgICAgICAgIGJv
b2wgc2FtZUNvbnRhaW5lckFzQ2xvc2VzdCA9IGlzSW5Jbm5lckRvY3VtZW50ID8gZm9jdXNlZE5v
ZGUtPmRvY3VtZW50KCkgPT0gY2xvc2VzdC5kb2N1bWVudCgpIDoKKyAgICAgICAgICAgIGZvY3Vz
ZWROb2RlLT5pc0Rlc2NlbmRhbnRPZihjbG9zZXN0LmVuY2xvc2luZ1Njcm9sbGFibGVCb3gpOwor
CisgICAgICAgIC8vIHNhbWVDb250YWluZXJBc0NhbmRpZGF0ZSBhbmQgc2FtZUNvbnRhaW5lckFz
Q2xvc2VzdCBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLgorICAgICAgICBBU1NFUlQoIShzYW1lQ29u
dGFpbmVyQXNDYW5kaWRhdGUgJiYgc2FtZUNvbnRhaW5lckFzQ2xvc2VzdCkpOworCisgICAgICAg
IGlmIChzYW1lQ29udGFpbmVyQXNDYW5kaWRhdGUpIHsKICAgICAgICAgICAgIGNsb3Nlc3QgPSBj
YW5kaWRhdGU7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAo
c2FtZUNvbnRhaW5lckFzQ2xvc2VzdCkgeworICAgICAgICAgICAgLy8gTm90aGluZyB0byBiZSBk
b25lLgorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gIyMjICFz
YW1lQ29udGFpbmVyQXNDYW5kaWRhdGUgJiYgIXNhbWVDb250YWluZXJBc0Nsb3Nlc3QKKyAgICAg
ICAgLy8gSWYgZGlzdGFuY2UgaXMgc2hvcnRlciwgYW5kIHdlIGFyZSB0YWxraW5nIGFib3V0IHNj
cm9sbGFibGUgY29udGFpbmVyLAorICAgICAgICAvLyBsZXRzIGNvbXBhcmUgcGFyZW50IGRpc3Rh
bmNlIGFuZCBhbGlnbm1lbnQgYmVmb3JlIGFueXRoaW5nLgorICAgICAgICBpZiAoY2FuZGlkYXRl
LmRpc3RhbmNlIDwgY2xvc2VzdC5kaXN0YW5jZSkgeworICAgICAgICAgICAgaWYgKGNhbmRpZGF0
ZS5hbGlnbm1lbnQgPj0gY2xvc2VzdC5wYXJlbnRBbGlnbm1lbnQKKyAgICAgICAgICAgICB8fCBj
YW5kaWRhdGUucGFyZW50QWxpZ25tZW50ID09IGNsb3Nlc3QucGFyZW50QWxpZ25tZW50KSB7Cisg
ICAgICAgICAgICAgICAgY2xvc2VzdCA9IGNhbmRpZGF0ZTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgfSBlbHNlIGlmIChjYW5kaWRhdGUucGFyZW50
RGlzdGFuY2UgPCBjbG9zZXN0LmRpc3RhbmNlKSB7CisgICAgICAgICAgICBpZiAoY2FuZGlkYXRl
LnBhcmVudEFsaWdubWVudCA+PSBjbG9zZXN0LmFsaWdubWVudCkgeworICAgICAgICAgICAgICAg
IGNsb3Nlc3QgPSBjYW5kaWRhdGU7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgfQorICAgICAgICB9CiAgICAgfQogfQogCkBAIC0zOTgsMTggKzQzMiw0NiBAQCB2b2lkIEZv
Y3VzQ29udHJvbGxlcjo6ZmluZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbihOb2RlKiBvdXRlciwg
Tm9kZSogZm9jdXNlZE5vZAogICAgIEFTU0VSVChvdXRlcik7CiAgICAgQVNTRVJUKGNhbmRpZGF0
ZVBhcmVudC5pc051bGwoKQogICAgICAgICB8fCBjYW5kaWRhdGVQYXJlbnQubm9kZS0+aGFzVGFn
TmFtZShmcmFtZVRhZykKLSAgICAgICAgfHwgY2FuZGlkYXRlUGFyZW50Lm5vZGUtPmhhc1RhZ05h
bWUoaWZyYW1lVGFnKSk7CisgICAgICAgIHx8IGNhbmRpZGF0ZVBhcmVudC5ub2RlLT5oYXNUYWdO
YW1lKGlmcmFtZVRhZykKKyAgICAgICAgfHwgaXNTY3JvbGxhYmxlQ29udGFpbmVyTm9kZShjYW5k
aWRhdGVQYXJlbnQubm9kZSkpOwogCiAgICAgLy8gV2FsayBhbGwgdGhlIGNoaWxkIG5vZGVzIGFu
ZCB1cGRhdGUgY2xvc2VzdEZvY3VzQ2FuZGlkYXRlIGlmIHdlIGZpbmQgYSBuZWFyZXIgbm9kZS4K
ICAgICBOb2RlKiBjYW5kaWRhdGUgPSBvdXRlcjsKICAgICB3aGlsZSAoY2FuZGlkYXRlKSB7CisK
ICAgICAgICAgLy8gSW5uZXIgZG9jdW1lbnRzIGNhc2UuCisgICAgICAgIGlmIChjYW5kaWRhdGUt
PmlzRnJhbWVPd25lckVsZW1lbnQoKSkgeworICAgICAgICAgICAgZGVlcEZpbmRGb2N1c2FibGVO
b2RlSW5EaXJlY3Rpb24oY2FuZGlkYXRlLCBmb2N1c2VkTm9kZSwgZGlyZWN0aW9uLCBldmVudCwg
Y2xvc2VzdEZvY3VzQ2FuZGlkYXRlKTsKIAotICAgICAgICBpZiAoY2FuZGlkYXRlLT5pc0ZyYW1l
T3duZXJFbGVtZW50KCkpCisgICAgICAgIC8vIFNjcm9sbGFibGUgYmxvY2sgZWxlbWVudHMgKGUu
Zy4gPGRpdj4sIGV0YykgY2FzZS4KKyAgICAgICAgfSBlbHNlIGlmIChpc1Njcm9sbGFibGVDb250
YWluZXJOb2RlKGNhbmRpZGF0ZSkpIHsKICAgICAgICAgICAgIGRlZXBGaW5kRm9jdXNhYmxlTm9k
ZUluRGlyZWN0aW9uKGNhbmRpZGF0ZSwgZm9jdXNlZE5vZGUsIGRpcmVjdGlvbiwgZXZlbnQsIGNs
b3Nlc3RGb2N1c0NhbmRpZGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKGNhbmRpZGF0ZSAhPSBmb2N1
c2VkTm9kZSAmJiBjYW5kaWRhdGUtPmlzS2V5Ym9hcmRGb2N1c2FibGUoZXZlbnQpKSB7CisgICAg
ICAgICAgICBjYW5kaWRhdGUgPSBjYW5kaWRhdGUtPnRyYXZlcnNlTmV4dFNpYmxpbmcoKTsKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIH0gZWxzZSBpZiAoY2FuZGlkYXRlICE9IGZv
Y3VzZWROb2RlICYmIGNhbmRpZGF0ZS0+aXNLZXlib2FyZEZvY3VzYWJsZShldmVudCkpIHsKICAg
ICAgICAgICAgIEZvY3VzQ2FuZGlkYXRlIGN1cnJlbnRGb2N1c0NhbmRpZGF0ZShjYW5kaWRhdGUp
OwogCisgICAgICAgICAgICAvLyBUaGVyZSBhcmUgdHdvIHdheXMgdG8gaWRlbnRpZnkgd2UgYXJl
IGluIGEgcmVjdXJzaXZlIGNhbGwgZnJvbSBkZWVwRmluZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlv
bgorICAgICAgICAgICAgLy8gKGkuZS4gcHJvY2Vzc2luZyBhbiBlbGVtZW50IGluIGFuIGlmcmFt
ZSwgZnJhbWUgb3IgYSBzY3JvbGxhYmxlIGJsb2NrIGVsZW1lbnQpOgorCisgICAgICAgICAgICAv
LyAxKSBJZiBjYW5kaWRhdGVQYXJlbnQgaXMgbm90IG51bGwsIGFuZCBpdCBob2xkcyB0aGUgZGlz
dGFuY2UgYW5kIGFsaWdubWVudCBkYXRhIG9mIHRoZQorICAgICAgICAgICAgLy8gcGFyZW50IGNv
bnRhaW5lciBlbGVtZW50IGl0c2VsZi4KKyAgICAgICAgICAgIGlmICghY2FuZGlkYXRlUGFyZW50
LmlzTnVsbCgpKSB7CisgICAgICAgICAgICAgICAgY3VycmVudEZvY3VzQ2FuZGlkYXRlLnBhcmVu
dEFsaWdubWVudCA9IGNhbmRpZGF0ZVBhcmVudC5hbGlnbm1lbnQ7CisgICAgICAgICAgICAgICAg
Y3VycmVudEZvY3VzQ2FuZGlkYXRlLnBhcmVudERpc3RhbmNlID0gY2FuZGlkYXRlUGFyZW50LmRp
c3RhbmNlOworICAgICAgICAgICAgICAgIGN1cnJlbnRGb2N1c0NhbmRpZGF0ZS5lbmNsb3NpbmdT
Y3JvbGxhYmxlQm94ID0gY2FuZGlkYXRlUGFyZW50Lm5vZGU7CisKKyAgICAgICAgICAgIC8vIDIp
IFBhcmVudCBvZiBvdXRlciBpcyBlaXRoZXI6CisgICAgICAgICAgICAvLyAqIDxmcmFtZT4gb3Ig
PGlmcmFtZT47CisgICAgICAgICAgICAvLyAqIG9yIGFueSBvdGhlciBzY3JvbGxhYmxlIGJsb2Nr
IGVsZW1lbnQuCisgICAgICAgICAgICB9IGVsc2UgaWYgKCFpc0luUm9vdERvY3VtZW50KG91dGVy
KSkgeworICAgICAgICAgICAgICAgIGlmIChEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2Fz
dDxEb2N1bWVudCo+KG91dGVyLT5wYXJlbnQoKSkpCisgICAgICAgICAgICAgICAgICAgIGN1cnJl
bnRGb2N1c0NhbmRpZGF0ZS5lbmNsb3NpbmdTY3JvbGxhYmxlQm94ID0gc3RhdGljX2Nhc3Q8Tm9k
ZSo+KGRvY3VtZW50LT5vd25lckVsZW1lbnQoKSk7CisKKyAgICAgICAgICAgIH0gZWxzZSBpZiAo
aXNTY3JvbGxhYmxlQ29udGFpbmVyTm9kZShvdXRlci0+cGFyZW50KCkpKQorICAgICAgICAgICAg
ICAgIGN1cnJlbnRGb2N1c0NhbmRpZGF0ZS5lbmNsb3NpbmdTY3JvbGxhYmxlQm94ID0gb3V0ZXIt
PnBhcmVudCgpOworCiAgICAgICAgICAgICAvLyBHZXQgZGlzdGFuY2UgYW5kIGFsaWdubWVudCBm
cm9tIGN1cnJlbnQgY2FuZGlkYXRlLgogICAgICAgICAgICAgZGlzdGFuY2VEYXRhRm9yTm9kZShk
aXJlY3Rpb24sIGZvY3VzZWROb2RlLCBjdXJyZW50Rm9jdXNDYW5kaWRhdGUpOwogCkBAIC00MTks
MTQgKzQ4MSw2IEBAIHZvaWQgRm9jdXNDb250cm9sbGVyOjpmaW5kRm9jdXNhYmxlTm9kZUluRGly
ZWN0aW9uKE5vZGUqIG91dGVyLCBOb2RlKiBmb2N1c2VkTm9kCiAgICAgICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIC8vIElmIGNhbmRpZGF0ZVBhcmVu
dCBpcyBub3QgbnVsbCwgaXQgbWVhbnMgdGhhdCB3ZSBhcmUgaW4gYSByZWN1cnNpdmUgY2FsbAot
ICAgICAgICAgICAgLy8gZnJvbSBkZWVwRmluZUZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbiAoaS5l
LiBwcm9jZXNzaW5nIGFuIGVsZW1lbnQgaW4gYW4gaWZyYW1lKSwKLSAgICAgICAgICAgIC8vIGFu
ZCBob2xkcyB0aGUgZGlzdGFuY2UgYW5kIGFsaWdubWVudCBkYXRhIG9mIHRoZSBpZnJhbWUgZWxl
bWVudCBpdHNlbGYuCi0gICAgICAgICAgICBpZiAoIWNhbmRpZGF0ZVBhcmVudC5pc051bGwoKSkg
ewotICAgICAgICAgICAgICAgIGN1cnJlbnRGb2N1c0NhbmRpZGF0ZS5wYXJlbnRBbGlnbm1lbnQg
PSBjYW5kaWRhdGVQYXJlbnQuYWxpZ25tZW50OwotICAgICAgICAgICAgICAgIGN1cnJlbnRGb2N1
c0NhbmRpZGF0ZS5wYXJlbnREaXN0YW5jZSA9IGNhbmRpZGF0ZVBhcmVudC5kaXN0YW5jZTsKLSAg
ICAgICAgICAgIH0KLQogICAgICAgICAgICAgdXBkYXRlRm9jdXNDYW5kaWRhdGVJZkNsb3Nlcihm
b2N1c2VkTm9kZSwgY3VycmVudEZvY3VzQ2FuZGlkYXRlLCBjbG9zZXN0Rm9jdXNDYW5kaWRhdGUp
OwogICAgICAgICB9CiAKQEAgLTQzOCw3ICs0OTIsOSBAQCB2b2lkIEZvY3VzQ29udHJvbGxlcjo6
ZGVlcEZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24oTm9kZSogY29udGFpbmVyLCBOb2RlKiBm
bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgS2V5Ym9hcmRFdmVudCogZXZlbnQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9jdXNDYW5k
aWRhdGUmIGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZSkKIHsKLSAgICBBU1NFUlQoY29udGFpbmVyLT5o
YXNUYWdOYW1lKGZyYW1lVGFnKSB8fCBjb250YWluZXItPmhhc1RhZ05hbWUoaWZyYW1lVGFnKSk7
CisgICAgQVNTRVJUKGNvbnRhaW5lci0+aGFzVGFnTmFtZShmcmFtZVRhZykKKyAgICAgICAgfHwg
Y29udGFpbmVyLT5oYXNUYWdOYW1lKGlmcmFtZVRhZykKKyAgICAgICAgfHwgaXNTY3JvbGxhYmxl
Q29udGFpbmVyTm9kZShjb250YWluZXIpKTsKIAogICAgIC8vIFRyYWNrIGlmIGZvY3VzZWROb2Rl
IGlzIGEgZGVzY2VuZGFudCBvZiB0aGUgY3VycmVudCBjb250YWluZXIgbm9kZSBiZWluZyBwcm9j
ZXNzZWQuCiAgICAgYm9vbCBkZXNjZW5kYW50T2ZDb250YWluZXIgPSBmYWxzZTsKQEAgLTQ1OCw2
ICs1MTQsMTEgQEAgdm9pZCBGb2N1c0NvbnRyb2xsZXI6OmRlZXBGaW5kRm9jdXNhYmxlTm9kZUlu
RGlyZWN0aW9uKE5vZGUqIGNvbnRhaW5lciwgTm9kZSogZm8KICAgICAgICAgZGVzY2VuZGFudE9m
Q29udGFpbmVyID0gaW5uZXJEb2N1bWVudCA9PSBmb2N1c2VkTm9kZS0+ZG9jdW1lbnQoKTsKICAg
ICAgICAgZmlyc3RDaGlsZCA9IGlubmVyRG9jdW1lbnQtPmZpcnN0Q2hpbGQoKTsKIAorICAgIC8v
IFNjcm9sbGFibGUgYmxvY2sgZWxlbWVudHMgKGUuZy4gPGRpdj4sIGV0YykKKyAgICB9IGVsc2Ug
aWYgKGlzU2Nyb2xsYWJsZUNvbnRhaW5lck5vZGUoY29udGFpbmVyKSkgeworCisgICAgICAgIGZp
cnN0Q2hpbGQgPSBjb250YWluZXItPmZpcnN0Q2hpbGQoKTsKKyAgICAgICAgZGVzY2VuZGFudE9m
Q29udGFpbmVyID0gZm9jdXNlZE5vZGUtPmlzRGVzY2VuZGFudE9mKGNvbnRhaW5lcik7CiAgICAg
fQogCiAgICAgaWYgKGRlc2NlbmRhbnRPZkNvbnRhaW5lcikgewpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcCBiL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdh
dGlvbi5jcHAKaW5kZXggY2ZiZWNkYi4uOWU2Zjg5NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdl
L1NwYXRpYWxOYXZpZ2F0aW9uLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRp
b24uY3BwCkBAIC01MzAsNCArNTMwLDE3IEBAIHN0YXRpYyBib29sIGNoZWNrTmVnYXRpdmVDb29y
ZHNGb3JOb2RlKE5vZGUqIG5vZGUsIGNvbnN0IEludFJlY3QmIGN1clJlY3QpCiAgICAgcmV0dXJu
IGNhbkJlU2Nyb2xsZWQ7CiB9CiAKK2Jvb2wgaXNTY3JvbGxhYmxlQ29udGFpbmVyTm9kZShOb2Rl
KiBub2RlKQoreworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
aWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpKSB7CisgICAgICAg
IHJldHVybiAocmVuZGVyZXItPmlzQm94KCkgJiYgdG9SZW5kZXJCb3gocmVuZGVyZXIpLT5jYW5C
ZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEoKQorICAgICAgICAgICAgICYmIG5vZGUtPmhh
c0NoaWxkTm9kZXMoKSAmJiAhbm9kZS0+aXNEb2N1bWVudE5vZGUoKSk7CisgICAgfQorCisgICAg
cmV0dXJuIGZhbHNlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uaCBiL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2
aWdhdGlvbi5oCmluZGV4IGQzOGZiMDkuLjkyNTg5MDAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFn
ZS9TcGF0aWFsTmF2aWdhdGlvbi5oCisrKyBiL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlv
bi5oCkBAIC05Nyw2ICs5Nyw3IEBAIGVudW0gUmVjdHNBbGlnbm1lbnQgewogc3RydWN0IEZvY3Vz
Q2FuZGlkYXRlIHsKICAgICBGb2N1c0NhbmRpZGF0ZSgpCiAgICAgICAgIDogbm9kZSgwKQorICAg
ICAgICAsIGVuY2xvc2luZ1Njcm9sbGFibGVCb3goMCkKICAgICAgICAgLCBkaXN0YW5jZShtYXhE
aXN0YW5jZSgpKQogICAgICAgICAsIHBhcmVudERpc3RhbmNlKG1heERpc3RhbmNlKCkpCiAgICAg
ICAgICwgYWxpZ25tZW50KE5vbmUpCkBAIC0xMDYsNiArMTA3LDcgQEAgc3RydWN0IEZvY3VzQ2Fu
ZGlkYXRlIHsKIAogICAgIEZvY3VzQ2FuZGlkYXRlKE5vZGUqIG4pCiAgICAgICAgIDogbm9kZShu
KQorICAgICAgICAsIGVuY2xvc2luZ1Njcm9sbGFibGVCb3goMCkKICAgICAgICAgLCBkaXN0YW5j
ZShtYXhEaXN0YW5jZSgpKQogICAgICAgICAsIHBhcmVudERpc3RhbmNlKG1heERpc3RhbmNlKCkp
CiAgICAgICAgICwgYWxpZ25tZW50KE5vbmUpCkBAIC0xMTQsOSArMTE2LDExIEBAIHN0cnVjdCBG
b2N1c0NhbmRpZGF0ZSB7CiAgICAgfQogCiAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVy
biAhbm9kZTsgfQorICAgIGJvb2wgaW5TY3JvbGxhYmxlQ29udGFpbmVyKCkgY29uc3QgeyByZXR1
cm4gbm9kZSAmJiBlbmNsb3NpbmdTY3JvbGxhYmxlQm94OyB9CiAgICAgRG9jdW1lbnQqIGRvY3Vt
ZW50KCkgY29uc3QgeyByZXR1cm4gbm9kZSA/IG5vZGUtPmRvY3VtZW50KCkgOiAwOyB9CiAKICAg
ICBOb2RlKiBub2RlOworICAgIE5vZGUqIGVuY2xvc2luZ1Njcm9sbGFibGVCb3g7CiAgICAgbG9u
ZyBsb25nIGRpc3RhbmNlOwogICAgIGxvbmcgbG9uZyBwYXJlbnREaXN0YW5jZTsKICAgICBSZWN0
c0FsaWdubWVudCBhbGlnbm1lbnQ7CkBAIC0xMjgsNiArMTMyLDcgQEAgYm9vbCBzY3JvbGxJbkRp
cmVjdGlvbihGcmFtZSosIEZvY3VzRGlyZWN0aW9uKTsKIHZvaWQgc2Nyb2xsSW50b1ZpZXcoRWxl
bWVudCopOwogYm9vbCBoYXNPZmZzY3JlZW5SZWN0KE5vZGUqKTsKIGJvb2wgaXNJblJvb3REb2N1
bWVudChOb2RlKik7Citib29sIGlzU2Nyb2xsYWJsZUNvbnRhaW5lck5vZGUoTm9kZSopOwogCiB9
IC8vIG5hbXNwYWNlIFdlYkNvcmUKIAotLSAKMS43LjAuNAoK
</data>
<flag name="commit-queue"
          id="45026"
          type_id="3"
          status="-"
          setter="tonikitoo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58644</attachid>
            <date>2010-06-14 07:18:42 -0700</date>
            <delta_ts>2010-06-14 12:14:43 -0700</delta_ts>
            <desc>(committed in r61134, reviewed by smfr and kenneth) patch v5.4 - same as patch v5.4 but fixed style bug</desc>
            <filename>0001-Spatial-Navigation-make-it-work-with-focusable-eleme.patch</filename>
            <type>text/plain</type>
            <size>26404</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSBmYzc0M2M2NWNlMGRmNDMyM2MyZDgwZDFkMjY5NDQyYzhkZGVkNzRjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4K
RGF0ZTogTW9uLCAxNyBNYXkgMjAxMCAxMTozNzowNyAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIFNw
YXRpYWwgTmF2aWdhdGlvbjogbWFrZSBpdCB3b3JrIHdpdGggZm9jdXNhYmxlIGVsZW1lbnRzIGlu
IG92ZXJmbG93IGNvbnRlbnQKIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zNjQ2MwoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuClBhdGNoIGJ1IEFudG9uaW8gR29t
ZXMgPHRvbmlraXRvb0B3ZWJraXQub3JnPgoKV2ViQ29yZToKClRoaXMgcGF0Y2ggYWRkcmVzc2Vz
IHRoZSBwcm9ibGVtIHdpdGggU3BhdGlhbCBOYXZpZ2F0aW9uLiBJdCBjdXJyZW50bHkgZG9lcyBu
b3QKcHJvcGVybHkgdHJhdmVyc2Ugc2Nyb2xsYWJsZSBjb250ZW50cywgaW5jbHVkaW5nIHNjcm9s
bGFibGUgZGl2J3MuIEZvciB0aGlzIHRvIHdvcmssCmEgbmV3IGNsYXNzIG1lbWJlciBjYWxsZWQg
c2Nyb2xsYWJsZUVuY2xvc2luZ0JveCB3YXMgaW50cm9kdWNlZCB0byBGb2N1c0NhbmRpZGF0ZSBj
bGFzcyB3aGljaAprZWVwcyB0cmFjayBvZiB0aGUgY3VycmVudCBzY3JvbGxhYmxlIGJveCBOb2Rl
IHdyYXBwaW5nIGEgRm9jdXNDYW5kaWRhdGUuCgpUbyBtYWtlIHVzZSBvZiBlbmNsb3NpbmdTY3Jv
bGxhYmxlQm94IG9mIEZvY3VzQ2FuZGlkYXRlLCB0aGUgRE9NIHRyYXZlcnNhbCByb3V0aW5lCihG
b2N1c0NvbnRyb2xsZXI6OmZpbmROZXh0Rm9jdXNhYmxlSW5EaXJlY3Rpb24pIHdhcyBjaGFuZ2Vk
IGFzIGZvbGxvd3M6IHdoZW4gaXQKZW5jb3VudGVycyBhIHNjcm9sbGFibGUgTm9kZSwgZWFjaCBm
b2N1c2FibGUgbm9kZSB3aGljaCBpcyAnaW5uZXInIGtlZXBzIHRyYWNrIG9mCnRoZSBjb250YWlu
ZXIgcmVmZXJlbmNlLiBCeSB0aGUgdGltZSBhIHNpYmxpbmcgb2YgdGhlIHNjcm9sbGFibGUgTm9k
ZSBpcyBlbmNvdW50ZXJlZCwKdGhlcmUgaXMgbm8gbmVlZCB0byB0cmFjayB0aGlzIHJlZmVyZW5j
ZSBhbnkgbW9yZSBhbmQgdGhlIHRyYXZlcnNhbCBhbGdvcml0aG0gY29udGludWVzCm5vcm1hbGx5
LgoKVGhlIGNvbW1vbiBjYXNlIGlzIG9idmlvdXNseSB0aGF0IHRoZXJlIGlzIG5vIHNjcm9sbGFi
bGUgY29udGFpbmVyIHdyYXBwaW5nIGl0LgoKdXBkYXRlRm9jdXNDYW5kaWRpdGVJZkNsb3NlciBs
b2dpYyB3YXMgYWxzbyBhZGFwdGVkIHRvIGZpdCB0aGUgbmVlZCBvZiB0aGUKbmV3bHkgaW50cm9k
dWNlZCBlbmNsb3NpbmdTY3JvbGxhYmxlQm94IGNsYXNzIG1lbWJlciwgZ2V0dGluZyBzaW1wbGVy
IGFuZCBtb3JlCmVhc2lseSBtYWludGFpbmFibGUuCgpUZXN0czogZmFzdC9ldmVudHMvc3BhdGlh
bC1uYXZpZ2F0aW9uL3NuYXYtZGl2LXNjcm9sbGFibGUtYnV0LXdpdGhvdXQtZm9jdXNhYmxlLWNv
bnRlbnQuaHRtbAogICAgICAgZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtY2xp
cHBlZC1vdmVyZmxvdy1jb250ZW50Lmh0bWwKCiogcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwOgoo
V2ViQ29yZTo6dXBkYXRlRm9jdXNDYW5kaWRhdGVJblNhbWVDb250YWluZXIpOgooV2ViQ29yZTo6
dXBkYXRlRm9jdXNDYW5kaWRhdGVJZkNsb3Nlcik6CihXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6
OmZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24pOgooV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVy
OjpkZWVwRmluZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbik6CiogcGFnZS9TcGF0aWFsTmF2aWdh
dGlvbi5jcHA6CihXZWJDb3JlOjppc1Njcm9sbGFibGVDb250YWluZXJOb2RlKToKKiBwYWdlL1Nw
YXRpYWxOYXZpZ2F0aW9uLmg6CihXZWJDb3JlOjpGb2N1c0NhbmRpZGF0ZTo6Rm9jdXNDYW5kaWRh
dGUpOgooV2ViQ29yZTo6Rm9jdXNDYW5kaWRhdGU6OmluU2Nyb2xsYWJsZUNvbnRhaW5lcik6CgpM
YXlvdXRUZXN0czoKCiogZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtZGl2LXNj
cm9sbGFibGUtYnV0LXdpdGhvdXQtZm9jdXNhYmxlLWNvbnRlbnQtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKiBmYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1kaXYtc2Nyb2xsYWJsZS1i
dXQtd2l0aG91dC1mb2N1c2FibGUtY29udGVudC5odG1sOiBBZGRlZC4KKiBmYXN0L2V2ZW50cy9z
cGF0aWFsLW5hdmlnYXRpb24vc25hdi1jbGlwcGVkLW92ZXJmbG93LWNvbnRlbnQtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKiBmYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1jbGlwcGVk
LW92ZXJmbG93LWNvbnRlbnQuaHRtbDogQWRkZWQuCi0tLQogTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEyICsrCiAuLi4vc25hdi1jbGlwcGVk
LW92ZXJmbG93ZWQtY29udGVudC1leHBlY3RlZC50eHQgICB8ICAgMjQgKysrCiAuLi4vc25hdi1j
bGlwcGVkLW92ZXJmbG93ZWQtY29udGVudC5odG1sICAgICAgICAgICB8ICAgODUgKysrKysrKysr
KysKIC4uLmFibGUtYnV0LXdpdGhvdXQtZm9jdXNhYmxlLWNvbnRlbnQtZXhwZWN0ZWQudHh0IHwg
ICAzNSArKysrKwogLi4udi1zY3JvbGxhYmxlLWJ1dC13aXRob3V0LWZvY3VzYWJsZS1jb250ZW50
Lmh0bWwgfCAgIDgwICsrKysrKysrKysrCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgMzkgKysrKysKIFdlYkNvcmUvcGFnZS9Gb2N1c0NvbnRy
b2xsZXIuY3BwICAgICAgICAgICAgICAgICAgIHwgIDE0OCArKysrKysrKysrKysrKy0tLS0tLQog
V2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcCAgICAgICAgICAgICAgICAgfCAgIDEz
ICsrCiBXZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uaCAgICAgICAgICAgICAgICAgICB8
ICAgIDUgKwogOSBmaWxlcyBjaGFuZ2VkLCAzOTcgaW5zZXJ0aW9ucygrKSwgNDQgZGVsZXRpb25z
KC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3BhdGlhbC1u
YXZpZ2F0aW9uL3NuYXYtY2xpcHBlZC1vdmVyZmxvd2VkLWNvbnRlbnQtZXhwZWN0ZWQudHh0CiBj
cmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0
aW9uL3NuYXYtY2xpcHBlZC1vdmVyZmxvd2VkLWNvbnRlbnQuaHRtbAogY3JlYXRlIG1vZGUgMTAw
NjQ0IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWRpdi1z
Y3JvbGxhYmxlLWJ1dC13aXRob3V0LWZvY3VzYWJsZS1jb250ZW50LWV4cGVjdGVkLnR4dAogY3Jl
YXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlv
bi9zbmF2LWRpdi1zY3JvbGxhYmxlLWJ1dC13aXRob3V0LWZvY3VzYWJsZS1jb250ZW50Lmh0bWwK
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggNjgzOTllMS4uYTNhNjhkYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEwLTA1
LTE0ICBBbnRvbmlvIEdvbWVzICA8dG9uaWtpdG9vQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3BhdGlhbCBOYXZpZ2F0aW9uOiBt
YWtlIGl0IHdvcmsgd2l0aCBmb2N1c2FibGUgZWxlbWVudHMgaW4gb3ZlcmZsb3cgY29udGVudAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY0NjMKKwor
ICAgICAgICAqIGZhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWRpdi1zY3JvbGxh
YmxlLWJ1dC13aXRob3V0LWZvY3VzYWJsZS1jb250ZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtZGl2LXNjcm9sbGFi
bGUtYnV0LXdpdGhvdXQtZm9jdXNhYmxlLWNvbnRlbnQuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtY2xpcHBlZC1vdmVyZmxvdy1jb250
ZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvc3BhdGlhbC1u
YXZpZ2F0aW9uL3NuYXYtY2xpcHBlZC1vdmVyZmxvdy1jb250ZW50Lmh0bWw6IEFkZGVkLgorCiAy
MDEwLTA2LTEzICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWxkZXIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1jbGlwcGVkLW92ZXJmbG93ZWQtY29udGVu
dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRp
b24vc25hdi1jbGlwcGVkLW92ZXJmbG93ZWQtY29udGVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjI4YjA5ZQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWNsaXBwZWQtb3Zl
cmZsb3dlZC1jb250ZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI0IEBACitUaGF0IGlzIGlz
IGEgbm9ybWFsIGxpbmtfMS4KKworVGhpcyBpcyBhIHNjcm9sbGFibGUgRGl2IGNyZWF0ZWQgd2l0
aCB0aGUgQ1NTIHByb3BlcnR5IG92ZXJmbG93LgorCitJdCBoYXMgYSB2aXNpYmxlIGxpbmtfMi4K
KworCisKKworCisKKworLi4uIGFuZCBhbiBvdmVyZmxvd2VkIGxpbmsgbGlrZSBsaW5rXzMuCisK
K0FuZCB0aGlzIGlzIGFub3RoZXIgbm9ybWFsIGxpbmtfNC4KKworUEFTUyBkb2N1bWVudC5hY3Rp
dmVFbGVtZW50LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAiMSIKK1BBU1MgZG9jdW1lbnQuYWN0aXZl
RWxlbWVudC5nZXRBdHRyaWJ1dGUoImlkIikgaXMgIjEiCitQQVNTIGRvY3VtZW50LmFjdGl2ZUVs
ZW1lbnQuZ2V0QXR0cmlidXRlKCJpZCIpIGlzICIyIgorUEFTUyBkb2N1bWVudC5hY3RpdmVFbGVt
ZW50LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAiMyIKK1BBU1MgZG9jdW1lbnQuYWN0aXZlRWxlbWVu
dC5nZXRBdHRyaWJ1dGUoImlkIikgaXMgIjIiCitQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQu
Z2V0QXR0cmlidXRlKCJpZCIpIGlzICIxIgorUEFTUyBkb2N1bWVudC5hY3RpdmVFbGVtZW50Lmdl
dEF0dHJpYnV0ZSgiaWQiKSBpcyAic3RhcnQiCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWNsaXBwZWQtb3ZlcmZsb3dlZC1jb250
ZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25h
di1jbGlwcGVkLW92ZXJmbG93ZWQtY29udGVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjBhMzAxY2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1jbGlwcGVkLW92ZXJmbG93ZWQtY29udGVu
dC5odG1sCkBAIC0wLDAgKzEsODUgQEAKKzxodG1sPgorICA8IS0tCisgICAgVGhpcyB0ZXN0IGVu
c3VyZXMgdGhlIGNvcnJlY3RuZXNzIG9mIGEgYmFzaWMgYXNwZWN0IG9mIHNwYXRpYWwgbmF2aWdh
dGlvbiB0cmF2ZXJzYWwKKyAgICByb3V0aW5lczogZm9jdXNhYmxlIGVsZW1lbnRzIGluIHNjcm9s
bGFibGUgY29udGFpbmVycyAoZS5nLiA8ZGl2Pikgc2hvdWxkIGJlCisgICAgYWNjZXNzaWJsZSwg
aW5jbHVkaW5nIG9mZnNjcmVlbiBjb250ZW50LgorCisgICAgKiBQcmUtY29uZGl0aW9uczoKKyAg
ICAxKSBEUlQgc3VwcG9ydCBmb3Igc3BhdGlhbCBuYXZpdmF0aW9uIGVuYWJsZS9kaXNhYmxlLgor
CisgICAgKiBOYXZpZ2F0aW9uIHN0ZXBzOgorICAgIDEpIExvYWRzIHRoaXMgcGFnZSwgZm9jdXMg
Z29lcyB0byAic3RhcnQiIGF1dG9tYXRpY2FsbHkuCisgICAgMikgTW92ZSBmb2N1cyBkb3duIHRv
IHRoZSB2aXNpYmxlIGZvY3VzYWJsZSBlbGVtZW50IGluCisgICAgICAgc2Nyb2xsYWJsZSBkaXYu
CisgICAgMykgVHJhdmVyc2UgdGhlIHBhZ2UgdGhyb3VnaCBvdGhlciBmb2N1c2FibGUgZWxlbWVu
dHMgZG93biB0aGUgcGFnZS4KKyAgICAgICBhbmQgdGhlbiBiYWNrIHVwLgorCisgICAgKiBFeHBl
Y3RlZCByZXN1bHRzOiBBbGwgZm9jdXNhYmxlIGVsZW1lbnQgaW4gc2Nyb2xsYWJsZSBjb250ZW50
LCBpbmNsdWRpbmcKKyAgICBvZmZzY3JlZW4gb25lcywgc2hvdWxkIGJlIGFjY2Vzc2libGUgdmlh
IHNwYXRpYWwgbmF2aWdhdGlvbi4gLS0+CisgIDxoZWFkPgorICAgIDxzdHlsZSB0eXBlPSJ0ZXh0
L2NzcyI+CisgICAgICBkaXYuc2Nyb2xsIHsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICAg
ICAgd2lkdGg6IDMwMHB4OworICAgICAgICBvdmVyZmxvdzogYXV0bzsKKyAgICAgICAgYm9yZGVy
OiAxcHggc29saWQgIzY2NjsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2NjYzsKKyAgICAg
ICAgcGFkZGluZzogOHB4OworICAgICAgfQorICAgIDwvc3R5bGU+CisKKyAgICA8c2NyaXB0IHNy
Yz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL3NwYXRpYWwtbmF2aWdhdGlvbi11dGlscy5qcyI+PC9zY3JpcHQ+
CisgICAgPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Ij4KKworICAgIHZhciBy
ZXN1bHRNYXAgPSBbCisgICAgICBbIkRvd24iLCAiMSJdLAorICAgICAgWyJEb3duIiwgIjEiXSwK
KyAgICAgIFsiRG93biIsICIyIl0sCisgICAgICBbIkRvd24iLCAiMyJdLAorICAgICAgWyJVcCIs
ICIyIl0sCisgICAgICBbIlVwIiwgIjEiXSwKKyAgICAgIFsiVXAiLCAic3RhcnQiXSwKKyAgICAg
IFsiRE9ORSIsICJET05FIl0KKyAgICBdOworCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgeworICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0U3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKHRydWUp
OworICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRU
YWJUb0xpbmtzUHJlZmVyZW5jZUtleSIsIDEpOworICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQorICAgIHsK
KyAgICAgIC8vIHN0YXJ0aW5nIHRoZSB0ZXN0IGl0c2VsZjogZ2V0IHRvIGEga25vd24gcGxhY2Uu
CisgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3RhcnQiKS5mb2N1cygpOworCisgICAg
ICBpbml0VGVzdChyZXN1bHRNYXAsIHRlc3RDb21wbGV0ZWQpOworICAgIH0KKworICAgIGZ1bmN0
aW9uIHRlc3RDb21wbGV0ZWQoKQorICAgIHsKKyAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAg
ICB9CisKKyAgICB3aW5kb3cub25sb2FkID0gcnVuVGVzdDsKKworICAgIDwvc2NyaXB0PgorICAg
IDxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KyAgPC9oZWFkPgorCisgIDxib2R5IGlkPSJzb21lLWNvbnRlbnQiIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hodG1sIj4KKyAgICA8cD5UaGF0IGlzIGlzIGEgbm9ybWFsIDxhIGlkPSJz
dGFydCIgaHJlZj0iYSI+bGlua18xPC9hPi48L3A+CisgICAgPGRpdiBjbGFzcz0ic2Nyb2xsIj4K
KyAgICAgIDxwPlRoaXMgaXMgYSBzY3JvbGxhYmxlIERpdiBjcmVhdGVkIHdpdGggdGhlIENTUyBw
cm9wZXJ0eSBvdmVyZmxvdy48L3A+CisgICAgICA8cD5JdCBoYXMgYSB2aXNpYmxlIDxhIGlkPSIx
IiBocmVmPSJhIj5saW5rXzI8L2E+LjwvcD4KKyAgICAgIDxicj48YnI+PGJyPjxicj48YnI+PGJy
PgorICAgICAgPHA+Li4uIGFuZCBhbiBvdmVyZmxvd2VkIGxpbmsgbGlrZSA8YSBpZD0iMiIgaHJl
Zj0iYSI+bGlua18zPC9hPi48L3A+CisgICAgPC9kaXY+CisgICAgPHA+QW5kIHRoaXMgaXMgYW5v
dGhlciBub3JtYWwgPGEgaWQ9IjMiIGhyZWY9ImEiPmxpbmtfNDwvYT4uPC9wPgorICAgIDxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorICA8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWRpdi1zY3JvbGxh
YmxlLWJ1dC13aXRob3V0LWZvY3VzYWJsZS1jb250ZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWRpdi1zY3JvbGxhYmxlLWJ1
dC13aXRob3V0LWZvY3VzYWJsZS1jb250ZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi43NTFiOTQzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtZGl2LXNjcm9sbGFibGUtYnV0
LXdpdGhvdXQtZm9jdXNhYmxlLWNvbnRlbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzUgQEAK
K2EKK1RoaXMgaXMgYSBzY3JvbGxhYmxlIERpdiBjcmVhdGVkIHdpdGggdGhlIENTUyBwcm9wZXJ0
eSBvdmVyZmxvdy4KKworSXQgaGFzIG5vIGtleWJvYXJkIGZvY3VzYWJsZSBlbGVtZW50cyAuLi4u
CisKKworCisKKworCisKKworCisKKworCisKKy4uLiBhbmQgc2Nyb2xsYmFycyEKKworVGhpcyBp
cyBhbm90aGVyIHNjcm9sbGFibGUgZGl2IGNyZWF0ZWQgd2l0aCB0aGUgQ1NTIHByb3BlcnR5IG92
ZXJmbG93LgorCitJdCBoYXMgYWxzbyBubyBrZXlib2FyZCBmb2N1c2FibGUgZWxlbWVudHMgLi4u
LgorCisKKworCisKKworCisuLi4gYXMgd2VsbCBhcyBzY3JvbGxiYXJzIQorCitlCitQQVNTIGRv
Y3VtZW50LmFjdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCJpZCIpIGlzICJlbmQiCitQQVNTIGRv
Y3VtZW50LmFjdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCJpZCIpIGlzICJzdGFydCIKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYt
ZGl2LXNjcm9sbGFibGUtYnV0LXdpdGhvdXQtZm9jdXNhYmxlLWNvbnRlbnQuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWRpdi1zY3JvbGxhYmxl
LWJ1dC13aXRob3V0LWZvY3VzYWJsZS1jb250ZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uYmE3MDJmNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWRpdi1zY3JvbGxhYmxlLWJ1dC13aXRo
b3V0LWZvY3VzYWJsZS1jb250ZW50Lmh0bWwKQEAgLTAsMCArMSw4MCBAQAorPGh0bWw+CisgIDwh
LS0KKyAgICBUaGlzIHRlc3QgZW5zdXJlcyB0aGUgY29ycmVjdG5lc3Mgb2YgYSBiYXNpYyBhc3Bl
Y3Qgb2Ygc3BhdGlhbCBuYXZpZ2F0aW9uIHRyYXZlcnNhbAorICAgIHJvdXRpbmVzOiBzY3JvbGxh
YmxlIGJsb2NrIGh0bWwgZWxlbWVudHMgd2l0aG91dCBhbnkgZm9jdXNhYmxlIGNvbnRlbnQgc2hv
dWxkIGJlIGlnbm9yZWQuCisKKyAgICAqIFByZS1jb25kaXRpb25zOgorICAgIDEpIERSVCBzdXBw
b3J0IGZvciBzcGF0aWFsIG5hdmlnYXRpb24gZW5hYmxlL2Rpc2FibGUuCisKKyAgICAqIE5hdmln
YXRpb24gc3RlcHM6CisgICAgMSkgTG9hZHMgdGhpcyBwYWdlLCBmb2N1cyBnb2VzIHRvICJzdGFy
dCIgYXV0b21hdGljYWxseS4KKyAgICAyKSBGb2N1cyBtb3ZlcyBmcm9tICJzdGFydCIgdG8gImVu
ZCIgYnlwYXNzaW5nIHRoZSB0d28gZGl2J3MKKyAgICAgICBpbiBiZXR3ZWVuIHRoZW0sIG9uY2Ug
Ym90aCBoYXZlIG5vIGZvY3VzYWJsZSBlbGVtZW50cyBpbnNpZGUuCisgIC0tPgorICA8aGVhZD4K
KyAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgICAgZGl2LnNjcm9sbCB7CisgICAgICAg
IGhlaWdodDogMjAwcHg7CisgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgb3ZlcmZsb3c6
IGF1dG87CisgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICM2NjY7CisgICAgICAgIGJhY2tncm91
bmQtY29sb3I6ICNjY2M7CisgICAgICAgIHBhZGRpbmc6IDhweDsKKyAgICAgIH0KKyAgICA8L3N0
eWxlPgorCisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9zcGF0aWFsLW5hdmlnYXRp
b24tdXRpbHMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2
YXNjcmlwdCI+CisKKyAgICB2YXIgcmVzdWx0TWFwID0gWworICAgICAgWyJEb3duIiwgImVuZCJd
LAorICAgICAgWyJVcCIgICwgInN0YXJ0Il0sCisgICAgICBbIkRPTkUiLCAiRE9ORSJdCisgICAg
XTsKKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LnNldFNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZCh0cnVlKTsKKyAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0VGFiVG9MaW5rc1ByZWZlcmVuY2VLZXki
LCAxKTsKKyAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB9
CisKKyAgICBmdW5jdGlvbiBydW5UZXN0KCkKKyAgICB7CisgICAgICAvLyBzdGFydGluZyB0aGUg
dGVzdCBpdHNlbGY6IGdldCB0byBhIGtub3duIHBsYWNlLgorICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInN0YXJ0IikuZm9jdXMoKTsKKworICAgICAgaW5pdFRlc3QocmVzdWx0TWFwLCB0
ZXN0Q29tcGxldGVkKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0Q29tcGxldGVkKCkKKyAg
ICB7CisgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgfQorCisgICAgd2luZG93Lm9ubG9h
ZCA9IHJ1blRlc3Q7CisgICAgPC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorICA8L2hlYWQ+CisgIDxib2R5IGlkPSJz
b21lLWNvbnRlbnQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKyAgICA8
ZGl2PjxhIGlkPSJzdGFydCIgaHJlZj0iYSI+YTwvYT48L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJz
Y3JvbGwiPgorICAgICAgPHA+VGhpcyBpcyBhIHNjcm9sbGFibGUgRGl2IGNyZWF0ZWQgd2l0aCB0
aGUgQ1NTIHByb3BlcnR5IG92ZXJmbG93LjwvcD4KKyAgICAgIDxwPkl0IGhhcyBubyBrZXlib2Fy
ZCBmb2N1c2FibGUgZWxlbWVudHMgLi4uLjwvcD4KKyAgICAgIDxicj48YnI+PGJyPjxicj48YnI+
PGJyPgorICAgICAgPGJyPjxicj48YnI+PGJyPjxicj48YnI+CisgICAgICA8cD4uLi4gYW5kIHNj
cm9sbGJhcnMhPC9wPgorICAgIDwvZGl2PgorCisgICAgPGRpdiBjbGFzcz0ic2Nyb2xsIj4KKyAg
ICAgIDxwPlRoaXMgaXMgYW5vdGhlciBzY3JvbGxhYmxlIGRpdiBjcmVhdGVkIHdpdGggdGhlIENT
UyBwcm9wZXJ0eSBvdmVyZmxvdy48L3A+CisgICAgICA8cD5JdCBoYXMgYWxzbyBubyBrZXlib2Fy
ZCBmb2N1c2FibGUgZWxlbWVudHMgLi4uLjwvcD4KKyAgICAgIDxicj48YnI+PGJyPjxicj48YnI+
PGJyPgorICAgICAgPHA+Li4uIGFzIHdlbGwgYXMgc2Nyb2xsYmFycyE8L3A+CisgICAgPC9kaXY+
CisgICAgPGRpdj48YSBpZD0iZW5kIiBocmVmPSJhIj5lPC9hPjwvZGl2PgorICAgIDxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDljZTVjYjguLjAzOTNlNDkgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNDIgQEAKKzIwMTAtMDUtMTQgIEFudG9uaW8gR29tZXMgIDx0b25pa2l0b29Ad2Via2l0
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBT
cGF0aWFsIE5hdmlnYXRpb246IG1ha2UgaXQgd29yayB3aXRoIGZvY3VzYWJsZSBlbGVtZW50cyBp
biBvdmVyZmxvdyBjb250ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zNjQ2MworCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcmVzc2VzIHRoZSBwcm9i
bGVtIHdpdGggU3BhdGlhbCBOYXZpZ2F0aW9uLiBJdCBjdXJyZW50bHkgZG9lcyBub3QKKyAgICAg
ICAgcHJvcGVybHkgdHJhdmVyc2Ugc2Nyb2xsYWJsZSBjb250ZW50cywgaW5jbHVkaW5nIHNjcm9s
bGFibGUgZGl2J3MuIEZvciB0aGlzIHRvIHdvcmssCisgICAgICAgIGEgbmV3IGNsYXNzIG1lbWJl
ciBjYWxsZWQgc2Nyb2xsYWJsZUVuY2xvc2luZ0JveCB3YXMgaW50cm9kdWNlZCB0byBGb2N1c0Nh
bmRpZGF0ZSBjbGFzcyB3aGljaAorICAgICAgICBrZWVwcyB0cmFjayBvZiB0aGUgY3VycmVudCBz
Y3JvbGxhYmxlIGJveCBOb2RlIHdyYXBwaW5nIGEgRm9jdXNDYW5kaWRhdGUuCisKKyAgICAgICAg
VG8gbWFrZSB1c2Ugb2YgZW5jbG9zaW5nU2Nyb2xsYWJsZUJveCBvZiBGb2N1c0NhbmRpZGF0ZSwg
dGhlIERPTSB0cmF2ZXJzYWwgcm91dGluZQorICAgICAgICAoRm9jdXNDb250cm9sbGVyOjpmaW5k
TmV4dEZvY3VzYWJsZUluRGlyZWN0aW9uKSB3YXMgY2hhbmdlZCBhcyBmb2xsb3dzOiB3aGVuIGl0
CisgICAgICAgIGVuY291bnRlcnMgYSBzY3JvbGxhYmxlIE5vZGUsIGVhY2ggZm9jdXNhYmxlIG5v
ZGUgd2hpY2ggaXMgJ2lubmVyJyBrZWVwcyB0cmFjayBvZgorICAgICAgICB0aGUgY29udGFpbmVy
IHJlZmVyZW5jZS4gQnkgdGhlIHRpbWUgYSBzaWJsaW5nIG9mIHRoZSBzY3JvbGxhYmxlIE5vZGUg
aXMgZW5jb3VudGVyZWQsCisgICAgICAgIHRoZXJlIGlzIG5vIG5lZWQgdG8gdHJhY2sgdGhpcyBy
ZWZlcmVuY2UgYW55IG1vcmUgYW5kIHRoZSB0cmF2ZXJzYWwgYWxnb3JpdGhtIGNvbnRpbnVlcwor
ICAgICAgICBub3JtYWxseS4KKworICAgICAgICBUaGUgY29tbW9uIGNhc2UgaXMgb2J2aW91c2x5
IHRoYXQgdGhlcmUgaXMgbm8gc2Nyb2xsYWJsZSBjb250YWluZXIgd3JhcHBpbmcgaXQuCisKKyAg
ICAgICAgdXBkYXRlRm9jdXNDYW5kaWRpdGVJZkNsb3NlciBsb2dpYyB3YXMgYWxzbyBhZGFwdGVk
IHRvIGZpdCB0aGUgbmVlZCBvZiB0aGUKKyAgICAgICAgbmV3bHkgaW50cm9kdWNlZCBlbmNsb3Np
bmdTY3JvbGxhYmxlQm94IGNsYXNzIG1lbWJlciwgZ2V0dGluZyBzaW1wbGVyIGFuZCBtb3JlCisg
ICAgICAgIGVhc2lseSBtYWludGFpbmFibGUuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZXZlbnRz
L3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWRpdi1zY3JvbGxhYmxlLWJ1dC13aXRob3V0LWZvY3Vz
YWJsZS1jb250ZW50Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZXZlbnRzL3NwYXRpYWwtbmF2
aWdhdGlvbi9zbmF2LWNsaXBwZWQtb3ZlcmZsb3ctY29udGVudC5odG1sCisKKyAgICAgICAgKiBw
YWdlL0ZvY3VzQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVGb2N1c0Nh
bmRpZGF0ZUluU2FtZUNvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVGb2N1c0Nh
bmRpZGF0ZUlmQ2xvc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6Zmlu
ZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRy
b2xsZXI6OmRlZXBGaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKToKKyAgICAgICAgKiBwYWdl
L1NwYXRpYWxOYXZpZ2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzU2Nyb2xsYWJsZUNv
bnRhaW5lck5vZGUpOgorICAgICAgICAqIHBhZ2UvU3BhdGlhbE5hdmlnYXRpb24uaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZvY3VzQ2FuZGlkYXRlOjpGb2N1c0NhbmRpZGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpGb2N1c0NhbmRpZGF0ZTo6aXNJblNjcm9sbGFibGVDb250YWluZXIpOgorCiAyMDEw
LTA2LTEzICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRm9jdXND
b250cm9sbGVyLmNwcCBiL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCmluZGV4IDVl
ZTQ2YmMuLjA3NjE3NzEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIu
Y3BwCisrKyBiL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCkBAIC0zNDIsNTEgKzM0
Miw4NCBAQCBib29sIEZvY3VzQ29udHJvbGxlcjo6YWR2YW5jZUZvY3VzRGlyZWN0aW9uYWxseShG
b2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIEtleWJvYQogICAgIHJldHVybiB0cnVlOwogfQogCi0v
LyBGSVhNRTogTWFrZSB0aGlzIG1ldGhvZCBtb3JlIG1vZHVsYXIsIGFuZCBzaW1wbGVyIHRvIHVu
ZGVyc3RhbmQgYW5kIG1haW50YWluLgotc3RhdGljIHZvaWQgdXBkYXRlRm9jdXNDYW5kaWRhdGVJ
ZkNsb3NlcihOb2RlKiBmb2N1c2VkTm9kZSwgY29uc3QgRm9jdXNDYW5kaWRhdGUmIGNhbmRpZGF0
ZSwgRm9jdXNDYW5kaWRhdGUmIGNsb3Nlc3QpCitzdGF0aWMgdm9pZCB1cGRhdGVGb2N1c0NhbmRp
ZGF0ZUluU2FtZUNvbnRhaW5lcihjb25zdCBGb2N1c0NhbmRpZGF0ZSYgY2FuZGlkYXRlLCBGb2N1
c0NhbmRpZGF0ZSYgY2xvc2VzdCkKIHsKLSAgICBib29sIHNhbWVEb2N1bWVudCA9IGNhbmRpZGF0
ZS5kb2N1bWVudCgpID09IGNsb3Nlc3QuZG9jdW1lbnQoKTsKLSAgICBpZiAoc2FtZURvY3VtZW50
KSB7Ci0gICAgICAgIGlmIChjbG9zZXN0LmFsaWdubWVudCA+IGNhbmRpZGF0ZS5hbGlnbm1lbnQK
LSAgICAgICAgIHx8IChjbG9zZXN0LnBhcmVudEFsaWdubWVudCAmJiBjYW5kaWRhdGUuYWxpZ25t
ZW50ID4gY2xvc2VzdC5wYXJlbnRBbGlnbm1lbnQpKQotICAgICAgICAgICAgcmV0dXJuOwotICAg
IH0gZWxzZSBpZiAoY2xvc2VzdC5hbGlnbm1lbnQgPiBjYW5kaWRhdGUuYWxpZ25tZW50Ci0gICAg
ICAgICAgICAmJiAoY2xvc2VzdC5wYXJlbnRBbGlnbm1lbnQgJiYgY2FuZGlkYXRlLmFsaWdubWVu
dCA+IGNsb3Nlc3QucGFyZW50QWxpZ25tZW50KSkKKyAgICBpZiAoY2xvc2VzdC5pc051bGwoKSkg
eworICAgICAgICBjbG9zZXN0ID0gY2FuZGlkYXRlOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKGNhbmRpZGF0ZS5hbGlnbm1lbnQgPT0gY2xvc2VzdC5hbGlnbm1lbnQpIHsKKyAg
ICAgICAgaWYgKGNhbmRpZGF0ZS5kaXN0YW5jZSA8IGNsb3Nlc3QuZGlzdGFuY2UpCisgICAgICAg
ICAgICBjbG9zZXN0ID0gY2FuZGlkYXRlOwogICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAg
aWYgKGNhbmRpZGF0ZS5hbGlnbm1lbnQgIT0gTm9uZQotICAgICB8fCAoY2xvc2VzdC5wYXJlbnRB
bGlnbm1lbnQgPj0gY2FuZGlkYXRlLmFsaWdubWVudAotICAgICAmJiBjbG9zZXN0LmRvY3VtZW50
KCkgPT0gY2FuZGlkYXRlLmRvY3VtZW50KCkpKSB7CisgICAgaWYgKGNhbmRpZGF0ZS5hbGlnbm1l
bnQgPiBjbG9zZXN0LmFsaWdubWVudCkKKyAgICAgICAgY2xvc2VzdCA9IGNhbmRpZGF0ZTsKK30K
IAotICAgICAgICAvLyBJZiB3ZSBhcmUgbm93IGluIGFuIGhpZ2hlciBwcmVjZWRlbnQgY2FzZSwg
bGV0cyByZXNldCB0aGUgY3VycmVudCBjbG9zZXN0J3MKLSAgICAgICAgLy8gZGlzdGFuY2Ugc28g
d2UgZm9yY2UgaXQgdG8gYmUgYmlnZ2VyIHRoYW4gYW55IHJlc3VsdCB3ZSB3aWxsIGdldCBmcm9t
Ci0gICAgICAgIC8vIHNwYXRpYWxEaXN0YW5jZSgpLgotICAgICAgICBpZiAoY2xvc2VzdC5hbGln
bm1lbnQgPCBjYW5kaWRhdGUuYWxpZ25tZW50Ci0gICAgICAgICAmJiBjbG9zZXN0LnBhcmVudEFs
aWdubWVudCA8IGNhbmRpZGF0ZS5hbGlnbm1lbnQpCi0gICAgICAgICAgICBjbG9zZXN0LmRpc3Rh
bmNlID0gbWF4RGlzdGFuY2UoKTsKK3N0YXRpYyB2b2lkIHVwZGF0ZUZvY3VzQ2FuZGlkYXRlSWZD
bG9zZXIoTm9kZSogZm9jdXNlZE5vZGUsIGNvbnN0IEZvY3VzQ2FuZGlkYXRlJiBjYW5kaWRhdGUs
IEZvY3VzQ2FuZGlkYXRlJiBjbG9zZXN0KQoreworICAgIC8vIEZpcnN0LCBjaGVjayB0aGUgY29t
bW9uIGNhc2U6IG5laXRoZXIgY2FuZGlkYXRlIG5vciBjbG9zZXN0IGFyZQorICAgIC8vIGluc2lk
ZSBzY3JvbGxhYmxlIGNvbnRlbnQsIHRoZW4gbm8gbmVlZCB0byBjYXJlIGFib3V0IGVuY2xvc2lu
Z1Njcm9sbGFibGVCb3gKKyAgICAvLyBoZXVyaXN0aWNzIG9yIHBhcmVudHtEaXN0YW5jZSxBbGln
bm1lbnR9LCBidXQgb25seSBkaXN0YW5jZSBhbmQgYWxpZ25tZW50LgorICAgIGlmICghY2FuZGlk
YXRlLmluU2Nyb2xsYWJsZUNvbnRhaW5lcigpICYmICFjbG9zZXN0LmluU2Nyb2xsYWJsZUNvbnRh
aW5lcigpKSB7CisgICAgICAgIHVwZGF0ZUZvY3VzQ2FuZGlkYXRlSW5TYW1lQ29udGFpbmVyKGNh
bmRpZGF0ZSwgY2xvc2VzdCk7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAvLyBCYWls
IG91dCBpZiBjYW5kaWRhdGUncyBkaXN0YW5jZSBpcyBsYXJnZXIgdGhhbiB0aGF0IG9mIHRoZSBj
bG9zZXN0IGNhbmRpZGF0ZS4KLSAgICBpZiAoY2FuZGlkYXRlLmRpc3RhbmNlID49IGNsb3Nlc3Qu
ZGlzdGFuY2UpCisgICAgYm9vbCBzYW1lQ29udGFpbmVyOworICAgIGlmIChjYW5kaWRhdGUuZG9j
dW1lbnQoKSAhPSBjbG9zZXN0LmRvY3VtZW50KCkpCisgICAgICAgIHNhbWVDb250YWluZXIgPSBm
YWxzZTsKKyAgICBlbHNlCisgICAgICAgIHNhbWVDb250YWluZXIgPSBjYW5kaWRhdGUuZW5jbG9z
aW5nU2Nyb2xsYWJsZUJveCA9PSBjbG9zZXN0LmVuY2xvc2luZ1Njcm9sbGFibGVCb3g7CisKKyAg
ICAvLyBTZWNvbmQsIGlmIGNhbmRpZGF0ZSBhbmQgY2xvc2VzdCBhcmUgaW4gdGhlIHNhbWUgImNv
bnRhaW5lciIgKGkuZS4ge2l9ZnJhbWUgb3IgYW55CisgICAgLy8gc2Nyb2xsYWJsZSBibG9jayBl
bGVtZW50KSwgd2UgY2FuIGhhbmRsZSB0aGVtIGFzIGNvbW1vbiBjYXNlLgorICAgIGlmIChzYW1l
Q29udGFpbmVyKSB7CisgICAgICAgIHVwZGF0ZUZvY3VzQ2FuZGlkYXRlSW5TYW1lQ29udGFpbmVy
KGNhbmRpZGF0ZSwgY2xvc2VzdCk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICBpZiAo
Y2xvc2VzdC5pc051bGwoKSkgeworICAgIC8vIExhc3QsIHdlIGFyZSBjb25zaWRlcmluZyBtb3Zp
bmcgdG8gYSBjYW5kaWRhdGUgbG9jYXRlZCBpbiBhIGRpZmZlcmVudCBlbmNsb3NpbmcKKyAgICAv
LyBzY3JvbGxhYmxlIGJveCB0aGFuIGNsb3Nlc3QuCisgICAgYm9vbCBpc0luSW5uZXJEb2N1bWVu
dCA9ICFpc0luUm9vdERvY3VtZW50KGZvY3VzZWROb2RlKTsKKworICAgIGJvb2wgc2FtZUNvbnRh
aW5lckFzQ2FuZGlkYXRlID0gaXNJbklubmVyRG9jdW1lbnQgPyBmb2N1c2VkTm9kZS0+ZG9jdW1l
bnQoKSA9PSBjYW5kaWRhdGUuZG9jdW1lbnQoKSA6CisgICAgICAgIGZvY3VzZWROb2RlLT5pc0Rl
c2NlbmRhbnRPZihjYW5kaWRhdGUuZW5jbG9zaW5nU2Nyb2xsYWJsZUJveCk7CisKKyAgICBib29s
IHNhbWVDb250YWluZXJBc0Nsb3Nlc3QgPSBpc0luSW5uZXJEb2N1bWVudCA/IGZvY3VzZWROb2Rl
LT5kb2N1bWVudCgpID09IGNsb3Nlc3QuZG9jdW1lbnQoKSA6CisgICAgICAgIGZvY3VzZWROb2Rl
LT5pc0Rlc2NlbmRhbnRPZihjbG9zZXN0LmVuY2xvc2luZ1Njcm9sbGFibGVCb3gpOworCisgICAg
Ly8gc2FtZUNvbnRhaW5lckFzQ2FuZGlkYXRlIGFuZCBzYW1lQ29udGFpbmVyQXNDbG9zZXN0IGFy
ZSBtdXR1YWxseSBleGNsdXNpdmUuCisgICAgQVNTRVJUKCEoc2FtZUNvbnRhaW5lckFzQ2FuZGlk
YXRlICYmIHNhbWVDb250YWluZXJBc0Nsb3Nlc3QpKTsKKworICAgIGlmIChzYW1lQ29udGFpbmVy
QXNDYW5kaWRhdGUpIHsKICAgICAgICAgY2xvc2VzdCA9IGNhbmRpZGF0ZTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIC8vIElmIHRoZSBmb2N1c2VkIG5vZGUgYW5kIHRoZSBjYW5kYWRh
dGUgYXJlIGluIHRoZSBzYW1lIGRvY3VtZW50IGFuZCBjdXJyZW50Ci0gICAgLy8gY2xvc2VzdCBj
YW5kaWRhdGUgaXMgbm90IGluIGFuIHtpfWZyYW1lIHRoYXQgaXMgcHJlZmVyYWJsZSB0byBnZXQg
Zm9jdXNlZCAuLi4KLSAgICBpZiAoZm9jdXNlZE5vZGUtPmRvY3VtZW50KCkgPT0gY2FuZGlkYXRl
LmRvY3VtZW50KCkKLSAgICAgICAgJiYgY2FuZGlkYXRlLmRpc3RhbmNlIDwgY2xvc2VzdC5wYXJl
bnREaXN0YW5jZSkKLSAgICAgICAgY2xvc2VzdCA9IGNhbmRpZGF0ZTsKLSAgICBlbHNlIGlmIChm
b2N1c2VkTm9kZS0+ZG9jdW1lbnQoKSAhPSBjYW5kaWRhdGUuZG9jdW1lbnQoKSkgewotICAgICAg
ICAvLyBJZiB0aGUgZm9jdXNlZE5vZGUgaXMgaW4gYW4gaW5uZXIgZG9jdW1lbnQgYW5kIGNhbmRp
ZGF0ZSBpcyBpbiBhCi0gICAgICAgIC8vIGRpZmZlcmVudCBkb2N1bWVudCwgd2Ugb25seSBjb25z
aWRlciB0byBjaGFuZ2UgZm9jdXMgaWYgdGhlcmUgaXMgbm90Ci0gICAgICAgIC8vIGFub3RoZXIg
YWxyZWFkeSBnb29kIGZvY3VzYWJsZSBjYW5kaWRhdGUgaW4gdGhlIHNhbWUgZG9jdW1lbnQgYXMg
Zm9jdXNlZE5vZGUuCi0gICAgICAgIGlmICghKChpc0luUm9vdERvY3VtZW50KGNhbmRpZGF0ZS5u
b2RlKSAmJiAhaXNJblJvb3REb2N1bWVudChmb2N1c2VkTm9kZSkpCi0gICAgICAgICAgICAmJiBm
b2N1c2VkTm9kZS0+ZG9jdW1lbnQoKSA9PSBjbG9zZXN0LmRvY3VtZW50KCkpKQorICAgIGlmIChz
YW1lQ29udGFpbmVyQXNDbG9zZXN0KSB7CisgICAgICAgIC8vIE5vdGhpbmcgdG8gYmUgZG9uZS4K
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vICMjIyAhc2FtZUNvbnRhaW5lckFzQ2Fu
ZGlkYXRlICYmICFzYW1lQ29udGFpbmVyQXNDbG9zZXN0CisgICAgLy8gSWYgZGlzdGFuY2UgaXMg
c2hvcnRlciwgYW5kIHdlIGFyZSB0YWxraW5nIGFib3V0IHNjcm9sbGFibGUgY29udGFpbmVyLAor
ICAgIC8vIGxldHMgY29tcGFyZSBwYXJlbnQgZGlzdGFuY2UgYW5kIGFsaWdubWVudCBiZWZvcmUg
YW55dGhpbmcuCisgICAgaWYgKGNhbmRpZGF0ZS5kaXN0YW5jZSA8IGNsb3Nlc3QuZGlzdGFuY2Up
IHsKKyAgICAgICAgaWYgKGNhbmRpZGF0ZS5hbGlnbm1lbnQgPj0gY2xvc2VzdC5wYXJlbnRBbGln
bm1lbnQKKyAgICAgICAgIHx8IGNhbmRpZGF0ZS5wYXJlbnRBbGlnbm1lbnQgPT0gY2xvc2VzdC5w
YXJlbnRBbGlnbm1lbnQpIHsKKyAgICAgICAgICAgIGNsb3Nlc3QgPSBjYW5kaWRhdGU7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgIH0gZWxzZSBpZiAoY2FuZGlkYXRlLnBh
cmVudERpc3RhbmNlIDwgY2xvc2VzdC5kaXN0YW5jZSkgeworICAgICAgICBpZiAoY2FuZGlkYXRl
LnBhcmVudEFsaWdubWVudCA+PSBjbG9zZXN0LmFsaWdubWVudCkgewogICAgICAgICAgICAgY2xv
c2VzdCA9IGNhbmRpZGF0ZTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogICAgIH0K
IH0KIApAQCAtMzk4LDE4ICs0MzEsNDYgQEAgdm9pZCBGb2N1c0NvbnRyb2xsZXI6OmZpbmRGb2N1
c2FibGVOb2RlSW5EaXJlY3Rpb24oTm9kZSogb3V0ZXIsIE5vZGUqIGZvY3VzZWROb2QKICAgICBB
U1NFUlQob3V0ZXIpOwogICAgIEFTU0VSVChjYW5kaWRhdGVQYXJlbnQuaXNOdWxsKCkKICAgICAg
ICAgfHwgY2FuZGlkYXRlUGFyZW50Lm5vZGUtPmhhc1RhZ05hbWUoZnJhbWVUYWcpCi0gICAgICAg
IHx8IGNhbmRpZGF0ZVBhcmVudC5ub2RlLT5oYXNUYWdOYW1lKGlmcmFtZVRhZykpOworICAgICAg
ICB8fCBjYW5kaWRhdGVQYXJlbnQubm9kZS0+aGFzVGFnTmFtZShpZnJhbWVUYWcpCisgICAgICAg
IHx8IGlzU2Nyb2xsYWJsZUNvbnRhaW5lck5vZGUoY2FuZGlkYXRlUGFyZW50Lm5vZGUpKTsKIAog
ICAgIC8vIFdhbGsgYWxsIHRoZSBjaGlsZCBub2RlcyBhbmQgdXBkYXRlIGNsb3Nlc3RGb2N1c0Nh
bmRpZGF0ZSBpZiB3ZSBmaW5kIGEgbmVhcmVyIG5vZGUuCiAgICAgTm9kZSogY2FuZGlkYXRlID0g
b3V0ZXI7CiAgICAgd2hpbGUgKGNhbmRpZGF0ZSkgeworCiAgICAgICAgIC8vIElubmVyIGRvY3Vt
ZW50cyBjYXNlLgorICAgICAgICBpZiAoY2FuZGlkYXRlLT5pc0ZyYW1lT3duZXJFbGVtZW50KCkp
IHsKKyAgICAgICAgICAgIGRlZXBGaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKGNhbmRpZGF0
ZSwgZm9jdXNlZE5vZGUsIGRpcmVjdGlvbiwgZXZlbnQsIGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZSk7
CiAKLSAgICAgICAgaWYgKGNhbmRpZGF0ZS0+aXNGcmFtZU93bmVyRWxlbWVudCgpKQorICAgICAg
ICAvLyBTY3JvbGxhYmxlIGJsb2NrIGVsZW1lbnRzIChlLmcuIDxkaXY+LCBldGMpIGNhc2UuCisg
ICAgICAgIH0gZWxzZSBpZiAoaXNTY3JvbGxhYmxlQ29udGFpbmVyTm9kZShjYW5kaWRhdGUpKSB7
CiAgICAgICAgICAgICBkZWVwRmluZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbihjYW5kaWRhdGUs
IGZvY3VzZWROb2RlLCBkaXJlY3Rpb24sIGV2ZW50LCBjbG9zZXN0Rm9jdXNDYW5kaWRhdGUpOwot
ICAgICAgICBlbHNlIGlmIChjYW5kaWRhdGUgIT0gZm9jdXNlZE5vZGUgJiYgY2FuZGlkYXRlLT5p
c0tleWJvYXJkRm9jdXNhYmxlKGV2ZW50KSkgeworICAgICAgICAgICAgY2FuZGlkYXRlID0gY2Fu
ZGlkYXRlLT50cmF2ZXJzZU5leHRTaWJsaW5nKCk7CisgICAgICAgICAgICBjb250aW51ZTsKKwor
ICAgICAgICB9IGVsc2UgaWYgKGNhbmRpZGF0ZSAhPSBmb2N1c2VkTm9kZSAmJiBjYW5kaWRhdGUt
PmlzS2V5Ym9hcmRGb2N1c2FibGUoZXZlbnQpKSB7CiAgICAgICAgICAgICBGb2N1c0NhbmRpZGF0
ZSBjdXJyZW50Rm9jdXNDYW5kaWRhdGUoY2FuZGlkYXRlKTsKIAorICAgICAgICAgICAgLy8gVGhl
cmUgYXJlIHR3byB3YXlzIHRvIGlkZW50aWZ5IHdlIGFyZSBpbiBhIHJlY3Vyc2l2ZSBjYWxsIGZy
b20gZGVlcEZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24KKyAgICAgICAgICAgIC8vIChpLmUu
IHByb2Nlc3NpbmcgYW4gZWxlbWVudCBpbiBhbiBpZnJhbWUsIGZyYW1lIG9yIGEgc2Nyb2xsYWJs
ZSBibG9jayBlbGVtZW50KToKKworICAgICAgICAgICAgLy8gMSkgSWYgY2FuZGlkYXRlUGFyZW50
IGlzIG5vdCBudWxsLCBhbmQgaXQgaG9sZHMgdGhlIGRpc3RhbmNlIGFuZCBhbGlnbm1lbnQgZGF0
YSBvZiB0aGUKKyAgICAgICAgICAgIC8vIHBhcmVudCBjb250YWluZXIgZWxlbWVudCBpdHNlbGYu
CisgICAgICAgICAgICBpZiAoIWNhbmRpZGF0ZVBhcmVudC5pc051bGwoKSkgeworICAgICAgICAg
ICAgICAgIGN1cnJlbnRGb2N1c0NhbmRpZGF0ZS5wYXJlbnRBbGlnbm1lbnQgPSBjYW5kaWRhdGVQ
YXJlbnQuYWxpZ25tZW50OworICAgICAgICAgICAgICAgIGN1cnJlbnRGb2N1c0NhbmRpZGF0ZS5w
YXJlbnREaXN0YW5jZSA9IGNhbmRpZGF0ZVBhcmVudC5kaXN0YW5jZTsKKyAgICAgICAgICAgICAg
ICBjdXJyZW50Rm9jdXNDYW5kaWRhdGUuZW5jbG9zaW5nU2Nyb2xsYWJsZUJveCA9IGNhbmRpZGF0
ZVBhcmVudC5ub2RlOworCisgICAgICAgICAgICAvLyAyKSBQYXJlbnQgb2Ygb3V0ZXIgaXMgZWl0
aGVyOgorICAgICAgICAgICAgLy8gKiA8ZnJhbWU+IG9yIDxpZnJhbWU+OworICAgICAgICAgICAg
Ly8gKiBvciBhbnkgb3RoZXIgc2Nyb2xsYWJsZSBibG9jayBlbGVtZW50LgorICAgICAgICAgICAg
fSBlbHNlIGlmICghaXNJblJvb3REb2N1bWVudChvdXRlcikpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihvdXRlci0+cGFy
ZW50KCkpKQorICAgICAgICAgICAgICAgICAgICBjdXJyZW50Rm9jdXNDYW5kaWRhdGUuZW5jbG9z
aW5nU2Nyb2xsYWJsZUJveCA9IHN0YXRpY19jYXN0PE5vZGUqPihkb2N1bWVudC0+b3duZXJFbGVt
ZW50KCkpOworCisgICAgICAgICAgICB9IGVsc2UgaWYgKGlzU2Nyb2xsYWJsZUNvbnRhaW5lck5v
ZGUob3V0ZXItPnBhcmVudCgpKSkKKyAgICAgICAgICAgICAgICBjdXJyZW50Rm9jdXNDYW5kaWRh
dGUuZW5jbG9zaW5nU2Nyb2xsYWJsZUJveCA9IG91dGVyLT5wYXJlbnQoKTsKKwogICAgICAgICAg
ICAgLy8gR2V0IGRpc3RhbmNlIGFuZCBhbGlnbm1lbnQgZnJvbSBjdXJyZW50IGNhbmRpZGF0ZS4K
ICAgICAgICAgICAgIGRpc3RhbmNlRGF0YUZvck5vZGUoZGlyZWN0aW9uLCBmb2N1c2VkTm9kZSwg
Y3VycmVudEZvY3VzQ2FuZGlkYXRlKTsKIApAQCAtNDE5LDE0ICs0ODAsNiBAQCB2b2lkIEZvY3Vz
Q29udHJvbGxlcjo6ZmluZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbihOb2RlKiBvdXRlciwgTm9k
ZSogZm9jdXNlZE5vZAogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICAvLyBJZiBjYW5kaWRhdGVQYXJlbnQgaXMgbm90IG51bGwsIGl0IG1lYW5z
IHRoYXQgd2UgYXJlIGluIGEgcmVjdXJzaXZlIGNhbGwKLSAgICAgICAgICAgIC8vIGZyb20gZGVl
cEZpbmVGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24gKGkuZS4gcHJvY2Vzc2luZyBhbiBlbGVtZW50
IGluIGFuIGlmcmFtZSksCi0gICAgICAgICAgICAvLyBhbmQgaG9sZHMgdGhlIGRpc3RhbmNlIGFu
ZCBhbGlnbm1lbnQgZGF0YSBvZiB0aGUgaWZyYW1lIGVsZW1lbnQgaXRzZWxmLgotICAgICAgICAg
ICAgaWYgKCFjYW5kaWRhdGVQYXJlbnQuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgICAgICBjdXJy
ZW50Rm9jdXNDYW5kaWRhdGUucGFyZW50QWxpZ25tZW50ID0gY2FuZGlkYXRlUGFyZW50LmFsaWdu
bWVudDsKLSAgICAgICAgICAgICAgICBjdXJyZW50Rm9jdXNDYW5kaWRhdGUucGFyZW50RGlzdGFu
Y2UgPSBjYW5kaWRhdGVQYXJlbnQuZGlzdGFuY2U7Ci0gICAgICAgICAgICB9Ci0KICAgICAgICAg
ICAgIHVwZGF0ZUZvY3VzQ2FuZGlkYXRlSWZDbG9zZXIoZm9jdXNlZE5vZGUsIGN1cnJlbnRGb2N1
c0NhbmRpZGF0ZSwgY2xvc2VzdEZvY3VzQ2FuZGlkYXRlKTsKICAgICAgICAgfQogCkBAIC00Mzgs
NyArNDkxLDkgQEAgdm9pZCBGb2N1c0NvbnRyb2xsZXI6OmRlZXBGaW5kRm9jdXNhYmxlTm9kZUlu
RGlyZWN0aW9uKE5vZGUqIGNvbnRhaW5lciwgTm9kZSogZm8KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb2N1c0RpcmVjdGlvbiBkaXJlY3Rp
b24sIEtleWJvYXJkRXZlbnQqIGV2ZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEZvY3VzQ2FuZGlkYXRlJiBjbG9zZXN0Rm9jdXNDYW5k
aWRhdGUpCiB7Ci0gICAgQVNTRVJUKGNvbnRhaW5lci0+aGFzVGFnTmFtZShmcmFtZVRhZykgfHwg
Y29udGFpbmVyLT5oYXNUYWdOYW1lKGlmcmFtZVRhZykpOworICAgIEFTU0VSVChjb250YWluZXIt
Pmhhc1RhZ05hbWUoZnJhbWVUYWcpCisgICAgICAgIHx8IGNvbnRhaW5lci0+aGFzVGFnTmFtZShp
ZnJhbWVUYWcpCisgICAgICAgIHx8IGlzU2Nyb2xsYWJsZUNvbnRhaW5lck5vZGUoY29udGFpbmVy
KSk7CiAKICAgICAvLyBUcmFjayBpZiBmb2N1c2VkTm9kZSBpcyBhIGRlc2NlbmRhbnQgb2YgdGhl
IGN1cnJlbnQgY29udGFpbmVyIG5vZGUgYmVpbmcgcHJvY2Vzc2VkLgogICAgIGJvb2wgZGVzY2Vu
ZGFudE9mQ29udGFpbmVyID0gZmFsc2U7CkBAIC00NTgsNiArNTEzLDExIEBAIHZvaWQgRm9jdXND
b250cm9sbGVyOjpkZWVwRmluZEZvY3VzYWJsZU5vZGVJbkRpcmVjdGlvbihOb2RlKiBjb250YWlu
ZXIsIE5vZGUqIGZvCiAgICAgICAgIGRlc2NlbmRhbnRPZkNvbnRhaW5lciA9IGlubmVyRG9jdW1l
bnQgPT0gZm9jdXNlZE5vZGUtPmRvY3VtZW50KCk7CiAgICAgICAgIGZpcnN0Q2hpbGQgPSBpbm5l
ckRvY3VtZW50LT5maXJzdENoaWxkKCk7CiAKKyAgICAvLyBTY3JvbGxhYmxlIGJsb2NrIGVsZW1l
bnRzIChlLmcuIDxkaXY+LCBldGMpCisgICAgfSBlbHNlIGlmIChpc1Njcm9sbGFibGVDb250YWlu
ZXJOb2RlKGNvbnRhaW5lcikpIHsKKworICAgICAgICBmaXJzdENoaWxkID0gY29udGFpbmVyLT5m
aXJzdENoaWxkKCk7CisgICAgICAgIGRlc2NlbmRhbnRPZkNvbnRhaW5lciA9IGZvY3VzZWROb2Rl
LT5pc0Rlc2NlbmRhbnRPZihjb250YWluZXIpOwogICAgIH0KIAogICAgIGlmIChkZXNjZW5kYW50
T2ZDb250YWluZXIpIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlv
bi5jcHAgYi9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwCmluZGV4IGNmYmVjZGIu
LjllNmY4OTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAK
KysrIGIvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcApAQCAtNTMwLDQgKzUzMCwx
NyBAQCBzdGF0aWMgYm9vbCBjaGVja05lZ2F0aXZlQ29vcmRzRm9yTm9kZShOb2RlKiBub2RlLCBj
b25zdCBJbnRSZWN0JiBjdXJSZWN0KQogICAgIHJldHVybiBjYW5CZVNjcm9sbGVkOwogfQogCiti
b29sIGlzU2Nyb2xsYWJsZUNvbnRhaW5lck5vZGUoTm9kZSogbm9kZSkKK3sKKyAgICBpZiAoIW5v
ZGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRl
cmVyID0gbm9kZS0+cmVuZGVyZXIoKSkgeworICAgICAgICByZXR1cm4gKHJlbmRlcmVyLT5pc0Jv
eCgpICYmIHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+Y2FuQmVTY3JvbGxlZEFuZEhhc1Njcm9sbGFi
bGVBcmVhKCkKKyAgICAgICAgICAgICAmJiBub2RlLT5oYXNDaGlsZE5vZGVzKCkgJiYgIW5vZGUt
PmlzRG9jdW1lbnROb2RlKCkpOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZp
Z2F0aW9uLmggYi9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uaAppbmRleCBkMzhmYjA5
Li45MjU4OTAwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uaAor
KysgYi9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uaApAQCAtOTcsNiArOTcsNyBAQCBl
bnVtIFJlY3RzQWxpZ25tZW50IHsKIHN0cnVjdCBGb2N1c0NhbmRpZGF0ZSB7CiAgICAgRm9jdXND
YW5kaWRhdGUoKQogICAgICAgICA6IG5vZGUoMCkKKyAgICAgICAgLCBlbmNsb3NpbmdTY3JvbGxh
YmxlQm94KDApCiAgICAgICAgICwgZGlzdGFuY2UobWF4RGlzdGFuY2UoKSkKICAgICAgICAgLCBw
YXJlbnREaXN0YW5jZShtYXhEaXN0YW5jZSgpKQogICAgICAgICAsIGFsaWdubWVudChOb25lKQpA
QCAtMTA2LDYgKzEwNyw3IEBAIHN0cnVjdCBGb2N1c0NhbmRpZGF0ZSB7CiAKICAgICBGb2N1c0Nh
bmRpZGF0ZShOb2RlKiBuKQogICAgICAgICA6IG5vZGUobikKKyAgICAgICAgLCBlbmNsb3NpbmdT
Y3JvbGxhYmxlQm94KDApCiAgICAgICAgICwgZGlzdGFuY2UobWF4RGlzdGFuY2UoKSkKICAgICAg
ICAgLCBwYXJlbnREaXN0YW5jZShtYXhEaXN0YW5jZSgpKQogICAgICAgICAsIGFsaWdubWVudChO
b25lKQpAQCAtMTE0LDkgKzExNiwxMSBAQCBzdHJ1Y3QgRm9jdXNDYW5kaWRhdGUgewogICAgIH0K
IAogICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIW5vZGU7IH0KKyAgICBib29sIGlu
U2Nyb2xsYWJsZUNvbnRhaW5lcigpIGNvbnN0IHsgcmV0dXJuIG5vZGUgJiYgZW5jbG9zaW5nU2Ny
b2xsYWJsZUJveDsgfQogICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG5v
ZGUgPyBub2RlLT5kb2N1bWVudCgpIDogMDsgfQogCiAgICAgTm9kZSogbm9kZTsKKyAgICBOb2Rl
KiBlbmNsb3NpbmdTY3JvbGxhYmxlQm94OwogICAgIGxvbmcgbG9uZyBkaXN0YW5jZTsKICAgICBs
b25nIGxvbmcgcGFyZW50RGlzdGFuY2U7CiAgICAgUmVjdHNBbGlnbm1lbnQgYWxpZ25tZW50OwpA
QCAtMTI4LDYgKzEzMiw3IEBAIGJvb2wgc2Nyb2xsSW5EaXJlY3Rpb24oRnJhbWUqLCBGb2N1c0Rp
cmVjdGlvbik7CiB2b2lkIHNjcm9sbEludG9WaWV3KEVsZW1lbnQqKTsKIGJvb2wgaGFzT2Zmc2Ny
ZWVuUmVjdChOb2RlKik7CiBib29sIGlzSW5Sb290RG9jdW1lbnQoTm9kZSopOworYm9vbCBpc1Nj
cm9sbGFibGVDb250YWluZXJOb2RlKE5vZGUqKTsKIAogfSAvLyBuYW1zcGFjZSBXZWJDb3JlCiAK
LS0gCjEuNy4wLjQKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58773</attachid>
            <date>2010-06-15 07:01:20 -0700</date>
            <delta_ts>2010-06-15 07:01:20 -0700</delta_ts>
            <desc>patch v5.4 that applies against qtwebkit-2.0 branch</desc>
            <filename>0001-Spatial-Navigation-make-it-work-with-focusable-eleme.patch</filename>
            <type>text/plain</type>
            <size>26588</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSA4Njk1NmE0MGFkNmI4NjE5OTg0MGI0NWI0NTE5ZTcwZGIxNTE1NzEzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiB0b25pa2l0b29Ad2Via2l0Lm9yZyA8dG9uaWtpdG9vQHdlYmtp
dC5vcmdAMjY4ZjQ1Y2MtY2QwOS0wNDEwLWFiM2MtZDUyNjkxYjRkYmZjPgpEYXRlOiBNb24sIDE0
IEp1biAyMDEwIDE5OjEwOjU5ICswMDAwClN1YmplY3Q6IFtQQVRDSF0gU3BhdGlhbCBOYXZpZ2F0
aW9uOiBtYWtlIGl0IHdvcmsgd2l0aCBmb2N1c2FibGUgZWxlbWVudHMgaW4gb3ZlcmZsb3cgY29u
dGVudAogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2NDYzCgpSZXZp
ZXdlZCBieSBTaW1vbiBGcmFzZXIgYW5kIEtlbm5ldGggQ2hyaXN0aWFuc2VuLgpQYXRjaCBieSBB
bnRvbmlvIEdvbWVzIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4KCldlYkNvcmU6CgpUaGlzIHBhdGNo
IGFkZHJlc3NlcyB0aGUgcHJvYmxlbSB3aXRoIFNwYXRpYWwgTmF2aWdhdGlvbi4gSXQgY3VycmVu
dGx5IGRvZXMgbm90CnByb3Blcmx5IHRyYXZlcnNlIHNjcm9sbGFibGUgY29udGVudHMsIGluY2x1
ZGluZyBzY3JvbGxhYmxlIGRpdidzLiBGb3IgdGhpcyB0byB3b3JrLAphIG5ldyBjbGFzcyBtZW1i
ZXIgY2FsbGVkIHNjcm9sbGFibGVFbmNsb3NpbmdCb3ggd2FzIGludHJvZHVjZWQgdG8gRm9jdXND
YW5kaWRhdGUgY2xhc3Mgd2hpY2gKa2VlcHMgdHJhY2sgb2YgdGhlIGN1cnJlbnQgc2Nyb2xsYWJs
ZSBib3ggTm9kZSB3cmFwcGluZyBhIEZvY3VzQ2FuZGlkYXRlLgoKVG8gbWFrZSB1c2Ugb2YgZW5j
bG9zaW5nU2Nyb2xsYWJsZUJveCBvZiBGb2N1c0NhbmRpZGF0ZSwgdGhlIERPTSB0cmF2ZXJzYWwg
cm91dGluZQooRm9jdXNDb250cm9sbGVyOjpmaW5kTmV4dEZvY3VzYWJsZUluRGlyZWN0aW9uKSB3
YXMgY2hhbmdlZCBhcyBmb2xsb3dzOiB3aGVuIGl0CmVuY291bnRlcnMgYSBzY3JvbGxhYmxlIE5v
ZGUsIGVhY2ggZm9jdXNhYmxlIG5vZGUgd2hpY2ggaXMgJ2lubmVyJyBrZWVwcyB0cmFjayBvZgp0
aGUgY29udGFpbmVyIHJlZmVyZW5jZS4gQnkgdGhlIHRpbWUgYSBzaWJsaW5nIG9mIHRoZSBzY3Jv
bGxhYmxlIE5vZGUgaXMgZW5jb3VudGVyZWQsCnRoZXJlIGlzIG5vIG5lZWQgdG8gdHJhY2sgdGhp
cyByZWZlcmVuY2UgYW55IG1vcmUgYW5kIHRoZSB0cmF2ZXJzYWwgYWxnb3JpdGhtIGNvbnRpbnVl
cwpub3JtYWxseS4KClRoZSBjb21tb24gY2FzZSBpcyBvYnZpb3VzbHkgdGhhdCB0aGVyZSBpcyBu
byBzY3JvbGxhYmxlIGNvbnRhaW5lciB3cmFwcGluZyBpdC4KCnVwZGF0ZUZvY3VzQ2FuZGlkaXRl
SWZDbG9zZXIgbG9naWMgd2FzIGFsc28gYWRhcHRlZCB0byBmaXQgdGhlIG5lZWQgb2YgdGhlCm5l
d2x5IGludHJvZHVjZWQgZW5jbG9zaW5nU2Nyb2xsYWJsZUJveCBjbGFzcyBtZW1iZXIsIGdldHRp
bmcgc2ltcGxlciBhbmQgbW9yZQplYXNpbHkgbWFpbnRhaW5hYmxlLgoKVGVzdHM6IGZhc3QvZXZl
bnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWRpdi1zY3JvbGxhYmxlLWJ1dC13aXRob3V0LWZv
Y3VzYWJsZS1jb250ZW50Lmh0bWwKICAgICAgIGZhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlv
bi9zbmF2LWNsaXBwZWQtb3ZlcmZsb3ctY29udGVudC5odG1sCgoqIHBhZ2UvRm9jdXNDb250cm9s
bGVyLmNwcDoKKFdlYkNvcmU6OnVwZGF0ZUZvY3VzQ2FuZGlkYXRlSW5TYW1lQ29udGFpbmVyKToK
KFdlYkNvcmU6OnVwZGF0ZUZvY3VzQ2FuZGlkYXRlSWZDbG9zZXIpOgooV2ViQ29yZTo6Rm9jdXND
b250cm9sbGVyOjpmaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKToKKFdlYkNvcmU6OkZvY3Vz
Q29udHJvbGxlcjo6ZGVlcEZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24pOgoqIHBhZ2UvU3Bh
dGlhbE5hdmlnYXRpb24uY3BwOgooV2ViQ29yZTo6aXNTY3JvbGxhYmxlQ29udGFpbmVyTm9kZSk6
CiogcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5oOgooV2ViQ29yZTo6Rm9jdXNDYW5kaWRhdGU6OkZv
Y3VzQ2FuZGlkYXRlKToKKFdlYkNvcmU6OkZvY3VzQ2FuZGlkYXRlOjppblNjcm9sbGFibGVDb250
YWluZXIpOgoKTGF5b3V0VGVzdHM6CgoqIGZhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9z
bmF2LWRpdi1zY3JvbGxhYmxlLWJ1dC13aXRob3V0LWZvY3VzYWJsZS1jb250ZW50LWV4cGVjdGVk
LnR4dDogQWRkZWQuCiogZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtZGl2LXNj
cm9sbGFibGUtYnV0LXdpdGhvdXQtZm9jdXNhYmxlLWNvbnRlbnQuaHRtbDogQWRkZWQuCiogZmFz
dC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtY2xpcHBlZC1vdmVyZmxvdy1jb250ZW50
LWV4cGVjdGVkLnR4dDogQWRkZWQuCiogZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3Nu
YXYtY2xpcHBlZC1vdmVyZmxvdy1jb250ZW50Lmh0bWw6IEFkZGVkLgoKZ2l0LXN2bi1pZDogaHR0
cDovL3N2bi53ZWJraXQub3JnL3JlcG9zaXRvcnkvd2Via2l0L3RydW5rQDYxMTM0IDI2OGY0NWNj
LWNkMDktMDQxMC1hYjNjLWQ1MjY5MWI0ZGJmYwotLS0KIExheW91dFRlc3RzL0NoYW5nZUxvZyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMiArKwogLi4uL3NuYXYtY2xpcHBlZC1v
dmVyZmxvd2VkLWNvbnRlbnQtZXhwZWN0ZWQudHh0ICAgfCAgIDI0ICsrKysKIC4uLi9zbmF2LWNs
aXBwZWQtb3ZlcmZsb3dlZC1jb250ZW50Lmh0bWwgICAgICAgICAgIHwgICA4NSArKysrKysrKysr
KysKIC4uLmFibGUtYnV0LXdpdGhvdXQtZm9jdXNhYmxlLWNvbnRlbnQtZXhwZWN0ZWQudHh0IHwg
ICAzNSArKysrKwogLi4udi1zY3JvbGxhYmxlLWJ1dC13aXRob3V0LWZvY3VzYWJsZS1jb250ZW50
Lmh0bWwgfCAgIDgwICsrKysrKysrKysrCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgMzkgKysrKysrCiBXZWJDb3JlL3BhZ2UvRm9jdXNDb250
cm9sbGVyLmNwcCAgICAgICAgICAgICAgICAgICB8ICAxNDMgKysrKysrKysrKysrKy0tLS0tLQog
V2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcCAgICAgICAgICAgICAgICAgfCAgIDEz
ICsrCiBXZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uaCAgICAgICAgICAgICAgICAgICB8
ICAgIDUgKwogOSBmaWxlcyBjaGFuZ2VkLCAzOTEgaW5zZXJ0aW9ucygrKSwgNDUgZGVsZXRpb25z
KC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3BhdGlhbC1u
YXZpZ2F0aW9uL3NuYXYtY2xpcHBlZC1vdmVyZmxvd2VkLWNvbnRlbnQtZXhwZWN0ZWQudHh0CiBj
cmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0
aW9uL3NuYXYtY2xpcHBlZC1vdmVyZmxvd2VkLWNvbnRlbnQuaHRtbAogY3JlYXRlIG1vZGUgMTAw
NjQ0IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWRpdi1z
Y3JvbGxhYmxlLWJ1dC13aXRob3V0LWZvY3VzYWJsZS1jb250ZW50LWV4cGVjdGVkLnR4dAogY3Jl
YXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlv
bi9zbmF2LWRpdi1zY3JvbGxhYmxlLWJ1dC13aXRob3V0LWZvY3VzYWJsZS1jb250ZW50Lmh0bWwK
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggM2U2ZjkzZS4uMzk4NWQ3ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEwLTA2
LTE0ICBBbnRvbmlvIEdvbWVzICA8dG9uaWtpdG9vQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgIFNwYXRpYWwgTmF2aWdhdGlvbjogbWFr
ZSBpdCB3b3JrIHdpdGggZm9jdXNhYmxlIGVsZW1lbnRzIGluIG92ZXJmbG93IGNvbnRlbnQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2NDYzCisKKyAg
ICAgICAgKiBmYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1kaXYtc2Nyb2xsYWJs
ZS1idXQtd2l0aG91dC1mb2N1c2FibGUtY29udGVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWRpdi1zY3JvbGxhYmxl
LWJ1dC13aXRob3V0LWZvY3VzYWJsZS1jb250ZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWNsaXBwZWQtb3ZlcmZsb3ctY29udGVu
dC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3NwYXRpYWwtbmF2
aWdhdGlvbi9zbmF2LWNsaXBwZWQtb3ZlcmZsb3ctY29udGVudC5odG1sOiBBZGRlZC4KKwogMjAx
MC0wMy0yNCAgRHVtaXRydSBEYW5pbGl1YyAgPGR1bWlAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWNsaXBwZWQtb3ZlcmZsb3dlZC1jb250
ZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdh
dGlvbi9zbmF2LWNsaXBwZWQtb3ZlcmZsb3dlZC1jb250ZW50LWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjhiMDllCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtY2xpcHBlZC1v
dmVyZmxvd2VkLWNvbnRlbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjQgQEAKK1RoYXQgaXMg
aXMgYSBub3JtYWwgbGlua18xLgorCitUaGlzIGlzIGEgc2Nyb2xsYWJsZSBEaXYgY3JlYXRlZCB3
aXRoIHRoZSBDU1MgcHJvcGVydHkgb3ZlcmZsb3cuCisKK0l0IGhhcyBhIHZpc2libGUgbGlua18y
LgorCisKKworCisKKworCisuLi4gYW5kIGFuIG92ZXJmbG93ZWQgbGluayBsaWtlIGxpbmtfMy4K
KworQW5kIHRoaXMgaXMgYW5vdGhlciBub3JtYWwgbGlua180LgorCitQQVNTIGRvY3VtZW50LmFj
dGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCJpZCIpIGlzICIxIgorUEFTUyBkb2N1bWVudC5hY3Rp
dmVFbGVtZW50LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAiMSIKK1BBU1MgZG9jdW1lbnQuYWN0aXZl
RWxlbWVudC5nZXRBdHRyaWJ1dGUoImlkIikgaXMgIjIiCitQQVNTIGRvY3VtZW50LmFjdGl2ZUVs
ZW1lbnQuZ2V0QXR0cmlidXRlKCJpZCIpIGlzICIzIgorUEFTUyBkb2N1bWVudC5hY3RpdmVFbGVt
ZW50LmdldEF0dHJpYnV0ZSgiaWQiKSBpcyAiMiIKK1BBU1MgZG9jdW1lbnQuYWN0aXZlRWxlbWVu
dC5nZXRBdHRyaWJ1dGUoImlkIikgaXMgIjEiCitQQVNTIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQu
Z2V0QXR0cmlidXRlKCJpZCIpIGlzICJzdGFydCIKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtY2xpcHBlZC1vdmVyZmxvd2VkLWNv
bnRlbnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9z
bmF2LWNsaXBwZWQtb3ZlcmZsb3dlZC1jb250ZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uMGEzMDFjYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL3NwYXRpYWwtbmF2aWdhdGlvbi9zbmF2LWNsaXBwZWQtb3ZlcmZsb3dlZC1jb250
ZW50Lmh0bWwKQEAgLTAsMCArMSw4NSBAQAorPGh0bWw+CisgIDwhLS0KKyAgICBUaGlzIHRlc3Qg
ZW5zdXJlcyB0aGUgY29ycmVjdG5lc3Mgb2YgYSBiYXNpYyBhc3BlY3Qgb2Ygc3BhdGlhbCBuYXZp
Z2F0aW9uIHRyYXZlcnNhbAorICAgIHJvdXRpbmVzOiBmb2N1c2FibGUgZWxlbWVudHMgaW4gc2Ny
b2xsYWJsZSBjb250YWluZXJzIChlLmcuIDxkaXY+KSBzaG91bGQgYmUKKyAgICBhY2Nlc3NpYmxl
LCBpbmNsdWRpbmcgb2Zmc2NyZWVuIGNvbnRlbnQuCisKKyAgICAqIFByZS1jb25kaXRpb25zOgor
ICAgIDEpIERSVCBzdXBwb3J0IGZvciBzcGF0aWFsIG5hdml2YXRpb24gZW5hYmxlL2Rpc2FibGUu
CisKKyAgICAqIE5hdmlnYXRpb24gc3RlcHM6CisgICAgMSkgTG9hZHMgdGhpcyBwYWdlLCBmb2N1
cyBnb2VzIHRvICJzdGFydCIgYXV0b21hdGljYWxseS4KKyAgICAyKSBNb3ZlIGZvY3VzIGRvd24g
dG8gdGhlIHZpc2libGUgZm9jdXNhYmxlIGVsZW1lbnQgaW4KKyAgICAgICBzY3JvbGxhYmxlIGRp
di4KKyAgICAzKSBUcmF2ZXJzZSB0aGUgcGFnZSB0aHJvdWdoIG90aGVyIGZvY3VzYWJsZSBlbGVt
ZW50cyBkb3duIHRoZSBwYWdlLgorICAgICAgIGFuZCB0aGVuIGJhY2sgdXAuCisKKyAgICAqIEV4
cGVjdGVkIHJlc3VsdHM6IEFsbCBmb2N1c2FibGUgZWxlbWVudCBpbiBzY3JvbGxhYmxlIGNvbnRl
bnQsIGluY2x1ZGluZworICAgIG9mZnNjcmVlbiBvbmVzLCBzaG91bGQgYmUgYWNjZXNzaWJsZSB2
aWEgc3BhdGlhbCBuYXZpZ2F0aW9uLiAtLT4KKyAgPGhlYWQ+CisgICAgPHN0eWxlIHR5cGU9InRl
eHQvY3NzIj4KKyAgICAgIGRpdi5zY3JvbGwgeworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAg
ICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgIG92ZXJmbG93OiBhdXRvOworICAgICAgICBib3Jk
ZXI6IDFweCBzb2xpZCAjNjY2OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2NjOworICAg
ICAgICBwYWRkaW5nOiA4cHg7CisgICAgICB9CisgICAgPC9zdHlsZT4KKworICAgIDxzY3JpcHQg
c3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvc3BhdGlhbC1uYXZpZ2F0aW9uLXV0aWxzLmpzIj48L3Njcmlw
dD4KKyAgICA8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiPgorCisgICAgdmFy
IHJlc3VsdE1hcCA9IFsKKyAgICAgIFsiRG93biIsICIxIl0sCisgICAgICBbIkRvd24iLCAiMSJd
LAorICAgICAgWyJEb3duIiwgIjIiXSwKKyAgICAgIFsiRG93biIsICIzIl0sCisgICAgICBbIlVw
IiwgIjIiXSwKKyAgICAgIFsiVXAiLCAiMSJdLAorICAgICAgWyJVcCIsICJzdGFydCJdLAorICAg
ICAgWyJET05FIiwgIkRPTkUiXQorICAgIF07CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7CisgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cisg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQodHJ1
ZSk7CisgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktp
dFRhYlRvTGlua3NQcmVmZXJlbmNlS2V5IiwgMSk7CisgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpCisgICAg
eworICAgICAgLy8gc3RhcnRpbmcgdGhlIHRlc3QgaXRzZWxmOiBnZXQgdG8gYSBrbm93biBwbGFj
ZS4KKyAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdGFydCIpLmZvY3VzKCk7CisKKyAg
ICAgIGluaXRUZXN0KHJlc3VsdE1hcCwgdGVzdENvbXBsZXRlZCk7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gdGVzdENvbXBsZXRlZCgpCisgICAgeworICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwor
ICAgIH0KKworICAgIHdpbmRvdy5vbmxvYWQgPSBydW5UZXN0OworCisgICAgPC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorICA8L2hlYWQ+CisKKyAgPGJvZHkgaWQ9InNvbWUtY29udGVudCIgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGh0bWwiPgorICAgIDxwPlRoYXQgaXMgaXMgYSBub3JtYWwgPGEgaWQ9
InN0YXJ0IiBocmVmPSJhIj5saW5rXzE8L2E+LjwvcD4KKyAgICA8ZGl2IGNsYXNzPSJzY3JvbGwi
PgorICAgICAgPHA+VGhpcyBpcyBhIHNjcm9sbGFibGUgRGl2IGNyZWF0ZWQgd2l0aCB0aGUgQ1NT
IHByb3BlcnR5IG92ZXJmbG93LjwvcD4KKyAgICAgIDxwPkl0IGhhcyBhIHZpc2libGUgPGEgaWQ9
IjEiIGhyZWY9ImEiPmxpbmtfMjwvYT4uPC9wPgorICAgICAgPGJyPjxicj48YnI+PGJyPjxicj48
YnI+CisgICAgICA8cD4uLi4gYW5kIGFuIG92ZXJmbG93ZWQgbGluayBsaWtlIDxhIGlkPSIyIiBo
cmVmPSJhIj5saW5rXzM8L2E+LjwvcD4KKyAgICA8L2Rpdj4KKyAgICA8cD5BbmQgdGhpcyBpcyBh
bm90aGVyIG5vcm1hbCA8YSBpZD0iMyIgaHJlZj0iYSI+bGlua180PC9hPi48L3A+CisgICAgPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+CisgIDwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtZGl2LXNjcm9s
bGFibGUtYnV0LXdpdGhvdXQtZm9jdXNhYmxlLWNvbnRlbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtZGl2LXNjcm9sbGFibGUt
YnV0LXdpdGhvdXQtZm9jdXNhYmxlLWNvbnRlbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1MWI5NDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1kaXYtc2Nyb2xsYWJsZS1i
dXQtd2l0aG91dC1mb2N1c2FibGUtY29udGVudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzNSBA
QAorYQorVGhpcyBpcyBhIHNjcm9sbGFibGUgRGl2IGNyZWF0ZWQgd2l0aCB0aGUgQ1NTIHByb3Bl
cnR5IG92ZXJmbG93LgorCitJdCBoYXMgbm8ga2V5Ym9hcmQgZm9jdXNhYmxlIGVsZW1lbnRzIC4u
Li4KKworCisKKworCisKKworCisKKworCisKKworLi4uIGFuZCBzY3JvbGxiYXJzIQorCitUaGlz
IGlzIGFub3RoZXIgc2Nyb2xsYWJsZSBkaXYgY3JlYXRlZCB3aXRoIHRoZSBDU1MgcHJvcGVydHkg
b3ZlcmZsb3cuCisKK0l0IGhhcyBhbHNvIG5vIGtleWJvYXJkIGZvY3VzYWJsZSBlbGVtZW50cyAu
Li4uCisKKworCisKKworCisKKy4uLiBhcyB3ZWxsIGFzIHNjcm9sbGJhcnMhCisKK2UKK1BBU1Mg
ZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoImlkIikgaXMgImVuZCIKK1BBU1Mg
ZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoImlkIikgaXMgInN0YXJ0IgorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25h
di1kaXYtc2Nyb2xsYWJsZS1idXQtd2l0aG91dC1mb2N1c2FibGUtY29udGVudC5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtZGl2LXNjcm9sbGFi
bGUtYnV0LXdpdGhvdXQtZm9jdXNhYmxlLWNvbnRlbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5iYTcwMmY3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvc3BhdGlhbC1uYXZpZ2F0aW9uL3NuYXYtZGl2LXNjcm9sbGFibGUtYnV0LXdp
dGhvdXQtZm9jdXNhYmxlLWNvbnRlbnQuaHRtbApAQCAtMCwwICsxLDgwIEBACis8aHRtbD4KKyAg
PCEtLQorICAgIFRoaXMgdGVzdCBlbnN1cmVzIHRoZSBjb3JyZWN0bmVzcyBvZiBhIGJhc2ljIGFz
cGVjdCBvZiBzcGF0aWFsIG5hdmlnYXRpb24gdHJhdmVyc2FsCisgICAgcm91dGluZXM6IHNjcm9s
bGFibGUgYmxvY2sgaHRtbCBlbGVtZW50cyB3aXRob3V0IGFueSBmb2N1c2FibGUgY29udGVudCBz
aG91bGQgYmUgaWdub3JlZC4KKworICAgICogUHJlLWNvbmRpdGlvbnM6CisgICAgMSkgRFJUIHN1
cHBvcnQgZm9yIHNwYXRpYWwgbmF2aWdhdGlvbiBlbmFibGUvZGlzYWJsZS4KKworICAgICogTmF2
aWdhdGlvbiBzdGVwczoKKyAgICAxKSBMb2FkcyB0aGlzIHBhZ2UsIGZvY3VzIGdvZXMgdG8gInN0
YXJ0IiBhdXRvbWF0aWNhbGx5LgorICAgIDIpIEZvY3VzIG1vdmVzIGZyb20gInN0YXJ0IiB0byAi
ZW5kIiBieXBhc3NpbmcgdGhlIHR3byBkaXYncworICAgICAgIGluIGJldHdlZW4gdGhlbSwgb25j
ZSBib3RoIGhhdmUgbm8gZm9jdXNhYmxlIGVsZW1lbnRzIGluc2lkZS4KKyAgLS0+CisgIDxoZWFk
PgorICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisgICAgICBkaXYuc2Nyb2xsIHsKKyAgICAg
ICAgaGVpZ2h0OiAyMDBweDsKKyAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICBvdmVyZmxv
dzogYXV0bzsKKyAgICAgICAgYm9yZGVyOiAxcHggc29saWQgIzY2NjsKKyAgICAgICAgYmFja2dy
b3VuZC1jb2xvcjogI2NjYzsKKyAgICAgICAgcGFkZGluZzogOHB4OworICAgICAgfQorICAgIDwv
c3R5bGU+CisKKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NwYXRpYWwtbmF2aWdh
dGlvbi11dGlscy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9q
YXZhc2NyaXB0Ij4KKworICAgIHZhciByZXN1bHRNYXAgPSBbCisgICAgICBbIkRvd24iLCAiZW5k
Il0sCisgICAgICBbIlVwIiAgLCAic3RhcnQiXSwKKyAgICAgIFsiRE9ORSIsICJET05FIl0KKyAg
ICBdOworCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuc2V0U3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKHRydWUpOworICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRUYWJUb0xpbmtzUHJlZmVyZW5jZUtl
eSIsIDEpOworICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAg
IH0KKworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQorICAgIHsKKyAgICAgIC8vIHN0YXJ0aW5nIHRo
ZSB0ZXN0IGl0c2VsZjogZ2V0IHRvIGEga25vd24gcGxhY2UuCisgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgic3RhcnQiKS5mb2N1cygpOworCisgICAgICBpbml0VGVzdChyZXN1bHRNYXAs
IHRlc3RDb21wbGV0ZWQpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3RDb21wbGV0ZWQoKQor
ICAgIHsKKyAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB9CisKKyAgICB3aW5kb3cub25s
b2FkID0gcnVuVGVzdDsKKyAgICA8L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisgIDwvaGVhZD4KKyAgPGJvZHkgaWQ9
InNvbWUtY29udGVudCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorICAg
IDxkaXY+PGEgaWQ9InN0YXJ0IiBocmVmPSJhIj5hPC9hPjwvZGl2PgorICAgIDxkaXYgY2xhc3M9
InNjcm9sbCI+CisgICAgICA8cD5UaGlzIGlzIGEgc2Nyb2xsYWJsZSBEaXYgY3JlYXRlZCB3aXRo
IHRoZSBDU1MgcHJvcGVydHkgb3ZlcmZsb3cuPC9wPgorICAgICAgPHA+SXQgaGFzIG5vIGtleWJv
YXJkIGZvY3VzYWJsZSBlbGVtZW50cyAuLi4uPC9wPgorICAgICAgPGJyPjxicj48YnI+PGJyPjxi
cj48YnI+CisgICAgICA8YnI+PGJyPjxicj48YnI+PGJyPjxicj4KKyAgICAgIDxwPi4uLiBhbmQg
c2Nyb2xsYmFycyE8L3A+CisgICAgPC9kaXY+CisKKyAgICA8ZGl2IGNsYXNzPSJzY3JvbGwiPgor
ICAgICAgPHA+VGhpcyBpcyBhbm90aGVyIHNjcm9sbGFibGUgZGl2IGNyZWF0ZWQgd2l0aCB0aGUg
Q1NTIHByb3BlcnR5IG92ZXJmbG93LjwvcD4KKyAgICAgIDxwPkl0IGhhcyBhbHNvIG5vIGtleWJv
YXJkIGZvY3VzYWJsZSBlbGVtZW50cyAuLi4uPC9wPgorICAgICAgPGJyPjxicj48YnI+PGJyPjxi
cj48YnI+CisgICAgICA8cD4uLi4gYXMgd2VsbCBhcyBzY3JvbGxiYXJzITwvcD4KKyAgICA8L2Rp
dj4KKyAgICA8ZGl2PjxhIGlkPSJlbmQiIGhyZWY9ImEiPmU8L2E+PC9kaXY+CisgICAgPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+CisgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmE3ZGEzMC4uZTUwMjRlYyAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw0MiBAQAorMjAxMC0wNi0xNCAgQW50b25pbyBHb21lcyAgPHRvbmlraXRvb0B3ZWJr
aXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlciBhbmQgS2VubmV0aCBD
aHJpc3RpYW5zZW4uCisKKyAgICAgICAgU3BhdGlhbCBOYXZpZ2F0aW9uOiBtYWtlIGl0IHdvcmsg
d2l0aCBmb2N1c2FibGUgZWxlbWVudHMgaW4gb3ZlcmZsb3cgY29udGVudAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY0NjMKKworICAgICAgICBUaGlz
IHBhdGNoIGFkZHJlc3NlcyB0aGUgcHJvYmxlbSB3aXRoIFNwYXRpYWwgTmF2aWdhdGlvbi4gSXQg
Y3VycmVudGx5IGRvZXMgbm90CisgICAgICAgIHByb3Blcmx5IHRyYXZlcnNlIHNjcm9sbGFibGUg
Y29udGVudHMsIGluY2x1ZGluZyBzY3JvbGxhYmxlIGRpdidzLiBGb3IgdGhpcyB0byB3b3JrLAor
ICAgICAgICBhIG5ldyBjbGFzcyBtZW1iZXIgY2FsbGVkIHNjcm9sbGFibGVFbmNsb3NpbmdCb3gg
d2FzIGludHJvZHVjZWQgdG8gRm9jdXNDYW5kaWRhdGUgY2xhc3Mgd2hpY2gKKyAgICAgICAga2Vl
cHMgdHJhY2sgb2YgdGhlIGN1cnJlbnQgc2Nyb2xsYWJsZSBib3ggTm9kZSB3cmFwcGluZyBhIEZv
Y3VzQ2FuZGlkYXRlLgorCisgICAgICAgIFRvIG1ha2UgdXNlIG9mIGVuY2xvc2luZ1Njcm9sbGFi
bGVCb3ggb2YgRm9jdXNDYW5kaWRhdGUsIHRoZSBET00gdHJhdmVyc2FsIHJvdXRpbmUKKyAgICAg
ICAgKEZvY3VzQ29udHJvbGxlcjo6ZmluZE5leHRGb2N1c2FibGVJbkRpcmVjdGlvbikgd2FzIGNo
YW5nZWQgYXMgZm9sbG93czogd2hlbiBpdAorICAgICAgICBlbmNvdW50ZXJzIGEgc2Nyb2xsYWJs
ZSBOb2RlLCBlYWNoIGZvY3VzYWJsZSBub2RlIHdoaWNoIGlzICdpbm5lcicga2VlcHMgdHJhY2sg
b2YKKyAgICAgICAgdGhlIGNvbnRhaW5lciByZWZlcmVuY2UuIEJ5IHRoZSB0aW1lIGEgc2libGlu
ZyBvZiB0aGUgc2Nyb2xsYWJsZSBOb2RlIGlzIGVuY291bnRlcmVkLAorICAgICAgICB0aGVyZSBp
cyBubyBuZWVkIHRvIHRyYWNrIHRoaXMgcmVmZXJlbmNlIGFueSBtb3JlIGFuZCB0aGUgdHJhdmVy
c2FsIGFsZ29yaXRobSBjb250aW51ZXMKKyAgICAgICAgbm9ybWFsbHkuCisKKyAgICAgICAgVGhl
IGNvbW1vbiBjYXNlIGlzIG9idmlvdXNseSB0aGF0IHRoZXJlIGlzIG5vIHNjcm9sbGFibGUgY29u
dGFpbmVyIHdyYXBwaW5nIGl0LgorCisgICAgICAgIHVwZGF0ZUZvY3VzQ2FuZGlkaXRlSWZDbG9z
ZXIgbG9naWMgd2FzIGFsc28gYWRhcHRlZCB0byBmaXQgdGhlIG5lZWQgb2YgdGhlCisgICAgICAg
IG5ld2x5IGludHJvZHVjZWQgZW5jbG9zaW5nU2Nyb2xsYWJsZUJveCBjbGFzcyBtZW1iZXIsIGdl
dHRpbmcgc2ltcGxlciBhbmQgbW9yZQorICAgICAgICBlYXNpbHkgbWFpbnRhaW5hYmxlLgorCisg
ICAgICAgIFRlc3RzOiBmYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1kaXYtc2Ny
b2xsYWJsZS1idXQtd2l0aG91dC1mb2N1c2FibGUtY29udGVudC5odG1sCisgICAgICAgICAgICAg
ICBmYXN0L2V2ZW50cy9zcGF0aWFsLW5hdmlnYXRpb24vc25hdi1jbGlwcGVkLW92ZXJmbG93LWNv
bnRlbnQuaHRtbAorCisgICAgICAgICogcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6dXBkYXRlRm9jdXNDYW5kaWRhdGVJblNhbWVDb250YWluZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6dXBkYXRlRm9jdXNDYW5kaWRhdGVJZkNsb3Nlcik6CisgICAgICAgIChXZWJD
b3JlOjpGb2N1c0NvbnRyb2xsZXI6OmZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjpkZWVwRmluZEZvY3VzYWJsZU5vZGVJbkRp
cmVjdGlvbik6CisgICAgICAgICogcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjppc1Njcm9sbGFibGVDb250YWluZXJOb2RlKToKKyAgICAgICAgKiBwYWdlL1Nw
YXRpYWxOYXZpZ2F0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NhbmRpZGF0ZTo6Rm9j
dXNDYW5kaWRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDYW5kaWRhdGU6OmlzSW5TY3Jv
bGxhYmxlQ29udGFpbmVyKToKKwogMjAxMC0wNi0xNSAgSm9jZWx5biBUdXJjb3R0ZSAgPGpvY2Vs
eW4udHVyY290dGVAbm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNt
YW5uLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAgYi9XZWJD
b3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAppbmRleCA2YzJhOTU2Li45YTYxODgyIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL3Bh
Z2UvRm9jdXNDb250cm9sbGVyLmNwcApAQCAtMzQxLDUzICszNDEsODAgQEAgYm9vbCBGb2N1c0Nv
bnRyb2xsZXI6OmFkdmFuY2VGb2N1c0RpcmVjdGlvbmFsbHkoRm9jdXNEaXJlY3Rpb24gZGlyZWN0
aW9uLCBLZXlib2EKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotLy8gRklYTUU6IE1ha2UgdGhpcyBt
ZXRob2QgbW9yZSBtb2R1bGFyLCBhbmQgc2ltcGxlciB0byB1bmRlcnN0YW5kIGFuZCBtYWludGFp
bi4KLXN0YXRpYyB2b2lkIHVwZGF0ZUZvY3VzQ2FuZGlkYXRlSWZDbG9zZXIoTm9kZSogZm9jdXNl
ZE5vZGUsIGNvbnN0IEZvY3VzQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIEZvY3VzQ2FuZGlkYXRlJiBj
bG9zZXN0KQorc3RhdGljIHZvaWQgdXBkYXRlRm9jdXNDYW5kaWRhdGVJblNhbWVDb250YWluZXIo
Y29uc3QgRm9jdXNDYW5kaWRhdGUmIGNhbmRpZGF0ZSwgRm9jdXNDYW5kaWRhdGUmIGNsb3Nlc3Qp
CiB7Ci0gICAgYm9vbCBzYW1lRG9jdW1lbnQgPSBjYW5kaWRhdGUuZG9jdW1lbnQoKSA9PSBjbG9z
ZXN0LmRvY3VtZW50KCk7Ci0gICAgaWYgKHNhbWVEb2N1bWVudCkgewotICAgICAgICBpZiAoY2xv
c2VzdC5hbGlnbm1lbnQgPiBjYW5kaWRhdGUuYWxpZ25tZW50Ci0gICAgICAgICAgICB8fCAoY2xv
c2VzdC5wYXJlbnRBbGlnbm1lbnQgJiYgY2FuZGlkYXRlLmFsaWdubWVudCA+IGNsb3Nlc3QucGFy
ZW50QWxpZ25tZW50KSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9IGVsc2UgaWYgKGNsb3Nl
c3QuYWxpZ25tZW50ID4gY2FuZGlkYXRlLmFsaWdubWVudAotICAgICAgICAgICAgICAgJiYgKGNs
b3Nlc3QucGFyZW50QWxpZ25tZW50ICYmIGNhbmRpZGF0ZS5hbGlnbm1lbnQgPiBjbG9zZXN0LnBh
cmVudEFsaWdubWVudCkpCisgICAgaWYgKGNsb3Nlc3QuaXNOdWxsKCkpIHsKKyAgICAgICAgY2xv
c2VzdCA9IGNhbmRpZGF0ZTsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIGlmIChjYW5k
aWRhdGUuYWxpZ25tZW50ICE9IE5vbmUKLSAgICAgICAgfHwgKGNsb3Nlc3QucGFyZW50QWxpZ25t
ZW50ID49IGNhbmRpZGF0ZS5hbGlnbm1lbnQKLSAgICAgICAgJiYgY2xvc2VzdC5kb2N1bWVudCgp
ID09IGNhbmRpZGF0ZS5kb2N1bWVudCgpKSkgeworICAgIGlmIChjYW5kaWRhdGUuYWxpZ25tZW50
ID09IGNsb3Nlc3QuYWxpZ25tZW50KSB7CisgICAgICAgIGlmIChjYW5kaWRhdGUuZGlzdGFuY2Ug
PCBjbG9zZXN0LmRpc3RhbmNlKQorICAgICAgICAgICAgY2xvc2VzdCA9IGNhbmRpZGF0ZTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KIAotICAgICAgICAvLyBJZiB3ZSBhcmUgbm93IGluIGFuIGhp
Z2hlciBwcmVjZWRlbnQgY2FzZSwgbGV0cyByZXNldCB0aGUgY3VycmVudCBjbG9zZXN0J3MKLSAg
ICAgICAgLy8gZGlzdGFuY2Ugc28gd2UgZm9yY2UgaXQgdG8gYmUgYmlnZ2VyIHRoYW4gYW55IHJl
c3VsdCB3ZSB3aWxsIGdldCBmcm9tCi0gICAgICAgIC8vIHNwYXRpYWxEaXN0YW5jZSgpLgotICAg
ICAgICBpZiAoY2xvc2VzdC5hbGlnbm1lbnQgPCBjYW5kaWRhdGUuYWxpZ25tZW50Ci0gICAgICAg
ICAgICAmJiBjbG9zZXN0LnBhcmVudEFsaWdubWVudCA8IGNhbmRpZGF0ZS5hbGlnbm1lbnQpCi0g
ICAgICAgICAgICBjbG9zZXN0LmRpc3RhbmNlID0gbWF4RGlzdGFuY2UoKTsKKyAgICBpZiAoY2Fu
ZGlkYXRlLmFsaWdubWVudCA+IGNsb3Nlc3QuYWxpZ25tZW50KQorICAgICAgICBjbG9zZXN0ID0g
Y2FuZGlkYXRlOworfQogCi0gICAgICAgIGNsb3Nlc3QuYWxpZ25tZW50ID0gY2FuZGlkYXRlLmFs
aWdubWVudDsKK3N0YXRpYyB2b2lkIHVwZGF0ZUZvY3VzQ2FuZGlkYXRlSWZDbG9zZXIoTm9kZSog
Zm9jdXNlZE5vZGUsIGNvbnN0IEZvY3VzQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIEZvY3VzQ2FuZGlk
YXRlJiBjbG9zZXN0KQoreworICAgIC8vIEZpcnN0LCBjaGVjayB0aGUgY29tbW9uIGNhc2U6IG5l
aXRoZXIgY2FuZGlkYXRlIG5vciBjbG9zZXN0IGFyZQorICAgIC8vIGluc2lkZSBzY3JvbGxhYmxl
IGNvbnRlbnQsIHRoZW4gbm8gbmVlZCB0byBjYXJlIGFib3V0IGVuY2xvc2luZ1Njcm9sbGFibGVC
b3gKKyAgICAvLyBoZXVyaXN0aWNzIG9yIHBhcmVudHtEaXN0YW5jZSxBbGlnbm1lbnR9LCBidXQg
b25seSBkaXN0YW5jZSBhbmQgYWxpZ25tZW50LgorICAgIGlmICghY2FuZGlkYXRlLmluU2Nyb2xs
YWJsZUNvbnRhaW5lcigpICYmICFjbG9zZXN0LmluU2Nyb2xsYWJsZUNvbnRhaW5lcigpKSB7Cisg
ICAgICAgIHVwZGF0ZUZvY3VzQ2FuZGlkYXRlSW5TYW1lQ29udGFpbmVyKGNhbmRpZGF0ZSwgY2xv
c2VzdCk7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAvLyBCYWlsIG91dCBpZiBjYW5k
aWRhdGUncyBkaXN0YW5jZSBpcyBsYXJnZXIgdGhhbiB0aGF0IG9mIHRoZSBjbG9zZXN0IGNhbmRp
ZGF0ZS4KLSAgICBpZiAoY2FuZGlkYXRlLmRpc3RhbmNlID49IGNsb3Nlc3QuZGlzdGFuY2UpCisg
ICAgYm9vbCBzYW1lQ29udGFpbmVyID0gY2FuZGlkYXRlLmRvY3VtZW50KCkgPT0gY2xvc2VzdC5k
b2N1bWVudCgpICYmIGNhbmRpZGF0ZS5lbmNsb3NpbmdTY3JvbGxhYmxlQm94ID09IGNsb3Nlc3Qu
ZW5jbG9zaW5nU2Nyb2xsYWJsZUJveDsKKworICAgIC8vIFNlY29uZCwgaWYgY2FuZGlkYXRlIGFu
ZCBjbG9zZXN0IGFyZSBpbiB0aGUgc2FtZSAiY29udGFpbmVyIiAoaS5lLiB7aX1mcmFtZSBvciBh
bnkKKyAgICAvLyBzY3JvbGxhYmxlIGJsb2NrIGVsZW1lbnQpLCB3ZSBjYW4gaGFuZGxlIHRoZW0g
YXMgY29tbW9uIGNhc2UuCisgICAgaWYgKHNhbWVDb250YWluZXIpIHsKKyAgICAgICAgdXBkYXRl
Rm9jdXNDYW5kaWRhdGVJblNhbWVDb250YWluZXIoY2FuZGlkYXRlLCBjbG9zZXN0KTsKICAgICAg
ICAgcmV0dXJuOworICAgIH0KIAotICAgIGlmIChjbG9zZXN0LmlzTnVsbCgpKSB7CisgICAgLy8g
TGFzdCwgd2UgYXJlIGNvbnNpZGVyaW5nIG1vdmluZyB0byBhIGNhbmRpZGF0ZSBsb2NhdGVkIGlu
IGEgZGlmZmVyZW50IGVuY2xvc2luZworICAgIC8vIHNjcm9sbGFibGUgYm94IHRoYW4gY2xvc2Vz
dC4KKyAgICBib29sIGlzSW5Jbm5lckRvY3VtZW50ID0gIWlzSW5Sb290RG9jdW1lbnQoZm9jdXNl
ZE5vZGUpOworCisgICAgYm9vbCBzYW1lQ29udGFpbmVyQXNDYW5kaWRhdGUgPSBpc0luSW5uZXJE
b2N1bWVudCA/IGZvY3VzZWROb2RlLT5kb2N1bWVudCgpID09IGNhbmRpZGF0ZS5kb2N1bWVudCgp
IDoKKyAgICAgICAgZm9jdXNlZE5vZGUtPmlzRGVzY2VuZGFudE9mKGNhbmRpZGF0ZS5lbmNsb3Np
bmdTY3JvbGxhYmxlQm94KTsKKworICAgIGJvb2wgc2FtZUNvbnRhaW5lckFzQ2xvc2VzdCA9IGlz
SW5Jbm5lckRvY3VtZW50ID8gZm9jdXNlZE5vZGUtPmRvY3VtZW50KCkgPT0gY2xvc2VzdC5kb2N1
bWVudCgpIDoKKyAgICAgICAgZm9jdXNlZE5vZGUtPmlzRGVzY2VuZGFudE9mKGNsb3Nlc3QuZW5j
bG9zaW5nU2Nyb2xsYWJsZUJveCk7CisKKyAgICAvLyBzYW1lQ29udGFpbmVyQXNDYW5kaWRhdGUg
YW5kIHNhbWVDb250YWluZXJBc0Nsb3Nlc3QgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4KKyAgICBB
U1NFUlQoIShzYW1lQ29udGFpbmVyQXNDYW5kaWRhdGUgJiYgc2FtZUNvbnRhaW5lckFzQ2xvc2Vz
dCkpOworCisgICAgaWYgKHNhbWVDb250YWluZXJBc0NhbmRpZGF0ZSkgewogICAgICAgICBjbG9z
ZXN0ID0gY2FuZGlkYXRlOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gSWYgdGhl
IGZvY3VzZWQgbm9kZSBhbmQgdGhlIGNhbmRhZGF0ZSBhcmUgaW4gdGhlIHNhbWUgZG9jdW1lbnQg
YW5kIGN1cnJlbnQKLSAgICAvLyBjbG9zZXN0IGNhbmRpZGF0ZSBpcyBub3QgaW4gYW4ge2l9ZnJh
bWUgdGhhdCBpcyBwcmVmZXJhYmxlIHRvIGdldCBmb2N1c2VkIC4uLgotICAgIGlmIChmb2N1c2Vk
Tm9kZS0+ZG9jdW1lbnQoKSA9PSBjYW5kaWRhdGUuZG9jdW1lbnQoKQotICAgICAgICAmJiBjYW5k
aWRhdGUuZGlzdGFuY2UgPCBjbG9zZXN0LnBhcmVudERpc3RhbmNlKQotICAgICAgICBjbG9zZXN0
ID0gY2FuZGlkYXRlOwotICAgIGVsc2UgaWYgKGZvY3VzZWROb2RlLT5kb2N1bWVudCgpICE9IGNh
bmRpZGF0ZS5kb2N1bWVudCgpKSB7Ci0gICAgICAgIC8vIElmIHRoZSBmb2N1c2VkTm9kZSBpcyBp
biBhbiBpbm5lciBkb2N1bWVudCBhbmQgY2FuZGlkYXRlIGlzIGluIGEKLSAgICAgICAgLy8gZGlm
ZmVyZW50IGRvY3VtZW50LCB3ZSBvbmx5IGNvbnNpZGVyIHRvIGNoYW5nZSBmb2N1cyBpZiB0aGVy
ZSBpcyBub3QKLSAgICAgICAgLy8gYW5vdGhlciBhbHJlYWR5IGdvb2QgZm9jdXNhYmxlIGNhbmRp
ZGF0ZSBpbiB0aGUgc2FtZSBkb2N1bWVudCBhcyBmb2N1c2VkTm9kZS4KLSAgICAgICAgaWYgKCEo
KGlzSW5Sb290RG9jdW1lbnQoY2FuZGlkYXRlLm5vZGUpICYmICFpc0luUm9vdERvY3VtZW50KGZv
Y3VzZWROb2RlKSkKLSAgICAgICAgICAgICYmIGZvY3VzZWROb2RlLT5kb2N1bWVudCgpID09IGNs
b3Nlc3QuZG9jdW1lbnQoKSkpCisgICAgaWYgKHNhbWVDb250YWluZXJBc0Nsb3Nlc3QpIHsKKyAg
ICAgICAgLy8gTm90aGluZyB0byBiZSBkb25lLgorICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgLy8gTk9URTogIXNhbWVDb250YWluZXJBc0NhbmRpZGF0ZSAmJiAhc2FtZUNvbnRhaW5lckFz
Q2xvc2VzdAorICAgIC8vIElmIGRpc3RhbmNlIGlzIHNob3J0ZXIsIGFuZCB3ZSBhcmUgdGFsa2lu
ZyBhYm91dCBzY3JvbGxhYmxlIGNvbnRhaW5lciwKKyAgICAvLyBsZXRzIGNvbXBhcmUgcGFyZW50
IGRpc3RhbmNlIGFuZCBhbGlnbm1lbnQgYmVmb3JlIGFueXRoaW5nLgorICAgIGlmIChjYW5kaWRh
dGUuZGlzdGFuY2UgPCBjbG9zZXN0LmRpc3RhbmNlKSB7CisgICAgICAgIGlmIChjYW5kaWRhdGUu
YWxpZ25tZW50ID49IGNsb3Nlc3QucGFyZW50QWxpZ25tZW50CisgICAgICAgICB8fCBjYW5kaWRh
dGUucGFyZW50QWxpZ25tZW50ID09IGNsb3Nlc3QucGFyZW50QWxpZ25tZW50KSB7CisgICAgICAg
ICAgICBjbG9zZXN0ID0gY2FuZGlkYXRlOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICB9IGVsc2UgaWYgKGNhbmRpZGF0ZS5wYXJlbnREaXN0YW5jZSA8IGNsb3Nlc3QuZGlz
dGFuY2UpIHsKKyAgICAgICAgaWYgKGNhbmRpZGF0ZS5wYXJlbnRBbGlnbm1lbnQgPj0gY2xvc2Vz
dC5hbGlnbm1lbnQpIHsKICAgICAgICAgICAgIGNsb3Nlc3QgPSBjYW5kaWRhdGU7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KICAgICB9CiB9CiAKQEAgLTM5OSwxOCArNDI2LDQ1IEBA
IHZvaWQgRm9jdXNDb250cm9sbGVyOjpmaW5kRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uKE5vZGUq
IG91dGVyLCBOb2RlKiBmb2N1c2VkTm9kCiAgICAgQVNTRVJUKG91dGVyKTsKICAgICBBU1NFUlQo
Y2FuZGlkYXRlUGFyZW50LmlzTnVsbCgpCiAgICAgICAgIHx8IGNhbmRpZGF0ZVBhcmVudC5ub2Rl
LT5oYXNUYWdOYW1lKGZyYW1lVGFnKQotICAgICAgICB8fCBjYW5kaWRhdGVQYXJlbnQubm9kZS0+
aGFzVGFnTmFtZShpZnJhbWVUYWcpKTsKKyAgICAgICAgfHwgY2FuZGlkYXRlUGFyZW50Lm5vZGUt
Pmhhc1RhZ05hbWUoaWZyYW1lVGFnKQorICAgICAgICB8fCBpc1Njcm9sbGFibGVDb250YWluZXJO
b2RlKGNhbmRpZGF0ZVBhcmVudC5ub2RlKSk7CiAKICAgICAvLyBXYWxrIGFsbCB0aGUgY2hpbGQg
bm9kZXMgYW5kIHVwZGF0ZSBjbG9zZXN0Rm9jdXNDYW5kaWRhdGUgaWYgd2UgZmluZCBhIG5lYXJl
ciBub2RlLgogICAgIE5vZGUqIGNhbmRpZGF0ZSA9IG91dGVyOwogICAgIHdoaWxlIChjYW5kaWRh
dGUpIHsKKwogICAgICAgICAvLyBJbm5lciBkb2N1bWVudHMgY2FzZS4KKyAgICAgICAgaWYgKGNh
bmRpZGF0ZS0+aXNGcmFtZU93bmVyRWxlbWVudCgpKSB7CisgICAgICAgICAgICBkZWVwRmluZEZv
Y3VzYWJsZU5vZGVJbkRpcmVjdGlvbihjYW5kaWRhdGUsIGZvY3VzZWROb2RlLCBkaXJlY3Rpb24s
IGV2ZW50LCBjbG9zZXN0Rm9jdXNDYW5kaWRhdGUpOwogCi0gICAgICAgIGlmIChjYW5kaWRhdGUt
PmlzRnJhbWVPd25lckVsZW1lbnQoKSkKKyAgICAgICAgLy8gU2Nyb2xsYWJsZSBibG9jayBlbGVt
ZW50cyAoZS5nLiA8ZGl2PiwgZXRjKSBjYXNlLgorICAgICAgICB9IGVsc2UgaWYgKGlzU2Nyb2xs
YWJsZUNvbnRhaW5lck5vZGUoY2FuZGlkYXRlKSkgewogICAgICAgICAgICAgZGVlcEZpbmRGb2N1
c2FibGVOb2RlSW5EaXJlY3Rpb24oY2FuZGlkYXRlLCBmb2N1c2VkTm9kZSwgZGlyZWN0aW9uLCBl
dmVudCwgY2xvc2VzdEZvY3VzQ2FuZGlkYXRlKTsKLSAgICAgICAgZWxzZSBpZiAoY2FuZGlkYXRl
ICE9IGZvY3VzZWROb2RlICYmIGNhbmRpZGF0ZS0+aXNLZXlib2FyZEZvY3VzYWJsZShldmVudCkp
IHsKKyAgICAgICAgICAgIGNhbmRpZGF0ZSA9IGNhbmRpZGF0ZS0+dHJhdmVyc2VOZXh0U2libGlu
ZygpOworICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgfSBlbHNlIGlmIChjYW5kaWRh
dGUgIT0gZm9jdXNlZE5vZGUgJiYgY2FuZGlkYXRlLT5pc0tleWJvYXJkRm9jdXNhYmxlKGV2ZW50
KSkgewogICAgICAgICAgICAgRm9jdXNDYW5kaWRhdGUgY3VycmVudEZvY3VzQ2FuZGlkYXRlKGNh
bmRpZGF0ZSk7CiAKKyAgICAgICAgICAgIC8vIFRoZXJlIGFyZSB0d28gd2F5cyB0byBpZGVudGlm
eSB3ZSBhcmUgaW4gYSByZWN1cnNpdmUgY2FsbCBmcm9tIGRlZXBGaW5kRm9jdXNhYmxlTm9kZUlu
RGlyZWN0aW9uCisgICAgICAgICAgICAvLyAoaS5lLiBwcm9jZXNzaW5nIGFuIGVsZW1lbnQgaW4g
YW4gaWZyYW1lLCBmcmFtZSBvciBhIHNjcm9sbGFibGUgYmxvY2sgZWxlbWVudCk6CisKKyAgICAg
ICAgICAgIC8vIDEpIElmIGNhbmRpZGF0ZVBhcmVudCBpcyBub3QgbnVsbCwgYW5kIGl0IGhvbGRz
IHRoZSBkaXN0YW5jZSBhbmQgYWxpZ25tZW50IGRhdGEgb2YgdGhlCisgICAgICAgICAgICAvLyBw
YXJlbnQgY29udGFpbmVyIGVsZW1lbnQgaXRzZWxmOworICAgICAgICAgICAgLy8gMikgUGFyZW50
IG9mIG91dGVyIGlzIDxmcmFtZT4gb3IgPGlmcmFtZT47CisgICAgICAgICAgICAvLyAzKSBQYXJl
bnQgaXMgYW55IG90aGVyIHNjcm9sbGFibGUgYmxvY2sgZWxlbWVudC4KKyAgICAgICAgICAgIGlm
ICghY2FuZGlkYXRlUGFyZW50LmlzTnVsbCgpKSB7CisgICAgICAgICAgICAgICAgY3VycmVudEZv
Y3VzQ2FuZGlkYXRlLnBhcmVudEFsaWdubWVudCA9IGNhbmRpZGF0ZVBhcmVudC5hbGlnbm1lbnQ7
CisgICAgICAgICAgICAgICAgY3VycmVudEZvY3VzQ2FuZGlkYXRlLnBhcmVudERpc3RhbmNlID0g
Y2FuZGlkYXRlUGFyZW50LmRpc3RhbmNlOworICAgICAgICAgICAgICAgIGN1cnJlbnRGb2N1c0Nh
bmRpZGF0ZS5lbmNsb3NpbmdTY3JvbGxhYmxlQm94ID0gY2FuZGlkYXRlUGFyZW50Lm5vZGU7CisK
KyAgICAgICAgICAgIH0gZWxzZSBpZiAoIWlzSW5Sb290RG9jdW1lbnQob3V0ZXIpKSB7CisgICAg
ICAgICAgICAgICAgaWYgKERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50
Kj4ob3V0ZXItPnBhcmVudCgpKSkKKyAgICAgICAgICAgICAgICAgICAgY3VycmVudEZvY3VzQ2Fu
ZGlkYXRlLmVuY2xvc2luZ1Njcm9sbGFibGVCb3ggPSBzdGF0aWNfY2FzdDxOb2RlKj4oZG9jdW1l
bnQtPm93bmVyRWxlbWVudCgpKTsKKworICAgICAgICAgICAgfSBlbHNlIGlmIChpc1Njcm9sbGFi
bGVDb250YWluZXJOb2RlKG91dGVyLT5wYXJlbnQoKSkpCisgICAgICAgICAgICAgICAgY3VycmVu
dEZvY3VzQ2FuZGlkYXRlLmVuY2xvc2luZ1Njcm9sbGFibGVCb3ggPSBvdXRlci0+cGFyZW50KCk7
CisKICAgICAgICAgICAgIC8vIEdldCBkaXN0YW5jZSBhbmQgYWxpZ25tZW50IGZyb20gY3VycmVu
dCBjYW5kaWRhdGUuCiAgICAgICAgICAgICBkaXN0YW5jZURhdGFGb3JOb2RlKGRpcmVjdGlvbiwg
Zm9jdXNlZE5vZGUsIGN1cnJlbnRGb2N1c0NhbmRpZGF0ZSk7CiAKQEAgLTQyMCwxNCArNDc0LDYg
QEAgdm9pZCBGb2N1c0NvbnRyb2xsZXI6OmZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24oTm9k
ZSogb3V0ZXIsIE5vZGUqIGZvY3VzZWROb2QKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgLy8gSWYgY2FuZGlkYXRlUGFyZW50IGlzIG5vdCBu
dWxsLCBpdCBtZWFucyB0aGF0IHdlIGFyZSBpbiBhIHJlY3Vyc2l2ZSBjYWxsCi0gICAgICAgICAg
ICAvLyBmcm9tIGRlZXBGaW5lRm9jdXNhYmxlTm9kZUluRGlyZWN0aW9uIChpLmUuIHByb2Nlc3Np
bmcgYW4gZWxlbWVudCBpbiBhbiBpZnJhbWUpLAotICAgICAgICAgICAgLy8gYW5kIGhvbGRzIHRo
ZSBkaXN0YW5jZSBhbmQgYWxpZ25tZW50IGRhdGEgb2YgdGhlIGlmcmFtZSBlbGVtZW50IGl0c2Vs
Zi4KLSAgICAgICAgICAgIGlmICghY2FuZGlkYXRlUGFyZW50LmlzTnVsbCgpKSB7Ci0gICAgICAg
ICAgICAgICAgY3VycmVudEZvY3VzQ2FuZGlkYXRlLnBhcmVudEFsaWdubWVudCA9IGNhbmRpZGF0
ZVBhcmVudC5hbGlnbm1lbnQ7Ci0gICAgICAgICAgICAgICAgY3VycmVudEZvY3VzQ2FuZGlkYXRl
LnBhcmVudERpc3RhbmNlID0gY2FuZGlkYXRlUGFyZW50LmRpc3RhbmNlOwotICAgICAgICAgICAg
fQotCiAgICAgICAgICAgICB1cGRhdGVGb2N1c0NhbmRpZGF0ZUlmQ2xvc2VyKGZvY3VzZWROb2Rl
LCBjdXJyZW50Rm9jdXNDYW5kaWRhdGUsIGNsb3Nlc3RGb2N1c0NhbmRpZGF0ZSk7CiAgICAgICAg
IH0KIApAQCAtNDM5LDcgKzQ4NSw5IEBAIHZvaWQgRm9jdXNDb250cm9sbGVyOjpkZWVwRmluZEZv
Y3VzYWJsZU5vZGVJbkRpcmVjdGlvbihOb2RlKiBjb250YWluZXIsIE5vZGUqIGZvCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9jdXNEaXJl
Y3Rpb24gZGlyZWN0aW9uLCBLZXlib2FyZEV2ZW50KiBldmVudCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb2N1c0NhbmRpZGF0ZSYgY2xv
c2VzdEZvY3VzQ2FuZGlkYXRlKQogewotICAgIEFTU0VSVChjb250YWluZXItPmhhc1RhZ05hbWUo
ZnJhbWVUYWcpIHx8IGNvbnRhaW5lci0+aGFzVGFnTmFtZShpZnJhbWVUYWcpKTsKKyAgICBBU1NF
UlQoY29udGFpbmVyLT5oYXNUYWdOYW1lKGZyYW1lVGFnKQorICAgICAgICB8fCBjb250YWluZXIt
Pmhhc1RhZ05hbWUoaWZyYW1lVGFnKQorICAgICAgICB8fCBpc1Njcm9sbGFibGVDb250YWluZXJO
b2RlKGNvbnRhaW5lcikpOwogCiAgICAgLy8gVHJhY2sgaWYgZm9jdXNlZE5vZGUgaXMgYSBkZXNj
ZW5kYW50IG9mIHRoZSBjdXJyZW50IGNvbnRhaW5lciBub2RlIGJlaW5nIHByb2Nlc3NlZC4KICAg
ICBib29sIGRlc2NlbmRhbnRPZkNvbnRhaW5lciA9IGZhbHNlOwpAQCAtNDU5LDYgKzUwNywxMSBA
QCB2b2lkIEZvY3VzQ29udHJvbGxlcjo6ZGVlcEZpbmRGb2N1c2FibGVOb2RlSW5EaXJlY3Rpb24o
Tm9kZSogY29udGFpbmVyLCBOb2RlKiBmbwogICAgICAgICBkZXNjZW5kYW50T2ZDb250YWluZXIg
PSBpbm5lckRvY3VtZW50ID09IGZvY3VzZWROb2RlLT5kb2N1bWVudCgpOwogICAgICAgICBmaXJz
dENoaWxkID0gaW5uZXJEb2N1bWVudC0+Zmlyc3RDaGlsZCgpOwogCisgICAgLy8gU2Nyb2xsYWJs
ZSBibG9jayBlbGVtZW50cyAoZS5nLiA8ZGl2PiwgZXRjKQorICAgIH0gZWxzZSBpZiAoaXNTY3Jv
bGxhYmxlQ29udGFpbmVyTm9kZShjb250YWluZXIpKSB7CisKKyAgICAgICAgZmlyc3RDaGlsZCA9
IGNvbnRhaW5lci0+Zmlyc3RDaGlsZCgpOworICAgICAgICBkZXNjZW5kYW50T2ZDb250YWluZXIg
PSBmb2N1c2VkTm9kZS0+aXNEZXNjZW5kYW50T2YoY29udGFpbmVyKTsKICAgICB9CiAKICAgICBp
ZiAoZGVzY2VuZGFudE9mQ29udGFpbmVyKSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvU3Bh
dGlhbE5hdmlnYXRpb24uY3BwIGIvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcApp
bmRleCBkN2VhZjI1Li4zMDdmYjA3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5h
dmlnYXRpb24uY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAKQEAg
LTUyNiw0ICs1MjYsMTcgQEAgc3RhdGljIGJvb2wgY2hlY2tOZWdhdGl2ZUNvb3Jkc0Zvck5vZGUo
Tm9kZSogbm9kZSwgY29uc3QgSW50UmVjdCYgY3VyUmVjdCkKICAgICByZXR1cm4gY2FuQmVTY3Jv
bGxlZDsKIH0KIAorYm9vbCBpc1Njcm9sbGFibGVDb250YWluZXJOb2RlKE5vZGUqIG5vZGUpCit7
CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoUmVuZGVy
T2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCkpIHsKKyAgICAgICAgcmV0dXJuIChy
ZW5kZXJlci0+aXNCb3goKSAmJiB0b1JlbmRlckJveChyZW5kZXJlciktPmNhbkJlU2Nyb2xsZWRB
bmRIYXNTY3JvbGxhYmxlQXJlYSgpCisgICAgICAgICAgICAgJiYgbm9kZS0+aGFzQ2hpbGROb2Rl
cygpICYmICFub2RlLT5pc0RvY3VtZW50Tm9kZSgpKTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFn
ZS9TcGF0aWFsTmF2aWdhdGlvbi5oIGIvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmgK
aW5kZXggMzA5YjA5NS4uNDQzYmJhMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1NwYXRpYWxO
YXZpZ2F0aW9uLmgKKysrIGIvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmgKQEAgLTk3
LDYgKzk3LDcgQEAgZW51bSBSZWN0c0FsaWdubWVudCB7CiBzdHJ1Y3QgRm9jdXNDYW5kaWRhdGUg
ewogICAgIEZvY3VzQ2FuZGlkYXRlKCkKICAgICAgICAgOiBub2RlKDApCisgICAgICAgICwgZW5j
bG9zaW5nU2Nyb2xsYWJsZUJveCgwKQogICAgICAgICAsIGRpc3RhbmNlKG1heERpc3RhbmNlKCkp
CiAgICAgICAgICwgcGFyZW50RGlzdGFuY2UobWF4RGlzdGFuY2UoKSkKICAgICAgICAgLCBhbGln
bm1lbnQoTm9uZSkKQEAgLTEwNiw2ICsxMDcsNyBAQCBzdHJ1Y3QgRm9jdXNDYW5kaWRhdGUgewog
CiAgICAgRm9jdXNDYW5kaWRhdGUoTm9kZSogbikKICAgICAgICAgOiBub2RlKG4pCisgICAgICAg
ICwgZW5jbG9zaW5nU2Nyb2xsYWJsZUJveCgwKQogICAgICAgICAsIGRpc3RhbmNlKG1heERpc3Rh
bmNlKCkpCiAgICAgICAgICwgcGFyZW50RGlzdGFuY2UobWF4RGlzdGFuY2UoKSkKICAgICAgICAg
LCBhbGlnbm1lbnQoTm9uZSkKQEAgLTExNCw5ICsxMTYsMTEgQEAgc3RydWN0IEZvY3VzQ2FuZGlk
YXRlIHsKICAgICB9CiAKICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFub2RlOyB9
CisgICAgYm9vbCBpblNjcm9sbGFibGVDb250YWluZXIoKSBjb25zdCB7IHJldHVybiBub2RlICYm
IGVuY2xvc2luZ1Njcm9sbGFibGVCb3g7IH0KICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25z
dCB7IHJldHVybiBub2RlID8gbm9kZS0+ZG9jdW1lbnQoKSA6IDA7IH0KIAogICAgIE5vZGUqIG5v
ZGU7CisgICAgTm9kZSogZW5jbG9zaW5nU2Nyb2xsYWJsZUJveDsKICAgICBsb25nIGxvbmcgZGlz
dGFuY2U7CiAgICAgbG9uZyBsb25nIHBhcmVudERpc3RhbmNlOwogICAgIFJlY3RzQWxpZ25tZW50
IGFsaWdubWVudDsKQEAgLTEyOCw2ICsxMzIsNyBAQCBib29sIHNjcm9sbEluRGlyZWN0aW9uKEZy
YW1lKiwgRm9jdXNEaXJlY3Rpb24pOwogdm9pZCBzY3JvbGxJbnRvVmlldyhFbGVtZW50Kik7CiBi
b29sIGhhc09mZnNjcmVlblJlY3QoTm9kZSopOwogYm9vbCBpc0luUm9vdERvY3VtZW50KE5vZGUq
KTsKK2Jvb2wgaXNTY3JvbGxhYmxlQ29udGFpbmVyTm9kZShOb2RlKik7CiAKIH0gLy8gbmFtc3Bh
Y2UgV2ViQ29yZQogCi0tIAoxLjcuMC40Cgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>