<?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>95204</bug_id>
          
          <creation_ts>2012-08-28 08:10:01 -0700</creation_ts>
          <short_desc>Allow child-frame content in hit-tests.</short_desc>
          <delta_ts>2013-03-07 10:11:06 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>UI Events</component>
          <version>420+</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>96908</dependson>
    
    <dependson>95685</dependson>
    
    <dependson>95720</dependson>
    
    <dependson>96830</dependson>
    
    <dependson>98139</dependson>
    
    <dependson>111217</dependson>
          <blocked>94936</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Allan Sandfeld Jensen">allan.jensen</reporter>
          <assigned_to name="Allan Sandfeld Jensen">allan.jensen</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>kevers</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>philn</cc>
    
    <cc>rbyers</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>wjmaclean</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>706353</commentid>
    <comment_count>0</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-08-28 08:10:01 -0700</bug_when>
    <thetext>Content from child-frames is often needed in hit-tests. Currently EventHandler::hitTestResultAtPoint descends into any child-frames returned as the innerNode of a hit-test, and uses the cached localPoint value in HitTestResult to continue the hit-test where it stopped.

This is problem on multiple levels for area-based hit-tests, since it only iterates into one frame and not all intersected frames,  and does not handle any potential transformations to the area being hit-tested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706392</commentid>
    <comment_count>1</comment_count>
      <attachid>160993</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-08-28 08:48:46 -0700</bug_when>
    <thetext>Created attachment 160993
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706400</commentid>
    <comment_count>2</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-08-28 08:55:28 -0700</bug_when>
    <thetext>The patch needs a few test-cases to be complete, and I want feed-back on the following two of the new flags ChildFrameHitTest and TestChildFrameScrollBars.

The first flag was necessary beause RenderLayer::hitTest always claims the hit is fully inside if it thinks it is the RootLayer. And alternative to adding that flag, could be to change the check for isRootLayer, to something that checks if it is the root layer of the top frame.

The second flag was only necessary to remain consistant with the old behavior of hitTestResultAtPoint. I actually don&apos;t see any good reason not to hit-test the frame scroll-bars. The scroll-bars already have a value to indicate if they participate in hit-testing or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706514</commentid>
    <comment_count>3</comment_count>
    <who name="Kevin Ellis">kevers</who>
    <bug_when>2012-08-28 10:58:24 -0700</bug_when>
    <thetext>How with this patch impact performance on point based hit tests?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706533</commentid>
    <comment_count>4</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-08-28 11:08:58 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; How with this patch impact performance on point based hit tests?

It shouldn&apos;t have any effect on point based tests. They already descended into child frames, it just used to happen in EventHandler::hitTestResultAtPoint, and now it is handled in RenderFrameBase::nodeAtPoint. The returned hit-test result is not completely identical, but I think this one is more correct, but nothing depends on the difference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707238</commentid>
    <comment_count>5</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-08-29 02:29:33 -0700</bug_when>
    <thetext>*** Bug 94936 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707372</commentid>
    <comment_count>6</comment_count>
      <attachid>161201</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-08-29 05:43:52 -0700</bug_when>
    <thetext>Created attachment 161201
Patch

Added two tests, and made allow-child-frame content an option to nodesFromRect</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707397</commentid>
    <comment_count>7</comment_count>
      <attachid>161201</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-29 06:29:18 -0700</bug_when>
    <thetext>Comment on attachment 161201
Patch

Attachment 161201 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13681210</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707403</commentid>
    <comment_count>8</comment_count>
      <attachid>161201</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-29 06:33:12 -0700</bug_when>
    <thetext>Comment on attachment 161201
Patch

Attachment 161201 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13684219</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707411</commentid>
    <comment_count>9</comment_count>
      <attachid>161215</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-08-29 06:47:18 -0700</bug_when>
    <thetext>Created attachment 161215
Patch

Updated lists of exported symbols</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707427</commentid>
    <comment_count>10</comment_count>
      <attachid>161215</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-29 07:31:22 -0700</bug_when>
    <thetext>Comment on attachment 161215
Patch

Attachment 161215 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13695202</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707889</commentid>
    <comment_count>11</comment_count>
      <attachid>161215</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-29 14:40:23 -0700</bug_when>
    <thetext>Comment on attachment 161215
Patch

Attachment 161215 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13695343</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710525</commentid>
    <comment_count>12</comment_count>
      <attachid>161891</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-09-03 03:15:17 -0700</bug_when>
    <thetext>Created attachment 161891
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710543</commentid>
    <comment_count>13</comment_count>
      <attachid>161891</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-03 04:30:55 -0700</bug_when>
    <thetext>Comment on attachment 161891
Patch

Attachment 161891 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13729836

New failing tests:
touchadjustment/iframe-boundary.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710609</commentid>
    <comment_count>14</comment_count>
      <attachid>161891</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-09-03 06:45:51 -0700</bug_when>
    <thetext>Comment on attachment 161891
Patch

I am splitting part of the patch out into bug #95685. The patch will need a rebase once that patch lands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710665</commentid>
    <comment_count>15</comment_count>
      <attachid>161932</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-09-03 08:17:14 -0700</bug_when>
    <thetext>Created attachment 161932
Patch

Rebased and slightly modified the test so it hopefully gives identical results on more platforms</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710671</commentid>
    <comment_count>16</comment_count>
      <attachid>161932</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-09-03 08:30:40 -0700</bug_when>
    <thetext>Comment on attachment 161932
Patch

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

r=me

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

it is getting time for us to improve this API. This bunch of books are getting out of control. We could even pass a HitTestRequest to it?

&gt; Source/WebCore/rendering/RenderLayer.cpp:3452
&gt; +    if (Frame *frame = renderer() ? renderer()-&gt;frame() : 0)
&gt; +        return (frame == frame-&gt;page()-&gt;mainFrame());
&gt; +    return false;

lets do

if (!renderer())
return false;

return blah == bleh ? a : b;

&gt; Source/WebCore/rendering/RenderLayer.h:376
&gt; +    bool isRootLayerOfMainFrame() const;

should be private?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710673</commentid>
    <comment_count>17</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-09-03 08:31:38 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 161932 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=161932&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Source/WebCore/dom/Document.cpp:1387
&gt; &gt; +PassRefPtr&lt;NodeList&gt; Document::nodesFromRect(int centerX, int centerY, unsigned topPadding, unsigned rightPadding, unsigned bottomPadding, unsigned leftPadding, bool ignoreClipping, bool allowShadowContent, bool allowChildFrameContent) const
&gt; 
&gt; it is getting time for us to improve this API. This bunch of books are getting out of control. We could even pass a HitTestRequest to it?

bools*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710675</commentid>
    <comment_count>18</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-09-03 08:38:51 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 161932 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=161932&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Source/WebCore/dom/Document.cpp:1387
&gt; &gt; +PassRefPtr&lt;NodeList&gt; Document::nodesFromRect(int centerX, int centerY, unsigned topPadding, unsigned rightPadding, unsigned bottomPadding, unsigned leftPadding, bool ignoreClipping, bool allowShadowContent, bool allowChildFrameContent) const
&gt; 
&gt; it is getting time for us to improve this API. This bunch of books are getting out of control. We could even pass a HitTestRequest to it?
&gt; 
Sounds like a good idea.

&gt; &gt; Source/WebCore/rendering/RenderLayer.cpp:3452
&gt; &gt; +    if (Frame *frame = renderer() ? renderer()-&gt;frame() : 0)
&gt; &gt; +        return (frame == frame-&gt;page()-&gt;mainFrame());
&gt; &gt; +    return false;
&gt; 
&gt; lets do
&gt; 
&gt; if (!renderer())
&gt; return false;
&gt; 
&gt; return blah == bleh ? a : b;
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderLayer.h:376
&gt; &gt; +    bool isRootLayerOfMainFrame() const;
&gt; 
&gt; should be private?

It appears that new part in the most recent patch is going to cause a fail on  fast/events/drag-outside-window.html, so I will need to rethink it. Probably going back to the extra hit-test-request flag used in the first patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710678</commentid>
    <comment_count>19</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-09-03 08:40:58 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (In reply to comment #16)
&gt; &gt; (From update of attachment 161932 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=161932&amp;action=review
&gt; &gt; 
&gt; &gt; r=me
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/dom/Document.cpp:1387
&gt; &gt; &gt; +PassRefPtr&lt;NodeList&gt; Document::nodesFromRect(int centerX, int centerY, unsigned topPadding, unsigned rightPadding, unsigned bottomPadding, unsigned leftPadding, bool ignoreClipping, bool allowShadowContent, bool allowChildFrameContent) const
&gt; &gt; 
&gt; &gt; it is getting time for us to improve this API. This bunch of books are getting out of control. We could even pass a HitTestRequest to it?
&gt; &gt; 
&gt; Sounds like a good idea.
&gt; 
Btw, the same applies for EventHandler::hitTestResultAtPoint. All the bool arguments could be send as part of the HitTestRequest flag it is also getting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710717</commentid>
    <comment_count>20</comment_count>
      <attachid>161932</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-03 10:50:42 -0700</bug_when>
    <thetext>Comment on attachment 161932
Patch

Attachment 161932 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13744206

New failing tests:
fast/events/autoscroll-should-not-stop-on-keypress.html
fast/events/drag-outside-window.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710894</commentid>
    <comment_count>21</comment_count>
      <attachid>161988</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-09-04 01:43:55 -0700</bug_when>
    <thetext>Created attachment 161988
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710987</commentid>
    <comment_count>22</comment_count>
      <attachid>161988</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-04 04:56:23 -0700</bug_when>
    <thetext>Comment on attachment 161988
Patch for landing

Clearing flags on attachment: 161988

Committed r127457: &lt;http://trac.webkit.org/changeset/127457&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710988</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-04 04:56:28 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719467</commentid>
    <comment_count>24</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-09-13 07:43:26 -0700</bug_when>
    <thetext>This change caused bug 96593.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719483</commentid>
    <comment_count>25</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-09-13 07:56:40 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; This change caused bug 96593.

That makes sense. Check if the patch uploaded to bug #96541 fixes the issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721113</commentid>
    <comment_count>26</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-09-14 14:06:09 -0700</bug_when>
    <thetext>After getting several serious regressions on Chromium (like context menus popping at the wrong position when clicking inside frames), Antonio and myself decided to revert this change along with the follow-up fixes.

The change is probably good but you are changing the behavior of a core hit-testing methods which will impact all ports. There is way too much code to cover and breakages are expected so notifying people about it would have been a good first step.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721173</commentid>
    <comment_count>27</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-09-14 15:08:43 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; After getting several serious regressions on Chromium (like context menus popping at the wrong position when clicking inside frames), Antonio and myself decided to revert this change along with the follow-up fixes.
&gt; 
&gt; The change is probably good but you are changing the behavior of a core hit-testing methods which will impact all ports. There is way too much code to cover and breakages are expected so notifying people about it would have been a good first step.

I understand this point. I have a handful of ideas for how to avoid the issues, but I guess I could also integrate that in a later patch. The worst part about this though, is that these issues appear in the ports instead of WebCore, making new test cases to test for the observed issues (probably) impossible. For instance they don&apos;t appear on Mac, Qt, EFL or GTK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721210</commentid>
    <comment_count>28</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-09-14 15:50:21 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; (In reply to comment #26)
&gt; &gt; After getting several serious regressions on Chromium (like context menus popping at the wrong position when clicking inside frames), Antonio and myself decided to revert this change along with the follow-up fixes.
&gt; &gt; 
&gt; &gt; The change is probably good but you are changing the behavior of a core hit-testing methods which will impact all ports. There is way too much code to cover and breakages are expected so notifying people about it would have been a good first step.
&gt; 
&gt; I understand this point. I have a handful of ideas for how to avoid the issues, but I guess I could also integrate that in a later patch. The worst part about this though, is that these issues appear in the ports instead of WebCore, making new test cases to test for the observed issues (probably) impossible. For instance they don&apos;t appear on Mac, Qt, EFL or GTK.

A deprecation of the old behavior and opt-in into the new one would have been better as it would have avoided the situation where all the platforms get broken unless investigated &amp; fixed. I am happy to help you get something along those lines landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721324</commentid>
    <comment_count>29</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-09-14 19:17:28 -0700</bug_when>
    <thetext>Reopening as the fix was revert in http://trac.webkit.org/changeset/128677</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790556</commentid>
    <comment_count>30</comment_count>
      <attachid>179265</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-12-13 06:43:09 -0800</bug_when>
    <thetext>Created attachment 179265
Patch

Rebased and refactored to work with the changes in HitTestResult</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790591</commentid>
    <comment_count>31</comment_count>
      <attachid>179265</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-13 07:19:19 -0800</bug_when>
    <thetext>Comment on attachment 179265
Patch

Attachment 179265 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15323259</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790601</commentid>
    <comment_count>32</comment_count>
      <attachid>179272</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-12-13 07:30:27 -0800</bug_when>
    <thetext>Created attachment 179272
Patch

Fix exported symbols in WK2 for Windows</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790645</commentid>
    <comment_count>33</comment_count>
      <attachid>179272</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-12-13 08:46:04 -0800</bug_when>
    <thetext>Comment on attachment 179272
Patch

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

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

I think it would be much nicer and more readable to change all these bools into a set of bitflags.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790662</commentid>
    <comment_count>34</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-12-13 09:14:40 -0800</bug_when>
    <thetext>(In reply to comment #33)
&gt; (From update of attachment 179272 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=179272&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/Document.h:384
&gt; &gt; +    PassRefPtr&lt;NodeList&gt; nodesFromRect(int centerX, int centerY,
&gt; &gt; +        unsigned topPadding, unsigned rightPadding, unsigned bottomPadding, unsigned leftPadding,
&gt; &gt; +        bool ignoreClipping, bool allowShadowContent, bool allowChildFrameContent = false) const;
&gt; 
&gt; I think it would be much nicer and more readable to change all these bools into a set of bitflags.

I suggested the same. See bug 95720.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790716</commentid>
    <comment_count>35</comment_count>
      <attachid>179272</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-13 10:07:44 -0800</bug_when>
    <thetext>Comment on attachment 179272
Patch

Attachment 179272 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15312304

New failing tests:
fast/events/touch/touch-inside-iframe-scrolled.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790771</commentid>
    <comment_count>36</comment_count>
      <attachid>179272</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-13 11:12:18 -0800</bug_when>
    <thetext>Comment on attachment 179272
Patch

Attachment 179272 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15312324

New failing tests:
fast/events/touch/touch-inside-iframe-scrolled.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791010</commentid>
    <comment_count>37</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-12-13 15:27:37 -0800</bug_when>
    <thetext>(In reply to comment #33)
&gt; (From update of attachment 179272 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=179272&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/Document.h:384
&gt; &gt; +    PassRefPtr&lt;NodeList&gt; nodesFromRect(int centerX, int centerY,
&gt; &gt; +        unsigned topPadding, unsigned rightPadding, unsigned bottomPadding, unsigned leftPadding,
&gt; &gt; +        bool ignoreClipping, bool allowShadowContent, bool allowChildFrameContent = false) const;
&gt; 
&gt; I think it would be much nicer and more readable to change all these bools into a set of bitflags.

I agree, I have patch to do that (I think it was even applied and rolled back with this one). I prefer to keep the patches separate though, because the refactoring of the bools to bitflags interferes a lot more with the ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791554</commentid>
    <comment_count>38</comment_count>
      <attachid>179272</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-12-14 05:18:35 -0800</bug_when>
    <thetext>Comment on attachment 179272
Patch

Looks generally good. One question:</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803160</commentid>
    <comment_count>39</comment_count>
      <attachid>181880</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-01-09 02:02:51 -0800</bug_when>
    <thetext>Created attachment 181880
Patch

Rebased and fix fast/events/touch/touch-inside-iframe-scrolled.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803164</commentid>
    <comment_count>40</comment_count>
      <attachid>181880</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-09 02:16:35 -0800</bug_when>
    <thetext>Comment on attachment 181880
Patch

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

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

This is possibly the worst function signature ever.  (Not suggesting that&apos;s your fault!)  bools and split-coordinates as integers.  Good times. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803171</commentid>
    <comment_count>41</comment_count>
      <attachid>181880</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-09 02:33:31 -0800</bug_when>
    <thetext>Comment on attachment 181880
Patch

Attachment 181880 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15754684</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803265</commentid>
    <comment_count>42</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-01-09 05:55:45 -0800</bug_when>
    <thetext>(In reply to comment #40)
&gt; (From update of attachment 181880 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=181880&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/Document.h:385
&gt; &gt; +    PassRefPtr&lt;NodeList&gt; nodesFromRect(int centerX, int centerY,
&gt; &gt; +        unsigned topPadding, unsigned rightPadding, unsigned bottomPadding, unsigned leftPadding,
&gt; &gt; +        bool ignoreClipping, bool allowShadowContent, bool allowChildFrameContent = false) const;
&gt; 
&gt; This is possibly the worst function signature ever.  (Not suggesting that&apos;s your fault!)  bools and split-coordinates as integers.  Good times. :(

That is bug #95720. Hopefully I will get back to that when this one lands for good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803268</commentid>
    <comment_count>43</comment_count>
      <attachid>181904</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-01-09 06:04:56 -0800</bug_when>
    <thetext>Created attachment 181904
Patch

Update the windows symbols in the new place they reside.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803298</commentid>
    <comment_count>44</comment_count>
      <attachid>181904</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-09 06:37:08 -0800</bug_when>
    <thetext>Comment on attachment 181904
Patch

Attachment 181904 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15756590</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803378</commentid>
    <comment_count>45</comment_count>
      <attachid>181904</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-01-09 09:14:49 -0800</bug_when>
    <thetext>Comment on attachment 181904
Patch

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

&gt; Source/WebCore/ChangeLog:10
&gt; +        Refactors how EventHandler::hitTestResultAtPoint handles child-frame content,
&gt; +        it is now handled by the hit test itself controlled by the AllowChildFrameContent
&gt; +        flag in HitTestRequest.

What&apos;s the justification for this? Some more context would be good.

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

Can we change these bools to bitflags? That would make things easier to read.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803444</commentid>
    <comment_count>46</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-01-09 10:13:52 -0800</bug_when>
    <thetext>(In reply to comment #45)
&gt; (From update of attachment 181904 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=181904&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:10
&gt; &gt; +        Refactors how EventHandler::hitTestResultAtPoint handles child-frame content,
&gt; &gt; +        it is now handled by the hit test itself controlled by the AllowChildFrameContent
&gt; &gt; +        flag in HitTestRequest.
&gt; 
&gt; What&apos;s the justification for this? Some more context would be good.
&gt; 
I can try to improve the ChangeLog. The goal is to return elements from all frames when doing an area-based hit-test. Currently we only return the elements in the inner most iframe containing the center point of the area. This will especially improve touch adjustment in areas near frame borders.

&gt; &gt; Source/WebCore/dom/Document.cpp:1381
&gt; &gt; +PassRefPtr&lt;NodeList&gt; Document::nodesFromRect(int centerX, int centerY, unsigned topPadding, unsigned rightPadding, unsigned bottomPadding, unsigned leftPadding, bool ignoreClipping, bool allowShadowContent, bool allowChildFrameContent) const
&gt; 
&gt; Can we change these bools to bitflags? That would make things easier to read.

Yes, that is bug #95720.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803463</commentid>
    <comment_count>47</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2013-01-09 10:33:07 -0800</bug_when>
    <thetext>(In reply to comment #46)
&gt; (In reply to comment #45)
&gt; &gt; (From update of attachment 181904 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=181904&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/ChangeLog:10
&gt; &gt; &gt; +        Refactors how EventHandler::hitTestResultAtPoint handles child-frame content,
&gt; &gt; &gt; +        it is now handled by the hit test itself controlled by the AllowChildFrameContent
&gt; &gt; &gt; +        flag in HitTestRequest.
&gt; &gt; 
&gt; &gt; What&apos;s the justification for this? Some more context would be good.
&gt; &gt; 
&gt; I can try to improve the ChangeLog. The goal is to return elements from all frames when doing an area-based hit-test. Currently we only return the elements in the inner most iframe containing the center point of the area. This will especially improve touch adjustment in areas near frame borders.

This is important otherwise ports have to do recursive calls like http://trac.webkit.org/browser/trunk/Source/WebKit/blackberry/WebKitSupport/FatFingers.cpp#L338</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803617</commentid>
    <comment_count>48</comment_count>
      <attachid>181904</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2013-01-09 12:43:41 -0800</bug_when>
    <thetext>Comment on attachment 181904
Patch

Codewise, it looks relatively good to me. Simon, Julien?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805173</commentid>
    <comment_count>49</comment_count>
      <attachid>182320</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-01-11 04:32:31 -0800</bug_when>
    <thetext>Created attachment 182320
Patch

Update all four copies of the symbol in the win build-file, and explain the benfit of the change in the ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808231</commentid>
    <comment_count>50</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-01-16 03:13:58 -0800</bug_when>
    <thetext>Ping? The EWS is all green and there seems to be no more objections, except the one covered by bug #95720.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815973</commentid>
    <comment_count>51</comment_count>
      <attachid>182320</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2013-01-24 16:40:20 -0800</bug_when>
    <thetext>Comment on attachment 182320
Patch

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

Sorry for the delay. The change looks OK with some comments.

&gt; Source/WebCore/dom/Document.cpp:1382
&gt; -PassRefPtr&lt;NodeList&gt; Document::nodesFromRect(int centerX, int centerY, unsigned topPadding, unsigned rightPadding, unsigned bottomPadding, unsigned leftPadding, bool ignoreClipping, bool allowShadowContent) const
&gt; +PassRefPtr&lt;NodeList&gt; Document::nodesFromRect(int centerX, int centerY, unsigned topPadding, unsigned rightPadding, unsigned bottomPadding, unsigned leftPadding, bool ignoreClipping, bool allowShadowContent, bool allowChildFrameContent) const

Antonio pointed out that we should improve this API. I would rather if we did that *before* this change than after, that would avoid API churn (especially since you have to touch several exported symbols). Here using a flag would free you from future change in the API. On top of that, you are already doing a boolean &lt;-&gt; flag conversion below.

Postponing migrating Internals&apos; nodeFromPoint is fine, especially since that would involve touching some tests.

&gt; Source/WebCore/page/EventHandler.cpp:1024
&gt; +    // hitTestResultAtPoint always handle child frame content.

A &apos;why&apos; comment would be better here.

&gt; Source/WebCore/page/TouchAdjustment.cpp:228
&gt; +    Node* ancestor = node-&gt;parentOrHostNode();
&gt; +    if (ancestor)

This goes on one line.

&gt; Source/WebCore/page/TouchAdjustment.cpp:231
&gt; +    if (node-&gt;isDocumentNode())
&gt; +        return static_cast&lt;const Document*&gt;(node)-&gt;ownerElement();

Would be nice to have a toDocument helper function.

&gt; Source/WebCore/rendering/HitTestResult.h:134
&gt; +    void setPointInInnerNodeFrame(const LayoutPoint&amp; point) { m_pointInInnerNodeFrame = point; }

Since nobody uses this function, we should probably postpone adding it no?

&gt; Source/WebCore/rendering/RenderFrameBase.cpp:111
&gt; +    if (request.allowsChildFrameContent()) {

We usually prefer early returns to avoid nested code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833857</commentid>
    <comment_count>52</comment_count>
      <attachid>188526</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-02-15 03:36:56 -0800</bug_when>
    <thetext>Created attachment 188526
Patch

Modified according to reviewer feedback and rebased to apply on top of the landed patch for bug #95720</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835557</commentid>
    <comment_count>53</comment_count>
      <attachid>188526</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2013-02-18 09:29:39 -0800</bug_when>
    <thetext>Comment on attachment 188526
Patch

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

&gt; Source/WebCore/ChangeLog:24
&gt; +        (Document):

Let&apos;s remove these empty entries and have the ChangeLog entries filled too.

&gt; Source/WebCore/page/TouchAdjustment.cpp:225
&gt; +static inline Node* parentShadowHostOrOwner(const Node* node)

An explanation about why we need this new function would be nice.

&gt; Source/WebCore/rendering/RenderFrameBase.cpp:112
&gt; +    FrameView* childFrameView = static_cast&lt;FrameView*&gt;(widget());

Some comments:
* The old code would check result.isOverWidget(), why is this not needed anymore?
* The old code was checking that widget() was a FrameView before doing the cast. I would much prefer if we at least ASSERT&apos;ed that (probably ASSERT_WITH_SECURITY_IMPLICATION).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835571</commentid>
    <comment_count>54</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-02-18 09:44:11 -0800</bug_when>
    <thetext>(In reply to comment #53)
&gt; (From update of attachment 188526 [details])
&gt; &gt; Source/WebCore/page/TouchAdjustment.cpp:225
&gt; &gt; +static inline Node* parentShadowHostOrOwner(const Node* node)
&gt; 
&gt; An explanation about why we need this new function would be nice.
&gt; 
Because we want to travel up the event-tree, so that the inner most event receiver gets the event. If this change was not made, frames would compete with their content for touch-adjustment because they are always focusable, but since an unhandled event to their content would get to the frame anyway, the frame should be ignored when their content is a candidate for touch-adjustment.

This algorithm is already applied to any event handling container versus it children, the previously used method parentOrshadowHost was just stopping at frame boundaries.

&gt; &gt; Source/WebCore/rendering/RenderFrameBase.cpp:112
&gt; &gt; +    FrameView* childFrameView = static_cast&lt;FrameView*&gt;(widget());
&gt; 
&gt; Some comments:
&gt; * The old code would check result.isOverWidget(), why is this not needed anymore?
The old code was trying to figure out if the hit-test had stopped at a RenderFrameBase object, so it could continue the hit-test inside that frame. Since the code has now been moved to RenderFrameBase, we can now continue immediately and do no longer need to figure out later if we were over a widget and if that widget was a frame.

&gt; * The old code was checking that widget() was a FrameView before doing the cast. I would much prefer if we at least ASSERT&apos;ed that (probably ASSERT_WITH_SECURITY_IMPLICATION).

I will do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836185</commentid>
    <comment_count>55</comment_count>
      <attachid>189041</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-02-19 03:15:33 -0800</bug_when>
    <thetext>Created attachment 189041
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836218</commentid>
    <comment_count>56</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2013-02-19 04:19:01 -0800</bug_when>
    <thetext>(In reply to comment #55)
&gt; Created an attachment (id=189041) [details]
&gt; Patch

Looks good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839180</commentid>
    <comment_count>57</comment_count>
      <attachid>189041</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2013-02-21 20:36:17 -0800</bug_when>
    <thetext>Comment on attachment 189041
Patch

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

r=me

&gt; Source/WebCore/rendering/RenderFrameBase.cpp:112
&gt; +    FrameView* childFrameView = static_cast&lt;FrameView*&gt;(widget());

I don&apos;t like a static_cast without any safety checks so please add (already mentioned in the previous review): ASSERT_WITH_SECURITY_IMPLICATION(widget()-&gt;isFrameView());</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839548</commentid>
    <comment_count>58</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-02-22 06:48:42 -0800</bug_when>
    <thetext>Committed r143727: &lt;http://trac.webkit.org/changeset/143727&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160993</attachid>
            <date>2012-08-28 08:48:46 -0700</date>
            <delta_ts>2012-08-29 05:43:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95204-20120828174828.patch</filename>
            <type>text/plain</type>
            <size>32563</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2ODc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjRlOTg0ZTBkMGQyZDk2
OGZjYWNmNGE3YzkzMTRmY2ZiZjYyMmFkZi4uYTc4ODkwNGM5MjJlNTUzNWUxMTY4NWNiMzA1Yjli
N2Q5NGViMDZhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDEyLTA4LTI4ICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgorCisgICAgICAgIEFs
bG93IGNoaWxkLWZyYW1lIGNvbnRlbnQgaW4gaGl0LXRlc3RzLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUyMDQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvcnMgaG93IEV2ZW50SGFuZGxlcjo6
aGl0VGVzdFJlc3VsdEF0UG9pbnQgaGFuZGxlcyBjaGlsZC1mcmFtZSBjb250ZW50LAorICAgICAg
ICBpdCBpcyBub3cgaGFuZGxlZCBieSB0aGUgaGl0IHRlc3QgaXRzZWxmIGNvbnRyb2xsZWQgYnkg
dGhlIEFsbG93Q2hpbGRGcmFtZUNvbnRlbnQKKyAgICAgICAgZmxhZyBpbiBIaXRUZXN0UmVxdWVz
dC4KKworICAgICAgICBUaGUgQWxsb3dTaGFkb3dDb250ZW50IGZsYWcgaXMgbW92ZWQgZnJvbSBI
aXRUZXN0UmVzdWx0IHRvIEhpdFRlc3RSZXF1ZXN0LCBzbyB0aGUKKyAgICAgICAgY29udGVudCBm
aWx0ZXIgZmxhZ3MgYXJlIGluIHRoZSBzYW1lIHBsYWNlLgorCisgICAgICAgICogZG9tL0RvY3Vt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpub2Rlc0Zyb21SZWN0KToKKyAg
ICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhh
bmRsZXI6OmhpdFRlc3RSZXN1bHRBdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvSGl0VGVz
dFJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXF1ZXN0OjphbGxvd1NoYWRv
d0NvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlcXVlc3Q6OmFsbG93Q2hpbGRG
cmFtZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlcXVlc3Q6OmNoaWxkRnJh
bWVIaXRUZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXF1ZXN0Ojp0ZXN0Q2hpbGRG
cmFtZVNjcm9sbEJhcnMpOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RMb2NhdGlvbjo6SGl0VGVzdExvY2F0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQpOgorICAgICAgICAo
V2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6Okhp
dFRlc3RSZXN1bHQ6OmFkZE5vZGVUb1JlY3RCYXNlZFRlc3RSZXN1bHQpOgorICAgICAgICAqIHJl
bmRlcmluZy9IaXRUZXN0UmVzdWx0Lmg6CisgICAgICAgIChIaXRUZXN0TG9jYXRpb24pOgorICAg
ICAgICAoSGl0VGVzdFJlc3VsdCk6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZUZsb3dCb3gu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6bm9kZUF0UG9pbnQpOgorICAg
ICAgICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
bGluZVRleHRCb3g6Om5vZGVBdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxv
Y2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6Om5vZGVBdFBvaW50KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJveDo6bm9kZUF0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRnJhbWVCYXNlOjpub2RlQXRQb2ludCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5oOgorICAgICAgICAoUmVuZGVyRnJh
bWVCYXNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVySW1hZ2U6Om5vZGVBdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmhpdFRlc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmhpdFRlc3RMYXllcik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aGl0VGVzdExpc3QpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJSZWdpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVnaW9uOjpub2Rl
QXRQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRhYmxlOjpub2RlQXRQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6
Om5vZGVBdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3gu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6bm9kZUF0UG9pbnQpOgor
CiAyMDEyLTA4LTI4ICBIdWdvIFBhcmVudGUgTGltYSAgPGh1Z28ubGltYUBvcGVuYm9zc2Eub3Jn
PgogCiAgICAgICAgIFtXSzJdIFNlbmQgY2xpY2sgZXZlbnRzIHRvIFdlYkNvcmUgd2hlbiB0aGUg
dXNlciBjbGlja2VkIG9uIGEgbm9uLXNwZWNpYWwgbm9kZSB3aXRoIFRPVUNIX0FESlVTVE1FTlQg
ZW5hYmxlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDkxZmEyZTgzY2RjNDA1ZTlkZTRi
OGI0ODFiMWI5NWRjNDIxOTY3MGYuLjhkNzJmOWEwNzI4OTBiMWJmNGUwZmM5MWJmMmNjZmY3Yjcw
M2Q5NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMTQwNiw2ICsxNDA2LDggQEAgUGFz
c1JlZlB0cjxOb2RlTGlzdD4gRG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QoaW50IGNlbnRlclgsIGlu
dCBjZW50ZXJZLCB1bnNpZ25lZAogICAgICAgICB0eXBlIHw9IEhpdFRlc3RSZXF1ZXN0OjpJZ25v
cmVDbGlwcGluZzsKICAgICBlbHNlIGlmICghZnJhbWVWaWV3LT52aXNpYmxlQ29udGVudFJlY3Qo
KS5pbnRlcnNlY3RzKEhpdFRlc3RSZXN1bHQ6OnJlY3RGb3JQb2ludChwb2ludCwgdG9wUGFkZGlu
ZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0UGFkZGluZykpKQogICAgICAgICBy
ZXR1cm4gMDsKKyAgICBpZiAoYWxsb3dTaGFkb3dDb250ZW50KQorICAgICAgICB0eXBlIHw9IEhp
dFRlc3RSZXF1ZXN0OjpBbGxvd1NoYWRvd0NvbnRlbnQ7CiAKICAgICBIaXRUZXN0UmVxdWVzdCBy
ZXF1ZXN0KHR5cGUpOwogCkBAIC0xNDE2LDggKzE0MTgsNyBAQCBQYXNzUmVmUHRyPE5vZGVMaXN0
PiBEb2N1bWVudDo6bm9kZXNGcm9tUmVjdChpbnQgY2VudGVyWCwgaW50IGNlbnRlclksIHVuc2ln
bmVkCiAgICAgICAgIHJldHVybiBoYW5kbGVaZXJvUGFkZGluZyhyZXF1ZXN0LCByZXN1bHQpOwog
ICAgIH0KIAotICAgIGVudW0gU2hhZG93Q29udGVudEZpbHRlclBvbGljeSBzaGFkb3dDb250ZW50
RmlsdGVyUG9saWN5ID0gYWxsb3dTaGFkb3dDb250ZW50ID8gQWxsb3dTaGFkb3dDb250ZW50IDog
RG9Ob3RBbGxvd1NoYWRvd0NvbnRlbnQ7Ci0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQocG9pbnQs
IHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcsIHNo
YWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3kpOworICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHBvaW50
LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nKTsK
ICAgICByZW5kZXJWaWV3KCktPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0KTsKIAogICAgIHJldHVy
biBTdGF0aWNIYXNoU2V0Tm9kZUxpc3Q6OmFkb3B0KHJlc3VsdC5yZWN0QmFzZWRUZXN0UmVzdWx0
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IGRjNmNmYTg3NTJkMjdm
ZDFkNzRmMGJjMjM4ZTBlMzJkM2Y5Yzk5OTcuLjAwMWZkNmQ5ZTllMTE2Mjk1ZDIwYzUwOTIzMDE5
MjdhMDVkN2RmOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTEwNDEs
NDAgKzEwNDEsMjEgQEAgRHJhZ1NvdXJjZUFjdGlvbiBFdmVudEhhbmRsZXI6OnVwZGF0ZURyYWdT
b3VyY2VBY3Rpb25zQWxsb3dlZCgpIGNvbnN0CiAgICAgCiBIaXRUZXN0UmVzdWx0IEV2ZW50SGFu
ZGxlcjo6aGl0VGVzdFJlc3VsdEF0UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBib29s
IGFsbG93U2hhZG93Q29udGVudCwgYm9vbCBpZ25vcmVDbGlwcGluZywgSGl0VGVzdFNjcm9sbGJh
cnMgdGVzdFNjcm9sbGJhcnMsIEhpdFRlc3RSZXF1ZXN0OjpIaXRUZXN0UmVxdWVzdFR5cGUgaGl0
VHlwZSwgY29uc3QgTGF5b3V0U2l6ZSYgcGFkZGluZykKIHsKLSAgICBlbnVtIFNoYWRvd0NvbnRl
bnRGaWx0ZXJQb2xpY3kgc2hhZG93Q29udGVudEZpbHRlclBvbGljeSA9IGFsbG93U2hhZG93Q29u
dGVudCA/IEFsbG93U2hhZG93Q29udGVudCA6IERvTm90QWxsb3dTaGFkb3dDb250ZW50OwotICAg
IEhpdFRlc3RSZXN1bHQgcmVzdWx0KHBvaW50LCBwYWRkaW5nLmhlaWdodCgpLCBwYWRkaW5nLndp
ZHRoKCksIHBhZGRpbmcuaGVpZ2h0KCksIHBhZGRpbmcud2lkdGgoKSwgc2hhZG93Q29udGVudEZp
bHRlclBvbGljeSk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQocG9pbnQsIHBhZGRpbmcuaGVp
Z2h0KCksIHBhZGRpbmcud2lkdGgoKSwgcGFkZGluZy5oZWlnaHQoKSwgcGFkZGluZy53aWR0aCgp
KTsKIAogICAgIGlmICghbV9mcmFtZS0+Y29udGVudFJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgaWYgKGlnbm9yZUNsaXBwaW5nKQogICAgICAgICBoaXRUeXBlIHw9IEhp
dFRlc3RSZXF1ZXN0OjpJZ25vcmVDbGlwcGluZzsKKyAgICBpZiAoYWxsb3dTaGFkb3dDb250ZW50
KQorICAgICAgICBoaXRUeXBlIHw9IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd1NoYWRvd0NvbnRlbnQ7
CisgICAgaWYgKHRlc3RTY3JvbGxiYXJzID09IFNob3VsZEhpdFRlc3RTY3JvbGxiYXJzKQorICAg
ICAgICBoaXRUeXBlIHw9IEhpdFRlc3RSZXF1ZXN0OjpUZXN0Q2hpbGRGcmFtZVNjcm9sbEJhcnM7
CisgICAgLy8gV2UgYWx3YXlzIG5lZWQgdG8gaGFuZGxlIGNoaWxkIGZyYW1lIGNvbnRlbnQuCisg
ICAgaGl0VHlwZSB8PSBIaXRUZXN0UmVxdWVzdDo6QWxsb3dDaGlsZEZyYW1lQ29udGVudDsKKwog
ICAgIG1fZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpLT5oaXRUZXN0KEhpdFRlc3RSZXF1ZXN0KGhp
dFR5cGUpLCByZXN1bHQpOwogCi0gICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgTm9kZSogbiA9
IHJlc3VsdC5pbm5lck5vZGUoKTsKLSAgICAgICAgaWYgKCFyZXN1bHQuaXNPdmVyV2lkZ2V0KCkg
fHwgIW4gfHwgIW4tPnJlbmRlcmVyKCkgfHwgIW4tPnJlbmRlcmVyKCktPmlzV2lkZ2V0KCkpCi0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgUmVuZGVyV2lkZ2V0KiByZW5kZXJXaWRnZXQgPSB0
b1JlbmRlcldpZGdldChuLT5yZW5kZXJlcigpKTsKLSAgICAgICAgV2lkZ2V0KiB3aWRnZXQgPSBy
ZW5kZXJXaWRnZXQtPndpZGdldCgpOwotICAgICAgICBpZiAoIXdpZGdldCB8fCAhd2lkZ2V0LT5p
c0ZyYW1lVmlldygpKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIEZyYW1lKiBmcmFtZSA9
IHN0YXRpY19jYXN0PEhUTUxGcmFtZUVsZW1lbnRCYXNlKj4obiktPmNvbnRlbnRGcmFtZSgpOwot
ICAgICAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+Y29udGVudFJlbmRlcmVyKCkpCi0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgRnJhbWVWaWV3KiB2aWV3ID0gc3RhdGljX2Nhc3Q8RnJhbWVW
aWV3Kj4od2lkZ2V0KTsKLSAgICAgICAgTGF5b3V0UG9pbnQgd2lkZ2V0UG9pbnQocmVzdWx0Lmxv
Y2FsUG9pbnQoKS54KCkgKyB2aWV3LT5zY3JvbGxYKCkgLSByZW5kZXJXaWRnZXQtPmJvcmRlckxl
ZnQoKSAtIHJlbmRlcldpZGdldC0+cGFkZGluZ0xlZnQoKSwgCi0gICAgICAgICAgICByZXN1bHQu
bG9jYWxQb2ludCgpLnkoKSArIHZpZXctPnNjcm9sbFkoKSAtIHJlbmRlcldpZGdldC0+Ym9yZGVy
VG9wKCkgLSByZW5kZXJXaWRnZXQtPnBhZGRpbmdUb3AoKSk7Ci0gICAgICAgIEhpdFRlc3RSZXN1
bHQgd2lkZ2V0SGl0VGVzdFJlc3VsdCh3aWRnZXRQb2ludCwgcGFkZGluZy5oZWlnaHQoKSwgcGFk
ZGluZy53aWR0aCgpLCBwYWRkaW5nLmhlaWdodCgpLCBwYWRkaW5nLndpZHRoKCksIHNoYWRvd0Nv
bnRlbnRGaWx0ZXJQb2xpY3kpOwotICAgICAgICBmcmFtZS0+Y29udGVudFJlbmRlcmVyKCktPmhp
dFRlc3QoSGl0VGVzdFJlcXVlc3QoaGl0VHlwZSksIHdpZGdldEhpdFRlc3RSZXN1bHQpOwotICAg
ICAgICByZXN1bHQgPSB3aWRnZXRIaXRUZXN0UmVzdWx0OwotCi0gICAgICAgIGlmICh0ZXN0U2Ny
b2xsYmFycyA9PSBTaG91bGRIaXRUZXN0U2Nyb2xsYmFycykgewotICAgICAgICAgICAgU2Nyb2xs
YmFyKiBldmVudFNjcm9sbGJhciA9IHZpZXctPnNjcm9sbGJhckF0UG9pbnQocm91bmRlZEludFBv
aW50KHBvaW50KSk7Ci0gICAgICAgICAgICBpZiAoZXZlbnRTY3JvbGxiYXIpCi0gICAgICAgICAg
ICAgICAgcmVzdWx0LnNldFNjcm9sbGJhcihldmVudFNjcm9sbGJhcik7Ci0gICAgICAgIH0KLSAg
ICB9Ci0gICAgCiAgICAgLy8gSWYgb3VyIEhpdFRlc3RSZXN1bHQgaXMgbm90IHZpc2libGUsIHRo
ZW4gd2Ugc3RhcnRlZCBoaXQgdGVzdGluZyB0b28gZmFyIGRvd24gdGhlIGZyYW1lIGNoYWluLiAK
ICAgICAvLyBBbm90aGVyIGhpdCB0ZXN0IGF0IHRoZSBtYWluIGZyYW1lIGxldmVsIHNob3VsZCBn
ZXQgdXMgdGhlIGNvcnJlY3QgdmlzaWJsZSByZXN1bHQuCiAgICAgRnJhbWUqIHJlc3VsdEZyYW1l
ID0gcmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpID8gcmVzdWx0LmlubmVyTm9uU2hhcmVkTm9k
ZSgpLT5kb2N1bWVudCgpLT5mcmFtZSgpIDogMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9IaXRUZXN0UmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hp
dFRlc3RSZXF1ZXN0LmgKaW5kZXggZTZhNTIzMWJiZmM4NjViMTc5OTIyYWI3M2VhOWY5MmM2YzI0
OGRmYi4uOTI3ZGFjZjE0OTY3YzdmMGRiZTU0YWNlNGMzMmJhYTZiMDAxZTUxNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXF1ZXN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXF1ZXN0LmgKQEAgLTM0LDcgKzM0LDExIEBAIHB1
YmxpYzoKICAgICAgICAgUmVsZWFzZSA9IDEgPDwgNCwKICAgICAgICAgSWdub3JlQ2xpcHBpbmcg
PSAxIDw8IDUsCiAgICAgICAgIFNWR0NsaXBDb250ZW50ID0gMSA8PCA2LAotICAgICAgICBUb3Vj
aEV2ZW50ID0gMSA8PCA3CisgICAgICAgIFRvdWNoRXZlbnQgPSAxIDw8IDcsCisgICAgICAgIEFs
bG93U2hhZG93Q29udGVudCA9IDEgPDwgOCwKKyAgICAgICAgQWxsb3dDaGlsZEZyYW1lQ29udGVu
dCA9IDEgPDwgOSwKKyAgICAgICAgQ2hpbGRGcmFtZUhpdFRlc3QgPSAxIDw8IDEwLAorICAgICAg
ICBUZXN0Q2hpbGRGcmFtZVNjcm9sbEJhcnMgPSAxIDw8IDExCiAgICAgfTsKIAogICAgIHR5cGVk
ZWYgdW5zaWduZWQgSGl0VGVzdFJlcXVlc3RUeXBlOwpAQCAtNTIsNiArNTYsMTAgQEAgcHVibGlj
OgogICAgIGJvb2wgc3ZnQ2xpcENvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RUeXBl
ICYgU1ZHQ2xpcENvbnRlbnQ7IH0KICAgICBib29sIHRvdWNoRXZlbnQoKSBjb25zdCB7IHJldHVy
biBtX3JlcXVlc3RUeXBlICYgVG91Y2hFdmVudDsgfQogICAgIGJvb2wgbW91c2VFdmVudCgpIGNv
bnN0IHsgcmV0dXJuICF0b3VjaEV2ZW50KCk7IH0KKyAgICBib29sIGFsbG93U2hhZG93Q29udGVu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdFR5cGUgJiBBbGxvd1NoYWRvd0NvbnRlbnQ7IH0K
KyAgICBib29sIGFsbG93Q2hpbGRGcmFtZUNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX3JlcXVl
c3RUeXBlICYgQWxsb3dDaGlsZEZyYW1lQ29udGVudDsgfQorICAgIGJvb2wgY2hpbGRGcmFtZUhp
dFRlc3QoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RUeXBlICYgQ2hpbGRGcmFtZUhpdFRlc3Q7
IH0KKyAgICBib29sIHRlc3RDaGlsZEZyYW1lU2Nyb2xsQmFycygpIGNvbnN0IHsgcmV0dXJuIG1f
cmVxdWVzdFR5cGUgJiBUZXN0Q2hpbGRGcmFtZVNjcm9sbEJhcnM7IH0KIAogICAgIC8vIENvbnZl
bmllbmNlIGZ1bmN0aW9ucwogICAgIGJvb2wgdG91Y2hNb3ZlKCkgY29uc3QgeyByZXR1cm4gbW92
ZSgpICYmIHRvdWNoRXZlbnQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0hpdFRlc3RSZXN1bHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RS
ZXN1bHQuY3BwCmluZGV4IGY3ODIyNjNhZTYxMDExZmFiNGQ4MThkZTQ0YzYxNDcwMTQ2ZjQxMmIu
LmU4ODFhZTA1MDc2ZDZjYTdhM2NjMzM0MmRkZDRjNjk4MzM1NDZlN2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCBIaXRU
ZXN0TG9jYXRpb246OkhpdFRlc3RMb2NhdGlvbihjb25zdCBIaXRUZXN0TG9jYXRpb24mIG90aGVy
LCBjb25zdCBMYXlvdXRTaXplJgogICAgICwgbV9ib3VuZGluZ0JveChvdGhlci5tX2JvdW5kaW5n
Qm94KQogICAgICwgbV90cmFuc2Zvcm1lZFBvaW50KG90aGVyLm1fdHJhbnNmb3JtZWRQb2ludCkK
ICAgICAsIG1fdHJhbnNmb3JtZWRSZWN0KG90aGVyLm1fdHJhbnNmb3JtZWRSZWN0KQotICAgICwg
bV9yZWdpb24ocmVnaW9uKQorICAgICwgbV9yZWdpb24ocmVnaW9uID8gcmVnaW9uIDogb3RoZXIu
bV9yZWdpb24pCiAgICAgLCBtX2lzUmVjdEJhc2VkKG90aGVyLm1faXNSZWN0QmFzZWQpCiAgICAg
LCBtX2lzUmVjdGlsaW5lYXIob3RoZXIubV9pc1JlY3RpbGluZWFyKQogewpAQCAtMTk0LDI3ICsx
OTQsMjMgQEAgSW50UmVjdCBIaXRUZXN0TG9jYXRpb246OnJlY3RGb3JQb2ludChjb25zdCBMYXlv
dXRQb2ludCYgcG9pbnQsIHVuc2lnbmVkIHRvcFBhZGQKIAogSGl0VGVzdFJlc3VsdDo6SGl0VGVz
dFJlc3VsdCgpIDogSGl0VGVzdExvY2F0aW9uKCkKICAgICAsIG1faXNPdmVyV2lkZ2V0KGZhbHNl
KQotICAgICwgbV9zaGFkb3dDb250ZW50RmlsdGVyUG9saWN5KERvTm90QWxsb3dTaGFkb3dDb250
ZW50KQogewogfQogCiBIaXRUZXN0UmVzdWx0OjpIaXRUZXN0UmVzdWx0KGNvbnN0IExheW91dFBv
aW50JiBwb2ludCkgOiBIaXRUZXN0TG9jYXRpb24ocG9pbnQpCiAgICAgLCBtX2lzT3ZlcldpZGdl
dChmYWxzZSkKLSAgICAsIG1fc2hhZG93Q29udGVudEZpbHRlclBvbGljeShEb05vdEFsbG93U2hh
ZG93Q29udGVudCkKIHsKIH0KIAotSGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3VsdChjb25zdCBM
YXlvdXRQb2ludCYgY2VudGVyUG9pbnQsIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJp
Z2h0UGFkZGluZywgdW5zaWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcs
IFNoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3kgYWxsb3dTaGFkb3dDb250ZW50KQorSGl0VGVzdFJl
c3VsdDo6SGl0VGVzdFJlc3VsdChjb25zdCBMYXlvdXRQb2ludCYgY2VudGVyUG9pbnQsIHVuc2ln
bmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFkZGluZywgdW5zaWduZWQgYm90dG9tUGFk
ZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcpCiAgICAgOiBIaXRUZXN0TG9jYXRpb24oY2VudGVy
UG9pbnQsIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRp
bmcpCiAgICAgLCBtX2lzT3ZlcldpZGdldChmYWxzZSkKLSAgICAsIG1fc2hhZG93Q29udGVudEZp
bHRlclBvbGljeShhbGxvd1NoYWRvd0NvbnRlbnQpCiB7CiB9CiAKLUhpdFRlc3RSZXN1bHQ6Okhp
dFRlc3RSZXN1bHQoY29uc3QgSGl0VGVzdExvY2F0aW9uJiBvdGhlciwgU2hhZG93Q29udGVudEZp
bHRlclBvbGljeSBhbGxvd1NoYWRvd0NvbnRlbnQpCitIaXRUZXN0UmVzdWx0OjpIaXRUZXN0UmVz
dWx0KGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgb3RoZXIpCiAgICAgOiBIaXRUZXN0TG9jYXRpb24o
b3RoZXIpCiAgICAgLCBtX2lzT3ZlcldpZGdldChmYWxzZSkKLSAgICAsIG1fc2hhZG93Q29udGVu
dEZpbHRlclBvbGljeShhbGxvd1NoYWRvd0NvbnRlbnQpCiB7CiB9CiAKQEAgLTIyNiw3ICsyMjIs
NiBAQCBIaXRUZXN0UmVzdWx0OjpIaXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RSZXN1bHQmIG90
aGVyKQogICAgICwgbV9pbm5lclVSTEVsZW1lbnQob3RoZXIuVVJMRWxlbWVudCgpKQogICAgICwg
bV9zY3JvbGxiYXIob3RoZXIuc2Nyb2xsYmFyKCkpCiAgICAgLCBtX2lzT3ZlcldpZGdldChvdGhl
ci5pc092ZXJXaWRnZXQoKSkKLSAgICAsIG1fc2hhZG93Q29udGVudEZpbHRlclBvbGljeShvdGhl
ci5zaGFkb3dDb250ZW50RmlsdGVyUG9saWN5KCkpCiB7CiAgICAgLy8gT25seSBjb3B5IHRoZSBO
b2RlU2V0IGluIGNhc2Ugb2YgcmVjdCBoaXQgdGVzdC4KICAgICBtX3JlY3RCYXNlZFRlc3RSZXN1
bHQgPSBhZG9wdFB0cihvdGhlci5tX3JlY3RCYXNlZFRlc3RSZXN1bHQgPyBuZXcgTm9kZVNldCgq
b3RoZXIubV9yZWN0QmFzZWRUZXN0UmVzdWx0KSA6IDApOwpAQCAtMjQ4LDcgKzI0Myw2IEBAIEhp
dFRlc3RSZXN1bHQmIEhpdFRlc3RSZXN1bHQ6Om9wZXJhdG9yPShjb25zdCBIaXRUZXN0UmVzdWx0
JiBvdGhlcikKIAogICAgIC8vIE9ubHkgY29weSB0aGUgTm9kZVNldCBpbiBjYXNlIG9mIHJlY3Qg
aGl0IHRlc3QuCiAgICAgbV9yZWN0QmFzZWRUZXN0UmVzdWx0ID0gYWRvcHRQdHIob3RoZXIubV9y
ZWN0QmFzZWRUZXN0UmVzdWx0ID8gbmV3IE5vZGVTZXQoKm90aGVyLm1fcmVjdEJhc2VkVGVzdFJl
c3VsdCkgOiAwKTsKLSAgICBtX3NoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3kgID0gb3RoZXIuc2hh
ZG93Q29udGVudEZpbHRlclBvbGljeSgpOwogCiAgICAgcmV0dXJuICp0aGlzOwogfQpAQCAtNjc0
LDcgKzY2OCw3IEBAIGJvb2wgSGl0VGVzdFJlc3VsdDo6aXNDb250ZW50RWRpdGFibGUoKSBjb25z
dAogICAgIHJldHVybiBtX2lubmVyTm9uU2hhcmVkTm9kZS0+cmVuZGVyZXJJc0VkaXRhYmxlKCk7
CiB9CiAKLWJvb2wgSGl0VGVzdFJlc3VsdDo6YWRkTm9kZVRvUmVjdEJhc2VkVGVzdFJlc3VsdChO
b2RlKiBub2RlLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNv
bnN0IExheW91dFJlY3QmIHJlY3QpCitib29sIEhpdFRlc3RSZXN1bHQ6OmFkZE5vZGVUb1JlY3RC
YXNlZFRlc3RSZXN1bHQoTm9kZSogbm9kZSwgY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0
UmVjdCYgcmVjdCkKIHsKICAgICAvLyBJZiBpdCBpcyBub3QgYSByZWN0LWJhc2VkIGhpdCB0ZXN0
LCB0aGlzIG1ldGhvZCBoYXMgdG8gYmUgbm8tb3AuCiAgICAgLy8gUmV0dXJuIGZhbHNlLCBzbyB0
aGUgaGl0IHRlc3Qgc3RvcHMuCkBAIC02ODUsNyArNjc5LDcgQEAgYm9vbCBIaXRUZXN0UmVzdWx0
OjphZGROb2RlVG9SZWN0QmFzZWRUZXN0UmVzdWx0KE5vZGUqIG5vZGUsIGNvbnN0IEhpdFRlc3RM
b2NhdGkKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKG1f
c2hhZG93Q29udGVudEZpbHRlclBvbGljeSA9PSBEb05vdEFsbG93U2hhZG93Q29udGVudCkKKyAg
ICBpZiAoIXJlcXVlc3QuYWxsb3dTaGFkb3dDb250ZW50KCkpCiAgICAgICAgIG5vZGUgPSBub2Rl
LT5zaGFkb3dBbmNlc3Rvck5vZGUoKTsKIAogICAgIG11dGFibGVSZWN0QmFzZWRUZXN0UmVzdWx0
KCkuYWRkKG5vZGUpOwpAQCAtNzA5LDcgKzcwMyw3IEBAIGJvb2wgSGl0VGVzdFJlc3VsdDo6YWRk
Tm9kZVRvUmVjdEJhc2VkVGVzdFJlc3VsdChOb2RlKiBub2RlLCBjb25zdCBIaXRUZXN0TG9jYXRp
CiAgICAgcmV0dXJuICFyZWdpb25GaWxsZWQ7CiB9CiAKLWJvb2wgSGl0VGVzdFJlc3VsdDo6YWRk
Tm9kZVRvUmVjdEJhc2VkVGVzdFJlc3VsdChOb2RlKiBub2RlLCBjb25zdCBIaXRUZXN0TG9jYXRp
b24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKK2Jvb2wgSGl0
VGVzdFJlc3VsdDo6YWRkTm9kZVRvUmVjdEJhc2VkVGVzdFJlc3VsdChOb2RlKiBub2RlLCBjb25z
dCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlv
bkluQ29udGFpbmVyLCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7CiAgICAgLy8gSWYgaXQgaXMg
bm90IGEgcmVjdC1iYXNlZCBoaXQgdGVzdCwgdGhpcyBtZXRob2QgaGFzIHRvIGJlIG5vLW9wLgog
ICAgIC8vIFJldHVybiBmYWxzZSwgc28gdGhlIGhpdCB0ZXN0IHN0b3BzLgpAQCAtNzIwLDcgKzcx
NCw3IEBAIGJvb2wgSGl0VGVzdFJlc3VsdDo6YWRkTm9kZVRvUmVjdEJhc2VkVGVzdFJlc3VsdChO
b2RlKiBub2RlLCBjb25zdCBIaXRUZXN0TG9jYXRpCiAgICAgaWYgKCFub2RlKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChtX3NoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3kgPT0gRG9O
b3RBbGxvd1NoYWRvd0NvbnRlbnQpCisgICAgaWYgKCFyZXF1ZXN0LmFsbG93U2hhZG93Q29udGVu
dCgpKQogICAgICAgICBub2RlID0gbm9kZS0+c2hhZG93QW5jZXN0b3JOb2RlKCk7CiAKICAgICBt
dXRhYmxlUmVjdEJhc2VkVGVzdFJlc3VsdCgpLmFkZChub2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvSGl0VGVzdFJlc3VsdC5oCmluZGV4IGExNGUxZDhmYzc5NjMyMjhkMjA4YmYzMGE1NGYx
ZTFiNTYwZmUxMDYuLmJhYzk2YTJiMWY5MmE2NTU1OGNmZWIzNzFiMGEyYTJmN2JhNTMzN2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaApAQCAtNDUsOCArNDUsNiBA
QCBjbGFzcyBOb2RlOwogY2xhc3MgUmVuZGVyUmVnaW9uOwogY2xhc3MgU2Nyb2xsYmFyOwogCi1l
bnVtIFNoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3kgeyBEb05vdEFsbG93U2hhZG93Q29udGVudCwg
QWxsb3dTaGFkb3dDb250ZW50IH07Ci0KIGNsYXNzIEhpdFRlc3RMb2NhdGlvbiB7CiBwdWJsaWM6
CiAKQEAgLTU3LDcgKzU1LDcgQEAgcHVibGljOgogICAgIC8vIFBhc3Mgbm9uLXplcm8gcGFkZGlu
ZyB2YWx1ZXMgdG8gcGVyZm9ybSBhIHJlY3QtYmFzZWQgaGl0IHRlc3QuCiAgICAgSGl0VGVzdExv
Y2F0aW9uKGNvbnN0IExheW91dFBvaW50JiBjZW50ZXJQb2ludCwgdW5zaWduZWQgdG9wUGFkZGlu
ZywgdW5zaWduZWQgcmlnaHRQYWRkaW5nLCB1bnNpZ25lZCBib3R0b21QYWRkaW5nLCB1bnNpZ25l
ZCBsZWZ0UGFkZGluZyk7CiAgICAgLy8gTWFrZSBhIGNvcHkgdGhlIEhpdFRlc3RMb2NhdGlvbiBp
biBhIG5ldyByZWdpb24gYnkgYXBwbHlpbmcgZ2l2ZW4gb2Zmc2V0IHRvIGludGVybmFsIHBvaW50
IGFuZCBhcmVhLgotICAgIEhpdFRlc3RMb2NhdGlvbihjb25zdCBIaXRUZXN0TG9jYXRpb24mLCBj
b25zdCBMYXlvdXRTaXplJiBvZmZzZXQsIFJlbmRlclJlZ2lvbiopOworICAgIEhpdFRlc3RMb2Nh
dGlvbihjb25zdCBIaXRUZXN0TG9jYXRpb24mLCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXQsIFJl
bmRlclJlZ2lvbiogPSAwKTsKICAgICBIaXRUZXN0TG9jYXRpb24oY29uc3QgSGl0VGVzdExvY2F0
aW9uJik7CiAgICAgfkhpdFRlc3RMb2NhdGlvbigpOwogICAgIEhpdFRlc3RMb2NhdGlvbiYgb3Bl
cmF0b3I9KGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYpOwpAQCAtMTA5LDggKzEwNyw4IEBAIHB1Ymxp
YzoKICAgICBIaXRUZXN0UmVzdWx0KCk7CiAgICAgSGl0VGVzdFJlc3VsdChjb25zdCBMYXlvdXRQ
b2ludCYpOwogICAgIC8vIFBhc3Mgbm9uLW5lZ2F0aXZlIHBhZGRpbmcgdmFsdWVzIHRvIHBlcmZv
cm0gYSByZWN0LWJhc2VkIGhpdCB0ZXN0LgotICAgIEhpdFRlc3RSZXN1bHQoY29uc3QgTGF5b3V0
UG9pbnQmIGNlbnRlclBvaW50LCB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBh
ZGRpbmcsIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nLCBTaGFk
b3dDb250ZW50RmlsdGVyUG9saWN5KTsKLSAgICBIaXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RM
b2NhdGlvbiYsIFNoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3kpOworICAgIEhpdFRlc3RSZXN1bHQo
Y29uc3QgTGF5b3V0UG9pbnQmIGNlbnRlclBvaW50LCB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNp
Z25lZCByaWdodFBhZGRpbmcsIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQ
YWRkaW5nKTsKKyAgICBIaXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYpOwogICAg
IEhpdFRlc3RSZXN1bHQoY29uc3QgSGl0VGVzdFJlc3VsdCYpOwogICAgIH5IaXRUZXN0UmVzdWx0
KCk7CiAgICAgSGl0VGVzdFJlc3VsdCYgb3BlcmF0b3I9KGNvbnN0IEhpdFRlc3RSZXN1bHQmKTsK
QEAgLTEyNSw3ICsxMjMsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRUb05vblNoYWRvd0FuY2Vz
dG9yKCk7CiAKICAgICBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGhpdFRlc3RMb2NhdGlvbigpIGNv
bnN0IHsgcmV0dXJuICp0aGlzOyB9Ci0gICAgU2hhZG93Q29udGVudEZpbHRlclBvbGljeSBzaGFk
b3dDb250ZW50RmlsdGVyUG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9zaGFkb3dDb250ZW50Rmls
dGVyUG9saWN5OyB9CiAKICAgICB2b2lkIHNldElubmVyTm9kZShOb2RlKik7CiAgICAgdm9pZCBz
ZXRJbm5lck5vblNoYXJlZE5vZGUoTm9kZSopOwpAQCAtMTY2LDggKzE2Myw4IEBAIHB1YmxpYzoK
IAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBpdCBpcyByZWN0LWJhc2VkIGhpdCB0ZXN0IGFuZCBu
ZWVkcyB0byBjb250aW51ZSB1bnRpbCB0aGUgcmVjdCBpcyBmdWxseQogICAgIC8vIGVuY2xvc2Vk
IGJ5IHRoZSBib3VuZGFyaWVzIG9mIGEgbm9kZS4KLSAgICBib29sIGFkZE5vZGVUb1JlY3RCYXNl
ZFRlc3RSZXN1bHQoTm9kZSosIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRh
aW5lciwgY29uc3QgTGF5b3V0UmVjdCYgPSBMYXlvdXRSZWN0KCkpOwotICAgIGJvb2wgYWRkTm9k
ZVRvUmVjdEJhc2VkVGVzdFJlc3VsdChOb2RlKiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2Nh
dGlvbkluQ29udGFpbmVyLCBjb25zdCBGbG9hdFJlY3QmKTsKKyAgICBib29sIGFkZE5vZGVUb1Jl
Y3RCYXNlZFRlc3RSZXN1bHQoTm9kZSosIGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgY29uc3QgSGl0
VGVzdExvY2F0aW9uJiBwb2ludEluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRSZWN0JiA9IExheW91
dFJlY3QoKSk7CisgICAgYm9vbCBhZGROb2RlVG9SZWN0QmFzZWRUZXN0UmVzdWx0KE5vZGUqLCBj
b25zdCBIaXRUZXN0UmVxdWVzdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgcG9pbnRJbkNvbnRh
aW5lciwgY29uc3QgRmxvYXRSZWN0Jik7CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgSGl0VGVzdFJl
c3VsdCYpOwogCiAgICAgLy8gSWYgbV9yZWN0QmFzZWRUZXN0UmVzdWx0IGlzIDAgdGhlbiBzZXQg
aXQgdG8gYSBuZXcgTm9kZVNldC4gUmV0dXJuICptX3JlY3RCYXNlZFRlc3RSZXN1bHQuIExhenkg
YWxsb2NhdGlvbiBtYWtlcwpAQCAtMTk0LDggKzE5MSw2IEBAIHByaXZhdGU6CiAgICAgUmVmUHRy
PFNjcm9sbGJhcj4gbV9zY3JvbGxiYXI7CiAgICAgYm9vbCBtX2lzT3ZlcldpZGdldDsgLy8gUmV0
dXJucyB0cnVlIGlmIHdlIGFyZSBvdmVyIGEgd2lkZ2V0IChhbmQgbm90IGluIHRoZSBib3JkZXIv
cGFkZGluZyBhcmVhIG9mIGEgUmVuZGVyV2lkZ2V0IGZvciBleGFtcGxlKS4KIAotICAgIFNoYWRv
d0NvbnRlbnRGaWx0ZXJQb2xpY3kgbV9zaGFkb3dDb250ZW50RmlsdGVyUG9saWN5OwotCiAgICAg
bXV0YWJsZSBPd25QdHI8Tm9kZVNldD4gbV9yZWN0QmFzZWRUZXN0UmVzdWx0OwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCmluZGV4IDYxNWE0YjBiMWRl
Y2IxNDMwYWJkOTdkNGIyOGJkMTRlM2NhNDAyODMuLjRkYmNjZGVmZWI3OWM1Y2RjOWMxNzY5OTk4
M2M5ZWE2YzMyZDA5YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Jbmxp
bmVGbG93Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0Jv
eC5jcHAKQEAgLTEwMTIsNyArMTAxMiw3IEBAIGJvb2wgSW5saW5lRmxvd0JveDo6bm9kZUF0UG9p
bnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlCiAKICAg
ICBpZiAodmlzaWJsZVRvSGl0VGVzdGluZygpICYmIGxvY2F0aW9uSW5Db250YWluZXIuaW50ZXJz
ZWN0cyhyZWN0KSkgewogICAgICAgICByZW5kZXJlcigpLT51cGRhdGVIaXRUZXN0UmVzdWx0KHJl
c3VsdCwgZmxpcEZvcldyaXRpbmdNb2RlKGxvY2F0aW9uSW5Db250YWluZXIucG9pbnQoKSAtIHRv
TGF5b3V0U2l6ZShhY2N1bXVsYXRlZE9mZnNldCkpKTsgLy8gRG9uJ3QgYWRkIGluIG1feCBvciBt
X3kgaGVyZSwgd2Ugd2FudCBjb29yZHMgaW4gdGhlIGNvbnRhaW5pbmcgYmxvY2sncyBzcGFjZS4K
LSAgICAgICAgaWYgKCFyZXN1bHQuYWRkTm9kZVRvUmVjdEJhc2VkVGVzdFJlc3VsdChyZW5kZXJl
cigpLT5ub2RlKCksIGxvY2F0aW9uSW5Db250YWluZXIsIHJlY3QpKQorICAgICAgICBpZiAoIXJl
c3VsdC5hZGROb2RlVG9SZWN0QmFzZWRUZXN0UmVzdWx0KHJlbmRlcmVyKCktPm5vZGUoKSwgcmVx
dWVzdCwgbG9jYXRpb25JbkNvbnRhaW5lciwgcmVjdCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVU
ZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcApp
bmRleCA5MmQwNWEzODIxYTJmZmU5ZTgwZDMzNTk3ZTUyNDdkNGY4ZWU4YmU0Li41YmMzYjc2NTI1
YzFmMDRiNzNmN2E2Mzc1NWQ2MDM1NjE5NGZmYzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0lubGluZVRleHRCb3guY3BwCkBAIC0zNDksNyArMzQ5LDcgQEAgYm9vbCBJbmxpbmVUZXh0
Qm94Ojppc0xpbmVCcmVhaygpIGNvbnN0CiAgICAgcmV0dXJuIHJlbmRlcmVyKCktPmlzQlIoKSB8
fCAocmVuZGVyZXIoKS0+c3R5bGUoKS0+cHJlc2VydmVOZXdsaW5lKCkgJiYgbGVuKCkgPT0gMSAm
JiAoKnRleHRSZW5kZXJlcigpLT50ZXh0KCkpW3N0YXJ0KCldID09ICdcbicpOwogfQogCi1ib29s
IElubGluZVRleHRCb3g6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVz
dFJlc3VsdCYgcmVzdWx0LCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWlu
ZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgTGF5b3V0VW5pdCAvKiBs
aW5lVG9wICovLCBMYXlvdXRVbml0IC8qbGluZUJvdHRvbSovKQorYm9vbCBJbmxpbmVUZXh0Qm94
Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3Vs
dCYgcmVzdWx0LCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNv
bnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgTGF5b3V0VW5pdCAvKiBsaW5lVG9w
ICovLCBMYXlvdXRVbml0IC8qbGluZUJvdHRvbSovKQogewogICAgIGlmIChpc0xpbmVCcmVhaygp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNTksNyArMzU5LDcgQEAgYm9vbCBJbmxpbmVU
ZXh0Qm94Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQm
IHJlc3VsdCwgY28KICAgICBGbG9hdFJlY3QgcmVjdChib3hPcmlnaW4sIHNpemUoKSk7CiAgICAg
aWYgKG1fdHJ1bmNhdGlvbiAhPSBjRnVsbFRydW5jYXRpb24gJiYgdmlzaWJsZVRvSGl0VGVzdGlu
ZygpICYmIGxvY2F0aW9uSW5Db250YWluZXIuaW50ZXJzZWN0cyhyZWN0KSkgewogICAgICAgICBy
ZW5kZXJlcigpLT51cGRhdGVIaXRUZXN0UmVzdWx0KHJlc3VsdCwgZmxpcEZvcldyaXRpbmdNb2Rl
KGxvY2F0aW9uSW5Db250YWluZXIucG9pbnQoKSAtIHRvTGF5b3V0U2l6ZShhY2N1bXVsYXRlZE9m
ZnNldCkpKTsKLSAgICAgICAgaWYgKCFyZXN1bHQuYWRkTm9kZVRvUmVjdEJhc2VkVGVzdFJlc3Vs
dChyZW5kZXJlcigpLT5ub2RlKCksIGxvY2F0aW9uSW5Db250YWluZXIsIHJlY3QpKQorICAgICAg
ICBpZiAoIXJlc3VsdC5hZGROb2RlVG9SZWN0QmFzZWRUZXN0UmVzdWx0KHJlbmRlcmVyKCktPm5v
ZGUoKSwgcmVxdWVzdCwgbG9jYXRpb25JbkNvbnRhaW5lciwgcmVjdCkpCiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggNTA2YTUwYTkwYWU5ZGEwZjY5YWRmNmNmNTM4N2I5
NDU2NTM5NzE1My4uNDQyNWQ5YWEzOWZhNDY2YTk3MDk2NTI2YTJkYWExNDMxYzdhNDgxMyAxMDA3
NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC00Njk5LDcgKzQ2OTks
NyBAQCBib29sIFJlbmRlckJsb2NrOjpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYg
cmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdQogICAgIGlmICgoaGl0VGVzdEFjdGlvbiA9PSBI
aXRUZXN0QmxvY2tCYWNrZ3JvdW5kIHx8IGhpdFRlc3RBY3Rpb24gPT0gSGl0VGVzdENoaWxkQmxv
Y2tCYWNrZ3JvdW5kKSAmJiBpc1BvaW50SW5PdmVyZmxvd0NvbnRyb2wocmVzdWx0LCBsb2NhdGlv
bkluQ29udGFpbmVyLnBvaW50KCksIGFkanVzdGVkTG9jYXRpb24pKSB7CiAgICAgICAgIHVwZGF0
ZUhpdFRlc3RSZXN1bHQocmVzdWx0LCBsb2NhdGlvbkluQ29udGFpbmVyLnBvaW50KCkgLSBsb2Nh
bE9mZnNldCk7CiAgICAgICAgIC8vIEZJWE1FOiBpc1BvaW50SW5PdmVyZmxvd0NvbnRyb2woKSBk
b2Vzbid0IGhhbmRsZSByZWN0LWJhc2VkIHRlc3RzIHlldC4KLSAgICAgICAgaWYgKCFyZXN1bHQu
YWRkTm9kZVRvUmVjdEJhc2VkVGVzdFJlc3VsdChub2RlKCksIGxvY2F0aW9uSW5Db250YWluZXIp
KQorICAgICAgICBpZiAoIXJlc3VsdC5hZGROb2RlVG9SZWN0QmFzZWRUZXN0UmVzdWx0KG5vZGUo
KSwgcmVxdWVzdCwgbG9jYXRpb25JbkNvbnRhaW5lcikpCiAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KIApAQCAtNDczMiw3ICs0NzMyLDcgQEAgYm9vbCBSZW5kZXJCbG9jazo6bm9kZUF0
UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3UK
ICAgICAgICAgTGF5b3V0UmVjdCBib3VuZHNSZWN0KGFkanVzdGVkTG9jYXRpb24sIHNpemUoKSk7
CiAgICAgICAgIGlmICh2aXNpYmxlVG9IaXRUZXN0aW5nKCkgJiYgbG9jYXRpb25JbkNvbnRhaW5l
ci5pbnRlcnNlY3RzKGJvdW5kc1JlY3QpKSB7CiAgICAgICAgICAgICB1cGRhdGVIaXRUZXN0UmVz
dWx0KHJlc3VsdCwgZmxpcEZvcldyaXRpbmdNb2RlKGxvY2F0aW9uSW5Db250YWluZXIucG9pbnQo
KSAtIGxvY2FsT2Zmc2V0KSk7Ci0gICAgICAgICAgICBpZiAoIXJlc3VsdC5hZGROb2RlVG9SZWN0
QmFzZWRUZXN0UmVzdWx0KG5vZGUoKSwgbG9jYXRpb25JbkNvbnRhaW5lciwgYm91bmRzUmVjdCkp
CisgICAgICAgICAgICBpZiAoIXJlc3VsdC5hZGROb2RlVG9SZWN0QmFzZWRUZXN0UmVzdWx0KG5v
ZGUoKSwgcmVxdWVzdCwgbG9jYXRpb25JbkNvbnRhaW5lciwgYm91bmRzUmVjdCkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDUxZWI0YTEzOGE2MTAzNmFmMmI3OTU5ZjhiZThlNzli
NjlmZTYzY2MuLjQ0NzA3MTkxZDBlZmI1NGY4NjM0MjFiNTkyMWM1MjVhMTA5NzM4NmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC03NzYsNyArNzc2LDcgQEAgYm9v
bCBSZW5kZXJCb3g6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBI
aXRUZXN0UmVzdWx0JiByZXN1bHQKICAgICBib3VuZHNSZWN0Lm1vdmVCeShhZGp1c3RlZExvY2F0
aW9uKTsKICAgICBpZiAodmlzaWJsZVRvSGl0VGVzdGluZygpICYmIGFjdGlvbiA9PSBIaXRUZXN0
Rm9yZWdyb3VuZCAmJiBsb2NhdGlvbkluQ29udGFpbmVyLmludGVyc2VjdHMoYm91bmRzUmVjdCkp
IHsKICAgICAgICAgdXBkYXRlSGl0VGVzdFJlc3VsdChyZXN1bHQsIGxvY2F0aW9uSW5Db250YWlu
ZXIucG9pbnQoKSAtIHRvTGF5b3V0U2l6ZShhZGp1c3RlZExvY2F0aW9uKSk7Ci0gICAgICAgIGlm
ICghcmVzdWx0LmFkZE5vZGVUb1JlY3RCYXNlZFRlc3RSZXN1bHQobm9kZSgpLCBsb2NhdGlvbklu
Q29udGFpbmVyLCBib3VuZHNSZWN0KSkKKyAgICAgICAgaWYgKCFyZXN1bHQuYWRkTm9kZVRvUmVj
dEJhc2VkVGVzdFJlc3VsdChub2RlKCksIHJlcXVlc3QsIGxvY2F0aW9uSW5Db250YWluZXIsIGJv
dW5kc1JlY3QpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuY3BwCmluZGV4IGFhODI4NzBkNGVmYThh
ZGJjODE5NmZkZDZhNTA2ZjU5OGNiMDc1MzcuLjEzZTBiMGYzMjc1ZGI1Zjg0OTA2YjA4NmRiZTE3
ZGQyYmZiZDg4OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
cmFtZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZUJh
c2UuY3BwCkBAIC0yOSw2ICsyOSw4IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJG
cmFtZVZpZXcuaCIKICNpbmNsdWRlICJIVE1MRnJhbWVFbGVtZW50QmFzZS5oIgorI2luY2x1ZGUg
IkhpdFRlc3RSZXN1bHQuaCIKKyNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJl
bmRlclZpZXcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTA0LDQgKzEwNiwzMSBAQCB2
b2lkIFJlbmRlckZyYW1lQmFzZTo6bGF5b3V0V2l0aEZsYXR0ZW5pbmcoYm9vbCBoYXNGaXhlZFdp
ZHRoLCBib29sIGhhc0ZpeGVkSGVpZwogICAgIHNldE5lZWRzTGF5b3V0KGZhbHNlKTsKIH0KIAor
Ym9vbCBSZW5kZXJGcmFtZUJhc2U6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiBy
ZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9j
YXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBI
aXRUZXN0QWN0aW9uIGFjdGlvbikKK3sKKyAgICBpZiAocmVxdWVzdC5hbGxvd0NoaWxkRnJhbWVD
b250ZW50KCkpIHsKKyAgICAgICAgRnJhbWVWaWV3KiBjaGlsZEZyYW1lVmlldyA9IHN0YXRpY19j
YXN0PEZyYW1lVmlldyo+KHdpZGdldCgpKTsKKyAgICAgICAgUmVuZGVyVmlldyogY2hpbGRSb290
ID0gY2hpbGRGcmFtZVZpZXcgPyBzdGF0aWNfY2FzdDxSZW5kZXJWaWV3Kj4oY2hpbGRGcmFtZVZp
ZXctPmZyYW1lKCktPmNvbnRlbnRSZW5kZXJlcigpKSA6IDA7CisgICAgICAgIGlmIChjaGlsZFJv
b3QpIHsKKyAgICAgICAgICAgIEhpdFRlc3RMb2NhdGlvbiBuZXdIaXRUZXN0TG9jYXRpb24obG9j
YXRpb25JbkNvbnRhaW5lciwgLWxvY2F0aW9uKCkgLSBhY2N1bXVsYXRlZE9mZnNldCk7CisgICAg
ICAgICAgICBIaXRUZXN0UmVxdWVzdCBuZXdIaXRUZXN0UmVxdWVzdChyZXF1ZXN0LnR5cGUoKSB8
IEhpdFRlc3RSZXF1ZXN0OjpDaGlsZEZyYW1lSGl0VGVzdCk7CisKKyAgICAgICAgICAgIGJvb2wg
aXNJbnNpZGVDaGlsZEZyYW1lID0gY2hpbGRSb290LT5sYXllcigpLT5oaXRUZXN0KG5ld0hpdFRl
c3RSZXF1ZXN0LCBuZXdIaXRUZXN0TG9jYXRpb24sIHJlc3VsdCk7CisgICAgICAgICAgICBpZiAo
aXNJbnNpZGVDaGlsZEZyYW1lKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAg
ICAgICAgICBpZiAocmVxdWVzdC50ZXN0Q2hpbGRGcmFtZVNjcm9sbEJhcnMoKSkgeworICAgICAg
ICAgICAgICAgIC8vIFNjcm9sbFZpZXcgc2Nyb2xsYmFycyBhcmUgbm90IHRoZSBzYW1lIGFzIFJl
bmRlckxheWVyIHNjcm9sbGJhcnMgdGVzdGVkIGJ5IFJlbmRlckxheWVyOjpoaXRUZXN0T3ZlcmZs
b3dDb250cm9scywKKyAgICAgICAgICAgICAgICAvLyBzbyB3ZSBuZWVkIHRvIHRlc3QgU2Nyb2xs
VmlldyBzY3JvbGxiYXJzIHNlcGFyYXRlbHkgaGVyZS4KKyAgICAgICAgICAgICAgICAvLyBGSVhN
RTogQ29uc2lkZXIgaWYgdGhpcyB0ZXN0IGNvdWxkIGJlIGRvbmUgdW5jb25kaXRpb25hbGx5Lgor
ICAgICAgICAgICAgICAgIFNjcm9sbGJhciogZnJhbWVTY3JvbGxiYXIgPSBjaGlsZEZyYW1lVmll
dy0+c2Nyb2xsYmFyQXRQb2ludChuZXdIaXRUZXN0TG9jYXRpb24ucm91bmRlZFBvaW50KCkpOwor
ICAgICAgICAgICAgICAgIGlmIChmcmFtZVNjcm9sbGJhcikKKyAgICAgICAgICAgICAgICAgICAg
cmVzdWx0LnNldFNjcm9sbGJhcihmcmFtZVNjcm9sbGJhcik7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gUmVuZGVyUGFydDo6bm9kZUF0UG9pbnQocmVxdWVz
dCwgcmVzdWx0LCBsb2NhdGlvbkluQ29udGFpbmVyLCBhY2N1bXVsYXRlZE9mZnNldCwgYWN0aW9u
KTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZy
YW1lQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5oCmlu
ZGV4IDRmYWQ1NjBjNWIzMzdmOTZiODEzYjBjYjc5MDU0NTM2MmRjNjY4N2MuLmE3ZGVlZGFiMTAy
ODNkZjY5NTQxOGVkZTBmYmI5NGQ0OWUxMmU0OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRnJhbWVCYXNlLmgKQEAgLTM2LDYgKzM2LDcgQEAgcHJvdGVjdGVkOgogICAgIGV4
cGxpY2l0IFJlbmRlckZyYW1lQmFzZShFbGVtZW50Kik7CiAKIHB1YmxpYzoKKyAgICB2aXJ0dWFs
IGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0Jiwg
Y29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQ
b2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pIE9WRVJSSURFOwogICAgIHZv
aWQgbGF5b3V0V2l0aEZsYXR0ZW5pbmcoYm9vbCBmaXhlZFdpZHRoLCBib29sIGZpeGVkSGVpZ2h0
KTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCmluZGV4IDcz
MTgzN2UxMTdjNTBhNjNhMjcyZjIwY2I3ZmZiOTMxMmJjMWJkZTkuLjE5NTNmNTMzMWUxNTg5NGQz
ZDUyMDZkOTZjODI3Nzc5ODAxMWJiMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmNwcApAQCAtNTAxLDcgKzUwMSw3IEBAIEhUTUxNYXBFbGVtZW50KiBSZW5kZXJJbWFn
ZTo6aW1hZ2VNYXAoKSBjb25zdAogCiBib29sIFJlbmRlckltYWdlOjpub2RlQXRQb2ludChjb25z
dCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBjb25zdCBI
aXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBh
Y2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbiBoaXRUZXN0QWN0aW9uKQogewotICAgIEhp
dFRlc3RSZXN1bHQgdGVtcFJlc3VsdChyZXN1bHQuaGl0VGVzdExvY2F0aW9uKCksIHJlc3VsdC5z
aGFkb3dDb250ZW50RmlsdGVyUG9saWN5KCkpOworICAgIEhpdFRlc3RSZXN1bHQgdGVtcFJlc3Vs
dChyZXN1bHQuaGl0VGVzdExvY2F0aW9uKCkpOwogICAgIGJvb2wgaW5zaWRlID0gUmVuZGVyUmVw
bGFjZWQ6Om5vZGVBdFBvaW50KHJlcXVlc3QsIHRlbXBSZXN1bHQsIGxvY2F0aW9uSW5Db250YWlu
ZXIsIGFjY3VtdWxhdGVkT2Zmc2V0LCBoaXRUZXN0QWN0aW9uKTsKIAogICAgIGlmICh0ZW1wUmVz
dWx0LmlubmVyTm9kZSgpICYmIG5vZGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHAKaW5kZXggOTVkZTkzODViNWE3YjhlZjE4Mzc0Nzc2NTk1M2E5Zjk1N2NlMGQz
Mi4uOTZmZTQ2ODAyYTkwOTdiZmM2OTRmNzMyY2YyZjBmYjRhZDkyMjExMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0zNDQ2LDcgKzM0NDYsNyBAQCBib29s
IFJlbmRlckxheWVyOjpoaXRUZXN0KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBIaXRUZXN0TG9jYXRpb24mCiAgICAgICAgIC8vIFdlIGRpZG4ndCBoaXQgYW55IGxheWVyLiBJ
ZiB3ZSBhcmUgdGhlIHJvb3QgbGF5ZXIgYW5kIHRoZSBtb3VzZSBpcyAtLSBvciBqdXN0IHdhcyAt
LSBkb3duLCAKICAgICAgICAgLy8gcmV0dXJuIG91cnNlbHZlcy4gV2UgZG8gdGhpcyBzbyBtb3Vz
ZSBldmVudHMgY29udGludWUgZ2V0dGluZyBkZWxpdmVyZWQgYWZ0ZXIgYSBkcmFnIGhhcyAKICAg
ICAgICAgLy8gZXhpdGVkIHRoZSBXZWJWaWV3LCBhbmQgc28gaGl0IHRlc3Rpbmcgb3ZlciBhIHNj
cm9sbGJhciBoaXRzIHRoZSBjb250ZW50IGRvY3VtZW50LgotICAgICAgICBpZiAoKHJlcXVlc3Qu
YWN0aXZlKCkgfHwgcmVxdWVzdC5yZWxlYXNlKCkpICYmIGlzUm9vdExheWVyKCkpIHsKKyAgICAg
ICAgaWYgKCFyZXF1ZXN0LmNoaWxkRnJhbWVIaXRUZXN0KCkgJiYgKHJlcXVlc3QuYWN0aXZlKCkg
fHwgcmVxdWVzdC5yZWxlYXNlKCkpICYmIGlzUm9vdExheWVyKCkpIHsKICAgICAgICAgICAgIHJl
bmRlcmVyKCktPnVwZGF0ZUhpdFRlc3RSZXN1bHQocmVzdWx0LCB0b1JlbmRlclZpZXcocmVuZGVy
ZXIoKSktPmZsaXBGb3JXcml0aW5nTW9kZShyZXN1bHQucG9pbnQoKSkpOwogICAgICAgICAgICAg
aW5zaWRlTGF5ZXIgPSB0aGlzOwogICAgICAgICB9CkBAIC0zNjgyLDcgKzM2ODIsNyBAQCBSZW5k
ZXJMYXllciogUmVuZGVyTGF5ZXI6OmhpdFRlc3RMYXllcihSZW5kZXJMYXllciogcm9vdExheWVy
LCBSZW5kZXJMYXllciogY29udAogICAgIC8vIE5leHQgd2Ugd2FudCB0byBzZWUgaWYgdGhlIG1v
dXNlIHBvcyBpcyBpbnNpZGUgdGhlIGNoaWxkIFJlbmRlck9iamVjdHMgb2YgdGhlIGxheWVyLgog
ICAgIGlmIChmZ1JlY3QuaW50ZXJzZWN0cyhoaXRUZXN0TG9jYXRpb24pICYmIGlzU2VsZlBhaW50
aW5nTGF5ZXIoKSkgewogICAgICAgICAvLyBIaXQgdGVzdCB3aXRoIGEgdGVtcG9yYXJ5IEhpdFRl
c3RSZXN1bHQsIGJlY2F1c2Ugd2Ugb25seSB3YW50IHRvIGNvbW1pdCB0byAncmVzdWx0JyBpZiB3
ZSBrbm93IHdlJ3JlIGZyb250bW9zdC4KLSAgICAgICAgSGl0VGVzdFJlc3VsdCB0ZW1wUmVzdWx0
KHJlc3VsdC5oaXRUZXN0TG9jYXRpb24oKSwgcmVzdWx0LnNoYWRvd0NvbnRlbnRGaWx0ZXJQb2xp
Y3koKSk7CisgICAgICAgIEhpdFRlc3RSZXN1bHQgdGVtcFJlc3VsdChyZXN1bHQuaGl0VGVzdExv
Y2F0aW9uKCkpOwogICAgICAgICBpZiAoaGl0VGVzdENvbnRlbnRzKHJlcXVlc3QsIHRlbXBSZXN1
bHQsIGxheWVyQm91bmRzLCBoaXRUZXN0TG9jYXRpb24sIEhpdFRlc3REZXNjZW5kYW50cykKICAg
ICAgICAgICAgICYmIGlzSGl0Q2FuZGlkYXRlKHRoaXMsIGZhbHNlLCB6T2Zmc2V0Rm9yQ29udGVu
dHNQdHIsIHVuZmxhdHRlbmVkVHJhbnNmb3JtU3RhdGUuZ2V0KCkpKSB7CiAgICAgICAgICAgICBp
ZiAocmVzdWx0LmlzUmVjdEJhc2VkVGVzdCgpKQpAQCAtMzcxMSw3ICszNzExLDcgQEAgUmVuZGVy
TGF5ZXIqIFJlbmRlckxheWVyOjpoaXRUZXN0TGF5ZXIoUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwg
UmVuZGVyTGF5ZXIqIGNvbnQKICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZUxheWVyOwogCiAgICAg
aWYgKGJnUmVjdC5pbnRlcnNlY3RzKGhpdFRlc3RMb2NhdGlvbikgJiYgaXNTZWxmUGFpbnRpbmdM
YXllcigpKSB7Ci0gICAgICAgIEhpdFRlc3RSZXN1bHQgdGVtcFJlc3VsdChyZXN1bHQuaGl0VGVz
dExvY2F0aW9uKCksIHJlc3VsdC5zaGFkb3dDb250ZW50RmlsdGVyUG9saWN5KCkpOworICAgICAg
ICBIaXRUZXN0UmVzdWx0IHRlbXBSZXN1bHQocmVzdWx0LmhpdFRlc3RMb2NhdGlvbigpKTsKICAg
ICAgICAgaWYgKGhpdFRlc3RDb250ZW50cyhyZXF1ZXN0LCB0ZW1wUmVzdWx0LCBsYXllckJvdW5k
cywgaGl0VGVzdExvY2F0aW9uLCBIaXRUZXN0U2VsZikKICAgICAgICAgICAgICYmIGlzSGl0Q2Fu
ZGlkYXRlKHRoaXMsIGZhbHNlLCB6T2Zmc2V0Rm9yQ29udGVudHNQdHIsIHVuZmxhdHRlbmVkVHJh
bnNmb3JtU3RhdGUuZ2V0KCkpKSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0LmlzUmVjdEJhc2Vk
VGVzdCgpKQpAQCAtMzc2OCw3ICszNzY4LDcgQEAgUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjpo
aXRUZXN0TGlzdChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbGlzdCwgUmVuZGVyTGF5ZXIqIHIKICAg
ICBmb3IgKGludCBpID0gbGlzdC0+c2l6ZSgpIC0gMTsgaSA+PSAwOyAtLWkpIHsKICAgICAgICAg
UmVuZGVyTGF5ZXIqIGNoaWxkTGF5ZXIgPSBsaXN0LT5hdChpKTsKICAgICAgICAgUmVuZGVyTGF5
ZXIqIGhpdExheWVyID0gMDsKLSAgICAgICAgSGl0VGVzdFJlc3VsdCB0ZW1wUmVzdWx0KHJlc3Vs
dC5oaXRUZXN0TG9jYXRpb24oKSwgcmVzdWx0LnNoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3koKSk7
CisgICAgICAgIEhpdFRlc3RSZXN1bHQgdGVtcFJlc3VsdChyZXN1bHQuaGl0VGVzdExvY2F0aW9u
KCkpOwogICAgICAgICBpZiAoY2hpbGRMYXllci0+aXNQYWdpbmF0ZWQoKSkKICAgICAgICAgICAg
IGhpdExheWVyID0gaGl0VGVzdFBhZ2luYXRlZENoaWxkTGF5ZXIoY2hpbGRMYXllciwgcm9vdExh
eWVyLCByZXF1ZXN0LCB0ZW1wUmVzdWx0LCBoaXRUZXN0UmVjdCwgaGl0VGVzdExvY2F0aW9uLCB0
cmFuc2Zvcm1TdGF0ZSwgek9mZnNldEZvckRlc2NlbmRhbnRzKTsKICAgICAgICAgZWxzZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcAppbmRleCBmNTY0M2M3NzE3NWM3
ZmYxNTNjMGQ0MTMxNDIyZjFlYzkzM2MyMmJjLi5hZjIzNjFlOWUzNDMyMDU1YjNiMjM0NzBjZjU4
ZTA4MmZmMDg1YmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
UmVnaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNw
cApAQCAtMTM0LDcgKzEzNCw3IEBAIGJvb2wgUmVuZGVyUmVnaW9uOjpub2RlQXRQb2ludChjb25z
dCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzCiAgICAgICAgIGlm
IChtX2Zsb3dUaHJlYWQgJiYgbV9mbG93VGhyZWFkLT5oaXRUZXN0UmVnaW9uKHRoaXMsIHJlcXVl
c3QsIHJlc3VsdCwgbG9jYXRpb25JbkNvbnRhaW5lciwgTGF5b3V0UG9pbnQoYWRqdXN0ZWRMb2Nh
dGlvbi54KCkgKyBib3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpLCBhZGp1c3RlZExvY2F0aW9u
LnkoKSArIGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgpKSkpCiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgdXBkYXRlSGl0VGVzdFJlc3VsdChyZXN1bHQsIGxvY2F0aW9uSW5Db250
YWluZXIucG9pbnQoKSAtIHRvTGF5b3V0U2l6ZShhZGp1c3RlZExvY2F0aW9uKSk7Ci0gICAgICAg
IGlmICghcmVzdWx0LmFkZE5vZGVUb1JlY3RCYXNlZFRlc3RSZXN1bHQobm9kZSgpLCBsb2NhdGlv
bkluQ29udGFpbmVyLCBib3VuZHNSZWN0KSkKKyAgICAgICAgaWYgKCFyZXN1bHQuYWRkTm9kZVRv
UmVjdEJhc2VkVGVzdFJlc3VsdChub2RlKCksIHJlcXVlc3QsIGxvY2F0aW9uSW5Db250YWluZXIs
IGJvdW5kc1JlY3QpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAppbmRleCA0YzM4ZDRlZjQ1NjdiZTRlMDkx
MDRjODJhYTBkMDQ3Njg2MTEzYjU0Li5hZGE4ZmZiMjBmZGUxNGRiMGNmZWNiMzJmOTNjOGI2MWE5
ZmZmOThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKQEAgLTEy
OTEsNyArMTI5MSw3IEBAIGJvb2wgUmVuZGVyVGFibGU6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRl
c3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1CiAgICAgTGF5b3V0UmVjdCBi
b3VuZHNSZWN0KGFkanVzdGVkTG9jYXRpb24sIHNpemUoKSk7CiAgICAgaWYgKHZpc2libGVUb0hp
dFRlc3RpbmcoKSAmJiAoYWN0aW9uID09IEhpdFRlc3RCbG9ja0JhY2tncm91bmQgfHwgYWN0aW9u
ID09IEhpdFRlc3RDaGlsZEJsb2NrQmFja2dyb3VuZCkgJiYgbG9jYXRpb25JbkNvbnRhaW5lci5p
bnRlcnNlY3RzKGJvdW5kc1JlY3QpKSB7CiAgICAgICAgIHVwZGF0ZUhpdFRlc3RSZXN1bHQocmVz
dWx0LCBmbGlwRm9yV3JpdGluZ01vZGUobG9jYXRpb25JbkNvbnRhaW5lci5wb2ludCgpIC0gdG9M
YXlvdXRTaXplKGFkanVzdGVkTG9jYXRpb24pKSk7Ci0gICAgICAgIGlmICghcmVzdWx0LmFkZE5v
ZGVUb1JlY3RCYXNlZFRlc3RSZXN1bHQobm9kZSgpLCBsb2NhdGlvbkluQ29udGFpbmVyLCBib3Vu
ZHNSZWN0KSkKKyAgICAgICAgaWYgKCFyZXN1bHQuYWRkTm9kZVRvUmVjdEJhc2VkVGVzdFJlc3Vs
dChub2RlKCksIHJlcXVlc3QsIGxvY2F0aW9uSW5Db250YWluZXIsIGJvdW5kc1JlY3QpKQogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcAppbmRleCBjOGQyNmY4NDIyOTA4Y2Y5NGE0YTQyN2Ni
OTM2OWI2MWViOTNhNzMyLi5mNzExNWQ5MjY1YmI5YjFmNTI2MTFiOTdhYmQ0ZjgyYWQ3YWNiNGRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAK
QEAgLTQyOSw3ICs0MjksNyBAQCBib29sIFJlbmRlclNWR1Jvb3Q6Om5vZGVBdFBvaW50KGNvbnN0
IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZQogICAgICAgICAgICAg
Ly8gRklYTUU6IG5vZGVBdEZsb2F0UG9pbnQoKSBkb2Vzbid0IGhhbmRsZSByZWN0LWJhc2VkIGhp
dCB0ZXN0cyB5ZXQuCiAgICAgICAgICAgICBpZiAoY2hpbGQtPm5vZGVBdEZsb2F0UG9pbnQocmVx
dWVzdCwgcmVzdWx0LCBsb2NhbFBvaW50LCBoaXRUZXN0QWN0aW9uKSkgewogICAgICAgICAgICAg
ICAgIHVwZGF0ZUhpdFRlc3RSZXN1bHQocmVzdWx0LCBwb2ludEluQm9yZGVyQm94KTsKLSAgICAg
ICAgICAgICAgICBpZiAoIXJlc3VsdC5hZGROb2RlVG9SZWN0QmFzZWRUZXN0UmVzdWx0KGNoaWxk
LT5ub2RlKCksIGxvY2F0aW9uSW5Db250YWluZXIpKQorICAgICAgICAgICAgICAgIGlmICghcmVz
dWx0LmFkZE5vZGVUb1JlY3RCYXNlZFRlc3RSZXN1bHQoY2hpbGQtPm5vZGUoKSwgcmVxdWVzdCwg
bG9jYXRpb25JbkNvbnRhaW5lcikpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC00NDQsNyArNDQ0LDcgQEAgYm9vbCBSZW5kZXJT
VkdSb290Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVz
dFJlc3VsdCYgcmUKICAgICAgICAgTGF5b3V0UmVjdCBib3VuZHNSZWN0KGFjY3VtdWxhdGVkT2Zm
c2V0ICsgbG9jYXRpb24oKSwgc2l6ZSgpKTsKICAgICAgICAgaWYgKGxvY2F0aW9uSW5Db250YWlu
ZXIuaW50ZXJzZWN0cyhib3VuZHNSZWN0KSkgewogICAgICAgICAgICAgdXBkYXRlSGl0VGVzdFJl
c3VsdChyZXN1bHQsIHBvaW50SW5Cb3JkZXJCb3gpOwotICAgICAgICAgICAgaWYgKCFyZXN1bHQu
YWRkTm9kZVRvUmVjdEJhc2VkVGVzdFJlc3VsdChub2RlKCksIGxvY2F0aW9uSW5Db250YWluZXIs
IGJvdW5kc1JlY3QpKQorICAgICAgICAgICAgaWYgKCFyZXN1bHQuYWRkTm9kZVRvUmVjdEJhc2Vk
VGVzdFJlc3VsdChub2RlKCksIHJlcXVlc3QsIGxvY2F0aW9uSW5Db250YWluZXIsIGJvdW5kc1Jl
Y3QpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAKaW5k
ZXggNWFjZjQ3ZTkxNDdmYjdhYzUxYTRkNDI5ZDc3YzQyNjBlNmQ1NmEwMC4uNzg2NGQ0ZWU4YTJk
MDEwNzk1ZTA0MDcwODYwZDU3Yjg2ZDgzZDRiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwCkBAIC03MTYsNyArNzE2LDcgQEAgYm9v
bCBTVkdJbmxpbmVUZXh0Qm94Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVx
dWVzdCwgSGl0VGVzdFJlc3VsdCYKICAgICAgICAgICAgIEZsb2F0UmVjdCByZWN0KGJveE9yaWdp
biwgc2l6ZSgpKTsKICAgICAgICAgICAgIGlmIChsb2NhdGlvbkluQ29udGFpbmVyLmludGVyc2Vj
dHMocmVjdCkpIHsKICAgICAgICAgICAgICAgICByZW5kZXJlcigpLT51cGRhdGVIaXRUZXN0UmVz
dWx0KHJlc3VsdCwgbG9jYXRpb25JbkNvbnRhaW5lci5wb2ludCgpIC0gdG9MYXlvdXRTaXplKGFj
Y3VtdWxhdGVkT2Zmc2V0KSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuYWRkTm9kZVRv
UmVjdEJhc2VkVGVzdFJlc3VsdChyZW5kZXJlcigpLT5ub2RlKCksIGxvY2F0aW9uSW5Db250YWlu
ZXIsIHJlY3QpKQorICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LmFkZE5vZGVUb1JlY3RCYXNl
ZFRlc3RSZXN1bHQocmVuZGVyZXIoKS0+bm9kZSgpLCByZXF1ZXN0LCBsb2NhdGlvbkluQ29udGFp
bmVyLCByZWN0KSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAg
ICAgfQogICAgICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161201</attachid>
            <date>2012-08-29 05:43:52 -0700</date>
            <delta_ts>2012-08-29 06:47:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95204-20120829144333.patch</filename>
            <type>text/plain</type>
            <size>54774</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2ODc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjRlOTg0ZTBkMGQyZDk2
OGZjYWNmNGE3YzkzMTRmY2ZiZjYyMmFkZi4uNDZiMTBiN2Y4NzNjOGJhOTc0Y2QzYTM3ZTkwMTE0
MDBjNmRjYTg1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDEyLTA4LTI5ICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgorCisgICAgICAgIEFs
bG93IGNoaWxkLWZyYW1lIGNvbnRlbnQgaW4gaGl0LXRlc3RzLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUyMDQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvcnMgaG93IEV2ZW50SGFuZGxlcjo6
aGl0VGVzdFJlc3VsdEF0UG9pbnQgaGFuZGxlcyBjaGlsZC1mcmFtZSBjb250ZW50LAorICAgICAg
ICBpdCBpcyBub3cgaGFuZGxlZCBieSB0aGUgaGl0IHRlc3QgaXRzZWxmIGNvbnRyb2xsZWQgYnkg
dGhlIEFsbG93Q2hpbGRGcmFtZUNvbnRlbnQKKyAgICAgICAgZmxhZyBpbiBIaXRUZXN0UmVxdWVz
dC4KKworICAgICAgICBUaGUgQWxsb3dTaGFkb3dDb250ZW50IGZsYWcgaXMgbW92ZWQgZnJvbSBI
aXRUZXN0UmVzdWx0IHRvIEhpdFRlc3RSZXF1ZXN0LCBzbyB0aGUKKyAgICAgICAgY29udGVudCBm
aWx0ZXIgZmxhZ3MgYXJlIGluIHRoZSBzYW1lIHBsYWNlLgorCisgICAgICAgIFRlc3RzOiBmYXN0
L2RvbS9ub2Rlc0Zyb21SZWN0L25vZGVzRnJvbVJlY3QtY2hpbGQtZnJhbWUtY29udGVudC5odG1s
CisgICAgICAgICAgICAgICB0b3VjaGFkanVzdG1lbnQvaWZyYW1lLWJvdW5kYXJ5Lmh0bWwKKwor
ICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
bm9kZXNGcm9tUmVjdCk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChEb2N1
bWVudCk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RXZlbnRIYW5kbGVyOjpoaXRUZXN0UmVzdWx0QXRQb2ludCk6CisgICAgICAgICogcmVuZGVy
aW5nL0hpdFRlc3RSZXF1ZXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVxdWVzdDo6
YWxsb3dTaGFkb3dDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXF1ZXN0Ojph
bGxvd0NoaWxkRnJhbWVDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXF1ZXN0
OjpjaGlsZEZyYW1lSGl0VGVzdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVxdWVzdDo6
dGVzdENoaWxkRnJhbWVTY3JvbGxCYXJzKToKKyAgICAgICAgKiByZW5kZXJpbmcvSGl0VGVzdFJl
c3VsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0TG9jYXRpb246OkhpdFRlc3RMb2Nh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpIaXRUZXN0UmVzdWx0KToK
KyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6Om9wZXJhdG9yPSk6CisgICAgICAgIChX
ZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjphZGROb2RlVG9SZWN0QmFzZWRUZXN0UmVzdWx0KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oOgorICAgICAgICAoSGl0VGVzdExvY2F0
aW9uKToKKyAgICAgICAgKEhpdFRlc3RSZXN1bHQpOgorICAgICAgICAqIHJlbmRlcmluZy9Jbmxp
bmVGbG93Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6Om5vZGVBdFBv
aW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbmxpbmVUZXh0Qm94Ojpub2RlQXRQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpub2RlQXRQ
b2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCb3g6Om5vZGVBdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
RnJhbWVCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYW1lQmFzZTo6bm9kZUF0
UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuaDoKKyAgICAgICAg
KFJlbmRlckZyYW1lQmFzZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpub2RlQXRQb2ludCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
OjpoaXRUZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpoaXRUZXN0TGF5ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmhpdFRlc3RMaXN0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJl
Z2lvbjo6bm9kZUF0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6bm9kZUF0UG9pbnQpOgorICAgICAgICAq
IHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTVkdSb290Ojpub2RlQXRQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxp
bmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6Om5vZGVB
dFBvaW50KToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnRlcm5hbHM6Om5vZGVzRnJvbVJlY3QpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJu
YWxzLmg6CisgICAgICAgIChJbnRlcm5hbHMpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxz
LmlkbDoKKwogMjAxMi0wOC0yOCAgSHVnbyBQYXJlbnRlIExpbWEgIDxodWdvLmxpbWFAb3BlbmJv
c3NhLm9yZz4KIAogICAgICAgICBbV0syXSBTZW5kIGNsaWNrIGV2ZW50cyB0byBXZWJDb3JlIHdo
ZW4gdGhlIHVzZXIgY2xpY2tlZCBvbiBhIG5vbi1zcGVjaWFsIG5vZGUgd2l0aCBUT1VDSF9BREpV
U1RNRU5UIGVuYWJsZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA5MWZhMmU4M2NkYzQw
NWU5ZGU0YjhiNDgxYjFiOTVkYzQyMTk2NzBmLi43YzQ0NWRmYmE5OGQ2NjA2ODFlNTJmNDg3NjNh
MzliOGQyZmQ0MGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTEzODQsNyArMTM4NCw3
IEBAIFN0cmluZyBEb2N1bWVudDo6c3VnZ2VzdGVkTUlNRVR5cGUoKSBjb25zdAogLy8gKiBtYWtp
bmcgaXQgcmVjZWl2ZSBhIHJlY3QgYXMgcGFyYW1ldGVyLCBpLmUuIG5vZGVzRnJvbVJlY3QoeCwg
eSwgdywgaCk7CiAvLyAqIG1ha2luZyBpdCByZWNlaXZlIHRoZSBleHBhZGluZyBzaXplIG9mIGVh
Y2ggZGlyZWN0aW9uIHNlcGFyYXRlbHksCiAvLyAgIGkuZS4gbm9kZXNGcm9tUmVjdCh4LCB5LCB0
b3BTaXplLCByaWdodFNpemUsIGJvdHRvbVNpemUsIGxlZnRTaXplKTsKLVBhc3NSZWZQdHI8Tm9k
ZUxpc3Q+IERvY3VtZW50Ojpub2Rlc0Zyb21SZWN0KGludCBjZW50ZXJYLCBpbnQgY2VudGVyWSwg
dW5zaWduZWQgdG9wUGFkZGluZywgdW5zaWduZWQgcmlnaHRQYWRkaW5nLCB1bnNpZ25lZCBib3R0
b21QYWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGluZywgYm9vbCBpZ25vcmVDbGlwcGluZywgYm9v
bCBhbGxvd1NoYWRvd0NvbnRlbnQpIGNvbnN0CitQYXNzUmVmUHRyPE5vZGVMaXN0PiBEb2N1bWVu
dDo6bm9kZXNGcm9tUmVjdChpbnQgY2VudGVyWCwgaW50IGNlbnRlclksIHVuc2lnbmVkIHRvcFBh
ZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFkZGluZywgdW5zaWduZWQgYm90dG9tUGFkZGluZywgdW5z
aWduZWQgbGVmdFBhZGRpbmcsIGJvb2wgaWdub3JlQ2xpcHBpbmcsIGJvb2wgYWxsb3dTaGFkb3dD
b250ZW50LCBib29sIGFsbG93Q2hpbGRGcmFtZUNvbnRlbnQpIGNvbnN0CiB7CiAgICAgLy8gRklY
TUU6IFNoYXJlIGNvZGUgYmV0d2VlbiB0aGlzLCBlbGVtZW50RnJvbVBvaW50IGFuZCBjYXJldFJh
bmdlRnJvbVBvaW50LgogICAgIGlmICghcmVuZGVyZXIoKSkKQEAgLTE0MDYsNiArMTQwNiwxMCBA
QCBQYXNzUmVmUHRyPE5vZGVMaXN0PiBEb2N1bWVudDo6bm9kZXNGcm9tUmVjdChpbnQgY2VudGVy
WCwgaW50IGNlbnRlclksIHVuc2lnbmVkCiAgICAgICAgIHR5cGUgfD0gSGl0VGVzdFJlcXVlc3Q6
Oklnbm9yZUNsaXBwaW5nOwogICAgIGVsc2UgaWYgKCFmcmFtZVZpZXctPnZpc2libGVDb250ZW50
UmVjdCgpLmludGVyc2VjdHMoSGl0VGVzdFJlc3VsdDo6cmVjdEZvclBvaW50KHBvaW50LCB0b3BQ
YWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nKSkpCiAgICAg
ICAgIHJldHVybiAwOworICAgIGlmIChhbGxvd1NoYWRvd0NvbnRlbnQpCisgICAgICAgIHR5cGUg
fD0gSGl0VGVzdFJlcXVlc3Q6OkFsbG93U2hhZG93Q29udGVudDsKKyAgICBpZiAoYWxsb3dDaGls
ZEZyYW1lQ29udGVudCkKKyAgICAgICAgdHlwZSB8PSBIaXRUZXN0UmVxdWVzdDo6QWxsb3dDaGls
ZEZyYW1lQ29udGVudDsKIAogICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QodHlwZSk7CiAKQEAg
LTE0MTYsOCArMTQyMCw3IEBAIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IERvY3VtZW50Ojpub2Rlc0Zy
b21SZWN0KGludCBjZW50ZXJYLCBpbnQgY2VudGVyWSwgdW5zaWduZWQKICAgICAgICAgcmV0dXJu
IGhhbmRsZVplcm9QYWRkaW5nKHJlcXVlc3QsIHJlc3VsdCk7CiAgICAgfQogCi0gICAgZW51bSBT
aGFkb3dDb250ZW50RmlsdGVyUG9saWN5IHNoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3kgPSBhbGxv
d1NoYWRvd0NvbnRlbnQgPyBBbGxvd1NoYWRvd0NvbnRlbnQgOiBEb05vdEFsbG93U2hhZG93Q29u
dGVudDsKLSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdChwb2ludCwgdG9wUGFkZGluZywgcmlnaHRQ
YWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0UGFkZGluZywgc2hhZG93Q29udGVudEZpbHRlclBv
bGljeSk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQocG9pbnQsIHRvcFBhZGRpbmcsIHJpZ2h0
UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcpOwogICAgIHJlbmRlclZpZXcoKS0+
aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOwogCiAgICAgcmV0dXJuIFN0YXRpY0hhc2hTZXROb2Rl
TGlzdDo6YWRvcHQocmVzdWx0LnJlY3RCYXNlZFRlc3RSZXN1bHQoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oCmluZGV4IGI4NWM1NDQzNGZjN2UxMTM3OGY2MmNjNjFjYzRhNTYzZWM0MDYyZjguLjYwYzU0
OTk5OTQ4M2E1Yzk3NmYyZGJmMWFiYTQ1OGRjNmQ2ZmZmYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CkBAIC0zNzUsOCArMzc1LDkgQEAgcHVibGljOgogICAgICAqIEBwYXJhbSBpZ25vcmVDbGlwcGlu
ZyB3aGV0aGVyIG9yIG5vdCB0byBpZ25vcmUgdGhlIHJvb3Qgc2Nyb2xsIGZyYW1lIHdoZW4gcmV0
cmlldmluZyB0aGUgZWxlbWVudC4KICAgICAgKiAgICAgICAgSWYgZmFsc2UsIHRoaXMgbWV0aG9k
IHJldHVybnMgbnVsbCBmb3IgY29vcmRpbmF0ZXMgb3V0c2lkZSBvZiB0aGUgdmlld3BvcnQuCiAg
ICAgICovCi0gICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gbm9kZXNGcm9tUmVjdChpbnQgY2VudGVy
WCwgaW50IGNlbnRlclksIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFkZGlu
ZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGJvdHRv
bVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nLCBib29sIGlnbm9yZUNsaXBwaW5nLCBib29s
IGFsbG93U2hhZG93Q29udGVudCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gbm9k
ZXNGcm9tUmVjdChpbnQgY2VudGVyWCwgaW50IGNlbnRlclksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBh
ZGRpbmcsIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpZ25vcmVDbGlwcGluZywg
Ym9vbCBhbGxvd1NoYWRvd0NvbnRlbnQsIGJvb2wgYWxsb3dDaGlsZEZyYW1lQ29udGVudCA9IGZh
bHNlKSBjb25zdDsKICAgICBFbGVtZW50KiBlbGVtZW50RnJvbVBvaW50KGludCB4LCBpbnQgeSkg
Y29uc3Q7CiAgICAgUGFzc1JlZlB0cjxSYW5nZT4gY2FyZXRSYW5nZUZyb21Qb2ludChpbnQgeCwg
aW50IHkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggZGM2Y2ZhODc1
MmQyN2ZkMWQ3NGYwYmMyMzhlMGUzMmQzZjljOTk5Ny4uMDAxZmQ2ZDllOWUxMTYyOTVkMjBjNTA5
MjMwMTkyN2EwNWQ3ZGY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAt
MTA0MSw0MCArMTA0MSwyMSBAQCBEcmFnU291cmNlQWN0aW9uIEV2ZW50SGFuZGxlcjo6dXBkYXRl
RHJhZ1NvdXJjZUFjdGlvbnNBbGxvd2VkKCkgY29uc3QKICAgICAKIEhpdFRlc3RSZXN1bHQgRXZl
bnRIYW5kbGVyOjpoaXRUZXN0UmVzdWx0QXRQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQs
IGJvb2wgYWxsb3dTaGFkb3dDb250ZW50LCBib29sIGlnbm9yZUNsaXBwaW5nLCBIaXRUZXN0U2Ny
b2xsYmFycyB0ZXN0U2Nyb2xsYmFycywgSGl0VGVzdFJlcXVlc3Q6OkhpdFRlc3RSZXF1ZXN0VHlw
ZSBoaXRUeXBlLCBjb25zdCBMYXlvdXRTaXplJiBwYWRkaW5nKQogewotICAgIGVudW0gU2hhZG93
Q29udGVudEZpbHRlclBvbGljeSBzaGFkb3dDb250ZW50RmlsdGVyUG9saWN5ID0gYWxsb3dTaGFk
b3dDb250ZW50ID8gQWxsb3dTaGFkb3dDb250ZW50IDogRG9Ob3RBbGxvd1NoYWRvd0NvbnRlbnQ7
Ci0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQocG9pbnQsIHBhZGRpbmcuaGVpZ2h0KCksIHBhZGRp
bmcud2lkdGgoKSwgcGFkZGluZy5oZWlnaHQoKSwgcGFkZGluZy53aWR0aCgpLCBzaGFkb3dDb250
ZW50RmlsdGVyUG9saWN5KTsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdChwb2ludCwgcGFkZGlu
Zy5oZWlnaHQoKSwgcGFkZGluZy53aWR0aCgpLCBwYWRkaW5nLmhlaWdodCgpLCBwYWRkaW5nLndp
ZHRoKCkpOwogCiAgICAgaWYgKCFtX2ZyYW1lLT5jb250ZW50UmVuZGVyZXIoKSkKICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICBpZiAoaWdub3JlQ2xpcHBpbmcpCiAgICAgICAgIGhpdFR5cGUg
fD0gSGl0VGVzdFJlcXVlc3Q6Oklnbm9yZUNsaXBwaW5nOworICAgIGlmIChhbGxvd1NoYWRvd0Nv
bnRlbnQpCisgICAgICAgIGhpdFR5cGUgfD0gSGl0VGVzdFJlcXVlc3Q6OkFsbG93U2hhZG93Q29u
dGVudDsKKyAgICBpZiAodGVzdFNjcm9sbGJhcnMgPT0gU2hvdWxkSGl0VGVzdFNjcm9sbGJhcnMp
CisgICAgICAgIGhpdFR5cGUgfD0gSGl0VGVzdFJlcXVlc3Q6OlRlc3RDaGlsZEZyYW1lU2Nyb2xs
QmFyczsKKyAgICAvLyBXZSBhbHdheXMgbmVlZCB0byBoYW5kbGUgY2hpbGQgZnJhbWUgY29udGVu
dC4KKyAgICBoaXRUeXBlIHw9IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd0NoaWxkRnJhbWVDb250ZW50
OworCiAgICAgbV9mcmFtZS0+Y29udGVudFJlbmRlcmVyKCktPmhpdFRlc3QoSGl0VGVzdFJlcXVl
c3QoaGl0VHlwZSksIHJlc3VsdCk7CiAKLSAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBOb2Rl
KiBuID0gcmVzdWx0LmlubmVyTm9kZSgpOwotICAgICAgICBpZiAoIXJlc3VsdC5pc092ZXJXaWRn
ZXQoKSB8fCAhbiB8fCAhbi0+cmVuZGVyZXIoKSB8fCAhbi0+cmVuZGVyZXIoKS0+aXNXaWRnZXQo
KSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBSZW5kZXJXaWRnZXQqIHJlbmRlcldpZGdl
dCA9IHRvUmVuZGVyV2lkZ2V0KG4tPnJlbmRlcmVyKCkpOwotICAgICAgICBXaWRnZXQqIHdpZGdl
dCA9IHJlbmRlcldpZGdldC0+d2lkZ2V0KCk7Ci0gICAgICAgIGlmICghd2lkZ2V0IHx8ICF3aWRn
ZXQtPmlzRnJhbWVWaWV3KCkpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgRnJhbWUqIGZy
YW1lID0gc3RhdGljX2Nhc3Q8SFRNTEZyYW1lRWxlbWVudEJhc2UqPihuKS0+Y29udGVudEZyYW1l
KCk7Ci0gICAgICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5jb250ZW50UmVuZGVyZXIoKSkKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBGcmFtZVZpZXcqIHZpZXcgPSBzdGF0aWNfY2FzdDxG
cmFtZVZpZXcqPih3aWRnZXQpOwotICAgICAgICBMYXlvdXRQb2ludCB3aWRnZXRQb2ludChyZXN1
bHQubG9jYWxQb2ludCgpLngoKSArIHZpZXctPnNjcm9sbFgoKSAtIHJlbmRlcldpZGdldC0+Ym9y
ZGVyTGVmdCgpIC0gcmVuZGVyV2lkZ2V0LT5wYWRkaW5nTGVmdCgpLCAKLSAgICAgICAgICAgIHJl
c3VsdC5sb2NhbFBvaW50KCkueSgpICsgdmlldy0+c2Nyb2xsWSgpIC0gcmVuZGVyV2lkZ2V0LT5i
b3JkZXJUb3AoKSAtIHJlbmRlcldpZGdldC0+cGFkZGluZ1RvcCgpKTsKLSAgICAgICAgSGl0VGVz
dFJlc3VsdCB3aWRnZXRIaXRUZXN0UmVzdWx0KHdpZGdldFBvaW50LCBwYWRkaW5nLmhlaWdodCgp
LCBwYWRkaW5nLndpZHRoKCksIHBhZGRpbmcuaGVpZ2h0KCksIHBhZGRpbmcud2lkdGgoKSwgc2hh
ZG93Q29udGVudEZpbHRlclBvbGljeSk7Ci0gICAgICAgIGZyYW1lLT5jb250ZW50UmVuZGVyZXIo
KS0+aGl0VGVzdChIaXRUZXN0UmVxdWVzdChoaXRUeXBlKSwgd2lkZ2V0SGl0VGVzdFJlc3VsdCk7
Ci0gICAgICAgIHJlc3VsdCA9IHdpZGdldEhpdFRlc3RSZXN1bHQ7Ci0KLSAgICAgICAgaWYgKHRl
c3RTY3JvbGxiYXJzID09IFNob3VsZEhpdFRlc3RTY3JvbGxiYXJzKSB7Ci0gICAgICAgICAgICBT
Y3JvbGxiYXIqIGV2ZW50U2Nyb2xsYmFyID0gdmlldy0+c2Nyb2xsYmFyQXRQb2ludChyb3VuZGVk
SW50UG9pbnQocG9pbnQpKTsKLSAgICAgICAgICAgIGlmIChldmVudFNjcm9sbGJhcikKLSAgICAg
ICAgICAgICAgICByZXN1bHQuc2V0U2Nyb2xsYmFyKGV2ZW50U2Nyb2xsYmFyKTsKLSAgICAgICAg
fQotICAgIH0KLSAgICAKICAgICAvLyBJZiBvdXIgSGl0VGVzdFJlc3VsdCBpcyBub3QgdmlzaWJs
ZSwgdGhlbiB3ZSBzdGFydGVkIGhpdCB0ZXN0aW5nIHRvbyBmYXIgZG93biB0aGUgZnJhbWUgY2hh
aW4uIAogICAgIC8vIEFub3RoZXIgaGl0IHRlc3QgYXQgdGhlIG1haW4gZnJhbWUgbGV2ZWwgc2hv
dWxkIGdldCB1cyB0aGUgY29ycmVjdCB2aXNpYmxlIHJlc3VsdC4KICAgICBGcmFtZSogcmVzdWx0
RnJhbWUgPSByZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCkgPyByZXN1bHQuaW5uZXJOb25TaGFy
ZWROb2RlKCktPmRvY3VtZW50KCktPmZyYW1lKCkgOiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSGl0VGVzdFJlcXVlc3QuaAppbmRleCBlNmE1MjMxYmJmYzg2NWIxNzk5MjJhYjczZWE5Zjky
YzZjMjQ4ZGZiLi45MjdkYWNmMTQ5NjdjN2YwZGJlNTRhY2U0YzMyYmFhNmIwMDFlNTE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlcXVlc3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlcXVlc3QuaApAQCAtMzQsNyArMzQsMTEg
QEAgcHVibGljOgogICAgICAgICBSZWxlYXNlID0gMSA8PCA0LAogICAgICAgICBJZ25vcmVDbGlw
cGluZyA9IDEgPDwgNSwKICAgICAgICAgU1ZHQ2xpcENvbnRlbnQgPSAxIDw8IDYsCi0gICAgICAg
IFRvdWNoRXZlbnQgPSAxIDw8IDcKKyAgICAgICAgVG91Y2hFdmVudCA9IDEgPDwgNywKKyAgICAg
ICAgQWxsb3dTaGFkb3dDb250ZW50ID0gMSA8PCA4LAorICAgICAgICBBbGxvd0NoaWxkRnJhbWVD
b250ZW50ID0gMSA8PCA5LAorICAgICAgICBDaGlsZEZyYW1lSGl0VGVzdCA9IDEgPDwgMTAsCisg
ICAgICAgIFRlc3RDaGlsZEZyYW1lU2Nyb2xsQmFycyA9IDEgPDwgMTEKICAgICB9OwogCiAgICAg
dHlwZWRlZiB1bnNpZ25lZCBIaXRUZXN0UmVxdWVzdFR5cGU7CkBAIC01Miw2ICs1NiwxMCBAQCBw
dWJsaWM6CiAgICAgYm9vbCBzdmdDbGlwQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVz
dFR5cGUgJiBTVkdDbGlwQ29udGVudDsgfQogICAgIGJvb2wgdG91Y2hFdmVudCgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVxdWVzdFR5cGUgJiBUb3VjaEV2ZW50OyB9CiAgICAgYm9vbCBtb3VzZUV2ZW50
KCkgY29uc3QgeyByZXR1cm4gIXRvdWNoRXZlbnQoKTsgfQorICAgIGJvb2wgYWxsb3dTaGFkb3dD
b250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0VHlwZSAmIEFsbG93U2hhZG93Q29udGVu
dDsgfQorICAgIGJvb2wgYWxsb3dDaGlsZEZyYW1lQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVxdWVzdFR5cGUgJiBBbGxvd0NoaWxkRnJhbWVDb250ZW50OyB9CisgICAgYm9vbCBjaGlsZEZy
YW1lSGl0VGVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdFR5cGUgJiBDaGlsZEZyYW1lSGl0
VGVzdDsgfQorICAgIGJvb2wgdGVzdENoaWxkRnJhbWVTY3JvbGxCYXJzKCkgY29uc3QgeyByZXR1
cm4gbV9yZXF1ZXN0VHlwZSAmIFRlc3RDaGlsZEZyYW1lU2Nyb2xsQmFyczsgfQogCiAgICAgLy8g
Q29udmVuaWVuY2UgZnVuY3Rpb25zCiAgICAgYm9vbCB0b3VjaE1vdmUoKSBjb25zdCB7IHJldHVy
biBtb3ZlKCkgJiYgdG91Y2hFdmVudCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0
VGVzdFJlc3VsdC5jcHAKaW5kZXggZjc4MjI2M2FlNjEwMTFmYWI0ZDgxOGRlNDRjNjE0NzAxNDZm
NDEyYi4uZTg4MWFlMDUwNzZkNmNhN2EzY2MzMzQyZGRkNGM2OTgzMzU0NmU3YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcApAQCAtMTA0LDcgKzEwNCw3IEBA
IEhpdFRlc3RMb2NhdGlvbjo6SGl0VGVzdExvY2F0aW9uKGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYg
b3RoZXIsIGNvbnN0IExheW91dFNpemUmCiAgICAgLCBtX2JvdW5kaW5nQm94KG90aGVyLm1fYm91
bmRpbmdCb3gpCiAgICAgLCBtX3RyYW5zZm9ybWVkUG9pbnQob3RoZXIubV90cmFuc2Zvcm1lZFBv
aW50KQogICAgICwgbV90cmFuc2Zvcm1lZFJlY3Qob3RoZXIubV90cmFuc2Zvcm1lZFJlY3QpCi0g
ICAgLCBtX3JlZ2lvbihyZWdpb24pCisgICAgLCBtX3JlZ2lvbihyZWdpb24gPyByZWdpb24gOiBv
dGhlci5tX3JlZ2lvbikKICAgICAsIG1faXNSZWN0QmFzZWQob3RoZXIubV9pc1JlY3RCYXNlZCkK
ICAgICAsIG1faXNSZWN0aWxpbmVhcihvdGhlci5tX2lzUmVjdGlsaW5lYXIpCiB7CkBAIC0xOTQs
MjcgKzE5NCwyMyBAQCBJbnRSZWN0IEhpdFRlc3RMb2NhdGlvbjo6cmVjdEZvclBvaW50KGNvbnN0
IExheW91dFBvaW50JiBwb2ludCwgdW5zaWduZWQgdG9wUGFkZAogCiBIaXRUZXN0UmVzdWx0OjpI
aXRUZXN0UmVzdWx0KCkgOiBIaXRUZXN0TG9jYXRpb24oKQogICAgICwgbV9pc092ZXJXaWRnZXQo
ZmFsc2UpCi0gICAgLCBtX3NoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3koRG9Ob3RBbGxvd1NoYWRv
d0NvbnRlbnQpCiB7CiB9CiAKIEhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQoY29uc3QgTGF5
b3V0UG9pbnQmIHBvaW50KSA6IEhpdFRlc3RMb2NhdGlvbihwb2ludCkKICAgICAsIG1faXNPdmVy
V2lkZ2V0KGZhbHNlKQotICAgICwgbV9zaGFkb3dDb250ZW50RmlsdGVyUG9saWN5KERvTm90QWxs
b3dTaGFkb3dDb250ZW50KQogewogfQogCi1IaXRUZXN0UmVzdWx0OjpIaXRUZXN0UmVzdWx0KGNv
bnN0IExheW91dFBvaW50JiBjZW50ZXJQb2ludCwgdW5zaWduZWQgdG9wUGFkZGluZywgdW5zaWdu
ZWQgcmlnaHRQYWRkaW5nLCB1bnNpZ25lZCBib3R0b21QYWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFk
ZGluZywgU2hhZG93Q29udGVudEZpbHRlclBvbGljeSBhbGxvd1NoYWRvd0NvbnRlbnQpCitIaXRU
ZXN0UmVzdWx0OjpIaXRUZXN0UmVzdWx0KGNvbnN0IExheW91dFBvaW50JiBjZW50ZXJQb2ludCwg
dW5zaWduZWQgdG9wUGFkZGluZywgdW5zaWduZWQgcmlnaHRQYWRkaW5nLCB1bnNpZ25lZCBib3R0
b21QYWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGluZykKICAgICA6IEhpdFRlc3RMb2NhdGlvbihj
ZW50ZXJQb2ludCwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0
UGFkZGluZykKICAgICAsIG1faXNPdmVyV2lkZ2V0KGZhbHNlKQotICAgICwgbV9zaGFkb3dDb250
ZW50RmlsdGVyUG9saWN5KGFsbG93U2hhZG93Q29udGVudCkKIHsKIH0KIAotSGl0VGVzdFJlc3Vs
dDo6SGl0VGVzdFJlc3VsdChjb25zdCBIaXRUZXN0TG9jYXRpb24mIG90aGVyLCBTaGFkb3dDb250
ZW50RmlsdGVyUG9saWN5IGFsbG93U2hhZG93Q29udGVudCkKK0hpdFRlc3RSZXN1bHQ6OkhpdFRl
c3RSZXN1bHQoY29uc3QgSGl0VGVzdExvY2F0aW9uJiBvdGhlcikKICAgICA6IEhpdFRlc3RMb2Nh
dGlvbihvdGhlcikKICAgICAsIG1faXNPdmVyV2lkZ2V0KGZhbHNlKQotICAgICwgbV9zaGFkb3dD
b250ZW50RmlsdGVyUG9saWN5KGFsbG93U2hhZG93Q29udGVudCkKIHsKIH0KIApAQCAtMjI2LDcg
KzIyMiw2IEBAIEhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQoY29uc3QgSGl0VGVzdFJlc3Vs
dCYgb3RoZXIpCiAgICAgLCBtX2lubmVyVVJMRWxlbWVudChvdGhlci5VUkxFbGVtZW50KCkpCiAg
ICAgLCBtX3Njcm9sbGJhcihvdGhlci5zY3JvbGxiYXIoKSkKICAgICAsIG1faXNPdmVyV2lkZ2V0
KG90aGVyLmlzT3ZlcldpZGdldCgpKQotICAgICwgbV9zaGFkb3dDb250ZW50RmlsdGVyUG9saWN5
KG90aGVyLnNoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3koKSkKIHsKICAgICAvLyBPbmx5IGNvcHkg
dGhlIE5vZGVTZXQgaW4gY2FzZSBvZiByZWN0IGhpdCB0ZXN0LgogICAgIG1fcmVjdEJhc2VkVGVz
dFJlc3VsdCA9IGFkb3B0UHRyKG90aGVyLm1fcmVjdEJhc2VkVGVzdFJlc3VsdCA/IG5ldyBOb2Rl
U2V0KCpvdGhlci5tX3JlY3RCYXNlZFRlc3RSZXN1bHQpIDogMCk7CkBAIC0yNDgsNyArMjQzLDYg
QEAgSGl0VGVzdFJlc3VsdCYgSGl0VGVzdFJlc3VsdDo6b3BlcmF0b3I9KGNvbnN0IEhpdFRlc3RS
ZXN1bHQmIG90aGVyKQogCiAgICAgLy8gT25seSBjb3B5IHRoZSBOb2RlU2V0IGluIGNhc2Ugb2Yg
cmVjdCBoaXQgdGVzdC4KICAgICBtX3JlY3RCYXNlZFRlc3RSZXN1bHQgPSBhZG9wdFB0cihvdGhl
ci5tX3JlY3RCYXNlZFRlc3RSZXN1bHQgPyBuZXcgTm9kZVNldCgqb3RoZXIubV9yZWN0QmFzZWRU
ZXN0UmVzdWx0KSA6IDApOwotICAgIG1fc2hhZG93Q29udGVudEZpbHRlclBvbGljeSAgPSBvdGhl
ci5zaGFkb3dDb250ZW50RmlsdGVyUG9saWN5KCk7CiAKICAgICByZXR1cm4gKnRoaXM7CiB9CkBA
IC02NzQsNyArNjY4LDcgQEAgYm9vbCBIaXRUZXN0UmVzdWx0Ojppc0NvbnRlbnRFZGl0YWJsZSgp
IGNvbnN0CiAgICAgcmV0dXJuIG1faW5uZXJOb25TaGFyZWROb2RlLT5yZW5kZXJlcklzRWRpdGFi
bGUoKTsKIH0KIAotYm9vbCBIaXRUZXN0UmVzdWx0OjphZGROb2RlVG9SZWN0QmFzZWRUZXN0UmVz
dWx0KE5vZGUqIG5vZGUsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5l
ciwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkKK2Jvb2wgSGl0VGVzdFJlc3VsdDo6YWRkTm9kZVRv
UmVjdEJhc2VkVGVzdFJlc3VsdChOb2RlKiBub2RlLCBjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBM
YXlvdXRSZWN0JiByZWN0KQogewogICAgIC8vIElmIGl0IGlzIG5vdCBhIHJlY3QtYmFzZWQgaGl0
IHRlc3QsIHRoaXMgbWV0aG9kIGhhcyB0byBiZSBuby1vcC4KICAgICAvLyBSZXR1cm4gZmFsc2Us
IHNvIHRoZSBoaXQgdGVzdCBzdG9wcy4KQEAgLTY4NSw3ICs2NzksNyBAQCBib29sIEhpdFRlc3RS
ZXN1bHQ6OmFkZE5vZGVUb1JlY3RCYXNlZFRlc3RSZXN1bHQoTm9kZSogbm9kZSwgY29uc3QgSGl0
VGVzdExvY2F0aQogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBp
ZiAobV9zaGFkb3dDb250ZW50RmlsdGVyUG9saWN5ID09IERvTm90QWxsb3dTaGFkb3dDb250ZW50
KQorICAgIGlmICghcmVxdWVzdC5hbGxvd1NoYWRvd0NvbnRlbnQoKSkKICAgICAgICAgbm9kZSA9
IG5vZGUtPnNoYWRvd0FuY2VzdG9yTm9kZSgpOwogCiAgICAgbXV0YWJsZVJlY3RCYXNlZFRlc3RS
ZXN1bHQoKS5hZGQobm9kZSk7CkBAIC03MDksNyArNzAzLDcgQEAgYm9vbCBIaXRUZXN0UmVzdWx0
OjphZGROb2RlVG9SZWN0QmFzZWRUZXN0UmVzdWx0KE5vZGUqIG5vZGUsIGNvbnN0IEhpdFRlc3RM
b2NhdGkKICAgICByZXR1cm4gIXJlZ2lvbkZpbGxlZDsKIH0KIAotYm9vbCBIaXRUZXN0UmVzdWx0
OjphZGROb2RlVG9SZWN0QmFzZWRUZXN0UmVzdWx0KE5vZGUqIG5vZGUsIGNvbnN0IEhpdFRlc3RM
b2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQorYm9v
bCBIaXRUZXN0UmVzdWx0OjphZGROb2RlVG9SZWN0QmFzZWRUZXN0UmVzdWx0KE5vZGUqIG5vZGUs
IGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxv
Y2F0aW9uSW5Db250YWluZXIsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKICAgICAvLyBJZiBp
dCBpcyBub3QgYSByZWN0LWJhc2VkIGhpdCB0ZXN0LCB0aGlzIG1ldGhvZCBoYXMgdG8gYmUgbm8t
b3AuCiAgICAgLy8gUmV0dXJuIGZhbHNlLCBzbyB0aGUgaGl0IHRlc3Qgc3RvcHMuCkBAIC03MjAs
NyArNzE0LDcgQEAgYm9vbCBIaXRUZXN0UmVzdWx0OjphZGROb2RlVG9SZWN0QmFzZWRUZXN0UmVz
dWx0KE5vZGUqIG5vZGUsIGNvbnN0IEhpdFRlc3RMb2NhdGkKICAgICBpZiAoIW5vZGUpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKG1fc2hhZG93Q29udGVudEZpbHRlclBvbGljeSA9
PSBEb05vdEFsbG93U2hhZG93Q29udGVudCkKKyAgICBpZiAoIXJlcXVlc3QuYWxsb3dTaGFkb3dD
b250ZW50KCkpCiAgICAgICAgIG5vZGUgPSBub2RlLT5zaGFkb3dBbmNlc3Rvck5vZGUoKTsKIAog
ICAgIG11dGFibGVSZWN0QmFzZWRUZXN0UmVzdWx0KCkuYWRkKG5vZGUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKaW5kZXggYTE0ZTFkOGZjNzk2MzIyOGQyMDhiZjMw
YTU0ZjFlMWI1NjBmZTEwNi4uYmFjOTZhMmIxZjkyYTY1NTU4Y2ZlYjM3MWIwYTJhMmY3YmE1MzM3
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCkBAIC00NSw4ICs0
NSw2IEBAIGNsYXNzIE5vZGU7CiBjbGFzcyBSZW5kZXJSZWdpb247CiBjbGFzcyBTY3JvbGxiYXI7
CiAKLWVudW0gU2hhZG93Q29udGVudEZpbHRlclBvbGljeSB7IERvTm90QWxsb3dTaGFkb3dDb250
ZW50LCBBbGxvd1NoYWRvd0NvbnRlbnQgfTsKLQogY2xhc3MgSGl0VGVzdExvY2F0aW9uIHsKIHB1
YmxpYzoKIApAQCAtNTcsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgLy8gUGFzcyBub24temVybyBw
YWRkaW5nIHZhbHVlcyB0byBwZXJmb3JtIGEgcmVjdC1iYXNlZCBoaXQgdGVzdC4KICAgICBIaXRU
ZXN0TG9jYXRpb24oY29uc3QgTGF5b3V0UG9pbnQmIGNlbnRlclBvaW50LCB1bnNpZ25lZCB0b3BQ
YWRkaW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcsIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVu
c2lnbmVkIGxlZnRQYWRkaW5nKTsKICAgICAvLyBNYWtlIGEgY29weSB0aGUgSGl0VGVzdExvY2F0
aW9uIGluIGEgbmV3IHJlZ2lvbiBieSBhcHBseWluZyBnaXZlbiBvZmZzZXQgdG8gaW50ZXJuYWwg
cG9pbnQgYW5kIGFyZWEuCi0gICAgSGl0VGVzdExvY2F0aW9uKGNvbnN0IEhpdFRlc3RMb2NhdGlv
biYsIGNvbnN0IExheW91dFNpemUmIG9mZnNldCwgUmVuZGVyUmVnaW9uKik7CisgICAgSGl0VGVz
dExvY2F0aW9uKGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYsIGNvbnN0IExheW91dFNpemUmIG9mZnNl
dCwgUmVuZGVyUmVnaW9uKiA9IDApOwogICAgIEhpdFRlc3RMb2NhdGlvbihjb25zdCBIaXRUZXN0
TG9jYXRpb24mKTsKICAgICB+SGl0VGVzdExvY2F0aW9uKCk7CiAgICAgSGl0VGVzdExvY2F0aW9u
JiBvcGVyYXRvcj0oY29uc3QgSGl0VGVzdExvY2F0aW9uJik7CkBAIC0xMDksOCArMTA3LDggQEAg
cHVibGljOgogICAgIEhpdFRlc3RSZXN1bHQoKTsKICAgICBIaXRUZXN0UmVzdWx0KGNvbnN0IExh
eW91dFBvaW50Jik7CiAgICAgLy8gUGFzcyBub24tbmVnYXRpdmUgcGFkZGluZyB2YWx1ZXMgdG8g
cGVyZm9ybSBhIHJlY3QtYmFzZWQgaGl0IHRlc3QuCi0gICAgSGl0VGVzdFJlc3VsdChjb25zdCBM
YXlvdXRQb2ludCYgY2VudGVyUG9pbnQsIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJp
Z2h0UGFkZGluZywgdW5zaWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcs
IFNoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3kpOwotICAgIEhpdFRlc3RSZXN1bHQoY29uc3QgSGl0
VGVzdExvY2F0aW9uJiwgU2hhZG93Q29udGVudEZpbHRlclBvbGljeSk7CisgICAgSGl0VGVzdFJl
c3VsdChjb25zdCBMYXlvdXRQb2ludCYgY2VudGVyUG9pbnQsIHVuc2lnbmVkIHRvcFBhZGRpbmcs
IHVuc2lnbmVkIHJpZ2h0UGFkZGluZywgdW5zaWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQg
bGVmdFBhZGRpbmcpOworICAgIEhpdFRlc3RSZXN1bHQoY29uc3QgSGl0VGVzdExvY2F0aW9uJik7
CiAgICAgSGl0VGVzdFJlc3VsdChjb25zdCBIaXRUZXN0UmVzdWx0Jik7CiAgICAgfkhpdFRlc3RS
ZXN1bHQoKTsKICAgICBIaXRUZXN0UmVzdWx0JiBvcGVyYXRvcj0oY29uc3QgSGl0VGVzdFJlc3Vs
dCYpOwpAQCAtMTI1LDcgKzEyMyw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFRvTm9uU2hhZG93
QW5jZXN0b3IoKTsKIAogICAgIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgaGl0VGVzdExvY2F0aW9u
KCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KLSAgICBTaGFkb3dDb250ZW50RmlsdGVyUG9saWN5
IHNoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3koKSBjb25zdCB7IHJldHVybiBtX3NoYWRvd0NvbnRl
bnRGaWx0ZXJQb2xpY3k7IH0KIAogICAgIHZvaWQgc2V0SW5uZXJOb2RlKE5vZGUqKTsKICAgICB2
b2lkIHNldElubmVyTm9uU2hhcmVkTm9kZShOb2RlKik7CkBAIC0xNjYsOCArMTYzLDggQEAgcHVi
bGljOgogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIGl0IGlzIHJlY3QtYmFzZWQgaGl0IHRlc3Qg
YW5kIG5lZWRzIHRvIGNvbnRpbnVlIHVudGlsIHRoZSByZWN0IGlzIGZ1bGx5CiAgICAgLy8gZW5j
bG9zZWQgYnkgdGhlIGJvdW5kYXJpZXMgb2YgYSBub2RlLgotICAgIGJvb2wgYWRkTm9kZVRvUmVj
dEJhc2VkVGVzdFJlc3VsdChOb2RlKiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbklu
Q29udGFpbmVyLCBjb25zdCBMYXlvdXRSZWN0JiA9IExheW91dFJlY3QoKSk7Ci0gICAgYm9vbCBh
ZGROb2RlVG9SZWN0QmFzZWRUZXN0UmVzdWx0KE5vZGUqLCBjb25zdCBIaXRUZXN0TG9jYXRpb24m
IGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IEZsb2F0UmVjdCYpOworICAgIGJvb2wgYWRkTm9k
ZVRvUmVjdEJhc2VkVGVzdFJlc3VsdChOb2RlKiwgY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBjb25z
dCBIaXRUZXN0TG9jYXRpb24mIHBvaW50SW5Db250YWluZXIsIGNvbnN0IExheW91dFJlY3QmID0g
TGF5b3V0UmVjdCgpKTsKKyAgICBib29sIGFkZE5vZGVUb1JlY3RCYXNlZFRlc3RSZXN1bHQoTm9k
ZSosIGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBwb2ludElu
Q29udGFpbmVyLCBjb25zdCBGbG9hdFJlY3QmKTsKICAgICB2b2lkIGFwcGVuZChjb25zdCBIaXRU
ZXN0UmVzdWx0Jik7CiAKICAgICAvLyBJZiBtX3JlY3RCYXNlZFRlc3RSZXN1bHQgaXMgMCB0aGVu
IHNldCBpdCB0byBhIG5ldyBOb2RlU2V0LiBSZXR1cm4gKm1fcmVjdEJhc2VkVGVzdFJlc3VsdC4g
TGF6eSBhbGxvY2F0aW9uIG1ha2VzCkBAIC0xOTQsOCArMTkxLDYgQEAgcHJpdmF0ZToKICAgICBS
ZWZQdHI8U2Nyb2xsYmFyPiBtX3Njcm9sbGJhcjsKICAgICBib29sIG1faXNPdmVyV2lkZ2V0OyAv
LyBSZXR1cm5zIHRydWUgaWYgd2UgYXJlIG92ZXIgYSB3aWRnZXQgKGFuZCBub3QgaW4gdGhlIGJv
cmRlci9wYWRkaW5nIGFyZWEgb2YgYSBSZW5kZXJXaWRnZXQgZm9yIGV4YW1wbGUpLgogCi0gICAg
U2hhZG93Q29udGVudEZpbHRlclBvbGljeSBtX3NoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3k7Ci0K
ICAgICBtdXRhYmxlIE93blB0cjxOb2RlU2V0PiBtX3JlY3RCYXNlZFRlc3RSZXN1bHQ7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKaW5kZXggNjE1YTRi
MGIxZGVjYjE0MzBhYmQ5N2Q0YjI4YmQxNGUzY2E0MDI4My4uNGRiY2NkZWZlYjc5YzVjZGM5YzE3
Njk5OTgzYzllYTZjMzJkMDlhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0lubGluZUZsb3dCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVG
bG93Qm94LmNwcApAQCAtMTAxMiw3ICsxMDEyLDcgQEAgYm9vbCBJbmxpbmVGbG93Qm94Ojpub2Rl
QXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmUK
IAogICAgIGlmICh2aXNpYmxlVG9IaXRUZXN0aW5nKCkgJiYgbG9jYXRpb25JbkNvbnRhaW5lci5p
bnRlcnNlY3RzKHJlY3QpKSB7CiAgICAgICAgIHJlbmRlcmVyKCktPnVwZGF0ZUhpdFRlc3RSZXN1
bHQocmVzdWx0LCBmbGlwRm9yV3JpdGluZ01vZGUobG9jYXRpb25JbkNvbnRhaW5lci5wb2ludCgp
IC0gdG9MYXlvdXRTaXplKGFjY3VtdWxhdGVkT2Zmc2V0KSkpOyAvLyBEb24ndCBhZGQgaW4gbV94
IG9yIG1feSBoZXJlLCB3ZSB3YW50IGNvb3JkcyBpbiB0aGUgY29udGFpbmluZyBibG9jaydzIHNw
YWNlLgotICAgICAgICBpZiAoIXJlc3VsdC5hZGROb2RlVG9SZWN0QmFzZWRUZXN0UmVzdWx0KHJl
bmRlcmVyKCktPm5vZGUoKSwgbG9jYXRpb25JbkNvbnRhaW5lciwgcmVjdCkpCisgICAgICAgIGlm
ICghcmVzdWx0LmFkZE5vZGVUb1JlY3RCYXNlZFRlc3RSZXN1bHQocmVuZGVyZXIoKS0+bm9kZSgp
LCByZXF1ZXN0LCBsb2NhdGlvbkluQ29udGFpbmVyLCByZWN0KSkKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lu
bGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3gu
Y3BwCmluZGV4IDkyZDA1YTM4MjFhMmZmZTllODBkMzM1OTdlNTI0N2Q0ZjhlZThiZTQuLjViYzNi
NzY1MjVjMWYwNGI3M2Y3YTYzNzU1ZDYwMzU2MTk0ZmZjN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKQEAgLTM0OSw3ICszNDksNyBAQCBib29sIElubGlu
ZVRleHRCb3g6OmlzTGluZUJyZWFrKCkgY29uc3QKICAgICByZXR1cm4gcmVuZGVyZXIoKS0+aXNC
UigpIHx8IChyZW5kZXJlcigpLT5zdHlsZSgpLT5wcmVzZXJ2ZU5ld2xpbmUoKSAmJiBsZW4oKSA9
PSAxICYmICgqdGV4dFJlbmRlcmVyKCktPnRleHQoKSlbc3RhcnQoKV0gPT0gJ1xuJyk7CiB9CiAK
LWJvb2wgSW5saW5lVGV4dEJveDo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBI
aXRUZXN0UmVzdWx0JiByZXN1bHQsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNv
bnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBMYXlvdXRVbml0
IC8qIGxpbmVUb3AgKi8sIExheW91dFVuaXQgLypsaW5lQm90dG9tKi8pCitib29sIElubGluZVRl
eHRCb3g6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0
UmVzdWx0JiByZXN1bHQsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5l
ciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBMYXlvdXRVbml0IC8qIGxp
bmVUb3AgKi8sIExheW91dFVuaXQgLypsaW5lQm90dG9tKi8pCiB7CiAgICAgaWYgKGlzTGluZUJy
ZWFrKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM1OSw3ICszNTksNyBAQCBib29sIElu
bGluZVRleHRCb3g6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJl
c3VsdCYgcmVzdWx0LCBjbwogICAgIEZsb2F0UmVjdCByZWN0KGJveE9yaWdpbiwgc2l6ZSgpKTsK
ICAgICBpZiAobV90cnVuY2F0aW9uICE9IGNGdWxsVHJ1bmNhdGlvbiAmJiB2aXNpYmxlVG9IaXRU
ZXN0aW5nKCkgJiYgbG9jYXRpb25JbkNvbnRhaW5lci5pbnRlcnNlY3RzKHJlY3QpKSB7CiAgICAg
ICAgIHJlbmRlcmVyKCktPnVwZGF0ZUhpdFRlc3RSZXN1bHQocmVzdWx0LCBmbGlwRm9yV3JpdGlu
Z01vZGUobG9jYXRpb25JbkNvbnRhaW5lci5wb2ludCgpIC0gdG9MYXlvdXRTaXplKGFjY3VtdWxh
dGVkT2Zmc2V0KSkpOwotICAgICAgICBpZiAoIXJlc3VsdC5hZGROb2RlVG9SZWN0QmFzZWRUZXN0
UmVzdWx0KHJlbmRlcmVyKCktPm5vZGUoKSwgbG9jYXRpb25JbkNvbnRhaW5lciwgcmVjdCkpCisg
ICAgICAgIGlmICghcmVzdWx0LmFkZE5vZGVUb1JlY3RCYXNlZFRlc3RSZXN1bHQocmVuZGVyZXIo
KS0+bm9kZSgpLCByZXF1ZXN0LCBsb2NhdGlvbkluQ29udGFpbmVyLCByZWN0KSkKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCA1MDZhNTBhOTBhZTlkYTBmNjlhZGY2Y2Y1
Mzg3Yjk0NTY1Mzk3MTUzLi40NDI1ZDlhYTM5ZmE0NjZhOTcwOTY1MjZhMmRhYTE0MzFjN2E0ODEz
IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTQ2OTksNyAr
NDY5OSw3IEBAIGJvb2wgUmVuZGVyQmxvY2s6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1
ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1CiAgICAgaWYgKChoaXRUZXN0QWN0aW9u
ID09IEhpdFRlc3RCbG9ja0JhY2tncm91bmQgfHwgaGl0VGVzdEFjdGlvbiA9PSBIaXRUZXN0Q2hp
bGRCbG9ja0JhY2tncm91bmQpICYmIGlzUG9pbnRJbk92ZXJmbG93Q29udHJvbChyZXN1bHQsIGxv
Y2F0aW9uSW5Db250YWluZXIucG9pbnQoKSwgYWRqdXN0ZWRMb2NhdGlvbikpIHsKICAgICAgICAg
dXBkYXRlSGl0VGVzdFJlc3VsdChyZXN1bHQsIGxvY2F0aW9uSW5Db250YWluZXIucG9pbnQoKSAt
IGxvY2FsT2Zmc2V0KTsKICAgICAgICAgLy8gRklYTUU6IGlzUG9pbnRJbk92ZXJmbG93Q29udHJv
bCgpIGRvZXNuJ3QgaGFuZGxlIHJlY3QtYmFzZWQgdGVzdHMgeWV0LgotICAgICAgICBpZiAoIXJl
c3VsdC5hZGROb2RlVG9SZWN0QmFzZWRUZXN0UmVzdWx0KG5vZGUoKSwgbG9jYXRpb25JbkNvbnRh
aW5lcikpCisgICAgICAgIGlmICghcmVzdWx0LmFkZE5vZGVUb1JlY3RCYXNlZFRlc3RSZXN1bHQo
bm9kZSgpLCByZXF1ZXN0LCBsb2NhdGlvbkluQ29udGFpbmVyKSkKICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogCkBAIC00NzMyLDcgKzQ3MzIsNyBAQCBib29sIFJlbmRlckJsb2NrOjpu
b2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYg
cmVzdQogICAgICAgICBMYXlvdXRSZWN0IGJvdW5kc1JlY3QoYWRqdXN0ZWRMb2NhdGlvbiwgc2l6
ZSgpKTsKICAgICAgICAgaWYgKHZpc2libGVUb0hpdFRlc3RpbmcoKSAmJiBsb2NhdGlvbkluQ29u
dGFpbmVyLmludGVyc2VjdHMoYm91bmRzUmVjdCkpIHsKICAgICAgICAgICAgIHVwZGF0ZUhpdFRl
c3RSZXN1bHQocmVzdWx0LCBmbGlwRm9yV3JpdGluZ01vZGUobG9jYXRpb25JbkNvbnRhaW5lci5w
b2ludCgpIC0gbG9jYWxPZmZzZXQpKTsKLSAgICAgICAgICAgIGlmICghcmVzdWx0LmFkZE5vZGVU
b1JlY3RCYXNlZFRlc3RSZXN1bHQobm9kZSgpLCBsb2NhdGlvbkluQ29udGFpbmVyLCBib3VuZHNS
ZWN0KSkKKyAgICAgICAgICAgIGlmICghcmVzdWx0LmFkZE5vZGVUb1JlY3RCYXNlZFRlc3RSZXN1
bHQobm9kZSgpLCByZXF1ZXN0LCBsb2NhdGlvbkluQ29udGFpbmVyLCBib3VuZHNSZWN0KSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggNTFlYjRhMTM4YTYxMDM2YWYyYjc5NTlmOGJl
OGU3OWI2OWZlNjNjYy4uNDQ3MDcxOTFkMGVmYjU0Zjg2MzQyMWI1OTIxYzUyNWExMDk3Mzg2ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTc3Niw3ICs3NzYsNyBA
QCBib29sIFJlbmRlckJveDo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVl
c3QsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdAogICAgIGJvdW5kc1JlY3QubW92ZUJ5KGFkanVzdGVk
TG9jYXRpb24pOwogICAgIGlmICh2aXNpYmxlVG9IaXRUZXN0aW5nKCkgJiYgYWN0aW9uID09IEhp
dFRlc3RGb3JlZ3JvdW5kICYmIGxvY2F0aW9uSW5Db250YWluZXIuaW50ZXJzZWN0cyhib3VuZHNS
ZWN0KSkgewogICAgICAgICB1cGRhdGVIaXRUZXN0UmVzdWx0KHJlc3VsdCwgbG9jYXRpb25JbkNv
bnRhaW5lci5wb2ludCgpIC0gdG9MYXlvdXRTaXplKGFkanVzdGVkTG9jYXRpb24pKTsKLSAgICAg
ICAgaWYgKCFyZXN1bHQuYWRkTm9kZVRvUmVjdEJhc2VkVGVzdFJlc3VsdChub2RlKCksIGxvY2F0
aW9uSW5Db250YWluZXIsIGJvdW5kc1JlY3QpKQorICAgICAgICBpZiAoIXJlc3VsdC5hZGROb2Rl
VG9SZWN0QmFzZWRUZXN0UmVzdWx0KG5vZGUoKSwgcmVxdWVzdCwgbG9jYXRpb25JbkNvbnRhaW5l
ciwgYm91bmRzUmVjdCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5jcHAKaW5kZXggYWE4Mjg3MGQ0
ZWZhOGFkYmM4MTk2ZmRkNmE1MDZmNTk4Y2IwNzUzNy4uMTNlMGIwZjMyNzVkYjVmODQ5MDZiMDg2
ZGJlMTdkZDJiZmJkODg5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZyYW1lQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZy
YW1lQmFzZS5jcHAKQEAgLTI5LDYgKzI5LDggQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1
ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZUVsZW1lbnRCYXNlLmgiCisjaW5j
bHVkZSAiSGl0VGVzdFJlc3VsdC5oIgorI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyVmlldy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMDQsNCArMTA2LDMx
IEBAIHZvaWQgUmVuZGVyRnJhbWVCYXNlOjpsYXlvdXRXaXRoRmxhdHRlbmluZyhib29sIGhhc0Zp
eGVkV2lkdGgsIGJvb2wgaGFzRml4ZWRIZWlnCiAgICAgc2V0TmVlZHNMYXlvdXQoZmFsc2UpOwog
fQogCitib29sIFJlbmRlckZyYW1lQmFzZTo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVl
c3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3QgSGl0VGVzdExvY2F0aW9u
JiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZz
ZXQsIEhpdFRlc3RBY3Rpb24gYWN0aW9uKQoreworICAgIGlmIChyZXF1ZXN0LmFsbG93Q2hpbGRG
cmFtZUNvbnRlbnQoKSkgeworICAgICAgICBGcmFtZVZpZXcqIGNoaWxkRnJhbWVWaWV3ID0gc3Rh
dGljX2Nhc3Q8RnJhbWVWaWV3Kj4od2lkZ2V0KCkpOworICAgICAgICBSZW5kZXJWaWV3KiBjaGls
ZFJvb3QgPSBjaGlsZEZyYW1lVmlldyA/IHN0YXRpY19jYXN0PFJlbmRlclZpZXcqPihjaGlsZEZy
YW1lVmlldy0+ZnJhbWUoKS0+Y29udGVudFJlbmRlcmVyKCkpIDogMDsKKyAgICAgICAgaWYgKGNo
aWxkUm9vdCkgeworICAgICAgICAgICAgSGl0VGVzdExvY2F0aW9uIG5ld0hpdFRlc3RMb2NhdGlv
bihsb2NhdGlvbkluQ29udGFpbmVyLCAtbG9jYXRpb24oKSAtIGFjY3VtdWxhdGVkT2Zmc2V0KTsK
KyAgICAgICAgICAgIEhpdFRlc3RSZXF1ZXN0IG5ld0hpdFRlc3RSZXF1ZXN0KHJlcXVlc3QudHlw
ZSgpIHwgSGl0VGVzdFJlcXVlc3Q6OkNoaWxkRnJhbWVIaXRUZXN0KTsKKworICAgICAgICAgICAg
Ym9vbCBpc0luc2lkZUNoaWxkRnJhbWUgPSBjaGlsZFJvb3QtPmxheWVyKCktPmhpdFRlc3QobmV3
SGl0VGVzdFJlcXVlc3QsIG5ld0hpdFRlc3RMb2NhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgICAg
IGlmIChpc0luc2lkZUNoaWxkRnJhbWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisK
KyAgICAgICAgICAgIGlmIChyZXF1ZXN0LnRlc3RDaGlsZEZyYW1lU2Nyb2xsQmFycygpKSB7Cisg
ICAgICAgICAgICAgICAgLy8gU2Nyb2xsVmlldyBzY3JvbGxiYXJzIGFyZSBub3QgdGhlIHNhbWUg
YXMgUmVuZGVyTGF5ZXIgc2Nyb2xsYmFycyB0ZXN0ZWQgYnkgUmVuZGVyTGF5ZXI6OmhpdFRlc3RP
dmVyZmxvd0NvbnRyb2xzLAorICAgICAgICAgICAgICAgIC8vIHNvIHdlIG5lZWQgdG8gdGVzdCBT
Y3JvbGxWaWV3IHNjcm9sbGJhcnMgc2VwYXJhdGVseSBoZXJlLgorICAgICAgICAgICAgICAgIC8v
IEZJWE1FOiBDb25zaWRlciBpZiB0aGlzIHRlc3QgY291bGQgYmUgZG9uZSB1bmNvbmRpdGlvbmFs
bHkuCisgICAgICAgICAgICAgICAgU2Nyb2xsYmFyKiBmcmFtZVNjcm9sbGJhciA9IGNoaWxkRnJh
bWVWaWV3LT5zY3JvbGxiYXJBdFBvaW50KG5ld0hpdFRlc3RMb2NhdGlvbi5yb3VuZGVkUG9pbnQo
KSk7CisgICAgICAgICAgICAgICAgaWYgKGZyYW1lU2Nyb2xsYmFyKQorICAgICAgICAgICAgICAg
ICAgICByZXN1bHQuc2V0U2Nyb2xsYmFyKGZyYW1lU2Nyb2xsYmFyKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBSZW5kZXJQYXJ0Ojpub2RlQXRQb2ludChy
ZXF1ZXN0LCByZXN1bHQsIGxvY2F0aW9uSW5Db250YWluZXIsIGFjY3VtdWxhdGVkT2Zmc2V0LCBh
Y3Rpb24pOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRnJhbWVCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNl
LmgKaW5kZXggNGZhZDU2MGM1YjMzN2Y5NmI4MTNiMGNiNzkwNTQ1MzYyZGM2Njg3Yy4uYTdkZWVk
YWIxMDI4M2RmNjk1NDE4ZWRlMGZiYjk0ZDQ5ZTEyZTQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuaApAQCAtMzYsNiArMzYsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgZXhwbGljaXQgUmVuZGVyRnJhbWVCYXNlKEVsZW1lbnQqKTsKIAogcHVibGljOgorICAgIHZp
cnR1YWwgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1
bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExh
eW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbikgT1ZFUlJJREU7CiAg
ICAgdm9pZCBsYXlvdXRXaXRoRmxhdHRlbmluZyhib29sIGZpeGVkV2lkdGgsIGJvb2wgZml4ZWRI
ZWlnaHQpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5k
ZXggNzMxODM3ZTExN2M1MGE2M2EyNzJmMjBjYjdmZmI5MzEyYmMxYmRlOS4uMTk1M2Y1MzMxZTE1
ODk0ZDNkNTIwNmQ5NmM4Mjc3Nzk4MDExYmIyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW1hZ2UuY3BwCkBAIC01MDEsNyArNTAxLDcgQEAgSFRNTE1hcEVsZW1lbnQqIFJlbmRl
ckltYWdlOjppbWFnZU1hcCgpIGNvbnN0CiAKIGJvb2wgUmVuZGVySW1hZ2U6Om5vZGVBdFBvaW50
KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGNv
bnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9p
bnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uIGhpdFRlc3RBY3Rpb24pCiB7Ci0g
ICAgSGl0VGVzdFJlc3VsdCB0ZW1wUmVzdWx0KHJlc3VsdC5oaXRUZXN0TG9jYXRpb24oKSwgcmVz
dWx0LnNoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3koKSk7CisgICAgSGl0VGVzdFJlc3VsdCB0ZW1w
UmVzdWx0KHJlc3VsdC5oaXRUZXN0TG9jYXRpb24oKSk7CiAgICAgYm9vbCBpbnNpZGUgPSBSZW5k
ZXJSZXBsYWNlZDo6bm9kZUF0UG9pbnQocmVxdWVzdCwgdGVtcFJlc3VsdCwgbG9jYXRpb25JbkNv
bnRhaW5lciwgYWNjdW11bGF0ZWRPZmZzZXQsIGhpdFRlc3RBY3Rpb24pOwogCiAgICAgaWYgKHRl
bXBSZXN1bHQuaW5uZXJOb2RlKCkgJiYgbm9kZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmNwcAppbmRleCA5NWRlOTM4NWI1YTdiOGVmMTgzNzQ3NzY1OTUzYTlmOTU3
Y2UwZDMyLi45NmZlNDY4MDJhOTA5N2JmYzY5NGY3MzJjZjJmMGZiNGFkOTIyMTEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTM0NDYsNyArMzQ0Niw3IEBA
IGJvb2wgUmVuZGVyTGF5ZXI6OmhpdFRlc3QoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYKICAgICAgICAgLy8gV2UgZGlkbid0IGhpdCBhbnkgbGF5
ZXIuIElmIHdlIGFyZSB0aGUgcm9vdCBsYXllciBhbmQgdGhlIG1vdXNlIGlzIC0tIG9yIGp1c3Qg
d2FzIC0tIGRvd24sIAogICAgICAgICAvLyByZXR1cm4gb3Vyc2VsdmVzLiBXZSBkbyB0aGlzIHNv
IG1vdXNlIGV2ZW50cyBjb250aW51ZSBnZXR0aW5nIGRlbGl2ZXJlZCBhZnRlciBhIGRyYWcgaGFz
IAogICAgICAgICAvLyBleGl0ZWQgdGhlIFdlYlZpZXcsIGFuZCBzbyBoaXQgdGVzdGluZyBvdmVy
IGEgc2Nyb2xsYmFyIGhpdHMgdGhlIGNvbnRlbnQgZG9jdW1lbnQuCi0gICAgICAgIGlmICgocmVx
dWVzdC5hY3RpdmUoKSB8fCByZXF1ZXN0LnJlbGVhc2UoKSkgJiYgaXNSb290TGF5ZXIoKSkgewor
ICAgICAgICBpZiAoIXJlcXVlc3QuY2hpbGRGcmFtZUhpdFRlc3QoKSAmJiAocmVxdWVzdC5hY3Rp
dmUoKSB8fCByZXF1ZXN0LnJlbGVhc2UoKSkgJiYgaXNSb290TGF5ZXIoKSkgewogICAgICAgICAg
ICAgcmVuZGVyZXIoKS0+dXBkYXRlSGl0VGVzdFJlc3VsdChyZXN1bHQsIHRvUmVuZGVyVmlldyhy
ZW5kZXJlcigpKS0+ZmxpcEZvcldyaXRpbmdNb2RlKHJlc3VsdC5wb2ludCgpKSk7CiAgICAgICAg
ICAgICBpbnNpZGVMYXllciA9IHRoaXM7CiAgICAgICAgIH0KQEAgLTM2ODIsNyArMzY4Miw3IEBA
IFJlbmRlckxheWVyKiBSZW5kZXJMYXllcjo6aGl0VGVzdExheWVyKFJlbmRlckxheWVyKiByb290
TGF5ZXIsIFJlbmRlckxheWVyKiBjb250CiAgICAgLy8gTmV4dCB3ZSB3YW50IHRvIHNlZSBpZiB0
aGUgbW91c2UgcG9zIGlzIGluc2lkZSB0aGUgY2hpbGQgUmVuZGVyT2JqZWN0cyBvZiB0aGUgbGF5
ZXIuCiAgICAgaWYgKGZnUmVjdC5pbnRlcnNlY3RzKGhpdFRlc3RMb2NhdGlvbikgJiYgaXNTZWxm
UGFpbnRpbmdMYXllcigpKSB7CiAgICAgICAgIC8vIEhpdCB0ZXN0IHdpdGggYSB0ZW1wb3Jhcnkg
SGl0VGVzdFJlc3VsdCwgYmVjYXVzZSB3ZSBvbmx5IHdhbnQgdG8gY29tbWl0IHRvICdyZXN1bHQn
IGlmIHdlIGtub3cgd2UncmUgZnJvbnRtb3N0LgotICAgICAgICBIaXRUZXN0UmVzdWx0IHRlbXBS
ZXN1bHQocmVzdWx0LmhpdFRlc3RMb2NhdGlvbigpLCByZXN1bHQuc2hhZG93Q29udGVudEZpbHRl
clBvbGljeSgpKTsKKyAgICAgICAgSGl0VGVzdFJlc3VsdCB0ZW1wUmVzdWx0KHJlc3VsdC5oaXRU
ZXN0TG9jYXRpb24oKSk7CiAgICAgICAgIGlmIChoaXRUZXN0Q29udGVudHMocmVxdWVzdCwgdGVt
cFJlc3VsdCwgbGF5ZXJCb3VuZHMsIGhpdFRlc3RMb2NhdGlvbiwgSGl0VGVzdERlc2NlbmRhbnRz
KQogICAgICAgICAgICAgJiYgaXNIaXRDYW5kaWRhdGUodGhpcywgZmFsc2UsIHpPZmZzZXRGb3JD
b250ZW50c1B0ciwgdW5mbGF0dGVuZWRUcmFuc2Zvcm1TdGF0ZS5nZXQoKSkpIHsKICAgICAgICAg
ICAgIGlmIChyZXN1bHQuaXNSZWN0QmFzZWRUZXN0KCkpCkBAIC0zNzExLDcgKzM3MTEsNyBAQCBS
ZW5kZXJMYXllciogUmVuZGVyTGF5ZXI6OmhpdFRlc3RMYXllcihSZW5kZXJMYXllciogcm9vdExh
eWVyLCBSZW5kZXJMYXllciogY29udAogICAgICAgICByZXR1cm4gY2FuZGlkYXRlTGF5ZXI7CiAK
ICAgICBpZiAoYmdSZWN0LmludGVyc2VjdHMoaGl0VGVzdExvY2F0aW9uKSAmJiBpc1NlbGZQYWlu
dGluZ0xheWVyKCkpIHsKLSAgICAgICAgSGl0VGVzdFJlc3VsdCB0ZW1wUmVzdWx0KHJlc3VsdC5o
aXRUZXN0TG9jYXRpb24oKSwgcmVzdWx0LnNoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3koKSk7Cisg
ICAgICAgIEhpdFRlc3RSZXN1bHQgdGVtcFJlc3VsdChyZXN1bHQuaGl0VGVzdExvY2F0aW9uKCkp
OwogICAgICAgICBpZiAoaGl0VGVzdENvbnRlbnRzKHJlcXVlc3QsIHRlbXBSZXN1bHQsIGxheWVy
Qm91bmRzLCBoaXRUZXN0TG9jYXRpb24sIEhpdFRlc3RTZWxmKQogICAgICAgICAgICAgJiYgaXNI
aXRDYW5kaWRhdGUodGhpcywgZmFsc2UsIHpPZmZzZXRGb3JDb250ZW50c1B0ciwgdW5mbGF0dGVu
ZWRUcmFuc2Zvcm1TdGF0ZS5nZXQoKSkpIHsKICAgICAgICAgICAgIGlmIChyZXN1bHQuaXNSZWN0
QmFzZWRUZXN0KCkpCkBAIC0zNzY4LDcgKzM3NjgsNyBAQCBSZW5kZXJMYXllciogUmVuZGVyTGF5
ZXI6OmhpdFRlc3RMaXN0KFZlY3RvcjxSZW5kZXJMYXllcio+KiBsaXN0LCBSZW5kZXJMYXllciog
cgogICAgIGZvciAoaW50IGkgPSBsaXN0LT5zaXplKCkgLSAxOyBpID49IDA7IC0taSkgewogICAg
ICAgICBSZW5kZXJMYXllciogY2hpbGRMYXllciA9IGxpc3QtPmF0KGkpOwogICAgICAgICBSZW5k
ZXJMYXllciogaGl0TGF5ZXIgPSAwOwotICAgICAgICBIaXRUZXN0UmVzdWx0IHRlbXBSZXN1bHQo
cmVzdWx0LmhpdFRlc3RMb2NhdGlvbigpLCByZXN1bHQuc2hhZG93Q29udGVudEZpbHRlclBvbGlj
eSgpKTsKKyAgICAgICAgSGl0VGVzdFJlc3VsdCB0ZW1wUmVzdWx0KHJlc3VsdC5oaXRUZXN0TG9j
YXRpb24oKSk7CiAgICAgICAgIGlmIChjaGlsZExheWVyLT5pc1BhZ2luYXRlZCgpKQogICAgICAg
ICAgICAgaGl0TGF5ZXIgPSBoaXRUZXN0UGFnaW5hdGVkQ2hpbGRMYXllcihjaGlsZExheWVyLCBy
b290TGF5ZXIsIHJlcXVlc3QsIHRlbXBSZXN1bHQsIGhpdFRlc3RSZWN0LCBoaXRUZXN0TG9jYXRp
b24sIHRyYW5zZm9ybVN0YXRlLCB6T2Zmc2V0Rm9yRGVzY2VuZGFudHMpOwogICAgICAgICBlbHNl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwCmluZGV4IGY1NjQzYzc3
MTc1YzdmZjE1M2MwZDQxMzE0MjJmMWVjOTMzYzIyYmMuLmFmMjM2MWU5ZTM0MzIwNTViM2IyMzQ3
MGNmNThlMDgyZmYwODViYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJSZWdpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdp
b24uY3BwCkBAIC0xMzQsNyArMTM0LDcgQEAgYm9vbCBSZW5kZXJSZWdpb246Om5vZGVBdFBvaW50
KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXMKICAgICAg
ICAgaWYgKG1fZmxvd1RocmVhZCAmJiBtX2Zsb3dUaHJlYWQtPmhpdFRlc3RSZWdpb24odGhpcywg
cmVxdWVzdCwgcmVzdWx0LCBsb2NhdGlvbkluQ29udGFpbmVyLCBMYXlvdXRQb2ludChhZGp1c3Rl
ZExvY2F0aW9uLngoKSArIGJvcmRlckxlZnQoKSArIHBhZGRpbmdMZWZ0KCksIGFkanVzdGVkTG9j
YXRpb24ueSgpICsgYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkpKSkKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICB1cGRhdGVIaXRUZXN0UmVzdWx0KHJlc3VsdCwgbG9jYXRpb25J
bkNvbnRhaW5lci5wb2ludCgpIC0gdG9MYXlvdXRTaXplKGFkanVzdGVkTG9jYXRpb24pKTsKLSAg
ICAgICAgaWYgKCFyZXN1bHQuYWRkTm9kZVRvUmVjdEJhc2VkVGVzdFJlc3VsdChub2RlKCksIGxv
Y2F0aW9uSW5Db250YWluZXIsIGJvdW5kc1JlY3QpKQorICAgICAgICBpZiAoIXJlc3VsdC5hZGRO
b2RlVG9SZWN0QmFzZWRUZXN0UmVzdWx0KG5vZGUoKSwgcmVxdWVzdCwgbG9jYXRpb25JbkNvbnRh
aW5lciwgYm91bmRzUmVjdCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCmluZGV4IDRjMzhkNGVmNDU2N2Jl
NGUwOTEwNGM4MmFhMGQwNDc2ODYxMTNiNTQuLmFkYThmZmIyMGZkZTE0ZGIwY2ZlY2IzMmY5M2M4
YjYxYTlmZmY5OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcApA
QCAtMTI5MSw3ICsxMjkxLDcgQEAgYm9vbCBSZW5kZXJUYWJsZTo6bm9kZUF0UG9pbnQoY29uc3Qg
SGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3UKICAgICBMYXlvdXRS
ZWN0IGJvdW5kc1JlY3QoYWRqdXN0ZWRMb2NhdGlvbiwgc2l6ZSgpKTsKICAgICBpZiAodmlzaWJs
ZVRvSGl0VGVzdGluZygpICYmIChhY3Rpb24gPT0gSGl0VGVzdEJsb2NrQmFja2dyb3VuZCB8fCBh
Y3Rpb24gPT0gSGl0VGVzdENoaWxkQmxvY2tCYWNrZ3JvdW5kKSAmJiBsb2NhdGlvbkluQ29udGFp
bmVyLmludGVyc2VjdHMoYm91bmRzUmVjdCkpIHsKICAgICAgICAgdXBkYXRlSGl0VGVzdFJlc3Vs
dChyZXN1bHQsIGZsaXBGb3JXcml0aW5nTW9kZShsb2NhdGlvbkluQ29udGFpbmVyLnBvaW50KCkg
LSB0b0xheW91dFNpemUoYWRqdXN0ZWRMb2NhdGlvbikpKTsKLSAgICAgICAgaWYgKCFyZXN1bHQu
YWRkTm9kZVRvUmVjdEJhc2VkVGVzdFJlc3VsdChub2RlKCksIGxvY2F0aW9uSW5Db250YWluZXIs
IGJvdW5kc1JlY3QpKQorICAgICAgICBpZiAoIXJlc3VsdC5hZGROb2RlVG9SZWN0QmFzZWRUZXN0
UmVzdWx0KG5vZGUoKSwgcmVxdWVzdCwgbG9jYXRpb25JbkNvbnRhaW5lciwgYm91bmRzUmVjdCkp
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCmluZGV4IGM4ZDI2Zjg0MjI5MDhjZjk0YTRh
NDI3Y2I5MzY5YjYxZWI5M2E3MzIuLmY3MTE1ZDkyNjViYjliMWY1MjYxMWI5N2FiZDRmODJhZDdh
Y2I0ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
Um9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290
LmNwcApAQCAtNDI5LDcgKzQyOSw3IEBAIGJvb2wgUmVuZGVyU1ZHUm9vdDo6bm9kZUF0UG9pbnQo
Y29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlCiAgICAgICAg
ICAgICAvLyBGSVhNRTogbm9kZUF0RmxvYXRQb2ludCgpIGRvZXNuJ3QgaGFuZGxlIHJlY3QtYmFz
ZWQgaGl0IHRlc3RzIHlldC4KICAgICAgICAgICAgIGlmIChjaGlsZC0+bm9kZUF0RmxvYXRQb2lu
dChyZXF1ZXN0LCByZXN1bHQsIGxvY2FsUG9pbnQsIGhpdFRlc3RBY3Rpb24pKSB7CiAgICAgICAg
ICAgICAgICAgdXBkYXRlSGl0VGVzdFJlc3VsdChyZXN1bHQsIHBvaW50SW5Cb3JkZXJCb3gpOwot
ICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LmFkZE5vZGVUb1JlY3RCYXNlZFRlc3RSZXN1bHQo
Y2hpbGQtPm5vZGUoKSwgbG9jYXRpb25JbkNvbnRhaW5lcikpCisgICAgICAgICAgICAgICAgaWYg
KCFyZXN1bHQuYWRkTm9kZVRvUmVjdEJhc2VkVGVzdFJlc3VsdChjaGlsZC0+bm9kZSgpLCByZXF1
ZXN0LCBsb2NhdGlvbkluQ29udGFpbmVyKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTQ0NCw3ICs0NDQsNyBAQCBib29sIFJl
bmRlclNWR1Jvb3Q6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBI
aXRUZXN0UmVzdWx0JiByZQogICAgICAgICBMYXlvdXRSZWN0IGJvdW5kc1JlY3QoYWNjdW11bGF0
ZWRPZmZzZXQgKyBsb2NhdGlvbigpLCBzaXplKCkpOwogICAgICAgICBpZiAobG9jYXRpb25JbkNv
bnRhaW5lci5pbnRlcnNlY3RzKGJvdW5kc1JlY3QpKSB7CiAgICAgICAgICAgICB1cGRhdGVIaXRU
ZXN0UmVzdWx0KHJlc3VsdCwgcG9pbnRJbkJvcmRlckJveCk7Ci0gICAgICAgICAgICBpZiAoIXJl
c3VsdC5hZGROb2RlVG9SZWN0QmFzZWRUZXN0UmVzdWx0KG5vZGUoKSwgbG9jYXRpb25JbkNvbnRh
aW5lciwgYm91bmRzUmVjdCkpCisgICAgICAgICAgICBpZiAoIXJlc3VsdC5hZGROb2RlVG9SZWN0
QmFzZWRUZXN0UmVzdWx0KG5vZGUoKSwgcmVxdWVzdCwgbG9jYXRpb25JbkNvbnRhaW5lciwgYm91
bmRzUmVjdCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRC
b3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNw
cAppbmRleCA1YWNmNDdlOTE0N2ZiN2FjNTFhNGQ0MjlkNzdjNDI2MGU2ZDU2YTAwLi43ODY0ZDRl
ZThhMmQwMTA3OTVlMDQwNzA4NjBkNTdiODZkODNkNGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAKQEAgLTcxNiw3ICs3MTYsNyBA
QCBib29sIFNWR0lubGluZVRleHRCb3g6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0
JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JgogICAgICAgICAgICAgRmxvYXRSZWN0IHJlY3QoYm94
T3JpZ2luLCBzaXplKCkpOwogICAgICAgICAgICAgaWYgKGxvY2F0aW9uSW5Db250YWluZXIuaW50
ZXJzZWN0cyhyZWN0KSkgewogICAgICAgICAgICAgICAgIHJlbmRlcmVyKCktPnVwZGF0ZUhpdFRl
c3RSZXN1bHQocmVzdWx0LCBsb2NhdGlvbkluQ29udGFpbmVyLnBvaW50KCkgLSB0b0xheW91dFNp
emUoYWNjdW11bGF0ZWRPZmZzZXQpKTsKLSAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5hZGRO
b2RlVG9SZWN0QmFzZWRUZXN0UmVzdWx0KHJlbmRlcmVyKCktPm5vZGUoKSwgbG9jYXRpb25JbkNv
bnRhaW5lciwgcmVjdCkpCisgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuYWRkTm9kZVRvUmVj
dEJhc2VkVGVzdFJlc3VsdChyZW5kZXJlcigpLT5ub2RlKCksIHJlcXVlc3QsIGxvY2F0aW9uSW5D
b250YWluZXIsIHJlY3QpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRl
eCBjMDE0YWRjNzRmZGY1N2FjZGVhYzk3ODBiMDdlMGE3MWYxMmQzMjRkLi5kMDNmMDNjMGJjNTYx
OWUyNDMyZTdkOGQ2NjQ4ZTM4ZTEwZTdlNWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCkBAIC05NjYsMTQgKzk2NiwxNCBAQCB1bnNpZ25lZCBJbnRlcm5hbHM6OnRvdWNoRXZl
bnRIYW5kbGVyQ291bnQoRG9jdW1lbnQqIGRvY3VtZW50LCBFeGNlcHRpb25Db2RlJiBlYwogfQog
CiBQYXNzUmVmUHRyPE5vZGVMaXN0PiBJbnRlcm5hbHM6Om5vZGVzRnJvbVJlY3QoRG9jdW1lbnQq
IGRvY3VtZW50LCBpbnQgeCwgaW50IHksIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJp
Z2h0UGFkZGluZywKLSAgICB1bnNpZ25lZCBib3R0b21QYWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFk
ZGluZywgYm9vbCBpZ25vcmVDbGlwcGluZywgYm9vbCBhbGxvd1NoYWRvd0NvbnRlbnQsIEV4Y2Vw
dGlvbkNvZGUmIGVjKSBjb25zdAorICAgIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVk
IGxlZnRQYWRkaW5nLCBib29sIGlnbm9yZUNsaXBwaW5nLCBib29sIGFsbG93U2hhZG93Q29udGVu
dCwgYm9vbCBhbGxvd0NoaWxkRnJhbWVDb250ZW50LCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QK
IHsKICAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+ZnJhbWUoKSB8fCAhZG9jdW1lbnQt
PmZyYW1lKCktPnZpZXcoKSkgewogICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgcmV0dXJuIGRvY3VtZW50LT5ub2Rlc0Zyb21S
ZWN0KHgsIHksIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBh
ZGRpbmcsIGlnbm9yZUNsaXBwaW5nLCBhbGxvd1NoYWRvd0NvbnRlbnQpOworICAgIHJldHVybiBk
b2N1bWVudC0+bm9kZXNGcm9tUmVjdCh4LCB5LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJv
dHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nLCBpZ25vcmVDbGlwcGluZywgYWxsb3dTaGFkb3dDb250
ZW50LCBhbGxvd0NoaWxkRnJhbWVDb250ZW50KTsKIH0KIAogdm9pZCBJbnRlcm5hbHM6OmVtaXRJ
bnNwZWN0b3JEaWRCZWdpbkZyYW1lKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4
IGI3M2I3YTgwMzI2N2UwMTI3MjA3MGFkYTBiY2VmOWQzNjBlYmExZmMuLjJjN2M4NjBhODBkMDUx
MDdiY2ZjMmY1M2E2OWZjNTcwOTI5MmU1MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aApAQCAtMTYwLDcgKzE2MCw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCB0b3VjaEV2ZW50SGFu
ZGxlckNvdW50KERvY3VtZW50KiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgUGFzc1JlZlB0cjxO
b2RlTGlzdD4gbm9kZXNGcm9tUmVjdChEb2N1bWVudCosIGludCB4LCBpbnQgeSwgdW5zaWduZWQg
dG9wUGFkZGluZywgdW5zaWduZWQgcmlnaHRQYWRkaW5nLAotICAgICAgICB1bnNpZ25lZCBib3R0
b21QYWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGluZywgYm9vbCBpZ25vcmVDbGlwcGluZywgYm9v
bCBhbGxvd1NoYWRvd0NvbnRlbnQsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKKyAgICAgICAgdW5z
aWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcsIGJvb2wgaWdub3JlQ2xp
cHBpbmcsIGJvb2wgYWxsb3dTaGFkb3dDb250ZW50LCBib29sIGFsbG93Q2hpbGRGcmFtZUNvbnRl
bnQsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKIAogICAgIHZvaWQgZW1pdEluc3BlY3RvckRpZEJl
Z2luRnJhbWUoKTsKICAgICB2b2lkIGVtaXRJbnNwZWN0b3JEaWRDYW5jZWxGcmFtZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IGFmZGM0YTI0YmI0ODQ0ZTIxNmJjYTkx
ZDQwZjgwMzgwNDNkMWMyY2EuLjcwNDllYzgwZWQwYzNlMGY3MTQwMTg1YWMzMTllODE4OGViYjhj
YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTEzOCw3ICsxMzgsNyBA
QCBtb2R1bGUgd2luZG93IHsKIAogICAgICAgICBOb2RlTGlzdCBub2Rlc0Zyb21SZWN0KGluIERv
Y3VtZW50IGRvY3VtZW50LCBpbiBsb25nIHgsIGluIGxvbmcgeSwKICAgICAgICAgICAgIGluIHVu
c2lnbmVkIGxvbmcgdG9wUGFkZGluZywgaW4gdW5zaWduZWQgbG9uZyByaWdodFBhZGRpbmcsIGlu
IHVuc2lnbmVkIGxvbmcgYm90dG9tUGFkZGluZywgaW4gdW5zaWduZWQgbG9uZyBsZWZ0UGFkZGlu
ZywKLSAgICAgICAgICAgIGluIGJvb2xlYW4gaWdub3JlQ2xpcHBpbmcsIGluIGJvb2xlYW4gYWxs
b3dTaGFkb3dDb250ZW50KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAgICAgICAgICBpbiBi
b29sZWFuIGlnbm9yZUNsaXBwaW5nLCBpbiBib29sZWFuIGFsbG93U2hhZG93Q29udGVudCwgaW4g
Ym9vbGVhbiBhbGxvd0NoaWxkRnJhbWVDb250ZW50KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAK
ICAgICAgICAgdm9pZCBlbWl0SW5zcGVjdG9yRGlkQmVnaW5GcmFtZSgpOwogICAgICAgICB2b2lk
IGVtaXRJbnNwZWN0b3JEaWRDYW5jZWxGcmFtZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDhmMDdhYTQzMDAyNTQ5NTM3
Mjk4YzNlYzgwZWJiOTkxMGRiYzgzZTEuLjJmNjIwYjkzMWM3NGQ5ZTQ2NDU4ZDJhNWE3ZDEzOGYw
N2EyZmUwOTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMi0wOC0yOSAgQWxsYW4gU2FuZGZl
bGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQG5va2lhLmNvbT4KKworICAgICAgICBBbGxvdyBjaGls
ZC1mcmFtZSBjb250ZW50IGluIGhpdC10ZXN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk1MjA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVG91Y2gtQWRqdXN0bWVudCB0ZXN0IGJ5IEtldmluIEVsbGlz
CisKKyAgICAgICAgVHdvIG5ldyB0ZXN0cyBmb3IgaGl0LXRlc3RpbmcgY2hpbGQgZnJhbWUgY29u
dGVudC4gT25lIGZvciB0ZXN0aW5nIGl0IGFzIGFuIG9wdGlvbiB0bworICAgICAgICBub2Rlc0Zy
b21SZWN0LCBhbmQgb25lIHRlc3RpbmcgaXRzIGltcHJvdmVtZW50IG9uIHRvdWNoIGFkanVzdG1l
bnQgb24gaWZyYW1lIGJvdW5kYXJpZXMuCisKKyAgICAgICAgKiBmYXN0L2RvbS9ub2Rlc0Zyb21S
ZWN0L25vZGVzRnJvbVJlY3QtY2hpbGQtZnJhbWUtY29udGVudC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZG9tL25vZGVzRnJvbVJlY3Qvbm9kZXNGcm9tUmVjdC1jaGlsZC1m
cmFtZS1jb250ZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL25vZGVzRnJvbVJl
Y3QvcmVzb3VyY2VzL2NoaWxkLWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9t
L25vZGVzRnJvbVJlY3QvcmVzb3VyY2VzL25vZGVzRnJvbVJlY3QuanM6CisgICAgICAgIChjaGVj
ayk6CisgICAgICAgIChjaGVja1NoYWRvd0NvbnRlbnQpOgorICAgICAgICAoY2hlY2tSZWN0KToK
KyAgICAgICAgKG5vZGVzRnJvbVJlY3RBc1N0cmluZyk6CisgICAgICAgICogdG91Y2hhZGp1c3Rt
ZW50L2lmcmFtZS1ib3VuZGFyeS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRvdWNo
YWRqdXN0bWVudC9pZnJhbWUtYm91bmRhcnkuaHRtbDogQWRkZWQuCisgICAgICAgICogdG91Y2hh
ZGp1c3RtZW50L3Jlc291cmNlcy9pbm5lci1jb250ZW50LXBhZ2UuaHRtbDogQWRkZWQuCisgICAg
ICAgICogdG91Y2hhZGp1c3RtZW50L3Jlc291cmNlcy9pbm5lci1uYXZpZ2F0aW9uLWZyYW1lLmh0
bWw6IEFkZGVkLgorCiAyMDEyLTA4LTI4ICBLYW5naWwgSGFuICA8a2FuZ2lsLmhhbkBzYW1zdW5n
LmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJdW1dUUl0gUmViYXNlbGluZSBuZXdseSBhZGRlZCBT
VkcgdGV4dCB0ZXN0IGNhc2VzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2Rl
c0Zyb21SZWN0L25vZGVzRnJvbVJlY3QtY2hpbGQtZnJhbWUtY29udGVudC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2Rlc0Zyb21SZWN0L25vZGVzRnJvbVJlY3QtY2hpbGQt
ZnJhbWUtY29udGVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWMxYzk3MDBjMjU5YmQyMjQ5
MDAzYTNlODAzNTQ3ZTEyNGRjZmZmZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL25vZGVzRnJvbVJlY3Qvbm9kZXNGcm9tUmVjdC1jaGlsZC1mcmFtZS1jb250ZW50LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDE4IEBACisKK0RvY3VtZW50Ojpub2Rlc0Zyb21SZWN0IDog
QWxsb3cgY2hpbGQtZnJhbWUgY29udGVudCAtIGJ1ZyA5NTIwNAorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworUEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdAorUEFT
UyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdAorUEFTUyBBbGwgY29ycmVjdCBub2Rl
cyBmb3VuZCBmb3IgcmVjdAorUEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdAor
UEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdAorUEFTUyBBbGwgY29ycmVjdCBu
b2RlcyBmb3VuZCBmb3IgcmVjdAorUEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVj
dAorUEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdAorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3Qvbm9kZXNGcm9tUmVjdC1jaGlsZC1mcmFtZS1jb250
ZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2Rlc0Zyb21SZWN0L25vZGVzRnJvbVJl
Y3QtY2hpbGQtZnJhbWUtY29udGVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFkYjQxNjdiMTc4MDJkY2Vi
OWUzODZjNTRlMzFlNTQ2ODVjNTFlOTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9ub2Rlc0Zyb21SZWN0L25vZGVzRnJvbVJlY3QtY2hpbGQtZnJhbWUtY29udGVudC5o
dG1sCkBAIC0wLDAgKzEsNzcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAg
ICA8dGl0bGU+RG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QgOiBBbGxvdyBjaGlsZC1mcmFtZSBjb250
ZW50IC0gYnVnIDk1MjA0PC90aXRsZT4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L25vZGVzRnJvbVJlY3QuanMiPjwvc2NyaXB0PgorICAgIDxzdHlsZT4KKyAgICAgICAgYm9keSB7
IG1hcmdpbjogMHB4OyB9CisgICAgICAgICNzYW5kYm94IHsKKyAgICAgICAgICAgIHdpZHRoOiA0
MDBweDsKKyAgICAgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgICAgIH0KKyAgICAgICAgI3Nh
bmRib3ggI2xheWVyIHsKKyAgICAgICAgICAgIGZsb2F0OiByaWdodDsKKyAgICAgICAgfQorICAg
ICAgICAjc2FuZGJveCBpZnJhbWUgeworICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7CisgICAg
ICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OworICAgICAgICAgICAgd2lkdGg6IDIwMHB4
OworICAgICAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICAgICAgICAgIGJvcmRlcjogbm9uZTsK
KyAgICAgICAgfQorICAgICAgICAucm90YXRlMTgwIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0
ZSgxODBkZWcpOyB9CisgICAgICAgIC5yb3RhdGU5MCB7IC13ZWJraXQtdHJhbnNmb3JtOiByb3Rh
dGUoOTBkZWcpOyB9CisgICAgICAgICNzYW5kYm94IC5ib3ggeworICAgICAgICAgICAgYm94LXNp
emluZzogYm9yZGVyLWJveDsKKyAgICAgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgICAg
ICB3aWR0aDogMjAwcHg7CisgICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKKyAg
ICAgICAgfQorICAgIDwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keSBpZD0iYm9keSI+CisgICAgPGRp
diBpZD1zYW5kYm94PgorICAgICAgICA8ZGl2IGlkPWxheWVyPgorICAgICAgICAgICAgPGlmcmFt
ZSBpZD0iaWZyYW1lMSIgc3JjPSJyZXNvdXJjZXMvY2hpbGQtZnJhbWUuaHRtbCI+PC9pZnJhbWU+
CisgICAgICAgIDwvZGl2PgorICAgICAgICA8ZGl2IGlkPWRpdjEgY2xhc3M9Ym94PjwvZGl2Pgor
ICAgICAgICA8ZGl2IGlkPWRpdjIgY2xhc3M9Ym94PjwvZGl2PgorICAgIDwvZGl2PgorCisgICAg
PHAgaWQ9J2Rlc2NyaXB0aW9uJz48L3A+CisgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cisg
ICAgPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Ij4KKyAgICAgICAgZnVuY3Rp
b24gcnVuVGVzdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uKGRvY3VtZW50
LnRpdGxlKTsKKworICAgICAgICAgICAgLy8gU2V0IHVwIHNob3J0Y3V0IGFjY2VzcyB0byBlbGVt
ZW50cworICAgICAgICAgICAgdmFyIGUgPSB7fTsKKyAgICAgICAgICAgIFsnc2FuZGJveCcsICds
YXllciddLmZvckVhY2goZnVuY3Rpb24oYSkgeworICAgICAgICAgICAgICAgIGVbYV0gPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZChhKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBj
aGVja1JlY3QoMjUsIDI1LCAxMDAsIDEwMCwgIkRJViNkaXYyLCBESVYjZGl2MSwgRElWI3NhbmRi
b3giKTsKKyAgICAgICAgICAgIGNoZWNrUmVjdCgyMjAsIDIwLCA3MCwgNzAsICJESVYjbGVmdCIp
OworICAgICAgICAgICAgY2hlY2tSZWN0KDI1MCwgMjAsIDEwMCwgNzAsICJESVYjcmlnaHQsIERJ
ViNsZWZ0LCBIVE1MIik7CisKKyAgICAgICAgICAgIGNoZWNrUmVjdCgxNTAsIDUwLCAxMDAsIDEw
MCwgIkRJViNsZWZ0LCBIVE1MLCAjZG9jdW1lbnQsIElGUkFNRSNpZnJhbWUxLCBESVYjbGF5ZXIs
IERJViNkaXYyLCBESVYjZGl2MSwgRElWI3NhbmRib3giKTsKKworICAgICAgICAgICAgZS5sYXll
ci5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgJ3JvdGF0ZTE4MCcpOworICAgICAgICAgICAgY2hlY2tS
ZWN0KDIyMCwgMjAsIDcwLCA3MCwgIkRJViNyaWdodCIpOworICAgICAgICAgICAgY2hlY2tSZWN0
KDE1MCwgNTAsIDEwMCwgMTAwLCAiRElWI3JpZ2h0LCBIVE1MLCAjZG9jdW1lbnQsIElGUkFNRSNp
ZnJhbWUxLCBESVYjbGF5ZXIsIERJViNkaXYyLCBESVYjZGl2MSwgRElWI3NhbmRib3giKTsKKwor
ICAgICAgICAgICAgZS5sYXllci5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgJ3JvdGF0ZTkwJyk7Cisg
ICAgICAgICAgICBjaGVja1JlY3QoMjUwLCAyMCwgMTAwLCA3MCwgIkRJViNsZWZ0Iik7CisgICAg
ICAgICAgICBjaGVja1JlY3QoMTUwLCAyMCwgMjAwLCA2MCwgIkRJViNsZWZ0LCBIVE1MLCAjZG9j
dW1lbnQsIElGUkFNRSNpZnJhbWUxLCBESVYjbGF5ZXIsIERJViNkaXYxLCBESVYjc2FuZGJveCIp
OworCisgICAgICAgICAgICBlLnNhbmRib3guZGlzcGxheSA9ICdub25lJzsKKyAgICAgICAgICAg
IGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisgICAgICAgIGpzVGVzdElzQXN5bmMgPSB0cnVl
OworICAgICAgICB3aW5kb3cub25sb2FkID0gcnVuVGVzdDsKKyAgICA8L3NjcmlwdD4KKyAgICA8
c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2Rl
c0Zyb21SZWN0L3Jlc291cmNlcy9jaGlsZC1mcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vbm9kZXNGcm9tUmVjdC9yZXNvdXJjZXMvY2hpbGQtZnJhbWUuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
MDRkN2ZhYWRiYjk4NjY3YmZlYzRhNDcyN2M4ZGEyODczNjMzZTY5Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9tUmVjdC9yZXNvdXJjZXMvY2hpbGQtZnJh
bWUuaHRtbApAQCAtMCwwICsxLDI3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgIGJvZHkgeyBtYXJnaW46IDBweDsgfQorICAg
IGRpdiB7IAorICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OworICAgICAgICBib3JkZXI6
IDFweCBzb2xpZCBibGFjazsKKyAgICB9CisgICAgI2xlZnQgeworICAgICAgICBmbG9hdDpsZWZ0
OworICAgICAgICB3aWR0aDogOTBweDsKKyAgICAgICAgaGVpZ2h0OiAxOTBweDsKKyAgICB9Cisg
ICAgI3JpZ2h0IHsKKyAgICAgICAgZmxvYXQ6cmlnaHQ7CisgICAgICAgIHdpZHRoOiA5MHB4Owor
ICAgICAgICBoZWlnaHQ6IDE5MHB4OworICAgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4K
KyAgICA8ZGl2IGlkPWxlZnQ+PC9kaXY+CisgICAgPGRpdiBpZD1yaWdodD48L2Rpdj4KKzwvYm9k
eT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9t
UmVjdC9yZXNvdXJjZXMvbm9kZXNGcm9tUmVjdC5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL25v
ZGVzRnJvbVJlY3QvcmVzb3VyY2VzL25vZGVzRnJvbVJlY3QuanMKaW5kZXggMmU4M2E3NTY3YWEw
YTYxMzg0YjM0YjEzMjI4MDA5YzIzZjAxNzdlMS4uMTRjY2Y2MmRmYTYxNzZkMDhiZmE0Mjk0Y2Y5
ODc3NjMzOWZlNDY5NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9t
UmVjdC9yZXNvdXJjZXMvbm9kZXNGcm9tUmVjdC5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9ub2Rlc0Zyb21SZWN0L3Jlc291cmNlcy9ub2Rlc0Zyb21SZWN0LmpzCkBAIC0xLDcgKzEsOCBA
QAogLyoKICAqIENvbnRyaWJ1dG9yczoKICAqICAgICAqIEFudG9uaW8gR29tZXMgPHRvbmlraXRv
b0B3ZWJraXQub3JnPgotICoqLworICogICAgICogQWxsYW4gU2FuZGZlbGQgSmVuc2VuIDxhbGxh
bi5qZW5zZW5Abm9raWEuY29tPgorKiovCiAKIGZ1bmN0aW9uIGNoZWNrKHgsIHksIHRvcFBhZGRp
bmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcsIGxpc3QsIGRvYykK
IHsKQEAgLTExLDcgKzEyLDcgQEAgZnVuY3Rpb24gY2hlY2soeCwgeSwgdG9wUGFkZGluZywgcmln
aHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0UGFkZGluZywgbGlzdCwKICAgaWYgKCFkb2Mp
CiAgICAgZG9jID0gZG9jdW1lbnQ7CiAKLSAgdmFyIG5vZGVzID0gaW50ZXJuYWxzLm5vZGVzRnJv
bVJlY3QoZG9jLCB4LCB5LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcs
IGxlZnRQYWRkaW5nLCB0cnVlIC8qIGlnbm9yZUNsaXBwaW5nICovLCBmYWxzZSAvKiBhbGxvdyBz
aGFkb3cgY29udGVudCAqLyk7CisgIHZhciBub2RlcyA9IGludGVybmFscy5ub2Rlc0Zyb21SZWN0
KGRvYywgeCwgeSwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0
UGFkZGluZywgdHJ1ZSAvKiBpZ25vcmVDbGlwcGluZyAqLywgZmFsc2UgLyogYWxsb3cgc2hhZG93
IGNvbnRlbnQgKi8sIGZhbHNlIC8qIGFsbG93IGNoaWxkLWZyYW1lIGNvbnRlbnQgKi8pOwogICBp
ZiAoIW5vZGVzKQogICAgIHJldHVybjsKIApAQCAtNDUsNyArNDYsNyBAQCBmdW5jdGlvbiBjaGVj
a1NoYWRvd0NvbnRlbnQoeCwgeSwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRk
aW5nLCBsZWZ0UAogICBpZiAoIWRvYykKICAgICBkb2MgPSBkb2N1bWVudDsKIAotICB2YXIgbm9k
ZXMgPSBpbnRlcm5hbHMubm9kZXNGcm9tUmVjdChkb2MsIHgsIHksIHRvcFBhZGRpbmcsIHJpZ2h0
UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcsIHRydWUgLyogaWdub3JlQ2xpcHBp
bmcgKi8sIHRydWUgLyogYWxsb3dTaGFkb3dDb250ZW50ICovKTsKKyAgdmFyIG5vZGVzID0gaW50
ZXJuYWxzLm5vZGVzRnJvbVJlY3QoZG9jLCB4LCB5LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcs
IGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nLCB0cnVlIC8qIGlnbm9yZUNsaXBwaW5nICovLCB0
cnVlIC8qIGFsbG93U2hhZG93Q29udGVudCAqLywgZmFsc2UgLyogYWxsb3cgY2hpbGQtZnJhbWUg
Y29udGVudCAqLyk7CiAgIGlmICghbm9kZXMpCiAgICAgcmV0dXJuOwogCkBAIC02Nyw2ICs2OCw2
MSBAQCBmdW5jdGlvbiBjaGVja1NoYWRvd0NvbnRlbnQoeCwgeSwgdG9wUGFkZGluZywgcmlnaHRQ
YWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0UAogICB0ZXN0UGFzc2VkKCJBbGwgY29ycmVjdCBu
b2RlcyBmb3VuZCBmb3IgcmVjdCIpOwogfQogCitmdW5jdGlvbiBjaGVja1JlY3QobGVmdCwgdG9w
LCB3aWR0aCwgaGVpZ2h0LCBleHBlY3RlZE5vZGVTdHJpbmcsIGRvYykKK3sKKyAgICBpZiAoIXdp
bmRvdy5pbnRlcm5hbHMpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChoZWlnaHQgPD0wIHx8
IHdpZHRoIDw9IDApCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghZG9jKQorICAgICAgICBk
b2MgPSBkb2N1bWVudDsKKworICAgIHZhciB0b3BQYWRkaW5nID0gaGVpZ2h0IC8gMjsKKyAgICB2
YXIgbGVmdFBhZGRpbmcgPSAgd2lkdGggLyAyOworICAgIC8vIEZJWE1FOiBXaGVuIG5vZGVzRnJv
bVJlY3QgaXMgY2hhbmdlZCB0byBub3QgYWRkIDEgdG8gd2lkdGggYW5kIGhlaWdodCwgcmVtb3Zl
IHRoZSBjb3JyZWN0aW9uIGhlcmUuCisgICAgdmFyIGJvdHRvbVBhZGRpbmcgPSAoaGVpZ2h0IC0g
MSkgLSB0b3BQYWRkaW5nOworICAgIHZhciByaWdodFBhZGRpbmcgPSAod2lkdGggLSAxKSAtIGxl
ZnRQYWRkaW5nOworCisgICAgdmFyIG5vZGVTdHJpbmcgPSBub2Rlc0Zyb21SZWN0QXNTdHJpbmco
ZG9jLCBsZWZ0ICsgbGVmdFBhZGRpbmcsIHRvcCArIHRvcFBhZGRpbmcsIHRvcFBhZGRpbmcsIHJp
Z2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcpOworCisgICAgaWYgKG5vZGVT
dHJpbmcgPT0gZXhwZWN0ZWROb2RlU3RyaW5nKSB7CisgICAgICAgIHRlc3RQYXNzZWQoIkFsbCBj
b3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0Iik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGVz
dEZhaWxlZCgiTm9kZXNGcm9tUmVjdCBzaG91bGQgYmUgWyIgKyBleHBlY3RlZE5vZGVTdHJpbmcg
KyAiXSB3YXMgWyIgKyBub2RlU3RyaW5nICsgIl0iKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIG5v
ZGVzRnJvbVJlY3RBc1N0cmluZyhkb2MsIHgsIHksIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywg
Ym90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcpCit7CisgICAgdmFyIG5vZGVTdHJpbmcgPSAiIjsK
KyAgICB2YXIgbm9kZXMgPSBpbnRlcm5hbHMubm9kZXNGcm9tUmVjdChkb2MsIHgsIHksIHRvcFBh
ZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcsIHRydWUgLyog
aWdub3JlQ2xpcHBpbmcgKi8sIHRydWUgLyogYWxsb3cgc2hhZG93IGNvbnRlbnQgKi8sIHRydWUg
LyogYWxsb3cgY2hpbGQtZnJhbWUgY29udGVudCAqLyk7CisgICAgaWYgKCFub2RlcykKKyAgICAg
ICAgcmV0dXJuIG5vZGVTdHJpbmc7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxl
bmd0aDsgaSsrKSB7CisgICAgICAgIGlmIChub2Rlc1tpXS5ub2RlVHlwZSA9PSAxKSB7CisgICAg
ICAgICAgICBub2RlU3RyaW5nICs9IG5vZGVzW2ldLm5vZGVOYW1lOworICAgICAgICAgICAgaWYg
KG5vZGVzW2ldLmlkKQorICAgICAgICAgICAgICAgIG5vZGVTdHJpbmcgKz0gJyMnICsgbm9kZXNb
aV0uaWQ7CisgICAgICAgICAgICBlbHNlIGlmIChub2Rlc1tpXS5jbGFzcykgeworICAgICAgICAg
ICAgICAgIG5vZGVTdHJpbmcgKz0gJy4nICsgbm9kZXNbaV0uY2xhc3M7CisgICAgICAgICAgICB9
CisgICAgICAgIH0gZWxzZSBpZiAobm9kZXNbaV0ubm9kZVR5cGUgPT0gMykgeworICAgICAgICAg
ICAgbm9kZVN0cmluZyArPSAiJyIgKyBub2Rlc1tpXS5kYXRhICsgIiciOworICAgICAgICB9IGVs
c2UgaWYgKG5vZGVzW2ldLm5vZGVUeXBlID09IDkpIHsKKyAgICAgICAgICAgIG5vZGVTdHJpbmcg
Kz0gIiNkb2N1bWVudCI7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgfQorICAgICAgICBpZiAoaSArIDEgPCBub2Rlcy5sZW5ndGgpIHsKKyAgICAgICAg
ICAgIG5vZGVTdHJpbmcgKz0gIiwgIjsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gbm9k
ZVN0cmluZzsKK30KKwogZnVuY3Rpb24gZ2V0Q2VudGVyRm9yKGVsZW1lbnQpCiB7CiAgIHZhciBy
ZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9pZnJhbWUtYm91bmRhcnktZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L2lmcmFtZS1ib3VuZGFyeS1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzYxZDM2OTRiMDM5ZTRlMWEyZTE5OGEwMjliMWQyY2ZlZDg3MjZhYQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9pZnJhbWUtYm91bmRhcnkt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjYgQEAKKyAKK1Rlc3QgdG91Y2gtYWRqdXN0bWVudCBh
dCB0aGUgYm91bmRhcnkgb2YgYW4gCisKKworVGVzdCBkaXJlY3QgdG91Y2hlcy4KK1BBU1MgYWRq
dXN0ZWROb2RlLmlkIGlzICJjaGVja2JveC0xIgorUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgImJ1
dHRvbi0xIgorUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgImNoZWNrYm94LTIiCitQQVNTIGFkanVz
dGVkTm9kZS5pZCBpcyAiYnV0dG9uLTIiCitQQVNTIGFkanVzdGVkTm9kZS5pZCBpcyAiY2hlY2ti
b3gtMyIKK1BBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJidXR0b24tMyIKK1BBU1MgYWRqdXN0ZWRO
b2RlLmlkIGlzICJjaGVja2JveC00IgorUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgImJ1dHRvbi00
IgorVGVzdCBpbmRpcmVjdCB0b3VjaGVzLgorUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgImNoZWNr
Ym94LTEiCitQQVNTIGFkanVzdGVkTm9kZS5pZCBpcyAiYnV0dG9uLTEiCitQQVNTIGFkanVzdGVk
Tm9kZS5pZCBpcyAiY2hlY2tib3gtMiIKK1BBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJidXR0b24t
MiIKK1BBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJjaGVja2JveC0zIgorUEFTUyBhZGp1c3RlZE5v
ZGUuaWQgaXMgImJ1dHRvbi0zIgorUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgImNoZWNrYm94LTQi
CitQQVNTIGFkanVzdGVkTm9kZS5pZCBpcyAiYnV0dG9uLTQiCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
dG91Y2hhZGp1c3RtZW50L2lmcmFtZS1ib3VuZGFyeS5odG1sIGIvTGF5b3V0VGVzdHMvdG91Y2hh
ZGp1c3RtZW50L2lmcmFtZS1ib3VuZGFyeS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg4MDFkZWM4N2FiMDc2
MmRkZDM4ZDI4YWNjMzdhOWI1OWI3ODNhZDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy90b3VjaGFkanVzdG1lbnQvaWZyYW1lLWJvdW5kYXJ5Lmh0bWwKQEAgLTAsMCArMSwxMDEgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8dGl0bGU+VG91Y2ggQWRqdXN0
bWVudCA6IFRlc3QgdG91Y2ggYWRqdXN0bWVudCBhdCBhbiBpZnJhbWUgYm91bmRhcnkgLSBidWcg
OTQ5MzY8L3RpdGxlPgorICAgIDxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy90b3VjaGFk
anVzdG1lbnQuanMiPjwvc2NyaXB0PgorICAgIDxzdHlsZT4KKyAgICAgICAgI25hdmJhciB7Cisg
ICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZWVlOworICAgICAgICAgICAgaGVpZ2h0OiAxMDAlOwor
ICAgICAgICAgICAgbGVmdDogMDsKKyAgICAgICAgICAgIHBhZGRpbmc6IDA7CisgICAgICAgICAg
ICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgICAgICBtYXJnaW46IDA7CisgICAgICAgICAg
ICB0b3A6IDA7CisgICAgICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIH0KKworICAgICAg
ICAjY29udGVudC1wYWdlIHsKKyAgICAgICAgICAgIGhlaWdodDogMTAwJTsKKyAgICAgICAgICAg
IGxlZnQ6IDEwMHB4OworICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICAg
ICAgcmlnaHQ6IDA7CisgICAgICAgICAgICB0b3A6IDA7CisgICAgICAgIH0KKworICAgICAgICBp
ZnJhbWUgeworICAgICAgICAgICAgYm9yZGVyOiBub25lOworICAgICAgICAgICAgd2lkdGg6IDEw
MCU7CisgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7CisgICAgICAgICAgICBtYXJnaW46IDA7Cisg
ICAgICAgICAgICBwYWRkaW5nOiAwOworICAgICAgICB9CisgICAgPC9zdHlsZT4KKzwvaGVhZD4K
Kzxib2R5IGlkPSJtYWluIiBvbmxvYWQ9InJ1blRlc3RzKCkiPgorPGRpdiBpZD0ibmF2YmFyIiAg
c3R5bGU9Ii13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDBweCk7Ij4KKyAgICA8aWZyYW1l
IGlkPSJuYXYtZnJhbWUiIHNyYz0icmVzb3VyY2VzL2lubmVyLW5hdmlnYXRpb24tZnJhbWUuaHRt
bCI+PC9pZnJhbWU+Cis8L2Rpdj4KKzxkaXYgaWQ9ImNvbnRlbnQtcGFnZSI+CisgICAgPGlmcmFt
ZSBpZD0iY29udGVudC1mcmFtZSIgc3JjPSJyZXNvdXJjZXMvaW5uZXItY29udGVudC1wYWdlLmh0
bWwiPjwvaWZyYW1lPgorPC9kaXY+CisKKzxwIGlkPSdkZXNjcmlwdGlvbic+PC9wPgorPGRpdiBp
ZD0nY29uc29sZSc+PC9kaXY+CisKKzxzY3JpcHQ+IAorICAgIHZhciBpdGVtSGVpZ2h0MSA9IDI4
OworICAgIHZhciBpdGVtSGVpZ2h0MiA9IDM0OworICAgIHZhciBib3JkZXJPZmZzZXQgPSAxMDA7
CisgICAgdmFyIGNoZWNrYm94T2Zmc2V0ID0gMTg7CisgICAgdmFyIGxpbmtPZmZzZXQgPSAtMTU7
CisgICAgdmFyIGNoZWNrYm94T2Zmc2V0SW5kaXJlY3QgPSA1OworICAgIHZhciBsaW5rT2Zmc2V0
SW5kaXJlY3QgPSAtNTsKKyAgICB2YXIgdG91Y2hSYWRpdXMgPSAzMDsKKworICAgIGZ1bmN0aW9u
IHRlc3RSb3VuZFRvdWNoKHgsIHksIHJhZGl1cykKKyAgICB7CisgICAgICAgIHZhciB4ID0geCAt
IHJhZGl1czsKKyAgICAgICAgdmFyIHkgPSB5IC0gcmFkaXVzOworICAgICAgICB2YXIgd2lkdGgg
PSByYWRpdXMgKiAyOworICAgICAgICB2YXIgaGVpZ2h0ID0gcmFkaXVzICogMjsKKyAgICAgICAg
dmFyIGFkanVzdGVkTm9kZSA9IGludGVybmFscy50b3VjaE5vZGVBZGp1c3RlZFRvQmVzdENsaWNr
YWJsZU5vZGUoeCwgeSwgd2lkdGgsIGhlaWdodCwgZG9jdW1lbnQpOworICAgICAgICBpZiAoYWRq
dXN0ZWROb2RlLm5vZGVUeXBlID09IDMpIC8vIFRFWFQgbm9kZQorICAgICAgICAgICAgYWRqdXN0
ZWROb2RlID0gYWRqdXN0ZWROb2RlLnBhcmVudE5vZGU7CisgICAgICAgIHJldHVybiBhZGp1c3Rl
ZE5vZGU7CisgICAgfQorICAgIGZ1bmN0aW9uIHRlc3REaXJlY3RUb3VjaGVzKCkKKyAgICB7Cisg
ICAgICAgIGRlYnVnKCdUZXN0IGRpcmVjdCB0b3VjaGVzLicpOworICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IDQ7IGkrKykgeworICAgICAgICAgICAgYWRqdXN0ZWROb2RlID0gdGVzdFJvdW5k
VG91Y2goYm9yZGVyT2Zmc2V0ICsgY2hlY2tib3hPZmZzZXQsIChpICsgMC41KSAqIGl0ZW1IZWln
aHQxLCB0b3VjaFJhZGl1cyk7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2Fk
anVzdGVkTm9kZS5pZCcsICdjaGVja2JveC0nICsgKGkgKyAxKSk7CisgICAgICAgICAgICBhZGp1
c3RlZE5vZGUgPSB0ZXN0Um91bmRUb3VjaChib3JkZXJPZmZzZXQgKyBsaW5rT2Zmc2V0LCAoaSAr
IDAuNSkgKiBpdGVtSGVpZ2h0MiwgdG91Y2hSYWRpdXMpOworICAgICAgICAgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCdhZGp1c3RlZE5vZGUuaWQnLCAnYnV0dG9uLScgKyAoaSArIDEpKTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICBmdW5jdGlvbiB0ZXN0SW5kaXJlY3RUb3VjaGVzKCkgeworICAg
ICAgICAgZGVidWcoJ1Rlc3QgaW5kaXJlY3QgdG91Y2hlcy4nKTsKKyAgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgNDsgaSsrKSB7CisgICAgICAgICAgICBhZGp1c3RlZE5vZGUgPSB0ZXN0Um91
bmRUb3VjaChib3JkZXJPZmZzZXQgKyBjaGVja2JveE9mZnNldEluZGlyZWN0LCAoaSArIDAuNSkg
KiBpdGVtSGVpZ2h0MSwgdG91Y2hSYWRpdXMpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCdhZGp1c3RlZE5vZGUuaWQnLCAnY2hlY2tib3gtJyArIChpICsgMSkpOworICAgICAg
ICAgICAgYWRqdXN0ZWROb2RlID0gdGVzdFJvdW5kVG91Y2goYm9yZGVyT2Zmc2V0ICsgbGlua09m
ZnNldEluZGlyZWN0LCAoaSArIDAuNSkgKiBpdGVtSGVpZ2h0MiwgdG91Y2hSYWRpdXMpOworICAg
ICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdhZGp1c3RlZE5vZGUuaWQnLCAnYnV0dG9u
LScgKyAoaSArIDEpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIHJ1blRlc3Rz
KCkKKyAgICB7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuaW50ZXJu
YWxzICYmIGludGVybmFscy50b3VjaE5vZGVBZGp1c3RlZFRvQmVzdENsaWNrYWJsZU5vZGUpIHsK
KyAgICAgICAgICAgIGRlc2NyaXB0aW9uKCdUZXN0IHRvdWNoLWFkanVzdG1lbnQgYXQgdGhlIGJv
dW5kYXJ5IG9mIGFuIDxpZnJhbWU+LiAgRW5zdXJlIHRoYXQgdG91Y2ggYWRqdXN0bWVudCBwcm9w
YWdhdGVzIGludG8gY2hpbGRyZW4gb2YgYW4gPGlmcmFtZT4uICBUZXN0IGV4cGVjdGVkIHRvIGNv
bnRhaW4gZmFpbHVyZXMgdW50aWwgYnVnIDk1MjA0IGlzIGZpeGVkLicpOworICAgICAgICAgICAg
dGVzdERpcmVjdFRvdWNoZXMoKTsKKyAgICAgICAgICAgIHRlc3RJbmRpcmVjdFRvdWNoZXMoKTsK
KyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisgICAgfQorICAgIGpzVGVz
dElzQXN5bmMgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9yZXNvdXJjZXMvaW5uZXItY29udGVu
dC1wYWdlLmh0bWwgYi9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvcmVzb3VyY2VzL2lubmVy
LWNvbnRlbnQtcGFnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjczN2IyMTg4NjQzYzI4ZmVmZDI5ZDdlYzg1
MDViZjE4ZDA4YTdlYTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90b3VjaGFkanVz
dG1lbnQvcmVzb3VyY2VzL2lubmVyLWNvbnRlbnQtcGFnZS5odG1sCkBAIC0wLDAgKzEsMjQgQEAK
KzwhRE9DVFlQRT0iaHRtbCI+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzdHlsZT4KKyAgICAgICAg
Ym9keSB7CisgICAgICAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTsKKyAgICAgICAgICAgIHBhZGRp
bmc6IDA7CisgICAgICAgICAgICBtYXJnaW46IDA7CisgICAgICAgIH0KKworICAgICAgICBsYWJl
bCB7CisgICAgICAgICAgICBkaXNwbGF5OiBibG9jazsKKyAgICAgICAgICAgIGxpbmUtaGVpZ2h0
OiAyMnB4OworICAgICAgICAgICAgbWFyZ2luOiA1cHggMTBweDsKKyAgICAgICAgfQorICAgIDwv
c3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxsYWJlbD48aW5wdXQgaWQ9ImNoZWNrYm94LTEiIHR5
cGU9ImNoZWNrYm94Ij5DaGVja2JveCAxPC9sYWJlbD4KKzxsYWJlbD48aW5wdXQgaWQ9ImNoZWNr
Ym94LTIiIHR5cGU9ImNoZWNrYm94Ij5DaGVja2JveCAyPC9sYWJlbD4KKzxsYWJlbD48aW5wdXQg
aWQ9ImNoZWNrYm94LTMiIHR5cGU9ImNoZWNrYm94Ij5DaGVja2JveCAzPC9sYWJlbD4KKzxsYWJl
bD48aW5wdXQgaWQ9ImNoZWNrYm94LTQiIHR5cGU9ImNoZWNrYm94Ij5DaGVja2JveCA0PC9sYWJl
bD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0
bWVudC9yZXNvdXJjZXMvaW5uZXItbmF2aWdhdGlvbi1mcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMv
dG91Y2hhZGp1c3RtZW50L3Jlc291cmNlcy9pbm5lci1uYXZpZ2F0aW9uLWZyYW1lLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZmEyYzc1Mzk2NmJlYjk1ZmZlMzI4Y2Y3ODU1MmQxYzYyNzdkYWYyMAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9yZXNvdXJjZXMvaW5uZXIt
bmF2aWdhdGlvbi1mcmFtZS5odG1sCkBAIC0wLDAgKzEsMjUgQEAKKzwhRE9DVFlQRT0iaHRtbCI+
Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzdHlsZT4KKyAgICAgICAgYm9keSB7CisgICAgICAgICAg
ICBwYWRkaW5nOiAwOworICAgICAgICAgICAgbWFyZ2luOiAwOworICAgICAgICB9CisKKyAgICAg
ICAgaW5wdXRbdHlwZT0iYnV0dG9uIl0geworICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7Cisg
ICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CisgICAgICAgICAgICBsaW5lLWhlaWdodDog
MTRweDsKKyAgICAgICAgICAgIG1hcmdpbjogNXB4IDEwcHg7CisgICAgICAgICAgICB3aWR0aDog
ODBweDsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxpbnB1dCB0
eXBlPSJidXR0b24iIGlkPSJidXR0b24tMSIgdmFsdWU9IkJ1dHRvbiAxIj4KKzxpbnB1dCB0eXBl
PSJidXR0b24iIGlkPSJidXR0b24tMiIgdmFsdWU9IkJ1dHRvbiAyIj4KKzxpbnB1dCB0eXBlPSJi
dXR0b24iIGlkPSJidXR0b24tMyIgdmFsdWU9IkJ1dHRvbiAzIj4KKzxpbnB1dCB0eXBlPSJidXR0
b24iIGlkPSJidXR0b24tNCIgdmFsdWU9IkJ1dHRvbiA0Ij4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161215</attachid>
            <date>2012-08-29 06:47:18 -0700</date>
            <delta_ts>2012-09-03 03:15:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95204-20120829154700.patch</filename>
            <type>text/plain</type>
            <size>57991</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2ODc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjRlOTg0ZTBkMGQyZDk2
OGZjYWNmNGE3YzkzMTRmY2ZiZjYyMmFkZi4uN2I4ZGZiYTMxZTY3YjM1NmNhOGY1YmYyYzYyY2M0
MzkzMjYwNDY0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDEyLTA4LTI5ICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgorCisgICAgICAgIEFs
bG93IGNoaWxkLWZyYW1lIGNvbnRlbnQgaW4gaGl0LXRlc3RzLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUyMDQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvcnMgaG93IEV2ZW50SGFuZGxlcjo6
aGl0VGVzdFJlc3VsdEF0UG9pbnQgaGFuZGxlcyBjaGlsZC1mcmFtZSBjb250ZW50LAorICAgICAg
ICBpdCBpcyBub3cgaGFuZGxlZCBieSB0aGUgaGl0IHRlc3QgaXRzZWxmIGNvbnRyb2xsZWQgYnkg
dGhlIEFsbG93Q2hpbGRGcmFtZUNvbnRlbnQKKyAgICAgICAgZmxhZyBpbiBIaXRUZXN0UmVxdWVz
dC4KKworICAgICAgICBUaGUgQWxsb3dTaGFkb3dDb250ZW50IGZsYWcgaXMgbW92ZWQgZnJvbSBI
aXRUZXN0UmVzdWx0IHRvIEhpdFRlc3RSZXF1ZXN0LCBzbyB0aGUKKyAgICAgICAgY29udGVudCBm
aWx0ZXIgZmxhZ3MgYXJlIGluIHRoZSBzYW1lIHBsYWNlLgorCisgICAgICAgIFRlc3RzOiBmYXN0
L2RvbS9ub2Rlc0Zyb21SZWN0L25vZGVzRnJvbVJlY3QtY2hpbGQtZnJhbWUtY29udGVudC5odG1s
CisgICAgICAgICAgICAgICB0b3VjaGFkanVzdG1lbnQvaWZyYW1lLWJvdW5kYXJ5Lmh0bWwKKwor
ICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUub3JkZXI6CisgICAg
ICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpub2Rl
c0Zyb21SZWN0KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKERvY3VtZW50
KToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudEhhbmRsZXI6OmhpdFRlc3RSZXN1bHRBdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcv
SGl0VGVzdFJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXF1ZXN0OjphbGxv
d1NoYWRvd0NvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlcXVlc3Q6OmFsbG93
Q2hpbGRGcmFtZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlcXVlc3Q6OmNo
aWxkRnJhbWVIaXRUZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXF1ZXN0Ojp0ZXN0
Q2hpbGRGcmFtZVNjcm9sbEJhcnMpOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RMb2NhdGlvbjo6SGl0VGVzdExvY2F0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQpOgorICAg
ICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNv
cmU6OkhpdFRlc3RSZXN1bHQ6OmFkZE5vZGVUb1JlY3RCYXNlZFRlc3RSZXN1bHQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0Lmg6CisgICAgICAgIChIaXRUZXN0TG9jYXRpb24p
OgorICAgICAgICAoSGl0VGVzdFJlc3VsdCk6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZUZs
b3dCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6bm9kZUF0UG9pbnQp
OgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklubGluZVRleHRCb3g6Om5vZGVBdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6Om5vZGVBdFBvaW50
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJveDo6bm9kZUF0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFt
ZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRnJhbWVCYXNlOjpub2RlQXRQb2lu
dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5oOgorICAgICAgICAoUmVu
ZGVyRnJhbWVCYXNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6Om5vZGVBdFBvaW50KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6Omhp
dFRlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmhpdFRlc3RMYXllcik6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aGl0VGVzdExpc3QpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJSZWdpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVnaW9u
Ojpub2RlQXRQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpub2RlQXRQb2ludCk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNW
R1Jvb3Q6Om5vZGVBdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRl
eHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6bm9kZUF0UG9p
bnQpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkludGVybmFsczo6bm9kZXNGcm9tUmVjdCk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMu
aDoKKyAgICAgICAgKEludGVybmFscyk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRs
OgorCiAyMDEyLTA4LTI4ICBIdWdvIFBhcmVudGUgTGltYSAgPGh1Z28ubGltYUBvcGVuYm9zc2Eu
b3JnPgogCiAgICAgICAgIFtXSzJdIFNlbmQgY2xpY2sgZXZlbnRzIHRvIFdlYkNvcmUgd2hlbiB0
aGUgdXNlciBjbGlja2VkIG9uIGEgbm9uLXNwZWNpYWwgbm9kZSB3aXRoIFRPVUNIX0FESlVTVE1F
TlQgZW5hYmxlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggZGQ2NzdmZDgxZjM1OGJmODM3YTgx
MWM1ODNhYTYyZmMwNmE5NDY0OC4uNDg4OTcyZmM3OTMxY2QyMDI2ODU3N2E4ZDNjMzU4NzM3N2Fi
NmQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTEzNTQsNyArMTM1NCw3IEBAIF9fWk5LN1dl
YkNvcmU3UnVuTG9vcDlUaW1lckJhc2U4aXNBY3RpdmVFdgogX19aTks3V2ViQ29yZThEb2N1bWVu
dDEwcmVuZGVyVmlld0V2CiBfX1pOSzdXZWJDb3JlOERvY3VtZW50MTFjb21wbGV0ZVVSTEVSS04z
V1RGNlN0cmluZ0UKIF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQxM2F4T2JqZWN0Q2FjaGVFdgotX19a
Tks3V2ViQ29yZThEb2N1bWVudDEzbm9kZXNGcm9tUmVjdEVpaWpqampiYgorX19aTks3V2ViQ29y
ZThEb2N1bWVudDEzbm9kZXNGcm9tUmVjdEVpaWpqampiYmIKIF9fWk5LN1dlYkNvcmU4RG9jdW1l
bnQxNGdldEVsZW1lbnRCeUlkRVJLTjNXVEYxMkF0b21pY1N0cmluZ0UKIF9fWk5LN1dlYkNvcmU4
RG9jdW1lbnQzMWRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2RpbmdFUktOM1dURjZTdHJpbmdF
CiBfX1pOSzdXZWJDb3JlOERvY3VtZW50NGJvZHlFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5vcmRlciBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKaW5kZXggMGIy
YjE3NTgzY2I3MDYwNzliNzMyMjg3ZDI4ZmYyNDJjYjM1ZDNmYy4uMzVhYmZlNjM1YjkzZGE0NGI0
NzI1YTU0ZmIyMjNkMTgxNjczOGMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5vcmRlcgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCkBAIC0yMjc4NSw3ICsy
Mjc4NSw3IEBAIF9fWk5LN1dlYkNvcmUxMk5vZGVJdGVyYXRvcjIwdXBkYXRlRm9yTm9kZVJlbW92
YWxFUE5TXzROb2RlRVJOUzBfMTFOb2RlUG9pbnRlckUKIF9fWk43V2ViQ29yZTI3anNOb2RlSXRl
cmF0b3JSZWZlcmVuY2VOb2RlRVBOM0pTQzlFeGVjU3RhdGVFTlMwXzdKU1ZhbHVlRVJLTlMwXzEw
SWRlbnRpZmllckUKIF9fWk5LN1dlYkNvcmU0Tm9kZTIwdHJhdmVyc2VQcmV2aW91c05vZGVFUEtT
MF8KIF9fWk43V2ViQ29yZTM3anNOb2RlSXRlcmF0b3JQcm90b3R5cGVGdW5jdGlvbkRldGFjaEVQ
TjNKU0M5RXhlY1N0YXRlRQotX19aTks3V2ViQ29yZThEb2N1bWVudDEzbm9kZXNGcm9tUmVjdEVp
aWpqampiCitfX1pOSzdXZWJDb3JlOERvY3VtZW50MTNub2Rlc0Zyb21SZWN0RWlpampqamJiYgog
X19aTks3V2ViQ29yZThEb2N1bWVudDE3aGFuZGxlWmVyb1BhZGRpbmdFUktOU18xNEhpdFRlc3RS
ZXF1ZXN0RVJOU18xM0hpdFRlc3RSZXN1bHRFCiBfX1pOM1dURjIxTGlzdEhhc2hTZXRUcmFuc2xh
dG9ySU5TXzZSZWZQdHJJTjdXZWJDb3JlNE5vZGVFRUVMbTI1NkVOU183UHRySGFzaElTNF9FRUU5
dHJhbnNsYXRlRVJQTlNfMTVMaXN0SGFzaFNldE5vZGVJUzRfTG0yNTZFRUVSS1M0X1BOU18yNExp
c3RIYXNoU2V0Tm9kZUFsbG9jYXRvcklTNF9MbTI1NkVFRQogX19aTjdXZWJDb3JlMjFTdGF0aWNI
YXNoU2V0Tm9kZUxpc3RDMUVSTjNXVEYxMUxpc3RIYXNoU2V0SU5TMV82UmVmUHRySU5TXzROb2Rl
RUVFTG0yNTZFTlMxXzdQdHJIYXNoSVM1X0VFRUUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4
IDkxZmEyZTgzY2RjNDA1ZTlkZTRiOGI0ODFiMWI5NWRjNDIxOTY3MGYuLjdjNDQ1ZGZiYTk4ZDY2
MDY4MWU1MmY0ODc2M2EzOWI4ZDJmZDQwZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAt
MTM4NCw3ICsxMzg0LDcgQEAgU3RyaW5nIERvY3VtZW50OjpzdWdnZXN0ZWRNSU1FVHlwZSgpIGNv
bnN0CiAvLyAqIG1ha2luZyBpdCByZWNlaXZlIGEgcmVjdCBhcyBwYXJhbWV0ZXIsIGkuZS4gbm9k
ZXNGcm9tUmVjdCh4LCB5LCB3LCBoKTsKIC8vICogbWFraW5nIGl0IHJlY2VpdmUgdGhlIGV4cGFk
aW5nIHNpemUgb2YgZWFjaCBkaXJlY3Rpb24gc2VwYXJhdGVseSwKIC8vICAgaS5lLiBub2Rlc0Zy
b21SZWN0KHgsIHksIHRvcFNpemUsIHJpZ2h0U2l6ZSwgYm90dG9tU2l6ZSwgbGVmdFNpemUpOwot
UGFzc1JlZlB0cjxOb2RlTGlzdD4gRG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QoaW50IGNlbnRlclgs
IGludCBjZW50ZXJZLCB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcs
IHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nLCBib29sIGlnbm9y
ZUNsaXBwaW5nLCBib29sIGFsbG93U2hhZG93Q29udGVudCkgY29uc3QKK1Bhc3NSZWZQdHI8Tm9k
ZUxpc3Q+IERvY3VtZW50Ojpub2Rlc0Zyb21SZWN0KGludCBjZW50ZXJYLCBpbnQgY2VudGVyWSwg
dW5zaWduZWQgdG9wUGFkZGluZywgdW5zaWduZWQgcmlnaHRQYWRkaW5nLCB1bnNpZ25lZCBib3R0
b21QYWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGluZywgYm9vbCBpZ25vcmVDbGlwcGluZywgYm9v
bCBhbGxvd1NoYWRvd0NvbnRlbnQsIGJvb2wgYWxsb3dDaGlsZEZyYW1lQ29udGVudCkgY29uc3QK
IHsKICAgICAvLyBGSVhNRTogU2hhcmUgY29kZSBiZXR3ZWVuIHRoaXMsIGVsZW1lbnRGcm9tUG9p
bnQgYW5kIGNhcmV0UmFuZ2VGcm9tUG9pbnQuCiAgICAgaWYgKCFyZW5kZXJlcigpKQpAQCAtMTQw
Niw2ICsxNDA2LDEwIEBAIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IERvY3VtZW50Ojpub2Rlc0Zyb21S
ZWN0KGludCBjZW50ZXJYLCBpbnQgY2VudGVyWSwgdW5zaWduZWQKICAgICAgICAgdHlwZSB8PSBI
aXRUZXN0UmVxdWVzdDo6SWdub3JlQ2xpcHBpbmc7CiAgICAgZWxzZSBpZiAoIWZyYW1lVmlldy0+
dmlzaWJsZUNvbnRlbnRSZWN0KCkuaW50ZXJzZWN0cyhIaXRUZXN0UmVzdWx0OjpyZWN0Rm9yUG9p
bnQocG9pbnQsIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBh
ZGRpbmcpKSkKICAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKGFsbG93U2hhZG93Q29udGVudCkK
KyAgICAgICAgdHlwZSB8PSBIaXRUZXN0UmVxdWVzdDo6QWxsb3dTaGFkb3dDb250ZW50OworICAg
IGlmIChhbGxvd0NoaWxkRnJhbWVDb250ZW50KQorICAgICAgICB0eXBlIHw9IEhpdFRlc3RSZXF1
ZXN0OjpBbGxvd0NoaWxkRnJhbWVDb250ZW50OwogCiAgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVz
dCh0eXBlKTsKIApAQCAtMTQxNiw4ICsxNDIwLDcgQEAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gRG9j
dW1lbnQ6Om5vZGVzRnJvbVJlY3QoaW50IGNlbnRlclgsIGludCBjZW50ZXJZLCB1bnNpZ25lZAog
ICAgICAgICByZXR1cm4gaGFuZGxlWmVyb1BhZGRpbmcocmVxdWVzdCwgcmVzdWx0KTsKICAgICB9
CiAKLSAgICBlbnVtIFNoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3kgc2hhZG93Q29udGVudEZpbHRl
clBvbGljeSA9IGFsbG93U2hhZG93Q29udGVudCA/IEFsbG93U2hhZG93Q29udGVudCA6IERvTm90
QWxsb3dTaGFkb3dDb250ZW50OwotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHBvaW50LCB0b3BQ
YWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nLCBzaGFkb3dD
b250ZW50RmlsdGVyUG9saWN5KTsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdChwb2ludCwgdG9w
UGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0UGFkZGluZyk7CiAgICAg
cmVuZGVyVmlldygpLT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7CiAKICAgICByZXR1cm4gU3Rh
dGljSGFzaFNldE5vZGVMaXN0OjphZG9wdChyZXN1bHQucmVjdEJhc2VkVGVzdFJlc3VsdCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgKaW5kZXggYjg1YzU0NDM0ZmM3ZTExMzc4ZjYyY2M2MWNjNGE1NjNl
YzQwNjJmOC4uNjBjNTQ5OTk5NDgzYTVjOTc2ZjJkYmYxYWJhNDU4ZGM2ZDZmZmZjMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKQEAgLTM3NSw4ICszNzUsOSBAQCBwdWJsaWM6CiAgICAgICogQHBhcmFt
IGlnbm9yZUNsaXBwaW5nIHdoZXRoZXIgb3Igbm90IHRvIGlnbm9yZSB0aGUgcm9vdCBzY3JvbGwg
ZnJhbWUgd2hlbiByZXRyaWV2aW5nIHRoZSBlbGVtZW50LgogICAgICAqICAgICAgICBJZiBmYWxz
ZSwgdGhpcyBtZXRob2QgcmV0dXJucyBudWxsIGZvciBjb29yZGluYXRlcyBvdXRzaWRlIG9mIHRo
ZSB2aWV3cG9ydC4KICAgICAgKi8KLSAgICBQYXNzUmVmUHRyPE5vZGVMaXN0PiBub2Rlc0Zyb21S
ZWN0KGludCBjZW50ZXJYLCBpbnQgY2VudGVyWSwgdW5zaWduZWQgdG9wUGFkZGluZywgdW5zaWdu
ZWQgcmlnaHRQYWRkaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcsIGJvb2wgaWdub3Jl
Q2xpcHBpbmcsIGJvb2wgYWxsb3dTaGFkb3dDb250ZW50KSBjb25zdDsKKyAgICBQYXNzUmVmUHRy
PE5vZGVMaXN0PiBub2Rlc0Zyb21SZWN0KGludCBjZW50ZXJYLCBpbnQgY2VudGVyWSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVu
c2lnbmVkIHJpZ2h0UGFkZGluZywgdW5zaWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbGVm
dFBhZGRpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGln
bm9yZUNsaXBwaW5nLCBib29sIGFsbG93U2hhZG93Q29udGVudCwgYm9vbCBhbGxvd0NoaWxkRnJh
bWVDb250ZW50ID0gZmFsc2UpIGNvbnN0OwogICAgIEVsZW1lbnQqIGVsZW1lbnRGcm9tUG9pbnQo
aW50IHgsIGludCB5KSBjb25zdDsKICAgICBQYXNzUmVmUHRyPFJhbmdlPiBjYXJldFJhbmdlRnJv
bVBvaW50KGludCB4LCBpbnQgeSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApp
bmRleCBkYzZjZmE4NzUyZDI3ZmQxZDc0ZjBiYzIzOGUwZTMyZDNmOWM5OTk3Li4wMDFmZDZkOWU5
ZTExNjI5NWQyMGM1MDkyMzAxOTI3YTA1ZDdkZjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwCkBAIC0xMDQxLDQwICsxMDQxLDIxIEBAIERyYWdTb3VyY2VBY3Rpb24gRXZlbnRI
YW5kbGVyOjp1cGRhdGVEcmFnU291cmNlQWN0aW9uc0FsbG93ZWQoKSBjb25zdAogICAgIAogSGl0
VGVzdFJlc3VsdCBFdmVudEhhbmRsZXI6OmhpdFRlc3RSZXN1bHRBdFBvaW50KGNvbnN0IExheW91
dFBvaW50JiBwb2ludCwgYm9vbCBhbGxvd1NoYWRvd0NvbnRlbnQsIGJvb2wgaWdub3JlQ2xpcHBp
bmcsIEhpdFRlc3RTY3JvbGxiYXJzIHRlc3RTY3JvbGxiYXJzLCBIaXRUZXN0UmVxdWVzdDo6SGl0
VGVzdFJlcXVlc3RUeXBlIGhpdFR5cGUsIGNvbnN0IExheW91dFNpemUmIHBhZGRpbmcpCiB7Ci0g
ICAgZW51bSBTaGFkb3dDb250ZW50RmlsdGVyUG9saWN5IHNoYWRvd0NvbnRlbnRGaWx0ZXJQb2xp
Y3kgPSBhbGxvd1NoYWRvd0NvbnRlbnQgPyBBbGxvd1NoYWRvd0NvbnRlbnQgOiBEb05vdEFsbG93
U2hhZG93Q29udGVudDsKLSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdChwb2ludCwgcGFkZGluZy5o
ZWlnaHQoKSwgcGFkZGluZy53aWR0aCgpLCBwYWRkaW5nLmhlaWdodCgpLCBwYWRkaW5nLndpZHRo
KCksIHNoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3kpOworICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0
KHBvaW50LCBwYWRkaW5nLmhlaWdodCgpLCBwYWRkaW5nLndpZHRoKCksIHBhZGRpbmcuaGVpZ2h0
KCksIHBhZGRpbmcud2lkdGgoKSk7CiAKICAgICBpZiAoIW1fZnJhbWUtPmNvbnRlbnRSZW5kZXJl
cigpKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIGlmIChpZ25vcmVDbGlwcGluZykKICAg
ICAgICAgaGl0VHlwZSB8PSBIaXRUZXN0UmVxdWVzdDo6SWdub3JlQ2xpcHBpbmc7CisgICAgaWYg
KGFsbG93U2hhZG93Q29udGVudCkKKyAgICAgICAgaGl0VHlwZSB8PSBIaXRUZXN0UmVxdWVzdDo6
QWxsb3dTaGFkb3dDb250ZW50OworICAgIGlmICh0ZXN0U2Nyb2xsYmFycyA9PSBTaG91bGRIaXRU
ZXN0U2Nyb2xsYmFycykKKyAgICAgICAgaGl0VHlwZSB8PSBIaXRUZXN0UmVxdWVzdDo6VGVzdENo
aWxkRnJhbWVTY3JvbGxCYXJzOworICAgIC8vIFdlIGFsd2F5cyBuZWVkIHRvIGhhbmRsZSBjaGls
ZCBmcmFtZSBjb250ZW50LgorICAgIGhpdFR5cGUgfD0gSGl0VGVzdFJlcXVlc3Q6OkFsbG93Q2hp
bGRGcmFtZUNvbnRlbnQ7CisKICAgICBtX2ZyYW1lLT5jb250ZW50UmVuZGVyZXIoKS0+aGl0VGVz
dChIaXRUZXN0UmVxdWVzdChoaXRUeXBlKSwgcmVzdWx0KTsKIAotICAgIHdoaWxlICh0cnVlKSB7
Ci0gICAgICAgIE5vZGUqIG4gPSByZXN1bHQuaW5uZXJOb2RlKCk7Ci0gICAgICAgIGlmICghcmVz
dWx0LmlzT3ZlcldpZGdldCgpIHx8ICFuIHx8ICFuLT5yZW5kZXJlcigpIHx8ICFuLT5yZW5kZXJl
cigpLT5pc1dpZGdldCgpKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIFJlbmRlcldpZGdl
dCogcmVuZGVyV2lkZ2V0ID0gdG9SZW5kZXJXaWRnZXQobi0+cmVuZGVyZXIoKSk7Ci0gICAgICAg
IFdpZGdldCogd2lkZ2V0ID0gcmVuZGVyV2lkZ2V0LT53aWRnZXQoKTsKLSAgICAgICAgaWYgKCF3
aWRnZXQgfHwgIXdpZGdldC0+aXNGcmFtZVZpZXcoKSkKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBGcmFtZSogZnJhbWUgPSBzdGF0aWNfY2FzdDxIVE1MRnJhbWVFbGVtZW50QmFzZSo+KG4p
LT5jb250ZW50RnJhbWUoKTsKLSAgICAgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmNvbnRlbnRS
ZW5kZXJlcigpKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIEZyYW1lVmlldyogdmlldyA9
IHN0YXRpY19jYXN0PEZyYW1lVmlldyo+KHdpZGdldCk7Ci0gICAgICAgIExheW91dFBvaW50IHdp
ZGdldFBvaW50KHJlc3VsdC5sb2NhbFBvaW50KCkueCgpICsgdmlldy0+c2Nyb2xsWCgpIC0gcmVu
ZGVyV2lkZ2V0LT5ib3JkZXJMZWZ0KCkgLSByZW5kZXJXaWRnZXQtPnBhZGRpbmdMZWZ0KCksIAot
ICAgICAgICAgICAgcmVzdWx0LmxvY2FsUG9pbnQoKS55KCkgKyB2aWV3LT5zY3JvbGxZKCkgLSBy
ZW5kZXJXaWRnZXQtPmJvcmRlclRvcCgpIC0gcmVuZGVyV2lkZ2V0LT5wYWRkaW5nVG9wKCkpOwot
ICAgICAgICBIaXRUZXN0UmVzdWx0IHdpZGdldEhpdFRlc3RSZXN1bHQod2lkZ2V0UG9pbnQsIHBh
ZGRpbmcuaGVpZ2h0KCksIHBhZGRpbmcud2lkdGgoKSwgcGFkZGluZy5oZWlnaHQoKSwgcGFkZGlu
Zy53aWR0aCgpLCBzaGFkb3dDb250ZW50RmlsdGVyUG9saWN5KTsKLSAgICAgICAgZnJhbWUtPmNv
bnRlbnRSZW5kZXJlcigpLT5oaXRUZXN0KEhpdFRlc3RSZXF1ZXN0KGhpdFR5cGUpLCB3aWRnZXRI
aXRUZXN0UmVzdWx0KTsKLSAgICAgICAgcmVzdWx0ID0gd2lkZ2V0SGl0VGVzdFJlc3VsdDsKLQot
ICAgICAgICBpZiAodGVzdFNjcm9sbGJhcnMgPT0gU2hvdWxkSGl0VGVzdFNjcm9sbGJhcnMpIHsK
LSAgICAgICAgICAgIFNjcm9sbGJhciogZXZlbnRTY3JvbGxiYXIgPSB2aWV3LT5zY3JvbGxiYXJB
dFBvaW50KHJvdW5kZWRJbnRQb2ludChwb2ludCkpOwotICAgICAgICAgICAgaWYgKGV2ZW50U2Ny
b2xsYmFyKQotICAgICAgICAgICAgICAgIHJlc3VsdC5zZXRTY3JvbGxiYXIoZXZlbnRTY3JvbGxi
YXIpOwotICAgICAgICB9Ci0gICAgfQotICAgIAogICAgIC8vIElmIG91ciBIaXRUZXN0UmVzdWx0
IGlzIG5vdCB2aXNpYmxlLCB0aGVuIHdlIHN0YXJ0ZWQgaGl0IHRlc3RpbmcgdG9vIGZhciBkb3du
IHRoZSBmcmFtZSBjaGFpbi4gCiAgICAgLy8gQW5vdGhlciBoaXQgdGVzdCBhdCB0aGUgbWFpbiBm
cmFtZSBsZXZlbCBzaG91bGQgZ2V0IHVzIHRoZSBjb3JyZWN0IHZpc2libGUgcmVzdWx0LgogICAg
IEZyYW1lKiByZXN1bHRGcmFtZSA9IHJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKSA/IHJlc3Vs
dC5pbm5lck5vblNoYXJlZE5vZGUoKS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSA6IDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlcXVlc3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVxdWVzdC5oCmluZGV4IGU2YTUyMzFiYmZjODY1YjE3
OTkyMmFiNzNlYTlmOTJjNmMyNDhkZmIuLjkyN2RhY2YxNDk2N2M3ZjBkYmU1NGFjZTRjMzJiYWE2
YjAwMWU1MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVx
dWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVxdWVzdC5oCkBA
IC0zNCw3ICszNCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIFJlbGVhc2UgPSAxIDw8IDQsCiAgICAg
ICAgIElnbm9yZUNsaXBwaW5nID0gMSA8PCA1LAogICAgICAgICBTVkdDbGlwQ29udGVudCA9IDEg
PDwgNiwKLSAgICAgICAgVG91Y2hFdmVudCA9IDEgPDwgNworICAgICAgICBUb3VjaEV2ZW50ID0g
MSA8PCA3LAorICAgICAgICBBbGxvd1NoYWRvd0NvbnRlbnQgPSAxIDw8IDgsCisgICAgICAgIEFs
bG93Q2hpbGRGcmFtZUNvbnRlbnQgPSAxIDw8IDksCisgICAgICAgIENoaWxkRnJhbWVIaXRUZXN0
ID0gMSA8PCAxMCwKKyAgICAgICAgVGVzdENoaWxkRnJhbWVTY3JvbGxCYXJzID0gMSA8PCAxMQog
ICAgIH07CiAKICAgICB0eXBlZGVmIHVuc2lnbmVkIEhpdFRlc3RSZXF1ZXN0VHlwZTsKQEAgLTUy
LDYgKzU2LDEwIEBAIHB1YmxpYzoKICAgICBib29sIHN2Z0NsaXBDb250ZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9yZXF1ZXN0VHlwZSAmIFNWR0NsaXBDb250ZW50OyB9CiAgICAgYm9vbCB0b3VjaEV2
ZW50KCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0VHlwZSAmIFRvdWNoRXZlbnQ7IH0KICAgICBi
b29sIG1vdXNlRXZlbnQoKSBjb25zdCB7IHJldHVybiAhdG91Y2hFdmVudCgpOyB9CisgICAgYm9v
bCBhbGxvd1NoYWRvd0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RUeXBlICYgQWxs
b3dTaGFkb3dDb250ZW50OyB9CisgICAgYm9vbCBhbGxvd0NoaWxkRnJhbWVDb250ZW50KCkgY29u
c3QgeyByZXR1cm4gbV9yZXF1ZXN0VHlwZSAmIEFsbG93Q2hpbGRGcmFtZUNvbnRlbnQ7IH0KKyAg
ICBib29sIGNoaWxkRnJhbWVIaXRUZXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0VHlwZSAm
IENoaWxkRnJhbWVIaXRUZXN0OyB9CisgICAgYm9vbCB0ZXN0Q2hpbGRGcmFtZVNjcm9sbEJhcnMo
KSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RUeXBlICYgVGVzdENoaWxkRnJhbWVTY3JvbGxCYXJz
OyB9CiAKICAgICAvLyBDb252ZW5pZW5jZSBmdW5jdGlvbnMKICAgICBib29sIHRvdWNoTW92ZSgp
IGNvbnN0IHsgcmV0dXJuIG1vdmUoKSAmJiB0b3VjaEV2ZW50KCk7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAppbmRleCBmNzgyMjYzYWU2MTAxMWZhYjRkODE4
ZGU0NGM2MTQ3MDE0NmY0MTJiLi5lODgxYWUwNTA3NmQ2Y2E3YTNjYzMzNDJkZGQ0YzY5ODMzNTQ2
ZTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCkBAIC0x
MDQsNyArMTA0LDcgQEAgSGl0VGVzdExvY2F0aW9uOjpIaXRUZXN0TG9jYXRpb24oY29uc3QgSGl0
VGVzdExvY2F0aW9uJiBvdGhlciwgY29uc3QgTGF5b3V0U2l6ZSYKICAgICAsIG1fYm91bmRpbmdC
b3gob3RoZXIubV9ib3VuZGluZ0JveCkKICAgICAsIG1fdHJhbnNmb3JtZWRQb2ludChvdGhlci5t
X3RyYW5zZm9ybWVkUG9pbnQpCiAgICAgLCBtX3RyYW5zZm9ybWVkUmVjdChvdGhlci5tX3RyYW5z
Zm9ybWVkUmVjdCkKLSAgICAsIG1fcmVnaW9uKHJlZ2lvbikKKyAgICAsIG1fcmVnaW9uKHJlZ2lv
biA/IHJlZ2lvbiA6IG90aGVyLm1fcmVnaW9uKQogICAgICwgbV9pc1JlY3RCYXNlZChvdGhlci5t
X2lzUmVjdEJhc2VkKQogICAgICwgbV9pc1JlY3RpbGluZWFyKG90aGVyLm1faXNSZWN0aWxpbmVh
cikKIHsKQEAgLTE5NCwyNyArMTk0LDIzIEBAIEludFJlY3QgSGl0VGVzdExvY2F0aW9uOjpyZWN0
Rm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCB1bnNpZ25lZCB0b3BQYWRkCiAKIEhp
dFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQoKSA6IEhpdFRlc3RMb2NhdGlvbigpCiAgICAgLCBt
X2lzT3ZlcldpZGdldChmYWxzZSkKLSAgICAsIG1fc2hhZG93Q29udGVudEZpbHRlclBvbGljeShE
b05vdEFsbG93U2hhZG93Q29udGVudCkKIHsKIH0KIAogSGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJl
c3VsdChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQpIDogSGl0VGVzdExvY2F0aW9uKHBvaW50KQog
ICAgICwgbV9pc092ZXJXaWRnZXQoZmFsc2UpCi0gICAgLCBtX3NoYWRvd0NvbnRlbnRGaWx0ZXJQ
b2xpY3koRG9Ob3RBbGxvd1NoYWRvd0NvbnRlbnQpCiB7CiB9CiAKLUhpdFRlc3RSZXN1bHQ6Okhp
dFRlc3RSZXN1bHQoY29uc3QgTGF5b3V0UG9pbnQmIGNlbnRlclBvaW50LCB1bnNpZ25lZCB0b3BQ
YWRkaW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcsIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVu
c2lnbmVkIGxlZnRQYWRkaW5nLCBTaGFkb3dDb250ZW50RmlsdGVyUG9saWN5IGFsbG93U2hhZG93
Q29udGVudCkKK0hpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQoY29uc3QgTGF5b3V0UG9pbnQm
IGNlbnRlclBvaW50LCB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcs
IHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nKQogICAgIDogSGl0
VGVzdExvY2F0aW9uKGNlbnRlclBvaW50LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRv
bVBhZGRpbmcsIGxlZnRQYWRkaW5nKQogICAgICwgbV9pc092ZXJXaWRnZXQoZmFsc2UpCi0gICAg
LCBtX3NoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3koYWxsb3dTaGFkb3dDb250ZW50KQogewogfQog
Ci1IaXRUZXN0UmVzdWx0OjpIaXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgb3Ro
ZXIsIFNoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3kgYWxsb3dTaGFkb3dDb250ZW50KQorSGl0VGVz
dFJlc3VsdDo6SGl0VGVzdFJlc3VsdChjb25zdCBIaXRUZXN0TG9jYXRpb24mIG90aGVyKQogICAg
IDogSGl0VGVzdExvY2F0aW9uKG90aGVyKQogICAgICwgbV9pc092ZXJXaWRnZXQoZmFsc2UpCi0g
ICAgLCBtX3NoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3koYWxsb3dTaGFkb3dDb250ZW50KQogewog
fQogCkBAIC0yMjYsNyArMjIyLDYgQEAgSGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3VsdChjb25z
dCBIaXRUZXN0UmVzdWx0JiBvdGhlcikKICAgICAsIG1faW5uZXJVUkxFbGVtZW50KG90aGVyLlVS
TEVsZW1lbnQoKSkKICAgICAsIG1fc2Nyb2xsYmFyKG90aGVyLnNjcm9sbGJhcigpKQogICAgICwg
bV9pc092ZXJXaWRnZXQob3RoZXIuaXNPdmVyV2lkZ2V0KCkpCi0gICAgLCBtX3NoYWRvd0NvbnRl
bnRGaWx0ZXJQb2xpY3kob3RoZXIuc2hhZG93Q29udGVudEZpbHRlclBvbGljeSgpKQogewogICAg
IC8vIE9ubHkgY29weSB0aGUgTm9kZVNldCBpbiBjYXNlIG9mIHJlY3QgaGl0IHRlc3QuCiAgICAg
bV9yZWN0QmFzZWRUZXN0UmVzdWx0ID0gYWRvcHRQdHIob3RoZXIubV9yZWN0QmFzZWRUZXN0UmVz
dWx0ID8gbmV3IE5vZGVTZXQoKm90aGVyLm1fcmVjdEJhc2VkVGVzdFJlc3VsdCkgOiAwKTsKQEAg
LTI0OCw3ICsyNDMsNiBAQCBIaXRUZXN0UmVzdWx0JiBIaXRUZXN0UmVzdWx0OjpvcGVyYXRvcj0o
Y29uc3QgSGl0VGVzdFJlc3VsdCYgb3RoZXIpCiAKICAgICAvLyBPbmx5IGNvcHkgdGhlIE5vZGVT
ZXQgaW4gY2FzZSBvZiByZWN0IGhpdCB0ZXN0LgogICAgIG1fcmVjdEJhc2VkVGVzdFJlc3VsdCA9
IGFkb3B0UHRyKG90aGVyLm1fcmVjdEJhc2VkVGVzdFJlc3VsdCA/IG5ldyBOb2RlU2V0KCpvdGhl
ci5tX3JlY3RCYXNlZFRlc3RSZXN1bHQpIDogMCk7Ci0gICAgbV9zaGFkb3dDb250ZW50RmlsdGVy
UG9saWN5ICA9IG90aGVyLnNoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3koKTsKIAogICAgIHJldHVy
biAqdGhpczsKIH0KQEAgLTY3NCw3ICs2NjgsNyBAQCBib29sIEhpdFRlc3RSZXN1bHQ6OmlzQ29u
dGVudEVkaXRhYmxlKCkgY29uc3QKICAgICByZXR1cm4gbV9pbm5lck5vblNoYXJlZE5vZGUtPnJl
bmRlcmVySXNFZGl0YWJsZSgpOwogfQogCi1ib29sIEhpdFRlc3RSZXN1bHQ6OmFkZE5vZGVUb1Jl
Y3RCYXNlZFRlc3RSZXN1bHQoTm9kZSogbm9kZSwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2Nh
dGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRSZWN0JiByZWN0KQorYm9vbCBIaXRUZXN0UmVz
dWx0OjphZGROb2RlVG9SZWN0QmFzZWRUZXN0UmVzdWx0KE5vZGUqIG5vZGUsIGNvbnN0IEhpdFRl
c3RSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250
YWluZXIsIGNvbnN0IExheW91dFJlY3QmIHJlY3QpCiB7CiAgICAgLy8gSWYgaXQgaXMgbm90IGEg
cmVjdC1iYXNlZCBoaXQgdGVzdCwgdGhpcyBtZXRob2QgaGFzIHRvIGJlIG5vLW9wLgogICAgIC8v
IFJldHVybiBmYWxzZSwgc28gdGhlIGhpdCB0ZXN0IHN0b3BzLgpAQCAtNjg1LDcgKzY3OSw3IEBA
IGJvb2wgSGl0VGVzdFJlc3VsdDo6YWRkTm9kZVRvUmVjdEJhc2VkVGVzdFJlc3VsdChOb2RlKiBu
b2RlLCBjb25zdCBIaXRUZXN0TG9jYXRpCiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKIAotICAgIGlmIChtX3NoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3kgPT0gRG9Ob3RBbGxv
d1NoYWRvd0NvbnRlbnQpCisgICAgaWYgKCFyZXF1ZXN0LmFsbG93U2hhZG93Q29udGVudCgpKQog
ICAgICAgICBub2RlID0gbm9kZS0+c2hhZG93QW5jZXN0b3JOb2RlKCk7CiAKICAgICBtdXRhYmxl
UmVjdEJhc2VkVGVzdFJlc3VsdCgpLmFkZChub2RlKTsKQEAgLTcwOSw3ICs3MDMsNyBAQCBib29s
IEhpdFRlc3RSZXN1bHQ6OmFkZE5vZGVUb1JlY3RCYXNlZFRlc3RSZXN1bHQoTm9kZSogbm9kZSwg
Y29uc3QgSGl0VGVzdExvY2F0aQogICAgIHJldHVybiAhcmVnaW9uRmlsbGVkOwogfQogCi1ib29s
IEhpdFRlc3RSZXN1bHQ6OmFkZE5vZGVUb1JlY3RCYXNlZFRlc3RSZXN1bHQoTm9kZSogbm9kZSwg
Y29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBGbG9hdFJl
Y3QmIHJlY3QpCitib29sIEhpdFRlc3RSZXN1bHQ6OmFkZE5vZGVUb1JlY3RCYXNlZFRlc3RSZXN1
bHQoTm9kZSogbm9kZSwgY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEhpdFRl
c3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQog
ewogICAgIC8vIElmIGl0IGlzIG5vdCBhIHJlY3QtYmFzZWQgaGl0IHRlc3QsIHRoaXMgbWV0aG9k
IGhhcyB0byBiZSBuby1vcC4KICAgICAvLyBSZXR1cm4gZmFsc2UsIHNvIHRoZSBoaXQgdGVzdCBz
dG9wcy4KQEAgLTcyMCw3ICs3MTQsNyBAQCBib29sIEhpdFRlc3RSZXN1bHQ6OmFkZE5vZGVUb1Jl
Y3RCYXNlZFRlc3RSZXN1bHQoTm9kZSogbm9kZSwgY29uc3QgSGl0VGVzdExvY2F0aQogICAgIGlm
ICghbm9kZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAobV9zaGFkb3dDb250ZW50
RmlsdGVyUG9saWN5ID09IERvTm90QWxsb3dTaGFkb3dDb250ZW50KQorICAgIGlmICghcmVxdWVz
dC5hbGxvd1NoYWRvd0NvbnRlbnQoKSkKICAgICAgICAgbm9kZSA9IG5vZGUtPnNoYWRvd0FuY2Vz
dG9yTm9kZSgpOwogCiAgICAgbXV0YWJsZVJlY3RCYXNlZFRlc3RSZXN1bHQoKS5hZGQobm9kZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaAppbmRleCBhMTRlMWQ4ZmM3
OTYzMjI4ZDIwOGJmMzBhNTRmMWUxYjU2MGZlMTA2Li5iYWM5NmEyYjFmOTJhNjU1NThjZmViMzcx
YjBhMmEyZjdiYTUzMzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0
VGVzdFJlc3VsdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0
LmgKQEAgLTQ1LDggKzQ1LDYgQEAgY2xhc3MgTm9kZTsKIGNsYXNzIFJlbmRlclJlZ2lvbjsKIGNs
YXNzIFNjcm9sbGJhcjsKIAotZW51bSBTaGFkb3dDb250ZW50RmlsdGVyUG9saWN5IHsgRG9Ob3RB
bGxvd1NoYWRvd0NvbnRlbnQsIEFsbG93U2hhZG93Q29udGVudCB9OwotCiBjbGFzcyBIaXRUZXN0
TG9jYXRpb24gewogcHVibGljOgogCkBAIC01Nyw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICAvLyBQ
YXNzIG5vbi16ZXJvIHBhZGRpbmcgdmFsdWVzIHRvIHBlcmZvcm0gYSByZWN0LWJhc2VkIGhpdCB0
ZXN0LgogICAgIEhpdFRlc3RMb2NhdGlvbihjb25zdCBMYXlvdXRQb2ludCYgY2VudGVyUG9pbnQs
IHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFkZGluZywgdW5zaWduZWQgYm90
dG9tUGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcpOwogICAgIC8vIE1ha2UgYSBjb3B5IHRo
ZSBIaXRUZXN0TG9jYXRpb24gaW4gYSBuZXcgcmVnaW9uIGJ5IGFwcGx5aW5nIGdpdmVuIG9mZnNl
dCB0byBpbnRlcm5hbCBwb2ludCBhbmQgYXJlYS4KLSAgICBIaXRUZXN0TG9jYXRpb24oY29uc3Qg
SGl0VGVzdExvY2F0aW9uJiwgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0LCBSZW5kZXJSZWdpb24q
KTsKKyAgICBIaXRUZXN0TG9jYXRpb24oY29uc3QgSGl0VGVzdExvY2F0aW9uJiwgY29uc3QgTGF5
b3V0U2l6ZSYgb2Zmc2V0LCBSZW5kZXJSZWdpb24qID0gMCk7CiAgICAgSGl0VGVzdExvY2F0aW9u
KGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYpOwogICAgIH5IaXRUZXN0TG9jYXRpb24oKTsKICAgICBI
aXRUZXN0TG9jYXRpb24mIG9wZXJhdG9yPShjb25zdCBIaXRUZXN0TG9jYXRpb24mKTsKQEAgLTEw
OSw4ICsxMDcsOCBAQCBwdWJsaWM6CiAgICAgSGl0VGVzdFJlc3VsdCgpOwogICAgIEhpdFRlc3RS
ZXN1bHQoY29uc3QgTGF5b3V0UG9pbnQmKTsKICAgICAvLyBQYXNzIG5vbi1uZWdhdGl2ZSBwYWRk
aW5nIHZhbHVlcyB0byBwZXJmb3JtIGEgcmVjdC1iYXNlZCBoaXQgdGVzdC4KLSAgICBIaXRUZXN0
UmVzdWx0KGNvbnN0IExheW91dFBvaW50JiBjZW50ZXJQb2ludCwgdW5zaWduZWQgdG9wUGFkZGlu
ZywgdW5zaWduZWQgcmlnaHRQYWRkaW5nLCB1bnNpZ25lZCBib3R0b21QYWRkaW5nLCB1bnNpZ25l
ZCBsZWZ0UGFkZGluZywgU2hhZG93Q29udGVudEZpbHRlclBvbGljeSk7Ci0gICAgSGl0VGVzdFJl
c3VsdChjb25zdCBIaXRUZXN0TG9jYXRpb24mLCBTaGFkb3dDb250ZW50RmlsdGVyUG9saWN5KTsK
KyAgICBIaXRUZXN0UmVzdWx0KGNvbnN0IExheW91dFBvaW50JiBjZW50ZXJQb2ludCwgdW5zaWdu
ZWQgdG9wUGFkZGluZywgdW5zaWduZWQgcmlnaHRQYWRkaW5nLCB1bnNpZ25lZCBib3R0b21QYWRk
aW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGluZyk7CisgICAgSGl0VGVzdFJlc3VsdChjb25zdCBIaXRU
ZXN0TG9jYXRpb24mKTsKICAgICBIaXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RSZXN1bHQmKTsK
ICAgICB+SGl0VGVzdFJlc3VsdCgpOwogICAgIEhpdFRlc3RSZXN1bHQmIG9wZXJhdG9yPShjb25z
dCBIaXRUZXN0UmVzdWx0Jik7CkBAIC0xMjUsNyArMTIzLDYgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0VG9Ob25TaGFkb3dBbmNlc3RvcigpOwogCiAgICAgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBo
aXRUZXN0TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiAqdGhpczsgfQotICAgIFNoYWRvd0NvbnRl
bnRGaWx0ZXJQb2xpY3kgc2hhZG93Q29udGVudEZpbHRlclBvbGljeSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2hhZG93Q29udGVudEZpbHRlclBvbGljeTsgfQogCiAgICAgdm9pZCBzZXRJbm5lck5vZGUo
Tm9kZSopOwogICAgIHZvaWQgc2V0SW5uZXJOb25TaGFyZWROb2RlKE5vZGUqKTsKQEAgLTE2Niw4
ICsxNjMsOCBAQCBwdWJsaWM6CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgaXQgaXMgcmVjdC1i
YXNlZCBoaXQgdGVzdCBhbmQgbmVlZHMgdG8gY29udGludWUgdW50aWwgdGhlIHJlY3QgaXMgZnVs
bHkKICAgICAvLyBlbmNsb3NlZCBieSB0aGUgYm91bmRhcmllcyBvZiBhIG5vZGUuCi0gICAgYm9v
bCBhZGROb2RlVG9SZWN0QmFzZWRUZXN0UmVzdWx0KE5vZGUqLCBjb25zdCBIaXRUZXN0TG9jYXRp
b24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFJlY3QmID0gTGF5b3V0UmVjdCgp
KTsKLSAgICBib29sIGFkZE5vZGVUb1JlY3RCYXNlZFRlc3RSZXN1bHQoTm9kZSosIGNvbnN0IEhp
dFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgRmxvYXRSZWN0Jik7Cisg
ICAgYm9vbCBhZGROb2RlVG9SZWN0QmFzZWRUZXN0UmVzdWx0KE5vZGUqLCBjb25zdCBIaXRUZXN0
UmVxdWVzdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgcG9pbnRJbkNvbnRhaW5lciwgY29uc3Qg
TGF5b3V0UmVjdCYgPSBMYXlvdXRSZWN0KCkpOworICAgIGJvb2wgYWRkTm9kZVRvUmVjdEJhc2Vk
VGVzdFJlc3VsdChOb2RlKiwgY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBjb25zdCBIaXRUZXN0TG9j
YXRpb24mIHBvaW50SW5Db250YWluZXIsIGNvbnN0IEZsb2F0UmVjdCYpOwogICAgIHZvaWQgYXBw
ZW5kKGNvbnN0IEhpdFRlc3RSZXN1bHQmKTsKIAogICAgIC8vIElmIG1fcmVjdEJhc2VkVGVzdFJl
c3VsdCBpcyAwIHRoZW4gc2V0IGl0IHRvIGEgbmV3IE5vZGVTZXQuIFJldHVybiAqbV9yZWN0QmFz
ZWRUZXN0UmVzdWx0LiBMYXp5IGFsbG9jYXRpb24gbWFrZXMKQEAgLTE5NCw4ICsxOTEsNiBAQCBw
cml2YXRlOgogICAgIFJlZlB0cjxTY3JvbGxiYXI+IG1fc2Nyb2xsYmFyOwogICAgIGJvb2wgbV9p
c092ZXJXaWRnZXQ7IC8vIFJldHVybnMgdHJ1ZSBpZiB3ZSBhcmUgb3ZlciBhIHdpZGdldCAoYW5k
IG5vdCBpbiB0aGUgYm9yZGVyL3BhZGRpbmcgYXJlYSBvZiBhIFJlbmRlcldpZGdldCBmb3IgZXhh
bXBsZSkuCiAKLSAgICBTaGFkb3dDb250ZW50RmlsdGVyUG9saWN5IG1fc2hhZG93Q29udGVudEZp
bHRlclBvbGljeTsKLQogICAgIG11dGFibGUgT3duUHRyPE5vZGVTZXQ+IG1fcmVjdEJhc2VkVGVz
dFJlc3VsdDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Jbmxp
bmVGbG93Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNw
cAppbmRleCA2MTVhNGIwYjFkZWNiMTQzMGFiZDk3ZDRiMjhiZDE0ZTNjYTQwMjgzLi40ZGJjY2Rl
ZmViNzljNWNkYzljMTc2OTk5ODNjOWVhNmMzMmQwOWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCkBAIC0xMDEyLDcgKzEwMTIsNyBAQCBib29sIElubGlu
ZUZsb3dCb3g6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRU
ZXN0UmVzdWx0JiByZQogCiAgICAgaWYgKHZpc2libGVUb0hpdFRlc3RpbmcoKSAmJiBsb2NhdGlv
bkluQ29udGFpbmVyLmludGVyc2VjdHMocmVjdCkpIHsKICAgICAgICAgcmVuZGVyZXIoKS0+dXBk
YXRlSGl0VGVzdFJlc3VsdChyZXN1bHQsIGZsaXBGb3JXcml0aW5nTW9kZShsb2NhdGlvbkluQ29u
dGFpbmVyLnBvaW50KCkgLSB0b0xheW91dFNpemUoYWNjdW11bGF0ZWRPZmZzZXQpKSk7IC8vIERv
bid0IGFkZCBpbiBtX3ggb3IgbV95IGhlcmUsIHdlIHdhbnQgY29vcmRzIGluIHRoZSBjb250YWlu
aW5nIGJsb2NrJ3Mgc3BhY2UuCi0gICAgICAgIGlmICghcmVzdWx0LmFkZE5vZGVUb1JlY3RCYXNl
ZFRlc3RSZXN1bHQocmVuZGVyZXIoKS0+bm9kZSgpLCBsb2NhdGlvbkluQ29udGFpbmVyLCByZWN0
KSkKKyAgICAgICAgaWYgKCFyZXN1bHQuYWRkTm9kZVRvUmVjdEJhc2VkVGVzdFJlc3VsdChyZW5k
ZXJlcigpLT5ub2RlKCksIHJlcXVlc3QsIGxvY2F0aW9uSW5Db250YWluZXIsIHJlY3QpKQogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lVGV4dEJveC5jcHAKaW5kZXggOTJkMDVhMzgyMWEyZmZlOWU4MGQzMzU5N2U1MjQ3ZDRm
OGVlOGJlNC4uNWJjM2I3NjUyNWMxZjA0YjczZjdhNjM3NTVkNjAzNTYxOTRmZmM3ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcApAQCAtMzQ5LDcgKzM0OSw3
IEBAIGJvb2wgSW5saW5lVGV4dEJveDo6aXNMaW5lQnJlYWsoKSBjb25zdAogICAgIHJldHVybiBy
ZW5kZXJlcigpLT5pc0JSKCkgfHwgKHJlbmRlcmVyKCktPnN0eWxlKCktPnByZXNlcnZlTmV3bGlu
ZSgpICYmIGxlbigpID09IDEgJiYgKCp0ZXh0UmVuZGVyZXIoKS0+dGV4dCgpKVtzdGFydCgpXSA9
PSAnXG4nKTsKIH0KIAotYm9vbCBJbmxpbmVUZXh0Qm94Ojpub2RlQXRQb2ludChjb25zdCBIaXRU
ZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3QgSGl0VGVzdExvY2F0aW9u
JiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZz
ZXQsIExheW91dFVuaXQgLyogbGluZVRvcCAqLywgTGF5b3V0VW5pdCAvKmxpbmVCb3R0b20qLykK
K2Jvb2wgSW5saW5lVGV4dEJveDo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJl
cXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2Nh
dGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIExh
eW91dFVuaXQgLyogbGluZVRvcCAqLywgTGF5b3V0VW5pdCAvKmxpbmVCb3R0b20qLykKIHsKICAg
ICBpZiAoaXNMaW5lQnJlYWsoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzU5LDcgKzM1
OSw3IEBAIGJvb2wgSW5saW5lVGV4dEJveDo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVl
c3QmLCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGNvCiAgICAgRmxvYXRSZWN0IHJlY3QoYm94T3Jp
Z2luLCBzaXplKCkpOwogICAgIGlmIChtX3RydW5jYXRpb24gIT0gY0Z1bGxUcnVuY2F0aW9uICYm
IHZpc2libGVUb0hpdFRlc3RpbmcoKSAmJiBsb2NhdGlvbkluQ29udGFpbmVyLmludGVyc2VjdHMo
cmVjdCkpIHsKICAgICAgICAgcmVuZGVyZXIoKS0+dXBkYXRlSGl0VGVzdFJlc3VsdChyZXN1bHQs
IGZsaXBGb3JXcml0aW5nTW9kZShsb2NhdGlvbkluQ29udGFpbmVyLnBvaW50KCkgLSB0b0xheW91
dFNpemUoYWNjdW11bGF0ZWRPZmZzZXQpKSk7Ci0gICAgICAgIGlmICghcmVzdWx0LmFkZE5vZGVU
b1JlY3RCYXNlZFRlc3RSZXN1bHQocmVuZGVyZXIoKS0+bm9kZSgpLCBsb2NhdGlvbkluQ29udGFp
bmVyLCByZWN0KSkKKyAgICAgICAgaWYgKCFyZXN1bHQuYWRkTm9kZVRvUmVjdEJhc2VkVGVzdFJl
c3VsdChyZW5kZXJlcigpLT5ub2RlKCksIHJlcXVlc3QsIGxvY2F0aW9uSW5Db250YWluZXIsIHJl
Y3QpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IDUwNmE1MGE5MGFl
OWRhMGY2OWFkZjZjZjUzODdiOTQ1NjUzOTcxNTMuLjQ0MjVkOWFhMzlmYTQ2NmE5NzA5NjUyNmEy
ZGFhMTQzMWM3YTQ4MTMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cApAQCAtNDY5OSw3ICs0Njk5LDcgQEAgYm9vbCBSZW5kZXJCbG9jazo6bm9kZUF0UG9pbnQoY29u
c3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3UKICAgICBpZiAo
KGhpdFRlc3RBY3Rpb24gPT0gSGl0VGVzdEJsb2NrQmFja2dyb3VuZCB8fCBoaXRUZXN0QWN0aW9u
ID09IEhpdFRlc3RDaGlsZEJsb2NrQmFja2dyb3VuZCkgJiYgaXNQb2ludEluT3ZlcmZsb3dDb250
cm9sKHJlc3VsdCwgbG9jYXRpb25JbkNvbnRhaW5lci5wb2ludCgpLCBhZGp1c3RlZExvY2F0aW9u
KSkgewogICAgICAgICB1cGRhdGVIaXRUZXN0UmVzdWx0KHJlc3VsdCwgbG9jYXRpb25JbkNvbnRh
aW5lci5wb2ludCgpIC0gbG9jYWxPZmZzZXQpOwogICAgICAgICAvLyBGSVhNRTogaXNQb2ludElu
T3ZlcmZsb3dDb250cm9sKCkgZG9lc24ndCBoYW5kbGUgcmVjdC1iYXNlZCB0ZXN0cyB5ZXQuCi0g
ICAgICAgIGlmICghcmVzdWx0LmFkZE5vZGVUb1JlY3RCYXNlZFRlc3RSZXN1bHQobm9kZSgpLCBs
b2NhdGlvbkluQ29udGFpbmVyKSkKKyAgICAgICAgaWYgKCFyZXN1bHQuYWRkTm9kZVRvUmVjdEJh
c2VkVGVzdFJlc3VsdChub2RlKCksIHJlcXVlc3QsIGxvY2F0aW9uSW5Db250YWluZXIpKQogICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTQ3MzIsNyArNDczMiw3IEBAIGJvb2wg
UmVuZGVyQmxvY2s6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBI
aXRUZXN0UmVzdWx0JiByZXN1CiAgICAgICAgIExheW91dFJlY3QgYm91bmRzUmVjdChhZGp1c3Rl
ZExvY2F0aW9uLCBzaXplKCkpOwogICAgICAgICBpZiAodmlzaWJsZVRvSGl0VGVzdGluZygpICYm
IGxvY2F0aW9uSW5Db250YWluZXIuaW50ZXJzZWN0cyhib3VuZHNSZWN0KSkgewogICAgICAgICAg
ICAgdXBkYXRlSGl0VGVzdFJlc3VsdChyZXN1bHQsIGZsaXBGb3JXcml0aW5nTW9kZShsb2NhdGlv
bkluQ29udGFpbmVyLnBvaW50KCkgLSBsb2NhbE9mZnNldCkpOwotICAgICAgICAgICAgaWYgKCFy
ZXN1bHQuYWRkTm9kZVRvUmVjdEJhc2VkVGVzdFJlc3VsdChub2RlKCksIGxvY2F0aW9uSW5Db250
YWluZXIsIGJvdW5kc1JlY3QpKQorICAgICAgICAgICAgaWYgKCFyZXN1bHQuYWRkTm9kZVRvUmVj
dEJhc2VkVGVzdFJlc3VsdChub2RlKCksIHJlcXVlc3QsIGxvY2F0aW9uSW5Db250YWluZXIsIGJv
dW5kc1JlY3QpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCA1MWViNGExMzhhNjEw
MzZhZjJiNzk1OWY4YmU4ZTc5YjY5ZmU2M2NjLi40NDcwNzE5MWQwZWZiNTRmODYzNDIxYjU5MjFj
NTI1YTEwOTczODZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAt
Nzc2LDcgKzc3Niw3IEBAIGJvb2wgUmVuZGVyQm94Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0
UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0CiAgICAgYm91bmRzUmVjdC5t
b3ZlQnkoYWRqdXN0ZWRMb2NhdGlvbik7CiAgICAgaWYgKHZpc2libGVUb0hpdFRlc3RpbmcoKSAm
JiBhY3Rpb24gPT0gSGl0VGVzdEZvcmVncm91bmQgJiYgbG9jYXRpb25JbkNvbnRhaW5lci5pbnRl
cnNlY3RzKGJvdW5kc1JlY3QpKSB7CiAgICAgICAgIHVwZGF0ZUhpdFRlc3RSZXN1bHQocmVzdWx0
LCBsb2NhdGlvbkluQ29udGFpbmVyLnBvaW50KCkgLSB0b0xheW91dFNpemUoYWRqdXN0ZWRMb2Nh
dGlvbikpOwotICAgICAgICBpZiAoIXJlc3VsdC5hZGROb2RlVG9SZWN0QmFzZWRUZXN0UmVzdWx0
KG5vZGUoKSwgbG9jYXRpb25JbkNvbnRhaW5lciwgYm91bmRzUmVjdCkpCisgICAgICAgIGlmICgh
cmVzdWx0LmFkZE5vZGVUb1JlY3RCYXNlZFRlc3RSZXN1bHQobm9kZSgpLCByZXF1ZXN0LCBsb2Nh
dGlvbkluQ29udGFpbmVyLCBib3VuZHNSZWN0KSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1l
QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmNwcApp
bmRleCBhYTgyODcwZDRlZmE4YWRiYzgxOTZmZGQ2YTUwNmY1OThjYjA3NTM3Li4xM2UwYjBmMzI3
NWRiNWY4NDkwNmIwODZkYmUxN2RkMmJmYmQ4ODkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmNwcApAQCAtMjksNiArMjksOCBAQAogI2luY2x1ZGUgIkZy
YW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lRWxlbWVu
dEJhc2UuaCIKKyNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCisjaW5jbHVkZSAiUmVuZGVyTGF5
ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTEwNCw0ICsxMDYsMzEgQEAgdm9pZCBSZW5kZXJGcmFtZUJhc2U6OmxheW91dFdpdGhGbGF0dGVu
aW5nKGJvb2wgaGFzRml4ZWRXaWR0aCwgYm9vbCBoYXNGaXhlZEhlaWcKICAgICBzZXROZWVkc0xh
eW91dChmYWxzZSk7CiB9CiAKK2Jvb2wgUmVuZGVyRnJhbWVCYXNlOjpub2RlQXRQb2ludChjb25z
dCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBjb25zdCBI
aXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBh
Y2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbiBhY3Rpb24pCit7CisgICAgaWYgKHJlcXVl
c3QuYWxsb3dDaGlsZEZyYW1lQ29udGVudCgpKSB7CisgICAgICAgIEZyYW1lVmlldyogY2hpbGRG
cmFtZVZpZXcgPSBzdGF0aWNfY2FzdDxGcmFtZVZpZXcqPih3aWRnZXQoKSk7CisgICAgICAgIFJl
bmRlclZpZXcqIGNoaWxkUm9vdCA9IGNoaWxkRnJhbWVWaWV3ID8gc3RhdGljX2Nhc3Q8UmVuZGVy
Vmlldyo+KGNoaWxkRnJhbWVWaWV3LT5mcmFtZSgpLT5jb250ZW50UmVuZGVyZXIoKSkgOiAwOwor
ICAgICAgICBpZiAoY2hpbGRSb290KSB7CisgICAgICAgICAgICBIaXRUZXN0TG9jYXRpb24gbmV3
SGl0VGVzdExvY2F0aW9uKGxvY2F0aW9uSW5Db250YWluZXIsIC1sb2NhdGlvbigpIC0gYWNjdW11
bGF0ZWRPZmZzZXQpOworICAgICAgICAgICAgSGl0VGVzdFJlcXVlc3QgbmV3SGl0VGVzdFJlcXVl
c3QocmVxdWVzdC50eXBlKCkgfCBIaXRUZXN0UmVxdWVzdDo6Q2hpbGRGcmFtZUhpdFRlc3QpOwor
CisgICAgICAgICAgICBib29sIGlzSW5zaWRlQ2hpbGRGcmFtZSA9IGNoaWxkUm9vdC0+bGF5ZXIo
KS0+aGl0VGVzdChuZXdIaXRUZXN0UmVxdWVzdCwgbmV3SGl0VGVzdExvY2F0aW9uLCByZXN1bHQp
OworICAgICAgICAgICAgaWYgKGlzSW5zaWRlQ2hpbGRGcmFtZSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAgaWYgKHJlcXVlc3QudGVzdENoaWxkRnJhbWVTY3Jv
bGxCYXJzKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBTY3JvbGxWaWV3IHNjcm9sbGJhcnMgYXJl
IG5vdCB0aGUgc2FtZSBhcyBSZW5kZXJMYXllciBzY3JvbGxiYXJzIHRlc3RlZCBieSBSZW5kZXJM
YXllcjo6aGl0VGVzdE92ZXJmbG93Q29udHJvbHMsCisgICAgICAgICAgICAgICAgLy8gc28gd2Ug
bmVlZCB0byB0ZXN0IFNjcm9sbFZpZXcgc2Nyb2xsYmFycyBzZXBhcmF0ZWx5IGhlcmUuCisgICAg
ICAgICAgICAgICAgLy8gRklYTUU6IENvbnNpZGVyIGlmIHRoaXMgdGVzdCBjb3VsZCBiZSBkb25l
IHVuY29uZGl0aW9uYWxseS4KKyAgICAgICAgICAgICAgICBTY3JvbGxiYXIqIGZyYW1lU2Nyb2xs
YmFyID0gY2hpbGRGcmFtZVZpZXctPnNjcm9sbGJhckF0UG9pbnQobmV3SGl0VGVzdExvY2F0aW9u
LnJvdW5kZWRQb2ludCgpKTsKKyAgICAgICAgICAgICAgICBpZiAoZnJhbWVTY3JvbGxiYXIpCisg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdC5zZXRTY3JvbGxiYXIoZnJhbWVTY3JvbGxiYXIpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIFJlbmRlclBhcnQ6
Om5vZGVBdFBvaW50KHJlcXVlc3QsIHJlc3VsdCwgbG9jYXRpb25JbkNvbnRhaW5lciwgYWNjdW11
bGF0ZWRPZmZzZXQsIGFjdGlvbik7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGcmFtZUJhc2UuaAppbmRleCA0ZmFkNTYwYzViMzM3Zjk2YjgxM2IwY2I3OTA1NDUzNjJk
YzY2ODdjLi5hN2RlZWRhYjEwMjgzZGY2OTU0MThlZGUwZmJiOTRkNDllMTJlNDkxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5oCkBAIC0zNiw2ICszNiw3IEBA
IHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBSZW5kZXJGcmFtZUJhc2UoRWxlbWVudCopOwogCiBw
dWJsaWM6CisgICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0
JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRh
aW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9u
KSBPVkVSUklERTsKICAgICB2b2lkIGxheW91dFdpdGhGbGF0dGVuaW5nKGJvb2wgZml4ZWRXaWR0
aCwgYm9vbCBmaXhlZEhlaWdodCk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmNwcAppbmRleCA3MzE4MzdlMTE3YzUwYTYzYTI3MmYyMGNiN2ZmYjkzMTJiYzFiZGU5
Li4xOTUzZjUzMzFlMTU4OTRkM2Q1MjA2ZDk2YzgyNzc3OTgwMTFiYjIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKQEAgLTUwMSw3ICs1MDEsNyBAQCBIVE1MTWFw
RWxlbWVudCogUmVuZGVySW1hZ2U6OmltYWdlTWFwKCkgY29uc3QKIAogYm9vbCBSZW5kZXJJbWFn
ZTo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1
bHQmIHJlc3VsdCwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBj
b25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24gaGl0VGVz
dEFjdGlvbikKIHsKLSAgICBIaXRUZXN0UmVzdWx0IHRlbXBSZXN1bHQocmVzdWx0LmhpdFRlc3RM
b2NhdGlvbigpLCByZXN1bHQuc2hhZG93Q29udGVudEZpbHRlclBvbGljeSgpKTsKKyAgICBIaXRU
ZXN0UmVzdWx0IHRlbXBSZXN1bHQocmVzdWx0LmhpdFRlc3RMb2NhdGlvbigpKTsKICAgICBib29s
IGluc2lkZSA9IFJlbmRlclJlcGxhY2VkOjpub2RlQXRQb2ludChyZXF1ZXN0LCB0ZW1wUmVzdWx0
LCBsb2NhdGlvbkluQ29udGFpbmVyLCBhY2N1bXVsYXRlZE9mZnNldCwgaGl0VGVzdEFjdGlvbik7
CiAKICAgICBpZiAodGVtcFJlc3VsdC5pbm5lck5vZGUoKSAmJiBub2RlKCkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDk1ZGU5Mzg1YjVhN2I4ZWYxODM3
NDc3NjU5NTNhOWY5NTdjZTBkMzIuLjk2ZmU0NjgwMmE5MDk3YmZjNjk0ZjczMmNmMmYwZmI0YWQ5
MjIxMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtMzQ0
Niw3ICszNDQ2LDcgQEAgYm9vbCBSZW5kZXJMYXllcjo6aGl0VGVzdChjb25zdCBIaXRUZXN0UmVx
dWVzdCYgcmVxdWVzdCwgY29uc3QgSGl0VGVzdExvY2F0aW9uJgogICAgICAgICAvLyBXZSBkaWRu
J3QgaGl0IGFueSBsYXllci4gSWYgd2UgYXJlIHRoZSByb290IGxheWVyIGFuZCB0aGUgbW91c2Ug
aXMgLS0gb3IganVzdCB3YXMgLS0gZG93biwgCiAgICAgICAgIC8vIHJldHVybiBvdXJzZWx2ZXMu
IFdlIGRvIHRoaXMgc28gbW91c2UgZXZlbnRzIGNvbnRpbnVlIGdldHRpbmcgZGVsaXZlcmVkIGFm
dGVyIGEgZHJhZyBoYXMgCiAgICAgICAgIC8vIGV4aXRlZCB0aGUgV2ViVmlldywgYW5kIHNvIGhp
dCB0ZXN0aW5nIG92ZXIgYSBzY3JvbGxiYXIgaGl0cyB0aGUgY29udGVudCBkb2N1bWVudC4KLSAg
ICAgICAgaWYgKChyZXF1ZXN0LmFjdGl2ZSgpIHx8IHJlcXVlc3QucmVsZWFzZSgpKSAmJiBpc1Jv
b3RMYXllcigpKSB7CisgICAgICAgIGlmICghcmVxdWVzdC5jaGlsZEZyYW1lSGl0VGVzdCgpICYm
IChyZXF1ZXN0LmFjdGl2ZSgpIHx8IHJlcXVlc3QucmVsZWFzZSgpKSAmJiBpc1Jvb3RMYXllcigp
KSB7CiAgICAgICAgICAgICByZW5kZXJlcigpLT51cGRhdGVIaXRUZXN0UmVzdWx0KHJlc3VsdCwg
dG9SZW5kZXJWaWV3KHJlbmRlcmVyKCkpLT5mbGlwRm9yV3JpdGluZ01vZGUocmVzdWx0LnBvaW50
KCkpKTsKICAgICAgICAgICAgIGluc2lkZUxheWVyID0gdGhpczsKICAgICAgICAgfQpAQCAtMzY4
Miw3ICszNjgyLDcgQEAgUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjpoaXRUZXN0TGF5ZXIoUmVu
ZGVyTGF5ZXIqIHJvb3RMYXllciwgUmVuZGVyTGF5ZXIqIGNvbnQKICAgICAvLyBOZXh0IHdlIHdh
bnQgdG8gc2VlIGlmIHRoZSBtb3VzZSBwb3MgaXMgaW5zaWRlIHRoZSBjaGlsZCBSZW5kZXJPYmpl
Y3RzIG9mIHRoZSBsYXllci4KICAgICBpZiAoZmdSZWN0LmludGVyc2VjdHMoaGl0VGVzdExvY2F0
aW9uKSAmJiBpc1NlbGZQYWludGluZ0xheWVyKCkpIHsKICAgICAgICAgLy8gSGl0IHRlc3Qgd2l0
aCBhIHRlbXBvcmFyeSBIaXRUZXN0UmVzdWx0LCBiZWNhdXNlIHdlIG9ubHkgd2FudCB0byBjb21t
aXQgdG8gJ3Jlc3VsdCcgaWYgd2Uga25vdyB3ZSdyZSBmcm9udG1vc3QuCi0gICAgICAgIEhpdFRl
c3RSZXN1bHQgdGVtcFJlc3VsdChyZXN1bHQuaGl0VGVzdExvY2F0aW9uKCksIHJlc3VsdC5zaGFk
b3dDb250ZW50RmlsdGVyUG9saWN5KCkpOworICAgICAgICBIaXRUZXN0UmVzdWx0IHRlbXBSZXN1
bHQocmVzdWx0LmhpdFRlc3RMb2NhdGlvbigpKTsKICAgICAgICAgaWYgKGhpdFRlc3RDb250ZW50
cyhyZXF1ZXN0LCB0ZW1wUmVzdWx0LCBsYXllckJvdW5kcywgaGl0VGVzdExvY2F0aW9uLCBIaXRU
ZXN0RGVzY2VuZGFudHMpCiAgICAgICAgICAgICAmJiBpc0hpdENhbmRpZGF0ZSh0aGlzLCBmYWxz
ZSwgek9mZnNldEZvckNvbnRlbnRzUHRyLCB1bmZsYXR0ZW5lZFRyYW5zZm9ybVN0YXRlLmdldCgp
KSkgewogICAgICAgICAgICAgaWYgKHJlc3VsdC5pc1JlY3RCYXNlZFRlc3QoKSkKQEAgLTM3MTEs
NyArMzcxMSw3IEBAIFJlbmRlckxheWVyKiBSZW5kZXJMYXllcjo6aGl0VGVzdExheWVyKFJlbmRl
ckxheWVyKiByb290TGF5ZXIsIFJlbmRlckxheWVyKiBjb250CiAgICAgICAgIHJldHVybiBjYW5k
aWRhdGVMYXllcjsKIAogICAgIGlmIChiZ1JlY3QuaW50ZXJzZWN0cyhoaXRUZXN0TG9jYXRpb24p
ICYmIGlzU2VsZlBhaW50aW5nTGF5ZXIoKSkgewotICAgICAgICBIaXRUZXN0UmVzdWx0IHRlbXBS
ZXN1bHQocmVzdWx0LmhpdFRlc3RMb2NhdGlvbigpLCByZXN1bHQuc2hhZG93Q29udGVudEZpbHRl
clBvbGljeSgpKTsKKyAgICAgICAgSGl0VGVzdFJlc3VsdCB0ZW1wUmVzdWx0KHJlc3VsdC5oaXRU
ZXN0TG9jYXRpb24oKSk7CiAgICAgICAgIGlmIChoaXRUZXN0Q29udGVudHMocmVxdWVzdCwgdGVt
cFJlc3VsdCwgbGF5ZXJCb3VuZHMsIGhpdFRlc3RMb2NhdGlvbiwgSGl0VGVzdFNlbGYpCiAgICAg
ICAgICAgICAmJiBpc0hpdENhbmRpZGF0ZSh0aGlzLCBmYWxzZSwgek9mZnNldEZvckNvbnRlbnRz
UHRyLCB1bmZsYXR0ZW5lZFRyYW5zZm9ybVN0YXRlLmdldCgpKSkgewogICAgICAgICAgICAgaWYg
KHJlc3VsdC5pc1JlY3RCYXNlZFRlc3QoKSkKQEAgLTM3NjgsNyArMzc2OCw3IEBAIFJlbmRlckxh
eWVyKiBSZW5kZXJMYXllcjo6aGl0VGVzdExpc3QoVmVjdG9yPFJlbmRlckxheWVyKj4qIGxpc3Qs
IFJlbmRlckxheWVyKiByCiAgICAgZm9yIChpbnQgaSA9IGxpc3QtPnNpemUoKSAtIDE7IGkgPj0g
MDsgLS1pKSB7CiAgICAgICAgIFJlbmRlckxheWVyKiBjaGlsZExheWVyID0gbGlzdC0+YXQoaSk7
CiAgICAgICAgIFJlbmRlckxheWVyKiBoaXRMYXllciA9IDA7Ci0gICAgICAgIEhpdFRlc3RSZXN1
bHQgdGVtcFJlc3VsdChyZXN1bHQuaGl0VGVzdExvY2F0aW9uKCksIHJlc3VsdC5zaGFkb3dDb250
ZW50RmlsdGVyUG9saWN5KCkpOworICAgICAgICBIaXRUZXN0UmVzdWx0IHRlbXBSZXN1bHQocmVz
dWx0LmhpdFRlc3RMb2NhdGlvbigpKTsKICAgICAgICAgaWYgKGNoaWxkTGF5ZXItPmlzUGFnaW5h
dGVkKCkpCiAgICAgICAgICAgICBoaXRMYXllciA9IGhpdFRlc3RQYWdpbmF0ZWRDaGlsZExheWVy
KGNoaWxkTGF5ZXIsIHJvb3RMYXllciwgcmVxdWVzdCwgdGVtcFJlc3VsdCwgaGl0VGVzdFJlY3Qs
IGhpdFRlc3RMb2NhdGlvbiwgdHJhbnNmb3JtU3RhdGUsIHpPZmZzZXRGb3JEZXNjZW5kYW50cyk7
CiAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSZWdpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAK
aW5kZXggZjU2NDNjNzcxNzVjN2ZmMTUzYzBkNDEzMTQyMmYxZWM5MzNjMjJiYy4uYWYyMzYxZTll
MzQzMjA1NWIzYjIzNDcwY2Y1OGUwODJmZjA4NWJiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJlZ2lvbi5jcHAKQEAgLTEzNCw3ICsxMzQsNyBAQCBib29sIFJlbmRlclJlZ2lv
bjo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1
bHQmIHJlcwogICAgICAgICBpZiAobV9mbG93VGhyZWFkICYmIG1fZmxvd1RocmVhZC0+aGl0VGVz
dFJlZ2lvbih0aGlzLCByZXF1ZXN0LCByZXN1bHQsIGxvY2F0aW9uSW5Db250YWluZXIsIExheW91
dFBvaW50KGFkanVzdGVkTG9jYXRpb24ueCgpICsgYm9yZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQo
KSwgYWRqdXN0ZWRMb2NhdGlvbi55KCkgKyBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3AoKSkpKQog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIHVwZGF0ZUhpdFRlc3RSZXN1bHQocmVz
dWx0LCBsb2NhdGlvbkluQ29udGFpbmVyLnBvaW50KCkgLSB0b0xheW91dFNpemUoYWRqdXN0ZWRM
b2NhdGlvbikpOwotICAgICAgICBpZiAoIXJlc3VsdC5hZGROb2RlVG9SZWN0QmFzZWRUZXN0UmVz
dWx0KG5vZGUoKSwgbG9jYXRpb25JbkNvbnRhaW5lciwgYm91bmRzUmVjdCkpCisgICAgICAgIGlm
ICghcmVzdWx0LmFkZE5vZGVUb1JlY3RCYXNlZFRlc3RSZXN1bHQobm9kZSgpLCByZXF1ZXN0LCBs
b2NhdGlvbkluQ29udGFpbmVyLCBib3VuZHNSZWN0KSkKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRh
YmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKaW5kZXgg
NGMzOGQ0ZWY0NTY3YmU0ZTA5MTA0YzgyYWEwZDA0NzY4NjExM2I1NC4uYWRhOGZmYjIwZmRlMTRk
YjBjZmVjYjMyZjkzYzhiNjFhOWZmZjk4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGUuY3BwCkBAIC0xMjkxLDcgKzEyOTEsNyBAQCBib29sIFJlbmRlclRhYmxlOjpub2Rl
QXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVz
dQogICAgIExheW91dFJlY3QgYm91bmRzUmVjdChhZGp1c3RlZExvY2F0aW9uLCBzaXplKCkpOwog
ICAgIGlmICh2aXNpYmxlVG9IaXRUZXN0aW5nKCkgJiYgKGFjdGlvbiA9PSBIaXRUZXN0QmxvY2tC
YWNrZ3JvdW5kIHx8IGFjdGlvbiA9PSBIaXRUZXN0Q2hpbGRCbG9ja0JhY2tncm91bmQpICYmIGxv
Y2F0aW9uSW5Db250YWluZXIuaW50ZXJzZWN0cyhib3VuZHNSZWN0KSkgewogICAgICAgICB1cGRh
dGVIaXRUZXN0UmVzdWx0KHJlc3VsdCwgZmxpcEZvcldyaXRpbmdNb2RlKGxvY2F0aW9uSW5Db250
YWluZXIucG9pbnQoKSAtIHRvTGF5b3V0U2l6ZShhZGp1c3RlZExvY2F0aW9uKSkpOwotICAgICAg
ICBpZiAoIXJlc3VsdC5hZGROb2RlVG9SZWN0QmFzZWRUZXN0UmVzdWx0KG5vZGUoKSwgbG9jYXRp
b25JbkNvbnRhaW5lciwgYm91bmRzUmVjdCkpCisgICAgICAgIGlmICghcmVzdWx0LmFkZE5vZGVU
b1JlY3RCYXNlZFRlc3RSZXN1bHQobm9kZSgpLCByZXF1ZXN0LCBsb2NhdGlvbkluQ29udGFpbmVy
LCBib3VuZHNSZWN0KSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKaW5kZXggYzhkMjZm
ODQyMjkwOGNmOTRhNGE0MjdjYjkzNjliNjFlYjkzYTczMi4uZjcxMTVkOTI2NWJiOWIxZjUyNjEx
Yjk3YWJkNGY4MmFkN2FjYjRkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jvb3QuY3BwCkBAIC00MjksNyArNDI5LDcgQEAgYm9vbCBSZW5kZXJTVkdSb290
Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3Vs
dCYgcmUKICAgICAgICAgICAgIC8vIEZJWE1FOiBub2RlQXRGbG9hdFBvaW50KCkgZG9lc24ndCBo
YW5kbGUgcmVjdC1iYXNlZCBoaXQgdGVzdHMgeWV0LgogICAgICAgICAgICAgaWYgKGNoaWxkLT5u
b2RlQXRGbG9hdFBvaW50KHJlcXVlc3QsIHJlc3VsdCwgbG9jYWxQb2ludCwgaGl0VGVzdEFjdGlv
bikpIHsKICAgICAgICAgICAgICAgICB1cGRhdGVIaXRUZXN0UmVzdWx0KHJlc3VsdCwgcG9pbnRJ
bkJvcmRlckJveCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuYWRkTm9kZVRvUmVjdEJh
c2VkVGVzdFJlc3VsdChjaGlsZC0+bm9kZSgpLCBsb2NhdGlvbkluQ29udGFpbmVyKSkKKyAgICAg
ICAgICAgICAgICBpZiAoIXJlc3VsdC5hZGROb2RlVG9SZWN0QmFzZWRUZXN0UmVzdWx0KGNoaWxk
LT5ub2RlKCksIHJlcXVlc3QsIGxvY2F0aW9uSW5Db250YWluZXIpKQogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNDQ0LDcgKzQ0
NCw3IEBAIGJvb2wgUmVuZGVyU1ZHUm9vdDo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVl
c3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlCiAgICAgICAgIExheW91dFJlY3QgYm91bmRz
UmVjdChhY2N1bXVsYXRlZE9mZnNldCArIGxvY2F0aW9uKCksIHNpemUoKSk7CiAgICAgICAgIGlm
IChsb2NhdGlvbkluQ29udGFpbmVyLmludGVyc2VjdHMoYm91bmRzUmVjdCkpIHsKICAgICAgICAg
ICAgIHVwZGF0ZUhpdFRlc3RSZXN1bHQocmVzdWx0LCBwb2ludEluQm9yZGVyQm94KTsKLSAgICAg
ICAgICAgIGlmICghcmVzdWx0LmFkZE5vZGVUb1JlY3RCYXNlZFRlc3RSZXN1bHQobm9kZSgpLCBs
b2NhdGlvbkluQ29udGFpbmVyLCBib3VuZHNSZWN0KSkKKyAgICAgICAgICAgIGlmICghcmVzdWx0
LmFkZE5vZGVUb1JlY3RCYXNlZFRlc3RSZXN1bHQobm9kZSgpLCByZXF1ZXN0LCBsb2NhdGlvbklu
Q29udGFpbmVyLCBib3VuZHNSZWN0KSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
U1ZHSW5saW5lVGV4dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lu
bGluZVRleHRCb3guY3BwCmluZGV4IDVhY2Y0N2U5MTQ3ZmI3YWM1MWE0ZDQyOWQ3N2M0MjYwZTZk
NTZhMDAuLjc4NjRkNGVlOGEyZDAxMDc5NWUwNDA3MDg2MGQ1N2I4NmQ4M2Q0YmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcApAQCAt
NzE2LDcgKzcxNiw3IEBAIGJvb2wgU1ZHSW5saW5lVGV4dEJveDo6bm9kZUF0UG9pbnQoY29uc3Qg
SGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmCiAgICAgICAgICAgICBGbG9h
dFJlY3QgcmVjdChib3hPcmlnaW4sIHNpemUoKSk7CiAgICAgICAgICAgICBpZiAobG9jYXRpb25J
bkNvbnRhaW5lci5pbnRlcnNlY3RzKHJlY3QpKSB7CiAgICAgICAgICAgICAgICAgcmVuZGVyZXIo
KS0+dXBkYXRlSGl0VGVzdFJlc3VsdChyZXN1bHQsIGxvY2F0aW9uSW5Db250YWluZXIucG9pbnQo
KSAtIHRvTGF5b3V0U2l6ZShhY2N1bXVsYXRlZE9mZnNldCkpOwotICAgICAgICAgICAgICAgIGlm
ICghcmVzdWx0LmFkZE5vZGVUb1JlY3RCYXNlZFRlc3RSZXN1bHQocmVuZGVyZXIoKS0+bm9kZSgp
LCBsb2NhdGlvbkluQ29udGFpbmVyLCByZWN0KSkKKyAgICAgICAgICAgICAgICBpZiAoIXJlc3Vs
dC5hZGROb2RlVG9SZWN0QmFzZWRUZXN0UmVzdWx0KHJlbmRlcmVyKCktPm5vZGUoKSwgcmVxdWVz
dCwgbG9jYXRpb25JbkNvbnRhaW5lciwgcmVjdCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwCmluZGV4IGMwMTRhZGM3NGZkZjU3YWNkZWFjOTc4MGIwN2UwYTcxZjEyZDMyNGQu
LmQwM2YwM2MwYmM1NjE5ZTI0MzJlN2Q4ZDY2NDhlMzhlMTBlN2U1ZWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTk2NiwxNCArOTY2LDE0IEBAIHVuc2lnbmVkIEludGVy
bmFsczo6dG91Y2hFdmVudEhhbmRsZXJDb3VudChEb2N1bWVudCogZG9jdW1lbnQsIEV4Y2VwdGlv
bkNvZGUmIGVjCiB9CiAKIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IEludGVybmFsczo6bm9kZXNGcm9t
UmVjdChEb2N1bWVudCogZG9jdW1lbnQsIGludCB4LCBpbnQgeSwgdW5zaWduZWQgdG9wUGFkZGlu
ZywgdW5zaWduZWQgcmlnaHRQYWRkaW5nLAotICAgIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVu
c2lnbmVkIGxlZnRQYWRkaW5nLCBib29sIGlnbm9yZUNsaXBwaW5nLCBib29sIGFsbG93U2hhZG93
Q29udGVudCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CisgICAgdW5zaWduZWQgYm90dG9tUGFk
ZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcsIGJvb2wgaWdub3JlQ2xpcHBpbmcsIGJvb2wgYWxs
b3dTaGFkb3dDb250ZW50LCBib29sIGFsbG93Q2hpbGRGcmFtZUNvbnRlbnQsIEV4Y2VwdGlvbkNv
ZGUmIGVjKSBjb25zdAogewogICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5mcmFtZSgp
IHx8ICFkb2N1bWVudC0+ZnJhbWUoKS0+dmlldygpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9B
Q0NFU1NfRVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICByZXR1cm4gZG9jdW1l
bnQtPm5vZGVzRnJvbVJlY3QoeCwgeSwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21Q
YWRkaW5nLCBsZWZ0UGFkZGluZywgaWdub3JlQ2xpcHBpbmcsIGFsbG93U2hhZG93Q29udGVudCk7
CisgICAgcmV0dXJuIGRvY3VtZW50LT5ub2Rlc0Zyb21SZWN0KHgsIHksIHRvcFBhZGRpbmcsIHJp
Z2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcsIGlnbm9yZUNsaXBwaW5nLCBh
bGxvd1NoYWRvd0NvbnRlbnQsIGFsbG93Q2hpbGRGcmFtZUNvbnRlbnQpOwogfQogCiB2b2lkIElu
dGVybmFsczo6ZW1pdEluc3BlY3RvckRpZEJlZ2luRnJhbWUoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmgKaW5kZXggYjczYjdhODAzMjY3ZTAxMjcyMDcwYWRhMGJjZWY5ZDM2MGViYTFmYy4u
MmM3Yzg2MGE4MGQwNTEwN2JjZmMyZjUzYTY5ZmM1NzA5MjkyZTUxOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5oCkBAIC0xNjAsNyArMTYwLDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVk
IHRvdWNoRXZlbnRIYW5kbGVyQ291bnQoRG9jdW1lbnQqLCBFeGNlcHRpb25Db2RlJik7CiAKICAg
ICBQYXNzUmVmUHRyPE5vZGVMaXN0PiBub2Rlc0Zyb21SZWN0KERvY3VtZW50KiwgaW50IHgsIGlu
dCB5LCB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcsCi0gICAgICAg
IHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nLCBib29sIGlnbm9y
ZUNsaXBwaW5nLCBib29sIGFsbG93U2hhZG93Q29udGVudCwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0
OworICAgICAgICB1bnNpZ25lZCBib3R0b21QYWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGluZywg
Ym9vbCBpZ25vcmVDbGlwcGluZywgYm9vbCBhbGxvd1NoYWRvd0NvbnRlbnQsIGJvb2wgYWxsb3dD
aGlsZEZyYW1lQ29udGVudCwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogCiAgICAgdm9pZCBlbWl0
SW5zcGVjdG9yRGlkQmVnaW5GcmFtZSgpOwogICAgIHZvaWQgZW1pdEluc3BlY3RvckRpZENhbmNl
bEZyYW1lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggYWZkYzRhMjRi
YjQ4NDRlMjE2YmNhOTFkNDBmODAzODA0M2QxYzJjYS4uNzA0OWVjODBlZDBjM2UwZjcxNDAxODVh
YzMxOWU4MTg4ZWJiOGNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAt
MTM4LDcgKzEzOCw3IEBAIG1vZHVsZSB3aW5kb3cgewogCiAgICAgICAgIE5vZGVMaXN0IG5vZGVz
RnJvbVJlY3QoaW4gRG9jdW1lbnQgZG9jdW1lbnQsIGluIGxvbmcgeCwgaW4gbG9uZyB5LAogICAg
ICAgICAgICAgaW4gdW5zaWduZWQgbG9uZyB0b3BQYWRkaW5nLCBpbiB1bnNpZ25lZCBsb25nIHJp
Z2h0UGFkZGluZywgaW4gdW5zaWduZWQgbG9uZyBib3R0b21QYWRkaW5nLCBpbiB1bnNpZ25lZCBs
b25nIGxlZnRQYWRkaW5nLAotICAgICAgICAgICAgaW4gYm9vbGVhbiBpZ25vcmVDbGlwcGluZywg
aW4gYm9vbGVhbiBhbGxvd1NoYWRvd0NvbnRlbnQpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKyAg
ICAgICAgICAgIGluIGJvb2xlYW4gaWdub3JlQ2xpcHBpbmcsIGluIGJvb2xlYW4gYWxsb3dTaGFk
b3dDb250ZW50LCBpbiBib29sZWFuIGFsbG93Q2hpbGRGcmFtZUNvbnRlbnQpIHJhaXNlcyAoRE9N
RXhjZXB0aW9uKTsKIAogICAgICAgICB2b2lkIGVtaXRJbnNwZWN0b3JEaWRCZWdpbkZyYW1lKCk7
CiAgICAgICAgIHZvaWQgZW1pdEluc3BlY3RvckRpZENhbmNlbEZyYW1lKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyIGIvU291cmNlL2F1dG90b29scy9zeW1i
b2xzLmZpbHRlcgppbmRleCBhZjRiZmY2YTliOTUxMmJhYmFjYThlMWQ5NGUyNDZiNzc0Y2FlOTc4
Li43MTYwZjgxNzY1ZjEwNDgzM2ZjM2ViMjY4YzBkYzI1M2Y1NmQ3ZjU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCisrKyBiL1NvdXJjZS9hdXRvdG9vbHMvc3lt
Ym9scy5maWx0ZXIKQEAgLTE2Miw3ICsxNjIsNyBAQCBfWk43V2ViQ29yZTIyUnVudGltZUVuYWJs
ZWRGZWF0dXJlczE4aXNTaGFkb3dET01FbmFibGVkRTsKIF9aTjdXZWJDb3JlMjJSdW50aW1lRW5h
YmxlZEZlYXR1cmVzMjJpc0NTU0V4Y2x1c2lvbnNFbmFibGVkRTsKIF9aTjdXZWJDb3JlMjJSdW50
aW1lRW5hYmxlZEZlYXR1cmVzMjJpc0RpYWxvZ0VsZW1lbnRFbmFibGVkRTsKIF9aTjdXZWJDb3Jl
MjJSdW50aW1lRW5hYmxlZEZlYXR1cmVzMzdpc0F1dGhvclNoYWRvd0RPTUZvckFueUVsZW1lbnRF
bmFibGVkRTsKLV9aTks3V2ViQ29yZThEb2N1bWVudDEzbm9kZXNGcm9tUmVjdEVpaWpqampiYjsK
K19aTks3V2ViQ29yZThEb2N1bWVudDEzbm9kZXNGcm9tUmVjdEVpaWpqampiYmI7CiBfWk43V2Vi
Q29yZTR0b0pTRVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE5TXzhO
b2RlTGlzdEU7CiBfWk5LN1dlYkNvcmU2RWRpdG9yMjZzZWxlY3Rpb25TdGFydEhhc01hcmtlckZv
ckVOU18xNERvY3VtZW50TWFya2VyMTBNYXJrZXJUeXBlRWlpOwogX1pON1dlYkNvcmU4RG9jdW1l
bnQzM3dlYmtpdERpZEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudEVQTlNfN0VsZW1lbnRFOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDhmMDdhYTQzMDAyNTQ5NTM3Mjk4YzNlYzgwZWJiOTkxMGRiYzgzZTEuLjJmNjIwYjkzMWM3
NGQ5ZTQ2NDU4ZDJhNWE3ZDEzOGYwN2EyZmUwOTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAx
Mi0wOC0yOSAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQG5va2lhLmNvbT4K
KworICAgICAgICBBbGxvdyBjaGlsZC1mcmFtZSBjb250ZW50IGluIGhpdC10ZXN0cy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1MjA0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVG91Y2gtQWRqdXN0bWVu
dCB0ZXN0IGJ5IEtldmluIEVsbGlzCisKKyAgICAgICAgVHdvIG5ldyB0ZXN0cyBmb3IgaGl0LXRl
c3RpbmcgY2hpbGQgZnJhbWUgY29udGVudC4gT25lIGZvciB0ZXN0aW5nIGl0IGFzIGFuIG9wdGlv
biB0bworICAgICAgICBub2Rlc0Zyb21SZWN0LCBhbmQgb25lIHRlc3RpbmcgaXRzIGltcHJvdmVt
ZW50IG9uIHRvdWNoIGFkanVzdG1lbnQgb24gaWZyYW1lIGJvdW5kYXJpZXMuCisKKyAgICAgICAg
KiBmYXN0L2RvbS9ub2Rlc0Zyb21SZWN0L25vZGVzRnJvbVJlY3QtY2hpbGQtZnJhbWUtY29udGVu
dC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL25vZGVzRnJvbVJlY3Qv
bm9kZXNGcm9tUmVjdC1jaGlsZC1mcmFtZS1jb250ZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZG9tL25vZGVzRnJvbVJlY3QvcmVzb3VyY2VzL2NoaWxkLWZyYW1lLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZG9tL25vZGVzRnJvbVJlY3QvcmVzb3VyY2VzL25vZGVzRnJvbVJl
Y3QuanM6CisgICAgICAgIChjaGVjayk6CisgICAgICAgIChjaGVja1NoYWRvd0NvbnRlbnQpOgor
ICAgICAgICAoY2hlY2tSZWN0KToKKyAgICAgICAgKG5vZGVzRnJvbVJlY3RBc1N0cmluZyk6Cisg
ICAgICAgICogdG91Y2hhZGp1c3RtZW50L2lmcmFtZS1ib3VuZGFyeS1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIHRvdWNoYWRqdXN0bWVudC9pZnJhbWUtYm91bmRhcnkuaHRtbDogQWRk
ZWQuCisgICAgICAgICogdG91Y2hhZGp1c3RtZW50L3Jlc291cmNlcy9pbm5lci1jb250ZW50LXBh
Z2UuaHRtbDogQWRkZWQuCisgICAgICAgICogdG91Y2hhZGp1c3RtZW50L3Jlc291cmNlcy9pbm5l
ci1uYXZpZ2F0aW9uLWZyYW1lLmh0bWw6IEFkZGVkLgorCiAyMDEyLTA4LTI4ICBLYW5naWwgSGFu
ICA8a2FuZ2lsLmhhbkBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJdW1dUUl0gUmVi
YXNlbGluZSBuZXdseSBhZGRlZCBTVkcgdGV4dCB0ZXN0IGNhc2VzCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9ub2Rlc0Zyb21SZWN0L25vZGVzRnJvbVJlY3QtY2hpbGQtZnJhbWUt
Y29udGVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2Rlc0Zyb21SZWN0
L25vZGVzRnJvbVJlY3QtY2hpbGQtZnJhbWUtY29udGVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOWMxYzk3MDBjMjU5YmQyMjQ5MDAzYTNlODAzNTQ3ZTEyNGRjZmZmZgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3Qvbm9kZXNGcm9tUmVjdC1j
aGlsZC1mcmFtZS1jb250ZW50LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE4IEBACisKK0RvY3Vt
ZW50Ojpub2Rlc0Zyb21SZWN0IDogQWxsb3cgY2hpbGQtZnJhbWUgY29udGVudCAtIGJ1ZyA5NTIw
NAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBBbGwgY29ycmVjdCBub2Rl
cyBmb3VuZCBmb3IgcmVjdAorUEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdAor
UEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdAorUEFTUyBBbGwgY29ycmVjdCBu
b2RlcyBmb3VuZCBmb3IgcmVjdAorUEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVj
dAorUEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdAorUEFTUyBBbGwgY29ycmVj
dCBub2RlcyBmb3VuZCBmb3IgcmVjdAorUEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3Ig
cmVjdAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3Qvbm9kZXNGcm9t
UmVjdC1jaGlsZC1mcmFtZS1jb250ZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2Rl
c0Zyb21SZWN0L25vZGVzRnJvbVJlY3QtY2hpbGQtZnJhbWUtY29udGVudC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmFkYjQxNjdiMTc4MDJkY2ViOWUzODZjNTRlMzFlNTQ2ODVjNTFlOTQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2Rlc0Zyb21SZWN0L25vZGVzRnJvbVJlY3Qt
Y2hpbGQtZnJhbWUtY29udGVudC5odG1sCkBAIC0wLDAgKzEsNzcgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKyAgICA8dGl0bGU+RG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QgOiBB
bGxvdyBjaGlsZC1mcmFtZSBjb250ZW50IC0gYnVnIDk1MjA0PC90aXRsZT4KKyAgICA8c2NyaXB0
IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICA8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL25vZGVzRnJvbVJlY3QuanMiPjwvc2NyaXB0PgorICAgIDxz
dHlsZT4KKyAgICAgICAgYm9keSB7IG1hcmdpbjogMHB4OyB9CisgICAgICAgICNzYW5kYm94IHsK
KyAgICAgICAgICAgIHdpZHRoOiA0MDBweDsKKyAgICAgICAgICAgIGhlaWdodDogMjAwcHg7Cisg
ICAgICAgIH0KKyAgICAgICAgI3NhbmRib3ggI2xheWVyIHsKKyAgICAgICAgICAgIGZsb2F0OiBy
aWdodDsKKyAgICAgICAgfQorICAgICAgICAjc2FuZGJveCBpZnJhbWUgeworICAgICAgICAgICAg
ZGlzcGxheTogYmxvY2s7CisgICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OworICAg
ICAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICAg
ICAgICAgIGJvcmRlcjogbm9uZTsKKyAgICAgICAgfQorICAgICAgICAucm90YXRlMTgwIHsgLXdl
YmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpOyB9CisgICAgICAgIC5yb3RhdGU5MCB7IC13
ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpOyB9CisgICAgICAgICNzYW5kYm94IC5ib3gg
eworICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKKyAgICAgICAgICAgIGhlaWdo
dDogMTAwcHg7CisgICAgICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgICAgICBib3JkZXI6
IDFweCBzb2xpZCBibGFjazsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9k
eSBpZD0iYm9keSI+CisgICAgPGRpdiBpZD1zYW5kYm94PgorICAgICAgICA8ZGl2IGlkPWxheWVy
PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaWZyYW1lMSIgc3JjPSJyZXNvdXJjZXMvY2hpbGQt
ZnJhbWUuaHRtbCI+PC9pZnJhbWU+CisgICAgICAgIDwvZGl2PgorICAgICAgICA8ZGl2IGlkPWRp
djEgY2xhc3M9Ym94PjwvZGl2PgorICAgICAgICA8ZGl2IGlkPWRpdjIgY2xhc3M9Ym94PjwvZGl2
PgorICAgIDwvZGl2PgorCisgICAgPHAgaWQ9J2Rlc2NyaXB0aW9uJz48L3A+CisgICAgPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+CisgICAgPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2Ny
aXB0Ij4KKyAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGRlc2NyaXB0aW9uKGRvY3VtZW50LnRpdGxlKTsKKworICAgICAgICAgICAgLy8gU2V0IHVwIHNo
b3J0Y3V0IGFjY2VzcyB0byBlbGVtZW50cworICAgICAgICAgICAgdmFyIGUgPSB7fTsKKyAgICAg
ICAgICAgIFsnc2FuZGJveCcsICdsYXllciddLmZvckVhY2goZnVuY3Rpb24oYSkgeworICAgICAg
ICAgICAgICAgIGVbYV0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChhKTsKKyAgICAgICAgICAg
IH0pOworCisgICAgICAgICAgICBjaGVja1JlY3QoMjUsIDI1LCAxMDAsIDEwMCwgIkRJViNkaXYy
LCBESVYjZGl2MSwgRElWI3NhbmRib3giKTsKKyAgICAgICAgICAgIGNoZWNrUmVjdCgyMjAsIDIw
LCA3MCwgNzAsICJESVYjbGVmdCIpOworICAgICAgICAgICAgY2hlY2tSZWN0KDI1MCwgMjAsIDEw
MCwgNzAsICJESVYjcmlnaHQsIERJViNsZWZ0LCBIVE1MIik7CisKKyAgICAgICAgICAgIGNoZWNr
UmVjdCgxNTAsIDUwLCAxMDAsIDEwMCwgIkRJViNsZWZ0LCBIVE1MLCAjZG9jdW1lbnQsIElGUkFN
RSNpZnJhbWUxLCBESVYjbGF5ZXIsIERJViNkaXYyLCBESVYjZGl2MSwgRElWI3NhbmRib3giKTsK
KworICAgICAgICAgICAgZS5sYXllci5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgJ3JvdGF0ZTE4MCcp
OworICAgICAgICAgICAgY2hlY2tSZWN0KDIyMCwgMjAsIDcwLCA3MCwgIkRJViNyaWdodCIpOwor
ICAgICAgICAgICAgY2hlY2tSZWN0KDE1MCwgNTAsIDEwMCwgMTAwLCAiRElWI3JpZ2h0LCBIVE1M
LCAjZG9jdW1lbnQsIElGUkFNRSNpZnJhbWUxLCBESVYjbGF5ZXIsIERJViNkaXYyLCBESVYjZGl2
MSwgRElWI3NhbmRib3giKTsKKworICAgICAgICAgICAgZS5sYXllci5zZXRBdHRyaWJ1dGUoJ2Ns
YXNzJywgJ3JvdGF0ZTkwJyk7CisgICAgICAgICAgICBjaGVja1JlY3QoMjUwLCAyMCwgMTAwLCA3
MCwgIkRJViNsZWZ0Iik7CisgICAgICAgICAgICBjaGVja1JlY3QoMTUwLCAyMCwgMjAwLCA2MCwg
IkRJViNsZWZ0LCBIVE1MLCAjZG9jdW1lbnQsIElGUkFNRSNpZnJhbWUxLCBESVYjbGF5ZXIsIERJ
ViNkaXYxLCBESVYjc2FuZGJveCIpOworCisgICAgICAgICAgICBlLnNhbmRib3guZGlzcGxheSA9
ICdub25lJzsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisgICAgICAg
IGpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgICAgICB3aW5kb3cub25sb2FkID0gcnVuVGVzdDsK
KyAgICA8L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9ub2Rlc0Zyb21SZWN0L3Jlc291cmNlcy9jaGlsZC1mcmFtZS5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9tUmVjdC9yZXNvdXJjZXMvY2hpbGQtZnJh
bWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yMDRkN2ZhYWRiYjk4NjY3YmZlYzRhNDcyN2M4ZGEyODczNjMz
ZTY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9tUmVj
dC9yZXNvdXJjZXMvY2hpbGQtZnJhbWUuaHRtbApAQCAtMCwwICsxLDI3IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgIGJvZHkg
eyBtYXJnaW46IDBweDsgfQorICAgIGRpdiB7IAorICAgICAgICBib3gtc2l6aW5nOiBib3JkZXIt
Ym94OworICAgICAgICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKKyAgICB9CisgICAgI2xlZnQg
eworICAgICAgICBmbG9hdDpsZWZ0OworICAgICAgICB3aWR0aDogOTBweDsKKyAgICAgICAgaGVp
Z2h0OiAxOTBweDsKKyAgICB9CisgICAgI3JpZ2h0IHsKKyAgICAgICAgZmxvYXQ6cmlnaHQ7Cisg
ICAgICAgIHdpZHRoOiA5MHB4OworICAgICAgICBoZWlnaHQ6IDE5MHB4OworICAgIH0KKzwvc3R5
bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2IGlkPWxlZnQ+PC9kaXY+CisgICAgPGRpdiBp
ZD1yaWdodD48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vbm9kZXNGcm9tUmVjdC9yZXNvdXJjZXMvbm9kZXNGcm9tUmVjdC5qcyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3QvcmVzb3VyY2VzL25vZGVzRnJvbVJlY3Qu
anMKaW5kZXggMmU4M2E3NTY3YWEwYTYxMzg0YjM0YjEzMjI4MDA5YzIzZjAxNzdlMS4uMTRjY2Y2
MmRmYTYxNzZkMDhiZmE0Mjk0Y2Y5ODc3NjMzOWZlNDY5NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vbm9kZXNGcm9tUmVjdC9yZXNvdXJjZXMvbm9kZXNGcm9tUmVjdC5qcworKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2Rlc0Zyb21SZWN0L3Jlc291cmNlcy9ub2Rlc0Zyb21S
ZWN0LmpzCkBAIC0xLDcgKzEsOCBAQAogLyoKICAqIENvbnRyaWJ1dG9yczoKICAqICAgICAqIEFu
dG9uaW8gR29tZXMgPHRvbmlraXRvb0B3ZWJraXQub3JnPgotICoqLworICogICAgICogQWxsYW4g
U2FuZGZlbGQgSmVuc2VuIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgorKiovCiAKIGZ1bmN0aW9u
IGNoZWNrKHgsIHksIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVm
dFBhZGRpbmcsIGxpc3QsIGRvYykKIHsKQEAgLTExLDcgKzEyLDcgQEAgZnVuY3Rpb24gY2hlY2so
eCwgeSwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0UGFkZGlu
ZywgbGlzdCwKICAgaWYgKCFkb2MpCiAgICAgZG9jID0gZG9jdW1lbnQ7CiAKLSAgdmFyIG5vZGVz
ID0gaW50ZXJuYWxzLm5vZGVzRnJvbVJlY3QoZG9jLCB4LCB5LCB0b3BQYWRkaW5nLCByaWdodFBh
ZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nLCB0cnVlIC8qIGlnbm9yZUNsaXBwaW5n
ICovLCBmYWxzZSAvKiBhbGxvdyBzaGFkb3cgY29udGVudCAqLyk7CisgIHZhciBub2RlcyA9IGlu
dGVybmFscy5ub2Rlc0Zyb21SZWN0KGRvYywgeCwgeSwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5n
LCBib3R0b21QYWRkaW5nLCBsZWZ0UGFkZGluZywgdHJ1ZSAvKiBpZ25vcmVDbGlwcGluZyAqLywg
ZmFsc2UgLyogYWxsb3cgc2hhZG93IGNvbnRlbnQgKi8sIGZhbHNlIC8qIGFsbG93IGNoaWxkLWZy
YW1lIGNvbnRlbnQgKi8pOwogICBpZiAoIW5vZGVzKQogICAgIHJldHVybjsKIApAQCAtNDUsNyAr
NDYsNyBAQCBmdW5jdGlvbiBjaGVja1NoYWRvd0NvbnRlbnQoeCwgeSwgdG9wUGFkZGluZywgcmln
aHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0UAogICBpZiAoIWRvYykKICAgICBkb2MgPSBk
b2N1bWVudDsKIAotICB2YXIgbm9kZXMgPSBpbnRlcm5hbHMubm9kZXNGcm9tUmVjdChkb2MsIHgs
IHksIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcs
IHRydWUgLyogaWdub3JlQ2xpcHBpbmcgKi8sIHRydWUgLyogYWxsb3dTaGFkb3dDb250ZW50ICov
KTsKKyAgdmFyIG5vZGVzID0gaW50ZXJuYWxzLm5vZGVzRnJvbVJlY3QoZG9jLCB4LCB5LCB0b3BQ
YWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nLCB0cnVlIC8q
IGlnbm9yZUNsaXBwaW5nICovLCB0cnVlIC8qIGFsbG93U2hhZG93Q29udGVudCAqLywgZmFsc2Ug
LyogYWxsb3cgY2hpbGQtZnJhbWUgY29udGVudCAqLyk7CiAgIGlmICghbm9kZXMpCiAgICAgcmV0
dXJuOwogCkBAIC02Nyw2ICs2OCw2MSBAQCBmdW5jdGlvbiBjaGVja1NoYWRvd0NvbnRlbnQoeCwg
eSwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0UAogICB0ZXN0
UGFzc2VkKCJBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdCIpOwogfQogCitmdW5jdGlv
biBjaGVja1JlY3QobGVmdCwgdG9wLCB3aWR0aCwgaGVpZ2h0LCBleHBlY3RlZE5vZGVTdHJpbmcs
IGRvYykKK3sKKyAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmIChoZWlnaHQgPD0wIHx8IHdpZHRoIDw9IDApCisgICAgICAgIHJldHVybjsKKworICAg
IGlmICghZG9jKQorICAgICAgICBkb2MgPSBkb2N1bWVudDsKKworICAgIHZhciB0b3BQYWRkaW5n
ID0gaGVpZ2h0IC8gMjsKKyAgICB2YXIgbGVmdFBhZGRpbmcgPSAgd2lkdGggLyAyOworICAgIC8v
IEZJWE1FOiBXaGVuIG5vZGVzRnJvbVJlY3QgaXMgY2hhbmdlZCB0byBub3QgYWRkIDEgdG8gd2lk
dGggYW5kIGhlaWdodCwgcmVtb3ZlIHRoZSBjb3JyZWN0aW9uIGhlcmUuCisgICAgdmFyIGJvdHRv
bVBhZGRpbmcgPSAoaGVpZ2h0IC0gMSkgLSB0b3BQYWRkaW5nOworICAgIHZhciByaWdodFBhZGRp
bmcgPSAod2lkdGggLSAxKSAtIGxlZnRQYWRkaW5nOworCisgICAgdmFyIG5vZGVTdHJpbmcgPSBu
b2Rlc0Zyb21SZWN0QXNTdHJpbmcoZG9jLCBsZWZ0ICsgbGVmdFBhZGRpbmcsIHRvcCArIHRvcFBh
ZGRpbmcsIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRp
bmcpOworCisgICAgaWYgKG5vZGVTdHJpbmcgPT0gZXhwZWN0ZWROb2RlU3RyaW5nKSB7CisgICAg
ICAgIHRlc3RQYXNzZWQoIkFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0Iik7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiTm9kZXNGcm9tUmVjdCBzaG91bGQgYmUgWyIg
KyBleHBlY3RlZE5vZGVTdHJpbmcgKyAiXSB3YXMgWyIgKyBub2RlU3RyaW5nICsgIl0iKTsKKyAg
ICB9Cit9CisKK2Z1bmN0aW9uIG5vZGVzRnJvbVJlY3RBc1N0cmluZyhkb2MsIHgsIHksIHRvcFBh
ZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcpCit7CisgICAg
dmFyIG5vZGVTdHJpbmcgPSAiIjsKKyAgICB2YXIgbm9kZXMgPSBpbnRlcm5hbHMubm9kZXNGcm9t
UmVjdChkb2MsIHgsIHksIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywg
bGVmdFBhZGRpbmcsIHRydWUgLyogaWdub3JlQ2xpcHBpbmcgKi8sIHRydWUgLyogYWxsb3cgc2hh
ZG93IGNvbnRlbnQgKi8sIHRydWUgLyogYWxsb3cgY2hpbGQtZnJhbWUgY29udGVudCAqLyk7Cisg
ICAgaWYgKCFub2RlcykKKyAgICAgICAgcmV0dXJuIG5vZGVTdHJpbmc7CisKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIGlmIChub2Rlc1tpXS5u
b2RlVHlwZSA9PSAxKSB7CisgICAgICAgICAgICBub2RlU3RyaW5nICs9IG5vZGVzW2ldLm5vZGVO
YW1lOworICAgICAgICAgICAgaWYgKG5vZGVzW2ldLmlkKQorICAgICAgICAgICAgICAgIG5vZGVT
dHJpbmcgKz0gJyMnICsgbm9kZXNbaV0uaWQ7CisgICAgICAgICAgICBlbHNlIGlmIChub2Rlc1tp
XS5jbGFzcykgeworICAgICAgICAgICAgICAgIG5vZGVTdHJpbmcgKz0gJy4nICsgbm9kZXNbaV0u
Y2xhc3M7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAobm9kZXNbaV0ubm9kZVR5
cGUgPT0gMykgeworICAgICAgICAgICAgbm9kZVN0cmluZyArPSAiJyIgKyBub2Rlc1tpXS5kYXRh
ICsgIiciOworICAgICAgICB9IGVsc2UgaWYgKG5vZGVzW2ldLm5vZGVUeXBlID09IDkpIHsKKyAg
ICAgICAgICAgIG5vZGVTdHJpbmcgKz0gIiNkb2N1bWVudCI7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoaSArIDEgPCBub2Rl
cy5sZW5ndGgpIHsKKyAgICAgICAgICAgIG5vZGVTdHJpbmcgKz0gIiwgIjsKKyAgICAgICAgfQor
ICAgIH0KKyAgICByZXR1cm4gbm9kZVN0cmluZzsKK30KKwogZnVuY3Rpb24gZ2V0Q2VudGVyRm9y
KGVsZW1lbnQpCiB7CiAgIHZhciByZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3Qo
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9pZnJhbWUtYm91bmRh
cnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L2lmcmFtZS1ib3Vu
ZGFyeS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzYxZDM2OTRiMDM5ZTRlMWEyZTE5OGEwMjli
MWQyY2ZlZDg3MjZhYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0
bWVudC9pZnJhbWUtYm91bmRhcnktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjYgQEAKKyAKK1Rl
c3QgdG91Y2gtYWRqdXN0bWVudCBhdCB0aGUgYm91bmRhcnkgb2YgYW4gCisKKworVGVzdCBkaXJl
Y3QgdG91Y2hlcy4KK1BBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJjaGVja2JveC0xIgorUEFTUyBh
ZGp1c3RlZE5vZGUuaWQgaXMgImJ1dHRvbi0xIgorUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgImNo
ZWNrYm94LTIiCitQQVNTIGFkanVzdGVkTm9kZS5pZCBpcyAiYnV0dG9uLTIiCitQQVNTIGFkanVz
dGVkTm9kZS5pZCBpcyAiY2hlY2tib3gtMyIKK1BBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJidXR0
b24tMyIKK1BBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJjaGVja2JveC00IgorUEFTUyBhZGp1c3Rl
ZE5vZGUuaWQgaXMgImJ1dHRvbi00IgorVGVzdCBpbmRpcmVjdCB0b3VjaGVzLgorUEFTUyBhZGp1
c3RlZE5vZGUuaWQgaXMgImNoZWNrYm94LTEiCitQQVNTIGFkanVzdGVkTm9kZS5pZCBpcyAiYnV0
dG9uLTEiCitQQVNTIGFkanVzdGVkTm9kZS5pZCBpcyAiY2hlY2tib3gtMiIKK1BBU1MgYWRqdXN0
ZWROb2RlLmlkIGlzICJidXR0b24tMiIKK1BBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJjaGVja2Jv
eC0zIgorUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgImJ1dHRvbi0zIgorUEFTUyBhZGp1c3RlZE5v
ZGUuaWQgaXMgImNoZWNrYm94LTQiCitQQVNTIGFkanVzdGVkTm9kZS5pZCBpcyAiYnV0dG9uLTQi
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L2lmcmFtZS1ib3VuZGFyeS5odG1s
IGIvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L2lmcmFtZS1ib3VuZGFyeS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjg4MDFkZWM4N2FiMDc2MmRkZDM4ZDI4YWNjMzdhOWI1OWI3ODNhZDUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvaWZyYW1lLWJvdW5kYXJ5Lmh0
bWwKQEAgLTAsMCArMSwxMDEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAg
ICA8dGl0bGU+VG91Y2ggQWRqdXN0bWVudCA6IFRlc3QgdG91Y2ggYWRqdXN0bWVudCBhdCBhbiBp
ZnJhbWUgYm91bmRhcnkgLSBidWcgOTQ5MzY8L3RpdGxlPgorICAgIDxzY3JpcHQgc3JjPSIuLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBz
cmM9InJlc291cmNlcy90b3VjaGFkanVzdG1lbnQuanMiPjwvc2NyaXB0PgorICAgIDxzdHlsZT4K
KyAgICAgICAgI25hdmJhciB7CisgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZWVlOworICAgICAg
ICAgICAgaGVpZ2h0OiAxMDAlOworICAgICAgICAgICAgbGVmdDogMDsKKyAgICAgICAgICAgIHBh
ZGRpbmc6IDA7CisgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgICAgICBt
YXJnaW46IDA7CisgICAgICAgICAgICB0b3A6IDA7CisgICAgICAgICAgICB3aWR0aDogMTAwcHg7
CisgICAgICAgIH0KKworICAgICAgICAjY29udGVudC1wYWdlIHsKKyAgICAgICAgICAgIGhlaWdo
dDogMTAwJTsKKyAgICAgICAgICAgIGxlZnQ6IDEwMHB4OworICAgICAgICAgICAgcG9zaXRpb246
IGFic29sdXRlOworICAgICAgICAgICAgcmlnaHQ6IDA7CisgICAgICAgICAgICB0b3A6IDA7Cisg
ICAgICAgIH0KKworICAgICAgICBpZnJhbWUgeworICAgICAgICAgICAgYm9yZGVyOiBub25lOwor
ICAgICAgICAgICAgd2lkdGg6IDEwMCU7CisgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7CisgICAg
ICAgICAgICBtYXJnaW46IDA7CisgICAgICAgICAgICBwYWRkaW5nOiAwOworICAgICAgICB9Cisg
ICAgPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5IGlkPSJtYWluIiBvbmxvYWQ9InJ1blRlc3RzKCki
PgorPGRpdiBpZD0ibmF2YmFyIiAgc3R5bGU9Ii13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVY
KDBweCk7Ij4KKyAgICA8aWZyYW1lIGlkPSJuYXYtZnJhbWUiIHNyYz0icmVzb3VyY2VzL2lubmVy
LW5hdmlnYXRpb24tZnJhbWUuaHRtbCI+PC9pZnJhbWU+Cis8L2Rpdj4KKzxkaXYgaWQ9ImNvbnRl
bnQtcGFnZSI+CisgICAgPGlmcmFtZSBpZD0iY29udGVudC1mcmFtZSIgc3JjPSJyZXNvdXJjZXMv
aW5uZXItY29udGVudC1wYWdlLmh0bWwiPjwvaWZyYW1lPgorPC9kaXY+CisKKzxwIGlkPSdkZXNj
cmlwdGlvbic+PC9wPgorPGRpdiBpZD0nY29uc29sZSc+PC9kaXY+CisKKzxzY3JpcHQ+IAorICAg
IHZhciBpdGVtSGVpZ2h0MSA9IDI4OworICAgIHZhciBpdGVtSGVpZ2h0MiA9IDM0OworICAgIHZh
ciBib3JkZXJPZmZzZXQgPSAxMDA7CisgICAgdmFyIGNoZWNrYm94T2Zmc2V0ID0gMTg7CisgICAg
dmFyIGxpbmtPZmZzZXQgPSAtMTU7CisgICAgdmFyIGNoZWNrYm94T2Zmc2V0SW5kaXJlY3QgPSA1
OworICAgIHZhciBsaW5rT2Zmc2V0SW5kaXJlY3QgPSAtNTsKKyAgICB2YXIgdG91Y2hSYWRpdXMg
PSAzMDsKKworICAgIGZ1bmN0aW9uIHRlc3RSb3VuZFRvdWNoKHgsIHksIHJhZGl1cykKKyAgICB7
CisgICAgICAgIHZhciB4ID0geCAtIHJhZGl1czsKKyAgICAgICAgdmFyIHkgPSB5IC0gcmFkaXVz
OworICAgICAgICB2YXIgd2lkdGggPSByYWRpdXMgKiAyOworICAgICAgICB2YXIgaGVpZ2h0ID0g
cmFkaXVzICogMjsKKyAgICAgICAgdmFyIGFkanVzdGVkTm9kZSA9IGludGVybmFscy50b3VjaE5v
ZGVBZGp1c3RlZFRvQmVzdENsaWNrYWJsZU5vZGUoeCwgeSwgd2lkdGgsIGhlaWdodCwgZG9jdW1l
bnQpOworICAgICAgICBpZiAoYWRqdXN0ZWROb2RlLm5vZGVUeXBlID09IDMpIC8vIFRFWFQgbm9k
ZQorICAgICAgICAgICAgYWRqdXN0ZWROb2RlID0gYWRqdXN0ZWROb2RlLnBhcmVudE5vZGU7Cisg
ICAgICAgIHJldHVybiBhZGp1c3RlZE5vZGU7CisgICAgfQorICAgIGZ1bmN0aW9uIHRlc3REaXJl
Y3RUb3VjaGVzKCkKKyAgICB7CisgICAgICAgIGRlYnVnKCdUZXN0IGRpcmVjdCB0b3VjaGVzLicp
OworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKykgeworICAgICAgICAgICAgYWRq
dXN0ZWROb2RlID0gdGVzdFJvdW5kVG91Y2goYm9yZGVyT2Zmc2V0ICsgY2hlY2tib3hPZmZzZXQs
IChpICsgMC41KSAqIGl0ZW1IZWlnaHQxLCB0b3VjaFJhZGl1cyk7CisgICAgICAgICAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoJ2FkanVzdGVkTm9kZS5pZCcsICdjaGVja2JveC0nICsgKGkgKyAx
KSk7CisgICAgICAgICAgICBhZGp1c3RlZE5vZGUgPSB0ZXN0Um91bmRUb3VjaChib3JkZXJPZmZz
ZXQgKyBsaW5rT2Zmc2V0LCAoaSArIDAuNSkgKiBpdGVtSGVpZ2h0MiwgdG91Y2hSYWRpdXMpOwor
ICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdhZGp1c3RlZE5vZGUuaWQnLCAnYnV0
dG9uLScgKyAoaSArIDEpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBmdW5jdGlvbiB0ZXN0SW5k
aXJlY3RUb3VjaGVzKCkgeworICAgICAgICAgZGVidWcoJ1Rlc3QgaW5kaXJlY3QgdG91Y2hlcy4n
KTsKKyAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7CisgICAgICAgICAgICBh
ZGp1c3RlZE5vZGUgPSB0ZXN0Um91bmRUb3VjaChib3JkZXJPZmZzZXQgKyBjaGVja2JveE9mZnNl
dEluZGlyZWN0LCAoaSArIDAuNSkgKiBpdGVtSGVpZ2h0MSwgdG91Y2hSYWRpdXMpOworICAgICAg
ICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdhZGp1c3RlZE5vZGUuaWQnLCAnY2hlY2tib3gt
JyArIChpICsgMSkpOworICAgICAgICAgICAgYWRqdXN0ZWROb2RlID0gdGVzdFJvdW5kVG91Y2go
Ym9yZGVyT2Zmc2V0ICsgbGlua09mZnNldEluZGlyZWN0LCAoaSArIDAuNSkgKiBpdGVtSGVpZ2h0
MiwgdG91Y2hSYWRpdXMpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdhZGp1
c3RlZE5vZGUuaWQnLCAnYnV0dG9uLScgKyAoaSArIDEpKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGZ1bmN0aW9uIHJ1blRlc3RzKCkKKyAgICB7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lciAmJiB3aW5kb3cuaW50ZXJuYWxzICYmIGludGVybmFscy50b3VjaE5vZGVBZGp1c3RlZFRv
QmVzdENsaWNrYWJsZU5vZGUpIHsKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uKCdUZXN0IHRvdWNo
LWFkanVzdG1lbnQgYXQgdGhlIGJvdW5kYXJ5IG9mIGFuIDxpZnJhbWU+LiAgRW5zdXJlIHRoYXQg
dG91Y2ggYWRqdXN0bWVudCBwcm9wYWdhdGVzIGludG8gY2hpbGRyZW4gb2YgYW4gPGlmcmFtZT4u
ICBUZXN0IGV4cGVjdGVkIHRvIGNvbnRhaW4gZmFpbHVyZXMgdW50aWwgYnVnIDk1MjA0IGlzIGZp
eGVkLicpOworICAgICAgICAgICAgdGVzdERpcmVjdFRvdWNoZXMoKTsKKyAgICAgICAgICAgIHRl
c3RJbmRpcmVjdFRvdWNoZXMoKTsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAg
ICB9CisgICAgfQorICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9y
ZXNvdXJjZXMvaW5uZXItY29udGVudC1wYWdlLmh0bWwgYi9MYXlvdXRUZXN0cy90b3VjaGFkanVz
dG1lbnQvcmVzb3VyY2VzL2lubmVyLWNvbnRlbnQtcGFnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjczN2Iy
MTg4NjQzYzI4ZmVmZDI5ZDdlYzg1MDViZjE4ZDA4YTdlYTIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvcmVzb3VyY2VzL2lubmVyLWNvbnRlbnQtcGFnZS5o
dG1sCkBAIC0wLDAgKzEsMjQgQEAKKzwhRE9DVFlQRT0iaHRtbCI+Cis8aHRtbD4KKzxoZWFkPgor
ICAgIDxzdHlsZT4KKyAgICAgICAgYm9keSB7CisgICAgICAgICAgICBiYWNrZ3JvdW5kOiB3aGl0
ZTsKKyAgICAgICAgICAgIHBhZGRpbmc6IDA7CisgICAgICAgICAgICBtYXJnaW46IDA7CisgICAg
ICAgIH0KKworICAgICAgICBsYWJlbCB7CisgICAgICAgICAgICBkaXNwbGF5OiBibG9jazsKKyAg
ICAgICAgICAgIGxpbmUtaGVpZ2h0OiAyMnB4OworICAgICAgICAgICAgbWFyZ2luOiA1cHggMTBw
eDsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxsYWJlbD48aW5w
dXQgaWQ9ImNoZWNrYm94LTEiIHR5cGU9ImNoZWNrYm94Ij5DaGVja2JveCAxPC9sYWJlbD4KKzxs
YWJlbD48aW5wdXQgaWQ9ImNoZWNrYm94LTIiIHR5cGU9ImNoZWNrYm94Ij5DaGVja2JveCAyPC9s
YWJlbD4KKzxsYWJlbD48aW5wdXQgaWQ9ImNoZWNrYm94LTMiIHR5cGU9ImNoZWNrYm94Ij5DaGVj
a2JveCAzPC9sYWJlbD4KKzxsYWJlbD48aW5wdXQgaWQ9ImNoZWNrYm94LTQiIHR5cGU9ImNoZWNr
Ym94Ij5DaGVja2JveCA0PC9sYWJlbD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9yZXNvdXJjZXMvaW5uZXItbmF2aWdhdGlvbi1mcmFt
ZS5odG1sIGIvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3Jlc291cmNlcy9pbm5lci1uYXZp
Z2F0aW9uLWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmEyYzc1Mzk2NmJlYjk1ZmZlMzI4Y2Y3ODU1
MmQxYzYyNzdkYWYyMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0
bWVudC9yZXNvdXJjZXMvaW5uZXItbmF2aWdhdGlvbi1mcmFtZS5odG1sCkBAIC0wLDAgKzEsMjUg
QEAKKzwhRE9DVFlQRT0iaHRtbCI+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzdHlsZT4KKyAgICAg
ICAgYm9keSB7CisgICAgICAgICAgICBwYWRkaW5nOiAwOworICAgICAgICAgICAgbWFyZ2luOiAw
OworICAgICAgICB9CisKKyAgICAgICAgaW5wdXRbdHlwZT0iYnV0dG9uIl0geworICAgICAgICAg
ICAgZGlzcGxheTogYmxvY2s7CisgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CisgICAg
ICAgICAgICBsaW5lLWhlaWdodDogMTRweDsKKyAgICAgICAgICAgIG1hcmdpbjogNXB4IDEwcHg7
CisgICAgICAgICAgICB3aWR0aDogODBweDsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxpbnB1dCB0eXBlPSJidXR0b24iIGlkPSJidXR0b24tMSIgdmFsdWU9IkJ1
dHRvbiAxIj4KKzxpbnB1dCB0eXBlPSJidXR0b24iIGlkPSJidXR0b24tMiIgdmFsdWU9IkJ1dHRv
biAyIj4KKzxpbnB1dCB0eXBlPSJidXR0b24iIGlkPSJidXR0b24tMyIgdmFsdWU9IkJ1dHRvbiAz
Ij4KKzxpbnB1dCB0eXBlPSJidXR0b24iIGlkPSJidXR0b24tNCIgdmFsdWU9IkJ1dHRvbiA0Ij4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRl
eCBlZTI4M2YyMzA4Y2VhNzg3YzBjOTI0ZmU2ZGUzMTIwMWUzYjhkYjY5Li4yZjYxZGM0NTA3Mzky
ODM3ZDJiNzUwZDljZTUyZGJjZDAzOTc2YTk1IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDgtMjkgIEFsbGFuIFNhbmRmZWxkIEpl
bnNlbiAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+CisKKyAgICAgICAgQWxsb3cgY2hpbGQtZnJh
bWUgY29udGVudCBpbiBoaXQtdGVzdHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05NTIwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFVwZGF0ZSBleHBvcnRlZCBzeW1ib2xzLgorCisgICAgICAgICogU291
cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcjoKKwogMjAxMi0wOC0yNyAgUm9iIEJ1aXMgIDxy
YnVpc0ByaW0uY29tPgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSByZW1vdmUgLWZuby1ydHRpIG9w
dGlvbiBpbiBDTUFLRV9DX0ZMQUdTCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161891</attachid>
            <date>2012-09-03 03:15:17 -0700</date>
            <delta_ts>2012-09-03 08:17:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95204-20120903121452.patch</filename>
            <type>text/plain</type>
            <size>61595</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NDEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjE3Njg3OWNmOGQ1Nzg4
NjgxNmI5NTIxYTMzNzAzYjg4NTBjYmMxMC4uYzA4YjYyODk5NjI3NjUzNWE3NmJhZjNjZmI3ZWY2
NzY4N2NhYTY1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDEyLTA5LTAzICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgorCisgICAgICAgIEFs
bG93IGNoaWxkLWZyYW1lIGNvbnRlbnQgaW4gaGl0LXRlc3RzLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUyMDQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvcnMgaG93IEV2ZW50SGFuZGxlcjo6
aGl0VGVzdFJlc3VsdEF0UG9pbnQgaGFuZGxlcyBjaGlsZC1mcmFtZSBjb250ZW50LAorICAgICAg
ICBpdCBpcyBub3cgaGFuZGxlZCBieSB0aGUgaGl0IHRlc3QgaXRzZWxmIGNvbnRyb2xsZWQgYnkg
dGhlIEFsbG93Q2hpbGRGcmFtZUNvbnRlbnQKKyAgICAgICAgZmxhZyBpbiBIaXRUZXN0UmVxdWVz
dC4KKworICAgICAgICBUaGUgQWxsb3dTaGFkb3dDb250ZW50IGZsYWcgaXMgbW92ZWQgZnJvbSBI
aXRUZXN0UmVzdWx0IHRvIEhpdFRlc3RSZXF1ZXN0LCBzbyB0aGUKKyAgICAgICAgY29udGVudCBm
aWx0ZXIgZmxhZ3MgYXJlIGluIHRoZSBzYW1lIHBsYWNlLgorCisgICAgICAgIFRlc3RzOiBmYXN0
L2RvbS9ub2Rlc0Zyb21SZWN0L25vZGVzRnJvbVJlY3QtY2hpbGQtZnJhbWUtY29udGVudC5odG1s
CisgICAgICAgICAgICAgICB0b3VjaGFkanVzdG1lbnQvaWZyYW1lLWJvdW5kYXJ5Lmh0bWwKKwor
ICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUub3JkZXI6CisgICAg
ICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpub2Rl
c0Zyb21SZWN0KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKERvY3VtZW50
KToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudEhhbmRsZXI6OmhpdFRlc3RSZXN1bHRBdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcv
SGl0VGVzdFJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXF1ZXN0OjphbGxv
d1NoYWRvd0NvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlcXVlc3Q6OmFsbG93
Q2hpbGRGcmFtZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlcXVlc3Q6OmNo
aWxkRnJhbWVIaXRUZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXF1ZXN0Ojp0ZXN0
Q2hpbGRGcmFtZVNjcm9sbEJhcnMpOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RMb2NhdGlvbjo6SGl0VGVzdExvY2F0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQpOgorICAg
ICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNv
cmU6OkhpdFRlc3RSZXN1bHQ6OmFkZE5vZGVUb1JlY3RCYXNlZFRlc3RSZXN1bHQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0Lmg6CisgICAgICAgIChIaXRUZXN0TG9jYXRpb24p
OgorICAgICAgICAoSGl0VGVzdFJlc3VsdCk6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZUZs
b3dCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6bm9kZUF0UG9pbnQp
OgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklubGluZVRleHRCb3g6Om5vZGVBdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6Om5vZGVBdFBvaW50
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJveDo6bm9kZUF0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFt
ZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRnJhbWVCYXNlOjpub2RlQXRQb2lu
dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5oOgorICAgICAgICAoUmVu
ZGVyRnJhbWVCYXNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6Om5vZGVBdFBvaW50KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6Omhp
dFRlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmhpdFRlc3RMYXllcik6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aGl0VGVzdExpc3QpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJNdWx0aUNvbHVtblNldDo6bm9kZUF0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJSZWdpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVnaW9uOjpub2RlQXRQb2lu
dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRhYmxlOjpub2RlQXRQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6Om5vZGVB
dFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6bm9kZUF0UG9pbnQpOgorICAgICAg
ICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6
bm9kZXNGcm9tUmVjdCk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAg
KEludGVybmFscyk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorCiAyMDEyLTA4
LTMxICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdl
YiBJbnNwZWN0b3I6IGdldCByaWQgb2YgY29udGV4dCBleGVjdXRpb24gaWQgZmFsbGJhY2suCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggMTEzMjc3ZDExZjA5NzJlYzg3ZmE5NGQ2YWEyMTM1YzRiNGQwM2RiNi4uMmU5
OWY2MzgwYzE1NTE2YmI5Mzc4YzFmMjU1OTVjNDFmMjFiMzU2YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE1IEBACisyMDEyLTA5LTAzICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5z
ZW5Abm9raWEuY29tPgorCisgICAgICAgIEFsbG93IGNoaWxkLWZyYW1lIGNvbnRlbnQgaW4gaGl0
LXRlc3RzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTUyMDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
cGRhdGUgc3ltYm9scyBmb3IgdGhlIFdpbmRvd3MgYnVpbGQtc3lzdGVtLgorCisgICAgICAgICog
d2luL1dlYktpdDIuZGVmOgorICAgICAgICAqIHdpbi9XZWJLaXQyQ0ZMaXRlLmRlZjoKKwogMjAx
Mi0wOS0wMyAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgog
CiAgICAgICAgIFtFRkxdW1dLMl0gU2tpcCBFV0syVW5pdFRlc3RCYXNlLmV3a19jb29raWVfbWFu
YWdlcl9wZXJtYW5lbnRfc3RvcmFnZSBBUEkgdGVzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBi
NTc3ZTZmNDllYTQ5MjViZjJiODM2ZWJkZDM1OTRhYzU3OTQ2MmMyLi5iYWUzM2Y3ZGE5NTJmZWI1
OTIxZDYxYjhlYTQ2ZjBjYzAyZTk5ZGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMTM1Myw3
ICsxMzUzLDcgQEAgX19aTks3V2ViQ29yZTdSdW5Mb29wOVRpbWVyQmFzZThpc0FjdGl2ZUV2CiBf
X1pOSzdXZWJDb3JlOERvY3VtZW50MTByZW5kZXJWaWV3RXYKIF9fWk5LN1dlYkNvcmU4RG9jdW1l
bnQxMWNvbXBsZXRlVVJMRVJLTjNXVEY2U3RyaW5nRQogX19aTks3V2ViQ29yZThEb2N1bWVudDEz
YXhPYmplY3RDYWNoZUV2Ci1fX1pOSzdXZWJDb3JlOERvY3VtZW50MTNub2Rlc0Zyb21SZWN0RWlp
ampqamJiCitfX1pOSzdXZWJDb3JlOERvY3VtZW50MTNub2Rlc0Zyb21SZWN0RWlpampqamJiYgog
X19aTks3V2ViQ29yZThEb2N1bWVudDE0Z2V0RWxlbWVudEJ5SWRFUktOM1dURjEyQXRvbWljU3Ry
aW5nRQogX19aTks3V2ViQ29yZThEb2N1bWVudDMxZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNv
ZGluZ0VSS04zV1RGNlN0cmluZ0UKIF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQ0Ym9keUV2CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5vcmRlcgppbmRleCAwYjJiMTc1ODNjYjcwNjA3OWI3MzIyODdkMjhmZjI0MmNiMzVkM2Zj
Li4zNWFiZmU2MzViOTNkYTQ0YjQ3MjVhNTRmYjIyM2QxODE2NzM4YzFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
b3JkZXIKQEAgLTIyNzg1LDcgKzIyNzg1LDcgQEAgX19aTks3V2ViQ29yZTEyTm9kZUl0ZXJhdG9y
MjB1cGRhdGVGb3JOb2RlUmVtb3ZhbEVQTlNfNE5vZGVFUk5TMF8xMU5vZGVQb2ludGVyRQogX19a
TjdXZWJDb3JlMjdqc05vZGVJdGVyYXRvclJlZmVyZW5jZU5vZGVFUE4zSlNDOUV4ZWNTdGF0ZUVO
UzBfN0pTVmFsdWVFUktOUzBfMTBJZGVudGlmaWVyRQogX19aTks3V2ViQ29yZTROb2RlMjB0cmF2
ZXJzZVByZXZpb3VzTm9kZUVQS1MwXwogX19aTjdXZWJDb3JlMzdqc05vZGVJdGVyYXRvclByb3Rv
dHlwZUZ1bmN0aW9uRGV0YWNoRVBOM0pTQzlFeGVjU3RhdGVFCi1fX1pOSzdXZWJDb3JlOERvY3Vt
ZW50MTNub2Rlc0Zyb21SZWN0RWlpampqamIKK19fWk5LN1dlYkNvcmU4RG9jdW1lbnQxM25vZGVz
RnJvbVJlY3RFaWlqampqYmJiCiBfX1pOSzdXZWJDb3JlOERvY3VtZW50MTdoYW5kbGVaZXJvUGFk
ZGluZ0VSS05TXzE0SGl0VGVzdFJlcXVlc3RFUk5TXzEzSGl0VGVzdFJlc3VsdEUKIF9fWk4zV1RG
MjFMaXN0SGFzaFNldFRyYW5zbGF0b3JJTlNfNlJlZlB0cklON1dlYkNvcmU0Tm9kZUVFRUxtMjU2
RU5TXzdQdHJIYXNoSVM0X0VFRTl0cmFuc2xhdGVFUlBOU18xNUxpc3RIYXNoU2V0Tm9kZUlTNF9M
bTI1NkVFRVJLUzRfUE5TXzI0TGlzdEhhc2hTZXROb2RlQWxsb2NhdG9ySVM0X0xtMjU2RUVFCiBf
X1pON1dlYkNvcmUyMVN0YXRpY0hhc2hTZXROb2RlTGlzdEMxRVJOM1dURjExTGlzdEhhc2hTZXRJ
TlMxXzZSZWZQdHJJTlNfNE5vZGVFRUVMbTI1NkVOUzFfN1B0ckhhc2hJUzVfRUVFRQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKaW5kZXggMzAzMDRkYWRkODA4MTFjNTRjYzE0YmZkMWI2NmZmM2UwNjBi
MTU2Yy4uOTMyNmZmNDI0MzE0ZDNlM2Y4Y2ZhOTQ1OTlhZGE4YzlhNzFlOTkxYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCkBAIC0xMzg0LDcgKzEzODQsNyBAQCBTdHJpbmcgRG9jdW1lbnQ6OnN1
Z2dlc3RlZE1JTUVUeXBlKCkgY29uc3QKIC8vICogbWFraW5nIGl0IHJlY2VpdmUgYSByZWN0IGFz
IHBhcmFtZXRlciwgaS5lLiBub2Rlc0Zyb21SZWN0KHgsIHksIHcsIGgpOwogLy8gKiBtYWtpbmcg
aXQgcmVjZWl2ZSB0aGUgZXhwYWRpbmcgc2l6ZSBvZiBlYWNoIGRpcmVjdGlvbiBzZXBhcmF0ZWx5
LAogLy8gICBpLmUuIG5vZGVzRnJvbVJlY3QoeCwgeSwgdG9wU2l6ZSwgcmlnaHRTaXplLCBib3R0
b21TaXplLCBsZWZ0U2l6ZSk7Ci1QYXNzUmVmUHRyPE5vZGVMaXN0PiBEb2N1bWVudDo6bm9kZXNG
cm9tUmVjdChpbnQgY2VudGVyWCwgaW50IGNlbnRlclksIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVu
c2lnbmVkIHJpZ2h0UGFkZGluZywgdW5zaWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbGVm
dFBhZGRpbmcsIGJvb2wgaWdub3JlQ2xpcHBpbmcsIGJvb2wgYWxsb3dTaGFkb3dDb250ZW50KSBj
b25zdAorUGFzc1JlZlB0cjxOb2RlTGlzdD4gRG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QoaW50IGNl
bnRlclgsIGludCBjZW50ZXJZLCB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBh
ZGRpbmcsIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nLCBib29s
IGlnbm9yZUNsaXBwaW5nLCBib29sIGFsbG93U2hhZG93Q29udGVudCwgYm9vbCBhbGxvd0NoaWxk
RnJhbWVDb250ZW50KSBjb25zdAogewogICAgIC8vIEZJWE1FOiBTaGFyZSBjb2RlIGJldHdlZW4g
dGhpcywgZWxlbWVudEZyb21Qb2ludCBhbmQgY2FyZXRSYW5nZUZyb21Qb2ludC4KICAgICBpZiAo
IXJlbmRlcmVyKCkpCkBAIC0xNDA2LDYgKzE0MDYsMTAgQEAgUGFzc1JlZlB0cjxOb2RlTGlzdD4g
RG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QoaW50IGNlbnRlclgsIGludCBjZW50ZXJZLCB1bnNpZ25l
ZAogICAgICAgICB0eXBlIHw9IEhpdFRlc3RSZXF1ZXN0OjpJZ25vcmVDbGlwcGluZzsKICAgICBl
bHNlIGlmICghZnJhbWVWaWV3LT52aXNpYmxlQ29udGVudFJlY3QoKS5pbnRlcnNlY3RzKEhpdFRl
c3RSZXN1bHQ6OnJlY3RGb3JQb2ludChwb2ludCwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBi
b3R0b21QYWRkaW5nLCBsZWZ0UGFkZGluZykpKQogICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAo
YWxsb3dTaGFkb3dDb250ZW50KQorICAgICAgICB0eXBlIHw9IEhpdFRlc3RSZXF1ZXN0OjpBbGxv
d1NoYWRvd0NvbnRlbnQ7CisgICAgaWYgKGFsbG93Q2hpbGRGcmFtZUNvbnRlbnQpCisgICAgICAg
IHR5cGUgfD0gSGl0VGVzdFJlcXVlc3Q6OkFsbG93Q2hpbGRGcmFtZUNvbnRlbnQ7CiAKICAgICBI
aXRUZXN0UmVxdWVzdCByZXF1ZXN0KHR5cGUpOwogCkBAIC0xNDE2LDggKzE0MjAsNyBAQCBQYXNz
UmVmUHRyPE5vZGVMaXN0PiBEb2N1bWVudDo6bm9kZXNGcm9tUmVjdChpbnQgY2VudGVyWCwgaW50
IGNlbnRlclksIHVuc2lnbmVkCiAgICAgICAgIHJldHVybiBoYW5kbGVaZXJvUGFkZGluZyhyZXF1
ZXN0LCByZXN1bHQpOwogICAgIH0KIAotICAgIGVudW0gU2hhZG93Q29udGVudEZpbHRlclBvbGlj
eSBzaGFkb3dDb250ZW50RmlsdGVyUG9saWN5ID0gYWxsb3dTaGFkb3dDb250ZW50ID8gQWxsb3dT
aGFkb3dDb250ZW50IDogRG9Ob3RBbGxvd1NoYWRvd0NvbnRlbnQ7Ci0gICAgSGl0VGVzdFJlc3Vs
dCByZXN1bHQocG9pbnQsIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywg
bGVmdFBhZGRpbmcsIHNoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3kpOworICAgIEhpdFRlc3RSZXN1
bHQgcmVzdWx0KHBvaW50LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcs
IGxlZnRQYWRkaW5nKTsKICAgICByZW5kZXJWaWV3KCktPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0
KTsKIAogICAgIHJldHVybiBTdGF0aWNIYXNoU2V0Tm9kZUxpc3Q6OmFkb3B0KHJlc3VsdC5yZWN0
QmFzZWRUZXN0UmVzdWx0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBiNjU1ZGNlM2FkODM0
MDJhNmI5YWY3NmVjOGU1N2M1ZjUxYjM2OTZhLi5hYzdhZTk1MWFhODMzNTU1MzBhZjY0NDdhMTA5
MDQ0YWY3MWQ4YjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMzc1LDggKzM3NSw5IEBAIHB1
YmxpYzoKICAgICAgKiBAcGFyYW0gaWdub3JlQ2xpcHBpbmcgd2hldGhlciBvciBub3QgdG8gaWdu
b3JlIHRoZSByb290IHNjcm9sbCBmcmFtZSB3aGVuIHJldHJpZXZpbmcgdGhlIGVsZW1lbnQuCiAg
ICAgICogICAgICAgIElmIGZhbHNlLCB0aGlzIG1ldGhvZCByZXR1cm5zIG51bGwgZm9yIGNvb3Jk
aW5hdGVzIG91dHNpZGUgb2YgdGhlIHZpZXdwb3J0LgogICAgICAqLwotICAgIFBhc3NSZWZQdHI8
Tm9kZUxpc3Q+IG5vZGVzRnJvbVJlY3QoaW50IGNlbnRlclgsIGludCBjZW50ZXJZLCB1bnNpZ25l
ZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBib3R0b21QYWRkaW5nLCB1bnNpZ25lZCBsZWZ0
UGFkZGluZywgYm9vbCBpZ25vcmVDbGlwcGluZywgYm9vbCBhbGxvd1NoYWRvd0NvbnRlbnQpIGNv
bnN0OworICAgIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IG5vZGVzRnJvbVJlY3QoaW50IGNlbnRlclgs
IGludCBjZW50ZXJZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgdG9wUGFkZGluZywgdW5zaWduZWQgcmlnaHRQYWRkaW5nLCB1bnNpZ25lZCBib3R0b21Q
YWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgaWdub3JlQ2xpcHBpbmcsIGJvb2wgYWxsb3dTaGFkb3dDb250ZW50
LCBib29sIGFsbG93Q2hpbGRGcmFtZUNvbnRlbnQgPSBmYWxzZSkgY29uc3Q7CiAgICAgRWxlbWVu
dCogZWxlbWVudEZyb21Qb2ludChpbnQgeCwgaW50IHkpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8
UmFuZ2U+IGNhcmV0UmFuZ2VGcm9tUG9pbnQoaW50IHgsIGludCB5KTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IGRjNmNmYTg3NTJkMjdmZDFkNzRmMGJjMjM4ZTBlMzJk
M2Y5Yzk5OTcuLjAwMWZkNmQ5ZTllMTE2Mjk1ZDIwYzUwOTIzMDE5MjdhMDVkN2RmOTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTEwNDEsNDAgKzEwNDEsMjEgQEAgRHJh
Z1NvdXJjZUFjdGlvbiBFdmVudEhhbmRsZXI6OnVwZGF0ZURyYWdTb3VyY2VBY3Rpb25zQWxsb3dl
ZCgpIGNvbnN0CiAgICAgCiBIaXRUZXN0UmVzdWx0IEV2ZW50SGFuZGxlcjo6aGl0VGVzdFJlc3Vs
dEF0UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBib29sIGFsbG93U2hhZG93Q29udGVu
dCwgYm9vbCBpZ25vcmVDbGlwcGluZywgSGl0VGVzdFNjcm9sbGJhcnMgdGVzdFNjcm9sbGJhcnMs
IEhpdFRlc3RSZXF1ZXN0OjpIaXRUZXN0UmVxdWVzdFR5cGUgaGl0VHlwZSwgY29uc3QgTGF5b3V0
U2l6ZSYgcGFkZGluZykKIHsKLSAgICBlbnVtIFNoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3kgc2hh
ZG93Q29udGVudEZpbHRlclBvbGljeSA9IGFsbG93U2hhZG93Q29udGVudCA/IEFsbG93U2hhZG93
Q29udGVudCA6IERvTm90QWxsb3dTaGFkb3dDb250ZW50OwotICAgIEhpdFRlc3RSZXN1bHQgcmVz
dWx0KHBvaW50LCBwYWRkaW5nLmhlaWdodCgpLCBwYWRkaW5nLndpZHRoKCksIHBhZGRpbmcuaGVp
Z2h0KCksIHBhZGRpbmcud2lkdGgoKSwgc2hhZG93Q29udGVudEZpbHRlclBvbGljeSk7CisgICAg
SGl0VGVzdFJlc3VsdCByZXN1bHQocG9pbnQsIHBhZGRpbmcuaGVpZ2h0KCksIHBhZGRpbmcud2lk
dGgoKSwgcGFkZGluZy5oZWlnaHQoKSwgcGFkZGluZy53aWR0aCgpKTsKIAogICAgIGlmICghbV9m
cmFtZS0+Y29udGVudFJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgaWYg
KGlnbm9yZUNsaXBwaW5nKQogICAgICAgICBoaXRUeXBlIHw9IEhpdFRlc3RSZXF1ZXN0OjpJZ25v
cmVDbGlwcGluZzsKKyAgICBpZiAoYWxsb3dTaGFkb3dDb250ZW50KQorICAgICAgICBoaXRUeXBl
IHw9IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd1NoYWRvd0NvbnRlbnQ7CisgICAgaWYgKHRlc3RTY3Jv
bGxiYXJzID09IFNob3VsZEhpdFRlc3RTY3JvbGxiYXJzKQorICAgICAgICBoaXRUeXBlIHw9IEhp
dFRlc3RSZXF1ZXN0OjpUZXN0Q2hpbGRGcmFtZVNjcm9sbEJhcnM7CisgICAgLy8gV2UgYWx3YXlz
IG5lZWQgdG8gaGFuZGxlIGNoaWxkIGZyYW1lIGNvbnRlbnQuCisgICAgaGl0VHlwZSB8PSBIaXRU
ZXN0UmVxdWVzdDo6QWxsb3dDaGlsZEZyYW1lQ29udGVudDsKKwogICAgIG1fZnJhbWUtPmNvbnRl
bnRSZW5kZXJlcigpLT5oaXRUZXN0KEhpdFRlc3RSZXF1ZXN0KGhpdFR5cGUpLCByZXN1bHQpOwog
Ci0gICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgTm9kZSogbiA9IHJlc3VsdC5pbm5lck5vZGUo
KTsKLSAgICAgICAgaWYgKCFyZXN1bHQuaXNPdmVyV2lkZ2V0KCkgfHwgIW4gfHwgIW4tPnJlbmRl
cmVyKCkgfHwgIW4tPnJlbmRlcmVyKCktPmlzV2lkZ2V0KCkpCi0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgUmVuZGVyV2lkZ2V0KiByZW5kZXJXaWRnZXQgPSB0b1JlbmRlcldpZGdldChuLT5y
ZW5kZXJlcigpKTsKLSAgICAgICAgV2lkZ2V0KiB3aWRnZXQgPSByZW5kZXJXaWRnZXQtPndpZGdl
dCgpOwotICAgICAgICBpZiAoIXdpZGdldCB8fCAhd2lkZ2V0LT5pc0ZyYW1lVmlldygpKQotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIEZyYW1lKiBmcmFtZSA9IHN0YXRpY19jYXN0PEhUTUxG
cmFtZUVsZW1lbnRCYXNlKj4obiktPmNvbnRlbnRGcmFtZSgpOwotICAgICAgICBpZiAoIWZyYW1l
IHx8ICFmcmFtZS0+Y29udGVudFJlbmRlcmVyKCkpCi0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgRnJhbWVWaWV3KiB2aWV3ID0gc3RhdGljX2Nhc3Q8RnJhbWVWaWV3Kj4od2lkZ2V0KTsKLSAg
ICAgICAgTGF5b3V0UG9pbnQgd2lkZ2V0UG9pbnQocmVzdWx0LmxvY2FsUG9pbnQoKS54KCkgKyB2
aWV3LT5zY3JvbGxYKCkgLSByZW5kZXJXaWRnZXQtPmJvcmRlckxlZnQoKSAtIHJlbmRlcldpZGdl
dC0+cGFkZGluZ0xlZnQoKSwgCi0gICAgICAgICAgICByZXN1bHQubG9jYWxQb2ludCgpLnkoKSAr
IHZpZXctPnNjcm9sbFkoKSAtIHJlbmRlcldpZGdldC0+Ym9yZGVyVG9wKCkgLSByZW5kZXJXaWRn
ZXQtPnBhZGRpbmdUb3AoKSk7Ci0gICAgICAgIEhpdFRlc3RSZXN1bHQgd2lkZ2V0SGl0VGVzdFJl
c3VsdCh3aWRnZXRQb2ludCwgcGFkZGluZy5oZWlnaHQoKSwgcGFkZGluZy53aWR0aCgpLCBwYWRk
aW5nLmhlaWdodCgpLCBwYWRkaW5nLndpZHRoKCksIHNoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3kp
OwotICAgICAgICBmcmFtZS0+Y29udGVudFJlbmRlcmVyKCktPmhpdFRlc3QoSGl0VGVzdFJlcXVl
c3QoaGl0VHlwZSksIHdpZGdldEhpdFRlc3RSZXN1bHQpOwotICAgICAgICByZXN1bHQgPSB3aWRn
ZXRIaXRUZXN0UmVzdWx0OwotCi0gICAgICAgIGlmICh0ZXN0U2Nyb2xsYmFycyA9PSBTaG91bGRI
aXRUZXN0U2Nyb2xsYmFycykgewotICAgICAgICAgICAgU2Nyb2xsYmFyKiBldmVudFNjcm9sbGJh
ciA9IHZpZXctPnNjcm9sbGJhckF0UG9pbnQocm91bmRlZEludFBvaW50KHBvaW50KSk7Ci0gICAg
ICAgICAgICBpZiAoZXZlbnRTY3JvbGxiYXIpCi0gICAgICAgICAgICAgICAgcmVzdWx0LnNldFNj
cm9sbGJhcihldmVudFNjcm9sbGJhcik7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCiAgICAgLy8g
SWYgb3VyIEhpdFRlc3RSZXN1bHQgaXMgbm90IHZpc2libGUsIHRoZW4gd2Ugc3RhcnRlZCBoaXQg
dGVzdGluZyB0b28gZmFyIGRvd24gdGhlIGZyYW1lIGNoYWluLiAKICAgICAvLyBBbm90aGVyIGhp
dCB0ZXN0IGF0IHRoZSBtYWluIGZyYW1lIGxldmVsIHNob3VsZCBnZXQgdXMgdGhlIGNvcnJlY3Qg
dmlzaWJsZSByZXN1bHQuCiAgICAgRnJhbWUqIHJlc3VsdEZyYW1lID0gcmVzdWx0LmlubmVyTm9u
U2hhcmVkTm9kZSgpID8gcmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpLT5kb2N1bWVudCgpLT5m
cmFtZSgpIDogMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0
UmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXF1ZXN0LmgKaW5k
ZXggZTZhNTIzMWJiZmM4NjViMTc5OTIyYWI3M2VhOWY5MmM2YzI0OGRmYi4uOTI3ZGFjZjE0OTY3
YzdmMGRiZTU0YWNlNGMzMmJhYTZiMDAxZTUxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0hpdFRlc3RSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0hpdFRlc3RSZXF1ZXN0LmgKQEAgLTM0LDcgKzM0LDExIEBAIHB1YmxpYzoKICAgICAgICAgUmVs
ZWFzZSA9IDEgPDwgNCwKICAgICAgICAgSWdub3JlQ2xpcHBpbmcgPSAxIDw8IDUsCiAgICAgICAg
IFNWR0NsaXBDb250ZW50ID0gMSA8PCA2LAotICAgICAgICBUb3VjaEV2ZW50ID0gMSA8PCA3Cisg
ICAgICAgIFRvdWNoRXZlbnQgPSAxIDw8IDcsCisgICAgICAgIEFsbG93U2hhZG93Q29udGVudCA9
IDEgPDwgOCwKKyAgICAgICAgQWxsb3dDaGlsZEZyYW1lQ29udGVudCA9IDEgPDwgOSwKKyAgICAg
ICAgQ2hpbGRGcmFtZUhpdFRlc3QgPSAxIDw8IDEwLAorICAgICAgICBUZXN0Q2hpbGRGcmFtZVNj
cm9sbEJhcnMgPSAxIDw8IDExCiAgICAgfTsKIAogICAgIHR5cGVkZWYgdW5zaWduZWQgSGl0VGVz
dFJlcXVlc3RUeXBlOwpAQCAtNTIsNiArNTYsMTAgQEAgcHVibGljOgogICAgIGJvb2wgc3ZnQ2xp
cENvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RUeXBlICYgU1ZHQ2xpcENvbnRlbnQ7
IH0KICAgICBib29sIHRvdWNoRXZlbnQoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RUeXBlICYg
VG91Y2hFdmVudDsgfQogICAgIGJvb2wgbW91c2VFdmVudCgpIGNvbnN0IHsgcmV0dXJuICF0b3Vj
aEV2ZW50KCk7IH0KKyAgICBib29sIGFsbG93U2hhZG93Q29udGVudCgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVxdWVzdFR5cGUgJiBBbGxvd1NoYWRvd0NvbnRlbnQ7IH0KKyAgICBib29sIGFsbG93Q2hp
bGRGcmFtZUNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RUeXBlICYgQWxsb3dDaGls
ZEZyYW1lQ29udGVudDsgfQorICAgIGJvb2wgY2hpbGRGcmFtZUhpdFRlc3QoKSBjb25zdCB7IHJl
dHVybiBtX3JlcXVlc3RUeXBlICYgQ2hpbGRGcmFtZUhpdFRlc3Q7IH0KKyAgICBib29sIHRlc3RD
aGlsZEZyYW1lU2Nyb2xsQmFycygpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdFR5cGUgJiBUZXN0
Q2hpbGRGcmFtZVNjcm9sbEJhcnM7IH0KIAogICAgIC8vIENvbnZlbmllbmNlIGZ1bmN0aW9ucwog
ICAgIGJvb2wgdG91Y2hNb3ZlKCkgY29uc3QgeyByZXR1cm4gbW92ZSgpICYmIHRvdWNoRXZlbnQo
KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCmluZGV4IGY3
ODIyNjNhZTYxMDExZmFiNGQ4MThkZTQ0YzYxNDcwMTQ2ZjQxMmIuLmU4ODFhZTA1MDc2ZDZjYTdh
M2NjMzM0MmRkZDRjNjk4MzM1NDZlN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9IaXRUZXN0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0
VGVzdFJlc3VsdC5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCBIaXRUZXN0TG9jYXRpb246OkhpdFRl
c3RMb2NhdGlvbihjb25zdCBIaXRUZXN0TG9jYXRpb24mIG90aGVyLCBjb25zdCBMYXlvdXRTaXpl
JgogICAgICwgbV9ib3VuZGluZ0JveChvdGhlci5tX2JvdW5kaW5nQm94KQogICAgICwgbV90cmFu
c2Zvcm1lZFBvaW50KG90aGVyLm1fdHJhbnNmb3JtZWRQb2ludCkKICAgICAsIG1fdHJhbnNmb3Jt
ZWRSZWN0KG90aGVyLm1fdHJhbnNmb3JtZWRSZWN0KQotICAgICwgbV9yZWdpb24ocmVnaW9uKQor
ICAgICwgbV9yZWdpb24ocmVnaW9uID8gcmVnaW9uIDogb3RoZXIubV9yZWdpb24pCiAgICAgLCBt
X2lzUmVjdEJhc2VkKG90aGVyLm1faXNSZWN0QmFzZWQpCiAgICAgLCBtX2lzUmVjdGlsaW5lYXIo
b3RoZXIubV9pc1JlY3RpbGluZWFyKQogewpAQCAtMTk0LDI3ICsxOTQsMjMgQEAgSW50UmVjdCBI
aXRUZXN0TG9jYXRpb246OnJlY3RGb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQsIHVu
c2lnbmVkIHRvcFBhZGQKIAogSGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3VsdCgpIDogSGl0VGVz
dExvY2F0aW9uKCkKICAgICAsIG1faXNPdmVyV2lkZ2V0KGZhbHNlKQotICAgICwgbV9zaGFkb3dD
b250ZW50RmlsdGVyUG9saWN5KERvTm90QWxsb3dTaGFkb3dDb250ZW50KQogewogfQogCiBIaXRU
ZXN0UmVzdWx0OjpIaXRUZXN0UmVzdWx0KGNvbnN0IExheW91dFBvaW50JiBwb2ludCkgOiBIaXRU
ZXN0TG9jYXRpb24ocG9pbnQpCiAgICAgLCBtX2lzT3ZlcldpZGdldChmYWxzZSkKLSAgICAsIG1f
c2hhZG93Q29udGVudEZpbHRlclBvbGljeShEb05vdEFsbG93U2hhZG93Q29udGVudCkKIHsKIH0K
IAotSGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3VsdChjb25zdCBMYXlvdXRQb2ludCYgY2VudGVy
UG9pbnQsIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFkZGluZywgdW5zaWdu
ZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcsIFNoYWRvd0NvbnRlbnRGaWx0
ZXJQb2xpY3kgYWxsb3dTaGFkb3dDb250ZW50KQorSGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3Vs
dChjb25zdCBMYXlvdXRQb2ludCYgY2VudGVyUG9pbnQsIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVu
c2lnbmVkIHJpZ2h0UGFkZGluZywgdW5zaWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbGVm
dFBhZGRpbmcpCiAgICAgOiBIaXRUZXN0TG9jYXRpb24oY2VudGVyUG9pbnQsIHRvcFBhZGRpbmcs
IHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcpCiAgICAgLCBtX2lzT3Zl
cldpZGdldChmYWxzZSkKLSAgICAsIG1fc2hhZG93Q29udGVudEZpbHRlclBvbGljeShhbGxvd1No
YWRvd0NvbnRlbnQpCiB7CiB9CiAKLUhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQoY29uc3Qg
SGl0VGVzdExvY2F0aW9uJiBvdGhlciwgU2hhZG93Q29udGVudEZpbHRlclBvbGljeSBhbGxvd1No
YWRvd0NvbnRlbnQpCitIaXRUZXN0UmVzdWx0OjpIaXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RM
b2NhdGlvbiYgb3RoZXIpCiAgICAgOiBIaXRUZXN0TG9jYXRpb24ob3RoZXIpCiAgICAgLCBtX2lz
T3ZlcldpZGdldChmYWxzZSkKLSAgICAsIG1fc2hhZG93Q29udGVudEZpbHRlclBvbGljeShhbGxv
d1NoYWRvd0NvbnRlbnQpCiB7CiB9CiAKQEAgLTIyNiw3ICsyMjIsNiBAQCBIaXRUZXN0UmVzdWx0
OjpIaXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RSZXN1bHQmIG90aGVyKQogICAgICwgbV9pbm5l
clVSTEVsZW1lbnQob3RoZXIuVVJMRWxlbWVudCgpKQogICAgICwgbV9zY3JvbGxiYXIob3RoZXIu
c2Nyb2xsYmFyKCkpCiAgICAgLCBtX2lzT3ZlcldpZGdldChvdGhlci5pc092ZXJXaWRnZXQoKSkK
LSAgICAsIG1fc2hhZG93Q29udGVudEZpbHRlclBvbGljeShvdGhlci5zaGFkb3dDb250ZW50Rmls
dGVyUG9saWN5KCkpCiB7CiAgICAgLy8gT25seSBjb3B5IHRoZSBOb2RlU2V0IGluIGNhc2Ugb2Yg
cmVjdCBoaXQgdGVzdC4KICAgICBtX3JlY3RCYXNlZFRlc3RSZXN1bHQgPSBhZG9wdFB0cihvdGhl
ci5tX3JlY3RCYXNlZFRlc3RSZXN1bHQgPyBuZXcgTm9kZVNldCgqb3RoZXIubV9yZWN0QmFzZWRU
ZXN0UmVzdWx0KSA6IDApOwpAQCAtMjQ4LDcgKzI0Myw2IEBAIEhpdFRlc3RSZXN1bHQmIEhpdFRl
c3RSZXN1bHQ6Om9wZXJhdG9yPShjb25zdCBIaXRUZXN0UmVzdWx0JiBvdGhlcikKIAogICAgIC8v
IE9ubHkgY29weSB0aGUgTm9kZVNldCBpbiBjYXNlIG9mIHJlY3QgaGl0IHRlc3QuCiAgICAgbV9y
ZWN0QmFzZWRUZXN0UmVzdWx0ID0gYWRvcHRQdHIob3RoZXIubV9yZWN0QmFzZWRUZXN0UmVzdWx0
ID8gbmV3IE5vZGVTZXQoKm90aGVyLm1fcmVjdEJhc2VkVGVzdFJlc3VsdCkgOiAwKTsKLSAgICBt
X3NoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3kgID0gb3RoZXIuc2hhZG93Q29udGVudEZpbHRlclBv
bGljeSgpOwogCiAgICAgcmV0dXJuICp0aGlzOwogfQpAQCAtNjc0LDcgKzY2OCw3IEBAIGJvb2wg
SGl0VGVzdFJlc3VsdDo6aXNDb250ZW50RWRpdGFibGUoKSBjb25zdAogICAgIHJldHVybiBtX2lu
bmVyTm9uU2hhcmVkTm9kZS0+cmVuZGVyZXJJc0VkaXRhYmxlKCk7CiB9CiAKLWJvb2wgSGl0VGVz
dFJlc3VsdDo6YWRkTm9kZVRvUmVjdEJhc2VkVGVzdFJlc3VsdChOb2RlKiBub2RlLCBjb25zdCBI
aXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFJlY3QmIHJl
Y3QpCitib29sIEhpdFRlc3RSZXN1bHQ6OmFkZE5vZGVUb1JlY3RCYXNlZFRlc3RSZXN1bHQoTm9k
ZSogbm9kZSwgY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEhpdFRlc3RMb2Nh
dGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkKIHsKICAg
ICAvLyBJZiBpdCBpcyBub3QgYSByZWN0LWJhc2VkIGhpdCB0ZXN0LCB0aGlzIG1ldGhvZCBoYXMg
dG8gYmUgbm8tb3AuCiAgICAgLy8gUmV0dXJuIGZhbHNlLCBzbyB0aGUgaGl0IHRlc3Qgc3RvcHMu
CkBAIC02ODUsNyArNjc5LDcgQEAgYm9vbCBIaXRUZXN0UmVzdWx0OjphZGROb2RlVG9SZWN0QmFz
ZWRUZXN0UmVzdWx0KE5vZGUqIG5vZGUsIGNvbnN0IEhpdFRlc3RMb2NhdGkKICAgICBpZiAoIW5v
ZGUpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKG1fc2hhZG93Q29udGVudEZpbHRl
clBvbGljeSA9PSBEb05vdEFsbG93U2hhZG93Q29udGVudCkKKyAgICBpZiAoIXJlcXVlc3QuYWxs
b3dTaGFkb3dDb250ZW50KCkpCiAgICAgICAgIG5vZGUgPSBub2RlLT5zaGFkb3dBbmNlc3Rvck5v
ZGUoKTsKIAogICAgIG11dGFibGVSZWN0QmFzZWRUZXN0UmVzdWx0KCkuYWRkKG5vZGUpOwpAQCAt
NzA5LDcgKzcwMyw3IEBAIGJvb2wgSGl0VGVzdFJlc3VsdDo6YWRkTm9kZVRvUmVjdEJhc2VkVGVz
dFJlc3VsdChOb2RlKiBub2RlLCBjb25zdCBIaXRUZXN0TG9jYXRpCiAgICAgcmV0dXJuICFyZWdp
b25GaWxsZWQ7CiB9CiAKLWJvb2wgSGl0VGVzdFJlc3VsdDo6YWRkTm9kZVRvUmVjdEJhc2VkVGVz
dFJlc3VsdChOb2RlKiBub2RlLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250
YWluZXIsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKK2Jvb2wgSGl0VGVzdFJlc3VsdDo6YWRkTm9k
ZVRvUmVjdEJhc2VkVGVzdFJlc3VsdChOb2RlKiBub2RlLCBjb25zdCBIaXRUZXN0UmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25z
dCBGbG9hdFJlY3QmIHJlY3QpCiB7CiAgICAgLy8gSWYgaXQgaXMgbm90IGEgcmVjdC1iYXNlZCBo
aXQgdGVzdCwgdGhpcyBtZXRob2QgaGFzIHRvIGJlIG5vLW9wLgogICAgIC8vIFJldHVybiBmYWxz
ZSwgc28gdGhlIGhpdCB0ZXN0IHN0b3BzLgpAQCAtNzIwLDcgKzcxNCw3IEBAIGJvb2wgSGl0VGVz
dFJlc3VsdDo6YWRkTm9kZVRvUmVjdEJhc2VkVGVzdFJlc3VsdChOb2RlKiBub2RlLCBjb25zdCBI
aXRUZXN0TG9jYXRpCiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAg
IGlmIChtX3NoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3kgPT0gRG9Ob3RBbGxvd1NoYWRvd0NvbnRl
bnQpCisgICAgaWYgKCFyZXF1ZXN0LmFsbG93U2hhZG93Q29udGVudCgpKQogICAgICAgICBub2Rl
ID0gbm9kZS0+c2hhZG93QW5jZXN0b3JOb2RlKCk7CiAKICAgICBtdXRhYmxlUmVjdEJhc2VkVGVz
dFJlc3VsdCgpLmFkZChub2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9IaXRUZXN0UmVzdWx0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3Vs
dC5oCmluZGV4IGExNGUxZDhmYzc5NjMyMjhkMjA4YmYzMGE1NGYxZTFiNTYwZmUxMDYuLmJhYzk2
YTJiMWY5MmE2NTU1OGNmZWIzNzFiMGEyYTJmN2JhNTMzN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0hpdFRlc3RSZXN1bHQuaApAQCAtNDUsOCArNDUsNiBAQCBjbGFzcyBOb2RlOwogY2xh
c3MgUmVuZGVyUmVnaW9uOwogY2xhc3MgU2Nyb2xsYmFyOwogCi1lbnVtIFNoYWRvd0NvbnRlbnRG
aWx0ZXJQb2xpY3kgeyBEb05vdEFsbG93U2hhZG93Q29udGVudCwgQWxsb3dTaGFkb3dDb250ZW50
IH07Ci0KIGNsYXNzIEhpdFRlc3RMb2NhdGlvbiB7CiBwdWJsaWM6CiAKQEAgLTU3LDcgKzU1LDcg
QEAgcHVibGljOgogICAgIC8vIFBhc3Mgbm9uLXplcm8gcGFkZGluZyB2YWx1ZXMgdG8gcGVyZm9y
bSBhIHJlY3QtYmFzZWQgaGl0IHRlc3QuCiAgICAgSGl0VGVzdExvY2F0aW9uKGNvbnN0IExheW91
dFBvaW50JiBjZW50ZXJQb2ludCwgdW5zaWduZWQgdG9wUGFkZGluZywgdW5zaWduZWQgcmlnaHRQ
YWRkaW5nLCB1bnNpZ25lZCBib3R0b21QYWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGluZyk7CiAg
ICAgLy8gTWFrZSBhIGNvcHkgdGhlIEhpdFRlc3RMb2NhdGlvbiBpbiBhIG5ldyByZWdpb24gYnkg
YXBwbHlpbmcgZ2l2ZW4gb2Zmc2V0IHRvIGludGVybmFsIHBvaW50IGFuZCBhcmVhLgotICAgIEhp
dFRlc3RMb2NhdGlvbihjb25zdCBIaXRUZXN0TG9jYXRpb24mLCBjb25zdCBMYXlvdXRTaXplJiBv
ZmZzZXQsIFJlbmRlclJlZ2lvbiopOworICAgIEhpdFRlc3RMb2NhdGlvbihjb25zdCBIaXRUZXN0
TG9jYXRpb24mLCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXQsIFJlbmRlclJlZ2lvbiogPSAwKTsK
ICAgICBIaXRUZXN0TG9jYXRpb24oY29uc3QgSGl0VGVzdExvY2F0aW9uJik7CiAgICAgfkhpdFRl
c3RMb2NhdGlvbigpOwogICAgIEhpdFRlc3RMb2NhdGlvbiYgb3BlcmF0b3I9KGNvbnN0IEhpdFRl
c3RMb2NhdGlvbiYpOwpAQCAtMTA5LDggKzEwNyw4IEBAIHB1YmxpYzoKICAgICBIaXRUZXN0UmVz
dWx0KCk7CiAgICAgSGl0VGVzdFJlc3VsdChjb25zdCBMYXlvdXRQb2ludCYpOwogICAgIC8vIFBh
c3Mgbm9uLW5lZ2F0aXZlIHBhZGRpbmcgdmFsdWVzIHRvIHBlcmZvcm0gYSByZWN0LWJhc2VkIGhp
dCB0ZXN0LgotICAgIEhpdFRlc3RSZXN1bHQoY29uc3QgTGF5b3V0UG9pbnQmIGNlbnRlclBvaW50
LCB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcsIHVuc2lnbmVkIGJv
dHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nLCBTaGFkb3dDb250ZW50RmlsdGVyUG9s
aWN5KTsKLSAgICBIaXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYsIFNoYWRvd0Nv
bnRlbnRGaWx0ZXJQb2xpY3kpOworICAgIEhpdFRlc3RSZXN1bHQoY29uc3QgTGF5b3V0UG9pbnQm
IGNlbnRlclBvaW50LCB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcs
IHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nKTsKKyAgICBIaXRU
ZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYpOwogICAgIEhpdFRlc3RSZXN1bHQoY29u
c3QgSGl0VGVzdFJlc3VsdCYpOwogICAgIH5IaXRUZXN0UmVzdWx0KCk7CiAgICAgSGl0VGVzdFJl
c3VsdCYgb3BlcmF0b3I9KGNvbnN0IEhpdFRlc3RSZXN1bHQmKTsKQEAgLTEyNSw3ICsxMjMsNiBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRUb05vblNoYWRvd0FuY2VzdG9yKCk7CiAKICAgICBjb25z
dCBIaXRUZXN0TG9jYXRpb24mIGhpdFRlc3RMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuICp0aGlz
OyB9Ci0gICAgU2hhZG93Q29udGVudEZpbHRlclBvbGljeSBzaGFkb3dDb250ZW50RmlsdGVyUG9s
aWN5KCkgY29uc3QgeyByZXR1cm4gbV9zaGFkb3dDb250ZW50RmlsdGVyUG9saWN5OyB9CiAKICAg
ICB2b2lkIHNldElubmVyTm9kZShOb2RlKik7CiAgICAgdm9pZCBzZXRJbm5lck5vblNoYXJlZE5v
ZGUoTm9kZSopOwpAQCAtMTY2LDggKzE2Myw4IEBAIHB1YmxpYzoKIAogICAgIC8vIFJldHVybnMg
dHJ1ZSBpZiBpdCBpcyByZWN0LWJhc2VkIGhpdCB0ZXN0IGFuZCBuZWVkcyB0byBjb250aW51ZSB1
bnRpbCB0aGUgcmVjdCBpcyBmdWxseQogICAgIC8vIGVuY2xvc2VkIGJ5IHRoZSBib3VuZGFyaWVz
IG9mIGEgbm9kZS4KLSAgICBib29sIGFkZE5vZGVUb1JlY3RCYXNlZFRlc3RSZXN1bHQoTm9kZSos
IGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0
UmVjdCYgPSBMYXlvdXRSZWN0KCkpOwotICAgIGJvb2wgYWRkTm9kZVRvUmVjdEJhc2VkVGVzdFJl
c3VsdChOb2RlKiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBj
b25zdCBGbG9hdFJlY3QmKTsKKyAgICBib29sIGFkZE5vZGVUb1JlY3RCYXNlZFRlc3RSZXN1bHQo
Tm9kZSosIGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBwb2lu
dEluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRSZWN0JiA9IExheW91dFJlY3QoKSk7CisgICAgYm9v
bCBhZGROb2RlVG9SZWN0QmFzZWRUZXN0UmVzdWx0KE5vZGUqLCBjb25zdCBIaXRUZXN0UmVxdWVz
dCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgcG9pbnRJbkNvbnRhaW5lciwgY29uc3QgRmxvYXRS
ZWN0Jik7CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgSGl0VGVzdFJlc3VsdCYpOwogCiAgICAgLy8g
SWYgbV9yZWN0QmFzZWRUZXN0UmVzdWx0IGlzIDAgdGhlbiBzZXQgaXQgdG8gYSBuZXcgTm9kZVNl
dC4gUmV0dXJuICptX3JlY3RCYXNlZFRlc3RSZXN1bHQuIExhenkgYWxsb2NhdGlvbiBtYWtlcwpA
QCAtMTk0LDggKzE5MSw2IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFNjcm9sbGJhcj4gbV9zY3Jv
bGxiYXI7CiAgICAgYm9vbCBtX2lzT3ZlcldpZGdldDsgLy8gUmV0dXJucyB0cnVlIGlmIHdlIGFy
ZSBvdmVyIGEgd2lkZ2V0IChhbmQgbm90IGluIHRoZSBib3JkZXIvcGFkZGluZyBhcmVhIG9mIGEg
UmVuZGVyV2lkZ2V0IGZvciBleGFtcGxlKS4KIAotICAgIFNoYWRvd0NvbnRlbnRGaWx0ZXJQb2xp
Y3kgbV9zaGFkb3dDb250ZW50RmlsdGVyUG9saWN5OwotCiAgICAgbXV0YWJsZSBPd25QdHI8Tm9k
ZVNldD4gbV9yZWN0QmFzZWRUZXN0UmVzdWx0OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0lubGluZUZsb3dCb3guY3BwCmluZGV4IDc3NTUwOTE2N2I5MjFlM2I0ZjM4NTNmNjNlM2Iy
ZDJjY2I5Y2NkOWEuLjlhZDBmY2ZhMTJjODMzYjBhMWQzYzc3NGM5Zjg3NTQzZjc1ZDRjMTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKQEAgLTEwMTMsNyAr
MTAxMyw3IEBAIGJvb2wgSW5saW5lRmxvd0JveDo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJl
cXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlCiAKICAgICBpZiAodmlzaWJsZVRvSGl0
VGVzdGluZygpICYmIGxvY2F0aW9uSW5Db250YWluZXIuaW50ZXJzZWN0cyhyZWN0KSkgewogICAg
ICAgICByZW5kZXJlcigpLT51cGRhdGVIaXRUZXN0UmVzdWx0KHJlc3VsdCwgZmxpcEZvcldyaXRp
bmdNb2RlKGxvY2F0aW9uSW5Db250YWluZXIucG9pbnQoKSAtIHRvTGF5b3V0U2l6ZShhY2N1bXVs
YXRlZE9mZnNldCkpKTsgLy8gRG9uJ3QgYWRkIGluIG1feCBvciBtX3kgaGVyZSwgd2Ugd2FudCBj
b29yZHMgaW4gdGhlIGNvbnRhaW5pbmcgYmxvY2sncyBzcGFjZS4KLSAgICAgICAgaWYgKCFyZXN1
bHQuYWRkTm9kZVRvUmVjdEJhc2VkVGVzdFJlc3VsdChyZW5kZXJlcigpLT5ub2RlKCksIGxvY2F0
aW9uSW5Db250YWluZXIsIHJlY3QpKQorICAgICAgICBpZiAoIXJlc3VsdC5hZGROb2RlVG9SZWN0
QmFzZWRUZXN0UmVzdWx0KHJlbmRlcmVyKCktPm5vZGUoKSwgcmVxdWVzdCwgbG9jYXRpb25JbkNv
bnRhaW5lciwgcmVjdCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAppbmRleCA5MmQwNWEzODIxYTJm
ZmU5ZTgwZDMzNTk3ZTUyNDdkNGY4ZWU4YmU0Li41YmMzYjc2NTI1YzFmMDRiNzNmN2E2Mzc1NWQ2
MDM1NjE5NGZmYzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5l
VGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3gu
Y3BwCkBAIC0zNDksNyArMzQ5LDcgQEAgYm9vbCBJbmxpbmVUZXh0Qm94Ojppc0xpbmVCcmVhaygp
IGNvbnN0CiAgICAgcmV0dXJuIHJlbmRlcmVyKCktPmlzQlIoKSB8fCAocmVuZGVyZXIoKS0+c3R5
bGUoKS0+cHJlc2VydmVOZXdsaW5lKCkgJiYgbGVuKCkgPT0gMSAmJiAoKnRleHRSZW5kZXJlcigp
LT50ZXh0KCkpW3N0YXJ0KCldID09ICdcbicpOwogfQogCi1ib29sIElubGluZVRleHRCb3g6Om5v
ZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBj
b25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBv
aW50JiBhY2N1bXVsYXRlZE9mZnNldCwgTGF5b3V0VW5pdCAvKiBsaW5lVG9wICovLCBMYXlvdXRV
bml0IC8qbGluZUJvdHRvbSovKQorYm9vbCBJbmxpbmVUZXh0Qm94Ojpub2RlQXRQb2ludChjb25z
dCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBjb25zdCBI
aXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBh
Y2N1bXVsYXRlZE9mZnNldCwgTGF5b3V0VW5pdCAvKiBsaW5lVG9wICovLCBMYXlvdXRVbml0IC8q
bGluZUJvdHRvbSovKQogewogICAgIGlmIChpc0xpbmVCcmVhaygpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC0zNTksNyArMzU5LDcgQEAgYm9vbCBJbmxpbmVUZXh0Qm94Ojpub2RlQXRQb2lu
dChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY28KICAgICBG
bG9hdFJlY3QgcmVjdChib3hPcmlnaW4sIHNpemUoKSk7CiAgICAgaWYgKG1fdHJ1bmNhdGlvbiAh
PSBjRnVsbFRydW5jYXRpb24gJiYgdmlzaWJsZVRvSGl0VGVzdGluZygpICYmIGxvY2F0aW9uSW5D
b250YWluZXIuaW50ZXJzZWN0cyhyZWN0KSkgewogICAgICAgICByZW5kZXJlcigpLT51cGRhdGVI
aXRUZXN0UmVzdWx0KHJlc3VsdCwgZmxpcEZvcldyaXRpbmdNb2RlKGxvY2F0aW9uSW5Db250YWlu
ZXIucG9pbnQoKSAtIHRvTGF5b3V0U2l6ZShhY2N1bXVsYXRlZE9mZnNldCkpKTsKLSAgICAgICAg
aWYgKCFyZXN1bHQuYWRkTm9kZVRvUmVjdEJhc2VkVGVzdFJlc3VsdChyZW5kZXJlcigpLT5ub2Rl
KCksIGxvY2F0aW9uSW5Db250YWluZXIsIHJlY3QpKQorICAgICAgICBpZiAoIXJlc3VsdC5hZGRO
b2RlVG9SZWN0QmFzZWRUZXN0UmVzdWx0KHJlbmRlcmVyKCktPm5vZGUoKSwgcmVxdWVzdCwgbG9j
YXRpb25JbkNvbnRhaW5lciwgcmVjdCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5j
cHAKaW5kZXggOTA5MDBkMDQ3ZjU3NzUwYmU1MTU4OWM5NWFjNTM1NDgxNmU1ZTEwYy4uYzk2ZDE1
NDVmNWRjNGUwYWVlMmEzZTc4NmMyNTUxYThlY2Q0YWI0YyAxMDA3NTUKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC00NzA0LDcgKzQ3MDQsNyBAQCBib29sIFJlbmRlckJs
b2NrOjpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJl
c3VsdCYgcmVzdQogICAgIGlmICgoaGl0VGVzdEFjdGlvbiA9PSBIaXRUZXN0QmxvY2tCYWNrZ3Jv
dW5kIHx8IGhpdFRlc3RBY3Rpb24gPT0gSGl0VGVzdENoaWxkQmxvY2tCYWNrZ3JvdW5kKSAmJiBp
c1BvaW50SW5PdmVyZmxvd0NvbnRyb2wocmVzdWx0LCBsb2NhdGlvbkluQ29udGFpbmVyLnBvaW50
KCksIGFkanVzdGVkTG9jYXRpb24pKSB7CiAgICAgICAgIHVwZGF0ZUhpdFRlc3RSZXN1bHQocmVz
dWx0LCBsb2NhdGlvbkluQ29udGFpbmVyLnBvaW50KCkgLSBsb2NhbE9mZnNldCk7CiAgICAgICAg
IC8vIEZJWE1FOiBpc1BvaW50SW5PdmVyZmxvd0NvbnRyb2woKSBkb2Vzbid0IGhhbmRsZSByZWN0
LWJhc2VkIHRlc3RzIHlldC4KLSAgICAgICAgaWYgKCFyZXN1bHQuYWRkTm9kZVRvUmVjdEJhc2Vk
VGVzdFJlc3VsdChub2RlKCksIGxvY2F0aW9uSW5Db250YWluZXIpKQorICAgICAgICBpZiAoIXJl
c3VsdC5hZGROb2RlVG9SZWN0QmFzZWRUZXN0UmVzdWx0KG5vZGUoKSwgcmVxdWVzdCwgbG9jYXRp
b25JbkNvbnRhaW5lcikpCiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtNDcz
Nyw3ICs0NzM3LDcgQEAgYm9vbCBSZW5kZXJCbG9jazo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVz
dFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3UKICAgICAgICAgTGF5b3V0UmVj
dCBib3VuZHNSZWN0KGFkanVzdGVkTG9jYXRpb24sIHNpemUoKSk7CiAgICAgICAgIGlmICh2aXNp
YmxlVG9IaXRUZXN0aW5nKCkgJiYgbG9jYXRpb25JbkNvbnRhaW5lci5pbnRlcnNlY3RzKGJvdW5k
c1JlY3QpKSB7CiAgICAgICAgICAgICB1cGRhdGVIaXRUZXN0UmVzdWx0KHJlc3VsdCwgZmxpcEZv
cldyaXRpbmdNb2RlKGxvY2F0aW9uSW5Db250YWluZXIucG9pbnQoKSAtIGxvY2FsT2Zmc2V0KSk7
Ci0gICAgICAgICAgICBpZiAoIXJlc3VsdC5hZGROb2RlVG9SZWN0QmFzZWRUZXN0UmVzdWx0KG5v
ZGUoKSwgbG9jYXRpb25JbkNvbnRhaW5lciwgYm91bmRzUmVjdCkpCisgICAgICAgICAgICBpZiAo
IXJlc3VsdC5hZGROb2RlVG9SZWN0QmFzZWRUZXN0UmVzdWx0KG5vZGUoKSwgcmVxdWVzdCwgbG9j
YXRpb25JbkNvbnRhaW5lciwgYm91bmRzUmVjdCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3Bw
CmluZGV4IDM4ZGNmMmYyYjI3ZTkxODhmYzRkYWQ2ODIwOTY4YTk1YmY1MTgxY2UuLjEyZmZmOGVk
ZjRhYjA3OTY3MzUxMGUyOTMyZGZhNjg3ZjVhYWZmNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guY3BwCkBAIC03NTYsNyArNzU2LDcgQEAgYm9vbCBSZW5kZXJCb3g6Om5vZGVB
dFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1
bHQKICAgICBib3VuZHNSZWN0Lm1vdmVCeShhZGp1c3RlZExvY2F0aW9uKTsKICAgICBpZiAodmlz
aWJsZVRvSGl0VGVzdGluZygpICYmIGFjdGlvbiA9PSBIaXRUZXN0Rm9yZWdyb3VuZCAmJiBsb2Nh
dGlvbkluQ29udGFpbmVyLmludGVyc2VjdHMoYm91bmRzUmVjdCkpIHsKICAgICAgICAgdXBkYXRl
SGl0VGVzdFJlc3VsdChyZXN1bHQsIGxvY2F0aW9uSW5Db250YWluZXIucG9pbnQoKSAtIHRvTGF5
b3V0U2l6ZShhZGp1c3RlZExvY2F0aW9uKSk7Ci0gICAgICAgIGlmICghcmVzdWx0LmFkZE5vZGVU
b1JlY3RCYXNlZFRlc3RSZXN1bHQobm9kZSgpLCBsb2NhdGlvbkluQ29udGFpbmVyLCBib3VuZHNS
ZWN0KSkKKyAgICAgICAgaWYgKCFyZXN1bHQuYWRkTm9kZVRvUmVjdEJhc2VkVGVzdFJlc3VsdChu
b2RlKCksIHJlcXVlc3QsIGxvY2F0aW9uSW5Db250YWluZXIsIGJvdW5kc1JlY3QpKQogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGcmFtZUJhc2UuY3BwCmluZGV4IGFhODI4NzBkNGVmYThhZGJjODE5NmZkZDZhNTA2ZjU5
OGNiMDc1MzcuLjEzZTBiMGYzMjc1ZGI1Zjg0OTA2YjA4NmRiZTE3ZGQyYmZiZDg4OTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuY3BwCkBAIC0yOSw2ICsy
OSw4IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNs
dWRlICJIVE1MRnJhbWVFbGVtZW50QmFzZS5oIgorI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIK
KyNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtMTA0LDQgKzEwNiwzMSBAQCB2b2lkIFJlbmRlckZyYW1lQmFz
ZTo6bGF5b3V0V2l0aEZsYXR0ZW5pbmcoYm9vbCBoYXNGaXhlZFdpZHRoLCBib29sIGhhc0ZpeGVk
SGVpZwogICAgIHNldE5lZWRzTGF5b3V0KGZhbHNlKTsKIH0KIAorYm9vbCBSZW5kZXJGcmFtZUJh
c2U6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVz
dWx0JiByZXN1bHQsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwg
Y29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uIGFjdGlv
bikKK3sKKyAgICBpZiAocmVxdWVzdC5hbGxvd0NoaWxkRnJhbWVDb250ZW50KCkpIHsKKyAgICAg
ICAgRnJhbWVWaWV3KiBjaGlsZEZyYW1lVmlldyA9IHN0YXRpY19jYXN0PEZyYW1lVmlldyo+KHdp
ZGdldCgpKTsKKyAgICAgICAgUmVuZGVyVmlldyogY2hpbGRSb290ID0gY2hpbGRGcmFtZVZpZXcg
PyBzdGF0aWNfY2FzdDxSZW5kZXJWaWV3Kj4oY2hpbGRGcmFtZVZpZXctPmZyYW1lKCktPmNvbnRl
bnRSZW5kZXJlcigpKSA6IDA7CisgICAgICAgIGlmIChjaGlsZFJvb3QpIHsKKyAgICAgICAgICAg
IEhpdFRlc3RMb2NhdGlvbiBuZXdIaXRUZXN0TG9jYXRpb24obG9jYXRpb25JbkNvbnRhaW5lciwg
LWxvY2F0aW9uKCkgLSBhY2N1bXVsYXRlZE9mZnNldCk7CisgICAgICAgICAgICBIaXRUZXN0UmVx
dWVzdCBuZXdIaXRUZXN0UmVxdWVzdChyZXF1ZXN0LnR5cGUoKSB8IEhpdFRlc3RSZXF1ZXN0OjpD
aGlsZEZyYW1lSGl0VGVzdCk7CisKKyAgICAgICAgICAgIGJvb2wgaXNJbnNpZGVDaGlsZEZyYW1l
ID0gY2hpbGRSb290LT5sYXllcigpLT5oaXRUZXN0KG5ld0hpdFRlc3RSZXF1ZXN0LCBuZXdIaXRU
ZXN0TG9jYXRpb24sIHJlc3VsdCk7CisgICAgICAgICAgICBpZiAoaXNJbnNpZGVDaGlsZEZyYW1l
KQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgICAgICBpZiAocmVxdWVz
dC50ZXN0Q2hpbGRGcmFtZVNjcm9sbEJhcnMoKSkgeworICAgICAgICAgICAgICAgIC8vIFNjcm9s
bFZpZXcgc2Nyb2xsYmFycyBhcmUgbm90IHRoZSBzYW1lIGFzIFJlbmRlckxheWVyIHNjcm9sbGJh
cnMgdGVzdGVkIGJ5IFJlbmRlckxheWVyOjpoaXRUZXN0T3ZlcmZsb3dDb250cm9scywKKyAgICAg
ICAgICAgICAgICAvLyBzbyB3ZSBuZWVkIHRvIHRlc3QgU2Nyb2xsVmlldyBzY3JvbGxiYXJzIHNl
cGFyYXRlbHkgaGVyZS4KKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogQ29uc2lkZXIgaWYgdGhp
cyB0ZXN0IGNvdWxkIGJlIGRvbmUgdW5jb25kaXRpb25hbGx5LgorICAgICAgICAgICAgICAgIFNj
cm9sbGJhciogZnJhbWVTY3JvbGxiYXIgPSBjaGlsZEZyYW1lVmlldy0+c2Nyb2xsYmFyQXRQb2lu
dChuZXdIaXRUZXN0TG9jYXRpb24ucm91bmRlZFBvaW50KCkpOworICAgICAgICAgICAgICAgIGlm
IChmcmFtZVNjcm9sbGJhcikKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnNldFNjcm9sbGJh
cihmcmFtZVNjcm9sbGJhcik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICByZXR1cm4gUmVuZGVyUGFydDo6bm9kZUF0UG9pbnQocmVxdWVzdCwgcmVzdWx0LCBsb2NhdGlv
bkluQ29udGFpbmVyLCBhY2N1bXVsYXRlZE9mZnNldCwgYWN0aW9uKTsKK30KKwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5oCmluZGV4IDRmYWQ1NjBjNWIzMzdm
OTZiODEzYjBjYjc5MDU0NTM2MmRjNjY4N2MuLmE3ZGVlZGFiMTAyODNkZjY5NTQxOGVkZTBmYmI5
NGQ0OWUxMmU0OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
cmFtZUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNl
LmgKQEAgLTM2LDYgKzM2LDcgQEAgcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFJlbmRlckZyYW1l
QmFzZShFbGVtZW50Kik7CiAKIHB1YmxpYzoKKyAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0UG9pbnQo
Y29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExvY2F0
aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRP
ZmZzZXQsIEhpdFRlc3RBY3Rpb24pIE9WRVJSSURFOwogICAgIHZvaWQgbGF5b3V0V2l0aEZsYXR0
ZW5pbmcoYm9vbCBmaXhlZFdpZHRoLCBib29sIGZpeGVkSGVpZ2h0KTsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCmluZGV4IDczMTgzN2UxMTdjNTBhNjNhMjcy
ZjIwY2I3ZmZiOTMxMmJjMWJkZTkuLjE5NTNmNTMzMWUxNTg5NGQzZDUyMDZkOTZjODI3Nzc5ODAx
MWJiMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcApAQCAtNTAx
LDcgKzUwMSw3IEBAIEhUTUxNYXBFbGVtZW50KiBSZW5kZXJJbWFnZTo6aW1hZ2VNYXAoKSBjb25z
dAogCiBib29sIFJlbmRlckltYWdlOjpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYg
cmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxv
Y2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwg
SGl0VGVzdEFjdGlvbiBoaXRUZXN0QWN0aW9uKQogewotICAgIEhpdFRlc3RSZXN1bHQgdGVtcFJl
c3VsdChyZXN1bHQuaGl0VGVzdExvY2F0aW9uKCksIHJlc3VsdC5zaGFkb3dDb250ZW50RmlsdGVy
UG9saWN5KCkpOworICAgIEhpdFRlc3RSZXN1bHQgdGVtcFJlc3VsdChyZXN1bHQuaGl0VGVzdExv
Y2F0aW9uKCkpOwogICAgIGJvb2wgaW5zaWRlID0gUmVuZGVyUmVwbGFjZWQ6Om5vZGVBdFBvaW50
KHJlcXVlc3QsIHRlbXBSZXN1bHQsIGxvY2F0aW9uSW5Db250YWluZXIsIGFjY3VtdWxhdGVkT2Zm
c2V0LCBoaXRUZXN0QWN0aW9uKTsKIAogICAgIGlmICh0ZW1wUmVzdWx0LmlubmVyTm9kZSgpICYm
IG5vZGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXgg
MGQ0NjFkYjNkYjQyM2I0NzJkZGY1MmVhZGQ2YTI4M2M4ZDU0MzI2OS4uNDE3ZWI2YWVlZDQ0ZTk1
ODI0YjY0M2EzM2M5ZGI4NjY5ZjU2NjI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwCkBAIC0zNDYxLDcgKzM0NjEsNyBAQCBib29sIFJlbmRlckxheWVyOjpoaXRU
ZXN0KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBIaXRUZXN0TG9jYXRpb24m
CiAgICAgICAgIC8vIFdlIGRpZG4ndCBoaXQgYW55IGxheWVyLiBJZiB3ZSBhcmUgdGhlIHJvb3Qg
bGF5ZXIgYW5kIHRoZSBtb3VzZSBpcyAtLSBvciBqdXN0IHdhcyAtLSBkb3duLCAKICAgICAgICAg
Ly8gcmV0dXJuIG91cnNlbHZlcy4gV2UgZG8gdGhpcyBzbyBtb3VzZSBldmVudHMgY29udGludWUg
Z2V0dGluZyBkZWxpdmVyZWQgYWZ0ZXIgYSBkcmFnIGhhcyAKICAgICAgICAgLy8gZXhpdGVkIHRo
ZSBXZWJWaWV3LCBhbmQgc28gaGl0IHRlc3Rpbmcgb3ZlciBhIHNjcm9sbGJhciBoaXRzIHRoZSBj
b250ZW50IGRvY3VtZW50LgotICAgICAgICBpZiAoKHJlcXVlc3QuYWN0aXZlKCkgfHwgcmVxdWVz
dC5yZWxlYXNlKCkpICYmIGlzUm9vdExheWVyKCkpIHsKKyAgICAgICAgaWYgKCFyZXF1ZXN0LmNo
aWxkRnJhbWVIaXRUZXN0KCkgJiYgKHJlcXVlc3QuYWN0aXZlKCkgfHwgcmVxdWVzdC5yZWxlYXNl
KCkpICYmIGlzUm9vdExheWVyKCkpIHsKICAgICAgICAgICAgIHJlbmRlcmVyKCktPnVwZGF0ZUhp
dFRlc3RSZXN1bHQocmVzdWx0LCB0b1JlbmRlclZpZXcocmVuZGVyZXIoKSktPmZsaXBGb3JXcml0
aW5nTW9kZShyZXN1bHQucG9pbnQoKSkpOwogICAgICAgICAgICAgaW5zaWRlTGF5ZXIgPSB0aGlz
OwogICAgICAgICB9CkBAIC0zNjk3LDcgKzM2OTcsNyBAQCBSZW5kZXJMYXllciogUmVuZGVyTGF5
ZXI6OmhpdFRlc3RMYXllcihSZW5kZXJMYXllciogcm9vdExheWVyLCBSZW5kZXJMYXllciogY29u
dAogICAgIC8vIE5leHQgd2Ugd2FudCB0byBzZWUgaWYgdGhlIG1vdXNlIHBvcyBpcyBpbnNpZGUg
dGhlIGNoaWxkIFJlbmRlck9iamVjdHMgb2YgdGhlIGxheWVyLgogICAgIGlmIChmZ1JlY3QuaW50
ZXJzZWN0cyhoaXRUZXN0TG9jYXRpb24pICYmIGlzU2VsZlBhaW50aW5nTGF5ZXIoKSkgewogICAg
ICAgICAvLyBIaXQgdGVzdCB3aXRoIGEgdGVtcG9yYXJ5IEhpdFRlc3RSZXN1bHQsIGJlY2F1c2Ug
d2Ugb25seSB3YW50IHRvIGNvbW1pdCB0byAncmVzdWx0JyBpZiB3ZSBrbm93IHdlJ3JlIGZyb250
bW9zdC4KLSAgICAgICAgSGl0VGVzdFJlc3VsdCB0ZW1wUmVzdWx0KHJlc3VsdC5oaXRUZXN0TG9j
YXRpb24oKSwgcmVzdWx0LnNoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3koKSk7CisgICAgICAgIEhp
dFRlc3RSZXN1bHQgdGVtcFJlc3VsdChyZXN1bHQuaGl0VGVzdExvY2F0aW9uKCkpOwogICAgICAg
ICBpZiAoaGl0VGVzdENvbnRlbnRzKHJlcXVlc3QsIHRlbXBSZXN1bHQsIGxheWVyQm91bmRzLCBo
aXRUZXN0TG9jYXRpb24sIEhpdFRlc3REZXNjZW5kYW50cykKICAgICAgICAgICAgICYmIGlzSGl0
Q2FuZGlkYXRlKHRoaXMsIGZhbHNlLCB6T2Zmc2V0Rm9yQ29udGVudHNQdHIsIHVuZmxhdHRlbmVk
VHJhbnNmb3JtU3RhdGUuZ2V0KCkpKSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0LmlzUmVjdEJh
c2VkVGVzdCgpKQpAQCAtMzcyNiw3ICszNzI2LDcgQEAgUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVy
OjpoaXRUZXN0TGF5ZXIoUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgUmVuZGVyTGF5ZXIqIGNvbnQK
ICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZUxheWVyOwogCiAgICAgaWYgKGJnUmVjdC5pbnRlcnNl
Y3RzKGhpdFRlc3RMb2NhdGlvbikgJiYgaXNTZWxmUGFpbnRpbmdMYXllcigpKSB7Ci0gICAgICAg
IEhpdFRlc3RSZXN1bHQgdGVtcFJlc3VsdChyZXN1bHQuaGl0VGVzdExvY2F0aW9uKCksIHJlc3Vs
dC5zaGFkb3dDb250ZW50RmlsdGVyUG9saWN5KCkpOworICAgICAgICBIaXRUZXN0UmVzdWx0IHRl
bXBSZXN1bHQocmVzdWx0LmhpdFRlc3RMb2NhdGlvbigpKTsKICAgICAgICAgaWYgKGhpdFRlc3RD
b250ZW50cyhyZXF1ZXN0LCB0ZW1wUmVzdWx0LCBsYXllckJvdW5kcywgaGl0VGVzdExvY2F0aW9u
LCBIaXRUZXN0U2VsZikKICAgICAgICAgICAgICYmIGlzSGl0Q2FuZGlkYXRlKHRoaXMsIGZhbHNl
LCB6T2Zmc2V0Rm9yQ29udGVudHNQdHIsIHVuZmxhdHRlbmVkVHJhbnNmb3JtU3RhdGUuZ2V0KCkp
KSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0LmlzUmVjdEJhc2VkVGVzdCgpKQpAQCAtMzc4Myw3
ICszNzgzLDcgQEAgUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjpoaXRUZXN0TGlzdChWZWN0b3I8
UmVuZGVyTGF5ZXIqPiogbGlzdCwgUmVuZGVyTGF5ZXIqIHIKICAgICBmb3IgKGludCBpID0gbGlz
dC0+c2l6ZSgpIC0gMTsgaSA+PSAwOyAtLWkpIHsKICAgICAgICAgUmVuZGVyTGF5ZXIqIGNoaWxk
TGF5ZXIgPSBsaXN0LT5hdChpKTsKICAgICAgICAgUmVuZGVyTGF5ZXIqIGhpdExheWVyID0gMDsK
LSAgICAgICAgSGl0VGVzdFJlc3VsdCB0ZW1wUmVzdWx0KHJlc3VsdC5oaXRUZXN0TG9jYXRpb24o
KSwgcmVzdWx0LnNoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3koKSk7CisgICAgICAgIEhpdFRlc3RS
ZXN1bHQgdGVtcFJlc3VsdChyZXN1bHQuaGl0VGVzdExvY2F0aW9uKCkpOwogICAgICAgICBpZiAo
Y2hpbGRMYXllci0+aXNQYWdpbmF0ZWQoKSkKICAgICAgICAgICAgIGhpdExheWVyID0gaGl0VGVz
dFBhZ2luYXRlZENoaWxkTGF5ZXIoY2hpbGRMYXllciwgcm9vdExheWVyLCByZXF1ZXN0LCB0ZW1w
UmVzdWx0LCBoaXRUZXN0UmVjdCwgaGl0VGVzdExvY2F0aW9uLCB0cmFuc2Zvcm1TdGF0ZSwgek9m
ZnNldEZvckRlc2NlbmRhbnRzKTsKICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAKaW5kZXggNzU1ODBkNTRjODAzYWEw
ZTYzNmQ0MmM3ZWNjYjJlMjM1MzJhZTZmMS4uMzY5MDExOTgwN2ZiNTBlODFmMzRmODkwM2UyYWU2
ODFjOGQ0ZTE4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11
bHRpQ29sdW1uU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVs
dGlDb2x1bW5TZXQuY3BwCkBAIC0zMTgsNyArMzE4LDcgQEAgYm9vbCBSZW5kZXJNdWx0aUNvbHVt
blNldDo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RS
ZXMKICAgICB9CiAgICAgCiAgICAgdXBkYXRlSGl0VGVzdFJlc3VsdChyZXN1bHQsIGxvY2F0aW9u
SW5Db250YWluZXIucG9pbnQoKSAtIHRvTGF5b3V0U2l6ZShhZGp1c3RlZExvY2F0aW9uKSk7Ci0g
ICAgcmV0dXJuICFyZXN1bHQuYWRkTm9kZVRvUmVjdEJhc2VkVGVzdFJlc3VsdChub2RlKCksIGxv
Y2F0aW9uSW5Db250YWluZXIsIGJvdW5kc1JlY3QpOworICAgIHJldHVybiAhcmVzdWx0LmFkZE5v
ZGVUb1JlY3RCYXNlZFRlc3RSZXN1bHQobm9kZSgpLCByZXF1ZXN0LCBsb2NhdGlvbkluQ29udGFp
bmVyLCBib3VuZHNSZWN0KTsKIH0KIAogdm9pZCBSZW5kZXJNdWx0aUNvbHVtblNldDo6cmVwYWlu
dEZsb3dUaHJlYWRDb250ZW50KGNvbnN0IExheW91dFJlY3QmIHJlcGFpbnRSZWN0LCBib29sIGlt
bWVkaWF0ZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSZWdpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAK
aW5kZXggOTM0ZTBmOWU3ZmZmNDI0YTQ0MWRkZGUyYTBmODhmMThlOTU0NDRlMC4uODBjODQ4YmY0
MzViMGNkZThlNWRjZjkwM2RmMzk5MjRmNTA3YmJiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJlZ2lvbi5jcHAKQEAgLTE1MCw3ICsxNTAsNyBAQCBib29sIFJlbmRlclJlZ2lv
bjo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1
bHQmIHJlcwogICAgICAgICBpZiAobV9mbG93VGhyZWFkICYmIG1fZmxvd1RocmVhZC0+aGl0VGVz
dEZsb3dUaHJlYWRQb3J0aW9uSW5SZWdpb24odGhpcywgZmxvd1RocmVhZFBvcnRpb25SZWN0KCks
IGZsb3dUaHJlYWRQb3J0aW9uT3ZlcmZsb3dSZWN0KCksIHJlcXVlc3QsIHJlc3VsdCwgbG9jYXRp
b25JbkNvbnRhaW5lciwgTGF5b3V0UG9pbnQoYWRqdXN0ZWRMb2NhdGlvbi54KCkgKyBib3JkZXJM
ZWZ0KCkgKyBwYWRkaW5nTGVmdCgpLCBhZGp1c3RlZExvY2F0aW9uLnkoKSArIGJvcmRlclRvcCgp
ICsgcGFkZGluZ1RvcCgpKSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgdXBk
YXRlSGl0VGVzdFJlc3VsdChyZXN1bHQsIGxvY2F0aW9uSW5Db250YWluZXIucG9pbnQoKSAtIHRv
TGF5b3V0U2l6ZShhZGp1c3RlZExvY2F0aW9uKSk7Ci0gICAgICAgIGlmICghcmVzdWx0LmFkZE5v
ZGVUb1JlY3RCYXNlZFRlc3RSZXN1bHQoZ2VuZXJhdGluZ05vZGUoKSwgbG9jYXRpb25JbkNvbnRh
aW5lciwgYm91bmRzUmVjdCkpCisgICAgICAgIGlmICghcmVzdWx0LmFkZE5vZGVUb1JlY3RCYXNl
ZFRlc3RSZXN1bHQoZ2VuZXJhdGluZ05vZGUoKSwgcmVxdWVzdCwgbG9jYXRpb25JbkNvbnRhaW5l
ciwgYm91bmRzUmVjdCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCmluZGV4IGUyZTAxZDViMGVjNjk4MDQ1
YmNhZWYzY2U0Yzc3OTMzNTRiYTI3MTQuLmNkODNlM2Y4ZjAzNjM2YTE0ZTY0NWMxMDJkZjgwODBh
ZTZiMmVhYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcApAQCAt
MTI5Miw3ICsxMjkyLDcgQEAgYm9vbCBSZW5kZXJUYWJsZTo6bm9kZUF0UG9pbnQoY29uc3QgSGl0
VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3UKICAgICBMYXlvdXRSZWN0
IGJvdW5kc1JlY3QoYWRqdXN0ZWRMb2NhdGlvbiwgc2l6ZSgpKTsKICAgICBpZiAodmlzaWJsZVRv
SGl0VGVzdGluZygpICYmIChhY3Rpb24gPT0gSGl0VGVzdEJsb2NrQmFja2dyb3VuZCB8fCBhY3Rp
b24gPT0gSGl0VGVzdENoaWxkQmxvY2tCYWNrZ3JvdW5kKSAmJiBsb2NhdGlvbkluQ29udGFpbmVy
LmludGVyc2VjdHMoYm91bmRzUmVjdCkpIHsKICAgICAgICAgdXBkYXRlSGl0VGVzdFJlc3VsdChy
ZXN1bHQsIGZsaXBGb3JXcml0aW5nTW9kZShsb2NhdGlvbkluQ29udGFpbmVyLnBvaW50KCkgLSB0
b0xheW91dFNpemUoYWRqdXN0ZWRMb2NhdGlvbikpKTsKLSAgICAgICAgaWYgKCFyZXN1bHQuYWRk
Tm9kZVRvUmVjdEJhc2VkVGVzdFJlc3VsdChub2RlKCksIGxvY2F0aW9uSW5Db250YWluZXIsIGJv
dW5kc1JlY3QpKQorICAgICAgICBpZiAoIXJlc3VsdC5hZGROb2RlVG9SZWN0QmFzZWRUZXN0UmVz
dWx0KG5vZGUoKSwgcmVxdWVzdCwgbG9jYXRpb25JbkNvbnRhaW5lciwgYm91bmRzUmVjdCkpCiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCmluZGV4IGM4ZDI2Zjg0MjI5MDhjZjk0YTRhNDI3
Y2I5MzY5YjYxZWI5M2E3MzIuLmY3MTE1ZDkyNjViYjliMWY1MjYxMWI5N2FiZDRmODJhZDdhY2I0
ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9v
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNw
cApAQCAtNDI5LDcgKzQyOSw3IEBAIGJvb2wgUmVuZGVyU1ZHUm9vdDo6bm9kZUF0UG9pbnQoY29u
c3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlCiAgICAgICAgICAg
ICAvLyBGSVhNRTogbm9kZUF0RmxvYXRQb2ludCgpIGRvZXNuJ3QgaGFuZGxlIHJlY3QtYmFzZWQg
aGl0IHRlc3RzIHlldC4KICAgICAgICAgICAgIGlmIChjaGlsZC0+bm9kZUF0RmxvYXRQb2ludChy
ZXF1ZXN0LCByZXN1bHQsIGxvY2FsUG9pbnQsIGhpdFRlc3RBY3Rpb24pKSB7CiAgICAgICAgICAg
ICAgICAgdXBkYXRlSGl0VGVzdFJlc3VsdChyZXN1bHQsIHBvaW50SW5Cb3JkZXJCb3gpOwotICAg
ICAgICAgICAgICAgIGlmICghcmVzdWx0LmFkZE5vZGVUb1JlY3RCYXNlZFRlc3RSZXN1bHQoY2hp
bGQtPm5vZGUoKSwgbG9jYXRpb25JbkNvbnRhaW5lcikpCisgICAgICAgICAgICAgICAgaWYgKCFy
ZXN1bHQuYWRkTm9kZVRvUmVjdEJhc2VkVGVzdFJlc3VsdChjaGlsZC0+bm9kZSgpLCByZXF1ZXN0
LCBsb2NhdGlvbkluQ29udGFpbmVyKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTQ0NCw3ICs0NDQsNyBAQCBib29sIFJlbmRl
clNWR1Jvb3Q6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRU
ZXN0UmVzdWx0JiByZQogICAgICAgICBMYXlvdXRSZWN0IGJvdW5kc1JlY3QoYWNjdW11bGF0ZWRP
ZmZzZXQgKyBsb2NhdGlvbigpLCBzaXplKCkpOwogICAgICAgICBpZiAobG9jYXRpb25JbkNvbnRh
aW5lci5pbnRlcnNlY3RzKGJvdW5kc1JlY3QpKSB7CiAgICAgICAgICAgICB1cGRhdGVIaXRUZXN0
UmVzdWx0KHJlc3VsdCwgcG9pbnRJbkJvcmRlckJveCk7Ci0gICAgICAgICAgICBpZiAoIXJlc3Vs
dC5hZGROb2RlVG9SZWN0QmFzZWRUZXN0UmVzdWx0KG5vZGUoKSwgbG9jYXRpb25JbkNvbnRhaW5l
ciwgYm91bmRzUmVjdCkpCisgICAgICAgICAgICBpZiAoIXJlc3VsdC5hZGROb2RlVG9SZWN0QmFz
ZWRUZXN0UmVzdWx0KG5vZGUoKSwgcmVxdWVzdCwgbG9jYXRpb25JbkNvbnRhaW5lciwgYm91bmRz
UmVjdCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3gu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcApp
bmRleCA1YWNmNDdlOTE0N2ZiN2FjNTFhNGQ0MjlkNzdjNDI2MGU2ZDU2YTAwLi43ODY0ZDRlZThh
MmQwMTA3OTVlMDQwNzA4NjBkNTdiODZkODNkNGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lVGV4dEJveC5jcHAKQEAgLTcxNiw3ICs3MTYsNyBAQCBi
b29sIFNWR0lubGluZVRleHRCb3g6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiBy
ZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JgogICAgICAgICAgICAgRmxvYXRSZWN0IHJlY3QoYm94T3Jp
Z2luLCBzaXplKCkpOwogICAgICAgICAgICAgaWYgKGxvY2F0aW9uSW5Db250YWluZXIuaW50ZXJz
ZWN0cyhyZWN0KSkgewogICAgICAgICAgICAgICAgIHJlbmRlcmVyKCktPnVwZGF0ZUhpdFRlc3RS
ZXN1bHQocmVzdWx0LCBsb2NhdGlvbkluQ29udGFpbmVyLnBvaW50KCkgLSB0b0xheW91dFNpemUo
YWNjdW11bGF0ZWRPZmZzZXQpKTsKLSAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5hZGROb2Rl
VG9SZWN0QmFzZWRUZXN0UmVzdWx0KHJlbmRlcmVyKCktPm5vZGUoKSwgbG9jYXRpb25JbkNvbnRh
aW5lciwgcmVjdCkpCisgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuYWRkTm9kZVRvUmVjdEJh
c2VkVGVzdFJlc3VsdChyZW5kZXJlcigpLT5ub2RlKCksIHJlcXVlc3QsIGxvY2F0aW9uSW5Db250
YWluZXIsIHJlY3QpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBj
MDE0YWRjNzRmZGY1N2FjZGVhYzk3ODBiMDdlMGE3MWYxMmQzMjRkLi5kMDNmMDNjMGJjNTYxOWUy
NDMyZTdkOGQ2NjQ4ZTM4ZTEwZTdlNWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCkBAIC05NjYsMTQgKzk2NiwxNCBAQCB1bnNpZ25lZCBJbnRlcm5hbHM6OnRvdWNoRXZlbnRI
YW5kbGVyQ291bnQoRG9jdW1lbnQqIGRvY3VtZW50LCBFeGNlcHRpb25Db2RlJiBlYwogfQogCiBQ
YXNzUmVmUHRyPE5vZGVMaXN0PiBJbnRlcm5hbHM6Om5vZGVzRnJvbVJlY3QoRG9jdW1lbnQqIGRv
Y3VtZW50LCBpbnQgeCwgaW50IHksIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0
UGFkZGluZywKLSAgICB1bnNpZ25lZCBib3R0b21QYWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGlu
ZywgYm9vbCBpZ25vcmVDbGlwcGluZywgYm9vbCBhbGxvd1NoYWRvd0NvbnRlbnQsIEV4Y2VwdGlv
bkNvZGUmIGVjKSBjb25zdAorICAgIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxl
ZnRQYWRkaW5nLCBib29sIGlnbm9yZUNsaXBwaW5nLCBib29sIGFsbG93U2hhZG93Q29udGVudCwg
Ym9vbCBhbGxvd0NoaWxkRnJhbWVDb250ZW50LCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKIHsK
ICAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+ZnJhbWUoKSB8fCAhZG9jdW1lbnQtPmZy
YW1lKCktPnZpZXcoKSkgewogICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgcmV0dXJuIGRvY3VtZW50LT5ub2Rlc0Zyb21SZWN0
KHgsIHksIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRp
bmcsIGlnbm9yZUNsaXBwaW5nLCBhbGxvd1NoYWRvd0NvbnRlbnQpOworICAgIHJldHVybiBkb2N1
bWVudC0+bm9kZXNGcm9tUmVjdCh4LCB5LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRv
bVBhZGRpbmcsIGxlZnRQYWRkaW5nLCBpZ25vcmVDbGlwcGluZywgYWxsb3dTaGFkb3dDb250ZW50
LCBhbGxvd0NoaWxkRnJhbWVDb250ZW50KTsKIH0KIAogdm9pZCBJbnRlcm5hbHM6OmVtaXRJbnNw
ZWN0b3JEaWRCZWdpbkZyYW1lKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IGI3
M2I3YTgwMzI2N2UwMTI3MjA3MGFkYTBiY2VmOWQzNjBlYmExZmMuLjJjN2M4NjBhODBkMDUxMDdi
Y2ZjMmY1M2E2OWZjNTcwOTI5MmU1MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApA
QCAtMTYwLDcgKzE2MCw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCB0b3VjaEV2ZW50SGFuZGxl
ckNvdW50KERvY3VtZW50KiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgUGFzc1JlZlB0cjxOb2Rl
TGlzdD4gbm9kZXNGcm9tUmVjdChEb2N1bWVudCosIGludCB4LCBpbnQgeSwgdW5zaWduZWQgdG9w
UGFkZGluZywgdW5zaWduZWQgcmlnaHRQYWRkaW5nLAotICAgICAgICB1bnNpZ25lZCBib3R0b21Q
YWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGluZywgYm9vbCBpZ25vcmVDbGlwcGluZywgYm9vbCBh
bGxvd1NoYWRvd0NvbnRlbnQsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKKyAgICAgICAgdW5zaWdu
ZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcsIGJvb2wgaWdub3JlQ2xpcHBp
bmcsIGJvb2wgYWxsb3dTaGFkb3dDb250ZW50LCBib29sIGFsbG93Q2hpbGRGcmFtZUNvbnRlbnQs
IEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKIAogICAgIHZvaWQgZW1pdEluc3BlY3RvckRpZEJlZ2lu
RnJhbWUoKTsKICAgICB2b2lkIGVtaXRJbnNwZWN0b3JEaWRDYW5jZWxGcmFtZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IGFmZGM0YTI0YmI0ODQ0ZTIxNmJjYTkxZDQw
ZjgwMzgwNDNkMWMyY2EuLjcwNDllYzgwZWQwYzNlMGY3MTQwMTg1YWMzMTllODE4OGViYjhjYjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTEzOCw3ICsxMzgsNyBAQCBt
b2R1bGUgd2luZG93IHsKIAogICAgICAgICBOb2RlTGlzdCBub2Rlc0Zyb21SZWN0KGluIERvY3Vt
ZW50IGRvY3VtZW50LCBpbiBsb25nIHgsIGluIGxvbmcgeSwKICAgICAgICAgICAgIGluIHVuc2ln
bmVkIGxvbmcgdG9wUGFkZGluZywgaW4gdW5zaWduZWQgbG9uZyByaWdodFBhZGRpbmcsIGluIHVu
c2lnbmVkIGxvbmcgYm90dG9tUGFkZGluZywgaW4gdW5zaWduZWQgbG9uZyBsZWZ0UGFkZGluZywK
LSAgICAgICAgICAgIGluIGJvb2xlYW4gaWdub3JlQ2xpcHBpbmcsIGluIGJvb2xlYW4gYWxsb3dT
aGFkb3dDb250ZW50KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAgICAgICAgICBpbiBib29s
ZWFuIGlnbm9yZUNsaXBwaW5nLCBpbiBib29sZWFuIGFsbG93U2hhZG93Q29udGVudCwgaW4gYm9v
bGVhbiBhbGxvd0NoaWxkRnJhbWVDb250ZW50KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAKICAg
ICAgICAgdm9pZCBlbWl0SW5zcGVjdG9yRGlkQmVnaW5GcmFtZSgpOwogICAgICAgICB2b2lkIGVt
aXRJbnNwZWN0b3JEaWRDYW5jZWxGcmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
d2luL1dlYktpdDIuZGVmIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCmluZGV4IGY1
MTAyZTY2N2NkNmJhOTAzZjk3YTNlZGY0MTYxMjQ3OTgwNzQzNjIuLjY1MWM5OGZjNzIyYzkzODlm
NWIwODczZjA1M2Y2OTRiN2MzMDYyYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL3dpbi9X
ZWJLaXQyLmRlZgorKysgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKQEAgLTI1OSw3
ICsyNTksNyBAQCBFWFBPUlRTCiAgICAgICAgID8/MUNvbnRleHREZXN0cnVjdGlvbk9ic2VydmVy
QFdlYkNvcmVAQE1BRUBYWgogICAgICAgICA/Y29udGV4dERlc3Ryb3llZEBDb250ZXh0RGVzdHJ1
Y3Rpb25PYnNlcnZlckBXZWJDb3JlQEBVQUVYWFoKICAgICAgICAgPz8wQ29udGV4dERlc3RydWN0
aW9uT2JzZXJ2ZXJAV2ViQ29yZUBAUUFFQFBBVlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRAMUBAWgot
ICAgICAgICA/bm9kZXNGcm9tUmVjdEBEb2N1bWVudEBXZWJDb3JlQEBRQkU/QVY/JFBhc3NSZWZQ
dHJAVk5vZGVMaXN0QFdlYkNvcmVAQEBXVEZAQEhISUlJSV9OMEBaCisgICAgICAgID9ub2Rlc0Zy
b21SZWN0QERvY3VtZW50QFdlYkNvcmVAQFFCRT9BVj8kUGFzc1JlZlB0ckBWTm9kZUxpc3RAV2Vi
Q29yZUBAQFdURkBASEhJSUlJX04wMEBaCiAgICAgICAgID9zZWxlY3Rpb25TdGFydEhhc01hcmtl
ckZvckBFZGl0b3JAV2ViQ29yZUBAUUJFX05XNE1hcmtlclR5cGVARG9jdW1lbnRNYXJrZXJAMkBI
SEBaCiAgICAgICAgID93ZWJraXRXaWxsRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudEBEb2N1bWVu
dEBXZWJDb3JlQEBRQUVYUEFWRWxlbWVudEAyQEBaCiAgICAgICAgID93ZWJraXREaWRFbnRlckZ1
bGxTY3JlZW5Gb3JFbGVtZW50QERvY3VtZW50QFdlYkNvcmVAQFFBRVhQQVZFbGVtZW50QDJAQFoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZiBiL1NvdXJj
ZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgppbmRleCBiYjFhMGQyMzgzMmUwZjg0OWFk
NThiNDA0ZjNhYjIwZDk5NmFhZTdkLi5kM2JlZjQ2ZGIzYTMzOWZhOTdmYjI2ODUwMjdjY2M4YmJm
MzU1MDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYK
KysrIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCkBAIC0yNTMsNyArMjUz
LDcgQEAgRVhQT1JUUwogICAgICAgICA/dXNlclByZWZlcnJlZExhbmd1YWdlc0BXZWJDb3JlQEBZ
QT9BVj8kVmVjdG9yQFZTdHJpbmdAV1RGQEAkMEFAQFdURkBAWFoKICAgICAgICAgP3V0ZjhAU3Ry
aW5nQFdURkBAUUJFP0FWQ1N0cmluZ0AyQF9OQFoKICAgICAgICAgP3ZpZXdARG9jdW1lbnRAV2Vi
Q29yZUBAUUJFUEFWRnJhbWVWaWV3QDJAWFoKLSAgICAgICAgP25vZGVzRnJvbVJlY3RARG9jdW1l
bnRAV2ViQ29yZUBAUUJFP0FWPyRQYXNzUmVmUHRyQFZOb2RlTGlzdEBXZWJDb3JlQEBAV1RGQEBI
SElJSUlfTjBAWgorICAgICAgICA/bm9kZXNGcm9tUmVjdEBEb2N1bWVudEBXZWJDb3JlQEBRQkU/
QVY/JFBhc3NSZWZQdHJAVk5vZGVMaXN0QFdlYkNvcmVAQEBXVEZAQEhISUlJSV9OMDBAWgogICAg
ICAgICA/c2VsZWN0aW9uU3RhcnRIYXNNYXJrZXJGb3JARWRpdG9yQFdlYkNvcmVAQFFCRV9OVzRN
YXJrZXJUeXBlQERvY3VtZW50TWFya2VyQDJASEhAWgogICAgICAgICA/cmVzdHJpY3RTY2FsZUZh
Y3RvclRvSW5pdGlhbFNjYWxlSWZOb3RVc2VyU2NhbGFibGVAV2ViQ29yZUBAWUFYQUFVVmlld3Bv
cnRBdHRyaWJ1dGVzQDFAQFoKICAgICAgICAgP3Jlc3RyaWN0TWluaW11bVNjYWxlRmFjdG9yVG9W
aWV3cG9ydFNpemVAV2ViQ29yZUBAWUFYQUFVVmlld3BvcnRBdHRyaWJ1dGVzQDFAVkludFNpemVA
MUBAWgpkaWZmIC0tZ2l0IGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlciBiL1NvdXJj
ZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKaW5kZXggNmE4ZDFlYzZlOWJjN2VjMjkxMDhhZjgw
NWE4ZjUyNWU1MTFiMTNkMy4uYjYzYjdjMWMzZmJmODIxYzljZWJjYThhNTFmZTJlOTAzYTE0N2Uw
MiAxMDA2NDQKLS0tIGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgorKysgYi9Tb3Vy
Y2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCkBAIC0xNjIsNyArMTYyLDcgQEAgX1pON1dlYkNv
cmUyMlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMxOGlzU2hhZG93RE9NRW5hYmxlZEU7CiBfWk43V2Vi
Q29yZTIyUnVudGltZUVuYWJsZWRGZWF0dXJlczIyaXNDU1NFeGNsdXNpb25zRW5hYmxlZEU7CiBf
Wk43V2ViQ29yZTIyUnVudGltZUVuYWJsZWRGZWF0dXJlczIyaXNEaWFsb2dFbGVtZW50RW5hYmxl
ZEU7CiBfWk43V2ViQ29yZTIyUnVudGltZUVuYWJsZWRGZWF0dXJlczM3aXNBdXRob3JTaGFkb3dE
T01Gb3JBbnlFbGVtZW50RW5hYmxlZEU7Ci1fWk5LN1dlYkNvcmU4RG9jdW1lbnQxM25vZGVzRnJv
bVJlY3RFaWlqampqYmI7CitfWk5LN1dlYkNvcmU4RG9jdW1lbnQxM25vZGVzRnJvbVJlY3RFaWlq
ampqYmJiOwogX1pON1dlYkNvcmU0dG9KU0VQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xv
YmFsT2JqZWN0RVBOU184Tm9kZUxpc3RFOwogX1pOSzdXZWJDb3JlNkVkaXRvcjI2c2VsZWN0aW9u
U3RhcnRIYXNNYXJrZXJGb3JFTlNfMTREb2N1bWVudE1hcmtlcjEwTWFya2VyVHlwZUVpaTsKIF9a
TjdXZWJDb3JlOERvY3VtZW50MzN3ZWJraXREaWRFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnRFUE5T
XzdFbGVtZW50RTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCA2N2NmZTg2OTI0NDg5NzEyYTc5N2JmNmFmZjg3YzkyMjJmMjc4
MTAzLi5hZTkyMGZlNTBmOTQ4YzI5NzgyOWIzY2MwY2RkZDhjMWFkNjIyZWVkIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjggQEAKKzIwMTItMDktMDMgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmpl
bnNlbkBub2tpYS5jb20+CisKKyAgICAgICAgQWxsb3cgY2hpbGQtZnJhbWUgY29udGVudCBpbiBo
aXQtdGVzdHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05NTIwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRvdWNoLUFkanVzdG1lbnQgdGVzdCBieSBLZXZpbiBFbGxpcworCisgICAgICAgIFR3byBuZXcg
dGVzdHMgZm9yIGhpdC10ZXN0aW5nIGNoaWxkIGZyYW1lIGNvbnRlbnQuIE9uZSBmb3IgdGVzdGlu
ZyBpdCBhcyBhbiBvcHRpb24gdG8KKyAgICAgICAgbm9kZXNGcm9tUmVjdCwgYW5kIG9uZSB0ZXN0
aW5nIGl0cyBpbXByb3ZlbWVudCBvbiB0b3VjaCBhZGp1c3RtZW50IG9uIGlmcmFtZSBib3VuZGFy
aWVzLgorCisgICAgICAgICogZmFzdC9kb20vbm9kZXNGcm9tUmVjdC9ub2Rlc0Zyb21SZWN0LWNo
aWxkLWZyYW1lLWNvbnRlbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Rv
bS9ub2Rlc0Zyb21SZWN0L25vZGVzRnJvbVJlY3QtY2hpbGQtZnJhbWUtY29udGVudC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ub2Rlc0Zyb21SZWN0L3Jlc291cmNlcy9jaGlsZC1m
cmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ub2Rlc0Zyb21SZWN0L3Jlc291
cmNlcy9ub2Rlc0Zyb21SZWN0LmpzOgorICAgICAgICAoY2hlY2spOgorICAgICAgICAoY2hlY2tT
aGFkb3dDb250ZW50KToKKyAgICAgICAgKGNoZWNrUmVjdCk6CisgICAgICAgIChub2Rlc0Zyb21S
ZWN0QXNTdHJpbmcpOgorICAgICAgICAqIHRvdWNoYWRqdXN0bWVudC9pZnJhbWUtYm91bmRhcnkt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0b3VjaGFkanVzdG1lbnQvaWZyYW1lLWJv
dW5kYXJ5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRvdWNoYWRqdXN0bWVudC9yZXNvdXJjZXMv
aW5uZXItY29udGVudC1wYWdlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRvdWNoYWRqdXN0bWVu
dC9yZXNvdXJjZXMvaW5uZXItbmF2aWdhdGlvbi1mcmFtZS5odG1sOiBBZGRlZC4KKwogMjAxMi0w
OC0zMSAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBnZXQgcmlkIG9mIGNvbnRleHQgZXhlY3V0aW9uIGlkIGZhbGxiYWNrLgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9tUmVjdC9ub2Rlc0Zyb21S
ZWN0LWNoaWxkLWZyYW1lLWNvbnRlbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vbm9kZXNGcm9tUmVjdC9ub2Rlc0Zyb21SZWN0LWNoaWxkLWZyYW1lLWNvbnRlbnQtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjljMWM5NzAwYzI1OWJkMjI0OTAwM2EzZTgwMzU0N2UxMjRkY2Zm
ZmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2Rlc0Zyb21SZWN0
L25vZGVzRnJvbVJlY3QtY2hpbGQtZnJhbWUtY29udGVudC1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxOCBAQAorCitEb2N1bWVudDo6bm9kZXNGcm9tUmVjdCA6IEFsbG93IGNoaWxkLWZyYW1lIGNv
bnRlbnQgLSBidWcgOTUyMDQKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mg
QWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QKK1BBU1MgQWxsIGNvcnJlY3Qgbm9kZXMg
Zm91bmQgZm9yIHJlY3QKK1BBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QKK1BB
U1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QKK1BBU1MgQWxsIGNvcnJlY3Qgbm9k
ZXMgZm91bmQgZm9yIHJlY3QKK1BBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QK
K1BBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QKK1BBU1MgQWxsIGNvcnJlY3Qg
bm9kZXMgZm91bmQgZm9yIHJlY3QKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2Rlc0Zy
b21SZWN0L25vZGVzRnJvbVJlY3QtY2hpbGQtZnJhbWUtY29udGVudC5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vbm9kZXNGcm9tUmVjdC9ub2Rlc0Zyb21SZWN0LWNoaWxkLWZyYW1lLWNvbnRl
bnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hZGI0MTY3YjE3ODAyZGNlYjllMzg2YzU0ZTMxZTU0Njg1YzUx
ZTk0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9tUmVj
dC9ub2Rlc0Zyb21SZWN0LWNoaWxkLWZyYW1lLWNvbnRlbnQuaHRtbApAQCAtMCwwICsxLDc3IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHRpdGxlPkRvY3VtZW50Ojpu
b2Rlc0Zyb21SZWN0IDogQWxsb3cgY2hpbGQtZnJhbWUgY29udGVudCAtIGJ1ZyA5NTIwNDwvdGl0
bGU+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ub2Rlc0Zyb21SZWN0LmpzIj48
L3NjcmlwdD4KKyAgICA8c3R5bGU+CisgICAgICAgIGJvZHkgeyBtYXJnaW46IDBweDsgfQorICAg
ICAgICAjc2FuZGJveCB7CisgICAgICAgICAgICB3aWR0aDogNDAwcHg7CisgICAgICAgICAgICBo
ZWlnaHQ6IDIwMHB4OworICAgICAgICB9CisgICAgICAgICNzYW5kYm94ICNsYXllciB7CisgICAg
ICAgICAgICBmbG9hdDogcmlnaHQ7CisgICAgICAgIH0KKyAgICAgICAgI3NhbmRib3ggaWZyYW1l
IHsKKyAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOworICAgICAgICAgICAgYm94LXNpemluZzog
Ym9yZGVyLWJveDsKKyAgICAgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgICAgIGhlaWdo
dDogMjAwcHg7CisgICAgICAgICAgICBib3JkZXI6IG5vbmU7CisgICAgICAgIH0KKyAgICAgICAg
LnJvdGF0ZTE4MCB7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTsgfQorICAgICAg
ICAucm90YXRlOTAgeyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsgfQorICAgICAg
ICAjc2FuZGJveCAuYm94IHsKKyAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Cisg
ICAgICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICAgICAgd2lkdGg6IDIwMHB4OworICAg
ICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7CisgICAgICAgIH0KKyAgICA8L3N0eWxl
PgorPC9oZWFkPgorPGJvZHkgaWQ9ImJvZHkiPgorICAgIDxkaXYgaWQ9c2FuZGJveD4KKyAgICAg
ICAgPGRpdiBpZD1sYXllcj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9ImlmcmFtZTEiIHNyYz0i
cmVzb3VyY2VzL2NoaWxkLWZyYW1lLmh0bWwiPjwvaWZyYW1lPgorICAgICAgICA8L2Rpdj4KKyAg
ICAgICAgPGRpdiBpZD1kaXYxIGNsYXNzPWJveD48L2Rpdj4KKyAgICAgICAgPGRpdiBpZD1kaXYy
IGNsYXNzPWJveD48L2Rpdj4KKyAgICA8L2Rpdj4KKworICAgIDxwIGlkPSdkZXNjcmlwdGlvbic+
PC9wPgorICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgIDxzY3JpcHQgdHlwZT0iYXBw
bGljYXRpb24vamF2YXNjcmlwdCI+CisgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQorICAgICAg
ICB7CisgICAgICAgICAgICBkZXNjcmlwdGlvbihkb2N1bWVudC50aXRsZSk7CisKKyAgICAgICAg
ICAgIC8vIFNldCB1cCBzaG9ydGN1dCBhY2Nlc3MgdG8gZWxlbWVudHMKKyAgICAgICAgICAgIHZh
ciBlID0ge307CisgICAgICAgICAgICBbJ3NhbmRib3gnLCAnbGF5ZXInXS5mb3JFYWNoKGZ1bmN0
aW9uKGEpIHsKKyAgICAgICAgICAgICAgICBlW2FdID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
YSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgY2hlY2tSZWN0KDI1LCAyNSwgMTAw
LCAxMDAsICJESVYjZGl2MiwgRElWI2RpdjEsIERJViNzYW5kYm94Iik7CisgICAgICAgICAgICBj
aGVja1JlY3QoMjIwLCAyMCwgNzAsIDcwLCAiRElWI2xlZnQiKTsKKyAgICAgICAgICAgIGNoZWNr
UmVjdCgyNTAsIDIwLCAxMDAsIDcwLCAiRElWI3JpZ2h0LCBESVYjbGVmdCwgSFRNTCIpOworCisg
ICAgICAgICAgICBjaGVja1JlY3QoMTUwLCA1MCwgMTAwLCAxMDAsICJESVYjbGVmdCwgSFRNTCwg
I2RvY3VtZW50LCBJRlJBTUUjaWZyYW1lMSwgRElWI2xheWVyLCBESVYjZGl2MiwgRElWI2RpdjEs
IERJViNzYW5kYm94Iik7CisKKyAgICAgICAgICAgIGUubGF5ZXIuc2V0QXR0cmlidXRlKCdjbGFz
cycsICdyb3RhdGUxODAnKTsKKyAgICAgICAgICAgIGNoZWNrUmVjdCgyMjAsIDIwLCA3MCwgNzAs
ICJESVYjcmlnaHQiKTsKKyAgICAgICAgICAgIGNoZWNrUmVjdCgxNTAsIDUwLCAxMDAsIDEwMCwg
IkRJViNyaWdodCwgSFRNTCwgI2RvY3VtZW50LCBJRlJBTUUjaWZyYW1lMSwgRElWI2xheWVyLCBE
SVYjZGl2MiwgRElWI2RpdjEsIERJViNzYW5kYm94Iik7CisKKyAgICAgICAgICAgIGUubGF5ZXIu
c2V0QXR0cmlidXRlKCdjbGFzcycsICdyb3RhdGU5MCcpOworICAgICAgICAgICAgY2hlY2tSZWN0
KDI1MCwgMjAsIDEwMCwgNzAsICJESVYjbGVmdCIpOworICAgICAgICAgICAgY2hlY2tSZWN0KDE1
MCwgMjAsIDIwMCwgNjAsICJESVYjbGVmdCwgSFRNTCwgI2RvY3VtZW50LCBJRlJBTUUjaWZyYW1l
MSwgRElWI2xheWVyLCBESVYjZGl2MSwgRElWI3NhbmRib3giKTsKKworICAgICAgICAgICAgZS5z
YW5kYm94LmRpc3BsYXkgPSAnbm9uZSc7CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAg
ICAgICAgfQorICAgICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICAgICAgd2luZG93Lm9u
bG9hZCA9IHJ1blRlc3Q7CisgICAgPC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9tUmVjdC9yZXNvdXJjZXMv
Y2hpbGQtZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3QvcmVz
b3VyY2VzL2NoaWxkLWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjA0ZDdmYWFkYmI5ODY2N2JmZWM0
YTQ3MjdjOGRhMjg3MzYzM2U2OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL25vZGVzRnJvbVJlY3QvcmVzb3VyY2VzL2NoaWxkLWZyYW1lLmh0bWwKQEAgLTAsMCArMSwy
NyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlIHR5cGU9InRleHQv
Y3NzIj4KKyAgICBib2R5IHsgbWFyZ2luOiAwcHg7IH0KKyAgICBkaXYgeyAKKyAgICAgICAgYm94
LXNpemluZzogYm9yZGVyLWJveDsKKyAgICAgICAgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7Cisg
ICAgfQorICAgICNsZWZ0IHsKKyAgICAgICAgZmxvYXQ6bGVmdDsKKyAgICAgICAgd2lkdGg6IDkw
cHg7CisgICAgICAgIGhlaWdodDogMTkwcHg7CisgICAgfQorICAgICNyaWdodCB7CisgICAgICAg
IGZsb2F0OnJpZ2h0OworICAgICAgICB3aWR0aDogOTBweDsKKyAgICAgICAgaGVpZ2h0OiAxOTBw
eDsKKyAgICB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgICAgPGRpdiBpZD1sZWZ0Pjwv
ZGl2PgorICAgIDxkaXYgaWQ9cmlnaHQ+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3QvcmVzb3VyY2VzL25vZGVz
RnJvbVJlY3QuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2Rlc0Zyb21SZWN0L3Jlc291cmNl
cy9ub2Rlc0Zyb21SZWN0LmpzCmluZGV4IDJlODNhNzU2N2FhMGE2MTM4NGIzNGIxMzIyODAwOWMy
M2YwMTc3ZTEuLjE0Y2NmNjJkZmE2MTc2ZDA4YmZhNDI5NGNmOTg3NzYzMzlmZTQ2OTQgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3QvcmVzb3VyY2VzL25vZGVz
RnJvbVJlY3QuanMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9tUmVjdC9yZXNv
dXJjZXMvbm9kZXNGcm9tUmVjdC5qcwpAQCAtMSw3ICsxLDggQEAKIC8qCiAgKiBDb250cmlidXRv
cnM6CiAgKiAgICAgKiBBbnRvbmlvIEdvbWVzIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4KLSAqKi8K
KyAqICAgICAqIEFsbGFuIFNhbmRmZWxkIEplbnNlbiA8YWxsYW4uamVuc2VuQG5va2lhLmNvbT4K
KyoqLwogCiBmdW5jdGlvbiBjaGVjayh4LCB5LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJv
dHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nLCBsaXN0LCBkb2MpCiB7CkBAIC0xMSw3ICsxMiw3IEBA
IGZ1bmN0aW9uIGNoZWNrKHgsIHksIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFk
ZGluZywgbGVmdFBhZGRpbmcsIGxpc3QsCiAgIGlmICghZG9jKQogICAgIGRvYyA9IGRvY3VtZW50
OwogCi0gIHZhciBub2RlcyA9IGludGVybmFscy5ub2Rlc0Zyb21SZWN0KGRvYywgeCwgeSwgdG9w
UGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0UGFkZGluZywgdHJ1ZSAv
KiBpZ25vcmVDbGlwcGluZyAqLywgZmFsc2UgLyogYWxsb3cgc2hhZG93IGNvbnRlbnQgKi8pOwor
ICB2YXIgbm9kZXMgPSBpbnRlcm5hbHMubm9kZXNGcm9tUmVjdChkb2MsIHgsIHksIHRvcFBhZGRp
bmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcsIHRydWUgLyogaWdu
b3JlQ2xpcHBpbmcgKi8sIGZhbHNlIC8qIGFsbG93IHNoYWRvdyBjb250ZW50ICovLCBmYWxzZSAv
KiBhbGxvdyBjaGlsZC1mcmFtZSBjb250ZW50ICovKTsKICAgaWYgKCFub2RlcykKICAgICByZXR1
cm47CiAKQEAgLTQ1LDcgKzQ2LDcgQEAgZnVuY3Rpb24gY2hlY2tTaGFkb3dDb250ZW50KHgsIHks
IHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFAKICAgaWYgKCFk
b2MpCiAgICAgZG9jID0gZG9jdW1lbnQ7CiAKLSAgdmFyIG5vZGVzID0gaW50ZXJuYWxzLm5vZGVz
RnJvbVJlY3QoZG9jLCB4LCB5LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRp
bmcsIGxlZnRQYWRkaW5nLCB0cnVlIC8qIGlnbm9yZUNsaXBwaW5nICovLCB0cnVlIC8qIGFsbG93
U2hhZG93Q29udGVudCAqLyk7CisgIHZhciBub2RlcyA9IGludGVybmFscy5ub2Rlc0Zyb21SZWN0
KGRvYywgeCwgeSwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0
UGFkZGluZywgdHJ1ZSAvKiBpZ25vcmVDbGlwcGluZyAqLywgdHJ1ZSAvKiBhbGxvd1NoYWRvd0Nv
bnRlbnQgKi8sIGZhbHNlIC8qIGFsbG93IGNoaWxkLWZyYW1lIGNvbnRlbnQgKi8pOwogICBpZiAo
IW5vZGVzKQogICAgIHJldHVybjsKIApAQCAtNjcsNiArNjgsNjEgQEAgZnVuY3Rpb24gY2hlY2tT
aGFkb3dDb250ZW50KHgsIHksIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGlu
ZywgbGVmdFAKICAgdGVzdFBhc3NlZCgiQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3Qi
KTsKIH0KIAorZnVuY3Rpb24gY2hlY2tSZWN0KGxlZnQsIHRvcCwgd2lkdGgsIGhlaWdodCwgZXhw
ZWN0ZWROb2RlU3RyaW5nLCBkb2MpCit7CisgICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpZiAoaGVpZ2h0IDw9MCB8fCB3aWR0aCA8PSAwKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpZiAoIWRvYykKKyAgICAgICAgZG9jID0gZG9jdW1lbnQ7CisKKyAg
ICB2YXIgdG9wUGFkZGluZyA9IGhlaWdodCAvIDI7CisgICAgdmFyIGxlZnRQYWRkaW5nID0gIHdp
ZHRoIC8gMjsKKyAgICAvLyBGSVhNRTogV2hlbiBub2Rlc0Zyb21SZWN0IGlzIGNoYW5nZWQgdG8g
bm90IGFkZCAxIHRvIHdpZHRoIGFuZCBoZWlnaHQsIHJlbW92ZSB0aGUgY29ycmVjdGlvbiBoZXJl
LgorICAgIHZhciBib3R0b21QYWRkaW5nID0gKGhlaWdodCAtIDEpIC0gdG9wUGFkZGluZzsKKyAg
ICB2YXIgcmlnaHRQYWRkaW5nID0gKHdpZHRoIC0gMSkgLSBsZWZ0UGFkZGluZzsKKworICAgIHZh
ciBub2RlU3RyaW5nID0gbm9kZXNGcm9tUmVjdEFzU3RyaW5nKGRvYywgbGVmdCArIGxlZnRQYWRk
aW5nLCB0b3AgKyB0b3BQYWRkaW5nLCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBh
ZGRpbmcsIGxlZnRQYWRkaW5nKTsKKworICAgIGlmIChub2RlU3RyaW5nID09IGV4cGVjdGVkTm9k
ZVN0cmluZykgeworICAgICAgICB0ZXN0UGFzc2VkKCJBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBm
b3IgcmVjdCIpOworICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RGYWlsZWQoIk5vZGVzRnJvbVJl
Y3Qgc2hvdWxkIGJlIFsiICsgZXhwZWN0ZWROb2RlU3RyaW5nICsgIl0gd2FzIFsiICsgbm9kZVN0
cmluZyArICJdIik7CisgICAgfQorfQorCitmdW5jdGlvbiBub2Rlc0Zyb21SZWN0QXNTdHJpbmco
ZG9jLCB4LCB5LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQ
YWRkaW5nKQoreworICAgIHZhciBub2RlU3RyaW5nID0gIiI7CisgICAgdmFyIG5vZGVzID0gaW50
ZXJuYWxzLm5vZGVzRnJvbVJlY3QoZG9jLCB4LCB5LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcs
IGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nLCB0cnVlIC8qIGlnbm9yZUNsaXBwaW5nICovLCB0
cnVlIC8qIGFsbG93IHNoYWRvdyBjb250ZW50ICovLCB0cnVlIC8qIGFsbG93IGNoaWxkLWZyYW1l
IGNvbnRlbnQgKi8pOworICAgIGlmICghbm9kZXMpCisgICAgICAgIHJldHVybiBub2RlU3RyaW5n
OworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykgeworICAgICAg
ICBpZiAobm9kZXNbaV0ubm9kZVR5cGUgPT0gMSkgeworICAgICAgICAgICAgbm9kZVN0cmluZyAr
PSBub2Rlc1tpXS5ub2RlTmFtZTsKKyAgICAgICAgICAgIGlmIChub2Rlc1tpXS5pZCkKKyAgICAg
ICAgICAgICAgICBub2RlU3RyaW5nICs9ICcjJyArIG5vZGVzW2ldLmlkOworICAgICAgICAgICAg
ZWxzZSBpZiAobm9kZXNbaV0uY2xhc3MpIHsKKyAgICAgICAgICAgICAgICBub2RlU3RyaW5nICs9
ICcuJyArIG5vZGVzW2ldLmNsYXNzOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYg
KG5vZGVzW2ldLm5vZGVUeXBlID09IDMpIHsKKyAgICAgICAgICAgIG5vZGVTdHJpbmcgKz0gIici
ICsgbm9kZXNbaV0uZGF0YSArICInIjsKKyAgICAgICAgfSBlbHNlIGlmIChub2Rlc1tpXS5ub2Rl
VHlwZSA9PSA5KSB7CisgICAgICAgICAgICBub2RlU3RyaW5nICs9ICIjZG9jdW1lbnQiOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAg
aWYgKGkgKyAxIDwgbm9kZXMubGVuZ3RoKSB7CisgICAgICAgICAgICBub2RlU3RyaW5nICs9ICIs
ICI7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIG5vZGVTdHJpbmc7Cit9CisKIGZ1bmN0
aW9uIGdldENlbnRlckZvcihlbGVtZW50KQogewogICB2YXIgcmVjdCA9IGVsZW1lbnQuZ2V0Qm91
bmRpbmdDbGllbnRSZWN0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1l
bnQvaWZyYW1lLWJvdW5kYXJ5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0
bWVudC9pZnJhbWUtYm91bmRhcnktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc2MWQzNjk0YjAz
OWU0ZTFhMmUxOThhMDI5YjFkMmNmZWQ4NzI2YWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy90b3VjaGFkanVzdG1lbnQvaWZyYW1lLWJvdW5kYXJ5LWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDI2IEBACisgCitUZXN0IHRvdWNoLWFkanVzdG1lbnQgYXQgdGhlIGJvdW5kYXJ5IG9mIGFu
IAorCisKK1Rlc3QgZGlyZWN0IHRvdWNoZXMuCitQQVNTIGFkanVzdGVkTm9kZS5pZCBpcyAiY2hl
Y2tib3gtMSIKK1BBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJidXR0b24tMSIKK1BBU1MgYWRqdXN0
ZWROb2RlLmlkIGlzICJjaGVja2JveC0yIgorUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgImJ1dHRv
bi0yIgorUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgImNoZWNrYm94LTMiCitQQVNTIGFkanVzdGVk
Tm9kZS5pZCBpcyAiYnV0dG9uLTMiCitQQVNTIGFkanVzdGVkTm9kZS5pZCBpcyAiY2hlY2tib3gt
NCIKK1BBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJidXR0b24tNCIKK1Rlc3QgaW5kaXJlY3QgdG91
Y2hlcy4KK1BBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJjaGVja2JveC0xIgorUEFTUyBhZGp1c3Rl
ZE5vZGUuaWQgaXMgImJ1dHRvbi0xIgorUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgImNoZWNrYm94
LTIiCitQQVNTIGFkanVzdGVkTm9kZS5pZCBpcyAiYnV0dG9uLTIiCitQQVNTIGFkanVzdGVkTm9k
ZS5pZCBpcyAiY2hlY2tib3gtMyIKK1BBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJidXR0b24tMyIK
K1BBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJjaGVja2JveC00IgorUEFTUyBhZGp1c3RlZE5vZGUu
aWQgaXMgImJ1dHRvbi00IgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9pZnJh
bWUtYm91bmRhcnkuaHRtbCBiL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9pZnJhbWUtYm91
bmRhcnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ODAxZGVjODdhYjA3NjJkZGQzOGQyOGFjYzM3YTliNTli
NzgzYWQ1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L2lm
cmFtZS1ib3VuZGFyeS5odG1sCkBAIC0wLDAgKzEsMTAxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+CisgICAgPHRpdGxlPlRvdWNoIEFkanVzdG1lbnQgOiBUZXN0IHRvdWNoIGFk
anVzdG1lbnQgYXQgYW4gaWZyYW1lIGJvdW5kYXJ5IC0gYnVnIDk0OTM2PC90aXRsZT4KKyAgICA8
c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdG91Y2hhZGp1c3RtZW50LmpzIj48L3Njcmlw
dD4KKyAgICA8c3R5bGU+CisgICAgICAgICNuYXZiYXIgeworICAgICAgICAgICAgYmFja2dyb3Vu
ZDogI2VlZTsKKyAgICAgICAgICAgIGhlaWdodDogMTAwJTsKKyAgICAgICAgICAgIGxlZnQ6IDA7
CisgICAgICAgICAgICBwYWRkaW5nOiAwOworICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRl
OworICAgICAgICAgICAgbWFyZ2luOiAwOworICAgICAgICAgICAgdG9wOiAwOworICAgICAgICAg
ICAgd2lkdGg6IDEwMHB4OworICAgICAgICB9CisKKyAgICAgICAgI2NvbnRlbnQtcGFnZSB7Cisg
ICAgICAgICAgICBoZWlnaHQ6IDEwMCU7CisgICAgICAgICAgICBsZWZ0OiAxMDBweDsKKyAgICAg
ICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgICAgIHJpZ2h0OiAwOworICAgICAg
ICAgICAgdG9wOiAwOworICAgICAgICB9CisKKyAgICAgICAgaWZyYW1lIHsKKyAgICAgICAgICAg
IGJvcmRlcjogbm9uZTsKKyAgICAgICAgICAgIHdpZHRoOiAxMDAlOworICAgICAgICAgICAgaGVp
Z2h0OiAxMDAlOworICAgICAgICAgICAgbWFyZ2luOiAwOworICAgICAgICAgICAgcGFkZGluZzog
MDsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keSBpZD0ibWFpbiIgb25s
b2FkPSJydW5UZXN0cygpIj4KKzxkaXYgaWQ9Im5hdmJhciIgIHN0eWxlPSItd2Via2l0LXRyYW5z
Zm9ybTogdHJhbnNsYXRlWCgwcHgpOyI+CisgICAgPGlmcmFtZSBpZD0ibmF2LWZyYW1lIiBzcmM9
InJlc291cmNlcy9pbm5lci1uYXZpZ2F0aW9uLWZyYW1lLmh0bWwiPjwvaWZyYW1lPgorPC9kaXY+
Cis8ZGl2IGlkPSJjb250ZW50LXBhZ2UiPgorICAgIDxpZnJhbWUgaWQ9ImNvbnRlbnQtZnJhbWUi
IHNyYz0icmVzb3VyY2VzL2lubmVyLWNvbnRlbnQtcGFnZS5odG1sIj48L2lmcmFtZT4KKzwvZGl2
PgorCis8cCBpZD0nZGVzY3JpcHRpb24nPjwvcD4KKzxkaXYgaWQ9J2NvbnNvbGUnPjwvZGl2Pgor
Cis8c2NyaXB0PiAKKyAgICB2YXIgaXRlbUhlaWdodDEgPSAyODsKKyAgICB2YXIgaXRlbUhlaWdo
dDIgPSAzNDsKKyAgICB2YXIgYm9yZGVyT2Zmc2V0ID0gMTAwOworICAgIHZhciBjaGVja2JveE9m
ZnNldCA9IDE4OworICAgIHZhciBsaW5rT2Zmc2V0ID0gLTE1OworICAgIHZhciBjaGVja2JveE9m
ZnNldEluZGlyZWN0ID0gNTsKKyAgICB2YXIgbGlua09mZnNldEluZGlyZWN0ID0gLTU7CisgICAg
dmFyIHRvdWNoUmFkaXVzID0gMzA7CisKKyAgICBmdW5jdGlvbiB0ZXN0Um91bmRUb3VjaCh4LCB5
LCByYWRpdXMpCisgICAgeworICAgICAgICB2YXIgeCA9IHggLSByYWRpdXM7CisgICAgICAgIHZh
ciB5ID0geSAtIHJhZGl1czsKKyAgICAgICAgdmFyIHdpZHRoID0gcmFkaXVzICogMjsKKyAgICAg
ICAgdmFyIGhlaWdodCA9IHJhZGl1cyAqIDI7CisgICAgICAgIHZhciBhZGp1c3RlZE5vZGUgPSBp
bnRlcm5hbHMudG91Y2hOb2RlQWRqdXN0ZWRUb0Jlc3RDbGlja2FibGVOb2RlKHgsIHksIHdpZHRo
LCBoZWlnaHQsIGRvY3VtZW50KTsKKyAgICAgICAgaWYgKGFkanVzdGVkTm9kZS5ub2RlVHlwZSA9
PSAzKSAvLyBURVhUIG5vZGUKKyAgICAgICAgICAgIGFkanVzdGVkTm9kZSA9IGFkanVzdGVkTm9k
ZS5wYXJlbnROb2RlOworICAgICAgICByZXR1cm4gYWRqdXN0ZWROb2RlOworICAgIH0KKyAgICBm
dW5jdGlvbiB0ZXN0RGlyZWN0VG91Y2hlcygpCisgICAgeworICAgICAgICBkZWJ1ZygnVGVzdCBk
aXJlY3QgdG91Y2hlcy4nKTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspIHsK
KyAgICAgICAgICAgIGFkanVzdGVkTm9kZSA9IHRlc3RSb3VuZFRvdWNoKGJvcmRlck9mZnNldCAr
IGNoZWNrYm94T2Zmc2V0LCAoaSArIDAuNSkgKiBpdGVtSGVpZ2h0MSwgdG91Y2hSYWRpdXMpOwor
ICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdhZGp1c3RlZE5vZGUuaWQnLCAnY2hl
Y2tib3gtJyArIChpICsgMSkpOworICAgICAgICAgICAgYWRqdXN0ZWROb2RlID0gdGVzdFJvdW5k
VG91Y2goYm9yZGVyT2Zmc2V0ICsgbGlua09mZnNldCwgKGkgKyAwLjUpICogaXRlbUhlaWdodDIs
IHRvdWNoUmFkaXVzKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnYWRqdXN0
ZWROb2RlLmlkJywgJ2J1dHRvbi0nICsgKGkgKyAxKSk7CisgICAgICAgIH0KKyAgICB9CisgICAg
ZnVuY3Rpb24gdGVzdEluZGlyZWN0VG91Y2hlcygpIHsKKyAgICAgICAgIGRlYnVnKCdUZXN0IGlu
ZGlyZWN0IHRvdWNoZXMuJyk7CisgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKykg
eworICAgICAgICAgICAgYWRqdXN0ZWROb2RlID0gdGVzdFJvdW5kVG91Y2goYm9yZGVyT2Zmc2V0
ICsgY2hlY2tib3hPZmZzZXRJbmRpcmVjdCwgKGkgKyAwLjUpICogaXRlbUhlaWdodDEsIHRvdWNo
UmFkaXVzKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnYWRqdXN0ZWROb2Rl
LmlkJywgJ2NoZWNrYm94LScgKyAoaSArIDEpKTsKKyAgICAgICAgICAgIGFkanVzdGVkTm9kZSA9
IHRlc3RSb3VuZFRvdWNoKGJvcmRlck9mZnNldCArIGxpbmtPZmZzZXRJbmRpcmVjdCwgKGkgKyAw
LjUpICogaXRlbUhlaWdodDIsIHRvdWNoUmFkaXVzKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygnYWRqdXN0ZWROb2RlLmlkJywgJ2J1dHRvbi0nICsgKGkgKyAxKSk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiBydW5UZXN0cygpCisgICAgeworICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIgJiYgd2luZG93LmludGVybmFscyAmJiBpbnRlcm5hbHMudG91
Y2hOb2RlQWRqdXN0ZWRUb0Jlc3RDbGlja2FibGVOb2RlKSB7CisgICAgICAgICAgICBkZXNjcmlw
dGlvbignVGVzdCB0b3VjaC1hZGp1c3RtZW50IGF0IHRoZSBib3VuZGFyeSBvZiBhbiA8aWZyYW1l
Pi4gIEVuc3VyZSB0aGF0IHRvdWNoIGFkanVzdG1lbnQgcHJvcGFnYXRlcyBpbnRvIGNoaWxkcmVu
IG9mIGFuIDxpZnJhbWU+LiAgVGVzdCBleHBlY3RlZCB0byBjb250YWluIGZhaWx1cmVzIHVudGls
IGJ1ZyA5NTIwNCBpcyBmaXhlZC4nKTsKKyAgICAgICAgICAgIHRlc3REaXJlY3RUb3VjaGVzKCk7
CisgICAgICAgICAgICB0ZXN0SW5kaXJlY3RUb3VjaGVzKCk7CisgICAgICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKzwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90
b3VjaGFkanVzdG1lbnQvcmVzb3VyY2VzL2lubmVyLWNvbnRlbnQtcGFnZS5odG1sIGIvTGF5b3V0
VGVzdHMvdG91Y2hhZGp1c3RtZW50L3Jlc291cmNlcy9pbm5lci1jb250ZW50LXBhZ2UuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43MzdiMjE4ODY0M2MyOGZlZmQyOWQ3ZWM4NTA1YmYxOGQwOGE3ZWEyCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3Jlc291cmNlcy9pbm5l
ci1jb250ZW50LXBhZ2UuaHRtbApAQCAtMCwwICsxLDI0IEBACis8IURPQ1RZUEU9Imh0bWwiPgor
PGh0bWw+Cis8aGVhZD4KKyAgICA8c3R5bGU+CisgICAgICAgIGJvZHkgeworICAgICAgICAgICAg
YmFja2dyb3VuZDogd2hpdGU7CisgICAgICAgICAgICBwYWRkaW5nOiAwOworICAgICAgICAgICAg
bWFyZ2luOiAwOworICAgICAgICB9CisKKyAgICAgICAgbGFiZWwgeworICAgICAgICAgICAgZGlz
cGxheTogYmxvY2s7CisgICAgICAgICAgICBsaW5lLWhlaWdodDogMjJweDsKKyAgICAgICAgICAg
IG1hcmdpbjogNXB4IDEwcHg7CisgICAgICAgIH0KKyAgICA8L3N0eWxlPgorPC9oZWFkPgorPGJv
ZHk+Cis8bGFiZWw+PGlucHV0IGlkPSJjaGVja2JveC0xIiB0eXBlPSJjaGVja2JveCI+Q2hlY2ti
b3ggMTwvbGFiZWw+Cis8bGFiZWw+PGlucHV0IGlkPSJjaGVja2JveC0yIiB0eXBlPSJjaGVja2Jv
eCI+Q2hlY2tib3ggMjwvbGFiZWw+Cis8bGFiZWw+PGlucHV0IGlkPSJjaGVja2JveC0zIiB0eXBl
PSJjaGVja2JveCI+Q2hlY2tib3ggMzwvbGFiZWw+Cis8bGFiZWw+PGlucHV0IGlkPSJjaGVja2Jv
eC00IiB0eXBlPSJjaGVja2JveCI+Q2hlY2tib3ggNDwvbGFiZWw+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvcmVzb3VyY2VzL2lubmVy
LW5hdmlnYXRpb24tZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9yZXNv
dXJjZXMvaW5uZXItbmF2aWdhdGlvbi1mcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZhMmM3NTM5NjZi
ZWI5NWZmZTMyOGNmNzg1NTJkMWM2Mjc3ZGFmMjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy90b3VjaGFkanVzdG1lbnQvcmVzb3VyY2VzL2lubmVyLW5hdmlnYXRpb24tZnJhbWUuaHRt
bApAQCAtMCwwICsxLDI1IEBACis8IURPQ1RZUEU9Imh0bWwiPgorPGh0bWw+Cis8aGVhZD4KKyAg
ICA8c3R5bGU+CisgICAgICAgIGJvZHkgeworICAgICAgICAgICAgcGFkZGluZzogMDsKKyAgICAg
ICAgICAgIG1hcmdpbjogMDsKKyAgICAgICAgfQorCisgICAgICAgIGlucHV0W3R5cGU9ImJ1dHRv
biJdIHsKKyAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOworICAgICAgICAgICAgdGV4dC1hbGln
bjogY2VudGVyOworICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDE0cHg7CisgICAgICAgICAgICBt
YXJnaW46IDVweCAxMHB4OworICAgICAgICAgICAgd2lkdGg6IDgwcHg7CisgICAgICAgIH0KKyAg
ICA8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8aW5wdXQgdHlwZT0iYnV0dG9uIiBpZD0iYnV0
dG9uLTEiIHZhbHVlPSJCdXR0b24gMSI+Cis8aW5wdXQgdHlwZT0iYnV0dG9uIiBpZD0iYnV0dG9u
LTIiIHZhbHVlPSJCdXR0b24gMiI+Cis8aW5wdXQgdHlwZT0iYnV0dG9uIiBpZD0iYnV0dG9uLTMi
IHZhbHVlPSJCdXR0b24gMyI+Cis8aW5wdXQgdHlwZT0iYnV0dG9uIiBpZD0iYnV0dG9uLTQiIHZh
bHVlPSJCdXR0b24gNCI+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cg
Yi9DaGFuZ2VMb2cKaW5kZXggMTBhNGMyYzJjNWYyZTdhNjA3YmRkZGE1MjU0ZmJlYTIyOWQwNmZm
Ni4uNGIzYWM5YjQ2MmJiNGY0YjFlZjRmMzMzM2NhYjMxMzliYjlhNTA1MCAxMDA2NDQKLS0tIGEv
Q2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA5LTAzICBB
bGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgorCisgICAgICAg
IEFsbG93IGNoaWxkLWZyYW1lIGNvbnRlbnQgaW4gaGl0LXRlc3RzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUyMDQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgZXhwb3J0ZWQgc3ltYm9scy4K
KworICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXI6CisKIDIwMTItMDgt
MzEgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW1vdmUgRU5B
QkxFX0NTUzNfRkxFWEJPWCBjb21waWxlIHRpbWUgZmxhZwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161932</attachid>
            <date>2012-09-03 08:17:14 -0700</date>
            <delta_ts>2012-09-04 01:43:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95204-20120903171649.patch</filename>
            <type>text/plain</type>
            <size>40163</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NDIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGMwOGJmYmEzYzQyZGJk
YWNhZTUwMDg2ZGQ5OTVjZDcyOTIyYWFkMS4uMWY2YTU1ODQ5NDAzNTQwMGRlNGQwYWQwZjQ3MTQ3
ZTA5ZTYyNTYyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ0IEBACiAyMDEyLTA5LTAzICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgogCisgICAgICAgIEFs
bG93IGNoaWxkLWZyYW1lIGNvbnRlbnQgaW4gaGl0LXRlc3RzLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUyMDQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvcnMgaG93IEV2ZW50SGFuZGxlcjo6
aGl0VGVzdFJlc3VsdEF0UG9pbnQgaGFuZGxlcyBjaGlsZC1mcmFtZSBjb250ZW50LAorICAgICAg
ICBpdCBpcyBub3cgaGFuZGxlZCBieSB0aGUgaGl0IHRlc3QgaXRzZWxmIGNvbnRyb2xsZWQgYnkg
dGhlIEFsbG93Q2hpbGRGcmFtZUNvbnRlbnQKKyAgICAgICAgZmxhZyBpbiBIaXRUZXN0UmVxdWVz
dC4KKworICAgICAgICBUZXN0czogZmFzdC9kb20vbm9kZXNGcm9tUmVjdC9ub2Rlc0Zyb21SZWN0
LWNoaWxkLWZyYW1lLWNvbnRlbnQuaHRtbAorICAgICAgICAgICAgICAgdG91Y2hhZGp1c3RtZW50
L2lmcmFtZS1ib3VuZGFyeS5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAg
ICAgKiBXZWJDb3JlLm9yZGVyOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6bm9kZXNGcm9tUmVjdCk6CisgICAgICAgICogZG9tL0RvY3Vt
ZW50Lmg6CisgICAgICAgIChEb2N1bWVudCk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoaXRUZXN0UmVzdWx0QXRQb2lu
dCk6CisgICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXF1ZXN0Lmg6CisgICAgICAgIChXZWJD
b3JlOjpIaXRUZXN0UmVxdWVzdDo6YWxsb3dDaGlsZEZyYW1lQ29udGVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpIaXRUZXN0UmVxdWVzdDo6Y2hpbGRGcmFtZUhpdFRlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SGl0VGVzdFJlcXVlc3Q6OnRlc3RDaGlsZEZyYW1lU2Nyb2xsQmFycyk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJGcmFtZUJhc2U6Om5vZGVBdFBvaW50KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuaDoKKyAgICAgICAgKFJlbmRlckZyYW1lQmFzZSk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyOjpoaXRUZXN0KToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Om5vZGVzRnJvbVJlY3QpOgorICAgICAgICAq
IHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgIChJbnRlcm5hbHMpOgorICAgICAgICAqIHRl
c3RpbmcvSW50ZXJuYWxzLmlkbDoKKworMjAxMi0wOS0wMyAgQWxsYW4gU2FuZGZlbGQgSmVuc2Vu
ICA8YWxsYW4uamVuc2VuQG5va2lhLmNvbT4KKwogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZp
eCBhZnRlciByMTI3NDIxCiAKICAgICAgICAgKiByZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHA6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKaW5kZXggMzM0OTczYTg1MGFjNDc0N2YyNDQ5NWVkNTcyN2I2ZmQzMzhmMTYxNy4u
NTMzOTU1M2RlYjgwZWEwMjIwZWZmNGViZTFjOWZjOGJkZTdhNjE1MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE1IEBACisyMDEyLTA5LTAzICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5q
ZW5zZW5Abm9raWEuY29tPgorCisgICAgICAgIEFsbG93IGNoaWxkLWZyYW1lIGNvbnRlbnQgaW4g
aGl0LXRlc3RzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTUyMDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVcGRhdGUgc3ltYm9scyBmb3IgdGhlIFdpbmRvd3MgYnVpbGQtc3lzdGVtLgorCisgICAgICAg
ICogd2luL1dlYktpdDIuZGVmOgorICAgICAgICAqIHdpbi9XZWJLaXQyQ0ZMaXRlLmRlZjoKKwog
MjAxMi0wOS0wMyAgRXVubWkgTGVlICA8ZXVubWkxNS5sZWVAc2Ftc3VuZy5jb20+CiAKICAgICAg
ICAgW0VGTF1bV0syXSBBZGQgZXdrX3NldHRpbmdzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBi
NTc3ZTZmNDllYTQ5MjViZjJiODM2ZWJkZDM1OTRhYzU3OTQ2MmMyLi5iYWUzM2Y3ZGE5NTJmZWI1
OTIxZDYxYjhlYTQ2ZjBjYzAyZTk5ZGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMTM1Myw3
ICsxMzUzLDcgQEAgX19aTks3V2ViQ29yZTdSdW5Mb29wOVRpbWVyQmFzZThpc0FjdGl2ZUV2CiBf
X1pOSzdXZWJDb3JlOERvY3VtZW50MTByZW5kZXJWaWV3RXYKIF9fWk5LN1dlYkNvcmU4RG9jdW1l
bnQxMWNvbXBsZXRlVVJMRVJLTjNXVEY2U3RyaW5nRQogX19aTks3V2ViQ29yZThEb2N1bWVudDEz
YXhPYmplY3RDYWNoZUV2Ci1fX1pOSzdXZWJDb3JlOERvY3VtZW50MTNub2Rlc0Zyb21SZWN0RWlp
ampqamJiCitfX1pOSzdXZWJDb3JlOERvY3VtZW50MTNub2Rlc0Zyb21SZWN0RWlpampqamJiYgog
X19aTks3V2ViQ29yZThEb2N1bWVudDE0Z2V0RWxlbWVudEJ5SWRFUktOM1dURjEyQXRvbWljU3Ry
aW5nRQogX19aTks3V2ViQ29yZThEb2N1bWVudDMxZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNv
ZGluZ0VSS04zV1RGNlN0cmluZ0UKIF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQ0Ym9keUV2CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5vcmRlcgppbmRleCAwYjJiMTc1ODNjYjcwNjA3OWI3MzIyODdkMjhmZjI0MmNiMzVkM2Zj
Li4zNWFiZmU2MzViOTNkYTQ0YjQ3MjVhNTRmYjIyM2QxODE2NzM4YzFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
b3JkZXIKQEAgLTIyNzg1LDcgKzIyNzg1LDcgQEAgX19aTks3V2ViQ29yZTEyTm9kZUl0ZXJhdG9y
MjB1cGRhdGVGb3JOb2RlUmVtb3ZhbEVQTlNfNE5vZGVFUk5TMF8xMU5vZGVQb2ludGVyRQogX19a
TjdXZWJDb3JlMjdqc05vZGVJdGVyYXRvclJlZmVyZW5jZU5vZGVFUE4zSlNDOUV4ZWNTdGF0ZUVO
UzBfN0pTVmFsdWVFUktOUzBfMTBJZGVudGlmaWVyRQogX19aTks3V2ViQ29yZTROb2RlMjB0cmF2
ZXJzZVByZXZpb3VzTm9kZUVQS1MwXwogX19aTjdXZWJDb3JlMzdqc05vZGVJdGVyYXRvclByb3Rv
dHlwZUZ1bmN0aW9uRGV0YWNoRVBOM0pTQzlFeGVjU3RhdGVFCi1fX1pOSzdXZWJDb3JlOERvY3Vt
ZW50MTNub2Rlc0Zyb21SZWN0RWlpampqamIKK19fWk5LN1dlYkNvcmU4RG9jdW1lbnQxM25vZGVz
RnJvbVJlY3RFaWlqampqYmJiCiBfX1pOSzdXZWJDb3JlOERvY3VtZW50MTdoYW5kbGVaZXJvUGFk
ZGluZ0VSS05TXzE0SGl0VGVzdFJlcXVlc3RFUk5TXzEzSGl0VGVzdFJlc3VsdEUKIF9fWk4zV1RG
MjFMaXN0SGFzaFNldFRyYW5zbGF0b3JJTlNfNlJlZlB0cklON1dlYkNvcmU0Tm9kZUVFRUxtMjU2
RU5TXzdQdHJIYXNoSVM0X0VFRTl0cmFuc2xhdGVFUlBOU18xNUxpc3RIYXNoU2V0Tm9kZUlTNF9M
bTI1NkVFRVJLUzRfUE5TXzI0TGlzdEhhc2hTZXROb2RlQWxsb2NhdG9ySVM0X0xtMjU2RUVFCiBf
X1pON1dlYkNvcmUyMVN0YXRpY0hhc2hTZXROb2RlTGlzdEMxRVJOM1dURjExTGlzdEhhc2hTZXRJ
TlMxXzZSZWZQdHJJTlNfNE5vZGVFRUVMbTI1NkVOUzFfN1B0ckhhc2hJUzVfRUVFRQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKaW5kZXggMTNkMGFlMjA5ODY1MzgwYTQ3NTJkYTRhMWU1MGRjY2RhNjIx
OGNmMC4uOTMyNmZmNDI0MzE0ZDNlM2Y4Y2ZhOTQ1OTlhZGE4YzlhNzFlOTkxYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCkBAIC0xMzg0LDcgKzEzODQsNyBAQCBTdHJpbmcgRG9jdW1lbnQ6OnN1
Z2dlc3RlZE1JTUVUeXBlKCkgY29uc3QKIC8vICogbWFraW5nIGl0IHJlY2VpdmUgYSByZWN0IGFz
IHBhcmFtZXRlciwgaS5lLiBub2Rlc0Zyb21SZWN0KHgsIHksIHcsIGgpOwogLy8gKiBtYWtpbmcg
aXQgcmVjZWl2ZSB0aGUgZXhwYWRpbmcgc2l6ZSBvZiBlYWNoIGRpcmVjdGlvbiBzZXBhcmF0ZWx5
LAogLy8gICBpLmUuIG5vZGVzRnJvbVJlY3QoeCwgeSwgdG9wU2l6ZSwgcmlnaHRTaXplLCBib3R0
b21TaXplLCBsZWZ0U2l6ZSk7Ci1QYXNzUmVmUHRyPE5vZGVMaXN0PiBEb2N1bWVudDo6bm9kZXNG
cm9tUmVjdChpbnQgY2VudGVyWCwgaW50IGNlbnRlclksIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVu
c2lnbmVkIHJpZ2h0UGFkZGluZywgdW5zaWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbGVm
dFBhZGRpbmcsIGJvb2wgaWdub3JlQ2xpcHBpbmcsIGJvb2wgYWxsb3dTaGFkb3dDb250ZW50KSBj
b25zdAorUGFzc1JlZlB0cjxOb2RlTGlzdD4gRG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QoaW50IGNl
bnRlclgsIGludCBjZW50ZXJZLCB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBh
ZGRpbmcsIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nLCBib29s
IGlnbm9yZUNsaXBwaW5nLCBib29sIGFsbG93U2hhZG93Q29udGVudCwgYm9vbCBhbGxvd0NoaWxk
RnJhbWVDb250ZW50KSBjb25zdAogewogICAgIC8vIEZJWE1FOiBTaGFyZSBjb2RlIGJldHdlZW4g
dGhpcywgZWxlbWVudEZyb21Qb2ludCBhbmQgY2FyZXRSYW5nZUZyb21Qb2ludC4KICAgICBpZiAo
IXJlbmRlcmVyKCkpCkBAIC0xNDA4LDYgKzE0MDgsOCBAQCBQYXNzUmVmUHRyPE5vZGVMaXN0PiBE
b2N1bWVudDo6bm9kZXNGcm9tUmVjdChpbnQgY2VudGVyWCwgaW50IGNlbnRlclksIHVuc2lnbmVk
CiAgICAgICAgIHJldHVybiAwOwogICAgIGlmIChhbGxvd1NoYWRvd0NvbnRlbnQpCiAgICAgICAg
IHR5cGUgfD0gSGl0VGVzdFJlcXVlc3Q6OkFsbG93U2hhZG93Q29udGVudDsKKyAgICBpZiAoYWxs
b3dDaGlsZEZyYW1lQ29udGVudCkKKyAgICAgICAgdHlwZSB8PSBIaXRUZXN0UmVxdWVzdDo6QWxs
b3dDaGlsZEZyYW1lQ29udGVudDsKIAogICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QodHlwZSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggYjY1NWRjZTNhZDgzNDAyYTZiOWFmNzZlYzhlNTdj
NWY1MWIzNjk2YS4uYWM3YWU5NTFhYTgzMzU1NTMwYWY2NDQ3YTEwOTA0NGFmNzFkOGIxYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgKQEAgLTM3NSw4ICszNzUsOSBAQCBwdWJsaWM6CiAgICAgICogQHBh
cmFtIGlnbm9yZUNsaXBwaW5nIHdoZXRoZXIgb3Igbm90IHRvIGlnbm9yZSB0aGUgcm9vdCBzY3Jv
bGwgZnJhbWUgd2hlbiByZXRyaWV2aW5nIHRoZSBlbGVtZW50LgogICAgICAqICAgICAgICBJZiBm
YWxzZSwgdGhpcyBtZXRob2QgcmV0dXJucyBudWxsIGZvciBjb29yZGluYXRlcyBvdXRzaWRlIG9m
IHRoZSB2aWV3cG9ydC4KICAgICAgKi8KLSAgICBQYXNzUmVmUHRyPE5vZGVMaXN0PiBub2Rlc0Zy
b21SZWN0KGludCBjZW50ZXJYLCBpbnQgY2VudGVyWSwgdW5zaWduZWQgdG9wUGFkZGluZywgdW5z
aWduZWQgcmlnaHRQYWRkaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcsIGJvb2wgaWdu
b3JlQ2xpcHBpbmcsIGJvb2wgYWxsb3dTaGFkb3dDb250ZW50KSBjb25zdDsKKyAgICBQYXNzUmVm
UHRyPE5vZGVMaXN0PiBub2Rlc0Zyb21SZWN0KGludCBjZW50ZXJYLCBpbnQgY2VudGVyWSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHRvcFBhZGRpbmcs
IHVuc2lnbmVkIHJpZ2h0UGFkZGluZywgdW5zaWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQg
bGVmdFBhZGRpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
IGlnbm9yZUNsaXBwaW5nLCBib29sIGFsbG93U2hhZG93Q29udGVudCwgYm9vbCBhbGxvd0NoaWxk
RnJhbWVDb250ZW50ID0gZmFsc2UpIGNvbnN0OwogICAgIEVsZW1lbnQqIGVsZW1lbnRGcm9tUG9p
bnQoaW50IHgsIGludCB5KSBjb25zdDsKICAgICBQYXNzUmVmUHRyPFJhbmdlPiBjYXJldFJhbmdl
RnJvbVBvaW50KGludCB4LCBpbnQgeSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNw
cAppbmRleCBkZGRiMWUwYzE4NTljYWRhMmRjOWFlODZiZDA3MWViMmViMDlkZWU2Li4wMDFmZDZk
OWU5ZTExNjI5NWQyMGM1MDkyMzAxOTI3YTA1ZDdkZjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwCkBAIC0xMDQ5LDMzICsxMDQ5LDEzIEBAIEhpdFRlc3RSZXN1bHQgRXZlbnRI
YW5kbGVyOjpoaXRUZXN0UmVzdWx0QXRQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQsIGJv
b2wKICAgICAgICAgaGl0VHlwZSB8PSBIaXRUZXN0UmVxdWVzdDo6SWdub3JlQ2xpcHBpbmc7CiAg
ICAgaWYgKGFsbG93U2hhZG93Q29udGVudCkKICAgICAgICAgaGl0VHlwZSB8PSBIaXRUZXN0UmVx
dWVzdDo6QWxsb3dTaGFkb3dDb250ZW50OworICAgIGlmICh0ZXN0U2Nyb2xsYmFycyA9PSBTaG91
bGRIaXRUZXN0U2Nyb2xsYmFycykKKyAgICAgICAgaGl0VHlwZSB8PSBIaXRUZXN0UmVxdWVzdDo6
VGVzdENoaWxkRnJhbWVTY3JvbGxCYXJzOworICAgIC8vIFdlIGFsd2F5cyBuZWVkIHRvIGhhbmRs
ZSBjaGlsZCBmcmFtZSBjb250ZW50LgorICAgIGhpdFR5cGUgfD0gSGl0VGVzdFJlcXVlc3Q6OkFs
bG93Q2hpbGRGcmFtZUNvbnRlbnQ7CisKICAgICBtX2ZyYW1lLT5jb250ZW50UmVuZGVyZXIoKS0+
aGl0VGVzdChIaXRUZXN0UmVxdWVzdChoaXRUeXBlKSwgcmVzdWx0KTsKIAotICAgIHdoaWxlICh0
cnVlKSB7Ci0gICAgICAgIE5vZGUqIG4gPSByZXN1bHQuaW5uZXJOb2RlKCk7Ci0gICAgICAgIGlm
ICghcmVzdWx0LmlzT3ZlcldpZGdldCgpIHx8ICFuIHx8ICFuLT5yZW5kZXJlcigpIHx8ICFuLT5y
ZW5kZXJlcigpLT5pc1dpZGdldCgpKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIFJlbmRl
cldpZGdldCogcmVuZGVyV2lkZ2V0ID0gdG9SZW5kZXJXaWRnZXQobi0+cmVuZGVyZXIoKSk7Ci0g
ICAgICAgIFdpZGdldCogd2lkZ2V0ID0gcmVuZGVyV2lkZ2V0LT53aWRnZXQoKTsKLSAgICAgICAg
aWYgKCF3aWRnZXQgfHwgIXdpZGdldC0+aXNGcmFtZVZpZXcoKSkKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBGcmFtZSogZnJhbWUgPSBzdGF0aWNfY2FzdDxIVE1MRnJhbWVFbGVtZW50QmFz
ZSo+KG4pLT5jb250ZW50RnJhbWUoKTsKLSAgICAgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmNv
bnRlbnRSZW5kZXJlcigpKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIEZyYW1lVmlldyog
dmlldyA9IHN0YXRpY19jYXN0PEZyYW1lVmlldyo+KHdpZGdldCk7Ci0gICAgICAgIExheW91dFBv
aW50IHdpZGdldFBvaW50KHJlc3VsdC5sb2NhbFBvaW50KCkueCgpICsgdmlldy0+c2Nyb2xsWCgp
IC0gcmVuZGVyV2lkZ2V0LT5ib3JkZXJMZWZ0KCkgLSByZW5kZXJXaWRnZXQtPnBhZGRpbmdMZWZ0
KCksIAotICAgICAgICAgICAgcmVzdWx0LmxvY2FsUG9pbnQoKS55KCkgKyB2aWV3LT5zY3JvbGxZ
KCkgLSByZW5kZXJXaWRnZXQtPmJvcmRlclRvcCgpIC0gcmVuZGVyV2lkZ2V0LT5wYWRkaW5nVG9w
KCkpOwotICAgICAgICBIaXRUZXN0UmVzdWx0IHdpZGdldEhpdFRlc3RSZXN1bHQod2lkZ2V0UG9p
bnQsIHBhZGRpbmcuaGVpZ2h0KCksIHBhZGRpbmcud2lkdGgoKSwgcGFkZGluZy5oZWlnaHQoKSwg
cGFkZGluZy53aWR0aCgpKTsKLSAgICAgICAgZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpLT5oaXRU
ZXN0KEhpdFRlc3RSZXF1ZXN0KGhpdFR5cGUpLCB3aWRnZXRIaXRUZXN0UmVzdWx0KTsKLSAgICAg
ICAgcmVzdWx0ID0gd2lkZ2V0SGl0VGVzdFJlc3VsdDsKLQotICAgICAgICBpZiAodGVzdFNjcm9s
bGJhcnMgPT0gU2hvdWxkSGl0VGVzdFNjcm9sbGJhcnMpIHsKLSAgICAgICAgICAgIFNjcm9sbGJh
ciogZXZlbnRTY3JvbGxiYXIgPSB2aWV3LT5zY3JvbGxiYXJBdFBvaW50KHJvdW5kZWRJbnRQb2lu
dChwb2ludCkpOwotICAgICAgICAgICAgaWYgKGV2ZW50U2Nyb2xsYmFyKQotICAgICAgICAgICAg
ICAgIHJlc3VsdC5zZXRTY3JvbGxiYXIoZXZlbnRTY3JvbGxiYXIpOwotICAgICAgICB9Ci0gICAg
fQotICAgIAogICAgIC8vIElmIG91ciBIaXRUZXN0UmVzdWx0IGlzIG5vdCB2aXNpYmxlLCB0aGVu
IHdlIHN0YXJ0ZWQgaGl0IHRlc3RpbmcgdG9vIGZhciBkb3duIHRoZSBmcmFtZSBjaGFpbi4gCiAg
ICAgLy8gQW5vdGhlciBoaXQgdGVzdCBhdCB0aGUgbWFpbiBmcmFtZSBsZXZlbCBzaG91bGQgZ2V0
IHVzIHRoZSBjb3JyZWN0IHZpc2libGUgcmVzdWx0LgogICAgIEZyYW1lKiByZXN1bHRGcmFtZSA9
IHJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKSA/IHJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUo
KS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSA6IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSGl0VGVzdFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRU
ZXN0UmVxdWVzdC5oCmluZGV4IGQ5MzdjMjUwNDY5Mzk2Yjc0Yjc0NGUyZDIwMDM2NGE5ZDdiMDQx
NzAuLmM0NjRkNTlkNzE0Y2U5YWE4Mzg3ZWU5Yjk4YzNkNTdhY2QxMzRkZWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVxdWVzdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVxdWVzdC5oCkBAIC0zNSw3ICszNSw5IEBAIHB1Ymxp
YzoKICAgICAgICAgSWdub3JlQ2xpcHBpbmcgPSAxIDw8IDUsCiAgICAgICAgIFNWR0NsaXBDb250
ZW50ID0gMSA8PCA2LAogICAgICAgICBUb3VjaEV2ZW50ID0gMSA8PCA3LAotICAgICAgICBBbGxv
d1NoYWRvd0NvbnRlbnQgPSAxIDw8IDgKKyAgICAgICAgQWxsb3dTaGFkb3dDb250ZW50ID0gMSA8
PCA4LAorICAgICAgICBBbGxvd0NoaWxkRnJhbWVDb250ZW50ID0gMSA8PCA5LAorICAgICAgICBU
ZXN0Q2hpbGRGcmFtZVNjcm9sbEJhcnMgPSAxIDw8IDEwCiAgICAgfTsKIAogICAgIHR5cGVkZWYg
dW5zaWduZWQgSGl0VGVzdFJlcXVlc3RUeXBlOwpAQCAtNTQsNiArNTYsOCBAQCBwdWJsaWM6CiAg
ICAgYm9vbCB0b3VjaEV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0VHlwZSAmIFRvdWNo
RXZlbnQ7IH0KICAgICBib29sIG1vdXNlRXZlbnQoKSBjb25zdCB7IHJldHVybiAhdG91Y2hFdmVu
dCgpOyB9CiAgICAgYm9vbCBhbGxvd3NTaGFkb3dDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9y
ZXF1ZXN0VHlwZSAmIEFsbG93U2hhZG93Q29udGVudDsgfQorICAgIGJvb2wgYWxsb3dzQ2hpbGRG
cmFtZUNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RUeXBlICYgQWxsb3dDaGlsZEZy
YW1lQ29udGVudDsgfQorICAgIGJvb2wgc2hvdWxkVGVzdENoaWxkRnJhbWVTY3JvbGxCYXJzKCkg
Y29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0VHlwZSAmIFRlc3RDaGlsZEZyYW1lU2Nyb2xsQmFyczsg
fQogCiAgICAgLy8gQ29udmVuaWVuY2UgZnVuY3Rpb25zCiAgICAgYm9vbCB0b3VjaE1vdmUoKSBj
b25zdCB7IHJldHVybiBtb3ZlKCkgJiYgdG91Y2hFdmVudCgpOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKaW5kZXggY2MzOTA1NjhjZTAyOTg2ZDIwYmJiMWNm
ZmMxMDEzYmUwOWVmM2NhMy4uODA2M2M4MTJlYTE2ZWZjZmMxYTVlYTRiZWExMTc0ZmMwMjhhODNj
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcApAQCAtMTA0
LDcgKzEwNCw3IEBAIEhpdFRlc3RMb2NhdGlvbjo6SGl0VGVzdExvY2F0aW9uKGNvbnN0IEhpdFRl
c3RMb2NhdGlvbiYgb3RoZXIsIGNvbnN0IExheW91dFNpemUmCiAgICAgLCBtX2JvdW5kaW5nQm94
KG90aGVyLm1fYm91bmRpbmdCb3gpCiAgICAgLCBtX3RyYW5zZm9ybWVkUG9pbnQob3RoZXIubV90
cmFuc2Zvcm1lZFBvaW50KQogICAgICwgbV90cmFuc2Zvcm1lZFJlY3Qob3RoZXIubV90cmFuc2Zv
cm1lZFJlY3QpCi0gICAgLCBtX3JlZ2lvbihyZWdpb24pCisgICAgLCBtX3JlZ2lvbihyZWdpb24g
PyByZWdpb24gOiBvdGhlci5tX3JlZ2lvbikKICAgICAsIG1faXNSZWN0QmFzZWQob3RoZXIubV9p
c1JlY3RCYXNlZCkKICAgICAsIG1faXNSZWN0aWxpbmVhcihvdGhlci5tX2lzUmVjdGlsaW5lYXIp
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaAppbmRleCA5MTI5ZWVk
NDQxMWEwMDA1MDMxMDlmNjE0M2IxZGI1M2RmMmYyMDBjLi5iYWM5NmEyYjFmOTJhNjU1NThjZmVi
MzcxYjBhMmEyZjdiYTUzMzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SGl0VGVzdFJlc3VsdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVz
dWx0LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogICAgIC8vIFBhc3Mgbm9uLXplcm8gcGFk
ZGluZyB2YWx1ZXMgdG8gcGVyZm9ybSBhIHJlY3QtYmFzZWQgaGl0IHRlc3QuCiAgICAgSGl0VGVz
dExvY2F0aW9uKGNvbnN0IExheW91dFBvaW50JiBjZW50ZXJQb2ludCwgdW5zaWduZWQgdG9wUGFk
ZGluZywgdW5zaWduZWQgcmlnaHRQYWRkaW5nLCB1bnNpZ25lZCBib3R0b21QYWRkaW5nLCB1bnNp
Z25lZCBsZWZ0UGFkZGluZyk7CiAgICAgLy8gTWFrZSBhIGNvcHkgdGhlIEhpdFRlc3RMb2NhdGlv
biBpbiBhIG5ldyByZWdpb24gYnkgYXBwbHlpbmcgZ2l2ZW4gb2Zmc2V0IHRvIGludGVybmFsIHBv
aW50IGFuZCBhcmVhLgotICAgIEhpdFRlc3RMb2NhdGlvbihjb25zdCBIaXRUZXN0TG9jYXRpb24m
LCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXQsIFJlbmRlclJlZ2lvbiopOworICAgIEhpdFRlc3RM
b2NhdGlvbihjb25zdCBIaXRUZXN0TG9jYXRpb24mLCBjb25zdCBMYXlvdXRTaXplJiBvZmZzZXQs
IFJlbmRlclJlZ2lvbiogPSAwKTsKICAgICBIaXRUZXN0TG9jYXRpb24oY29uc3QgSGl0VGVzdExv
Y2F0aW9uJik7CiAgICAgfkhpdFRlc3RMb2NhdGlvbigpOwogICAgIEhpdFRlc3RMb2NhdGlvbiYg
b3BlcmF0b3I9KGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmNwcAppbmRleCBhYTgyODcwZDRlZmE4YWRiYzgxOTZmZGQ2
YTUwNmY1OThjYjA3NTM3Li4wNWZkNGUwMGNmN2UxYjA1OWQyMWQxODA1NTFjYWMxMTI0ODIxZjE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmNwcApAQCAt
MjksNiArMjksOCBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3Lmgi
CiAjaW5jbHVkZSAiSFRNTEZyYW1lRWxlbWVudEJhc2UuaCIKKyNpbmNsdWRlICJIaXRUZXN0UmVz
dWx0LmgiCisjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3Lmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTEwNCw0ICsxMDYsMzAgQEAgdm9pZCBSZW5kZXJG
cmFtZUJhc2U6OmxheW91dFdpdGhGbGF0dGVuaW5nKGJvb2wgaGFzRml4ZWRXaWR0aCwgYm9vbCBo
YXNGaXhlZEhlaWcKICAgICBzZXROZWVkc0xheW91dChmYWxzZSk7CiB9CiAKK2Jvb2wgUmVuZGVy
RnJhbWVCYXNlOjpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0
VGVzdFJlc3VsdCYgcmVzdWx0LCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250
YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlv
biBhY3Rpb24pCit7CisgICAgaWYgKHJlcXVlc3QuYWxsb3dzQ2hpbGRGcmFtZUNvbnRlbnQoKSkg
eworICAgICAgICBGcmFtZVZpZXcqIGNoaWxkRnJhbWVWaWV3ID0gc3RhdGljX2Nhc3Q8RnJhbWVW
aWV3Kj4od2lkZ2V0KCkpOworICAgICAgICBSZW5kZXJWaWV3KiBjaGlsZFJvb3QgPSBjaGlsZEZy
YW1lVmlldyA/IHN0YXRpY19jYXN0PFJlbmRlclZpZXcqPihjaGlsZEZyYW1lVmlldy0+ZnJhbWUo
KS0+Y29udGVudFJlbmRlcmVyKCkpIDogMDsKKyAgICAgICAgaWYgKGNoaWxkUm9vdCkgeworICAg
ICAgICAgICAgSGl0VGVzdExvY2F0aW9uIG5ld0hpdFRlc3RMb2NhdGlvbihsb2NhdGlvbkluQ29u
dGFpbmVyLCAtbG9jYXRpb24oKSAtIGFjY3VtdWxhdGVkT2Zmc2V0KTsKKworICAgICAgICAgICAg
Ym9vbCBpc0luc2lkZUNoaWxkRnJhbWUgPSBjaGlsZFJvb3QtPmxheWVyKCktPmhpdFRlc3QocmVx
dWVzdCwgbmV3SGl0VGVzdExvY2F0aW9uLCByZXN1bHQpOworICAgICAgICAgICAgaWYgKGlzSW5z
aWRlQ2hpbGRGcmFtZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAg
ICAgaWYgKHJlcXVlc3Quc2hvdWxkVGVzdENoaWxkRnJhbWVTY3JvbGxCYXJzKCkpIHsKKyAgICAg
ICAgICAgICAgICAvLyBTY3JvbGxWaWV3IHNjcm9sbGJhcnMgYXJlIG5vdCB0aGUgc2FtZSBhcyBS
ZW5kZXJMYXllciBzY3JvbGxiYXJzIHRlc3RlZCBieSBSZW5kZXJMYXllcjo6aGl0VGVzdE92ZXJm
bG93Q29udHJvbHMsCisgICAgICAgICAgICAgICAgLy8gc28gd2UgbmVlZCB0byB0ZXN0IFNjcm9s
bFZpZXcgc2Nyb2xsYmFycyBzZXBhcmF0ZWx5IGhlcmUuCisgICAgICAgICAgICAgICAgLy8gRklY
TUU6IENvbnNpZGVyIGlmIHRoaXMgdGVzdCBjb3VsZCBiZSBkb25lIHVuY29uZGl0aW9uYWxseS4K
KyAgICAgICAgICAgICAgICBTY3JvbGxiYXIqIGZyYW1lU2Nyb2xsYmFyID0gY2hpbGRGcmFtZVZp
ZXctPnNjcm9sbGJhckF0UG9pbnQobmV3SGl0VGVzdExvY2F0aW9uLnJvdW5kZWRQb2ludCgpKTsK
KyAgICAgICAgICAgICAgICBpZiAoZnJhbWVTY3JvbGxiYXIpCisgICAgICAgICAgICAgICAgICAg
IHJlc3VsdC5zZXRTY3JvbGxiYXIoZnJhbWVTY3JvbGxiYXIpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIFJlbmRlclBhcnQ6Om5vZGVBdFBvaW50KHJlcXVl
c3QsIHJlc3VsdCwgbG9jYXRpb25JbkNvbnRhaW5lciwgYWNjdW11bGF0ZWRPZmZzZXQsIGFjdGlv
bik7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
cmFtZUJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuaApp
bmRleCA0ZmFkNTYwYzViMzM3Zjk2YjgxM2IwY2I3OTA1NDUzNjJkYzY2ODdjLi5hN2RlZWRhYjEw
MjgzZGY2OTU0MThlZGUwZmJiOTRkNDllMTJlNDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZyYW1lQmFzZS5oCkBAIC0zNiw2ICszNiw3IEBAIHByb3RlY3RlZDoKICAgICBl
eHBsaWNpdCBSZW5kZXJGcmFtZUJhc2UoRWxlbWVudCopOwogCiBwdWJsaWM6CisgICAgdmlydHVh
bCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYs
IGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0
UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uKSBPVkVSUklERTsKICAgICB2
b2lkIGxheW91dFdpdGhGbGF0dGVuaW5nKGJvb2wgZml4ZWRXaWR0aCwgYm9vbCBmaXhlZEhlaWdo
dCk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCA0
MTdkNzk1OTVhMTJkMTVhODdiMjI4OWI3ODk4ZmI5ZTQzMzVjZTVkLi40MjA3Y2ZhOWJlMGZmZDNj
YWNjYWQwMjQxZGJmY2MyYjJmOTkzYWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHAKQEAgLTM0NDMsNiArMzQ0MywxNSBAQCBzdGF0aWMgaW5saW5lIExheW91dFJl
Y3QgZnJhbWVWaXNpYmxlUmVjdChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogICAgIHJldHVybiBm
cmFtZVZpZXctPnZpc2libGVDb250ZW50UmVjdCgpOwogfQogCitib29sIFJlbmRlckxheWVyOjpp
c1Jvb3RMYXllck9mTWFpbkZyYW1lKCkgY29uc3QKK3sKKyAgICBpZiAoIW1faXNSb290TGF5ZXIp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoRnJhbWUgKmZyYW1lID0gcmVuZGVyZXIo
KSA/IHJlbmRlcmVyKCktPmZyYW1lKCkgOiAwKQorICAgICAgICByZXR1cm4gKGZyYW1lID09IGZy
YW1lLT5wYWdlKCktPm1haW5GcmFtZSgpKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIGJvb2wg
UmVuZGVyTGF5ZXI6OmhpdFRlc3QoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRl
c3RSZXN1bHQmIHJlc3VsdCkKIHsKICAgICByZXR1cm4gaGl0VGVzdChyZXF1ZXN0LCByZXN1bHQu
aGl0VGVzdExvY2F0aW9uKCksIHJlc3VsdCk7CkBAIC0zNDYxLDcgKzM0NzAsNyBAQCBib29sIFJl
bmRlckxheWVyOjpoaXRUZXN0KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBI
aXRUZXN0TG9jYXRpb24mCiAgICAgICAgIC8vIFdlIGRpZG4ndCBoaXQgYW55IGxheWVyLiBJZiB3
ZSBhcmUgdGhlIHJvb3QgbGF5ZXIgYW5kIHRoZSBtb3VzZSBpcyAtLSBvciBqdXN0IHdhcyAtLSBk
b3duLCAKICAgICAgICAgLy8gcmV0dXJuIG91cnNlbHZlcy4gV2UgZG8gdGhpcyBzbyBtb3VzZSBl
dmVudHMgY29udGludWUgZ2V0dGluZyBkZWxpdmVyZWQgYWZ0ZXIgYSBkcmFnIGhhcyAKICAgICAg
ICAgLy8gZXhpdGVkIHRoZSBXZWJWaWV3LCBhbmQgc28gaGl0IHRlc3Rpbmcgb3ZlciBhIHNjcm9s
bGJhciBoaXRzIHRoZSBjb250ZW50IGRvY3VtZW50LgotICAgICAgICBpZiAoKHJlcXVlc3QuYWN0
aXZlKCkgfHwgcmVxdWVzdC5yZWxlYXNlKCkpICYmIGlzUm9vdExheWVyKCkpIHsKKyAgICAgICAg
aWYgKChyZXF1ZXN0LmFjdGl2ZSgpIHx8IHJlcXVlc3QucmVsZWFzZSgpKSAmJiBpc1Jvb3RMYXll
ck9mTWFpbkZyYW1lKCkpIHsKICAgICAgICAgICAgIHJlbmRlcmVyKCktPnVwZGF0ZUhpdFRlc3RS
ZXN1bHQocmVzdWx0LCB0b1JlbmRlclZpZXcocmVuZGVyZXIoKSktPmZsaXBGb3JXcml0aW5nTW9k
ZShyZXN1bHQucG9pbnQoKSkpOwogICAgICAgICAgICAgaW5zaWRlTGF5ZXIgPSB0aGlzOwogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCmluZGV4IDViMGZmZDkz
MDY5NmE5Mzg2NzU4MjNkZTBlOTRkNjU2MjExY2EzYjguLjc4N2VhMjZkNWExMTg1YmI2NGJiMWM2
MzY1NWQ0ODBhMTljMTExYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5o
CkBAIC0zNzMsNiArMzczLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SW5SZXNpemVNb2RlKGJv
b2wgYikgeyBtX2luUmVzaXplTW9kZSA9IGI7IH0KIAogICAgIGJvb2wgaXNSb290TGF5ZXIoKSBj
b25zdCB7IHJldHVybiBtX2lzUm9vdExheWVyOyB9CisgICAgYm9vbCBpc1Jvb3RMYXllck9mTWFp
bkZyYW1lKCkgY29uc3Q7CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAg
UmVuZGVyTGF5ZXJDb21wb3NpdG9yKiBjb21wb3NpdG9yKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKaW5kZXggYzAxNGFkYzc0ZmRmNTdhY2RlYWM5NzgwYjA3ZTBhNzFm
MTJkMzI0ZC4uZDAzZjAzYzBiYzU2MTllMjQzMmU3ZDhkNjY0OGUzOGUxMGU3ZTVlYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtOTY2LDE0ICs5NjYsMTQgQEAgdW5zaWdu
ZWQgSW50ZXJuYWxzOjp0b3VjaEV2ZW50SGFuZGxlckNvdW50KERvY3VtZW50KiBkb2N1bWVudCwg
RXhjZXB0aW9uQ29kZSYgZWMKIH0KIAogUGFzc1JlZlB0cjxOb2RlTGlzdD4gSW50ZXJuYWxzOjpu
b2Rlc0Zyb21SZWN0KERvY3VtZW50KiBkb2N1bWVudCwgaW50IHgsIGludCB5LCB1bnNpZ25lZCB0
b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcsCi0gICAgdW5zaWduZWQgYm90dG9tUGFk
ZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcsIGJvb2wgaWdub3JlQ2xpcHBpbmcsIGJvb2wgYWxs
b3dTaGFkb3dDb250ZW50LCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKKyAgICB1bnNpZ25lZCBi
b3R0b21QYWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGluZywgYm9vbCBpZ25vcmVDbGlwcGluZywg
Ym9vbCBhbGxvd1NoYWRvd0NvbnRlbnQsIGJvb2wgYWxsb3dDaGlsZEZyYW1lQ29udGVudCwgRXhj
ZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiB7CiAgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQt
PmZyYW1lKCkgfHwgIWRvY3VtZW50LT5mcmFtZSgpLT52aWV3KCkpIHsKICAgICAgICAgZWMgPSBJ
TlZBTElEX0FDQ0VTU19FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIHJldHVy
biBkb2N1bWVudC0+bm9kZXNGcm9tUmVjdCh4LCB5LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcs
IGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nLCBpZ25vcmVDbGlwcGluZywgYWxsb3dTaGFkb3dD
b250ZW50KTsKKyAgICByZXR1cm4gZG9jdW1lbnQtPm5vZGVzRnJvbVJlY3QoeCwgeSwgdG9wUGFk
ZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0UGFkZGluZywgaWdub3JlQ2xp
cHBpbmcsIGFsbG93U2hhZG93Q29udGVudCwgYWxsb3dDaGlsZEZyYW1lQ29udGVudCk7CiB9CiAK
IHZvaWQgSW50ZXJuYWxzOjplbWl0SW5zcGVjdG9yRGlkQmVnaW5GcmFtZSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaAppbmRleCBiNzNiN2E4MDMyNjdlMDEyNzIwNzBhZGEwYmNlZjlkMzYw
ZWJhMWZjLi4yYzdjODYwYTgwZDA1MTA3YmNmYzJmNTNhNjlmYzU3MDkyOTJlNTE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTE2MCw3ICsxNjAsNyBAQCBwdWJsaWM6CiAgICAg
dW5zaWduZWQgdG91Y2hFdmVudEhhbmRsZXJDb3VudChEb2N1bWVudCosIEV4Y2VwdGlvbkNvZGUm
KTsKIAogICAgIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IG5vZGVzRnJvbVJlY3QoRG9jdW1lbnQqLCBp
bnQgeCwgaW50IHksIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFkZGluZywK
LSAgICAgICAgdW5zaWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcsIGJv
b2wgaWdub3JlQ2xpcHBpbmcsIGJvb2wgYWxsb3dTaGFkb3dDb250ZW50LCBFeGNlcHRpb25Db2Rl
JikgY29uc3Q7CisgICAgICAgIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQ
YWRkaW5nLCBib29sIGlnbm9yZUNsaXBwaW5nLCBib29sIGFsbG93U2hhZG93Q29udGVudCwgYm9v
bCBhbGxvd0NoaWxkRnJhbWVDb250ZW50LCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAKICAgICB2
b2lkIGVtaXRJbnNwZWN0b3JEaWRCZWdpbkZyYW1lKCk7CiAgICAgdm9pZCBlbWl0SW5zcGVjdG9y
RGlkQ2FuY2VsRnJhbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCBh
ZmRjNGEyNGJiNDg0NGUyMTZiY2E5MWQ0MGY4MDM4MDQzZDFjMmNhLi43MDQ5ZWM4MGVkMGMzZTBm
NzE0MDE4NWFjMzE5ZTgxODhlYmI4Y2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aWRsCkBAIC0xMzgsNyArMTM4LDcgQEAgbW9kdWxlIHdpbmRvdyB7CiAKICAgICAgICAgTm9kZUxp
c3Qgbm9kZXNGcm9tUmVjdChpbiBEb2N1bWVudCBkb2N1bWVudCwgaW4gbG9uZyB4LCBpbiBsb25n
IHksCiAgICAgICAgICAgICBpbiB1bnNpZ25lZCBsb25nIHRvcFBhZGRpbmcsIGluIHVuc2lnbmVk
IGxvbmcgcmlnaHRQYWRkaW5nLCBpbiB1bnNpZ25lZCBsb25nIGJvdHRvbVBhZGRpbmcsIGluIHVu
c2lnbmVkIGxvbmcgbGVmdFBhZGRpbmcsCi0gICAgICAgICAgICBpbiBib29sZWFuIGlnbm9yZUNs
aXBwaW5nLCBpbiBib29sZWFuIGFsbG93U2hhZG93Q29udGVudCkgcmFpc2VzIChET01FeGNlcHRp
b24pOworICAgICAgICAgICAgaW4gYm9vbGVhbiBpZ25vcmVDbGlwcGluZywgaW4gYm9vbGVhbiBh
bGxvd1NoYWRvd0NvbnRlbnQsIGluIGJvb2xlYW4gYWxsb3dDaGlsZEZyYW1lQ29udGVudCkgcmFp
c2VzIChET01FeGNlcHRpb24pOwogCiAgICAgICAgIHZvaWQgZW1pdEluc3BlY3RvckRpZEJlZ2lu
RnJhbWUoKTsKICAgICAgICAgdm9pZCBlbWl0SW5zcGVjdG9yRGlkQ2FuY2VsRnJhbWUoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZiBiL1NvdXJjZS9XZWJLaXQy
L3dpbi9XZWJLaXQyLmRlZgppbmRleCBmNTEwMmU2NjdjZDZiYTkwM2Y5N2EzZWRmNDE2MTI0Nzk4
MDc0MzYyLi42NTFjOThmYzcyMmM5Mzg5ZjViMDg3M2YwNTNmNjk0YjdjMzA2MmI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKKysrIGIvU291cmNlL1dlYktpdDIv
d2luL1dlYktpdDIuZGVmCkBAIC0yNTksNyArMjU5LDcgQEAgRVhQT1JUUwogICAgICAgICA/PzFD
b250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlckBXZWJDb3JlQEBNQUVAWFoKICAgICAgICAgP2NvbnRl
eHREZXN0cm95ZWRAQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXJAV2ViQ29yZUBAVUFFWFhaCiAg
ICAgICAgID8/MENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyQFdlYkNvcmVAQFFBRUBQQVZTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QDFAQFoKLSAgICAgICAgP25vZGVzRnJvbVJlY3RARG9jdW1lbnRA
V2ViQ29yZUBAUUJFP0FWPyRQYXNzUmVmUHRyQFZOb2RlTGlzdEBXZWJDb3JlQEBAV1RGQEBISElJ
SUlfTjBAWgorICAgICAgICA/bm9kZXNGcm9tUmVjdEBEb2N1bWVudEBXZWJDb3JlQEBRQkU/QVY/
JFBhc3NSZWZQdHJAVk5vZGVMaXN0QFdlYkNvcmVAQEBXVEZAQEhISUlJSV9OMDBAWgogICAgICAg
ICA/c2VsZWN0aW9uU3RhcnRIYXNNYXJrZXJGb3JARWRpdG9yQFdlYkNvcmVAQFFCRV9OVzRNYXJr
ZXJUeXBlQERvY3VtZW50TWFya2VyQDJASEhAWgogICAgICAgICA/d2Via2l0V2lsbEVudGVyRnVs
bFNjcmVlbkZvckVsZW1lbnRARG9jdW1lbnRAV2ViQ29yZUBAUUFFWFBBVkVsZW1lbnRAMkBAWgog
ICAgICAgICA/d2Via2l0RGlkRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudEBEb2N1bWVudEBXZWJD
b3JlQEBRQUVYUEFWRWxlbWVudEAyQEBaCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi93aW4v
V2ViS2l0MkNGTGl0ZS5kZWYgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYK
aW5kZXggYmIxYTBkMjM4MzJlMGY4NDlhZDU4YjQwNGYzYWIyMGQ5OTZhYWU3ZC4uZDNiZWY0NmRi
M2EzMzlmYTk3ZmIyNjg1MDI3Y2NjOGJiZjM1NTAwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQy
Q0ZMaXRlLmRlZgpAQCAtMjUzLDcgKzI1Myw3IEBAIEVYUE9SVFMKICAgICAgICAgP3VzZXJQcmVm
ZXJyZWRMYW5ndWFnZXNAV2ViQ29yZUBAWUE/QVY/JFZlY3RvckBWU3RyaW5nQFdURkBAJDBBQEBX
VEZAQFhaCiAgICAgICAgID91dGY4QFN0cmluZ0BXVEZAQFFCRT9BVkNTdHJpbmdAMkBfTkBaCiAg
ICAgICAgID92aWV3QERvY3VtZW50QFdlYkNvcmVAQFFCRVBBVkZyYW1lVmlld0AyQFhaCi0gICAg
ICAgID9ub2Rlc0Zyb21SZWN0QERvY3VtZW50QFdlYkNvcmVAQFFCRT9BVj8kUGFzc1JlZlB0ckBW
Tm9kZUxpc3RAV2ViQ29yZUBAQFdURkBASEhJSUlJX04wQFoKKyAgICAgICAgP25vZGVzRnJvbVJl
Y3RARG9jdW1lbnRAV2ViQ29yZUBAUUJFP0FWPyRQYXNzUmVmUHRyQFZOb2RlTGlzdEBXZWJDb3Jl
QEBAV1RGQEBISElJSUlfTjAwQFoKICAgICAgICAgP3NlbGVjdGlvblN0YXJ0SGFzTWFya2VyRm9y
QEVkaXRvckBXZWJDb3JlQEBRQkVfTlc0TWFya2VyVHlwZUBEb2N1bWVudE1hcmtlckAyQEhIQFoK
ICAgICAgICAgP3Jlc3RyaWN0U2NhbGVGYWN0b3JUb0luaXRpYWxTY2FsZUlmTm90VXNlclNjYWxh
YmxlQFdlYkNvcmVAQFlBWEFBVVZpZXdwb3J0QXR0cmlidXRlc0AxQEBaCiAgICAgICAgID9yZXN0
cmljdE1pbmltdW1TY2FsZUZhY3RvclRvVmlld3BvcnRTaXplQFdlYkNvcmVAQFlBWEFBVVZpZXdw
b3J0QXR0cmlidXRlc0AxQFZJbnRTaXplQDFAQFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9v
bHMvc3ltYm9scy5maWx0ZXIgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCmluZGV4
IDZhOGQxZWM2ZTliYzdlYzI5MTA4YWY4MDVhOGY1MjVlNTExYjEzZDMuLmI2M2I3YzFjM2ZiZjgy
MWM5Y2ViY2E4YTUxZmUyZTkwM2ExNDdlMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMv
c3ltYm9scy5maWx0ZXIKKysrIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgpAQCAt
MTYyLDcgKzE2Miw3IEBAIF9aTjdXZWJDb3JlMjJSdW50aW1lRW5hYmxlZEZlYXR1cmVzMThpc1No
YWRvd0RPTUVuYWJsZWRFOwogX1pON1dlYkNvcmUyMlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMyMmlz
Q1NTRXhjbHVzaW9uc0VuYWJsZWRFOwogX1pON1dlYkNvcmUyMlJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXMyMmlzRGlhbG9nRWxlbWVudEVuYWJsZWRFOwogX1pON1dlYkNvcmUyMlJ1bnRpbWVFbmFibGVk
RmVhdHVyZXMzN2lzQXV0aG9yU2hhZG93RE9NRm9yQW55RWxlbWVudEVuYWJsZWRFOwotX1pOSzdX
ZWJDb3JlOERvY3VtZW50MTNub2Rlc0Zyb21SZWN0RWlpampqamJiOworX1pOSzdXZWJDb3JlOERv
Y3VtZW50MTNub2Rlc0Zyb21SZWN0RWlpampqamJiYjsKIF9aTjdXZWJDb3JlNHRvSlNFUE4zSlND
OUV4ZWNTdGF0ZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTlNfOE5vZGVMaXN0RTsKIF9aTks3
V2ViQ29yZTZFZGl0b3IyNnNlbGVjdGlvblN0YXJ0SGFzTWFya2VyRm9yRU5TXzE0RG9jdW1lbnRN
YXJrZXIxME1hcmtlclR5cGVFaWk7CiBfWk43V2ViQ29yZThEb2N1bWVudDMzd2Via2l0RGlkRXhp
dEZ1bGxTY3JlZW5Gb3JFbGVtZW50RVBOU183RWxlbWVudEU7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYWFiNjk3ZmJjOTM1
ZDMzYTZlMTE1ZjVmNmNlMzhhMjUzZWZiZjliMi4uNmI4ZjJjODU5ZWQwOWEyNDVlZWExOTc2ZGU1
Mzg3ZDA0NWMwZGZkZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA5LTAzICBBbGxhbiBT
YW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgorCisgICAgICAgIEFsbG93
IGNoaWxkLWZyYW1lIGNvbnRlbnQgaW4gaGl0LXRlc3RzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUyMDQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKyAgICAgICAgVG91Y2gtQWRqdXN0bWVudCB0ZXN0IGJ5IEtldmluIEVs
bGlzCisKKyAgICAgICAgVHdvIG5ldyB0ZXN0cyBmb3IgaGl0LXRlc3RpbmcgY2hpbGQgZnJhbWUg
Y29udGVudC4gT25lIGZvciB0ZXN0aW5nIGl0IGFzIGFuIG9wdGlvbiB0bworICAgICAgICBub2Rl
c0Zyb21SZWN0LCBhbmQgb25lIHRlc3RpbmcgaXRzIGltcHJvdmVtZW50IG9uIHRvdWNoIGFkanVz
dG1lbnQgb24gaWZyYW1lIGJvdW5kYXJpZXMuCisKKyAgICAgICAgKiBmYXN0L2RvbS9ub2Rlc0Zy
b21SZWN0L25vZGVzRnJvbVJlY3QtY2hpbGQtZnJhbWUtY29udGVudC1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZG9tL25vZGVzRnJvbVJlY3Qvbm9kZXNGcm9tUmVjdC1jaGls
ZC1mcmFtZS1jb250ZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL25vZGVzRnJv
bVJlY3QvcmVzb3VyY2VzL2NoaWxkLWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZG9tL25vZGVzRnJvbVJlY3QvcmVzb3VyY2VzL25vZGVzRnJvbVJlY3QuanM6CisgICAgICAgIChj
aGVjayk6CisgICAgICAgIChjaGVja1NoYWRvd0NvbnRlbnQpOgorICAgICAgICAoY2hlY2tSZWN0
KToKKyAgICAgICAgKG5vZGVzRnJvbVJlY3RBc1N0cmluZyk6CisgICAgICAgICogdG91Y2hhZGp1
c3RtZW50L2lmcmFtZS1ib3VuZGFyeS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRv
dWNoYWRqdXN0bWVudC9pZnJhbWUtYm91bmRhcnkuaHRtbDogQWRkZWQuCisgICAgICAgICogdG91
Y2hhZGp1c3RtZW50L3Jlc291cmNlcy9pbm5lci1jb250ZW50LXBhZ2UuaHRtbDogQWRkZWQuCisg
ICAgICAgICogdG91Y2hhZGp1c3RtZW50L3Jlc291cmNlcy9pbm5lci1uYXZpZ2F0aW9uLWZyYW1l
Lmh0bWw6IEFkZGVkLgorCiAyMDEyLTA5LTAzICBBbGV4YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogVW5oaWRlIGhpZGRlbiBjaGFy
YWN0ZXJzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2Rlc0Zyb21SZWN0L25v
ZGVzRnJvbVJlY3QtY2hpbGQtZnJhbWUtY29udGVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9ub2Rlc0Zyb21SZWN0L25vZGVzRnJvbVJlY3QtY2hpbGQtZnJhbWUtY29udGVu
dC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWMxYzk3MDBjMjU5YmQyMjQ5MDAzYTNlODAzNTQ3
ZTEyNGRjZmZmZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVz
RnJvbVJlY3Qvbm9kZXNGcm9tUmVjdC1jaGlsZC1mcmFtZS1jb250ZW50LWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE4IEBACisKK0RvY3VtZW50Ojpub2Rlc0Zyb21SZWN0IDogQWxsb3cgY2hpbGQt
ZnJhbWUgY29udGVudCAtIGJ1ZyA5NTIwNAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
KworUEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdAorUEFTUyBBbGwgY29ycmVj
dCBub2RlcyBmb3VuZCBmb3IgcmVjdAorUEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3Ig
cmVjdAorUEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdAorUEFTUyBBbGwgY29y
cmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdAorUEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBm
b3IgcmVjdAorUEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdAorUEFTUyBBbGwg
Y29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9t
L25vZGVzRnJvbVJlY3Qvbm9kZXNGcm9tUmVjdC1jaGlsZC1mcmFtZS1jb250ZW50Lmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9ub2Rlc0Zyb21SZWN0L25vZGVzRnJvbVJlY3QtY2hpbGQtZnJh
bWUtY29udGVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFkYjQxNjdiMTc4MDJkY2ViOWUzODZjNTRlMzFl
NTQ2ODVjNTFlOTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2Rl
c0Zyb21SZWN0L25vZGVzRnJvbVJlY3QtY2hpbGQtZnJhbWUtY29udGVudC5odG1sCkBAIC0wLDAg
KzEsNzcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8dGl0bGU+RG9j
dW1lbnQ6Om5vZGVzRnJvbVJlY3QgOiBBbGxvdyBjaGlsZC1mcmFtZSBjb250ZW50IC0gYnVnIDk1
MjA0PC90aXRsZT4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL25vZGVzRnJvbVJl
Y3QuanMiPjwvc2NyaXB0PgorICAgIDxzdHlsZT4KKyAgICAgICAgYm9keSB7IG1hcmdpbjogMHB4
OyB9CisgICAgICAgICNzYW5kYm94IHsKKyAgICAgICAgICAgIHdpZHRoOiA0MDBweDsKKyAgICAg
ICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgICAgIH0KKyAgICAgICAgI3NhbmRib3ggI2xheWVy
IHsKKyAgICAgICAgICAgIGZsb2F0OiByaWdodDsKKyAgICAgICAgfQorICAgICAgICAjc2FuZGJv
eCBpZnJhbWUgeworICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7CisgICAgICAgICAgICBib3gt
c2l6aW5nOiBib3JkZXItYm94OworICAgICAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICAg
ICAgaGVpZ2h0OiAyMDBweDsKKyAgICAgICAgICAgIGJvcmRlcjogbm9uZTsKKyAgICAgICAgfQor
ICAgICAgICAucm90YXRlMTgwIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpOyB9
CisgICAgICAgIC5yb3RhdGU5MCB7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpOyB9
CisgICAgICAgICNzYW5kYm94IC5ib3ggeworICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVy
LWJveDsKKyAgICAgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgICAgICB3aWR0aDogMjAw
cHg7CisgICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKKyAgICAgICAgfQorICAg
IDwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keSBpZD0iYm9keSI+CisgICAgPGRpdiBpZD1zYW5kYm94
PgorICAgICAgICA8ZGl2IGlkPWxheWVyPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaWZyYW1l
MSIgc3JjPSJyZXNvdXJjZXMvY2hpbGQtZnJhbWUuaHRtbCI+PC9pZnJhbWU+CisgICAgICAgIDwv
ZGl2PgorICAgICAgICA8ZGl2IGlkPWRpdjEgY2xhc3M9Ym94PjwvZGl2PgorICAgICAgICA8ZGl2
IGlkPWRpdjIgY2xhc3M9Ym94PjwvZGl2PgorICAgIDwvZGl2PgorCisgICAgPHAgaWQ9J2Rlc2Ny
aXB0aW9uJz48L3A+CisgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgPHNjcmlwdCB0
eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Ij4KKyAgICAgICAgZnVuY3Rpb24gcnVuVGVzdCgp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uKGRvY3VtZW50LnRpdGxlKTsKKwor
ICAgICAgICAgICAgLy8gU2V0IHVwIHNob3J0Y3V0IGFjY2VzcyB0byBlbGVtZW50cworICAgICAg
ICAgICAgdmFyIGUgPSB7fTsKKyAgICAgICAgICAgIFsnc2FuZGJveCcsICdsYXllciddLmZvckVh
Y2goZnVuY3Rpb24oYSkgeworICAgICAgICAgICAgICAgIGVbYV0gPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZChhKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBjaGVja1JlY3QoMjUs
IDI1LCAxMDAsIDEwMCwgIkRJViNkaXYyLCBESVYjZGl2MSwgRElWI3NhbmRib3giKTsKKyAgICAg
ICAgICAgIGNoZWNrUmVjdCgyMjAsIDIwLCA3MCwgNzAsICJESVYjbGVmdCIpOworICAgICAgICAg
ICAgY2hlY2tSZWN0KDI1MCwgMjAsIDEwMCwgNzAsICJESVYjcmlnaHQsIERJViNsZWZ0LCBIVE1M
Iik7CisKKyAgICAgICAgICAgIGNoZWNrUmVjdCgxNTAsIDUwLCAxMDAsIDEwMCwgIkRJViNsZWZ0
LCBIVE1MLCAjZG9jdW1lbnQsIElGUkFNRSNpZnJhbWUxLCBESVYjbGF5ZXIsIERJViNkaXYyLCBE
SVYjZGl2MSwgRElWI3NhbmRib3giKTsKKworICAgICAgICAgICAgZS5sYXllci5zZXRBdHRyaWJ1
dGUoJ2NsYXNzJywgJ3JvdGF0ZTE4MCcpOworICAgICAgICAgICAgY2hlY2tSZWN0KDIyMCwgMjAs
IDcwLCA3MCwgIkRJViNyaWdodCIpOworICAgICAgICAgICAgY2hlY2tSZWN0KDE1MCwgNTAsIDEw
MCwgMTAwLCAiRElWI3JpZ2h0LCBIVE1MLCAjZG9jdW1lbnQsIElGUkFNRSNpZnJhbWUxLCBESVYj
bGF5ZXIsIERJViNkaXYyLCBESVYjZGl2MSwgRElWI3NhbmRib3giKTsKKworICAgICAgICAgICAg
ZS5sYXllci5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgJ3JvdGF0ZTkwJyk7CisgICAgICAgICAgICBj
aGVja1JlY3QoMjUwLCAyMCwgMTAwLCA3MCwgIkRJViNsZWZ0Iik7CisgICAgICAgICAgICBjaGVj
a1JlY3QoMTUwLCAyMCwgMjAwLCA2MCwgIkRJViNsZWZ0LCBIVE1MLCAjZG9jdW1lbnQsIElGUkFN
RSNpZnJhbWUxLCBESVYjbGF5ZXIsIERJViNkaXYxLCBESVYjc2FuZGJveCIpOworCisgICAgICAg
ICAgICBlLnNhbmRib3guZGlzcGxheSA9ICdub25lJzsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVz
dCgpOworICAgICAgICB9CisgICAgICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgICAgICB3
aW5kb3cub25sb2FkID0gcnVuVGVzdDsKKyAgICA8L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0i
Li4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2Rlc0Zyb21SZWN0L3Jl
c291cmNlcy9jaGlsZC1mcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9t
UmVjdC9yZXNvdXJjZXMvY2hpbGQtZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMDRkN2ZhYWRiYjk4
NjY3YmZlYzRhNDcyN2M4ZGEyODczNjMzZTY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vbm9kZXNGcm9tUmVjdC9yZXNvdXJjZXMvY2hpbGQtZnJhbWUuaHRtbApAQCAt
MCwwICsxLDI3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGUgdHlw
ZT0idGV4dC9jc3MiPgorICAgIGJvZHkgeyBtYXJnaW46IDBweDsgfQorICAgIGRpdiB7IAorICAg
ICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OworICAgICAgICBib3JkZXI6IDFweCBzb2xpZCBi
bGFjazsKKyAgICB9CisgICAgI2xlZnQgeworICAgICAgICBmbG9hdDpsZWZ0OworICAgICAgICB3
aWR0aDogOTBweDsKKyAgICAgICAgaGVpZ2h0OiAxOTBweDsKKyAgICB9CisgICAgI3JpZ2h0IHsK
KyAgICAgICAgZmxvYXQ6cmlnaHQ7CisgICAgICAgIHdpZHRoOiA5MHB4OworICAgICAgICBoZWln
aHQ6IDE5MHB4OworICAgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2IGlk
PWxlZnQ+PC9kaXY+CisgICAgPGRpdiBpZD1yaWdodD48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4K
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9tUmVjdC9yZXNvdXJj
ZXMvbm9kZXNGcm9tUmVjdC5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3Qv
cmVzb3VyY2VzL25vZGVzRnJvbVJlY3QuanMKaW5kZXggMmU4M2E3NTY3YWEwYTYxMzg0YjM0YjEz
MjI4MDA5YzIzZjAxNzdlMS4uMTRjY2Y2MmRmYTYxNzZkMDhiZmE0Mjk0Y2Y5ODc3NjMzOWZlNDY5
NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9tUmVjdC9yZXNvdXJj
ZXMvbm9kZXNGcm9tUmVjdC5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2Rlc0Zyb21S
ZWN0L3Jlc291cmNlcy9ub2Rlc0Zyb21SZWN0LmpzCkBAIC0xLDcgKzEsOCBAQAogLyoKICAqIENv
bnRyaWJ1dG9yczoKICAqICAgICAqIEFudG9uaW8gR29tZXMgPHRvbmlraXRvb0B3ZWJraXQub3Jn
PgotICoqLworICogICAgICogQWxsYW4gU2FuZGZlbGQgSmVuc2VuIDxhbGxhbi5qZW5zZW5Abm9r
aWEuY29tPgorKiovCiAKIGZ1bmN0aW9uIGNoZWNrKHgsIHksIHRvcFBhZGRpbmcsIHJpZ2h0UGFk
ZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcsIGxpc3QsIGRvYykKIHsKQEAgLTExLDcg
KzEyLDcgQEAgZnVuY3Rpb24gY2hlY2soeCwgeSwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBi
b3R0b21QYWRkaW5nLCBsZWZ0UGFkZGluZywgbGlzdCwKICAgaWYgKCFkb2MpCiAgICAgZG9jID0g
ZG9jdW1lbnQ7CiAKLSAgdmFyIG5vZGVzID0gaW50ZXJuYWxzLm5vZGVzRnJvbVJlY3QoZG9jLCB4
LCB5LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5n
LCB0cnVlIC8qIGlnbm9yZUNsaXBwaW5nICovLCBmYWxzZSAvKiBhbGxvdyBzaGFkb3cgY29udGVu
dCAqLyk7CisgIHZhciBub2RlcyA9IGludGVybmFscy5ub2Rlc0Zyb21SZWN0KGRvYywgeCwgeSwg
dG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0UGFkZGluZywgdHJ1
ZSAvKiBpZ25vcmVDbGlwcGluZyAqLywgZmFsc2UgLyogYWxsb3cgc2hhZG93IGNvbnRlbnQgKi8s
IGZhbHNlIC8qIGFsbG93IGNoaWxkLWZyYW1lIGNvbnRlbnQgKi8pOwogICBpZiAoIW5vZGVzKQog
ICAgIHJldHVybjsKIApAQCAtNDUsNyArNDYsNyBAQCBmdW5jdGlvbiBjaGVja1NoYWRvd0NvbnRl
bnQoeCwgeSwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0UAog
ICBpZiAoIWRvYykKICAgICBkb2MgPSBkb2N1bWVudDsKIAotICB2YXIgbm9kZXMgPSBpbnRlcm5h
bHMubm9kZXNGcm9tUmVjdChkb2MsIHgsIHksIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90
dG9tUGFkZGluZywgbGVmdFBhZGRpbmcsIHRydWUgLyogaWdub3JlQ2xpcHBpbmcgKi8sIHRydWUg
LyogYWxsb3dTaGFkb3dDb250ZW50ICovKTsKKyAgdmFyIG5vZGVzID0gaW50ZXJuYWxzLm5vZGVz
RnJvbVJlY3QoZG9jLCB4LCB5LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRp
bmcsIGxlZnRQYWRkaW5nLCB0cnVlIC8qIGlnbm9yZUNsaXBwaW5nICovLCB0cnVlIC8qIGFsbG93
U2hhZG93Q29udGVudCAqLywgZmFsc2UgLyogYWxsb3cgY2hpbGQtZnJhbWUgY29udGVudCAqLyk7
CiAgIGlmICghbm9kZXMpCiAgICAgcmV0dXJuOwogCkBAIC02Nyw2ICs2OCw2MSBAQCBmdW5jdGlv
biBjaGVja1NoYWRvd0NvbnRlbnQoeCwgeSwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0
b21QYWRkaW5nLCBsZWZ0UAogICB0ZXN0UGFzc2VkKCJBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBm
b3IgcmVjdCIpOwogfQogCitmdW5jdGlvbiBjaGVja1JlY3QobGVmdCwgdG9wLCB3aWR0aCwgaGVp
Z2h0LCBleHBlY3RlZE5vZGVTdHJpbmcsIGRvYykKK3sKKyAgICBpZiAoIXdpbmRvdy5pbnRlcm5h
bHMpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChoZWlnaHQgPD0wIHx8IHdpZHRoIDw9IDAp
CisgICAgICAgIHJldHVybjsKKworICAgIGlmICghZG9jKQorICAgICAgICBkb2MgPSBkb2N1bWVu
dDsKKworICAgIHZhciB0b3BQYWRkaW5nID0gaGVpZ2h0IC8gMjsKKyAgICB2YXIgbGVmdFBhZGRp
bmcgPSAgd2lkdGggLyAyOworICAgIC8vIEZJWE1FOiBXaGVuIG5vZGVzRnJvbVJlY3QgaXMgY2hh
bmdlZCB0byBub3QgYWRkIDEgdG8gd2lkdGggYW5kIGhlaWdodCwgcmVtb3ZlIHRoZSBjb3JyZWN0
aW9uIGhlcmUuCisgICAgdmFyIGJvdHRvbVBhZGRpbmcgPSAoaGVpZ2h0IC0gMSkgLSB0b3BQYWRk
aW5nOworICAgIHZhciByaWdodFBhZGRpbmcgPSAod2lkdGggLSAxKSAtIGxlZnRQYWRkaW5nOwor
CisgICAgdmFyIG5vZGVTdHJpbmcgPSBub2Rlc0Zyb21SZWN0QXNTdHJpbmcoZG9jLCBsZWZ0ICsg
bGVmdFBhZGRpbmcsIHRvcCArIHRvcFBhZGRpbmcsIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywg
Ym90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcpOworCisgICAgaWYgKG5vZGVTdHJpbmcgPT0gZXhw
ZWN0ZWROb2RlU3RyaW5nKSB7CisgICAgICAgIHRlc3RQYXNzZWQoIkFsbCBjb3JyZWN0IG5vZGVz
IGZvdW5kIGZvciByZWN0Iik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGVzdEZhaWxlZCgiTm9k
ZXNGcm9tUmVjdCBzaG91bGQgYmUgWyIgKyBleHBlY3RlZE5vZGVTdHJpbmcgKyAiXSB3YXMgWyIg
KyBub2RlU3RyaW5nICsgIl0iKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIG5vZGVzRnJvbVJlY3RB
c1N0cmluZyhkb2MsIHgsIHksIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGlu
ZywgbGVmdFBhZGRpbmcpCit7CisgICAgdmFyIG5vZGVTdHJpbmcgPSAiIjsKKyAgICB2YXIgbm9k
ZXMgPSBpbnRlcm5hbHMubm9kZXNGcm9tUmVjdChkb2MsIHgsIHksIHRvcFBhZGRpbmcsIHJpZ2h0
UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcsIHRydWUgLyogaWdub3JlQ2xpcHBp
bmcgKi8sIHRydWUgLyogYWxsb3cgc2hhZG93IGNvbnRlbnQgKi8sIHRydWUgLyogYWxsb3cgY2hp
bGQtZnJhbWUgY29udGVudCAqLyk7CisgICAgaWYgKCFub2RlcykKKyAgICAgICAgcmV0dXJuIG5v
ZGVTdHJpbmc7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7
CisgICAgICAgIGlmIChub2Rlc1tpXS5ub2RlVHlwZSA9PSAxKSB7CisgICAgICAgICAgICBub2Rl
U3RyaW5nICs9IG5vZGVzW2ldLm5vZGVOYW1lOworICAgICAgICAgICAgaWYgKG5vZGVzW2ldLmlk
KQorICAgICAgICAgICAgICAgIG5vZGVTdHJpbmcgKz0gJyMnICsgbm9kZXNbaV0uaWQ7CisgICAg
ICAgICAgICBlbHNlIGlmIChub2Rlc1tpXS5jbGFzcykgeworICAgICAgICAgICAgICAgIG5vZGVT
dHJpbmcgKz0gJy4nICsgbm9kZXNbaV0uY2xhc3M7CisgICAgICAgICAgICB9CisgICAgICAgIH0g
ZWxzZSBpZiAobm9kZXNbaV0ubm9kZVR5cGUgPT0gMykgeworICAgICAgICAgICAgbm9kZVN0cmlu
ZyArPSAiJyIgKyBub2Rlc1tpXS5kYXRhICsgIiciOworICAgICAgICB9IGVsc2UgaWYgKG5vZGVz
W2ldLm5vZGVUeXBlID09IDkpIHsKKyAgICAgICAgICAgIG5vZGVTdHJpbmcgKz0gIiNkb2N1bWVu
dCI7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQor
ICAgICAgICBpZiAoaSArIDEgPCBub2Rlcy5sZW5ndGgpIHsKKyAgICAgICAgICAgIG5vZGVTdHJp
bmcgKz0gIiwgIjsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gbm9kZVN0cmluZzsKK30K
KwogZnVuY3Rpb24gZ2V0Q2VudGVyRm9yKGVsZW1lbnQpCiB7CiAgIHZhciByZWN0ID0gZWxlbWVu
dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RvdWNo
YWRqdXN0bWVudC9pZnJhbWUtYm91bmRhcnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdG91
Y2hhZGp1c3RtZW50L2lmcmFtZS1ib3VuZGFyeS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzYx
ZDM2OTRiMDM5ZTRlMWEyZTE5OGEwMjliMWQyY2ZlZDg3MjZhYQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9pZnJhbWUtYm91bmRhcnktZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMjYgQEAKKyAKK1Rlc3QgdG91Y2gtYWRqdXN0bWVudCBhdCB0aGUgYm91bmRh
cnkgb2YgYW4gCisKKworVGVzdCBkaXJlY3QgdG91Y2hlcy4KK1BBU1MgYWRqdXN0ZWROb2RlLmlk
IGlzICJjaGVja2JveC0xIgorUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgImJ1dHRvbi0xIgorUEFT
UyBhZGp1c3RlZE5vZGUuaWQgaXMgImNoZWNrYm94LTIiCitQQVNTIGFkanVzdGVkTm9kZS5pZCBp
cyAiYnV0dG9uLTIiCitQQVNTIGFkanVzdGVkTm9kZS5pZCBpcyAiY2hlY2tib3gtMyIKK1BBU1Mg
YWRqdXN0ZWROb2RlLmlkIGlzICJidXR0b24tMyIKK1BBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJj
aGVja2JveC00IgorUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgImJ1dHRvbi00IgorVGVzdCBpbmRp
cmVjdCB0b3VjaGVzLgorUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgImNoZWNrYm94LTEiCitQQVNT
IGFkanVzdGVkTm9kZS5pZCBpcyAiYnV0dG9uLTEiCitQQVNTIGFkanVzdGVkTm9kZS5pZCBpcyAi
Y2hlY2tib3gtMiIKK1BBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJidXR0b24tMiIKK1BBU1MgYWRq
dXN0ZWROb2RlLmlkIGlzICJjaGVja2JveC0zIgorUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgImJ1
dHRvbi0zIgorUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgImNoZWNrYm94LTQiCitQQVNTIGFkanVz
dGVkTm9kZS5pZCBpcyAiYnV0dG9uLTQiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3Rt
ZW50L2lmcmFtZS1ib3VuZGFyeS5odG1sIGIvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L2lm
cmFtZS1ib3VuZGFyeS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3ODdmOTkwMTlkN2M0MjhhNTE1NGQ3MjI3
OTU3YjFmZWVkOTRmZTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90b3VjaGFkanVz
dG1lbnQvaWZyYW1lLWJvdW5kYXJ5Lmh0bWwKQEAgLTAsMCArMSwxMDAgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8dGl0bGU+VG91Y2ggQWRqdXN0bWVudCA6IFRlc3Qg
dG91Y2ggYWRqdXN0bWVudCBhdCBhbiBpZnJhbWUgYm91bmRhcnkgLSBidWcgOTQ5MzY8L3RpdGxl
PgorICAgIDxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy90b3VjaGFkanVzdG1lbnQuanMi
Pjwvc2NyaXB0PgorICAgIDxzdHlsZT4KKyAgICAgICAgI25hdmJhciB7CisgICAgICAgICAgICBi
YWNrZ3JvdW5kOiAjZWVlOworICAgICAgICAgICAgaGVpZ2h0OiAxMDAlOworICAgICAgICAgICAg
bGVmdDogMDsKKyAgICAgICAgICAgIHBhZGRpbmc6IDA7CisgICAgICAgICAgICBwb3NpdGlvbjog
YWJzb2x1dGU7CisgICAgICAgICAgICBtYXJnaW46IDA7CisgICAgICAgICAgICB0b3A6IDA7Cisg
ICAgICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIH0KKworICAgICAgICAjY29udGVudC1w
YWdlIHsKKyAgICAgICAgICAgIGhlaWdodDogMTAwJTsKKyAgICAgICAgICAgIGxlZnQ6IDEwMHB4
OworICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICAgICAgcmlnaHQ6IDA7
CisgICAgICAgICAgICB0b3A6IDA7CisgICAgICAgIH0KKworICAgICAgICBpZnJhbWUgeworICAg
ICAgICAgICAgYm9yZGVyOiBub25lOworICAgICAgICAgICAgd2lkdGg6IDEwMCU7CisgICAgICAg
ICAgICBoZWlnaHQ6IDEwMCU7CisgICAgICAgICAgICBtYXJnaW46IDA7CisgICAgICAgICAgICBw
YWRkaW5nOiAwOworICAgICAgICB9CisgICAgPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5IGlkPSJt
YWluIiBvbmxvYWQ9InJ1blRlc3RzKCkiPgorPGRpdiBpZD0ibmF2YmFyIiAgc3R5bGU9Ii13ZWJr
aXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDBweCk7Ij4KKyAgICA8aWZyYW1lIGlkPSJuYXYtZnJh
bWUiIHNyYz0icmVzb3VyY2VzL2lubmVyLW5hdmlnYXRpb24tZnJhbWUuaHRtbCI+PC9pZnJhbWU+
Cis8L2Rpdj4KKzxkaXYgaWQ9ImNvbnRlbnQtcGFnZSI+CisgICAgPGlmcmFtZSBpZD0iY29udGVu
dC1mcmFtZSIgc3JjPSJyZXNvdXJjZXMvaW5uZXItY29udGVudC1wYWdlLmh0bWwiPjwvaWZyYW1l
PgorPC9kaXY+CisKKzxwIGlkPSdkZXNjcmlwdGlvbic+PC9wPgorPGRpdiBpZD0nY29uc29sZSc+
PC9kaXY+CisKKzxzY3JpcHQ+IAorICAgIHZhciBpdGVtSGVpZ2h0ID0gMzI7CisgICAgdmFyIGJv
cmRlck9mZnNldCA9IDk1OworICAgIHZhciBjaGVja2JveE9mZnNldCA9IDE1OworICAgIHZhciBs
aW5rT2Zmc2V0ID0gLTE1OworICAgIHZhciBjaGVja2JveE9mZnNldEluZGlyZWN0ID0gNTsKKyAg
ICB2YXIgbGlua09mZnNldEluZGlyZWN0ID0gLTU7CisgICAgdmFyIHRvdWNoUmFkaXVzID0gMzA7
CisKKyAgICBmdW5jdGlvbiB0ZXN0Um91bmRUb3VjaCh4LCB5LCByYWRpdXMpCisgICAgeworICAg
ICAgICB2YXIgeCA9IHggLSByYWRpdXM7CisgICAgICAgIHZhciB5ID0geSAtIHJhZGl1czsKKyAg
ICAgICAgdmFyIHdpZHRoID0gcmFkaXVzICogMjsKKyAgICAgICAgdmFyIGhlaWdodCA9IHJhZGl1
cyAqIDI7CisgICAgICAgIHZhciBhZGp1c3RlZE5vZGUgPSBpbnRlcm5hbHMudG91Y2hOb2RlQWRq
dXN0ZWRUb0Jlc3RDbGlja2FibGVOb2RlKHgsIHksIHdpZHRoLCBoZWlnaHQsIGRvY3VtZW50KTsK
KyAgICAgICAgaWYgKGFkanVzdGVkTm9kZS5ub2RlVHlwZSA9PSAzKSAvLyBURVhUIG5vZGUKKyAg
ICAgICAgICAgIGFkanVzdGVkTm9kZSA9IGFkanVzdGVkTm9kZS5wYXJlbnROb2RlOworICAgICAg
ICByZXR1cm4gYWRqdXN0ZWROb2RlOworICAgIH0KKyAgICBmdW5jdGlvbiB0ZXN0RGlyZWN0VG91
Y2hlcygpCisgICAgeworICAgICAgICBkZWJ1ZygnVGVzdCBkaXJlY3QgdG91Y2hlcy4nKTsKKyAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspIHsKKyAgICAgICAgICAgIGFkanVzdGVk
Tm9kZSA9IHRlc3RSb3VuZFRvdWNoKGJvcmRlck9mZnNldCArIGNoZWNrYm94T2Zmc2V0LCAoaSAr
IDAuNSkgKiBpdGVtSGVpZ2h0LCB0b3VjaFJhZGl1cyk7CisgICAgICAgICAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoJ2FkanVzdGVkTm9kZS5pZCcsICdjaGVja2JveC0nICsgKGkgKyAxKSk7Cisg
ICAgICAgICAgICBhZGp1c3RlZE5vZGUgPSB0ZXN0Um91bmRUb3VjaChib3JkZXJPZmZzZXQgKyBs
aW5rT2Zmc2V0LCAoaSArIDAuNSkgKiBpdGVtSGVpZ2h0LCB0b3VjaFJhZGl1cyk7CisgICAgICAg
ICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2FkanVzdGVkTm9kZS5pZCcsICdidXR0b24tJyAr
IChpICsgMSkpOworICAgICAgICB9CisgICAgfQorICAgIGZ1bmN0aW9uIHRlc3RJbmRpcmVjdFRv
dWNoZXMoKSB7CisgICAgICAgICBkZWJ1ZygnVGVzdCBpbmRpcmVjdCB0b3VjaGVzLicpOworICAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspIHsKKyAgICAgICAgICAgIGFkanVzdGVk
Tm9kZSA9IHRlc3RSb3VuZFRvdWNoKGJvcmRlck9mZnNldCArIGNoZWNrYm94T2Zmc2V0SW5kaXJl
Y3QsIChpICsgMC41KSAqIGl0ZW1IZWlnaHQsIHRvdWNoUmFkaXVzKTsKKyAgICAgICAgICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygnYWRqdXN0ZWROb2RlLmlkJywgJ2NoZWNrYm94LScgKyAoaSAr
IDEpKTsKKyAgICAgICAgICAgIGFkanVzdGVkTm9kZSA9IHRlc3RSb3VuZFRvdWNoKGJvcmRlck9m
ZnNldCArIGxpbmtPZmZzZXRJbmRpcmVjdCwgKGkgKyAwLjUpICogaXRlbUhlaWdodCwgdG91Y2hS
YWRpdXMpOworICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdhZGp1c3RlZE5vZGUu
aWQnLCAnYnV0dG9uLScgKyAoaSArIDEpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0
aW9uIHJ1blRlc3RzKCkKKyAgICB7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3
aW5kb3cuaW50ZXJuYWxzICYmIGludGVybmFscy50b3VjaE5vZGVBZGp1c3RlZFRvQmVzdENsaWNr
YWJsZU5vZGUpIHsKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uKCdUZXN0IHRvdWNoLWFkanVzdG1l
bnQgYXQgdGhlIGJvdW5kYXJ5IG9mIGFuIDxpZnJhbWU+LiAgRW5zdXJlIHRoYXQgdG91Y2ggYWRq
dXN0bWVudCBwcm9wYWdhdGVzIGludG8gY2hpbGRyZW4gb2YgYW4gPGlmcmFtZT4uICBUZXN0IGV4
cGVjdGVkIHRvIGNvbnRhaW4gZmFpbHVyZXMgdW50aWwgYnVnIDk1MjA0IGlzIGZpeGVkLicpOwor
ICAgICAgICAgICAgdGVzdERpcmVjdFRvdWNoZXMoKTsKKyAgICAgICAgICAgIHRlc3RJbmRpcmVj
dFRvdWNoZXMoKTsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisgICAg
fQorICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9yZXNvdXJjZXMv
aW5uZXItY29udGVudC1wYWdlLmh0bWwgYi9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvcmVz
b3VyY2VzL2lubmVyLWNvbnRlbnQtcGFnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVhYzMyYmFkNjFhMDI1
ZTJjMTcwOGNlNzRjNTRjNWYzM2YwYzhjOGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy90b3VjaGFkanVzdG1lbnQvcmVzb3VyY2VzL2lubmVyLWNvbnRlbnQtcGFnZS5odG1sCkBAIC0w
LDAgKzEsMjQgQEAKKzwhRE9DVFlQRT0iaHRtbCI+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzdHls
ZT4KKyAgICAgICAgYm9keSB7CisgICAgICAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTsKKyAgICAg
ICAgICAgIHBhZGRpbmc6IDA7CisgICAgICAgICAgICBtYXJnaW46IDA7CisgICAgICAgIH0KKwor
ICAgICAgICBsYWJlbCB7CisgICAgICAgICAgICBkaXNwbGF5OiBibG9jazsKKyAgICAgICAgICAg
IGxpbmUtaGVpZ2h0OiAyMnB4OworICAgICAgICAgICAgbWFyZ2luOiA1cHg7CisgICAgICAgIH0K
KyAgICA8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8bGFiZWw+PGlucHV0IGlkPSJjaGVja2Jv
eC0xIiB0eXBlPSJjaGVja2JveCI+Q2hlY2tib3ggMTwvbGFiZWw+Cis8bGFiZWw+PGlucHV0IGlk
PSJjaGVja2JveC0yIiB0eXBlPSJjaGVja2JveCI+Q2hlY2tib3ggMjwvbGFiZWw+Cis8bGFiZWw+
PGlucHV0IGlkPSJjaGVja2JveC0zIiB0eXBlPSJjaGVja2JveCI+Q2hlY2tib3ggMzwvbGFiZWw+
Cis8bGFiZWw+PGlucHV0IGlkPSJjaGVja2JveC00IiB0eXBlPSJjaGVja2JveCI+Q2hlY2tib3gg
NDwvbGFiZWw+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90b3Vj
aGFkanVzdG1lbnQvcmVzb3VyY2VzL2lubmVyLW5hdmlnYXRpb24tZnJhbWUuaHRtbCBiL0xheW91
dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9yZXNvdXJjZXMvaW5uZXItbmF2aWdhdGlvbi1mcmFtZS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjMzZGMxM2FhODQwYmVmYmMyY2FhYjk5YjEzNTU4OGY5ODAyMjgxNTAK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvcmVzb3VyY2Vz
L2lubmVyLW5hdmlnYXRpb24tZnJhbWUuaHRtbApAQCAtMCwwICsxLDMyIEBACis8IURPQ1RZUEU9
Imh0bWwiPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c3R5bGU+CisgICAgICAgIGJvZHkgeworICAg
ICAgICAgICAgcGFkZGluZzogMDsKKyAgICAgICAgICAgIG1hcmdpbjogMDsKKyAgICAgICAgfQor
CisgICAgICAgIGRpdi5idXR0b24geworICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7CisgICAg
ICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CisgICAgICAgICAgICBsaW5lLWhlaWdodDogMThw
eDsKKyAgICAgICAgICAgIG1hcmdpbjogNXB4OworICAgICAgICAgICAgd2lkdGg6IDg1cHg7Cisg
ICAgICAgICAgICBwYWRkaW5nOiA0cHg7CisgICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCBi
bGFjazsKKyAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDsKKyAgICAgICAgfQorICAgIDwv
c3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CisgICAgZnVuY3Rpb24gb25DbGljaygp
IHsKKyAgICB9Cis8L3NjcmlwdD4KKzxkaXYgY2xhc3M9ImJ1dHRvbiIgaWQ9ImJ1dHRvbi0xIiBv
bmNsaWNrPW9uQ2xpY2s+QnV0dG9uIDE8L2Rpdj4KKzxkaXYgY2xhc3M9ImJ1dHRvbiIgaWQ9ImJ1
dHRvbi0yIiBvbmNsaWNrPW9uQ2xpY2s+QnV0dG9uIDI8L2Rpdj4KKzxkaXYgY2xhc3M9ImJ1dHRv
biIgaWQ9ImJ1dHRvbi0zIiBvbmNsaWNrPW9uQ2xpY2s+QnV0dG9uIDM8L2Rpdj4KKzxkaXYgY2xh
c3M9ImJ1dHRvbiIgaWQ9ImJ1dHRvbi00IiBvbmNsaWNrPW9uQ2xpY2s+QnV0dG9uIDQ8L2Rpdj4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRl
eCA4ZTJmZGUzMjY1OGU2OGI1NGQ4MGRlYjhiZmM4NGM0MzdhYjE3ZTgwLi41M2VjNWUzMjUxOTc2
NWIyY2M3NzRkYmZhM2E4MTZkNjgyZTkzYTdiIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDktMDMgIEFsbGFuIFNhbmRmZWxkIEpl
bnNlbiAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+CisKKyAgICAgICAgQWxsb3cgY2hpbGQtZnJh
bWUgY29udGVudCBpbiBoaXQtdGVzdHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05NTIwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFVwZGF0ZSBleHBvcnRlZCBzeW1ib2xzLgorCisgICAgICAgICogU291
cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcjoKKwogMjAxMi0wOS0wMyAgSmlud29vIFNvbmcg
IDxqaW53b283LnNvbmdAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF0gVXNlIFdlYktpdFZl
cnNpb24uaCB0byBnZXQgdmVyc2lvbiBpbmZvcm1hdGlvbgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161988</attachid>
            <date>2012-09-04 01:43:55 -0700</date>
            <delta_ts>2012-12-13 06:43:03 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-95204-20120904104329.patch</filename>
            <type>text/plain</type>
            <size>39414</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NDIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGMwOGJmYmEzYzQyZGJk
YWNhZTUwMDg2ZGQ5OTVjZDcyOTIyYWFkMS4uMTc4ZGMwNjhkYjMzMDZlOWIwMzcyYzY4Njk1MDVl
MjU2ODk4NDJiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ0IEBACiAyMDEyLTA5LTAzICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgogCisgICAgICAgIEFs
bG93IGNoaWxkLWZyYW1lIGNvbnRlbnQgaW4gaGl0LXRlc3RzLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUyMDQKKworICAgICAgICBSZXZpZXdlZCBi
eSBBbnRvbmlvIEdvbWVzLgorCisgICAgICAgIFJlZmFjdG9ycyBob3cgRXZlbnRIYW5kbGVyOjpo
aXRUZXN0UmVzdWx0QXRQb2ludCBoYW5kbGVzIGNoaWxkLWZyYW1lIGNvbnRlbnQsCisgICAgICAg
IGl0IGlzIG5vdyBoYW5kbGVkIGJ5IHRoZSBoaXQgdGVzdCBpdHNlbGYgY29udHJvbGxlZCBieSB0
aGUgQWxsb3dDaGlsZEZyYW1lQ29udGVudAorICAgICAgICBmbGFnIGluIEhpdFRlc3RSZXF1ZXN0
LgorCisgICAgICAgIFRlc3RzOiBmYXN0L2RvbS9ub2Rlc0Zyb21SZWN0L25vZGVzRnJvbVJlY3Qt
Y2hpbGQtZnJhbWUtY29udGVudC5odG1sCisgICAgICAgICAgICAgICB0b3VjaGFkanVzdG1lbnQv
aWZyYW1lLWJvdW5kYXJ5Lmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAg
ICAqIFdlYkNvcmUub3JkZXI6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50Ojpub2Rlc0Zyb21SZWN0KToKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuaDoKKyAgICAgICAgKERvY3VtZW50KToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhpdFRlc3RSZXN1bHRBdFBvaW50
KToKKyAgICAgICAgKiByZW5kZXJpbmcvSGl0VGVzdFJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkhpdFRlc3RSZXF1ZXN0OjphbGxvd0NoaWxkRnJhbWVDb250ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkhpdFRlc3RSZXF1ZXN0OjpjaGlsZEZyYW1lSGl0VGVzdCk6CisgICAgICAgIChXZWJD
b3JlOjpIaXRUZXN0UmVxdWVzdDo6dGVzdENoaWxkRnJhbWVTY3JvbGxCYXJzKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckZyYW1lQmFzZTo6bm9kZUF0UG9pbnQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5oOgorICAgICAgICAoUmVuZGVyRnJhbWVCYXNlKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXI6OmhpdFRlc3QpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6bm9kZXNGcm9tUmVjdCk6CisgICAgICAgICog
dGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKEludGVybmFscyk6CisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbHMuaWRsOgorCisyMDEyLTA5LTAzICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4g
IDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgorCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4
IGFmdGVyIHIxMjc0MjEKIAogICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcDoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAzMzQ5NzNhODUwYWM0NzQ3ZjI0NDk1ZWQ1NzI3YjZmZDMzOGYxNjE3Li5k
YmI0YzJlNTQ3YWI2NTgyNjVjOGYxZjA4ODk0OTQ4ZGEzMDMyOWFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMTItMDktMDMgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmpl
bnNlbkBub2tpYS5jb20+CisKKyAgICAgICAgQWxsb3cgY2hpbGQtZnJhbWUgY29udGVudCBpbiBo
aXQtdGVzdHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05NTIwNAorCisgICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCisKKyAgICAgICAg
VXBkYXRlIHN5bWJvbHMgZm9yIHRoZSBXaW5kb3dzIGJ1aWxkLXN5c3RlbS4KKworICAgICAgICAq
IHdpbi9XZWJLaXQyLmRlZjoKKyAgICAgICAgKiB3aW4vV2ViS2l0MkNGTGl0ZS5kZWY6CisKIDIw
MTItMDktMDMgIEV1bm1pIExlZSAgPGV1bm1pMTUubGVlQHNhbXN1bmcuY29tPgogCiAgICAgICAg
IFtFRkxdW1dLMl0gQWRkIGV3a19zZXR0aW5ncy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggYjU3
N2U2ZjQ5ZWE0OTI1YmYyYjgzNmViZGQzNTk0YWM1Nzk0NjJjMi4uYmFlMzNmN2RhOTUyZmViNTky
MWQ2MWI4ZWE0NmYwY2MwMmU5OWRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTEzNTMsNyAr
MTM1Myw3IEBAIF9fWk5LN1dlYkNvcmU3UnVuTG9vcDlUaW1lckJhc2U4aXNBY3RpdmVFdgogX19a
Tks3V2ViQ29yZThEb2N1bWVudDEwcmVuZGVyVmlld0V2CiBfX1pOSzdXZWJDb3JlOERvY3VtZW50
MTFjb21wbGV0ZVVSTEVSS04zV1RGNlN0cmluZ0UKIF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQxM2F4
T2JqZWN0Q2FjaGVFdgotX19aTks3V2ViQ29yZThEb2N1bWVudDEzbm9kZXNGcm9tUmVjdEVpaWpq
ampiYgorX19aTks3V2ViQ29yZThEb2N1bWVudDEzbm9kZXNGcm9tUmVjdEVpaWpqampiYmIKIF9f
Wk5LN1dlYkNvcmU4RG9jdW1lbnQxNGdldEVsZW1lbnRCeUlkRVJLTjNXVEYxMkF0b21pY1N0cmlu
Z0UKIF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQzMWRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2Rp
bmdFUktOM1dURjZTdHJpbmdFCiBfX1pOSzdXZWJDb3JlOERvY3VtZW50NGJvZHlFdgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlciBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUub3JkZXIKaW5kZXggMGIyYjE3NTgzY2I3MDYwNzliNzMyMjg3ZDI4ZmYyNDJjYjM1ZDNmYy4u
MzVhYmZlNjM1YjkzZGE0NGI0NzI1YTU0ZmIyMjNkMTgxNjczOGMxYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9y
ZGVyCkBAIC0yMjc4NSw3ICsyMjc4NSw3IEBAIF9fWk5LN1dlYkNvcmUxMk5vZGVJdGVyYXRvcjIw
dXBkYXRlRm9yTm9kZVJlbW92YWxFUE5TXzROb2RlRVJOUzBfMTFOb2RlUG9pbnRlckUKIF9fWk43
V2ViQ29yZTI3anNOb2RlSXRlcmF0b3JSZWZlcmVuY2VOb2RlRVBOM0pTQzlFeGVjU3RhdGVFTlMw
XzdKU1ZhbHVlRVJLTlMwXzEwSWRlbnRpZmllckUKIF9fWk5LN1dlYkNvcmU0Tm9kZTIwdHJhdmVy
c2VQcmV2aW91c05vZGVFUEtTMF8KIF9fWk43V2ViQ29yZTM3anNOb2RlSXRlcmF0b3JQcm90b3R5
cGVGdW5jdGlvbkRldGFjaEVQTjNKU0M5RXhlY1N0YXRlRQotX19aTks3V2ViQ29yZThEb2N1bWVu
dDEzbm9kZXNGcm9tUmVjdEVpaWpqampiCitfX1pOSzdXZWJDb3JlOERvY3VtZW50MTNub2Rlc0Zy
b21SZWN0RWlpampqamJiYgogX19aTks3V2ViQ29yZThEb2N1bWVudDE3aGFuZGxlWmVyb1BhZGRp
bmdFUktOU18xNEhpdFRlc3RSZXF1ZXN0RVJOU18xM0hpdFRlc3RSZXN1bHRFCiBfX1pOM1dURjIx
TGlzdEhhc2hTZXRUcmFuc2xhdG9ySU5TXzZSZWZQdHJJTjdXZWJDb3JlNE5vZGVFRUVMbTI1NkVO
U183UHRySGFzaElTNF9FRUU5dHJhbnNsYXRlRVJQTlNfMTVMaXN0SGFzaFNldE5vZGVJUzRfTG0y
NTZFRUVSS1M0X1BOU18yNExpc3RIYXNoU2V0Tm9kZUFsbG9jYXRvcklTNF9MbTI1NkVFRQogX19a
TjdXZWJDb3JlMjFTdGF0aWNIYXNoU2V0Tm9kZUxpc3RDMUVSTjNXVEYxMUxpc3RIYXNoU2V0SU5T
MV82UmVmUHRySU5TXzROb2RlRUVFTG0yNTZFTlMxXzdQdHJIYXNoSVM1X0VFRUUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCmluZGV4IDEzZDBhZTIwOTg2NTM4MGE0NzUyZGE0YTFlNTBkY2NkYTYyMThj
ZjAuLjkzMjZmZjQyNDMxNGQzZTNmOGNmYTk0NTk5YWRhOGM5YTcxZTk5MWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcApAQCAtMTM4NCw3ICsxMzg0LDcgQEAgU3RyaW5nIERvY3VtZW50OjpzdWdn
ZXN0ZWRNSU1FVHlwZSgpIGNvbnN0CiAvLyAqIG1ha2luZyBpdCByZWNlaXZlIGEgcmVjdCBhcyBw
YXJhbWV0ZXIsIGkuZS4gbm9kZXNGcm9tUmVjdCh4LCB5LCB3LCBoKTsKIC8vICogbWFraW5nIGl0
IHJlY2VpdmUgdGhlIGV4cGFkaW5nIHNpemUgb2YgZWFjaCBkaXJlY3Rpb24gc2VwYXJhdGVseSwK
IC8vICAgaS5lLiBub2Rlc0Zyb21SZWN0KHgsIHksIHRvcFNpemUsIHJpZ2h0U2l6ZSwgYm90dG9t
U2l6ZSwgbGVmdFNpemUpOwotUGFzc1JlZlB0cjxOb2RlTGlzdD4gRG9jdW1lbnQ6Om5vZGVzRnJv
bVJlY3QoaW50IGNlbnRlclgsIGludCBjZW50ZXJZLCB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNp
Z25lZCByaWdodFBhZGRpbmcsIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQ
YWRkaW5nLCBib29sIGlnbm9yZUNsaXBwaW5nLCBib29sIGFsbG93U2hhZG93Q29udGVudCkgY29u
c3QKK1Bhc3NSZWZQdHI8Tm9kZUxpc3Q+IERvY3VtZW50Ojpub2Rlc0Zyb21SZWN0KGludCBjZW50
ZXJYLCBpbnQgY2VudGVyWSwgdW5zaWduZWQgdG9wUGFkZGluZywgdW5zaWduZWQgcmlnaHRQYWRk
aW5nLCB1bnNpZ25lZCBib3R0b21QYWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGluZywgYm9vbCBp
Z25vcmVDbGlwcGluZywgYm9vbCBhbGxvd1NoYWRvd0NvbnRlbnQsIGJvb2wgYWxsb3dDaGlsZEZy
YW1lQ29udGVudCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogU2hhcmUgY29kZSBiZXR3ZWVuIHRo
aXMsIGVsZW1lbnRGcm9tUG9pbnQgYW5kIGNhcmV0UmFuZ2VGcm9tUG9pbnQuCiAgICAgaWYgKCFy
ZW5kZXJlcigpKQpAQCAtMTQwOCw2ICsxNDA4LDggQEAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gRG9j
dW1lbnQ6Om5vZGVzRnJvbVJlY3QoaW50IGNlbnRlclgsIGludCBjZW50ZXJZLCB1bnNpZ25lZAog
ICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoYWxsb3dTaGFkb3dDb250ZW50KQogICAgICAgICB0
eXBlIHw9IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd1NoYWRvd0NvbnRlbnQ7CisgICAgaWYgKGFsbG93
Q2hpbGRGcmFtZUNvbnRlbnQpCisgICAgICAgIHR5cGUgfD0gSGl0VGVzdFJlcXVlc3Q6OkFsbG93
Q2hpbGRGcmFtZUNvbnRlbnQ7CiAKICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KHR5cGUpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGI2NTVkY2UzYWQ4MzQwMmE2YjlhZjc2ZWM4ZTU3YzVm
NTFiMzY5NmEuLmFjN2FlOTUxYWE4MzM1NTUzMGFmNjQ0N2ExMDkwNDRhZjcxZDhiMWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCkBAIC0zNzUsOCArMzc1LDkgQEAgcHVibGljOgogICAgICAqIEBwYXJh
bSBpZ25vcmVDbGlwcGluZyB3aGV0aGVyIG9yIG5vdCB0byBpZ25vcmUgdGhlIHJvb3Qgc2Nyb2xs
IGZyYW1lIHdoZW4gcmV0cmlldmluZyB0aGUgZWxlbWVudC4KICAgICAgKiAgICAgICAgSWYgZmFs
c2UsIHRoaXMgbWV0aG9kIHJldHVybnMgbnVsbCBmb3IgY29vcmRpbmF0ZXMgb3V0c2lkZSBvZiB0
aGUgdmlld3BvcnQuCiAgICAgICovCi0gICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gbm9kZXNGcm9t
UmVjdChpbnQgY2VudGVyWCwgaW50IGNlbnRlclksIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2ln
bmVkIHJpZ2h0UGFkZGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nLCBib29sIGlnbm9y
ZUNsaXBwaW5nLCBib29sIGFsbG93U2hhZG93Q29udGVudCkgY29uc3Q7CisgICAgUGFzc1JlZlB0
cjxOb2RlTGlzdD4gbm9kZXNGcm9tUmVjdChpbnQgY2VudGVyWCwgaW50IGNlbnRlclksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1
bnNpZ25lZCByaWdodFBhZGRpbmcsIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxl
ZnRQYWRkaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBp
Z25vcmVDbGlwcGluZywgYm9vbCBhbGxvd1NoYWRvd0NvbnRlbnQsIGJvb2wgYWxsb3dDaGlsZEZy
YW1lQ29udGVudCA9IGZhbHNlKSBjb25zdDsKICAgICBFbGVtZW50KiBlbGVtZW50RnJvbVBvaW50
KGludCB4LCBpbnQgeSkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxSYW5nZT4gY2FyZXRSYW5nZUZy
b21Qb2ludChpbnQgeCwgaW50IHkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAK
aW5kZXggZGRkYjFlMGMxODU5Y2FkYTJkYzlhZTg2YmQwNzFlYjJlYjA5ZGVlNi4uMDAxZmQ2ZDll
OWUxMTYyOTVkMjBjNTA5MjMwMTkyN2EwNWQ3ZGY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcApAQCAtMTA0OSwzMyArMTA0OSwxMyBAQCBIaXRUZXN0UmVzdWx0IEV2ZW50SGFu
ZGxlcjo6aGl0VGVzdFJlc3VsdEF0UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBib29s
CiAgICAgICAgIGhpdFR5cGUgfD0gSGl0VGVzdFJlcXVlc3Q6Oklnbm9yZUNsaXBwaW5nOwogICAg
IGlmIChhbGxvd1NoYWRvd0NvbnRlbnQpCiAgICAgICAgIGhpdFR5cGUgfD0gSGl0VGVzdFJlcXVl
c3Q6OkFsbG93U2hhZG93Q29udGVudDsKKyAgICBpZiAodGVzdFNjcm9sbGJhcnMgPT0gU2hvdWxk
SGl0VGVzdFNjcm9sbGJhcnMpCisgICAgICAgIGhpdFR5cGUgfD0gSGl0VGVzdFJlcXVlc3Q6OlRl
c3RDaGlsZEZyYW1lU2Nyb2xsQmFyczsKKyAgICAvLyBXZSBhbHdheXMgbmVlZCB0byBoYW5kbGUg
Y2hpbGQgZnJhbWUgY29udGVudC4KKyAgICBoaXRUeXBlIHw9IEhpdFRlc3RSZXF1ZXN0OjpBbGxv
d0NoaWxkRnJhbWVDb250ZW50OworCiAgICAgbV9mcmFtZS0+Y29udGVudFJlbmRlcmVyKCktPmhp
dFRlc3QoSGl0VGVzdFJlcXVlc3QoaGl0VHlwZSksIHJlc3VsdCk7CiAKLSAgICB3aGlsZSAodHJ1
ZSkgewotICAgICAgICBOb2RlKiBuID0gcmVzdWx0LmlubmVyTm9kZSgpOwotICAgICAgICBpZiAo
IXJlc3VsdC5pc092ZXJXaWRnZXQoKSB8fCAhbiB8fCAhbi0+cmVuZGVyZXIoKSB8fCAhbi0+cmVu
ZGVyZXIoKS0+aXNXaWRnZXQoKSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBSZW5kZXJX
aWRnZXQqIHJlbmRlcldpZGdldCA9IHRvUmVuZGVyV2lkZ2V0KG4tPnJlbmRlcmVyKCkpOwotICAg
ICAgICBXaWRnZXQqIHdpZGdldCA9IHJlbmRlcldpZGdldC0+d2lkZ2V0KCk7Ci0gICAgICAgIGlm
ICghd2lkZ2V0IHx8ICF3aWRnZXQtPmlzRnJhbWVWaWV3KCkpCi0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgRnJhbWUqIGZyYW1lID0gc3RhdGljX2Nhc3Q8SFRNTEZyYW1lRWxlbWVudEJhc2Uq
PihuKS0+Y29udGVudEZyYW1lKCk7Ci0gICAgICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5jb250
ZW50UmVuZGVyZXIoKSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBGcmFtZVZpZXcqIHZp
ZXcgPSBzdGF0aWNfY2FzdDxGcmFtZVZpZXcqPih3aWRnZXQpOwotICAgICAgICBMYXlvdXRQb2lu
dCB3aWRnZXRQb2ludChyZXN1bHQubG9jYWxQb2ludCgpLngoKSArIHZpZXctPnNjcm9sbFgoKSAt
IHJlbmRlcldpZGdldC0+Ym9yZGVyTGVmdCgpIC0gcmVuZGVyV2lkZ2V0LT5wYWRkaW5nTGVmdCgp
LCAKLSAgICAgICAgICAgIHJlc3VsdC5sb2NhbFBvaW50KCkueSgpICsgdmlldy0+c2Nyb2xsWSgp
IC0gcmVuZGVyV2lkZ2V0LT5ib3JkZXJUb3AoKSAtIHJlbmRlcldpZGdldC0+cGFkZGluZ1RvcCgp
KTsKLSAgICAgICAgSGl0VGVzdFJlc3VsdCB3aWRnZXRIaXRUZXN0UmVzdWx0KHdpZGdldFBvaW50
LCBwYWRkaW5nLmhlaWdodCgpLCBwYWRkaW5nLndpZHRoKCksIHBhZGRpbmcuaGVpZ2h0KCksIHBh
ZGRpbmcud2lkdGgoKSk7Ci0gICAgICAgIGZyYW1lLT5jb250ZW50UmVuZGVyZXIoKS0+aGl0VGVz
dChIaXRUZXN0UmVxdWVzdChoaXRUeXBlKSwgd2lkZ2V0SGl0VGVzdFJlc3VsdCk7Ci0gICAgICAg
IHJlc3VsdCA9IHdpZGdldEhpdFRlc3RSZXN1bHQ7Ci0KLSAgICAgICAgaWYgKHRlc3RTY3JvbGxi
YXJzID09IFNob3VsZEhpdFRlc3RTY3JvbGxiYXJzKSB7Ci0gICAgICAgICAgICBTY3JvbGxiYXIq
IGV2ZW50U2Nyb2xsYmFyID0gdmlldy0+c2Nyb2xsYmFyQXRQb2ludChyb3VuZGVkSW50UG9pbnQo
cG9pbnQpKTsKLSAgICAgICAgICAgIGlmIChldmVudFNjcm9sbGJhcikKLSAgICAgICAgICAgICAg
ICByZXN1bHQuc2V0U2Nyb2xsYmFyKGV2ZW50U2Nyb2xsYmFyKTsKLSAgICAgICAgfQotICAgIH0K
LSAgICAKICAgICAvLyBJZiBvdXIgSGl0VGVzdFJlc3VsdCBpcyBub3QgdmlzaWJsZSwgdGhlbiB3
ZSBzdGFydGVkIGhpdCB0ZXN0aW5nIHRvbyBmYXIgZG93biB0aGUgZnJhbWUgY2hhaW4uIAogICAg
IC8vIEFub3RoZXIgaGl0IHRlc3QgYXQgdGhlIG1haW4gZnJhbWUgbGV2ZWwgc2hvdWxkIGdldCB1
cyB0aGUgY29ycmVjdCB2aXNpYmxlIHJlc3VsdC4KICAgICBGcmFtZSogcmVzdWx0RnJhbWUgPSBy
ZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCkgPyByZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCkt
PmRvY3VtZW50KCktPmZyYW1lKCkgOiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0hpdFRlc3RSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVz
dFJlcXVlc3QuaAppbmRleCBkOTM3YzI1MDQ2OTM5NmI3NGI3NDRlMmQyMDAzNjRhOWQ3YjA0MTcw
Li4zZmFmODhhOWY5MTM3NjFlYzAxM2Q2ZTdkMmNkZGFmMzJmODRkNzlmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlcXVlc3QuaApAQCAtMzUsNyArMzUsMTAgQEAgcHVibGlj
OgogICAgICAgICBJZ25vcmVDbGlwcGluZyA9IDEgPDwgNSwKICAgICAgICAgU1ZHQ2xpcENvbnRl
bnQgPSAxIDw8IDYsCiAgICAgICAgIFRvdWNoRXZlbnQgPSAxIDw8IDcsCi0gICAgICAgIEFsbG93
U2hhZG93Q29udGVudCA9IDEgPDwgOAorICAgICAgICBBbGxvd1NoYWRvd0NvbnRlbnQgPSAxIDw8
IDgsCisgICAgICAgIEFsbG93Q2hpbGRGcmFtZUNvbnRlbnQgPSAxIDw8IDksCisgICAgICAgIENo
aWxkRnJhbWVIaXRUZXN0ID0gMSA8PCAxMCwKKyAgICAgICAgVGVzdENoaWxkRnJhbWVTY3JvbGxC
YXJzID0gMSA8PCAxMQogICAgIH07CiAKICAgICB0eXBlZGVmIHVuc2lnbmVkIEhpdFRlc3RSZXF1
ZXN0VHlwZTsKQEAgLTU0LDYgKzU3LDkgQEAgcHVibGljOgogICAgIGJvb2wgdG91Y2hFdmVudCgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdFR5cGUgJiBUb3VjaEV2ZW50OyB9CiAgICAgYm9vbCBt
b3VzZUV2ZW50KCkgY29uc3QgeyByZXR1cm4gIXRvdWNoRXZlbnQoKTsgfQogICAgIGJvb2wgYWxs
b3dzU2hhZG93Q29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdFR5cGUgJiBBbGxvd1No
YWRvd0NvbnRlbnQ7IH0KKyAgICBib29sIGFsbG93c0NoaWxkRnJhbWVDb250ZW50KCkgY29uc3Qg
eyByZXR1cm4gbV9yZXF1ZXN0VHlwZSAmIEFsbG93Q2hpbGRGcmFtZUNvbnRlbnQ7IH0KKyAgICBi
b29sIGlzQ2hpbGRGcmFtZUhpdFRlc3QoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RUeXBlICYg
Q2hpbGRGcmFtZUhpdFRlc3Q7IH0KKyAgICBib29sIHNob3VsZFRlc3RDaGlsZEZyYW1lU2Nyb2xs
QmFycygpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdFR5cGUgJiBUZXN0Q2hpbGRGcmFtZVNjcm9s
bEJhcnM7IH0KIAogICAgIC8vIENvbnZlbmllbmNlIGZ1bmN0aW9ucwogICAgIGJvb2wgdG91Y2hN
b3ZlKCkgY29uc3QgeyByZXR1cm4gbW92ZSgpICYmIHRvdWNoRXZlbnQoKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCmluZGV4IGNjMzkwNTY4Y2UwMjk4NmQy
MGJiYjFjZmZjMTAxM2JlMDllZjNjYTMuLjgwNjNjODEyZWExNmVmY2ZjMWE1ZWE0YmVhMTE3NGZj
MDI4YTgzYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVz
dWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAK
QEAgLTEwNCw3ICsxMDQsNyBAQCBIaXRUZXN0TG9jYXRpb246OkhpdFRlc3RMb2NhdGlvbihjb25z
dCBIaXRUZXN0TG9jYXRpb24mIG90aGVyLCBjb25zdCBMYXlvdXRTaXplJgogICAgICwgbV9ib3Vu
ZGluZ0JveChvdGhlci5tX2JvdW5kaW5nQm94KQogICAgICwgbV90cmFuc2Zvcm1lZFBvaW50KG90
aGVyLm1fdHJhbnNmb3JtZWRQb2ludCkKICAgICAsIG1fdHJhbnNmb3JtZWRSZWN0KG90aGVyLm1f
dHJhbnNmb3JtZWRSZWN0KQotICAgICwgbV9yZWdpb24ocmVnaW9uKQorICAgICwgbV9yZWdpb24o
cmVnaW9uID8gcmVnaW9uIDogb3RoZXIubV9yZWdpb24pCiAgICAgLCBtX2lzUmVjdEJhc2VkKG90
aGVyLm1faXNSZWN0QmFzZWQpCiAgICAgLCBtX2lzUmVjdGlsaW5lYXIob3RoZXIubV9pc1JlY3Rp
bGluZWFyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RS
ZXN1bHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKaW5kZXgg
OTEyOWVlZDQ0MTFhMDAwNTAzMTA5ZjYxNDNiMWRiNTNkZjJmMjAwYy4uYmFjOTZhMmIxZjkyYTY1
NTU4Y2ZlYjM3MWIwYTJhMmY3YmE1MzM3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0hpdFRlc3RSZXN1bHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0
VGVzdFJlc3VsdC5oCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICAvLyBQYXNzIG5vbi16
ZXJvIHBhZGRpbmcgdmFsdWVzIHRvIHBlcmZvcm0gYSByZWN0LWJhc2VkIGhpdCB0ZXN0LgogICAg
IEhpdFRlc3RMb2NhdGlvbihjb25zdCBMYXlvdXRQb2ludCYgY2VudGVyUG9pbnQsIHVuc2lnbmVk
IHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFkZGluZywgdW5zaWduZWQgYm90dG9tUGFkZGlu
ZywgdW5zaWduZWQgbGVmdFBhZGRpbmcpOwogICAgIC8vIE1ha2UgYSBjb3B5IHRoZSBIaXRUZXN0
TG9jYXRpb24gaW4gYSBuZXcgcmVnaW9uIGJ5IGFwcGx5aW5nIGdpdmVuIG9mZnNldCB0byBpbnRl
cm5hbCBwb2ludCBhbmQgYXJlYS4KLSAgICBIaXRUZXN0TG9jYXRpb24oY29uc3QgSGl0VGVzdExv
Y2F0aW9uJiwgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0LCBSZW5kZXJSZWdpb24qKTsKKyAgICBI
aXRUZXN0TG9jYXRpb24oY29uc3QgSGl0VGVzdExvY2F0aW9uJiwgY29uc3QgTGF5b3V0U2l6ZSYg
b2Zmc2V0LCBSZW5kZXJSZWdpb24qID0gMCk7CiAgICAgSGl0VGVzdExvY2F0aW9uKGNvbnN0IEhp
dFRlc3RMb2NhdGlvbiYpOwogICAgIH5IaXRUZXN0TG9jYXRpb24oKTsKICAgICBIaXRUZXN0TG9j
YXRpb24mIG9wZXJhdG9yPShjb25zdCBIaXRUZXN0TG9jYXRpb24mKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5jcHAKaW5kZXggYWE4Mjg3MGQ0ZWZhOGFkYmM4
MTk2ZmRkNmE1MDZmNTk4Y2IwNzUzNy4uYmU5MmMwZmE4NWY3OWRlNzZkY2MxN2M3NDE3OGJjYjM1
ZmUxYzY4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1l
QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5j
cHAKQEAgLTI5LDYgKzI5LDggQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1l
Vmlldy5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZUVsZW1lbnRCYXNlLmgiCisjaW5jbHVkZSAiSGl0
VGVzdFJlc3VsdC5oIgorI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSAiUmVuZGVy
Vmlldy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMDQsNCArMTA2LDMzIEBAIHZvaWQg
UmVuZGVyRnJhbWVCYXNlOjpsYXlvdXRXaXRoRmxhdHRlbmluZyhib29sIGhhc0ZpeGVkV2lkdGgs
IGJvb2wgaGFzRml4ZWRIZWlnCiAgICAgc2V0TmVlZHNMYXlvdXQoZmFsc2UpOwogfQogCitib29s
IFJlbmRlckZyYW1lQmFzZTo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVl
c3QsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlv
bkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRl
c3RBY3Rpb24gYWN0aW9uKQoreworICAgIGlmIChyZXF1ZXN0LmFsbG93c0NoaWxkRnJhbWVDb250
ZW50KCkpIHsKKyAgICAgICAgRnJhbWVWaWV3KiBjaGlsZEZyYW1lVmlldyA9IHN0YXRpY19jYXN0
PEZyYW1lVmlldyo+KHdpZGdldCgpKTsKKyAgICAgICAgUmVuZGVyVmlldyogY2hpbGRSb290ID0g
Y2hpbGRGcmFtZVZpZXcgPyBzdGF0aWNfY2FzdDxSZW5kZXJWaWV3Kj4oY2hpbGRGcmFtZVZpZXct
PmZyYW1lKCktPmNvbnRlbnRSZW5kZXJlcigpKSA6IDA7CisKKyAgICAgICAgaWYgKGNoaWxkUm9v
dCkgeworICAgICAgICAgICAgTGF5b3V0UG9pbnQgYWRqdXN0ZWRMb2NhdGlvbiA9IGFjY3VtdWxh
dGVkT2Zmc2V0ICsgbG9jYXRpb24oKTsKKyAgICAgICAgICAgIEhpdFRlc3RMb2NhdGlvbiBuZXdI
aXRUZXN0TG9jYXRpb24obG9jYXRpb25JbkNvbnRhaW5lciwgLXRvTGF5b3V0U2l6ZShhZGp1c3Rl
ZExvY2F0aW9uKSk7CisgICAgICAgICAgICBIaXRUZXN0UmVxdWVzdCBuZXdIaXRUZXN0UmVxdWVz
dChyZXF1ZXN0LnR5cGUoKSB8IEhpdFRlc3RSZXF1ZXN0OjpDaGlsZEZyYW1lSGl0VGVzdCk7CisK
KyAgICAgICAgICAgIGJvb2wgaXNJbnNpZGVDaGlsZEZyYW1lID0gY2hpbGRSb290LT5sYXllcigp
LT5oaXRUZXN0KG5ld0hpdFRlc3RSZXF1ZXN0LCBuZXdIaXRUZXN0TG9jYXRpb24sIHJlc3VsdCk7
CisgICAgICAgICAgICBpZiAoaXNJbnNpZGVDaGlsZEZyYW1lKQorICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOworCisgICAgICAgICAgICBpZiAocmVxdWVzdC5zaG91bGRUZXN0Q2hpbGRGcmFt
ZVNjcm9sbEJhcnMoKSkgeworICAgICAgICAgICAgICAgIC8vIFNjcm9sbFZpZXcgc2Nyb2xsYmFy
cyBhcmUgbm90IHRoZSBzYW1lIGFzIFJlbmRlckxheWVyIHNjcm9sbGJhcnMgdGVzdGVkIGJ5IFJl
bmRlckxheWVyOjpoaXRUZXN0T3ZlcmZsb3dDb250cm9scywKKyAgICAgICAgICAgICAgICAvLyBz
byB3ZSBuZWVkIHRvIHRlc3QgU2Nyb2xsVmlldyBzY3JvbGxiYXJzIHNlcGFyYXRlbHkgaGVyZS4K
KyAgICAgICAgICAgICAgICAvLyBGSVhNRTogQ29uc2lkZXIgaWYgdGhpcyB0ZXN0IGNvdWxkIGJl
IGRvbmUgdW5jb25kaXRpb25hbGx5LgorICAgICAgICAgICAgICAgIFNjcm9sbGJhciogZnJhbWVT
Y3JvbGxiYXIgPSBjaGlsZEZyYW1lVmlldy0+c2Nyb2xsYmFyQXRQb2ludChuZXdIaXRUZXN0TG9j
YXRpb24ucm91bmRlZFBvaW50KCkpOworICAgICAgICAgICAgICAgIGlmIChmcmFtZVNjcm9sbGJh
cikKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnNldFNjcm9sbGJhcihmcmFtZVNjcm9sbGJh
cik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gUmVuZGVy
UGFydDo6bm9kZUF0UG9pbnQocmVxdWVzdCwgcmVzdWx0LCBsb2NhdGlvbkluQ29udGFpbmVyLCBh
Y2N1bXVsYXRlZE9mZnNldCwgYWN0aW9uKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZyYW1lQmFzZS5oCmluZGV4IDRmYWQ1NjBjNWIzMzdmOTZiODEzYjBjYjc5MDU0
NTM2MmRjNjY4N2MuLmE3ZGVlZGFiMTAyODNkZjY5NTQxOGVkZTBmYmI5NGQ0OWUxMmU0OTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmgKQEAgLTM2LDYgKzM2
LDcgQEAgcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFJlbmRlckZyYW1lQmFzZShFbGVtZW50Kik7
CiAKIHB1YmxpYzoKKyAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJl
cXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbklu
Q29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RB
Y3Rpb24pIE9WRVJSSURFOwogICAgIHZvaWQgbGF5b3V0V2l0aEZsYXR0ZW5pbmcoYm9vbCBmaXhl
ZFdpZHRoLCBib29sIGZpeGVkSGVpZ2h0KTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwCmluZGV4IDQxN2Q3OTU5NWExMmQxNWE4N2IyMjg5Yjc4OThmYjllNDMz
NWNlNWQuLmJkYmMzZjU5MWU4MDhmODA4NDUyMzdkN2EwYWIwMDc5YzdkZmJlNTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtMzQ2MSw3ICszNDYxLDcgQEAg
Ym9vbCBSZW5kZXJMYXllcjo6aGl0VGVzdChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgSGl0VGVzdExvY2F0aW9uJgogICAgICAgICAvLyBXZSBkaWRuJ3QgaGl0IGFueSBsYXll
ci4gSWYgd2UgYXJlIHRoZSByb290IGxheWVyIGFuZCB0aGUgbW91c2UgaXMgLS0gb3IganVzdCB3
YXMgLS0gZG93biwgCiAgICAgICAgIC8vIHJldHVybiBvdXJzZWx2ZXMuIFdlIGRvIHRoaXMgc28g
bW91c2UgZXZlbnRzIGNvbnRpbnVlIGdldHRpbmcgZGVsaXZlcmVkIGFmdGVyIGEgZHJhZyBoYXMg
CiAgICAgICAgIC8vIGV4aXRlZCB0aGUgV2ViVmlldywgYW5kIHNvIGhpdCB0ZXN0aW5nIG92ZXIg
YSBzY3JvbGxiYXIgaGl0cyB0aGUgY29udGVudCBkb2N1bWVudC4KLSAgICAgICAgaWYgKChyZXF1
ZXN0LmFjdGl2ZSgpIHx8IHJlcXVlc3QucmVsZWFzZSgpKSAmJiBpc1Jvb3RMYXllcigpKSB7Cisg
ICAgICAgIGlmICghcmVxdWVzdC5pc0NoaWxkRnJhbWVIaXRUZXN0KCkgJiYgKHJlcXVlc3QuYWN0
aXZlKCkgfHwgcmVxdWVzdC5yZWxlYXNlKCkpICYmIGlzUm9vdExheWVyKCkpIHsKICAgICAgICAg
ICAgIHJlbmRlcmVyKCktPnVwZGF0ZUhpdFRlc3RSZXN1bHQocmVzdWx0LCB0b1JlbmRlclZpZXco
cmVuZGVyZXIoKSktPmZsaXBGb3JXcml0aW5nTW9kZShyZXN1bHQucG9pbnQoKSkpOwogICAgICAg
ICAgICAgaW5zaWRlTGF5ZXIgPSB0aGlzOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAKaW5kZXggYzAxNGFkYzc0ZmRmNTdhY2RlYWM5NzgwYjA3ZTBhNzFmMTJkMzI0
ZC4uZDAzZjAzYzBiYzU2MTllMjQzMmU3ZDhkNjY0OGUzOGUxMGU3ZTVlYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtOTY2LDE0ICs5NjYsMTQgQEAgdW5zaWduZWQgSW50
ZXJuYWxzOjp0b3VjaEV2ZW50SGFuZGxlckNvdW50KERvY3VtZW50KiBkb2N1bWVudCwgRXhjZXB0
aW9uQ29kZSYgZWMKIH0KIAogUGFzc1JlZlB0cjxOb2RlTGlzdD4gSW50ZXJuYWxzOjpub2Rlc0Zy
b21SZWN0KERvY3VtZW50KiBkb2N1bWVudCwgaW50IHgsIGludCB5LCB1bnNpZ25lZCB0b3BQYWRk
aW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcsCi0gICAgdW5zaWduZWQgYm90dG9tUGFkZGluZywg
dW5zaWduZWQgbGVmdFBhZGRpbmcsIGJvb2wgaWdub3JlQ2xpcHBpbmcsIGJvb2wgYWxsb3dTaGFk
b3dDb250ZW50LCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKKyAgICB1bnNpZ25lZCBib3R0b21Q
YWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGluZywgYm9vbCBpZ25vcmVDbGlwcGluZywgYm9vbCBh
bGxvd1NoYWRvd0NvbnRlbnQsIGJvb2wgYWxsb3dDaGlsZEZyYW1lQ29udGVudCwgRXhjZXB0aW9u
Q29kZSYgZWMpIGNvbnN0CiB7CiAgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPmZyYW1l
KCkgfHwgIWRvY3VtZW50LT5mcmFtZSgpLT52aWV3KCkpIHsKICAgICAgICAgZWMgPSBJTlZBTElE
X0FDQ0VTU19FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIHJldHVybiBkb2N1
bWVudC0+bm9kZXNGcm9tUmVjdCh4LCB5LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRv
bVBhZGRpbmcsIGxlZnRQYWRkaW5nLCBpZ25vcmVDbGlwcGluZywgYWxsb3dTaGFkb3dDb250ZW50
KTsKKyAgICByZXR1cm4gZG9jdW1lbnQtPm5vZGVzRnJvbVJlY3QoeCwgeSwgdG9wUGFkZGluZywg
cmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0UGFkZGluZywgaWdub3JlQ2xpcHBpbmcs
IGFsbG93U2hhZG93Q29udGVudCwgYWxsb3dDaGlsZEZyYW1lQ29udGVudCk7CiB9CiAKIHZvaWQg
SW50ZXJuYWxzOjplbWl0SW5zcGVjdG9yRGlkQmVnaW5GcmFtZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaAppbmRleCBiNzNiN2E4MDMyNjdlMDEyNzIwNzBhZGEwYmNlZjlkMzYwZWJhMWZj
Li4yYzdjODYwYTgwZDA1MTA3YmNmYzJmNTNhNjlmYzU3MDkyOTJlNTE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmgKQEAgLTE2MCw3ICsxNjAsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWdu
ZWQgdG91Y2hFdmVudEhhbmRsZXJDb3VudChEb2N1bWVudCosIEV4Y2VwdGlvbkNvZGUmKTsKIAog
ICAgIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IG5vZGVzRnJvbVJlY3QoRG9jdW1lbnQqLCBpbnQgeCwg
aW50IHksIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFkZGluZywKLSAgICAg
ICAgdW5zaWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcsIGJvb2wgaWdu
b3JlQ2xpcHBpbmcsIGJvb2wgYWxsb3dTaGFkb3dDb250ZW50LCBFeGNlcHRpb25Db2RlJikgY29u
c3Q7CisgICAgICAgIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5n
LCBib29sIGlnbm9yZUNsaXBwaW5nLCBib29sIGFsbG93U2hhZG93Q29udGVudCwgYm9vbCBhbGxv
d0NoaWxkRnJhbWVDb250ZW50LCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAKICAgICB2b2lkIGVt
aXRJbnNwZWN0b3JEaWRCZWdpbkZyYW1lKCk7CiAgICAgdm9pZCBlbWl0SW5zcGVjdG9yRGlkQ2Fu
Y2VsRnJhbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCBhZmRjNGEy
NGJiNDg0NGUyMTZiY2E5MWQ0MGY4MDM4MDQzZDFjMmNhLi43MDQ5ZWM4MGVkMGMzZTBmNzE0MDE4
NWFjMzE5ZTgxODhlYmI4Y2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBA
IC0xMzgsNyArMTM4LDcgQEAgbW9kdWxlIHdpbmRvdyB7CiAKICAgICAgICAgTm9kZUxpc3Qgbm9k
ZXNGcm9tUmVjdChpbiBEb2N1bWVudCBkb2N1bWVudCwgaW4gbG9uZyB4LCBpbiBsb25nIHksCiAg
ICAgICAgICAgICBpbiB1bnNpZ25lZCBsb25nIHRvcFBhZGRpbmcsIGluIHVuc2lnbmVkIGxvbmcg
cmlnaHRQYWRkaW5nLCBpbiB1bnNpZ25lZCBsb25nIGJvdHRvbVBhZGRpbmcsIGluIHVuc2lnbmVk
IGxvbmcgbGVmdFBhZGRpbmcsCi0gICAgICAgICAgICBpbiBib29sZWFuIGlnbm9yZUNsaXBwaW5n
LCBpbiBib29sZWFuIGFsbG93U2hhZG93Q29udGVudCkgcmFpc2VzIChET01FeGNlcHRpb24pOwor
ICAgICAgICAgICAgaW4gYm9vbGVhbiBpZ25vcmVDbGlwcGluZywgaW4gYm9vbGVhbiBhbGxvd1No
YWRvd0NvbnRlbnQsIGluIGJvb2xlYW4gYWxsb3dDaGlsZEZyYW1lQ29udGVudCkgcmFpc2VzIChE
T01FeGNlcHRpb24pOwogCiAgICAgICAgIHZvaWQgZW1pdEluc3BlY3RvckRpZEJlZ2luRnJhbWUo
KTsKICAgICAgICAgdm9pZCBlbWl0SW5zcGVjdG9yRGlkQ2FuY2VsRnJhbWUoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZiBiL1NvdXJjZS9XZWJLaXQyL3dpbi9X
ZWJLaXQyLmRlZgppbmRleCBmNTEwMmU2NjdjZDZiYTkwM2Y5N2EzZWRmNDE2MTI0Nzk4MDc0MzYy
Li42NTFjOThmYzcyMmM5Mzg5ZjViMDg3M2YwNTNmNjk0YjdjMzA2MmI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKKysrIGIvU291cmNlL1dlYktpdDIvd2luL1dl
YktpdDIuZGVmCkBAIC0yNTksNyArMjU5LDcgQEAgRVhQT1JUUwogICAgICAgICA/PzFDb250ZXh0
RGVzdHJ1Y3Rpb25PYnNlcnZlckBXZWJDb3JlQEBNQUVAWFoKICAgICAgICAgP2NvbnRleHREZXN0
cm95ZWRAQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXJAV2ViQ29yZUBAVUFFWFhaCiAgICAgICAg
ID8/MENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyQFdlYkNvcmVAQFFBRUBQQVZTY3JpcHRFeGVj
dXRpb25Db250ZXh0QDFAQFoKLSAgICAgICAgP25vZGVzRnJvbVJlY3RARG9jdW1lbnRAV2ViQ29y
ZUBAUUJFP0FWPyRQYXNzUmVmUHRyQFZOb2RlTGlzdEBXZWJDb3JlQEBAV1RGQEBISElJSUlfTjBA
WgorICAgICAgICA/bm9kZXNGcm9tUmVjdEBEb2N1bWVudEBXZWJDb3JlQEBRQkU/QVY/JFBhc3NS
ZWZQdHJAVk5vZGVMaXN0QFdlYkNvcmVAQEBXVEZAQEhISUlJSV9OMDBAWgogICAgICAgICA/c2Vs
ZWN0aW9uU3RhcnRIYXNNYXJrZXJGb3JARWRpdG9yQFdlYkNvcmVAQFFCRV9OVzRNYXJrZXJUeXBl
QERvY3VtZW50TWFya2VyQDJASEhAWgogICAgICAgICA/d2Via2l0V2lsbEVudGVyRnVsbFNjcmVl
bkZvckVsZW1lbnRARG9jdW1lbnRAV2ViQ29yZUBAUUFFWFBBVkVsZW1lbnRAMkBAWgogICAgICAg
ICA/d2Via2l0RGlkRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudEBEb2N1bWVudEBXZWJDb3JlQEBR
QUVYUEFWRWxlbWVudEAyQEBaCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0
MkNGTGl0ZS5kZWYgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYKaW5kZXgg
YmIxYTBkMjM4MzJlMGY4NDlhZDU4YjQwNGYzYWIyMGQ5OTZhYWU3ZC4uZDNiZWY0NmRiM2EzMzlm
YTk3ZmIyNjg1MDI3Y2NjOGJiZjM1NTAwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvd2lu
L1dlYktpdDJDRkxpdGUuZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRl
LmRlZgpAQCAtMjUzLDcgKzI1Myw3IEBAIEVYUE9SVFMKICAgICAgICAgP3VzZXJQcmVmZXJyZWRM
YW5ndWFnZXNAV2ViQ29yZUBAWUE/QVY/JFZlY3RvckBWU3RyaW5nQFdURkBAJDBBQEBXVEZAQFha
CiAgICAgICAgID91dGY4QFN0cmluZ0BXVEZAQFFCRT9BVkNTdHJpbmdAMkBfTkBaCiAgICAgICAg
ID92aWV3QERvY3VtZW50QFdlYkNvcmVAQFFCRVBBVkZyYW1lVmlld0AyQFhaCi0gICAgICAgID9u
b2Rlc0Zyb21SZWN0QERvY3VtZW50QFdlYkNvcmVAQFFCRT9BVj8kUGFzc1JlZlB0ckBWTm9kZUxp
c3RAV2ViQ29yZUBAQFdURkBASEhJSUlJX04wQFoKKyAgICAgICAgP25vZGVzRnJvbVJlY3RARG9j
dW1lbnRAV2ViQ29yZUBAUUJFP0FWPyRQYXNzUmVmUHRyQFZOb2RlTGlzdEBXZWJDb3JlQEBAV1RG
QEBISElJSUlfTjAwQFoKICAgICAgICAgP3NlbGVjdGlvblN0YXJ0SGFzTWFya2VyRm9yQEVkaXRv
ckBXZWJDb3JlQEBRQkVfTlc0TWFya2VyVHlwZUBEb2N1bWVudE1hcmtlckAyQEhIQFoKICAgICAg
ICAgP3Jlc3RyaWN0U2NhbGVGYWN0b3JUb0luaXRpYWxTY2FsZUlmTm90VXNlclNjYWxhYmxlQFdl
YkNvcmVAQFlBWEFBVVZpZXdwb3J0QXR0cmlidXRlc0AxQEBaCiAgICAgICAgID9yZXN0cmljdE1p
bmltdW1TY2FsZUZhY3RvclRvVmlld3BvcnRTaXplQFdlYkNvcmVAQFlBWEFBVVZpZXdwb3J0QXR0
cmlidXRlc0AxQFZJbnRTaXplQDFAQFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvc3lt
Ym9scy5maWx0ZXIgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCmluZGV4IDZhOGQx
ZWM2ZTliYzdlYzI5MTA4YWY4MDVhOGY1MjVlNTExYjEzZDMuLmI2M2I3YzFjM2ZiZjgyMWM5Y2Vi
Y2E4YTUxZmUyZTkwM2ExNDdlMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9s
cy5maWx0ZXIKKysrIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgpAQCAtMTYyLDcg
KzE2Miw3IEBAIF9aTjdXZWJDb3JlMjJSdW50aW1lRW5hYmxlZEZlYXR1cmVzMThpc1NoYWRvd0RP
TUVuYWJsZWRFOwogX1pON1dlYkNvcmUyMlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMyMmlzQ1NTRXhj
bHVzaW9uc0VuYWJsZWRFOwogX1pON1dlYkNvcmUyMlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMyMmlz
RGlhbG9nRWxlbWVudEVuYWJsZWRFOwogX1pON1dlYkNvcmUyMlJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXMzN2lzQXV0aG9yU2hhZG93RE9NRm9yQW55RWxlbWVudEVuYWJsZWRFOwotX1pOSzdXZWJDb3Jl
OERvY3VtZW50MTNub2Rlc0Zyb21SZWN0RWlpampqamJiOworX1pOSzdXZWJDb3JlOERvY3VtZW50
MTNub2Rlc0Zyb21SZWN0RWlpampqamJiYjsKIF9aTjdXZWJDb3JlNHRvSlNFUE4zSlNDOUV4ZWNT
dGF0ZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTlNfOE5vZGVMaXN0RTsKIF9aTks3V2ViQ29y
ZTZFZGl0b3IyNnNlbGVjdGlvblN0YXJ0SGFzTWFya2VyRm9yRU5TXzE0RG9jdW1lbnRNYXJrZXIx
ME1hcmtlclR5cGVFaWk7CiBfWk43V2ViQ29yZThEb2N1bWVudDMzd2Via2l0RGlkRXhpdEZ1bGxT
Y3JlZW5Gb3JFbGVtZW50RVBOU183RWxlbWVudEU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYWFiNjk3ZmJjOTM1ZDMzYTZl
MTE1ZjVmNmNlMzhhMjUzZWZiZjliMi4uOTQwZTIzYWQ0YzMxYzVjZjM4NWU1ZjA5YzMzNWNmZDQ1
ZjgwZjEyZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA5LTAzICBBbGxhbiBTYW5kZmVs
ZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgorCisgICAgICAgIEFsbG93IGNoaWxk
LWZyYW1lIGNvbnRlbnQgaW4gaGl0LXRlc3RzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUyMDQKKworICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlv
IEdvbWVzLgorICAgICAgICBUb3VjaC1BZGp1c3RtZW50IHRlc3QgYnkgS2V2aW4gRWxsaXMKKwor
ICAgICAgICBUd28gbmV3IHRlc3RzIGZvciBoaXQtdGVzdGluZyBjaGlsZCBmcmFtZSBjb250ZW50
LiBPbmUgZm9yIHRlc3RpbmcgaXQgYXMgYW4gb3B0aW9uIHRvCisgICAgICAgIG5vZGVzRnJvbVJl
Y3QsIGFuZCBvbmUgdGVzdGluZyBpdHMgaW1wcm92ZW1lbnQgb24gdG91Y2ggYWRqdXN0bWVudCBv
biBpZnJhbWUgYm91bmRhcmllcy4KKworICAgICAgICAqIGZhc3QvZG9tL25vZGVzRnJvbVJlY3Qv
bm9kZXNGcm9tUmVjdC1jaGlsZC1mcmFtZS1jb250ZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9kb20vbm9kZXNGcm9tUmVjdC9ub2Rlc0Zyb21SZWN0LWNoaWxkLWZyYW1l
LWNvbnRlbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vbm9kZXNGcm9tUmVjdC9y
ZXNvdXJjZXMvY2hpbGQtZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vbm9k
ZXNGcm9tUmVjdC9yZXNvdXJjZXMvbm9kZXNGcm9tUmVjdC5qczoKKyAgICAgICAgKGNoZWNrKToK
KyAgICAgICAgKGNoZWNrU2hhZG93Q29udGVudCk6CisgICAgICAgIChjaGVja1JlY3QpOgorICAg
ICAgICAobm9kZXNGcm9tUmVjdEFzU3RyaW5nKToKKyAgICAgICAgKiB0b3VjaGFkanVzdG1lbnQv
aWZyYW1lLWJvdW5kYXJ5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdG91Y2hhZGp1
c3RtZW50L2lmcmFtZS1ib3VuZGFyeS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0b3VjaGFkanVz
dG1lbnQvcmVzb3VyY2VzL2lubmVyLWNvbnRlbnQtcGFnZS5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiB0b3VjaGFkanVzdG1lbnQvcmVzb3VyY2VzL2lubmVyLW5hdmlnYXRpb24tZnJhbWUuaHRtbDog
QWRkZWQuCisKIDIwMTItMDktMDMgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBVbmhpZGUgaGlkZGVuIGNoYXJhY3RlcnMK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3Qvbm9kZXNGcm9t
UmVjdC1jaGlsZC1mcmFtZS1jb250ZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL25vZGVzRnJvbVJlY3Qvbm9kZXNGcm9tUmVjdC1jaGlsZC1mcmFtZS1jb250ZW50LWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45YzFjOTcwMGMyNTliZDIyNDkwMDNhM2U4MDM1NDdlMTI0ZGNm
ZmZmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9tUmVj
dC9ub2Rlc0Zyb21SZWN0LWNoaWxkLWZyYW1lLWNvbnRlbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTggQEAKKworRG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QgOiBBbGxvdyBjaGlsZC1mcmFtZSBj
b250ZW50IC0gYnVnIDk1MjA0CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNT
IEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0CitQQVNTIEFsbCBjb3JyZWN0IG5vZGVz
IGZvdW5kIGZvciByZWN0CitQQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0CitQ
QVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0CitQQVNTIEFsbCBjb3JyZWN0IG5v
ZGVzIGZvdW5kIGZvciByZWN0CitQQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0
CitQQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0CitQQVNTIEFsbCBjb3JyZWN0
IG5vZGVzIGZvdW5kIGZvciByZWN0CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNG
cm9tUmVjdC9ub2Rlc0Zyb21SZWN0LWNoaWxkLWZyYW1lLWNvbnRlbnQuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3Qvbm9kZXNGcm9tUmVjdC1jaGlsZC1mcmFtZS1jb250
ZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYWRiNDE2N2IxNzgwMmRjZWI5ZTM4NmM1NGUzMWU1NDY4NWM1
MWU5NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJl
Y3Qvbm9kZXNGcm9tUmVjdC1jaGlsZC1mcmFtZS1jb250ZW50Lmh0bWwKQEAgLTAsMCArMSw3NyBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDx0aXRsZT5Eb2N1bWVudDo6
bm9kZXNGcm9tUmVjdCA6IEFsbG93IGNoaWxkLWZyYW1lIGNvbnRlbnQgLSBidWcgOTUyMDQ8L3Rp
dGxlPgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbm9kZXNGcm9tUmVjdC5qcyI+
PC9zY3JpcHQ+CisgICAgPHN0eWxlPgorICAgICAgICBib2R5IHsgbWFyZ2luOiAwcHg7IH0KKyAg
ICAgICAgI3NhbmRib3ggeworICAgICAgICAgICAgd2lkdGg6IDQwMHB4OworICAgICAgICAgICAg
aGVpZ2h0OiAyMDBweDsKKyAgICAgICAgfQorICAgICAgICAjc2FuZGJveCAjbGF5ZXIgeworICAg
ICAgICAgICAgZmxvYXQ6IHJpZ2h0OworICAgICAgICB9CisgICAgICAgICNzYW5kYm94IGlmcmFt
ZSB7CisgICAgICAgICAgICBkaXNwbGF5OiBibG9jazsKKyAgICAgICAgICAgIGJveC1zaXppbmc6
IGJvcmRlci1ib3g7CisgICAgICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgICAgICBoZWln
aHQ6IDIwMHB4OworICAgICAgICAgICAgYm9yZGVyOiBub25lOworICAgICAgICB9CisgICAgICAg
IC5yb3RhdGUxODAgeyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7IH0KKyAgICAg
ICAgLnJvdGF0ZTkwIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7IH0KKyAgICAg
ICAgI3NhbmRib3ggLmJveCB7CisgICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94Owor
ICAgICAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgICAgIHdpZHRoOiAyMDBweDsKKyAg
ICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOworICAgICAgICB9CisgICAgPC9zdHls
ZT4KKzwvaGVhZD4KKzxib2R5IGlkPSJib2R5Ij4KKyAgICA8ZGl2IGlkPXNhbmRib3g+CisgICAg
ICAgIDxkaXYgaWQ9bGF5ZXI+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJpZnJhbWUxIiBzcmM9
InJlc291cmNlcy9jaGlsZC1mcmFtZS5odG1sIj48L2lmcmFtZT4KKyAgICAgICAgPC9kaXY+Cisg
ICAgICAgIDxkaXYgaWQ9ZGl2MSBjbGFzcz1ib3g+PC9kaXY+CisgICAgICAgIDxkaXYgaWQ9ZGl2
MiBjbGFzcz1ib3g+PC9kaXY+CisgICAgPC9kaXY+CisKKyAgICA8cCBpZD0nZGVzY3JpcHRpb24n
PjwvcD4KKyAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICA8c2NyaXB0IHR5cGU9ImFw
cGxpY2F0aW9uL2phdmFzY3JpcHQiPgorICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkKKyAgICAg
ICAgeworICAgICAgICAgICAgZGVzY3JpcHRpb24oZG9jdW1lbnQudGl0bGUpOworCisgICAgICAg
ICAgICAvLyBTZXQgdXAgc2hvcnRjdXQgYWNjZXNzIHRvIGVsZW1lbnRzCisgICAgICAgICAgICB2
YXIgZSA9IHt9OworICAgICAgICAgICAgWydzYW5kYm94JywgJ2xheWVyJ10uZm9yRWFjaChmdW5j
dGlvbihhKSB7CisgICAgICAgICAgICAgICAgZVthXSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KGEpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGNoZWNrUmVjdCgyNSwgMjUsIDEw
MCwgMTAwLCAiRElWI2RpdjIsIERJViNkaXYxLCBESVYjc2FuZGJveCIpOworICAgICAgICAgICAg
Y2hlY2tSZWN0KDIyMCwgMjAsIDcwLCA3MCwgIkRJViNsZWZ0Iik7CisgICAgICAgICAgICBjaGVj
a1JlY3QoMjUwLCAyMCwgMTAwLCA3MCwgIkRJViNyaWdodCwgRElWI2xlZnQsIEhUTUwiKTsKKwor
ICAgICAgICAgICAgY2hlY2tSZWN0KDE1MCwgNTAsIDEwMCwgMTAwLCAiRElWI2xlZnQsIEhUTUws
ICNkb2N1bWVudCwgSUZSQU1FI2lmcmFtZTEsIERJViNsYXllciwgRElWI2RpdjIsIERJViNkaXYx
LCBESVYjc2FuZGJveCIpOworCisgICAgICAgICAgICBlLmxheWVyLnNldEF0dHJpYnV0ZSgnY2xh
c3MnLCAncm90YXRlMTgwJyk7CisgICAgICAgICAgICBjaGVja1JlY3QoMjIwLCAyMCwgNzAsIDcw
LCAiRElWI3JpZ2h0Iik7CisgICAgICAgICAgICBjaGVja1JlY3QoMTUwLCA1MCwgMTAwLCAxMDAs
ICJESVYjcmlnaHQsIEhUTUwsICNkb2N1bWVudCwgSUZSQU1FI2lmcmFtZTEsIERJViNsYXllciwg
RElWI2RpdjIsIERJViNkaXYxLCBESVYjc2FuZGJveCIpOworCisgICAgICAgICAgICBlLmxheWVy
LnNldEF0dHJpYnV0ZSgnY2xhc3MnLCAncm90YXRlOTAnKTsKKyAgICAgICAgICAgIGNoZWNrUmVj
dCgyNTAsIDIwLCAxMDAsIDcwLCAiRElWI2xlZnQiKTsKKyAgICAgICAgICAgIGNoZWNrUmVjdCgx
NTAsIDIwLCAyMDAsIDYwLCAiRElWI2xlZnQsIEhUTUwsICNkb2N1bWVudCwgSUZSQU1FI2lmcmFt
ZTEsIERJViNsYXllciwgRElWI2RpdjEsIERJViNzYW5kYm94Iik7CisKKyAgICAgICAgICAgIGUu
c2FuZGJveC5kaXNwbGF5ID0gJ25vbmUnOworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Cisg
ICAgICAgIH0KKyAgICAgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgICAgIHdpbmRvdy5v
bmxvYWQgPSBydW5UZXN0OworICAgIDwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3QvcmVzb3VyY2Vz
L2NoaWxkLWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2Rlc0Zyb21SZWN0L3Jl
c291cmNlcy9jaGlsZC1mcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIwNGQ3ZmFhZGJiOTg2NjdiZmVj
NGE0NzI3YzhkYTI4NzM2MzNlNjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9ub2Rlc0Zyb21SZWN0L3Jlc291cmNlcy9jaGlsZC1mcmFtZS5odG1sCkBAIC0wLDAgKzEs
MjcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZSB0eXBlPSJ0ZXh0
L2NzcyI+CisgICAgYm9keSB7IG1hcmdpbjogMHB4OyB9CisgICAgZGl2IHsgCisgICAgICAgIGJv
eC1zaXppbmc6IGJvcmRlci1ib3g7CisgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOwor
ICAgIH0KKyAgICAjbGVmdCB7CisgICAgICAgIGZsb2F0OmxlZnQ7CisgICAgICAgIHdpZHRoOiA5
MHB4OworICAgICAgICBoZWlnaHQ6IDE5MHB4OworICAgIH0KKyAgICAjcmlnaHQgeworICAgICAg
ICBmbG9hdDpyaWdodDsKKyAgICAgICAgd2lkdGg6IDkwcHg7CisgICAgICAgIGhlaWdodDogMTkw
cHg7CisgICAgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxkaXYgaWQ9bGVmdD48
L2Rpdj4KKyAgICA8ZGl2IGlkPXJpZ2h0PjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2Rlc0Zyb21SZWN0L3Jlc291cmNlcy9ub2Rl
c0Zyb21SZWN0LmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9tUmVjdC9yZXNvdXJj
ZXMvbm9kZXNGcm9tUmVjdC5qcwppbmRleCAyZTgzYTc1NjdhYTBhNjEzODRiMzRiMTMyMjgwMDlj
MjNmMDE3N2UxLi4xNGNjZjYyZGZhNjE3NmQwOGJmYTQyOTRjZjk4Nzc2MzM5ZmU0Njk0IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2Rlc0Zyb21SZWN0L3Jlc291cmNlcy9ub2Rl
c0Zyb21SZWN0LmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3QvcmVz
b3VyY2VzL25vZGVzRnJvbVJlY3QuanMKQEAgLTEsNyArMSw4IEBACiAvKgogICogQ29udHJpYnV0
b3JzOgogICogICAgICogQW50b25pbyBHb21lcyA8dG9uaWtpdG9vQHdlYmtpdC5vcmc+Ci0gKiov
CisgKiAgICAgKiBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gPGFsbGFuLmplbnNlbkBub2tpYS5jb20+
CisqKi8KIAogZnVuY3Rpb24gY2hlY2soeCwgeSwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBi
b3R0b21QYWRkaW5nLCBsZWZ0UGFkZGluZywgbGlzdCwgZG9jKQogewpAQCAtMTEsNyArMTIsNyBA
QCBmdW5jdGlvbiBjaGVjayh4LCB5LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBh
ZGRpbmcsIGxlZnRQYWRkaW5nLCBsaXN0LAogICBpZiAoIWRvYykKICAgICBkb2MgPSBkb2N1bWVu
dDsKIAotICB2YXIgbm9kZXMgPSBpbnRlcm5hbHMubm9kZXNGcm9tUmVjdChkb2MsIHgsIHksIHRv
cFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcsIHRydWUg
LyogaWdub3JlQ2xpcHBpbmcgKi8sIGZhbHNlIC8qIGFsbG93IHNoYWRvdyBjb250ZW50ICovKTsK
KyAgdmFyIG5vZGVzID0gaW50ZXJuYWxzLm5vZGVzRnJvbVJlY3QoZG9jLCB4LCB5LCB0b3BQYWRk
aW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nLCB0cnVlIC8qIGln
bm9yZUNsaXBwaW5nICovLCBmYWxzZSAvKiBhbGxvdyBzaGFkb3cgY29udGVudCAqLywgZmFsc2Ug
LyogYWxsb3cgY2hpbGQtZnJhbWUgY29udGVudCAqLyk7CiAgIGlmICghbm9kZXMpCiAgICAgcmV0
dXJuOwogCkBAIC00NSw3ICs0Niw3IEBAIGZ1bmN0aW9uIGNoZWNrU2hhZG93Q29udGVudCh4LCB5
LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQCiAgIGlmICgh
ZG9jKQogICAgIGRvYyA9IGRvY3VtZW50OwogCi0gIHZhciBub2RlcyA9IGludGVybmFscy5ub2Rl
c0Zyb21SZWN0KGRvYywgeCwgeSwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRk
aW5nLCBsZWZ0UGFkZGluZywgdHJ1ZSAvKiBpZ25vcmVDbGlwcGluZyAqLywgdHJ1ZSAvKiBhbGxv
d1NoYWRvd0NvbnRlbnQgKi8pOworICB2YXIgbm9kZXMgPSBpbnRlcm5hbHMubm9kZXNGcm9tUmVj
dChkb2MsIHgsIHksIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVm
dFBhZGRpbmcsIHRydWUgLyogaWdub3JlQ2xpcHBpbmcgKi8sIHRydWUgLyogYWxsb3dTaGFkb3dD
b250ZW50ICovLCBmYWxzZSAvKiBhbGxvdyBjaGlsZC1mcmFtZSBjb250ZW50ICovKTsKICAgaWYg
KCFub2RlcykKICAgICByZXR1cm47CiAKQEAgLTY3LDYgKzY4LDYxIEBAIGZ1bmN0aW9uIGNoZWNr
U2hhZG93Q29udGVudCh4LCB5LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRp
bmcsIGxlZnRQCiAgIHRlc3RQYXNzZWQoIkFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0
Iik7CiB9CiAKK2Z1bmN0aW9uIGNoZWNrUmVjdChsZWZ0LCB0b3AsIHdpZHRoLCBoZWlnaHQsIGV4
cGVjdGVkTm9kZVN0cmluZywgZG9jKQoreworICAgIGlmICghd2luZG93LmludGVybmFscykKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaWYgKGhlaWdodCA8PTAgfHwgd2lkdGggPD0gMCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKCFkb2MpCisgICAgICAgIGRvYyA9IGRvY3VtZW50OworCisg
ICAgdmFyIHRvcFBhZGRpbmcgPSBoZWlnaHQgLyAyOworICAgIHZhciBsZWZ0UGFkZGluZyA9ICB3
aWR0aCAvIDI7CisgICAgLy8gRklYTUU6IFdoZW4gbm9kZXNGcm9tUmVjdCBpcyBjaGFuZ2VkIHRv
IG5vdCBhZGQgMSB0byB3aWR0aCBhbmQgaGVpZ2h0LCByZW1vdmUgdGhlIGNvcnJlY3Rpb24gaGVy
ZS4KKyAgICB2YXIgYm90dG9tUGFkZGluZyA9IChoZWlnaHQgLSAxKSAtIHRvcFBhZGRpbmc7Cisg
ICAgdmFyIHJpZ2h0UGFkZGluZyA9ICh3aWR0aCAtIDEpIC0gbGVmdFBhZGRpbmc7CisKKyAgICB2
YXIgbm9kZVN0cmluZyA9IG5vZGVzRnJvbVJlY3RBc1N0cmluZyhkb2MsIGxlZnQgKyBsZWZ0UGFk
ZGluZywgdG9wICsgdG9wUGFkZGluZywgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21Q
YWRkaW5nLCBsZWZ0UGFkZGluZyk7CisKKyAgICBpZiAobm9kZVN0cmluZyA9PSBleHBlY3RlZE5v
ZGVTdHJpbmcpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQg
Zm9yIHJlY3QiKTsKKyAgICB9IGVsc2UgeworICAgICAgICB0ZXN0RmFpbGVkKCJOb2Rlc0Zyb21S
ZWN0IHNob3VsZCBiZSBbIiArIGV4cGVjdGVkTm9kZVN0cmluZyArICJdIHdhcyBbIiArIG5vZGVT
dHJpbmcgKyAiXSIpOworICAgIH0KK30KKworZnVuY3Rpb24gbm9kZXNGcm9tUmVjdEFzU3RyaW5n
KGRvYywgeCwgeSwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0
UGFkZGluZykKK3sKKyAgICB2YXIgbm9kZVN0cmluZyA9ICIiOworICAgIHZhciBub2RlcyA9IGlu
dGVybmFscy5ub2Rlc0Zyb21SZWN0KGRvYywgeCwgeSwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5n
LCBib3R0b21QYWRkaW5nLCBsZWZ0UGFkZGluZywgdHJ1ZSAvKiBpZ25vcmVDbGlwcGluZyAqLywg
dHJ1ZSAvKiBhbGxvdyBzaGFkb3cgY29udGVudCAqLywgdHJ1ZSAvKiBhbGxvdyBjaGlsZC1mcmFt
ZSBjb250ZW50ICovKTsKKyAgICBpZiAoIW5vZGVzKQorICAgICAgICByZXR1cm4gbm9kZVN0cmlu
ZzsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHsKKyAgICAg
ICAgaWYgKG5vZGVzW2ldLm5vZGVUeXBlID09IDEpIHsKKyAgICAgICAgICAgIG5vZGVTdHJpbmcg
Kz0gbm9kZXNbaV0ubm9kZU5hbWU7CisgICAgICAgICAgICBpZiAobm9kZXNbaV0uaWQpCisgICAg
ICAgICAgICAgICAgbm9kZVN0cmluZyArPSAnIycgKyBub2Rlc1tpXS5pZDsKKyAgICAgICAgICAg
IGVsc2UgaWYgKG5vZGVzW2ldLmNsYXNzKSB7CisgICAgICAgICAgICAgICAgbm9kZVN0cmluZyAr
PSAnLicgKyBub2Rlc1tpXS5jbGFzczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlm
IChub2Rlc1tpXS5ub2RlVHlwZSA9PSAzKSB7CisgICAgICAgICAgICBub2RlU3RyaW5nICs9ICIn
IiArIG5vZGVzW2ldLmRhdGEgKyAiJyI7CisgICAgICAgIH0gZWxzZSBpZiAobm9kZXNbaV0ubm9k
ZVR5cGUgPT0gOSkgeworICAgICAgICAgICAgbm9kZVN0cmluZyArPSAiI2RvY3VtZW50IjsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAg
IGlmIChpICsgMSA8IG5vZGVzLmxlbmd0aCkgeworICAgICAgICAgICAgbm9kZVN0cmluZyArPSAi
LCAiOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBub2RlU3RyaW5nOworfQorCiBmdW5j
dGlvbiBnZXRDZW50ZXJGb3IoZWxlbWVudCkKIHsKICAgdmFyIHJlY3QgPSBlbGVtZW50LmdldEJv
dW5kaW5nQ2xpZW50UmVjdCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3Rt
ZW50L2lmcmFtZS1ib3VuZGFyeS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90b3VjaGFkanVz
dG1lbnQvaWZyYW1lLWJvdW5kYXJ5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NjFkMzY5NGIw
MzllNGUxYTJlMTk4YTAyOWIxZDJjZmVkODcyNmFhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvdG91Y2hhZGp1c3RtZW50L2lmcmFtZS1ib3VuZGFyeS1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwyNiBAQAorIAorVGVzdCB0b3VjaC1hZGp1c3RtZW50IGF0IHRoZSBib3VuZGFyeSBvZiBh
biAKKworCitUZXN0IGRpcmVjdCB0b3VjaGVzLgorUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgImNo
ZWNrYm94LTEiCitQQVNTIGFkanVzdGVkTm9kZS5pZCBpcyAiYnV0dG9uLTEiCitQQVNTIGFkanVz
dGVkTm9kZS5pZCBpcyAiY2hlY2tib3gtMiIKK1BBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJidXR0
b24tMiIKK1BBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJjaGVja2JveC0zIgorUEFTUyBhZGp1c3Rl
ZE5vZGUuaWQgaXMgImJ1dHRvbi0zIgorUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgImNoZWNrYm94
LTQiCitQQVNTIGFkanVzdGVkTm9kZS5pZCBpcyAiYnV0dG9uLTQiCitUZXN0IGluZGlyZWN0IHRv
dWNoZXMuCitQQVNTIGFkanVzdGVkTm9kZS5pZCBpcyAiY2hlY2tib3gtMSIKK1BBU1MgYWRqdXN0
ZWROb2RlLmlkIGlzICJidXR0b24tMSIKK1BBU1MgYWRqdXN0ZWROb2RlLmlkIGlzICJjaGVja2Jv
eC0yIgorUEFTUyBhZGp1c3RlZE5vZGUuaWQgaXMgImJ1dHRvbi0yIgorUEFTUyBhZGp1c3RlZE5v
ZGUuaWQgaXMgImNoZWNrYm94LTMiCitQQVNTIGFkanVzdGVkTm9kZS5pZCBpcyAiYnV0dG9uLTMi
CitQQVNTIGFkanVzdGVkTm9kZS5pZCBpcyAiY2hlY2tib3gtNCIKK1BBU1MgYWRqdXN0ZWROb2Rl
LmlkIGlzICJidXR0b24tNCIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvaWZy
YW1lLWJvdW5kYXJ5Lmh0bWwgYi9MYXlvdXRUZXN0cy90b3VjaGFkanVzdG1lbnQvaWZyYW1lLWJv
dW5kYXJ5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODc4N2Y5OTAxOWQ3YzQyOGE1MTU0ZDcyMjc5NTdiMWZl
ZWQ5NGZlMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9p
ZnJhbWUtYm91bmRhcnkuaHRtbApAQCAtMCwwICsxLDEwMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorICAgIDx0aXRsZT5Ub3VjaCBBZGp1c3RtZW50IDogVGVzdCB0b3VjaCBh
ZGp1c3RtZW50IGF0IGFuIGlmcmFtZSBib3VuZGFyeSAtIGJ1ZyA5NDkzNjwvdGl0bGU+CisgICAg
PHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3RvdWNoYWRqdXN0bWVudC5qcyI+PC9zY3Jp
cHQ+CisgICAgPHN0eWxlPgorICAgICAgICAjbmF2YmFyIHsKKyAgICAgICAgICAgIGJhY2tncm91
bmQ6ICNlZWU7CisgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7CisgICAgICAgICAgICBsZWZ0OiAw
OworICAgICAgICAgICAgcGFkZGluZzogMDsKKyAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0
ZTsKKyAgICAgICAgICAgIG1hcmdpbjogMDsKKyAgICAgICAgICAgIHRvcDogMDsKKyAgICAgICAg
ICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgfQorCisgICAgICAgICNjb250ZW50LXBhZ2Ugewor
ICAgICAgICAgICAgaGVpZ2h0OiAxMDAlOworICAgICAgICAgICAgbGVmdDogMTAwcHg7CisgICAg
ICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgICAgICByaWdodDogMDsKKyAgICAg
ICAgICAgIHRvcDogMDsKKyAgICAgICAgfQorCisgICAgICAgIGlmcmFtZSB7CisgICAgICAgICAg
ICBib3JkZXI6IG5vbmU7CisgICAgICAgICAgICB3aWR0aDogMTAwJTsKKyAgICAgICAgICAgIGhl
aWdodDogMTAwJTsKKyAgICAgICAgICAgIG1hcmdpbjogMDsKKyAgICAgICAgICAgIHBhZGRpbmc6
IDA7CisgICAgICAgIH0KKyAgICA8L3N0eWxlPgorPC9oZWFkPgorPGJvZHkgaWQ9Im1haW4iIG9u
bG9hZD0icnVuVGVzdHMoKSI+Cis8ZGl2IGlkPSJuYXZiYXIiICBzdHlsZT0iLXdlYmtpdC10cmFu
c2Zvcm06IHRyYW5zbGF0ZVgoMHB4KTsiPgorICAgIDxpZnJhbWUgaWQ9Im5hdi1mcmFtZSIgc3Jj
PSJyZXNvdXJjZXMvaW5uZXItbmF2aWdhdGlvbi1mcmFtZS5odG1sIj48L2lmcmFtZT4KKzwvZGl2
PgorPGRpdiBpZD0iY29udGVudC1wYWdlIj4KKyAgICA8aWZyYW1lIGlkPSJjb250ZW50LWZyYW1l
IiBzcmM9InJlc291cmNlcy9pbm5lci1jb250ZW50LXBhZ2UuaHRtbCI+PC9pZnJhbWU+Cis8L2Rp
dj4KKworPHAgaWQ9J2Rlc2NyaXB0aW9uJz48L3A+Cis8ZGl2IGlkPSdjb25zb2xlJz48L2Rpdj4K
KworPHNjcmlwdD4gCisgICAgdmFyIGl0ZW1IZWlnaHQgPSAzMjsKKyAgICB2YXIgYm9yZGVyT2Zm
c2V0ID0gOTU7CisgICAgdmFyIGNoZWNrYm94T2Zmc2V0ID0gMTU7CisgICAgdmFyIGxpbmtPZmZz
ZXQgPSAtMTU7CisgICAgdmFyIGNoZWNrYm94T2Zmc2V0SW5kaXJlY3QgPSA1OworICAgIHZhciBs
aW5rT2Zmc2V0SW5kaXJlY3QgPSAtNTsKKyAgICB2YXIgdG91Y2hSYWRpdXMgPSAzMDsKKworICAg
IGZ1bmN0aW9uIHRlc3RSb3VuZFRvdWNoKHgsIHksIHJhZGl1cykKKyAgICB7CisgICAgICAgIHZh
ciB4ID0geCAtIHJhZGl1czsKKyAgICAgICAgdmFyIHkgPSB5IC0gcmFkaXVzOworICAgICAgICB2
YXIgd2lkdGggPSByYWRpdXMgKiAyOworICAgICAgICB2YXIgaGVpZ2h0ID0gcmFkaXVzICogMjsK
KyAgICAgICAgdmFyIGFkanVzdGVkTm9kZSA9IGludGVybmFscy50b3VjaE5vZGVBZGp1c3RlZFRv
QmVzdENsaWNrYWJsZU5vZGUoeCwgeSwgd2lkdGgsIGhlaWdodCwgZG9jdW1lbnQpOworICAgICAg
ICBpZiAoYWRqdXN0ZWROb2RlLm5vZGVUeXBlID09IDMpIC8vIFRFWFQgbm9kZQorICAgICAgICAg
ICAgYWRqdXN0ZWROb2RlID0gYWRqdXN0ZWROb2RlLnBhcmVudE5vZGU7CisgICAgICAgIHJldHVy
biBhZGp1c3RlZE5vZGU7CisgICAgfQorICAgIGZ1bmN0aW9uIHRlc3REaXJlY3RUb3VjaGVzKCkK
KyAgICB7CisgICAgICAgIGRlYnVnKCdUZXN0IGRpcmVjdCB0b3VjaGVzLicpOworICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKykgeworICAgICAgICAgICAgYWRqdXN0ZWROb2RlID0g
dGVzdFJvdW5kVG91Y2goYm9yZGVyT2Zmc2V0ICsgY2hlY2tib3hPZmZzZXQsIChpICsgMC41KSAq
IGl0ZW1IZWlnaHQsIHRvdWNoUmFkaXVzKTsKKyAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygnYWRqdXN0ZWROb2RlLmlkJywgJ2NoZWNrYm94LScgKyAoaSArIDEpKTsKKyAgICAgICAg
ICAgIGFkanVzdGVkTm9kZSA9IHRlc3RSb3VuZFRvdWNoKGJvcmRlck9mZnNldCArIGxpbmtPZmZz
ZXQsIChpICsgMC41KSAqIGl0ZW1IZWlnaHQsIHRvdWNoUmFkaXVzKTsKKyAgICAgICAgICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygnYWRqdXN0ZWROb2RlLmlkJywgJ2J1dHRvbi0nICsgKGkgKyAx
KSk7CisgICAgICAgIH0KKyAgICB9CisgICAgZnVuY3Rpb24gdGVzdEluZGlyZWN0VG91Y2hlcygp
IHsKKyAgICAgICAgIGRlYnVnKCdUZXN0IGluZGlyZWN0IHRvdWNoZXMuJyk7CisgICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKykgeworICAgICAgICAgICAgYWRqdXN0ZWROb2RlID0g
dGVzdFJvdW5kVG91Y2goYm9yZGVyT2Zmc2V0ICsgY2hlY2tib3hPZmZzZXRJbmRpcmVjdCwgKGkg
KyAwLjUpICogaXRlbUhlaWdodCwgdG91Y2hSYWRpdXMpOworICAgICAgICAgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCdhZGp1c3RlZE5vZGUuaWQnLCAnY2hlY2tib3gtJyArIChpICsgMSkpOwor
ICAgICAgICAgICAgYWRqdXN0ZWROb2RlID0gdGVzdFJvdW5kVG91Y2goYm9yZGVyT2Zmc2V0ICsg
bGlua09mZnNldEluZGlyZWN0LCAoaSArIDAuNSkgKiBpdGVtSGVpZ2h0LCB0b3VjaFJhZGl1cyk7
CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2FkanVzdGVkTm9kZS5pZCcsICdi
dXR0b24tJyArIChpICsgMSkpOworICAgICAgICB9CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVu
VGVzdHMoKQorICAgIHsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5p
bnRlcm5hbHMgJiYgaW50ZXJuYWxzLnRvdWNoTm9kZUFkanVzdGVkVG9CZXN0Q2xpY2thYmxlTm9k
ZSkgeworICAgICAgICAgICAgZGVzY3JpcHRpb24oJ1Rlc3QgdG91Y2gtYWRqdXN0bWVudCBhdCB0
aGUgYm91bmRhcnkgb2YgYW4gPGlmcmFtZT4uICBFbnN1cmUgdGhhdCB0b3VjaCBhZGp1c3RtZW50
IHByb3BhZ2F0ZXMgaW50byBjaGlsZHJlbiBvZiBhbiA8aWZyYW1lPi4gIFRlc3QgZXhwZWN0ZWQg
dG8gY29udGFpbiBmYWlsdXJlcyB1bnRpbCBidWcgOTUyMDQgaXMgZml4ZWQuJyk7CisgICAgICAg
ICAgICB0ZXN0RGlyZWN0VG91Y2hlcygpOworICAgICAgICAgICAgdGVzdEluZGlyZWN0VG91Y2hl
cygpOworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKyAgICB9CisgICAg
anNUZXN0SXNBc3luYyA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdG91Y2hhZGp1c3RtZW50L3Jlc291cmNlcy9pbm5lci1j
b250ZW50LXBhZ2UuaHRtbCBiL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9yZXNvdXJjZXMv
aW5uZXItY29udGVudC1wYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWFjMzJiYWQ2MWEwMjVlMmMxNzA4
Y2U3NGM1NGM1ZjMzZjBjOGM4ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RvdWNo
YWRqdXN0bWVudC9yZXNvdXJjZXMvaW5uZXItY29udGVudC1wYWdlLmh0bWwKQEAgLTAsMCArMSwy
NCBAQAorPCFET0NUWVBFPSJodG1sIj4KKzxodG1sPgorPGhlYWQ+CisgICAgPHN0eWxlPgorICAg
ICAgICBib2R5IHsKKyAgICAgICAgICAgIGJhY2tncm91bmQ6IHdoaXRlOworICAgICAgICAgICAg
cGFkZGluZzogMDsKKyAgICAgICAgICAgIG1hcmdpbjogMDsKKyAgICAgICAgfQorCisgICAgICAg
IGxhYmVsIHsKKyAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOworICAgICAgICAgICAgbGluZS1o
ZWlnaHQ6IDIycHg7CisgICAgICAgICAgICBtYXJnaW46IDVweDsKKyAgICAgICAgfQorICAgIDwv
c3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxsYWJlbD48aW5wdXQgaWQ9ImNoZWNrYm94LTEiIHR5
cGU9ImNoZWNrYm94Ij5DaGVja2JveCAxPC9sYWJlbD4KKzxsYWJlbD48aW5wdXQgaWQ9ImNoZWNr
Ym94LTIiIHR5cGU9ImNoZWNrYm94Ij5DaGVja2JveCAyPC9sYWJlbD4KKzxsYWJlbD48aW5wdXQg
aWQ9ImNoZWNrYm94LTMiIHR5cGU9ImNoZWNrYm94Ij5DaGVja2JveCAzPC9sYWJlbD4KKzxsYWJl
bD48aW5wdXQgaWQ9ImNoZWNrYm94LTQiIHR5cGU9ImNoZWNrYm94Ij5DaGVja2JveCA0PC9sYWJl
bD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0
bWVudC9yZXNvdXJjZXMvaW5uZXItbmF2aWdhdGlvbi1mcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMv
dG91Y2hhZGp1c3RtZW50L3Jlc291cmNlcy9pbm5lci1uYXZpZ2F0aW9uLWZyYW1lLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMzNkYzEzYWE4NDBiZWZiYzJjYWFiOTliMTM1NTg4Zjk4MDIyODE1MAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3RvdWNoYWRqdXN0bWVudC9yZXNvdXJjZXMvaW5uZXIt
bmF2aWdhdGlvbi1mcmFtZS5odG1sCkBAIC0wLDAgKzEsMzIgQEAKKzwhRE9DVFlQRT0iaHRtbCI+
Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzdHlsZT4KKyAgICAgICAgYm9keSB7CisgICAgICAgICAg
ICBwYWRkaW5nOiAwOworICAgICAgICAgICAgbWFyZ2luOiAwOworICAgICAgICB9CisKKyAgICAg
ICAgZGl2LmJ1dHRvbiB7CisgICAgICAgICAgICBkaXNwbGF5OiBibG9jazsKKyAgICAgICAgICAg
IHRleHQtYWxpZ246IGNlbnRlcjsKKyAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxOHB4OworICAg
ICAgICAgICAgbWFyZ2luOiA1cHg7CisgICAgICAgICAgICB3aWR0aDogODVweDsKKyAgICAgICAg
ICAgIHBhZGRpbmc6IDRweDsKKyAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOwor
ICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4OworICAgICAgICB9CisgICAgPC9zdHlsZT4K
KzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KKyAgICBmdW5jdGlvbiBvbkNsaWNrKCkgeworICAg
IH0KKzwvc2NyaXB0PgorPGRpdiBjbGFzcz0iYnV0dG9uIiBpZD0iYnV0dG9uLTEiIG9uY2xpY2s9
b25DbGljaz5CdXR0b24gMTwvZGl2PgorPGRpdiBjbGFzcz0iYnV0dG9uIiBpZD0iYnV0dG9uLTIi
IG9uY2xpY2s9b25DbGljaz5CdXR0b24gMjwvZGl2PgorPGRpdiBjbGFzcz0iYnV0dG9uIiBpZD0i
YnV0dG9uLTMiIG9uY2xpY2s9b25DbGljaz5CdXR0b24gMzwvZGl2PgorPGRpdiBjbGFzcz0iYnV0
dG9uIiBpZD0iYnV0dG9uLTQiIG9uY2xpY2s9b25DbGljaz5CdXR0b24gNDwvZGl2PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDhlMmZk
ZTMyNjU4ZTY4YjU0ZDgwZGViOGJmYzg0YzQzN2FiMTdlODAuLjhjMzMwZDVjOTY2NDFkMzBjYTI5
OTYwMjJkNmQyOGUzOGUyZDFhYjEgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wOS0wMyAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8
YWxsYW4uamVuc2VuQG5va2lhLmNvbT4KKworICAgICAgICBBbGxvdyBjaGlsZC1mcmFtZSBjb250
ZW50IGluIGhpdC10ZXN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTk1MjA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBHb21lcy4KKwor
ICAgICAgICBVcGRhdGUgZXhwb3J0ZWQgc3ltYm9scy4KKworICAgICAgICAqIFNvdXJjZS9hdXRv
dG9vbHMvc3ltYm9scy5maWx0ZXI6CisKIDIwMTItMDktMDMgIEppbndvbyBTb25nICA8amlud29v
Ny5zb25nQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIFVzZSBXZWJLaXRWZXJzaW9uLmgg
dG8gZ2V0IHZlcnNpb24gaW5mb3JtYXRpb24K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179265</attachid>
            <date>2012-12-13 06:43:09 -0800</date>
            <delta_ts>2012-12-13 07:30:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95204-20121213153959.patch</filename>
            <type>text/plain</type>
            <size>35173</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NTgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2M3MDJiMjI0NmJmMjAx
OTg0MTE3MWFjOGJkMjczZmJhMzk1YzA1OS4uYTE2MjMxOGQ3ZDkwMTdiMWQ0YzQxYTYxMWUzYjg5
MTgzNTU1NTgzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEyLTEyLTEzICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIEFs
bG93IGNoaWxkLWZyYW1lIGNvbnRlbnQgaW4gaGl0LXRlc3RzLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUyMDQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvcnMgaG93IEV2ZW50SGFuZGxlcjo6
aGl0VGVzdFJlc3VsdEF0UG9pbnQgaGFuZGxlcyBjaGlsZC1mcmFtZSBjb250ZW50LAorICAgICAg
ICBpdCBpcyBub3cgaGFuZGxlZCBieSB0aGUgaGl0IHRlc3QgaXRzZWxmIGNvbnRyb2xsZWQgYnkg
dGhlIEFsbG93Q2hpbGRGcmFtZUNvbnRlbnQKKyAgICAgICAgZmxhZyBpbiBIaXRUZXN0UmVxdWVz
dC4KKworICAgICAgICBUZXN0czogZmFzdC9kb20vbm9kZXNGcm9tUmVjdC9ub2Rlc0Zyb21SZWN0
LWNoaWxkLWZyYW1lLWNvbnRlbnQuaHRtbAorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46Cisg
ICAgICAgICogV2ViQ29yZS5vcmRlcjoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QpOgorICAgICAgICAqIGRvbS9E
b2N1bWVudC5oOgorICAgICAgICAoRG9jdW1lbnQpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5k
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGl0VGVzdFJlc3VsdEF0
UG9pbnQpOgorICAgICAgICAqIHBhZ2UvVG91Y2hBZGp1c3RtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRvdWNoQWRqdXN0bWVudDo6cGFyZW50SG9zdE9yT3duZXIpOgorICAgICAgICAoVG91
Y2hBZGp1c3RtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRvdWNoQWRqdXN0bWVudDo6Y29tcGls
ZVN1YnRhcmdldExpc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0UmVxdWVzdC5oOgor
ICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlcXVlc3Q6OmFsbG93c0NoaWxkRnJhbWVDb250ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXF1ZXN0Ojppc0NoaWxkRnJhbWVIaXRUZXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXF1ZXN0OjpzaG91bGRUZXN0Q2hpbGRGcmFt
ZVNjcm9sbEJhcnMpOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQpOgorICAgICAgICAo
V2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6Okhp
dFRlc3RSZXN1bHQ6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0Ojpk
aWN0YXRpb25BbHRlcm5hdGl2ZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0
Lmg6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0Ojpwb2ludEluTWFpbkZyYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OnBvaW50SW5Jbm5lck5vZGVGcmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpzZXRQb2ludEluSW5uZXJOb2RlRnJh
bWUpOgorICAgICAgICAoSGl0VGVzdFJlc3VsdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckZyYW1lQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFtZUJhc2U6Om5vZGVB
dFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmg6CisgICAgICAg
IChSZW5kZXJGcmFtZUJhc2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aGl0VGVzdCk6CisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpub2Rlc0Zy
b21SZWN0KToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAoSW50ZXJu
YWxzKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIwMTItMTItMTMgIEJ5
dW5nd29vIExlZSAgPGJ3ODAubGVlQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIFJlbW92
ZSByZWR1bmRhbnQgcGlwZSB3cml0ZSB0byBwcmV2ZW50IHBpcGUgYnVmZmVyIGZ1bGwuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluCmluZGV4IGY5ZWE1NjJlNWJlNjUxN2JhOTAzNGZlOGI4OGFjNDc4MTY2YWZj
NGUuLjIwOTliMDNhMDU3NmYxNGM4Y2MwY2MwNDk1Njk1MzZiYTM4MmM1Y2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluCkBAIC0xNDQxLDcgKzE0NDEsNyBAQCBfX1pOSzdXZWJDb3JlN0ludFJlY3RjdjZD
R1JlY3RFdgogX19aTks3V2ViQ29yZTdSdW5Mb29wOVRpbWVyQmFzZThpc0FjdGl2ZUV2CiBfX1pO
SzdXZWJDb3JlOERvY3VtZW50MTFjb21wbGV0ZVVSTEVSS04zV1RGNlN0cmluZ0UKIF9fWk5LN1dl
YkNvcmU4RG9jdW1lbnQxM2F4T2JqZWN0Q2FjaGVFdgotX19aTks3V2ViQ29yZThEb2N1bWVudDEz
bm9kZXNGcm9tUmVjdEVpaWpqampiYgorX19aTks3V2ViQ29yZThEb2N1bWVudDEzbm9kZXNGcm9t
UmVjdEVpaWpqampiYmIKIF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQxNGdldEVsZW1lbnRCeUlkRVJL
TjNXVEYxMkF0b21pY1N0cmluZ0UKIF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQzMWRpc3BsYXlTdHJp
bmdNb2RpZmllZEJ5RW5jb2RpbmdFUktOM1dURjZTdHJpbmdFCiBfX1pOSzdXZWJDb3JlOERvY3Vt
ZW50NGJvZHlFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlciBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKaW5kZXggMmNiNmQyZWZkZjJlMzc0OTAyYjlkMTBh
ODRlMzgwOTlhNTQ3NjcwNi4uZDYzYjBhOGFmNTAxNWRjMzgzOGNiMGM1YzY5MjI0NmRhOWIxNTdl
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLm9yZGVyCkBAIC0yMjc0OCw3ICsyMjc0OCw3IEBAIF9fWk5LN1dlYkNv
cmUxMk5vZGVJdGVyYXRvcjIwdXBkYXRlRm9yTm9kZVJlbW92YWxFUE5TXzROb2RlRVJOUzBfMTFO
b2RlUG9pbnRlckUKIF9fWk43V2ViQ29yZTI3anNOb2RlSXRlcmF0b3JSZWZlcmVuY2VOb2RlRVBO
M0pTQzlFeGVjU3RhdGVFTlMwXzdKU1ZhbHVlRVJLTlMwXzEwSWRlbnRpZmllckUKIF9fWk5LN1dl
YkNvcmU0Tm9kZTIwdHJhdmVyc2VQcmV2aW91c05vZGVFUEtTMF8KIF9fWk43V2ViQ29yZTM3anNO
b2RlSXRlcmF0b3JQcm90b3R5cGVGdW5jdGlvbkRldGFjaEVQTjNKU0M5RXhlY1N0YXRlRQotX19a
Tks3V2ViQ29yZThEb2N1bWVudDEzbm9kZXNGcm9tUmVjdEVpaWpqampiCitfX1pOSzdXZWJDb3Jl
OERvY3VtZW50MTNub2Rlc0Zyb21SZWN0RWlpampqamJiYgogX19aTks3V2ViQ29yZThEb2N1bWVu
dDE3aGFuZGxlWmVyb1BhZGRpbmdFUktOU18xNEhpdFRlc3RSZXF1ZXN0RVJOU18xM0hpdFRlc3RS
ZXN1bHRFCiBfX1pOM1dURjIxTGlzdEhhc2hTZXRUcmFuc2xhdG9ySU5TXzZSZWZQdHJJTjdXZWJD
b3JlNE5vZGVFRUVMbTI1NkVOU183UHRySGFzaElTNF9FRUU5dHJhbnNsYXRlRVJQTlNfMTVMaXN0
SGFzaFNldE5vZGVJUzRfTG0yNTZFRUVSS1M0X1BOU18yNExpc3RIYXNoU2V0Tm9kZUFsbG9jYXRv
cklTNF9MbTI1NkVFRQogX19aTjdXZWJDb3JlMjFTdGF0aWNIYXNoU2V0Tm9kZUxpc3RDMUVSTjNX
VEYxMUxpc3RIYXNoU2V0SU5TMV82UmVmUHRySU5TXzROb2RlRUVFTG0yNTZFTlMxXzdQdHJIYXNo
SVM1X0VFRUUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDUzNTk3NWI1MGIzYzcyMWFlYWIw
NTA1YzEwNDkzM2NkNDJkYzZkZWQuLmZkMjI1ZWE4NGFiMTM3YzM4MzYyNzcwZDJiMGU2MWE4M2Mx
ZWExZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMTM2MCw3ICsxMzYwLDcgQEAgU3Ry
aW5nIERvY3VtZW50OjpzdWdnZXN0ZWRNSU1FVHlwZSgpIGNvbnN0CiAvLyAqIG1ha2luZyBpdCBy
ZWNlaXZlIGEgcmVjdCBhcyBwYXJhbWV0ZXIsIGkuZS4gbm9kZXNGcm9tUmVjdCh4LCB5LCB3LCBo
KTsKIC8vICogbWFraW5nIGl0IHJlY2VpdmUgdGhlIGV4cGFkaW5nIHNpemUgb2YgZWFjaCBkaXJl
Y3Rpb24gc2VwYXJhdGVseSwKIC8vICAgaS5lLiBub2Rlc0Zyb21SZWN0KHgsIHksIHRvcFNpemUs
IHJpZ2h0U2l6ZSwgYm90dG9tU2l6ZSwgbGVmdFNpemUpOwotUGFzc1JlZlB0cjxOb2RlTGlzdD4g
RG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QoaW50IGNlbnRlclgsIGludCBjZW50ZXJZLCB1bnNpZ25l
ZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcsIHVuc2lnbmVkIGJvdHRvbVBhZGRp
bmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nLCBib29sIGlnbm9yZUNsaXBwaW5nLCBib29sIGFsbG93
U2hhZG93Q29udGVudCkgY29uc3QKK1Bhc3NSZWZQdHI8Tm9kZUxpc3Q+IERvY3VtZW50Ojpub2Rl
c0Zyb21SZWN0KGludCBjZW50ZXJYLCBpbnQgY2VudGVyWSwgdW5zaWduZWQgdG9wUGFkZGluZywg
dW5zaWduZWQgcmlnaHRQYWRkaW5nLCB1bnNpZ25lZCBib3R0b21QYWRkaW5nLCB1bnNpZ25lZCBs
ZWZ0UGFkZGluZywgYm9vbCBpZ25vcmVDbGlwcGluZywgYm9vbCBhbGxvd1NoYWRvd0NvbnRlbnQs
IGJvb2wgYWxsb3dDaGlsZEZyYW1lQ29udGVudCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogU2hh
cmUgY29kZSBiZXR3ZWVuIHRoaXMsIGVsZW1lbnRGcm9tUG9pbnQgYW5kIGNhcmV0UmFuZ2VGcm9t
UG9pbnQuCiAgICAgaWYgKCFyZW5kZXJlcigpKQpAQCAtMTM4NCw2ICsxMzg0LDggQEAgUGFzc1Jl
ZlB0cjxOb2RlTGlzdD4gRG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QoaW50IGNlbnRlclgsIGludCBj
ZW50ZXJZLCB1bnNpZ25lZAogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoYWxsb3dTaGFkb3dD
b250ZW50KQogICAgICAgICB0eXBlIHw9IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd1NoYWRvd0NvbnRl
bnQ7CisgICAgaWYgKGFsbG93Q2hpbGRGcmFtZUNvbnRlbnQpCisgICAgICAgIHR5cGUgfD0gSGl0
VGVzdFJlcXVlc3Q6OkFsbG93Q2hpbGRGcmFtZUNvbnRlbnQ7CiAKICAgICBIaXRUZXN0UmVxdWVz
dCByZXF1ZXN0KHR5cGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGNlMmM4NmRiODg3N2Y1
YThkNDYyY2YxOTMxZWM2OTA2Y2IwNWNlODAuLjBkOGQxNjE5YWEzMmZiZjg2Njc3MzY4YTk2MDY2
MjYyNzMyZWRmZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0zNzksOCArMzc5LDkgQEAgcHVi
bGljOgogICAgICAqIEBwYXJhbSBpZ25vcmVDbGlwcGluZyB3aGV0aGVyIG9yIG5vdCB0byBpZ25v
cmUgdGhlIHJvb3Qgc2Nyb2xsIGZyYW1lIHdoZW4gcmV0cmlldmluZyB0aGUgZWxlbWVudC4KICAg
ICAgKiAgICAgICAgSWYgZmFsc2UsIHRoaXMgbWV0aG9kIHJldHVybnMgbnVsbCBmb3IgY29vcmRp
bmF0ZXMgb3V0c2lkZSBvZiB0aGUgdmlld3BvcnQuCiAgICAgICovCi0gICAgUGFzc1JlZlB0cjxO
b2RlTGlzdD4gbm9kZXNGcm9tUmVjdChpbnQgY2VudGVyWCwgaW50IGNlbnRlclksIHVuc2lnbmVk
IHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFkZGluZywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQ
YWRkaW5nLCBib29sIGlnbm9yZUNsaXBwaW5nLCBib29sIGFsbG93U2hhZG93Q29udGVudCkgY29u
c3Q7CisgICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gbm9kZXNGcm9tUmVjdChpbnQgY2VudGVyWCwg
aW50IGNlbnRlclksCisgICAgICAgIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0
UGFkZGluZywgdW5zaWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcsCisg
ICAgICAgIGJvb2wgaWdub3JlQ2xpcHBpbmcsIGJvb2wgYWxsb3dTaGFkb3dDb250ZW50LCBib29s
IGFsbG93Q2hpbGRGcmFtZUNvbnRlbnQgPSBmYWxzZSkgY29uc3Q7CiAgICAgRWxlbWVudCogZWxl
bWVudEZyb21Qb2ludChpbnQgeCwgaW50IHkpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8UmFuZ2U+
IGNhcmV0UmFuZ2VGcm9tUG9pbnQoaW50IHgsIGludCB5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwCmluZGV4IDJmNDI5YTc1ODhkNGQxNWFiOTMyMDA2NGU4OGYzNGI0NmEyZjQ2
NzYuLmNjYWY0OWZmOThlNmU2NGM2MjhmMDdhMTVlYTAzMDZhMjJkZGZiMWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTExNjAsMzUgKzExNjAsMTQgQEAgSGl0VGVzdFJl
c3VsdCBFdmVudEhhbmRsZXI6OmhpdFRlc3RSZXN1bHRBdFBvaW50KGNvbnN0IExheW91dFBvaW50
JiBwb2ludCwgYm9vbAogICAgICAgICBoaXRUeXBlIHw9IEhpdFRlc3RSZXF1ZXN0OjpJZ25vcmVD
bGlwcGluZzsKICAgICBpZiAoYWxsb3dTaGFkb3dDb250ZW50KQogICAgICAgICBoaXRUeXBlIHw9
IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd1NoYWRvd0NvbnRlbnQ7CisgICAgaWYgKHRlc3RTY3JvbGxi
YXJzID09IFNob3VsZEhpdFRlc3RTY3JvbGxiYXJzKQorICAgICAgICBoaXRUeXBlIHw9IEhpdFRl
c3RSZXF1ZXN0OjpUZXN0Q2hpbGRGcmFtZVNjcm9sbEJhcnM7CisgICAgLy8gaGl0VGVzdFJlc3Vs
dEF0UG9pbnQgYWx3YXlzIGhhbmRsZSBjaGlsZCBmcmFtZSBjb250ZW50LgorICAgIGhpdFR5cGUg
fD0gSGl0VGVzdFJlcXVlc3Q6OkFsbG93Q2hpbGRGcmFtZUNvbnRlbnQ7CisKICAgICBIaXRUZXN0
UmVxdWVzdCByZXF1ZXN0KGhpdFR5cGUpOwogICAgIG1fZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigp
LT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7CiAKLSAgICB3aGlsZSAodHJ1ZSkgewotICAgICAg
ICBOb2RlKiBuID0gcmVzdWx0LmlubmVyTm9kZSgpOwotICAgICAgICBpZiAoIXJlc3VsdC5pc092
ZXJXaWRnZXQoKSB8fCAhbiB8fCAhbi0+cmVuZGVyZXIoKSB8fCAhbi0+cmVuZGVyZXIoKS0+aXNX
aWRnZXQoKSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBSZW5kZXJXaWRnZXQqIHJlbmRl
cldpZGdldCA9IHRvUmVuZGVyV2lkZ2V0KG4tPnJlbmRlcmVyKCkpOwotICAgICAgICBXaWRnZXQq
IHdpZGdldCA9IHJlbmRlcldpZGdldC0+d2lkZ2V0KCk7Ci0gICAgICAgIGlmICghd2lkZ2V0IHx8
ICF3aWRnZXQtPmlzRnJhbWVWaWV3KCkpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgRnJh
bWUqIGZyYW1lID0gc3RhdGljX2Nhc3Q8SFRNTEZyYW1lRWxlbWVudEJhc2UqPihuKS0+Y29udGVu
dEZyYW1lKCk7Ci0gICAgICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5jb250ZW50UmVuZGVyZXIo
KSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBGcmFtZVZpZXcqIHZpZXcgPSBzdGF0aWNf
Y2FzdDxGcmFtZVZpZXcqPih3aWRnZXQpOwotICAgICAgICBMYXlvdXRQb2ludCB3aWRnZXRQb2lu
dChyZXN1bHQubG9jYWxQb2ludCgpLngoKSArIHZpZXctPnNjcm9sbFgoKSAtIHJlbmRlcldpZGdl
dC0+Ym9yZGVyTGVmdCgpIC0gcmVuZGVyV2lkZ2V0LT5wYWRkaW5nTGVmdCgpLCAKLSAgICAgICAg
ICAgIHJlc3VsdC5sb2NhbFBvaW50KCkueSgpICsgdmlldy0+c2Nyb2xsWSgpIC0gcmVuZGVyV2lk
Z2V0LT5ib3JkZXJUb3AoKSAtIHJlbmRlcldpZGdldC0+cGFkZGluZ1RvcCgpKTsKLSAgICAgICAg
SGl0VGVzdFJlc3VsdCB3aWRnZXRIaXRUZXN0UmVzdWx0KHdpZGdldFBvaW50LCBwYWRkaW5nLmhl
aWdodCgpLCBwYWRkaW5nLndpZHRoKCksIHBhZGRpbmcuaGVpZ2h0KCksIHBhZGRpbmcud2lkdGgo
KSk7Ci0gICAgICAgIHdpZGdldEhpdFRlc3RSZXN1bHQuc2V0UG9pbnRJbk1haW5GcmFtZShyZXN1
bHQucG9pbnRJbk1haW5GcmFtZSgpKTsKLSAgICAgICAgZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigp
LT5oaXRUZXN0KHJlcXVlc3QsIHdpZGdldEhpdFRlc3RSZXN1bHQpOwotICAgICAgICByZXN1bHQg
PSB3aWRnZXRIaXRUZXN0UmVzdWx0OwotCi0gICAgICAgIGlmICh0ZXN0U2Nyb2xsYmFycyA9PSBT
aG91bGRIaXRUZXN0U2Nyb2xsYmFycykgewotICAgICAgICAgICAgU2Nyb2xsYmFyKiBldmVudFNj
cm9sbGJhciA9IHZpZXctPnNjcm9sbGJhckF0UG9pbnQocm91bmRlZEludFBvaW50KHBvaW50KSk7
Ci0gICAgICAgICAgICBpZiAoZXZlbnRTY3JvbGxiYXIpCi0gICAgICAgICAgICAgICAgcmVzdWx0
LnNldFNjcm9sbGJhcihldmVudFNjcm9sbGJhcik7Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICBp
ZiAoIWFsbG93U2hhZG93Q29udGVudCkKICAgICAgICAgcmVzdWx0LnNldFRvTm9uU2hhZG93QW5j
ZXN0b3IoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Ub3VjaEFkanVzdG1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Ub3VjaEFkanVzdG1lbnQuY3BwCmluZGV4IDFk
ZTAyMjAzYzU5NTA0ZTA3M2E3NjZjZDA5ZDU4NDA5YjUyYzJkYTIuLjM4MmJkOGYwZGVkNDNiZThl
MWE3YTVhMTU3ZDFjYmQ0MDhmYzA0MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
VG91Y2hBZGp1c3RtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoQWRqdXN0
bWVudC5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCiAjaW5j
bHVkZSAiRmxvYXRRdWFkLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiSFRN
TEZyYW1lT3duZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkhUTUxMYWJlbEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKQEAgLTIy
MSw2ICsyMjIsMTYgQEAgc3RhdGljIGlubGluZSB2b2lkIGFwcGVuZFpvb21hYmxlU3VidGFyZ2V0
cyhOb2RlKiBub2RlLCBTdWJ0YXJnZXRHZW9tZXRyeUxpc3QmIHMKICAgICAgICAgc3VidGFyZ2V0
cy5hcHBlbmQoU3VidGFyZ2V0R2VvbWV0cnkobm9kZSwgKml0KSk7CiB9CiAKK3N0YXRpYyBpbmxp
bmUgTm9kZSogcGFyZW50SG9zdE9yT3duZXIoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBOb2Rl
KiBhbmNlc3RvciA9IG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKTsKKyAgICBpZiAoYW5jZXN0b3Ip
CisgICAgICAgIHJldHVybiBhbmNlc3RvcjsKKyAgICBpZiAobm9kZS0+aXNEb2N1bWVudE5vZGUo
KSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IERvY3VtZW50Kj4obm9kZSktPm93
bmVyRWxlbWVudCgpOworICAgIHJldHVybiAwOworfQorCiAvLyBDb21waWxlcyBhIGxpc3Qgb2Yg
c3VidGFyZ2V0cyBvZiBhbGwgdGhlIHJlbGV2YW50IHRhcmdldCBub2Rlcy4KIHZvaWQgY29tcGls
ZVN1YnRhcmdldExpc3QoY29uc3QgTm9kZUxpc3QmIGludGVyc2VjdGVkTm9kZXMsIFN1YnRhcmdl
dEdlb21ldHJ5TGlzdCYgc3VidGFyZ2V0cywgTm9kZUZpbHRlciBub2RlRmlsdGVyLCBBcHBlbmRT
dWJ0YXJnZXRzRm9yTm9kZSBhcHBlbmRTdWJ0YXJnZXRzRm9yTm9kZSkKIHsKQEAgLTI0OCw3ICsy
NTksNyBAQCB2b2lkIGNvbXBpbGVTdWJ0YXJnZXRMaXN0KGNvbnN0IE5vZGVMaXN0JiBpbnRlcnNl
Y3RlZE5vZGVzLCBTdWJ0YXJnZXRHZW9tZXRyeUxpcwogICAgICAgICAgICAgaWYgKG5vZGVGaWx0
ZXIodmlzaXRlZE5vZGUpKSB7CiAgICAgICAgICAgICAgICAgcmVzcG9uZGluZ05vZGUgPSB2aXNp
dGVkTm9kZTsKICAgICAgICAgICAgICAgICAvLyBDb250aW51ZSB0aGUgaXRlcmF0aW9uIHRvIGNv
bGxlY3QgdGhlIGFuY2VzdG9ycyBvZiB0aGUgcmVzcG9uZGVyLCB3aGljaCB3ZSB3aWxsIG5lZWQg
bGF0ZXIuCi0gICAgICAgICAgICAgICAgZm9yICh2aXNpdGVkTm9kZSA9IHZpc2l0ZWROb2RlLT5w
YXJlbnRPckhvc3ROb2RlKCk7IHZpc2l0ZWROb2RlOyB2aXNpdGVkTm9kZSA9IHZpc2l0ZWROb2Rl
LT5wYXJlbnRPckhvc3ROb2RlKCkpIHsKKyAgICAgICAgICAgICAgICBmb3IgKHZpc2l0ZWROb2Rl
ID0gcGFyZW50SG9zdE9yT3duZXIodmlzaXRlZE5vZGUpOyB2aXNpdGVkTm9kZTsgdmlzaXRlZE5v
ZGUgPSBwYXJlbnRIb3N0T3JPd25lcih2aXNpdGVkTm9kZSkpIHsKICAgICAgICAgICAgICAgICAg
ICAgSGFzaFNldDxOb2RlKj46OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBhbmNlc3RvcnNUb1Jlc3Bv
bmRlcnNTZXQuYWRkKHZpc2l0ZWROb2RlKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFhZGRS
ZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXF1ZXN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlcXVlc3QuaAppbmRleCBkOTM3YzI1MDQ2OTM5NmI3
NGI3NDRlMmQyMDAzNjRhOWQ3YjA0MTcwLi4zZmFmODhhOWY5MTM3NjFlYzAxM2Q2ZTdkMmNkZGFm
MzJmODRkNzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJl
cXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlcXVlc3QuaApA
QCAtMzUsNyArMzUsMTAgQEAgcHVibGljOgogICAgICAgICBJZ25vcmVDbGlwcGluZyA9IDEgPDwg
NSwKICAgICAgICAgU1ZHQ2xpcENvbnRlbnQgPSAxIDw8IDYsCiAgICAgICAgIFRvdWNoRXZlbnQg
PSAxIDw8IDcsCi0gICAgICAgIEFsbG93U2hhZG93Q29udGVudCA9IDEgPDwgOAorICAgICAgICBB
bGxvd1NoYWRvd0NvbnRlbnQgPSAxIDw8IDgsCisgICAgICAgIEFsbG93Q2hpbGRGcmFtZUNvbnRl
bnQgPSAxIDw8IDksCisgICAgICAgIENoaWxkRnJhbWVIaXRUZXN0ID0gMSA8PCAxMCwKKyAgICAg
ICAgVGVzdENoaWxkRnJhbWVTY3JvbGxCYXJzID0gMSA8PCAxMQogICAgIH07CiAKICAgICB0eXBl
ZGVmIHVuc2lnbmVkIEhpdFRlc3RSZXF1ZXN0VHlwZTsKQEAgLTU0LDYgKzU3LDkgQEAgcHVibGlj
OgogICAgIGJvb2wgdG91Y2hFdmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdFR5cGUgJiBU
b3VjaEV2ZW50OyB9CiAgICAgYm9vbCBtb3VzZUV2ZW50KCkgY29uc3QgeyByZXR1cm4gIXRvdWNo
RXZlbnQoKTsgfQogICAgIGJvb2wgYWxsb3dzU2hhZG93Q29udGVudCgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVxdWVzdFR5cGUgJiBBbGxvd1NoYWRvd0NvbnRlbnQ7IH0KKyAgICBib29sIGFsbG93c0No
aWxkRnJhbWVDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0VHlwZSAmIEFsbG93Q2hp
bGRGcmFtZUNvbnRlbnQ7IH0KKyAgICBib29sIGlzQ2hpbGRGcmFtZUhpdFRlc3QoKSBjb25zdCB7
IHJldHVybiBtX3JlcXVlc3RUeXBlICYgQ2hpbGRGcmFtZUhpdFRlc3Q7IH0KKyAgICBib29sIHNo
b3VsZFRlc3RDaGlsZEZyYW1lU2Nyb2xsQmFycygpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdFR5
cGUgJiBUZXN0Q2hpbGRGcmFtZVNjcm9sbEJhcnM7IH0KIAogICAgIC8vIENvbnZlbmllbmNlIGZ1
bmN0aW9ucwogICAgIGJvb2wgdG91Y2hNb3ZlKCkgY29uc3QgeyByZXR1cm4gbW92ZSgpICYmIHRv
dWNoRXZlbnQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRl
c3RSZXN1bHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3Bw
CmluZGV4IGNmZmRmNzgwNjhjYjc3ZDc2Y2MyMzFlNTVmYzc4ZjE5ZGQ1OGU3YjYuLmRmZThiYzRj
MzJjYTFmNzU0OGRmYTY0ZjgxZTA4MDA4YjBkNDI3YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKQEAgLTE5OSwyMSArMTk5LDIxIEBAIEhpdFRlc3RSZXN1
bHQ6OkhpdFRlc3RSZXN1bHQoKQogCiBIaXRUZXN0UmVzdWx0OjpIaXRUZXN0UmVzdWx0KGNvbnN0
IExheW91dFBvaW50JiBwb2ludCkKICAgICA6IG1faGl0VGVzdExvY2F0aW9uKHBvaW50KQotICAg
ICwgbV9wb2ludEluTWFpbkZyYW1lKHBvaW50KQorICAgICwgbV9wb2ludEluSW5uZXJOb2RlRnJh
bWUocG9pbnQpCiAgICAgLCBtX2lzT3ZlcldpZGdldChmYWxzZSkKIHsKIH0KIAogSGl0VGVzdFJl
c3VsdDo6SGl0VGVzdFJlc3VsdChjb25zdCBMYXlvdXRQb2ludCYgY2VudGVyUG9pbnQsIHVuc2ln
bmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFkZGluZywgdW5zaWduZWQgYm90dG9tUGFk
ZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcpCiAgICAgOiBtX2hpdFRlc3RMb2NhdGlvbihjZW50
ZXJQb2ludCwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0UGFk
ZGluZykKLSAgICAsIG1fcG9pbnRJbk1haW5GcmFtZShjZW50ZXJQb2ludCkKKyAgICAsIG1fcG9p
bnRJbklubmVyTm9kZUZyYW1lKGNlbnRlclBvaW50KQogICAgICwgbV9pc092ZXJXaWRnZXQoZmFs
c2UpCiB7CiB9CiAKIEhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQoY29uc3QgSGl0VGVzdExv
Y2F0aW9uJiBvdGhlcikKICAgICA6IG1faGl0VGVzdExvY2F0aW9uKG90aGVyKQotICAgICwgbV9w
b2ludEluTWFpbkZyYW1lKG1faGl0VGVzdExvY2F0aW9uLnBvaW50KCkpCisgICAgLCBtX3BvaW50
SW5Jbm5lck5vZGVGcmFtZShtX2hpdFRlc3RMb2NhdGlvbi5wb2ludCgpKQogICAgICwgbV9pc092
ZXJXaWRnZXQoZmFsc2UpCiB7CiB9CkBAIC0yMjIsNyArMjIyLDcgQEAgSGl0VGVzdFJlc3VsdDo6
SGl0VGVzdFJlc3VsdChjb25zdCBIaXRUZXN0UmVzdWx0JiBvdGhlcikKICAgICA6IG1faGl0VGVz
dExvY2F0aW9uKG90aGVyLm1faGl0VGVzdExvY2F0aW9uKQogICAgICwgbV9pbm5lck5vZGUob3Ro
ZXIuaW5uZXJOb2RlKCkpCiAgICAgLCBtX2lubmVyTm9uU2hhcmVkTm9kZShvdGhlci5pbm5lck5v
blNoYXJlZE5vZGUoKSkKLSAgICAsIG1fcG9pbnRJbk1haW5GcmFtZShvdGhlci5tX3BvaW50SW5N
YWluRnJhbWUpCisgICAgLCBtX3BvaW50SW5Jbm5lck5vZGVGcmFtZShvdGhlci5tX3BvaW50SW5J
bm5lck5vZGVGcmFtZSkKICAgICAsIG1fbG9jYWxQb2ludChvdGhlci5sb2NhbFBvaW50KCkpCiAg
ICAgLCBtX2lubmVyVVJMRWxlbWVudChvdGhlci5VUkxFbGVtZW50KCkpCiAgICAgLCBtX3Njcm9s
bGJhcihvdGhlci5zY3JvbGxiYXIoKSkKQEAgLTI0MSw3ICsyNDEsNyBAQCBIaXRUZXN0UmVzdWx0
JiBIaXRUZXN0UmVzdWx0OjpvcGVyYXRvcj0oY29uc3QgSGl0VGVzdFJlc3VsdCYgb3RoZXIpCiAg
ICAgbV9oaXRUZXN0TG9jYXRpb24gPSBvdGhlci5tX2hpdFRlc3RMb2NhdGlvbjsKICAgICBtX2lu
bmVyTm9kZSA9IG90aGVyLmlubmVyTm9kZSgpOwogICAgIG1faW5uZXJOb25TaGFyZWROb2RlID0g
b3RoZXIuaW5uZXJOb25TaGFyZWROb2RlKCk7Ci0gICAgbV9wb2ludEluTWFpbkZyYW1lID0gb3Ro
ZXIubV9wb2ludEluTWFpbkZyYW1lOworICAgIG1fcG9pbnRJbklubmVyTm9kZUZyYW1lID0gb3Ro
ZXIubV9wb2ludEluSW5uZXJOb2RlRnJhbWU7CiAgICAgbV9sb2NhbFBvaW50ID0gb3RoZXIubG9j
YWxQb2ludCgpOwogICAgIG1faW5uZXJVUkxFbGVtZW50ID0gb3RoZXIuVVJMRWxlbWVudCgpOwog
ICAgIG1fc2Nyb2xsYmFyID0gb3RoZXIuc2Nyb2xsYmFyKCk7CkBAIC03MzUsNyArNzM1LDcgQEAg
dm9pZCBIaXRUZXN0UmVzdWx0OjphcHBlbmQoY29uc3QgSGl0VGVzdFJlc3VsdCYgb3RoZXIpCiAg
ICAgICAgIG1faW5uZXJOb2RlID0gb3RoZXIuaW5uZXJOb2RlKCk7CiAgICAgICAgIG1faW5uZXJO
b25TaGFyZWROb2RlID0gb3RoZXIuaW5uZXJOb25TaGFyZWROb2RlKCk7CiAgICAgICAgIG1fbG9j
YWxQb2ludCA9IG90aGVyLmxvY2FsUG9pbnQoKTsKLSAgICAgICAgbV9wb2ludEluTWFpbkZyYW1l
ID0gb3RoZXIubV9wb2ludEluTWFpbkZyYW1lOworICAgICAgICBtX3BvaW50SW5Jbm5lck5vZGVG
cmFtZSA9IG90aGVyLm1fcG9pbnRJbklubmVyTm9kZUZyYW1lOwogICAgICAgICBtX2lubmVyVVJM
RWxlbWVudCA9IG90aGVyLlVSTEVsZW1lbnQoKTsKICAgICAgICAgbV9zY3JvbGxiYXIgPSBvdGhl
ci5zY3JvbGxiYXIoKTsKICAgICAgICAgbV9pc092ZXJXaWRnZXQgPSBvdGhlci5pc092ZXJXaWRn
ZXQoKTsKQEAgLTc2OCw3ICs3NjgsNyBAQCBWZWN0b3I8U3RyaW5nPiBIaXRUZXN0UmVzdWx0Ojpk
aWN0YXRpb25BbHRlcm5hdGl2ZXMoKSBjb25zdAogICAgIGlmICghbV9pbm5lck5vblNoYXJlZE5v
ZGUpCiAgICAgICAgIHJldHVybiBWZWN0b3I8U3RyaW5nPigpOwogCi0gICAgRG9jdW1lbnRNYXJr
ZXIqIG1hcmtlciA9IG1faW5uZXJOb25TaGFyZWROb2RlLT5kb2N1bWVudCgpLT5tYXJrZXJzKCkt
Pm1hcmtlckNvbnRhaW5pbmdQb2ludChoaXRUZXN0TG9jYXRpb24oKS5wb2ludCgpLCBEb2N1bWVu
dE1hcmtlcjo6RGljdGF0aW9uQWx0ZXJuYXRpdmVzKTsKKyAgICBEb2N1bWVudE1hcmtlciogbWFy
a2VyID0gbV9pbm5lck5vblNoYXJlZE5vZGUtPmRvY3VtZW50KCktPm1hcmtlcnMoKS0+bWFya2Vy
Q29udGFpbmluZ1BvaW50KHBvaW50SW5Jbm5lck5vZGVGcmFtZSgpLCBEb2N1bWVudE1hcmtlcjo6
RGljdGF0aW9uQWx0ZXJuYXRpdmVzKTsKICAgICBpZiAoIW1hcmtlcikKICAgICAgICAgcmV0dXJu
IFZlY3RvcjxTdHJpbmc+KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9IaXRUZXN0UmVzdWx0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3Vs
dC5oCmluZGV4IDU3YTQxZGFiNTk4ODYyM2IxOTY1NTE4YWYyMzFkY2EzNmNiYjkxNWIuLmU0YzVl
ZmUzYjIzODY4NDQ5MDkwODU1NzkwYTEwZTM3NjE2ODcwZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0hpdFRlc3RSZXN1bHQuaApAQCAtMTI0LDEzICsxMjQsMTMgQEAgcHVibGljOgogICAg
IGJvb2wgaXNSZWN0QmFzZWRUZXN0KCkgY29uc3QgeyByZXR1cm4gbV9oaXRUZXN0TG9jYXRpb24u
aXNSZWN0QmFzZWRUZXN0KCk7IH0KIAogICAgIC8vIFRoZSBoaXQtdGVzdGVkIHBvaW50IGluIHRo
ZSBjb29yZGluYXRlcyBvZiB0aGUgbWFpbiBmcmFtZS4KLSAgICBjb25zdCBMYXlvdXRQb2ludCYg
cG9pbnRJbk1haW5GcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fcG9pbnRJbk1haW5GcmFtZTsgfQor
ICAgIGNvbnN0IExheW91dFBvaW50JiBwb2ludEluTWFpbkZyYW1lKCkgY29uc3QgeyByZXR1cm4g
bV9oaXRUZXN0TG9jYXRpb24ucG9pbnQoKTsgfQogICAgIEludFBvaW50IHJvdW5kZWRQb2ludElu
TWFpbkZyYW1lKCkgY29uc3QgeyByZXR1cm4gcm91bmRlZEludFBvaW50KHBvaW50SW5NYWluRnJh
bWUoKSk7IH0KLSAgICB2b2lkIHNldFBvaW50SW5NYWluRnJhbWUoY29uc3QgTGF5b3V0UG9pbnQm
IHApIHsgbV9wb2ludEluTWFpbkZyYW1lID0gcDsgfQogCiAgICAgLy8gVGhlIGhpdC10ZXN0ZWQg
cG9pbnQgaW4gdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSBpbm5lck5vZGUgZnJhbWUsIHRoZSBmcmFt
ZSBjb250YWluaW5nIGlubmVyTm9kZS4KLSAgICBjb25zdCBMYXlvdXRQb2ludCYgcG9pbnRJbklu
bmVyTm9kZUZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9oaXRUZXN0TG9jYXRpb24ucG9pbnQoKTsg
fQorICAgIGNvbnN0IExheW91dFBvaW50JiBwb2ludEluSW5uZXJOb2RlRnJhbWUoKSBjb25zdCB7
IHJldHVybiBtX3BvaW50SW5Jbm5lck5vZGVGcmFtZTsgfQogICAgIEludFBvaW50IHJvdW5kZWRQ
b2ludEluSW5uZXJOb2RlRnJhbWUoKSBjb25zdCB7IHJldHVybiByb3VuZGVkSW50UG9pbnQocG9p
bnRJbklubmVyTm9kZUZyYW1lKCkpOyB9CisgICAgdm9pZCBzZXRQb2ludEluSW5uZXJOb2RlRnJh
bWUoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KSB7IG1fcG9pbnRJbklubmVyTm9kZUZyYW1lID0g
cG9pbnQ7IH0KICAgICBGcmFtZSogaW5uZXJOb2RlRnJhbWUoKSBjb25zdDsKIAogICAgIC8vIFRo
ZSBoaXQtdGVzdGVkIHBvaW50IGluIHRoZSBjb29yZGluYXRlcyBvZiB0aGUgaW5uZXIgbm9kZS4K
QEAgLTIwMiw3ICsyMDIsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPE5vZGU+IG1faW5uZXJO
b2RlOwogICAgIFJlZlB0cjxOb2RlPiBtX2lubmVyTm9uU2hhcmVkTm9kZTsKLSAgICBMYXlvdXRQ
b2ludCBtX3BvaW50SW5NYWluRnJhbWU7IC8vIFRoZSBoaXQtdGVzdGVkIHBvaW50IGluIG1haW4t
ZnJhbWUgY29vcmRpbmF0ZXMuCisgICAgTGF5b3V0UG9pbnQgbV9wb2ludEluSW5uZXJOb2RlRnJh
bWU7IC8vIFRoZSBoaXQtdGVzdGVkIHBvaW50IGluIGlubmVyTm9kZSBmcmFtZSBjb29yZGluYXRl
cy4KICAgICBMYXlvdXRQb2ludCBtX2xvY2FsUG9pbnQ7IC8vIEEgcG9pbnQgaW4gdGhlIGxvY2Fs
IGNvb3JkaW5hdGUgc3BhY2Ugb2YgbV9pbm5lck5vblNoYXJlZE5vZGUncyByZW5kZXJlci4gQWxs
b3dzIHVzIHRvIGVmZmljaWVudGx5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBk
ZXRlcm1pbmUgd2hlcmUgaW5zaWRlIHRoZSByZW5kZXJlciB3ZSBoaXQgb24gc3Vic2VxdWVudCBv
cGVyYXRpb25zLgogICAgIFJlZlB0cjxFbGVtZW50PiBtX2lubmVyVVJMRWxlbWVudDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5jcHAKaW5kZXggYWE4Mjg3MGQ0
ZWZhOGFkYmM4MTk2ZmRkNmE1MDZmNTk4Y2IwNzUzNy4uZDE5OTIyYjM0NGYyOTcxZTM2MjU3ZjVi
NzQzMWQ3NjcyNDFmMzNhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZyYW1lQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZy
YW1lQmFzZS5jcHAKQEAgLTI5LDYgKzI5LDggQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1
ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZUVsZW1lbnRCYXNlLmgiCisjaW5j
bHVkZSAiSGl0VGVzdFJlc3VsdC5oIgorI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyVmlldy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMDQsNCArMTA2LDM1
IEBAIHZvaWQgUmVuZGVyRnJhbWVCYXNlOjpsYXlvdXRXaXRoRmxhdHRlbmluZyhib29sIGhhc0Zp
eGVkV2lkdGgsIGJvb2wgaGFzRml4ZWRIZWlnCiAgICAgc2V0TmVlZHNMYXlvdXQoZmFsc2UpOwog
fQogCitib29sIFJlbmRlckZyYW1lQmFzZTo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVl
c3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3QgSGl0VGVzdExvY2F0aW9u
JiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZz
ZXQsIEhpdFRlc3RBY3Rpb24gYWN0aW9uKQoreworICAgIGlmIChyZXF1ZXN0LmFsbG93c0NoaWxk
RnJhbWVDb250ZW50KCkpIHsKKyAgICAgICAgRnJhbWVWaWV3KiBjaGlsZEZyYW1lVmlldyA9IHN0
YXRpY19jYXN0PEZyYW1lVmlldyo+KHdpZGdldCgpKTsKKyAgICAgICAgUmVuZGVyVmlldyogY2hp
bGRSb290ID0gY2hpbGRGcmFtZVZpZXcgPyBzdGF0aWNfY2FzdDxSZW5kZXJWaWV3Kj4oY2hpbGRG
cmFtZVZpZXctPmZyYW1lKCktPmNvbnRlbnRSZW5kZXJlcigpKSA6IDA7CisKKyAgICAgICAgaWYg
KGNoaWxkUm9vdCkgeworICAgICAgICAgICAgTGF5b3V0UG9pbnQgYWRqdXN0ZWRMb2NhdGlvbiA9
IGFjY3VtdWxhdGVkT2Zmc2V0ICsgbG9jYXRpb24oKTsKKyAgICAgICAgICAgIEhpdFRlc3RMb2Nh
dGlvbiBuZXdIaXRUZXN0TG9jYXRpb24obG9jYXRpb25JbkNvbnRhaW5lciwgLXRvTGF5b3V0U2l6
ZShhZGp1c3RlZExvY2F0aW9uKSk7CisgICAgICAgICAgICBIaXRUZXN0UmVxdWVzdCBuZXdIaXRU
ZXN0UmVxdWVzdChyZXF1ZXN0LnR5cGUoKSB8IEhpdFRlc3RSZXF1ZXN0OjpDaGlsZEZyYW1lSGl0
VGVzdCk7CisgICAgICAgICAgICBIaXRUZXN0UmVzdWx0IGNoaWxkRnJhbWVSZXN1bHQobmV3SGl0
VGVzdExvY2F0aW9uKTsKKworICAgICAgICAgICAgYm9vbCBpc0luc2lkZUNoaWxkRnJhbWUgPSBj
aGlsZFJvb3QtPmxheWVyKCktPmhpdFRlc3QobmV3SGl0VGVzdFJlcXVlc3QsIG5ld0hpdFRlc3RM
b2NhdGlvbiwgY2hpbGRGcmFtZVJlc3VsdCk7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGNo
aWxkRnJhbWVSZXN1bHQpOworICAgICAgICAgICAgaWYgKGlzSW5zaWRlQ2hpbGRGcmFtZSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAgaWYgKHJlcXVlc3Quc2hv
dWxkVGVzdENoaWxkRnJhbWVTY3JvbGxCYXJzKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBTY3Jv
bGxWaWV3IHNjcm9sbGJhcnMgYXJlIG5vdCB0aGUgc2FtZSBhcyBSZW5kZXJMYXllciBzY3JvbGxi
YXJzIHRlc3RlZCBieSBSZW5kZXJMYXllcjo6aGl0VGVzdE92ZXJmbG93Q29udHJvbHMsCisgICAg
ICAgICAgICAgICAgLy8gc28gd2UgbmVlZCB0byB0ZXN0IFNjcm9sbFZpZXcgc2Nyb2xsYmFycyBz
ZXBhcmF0ZWx5IGhlcmUuCisgICAgICAgICAgICAgICAgLy8gRklYTUU6IENvbnNpZGVyIGlmIHRo
aXMgdGVzdCBjb3VsZCBiZSBkb25lIHVuY29uZGl0aW9uYWxseS4KKyAgICAgICAgICAgICAgICBT
Y3JvbGxiYXIqIGZyYW1lU2Nyb2xsYmFyID0gY2hpbGRGcmFtZVZpZXctPnNjcm9sbGJhckF0UG9p
bnQobmV3SGl0VGVzdExvY2F0aW9uLnJvdW5kZWRQb2ludCgpKTsKKyAgICAgICAgICAgICAgICBp
ZiAoZnJhbWVTY3JvbGxiYXIpCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5zZXRTY3JvbGxi
YXIoZnJhbWVTY3JvbGxiYXIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisg
ICAgcmV0dXJuIFJlbmRlclBhcnQ6Om5vZGVBdFBvaW50KHJlcXVlc3QsIHJlc3VsdCwgbG9jYXRp
b25JbkNvbnRhaW5lciwgYWNjdW11bGF0ZWRPZmZzZXQsIGFjdGlvbik7Cit9CisKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuaAppbmRleCA0ZmFkNTYwYzViMzM3
Zjk2YjgxM2IwY2I3OTA1NDUzNjJkYzY2ODdjLi5hN2RlZWRhYjEwMjgzZGY2OTU0MThlZGUwZmJi
OTRkNDllMTJlNDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RnJhbWVCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFz
ZS5oCkBAIC0zNiw2ICszNiw3IEBAIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBSZW5kZXJGcmFt
ZUJhc2UoRWxlbWVudCopOwogCiBwdWJsaWM6CisgICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50
KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2Nh
dGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVk
T2Zmc2V0LCBIaXRUZXN0QWN0aW9uKSBPVkVSUklERTsKICAgICB2b2lkIGxheW91dFdpdGhGbGF0
dGVuaW5nKGJvb2wgZml4ZWRXaWR0aCwgYm9vbCBmaXhlZEhlaWdodCk7CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCA0NzEwMzAwOWNiYmNhNTZhNGZl
YzljMDk5YWIxYWZhNmNlODg2Nzg2Li4yZWZiNDVjZjEzOWZhYmQ3MmY5NjllNTY0ZTQwNjljOGNh
NzU0MjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTM2
NzYsNyArMzY3Niw3IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OmhpdFRlc3QoY29uc3QgSGl0VGVzdFJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYKICAgICAgICAgLy8gV2UgZGlk
bid0IGhpdCBhbnkgbGF5ZXIuIElmIHdlIGFyZSB0aGUgcm9vdCBsYXllciBhbmQgdGhlIG1vdXNl
IGlzIC0tIG9yIGp1c3Qgd2FzIC0tIGRvd24sIAogICAgICAgICAvLyByZXR1cm4gb3Vyc2VsdmVz
LiBXZSBkbyB0aGlzIHNvIG1vdXNlIGV2ZW50cyBjb250aW51ZSBnZXR0aW5nIGRlbGl2ZXJlZCBh
ZnRlciBhIGRyYWcgaGFzIAogICAgICAgICAvLyBleGl0ZWQgdGhlIFdlYlZpZXcsIGFuZCBzbyBo
aXQgdGVzdGluZyBvdmVyIGEgc2Nyb2xsYmFyIGhpdHMgdGhlIGNvbnRlbnQgZG9jdW1lbnQuCi0g
ICAgICAgIGlmICgocmVxdWVzdC5hY3RpdmUoKSB8fCByZXF1ZXN0LnJlbGVhc2UoKSkgJiYgaXNS
b290TGF5ZXIoKSkgeworICAgICAgICBpZiAoIXJlcXVlc3QuaXNDaGlsZEZyYW1lSGl0VGVzdCgp
ICYmIChyZXF1ZXN0LmFjdGl2ZSgpIHx8IHJlcXVlc3QucmVsZWFzZSgpKSAmJiBpc1Jvb3RMYXll
cigpKSB7CiAgICAgICAgICAgICByZW5kZXJlcigpLT51cGRhdGVIaXRUZXN0UmVzdWx0KHJlc3Vs
dCwgdG9SZW5kZXJWaWV3KHJlbmRlcmVyKCkpLT5mbGlwRm9yV3JpdGluZ01vZGUoaGl0VGVzdExv
Y2F0aW9uLnBvaW50KCkpKTsKICAgICAgICAgICAgIGluc2lkZUxheWVyID0gdGhpczsKICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDBiZmM2YTZmMWFkNTc1
N2YwODc1YWNkY2Y3NzQ4N2E4NmE4ZjViMGIuLjViOWVlZDczMWYxZjc3M2FlMTRkZTBhM2U2NTYz
ZGNkZmYwZWVhMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTEyMzUs
MTQgKzEyMzUsMTQgQEAgUGFzc1JlZlB0cjxDbGllbnRSZWN0TGlzdD4gSW50ZXJuYWxzOjp0b3Vj
aEV2ZW50VGFyZ2V0Q2xpZW50UmVjdHMoRG9jdW1lbnQqIGRvY3UKICNlbmRpZgogCiBQYXNzUmVm
UHRyPE5vZGVMaXN0PiBJbnRlcm5hbHM6Om5vZGVzRnJvbVJlY3QoRG9jdW1lbnQqIGRvY3VtZW50
LCBpbnQgeCwgaW50IHksIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFkZGlu
ZywKLSAgICB1bnNpZ25lZCBib3R0b21QYWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGluZywgYm9v
bCBpZ25vcmVDbGlwcGluZywgYm9vbCBhbGxvd1NoYWRvd0NvbnRlbnQsIEV4Y2VwdGlvbkNvZGUm
IGVjKSBjb25zdAorICAgIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRk
aW5nLCBib29sIGlnbm9yZUNsaXBwaW5nLCBib29sIGFsbG93U2hhZG93Q29udGVudCwgYm9vbCBh
bGxvd0NoaWxkRnJhbWVDb250ZW50LCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKIHsKICAgICBp
ZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+ZnJhbWUoKSB8fCAhZG9jdW1lbnQtPmZyYW1lKCkt
PnZpZXcoKSkgewogICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgfQogCi0gICAgcmV0dXJuIGRvY3VtZW50LT5ub2Rlc0Zyb21SZWN0KHgsIHks
IHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcsIGln
bm9yZUNsaXBwaW5nLCBhbGxvd1NoYWRvd0NvbnRlbnQpOworICAgIHJldHVybiBkb2N1bWVudC0+
bm9kZXNGcm9tUmVjdCh4LCB5LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRp
bmcsIGxlZnRQYWRkaW5nLCBpZ25vcmVDbGlwcGluZywgYWxsb3dTaGFkb3dDb250ZW50LCBhbGxv
d0NoaWxkRnJhbWVDb250ZW50KTsKIH0KIAogdm9pZCBJbnRlcm5hbHM6OmVtaXRJbnNwZWN0b3JE
aWRCZWdpbkZyYW1lKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IGIwNjc5NDhj
MzZmZWViZTVkNmQ1OWI1ZGFjZTM3YjgzYTM0NTExMjYuLjFlOGUzZDE5NTI5MTMzYTQ0NmJiYTlh
NDlhZDEyODRjMzMwN2ZiZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMTc2
LDcgKzE3Niw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4g
bm9kZXNGcm9tUmVjdChEb2N1bWVudCosIGludCB4LCBpbnQgeSwgdW5zaWduZWQgdG9wUGFkZGlu
ZywgdW5zaWduZWQgcmlnaHRQYWRkaW5nLAotICAgICAgICB1bnNpZ25lZCBib3R0b21QYWRkaW5n
LCB1bnNpZ25lZCBsZWZ0UGFkZGluZywgYm9vbCBpZ25vcmVDbGlwcGluZywgYm9vbCBhbGxvd1No
YWRvd0NvbnRlbnQsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKKyAgICAgICAgdW5zaWduZWQgYm90
dG9tUGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcsIGJvb2wgaWdub3JlQ2xpcHBpbmcsIGJv
b2wgYWxsb3dTaGFkb3dDb250ZW50LCBib29sIGFsbG93Q2hpbGRGcmFtZUNvbnRlbnQsIEV4Y2Vw
dGlvbkNvZGUmKSBjb25zdDsKIAogICAgIHZvaWQgZW1pdEluc3BlY3RvckRpZEJlZ2luRnJhbWUo
KTsKICAgICB2b2lkIGVtaXRJbnNwZWN0b3JEaWRDYW5jZWxGcmFtZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IDQ5ZWVjN2MyNjFhM2RmN2E3NzQ5NWQ0Y2UyMDMzNjU5
Y2IyM2EwODIuLmRjNTcyNTg5ZGZjYzdkMzE3MzBkNDVjNWU3ODkzYzZiOTE0NWZlOTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTE0NSw3ICsxNDUsNyBAQAogCiAgICAg
Tm9kZUxpc3Qgbm9kZXNGcm9tUmVjdChpbiBEb2N1bWVudCBkb2N1bWVudCwgaW4gbG9uZyB4LCBp
biBsb25nIHksCiAgICAgICAgIGluIHVuc2lnbmVkIGxvbmcgdG9wUGFkZGluZywgaW4gdW5zaWdu
ZWQgbG9uZyByaWdodFBhZGRpbmcsIGluIHVuc2lnbmVkIGxvbmcgYm90dG9tUGFkZGluZywgaW4g
dW5zaWduZWQgbG9uZyBsZWZ0UGFkZGluZywKLSAgICAgICAgaW4gYm9vbGVhbiBpZ25vcmVDbGlw
cGluZywgaW4gYm9vbGVhbiBhbGxvd1NoYWRvd0NvbnRlbnQpIHJhaXNlcyAoRE9NRXhjZXB0aW9u
KTsKKyAgICAgICAgaW4gYm9vbGVhbiBpZ25vcmVDbGlwcGluZywgaW4gYm9vbGVhbiBhbGxvd1No
YWRvd0NvbnRlbnQsIGluIGJvb2xlYW4gYWxsb3dDaGlsZEZyYW1lQ29udGVudCkgcmFpc2VzIChE
T01FeGNlcHRpb24pOwogCiAgICAgdm9pZCBlbWl0SW5zcGVjdG9yRGlkQmVnaW5GcmFtZSgpOwog
ICAgIHZvaWQgZW1pdEluc3BlY3RvckRpZENhbmNlbEZyYW1lKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZp
bHRlcgppbmRleCBmODdmODM0ODBmOWYzYTY3Yjk4YWNiY2JjZWMwY2VmNWU1ODBmMjNjLi5lMmUz
MTg3NDk4NmJhNThlMjI0NjUxZDgxOWJmNjFmNmIxNTkyMWZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
YXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCisrKyBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5m
aWx0ZXIKQEAgLTE5NCw3ICsxOTQsNyBAQCBfWk43V2ViQ29yZTIyUnVudGltZUVuYWJsZWRGZWF0
dXJlczQwaXNMYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZEU7CiBfWk43V2Vi
Q29yZTIyUnVudGltZUVuYWJsZWRGZWF0dXJlczIyaXNEaWFsb2dFbGVtZW50RW5hYmxlZEU7CiBf
Wk43V2ViQ29yZTIyUnVudGltZUVuYWJsZWRGZWF0dXJlczM3aXNBdXRob3JTaGFkb3dET01Gb3JB
bnlFbGVtZW50RW5hYmxlZEU7CiBfWk43V2ViQ29yZTIyUnVudGltZUVuYWJsZWRGZWF0dXJlczIw
aXNTdHlsZVNjb3BlZEVuYWJsZWRFOwotX1pOSzdXZWJDb3JlOERvY3VtZW50MTNub2Rlc0Zyb21S
ZWN0RWlpampqamJiOworX1pOSzdXZWJDb3JlOERvY3VtZW50MTNub2Rlc0Zyb21SZWN0RWlpampq
amJiYjsKIF9aTjdXZWJDb3JlNHRvSlNFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNfMTdKU0RPTUdsb2Jh
bE9iamVjdEVQTlNfOE5vZGVMaXN0RTsKIF9aTks3V2ViQ29yZTZFZGl0b3IyNnNlbGVjdGlvblN0
YXJ0SGFzTWFya2VyRm9yRU5TXzE0RG9jdW1lbnRNYXJrZXIxME1hcmtlclR5cGVFaWk7CiBfWk43
V2ViQ29yZThEb2N1bWVudDMzd2Via2l0RGlkRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50RVBOU183
RWxlbWVudEU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggNWRmNWFlZDFhNmY5ZmNhY2FjYTZlMzgxYWI0N2ZjN2IwMTlhYzNm
OS4uY2ZiZDFiMDA3ZGY0OGQzNjY1MTFhMWRmOWU5ZWQ2NGVhOGIyMjAyMSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDIxIEBACisyMDEyLTEyLTEzICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5z
ZW5AZGlnaWEuY29tPgorCisgICAgICAgIEFsbG93IGNoaWxkLWZyYW1lIGNvbnRlbnQgaW4gaGl0
LXRlc3RzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTUyMDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
IG5ldyB0ZXN0cyBmb3Igbm9kZXNGcm9tUmVjdCB0aGF0IHJldHVybnMgcmVzdWx0IGZyb20gY2hp
bGQgZnJhbWVzLgorCisgICAgICAgICogZmFzdC9kb20vbm9kZXNGcm9tUmVjdC9ub2Rlc0Zyb21S
ZWN0LWNoaWxkLWZyYW1lLWNvbnRlbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2RvbS9ub2Rlc0Zyb21SZWN0L25vZGVzRnJvbVJlY3QtY2hpbGQtZnJhbWUtY29udGVudC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ub2Rlc0Zyb21SZWN0L25vZGVzRnJvbVJl
Y3QtY29udGludWF0aW9uLWNyYXNoLmh0bWw6CisgICAgICAgICogZmFzdC9kb20vbm9kZXNGcm9t
UmVjdC9yZXNvdXJjZXMvY2hpbGQtZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9k
b20vbm9kZXNGcm9tUmVjdC9yZXNvdXJjZXMvbm9kZXNGcm9tUmVjdC5qczoKKyAgICAgICAgKGNo
ZWNrKToKKyAgICAgICAgKGNoZWNrU2hhZG93Q29udGVudCk6CisgICAgICAgIChub2Rlc0Zyb21S
ZWN0QXNTdHJpbmcpOgorCiAyMDEyLTEyLTEzICBHcnplZ29yeiBDemFqa293c2tpICA8Zy5jemFq
a293c2tpQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtNYWNdW1dLMl0gVW5yZXZpZXdlZCwgc3Bl
bGxpbmctdW5pZmllZC1lbXVsYXRpb24uaHRtbCBmYWlscyBhZnRlciAxMzc1NzEKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3Qvbm9kZXNGcm9tUmVjdC1jaGls
ZC1mcmFtZS1jb250ZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVz
RnJvbVJlY3Qvbm9kZXNGcm9tUmVjdC1jaGlsZC1mcmFtZS1jb250ZW50LWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45YzFjOTcwMGMyNTliZDIyNDkwMDNhM2U4MDM1NDdlMTI0ZGNmZmZmCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9tUmVjdC9ub2Rlc0Zy
b21SZWN0LWNoaWxkLWZyYW1lLWNvbnRlbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTggQEAK
KworRG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QgOiBBbGxvdyBjaGlsZC1mcmFtZSBjb250ZW50IC0g
YnVnIDk1MjA0CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIEFsbCBjb3Jy
ZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0CitQQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZv
ciByZWN0CitQQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0CitQQVNTIEFsbCBj
b3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0CitQQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5k
IGZvciByZWN0CitQQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0CitQQVNTIEFs
bCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0CitQQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZv
dW5kIGZvciByZWN0CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9tUmVjdC9u
b2Rlc0Zyb21SZWN0LWNoaWxkLWZyYW1lLWNvbnRlbnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL25vZGVzRnJvbVJlY3Qvbm9kZXNGcm9tUmVjdC1jaGlsZC1mcmFtZS1jb250ZW50Lmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYWRiNDE2N2IxNzgwMmRjZWI5ZTM4NmM1NGUzMWU1NDY4NWM1MWU5NAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3Qvbm9kZXNG
cm9tUmVjdC1jaGlsZC1mcmFtZS1jb250ZW50Lmh0bWwKQEAgLTAsMCArMSw3NyBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDx0aXRsZT5Eb2N1bWVudDo6bm9kZXNGcm9t
UmVjdCA6IEFsbG93IGNoaWxkLWZyYW1lIGNvbnRlbnQgLSBidWcgOTUyMDQ8L3RpdGxlPgorICAg
IDxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbm9kZXNGcm9tUmVjdC5qcyI+PC9zY3JpcHQ+
CisgICAgPHN0eWxlPgorICAgICAgICBib2R5IHsgbWFyZ2luOiAwcHg7IH0KKyAgICAgICAgI3Nh
bmRib3ggeworICAgICAgICAgICAgd2lkdGg6IDQwMHB4OworICAgICAgICAgICAgaGVpZ2h0OiAy
MDBweDsKKyAgICAgICAgfQorICAgICAgICAjc2FuZGJveCAjbGF5ZXIgeworICAgICAgICAgICAg
ZmxvYXQ6IHJpZ2h0OworICAgICAgICB9CisgICAgICAgICNzYW5kYm94IGlmcmFtZSB7CisgICAg
ICAgICAgICBkaXNwbGF5OiBibG9jazsKKyAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1i
b3g7CisgICAgICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgICAgICBoZWlnaHQ6IDIwMHB4
OworICAgICAgICAgICAgYm9yZGVyOiBub25lOworICAgICAgICB9CisgICAgICAgIC5yb3RhdGUx
ODAgeyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7IH0KKyAgICAgICAgLnJvdGF0
ZTkwIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7IH0KKyAgICAgICAgI3NhbmRi
b3ggLmJveCB7CisgICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OworICAgICAgICAg
ICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgICAg
IGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOworICAgICAgICB9CisgICAgPC9zdHlsZT4KKzwvaGVh
ZD4KKzxib2R5IGlkPSJib2R5Ij4KKyAgICA8ZGl2IGlkPXNhbmRib3g+CisgICAgICAgIDxkaXYg
aWQ9bGF5ZXI+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJpZnJhbWUxIiBzcmM9InJlc291cmNl
cy9jaGlsZC1mcmFtZS5odG1sIj48L2lmcmFtZT4KKyAgICAgICAgPC9kaXY+CisgICAgICAgIDxk
aXYgaWQ9ZGl2MSBjbGFzcz1ib3g+PC9kaXY+CisgICAgICAgIDxkaXYgaWQ9ZGl2MiBjbGFzcz1i
b3g+PC9kaXY+CisgICAgPC9kaXY+CisKKyAgICA8cCBpZD0nZGVzY3JpcHRpb24nPjwvcD4KKyAg
ICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICA8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9u
L2phdmFzY3JpcHQiPgorICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkKKyAgICAgICAgeworICAg
ICAgICAgICAgZGVzY3JpcHRpb24oZG9jdW1lbnQudGl0bGUpOworCisgICAgICAgICAgICAvLyBT
ZXQgdXAgc2hvcnRjdXQgYWNjZXNzIHRvIGVsZW1lbnRzCisgICAgICAgICAgICB2YXIgZSA9IHt9
OworICAgICAgICAgICAgWydzYW5kYm94JywgJ2xheWVyJ10uZm9yRWFjaChmdW5jdGlvbihhKSB7
CisgICAgICAgICAgICAgICAgZVthXSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGEpOworICAg
ICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGNoZWNrUmVjdCgyNSwgMjUsIDEwMCwgMTAwLCAi
RElWI2RpdjIsIERJViNkaXYxLCBESVYjc2FuZGJveCIpOworICAgICAgICAgICAgY2hlY2tSZWN0
KDIyMCwgMjAsIDcwLCA3MCwgIkRJViNsZWZ0Iik7CisgICAgICAgICAgICBjaGVja1JlY3QoMjUw
LCAyMCwgMTAwLCA3MCwgIkRJViNyaWdodCwgRElWI2xlZnQsIEhUTUwiKTsKKworICAgICAgICAg
ICAgY2hlY2tSZWN0KDE1MCwgNTAsIDEwMCwgMTAwLCAiRElWI2xlZnQsIEhUTUwsICNkb2N1bWVu
dCwgSUZSQU1FI2lmcmFtZTEsIERJViNsYXllciwgRElWI2RpdjIsIERJViNkaXYxLCBESVYjc2Fu
ZGJveCIpOworCisgICAgICAgICAgICBlLmxheWVyLnNldEF0dHJpYnV0ZSgnY2xhc3MnLCAncm90
YXRlMTgwJyk7CisgICAgICAgICAgICBjaGVja1JlY3QoMjIwLCAyMCwgNzAsIDcwLCAiRElWI3Jp
Z2h0Iik7CisgICAgICAgICAgICBjaGVja1JlY3QoMTUwLCA1MCwgMTAwLCAxMDAsICJESVYjcmln
aHQsIEhUTUwsICNkb2N1bWVudCwgSUZSQU1FI2lmcmFtZTEsIERJViNsYXllciwgRElWI2RpdjIs
IERJViNkaXYxLCBESVYjc2FuZGJveCIpOworCisgICAgICAgICAgICBlLmxheWVyLnNldEF0dHJp
YnV0ZSgnY2xhc3MnLCAncm90YXRlOTAnKTsKKyAgICAgICAgICAgIGNoZWNrUmVjdCgyNTAsIDIw
LCAxMDAsIDcwLCAiRElWI2xlZnQiKTsKKyAgICAgICAgICAgIGNoZWNrUmVjdCgxNTAsIDIwLCAy
MDAsIDYwLCAiRElWI2xlZnQsIEhUTUwsICNkb2N1bWVudCwgSUZSQU1FI2lmcmFtZTEsIERJViNs
YXllciwgRElWI2RpdjEsIERJViNzYW5kYm94Iik7CisKKyAgICAgICAgICAgIGUuc2FuZGJveC5k
aXNwbGF5ID0gJ25vbmUnOworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0K
KyAgICAgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgICAgIHdpbmRvdy5vbmxvYWQgPSBy
dW5UZXN0OworICAgIDwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3Qvbm9kZXNGcm9tUmVjdC1jb250
aW51YXRpb24tY3Jhc2guaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3Qv
bm9kZXNGcm9tUmVjdC1jb250aW51YXRpb24tY3Jhc2guaHRtbAppbmRleCBhZmZhNWU1MTFlYzc3
ZmQ0MDAyY2JmMTY5OTk0ZjJkMDVkYzU0NjhhLi5jMTZjZDgyYTE5Y2FmYWU1NTVkYmRiNmMyZTkx
YTM3YWQzYmIyNjhjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2Rlc0Zyb21S
ZWN0L25vZGVzRnJvbVJlY3QtY29udGludWF0aW9uLWNyYXNoLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vbm9kZXNGcm9tUmVjdC9ub2Rlc0Zyb21SZWN0LWNvbnRpbnVhdGlvbi1jcmFz
aC5odG1sCkBAIC03LDcgKzcsNyBAQCBpZiAod2luZG93LnRlc3RSdW5uZXIpCiB3aW5kb3cub25s
b2FkID0gZnVuY3Rpb24oKSB7CiAgICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzKQogICAgICAgICBh
bGVydCgiVGhpcyB0ZXN0IHJlcXVpcmVzIHdpbmRvdy5pbnRlcm5hbHMiKTsKLSAgICB2YXIgbm9k
ZXMgPSBpbnRlcm5hbHMubm9kZXNGcm9tUmVjdChkb2N1bWVudCwgMTAwLCAxMDAsIDIwLCAyMCwg
MjAsIDIwLCBmYWxzZSwgZmFsc2UpOworICAgIHZhciBub2RlcyA9IGludGVybmFscy5ub2Rlc0Zy
b21SZWN0KGRvY3VtZW50LCAxMDAsIDEwMCwgMjAsIDIwLCAyMCwgMjAsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UpOwogICAgIGFsZXJ0KCJQQVNTOiBUaGlzIHRlc3QgZGlkIG5vdCB0cmlnZ2VyIGFuIEFT
U0VSVCIpOwogfTsKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
bm9kZXNGcm9tUmVjdC9yZXNvdXJjZXMvY2hpbGQtZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL25vZGVzRnJvbVJlY3QvcmVzb3VyY2VzL2NoaWxkLWZyYW1lLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjA0ZDdmYWFkYmI5ODY2N2JmZWM0YTQ3MjdjOGRhMjg3MzYzM2U2OQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3QvcmVzb3VyY2VzL2NoaWxk
LWZyYW1lLmh0bWwKQEAgLTAsMCArMSwyNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyAgICBib2R5IHsgbWFyZ2luOiAwcHg7IH0K
KyAgICBkaXYgeyAKKyAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKKyAgICAgICAgYm9y
ZGVyOiAxcHggc29saWQgYmxhY2s7CisgICAgfQorICAgICNsZWZ0IHsKKyAgICAgICAgZmxvYXQ6
bGVmdDsKKyAgICAgICAgd2lkdGg6IDkwcHg7CisgICAgICAgIGhlaWdodDogMTkwcHg7CisgICAg
fQorICAgICNyaWdodCB7CisgICAgICAgIGZsb2F0OnJpZ2h0OworICAgICAgICB3aWR0aDogOTBw
eDsKKyAgICAgICAgaGVpZ2h0OiAxOTBweDsKKyAgICB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJv
ZHk+CisgICAgPGRpdiBpZD1sZWZ0PjwvZGl2PgorICAgIDxkaXYgaWQ9cmlnaHQ+PC9kaXY+Cis8
L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVz
RnJvbVJlY3QvcmVzb3VyY2VzL25vZGVzRnJvbVJlY3QuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9ub2Rlc0Zyb21SZWN0L3Jlc291cmNlcy9ub2Rlc0Zyb21SZWN0LmpzCmluZGV4IGQwMmMxYzdk
YjQ5ZTY4M2U4MDM1MDc2ZDgyNDAxMjc1MTVmN2FiMDQuLmE3Mjg3YzhiNDk3ZGI0YjE4MGM2NTc2
YjUxZDljOGI5NThmOTUyMzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVz
RnJvbVJlY3QvcmVzb3VyY2VzL25vZGVzRnJvbVJlY3QuanMKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vbm9kZXNGcm9tUmVjdC9yZXNvdXJjZXMvbm9kZXNGcm9tUmVjdC5qcwpAQCAtMSw3ICsx
LDggQEAKIC8qCiAgKiBDb250cmlidXRvcnM6CiAgKiAgICAgKiBBbnRvbmlvIEdvbWVzIDx0b25p
a2l0b29Ad2Via2l0Lm9yZz4KLSAqKi8KKyAqICAgICAqIEFsbGFuIFNhbmRmZWxkIEplbnNlbiA8
YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KKyoqLwogCiBmdW5jdGlvbiBjaGVjayh4LCB5LCB0b3BQ
YWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nLCBsaXN0LCBk
b2MpCiB7CkBAIC0xMSw3ICsxMiw3IEBAIGZ1bmN0aW9uIGNoZWNrKHgsIHksIHRvcFBhZGRpbmcs
IHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcsIGxpc3QsCiAgIGlmICgh
ZG9jKQogICAgIGRvYyA9IGRvY3VtZW50OwogCi0gIHZhciBub2RlcyA9IGludGVybmFscy5ub2Rl
c0Zyb21SZWN0KGRvYywgeCwgeSwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRk
aW5nLCBsZWZ0UGFkZGluZywgdHJ1ZSAvKiBpZ25vcmVDbGlwcGluZyAqLywgZmFsc2UgLyogYWxs
b3cgc2hhZG93IGNvbnRlbnQgKi8pOworICB2YXIgbm9kZXMgPSBpbnRlcm5hbHMubm9kZXNGcm9t
UmVjdChkb2MsIHgsIHksIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywg
bGVmdFBhZGRpbmcsIHRydWUgLyogaWdub3JlQ2xpcHBpbmcgKi8sIGZhbHNlIC8qIGFsbG93IHNo
YWRvdyBjb250ZW50ICovLCBmYWxzZSAvKiBhbGxvdyBjaGlsZC1mcmFtZSBjb250ZW50ICovKTsK
ICAgaWYgKCFub2RlcykKICAgICByZXR1cm47CiAKQEAgLTQ1LDcgKzQ2LDcgQEAgZnVuY3Rpb24g
Y2hlY2tTaGFkb3dDb250ZW50KHgsIHksIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9t
UGFkZGluZywgbGVmdFAKICAgaWYgKCFkb2MpCiAgICAgZG9jID0gZG9jdW1lbnQ7CiAKLSAgdmFy
IG5vZGVzID0gaW50ZXJuYWxzLm5vZGVzRnJvbVJlY3QoZG9jLCB4LCB5LCB0b3BQYWRkaW5nLCBy
aWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nLCB0cnVlIC8qIGlnbm9yZUNs
aXBwaW5nICovLCB0cnVlIC8qIGFsbG93U2hhZG93Q29udGVudCAqLyk7CisgIHZhciBub2RlcyA9
IGludGVybmFscy5ub2Rlc0Zyb21SZWN0KGRvYywgeCwgeSwgdG9wUGFkZGluZywgcmlnaHRQYWRk
aW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0UGFkZGluZywgdHJ1ZSAvKiBpZ25vcmVDbGlwcGluZyAq
LywgdHJ1ZSAvKiBhbGxvd1NoYWRvd0NvbnRlbnQgKi8sIGZhbHNlIC8qIGFsbG93IGNoaWxkLWZy
YW1lIGNvbnRlbnQgKi8pOwogICBpZiAoIW5vZGVzKQogICAgIHJldHVybjsKIApAQCAtOTYsNyAr
OTcsNyBAQCBmdW5jdGlvbiBjaGVja1JlY3QobGVmdCwgdG9wLCB3aWR0aCwgaGVpZ2h0LCBleHBl
Y3RlZE5vZGVTdHJpbmcsIGRvYykKIGZ1bmN0aW9uIG5vZGVzRnJvbVJlY3RBc1N0cmluZyhkb2Ms
IHgsIHksIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRp
bmcpCiB7CiAgICAgdmFyIG5vZGVTdHJpbmcgPSAiIjsKLSAgICB2YXIgbm9kZXMgPSBpbnRlcm5h
bHMubm9kZXNGcm9tUmVjdChkb2MsIHgsIHksIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90
dG9tUGFkZGluZywgbGVmdFBhZGRpbmcsIHRydWUgLyogaWdub3JlQ2xpcHBpbmcgKi8sIGZhbHNl
IC8qIGFsbG93IHNoYWRvdyBjb250ZW50ICovKTsKKyAgICB2YXIgbm9kZXMgPSBpbnRlcm5hbHMu
bm9kZXNGcm9tUmVjdChkb2MsIHgsIHksIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9t
UGFkZGluZywgbGVmdFBhZGRpbmcsIHRydWUgLyogaWdub3JlQ2xpcHBpbmcgKi8sIGZhbHNlIC8q
IGFsbG93IHNoYWRvdyBjb250ZW50ICovLCB0cnVlIC8qIGFsbG93IGNoaWxkLWZyYW1lIGNvbnRl
bnQgKi8pOwogICAgIGlmICghbm9kZXMpCiAgICAgICAgIHJldHVybiBub2RlU3RyaW5nOwogCkBA
IC0xMTAsNiArMTExLDggQEAgZnVuY3Rpb24gbm9kZXNGcm9tUmVjdEFzU3RyaW5nKGRvYywgeCwg
eSwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW4KICAgICAgICAgICAgIH0K
ICAgICAgICAgfSBlbHNlIGlmIChub2Rlc1tpXS5ub2RlVHlwZSA9PSAzKSB7CiAgICAgICAgICAg
ICBub2RlU3RyaW5nICs9ICInIiArIG5vZGVzW2ldLmRhdGEgKyAiJyI7CisgICAgICAgIH0gZWxz
ZSBpZiAobm9kZXNbaV0ubm9kZVR5cGUgPT0gOSkgeworICAgICAgICAgICAgbm9kZVN0cmluZyAr
PSAiI2RvY3VtZW50IjsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICB9CkBAIC0xMjAsNyArMTIzLDYgQEAgZnVuY3Rpb24gbm9kZXNGcm9tUmVjdEFzU3Ry
aW5nKGRvYywgeCwgeSwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW4KICAg
ICByZXR1cm4gbm9kZVN0cmluZzsKIH0KIAotCiBmdW5jdGlvbiBnZXRDZW50ZXJGb3IoZWxlbWVu
dCkKIHsKICAgdmFyIHJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwpkaWZm
IC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDdiNzIxMTdjZmViZmYwMmFjMjE2
ZDIxZTU0YTBiYjMwNjkxYzBjY2QuLjg4NTM4NDBhMTdjZDNkNzcyNjY5MjFiMzUwMGJhY2U4ZWVm
YTYxZjkgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NCBAQAorMjAxMi0xMi0xMyAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRp
Z2lhLmNvbT4KKworICAgICAgICBBbGxvdyBjaGlsZC1mcmFtZSBjb250ZW50IGluIGhpdC10ZXN0
cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1MjA0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRl
IGV4cG9ydGVkIHN5bWJvbHMuCisKKyAgICAgICAgKiBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMu
ZmlsdGVyOgorCiAyMDEyLTEyLTEzICBKZXJvbWUgUGFzaW9uIDxKZXJvbWUuUGFzaW9uQGRpZ2lh
LmNvbT4KIAogICAgICAgICBbUXRdIEZpeCBtaXNzaW5nIGRvYyBkZXBlbmRlbmN5IHRvIGV4YW1w
bGVzCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179272</attachid>
            <date>2012-12-13 07:30:27 -0800</date>
            <delta_ts>2013-01-09 02:02:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95204-20121213162717.patch</filename>
            <type>text/plain</type>
            <size>36756</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NTgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2M3MDJiMjI0NmJmMjAx
OTg0MTE3MWFjOGJkMjczZmJhMzk1YzA1OS4uYTE2MjMxOGQ3ZDkwMTdiMWQ0YzQxYTYxMWUzYjg5
MTgzNTU1NTgzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEyLTEyLTEzICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIEFs
bG93IGNoaWxkLWZyYW1lIGNvbnRlbnQgaW4gaGl0LXRlc3RzLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUyMDQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvcnMgaG93IEV2ZW50SGFuZGxlcjo6
aGl0VGVzdFJlc3VsdEF0UG9pbnQgaGFuZGxlcyBjaGlsZC1mcmFtZSBjb250ZW50LAorICAgICAg
ICBpdCBpcyBub3cgaGFuZGxlZCBieSB0aGUgaGl0IHRlc3QgaXRzZWxmIGNvbnRyb2xsZWQgYnkg
dGhlIEFsbG93Q2hpbGRGcmFtZUNvbnRlbnQKKyAgICAgICAgZmxhZyBpbiBIaXRUZXN0UmVxdWVz
dC4KKworICAgICAgICBUZXN0czogZmFzdC9kb20vbm9kZXNGcm9tUmVjdC9ub2Rlc0Zyb21SZWN0
LWNoaWxkLWZyYW1lLWNvbnRlbnQuaHRtbAorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46Cisg
ICAgICAgICogV2ViQ29yZS5vcmRlcjoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QpOgorICAgICAgICAqIGRvbS9E
b2N1bWVudC5oOgorICAgICAgICAoRG9jdW1lbnQpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5k
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGl0VGVzdFJlc3VsdEF0
UG9pbnQpOgorICAgICAgICAqIHBhZ2UvVG91Y2hBZGp1c3RtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRvdWNoQWRqdXN0bWVudDo6cGFyZW50SG9zdE9yT3duZXIpOgorICAgICAgICAoVG91
Y2hBZGp1c3RtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRvdWNoQWRqdXN0bWVudDo6Y29tcGls
ZVN1YnRhcmdldExpc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0UmVxdWVzdC5oOgor
ICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlcXVlc3Q6OmFsbG93c0NoaWxkRnJhbWVDb250ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXF1ZXN0Ojppc0NoaWxkRnJhbWVIaXRUZXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXF1ZXN0OjpzaG91bGRUZXN0Q2hpbGRGcmFt
ZVNjcm9sbEJhcnMpOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQpOgorICAgICAgICAo
V2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6Okhp
dFRlc3RSZXN1bHQ6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0Ojpk
aWN0YXRpb25BbHRlcm5hdGl2ZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0
Lmg6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0Ojpwb2ludEluTWFpbkZyYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OnBvaW50SW5Jbm5lck5vZGVGcmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpzZXRQb2ludEluSW5uZXJOb2RlRnJh
bWUpOgorICAgICAgICAoSGl0VGVzdFJlc3VsdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckZyYW1lQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFtZUJhc2U6Om5vZGVB
dFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmg6CisgICAgICAg
IChSZW5kZXJGcmFtZUJhc2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aGl0VGVzdCk6CisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpub2Rlc0Zy
b21SZWN0KToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAoSW50ZXJu
YWxzKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIwMTItMTItMTMgIEJ5
dW5nd29vIExlZSAgPGJ3ODAubGVlQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIFJlbW92
ZSByZWR1bmRhbnQgcGlwZSB3cml0ZSB0byBwcmV2ZW50IHBpcGUgYnVmZmVyIGZ1bGwuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKaW5kZXggNzIxMGYwODBlNjI1M2RjMGE2OGYyNDQ3NGZhMTVlNmIxZTBkNWE1MS4uODVhMGY0
ZDVmZjRlZWYyYjRiYWJhZjI3MTM0NjUxNzFhZDcxN2IwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE0IEBACisyMDEyLTEyLTEzICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5A
ZGlnaWEuY29tPgorCisgICAgICAgIEFsbG93IGNoaWxkLWZyYW1lIGNvbnRlbnQgaW4gaGl0LXRl
c3RzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUy
MDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRh
dGUgc3ltYm9scyBmb3IgdGhlIFdpbmRvd3MgYnVpbGQtc3lzdGVtLgorCisgICAgICAgICogd2lu
L1dlYktpdDIuZGVmLmluOgorCiAyMDEyLTEyLTEzICBKb2FxdWltIFJvY2hhICA8anJvY2hhQGln
YWxpYS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjEzNzQzMik6IFRoZSAvd2Via2l0Mi9X
ZWJLaXRDb29raWVNYW5hZ2VyL2FjY2VwdC1wb2xpY3kgdW5pdCB0ZXN0IGlzIGZhaWxpbmcKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4KaW5kZXggZjllYTU2MmU1YmU2NTE3YmE5MDM0ZmU4Yjg4YWM0NzgxNjZh
ZmM0ZS4uMjA5OWIwM2EwNTc2ZjE0YzhjYzBjYzA0OTU2OTUzNmJhMzgyYzVjYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4KQEAgLTE0NDEsNyArMTQ0MSw3IEBAIF9fWk5LN1dlYkNvcmU3SW50UmVjdGN2
NkNHUmVjdEV2CiBfX1pOSzdXZWJDb3JlN1J1bkxvb3A5VGltZXJCYXNlOGlzQWN0aXZlRXYKIF9f
Wk5LN1dlYkNvcmU4RG9jdW1lbnQxMWNvbXBsZXRlVVJMRVJLTjNXVEY2U3RyaW5nRQogX19aTks3
V2ViQ29yZThEb2N1bWVudDEzYXhPYmplY3RDYWNoZUV2Ci1fX1pOSzdXZWJDb3JlOERvY3VtZW50
MTNub2Rlc0Zyb21SZWN0RWlpampqamJiCitfX1pOSzdXZWJDb3JlOERvY3VtZW50MTNub2Rlc0Zy
b21SZWN0RWlpampqamJiYgogX19aTks3V2ViQ29yZThEb2N1bWVudDE0Z2V0RWxlbWVudEJ5SWRF
UktOM1dURjEyQXRvbWljU3RyaW5nRQogX19aTks3V2ViQ29yZThEb2N1bWVudDMxZGlzcGxheVN0
cmluZ01vZGlmaWVkQnlFbmNvZGluZ0VSS04zV1RGNlN0cmluZ0UKIF9fWk5LN1dlYkNvcmU4RG9j
dW1lbnQ0Ym9keUV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgppbmRleCAyY2I2ZDJlZmRmMmUzNzQ5MDJiOWQx
MGE4NGUzODA5OWE1NDc2NzA2Li5kNjNiMGE4YWY1MDE1ZGMzODM4Y2IwYzVjNjkyMjQ2ZGE5YjE1
N2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKQEAgLTIyNzQ4LDcgKzIyNzQ4LDcgQEAgX19aTks3V2Vi
Q29yZTEyTm9kZUl0ZXJhdG9yMjB1cGRhdGVGb3JOb2RlUmVtb3ZhbEVQTlNfNE5vZGVFUk5TMF8x
MU5vZGVQb2ludGVyRQogX19aTjdXZWJDb3JlMjdqc05vZGVJdGVyYXRvclJlZmVyZW5jZU5vZGVF
UE4zSlNDOUV4ZWNTdGF0ZUVOUzBfN0pTVmFsdWVFUktOUzBfMTBJZGVudGlmaWVyRQogX19aTks3
V2ViQ29yZTROb2RlMjB0cmF2ZXJzZVByZXZpb3VzTm9kZUVQS1MwXwogX19aTjdXZWJDb3JlMzdq
c05vZGVJdGVyYXRvclByb3RvdHlwZUZ1bmN0aW9uRGV0YWNoRVBOM0pTQzlFeGVjU3RhdGVFCi1f
X1pOSzdXZWJDb3JlOERvY3VtZW50MTNub2Rlc0Zyb21SZWN0RWlpampqamIKK19fWk5LN1dlYkNv
cmU4RG9jdW1lbnQxM25vZGVzRnJvbVJlY3RFaWlqampqYmJiCiBfX1pOSzdXZWJDb3JlOERvY3Vt
ZW50MTdoYW5kbGVaZXJvUGFkZGluZ0VSS05TXzE0SGl0VGVzdFJlcXVlc3RFUk5TXzEzSGl0VGVz
dFJlc3VsdEUKIF9fWk4zV1RGMjFMaXN0SGFzaFNldFRyYW5zbGF0b3JJTlNfNlJlZlB0cklON1dl
YkNvcmU0Tm9kZUVFRUxtMjU2RU5TXzdQdHJIYXNoSVM0X0VFRTl0cmFuc2xhdGVFUlBOU18xNUxp
c3RIYXNoU2V0Tm9kZUlTNF9MbTI1NkVFRVJLUzRfUE5TXzI0TGlzdEhhc2hTZXROb2RlQWxsb2Nh
dG9ySVM0X0xtMjU2RUVFCiBfX1pON1dlYkNvcmUyMVN0YXRpY0hhc2hTZXROb2RlTGlzdEMxRVJO
M1dURjExTGlzdEhhc2hTZXRJTlMxXzZSZWZQdHJJTlNfNE5vZGVFRUVMbTI1NkVOUzFfN1B0ckhh
c2hJUzVfRUVFRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggNTM1OTc1YjUwYjNjNzIxYWVh
YjA1MDVjMTA0OTMzY2Q0MmRjNmRlZC4uZmQyMjVlYTg0YWIxMzdjMzgzNjI3NzBkMmIwZTYxYTgz
YzFlYTFlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0xMzYwLDcgKzEzNjAsNyBAQCBT
dHJpbmcgRG9jdW1lbnQ6OnN1Z2dlc3RlZE1JTUVUeXBlKCkgY29uc3QKIC8vICogbWFraW5nIGl0
IHJlY2VpdmUgYSByZWN0IGFzIHBhcmFtZXRlciwgaS5lLiBub2Rlc0Zyb21SZWN0KHgsIHksIHcs
IGgpOwogLy8gKiBtYWtpbmcgaXQgcmVjZWl2ZSB0aGUgZXhwYWRpbmcgc2l6ZSBvZiBlYWNoIGRp
cmVjdGlvbiBzZXBhcmF0ZWx5LAogLy8gICBpLmUuIG5vZGVzRnJvbVJlY3QoeCwgeSwgdG9wU2l6
ZSwgcmlnaHRTaXplLCBib3R0b21TaXplLCBsZWZ0U2l6ZSk7Ci1QYXNzUmVmUHRyPE5vZGVMaXN0
PiBEb2N1bWVudDo6bm9kZXNGcm9tUmVjdChpbnQgY2VudGVyWCwgaW50IGNlbnRlclksIHVuc2ln
bmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFkZGluZywgdW5zaWduZWQgYm90dG9tUGFk
ZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcsIGJvb2wgaWdub3JlQ2xpcHBpbmcsIGJvb2wgYWxs
b3dTaGFkb3dDb250ZW50KSBjb25zdAorUGFzc1JlZlB0cjxOb2RlTGlzdD4gRG9jdW1lbnQ6Om5v
ZGVzRnJvbVJlY3QoaW50IGNlbnRlclgsIGludCBjZW50ZXJZLCB1bnNpZ25lZCB0b3BQYWRkaW5n
LCB1bnNpZ25lZCByaWdodFBhZGRpbmcsIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVk
IGxlZnRQYWRkaW5nLCBib29sIGlnbm9yZUNsaXBwaW5nLCBib29sIGFsbG93U2hhZG93Q29udGVu
dCwgYm9vbCBhbGxvd0NoaWxkRnJhbWVDb250ZW50KSBjb25zdAogewogICAgIC8vIEZJWE1FOiBT
aGFyZSBjb2RlIGJldHdlZW4gdGhpcywgZWxlbWVudEZyb21Qb2ludCBhbmQgY2FyZXRSYW5nZUZy
b21Qb2ludC4KICAgICBpZiAoIXJlbmRlcmVyKCkpCkBAIC0xMzg0LDYgKzEzODQsOCBAQCBQYXNz
UmVmUHRyPE5vZGVMaXN0PiBEb2N1bWVudDo6bm9kZXNGcm9tUmVjdChpbnQgY2VudGVyWCwgaW50
IGNlbnRlclksIHVuc2lnbmVkCiAgICAgICAgIHJldHVybiAwOwogICAgIGlmIChhbGxvd1NoYWRv
d0NvbnRlbnQpCiAgICAgICAgIHR5cGUgfD0gSGl0VGVzdFJlcXVlc3Q6OkFsbG93U2hhZG93Q29u
dGVudDsKKyAgICBpZiAoYWxsb3dDaGlsZEZyYW1lQ29udGVudCkKKyAgICAgICAgdHlwZSB8PSBI
aXRUZXN0UmVxdWVzdDo6QWxsb3dDaGlsZEZyYW1lQ29udGVudDsKIAogICAgIEhpdFRlc3RSZXF1
ZXN0IHJlcXVlc3QodHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggY2UyYzg2ZGI4ODc3
ZjVhOGQ0NjJjZjE5MzFlYzY5MDZjYjA1Y2U4MC4uMGQ4ZDE2MTlhYTMyZmJmODY2NzczNjhhOTYw
NjYyNjI3MzJlZGZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTM3OSw4ICszNzksOSBAQCBw
dWJsaWM6CiAgICAgICogQHBhcmFtIGlnbm9yZUNsaXBwaW5nIHdoZXRoZXIgb3Igbm90IHRvIGln
bm9yZSB0aGUgcm9vdCBzY3JvbGwgZnJhbWUgd2hlbiByZXRyaWV2aW5nIHRoZSBlbGVtZW50Lgog
ICAgICAqICAgICAgICBJZiBmYWxzZSwgdGhpcyBtZXRob2QgcmV0dXJucyBudWxsIGZvciBjb29y
ZGluYXRlcyBvdXRzaWRlIG9mIHRoZSB2aWV3cG9ydC4KICAgICAgKi8KLSAgICBQYXNzUmVmUHRy
PE5vZGVMaXN0PiBub2Rlc0Zyb21SZWN0KGludCBjZW50ZXJYLCBpbnQgY2VudGVyWSwgdW5zaWdu
ZWQgdG9wUGFkZGluZywgdW5zaWduZWQgcmlnaHRQYWRkaW5nLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbGVm
dFBhZGRpbmcsIGJvb2wgaWdub3JlQ2xpcHBpbmcsIGJvb2wgYWxsb3dTaGFkb3dDb250ZW50KSBj
b25zdDsKKyAgICBQYXNzUmVmUHRyPE5vZGVMaXN0PiBub2Rlc0Zyb21SZWN0KGludCBjZW50ZXJY
LCBpbnQgY2VudGVyWSwKKyAgICAgICAgdW5zaWduZWQgdG9wUGFkZGluZywgdW5zaWduZWQgcmln
aHRQYWRkaW5nLCB1bnNpZ25lZCBib3R0b21QYWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGluZywK
KyAgICAgICAgYm9vbCBpZ25vcmVDbGlwcGluZywgYm9vbCBhbGxvd1NoYWRvd0NvbnRlbnQsIGJv
b2wgYWxsb3dDaGlsZEZyYW1lQ29udGVudCA9IGZhbHNlKSBjb25zdDsKICAgICBFbGVtZW50KiBl
bGVtZW50RnJvbVBvaW50KGludCB4LCBpbnQgeSkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxSYW5n
ZT4gY2FyZXRSYW5nZUZyb21Qb2ludChpbnQgeCwgaW50IHkpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5jcHAKaW5kZXggMmY0MjlhNzU4OGQ0ZDE1YWI5MzIwMDY0ZTg4ZjM0YjQ2YTJm
NDY3Ni4uY2NhZjQ5ZmY5OGU2ZTY0YzYyOGYwN2ExNWVhMDMwNmEyMmRkZmIxZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMTE2MCwzNSArMTE2MCwxNCBAQCBIaXRUZXN0
UmVzdWx0IEV2ZW50SGFuZGxlcjo6aGl0VGVzdFJlc3VsdEF0UG9pbnQoY29uc3QgTGF5b3V0UG9p
bnQmIHBvaW50LCBib29sCiAgICAgICAgIGhpdFR5cGUgfD0gSGl0VGVzdFJlcXVlc3Q6Oklnbm9y
ZUNsaXBwaW5nOwogICAgIGlmIChhbGxvd1NoYWRvd0NvbnRlbnQpCiAgICAgICAgIGhpdFR5cGUg
fD0gSGl0VGVzdFJlcXVlc3Q6OkFsbG93U2hhZG93Q29udGVudDsKKyAgICBpZiAodGVzdFNjcm9s
bGJhcnMgPT0gU2hvdWxkSGl0VGVzdFNjcm9sbGJhcnMpCisgICAgICAgIGhpdFR5cGUgfD0gSGl0
VGVzdFJlcXVlc3Q6OlRlc3RDaGlsZEZyYW1lU2Nyb2xsQmFyczsKKyAgICAvLyBoaXRUZXN0UmVz
dWx0QXRQb2ludCBhbHdheXMgaGFuZGxlIGNoaWxkIGZyYW1lIGNvbnRlbnQuCisgICAgaGl0VHlw
ZSB8PSBIaXRUZXN0UmVxdWVzdDo6QWxsb3dDaGlsZEZyYW1lQ29udGVudDsKKwogICAgIEhpdFRl
c3RSZXF1ZXN0IHJlcXVlc3QoaGl0VHlwZSk7CiAgICAgbV9mcmFtZS0+Y29udGVudFJlbmRlcmVy
KCktPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0KTsKIAotICAgIHdoaWxlICh0cnVlKSB7Ci0gICAg
ICAgIE5vZGUqIG4gPSByZXN1bHQuaW5uZXJOb2RlKCk7Ci0gICAgICAgIGlmICghcmVzdWx0Lmlz
T3ZlcldpZGdldCgpIHx8ICFuIHx8ICFuLT5yZW5kZXJlcigpIHx8ICFuLT5yZW5kZXJlcigpLT5p
c1dpZGdldCgpKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIFJlbmRlcldpZGdldCogcmVu
ZGVyV2lkZ2V0ID0gdG9SZW5kZXJXaWRnZXQobi0+cmVuZGVyZXIoKSk7Ci0gICAgICAgIFdpZGdl
dCogd2lkZ2V0ID0gcmVuZGVyV2lkZ2V0LT53aWRnZXQoKTsKLSAgICAgICAgaWYgKCF3aWRnZXQg
fHwgIXdpZGdldC0+aXNGcmFtZVZpZXcoKSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBG
cmFtZSogZnJhbWUgPSBzdGF0aWNfY2FzdDxIVE1MRnJhbWVFbGVtZW50QmFzZSo+KG4pLT5jb250
ZW50RnJhbWUoKTsKLSAgICAgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmNvbnRlbnRSZW5kZXJl
cigpKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIEZyYW1lVmlldyogdmlldyA9IHN0YXRp
Y19jYXN0PEZyYW1lVmlldyo+KHdpZGdldCk7Ci0gICAgICAgIExheW91dFBvaW50IHdpZGdldFBv
aW50KHJlc3VsdC5sb2NhbFBvaW50KCkueCgpICsgdmlldy0+c2Nyb2xsWCgpIC0gcmVuZGVyV2lk
Z2V0LT5ib3JkZXJMZWZ0KCkgLSByZW5kZXJXaWRnZXQtPnBhZGRpbmdMZWZ0KCksIAotICAgICAg
ICAgICAgcmVzdWx0LmxvY2FsUG9pbnQoKS55KCkgKyB2aWV3LT5zY3JvbGxZKCkgLSByZW5kZXJX
aWRnZXQtPmJvcmRlclRvcCgpIC0gcmVuZGVyV2lkZ2V0LT5wYWRkaW5nVG9wKCkpOwotICAgICAg
ICBIaXRUZXN0UmVzdWx0IHdpZGdldEhpdFRlc3RSZXN1bHQod2lkZ2V0UG9pbnQsIHBhZGRpbmcu
aGVpZ2h0KCksIHBhZGRpbmcud2lkdGgoKSwgcGFkZGluZy5oZWlnaHQoKSwgcGFkZGluZy53aWR0
aCgpKTsKLSAgICAgICAgd2lkZ2V0SGl0VGVzdFJlc3VsdC5zZXRQb2ludEluTWFpbkZyYW1lKHJl
c3VsdC5wb2ludEluTWFpbkZyYW1lKCkpOwotICAgICAgICBmcmFtZS0+Y29udGVudFJlbmRlcmVy
KCktPmhpdFRlc3QocmVxdWVzdCwgd2lkZ2V0SGl0VGVzdFJlc3VsdCk7Ci0gICAgICAgIHJlc3Vs
dCA9IHdpZGdldEhpdFRlc3RSZXN1bHQ7Ci0KLSAgICAgICAgaWYgKHRlc3RTY3JvbGxiYXJzID09
IFNob3VsZEhpdFRlc3RTY3JvbGxiYXJzKSB7Ci0gICAgICAgICAgICBTY3JvbGxiYXIqIGV2ZW50
U2Nyb2xsYmFyID0gdmlldy0+c2Nyb2xsYmFyQXRQb2ludChyb3VuZGVkSW50UG9pbnQocG9pbnQp
KTsKLSAgICAgICAgICAgIGlmIChldmVudFNjcm9sbGJhcikKLSAgICAgICAgICAgICAgICByZXN1
bHQuc2V0U2Nyb2xsYmFyKGV2ZW50U2Nyb2xsYmFyKTsKLSAgICAgICAgfQotICAgIH0KLQogICAg
IGlmICghYWxsb3dTaGFkb3dDb250ZW50KQogICAgICAgICByZXN1bHQuc2V0VG9Ob25TaGFkb3dB
bmNlc3RvcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoQWRqdXN0
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoQWRqdXN0bWVudC5jcHAKaW5kZXgg
MWRlMDIyMDNjNTk1MDRlMDczYTc2NmNkMDlkNTg0MDliNTJjMmRhMi4uMzgyYmQ4ZjBkZWQ0M2Jl
OGUxYTdhNWExNTdkMWNiZDQwOGZjMDQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9Ub3VjaEFkanVzdG1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVG91Y2hBZGp1
c3RtZW50LmNwcApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNp
bmNsdWRlICJGbG9hdFF1YWQuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJI
VE1MRnJhbWVPd25lckVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTExhYmVsRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgpAQCAt
MjIxLDYgKzIyMiwxNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYXBwZW5kWm9vbWFibGVTdWJ0YXJn
ZXRzKE5vZGUqIG5vZGUsIFN1YnRhcmdldEdlb21ldHJ5TGlzdCYgcwogICAgICAgICBzdWJ0YXJn
ZXRzLmFwcGVuZChTdWJ0YXJnZXRHZW9tZXRyeShub2RlLCAqaXQpKTsKIH0KIAorc3RhdGljIGlu
bGluZSBOb2RlKiBwYXJlbnRIb3N0T3JPd25lcihjb25zdCBOb2RlKiBub2RlKQoreworICAgIE5v
ZGUqIGFuY2VzdG9yID0gbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpOworICAgIGlmIChhbmNlc3Rv
cikKKyAgICAgICAgcmV0dXJuIGFuY2VzdG9yOworICAgIGlmIChub2RlLT5pc0RvY3VtZW50Tm9k
ZSgpKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgRG9jdW1lbnQqPihub2RlKS0+
b3duZXJFbGVtZW50KCk7CisgICAgcmV0dXJuIDA7Cit9CisKIC8vIENvbXBpbGVzIGEgbGlzdCBv
ZiBzdWJ0YXJnZXRzIG9mIGFsbCB0aGUgcmVsZXZhbnQgdGFyZ2V0IG5vZGVzLgogdm9pZCBjb21w
aWxlU3VidGFyZ2V0TGlzdChjb25zdCBOb2RlTGlzdCYgaW50ZXJzZWN0ZWROb2RlcywgU3VidGFy
Z2V0R2VvbWV0cnlMaXN0JiBzdWJ0YXJnZXRzLCBOb2RlRmlsdGVyIG5vZGVGaWx0ZXIsIEFwcGVu
ZFN1YnRhcmdldHNGb3JOb2RlIGFwcGVuZFN1YnRhcmdldHNGb3JOb2RlKQogewpAQCAtMjQ4LDcg
KzI1OSw3IEBAIHZvaWQgY29tcGlsZVN1YnRhcmdldExpc3QoY29uc3QgTm9kZUxpc3QmIGludGVy
c2VjdGVkTm9kZXMsIFN1YnRhcmdldEdlb21ldHJ5TGlzCiAgICAgICAgICAgICBpZiAobm9kZUZp
bHRlcih2aXNpdGVkTm9kZSkpIHsKICAgICAgICAgICAgICAgICByZXNwb25kaW5nTm9kZSA9IHZp
c2l0ZWROb2RlOwogICAgICAgICAgICAgICAgIC8vIENvbnRpbnVlIHRoZSBpdGVyYXRpb24gdG8g
Y29sbGVjdCB0aGUgYW5jZXN0b3JzIG9mIHRoZSByZXNwb25kZXIsIHdoaWNoIHdlIHdpbGwgbmVl
ZCBsYXRlci4KLSAgICAgICAgICAgICAgICBmb3IgKHZpc2l0ZWROb2RlID0gdmlzaXRlZE5vZGUt
PnBhcmVudE9ySG9zdE5vZGUoKTsgdmlzaXRlZE5vZGU7IHZpc2l0ZWROb2RlID0gdmlzaXRlZE5v
ZGUtPnBhcmVudE9ySG9zdE5vZGUoKSkgeworICAgICAgICAgICAgICAgIGZvciAodmlzaXRlZE5v
ZGUgPSBwYXJlbnRIb3N0T3JPd25lcih2aXNpdGVkTm9kZSk7IHZpc2l0ZWROb2RlOyB2aXNpdGVk
Tm9kZSA9IHBhcmVudEhvc3RPck93bmVyKHZpc2l0ZWROb2RlKSkgewogICAgICAgICAgICAgICAg
ICAgICBIYXNoU2V0PE5vZGUqPjo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IGFuY2VzdG9yc1RvUmVz
cG9uZGVyc1NldC5hZGQodmlzaXRlZE5vZGUpOwogICAgICAgICAgICAgICAgICAgICBpZiAoIWFk
ZFJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlcXVlc3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVxdWVzdC5oCmluZGV4IGQ5MzdjMjUwNDY5Mzk2
Yjc0Yjc0NGUyZDIwMDM2NGE5ZDdiMDQxNzAuLjNmYWY4OGE5ZjkxMzc2MWVjMDEzZDZlN2QyY2Rk
YWYzMmY4NGQ3OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0
UmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVxdWVzdC5o
CkBAIC0zNSw3ICszNSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIElnbm9yZUNsaXBwaW5nID0gMSA8
PCA1LAogICAgICAgICBTVkdDbGlwQ29udGVudCA9IDEgPDwgNiwKICAgICAgICAgVG91Y2hFdmVu
dCA9IDEgPDwgNywKLSAgICAgICAgQWxsb3dTaGFkb3dDb250ZW50ID0gMSA8PCA4CisgICAgICAg
IEFsbG93U2hhZG93Q29udGVudCA9IDEgPDwgOCwKKyAgICAgICAgQWxsb3dDaGlsZEZyYW1lQ29u
dGVudCA9IDEgPDwgOSwKKyAgICAgICAgQ2hpbGRGcmFtZUhpdFRlc3QgPSAxIDw8IDEwLAorICAg
ICAgICBUZXN0Q2hpbGRGcmFtZVNjcm9sbEJhcnMgPSAxIDw8IDExCiAgICAgfTsKIAogICAgIHR5
cGVkZWYgdW5zaWduZWQgSGl0VGVzdFJlcXVlc3RUeXBlOwpAQCAtNTQsNiArNTcsOSBAQCBwdWJs
aWM6CiAgICAgYm9vbCB0b3VjaEV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0VHlwZSAm
IFRvdWNoRXZlbnQ7IH0KICAgICBib29sIG1vdXNlRXZlbnQoKSBjb25zdCB7IHJldHVybiAhdG91
Y2hFdmVudCgpOyB9CiAgICAgYm9vbCBhbGxvd3NTaGFkb3dDb250ZW50KCkgY29uc3QgeyByZXR1
cm4gbV9yZXF1ZXN0VHlwZSAmIEFsbG93U2hhZG93Q29udGVudDsgfQorICAgIGJvb2wgYWxsb3dz
Q2hpbGRGcmFtZUNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RUeXBlICYgQWxsb3dD
aGlsZEZyYW1lQ29udGVudDsgfQorICAgIGJvb2wgaXNDaGlsZEZyYW1lSGl0VGVzdCgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVxdWVzdFR5cGUgJiBDaGlsZEZyYW1lSGl0VGVzdDsgfQorICAgIGJvb2wg
c2hvdWxkVGVzdENoaWxkRnJhbWVTY3JvbGxCYXJzKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0
VHlwZSAmIFRlc3RDaGlsZEZyYW1lU2Nyb2xsQmFyczsgfQogCiAgICAgLy8gQ29udmVuaWVuY2Ug
ZnVuY3Rpb25zCiAgICAgYm9vbCB0b3VjaE1vdmUoKSBjb25zdCB7IHJldHVybiBtb3ZlKCkgJiYg
dG91Y2hFdmVudCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0
VGVzdFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5j
cHAKaW5kZXggY2ZmZGY3ODA2OGNiNzdkNzZjYzIzMWU1NWZjNzhmMTlkZDU4ZTdiNi4uZGZlOGJj
NGMzMmNhMWY3NTQ4ZGZhNjRmODFlMDgwMDhiMGQ0MjdiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcApAQCAtMTk5LDIxICsxOTksMjEgQEAgSGl0VGVzdFJl
c3VsdDo6SGl0VGVzdFJlc3VsdCgpCiAKIEhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQoY29u
c3QgTGF5b3V0UG9pbnQmIHBvaW50KQogICAgIDogbV9oaXRUZXN0TG9jYXRpb24ocG9pbnQpCi0g
ICAgLCBtX3BvaW50SW5NYWluRnJhbWUocG9pbnQpCisgICAgLCBtX3BvaW50SW5Jbm5lck5vZGVG
cmFtZShwb2ludCkKICAgICAsIG1faXNPdmVyV2lkZ2V0KGZhbHNlKQogewogfQogCiBIaXRUZXN0
UmVzdWx0OjpIaXRUZXN0UmVzdWx0KGNvbnN0IExheW91dFBvaW50JiBjZW50ZXJQb2ludCwgdW5z
aWduZWQgdG9wUGFkZGluZywgdW5zaWduZWQgcmlnaHRQYWRkaW5nLCB1bnNpZ25lZCBib3R0b21Q
YWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGluZykKICAgICA6IG1faGl0VGVzdExvY2F0aW9uKGNl
bnRlclBvaW50LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQ
YWRkaW5nKQotICAgICwgbV9wb2ludEluTWFpbkZyYW1lKGNlbnRlclBvaW50KQorICAgICwgbV9w
b2ludEluSW5uZXJOb2RlRnJhbWUoY2VudGVyUG9pbnQpCiAgICAgLCBtX2lzT3ZlcldpZGdldChm
YWxzZSkKIHsKIH0KIAogSGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3VsdChjb25zdCBIaXRUZXN0
TG9jYXRpb24mIG90aGVyKQogICAgIDogbV9oaXRUZXN0TG9jYXRpb24ob3RoZXIpCi0gICAgLCBt
X3BvaW50SW5NYWluRnJhbWUobV9oaXRUZXN0TG9jYXRpb24ucG9pbnQoKSkKKyAgICAsIG1fcG9p
bnRJbklubmVyTm9kZUZyYW1lKG1faGl0VGVzdExvY2F0aW9uLnBvaW50KCkpCiAgICAgLCBtX2lz
T3ZlcldpZGdldChmYWxzZSkKIHsKIH0KQEAgLTIyMiw3ICsyMjIsNyBAQCBIaXRUZXN0UmVzdWx0
OjpIaXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RSZXN1bHQmIG90aGVyKQogICAgIDogbV9oaXRU
ZXN0TG9jYXRpb24ob3RoZXIubV9oaXRUZXN0TG9jYXRpb24pCiAgICAgLCBtX2lubmVyTm9kZShv
dGhlci5pbm5lck5vZGUoKSkKICAgICAsIG1faW5uZXJOb25TaGFyZWROb2RlKG90aGVyLmlubmVy
Tm9uU2hhcmVkTm9kZSgpKQotICAgICwgbV9wb2ludEluTWFpbkZyYW1lKG90aGVyLm1fcG9pbnRJ
bk1haW5GcmFtZSkKKyAgICAsIG1fcG9pbnRJbklubmVyTm9kZUZyYW1lKG90aGVyLm1fcG9pbnRJ
bklubmVyTm9kZUZyYW1lKQogICAgICwgbV9sb2NhbFBvaW50KG90aGVyLmxvY2FsUG9pbnQoKSkK
ICAgICAsIG1faW5uZXJVUkxFbGVtZW50KG90aGVyLlVSTEVsZW1lbnQoKSkKICAgICAsIG1fc2Ny
b2xsYmFyKG90aGVyLnNjcm9sbGJhcigpKQpAQCAtMjQxLDcgKzI0MSw3IEBAIEhpdFRlc3RSZXN1
bHQmIEhpdFRlc3RSZXN1bHQ6Om9wZXJhdG9yPShjb25zdCBIaXRUZXN0UmVzdWx0JiBvdGhlcikK
ICAgICBtX2hpdFRlc3RMb2NhdGlvbiA9IG90aGVyLm1faGl0VGVzdExvY2F0aW9uOwogICAgIG1f
aW5uZXJOb2RlID0gb3RoZXIuaW5uZXJOb2RlKCk7CiAgICAgbV9pbm5lck5vblNoYXJlZE5vZGUg
PSBvdGhlci5pbm5lck5vblNoYXJlZE5vZGUoKTsKLSAgICBtX3BvaW50SW5NYWluRnJhbWUgPSBv
dGhlci5tX3BvaW50SW5NYWluRnJhbWU7CisgICAgbV9wb2ludEluSW5uZXJOb2RlRnJhbWUgPSBv
dGhlci5tX3BvaW50SW5Jbm5lck5vZGVGcmFtZTsKICAgICBtX2xvY2FsUG9pbnQgPSBvdGhlci5s
b2NhbFBvaW50KCk7CiAgICAgbV9pbm5lclVSTEVsZW1lbnQgPSBvdGhlci5VUkxFbGVtZW50KCk7
CiAgICAgbV9zY3JvbGxiYXIgPSBvdGhlci5zY3JvbGxiYXIoKTsKQEAgLTczNSw3ICs3MzUsNyBA
QCB2b2lkIEhpdFRlc3RSZXN1bHQ6OmFwcGVuZChjb25zdCBIaXRUZXN0UmVzdWx0JiBvdGhlcikK
ICAgICAgICAgbV9pbm5lck5vZGUgPSBvdGhlci5pbm5lck5vZGUoKTsKICAgICAgICAgbV9pbm5l
ck5vblNoYXJlZE5vZGUgPSBvdGhlci5pbm5lck5vblNoYXJlZE5vZGUoKTsKICAgICAgICAgbV9s
b2NhbFBvaW50ID0gb3RoZXIubG9jYWxQb2ludCgpOwotICAgICAgICBtX3BvaW50SW5NYWluRnJh
bWUgPSBvdGhlci5tX3BvaW50SW5NYWluRnJhbWU7CisgICAgICAgIG1fcG9pbnRJbklubmVyTm9k
ZUZyYW1lID0gb3RoZXIubV9wb2ludEluSW5uZXJOb2RlRnJhbWU7CiAgICAgICAgIG1faW5uZXJV
UkxFbGVtZW50ID0gb3RoZXIuVVJMRWxlbWVudCgpOwogICAgICAgICBtX3Njcm9sbGJhciA9IG90
aGVyLnNjcm9sbGJhcigpOwogICAgICAgICBtX2lzT3ZlcldpZGdldCA9IG90aGVyLmlzT3Zlcldp
ZGdldCgpOwpAQCAtNzY4LDcgKzc2OCw3IEBAIFZlY3RvcjxTdHJpbmc+IEhpdFRlc3RSZXN1bHQ6
OmRpY3RhdGlvbkFsdGVybmF0aXZlcygpIGNvbnN0CiAgICAgaWYgKCFtX2lubmVyTm9uU2hhcmVk
Tm9kZSkKICAgICAgICAgcmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7CiAKLSAgICBEb2N1bWVudE1h
cmtlciogbWFya2VyID0gbV9pbm5lck5vblNoYXJlZE5vZGUtPmRvY3VtZW50KCktPm1hcmtlcnMo
KS0+bWFya2VyQ29udGFpbmluZ1BvaW50KGhpdFRlc3RMb2NhdGlvbigpLnBvaW50KCksIERvY3Vt
ZW50TWFya2VyOjpEaWN0YXRpb25BbHRlcm5hdGl2ZXMpOworICAgIERvY3VtZW50TWFya2VyKiBt
YXJrZXIgPSBtX2lubmVyTm9uU2hhcmVkTm9kZS0+ZG9jdW1lbnQoKS0+bWFya2VycygpLT5tYXJr
ZXJDb250YWluaW5nUG9pbnQocG9pbnRJbklubmVyTm9kZUZyYW1lKCksIERvY3VtZW50TWFya2Vy
OjpEaWN0YXRpb25BbHRlcm5hdGl2ZXMpOwogICAgIGlmICghbWFya2VyKQogICAgICAgICByZXR1
cm4gVmVjdG9yPFN0cmluZz4oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0hpdFRlc3RSZXN1bHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVz
dWx0LmgKaW5kZXggNTdhNDFkYWI1OTg4NjIzYjE5NjU1MThhZjIzMWRjYTM2Y2JiOTE1Yi4uZTRj
NWVmZTNiMjM4Njg0NDkwOTA4NTU3OTBhMTBlMzc2MTY4NzBkNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCkBAIC0xMjQsMTMgKzEyNCwxMyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBpc1JlY3RCYXNlZFRlc3QoKSBjb25zdCB7IHJldHVybiBtX2hpdFRlc3RMb2NhdGlv
bi5pc1JlY3RCYXNlZFRlc3QoKTsgfQogCiAgICAgLy8gVGhlIGhpdC10ZXN0ZWQgcG9pbnQgaW4g
dGhlIGNvb3JkaW5hdGVzIG9mIHRoZSBtYWluIGZyYW1lLgotICAgIGNvbnN0IExheW91dFBvaW50
JiBwb2ludEluTWFpbkZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9wb2ludEluTWFpbkZyYW1lOyB9
CisgICAgY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50SW5NYWluRnJhbWUoKSBjb25zdCB7IHJldHVy
biBtX2hpdFRlc3RMb2NhdGlvbi5wb2ludCgpOyB9CiAgICAgSW50UG9pbnQgcm91bmRlZFBvaW50
SW5NYWluRnJhbWUoKSBjb25zdCB7IHJldHVybiByb3VuZGVkSW50UG9pbnQocG9pbnRJbk1haW5G
cmFtZSgpKTsgfQotICAgIHZvaWQgc2V0UG9pbnRJbk1haW5GcmFtZShjb25zdCBMYXlvdXRQb2lu
dCYgcCkgeyBtX3BvaW50SW5NYWluRnJhbWUgPSBwOyB9CiAKICAgICAvLyBUaGUgaGl0LXRlc3Rl
ZCBwb2ludCBpbiB0aGUgY29vcmRpbmF0ZXMgb2YgdGhlIGlubmVyTm9kZSBmcmFtZSwgdGhlIGZy
YW1lIGNvbnRhaW5pbmcgaW5uZXJOb2RlLgotICAgIGNvbnN0IExheW91dFBvaW50JiBwb2ludElu
SW5uZXJOb2RlRnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2hpdFRlc3RMb2NhdGlvbi5wb2ludCgp
OyB9CisgICAgY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50SW5Jbm5lck5vZGVGcmFtZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcG9pbnRJbklubmVyTm9kZUZyYW1lOyB9CiAgICAgSW50UG9pbnQgcm91bmRl
ZFBvaW50SW5Jbm5lck5vZGVGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIHJvdW5kZWRJbnRQb2ludChw
b2ludEluSW5uZXJOb2RlRnJhbWUoKSk7IH0KKyAgICB2b2lkIHNldFBvaW50SW5Jbm5lck5vZGVG
cmFtZShjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQpIHsgbV9wb2ludEluSW5uZXJOb2RlRnJhbWUg
PSBwb2ludDsgfQogICAgIEZyYW1lKiBpbm5lck5vZGVGcmFtZSgpIGNvbnN0OwogCiAgICAgLy8g
VGhlIGhpdC10ZXN0ZWQgcG9pbnQgaW4gdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSBpbm5lciBub2Rl
LgpAQCAtMjAyLDcgKzIwMiw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8Tm9kZT4gbV9pbm5l
ck5vZGU7CiAgICAgUmVmUHRyPE5vZGU+IG1faW5uZXJOb25TaGFyZWROb2RlOwotICAgIExheW91
dFBvaW50IG1fcG9pbnRJbk1haW5GcmFtZTsgLy8gVGhlIGhpdC10ZXN0ZWQgcG9pbnQgaW4gbWFp
bi1mcmFtZSBjb29yZGluYXRlcy4KKyAgICBMYXlvdXRQb2ludCBtX3BvaW50SW5Jbm5lck5vZGVG
cmFtZTsgLy8gVGhlIGhpdC10ZXN0ZWQgcG9pbnQgaW4gaW5uZXJOb2RlIGZyYW1lIGNvb3JkaW5h
dGVzLgogICAgIExheW91dFBvaW50IG1fbG9jYWxQb2ludDsgLy8gQSBwb2ludCBpbiB0aGUgbG9j
YWwgY29vcmRpbmF0ZSBzcGFjZSBvZiBtX2lubmVyTm9uU2hhcmVkTm9kZSdzIHJlbmRlcmVyLiBB
bGxvd3MgdXMgdG8gZWZmaWNpZW50bHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IGRldGVybWluZSB3aGVyZSBpbnNpZGUgdGhlIHJlbmRlcmVyIHdlIGhpdCBvbiBzdWJzZXF1ZW50
IG9wZXJhdGlvbnMuCiAgICAgUmVmUHRyPEVsZW1lbnQ+IG1faW5uZXJVUkxFbGVtZW50OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmNwcAppbmRleCBhYTgyODcw
ZDRlZmE4YWRiYzgxOTZmZGQ2YTUwNmY1OThjYjA3NTM3Li5kMTk5MjJiMzQ0ZjI5NzFlMzYyNTdm
NWI3NDMxZDc2NzI0MWYzM2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRnJhbWVCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RnJhbWVCYXNlLmNwcApAQCAtMjksNiArMjksOCBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5j
bHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lRWxlbWVudEJhc2UuaCIKKyNp
bmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCisjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNs
dWRlICJSZW5kZXJWaWV3LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTEwNCw0ICsxMDYs
MzUgQEAgdm9pZCBSZW5kZXJGcmFtZUJhc2U6OmxheW91dFdpdGhGbGF0dGVuaW5nKGJvb2wgaGFz
Rml4ZWRXaWR0aCwgYm9vbCBoYXNGaXhlZEhlaWcKICAgICBzZXROZWVkc0xheW91dChmYWxzZSk7
CiB9CiAKK2Jvb2wgUmVuZGVyRnJhbWVCYXNlOjpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVx
dWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBjb25zdCBIaXRUZXN0TG9jYXRp
b24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9m
ZnNldCwgSGl0VGVzdEFjdGlvbiBhY3Rpb24pCit7CisgICAgaWYgKHJlcXVlc3QuYWxsb3dzQ2hp
bGRGcmFtZUNvbnRlbnQoKSkgeworICAgICAgICBGcmFtZVZpZXcqIGNoaWxkRnJhbWVWaWV3ID0g
c3RhdGljX2Nhc3Q8RnJhbWVWaWV3Kj4od2lkZ2V0KCkpOworICAgICAgICBSZW5kZXJWaWV3KiBj
aGlsZFJvb3QgPSBjaGlsZEZyYW1lVmlldyA/IHN0YXRpY19jYXN0PFJlbmRlclZpZXcqPihjaGls
ZEZyYW1lVmlldy0+ZnJhbWUoKS0+Y29udGVudFJlbmRlcmVyKCkpIDogMDsKKworICAgICAgICBp
ZiAoY2hpbGRSb290KSB7CisgICAgICAgICAgICBMYXlvdXRQb2ludCBhZGp1c3RlZExvY2F0aW9u
ID0gYWNjdW11bGF0ZWRPZmZzZXQgKyBsb2NhdGlvbigpOworICAgICAgICAgICAgSGl0VGVzdExv
Y2F0aW9uIG5ld0hpdFRlc3RMb2NhdGlvbihsb2NhdGlvbkluQ29udGFpbmVyLCAtdG9MYXlvdXRT
aXplKGFkanVzdGVkTG9jYXRpb24pKTsKKyAgICAgICAgICAgIEhpdFRlc3RSZXF1ZXN0IG5ld0hp
dFRlc3RSZXF1ZXN0KHJlcXVlc3QudHlwZSgpIHwgSGl0VGVzdFJlcXVlc3Q6OkNoaWxkRnJhbWVI
aXRUZXN0KTsKKyAgICAgICAgICAgIEhpdFRlc3RSZXN1bHQgY2hpbGRGcmFtZVJlc3VsdChuZXdI
aXRUZXN0TG9jYXRpb24pOworCisgICAgICAgICAgICBib29sIGlzSW5zaWRlQ2hpbGRGcmFtZSA9
IGNoaWxkUm9vdC0+bGF5ZXIoKS0+aGl0VGVzdChuZXdIaXRUZXN0UmVxdWVzdCwgbmV3SGl0VGVz
dExvY2F0aW9uLCBjaGlsZEZyYW1lUmVzdWx0KTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
Y2hpbGRGcmFtZVJlc3VsdCk7CisgICAgICAgICAgICBpZiAoaXNJbnNpZGVDaGlsZEZyYW1lKQor
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgICAgICBpZiAocmVxdWVzdC5z
aG91bGRUZXN0Q2hpbGRGcmFtZVNjcm9sbEJhcnMoKSkgeworICAgICAgICAgICAgICAgIC8vIFNj
cm9sbFZpZXcgc2Nyb2xsYmFycyBhcmUgbm90IHRoZSBzYW1lIGFzIFJlbmRlckxheWVyIHNjcm9s
bGJhcnMgdGVzdGVkIGJ5IFJlbmRlckxheWVyOjpoaXRUZXN0T3ZlcmZsb3dDb250cm9scywKKyAg
ICAgICAgICAgICAgICAvLyBzbyB3ZSBuZWVkIHRvIHRlc3QgU2Nyb2xsVmlldyBzY3JvbGxiYXJz
IHNlcGFyYXRlbHkgaGVyZS4KKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogQ29uc2lkZXIgaWYg
dGhpcyB0ZXN0IGNvdWxkIGJlIGRvbmUgdW5jb25kaXRpb25hbGx5LgorICAgICAgICAgICAgICAg
IFNjcm9sbGJhciogZnJhbWVTY3JvbGxiYXIgPSBjaGlsZEZyYW1lVmlldy0+c2Nyb2xsYmFyQXRQ
b2ludChuZXdIaXRUZXN0TG9jYXRpb24ucm91bmRlZFBvaW50KCkpOworICAgICAgICAgICAgICAg
IGlmIChmcmFtZVNjcm9sbGJhcikKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnNldFNjcm9s
bGJhcihmcmFtZVNjcm9sbGJhcik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisK
KyAgICByZXR1cm4gUmVuZGVyUGFydDo6bm9kZUF0UG9pbnQocmVxdWVzdCwgcmVzdWx0LCBsb2Nh
dGlvbkluQ29udGFpbmVyLCBhY2N1bXVsYXRlZE9mZnNldCwgYWN0aW9uKTsKK30KKwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5oCmluZGV4IDRmYWQ1NjBjNWIz
MzdmOTZiODEzYjBjYjc5MDU0NTM2MmRjNjY4N2MuLmE3ZGVlZGFiMTAyODNkZjY5NTQxOGVkZTBm
YmI5NGQ0OWUxMmU0OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGcmFtZUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVC
YXNlLmgKQEAgLTM2LDYgKzM2LDcgQEAgcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFJlbmRlckZy
YW1lQmFzZShFbGVtZW50Kik7CiAKIHB1YmxpYzoKKyAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0UG9p
bnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExv
Y2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0
ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pIE9WRVJSSURFOwogICAgIHZvaWQgbGF5b3V0V2l0aEZs
YXR0ZW5pbmcoYm9vbCBmaXhlZFdpZHRoLCBib29sIGZpeGVkSGVpZ2h0KTsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDQ3MTAzMDA5Y2JiY2E1NmE0
ZmVjOWMwOTlhYjFhZmE2Y2U4ODY3ODYuLjJlZmI0NWNmMTM5ZmFiZDcyZjk2OWU1NjRlNDA2OWM4
Y2E3NTQyNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAt
MzY3Niw3ICszNjc2LDcgQEAgYm9vbCBSZW5kZXJMYXllcjo6aGl0VGVzdChjb25zdCBIaXRUZXN0
UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgSGl0VGVzdExvY2F0aW9uJgogICAgICAgICAvLyBXZSBk
aWRuJ3QgaGl0IGFueSBsYXllci4gSWYgd2UgYXJlIHRoZSByb290IGxheWVyIGFuZCB0aGUgbW91
c2UgaXMgLS0gb3IganVzdCB3YXMgLS0gZG93biwgCiAgICAgICAgIC8vIHJldHVybiBvdXJzZWx2
ZXMuIFdlIGRvIHRoaXMgc28gbW91c2UgZXZlbnRzIGNvbnRpbnVlIGdldHRpbmcgZGVsaXZlcmVk
IGFmdGVyIGEgZHJhZyBoYXMgCiAgICAgICAgIC8vIGV4aXRlZCB0aGUgV2ViVmlldywgYW5kIHNv
IGhpdCB0ZXN0aW5nIG92ZXIgYSBzY3JvbGxiYXIgaGl0cyB0aGUgY29udGVudCBkb2N1bWVudC4K
LSAgICAgICAgaWYgKChyZXF1ZXN0LmFjdGl2ZSgpIHx8IHJlcXVlc3QucmVsZWFzZSgpKSAmJiBp
c1Jvb3RMYXllcigpKSB7CisgICAgICAgIGlmICghcmVxdWVzdC5pc0NoaWxkRnJhbWVIaXRUZXN0
KCkgJiYgKHJlcXVlc3QuYWN0aXZlKCkgfHwgcmVxdWVzdC5yZWxlYXNlKCkpICYmIGlzUm9vdExh
eWVyKCkpIHsKICAgICAgICAgICAgIHJlbmRlcmVyKCktPnVwZGF0ZUhpdFRlc3RSZXN1bHQocmVz
dWx0LCB0b1JlbmRlclZpZXcocmVuZGVyZXIoKSktPmZsaXBGb3JXcml0aW5nTW9kZShoaXRUZXN0
TG9jYXRpb24ucG9pbnQoKSkpOwogICAgICAgICAgICAgaW5zaWRlTGF5ZXIgPSB0aGlzOwogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggMGJmYzZhNmYxYWQ1
NzU3ZjA4NzVhY2RjZjc3NDg3YTg2YThmNWIwYi4uNWI5ZWVkNzMxZjFmNzczYWUxNGRlMGEzZTY1
NjNkY2RmZjBlZWExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTIz
NSwxNCArMTIzNSwxNCBAQCBQYXNzUmVmUHRyPENsaWVudFJlY3RMaXN0PiBJbnRlcm5hbHM6OnRv
dWNoRXZlbnRUYXJnZXRDbGllbnRSZWN0cyhEb2N1bWVudCogZG9jdQogI2VuZGlmCiAKIFBhc3NS
ZWZQdHI8Tm9kZUxpc3Q+IEludGVybmFsczo6bm9kZXNGcm9tUmVjdChEb2N1bWVudCogZG9jdW1l
bnQsIGludCB4LCBpbnQgeSwgdW5zaWduZWQgdG9wUGFkZGluZywgdW5zaWduZWQgcmlnaHRQYWRk
aW5nLAotICAgIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nLCBi
b29sIGlnbm9yZUNsaXBwaW5nLCBib29sIGFsbG93U2hhZG93Q29udGVudCwgRXhjZXB0aW9uQ29k
ZSYgZWMpIGNvbnN0CisgICAgdW5zaWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbGVmdFBh
ZGRpbmcsIGJvb2wgaWdub3JlQ2xpcHBpbmcsIGJvb2wgYWxsb3dTaGFkb3dDb250ZW50LCBib29s
IGFsbG93Q2hpbGRGcmFtZUNvbnRlbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogewogICAg
IGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5mcmFtZSgpIHx8ICFkb2N1bWVudC0+ZnJhbWUo
KS0+dmlldygpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9CiAKLSAgICByZXR1cm4gZG9jdW1lbnQtPm5vZGVzRnJvbVJlY3QoeCwg
eSwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0UGFkZGluZywg
aWdub3JlQ2xpcHBpbmcsIGFsbG93U2hhZG93Q29udGVudCk7CisgICAgcmV0dXJuIGRvY3VtZW50
LT5ub2Rlc0Zyb21SZWN0KHgsIHksIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFk
ZGluZywgbGVmdFBhZGRpbmcsIGlnbm9yZUNsaXBwaW5nLCBhbGxvd1NoYWRvd0NvbnRlbnQsIGFs
bG93Q2hpbGRGcmFtZUNvbnRlbnQpOwogfQogCiB2b2lkIEludGVybmFsczo6ZW1pdEluc3BlY3Rv
ckRpZEJlZ2luRnJhbWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggYjA2Nzk0
OGMzNmZlZWJlNWQ2ZDU5YjVkYWNlMzdiODNhMzQ1MTEyNi4uMWU4ZTNkMTk1MjkxMzNhNDQ2YmJh
OWE0OWFkMTI4NGMzMzA3ZmJlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0x
NzYsNyArMTc2LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICBQYXNzUmVmUHRyPE5vZGVMaXN0
PiBub2Rlc0Zyb21SZWN0KERvY3VtZW50KiwgaW50IHgsIGludCB5LCB1bnNpZ25lZCB0b3BQYWRk
aW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcsCi0gICAgICAgIHVuc2lnbmVkIGJvdHRvbVBhZGRp
bmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nLCBib29sIGlnbm9yZUNsaXBwaW5nLCBib29sIGFsbG93
U2hhZG93Q29udGVudCwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OworICAgICAgICB1bnNpZ25lZCBi
b3R0b21QYWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGluZywgYm9vbCBpZ25vcmVDbGlwcGluZywg
Ym9vbCBhbGxvd1NoYWRvd0NvbnRlbnQsIGJvb2wgYWxsb3dDaGlsZEZyYW1lQ29udGVudCwgRXhj
ZXB0aW9uQ29kZSYpIGNvbnN0OwogCiAgICAgdm9pZCBlbWl0SW5zcGVjdG9yRGlkQmVnaW5GcmFt
ZSgpOwogICAgIHZvaWQgZW1pdEluc3BlY3RvckRpZENhbmNlbEZyYW1lKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggNDllZWM3YzI2MWEzZGY3YTc3NDk1ZDRjZTIwMzM2
NTljYjIzYTA4Mi4uZGM1NzI1ODlkZmNjN2QzMTczMGQ0NWM1ZTc4OTNjNmI5MTQ1ZmU5NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtMTQ1LDcgKzE0NSw3IEBACiAKICAg
ICBOb2RlTGlzdCBub2Rlc0Zyb21SZWN0KGluIERvY3VtZW50IGRvY3VtZW50LCBpbiBsb25nIHgs
IGluIGxvbmcgeSwKICAgICAgICAgaW4gdW5zaWduZWQgbG9uZyB0b3BQYWRkaW5nLCBpbiB1bnNp
Z25lZCBsb25nIHJpZ2h0UGFkZGluZywgaW4gdW5zaWduZWQgbG9uZyBib3R0b21QYWRkaW5nLCBp
biB1bnNpZ25lZCBsb25nIGxlZnRQYWRkaW5nLAotICAgICAgICBpbiBib29sZWFuIGlnbm9yZUNs
aXBwaW5nLCBpbiBib29sZWFuIGFsbG93U2hhZG93Q29udGVudCkgcmFpc2VzIChET01FeGNlcHRp
b24pOworICAgICAgICBpbiBib29sZWFuIGlnbm9yZUNsaXBwaW5nLCBpbiBib29sZWFuIGFsbG93
U2hhZG93Q29udGVudCwgaW4gYm9vbGVhbiBhbGxvd0NoaWxkRnJhbWVDb250ZW50KSByYWlzZXMg
KERPTUV4Y2VwdGlvbik7CiAKICAgICB2b2lkIGVtaXRJbnNwZWN0b3JEaWRCZWdpbkZyYW1lKCk7
CiAgICAgdm9pZCBlbWl0SW5zcGVjdG9yRGlkQ2FuY2VsRnJhbWUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZi5pbiBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJL
aXQyLmRlZi5pbgppbmRleCA0ZThhYWRlODA1ZjgyMzA2ZjE4Yzg4MzUxNjZhMzgzOTYyMTZlNDVh
Li41ODhjODQ5NGM1ZjdhMGU4NGI3NDg0MWQyNzZiNmZlYjkwNzRkYzYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYuaW4KKysrIGIvU291cmNlL1dlYktpdDIvd2lu
L1dlYktpdDIuZGVmLmluCkBAIC0zMDksNyArMzA5LDcgQEAgRVhQT1JUUwogICAgICAgICA/PzFD
b250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlckBXZWJDb3JlQEBNQUVAWFoKICAgICAgICAgP2NvbnRl
eHREZXN0cm95ZWRAQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXJAV2ViQ29yZUBAVUFFWFhaCiAg
ICAgICAgID8/MENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyQFdlYkNvcmVAQFFBRUBQQVZTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QDFAQFoKLSAgICAgICAgP25vZGVzRnJvbVJlY3RARG9jdW1lbnRA
V2ViQ29yZUBAUUJFP0FWPyRQYXNzUmVmUHRyQFZOb2RlTGlzdEBXZWJDb3JlQEBAV1RGQEBISElJ
SUlfTjBAWgorICAgICAgICA/bm9kZXNGcm9tUmVjdEBEb2N1bWVudEBXZWJDb3JlQEBRQkU/QVY/
JFBhc3NSZWZQdHJAVk5vZGVMaXN0QFdlYkNvcmVAQEBXVEZAQEhISUlJSV9OMDBAWgogICAgICAg
ICA/c2VsZWN0aW9uU3RhcnRIYXNNYXJrZXJGb3JARWRpdG9yQFdlYkNvcmVAQFFCRV9OVzRNYXJr
ZXJUeXBlQERvY3VtZW50TWFya2VyQDJASEhAWgogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkK
ICAgICAgICAgP3dlYmtpdFdpbGxFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50QERvY3VtZW50QFdl
YkNvcmVAQFFBRVhQQVZFbGVtZW50QDJAQFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMv
c3ltYm9scy5maWx0ZXIgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCmluZGV4IGY4
N2Y4MzQ4MGY5ZjNhNjdiOThhY2JjYmNlYzBjZWY1ZTU4MGYyM2MuLmUyZTMxODc0OTg2YmE1OGUy
MjQ2NTFkODE5YmY2MWY2YjE1OTIxZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvc3lt
Ym9scy5maWx0ZXIKKysrIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgpAQCAtMTk0
LDcgKzE5NCw3IEBAIF9aTjdXZWJDb3JlMjJSdW50aW1lRW5hYmxlZEZlYXR1cmVzNDBpc0xhbmdB
dHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkRTsKIF9aTjdXZWJDb3JlMjJSdW50aW1l
RW5hYmxlZEZlYXR1cmVzMjJpc0RpYWxvZ0VsZW1lbnRFbmFibGVkRTsKIF9aTjdXZWJDb3JlMjJS
dW50aW1lRW5hYmxlZEZlYXR1cmVzMzdpc0F1dGhvclNoYWRvd0RPTUZvckFueUVsZW1lbnRFbmFi
bGVkRTsKIF9aTjdXZWJDb3JlMjJSdW50aW1lRW5hYmxlZEZlYXR1cmVzMjBpc1N0eWxlU2NvcGVk
RW5hYmxlZEU7Ci1fWk5LN1dlYkNvcmU4RG9jdW1lbnQxM25vZGVzRnJvbVJlY3RFaWlqampqYmI7
CitfWk5LN1dlYkNvcmU4RG9jdW1lbnQxM25vZGVzRnJvbVJlY3RFaWlqampqYmJiOwogX1pON1dl
YkNvcmU0dG9KU0VQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBOU184
Tm9kZUxpc3RFOwogX1pOSzdXZWJDb3JlNkVkaXRvcjI2c2VsZWN0aW9uU3RhcnRIYXNNYXJrZXJG
b3JFTlNfMTREb2N1bWVudE1hcmtlcjEwTWFya2VyVHlwZUVpaTsKIF9aTjdXZWJDb3JlOERvY3Vt
ZW50MzN3ZWJraXREaWRFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnRFUE5TXzdFbGVtZW50RTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCA1ZGY1YWVkMWE2ZjlmY2FjYWNhNmUzODFhYjQ3ZmM3YjAxOWFjM2Y5Li5jZmJkMWIwMDdk
ZjQ4ZDM2NjUxMWExZGY5ZTllZDY0ZWE4YjIyMDIxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIw
MTItMTItMTMgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+
CisKKyAgICAgICAgQWxsb3cgY2hpbGQtZnJhbWUgY29udGVudCBpbiBoaXQtdGVzdHMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTIwNAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEEgbmV3IHRlc3RzIGZv
ciBub2Rlc0Zyb21SZWN0IHRoYXQgcmV0dXJucyByZXN1bHQgZnJvbSBjaGlsZCBmcmFtZXMuCisK
KyAgICAgICAgKiBmYXN0L2RvbS9ub2Rlc0Zyb21SZWN0L25vZGVzRnJvbVJlY3QtY2hpbGQtZnJh
bWUtY29udGVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL25vZGVz
RnJvbVJlY3Qvbm9kZXNGcm9tUmVjdC1jaGlsZC1mcmFtZS1jb250ZW50Lmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZG9tL25vZGVzRnJvbVJlY3Qvbm9kZXNGcm9tUmVjdC1jb250aW51YXRp
b24tY3Jhc2guaHRtbDoKKyAgICAgICAgKiBmYXN0L2RvbS9ub2Rlc0Zyb21SZWN0L3Jlc291cmNl
cy9jaGlsZC1mcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ub2Rlc0Zyb21S
ZWN0L3Jlc291cmNlcy9ub2Rlc0Zyb21SZWN0LmpzOgorICAgICAgICAoY2hlY2spOgorICAgICAg
ICAoY2hlY2tTaGFkb3dDb250ZW50KToKKyAgICAgICAgKG5vZGVzRnJvbVJlY3RBc1N0cmluZyk6
CisKIDIwMTItMTItMTMgIEdyemVnb3J6IEN6YWprb3dza2kgIDxnLmN6YWprb3dza2lAc2Ftc3Vu
Zy5jb20+CiAKICAgICAgICAgW01hY11bV0syXSBVbnJldmlld2VkLCBzcGVsbGluZy11bmlmaWVk
LWVtdWxhdGlvbi5odG1sIGZhaWxzIGFmdGVyIDEzNzU3MQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vbm9kZXNGcm9tUmVjdC9ub2Rlc0Zyb21SZWN0LWNoaWxkLWZyYW1lLWNvbnRl
bnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9tUmVjdC9ub2Rl
c0Zyb21SZWN0LWNoaWxkLWZyYW1lLWNvbnRlbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlj
MWM5NzAwYzI1OWJkMjI0OTAwM2EzZTgwMzU0N2UxMjRkY2ZmZmYKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2Rlc0Zyb21SZWN0L25vZGVzRnJvbVJlY3QtY2hpbGQt
ZnJhbWUtY29udGVudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOCBAQAorCitEb2N1bWVudDo6
bm9kZXNGcm9tUmVjdCA6IEFsbG93IGNoaWxkLWZyYW1lIGNvbnRlbnQgLSBidWcgOTUyMDQKKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91
bmQgZm9yIHJlY3QKK1BBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QKK1BBU1Mg
QWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QKK1BBU1MgQWxsIGNvcnJlY3Qgbm9kZXMg
Zm91bmQgZm9yIHJlY3QKK1BBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QKK1BB
U1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QKK1BBU1MgQWxsIGNvcnJlY3Qgbm9k
ZXMgZm91bmQgZm9yIHJlY3QKK1BBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QK
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2Rlc0Zyb21SZWN0L25vZGVzRnJvbVJlY3Qt
Y2hpbGQtZnJhbWUtY29udGVudC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9t
UmVjdC9ub2Rlc0Zyb21SZWN0LWNoaWxkLWZyYW1lLWNvbnRlbnQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
ZGI0MTY3YjE3ODAyZGNlYjllMzg2YzU0ZTMxZTU0Njg1YzUxZTk0Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9tUmVjdC9ub2Rlc0Zyb21SZWN0LWNoaWxk
LWZyYW1lLWNvbnRlbnQuaHRtbApAQCAtMCwwICsxLDc3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+CisgICAgPHRpdGxlPkRvY3VtZW50Ojpub2Rlc0Zyb21SZWN0IDogQWxsb3cg
Y2hpbGQtZnJhbWUgY29udGVudCAtIGJ1ZyA5NTIwNDwvdGl0bGU+CisgICAgPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dCBzcmM9InJlc291cmNlcy9ub2Rlc0Zyb21SZWN0LmpzIj48L3NjcmlwdD4KKyAgICA8c3R5bGU+
CisgICAgICAgIGJvZHkgeyBtYXJnaW46IDBweDsgfQorICAgICAgICAjc2FuZGJveCB7CisgICAg
ICAgICAgICB3aWR0aDogNDAwcHg7CisgICAgICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgICAg
ICB9CisgICAgICAgICNzYW5kYm94ICNsYXllciB7CisgICAgICAgICAgICBmbG9hdDogcmlnaHQ7
CisgICAgICAgIH0KKyAgICAgICAgI3NhbmRib3ggaWZyYW1lIHsKKyAgICAgICAgICAgIGRpc3Bs
YXk6IGJsb2NrOworICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKKyAgICAgICAg
ICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgICAgICAg
ICBib3JkZXI6IG5vbmU7CisgICAgICAgIH0KKyAgICAgICAgLnJvdGF0ZTE4MCB7IC13ZWJraXQt
dHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTsgfQorICAgICAgICAucm90YXRlOTAgeyAtd2Via2l0
LXRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsgfQorICAgICAgICAjc2FuZGJveCAuYm94IHsKKyAg
ICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CisgICAgICAgICAgICBoZWlnaHQ6IDEw
MHB4OworICAgICAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgICAgICAgYm9yZGVyOiAxcHgg
c29saWQgYmxhY2s7CisgICAgICAgIH0KKyAgICA8L3N0eWxlPgorPC9oZWFkPgorPGJvZHkgaWQ9
ImJvZHkiPgorICAgIDxkaXYgaWQ9c2FuZGJveD4KKyAgICAgICAgPGRpdiBpZD1sYXllcj4KKyAg
ICAgICAgICAgIDxpZnJhbWUgaWQ9ImlmcmFtZTEiIHNyYz0icmVzb3VyY2VzL2NoaWxkLWZyYW1l
Lmh0bWwiPjwvaWZyYW1lPgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGRpdiBpZD1kaXYxIGNs
YXNzPWJveD48L2Rpdj4KKyAgICAgICAgPGRpdiBpZD1kaXYyIGNsYXNzPWJveD48L2Rpdj4KKyAg
ICA8L2Rpdj4KKworICAgIDxwIGlkPSdkZXNjcmlwdGlvbic+PC9wPgorICAgIDxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorICAgIDxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCI+
CisgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQorICAgICAgICB7CisgICAgICAgICAgICBkZXNj
cmlwdGlvbihkb2N1bWVudC50aXRsZSk7CisKKyAgICAgICAgICAgIC8vIFNldCB1cCBzaG9ydGN1
dCBhY2Nlc3MgdG8gZWxlbWVudHMKKyAgICAgICAgICAgIHZhciBlID0ge307CisgICAgICAgICAg
ICBbJ3NhbmRib3gnLCAnbGF5ZXInXS5mb3JFYWNoKGZ1bmN0aW9uKGEpIHsKKyAgICAgICAgICAg
ICAgICBlW2FdID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYSk7CisgICAgICAgICAgICB9KTsK
KworICAgICAgICAgICAgY2hlY2tSZWN0KDI1LCAyNSwgMTAwLCAxMDAsICJESVYjZGl2MiwgRElW
I2RpdjEsIERJViNzYW5kYm94Iik7CisgICAgICAgICAgICBjaGVja1JlY3QoMjIwLCAyMCwgNzAs
IDcwLCAiRElWI2xlZnQiKTsKKyAgICAgICAgICAgIGNoZWNrUmVjdCgyNTAsIDIwLCAxMDAsIDcw
LCAiRElWI3JpZ2h0LCBESVYjbGVmdCwgSFRNTCIpOworCisgICAgICAgICAgICBjaGVja1JlY3Qo
MTUwLCA1MCwgMTAwLCAxMDAsICJESVYjbGVmdCwgSFRNTCwgI2RvY3VtZW50LCBJRlJBTUUjaWZy
YW1lMSwgRElWI2xheWVyLCBESVYjZGl2MiwgRElWI2RpdjEsIERJViNzYW5kYm94Iik7CisKKyAg
ICAgICAgICAgIGUubGF5ZXIuc2V0QXR0cmlidXRlKCdjbGFzcycsICdyb3RhdGUxODAnKTsKKyAg
ICAgICAgICAgIGNoZWNrUmVjdCgyMjAsIDIwLCA3MCwgNzAsICJESVYjcmlnaHQiKTsKKyAgICAg
ICAgICAgIGNoZWNrUmVjdCgxNTAsIDUwLCAxMDAsIDEwMCwgIkRJViNyaWdodCwgSFRNTCwgI2Rv
Y3VtZW50LCBJRlJBTUUjaWZyYW1lMSwgRElWI2xheWVyLCBESVYjZGl2MiwgRElWI2RpdjEsIERJ
ViNzYW5kYm94Iik7CisKKyAgICAgICAgICAgIGUubGF5ZXIuc2V0QXR0cmlidXRlKCdjbGFzcycs
ICdyb3RhdGU5MCcpOworICAgICAgICAgICAgY2hlY2tSZWN0KDI1MCwgMjAsIDEwMCwgNzAsICJE
SVYjbGVmdCIpOworICAgICAgICAgICAgY2hlY2tSZWN0KDE1MCwgMjAsIDIwMCwgNjAsICJESVYj
bGVmdCwgSFRNTCwgI2RvY3VtZW50LCBJRlJBTUUjaWZyYW1lMSwgRElWI2xheWVyLCBESVYjZGl2
MSwgRElWI3NhbmRib3giKTsKKworICAgICAgICAgICAgZS5zYW5kYm94LmRpc3BsYXkgPSAnbm9u
ZSc7CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorICAgICAgICBqc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKKyAgICAgICAgd2luZG93Lm9ubG9hZCA9IHJ1blRlc3Q7CisgICAg
PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vbm9kZXNGcm9tUmVjdC9ub2Rlc0Zyb21SZWN0LWNvbnRpbnVhdGlvbi1jcmFz
aC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9tUmVjdC9ub2Rlc0Zyb21SZWN0
LWNvbnRpbnVhdGlvbi1jcmFzaC5odG1sCmluZGV4IGFmZmE1ZTUxMWVjNzdmZDQwMDJjYmYxNjk5
OTRmMmQwNWRjNTQ2OGEuLmMxNmNkODJhMTljYWZhZTU1NWRiZGI2YzJlOTFhMzdhZDNiYjI2OGMg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3Qvbm9kZXNGcm9t
UmVjdC1jb250aW51YXRpb24tY3Jhc2guaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9u
b2Rlc0Zyb21SZWN0L25vZGVzRnJvbVJlY3QtY29udGludWF0aW9uLWNyYXNoLmh0bWwKQEAgLTcs
NyArNyw3IEBAIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlv
bigpIHsKICAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMpCiAgICAgICAgIGFsZXJ0KCJUaGlzIHRl
c3QgcmVxdWlyZXMgd2luZG93LmludGVybmFscyIpOwotICAgIHZhciBub2RlcyA9IGludGVybmFs
cy5ub2Rlc0Zyb21SZWN0KGRvY3VtZW50LCAxMDAsIDEwMCwgMjAsIDIwLCAyMCwgMjAsIGZhbHNl
LCBmYWxzZSk7CisgICAgdmFyIG5vZGVzID0gaW50ZXJuYWxzLm5vZGVzRnJvbVJlY3QoZG9jdW1l
bnQsIDEwMCwgMTAwLCAyMCwgMjAsIDIwLCAyMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CiAgICAg
YWxlcnQoIlBBU1M6IFRoaXMgdGVzdCBkaWQgbm90IHRyaWdnZXIgYW4gQVNTRVJUIik7CiB9Owog
PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2Rlc0Zyb21SZWN0
L3Jlc291cmNlcy9jaGlsZC1mcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNG
cm9tUmVjdC9yZXNvdXJjZXMvY2hpbGQtZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMDRkN2ZhYWRi
Yjk4NjY3YmZlYzRhNDcyN2M4ZGEyODczNjMzZTY5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9tUmVjdC9yZXNvdXJjZXMvY2hpbGQtZnJhbWUuaHRtbApA
QCAtMCwwICsxLDI3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGUg
dHlwZT0idGV4dC9jc3MiPgorICAgIGJvZHkgeyBtYXJnaW46IDBweDsgfQorICAgIGRpdiB7IAor
ICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OworICAgICAgICBib3JkZXI6IDFweCBzb2xp
ZCBibGFjazsKKyAgICB9CisgICAgI2xlZnQgeworICAgICAgICBmbG9hdDpsZWZ0OworICAgICAg
ICB3aWR0aDogOTBweDsKKyAgICAgICAgaGVpZ2h0OiAxOTBweDsKKyAgICB9CisgICAgI3JpZ2h0
IHsKKyAgICAgICAgZmxvYXQ6cmlnaHQ7CisgICAgICAgIHdpZHRoOiA5MHB4OworICAgICAgICBo
ZWlnaHQ6IDE5MHB4OworICAgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2
IGlkPWxlZnQ+PC9kaXY+CisgICAgPGRpdiBpZD1yaWdodD48L2Rpdj4KKzwvYm9keT4KKzwvaHRt
bD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9tUmVjdC9yZXNv
dXJjZXMvbm9kZXNGcm9tUmVjdC5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJl
Y3QvcmVzb3VyY2VzL25vZGVzRnJvbVJlY3QuanMKaW5kZXggZDAyYzFjN2RiNDllNjgzZTgwMzUw
NzZkODI0MDEyNzUxNWY3YWIwNC4uYTcyODdjOGI0OTdkYjRiMTgwYzY1NzZiNTFkOWM4Yjk1OGY5
NTIzNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9tUmVjdC9yZXNv
dXJjZXMvbm9kZXNGcm9tUmVjdC5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2Rlc0Zy
b21SZWN0L3Jlc291cmNlcy9ub2Rlc0Zyb21SZWN0LmpzCkBAIC0xLDcgKzEsOCBAQAogLyoKICAq
IENvbnRyaWJ1dG9yczoKICAqICAgICAqIEFudG9uaW8gR29tZXMgPHRvbmlraXRvb0B3ZWJraXQu
b3JnPgotICoqLworICogICAgICogQWxsYW4gU2FuZGZlbGQgSmVuc2VuIDxhbGxhbi5qZW5zZW5A
ZGlnaWEuY29tPgorKiovCiAKIGZ1bmN0aW9uIGNoZWNrKHgsIHksIHRvcFBhZGRpbmcsIHJpZ2h0
UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcsIGxpc3QsIGRvYykKIHsKQEAgLTEx
LDcgKzEyLDcgQEAgZnVuY3Rpb24gY2hlY2soeCwgeSwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5n
LCBib3R0b21QYWRkaW5nLCBsZWZ0UGFkZGluZywgbGlzdCwKICAgaWYgKCFkb2MpCiAgICAgZG9j
ID0gZG9jdW1lbnQ7CiAKLSAgdmFyIG5vZGVzID0gaW50ZXJuYWxzLm5vZGVzRnJvbVJlY3QoZG9j
LCB4LCB5LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRk
aW5nLCB0cnVlIC8qIGlnbm9yZUNsaXBwaW5nICovLCBmYWxzZSAvKiBhbGxvdyBzaGFkb3cgY29u
dGVudCAqLyk7CisgIHZhciBub2RlcyA9IGludGVybmFscy5ub2Rlc0Zyb21SZWN0KGRvYywgeCwg
eSwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0UGFkZGluZywg
dHJ1ZSAvKiBpZ25vcmVDbGlwcGluZyAqLywgZmFsc2UgLyogYWxsb3cgc2hhZG93IGNvbnRlbnQg
Ki8sIGZhbHNlIC8qIGFsbG93IGNoaWxkLWZyYW1lIGNvbnRlbnQgKi8pOwogICBpZiAoIW5vZGVz
KQogICAgIHJldHVybjsKIApAQCAtNDUsNyArNDYsNyBAQCBmdW5jdGlvbiBjaGVja1NoYWRvd0Nv
bnRlbnQoeCwgeSwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0
UAogICBpZiAoIWRvYykKICAgICBkb2MgPSBkb2N1bWVudDsKIAotICB2YXIgbm9kZXMgPSBpbnRl
cm5hbHMubm9kZXNGcm9tUmVjdChkb2MsIHgsIHksIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywg
Ym90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcsIHRydWUgLyogaWdub3JlQ2xpcHBpbmcgKi8sIHRy
dWUgLyogYWxsb3dTaGFkb3dDb250ZW50ICovKTsKKyAgdmFyIG5vZGVzID0gaW50ZXJuYWxzLm5v
ZGVzRnJvbVJlY3QoZG9jLCB4LCB5LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBh
ZGRpbmcsIGxlZnRQYWRkaW5nLCB0cnVlIC8qIGlnbm9yZUNsaXBwaW5nICovLCB0cnVlIC8qIGFs
bG93U2hhZG93Q29udGVudCAqLywgZmFsc2UgLyogYWxsb3cgY2hpbGQtZnJhbWUgY29udGVudCAq
Lyk7CiAgIGlmICghbm9kZXMpCiAgICAgcmV0dXJuOwogCkBAIC05Niw3ICs5Nyw3IEBAIGZ1bmN0
aW9uIGNoZWNrUmVjdChsZWZ0LCB0b3AsIHdpZHRoLCBoZWlnaHQsIGV4cGVjdGVkTm9kZVN0cmlu
ZywgZG9jKQogZnVuY3Rpb24gbm9kZXNGcm9tUmVjdEFzU3RyaW5nKGRvYywgeCwgeSwgdG9wUGFk
ZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0UGFkZGluZykKIHsKICAgICB2
YXIgbm9kZVN0cmluZyA9ICIiOwotICAgIHZhciBub2RlcyA9IGludGVybmFscy5ub2Rlc0Zyb21S
ZWN0KGRvYywgeCwgeSwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBs
ZWZ0UGFkZGluZywgdHJ1ZSAvKiBpZ25vcmVDbGlwcGluZyAqLywgZmFsc2UgLyogYWxsb3cgc2hh
ZG93IGNvbnRlbnQgKi8pOworICAgIHZhciBub2RlcyA9IGludGVybmFscy5ub2Rlc0Zyb21SZWN0
KGRvYywgeCwgeSwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0
UGFkZGluZywgdHJ1ZSAvKiBpZ25vcmVDbGlwcGluZyAqLywgZmFsc2UgLyogYWxsb3cgc2hhZG93
IGNvbnRlbnQgKi8sIHRydWUgLyogYWxsb3cgY2hpbGQtZnJhbWUgY29udGVudCAqLyk7CiAgICAg
aWYgKCFub2RlcykKICAgICAgICAgcmV0dXJuIG5vZGVTdHJpbmc7CiAKQEAgLTExMCw2ICsxMTEs
OCBAQCBmdW5jdGlvbiBub2Rlc0Zyb21SZWN0QXNTdHJpbmcoZG9jLCB4LCB5LCB0b3BQYWRkaW5n
LCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbgogICAgICAgICAgICAgfQogICAgICAgICB9IGVs
c2UgaWYgKG5vZGVzW2ldLm5vZGVUeXBlID09IDMpIHsKICAgICAgICAgICAgIG5vZGVTdHJpbmcg
Kz0gIiciICsgbm9kZXNbaV0uZGF0YSArICInIjsKKyAgICAgICAgfSBlbHNlIGlmIChub2Rlc1tp
XS5ub2RlVHlwZSA9PSA5KSB7CisgICAgICAgICAgICBub2RlU3RyaW5nICs9ICIjZG9jdW1lbnQi
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KQEAg
LTEyMCw3ICsxMjMsNiBAQCBmdW5jdGlvbiBub2Rlc0Zyb21SZWN0QXNTdHJpbmcoZG9jLCB4LCB5
LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbgogICAgIHJldHVybiBub2Rl
U3RyaW5nOwogfQogCi0KIGZ1bmN0aW9uIGdldENlbnRlckZvcihlbGVtZW50KQogewogICB2YXIg
cmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CmRpZmYgLS1naXQgYS9DaGFu
Z2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggN2I3MjExN2NmZWJmZjAyYWMyMTZkMjFlNTRhMGJiMzA2
OTFjMGNjZC4uODg1Mzg0MGExN2NkM2Q3NzI2NjkyMWIzNTAwYmFjZThlZWZhNjFmOSAxMDA2NDQK
LS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTEy
LTEzICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisg
ICAgICAgIEFsbG93IGNoaWxkLWZyYW1lIGNvbnRlbnQgaW4gaGl0LXRlc3RzLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUyMDQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgZXhwb3J0ZWQgc3lt
Ym9scy4KKworICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXI6CisKIDIw
MTItMTItMTMgIEplcm9tZSBQYXNpb24gPEplcm9tZS5QYXNpb25AZGlnaWEuY29tPgogCiAgICAg
ICAgIFtRdF0gRml4IG1pc3NpbmcgZG9jIGRlcGVuZGVuY3kgdG8gZXhhbXBsZXMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181880</attachid>
            <date>2013-01-09 02:02:51 -0800</date>
            <delta_ts>2013-01-09 06:04:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95204-20130109105919.patch</filename>
            <type>text/plain</type>
            <size>35373</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODVhYjU0M2UxYjE1ZGYy
MzkyYzdjZDlmNDI1ODhlODU3N2NmYmIyMy4uMTc4MDNiMTljYTBkNDNjNzc0NDU0OGYwYWJmODFj
NTVjMGQwOTcxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEyLTEyLTEzICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIEFs
bG93IGNoaWxkLWZyYW1lIGNvbnRlbnQgaW4gaGl0LXRlc3RzLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUyMDQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvcnMgaG93IEV2ZW50SGFuZGxlcjo6
aGl0VGVzdFJlc3VsdEF0UG9pbnQgaGFuZGxlcyBjaGlsZC1mcmFtZSBjb250ZW50LAorICAgICAg
ICBpdCBpcyBub3cgaGFuZGxlZCBieSB0aGUgaGl0IHRlc3QgaXRzZWxmIGNvbnRyb2xsZWQgYnkg
dGhlIEFsbG93Q2hpbGRGcmFtZUNvbnRlbnQKKyAgICAgICAgZmxhZyBpbiBIaXRUZXN0UmVxdWVz
dC4KKworICAgICAgICBUZXN0czogZmFzdC9kb20vbm9kZXNGcm9tUmVjdC9ub2Rlc0Zyb21SZWN0
LWNoaWxkLWZyYW1lLWNvbnRlbnQuaHRtbAorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46Cisg
ICAgICAgICogV2ViQ29yZS5vcmRlcjoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QpOgorICAgICAgICAqIGRvbS9E
b2N1bWVudC5oOgorICAgICAgICAoRG9jdW1lbnQpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5k
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGl0VGVzdFJlc3VsdEF0
UG9pbnQpOgorICAgICAgICAqIHBhZ2UvVG91Y2hBZGp1c3RtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRvdWNoQWRqdXN0bWVudDo6cGFyZW50SG9zdE9yT3duZXIpOgorICAgICAgICAoVG91
Y2hBZGp1c3RtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRvdWNoQWRqdXN0bWVudDo6Y29tcGls
ZVN1YnRhcmdldExpc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0UmVxdWVzdC5oOgor
ICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlcXVlc3Q6OmFsbG93c0NoaWxkRnJhbWVDb250ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXF1ZXN0Ojppc0NoaWxkRnJhbWVIaXRUZXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXF1ZXN0OjpzaG91bGRUZXN0Q2hpbGRGcmFt
ZVNjcm9sbEJhcnMpOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQpOgorICAgICAgICAo
V2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6Okhp
dFRlc3RSZXN1bHQ6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0Ojpk
aWN0YXRpb25BbHRlcm5hdGl2ZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0
Lmg6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0Ojpwb2ludEluTWFpbkZyYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OnBvaW50SW5Jbm5lck5vZGVGcmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpzZXRQb2ludEluSW5uZXJOb2RlRnJh
bWUpOgorICAgICAgICAoSGl0VGVzdFJlc3VsdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckZyYW1lQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFtZUJhc2U6Om5vZGVB
dFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmg6CisgICAgICAg
IChSZW5kZXJGcmFtZUJhc2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aGl0VGVzdCk6CisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpub2Rlc0Zy
b21SZWN0KToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAoSW50ZXJu
YWxzKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIwMTMtMDEtMDkgIEt1
bmloaWtvIFNha2Ftb3RvICA8a3Nha2Ftb3RvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBJTlBV
VF9NVUxUSVBMRV9GSUVMRFNfVUk6IG1pbi9tYXggYXR0cmlidXRlcyBzaG91bGQgbm90IG1ha2Ug
YWxsIGZpZWxkcyByZWFkLW9ubHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggNzVmODNjN2NiZjM4
MTUwMjIyMWMxNDBhZjYzZDQ0YzE5MTE0ZjUxNy4uOTdkYjNiZjAxOWY5NzdkMzg1ZDNjN2RmMDFj
MTgzOGRhZjgzNDBhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4K
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTE0NTUsNyArMTQ1NSw3IEBA
IF9fWk5LN1dlYkNvcmU3SW50UmVjdGN2NkNHUmVjdEV2CiBfX1pOSzdXZWJDb3JlN1J1bkxvb3A5
VGltZXJCYXNlOGlzQWN0aXZlRXYKIF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQxMWNvbXBsZXRlVVJM
RVJLTjNXVEY2U3RyaW5nRQogX19aTks3V2ViQ29yZThEb2N1bWVudDEzYXhPYmplY3RDYWNoZUV2
Ci1fX1pOSzdXZWJDb3JlOERvY3VtZW50MTNub2Rlc0Zyb21SZWN0RWlpampqamJiCitfX1pOSzdX
ZWJDb3JlOERvY3VtZW50MTNub2Rlc0Zyb21SZWN0RWlpampqamJiYgogX19aTks3V2ViQ29yZThE
b2N1bWVudDE0Z2V0RWxlbWVudEJ5SWRFUktOM1dURjEyQXRvbWljU3RyaW5nRQogX19aTks3V2Vi
Q29yZThEb2N1bWVudDMxZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZ0VSS04zV1RGNlN0
cmluZ0UKIF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQ0Ym9keUV2CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLm9yZGVyIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgppbmRl
eCAyY2I2ZDJlZmRmMmUzNzQ5MDJiOWQxMGE4NGUzODA5OWE1NDc2NzA2Li5kNjNiMGE4YWY1MDE1
ZGMzODM4Y2IwYzVjNjkyMjQ2ZGE5YjE1N2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLm9yZGVyCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKQEAgLTIyNzQ4
LDcgKzIyNzQ4LDcgQEAgX19aTks3V2ViQ29yZTEyTm9kZUl0ZXJhdG9yMjB1cGRhdGVGb3JOb2Rl
UmVtb3ZhbEVQTlNfNE5vZGVFUk5TMF8xMU5vZGVQb2ludGVyRQogX19aTjdXZWJDb3JlMjdqc05v
ZGVJdGVyYXRvclJlZmVyZW5jZU5vZGVFUE4zSlNDOUV4ZWNTdGF0ZUVOUzBfN0pTVmFsdWVFUktO
UzBfMTBJZGVudGlmaWVyRQogX19aTks3V2ViQ29yZTROb2RlMjB0cmF2ZXJzZVByZXZpb3VzTm9k
ZUVQS1MwXwogX19aTjdXZWJDb3JlMzdqc05vZGVJdGVyYXRvclByb3RvdHlwZUZ1bmN0aW9uRGV0
YWNoRVBOM0pTQzlFeGVjU3RhdGVFCi1fX1pOSzdXZWJDb3JlOERvY3VtZW50MTNub2Rlc0Zyb21S
ZWN0RWlpampqamIKK19fWk5LN1dlYkNvcmU4RG9jdW1lbnQxM25vZGVzRnJvbVJlY3RFaWlqampq
YmJiCiBfX1pOSzdXZWJDb3JlOERvY3VtZW50MTdoYW5kbGVaZXJvUGFkZGluZ0VSS05TXzE0SGl0
VGVzdFJlcXVlc3RFUk5TXzEzSGl0VGVzdFJlc3VsdEUKIF9fWk4zV1RGMjFMaXN0SGFzaFNldFRy
YW5zbGF0b3JJTlNfNlJlZlB0cklON1dlYkNvcmU0Tm9kZUVFRUxtMjU2RU5TXzdQdHJIYXNoSVM0
X0VFRTl0cmFuc2xhdGVFUlBOU18xNUxpc3RIYXNoU2V0Tm9kZUlTNF9MbTI1NkVFRVJLUzRfUE5T
XzI0TGlzdEhhc2hTZXROb2RlQWxsb2NhdG9ySVM0X0xtMjU2RUVFCiBfX1pON1dlYkNvcmUyMVN0
YXRpY0hhc2hTZXROb2RlTGlzdEMxRVJOM1dURjExTGlzdEhhc2hTZXRJTlMxXzZSZWZQdHJJTlNf
NE5vZGVFRUVMbTI1NkVOUzFfN1B0ckhhc2hJUzVfRUVFRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
aW5kZXggNmFkMDZmMjExNzU2Yzg2M2I4NDQxYzQxZDhmNThhNmQxMGNjNGZiYy4uNGQ5YmNiY2Zl
NjJhMjU2ZTdjZmFiYTNkN2NlYjg4Njk0ZGEwYTBiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CkBAIC0xMzc4LDcgKzEzNzgsNyBAQCBTdHJpbmcgRG9jdW1lbnQ6OnN1Z2dlc3RlZE1JTUVUeXBl
KCkgY29uc3QKIC8vICogbWFraW5nIGl0IHJlY2VpdmUgYSByZWN0IGFzIHBhcmFtZXRlciwgaS5l
LiBub2Rlc0Zyb21SZWN0KHgsIHksIHcsIGgpOwogLy8gKiBtYWtpbmcgaXQgcmVjZWl2ZSB0aGUg
ZXhwYWRpbmcgc2l6ZSBvZiBlYWNoIGRpcmVjdGlvbiBzZXBhcmF0ZWx5LAogLy8gICBpLmUuIG5v
ZGVzRnJvbVJlY3QoeCwgeSwgdG9wU2l6ZSwgcmlnaHRTaXplLCBib3R0b21TaXplLCBsZWZ0U2l6
ZSk7Ci1QYXNzUmVmUHRyPE5vZGVMaXN0PiBEb2N1bWVudDo6bm9kZXNGcm9tUmVjdChpbnQgY2Vu
dGVyWCwgaW50IGNlbnRlclksIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFk
ZGluZywgdW5zaWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcsIGJvb2wg
aWdub3JlQ2xpcHBpbmcsIGJvb2wgYWxsb3dTaGFkb3dDb250ZW50KSBjb25zdAorUGFzc1JlZlB0
cjxOb2RlTGlzdD4gRG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QoaW50IGNlbnRlclgsIGludCBjZW50
ZXJZLCB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcsIHVuc2lnbmVk
IGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nLCBib29sIGlnbm9yZUNsaXBwaW5n
LCBib29sIGFsbG93U2hhZG93Q29udGVudCwgYm9vbCBhbGxvd0NoaWxkRnJhbWVDb250ZW50KSBj
b25zdAogewogICAgIC8vIEZJWE1FOiBTaGFyZSBjb2RlIGJldHdlZW4gdGhpcywgZWxlbWVudEZy
b21Qb2ludCBhbmQgY2FyZXRSYW5nZUZyb21Qb2ludC4KICAgICBpZiAoIXJlbmRlcmVyKCkpCkBA
IC0xNDAyLDYgKzE0MDIsOCBAQCBQYXNzUmVmUHRyPE5vZGVMaXN0PiBEb2N1bWVudDo6bm9kZXNG
cm9tUmVjdChpbnQgY2VudGVyWCwgaW50IGNlbnRlclksIHVuc2lnbmVkCiAgICAgICAgIHJldHVy
biAwOwogICAgIGlmIChhbGxvd1NoYWRvd0NvbnRlbnQpCiAgICAgICAgIHR5cGUgfD0gSGl0VGVz
dFJlcXVlc3Q6OkFsbG93U2hhZG93Q29udGVudDsKKyAgICBpZiAoYWxsb3dDaGlsZEZyYW1lQ29u
dGVudCkKKyAgICAgICAgdHlwZSB8PSBIaXRUZXN0UmVxdWVzdDo6QWxsb3dDaGlsZEZyYW1lQ29u
dGVudDsKIAogICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QodHlwZSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmgKaW5kZXggMjhkNDZhMTI1NzY5MTIzY2FjNmMwYmQ5ZTg1NTkxMDlhNWYwZDk1NS4uZmM1
MjI3MDc3ODU0NThkM2FjMGNlMjQ5OTFiY2E1Zjk3OTI4MDFkNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmgKQEAgLTM4MCw4ICszODAsOSBAQCBwdWJsaWM6CiAgICAgICogQHBhcmFtIGlnbm9yZUNsaXBw
aW5nIHdoZXRoZXIgb3Igbm90IHRvIGlnbm9yZSB0aGUgcm9vdCBzY3JvbGwgZnJhbWUgd2hlbiBy
ZXRyaWV2aW5nIHRoZSBlbGVtZW50LgogICAgICAqICAgICAgICBJZiBmYWxzZSwgdGhpcyBtZXRo
b2QgcmV0dXJucyBudWxsIGZvciBjb29yZGluYXRlcyBvdXRzaWRlIG9mIHRoZSB2aWV3cG9ydC4K
ICAgICAgKi8KLSAgICBQYXNzUmVmUHRyPE5vZGVMaXN0PiBub2Rlc0Zyb21SZWN0KGludCBjZW50
ZXJYLCBpbnQgY2VudGVyWSwgdW5zaWduZWQgdG9wUGFkZGluZywgdW5zaWduZWQgcmlnaHRQYWRk
aW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgYm90
dG9tUGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcsIGJvb2wgaWdub3JlQ2xpcHBpbmcsIGJv
b2wgYWxsb3dTaGFkb3dDb250ZW50KSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPE5vZGVMaXN0PiBu
b2Rlc0Zyb21SZWN0KGludCBjZW50ZXJYLCBpbnQgY2VudGVyWSwKKyAgICAgICAgdW5zaWduZWQg
dG9wUGFkZGluZywgdW5zaWduZWQgcmlnaHRQYWRkaW5nLCB1bnNpZ25lZCBib3R0b21QYWRkaW5n
LCB1bnNpZ25lZCBsZWZ0UGFkZGluZywKKyAgICAgICAgYm9vbCBpZ25vcmVDbGlwcGluZywgYm9v
bCBhbGxvd1NoYWRvd0NvbnRlbnQsIGJvb2wgYWxsb3dDaGlsZEZyYW1lQ29udGVudCA9IGZhbHNl
KSBjb25zdDsKICAgICBFbGVtZW50KiBlbGVtZW50RnJvbVBvaW50KGludCB4LCBpbnQgeSkgY29u
c3Q7CiAgICAgUGFzc1JlZlB0cjxSYW5nZT4gY2FyZXRSYW5nZUZyb21Qb2ludChpbnQgeCwgaW50
IHkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggMDIxN2EwMmM4NGM0
MzA5NWFiYmMzNTc4MDQ0ZGJhZmJiMTRiYzM2Zi4uYmVkYTRkMmRkMzEyN2IxMmU5MGNiYzRkMmYw
Mjg0MThhZGE5MThhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMTAz
MSwzNSArMTAzMSwxNCBAQCBIaXRUZXN0UmVzdWx0IEV2ZW50SGFuZGxlcjo6aGl0VGVzdFJlc3Vs
dEF0UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBib29sCiAgICAgICAgIGhpdFR5cGUg
fD0gSGl0VGVzdFJlcXVlc3Q6Oklnbm9yZUNsaXBwaW5nOwogICAgIGlmIChhbGxvd1NoYWRvd0Nv
bnRlbnQpCiAgICAgICAgIGhpdFR5cGUgfD0gSGl0VGVzdFJlcXVlc3Q6OkFsbG93U2hhZG93Q29u
dGVudDsKKyAgICBpZiAodGVzdFNjcm9sbGJhcnMgPT0gU2hvdWxkSGl0VGVzdFNjcm9sbGJhcnMp
CisgICAgICAgIGhpdFR5cGUgfD0gSGl0VGVzdFJlcXVlc3Q6OlRlc3RDaGlsZEZyYW1lU2Nyb2xs
QmFyczsKKyAgICAvLyBoaXRUZXN0UmVzdWx0QXRQb2ludCBhbHdheXMgaGFuZGxlIGNoaWxkIGZy
YW1lIGNvbnRlbnQuCisgICAgaGl0VHlwZSB8PSBIaXRUZXN0UmVxdWVzdDo6QWxsb3dDaGlsZEZy
YW1lQ29udGVudDsKKwogICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoaGl0VHlwZSk7CiAgICAg
bV9mcmFtZS0+Y29udGVudFJlbmRlcmVyKCktPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0KTsKIAot
ICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIE5vZGUqIG4gPSByZXN1bHQuaW5uZXJOb2RlKCk7
Ci0gICAgICAgIGlmICghcmVzdWx0LmlzT3ZlcldpZGdldCgpIHx8ICFuIHx8ICFuLT5yZW5kZXJl
cigpIHx8ICFuLT5yZW5kZXJlcigpLT5pc1dpZGdldCgpKQotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIFJlbmRlcldpZGdldCogcmVuZGVyV2lkZ2V0ID0gdG9SZW5kZXJXaWRnZXQobi0+cmVu
ZGVyZXIoKSk7Ci0gICAgICAgIFdpZGdldCogd2lkZ2V0ID0gcmVuZGVyV2lkZ2V0LT53aWRnZXQo
KTsKLSAgICAgICAgaWYgKCF3aWRnZXQgfHwgIXdpZGdldC0+aXNGcmFtZVZpZXcoKSkKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBGcmFtZSogZnJhbWUgPSBzdGF0aWNfY2FzdDxIVE1MRnJh
bWVFbGVtZW50QmFzZSo+KG4pLT5jb250ZW50RnJhbWUoKTsKLSAgICAgICAgaWYgKCFmcmFtZSB8
fCAhZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IEZyYW1lVmlldyogdmlldyA9IHN0YXRpY19jYXN0PEZyYW1lVmlldyo+KHdpZGdldCk7Ci0gICAg
ICAgIExheW91dFBvaW50IHdpZGdldFBvaW50KHJlc3VsdC5sb2NhbFBvaW50KCkueCgpICsgdmll
dy0+c2Nyb2xsWCgpIC0gcmVuZGVyV2lkZ2V0LT5ib3JkZXJMZWZ0KCkgLSByZW5kZXJXaWRnZXQt
PnBhZGRpbmdMZWZ0KCksIAotICAgICAgICAgICAgcmVzdWx0LmxvY2FsUG9pbnQoKS55KCkgKyB2
aWV3LT5zY3JvbGxZKCkgLSByZW5kZXJXaWRnZXQtPmJvcmRlclRvcCgpIC0gcmVuZGVyV2lkZ2V0
LT5wYWRkaW5nVG9wKCkpOwotICAgICAgICBIaXRUZXN0UmVzdWx0IHdpZGdldEhpdFRlc3RSZXN1
bHQod2lkZ2V0UG9pbnQsIHBhZGRpbmcuaGVpZ2h0KCksIHBhZGRpbmcud2lkdGgoKSwgcGFkZGlu
Zy5oZWlnaHQoKSwgcGFkZGluZy53aWR0aCgpKTsKLSAgICAgICAgd2lkZ2V0SGl0VGVzdFJlc3Vs
dC5zZXRQb2ludEluTWFpbkZyYW1lKHJlc3VsdC5wb2ludEluTWFpbkZyYW1lKCkpOwotICAgICAg
ICBmcmFtZS0+Y29udGVudFJlbmRlcmVyKCktPmhpdFRlc3QocmVxdWVzdCwgd2lkZ2V0SGl0VGVz
dFJlc3VsdCk7Ci0gICAgICAgIHJlc3VsdCA9IHdpZGdldEhpdFRlc3RSZXN1bHQ7Ci0KLSAgICAg
ICAgaWYgKHRlc3RTY3JvbGxiYXJzID09IFNob3VsZEhpdFRlc3RTY3JvbGxiYXJzKSB7Ci0gICAg
ICAgICAgICBTY3JvbGxiYXIqIGV2ZW50U2Nyb2xsYmFyID0gdmlldy0+c2Nyb2xsYmFyQXRQb2lu
dChyb3VuZGVkSW50UG9pbnQocG9pbnQpKTsKLSAgICAgICAgICAgIGlmIChldmVudFNjcm9sbGJh
cikKLSAgICAgICAgICAgICAgICByZXN1bHQuc2V0U2Nyb2xsYmFyKGV2ZW50U2Nyb2xsYmFyKTsK
LSAgICAgICAgfQotICAgIH0KLQogICAgIGlmICghYWxsb3dTaGFkb3dDb250ZW50KQogICAgICAg
ICByZXN1bHQuc2V0VG9Ob25TaGFkb3dBbmNlc3RvcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1RvdWNoQWRqdXN0bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Rv
dWNoQWRqdXN0bWVudC5jcHAKaW5kZXggMWRlMDIyMDNjNTk1MDRlMDczYTc2NmNkMDlkNTg0MDli
NTJjMmRhMi4uMzgyYmQ4ZjBkZWQ0M2JlOGUxYTdhNWExNTdkMWNiZDQwOGZjMDQwNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Ub3VjaEFkanVzdG1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvVG91Y2hBZGp1c3RtZW50LmNwcApAQCAtMjUsNiArMjUsNyBAQAogI2lu
Y2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKICNpbmNsdWRlICJG
cmFtZVZpZXcuaCIKKyNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTExhYmVsRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkhUTUxOYW1lcy5oIgpAQCAtMjIxLDYgKzIyMiwxNiBAQCBzdGF0aWMgaW5saW5lIHZv
aWQgYXBwZW5kWm9vbWFibGVTdWJ0YXJnZXRzKE5vZGUqIG5vZGUsIFN1YnRhcmdldEdlb21ldHJ5
TGlzdCYgcwogICAgICAgICBzdWJ0YXJnZXRzLmFwcGVuZChTdWJ0YXJnZXRHZW9tZXRyeShub2Rl
LCAqaXQpKTsKIH0KIAorc3RhdGljIGlubGluZSBOb2RlKiBwYXJlbnRIb3N0T3JPd25lcihjb25z
dCBOb2RlKiBub2RlKQoreworICAgIE5vZGUqIGFuY2VzdG9yID0gbm9kZS0+cGFyZW50T3JIb3N0
Tm9kZSgpOworICAgIGlmIChhbmNlc3RvcikKKyAgICAgICAgcmV0dXJuIGFuY2VzdG9yOworICAg
IGlmIChub2RlLT5pc0RvY3VtZW50Tm9kZSgpKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Y29uc3QgRG9jdW1lbnQqPihub2RlKS0+b3duZXJFbGVtZW50KCk7CisgICAgcmV0dXJuIDA7Cit9
CisKIC8vIENvbXBpbGVzIGEgbGlzdCBvZiBzdWJ0YXJnZXRzIG9mIGFsbCB0aGUgcmVsZXZhbnQg
dGFyZ2V0IG5vZGVzLgogdm9pZCBjb21waWxlU3VidGFyZ2V0TGlzdChjb25zdCBOb2RlTGlzdCYg
aW50ZXJzZWN0ZWROb2RlcywgU3VidGFyZ2V0R2VvbWV0cnlMaXN0JiBzdWJ0YXJnZXRzLCBOb2Rl
RmlsdGVyIG5vZGVGaWx0ZXIsIEFwcGVuZFN1YnRhcmdldHNGb3JOb2RlIGFwcGVuZFN1YnRhcmdl
dHNGb3JOb2RlKQogewpAQCAtMjQ4LDcgKzI1OSw3IEBAIHZvaWQgY29tcGlsZVN1YnRhcmdldExp
c3QoY29uc3QgTm9kZUxpc3QmIGludGVyc2VjdGVkTm9kZXMsIFN1YnRhcmdldEdlb21ldHJ5TGlz
CiAgICAgICAgICAgICBpZiAobm9kZUZpbHRlcih2aXNpdGVkTm9kZSkpIHsKICAgICAgICAgICAg
ICAgICByZXNwb25kaW5nTm9kZSA9IHZpc2l0ZWROb2RlOwogICAgICAgICAgICAgICAgIC8vIENv
bnRpbnVlIHRoZSBpdGVyYXRpb24gdG8gY29sbGVjdCB0aGUgYW5jZXN0b3JzIG9mIHRoZSByZXNw
b25kZXIsIHdoaWNoIHdlIHdpbGwgbmVlZCBsYXRlci4KLSAgICAgICAgICAgICAgICBmb3IgKHZp
c2l0ZWROb2RlID0gdmlzaXRlZE5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKTsgdmlzaXRlZE5vZGU7
IHZpc2l0ZWROb2RlID0gdmlzaXRlZE5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKSkgeworICAgICAg
ICAgICAgICAgIGZvciAodmlzaXRlZE5vZGUgPSBwYXJlbnRIb3N0T3JPd25lcih2aXNpdGVkTm9k
ZSk7IHZpc2l0ZWROb2RlOyB2aXNpdGVkTm9kZSA9IHBhcmVudEhvc3RPck93bmVyKHZpc2l0ZWRO
b2RlKSkgewogICAgICAgICAgICAgICAgICAgICBIYXNoU2V0PE5vZGUqPjo6QWRkUmVzdWx0IGFk
ZFJlc3VsdCA9IGFuY2VzdG9yc1RvUmVzcG9uZGVyc1NldC5hZGQodmlzaXRlZE5vZGUpOwogICAg
ICAgICAgICAgICAgICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SGl0VGVzdFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVxdWVz
dC5oCmluZGV4IGQ5MzdjMjUwNDY5Mzk2Yjc0Yjc0NGUyZDIwMDM2NGE5ZDdiMDQxNzAuLjNmYWY4
OGE5ZjkxMzc2MWVjMDEzZDZlN2QyY2RkYWYzMmY4NGQ3OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9IaXRUZXN0UmVxdWVzdC5oCkBAIC0zNSw3ICszNSwxMCBAQCBwdWJsaWM6CiAgICAg
ICAgIElnbm9yZUNsaXBwaW5nID0gMSA8PCA1LAogICAgICAgICBTVkdDbGlwQ29udGVudCA9IDEg
PDwgNiwKICAgICAgICAgVG91Y2hFdmVudCA9IDEgPDwgNywKLSAgICAgICAgQWxsb3dTaGFkb3dD
b250ZW50ID0gMSA8PCA4CisgICAgICAgIEFsbG93U2hhZG93Q29udGVudCA9IDEgPDwgOCwKKyAg
ICAgICAgQWxsb3dDaGlsZEZyYW1lQ29udGVudCA9IDEgPDwgOSwKKyAgICAgICAgQ2hpbGRGcmFt
ZUhpdFRlc3QgPSAxIDw8IDEwLAorICAgICAgICBUZXN0Q2hpbGRGcmFtZVNjcm9sbEJhcnMgPSAx
IDw8IDExCiAgICAgfTsKIAogICAgIHR5cGVkZWYgdW5zaWduZWQgSGl0VGVzdFJlcXVlc3RUeXBl
OwpAQCAtNTQsNiArNTcsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCB0b3VjaEV2ZW50KCkgY29uc3Qg
eyByZXR1cm4gbV9yZXF1ZXN0VHlwZSAmIFRvdWNoRXZlbnQ7IH0KICAgICBib29sIG1vdXNlRXZl
bnQoKSBjb25zdCB7IHJldHVybiAhdG91Y2hFdmVudCgpOyB9CiAgICAgYm9vbCBhbGxvd3NTaGFk
b3dDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0VHlwZSAmIEFsbG93U2hhZG93Q29u
dGVudDsgfQorICAgIGJvb2wgYWxsb3dzQ2hpbGRGcmFtZUNvbnRlbnQoKSBjb25zdCB7IHJldHVy
biBtX3JlcXVlc3RUeXBlICYgQWxsb3dDaGlsZEZyYW1lQ29udGVudDsgfQorICAgIGJvb2wgaXND
aGlsZEZyYW1lSGl0VGVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdFR5cGUgJiBDaGlsZEZy
YW1lSGl0VGVzdDsgfQorICAgIGJvb2wgc2hvdWxkVGVzdENoaWxkRnJhbWVTY3JvbGxCYXJzKCkg
Y29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0VHlwZSAmIFRlc3RDaGlsZEZyYW1lU2Nyb2xsQmFyczsg
fQogCiAgICAgLy8gQ29udmVuaWVuY2UgZnVuY3Rpb25zCiAgICAgYm9vbCB0b3VjaE1vdmUoKSBj
b25zdCB7IHJldHVybiBtb3ZlKCkgJiYgdG91Y2hFdmVudCgpOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKaW5kZXggY2ZmZGY3ODA2OGNiNzdkNzZjYzIzMWU1
NWZjNzhmMTlkZDU4ZTdiNi4uZGZlOGJjNGMzMmNhMWY3NTQ4ZGZhNjRmODFlMDgwMDhiMGQ0Mjdi
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcApAQCAtMTk5
LDIxICsxOTksMjEgQEAgSGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3VsdCgpCiAKIEhpdFRlc3RS
ZXN1bHQ6OkhpdFRlc3RSZXN1bHQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KQogICAgIDogbV9o
aXRUZXN0TG9jYXRpb24ocG9pbnQpCi0gICAgLCBtX3BvaW50SW5NYWluRnJhbWUocG9pbnQpCisg
ICAgLCBtX3BvaW50SW5Jbm5lck5vZGVGcmFtZShwb2ludCkKICAgICAsIG1faXNPdmVyV2lkZ2V0
KGZhbHNlKQogewogfQogCiBIaXRUZXN0UmVzdWx0OjpIaXRUZXN0UmVzdWx0KGNvbnN0IExheW91
dFBvaW50JiBjZW50ZXJQb2ludCwgdW5zaWduZWQgdG9wUGFkZGluZywgdW5zaWduZWQgcmlnaHRQ
YWRkaW5nLCB1bnNpZ25lZCBib3R0b21QYWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGluZykKICAg
ICA6IG1faGl0VGVzdExvY2F0aW9uKGNlbnRlclBvaW50LCB0b3BQYWRkaW5nLCByaWdodFBhZGRp
bmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nKQotICAgICwgbV9wb2ludEluTWFpbkZyYW1l
KGNlbnRlclBvaW50KQorICAgICwgbV9wb2ludEluSW5uZXJOb2RlRnJhbWUoY2VudGVyUG9pbnQp
CiAgICAgLCBtX2lzT3ZlcldpZGdldChmYWxzZSkKIHsKIH0KIAogSGl0VGVzdFJlc3VsdDo6SGl0
VGVzdFJlc3VsdChjb25zdCBIaXRUZXN0TG9jYXRpb24mIG90aGVyKQogICAgIDogbV9oaXRUZXN0
TG9jYXRpb24ob3RoZXIpCi0gICAgLCBtX3BvaW50SW5NYWluRnJhbWUobV9oaXRUZXN0TG9jYXRp
b24ucG9pbnQoKSkKKyAgICAsIG1fcG9pbnRJbklubmVyTm9kZUZyYW1lKG1faGl0VGVzdExvY2F0
aW9uLnBvaW50KCkpCiAgICAgLCBtX2lzT3ZlcldpZGdldChmYWxzZSkKIHsKIH0KQEAgLTIyMiw3
ICsyMjIsNyBAQCBIaXRUZXN0UmVzdWx0OjpIaXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RSZXN1
bHQmIG90aGVyKQogICAgIDogbV9oaXRUZXN0TG9jYXRpb24ob3RoZXIubV9oaXRUZXN0TG9jYXRp
b24pCiAgICAgLCBtX2lubmVyTm9kZShvdGhlci5pbm5lck5vZGUoKSkKICAgICAsIG1faW5uZXJO
b25TaGFyZWROb2RlKG90aGVyLmlubmVyTm9uU2hhcmVkTm9kZSgpKQotICAgICwgbV9wb2ludElu
TWFpbkZyYW1lKG90aGVyLm1fcG9pbnRJbk1haW5GcmFtZSkKKyAgICAsIG1fcG9pbnRJbklubmVy
Tm9kZUZyYW1lKG90aGVyLm1fcG9pbnRJbklubmVyTm9kZUZyYW1lKQogICAgICwgbV9sb2NhbFBv
aW50KG90aGVyLmxvY2FsUG9pbnQoKSkKICAgICAsIG1faW5uZXJVUkxFbGVtZW50KG90aGVyLlVS
TEVsZW1lbnQoKSkKICAgICAsIG1fc2Nyb2xsYmFyKG90aGVyLnNjcm9sbGJhcigpKQpAQCAtMjQx
LDcgKzI0MSw3IEBAIEhpdFRlc3RSZXN1bHQmIEhpdFRlc3RSZXN1bHQ6Om9wZXJhdG9yPShjb25z
dCBIaXRUZXN0UmVzdWx0JiBvdGhlcikKICAgICBtX2hpdFRlc3RMb2NhdGlvbiA9IG90aGVyLm1f
aGl0VGVzdExvY2F0aW9uOwogICAgIG1faW5uZXJOb2RlID0gb3RoZXIuaW5uZXJOb2RlKCk7CiAg
ICAgbV9pbm5lck5vblNoYXJlZE5vZGUgPSBvdGhlci5pbm5lck5vblNoYXJlZE5vZGUoKTsKLSAg
ICBtX3BvaW50SW5NYWluRnJhbWUgPSBvdGhlci5tX3BvaW50SW5NYWluRnJhbWU7CisgICAgbV9w
b2ludEluSW5uZXJOb2RlRnJhbWUgPSBvdGhlci5tX3BvaW50SW5Jbm5lck5vZGVGcmFtZTsKICAg
ICBtX2xvY2FsUG9pbnQgPSBvdGhlci5sb2NhbFBvaW50KCk7CiAgICAgbV9pbm5lclVSTEVsZW1l
bnQgPSBvdGhlci5VUkxFbGVtZW50KCk7CiAgICAgbV9zY3JvbGxiYXIgPSBvdGhlci5zY3JvbGxi
YXIoKTsKQEAgLTczNSw3ICs3MzUsNyBAQCB2b2lkIEhpdFRlc3RSZXN1bHQ6OmFwcGVuZChjb25z
dCBIaXRUZXN0UmVzdWx0JiBvdGhlcikKICAgICAgICAgbV9pbm5lck5vZGUgPSBvdGhlci5pbm5l
ck5vZGUoKTsKICAgICAgICAgbV9pbm5lck5vblNoYXJlZE5vZGUgPSBvdGhlci5pbm5lck5vblNo
YXJlZE5vZGUoKTsKICAgICAgICAgbV9sb2NhbFBvaW50ID0gb3RoZXIubG9jYWxQb2ludCgpOwot
ICAgICAgICBtX3BvaW50SW5NYWluRnJhbWUgPSBvdGhlci5tX3BvaW50SW5NYWluRnJhbWU7Cisg
ICAgICAgIG1fcG9pbnRJbklubmVyTm9kZUZyYW1lID0gb3RoZXIubV9wb2ludEluSW5uZXJOb2Rl
RnJhbWU7CiAgICAgICAgIG1faW5uZXJVUkxFbGVtZW50ID0gb3RoZXIuVVJMRWxlbWVudCgpOwog
ICAgICAgICBtX3Njcm9sbGJhciA9IG90aGVyLnNjcm9sbGJhcigpOwogICAgICAgICBtX2lzT3Zl
cldpZGdldCA9IG90aGVyLmlzT3ZlcldpZGdldCgpOwpAQCAtNzY4LDcgKzc2OCw3IEBAIFZlY3Rv
cjxTdHJpbmc+IEhpdFRlc3RSZXN1bHQ6OmRpY3RhdGlvbkFsdGVybmF0aXZlcygpIGNvbnN0CiAg
ICAgaWYgKCFtX2lubmVyTm9uU2hhcmVkTm9kZSkKICAgICAgICAgcmV0dXJuIFZlY3RvcjxTdHJp
bmc+KCk7CiAKLSAgICBEb2N1bWVudE1hcmtlciogbWFya2VyID0gbV9pbm5lck5vblNoYXJlZE5v
ZGUtPmRvY3VtZW50KCktPm1hcmtlcnMoKS0+bWFya2VyQ29udGFpbmluZ1BvaW50KGhpdFRlc3RM
b2NhdGlvbigpLnBvaW50KCksIERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25BbHRlcm5hdGl2ZXMp
OworICAgIERvY3VtZW50TWFya2VyKiBtYXJrZXIgPSBtX2lubmVyTm9uU2hhcmVkTm9kZS0+ZG9j
dW1lbnQoKS0+bWFya2VycygpLT5tYXJrZXJDb250YWluaW5nUG9pbnQocG9pbnRJbklubmVyTm9k
ZUZyYW1lKCksIERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25BbHRlcm5hdGl2ZXMpOwogICAgIGlm
ICghbWFya2VyKQogICAgICAgICByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKaW5kZXggNTdhNDFkYWI1OTg4NjIzYjE5NjU1
MThhZjIzMWRjYTM2Y2JiOTE1Yi4uZTRjNWVmZTNiMjM4Njg0NDkwOTA4NTU3OTBhMTBlMzc2MTY4
NzBkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCkBAIC0xMjQs
MTMgKzEyNCwxMyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1JlY3RCYXNlZFRlc3QoKSBjb25zdCB7
IHJldHVybiBtX2hpdFRlc3RMb2NhdGlvbi5pc1JlY3RCYXNlZFRlc3QoKTsgfQogCiAgICAgLy8g
VGhlIGhpdC10ZXN0ZWQgcG9pbnQgaW4gdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSBtYWluIGZyYW1l
LgotICAgIGNvbnN0IExheW91dFBvaW50JiBwb2ludEluTWFpbkZyYW1lKCkgY29uc3QgeyByZXR1
cm4gbV9wb2ludEluTWFpbkZyYW1lOyB9CisgICAgY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50SW5N
YWluRnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2hpdFRlc3RMb2NhdGlvbi5wb2ludCgpOyB9CiAg
ICAgSW50UG9pbnQgcm91bmRlZFBvaW50SW5NYWluRnJhbWUoKSBjb25zdCB7IHJldHVybiByb3Vu
ZGVkSW50UG9pbnQocG9pbnRJbk1haW5GcmFtZSgpKTsgfQotICAgIHZvaWQgc2V0UG9pbnRJbk1h
aW5GcmFtZShjb25zdCBMYXlvdXRQb2ludCYgcCkgeyBtX3BvaW50SW5NYWluRnJhbWUgPSBwOyB9
CiAKICAgICAvLyBUaGUgaGl0LXRlc3RlZCBwb2ludCBpbiB0aGUgY29vcmRpbmF0ZXMgb2YgdGhl
IGlubmVyTm9kZSBmcmFtZSwgdGhlIGZyYW1lIGNvbnRhaW5pbmcgaW5uZXJOb2RlLgotICAgIGNv
bnN0IExheW91dFBvaW50JiBwb2ludEluSW5uZXJOb2RlRnJhbWUoKSBjb25zdCB7IHJldHVybiBt
X2hpdFRlc3RMb2NhdGlvbi5wb2ludCgpOyB9CisgICAgY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50
SW5Jbm5lck5vZGVGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fcG9pbnRJbklubmVyTm9kZUZyYW1l
OyB9CiAgICAgSW50UG9pbnQgcm91bmRlZFBvaW50SW5Jbm5lck5vZGVGcmFtZSgpIGNvbnN0IHsg
cmV0dXJuIHJvdW5kZWRJbnRQb2ludChwb2ludEluSW5uZXJOb2RlRnJhbWUoKSk7IH0KKyAgICB2
b2lkIHNldFBvaW50SW5Jbm5lck5vZGVGcmFtZShjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQpIHsg
bV9wb2ludEluSW5uZXJOb2RlRnJhbWUgPSBwb2ludDsgfQogICAgIEZyYW1lKiBpbm5lck5vZGVG
cmFtZSgpIGNvbnN0OwogCiAgICAgLy8gVGhlIGhpdC10ZXN0ZWQgcG9pbnQgaW4gdGhlIGNvb3Jk
aW5hdGVzIG9mIHRoZSBpbm5lciBub2RlLgpAQCAtMjAyLDcgKzIwMiw3IEBAIHByaXZhdGU6CiAK
ICAgICBSZWZQdHI8Tm9kZT4gbV9pbm5lck5vZGU7CiAgICAgUmVmUHRyPE5vZGU+IG1faW5uZXJO
b25TaGFyZWROb2RlOwotICAgIExheW91dFBvaW50IG1fcG9pbnRJbk1haW5GcmFtZTsgLy8gVGhl
IGhpdC10ZXN0ZWQgcG9pbnQgaW4gbWFpbi1mcmFtZSBjb29yZGluYXRlcy4KKyAgICBMYXlvdXRQ
b2ludCBtX3BvaW50SW5Jbm5lck5vZGVGcmFtZTsgLy8gVGhlIGhpdC10ZXN0ZWQgcG9pbnQgaW4g
aW5uZXJOb2RlIGZyYW1lIGNvb3JkaW5hdGVzLgogICAgIExheW91dFBvaW50IG1fbG9jYWxQb2lu
dDsgLy8gQSBwb2ludCBpbiB0aGUgbG9jYWwgY29vcmRpbmF0ZSBzcGFjZSBvZiBtX2lubmVyTm9u
U2hhcmVkTm9kZSdzIHJlbmRlcmVyLiBBbGxvd3MgdXMgdG8gZWZmaWNpZW50bHkKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGRldGVybWluZSB3aGVyZSBpbnNpZGUgdGhlIHJlbmRl
cmVyIHdlIGhpdCBvbiBzdWJzZXF1ZW50IG9wZXJhdGlvbnMuCiAgICAgUmVmUHRyPEVsZW1lbnQ+
IG1faW5uZXJVUkxFbGVtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZyYW1lQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJh
bWVCYXNlLmNwcAppbmRleCBhYTgyODcwZDRlZmE4YWRiYzgxOTZmZGQ2YTUwNmY1OThjYjA3NTM3
Li5kYWU1YzY5NTA5OTNjMzViMTU4MzUxZTliYzE4MzY2ZDkxYjRmNWVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmNwcApAQCAtMjksNiArMjksOCBAQAog
I2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSFRN
TEZyYW1lRWxlbWVudEJhc2UuaCIKKyNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCisjaW5jbHVk
ZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTEwNCw0ICsxMDYsMzYgQEAgdm9pZCBSZW5kZXJGcmFtZUJhc2U6OmxheW91
dFdpdGhGbGF0dGVuaW5nKGJvb2wgaGFzRml4ZWRXaWR0aCwgYm9vbCBoYXNGaXhlZEhlaWcKICAg
ICBzZXROZWVkc0xheW91dChmYWxzZSk7CiB9CiAKK2Jvb2wgUmVuZGVyRnJhbWVCYXNlOjpub2Rl
QXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVz
dWx0LCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExh
eW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbiBhY3Rpb24pCit7Cisg
ICAgaWYgKHJlcXVlc3QuYWxsb3dzQ2hpbGRGcmFtZUNvbnRlbnQoKSkgeworICAgICAgICBGcmFt
ZVZpZXcqIGNoaWxkRnJhbWVWaWV3ID0gc3RhdGljX2Nhc3Q8RnJhbWVWaWV3Kj4od2lkZ2V0KCkp
OworICAgICAgICBSZW5kZXJWaWV3KiBjaGlsZFJvb3QgPSBjaGlsZEZyYW1lVmlldyA/IHN0YXRp
Y19jYXN0PFJlbmRlclZpZXcqPihjaGlsZEZyYW1lVmlldy0+ZnJhbWUoKS0+Y29udGVudFJlbmRl
cmVyKCkpIDogMDsKKworICAgICAgICBpZiAoY2hpbGRSb290KSB7CisgICAgICAgICAgICBMYXlv
dXRQb2ludCBhZGp1c3RlZExvY2F0aW9uID0gYWNjdW11bGF0ZWRPZmZzZXQgKyBsb2NhdGlvbigp
OworICAgICAgICAgICAgTGF5b3V0UG9pbnQgY29udGVudE9mZnNldCA9IExheW91dFBvaW50KGJv
cmRlckxlZnQoKSArIHBhZGRpbmdMZWZ0KCksIGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgpKSAt
IGNoaWxkRnJhbWVWaWV3LT5zY3JvbGxPZmZzZXQoKTsKKyAgICAgICAgICAgIEhpdFRlc3RMb2Nh
dGlvbiBuZXdIaXRUZXN0TG9jYXRpb24obG9jYXRpb25JbkNvbnRhaW5lciwgLWFkanVzdGVkTG9j
YXRpb24gLSBjb250ZW50T2Zmc2V0KTsKKyAgICAgICAgICAgIEhpdFRlc3RSZXF1ZXN0IG5ld0hp
dFRlc3RSZXF1ZXN0KHJlcXVlc3QudHlwZSgpIHwgSGl0VGVzdFJlcXVlc3Q6OkNoaWxkRnJhbWVI
aXRUZXN0KTsKKyAgICAgICAgICAgIEhpdFRlc3RSZXN1bHQgY2hpbGRGcmFtZVJlc3VsdChuZXdI
aXRUZXN0TG9jYXRpb24pOworCisgICAgICAgICAgICBib29sIGlzSW5zaWRlQ2hpbGRGcmFtZSA9
IGNoaWxkUm9vdC0+bGF5ZXIoKS0+aGl0VGVzdChuZXdIaXRUZXN0UmVxdWVzdCwgbmV3SGl0VGVz
dExvY2F0aW9uLCBjaGlsZEZyYW1lUmVzdWx0KTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
Y2hpbGRGcmFtZVJlc3VsdCk7CisgICAgICAgICAgICBpZiAoaXNJbnNpZGVDaGlsZEZyYW1lKQor
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgICAgICBpZiAocmVxdWVzdC5z
aG91bGRUZXN0Q2hpbGRGcmFtZVNjcm9sbEJhcnMoKSkgeworICAgICAgICAgICAgICAgIC8vIFNj
cm9sbFZpZXcgc2Nyb2xsYmFycyBhcmUgbm90IHRoZSBzYW1lIGFzIFJlbmRlckxheWVyIHNjcm9s
bGJhcnMgdGVzdGVkIGJ5IFJlbmRlckxheWVyOjpoaXRUZXN0T3ZlcmZsb3dDb250cm9scywKKyAg
ICAgICAgICAgICAgICAvLyBzbyB3ZSBuZWVkIHRvIHRlc3QgU2Nyb2xsVmlldyBzY3JvbGxiYXJz
IHNlcGFyYXRlbHkgaGVyZS4KKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogQ29uc2lkZXIgaWYg
dGhpcyB0ZXN0IGNvdWxkIGJlIGRvbmUgdW5jb25kaXRpb25hbGx5LgorICAgICAgICAgICAgICAg
IFNjcm9sbGJhciogZnJhbWVTY3JvbGxiYXIgPSBjaGlsZEZyYW1lVmlldy0+c2Nyb2xsYmFyQXRQ
b2ludChuZXdIaXRUZXN0TG9jYXRpb24ucm91bmRlZFBvaW50KCkpOworICAgICAgICAgICAgICAg
IGlmIChmcmFtZVNjcm9sbGJhcikKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnNldFNjcm9s
bGJhcihmcmFtZVNjcm9sbGJhcik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisK
KyAgICByZXR1cm4gUmVuZGVyUGFydDo6bm9kZUF0UG9pbnQocmVxdWVzdCwgcmVzdWx0LCBsb2Nh
dGlvbkluQ29udGFpbmVyLCBhY2N1bXVsYXRlZE9mZnNldCwgYWN0aW9uKTsKK30KKwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5oCmluZGV4IDRmYWQ1NjBjNWIz
MzdmOTZiODEzYjBjYjc5MDU0NTM2MmRjNjY4N2MuLmE3ZGVlZGFiMTAyODNkZjY5NTQxOGVkZTBm
YmI5NGQ0OWUxMmU0OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGcmFtZUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVC
YXNlLmgKQEAgLTM2LDYgKzM2LDcgQEAgcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFJlbmRlckZy
YW1lQmFzZShFbGVtZW50Kik7CiAKIHB1YmxpYzoKKyAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0UG9p
bnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExv
Y2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0
ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pIE9WRVJSSURFOwogICAgIHZvaWQgbGF5b3V0V2l0aEZs
YXR0ZW5pbmcoYm9vbCBmaXhlZFdpZHRoLCBib29sIGZpeGVkSGVpZ2h0KTsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IGRkZjVkMzc5NWM2OGFiMWE2
MGE5MDFmNzFmNDA1OGMyMGVmMThmNGMuLjMxY2Y4ZTQyOWVjN2UxOTNhMTlkZjZmOGYyNzllMTdm
NjUyYmVlYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAt
Mzk1NSw3ICszOTU1LDcgQEAgYm9vbCBSZW5kZXJMYXllcjo6aGl0VGVzdChjb25zdCBIaXRUZXN0
UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgSGl0VGVzdExvY2F0aW9uJgogICAgICAgICAvLyBXZSBk
aWRuJ3QgaGl0IGFueSBsYXllci4gSWYgd2UgYXJlIHRoZSByb290IGxheWVyIGFuZCB0aGUgbW91
c2UgaXMgLS0gb3IganVzdCB3YXMgLS0gZG93biwgCiAgICAgICAgIC8vIHJldHVybiBvdXJzZWx2
ZXMuIFdlIGRvIHRoaXMgc28gbW91c2UgZXZlbnRzIGNvbnRpbnVlIGdldHRpbmcgZGVsaXZlcmVk
IGFmdGVyIGEgZHJhZyBoYXMgCiAgICAgICAgIC8vIGV4aXRlZCB0aGUgV2ViVmlldywgYW5kIHNv
IGhpdCB0ZXN0aW5nIG92ZXIgYSBzY3JvbGxiYXIgaGl0cyB0aGUgY29udGVudCBkb2N1bWVudC4K
LSAgICAgICAgaWYgKChyZXF1ZXN0LmFjdGl2ZSgpIHx8IHJlcXVlc3QucmVsZWFzZSgpKSAmJiBp
c1Jvb3RMYXllcigpKSB7CisgICAgICAgIGlmICghcmVxdWVzdC5pc0NoaWxkRnJhbWVIaXRUZXN0
KCkgJiYgKHJlcXVlc3QuYWN0aXZlKCkgfHwgcmVxdWVzdC5yZWxlYXNlKCkpICYmIGlzUm9vdExh
eWVyKCkpIHsKICAgICAgICAgICAgIHJlbmRlcmVyKCktPnVwZGF0ZUhpdFRlc3RSZXN1bHQocmVz
dWx0LCB0b1JlbmRlclZpZXcocmVuZGVyZXIoKSktPmZsaXBGb3JXcml0aW5nTW9kZShoaXRUZXN0
TG9jYXRpb24ucG9pbnQoKSkpOwogICAgICAgICAgICAgaW5zaWRlTGF5ZXIgPSB0aGlzOwogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggNGU4YmY4ZjQ2OTFl
Zjk0ZDE2MzgwYjE4NTIzZGNhOTk1MWQ0NTI4ZC4uMjk4NzQ1NWVkYWMzMGViNGNhMzE3ZjhmZGNl
ZjFiOTE4ZTU5ZGE4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTI4
NCwxNCArMTI4NCwxNCBAQCBQYXNzUmVmUHRyPENsaWVudFJlY3RMaXN0PiBJbnRlcm5hbHM6OnRv
dWNoRXZlbnRUYXJnZXRDbGllbnRSZWN0cyhEb2N1bWVudCogZG9jdQogI2VuZGlmCiAKIFBhc3NS
ZWZQdHI8Tm9kZUxpc3Q+IEludGVybmFsczo6bm9kZXNGcm9tUmVjdChEb2N1bWVudCogZG9jdW1l
bnQsIGludCB4LCBpbnQgeSwgdW5zaWduZWQgdG9wUGFkZGluZywgdW5zaWduZWQgcmlnaHRQYWRk
aW5nLAotICAgIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nLCBi
b29sIGlnbm9yZUNsaXBwaW5nLCBib29sIGFsbG93U2hhZG93Q29udGVudCwgRXhjZXB0aW9uQ29k
ZSYgZWMpIGNvbnN0CisgICAgdW5zaWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbGVmdFBh
ZGRpbmcsIGJvb2wgaWdub3JlQ2xpcHBpbmcsIGJvb2wgYWxsb3dTaGFkb3dDb250ZW50LCBib29s
IGFsbG93Q2hpbGRGcmFtZUNvbnRlbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogewogICAg
IGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5mcmFtZSgpIHx8ICFkb2N1bWVudC0+ZnJhbWUo
KS0+dmlldygpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9CiAKLSAgICByZXR1cm4gZG9jdW1lbnQtPm5vZGVzRnJvbVJlY3QoeCwg
eSwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0UGFkZGluZywg
aWdub3JlQ2xpcHBpbmcsIGFsbG93U2hhZG93Q29udGVudCk7CisgICAgcmV0dXJuIGRvY3VtZW50
LT5ub2Rlc0Zyb21SZWN0KHgsIHksIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFk
ZGluZywgbGVmdFBhZGRpbmcsIGlnbm9yZUNsaXBwaW5nLCBhbGxvd1NoYWRvd0NvbnRlbnQsIGFs
bG93Q2hpbGRGcmFtZUNvbnRlbnQpOwogfQogCiB2b2lkIEludGVybmFsczo6ZW1pdEluc3BlY3Rv
ckRpZEJlZ2luRnJhbWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggNGM0NDFl
ZTRmNGQyNzlkZDRkMDY1MzQ4NmE4MzU3MTNhM2RhOTk3MC4uYTc3MGU0ZDIyYzVjMDkzZWVmOWQ3
MjRlNzljMzc0ZDUyNDkyOWNmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0x
ODAsNyArMTgwLDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICBQYXNzUmVmUHRyPE5vZGVMaXN0
PiBub2Rlc0Zyb21SZWN0KERvY3VtZW50KiwgaW50IHgsIGludCB5LCB1bnNpZ25lZCB0b3BQYWRk
aW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcsCi0gICAgICAgIHVuc2lnbmVkIGJvdHRvbVBhZGRp
bmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nLCBib29sIGlnbm9yZUNsaXBwaW5nLCBib29sIGFsbG93
U2hhZG93Q29udGVudCwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OworICAgICAgICB1bnNpZ25lZCBi
b3R0b21QYWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGluZywgYm9vbCBpZ25vcmVDbGlwcGluZywg
Ym9vbCBhbGxvd1NoYWRvd0NvbnRlbnQsIGJvb2wgYWxsb3dDaGlsZEZyYW1lQ29udGVudCwgRXhj
ZXB0aW9uQ29kZSYpIGNvbnN0OwogCiAgICAgdm9pZCBlbWl0SW5zcGVjdG9yRGlkQmVnaW5GcmFt
ZSgpOwogICAgIHZvaWQgZW1pdEluc3BlY3RvckRpZENhbmNlbEZyYW1lKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggYzYyNTE3YTZlOGYwNTFhMWI1MGRiOWFmODAzNGI5
YWY1OTEzM2YzOC4uMDFjNGZhYzk4NTAzOWI1OGUyOTZlNmJhZDBhNjdjYzNlOTkyMTJhZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtMTQ4LDcgKzE0OCw3IEBACiAKICAg
ICBOb2RlTGlzdCBub2Rlc0Zyb21SZWN0KGluIERvY3VtZW50IGRvY3VtZW50LCBpbiBsb25nIHgs
IGluIGxvbmcgeSwKICAgICAgICAgaW4gdW5zaWduZWQgbG9uZyB0b3BQYWRkaW5nLCBpbiB1bnNp
Z25lZCBsb25nIHJpZ2h0UGFkZGluZywgaW4gdW5zaWduZWQgbG9uZyBib3R0b21QYWRkaW5nLCBp
biB1bnNpZ25lZCBsb25nIGxlZnRQYWRkaW5nLAotICAgICAgICBpbiBib29sZWFuIGlnbm9yZUNs
aXBwaW5nLCBpbiBib29sZWFuIGFsbG93U2hhZG93Q29udGVudCkgcmFpc2VzIChET01FeGNlcHRp
b24pOworICAgICAgICBpbiBib29sZWFuIGlnbm9yZUNsaXBwaW5nLCBpbiBib29sZWFuIGFsbG93
U2hhZG93Q29udGVudCwgaW4gYm9vbGVhbiBhbGxvd0NoaWxkRnJhbWVDb250ZW50KSByYWlzZXMg
KERPTUV4Y2VwdGlvbik7CiAKICAgICB2b2lkIGVtaXRJbnNwZWN0b3JEaWRCZWdpbkZyYW1lKCk7
CiAgICAgdm9pZCBlbWl0SW5zcGVjdG9yRGlkQ2FuY2VsRnJhbWUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMu
ZmlsdGVyCmluZGV4IGE5MTQ3MDI4YjFhYzBiOTU1NDg4ODA5N2FhY2RjZDE1MDFkMWFkZGMuLmVm
ZTNjOWNlYTM4Yjg1NTA4NjM3ZTg5ODZiZTY3MWIyNTdkYWNjMDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKKysrIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xz
LmZpbHRlcgpAQCAtMTk2LDcgKzE5Niw3IEBAIF9aTjdXZWJDb3JlMjJSdW50aW1lRW5hYmxlZEZl
YXR1cmVzNDBpc0xhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkRTsKIF9aTjdX
ZWJDb3JlMjJSdW50aW1lRW5hYmxlZEZlYXR1cmVzMjJpc0RpYWxvZ0VsZW1lbnRFbmFibGVkRTsK
IF9aTjdXZWJDb3JlMjJSdW50aW1lRW5hYmxlZEZlYXR1cmVzMzdpc0F1dGhvclNoYWRvd0RPTUZv
ckFueUVsZW1lbnRFbmFibGVkRTsKIF9aTjdXZWJDb3JlMjJSdW50aW1lRW5hYmxlZEZlYXR1cmVz
MjBpc1N0eWxlU2NvcGVkRW5hYmxlZEU7Ci1fWk5LN1dlYkNvcmU4RG9jdW1lbnQxM25vZGVzRnJv
bVJlY3RFaWlqampqYmI7CitfWk5LN1dlYkNvcmU4RG9jdW1lbnQxM25vZGVzRnJvbVJlY3RFaWlq
ampqYmJiOwogX1pON1dlYkNvcmU0dG9KU0VQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xv
YmFsT2JqZWN0RVBOU184Tm9kZUxpc3RFOwogX1pOSzdXZWJDb3JlNkVkaXRvcjI2c2VsZWN0aW9u
U3RhcnRIYXNNYXJrZXJGb3JFTlNfMTREb2N1bWVudE1hcmtlcjEwTWFya2VyVHlwZUVpaTsKIF9a
TjdXZWJDb3JlOERvY3VtZW50MzN3ZWJraXREaWRFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnRFUE5T
XzdFbGVtZW50RTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCBjZTZmZjJmNGI0MDdjMjhiZTJhYTAyNmM2NmQzOTYwNDA4NjUy
NzlhLi5hZmRhNjQwYWNiYzUwMGVjZjY4NjU0ZDljOGRhZTI3ZjZhMWI0MDUwIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjEgQEAKKzIwMTItMTItMTMgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmpl
bnNlbkBkaWdpYS5jb20+CisKKyAgICAgICAgQWxsb3cgY2hpbGQtZnJhbWUgY29udGVudCBpbiBo
aXQtdGVzdHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05NTIwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEEgbmV3IHRlc3RzIGZvciBub2Rlc0Zyb21SZWN0IHRoYXQgcmV0dXJucyByZXN1bHQgZnJvbSBj
aGlsZCBmcmFtZXMuCisKKyAgICAgICAgKiBmYXN0L2RvbS9ub2Rlc0Zyb21SZWN0L25vZGVzRnJv
bVJlY3QtY2hpbGQtZnJhbWUtY29udGVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZG9tL25vZGVzRnJvbVJlY3Qvbm9kZXNGcm9tUmVjdC1jaGlsZC1mcmFtZS1jb250ZW50
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL25vZGVzRnJvbVJlY3Qvbm9kZXNGcm9t
UmVjdC1jb250aW51YXRpb24tY3Jhc2guaHRtbDoKKyAgICAgICAgKiBmYXN0L2RvbS9ub2Rlc0Zy
b21SZWN0L3Jlc291cmNlcy9jaGlsZC1mcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2RvbS9ub2Rlc0Zyb21SZWN0L3Jlc291cmNlcy9ub2Rlc0Zyb21SZWN0LmpzOgorICAgICAgICAo
Y2hlY2spOgorICAgICAgICAoY2hlY2tTaGFkb3dDb250ZW50KToKKyAgICAgICAgKG5vZGVzRnJv
bVJlY3RBc1N0cmluZyk6CisKIDIwMTMtMDEtMDkgIEt1bmloaWtvIFNha2Ftb3RvICA8a3Nha2Ft
b3RvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBJTlBVVF9NVUxUSVBMRV9GSUVMRFNfVUk6IG1p
bi9tYXggYXR0cmlidXRlcyBzaG91bGQgbm90IG1ha2UgYWxsIGZpZWxkcyByZWFkLW9ubHkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3Qvbm9kZXNGcm9tUmVj
dC1jaGlsZC1mcmFtZS1jb250ZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L25vZGVzRnJvbVJlY3Qvbm9kZXNGcm9tUmVjdC1jaGlsZC1mcmFtZS1jb250ZW50LWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45YzFjOTcwMGMyNTliZDIyNDkwMDNhM2U4MDM1NDdlMTI0ZGNmZmZm
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9tUmVjdC9u
b2Rlc0Zyb21SZWN0LWNoaWxkLWZyYW1lLWNvbnRlbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTggQEAKKworRG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QgOiBBbGxvdyBjaGlsZC1mcmFtZSBjb250
ZW50IC0gYnVnIDk1MjA0CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIEFs
bCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0CitQQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZv
dW5kIGZvciByZWN0CitQQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0CitQQVNT
IEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0CitQQVNTIEFsbCBjb3JyZWN0IG5vZGVz
IGZvdW5kIGZvciByZWN0CitQQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0CitQ
QVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0CitQQVNTIEFsbCBjb3JyZWN0IG5v
ZGVzIGZvdW5kIGZvciByZWN0CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9t
UmVjdC9ub2Rlc0Zyb21SZWN0LWNoaWxkLWZyYW1lLWNvbnRlbnQuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL25vZGVzRnJvbVJlY3Qvbm9kZXNGcm9tUmVjdC1jaGlsZC1mcmFtZS1jb250ZW50
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYWRiNDE2N2IxNzgwMmRjZWI5ZTM4NmM1NGUzMWU1NDY4NWM1MWU5
NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3Qv
bm9kZXNGcm9tUmVjdC1jaGlsZC1mcmFtZS1jb250ZW50Lmh0bWwKQEAgLTAsMCArMSw3NyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDx0aXRsZT5Eb2N1bWVudDo6bm9k
ZXNGcm9tUmVjdCA6IEFsbG93IGNoaWxkLWZyYW1lIGNvbnRlbnQgLSBidWcgOTUyMDQ8L3RpdGxl
PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbm9kZXNGcm9tUmVjdC5qcyI+PC9z
Y3JpcHQ+CisgICAgPHN0eWxlPgorICAgICAgICBib2R5IHsgbWFyZ2luOiAwcHg7IH0KKyAgICAg
ICAgI3NhbmRib3ggeworICAgICAgICAgICAgd2lkdGg6IDQwMHB4OworICAgICAgICAgICAgaGVp
Z2h0OiAyMDBweDsKKyAgICAgICAgfQorICAgICAgICAjc2FuZGJveCAjbGF5ZXIgeworICAgICAg
ICAgICAgZmxvYXQ6IHJpZ2h0OworICAgICAgICB9CisgICAgICAgICNzYW5kYm94IGlmcmFtZSB7
CisgICAgICAgICAgICBkaXNwbGF5OiBibG9jazsKKyAgICAgICAgICAgIGJveC1zaXppbmc6IGJv
cmRlci1ib3g7CisgICAgICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgICAgICBoZWlnaHQ6
IDIwMHB4OworICAgICAgICAgICAgYm9yZGVyOiBub25lOworICAgICAgICB9CisgICAgICAgIC5y
b3RhdGUxODAgeyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7IH0KKyAgICAgICAg
LnJvdGF0ZTkwIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7IH0KKyAgICAgICAg
I3NhbmRib3ggLmJveCB7CisgICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OworICAg
ICAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAg
ICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOworICAgICAgICB9CisgICAgPC9zdHlsZT4K
KzwvaGVhZD4KKzxib2R5IGlkPSJib2R5Ij4KKyAgICA8ZGl2IGlkPXNhbmRib3g+CisgICAgICAg
IDxkaXYgaWQ9bGF5ZXI+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJpZnJhbWUxIiBzcmM9InJl
c291cmNlcy9jaGlsZC1mcmFtZS5odG1sIj48L2lmcmFtZT4KKyAgICAgICAgPC9kaXY+CisgICAg
ICAgIDxkaXYgaWQ9ZGl2MSBjbGFzcz1ib3g+PC9kaXY+CisgICAgICAgIDxkaXYgaWQ9ZGl2MiBj
bGFzcz1ib3g+PC9kaXY+CisgICAgPC9kaXY+CisKKyAgICA8cCBpZD0nZGVzY3JpcHRpb24nPjwv
cD4KKyAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICA8c2NyaXB0IHR5cGU9ImFwcGxp
Y2F0aW9uL2phdmFzY3JpcHQiPgorICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkKKyAgICAgICAg
eworICAgICAgICAgICAgZGVzY3JpcHRpb24oZG9jdW1lbnQudGl0bGUpOworCisgICAgICAgICAg
ICAvLyBTZXQgdXAgc2hvcnRjdXQgYWNjZXNzIHRvIGVsZW1lbnRzCisgICAgICAgICAgICB2YXIg
ZSA9IHt9OworICAgICAgICAgICAgWydzYW5kYm94JywgJ2xheWVyJ10uZm9yRWFjaChmdW5jdGlv
bihhKSB7CisgICAgICAgICAgICAgICAgZVthXSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGEp
OworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGNoZWNrUmVjdCgyNSwgMjUsIDEwMCwg
MTAwLCAiRElWI2RpdjIsIERJViNkaXYxLCBESVYjc2FuZGJveCIpOworICAgICAgICAgICAgY2hl
Y2tSZWN0KDIyMCwgMjAsIDcwLCA3MCwgIkRJViNsZWZ0Iik7CisgICAgICAgICAgICBjaGVja1Jl
Y3QoMjUwLCAyMCwgMTAwLCA3MCwgIkRJViNyaWdodCwgRElWI2xlZnQsIEhUTUwiKTsKKworICAg
ICAgICAgICAgY2hlY2tSZWN0KDE1MCwgNTAsIDEwMCwgMTAwLCAiRElWI2xlZnQsIEhUTUwsICNk
b2N1bWVudCwgSUZSQU1FI2lmcmFtZTEsIERJViNsYXllciwgRElWI2RpdjIsIERJViNkaXYxLCBE
SVYjc2FuZGJveCIpOworCisgICAgICAgICAgICBlLmxheWVyLnNldEF0dHJpYnV0ZSgnY2xhc3Mn
LCAncm90YXRlMTgwJyk7CisgICAgICAgICAgICBjaGVja1JlY3QoMjIwLCAyMCwgNzAsIDcwLCAi
RElWI3JpZ2h0Iik7CisgICAgICAgICAgICBjaGVja1JlY3QoMTUwLCA1MCwgMTAwLCAxMDAsICJE
SVYjcmlnaHQsIEhUTUwsICNkb2N1bWVudCwgSUZSQU1FI2lmcmFtZTEsIERJViNsYXllciwgRElW
I2RpdjIsIERJViNkaXYxLCBESVYjc2FuZGJveCIpOworCisgICAgICAgICAgICBlLmxheWVyLnNl
dEF0dHJpYnV0ZSgnY2xhc3MnLCAncm90YXRlOTAnKTsKKyAgICAgICAgICAgIGNoZWNrUmVjdCgy
NTAsIDIwLCAxMDAsIDcwLCAiRElWI2xlZnQiKTsKKyAgICAgICAgICAgIGNoZWNrUmVjdCgxNTAs
IDIwLCAyMDAsIDYwLCAiRElWI2xlZnQsIEhUTUwsICNkb2N1bWVudCwgSUZSQU1FI2lmcmFtZTEs
IERJViNsYXllciwgRElWI2RpdjEsIERJViNzYW5kYm94Iik7CisKKyAgICAgICAgICAgIGUuc2Fu
ZGJveC5kaXNwbGF5ID0gJ25vbmUnOworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAg
ICAgIH0KKyAgICAgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgICAgIHdpbmRvdy5vbmxv
YWQgPSBydW5UZXN0OworICAgIDwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3Qvbm9kZXNGcm9tUmVj
dC1jb250aW51YXRpb24tY3Jhc2guaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJv
bVJlY3Qvbm9kZXNGcm9tUmVjdC1jb250aW51YXRpb24tY3Jhc2guaHRtbAppbmRleCBhZmZhNWU1
MTFlYzc3ZmQ0MDAyY2JmMTY5OTk0ZjJkMDVkYzU0NjhhLi5jMTZjZDgyYTE5Y2FmYWU1NTVkYmRi
NmMyZTkxYTM3YWQzYmIyNjhjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2Rl
c0Zyb21SZWN0L25vZGVzRnJvbVJlY3QtY29udGludWF0aW9uLWNyYXNoLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9tUmVjdC9ub2Rlc0Zyb21SZWN0LWNvbnRpbnVhdGlv
bi1jcmFzaC5odG1sCkBAIC03LDcgKzcsNyBAQCBpZiAod2luZG93LnRlc3RSdW5uZXIpCiB3aW5k
b3cub25sb2FkID0gZnVuY3Rpb24oKSB7CiAgICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzKQogICAg
ICAgICBhbGVydCgiVGhpcyB0ZXN0IHJlcXVpcmVzIHdpbmRvdy5pbnRlcm5hbHMiKTsKLSAgICB2
YXIgbm9kZXMgPSBpbnRlcm5hbHMubm9kZXNGcm9tUmVjdChkb2N1bWVudCwgMTAwLCAxMDAsIDIw
LCAyMCwgMjAsIDIwLCBmYWxzZSwgZmFsc2UpOworICAgIHZhciBub2RlcyA9IGludGVybmFscy5u
b2Rlc0Zyb21SZWN0KGRvY3VtZW50LCAxMDAsIDEwMCwgMjAsIDIwLCAyMCwgMjAsIGZhbHNlLCBm
YWxzZSwgZmFsc2UpOwogICAgIGFsZXJ0KCJQQVNTOiBUaGlzIHRlc3QgZGlkIG5vdCB0cmlnZ2Vy
IGFuIEFTU0VSVCIpOwogfTsKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9kb20vbm9kZXNGcm9tUmVjdC9yZXNvdXJjZXMvY2hpbGQtZnJhbWUuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3QvcmVzb3VyY2VzL2NoaWxkLWZyYW1lLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMjA0ZDdmYWFkYmI5ODY2N2JmZWM0YTQ3MjdjOGRhMjg3MzYzM2U2OQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3QvcmVzb3VyY2Vz
L2NoaWxkLWZyYW1lLmh0bWwKQEAgLTAsMCArMSwyNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyAgICBib2R5IHsgbWFyZ2luOiAw
cHg7IH0KKyAgICBkaXYgeyAKKyAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKKyAgICAg
ICAgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7CisgICAgfQorICAgICNsZWZ0IHsKKyAgICAgICAg
ZmxvYXQ6bGVmdDsKKyAgICAgICAgd2lkdGg6IDkwcHg7CisgICAgICAgIGhlaWdodDogMTkwcHg7
CisgICAgfQorICAgICNyaWdodCB7CisgICAgICAgIGZsb2F0OnJpZ2h0OworICAgICAgICB3aWR0
aDogOTBweDsKKyAgICAgICAgaGVpZ2h0OiAxOTBweDsKKyAgICB9Cis8L3N0eWxlPgorPC9oZWFk
PgorPGJvZHk+CisgICAgPGRpdiBpZD1sZWZ0PjwvZGl2PgorICAgIDxkaXYgaWQ9cmlnaHQ+PC9k
aXY+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9t
L25vZGVzRnJvbVJlY3QvcmVzb3VyY2VzL25vZGVzRnJvbVJlY3QuanMgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9ub2Rlc0Zyb21SZWN0L3Jlc291cmNlcy9ub2Rlc0Zyb21SZWN0LmpzCmluZGV4IGQw
MmMxYzdkYjQ5ZTY4M2U4MDM1MDc2ZDgyNDAxMjc1MTVmN2FiMDQuLmE3Mjg3YzhiNDk3ZGI0YjE4
MGM2NTc2YjUxZDljOGI5NThmOTUyMzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9t
L25vZGVzRnJvbVJlY3QvcmVzb3VyY2VzL25vZGVzRnJvbVJlY3QuanMKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vbm9kZXNGcm9tUmVjdC9yZXNvdXJjZXMvbm9kZXNGcm9tUmVjdC5qcwpAQCAt
MSw3ICsxLDggQEAKIC8qCiAgKiBDb250cmlidXRvcnM6CiAgKiAgICAgKiBBbnRvbmlvIEdvbWVz
IDx0b25pa2l0b29Ad2Via2l0Lm9yZz4KLSAqKi8KKyAqICAgICAqIEFsbGFuIFNhbmRmZWxkIEpl
bnNlbiA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KKyoqLwogCiBmdW5jdGlvbiBjaGVjayh4LCB5
LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nLCBs
aXN0LCBkb2MpCiB7CkBAIC0xMSw3ICsxMiw3IEBAIGZ1bmN0aW9uIGNoZWNrKHgsIHksIHRvcFBh
ZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcsIGxpc3QsCiAg
IGlmICghZG9jKQogICAgIGRvYyA9IGRvY3VtZW50OwogCi0gIHZhciBub2RlcyA9IGludGVybmFs
cy5ub2Rlc0Zyb21SZWN0KGRvYywgeCwgeSwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0
b21QYWRkaW5nLCBsZWZ0UGFkZGluZywgdHJ1ZSAvKiBpZ25vcmVDbGlwcGluZyAqLywgZmFsc2Ug
LyogYWxsb3cgc2hhZG93IGNvbnRlbnQgKi8pOworICB2YXIgbm9kZXMgPSBpbnRlcm5hbHMubm9k
ZXNGcm9tUmVjdChkb2MsIHgsIHksIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFk
ZGluZywgbGVmdFBhZGRpbmcsIHRydWUgLyogaWdub3JlQ2xpcHBpbmcgKi8sIGZhbHNlIC8qIGFs
bG93IHNoYWRvdyBjb250ZW50ICovLCBmYWxzZSAvKiBhbGxvdyBjaGlsZC1mcmFtZSBjb250ZW50
ICovKTsKICAgaWYgKCFub2RlcykKICAgICByZXR1cm47CiAKQEAgLTQ1LDcgKzQ2LDcgQEAgZnVu
Y3Rpb24gY2hlY2tTaGFkb3dDb250ZW50KHgsIHksIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywg
Ym90dG9tUGFkZGluZywgbGVmdFAKICAgaWYgKCFkb2MpCiAgICAgZG9jID0gZG9jdW1lbnQ7CiAK
LSAgdmFyIG5vZGVzID0gaW50ZXJuYWxzLm5vZGVzRnJvbVJlY3QoZG9jLCB4LCB5LCB0b3BQYWRk
aW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nLCB0cnVlIC8qIGln
bm9yZUNsaXBwaW5nICovLCB0cnVlIC8qIGFsbG93U2hhZG93Q29udGVudCAqLyk7CisgIHZhciBu
b2RlcyA9IGludGVybmFscy5ub2Rlc0Zyb21SZWN0KGRvYywgeCwgeSwgdG9wUGFkZGluZywgcmln
aHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0UGFkZGluZywgdHJ1ZSAvKiBpZ25vcmVDbGlw
cGluZyAqLywgdHJ1ZSAvKiBhbGxvd1NoYWRvd0NvbnRlbnQgKi8sIGZhbHNlIC8qIGFsbG93IGNo
aWxkLWZyYW1lIGNvbnRlbnQgKi8pOwogICBpZiAoIW5vZGVzKQogICAgIHJldHVybjsKIApAQCAt
OTYsNyArOTcsNyBAQCBmdW5jdGlvbiBjaGVja1JlY3QobGVmdCwgdG9wLCB3aWR0aCwgaGVpZ2h0
LCBleHBlY3RlZE5vZGVTdHJpbmcsIGRvYykKIGZ1bmN0aW9uIG5vZGVzRnJvbVJlY3RBc1N0cmlu
Zyhkb2MsIHgsIHksIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVm
dFBhZGRpbmcpCiB7CiAgICAgdmFyIG5vZGVTdHJpbmcgPSAiIjsKLSAgICB2YXIgbm9kZXMgPSBp
bnRlcm5hbHMubm9kZXNGcm9tUmVjdChkb2MsIHgsIHksIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGlu
ZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcsIHRydWUgLyogaWdub3JlQ2xpcHBpbmcgKi8s
IGZhbHNlIC8qIGFsbG93IHNoYWRvdyBjb250ZW50ICovKTsKKyAgICB2YXIgbm9kZXMgPSBpbnRl
cm5hbHMubm9kZXNGcm9tUmVjdChkb2MsIHgsIHksIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywg
Ym90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcsIHRydWUgLyogaWdub3JlQ2xpcHBpbmcgKi8sIGZh
bHNlIC8qIGFsbG93IHNoYWRvdyBjb250ZW50ICovLCB0cnVlIC8qIGFsbG93IGNoaWxkLWZyYW1l
IGNvbnRlbnQgKi8pOwogICAgIGlmICghbm9kZXMpCiAgICAgICAgIHJldHVybiBub2RlU3RyaW5n
OwogCkBAIC0xMTAsNiArMTExLDggQEAgZnVuY3Rpb24gbm9kZXNGcm9tUmVjdEFzU3RyaW5nKGRv
YywgeCwgeSwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW4KICAgICAgICAg
ICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChub2Rlc1tpXS5ub2RlVHlwZSA9PSAzKSB7CiAgICAg
ICAgICAgICBub2RlU3RyaW5nICs9ICInIiArIG5vZGVzW2ldLmRhdGEgKyAiJyI7CisgICAgICAg
IH0gZWxzZSBpZiAobm9kZXNbaV0ubm9kZVR5cGUgPT0gOSkgeworICAgICAgICAgICAgbm9kZVN0
cmluZyArPSAiI2RvY3VtZW50IjsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICB9CkBAIC0xMjAsNyArMTIzLDYgQEAgZnVuY3Rpb24gbm9kZXNGcm9tUmVj
dEFzU3RyaW5nKGRvYywgeCwgeSwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRk
aW4KICAgICByZXR1cm4gbm9kZVN0cmluZzsKIH0KIAotCiBmdW5jdGlvbiBnZXRDZW50ZXJGb3Io
ZWxlbWVudCkKIHsKICAgdmFyIHJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgp
OwpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDAxOGNjMDFiYTAyMjVk
MzJlMmY5NGI5NmE3NTQ5OGQ1NjVkZTMwN2MuLjc1Njc2YWQwOTY5ZDFlOGZmY2JhZGE2MDc3NjU3
OTM0Y2YzYjMxOGUgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxMi0xMi0xMyAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVu
c2VuQGRpZ2lhLmNvbT4KKworICAgICAgICBBbGxvdyBjaGlsZC1mcmFtZSBjb250ZW50IGluIGhp
dC10ZXN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk1MjA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VXBkYXRlIGV4cG9ydGVkIHN5bWJvbHMuCisKKyAgICAgICAgKiBTb3VyY2UvYXV0b3Rvb2xzL3N5
bWJvbHMuZmlsdGVyOgorCiAyMDEzLTAxLTA4ICBaYW4gRG9iZXJzZWsgIDx6YW5kb2JlcnNla0Bn
bWFpbC5jb20+CiAKICAgICAgICAgQWRkIGFuIEF1dG9jb25mIG1hY3JvIHRoYXQgY2hlY2tzIHdo
ZXRoZXIgYSBnaXZlbiBmZWF0dXJlIGlzIGVuYWJsZWQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181904</attachid>
            <date>2013-01-09 06:04:56 -0800</date>
            <delta_ts>2013-01-11 04:32:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95204-20130109150124.patch</filename>
            <type>text/plain</type>
            <size>36991</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODVhYjU0M2UxYjE1ZGYy
MzkyYzdjZDlmNDI1ODhlODU3N2NmYmIyMy4uMTFmOTQ0M2UzYTk0NDliNjZmYWZmNjNmMThiMGVk
NmRlMjVlOTViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEzLTAxLTA5ICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIEFs
bG93IGNoaWxkLWZyYW1lIGNvbnRlbnQgaW4gaGl0LXRlc3RzLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUyMDQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvcnMgaG93IEV2ZW50SGFuZGxlcjo6
aGl0VGVzdFJlc3VsdEF0UG9pbnQgaGFuZGxlcyBjaGlsZC1mcmFtZSBjb250ZW50LAorICAgICAg
ICBpdCBpcyBub3cgaGFuZGxlZCBieSB0aGUgaGl0IHRlc3QgaXRzZWxmIGNvbnRyb2xsZWQgYnkg
dGhlIEFsbG93Q2hpbGRGcmFtZUNvbnRlbnQKKyAgICAgICAgZmxhZyBpbiBIaXRUZXN0UmVxdWVz
dC4KKworICAgICAgICBUZXN0czogZmFzdC9kb20vbm9kZXNGcm9tUmVjdC9ub2Rlc0Zyb21SZWN0
LWNoaWxkLWZyYW1lLWNvbnRlbnQuaHRtbAorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46Cisg
ICAgICAgICogV2ViQ29yZS5vcmRlcjoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QpOgorICAgICAgICAqIGRvbS9E
b2N1bWVudC5oOgorICAgICAgICAoRG9jdW1lbnQpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5k
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGl0VGVzdFJlc3VsdEF0
UG9pbnQpOgorICAgICAgICAqIHBhZ2UvVG91Y2hBZGp1c3RtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRvdWNoQWRqdXN0bWVudDo6cGFyZW50SG9zdE9yT3duZXIpOgorICAgICAgICAoVG91
Y2hBZGp1c3RtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRvdWNoQWRqdXN0bWVudDo6Y29tcGls
ZVN1YnRhcmdldExpc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0UmVxdWVzdC5oOgor
ICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlcXVlc3Q6OmFsbG93c0NoaWxkRnJhbWVDb250ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXF1ZXN0Ojppc0NoaWxkRnJhbWVIaXRUZXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXF1ZXN0OjpzaG91bGRUZXN0Q2hpbGRGcmFt
ZVNjcm9sbEJhcnMpOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQpOgorICAgICAgICAo
V2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYkNvcmU6Okhp
dFRlc3RSZXN1bHQ6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0Ojpk
aWN0YXRpb25BbHRlcm5hdGl2ZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0
Lmg6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0Ojpwb2ludEluTWFpbkZyYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OnBvaW50SW5Jbm5lck5vZGVGcmFtZSk6
CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpzZXRQb2ludEluSW5uZXJOb2RlRnJh
bWUpOgorICAgICAgICAoSGl0VGVzdFJlc3VsdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckZyYW1lQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFtZUJhc2U6Om5vZGVB
dFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmg6CisgICAgICAg
IChSZW5kZXJGcmFtZUJhc2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aGl0VGVzdCk6CisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpub2Rlc0Zy
b21SZWN0KToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAoSW50ZXJu
YWxzKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIwMTMtMDEtMDkgIEt1
bmloaWtvIFNha2Ftb3RvICA8a3Nha2Ftb3RvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBJTlBV
VF9NVUxUSVBMRV9GSUVMRFNfVUk6IG1pbi9tYXggYXR0cmlidXRlcyBzaG91bGQgbm90IG1ha2Ug
YWxsIGZpZWxkcyByZWFkLW9ubHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCAyNjVlMjQxN2UyMTk2ZDBm
MGE0MzZkYjA5NzFlYWMxOTJkZWRmNDc5Li5iZjllMzBkYWY4YTM5NzBiNDYwZjk5NGUwYjBlM2Fi
NTE0Y2YxMGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTMtMDEtMDkg
IEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CisKKyAgICAg
ICAgQWxsb3cgY2hpbGQtZnJhbWUgY29udGVudCBpbiBoaXQtdGVzdHMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTIwNAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBleHBvcnRlZCBzeW1ib2xz
LgorCisgICAgICAgICogV2ViS2l0LnZjcHJvai9XZWJLaXQuZGVmLmluOgorCiAyMDEzLTAxLTA4
ICBIYWppbWUgTW9ycml0YSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAogICAgICAgICBbU2hhZG93
IERPTV0gRGlzdHJpYnV0aW9uIHJlbGF0ZWQgY29kZSBvbiBTaGFkb3dSb290IHNob3VsZCBiZSBt
aW5pbWl6ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDc1ZjgzYzdjYmYzODE1MDIyMjFjMTQw
YWY2M2Q0NGMxOTExNGY1MTcuLjk3ZGIzYmYwMTlmOTc3ZDM4NWQzYzdkZjAxYzE4MzhkYWY4MzQw
YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0xNDU1LDcgKzE0NTUsNyBAQCBfX1pOSzdXZWJD
b3JlN0ludFJlY3RjdjZDR1JlY3RFdgogX19aTks3V2ViQ29yZTdSdW5Mb29wOVRpbWVyQmFzZThp
c0FjdGl2ZUV2CiBfX1pOSzdXZWJDb3JlOERvY3VtZW50MTFjb21wbGV0ZVVSTEVSS04zV1RGNlN0
cmluZ0UKIF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQxM2F4T2JqZWN0Q2FjaGVFdgotX19aTks3V2Vi
Q29yZThEb2N1bWVudDEzbm9kZXNGcm9tUmVjdEVpaWpqampiYgorX19aTks3V2ViQ29yZThEb2N1
bWVudDEzbm9kZXNGcm9tUmVjdEVpaWpqampiYmIKIF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQxNGdl
dEVsZW1lbnRCeUlkRVJLTjNXVEYxMkF0b21pY1N0cmluZ0UKIF9fWk5LN1dlYkNvcmU4RG9jdW1l
bnQzMWRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2RpbmdFUktOM1dURjZTdHJpbmdFCiBfX1pO
SzdXZWJDb3JlOERvY3VtZW50NGJvZHlFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5vcmRlciBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKaW5kZXggMmNiNmQyZWZk
ZjJlMzc0OTAyYjlkMTBhODRlMzgwOTlhNTQ3NjcwNi4uZDYzYjBhOGFmNTAxNWRjMzgzOGNiMGM1
YzY5MjI0NmRhOWIxNTdlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRl
cgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCkBAIC0yMjc0OCw3ICsyMjc0OCw3
IEBAIF9fWk5LN1dlYkNvcmUxMk5vZGVJdGVyYXRvcjIwdXBkYXRlRm9yTm9kZVJlbW92YWxFUE5T
XzROb2RlRVJOUzBfMTFOb2RlUG9pbnRlckUKIF9fWk43V2ViQ29yZTI3anNOb2RlSXRlcmF0b3JS
ZWZlcmVuY2VOb2RlRVBOM0pTQzlFeGVjU3RhdGVFTlMwXzdKU1ZhbHVlRVJLTlMwXzEwSWRlbnRp
ZmllckUKIF9fWk5LN1dlYkNvcmU0Tm9kZTIwdHJhdmVyc2VQcmV2aW91c05vZGVFUEtTMF8KIF9f
Wk43V2ViQ29yZTM3anNOb2RlSXRlcmF0b3JQcm90b3R5cGVGdW5jdGlvbkRldGFjaEVQTjNKU0M5
RXhlY1N0YXRlRQotX19aTks3V2ViQ29yZThEb2N1bWVudDEzbm9kZXNGcm9tUmVjdEVpaWpqampi
CitfX1pOSzdXZWJDb3JlOERvY3VtZW50MTNub2Rlc0Zyb21SZWN0RWlpampqamJiYgogX19aTks3
V2ViQ29yZThEb2N1bWVudDE3aGFuZGxlWmVyb1BhZGRpbmdFUktOU18xNEhpdFRlc3RSZXF1ZXN0
RVJOU18xM0hpdFRlc3RSZXN1bHRFCiBfX1pOM1dURjIxTGlzdEhhc2hTZXRUcmFuc2xhdG9ySU5T
XzZSZWZQdHJJTjdXZWJDb3JlNE5vZGVFRUVMbTI1NkVOU183UHRySGFzaElTNF9FRUU5dHJhbnNs
YXRlRVJQTlNfMTVMaXN0SGFzaFNldE5vZGVJUzRfTG0yNTZFRUVSS1M0X1BOU18yNExpc3RIYXNo
U2V0Tm9kZUFsbG9jYXRvcklTNF9MbTI1NkVFRQogX19aTjdXZWJDb3JlMjFTdGF0aWNIYXNoU2V0
Tm9kZUxpc3RDMUVSTjNXVEYxMUxpc3RIYXNoU2V0SU5TMV82UmVmUHRySU5TXzROb2RlRUVFTG0y
NTZFTlMxXzdQdHJIYXNoSVM1X0VFRUUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDZhZDA2
ZjIxMTc1NmM4NjNiODQ0MWM0MWQ4ZjU4YTZkMTBjYzRmYmMuLjRkOWJjYmNmZTYyYTI1NmU3Y2Zh
YmEzZDdjZWI4ODY5NGRhMGEwYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMTM3OCw3
ICsxMzc4LDcgQEAgU3RyaW5nIERvY3VtZW50OjpzdWdnZXN0ZWRNSU1FVHlwZSgpIGNvbnN0CiAv
LyAqIG1ha2luZyBpdCByZWNlaXZlIGEgcmVjdCBhcyBwYXJhbWV0ZXIsIGkuZS4gbm9kZXNGcm9t
UmVjdCh4LCB5LCB3LCBoKTsKIC8vICogbWFraW5nIGl0IHJlY2VpdmUgdGhlIGV4cGFkaW5nIHNp
emUgb2YgZWFjaCBkaXJlY3Rpb24gc2VwYXJhdGVseSwKIC8vICAgaS5lLiBub2Rlc0Zyb21SZWN0
KHgsIHksIHRvcFNpemUsIHJpZ2h0U2l6ZSwgYm90dG9tU2l6ZSwgbGVmdFNpemUpOwotUGFzc1Jl
ZlB0cjxOb2RlTGlzdD4gRG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QoaW50IGNlbnRlclgsIGludCBj
ZW50ZXJZLCB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcsIHVuc2ln
bmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nLCBib29sIGlnbm9yZUNsaXBw
aW5nLCBib29sIGFsbG93U2hhZG93Q29udGVudCkgY29uc3QKK1Bhc3NSZWZQdHI8Tm9kZUxpc3Q+
IERvY3VtZW50Ojpub2Rlc0Zyb21SZWN0KGludCBjZW50ZXJYLCBpbnQgY2VudGVyWSwgdW5zaWdu
ZWQgdG9wUGFkZGluZywgdW5zaWduZWQgcmlnaHRQYWRkaW5nLCB1bnNpZ25lZCBib3R0b21QYWRk
aW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGluZywgYm9vbCBpZ25vcmVDbGlwcGluZywgYm9vbCBhbGxv
d1NoYWRvd0NvbnRlbnQsIGJvb2wgYWxsb3dDaGlsZEZyYW1lQ29udGVudCkgY29uc3QKIHsKICAg
ICAvLyBGSVhNRTogU2hhcmUgY29kZSBiZXR3ZWVuIHRoaXMsIGVsZW1lbnRGcm9tUG9pbnQgYW5k
IGNhcmV0UmFuZ2VGcm9tUG9pbnQuCiAgICAgaWYgKCFyZW5kZXJlcigpKQpAQCAtMTQwMiw2ICsx
NDAyLDggQEAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gRG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QoaW50
IGNlbnRlclgsIGludCBjZW50ZXJZLCB1bnNpZ25lZAogICAgICAgICByZXR1cm4gMDsKICAgICBp
ZiAoYWxsb3dTaGFkb3dDb250ZW50KQogICAgICAgICB0eXBlIHw9IEhpdFRlc3RSZXF1ZXN0OjpB
bGxvd1NoYWRvd0NvbnRlbnQ7CisgICAgaWYgKGFsbG93Q2hpbGRGcmFtZUNvbnRlbnQpCisgICAg
ICAgIHR5cGUgfD0gSGl0VGVzdFJlcXVlc3Q6OkFsbG93Q2hpbGRGcmFtZUNvbnRlbnQ7CiAKICAg
ICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KHR5cGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4
IDI4ZDQ2YTEyNTc2OTEyM2NhYzZjMGJkOWU4NTU5MTA5YTVmMGQ5NTUuLmZjNTIyNzA3Nzg1NDU4
ZDNhYzBjZTI0OTkxYmNhNWY5NzkyODAxZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0zODAs
OCArMzgwLDkgQEAgcHVibGljOgogICAgICAqIEBwYXJhbSBpZ25vcmVDbGlwcGluZyB3aGV0aGVy
IG9yIG5vdCB0byBpZ25vcmUgdGhlIHJvb3Qgc2Nyb2xsIGZyYW1lIHdoZW4gcmV0cmlldmluZyB0
aGUgZWxlbWVudC4KICAgICAgKiAgICAgICAgSWYgZmFsc2UsIHRoaXMgbWV0aG9kIHJldHVybnMg
bnVsbCBmb3IgY29vcmRpbmF0ZXMgb3V0c2lkZSBvZiB0aGUgdmlld3BvcnQuCiAgICAgICovCi0g
ICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gbm9kZXNGcm9tUmVjdChpbnQgY2VudGVyWCwgaW50IGNl
bnRlclksIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFkZGluZywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcs
IHVuc2lnbmVkIGxlZnRQYWRkaW5nLCBib29sIGlnbm9yZUNsaXBwaW5nLCBib29sIGFsbG93U2hh
ZG93Q29udGVudCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gbm9kZXNGcm9tUmVj
dChpbnQgY2VudGVyWCwgaW50IGNlbnRlclksCisgICAgICAgIHVuc2lnbmVkIHRvcFBhZGRpbmcs
IHVuc2lnbmVkIHJpZ2h0UGFkZGluZywgdW5zaWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQg
bGVmdFBhZGRpbmcsCisgICAgICAgIGJvb2wgaWdub3JlQ2xpcHBpbmcsIGJvb2wgYWxsb3dTaGFk
b3dDb250ZW50LCBib29sIGFsbG93Q2hpbGRGcmFtZUNvbnRlbnQgPSBmYWxzZSkgY29uc3Q7CiAg
ICAgRWxlbWVudCogZWxlbWVudEZyb21Qb2ludChpbnQgeCwgaW50IHkpIGNvbnN0OwogICAgIFBh
c3NSZWZQdHI8UmFuZ2U+IGNhcmV0UmFuZ2VGcm9tUG9pbnQoaW50IHgsIGludCB5KTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDAyMTdhMDJjODRjNDMwOTVhYmJjMzU3
ODA0NGRiYWZiYjE0YmMzNmYuLmJlZGE0ZDJkZDMxMjdiMTJlOTBjYmM0ZDJmMDI4NDE4YWRhOTE4
YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTEwMzEsMzUgKzEwMzEs
MTQgQEAgSGl0VGVzdFJlc3VsdCBFdmVudEhhbmRsZXI6OmhpdFRlc3RSZXN1bHRBdFBvaW50KGNv
bnN0IExheW91dFBvaW50JiBwb2ludCwgYm9vbAogICAgICAgICBoaXRUeXBlIHw9IEhpdFRlc3RS
ZXF1ZXN0OjpJZ25vcmVDbGlwcGluZzsKICAgICBpZiAoYWxsb3dTaGFkb3dDb250ZW50KQogICAg
ICAgICBoaXRUeXBlIHw9IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd1NoYWRvd0NvbnRlbnQ7CisgICAg
aWYgKHRlc3RTY3JvbGxiYXJzID09IFNob3VsZEhpdFRlc3RTY3JvbGxiYXJzKQorICAgICAgICBo
aXRUeXBlIHw9IEhpdFRlc3RSZXF1ZXN0OjpUZXN0Q2hpbGRGcmFtZVNjcm9sbEJhcnM7CisgICAg
Ly8gaGl0VGVzdFJlc3VsdEF0UG9pbnQgYWx3YXlzIGhhbmRsZSBjaGlsZCBmcmFtZSBjb250ZW50
LgorICAgIGhpdFR5cGUgfD0gSGl0VGVzdFJlcXVlc3Q6OkFsbG93Q2hpbGRGcmFtZUNvbnRlbnQ7
CisKICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KGhpdFR5cGUpOwogICAgIG1fZnJhbWUtPmNv
bnRlbnRSZW5kZXJlcigpLT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7CiAKLSAgICB3aGlsZSAo
dHJ1ZSkgewotICAgICAgICBOb2RlKiBuID0gcmVzdWx0LmlubmVyTm9kZSgpOwotICAgICAgICBp
ZiAoIXJlc3VsdC5pc092ZXJXaWRnZXQoKSB8fCAhbiB8fCAhbi0+cmVuZGVyZXIoKSB8fCAhbi0+
cmVuZGVyZXIoKS0+aXNXaWRnZXQoKSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBSZW5k
ZXJXaWRnZXQqIHJlbmRlcldpZGdldCA9IHRvUmVuZGVyV2lkZ2V0KG4tPnJlbmRlcmVyKCkpOwot
ICAgICAgICBXaWRnZXQqIHdpZGdldCA9IHJlbmRlcldpZGdldC0+d2lkZ2V0KCk7Ci0gICAgICAg
IGlmICghd2lkZ2V0IHx8ICF3aWRnZXQtPmlzRnJhbWVWaWV3KCkpCi0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgRnJhbWUqIGZyYW1lID0gc3RhdGljX2Nhc3Q8SFRNTEZyYW1lRWxlbWVudEJh
c2UqPihuKS0+Y29udGVudEZyYW1lKCk7Ci0gICAgICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5j
b250ZW50UmVuZGVyZXIoKSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBGcmFtZVZpZXcq
IHZpZXcgPSBzdGF0aWNfY2FzdDxGcmFtZVZpZXcqPih3aWRnZXQpOwotICAgICAgICBMYXlvdXRQ
b2ludCB3aWRnZXRQb2ludChyZXN1bHQubG9jYWxQb2ludCgpLngoKSArIHZpZXctPnNjcm9sbFgo
KSAtIHJlbmRlcldpZGdldC0+Ym9yZGVyTGVmdCgpIC0gcmVuZGVyV2lkZ2V0LT5wYWRkaW5nTGVm
dCgpLCAKLSAgICAgICAgICAgIHJlc3VsdC5sb2NhbFBvaW50KCkueSgpICsgdmlldy0+c2Nyb2xs
WSgpIC0gcmVuZGVyV2lkZ2V0LT5ib3JkZXJUb3AoKSAtIHJlbmRlcldpZGdldC0+cGFkZGluZ1Rv
cCgpKTsKLSAgICAgICAgSGl0VGVzdFJlc3VsdCB3aWRnZXRIaXRUZXN0UmVzdWx0KHdpZGdldFBv
aW50LCBwYWRkaW5nLmhlaWdodCgpLCBwYWRkaW5nLndpZHRoKCksIHBhZGRpbmcuaGVpZ2h0KCks
IHBhZGRpbmcud2lkdGgoKSk7Ci0gICAgICAgIHdpZGdldEhpdFRlc3RSZXN1bHQuc2V0UG9pbnRJ
bk1haW5GcmFtZShyZXN1bHQucG9pbnRJbk1haW5GcmFtZSgpKTsKLSAgICAgICAgZnJhbWUtPmNv
bnRlbnRSZW5kZXJlcigpLT5oaXRUZXN0KHJlcXVlc3QsIHdpZGdldEhpdFRlc3RSZXN1bHQpOwot
ICAgICAgICByZXN1bHQgPSB3aWRnZXRIaXRUZXN0UmVzdWx0OwotCi0gICAgICAgIGlmICh0ZXN0
U2Nyb2xsYmFycyA9PSBTaG91bGRIaXRUZXN0U2Nyb2xsYmFycykgewotICAgICAgICAgICAgU2Ny
b2xsYmFyKiBldmVudFNjcm9sbGJhciA9IHZpZXctPnNjcm9sbGJhckF0UG9pbnQocm91bmRlZElu
dFBvaW50KHBvaW50KSk7Ci0gICAgICAgICAgICBpZiAoZXZlbnRTY3JvbGxiYXIpCi0gICAgICAg
ICAgICAgICAgcmVzdWx0LnNldFNjcm9sbGJhcihldmVudFNjcm9sbGJhcik7Ci0gICAgICAgIH0K
LSAgICB9Ci0KICAgICBpZiAoIWFsbG93U2hhZG93Q29udGVudCkKICAgICAgICAgcmVzdWx0LnNl
dFRvTm9uU2hhZG93QW5jZXN0b3IoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9Ub3VjaEFkanVzdG1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Ub3VjaEFkanVzdG1l
bnQuY3BwCmluZGV4IDFkZTAyMjAzYzU5NTA0ZTA3M2E3NjZjZDA5ZDU4NDA5YjUyYzJkYTIuLjM4
MmJkOGYwZGVkNDNiZThlMWE3YTVhMTU3ZDFjYmQ0MDhmYzA0MDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvVG91Y2hBZGp1c3RtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1RvdWNoQWRqdXN0bWVudC5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJGbG9h
dFBvaW50LmgiCiAjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3Lmgi
CisjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTElucHV0
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxMYWJlbEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
TmFtZXMuaCIKQEAgLTIyMSw2ICsyMjIsMTYgQEAgc3RhdGljIGlubGluZSB2b2lkIGFwcGVuZFpv
b21hYmxlU3VidGFyZ2V0cyhOb2RlKiBub2RlLCBTdWJ0YXJnZXRHZW9tZXRyeUxpc3QmIHMKICAg
ICAgICAgc3VidGFyZ2V0cy5hcHBlbmQoU3VidGFyZ2V0R2VvbWV0cnkobm9kZSwgKml0KSk7CiB9
CiAKK3N0YXRpYyBpbmxpbmUgTm9kZSogcGFyZW50SG9zdE9yT3duZXIoY29uc3QgTm9kZSogbm9k
ZSkKK3sKKyAgICBOb2RlKiBhbmNlc3RvciA9IG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKTsKKyAg
ICBpZiAoYW5jZXN0b3IpCisgICAgICAgIHJldHVybiBhbmNlc3RvcjsKKyAgICBpZiAobm9kZS0+
aXNEb2N1bWVudE5vZGUoKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IERvY3Vt
ZW50Kj4obm9kZSktPm93bmVyRWxlbWVudCgpOworICAgIHJldHVybiAwOworfQorCiAvLyBDb21w
aWxlcyBhIGxpc3Qgb2Ygc3VidGFyZ2V0cyBvZiBhbGwgdGhlIHJlbGV2YW50IHRhcmdldCBub2Rl
cy4KIHZvaWQgY29tcGlsZVN1YnRhcmdldExpc3QoY29uc3QgTm9kZUxpc3QmIGludGVyc2VjdGVk
Tm9kZXMsIFN1YnRhcmdldEdlb21ldHJ5TGlzdCYgc3VidGFyZ2V0cywgTm9kZUZpbHRlciBub2Rl
RmlsdGVyLCBBcHBlbmRTdWJ0YXJnZXRzRm9yTm9kZSBhcHBlbmRTdWJ0YXJnZXRzRm9yTm9kZSkK
IHsKQEAgLTI0OCw3ICsyNTksNyBAQCB2b2lkIGNvbXBpbGVTdWJ0YXJnZXRMaXN0KGNvbnN0IE5v
ZGVMaXN0JiBpbnRlcnNlY3RlZE5vZGVzLCBTdWJ0YXJnZXRHZW9tZXRyeUxpcwogICAgICAgICAg
ICAgaWYgKG5vZGVGaWx0ZXIodmlzaXRlZE5vZGUpKSB7CiAgICAgICAgICAgICAgICAgcmVzcG9u
ZGluZ05vZGUgPSB2aXNpdGVkTm9kZTsKICAgICAgICAgICAgICAgICAvLyBDb250aW51ZSB0aGUg
aXRlcmF0aW9uIHRvIGNvbGxlY3QgdGhlIGFuY2VzdG9ycyBvZiB0aGUgcmVzcG9uZGVyLCB3aGlj
aCB3ZSB3aWxsIG5lZWQgbGF0ZXIuCi0gICAgICAgICAgICAgICAgZm9yICh2aXNpdGVkTm9kZSA9
IHZpc2l0ZWROb2RlLT5wYXJlbnRPckhvc3ROb2RlKCk7IHZpc2l0ZWROb2RlOyB2aXNpdGVkTm9k
ZSA9IHZpc2l0ZWROb2RlLT5wYXJlbnRPckhvc3ROb2RlKCkpIHsKKyAgICAgICAgICAgICAgICBm
b3IgKHZpc2l0ZWROb2RlID0gcGFyZW50SG9zdE9yT3duZXIodmlzaXRlZE5vZGUpOyB2aXNpdGVk
Tm9kZTsgdmlzaXRlZE5vZGUgPSBwYXJlbnRIb3N0T3JPd25lcih2aXNpdGVkTm9kZSkpIHsKICAg
ICAgICAgICAgICAgICAgICAgSGFzaFNldDxOb2RlKj46OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBh
bmNlc3RvcnNUb1Jlc3BvbmRlcnNTZXQuYWRkKHZpc2l0ZWROb2RlKTsKICAgICAgICAgICAgICAg
ICAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXF1
ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlcXVlc3QuaAppbmRleCBk
OTM3YzI1MDQ2OTM5NmI3NGI3NDRlMmQyMDAzNjRhOWQ3YjA0MTcwLi4zZmFmODhhOWY5MTM3NjFl
YzAxM2Q2ZTdkMmNkZGFmMzJmODRkNzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvSGl0VGVzdFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0
VGVzdFJlcXVlc3QuaApAQCAtMzUsNyArMzUsMTAgQEAgcHVibGljOgogICAgICAgICBJZ25vcmVD
bGlwcGluZyA9IDEgPDwgNSwKICAgICAgICAgU1ZHQ2xpcENvbnRlbnQgPSAxIDw8IDYsCiAgICAg
ICAgIFRvdWNoRXZlbnQgPSAxIDw8IDcsCi0gICAgICAgIEFsbG93U2hhZG93Q29udGVudCA9IDEg
PDwgOAorICAgICAgICBBbGxvd1NoYWRvd0NvbnRlbnQgPSAxIDw8IDgsCisgICAgICAgIEFsbG93
Q2hpbGRGcmFtZUNvbnRlbnQgPSAxIDw8IDksCisgICAgICAgIENoaWxkRnJhbWVIaXRUZXN0ID0g
MSA8PCAxMCwKKyAgICAgICAgVGVzdENoaWxkRnJhbWVTY3JvbGxCYXJzID0gMSA8PCAxMQogICAg
IH07CiAKICAgICB0eXBlZGVmIHVuc2lnbmVkIEhpdFRlc3RSZXF1ZXN0VHlwZTsKQEAgLTU0LDYg
KzU3LDkgQEAgcHVibGljOgogICAgIGJvb2wgdG91Y2hFdmVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVxdWVzdFR5cGUgJiBUb3VjaEV2ZW50OyB9CiAgICAgYm9vbCBtb3VzZUV2ZW50KCkgY29uc3Qg
eyByZXR1cm4gIXRvdWNoRXZlbnQoKTsgfQogICAgIGJvb2wgYWxsb3dzU2hhZG93Q29udGVudCgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdFR5cGUgJiBBbGxvd1NoYWRvd0NvbnRlbnQ7IH0KKyAg
ICBib29sIGFsbG93c0NoaWxkRnJhbWVDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0
VHlwZSAmIEFsbG93Q2hpbGRGcmFtZUNvbnRlbnQ7IH0KKyAgICBib29sIGlzQ2hpbGRGcmFtZUhp
dFRlc3QoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RUeXBlICYgQ2hpbGRGcmFtZUhpdFRlc3Q7
IH0KKyAgICBib29sIHNob3VsZFRlc3RDaGlsZEZyYW1lU2Nyb2xsQmFycygpIGNvbnN0IHsgcmV0
dXJuIG1fcmVxdWVzdFR5cGUgJiBUZXN0Q2hpbGRGcmFtZVNjcm9sbEJhcnM7IH0KIAogICAgIC8v
IENvbnZlbmllbmNlIGZ1bmN0aW9ucwogICAgIGJvb2wgdG91Y2hNb3ZlKCkgY29uc3QgeyByZXR1
cm4gbW92ZSgpICYmIHRvdWNoRXZlbnQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hp
dFRlc3RSZXN1bHQuY3BwCmluZGV4IGNmZmRmNzgwNjhjYjc3ZDc2Y2MyMzFlNTVmYzc4ZjE5ZGQ1
OGU3YjYuLmRmZThiYzRjMzJjYTFmNzU0OGRmYTY0ZjgxZTA4MDA4YjBkNDI3YjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKQEAgLTE5OSwyMSArMTk5LDIx
IEBAIEhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQoKQogCiBIaXRUZXN0UmVzdWx0OjpIaXRU
ZXN0UmVzdWx0KGNvbnN0IExheW91dFBvaW50JiBwb2ludCkKICAgICA6IG1faGl0VGVzdExvY2F0
aW9uKHBvaW50KQotICAgICwgbV9wb2ludEluTWFpbkZyYW1lKHBvaW50KQorICAgICwgbV9wb2lu
dEluSW5uZXJOb2RlRnJhbWUocG9pbnQpCiAgICAgLCBtX2lzT3ZlcldpZGdldChmYWxzZSkKIHsK
IH0KIAogSGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3VsdChjb25zdCBMYXlvdXRQb2ludCYgY2Vu
dGVyUG9pbnQsIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFkZGluZywgdW5z
aWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcpCiAgICAgOiBtX2hpdFRl
c3RMb2NhdGlvbihjZW50ZXJQb2ludCwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21Q
YWRkaW5nLCBsZWZ0UGFkZGluZykKLSAgICAsIG1fcG9pbnRJbk1haW5GcmFtZShjZW50ZXJQb2lu
dCkKKyAgICAsIG1fcG9pbnRJbklubmVyTm9kZUZyYW1lKGNlbnRlclBvaW50KQogICAgICwgbV9p
c092ZXJXaWRnZXQoZmFsc2UpCiB7CiB9CiAKIEhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQo
Y29uc3QgSGl0VGVzdExvY2F0aW9uJiBvdGhlcikKICAgICA6IG1faGl0VGVzdExvY2F0aW9uKG90
aGVyKQotICAgICwgbV9wb2ludEluTWFpbkZyYW1lKG1faGl0VGVzdExvY2F0aW9uLnBvaW50KCkp
CisgICAgLCBtX3BvaW50SW5Jbm5lck5vZGVGcmFtZShtX2hpdFRlc3RMb2NhdGlvbi5wb2ludCgp
KQogICAgICwgbV9pc092ZXJXaWRnZXQoZmFsc2UpCiB7CiB9CkBAIC0yMjIsNyArMjIyLDcgQEAg
SGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3VsdChjb25zdCBIaXRUZXN0UmVzdWx0JiBvdGhlcikK
ICAgICA6IG1faGl0VGVzdExvY2F0aW9uKG90aGVyLm1faGl0VGVzdExvY2F0aW9uKQogICAgICwg
bV9pbm5lck5vZGUob3RoZXIuaW5uZXJOb2RlKCkpCiAgICAgLCBtX2lubmVyTm9uU2hhcmVkTm9k
ZShvdGhlci5pbm5lck5vblNoYXJlZE5vZGUoKSkKLSAgICAsIG1fcG9pbnRJbk1haW5GcmFtZShv
dGhlci5tX3BvaW50SW5NYWluRnJhbWUpCisgICAgLCBtX3BvaW50SW5Jbm5lck5vZGVGcmFtZShv
dGhlci5tX3BvaW50SW5Jbm5lck5vZGVGcmFtZSkKICAgICAsIG1fbG9jYWxQb2ludChvdGhlci5s
b2NhbFBvaW50KCkpCiAgICAgLCBtX2lubmVyVVJMRWxlbWVudChvdGhlci5VUkxFbGVtZW50KCkp
CiAgICAgLCBtX3Njcm9sbGJhcihvdGhlci5zY3JvbGxiYXIoKSkKQEAgLTI0MSw3ICsyNDEsNyBA
QCBIaXRUZXN0UmVzdWx0JiBIaXRUZXN0UmVzdWx0OjpvcGVyYXRvcj0oY29uc3QgSGl0VGVzdFJl
c3VsdCYgb3RoZXIpCiAgICAgbV9oaXRUZXN0TG9jYXRpb24gPSBvdGhlci5tX2hpdFRlc3RMb2Nh
dGlvbjsKICAgICBtX2lubmVyTm9kZSA9IG90aGVyLmlubmVyTm9kZSgpOwogICAgIG1faW5uZXJO
b25TaGFyZWROb2RlID0gb3RoZXIuaW5uZXJOb25TaGFyZWROb2RlKCk7Ci0gICAgbV9wb2ludElu
TWFpbkZyYW1lID0gb3RoZXIubV9wb2ludEluTWFpbkZyYW1lOworICAgIG1fcG9pbnRJbklubmVy
Tm9kZUZyYW1lID0gb3RoZXIubV9wb2ludEluSW5uZXJOb2RlRnJhbWU7CiAgICAgbV9sb2NhbFBv
aW50ID0gb3RoZXIubG9jYWxQb2ludCgpOwogICAgIG1faW5uZXJVUkxFbGVtZW50ID0gb3RoZXIu
VVJMRWxlbWVudCgpOwogICAgIG1fc2Nyb2xsYmFyID0gb3RoZXIuc2Nyb2xsYmFyKCk7CkBAIC03
MzUsNyArNzM1LDcgQEAgdm9pZCBIaXRUZXN0UmVzdWx0OjphcHBlbmQoY29uc3QgSGl0VGVzdFJl
c3VsdCYgb3RoZXIpCiAgICAgICAgIG1faW5uZXJOb2RlID0gb3RoZXIuaW5uZXJOb2RlKCk7CiAg
ICAgICAgIG1faW5uZXJOb25TaGFyZWROb2RlID0gb3RoZXIuaW5uZXJOb25TaGFyZWROb2RlKCk7
CiAgICAgICAgIG1fbG9jYWxQb2ludCA9IG90aGVyLmxvY2FsUG9pbnQoKTsKLSAgICAgICAgbV9w
b2ludEluTWFpbkZyYW1lID0gb3RoZXIubV9wb2ludEluTWFpbkZyYW1lOworICAgICAgICBtX3Bv
aW50SW5Jbm5lck5vZGVGcmFtZSA9IG90aGVyLm1fcG9pbnRJbklubmVyTm9kZUZyYW1lOwogICAg
ICAgICBtX2lubmVyVVJMRWxlbWVudCA9IG90aGVyLlVSTEVsZW1lbnQoKTsKICAgICAgICAgbV9z
Y3JvbGxiYXIgPSBvdGhlci5zY3JvbGxiYXIoKTsKICAgICAgICAgbV9pc092ZXJXaWRnZXQgPSBv
dGhlci5pc092ZXJXaWRnZXQoKTsKQEAgLTc2OCw3ICs3NjgsNyBAQCBWZWN0b3I8U3RyaW5nPiBI
aXRUZXN0UmVzdWx0OjpkaWN0YXRpb25BbHRlcm5hdGl2ZXMoKSBjb25zdAogICAgIGlmICghbV9p
bm5lck5vblNoYXJlZE5vZGUpCiAgICAgICAgIHJldHVybiBWZWN0b3I8U3RyaW5nPigpOwogCi0g
ICAgRG9jdW1lbnRNYXJrZXIqIG1hcmtlciA9IG1faW5uZXJOb25TaGFyZWROb2RlLT5kb2N1bWVu
dCgpLT5tYXJrZXJzKCktPm1hcmtlckNvbnRhaW5pbmdQb2ludChoaXRUZXN0TG9jYXRpb24oKS5w
b2ludCgpLCBEb2N1bWVudE1hcmtlcjo6RGljdGF0aW9uQWx0ZXJuYXRpdmVzKTsKKyAgICBEb2N1
bWVudE1hcmtlciogbWFya2VyID0gbV9pbm5lck5vblNoYXJlZE5vZGUtPmRvY3VtZW50KCktPm1h
cmtlcnMoKS0+bWFya2VyQ29udGFpbmluZ1BvaW50KHBvaW50SW5Jbm5lck5vZGVGcmFtZSgpLCBE
b2N1bWVudE1hcmtlcjo6RGljdGF0aW9uQWx0ZXJuYXRpdmVzKTsKICAgICBpZiAoIW1hcmtlcikK
ICAgICAgICAgcmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSGl0VGVzdFJlc3VsdC5oCmluZGV4IDU3YTQxZGFiNTk4ODYyM2IxOTY1NTE4YWYyMzFkY2Ez
NmNiYjkxNWIuLmU0YzVlZmUzYjIzODY4NDQ5MDkwODU1NzkwYTEwZTM3NjE2ODcwZDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaApAQCAtMTI0LDEzICsxMjQsMTMg
QEAgcHVibGljOgogICAgIGJvb2wgaXNSZWN0QmFzZWRUZXN0KCkgY29uc3QgeyByZXR1cm4gbV9o
aXRUZXN0TG9jYXRpb24uaXNSZWN0QmFzZWRUZXN0KCk7IH0KIAogICAgIC8vIFRoZSBoaXQtdGVz
dGVkIHBvaW50IGluIHRoZSBjb29yZGluYXRlcyBvZiB0aGUgbWFpbiBmcmFtZS4KLSAgICBjb25z
dCBMYXlvdXRQb2ludCYgcG9pbnRJbk1haW5GcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fcG9pbnRJ
bk1haW5GcmFtZTsgfQorICAgIGNvbnN0IExheW91dFBvaW50JiBwb2ludEluTWFpbkZyYW1lKCkg
Y29uc3QgeyByZXR1cm4gbV9oaXRUZXN0TG9jYXRpb24ucG9pbnQoKTsgfQogICAgIEludFBvaW50
IHJvdW5kZWRQb2ludEluTWFpbkZyYW1lKCkgY29uc3QgeyByZXR1cm4gcm91bmRlZEludFBvaW50
KHBvaW50SW5NYWluRnJhbWUoKSk7IH0KLSAgICB2b2lkIHNldFBvaW50SW5NYWluRnJhbWUoY29u
c3QgTGF5b3V0UG9pbnQmIHApIHsgbV9wb2ludEluTWFpbkZyYW1lID0gcDsgfQogCiAgICAgLy8g
VGhlIGhpdC10ZXN0ZWQgcG9pbnQgaW4gdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSBpbm5lck5vZGUg
ZnJhbWUsIHRoZSBmcmFtZSBjb250YWluaW5nIGlubmVyTm9kZS4KLSAgICBjb25zdCBMYXlvdXRQ
b2ludCYgcG9pbnRJbklubmVyTm9kZUZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9oaXRUZXN0TG9j
YXRpb24ucG9pbnQoKTsgfQorICAgIGNvbnN0IExheW91dFBvaW50JiBwb2ludEluSW5uZXJOb2Rl
RnJhbWUoKSBjb25zdCB7IHJldHVybiBtX3BvaW50SW5Jbm5lck5vZGVGcmFtZTsgfQogICAgIElu
dFBvaW50IHJvdW5kZWRQb2ludEluSW5uZXJOb2RlRnJhbWUoKSBjb25zdCB7IHJldHVybiByb3Vu
ZGVkSW50UG9pbnQocG9pbnRJbklubmVyTm9kZUZyYW1lKCkpOyB9CisgICAgdm9pZCBzZXRQb2lu
dEluSW5uZXJOb2RlRnJhbWUoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KSB7IG1fcG9pbnRJbklu
bmVyTm9kZUZyYW1lID0gcG9pbnQ7IH0KICAgICBGcmFtZSogaW5uZXJOb2RlRnJhbWUoKSBjb25z
dDsKIAogICAgIC8vIFRoZSBoaXQtdGVzdGVkIHBvaW50IGluIHRoZSBjb29yZGluYXRlcyBvZiB0
aGUgaW5uZXIgbm9kZS4KQEAgLTIwMiw3ICsyMDIsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRy
PE5vZGU+IG1faW5uZXJOb2RlOwogICAgIFJlZlB0cjxOb2RlPiBtX2lubmVyTm9uU2hhcmVkTm9k
ZTsKLSAgICBMYXlvdXRQb2ludCBtX3BvaW50SW5NYWluRnJhbWU7IC8vIFRoZSBoaXQtdGVzdGVk
IHBvaW50IGluIG1haW4tZnJhbWUgY29vcmRpbmF0ZXMuCisgICAgTGF5b3V0UG9pbnQgbV9wb2lu
dEluSW5uZXJOb2RlRnJhbWU7IC8vIFRoZSBoaXQtdGVzdGVkIHBvaW50IGluIGlubmVyTm9kZSBm
cmFtZSBjb29yZGluYXRlcy4KICAgICBMYXlvdXRQb2ludCBtX2xvY2FsUG9pbnQ7IC8vIEEgcG9p
bnQgaW4gdGhlIGxvY2FsIGNvb3JkaW5hdGUgc3BhY2Ugb2YgbV9pbm5lck5vblNoYXJlZE5vZGUn
cyByZW5kZXJlci4gQWxsb3dzIHVzIHRvIGVmZmljaWVudGx5CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBkZXRlcm1pbmUgd2hlcmUgaW5zaWRlIHRoZSByZW5kZXJlciB3ZSBoaXQg
b24gc3Vic2VxdWVudCBvcGVyYXRpb25zLgogICAgIFJlZlB0cjxFbGVtZW50PiBtX2lubmVyVVJM
RWxlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFt
ZUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5jcHAK
aW5kZXggYWE4Mjg3MGQ0ZWZhOGFkYmM4MTk2ZmRkNmE1MDZmNTk4Y2IwNzUzNy4uZGFlNWM2OTUw
OTkzYzM1YjE1ODM1MWU5YmMxODM2NmQ5MWI0ZjVlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5jcHAKQEAgLTI5LDYgKzI5LDggQEAKICNpbmNsdWRlICJG
cmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZUVsZW1l
bnRCYXNlLmgiCisjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgorI2luY2x1ZGUgIlJlbmRlckxh
eWVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC0xMDQsNCArMTA2LDM2IEBAIHZvaWQgUmVuZGVyRnJhbWVCYXNlOjpsYXlvdXRXaXRoRmxhdHRl
bmluZyhib29sIGhhc0ZpeGVkV2lkdGgsIGJvb2wgaGFzRml4ZWRIZWlnCiAgICAgc2V0TmVlZHNM
YXlvdXQoZmFsc2UpOwogfQogCitib29sIFJlbmRlckZyYW1lQmFzZTo6bm9kZUF0UG9pbnQoY29u
c3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3Qg
SGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYg
YWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24gYWN0aW9uKQoreworICAgIGlmIChyZXF1
ZXN0LmFsbG93c0NoaWxkRnJhbWVDb250ZW50KCkpIHsKKyAgICAgICAgRnJhbWVWaWV3KiBjaGls
ZEZyYW1lVmlldyA9IHN0YXRpY19jYXN0PEZyYW1lVmlldyo+KHdpZGdldCgpKTsKKyAgICAgICAg
UmVuZGVyVmlldyogY2hpbGRSb290ID0gY2hpbGRGcmFtZVZpZXcgPyBzdGF0aWNfY2FzdDxSZW5k
ZXJWaWV3Kj4oY2hpbGRGcmFtZVZpZXctPmZyYW1lKCktPmNvbnRlbnRSZW5kZXJlcigpKSA6IDA7
CisKKyAgICAgICAgaWYgKGNoaWxkUm9vdCkgeworICAgICAgICAgICAgTGF5b3V0UG9pbnQgYWRq
dXN0ZWRMb2NhdGlvbiA9IGFjY3VtdWxhdGVkT2Zmc2V0ICsgbG9jYXRpb24oKTsKKyAgICAgICAg
ICAgIExheW91dFBvaW50IGNvbnRlbnRPZmZzZXQgPSBMYXlvdXRQb2ludChib3JkZXJMZWZ0KCkg
KyBwYWRkaW5nTGVmdCgpLCBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3AoKSkgLSBjaGlsZEZyYW1l
Vmlldy0+c2Nyb2xsT2Zmc2V0KCk7CisgICAgICAgICAgICBIaXRUZXN0TG9jYXRpb24gbmV3SGl0
VGVzdExvY2F0aW9uKGxvY2F0aW9uSW5Db250YWluZXIsIC1hZGp1c3RlZExvY2F0aW9uIC0gY29u
dGVudE9mZnNldCk7CisgICAgICAgICAgICBIaXRUZXN0UmVxdWVzdCBuZXdIaXRUZXN0UmVxdWVz
dChyZXF1ZXN0LnR5cGUoKSB8IEhpdFRlc3RSZXF1ZXN0OjpDaGlsZEZyYW1lSGl0VGVzdCk7Cisg
ICAgICAgICAgICBIaXRUZXN0UmVzdWx0IGNoaWxkRnJhbWVSZXN1bHQobmV3SGl0VGVzdExvY2F0
aW9uKTsKKworICAgICAgICAgICAgYm9vbCBpc0luc2lkZUNoaWxkRnJhbWUgPSBjaGlsZFJvb3Qt
PmxheWVyKCktPmhpdFRlc3QobmV3SGl0VGVzdFJlcXVlc3QsIG5ld0hpdFRlc3RMb2NhdGlvbiwg
Y2hpbGRGcmFtZVJlc3VsdCk7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGNoaWxkRnJhbWVS
ZXN1bHQpOworICAgICAgICAgICAgaWYgKGlzSW5zaWRlQ2hpbGRGcmFtZSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAgaWYgKHJlcXVlc3Quc2hvdWxkVGVzdENo
aWxkRnJhbWVTY3JvbGxCYXJzKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBTY3JvbGxWaWV3IHNj
cm9sbGJhcnMgYXJlIG5vdCB0aGUgc2FtZSBhcyBSZW5kZXJMYXllciBzY3JvbGxiYXJzIHRlc3Rl
ZCBieSBSZW5kZXJMYXllcjo6aGl0VGVzdE92ZXJmbG93Q29udHJvbHMsCisgICAgICAgICAgICAg
ICAgLy8gc28gd2UgbmVlZCB0byB0ZXN0IFNjcm9sbFZpZXcgc2Nyb2xsYmFycyBzZXBhcmF0ZWx5
IGhlcmUuCisgICAgICAgICAgICAgICAgLy8gRklYTUU6IENvbnNpZGVyIGlmIHRoaXMgdGVzdCBj
b3VsZCBiZSBkb25lIHVuY29uZGl0aW9uYWxseS4KKyAgICAgICAgICAgICAgICBTY3JvbGxiYXIq
IGZyYW1lU2Nyb2xsYmFyID0gY2hpbGRGcmFtZVZpZXctPnNjcm9sbGJhckF0UG9pbnQobmV3SGl0
VGVzdExvY2F0aW9uLnJvdW5kZWRQb2ludCgpKTsKKyAgICAgICAgICAgICAgICBpZiAoZnJhbWVT
Y3JvbGxiYXIpCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5zZXRTY3JvbGxiYXIoZnJhbWVT
Y3JvbGxiYXIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJu
IFJlbmRlclBhcnQ6Om5vZGVBdFBvaW50KHJlcXVlc3QsIHJlc3VsdCwgbG9jYXRpb25JbkNvbnRh
aW5lciwgYWNjdW11bGF0ZWRPZmZzZXQsIGFjdGlvbik7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuaAppbmRleCA0ZmFkNTYwYzViMzM3Zjk2YjgxM2Iw
Y2I3OTA1NDUzNjJkYzY2ODdjLi5hN2RlZWRhYjEwMjgzZGY2OTU0MThlZGUwZmJiOTRkNDllMTJl
NDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5oCkBAIC0z
Niw2ICszNiw3IEBAIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBSZW5kZXJGcmFtZUJhc2UoRWxl
bWVudCopOwogCiBwdWJsaWM6CisgICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhp
dFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9j
YXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBI
aXRUZXN0QWN0aW9uKSBPVkVSUklERTsKICAgICB2b2lkIGxheW91dFdpdGhGbGF0dGVuaW5nKGJv
b2wgZml4ZWRXaWR0aCwgYm9vbCBmaXhlZEhlaWdodCk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCBkZGY1ZDM3OTVjNjhhYjFhNjBhOTAxZjcxZjQw
NThjMjBlZjE4ZjRjLi4zMWNmOGU0MjllYzdlMTkzYTE5ZGY2ZjhmMjc5ZTE3ZjY1MmJlZWI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTM5NTUsNyArMzk1
NSw3IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OmhpdFRlc3QoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJl
cXVlc3QsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYKICAgICAgICAgLy8gV2UgZGlkbid0IGhpdCBh
bnkgbGF5ZXIuIElmIHdlIGFyZSB0aGUgcm9vdCBsYXllciBhbmQgdGhlIG1vdXNlIGlzIC0tIG9y
IGp1c3Qgd2FzIC0tIGRvd24sIAogICAgICAgICAvLyByZXR1cm4gb3Vyc2VsdmVzLiBXZSBkbyB0
aGlzIHNvIG1vdXNlIGV2ZW50cyBjb250aW51ZSBnZXR0aW5nIGRlbGl2ZXJlZCBhZnRlciBhIGRy
YWcgaGFzIAogICAgICAgICAvLyBleGl0ZWQgdGhlIFdlYlZpZXcsIGFuZCBzbyBoaXQgdGVzdGlu
ZyBvdmVyIGEgc2Nyb2xsYmFyIGhpdHMgdGhlIGNvbnRlbnQgZG9jdW1lbnQuCi0gICAgICAgIGlm
ICgocmVxdWVzdC5hY3RpdmUoKSB8fCByZXF1ZXN0LnJlbGVhc2UoKSkgJiYgaXNSb290TGF5ZXIo
KSkgeworICAgICAgICBpZiAoIXJlcXVlc3QuaXNDaGlsZEZyYW1lSGl0VGVzdCgpICYmIChyZXF1
ZXN0LmFjdGl2ZSgpIHx8IHJlcXVlc3QucmVsZWFzZSgpKSAmJiBpc1Jvb3RMYXllcigpKSB7CiAg
ICAgICAgICAgICByZW5kZXJlcigpLT51cGRhdGVIaXRUZXN0UmVzdWx0KHJlc3VsdCwgdG9SZW5k
ZXJWaWV3KHJlbmRlcmVyKCkpLT5mbGlwRm9yV3JpdGluZ01vZGUoaGl0VGVzdExvY2F0aW9uLnBv
aW50KCkpKTsKICAgICAgICAgICAgIGluc2lkZUxheWVyID0gdGhpczsKICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDRlOGJmOGY0NjkxZWY5NGQxNjM4MGIx
ODUyM2RjYTk5NTFkNDUyOGQuLjI5ODc0NTVlZGFjMzBlYjRjYTMxN2Y4ZmRjZWYxYjkxOGU1OWRh
ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTEyODQsMTQgKzEyODQs
MTQgQEAgUGFzc1JlZlB0cjxDbGllbnRSZWN0TGlzdD4gSW50ZXJuYWxzOjp0b3VjaEV2ZW50VGFy
Z2V0Q2xpZW50UmVjdHMoRG9jdW1lbnQqIGRvY3UKICNlbmRpZgogCiBQYXNzUmVmUHRyPE5vZGVM
aXN0PiBJbnRlcm5hbHM6Om5vZGVzRnJvbVJlY3QoRG9jdW1lbnQqIGRvY3VtZW50LCBpbnQgeCwg
aW50IHksIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFkZGluZywKLSAgICB1
bnNpZ25lZCBib3R0b21QYWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGluZywgYm9vbCBpZ25vcmVD
bGlwcGluZywgYm9vbCBhbGxvd1NoYWRvd0NvbnRlbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25z
dAorICAgIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nLCBib29s
IGlnbm9yZUNsaXBwaW5nLCBib29sIGFsbG93U2hhZG93Q29udGVudCwgYm9vbCBhbGxvd0NoaWxk
RnJhbWVDb250ZW50LCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKIHsKICAgICBpZiAoIWRvY3Vt
ZW50IHx8ICFkb2N1bWVudC0+ZnJhbWUoKSB8fCAhZG9jdW1lbnQtPmZyYW1lKCktPnZpZXcoKSkg
ewogICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgfQogCi0gICAgcmV0dXJuIGRvY3VtZW50LT5ub2Rlc0Zyb21SZWN0KHgsIHksIHRvcFBhZGRp
bmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcsIGlnbm9yZUNsaXBw
aW5nLCBhbGxvd1NoYWRvd0NvbnRlbnQpOworICAgIHJldHVybiBkb2N1bWVudC0+bm9kZXNGcm9t
UmVjdCh4LCB5LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQ
YWRkaW5nLCBpZ25vcmVDbGlwcGluZywgYWxsb3dTaGFkb3dDb250ZW50LCBhbGxvd0NoaWxkRnJh
bWVDb250ZW50KTsKIH0KIAogdm9pZCBJbnRlcm5hbHM6OmVtaXRJbnNwZWN0b3JEaWRCZWdpbkZy
YW1lKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDRjNDQxZWU0ZjRkMjc5ZGQ0
ZDA2NTM0ODZhODM1NzEzYTNkYTk5NzAuLmE3NzBlNGQyMmM1YzA5M2VlZjlkNzI0ZTc5YzM3NGQ1
MjQ5MjljZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMTgwLDcgKzE4MCw3
IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gbm9kZXNGcm9t
UmVjdChEb2N1bWVudCosIGludCB4LCBpbnQgeSwgdW5zaWduZWQgdG9wUGFkZGluZywgdW5zaWdu
ZWQgcmlnaHRQYWRkaW5nLAotICAgICAgICB1bnNpZ25lZCBib3R0b21QYWRkaW5nLCB1bnNpZ25l
ZCBsZWZ0UGFkZGluZywgYm9vbCBpZ25vcmVDbGlwcGluZywgYm9vbCBhbGxvd1NoYWRvd0NvbnRl
bnQsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKKyAgICAgICAgdW5zaWduZWQgYm90dG9tUGFkZGlu
ZywgdW5zaWduZWQgbGVmdFBhZGRpbmcsIGJvb2wgaWdub3JlQ2xpcHBpbmcsIGJvb2wgYWxsb3dT
aGFkb3dDb250ZW50LCBib29sIGFsbG93Q2hpbGRGcmFtZUNvbnRlbnQsIEV4Y2VwdGlvbkNvZGUm
KSBjb25zdDsKIAogICAgIHZvaWQgZW1pdEluc3BlY3RvckRpZEJlZ2luRnJhbWUoKTsKICAgICB2
b2lkIGVtaXRJbnNwZWN0b3JEaWRDYW5jZWxGcmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaWRsCmluZGV4IGM2MjUxN2E2ZThmMDUxYTFiNTBkYjlhZjgwMzRiOWFmNTkxMzNmMzgu
LjAxYzRmYWM5ODUwMzliNThlMjk2ZTZiYWQwYTY3Y2MzZTk5MjEyYWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTE0OCw3ICsxNDgsNyBAQAogCiAgICAgTm9kZUxpc3Qg
bm9kZXNGcm9tUmVjdChpbiBEb2N1bWVudCBkb2N1bWVudCwgaW4gbG9uZyB4LCBpbiBsb25nIHks
CiAgICAgICAgIGluIHVuc2lnbmVkIGxvbmcgdG9wUGFkZGluZywgaW4gdW5zaWduZWQgbG9uZyBy
aWdodFBhZGRpbmcsIGluIHVuc2lnbmVkIGxvbmcgYm90dG9tUGFkZGluZywgaW4gdW5zaWduZWQg
bG9uZyBsZWZ0UGFkZGluZywKLSAgICAgICAgaW4gYm9vbGVhbiBpZ25vcmVDbGlwcGluZywgaW4g
Ym9vbGVhbiBhbGxvd1NoYWRvd0NvbnRlbnQpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKyAgICAg
ICAgaW4gYm9vbGVhbiBpZ25vcmVDbGlwcGluZywgaW4gYm9vbGVhbiBhbGxvd1NoYWRvd0NvbnRl
bnQsIGluIGJvb2xlYW4gYWxsb3dDaGlsZEZyYW1lQ29udGVudCkgcmFpc2VzIChET01FeGNlcHRp
b24pOwogCiAgICAgdm9pZCBlbWl0SW5zcGVjdG9yRGlkQmVnaW5GcmFtZSgpOwogICAgIHZvaWQg
ZW1pdEluc3BlY3RvckRpZENhbmNlbEZyYW1lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdC5kZWYuaW4gYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJL
aXQudmNwcm9qL1dlYktpdC5kZWYuaW4KaW5kZXggNmM4MDVmY2MxYjE2ZWE5MGNlMmE5MjhjMzM2
MGIyYzZlZWYzZTBiMS4uNTllZTQwNTNlODY1OGIxN2YxNWI5ZDU5MTFlZTBiNzc0YjQ1ZmE4MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXQuZGVmLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0LmRlZi5pbgpAQCAt
MzA2LDcgKzMwNiw3IEBAIEVYUE9SVFMKICAgICAgICAgPz8xQ29udGV4dERlc3RydWN0aW9uT2Jz
ZXJ2ZXJAV2ViQ29yZUBATUFFQFhaCiAgICAgICAgID9jb250ZXh0RGVzdHJveWVkQENvbnRleHRE
ZXN0cnVjdGlvbk9ic2VydmVyQFdlYkNvcmVAQFVBRVhYWgogICAgICAgICA/PzBDb250ZXh0RGVz
dHJ1Y3Rpb25PYnNlcnZlckBXZWJDb3JlQEBRQUVAUEFWU2NyaXB0RXhlY3V0aW9uQ29udGV4dEAx
QEBaCi0gICAgICAgID9ub2Rlc0Zyb21SZWN0QERvY3VtZW50QFdlYkNvcmVAQFFCRT9BVj8kUGFz
c1JlZlB0ckBWTm9kZUxpc3RAV2ViQ29yZUBAQFdURkBASEhJSUlJX04wQFoKKyAgICAgICAgP25v
ZGVzRnJvbVJlY3RARG9jdW1lbnRAV2ViQ29yZUBAUUJFP0FWPyRQYXNzUmVmUHRyQFZOb2RlTGlz
dEBXZWJDb3JlQEBAV1RGQEBISElJSUlfTjAwQFoKICAgICAgICAgP3NlbGVjdGlvblN0YXJ0SGFz
TWFya2VyRm9yQEVkaXRvckBXZWJDb3JlQEBRQkVfTlc0TWFya2VyVHlwZUBEb2N1bWVudE1hcmtl
ckAyQEhIQFoKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgICAgID93ZWJraXRXaWxs
RW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudEBEb2N1bWVudEBXZWJDb3JlQEBRQUVYUEFWRWxlbWVu
dEAyQEBaCmRpZmYgLS1naXQgYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyIGIvU291
cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgppbmRleCBhOTE0NzAyOGIxYWMwYjk1NTQ4ODgw
OTdhYWNkY2QxNTAxZDFhZGRjLi5lZmUzYzljZWEzOGI4NTUwODYzN2U4OTg2YmU2NzFiMjU3ZGFj
YzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCisrKyBiL1Nv
dXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKQEAgLTE5Niw3ICsxOTYsNyBAQCBfWk43V2Vi
Q29yZTIyUnVudGltZUVuYWJsZWRGZWF0dXJlczQwaXNMYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29u
dHJvbFVJRW5hYmxlZEU7CiBfWk43V2ViQ29yZTIyUnVudGltZUVuYWJsZWRGZWF0dXJlczIyaXNE
aWFsb2dFbGVtZW50RW5hYmxlZEU7CiBfWk43V2ViQ29yZTIyUnVudGltZUVuYWJsZWRGZWF0dXJl
czM3aXNBdXRob3JTaGFkb3dET01Gb3JBbnlFbGVtZW50RW5hYmxlZEU7CiBfWk43V2ViQ29yZTIy
UnVudGltZUVuYWJsZWRGZWF0dXJlczIwaXNTdHlsZVNjb3BlZEVuYWJsZWRFOwotX1pOSzdXZWJD
b3JlOERvY3VtZW50MTNub2Rlc0Zyb21SZWN0RWlpampqamJiOworX1pOSzdXZWJDb3JlOERvY3Vt
ZW50MTNub2Rlc0Zyb21SZWN0RWlpampqamJiYjsKIF9aTjdXZWJDb3JlNHRvSlNFUE4zSlNDOUV4
ZWNTdGF0ZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTlNfOE5vZGVMaXN0RTsKIF9aTks3V2Vi
Q29yZTZFZGl0b3IyNnNlbGVjdGlvblN0YXJ0SGFzTWFya2VyRm9yRU5TXzE0RG9jdW1lbnRNYXJr
ZXIxME1hcmtlclR5cGVFaWk7CiBfWk43V2ViQ29yZThEb2N1bWVudDMzd2Via2l0RGlkRXhpdEZ1
bGxTY3JlZW5Gb3JFbGVtZW50RVBOU183RWxlbWVudEU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggY2U2ZmYyZjRiNDA3YzI4
YmUyYWEwMjZjNjZkMzk2MDQwODY1Mjc5YS4uN2RiNDA0YmUwMTJkY2ZjZTgwM2Y4NjRiMzE5ZWM4
ZDI0MzZiYTFmZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEzLTAxLTA5ICBBbGxhbiBTYW5k
ZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIEFsbG93IGNo
aWxkLWZyYW1lIGNvbnRlbnQgaW4gaGl0LXRlc3RzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUyMDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBIG5ldyB0ZXN0cyBmb3Igbm9kZXNGcm9tUmVjdCB0aGF0
IHJldHVybnMgcmVzdWx0IGZyb20gY2hpbGQgZnJhbWVzLgorCisgICAgICAgICogZmFzdC9kb20v
bm9kZXNGcm9tUmVjdC9ub2Rlc0Zyb21SZWN0LWNoaWxkLWZyYW1lLWNvbnRlbnQtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ub2Rlc0Zyb21SZWN0L25vZGVzRnJvbVJl
Y3QtY2hpbGQtZnJhbWUtY29udGVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9u
b2Rlc0Zyb21SZWN0L25vZGVzRnJvbVJlY3QtY29udGludWF0aW9uLWNyYXNoLmh0bWw6CisgICAg
ICAgICogZmFzdC9kb20vbm9kZXNGcm9tUmVjdC9yZXNvdXJjZXMvY2hpbGQtZnJhbWUuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9kb20vbm9kZXNGcm9tUmVjdC9yZXNvdXJjZXMvbm9kZXNG
cm9tUmVjdC5qczoKKyAgICAgICAgKGNoZWNrKToKKyAgICAgICAgKGNoZWNrU2hhZG93Q29udGVu
dCk6CisgICAgICAgIChub2Rlc0Zyb21SZWN0QXNTdHJpbmcpOgorCiAyMDEzLTAxLTA5ICBLdW5p
aGlrbyBTYWthbW90byAgPGtzYWthbW90b0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSU5QVVRf
TVVMVElQTEVfRklFTERTX1VJOiBtaW4vbWF4IGF0dHJpYnV0ZXMgc2hvdWxkIG5vdCBtYWtlIGFs
bCBmaWVsZHMgcmVhZC1vbmx5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2Rl
c0Zyb21SZWN0L25vZGVzRnJvbVJlY3QtY2hpbGQtZnJhbWUtY29udGVudC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2Rlc0Zyb21SZWN0L25vZGVzRnJvbVJlY3QtY2hpbGQt
ZnJhbWUtY29udGVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWMxYzk3MDBjMjU5YmQyMjQ5
MDAzYTNlODAzNTQ3ZTEyNGRjZmZmZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL25vZGVzRnJvbVJlY3Qvbm9kZXNGcm9tUmVjdC1jaGlsZC1mcmFtZS1jb250ZW50LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDE4IEBACisKK0RvY3VtZW50Ojpub2Rlc0Zyb21SZWN0IDog
QWxsb3cgY2hpbGQtZnJhbWUgY29udGVudCAtIGJ1ZyA5NTIwNAorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworUEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdAorUEFT
UyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdAorUEFTUyBBbGwgY29ycmVjdCBub2Rl
cyBmb3VuZCBmb3IgcmVjdAorUEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdAor
UEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdAorUEFTUyBBbGwgY29ycmVjdCBu
b2RlcyBmb3VuZCBmb3IgcmVjdAorUEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVj
dAorUEFTUyBBbGwgY29ycmVjdCBub2RlcyBmb3VuZCBmb3IgcmVjdAorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3Qvbm9kZXNGcm9tUmVjdC1jaGlsZC1mcmFtZS1jb250
ZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2Rlc0Zyb21SZWN0L25vZGVzRnJvbVJl
Y3QtY2hpbGQtZnJhbWUtY29udGVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFkYjQxNjdiMTc4MDJkY2Vi
OWUzODZjNTRlMzFlNTQ2ODVjNTFlOTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9ub2Rlc0Zyb21SZWN0L25vZGVzRnJvbVJlY3QtY2hpbGQtZnJhbWUtY29udGVudC5o
dG1sCkBAIC0wLDAgKzEsNzcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAg
ICA8dGl0bGU+RG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QgOiBBbGxvdyBjaGlsZC1mcmFtZSBjb250
ZW50IC0gYnVnIDk1MjA0PC90aXRsZT4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L25vZGVzRnJvbVJlY3QuanMiPjwvc2NyaXB0PgorICAgIDxzdHlsZT4KKyAgICAgICAgYm9keSB7
IG1hcmdpbjogMHB4OyB9CisgICAgICAgICNzYW5kYm94IHsKKyAgICAgICAgICAgIHdpZHRoOiA0
MDBweDsKKyAgICAgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgICAgIH0KKyAgICAgICAgI3Nh
bmRib3ggI2xheWVyIHsKKyAgICAgICAgICAgIGZsb2F0OiByaWdodDsKKyAgICAgICAgfQorICAg
ICAgICAjc2FuZGJveCBpZnJhbWUgeworICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7CisgICAg
ICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OworICAgICAgICAgICAgd2lkdGg6IDIwMHB4
OworICAgICAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICAgICAgICAgIGJvcmRlcjogbm9uZTsK
KyAgICAgICAgfQorICAgICAgICAucm90YXRlMTgwIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0
ZSgxODBkZWcpOyB9CisgICAgICAgIC5yb3RhdGU5MCB7IC13ZWJraXQtdHJhbnNmb3JtOiByb3Rh
dGUoOTBkZWcpOyB9CisgICAgICAgICNzYW5kYm94IC5ib3ggeworICAgICAgICAgICAgYm94LXNp
emluZzogYm9yZGVyLWJveDsKKyAgICAgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgICAg
ICB3aWR0aDogMjAwcHg7CisgICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKKyAg
ICAgICAgfQorICAgIDwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keSBpZD0iYm9keSI+CisgICAgPGRp
diBpZD1zYW5kYm94PgorICAgICAgICA8ZGl2IGlkPWxheWVyPgorICAgICAgICAgICAgPGlmcmFt
ZSBpZD0iaWZyYW1lMSIgc3JjPSJyZXNvdXJjZXMvY2hpbGQtZnJhbWUuaHRtbCI+PC9pZnJhbWU+
CisgICAgICAgIDwvZGl2PgorICAgICAgICA8ZGl2IGlkPWRpdjEgY2xhc3M9Ym94PjwvZGl2Pgor
ICAgICAgICA8ZGl2IGlkPWRpdjIgY2xhc3M9Ym94PjwvZGl2PgorICAgIDwvZGl2PgorCisgICAg
PHAgaWQ9J2Rlc2NyaXB0aW9uJz48L3A+CisgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cisg
ICAgPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Ij4KKyAgICAgICAgZnVuY3Rp
b24gcnVuVGVzdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uKGRvY3VtZW50
LnRpdGxlKTsKKworICAgICAgICAgICAgLy8gU2V0IHVwIHNob3J0Y3V0IGFjY2VzcyB0byBlbGVt
ZW50cworICAgICAgICAgICAgdmFyIGUgPSB7fTsKKyAgICAgICAgICAgIFsnc2FuZGJveCcsICds
YXllciddLmZvckVhY2goZnVuY3Rpb24oYSkgeworICAgICAgICAgICAgICAgIGVbYV0gPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZChhKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBj
aGVja1JlY3QoMjUsIDI1LCAxMDAsIDEwMCwgIkRJViNkaXYyLCBESVYjZGl2MSwgRElWI3NhbmRi
b3giKTsKKyAgICAgICAgICAgIGNoZWNrUmVjdCgyMjAsIDIwLCA3MCwgNzAsICJESVYjbGVmdCIp
OworICAgICAgICAgICAgY2hlY2tSZWN0KDI1MCwgMjAsIDEwMCwgNzAsICJESVYjcmlnaHQsIERJ
ViNsZWZ0LCBIVE1MIik7CisKKyAgICAgICAgICAgIGNoZWNrUmVjdCgxNTAsIDUwLCAxMDAsIDEw
MCwgIkRJViNsZWZ0LCBIVE1MLCAjZG9jdW1lbnQsIElGUkFNRSNpZnJhbWUxLCBESVYjbGF5ZXIs
IERJViNkaXYyLCBESVYjZGl2MSwgRElWI3NhbmRib3giKTsKKworICAgICAgICAgICAgZS5sYXll
ci5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgJ3JvdGF0ZTE4MCcpOworICAgICAgICAgICAgY2hlY2tS
ZWN0KDIyMCwgMjAsIDcwLCA3MCwgIkRJViNyaWdodCIpOworICAgICAgICAgICAgY2hlY2tSZWN0
KDE1MCwgNTAsIDEwMCwgMTAwLCAiRElWI3JpZ2h0LCBIVE1MLCAjZG9jdW1lbnQsIElGUkFNRSNp
ZnJhbWUxLCBESVYjbGF5ZXIsIERJViNkaXYyLCBESVYjZGl2MSwgRElWI3NhbmRib3giKTsKKwor
ICAgICAgICAgICAgZS5sYXllci5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgJ3JvdGF0ZTkwJyk7Cisg
ICAgICAgICAgICBjaGVja1JlY3QoMjUwLCAyMCwgMTAwLCA3MCwgIkRJViNsZWZ0Iik7CisgICAg
ICAgICAgICBjaGVja1JlY3QoMTUwLCAyMCwgMjAwLCA2MCwgIkRJViNsZWZ0LCBIVE1MLCAjZG9j
dW1lbnQsIElGUkFNRSNpZnJhbWUxLCBESVYjbGF5ZXIsIERJViNkaXYxLCBESVYjc2FuZGJveCIp
OworCisgICAgICAgICAgICBlLnNhbmRib3guZGlzcGxheSA9ICdub25lJzsKKyAgICAgICAgICAg
IGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisgICAgICAgIGpzVGVzdElzQXN5bmMgPSB0cnVl
OworICAgICAgICB3aW5kb3cub25sb2FkID0gcnVuVGVzdDsKKyAgICA8L3NjcmlwdD4KKyAgICA8
c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2Rl
c0Zyb21SZWN0L25vZGVzRnJvbVJlY3QtY29udGludWF0aW9uLWNyYXNoLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9ub2Rlc0Zyb21SZWN0L25vZGVzRnJvbVJlY3QtY29udGludWF0aW9uLWNy
YXNoLmh0bWwKaW5kZXggYWZmYTVlNTExZWM3N2ZkNDAwMmNiZjE2OTk5NGYyZDA1ZGM1NDY4YS4u
YzE2Y2Q4MmExOWNhZmFlNTU1ZGJkYjZjMmU5MWEzN2FkM2JiMjY4YyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9tUmVjdC9ub2Rlc0Zyb21SZWN0LWNvbnRpbnVhdGlv
bi1jcmFzaC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3Qvbm9k
ZXNGcm9tUmVjdC1jb250aW51YXRpb24tY3Jhc2guaHRtbApAQCAtNyw3ICs3LDcgQEAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQogd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgewogICAgIGlmICgh
d2luZG93LmludGVybmFscykKICAgICAgICAgYWxlcnQoIlRoaXMgdGVzdCByZXF1aXJlcyB3aW5k
b3cuaW50ZXJuYWxzIik7Ci0gICAgdmFyIG5vZGVzID0gaW50ZXJuYWxzLm5vZGVzRnJvbVJlY3Qo
ZG9jdW1lbnQsIDEwMCwgMTAwLCAyMCwgMjAsIDIwLCAyMCwgZmFsc2UsIGZhbHNlKTsKKyAgICB2
YXIgbm9kZXMgPSBpbnRlcm5hbHMubm9kZXNGcm9tUmVjdChkb2N1bWVudCwgMTAwLCAxMDAsIDIw
LCAyMCwgMjAsIDIwLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKICAgICBhbGVydCgiUEFTUzogVGhp
cyB0ZXN0IGRpZCBub3QgdHJpZ2dlciBhbiBBU1NFUlQiKTsKIH07CiA8L3NjcmlwdD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3QvcmVzb3VyY2VzL2NoaWxk
LWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2Rlc0Zyb21SZWN0L3Jlc291cmNl
cy9jaGlsZC1mcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIwNGQ3ZmFhZGJiOTg2NjdiZmVjNGE0NzI3
YzhkYTI4NzM2MzNlNjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9u
b2Rlc0Zyb21SZWN0L3Jlc291cmNlcy9jaGlsZC1mcmFtZS5odG1sCkBAIC0wLDAgKzEsMjcgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+
CisgICAgYm9keSB7IG1hcmdpbjogMHB4OyB9CisgICAgZGl2IHsgCisgICAgICAgIGJveC1zaXpp
bmc6IGJvcmRlci1ib3g7CisgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOworICAgIH0K
KyAgICAjbGVmdCB7CisgICAgICAgIGZsb2F0OmxlZnQ7CisgICAgICAgIHdpZHRoOiA5MHB4Owor
ICAgICAgICBoZWlnaHQ6IDE5MHB4OworICAgIH0KKyAgICAjcmlnaHQgeworICAgICAgICBmbG9h
dDpyaWdodDsKKyAgICAgICAgd2lkdGg6IDkwcHg7CisgICAgICAgIGhlaWdodDogMTkwcHg7Cisg
ICAgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxkaXYgaWQ9bGVmdD48L2Rpdj4K
KyAgICA8ZGl2IGlkPXJpZ2h0PjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2Rlc0Zyb21SZWN0L3Jlc291cmNlcy9ub2Rlc0Zyb21S
ZWN0LmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9tUmVjdC9yZXNvdXJjZXMvbm9k
ZXNGcm9tUmVjdC5qcwppbmRleCBkMDJjMWM3ZGI0OWU2ODNlODAzNTA3NmQ4MjQwMTI3NTE1Zjdh
YjA0Li5hNzI4N2M4YjQ5N2RiNGIxODBjNjU3NmI1MWQ5YzhiOTU4Zjk1MjM0IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2Rlc0Zyb21SZWN0L3Jlc291cmNlcy9ub2Rlc0Zyb21S
ZWN0LmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3QvcmVzb3VyY2Vz
L25vZGVzRnJvbVJlY3QuanMKQEAgLTEsNyArMSw4IEBACiAvKgogICogQ29udHJpYnV0b3JzOgog
ICogICAgICogQW50b25pbyBHb21lcyA8dG9uaWtpdG9vQHdlYmtpdC5vcmc+Ci0gKiovCisgKiAg
ICAgKiBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CisqKi8K
IAogZnVuY3Rpb24gY2hlY2soeCwgeSwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21Q
YWRkaW5nLCBsZWZ0UGFkZGluZywgbGlzdCwgZG9jKQogewpAQCAtMTEsNyArMTIsNyBAQCBmdW5j
dGlvbiBjaGVjayh4LCB5LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcs
IGxlZnRQYWRkaW5nLCBsaXN0LAogICBpZiAoIWRvYykKICAgICBkb2MgPSBkb2N1bWVudDsKIAot
ICB2YXIgbm9kZXMgPSBpbnRlcm5hbHMubm9kZXNGcm9tUmVjdChkb2MsIHgsIHksIHRvcFBhZGRp
bmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcsIHRydWUgLyogaWdu
b3JlQ2xpcHBpbmcgKi8sIGZhbHNlIC8qIGFsbG93IHNoYWRvdyBjb250ZW50ICovKTsKKyAgdmFy
IG5vZGVzID0gaW50ZXJuYWxzLm5vZGVzRnJvbVJlY3QoZG9jLCB4LCB5LCB0b3BQYWRkaW5nLCBy
aWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nLCB0cnVlIC8qIGlnbm9yZUNs
aXBwaW5nICovLCBmYWxzZSAvKiBhbGxvdyBzaGFkb3cgY29udGVudCAqLywgZmFsc2UgLyogYWxs
b3cgY2hpbGQtZnJhbWUgY29udGVudCAqLyk7CiAgIGlmICghbm9kZXMpCiAgICAgcmV0dXJuOwog
CkBAIC00NSw3ICs0Niw3IEBAIGZ1bmN0aW9uIGNoZWNrU2hhZG93Q29udGVudCh4LCB5LCB0b3BQ
YWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQCiAgIGlmICghZG9jKQog
ICAgIGRvYyA9IGRvY3VtZW50OwogCi0gIHZhciBub2RlcyA9IGludGVybmFscy5ub2Rlc0Zyb21S
ZWN0KGRvYywgeCwgeSwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBs
ZWZ0UGFkZGluZywgdHJ1ZSAvKiBpZ25vcmVDbGlwcGluZyAqLywgdHJ1ZSAvKiBhbGxvd1NoYWRv
d0NvbnRlbnQgKi8pOworICB2YXIgbm9kZXMgPSBpbnRlcm5hbHMubm9kZXNGcm9tUmVjdChkb2Ms
IHgsIHksIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRp
bmcsIHRydWUgLyogaWdub3JlQ2xpcHBpbmcgKi8sIHRydWUgLyogYWxsb3dTaGFkb3dDb250ZW50
ICovLCBmYWxzZSAvKiBhbGxvdyBjaGlsZC1mcmFtZSBjb250ZW50ICovKTsKICAgaWYgKCFub2Rl
cykKICAgICByZXR1cm47CiAKQEAgLTk2LDcgKzk3LDcgQEAgZnVuY3Rpb24gY2hlY2tSZWN0KGxl
ZnQsIHRvcCwgd2lkdGgsIGhlaWdodCwgZXhwZWN0ZWROb2RlU3RyaW5nLCBkb2MpCiBmdW5jdGlv
biBub2Rlc0Zyb21SZWN0QXNTdHJpbmcoZG9jLCB4LCB5LCB0b3BQYWRkaW5nLCByaWdodFBhZGRp
bmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nKQogewogICAgIHZhciBub2RlU3RyaW5nID0g
IiI7Ci0gICAgdmFyIG5vZGVzID0gaW50ZXJuYWxzLm5vZGVzRnJvbVJlY3QoZG9jLCB4LCB5LCB0
b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nLCB0cnVl
IC8qIGlnbm9yZUNsaXBwaW5nICovLCBmYWxzZSAvKiBhbGxvdyBzaGFkb3cgY29udGVudCAqLyk7
CisgICAgdmFyIG5vZGVzID0gaW50ZXJuYWxzLm5vZGVzRnJvbVJlY3QoZG9jLCB4LCB5LCB0b3BQ
YWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nLCB0cnVlIC8q
IGlnbm9yZUNsaXBwaW5nICovLCBmYWxzZSAvKiBhbGxvdyBzaGFkb3cgY29udGVudCAqLywgdHJ1
ZSAvKiBhbGxvdyBjaGlsZC1mcmFtZSBjb250ZW50ICovKTsKICAgICBpZiAoIW5vZGVzKQogICAg
ICAgICByZXR1cm4gbm9kZVN0cmluZzsKIApAQCAtMTEwLDYgKzExMSw4IEBAIGZ1bmN0aW9uIG5v
ZGVzRnJvbVJlY3RBc1N0cmluZyhkb2MsIHgsIHksIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywg
Ym90dG9tUGFkZGluCiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAobm9kZXNbaV0u
bm9kZVR5cGUgPT0gMykgewogICAgICAgICAgICAgbm9kZVN0cmluZyArPSAiJyIgKyBub2Rlc1tp
XS5kYXRhICsgIiciOworICAgICAgICB9IGVsc2UgaWYgKG5vZGVzW2ldLm5vZGVUeXBlID09IDkp
IHsKKyAgICAgICAgICAgIG5vZGVTdHJpbmcgKz0gIiNkb2N1bWVudCI7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQpAQCAtMTIwLDcgKzEyMyw2IEBA
IGZ1bmN0aW9uIG5vZGVzRnJvbVJlY3RBc1N0cmluZyhkb2MsIHgsIHksIHRvcFBhZGRpbmcsIHJp
Z2h0UGFkZGluZywgYm90dG9tUGFkZGluCiAgICAgcmV0dXJuIG5vZGVTdHJpbmc7CiB9CiAKLQog
ZnVuY3Rpb24gZ2V0Q2VudGVyRm9yKGVsZW1lbnQpCiB7CiAgIHZhciByZWN0ID0gZWxlbWVudC5n
ZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxv
ZwppbmRleCAwMThjYzAxYmEwMjI1ZDMyZTJmOTRiOTZhNzU0OThkNTY1ZGUzMDdjLi5hMWJmMWM4
NTQxMWM3OTIxOTYzZDAyOWJlMjUxYjRiNTI5MzQzYTI3IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cK
KysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTMtMDEtMDkgIEFsbGFuIFNhbmRm
ZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CisKKyAgICAgICAgQWxsb3cgY2hp
bGQtZnJhbWUgY29udGVudCBpbiBoaXQtdGVzdHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTIwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBleHBvcnRlZCBzeW1ib2xzLgorCisgICAgICAg
ICogU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcjoKKwogMjAxMy0wMS0wOCAgWmFuIERv
YmVyc2VrICA8emFuZG9iZXJzZWtAZ21haWwuY29tPgogCiAgICAgICAgIEFkZCBhbiBBdXRvY29u
ZiBtYWNybyB0aGF0IGNoZWNrcyB3aGV0aGVyIGEgZ2l2ZW4gZmVhdHVyZSBpcyBlbmFibGVkCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182320</attachid>
            <date>2013-01-11 04:32:31 -0800</date>
            <delta_ts>2013-02-15 03:36:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95204-20130111132858.patch</filename>
            <type>text/plain</type>
            <size>39250</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5NDI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzU3ZDA4N2VmYTNmYjRm
YzQ5NWRkN2FhYTM5NTUyYmJhYmViMDE0NC4uMzAzZjhlMjk0ZTQyOGE2NmFmMWRkYWYxMTAxNTlj
ZjI0NDVhNzlmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDEzLTAxLTA5ICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIEFs
bG93IGNoaWxkLWZyYW1lIGNvbnRlbnQgaW4gaGl0LXRlc3RzLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUyMDQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvcnMgaG93IEV2ZW50SGFuZGxlcjo6
aGl0VGVzdFJlc3VsdEF0UG9pbnQgaGFuZGxlcyBjaGlsZC1mcmFtZSBjb250ZW50LAorICAgICAg
ICBpdCBpcyBub3cgaGFuZGxlZCBieSB0aGUgaGl0IHRlc3QgaXRzZWxmIGNvbnRyb2xsZWQgYnkg
dGhlIEFsbG93Q2hpbGRGcmFtZUNvbnRlbnQKKyAgICAgICAgZmxhZyBpbiBIaXRUZXN0UmVxdWVz
dC4KKworICAgICAgICBUaGlzIG1lYW5zIHRoYXQgYXJlYS1iYXNlZCBoaXQtdGVzdHMgY2FuIG5v
dyByZXR1cm4gZWxlbWVudHMgZnJvbSBhbGwgdGhlIGNoaWxkIGZyYW1lcworICAgICAgICB0aGV5
IGludGVyc2VjdCBpbnN0ZWFkIG9mIGp1c3QgdGhlIG9uZSBmcmFtZSBjb250YWluaW5nIHRoZSBj
ZW50ZXIgcG9pbnQuIFRoZSBpbXByb3ZlZAorICAgICAgICByZXN1bHRzIGZyb20gYXJlYS1iYXNl
ZCBoaXQtdGVzdHMgd2lsbCBhbW9uZyBvdGhlciB0aGluZ3MgYWxzbyBpbXByb3ZlIHRvdWNoIGFk
anVzdG1lbnQKKyAgICAgICAgbmVhciBmcmFtZSBib3VuZGFyaWVzLgorCisgICAgICAgIFRlc3Rz
OiBmYXN0L2RvbS9ub2Rlc0Zyb21SZWN0L25vZGVzRnJvbVJlY3QtY2hpbGQtZnJhbWUtY29udGVu
dC5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLm9y
ZGVyOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6bm9kZXNGcm9tUmVjdCk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAg
IChEb2N1bWVudCk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoaXRUZXN0UmVzdWx0QXRQb2ludCk6CisgICAgICAgICog
cGFnZS9Ub3VjaEFkanVzdG1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VG91Y2hBZGp1c3Rt
ZW50OjpwYXJlbnRIb3N0T3JPd25lcik6CisgICAgICAgIChUb3VjaEFkanVzdG1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6VG91Y2hBZGp1c3RtZW50Ojpjb21waWxlU3VidGFyZ2V0TGlzdCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXF1ZXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpI
aXRUZXN0UmVxdWVzdDo6YWxsb3dzQ2hpbGRGcmFtZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SGl0VGVzdFJlcXVlc3Q6OmlzQ2hpbGRGcmFtZUhpdFRlc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SGl0VGVzdFJlcXVlc3Q6OnNob3VsZFRlc3RDaGlsZEZyYW1lU2Nyb2xsQmFycyk6CisgICAg
ICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGl0
VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVz
dWx0OjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6YXBwZW5k
KToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OmRpY3RhdGlvbkFsdGVybmF0aXZl
cyk6CisgICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkhpdFRlc3RSZXN1bHQ6OnBvaW50SW5NYWluRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6
SGl0VGVzdFJlc3VsdDo6cG9pbnRJbklubmVyTm9kZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OkhpdFRlc3RSZXN1bHQ6OnNldFBvaW50SW5Jbm5lck5vZGVGcmFtZSk6CisgICAgICAgIChIaXRU
ZXN0UmVzdWx0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYW1lQmFzZTo6bm9kZUF0UG9pbnQpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuaDoKKyAgICAgICAgKFJlbmRlckZyYW1lQmFzZSk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyOjpoaXRUZXN0KToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Om5vZGVzRnJvbVJlY3QpOgorICAgICAgICAq
IHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgIChJbnRlcm5hbHMpOgorICAgICAgICAqIHRl
c3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxMy0wMS0xMSAgQWxleGFuZGVyIFBhdmxvdiAgPGFw
YXZsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtFbGVtZW50c10g
U2VhcmNoIGluIHRoZSBET00gdHJlZSBkb2VzIG5vdCBzY3JvbGwgaG9yaXpvbnRhbGx5CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9D
aGFuZ2VMb2cKaW5kZXggNmI1MzkxNmRlY2U4OGY5Zjc0NGEwODQwMzcwYzQ0NjM4ZDkyM2Q3MS4u
ZDVhMDgyZjg4YzYwZDgxZmIzN2JmNWVkOGRlMmIwY2ZhNWI3OWRhYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE0IEBACisyMDEzLTAxLTA5ICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxh
bGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIEFsbG93IGNoaWxkLWZyYW1lIGNvbnRl
bnQgaW4gaGl0LXRlc3RzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTUyMDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVcGRhdGUgZXhwb3J0ZWQgc3ltYm9scy4KKworICAgICAgICAqIFdlYktpdC52Y3By
b2ovV2ViS2l0LmRlZi5pbjoKKwogMjAxMy0wMS0wOSAgSGFqaW1lIE1vcnJpdGEgIDxtb3JyaXRh
QGdvb2dsZS5jb20+CiAKICAgICAgICAgW1NoYWRvdyBET01dIERpc3RyaWJ1dGlvbiByZWxhdGVk
IGNvZGUgb24gRWxlbWVudFNoYWRvdyBzaG91bGQgYmUgbWluaW1pemVkLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgppbmRleCA3OTdhN2YxYWE4MDZjOGVhOGFmZDUxNzc5NDAwYTk3MWNkOWMzNGIxLi44ZmM0
ODVjNDNkMjY5ZGZjZDZkY2NhMDU0NTEyNDk4YWIzOTA4NDFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
bgpAQCAtMTQ1Myw3ICsxNDUzLDcgQEAgX19aTks3V2ViQ29yZTdJbnRSZWN0Y3Y2Q0dSZWN0RXYK
IF9fWk5LN1dlYkNvcmU3UnVuTG9vcDlUaW1lckJhc2U4aXNBY3RpdmVFdgogX19aTks3V2ViQ29y
ZThEb2N1bWVudDExY29tcGxldGVVUkxFUktOM1dURjZTdHJpbmdFCiBfX1pOSzdXZWJDb3JlOERv
Y3VtZW50MTNheE9iamVjdENhY2hlRXYKLV9fWk5LN1dlYkNvcmU4RG9jdW1lbnQxM25vZGVzRnJv
bVJlY3RFaWlqampqYmIKK19fWk5LN1dlYkNvcmU4RG9jdW1lbnQxM25vZGVzRnJvbVJlY3RFaWlq
ampqYmJiCiBfX1pOSzdXZWJDb3JlOERvY3VtZW50MTRnZXRFbGVtZW50QnlJZEVSS04zV1RGMTJB
dG9taWNTdHJpbmdFCiBfX1pOSzdXZWJDb3JlOERvY3VtZW50MzFkaXNwbGF5U3RyaW5nTW9kaWZp
ZWRCeUVuY29kaW5nRVJLTjNXVEY2U3RyaW5nRQogX19aTks3V2ViQ29yZThEb2N1bWVudDRib2R5
RXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLm9yZGVyCmluZGV4IDlhMTIxMGYzNDE5M2YzMGI5NjI2ZThmMmFhZWFlYWNk
NWY0OTY0YjQuLjFhOTIzOGVkZGRjMTI5YWNlMDU1Y2E3NjM1OTBmNmI5YTk3ZmZjZDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5vcmRlcgpAQCAtMjI3NDgsNyArMjI3NDgsNyBAQCBfX1pOSzdXZWJDb3JlMTJOb2Rl
SXRlcmF0b3IyMHVwZGF0ZUZvck5vZGVSZW1vdmFsRVBOU180Tm9kZUVSTlMwXzExTm9kZVBvaW50
ZXJFCiBfX1pON1dlYkNvcmUyN2pzTm9kZUl0ZXJhdG9yUmVmZXJlbmNlTm9kZUVQTjNKU0M5RXhl
Y1N0YXRlRU5TMF83SlNWYWx1ZUVSS05TMF8xMElkZW50aWZpZXJFCiBfX1pOSzdXZWJDb3JlNE5v
ZGUyMHRyYXZlcnNlUHJldmlvdXNOb2RlRVBLUzBfCiBfX1pON1dlYkNvcmUzN2pzTm9kZUl0ZXJh
dG9yUHJvdG90eXBlRnVuY3Rpb25EZXRhY2hFUE4zSlNDOUV4ZWNTdGF0ZUUKLV9fWk5LN1dlYkNv
cmU4RG9jdW1lbnQxM25vZGVzRnJvbVJlY3RFaWlqampqYgorX19aTks3V2ViQ29yZThEb2N1bWVu
dDEzbm9kZXNGcm9tUmVjdEVpaWpqampiYmIKIF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQxN2hhbmRs
ZVplcm9QYWRkaW5nRVJLTlNfMTRIaXRUZXN0UmVxdWVzdEVSTlNfMTNIaXRUZXN0UmVzdWx0RQog
X19aTjNXVEYyMUxpc3RIYXNoU2V0VHJhbnNsYXRvcklOU182UmVmUHRySU43V2ViQ29yZTROb2Rl
RUVFTG0yNTZFTlNfN1B0ckhhc2hJUzRfRUVFOXRyYW5zbGF0ZUVSUE5TXzE1TGlzdEhhc2hTZXRO
b2RlSVM0X0xtMjU2RUVFUktTNF9QTlNfMjRMaXN0SGFzaFNldE5vZGVBbGxvY2F0b3JJUzRfTG0y
NTZFRUUKIF9fWk43V2ViQ29yZTIxU3RhdGljSGFzaFNldE5vZGVMaXN0QzFFUk4zV1RGMTFMaXN0
SGFzaFNldElOUzFfNlJlZlB0cklOU180Tm9kZUVFRUxtMjU2RU5TMV83UHRySGFzaElTNV9FRUVF
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBiN2NmYTMxNzg4ODA1M2E3OGVlYzA1MWVhMGQ5
YmY3MDI0MjM1Mjk0Li5hY2ViNzg5Yjc5NzZiNTc3NDBkZDk5ZDMzYzQ4ZDg3Y2RiMmViNTZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTEzNzksNyArMTM3OSw3IEBAIFN0cmluZyBEb2N1
bWVudDo6c3VnZ2VzdGVkTUlNRVR5cGUoKSBjb25zdAogLy8gKiBtYWtpbmcgaXQgcmVjZWl2ZSBh
IHJlY3QgYXMgcGFyYW1ldGVyLCBpLmUuIG5vZGVzRnJvbVJlY3QoeCwgeSwgdywgaCk7CiAvLyAq
IG1ha2luZyBpdCByZWNlaXZlIHRoZSBleHBhZGluZyBzaXplIG9mIGVhY2ggZGlyZWN0aW9uIHNl
cGFyYXRlbHksCiAvLyAgIGkuZS4gbm9kZXNGcm9tUmVjdCh4LCB5LCB0b3BTaXplLCByaWdodFNp
emUsIGJvdHRvbVNpemUsIGxlZnRTaXplKTsKLVBhc3NSZWZQdHI8Tm9kZUxpc3Q+IERvY3VtZW50
Ojpub2Rlc0Zyb21SZWN0KGludCBjZW50ZXJYLCBpbnQgY2VudGVyWSwgdW5zaWduZWQgdG9wUGFk
ZGluZywgdW5zaWduZWQgcmlnaHRQYWRkaW5nLCB1bnNpZ25lZCBib3R0b21QYWRkaW5nLCB1bnNp
Z25lZCBsZWZ0UGFkZGluZywgYm9vbCBpZ25vcmVDbGlwcGluZywgYm9vbCBhbGxvd1NoYWRvd0Nv
bnRlbnQpIGNvbnN0CitQYXNzUmVmUHRyPE5vZGVMaXN0PiBEb2N1bWVudDo6bm9kZXNGcm9tUmVj
dChpbnQgY2VudGVyWCwgaW50IGNlbnRlclksIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVk
IHJpZ2h0UGFkZGluZywgdW5zaWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRp
bmcsIGJvb2wgaWdub3JlQ2xpcHBpbmcsIGJvb2wgYWxsb3dTaGFkb3dDb250ZW50LCBib29sIGFs
bG93Q2hpbGRGcmFtZUNvbnRlbnQpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFNoYXJlIGNvZGUg
YmV0d2VlbiB0aGlzLCBlbGVtZW50RnJvbVBvaW50IGFuZCBjYXJldFJhbmdlRnJvbVBvaW50Lgog
ICAgIGlmICghcmVuZGVyZXIoKSkKQEAgLTE0MDMsNiArMTQwMyw4IEBAIFBhc3NSZWZQdHI8Tm9k
ZUxpc3Q+IERvY3VtZW50Ojpub2Rlc0Zyb21SZWN0KGludCBjZW50ZXJYLCBpbnQgY2VudGVyWSwg
dW5zaWduZWQKICAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKGFsbG93U2hhZG93Q29udGVudCkK
ICAgICAgICAgdHlwZSB8PSBIaXRUZXN0UmVxdWVzdDo6QWxsb3dTaGFkb3dDb250ZW50OworICAg
IGlmIChhbGxvd0NoaWxkRnJhbWVDb250ZW50KQorICAgICAgICB0eXBlIHw9IEhpdFRlc3RSZXF1
ZXN0OjpBbGxvd0NoaWxkRnJhbWVDb250ZW50OwogCiAgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVz
dCh0eXBlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBhOWM1OTg2NjU0ODhiYjQ5MDVmMmIz
NzdmZTYzNmE4YTg3ZWE0MGMwLi4yZTY0ZTE5ODZhYmUzMzU2ZGY3MThjYTBjMjY0NmU3ZjEwMWFi
OTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMzgwLDggKzM4MCw5IEBAIHB1YmxpYzoKICAg
ICAgKiBAcGFyYW0gaWdub3JlQ2xpcHBpbmcgd2hldGhlciBvciBub3QgdG8gaWdub3JlIHRoZSBy
b290IHNjcm9sbCBmcmFtZSB3aGVuIHJldHJpZXZpbmcgdGhlIGVsZW1lbnQuCiAgICAgICogICAg
ICAgIElmIGZhbHNlLCB0aGlzIG1ldGhvZCByZXR1cm5zIG51bGwgZm9yIGNvb3JkaW5hdGVzIG91
dHNpZGUgb2YgdGhlIHZpZXdwb3J0LgogICAgICAqLwotICAgIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+
IG5vZGVzRnJvbVJlY3QoaW50IGNlbnRlclgsIGludCBjZW50ZXJZLCB1bnNpZ25lZCB0b3BQYWRk
aW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBib3R0b21QYWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGluZywg
Ym9vbCBpZ25vcmVDbGlwcGluZywgYm9vbCBhbGxvd1NoYWRvd0NvbnRlbnQpIGNvbnN0OworICAg
IFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IG5vZGVzRnJvbVJlY3QoaW50IGNlbnRlclgsIGludCBjZW50
ZXJZLAorICAgICAgICB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcs
IHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nLAorICAgICAgICBi
b29sIGlnbm9yZUNsaXBwaW5nLCBib29sIGFsbG93U2hhZG93Q29udGVudCwgYm9vbCBhbGxvd0No
aWxkRnJhbWVDb250ZW50ID0gZmFsc2UpIGNvbnN0OwogICAgIEVsZW1lbnQqIGVsZW1lbnRGcm9t
UG9pbnQoaW50IHgsIGludCB5KSBjb25zdDsKICAgICBQYXNzUmVmUHRyPFJhbmdlPiBjYXJldFJh
bmdlRnJvbVBvaW50KGludCB4LCBpbnQgeSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmNwcAppbmRleCA1ODY3ZDkyYjQwMmQwMmYyOTY2OWI3NmJlYTg1MDEzMTZlZmEyYWQ1Li45YmU0
OTE4NDQzMzgxNGJiOTE2ODEyOTUyNTJlNmI3ZTE4YzRjMzJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuY3BwCkBAIC0xMDE5LDM1ICsxMDE5LDE0IEBAIEhpdFRlc3RSZXN1bHQgRXZl
bnRIYW5kbGVyOjpoaXRUZXN0UmVzdWx0QXRQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQs
IGJvb2wKICAgICAgICAgaGl0VHlwZSB8PSBIaXRUZXN0UmVxdWVzdDo6SWdub3JlQ2xpcHBpbmc7
CiAgICAgaWYgKGFsbG93U2hhZG93Q29udGVudCkKICAgICAgICAgaGl0VHlwZSB8PSBIaXRUZXN0
UmVxdWVzdDo6QWxsb3dTaGFkb3dDb250ZW50OworICAgIGlmICh0ZXN0U2Nyb2xsYmFycyA9PSBT
aG91bGRIaXRUZXN0U2Nyb2xsYmFycykKKyAgICAgICAgaGl0VHlwZSB8PSBIaXRUZXN0UmVxdWVz
dDo6VGVzdENoaWxkRnJhbWVTY3JvbGxCYXJzOworICAgIC8vIGhpdFRlc3RSZXN1bHRBdFBvaW50
IGFsd2F5cyBoYW5kbGUgY2hpbGQgZnJhbWUgY29udGVudC4KKyAgICBoaXRUeXBlIHw9IEhpdFRl
c3RSZXF1ZXN0OjpBbGxvd0NoaWxkRnJhbWVDb250ZW50OworCiAgICAgSGl0VGVzdFJlcXVlc3Qg
cmVxdWVzdChoaXRUeXBlKTsKICAgICBtX2ZyYW1lLT5jb250ZW50UmVuZGVyZXIoKS0+aGl0VGVz
dChyZXF1ZXN0LCByZXN1bHQpOwogCi0gICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgTm9kZSog
biA9IHJlc3VsdC5pbm5lck5vZGUoKTsKLSAgICAgICAgaWYgKCFyZXN1bHQuaXNPdmVyV2lkZ2V0
KCkgfHwgIW4gfHwgIW4tPnJlbmRlcmVyKCkgfHwgIW4tPnJlbmRlcmVyKCktPmlzV2lkZ2V0KCkp
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgUmVuZGVyV2lkZ2V0KiByZW5kZXJXaWRnZXQg
PSB0b1JlbmRlcldpZGdldChuLT5yZW5kZXJlcigpKTsKLSAgICAgICAgV2lkZ2V0KiB3aWRnZXQg
PSByZW5kZXJXaWRnZXQtPndpZGdldCgpOwotICAgICAgICBpZiAoIXdpZGdldCB8fCAhd2lkZ2V0
LT5pc0ZyYW1lVmlldygpKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIEZyYW1lKiBmcmFt
ZSA9IHN0YXRpY19jYXN0PEhUTUxGcmFtZUVsZW1lbnRCYXNlKj4obiktPmNvbnRlbnRGcmFtZSgp
OwotICAgICAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+Y29udGVudFJlbmRlcmVyKCkpCi0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgRnJhbWVWaWV3KiB2aWV3ID0gc3RhdGljX2Nhc3Q8RnJh
bWVWaWV3Kj4od2lkZ2V0KTsKLSAgICAgICAgTGF5b3V0UG9pbnQgd2lkZ2V0UG9pbnQocmVzdWx0
LmxvY2FsUG9pbnQoKS54KCkgKyB2aWV3LT5zY3JvbGxYKCkgLSByZW5kZXJXaWRnZXQtPmJvcmRl
ckxlZnQoKSAtIHJlbmRlcldpZGdldC0+cGFkZGluZ0xlZnQoKSwgCi0gICAgICAgICAgICByZXN1
bHQubG9jYWxQb2ludCgpLnkoKSArIHZpZXctPnNjcm9sbFkoKSAtIHJlbmRlcldpZGdldC0+Ym9y
ZGVyVG9wKCkgLSByZW5kZXJXaWRnZXQtPnBhZGRpbmdUb3AoKSk7Ci0gICAgICAgIEhpdFRlc3RS
ZXN1bHQgd2lkZ2V0SGl0VGVzdFJlc3VsdCh3aWRnZXRQb2ludCwgcGFkZGluZy5oZWlnaHQoKSwg
cGFkZGluZy53aWR0aCgpLCBwYWRkaW5nLmhlaWdodCgpLCBwYWRkaW5nLndpZHRoKCkpOwotICAg
ICAgICB3aWRnZXRIaXRUZXN0UmVzdWx0LnNldFBvaW50SW5NYWluRnJhbWUocmVzdWx0LnBvaW50
SW5NYWluRnJhbWUoKSk7Ci0gICAgICAgIGZyYW1lLT5jb250ZW50UmVuZGVyZXIoKS0+aGl0VGVz
dChyZXF1ZXN0LCB3aWRnZXRIaXRUZXN0UmVzdWx0KTsKLSAgICAgICAgcmVzdWx0ID0gd2lkZ2V0
SGl0VGVzdFJlc3VsdDsKLQotICAgICAgICBpZiAodGVzdFNjcm9sbGJhcnMgPT0gU2hvdWxkSGl0
VGVzdFNjcm9sbGJhcnMpIHsKLSAgICAgICAgICAgIFNjcm9sbGJhciogZXZlbnRTY3JvbGxiYXIg
PSB2aWV3LT5zY3JvbGxiYXJBdFBvaW50KHJvdW5kZWRJbnRQb2ludChwb2ludCkpOwotICAgICAg
ICAgICAgaWYgKGV2ZW50U2Nyb2xsYmFyKQotICAgICAgICAgICAgICAgIHJlc3VsdC5zZXRTY3Jv
bGxiYXIoZXZlbnRTY3JvbGxiYXIpOwotICAgICAgICB9Ci0gICAgfQotCiAgICAgaWYgKCFhbGxv
d1NoYWRvd0NvbnRlbnQpCiAgICAgICAgIHJlc3VsdC5zZXRUb05vblNoYWRvd0FuY2VzdG9yKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVG91Y2hBZGp1c3RtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvVG91Y2hBZGp1c3RtZW50LmNwcAppbmRleCAxZGUwMjIwM2M1
OTUwNGUwNzNhNzY2Y2QwOWQ1ODQwOWI1MmMyZGEyLi4zODJiZDhmMGRlZDQzYmU4ZTFhN2E1YTE1
N2QxY2JkNDA4ZmMwNDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoQWRq
dXN0bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Ub3VjaEFkanVzdG1lbnQuY3Bw
CkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIkZs
b2F0UXVhZC5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkhUTUxGcmFtZU93
bmVyRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJI
VE1MTGFiZWxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCkBAIC0yMjEsNiArMjIy
LDE2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhcHBlbmRab29tYWJsZVN1YnRhcmdldHMoTm9kZSog
bm9kZSwgU3VidGFyZ2V0R2VvbWV0cnlMaXN0JiBzCiAgICAgICAgIHN1YnRhcmdldHMuYXBwZW5k
KFN1YnRhcmdldEdlb21ldHJ5KG5vZGUsICppdCkpOwogfQogCitzdGF0aWMgaW5saW5lIE5vZGUq
IHBhcmVudEhvc3RPck93bmVyKGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgTm9kZSogYW5jZXN0
b3IgPSBub2RlLT5wYXJlbnRPckhvc3ROb2RlKCk7CisgICAgaWYgKGFuY2VzdG9yKQorICAgICAg
ICByZXR1cm4gYW5jZXN0b3I7CisgICAgaWYgKG5vZGUtPmlzRG9jdW1lbnROb2RlKCkpCisgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBEb2N1bWVudCo+KG5vZGUpLT5vd25lckVsZW1l
bnQoKTsKKyAgICByZXR1cm4gMDsKK30KKwogLy8gQ29tcGlsZXMgYSBsaXN0IG9mIHN1YnRhcmdl
dHMgb2YgYWxsIHRoZSByZWxldmFudCB0YXJnZXQgbm9kZXMuCiB2b2lkIGNvbXBpbGVTdWJ0YXJn
ZXRMaXN0KGNvbnN0IE5vZGVMaXN0JiBpbnRlcnNlY3RlZE5vZGVzLCBTdWJ0YXJnZXRHZW9tZXRy
eUxpc3QmIHN1YnRhcmdldHMsIE5vZGVGaWx0ZXIgbm9kZUZpbHRlciwgQXBwZW5kU3VidGFyZ2V0
c0Zvck5vZGUgYXBwZW5kU3VidGFyZ2V0c0Zvck5vZGUpCiB7CkBAIC0yNDgsNyArMjU5LDcgQEAg
dm9pZCBjb21waWxlU3VidGFyZ2V0TGlzdChjb25zdCBOb2RlTGlzdCYgaW50ZXJzZWN0ZWROb2Rl
cywgU3VidGFyZ2V0R2VvbWV0cnlMaXMKICAgICAgICAgICAgIGlmIChub2RlRmlsdGVyKHZpc2l0
ZWROb2RlKSkgewogICAgICAgICAgICAgICAgIHJlc3BvbmRpbmdOb2RlID0gdmlzaXRlZE5vZGU7
CiAgICAgICAgICAgICAgICAgLy8gQ29udGludWUgdGhlIGl0ZXJhdGlvbiB0byBjb2xsZWN0IHRo
ZSBhbmNlc3RvcnMgb2YgdGhlIHJlc3BvbmRlciwgd2hpY2ggd2Ugd2lsbCBuZWVkIGxhdGVyLgot
ICAgICAgICAgICAgICAgIGZvciAodmlzaXRlZE5vZGUgPSB2aXNpdGVkTm9kZS0+cGFyZW50T3JI
b3N0Tm9kZSgpOyB2aXNpdGVkTm9kZTsgdmlzaXRlZE5vZGUgPSB2aXNpdGVkTm9kZS0+cGFyZW50
T3JIb3N0Tm9kZSgpKSB7CisgICAgICAgICAgICAgICAgZm9yICh2aXNpdGVkTm9kZSA9IHBhcmVu
dEhvc3RPck93bmVyKHZpc2l0ZWROb2RlKTsgdmlzaXRlZE5vZGU7IHZpc2l0ZWROb2RlID0gcGFy
ZW50SG9zdE9yT3duZXIodmlzaXRlZE5vZGUpKSB7CiAgICAgICAgICAgICAgICAgICAgIEhhc2hT
ZXQ8Tm9kZSo+OjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gYW5jZXN0b3JzVG9SZXNwb25kZXJzU2V0
LmFkZCh2aXNpdGVkTm9kZSk7CiAgICAgICAgICAgICAgICAgICAgIGlmICghYWRkUmVzdWx0Lmlz
TmV3RW50cnkpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0hpdFRlc3RSZXF1ZXN0LmgKaW5kZXggZDkzN2MyNTA0NjkzOTZiNzRiNzQ0ZTJk
MjAwMzY0YTlkN2IwNDE3MC4uM2ZhZjg4YTlmOTEzNzYxZWMwMTNkNmU3ZDJjZGRhZjMyZjg0ZDc5
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXF1ZXN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXF1ZXN0LmgKQEAgLTM1LDcg
KzM1LDEwIEBAIHB1YmxpYzoKICAgICAgICAgSWdub3JlQ2xpcHBpbmcgPSAxIDw8IDUsCiAgICAg
ICAgIFNWR0NsaXBDb250ZW50ID0gMSA8PCA2LAogICAgICAgICBUb3VjaEV2ZW50ID0gMSA8PCA3
LAotICAgICAgICBBbGxvd1NoYWRvd0NvbnRlbnQgPSAxIDw8IDgKKyAgICAgICAgQWxsb3dTaGFk
b3dDb250ZW50ID0gMSA8PCA4LAorICAgICAgICBBbGxvd0NoaWxkRnJhbWVDb250ZW50ID0gMSA8
PCA5LAorICAgICAgICBDaGlsZEZyYW1lSGl0VGVzdCA9IDEgPDwgMTAsCisgICAgICAgIFRlc3RD
aGlsZEZyYW1lU2Nyb2xsQmFycyA9IDEgPDwgMTEKICAgICB9OwogCiAgICAgdHlwZWRlZiB1bnNp
Z25lZCBIaXRUZXN0UmVxdWVzdFR5cGU7CkBAIC01NCw2ICs1Nyw5IEBAIHB1YmxpYzoKICAgICBi
b29sIHRvdWNoRXZlbnQoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RUeXBlICYgVG91Y2hFdmVu
dDsgfQogICAgIGJvb2wgbW91c2VFdmVudCgpIGNvbnN0IHsgcmV0dXJuICF0b3VjaEV2ZW50KCk7
IH0KICAgICBib29sIGFsbG93c1NoYWRvd0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX3JlcXVl
c3RUeXBlICYgQWxsb3dTaGFkb3dDb250ZW50OyB9CisgICAgYm9vbCBhbGxvd3NDaGlsZEZyYW1l
Q29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdFR5cGUgJiBBbGxvd0NoaWxkRnJhbWVD
b250ZW50OyB9CisgICAgYm9vbCBpc0NoaWxkRnJhbWVIaXRUZXN0KCkgY29uc3QgeyByZXR1cm4g
bV9yZXF1ZXN0VHlwZSAmIENoaWxkRnJhbWVIaXRUZXN0OyB9CisgICAgYm9vbCBzaG91bGRUZXN0
Q2hpbGRGcmFtZVNjcm9sbEJhcnMoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RUeXBlICYgVGVz
dENoaWxkRnJhbWVTY3JvbGxCYXJzOyB9CiAKICAgICAvLyBDb252ZW5pZW5jZSBmdW5jdGlvbnMK
ICAgICBib29sIHRvdWNoTW92ZSgpIGNvbnN0IHsgcmV0dXJuIG1vdmUoKSAmJiB0b3VjaEV2ZW50
KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAppbmRleCA2
MzNiZGRmM2VjZThkN2IyOWNiNmM4Y2Y5YWE2ZDA5ZjU1YTY3MmE0Li45NWZlMTA3OGNiMjIxNmU2
N2RiNGM5MWI2NDNkNzhmMTMwM2M4M2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hp
dFRlc3RSZXN1bHQuY3BwCkBAIC0xOTksMjEgKzE5OSwyMSBAQCBIaXRUZXN0UmVzdWx0OjpIaXRU
ZXN0UmVzdWx0KCkKIAogSGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3VsdChjb25zdCBMYXlvdXRQ
b2ludCYgcG9pbnQpCiAgICAgOiBtX2hpdFRlc3RMb2NhdGlvbihwb2ludCkKLSAgICAsIG1fcG9p
bnRJbk1haW5GcmFtZShwb2ludCkKKyAgICAsIG1fcG9pbnRJbklubmVyTm9kZUZyYW1lKHBvaW50
KQogICAgICwgbV9pc092ZXJXaWRnZXQoZmFsc2UpCiB7CiB9CiAKIEhpdFRlc3RSZXN1bHQ6Okhp
dFRlc3RSZXN1bHQoY29uc3QgTGF5b3V0UG9pbnQmIGNlbnRlclBvaW50LCB1bnNpZ25lZCB0b3BQ
YWRkaW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcsIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVu
c2lnbmVkIGxlZnRQYWRkaW5nKQogICAgIDogbV9oaXRUZXN0TG9jYXRpb24oY2VudGVyUG9pbnQs
IHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcpCi0g
ICAgLCBtX3BvaW50SW5NYWluRnJhbWUoY2VudGVyUG9pbnQpCisgICAgLCBtX3BvaW50SW5Jbm5l
ck5vZGVGcmFtZShjZW50ZXJQb2ludCkKICAgICAsIG1faXNPdmVyV2lkZ2V0KGZhbHNlKQogewog
fQogCiBIaXRUZXN0UmVzdWx0OjpIaXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYg
b3RoZXIpCiAgICAgOiBtX2hpdFRlc3RMb2NhdGlvbihvdGhlcikKLSAgICAsIG1fcG9pbnRJbk1h
aW5GcmFtZShtX2hpdFRlc3RMb2NhdGlvbi5wb2ludCgpKQorICAgICwgbV9wb2ludEluSW5uZXJO
b2RlRnJhbWUobV9oaXRUZXN0TG9jYXRpb24ucG9pbnQoKSkKICAgICAsIG1faXNPdmVyV2lkZ2V0
KGZhbHNlKQogewogfQpAQCAtMjIyLDcgKzIyMiw3IEBAIEhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RS
ZXN1bHQoY29uc3QgSGl0VGVzdFJlc3VsdCYgb3RoZXIpCiAgICAgOiBtX2hpdFRlc3RMb2NhdGlv
bihvdGhlci5tX2hpdFRlc3RMb2NhdGlvbikKICAgICAsIG1faW5uZXJOb2RlKG90aGVyLmlubmVy
Tm9kZSgpKQogICAgICwgbV9pbm5lck5vblNoYXJlZE5vZGUob3RoZXIuaW5uZXJOb25TaGFyZWRO
b2RlKCkpCi0gICAgLCBtX3BvaW50SW5NYWluRnJhbWUob3RoZXIubV9wb2ludEluTWFpbkZyYW1l
KQorICAgICwgbV9wb2ludEluSW5uZXJOb2RlRnJhbWUob3RoZXIubV9wb2ludEluSW5uZXJOb2Rl
RnJhbWUpCiAgICAgLCBtX2xvY2FsUG9pbnQob3RoZXIubG9jYWxQb2ludCgpKQogICAgICwgbV9p
bm5lclVSTEVsZW1lbnQob3RoZXIuVVJMRWxlbWVudCgpKQogICAgICwgbV9zY3JvbGxiYXIob3Ro
ZXIuc2Nyb2xsYmFyKCkpCkBAIC0yNDEsNyArMjQxLDcgQEAgSGl0VGVzdFJlc3VsdCYgSGl0VGVz
dFJlc3VsdDo6b3BlcmF0b3I9KGNvbnN0IEhpdFRlc3RSZXN1bHQmIG90aGVyKQogICAgIG1faGl0
VGVzdExvY2F0aW9uID0gb3RoZXIubV9oaXRUZXN0TG9jYXRpb247CiAgICAgbV9pbm5lck5vZGUg
PSBvdGhlci5pbm5lck5vZGUoKTsKICAgICBtX2lubmVyTm9uU2hhcmVkTm9kZSA9IG90aGVyLmlu
bmVyTm9uU2hhcmVkTm9kZSgpOwotICAgIG1fcG9pbnRJbk1haW5GcmFtZSA9IG90aGVyLm1fcG9p
bnRJbk1haW5GcmFtZTsKKyAgICBtX3BvaW50SW5Jbm5lck5vZGVGcmFtZSA9IG90aGVyLm1fcG9p
bnRJbklubmVyTm9kZUZyYW1lOwogICAgIG1fbG9jYWxQb2ludCA9IG90aGVyLmxvY2FsUG9pbnQo
KTsKICAgICBtX2lubmVyVVJMRWxlbWVudCA9IG90aGVyLlVSTEVsZW1lbnQoKTsKICAgICBtX3Nj
cm9sbGJhciA9IG90aGVyLnNjcm9sbGJhcigpOwpAQCAtNzM1LDcgKzczNSw3IEBAIHZvaWQgSGl0
VGVzdFJlc3VsdDo6YXBwZW5kKGNvbnN0IEhpdFRlc3RSZXN1bHQmIG90aGVyKQogICAgICAgICBt
X2lubmVyTm9kZSA9IG90aGVyLmlubmVyTm9kZSgpOwogICAgICAgICBtX2lubmVyTm9uU2hhcmVk
Tm9kZSA9IG90aGVyLmlubmVyTm9uU2hhcmVkTm9kZSgpOwogICAgICAgICBtX2xvY2FsUG9pbnQg
PSBvdGhlci5sb2NhbFBvaW50KCk7Ci0gICAgICAgIG1fcG9pbnRJbk1haW5GcmFtZSA9IG90aGVy
Lm1fcG9pbnRJbk1haW5GcmFtZTsKKyAgICAgICAgbV9wb2ludEluSW5uZXJOb2RlRnJhbWUgPSBv
dGhlci5tX3BvaW50SW5Jbm5lck5vZGVGcmFtZTsKICAgICAgICAgbV9pbm5lclVSTEVsZW1lbnQg
PSBvdGhlci5VUkxFbGVtZW50KCk7CiAgICAgICAgIG1fc2Nyb2xsYmFyID0gb3RoZXIuc2Nyb2xs
YmFyKCk7CiAgICAgICAgIG1faXNPdmVyV2lkZ2V0ID0gb3RoZXIuaXNPdmVyV2lkZ2V0KCk7CkBA
IC03NjgsNyArNzY4LDcgQEAgVmVjdG9yPFN0cmluZz4gSGl0VGVzdFJlc3VsdDo6ZGljdGF0aW9u
QWx0ZXJuYXRpdmVzKCkgY29uc3QKICAgICBpZiAoIW1faW5uZXJOb25TaGFyZWROb2RlKQogICAg
ICAgICByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsKIAotICAgIERvY3VtZW50TWFya2VyKiBtYXJr
ZXIgPSBtX2lubmVyTm9uU2hhcmVkTm9kZS0+ZG9jdW1lbnQoKS0+bWFya2VycygpLT5tYXJrZXJD
b250YWluaW5nUG9pbnQoaGl0VGVzdExvY2F0aW9uKCkucG9pbnQoKSwgRG9jdW1lbnRNYXJrZXI6
OkRpY3RhdGlvbkFsdGVybmF0aXZlcyk7CisgICAgRG9jdW1lbnRNYXJrZXIqIG1hcmtlciA9IG1f
aW5uZXJOb25TaGFyZWROb2RlLT5kb2N1bWVudCgpLT5tYXJrZXJzKCktPm1hcmtlckNvbnRhaW5p
bmdQb2ludChwb2ludEluSW5uZXJOb2RlRnJhbWUoKSwgRG9jdW1lbnRNYXJrZXI6OkRpY3RhdGlv
bkFsdGVybmF0aXZlcyk7CiAgICAgaWYgKCFtYXJrZXIpCiAgICAgICAgIHJldHVybiBWZWN0b3I8
U3RyaW5nPigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVz
dFJlc3VsdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaAppbmRl
eCBjMmUwYmYyYTc5NTllMGZmMjg1ZWU3NTI5MTJmYWE5ZDdjOWJkNDU5Li44ZWRmMzFlZTNiMzFi
NmJiNTA4MWYxNmM2OTVkYjhmNzk3N2M5ZGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9I
aXRUZXN0UmVzdWx0LmgKQEAgLTEyNSwxMyArMTI1LDEzIEBAIHB1YmxpYzoKICAgICBib29sIGlz
UmVjdEJhc2VkVGVzdCgpIGNvbnN0IHsgcmV0dXJuIG1faGl0VGVzdExvY2F0aW9uLmlzUmVjdEJh
c2VkVGVzdCgpOyB9CiAKICAgICAvLyBUaGUgaGl0LXRlc3RlZCBwb2ludCBpbiB0aGUgY29vcmRp
bmF0ZXMgb2YgdGhlIG1haW4gZnJhbWUuCi0gICAgY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50SW5N
YWluRnJhbWUoKSBjb25zdCB7IHJldHVybiBtX3BvaW50SW5NYWluRnJhbWU7IH0KKyAgICBjb25z
dCBMYXlvdXRQb2ludCYgcG9pbnRJbk1haW5GcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1faGl0VGVz
dExvY2F0aW9uLnBvaW50KCk7IH0KICAgICBJbnRQb2ludCByb3VuZGVkUG9pbnRJbk1haW5GcmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIHJvdW5kZWRJbnRQb2ludChwb2ludEluTWFpbkZyYW1lKCkpOyB9
Ci0gICAgdm9pZCBzZXRQb2ludEluTWFpbkZyYW1lKGNvbnN0IExheW91dFBvaW50JiBwKSB7IG1f
cG9pbnRJbk1haW5GcmFtZSA9IHA7IH0KIAogICAgIC8vIFRoZSBoaXQtdGVzdGVkIHBvaW50IGlu
IHRoZSBjb29yZGluYXRlcyBvZiB0aGUgaW5uZXJOb2RlIGZyYW1lLCB0aGUgZnJhbWUgY29udGFp
bmluZyBpbm5lck5vZGUuCi0gICAgY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50SW5Jbm5lck5vZGVG
cmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1faGl0VGVzdExvY2F0aW9uLnBvaW50KCk7IH0KKyAgICBj
b25zdCBMYXlvdXRQb2ludCYgcG9pbnRJbklubmVyTm9kZUZyYW1lKCkgY29uc3QgeyByZXR1cm4g
bV9wb2ludEluSW5uZXJOb2RlRnJhbWU7IH0KICAgICBJbnRQb2ludCByb3VuZGVkUG9pbnRJbklu
bmVyTm9kZUZyYW1lKCkgY29uc3QgeyByZXR1cm4gcm91bmRlZEludFBvaW50KHBvaW50SW5Jbm5l
ck5vZGVGcmFtZSgpKTsgfQorICAgIHZvaWQgc2V0UG9pbnRJbklubmVyTm9kZUZyYW1lKGNvbnN0
IExheW91dFBvaW50JiBwb2ludCkgeyBtX3BvaW50SW5Jbm5lck5vZGVGcmFtZSA9IHBvaW50OyB9
CiAgICAgRnJhbWUqIGlubmVyTm9kZUZyYW1lKCkgY29uc3Q7CiAKICAgICAvLyBUaGUgaGl0LXRl
c3RlZCBwb2ludCBpbiB0aGUgY29vcmRpbmF0ZXMgb2YgdGhlIGlubmVyIG5vZGUuCkBAIC0yMDMs
NyArMjAzLDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxOb2RlPiBtX2lubmVyTm9kZTsKICAg
ICBSZWZQdHI8Tm9kZT4gbV9pbm5lck5vblNoYXJlZE5vZGU7Ci0gICAgTGF5b3V0UG9pbnQgbV9w
b2ludEluTWFpbkZyYW1lOyAvLyBUaGUgaGl0LXRlc3RlZCBwb2ludCBpbiBtYWluLWZyYW1lIGNv
b3JkaW5hdGVzLgorICAgIExheW91dFBvaW50IG1fcG9pbnRJbklubmVyTm9kZUZyYW1lOyAvLyBU
aGUgaGl0LXRlc3RlZCBwb2ludCBpbiBpbm5lck5vZGUgZnJhbWUgY29vcmRpbmF0ZXMuCiAgICAg
TGF5b3V0UG9pbnQgbV9sb2NhbFBvaW50OyAvLyBBIHBvaW50IGluIHRoZSBsb2NhbCBjb29yZGlu
YXRlIHNwYWNlIG9mIG1faW5uZXJOb25TaGFyZWROb2RlJ3MgcmVuZGVyZXIuIEFsbG93cyB1cyB0
byBlZmZpY2llbnRseQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGV0ZXJtaW5l
IHdoZXJlIGluc2lkZSB0aGUgcmVuZGVyZXIgd2UgaGl0IG9uIHN1YnNlcXVlbnQgb3BlcmF0aW9u
cy4KICAgICBSZWZQdHI8RWxlbWVudD4gbV9pbm5lclVSTEVsZW1lbnQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuY3BwCmluZGV4IGFhODI4NzBkNGVmYThhZGJj
ODE5NmZkZDZhNTA2ZjU5OGNiMDc1MzcuLmRhZTVjNjk1MDk5M2MzNWIxNTgzNTFlOWJjMTgzNjZk
OTFiNGY1ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFt
ZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2Uu
Y3BwCkBAIC0yOSw2ICsyOSw4IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFt
ZVZpZXcuaCIKICNpbmNsdWRlICJIVE1MRnJhbWVFbGVtZW50QmFzZS5oIgorI2luY2x1ZGUgIkhp
dFRlc3RSZXN1bHQuaCIKKyNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRl
clZpZXcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTA0LDQgKzEwNiwzNiBAQCB2b2lk
IFJlbmRlckZyYW1lQmFzZTo6bGF5b3V0V2l0aEZsYXR0ZW5pbmcoYm9vbCBoYXNGaXhlZFdpZHRo
LCBib29sIGhhc0ZpeGVkSGVpZwogICAgIHNldE5lZWRzTGF5b3V0KGZhbHNlKTsKIH0KIAorYm9v
bCBSZW5kZXJGcmFtZUJhc2U6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1
ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRp
b25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRU
ZXN0QWN0aW9uIGFjdGlvbikKK3sKKyAgICBpZiAocmVxdWVzdC5hbGxvd3NDaGlsZEZyYW1lQ29u
dGVudCgpKSB7CisgICAgICAgIEZyYW1lVmlldyogY2hpbGRGcmFtZVZpZXcgPSBzdGF0aWNfY2Fz
dDxGcmFtZVZpZXcqPih3aWRnZXQoKSk7CisgICAgICAgIFJlbmRlclZpZXcqIGNoaWxkUm9vdCA9
IGNoaWxkRnJhbWVWaWV3ID8gc3RhdGljX2Nhc3Q8UmVuZGVyVmlldyo+KGNoaWxkRnJhbWVWaWV3
LT5mcmFtZSgpLT5jb250ZW50UmVuZGVyZXIoKSkgOiAwOworCisgICAgICAgIGlmIChjaGlsZFJv
b3QpIHsKKyAgICAgICAgICAgIExheW91dFBvaW50IGFkanVzdGVkTG9jYXRpb24gPSBhY2N1bXVs
YXRlZE9mZnNldCArIGxvY2F0aW9uKCk7CisgICAgICAgICAgICBMYXlvdXRQb2ludCBjb250ZW50
T2Zmc2V0ID0gTGF5b3V0UG9pbnQoYm9yZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQoKSwgYm9yZGVy
VG9wKCkgKyBwYWRkaW5nVG9wKCkpIC0gY2hpbGRGcmFtZVZpZXctPnNjcm9sbE9mZnNldCgpOwor
ICAgICAgICAgICAgSGl0VGVzdExvY2F0aW9uIG5ld0hpdFRlc3RMb2NhdGlvbihsb2NhdGlvbklu
Q29udGFpbmVyLCAtYWRqdXN0ZWRMb2NhdGlvbiAtIGNvbnRlbnRPZmZzZXQpOworICAgICAgICAg
ICAgSGl0VGVzdFJlcXVlc3QgbmV3SGl0VGVzdFJlcXVlc3QocmVxdWVzdC50eXBlKCkgfCBIaXRU
ZXN0UmVxdWVzdDo6Q2hpbGRGcmFtZUhpdFRlc3QpOworICAgICAgICAgICAgSGl0VGVzdFJlc3Vs
dCBjaGlsZEZyYW1lUmVzdWx0KG5ld0hpdFRlc3RMb2NhdGlvbik7CisKKyAgICAgICAgICAgIGJv
b2wgaXNJbnNpZGVDaGlsZEZyYW1lID0gY2hpbGRSb290LT5sYXllcigpLT5oaXRUZXN0KG5ld0hp
dFRlc3RSZXF1ZXN0LCBuZXdIaXRUZXN0TG9jYXRpb24sIGNoaWxkRnJhbWVSZXN1bHQpOworICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZChjaGlsZEZyYW1lUmVzdWx0KTsKKyAgICAgICAgICAgIGlm
IChpc0luc2lkZUNoaWxkRnJhbWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAg
ICAgICAgICAgIGlmIChyZXF1ZXN0LnNob3VsZFRlc3RDaGlsZEZyYW1lU2Nyb2xsQmFycygpKSB7
CisgICAgICAgICAgICAgICAgLy8gU2Nyb2xsVmlldyBzY3JvbGxiYXJzIGFyZSBub3QgdGhlIHNh
bWUgYXMgUmVuZGVyTGF5ZXIgc2Nyb2xsYmFycyB0ZXN0ZWQgYnkgUmVuZGVyTGF5ZXI6OmhpdFRl
c3RPdmVyZmxvd0NvbnRyb2xzLAorICAgICAgICAgICAgICAgIC8vIHNvIHdlIG5lZWQgdG8gdGVz
dCBTY3JvbGxWaWV3IHNjcm9sbGJhcnMgc2VwYXJhdGVseSBoZXJlLgorICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiBDb25zaWRlciBpZiB0aGlzIHRlc3QgY291bGQgYmUgZG9uZSB1bmNvbmRpdGlv
bmFsbHkuCisgICAgICAgICAgICAgICAgU2Nyb2xsYmFyKiBmcmFtZVNjcm9sbGJhciA9IGNoaWxk
RnJhbWVWaWV3LT5zY3JvbGxiYXJBdFBvaW50KG5ld0hpdFRlc3RMb2NhdGlvbi5yb3VuZGVkUG9p
bnQoKSk7CisgICAgICAgICAgICAgICAgaWYgKGZyYW1lU2Nyb2xsYmFyKQorICAgICAgICAgICAg
ICAgICAgICByZXN1bHQuc2V0U2Nyb2xsYmFyKGZyYW1lU2Nyb2xsYmFyKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBSZW5kZXJQYXJ0Ojpub2RlQXRQb2lu
dChyZXF1ZXN0LCByZXN1bHQsIGxvY2F0aW9uSW5Db250YWluZXIsIGFjY3VtdWxhdGVkT2Zmc2V0
LCBhY3Rpb24pOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRnJhbWVCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVC
YXNlLmgKaW5kZXggNGZhZDU2MGM1YjMzN2Y5NmI4MTNiMGNiNzkwNTQ1MzYyZGM2Njg3Yy4uYTdk
ZWVkYWIxMDI4M2RmNjk1NDE4ZWRlMGZiYjk0ZDQ5ZTEyZTQ5MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuaApAQCAtMzYsNiArMzYsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgZXhwbGljaXQgUmVuZGVyRnJhbWVCYXNlKEVsZW1lbnQqKTsKIAogcHVibGljOgorICAg
IHZpcnR1YWwgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RS
ZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0
IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbikgT1ZFUlJJREU7
CiAgICAgdm9pZCBsYXlvdXRXaXRoRmxhdHRlbmluZyhib29sIGZpeGVkV2lkdGgsIGJvb2wgZml4
ZWRIZWlnaHQpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAK
aW5kZXggZDJmZjhkMzIyODc3MjFmYWIwMGQ2NWQyYjA5N2JiYmVhNTBkYmJjMy4uZDE5MDFiZTUw
NTBmMTg0Y2RjYmY2NTRjYTZjZGFjNjViOGIxZjRjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0zOTU1LDcgKzM5NTUsNyBAQCBib29sIFJlbmRlckxheWVy
OjpoaXRUZXN0KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBIaXRUZXN0TG9j
YXRpb24mCiAgICAgICAgIC8vIFdlIGRpZG4ndCBoaXQgYW55IGxheWVyLiBJZiB3ZSBhcmUgdGhl
IHJvb3QgbGF5ZXIgYW5kIHRoZSBtb3VzZSBpcyAtLSBvciBqdXN0IHdhcyAtLSBkb3duLCAKICAg
ICAgICAgLy8gcmV0dXJuIG91cnNlbHZlcy4gV2UgZG8gdGhpcyBzbyBtb3VzZSBldmVudHMgY29u
dGludWUgZ2V0dGluZyBkZWxpdmVyZWQgYWZ0ZXIgYSBkcmFnIGhhcyAKICAgICAgICAgLy8gZXhp
dGVkIHRoZSBXZWJWaWV3LCBhbmQgc28gaGl0IHRlc3Rpbmcgb3ZlciBhIHNjcm9sbGJhciBoaXRz
IHRoZSBjb250ZW50IGRvY3VtZW50LgotICAgICAgICBpZiAoKHJlcXVlc3QuYWN0aXZlKCkgfHwg
cmVxdWVzdC5yZWxlYXNlKCkpICYmIGlzUm9vdExheWVyKCkpIHsKKyAgICAgICAgaWYgKCFyZXF1
ZXN0LmlzQ2hpbGRGcmFtZUhpdFRlc3QoKSAmJiAocmVxdWVzdC5hY3RpdmUoKSB8fCByZXF1ZXN0
LnJlbGVhc2UoKSkgJiYgaXNSb290TGF5ZXIoKSkgewogICAgICAgICAgICAgcmVuZGVyZXIoKS0+
dXBkYXRlSGl0VGVzdFJlc3VsdChyZXN1bHQsIHRvUmVuZGVyVmlldyhyZW5kZXJlcigpKS0+Zmxp
cEZvcldyaXRpbmdNb2RlKGhpdFRlc3RMb2NhdGlvbi5wb2ludCgpKSk7CiAgICAgICAgICAgICBp
bnNpZGVMYXllciA9IHRoaXM7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAppbmRleCBkNDJiNzM4Y2U3ZTRlZTYxYjg0MjE4MGQwZTUzMDg3M2M4MjkzMmZiLi43NTY5
MTNjOWQ0MDg2MzBkOWJjYjczZDZiYTFiYTQ5YmYzMTI1OTM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCkBAIC0xMjg4LDE0ICsxMjg4LDE0IEBAIFBhc3NSZWZQdHI8Q2xpZW50
UmVjdExpc3Q+IEludGVybmFsczo6dG91Y2hFdmVudFRhcmdldENsaWVudFJlY3RzKERvY3VtZW50
KiBkb2N1CiAjZW5kaWYKIAogUGFzc1JlZlB0cjxOb2RlTGlzdD4gSW50ZXJuYWxzOjpub2Rlc0Zy
b21SZWN0KERvY3VtZW50KiBkb2N1bWVudCwgaW50IHgsIGludCB5LCB1bnNpZ25lZCB0b3BQYWRk
aW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcsCi0gICAgdW5zaWduZWQgYm90dG9tUGFkZGluZywg
dW5zaWduZWQgbGVmdFBhZGRpbmcsIGJvb2wgaWdub3JlQ2xpcHBpbmcsIGJvb2wgYWxsb3dTaGFk
b3dDb250ZW50LCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKKyAgICB1bnNpZ25lZCBib3R0b21Q
YWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGluZywgYm9vbCBpZ25vcmVDbGlwcGluZywgYm9vbCBh
bGxvd1NoYWRvd0NvbnRlbnQsIGJvb2wgYWxsb3dDaGlsZEZyYW1lQ29udGVudCwgRXhjZXB0aW9u
Q29kZSYgZWMpIGNvbnN0CiB7CiAgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPmZyYW1l
KCkgfHwgIWRvY3VtZW50LT5mcmFtZSgpLT52aWV3KCkpIHsKICAgICAgICAgZWMgPSBJTlZBTElE
X0FDQ0VTU19FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIHJldHVybiBkb2N1
bWVudC0+bm9kZXNGcm9tUmVjdCh4LCB5LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRv
bVBhZGRpbmcsIGxlZnRQYWRkaW5nLCBpZ25vcmVDbGlwcGluZywgYWxsb3dTaGFkb3dDb250ZW50
KTsKKyAgICByZXR1cm4gZG9jdW1lbnQtPm5vZGVzRnJvbVJlY3QoeCwgeSwgdG9wUGFkZGluZywg
cmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0UGFkZGluZywgaWdub3JlQ2xpcHBpbmcs
IGFsbG93U2hhZG93Q29udGVudCwgYWxsb3dDaGlsZEZyYW1lQ29udGVudCk7CiB9CiAKIHZvaWQg
SW50ZXJuYWxzOjplbWl0SW5zcGVjdG9yRGlkQmVnaW5GcmFtZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaAppbmRleCA0YzQ0MWVlNGY0ZDI3OWRkNGQwNjUzNDg2YTgzNTcxM2EzZGE5OTcw
Li5hNzcwZTRkMjJjNWMwOTNlZWY5ZDcyNGU3OWMzNzRkNTI0OTI5Y2YwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmgKQEAgLTE4MCw3ICsxODAsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAog
ICAgIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IG5vZGVzRnJvbVJlY3QoRG9jdW1lbnQqLCBpbnQgeCwg
aW50IHksIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFkZGluZywKLSAgICAg
ICAgdW5zaWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcsIGJvb2wgaWdu
b3JlQ2xpcHBpbmcsIGJvb2wgYWxsb3dTaGFkb3dDb250ZW50LCBFeGNlcHRpb25Db2RlJikgY29u
c3Q7CisgICAgICAgIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5n
LCBib29sIGlnbm9yZUNsaXBwaW5nLCBib29sIGFsbG93U2hhZG93Q29udGVudCwgYm9vbCBhbGxv
d0NoaWxkRnJhbWVDb250ZW50LCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAKICAgICB2b2lkIGVt
aXRJbnNwZWN0b3JEaWRCZWdpbkZyYW1lKCk7CiAgICAgdm9pZCBlbWl0SW5zcGVjdG9yRGlkQ2Fu
Y2VsRnJhbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCBjNjI1MTdh
NmU4ZjA1MWExYjUwZGI5YWY4MDM0YjlhZjU5MTMzZjM4Li4wMWM0ZmFjOTg1MDM5YjU4ZTI5NmU2
YmFkMGE2N2NjM2U5OTIxMmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBA
IC0xNDgsNyArMTQ4LDcgQEAKIAogICAgIE5vZGVMaXN0IG5vZGVzRnJvbVJlY3QoaW4gRG9jdW1l
bnQgZG9jdW1lbnQsIGluIGxvbmcgeCwgaW4gbG9uZyB5LAogICAgICAgICBpbiB1bnNpZ25lZCBs
b25nIHRvcFBhZGRpbmcsIGluIHVuc2lnbmVkIGxvbmcgcmlnaHRQYWRkaW5nLCBpbiB1bnNpZ25l
ZCBsb25nIGJvdHRvbVBhZGRpbmcsIGluIHVuc2lnbmVkIGxvbmcgbGVmdFBhZGRpbmcsCi0gICAg
ICAgIGluIGJvb2xlYW4gaWdub3JlQ2xpcHBpbmcsIGluIGJvb2xlYW4gYWxsb3dTaGFkb3dDb250
ZW50KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAgICAgIGluIGJvb2xlYW4gaWdub3JlQ2xp
cHBpbmcsIGluIGJvb2xlYW4gYWxsb3dTaGFkb3dDb250ZW50LCBpbiBib29sZWFuIGFsbG93Q2hp
bGRGcmFtZUNvbnRlbnQpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKIAogICAgIHZvaWQgZW1pdElu
c3BlY3RvckRpZEJlZ2luRnJhbWUoKTsKICAgICB2b2lkIGVtaXRJbnNwZWN0b3JEaWRDYW5jZWxG
cmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJL
aXRFeHBvcnRzLmRlZi5pbiBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0
RXhwb3J0cy5kZWYuaW4KaW5kZXggNDYyZWYxMTlhZTI0NjE1ZTk3ZThjN2NlYzJjMGE3NWQ0ODdi
MDYyOS4uZjI4ZmEyMjc2MTFiN2YyYTEwODIwODE0NTVhNTJjMWY4MGY4NWQ2YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXRFeHBvcnRzLmRlZi5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdEV4cG9ydHMuZGVmLmlu
CkBAIC0zMDQsNyArMzA0LDcgQEAgRVhQT1JUUwogICAgICAgICA/PzFDb250ZXh0RGVzdHJ1Y3Rp
b25PYnNlcnZlckBXZWJDb3JlQEBNQUVAWFoKICAgICAgICAgP2NvbnRleHREZXN0cm95ZWRAQ29u
dGV4dERlc3RydWN0aW9uT2JzZXJ2ZXJAV2ViQ29yZUBAVUFFWFhaCiAgICAgICAgID8/MENvbnRl
eHREZXN0cnVjdGlvbk9ic2VydmVyQFdlYkNvcmVAQFFBRUBQQVZTY3JpcHRFeGVjdXRpb25Db250
ZXh0QDFAQFoKLSAgICAgICAgP25vZGVzRnJvbVJlY3RARG9jdW1lbnRAV2ViQ29yZUBAUUJFP0FW
PyRQYXNzUmVmUHRyQFZOb2RlTGlzdEBXZWJDb3JlQEBAV1RGQEBISElJSUlfTjBAWgorICAgICAg
ICA/bm9kZXNGcm9tUmVjdEBEb2N1bWVudEBXZWJDb3JlQEBRQkU/QVY/JFBhc3NSZWZQdHJAVk5v
ZGVMaXN0QFdlYkNvcmVAQEBXVEZAQEhISUlJSV9OMDBAWgogICAgICAgICA/c2VsZWN0aW9uU3Rh
cnRIYXNNYXJrZXJGb3JARWRpdG9yQFdlYkNvcmVAQFFCRV9OVzRNYXJrZXJUeXBlQERvY3VtZW50
TWFya2VyQDJASEhAWgogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICAgICAgP3dlYmtp
dFdpbGxFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50QERvY3VtZW50QFdlYkNvcmVAQFFBRVhQQVZF
bGVtZW50QDJAQFoKQEAgLTY5MSw3ICs2OTEsNyBAQCBFWFBPUlRTCiAgICAgICAgID8/MUNvbnRl
eHREZXN0cnVjdGlvbk9ic2VydmVyQFdlYkNvcmVAQE1BRUBYWgogICAgICAgICA/Y29udGV4dERl
c3Ryb3llZEBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlckBXZWJDb3JlQEBVQUVYWFoKICAgICAg
ICAgPz8wQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXJAV2ViQ29yZUBAUUFFQFBBVlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRAMUBAWgotICAgICAgICA/bm9kZXNGcm9tUmVjdEBEb2N1bWVudEBXZWJD
b3JlQEBRQkU/QVY/JFBhc3NSZWZQdHJAVk5vZGVMaXN0QFdlYkNvcmVAQEBXVEZAQEhISUlJSV9O
MEBaCisgICAgICAgID9ub2Rlc0Zyb21SZWN0QERvY3VtZW50QFdlYkNvcmVAQFFCRT9BVj8kUGFz
c1JlZlB0ckBWTm9kZUxpc3RAV2ViQ29yZUBAQFdURkBASEhJSUlJX04wMEBaCiAgICAgICAgID9z
ZWxlY3Rpb25TdGFydEhhc01hcmtlckZvckBFZGl0b3JAV2ViQ29yZUBAUUJFX05XNE1hcmtlclR5
cGVARG9jdW1lbnRNYXJrZXJAMkBISEBaCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAg
ICAgICA/d2Via2l0V2lsbEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnRARG9jdW1lbnRAV2ViQ29y
ZUBAUUFFWFBBVkVsZW1lbnRAMkBAWgpAQCAtMTA3OCw3ICsxMDc4LDcgQEAgRVhQT1JUUwogICAg
ICAgICA/PzFDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlckBXZWJDb3JlQEBNQUVAWFoKICAgICAg
ICAgP2NvbnRleHREZXN0cm95ZWRAQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXJAV2ViQ29yZUBA
VUFFWFhaCiAgICAgICAgID8/MENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyQFdlYkNvcmVAQFFB
RUBQQVZTY3JpcHRFeGVjdXRpb25Db250ZXh0QDFAQFoKLSAgICAgICAgP25vZGVzRnJvbVJlY3RA
RG9jdW1lbnRAV2ViQ29yZUBAUUJFP0FWPyRQYXNzUmVmUHRyQFZOb2RlTGlzdEBXZWJDb3JlQEBA
V1RGQEBISElJSUlfTjBAWgorICAgICAgICA/bm9kZXNGcm9tUmVjdEBEb2N1bWVudEBXZWJDb3Jl
QEBRQkU/QVY/JFBhc3NSZWZQdHJAVk5vZGVMaXN0QFdlYkNvcmVAQEBXVEZAQEhISUlJSV9OMDBA
WgogICAgICAgICA/c2VsZWN0aW9uU3RhcnRIYXNNYXJrZXJGb3JARWRpdG9yQFdlYkNvcmVAQFFC
RV9OVzRNYXJrZXJUeXBlQERvY3VtZW50TWFya2VyQDJASEhAWgogI2lmIEVOQUJMRShGVUxMU0NS
RUVOX0FQSSkKICAgICAgICAgP3dlYmtpdFdpbGxFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50QERv
Y3VtZW50QFdlYkNvcmVAQFFBRVhQQVZFbGVtZW50QDJAQFoKQEAgLTE0NjksNyArMTQ2OSw3IEBA
IEVYUE9SVFMKICAgICAgICAgPz8xQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXJAV2ViQ29yZUBA
TUFFQFhaCiAgICAgICAgID9jb250ZXh0RGVzdHJveWVkQENvbnRleHREZXN0cnVjdGlvbk9ic2Vy
dmVyQFdlYkNvcmVAQFVBRVhYWgogICAgICAgICA/PzBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZl
ckBXZWJDb3JlQEBRQUVAUEFWU2NyaXB0RXhlY3V0aW9uQ29udGV4dEAxQEBaCi0gICAgICAgID9u
b2Rlc0Zyb21SZWN0QERvY3VtZW50QFdlYkNvcmVAQFFCRT9BVj8kUGFzc1JlZlB0ckBWTm9kZUxp
c3RAV2ViQ29yZUBAQFdURkBASEhJSUlJX04wQFoKKyAgICAgICAgP25vZGVzRnJvbVJlY3RARG9j
dW1lbnRAV2ViQ29yZUBAUUJFP0FWPyRQYXNzUmVmUHRyQFZOb2RlTGlzdEBXZWJDb3JlQEBAV1RG
QEBISElJSUlfTjAwQFoKICAgICAgICAgP3NlbGVjdGlvblN0YXJ0SGFzTWFya2VyRm9yQEVkaXRv
ckBXZWJDb3JlQEBRQkVfTlc0TWFya2VyVHlwZUBEb2N1bWVudE1hcmtlckAyQEhIQFoKICNpZiBF
TkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgICAgID93ZWJraXRXaWxsRW50ZXJGdWxsU2NyZWVu
Rm9yRWxlbWVudEBEb2N1bWVudEBXZWJDb3JlQEBRQUVYUEFWRWxlbWVudEAyQEBaCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyIGIvU291cmNlL2F1dG90b29scy9z
eW1ib2xzLmZpbHRlcgppbmRleCBjNTlmNTliM2IzMmYxZWIxMGZiMWQyNTFmYTdiMjgxZjU0MGM1
MDZkLi4wNTllNTY5NWMyMzU0OTQ0M2MwMGYxMWYzMTFiNDBkNTA1YTk5ZTM3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCisrKyBiL1NvdXJjZS9hdXRvdG9vbHMv
c3ltYm9scy5maWx0ZXIKQEAgLTE5Niw3ICsxOTYsNyBAQCBfWk43V2ViQ29yZTIyUnVudGltZUVu
YWJsZWRGZWF0dXJlczQwaXNMYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZEU7
CiBfWk43V2ViQ29yZTIyUnVudGltZUVuYWJsZWRGZWF0dXJlczIyaXNEaWFsb2dFbGVtZW50RW5h
YmxlZEU7CiBfWk43V2ViQ29yZTIyUnVudGltZUVuYWJsZWRGZWF0dXJlczM3aXNBdXRob3JTaGFk
b3dET01Gb3JBbnlFbGVtZW50RW5hYmxlZEU7CiBfWk43V2ViQ29yZTIyUnVudGltZUVuYWJsZWRG
ZWF0dXJlczIwaXNTdHlsZVNjb3BlZEVuYWJsZWRFOwotX1pOSzdXZWJDb3JlOERvY3VtZW50MTNu
b2Rlc0Zyb21SZWN0RWlpampqamJiOworX1pOSzdXZWJDb3JlOERvY3VtZW50MTNub2Rlc0Zyb21S
ZWN0RWlpampqamJiYjsKIF9aTjdXZWJDb3JlNHRvSlNFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNfMTdK
U0RPTUdsb2JhbE9iamVjdEVQTlNfOE5vZGVMaXN0RTsKIF9aTks3V2ViQ29yZTZFZGl0b3IyNnNl
bGVjdGlvblN0YXJ0SGFzTWFya2VyRm9yRU5TXzE0RG9jdW1lbnRNYXJrZXIxME1hcmtlclR5cGVF
aWk7CiBfWk43V2ViQ29yZThEb2N1bWVudDMzd2Via2l0RGlkRXhpdEZ1bGxTY3JlZW5Gb3JFbGVt
ZW50RVBOU183RWxlbWVudEU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYjhkOTcxNWVmNmY2N2ZlZGQ2NWYzNzAxYWM5OTE0
Y2JjYjc5ZjU4ZS4uY2EzMDY4ZWFhOTMzNjZhODNiNjYwMTNiMzhlN2NjZDRlNzQ5NjcxZCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIxIEBACisyMDEzLTAxLTA5ICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxh
bGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIEFsbG93IGNoaWxkLWZyYW1lIGNvbnRl
bnQgaW4gaGl0LXRlc3RzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTUyMDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBIG5ldyB0ZXN0cyBmb3Igbm9kZXNGcm9tUmVjdCB0aGF0IHJldHVybnMgcmVzdWx0
IGZyb20gY2hpbGQgZnJhbWVzLgorCisgICAgICAgICogZmFzdC9kb20vbm9kZXNGcm9tUmVjdC9u
b2Rlc0Zyb21SZWN0LWNoaWxkLWZyYW1lLWNvbnRlbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2RvbS9ub2Rlc0Zyb21SZWN0L25vZGVzRnJvbVJlY3QtY2hpbGQtZnJhbWUt
Y29udGVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ub2Rlc0Zyb21SZWN0L25v
ZGVzRnJvbVJlY3QtY29udGludWF0aW9uLWNyYXNoLmh0bWw6CisgICAgICAgICogZmFzdC9kb20v
bm9kZXNGcm9tUmVjdC9yZXNvdXJjZXMvY2hpbGQtZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9kb20vbm9kZXNGcm9tUmVjdC9yZXNvdXJjZXMvbm9kZXNGcm9tUmVjdC5qczoKKyAg
ICAgICAgKGNoZWNrKToKKyAgICAgICAgKGNoZWNrU2hhZG93Q29udGVudCk6CisgICAgICAgIChu
b2Rlc0Zyb21SZWN0QXNTdHJpbmcpOgorCiAyMDEzLTAxLTExICBOb2VsIEdvcmRvbiAgPG5vZWwu
Z29yZG9uQGdtYWlsLmNvbT4KIAogICAgICAgICBbY2hyb21pdW1dIEFkZCBJbWFnZU9ubHlGYWls
dXJlIGZvciBmYXN0L2Nzcy9mb250LWZhY2UtdW5pY29kZS1yYW5nZS5odG1sIG9uIHdpbgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9tUmVjdC9ub2Rlc0Zyb21SZWN0
LWNoaWxkLWZyYW1lLWNvbnRlbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
bm9kZXNGcm9tUmVjdC9ub2Rlc0Zyb21SZWN0LWNoaWxkLWZyYW1lLWNvbnRlbnQtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjljMWM5NzAwYzI1OWJkMjI0OTAwM2EzZTgwMzU0N2UxMjRkY2ZmZmYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2Rlc0Zyb21SZWN0L25v
ZGVzRnJvbVJlY3QtY2hpbGQtZnJhbWUtY29udGVudC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
OCBAQAorCitEb2N1bWVudDo6bm9kZXNGcm9tUmVjdCA6IEFsbG93IGNoaWxkLWZyYW1lIGNvbnRl
bnQgLSBidWcgOTUyMDQKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgQWxs
IGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QKK1BBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91
bmQgZm9yIHJlY3QKK1BBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QKK1BBU1Mg
QWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QKK1BBU1MgQWxsIGNvcnJlY3Qgbm9kZXMg
Zm91bmQgZm9yIHJlY3QKK1BBU1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QKK1BB
U1MgQWxsIGNvcnJlY3Qgbm9kZXMgZm91bmQgZm9yIHJlY3QKK1BBU1MgQWxsIGNvcnJlY3Qgbm9k
ZXMgZm91bmQgZm9yIHJlY3QKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2Rlc0Zyb21S
ZWN0L25vZGVzRnJvbVJlY3QtY2hpbGQtZnJhbWUtY29udGVudC5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vbm9kZXNGcm9tUmVjdC9ub2Rlc0Zyb21SZWN0LWNoaWxkLWZyYW1lLWNvbnRlbnQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hZGI0MTY3YjE3ODAyZGNlYjllMzg2YzU0ZTMxZTU0Njg1YzUxZTk0
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9tUmVjdC9u
b2Rlc0Zyb21SZWN0LWNoaWxkLWZyYW1lLWNvbnRlbnQuaHRtbApAQCAtMCwwICsxLDc3IEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHRpdGxlPkRvY3VtZW50Ojpub2Rl
c0Zyb21SZWN0IDogQWxsb3cgY2hpbGQtZnJhbWUgY29udGVudCAtIGJ1ZyA5NTIwNDwvdGl0bGU+
CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9ub2Rlc0Zyb21SZWN0LmpzIj48L3Nj
cmlwdD4KKyAgICA8c3R5bGU+CisgICAgICAgIGJvZHkgeyBtYXJnaW46IDBweDsgfQorICAgICAg
ICAjc2FuZGJveCB7CisgICAgICAgICAgICB3aWR0aDogNDAwcHg7CisgICAgICAgICAgICBoZWln
aHQ6IDIwMHB4OworICAgICAgICB9CisgICAgICAgICNzYW5kYm94ICNsYXllciB7CisgICAgICAg
ICAgICBmbG9hdDogcmlnaHQ7CisgICAgICAgIH0KKyAgICAgICAgI3NhbmRib3ggaWZyYW1lIHsK
KyAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOworICAgICAgICAgICAgYm94LXNpemluZzogYm9y
ZGVyLWJveDsKKyAgICAgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgICAgIGhlaWdodDog
MjAwcHg7CisgICAgICAgICAgICBib3JkZXI6IG5vbmU7CisgICAgICAgIH0KKyAgICAgICAgLnJv
dGF0ZTE4MCB7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTsgfQorICAgICAgICAu
cm90YXRlOTAgeyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsgfQorICAgICAgICAj
c2FuZGJveCAuYm94IHsKKyAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CisgICAg
ICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgICAgICAgd2lkdGg6IDIwMHB4OworICAgICAg
ICAgICAgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7CisgICAgICAgIH0KKyAgICA8L3N0eWxlPgor
PC9oZWFkPgorPGJvZHkgaWQ9ImJvZHkiPgorICAgIDxkaXYgaWQ9c2FuZGJveD4KKyAgICAgICAg
PGRpdiBpZD1sYXllcj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9ImlmcmFtZTEiIHNyYz0icmVz
b3VyY2VzL2NoaWxkLWZyYW1lLmh0bWwiPjwvaWZyYW1lPgorICAgICAgICA8L2Rpdj4KKyAgICAg
ICAgPGRpdiBpZD1kaXYxIGNsYXNzPWJveD48L2Rpdj4KKyAgICAgICAgPGRpdiBpZD1kaXYyIGNs
YXNzPWJveD48L2Rpdj4KKyAgICA8L2Rpdj4KKworICAgIDxwIGlkPSdkZXNjcmlwdGlvbic+PC9w
PgorICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgIDxzY3JpcHQgdHlwZT0iYXBwbGlj
YXRpb24vamF2YXNjcmlwdCI+CisgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQorICAgICAgICB7
CisgICAgICAgICAgICBkZXNjcmlwdGlvbihkb2N1bWVudC50aXRsZSk7CisKKyAgICAgICAgICAg
IC8vIFNldCB1cCBzaG9ydGN1dCBhY2Nlc3MgdG8gZWxlbWVudHMKKyAgICAgICAgICAgIHZhciBl
ID0ge307CisgICAgICAgICAgICBbJ3NhbmRib3gnLCAnbGF5ZXInXS5mb3JFYWNoKGZ1bmN0aW9u
KGEpIHsKKyAgICAgICAgICAgICAgICBlW2FdID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYSk7
CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgY2hlY2tSZWN0KDI1LCAyNSwgMTAwLCAx
MDAsICJESVYjZGl2MiwgRElWI2RpdjEsIERJViNzYW5kYm94Iik7CisgICAgICAgICAgICBjaGVj
a1JlY3QoMjIwLCAyMCwgNzAsIDcwLCAiRElWI2xlZnQiKTsKKyAgICAgICAgICAgIGNoZWNrUmVj
dCgyNTAsIDIwLCAxMDAsIDcwLCAiRElWI3JpZ2h0LCBESVYjbGVmdCwgSFRNTCIpOworCisgICAg
ICAgICAgICBjaGVja1JlY3QoMTUwLCA1MCwgMTAwLCAxMDAsICJESVYjbGVmdCwgSFRNTCwgI2Rv
Y3VtZW50LCBJRlJBTUUjaWZyYW1lMSwgRElWI2xheWVyLCBESVYjZGl2MiwgRElWI2RpdjEsIERJ
ViNzYW5kYm94Iik7CisKKyAgICAgICAgICAgIGUubGF5ZXIuc2V0QXR0cmlidXRlKCdjbGFzcycs
ICdyb3RhdGUxODAnKTsKKyAgICAgICAgICAgIGNoZWNrUmVjdCgyMjAsIDIwLCA3MCwgNzAsICJE
SVYjcmlnaHQiKTsKKyAgICAgICAgICAgIGNoZWNrUmVjdCgxNTAsIDUwLCAxMDAsIDEwMCwgIkRJ
ViNyaWdodCwgSFRNTCwgI2RvY3VtZW50LCBJRlJBTUUjaWZyYW1lMSwgRElWI2xheWVyLCBESVYj
ZGl2MiwgRElWI2RpdjEsIERJViNzYW5kYm94Iik7CisKKyAgICAgICAgICAgIGUubGF5ZXIuc2V0
QXR0cmlidXRlKCdjbGFzcycsICdyb3RhdGU5MCcpOworICAgICAgICAgICAgY2hlY2tSZWN0KDI1
MCwgMjAsIDEwMCwgNzAsICJESVYjbGVmdCIpOworICAgICAgICAgICAgY2hlY2tSZWN0KDE1MCwg
MjAsIDIwMCwgNjAsICJESVYjbGVmdCwgSFRNTCwgI2RvY3VtZW50LCBJRlJBTUUjaWZyYW1lMSwg
RElWI2xheWVyLCBESVYjZGl2MSwgRElWI3NhbmRib3giKTsKKworICAgICAgICAgICAgZS5zYW5k
Ym94LmRpc3BsYXkgPSAnbm9uZSc7CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAg
ICAgfQorICAgICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICAgICAgd2luZG93Lm9ubG9h
ZCA9IHJ1blRlc3Q7CisgICAgPC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9tUmVjdC9ub2Rlc0Zyb21SZWN0
LWNvbnRpbnVhdGlvbi1jcmFzaC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9t
UmVjdC9ub2Rlc0Zyb21SZWN0LWNvbnRpbnVhdGlvbi1jcmFzaC5odG1sCmluZGV4IGFmZmE1ZTUx
MWVjNzdmZDQwMDJjYmYxNjk5OTRmMmQwNWRjNTQ2OGEuLmMxNmNkODJhMTljYWZhZTU1NWRiZGI2
YzJlOTFhMzdhZDNiYjI2OGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVz
RnJvbVJlY3Qvbm9kZXNGcm9tUmVjdC1jb250aW51YXRpb24tY3Jhc2guaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9ub2Rlc0Zyb21SZWN0L25vZGVzRnJvbVJlY3QtY29udGludWF0aW9u
LWNyYXNoLmh0bWwKQEAgLTcsNyArNyw3IEBAIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKIHdpbmRv
dy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKICAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMpCiAgICAg
ICAgIGFsZXJ0KCJUaGlzIHRlc3QgcmVxdWlyZXMgd2luZG93LmludGVybmFscyIpOwotICAgIHZh
ciBub2RlcyA9IGludGVybmFscy5ub2Rlc0Zyb21SZWN0KGRvY3VtZW50LCAxMDAsIDEwMCwgMjAs
IDIwLCAyMCwgMjAsIGZhbHNlLCBmYWxzZSk7CisgICAgdmFyIG5vZGVzID0gaW50ZXJuYWxzLm5v
ZGVzRnJvbVJlY3QoZG9jdW1lbnQsIDEwMCwgMTAwLCAyMCwgMjAsIDIwLCAyMCwgZmFsc2UsIGZh
bHNlLCBmYWxzZSk7CiAgICAgYWxlcnQoIlBBU1M6IFRoaXMgdGVzdCBkaWQgbm90IHRyaWdnZXIg
YW4gQVNTRVJUIik7CiB9OwogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9ub2Rlc0Zyb21SZWN0L3Jlc291cmNlcy9jaGlsZC1mcmFtZS5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vbm9kZXNGcm9tUmVjdC9yZXNvdXJjZXMvY2hpbGQtZnJhbWUuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yMDRkN2ZhYWRiYjk4NjY3YmZlYzRhNDcyN2M4ZGEyODczNjMzZTY5Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9tUmVjdC9yZXNvdXJjZXMv
Y2hpbGQtZnJhbWUuaHRtbApAQCAtMCwwICsxLDI3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgIGJvZHkgeyBtYXJnaW46IDBw
eDsgfQorICAgIGRpdiB7IAorICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OworICAgICAg
ICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKKyAgICB9CisgICAgI2xlZnQgeworICAgICAgICBm
bG9hdDpsZWZ0OworICAgICAgICB3aWR0aDogOTBweDsKKyAgICAgICAgaGVpZ2h0OiAxOTBweDsK
KyAgICB9CisgICAgI3JpZ2h0IHsKKyAgICAgICAgZmxvYXQ6cmlnaHQ7CisgICAgICAgIHdpZHRo
OiA5MHB4OworICAgICAgICBoZWlnaHQ6IDE5MHB4OworICAgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+
Cis8Ym9keT4KKyAgICA8ZGl2IGlkPWxlZnQ+PC9kaXY+CisgICAgPGRpdiBpZD1yaWdodD48L2Rp
dj4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
bm9kZXNGcm9tUmVjdC9yZXNvdXJjZXMvbm9kZXNGcm9tUmVjdC5qcyBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL25vZGVzRnJvbVJlY3QvcmVzb3VyY2VzL25vZGVzRnJvbVJlY3QuanMKaW5kZXggZDAy
YzFjN2RiNDllNjgzZTgwMzUwNzZkODI0MDEyNzUxNWY3YWIwNC4uYTcyODdjOGI0OTdkYjRiMTgw
YzY1NzZiNTFkOWM4Yjk1OGY5NTIzNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
bm9kZXNGcm9tUmVjdC9yZXNvdXJjZXMvbm9kZXNGcm9tUmVjdC5qcworKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9ub2Rlc0Zyb21SZWN0L3Jlc291cmNlcy9ub2Rlc0Zyb21SZWN0LmpzCkBAIC0x
LDcgKzEsOCBAQAogLyoKICAqIENvbnRyaWJ1dG9yczoKICAqICAgICAqIEFudG9uaW8gR29tZXMg
PHRvbmlraXRvb0B3ZWJraXQub3JnPgotICoqLworICogICAgICogQWxsYW4gU2FuZGZlbGQgSmVu
c2VuIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorKiovCiAKIGZ1bmN0aW9uIGNoZWNrKHgsIHks
IHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcsIGxp
c3QsIGRvYykKIHsKQEAgLTExLDcgKzEyLDcgQEAgZnVuY3Rpb24gY2hlY2soeCwgeSwgdG9wUGFk
ZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0UGFkZGluZywgbGlzdCwKICAg
aWYgKCFkb2MpCiAgICAgZG9jID0gZG9jdW1lbnQ7CiAKLSAgdmFyIG5vZGVzID0gaW50ZXJuYWxz
Lm5vZGVzRnJvbVJlY3QoZG9jLCB4LCB5LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRv
bVBhZGRpbmcsIGxlZnRQYWRkaW5nLCB0cnVlIC8qIGlnbm9yZUNsaXBwaW5nICovLCBmYWxzZSAv
KiBhbGxvdyBzaGFkb3cgY29udGVudCAqLyk7CisgIHZhciBub2RlcyA9IGludGVybmFscy5ub2Rl
c0Zyb21SZWN0KGRvYywgeCwgeSwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRk
aW5nLCBsZWZ0UGFkZGluZywgdHJ1ZSAvKiBpZ25vcmVDbGlwcGluZyAqLywgZmFsc2UgLyogYWxs
b3cgc2hhZG93IGNvbnRlbnQgKi8sIGZhbHNlIC8qIGFsbG93IGNoaWxkLWZyYW1lIGNvbnRlbnQg
Ki8pOwogICBpZiAoIW5vZGVzKQogICAgIHJldHVybjsKIApAQCAtNDUsNyArNDYsNyBAQCBmdW5j
dGlvbiBjaGVja1NoYWRvd0NvbnRlbnQoeCwgeSwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBi
b3R0b21QYWRkaW5nLCBsZWZ0UAogICBpZiAoIWRvYykKICAgICBkb2MgPSBkb2N1bWVudDsKIAot
ICB2YXIgbm9kZXMgPSBpbnRlcm5hbHMubm9kZXNGcm9tUmVjdChkb2MsIHgsIHksIHRvcFBhZGRp
bmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcsIHRydWUgLyogaWdu
b3JlQ2xpcHBpbmcgKi8sIHRydWUgLyogYWxsb3dTaGFkb3dDb250ZW50ICovKTsKKyAgdmFyIG5v
ZGVzID0gaW50ZXJuYWxzLm5vZGVzRnJvbVJlY3QoZG9jLCB4LCB5LCB0b3BQYWRkaW5nLCByaWdo
dFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nLCB0cnVlIC8qIGlnbm9yZUNsaXBw
aW5nICovLCB0cnVlIC8qIGFsbG93U2hhZG93Q29udGVudCAqLywgZmFsc2UgLyogYWxsb3cgY2hp
bGQtZnJhbWUgY29udGVudCAqLyk7CiAgIGlmICghbm9kZXMpCiAgICAgcmV0dXJuOwogCkBAIC05
Niw3ICs5Nyw3IEBAIGZ1bmN0aW9uIGNoZWNrUmVjdChsZWZ0LCB0b3AsIHdpZHRoLCBoZWlnaHQs
IGV4cGVjdGVkTm9kZVN0cmluZywgZG9jKQogZnVuY3Rpb24gbm9kZXNGcm9tUmVjdEFzU3RyaW5n
KGRvYywgeCwgeSwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0
UGFkZGluZykKIHsKICAgICB2YXIgbm9kZVN0cmluZyA9ICIiOwotICAgIHZhciBub2RlcyA9IGlu
dGVybmFscy5ub2Rlc0Zyb21SZWN0KGRvYywgeCwgeSwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5n
LCBib3R0b21QYWRkaW5nLCBsZWZ0UGFkZGluZywgdHJ1ZSAvKiBpZ25vcmVDbGlwcGluZyAqLywg
ZmFsc2UgLyogYWxsb3cgc2hhZG93IGNvbnRlbnQgKi8pOworICAgIHZhciBub2RlcyA9IGludGVy
bmFscy5ub2Rlc0Zyb21SZWN0KGRvYywgeCwgeSwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBi
b3R0b21QYWRkaW5nLCBsZWZ0UGFkZGluZywgdHJ1ZSAvKiBpZ25vcmVDbGlwcGluZyAqLywgZmFs
c2UgLyogYWxsb3cgc2hhZG93IGNvbnRlbnQgKi8sIHRydWUgLyogYWxsb3cgY2hpbGQtZnJhbWUg
Y29udGVudCAqLyk7CiAgICAgaWYgKCFub2RlcykKICAgICAgICAgcmV0dXJuIG5vZGVTdHJpbmc7
CiAKQEAgLTExMCw2ICsxMTEsOCBAQCBmdW5jdGlvbiBub2Rlc0Zyb21SZWN0QXNTdHJpbmcoZG9j
LCB4LCB5LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbgogICAgICAgICAg
ICAgfQogICAgICAgICB9IGVsc2UgaWYgKG5vZGVzW2ldLm5vZGVUeXBlID09IDMpIHsKICAgICAg
ICAgICAgIG5vZGVTdHJpbmcgKz0gIiciICsgbm9kZXNbaV0uZGF0YSArICInIjsKKyAgICAgICAg
fSBlbHNlIGlmIChub2Rlc1tpXS5ub2RlVHlwZSA9PSA5KSB7CisgICAgICAgICAgICBub2RlU3Ry
aW5nICs9ICIjZG9jdW1lbnQiOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIH0KQEAgLTEyMCw3ICsxMjMsNiBAQCBmdW5jdGlvbiBub2Rlc0Zyb21SZWN0
QXNTdHJpbmcoZG9jLCB4LCB5LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRp
bgogICAgIHJldHVybiBub2RlU3RyaW5nOwogfQogCi0KIGZ1bmN0aW9uIGdldENlbnRlckZvcihl
bGVtZW50KQogewogICB2YXIgcmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7
CmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggZTk2NTJkZjI1MjU0MzJm
ZmJlNTBkMjExYWQ3ODYzYzI4OGRlZGM3OS4uYjgyZTk4NmUwYjVhZWZlNGUwY2U2YjhjY2UxMGIx
YjNlNjY5MTc3YyAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0IEBACisyMDEzLTAxLTA5ICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5z
ZW5AZGlnaWEuY29tPgorCisgICAgICAgIEFsbG93IGNoaWxkLWZyYW1lIGNvbnRlbnQgaW4gaGl0
LXRlc3RzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTUyMDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
cGRhdGUgZXhwb3J0ZWQgc3ltYm9scy4KKworICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMvc3lt
Ym9scy5maWx0ZXI6CisKIDIwMTMtMDEtMTAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNp
YUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIEFkZCBBUEkgdG8gc2V0IHRoZSB3ZWIgZXh0
ZW5zaW9ucyBkaXJlY3RvcnkgdG8gV2ViS2l0MiBHVEsrCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188526</attachid>
            <date>2013-02-15 03:36:56 -0800</date>
            <delta_ts>2013-02-19 03:15:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95204-20130215123239.patch</filename>
            <type>text/plain</type>
            <size>29615</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyOTc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGFjM2I3ZGEwMWViNDkw
ZGIyNzFiMThiODFiMGMyMDY1MTJkNDUyNi4uOGQ4NzgxYTI0ZDRmOWIwOTQ3ZTEwNjIxMDY5ZjMz
NTAzMmVhY2U2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDEzLTAxLTA5ICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIEFs
bG93IGNoaWxkLWZyYW1lIGNvbnRlbnQgaW4gaGl0LXRlc3RzLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUyMDQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvcnMgaG93IEV2ZW50SGFuZGxlcjo6
aGl0VGVzdFJlc3VsdEF0UG9pbnQgaGFuZGxlcyBjaGlsZC1mcmFtZSBjb250ZW50LAorICAgICAg
ICBpdCBpcyBub3cgaGFuZGxlZCBieSB0aGUgaGl0IHRlc3QgaXRzZWxmIGNvbnRyb2xsZWQgYnkg
dGhlIEFsbG93Q2hpbGRGcmFtZUNvbnRlbnQKKyAgICAgICAgZmxhZyBpbiBIaXRUZXN0UmVxdWVz
dC4KKworICAgICAgICBUaGlzIG1lYW5zIHRoYXQgYXJlYS1iYXNlZCBoaXQtdGVzdHMgY2FuIG5v
dyByZXR1cm4gZWxlbWVudHMgZnJvbSBhbGwgdGhlIGNoaWxkIGZyYW1lcworICAgICAgICB0aGV5
IGludGVyc2VjdCBpbnN0ZWFkIG9mIGp1c3QgdGhlIG9uZSBmcmFtZSBjb250YWluaW5nIHRoZSBj
ZW50ZXIgcG9pbnQuIFRoZSBpbXByb3ZlZAorICAgICAgICByZXN1bHRzIGZyb20gYXJlYS1iYXNl
ZCBoaXQtdGVzdHMgd2lsbCBhbW9uZyBvdGhlciB0aGluZ3MgYWxzbyBpbXByb3ZlIHRvdWNoIGFk
anVzdG1lbnQKKyAgICAgICAgbmVhciBmcmFtZSBib3VuZGFyaWVzLgorCisgICAgICAgIFRlc3Rz
OiBmYXN0L2RvbS9ub2Rlc0Zyb21SZWN0L25vZGVzRnJvbVJlY3QtY2hpbGQtZnJhbWUtY29udGVu
dC5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLm9y
ZGVyOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6bm9kZXNGcm9tUmVjdCk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAg
IChEb2N1bWVudCk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoaXRUZXN0UmVzdWx0QXRQb2ludCk6CisgICAgICAgICog
cGFnZS9Ub3VjaEFkanVzdG1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VG91Y2hBZGp1c3Rt
ZW50OjpwYXJlbnRIb3N0T3JPd25lcik6CisgICAgICAgIChUb3VjaEFkanVzdG1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6VG91Y2hBZGp1c3RtZW50Ojpjb21waWxlU3VidGFyZ2V0TGlzdCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXF1ZXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpI
aXRUZXN0UmVxdWVzdDo6YWxsb3dzQ2hpbGRGcmFtZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SGl0VGVzdFJlcXVlc3Q6OmlzQ2hpbGRGcmFtZUhpdFRlc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SGl0VGVzdFJlcXVlc3Q6OnNob3VsZFRlc3RDaGlsZEZyYW1lU2Nyb2xsQmFycyk6CisgICAg
ICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGl0
VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVz
dWx0OjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6YXBwZW5k
KToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OmRpY3RhdGlvbkFsdGVybmF0aXZl
cyk6CisgICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkhpdFRlc3RSZXN1bHQ6OnBvaW50SW5NYWluRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6
SGl0VGVzdFJlc3VsdDo6cG9pbnRJbklubmVyTm9kZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OkhpdFRlc3RSZXN1bHQ6OnNldFBvaW50SW5Jbm5lck5vZGVGcmFtZSk6CisgICAgICAgIChIaXRU
ZXN0UmVzdWx0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYW1lQmFzZTo6bm9kZUF0UG9pbnQpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuaDoKKyAgICAgICAgKFJlbmRlckZyYW1lQmFzZSk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyOjpoaXRUZXN0KToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Om5vZGVzRnJvbVJlY3QpOgorICAgICAgICAq
IHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgIChJbnRlcm5hbHMpOgorICAgICAgICAqIHRl
c3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxMy0wMi0xNSAgQWxsYW4gU2FuZGZlbGQgSmVuc2Vu
ICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KIAogICAgICAgICBTaW1wbGlmeSBoaXRUZXN0UmVz
dWx0QXRQb2ludCBhbmQgbm9kZXNGcm9tUmVjdCBBUElzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFu
ZGxlci5jcHAKaW5kZXggYjZmMWEyMDQ3ZGJmZDVlNjYxZTBhNDAxNjdmZjM4YmYyYWE0ZGQzYS4u
NGRlY2Y1ZTU0MGJmMGE1YzBhODZlYWUwZTE5ZWM3OWNhMGQ0Y2Q3ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMTAyMiwzNSArMTAyMiwxMCBAQCBIaXRUZXN0UmVzdWx0
IEV2ZW50SGFuZGxlcjo6aGl0VGVzdFJlc3VsdEF0UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBv
aW50LCBIaXRUZQogICAgIGlmICghbV9mcmFtZS0+Y29udGVudFJlbmRlcmVyKCkpCiAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAKLSAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KGhpdFR5cGUpOwor
ICAgIC8vIGhpdFRlc3RSZXN1bHRBdFBvaW50IGlzIHNwZWNpZmljYWxseSB1c2VkIHRvIGhpdFRl
c3QgaW50byBhbGwgZnJhbWVzLCB0aHVzIGl0IGFsd2F5cyBhbGxvd3MgY2hpbGQgZnJhbWUgY29u
dGVudC4KKyAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KGhpdFR5cGUgfCBIaXRUZXN0UmVxdWVz
dDo6QWxsb3dDaGlsZEZyYW1lQ29udGVudCk7CiAgICAgbV9mcmFtZS0+Y29udGVudFJlbmRlcmVy
KCktPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0KTsKIAotICAgIHdoaWxlICh0cnVlKSB7Ci0gICAg
ICAgIE5vZGUqIG4gPSByZXN1bHQuaW5uZXJOb2RlKCk7Ci0gICAgICAgIGlmICghcmVzdWx0Lmlz
T3ZlcldpZGdldCgpIHx8ICFuIHx8ICFuLT5yZW5kZXJlcigpIHx8ICFuLT5yZW5kZXJlcigpLT5p
c1dpZGdldCgpKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIFJlbmRlcldpZGdldCogcmVu
ZGVyV2lkZ2V0ID0gdG9SZW5kZXJXaWRnZXQobi0+cmVuZGVyZXIoKSk7Ci0gICAgICAgIFdpZGdl
dCogd2lkZ2V0ID0gcmVuZGVyV2lkZ2V0LT53aWRnZXQoKTsKLSAgICAgICAgaWYgKCF3aWRnZXQg
fHwgIXdpZGdldC0+aXNGcmFtZVZpZXcoKSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBG
cmFtZSogZnJhbWUgPSBzdGF0aWNfY2FzdDxIVE1MRnJhbWVFbGVtZW50QmFzZSo+KG4pLT5jb250
ZW50RnJhbWUoKTsKLSAgICAgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmNvbnRlbnRSZW5kZXJl
cigpKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIEZyYW1lVmlldyogdmlldyA9IHN0YXRp
Y19jYXN0PEZyYW1lVmlldyo+KHdpZGdldCk7Ci0gICAgICAgIExheW91dFBvaW50IHdpZGdldFBv
aW50KHJlc3VsdC5sb2NhbFBvaW50KCkueCgpICsgdmlldy0+c2Nyb2xsWCgpIC0gcmVuZGVyV2lk
Z2V0LT5ib3JkZXJMZWZ0KCkgLSByZW5kZXJXaWRnZXQtPnBhZGRpbmdMZWZ0KCksIAotICAgICAg
ICAgICAgcmVzdWx0LmxvY2FsUG9pbnQoKS55KCkgKyB2aWV3LT5zY3JvbGxZKCkgLSByZW5kZXJX
aWRnZXQtPmJvcmRlclRvcCgpIC0gcmVuZGVyV2lkZ2V0LT5wYWRkaW5nVG9wKCkpOwotICAgICAg
ICBIaXRUZXN0UmVzdWx0IHdpZGdldEhpdFRlc3RSZXN1bHQod2lkZ2V0UG9pbnQsIHBhZGRpbmcu
aGVpZ2h0KCksIHBhZGRpbmcud2lkdGgoKSwgcGFkZGluZy5oZWlnaHQoKSwgcGFkZGluZy53aWR0
aCgpKTsKLSAgICAgICAgd2lkZ2V0SGl0VGVzdFJlc3VsdC5zZXRQb2ludEluTWFpbkZyYW1lKHJl
c3VsdC5wb2ludEluTWFpbkZyYW1lKCkpOwotICAgICAgICBmcmFtZS0+Y29udGVudFJlbmRlcmVy
KCktPmhpdFRlc3QocmVxdWVzdCwgd2lkZ2V0SGl0VGVzdFJlc3VsdCk7Ci0gICAgICAgIHJlc3Vs
dCA9IHdpZGdldEhpdFRlc3RSZXN1bHQ7Ci0KLSAgICAgICAgaWYgKHJlcXVlc3QuYWxsb3dzRnJh
bWVTY3JvbGxiYXJzKCkpIHsKLSAgICAgICAgICAgIFNjcm9sbGJhciogZXZlbnRTY3JvbGxiYXIg
PSB2aWV3LT5zY3JvbGxiYXJBdFBvaW50KHJvdW5kZWRJbnRQb2ludChwb2ludCkpOwotICAgICAg
ICAgICAgaWYgKGV2ZW50U2Nyb2xsYmFyKQotICAgICAgICAgICAgICAgIHJlc3VsdC5zZXRTY3Jv
bGxiYXIoZXZlbnRTY3JvbGxiYXIpOwotICAgICAgICB9Ci0gICAgfQotCiAgICAgaWYgKCFyZXF1
ZXN0LmFsbG93c1NoYWRvd0NvbnRlbnQoKSkKICAgICAgICAgcmVzdWx0LnNldFRvTm9uU2hhZG93
QW5jZXN0b3IoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Ub3VjaEFkanVz
dG1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Ub3VjaEFkanVzdG1lbnQuY3BwCmluZGV4
IGYyODE4NzU4NDllZjA2ODllZTE4NThmNGJmZDVlMWQ2NWU5MWNhNmUuLmY2Y2JhMjUxNTVlMGM4
YTE2ZmQ1YTk1Zjk3ODUzYjVjZDhjMzZjNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvVG91Y2hBZGp1c3RtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoQWRq
dXN0bWVudC5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCiAj
aW5jbHVkZSAiRmxvYXRRdWFkLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAi
SFRNTEZyYW1lT3duZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgog
I2luY2x1ZGUgIkhUTUxMYWJlbEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKQEAg
LTIyMSw2ICsyMjIsMTUgQEAgc3RhdGljIGlubGluZSB2b2lkIGFwcGVuZFpvb21hYmxlU3VidGFy
Z2V0cyhOb2RlKiBub2RlLCBTdWJ0YXJnZXRHZW9tZXRyeUxpc3QmIHMKICAgICAgICAgc3VidGFy
Z2V0cy5hcHBlbmQoU3VidGFyZ2V0R2VvbWV0cnkobm9kZSwgKml0KSk7CiB9CiAKK3N0YXRpYyBp
bmxpbmUgTm9kZSogcGFyZW50U2hhZG93SG9zdE9yT3duZXIoY29uc3QgTm9kZSogbm9kZSkKK3sK
KyAgICBpZiAoTm9kZSogYW5jZXN0b3IgPSBub2RlLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkp
CisgICAgICAgIHJldHVybiBhbmNlc3RvcjsKKyAgICBpZiAobm9kZS0+aXNEb2N1bWVudE5vZGUo
KSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IERvY3VtZW50Kj4obm9kZSktPm93
bmVyRWxlbWVudCgpOworICAgIHJldHVybiAwOworfQorCiAvLyBDb21waWxlcyBhIGxpc3Qgb2Yg
c3VidGFyZ2V0cyBvZiBhbGwgdGhlIHJlbGV2YW50IHRhcmdldCBub2Rlcy4KIHZvaWQgY29tcGls
ZVN1YnRhcmdldExpc3QoY29uc3QgTm9kZUxpc3QmIGludGVyc2VjdGVkTm9kZXMsIFN1YnRhcmdl
dEdlb21ldHJ5TGlzdCYgc3VidGFyZ2V0cywgTm9kZUZpbHRlciBub2RlRmlsdGVyLCBBcHBlbmRT
dWJ0YXJnZXRzRm9yTm9kZSBhcHBlbmRTdWJ0YXJnZXRzRm9yTm9kZSkKIHsKQEAgLTI0OCw3ICsy
NTgsNyBAQCB2b2lkIGNvbXBpbGVTdWJ0YXJnZXRMaXN0KGNvbnN0IE5vZGVMaXN0JiBpbnRlcnNl
Y3RlZE5vZGVzLCBTdWJ0YXJnZXRHZW9tZXRyeUxpcwogICAgICAgICAgICAgaWYgKG5vZGVGaWx0
ZXIodmlzaXRlZE5vZGUpKSB7CiAgICAgICAgICAgICAgICAgcmVzcG9uZGluZ05vZGUgPSB2aXNp
dGVkTm9kZTsKICAgICAgICAgICAgICAgICAvLyBDb250aW51ZSB0aGUgaXRlcmF0aW9uIHRvIGNv
bGxlY3QgdGhlIGFuY2VzdG9ycyBvZiB0aGUgcmVzcG9uZGVyLCB3aGljaCB3ZSB3aWxsIG5lZWQg
bGF0ZXIuCi0gICAgICAgICAgICAgICAgZm9yICh2aXNpdGVkTm9kZSA9IHZpc2l0ZWROb2RlLT5w
YXJlbnRPclNoYWRvd0hvc3ROb2RlKCk7IHZpc2l0ZWROb2RlOyB2aXNpdGVkTm9kZSA9IHZpc2l0
ZWROb2RlLT5wYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkpIHsKKyAgICAgICAgICAgICAgICBmb3Ig
KHZpc2l0ZWROb2RlID0gcGFyZW50U2hhZG93SG9zdE9yT3duZXIodmlzaXRlZE5vZGUpOyB2aXNp
dGVkTm9kZTsgdmlzaXRlZE5vZGUgPSBwYXJlbnRTaGFkb3dIb3N0T3JPd25lcih2aXNpdGVkTm9k
ZSkpIHsKICAgICAgICAgICAgICAgICAgICAgSGFzaFNldDxOb2RlKj46OkFkZFJlc3VsdCBhZGRS
ZXN1bHQgPSBhbmNlc3RvcnNUb1Jlc3BvbmRlcnNTZXQuYWRkKHZpc2l0ZWROb2RlKTsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hp
dFRlc3RSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlcXVlc3Qu
aAppbmRleCAxOTFjYzVjNzNlYTc2ODNiNmU1MWU0NTEyNjhjMjMxMTM3OWJiMjdmLi4yMmU1ZDM3
NmM4Yjg2NTNkZjlhMjczNjRiZGQ2ZjkwZmU3NzI2ZDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvSGl0VGVzdFJlcXVlc3QuaApAQCAtMzYsNyArMzYsOSBAQCBwdWJsaWM6CiAgICAgICAg
IFNWR0NsaXBDb250ZW50ID0gMSA8PCA2LAogICAgICAgICBUb3VjaEV2ZW50ID0gMSA8PCA3LAog
ICAgICAgICBBbGxvd1NoYWRvd0NvbnRlbnQgPSAxIDw8IDgsCi0gICAgICAgIEFsbG93RnJhbWVT
Y3JvbGxiYXJzID0gMSA8PCA5CisgICAgICAgIEFsbG93RnJhbWVTY3JvbGxiYXJzID0gMSA8PCA5
LAorICAgICAgICBBbGxvd0NoaWxkRnJhbWVDb250ZW50ID0gMSA8PCAxMCwKKyAgICAgICAgQ2hp
bGRGcmFtZUhpdFRlc3QgPSAxIDw8IDExCiAgICAgfTsKIAogICAgIHR5cGVkZWYgdW5zaWduZWQg
SGl0VGVzdFJlcXVlc3RUeXBlOwpAQCAtNTYsNiArNTgsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBt
b3VzZUV2ZW50KCkgY29uc3QgeyByZXR1cm4gIXRvdWNoRXZlbnQoKTsgfQogICAgIGJvb2wgYWxs
b3dzU2hhZG93Q29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdFR5cGUgJiBBbGxvd1No
YWRvd0NvbnRlbnQ7IH0KICAgICBib29sIGFsbG93c0ZyYW1lU2Nyb2xsYmFycygpIGNvbnN0IHsg
cmV0dXJuIG1fcmVxdWVzdFR5cGUgJiBBbGxvd0ZyYW1lU2Nyb2xsYmFyczsgfQorICAgIGJvb2wg
YWxsb3dzQ2hpbGRGcmFtZUNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RUeXBlICYg
QWxsb3dDaGlsZEZyYW1lQ29udGVudDsgfQorICAgIGJvb2wgaXNDaGlsZEZyYW1lSGl0VGVzdCgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdFR5cGUgJiBDaGlsZEZyYW1lSGl0VGVzdDsgfQogCiAg
ICAgLy8gQ29udmVuaWVuY2UgZnVuY3Rpb25zCiAgICAgYm9vbCB0b3VjaE1vdmUoKSBjb25zdCB7
IHJldHVybiBtb3ZlKCkgJiYgdG91Y2hFdmVudCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSGl0VGVzdFJlc3VsdC5jcHAKaW5kZXggZWFjYmM2NWJmZjk5N2U3OGFhZjVmNTM2MDgwMTE3
ZjQ4ZWM2NTkwZS4uYTVmZTNhMDEwNTdmNTg1NTI2NmNjZjc2YzlkYzQ3ODczYzFmZjRhOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcApAQCAtMTk5LDIxICsx
OTksMjEgQEAgSGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3VsdCgpCiAKIEhpdFRlc3RSZXN1bHQ6
OkhpdFRlc3RSZXN1bHQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KQogICAgIDogbV9oaXRUZXN0
TG9jYXRpb24ocG9pbnQpCi0gICAgLCBtX3BvaW50SW5NYWluRnJhbWUocG9pbnQpCisgICAgLCBt
X3BvaW50SW5Jbm5lck5vZGVGcmFtZShwb2ludCkKICAgICAsIG1faXNPdmVyV2lkZ2V0KGZhbHNl
KQogewogfQogCiBIaXRUZXN0UmVzdWx0OjpIaXRUZXN0UmVzdWx0KGNvbnN0IExheW91dFBvaW50
JiBjZW50ZXJQb2ludCwgdW5zaWduZWQgdG9wUGFkZGluZywgdW5zaWduZWQgcmlnaHRQYWRkaW5n
LCB1bnNpZ25lZCBib3R0b21QYWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGluZykKICAgICA6IG1f
aGl0VGVzdExvY2F0aW9uKGNlbnRlclBvaW50LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJv
dHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nKQotICAgICwgbV9wb2ludEluTWFpbkZyYW1lKGNlbnRl
clBvaW50KQorICAgICwgbV9wb2ludEluSW5uZXJOb2RlRnJhbWUoY2VudGVyUG9pbnQpCiAgICAg
LCBtX2lzT3ZlcldpZGdldChmYWxzZSkKIHsKIH0KIAogSGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJl
c3VsdChjb25zdCBIaXRUZXN0TG9jYXRpb24mIG90aGVyKQogICAgIDogbV9oaXRUZXN0TG9jYXRp
b24ob3RoZXIpCi0gICAgLCBtX3BvaW50SW5NYWluRnJhbWUobV9oaXRUZXN0TG9jYXRpb24ucG9p
bnQoKSkKKyAgICAsIG1fcG9pbnRJbklubmVyTm9kZUZyYW1lKG1faGl0VGVzdExvY2F0aW9uLnBv
aW50KCkpCiAgICAgLCBtX2lzT3ZlcldpZGdldChmYWxzZSkKIHsKIH0KQEAgLTIyMiw3ICsyMjIs
NyBAQCBIaXRUZXN0UmVzdWx0OjpIaXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RSZXN1bHQmIG90
aGVyKQogICAgIDogbV9oaXRUZXN0TG9jYXRpb24ob3RoZXIubV9oaXRUZXN0TG9jYXRpb24pCiAg
ICAgLCBtX2lubmVyTm9kZShvdGhlci5pbm5lck5vZGUoKSkKICAgICAsIG1faW5uZXJOb25TaGFy
ZWROb2RlKG90aGVyLmlubmVyTm9uU2hhcmVkTm9kZSgpKQotICAgICwgbV9wb2ludEluTWFpbkZy
YW1lKG90aGVyLm1fcG9pbnRJbk1haW5GcmFtZSkKKyAgICAsIG1fcG9pbnRJbklubmVyTm9kZUZy
YW1lKG90aGVyLm1fcG9pbnRJbklubmVyTm9kZUZyYW1lKQogICAgICwgbV9sb2NhbFBvaW50KG90
aGVyLmxvY2FsUG9pbnQoKSkKICAgICAsIG1faW5uZXJVUkxFbGVtZW50KG90aGVyLlVSTEVsZW1l
bnQoKSkKICAgICAsIG1fc2Nyb2xsYmFyKG90aGVyLnNjcm9sbGJhcigpKQpAQCAtMjQxLDcgKzI0
MSw3IEBAIEhpdFRlc3RSZXN1bHQmIEhpdFRlc3RSZXN1bHQ6Om9wZXJhdG9yPShjb25zdCBIaXRU
ZXN0UmVzdWx0JiBvdGhlcikKICAgICBtX2hpdFRlc3RMb2NhdGlvbiA9IG90aGVyLm1faGl0VGVz
dExvY2F0aW9uOwogICAgIG1faW5uZXJOb2RlID0gb3RoZXIuaW5uZXJOb2RlKCk7CiAgICAgbV9p
bm5lck5vblNoYXJlZE5vZGUgPSBvdGhlci5pbm5lck5vblNoYXJlZE5vZGUoKTsKLSAgICBtX3Bv
aW50SW5NYWluRnJhbWUgPSBvdGhlci5tX3BvaW50SW5NYWluRnJhbWU7CisgICAgbV9wb2ludElu
SW5uZXJOb2RlRnJhbWUgPSBvdGhlci5tX3BvaW50SW5Jbm5lck5vZGVGcmFtZTsKICAgICBtX2xv
Y2FsUG9pbnQgPSBvdGhlci5sb2NhbFBvaW50KCk7CiAgICAgbV9pbm5lclVSTEVsZW1lbnQgPSBv
dGhlci5VUkxFbGVtZW50KCk7CiAgICAgbV9zY3JvbGxiYXIgPSBvdGhlci5zY3JvbGxiYXIoKTsK
QEAgLTczNSw3ICs3MzUsNyBAQCB2b2lkIEhpdFRlc3RSZXN1bHQ6OmFwcGVuZChjb25zdCBIaXRU
ZXN0UmVzdWx0JiBvdGhlcikKICAgICAgICAgbV9pbm5lck5vZGUgPSBvdGhlci5pbm5lck5vZGUo
KTsKICAgICAgICAgbV9pbm5lck5vblNoYXJlZE5vZGUgPSBvdGhlci5pbm5lck5vblNoYXJlZE5v
ZGUoKTsKICAgICAgICAgbV9sb2NhbFBvaW50ID0gb3RoZXIubG9jYWxQb2ludCgpOwotICAgICAg
ICBtX3BvaW50SW5NYWluRnJhbWUgPSBvdGhlci5tX3BvaW50SW5NYWluRnJhbWU7CisgICAgICAg
IG1fcG9pbnRJbklubmVyTm9kZUZyYW1lID0gb3RoZXIubV9wb2ludEluSW5uZXJOb2RlRnJhbWU7
CiAgICAgICAgIG1faW5uZXJVUkxFbGVtZW50ID0gb3RoZXIuVVJMRWxlbWVudCgpOwogICAgICAg
ICBtX3Njcm9sbGJhciA9IG90aGVyLnNjcm9sbGJhcigpOwogICAgICAgICBtX2lzT3ZlcldpZGdl
dCA9IG90aGVyLmlzT3ZlcldpZGdldCgpOwpAQCAtNzY4LDcgKzc2OCw3IEBAIFZlY3RvcjxTdHJp
bmc+IEhpdFRlc3RSZXN1bHQ6OmRpY3RhdGlvbkFsdGVybmF0aXZlcygpIGNvbnN0CiAgICAgaWYg
KCFtX2lubmVyTm9uU2hhcmVkTm9kZSkKICAgICAgICAgcmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7
CiAKLSAgICBEb2N1bWVudE1hcmtlciogbWFya2VyID0gbV9pbm5lck5vblNoYXJlZE5vZGUtPmRv
Y3VtZW50KCktPm1hcmtlcnMoKS0+bWFya2VyQ29udGFpbmluZ1BvaW50KGhpdFRlc3RMb2NhdGlv
bigpLnBvaW50KCksIERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25BbHRlcm5hdGl2ZXMpOworICAg
IERvY3VtZW50TWFya2VyKiBtYXJrZXIgPSBtX2lubmVyTm9uU2hhcmVkTm9kZS0+ZG9jdW1lbnQo
KS0+bWFya2VycygpLT5tYXJrZXJDb250YWluaW5nUG9pbnQocG9pbnRJbklubmVyTm9kZUZyYW1l
KCksIERvY3VtZW50TWFya2VyOjpEaWN0YXRpb25BbHRlcm5hdGl2ZXMpOwogICAgIGlmICghbWFy
a2VyKQogICAgICAgICByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKaW5kZXggYzJlMGJmMmE3OTU5ZTBmZjI4NWVlNzUyOTEy
ZmFhOWQ3YzliZDQ1OS4uMjdjYmI1ZWFkNDY0NDA0ZmE2Y2JhZmZmMTQ4ODJmMjUzM2VmNGRiNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oCkBAIC0xMjUsMTIgKzEy
NSwxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1JlY3RCYXNlZFRlc3QoKSBjb25zdCB7IHJldHVy
biBtX2hpdFRlc3RMb2NhdGlvbi5pc1JlY3RCYXNlZFRlc3QoKTsgfQogCiAgICAgLy8gVGhlIGhp
dC10ZXN0ZWQgcG9pbnQgaW4gdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSBtYWluIGZyYW1lLgotICAg
IGNvbnN0IExheW91dFBvaW50JiBwb2ludEluTWFpbkZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9w
b2ludEluTWFpbkZyYW1lOyB9CisgICAgY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50SW5NYWluRnJh
bWUoKSBjb25zdCB7IHJldHVybiBtX2hpdFRlc3RMb2NhdGlvbi5wb2ludCgpOyB9CiAgICAgSW50
UG9pbnQgcm91bmRlZFBvaW50SW5NYWluRnJhbWUoKSBjb25zdCB7IHJldHVybiByb3VuZGVkSW50
UG9pbnQocG9pbnRJbk1haW5GcmFtZSgpKTsgfQotICAgIHZvaWQgc2V0UG9pbnRJbk1haW5GcmFt
ZShjb25zdCBMYXlvdXRQb2ludCYgcCkgeyBtX3BvaW50SW5NYWluRnJhbWUgPSBwOyB9CiAKICAg
ICAvLyBUaGUgaGl0LXRlc3RlZCBwb2ludCBpbiB0aGUgY29vcmRpbmF0ZXMgb2YgdGhlIGlubmVy
Tm9kZSBmcmFtZSwgdGhlIGZyYW1lIGNvbnRhaW5pbmcgaW5uZXJOb2RlLgotICAgIGNvbnN0IExh
eW91dFBvaW50JiBwb2ludEluSW5uZXJOb2RlRnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2hpdFRl
c3RMb2NhdGlvbi5wb2ludCgpOyB9CisgICAgY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50SW5Jbm5l
ck5vZGVGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fcG9pbnRJbklubmVyTm9kZUZyYW1lOyB9CiAg
ICAgSW50UG9pbnQgcm91bmRlZFBvaW50SW5Jbm5lck5vZGVGcmFtZSgpIGNvbnN0IHsgcmV0dXJu
IHJvdW5kZWRJbnRQb2ludChwb2ludEluSW5uZXJOb2RlRnJhbWUoKSk7IH0KICAgICBGcmFtZSog
aW5uZXJOb2RlRnJhbWUoKSBjb25zdDsKIApAQCAtMjAzLDcgKzIwMiw3IEBAIHByaXZhdGU6CiAK
ICAgICBSZWZQdHI8Tm9kZT4gbV9pbm5lck5vZGU7CiAgICAgUmVmUHRyPE5vZGU+IG1faW5uZXJO
b25TaGFyZWROb2RlOwotICAgIExheW91dFBvaW50IG1fcG9pbnRJbk1haW5GcmFtZTsgLy8gVGhl
IGhpdC10ZXN0ZWQgcG9pbnQgaW4gbWFpbi1mcmFtZSBjb29yZGluYXRlcy4KKyAgICBMYXlvdXRQ
b2ludCBtX3BvaW50SW5Jbm5lck5vZGVGcmFtZTsgLy8gVGhlIGhpdC10ZXN0ZWQgcG9pbnQgaW4g
aW5uZXJOb2RlIGZyYW1lIGNvb3JkaW5hdGVzLgogICAgIExheW91dFBvaW50IG1fbG9jYWxQb2lu
dDsgLy8gQSBwb2ludCBpbiB0aGUgbG9jYWwgY29vcmRpbmF0ZSBzcGFjZSBvZiBtX2lubmVyTm9u
U2hhcmVkTm9kZSdzIHJlbmRlcmVyLiBBbGxvd3MgdXMgdG8gZWZmaWNpZW50bHkKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGRldGVybWluZSB3aGVyZSBpbnNpZGUgdGhlIHJlbmRl
cmVyIHdlIGhpdCBvbiBzdWJzZXF1ZW50IG9wZXJhdGlvbnMuCiAgICAgUmVmUHRyPEVsZW1lbnQ+
IG1faW5uZXJVUkxFbGVtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZyYW1lQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJh
bWVCYXNlLmNwcAppbmRleCBmNzlhMjFhOTk1OGZiMGRmZWVlMDNjNmU5M2YzNTJhNzQyYzIxM2Ux
Li43ZTdiMGE0MTE1YTJjNTE4YjBiYzMwYmE4MmNmNmMzMTNmMTZiZGZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmNwcApAQCAtMjksNiArMjksOCBAQAog
I2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSFRN
TEZyYW1lRWxlbWVudEJhc2UuaCIKKyNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCisjaW5jbHVk
ZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTEwMiw0ICsxMDQsMzcgQEAgdm9pZCBSZW5kZXJGcmFtZUJhc2U6OmxheW91
dFdpdGhGbGF0dGVuaW5nKGJvb2wgaGFzRml4ZWRXaWR0aCwgYm9vbCBoYXNGaXhlZEhlaWcKICAg
ICBzZXROZWVkc0xheW91dChmYWxzZSk7CiB9CiAKK2Jvb2wgUmVuZGVyRnJhbWVCYXNlOjpub2Rl
QXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVz
dWx0LCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExh
eW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbiBhY3Rpb24pCit7Cisg
ICAgaWYgKCFyZXF1ZXN0LmFsbG93c0NoaWxkRnJhbWVDb250ZW50KCkpCisgICAgICAgIHJldHVy
biBSZW5kZXJQYXJ0Ojpub2RlQXRQb2ludChyZXF1ZXN0LCByZXN1bHQsIGxvY2F0aW9uSW5Db250
YWluZXIsIGFjY3VtdWxhdGVkT2Zmc2V0LCBhY3Rpb24pOworCisgICAgRnJhbWVWaWV3KiBjaGls
ZEZyYW1lVmlldyA9IHN0YXRpY19jYXN0PEZyYW1lVmlldyo+KHdpZGdldCgpKTsKKyAgICBSZW5k
ZXJWaWV3KiBjaGlsZFJvb3QgPSBjaGlsZEZyYW1lVmlldyA/IHN0YXRpY19jYXN0PFJlbmRlclZp
ZXcqPihjaGlsZEZyYW1lVmlldy0+ZnJhbWUoKS0+Y29udGVudFJlbmRlcmVyKCkpIDogMDsKKwor
ICAgIGlmIChjaGlsZFJvb3QpIHsKKyAgICAgICAgTGF5b3V0UG9pbnQgYWRqdXN0ZWRMb2NhdGlv
biA9IGFjY3VtdWxhdGVkT2Zmc2V0ICsgbG9jYXRpb24oKTsKKyAgICAgICAgTGF5b3V0UG9pbnQg
Y29udGVudE9mZnNldCA9IExheW91dFBvaW50KGJvcmRlckxlZnQoKSArIHBhZGRpbmdMZWZ0KCks
IGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgpKSAtIGNoaWxkRnJhbWVWaWV3LT5zY3JvbGxPZmZz
ZXQoKTsKKyAgICAgICAgSGl0VGVzdExvY2F0aW9uIG5ld0hpdFRlc3RMb2NhdGlvbihsb2NhdGlv
bkluQ29udGFpbmVyLCAtYWRqdXN0ZWRMb2NhdGlvbiAtIGNvbnRlbnRPZmZzZXQpOworICAgICAg
ICBIaXRUZXN0UmVxdWVzdCBuZXdIaXRUZXN0UmVxdWVzdChyZXF1ZXN0LnR5cGUoKSB8IEhpdFRl
c3RSZXF1ZXN0OjpDaGlsZEZyYW1lSGl0VGVzdCk7CisgICAgICAgIEhpdFRlc3RSZXN1bHQgY2hp
bGRGcmFtZVJlc3VsdChuZXdIaXRUZXN0TG9jYXRpb24pOworCisgICAgICAgIGJvb2wgaXNJbnNp
ZGVDaGlsZEZyYW1lID0gY2hpbGRSb290LT5oaXRUZXN0KG5ld0hpdFRlc3RSZXF1ZXN0LCBuZXdI
aXRUZXN0TG9jYXRpb24sIGNoaWxkRnJhbWVSZXN1bHQpOworICAgICAgICByZXN1bHQuYXBwZW5k
KGNoaWxkRnJhbWVSZXN1bHQpOworICAgICAgICBpZiAoaXNJbnNpZGVDaGlsZEZyYW1lKQorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgaWYgKHJlcXVlc3QuYWxsb3dzRnJhbWVT
Y3JvbGxiYXJzKCkpIHsKKyAgICAgICAgICAgIC8vIFNjcm9sbFZpZXcgc2Nyb2xsYmFycyBhcmUg
bm90IHRoZSBzYW1lIGFzIFJlbmRlckxheWVyIHNjcm9sbGJhcnMgdGVzdGVkIGJ5IFJlbmRlckxh
eWVyOjpoaXRUZXN0T3ZlcmZsb3dDb250cm9scywKKyAgICAgICAgICAgIC8vIHNvIHdlIG5lZWQg
dG8gdGVzdCBTY3JvbGxWaWV3IHNjcm9sbGJhcnMgc2VwYXJhdGVseSBoZXJlLgorICAgICAgICAg
ICAgLy8gRklYTUU6IENvbnNpZGVyIGlmIHRoaXMgdGVzdCBjb3VsZCBiZSBkb25lIHVuY29uZGl0
aW9uYWxseS4KKyAgICAgICAgICAgIFNjcm9sbGJhciogZnJhbWVTY3JvbGxiYXIgPSBjaGlsZEZy
YW1lVmlldy0+c2Nyb2xsYmFyQXRQb2ludChuZXdIaXRUZXN0TG9jYXRpb24ucm91bmRlZFBvaW50
KCkpOworICAgICAgICAgICAgaWYgKGZyYW1lU2Nyb2xsYmFyKQorICAgICAgICAgICAgICAgIHJl
c3VsdC5zZXRTY3JvbGxiYXIoZnJhbWVTY3JvbGxiYXIpOworICAgICAgICB9CisgICAgfQorCisg
ICAgcmV0dXJuIFJlbmRlclBhcnQ6Om5vZGVBdFBvaW50KHJlcXVlc3QsIHJlc3VsdCwgbG9jYXRp
b25JbkNvbnRhaW5lciwgYWNjdW11bGF0ZWRPZmZzZXQsIGFjdGlvbik7Cit9CisKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuaAppbmRleCA0ZmFkNTYwYzViMzM3
Zjk2YjgxM2IwY2I3OTA1NDUzNjJkYzY2ODdjLi5hN2RlZWRhYjEwMjgzZGY2OTU0MThlZGUwZmJi
OTRkNDllMTJlNDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RnJhbWVCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFz
ZS5oCkBAIC0zNiw2ICszNiw3IEBAIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBSZW5kZXJGcmFt
ZUJhc2UoRWxlbWVudCopOwogCiBwdWJsaWM6CisgICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50
KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2Nh
dGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVk
T2Zmc2V0LCBIaXRUZXN0QWN0aW9uKSBPVkVSUklERTsKICAgICB2b2lkIGxheW91dFdpdGhGbGF0
dGVuaW5nKGJvb2wgZml4ZWRXaWR0aCwgYm9vbCBmaXhlZEhlaWdodCk7CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCA0MDhiZGI5YjVlNTkzZmY0ODg2
Mzk1NjA0ODQ3MzE5ZDNhZGQwMzc3Li40YjY5ODc5ODAyZWM2OGJkZTVhYzZkNTQ3ZmNkYzhhYjE2
MWE5Njk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTQw
MTMsNyArNDAxMyw3IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OmhpdFRlc3QoY29uc3QgSGl0VGVzdFJl
cXVlc3QmIHJlcXVlc3QsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYKICAgICAgICAgLy8gV2UgZGlk
bid0IGhpdCBhbnkgbGF5ZXIuIElmIHdlIGFyZSB0aGUgcm9vdCBsYXllciBhbmQgdGhlIG1vdXNl
IGlzIC0tIG9yIGp1c3Qgd2FzIC0tIGRvd24sIAogICAgICAgICAvLyByZXR1cm4gb3Vyc2VsdmVz
LiBXZSBkbyB0aGlzIHNvIG1vdXNlIGV2ZW50cyBjb250aW51ZSBnZXR0aW5nIGRlbGl2ZXJlZCBh
ZnRlciBhIGRyYWcgaGFzIAogICAgICAgICAvLyBleGl0ZWQgdGhlIFdlYlZpZXcsIGFuZCBzbyBo
aXQgdGVzdGluZyBvdmVyIGEgc2Nyb2xsYmFyIGhpdHMgdGhlIGNvbnRlbnQgZG9jdW1lbnQuCi0g
ICAgICAgIGlmICgocmVxdWVzdC5hY3RpdmUoKSB8fCByZXF1ZXN0LnJlbGVhc2UoKSkgJiYgaXNS
b290TGF5ZXIoKSkgeworICAgICAgICBpZiAoIXJlcXVlc3QuaXNDaGlsZEZyYW1lSGl0VGVzdCgp
ICYmIChyZXF1ZXN0LmFjdGl2ZSgpIHx8IHJlcXVlc3QucmVsZWFzZSgpKSAmJiBpc1Jvb3RMYXll
cigpKSB7CiAgICAgICAgICAgICByZW5kZXJlcigpLT51cGRhdGVIaXRUZXN0UmVzdWx0KHJlc3Vs
dCwgdG9SZW5kZXJWaWV3KHJlbmRlcmVyKCkpLT5mbGlwRm9yV3JpdGluZ01vZGUoaGl0VGVzdExv
Y2F0aW9uLnBvaW50KCkpKTsKICAgICAgICAgICAgIGluc2lkZUxheWVyID0gdGhpczsKICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDNjNzlkZWEzNDAxMWVm
NzA4ZjIwMmYxNTNlMGRjMTljMjdiMTg2ZmIuLjM1MDIxZGExMzg1MTNiODQ4OWM0MmJhNjUxNmQz
NDAwODUxMDRjNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTEzNzgs
NyArMTM3OCw3IEBAIFBhc3NSZWZQdHI8Q2xpZW50UmVjdExpc3Q+IEludGVybmFsczo6dG91Y2hF
dmVudFRhcmdldENsaWVudFJlY3RzKERvY3VtZW50KiBkb2N1CiAjZW5kaWYKIAogUGFzc1JlZlB0
cjxOb2RlTGlzdD4gSW50ZXJuYWxzOjpub2Rlc0Zyb21SZWN0KERvY3VtZW50KiBkb2N1bWVudCwg
aW50IHgsIGludCB5LCB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcs
Ci0gICAgdW5zaWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcsIGJvb2wg
aWdub3JlQ2xpcHBpbmcsIGJvb2wgYWxsb3dTaGFkb3dDb250ZW50LCBFeGNlcHRpb25Db2RlJiBl
YykgY29uc3QKKyAgICB1bnNpZ25lZCBib3R0b21QYWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGlu
ZywgYm9vbCBpZ25vcmVDbGlwcGluZywgYm9vbCBhbGxvd1NoYWRvd0NvbnRlbnQsIGJvb2wgYWxs
b3dDaGlsZEZyYW1lQ29udGVudCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiB7CiAgICAgaWYg
KCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPmZyYW1lKCkgfHwgIWRvY3VtZW50LT5mcmFtZSgpLT52
aWV3KCkpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CkBAIC0xMzkwLDYgKzEz
OTAsOCBAQCBQYXNzUmVmUHRyPE5vZGVMaXN0PiBJbnRlcm5hbHM6Om5vZGVzRnJvbVJlY3QoRG9j
dW1lbnQqIGRvY3VtZW50LCBpbnQgeCwgaW50IHksCiAgICAgICAgIGhpdFR5cGUgfD0gSGl0VGVz
dFJlcXVlc3Q6Oklnbm9yZUNsaXBwaW5nOwogICAgIGlmIChhbGxvd1NoYWRvd0NvbnRlbnQpCiAg
ICAgICAgIGhpdFR5cGUgfD0gSGl0VGVzdFJlcXVlc3Q6OkFsbG93U2hhZG93Q29udGVudDsKKyAg
ICBpZiAoYWxsb3dDaGlsZEZyYW1lQ29udGVudCkKKyAgICAgICAgaGl0VHlwZSB8PSBIaXRUZXN0
UmVxdWVzdDo6QWxsb3dDaGlsZEZyYW1lQ29udGVudDsKIAogICAgIHJldHVybiBkb2N1bWVudC0+
bm9kZXNGcm9tUmVjdCh4LCB5LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRp
bmcsIGxlZnRQYWRkaW5nLCBoaXRUeXBlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5o
CmluZGV4IGU3MGFjNmM4MTNiYzk5ZTQwYWZhZmNhZmFkZjViYTk1YjBhZmI0MmYuLmU0NTAyYWFl
ZDI2YzQ2MmI0NTgwNDVjMDkwZjg0NzA3OWE2ZjQzYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaApAQCAtMTkwLDcgKzE5MCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgUGFzc1Jl
ZlB0cjxOb2RlTGlzdD4gbm9kZXNGcm9tUmVjdChEb2N1bWVudCosIGludCB4LCBpbnQgeSwgdW5z
aWduZWQgdG9wUGFkZGluZywgdW5zaWduZWQgcmlnaHRQYWRkaW5nLAotICAgICAgICB1bnNpZ25l
ZCBib3R0b21QYWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGluZywgYm9vbCBpZ25vcmVDbGlwcGlu
ZywgYm9vbCBhbGxvd1NoYWRvd0NvbnRlbnQsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKKyAgICAg
ICAgdW5zaWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcsIGJvb2wgaWdu
b3JlQ2xpcHBpbmcsIGJvb2wgYWxsb3dTaGFkb3dDb250ZW50LCBib29sIGFsbG93Q2hpbGRGcmFt
ZUNvbnRlbnQsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKIAogICAgIHZvaWQgZW1pdEluc3BlY3Rv
ckRpZEJlZ2luRnJhbWUoKTsKICAgICB2b2lkIGVtaXRJbnNwZWN0b3JEaWRDYW5jZWxGcmFtZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IGJmNjM0NzlkNGNmNzQzY2E0
NGE3Yjg5ZWMzMGZiZTI5YjVkMTViYWEuLmI5YTNjYjkxMzhhMjNjODE0NmMxNTUzNmQxMmFjZThm
MDdlOTI2NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTE1OCw3ICsx
NTgsNyBAQAogCiAgICAgTm9kZUxpc3Qgbm9kZXNGcm9tUmVjdChpbiBEb2N1bWVudCBkb2N1bWVu
dCwgaW4gbG9uZyB4LCBpbiBsb25nIHksCiAgICAgICAgIGluIHVuc2lnbmVkIGxvbmcgdG9wUGFk
ZGluZywgaW4gdW5zaWduZWQgbG9uZyByaWdodFBhZGRpbmcsIGluIHVuc2lnbmVkIGxvbmcgYm90
dG9tUGFkZGluZywgaW4gdW5zaWduZWQgbG9uZyBsZWZ0UGFkZGluZywKLSAgICAgICAgaW4gYm9v
bGVhbiBpZ25vcmVDbGlwcGluZywgaW4gYm9vbGVhbiBhbGxvd1NoYWRvd0NvbnRlbnQpIHJhaXNl
cyAoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgaW4gYm9vbGVhbiBpZ25vcmVDbGlwcGluZywgaW4g
Ym9vbGVhbiBhbGxvd1NoYWRvd0NvbnRlbnQsIGluIGJvb2xlYW4gYWxsb3dDaGlsZEZyYW1lQ29u
dGVudCkgcmFpc2VzIChET01FeGNlcHRpb24pOwogCiAgICAgdm9pZCBlbWl0SW5zcGVjdG9yRGlk
QmVnaW5GcmFtZSgpOwogICAgIHZvaWQgZW1pdEluc3BlY3RvckRpZENhbmNlbEZyYW1lKCk7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggMGEzNGJhM2QxNjI0NjFhOWQ3ZWM1NjQyNmYzYjkwODk3NWZkZDkwMi4uNzAyN2RlYWRl
YzFhOTBiNjZhYTYzMWMzYTI2Njc5ZDYyM2RlY2RmNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisy
MDEzLTAxLTA5ICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29t
PgorCisgICAgICAgIEFsbG93IGNoaWxkLWZyYW1lIGNvbnRlbnQgaW4gaGl0LXRlc3RzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUyMDQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBIG5ldyB0ZXN0cyBm
b3Igbm9kZXNGcm9tUmVjdCB0aGF0IHJldHVybnMgcmVzdWx0IGZyb20gY2hpbGQgZnJhbWVzLgor
CisgICAgICAgICogZmFzdC9kb20vbm9kZXNGcm9tUmVjdC9ub2Rlc0Zyb21SZWN0LWNoaWxkLWZy
YW1lLWNvbnRlbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9ub2Rl
c0Zyb21SZWN0L25vZGVzRnJvbVJlY3QtY2hpbGQtZnJhbWUtY29udGVudC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2RvbS9ub2Rlc0Zyb21SZWN0L25vZGVzRnJvbVJlY3QtY29udGludWF0
aW9uLWNyYXNoLmh0bWw6CisgICAgICAgICogZmFzdC9kb20vbm9kZXNGcm9tUmVjdC9yZXNvdXJj
ZXMvY2hpbGQtZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vbm9kZXNGcm9t
UmVjdC9yZXNvdXJjZXMvbm9kZXNGcm9tUmVjdC5qczoKKyAgICAgICAgKGNoZWNrKToKKyAgICAg
ICAgKGNoZWNrU2hhZG93Q29udGVudCk6CisgICAgICAgIChub2Rlc0Zyb21SZWN0QXNTdHJpbmcp
OgorCiAyMDEzLTAyLTE0ICBBbGV4YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogSW1wbGVtZW50IHRyYWNraW5nIG9mIGFjdGl2ZSBz
dHlsZXNoZWV0cyBpbiB0aGUgZnJvbnRlbmQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL25vZGVzRnJvbVJlY3Qvbm9kZXNGcm9tUmVjdC1jaGlsZC1mcmFtZS1jb250ZW50LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3Qvbm9kZXNGcm9tUmVj
dC1jaGlsZC1mcmFtZS1jb250ZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YzFjOTcwMGMy
NTliZDIyNDkwMDNhM2U4MDM1NDdlMTI0ZGNmZmZmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9tUmVjdC9ub2Rlc0Zyb21SZWN0LWNoaWxkLWZyYW1lLWNv
bnRlbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTggQEAKKworRG9jdW1lbnQ6Om5vZGVzRnJv
bVJlY3QgOiBBbGxvdyBjaGlsZC1mcmFtZSBjb250ZW50IC0gYnVnIDk1MjA0CisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciBy
ZWN0CitQQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0CitQQVNTIEFsbCBjb3Jy
ZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0CitQQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZv
ciByZWN0CitQQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0CitQQVNTIEFsbCBj
b3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0CitQQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5k
IGZvciByZWN0CitQQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0CitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9tUmVjdC9ub2Rlc0Zyb21SZWN0LWNoaWxkLWZy
YW1lLWNvbnRlbnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3Qvbm9k
ZXNGcm9tUmVjdC1jaGlsZC1mcmFtZS1jb250ZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWRiNDE2N2Ix
NzgwMmRjZWI5ZTM4NmM1NGUzMWU1NDY4NWM1MWU5NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3Qvbm9kZXNGcm9tUmVjdC1jaGlsZC1mcmFtZS1j
b250ZW50Lmh0bWwKQEAgLTAsMCArMSw3NyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorICAgIDx0aXRsZT5Eb2N1bWVudDo6bm9kZXNGcm9tUmVjdCA6IEFsbG93IGNoaWxkLWZy
YW1lIGNvbnRlbnQgLSBidWcgOTUyMDQ8L3RpdGxlPgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvbm9kZXNGcm9tUmVjdC5qcyI+PC9zY3JpcHQ+CisgICAgPHN0eWxlPgorICAgICAg
ICBib2R5IHsgbWFyZ2luOiAwcHg7IH0KKyAgICAgICAgI3NhbmRib3ggeworICAgICAgICAgICAg
d2lkdGg6IDQwMHB4OworICAgICAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICAgICAgfQorICAg
ICAgICAjc2FuZGJveCAjbGF5ZXIgeworICAgICAgICAgICAgZmxvYXQ6IHJpZ2h0OworICAgICAg
ICB9CisgICAgICAgICNzYW5kYm94IGlmcmFtZSB7CisgICAgICAgICAgICBkaXNwbGF5OiBibG9j
azsKKyAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CisgICAgICAgICAgICB3aWR0
aDogMjAwcHg7CisgICAgICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgICAgICAgICAgYm9yZGVy
OiBub25lOworICAgICAgICB9CisgICAgICAgIC5yb3RhdGUxODAgeyAtd2Via2l0LXRyYW5zZm9y
bTogcm90YXRlKDE4MGRlZyk7IH0KKyAgICAgICAgLnJvdGF0ZTkwIHsgLXdlYmtpdC10cmFuc2Zv
cm06IHJvdGF0ZSg5MGRlZyk7IH0KKyAgICAgICAgI3NhbmRib3ggLmJveCB7CisgICAgICAgICAg
ICBib3gtc2l6aW5nOiBib3JkZXItYm94OworICAgICAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAg
ICAgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIGJs
YWNrOworICAgICAgICB9CisgICAgPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5IGlkPSJib2R5Ij4K
KyAgICA8ZGl2IGlkPXNhbmRib3g+CisgICAgICAgIDxkaXYgaWQ9bGF5ZXI+CisgICAgICAgICAg
ICA8aWZyYW1lIGlkPSJpZnJhbWUxIiBzcmM9InJlc291cmNlcy9jaGlsZC1mcmFtZS5odG1sIj48
L2lmcmFtZT4KKyAgICAgICAgPC9kaXY+CisgICAgICAgIDxkaXYgaWQ9ZGl2MSBjbGFzcz1ib3g+
PC9kaXY+CisgICAgICAgIDxkaXYgaWQ9ZGl2MiBjbGFzcz1ib3g+PC9kaXY+CisgICAgPC9kaXY+
CisKKyAgICA8cCBpZD0nZGVzY3JpcHRpb24nPjwvcD4KKyAgICA8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKyAgICA8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiPgorICAgICAg
ICBmdW5jdGlvbiBydW5UZXN0KCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVzY3JpcHRpb24o
ZG9jdW1lbnQudGl0bGUpOworCisgICAgICAgICAgICAvLyBTZXQgdXAgc2hvcnRjdXQgYWNjZXNz
IHRvIGVsZW1lbnRzCisgICAgICAgICAgICB2YXIgZSA9IHt9OworICAgICAgICAgICAgWydzYW5k
Ym94JywgJ2xheWVyJ10uZm9yRWFjaChmdW5jdGlvbihhKSB7CisgICAgICAgICAgICAgICAgZVth
XSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGEpOworICAgICAgICAgICAgfSk7CisKKyAgICAg
ICAgICAgIGNoZWNrUmVjdCgyNSwgMjUsIDEwMCwgMTAwLCAiRElWI2RpdjIsIERJViNkaXYxLCBE
SVYjc2FuZGJveCIpOworICAgICAgICAgICAgY2hlY2tSZWN0KDIyMCwgMjAsIDcwLCA3MCwgIkRJ
ViNsZWZ0Iik7CisgICAgICAgICAgICBjaGVja1JlY3QoMjUwLCAyMCwgMTAwLCA3MCwgIkRJViNy
aWdodCwgRElWI2xlZnQsIEhUTUwiKTsKKworICAgICAgICAgICAgY2hlY2tSZWN0KDE1MCwgNTAs
IDEwMCwgMTAwLCAiRElWI2xlZnQsIEhUTUwsICNkb2N1bWVudCwgSUZSQU1FI2lmcmFtZTEsIERJ
ViNsYXllciwgRElWI2RpdjIsIERJViNkaXYxLCBESVYjc2FuZGJveCIpOworCisgICAgICAgICAg
ICBlLmxheWVyLnNldEF0dHJpYnV0ZSgnY2xhc3MnLCAncm90YXRlMTgwJyk7CisgICAgICAgICAg
ICBjaGVja1JlY3QoMjIwLCAyMCwgNzAsIDcwLCAiRElWI3JpZ2h0Iik7CisgICAgICAgICAgICBj
aGVja1JlY3QoMTUwLCA1MCwgMTAwLCAxMDAsICJESVYjcmlnaHQsIEhUTUwsICNkb2N1bWVudCwg
SUZSQU1FI2lmcmFtZTEsIERJViNsYXllciwgRElWI2RpdjIsIERJViNkaXYxLCBESVYjc2FuZGJv
eCIpOworCisgICAgICAgICAgICBlLmxheWVyLnNldEF0dHJpYnV0ZSgnY2xhc3MnLCAncm90YXRl
OTAnKTsKKyAgICAgICAgICAgIGNoZWNrUmVjdCgyNTAsIDIwLCAxMDAsIDcwLCAiRElWI2xlZnQi
KTsKKyAgICAgICAgICAgIGNoZWNrUmVjdCgxNTAsIDIwLCAyMDAsIDYwLCAiRElWI2xlZnQsIEhU
TUwsICNkb2N1bWVudCwgSUZSQU1FI2lmcmFtZTEsIERJViNsYXllciwgRElWI2RpdjEsIERJViNz
YW5kYm94Iik7CisKKyAgICAgICAgICAgIGUuc2FuZGJveC5kaXNwbGF5ID0gJ25vbmUnOworICAg
ICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKyAgICAgICAganNUZXN0SXNBc3lu
YyA9IHRydWU7CisgICAgICAgIHdpbmRvdy5vbmxvYWQgPSBydW5UZXN0OworICAgIDwvc2NyaXB0
PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL25vZGVzRnJvbVJlY3Qvbm9kZXNGcm9tUmVjdC1jb250aW51YXRpb24tY3Jhc2guaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3Qvbm9kZXNGcm9tUmVjdC1jb250aW51
YXRpb24tY3Jhc2guaHRtbAppbmRleCBhZmZhNWU1MTFlYzc3ZmQ0MDAyY2JmMTY5OTk0ZjJkMDVk
YzU0NjhhLi5jMTZjZDgyYTE5Y2FmYWU1NTVkYmRiNmMyZTkxYTM3YWQzYmIyNjhjIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2Rlc0Zyb21SZWN0L25vZGVzRnJvbVJlY3QtY29u
dGludWF0aW9uLWNyYXNoLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9t
UmVjdC9ub2Rlc0Zyb21SZWN0LWNvbnRpbnVhdGlvbi1jcmFzaC5odG1sCkBAIC03LDcgKzcsNyBA
QCBpZiAod2luZG93LnRlc3RSdW5uZXIpCiB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CiAg
ICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzKQogICAgICAgICBhbGVydCgiVGhpcyB0ZXN0IHJlcXVp
cmVzIHdpbmRvdy5pbnRlcm5hbHMiKTsKLSAgICB2YXIgbm9kZXMgPSBpbnRlcm5hbHMubm9kZXNG
cm9tUmVjdChkb2N1bWVudCwgMTAwLCAxMDAsIDIwLCAyMCwgMjAsIDIwLCBmYWxzZSwgZmFsc2Up
OworICAgIHZhciBub2RlcyA9IGludGVybmFscy5ub2Rlc0Zyb21SZWN0KGRvY3VtZW50LCAxMDAs
IDEwMCwgMjAsIDIwLCAyMCwgMjAsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOwogICAgIGFsZXJ0KCJQ
QVNTOiBUaGlzIHRlc3QgZGlkIG5vdCB0cmlnZ2VyIGFuIEFTU0VSVCIpOwogfTsKIDwvc2NyaXB0
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9tUmVjdC9yZXNvdXJj
ZXMvY2hpbGQtZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3Qv
cmVzb3VyY2VzL2NoaWxkLWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjA0ZDdmYWFkYmI5ODY2N2Jm
ZWM0YTQ3MjdjOGRhMjg3MzYzM2U2OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL25vZGVzRnJvbVJlY3QvcmVzb3VyY2VzL2NoaWxkLWZyYW1lLmh0bWwKQEAgLTAsMCAr
MSwyNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlIHR5cGU9InRl
eHQvY3NzIj4KKyAgICBib2R5IHsgbWFyZ2luOiAwcHg7IH0KKyAgICBkaXYgeyAKKyAgICAgICAg
Ym94LXNpemluZzogYm9yZGVyLWJveDsKKyAgICAgICAgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7
CisgICAgfQorICAgICNsZWZ0IHsKKyAgICAgICAgZmxvYXQ6bGVmdDsKKyAgICAgICAgd2lkdGg6
IDkwcHg7CisgICAgICAgIGhlaWdodDogMTkwcHg7CisgICAgfQorICAgICNyaWdodCB7CisgICAg
ICAgIGZsb2F0OnJpZ2h0OworICAgICAgICB3aWR0aDogOTBweDsKKyAgICAgICAgaGVpZ2h0OiAx
OTBweDsKKyAgICB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgICAgPGRpdiBpZD1sZWZ0
PjwvZGl2PgorICAgIDxkaXYgaWQ9cmlnaHQ+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3QvcmVzb3VyY2VzL25v
ZGVzRnJvbVJlY3QuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2Rlc0Zyb21SZWN0L3Jlc291
cmNlcy9ub2Rlc0Zyb21SZWN0LmpzCmluZGV4IGQwMmMxYzdkYjQ5ZTY4M2U4MDM1MDc2ZDgyNDAx
Mjc1MTVmN2FiMDQuLmE3Mjg3YzhiNDk3ZGI0YjE4MGM2NTc2YjUxZDljOGI5NThmOTUyMzQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3QvcmVzb3VyY2VzL25v
ZGVzRnJvbVJlY3QuanMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9tUmVjdC9y
ZXNvdXJjZXMvbm9kZXNGcm9tUmVjdC5qcwpAQCAtMSw3ICsxLDggQEAKIC8qCiAgKiBDb250cmli
dXRvcnM6CiAgKiAgICAgKiBBbnRvbmlvIEdvbWVzIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4KLSAq
Ki8KKyAqICAgICAqIEFsbGFuIFNhbmRmZWxkIEplbnNlbiA8YWxsYW4uamVuc2VuQGRpZ2lhLmNv
bT4KKyoqLwogCiBmdW5jdGlvbiBjaGVjayh4LCB5LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcs
IGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nLCBsaXN0LCBkb2MpCiB7CkBAIC0xMSw3ICsxMiw3
IEBAIGZ1bmN0aW9uIGNoZWNrKHgsIHksIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9t
UGFkZGluZywgbGVmdFBhZGRpbmcsIGxpc3QsCiAgIGlmICghZG9jKQogICAgIGRvYyA9IGRvY3Vt
ZW50OwogCi0gIHZhciBub2RlcyA9IGludGVybmFscy5ub2Rlc0Zyb21SZWN0KGRvYywgeCwgeSwg
dG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0UGFkZGluZywgdHJ1
ZSAvKiBpZ25vcmVDbGlwcGluZyAqLywgZmFsc2UgLyogYWxsb3cgc2hhZG93IGNvbnRlbnQgKi8p
OworICB2YXIgbm9kZXMgPSBpbnRlcm5hbHMubm9kZXNGcm9tUmVjdChkb2MsIHgsIHksIHRvcFBh
ZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcsIHRydWUgLyog
aWdub3JlQ2xpcHBpbmcgKi8sIGZhbHNlIC8qIGFsbG93IHNoYWRvdyBjb250ZW50ICovLCBmYWxz
ZSAvKiBhbGxvdyBjaGlsZC1mcmFtZSBjb250ZW50ICovKTsKICAgaWYgKCFub2RlcykKICAgICBy
ZXR1cm47CiAKQEAgLTQ1LDcgKzQ2LDcgQEAgZnVuY3Rpb24gY2hlY2tTaGFkb3dDb250ZW50KHgs
IHksIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFAKICAgaWYg
KCFkb2MpCiAgICAgZG9jID0gZG9jdW1lbnQ7CiAKLSAgdmFyIG5vZGVzID0gaW50ZXJuYWxzLm5v
ZGVzRnJvbVJlY3QoZG9jLCB4LCB5LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBh
ZGRpbmcsIGxlZnRQYWRkaW5nLCB0cnVlIC8qIGlnbm9yZUNsaXBwaW5nICovLCB0cnVlIC8qIGFs
bG93U2hhZG93Q29udGVudCAqLyk7CisgIHZhciBub2RlcyA9IGludGVybmFscy5ub2Rlc0Zyb21S
ZWN0KGRvYywgeCwgeSwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBs
ZWZ0UGFkZGluZywgdHJ1ZSAvKiBpZ25vcmVDbGlwcGluZyAqLywgdHJ1ZSAvKiBhbGxvd1NoYWRv
d0NvbnRlbnQgKi8sIGZhbHNlIC8qIGFsbG93IGNoaWxkLWZyYW1lIGNvbnRlbnQgKi8pOwogICBp
ZiAoIW5vZGVzKQogICAgIHJldHVybjsKIApAQCAtOTYsNyArOTcsNyBAQCBmdW5jdGlvbiBjaGVj
a1JlY3QobGVmdCwgdG9wLCB3aWR0aCwgaGVpZ2h0LCBleHBlY3RlZE5vZGVTdHJpbmcsIGRvYykK
IGZ1bmN0aW9uIG5vZGVzRnJvbVJlY3RBc1N0cmluZyhkb2MsIHgsIHksIHRvcFBhZGRpbmcsIHJp
Z2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcpCiB7CiAgICAgdmFyIG5vZGVT
dHJpbmcgPSAiIjsKLSAgICB2YXIgbm9kZXMgPSBpbnRlcm5hbHMubm9kZXNGcm9tUmVjdChkb2Ms
IHgsIHksIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRp
bmcsIHRydWUgLyogaWdub3JlQ2xpcHBpbmcgKi8sIGZhbHNlIC8qIGFsbG93IHNoYWRvdyBjb250
ZW50ICovKTsKKyAgICB2YXIgbm9kZXMgPSBpbnRlcm5hbHMubm9kZXNGcm9tUmVjdChkb2MsIHgs
IHksIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcs
IHRydWUgLyogaWdub3JlQ2xpcHBpbmcgKi8sIGZhbHNlIC8qIGFsbG93IHNoYWRvdyBjb250ZW50
ICovLCB0cnVlIC8qIGFsbG93IGNoaWxkLWZyYW1lIGNvbnRlbnQgKi8pOwogICAgIGlmICghbm9k
ZXMpCiAgICAgICAgIHJldHVybiBub2RlU3RyaW5nOwogCkBAIC0xMTAsNiArMTExLDggQEAgZnVu
Y3Rpb24gbm9kZXNGcm9tUmVjdEFzU3RyaW5nKGRvYywgeCwgeSwgdG9wUGFkZGluZywgcmlnaHRQ
YWRkaW5nLCBib3R0b21QYWRkaW4KICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChu
b2Rlc1tpXS5ub2RlVHlwZSA9PSAzKSB7CiAgICAgICAgICAgICBub2RlU3RyaW5nICs9ICInIiAr
IG5vZGVzW2ldLmRhdGEgKyAiJyI7CisgICAgICAgIH0gZWxzZSBpZiAobm9kZXNbaV0ubm9kZVR5
cGUgPT0gOSkgeworICAgICAgICAgICAgbm9kZVN0cmluZyArPSAiI2RvY3VtZW50IjsKICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CkBAIC0xMjAsNyAr
MTIzLDYgQEAgZnVuY3Rpb24gbm9kZXNGcm9tUmVjdEFzU3RyaW5nKGRvYywgeCwgeSwgdG9wUGFk
ZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW4KICAgICByZXR1cm4gbm9kZVN0cmluZzsK
IH0KIAotCiBmdW5jdGlvbiBnZXRDZW50ZXJGb3IoZWxlbWVudCkKIHsKICAgdmFyIHJlY3QgPSBl
bGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189041</attachid>
            <date>2013-02-19 03:15:33 -0800</date>
            <delta_ts>2013-02-21 20:36:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95204-20130219121110.patch</filename>
            <type>text/plain</type>
            <size>30311</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzMzE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjBhZDZmNDcyNjYwOGMx
ODk5MzlkMGVhN2RhMjQ5MTJjMjkyOTI2Yy4uYmJmMDhkY2IwYzRiZDU5OWM0YWYzZGI0ZjA1YzQ0
MmY1NDExNjEyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDEzLTAyLTE5ICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIEFs
bG93IGNoaWxkLWZyYW1lIGNvbnRlbnQgaW4gaGl0LXRlc3RzLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUyMDQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvcnMgaG93IEV2ZW50SGFuZGxlcjo6
aGl0VGVzdFJlc3VsdEF0UG9pbnQgaGFuZGxlcyBjaGlsZC1mcmFtZSBjb250ZW50LAorICAgICAg
ICBpdCBpcyBub3cgaGFuZGxlZCBieSB0aGUgaGl0IHRlc3QgaXRzZWxmIGNvbnRyb2xsZWQgYnkg
dGhlIEFsbG93Q2hpbGRGcmFtZUNvbnRlbnQKKyAgICAgICAgZmxhZyBpbiBIaXRUZXN0UmVxdWVz
dC4KKworICAgICAgICBUaGlzIG1lYW5zIHRoYXQgYXJlYS1iYXNlZCBoaXQtdGVzdHMgY2FuIG5v
dyByZXR1cm4gZWxlbWVudHMgZnJvbSBhbGwgdGhlIGNoaWxkIGZyYW1lcworICAgICAgICB0aGV5
IGludGVyc2VjdCBpbnN0ZWFkIG9mIGp1c3QgdGhlIG9uZSBmcmFtZSBjb250YWluaW5nIHRoZSBj
ZW50ZXIgcG9pbnQuIFRoZSBpbXByb3ZlZAorICAgICAgICByZXN1bHRzIGZyb20gYXJlYS1iYXNl
ZCBoaXQtdGVzdHMgd2lsbCBhbW9uZyBvdGhlciB0aGluZ3MgYWxzbyBpbXByb3ZlIHRvdWNoIGFk
anVzdG1lbnQKKyAgICAgICAgbmVhciBmcmFtZSBib3VuZGFyaWVzLgorCisgICAgICAgIFRlc3Rz
OiBmYXN0L2RvbS9ub2Rlc0Zyb21SZWN0L25vZGVzRnJvbVJlY3QtY2hpbGQtZnJhbWUtY29udGVu
dC5odG1sCisKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudEhhbmRsZXI6OmhpdFRlc3RSZXN1bHRBdFBvaW50KToKKyAgICAgICAgICAgIFJl
Y3Vyc2lvbiBpbnRvIGNoaWxkLWZyYW1lcyBoYXZlIGJlZW4gbW92ZWQgdG8gUmVuZGVyRnJhbWVC
YXNlOjpub2RlQXRQb2ludCwgc28KKyAgICAgICAgICAgIG5vdyBoaXRUZXN0UmVzdWx0QXRQb2lu
dCBqdXN0IG5lZWRzIHRvIHNldCBBbGxvd0NoaWxkRnJhbWVDb250ZW50LgorICAgICAgICAqIHBh
Z2UvVG91Y2hBZGp1c3RtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRvdWNoQWRqdXN0bWVu
dDo6cGFyZW50U2hhZG93SG9zdE9yT3duZXIpOgorICAgICAgICAgICAgTmV3IGZ1bmN0aW9uIHRv
IGl0ZXJhdGUgdXAgYWNyb3NzIGZyYW1lIGJvdW5kYXJpZXMuCisgICAgICAgIChXZWJDb3JlOjpU
b3VjaEFkanVzdG1lbnQ6OmNvbXBpbGVTdWJ0YXJnZXRMaXN0KToKKyAgICAgICAgICAgIFdlIG5l
ZWQgdG8gaXRlcmF0ZSB1cCBhY3Jvc3MgZnJhbWUgYm91bmRhcmllcyB0byBhdm9pZCBpZnJhbWVz
IGNvbXBldGluZyB3aXRoIHRoZWlyCisgICAgICAgICAgICBvd24gY29udGVudCBmb3IgdG91Y2gg
YWRqdXN0bWVudC4KKyAgICAgICAgKiByZW5kZXJpbmcvSGl0VGVzdFJlcXVlc3QuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhpdFRlc3RSZXF1ZXN0OjphbGxvd3NDaGlsZEZyYW1lQ29udGVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVxdWVzdDo6aXNDaGlsZEZyYW1lSGl0VGVzdCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0
UmVzdWx0OjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6YXBw
ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OmRpY3RhdGlvbkFsdGVybmF0
aXZlcyk6CisgICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkhpdFRlc3RSZXN1bHQ6OnBvaW50SW5NYWluRnJhbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6SGl0VGVzdFJlc3VsdDo6cG9pbnRJbklubmVyTm9kZUZyYW1lKToKKyAgICAgICAgKEhpdFRl
c3RSZXN1bHQpOgorICAgICAgICAgICAgbV9oaXRUZXN0TG9jYXRpb24gaXMgbm93IGluIG1haW4g
ZnJhbWUgY29vcmRpbmF0ZXMsIHdoaWNoIG1ha2UgbV9wb2ludEluTWFpbkZyYW1lCisgICAgICAg
ICAgICB1bm5lY2Vzc2FyeSwgYnV0IHJlcXVpcmVzIHRoZSBpbnRyb2R1Y3Rpb24gb2YgbV9wb2lu
dEluSW5uZXJGcmFtZSwgdG8gcmVtZW1iZXIKKyAgICAgICAgICAgIHRoZSBjb29yZGluYXRlcyBv
ZiBpbm5lci1ub2RlIGluIGl0cyBvd24gZnJhbWUuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckZyYW1lQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFtZUJhc2U6Om5vZGVB
dFBvaW50KToKKyAgICAgICAgICAgIFRoZSByZWN1cnNpb24gaW50byBjaGlsZC1mcmFtZXMgaXMg
bm93IGhhbmRsZWQgaGVyZSBpbnN0ZWFkIG9mIGluIGhpdFRlc3RSZXN1bHRBdFBvaW50LCB0aGlz
CisgICAgICAgICAgICBhbGxvd3MgdXMgdG8gcmVjdXJzZSBpbnRvIG11bHRpcGxlIGZyYW1lcywg
aW5zdGVhZCBvZiBqdXN0IG9uZS4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNl
Lmg6CisgICAgICAgIChSZW5kZXJGcmFtZUJhc2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aGl0VGVzdCk6Cisg
ICAgICAgICAgICBSZW5kZXJMYXllciBzaG91bGQgbm90IGxpZSBhYm91dCBiZWluZyBoaXQgaWYg
dGhlIHJlcXVlc3QgaXMgY2hpbGQtZnJhbWUgcmVxdWVzdC4KKyAgICAgICAgKiB0ZXN0aW5nL0lu
dGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Om5vZGVzRnJvbVJlY3Qp
OgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgIChJbnRlcm5hbHMpOgor
ICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKyAgICAgICAgICAgIEV4dGVuZGVkIHNv
IG5vZGVzRnJvbVJlY3Qgd2l0aCBjaGlsZC1mcmFtZSBjb250ZW50IGNhbiBiZSB0ZXN0ZWQuCisK
IDIwMTMtMDItMTkgIEFycGl0YSBCYWh1Z3VuYSAgPGEuYmFoQHNhbXN1bmcuY29tPgogCiAgICAg
ICAgIENhcmV0IGlzIG5vdCBkaXNwbGF5ZWQgd2hlbiB0cnlpbmcgdG8gZm9jdXMgaW5zaWRlIGEg
Y29udGVudGVkaXRhYmxlIGVsZW1lbnQgY29udGFpbmluZyBhbiBlbXB0eSBibG9jay4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCAzYmFjNGYyMDkwMTFkNDgwYmJhOWQ5MGM0
YWRmYTcxOWFmZjgxM2FjLi5lZWZiNTJmOGIwYzM4MzFiOGFiMTFmZDZkODMyNmQ1MGM1NzRkOGY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0xMDIyLDM1ICsxMDIyLDEw
IEBAIEhpdFRlc3RSZXN1bHQgRXZlbnRIYW5kbGVyOjpoaXRUZXN0UmVzdWx0QXRQb2ludChjb25z
dCBMYXlvdXRQb2ludCYgcG9pbnQsIEhpdFRlCiAgICAgaWYgKCFtX2ZyYW1lLT5jb250ZW50UmVu
ZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAotICAgIEhpdFRlc3RSZXF1ZXN0IHJl
cXVlc3QoaGl0VHlwZSk7CisgICAgLy8gaGl0VGVzdFJlc3VsdEF0UG9pbnQgaXMgc3BlY2lmaWNh
bGx5IHVzZWQgdG8gaGl0VGVzdCBpbnRvIGFsbCBmcmFtZXMsIHRodXMgaXQgYWx3YXlzIGFsbG93
cyBjaGlsZCBmcmFtZSBjb250ZW50LgorICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoaGl0VHlw
ZSB8IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd0NoaWxkRnJhbWVDb250ZW50KTsKICAgICBtX2ZyYW1l
LT5jb250ZW50UmVuZGVyZXIoKS0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOwogCi0gICAgd2hp
bGUgKHRydWUpIHsKLSAgICAgICAgTm9kZSogbiA9IHJlc3VsdC5pbm5lck5vZGUoKTsKLSAgICAg
ICAgaWYgKCFyZXN1bHQuaXNPdmVyV2lkZ2V0KCkgfHwgIW4gfHwgIW4tPnJlbmRlcmVyKCkgfHwg
IW4tPnJlbmRlcmVyKCktPmlzV2lkZ2V0KCkpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
UmVuZGVyV2lkZ2V0KiByZW5kZXJXaWRnZXQgPSB0b1JlbmRlcldpZGdldChuLT5yZW5kZXJlcigp
KTsKLSAgICAgICAgV2lkZ2V0KiB3aWRnZXQgPSByZW5kZXJXaWRnZXQtPndpZGdldCgpOwotICAg
ICAgICBpZiAoIXdpZGdldCB8fCAhd2lkZ2V0LT5pc0ZyYW1lVmlldygpKQotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIEZyYW1lKiBmcmFtZSA9IHN0YXRpY19jYXN0PEhUTUxGcmFtZUVsZW1l
bnRCYXNlKj4obiktPmNvbnRlbnRGcmFtZSgpOwotICAgICAgICBpZiAoIWZyYW1lIHx8ICFmcmFt
ZS0+Y29udGVudFJlbmRlcmVyKCkpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgRnJhbWVW
aWV3KiB2aWV3ID0gc3RhdGljX2Nhc3Q8RnJhbWVWaWV3Kj4od2lkZ2V0KTsKLSAgICAgICAgTGF5
b3V0UG9pbnQgd2lkZ2V0UG9pbnQocmVzdWx0LmxvY2FsUG9pbnQoKS54KCkgKyB2aWV3LT5zY3Jv
bGxYKCkgLSByZW5kZXJXaWRnZXQtPmJvcmRlckxlZnQoKSAtIHJlbmRlcldpZGdldC0+cGFkZGlu
Z0xlZnQoKSwgCi0gICAgICAgICAgICByZXN1bHQubG9jYWxQb2ludCgpLnkoKSArIHZpZXctPnNj
cm9sbFkoKSAtIHJlbmRlcldpZGdldC0+Ym9yZGVyVG9wKCkgLSByZW5kZXJXaWRnZXQtPnBhZGRp
bmdUb3AoKSk7Ci0gICAgICAgIEhpdFRlc3RSZXN1bHQgd2lkZ2V0SGl0VGVzdFJlc3VsdCh3aWRn
ZXRQb2ludCwgcGFkZGluZy5oZWlnaHQoKSwgcGFkZGluZy53aWR0aCgpLCBwYWRkaW5nLmhlaWdo
dCgpLCBwYWRkaW5nLndpZHRoKCkpOwotICAgICAgICB3aWRnZXRIaXRUZXN0UmVzdWx0LnNldFBv
aW50SW5NYWluRnJhbWUocmVzdWx0LnBvaW50SW5NYWluRnJhbWUoKSk7Ci0gICAgICAgIGZyYW1l
LT5jb250ZW50UmVuZGVyZXIoKS0+aGl0VGVzdChyZXF1ZXN0LCB3aWRnZXRIaXRUZXN0UmVzdWx0
KTsKLSAgICAgICAgcmVzdWx0ID0gd2lkZ2V0SGl0VGVzdFJlc3VsdDsKLQotICAgICAgICBpZiAo
cmVxdWVzdC5hbGxvd3NGcmFtZVNjcm9sbGJhcnMoKSkgewotICAgICAgICAgICAgU2Nyb2xsYmFy
KiBldmVudFNjcm9sbGJhciA9IHZpZXctPnNjcm9sbGJhckF0UG9pbnQocm91bmRlZEludFBvaW50
KHBvaW50KSk7Ci0gICAgICAgICAgICBpZiAoZXZlbnRTY3JvbGxiYXIpCi0gICAgICAgICAgICAg
ICAgcmVzdWx0LnNldFNjcm9sbGJhcihldmVudFNjcm9sbGJhcik7Ci0gICAgICAgIH0KLSAgICB9
Ci0KICAgICBpZiAoIXJlcXVlc3QuYWxsb3dzU2hhZG93Q29udGVudCgpKQogICAgICAgICByZXN1
bHQuc2V0VG9Ob25TaGFkb3dBbmNlc3RvcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1RvdWNoQWRqdXN0bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoQWRq
dXN0bWVudC5jcHAKaW5kZXggZjI4MTg3NTg0OWVmMDY4OWVlMTg1OGY0YmZkNWUxZDY1ZTkxY2E2
ZS4uZjZjYmEyNTE1NWUwYzhhMTZmZDVhOTVmOTc4NTNiNWNkOGMzNmM1NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9Ub3VjaEFkanVzdG1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvVG91Y2hBZGp1c3RtZW50LmNwcApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUg
IkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKICNpbmNsdWRlICJGcmFtZVZp
ZXcuaCIKKyNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
SW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTExhYmVsRWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxOYW1lcy5oIgpAQCAtMjIxLDYgKzIyMiwxNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYXBw
ZW5kWm9vbWFibGVTdWJ0YXJnZXRzKE5vZGUqIG5vZGUsIFN1YnRhcmdldEdlb21ldHJ5TGlzdCYg
cwogICAgICAgICBzdWJ0YXJnZXRzLmFwcGVuZChTdWJ0YXJnZXRHZW9tZXRyeShub2RlLCAqaXQp
KTsKIH0KIAorc3RhdGljIGlubGluZSBOb2RlKiBwYXJlbnRTaGFkb3dIb3N0T3JPd25lcihjb25z
dCBOb2RlKiBub2RlKQoreworICAgIGlmIChOb2RlKiBhbmNlc3RvciA9IG5vZGUtPnBhcmVudE9y
U2hhZG93SG9zdE5vZGUoKSkKKyAgICAgICAgcmV0dXJuIGFuY2VzdG9yOworICAgIGlmIChub2Rl
LT5pc0RvY3VtZW50Tm9kZSgpKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgRG9j
dW1lbnQqPihub2RlKS0+b3duZXJFbGVtZW50KCk7CisgICAgcmV0dXJuIDA7Cit9CisKIC8vIENv
bXBpbGVzIGEgbGlzdCBvZiBzdWJ0YXJnZXRzIG9mIGFsbCB0aGUgcmVsZXZhbnQgdGFyZ2V0IG5v
ZGVzLgogdm9pZCBjb21waWxlU3VidGFyZ2V0TGlzdChjb25zdCBOb2RlTGlzdCYgaW50ZXJzZWN0
ZWROb2RlcywgU3VidGFyZ2V0R2VvbWV0cnlMaXN0JiBzdWJ0YXJnZXRzLCBOb2RlRmlsdGVyIG5v
ZGVGaWx0ZXIsIEFwcGVuZFN1YnRhcmdldHNGb3JOb2RlIGFwcGVuZFN1YnRhcmdldHNGb3JOb2Rl
KQogewpAQCAtMjQ4LDcgKzI1OCw3IEBAIHZvaWQgY29tcGlsZVN1YnRhcmdldExpc3QoY29uc3Qg
Tm9kZUxpc3QmIGludGVyc2VjdGVkTm9kZXMsIFN1YnRhcmdldEdlb21ldHJ5TGlzCiAgICAgICAg
ICAgICBpZiAobm9kZUZpbHRlcih2aXNpdGVkTm9kZSkpIHsKICAgICAgICAgICAgICAgICByZXNw
b25kaW5nTm9kZSA9IHZpc2l0ZWROb2RlOwogICAgICAgICAgICAgICAgIC8vIENvbnRpbnVlIHRo
ZSBpdGVyYXRpb24gdG8gY29sbGVjdCB0aGUgYW5jZXN0b3JzIG9mIHRoZSByZXNwb25kZXIsIHdo
aWNoIHdlIHdpbGwgbmVlZCBsYXRlci4KLSAgICAgICAgICAgICAgICBmb3IgKHZpc2l0ZWROb2Rl
ID0gdmlzaXRlZE5vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKTsgdmlzaXRlZE5vZGU7IHZp
c2l0ZWROb2RlID0gdmlzaXRlZE5vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSkgeworICAg
ICAgICAgICAgICAgIGZvciAodmlzaXRlZE5vZGUgPSBwYXJlbnRTaGFkb3dIb3N0T3JPd25lcih2
aXNpdGVkTm9kZSk7IHZpc2l0ZWROb2RlOyB2aXNpdGVkTm9kZSA9IHBhcmVudFNoYWRvd0hvc3RP
ck93bmVyKHZpc2l0ZWROb2RlKSkgewogICAgICAgICAgICAgICAgICAgICBIYXNoU2V0PE5vZGUq
Pjo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IGFuY2VzdG9yc1RvUmVzcG9uZGVyc1NldC5hZGQodmlz
aXRlZE5vZGUpOwogICAgICAgICAgICAgICAgICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5
KQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9IaXRUZXN0UmVxdWVzdC5oCmluZGV4IDE5MWNjNWM3M2VhNzY4M2I2ZTUxZTQ1MTI2OGMyMzEx
Mzc5YmIyN2YuLjIyZTVkMzc2YzhiODY1M2RmOWEyNzM2NGJkZDZmOTBmZTc3MjZkMmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVxdWVzdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVxdWVzdC5oCkBAIC0zNiw3ICszNiw5IEBA
IHB1YmxpYzoKICAgICAgICAgU1ZHQ2xpcENvbnRlbnQgPSAxIDw8IDYsCiAgICAgICAgIFRvdWNo
RXZlbnQgPSAxIDw8IDcsCiAgICAgICAgIEFsbG93U2hhZG93Q29udGVudCA9IDEgPDwgOCwKLSAg
ICAgICAgQWxsb3dGcmFtZVNjcm9sbGJhcnMgPSAxIDw8IDkKKyAgICAgICAgQWxsb3dGcmFtZVNj
cm9sbGJhcnMgPSAxIDw8IDksCisgICAgICAgIEFsbG93Q2hpbGRGcmFtZUNvbnRlbnQgPSAxIDw8
IDEwLAorICAgICAgICBDaGlsZEZyYW1lSGl0VGVzdCA9IDEgPDwgMTEKICAgICB9OwogCiAgICAg
dHlwZWRlZiB1bnNpZ25lZCBIaXRUZXN0UmVxdWVzdFR5cGU7CkBAIC01Niw2ICs1OCw4IEBAIHB1
YmxpYzoKICAgICBib29sIG1vdXNlRXZlbnQoKSBjb25zdCB7IHJldHVybiAhdG91Y2hFdmVudCgp
OyB9CiAgICAgYm9vbCBhbGxvd3NTaGFkb3dDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9yZXF1
ZXN0VHlwZSAmIEFsbG93U2hhZG93Q29udGVudDsgfQogICAgIGJvb2wgYWxsb3dzRnJhbWVTY3Jv
bGxiYXJzKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0VHlwZSAmIEFsbG93RnJhbWVTY3JvbGxi
YXJzOyB9CisgICAgYm9vbCBhbGxvd3NDaGlsZEZyYW1lQ29udGVudCgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVxdWVzdFR5cGUgJiBBbGxvd0NoaWxkRnJhbWVDb250ZW50OyB9CisgICAgYm9vbCBpc0No
aWxkRnJhbWVIaXRUZXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0VHlwZSAmIENoaWxkRnJh
bWVIaXRUZXN0OyB9CiAKICAgICAvLyBDb252ZW5pZW5jZSBmdW5jdGlvbnMKICAgICBib29sIHRv
dWNoTW92ZSgpIGNvbnN0IHsgcmV0dXJuIG1vdmUoKSAmJiB0b3VjaEV2ZW50KCk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAppbmRleCBlYWNiYzY1YmZmOTk3
ZTc4YWFmNWY1MzYwODAxMTdmNDhlYzY1OTBlLi5hNWZlM2EwMTA1N2Y1ODU1MjY2Y2NmNzZjOWRj
NDc4NzNjMWZmNGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVz
dFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQu
Y3BwCkBAIC0xOTksMjEgKzE5OSwyMSBAQCBIaXRUZXN0UmVzdWx0OjpIaXRUZXN0UmVzdWx0KCkK
IAogSGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3VsdChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQp
CiAgICAgOiBtX2hpdFRlc3RMb2NhdGlvbihwb2ludCkKLSAgICAsIG1fcG9pbnRJbk1haW5GcmFt
ZShwb2ludCkKKyAgICAsIG1fcG9pbnRJbklubmVyTm9kZUZyYW1lKHBvaW50KQogICAgICwgbV9p
c092ZXJXaWRnZXQoZmFsc2UpCiB7CiB9CiAKIEhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQo
Y29uc3QgTGF5b3V0UG9pbnQmIGNlbnRlclBvaW50LCB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNp
Z25lZCByaWdodFBhZGRpbmcsIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQ
YWRkaW5nKQogICAgIDogbV9oaXRUZXN0TG9jYXRpb24oY2VudGVyUG9pbnQsIHRvcFBhZGRpbmcs
IHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcpCi0gICAgLCBtX3BvaW50
SW5NYWluRnJhbWUoY2VudGVyUG9pbnQpCisgICAgLCBtX3BvaW50SW5Jbm5lck5vZGVGcmFtZShj
ZW50ZXJQb2ludCkKICAgICAsIG1faXNPdmVyV2lkZ2V0KGZhbHNlKQogewogfQogCiBIaXRUZXN0
UmVzdWx0OjpIaXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgb3RoZXIpCiAgICAg
OiBtX2hpdFRlc3RMb2NhdGlvbihvdGhlcikKLSAgICAsIG1fcG9pbnRJbk1haW5GcmFtZShtX2hp
dFRlc3RMb2NhdGlvbi5wb2ludCgpKQorICAgICwgbV9wb2ludEluSW5uZXJOb2RlRnJhbWUobV9o
aXRUZXN0TG9jYXRpb24ucG9pbnQoKSkKICAgICAsIG1faXNPdmVyV2lkZ2V0KGZhbHNlKQogewog
fQpAQCAtMjIyLDcgKzIyMiw3IEBAIEhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQoY29uc3Qg
SGl0VGVzdFJlc3VsdCYgb3RoZXIpCiAgICAgOiBtX2hpdFRlc3RMb2NhdGlvbihvdGhlci5tX2hp
dFRlc3RMb2NhdGlvbikKICAgICAsIG1faW5uZXJOb2RlKG90aGVyLmlubmVyTm9kZSgpKQogICAg
ICwgbV9pbm5lck5vblNoYXJlZE5vZGUob3RoZXIuaW5uZXJOb25TaGFyZWROb2RlKCkpCi0gICAg
LCBtX3BvaW50SW5NYWluRnJhbWUob3RoZXIubV9wb2ludEluTWFpbkZyYW1lKQorICAgICwgbV9w
b2ludEluSW5uZXJOb2RlRnJhbWUob3RoZXIubV9wb2ludEluSW5uZXJOb2RlRnJhbWUpCiAgICAg
LCBtX2xvY2FsUG9pbnQob3RoZXIubG9jYWxQb2ludCgpKQogICAgICwgbV9pbm5lclVSTEVsZW1l
bnQob3RoZXIuVVJMRWxlbWVudCgpKQogICAgICwgbV9zY3JvbGxiYXIob3RoZXIuc2Nyb2xsYmFy
KCkpCkBAIC0yNDEsNyArMjQxLDcgQEAgSGl0VGVzdFJlc3VsdCYgSGl0VGVzdFJlc3VsdDo6b3Bl
cmF0b3I9KGNvbnN0IEhpdFRlc3RSZXN1bHQmIG90aGVyKQogICAgIG1faGl0VGVzdExvY2F0aW9u
ID0gb3RoZXIubV9oaXRUZXN0TG9jYXRpb247CiAgICAgbV9pbm5lck5vZGUgPSBvdGhlci5pbm5l
ck5vZGUoKTsKICAgICBtX2lubmVyTm9uU2hhcmVkTm9kZSA9IG90aGVyLmlubmVyTm9uU2hhcmVk
Tm9kZSgpOwotICAgIG1fcG9pbnRJbk1haW5GcmFtZSA9IG90aGVyLm1fcG9pbnRJbk1haW5GcmFt
ZTsKKyAgICBtX3BvaW50SW5Jbm5lck5vZGVGcmFtZSA9IG90aGVyLm1fcG9pbnRJbklubmVyTm9k
ZUZyYW1lOwogICAgIG1fbG9jYWxQb2ludCA9IG90aGVyLmxvY2FsUG9pbnQoKTsKICAgICBtX2lu
bmVyVVJMRWxlbWVudCA9IG90aGVyLlVSTEVsZW1lbnQoKTsKICAgICBtX3Njcm9sbGJhciA9IG90
aGVyLnNjcm9sbGJhcigpOwpAQCAtNzM1LDcgKzczNSw3IEBAIHZvaWQgSGl0VGVzdFJlc3VsdDo6
YXBwZW5kKGNvbnN0IEhpdFRlc3RSZXN1bHQmIG90aGVyKQogICAgICAgICBtX2lubmVyTm9kZSA9
IG90aGVyLmlubmVyTm9kZSgpOwogICAgICAgICBtX2lubmVyTm9uU2hhcmVkTm9kZSA9IG90aGVy
LmlubmVyTm9uU2hhcmVkTm9kZSgpOwogICAgICAgICBtX2xvY2FsUG9pbnQgPSBvdGhlci5sb2Nh
bFBvaW50KCk7Ci0gICAgICAgIG1fcG9pbnRJbk1haW5GcmFtZSA9IG90aGVyLm1fcG9pbnRJbk1h
aW5GcmFtZTsKKyAgICAgICAgbV9wb2ludEluSW5uZXJOb2RlRnJhbWUgPSBvdGhlci5tX3BvaW50
SW5Jbm5lck5vZGVGcmFtZTsKICAgICAgICAgbV9pbm5lclVSTEVsZW1lbnQgPSBvdGhlci5VUkxF
bGVtZW50KCk7CiAgICAgICAgIG1fc2Nyb2xsYmFyID0gb3RoZXIuc2Nyb2xsYmFyKCk7CiAgICAg
ICAgIG1faXNPdmVyV2lkZ2V0ID0gb3RoZXIuaXNPdmVyV2lkZ2V0KCk7CkBAIC03NjgsNyArNzY4
LDcgQEAgVmVjdG9yPFN0cmluZz4gSGl0VGVzdFJlc3VsdDo6ZGljdGF0aW9uQWx0ZXJuYXRpdmVz
KCkgY29uc3QKICAgICBpZiAoIW1faW5uZXJOb25TaGFyZWROb2RlKQogICAgICAgICByZXR1cm4g
VmVjdG9yPFN0cmluZz4oKTsKIAotICAgIERvY3VtZW50TWFya2VyKiBtYXJrZXIgPSBtX2lubmVy
Tm9uU2hhcmVkTm9kZS0+ZG9jdW1lbnQoKS0+bWFya2VycygpLT5tYXJrZXJDb250YWluaW5nUG9p
bnQoaGl0VGVzdExvY2F0aW9uKCkucG9pbnQoKSwgRG9jdW1lbnRNYXJrZXI6OkRpY3RhdGlvbkFs
dGVybmF0aXZlcyk7CisgICAgRG9jdW1lbnRNYXJrZXIqIG1hcmtlciA9IG1faW5uZXJOb25TaGFy
ZWROb2RlLT5kb2N1bWVudCgpLT5tYXJrZXJzKCktPm1hcmtlckNvbnRhaW5pbmdQb2ludChwb2lu
dEluSW5uZXJOb2RlRnJhbWUoKSwgRG9jdW1lbnRNYXJrZXI6OkRpY3RhdGlvbkFsdGVybmF0aXZl
cyk7CiAgICAgaWYgKCFtYXJrZXIpCiAgICAgICAgIHJldHVybiBWZWN0b3I8U3RyaW5nPigpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaAppbmRleCBjMmUwYmYyYTc5
NTllMGZmMjg1ZWU3NTI5MTJmYWE5ZDdjOWJkNDU5Li4yN2NiYjVlYWQ0NjQ0MDRmYTZjYmFmZmYx
NDg4MmYyNTMzZWY0ZGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0
VGVzdFJlc3VsdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0
LmgKQEAgLTEyNSwxMiArMTI1LDExIEBAIHB1YmxpYzoKICAgICBib29sIGlzUmVjdEJhc2VkVGVz
dCgpIGNvbnN0IHsgcmV0dXJuIG1faGl0VGVzdExvY2F0aW9uLmlzUmVjdEJhc2VkVGVzdCgpOyB9
CiAKICAgICAvLyBUaGUgaGl0LXRlc3RlZCBwb2ludCBpbiB0aGUgY29vcmRpbmF0ZXMgb2YgdGhl
IG1haW4gZnJhbWUuCi0gICAgY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50SW5NYWluRnJhbWUoKSBj
b25zdCB7IHJldHVybiBtX3BvaW50SW5NYWluRnJhbWU7IH0KKyAgICBjb25zdCBMYXlvdXRQb2lu
dCYgcG9pbnRJbk1haW5GcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1faGl0VGVzdExvY2F0aW9uLnBv
aW50KCk7IH0KICAgICBJbnRQb2ludCByb3VuZGVkUG9pbnRJbk1haW5GcmFtZSgpIGNvbnN0IHsg
cmV0dXJuIHJvdW5kZWRJbnRQb2ludChwb2ludEluTWFpbkZyYW1lKCkpOyB9Ci0gICAgdm9pZCBz
ZXRQb2ludEluTWFpbkZyYW1lKGNvbnN0IExheW91dFBvaW50JiBwKSB7IG1fcG9pbnRJbk1haW5G
cmFtZSA9IHA7IH0KIAogICAgIC8vIFRoZSBoaXQtdGVzdGVkIHBvaW50IGluIHRoZSBjb29yZGlu
YXRlcyBvZiB0aGUgaW5uZXJOb2RlIGZyYW1lLCB0aGUgZnJhbWUgY29udGFpbmluZyBpbm5lck5v
ZGUuCi0gICAgY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50SW5Jbm5lck5vZGVGcmFtZSgpIGNvbnN0
IHsgcmV0dXJuIG1faGl0VGVzdExvY2F0aW9uLnBvaW50KCk7IH0KKyAgICBjb25zdCBMYXlvdXRQ
b2ludCYgcG9pbnRJbklubmVyTm9kZUZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9wb2ludEluSW5u
ZXJOb2RlRnJhbWU7IH0KICAgICBJbnRQb2ludCByb3VuZGVkUG9pbnRJbklubmVyTm9kZUZyYW1l
KCkgY29uc3QgeyByZXR1cm4gcm91bmRlZEludFBvaW50KHBvaW50SW5Jbm5lck5vZGVGcmFtZSgp
KTsgfQogICAgIEZyYW1lKiBpbm5lck5vZGVGcmFtZSgpIGNvbnN0OwogCkBAIC0yMDMsNyArMjAy
LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxOb2RlPiBtX2lubmVyTm9kZTsKICAgICBSZWZQ
dHI8Tm9kZT4gbV9pbm5lck5vblNoYXJlZE5vZGU7Ci0gICAgTGF5b3V0UG9pbnQgbV9wb2ludElu
TWFpbkZyYW1lOyAvLyBUaGUgaGl0LXRlc3RlZCBwb2ludCBpbiBtYWluLWZyYW1lIGNvb3JkaW5h
dGVzLgorICAgIExheW91dFBvaW50IG1fcG9pbnRJbklubmVyTm9kZUZyYW1lOyAvLyBUaGUgaGl0
LXRlc3RlZCBwb2ludCBpbiBpbm5lck5vZGUgZnJhbWUgY29vcmRpbmF0ZXMuCiAgICAgTGF5b3V0
UG9pbnQgbV9sb2NhbFBvaW50OyAvLyBBIHBvaW50IGluIHRoZSBsb2NhbCBjb29yZGluYXRlIHNw
YWNlIG9mIG1faW5uZXJOb25TaGFyZWROb2RlJ3MgcmVuZGVyZXIuIEFsbG93cyB1cyB0byBlZmZp
Y2llbnRseQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGV0ZXJtaW5lIHdoZXJl
IGluc2lkZSB0aGUgcmVuZGVyZXIgd2UgaGl0IG9uIHN1YnNlcXVlbnQgb3BlcmF0aW9ucy4KICAg
ICBSZWZQdHI8RWxlbWVudD4gbV9pbm5lclVSTEVsZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuY3BwCmluZGV4IGY3OWEyMWE5OTU4ZmIwZGZlZWUwM2M2
ZTkzZjM1MmE3NDJjMjEzZTEuLjg0MjNhMzU0YzBhODk4NjU3MWEzMjJlNDI3ZTg2MWRmYTAwODky
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuY3BwCkBA
IC0yOSw2ICsyOSw4IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcu
aCIKICNpbmNsdWRlICJIVE1MRnJhbWVFbGVtZW50QmFzZS5oIgorI2luY2x1ZGUgIkhpdFRlc3RS
ZXN1bHQuaCIKKyNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTAyLDQgKzEwNCwzNyBAQCB2b2lkIFJlbmRl
ckZyYW1lQmFzZTo6bGF5b3V0V2l0aEZsYXR0ZW5pbmcoYm9vbCBoYXNGaXhlZFdpZHRoLCBib29s
IGhhc0ZpeGVkSGVpZwogICAgIHNldE5lZWRzTGF5b3V0KGZhbHNlKTsKIH0KIAorYm9vbCBSZW5k
ZXJGcmFtZUJhc2U6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBI
aXRUZXN0UmVzdWx0JiByZXN1bHQsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNv
bnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0
aW9uIGFjdGlvbikKK3sKKyAgICBpZiAoIXJlcXVlc3QuYWxsb3dzQ2hpbGRGcmFtZUNvbnRlbnQo
KSkKKyAgICAgICAgcmV0dXJuIFJlbmRlclBhcnQ6Om5vZGVBdFBvaW50KHJlcXVlc3QsIHJlc3Vs
dCwgbG9jYXRpb25JbkNvbnRhaW5lciwgYWNjdW11bGF0ZWRPZmZzZXQsIGFjdGlvbik7CisKKyAg
ICBGcmFtZVZpZXcqIGNoaWxkRnJhbWVWaWV3ID0gc3RhdGljX2Nhc3Q8RnJhbWVWaWV3Kj4od2lk
Z2V0KCkpOworICAgIFJlbmRlclZpZXcqIGNoaWxkUm9vdCA9IGNoaWxkRnJhbWVWaWV3ID8gY2hp
bGRGcmFtZVZpZXctPnJlbmRlclZpZXcoKSA6IDA7CisKKyAgICBpZiAoY2hpbGRSb290KSB7Cisg
ICAgICAgIExheW91dFBvaW50IGFkanVzdGVkTG9jYXRpb24gPSBhY2N1bXVsYXRlZE9mZnNldCAr
IGxvY2F0aW9uKCk7CisgICAgICAgIExheW91dFBvaW50IGNvbnRlbnRPZmZzZXQgPSBMYXlvdXRQ
b2ludChib3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpLCBib3JkZXJUb3AoKSArIHBhZGRpbmdU
b3AoKSkgLSBjaGlsZEZyYW1lVmlldy0+c2Nyb2xsT2Zmc2V0KCk7CisgICAgICAgIEhpdFRlc3RM
b2NhdGlvbiBuZXdIaXRUZXN0TG9jYXRpb24obG9jYXRpb25JbkNvbnRhaW5lciwgLWFkanVzdGVk
TG9jYXRpb24gLSBjb250ZW50T2Zmc2V0KTsKKyAgICAgICAgSGl0VGVzdFJlcXVlc3QgbmV3SGl0
VGVzdFJlcXVlc3QocmVxdWVzdC50eXBlKCkgfCBIaXRUZXN0UmVxdWVzdDo6Q2hpbGRGcmFtZUhp
dFRlc3QpOworICAgICAgICBIaXRUZXN0UmVzdWx0IGNoaWxkRnJhbWVSZXN1bHQobmV3SGl0VGVz
dExvY2F0aW9uKTsKKworICAgICAgICBib29sIGlzSW5zaWRlQ2hpbGRGcmFtZSA9IGNoaWxkUm9v
dC0+aGl0VGVzdChuZXdIaXRUZXN0UmVxdWVzdCwgbmV3SGl0VGVzdExvY2F0aW9uLCBjaGlsZEZy
YW1lUmVzdWx0KTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChjaGlsZEZyYW1lUmVzdWx0KTsKKyAg
ICAgICAgaWYgKGlzSW5zaWRlQ2hpbGRGcmFtZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
CisgICAgICAgIGlmIChyZXF1ZXN0LmFsbG93c0ZyYW1lU2Nyb2xsYmFycygpKSB7CisgICAgICAg
ICAgICAvLyBTY3JvbGxWaWV3IHNjcm9sbGJhcnMgYXJlIG5vdCB0aGUgc2FtZSBhcyBSZW5kZXJM
YXllciBzY3JvbGxiYXJzIHRlc3RlZCBieSBSZW5kZXJMYXllcjo6aGl0VGVzdE92ZXJmbG93Q29u
dHJvbHMsCisgICAgICAgICAgICAvLyBzbyB3ZSBuZWVkIHRvIHRlc3QgU2Nyb2xsVmlldyBzY3Jv
bGxiYXJzIHNlcGFyYXRlbHkgaGVyZS4KKyAgICAgICAgICAgIC8vIEZJWE1FOiBDb25zaWRlciBp
ZiB0aGlzIHRlc3QgY291bGQgYmUgZG9uZSB1bmNvbmRpdGlvbmFsbHkuCisgICAgICAgICAgICBT
Y3JvbGxiYXIqIGZyYW1lU2Nyb2xsYmFyID0gY2hpbGRGcmFtZVZpZXctPnNjcm9sbGJhckF0UG9p
bnQobmV3SGl0VGVzdExvY2F0aW9uLnJvdW5kZWRQb2ludCgpKTsKKyAgICAgICAgICAgIGlmIChm
cmFtZVNjcm9sbGJhcikKKyAgICAgICAgICAgICAgICByZXN1bHQuc2V0U2Nyb2xsYmFyKGZyYW1l
U2Nyb2xsYmFyKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBSZW5kZXJQYXJ0Ojpu
b2RlQXRQb2ludChyZXF1ZXN0LCByZXN1bHQsIGxvY2F0aW9uSW5Db250YWluZXIsIGFjY3VtdWxh
dGVkT2Zmc2V0LCBhY3Rpb24pOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRnJhbWVCYXNlLmgKaW5kZXggNGZhZDU2MGM1YjMzN2Y5NmI4MTNiMGNiNzkwNTQ1MzYyZGM2
Njg3Yy4uYTdkZWVkYWIxMDI4M2RmNjk1NDE4ZWRlMGZiYjk0ZDQ5ZTEyZTQ5MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuaApAQCAtMzYsNiArMzYsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgUmVuZGVyRnJhbWVCYXNlKEVsZW1lbnQqKTsKIAogcHVi
bGljOgorICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYs
IEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWlu
ZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbikg
T1ZFUlJJREU7CiAgICAgdm9pZCBsYXlvdXRXaXRoRmxhdHRlbmluZyhib29sIGZpeGVkV2lkdGgs
IGJvb2wgZml4ZWRIZWlnaHQpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5jcHAKaW5kZXggOThiYzFiODllM2FjMGU0ZTdkMTBlNDFhNzU4NzgyZDUxOGI4NGQxYi4u
YWRhZWE5MmZiNTdjYTUxMjFjZDVlZjk4MWI2ZjcwNzU1ZjM3NmZhMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC00MDA2LDcgKzQwMDYsNyBAQCBib29sIFJl
bmRlckxheWVyOjpoaXRUZXN0KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBI
aXRUZXN0TG9jYXRpb24mCiAgICAgICAgIC8vIFdlIGRpZG4ndCBoaXQgYW55IGxheWVyLiBJZiB3
ZSBhcmUgdGhlIHJvb3QgbGF5ZXIgYW5kIHRoZSBtb3VzZSBpcyAtLSBvciBqdXN0IHdhcyAtLSBk
b3duLCAKICAgICAgICAgLy8gcmV0dXJuIG91cnNlbHZlcy4gV2UgZG8gdGhpcyBzbyBtb3VzZSBl
dmVudHMgY29udGludWUgZ2V0dGluZyBkZWxpdmVyZWQgYWZ0ZXIgYSBkcmFnIGhhcyAKICAgICAg
ICAgLy8gZXhpdGVkIHRoZSBXZWJWaWV3LCBhbmQgc28gaGl0IHRlc3Rpbmcgb3ZlciBhIHNjcm9s
bGJhciBoaXRzIHRoZSBjb250ZW50IGRvY3VtZW50LgotICAgICAgICBpZiAoKHJlcXVlc3QuYWN0
aXZlKCkgfHwgcmVxdWVzdC5yZWxlYXNlKCkpICYmIGlzUm9vdExheWVyKCkpIHsKKyAgICAgICAg
aWYgKCFyZXF1ZXN0LmlzQ2hpbGRGcmFtZUhpdFRlc3QoKSAmJiAocmVxdWVzdC5hY3RpdmUoKSB8
fCByZXF1ZXN0LnJlbGVhc2UoKSkgJiYgaXNSb290TGF5ZXIoKSkgewogICAgICAgICAgICAgcmVu
ZGVyZXIoKS0+dXBkYXRlSGl0VGVzdFJlc3VsdChyZXN1bHQsIHRvUmVuZGVyVmlldyhyZW5kZXJl
cigpKS0+ZmxpcEZvcldyaXRpbmdNb2RlKGhpdFRlc3RMb2NhdGlvbi5wb2ludCgpKSk7CiAgICAg
ICAgICAgICBpbnNpZGVMYXllciA9IHRoaXM7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcAppbmRleCAzODM0NDEwOTE2MzAxMjkzN2M5ZjU1NWMwZTU3Mjg0OTM4ZjNm
ZmE3Li4xNzFlYjViNTIzODcyMGVhOWNmMjhhYWRjZDE3YjI4YTM1MzcwNWQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xMzk4LDcgKzEzOTgsNyBAQCBQYXNzUmVmUHRy
PENsaWVudFJlY3RMaXN0PiBJbnRlcm5hbHM6OnRvdWNoRXZlbnRUYXJnZXRDbGllbnRSZWN0cyhE
b2N1bWVudCogZG9jdQogI2VuZGlmCiAKIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IEludGVybmFsczo6
bm9kZXNGcm9tUmVjdChEb2N1bWVudCogZG9jdW1lbnQsIGludCB4LCBpbnQgeSwgdW5zaWduZWQg
dG9wUGFkZGluZywgdW5zaWduZWQgcmlnaHRQYWRkaW5nLAotICAgIHVuc2lnbmVkIGJvdHRvbVBh
ZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nLCBib29sIGlnbm9yZUNsaXBwaW5nLCBib29sIGFs
bG93U2hhZG93Q29udGVudCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CisgICAgdW5zaWduZWQg
Ym90dG9tUGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcsIGJvb2wgaWdub3JlQ2xpcHBpbmcs
IGJvb2wgYWxsb3dTaGFkb3dDb250ZW50LCBib29sIGFsbG93Q2hpbGRGcmFtZUNvbnRlbnQsIEV4
Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogewogICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50
LT5mcmFtZSgpIHx8ICFkb2N1bWVudC0+ZnJhbWUoKS0+dmlldygpKSB7CiAgICAgICAgIGVjID0g
SU5WQUxJRF9BQ0NFU1NfRVJSOwpAQCAtMTQxMCw2ICsxNDEwLDggQEAgUGFzc1JlZlB0cjxOb2Rl
TGlzdD4gSW50ZXJuYWxzOjpub2Rlc0Zyb21SZWN0KERvY3VtZW50KiBkb2N1bWVudCwgaW50IHgs
IGludCB5LAogICAgICAgICBoaXRUeXBlIHw9IEhpdFRlc3RSZXF1ZXN0OjpJZ25vcmVDbGlwcGlu
ZzsKICAgICBpZiAoYWxsb3dTaGFkb3dDb250ZW50KQogICAgICAgICBoaXRUeXBlIHw9IEhpdFRl
c3RSZXF1ZXN0OjpBbGxvd1NoYWRvd0NvbnRlbnQ7CisgICAgaWYgKGFsbG93Q2hpbGRGcmFtZUNv
bnRlbnQpCisgICAgICAgIGhpdFR5cGUgfD0gSGl0VGVzdFJlcXVlc3Q6OkFsbG93Q2hpbGRGcmFt
ZUNvbnRlbnQ7CiAKICAgICByZXR1cm4gZG9jdW1lbnQtPm5vZGVzRnJvbVJlY3QoeCwgeSwgdG9w
UGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0UGFkZGluZywgaGl0VHlw
ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCAzY2FkYTE5YzMzYmM2OGEz
MTg5ODE5NGQyOGZjOGE5MzU4OTk4Nzc5Li45MDcwNDI3ODgxMWNjZTI2OTc5ZmNiYzM4N2VhZTNh
MTVmMDVjNWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTE5MCw3ICsxOTAs
NyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IG5vZGVzRnJv
bVJlY3QoRG9jdW1lbnQqLCBpbnQgeCwgaW50IHksIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2ln
bmVkIHJpZ2h0UGFkZGluZywKLSAgICAgICAgdW5zaWduZWQgYm90dG9tUGFkZGluZywgdW5zaWdu
ZWQgbGVmdFBhZGRpbmcsIGJvb2wgaWdub3JlQ2xpcHBpbmcsIGJvb2wgYWxsb3dTaGFkb3dDb250
ZW50LCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CisgICAgICAgIHVuc2lnbmVkIGJvdHRvbVBhZGRp
bmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nLCBib29sIGlnbm9yZUNsaXBwaW5nLCBib29sIGFsbG93
U2hhZG93Q29udGVudCwgYm9vbCBhbGxvd0NoaWxkRnJhbWVDb250ZW50LCBFeGNlcHRpb25Db2Rl
JikgY29uc3Q7CiAKICAgICB2b2lkIGVtaXRJbnNwZWN0b3JEaWRCZWdpbkZyYW1lKCk7CiAgICAg
dm9pZCBlbWl0SW5zcGVjdG9yRGlkQ2FuY2VsRnJhbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmlkbAppbmRleCA4NWVmZDk0NWJkOTU3Nzc5YWVjZjQyZDEzOTkwYzA0ODQyMTgzOTc0
Li41YTg3ZTMzNjk0NjdlNDM5NGY3ODBmOGE2M2I2MGRkZTNiYmUxMmFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC0xNTgsNyArMTU4LDcgQEAKIAogICAgIE5vZGVMaXN0
IG5vZGVzRnJvbVJlY3QoaW4gRG9jdW1lbnQgZG9jdW1lbnQsIGluIGxvbmcgeCwgaW4gbG9uZyB5
LAogICAgICAgICBpbiB1bnNpZ25lZCBsb25nIHRvcFBhZGRpbmcsIGluIHVuc2lnbmVkIGxvbmcg
cmlnaHRQYWRkaW5nLCBpbiB1bnNpZ25lZCBsb25nIGJvdHRvbVBhZGRpbmcsIGluIHVuc2lnbmVk
IGxvbmcgbGVmdFBhZGRpbmcsCi0gICAgICAgIGluIGJvb2xlYW4gaWdub3JlQ2xpcHBpbmcsIGlu
IGJvb2xlYW4gYWxsb3dTaGFkb3dDb250ZW50KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisgICAg
ICAgIGluIGJvb2xlYW4gaWdub3JlQ2xpcHBpbmcsIGluIGJvb2xlYW4gYWxsb3dTaGFkb3dDb250
ZW50LCBpbiBib29sZWFuIGFsbG93Q2hpbGRGcmFtZUNvbnRlbnQpIHJhaXNlcyAoRE9NRXhjZXB0
aW9uKTsKIAogICAgIHZvaWQgZW1pdEluc3BlY3RvckRpZEJlZ2luRnJhbWUoKTsKICAgICB2b2lk
IGVtaXRJbnNwZWN0b3JEaWRDYW5jZWxGcmFtZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDgzYTQ4NjVmMDYxNGIwZDk2
ZjUxMjdhMzBkNjM0MDc0MjY2OTZhZWUuLmQ2YmZlZTJkMTE1YmJjNWVjNDRjOGI1ZTMzNzIxNTMx
Yjk1NjI0NTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMy0wMi0xOSAgQWxsYW4gU2FuZGZl
bGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KKworICAgICAgICBBbGxvdyBjaGls
ZC1mcmFtZSBjb250ZW50IGluIGhpdC10ZXN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk1MjA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQSBuZXcgdGVzdHMgZm9yIG5vZGVzRnJvbVJlY3QgdGhhdCBy
ZXR1cm5zIHJlc3VsdCBmcm9tIGNoaWxkIGZyYW1lcy4KKworICAgICAgICAqIGZhc3QvZG9tL25v
ZGVzRnJvbVJlY3Qvbm9kZXNGcm9tUmVjdC1jaGlsZC1mcmFtZS1jb250ZW50LWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vbm9kZXNGcm9tUmVjdC9ub2Rlc0Zyb21SZWN0
LWNoaWxkLWZyYW1lLWNvbnRlbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vbm9k
ZXNGcm9tUmVjdC9ub2Rlc0Zyb21SZWN0LWNvbnRpbnVhdGlvbi1jcmFzaC5odG1sOgorICAgICAg
ICAqIGZhc3QvZG9tL25vZGVzRnJvbVJlY3QvcmVzb3VyY2VzL2NoaWxkLWZyYW1lLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZG9tL25vZGVzRnJvbVJlY3QvcmVzb3VyY2VzL25vZGVzRnJv
bVJlY3QuanM6CisgICAgICAgIChjaGVjayk6CisgICAgICAgIChjaGVja1NoYWRvd0NvbnRlbnQp
OgorICAgICAgICAobm9kZXNGcm9tUmVjdEFzU3RyaW5nKToKKwogMjAxMy0wMi0xOSAgQXJwaXRh
IEJhaHVndW5hICA8YXJwaXRhYmFodWd1bmFAZ21haWwuY29tPgogCiAgICAgICAgIENhcmV0IGlz
IG5vdCBkaXNwbGF5ZWQgd2hlbiB0cnlpbmcgdG8gZm9jdXMgaW5zaWRlIGEgY29udGVudGVkaXRh
YmxlIGVsZW1lbnQgY29udGFpbmluZyBhbiBlbXB0eSBibG9jay4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3Qvbm9kZXNGcm9tUmVjdC1jaGlsZC1mcmFtZS1j
b250ZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3Qv
bm9kZXNGcm9tUmVjdC1jaGlsZC1mcmFtZS1jb250ZW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45YzFjOTcwMGMyNTliZDIyNDkwMDNhM2U4MDM1NDdlMTI0ZGNmZmZmCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9tUmVjdC9ub2Rlc0Zyb21SZWN0LWNo
aWxkLWZyYW1lLWNvbnRlbnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTggQEAKKworRG9jdW1l
bnQ6Om5vZGVzRnJvbVJlY3QgOiBBbGxvdyBjaGlsZC1mcmFtZSBjb250ZW50IC0gYnVnIDk1MjA0
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIEFsbCBjb3JyZWN0IG5vZGVz
IGZvdW5kIGZvciByZWN0CitQQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0CitQ
QVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0CitQQVNTIEFsbCBjb3JyZWN0IG5v
ZGVzIGZvdW5kIGZvciByZWN0CitQQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0
CitQQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciByZWN0CitQQVNTIEFsbCBjb3JyZWN0
IG5vZGVzIGZvdW5kIGZvciByZWN0CitQQVNTIEFsbCBjb3JyZWN0IG5vZGVzIGZvdW5kIGZvciBy
ZWN0CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9tUmVjdC9ub2Rlc0Zyb21S
ZWN0LWNoaWxkLWZyYW1lLWNvbnRlbnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVz
RnJvbVJlY3Qvbm9kZXNGcm9tUmVjdC1jaGlsZC1mcmFtZS1jb250ZW50Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYWRiNDE2N2IxNzgwMmRjZWI5ZTM4NmM1NGUzMWU1NDY4NWM1MWU5NAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3Qvbm9kZXNGcm9tUmVjdC1j
aGlsZC1mcmFtZS1jb250ZW50Lmh0bWwKQEAgLTAsMCArMSw3NyBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorICAgIDx0aXRsZT5Eb2N1bWVudDo6bm9kZXNGcm9tUmVjdCA6IEFs
bG93IGNoaWxkLWZyYW1lIGNvbnRlbnQgLSBidWcgOTUyMDQ8L3RpdGxlPgorICAgIDxzY3JpcHQg
c3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvbm9kZXNGcm9tUmVjdC5qcyI+PC9zY3JpcHQ+CisgICAgPHN0
eWxlPgorICAgICAgICBib2R5IHsgbWFyZ2luOiAwcHg7IH0KKyAgICAgICAgI3NhbmRib3ggewor
ICAgICAgICAgICAgd2lkdGg6IDQwMHB4OworICAgICAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAg
ICAgICAgfQorICAgICAgICAjc2FuZGJveCAjbGF5ZXIgeworICAgICAgICAgICAgZmxvYXQ6IHJp
Z2h0OworICAgICAgICB9CisgICAgICAgICNzYW5kYm94IGlmcmFtZSB7CisgICAgICAgICAgICBk
aXNwbGF5OiBibG9jazsKKyAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CisgICAg
ICAgICAgICB3aWR0aDogMjAwcHg7CisgICAgICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgICAg
ICAgICAgYm9yZGVyOiBub25lOworICAgICAgICB9CisgICAgICAgIC5yb3RhdGUxODAgeyAtd2Vi
a2l0LXRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7IH0KKyAgICAgICAgLnJvdGF0ZTkwIHsgLXdl
YmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7IH0KKyAgICAgICAgI3NhbmRib3ggLmJveCB7
CisgICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OworICAgICAgICAgICAgaGVpZ2h0
OiAxMDBweDsKKyAgICAgICAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgICAgICAgIGJvcmRlcjog
MXB4IHNvbGlkIGJsYWNrOworICAgICAgICB9CisgICAgPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5
IGlkPSJib2R5Ij4KKyAgICA8ZGl2IGlkPXNhbmRib3g+CisgICAgICAgIDxkaXYgaWQ9bGF5ZXI+
CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJpZnJhbWUxIiBzcmM9InJlc291cmNlcy9jaGlsZC1m
cmFtZS5odG1sIj48L2lmcmFtZT4KKyAgICAgICAgPC9kaXY+CisgICAgICAgIDxkaXYgaWQ9ZGl2
MSBjbGFzcz1ib3g+PC9kaXY+CisgICAgICAgIDxkaXYgaWQ9ZGl2MiBjbGFzcz1ib3g+PC9kaXY+
CisgICAgPC9kaXY+CisKKyAgICA8cCBpZD0nZGVzY3JpcHRpb24nPjwvcD4KKyAgICA8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKyAgICA8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3Jp
cHQiPgorICAgICAgICBmdW5jdGlvbiBydW5UZXN0KCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZGVzY3JpcHRpb24oZG9jdW1lbnQudGl0bGUpOworCisgICAgICAgICAgICAvLyBTZXQgdXAgc2hv
cnRjdXQgYWNjZXNzIHRvIGVsZW1lbnRzCisgICAgICAgICAgICB2YXIgZSA9IHt9OworICAgICAg
ICAgICAgWydzYW5kYm94JywgJ2xheWVyJ10uZm9yRWFjaChmdW5jdGlvbihhKSB7CisgICAgICAg
ICAgICAgICAgZVthXSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGEpOworICAgICAgICAgICAg
fSk7CisKKyAgICAgICAgICAgIGNoZWNrUmVjdCgyNSwgMjUsIDEwMCwgMTAwLCAiRElWI2RpdjIs
IERJViNkaXYxLCBESVYjc2FuZGJveCIpOworICAgICAgICAgICAgY2hlY2tSZWN0KDIyMCwgMjAs
IDcwLCA3MCwgIkRJViNsZWZ0Iik7CisgICAgICAgICAgICBjaGVja1JlY3QoMjUwLCAyMCwgMTAw
LCA3MCwgIkRJViNyaWdodCwgRElWI2xlZnQsIEhUTUwiKTsKKworICAgICAgICAgICAgY2hlY2tS
ZWN0KDE1MCwgNTAsIDEwMCwgMTAwLCAiRElWI2xlZnQsIEhUTUwsICNkb2N1bWVudCwgSUZSQU1F
I2lmcmFtZTEsIERJViNsYXllciwgRElWI2RpdjIsIERJViNkaXYxLCBESVYjc2FuZGJveCIpOwor
CisgICAgICAgICAgICBlLmxheWVyLnNldEF0dHJpYnV0ZSgnY2xhc3MnLCAncm90YXRlMTgwJyk7
CisgICAgICAgICAgICBjaGVja1JlY3QoMjIwLCAyMCwgNzAsIDcwLCAiRElWI3JpZ2h0Iik7Cisg
ICAgICAgICAgICBjaGVja1JlY3QoMTUwLCA1MCwgMTAwLCAxMDAsICJESVYjcmlnaHQsIEhUTUws
ICNkb2N1bWVudCwgSUZSQU1FI2lmcmFtZTEsIERJViNsYXllciwgRElWI2RpdjIsIERJViNkaXYx
LCBESVYjc2FuZGJveCIpOworCisgICAgICAgICAgICBlLmxheWVyLnNldEF0dHJpYnV0ZSgnY2xh
c3MnLCAncm90YXRlOTAnKTsKKyAgICAgICAgICAgIGNoZWNrUmVjdCgyNTAsIDIwLCAxMDAsIDcw
LCAiRElWI2xlZnQiKTsKKyAgICAgICAgICAgIGNoZWNrUmVjdCgxNTAsIDIwLCAyMDAsIDYwLCAi
RElWI2xlZnQsIEhUTUwsICNkb2N1bWVudCwgSUZSQU1FI2lmcmFtZTEsIERJViNsYXllciwgRElW
I2RpdjEsIERJViNzYW5kYm94Iik7CisKKyAgICAgICAgICAgIGUuc2FuZGJveC5kaXNwbGF5ID0g
J25vbmUnOworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKyAgICAgICAg
anNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgICAgIHdpbmRvdy5vbmxvYWQgPSBydW5UZXN0Owor
ICAgIDwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3Qvbm9kZXNGcm9tUmVjdC1jb250aW51YXRpb24t
Y3Jhc2guaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3Qvbm9kZXNGcm9t
UmVjdC1jb250aW51YXRpb24tY3Jhc2guaHRtbAppbmRleCBhZmZhNWU1MTFlYzc3ZmQ0MDAyY2Jm
MTY5OTk0ZjJkMDVkYzU0NjhhLi5jMTZjZDgyYTE5Y2FmYWU1NTVkYmRiNmMyZTkxYTM3YWQzYmIy
NjhjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2Rlc0Zyb21SZWN0L25vZGVz
RnJvbVJlY3QtY29udGludWF0aW9uLWNyYXNoLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vbm9kZXNGcm9tUmVjdC9ub2Rlc0Zyb21SZWN0LWNvbnRpbnVhdGlvbi1jcmFzaC5odG1sCkBA
IC03LDcgKzcsNyBAQCBpZiAod2luZG93LnRlc3RSdW5uZXIpCiB3aW5kb3cub25sb2FkID0gZnVu
Y3Rpb24oKSB7CiAgICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzKQogICAgICAgICBhbGVydCgiVGhp
cyB0ZXN0IHJlcXVpcmVzIHdpbmRvdy5pbnRlcm5hbHMiKTsKLSAgICB2YXIgbm9kZXMgPSBpbnRl
cm5hbHMubm9kZXNGcm9tUmVjdChkb2N1bWVudCwgMTAwLCAxMDAsIDIwLCAyMCwgMjAsIDIwLCBm
YWxzZSwgZmFsc2UpOworICAgIHZhciBub2RlcyA9IGludGVybmFscy5ub2Rlc0Zyb21SZWN0KGRv
Y3VtZW50LCAxMDAsIDEwMCwgMjAsIDIwLCAyMCwgMjAsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOwog
ICAgIGFsZXJ0KCJQQVNTOiBUaGlzIHRlc3QgZGlkIG5vdCB0cmlnZ2VyIGFuIEFTU0VSVCIpOwog
fTsKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZXNGcm9t
UmVjdC9yZXNvdXJjZXMvY2hpbGQtZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL25v
ZGVzRnJvbVJlY3QvcmVzb3VyY2VzL2NoaWxkLWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjA0ZDdm
YWFkYmI5ODY2N2JmZWM0YTQ3MjdjOGRhMjg3MzYzM2U2OQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3QvcmVzb3VyY2VzL2NoaWxkLWZyYW1lLmh0
bWwKQEAgLTAsMCArMSwyNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0
eWxlIHR5cGU9InRleHQvY3NzIj4KKyAgICBib2R5IHsgbWFyZ2luOiAwcHg7IH0KKyAgICBkaXYg
eyAKKyAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKKyAgICAgICAgYm9yZGVyOiAxcHgg
c29saWQgYmxhY2s7CisgICAgfQorICAgICNsZWZ0IHsKKyAgICAgICAgZmxvYXQ6bGVmdDsKKyAg
ICAgICAgd2lkdGg6IDkwcHg7CisgICAgICAgIGhlaWdodDogMTkwcHg7CisgICAgfQorICAgICNy
aWdodCB7CisgICAgICAgIGZsb2F0OnJpZ2h0OworICAgICAgICB3aWR0aDogOTBweDsKKyAgICAg
ICAgaGVpZ2h0OiAxOTBweDsKKyAgICB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgICAg
PGRpdiBpZD1sZWZ0PjwvZGl2PgorICAgIDxkaXYgaWQ9cmlnaHQ+PC9kaXY+Cis8L2JvZHk+Cis8
L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3Qv
cmVzb3VyY2VzL25vZGVzRnJvbVJlY3QuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2Rlc0Zy
b21SZWN0L3Jlc291cmNlcy9ub2Rlc0Zyb21SZWN0LmpzCmluZGV4IGQwMmMxYzdkYjQ5ZTY4M2U4
MDM1MDc2ZDgyNDAxMjc1MTVmN2FiMDQuLmE3Mjg3YzhiNDk3ZGI0YjE4MGM2NTc2YjUxZDljOGI5
NThmOTUyMzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVzRnJvbVJlY3Qv
cmVzb3VyY2VzL25vZGVzRnJvbVJlY3QuanMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9k
ZXNGcm9tUmVjdC9yZXNvdXJjZXMvbm9kZXNGcm9tUmVjdC5qcwpAQCAtMSw3ICsxLDggQEAKIC8q
CiAgKiBDb250cmlidXRvcnM6CiAgKiAgICAgKiBBbnRvbmlvIEdvbWVzIDx0b25pa2l0b29Ad2Vi
a2l0Lm9yZz4KLSAqKi8KKyAqICAgICAqIEFsbGFuIFNhbmRmZWxkIEplbnNlbiA8YWxsYW4uamVu
c2VuQGRpZ2lhLmNvbT4KKyoqLwogCiBmdW5jdGlvbiBjaGVjayh4LCB5LCB0b3BQYWRkaW5nLCBy
aWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nLCBsaXN0LCBkb2MpCiB7CkBA
IC0xMSw3ICsxMiw3IEBAIGZ1bmN0aW9uIGNoZWNrKHgsIHksIHRvcFBhZGRpbmcsIHJpZ2h0UGFk
ZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcsIGxpc3QsCiAgIGlmICghZG9jKQogICAg
IGRvYyA9IGRvY3VtZW50OwogCi0gIHZhciBub2RlcyA9IGludGVybmFscy5ub2Rlc0Zyb21SZWN0
KGRvYywgeCwgeSwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0
UGFkZGluZywgdHJ1ZSAvKiBpZ25vcmVDbGlwcGluZyAqLywgZmFsc2UgLyogYWxsb3cgc2hhZG93
IGNvbnRlbnQgKi8pOworICB2YXIgbm9kZXMgPSBpbnRlcm5hbHMubm9kZXNGcm9tUmVjdChkb2Ms
IHgsIHksIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRp
bmcsIHRydWUgLyogaWdub3JlQ2xpcHBpbmcgKi8sIGZhbHNlIC8qIGFsbG93IHNoYWRvdyBjb250
ZW50ICovLCBmYWxzZSAvKiBhbGxvdyBjaGlsZC1mcmFtZSBjb250ZW50ICovKTsKICAgaWYgKCFu
b2RlcykKICAgICByZXR1cm47CiAKQEAgLTQ1LDcgKzQ2LDcgQEAgZnVuY3Rpb24gY2hlY2tTaGFk
b3dDb250ZW50KHgsIHksIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywg
bGVmdFAKICAgaWYgKCFkb2MpCiAgICAgZG9jID0gZG9jdW1lbnQ7CiAKLSAgdmFyIG5vZGVzID0g
aW50ZXJuYWxzLm5vZGVzRnJvbVJlY3QoZG9jLCB4LCB5LCB0b3BQYWRkaW5nLCByaWdodFBhZGRp
bmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nLCB0cnVlIC8qIGlnbm9yZUNsaXBwaW5nICov
LCB0cnVlIC8qIGFsbG93U2hhZG93Q29udGVudCAqLyk7CisgIHZhciBub2RlcyA9IGludGVybmFs
cy5ub2Rlc0Zyb21SZWN0KGRvYywgeCwgeSwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0
b21QYWRkaW5nLCBsZWZ0UGFkZGluZywgdHJ1ZSAvKiBpZ25vcmVDbGlwcGluZyAqLywgdHJ1ZSAv
KiBhbGxvd1NoYWRvd0NvbnRlbnQgKi8sIGZhbHNlIC8qIGFsbG93IGNoaWxkLWZyYW1lIGNvbnRl
bnQgKi8pOwogICBpZiAoIW5vZGVzKQogICAgIHJldHVybjsKIApAQCAtOTYsNyArOTcsNyBAQCBm
dW5jdGlvbiBjaGVja1JlY3QobGVmdCwgdG9wLCB3aWR0aCwgaGVpZ2h0LCBleHBlY3RlZE5vZGVT
dHJpbmcsIGRvYykKIGZ1bmN0aW9uIG5vZGVzRnJvbVJlY3RBc1N0cmluZyhkb2MsIHgsIHksIHRv
cFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcpCiB7CiAg
ICAgdmFyIG5vZGVTdHJpbmcgPSAiIjsKLSAgICB2YXIgbm9kZXMgPSBpbnRlcm5hbHMubm9kZXNG
cm9tUmVjdChkb2MsIHgsIHksIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGlu
ZywgbGVmdFBhZGRpbmcsIHRydWUgLyogaWdub3JlQ2xpcHBpbmcgKi8sIGZhbHNlIC8qIGFsbG93
IHNoYWRvdyBjb250ZW50ICovKTsKKyAgICB2YXIgbm9kZXMgPSBpbnRlcm5hbHMubm9kZXNGcm9t
UmVjdChkb2MsIHgsIHksIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywg
bGVmdFBhZGRpbmcsIHRydWUgLyogaWdub3JlQ2xpcHBpbmcgKi8sIGZhbHNlIC8qIGFsbG93IHNo
YWRvdyBjb250ZW50ICovLCB0cnVlIC8qIGFsbG93IGNoaWxkLWZyYW1lIGNvbnRlbnQgKi8pOwog
ICAgIGlmICghbm9kZXMpCiAgICAgICAgIHJldHVybiBub2RlU3RyaW5nOwogCkBAIC0xMTAsNiAr
MTExLDggQEAgZnVuY3Rpb24gbm9kZXNGcm9tUmVjdEFzU3RyaW5nKGRvYywgeCwgeSwgdG9wUGFk
ZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW4KICAgICAgICAgICAgIH0KICAgICAgICAg
fSBlbHNlIGlmIChub2Rlc1tpXS5ub2RlVHlwZSA9PSAzKSB7CiAgICAgICAgICAgICBub2RlU3Ry
aW5nICs9ICInIiArIG5vZGVzW2ldLmRhdGEgKyAiJyI7CisgICAgICAgIH0gZWxzZSBpZiAobm9k
ZXNbaV0ubm9kZVR5cGUgPT0gOSkgeworICAgICAgICAgICAgbm9kZVN0cmluZyArPSAiI2RvY3Vt
ZW50IjsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9
CkBAIC0xMjAsNyArMTIzLDYgQEAgZnVuY3Rpb24gbm9kZXNGcm9tUmVjdEFzU3RyaW5nKGRvYywg
eCwgeSwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW4KICAgICByZXR1cm4g
bm9kZVN0cmluZzsKIH0KIAotCiBmdW5jdGlvbiBnZXRDZW50ZXJGb3IoZWxlbWVudCkKIHsKICAg
dmFyIHJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwo=
</data>
<flag name="review"
          id="209323"
          type_id="1"
          status="+"
          setter="jchaffraix"
    />
          </attachment>
      

    </bug>

</bugzilla>