<?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>95720</bug_id>
          
          <creation_ts>2012-09-04 01:50:15 -0700</creation_ts>
          <short_desc>Simplify hitTestResultAtPoint and nodesFromRect APIs</short_desc>
          <delta_ts>2013-02-15 06:07:03 -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>96600</dependson>
    
    <dependson>96612</dependson>
          <blocked>95204</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>gyuyoung.kim</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>kenneth</cc>
    
    <cc>mifenton</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>rakuco</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yong.li.webkit</cc>
    
    <cc>yosin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>710896</commentid>
    <comment_count>0</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-09-04 01:50:15 -0700</bug_when>
    <thetext>EventHandler::hitTestResultAtPoint and Document::nodesFromRect both have a list a boolean arguments that could be expressed as a HitTestRequest::Type instead. EventHandler::hitTestResultAtPoint already takes a HitTestRequest as an argument and chould just lose the unnecessary boolean arguments, while Document::nodesFromRect should be converted to taking HitTestRequest arguments instead.

Bug based on review suggestions in https://bugs.webkit.org/show_bug.cgi?id=95204#c16</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710944</commentid>
    <comment_count>1</comment_count>
      <attachid>162001</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-09-04 03:55:25 -0700</bug_when>
    <thetext>Created attachment 162001
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711004</commentid>
    <comment_count>2</comment_count>
      <attachid>162019</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-09-04 05:14:53 -0700</bug_when>
    <thetext>Created attachment 162019
Patch

Reupload to let EWS try again now that its depending patch has landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711038</commentid>
    <comment_count>3</comment_count>
      <attachid>162019</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-09-04 05:59:21 -0700</bug_when>
    <thetext>Comment on attachment 162019
Patch

Attachment 162019 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13739527</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711044</commentid>
    <comment_count>4</comment_count>
      <attachid>162019</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-09-04 06:11:15 -0700</bug_when>
    <thetext>Comment on attachment 162019
Patch

Attachment 162019 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13746453</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711107</commentid>
    <comment_count>5</comment_count>
      <attachid>162019</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-09-04 07:30:51 -0700</bug_when>
    <thetext>Comment on attachment 162019
Patch

Forgot to update one symbol for Mac, and some calls for EFL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711840</commentid>
    <comment_count>6</comment_count>
      <attachid>162186</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-09-05 01:47:12 -0700</bug_when>
    <thetext>Created attachment 162186
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711856</commentid>
    <comment_count>7</comment_count>
      <attachid>162186</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-09-05 02:15:13 -0700</bug_when>
    <thetext>Comment on attachment 162186
Patch

Attachment 162186 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13746793</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711869</commentid>
    <comment_count>8</comment_count>
      <attachid>162198</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-09-05 02:42:51 -0700</bug_when>
    <thetext>Created attachment 162198
Patch

Fix EFL build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711871</commentid>
    <comment_count>9</comment_count>
      <attachid>162198</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-09-05 02:45:20 -0700</bug_when>
    <thetext>Comment on attachment 162198
Patch

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

&gt; Source/WebCore/rendering/HitTestRequest.h:51
&gt; +    static HitTestRequestType Default(bool allowShadowContent, bool ignoreClipping = false)

What about using flags?

HitTestResult::Default(ALLOW_SHADOW_CONTENT | CLIP)

That is more clear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711878</commentid>
    <comment_count>10</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-09-05 02:58:20 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 162198 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=162198&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/rendering/HitTestRequest.h:51
&gt; &gt; +    static HitTestRequestType Default(bool allowShadowContent, bool ignoreClipping = false)
&gt; 
&gt; What about using flags?
&gt; 
&gt; HitTestRequest::Default(ALLOW_SHADOW_CONTENT | CLIP)
&gt; 
&gt; That is more clear

True, but if you want refactor it like that, you just stop using the arguments to HitTestRequest::Default and write it like HitTestRequest::Default() | HitTestRequest::AllowChildContent | HitTestRequest::IgnoreClipping. The reason the function exists and takes boolean arguments is to make it easy and safe to upgrade existing calls.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712054</commentid>
    <comment_count>11</comment_count>
      <attachid>162198</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-09-05 08:03:16 -0700</bug_when>
    <thetext>Comment on attachment 162198
Patch

Idea is good, but I am really not a big fan of the HitTestRequest::Default(true|false) new idiom.

While looking over the patch, the calls Default(true|false) were making things equally non-obvious than before.

IMO, the APIs we improved were degraded by the suggested alternative.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712077</commentid>
    <comment_count>12</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-09-05 08:21:01 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 162198 [details])
&gt; Idea is good, but I am really not a big fan of the HitTestRequest::Default(true|false) new idiom.
&gt; 
&gt; While looking over the patch, the calls Default(true|false) were making things equally non-obvious than before.
&gt; 
&gt; IMO, the APIs we improved were degraded by the suggested alternative.

What about removing the boolean arguments from Default and calling something like HitTestRequest::Default() | HitTestRequest::AllowChildContent | HitTestRequest::IgnoreClipping ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712114</commentid>
    <comment_count>13</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-09-05 09:09:31 -0700</bug_when>
    <thetext>
&gt; What about removing the boolean arguments from Default and calling something like HitTestRequest::Default() | HitTestRequest::AllowChildContent | HitTestRequest::IgnoreClipping ?

Looks cleaner to me. I think kenneth would be happier as well.

Would &quot;default&quot; be empty?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712117</commentid>
    <comment_count>14</comment_count>
      <attachid>162262</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-09-05 09:10:33 -0700</bug_when>
    <thetext>Created attachment 162262
Patch

Eliminated the use of boolean arguments in the redefinition</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712118</commentid>
    <comment_count>15</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-09-05 09:12:03 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; &gt; What about removing the boolean arguments from Default and calling something like HitTestRequest::Default() | HitTestRequest::AllowChildContent | HitTestRequest::IgnoreClipping ?
&gt; 
&gt; Looks cleaner to me. I think kenneth would be happier as well.
&gt; 
&gt; Would &quot;default&quot; be empty?

No it is ReadOnly | Active currently. If I manage to get rid of side-effects from hit-testing, Default can be redefined to 0, as ReadOnly is no longer needed to make the hit-test just hit-test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712119</commentid>
    <comment_count>16</comment_count>
      <attachid>162262</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-09-05 09:13:52 -0700</bug_when>
    <thetext>Comment on attachment 162262
Patch

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

&gt; Source/WebCore/ChangeLog:13
&gt; +        To allow for simple conversion a new static function has been  added to HitTestRequest to build
&gt; +        a default type based on the old boolean arguments.

I forgot to remove this from the ChangeLog. Will remove before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712431</commentid>
    <comment_count>17</comment_count>
      <attachid>162262</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-09-05 12:45:24 -0700</bug_when>
    <thetext>Comment on attachment 162262
Patch

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

Getting close...

Last question is: is that clear that Default means Active + ReadOnly, nomenclature-wise or API-wise?

&gt; Source/WebCore/page/EventHandler.cpp:1071
&gt; -    if (!allowShadowContent)
&gt; +    if (!request.allowsShadowContent())
&gt;          result.setToNonShadowAncestor();

From what I remember, setToNonShadowAncestor and the HitTestRequest::allowShadowContent were not working together: the first were about point-based hit test, the latter, about rect-based.

Mind to confirm?

&gt; Source/WebCore/rendering/HitTestRequest.h:45
&gt; +    static const HitTestRequestType Default = ReadOnly | Active;

That is  the key point.

&gt; Source/WebKit/blackberry/WebKitSupport/FatFingers.cpp:499
&gt; +    HitTestResult result(contentPos, topPadding, rightPadding, bottomPadding, leftPadding);
&gt; +    if (m_targetType != Text)
&gt; +        request |= HitTestRequest::AllowShadowContent;

nit: swap these two lines, so the request gets constructed altogether</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712495</commentid>
    <comment_count>18</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-09-05 13:49:37 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 162262 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=162262&amp;action=review
&gt; 
&gt; Getting close...
&gt; 
&gt; Last question is: is that clear that Default means Active + ReadOnly, nomenclature-wise or API-wise?
&gt; 
I guess not, but I was hoping to redefine it later, and that makes a generic name more suitable. 

&gt; &gt; Source/WebCore/page/EventHandler.cpp:1071
&gt; &gt; -    if (!allowShadowContent)
&gt; &gt; +    if (!request.allowsShadowContent())
&gt; &gt;          result.setToNonShadowAncestor();
&gt; 
&gt; From what I remember, setToNonShadowAncestor and the HitTestRequest::allowShadowContent were not working together: the first were about point-based hit test, the latter, about rect-based.
&gt; 
&gt; Mind to confirm?
&gt; 
You are right. What this does is to ensure that the returned innerNode is not a shadow node, if the caller has requested no shadow nodes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712535</commentid>
    <comment_count>19</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-09-05 14:19:54 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (In reply to comment #17)
&gt; &gt; (From update of attachment 162262 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=162262&amp;action=review
&gt; &gt; 
&gt; &gt; Getting close...
&gt; &gt; 
&gt; &gt; Last question is: is that clear that Default means Active + ReadOnly, nomenclature-wise or API-wise?
&gt; &gt; 
&gt; I guess not, but I was hoping to redefine it later, and that makes a generic name more suitable. 
&gt; 

We could have s/Default/ActiveAndReadOnly for convenience? 


&gt; &gt; &gt; Source/WebCore/page/EventHandler.cpp:1071
&gt; &gt; &gt; -    if (!allowShadowContent)
&gt; &gt; &gt; +    if (!request.allowsShadowContent())
&gt; &gt; &gt;          result.setToNonShadowAncestor();
&gt; &gt; 
&gt; &gt; From what I remember, setToNonShadowAncestor and the HitTestRequest::allowShadowContent were not working together: the first were about point-based hit test, the latter, about rect-based.
&gt; &gt; 
&gt; &gt; Mind to confirm?
&gt; &gt; 
&gt; You are right. What this does is to ensure that the returned innerNode is not a shadow node, if the caller has requested no shadow nodes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713055</commentid>
    <comment_count>20</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-09-06 02:13:00 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #18)
&gt; &gt; (In reply to comment #17)
&gt; &gt; &gt; (From update of attachment 162262 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=162262&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; Getting close...
&gt; &gt; &gt; 
&gt; &gt; &gt; Last question is: is that clear that Default means Active + ReadOnly, nomenclature-wise or API-wise?
&gt; &gt; &gt; 
&gt; &gt; I guess not, but I was hoping to redefine it later, and that makes a generic name more suitable. 
&gt; &gt; 
&gt; 
&gt; We could have s/Default/ActiveAndReadOnly for convenience? 
&gt; 
There is another point to this. Active shouldn&apos;t really have any effect. It only does two things in hit-testing. If readonly is not set, it is used to update hover/active state, with ReadOnly set and it is only used in RenderLayer to make root-layers claim all tests hit it. Most of the ReadOnly hit-tests probably shouldn&apos;t even have Active set. One of the things I am hoping to do later, is find the ones that need Active, and set it on them and let the rest use only ReadOnly.

If you don&apos;t like the concept of Default here, I think the alternative is to get rid of it and expand the values in full everywhere. It is pretty much what you suggest anyway with ActiveAndReadOnly, but it means any future improvements to what default is, would require changing all these ports again to update the calls.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713267</commentid>
    <comment_count>21</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-09-06 07:22:35 -0700</bug_when>
    <thetext>
&gt; If you don&apos;t like the concept of Default here, I think the alternative is to get rid of it and expand the values in full everywhere. It is pretty much what you suggest anyway with ActiveAndReadOnly, but it means any future improvements to what default is, would require changing all these ports again to update the calls.

I think that is preferable. Kenneth?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713269</commentid>
    <comment_count>22</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-09-06 07:26:14 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; &gt; If you don&apos;t like the concept of Default here, I think the alternative is to get rid of it and expand the values in full everywhere. It is pretty much what you suggest anyway with ActiveAndReadOnly, but it means any future improvements to what default is, would require changing all these ports again to update the calls.
&gt; 
&gt; I think that is preferable. Kenneth?

Me too</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714169</commentid>
    <comment_count>23</comment_count>
      <attachid>162262</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-06 23:27:16 -0700</bug_when>
    <thetext>Comment on attachment 162262
Patch

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

New failing tests:
fast/forms/drag-out-of-textarea.html
touchadjustment/nested-shadow-node.html
editing/pasteboard/drop-text-without-selection.html
touchadjustment/search-cancel.html
editing/pasteboard/drop-text-events.html
editing/pasteboard/drag-drop-input-textarea.html
editing/selection/drag-text-delay.html
fast/events/5056619.html
fast/forms/drag-into-textarea.html
editing/pasteboard/drag-drop-url-text.html
fast/events/content-changed-during-drop.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714312</commentid>
    <comment_count>24</comment_count>
      <attachid>162262</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-09-07 02:18:04 -0700</bug_when>
    <thetext>Comment on attachment 162262
Patch

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

I seem to have managed to mix up the parameters in a few places which is why the tests fail now.

&gt; Source/WebCore/page/EventHandler.cpp:1010
&gt; -    HitTestResult hitTest = hitTestResultAtPoint(m_panScrollStartPos, true);
&gt; +    HitTestResult hitTest = hitTestResultAtPoint(m_panScrollStartPos, HitTestRequest::Default | HitTestRequest::AllowChildFrameContent);

Wrong autocomplete, should AllowShadowContent.

&gt; Source/WebCore/page/EventHandler.cpp:2483
&gt; -    HitTestResult result = hitTestResultAtPoint(hitTestPoint, /*allowShadowContent*/ true, /*ignoreClipping*/ false, DontHitTestScrollbars, hitType, touchRadius);
&gt; +    HitTestResult result = hitTestResultAtPoint(hitTestPoint, HitTestRequest::Default | HitTestRequest::AllowChildFrameContent, touchRadius);

Ditto

&gt; Source/WebCore/page/EventHandler.cpp:2501
&gt; -    HitTestResult result = hitTestResultAtPoint(hitTestPoint, /*allowShadowContent*/ true, /*ignoreClipping*/ false, DontHitTestScrollbars, hitType, touchRadius);
&gt; +    HitTestResult result = hitTestResultAtPoint(hitTestPoint, HitTestRequest::Default | HitTestRequest::AllowChildFrameContent, touchRadius);

Ditto

&gt; Source/WebCore/page/Frame.cpp:727
&gt; -    HitTestResult result = eventHandler()-&gt;hitTestResultAtPoint(framePoint, true);
&gt; +    HitTestResult result = eventHandler()-&gt;hitTestResultAtPoint(framePoint, HitTestRequest::Default | HitTestRequest::AllowChildFrameContent);

Ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714331</commentid>
    <comment_count>25</comment_count>
      <attachid>162720</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-09-07 02:57:03 -0700</bug_when>
    <thetext>Created attachment 162720
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714405</commentid>
    <comment_count>26</comment_count>
      <attachid>162720</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-09-07 04:49:22 -0700</bug_when>
    <thetext>Comment on attachment 162720
Patch

Attachment 162720 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13772710</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714408</commentid>
    <comment_count>27</comment_count>
      <attachid>162720</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-09-07 04:54:16 -0700</bug_when>
    <thetext>Comment on attachment 162720
Patch

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

&gt; Source/WebKit/efl/ewk/ewk_frame.cpp:698
&gt; +                                        WebCore::HitTestRequest::ReadOnly | HitTestRequest::Active | WebCore::HitTestRequest::IgnoreClipping);

It looks &quot;WebCore::&quot; is missing. s/HitTestRequest::Active/WebCore::HitTestRequest::Active/g</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714418</commentid>
    <comment_count>28</comment_count>
      <attachid>162720</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-09-07 05:07:20 -0700</bug_when>
    <thetext>Comment on attachment 162720
Patch

Attachment 162720 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13768764</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714443</commentid>
    <comment_count>29</comment_count>
      <attachid>162752</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-09-07 06:04:31 -0700</bug_when>
    <thetext>Created attachment 162752
Patch

Fix EFL build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714514</commentid>
    <comment_count>30</comment_count>
      <attachid>162752</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-09-07 07:40:36 -0700</bug_when>
    <thetext>Comment on attachment 162752
Patch

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

&gt; Source/WebCore/page/EventHandler.cpp:1070
&gt; -    if (!allowShadowContent)
&gt; +    if (!request.allowsShadowContent())
&gt;          result.setToNonShadowAncestor();

so is this ok?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714526</commentid>
    <comment_count>31</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-09-07 08:03:36 -0700</bug_when>
    <thetext>(In reply to comment #30)
&gt; (From update of attachment 162752 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=162752&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/EventHandler.cpp:1070
&gt; &gt; -    if (!allowShadowContent)
&gt; &gt; +    if (!request.allowsShadowContent())
&gt; &gt;          result.setToNonShadowAncestor();
&gt; 
&gt; so is this ok?

It duplicates what the code did before. Removing it would be changing functionality.

Essentially the old allowShadowContent argument applied to both point based and area based tests, but since the HitTestRequest flag only applies automatically to area-based tests, this code ensures it is also applied to point-based tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714582</commentid>
    <comment_count>32</comment_count>
      <attachid>162752</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-07 09:08:54 -0700</bug_when>
    <thetext>Comment on attachment 162752
Patch

Clearing flags on attachment: 162752

Committed r127876: &lt;http://trac.webkit.org/changeset/127876&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714583</commentid>
    <comment_count>33</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-07 09:09:02 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719038</commentid>
    <comment_count>34</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-12 22:01:38 -0700</bug_when>
    <thetext>Re-opened since this is blocked by 96600</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719066</commentid>
    <comment_count>35</comment_count>
    <who name="">yosin</who>
    <bug_when>2012-09-12 22:49:53 -0700</bug_when>
    <thetext>I&apos;m going rollout this patch, bug 96600. Sorry about this.

It seems this patch changed calculation of event position of mouse click on iframe.

Spin button, input type &quot;number&quot;, doesn&apos;t work since this change.
See http://crbug.com/148842 for bug report.

Please try following URI for regression checking.
http://jsfiddle.net/EdP8j/

Thanks for your understanding.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719166</commentid>
    <comment_count>36</comment_count>
    <who name="">yosin</who>
    <bug_when>2012-09-13 00:45:44 -0700</bug_when>
    <thetext>I&apos;m trying to add tests for clicking spin button in iframe:
https://bugs.webkit.org/show_bug.cgi?id=96612</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719227</commentid>
    <comment_count>37</comment_count>
    <who name="">yosin</who>
    <bug_when>2012-09-13 01:38:59 -0700</bug_when>
    <thetext>(In reply to comment #36)
&gt; I&apos;m trying to add tests for clicking spin button in iframe:
&gt; https://bugs.webkit.org/show_bug.cgi?id=96612

Landed: http://trac.webkit.org/changeset/128423

New tests are:
* fast/forms/number/number-spinbutton-click-in-iframe.html
* fast/forms/time-multiple-fields/time-multiple-fields-spinbutton-click-in-iframe.html (for Chromium port only, or ENABLE_INPUT_TYPE_TIME_MULTIPLE_FIELDS enabled)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719288</commentid>
    <comment_count>38</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-09-13 03:00:49 -0700</bug_when>
    <thetext>(In reply to comment #35)
&gt; I&apos;m going rollout this patch, bug 96600. Sorry about this.
&gt; 
&gt; It seems this patch changed calculation of event position of mouse click on iframe.
&gt; 
This particular patch shouldn&apos;t have any functional effect. It seems more like that a call wasn&apos;t converted correctly to the new API. Since these form-elements use shadow-dom, I suspect a call missing AllowShadowContent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831844</commentid>
    <comment_count>39</comment_count>
      <attachid>188065</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-02-13 06:03:21 -0800</bug_when>
    <thetext>Created attachment 188065
Patch

Rebase and update to apply before patch for bug #95204</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831846</commentid>
    <comment_count>40</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-13 06:07:21 -0800</bug_when>
    <thetext>Attachment 188065 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/WebCore.order&apos;, u&apos;Source/WebCore/dom/Document.cpp&apos;, u&apos;Source/WebCore/dom/Document.h&apos;, u&apos;Source/WebCore/page/ContextMenuController.cpp&apos;, u&apos;Source/WebCore/page/DragController.cpp&apos;, u&apos;Source/WebCore/page/EventHandler.cpp&apos;, u&apos;Source/WebCore/page/EventHandler.h&apos;, u&apos;Source/WebCore/page/FocusController.cpp&apos;, u&apos;Source/WebCore/page/Frame.cpp&apos;, u&apos;Source/WebCore/page/TouchDisambiguation.cpp&apos;, u&apos;Source/WebCore/rendering/HitTestRequest.h&apos;, u&apos;Source/WebCore/testing/Internals.cpp&apos;, u&apos;Source/WebKit/blackberry/Api/WebPage.cpp&apos;, u&apos;Source/WebKit/blackberry/ChangeLog&apos;, u&apos;Source/WebKit/blackberry/WebKitSupport/SelectionHandler.cpp&apos;, u&apos;Source/WebKit/chromium/ChangeLog&apos;, u&apos;Source/WebKit/chromium/src/ContextMenuClientImpl.cpp&apos;, u&apos;Source/WebKit/chromium/src/FrameLoaderClientImpl.cpp&apos;, u&apos;Source/WebKit/chromium/src/WebFrameImpl.cpp&apos;, u&apos;Source/WebKit/chromium/src/WebPluginContainerImpl.cpp&apos;, u&apos;Source/WebKit/chromium/src/WebViewImpl.cpp&apos;, u&apos;Source/WebKit/efl/ChangeLog&apos;, u&apos;Source/WebKit/efl/ewk/ewk_frame.cpp&apos;, u&apos;Source/WebKit/mac/ChangeLog&apos;, u&apos;Source/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.mm&apos;, u&apos;Source/WebKit/mac/WebView/WebHTMLView.mm&apos;, u&apos;Source/WebKit/qt/ChangeLog&apos;, u&apos;Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp&apos;, u&apos;Source/WebKit/qt/WebCoreSupport/QWebFrameAdapter.cpp&apos;, u&apos;Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp&apos;, u&apos;Source/WebKit/win/ChangeLog&apos;, u&apos;Source/WebKit/win/WebActionPropertyBag.cpp&apos;, u&apos;Source/WebKit/win/WebKit.vcproj/WebKitExports.def.in&apos;, u&apos;Source/WebKit/win/WebView.cpp&apos;, u&apos;Source/WebKit/wx/ChangeLog&apos;, u&apos;Source/WebKit/wx/WebFrame.cpp&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleNavigationAction.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebFrame.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebPage.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm&apos;, u&apos;Source/autotools/symbols.filter&apos;]&quot; exit_code: 1
Source/WebCore/dom/Document.h:37:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/dom/Document.h:386:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/dom/Document.h:387:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/efl/ewk/ewk_frame.cpp:695:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 4 in 45 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831847</commentid>
    <comment_count>41</comment_count>
      <attachid>188066</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-02-13 06:10:59 -0800</bug_when>
    <thetext>Created attachment 188066
Patch

Fix a three missed rebase failures</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831848</commentid>
    <comment_count>42</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-13 06:13:07 -0800</bug_when>
    <thetext>Attachment 188066 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/WebCore.order&apos;, u&apos;Source/WebCore/dom/Document.cpp&apos;, u&apos;Source/WebCore/dom/Document.h&apos;, u&apos;Source/WebCore/page/ContextMenuController.cpp&apos;, u&apos;Source/WebCore/page/DragController.cpp&apos;, u&apos;Source/WebCore/page/EventHandler.cpp&apos;, u&apos;Source/WebCore/page/EventHandler.h&apos;, u&apos;Source/WebCore/page/FocusController.cpp&apos;, u&apos;Source/WebCore/page/Frame.cpp&apos;, u&apos;Source/WebCore/page/TouchDisambiguation.cpp&apos;, u&apos;Source/WebCore/rendering/HitTestRequest.h&apos;, u&apos;Source/WebCore/testing/Internals.cpp&apos;, u&apos;Source/WebKit/blackberry/Api/WebPage.cpp&apos;, u&apos;Source/WebKit/blackberry/ChangeLog&apos;, u&apos;Source/WebKit/blackberry/WebKitSupport/SelectionHandler.cpp&apos;, u&apos;Source/WebKit/chromium/ChangeLog&apos;, u&apos;Source/WebKit/chromium/src/ContextMenuClientImpl.cpp&apos;, u&apos;Source/WebKit/chromium/src/FrameLoaderClientImpl.cpp&apos;, u&apos;Source/WebKit/chromium/src/WebFrameImpl.cpp&apos;, u&apos;Source/WebKit/chromium/src/WebPluginContainerImpl.cpp&apos;, u&apos;Source/WebKit/chromium/src/WebViewImpl.cpp&apos;, u&apos;Source/WebKit/efl/ChangeLog&apos;, u&apos;Source/WebKit/efl/ewk/ewk_frame.cpp&apos;, u&apos;Source/WebKit/mac/ChangeLog&apos;, u&apos;Source/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.mm&apos;, u&apos;Source/WebKit/mac/WebView/WebFrame.mm&apos;, u&apos;Source/WebKit/mac/WebView/WebHTMLView.mm&apos;, u&apos;Source/WebKit/qt/ChangeLog&apos;, u&apos;Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp&apos;, u&apos;Source/WebKit/qt/WebCoreSupport/QWebFrameAdapter.cpp&apos;, u&apos;Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp&apos;, u&apos;Source/WebKit/win/ChangeLog&apos;, u&apos;Source/WebKit/win/WebActionPropertyBag.cpp&apos;, u&apos;Source/WebKit/win/WebKit.vcproj/WebKitExports.def.in&apos;, u&apos;Source/WebKit/win/WebView.cpp&apos;, u&apos;Source/WebKit/wx/ChangeLog&apos;, u&apos;Source/WebKit/wx/WebFrame.cpp&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleNavigationAction.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebFrame.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebPage.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm&apos;, u&apos;Source/autotools/symbols.filter&apos;]&quot; exit_code: 1
Source/WebCore/dom/Document.h:386:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/dom/Document.h:387:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/efl/ewk/ewk_frame.cpp:695:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 3 in 46 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833206</commentid>
    <comment_count>43</comment_count>
      <attachid>188066</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2013-02-14 10:21:04 -0800</bug_when>
    <thetext>Comment on attachment 188066
Patch

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

r=me, but fix the bad change.

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:1094
&gt; +    HitTestRequest::HitTestRequestType hitType = HitTestRequest::ReadOnly | HitTestRequest::Active | ((zoomType == FindInPage) ? HitTestRequest::IgnoreClipping : 0);

Nit: I would put the zoomType checks to the next line for readibility.

&gt; Source/WebKit/mac/WebView/WebHTMLView.mm:6205
&gt; +    HitTestRequest::HitTestRequestType hitType = HitTestRequest::ReadOnly | HitTestRequest::Active | (allow ? HitTestRequest::AllowShadowContent : 0);

Same nit.

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1766
&gt; +        HitTestResult result = mainframe-&gt;eventHandler()-&gt;hitTestResultAtPoint(mainframe-&gt;view()-&gt;windowToContents(point), HitTestRequest::ReadOnly | HitTestRequest::Active | HitTestRequest::AllowShadowContent);

This is wrong, it should be:  HitTestRequest::ReadOnly | HitTestRequest::Active | HitTestRequest::IgnoreClipping</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833208</commentid>
    <comment_count>44</comment_count>
      <attachid>188066</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2013-02-14 10:24:12 -0800</bug_when>
    <thetext>Comment on attachment 188066
Patch

r=me on the WebKit2 part</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833836</commentid>
    <comment_count>45</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-02-15 02:50:50 -0800</bug_when>
    <thetext>Committed r142977: &lt;http://trac.webkit.org/changeset/142977&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833941</commentid>
    <comment_count>46</comment_count>
      <attachid>188066</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2013-02-15 06:07:03 -0800</bug_when>
    <thetext>Comment on attachment 188066
Patch

Very nice clean up. Thanks for doing this!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162001</attachid>
            <date>2012-09-04 03:55:25 -0700</date>
            <delta_ts>2012-09-04 05:14:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95720-20120904125458.patch</filename>
            <type>text/plain</type>
            <size>56785</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDVhODg5NGU1NDBlNjkw
NWEzMDA5ZWVjYWRmZTc2ZjkwZTVlMDMxMC4uMjQxOTRkOTk2N2ZhMjI2YTRhZTIxMWU1YjRmMDhh
OWYyNWQzYmE2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEyLTA5LTA0ICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgorCisgICAgICAgIFNp
bXBsaWZ5IGhpdFRlc3RSZXN1bHRBdFBvaW50IGFuZCBub2Rlc0Zyb21SZWN0IEFQSXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NzIwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGV4aXN0aW5nIEFQ
SSB3YXMgb3ZlcmxvYWRlZCBhbmQgY291bGQgYmUgc2ltcGxpZmllZCBieSBwYXNzaW5nIGFsbCB0
aGUgYm9vbCBhcmd1bWVudHMgaW4gCisgICAgICAgIGEgSGl0VGVzdFJlcXVlc3QgYXJndW1lbnQu
IFRoaXMgc2hvdWxkIGFsc28gaGVscCBjbGFyaWZ5IHRoZSBjYWxsIGFzIHRoZSBlbnVtIHZhbHVl
cyBleHBsaWNpdGVseQorICAgICAgICBzdGF0ZSB3aGF0IHRoZXkgZG8uCisKKyAgICAgICAgVG8g
YWxsb3cgZm9yIHNpbXBsZSBjb252ZXJzaW9uIGEgbmV3IHN0YXRpYyBmdW5jdGlvbiBoYXMgYmVl
biAgYWRkZWQgdG8gSGl0VGVzdFJlcXVlc3QgdG8gYnVpbGQKKyAgICAgICAgYSBkZWZhdWx0IHR5
cGUgYmFzZWQgb24gdGhlIG9sZCBib29sZWFuIGFyZ3VtZW50cy4KKworICAgICAgICAqIFdlYkNv
cmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUub3JkZXI6CisgICAgICAgICogZG9tL0RvY3Vt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpub2Rlc0Zyb21SZWN0KToKKyAg
ICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKERvY3VtZW50KToKKyAgICAgICAgKiBw
YWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0
TWVudUNvbnRyb2xsZXI6OmNyZWF0ZUNvbnRleHRNZW51KToKKyAgICAgICAgKiBwYWdlL0RyYWdD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpjYW5Qcm9j
ZXNzRHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKToK
KyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dEhhbmRsZXI6OnVwZGF0ZUF1dG9zY3JvbGxSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudEhhbmRsZXI6OmhpdFRlc3RSZXN1bHRBdFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6YmVzdENsaWNrYWJsZU5vZGVGb3JUb3VjaFBvaW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50SGFuZGxlcjo6YmVzdENvbnRleHRNZW51Tm9kZUZvclRvdWNoUG9pbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpiZXN0Wm9vbWFibGVBcmVhRm9yVG91Y2hQb2lu
dCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZVRvdWNoRXZlbnQpOgor
ICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmg6CisgICAgICAgIChFdmVudEhhbmRsZXIpOgor
ICAgICAgICAqIHBhZ2UvRm9jdXNDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVw
ZGF0ZUZvY3VzQ2FuZGlkYXRlSWZOZWVkZWQpOgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnZpc2libGVQb3NpdGlvbkZvclBvaW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lOjpkb2N1bWVudEF0UG9pbnQpOgorICAgICAgICAqIHBhZ2UvVG91
Y2hEaXNhbWJpZ3VhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaW5kR29vZFRvdWNoVGFy
Z2V0cyk6CisgICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXF1ZXN0Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpIaXRUZXN0UmVxdWVzdDo6RGVmYXVsdCk6CisgICAgICAgIChIaXRUZXN0UmVxdWVz
dCk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW50ZXJuYWxzOjpub2Rlc0Zyb21SZWN0KToKKwogMjAxMi0wOS0wMyAgQWxsYW4gU2FuZGZlbGQg
SmVuc2VuICA8YWxsYW4uamVuc2VuQG5va2lhLmNvbT4KIAogICAgICAgICBBbGxvdyBjaGlsZC1m
cmFtZSBjb250ZW50IGluIGhpdC10ZXN0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCmlu
ZGV4IDgwYjMwNTQxZDI5Y2Y5Mzg5YWM4NmY2ZGNlMGFmNTNlMTEzODc1MTYuLjExNzQ3MTBkMjE4
N2IzYjVjOGNhN2U5OTAzMzRiMzdmOGRjZDA4MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTA5LTA0ICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4g
IDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgorCisgICAgICAgIFNpbXBsaWZ5IGhpdFRlc3RSZXN1
bHRBdFBvaW50IGFuZCBub2Rlc0Zyb21SZWN0IEFQSXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NzIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGNhbGxzIHRvIG5ldyBBUEkuCisKKyAgICAg
ICAgKiBBcGkvV2ViUGFnZS5jcHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBh
Z2VQcml2YXRlOjpjb250ZXh0Tm9kZSk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6Oldl
YlBhZ2VQcml2YXRlOjpub2RlRm9yWm9vbVVuZGVyUG9pbnQpOgorICAgICAgICAoQmxhY2tCZXJy
eTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZTo6aGFuZGxlTW91c2VFdmVudCk6CisgICAgICAgIChC
bGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2U6Om5vZGVBdFBvaW50KToKKyAgICAgICAgKiBXZWJL
aXRTdXBwb3J0L0ZhdEZpbmdlcnMuY3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpG
YXRGaW5nZXJzOjpnZXROb2Rlc0Zyb21SZWN0KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktp
dDo6RmF0RmluZ2Vyczo6Z2V0UmVsZXZhbnRJbmZvRnJvbVBvaW50KToKKyAgICAgICAgKiBXZWJL
aXRTdXBwb3J0L1NlbGVjdGlvbkhhbmRsZXIuY3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2Vi
S2l0Ojp2aXNpYmxlUG9zaXRpb25Gb3JQb2ludElnbm9yaW5nQ2xpcHBpbmcpOgorCiAyMDEyLTA5
LTA0ICBNYXJ5IFd1ICA8bWFyeS53dUB0b3JjaG1vYmlsZS5jb20uY24+CiAKICAgICAgICAgW0Js
YWNrQmVycnldIEFkZCB3ZWJwbGF0Zm9ybSBhbmQgYnJvd3NlciB0byBidWlsZCBpbmZvCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGZjNDhlNTllMGFlNjZiYTA0MDU5MTg1Yjg2ZmY0MmY1
NDg5MTZlYzkuLjFjMjA5YThiYTQ2YjRhYjViMzU2MDgzMGY1NzVhNzAzNjRiZTVmNTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTItMDktMDQgIEFsbGFu
IFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+CisKKyAgICAgICAgU2lt
cGxpZnkgaGl0VGVzdFJlc3VsdEF0UG9pbnQgYW5kIG5vZGVzRnJvbVJlY3QgQVBJcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU3MjAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgY2FsbHMgdG8g
bmV3IEFQSS4KKworICAgICAgICAqIHNyYy9Db250ZXh0TWVudUNsaWVudEltcGwuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpzZWxlY3RNaXNzcGVsbGVkV29yZCk6CisgICAgICAgICogc3JjL0ZyYW1l
TG9hZGVyQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50
SW1wbDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAg
KiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjpj
aGFyYWN0ZXJJbmRleEZvclBvaW50KToKKyAgICAgICAgKiBzcmMvV2ViUGx1Z2luQ29udGFpbmVy
SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbkNvbnRhaW5lckltcGw6OmlzUmVj
dFRvcG1vc3QpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXdJbXBsOjpoYW5kbGVNb3VzZVVwKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0ltcGw6OmNvbXB1dGVCbG9ja0JvdW5kcyk6CisKIDIwMTItMDktMDMgIFRhbyBCYWkgIDxtaWNo
YWVsYmFpQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBZGRlZCBBTkRST0lEX0dEQlNFUlZFUiBk
ZWZpbml0aW9uIGZvciBBbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggNjRiOTY5MWI5ZjE2NWE2NjE2MTQ5
M2E2NTc2YjNhMGQ4YmNlM2M5NS4uMWI0MzNhN2I4ODY1MzAzYjdiYmQ5NWUwYTY2OGQ0MzBmYjE5
MGFjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMi0wOS0wNCAgQWxsYW4g
U2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQG5va2lhLmNvbT4KKworICAgICAgICBTaW1w
bGlmeSBoaXRUZXN0UmVzdWx0QXRQb2ludCBhbmQgbm9kZXNGcm9tUmVjdCBBUElzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTcyMAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBjYWxscyB0byBu
ZXcgQVBJLgorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJh
bWU6OmhpdFRlc3RDb250ZW50KToKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAg
ICAoUVdlYlBhZ2VQcml2YXRlOjpoYW5kbGVTb2Z0d2FyZUlucHV0UGFuZWwpOgorICAgICAgICAo
UVdlYlBhZ2VQcml2YXRlOjpUb3VjaEFkanVzdGVyOjpmaW5kQ2FuZGlkYXRlUG9pbnRGb3JUb3Vj
aCk6CisgICAgICAgIChRV2ViUGFnZTo6dXBkYXRlUG9zaXRpb25EZXBlbmRlbnRBY3Rpb25zKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbik6CisKIDIwMTItMDgtMzEgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24u
aGF1c21hbm5Abm9raWEuY29tPgogCiAgICAgICAgIFtRdF0gUG9ydCBjb252ZXJ0VmFsdWVUb1FW
YXJpYW50IHRvIHVzZSB0aGUgSlNDIEMgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggMDdlNGE2ZWI3
ZTUzYmNhZGQ0ZjQ1MzIxYjk2ZjQ1ZThjZDkzMDdiNS4uOWYwNzg2YzdiYzRlMzkxOWMyOTk2MTZl
ODI2NDI5YTE2YjlhZmJmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEy
LTA5LTA0ICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgor
CisgICAgICAgIFNpbXBsaWZ5IGhpdFRlc3RSZXN1bHRBdFBvaW50IGFuZCBub2Rlc0Zyb21SZWN0
IEFQSXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1
NzIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBk
YXRlIGNhbGxzIHRvIG5ldyBBUEkuCisKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAg
KFdlYlZpZXc6OmhhbmRsZUNvbnRleHRNZW51RXZlbnQpOgorICAgICAgICAoV2ViVmlldzo6ZWxl
bWVudEF0UG9pbnQpOgorCiAyMDEyLTA4LTMwICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgSlNDOjpVU3RyaW5nIGJ5IFdURjo6U3RyaW5n
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
d3gvQ2hhbmdlTG9nCmluZGV4IDM3MTgzY2Y0NmQxNzk4MjY0OGQwOGFjYmU5ZTBhYzc0NmUyNzUy
NTAuLjU5N2EyNWIwYzgwZDRiOGU2NWRkYmJlZGUxMTRmMzFlOWYwNjZhYzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd3gvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDktMDQgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAg
PGFsbGFuLmplbnNlbkBub2tpYS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkgaGl0VGVzdFJlc3Vs
dEF0UG9pbnQgYW5kIG5vZGVzRnJvbVJlY3QgQVBJcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU3MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgY2FsbHMgdG8gbmV3IEFQSS4KKworICAgICAg
ICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OkhpdFRlc3QpOgor
CiAyMDEyLTA4LTMwICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFJlcGxhY2UgSlNDOjpVU3RyaW5nIGJ5IFdURjo6U3RyaW5nCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
MDVmYTZiMGQyMWM2YWM1NzFhNmUyMWI3YTljNjVjYjIwY2MzN2ZiMi4uYWMxNTViMzQ1NjIwYzFh
ZGVkODgzYjZiYTA5OTYyMjk2MDFjNDE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisy
MDEyLTA5LTA0ICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29t
PgorCisgICAgICAgIFNpbXBsaWZ5IGhpdFRlc3RSZXN1bHRBdFBvaW50IGFuZCBub2Rlc0Zyb21S
ZWN0IEFQSXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk1NzIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VXBkYXRlIGNhbGxzIHRvIG5ldyBBUEksIGFuZCB1cGRhdGUgZXhwb3J0ZWQgc3ltYm9scy4KKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0
aW9uQWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9u
QWN0aW9uOjpJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6aGFuZGxlQ29udGV4
dE1lbnVFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmhpZ2hsaWdodFBvdGVudGlh
bEFjdGl2YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpmaW5kWm9vbWFibGVBcmVh
Rm9yUG9pbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y2hhcmFjdGVySW5kZXhGb3JQb2ludCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNob3VsZERlbGF5V2luZG93T3JkZXJpbmdF
dmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmFjY2VwdHNGaXJzdE1vdXNlKToKKyAg
ICAgICAgKiB3aW4vV2ViS2l0Mi5kZWY6CisgICAgICAgICogd2luL1dlYktpdDJDRkxpdGUuZGVm
OgorCiAyMDEyLTA5LTAzICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9r
aWEuY29tPgogCiAgICAgICAgIEFsbG93IGNoaWxkLWZyYW1lIGNvbnRlbnQgaW4gaGl0LXRlc3Rz
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBiYWUzM2Y3ZGE5NTJmZWI1OTIxZDYxYjhlYTQ2ZjBj
YzAyZTk5ZGJhLi4zMjRiNGZmZjBjMWE2NjQxYTc1MDczNDE2NjNiYmQ1MWU3ZjFkZTJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgpAQCAtMTM1Myw3ICsxMzUzLDcgQEAgX19aTks3V2ViQ29yZTdSdW5M
b29wOVRpbWVyQmFzZThpc0FjdGl2ZUV2CiBfX1pOSzdXZWJDb3JlOERvY3VtZW50MTByZW5kZXJW
aWV3RXYKIF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQxMWNvbXBsZXRlVVJMRVJLTjNXVEY2U3RyaW5n
RQogX19aTks3V2ViQ29yZThEb2N1bWVudDEzYXhPYmplY3RDYWNoZUV2Ci1fX1pOSzdXZWJDb3Jl
OERvY3VtZW50MTNub2Rlc0Zyb21SZWN0RWlpampqamJiYgorX19aTks3V2ViQ29yZThEb2N1bWVu
dDEzbm9kZXNGcm9tUmVjdEVpaWpqampqCiBfX1pOSzdXZWJDb3JlOERvY3VtZW50MTRnZXRFbGVt
ZW50QnlJZEVSS04zV1RGMTJBdG9taWNTdHJpbmdFCiBfX1pOSzdXZWJDb3JlOERvY3VtZW50MzFk
aXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nRVJLTjNXVEY2U3RyaW5nRQogX19aTks3V2Vi
Q29yZThEb2N1bWVudDRib2R5RXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
b3JkZXIgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCmluZGV4IDM1YWJmZTYzNWI5M2Rh
NDRiNDcyNWE1NGZiMjIzZDE4MTY3MzhjMWMuLjkwNTljOGQzZjk5MTU0ZjI1YzA1ZDNiYjQ2YTZm
MjVmOTIwNDE0ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgpAQCAtMjI3ODUsNyArMjI3ODUsNyBAQCBf
X1pOSzdXZWJDb3JlMTJOb2RlSXRlcmF0b3IyMHVwZGF0ZUZvck5vZGVSZW1vdmFsRVBOU180Tm9k
ZUVSTlMwXzExTm9kZVBvaW50ZXJFCiBfX1pON1dlYkNvcmUyN2pzTm9kZUl0ZXJhdG9yUmVmZXJl
bmNlTm9kZUVQTjNKU0M5RXhlY1N0YXRlRU5TMF83SlNWYWx1ZUVSS05TMF8xMElkZW50aWZpZXJF
CiBfX1pOSzdXZWJDb3JlNE5vZGUyMHRyYXZlcnNlUHJldmlvdXNOb2RlRVBLUzBfCiBfX1pON1dl
YkNvcmUzN2pzTm9kZUl0ZXJhdG9yUHJvdG90eXBlRnVuY3Rpb25EZXRhY2hFUE4zSlNDOUV4ZWNT
dGF0ZUUKLV9fWk5LN1dlYkNvcmU4RG9jdW1lbnQxM25vZGVzRnJvbVJlY3RFaWlqampqYmJiCitf
X1pOSzdXZWJDb3JlOERvY3VtZW50MTNub2Rlc0Zyb21SZWN0RWlpampqamoKIF9fWk5LN1dlYkNv
cmU4RG9jdW1lbnQxN2hhbmRsZVplcm9QYWRkaW5nRVJLTlNfMTRIaXRUZXN0UmVxdWVzdEVSTlNf
MTNIaXRUZXN0UmVzdWx0RQogX19aTjNXVEYyMUxpc3RIYXNoU2V0VHJhbnNsYXRvcklOU182UmVm
UHRySU43V2ViQ29yZTROb2RlRUVFTG0yNTZFTlNfN1B0ckhhc2hJUzRfRUVFOXRyYW5zbGF0ZUVS
UE5TXzE1TGlzdEhhc2hTZXROb2RlSVM0X0xtMjU2RUVFUktTNF9QTlNfMjRMaXN0SGFzaFNldE5v
ZGVBbGxvY2F0b3JJUzRfTG0yNTZFRUUKIF9fWk43V2ViQ29yZTIxU3RhdGljSGFzaFNldE5vZGVM
aXN0QzFFUk4zV1RGMTFMaXN0SGFzaFNldElOUzFfNlJlZlB0cklOU180Tm9kZUVFRUxtMjU2RU5T
MV83UHRySGFzaElTNV9FRUVFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA0NDY1NzUxMzcx
NGQ4MmNiOWEyOWE5MDU5ZjMwNTA2NWY0OTVkNzVmLi4zYjVhZmY1OTU0YWRmNTFjZWUwYTdmZDE3
NDYwNWViYWZkNGNjZWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTEzODQsNyArMTM4
NCw3IEBAIFN0cmluZyBEb2N1bWVudDo6c3VnZ2VzdGVkTUlNRVR5cGUoKSBjb25zdAogLy8gKiBt
YWtpbmcgaXQgcmVjZWl2ZSBhIHJlY3QgYXMgcGFyYW1ldGVyLCBpLmUuIG5vZGVzRnJvbVJlY3Qo
eCwgeSwgdywgaCk7CiAvLyAqIG1ha2luZyBpdCByZWNlaXZlIHRoZSBleHBhZGluZyBzaXplIG9m
IGVhY2ggZGlyZWN0aW9uIHNlcGFyYXRlbHksCiAvLyAgIGkuZS4gbm9kZXNGcm9tUmVjdCh4LCB5
LCB0b3BTaXplLCByaWdodFNpemUsIGJvdHRvbVNpemUsIGxlZnRTaXplKTsKLVBhc3NSZWZQdHI8
Tm9kZUxpc3Q+IERvY3VtZW50Ojpub2Rlc0Zyb21SZWN0KGludCBjZW50ZXJYLCBpbnQgY2VudGVy
WSwgdW5zaWduZWQgdG9wUGFkZGluZywgdW5zaWduZWQgcmlnaHRQYWRkaW5nLCB1bnNpZ25lZCBi
b3R0b21QYWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGluZywgYm9vbCBpZ25vcmVDbGlwcGluZywg
Ym9vbCBhbGxvd1NoYWRvd0NvbnRlbnQsIGJvb2wgYWxsb3dDaGlsZEZyYW1lQ29udGVudCkgY29u
c3QKK1Bhc3NSZWZQdHI8Tm9kZUxpc3Q+IERvY3VtZW50Ojpub2Rlc0Zyb21SZWN0KGludCBjZW50
ZXJYLCBpbnQgY2VudGVyWSwgdW5zaWduZWQgdG9wUGFkZGluZywgdW5zaWduZWQgcmlnaHRQYWRk
aW5nLCB1bnNpZ25lZCBib3R0b21QYWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGluZywgSGl0VGVz
dFJlcXVlc3Q6OkhpdFRlc3RSZXF1ZXN0VHlwZSBoaXRUeXBlKSBjb25zdAogewogICAgIC8vIEZJ
WE1FOiBTaGFyZSBjb2RlIGJldHdlZW4gdGhpcywgZWxlbWVudEZyb21Qb2ludCBhbmQgY2FyZXRS
YW5nZUZyb21Qb2ludC4KICAgICBpZiAoIXJlbmRlcmVyKCkpCkBAIC0xMzk5LDE5ICsxMzk5LDEx
IEBAIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IERvY3VtZW50Ojpub2Rlc0Zyb21SZWN0KGludCBjZW50
ZXJYLCBpbnQgY2VudGVyWSwgdW5zaWduZWQKICAgICBmbG9hdCB6b29tRmFjdG9yID0gZnJhbWUt
PnBhZ2Vab29tRmFjdG9yKCk7CiAgICAgTGF5b3V0UG9pbnQgcG9pbnQgPSByb3VuZGVkTGF5b3V0
UG9pbnQoRmxvYXRQb2ludChjZW50ZXJYICogem9vbUZhY3RvciArIHZpZXcoKS0+c2Nyb2xsWCgp
LCBjZW50ZXJZICogem9vbUZhY3RvciArIHZpZXcoKS0+c2Nyb2xsWSgpKSk7CiAKLSAgICBpbnQg
dHlwZSA9IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmU7
CisgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChoaXRUeXBlKTsKIAogICAgIC8vIFdoZW4gaWdu
b3JlQ2xpcHBpbmcgaXMgZmFsc2UsIHRoaXMgbWV0aG9kIHJldHVybnMgbnVsbCBmb3IgY29vcmRp
bmF0ZXMgb3V0c2lkZSBvZiB0aGUgdmlld3BvcnQuCi0gICAgaWYgKGlnbm9yZUNsaXBwaW5nKQot
ICAgICAgICB0eXBlIHw9IEhpdFRlc3RSZXF1ZXN0OjpJZ25vcmVDbGlwcGluZzsKLSAgICBlbHNl
IGlmICghZnJhbWVWaWV3LT52aXNpYmxlQ29udGVudFJlY3QoKS5pbnRlcnNlY3RzKEhpdFRlc3RS
ZXN1bHQ6OnJlY3RGb3JQb2ludChwb2ludCwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0
b21QYWRkaW5nLCBsZWZ0UGFkZGluZykpKQorICAgIGlmICghcmVxdWVzdC5pZ25vcmVDbGlwcGlu
ZygpICYmICFmcmFtZVZpZXctPnZpc2libGVDb250ZW50UmVjdCgpLmludGVyc2VjdHMoSGl0VGVz
dFJlc3VsdDo6cmVjdEZvclBvaW50KHBvaW50LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJv
dHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nKSkpCiAgICAgICAgIHJldHVybiAwOwotICAgIGlmIChh
bGxvd1NoYWRvd0NvbnRlbnQpCi0gICAgICAgIHR5cGUgfD0gSGl0VGVzdFJlcXVlc3Q6OkFsbG93
U2hhZG93Q29udGVudDsKLSAgICBpZiAoYWxsb3dDaGlsZEZyYW1lQ29udGVudCkKLSAgICAgICAg
dHlwZSB8PSBIaXRUZXN0UmVxdWVzdDo6QWxsb3dDaGlsZEZyYW1lQ29udGVudDsKLQotICAgIEhp
dFRlc3RSZXF1ZXN0IHJlcXVlc3QodHlwZSk7CiAKICAgICAvLyBQYXNzaW5nIGEgemVybyBwYWRk
aW5nIHdpbGwgdHJpZ2dlciBhIHJlY3QgaGl0IHRlc3QsIGhvd2V2ZXIgZm9yIHRoZSBwdXJwb3Nl
cyBvZiBub2Rlc0Zyb21SZWN0LAogICAgIC8vIHdlIHNwZWNpYWwgaGFuZGxlIHRoaXMgY2FzZSBp
biBvcmRlciB0byByZXR1cm4gYSB2YWxpZCBOb2RlTGlzdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5k
ZXggMjg3MmU1YzJhYTliMzYyOWE1NDYwYzE2YjI4YTRkY2ZhNGZmZmQ5OC4uMTI0NWQ3ZTRhMDVj
NjkwNDI1MWJiNTRkNWQ3NDU4MDI3ODFjYjI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTM0
LDYgKzM0LDcgQEAKICNpbmNsdWRlICJET01UaW1lU3RhbXAuaCIKICNpbmNsdWRlICJEb2N1bWVu
dEV2ZW50UXVldWUuaCIKICNpbmNsdWRlICJEb2N1bWVudFRpbWluZy5oIgorI2luY2x1ZGUgIkhp
dFRlc3RSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiSWNvblVSTC5oIgogI2luY2x1ZGUgIkluc3BlY3Rv
ckNvdW50ZXJzLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgpAQCAtMzc2LDEyICszNzcsMTAgQEAg
cHVibGljOgogICAgICAqIEBwYXJhbSByaWdodFBhZGRpbmcgSG93IG11Y2ggdG8gZXhwYW5kIHRo
ZSByaWdodCBvZiB0aGUgcmVjdGFuZ2xlCiAgICAgICogQHBhcmFtIGJvdHRvbVBhZGRpbmcgSG93
IG11Y2ggdG8gZXhwYW5kIHRoZSBib3R0b20gb2YgdGhlIHJlY3RhbmdsZQogICAgICAqIEBwYXJh
bSBsZWZ0UGFkZGluZyBIb3cgbXVjaCB0byBleHBhbmQgdGhlIGxlZnQgb2YgdGhlIHJlY3Rhbmds
ZQotICAgICAqIEBwYXJhbSBpZ25vcmVDbGlwcGluZyB3aGV0aGVyIG9yIG5vdCB0byBpZ25vcmUg
dGhlIHJvb3Qgc2Nyb2xsIGZyYW1lIHdoZW4gcmV0cmlldmluZyB0aGUgZWxlbWVudC4KLSAgICAg
KiAgICAgICAgSWYgZmFsc2UsIHRoaXMgbWV0aG9kIHJldHVybnMgbnVsbCBmb3IgY29vcmRpbmF0
ZXMgb3V0c2lkZSBvZiB0aGUgdmlld3BvcnQuCiAgICAgICovCiAgICAgUGFzc1JlZlB0cjxOb2Rl
TGlzdD4gbm9kZXNGcm9tUmVjdChpbnQgY2VudGVyWCwgaW50IGNlbnRlclksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25l
ZCByaWdodFBhZGRpbmcsIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRk
aW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpZ25vcmVD
bGlwcGluZywgYm9vbCBhbGxvd1NoYWRvd0NvbnRlbnQsIGJvb2wgYWxsb3dDaGlsZEZyYW1lQ29u
dGVudCA9IGZhbHNlKSBjb25zdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEhpdFRlc3RSZXF1ZXN0OjpIaXRUZXN0UmVxdWVzdFR5cGUgaGl0VHlwZSA9IEhpdFRlc3RS
ZXF1ZXN0OjpEZWZhdWx0KGZhbHNlKSkgY29uc3Q7CiAgICAgRWxlbWVudCogZWxlbWVudEZyb21Q
b2ludChpbnQgeCwgaW50IHkpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8UmFuZ2U+IGNhcmV0UmFu
Z2VGcm9tUG9pbnQoaW50IHgsIGludCB5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250
ZXh0TWVudUNvbnRyb2xsZXIuY3BwCmluZGV4IGQ5MDE5ZmMzMGZkNWQ4NjQ2ZjJmNGVmZjRlYTU0
ZjQ4OWY4OTM4NWIuLjg3ZjNjYzRkNjE5YjU2NmMwNWQyMzYxZjQ5NTA2NzU0MWJkMjVjMjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKQEAgLTE0
OSw3ICsxNDksNyBAQCBQYXNzT3duUHRyPENvbnRleHRNZW51PiBDb250ZXh0TWVudUNvbnRyb2xs
ZXI6OmNyZWF0ZUNvbnRleHRNZW51KEV2ZW50KiBldmVudCkKICAgICBIaXRUZXN0UmVzdWx0IHJl
c3VsdChtb3VzZUV2ZW50LT5hYnNvbHV0ZUxvY2F0aW9uKCkpOwogCiAgICAgaWYgKEZyYW1lKiBm
cmFtZSA9IGV2ZW50LT50YXJnZXQoKS0+dG9Ob2RlKCktPmRvY3VtZW50KCktPmZyYW1lKCkpCi0g
ICAgICAgIHJlc3VsdCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9p
bnQobW91c2VFdmVudC0+YWJzb2x1dGVMb2NhdGlvbigpLCBmYWxzZSk7CisgICAgICAgIHJlc3Vs
dCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQobW91c2VFdmVu
dC0+YWJzb2x1dGVMb2NhdGlvbigpKTsKIAogICAgIGlmICghcmVzdWx0LmlubmVyTm9uU2hhcmVk
Tm9kZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29u
dHJvbGxlci5jcHAKaW5kZXggYzc0NGMxODllYmRiZjRmMGE0MGI4YTk5ZDhlNzlhMjVkYjBhNmQ2
OC4uMzBhMDdlOGI5MDZjMmJjN2RmYzBkODUyY2Q1YmFiZmM3ZjA1YTlmMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTU0NCw3ICs1NDQsNyBAQCBib29sIERyYWdD
b250cm9sbGVyOjpjYW5Qcm9jZXNzRHJhZyhEcmFnRGF0YSogZHJhZ0RhdGEpCiAgICAgaWYgKCFt
X3BhZ2UtPm1haW5GcmFtZSgpLT5jb250ZW50UmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgcmVzdWx0ID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCkt
PmhpdFRlc3RSZXN1bHRBdFBvaW50KHBvaW50LCB0cnVlKTsKKyAgICByZXN1bHQgPSBtX3BhZ2Ut
Pm1haW5GcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQocG9pbnQs
IEhpdFRlc3RSZXF1ZXN0OjpEZWZhdWx0KHRydWUpKTsKIAogICAgIGlmICghcmVzdWx0LmlubmVy
Tm9uU2hhcmVkTm9kZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC03MjYsNyArNzI2LDcg
QEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lKiBzcmMsIGNvbnN0IERyYWdT
dGF0ZSYgc3RhdGUsIERyYWdPcGVyYXRpb24KICAgICBpZiAoIXNyYy0+dmlldygpIHx8ICFzcmMt
PmNvbnRlbnRSZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBIaXRUZXN0
UmVzdWx0IGhpdFRlc3RSZXN1bHQgPSBzcmMtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0
QXRQb2ludChkcmFnT3JpZ2luLCB0cnVlKTsKKyAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3RSZXN1
bHQgPSBzcmMtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChkcmFnT3JpZ2lu
LCBIaXRUZXN0UmVxdWVzdDo6RGVmYXVsdCh0cnVlKSk7CiAgICAgaWYgKCFzdGF0ZS5tX2RyYWdT
cmMtPmNvbnRhaW5zKGhpdFRlc3RSZXN1bHQuaW5uZXJOb2RlKCkpKQogICAgICAgICAvLyBUaGUg
b3JpZ2luYWwgbm9kZSBiZWluZyBkcmFnZ2VkIGlzbid0IHVuZGVyIHRoZSBkcmFnIG9yaWdpbiBh
bnltb3JlLi4uIG1heWJlIGl0IHdhcwogICAgICAgICAvLyBoaWRkZW4gb3IgbW92ZWQgb3V0IGZy
b20gdW5kZXIgdGhlIGN1cnNvci4gUmVnYXJkbGVzcywgd2UgZG9uJ3Qgd2FudCB0byBzdGFydCBh
IGRyYWcgb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCAwMDFmZDZkOWU5
ZTExNjI5NWQyMGM1MDkyMzAxOTI3YTA1ZDdkZjkwLi40OTM0MjViZDljN2ZjYzhjMTg3ZTViNjlm
MWJiYTY0MDAzOWYzMjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFu
ZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0x
MDA3LDcgKzEwMDcsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6dXBkYXRlQXV0b3Njcm9sbFJlbmRl
cmVyKCkKICAgICBpZiAoIW1fYXV0b3Njcm9sbFJlbmRlcmVyKQogICAgICAgICByZXR1cm47CiAK
LSAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3QgPSBoaXRUZXN0UmVzdWx0QXRQb2ludChtX3BhblNj
cm9sbFN0YXJ0UG9zLCB0cnVlKTsKKyAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3QgPSBoaXRUZXN0
UmVzdWx0QXRQb2ludChtX3BhblNjcm9sbFN0YXJ0UG9zLCBIaXRUZXN0UmVxdWVzdDo6RGVmYXVs
dCh0cnVlKSk7CiAKICAgICBpZiAoTm9kZSogbm9kZUF0UG9pbnQgPSBoaXRUZXN0LmlubmVyTm9k
ZSgpKQogICAgICAgICBtX2F1dG9zY3JvbGxSZW5kZXJlciA9IG5vZGVBdFBvaW50LT5yZW5kZXJl
cigpOwpAQCAtMTAzOSwyMiArMTAzOSwxOCBAQCBEcmFnU291cmNlQWN0aW9uIEV2ZW50SGFuZGxl
cjo6dXBkYXRlRHJhZ1NvdXJjZUFjdGlvbnNBbGxvd2VkKCkgY29uc3QKIH0KICNlbmRpZiAvLyBF
TkFCTEUoRFJBR19TVVBQT1JUKQogICAgIAotSGl0VGVzdFJlc3VsdCBFdmVudEhhbmRsZXI6Omhp
dFRlc3RSZXN1bHRBdFBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCwgYm9vbCBhbGxvd1No
YWRvd0NvbnRlbnQsIGJvb2wgaWdub3JlQ2xpcHBpbmcsIEhpdFRlc3RTY3JvbGxiYXJzIHRlc3RT
Y3JvbGxiYXJzLCBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhpdFR5cGUsIGNv
bnN0IExheW91dFNpemUmIHBhZGRpbmcpCitIaXRUZXN0UmVzdWx0IEV2ZW50SGFuZGxlcjo6aGl0
VGVzdFJlc3VsdEF0UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBIaXRUZXN0UmVxdWVz
dDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhpdFR5cGUsIGNvbnN0IExheW91dFNpemUmIHBhZGRpbmcp
CiB7CiAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQocG9pbnQsIHBhZGRpbmcuaGVpZ2h0KCksIHBh
ZGRpbmcud2lkdGgoKSwgcGFkZGluZy5oZWlnaHQoKSwgcGFkZGluZy53aWR0aCgpKTsKIAogICAg
IGlmICghbV9mcmFtZS0+Y29udGVudFJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQ7
Ci0gICAgaWYgKGlnbm9yZUNsaXBwaW5nKQotICAgICAgICBoaXRUeXBlIHw9IEhpdFRlc3RSZXF1
ZXN0OjpJZ25vcmVDbGlwcGluZzsKLSAgICBpZiAoYWxsb3dTaGFkb3dDb250ZW50KQotICAgICAg
ICBoaXRUeXBlIHw9IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd1NoYWRvd0NvbnRlbnQ7Ci0gICAgaWYg
KHRlc3RTY3JvbGxiYXJzID09IFNob3VsZEhpdFRlc3RTY3JvbGxiYXJzKQotICAgICAgICBoaXRU
eXBlIHw9IEhpdFRlc3RSZXF1ZXN0OjpUZXN0Q2hpbGRGcmFtZVNjcm9sbEJhcnM7CiAgICAgLy8g
V2UgYWx3YXlzIG5lZWQgdG8gaGFuZGxlIGNoaWxkIGZyYW1lIGNvbnRlbnQuCiAgICAgaGl0VHlw
ZSB8PSBIaXRUZXN0UmVxdWVzdDo6QWxsb3dDaGlsZEZyYW1lQ29udGVudDsKIAotICAgIG1fZnJh
bWUtPmNvbnRlbnRSZW5kZXJlcigpLT5oaXRUZXN0KEhpdFRlc3RSZXF1ZXN0KGhpdFR5cGUpLCBy
ZXN1bHQpOworICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoaGl0VHlwZSk7CisKKyAgICBtX2Zy
YW1lLT5jb250ZW50UmVuZGVyZXIoKS0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOwogCiAgICAg
Ly8gSWYgb3VyIEhpdFRlc3RSZXN1bHQgaXMgbm90IHZpc2libGUsIHRoZW4gd2Ugc3RhcnRlZCBo
aXQgdGVzdGluZyB0b28gZmFyIGRvd24gdGhlIGZyYW1lIGNoYWluLiAKICAgICAvLyBBbm90aGVy
IGhpdCB0ZXN0IGF0IHRoZSBtYWluIGZyYW1lIGxldmVsIHNob3VsZCBnZXQgdXMgdGhlIGNvcnJl
Y3QgdmlzaWJsZSByZXN1bHQuCkBAIC0xMDY2LDEyICsxMDYyLDEyIEBAIEhpdFRlc3RSZXN1bHQg
RXZlbnRIYW5kbGVyOjpoaXRUZXN0UmVzdWx0QXRQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9p
bnQsIGJvb2wKICAgICAgICAgICAgIEZyYW1lVmlldyogbWFpblZpZXcgPSBtYWluRnJhbWUtPnZp
ZXcoKTsKICAgICAgICAgICAgIGlmIChyZXN1bHRWaWV3ICYmIG1haW5WaWV3KSB7CiAgICAgICAg
ICAgICAgICAgSW50UG9pbnQgbWFpbkZyYW1lUG9pbnQgPSBtYWluVmlldy0+cm9vdFZpZXdUb0Nv
bnRlbnRzKHJlc3VsdFZpZXctPmNvbnRlbnRzVG9Sb290Vmlldyhyb3VuZGVkSW50UG9pbnQocmVz
dWx0LnBvaW50KCkpKSk7Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gbWFpbkZyYW1lLT5ldmVu
dEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQobWFpbkZyYW1lUG9pbnQsIGFsbG93U2hh
ZG93Q29udGVudCwgaWdub3JlQ2xpcHBpbmcsIHRlc3RTY3JvbGxiYXJzLCBoaXRUeXBlLCBwYWRk
aW5nKTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBtYWluRnJhbWUtPmV2ZW50SGFuZGxlcigp
LT5oaXRUZXN0UmVzdWx0QXRQb2ludChtYWluRnJhbWVQb2ludCwgaGl0VHlwZSwgcGFkZGluZyk7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoIWFsbG93U2hhZG93
Q29udGVudCkKKyAgICBpZiAoIXJlcXVlc3QuYWxsb3dzU2hhZG93Q29udGVudCgpKQogICAgICAg
ICByZXN1bHQuc2V0VG9Ob25TaGFkb3dBbmNlc3RvcigpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsK
QEAgLTE0ODEsNyArMTQ3Nyw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNz
RXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBtb3VzZUV2ZW50KQogICAgIG1fbW91c2VE
b3duV2FzSW5TdWJmcmFtZSA9IGZhbHNlOwogCiAgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChI
aXRUZXN0UmVxdWVzdDo6QWN0aXZlKTsKLSAgICAvLyBTYXZlIHRoZSBkb2N1bWVudCBwb2ludCB3
ZSBnZW5lcmF0ZSBpbiBjYXNlIHRoZSB3aW5kb3cgY29vcmRpbmF0ZSBpcyBpbnZhbGlkYXRlZCBi
eSB3aGF0IGhhcHBlbnMgCisgICAgLy8gU2F2ZSB0aGUgZG9jdW1lbnQgcG9pbnQgd2UgZ2VuZXJh
dGUgaW4gY2FzZSB0aGUgd2luZG93IGNvb3JkaW5hdGUgaXMgaW52YWxpZGF0ZWQgYnkgd2hhdCBo
YXBwZW5zCiAgICAgLy8gd2hlbiB3ZSBkaXNwYXRjaCB0aGUgZXZlbnQuCiAgICAgTGF5b3V0UG9p
bnQgZG9jdW1lbnRQb2ludCA9IGRvY3VtZW50UG9pbnRGb3JXaW5kb3dQb2ludChtX2ZyYW1lLCBt
b3VzZUV2ZW50LnBvc2l0aW9uKCkpOwogICAgIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMg
bWV2ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+cHJlcGFyZU1vdXNlRXZlbnQocmVxdWVzdCwgZG9j
dW1lbnRQb2ludCwgbW91c2VFdmVudCk7CkBAIC0yMzgxLDcgKzIzNzcsNyBAQCBib29sIEV2ZW50
SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBn
ZXN0dXJlRXZlbnQpCiAgICAgICAgIGV2ZW50VGFyZ2V0ID0gbV9zY3JvbGxHZXN0dXJlSGFuZGxp
bmdOb2RlLmdldCgpOwogCiAgICAgaWYgKCFldmVudFRhcmdldCkgewotICAgICAgICBIaXRUZXN0
UmVzdWx0IHJlc3VsdCA9IGhpdFRlc3RSZXN1bHRBdFBvaW50KGdlc3R1cmVFdmVudC5wb3NpdGlv
bigpLCBmYWxzZSwgZmFsc2UsIERvbnRIaXRUZXN0U2Nyb2xsYmFycywgSGl0VGVzdFJlcXVlc3Q6
OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSk7CisgICAgICAgIEhpdFRlc3RSZXN1
bHQgcmVzdWx0ID0gaGl0VGVzdFJlc3VsdEF0UG9pbnQoZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCkp
OwogICAgICAgICBldmVudFRhcmdldCA9IHJlc3VsdC50YXJnZXROb2RlKCk7CiAgICAgfQogCkBA
IC0yNDgzLDkgKzI0NzksOCBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZVNjcm9s
bENvcmUoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFdgogI2lmIEVOQUJMRShU
T1VDSF9BREpVU1RNRU5UKQogYm9vbCBFdmVudEhhbmRsZXI6OmJlc3RDbGlja2FibGVOb2RlRm9y
VG91Y2hQb2ludChjb25zdCBJbnRQb2ludCYgdG91Y2hDZW50ZXIsIGNvbnN0IEludFNpemUmIHRv
dWNoUmFkaXVzLCBJbnRQb2ludCYgdGFyZ2V0UG9pbnQsIE5vZGUqJiB0YXJnZXROb2RlKQogewot
ICAgIEhpdFRlc3RSZXF1ZXN0OjpIaXRUZXN0UmVxdWVzdFR5cGUgaGl0VHlwZSA9IEhpdFRlc3RS
ZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmU7CiAgICAgSW50UG9pbnQg
aGl0VGVzdFBvaW50ID0gbV9mcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHRvdWNoQ2Vu
dGVyKTsKLSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGhpdFRlc3RSZXN1bHRBdFBvaW50KGhp
dFRlc3RQb2ludCwgLyphbGxvd1NoYWRvd0NvbnRlbnQqLyB0cnVlLCAvKmlnbm9yZUNsaXBwaW5n
Ki8gZmFsc2UsIERvbnRIaXRUZXN0U2Nyb2xsYmFycywgaGl0VHlwZSwgdG91Y2hSYWRpdXMpOwor
ICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gaGl0VGVzdFJlc3VsdEF0UG9pbnQoaGl0VGVzdFBv
aW50LCBIaXRUZXN0UmVxdWVzdDo6RGVmYXVsdCh0cnVlKSwgdG91Y2hSYWRpdXMpOwogCiAgICAg
SW50UmVjdCB0b3VjaFJlY3QodG91Y2hDZW50ZXIgLSB0b3VjaFJhZGl1cywgdG91Y2hSYWRpdXMg
KyB0b3VjaFJhZGl1cyk7CiAgICAgUmVmUHRyPFN0YXRpY0hhc2hTZXROb2RlTGlzdD4gbm9kZUxp
c3QgPSBTdGF0aWNIYXNoU2V0Tm9kZUxpc3Q6OmFkb3B0KHJlc3VsdC5yZWN0QmFzZWRUZXN0UmVz
dWx0KCkpOwpAQCAtMjUwMiw5ICsyNDk3LDggQEAgYm9vbCBFdmVudEhhbmRsZXI6OmJlc3RDbGlj
a2FibGVOb2RlRm9yVG91Y2hQb2ludChjb25zdCBJbnRQb2ludCYgdG91Y2hDZW50ZXIsIGMKIAog
Ym9vbCBFdmVudEhhbmRsZXI6OmJlc3RDb250ZXh0TWVudU5vZGVGb3JUb3VjaFBvaW50KGNvbnN0
IEludFBvaW50JiB0b3VjaENlbnRlciwgY29uc3QgSW50U2l6ZSYgdG91Y2hSYWRpdXMsIEludFBv
aW50JiB0YXJnZXRQb2ludCwgTm9kZSomIHRhcmdldE5vZGUpCiB7Ci0gICAgSGl0VGVzdFJlcXVl
c3Q6OkhpdFRlc3RSZXF1ZXN0VHlwZSBoaXRUeXBlID0gSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5
IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZTsKICAgICBJbnRQb2ludCBoaXRUZXN0UG9pbnQgPSBt
X2ZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHModG91Y2hDZW50ZXIpOwotICAgIEhpdFRl
c3RSZXN1bHQgcmVzdWx0ID0gaGl0VGVzdFJlc3VsdEF0UG9pbnQoaGl0VGVzdFBvaW50LCAvKmFs
bG93U2hhZG93Q29udGVudCovIHRydWUsIC8qaWdub3JlQ2xpcHBpbmcqLyBmYWxzZSwgRG9udEhp
dFRlc3RTY3JvbGxiYXJzLCBoaXRUeXBlLCB0b3VjaFJhZGl1cyk7CisgICAgSGl0VGVzdFJlc3Vs
dCByZXN1bHQgPSBoaXRUZXN0UmVzdWx0QXRQb2ludChoaXRUZXN0UG9pbnQsIEhpdFRlc3RSZXF1
ZXN0OjpEZWZhdWx0KHRydWUpLCB0b3VjaFJhZGl1cyk7CiAKICAgICBJbnRSZWN0IHRvdWNoUmVj
dCh0b3VjaENlbnRlciAtIHRvdWNoUmFkaXVzLCB0b3VjaFJhZGl1cyArIHRvdWNoUmFkaXVzKTsK
ICAgICBSZWZQdHI8U3RhdGljSGFzaFNldE5vZGVMaXN0PiBub2RlTGlzdCA9IFN0YXRpY0hhc2hT
ZXROb2RlTGlzdDo6YWRvcHQocmVzdWx0LnJlY3RCYXNlZFRlc3RSZXN1bHQoKSk7CkBAIC0yNTEz
LDkgKzI1MDcsOCBAQCBib29sIEV2ZW50SGFuZGxlcjo6YmVzdENvbnRleHRNZW51Tm9kZUZvclRv
dWNoUG9pbnQoY29uc3QgSW50UG9pbnQmIHRvdWNoQ2VudGVyLAogCiBib29sIEV2ZW50SGFuZGxl
cjo6YmVzdFpvb21hYmxlQXJlYUZvclRvdWNoUG9pbnQoY29uc3QgSW50UG9pbnQmIHRvdWNoQ2Vu
dGVyLCBjb25zdCBJbnRTaXplJiB0b3VjaFJhZGl1cywgSW50UmVjdCYgdGFyZ2V0QXJlYSwgTm9k
ZSomIHRhcmdldE5vZGUpCiB7Ci0gICAgSGl0VGVzdFJlcXVlc3Q6OkhpdFRlc3RSZXF1ZXN0VHlw
ZSBoaXRUeXBlID0gSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFj
dGl2ZTsKICAgICBJbnRQb2ludCBoaXRUZXN0UG9pbnQgPSBtX2ZyYW1lLT52aWV3KCktPndpbmRv
d1RvQ29udGVudHModG91Y2hDZW50ZXIpOwotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gaGl0
VGVzdFJlc3VsdEF0UG9pbnQoaGl0VGVzdFBvaW50LCAvKmFsbG93U2hhZG93Q29udGVudCovIGZh
bHNlLCAvKmlnbm9yZUNsaXBwaW5nKi8gZmFsc2UsIERvbnRIaXRUZXN0U2Nyb2xsYmFycywgaGl0
VHlwZSwgdG91Y2hSYWRpdXMpOworICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gaGl0VGVzdFJl
c3VsdEF0UG9pbnQoaGl0VGVzdFBvaW50LCBIaXRUZXN0UmVxdWVzdDo6RGVmYXVsdChmYWxzZSks
IHRvdWNoUmFkaXVzKTsKIAogICAgIEludFJlY3QgdG91Y2hSZWN0KHRvdWNoQ2VudGVyIC0gdG91
Y2hSYWRpdXMsIHRvdWNoUmFkaXVzICsgdG91Y2hSYWRpdXMpOwogICAgIFJlZlB0cjxTdGF0aWNI
YXNoU2V0Tm9kZUxpc3Q+IG5vZGVMaXN0ID0gU3RhdGljSGFzaFNldE5vZGVMaXN0OjphZG9wdChy
ZXN1bHQucmVjdEJhc2VkVGVzdFJlc3VsdCgpKTsKQEAgLTM1NTcsNyArMzU1MCw3IEBAIGJvb2wg
RXZlbnRIYW5kbGVyOjpoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYg
ZXZlbnQpCiAgICAgICAgIHVuc2lnbmVkIHRvdWNoUG9pbnRUYXJnZXRLZXkgPSBwb2ludC5pZCgp
ICsgMTsKICAgICAgICAgUmVmUHRyPEV2ZW50VGFyZ2V0PiB0b3VjaFRhcmdldDsKICAgICAgICAg
aWYgKHBvaW50U3RhdGUgPT0gUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFByZXNzZWQpIHsKLSAg
ICAgICAgICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gaGl0VGVzdFJlc3VsdEF0UG9pbnQocGFn
ZVBvaW50LCAvKmFsbG93U2hhZG93Q29udGVudCovIGZhbHNlLCBmYWxzZSwgRG9udEhpdFRlc3RT
Y3JvbGxiYXJzLCBoaXRUeXBlKTsKKyAgICAgICAgICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0g
aGl0VGVzdFJlc3VsdEF0UG9pbnQocGFnZVBvaW50LCBoaXRUeXBlKTsKICAgICAgICAgICAgIE5v
ZGUqIG5vZGUgPSByZXN1bHQuaW5uZXJOb2RlKCk7CiAgICAgICAgICAgICBBU1NFUlQobm9kZSk7
CiAKQEAgLTM1NzUsNyArMzU2OCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVUb3VjaEV2
ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYgZXZlbnQpCiAgICAgICAgICAgICB0b3VjaFRh
cmdldCA9IG5vZGU7CiAgICAgICAgIH0gZWxzZSBpZiAocG9pbnRTdGF0ZSA9PSBQbGF0Zm9ybVRv
dWNoUG9pbnQ6OlRvdWNoUmVsZWFzZWQgfHwgcG9pbnRTdGF0ZSA9PSBQbGF0Zm9ybVRvdWNoUG9p
bnQ6OlRvdWNoQ2FuY2VsbGVkKSB7CiAgICAgICAgICAgICAvLyBXZSBvbmx5IHBlcmZvcm0gYSBo
aXR0ZXN0IG9uIHJlbGVhc2Ugb3IgY2FuY2VsIHRvIHVuc2V0IDphY3RpdmUgb3IgOmhvdmVyIHN0
YXRlLgotICAgICAgICAgICAgaGl0VGVzdFJlc3VsdEF0UG9pbnQocGFnZVBvaW50LCAvKmFsbG93
U2hhZG93Q29udGVudCovIGZhbHNlLCBmYWxzZSwgRG9udEhpdFRlc3RTY3JvbGxiYXJzLCBoaXRU
eXBlKTsKKyAgICAgICAgICAgIGhpdFRlc3RSZXN1bHRBdFBvaW50KHBhZ2VQb2ludCwgaGl0VHlw
ZSk7CiAgICAgICAgICAgICAvLyBUaGUgdGFyZ2V0IHNob3VsZCBiZSB0aGUgb3JpZ2luYWwgdGFy
Z2V0IGZvciB0aGlzIHRvdWNoLCBzbyBnZXQgaXQgZnJvbSB0aGUgaGFzaG1hcC4gQXMgaXQncyBh
IHJlbGVhc2Ugb3IgY2FuY2VsCiAgICAgICAgICAgICAvLyB3ZSBhbHNvIHJlbW92ZSBpdCBmcm9t
IHRoZSBtYXAuCiAgICAgICAgICAgICB0b3VjaFRhcmdldCA9IG1fb3JpZ2luYXRpbmdUb3VjaFBv
aW50VGFyZ2V0cy50YWtlKHRvdWNoUG9pbnRUYXJnZXRLZXkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmgKaW5kZXggNmQ4YTBhYjc2NzNhOGM4ZmRmYjRjOWE5NWRiZmMxYWFkOTU1ZDQ4Ny4u
MjJiNTlmY2U3YmFhYTQxMDdjNjgwYmY5ZjgwMjY5ZDZhMjg5YmJkYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5oCkBAIC04OCw4ICs4OCw2IEBAIGV4dGVybiBjb25zdCBpbnQgVGV4dERy
YWdIeXN0ZXJlc2lzOwogZXh0ZXJuIGNvbnN0IGludCBHZW5lcmFsRHJhZ0h5c3RlcmVzaXM7CiAj
ZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQUE9SVCkKIAotZW51bSBIaXRUZXN0U2Nyb2xsYmFycyB7
IFNob3VsZEhpdFRlc3RTY3JvbGxiYXJzLCBEb250SGl0VGVzdFNjcm9sbGJhcnMgfTsKLQogY2xh
c3MgRXZlbnRIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShFdmVudEhhbmRsZXIp
OwogcHVibGljOgpAQCAtMTE1LDkgKzExMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc3BhdGNo
RmFrZU1vdXNlTW92ZUV2ZW50U29vbigpOwogICAgIHZvaWQgZGlzcGF0Y2hGYWtlTW91c2VNb3Zl
RXZlbnRTb29uSW5RdWFkKGNvbnN0IEZsb2F0UXVhZCYpOwogCi0gICAgSGl0VGVzdFJlc3VsdCBo
aXRUZXN0UmVzdWx0QXRQb2ludChjb25zdCBMYXlvdXRQb2ludCYsIGJvb2wgYWxsb3dTaGFkb3dD
b250ZW50LCBib29sIGlnbm9yZUNsaXBwaW5nID0gZmFsc2UsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBIaXRUZXN0U2Nyb2xsYmFycyBzY3JvbGxiYXJzID0gRG9udEhp
dFRlc3RTY3JvbGxiYXJzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SGl0VGVzdFJlcXVlc3Q6OkhpdFRlc3RSZXF1ZXN0VHlwZSBoaXRUeXBlID0gSGl0VGVzdFJlcXVl
c3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSwKKyAgICBIaXRUZXN0UmVzdWx0
IGhpdFRlc3RSZXN1bHRBdFBvaW50KGNvbnN0IExheW91dFBvaW50JiwgSGl0VGVzdFJlcXVlc3Q6
OkhpdFRlc3RSZXF1ZXN0VHlwZSBoaXRUeXBlID0gSGl0VGVzdFJlcXVlc3Q6OkRlZmF1bHQoZmFs
c2UpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTGF5b3V0
U2l6ZSYgcGFkZGluZyA9IExheW91dFNpemUoKSk7CiAKICAgICBib29sIG1vdXNlUHJlc3NlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fbW91c2VQcmVzc2VkOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3Vz
Q29udHJvbGxlci5jcHAKaW5kZXggMGI5NDE4YmEzMmJiOWM0YzU3YmQ2MjU0NTVkODIwYmM4OWRj
MWEwMS4uYTEyYTA0NTcxZTdlMjAyMzNiMWQyOGEyYjc2ZTEzN2FiZjZkNjQ0MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcApAQCAtNzQ1LDcgKzc0NSw3IEBAIHN0YXRp
YyB2b2lkIHVwZGF0ZUZvY3VzQ2FuZGlkYXRlSWZOZWVkZWQoRm9jdXNEaXJlY3Rpb24gZGlyZWN0
aW9uLCBjb25zdCBGb2N1c0NhCiAgICAgICAgIC8vIElmIDIgbm9kZXMgYXJlIGludGVyc2VjdGlu
ZywgZG8gaGl0IHRlc3QgdG8gZmluZCB3aGljaCBub2RlIGluIG9uIHRvcC4KICAgICAgICAgTGF5
b3V0VW5pdCB4ID0gaW50ZXJzZWN0aW9uUmVjdC54KCkgKyBpbnRlcnNlY3Rpb25SZWN0LndpZHRo
KCkgLyAyOwogICAgICAgICBMYXlvdXRVbml0IHkgPSBpbnRlcnNlY3Rpb25SZWN0LnkoKSArIGlu
dGVyc2VjdGlvblJlY3QuaGVpZ2h0KCkgLyAyOwotICAgICAgICBIaXRUZXN0UmVzdWx0IHJlc3Vs
dCA9IGNhbmRpZGF0ZS52aXNpYmxlTm9kZS0+ZG9jdW1lbnQoKS0+cGFnZSgpLT5tYWluRnJhbWUo
KS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KEludFBvaW50KHgsIHkpLCBm
YWxzZSwgdHJ1ZSk7CisgICAgICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gY2FuZGlkYXRlLnZp
c2libGVOb2RlLT5kb2N1bWVudCgpLT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmVudEhhbmRsZXIo
KS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoSW50UG9pbnQoeCwgeSksIEhpdFRlc3RSZXF1ZXN0OjpE
ZWZhdWx0KGZhbHNlLCB0cnVlKSk7CiAgICAgICAgIGlmIChjYW5kaWRhdGUudmlzaWJsZU5vZGUt
PmNvbnRhaW5zKHJlc3VsdC5pbm5lck5vZGUoKSkpIHsKICAgICAgICAgICAgIGNsb3Nlc3QgPSBj
YW5kaWRhdGU7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IGIz
NjQ4ZjUyNDcwMTlkYzI5ZDNkZjU1MTFkOTI4NmJiODhhMTExYWUuLjg0NzIzZjNlOGNlOWExYmQw
ZjA4NTAyMzRjMjkzMDU2MzhhMDZlOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC03MjQsNyAr
NzI0LDcgQEAgU3RyaW5nIEZyYW1lOjpkaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKGNv
bnN0IFN0cmluZyYgc3RyKSBjb25zdAogCiBWaXNpYmxlUG9zaXRpb24gRnJhbWU6OnZpc2libGVQ
b3NpdGlvbkZvclBvaW50KGNvbnN0IEludFBvaW50JiBmcmFtZVBvaW50KQogewotICAgIEhpdFRl
c3RSZXN1bHQgcmVzdWx0ID0gZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGZy
YW1lUG9pbnQsIHRydWUpOworICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZXZlbnRIYW5kbGVy
KCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGZyYW1lUG9pbnQsIEhpdFRlc3RSZXF1ZXN0OjpEZWZh
dWx0KHRydWUpKTsKICAgICBOb2RlKiBub2RlID0gcmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgp
OwogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwpAQCAt
NzQ2LDcgKzc0Niw3IEBAIERvY3VtZW50KiBGcmFtZTo6ZG9jdW1lbnRBdFBvaW50KGNvbnN0IElu
dFBvaW50JiBwb2ludCkKICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IEhpdFRlc3RSZXN1bHQo
cHQpOwogCiAgICAgaWYgKGNvbnRlbnRSZW5kZXJlcigpKQotICAgICAgICByZXN1bHQgPSBldmVu
dEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQocHQsIGZhbHNlKTsKKyAgICAgICAgcmVz
dWx0ID0gZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KHB0KTsKICAgICByZXR1
cm4gcmVzdWx0LmlubmVyTm9kZSgpID8gcmVzdWx0LmlubmVyTm9kZSgpLT5kb2N1bWVudCgpIDog
MDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Ub3VjaERpc2FtYmlndWF0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVG91Y2hEaXNhbWJpZ3VhdGlvbi5jcHAKaW5k
ZXggNWVmZTNkYjQ5MTQwNWU3MzYxZDc2Yjc3ZWZiMTFlYTczNDA2ZjE3ZS4uNzMyZGRhNGI0MjE5
MjA2YzJkMzc5MTYxNGJjM2I1NDhiMzNkYWVkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9Ub3VjaERpc2FtYmlndWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Rv
dWNoRGlzYW1iaWd1YXRpb24uY3BwCkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgZmluZEdvb2RUb3Vj
aFRhcmdldHMoY29uc3QgSW50UmVjdCYgdG91Y2hCb3gsIEZyYW1lKiBtYWluRnJhbWUsIGZsb2F0
IHBhZ2VTCiAgICAgSW50UG9pbnQgdG91Y2hQb2ludCA9IHRvdWNoQm94LmNlbnRlcigpOwogICAg
IEludFBvaW50IGNvbnRlbnRzUG9pbnQgPSBtYWluRnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250
ZW50cyh0b3VjaFBvaW50KTsKIAotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gbWFpbkZyYW1l
LT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoY29udGVudHNQb2ludCwgZmFs
c2UsIGZhbHNlLCBEb250SGl0VGVzdFNjcm9sbGJhcnMsIEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUg
fCBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHksIEludFNpemUocGFkZGluZywgcGFkZGluZykpOwor
ICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gbWFpbkZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0
VGVzdFJlc3VsdEF0UG9pbnQoY29udGVudHNQb2ludCwgSGl0VGVzdFJlcXVlc3Q6OkRlZmF1bHQo
ZmFsc2UpLCBJbnRTaXplKHBhZGRpbmcsIHBhZGRpbmcpKTsKICAgICBjb25zdCBMaXN0SGFzaFNl
dDxSZWZQdHI8Tm9kZT4gPiYgaGl0UmVzdWx0cyA9IHJlc3VsdC5yZWN0QmFzZWRUZXN0UmVzdWx0
KCk7CiAKICAgICBIYXNoTWFwPE5vZGUqLCBUb3VjaFRhcmdldERhdGE+IHRvdWNoVGFyZ2V0czsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVxdWVzdC5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXF1ZXN0LmgKaW5kZXggM2ZhZjg4YTlm
OTEzNzYxZWMwMTNkNmU3ZDJjZGRhZjMyZjg0ZDc5Zi4uMjFjOTYxZDFkYjQ5Y2JmOTE5NzIxZDQw
ZTkyZWNjYTNiY2RkM2YxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hp
dFRlc3RSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXF1
ZXN0LmgKQEAgLTQ4LDYgKzQ4LDE2IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCisgICAgc3Rh
dGljIEhpdFRlc3RSZXF1ZXN0VHlwZSBEZWZhdWx0KGJvb2wgYWxsb3dTaGFkb3dDb250ZW50LCBi
b29sIGlnbm9yZUNsaXBwaW5nID0gZmFsc2UpCisgICAgeworICAgICAgICBIaXRUZXN0UmVxdWVz
dFR5cGUgdHlwZShSZWFkT25seSB8IEFjdGl2ZSk7CisgICAgICAgIGlmIChhbGxvd1NoYWRvd0Nv
bnRlbnQpCisgICAgICAgICAgICB0eXBlIHw9IEFsbG93U2hhZG93Q29udGVudDsKKyAgICAgICAg
aWYgKGlnbm9yZUNsaXBwaW5nKQorICAgICAgICAgICAgdHlwZSB8PSBJZ25vcmVDbGlwcGluZzsK
KyAgICAgICAgcmV0dXJuIHR5cGU7CisgICAgfQorCiAgICAgYm9vbCByZWFkT25seSgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVxdWVzdFR5cGUgJiBSZWFkT25seTsgfQogICAgIGJvb2wgYWN0aXZlKCkg
Y29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0VHlwZSAmIEFjdGl2ZTsgfQogICAgIGJvb2wgbW92ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdFR5cGUgJiBNb3ZlOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAKaW5kZXggZDAzZjAzYzBiYzU2MTllMjQzMmU3ZDhkNjY0OGUzOGUxMGU3
ZTVlYS4uM2NkZjdiYjYyNDU3MmZjMjgxMWEwYmVmMWUwYjVjNTBlZTIxMDkxZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtOTcyLDggKzk3MiwxMSBAQCBQYXNzUmVmUHRy
PE5vZGVMaXN0PiBJbnRlcm5hbHM6Om5vZGVzRnJvbVJlY3QoRG9jdW1lbnQqIGRvY3VtZW50LCBp
bnQgeCwgaW50IHksCiAgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9CisgICAgSGl0VGVzdFJlcXVlc3Q6OkhpdFRlc3RSZXF1ZXN0VHlwZSBo
aXRUeXBlID0gSGl0VGVzdFJlcXVlc3Q6OkRlZmF1bHQoYWxsb3dTaGFkb3dDb250ZW50LCBpZ25v
cmVDbGlwcGluZyk7CisgICAgaWYgKGFsbG93Q2hpbGRGcmFtZUNvbnRlbnQpCisgICAgICAgIGhp
dFR5cGUgfD0gSGl0VGVzdFJlcXVlc3Q6OkFsbG93Q2hpbGRGcmFtZUNvbnRlbnQ7CiAKLSAgICBy
ZXR1cm4gZG9jdW1lbnQtPm5vZGVzRnJvbVJlY3QoeCwgeSwgdG9wUGFkZGluZywgcmlnaHRQYWRk
aW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0UGFkZGluZywgaWdub3JlQ2xpcHBpbmcsIGFsbG93U2hh
ZG93Q29udGVudCwgYWxsb3dDaGlsZEZyYW1lQ29udGVudCk7CisgICAgcmV0dXJuIGRvY3VtZW50
LT5ub2Rlc0Zyb21SZWN0KHgsIHksIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFk
ZGluZywgbGVmdFBhZGRpbmcsIGhpdFR5cGUpOwogfQogCiB2b2lkIEludGVybmFsczo6ZW1pdElu
c3BlY3RvckRpZEJlZ2luRnJhbWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L0FwaS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFn
ZS5jcHAKaW5kZXggZDVkN2QyNmVjMmI3ZGY5YjEzNjRjYTczYzBhOGJiMmYzOTZjMjQzZS4uMjkz
ZmRlM2JhOTgwMTdhYTM5ZGU4MWI4MDM0ZWFlZTZmZmQzYzEwMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCkBAIC0yNzQ2LDcgKzI3NDYsNyBAQCBQYXNzUmVmUHRy
PE5vZGU+IFdlYlBhZ2VQcml2YXRlOjpjb250ZXh0Tm9kZShUYXJnZXREZXRlY3Rpb25TdHJhdGVn
eSBzdHJhdGVneSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC5ub2RlKEZhdEZpbmdlcnNSZXN1bHQ6
OlNoYWRvd0NvbnRlbnROb3RBbGxvd2VkKTsKICAgICB9CiAKLSAgICBIaXRUZXN0UmVzdWx0IHJl
c3VsdCA9IGV2ZW50SGFuZGxlci0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoY29udGVudFBvcywgZmFs
c2UgLyphbGxvd1NoYWRvd0NvbnRlbnQqLyk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBl
dmVudEhhbmRsZXItPmhpdFRlc3RSZXN1bHRBdFBvaW50KGNvbnRlbnRQb3MpOwogICAgIHJldHVy
biByZXN1bHQuaW5uZXJOb2RlKCk7CiB9CiAKQEAgLTI4MTgsNyArMjgxOCw3IEBAIE5vZGUqIFdl
YlBhZ2VQcml2YXRlOjpub2RlRm9yWm9vbVVuZGVyUG9pbnQoY29uc3QgSW50UG9pbnQmIHBvaW50
KQogICAgIGlmICghbV9tYWluRnJhbWUpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgSGl0VGVz
dFJlc3VsdCByZXN1bHQgPSBtX21haW5GcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1
bHRBdFBvaW50KG1hcEZyb21UcmFuc2Zvcm1lZChwb2ludCksIGZhbHNlKTsKKyAgICBIaXRUZXN0
UmVzdWx0IHJlc3VsdCA9IG1fbWFpbkZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3Vs
dEF0UG9pbnQobWFwRnJvbVRyYW5zZm9ybWVkKHBvaW50KSk7CiAKICAgICBOb2RlKiBub2RlID0g
cmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpOwogCkBAIC00MDI3LDcgKzQwMjcsNyBAQCBib29s
IFdlYlBhZ2VQcml2YXRlOjpoYW5kbGVNb3VzZUV2ZW50KFBsYXRmb3JtTW91c2VFdmVudCYgbW91
c2VFdmVudCkKICAgICB9CiAKICAgICBpZiAoIW5vZGUpIHsKLSAgICAgICAgSGl0VGVzdFJlc3Vs
dCByZXN1bHQgPSBldmVudEhhbmRsZXItPmhpdFRlc3RSZXN1bHRBdFBvaW50KG1hcEZyb21WaWV3
cG9ydFRvQ29udGVudHMobW91c2VFdmVudC5wb3NpdGlvbigpKSwgZmFsc2UgLyphbGxvd1NoYWRv
d0NvbnRlbnQqLyk7CisgICAgICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZXZlbnRIYW5kbGVy
LT5oaXRUZXN0UmVzdWx0QXRQb2ludChtYXBGcm9tVmlld3BvcnRUb0NvbnRlbnRzKG1vdXNlRXZl
bnQucG9zaXRpb24oKSkpOwogICAgICAgICBub2RlID0gcmVzdWx0LmlubmVyTm9kZSgpOwogICAg
IH0KIApAQCAtNTE5MCw3ICs1MTkwLDcgQEAgV2ViRE9NRG9jdW1lbnQgV2ViUGFnZTo6ZG9jdW1l
bnQoKSBjb25zdAogCiBXZWJET01Ob2RlIFdlYlBhZ2U6Om5vZGVBdFBvaW50KGludCB4LCBpbnQg
eSkKIHsKLSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGQtPm1fbWFpbkZyYW1lLT5ldmVudEhh
bmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoZC0+bWFwRnJvbVRyYW5zZm9ybWVkKEludFBv
aW50KHgsIHkpKSwgZmFsc2UpOworICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZC0+bV9tYWlu
RnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChkLT5tYXBGcm9tVHJh
bnNmb3JtZWQoSW50UG9pbnQoeCwgeSkpKTsKICAgICBOb2RlKiBub2RlID0gcmVzdWx0LmlubmVy
Tm9uU2hhcmVkTm9kZSgpOwogICAgIHJldHVybiBXZWJET01Ob2RlKG5vZGUpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRmF0RmluZ2Vycy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9GYXRGaW5nZXJzLmNw
cAppbmRleCAzODFlN2ExZWNmMTMwNDU1Y2YzNjNiNTdhMzAxMjlmZWNlMGQ3YTY4Li5mZjNjODBk
ZWFjYWE5M2E3Mjk4MzYwNjdkY2Q0NzE4OTI5NzRkYzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9GYXRGaW5nZXJzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9GYXRGaW5nZXJzLmNwcApAQCAtNDkxLDEx
ICs0OTEsMTAgQEAgdm9pZCBGYXRGaW5nZXJzOjpnZXROb2Rlc0Zyb21SZWN0KERvY3VtZW50KiBk
b2N1bWVudCwgY29uc3QgSW50UG9pbnQmIGNvbnRlbnRQb3MKICAgICB1bnNpZ25lZCB0b3BQYWRk
aW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nOwogICAgIGdldFBh
ZGRpbmdzKHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRp
bmcpOwogCi0gICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9u
bHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6Oklnbm9yZUNsaXBw
aW5nKTsKICAgICAvLyBUaGUgdXNlciBmdW5jdGlvbnMgY2hlY2tGb3JUZXh0KCkgYW5kIGZpbmRJ
bnRlcnNlY3RpbmdSZWdpb25zKCkgdXNlcyB0aGUgTm9kZS53aG9sZVRleHQoKSB0byBjaGVja0Zp
bmdlckludGVyc2VjdGlvbigpCiAgICAgLy8gbm90IHRoZSB0ZXh0IGluIGl0cyBzaGFkb3cgdHJl
ZS4KLSAgICBTaGFkb3dDb250ZW50RmlsdGVyUG9saWN5IGFsbG93U2hhZG93ID0gbV90YXJnZXRU
eXBlID09IFRleHQgPyBEb05vdEFsbG93U2hhZG93Q29udGVudCA6IEFsbG93U2hhZG93Q29udGVu
dDsKLSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdChjb250ZW50UG9zLCB0b3BQYWRkaW5nLCByaWdo
dFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nLCBhbGxvd1NoYWRvdyk7CisgICAg
SGl0VGVzdFJlcXVlc3QgcmVxdWVzdCA9IEhpdFRlc3RSZXF1ZXN0OjpEZWZhdWx0KG1fdGFyZ2V0
VHlwZSAhPSBUZXh0LCB0cnVlKTsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdChjb250ZW50UG9z
LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nKTsK
IAogICAgIGRvY3VtZW50LT5yZW5kZXJWaWV3KCktPmxheWVyKCktPmhpdFRlc3QocmVxdWVzdCwg
cmVzdWx0KTsKICAgICBpbnRlcnNlY3RlZE5vZGVzID0gcmVzdWx0LnJlY3RCYXNlZFRlc3RSZXN1
bHQoKTsKQEAgLTUxMCw3ICs1MDksNyBAQCB2b2lkIEZhdEZpbmdlcnM6OmdldFJlbGV2YW50SW5m
b0Zyb21Qb2ludChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEludFBvaW50JiBjbwogICAgIGlm
ICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5yZW5kZXJlcigpIHx8ICFkb2N1bWVudC0+ZnJhbWUo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgID0gZG9jdW1l
bnQtPmZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChjb250ZW50
UG9zLCB0cnVlIC8qYWxsb3dTaGFkb3dDb250ZW50Ki8pOworICAgIEhpdFRlc3RSZXN1bHQgcmVz
dWx0ICA9IGRvY3VtZW50LT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0
UG9pbnQoY29udGVudFBvcywgSGl0VGVzdFJlcXVlc3Q6OkRlZmF1bHQodHJ1ZSAvKmFsbG93U2hh
ZG93Q29udGVudCovKSk7CiAgICAgTm9kZSogbm9kZSA9IHJlc3VsdC5pbm5lck5vZGUoKTsKICAg
ICB3aGlsZSAobm9kZSAmJiAhbm9kZS0+aXNFbGVtZW50Tm9kZSgpKQogICAgICAgICBub2RlID0g
bm9kZS0+cGFyZW50Tm9kZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L1dlYktpdFN1cHBvcnQvU2VsZWN0aW9uSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvV2ViS2l0U3VwcG9ydC9TZWxlY3Rpb25IYW5kbGVyLmNwcAppbmRleCAzYjA0MjQ3YmVj
ZmRiYjdjMjZjNGU5YzA0NjE1Y2RmMWMyM2ZmZGViLi5hN2EzOWJhYTlmNDM1ZDI2Y2YwNWViMGJh
Mjg4MGFlZTE0ZTgzNWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2Vi
S2l0U3VwcG9ydC9TZWxlY3Rpb25IYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvV2ViS2l0U3VwcG9ydC9TZWxlY3Rpb25IYW5kbGVyLmNwcApAQCAtMTU5LDcgKzE1OSw3
IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9yUG9pbnRJZ25vcmlu
Z0NsaXBwaW5nKGNvbnN0IEZyYW1lJiBmcmFtCiAgICAgLy8gb3V0c2lkZSB0aGUgdmlzaWJsZSBy
ZWN0LiBUbyB3b3JrIGFyb3VuZCB0aGUgYnVnLCB0aGlzIGlzIGEgY29weSBvZgogICAgIC8vIHZp
c2libGVQb3NpdGlvbkF0UG9pbnQgd2hpY2ggd2hpY2ggcGFzc2VzIGlnbm9yZUNsaXBwaW5nPXRy
dWUuCiAgICAgLy8gU2VlIFJJTSBCdWcgIzQzMTUuCi0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQg
PSBmcmFtZS5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoZnJhbWVQb2ludCwg
dHJ1ZSAvKiBhbGxvd1NoYWRvd0NvbnRlbnQgKi8sIHRydWUgLyogaWdub3JlQ2xpcHBpbmcgKi8p
OworICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZnJhbWUuZXZlbnRIYW5kbGVyKCktPmhpdFRl
c3RSZXN1bHRBdFBvaW50KGZyYW1lUG9pbnQsIEhpdFRlc3RSZXF1ZXN0OjpEZWZhdWx0KHRydWUg
LyogYWxsb3dTaGFkb3dDb250ZW50ICovLCB0cnVlIC8qIGlnbm9yZUNsaXBwaW5nICovKSk7CiAK
ICAgICBOb2RlKiBub2RlID0gcmVzdWx0LmlubmVyTm9kZSgpOwogICAgIGlmICghbm9kZSB8fCBu
b2RlLT5kb2N1bWVudCgpICE9IGZyYW1lLmRvY3VtZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9Db250ZXh0TWVudUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvQ29udGV4dE1lbnVDbGllbnRJbXBsLmNwcAppbmRleCBhZGFhNDEz
OTJkMmExN2I2NDQ5M2IyNGVjZWI4Yzc5ODNlM2VkNGIxLi4zYzMxMmIxMTBjYzZiM2YyYTczYWJk
MzNkNWM3MjQ5ZjM5NTZkMzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9Db250ZXh0TWVudUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0NvbnRleHRNZW51Q2xpZW50SW1wbC5jcHAKQEAgLTEyMiw3ICsxMjIsNyBAQCBzdGF0aWMg
U3RyaW5nIHNlbGVjdE1pc3NwZWxsZWRXb3JkKGNvbnN0IENvbnRleHRNZW51KiBkZWZhdWx0TWVu
dSwgRnJhbWUqIHNlbGVjdAogCiAgICAgLy8gU2VsZWN0aW9uIGlzIGVtcHR5LCBzbyBjaGFuZ2Ug
dGhlIHNlbGVjdGlvbiB0byB0aGUgd29yZCB1bmRlciB0aGUgY3Vyc29yLgogICAgIEhpdFRlc3RS
ZXN1bHQgaGl0VGVzdFJlc3VsdCA9IHNlbGVjdGVkRnJhbWUtPmV2ZW50SGFuZGxlcigpLT4KLSAg
ICAgICAgaGl0VGVzdFJlc3VsdEF0UG9pbnQoc2VsZWN0ZWRGcmFtZS0+cGFnZSgpLT5jb250ZXh0
TWVudUNvbnRyb2xsZXIoKS0+aGl0VGVzdFJlc3VsdCgpLnBvaW50KCksIHRydWUpOworICAgICAg
ICBoaXRUZXN0UmVzdWx0QXRQb2ludChzZWxlY3RlZEZyYW1lLT5wYWdlKCktPmNvbnRleHRNZW51
Q29udHJvbGxlcigpLT5oaXRUZXN0UmVzdWx0KCkucG9pbnQoKSwgSGl0VGVzdFJlcXVlc3Q6OkRl
ZmF1bHQodHJ1ZSkpOwogICAgIE5vZGUqIGlubmVyTm9kZSA9IGhpdFRlc3RSZXN1bHQuaW5uZXJO
b2RlKCk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvcyhpbm5lck5vZGUtPnJlbmRlcmVyKCktPnBv
c2l0aW9uRm9yUG9pbnQoCiAgICAgICAgIGhpdFRlc3RSZXN1bHQubG9jYWxQb2ludCgpKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudElt
cGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBs
LmNwcAppbmRleCA1ZGQwMmI1NjNkMDkxMzJkY2NhMTJlYmMxM2QzN2FkNjVkNjAwOWEyLi5jOTli
ZDdjNTcyNTNiMmI2ZWFkZTAwYTVjNWFlMjZlZDZhNjM2NzhkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKQEAgLTk5Nyw4
ICs5OTcsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hEZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uKAogICAgICAgICAgICAgICAgIGlmIChldmVudC0+aXNNb3Vz
ZUV2ZW50KCkpIHsKICAgICAgICAgICAgICAgICAgICAgY29uc3QgTW91c2VFdmVudCogbW91c2VF
dmVudCA9CiAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBNb3VzZUV2
ZW50Kj4oZXZlbnQpOwotICAgICAgICAgICAgICAgICAgICBub2RlID0gbV93ZWJGcmFtZS0+ZnJh
bWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KAotICAgICAgICAgICAg
ICAgICAgICAgICAgbW91c2VFdmVudC0+YWJzb2x1dGVMb2NhdGlvbigpLCBmYWxzZSkuaW5uZXJO
b25TaGFyZWROb2RlKCk7CisgICAgICAgICAgICAgICAgICAgIG5vZGUgPSBtX3dlYkZyYW1lLT5m
cmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQobW91c2VFdmVudC0+
YWJzb2x1dGVMb2NhdGlvbigpKS5pbm5lck5vblNoYXJlZE5vZGUoKTsKICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKaW5kZXggZWIzYWVmNzc1Y2FlNTdk
NDY0YmE0MzNhZmMwZjQ3NzM0ZTZjOWZlMy4uYTZkODg1NjFhMzQzYTdiY2Q2YmVmMzA3ZTljOTYy
M2YwNjA3YTQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJh
bWVJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwu
Y3BwCkBAIC0xMjYyLDcgKzEyNjIsNyBAQCBzaXplX3QgV2ViRnJhbWVJbXBsOjpjaGFyYWN0ZXJJ
bmRleEZvclBvaW50KGNvbnN0IFdlYlBvaW50JiB3ZWJQb2ludCkgY29uc3QKICAgICAgICAgcmV0
dXJuIG5vdEZvdW5kOwogCiAgICAgSW50UG9pbnQgcG9pbnQgPSBmcmFtZSgpLT52aWV3KCktPndp
bmRvd1RvQ29udGVudHMod2ViUG9pbnQpOwotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZnJh
bWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KHBvaW50LCBmYWxzZSk7
CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBmcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGl0
VGVzdFJlc3VsdEF0UG9pbnQocG9pbnQpOwogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBmcmFt
ZSgpLT5yYW5nZUZvclBvaW50KHJlc3VsdC5yb3VuZGVkUG9pbnQoKSk7CiAgICAgaWYgKCFyYW5n
ZSkKICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcAppbmRleCBmZTk5YWI4NDQ1YjEy
NzJiMjNjNjdmZjQ3NmE5NjFiNzIxZGM2NzY3Li45M2MwMmM5Yjk4ZDFlYWIxNzk5NDZmYjVhOGIx
MDBjOTU3ZGE5Yjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQ
bHVnaW5Db250YWluZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcApAQCAtNTEzLDcgKzUxMyw3IEBAIGJvb2wgV2ViUGx1
Z2luQ29udGFpbmVySW1wbDo6aXNSZWN0VG9wbW9zdChjb25zdCBXZWJSZWN0JiByZWN0KQogICAg
IExheW91dFBvaW50IGNlbnRlciA9IGRvY3VtZW50UmVjdC5jZW50ZXIoKTsKICAgICAvLyBNYWtl
IHRoZSByZWN0IHdlJ3JlIGNoZWNraW5nICh0aGUgcG9pbnQgc3Vycm91bmRlZCBieSBwYWRkaW5n
IHJlY3RzKSBjb250YWluZWQgaW5zaWRlIHRoZSByZXF1ZXN0ZWQgcmVjdC4gKE5vdGUgdGhhdCAt
MS8yIGlzIDAuKQogICAgIExheW91dFNpemUgcGFkZGluZygoZG9jdW1lbnRSZWN0LndpZHRoKCkg
LSAxKSAvIDIsIChkb2N1bWVudFJlY3QuaGVpZ2h0KCkgLSAxKSAvIDIpOwotICAgIEhpdFRlc3RS
ZXN1bHQgcmVzdWx0ID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2lu
dChjZW50ZXIsIGZhbHNlLCBmYWxzZSwgRG9udEhpdFRlc3RTY3JvbGxiYXJzLCBIaXRUZXN0UmVx
dWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlLCBwYWRkaW5nKTsKKyAgICBI
aXRUZXN0UmVzdWx0IHJlc3VsdCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3Vs
dEF0UG9pbnQoY2VudGVyLCBIaXRUZXN0UmVxdWVzdDo6RGVmYXVsdChmYWxzZSksIHBhZGRpbmcp
OwogICAgIGNvbnN0IEhpdFRlc3RSZXN1bHQ6Ok5vZGVTZXQmIG5vZGVzID0gcmVzdWx0LnJlY3RC
YXNlZFRlc3RSZXN1bHQoKTsKICAgICBpZiAobm9kZXMuc2l6ZSgpICE9IDEpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApp
bmRleCAyYzQ4N2I4MDVkODY4MzcxZGViYjkxMjU4YWRiNzRjMjUyNjc5NDY3Li41ZGFhYjUwZjc2
ZGJkYzcwYjA3OTY1ODQ1ZjRlMWU1MTkwODdkNDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC02MzgsNyArNjM4LDcgQEAgdm9pZCBXZWJWaWV3SW1w
bDo6aGFuZGxlTW91c2VVcChGcmFtZSYgbWFpbkZyYW1lLCBjb25zdCBXZWJNb3VzZUV2ZW50JiBl
dmVudCkKICAgICAgICAgRnJhbWVWaWV3KiB2aWV3ID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+dmll
dygpOwogICAgICAgICBJbnRQb2ludCBjbGlja1BvaW50KG1fbGFzdE1vdXNlRG93blBvaW50Lngs
IG1fbGFzdE1vdXNlRG93blBvaW50LnkpOwogICAgICAgICBJbnRQb2ludCBjb250ZW50UG9pbnQg
PSB2aWV3LT53aW5kb3dUb0NvbnRlbnRzKGNsaWNrUG9pbnQpOwotICAgICAgICBIaXRUZXN0UmVz
dWx0IGhpdFRlc3RSZXN1bHQgPSBmb2N1c2VkLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3Vs
dEF0UG9pbnQoY29udGVudFBvaW50LCBmYWxzZSwgZmFsc2UsIFNob3VsZEhpdFRlc3RTY3JvbGxi
YXJzKTsKKyAgICAgICAgSGl0VGVzdFJlc3VsdCBoaXRUZXN0UmVzdWx0ID0gZm9jdXNlZC0+ZXZl
bnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGNvbnRlbnRQb2ludCwgSGl0VGVzdFJl
cXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0
OjpUZXN0Q2hpbGRGcmFtZVNjcm9sbEJhcnMpOwogICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRv
IHNlbmQgYSBwYXN0ZSB3aGVuIG1pZGRsZSBjbGlja2luZyBhIHNjcm9sbCBiYXIgb3IgYQogICAg
ICAgICAvLyBsaW5rICh3aGljaCB3aWxsIG5hdmlnYXRlIGxhdGVyIGluIHRoZSBjb2RlKS4gIFRo
ZSBtYWluIHNjcm9sbGJhcnMKICAgICAgICAgLy8gaGF2ZSB0byBiZSBoYW5kbGVkIHNlcGFyYXRl
bHkuCkBAIC0xMDA1LDkgKzEwMDUsNyBAQCBXZWJSZWN0IFdlYlZpZXdJbXBsOjpjb21wdXRlQmxv
Y2tCb3VuZHMoY29uc3QgV2ViUmVjdCYgcmVjdCwgQXV0b1pvb21UeXBlIHpvb21UeQogCiAgICAg
Ly8gVXNlIHRoZSByZWN0LWJhc2VkIGhpdCB0ZXN0IHRvIGZpbmQgdGhlIG5vZGUuCiAgICAgSW50
UG9pbnQgcG9pbnQgPSBtYWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygpLT53aW5kb3dUb0NvbnRl
bnRzKEludFBvaW50KHJlY3QueCwgcmVjdC55KSk7Ci0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQg
PSBtYWluRnJhbWVJbXBsKCktPmZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0
QXRQb2ludChwb2ludCwKLSAgICAgICAgICAgIGZhbHNlLCB6b29tVHlwZSA9PSBGaW5kSW5QYWdl
LCBEb250SGl0VGVzdFNjcm9sbGJhcnMsIEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0
UmVxdWVzdDo6UmVhZE9ubHksCi0gICAgICAgICAgICBJbnRTaXplKHJlY3Qud2lkdGgsIHJlY3Qu
aGVpZ2h0KSk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBtYWluRnJhbWVJbXBsKCktPmZy
YW1lKCktPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChwb2ludCwgSGl0VGVz
dFJlcXVlc3Q6OkRlZmF1bHQoZmFsc2UsIHpvb21UeXBlID09IEZpbmRJblBhZ2UpLCBJbnRTaXpl
KHJlY3Qud2lkdGgsIHJlY3QuaGVpZ2h0KSk7CiAKICAgICBOb2RlKiBub2RlID0gcmVzdWx0Lmlu
bmVyTm9uU2hhcmVkTm9kZSgpOwogICAgIGlmICghbm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZnJh
bWUuY3BwCmluZGV4IGFkYmZhMWNjZGU0ZmE3NDU1ZTBiNmJjNzViYjEzN2E1ZmY0YWNhYjMuLmZj
ZWRiNmU3ZmI3ZDU1ZTIyMWJkYTJhYTQ4NmRiZjBiNThjNDg3MGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9BcGkv
cXdlYmZyYW1lLmNwcApAQCAtMTQwNiw3ICsxNDA2LDcgQEAgUVdlYkhpdFRlc3RSZXN1bHQgUVdl
YkZyYW1lOjpoaXRUZXN0Q29udGVudChjb25zdCBRUG9pbnQgJnBvcykgY29uc3QKICAgICBpZiAo
IWQtPmZyYW1lLT52aWV3KCkgfHwgIWQtPmZyYW1lLT5jb250ZW50UmVuZGVyZXIoKSkKICAgICAg
ICAgcmV0dXJuIFFXZWJIaXRUZXN0UmVzdWx0KCk7CiAKLSAgICBIaXRUZXN0UmVzdWx0IHJlc3Vs
dCA9IGQtPmZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoZC0+ZnJh
bWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhwb3MpLCAvKmFsbG93U2hhZG93Q29udGVudCov
IGZhbHNlLCAvKmlnbm9yZUNsaXBwaW5nKi8gdHJ1ZSk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1
bHQgPSBkLT5mcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGQtPmZy
YW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMocG9zKSwgSGl0VGVzdFJlcXVlc3Q6OkRlZmF1
bHQoLyphbGxvd1NoYWRvd0NvbnRlbnQqLyBmYWxzZSwgLyppZ25vcmVDbGlwcGluZyovIHRydWUp
KTsKIAogICAgIGlmIChyZXN1bHQuc2Nyb2xsYmFyKCkpCiAgICAgICAgIHJldHVybiBRV2ViSGl0
VGVzdFJlc3VsdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCmluZGV4IDA4ZTg2MTgzYTZi
NmVhNDQwODdlZjI0NzFmZDkwMDJkNGI2MDQwZjQuLjI5NjI4ZjU5ODdjZTllMTgwNzM5MmNkZjg3
YzVmNjY3NmRmNzljOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKQEAgLTgwOCw3ICs4
MDgsNyBAQCB2b2lkIFFXZWJQYWdlUHJpdmF0ZTo6aGFuZGxlU29mdHdhcmVJbnB1dFBhbmVsKFF0
OjpNb3VzZUJ1dHRvbiBidXR0b24sIGNvbnN0IFFQbwogICAgICAgICBRU3R5bGU6OlJlcXVlc3RT
b2Z0d2FyZUlucHV0UGFuZWwgYmVoYXZpb3IgPSBRU3R5bGU6OlJlcXVlc3RTb2Z0d2FyZUlucHV0
UGFuZWwoCiAgICAgICAgICAgICBjbGllbnQtPm93bmVyV2lkZ2V0KCktPnN0eWxlKCktPnN0eWxl
SGludChRU3R5bGU6OlNIX1JlcXVlc3RTb2Z0d2FyZUlucHV0UGFuZWwpKTsKICAgICAgICAgaWYg
KCFjbGlja0NhdXNlZEZvY3VzIHx8IGJlaGF2aW9yID09IFFTdHlsZTo6UlNJUF9Pbk1vdXNlQ2xp
Y2spIHsKLSAgICAgICAgICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZnJhbWUtPmV2ZW50SGFu
ZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChmcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRl
bnRzKHBvcyksIGZhbHNlKTsKKyAgICAgICAgICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZnJh
bWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChmcmFtZS0+dmlldygpLT53
aW5kb3dUb0NvbnRlbnRzKHBvcykpOwogICAgICAgICAgICAgaWYgKHJlc3VsdC5pc0NvbnRlbnRF
ZGl0YWJsZSgpKSB7CiAgICAgICAgICAgICAgICAgUUV2ZW50IGV2ZW50KFFFdmVudDo6UmVxdWVz
dFNvZnR3YXJlSW5wdXRQYW5lbCk7CiAgICAgICAgICAgICAgICAgUUFwcGxpY2F0aW9uOjpzZW5k
RXZlbnQoY2xpZW50LT5vd25lcldpZGdldCgpLCAmZXZlbnQpOwpAQCAtMTU2NSw3ICsxNTY1LDcg
QEAgSW50UG9pbnQgUVdlYlBhZ2VQcml2YXRlOjpUb3VjaEFkanVzdGVyOjpmaW5kQ2FuZGlkYXRl
UG9pbnRGb3JUb3VjaChjb25zdCBJbnRQb2kKICAgICBpbnQgeCA9IHRvdWNoUG9pbnQueCgpOwog
ICAgIGludCB5ID0gdG91Y2hQb2ludC55KCk7CiAKLSAgICBSZWZQdHI8Tm9kZUxpc3Q+IGludGVy
c2VjdGVkTm9kZXMgPSBkb2N1bWVudC0+bm9kZXNGcm9tUmVjdCh4LCB5LCBtX3RvcFBhZGRpbmcs
IG1fcmlnaHRQYWRkaW5nLCBtX2JvdHRvbVBhZGRpbmcsIG1fbGVmdFBhZGRpbmcsIGZhbHNlIC8q
aWdub3JlQ2xpcHBpbmcqLywgZmFsc2UgLyphbGxvd1NoYWRvd0NvbnRlbnQqLyk7CisgICAgUmVm
UHRyPE5vZGVMaXN0PiBpbnRlcnNlY3RlZE5vZGVzID0gZG9jdW1lbnQtPm5vZGVzRnJvbVJlY3Qo
eCwgeSwgbV90b3BQYWRkaW5nLCBtX3JpZ2h0UGFkZGluZywgbV9ib3R0b21QYWRkaW5nLCBtX2xl
ZnRQYWRkaW5nKTsKICAgICBpZiAoIWludGVyc2VjdGVkTm9kZXMpCiAgICAgICAgIHJldHVybiBJ
bnRQb2ludCgpOwogCkBAIC0zMzcxLDcgKzMzNzEsNyBAQCB2b2lkIFFXZWJQYWdlOjp1cGRhdGVQ
b3NpdGlvbkRlcGVuZGVudEFjdGlvbnMoY29uc3QgUVBvaW50ICZwb3MpCiAgICAgZC0+Y3JlYXRl
TWFpbkZyYW1lKCk7CiAgICAgV2ViQ29yZTo6RnJhbWUqIGZvY3VzZWRGcmFtZSA9IGQtPnBhZ2Ut
PmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKIAotICAgIEhpdFRlc3RS
ZXN1bHQgcmVzdWx0ID0gZm9jdXNlZEZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3Vs
dEF0UG9pbnQoZm9jdXNlZEZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMocG9zKSwgLyph
bGxvd1NoYWRvd0NvbnRlbnQqLyBmYWxzZSk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBm
b2N1c2VkRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChmb2N1c2Vk
RnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhwb3MpKTsKICAgICBpZiAocmVzdWx0LnNj
cm9sbGJhcigpKQogICAgICAgICBkLT5oaXRUZXN0UmVzdWx0ID0gUVdlYkhpdFRlc3RSZXN1bHQo
KTsKICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAppbmRleCBiY2YwNzJkNjViNTY0ZmYxZWQ1YWI2YWQ1
MTI5NDYxODQwOTFiMDYxLi43MmE1ZTAwNDk4MmRkZTc0ZTUyYTg1OWEzMGQxNDc1N2Y2MDJjZjEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRRdC5jcHAKQEAgLTEyNzIsNyArMTI3Miw3IEBAIHZvaWQgRnJhbWVMb2FkZXJD
bGllbnRRdDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKEZyYW1lUG9s
aWN5RnVuCiAgICAgICAgICAgICBpZiAoZXZlbnQtPmlzTW91c2VFdmVudCgpKSB7CiAgICAgICAg
ICAgICAgICAgY29uc3QgTW91c2VFdmVudCogbW91c2VFdmVudCA9ICBzdGF0aWNfY2FzdDxjb25z
dCBNb3VzZUV2ZW50Kj4oZXZlbnQpOwogICAgICAgICAgICAgICAgIG5vZGUgPSBRV2ViRnJhbWVQ
cml2YXRlOjpjb3JlKG1fd2ViRnJhbWUpLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0
UG9pbnQoCi0gICAgICAgICAgICAgICAgICAgIG1vdXNlRXZlbnQtPmFic29sdXRlTG9jYXRpb24o
KSwgZmFsc2UpLmlubmVyTm9uU2hhcmVkTm9kZSgpOworICAgICAgICAgICAgICAgICAgICBtb3Vz
ZUV2ZW50LT5hYnNvbHV0ZUxvY2F0aW9uKCkpLmlubmVyTm9uU2hhcmVkTm9kZSgpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcu
Y3BwCmluZGV4IGMzZmRlZDZiMTQyMDQ2MTQwNGMxZDIwYjU5ODE0NDZkMGFkNmFiNzYuLmZlMjNi
NDNlZjU2NzFlY2JlZWFmZmIwZDc0YWUxZWQwMWIxNTFiNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3Bw
CkBAIC0xMzIyLDcgKzEzMjIsNyBAQCBib29sIFdlYlZpZXc6OmhhbmRsZUNvbnRleHRNZW51RXZl
bnQoV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKICAgICBtX3BhZ2UtPmNvbnRleHRNZW51
Q29udHJvbGxlcigpLT5jbGVhckNvbnRleHRNZW51KCk7CiAKICAgICBJbnRQb2ludCBkb2N1bWVu
dFBvaW50KG1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhjb29y
ZHMpKTsKLSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2
ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChkb2N1bWVudFBvaW50LCBmYWxzZSk7
CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmVudEhh
bmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoZG9jdW1lbnRQb2ludCk7CiAgICAgRnJhbWUq
IHRhcmdldEZyYW1lID0gcmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpID8gcmVzdWx0LmlubmVy
Tm9uU2hhcmVkTm9kZSgpLT5kb2N1bWVudCgpLT5mcmFtZSgpIDogbV9wYWdlLT5mb2N1c0NvbnRy
b2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAKICAgICB0YXJnZXRGcmFtZS0+dmlldygp
LT5zZXRDdXJzb3IocG9pbnRlckN1cnNvcigpKTsKQEAgLTM1OTcsNyArMzU5Nyw3IEBAIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6ZWxlbWVudEF0UG9pbnQoCiAgICAgSW50UG9p
bnQgd2ViQ29yZVBvaW50ID0gSW50UG9pbnQocG9pbnQtPngsIHBvaW50LT55KTsKICAgICBIaXRU
ZXN0UmVzdWx0IHJlc3VsdCA9IEhpdFRlc3RSZXN1bHQod2ViQ29yZVBvaW50KTsKICAgICBpZiAo
ZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpKQotICAgICAgICByZXN1bHQgPSBmcmFtZS0+ZXZlbnRI
YW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KHdlYkNvcmVQb2ludCwgZmFsc2UpOworICAg
ICAgICByZXN1bHQgPSBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50
KHdlYkNvcmVQb2ludCk7CiAgICAgKmVsZW1lbnREaWN0aW9uYXJ5ID0gV2ViRWxlbWVudFByb3Bl
cnR5QmFnOjpjcmVhdGVJbnN0YW5jZShyZXN1bHQpOwogICAgIHJldHVybiBTX09LOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC93eC9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3d4
L1dlYkZyYW1lLmNwcAppbmRleCBhYWE3NjE0ZWZhM2I2NDEzYjcxMGUwZTg1YWFkOTUxZDZmZTky
ZjgyLi5iNTA0NmE3MzJhYjBiYjA2NzY0MWU4NjczYjE4ODY5YzM0ZDEzNjNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L3d4L1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3d4L1dl
YkZyYW1lLmNwcApAQCAtNjkwLDcgKzY5MCw3IEBAIFdlYlZpZXdET01FbGVtZW50SW5mbyBXZWJG
cmFtZTo6SGl0VGVzdChjb25zdCB3eFBvaW50JiBwb3MpIGNvbnN0CiAgICAgV2ViVmlld0RPTUVs
ZW1lbnRJbmZvIGRvbUluZm87CiAKICAgICBpZiAobV9pbXBsLT5mcmFtZS0+dmlldygpKSB7Ci0g
ICAgICAgIFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gbV9pbXBsLT5mcmFtZS0+ZXZl
bnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KG1faW1wbC0+ZnJhbWUtPnZpZXcoKS0+
d2luZG93VG9Db250ZW50cyhwb3MpLCBmYWxzZSk7CisgICAgICAgIFdlYkNvcmU6OkhpdFRlc3RS
ZXN1bHQgcmVzdWx0ID0gbV9pbXBsLT5mcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1
bHRBdFBvaW50KG1faW1wbC0+ZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhwb3MpKTsK
ICAgICAgICAgaWYgKHJlc3VsdC5pbm5lck5vZGUoKSkgewogICAgICAgICAgICAgZG9tSW5mby5T
ZXRMaW5rKHJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwoKS5zdHJpbmcoKSk7CiAgICAgICAgICAgICBk
b21JbmZvLlNldFRleHQocmVzdWx0LnRleHRDb250ZW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRp
b25BY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3BwCmluZGV4IDQyODEzNTQ4MWFmZDljNTFi
M2FiZDI3NmNlODYxNmQzOTZmOGI0M2UuLjI5YzcwZGZiNDY2YzdkMGVkNGYxNWViNGM5MjRjM2Q4
MmNmNzFiMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFj
dGlvbi5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9u
OjpJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24oV2ViRnJhbWUqIGZyYW1lLAogICAgICwg
bV9tb3VzZUJ1dHRvbihXZWJNb3VzZUV2ZW50OjpOb0J1dHRvbikKIHsKICAgICBpZiAoY29uc3Qg
TW91c2VFdmVudCogbW91c2VFdmVudCA9IG1vdXNlRXZlbnRGb3JOYXZpZ2F0aW9uQWN0aW9uKG5h
dmlnYXRpb25BY3Rpb24pKSB7Ci0gICAgICAgIG1faGl0VGVzdFJlc3VsdCA9IEluamVjdGVkQnVu
ZGxlSGl0VGVzdFJlc3VsdDo6Y3JlYXRlKGZyYW1lLT5jb3JlRnJhbWUoKS0+ZXZlbnRIYW5kbGVy
KCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KG1vdXNlRXZlbnQtPmFic29sdXRlTG9jYXRpb24oKSwg
ZmFsc2UpKTsKKyAgICAgICAgbV9oaXRUZXN0UmVzdWx0ID0gSW5qZWN0ZWRCdW5kbGVIaXRUZXN0
UmVzdWx0OjpjcmVhdGUoZnJhbWUtPmNvcmVGcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVz
dFJlc3VsdEF0UG9pbnQobW91c2VFdmVudC0+YWJzb2x1dGVMb2NhdGlvbigpKSk7CiAgICAgICAg
IG1fbW91c2VCdXR0b24gICA9IG1vdXNlQnV0dG9uRm9yTW91c2VFdmVudChtb3VzZUV2ZW50KTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAppbmRleCBmNDBhYTBhM2UzM2EwZjA0MzEyZTViZmZiYTA1MGRlMWMzOTRkMGIxLi5lZDI2ZmMz
NzhiZjYyMTQ0ZTlkZmNjZDgwMWZkMzI0NzdjOTMzYzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xMzEwLDcgKzEzMTAsNyBAQCBzdGF0
aWMgYm9vbCBpc0NvbnRleHRDbGljayhjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KQog
c3RhdGljIGJvb2wgaGFuZGxlQ29udGV4dE1lbnVFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZl
bnQmIHBsYXRmb3JtTW91c2VFdmVudCwgV2ViUGFnZSogcGFnZSkKIHsKICAgICBJbnRQb2ludCBw
b2ludCA9IHBhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLT52aWV3KCktPndpbmRvd1RvQ29u
dGVudHMocGxhdGZvcm1Nb3VzZUV2ZW50LnBvc2l0aW9uKCkpOwotICAgIEhpdFRlc3RSZXN1bHQg
cmVzdWx0ID0gcGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5o
aXRUZXN0UmVzdWx0QXRQb2ludChwb2ludCwgZmFsc2UpOworICAgIEhpdFRlc3RSZXN1bHQgcmVz
dWx0ID0gcGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oaXRU
ZXN0UmVzdWx0QXRQb2ludChwb2ludCk7CiAKICAgICBGcmFtZSogZnJhbWUgPSBwYWdlLT5jb3Jl
UGFnZSgpLT5tYWluRnJhbWUoKTsKICAgICBpZiAocmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgp
KQpAQCAtMTU1NSw3ICsxNTU1LDcgQEAgdm9pZCBXZWJQYWdlOjpoaWdobGlnaHRQb3RlbnRpYWxB
Y3RpdmF0aW9uKGNvbnN0IEludFBvaW50JiBwb2ludCwgY29uc3QgSW50U2l6ZSYKICAgICAgICAg
ICAgIHJldHVybjsKIAogI2Vsc2UKLSAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBtYWlu
ZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChtYWluZnJhbWUtPnZp
ZXcoKS0+d2luZG93VG9Db250ZW50cyhwb2ludCksIC8qYWxsb3dTaGFkb3dDb250ZW50Ki8gZmFs
c2UsIC8qaWdub3JlQ2xpcHBpbmcqLyB0cnVlKTsKKyAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1
bHQgPSBtYWluZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChtYWlu
ZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhwb2ludCksIEhpdFRlc3RSZXF1ZXN0OjpE
ZWZhdWx0KC8qYWxsb3dTaGFkb3dDb250ZW50Ki8gdHJ1ZSwgLyppZ25vcmVDbGlwcGluZyovIHRy
dWUpKTsKICAgICAgICAgYWRqdXN0ZWROb2RlID0gcmVzdWx0LmlubmVyTm9kZSgpOwogI2VuZGlm
CiAgICAgICAgIC8vIEZpbmQgdGhlIG5vZGUgdG8gaGlnaGxpZ2h0LiBUaGlzIGlzIG5vdCB0aGUg
c2FtZSBhcyB0aGUgbm9kZSByZXNwb25kaW5nIHRoZSB0YXAgZ2VzdHVyZSwgYmVjYXVzZSBtYW55
CkBAIC0yNzI0LDcgKzI3MjQsNyBAQCB2b2lkIFdlYlBhZ2U6OmZpbmRab29tYWJsZUFyZWFGb3JQ
b2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIGNvbnN0IFdlYgogewogICAgIFVO
VVNFRF9QQVJBTShhcmVhKTsKICAgICBGcmFtZSogbWFpbmZyYW1lID0gbV9tYWluRnJhbWUtPmNv
cmVGcmFtZSgpOwotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gbWFpbmZyYW1lLT5ldmVudEhh
bmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQobWFpbmZyYW1lLT52aWV3KCktPndpbmRvd1Rv
Q29udGVudHMocG9pbnQpLCAvKmFsbG93U2hhZG93Q29udGVudCovIGZhbHNlLCAvKmlnbm9yZUNs
aXBwaW5nKi8gdHJ1ZSk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBtYWluZnJhbWUtPmV2
ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChtYWluZnJhbWUtPnZpZXcoKS0+d2lu
ZG93VG9Db250ZW50cyhwb2ludCksIEhpdFRlc3RSZXF1ZXN0OjpEZWZhdWx0KC8qYWxsb3dTaGFk
b3dDb250ZW50Ki8gZmFsc2UsIC8qaWdub3JlQ2xpcHBpbmcqLyB0cnVlKSk7CiAKICAgICBOb2Rl
KiBub2RlID0gcmVzdWx0LmlubmVyTm9kZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggYzJmMDE2NTM3NTk1M2I1
M2NjM2NkMWI5ZWI0MzFkYjVlY2ViOTNhZC4uMzAxMzVhYTUwN2U3ZDY4MDUwNWZmNzZiNTc0M2Ey
MDJlZTkwZTJhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtMzc1LDcgKzM3NSw3IEBAIHZvaWQgV2ViUGFnZTo6Y2hh
cmFjdGVySW5kZXhGb3JQb2ludChJbnRQb2ludCBwb2ludCwgdWludDY0X3QmIGluZGV4KQogICAg
IGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0
ID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChwb2ludCwgZmFs
c2UpOworICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5o
aXRUZXN0UmVzdWx0QXRQb2ludChwb2ludCk7CiAgICAgZnJhbWUgPSByZXN1bHQuaW5uZXJOb25T
aGFyZWROb2RlKCkgPyByZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCktPmRvY3VtZW50KCktPmZy
YW1lKCkgOiBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsK
ICAgICAKICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gZnJhbWUtPnJhbmdlRm9yUG9pbnQocmVz
dWx0LnJvdW5kZWRQb2ludCgpKTsKQEAgLTQ2NCw3ICs0NjQsNyBAQCB2b2lkIFdlYlBhZ2U6OnBl
cmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihjb25zdCBGbG9hdFBvaW50JiBmbG9hdFBv
aW50KQogCiAgICAgLy8gRmluZCB0aGUgZnJhbWUgdGhlIHBvaW50IGlzIG92ZXIuCiAgICAgSW50
UG9pbnQgcG9pbnQgPSByb3VuZGVkSW50UG9pbnQoZmxvYXRQb2ludCk7Ci0gICAgSGl0VGVzdFJl
c3VsdCByZXN1bHQgPSBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50
KGZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMocG9pbnQpLCBmYWxzZSk7CisgICAgSGl0
VGVzdFJlc3VsdCByZXN1bHQgPSBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRB
dFBvaW50KGZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMocG9pbnQpKTsKICAgICBmcmFt
ZSA9IHJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKSA/IHJlc3VsdC5pbm5lck5vblNoYXJlZE5v
ZGUoKS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSA6IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZv
Y3VzZWRPck1haW5GcmFtZSgpOwogCiAgICAgSW50UG9pbnQgdHJhbnNsYXRlZFBvaW50ID0gZnJh
bWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhwb2ludCk7CkBAIC03MjcsNyArNzI3LDcgQEAg
dm9pZCBXZWJQYWdlOjpzaG91bGREZWxheVdpbmRvd09yZGVyaW5nRXZlbnQoY29uc3QgV2ViS2l0
OjpXZWJNb3VzZUV2ZW50JiBldmVudCwKICAgICAgICAgcmV0dXJuOwogCiAjaWYgRU5BQkxFKERS
QUdfU1VQUE9SVCkKLSAgICBIaXRUZXN0UmVzdWx0IGhpdFJlc3VsdCA9IGZyYW1lLT5ldmVudEhh
bmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250
ZW50cyhldmVudC5wb3NpdGlvbigpKSwgdHJ1ZSk7CisgICAgSGl0VGVzdFJlc3VsdCBoaXRSZXN1
bHQgPSBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGZyYW1lLT52
aWV3KCktPndpbmRvd1RvQ29udGVudHMoZXZlbnQucG9zaXRpb24oKSksIEhpdFRlc3RSZXF1ZXN0
OjpEZWZhdWx0KHRydWUpKTsKICAgICBpZiAoaGl0UmVzdWx0LmlzU2VsZWN0ZWQoKSkKICAgICAg
ICAgcmVzdWx0ID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5ldmVudE1heVN0YXJ0RHJhZyhwbGF0
Zm9ybShldmVudCkpOwogI2VuZGlmCkBAIC03NDAsNyArNzQwLDcgQEAgdm9pZCBXZWJQYWdlOjph
Y2NlcHRzRmlyc3RNb3VzZShpbnQgZXZlbnROdW1iZXIsIGNvbnN0IFdlYktpdDo6V2ViTW91c2VF
dmVudCYgZXYKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgSGl0
VGVzdFJlc3VsdCBoaXRSZXN1bHQgPSBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1
bHRBdFBvaW50KGZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMoZXZlbnQucG9zaXRpb24o
KSksIHRydWUpOworICAgIEhpdFRlc3RSZXN1bHQgaGl0UmVzdWx0ID0gZnJhbWUtPmV2ZW50SGFu
ZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChmcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRl
bnRzKGV2ZW50LnBvc2l0aW9uKCkpLCBIaXRUZXN0UmVxdWVzdDo6RGVmYXVsdCh0cnVlKSk7CiAg
ICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5zZXRBY3RpdmF0aW9uRXZlbnROdW1iZXIoZXZlbnRO
dW1iZXIpOwogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgaWYgKGhpdFJlc3VsdC5pc1Nl
bGVjdGVkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYgYi9T
b3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKaW5kZXggNjUxYzk4ZmM3MjJjOTM4OWY1YjA4
NzNmMDUzZjY5NGI3YzMwNjJiNy4uZjg2Mjc4YmM0Y2NjMWRlMjZjN2E2NDIyNjY4ZjllZmJiOGMy
YmE4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgpAQCAtMjU5LDcgKzI1OSw3IEBAIEVYUE9SVFMK
ICAgICAgICAgPz8xQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXJAV2ViQ29yZUBATUFFQFhaCiAg
ICAgICAgID9jb250ZXh0RGVzdHJveWVkQENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyQFdlYkNv
cmVAQFVBRVhYWgogICAgICAgICA/PzBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlckBXZWJDb3Jl
QEBRQUVAUEFWU2NyaXB0RXhlY3V0aW9uQ29udGV4dEAxQEBaCi0gICAgICAgID9ub2Rlc0Zyb21S
ZWN0QERvY3VtZW50QFdlYkNvcmVAQFFCRT9BVj8kUGFzc1JlZlB0ckBWTm9kZUxpc3RAV2ViQ29y
ZUBAQFdURkBASEhJSUlJX04wMEBaCisgICAgICAgID9ub2Rlc0Zyb21SZWN0QERvY3VtZW50QFdl
YkNvcmVAQFFCRT9BVj8kUGFzc1JlZlB0ckBWTm9kZUxpc3RAV2ViQ29yZUBAQFdURkBASEhJSUlJ
SUBaCiAgICAgICAgID9zZWxlY3Rpb25TdGFydEhhc01hcmtlckZvckBFZGl0b3JAV2ViQ29yZUBA
UUJFX05XNE1hcmtlclR5cGVARG9jdW1lbnRNYXJrZXJAMkBISEBaCiAgICAgICAgID93ZWJraXRX
aWxsRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudEBEb2N1bWVudEBXZWJDb3JlQEBRQUVYUEFWRWxl
bWVudEAyQEBaCiAgICAgICAgID93ZWJraXREaWRFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50QERv
Y3VtZW50QFdlYkNvcmVAQFFBRVhQQVZFbGVtZW50QDJAQFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZiBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQy
Q0ZMaXRlLmRlZgppbmRleCBkM2JlZjQ2ZGIzYTMzOWZhOTdmYjI2ODUwMjdjY2M4YmJmMzU1MDA3
Li41ZTc5ODQ1OTI4MjcwMzMzZjc4YTY1MWQxMTUwYTAzZWYzZWU3N2Y1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYKKysrIGIvU291cmNlL1dlYktpdDIv
d2luL1dlYktpdDJDRkxpdGUuZGVmCkBAIC0yNTMsNyArMjUzLDcgQEAgRVhQT1JUUwogICAgICAg
ICA/dXNlclByZWZlcnJlZExhbmd1YWdlc0BXZWJDb3JlQEBZQT9BVj8kVmVjdG9yQFZTdHJpbmdA
V1RGQEAkMEFAQFdURkBAWFoKICAgICAgICAgP3V0ZjhAU3RyaW5nQFdURkBAUUJFP0FWQ1N0cmlu
Z0AyQF9OQFoKICAgICAgICAgP3ZpZXdARG9jdW1lbnRAV2ViQ29yZUBAUUJFUEFWRnJhbWVWaWV3
QDJAWFoKLSAgICAgICAgP25vZGVzRnJvbVJlY3RARG9jdW1lbnRAV2ViQ29yZUBAUUJFP0FWPyRQ
YXNzUmVmUHRyQFZOb2RlTGlzdEBXZWJDb3JlQEBAV1RGQEBISElJSUlfTjAwQFoKKyAgICAgICAg
P25vZGVzRnJvbVJlY3RARG9jdW1lbnRAV2ViQ29yZUBAUUJFP0FWPyRQYXNzUmVmUHRyQFZOb2Rl
TGlzdEBXZWJDb3JlQEBAV1RGQEBISElJSUlJQFoKICAgICAgICAgP3NlbGVjdGlvblN0YXJ0SGFz
TWFya2VyRm9yQEVkaXRvckBXZWJDb3JlQEBRQkVfTlc0TWFya2VyVHlwZUBEb2N1bWVudE1hcmtl
ckAyQEhIQFoKICAgICAgICAgP3Jlc3RyaWN0U2NhbGVGYWN0b3JUb0luaXRpYWxTY2FsZUlmTm90
VXNlclNjYWxhYmxlQFdlYkNvcmVAQFlBWEFBVVZpZXdwb3J0QXR0cmlidXRlc0AxQEBaCiAgICAg
ICAgID9yZXN0cmljdE1pbmltdW1TY2FsZUZhY3RvclRvVmlld3BvcnRTaXplQFdlYkNvcmVAQFlB
WEFBVVZpZXdwb3J0QXR0cmlidXRlc0AxQFZJbnRTaXplQDFAQFoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmls
dGVyCmluZGV4IGI2M2I3YzFjM2ZiZjgyMWM5Y2ViY2E4YTUxZmUyZTkwM2ExNDdlMDIuLjNkOWEz
ZWEyZjMxZThlZGEwNDBkNGIyYWY0MTFmZmU4MWJjMmI5NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9h
dXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKKysrIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZp
bHRlcgpAQCAtMTYyLDcgKzE2Miw3IEBAIF9aTjdXZWJDb3JlMjJSdW50aW1lRW5hYmxlZEZlYXR1
cmVzMThpc1NoYWRvd0RPTUVuYWJsZWRFOwogX1pON1dlYkNvcmUyMlJ1bnRpbWVFbmFibGVkRmVh
dHVyZXMyMmlzQ1NTRXhjbHVzaW9uc0VuYWJsZWRFOwogX1pON1dlYkNvcmUyMlJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXMyMmlzRGlhbG9nRWxlbWVudEVuYWJsZWRFOwogX1pON1dlYkNvcmUyMlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXMzN2lzQXV0aG9yU2hhZG93RE9NRm9yQW55RWxlbWVudEVuYWJsZWRF
OwotX1pOSzdXZWJDb3JlOERvY3VtZW50MTNub2Rlc0Zyb21SZWN0RWlpampqamJiYjsKK19aTks3
V2ViQ29yZThEb2N1bWVudDEzbm9kZXNGcm9tUmVjdEVpaWpqampqOwogX1pON1dlYkNvcmU0dG9K
U0VQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBOU184Tm9kZUxpc3RF
OwogX1pOSzdXZWJDb3JlNkVkaXRvcjI2c2VsZWN0aW9uU3RhcnRIYXNNYXJrZXJGb3JFTlNfMTRE
b2N1bWVudE1hcmtlcjEwTWFya2VyVHlwZUVpaTsKIF9aTjdXZWJDb3JlOERvY3VtZW50MzN3ZWJr
aXREaWRFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnRFUE5TXzdFbGVtZW50RTsKZGlmZiAtLWdpdCBh
L0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA4YzMzMGQ1Yzk2NjQxZDMwY2EyOTk2MDIyZDZk
MjhlMzhlMmQxYWIxLi5kZTE2M2UyZGE0NTRiYjAyNTQ1NTNiMzAwNTZhY2YxMTBmMjNmY2JhIDEw
MDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIw
MTItMDktMDQgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+
CisKKyAgICAgICAgU2ltcGxpZnkgaGl0VGVzdFJlc3VsdEF0UG9pbnQgYW5kIG5vZGVzRnJvbVJl
Y3QgQVBJcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTU3MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
cGRhdGUgZXhwb3J0ZWQgc3ltYm9scy4KKworICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMvc3lt
Ym9scy5maWx0ZXI6CisKIDIwMTItMDktMDMgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFu
LmplbnNlbkBub2tpYS5jb20+CiAKICAgICAgICAgQWxsb3cgY2hpbGQtZnJhbWUgY29udGVudCBp
biBoaXQtdGVzdHMuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162019</attachid>
            <date>2012-09-04 05:14:53 -0700</date>
            <delta_ts>2012-09-05 01:47:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95720-20120904141427.patch</filename>
            <type>text/plain</type>
            <size>56784</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDVhODg5NGU1NDBlNjkw
NWEzMDA5ZWVjYWRmZTc2ZjkwZTVlMDMxMC4uMjQxOTRkOTk2N2ZhMjI2YTRhZTIxMWU1YjRmMDhh
OWYyNWQzYmE2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEyLTA5LTA0ICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgorCisgICAgICAgIFNp
bXBsaWZ5IGhpdFRlc3RSZXN1bHRBdFBvaW50IGFuZCBub2Rlc0Zyb21SZWN0IEFQSXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NzIwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGV4aXN0aW5nIEFQ
SSB3YXMgb3ZlcmxvYWRlZCBhbmQgY291bGQgYmUgc2ltcGxpZmllZCBieSBwYXNzaW5nIGFsbCB0
aGUgYm9vbCBhcmd1bWVudHMgaW4gCisgICAgICAgIGEgSGl0VGVzdFJlcXVlc3QgYXJndW1lbnQu
IFRoaXMgc2hvdWxkIGFsc28gaGVscCBjbGFyaWZ5IHRoZSBjYWxsIGFzIHRoZSBlbnVtIHZhbHVl
cyBleHBsaWNpdGVseQorICAgICAgICBzdGF0ZSB3aGF0IHRoZXkgZG8uCisKKyAgICAgICAgVG8g
YWxsb3cgZm9yIHNpbXBsZSBjb252ZXJzaW9uIGEgbmV3IHN0YXRpYyBmdW5jdGlvbiBoYXMgYmVl
biAgYWRkZWQgdG8gSGl0VGVzdFJlcXVlc3QgdG8gYnVpbGQKKyAgICAgICAgYSBkZWZhdWx0IHR5
cGUgYmFzZWQgb24gdGhlIG9sZCBib29sZWFuIGFyZ3VtZW50cy4KKworICAgICAgICAqIFdlYkNv
cmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUub3JkZXI6CisgICAgICAgICogZG9tL0RvY3Vt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpub2Rlc0Zyb21SZWN0KToKKyAg
ICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKERvY3VtZW50KToKKyAgICAgICAgKiBw
YWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0
TWVudUNvbnRyb2xsZXI6OmNyZWF0ZUNvbnRleHRNZW51KToKKyAgICAgICAgKiBwYWdlL0RyYWdD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpjYW5Qcm9j
ZXNzRHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKToK
KyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dEhhbmRsZXI6OnVwZGF0ZUF1dG9zY3JvbGxSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudEhhbmRsZXI6OmhpdFRlc3RSZXN1bHRBdFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6YmVzdENsaWNrYWJsZU5vZGVGb3JUb3VjaFBvaW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50SGFuZGxlcjo6YmVzdENvbnRleHRNZW51Tm9kZUZvclRvdWNoUG9pbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpiZXN0Wm9vbWFibGVBcmVhRm9yVG91Y2hQb2lu
dCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZVRvdWNoRXZlbnQpOgor
ICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmg6CisgICAgICAgIChFdmVudEhhbmRsZXIpOgor
ICAgICAgICAqIHBhZ2UvRm9jdXNDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVw
ZGF0ZUZvY3VzQ2FuZGlkYXRlSWZOZWVkZWQpOgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnZpc2libGVQb3NpdGlvbkZvclBvaW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lOjpkb2N1bWVudEF0UG9pbnQpOgorICAgICAgICAqIHBhZ2UvVG91
Y2hEaXNhbWJpZ3VhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaW5kR29vZFRvdWNoVGFy
Z2V0cyk6CisgICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXF1ZXN0Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpIaXRUZXN0UmVxdWVzdDo6RGVmYXVsdCk6CisgICAgICAgIChIaXRUZXN0UmVxdWVz
dCk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW50ZXJuYWxzOjpub2Rlc0Zyb21SZWN0KToKKwogMjAxMi0wOS0wMyAgQWxsYW4gU2FuZGZlbGQg
SmVuc2VuICA8YWxsYW4uamVuc2VuQG5va2lhLmNvbT4KIAogICAgICAgICBBbGxvdyBjaGlsZC1m
cmFtZSBjb250ZW50IGluIGhpdC10ZXN0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCmlu
ZGV4IDgwYjMwNTQxZDI5Y2Y5Mzg5YWM4NmY2ZGNlMGFmNTNlMTEzODc1MTYuLjExNzQ3MTBkMjE4
N2IzYjVjOGNhN2U5OTAzMzRiMzdmOGRjZDA4MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTA5LTA0ICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4g
IDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgorCisgICAgICAgIFNpbXBsaWZ5IGhpdFRlc3RSZXN1
bHRBdFBvaW50IGFuZCBub2Rlc0Zyb21SZWN0IEFQSXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NzIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGNhbGxzIHRvIG5ldyBBUEkuCisKKyAgICAg
ICAgKiBBcGkvV2ViUGFnZS5jcHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBh
Z2VQcml2YXRlOjpjb250ZXh0Tm9kZSk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6Oldl
YlBhZ2VQcml2YXRlOjpub2RlRm9yWm9vbVVuZGVyUG9pbnQpOgorICAgICAgICAoQmxhY2tCZXJy
eTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZTo6aGFuZGxlTW91c2VFdmVudCk6CisgICAgICAgIChC
bGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2U6Om5vZGVBdFBvaW50KToKKyAgICAgICAgKiBXZWJL
aXRTdXBwb3J0L0ZhdEZpbmdlcnMuY3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpG
YXRGaW5nZXJzOjpnZXROb2Rlc0Zyb21SZWN0KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktp
dDo6RmF0RmluZ2Vyczo6Z2V0UmVsZXZhbnRJbmZvRnJvbVBvaW50KToKKyAgICAgICAgKiBXZWJL
aXRTdXBwb3J0L1NlbGVjdGlvbkhhbmRsZXIuY3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2Vi
S2l0Ojp2aXNpYmxlUG9zaXRpb25Gb3JQb2ludElnbm9yaW5nQ2xpcHBpbmcpOgorCiAyMDEyLTA5
LTA0ICBNYXJ5IFd1ICA8bWFyeS53dUB0b3JjaG1vYmlsZS5jb20uY24+CiAKICAgICAgICAgW0Js
YWNrQmVycnldIEFkZCB3ZWJwbGF0Zm9ybSBhbmQgYnJvd3NlciB0byBidWlsZCBpbmZvCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGZjNDhlNTllMGFlNjZiYTA0MDU5MTg1Yjg2ZmY0MmY1
NDg5MTZlYzkuLjFjMjA5YThiYTQ2YjRhYjViMzU2MDgzMGY1NzVhNzAzNjRiZTVmNTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTItMDktMDQgIEFsbGFu
IFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+CisKKyAgICAgICAgU2lt
cGxpZnkgaGl0VGVzdFJlc3VsdEF0UG9pbnQgYW5kIG5vZGVzRnJvbVJlY3QgQVBJcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU3MjAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgY2FsbHMgdG8g
bmV3IEFQSS4KKworICAgICAgICAqIHNyYy9Db250ZXh0TWVudUNsaWVudEltcGwuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpzZWxlY3RNaXNzcGVsbGVkV29yZCk6CisgICAgICAgICogc3JjL0ZyYW1l
TG9hZGVyQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50
SW1wbDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAg
KiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjpj
aGFyYWN0ZXJJbmRleEZvclBvaW50KToKKyAgICAgICAgKiBzcmMvV2ViUGx1Z2luQ29udGFpbmVy
SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbkNvbnRhaW5lckltcGw6OmlzUmVj
dFRvcG1vc3QpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXdJbXBsOjpoYW5kbGVNb3VzZVVwKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0ltcGw6OmNvbXB1dGVCbG9ja0JvdW5kcyk6CisKIDIwMTItMDktMDMgIFRhbyBCYWkgIDxtaWNo
YWVsYmFpQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBZGRlZCBBTkRST0lEX0dEQlNFUlZFUiBk
ZWZpbml0aW9uIGZvciBBbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggNjRiOTY5MWI5ZjE2NWE2NjE2MTQ5
M2E2NTc2YjNhMGQ4YmNlM2M5NS4uMWI0MzNhN2I4ODY1MzAzYjdiYmQ5NWUwYTY2OGQ0MzBmYjE5
MGFjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMi0wOS0wNCAgQWxsYW4g
U2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQG5va2lhLmNvbT4KKworICAgICAgICBTaW1w
bGlmeSBoaXRUZXN0UmVzdWx0QXRQb2ludCBhbmQgbm9kZXNGcm9tUmVjdCBBUElzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTcyMAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBjYWxscyB0byBu
ZXcgQVBJLgorCisgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIChRV2ViRnJh
bWU6OmhpdFRlc3RDb250ZW50KToKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAg
ICAoUVdlYlBhZ2VQcml2YXRlOjpoYW5kbGVTb2Z0d2FyZUlucHV0UGFuZWwpOgorICAgICAgICAo
UVdlYlBhZ2VQcml2YXRlOjpUb3VjaEFkanVzdGVyOjpmaW5kQ2FuZGlkYXRlUG9pbnRGb3JUb3Vj
aCk6CisgICAgICAgIChRV2ViUGFnZTo6dXBkYXRlUG9zaXRpb25EZXBlbmRlbnRBY3Rpb25zKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbik6CisKIDIwMTItMDgtMzEgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24u
aGF1c21hbm5Abm9raWEuY29tPgogCiAgICAgICAgIFtRdF0gUG9ydCBjb252ZXJ0VmFsdWVUb1FW
YXJpYW50IHRvIHVzZSB0aGUgSlNDIEMgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggMDdlNGE2ZWI3
ZTUzYmNhZGQ0ZjQ1MzIxYjk2ZjQ1ZThjZDkzMDdiNS4uOWYwNzg2YzdiYzRlMzkxOWMyOTk2MTZl
ODI2NDI5YTE2YjlhZmJmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEy
LTA5LTA0ICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgor
CisgICAgICAgIFNpbXBsaWZ5IGhpdFRlc3RSZXN1bHRBdFBvaW50IGFuZCBub2Rlc0Zyb21SZWN0
IEFQSXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1
NzIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBk
YXRlIGNhbGxzIHRvIG5ldyBBUEkuCisKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAg
KFdlYlZpZXc6OmhhbmRsZUNvbnRleHRNZW51RXZlbnQpOgorICAgICAgICAoV2ViVmlldzo6ZWxl
bWVudEF0UG9pbnQpOgorCiAyMDEyLTA4LTMwICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgSlNDOjpVU3RyaW5nIGJ5IFdURjo6U3RyaW5n
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
d3gvQ2hhbmdlTG9nCmluZGV4IDM3MTgzY2Y0NmQxNzk4MjY0OGQwOGFjYmU5ZTBhYzc0NmUyNzUy
NTAuLjU5N2EyNWIwYzgwZDRiOGU2NWRkYmJlZGUxMTRmMzFlOWYwNjZhYzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd3gvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDktMDQgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAg
PGFsbGFuLmplbnNlbkBub2tpYS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkgaGl0VGVzdFJlc3Vs
dEF0UG9pbnQgYW5kIG5vZGVzRnJvbVJlY3QgQVBJcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU3MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgY2FsbHMgdG8gbmV3IEFQSS4KKworICAgICAg
ICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OkhpdFRlc3QpOgor
CiAyMDEyLTA4LTMwICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFJlcGxhY2UgSlNDOjpVU3RyaW5nIGJ5IFdURjo6U3RyaW5nCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
MDVmYTZiMGQyMWM2YWM1NzFhNmUyMWI3YTljNjVjYjIwY2MzN2ZiMi4uZmEyYTg4Zjk4NTU0ODQz
YzRhNzkzM2I0MzM5ZjAxODdkYmMxMjQ0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisy
MDEyLTA5LTA0ICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29t
PgorCisgICAgICAgIFNpbXBsaWZ5IGhpdFRlc3RSZXN1bHRBdFBvaW50IGFuZCBub2Rlc0Zyb21S
ZWN0IEFQSXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk1NzIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VXBkYXRlIGNhbGxzIHRvIG5ldyBBUEkgYW5kIHVwZGF0ZSBleHBvcnRlZCBzeW1ib2xzLgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRp
b25BY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25B
Y3Rpb246OkluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpoYW5kbGVDb250ZXh0
TWVudUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aGlnaGxpZ2h0UG90ZW50aWFs
QWN0aXZhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmZpbmRab29tYWJsZUFyZWFG
b3JQb2ludCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjaGFyYWN0ZXJJbmRleEZvclBvaW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2hvdWxkRGVsYXlXaW5kb3dPcmRlcmluZ0V2
ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YWNjZXB0c0ZpcnN0TW91c2UpOgorICAg
ICAgICAqIHdpbi9XZWJLaXQyLmRlZjoKKyAgICAgICAgKiB3aW4vV2ViS2l0MkNGTGl0ZS5kZWY6
CisKIDIwMTItMDktMDMgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tp
YS5jb20+CiAKICAgICAgICAgQWxsb3cgY2hpbGQtZnJhbWUgY29udGVudCBpbiBoaXQtdGVzdHMu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGJhZTMzZjdkYTk1MmZlYjU5MjFkNjFiOGVhNDZmMGNj
MDJlOTlkYmEuLjMyNGI0ZmZmMGMxYTY2NDFhNzUwNzM0MTY2M2JiZDUxZTdmMWRlMmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCkBAIC0xMzUzLDcgKzEzNTMsNyBAQCBfX1pOSzdXZWJDb3JlN1J1bkxv
b3A5VGltZXJCYXNlOGlzQWN0aXZlRXYKIF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQxMHJlbmRlclZp
ZXdFdgogX19aTks3V2ViQ29yZThEb2N1bWVudDExY29tcGxldGVVUkxFUktOM1dURjZTdHJpbmdF
CiBfX1pOSzdXZWJDb3JlOERvY3VtZW50MTNheE9iamVjdENhY2hlRXYKLV9fWk5LN1dlYkNvcmU4
RG9jdW1lbnQxM25vZGVzRnJvbVJlY3RFaWlqampqYmJiCitfX1pOSzdXZWJDb3JlOERvY3VtZW50
MTNub2Rlc0Zyb21SZWN0RWlpampqamoKIF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQxNGdldEVsZW1l
bnRCeUlkRVJLTjNXVEYxMkF0b21pY1N0cmluZ0UKIF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQzMWRp
c3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2RpbmdFUktOM1dURjZTdHJpbmdFCiBfX1pOSzdXZWJD
b3JlOERvY3VtZW50NGJvZHlFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5v
cmRlciBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKaW5kZXggMzVhYmZlNjM1YjkzZGE0
NGI0NzI1YTU0ZmIyMjNkMTgxNjczOGMxYy4uOTA1OWM4ZDNmOTkxNTRmMjVjMDVkM2JiNDZhNmYy
NWY5MjA0MTRkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCkBAIC0yMjc4NSw3ICsyMjc4NSw3IEBAIF9f
Wk5LN1dlYkNvcmUxMk5vZGVJdGVyYXRvcjIwdXBkYXRlRm9yTm9kZVJlbW92YWxFUE5TXzROb2Rl
RVJOUzBfMTFOb2RlUG9pbnRlckUKIF9fWk43V2ViQ29yZTI3anNOb2RlSXRlcmF0b3JSZWZlcmVu
Y2VOb2RlRVBOM0pTQzlFeGVjU3RhdGVFTlMwXzdKU1ZhbHVlRVJLTlMwXzEwSWRlbnRpZmllckUK
IF9fWk5LN1dlYkNvcmU0Tm9kZTIwdHJhdmVyc2VQcmV2aW91c05vZGVFUEtTMF8KIF9fWk43V2Vi
Q29yZTM3anNOb2RlSXRlcmF0b3JQcm90b3R5cGVGdW5jdGlvbkRldGFjaEVQTjNKU0M5RXhlY1N0
YXRlRQotX19aTks3V2ViQ29yZThEb2N1bWVudDEzbm9kZXNGcm9tUmVjdEVpaWpqampiYmIKK19f
Wk5LN1dlYkNvcmU4RG9jdW1lbnQxM25vZGVzRnJvbVJlY3RFaWlqampqagogX19aTks3V2ViQ29y
ZThEb2N1bWVudDE3aGFuZGxlWmVyb1BhZGRpbmdFUktOU18xNEhpdFRlc3RSZXF1ZXN0RVJOU18x
M0hpdFRlc3RSZXN1bHRFCiBfX1pOM1dURjIxTGlzdEhhc2hTZXRUcmFuc2xhdG9ySU5TXzZSZWZQ
dHJJTjdXZWJDb3JlNE5vZGVFRUVMbTI1NkVOU183UHRySGFzaElTNF9FRUU5dHJhbnNsYXRlRVJQ
TlNfMTVMaXN0SGFzaFNldE5vZGVJUzRfTG0yNTZFRUVSS1M0X1BOU18yNExpc3RIYXNoU2V0Tm9k
ZUFsbG9jYXRvcklTNF9MbTI1NkVFRQogX19aTjdXZWJDb3JlMjFTdGF0aWNIYXNoU2V0Tm9kZUxp
c3RDMUVSTjNXVEYxMUxpc3RIYXNoU2V0SU5TMV82UmVmUHRySU5TXzROb2RlRUVFTG0yNTZFTlMx
XzdQdHJIYXNoSVM1X0VFRUUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDQ0NjU3NTEzNzE0
ZDgyY2I5YTI5YTkwNTlmMzA1MDY1ZjQ5NWQ3NWYuLjNiNWFmZjU5NTRhZGY1MWNlZTBhN2ZkMTc0
NjA1ZWJhZmQ0Y2NlYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMTM4NCw3ICsxMzg0
LDcgQEAgU3RyaW5nIERvY3VtZW50OjpzdWdnZXN0ZWRNSU1FVHlwZSgpIGNvbnN0CiAvLyAqIG1h
a2luZyBpdCByZWNlaXZlIGEgcmVjdCBhcyBwYXJhbWV0ZXIsIGkuZS4gbm9kZXNGcm9tUmVjdCh4
LCB5LCB3LCBoKTsKIC8vICogbWFraW5nIGl0IHJlY2VpdmUgdGhlIGV4cGFkaW5nIHNpemUgb2Yg
ZWFjaCBkaXJlY3Rpb24gc2VwYXJhdGVseSwKIC8vICAgaS5lLiBub2Rlc0Zyb21SZWN0KHgsIHks
IHRvcFNpemUsIHJpZ2h0U2l6ZSwgYm90dG9tU2l6ZSwgbGVmdFNpemUpOwotUGFzc1JlZlB0cjxO
b2RlTGlzdD4gRG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QoaW50IGNlbnRlclgsIGludCBjZW50ZXJZ
LCB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcsIHVuc2lnbmVkIGJv
dHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nLCBib29sIGlnbm9yZUNsaXBwaW5nLCBi
b29sIGFsbG93U2hhZG93Q29udGVudCwgYm9vbCBhbGxvd0NoaWxkRnJhbWVDb250ZW50KSBjb25z
dAorUGFzc1JlZlB0cjxOb2RlTGlzdD4gRG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QoaW50IGNlbnRl
clgsIGludCBjZW50ZXJZLCB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBhZGRp
bmcsIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nLCBIaXRUZXN0
UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhpdFR5cGUpIGNvbnN0CiB7CiAgICAgLy8gRklY
TUU6IFNoYXJlIGNvZGUgYmV0d2VlbiB0aGlzLCBlbGVtZW50RnJvbVBvaW50IGFuZCBjYXJldFJh
bmdlRnJvbVBvaW50LgogICAgIGlmICghcmVuZGVyZXIoKSkKQEAgLTEzOTksMTkgKzEzOTksMTEg
QEAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gRG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QoaW50IGNlbnRl
clgsIGludCBjZW50ZXJZLCB1bnNpZ25lZAogICAgIGZsb2F0IHpvb21GYWN0b3IgPSBmcmFtZS0+
cGFnZVpvb21GYWN0b3IoKTsKICAgICBMYXlvdXRQb2ludCBwb2ludCA9IHJvdW5kZWRMYXlvdXRQ
b2ludChGbG9hdFBvaW50KGNlbnRlclggKiB6b29tRmFjdG9yICsgdmlldygpLT5zY3JvbGxYKCks
IGNlbnRlclkgKiB6b29tRmFjdG9yICsgdmlldygpLT5zY3JvbGxZKCkpKTsKIAotICAgIGludCB0
eXBlID0gSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZTsK
KyAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KGhpdFR5cGUpOwogCiAgICAgLy8gV2hlbiBpZ25v
cmVDbGlwcGluZyBpcyBmYWxzZSwgdGhpcyBtZXRob2QgcmV0dXJucyBudWxsIGZvciBjb29yZGlu
YXRlcyBvdXRzaWRlIG9mIHRoZSB2aWV3cG9ydC4KLSAgICBpZiAoaWdub3JlQ2xpcHBpbmcpCi0g
ICAgICAgIHR5cGUgfD0gSGl0VGVzdFJlcXVlc3Q6Oklnbm9yZUNsaXBwaW5nOwotICAgIGVsc2Ug
aWYgKCFmcmFtZVZpZXctPnZpc2libGVDb250ZW50UmVjdCgpLmludGVyc2VjdHMoSGl0VGVzdFJl
c3VsdDo6cmVjdEZvclBvaW50KHBvaW50LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRv
bVBhZGRpbmcsIGxlZnRQYWRkaW5nKSkpCisgICAgaWYgKCFyZXF1ZXN0Lmlnbm9yZUNsaXBwaW5n
KCkgJiYgIWZyYW1lVmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0KCkuaW50ZXJzZWN0cyhIaXRUZXN0
UmVzdWx0OjpyZWN0Rm9yUG9pbnQocG9pbnQsIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90
dG9tUGFkZGluZywgbGVmdFBhZGRpbmcpKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKGFs
bG93U2hhZG93Q29udGVudCkKLSAgICAgICAgdHlwZSB8PSBIaXRUZXN0UmVxdWVzdDo6QWxsb3dT
aGFkb3dDb250ZW50OwotICAgIGlmIChhbGxvd0NoaWxkRnJhbWVDb250ZW50KQotICAgICAgICB0
eXBlIHw9IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd0NoaWxkRnJhbWVDb250ZW50OwotCi0gICAgSGl0
VGVzdFJlcXVlc3QgcmVxdWVzdCh0eXBlKTsKIAogICAgIC8vIFBhc3NpbmcgYSB6ZXJvIHBhZGRp
bmcgd2lsbCB0cmlnZ2VyIGEgcmVjdCBoaXQgdGVzdCwgaG93ZXZlciBmb3IgdGhlIHB1cnBvc2Vz
IG9mIG5vZGVzRnJvbVJlY3QsCiAgICAgLy8gd2Ugc3BlY2lhbCBoYW5kbGUgdGhpcyBjYXNlIGlu
IG9yZGVyIHRvIHJldHVybiBhIHZhbGlkIE5vZGVMaXN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRl
eCAyODcyZTVjMmFhOWIzNjI5YTU0NjBjMTZiMjhhNGRjZmE0ZmZmZDk4Li4xMjQ1ZDdlNGEwNWM2
OTA0MjUxYmI1NGQ1ZDc0NTgwMjc4MWNiMjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMzQs
NiArMzQsNyBAQAogI2luY2x1ZGUgIkRPTVRpbWVTdGFtcC5oIgogI2luY2x1ZGUgIkRvY3VtZW50
RXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50VGltaW5nLmgiCisjaW5jbHVkZSAiSGl0
VGVzdFJlcXVlc3QuaCIKICNpbmNsdWRlICJJY29uVVJMLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
Q291bnRlcnMuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCkBAIC0zNzYsMTIgKzM3NywxMCBAQCBw
dWJsaWM6CiAgICAgICogQHBhcmFtIHJpZ2h0UGFkZGluZyBIb3cgbXVjaCB0byBleHBhbmQgdGhl
IHJpZ2h0IG9mIHRoZSByZWN0YW5nbGUKICAgICAgKiBAcGFyYW0gYm90dG9tUGFkZGluZyBIb3cg
bXVjaCB0byBleHBhbmQgdGhlIGJvdHRvbSBvZiB0aGUgcmVjdGFuZ2xlCiAgICAgICogQHBhcmFt
IGxlZnRQYWRkaW5nIEhvdyBtdWNoIHRvIGV4cGFuZCB0aGUgbGVmdCBvZiB0aGUgcmVjdGFuZ2xl
Ci0gICAgICogQHBhcmFtIGlnbm9yZUNsaXBwaW5nIHdoZXRoZXIgb3Igbm90IHRvIGlnbm9yZSB0
aGUgcm9vdCBzY3JvbGwgZnJhbWUgd2hlbiByZXRyaWV2aW5nIHRoZSBlbGVtZW50LgotICAgICAq
ICAgICAgICBJZiBmYWxzZSwgdGhpcyBtZXRob2QgcmV0dXJucyBudWxsIGZvciBjb29yZGluYXRl
cyBvdXRzaWRlIG9mIHRoZSB2aWV3cG9ydC4KICAgICAgKi8KICAgICBQYXNzUmVmUHRyPE5vZGVM
aXN0PiBub2Rlc0Zyb21SZWN0KGludCBjZW50ZXJYLCBpbnQgY2VudGVyWSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVk
IHJpZ2h0UGFkZGluZywgdW5zaWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRp
bmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlnbm9yZUNs
aXBwaW5nLCBib29sIGFsbG93U2hhZG93Q29udGVudCwgYm9vbCBhbGxvd0NoaWxkRnJhbWVDb250
ZW50ID0gZmFsc2UpIGNvbnN0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgSGl0VGVzdFJlcXVlc3Q6OkhpdFRlc3RSZXF1ZXN0VHlwZSBoaXRUeXBlID0gSGl0VGVzdFJl
cXVlc3Q6OkRlZmF1bHQoZmFsc2UpKSBjb25zdDsKICAgICBFbGVtZW50KiBlbGVtZW50RnJvbVBv
aW50KGludCB4LCBpbnQgeSkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxSYW5nZT4gY2FyZXRSYW5n
ZUZyb21Qb2ludChpbnQgeCwgaW50IHkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRl
eHRNZW51Q29udHJvbGxlci5jcHAKaW5kZXggZDkwMTlmYzMwZmQ1ZDg2NDZmMmY0ZWZmNGVhNTRm
NDg5Zjg5Mzg1Yi4uODdmM2NjNGQ2MTliNTY2YzA1ZDIzNjFmNDk1MDY3NTQxYmQyNWMyOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcApAQCAtMTQ5
LDcgKzE0OSw3IEBAIFBhc3NPd25QdHI8Q29udGV4dE1lbnU+IENvbnRleHRNZW51Q29udHJvbGxl
cjo6Y3JlYXRlQ29udGV4dE1lbnUoRXZlbnQqIGV2ZW50KQogICAgIEhpdFRlc3RSZXN1bHQgcmVz
dWx0KG1vdXNlRXZlbnQtPmFic29sdXRlTG9jYXRpb24oKSk7CiAKICAgICBpZiAoRnJhbWUqIGZy
YW1lID0gZXZlbnQtPnRhcmdldCgpLT50b05vZGUoKS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSkKLSAg
ICAgICAgcmVzdWx0ID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2lu
dChtb3VzZUV2ZW50LT5hYnNvbHV0ZUxvY2F0aW9uKCksIGZhbHNlKTsKKyAgICAgICAgcmVzdWx0
ID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChtb3VzZUV2ZW50
LT5hYnNvbHV0ZUxvY2F0aW9uKCkpOwogCiAgICAgaWYgKCFyZXN1bHQuaW5uZXJOb25TaGFyZWRO
b2RlKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250
cm9sbGVyLmNwcAppbmRleCBjNzQ0YzE4OWViZGJmNGYwYTQwYjhhOTlkOGU3OWEyNWRiMGE2ZDY4
Li4zMGEwN2U4YjkwNmMyYmM3ZGZjMGQ4NTJjZDViYWJmYzdmMDVhOWYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcApAQCAtNTQ0LDcgKzU0NCw3IEBAIGJvb2wgRHJhZ0Nv
bnRyb2xsZXI6OmNhblByb2Nlc3NEcmFnKERyYWdEYXRhKiBkcmFnRGF0YSkKICAgICBpZiAoIW1f
cGFnZS0+bWFpbkZyYW1lKCktPmNvbnRlbnRSZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICByZXN1bHQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+
aGl0VGVzdFJlc3VsdEF0UG9pbnQocG9pbnQsIHRydWUpOworICAgIHJlc3VsdCA9IG1fcGFnZS0+
bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChwb2ludCwg
SGl0VGVzdFJlcXVlc3Q6OkRlZmF1bHQodHJ1ZSkpOwogCiAgICAgaWYgKCFyZXN1bHQuaW5uZXJO
b25TaGFyZWROb2RlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTcyNiw3ICs3MjYsNyBA
QCBib29sIERyYWdDb250cm9sbGVyOjpzdGFydERyYWcoRnJhbWUqIHNyYywgY29uc3QgRHJhZ1N0
YXRlJiBzdGF0ZSwgRHJhZ09wZXJhdGlvbgogICAgIGlmICghc3JjLT52aWV3KCkgfHwgIXNyYy0+
Y29udGVudFJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEhpdFRlc3RS
ZXN1bHQgaGl0VGVzdFJlc3VsdCA9IHNyYy0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRB
dFBvaW50KGRyYWdPcmlnaW4sIHRydWUpOworICAgIEhpdFRlc3RSZXN1bHQgaGl0VGVzdFJlc3Vs
dCA9IHNyYy0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGRyYWdPcmlnaW4s
IEhpdFRlc3RSZXF1ZXN0OjpEZWZhdWx0KHRydWUpKTsKICAgICBpZiAoIXN0YXRlLm1fZHJhZ1Ny
Yy0+Y29udGFpbnMoaGl0VGVzdFJlc3VsdC5pbm5lck5vZGUoKSkpCiAgICAgICAgIC8vIFRoZSBv
cmlnaW5hbCBub2RlIGJlaW5nIGRyYWdnZWQgaXNuJ3QgdW5kZXIgdGhlIGRyYWcgb3JpZ2luIGFu
eW1vcmUuLi4gbWF5YmUgaXQgd2FzCiAgICAgICAgIC8vIGhpZGRlbiBvciBtb3ZlZCBvdXQgZnJv
bSB1bmRlciB0aGUgY3Vyc29yLiBSZWdhcmRsZXNzLCB3ZSBkb24ndCB3YW50IHRvIHN0YXJ0IGEg
ZHJhZyBvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDAwMWZkNmQ5ZTll
MTE2Mjk1ZDIwYzUwOTIzMDE5MjdhMDVkN2RmOTAuLjQ5MzQyNWJkOWM3ZmNjOGMxODdlNWI2OWYx
YmJhNjQwMDM5ZjMyNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTEw
MDcsNyArMTAwNyw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjp1cGRhdGVBdXRvc2Nyb2xsUmVuZGVy
ZXIoKQogICAgIGlmICghbV9hdXRvc2Nyb2xsUmVuZGVyZXIpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIEhpdFRlc3RSZXN1bHQgaGl0VGVzdCA9IGhpdFRlc3RSZXN1bHRBdFBvaW50KG1fcGFuU2Ny
b2xsU3RhcnRQb3MsIHRydWUpOworICAgIEhpdFRlc3RSZXN1bHQgaGl0VGVzdCA9IGhpdFRlc3RS
ZXN1bHRBdFBvaW50KG1fcGFuU2Nyb2xsU3RhcnRQb3MsIEhpdFRlc3RSZXF1ZXN0OjpEZWZhdWx0
KHRydWUpKTsKIAogICAgIGlmIChOb2RlKiBub2RlQXRQb2ludCA9IGhpdFRlc3QuaW5uZXJOb2Rl
KCkpCiAgICAgICAgIG1fYXV0b3Njcm9sbFJlbmRlcmVyID0gbm9kZUF0UG9pbnQtPnJlbmRlcmVy
KCk7CkBAIC0xMDM5LDIyICsxMDM5LDE4IEBAIERyYWdTb3VyY2VBY3Rpb24gRXZlbnRIYW5kbGVy
Ojp1cGRhdGVEcmFnU291cmNlQWN0aW9uc0FsbG93ZWQoKSBjb25zdAogfQogI2VuZGlmIC8vIEVO
QUJMRShEUkFHX1NVUFBPUlQpCiAgICAgCi1IaXRUZXN0UmVzdWx0IEV2ZW50SGFuZGxlcjo6aGl0
VGVzdFJlc3VsdEF0UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBib29sIGFsbG93U2hh
ZG93Q29udGVudCwgYm9vbCBpZ25vcmVDbGlwcGluZywgSGl0VGVzdFNjcm9sbGJhcnMgdGVzdFNj
cm9sbGJhcnMsIEhpdFRlc3RSZXF1ZXN0OjpIaXRUZXN0UmVxdWVzdFR5cGUgaGl0VHlwZSwgY29u
c3QgTGF5b3V0U2l6ZSYgcGFkZGluZykKK0hpdFRlc3RSZXN1bHQgRXZlbnRIYW5kbGVyOjpoaXRU
ZXN0UmVzdWx0QXRQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQsIEhpdFRlc3RSZXF1ZXN0
OjpIaXRUZXN0UmVxdWVzdFR5cGUgaGl0VHlwZSwgY29uc3QgTGF5b3V0U2l6ZSYgcGFkZGluZykK
IHsKICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdChwb2ludCwgcGFkZGluZy5oZWlnaHQoKSwgcGFk
ZGluZy53aWR0aCgpLCBwYWRkaW5nLmhlaWdodCgpLCBwYWRkaW5nLndpZHRoKCkpOwogCiAgICAg
aWYgKCFtX2ZyYW1lLT5jb250ZW50UmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
LSAgICBpZiAoaWdub3JlQ2xpcHBpbmcpCi0gICAgICAgIGhpdFR5cGUgfD0gSGl0VGVzdFJlcXVl
c3Q6Oklnbm9yZUNsaXBwaW5nOwotICAgIGlmIChhbGxvd1NoYWRvd0NvbnRlbnQpCi0gICAgICAg
IGhpdFR5cGUgfD0gSGl0VGVzdFJlcXVlc3Q6OkFsbG93U2hhZG93Q29udGVudDsKLSAgICBpZiAo
dGVzdFNjcm9sbGJhcnMgPT0gU2hvdWxkSGl0VGVzdFNjcm9sbGJhcnMpCi0gICAgICAgIGhpdFR5
cGUgfD0gSGl0VGVzdFJlcXVlc3Q6OlRlc3RDaGlsZEZyYW1lU2Nyb2xsQmFyczsKICAgICAvLyBX
ZSBhbHdheXMgbmVlZCB0byBoYW5kbGUgY2hpbGQgZnJhbWUgY29udGVudC4KICAgICBoaXRUeXBl
IHw9IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd0NoaWxkRnJhbWVDb250ZW50OwogCi0gICAgbV9mcmFt
ZS0+Y29udGVudFJlbmRlcmVyKCktPmhpdFRlc3QoSGl0VGVzdFJlcXVlc3QoaGl0VHlwZSksIHJl
c3VsdCk7CisgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChoaXRUeXBlKTsKKworICAgIG1fZnJh
bWUtPmNvbnRlbnRSZW5kZXJlcigpLT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7CiAKICAgICAv
LyBJZiBvdXIgSGl0VGVzdFJlc3VsdCBpcyBub3QgdmlzaWJsZSwgdGhlbiB3ZSBzdGFydGVkIGhp
dCB0ZXN0aW5nIHRvbyBmYXIgZG93biB0aGUgZnJhbWUgY2hhaW4uIAogICAgIC8vIEFub3RoZXIg
aGl0IHRlc3QgYXQgdGhlIG1haW4gZnJhbWUgbGV2ZWwgc2hvdWxkIGdldCB1cyB0aGUgY29ycmVj
dCB2aXNpYmxlIHJlc3VsdC4KQEAgLTEwNjYsMTIgKzEwNjIsMTIgQEAgSGl0VGVzdFJlc3VsdCBF
dmVudEhhbmRsZXI6OmhpdFRlc3RSZXN1bHRBdFBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2lu
dCwgYm9vbAogICAgICAgICAgICAgRnJhbWVWaWV3KiBtYWluVmlldyA9IG1haW5GcmFtZS0+dmll
dygpOwogICAgICAgICAgICAgaWYgKHJlc3VsdFZpZXcgJiYgbWFpblZpZXcpIHsKICAgICAgICAg
ICAgICAgICBJbnRQb2ludCBtYWluRnJhbWVQb2ludCA9IG1haW5WaWV3LT5yb290Vmlld1RvQ29u
dGVudHMocmVzdWx0Vmlldy0+Y29udGVudHNUb1Jvb3RWaWV3KHJvdW5kZWRJbnRQb2ludChyZXN1
bHQucG9pbnQoKSkpKTsKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBtYWluRnJhbWUtPmV2ZW50
SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChtYWluRnJhbWVQb2ludCwgYWxsb3dTaGFk
b3dDb250ZW50LCBpZ25vcmVDbGlwcGluZywgdGVzdFNjcm9sbGJhcnMsIGhpdFR5cGUsIHBhZGRp
bmcpOworICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1haW5GcmFtZS0+ZXZlbnRIYW5kbGVyKCkt
PmhpdFRlc3RSZXN1bHRBdFBvaW50KG1haW5GcmFtZVBvaW50LCBoaXRUeXBlLCBwYWRkaW5nKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICghYWxsb3dTaGFkb3dD
b250ZW50KQorICAgIGlmICghcmVxdWVzdC5hbGxvd3NTaGFkb3dDb250ZW50KCkpCiAgICAgICAg
IHJlc3VsdC5zZXRUb05vblNoYWRvd0FuY2VzdG9yKCk7CiAKICAgICByZXR1cm4gcmVzdWx0OwpA
QCAtMTQ4MSw3ICsxNDc3LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NF
dmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIG1vdXNlRXZlbnQpCiAgICAgbV9tb3VzZURv
d25XYXNJblN1YmZyYW1lID0gZmFsc2U7CiAKICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhp
dFRlc3RSZXF1ZXN0OjpBY3RpdmUpOwotICAgIC8vIFNhdmUgdGhlIGRvY3VtZW50IHBvaW50IHdl
IGdlbmVyYXRlIGluIGNhc2UgdGhlIHdpbmRvdyBjb29yZGluYXRlIGlzIGludmFsaWRhdGVkIGJ5
IHdoYXQgaGFwcGVucyAKKyAgICAvLyBTYXZlIHRoZSBkb2N1bWVudCBwb2ludCB3ZSBnZW5lcmF0
ZSBpbiBjYXNlIHRoZSB3aW5kb3cgY29vcmRpbmF0ZSBpcyBpbnZhbGlkYXRlZCBieSB3aGF0IGhh
cHBlbnMKICAgICAvLyB3aGVuIHdlIGRpc3BhdGNoIHRoZSBldmVudC4KICAgICBMYXlvdXRQb2lu
dCBkb2N1bWVudFBvaW50ID0gZG9jdW1lbnRQb2ludEZvcldpbmRvd1BvaW50KG1fZnJhbWUsIG1v
dXNlRXZlbnQucG9zaXRpb24oKSk7CiAgICAgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyBt
ZXYgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5wcmVwYXJlTW91c2VFdmVudChyZXF1ZXN0LCBkb2N1
bWVudFBvaW50LCBtb3VzZUV2ZW50KTsKQEAgLTIzODEsNyArMjM3Nyw3IEBAIGJvb2wgRXZlbnRI
YW5kbGVyOjpoYW5kbGVHZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdl
c3R1cmVFdmVudCkKICAgICAgICAgZXZlbnRUYXJnZXQgPSBtX3Njcm9sbEdlc3R1cmVIYW5kbGlu
Z05vZGUuZ2V0KCk7CiAKICAgICBpZiAoIWV2ZW50VGFyZ2V0KSB7Ci0gICAgICAgIEhpdFRlc3RS
ZXN1bHQgcmVzdWx0ID0gaGl0VGVzdFJlc3VsdEF0UG9pbnQoZ2VzdHVyZUV2ZW50LnBvc2l0aW9u
KCksIGZhbHNlLCBmYWxzZSwgRG9udEhpdFRlc3RTY3JvbGxiYXJzLCBIaXRUZXN0UmVxdWVzdDo6
UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlKTsKKyAgICAgICAgSGl0VGVzdFJlc3Vs
dCByZXN1bHQgPSBoaXRUZXN0UmVzdWx0QXRQb2ludChnZXN0dXJlRXZlbnQucG9zaXRpb24oKSk7
CiAgICAgICAgIGV2ZW50VGFyZ2V0ID0gcmVzdWx0LnRhcmdldE5vZGUoKTsKICAgICB9CiAKQEAg
LTI0ODMsOSArMjQ3OSw4IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlU2Nyb2xs
Q29yZShjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2CiAjaWYgRU5BQkxFKFRP
VUNIX0FESlVTVE1FTlQpCiBib29sIEV2ZW50SGFuZGxlcjo6YmVzdENsaWNrYWJsZU5vZGVGb3JU
b3VjaFBvaW50KGNvbnN0IEludFBvaW50JiB0b3VjaENlbnRlciwgY29uc3QgSW50U2l6ZSYgdG91
Y2hSYWRpdXMsIEludFBvaW50JiB0YXJnZXRQb2ludCwgTm9kZSomIHRhcmdldE5vZGUpCiB7Ci0g
ICAgSGl0VGVzdFJlcXVlc3Q6OkhpdFRlc3RSZXF1ZXN0VHlwZSBoaXRUeXBlID0gSGl0VGVzdFJl
cXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZTsKICAgICBJbnRQb2ludCBo
aXRUZXN0UG9pbnQgPSBtX2ZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHModG91Y2hDZW50
ZXIpOwotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gaGl0VGVzdFJlc3VsdEF0UG9pbnQoaGl0
VGVzdFBvaW50LCAvKmFsbG93U2hhZG93Q29udGVudCovIHRydWUsIC8qaWdub3JlQ2xpcHBpbmcq
LyBmYWxzZSwgRG9udEhpdFRlc3RTY3JvbGxiYXJzLCBoaXRUeXBlLCB0b3VjaFJhZGl1cyk7Cisg
ICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBoaXRUZXN0UmVzdWx0QXRQb2ludChoaXRUZXN0UG9p
bnQsIEhpdFRlc3RSZXF1ZXN0OjpEZWZhdWx0KHRydWUpLCB0b3VjaFJhZGl1cyk7CiAKICAgICBJ
bnRSZWN0IHRvdWNoUmVjdCh0b3VjaENlbnRlciAtIHRvdWNoUmFkaXVzLCB0b3VjaFJhZGl1cyAr
IHRvdWNoUmFkaXVzKTsKICAgICBSZWZQdHI8U3RhdGljSGFzaFNldE5vZGVMaXN0PiBub2RlTGlz
dCA9IFN0YXRpY0hhc2hTZXROb2RlTGlzdDo6YWRvcHQocmVzdWx0LnJlY3RCYXNlZFRlc3RSZXN1
bHQoKSk7CkBAIC0yNTAyLDkgKzI0OTcsOCBAQCBib29sIEV2ZW50SGFuZGxlcjo6YmVzdENsaWNr
YWJsZU5vZGVGb3JUb3VjaFBvaW50KGNvbnN0IEludFBvaW50JiB0b3VjaENlbnRlciwgYwogCiBi
b29sIEV2ZW50SGFuZGxlcjo6YmVzdENvbnRleHRNZW51Tm9kZUZvclRvdWNoUG9pbnQoY29uc3Qg
SW50UG9pbnQmIHRvdWNoQ2VudGVyLCBjb25zdCBJbnRTaXplJiB0b3VjaFJhZGl1cywgSW50UG9p
bnQmIHRhcmdldFBvaW50LCBOb2RlKiYgdGFyZ2V0Tm9kZSkKIHsKLSAgICBIaXRUZXN0UmVxdWVz
dDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhpdFR5cGUgPSBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkg
fCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlOwogICAgIEludFBvaW50IGhpdFRlc3RQb2ludCA9IG1f
ZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyh0b3VjaENlbnRlcik7Ci0gICAgSGl0VGVz
dFJlc3VsdCByZXN1bHQgPSBoaXRUZXN0UmVzdWx0QXRQb2ludChoaXRUZXN0UG9pbnQsIC8qYWxs
b3dTaGFkb3dDb250ZW50Ki8gdHJ1ZSwgLyppZ25vcmVDbGlwcGluZyovIGZhbHNlLCBEb250SGl0
VGVzdFNjcm9sbGJhcnMsIGhpdFR5cGUsIHRvdWNoUmFkaXVzKTsKKyAgICBIaXRUZXN0UmVzdWx0
IHJlc3VsdCA9IGhpdFRlc3RSZXN1bHRBdFBvaW50KGhpdFRlc3RQb2ludCwgSGl0VGVzdFJlcXVl
c3Q6OkRlZmF1bHQodHJ1ZSksIHRvdWNoUmFkaXVzKTsKIAogICAgIEludFJlY3QgdG91Y2hSZWN0
KHRvdWNoQ2VudGVyIC0gdG91Y2hSYWRpdXMsIHRvdWNoUmFkaXVzICsgdG91Y2hSYWRpdXMpOwog
ICAgIFJlZlB0cjxTdGF0aWNIYXNoU2V0Tm9kZUxpc3Q+IG5vZGVMaXN0ID0gU3RhdGljSGFzaFNl
dE5vZGVMaXN0OjphZG9wdChyZXN1bHQucmVjdEJhc2VkVGVzdFJlc3VsdCgpKTsKQEAgLTI1MTMs
OSArMjUwNyw4IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpiZXN0Q29udGV4dE1lbnVOb2RlRm9yVG91
Y2hQb2ludChjb25zdCBJbnRQb2ludCYgdG91Y2hDZW50ZXIsCiAKIGJvb2wgRXZlbnRIYW5kbGVy
OjpiZXN0Wm9vbWFibGVBcmVhRm9yVG91Y2hQb2ludChjb25zdCBJbnRQb2ludCYgdG91Y2hDZW50
ZXIsIGNvbnN0IEludFNpemUmIHRvdWNoUmFkaXVzLCBJbnRSZWN0JiB0YXJnZXRBcmVhLCBOb2Rl
KiYgdGFyZ2V0Tm9kZSkKIHsKLSAgICBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RUeXBl
IGhpdFR5cGUgPSBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0
aXZlOwogICAgIEludFBvaW50IGhpdFRlc3RQb2ludCA9IG1fZnJhbWUtPnZpZXcoKS0+d2luZG93
VG9Db250ZW50cyh0b3VjaENlbnRlcik7Ci0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBoaXRU
ZXN0UmVzdWx0QXRQb2ludChoaXRUZXN0UG9pbnQsIC8qYWxsb3dTaGFkb3dDb250ZW50Ki8gZmFs
c2UsIC8qaWdub3JlQ2xpcHBpbmcqLyBmYWxzZSwgRG9udEhpdFRlc3RTY3JvbGxiYXJzLCBoaXRU
eXBlLCB0b3VjaFJhZGl1cyk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBoaXRUZXN0UmVz
dWx0QXRQb2ludChoaXRUZXN0UG9pbnQsIEhpdFRlc3RSZXF1ZXN0OjpEZWZhdWx0KGZhbHNlKSwg
dG91Y2hSYWRpdXMpOwogCiAgICAgSW50UmVjdCB0b3VjaFJlY3QodG91Y2hDZW50ZXIgLSB0b3Vj
aFJhZGl1cywgdG91Y2hSYWRpdXMgKyB0b3VjaFJhZGl1cyk7CiAgICAgUmVmUHRyPFN0YXRpY0hh
c2hTZXROb2RlTGlzdD4gbm9kZUxpc3QgPSBTdGF0aWNIYXNoU2V0Tm9kZUxpc3Q6OmFkb3B0KHJl
c3VsdC5yZWN0QmFzZWRUZXN0UmVzdWx0KCkpOwpAQCAtMzU1Nyw3ICszNTUwLDcgQEAgYm9vbCBF
dmVudEhhbmRsZXI6OmhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JiBl
dmVudCkKICAgICAgICAgdW5zaWduZWQgdG91Y2hQb2ludFRhcmdldEtleSA9IHBvaW50LmlkKCkg
KyAxOwogICAgICAgICBSZWZQdHI8RXZlbnRUYXJnZXQ+IHRvdWNoVGFyZ2V0OwogICAgICAgICBp
ZiAocG9pbnRTdGF0ZSA9PSBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoUHJlc3NlZCkgewotICAg
ICAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBoaXRUZXN0UmVzdWx0QXRQb2ludChwYWdl
UG9pbnQsIC8qYWxsb3dTaGFkb3dDb250ZW50Ki8gZmFsc2UsIGZhbHNlLCBEb250SGl0VGVzdFNj
cm9sbGJhcnMsIGhpdFR5cGUpOworICAgICAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBo
aXRUZXN0UmVzdWx0QXRQb2ludChwYWdlUG9pbnQsIGhpdFR5cGUpOwogICAgICAgICAgICAgTm9k
ZSogbm9kZSA9IHJlc3VsdC5pbm5lck5vZGUoKTsKICAgICAgICAgICAgIEFTU0VSVChub2RlKTsK
IApAQCAtMzU3NSw3ICszNTY4LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVRvdWNoRXZl
bnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JiBldmVudCkKICAgICAgICAgICAgIHRvdWNoVGFy
Z2V0ID0gbm9kZTsKICAgICAgICAgfSBlbHNlIGlmIChwb2ludFN0YXRlID09IFBsYXRmb3JtVG91
Y2hQb2ludDo6VG91Y2hSZWxlYXNlZCB8fCBwb2ludFN0YXRlID09IFBsYXRmb3JtVG91Y2hQb2lu
dDo6VG91Y2hDYW5jZWxsZWQpIHsKICAgICAgICAgICAgIC8vIFdlIG9ubHkgcGVyZm9ybSBhIGhp
dHRlc3Qgb24gcmVsZWFzZSBvciBjYW5jZWwgdG8gdW5zZXQgOmFjdGl2ZSBvciA6aG92ZXIgc3Rh
dGUuCi0gICAgICAgICAgICBoaXRUZXN0UmVzdWx0QXRQb2ludChwYWdlUG9pbnQsIC8qYWxsb3dT
aGFkb3dDb250ZW50Ki8gZmFsc2UsIGZhbHNlLCBEb250SGl0VGVzdFNjcm9sbGJhcnMsIGhpdFR5
cGUpOworICAgICAgICAgICAgaGl0VGVzdFJlc3VsdEF0UG9pbnQocGFnZVBvaW50LCBoaXRUeXBl
KTsKICAgICAgICAgICAgIC8vIFRoZSB0YXJnZXQgc2hvdWxkIGJlIHRoZSBvcmlnaW5hbCB0YXJn
ZXQgZm9yIHRoaXMgdG91Y2gsIHNvIGdldCBpdCBmcm9tIHRoZSBoYXNobWFwLiBBcyBpdCdzIGEg
cmVsZWFzZSBvciBjYW5jZWwKICAgICAgICAgICAgIC8vIHdlIGFsc28gcmVtb3ZlIGl0IGZyb20g
dGhlIG1hcC4KICAgICAgICAgICAgIHRvdWNoVGFyZ2V0ID0gbV9vcmlnaW5hdGluZ1RvdWNoUG9p
bnRUYXJnZXRzLnRha2UodG91Y2hQb2ludFRhcmdldEtleSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuaAppbmRleCA2ZDhhMGFiNzY3M2E4YzhmZGZiNGM5YTk1ZGJmYzFhYWQ5NTVkNDg3Li4y
MmI1OWZjZTdiYWFhNDEwN2M2ODBiZjlmODAyNjlkNmEyODliYmRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmgKQEAgLTg4LDggKzg4LDYgQEAgZXh0ZXJuIGNvbnN0IGludCBUZXh0RHJh
Z0h5c3RlcmVzaXM7CiBleHRlcm4gY29uc3QgaW50IEdlbmVyYWxEcmFnSHlzdGVyZXNpczsKICNl
bmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQT1JUKQogCi1lbnVtIEhpdFRlc3RTY3JvbGxiYXJzIHsg
U2hvdWxkSGl0VGVzdFNjcm9sbGJhcnMsIERvbnRIaXRUZXN0U2Nyb2xsYmFycyB9OwotCiBjbGFz
cyBFdmVudEhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEV2ZW50SGFuZGxlcik7
CiBwdWJsaWM6CkBAIC0xMTUsOSArMTEzLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlzcGF0Y2hG
YWtlTW91c2VNb3ZlRXZlbnRTb29uKCk7CiAgICAgdm9pZCBkaXNwYXRjaEZha2VNb3VzZU1vdmVF
dmVudFNvb25JblF1YWQoY29uc3QgRmxvYXRRdWFkJik7CiAKLSAgICBIaXRUZXN0UmVzdWx0IGhp
dFRlc3RSZXN1bHRBdFBvaW50KGNvbnN0IExheW91dFBvaW50JiwgYm9vbCBhbGxvd1NoYWRvd0Nv
bnRlbnQsIGJvb2wgaWdub3JlQ2xpcHBpbmcgPSBmYWxzZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEhpdFRlc3RTY3JvbGxiYXJzIHNjcm9sbGJhcnMgPSBEb250SGl0
VGVzdFNjcm9sbGJhcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBI
aXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhpdFR5cGUgPSBIaXRUZXN0UmVxdWVz
dDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlLAorICAgIEhpdFRlc3RSZXN1bHQg
aGl0VGVzdFJlc3VsdEF0UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmLCBIaXRUZXN0UmVxdWVzdDo6
SGl0VGVzdFJlcXVlc3RUeXBlIGhpdFR5cGUgPSBIaXRUZXN0UmVxdWVzdDo6RGVmYXVsdChmYWxz
ZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBMYXlvdXRT
aXplJiBwYWRkaW5nID0gTGF5b3V0U2l6ZSgpKTsKIAogICAgIGJvb2wgbW91c2VQcmVzc2VkKCkg
Y29uc3QgeyByZXR1cm4gbV9tb3VzZVByZXNzZWQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXND
b250cm9sbGVyLmNwcAppbmRleCAwYjk0MThiYTMyYmI5YzRjNTdiZDYyNTQ1NWQ4MjBiYzg5ZGMx
YTAxLi5hMTJhMDQ1NzFlN2UyMDIzM2IxZDI4YTJiNzZlMTM3YWJmNmQ2NDQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCkBAIC03NDUsNyArNzQ1LDcgQEAgc3RhdGlj
IHZvaWQgdXBkYXRlRm9jdXNDYW5kaWRhdGVJZk5lZWRlZChGb2N1c0RpcmVjdGlvbiBkaXJlY3Rp
b24sIGNvbnN0IEZvY3VzQ2EKICAgICAgICAgLy8gSWYgMiBub2RlcyBhcmUgaW50ZXJzZWN0aW5n
LCBkbyBoaXQgdGVzdCB0byBmaW5kIHdoaWNoIG5vZGUgaW4gb24gdG9wLgogICAgICAgICBMYXlv
dXRVbml0IHggPSBpbnRlcnNlY3Rpb25SZWN0LngoKSArIGludGVyc2VjdGlvblJlY3Qud2lkdGgo
KSAvIDI7CiAgICAgICAgIExheW91dFVuaXQgeSA9IGludGVyc2VjdGlvblJlY3QueSgpICsgaW50
ZXJzZWN0aW9uUmVjdC5oZWlnaHQoKSAvIDI7Ci0gICAgICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0
ID0gY2FuZGlkYXRlLnZpc2libGVOb2RlLT5kb2N1bWVudCgpLT5wYWdlKCktPm1haW5GcmFtZSgp
LT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoSW50UG9pbnQoeCwgeSksIGZh
bHNlLCB0cnVlKTsKKyAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBjYW5kaWRhdGUudmlz
aWJsZU5vZGUtPmRvY3VtZW50KCktPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigp
LT5oaXRUZXN0UmVzdWx0QXRQb2ludChJbnRQb2ludCh4LCB5KSwgSGl0VGVzdFJlcXVlc3Q6OkRl
ZmF1bHQoZmFsc2UsIHRydWUpKTsKICAgICAgICAgaWYgKGNhbmRpZGF0ZS52aXNpYmxlTm9kZS0+
Y29udGFpbnMocmVzdWx0LmlubmVyTm9kZSgpKSkgewogICAgICAgICAgICAgY2xvc2VzdCA9IGNh
bmRpZGF0ZTsKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggYjM2
NDhmNTI0NzAxOWRjMjlkM2RmNTUxMWQ5Mjg2YmI4OGExMTFhZS4uODQ3MjNmM2U4Y2U5YTFiZDBm
MDg1MDIzNGMyOTMwNTYzOGEwNmU5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTcyNCw3ICs3
MjQsNyBAQCBTdHJpbmcgRnJhbWU6OmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2RpbmcoY29u
c3QgU3RyaW5nJiBzdHIpIGNvbnN0CiAKIFZpc2libGVQb3NpdGlvbiBGcmFtZTo6dmlzaWJsZVBv
c2l0aW9uRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIGZyYW1lUG9pbnQpCiB7Ci0gICAgSGl0VGVz
dFJlc3VsdCByZXN1bHQgPSBldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoZnJh
bWVQb2ludCwgdHJ1ZSk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBldmVudEhhbmRsZXIo
KS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoZnJhbWVQb2ludCwgSGl0VGVzdFJlcXVlc3Q6OkRlZmF1
bHQodHJ1ZSkpOwogICAgIE5vZGUqIG5vZGUgPSByZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCk7
CiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7CkBAIC03
NDYsNyArNzQ2LDcgQEAgRG9jdW1lbnQqIEZyYW1lOjpkb2N1bWVudEF0UG9pbnQoY29uc3QgSW50
UG9pbnQmIHBvaW50KQogICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gSGl0VGVzdFJlc3VsdChw
dCk7CiAKICAgICBpZiAoY29udGVudFJlbmRlcmVyKCkpCi0gICAgICAgIHJlc3VsdCA9IGV2ZW50
SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChwdCwgZmFsc2UpOworICAgICAgICByZXN1
bHQgPSBldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQocHQpOwogICAgIHJldHVy
biByZXN1bHQuaW5uZXJOb2RlKCkgPyByZXN1bHQuaW5uZXJOb2RlKCktPmRvY3VtZW50KCkgOiAw
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoRGlzYW1iaWd1YXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Ub3VjaERpc2FtYmlndWF0aW9uLmNwcAppbmRl
eCA1ZWZlM2RiNDkxNDA1ZTczNjFkNzZiNzdlZmIxMWVhNzM0MDZmMTdlLi43MzJkZGE0YjQyMTky
MDZjMmQzNzkxNjE0YmMzYjU0OGIzM2RhZWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1RvdWNoRGlzYW1iaWd1YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVG91
Y2hEaXNhbWJpZ3VhdGlvbi5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBmaW5kR29vZFRvdWNo
VGFyZ2V0cyhjb25zdCBJbnRSZWN0JiB0b3VjaEJveCwgRnJhbWUqIG1haW5GcmFtZSwgZmxvYXQg
cGFnZVMKICAgICBJbnRQb2ludCB0b3VjaFBvaW50ID0gdG91Y2hCb3guY2VudGVyKCk7CiAgICAg
SW50UG9pbnQgY29udGVudHNQb2ludCA9IG1haW5GcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRl
bnRzKHRvdWNoUG9pbnQpOwogCi0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBtYWluRnJhbWUt
PmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChjb250ZW50c1BvaW50LCBmYWxz
ZSwgZmFsc2UsIERvbnRIaXRUZXN0U2Nyb2xsYmFycywgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8
IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSwgSW50U2l6ZShwYWRkaW5nLCBwYWRkaW5nKSk7Cisg
ICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBtYWluRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRU
ZXN0UmVzdWx0QXRQb2ludChjb250ZW50c1BvaW50LCBIaXRUZXN0UmVxdWVzdDo6RGVmYXVsdChm
YWxzZSksIEludFNpemUocGFkZGluZywgcGFkZGluZykpOwogICAgIGNvbnN0IExpc3RIYXNoU2V0
PFJlZlB0cjxOb2RlPiA+JiBoaXRSZXN1bHRzID0gcmVzdWx0LnJlY3RCYXNlZFRlc3RSZXN1bHQo
KTsKIAogICAgIEhhc2hNYXA8Tm9kZSosIFRvdWNoVGFyZ2V0RGF0YT4gdG91Y2hUYXJnZXRzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXF1ZXN0LmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlcXVlc3QuaAppbmRleCAzZmFmODhhOWY5
MTM3NjFlYzAxM2Q2ZTdkMmNkZGFmMzJmODRkNzlmLi4yMWM5NjFkMWRiNDljYmY5MTk3MjFkNDBl
OTJlY2NhM2JjZGQzZjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0
VGVzdFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlcXVl
c3QuaApAQCAtNDgsNiArNDgsMTYgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKKyAgICBzdGF0
aWMgSGl0VGVzdFJlcXVlc3RUeXBlIERlZmF1bHQoYm9vbCBhbGxvd1NoYWRvd0NvbnRlbnQsIGJv
b2wgaWdub3JlQ2xpcHBpbmcgPSBmYWxzZSkKKyAgICB7CisgICAgICAgIEhpdFRlc3RSZXF1ZXN0
VHlwZSB0eXBlKFJlYWRPbmx5IHwgQWN0aXZlKTsKKyAgICAgICAgaWYgKGFsbG93U2hhZG93Q29u
dGVudCkKKyAgICAgICAgICAgIHR5cGUgfD0gQWxsb3dTaGFkb3dDb250ZW50OworICAgICAgICBp
ZiAoaWdub3JlQ2xpcHBpbmcpCisgICAgICAgICAgICB0eXBlIHw9IElnbm9yZUNsaXBwaW5nOwor
ICAgICAgICByZXR1cm4gdHlwZTsKKyAgICB9CisKICAgICBib29sIHJlYWRPbmx5KCkgY29uc3Qg
eyByZXR1cm4gbV9yZXF1ZXN0VHlwZSAmIFJlYWRPbmx5OyB9CiAgICAgYm9vbCBhY3RpdmUoKSBj
b25zdCB7IHJldHVybiBtX3JlcXVlc3RUeXBlICYgQWN0aXZlOyB9CiAgICAgYm9vbCBtb3ZlKCkg
Y29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0VHlwZSAmIE1vdmU7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcAppbmRleCBkMDNmMDNjMGJjNTYxOWUyNDMyZTdkOGQ2NjQ4ZTM4ZTEwZTdl
NWVhLi4zY2RmN2JiNjI0NTcyZmMyODExYTBiZWYxZTBiNWM1MGVlMjEwOTFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC05NzIsOCArOTcyLDExIEBAIFBhc3NSZWZQdHI8
Tm9kZUxpc3Q+IEludGVybmFsczo6bm9kZXNGcm9tUmVjdChEb2N1bWVudCogZG9jdW1lbnQsIGlu
dCB4LCBpbnQgeSwKICAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CiAgICAgICAgIHJl
dHVybiAwOwogICAgIH0KKyAgICBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhp
dFR5cGUgPSBIaXRUZXN0UmVxdWVzdDo6RGVmYXVsdChhbGxvd1NoYWRvd0NvbnRlbnQsIGlnbm9y
ZUNsaXBwaW5nKTsKKyAgICBpZiAoYWxsb3dDaGlsZEZyYW1lQ29udGVudCkKKyAgICAgICAgaGl0
VHlwZSB8PSBIaXRUZXN0UmVxdWVzdDo6QWxsb3dDaGlsZEZyYW1lQ29udGVudDsKIAotICAgIHJl
dHVybiBkb2N1bWVudC0+bm9kZXNGcm9tUmVjdCh4LCB5LCB0b3BQYWRkaW5nLCByaWdodFBhZGRp
bmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nLCBpZ25vcmVDbGlwcGluZywgYWxsb3dTaGFk
b3dDb250ZW50LCBhbGxvd0NoaWxkRnJhbWVDb250ZW50KTsKKyAgICByZXR1cm4gZG9jdW1lbnQt
Pm5vZGVzRnJvbVJlY3QoeCwgeSwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRk
aW5nLCBsZWZ0UGFkZGluZywgaGl0VHlwZSk7CiB9CiAKIHZvaWQgSW50ZXJuYWxzOjplbWl0SW5z
cGVjdG9yRGlkQmVnaW5GcmFtZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvQXBpL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdl
LmNwcAppbmRleCBkNWQ3ZDI2ZWMyYjdkZjliMTM2NGNhNzNjMGE4YmIyZjM5NmMyNDNlLi4yOTNm
ZGUzYmE5ODAxN2FhMzlkZTgxYjgwMzRlYWVlNmZmZDNjMTAwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAKQEAgLTI3NDYsNyArMjc0Niw3IEBAIFBhc3NSZWZQdHI8
Tm9kZT4gV2ViUGFnZVByaXZhdGU6OmNvbnRleHROb2RlKFRhcmdldERldGVjdGlvblN0cmF0ZWd5
IHN0cmF0ZWd5KQogICAgICAgICByZXR1cm4gcmVzdWx0Lm5vZGUoRmF0RmluZ2Vyc1Jlc3VsdDo6
U2hhZG93Q29udGVudE5vdEFsbG93ZWQpOwogICAgIH0KIAotICAgIEhpdFRlc3RSZXN1bHQgcmVz
dWx0ID0gZXZlbnRIYW5kbGVyLT5oaXRUZXN0UmVzdWx0QXRQb2ludChjb250ZW50UG9zLCBmYWxz
ZSAvKmFsbG93U2hhZG93Q29udGVudCovKTsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGV2
ZW50SGFuZGxlci0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoY29udGVudFBvcyk7CiAgICAgcmV0dXJu
IHJlc3VsdC5pbm5lck5vZGUoKTsKIH0KIApAQCAtMjgxOCw3ICsyODE4LDcgQEAgTm9kZSogV2Vi
UGFnZVByaXZhdGU6Om5vZGVGb3Jab29tVW5kZXJQb2ludChjb25zdCBJbnRQb2ludCYgcG9pbnQp
CiAgICAgaWYgKCFtX21haW5GcmFtZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBIaXRUZXN0
UmVzdWx0IHJlc3VsdCA9IG1fbWFpbkZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3Vs
dEF0UG9pbnQobWFwRnJvbVRyYW5zZm9ybWVkKHBvaW50KSwgZmFsc2UpOworICAgIEhpdFRlc3RS
ZXN1bHQgcmVzdWx0ID0gbV9tYWluRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0
QXRQb2ludChtYXBGcm9tVHJhbnNmb3JtZWQocG9pbnQpKTsKIAogICAgIE5vZGUqIG5vZGUgPSBy
ZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCk7CiAKQEAgLTQwMjcsNyArNDAyNyw3IEBAIGJvb2wg
V2ViUGFnZVByaXZhdGU6OmhhbmRsZU1vdXNlRXZlbnQoUGxhdGZvcm1Nb3VzZUV2ZW50JiBtb3Vz
ZUV2ZW50KQogICAgIH0KIAogICAgIGlmICghbm9kZSkgewotICAgICAgICBIaXRUZXN0UmVzdWx0
IHJlc3VsdCA9IGV2ZW50SGFuZGxlci0+aGl0VGVzdFJlc3VsdEF0UG9pbnQobWFwRnJvbVZpZXdw
b3J0VG9Db250ZW50cyhtb3VzZUV2ZW50LnBvc2l0aW9uKCkpLCBmYWxzZSAvKmFsbG93U2hhZG93
Q29udGVudCovKTsKKyAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBldmVudEhhbmRsZXIt
PmhpdFRlc3RSZXN1bHRBdFBvaW50KG1hcEZyb21WaWV3cG9ydFRvQ29udGVudHMobW91c2VFdmVu
dC5wb3NpdGlvbigpKSk7CiAgICAgICAgIG5vZGUgPSByZXN1bHQuaW5uZXJOb2RlKCk7CiAgICAg
fQogCkBAIC01MTkwLDcgKzUxOTAsNyBAQCBXZWJET01Eb2N1bWVudCBXZWJQYWdlOjpkb2N1bWVu
dCgpIGNvbnN0CiAKIFdlYkRPTU5vZGUgV2ViUGFnZTo6bm9kZUF0UG9pbnQoaW50IHgsIGludCB5
KQogewotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZC0+bV9tYWluRnJhbWUtPmV2ZW50SGFu
ZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChkLT5tYXBGcm9tVHJhbnNmb3JtZWQoSW50UG9p
bnQoeCwgeSkpLCBmYWxzZSk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBkLT5tX21haW5G
cmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGQtPm1hcEZyb21UcmFu
c2Zvcm1lZChJbnRQb2ludCh4LCB5KSkpOwogICAgIE5vZGUqIG5vZGUgPSByZXN1bHQuaW5uZXJO
b25TaGFyZWROb2RlKCk7CiAgICAgcmV0dXJuIFdlYkRPTU5vZGUobm9kZSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9GYXRGaW5nZXJzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0ZhdEZpbmdlcnMuY3Bw
CmluZGV4IDM4MWU3YTFlY2YxMzA0NTVjZjM2M2I1N2EzMDEyOWZlY2UwZDdhNjguLmZmM2M4MGRl
YWNhYTkzYTcyOTgzNjA2N2RjZDQ3MTg5Mjk3NGRjNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0ZhdEZpbmdlcnMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0ZhdEZpbmdlcnMuY3BwCkBAIC00OTEsMTEg
KzQ5MSwxMCBAQCB2b2lkIEZhdEZpbmdlcnM6OmdldE5vZGVzRnJvbVJlY3QoRG9jdW1lbnQqIGRv
Y3VtZW50LCBjb25zdCBJbnRQb2ludCYgY29udGVudFBvcwogICAgIHVuc2lnbmVkIHRvcFBhZGRp
bmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmc7CiAgICAgZ2V0UGFk
ZGluZ3ModG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0UGFkZGlu
Zyk7CiAKLSAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25s
eSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6SWdub3JlQ2xpcHBp
bmcpOwogICAgIC8vIFRoZSB1c2VyIGZ1bmN0aW9ucyBjaGVja0ZvclRleHQoKSBhbmQgZmluZElu
dGVyc2VjdGluZ1JlZ2lvbnMoKSB1c2VzIHRoZSBOb2RlLndob2xlVGV4dCgpIHRvIGNoZWNrRmlu
Z2VySW50ZXJzZWN0aW9uKCkKICAgICAvLyBub3QgdGhlIHRleHQgaW4gaXRzIHNoYWRvdyB0cmVl
LgotICAgIFNoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3kgYWxsb3dTaGFkb3cgPSBtX3RhcmdldFR5
cGUgPT0gVGV4dCA/IERvTm90QWxsb3dTaGFkb3dDb250ZW50IDogQWxsb3dTaGFkb3dDb250ZW50
OwotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KGNvbnRlbnRQb3MsIHRvcFBhZGRpbmcsIHJpZ2h0
UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcsIGFsbG93U2hhZG93KTsKKyAgICBI
aXRUZXN0UmVxdWVzdCByZXF1ZXN0ID0gSGl0VGVzdFJlcXVlc3Q6OkRlZmF1bHQobV90YXJnZXRU
eXBlICE9IFRleHQsIHRydWUpOworICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KGNvbnRlbnRQb3Ms
IHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcpOwog
CiAgICAgZG9jdW1lbnQtPnJlbmRlclZpZXcoKS0+bGF5ZXIoKS0+aGl0VGVzdChyZXF1ZXN0LCBy
ZXN1bHQpOwogICAgIGludGVyc2VjdGVkTm9kZXMgPSByZXN1bHQucmVjdEJhc2VkVGVzdFJlc3Vs
dCgpOwpAQCAtNTEwLDcgKzUwOSw3IEBAIHZvaWQgRmF0RmluZ2Vyczo6Z2V0UmVsZXZhbnRJbmZv
RnJvbVBvaW50KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgSW50UG9pbnQmIGNvCiAgICAgaWYg
KCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPnJlbmRlcmVyKCkgfHwgIWRvY3VtZW50LT5mcmFtZSgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCAgPSBkb2N1bWVu
dC0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGNvbnRlbnRQ
b3MsIHRydWUgLyphbGxvd1NoYWRvd0NvbnRlbnQqLyk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1
bHQgID0gZG9jdW1lbnQtPmZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQ
b2ludChjb250ZW50UG9zLCBIaXRUZXN0UmVxdWVzdDo6RGVmYXVsdCh0cnVlIC8qYWxsb3dTaGFk
b3dDb250ZW50Ki8pKTsKICAgICBOb2RlKiBub2RlID0gcmVzdWx0LmlubmVyTm9kZSgpOwogICAg
IHdoaWxlIChub2RlICYmICFub2RlLT5pc0VsZW1lbnROb2RlKCkpCiAgICAgICAgIG5vZGUgPSBu
b2RlLT5wYXJlbnROb2RlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
V2ViS2l0U3VwcG9ydC9TZWxlY3Rpb25IYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9XZWJLaXRTdXBwb3J0L1NlbGVjdGlvbkhhbmRsZXIuY3BwCmluZGV4IDNiMDQyNDdiZWNm
ZGJiN2MyNmM0ZTljMDQ2MTVjZGYxYzIzZmZkZWIuLmE3YTM5YmFhOWY0MzVkMjZjZjA1ZWIwYmEy
ODgwYWVlMTRlODM1YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJL
aXRTdXBwb3J0L1NlbGVjdGlvbkhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9XZWJLaXRTdXBwb3J0L1NlbGVjdGlvbkhhbmRsZXIuY3BwCkBAIC0xNTksNyArMTU5LDcg
QEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JQb2ludElnbm9yaW5n
Q2xpcHBpbmcoY29uc3QgRnJhbWUmIGZyYW0KICAgICAvLyBvdXRzaWRlIHRoZSB2aXNpYmxlIHJl
Y3QuIFRvIHdvcmsgYXJvdW5kIHRoZSBidWcsIHRoaXMgaXMgYSBjb3B5IG9mCiAgICAgLy8gdmlz
aWJsZVBvc2l0aW9uQXRQb2ludCB3aGljaCB3aGljaCBwYXNzZXMgaWdub3JlQ2xpcHBpbmc9dHJ1
ZS4KICAgICAvLyBTZWUgUklNIEJ1ZyAjNDMxNS4KLSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9
IGZyYW1lLmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChmcmFtZVBvaW50LCB0
cnVlIC8qIGFsbG93U2hhZG93Q29udGVudCAqLywgdHJ1ZSAvKiBpZ25vcmVDbGlwcGluZyAqLyk7
CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBmcmFtZS5ldmVudEhhbmRsZXIoKS0+aGl0VGVz
dFJlc3VsdEF0UG9pbnQoZnJhbWVQb2ludCwgSGl0VGVzdFJlcXVlc3Q6OkRlZmF1bHQodHJ1ZSAv
KiBhbGxvd1NoYWRvd0NvbnRlbnQgKi8sIHRydWUgLyogaWdub3JlQ2xpcHBpbmcgKi8pKTsKIAog
ICAgIE5vZGUqIG5vZGUgPSByZXN1bHQuaW5uZXJOb2RlKCk7CiAgICAgaWYgKCFub2RlIHx8IG5v
ZGUtPmRvY3VtZW50KCkgIT0gZnJhbWUuZG9jdW1lbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0NvbnRleHRNZW51Q2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9Db250ZXh0TWVudUNsaWVudEltcGwuY3BwCmluZGV4IGFkYWE0MTM5
MmQyYTE3YjY0NDkzYjI0ZWNlYjhjNzk4M2UzZWQ0YjEuLjNjMzEyYjExMGNjNmIzZjJhNzNhYmQz
M2Q1YzcyNDlmMzk1NmQzODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0NvbnRleHRNZW51Q2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvQ29udGV4dE1lbnVDbGllbnRJbXBsLmNwcApAQCAtMTIyLDcgKzEyMiw3IEBAIHN0YXRpYyBT
dHJpbmcgc2VsZWN0TWlzc3BlbGxlZFdvcmQoY29uc3QgQ29udGV4dE1lbnUqIGRlZmF1bHRNZW51
LCBGcmFtZSogc2VsZWN0CiAKICAgICAvLyBTZWxlY3Rpb24gaXMgZW1wdHksIHNvIGNoYW5nZSB0
aGUgc2VsZWN0aW9uIHRvIHRoZSB3b3JkIHVuZGVyIHRoZSBjdXJzb3IuCiAgICAgSGl0VGVzdFJl
c3VsdCBoaXRUZXN0UmVzdWx0ID0gc2VsZWN0ZWRGcmFtZS0+ZXZlbnRIYW5kbGVyKCktPgotICAg
ICAgICBoaXRUZXN0UmVzdWx0QXRQb2ludChzZWxlY3RlZEZyYW1lLT5wYWdlKCktPmNvbnRleHRN
ZW51Q29udHJvbGxlcigpLT5oaXRUZXN0UmVzdWx0KCkucG9pbnQoKSwgdHJ1ZSk7CisgICAgICAg
IGhpdFRlc3RSZXN1bHRBdFBvaW50KHNlbGVjdGVkRnJhbWUtPnBhZ2UoKS0+Y29udGV4dE1lbnVD
b250cm9sbGVyKCktPmhpdFRlc3RSZXN1bHQoKS5wb2ludCgpLCBIaXRUZXN0UmVxdWVzdDo6RGVm
YXVsdCh0cnVlKSk7CiAgICAgTm9kZSogaW5uZXJOb2RlID0gaGl0VGVzdFJlc3VsdC5pbm5lck5v
ZGUoKTsKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zKGlubmVyTm9kZS0+cmVuZGVyZXIoKS0+cG9z
aXRpb25Gb3JQb2ludCgKICAgICAgICAgaGl0VGVzdFJlc3VsdC5sb2NhbFBvaW50KCkpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1w
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwu
Y3BwCmluZGV4IDVkZDAyYjU2M2QwOTEzMmRjY2ExMmViYzEzZDM3YWQ2NWQ2MDA5YTIuLmM5OWJk
N2M1NzI1M2IyYjZlYWRlMDBhNWM1YWUyNmVkNmE2MzY3OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcApAQCAtOTk3LDgg
Kzk5Nyw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24oCiAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LT5pc01vdXNl
RXZlbnQoKSkgewogICAgICAgICAgICAgICAgICAgICBjb25zdCBNb3VzZUV2ZW50KiBtb3VzZUV2
ZW50ID0KICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IE1vdXNlRXZl
bnQqPihldmVudCk7Ci0gICAgICAgICAgICAgICAgICAgIG5vZGUgPSBtX3dlYkZyYW1lLT5mcmFt
ZSgpLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoCi0gICAgICAgICAgICAg
ICAgICAgICAgICBtb3VzZUV2ZW50LT5hYnNvbHV0ZUxvY2F0aW9uKCksIGZhbHNlKS5pbm5lck5v
blNoYXJlZE5vZGUoKTsKKyAgICAgICAgICAgICAgICAgICAgbm9kZSA9IG1fd2ViRnJhbWUtPmZy
YW1lKCktPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChtb3VzZUV2ZW50LT5h
YnNvbHV0ZUxvY2F0aW9uKCkpLmlubmVyTm9uU2hhcmVkTm9kZSgpOwogICAgICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAppbmRleCBlYjNhZWY3NzVjYWU1N2Q0
NjRiYTQzM2FmYzBmNDc3MzRlNmM5ZmUzLi5hNmQ4ODU2MWEzNDNhN2JjZDZiZWYzMDdlOWM5NjIz
ZjA2MDdhNDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFt
ZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5j
cHAKQEAgLTEyNjIsNyArMTI2Miw3IEBAIHNpemVfdCBXZWJGcmFtZUltcGw6OmNoYXJhY3Rlcklu
ZGV4Rm9yUG9pbnQoY29uc3QgV2ViUG9pbnQmIHdlYlBvaW50KSBjb25zdAogICAgICAgICByZXR1
cm4gbm90Rm91bmQ7CiAKICAgICBJbnRQb2ludCBwb2ludCA9IGZyYW1lKCktPnZpZXcoKS0+d2lu
ZG93VG9Db250ZW50cyh3ZWJQb2ludCk7Ci0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBmcmFt
ZSgpLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQocG9pbnQsIGZhbHNlKTsK
KyAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oaXRU
ZXN0UmVzdWx0QXRQb2ludChwb2ludCk7CiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IGZyYW1l
KCktPnJhbmdlRm9yUG9pbnQocmVzdWx0LnJvdW5kZWRQb2ludCgpKTsKICAgICBpZiAoIXJhbmdl
KQogICAgICAgICByZXR1cm4gbm90Rm91bmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwCmluZGV4IGZlOTlhYjg0NDViMTI3
MmIyM2M2N2ZmNDc2YTk2MWI3MjFkYzY3NjcuLjkzYzAyYzliOThkMWVhYjE3OTk0NmZiNWE4YjEw
MGM5NTdkYTliODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBs
dWdpbkNvbnRhaW5lckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlBsdWdpbkNvbnRhaW5lckltcGwuY3BwCkBAIC01MTMsNyArNTEzLDcgQEAgYm9vbCBXZWJQbHVn
aW5Db250YWluZXJJbXBsOjppc1JlY3RUb3Btb3N0KGNvbnN0IFdlYlJlY3QmIHJlY3QpCiAgICAg
TGF5b3V0UG9pbnQgY2VudGVyID0gZG9jdW1lbnRSZWN0LmNlbnRlcigpOwogICAgIC8vIE1ha2Ug
dGhlIHJlY3Qgd2UncmUgY2hlY2tpbmcgKHRoZSBwb2ludCBzdXJyb3VuZGVkIGJ5IHBhZGRpbmcg
cmVjdHMpIGNvbnRhaW5lZCBpbnNpZGUgdGhlIHJlcXVlc3RlZCByZWN0LiAoTm90ZSB0aGF0IC0x
LzIgaXMgMC4pCiAgICAgTGF5b3V0U2l6ZSBwYWRkaW5nKChkb2N1bWVudFJlY3Qud2lkdGgoKSAt
IDEpIC8gMiwgKGRvY3VtZW50UmVjdC5oZWlnaHQoKSAtIDEpIC8gMik7Ci0gICAgSGl0VGVzdFJl
c3VsdCByZXN1bHQgPSBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50
KGNlbnRlciwgZmFsc2UsIGZhbHNlLCBEb250SGl0VGVzdFNjcm9sbGJhcnMsIEhpdFRlc3RSZXF1
ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUsIHBhZGRpbmcpOworICAgIEhp
dFRlc3RSZXN1bHQgcmVzdWx0ID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0
QXRQb2ludChjZW50ZXIsIEhpdFRlc3RSZXF1ZXN0OjpEZWZhdWx0KGZhbHNlKSwgcGFkZGluZyk7
CiAgICAgY29uc3QgSGl0VGVzdFJlc3VsdDo6Tm9kZVNldCYgbm9kZXMgPSByZXN1bHQucmVjdEJh
c2VkVGVzdFJlc3VsdCgpOwogICAgIGlmIChub2Rlcy5zaXplKCkgIT0gMSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmlu
ZGV4IDJjNDg3YjgwNWQ4NjgzNzFkZWJiOTEyNThhZGI3NGMyNTI2Nzk0NjcuLjVkYWFiNTBmNzZk
YmRjNzBiMDc5NjU4NDVmNGUxZTUxOTA4N2Q0M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTYzOCw3ICs2MzgsNyBAQCB2b2lkIFdlYlZpZXdJbXBs
OjpoYW5kbGVNb3VzZVVwKEZyYW1lJiBtYWluRnJhbWUsIGNvbnN0IFdlYk1vdXNlRXZlbnQmIGV2
ZW50KQogICAgICAgICBGcmFtZVZpZXcqIHZpZXcgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3
KCk7CiAgICAgICAgIEludFBvaW50IGNsaWNrUG9pbnQobV9sYXN0TW91c2VEb3duUG9pbnQueCwg
bV9sYXN0TW91c2VEb3duUG9pbnQueSk7CiAgICAgICAgIEludFBvaW50IGNvbnRlbnRQb2ludCA9
IHZpZXctPndpbmRvd1RvQ29udGVudHMoY2xpY2tQb2ludCk7Ci0gICAgICAgIEhpdFRlc3RSZXN1
bHQgaGl0VGVzdFJlc3VsdCA9IGZvY3VzZWQtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0
QXRQb2ludChjb250ZW50UG9pbnQsIGZhbHNlLCBmYWxzZSwgU2hvdWxkSGl0VGVzdFNjcm9sbGJh
cnMpOworICAgICAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3RSZXN1bHQgPSBmb2N1c2VkLT5ldmVu
dEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoY29udGVudFBvaW50LCBIaXRUZXN0UmVx
dWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6
OlRlc3RDaGlsZEZyYW1lU2Nyb2xsQmFycyk7CiAgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8g
c2VuZCBhIHBhc3RlIHdoZW4gbWlkZGxlIGNsaWNraW5nIGEgc2Nyb2xsIGJhciBvciBhCiAgICAg
ICAgIC8vIGxpbmsgKHdoaWNoIHdpbGwgbmF2aWdhdGUgbGF0ZXIgaW4gdGhlIGNvZGUpLiAgVGhl
IG1haW4gc2Nyb2xsYmFycwogICAgICAgICAvLyBoYXZlIHRvIGJlIGhhbmRsZWQgc2VwYXJhdGVs
eS4KQEAgLTEwMDUsOSArMTAwNSw3IEBAIFdlYlJlY3QgV2ViVmlld0ltcGw6OmNvbXB1dGVCbG9j
a0JvdW5kcyhjb25zdCBXZWJSZWN0JiByZWN0LCBBdXRvWm9vbVR5cGUgem9vbVR5CiAKICAgICAv
LyBVc2UgdGhlIHJlY3QtYmFzZWQgaGl0IHRlc3QgdG8gZmluZCB0aGUgbm9kZS4KICAgICBJbnRQ
b2ludCBwb2ludCA9IG1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCktPndpbmRvd1RvQ29udGVu
dHMoSW50UG9pbnQocmVjdC54LCByZWN0LnkpKTsKLSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9
IG1haW5GcmFtZUltcGwoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRB
dFBvaW50KHBvaW50LAotICAgICAgICAgICAgZmFsc2UsIHpvb21UeXBlID09IEZpbmRJblBhZ2Us
IERvbnRIaXRUZXN0U2Nyb2xsYmFycywgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RS
ZXF1ZXN0OjpSZWFkT25seSwKLSAgICAgICAgICAgIEludFNpemUocmVjdC53aWR0aCwgcmVjdC5o
ZWlnaHQpKTsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IG1haW5GcmFtZUltcGwoKS0+ZnJh
bWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KHBvaW50LCBIaXRUZXN0
UmVxdWVzdDo6RGVmYXVsdChmYWxzZSwgem9vbVR5cGUgPT0gRmluZEluUGFnZSksIEludFNpemUo
cmVjdC53aWR0aCwgcmVjdC5oZWlnaHQpKTsKIAogICAgIE5vZGUqIG5vZGUgPSByZXN1bHQuaW5u
ZXJOb25TaGFyZWROb2RlKCk7CiAgICAgaWYgKCFub2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFt
ZS5jcHAKaW5kZXggYWRiZmExY2NkZTRmYTc0NTVlMGI2YmM3NWJiMTM3YTVmZjRhY2FiMy4uZmNl
ZGI2ZTdmYjdkNTVlMjIxYmRhMmFhNDg2ZGJmMGI1OGM0ODcwYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9x
d2ViZnJhbWUuY3BwCkBAIC0xNDA2LDcgKzE0MDYsNyBAQCBRV2ViSGl0VGVzdFJlc3VsdCBRV2Vi
RnJhbWU6OmhpdFRlc3RDb250ZW50KGNvbnN0IFFQb2ludCAmcG9zKSBjb25zdAogICAgIGlmICgh
ZC0+ZnJhbWUtPnZpZXcoKSB8fCAhZC0+ZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpKQogICAgICAg
ICByZXR1cm4gUVdlYkhpdFRlc3RSZXN1bHQoKTsKIAotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0
ID0gZC0+ZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChkLT5mcmFt
ZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHBvcyksIC8qYWxsb3dTaGFkb3dDb250ZW50Ki8g
ZmFsc2UsIC8qaWdub3JlQ2xpcHBpbmcqLyB0cnVlKTsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3Vs
dCA9IGQtPmZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoZC0+ZnJh
bWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhwb3MpLCBIaXRUZXN0UmVxdWVzdDo6RGVmYXVs
dCgvKmFsbG93U2hhZG93Q29udGVudCovIGZhbHNlLCAvKmlnbm9yZUNsaXBwaW5nKi8gdHJ1ZSkp
OwogCiAgICAgaWYgKHJlc3VsdC5zY3JvbGxiYXIoKSkKICAgICAgICAgcmV0dXJuIFFXZWJIaXRU
ZXN0UmVzdWx0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKaW5kZXggMDhlODYxODNhNmI2
ZWE0NDA4N2VmMjQ3MWZkOTAwMmQ0YjYwNDBmNC4uMjk2MjhmNTk4N2NlOWUxODA3MzkyY2RmODdj
NWY2Njc2ZGY3OWM5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcApAQCAtODA4LDcgKzgw
OCw3IEBAIHZvaWQgUVdlYlBhZ2VQcml2YXRlOjpoYW5kbGVTb2Z0d2FyZUlucHV0UGFuZWwoUXQ6
Ok1vdXNlQnV0dG9uIGJ1dHRvbiwgY29uc3QgUVBvCiAgICAgICAgIFFTdHlsZTo6UmVxdWVzdFNv
ZnR3YXJlSW5wdXRQYW5lbCBiZWhhdmlvciA9IFFTdHlsZTo6UmVxdWVzdFNvZnR3YXJlSW5wdXRQ
YW5lbCgKICAgICAgICAgICAgIGNsaWVudC0+b3duZXJXaWRnZXQoKS0+c3R5bGUoKS0+c3R5bGVI
aW50KFFTdHlsZTo6U0hfUmVxdWVzdFNvZnR3YXJlSW5wdXRQYW5lbCkpOwogICAgICAgICBpZiAo
IWNsaWNrQ2F1c2VkRm9jdXMgfHwgYmVoYXZpb3IgPT0gUVN0eWxlOjpSU0lQX09uTW91c2VDbGlj
aykgewotICAgICAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBmcmFtZS0+ZXZlbnRIYW5k
bGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVu
dHMocG9zKSwgZmFsc2UpOworICAgICAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBmcmFt
ZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGZyYW1lLT52aWV3KCktPndp
bmRvd1RvQ29udGVudHMocG9zKSk7CiAgICAgICAgICAgICBpZiAocmVzdWx0LmlzQ29udGVudEVk
aXRhYmxlKCkpIHsKICAgICAgICAgICAgICAgICBRRXZlbnQgZXZlbnQoUUV2ZW50OjpSZXF1ZXN0
U29mdHdhcmVJbnB1dFBhbmVsKTsKICAgICAgICAgICAgICAgICBRQXBwbGljYXRpb246OnNlbmRF
dmVudChjbGllbnQtPm93bmVyV2lkZ2V0KCksICZldmVudCk7CkBAIC0xNTY1LDcgKzE1NjUsNyBA
QCBJbnRQb2ludCBRV2ViUGFnZVByaXZhdGU6OlRvdWNoQWRqdXN0ZXI6OmZpbmRDYW5kaWRhdGVQ
b2ludEZvclRvdWNoKGNvbnN0IEludFBvaQogICAgIGludCB4ID0gdG91Y2hQb2ludC54KCk7CiAg
ICAgaW50IHkgPSB0b3VjaFBvaW50LnkoKTsKIAotICAgIFJlZlB0cjxOb2RlTGlzdD4gaW50ZXJz
ZWN0ZWROb2RlcyA9IGRvY3VtZW50LT5ub2Rlc0Zyb21SZWN0KHgsIHksIG1fdG9wUGFkZGluZywg
bV9yaWdodFBhZGRpbmcsIG1fYm90dG9tUGFkZGluZywgbV9sZWZ0UGFkZGluZywgZmFsc2UgLypp
Z25vcmVDbGlwcGluZyovLCBmYWxzZSAvKmFsbG93U2hhZG93Q29udGVudCovKTsKKyAgICBSZWZQ
dHI8Tm9kZUxpc3Q+IGludGVyc2VjdGVkTm9kZXMgPSBkb2N1bWVudC0+bm9kZXNGcm9tUmVjdCh4
LCB5LCBtX3RvcFBhZGRpbmcsIG1fcmlnaHRQYWRkaW5nLCBtX2JvdHRvbVBhZGRpbmcsIG1fbGVm
dFBhZGRpbmcpOwogICAgIGlmICghaW50ZXJzZWN0ZWROb2RlcykKICAgICAgICAgcmV0dXJuIElu
dFBvaW50KCk7CiAKQEAgLTMzNzEsNyArMzM3MSw3IEBAIHZvaWQgUVdlYlBhZ2U6OnVwZGF0ZVBv
c2l0aW9uRGVwZW5kZW50QWN0aW9ucyhjb25zdCBRUG9pbnQgJnBvcykKICAgICBkLT5jcmVhdGVN
YWluRnJhbWUoKTsKICAgICBXZWJDb3JlOjpGcmFtZSogZm9jdXNlZEZyYW1lID0gZC0+cGFnZS0+
Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwogCi0gICAgSGl0VGVzdFJl
c3VsdCByZXN1bHQgPSBmb2N1c2VkRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0
QXRQb2ludChmb2N1c2VkRnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhwb3MpLCAvKmFs
bG93U2hhZG93Q29udGVudCovIGZhbHNlKTsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGZv
Y3VzZWRGcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGZvY3VzZWRG
cmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHBvcykpOwogICAgIGlmIChyZXN1bHQuc2Ny
b2xsYmFyKCkpCiAgICAgICAgIGQtPmhpdFRlc3RSZXN1bHQgPSBRV2ViSGl0VGVzdFJlc3VsdCgp
OwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCmluZGV4IGJjZjA3MmQ2NWI1NjRmZjFlZDVhYjZhZDUx
Mjk0NjE4NDA5MWIwNjEuLjcyYTVlMDA0OTgyZGRlNzRlNTJhODU5YTMwZDE0NzU3ZjYwMmNmMTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFF0LmNwcApAQCAtMTI3Miw3ICsxMjcyLDcgQEAgdm9pZCBGcmFtZUxvYWRlckNs
aWVudFF0OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oRnJhbWVQb2xp
Y3lGdW4KICAgICAgICAgICAgIGlmIChldmVudC0+aXNNb3VzZUV2ZW50KCkpIHsKICAgICAgICAg
ICAgICAgICBjb25zdCBNb3VzZUV2ZW50KiBtb3VzZUV2ZW50ID0gIHN0YXRpY19jYXN0PGNvbnN0
IE1vdXNlRXZlbnQqPihldmVudCk7CiAgICAgICAgICAgICAgICAgbm9kZSA9IFFXZWJGcmFtZVBy
aXZhdGU6OmNvcmUobV93ZWJGcmFtZSktPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQ
b2ludCgKLSAgICAgICAgICAgICAgICAgICAgbW91c2VFdmVudC0+YWJzb2x1dGVMb2NhdGlvbigp
LCBmYWxzZSkuaW5uZXJOb25TaGFyZWROb2RlKCk7CisgICAgICAgICAgICAgICAgICAgIG1vdXNl
RXZlbnQtPmFic29sdXRlTG9jYXRpb24oKSkuaW5uZXJOb25TaGFyZWROb2RlKCk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5j
cHAKaW5kZXggYzNmZGVkNmIxNDIwNDYxNDA0YzFkMjBiNTk4MTQ0NmQwYWQ2YWI3Ni4uZmUyM2I0
M2VmNTY3MWVjYmVlYWZmYjBkNzRhZTFlZDAxYjE1MWI2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAK
QEAgLTEzMjIsNyArMTMyMiw3IEBAIGJvb2wgV2ViVmlldzo6aGFuZGxlQ29udGV4dE1lbnVFdmVu
dChXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQogICAgIG1fcGFnZS0+Y29udGV4dE1lbnVD
b250cm9sbGVyKCktPmNsZWFyQ29udGV4dE1lbnUoKTsKIAogICAgIEludFBvaW50IGRvY3VtZW50
UG9pbnQobV9wYWdlLT5tYWluRnJhbWUoKS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKGNvb3Jk
cykpOwotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZl
bnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGRvY3VtZW50UG9pbnQsIGZhbHNlKTsK
KyAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2ZW50SGFu
ZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChkb2N1bWVudFBvaW50KTsKICAgICBGcmFtZSog
dGFyZ2V0RnJhbWUgPSByZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCkgPyByZXN1bHQuaW5uZXJO
b25TaGFyZWROb2RlKCktPmRvY3VtZW50KCktPmZyYW1lKCkgOiBtX3BhZ2UtPmZvY3VzQ29udHJv
bGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKIAogICAgIHRhcmdldEZyYW1lLT52aWV3KCkt
PnNldEN1cnNvcihwb2ludGVyQ3Vyc29yKCkpOwpAQCAtMzU5Nyw3ICszNTk3LDcgQEAgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjplbGVtZW50QXRQb2ludCgKICAgICBJbnRQb2lu
dCB3ZWJDb3JlUG9pbnQgPSBJbnRQb2ludChwb2ludC0+eCwgcG9pbnQtPnkpOwogICAgIEhpdFRl
c3RSZXN1bHQgcmVzdWx0ID0gSGl0VGVzdFJlc3VsdCh3ZWJDb3JlUG9pbnQpOwogICAgIGlmIChm
cmFtZS0+Y29udGVudFJlbmRlcmVyKCkpCi0gICAgICAgIHJlc3VsdCA9IGZyYW1lLT5ldmVudEhh
bmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQod2ViQ29yZVBvaW50LCBmYWxzZSk7CisgICAg
ICAgIHJlc3VsdCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQo
d2ViQ29yZVBvaW50KTsKICAgICAqZWxlbWVudERpY3Rpb25hcnkgPSBXZWJFbGVtZW50UHJvcGVy
dHlCYWc6OmNyZWF0ZUluc3RhbmNlKHJlc3VsdCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3d4L1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvd3gv
V2ViRnJhbWUuY3BwCmluZGV4IGFhYTc2MTRlZmEzYjY0MTNiNzEwZTBlODVhYWQ5NTFkNmZlOTJm
ODIuLmI1MDQ2YTczMmFiMGJiMDY3NjQxZTg2NzNiMTg4NjljMzRkMTM2M2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvd3gvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd3gvV2Vi
RnJhbWUuY3BwCkBAIC02OTAsNyArNjkwLDcgQEAgV2ViVmlld0RPTUVsZW1lbnRJbmZvIFdlYkZy
YW1lOjpIaXRUZXN0KGNvbnN0IHd4UG9pbnQmIHBvcykgY29uc3QKICAgICBXZWJWaWV3RE9NRWxl
bWVudEluZm8gZG9tSW5mbzsKIAogICAgIGlmIChtX2ltcGwtPmZyYW1lLT52aWV3KCkpIHsKLSAg
ICAgICAgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCByZXN1bHQgPSBtX2ltcGwtPmZyYW1lLT5ldmVu
dEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQobV9pbXBsLT5mcmFtZS0+dmlldygpLT53
aW5kb3dUb0NvbnRlbnRzKHBvcyksIGZhbHNlKTsKKyAgICAgICAgV2ViQ29yZTo6SGl0VGVzdFJl
c3VsdCByZXN1bHQgPSBtX2ltcGwtPmZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3Vs
dEF0UG9pbnQobV9pbXBsLT5mcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHBvcykpOwog
ICAgICAgICBpZiAocmVzdWx0LmlubmVyTm9kZSgpKSB7CiAgICAgICAgICAgICBkb21JbmZvLlNl
dExpbmsocmVzdWx0LmFic29sdXRlTGlua1VSTCgpLnN0cmluZygpKTsKICAgICAgICAgICAgIGRv
bUluZm8uU2V0VGV4dChyZXN1bHQudGV4dENvbnRlbnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlv
bkFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAKaW5kZXggNDI4MTM1NDgxYWZkOWM1MWIz
YWJkMjc2Y2U4NjE2ZDM5NmY4YjQzZS4uMjljNzBkZmI0NjZjN2QwZWQ0ZjE1ZWI0YzkyNGMzZDgy
Y2Y3MWIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0
aW9uLmNwcApAQCAtOTEsNyArOTEsNyBAQCBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246
OkluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbihXZWJGcmFtZSogZnJhbWUsCiAgICAgLCBt
X21vdXNlQnV0dG9uKFdlYk1vdXNlRXZlbnQ6Ok5vQnV0dG9uKQogewogICAgIGlmIChjb25zdCBN
b3VzZUV2ZW50KiBtb3VzZUV2ZW50ID0gbW91c2VFdmVudEZvck5hdmlnYXRpb25BY3Rpb24obmF2
aWdhdGlvbkFjdGlvbikpIHsKLSAgICAgICAgbV9oaXRUZXN0UmVzdWx0ID0gSW5qZWN0ZWRCdW5k
bGVIaXRUZXN0UmVzdWx0OjpjcmVhdGUoZnJhbWUtPmNvcmVGcmFtZSgpLT5ldmVudEhhbmRsZXIo
KS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQobW91c2VFdmVudC0+YWJzb2x1dGVMb2NhdGlvbigpLCBm
YWxzZSkpOworICAgICAgICBtX2hpdFRlc3RSZXN1bHQgPSBJbmplY3RlZEJ1bmRsZUhpdFRlc3RS
ZXN1bHQ6OmNyZWF0ZShmcmFtZS0+Y29yZUZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0
UmVzdWx0QXRQb2ludChtb3VzZUV2ZW50LT5hYnNvbHV0ZUxvY2F0aW9uKCkpKTsKICAgICAgICAg
bV9tb3VzZUJ1dHRvbiAgID0gbW91c2VCdXR0b25Gb3JNb3VzZUV2ZW50KG1vdXNlRXZlbnQpOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CmluZGV4IGY0MGFhMGEzZTMzYTBmMDQzMTJlNWJmZmJhMDUwZGUxYzM5NGQwYjEuLmVkMjZmYzM3
OGJmNjIxNDRlOWRmY2NkODAxZmQzMjQ3N2M5MzNjMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTEzMTAsNyArMTMxMCw3IEBAIHN0YXRp
YyBib29sIGlzQ29udGV4dENsaWNrKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpCiBz
dGF0aWMgYm9vbCBoYW5kbGVDb250ZXh0TWVudUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVu
dCYgcGxhdGZvcm1Nb3VzZUV2ZW50LCBXZWJQYWdlKiBwYWdlKQogewogICAgIEludFBvaW50IHBv
aW50ID0gcGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+d2luZG93VG9Db250
ZW50cyhwbGF0Zm9ybU1vdXNlRXZlbnQucG9zaXRpb24oKSk7Ci0gICAgSGl0VGVzdFJlc3VsdCBy
ZXN1bHQgPSBwYWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhp
dFRlc3RSZXN1bHRBdFBvaW50KHBvaW50LCBmYWxzZSk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1
bHQgPSBwYWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRl
c3RSZXN1bHRBdFBvaW50KHBvaW50KTsKIAogICAgIEZyYW1lKiBmcmFtZSA9IHBhZ2UtPmNvcmVQ
YWdlKCktPm1haW5GcmFtZSgpOwogICAgIGlmIChyZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCkp
CkBAIC0xNTU1LDcgKzE1NTUsNyBAQCB2b2lkIFdlYlBhZ2U6OmhpZ2hsaWdodFBvdGVudGlhbEFj
dGl2YXRpb24oY29uc3QgSW50UG9pbnQmIHBvaW50LCBjb25zdCBJbnRTaXplJgogICAgICAgICAg
ICAgcmV0dXJuOwogCiAjZWxzZQotICAgICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IG1haW5m
cmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KG1haW5mcmFtZS0+dmll
dygpLT53aW5kb3dUb0NvbnRlbnRzKHBvaW50KSwgLyphbGxvd1NoYWRvd0NvbnRlbnQqLyBmYWxz
ZSwgLyppZ25vcmVDbGlwcGluZyovIHRydWUpOworICAgICAgICBIaXRUZXN0UmVzdWx0IHJlc3Vs
dCA9IG1haW5mcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KG1haW5m
cmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHBvaW50KSwgSGl0VGVzdFJlcXVlc3Q6OkRl
ZmF1bHQoLyphbGxvd1NoYWRvd0NvbnRlbnQqLyB0cnVlLCAvKmlnbm9yZUNsaXBwaW5nKi8gdHJ1
ZSkpOwogICAgICAgICBhZGp1c3RlZE5vZGUgPSByZXN1bHQuaW5uZXJOb2RlKCk7CiAjZW5kaWYK
ICAgICAgICAgLy8gRmluZCB0aGUgbm9kZSB0byBoaWdobGlnaHQuIFRoaXMgaXMgbm90IHRoZSBz
YW1lIGFzIHRoZSBub2RlIHJlc3BvbmRpbmcgdGhlIHRhcCBnZXN0dXJlLCBiZWNhdXNlIG1hbnkK
QEAgLTI3MjQsNyArMjcyNCw3IEBAIHZvaWQgV2ViUGFnZTo6ZmluZFpvb21hYmxlQXJlYUZvclBv
aW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgY29uc3QgV2ViCiB7CiAgICAgVU5V
U0VEX1BBUkFNKGFyZWEpOwogICAgIEZyYW1lKiBtYWluZnJhbWUgPSBtX21haW5GcmFtZS0+Y29y
ZUZyYW1lKCk7Ci0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBtYWluZnJhbWUtPmV2ZW50SGFu
ZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChtYWluZnJhbWUtPnZpZXcoKS0+d2luZG93VG9D
b250ZW50cyhwb2ludCksIC8qYWxsb3dTaGFkb3dDb250ZW50Ki8gZmFsc2UsIC8qaWdub3JlQ2xp
cHBpbmcqLyB0cnVlKTsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IG1haW5mcmFtZS0+ZXZl
bnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KG1haW5mcmFtZS0+dmlldygpLT53aW5k
b3dUb0NvbnRlbnRzKHBvaW50KSwgSGl0VGVzdFJlcXVlc3Q6OkRlZmF1bHQoLyphbGxvd1NoYWRv
d0NvbnRlbnQqLyBmYWxzZSwgLyppZ25vcmVDbGlwcGluZyovIHRydWUpKTsKIAogICAgIE5vZGUq
IG5vZGUgPSByZXN1bHQuaW5uZXJOb2RlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCBjMmYwMTY1Mzc1OTUzYjUz
Y2MzY2QxYjllYjQzMWRiNWVjZWI5M2FkLi4zMDEzNWFhNTA3ZTdkNjgwNTA1ZmY3NmI1NzQzYTIw
MmVlOTBlMmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9XZWJQYWdlTWFjLm1tCkBAIC0zNzUsNyArMzc1LDcgQEAgdm9pZCBXZWJQYWdlOjpjaGFy
YWN0ZXJJbmRleEZvclBvaW50KEludFBvaW50IHBvaW50LCB1aW50NjRfdCYgaW5kZXgpCiAgICAg
aWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQg
PSBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KHBvaW50LCBmYWxz
ZSk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhp
dFRlc3RSZXN1bHRBdFBvaW50KHBvaW50KTsKICAgICBmcmFtZSA9IHJlc3VsdC5pbm5lck5vblNo
YXJlZE5vZGUoKSA/IHJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKS0+ZG9jdW1lbnQoKS0+ZnJh
bWUoKSA6IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwog
ICAgIAogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBmcmFtZS0+cmFuZ2VGb3JQb2ludChyZXN1
bHQucm91bmRlZFBvaW50KCkpOwpAQCAtNDY0LDcgKzQ2NCw3IEBAIHZvaWQgV2ViUGFnZTo6cGVy
Zm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIGZsb2F0UG9p
bnQpCiAKICAgICAvLyBGaW5kIHRoZSBmcmFtZSB0aGUgcG9pbnQgaXMgb3Zlci4KICAgICBJbnRQ
b2ludCBwb2ludCA9IHJvdW5kZWRJbnRQb2ludChmbG9hdFBvaW50KTsKLSAgICBIaXRUZXN0UmVz
dWx0IHJlc3VsdCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQo
ZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhwb2ludCksIGZhbHNlKTsKKyAgICBIaXRU
ZXN0UmVzdWx0IHJlc3VsdCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0
UG9pbnQoZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhwb2ludCkpOwogICAgIGZyYW1l
ID0gcmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpID8gcmVzdWx0LmlubmVyTm9uU2hhcmVkTm9k
ZSgpLT5kb2N1bWVudCgpLT5mcmFtZSgpIDogbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9j
dXNlZE9yTWFpbkZyYW1lKCk7CiAKICAgICBJbnRQb2ludCB0cmFuc2xhdGVkUG9pbnQgPSBmcmFt
ZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHBvaW50KTsKQEAgLTcyNyw3ICs3MjcsNyBAQCB2
b2lkIFdlYlBhZ2U6OnNob3VsZERlbGF5V2luZG93T3JkZXJpbmdFdmVudChjb25zdCBXZWJLaXQ6
OldlYk1vdXNlRXZlbnQmIGV2ZW50LAogICAgICAgICByZXR1cm47CiAKICNpZiBFTkFCTEUoRFJB
R19TVVBQT1JUKQotICAgIEhpdFRlc3RSZXN1bHQgaGl0UmVzdWx0ID0gZnJhbWUtPmV2ZW50SGFu
ZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChmcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRl
bnRzKGV2ZW50LnBvc2l0aW9uKCkpLCB0cnVlKTsKKyAgICBIaXRUZXN0UmVzdWx0IGhpdFJlc3Vs
dCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoZnJhbWUtPnZp
ZXcoKS0+d2luZG93VG9Db250ZW50cyhldmVudC5wb3NpdGlvbigpKSwgSGl0VGVzdFJlcXVlc3Q6
OkRlZmF1bHQodHJ1ZSkpOwogICAgIGlmIChoaXRSZXN1bHQuaXNTZWxlY3RlZCgpKQogICAgICAg
ICByZXN1bHQgPSBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmV2ZW50TWF5U3RhcnREcmFnKHBsYXRm
b3JtKGV2ZW50KSk7CiAjZW5kaWYKQEAgLTc0MCw3ICs3NDAsNyBAQCB2b2lkIFdlYlBhZ2U6OmFj
Y2VwdHNGaXJzdE1vdXNlKGludCBldmVudE51bWJlciwgY29uc3QgV2ViS2l0OjpXZWJNb3VzZUV2
ZW50JiBldgogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBIaXRU
ZXN0UmVzdWx0IGhpdFJlc3VsdCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3Vs
dEF0UG9pbnQoZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhldmVudC5wb3NpdGlvbigp
KSwgdHJ1ZSk7CisgICAgSGl0VGVzdFJlc3VsdCBoaXRSZXN1bHQgPSBmcmFtZS0+ZXZlbnRIYW5k
bGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVu
dHMoZXZlbnQucG9zaXRpb24oKSksIEhpdFRlc3RSZXF1ZXN0OjpEZWZhdWx0KHRydWUpKTsKICAg
ICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnNldEFjdGl2YXRpb25FdmVudE51bWJlcihldmVudE51
bWJlcik7CiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICBpZiAoaGl0UmVzdWx0LmlzU2Vs
ZWN0ZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZiBiL1Nv
dXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgppbmRleCA2NTFjOThmYzcyMmM5Mzg5ZjViMDg3
M2YwNTNmNjk0YjdjMzA2MmI3Li5mODYyNzhiYzRjY2MxZGUyNmM3YTY0MjI2NjhmOWVmYmI4YzJi
YThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKKysrIGIvU291
cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCkBAIC0yNTksNyArMjU5LDcgQEAgRVhQT1JUUwog
ICAgICAgICA/PzFDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlckBXZWJDb3JlQEBNQUVAWFoKICAg
ICAgICAgP2NvbnRleHREZXN0cm95ZWRAQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXJAV2ViQ29y
ZUBAVUFFWFhaCiAgICAgICAgID8/MENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyQFdlYkNvcmVA
QFFBRUBQQVZTY3JpcHRFeGVjdXRpb25Db250ZXh0QDFAQFoKLSAgICAgICAgP25vZGVzRnJvbVJl
Y3RARG9jdW1lbnRAV2ViQ29yZUBAUUJFP0FWPyRQYXNzUmVmUHRyQFZOb2RlTGlzdEBXZWJDb3Jl
QEBAV1RGQEBISElJSUlfTjAwQFoKKyAgICAgICAgP25vZGVzRnJvbVJlY3RARG9jdW1lbnRAV2Vi
Q29yZUBAUUJFP0FWPyRQYXNzUmVmUHRyQFZOb2RlTGlzdEBXZWJDb3JlQEBAV1RGQEBISElJSUlJ
QFoKICAgICAgICAgP3NlbGVjdGlvblN0YXJ0SGFzTWFya2VyRm9yQEVkaXRvckBXZWJDb3JlQEBR
QkVfTlc0TWFya2VyVHlwZUBEb2N1bWVudE1hcmtlckAyQEhIQFoKICAgICAgICAgP3dlYmtpdFdp
bGxFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50QERvY3VtZW50QFdlYkNvcmVAQFFBRVhQQVZFbGVt
ZW50QDJAQFoKICAgICAgICAgP3dlYmtpdERpZEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnRARG9j
dW1lbnRAV2ViQ29yZUBAUUFFWFBBVkVsZW1lbnRAMkBAWgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJD
RkxpdGUuZGVmCmluZGV4IGQzYmVmNDZkYjNhMzM5ZmE5N2ZiMjY4NTAyN2NjYzhiYmYzNTUwMDcu
LjVlNzk4NDU5MjgyNzAzMzNmNzhhNjUxZDExNTBhMDNlZjNlZTc3ZjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgorKysgYi9Tb3VyY2UvV2ViS2l0Mi93
aW4vV2ViS2l0MkNGTGl0ZS5kZWYKQEAgLTI1Myw3ICsyNTMsNyBAQCBFWFBPUlRTCiAgICAgICAg
ID91c2VyUHJlZmVycmVkTGFuZ3VhZ2VzQFdlYkNvcmVAQFlBP0FWPyRWZWN0b3JAVlN0cmluZ0BX
VEZAQCQwQUBAV1RGQEBYWgogICAgICAgICA/dXRmOEBTdHJpbmdAV1RGQEBRQkU/QVZDU3RyaW5n
QDJAX05AWgogICAgICAgICA/dmlld0BEb2N1bWVudEBXZWJDb3JlQEBRQkVQQVZGcmFtZVZpZXdA
MkBYWgotICAgICAgICA/bm9kZXNGcm9tUmVjdEBEb2N1bWVudEBXZWJDb3JlQEBRQkU/QVY/JFBh
c3NSZWZQdHJAVk5vZGVMaXN0QFdlYkNvcmVAQEBXVEZAQEhISUlJSV9OMDBAWgorICAgICAgICA/
bm9kZXNGcm9tUmVjdEBEb2N1bWVudEBXZWJDb3JlQEBRQkU/QVY/JFBhc3NSZWZQdHJAVk5vZGVM
aXN0QFdlYkNvcmVAQEBXVEZAQEhISUlJSUlAWgogICAgICAgICA/c2VsZWN0aW9uU3RhcnRIYXNN
YXJrZXJGb3JARWRpdG9yQFdlYkNvcmVAQFFCRV9OVzRNYXJrZXJUeXBlQERvY3VtZW50TWFya2Vy
QDJASEhAWgogICAgICAgICA/cmVzdHJpY3RTY2FsZUZhY3RvclRvSW5pdGlhbFNjYWxlSWZOb3RV
c2VyU2NhbGFibGVAV2ViQ29yZUBAWUFYQUFVVmlld3BvcnRBdHRyaWJ1dGVzQDFAQFoKICAgICAg
ICAgP3Jlc3RyaWN0TWluaW11bVNjYWxlRmFjdG9yVG9WaWV3cG9ydFNpemVAV2ViQ29yZUBAWUFY
QUFVVmlld3BvcnRBdHRyaWJ1dGVzQDFAVkludFNpemVAMUBAWgpkaWZmIC0tZ2l0IGEvU291cmNl
L2F1dG90b29scy9zeW1ib2xzLmZpbHRlciBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0
ZXIKaW5kZXggYjYzYjdjMWMzZmJmODIxYzljZWJjYThhNTFmZTJlOTAzYTE0N2UwMi4uM2Q5YTNl
YTJmMzFlOGVkYTA0MGQ0YjJhZjQxMWZmZTgxYmMyYjk2OSAxMDA2NDQKLS0tIGEvU291cmNlL2F1
dG90b29scy9zeW1ib2xzLmZpbHRlcgorKysgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmls
dGVyCkBAIC0xNjIsNyArMTYyLDcgQEAgX1pON1dlYkNvcmUyMlJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXMxOGlzU2hhZG93RE9NRW5hYmxlZEU7CiBfWk43V2ViQ29yZTIyUnVudGltZUVuYWJsZWRGZWF0
dXJlczIyaXNDU1NFeGNsdXNpb25zRW5hYmxlZEU7CiBfWk43V2ViQ29yZTIyUnVudGltZUVuYWJs
ZWRGZWF0dXJlczIyaXNEaWFsb2dFbGVtZW50RW5hYmxlZEU7CiBfWk43V2ViQ29yZTIyUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczM3aXNBdXRob3JTaGFkb3dET01Gb3JBbnlFbGVtZW50RW5hYmxlZEU7
Ci1fWk5LN1dlYkNvcmU4RG9jdW1lbnQxM25vZGVzRnJvbVJlY3RFaWlqampqYmJiOworX1pOSzdX
ZWJDb3JlOERvY3VtZW50MTNub2Rlc0Zyb21SZWN0RWlpampqamo7CiBfWk43V2ViQ29yZTR0b0pT
RVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE5TXzhOb2RlTGlzdEU7
CiBfWk5LN1dlYkNvcmU2RWRpdG9yMjZzZWxlY3Rpb25TdGFydEhhc01hcmtlckZvckVOU18xNERv
Y3VtZW50TWFya2VyMTBNYXJrZXJUeXBlRWlpOwogX1pON1dlYkNvcmU4RG9jdW1lbnQzM3dlYmtp
dERpZEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudEVQTlNfN0VsZW1lbnRFOwpkaWZmIC0tZ2l0IGEv
Q2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDhjMzMwZDVjOTY2NDFkMzBjYTI5OTYwMjJkNmQy
OGUzOGUyZDFhYjEuLmRlMTYzZTJkYTQ1NGJiMDI1NDU1M2IzMDA1NmFjZjExMGYyM2ZjYmEgMTAw
NjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAx
Mi0wOS0wNCAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQG5va2lhLmNvbT4K
KworICAgICAgICBTaW1wbGlmeSBoaXRUZXN0UmVzdWx0QXRQb2ludCBhbmQgbm9kZXNGcm9tUmVj
dCBBUElzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
NTcyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVw
ZGF0ZSBleHBvcnRlZCBzeW1ib2xzLgorCisgICAgICAgICogU291cmNlL2F1dG90b29scy9zeW1i
b2xzLmZpbHRlcjoKKwogMjAxMi0wOS0wMyAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4u
amVuc2VuQG5va2lhLmNvbT4KIAogICAgICAgICBBbGxvdyBjaGlsZC1mcmFtZSBjb250ZW50IGlu
IGhpdC10ZXN0cy4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162186</attachid>
            <date>2012-09-05 01:47:12 -0700</date>
            <delta_ts>2012-09-05 02:42:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95720-20120905104644.patch</filename>
            <type>text/plain</type>
            <size>63050</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NDY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjdkODk1ZWZhOTYyMmNl
YzBlODFiYjM2ZjcxMmM3YTYzOTAwZTQ4Mi4uNDY5NTNkODFjNGE1ZGJlZDFmOWUzZjY3Yjg0NzJh
MDE1NWI5MDk0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEyLTA5LTA1ICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgorCisgICAgICAgIFNp
bXBsaWZ5IGhpdFRlc3RSZXN1bHRBdFBvaW50IGFuZCBub2Rlc0Zyb21SZWN0IEFQSXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NzIwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGV4aXN0aW5nIEFQ
SSB3YXMgb3ZlcmxvYWRlZCBhbmQgY291bGQgYmUgc2ltcGxpZmllZCBieSBwYXNzaW5nIGFsbCB0
aGUgYm9vbCBhcmd1bWVudHMgaW4gCisgICAgICAgIGEgSGl0VGVzdFJlcXVlc3QgYXJndW1lbnQu
IFRoaXMgc2hvdWxkIGFsc28gaGVscCBjbGFyaWZ5IHRoZSBjYWxsIGFzIHRoZSBlbnVtIHZhbHVl
cyBleHBsaWNpdGVseQorICAgICAgICBzdGF0ZSB3aGF0IHRoZXkgZG8uCisKKyAgICAgICAgVG8g
YWxsb3cgZm9yIHNpbXBsZSBjb252ZXJzaW9uIGEgbmV3IHN0YXRpYyBmdW5jdGlvbiBoYXMgYmVl
biAgYWRkZWQgdG8gSGl0VGVzdFJlcXVlc3QgdG8gYnVpbGQKKyAgICAgICAgYSBkZWZhdWx0IHR5
cGUgYmFzZWQgb24gdGhlIG9sZCBib29sZWFuIGFyZ3VtZW50cy4KKworICAgICAgICAqIFdlYkNv
cmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUub3JkZXI6CisgICAgICAgICogZG9tL0RvY3Vt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpub2Rlc0Zyb21SZWN0KToKKyAg
ICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKERvY3VtZW50KToKKyAgICAgICAgKiBw
YWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0
TWVudUNvbnRyb2xsZXI6OmNyZWF0ZUNvbnRleHRNZW51KToKKyAgICAgICAgKiBwYWdlL0RyYWdD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpjYW5Qcm9j
ZXNzRHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKToK
KyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dEhhbmRsZXI6OnVwZGF0ZUF1dG9zY3JvbGxSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudEhhbmRsZXI6OmhpdFRlc3RSZXN1bHRBdFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6YmVzdENsaWNrYWJsZU5vZGVGb3JUb3VjaFBvaW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50SGFuZGxlcjo6YmVzdENvbnRleHRNZW51Tm9kZUZvclRvdWNoUG9pbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpiZXN0Wm9vbWFibGVBcmVhRm9yVG91Y2hQb2lu
dCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZVRvdWNoRXZlbnQpOgor
ICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmg6CisgICAgICAgIChFdmVudEhhbmRsZXIpOgor
ICAgICAgICAqIHBhZ2UvRm9jdXNDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVw
ZGF0ZUZvY3VzQ2FuZGlkYXRlSWZOZWVkZWQpOgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnZpc2libGVQb3NpdGlvbkZvclBvaW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lOjpkb2N1bWVudEF0UG9pbnQpOgorICAgICAgICAqIHBhZ2UvVG91
Y2hEaXNhbWJpZ3VhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaW5kR29vZFRvdWNoVGFy
Z2V0cyk6CisgICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXF1ZXN0Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpIaXRUZXN0UmVxdWVzdDo6RGVmYXVsdCk6CisgICAgICAgIChIaXRUZXN0UmVxdWVz
dCk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW50ZXJuYWxzOjpub2Rlc0Zyb21SZWN0KToKKwogMjAxMi0wOS0wMyAgQWxsYW4gU2FuZGZlbGQg
SmVuc2VuICA8YWxsYW4uamVuc2VuQG5va2lhLmNvbT4KIAogICAgICAgICBBbGxvdyBjaGlsZC1m
cmFtZSBjb250ZW50IGluIGhpdC10ZXN0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCmlu
ZGV4IDgwYjMwNTQxZDI5Y2Y5Mzg5YWM4NmY2ZGNlMGFmNTNlMTEzODc1MTYuLmRjMjdkOWJkNjdl
NzJhODI1NTgxMmJhMjFjMWU1MDUzMzczYTg1MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTA5LTA1ICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4g
IDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgorCisgICAgICAgIFNpbXBsaWZ5IGhpdFRlc3RSZXN1
bHRBdFBvaW50IGFuZCBub2Rlc0Zyb21SZWN0IEFQSXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NzIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGNhbGxzIHRvIG5ldyBBUEkuCisKKyAgICAg
ICAgKiBBcGkvV2ViUGFnZS5jcHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBh
Z2VQcml2YXRlOjpjb250ZXh0Tm9kZSk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6Oldl
YlBhZ2VQcml2YXRlOjpub2RlRm9yWm9vbVVuZGVyUG9pbnQpOgorICAgICAgICAoQmxhY2tCZXJy
eTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZTo6aGFuZGxlTW91c2VFdmVudCk6CisgICAgICAgIChC
bGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2U6Om5vZGVBdFBvaW50KToKKyAgICAgICAgKiBXZWJL
aXRTdXBwb3J0L0ZhdEZpbmdlcnMuY3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpG
YXRGaW5nZXJzOjpnZXROb2Rlc0Zyb21SZWN0KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktp
dDo6RmF0RmluZ2Vyczo6Z2V0UmVsZXZhbnRJbmZvRnJvbVBvaW50KToKKyAgICAgICAgKiBXZWJL
aXRTdXBwb3J0L1NlbGVjdGlvbkhhbmRsZXIuY3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2Vi
S2l0Ojp2aXNpYmxlUG9zaXRpb25Gb3JQb2ludElnbm9yaW5nQ2xpcHBpbmcpOgorCiAyMDEyLTA5
LTA0ICBNYXJ5IFd1ICA8bWFyeS53dUB0b3JjaG1vYmlsZS5jb20uY24+CiAKICAgICAgICAgW0Js
YWNrQmVycnldIEFkZCB3ZWJwbGF0Zm9ybSBhbmQgYnJvd3NlciB0byBidWlsZCBpbmZvCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGZjNDhlNTllMGFlNjZiYTA0MDU5MTg1Yjg2ZmY0MmY1
NDg5MTZlYzkuLjM2YzRhNDc3Y2U0OWJlZTkyZDljOGQ0NDQzZjUwMDkyOTRhYzQxMjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTItMDktMDUgIEFsbGFu
IFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+CisKKyAgICAgICAgU2lt
cGxpZnkgaGl0VGVzdFJlc3VsdEF0UG9pbnQgYW5kIG5vZGVzRnJvbVJlY3QgQVBJcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU3MjAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgY2FsbHMgdG8g
bmV3IEFQSS4KKworICAgICAgICAqIHNyYy9Db250ZXh0TWVudUNsaWVudEltcGwuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpzZWxlY3RNaXNzcGVsbGVkV29yZCk6CisgICAgICAgICogc3JjL0ZyYW1l
TG9hZGVyQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50
SW1wbDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAg
KiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjpj
aGFyYWN0ZXJJbmRleEZvclBvaW50KToKKyAgICAgICAgKiBzcmMvV2ViUGx1Z2luQ29udGFpbmVy
SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbkNvbnRhaW5lckltcGw6OmlzUmVj
dFRvcG1vc3QpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXdJbXBsOjpoYW5kbGVNb3VzZVVwKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0ltcGw6OmNvbXB1dGVCbG9ja0JvdW5kcyk6CisKIDIwMTItMDktMDMgIFRhbyBCYWkgIDxtaWNo
YWVsYmFpQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBZGRlZCBBTkRST0lEX0dEQlNFUlZFUiBk
ZWZpbml0aW9uIGZvciBBbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCAzNTQ0NzZlN2NhMjVjOTUyMzZh
ODFiZWVlOTI5MzI5MTJhZTc4OGQ4Li41MTNmMDgyMDc5ZDc1YmU0ZWUzMzA0Y2Q0OGZmNmY4OWYy
MjgyOWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDktMDUgIEFs
bGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+CisKKyAgICAgICAg
U2ltcGxpZnkgaGl0VGVzdFJlc3VsdEF0UG9pbnQgYW5kIG5vZGVzRnJvbVJlY3QgQVBJcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU3MjAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgY2FsbHMg
dG8gbmV3IEFQSS4KKworICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgorICAgICAgICAoZXdr
X2ZyYW1lX2hpdF90ZXN0X25ldyk6CisKIDIwMTItMDktMDQgIE1pY2hhxYIgUGFrdcWCYSB2ZWwg
UnV0a2EgIDxtLnBha3VsYUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBDb250ZXh0IG1l
bnUgcmVzdG9yZS4gCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggZThiOTY5ZDFlMWMxOTUwMmU0NzFjZWE4
NWMwMTE1YzljZjk0Y2ViOC4uYjQ3NTJkM2RkMzdiMzZlOTcxNDk4OGFhYjZlNTNjZThjMmI5Nzgz
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA5LTA1ICBBbGxhbiBT
YW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgorCisgICAgICAgIFNpbXBs
aWZ5IGhpdFRlc3RSZXN1bHRBdFBvaW50IGFuZCBub2Rlc0Zyb21SZWN0IEFQSXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NzIwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGNhbGxzIHRvIG5l
dyBBUEkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5t
bToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjphY3Rpb25EaWN0aW9uYXJ5KToKKyAg
ICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBl
bGVtZW50QXRQb2ludDphbGxvd1NoYWRvd0NvbnRlbnQ6XSk6CisKIDIwMTItMDktMDEgIE1hcmsg
TGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZGVkICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9JZGVudGlmaWVyLmg+LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCA4MDM0MDhjMjY5MWU5
NGY0N2M0MmMyNjk0OTRjYmFmYTk2MTNkMjZkLi4xMWU4M2NkODBkMGQ0NzRiM2IxNDM1MmVmNmI4
MmVmNzcxYWI1NmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTA5LTA1
ICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgorCisgICAg
ICAgIFNpbXBsaWZ5IGhpdFRlc3RSZXN1bHRBdFBvaW50IGFuZCBub2Rlc0Zyb21SZWN0IEFQSXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NzIwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGNh
bGxzIHRvIG5ldyBBUEkuCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAg
KFFXZWJGcmFtZTo6aGl0VGVzdENvbnRlbnQpOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6
CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmhhbmRsZVNvZnR3YXJlSW5wdXRQYW5lbCk6Cisg
ICAgICAgIChRV2ViUGFnZVByaXZhdGU6OlRvdWNoQWRqdXN0ZXI6OmZpbmRDYW5kaWRhdGVQb2lu
dEZvclRvdWNoKToKKyAgICAgICAgKFFXZWJQYWdlOjp1cGRhdGVQb3NpdGlvbkRlcGVuZGVudEFj
dGlvbnMpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKwogMjAxMi0wOS0wNCAgSm9uIExlZSAgPGpvbmxl
ZUBhcHBsZS5jb20+CiAKICAgICAgICAgW1F0XSBSRUdSRVNTSU9OKHIxMjczMjEpOiBJdCBtYWRl
IDMgbm90aWZpY2F0aW9uIHRlc3QgdGltZW91dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93
aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDA3ZTRhNmVi
N2U1M2JjYWRkNGY0NTMyMWI5NmY0NWU4Y2Q5MzA3YjUuLjBhNmY1NDE2NDc1MzJmMGRhZTYxNTdj
N2RlODYyYjM3ODc0YWFiNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAx
Mi0wOS0wNSAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQG5va2lhLmNvbT4K
KworICAgICAgICBTaW1wbGlmeSBoaXRUZXN0UmVzdWx0QXRQb2ludCBhbmQgbm9kZXNGcm9tUmVj
dCBBUElzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
NTcyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVw
ZGF0ZSBjYWxscyB0byBuZXcgQVBJLgorCisgICAgICAgICogV2ViQWN0aW9uUHJvcGVydHlCYWcu
Y3BwOgorICAgICAgICAoV2ViQWN0aW9uUHJvcGVydHlCYWc6OlJlYWQpOgorICAgICAgICAqIFdl
YlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6aGFuZGxlQ29udGV4dE1lbnVFdmVudCk6Cisg
ICAgICAgIChXZWJWaWV3OjplbGVtZW50QXRQb2ludCk6CisKIDIwMTItMDgtMzAgIEJlbmphbWlu
IFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVwbGFjZSBKU0M6OlVT
dHJpbmcgYnkgV1RGOjpTdHJpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd3gvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cKaW5kZXggMzcxODNjZjQ2ZDE3OTgyNjQ4
ZDA4YWNiZTllMGFjNzQ2ZTI3NTI1MC4uZjdlZWE5NjFjZTk4YzMzMmVjZDYzY2U2MjViZTNkNGI2
NDNhMzI0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wOS0wNSAgQWxs
YW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQG5va2lhLmNvbT4KKworICAgICAgICBT
aW1wbGlmeSBoaXRUZXN0UmVzdWx0QXRQb2ludCBhbmQgbm9kZXNGcm9tUmVjdCBBUElzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTcyMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBjYWxscyB0
byBuZXcgQVBJLgorCisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJGcmFtZTo6SGl0VGVzdCk6CisKIDIwMTItMDgtMzAgIEJlbmphbWluIFBvdWxhaW4gIDxicG91
bGFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVwbGFjZSBKU0M6OlVTdHJpbmcgYnkgV1RGOjpT
dHJpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwppbmRleCA2MzFhMDFiNzNjNDE1YmY5Mjk4MGZmZTJiOWU3OTkxY2E2Mzkz
ZWU1Li5mMWMyNzM0ZmYzMTBiOGMyYmE4YWY5MzE2NzJkZDhkMGE1ZDIzYWQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjYgQEAKKzIwMTItMDktMDUgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFs
bGFuLmplbnNlbkBub2tpYS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkgaGl0VGVzdFJlc3VsdEF0
UG9pbnQgYW5kIG5vZGVzRnJvbVJlY3QgQVBJcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU3MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgY2FsbHMgdG8gbmV3IEFQSSBhbmQgdXBkYXRlIGV4
cG9ydGVkIHN5bWJvbHMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVj
dGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbjo6SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9u
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OmhhbmRsZUNvbnRleHRNZW51RXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpoaWdobGlnaHRQb3RlbnRpYWxBY3RpdmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6ZmluZFpvb21hYmxlQXJlYUZvclBvaW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNoYXJhY3Rl
ckluZGV4Rm9yUG9pbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtRGljdGlv
bmFyeUxvb2t1cEF0TG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzaG91bGRE
ZWxheVdpbmRvd09yZGVyaW5nRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjphY2Nl
cHRzRmlyc3RNb3VzZSk6CisgICAgICAgICogd2luL1dlYktpdDIuZGVmOgorICAgICAgICAqIHdp
bi9XZWJLaXQyQ0ZMaXRlLmRlZjoKKwogMjAxMi0wOS0wMyAgQWxsYW4gU2FuZGZlbGQgSmVuc2Vu
ICA8YWxsYW4uamVuc2VuQG5va2lhLmNvbT4KIAogICAgICAgICBBbGxvdyBjaGlsZC1mcmFtZSBj
b250ZW50IGluIGhpdC10ZXN0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggYmFlMzNmN2RhOTUy
ZmViNTkyMWQ2MWI4ZWE0NmYwY2MwMmU5OWRiYS4uNGZiMTk0MDU3MmY4ZjgwYzM4YjM1MjJmNDIy
OTI1Yzk3OWVhMzU1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4K
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTE1OCw3ICsxNTgsNyBAQCBf
X1pON1dlYkNvcmUxMkV2ZW50SGFuZGxlcjE0c2Nyb2xsT3ZlcmZsb3dFTlNfMTVTY3JvbGxEaXJl
Y3Rpb25FTlNfMTdTY3JvbGxHcmFudQogX19aTjdXZWJDb3JlMTJFdmVudEhhbmRsZXIxNWhhbmRs
ZUFjY2Vzc0tleUVSS05TXzIxUGxhdGZvcm1LZXlib2FyZEV2ZW50RQogX19aTjdXZWJDb3JlMTJF
dmVudEhhbmRsZXIxNmhhbmRsZVdoZWVsRXZlbnRFUktOU18xOFBsYXRmb3JtV2hlZWxFdmVudEUK
IF9fWk43V2ViQ29yZTEyRXZlbnRIYW5kbGVyMTdzY3JvbGxSZWN1cnNpdmVseUVOU18xNVNjcm9s
bERpcmVjdGlvbkVOU18xN1Njcm9sbEdyYW51bGFyaXR5RVBOU180Tm9kZUUKLV9fWk43V2ViQ29y
ZTEyRXZlbnRIYW5kbGVyMjBoaXRUZXN0UmVzdWx0QXRQb2ludEVSS05TXzIxRnJhY3Rpb25hbExh
eW91dFBvaW50RWJiTlNfMTdIaXRUZXN0U2Nyb2xsYmFyc0VqUktOU18yMEZyYWN0aW9uYWxMYXlv
dXRTaXplRQorX19aTjdXZWJDb3JlMTJFdmVudEhhbmRsZXIyMGhpdFRlc3RSZXN1bHRBdFBvaW50
RVJLTlNfMjFGcmFjdGlvbmFsTGF5b3V0UG9pbnRFalJLTlNfMjBGcmFjdGlvbmFsTGF5b3V0U2l6
ZUUKIF9fWk43V2ViQ29yZTEyRXZlbnRIYW5kbGVyMjFoYW5kbGVNb3VzZVByZXNzRXZlbnRFUktO
U18xOFBsYXRmb3JtTW91c2VFdmVudEUKIF9fWk43V2ViQ29yZTEyRXZlbnRIYW5kbGVyMjNoYW5k
bGVNb3VzZVJlbGVhc2VFdmVudEVSS05TXzE4UGxhdGZvcm1Nb3VzZUV2ZW50RQogX19aTjdXZWJD
b3JlMTJFdmVudEhhbmRsZXIyNGxvZ2ljYWxTY3JvbGxSZWN1cnNpdmVseUVOU18yMlNjcm9sbExv
Z2ljYWxEaXJlY3Rpb25FTlNfMTdTY3JvbGxHcmFudWxhcml0eUVQTlNfNE5vZGVFCkBAIC0xMzUz
LDcgKzEzNTMsNyBAQCBfX1pOSzdXZWJDb3JlN1J1bkxvb3A5VGltZXJCYXNlOGlzQWN0aXZlRXYK
IF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQxMHJlbmRlclZpZXdFdgogX19aTks3V2ViQ29yZThEb2N1
bWVudDExY29tcGxldGVVUkxFUktOM1dURjZTdHJpbmdFCiBfX1pOSzdXZWJDb3JlOERvY3VtZW50
MTNheE9iamVjdENhY2hlRXYKLV9fWk5LN1dlYkNvcmU4RG9jdW1lbnQxM25vZGVzRnJvbVJlY3RF
aWlqampqYmJiCitfX1pOSzdXZWJDb3JlOERvY3VtZW50MTNub2Rlc0Zyb21SZWN0RWlpampqamoK
IF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQxNGdldEVsZW1lbnRCeUlkRVJLTjNXVEYxMkF0b21pY1N0
cmluZ0UKIF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQzMWRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5j
b2RpbmdFUktOM1dURjZTdHJpbmdFCiBfX1pOSzdXZWJDb3JlOERvY3VtZW50NGJvZHlFdgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlciBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUub3JkZXIKaW5kZXggMzVhYmZlNjM1YjkzZGE0NGI0NzI1YTU0ZmIyMjNkMTgxNjczOGMx
Yy4uOTA1OWM4ZDNmOTkxNTRmMjVjMDVkM2JiNDZhNmYyNWY5MjA0MTRkNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lm9yZGVyCkBAIC0yMjc4NSw3ICsyMjc4NSw3IEBAIF9fWk5LN1dlYkNvcmUxMk5vZGVJdGVyYXRv
cjIwdXBkYXRlRm9yTm9kZVJlbW92YWxFUE5TXzROb2RlRVJOUzBfMTFOb2RlUG9pbnRlckUKIF9f
Wk43V2ViQ29yZTI3anNOb2RlSXRlcmF0b3JSZWZlcmVuY2VOb2RlRVBOM0pTQzlFeGVjU3RhdGVF
TlMwXzdKU1ZhbHVlRVJLTlMwXzEwSWRlbnRpZmllckUKIF9fWk5LN1dlYkNvcmU0Tm9kZTIwdHJh
dmVyc2VQcmV2aW91c05vZGVFUEtTMF8KIF9fWk43V2ViQ29yZTM3anNOb2RlSXRlcmF0b3JQcm90
b3R5cGVGdW5jdGlvbkRldGFjaEVQTjNKU0M5RXhlY1N0YXRlRQotX19aTks3V2ViQ29yZThEb2N1
bWVudDEzbm9kZXNGcm9tUmVjdEVpaWpqampiYmIKK19fWk5LN1dlYkNvcmU4RG9jdW1lbnQxM25v
ZGVzRnJvbVJlY3RFaWlqampqagogX19aTks3V2ViQ29yZThEb2N1bWVudDE3aGFuZGxlWmVyb1Bh
ZGRpbmdFUktOU18xNEhpdFRlc3RSZXF1ZXN0RVJOU18xM0hpdFRlc3RSZXN1bHRFCiBfX1pOM1dU
RjIxTGlzdEhhc2hTZXRUcmFuc2xhdG9ySU5TXzZSZWZQdHJJTjdXZWJDb3JlNE5vZGVFRUVMbTI1
NkVOU183UHRySGFzaElTNF9FRUU5dHJhbnNsYXRlRVJQTlNfMTVMaXN0SGFzaFNldE5vZGVJUzRf
TG0yNTZFRUVSS1M0X1BOU18yNExpc3RIYXNoU2V0Tm9kZUFsbG9jYXRvcklTNF9MbTI1NkVFRQog
X19aTjdXZWJDb3JlMjFTdGF0aWNIYXNoU2V0Tm9kZUxpc3RDMUVSTjNXVEYxMUxpc3RIYXNoU2V0
SU5TMV82UmVmUHRySU5TXzROb2RlRUVFTG0yNTZFTlMxXzdQdHJIYXNoSVM1X0VFRUUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCmluZGV4IDQ0NjU3NTEzNzE0ZDgyY2I5YTI5YTkwNTlmMzA1MDY1ZjQ5
NWQ3NWYuLjNiNWFmZjU5NTRhZGY1MWNlZTBhN2ZkMTc0NjA1ZWJhZmQ0Y2NlYmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcApAQCAtMTM4NCw3ICsxMzg0LDcgQEAgU3RyaW5nIERvY3VtZW50Ojpz
dWdnZXN0ZWRNSU1FVHlwZSgpIGNvbnN0CiAvLyAqIG1ha2luZyBpdCByZWNlaXZlIGEgcmVjdCBh
cyBwYXJhbWV0ZXIsIGkuZS4gbm9kZXNGcm9tUmVjdCh4LCB5LCB3LCBoKTsKIC8vICogbWFraW5n
IGl0IHJlY2VpdmUgdGhlIGV4cGFkaW5nIHNpemUgb2YgZWFjaCBkaXJlY3Rpb24gc2VwYXJhdGVs
eSwKIC8vICAgaS5lLiBub2Rlc0Zyb21SZWN0KHgsIHksIHRvcFNpemUsIHJpZ2h0U2l6ZSwgYm90
dG9tU2l6ZSwgbGVmdFNpemUpOwotUGFzc1JlZlB0cjxOb2RlTGlzdD4gRG9jdW1lbnQ6Om5vZGVz
RnJvbVJlY3QoaW50IGNlbnRlclgsIGludCBjZW50ZXJZLCB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1
bnNpZ25lZCByaWdodFBhZGRpbmcsIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxl
ZnRQYWRkaW5nLCBib29sIGlnbm9yZUNsaXBwaW5nLCBib29sIGFsbG93U2hhZG93Q29udGVudCwg
Ym9vbCBhbGxvd0NoaWxkRnJhbWVDb250ZW50KSBjb25zdAorUGFzc1JlZlB0cjxOb2RlTGlzdD4g
RG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QoaW50IGNlbnRlclgsIGludCBjZW50ZXJZLCB1bnNpZ25l
ZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcsIHVuc2lnbmVkIGJvdHRvbVBhZGRp
bmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nLCBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RU
eXBlIGhpdFR5cGUpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFNoYXJlIGNvZGUgYmV0d2VlbiB0
aGlzLCBlbGVtZW50RnJvbVBvaW50IGFuZCBjYXJldFJhbmdlRnJvbVBvaW50LgogICAgIGlmICgh
cmVuZGVyZXIoKSkKQEAgLTEzOTksMTkgKzEzOTksMTEgQEAgUGFzc1JlZlB0cjxOb2RlTGlzdD4g
RG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QoaW50IGNlbnRlclgsIGludCBjZW50ZXJZLCB1bnNpZ25l
ZAogICAgIGZsb2F0IHpvb21GYWN0b3IgPSBmcmFtZS0+cGFnZVpvb21GYWN0b3IoKTsKICAgICBM
YXlvdXRQb2ludCBwb2ludCA9IHJvdW5kZWRMYXlvdXRQb2ludChGbG9hdFBvaW50KGNlbnRlclgg
KiB6b29tRmFjdG9yICsgdmlldygpLT5zY3JvbGxYKCksIGNlbnRlclkgKiB6b29tRmFjdG9yICsg
dmlldygpLT5zY3JvbGxZKCkpKTsKIAotICAgIGludCB0eXBlID0gSGl0VGVzdFJlcXVlc3Q6OlJl
YWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZTsKKyAgICBIaXRUZXN0UmVxdWVzdCByZXF1
ZXN0KGhpdFR5cGUpOwogCiAgICAgLy8gV2hlbiBpZ25vcmVDbGlwcGluZyBpcyBmYWxzZSwgdGhp
cyBtZXRob2QgcmV0dXJucyBudWxsIGZvciBjb29yZGluYXRlcyBvdXRzaWRlIG9mIHRoZSB2aWV3
cG9ydC4KLSAgICBpZiAoaWdub3JlQ2xpcHBpbmcpCi0gICAgICAgIHR5cGUgfD0gSGl0VGVzdFJl
cXVlc3Q6Oklnbm9yZUNsaXBwaW5nOwotICAgIGVsc2UgaWYgKCFmcmFtZVZpZXctPnZpc2libGVD
b250ZW50UmVjdCgpLmludGVyc2VjdHMoSGl0VGVzdFJlc3VsdDo6cmVjdEZvclBvaW50KHBvaW50
LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nKSkp
CisgICAgaWYgKCFyZXF1ZXN0Lmlnbm9yZUNsaXBwaW5nKCkgJiYgIWZyYW1lVmlldy0+dmlzaWJs
ZUNvbnRlbnRSZWN0KCkuaW50ZXJzZWN0cyhIaXRUZXN0UmVzdWx0OjpyZWN0Rm9yUG9pbnQocG9p
bnQsIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcp
KSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKGFsbG93U2hhZG93Q29udGVudCkKLSAgICAg
ICAgdHlwZSB8PSBIaXRUZXN0UmVxdWVzdDo6QWxsb3dTaGFkb3dDb250ZW50OwotICAgIGlmIChh
bGxvd0NoaWxkRnJhbWVDb250ZW50KQotICAgICAgICB0eXBlIHw9IEhpdFRlc3RSZXF1ZXN0OjpB
bGxvd0NoaWxkRnJhbWVDb250ZW50OwotCi0gICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdCh0eXBl
KTsKIAogICAgIC8vIFBhc3NpbmcgYSB6ZXJvIHBhZGRpbmcgd2lsbCB0cmlnZ2VyIGEgcmVjdCBo
aXQgdGVzdCwgaG93ZXZlciBmb3IgdGhlIHB1cnBvc2VzIG9mIG5vZGVzRnJvbVJlY3QsCiAgICAg
Ly8gd2Ugc3BlY2lhbCBoYW5kbGUgdGhpcyBjYXNlIGluIG9yZGVyIHRvIHJldHVybiBhIHZhbGlk
IE5vZGVMaXN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCAyODcyZTVjMmFhOWIzNjI5YTU0NjBj
MTZiMjhhNGRjZmE0ZmZmZDk4Li4xMjQ1ZDdlNGEwNWM2OTA0MjUxYmI1NGQ1ZDc0NTgwMjc4MWNi
MjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkRP
TVRpbWVTdGFtcC5oIgogI2luY2x1ZGUgIkRvY3VtZW50RXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUg
IkRvY3VtZW50VGltaW5nLmgiCisjaW5jbHVkZSAiSGl0VGVzdFJlcXVlc3QuaCIKICNpbmNsdWRl
ICJJY29uVVJMLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ291bnRlcnMuaCIKICNpbmNsdWRlICJJ
bnRSZWN0LmgiCkBAIC0zNzYsMTIgKzM3NywxMCBAQCBwdWJsaWM6CiAgICAgICogQHBhcmFtIHJp
Z2h0UGFkZGluZyBIb3cgbXVjaCB0byBleHBhbmQgdGhlIHJpZ2h0IG9mIHRoZSByZWN0YW5nbGUK
ICAgICAgKiBAcGFyYW0gYm90dG9tUGFkZGluZyBIb3cgbXVjaCB0byBleHBhbmQgdGhlIGJvdHRv
bSBvZiB0aGUgcmVjdGFuZ2xlCiAgICAgICogQHBhcmFtIGxlZnRQYWRkaW5nIEhvdyBtdWNoIHRv
IGV4cGFuZCB0aGUgbGVmdCBvZiB0aGUgcmVjdGFuZ2xlCi0gICAgICogQHBhcmFtIGlnbm9yZUNs
aXBwaW5nIHdoZXRoZXIgb3Igbm90IHRvIGlnbm9yZSB0aGUgcm9vdCBzY3JvbGwgZnJhbWUgd2hl
biByZXRyaWV2aW5nIHRoZSBlbGVtZW50LgotICAgICAqICAgICAgICBJZiBmYWxzZSwgdGhpcyBt
ZXRob2QgcmV0dXJucyBudWxsIGZvciBjb29yZGluYXRlcyBvdXRzaWRlIG9mIHRoZSB2aWV3cG9y
dC4KICAgICAgKi8KICAgICBQYXNzUmVmUHRyPE5vZGVMaXN0PiBub2Rlc0Zyb21SZWN0KGludCBj
ZW50ZXJYLCBpbnQgY2VudGVyWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFkZGluZywgdW5zaWduZWQg
Ym90dG9tUGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIGlnbm9yZUNsaXBwaW5nLCBib29sIGFsbG93U2hhZG93
Q29udGVudCwgYm9vbCBhbGxvd0NoaWxkRnJhbWVDb250ZW50ID0gZmFsc2UpIGNvbnN0OworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGl0VGVzdFJlcXVlc3Q6OkhpdFRl
c3RSZXF1ZXN0VHlwZSBoaXRUeXBlID0gSGl0VGVzdFJlcXVlc3Q6OkRlZmF1bHQoZmFsc2UpKSBj
b25zdDsKICAgICBFbGVtZW50KiBlbGVtZW50RnJvbVBvaW50KGludCB4LCBpbnQgeSkgY29uc3Q7
CiAgICAgUGFzc1JlZlB0cjxSYW5nZT4gY2FyZXRSYW5nZUZyb21Qb2ludChpbnQgeCwgaW50IHkp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKaW5k
ZXggZDkwMTlmYzMwZmQ1ZDg2NDZmMmY0ZWZmNGVhNTRmNDg5Zjg5Mzg1Yi4uODdmM2NjNGQ2MTli
NTY2YzA1ZDIzNjFmNDk1MDY3NTQxYmQyNWMyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q29udGV4dE1lbnVDb250cm9sbGVyLmNwcApAQCAtMTQ5LDcgKzE0OSw3IEBAIFBhc3NPd25QdHI8
Q29udGV4dE1lbnU+IENvbnRleHRNZW51Q29udHJvbGxlcjo6Y3JlYXRlQ29udGV4dE1lbnUoRXZl
bnQqIGV2ZW50KQogICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KG1vdXNlRXZlbnQtPmFic29sdXRl
TG9jYXRpb24oKSk7CiAKICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZXZlbnQtPnRhcmdldCgpLT50
b05vZGUoKS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSkKLSAgICAgICAgcmVzdWx0ID0gZnJhbWUtPmV2
ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChtb3VzZUV2ZW50LT5hYnNvbHV0ZUxv
Y2F0aW9uKCksIGZhbHNlKTsKKyAgICAgICAgcmVzdWx0ID0gZnJhbWUtPmV2ZW50SGFuZGxlcigp
LT5oaXRUZXN0UmVzdWx0QXRQb2ludChtb3VzZUV2ZW50LT5hYnNvbHV0ZUxvY2F0aW9uKCkpOwog
CiAgICAgaWYgKCFyZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAppbmRleCBjNzQ0YzE4
OWViZGJmNGYwYTQwYjhhOTlkOGU3OWEyNWRiMGE2ZDY4Li4zMGEwN2U4YjkwNmMyYmM3ZGZjMGQ4
NTJjZDViYWJmYzdmMDVhOWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdD
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNw
cApAQCAtNTQ0LDcgKzU0NCw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmNhblByb2Nlc3NEcmFn
KERyYWdEYXRhKiBkcmFnRGF0YSkKICAgICBpZiAoIW1fcGFnZS0+bWFpbkZyYW1lKCktPmNvbnRl
bnRSZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXN1bHQgPSBtX3Bh
Z2UtPm1haW5GcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQocG9p
bnQsIHRydWUpOworICAgIHJlc3VsdCA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxl
cigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChwb2ludCwgSGl0VGVzdFJlcXVlc3Q6OkRlZmF1bHQo
dHJ1ZSkpOwogCiAgICAgaWYgKCFyZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTcyNiw3ICs3MjYsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpz
dGFydERyYWcoRnJhbWUqIHNyYywgY29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgRHJhZ09wZXJhdGlv
bgogICAgIGlmICghc3JjLT52aWV3KCkgfHwgIXNyYy0+Y29udGVudFJlbmRlcmVyKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIEhpdFRlc3RSZXN1bHQgaGl0VGVzdFJlc3VsdCA9IHNy
Yy0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGRyYWdPcmlnaW4sIHRydWUp
OworICAgIEhpdFRlc3RSZXN1bHQgaGl0VGVzdFJlc3VsdCA9IHNyYy0+ZXZlbnRIYW5kbGVyKCkt
PmhpdFRlc3RSZXN1bHRBdFBvaW50KGRyYWdPcmlnaW4sIEhpdFRlc3RSZXF1ZXN0OjpEZWZhdWx0
KHRydWUpKTsKICAgICBpZiAoIXN0YXRlLm1fZHJhZ1NyYy0+Y29udGFpbnMoaGl0VGVzdFJlc3Vs
dC5pbm5lck5vZGUoKSkpCiAgICAgICAgIC8vIFRoZSBvcmlnaW5hbCBub2RlIGJlaW5nIGRyYWdn
ZWQgaXNuJ3QgdW5kZXIgdGhlIGRyYWcgb3JpZ2luIGFueW1vcmUuLi4gbWF5YmUgaXQgd2FzCiAg
ICAgICAgIC8vIGhpZGRlbiBvciBtb3ZlZCBvdXQgZnJvbSB1bmRlciB0aGUgY3Vyc29yLiBSZWdh
cmRsZXNzLCB3ZSBkb24ndCB3YW50IHRvIHN0YXJ0IGEgZHJhZyBvbgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuY3BwCmluZGV4IDAwMWZkNmQ5ZTllMTE2Mjk1ZDIwYzUwOTIzMDE5MjdhMDVk
N2RmOTAuLjQ5MzQyNWJkOWM3ZmNjOGMxODdlNWI2OWYxYmJhNjQwMDM5ZjMyNjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTEwMDcsNyArMTAwNyw3IEBAIHZvaWQgRXZl
bnRIYW5kbGVyOjp1cGRhdGVBdXRvc2Nyb2xsUmVuZGVyZXIoKQogICAgIGlmICghbV9hdXRvc2Ny
b2xsUmVuZGVyZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIEhpdFRlc3RSZXN1bHQgaGl0VGVz
dCA9IGhpdFRlc3RSZXN1bHRBdFBvaW50KG1fcGFuU2Nyb2xsU3RhcnRQb3MsIHRydWUpOworICAg
IEhpdFRlc3RSZXN1bHQgaGl0VGVzdCA9IGhpdFRlc3RSZXN1bHRBdFBvaW50KG1fcGFuU2Nyb2xs
U3RhcnRQb3MsIEhpdFRlc3RSZXF1ZXN0OjpEZWZhdWx0KHRydWUpKTsKIAogICAgIGlmIChOb2Rl
KiBub2RlQXRQb2ludCA9IGhpdFRlc3QuaW5uZXJOb2RlKCkpCiAgICAgICAgIG1fYXV0b3Njcm9s
bFJlbmRlcmVyID0gbm9kZUF0UG9pbnQtPnJlbmRlcmVyKCk7CkBAIC0xMDM5LDIyICsxMDM5LDE4
IEBAIERyYWdTb3VyY2VBY3Rpb24gRXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnU291cmNlQWN0aW9u
c0FsbG93ZWQoKSBjb25zdAogfQogI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAg
Ci1IaXRUZXN0UmVzdWx0IEV2ZW50SGFuZGxlcjo6aGl0VGVzdFJlc3VsdEF0UG9pbnQoY29uc3Qg
TGF5b3V0UG9pbnQmIHBvaW50LCBib29sIGFsbG93U2hhZG93Q29udGVudCwgYm9vbCBpZ25vcmVD
bGlwcGluZywgSGl0VGVzdFNjcm9sbGJhcnMgdGVzdFNjcm9sbGJhcnMsIEhpdFRlc3RSZXF1ZXN0
OjpIaXRUZXN0UmVxdWVzdFR5cGUgaGl0VHlwZSwgY29uc3QgTGF5b3V0U2l6ZSYgcGFkZGluZykK
K0hpdFRlc3RSZXN1bHQgRXZlbnRIYW5kbGVyOjpoaXRUZXN0UmVzdWx0QXRQb2ludChjb25zdCBM
YXlvdXRQb2ludCYgcG9pbnQsIEhpdFRlc3RSZXF1ZXN0OjpIaXRUZXN0UmVxdWVzdFR5cGUgaGl0
VHlwZSwgY29uc3QgTGF5b3V0U2l6ZSYgcGFkZGluZykKIHsKICAgICBIaXRUZXN0UmVzdWx0IHJl
c3VsdChwb2ludCwgcGFkZGluZy5oZWlnaHQoKSwgcGFkZGluZy53aWR0aCgpLCBwYWRkaW5nLmhl
aWdodCgpLCBwYWRkaW5nLndpZHRoKCkpOwogCiAgICAgaWYgKCFtX2ZyYW1lLT5jb250ZW50UmVu
ZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICBpZiAoaWdub3JlQ2xpcHBpbmcp
Ci0gICAgICAgIGhpdFR5cGUgfD0gSGl0VGVzdFJlcXVlc3Q6Oklnbm9yZUNsaXBwaW5nOwotICAg
IGlmIChhbGxvd1NoYWRvd0NvbnRlbnQpCi0gICAgICAgIGhpdFR5cGUgfD0gSGl0VGVzdFJlcXVl
c3Q6OkFsbG93U2hhZG93Q29udGVudDsKLSAgICBpZiAodGVzdFNjcm9sbGJhcnMgPT0gU2hvdWxk
SGl0VGVzdFNjcm9sbGJhcnMpCi0gICAgICAgIGhpdFR5cGUgfD0gSGl0VGVzdFJlcXVlc3Q6OlRl
c3RDaGlsZEZyYW1lU2Nyb2xsQmFyczsKICAgICAvLyBXZSBhbHdheXMgbmVlZCB0byBoYW5kbGUg
Y2hpbGQgZnJhbWUgY29udGVudC4KICAgICBoaXRUeXBlIHw9IEhpdFRlc3RSZXF1ZXN0OjpBbGxv
d0NoaWxkRnJhbWVDb250ZW50OwogCi0gICAgbV9mcmFtZS0+Y29udGVudFJlbmRlcmVyKCktPmhp
dFRlc3QoSGl0VGVzdFJlcXVlc3QoaGl0VHlwZSksIHJlc3VsdCk7CisgICAgSGl0VGVzdFJlcXVl
c3QgcmVxdWVzdChoaXRUeXBlKTsKKworICAgIG1fZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpLT5o
aXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7CiAKICAgICAvLyBJZiBvdXIgSGl0VGVzdFJlc3VsdCBp
cyBub3QgdmlzaWJsZSwgdGhlbiB3ZSBzdGFydGVkIGhpdCB0ZXN0aW5nIHRvbyBmYXIgZG93biB0
aGUgZnJhbWUgY2hhaW4uIAogICAgIC8vIEFub3RoZXIgaGl0IHRlc3QgYXQgdGhlIG1haW4gZnJh
bWUgbGV2ZWwgc2hvdWxkIGdldCB1cyB0aGUgY29ycmVjdCB2aXNpYmxlIHJlc3VsdC4KQEAgLTEw
NjYsMTIgKzEwNjIsMTIgQEAgSGl0VGVzdFJlc3VsdCBFdmVudEhhbmRsZXI6OmhpdFRlc3RSZXN1
bHRBdFBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCwgYm9vbAogICAgICAgICAgICAgRnJh
bWVWaWV3KiBtYWluVmlldyA9IG1haW5GcmFtZS0+dmlldygpOwogICAgICAgICAgICAgaWYgKHJl
c3VsdFZpZXcgJiYgbWFpblZpZXcpIHsKICAgICAgICAgICAgICAgICBJbnRQb2ludCBtYWluRnJh
bWVQb2ludCA9IG1haW5WaWV3LT5yb290Vmlld1RvQ29udGVudHMocmVzdWx0Vmlldy0+Y29udGVu
dHNUb1Jvb3RWaWV3KHJvdW5kZWRJbnRQb2ludChyZXN1bHQucG9pbnQoKSkpKTsKLSAgICAgICAg
ICAgICAgICByZXN1bHQgPSBtYWluRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0
QXRQb2ludChtYWluRnJhbWVQb2ludCwgYWxsb3dTaGFkb3dDb250ZW50LCBpZ25vcmVDbGlwcGlu
ZywgdGVzdFNjcm9sbGJhcnMsIGhpdFR5cGUsIHBhZGRpbmcpOworICAgICAgICAgICAgICAgIHJl
c3VsdCA9IG1haW5GcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KG1h
aW5GcmFtZVBvaW50LCBoaXRUeXBlLCBwYWRkaW5nKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogICAgIH0KIAotICAgIGlmICghYWxsb3dTaGFkb3dDb250ZW50KQorICAgIGlmICghcmVxdWVz
dC5hbGxvd3NTaGFkb3dDb250ZW50KCkpCiAgICAgICAgIHJlc3VsdC5zZXRUb05vblNoYWRvd0Fu
Y2VzdG9yKCk7CiAKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTQ4MSw3ICsxNDc3LDcgQEAgYm9v
bCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNl
RXZlbnQmIG1vdXNlRXZlbnQpCiAgICAgbV9tb3VzZURvd25XYXNJblN1YmZyYW1lID0gZmFsc2U7
CiAKICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUpOwot
ICAgIC8vIFNhdmUgdGhlIGRvY3VtZW50IHBvaW50IHdlIGdlbmVyYXRlIGluIGNhc2UgdGhlIHdp
bmRvdyBjb29yZGluYXRlIGlzIGludmFsaWRhdGVkIGJ5IHdoYXQgaGFwcGVucyAKKyAgICAvLyBT
YXZlIHRoZSBkb2N1bWVudCBwb2ludCB3ZSBnZW5lcmF0ZSBpbiBjYXNlIHRoZSB3aW5kb3cgY29v
cmRpbmF0ZSBpcyBpbnZhbGlkYXRlZCBieSB3aGF0IGhhcHBlbnMKICAgICAvLyB3aGVuIHdlIGRp
c3BhdGNoIHRoZSBldmVudC4KICAgICBMYXlvdXRQb2ludCBkb2N1bWVudFBvaW50ID0gZG9jdW1l
bnRQb2ludEZvcldpbmRvd1BvaW50KG1fZnJhbWUsIG1vdXNlRXZlbnQucG9zaXRpb24oKSk7CiAg
ICAgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyBtZXYgPSBtX2ZyYW1lLT5kb2N1bWVudCgp
LT5wcmVwYXJlTW91c2VFdmVudChyZXF1ZXN0LCBkb2N1bWVudFBvaW50LCBtb3VzZUV2ZW50KTsK
QEAgLTIzODEsNyArMjM3Nyw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlRXZl
bnQoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKICAgICAgICAgZXZl
bnRUYXJnZXQgPSBtX3Njcm9sbEdlc3R1cmVIYW5kbGluZ05vZGUuZ2V0KCk7CiAKICAgICBpZiAo
IWV2ZW50VGFyZ2V0KSB7Ci0gICAgICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gaGl0VGVzdFJl
c3VsdEF0UG9pbnQoZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCksIGZhbHNlLCBmYWxzZSwgRG9udEhp
dFRlc3RTY3JvbGxiYXJzLCBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVz
dDo6QWN0aXZlKTsKKyAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBoaXRUZXN0UmVzdWx0
QXRQb2ludChnZXN0dXJlRXZlbnQucG9zaXRpb24oKSk7CiAgICAgICAgIGV2ZW50VGFyZ2V0ID0g
cmVzdWx0LnRhcmdldE5vZGUoKTsKICAgICB9CiAKQEAgLTI0ODMsOSArMjQ3OSw4IEBAIGJvb2wg
RXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlU2Nyb2xsQ29yZShjb25zdCBQbGF0Zm9ybUdlc3R1
cmVFdmVudCYgZ2VzdHVyZUV2CiAjaWYgRU5BQkxFKFRPVUNIX0FESlVTVE1FTlQpCiBib29sIEV2
ZW50SGFuZGxlcjo6YmVzdENsaWNrYWJsZU5vZGVGb3JUb3VjaFBvaW50KGNvbnN0IEludFBvaW50
JiB0b3VjaENlbnRlciwgY29uc3QgSW50U2l6ZSYgdG91Y2hSYWRpdXMsIEludFBvaW50JiB0YXJn
ZXRQb2ludCwgTm9kZSomIHRhcmdldE5vZGUpCiB7Ci0gICAgSGl0VGVzdFJlcXVlc3Q6OkhpdFRl
c3RSZXF1ZXN0VHlwZSBoaXRUeXBlID0gSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVz
dFJlcXVlc3Q6OkFjdGl2ZTsKICAgICBJbnRQb2ludCBoaXRUZXN0UG9pbnQgPSBtX2ZyYW1lLT52
aWV3KCktPndpbmRvd1RvQ29udGVudHModG91Y2hDZW50ZXIpOwotICAgIEhpdFRlc3RSZXN1bHQg
cmVzdWx0ID0gaGl0VGVzdFJlc3VsdEF0UG9pbnQoaGl0VGVzdFBvaW50LCAvKmFsbG93U2hhZG93
Q29udGVudCovIHRydWUsIC8qaWdub3JlQ2xpcHBpbmcqLyBmYWxzZSwgRG9udEhpdFRlc3RTY3Jv
bGxiYXJzLCBoaXRUeXBlLCB0b3VjaFJhZGl1cyk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQg
PSBoaXRUZXN0UmVzdWx0QXRQb2ludChoaXRUZXN0UG9pbnQsIEhpdFRlc3RSZXF1ZXN0OjpEZWZh
dWx0KHRydWUpLCB0b3VjaFJhZGl1cyk7CiAKICAgICBJbnRSZWN0IHRvdWNoUmVjdCh0b3VjaENl
bnRlciAtIHRvdWNoUmFkaXVzLCB0b3VjaFJhZGl1cyArIHRvdWNoUmFkaXVzKTsKICAgICBSZWZQ
dHI8U3RhdGljSGFzaFNldE5vZGVMaXN0PiBub2RlTGlzdCA9IFN0YXRpY0hhc2hTZXROb2RlTGlz
dDo6YWRvcHQocmVzdWx0LnJlY3RCYXNlZFRlc3RSZXN1bHQoKSk7CkBAIC0yNTAyLDkgKzI0OTcs
OCBAQCBib29sIEV2ZW50SGFuZGxlcjo6YmVzdENsaWNrYWJsZU5vZGVGb3JUb3VjaFBvaW50KGNv
bnN0IEludFBvaW50JiB0b3VjaENlbnRlciwgYwogCiBib29sIEV2ZW50SGFuZGxlcjo6YmVzdENv
bnRleHRNZW51Tm9kZUZvclRvdWNoUG9pbnQoY29uc3QgSW50UG9pbnQmIHRvdWNoQ2VudGVyLCBj
b25zdCBJbnRTaXplJiB0b3VjaFJhZGl1cywgSW50UG9pbnQmIHRhcmdldFBvaW50LCBOb2RlKiYg
dGFyZ2V0Tm9kZSkKIHsKLSAgICBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhp
dFR5cGUgPSBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZl
OwogICAgIEludFBvaW50IGhpdFRlc3RQb2ludCA9IG1fZnJhbWUtPnZpZXcoKS0+d2luZG93VG9D
b250ZW50cyh0b3VjaENlbnRlcik7Ci0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBoaXRUZXN0
UmVzdWx0QXRQb2ludChoaXRUZXN0UG9pbnQsIC8qYWxsb3dTaGFkb3dDb250ZW50Ki8gdHJ1ZSwg
LyppZ25vcmVDbGlwcGluZyovIGZhbHNlLCBEb250SGl0VGVzdFNjcm9sbGJhcnMsIGhpdFR5cGUs
IHRvdWNoUmFkaXVzKTsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGhpdFRlc3RSZXN1bHRB
dFBvaW50KGhpdFRlc3RQb2ludCwgSGl0VGVzdFJlcXVlc3Q6OkRlZmF1bHQodHJ1ZSksIHRvdWNo
UmFkaXVzKTsKIAogICAgIEludFJlY3QgdG91Y2hSZWN0KHRvdWNoQ2VudGVyIC0gdG91Y2hSYWRp
dXMsIHRvdWNoUmFkaXVzICsgdG91Y2hSYWRpdXMpOwogICAgIFJlZlB0cjxTdGF0aWNIYXNoU2V0
Tm9kZUxpc3Q+IG5vZGVMaXN0ID0gU3RhdGljSGFzaFNldE5vZGVMaXN0OjphZG9wdChyZXN1bHQu
cmVjdEJhc2VkVGVzdFJlc3VsdCgpKTsKQEAgLTI1MTMsOSArMjUwNyw4IEBAIGJvb2wgRXZlbnRI
YW5kbGVyOjpiZXN0Q29udGV4dE1lbnVOb2RlRm9yVG91Y2hQb2ludChjb25zdCBJbnRQb2ludCYg
dG91Y2hDZW50ZXIsCiAKIGJvb2wgRXZlbnRIYW5kbGVyOjpiZXN0Wm9vbWFibGVBcmVhRm9yVG91
Y2hQb2ludChjb25zdCBJbnRQb2ludCYgdG91Y2hDZW50ZXIsIGNvbnN0IEludFNpemUmIHRvdWNo
UmFkaXVzLCBJbnRSZWN0JiB0YXJnZXRBcmVhLCBOb2RlKiYgdGFyZ2V0Tm9kZSkKIHsKLSAgICBI
aXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhpdFR5cGUgPSBIaXRUZXN0UmVxdWVz
dDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlOwogICAgIEludFBvaW50IGhpdFRl
c3RQb2ludCA9IG1fZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyh0b3VjaENlbnRlcik7
Ci0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBoaXRUZXN0UmVzdWx0QXRQb2ludChoaXRUZXN0
UG9pbnQsIC8qYWxsb3dTaGFkb3dDb250ZW50Ki8gZmFsc2UsIC8qaWdub3JlQ2xpcHBpbmcqLyBm
YWxzZSwgRG9udEhpdFRlc3RTY3JvbGxiYXJzLCBoaXRUeXBlLCB0b3VjaFJhZGl1cyk7CisgICAg
SGl0VGVzdFJlc3VsdCByZXN1bHQgPSBoaXRUZXN0UmVzdWx0QXRQb2ludChoaXRUZXN0UG9pbnQs
IEhpdFRlc3RSZXF1ZXN0OjpEZWZhdWx0KGZhbHNlKSwgdG91Y2hSYWRpdXMpOwogCiAgICAgSW50
UmVjdCB0b3VjaFJlY3QodG91Y2hDZW50ZXIgLSB0b3VjaFJhZGl1cywgdG91Y2hSYWRpdXMgKyB0
b3VjaFJhZGl1cyk7CiAgICAgUmVmUHRyPFN0YXRpY0hhc2hTZXROb2RlTGlzdD4gbm9kZUxpc3Qg
PSBTdGF0aWNIYXNoU2V0Tm9kZUxpc3Q6OmFkb3B0KHJlc3VsdC5yZWN0QmFzZWRUZXN0UmVzdWx0
KCkpOwpAQCAtMzU1Nyw3ICszNTUwLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVRvdWNo
RXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JiBldmVudCkKICAgICAgICAgdW5zaWduZWQg
dG91Y2hQb2ludFRhcmdldEtleSA9IHBvaW50LmlkKCkgKyAxOwogICAgICAgICBSZWZQdHI8RXZl
bnRUYXJnZXQ+IHRvdWNoVGFyZ2V0OwogICAgICAgICBpZiAocG9pbnRTdGF0ZSA9PSBQbGF0Zm9y
bVRvdWNoUG9pbnQ6OlRvdWNoUHJlc3NlZCkgewotICAgICAgICAgICAgSGl0VGVzdFJlc3VsdCBy
ZXN1bHQgPSBoaXRUZXN0UmVzdWx0QXRQb2ludChwYWdlUG9pbnQsIC8qYWxsb3dTaGFkb3dDb250
ZW50Ki8gZmFsc2UsIGZhbHNlLCBEb250SGl0VGVzdFNjcm9sbGJhcnMsIGhpdFR5cGUpOworICAg
ICAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBoaXRUZXN0UmVzdWx0QXRQb2ludChwYWdl
UG9pbnQsIGhpdFR5cGUpOwogICAgICAgICAgICAgTm9kZSogbm9kZSA9IHJlc3VsdC5pbm5lck5v
ZGUoKTsKICAgICAgICAgICAgIEFTU0VSVChub2RlKTsKIApAQCAtMzU3NSw3ICszNTY4LDcgQEAg
Ym9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2
ZW50JiBldmVudCkKICAgICAgICAgICAgIHRvdWNoVGFyZ2V0ID0gbm9kZTsKICAgICAgICAgfSBl
bHNlIGlmIChwb2ludFN0YXRlID09IFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hSZWxlYXNlZCB8
fCBwb2ludFN0YXRlID09IFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hDYW5jZWxsZWQpIHsKICAg
ICAgICAgICAgIC8vIFdlIG9ubHkgcGVyZm9ybSBhIGhpdHRlc3Qgb24gcmVsZWFzZSBvciBjYW5j
ZWwgdG8gdW5zZXQgOmFjdGl2ZSBvciA6aG92ZXIgc3RhdGUuCi0gICAgICAgICAgICBoaXRUZXN0
UmVzdWx0QXRQb2ludChwYWdlUG9pbnQsIC8qYWxsb3dTaGFkb3dDb250ZW50Ki8gZmFsc2UsIGZh
bHNlLCBEb250SGl0VGVzdFNjcm9sbGJhcnMsIGhpdFR5cGUpOworICAgICAgICAgICAgaGl0VGVz
dFJlc3VsdEF0UG9pbnQocGFnZVBvaW50LCBoaXRUeXBlKTsKICAgICAgICAgICAgIC8vIFRoZSB0
YXJnZXQgc2hvdWxkIGJlIHRoZSBvcmlnaW5hbCB0YXJnZXQgZm9yIHRoaXMgdG91Y2gsIHNvIGdl
dCBpdCBmcm9tIHRoZSBoYXNobWFwLiBBcyBpdCdzIGEgcmVsZWFzZSBvciBjYW5jZWwKICAgICAg
ICAgICAgIC8vIHdlIGFsc28gcmVtb3ZlIGl0IGZyb20gdGhlIG1hcC4KICAgICAgICAgICAgIHRv
dWNoVGFyZ2V0ID0gbV9vcmlnaW5hdGluZ1RvdWNoUG9pbnRUYXJnZXRzLnRha2UodG91Y2hQb2lu
dFRhcmdldEtleSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAppbmRleCA2ZDhhMGFiNzY3
M2E4YzhmZGZiNGM5YTk1ZGJmYzFhYWQ5NTVkNDg3Li4yMmI1OWZjZTdiYWFhNDEwN2M2ODBiZjlm
ODAyNjlkNmEyODliYmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFu
ZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKQEAgLTg4LDgg
Kzg4LDYgQEAgZXh0ZXJuIGNvbnN0IGludCBUZXh0RHJhZ0h5c3RlcmVzaXM7CiBleHRlcm4gY29u
c3QgaW50IEdlbmVyYWxEcmFnSHlzdGVyZXNpczsKICNlbmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQ
T1JUKQogCi1lbnVtIEhpdFRlc3RTY3JvbGxiYXJzIHsgU2hvdWxkSGl0VGVzdFNjcm9sbGJhcnMs
IERvbnRIaXRUZXN0U2Nyb2xsYmFycyB9OwotCiBjbGFzcyBFdmVudEhhbmRsZXIgewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKEV2ZW50SGFuZGxlcik7CiBwdWJsaWM6CkBAIC0xMTUsOSArMTEz
LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRTb29uKCk7
CiAgICAgdm9pZCBkaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudFNvb25JblF1YWQoY29uc3QgRmxv
YXRRdWFkJik7CiAKLSAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3RSZXN1bHRBdFBvaW50KGNvbnN0
IExheW91dFBvaW50JiwgYm9vbCBhbGxvd1NoYWRvd0NvbnRlbnQsIGJvb2wgaWdub3JlQ2xpcHBp
bmcgPSBmYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhpdFRl
c3RTY3JvbGxiYXJzIHNjcm9sbGJhcnMgPSBEb250SGl0VGVzdFNjcm9sbGJhcnMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJl
cXVlc3RUeXBlIGhpdFR5cGUgPSBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVx
dWVzdDo6QWN0aXZlLAorICAgIEhpdFRlc3RSZXN1bHQgaGl0VGVzdFJlc3VsdEF0UG9pbnQoY29u
c3QgTGF5b3V0UG9pbnQmLCBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhpdFR5
cGUgPSBIaXRUZXN0UmVxdWVzdDo6RGVmYXVsdChmYWxzZSksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBMYXlvdXRTaXplJiBwYWRkaW5nID0gTGF5b3V0U2l6
ZSgpKTsKIAogICAgIGJvb2wgbW91c2VQcmVzc2VkKCkgY29uc3QgeyByZXR1cm4gbV9tb3VzZVBy
ZXNzZWQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAppbmRleCAwYjk0
MThiYTMyYmI5YzRjNTdiZDYyNTQ1NWQ4MjBiYzg5ZGMxYTAxLi5hMTJhMDQ1NzFlN2UyMDIzM2Ix
ZDI4YTJiNzZlMTM3YWJmNmQ2NDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zv
Y3VzQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xs
ZXIuY3BwCkBAIC03NDUsNyArNzQ1LDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlRm9jdXNDYW5kaWRh
dGVJZk5lZWRlZChGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIGNvbnN0IEZvY3VzQ2EKICAgICAg
ICAgLy8gSWYgMiBub2RlcyBhcmUgaW50ZXJzZWN0aW5nLCBkbyBoaXQgdGVzdCB0byBmaW5kIHdo
aWNoIG5vZGUgaW4gb24gdG9wLgogICAgICAgICBMYXlvdXRVbml0IHggPSBpbnRlcnNlY3Rpb25S
ZWN0LngoKSArIGludGVyc2VjdGlvblJlY3Qud2lkdGgoKSAvIDI7CiAgICAgICAgIExheW91dFVu
aXQgeSA9IGludGVyc2VjdGlvblJlY3QueSgpICsgaW50ZXJzZWN0aW9uUmVjdC5oZWlnaHQoKSAv
IDI7Ci0gICAgICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gY2FuZGlkYXRlLnZpc2libGVOb2Rl
LT5kb2N1bWVudCgpLT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVz
dFJlc3VsdEF0UG9pbnQoSW50UG9pbnQoeCwgeSksIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgSGl0
VGVzdFJlc3VsdCByZXN1bHQgPSBjYW5kaWRhdGUudmlzaWJsZU5vZGUtPmRvY3VtZW50KCktPnBh
Z2UoKS0+bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChJ
bnRQb2ludCh4LCB5KSwgSGl0VGVzdFJlcXVlc3Q6OkRlZmF1bHQoZmFsc2UsIHRydWUpKTsKICAg
ICAgICAgaWYgKGNhbmRpZGF0ZS52aXNpYmxlTm9kZS0+Y29udGFpbnMocmVzdWx0LmlubmVyTm9k
ZSgpKSkgewogICAgICAgICAgICAgY2xvc2VzdCA9IGNhbmRpZGF0ZTsKICAgICAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggYjM2NDhmNTI0NzAxOWRjMjlkM2RmNTUxMWQ5
Mjg2YmI4OGExMTFhZS4uODQ3MjNmM2U4Y2U5YTFiZDBmMDg1MDIzNGMyOTMwNTYzOGEwNmU5NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTcyNCw3ICs3MjQsNyBAQCBTdHJpbmcgRnJhbWU6OmRp
c3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2RpbmcoY29uc3QgU3RyaW5nJiBzdHIpIGNvbnN0CiAK
IFZpc2libGVQb3NpdGlvbiBGcmFtZTo6dmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQoY29uc3QgSW50
UG9pbnQmIGZyYW1lUG9pbnQpCiB7Ci0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBldmVudEhh
bmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoZnJhbWVQb2ludCwgdHJ1ZSk7CisgICAgSGl0
VGVzdFJlc3VsdCByZXN1bHQgPSBldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQo
ZnJhbWVQb2ludCwgSGl0VGVzdFJlcXVlc3Q6OkRlZmF1bHQodHJ1ZSkpOwogICAgIE5vZGUqIG5v
ZGUgPSByZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCk7CiAgICAgaWYgKCFub2RlKQogICAgICAg
ICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7CkBAIC03NDYsNyArNzQ2LDcgQEAgRG9jdW1lbnQq
IEZyYW1lOjpkb2N1bWVudEF0UG9pbnQoY29uc3QgSW50UG9pbnQmIHBvaW50KQogICAgIEhpdFRl
c3RSZXN1bHQgcmVzdWx0ID0gSGl0VGVzdFJlc3VsdChwdCk7CiAKICAgICBpZiAoY29udGVudFJl
bmRlcmVyKCkpCi0gICAgICAgIHJlc3VsdCA9IGV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0
QXRQb2ludChwdCwgZmFsc2UpOworICAgICAgICByZXN1bHQgPSBldmVudEhhbmRsZXIoKS0+aGl0
VGVzdFJlc3VsdEF0UG9pbnQocHQpOwogICAgIHJldHVybiByZXN1bHQuaW5uZXJOb2RlKCkgPyBy
ZXN1bHQuaW5uZXJOb2RlKCktPmRvY3VtZW50KCkgOiAwOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1RvdWNoRGlzYW1iaWd1YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9Ub3VjaERpc2FtYmlndWF0aW9uLmNwcAppbmRleCA1ZWZlM2RiNDkxNDA1ZTczNjFkNzZi
NzdlZmIxMWVhNzM0MDZmMTdlLi43MzJkZGE0YjQyMTkyMDZjMmQzNzkxNjE0YmMzYjU0OGIzM2Rh
ZWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoRGlzYW1iaWd1YXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVG91Y2hEaXNhbWJpZ3VhdGlvbi5jcHAKQEAg
LTk2LDcgKzk2LDcgQEAgdm9pZCBmaW5kR29vZFRvdWNoVGFyZ2V0cyhjb25zdCBJbnRSZWN0JiB0
b3VjaEJveCwgRnJhbWUqIG1haW5GcmFtZSwgZmxvYXQgcGFnZVMKICAgICBJbnRQb2ludCB0b3Vj
aFBvaW50ID0gdG91Y2hCb3guY2VudGVyKCk7CiAgICAgSW50UG9pbnQgY29udGVudHNQb2ludCA9
IG1haW5GcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHRvdWNoUG9pbnQpOwogCi0gICAg
SGl0VGVzdFJlc3VsdCByZXN1bHQgPSBtYWluRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0
UmVzdWx0QXRQb2ludChjb250ZW50c1BvaW50LCBmYWxzZSwgZmFsc2UsIERvbnRIaXRUZXN0U2Ny
b2xsYmFycywgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25s
eSwgSW50U2l6ZShwYWRkaW5nLCBwYWRkaW5nKSk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQg
PSBtYWluRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChjb250ZW50
c1BvaW50LCBIaXRUZXN0UmVxdWVzdDo6RGVmYXVsdChmYWxzZSksIEludFNpemUocGFkZGluZywg
cGFkZGluZykpOwogICAgIGNvbnN0IExpc3RIYXNoU2V0PFJlZlB0cjxOb2RlPiA+JiBoaXRSZXN1
bHRzID0gcmVzdWx0LnJlY3RCYXNlZFRlc3RSZXN1bHQoKTsKIAogICAgIEhhc2hNYXA8Tm9kZSos
IFRvdWNoVGFyZ2V0RGF0YT4gdG91Y2hUYXJnZXRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0hpdFRlc3RSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SGl0VGVzdFJlcXVlc3QuaAppbmRleCAzZmFmODhhOWY5MTM3NjFlYzAxM2Q2ZTdkMmNkZGFmMzJm
ODRkNzlmLi4yMWM5NjFkMWRiNDljYmY5MTk3MjFkNDBlOTJlY2NhM2JjZGQzZjEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlcXVlc3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlcXVlc3QuaApAQCAtNDgsNiArNDgsMTYgQEAg
cHVibGljOgogICAgIHsKICAgICB9CiAKKyAgICBzdGF0aWMgSGl0VGVzdFJlcXVlc3RUeXBlIERl
ZmF1bHQoYm9vbCBhbGxvd1NoYWRvd0NvbnRlbnQsIGJvb2wgaWdub3JlQ2xpcHBpbmcgPSBmYWxz
ZSkKKyAgICB7CisgICAgICAgIEhpdFRlc3RSZXF1ZXN0VHlwZSB0eXBlKFJlYWRPbmx5IHwgQWN0
aXZlKTsKKyAgICAgICAgaWYgKGFsbG93U2hhZG93Q29udGVudCkKKyAgICAgICAgICAgIHR5cGUg
fD0gQWxsb3dTaGFkb3dDb250ZW50OworICAgICAgICBpZiAoaWdub3JlQ2xpcHBpbmcpCisgICAg
ICAgICAgICB0eXBlIHw9IElnbm9yZUNsaXBwaW5nOworICAgICAgICByZXR1cm4gdHlwZTsKKyAg
ICB9CisKICAgICBib29sIHJlYWRPbmx5KCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0VHlwZSAm
IFJlYWRPbmx5OyB9CiAgICAgYm9vbCBhY3RpdmUoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RU
eXBlICYgQWN0aXZlOyB9CiAgICAgYm9vbCBtb3ZlKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0
VHlwZSAmIE1vdmU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBkMDNm
MDNjMGJjNTYxOWUyNDMyZTdkOGQ2NjQ4ZTM4ZTEwZTdlNWVhLi4zY2RmN2JiNjI0NTcyZmMyODEx
YTBiZWYxZTBiNWM1MGVlMjEwOTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CkBAIC05NzIsOCArOTcyLDExIEBAIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IEludGVybmFsczo6bm9k
ZXNGcm9tUmVjdChEb2N1bWVudCogZG9jdW1lbnQsIGludCB4LCBpbnQgeSwKICAgICAgICAgZWMg
PSBJTlZBTElEX0FDQ0VTU19FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KKyAgICBIaXRU
ZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhpdFR5cGUgPSBIaXRUZXN0UmVxdWVzdDo6
RGVmYXVsdChhbGxvd1NoYWRvd0NvbnRlbnQsIGlnbm9yZUNsaXBwaW5nKTsKKyAgICBpZiAoYWxs
b3dDaGlsZEZyYW1lQ29udGVudCkKKyAgICAgICAgaGl0VHlwZSB8PSBIaXRUZXN0UmVxdWVzdDo6
QWxsb3dDaGlsZEZyYW1lQ29udGVudDsKIAotICAgIHJldHVybiBkb2N1bWVudC0+bm9kZXNGcm9t
UmVjdCh4LCB5LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQ
YWRkaW5nLCBpZ25vcmVDbGlwcGluZywgYWxsb3dTaGFkb3dDb250ZW50LCBhbGxvd0NoaWxkRnJh
bWVDb250ZW50KTsKKyAgICByZXR1cm4gZG9jdW1lbnQtPm5vZGVzRnJvbVJlY3QoeCwgeSwgdG9w
UGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0UGFkZGluZywgaGl0VHlw
ZSk7CiB9CiAKIHZvaWQgSW50ZXJuYWxzOjplbWl0SW5zcGVjdG9yRGlkQmVnaW5GcmFtZSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwIGIvU291
cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcAppbmRleCBkNWQ3ZDI2ZWMyYjdk
ZjliMTM2NGNhNzNjMGE4YmIyZjM5NmMyNDNlLi4yOTNmZGUzYmE5ODAxN2FhMzlkZTgxYjgwMzRl
YWVlNmZmZDNjMTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dl
YlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAK
QEAgLTI3NDYsNyArMjc0Niw3IEBAIFBhc3NSZWZQdHI8Tm9kZT4gV2ViUGFnZVByaXZhdGU6OmNv
bnRleHROb2RlKFRhcmdldERldGVjdGlvblN0cmF0ZWd5IHN0cmF0ZWd5KQogICAgICAgICByZXR1
cm4gcmVzdWx0Lm5vZGUoRmF0RmluZ2Vyc1Jlc3VsdDo6U2hhZG93Q29udGVudE5vdEFsbG93ZWQp
OwogICAgIH0KIAotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZXZlbnRIYW5kbGVyLT5oaXRU
ZXN0UmVzdWx0QXRQb2ludChjb250ZW50UG9zLCBmYWxzZSAvKmFsbG93U2hhZG93Q29udGVudCov
KTsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGV2ZW50SGFuZGxlci0+aGl0VGVzdFJlc3Vs
dEF0UG9pbnQoY29udGVudFBvcyk7CiAgICAgcmV0dXJuIHJlc3VsdC5pbm5lck5vZGUoKTsKIH0K
IApAQCAtMjgxOCw3ICsyODE4LDcgQEAgTm9kZSogV2ViUGFnZVByaXZhdGU6Om5vZGVGb3Jab29t
VW5kZXJQb2ludChjb25zdCBJbnRQb2ludCYgcG9pbnQpCiAgICAgaWYgKCFtX21haW5GcmFtZSkK
ICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IG1fbWFpbkZy
YW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQobWFwRnJvbVRyYW5zZm9y
bWVkKHBvaW50KSwgZmFsc2UpOworICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gbV9tYWluRnJh
bWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChtYXBGcm9tVHJhbnNmb3Jt
ZWQocG9pbnQpKTsKIAogICAgIE5vZGUqIG5vZGUgPSByZXN1bHQuaW5uZXJOb25TaGFyZWROb2Rl
KCk7CiAKQEAgLTQwMjcsNyArNDAyNyw3IEBAIGJvb2wgV2ViUGFnZVByaXZhdGU6OmhhbmRsZU1v
dXNlRXZlbnQoUGxhdGZvcm1Nb3VzZUV2ZW50JiBtb3VzZUV2ZW50KQogICAgIH0KIAogICAgIGlm
ICghbm9kZSkgewotICAgICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGV2ZW50SGFuZGxlci0+
aGl0VGVzdFJlc3VsdEF0UG9pbnQobWFwRnJvbVZpZXdwb3J0VG9Db250ZW50cyhtb3VzZUV2ZW50
LnBvc2l0aW9uKCkpLCBmYWxzZSAvKmFsbG93U2hhZG93Q29udGVudCovKTsKKyAgICAgICAgSGl0
VGVzdFJlc3VsdCByZXN1bHQgPSBldmVudEhhbmRsZXItPmhpdFRlc3RSZXN1bHRBdFBvaW50KG1h
cEZyb21WaWV3cG9ydFRvQ29udGVudHMobW91c2VFdmVudC5wb3NpdGlvbigpKSk7CiAgICAgICAg
IG5vZGUgPSByZXN1bHQuaW5uZXJOb2RlKCk7CiAgICAgfQogCkBAIC01MTkwLDcgKzUxOTAsNyBA
QCBXZWJET01Eb2N1bWVudCBXZWJQYWdlOjpkb2N1bWVudCgpIGNvbnN0CiAKIFdlYkRPTU5vZGUg
V2ViUGFnZTo6bm9kZUF0UG9pbnQoaW50IHgsIGludCB5KQogewotICAgIEhpdFRlc3RSZXN1bHQg
cmVzdWx0ID0gZC0+bV9tYWluRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQ
b2ludChkLT5tYXBGcm9tVHJhbnNmb3JtZWQoSW50UG9pbnQoeCwgeSkpLCBmYWxzZSk7CisgICAg
SGl0VGVzdFJlc3VsdCByZXN1bHQgPSBkLT5tX21haW5GcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhp
dFRlc3RSZXN1bHRBdFBvaW50KGQtPm1hcEZyb21UcmFuc2Zvcm1lZChJbnRQb2ludCh4LCB5KSkp
OwogICAgIE5vZGUqIG5vZGUgPSByZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCk7CiAgICAgcmV0
dXJuIFdlYkRPTU5vZGUobm9kZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvV2ViS2l0U3VwcG9ydC9GYXRGaW5nZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9XZWJLaXRTdXBwb3J0L0ZhdEZpbmdlcnMuY3BwCmluZGV4IDM4MWU3YTFlY2YxMzA0NTVj
ZjM2M2I1N2EzMDEyOWZlY2UwZDdhNjguLmZmM2M4MGRlYWNhYTkzYTcyOTgzNjA2N2RjZDQ3MTg5
Mjk3NGRjNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBw
b3J0L0ZhdEZpbmdlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRT
dXBwb3J0L0ZhdEZpbmdlcnMuY3BwCkBAIC00OTEsMTEgKzQ5MSwxMCBAQCB2b2lkIEZhdEZpbmdl
cnM6OmdldE5vZGVzRnJvbVJlY3QoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBJbnRQb2ludCYg
Y29udGVudFBvcwogICAgIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9t
UGFkZGluZywgbGVmdFBhZGRpbmc7CiAgICAgZ2V0UGFkZGluZ3ModG9wUGFkZGluZywgcmlnaHRQ
YWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0UGFkZGluZyk7CiAKLSAgICBIaXRUZXN0UmVxdWVz
dCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3Rp
dmUgfCBIaXRUZXN0UmVxdWVzdDo6SWdub3JlQ2xpcHBpbmcpOwogICAgIC8vIFRoZSB1c2VyIGZ1
bmN0aW9ucyBjaGVja0ZvclRleHQoKSBhbmQgZmluZEludGVyc2VjdGluZ1JlZ2lvbnMoKSB1c2Vz
IHRoZSBOb2RlLndob2xlVGV4dCgpIHRvIGNoZWNrRmluZ2VySW50ZXJzZWN0aW9uKCkKICAgICAv
LyBub3QgdGhlIHRleHQgaW4gaXRzIHNoYWRvdyB0cmVlLgotICAgIFNoYWRvd0NvbnRlbnRGaWx0
ZXJQb2xpY3kgYWxsb3dTaGFkb3cgPSBtX3RhcmdldFR5cGUgPT0gVGV4dCA/IERvTm90QWxsb3dT
aGFkb3dDb250ZW50IDogQWxsb3dTaGFkb3dDb250ZW50OwotICAgIEhpdFRlc3RSZXN1bHQgcmVz
dWx0KGNvbnRlbnRQb3MsIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywg
bGVmdFBhZGRpbmcsIGFsbG93U2hhZG93KTsKKyAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0ID0g
SGl0VGVzdFJlcXVlc3Q6OkRlZmF1bHQobV90YXJnZXRUeXBlICE9IFRleHQsIHRydWUpOworICAg
IEhpdFRlc3RSZXN1bHQgcmVzdWx0KGNvbnRlbnRQb3MsIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGlu
ZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcpOwogCiAgICAgZG9jdW1lbnQtPnJlbmRlclZp
ZXcoKS0+bGF5ZXIoKS0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOwogICAgIGludGVyc2VjdGVk
Tm9kZXMgPSByZXN1bHQucmVjdEJhc2VkVGVzdFJlc3VsdCgpOwpAQCAtNTEwLDcgKzUwOSw3IEBA
IHZvaWQgRmF0RmluZ2Vyczo6Z2V0UmVsZXZhbnRJbmZvRnJvbVBvaW50KERvY3VtZW50KiBkb2N1
bWVudCwgY29uc3QgSW50UG9pbnQmIGNvCiAgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQt
PnJlbmRlcmVyKCkgfHwgIWRvY3VtZW50LT5mcmFtZSgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBIaXRUZXN0UmVzdWx0IHJlc3VsdCAgPSBkb2N1bWVudC0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVy
KCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGNvbnRlbnRQb3MsIHRydWUgLyphbGxvd1NoYWRvd0Nv
bnRlbnQqLyk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgID0gZG9jdW1lbnQtPmZyYW1lKCkt
PmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChjb250ZW50UG9zLCBIaXRUZXN0
UmVxdWVzdDo6RGVmYXVsdCh0cnVlIC8qYWxsb3dTaGFkb3dDb250ZW50Ki8pKTsKICAgICBOb2Rl
KiBub2RlID0gcmVzdWx0LmlubmVyTm9kZSgpOwogICAgIHdoaWxlIChub2RlICYmICFub2RlLT5p
c0VsZW1lbnROb2RlKCkpCiAgICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9TZWxlY3Rpb25I
YW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1NlbGVj
dGlvbkhhbmRsZXIuY3BwCmluZGV4IDNiMDQyNDdiZWNmZGJiN2MyNmM0ZTljMDQ2MTVjZGYxYzIz
ZmZkZWIuLmE3YTM5YmFhOWY0MzVkMjZjZjA1ZWIwYmEyODgwYWVlMTRlODM1YzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1NlbGVjdGlvbkhhbmRs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1NlbGVj
dGlvbkhhbmRsZXIuY3BwCkBAIC0xNTksNyArMTU5LDcgQEAgc3RhdGljIFZpc2libGVQb3NpdGlv
biB2aXNpYmxlUG9zaXRpb25Gb3JQb2ludElnbm9yaW5nQ2xpcHBpbmcoY29uc3QgRnJhbWUmIGZy
YW0KICAgICAvLyBvdXRzaWRlIHRoZSB2aXNpYmxlIHJlY3QuIFRvIHdvcmsgYXJvdW5kIHRoZSBi
dWcsIHRoaXMgaXMgYSBjb3B5IG9mCiAgICAgLy8gdmlzaWJsZVBvc2l0aW9uQXRQb2ludCB3aGlj
aCB3aGljaCBwYXNzZXMgaWdub3JlQ2xpcHBpbmc9dHJ1ZS4KICAgICAvLyBTZWUgUklNIEJ1ZyAj
NDMxNS4KLSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGZyYW1lLmV2ZW50SGFuZGxlcigpLT5o
aXRUZXN0UmVzdWx0QXRQb2ludChmcmFtZVBvaW50LCB0cnVlIC8qIGFsbG93U2hhZG93Q29udGVu
dCAqLywgdHJ1ZSAvKiBpZ25vcmVDbGlwcGluZyAqLyk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1
bHQgPSBmcmFtZS5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoZnJhbWVQb2lu
dCwgSGl0VGVzdFJlcXVlc3Q6OkRlZmF1bHQodHJ1ZSAvKiBhbGxvd1NoYWRvd0NvbnRlbnQgKi8s
IHRydWUgLyogaWdub3JlQ2xpcHBpbmcgKi8pKTsKIAogICAgIE5vZGUqIG5vZGUgPSByZXN1bHQu
aW5uZXJOb2RlKCk7CiAgICAgaWYgKCFub2RlIHx8IG5vZGUtPmRvY3VtZW50KCkgIT0gZnJhbWUu
ZG9jdW1lbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0NvbnRl
eHRNZW51Q2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Db250ZXh0
TWVudUNsaWVudEltcGwuY3BwCmluZGV4IGFkYWE0MTM5MmQyYTE3YjY0NDkzYjI0ZWNlYjhjNzk4
M2UzZWQ0YjEuLjNjMzEyYjExMGNjNmIzZjJhNzNhYmQzM2Q1YzcyNDlmMzk1NmQzODggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0NvbnRleHRNZW51Q2xpZW50SW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29udGV4dE1lbnVDbGllbnRJbXBs
LmNwcApAQCAtMTIyLDcgKzEyMiw3IEBAIHN0YXRpYyBTdHJpbmcgc2VsZWN0TWlzc3BlbGxlZFdv
cmQoY29uc3QgQ29udGV4dE1lbnUqIGRlZmF1bHRNZW51LCBGcmFtZSogc2VsZWN0CiAKICAgICAv
LyBTZWxlY3Rpb24gaXMgZW1wdHksIHNvIGNoYW5nZSB0aGUgc2VsZWN0aW9uIHRvIHRoZSB3b3Jk
IHVuZGVyIHRoZSBjdXJzb3IuCiAgICAgSGl0VGVzdFJlc3VsdCBoaXRUZXN0UmVzdWx0ID0gc2Vs
ZWN0ZWRGcmFtZS0+ZXZlbnRIYW5kbGVyKCktPgotICAgICAgICBoaXRUZXN0UmVzdWx0QXRQb2lu
dChzZWxlY3RlZEZyYW1lLT5wYWdlKCktPmNvbnRleHRNZW51Q29udHJvbGxlcigpLT5oaXRUZXN0
UmVzdWx0KCkucG9pbnQoKSwgdHJ1ZSk7CisgICAgICAgIGhpdFRlc3RSZXN1bHRBdFBvaW50KHNl
bGVjdGVkRnJhbWUtPnBhZ2UoKS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCktPmhpdFRlc3RSZXN1
bHQoKS5wb2ludCgpLCBIaXRUZXN0UmVxdWVzdDo6RGVmYXVsdCh0cnVlKSk7CiAgICAgTm9kZSog
aW5uZXJOb2RlID0gaGl0VGVzdFJlc3VsdC5pbm5lck5vZGUoKTsKICAgICBWaXNpYmxlUG9zaXRp
b24gcG9zKGlubmVyTm9kZS0+cmVuZGVyZXIoKS0+cG9zaXRpb25Gb3JQb2ludCgKICAgICAgICAg
aGl0VGVzdFJlc3VsdC5sb2NhbFBvaW50KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCmluZGV4IDVkZDAyYjU2M2QwOTEz
MmRjY2ExMmViYzEzZDM3YWQ2NWQ2MDA5YTIuLmM5OWJkN2M1NzI1M2IyYjZlYWRlMDBhNWM1YWUy
NmVkNmE2MzY3OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1l
TG9hZGVyQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJh
bWVMb2FkZXJDbGllbnRJbXBsLmNwcApAQCAtOTk3LDggKzk5Nyw3IEBAIHZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRJbXBsOjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oCiAg
ICAgICAgICAgICAgICAgaWYgKGV2ZW50LT5pc01vdXNlRXZlbnQoKSkgewogICAgICAgICAgICAg
ICAgICAgICBjb25zdCBNb3VzZUV2ZW50KiBtb3VzZUV2ZW50ID0KICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IE1vdXNlRXZlbnQqPihldmVudCk7Ci0gICAgICAgICAg
ICAgICAgICAgIG5vZGUgPSBtX3dlYkZyYW1lLT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGl0
VGVzdFJlc3VsdEF0UG9pbnQoCi0gICAgICAgICAgICAgICAgICAgICAgICBtb3VzZUV2ZW50LT5h
YnNvbHV0ZUxvY2F0aW9uKCksIGZhbHNlKS5pbm5lck5vblNoYXJlZE5vZGUoKTsKKyAgICAgICAg
ICAgICAgICAgICAgbm9kZSA9IG1fd2ViRnJhbWUtPmZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5o
aXRUZXN0UmVzdWx0QXRQb2ludChtb3VzZUV2ZW50LT5hYnNvbHV0ZUxvY2F0aW9uKCkpLmlubmVy
Tm9uU2hhcmVkTm9kZSgpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJGcmFtZUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJh
bWVJbXBsLmNwcAppbmRleCBlYjNhZWY3NzVjYWU1N2Q0NjRiYTQzM2FmYzBmNDc3MzRlNmM5ZmUz
Li5hNmQ4ODU2MWEzNDNhN2JjZDZiZWYzMDdlOWM5NjIzZjA2MDdhNDc4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKQEAgLTEyNjIsNyArMTI2Miw3IEBA
IHNpemVfdCBXZWJGcmFtZUltcGw6OmNoYXJhY3RlckluZGV4Rm9yUG9pbnQoY29uc3QgV2ViUG9p
bnQmIHdlYlBvaW50KSBjb25zdAogICAgICAgICByZXR1cm4gbm90Rm91bmQ7CiAKICAgICBJbnRQ
b2ludCBwb2ludCA9IGZyYW1lKCktPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyh3ZWJQb2ludCk7
Ci0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBmcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGl0
VGVzdFJlc3VsdEF0UG9pbnQocG9pbnQsIGZhbHNlKTsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3Vs
dCA9IGZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChwb2ludCk7
CiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IGZyYW1lKCktPnJhbmdlRm9yUG9pbnQocmVzdWx0
LnJvdW5kZWRQb2ludCgpKTsKICAgICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1cm4gbm90Rm91
bmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250
YWluZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRh
aW5lckltcGwuY3BwCmluZGV4IGZlOTlhYjg0NDViMTI3MmIyM2M2N2ZmNDc2YTk2MWI3MjFkYzY3
NjcuLjkzYzAyYzliOThkMWVhYjE3OTk0NmZiNWE4YjEwMGM5NTdkYTliODggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3Bw
CkBAIC01MTMsNyArNTEzLDcgQEAgYm9vbCBXZWJQbHVnaW5Db250YWluZXJJbXBsOjppc1JlY3RU
b3Btb3N0KGNvbnN0IFdlYlJlY3QmIHJlY3QpCiAgICAgTGF5b3V0UG9pbnQgY2VudGVyID0gZG9j
dW1lbnRSZWN0LmNlbnRlcigpOwogICAgIC8vIE1ha2UgdGhlIHJlY3Qgd2UncmUgY2hlY2tpbmcg
KHRoZSBwb2ludCBzdXJyb3VuZGVkIGJ5IHBhZGRpbmcgcmVjdHMpIGNvbnRhaW5lZCBpbnNpZGUg
dGhlIHJlcXVlc3RlZCByZWN0LiAoTm90ZSB0aGF0IC0xLzIgaXMgMC4pCiAgICAgTGF5b3V0U2l6
ZSBwYWRkaW5nKChkb2N1bWVudFJlY3Qud2lkdGgoKSAtIDEpIC8gMiwgKGRvY3VtZW50UmVjdC5o
ZWlnaHQoKSAtIDEpIC8gMik7Ci0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBmcmFtZS0+ZXZl
bnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGNlbnRlciwgZmFsc2UsIGZhbHNlLCBE
b250SGl0VGVzdFNjcm9sbGJhcnMsIEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RS
ZXF1ZXN0OjpBY3RpdmUsIHBhZGRpbmcpOworICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZnJh
bWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChjZW50ZXIsIEhpdFRlc3RS
ZXF1ZXN0OjpEZWZhdWx0KGZhbHNlKSwgcGFkZGluZyk7CiAgICAgY29uc3QgSGl0VGVzdFJlc3Vs
dDo6Tm9kZVNldCYgbm9kZXMgPSByZXN1bHQucmVjdEJhc2VkVGVzdFJlc3VsdCgpOwogICAgIGlm
IChub2Rlcy5zaXplKCkgIT0gMSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDJjNDg3YjgwNWQ4NjgzNzFkZWJi
OTEyNThhZGI3NGMyNTI2Nzk0NjcuLjVkYWFiNTBmNzZkYmRjNzBiMDc5NjU4NDVmNGUxZTUxOTA4
N2Q0M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAg
LTYzOCw3ICs2MzgsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpoYW5kbGVNb3VzZVVwKEZyYW1lJiBt
YWluRnJhbWUsIGNvbnN0IFdlYk1vdXNlRXZlbnQmIGV2ZW50KQogICAgICAgICBGcmFtZVZpZXcq
IHZpZXcgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCk7CiAgICAgICAgIEludFBvaW50IGNs
aWNrUG9pbnQobV9sYXN0TW91c2VEb3duUG9pbnQueCwgbV9sYXN0TW91c2VEb3duUG9pbnQueSk7
CiAgICAgICAgIEludFBvaW50IGNvbnRlbnRQb2ludCA9IHZpZXctPndpbmRvd1RvQ29udGVudHMo
Y2xpY2tQb2ludCk7Ci0gICAgICAgIEhpdFRlc3RSZXN1bHQgaGl0VGVzdFJlc3VsdCA9IGZvY3Vz
ZWQtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChjb250ZW50UG9pbnQsIGZh
bHNlLCBmYWxzZSwgU2hvdWxkSGl0VGVzdFNjcm9sbGJhcnMpOworICAgICAgICBIaXRUZXN0UmVz
dWx0IGhpdFRlc3RSZXN1bHQgPSBmb2N1c2VkLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3Vs
dEF0UG9pbnQoY29udGVudFBvaW50LCBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0
UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OlRlc3RDaGlsZEZyYW1lU2Nyb2xsQmFy
cyk7CiAgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gc2VuZCBhIHBhc3RlIHdoZW4gbWlkZGxl
IGNsaWNraW5nIGEgc2Nyb2xsIGJhciBvciBhCiAgICAgICAgIC8vIGxpbmsgKHdoaWNoIHdpbGwg
bmF2aWdhdGUgbGF0ZXIgaW4gdGhlIGNvZGUpLiAgVGhlIG1haW4gc2Nyb2xsYmFycwogICAgICAg
ICAvLyBoYXZlIHRvIGJlIGhhbmRsZWQgc2VwYXJhdGVseS4KQEAgLTEwMDUsOSArMTAwNSw3IEBA
IFdlYlJlY3QgV2ViVmlld0ltcGw6OmNvbXB1dGVCbG9ja0JvdW5kcyhjb25zdCBXZWJSZWN0JiBy
ZWN0LCBBdXRvWm9vbVR5cGUgem9vbVR5CiAKICAgICAvLyBVc2UgdGhlIHJlY3QtYmFzZWQgaGl0
IHRlc3QgdG8gZmluZCB0aGUgbm9kZS4KICAgICBJbnRQb2ludCBwb2ludCA9IG1haW5GcmFtZUlt
cGwoKS0+ZnJhbWVWaWV3KCktPndpbmRvd1RvQ29udGVudHMoSW50UG9pbnQocmVjdC54LCByZWN0
LnkpKTsKLSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IG1haW5GcmFtZUltcGwoKS0+ZnJhbWUo
KS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KHBvaW50LAotICAgICAgICAg
ICAgZmFsc2UsIHpvb21UeXBlID09IEZpbmRJblBhZ2UsIERvbnRIaXRUZXN0U2Nyb2xsYmFycywg
SGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSwKLSAgICAg
ICAgICAgIEludFNpemUocmVjdC53aWR0aCwgcmVjdC5oZWlnaHQpKTsKKyAgICBIaXRUZXN0UmVz
dWx0IHJlc3VsdCA9IG1haW5GcmFtZUltcGwoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhp
dFRlc3RSZXN1bHRBdFBvaW50KHBvaW50LCBIaXRUZXN0UmVxdWVzdDo6RGVmYXVsdChmYWxzZSwg
em9vbVR5cGUgPT0gRmluZEluUGFnZSksIEludFNpemUocmVjdC53aWR0aCwgcmVjdC5oZWlnaHQp
KTsKIAogICAgIE5vZGUqIG5vZGUgPSByZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCk7CiAgICAg
aWYgKCFub2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAppbmRleCA0YjMzYzYyODBm
M2NkMmY0YzE0NmRhYjk4YzhlM2NjN2RmZjIxYWFjLi5hNjljYmFiODUwODc4OTZmYzdmNzY2YzRm
NWJlYTM4MWFkMzE4YjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2Zy
YW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcApAQCAtNjkz
LDggKzY5Myw4IEBAIEV3a19IaXRfVGVzdCogZXdrX2ZyYW1lX2hpdF90ZXN0X25ldyhjb25zdCBF
dmFzX09iamVjdCogZXdrRnJhbWUsIGludCB4LCBpbnQgeSkKICAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZS0+Y29udGVudFJlbmRlcmVyKCksIDApOwog
CiAgICAgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCByZXN1bHQgPSBzbWFydERhdGEtPmZyYW1lLT5l
dmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAodmlldy0+d2luZG93VG9Db250ZW50cyhXZWJDb3JlOjpJbnRQ
b2ludCh4LCB5KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyph
bGxvd1NoYWRvd0NvbnRlbnQqLyBmYWxzZSwgLyppZ25vcmVDbGlwcGluZyovIHRydWUpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2aWV3LT53aW5kb3dUb0NvbnRl
bnRzKFdlYkNvcmU6OkludFBvaW50KHgsIHkpKSwgCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSGl0VGVzdFJlc3VsdDo6RGVmYXVsdCgvKmFsbG93U2hhZG93Q29udGVu
dCovIGZhbHNlLCAvKmlnbm9yZUNsaXBwaW5nKi8gdHJ1ZSkpOwogCiAgICAgaWYgKHJlc3VsdC5z
Y3JvbGxiYXIoKSkKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IDZhYWEw
ZmQ1ZDBjNmMwN2I2OWM5MzcyN2JkY2JkYWRiODllOWIzYWUuLmE1NzY0NTRjYjk0NDU1YjJmMTc2
MGZmMDk1OWM5M2VhMzhkNGQ3YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0xMzMyLDcgKzEzMzIs
NyBAQCBOU0RpY3Rpb25hcnkgKldlYkZyYW1lTG9hZGVyQ2xpZW50OjphY3Rpb25EaWN0aW9uYXJ5
KGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdAogCiAgICAgaWYgKGNvbnN0IE1vdXNlRXZlbnQq
IG1vdXNlRXZlbnQgPSBmaW5kTW91c2VFdmVudChldmVudCkpIHsKICAgICAgICAgV2ViRWxlbWVu
dERpY3Rpb25hcnkgKmVsZW1lbnQgPSBbW1dlYkVsZW1lbnREaWN0aW9uYXJ5IGFsbG9jXQotICAg
ICAgICAgICAgaW5pdFdpdGhIaXRUZXN0UmVzdWx0OmNvcmUobV93ZWJGcmFtZS5nZXQoKSktPmV2
ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChtb3VzZUV2ZW50LT5hYnNvbHV0ZUxv
Y2F0aW9uKCksIGZhbHNlKV07CisgICAgICAgICAgICBpbml0V2l0aEhpdFRlc3RSZXN1bHQ6Y29y
ZShtX3dlYkZyYW1lLmdldCgpKS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50
KG1vdXNlRXZlbnQtPmFic29sdXRlTG9jYXRpb24oKSldOwogICAgICAgICBbcmVzdWx0IHNldE9i
amVjdDplbGVtZW50IGZvcktleTpXZWJBY3Rpb25FbGVtZW50S2V5XTsKICAgICAgICAgW2VsZW1l
bnQgcmVsZWFzZV07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
SFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmlu
ZGV4IGJmZWRlOGRiNmY5ZWZiNjVmZDExNTQxODk4YThjZDEwODRlMmI2M2YuLjFjMTcwMDhjYWI4
YjM4YWYxNjUzNGMyYTQ3OGJiYWE0ODlhZDAwZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJIVE1MVmlldy5tbQpAQCAtNjIwNiw3ICs2MjA2LDcgQEAgc3RhdGljIHZvaWQgZXh0cmFj
dFVuZGVybGluZXMoTlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcsIFZlY3RvcjxDb21wb3NpdGlv
blVuZGUKICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKICAgICBp
ZiAoIWNvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gW1tbV2ViRWxl
bWVudERpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoSGl0VGVzdFJlc3VsdDpjb3JlRnJhbWUtPmV2
ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChJbnRQb2ludChwb2ludCksIGFsbG93
KV0gYXV0b3JlbGVhc2VdOworICAgIHJldHVybiBbW1tXZWJFbGVtZW50RGljdGlvbmFyeSBhbGxv
Y10gaW5pdFdpdGhIaXRUZXN0UmVzdWx0OmNvcmVGcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRl
c3RSZXN1bHRBdFBvaW50KEludFBvaW50KHBvaW50KSwgSGl0VGVzdFJlcXVlc3Q6OkRlZmF1bHQo
YWxsb3cpKV0gYXV0b3JlbGVhc2VdOwogfQogCiAtIChOU1VJbnRlZ2VyKWNvdW50TWF0Y2hlc0Zv
clRleHQ6KE5TU3RyaW5nICopc3RyaW5nIGluRE9NUmFuZ2U6KERPTVJhbmdlICopcmFuZ2Ugb3B0
aW9uczooV2ViRmluZE9wdGlvbnMpb3B0aW9ucyBsaW1pdDooTlNVSW50ZWdlcilsaW1pdCBtYXJr
TWF0Y2hlczooQk9PTCltYXJrTWF0Y2hlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9B
cGkvcXdlYmZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAKaW5k
ZXggYWRiZmExY2NkZTRmYTc0NTVlMGI2YmM3NWJiMTM3YTVmZjRhY2FiMy4uZmNlZGI2ZTdmYjdk
NTVlMjIxYmRhMmFhNDg2ZGJmMGI1OGM0ODcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9x
dC9BcGkvcXdlYmZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUu
Y3BwCkBAIC0xNDA2LDcgKzE0MDYsNyBAQCBRV2ViSGl0VGVzdFJlc3VsdCBRV2ViRnJhbWU6Omhp
dFRlc3RDb250ZW50KGNvbnN0IFFQb2ludCAmcG9zKSBjb25zdAogICAgIGlmICghZC0+ZnJhbWUt
PnZpZXcoKSB8fCAhZC0+ZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpKQogICAgICAgICByZXR1cm4g
UVdlYkhpdFRlc3RSZXN1bHQoKTsKIAotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZC0+ZnJh
bWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChkLT5mcmFtZS0+dmlldygp
LT53aW5kb3dUb0NvbnRlbnRzKHBvcyksIC8qYWxsb3dTaGFkb3dDb250ZW50Ki8gZmFsc2UsIC8q
aWdub3JlQ2xpcHBpbmcqLyB0cnVlKTsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGQtPmZy
YW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoZC0+ZnJhbWUtPnZpZXco
KS0+d2luZG93VG9Db250ZW50cyhwb3MpLCBIaXRUZXN0UmVxdWVzdDo6RGVmYXVsdCgvKmFsbG93
U2hhZG93Q29udGVudCovIGZhbHNlLCAvKmlnbm9yZUNsaXBwaW5nKi8gdHJ1ZSkpOwogCiAgICAg
aWYgKHJlc3VsdC5zY3JvbGxiYXIoKSkKICAgICAgICAgcmV0dXJuIFFXZWJIaXRUZXN0UmVzdWx0
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKaW5kZXggMDhlODYxODNhNmI2ZWE0NDA4N2Vm
MjQ3MWZkOTAwMmQ0YjYwNDBmNC4uMjk2MjhmNTk4N2NlOWUxODA3MzkyY2RmODdjNWY2Njc2ZGY3
OWM5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcApAQCAtODA4LDcgKzgwOCw3IEBAIHZv
aWQgUVdlYlBhZ2VQcml2YXRlOjpoYW5kbGVTb2Z0d2FyZUlucHV0UGFuZWwoUXQ6Ok1vdXNlQnV0
dG9uIGJ1dHRvbiwgY29uc3QgUVBvCiAgICAgICAgIFFTdHlsZTo6UmVxdWVzdFNvZnR3YXJlSW5w
dXRQYW5lbCBiZWhhdmlvciA9IFFTdHlsZTo6UmVxdWVzdFNvZnR3YXJlSW5wdXRQYW5lbCgKICAg
ICAgICAgICAgIGNsaWVudC0+b3duZXJXaWRnZXQoKS0+c3R5bGUoKS0+c3R5bGVIaW50KFFTdHls
ZTo6U0hfUmVxdWVzdFNvZnR3YXJlSW5wdXRQYW5lbCkpOwogICAgICAgICBpZiAoIWNsaWNrQ2F1
c2VkRm9jdXMgfHwgYmVoYXZpb3IgPT0gUVN0eWxlOjpSU0lQX09uTW91c2VDbGljaykgewotICAg
ICAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhp
dFRlc3RSZXN1bHRBdFBvaW50KGZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMocG9zKSwg
ZmFsc2UpOworICAgICAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBmcmFtZS0+ZXZlbnRI
YW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29u
dGVudHMocG9zKSk7CiAgICAgICAgICAgICBpZiAocmVzdWx0LmlzQ29udGVudEVkaXRhYmxlKCkp
IHsKICAgICAgICAgICAgICAgICBRRXZlbnQgZXZlbnQoUUV2ZW50OjpSZXF1ZXN0U29mdHdhcmVJ
bnB1dFBhbmVsKTsKICAgICAgICAgICAgICAgICBRQXBwbGljYXRpb246OnNlbmRFdmVudChjbGll
bnQtPm93bmVyV2lkZ2V0KCksICZldmVudCk7CkBAIC0xNTY1LDcgKzE1NjUsNyBAQCBJbnRQb2lu
dCBRV2ViUGFnZVByaXZhdGU6OlRvdWNoQWRqdXN0ZXI6OmZpbmRDYW5kaWRhdGVQb2ludEZvclRv
dWNoKGNvbnN0IEludFBvaQogICAgIGludCB4ID0gdG91Y2hQb2ludC54KCk7CiAgICAgaW50IHkg
PSB0b3VjaFBvaW50LnkoKTsKIAotICAgIFJlZlB0cjxOb2RlTGlzdD4gaW50ZXJzZWN0ZWROb2Rl
cyA9IGRvY3VtZW50LT5ub2Rlc0Zyb21SZWN0KHgsIHksIG1fdG9wUGFkZGluZywgbV9yaWdodFBh
ZGRpbmcsIG1fYm90dG9tUGFkZGluZywgbV9sZWZ0UGFkZGluZywgZmFsc2UgLyppZ25vcmVDbGlw
cGluZyovLCBmYWxzZSAvKmFsbG93U2hhZG93Q29udGVudCovKTsKKyAgICBSZWZQdHI8Tm9kZUxp
c3Q+IGludGVyc2VjdGVkTm9kZXMgPSBkb2N1bWVudC0+bm9kZXNGcm9tUmVjdCh4LCB5LCBtX3Rv
cFBhZGRpbmcsIG1fcmlnaHRQYWRkaW5nLCBtX2JvdHRvbVBhZGRpbmcsIG1fbGVmdFBhZGRpbmcp
OwogICAgIGlmICghaW50ZXJzZWN0ZWROb2RlcykKICAgICAgICAgcmV0dXJuIEludFBvaW50KCk7
CiAKQEAgLTMzNzEsNyArMzM3MSw3IEBAIHZvaWQgUVdlYlBhZ2U6OnVwZGF0ZVBvc2l0aW9uRGVw
ZW5kZW50QWN0aW9ucyhjb25zdCBRUG9pbnQgJnBvcykKICAgICBkLT5jcmVhdGVNYWluRnJhbWUo
KTsKICAgICBXZWJDb3JlOjpGcmFtZSogZm9jdXNlZEZyYW1lID0gZC0+cGFnZS0+Zm9jdXNDb250
cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwogCi0gICAgSGl0VGVzdFJlc3VsdCByZXN1
bHQgPSBmb2N1c2VkRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChm
b2N1c2VkRnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhwb3MpLCAvKmFsbG93U2hhZG93
Q29udGVudCovIGZhbHNlKTsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGZvY3VzZWRGcmFt
ZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGZvY3VzZWRGcmFtZS0+dmll
dygpLT53aW5kb3dUb0NvbnRlbnRzKHBvcykpOwogICAgIGlmIChyZXN1bHQuc2Nyb2xsYmFyKCkp
CiAgICAgICAgIGQtPmhpdFRlc3RSZXN1bHQgPSBRV2ViSGl0VGVzdFJlc3VsdCgpOwogICAgIGVs
c2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50UXQuY3BwCmluZGV4IGJjZjA3MmQ2NWI1NjRmZjFlZDVhYjZhZDUxMjk0NjE4NDA5
MWIwNjEuLjcyYTVlMDA0OTgyZGRlNzRlNTJhODU5YTMwZDE0NzU3ZjYwMmNmMTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dFF0LmNwcApAQCAtMTI3Miw3ICsxMjcyLDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0Ojpk
aXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oRnJhbWVQb2xpY3lGdW4KICAg
ICAgICAgICAgIGlmIChldmVudC0+aXNNb3VzZUV2ZW50KCkpIHsKICAgICAgICAgICAgICAgICBj
b25zdCBNb3VzZUV2ZW50KiBtb3VzZUV2ZW50ID0gIHN0YXRpY19jYXN0PGNvbnN0IE1vdXNlRXZl
bnQqPihldmVudCk7CiAgICAgICAgICAgICAgICAgbm9kZSA9IFFXZWJGcmFtZVByaXZhdGU6OmNv
cmUobV93ZWJGcmFtZSktPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludCgKLSAg
ICAgICAgICAgICAgICAgICAgbW91c2VFdmVudC0+YWJzb2x1dGVMb2NhdGlvbigpLCBmYWxzZSku
aW5uZXJOb25TaGFyZWROb2RlKCk7CisgICAgICAgICAgICAgICAgICAgIG1vdXNlRXZlbnQtPmFi
c29sdXRlTG9jYXRpb24oKSkuaW5uZXJOb25TaGFyZWROb2RlKCk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvd2luL1dlYkFjdGlvblByb3BlcnR5QmFnLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkFj
dGlvblByb3BlcnR5QmFnLmNwcAppbmRleCBmY2E4M2JlMGQ0ZTkwMDIxMDNhMzM0NmFkMTczMjg5
NzhiNzgzMjQ3Li5kMjkwNTA5MWYyYzczMTZjMmM1ODJmYWQwOWYzZTM2MTg0ODJhMzg4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJBY3Rpb25Qcm9wZXJ0eUJhZy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC93aW4vV2ViQWN0aW9uUHJvcGVydHlCYWcuY3BwCkBAIC0xMjEsNyArMTIx
LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJBY3Rpb25Qcm9wZXJ0eUJhZzo6UmVh
ZChMUENPTEVTVFIgcHN6UHJvcE5hbWUsIFZBUkkKICAgICBpZiAoaXNFcXVhbChwc3pQcm9wTmFt
ZSwgV2ViQWN0aW9uRWxlbWVudEtleSkpIHsKICAgICAgICAgaWYgKGNvbnN0IE1vdXNlRXZlbnQq
IG1vdXNlRXZlbnQgPSBmaW5kTW91c2VFdmVudChtX2FjdGlvbi5ldmVudCgpKSkgewogICAgICAg
ICAgICAgVl9WVChwVmFyKSA9IFZUX1VOS05PV047Ci0gICAgICAgICAgICBWX1VOS05PV04ocFZh
cikgPSBXZWJFbGVtZW50UHJvcGVydHlCYWc6OmNyZWF0ZUluc3RhbmNlKG1fZnJhbWUtPmV2ZW50
SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChtb3VzZUV2ZW50LT5hYnNvbHV0ZUxvY2F0
aW9uKCksIGZhbHNlKSk7CisgICAgICAgICAgICBWX1VOS05PV04ocFZhcikgPSBXZWJFbGVtZW50
UHJvcGVydHlCYWc6OmNyZWF0ZUluc3RhbmNlKG1fZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRU
ZXN0UmVzdWx0QXRQb2ludChtb3VzZUV2ZW50LT5hYnNvbHV0ZUxvY2F0aW9uKCkpKTsKICAgICAg
ICAgICAgIHJldHVybiBTX09LOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcApp
bmRleCBjM2ZkZWQ2YjE0MjA0NjE0MDRjMWQyMGI1OTgxNDQ2ZDBhZDZhYjc2Li5mZTIzYjQzZWY1
NjcxZWNiZWVhZmZiMGQ3NGFlMWVkMDFiMTUxYjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcApAQCAt
MTMyMiw3ICsxMzIyLDcgQEAgYm9vbCBXZWJWaWV3OjpoYW5kbGVDb250ZXh0TWVudUV2ZW50KFdQ
QVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pCiAgICAgbV9wYWdlLT5jb250ZXh0TWVudUNvbnRy
b2xsZXIoKS0+Y2xlYXJDb250ZXh0TWVudSgpOwogCiAgICAgSW50UG9pbnQgZG9jdW1lbnRQb2lu
dChtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMoY29vcmRzKSk7
Ci0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmVudEhh
bmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoZG9jdW1lbnRQb2ludCwgZmFsc2UpOworICAg
IEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZlbnRIYW5kbGVy
KCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGRvY3VtZW50UG9pbnQpOwogICAgIEZyYW1lKiB0YXJn
ZXRGcmFtZSA9IHJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKSA/IHJlc3VsdC5pbm5lck5vblNo
YXJlZE5vZGUoKS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSA6IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVy
KCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwogCiAgICAgdGFyZ2V0RnJhbWUtPnZpZXcoKS0+c2V0
Q3Vyc29yKHBvaW50ZXJDdXJzb3IoKSk7CkBAIC0zNTk3LDcgKzM1OTcsNyBAQCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmVsZW1lbnRBdFBvaW50KAogICAgIEludFBvaW50IHdl
YkNvcmVQb2ludCA9IEludFBvaW50KHBvaW50LT54LCBwb2ludC0+eSk7CiAgICAgSGl0VGVzdFJl
c3VsdCByZXN1bHQgPSBIaXRUZXN0UmVzdWx0KHdlYkNvcmVQb2ludCk7CiAgICAgaWYgKGZyYW1l
LT5jb250ZW50UmVuZGVyZXIoKSkKLSAgICAgICAgcmVzdWx0ID0gZnJhbWUtPmV2ZW50SGFuZGxl
cigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludCh3ZWJDb3JlUG9pbnQsIGZhbHNlKTsKKyAgICAgICAg
cmVzdWx0ID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludCh3ZWJD
b3JlUG9pbnQpOwogICAgICplbGVtZW50RGljdGlvbmFyeSA9IFdlYkVsZW1lbnRQcm9wZXJ0eUJh
Zzo6Y3JlYXRlSW5zdGFuY2UocmVzdWx0KTsKICAgICByZXR1cm4gU19PSzsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvd3gvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC93eC9XZWJG
cmFtZS5jcHAKaW5kZXggYWFhNzYxNGVmYTNiNjQxM2I3MTBlMGU4NWFhZDk1MWQ2ZmU5MmY4Mi4u
YjUwNDZhNzMyYWIwYmIwNjc2NDFlODY3M2IxODg2OWMzNGQxMzYzZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC93eC9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC93eC9XZWJGcmFt
ZS5jcHAKQEAgLTY5MCw3ICs2OTAsNyBAQCBXZWJWaWV3RE9NRWxlbWVudEluZm8gV2ViRnJhbWU6
OkhpdFRlc3QoY29uc3Qgd3hQb2ludCYgcG9zKSBjb25zdAogICAgIFdlYlZpZXdET01FbGVtZW50
SW5mbyBkb21JbmZvOwogCiAgICAgaWYgKG1faW1wbC0+ZnJhbWUtPnZpZXcoKSkgewotICAgICAg
ICBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IG1faW1wbC0+ZnJhbWUtPmV2ZW50SGFu
ZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChtX2ltcGwtPmZyYW1lLT52aWV3KCktPndpbmRv
d1RvQ29udGVudHMocG9zKSwgZmFsc2UpOworICAgICAgICBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0
IHJlc3VsdCA9IG1faW1wbC0+ZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQ
b2ludChtX2ltcGwtPmZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMocG9zKSk7CiAgICAg
ICAgIGlmIChyZXN1bHQuaW5uZXJOb2RlKCkpIHsKICAgICAgICAgICAgIGRvbUluZm8uU2V0TGlu
ayhyZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCkuc3RyaW5nKCkpOwogICAgICAgICAgICAgZG9tSW5m
by5TZXRUZXh0KHJlc3VsdC50ZXh0Q29udGVudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcAppbmRleCA0MjgxMzU0ODFhZmQ5YzUxYjNhYmQy
NzZjZTg2MTZkMzk2ZjhiNDNlLi4yOWM3MGRmYjQ2NmM3ZDBlZDRmMTVlYjRjOTI0YzNkODJjZjcx
YjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24u
Y3BwCkBAIC05MSw3ICs5MSw3IEBAIEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbjo6SW5q
ZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uKFdlYkZyYW1lKiBmcmFtZSwKICAgICAsIG1fbW91
c2VCdXR0b24oV2ViTW91c2VFdmVudDo6Tm9CdXR0b24pCiB7CiAgICAgaWYgKGNvbnN0IE1vdXNl
RXZlbnQqIG1vdXNlRXZlbnQgPSBtb3VzZUV2ZW50Rm9yTmF2aWdhdGlvbkFjdGlvbihuYXZpZ2F0
aW9uQWN0aW9uKSkgewotICAgICAgICBtX2hpdFRlc3RSZXN1bHQgPSBJbmplY3RlZEJ1bmRsZUhp
dFRlc3RSZXN1bHQ6OmNyZWF0ZShmcmFtZS0+Y29yZUZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5o
aXRUZXN0UmVzdWx0QXRQb2ludChtb3VzZUV2ZW50LT5hYnNvbHV0ZUxvY2F0aW9uKCksIGZhbHNl
KSk7CisgICAgICAgIG1faGl0VGVzdFJlc3VsdCA9IEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3Vs
dDo6Y3JlYXRlKGZyYW1lLT5jb3JlRnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1
bHRBdFBvaW50KG1vdXNlRXZlbnQtPmFic29sdXRlTG9jYXRpb24oKSkpOwogICAgICAgICBtX21v
dXNlQnV0dG9uICAgPSBtb3VzZUJ1dHRvbkZvck1vdXNlRXZlbnQobW91c2VFdmVudCk7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5k
ZXggZjQwYWEwYTNlMzNhMGYwNDMxMmU1YmZmYmEwNTBkZTFjMzk0ZDBiMS4uZWQyNmZjMzc4YmY2
MjE0NGU5ZGZjY2Q4MDFmZDMyNDc3YzkzM2MwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTMxMCw3ICsxMzEwLDcgQEAgc3RhdGljIGJv
b2wgaXNDb250ZXh0Q2xpY2soY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKIHN0YXRp
YyBib29sIGhhbmRsZUNvbnRleHRNZW51RXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBw
bGF0Zm9ybU1vdXNlRXZlbnQsIFdlYlBhZ2UqIHBhZ2UpCiB7CiAgICAgSW50UG9pbnQgcG9pbnQg
PSBwYWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRz
KHBsYXRmb3JtTW91c2VFdmVudC5wb3NpdGlvbigpKTsKLSAgICBIaXRUZXN0UmVzdWx0IHJlc3Vs
dCA9IHBhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVz
dFJlc3VsdEF0UG9pbnQocG9pbnQsIGZhbHNlKTsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9
IHBhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJl
c3VsdEF0UG9pbnQocG9pbnQpOwogCiAgICAgRnJhbWUqIGZyYW1lID0gcGFnZS0+Y29yZVBhZ2Uo
KS0+bWFpbkZyYW1lKCk7CiAgICAgaWYgKHJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKSkKQEAg
LTE1NTUsNyArMTU1NSw3IEBAIHZvaWQgV2ViUGFnZTo6aGlnaGxpZ2h0UG90ZW50aWFsQWN0aXZh
dGlvbihjb25zdCBJbnRQb2ludCYgcG9pbnQsIGNvbnN0IEludFNpemUmCiAgICAgICAgICAgICBy
ZXR1cm47CiAKICNlbHNlCi0gICAgICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gbWFpbmZyYW1l
LT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQobWFpbmZyYW1lLT52aWV3KCkt
PndpbmRvd1RvQ29udGVudHMocG9pbnQpLCAvKmFsbG93U2hhZG93Q29udGVudCovIGZhbHNlLCAv
Kmlnbm9yZUNsaXBwaW5nKi8gdHJ1ZSk7CisgICAgICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0g
bWFpbmZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQobWFpbmZyYW1l
LT52aWV3KCktPndpbmRvd1RvQ29udGVudHMocG9pbnQpLCBIaXRUZXN0UmVxdWVzdDo6RGVmYXVs
dCgvKmFsbG93U2hhZG93Q29udGVudCovIHRydWUsIC8qaWdub3JlQ2xpcHBpbmcqLyB0cnVlKSk7
CiAgICAgICAgIGFkanVzdGVkTm9kZSA9IHJlc3VsdC5pbm5lck5vZGUoKTsKICNlbmRpZgogICAg
ICAgICAvLyBGaW5kIHRoZSBub2RlIHRvIGhpZ2hsaWdodC4gVGhpcyBpcyBub3QgdGhlIHNhbWUg
YXMgdGhlIG5vZGUgcmVzcG9uZGluZyB0aGUgdGFwIGdlc3R1cmUsIGJlY2F1c2UgbWFueQpAQCAt
MjcyNCw3ICsyNzI0LDcgQEAgdm9pZCBXZWJQYWdlOjpmaW5kWm9vbWFibGVBcmVhRm9yUG9pbnQo
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCBjb25zdCBXZWIKIHsKICAgICBVTlVTRURf
UEFSQU0oYXJlYSk7CiAgICAgRnJhbWUqIG1haW5mcmFtZSA9IG1fbWFpbkZyYW1lLT5jb3JlRnJh
bWUoKTsKLSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IG1haW5mcmFtZS0+ZXZlbnRIYW5kbGVy
KCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KG1haW5mcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRl
bnRzKHBvaW50KSwgLyphbGxvd1NoYWRvd0NvbnRlbnQqLyBmYWxzZSwgLyppZ25vcmVDbGlwcGlu
ZyovIHRydWUpOworICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gbWFpbmZyYW1lLT5ldmVudEhh
bmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQobWFpbmZyYW1lLT52aWV3KCktPndpbmRvd1Rv
Q29udGVudHMocG9pbnQpLCBIaXRUZXN0UmVxdWVzdDo6RGVmYXVsdCgvKmFsbG93U2hhZG93Q29u
dGVudCovIGZhbHNlLCAvKmlnbm9yZUNsaXBwaW5nKi8gdHJ1ZSkpOwogCiAgICAgTm9kZSogbm9k
ZSA9IHJlc3VsdC5pbm5lck5vZGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IGMyZjAxNjUzNzU5NTNiNTNjYzNj
ZDFiOWViNDMxZGI1ZWNlYjkzYWQuLjMwMTM1YWE1MDdlN2Q2ODA1MDVmZjc2YjU3NDNhMjAyZWU5
MGUyYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
V2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1dlYlBhZ2VNYWMubW0KQEAgLTM3NSw3ICszNzUsNyBAQCB2b2lkIFdlYlBhZ2U6OmNoYXJhY3Rl
ckluZGV4Rm9yUG9pbnQoSW50UG9pbnQgcG9pbnQsIHVpbnQ2NF90JiBpbmRleCkKICAgICBpZiAo
IWZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGZy
YW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQocG9pbnQsIGZhbHNlKTsK
KyAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVz
dFJlc3VsdEF0UG9pbnQocG9pbnQpOwogICAgIGZyYW1lID0gcmVzdWx0LmlubmVyTm9uU2hhcmVk
Tm9kZSgpID8gcmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpLT5kb2N1bWVudCgpLT5mcmFtZSgp
IDogbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAg
CiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IGZyYW1lLT5yYW5nZUZvclBvaW50KHJlc3VsdC5y
b3VuZGVkUG9pbnQoKSk7CkBAIC00NjQsNyArNDY0LDcgQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3Jt
RGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oY29uc3QgRmxvYXRQb2ludCYgZmxvYXRQb2ludCkK
IAogICAgIC8vIEZpbmQgdGhlIGZyYW1lIHRoZSBwb2ludCBpcyBvdmVyLgogICAgIEludFBvaW50
IHBvaW50ID0gcm91bmRlZEludFBvaW50KGZsb2F0UG9pbnQpOwotICAgIEhpdFRlc3RSZXN1bHQg
cmVzdWx0ID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChmcmFt
ZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHBvaW50KSwgZmFsc2UpOworICAgIEhpdFRlc3RS
ZXN1bHQgcmVzdWx0ID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2lu
dChmcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHBvaW50KSk7CiAgICAgZnJhbWUgPSBy
ZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCkgPyByZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCkt
PmRvY3VtZW50KCktPmZyYW1lKCkgOiBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2Vk
T3JNYWluRnJhbWUoKTsKIAogICAgIEludFBvaW50IHRyYW5zbGF0ZWRQb2ludCA9IGZyYW1lLT52
aWV3KCktPndpbmRvd1RvQ29udGVudHMocG9pbnQpOwpAQCAtNzI3LDcgKzcyNyw3IEBAIHZvaWQg
V2ViUGFnZTo6c2hvdWxkRGVsYXlXaW5kb3dPcmRlcmluZ0V2ZW50KGNvbnN0IFdlYktpdDo6V2Vi
TW91c2VFdmVudCYgZXZlbnQsCiAgICAgICAgIHJldHVybjsKIAogI2lmIEVOQUJMRShEUkFHX1NV
UFBPUlQpCi0gICAgSGl0VGVzdFJlc3VsdCBoaXRSZXN1bHQgPSBmcmFtZS0+ZXZlbnRIYW5kbGVy
KCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMo
ZXZlbnQucG9zaXRpb24oKSksIHRydWUpOworICAgIEhpdFRlc3RSZXN1bHQgaGl0UmVzdWx0ID0g
ZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChmcmFtZS0+dmlldygp
LT53aW5kb3dUb0NvbnRlbnRzKGV2ZW50LnBvc2l0aW9uKCkpLCBIaXRUZXN0UmVxdWVzdDo6RGVm
YXVsdCh0cnVlKSk7CiAgICAgaWYgKGhpdFJlc3VsdC5pc1NlbGVjdGVkKCkpCiAgICAgICAgIHJl
c3VsdCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+ZXZlbnRNYXlTdGFydERyYWcocGxhdGZvcm0o
ZXZlbnQpKTsKICNlbmRpZgpAQCAtNzQwLDcgKzc0MCw3IEBAIHZvaWQgV2ViUGFnZTo6YWNjZXB0
c0ZpcnN0TW91c2UoaW50IGV2ZW50TnVtYmVyLCBjb25zdCBXZWJLaXQ6OldlYk1vdXNlRXZlbnQm
IGV2CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIEhpdFRlc3RS
ZXN1bHQgaGl0UmVzdWx0ID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQ
b2ludChmcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKGV2ZW50LnBvc2l0aW9uKCkpLCB0
cnVlKTsKKyAgICBIaXRUZXN0UmVzdWx0IGhpdFJlc3VsdCA9IGZyYW1lLT5ldmVudEhhbmRsZXIo
KS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhl
dmVudC5wb3NpdGlvbigpKSwgSGl0VGVzdFJlcXVlc3Q6OkRlZmF1bHQodHJ1ZSkpOwogICAgIGZy
YW1lLT5ldmVudEhhbmRsZXIoKS0+c2V0QWN0aXZhdGlvbkV2ZW50TnVtYmVyKGV2ZW50TnVtYmVy
KTsKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAgIGlmIChoaXRSZXN1bHQuaXNTZWxlY3Rl
ZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmIGIvU291cmNl
L1dlYktpdDIvd2luL1dlYktpdDIuZGVmCmluZGV4IDY1MWM5OGZjNzIyYzkzODlmNWIwODczZjA1
M2Y2OTRiN2MzMDYyYjcuLmY4NjI3OGJjNGNjYzFkZTI2YzdhNjQyMjY2OGY5ZWZiYjhjMmJhOGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKQEAgLTI1OSw3ICsyNTksNyBAQCBFWFBPUlRTCiAgICAg
ICAgID8/MUNvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyQFdlYkNvcmVAQE1BRUBYWgogICAgICAg
ICA/Y29udGV4dERlc3Ryb3llZEBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlckBXZWJDb3JlQEBV
QUVYWFoKICAgICAgICAgPz8wQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXJAV2ViQ29yZUBAUUFF
QFBBVlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRAMUBAWgotICAgICAgICA/bm9kZXNGcm9tUmVjdEBE
b2N1bWVudEBXZWJDb3JlQEBRQkU/QVY/JFBhc3NSZWZQdHJAVk5vZGVMaXN0QFdlYkNvcmVAQEBX
VEZAQEhISUlJSV9OMDBAWgorICAgICAgICA/bm9kZXNGcm9tUmVjdEBEb2N1bWVudEBXZWJDb3Jl
QEBRQkU/QVY/JFBhc3NSZWZQdHJAVk5vZGVMaXN0QFdlYkNvcmVAQEBXVEZAQEhISUlJSUlAWgog
ICAgICAgICA/c2VsZWN0aW9uU3RhcnRIYXNNYXJrZXJGb3JARWRpdG9yQFdlYkNvcmVAQFFCRV9O
VzRNYXJrZXJUeXBlQERvY3VtZW50TWFya2VyQDJASEhAWgogICAgICAgICA/d2Via2l0V2lsbEVu
dGVyRnVsbFNjcmVlbkZvckVsZW1lbnRARG9jdW1lbnRAV2ViQ29yZUBAUUFFWFBBVkVsZW1lbnRA
MkBAWgogICAgICAgICA/d2Via2l0RGlkRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudEBEb2N1bWVu
dEBXZWJDb3JlQEBRQUVYUEFWRWxlbWVudEAyQEBaCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0
ZS5kZWYKaW5kZXggZDNiZWY0NmRiM2EzMzlmYTk3ZmIyNjg1MDI3Y2NjOGJiZjM1NTAwNy4uNWU3
OTg0NTkyODI3MDMzM2Y3OGE2NTFkMTE1MGEwM2VmM2VlNzdmNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQyL3dpbi9X
ZWJLaXQyQ0ZMaXRlLmRlZgpAQCAtMjUzLDcgKzI1Myw3IEBAIEVYUE9SVFMKICAgICAgICAgP3Vz
ZXJQcmVmZXJyZWRMYW5ndWFnZXNAV2ViQ29yZUBAWUE/QVY/JFZlY3RvckBWU3RyaW5nQFdURkBA
JDBBQEBXVEZAQFhaCiAgICAgICAgID91dGY4QFN0cmluZ0BXVEZAQFFCRT9BVkNTdHJpbmdAMkBf
TkBaCiAgICAgICAgID92aWV3QERvY3VtZW50QFdlYkNvcmVAQFFCRVBBVkZyYW1lVmlld0AyQFha
Ci0gICAgICAgID9ub2Rlc0Zyb21SZWN0QERvY3VtZW50QFdlYkNvcmVAQFFCRT9BVj8kUGFzc1Jl
ZlB0ckBWTm9kZUxpc3RAV2ViQ29yZUBAQFdURkBASEhJSUlJX04wMEBaCisgICAgICAgID9ub2Rl
c0Zyb21SZWN0QERvY3VtZW50QFdlYkNvcmVAQFFCRT9BVj8kUGFzc1JlZlB0ckBWTm9kZUxpc3RA
V2ViQ29yZUBAQFdURkBASEhJSUlJSUBaCiAgICAgICAgID9zZWxlY3Rpb25TdGFydEhhc01hcmtl
ckZvckBFZGl0b3JAV2ViQ29yZUBAUUJFX05XNE1hcmtlclR5cGVARG9jdW1lbnRNYXJrZXJAMkBI
SEBaCiAgICAgICAgID9yZXN0cmljdFNjYWxlRmFjdG9yVG9Jbml0aWFsU2NhbGVJZk5vdFVzZXJT
Y2FsYWJsZUBXZWJDb3JlQEBZQVhBQVVWaWV3cG9ydEF0dHJpYnV0ZXNAMUBAWgogICAgICAgICA/
cmVzdHJpY3RNaW5pbXVtU2NhbGVGYWN0b3JUb1ZpZXdwb3J0U2l6ZUBXZWJDb3JlQEBZQVhBQVVW
aWV3cG9ydEF0dHJpYnV0ZXNAMUBWSW50U2l6ZUAxQEBaCmRpZmYgLS1naXQgYS9Tb3VyY2UvYXV0
b3Rvb2xzL3N5bWJvbHMuZmlsdGVyIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgpp
bmRleCBiNjNiN2MxYzNmYmY4MjFjOWNlYmNhOGE1MWZlMmU5MDNhMTQ3ZTAyLi4zZDlhM2VhMmYz
MWU4ZWRhMDQwZDRiMmFmNDExZmZlODFiYzJiOTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvYXV0b3Rv
b2xzL3N5bWJvbHMuZmlsdGVyCisrKyBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIK
QEAgLTE2Miw3ICsxNjIsNyBAQCBfWk43V2ViQ29yZTIyUnVudGltZUVuYWJsZWRGZWF0dXJlczE4
aXNTaGFkb3dET01FbmFibGVkRTsKIF9aTjdXZWJDb3JlMjJSdW50aW1lRW5hYmxlZEZlYXR1cmVz
MjJpc0NTU0V4Y2x1c2lvbnNFbmFibGVkRTsKIF9aTjdXZWJDb3JlMjJSdW50aW1lRW5hYmxlZEZl
YXR1cmVzMjJpc0RpYWxvZ0VsZW1lbnRFbmFibGVkRTsKIF9aTjdXZWJDb3JlMjJSdW50aW1lRW5h
YmxlZEZlYXR1cmVzMzdpc0F1dGhvclNoYWRvd0RPTUZvckFueUVsZW1lbnRFbmFibGVkRTsKLV9a
Tks3V2ViQ29yZThEb2N1bWVudDEzbm9kZXNGcm9tUmVjdEVpaWpqampiYmI7CitfWk5LN1dlYkNv
cmU4RG9jdW1lbnQxM25vZGVzRnJvbVJlY3RFaWlqampqajsKIF9aTjdXZWJDb3JlNHRvSlNFUE4z
SlNDOUV4ZWNTdGF0ZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTlNfOE5vZGVMaXN0RTsKIF9a
Tks3V2ViQ29yZTZFZGl0b3IyNnNlbGVjdGlvblN0YXJ0SGFzTWFya2VyRm9yRU5TXzE0RG9jdW1l
bnRNYXJrZXIxME1hcmtlclR5cGVFaWk7CiBfWk43V2ViQ29yZThEb2N1bWVudDMzd2Via2l0RGlk
RXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50RVBOU183RWxlbWVudEU7CmRpZmYgLS1naXQgYS9DaGFu
Z2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggNjliZjk5Nzc2YWU4ZGMxYjJmZGQ2ZjY4N2ZkMzc1NGI5
YjY1NzE5Yy4uNjU1MWRlOTc3Mjc4YTYwYmZmMzA2YTA0ODhjMTRhZDY0ZDRkNzc5NyAxMDA2NDQK
LS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA5
LTA1ICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgorCisg
ICAgICAgIFNpbXBsaWZ5IGhpdFRlc3RSZXN1bHRBdFBvaW50IGFuZCBub2Rlc0Zyb21SZWN0IEFQ
SXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NzIw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRl
IGV4cG9ydGVkIHN5bWJvbHMuCisKKyAgICAgICAgKiBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMu
ZmlsdGVyOgorCiAyMDEyLTA5LTAzICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5z
ZW5Abm9raWEuY29tPgogCiAgICAgICAgIEFsbG93IGNoaWxkLWZyYW1lIGNvbnRlbnQgaW4gaGl0
LXRlc3RzLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162198</attachid>
            <date>2012-09-05 02:42:51 -0700</date>
            <delta_ts>2012-09-05 09:10:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95720-20120905114223.patch</filename>
            <type>text/plain</type>
            <size>63258</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NDY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjdkODk1ZWZhOTYyMmNl
YzBlODFiYjM2ZjcxMmM3YTYzOTAwZTQ4Mi4uNDY5NTNkODFjNGE1ZGJlZDFmOWUzZjY3Yjg0NzJh
MDE1NWI5MDk0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEyLTA5LTA1ICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgorCisgICAgICAgIFNp
bXBsaWZ5IGhpdFRlc3RSZXN1bHRBdFBvaW50IGFuZCBub2Rlc0Zyb21SZWN0IEFQSXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NzIwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGV4aXN0aW5nIEFQ
SSB3YXMgb3ZlcmxvYWRlZCBhbmQgY291bGQgYmUgc2ltcGxpZmllZCBieSBwYXNzaW5nIGFsbCB0
aGUgYm9vbCBhcmd1bWVudHMgaW4gCisgICAgICAgIGEgSGl0VGVzdFJlcXVlc3QgYXJndW1lbnQu
IFRoaXMgc2hvdWxkIGFsc28gaGVscCBjbGFyaWZ5IHRoZSBjYWxsIGFzIHRoZSBlbnVtIHZhbHVl
cyBleHBsaWNpdGVseQorICAgICAgICBzdGF0ZSB3aGF0IHRoZXkgZG8uCisKKyAgICAgICAgVG8g
YWxsb3cgZm9yIHNpbXBsZSBjb252ZXJzaW9uIGEgbmV3IHN0YXRpYyBmdW5jdGlvbiBoYXMgYmVl
biAgYWRkZWQgdG8gSGl0VGVzdFJlcXVlc3QgdG8gYnVpbGQKKyAgICAgICAgYSBkZWZhdWx0IHR5
cGUgYmFzZWQgb24gdGhlIG9sZCBib29sZWFuIGFyZ3VtZW50cy4KKworICAgICAgICAqIFdlYkNv
cmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUub3JkZXI6CisgICAgICAgICogZG9tL0RvY3Vt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpub2Rlc0Zyb21SZWN0KToKKyAg
ICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKERvY3VtZW50KToKKyAgICAgICAgKiBw
YWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0
TWVudUNvbnRyb2xsZXI6OmNyZWF0ZUNvbnRleHRNZW51KToKKyAgICAgICAgKiBwYWdlL0RyYWdD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpjYW5Qcm9j
ZXNzRHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKToK
KyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dEhhbmRsZXI6OnVwZGF0ZUF1dG9zY3JvbGxSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudEhhbmRsZXI6OmhpdFRlc3RSZXN1bHRBdFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6YmVzdENsaWNrYWJsZU5vZGVGb3JUb3VjaFBvaW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50SGFuZGxlcjo6YmVzdENvbnRleHRNZW51Tm9kZUZvclRvdWNoUG9pbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpiZXN0Wm9vbWFibGVBcmVhRm9yVG91Y2hQb2lu
dCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZVRvdWNoRXZlbnQpOgor
ICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmg6CisgICAgICAgIChFdmVudEhhbmRsZXIpOgor
ICAgICAgICAqIHBhZ2UvRm9jdXNDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVw
ZGF0ZUZvY3VzQ2FuZGlkYXRlSWZOZWVkZWQpOgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnZpc2libGVQb3NpdGlvbkZvclBvaW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lOjpkb2N1bWVudEF0UG9pbnQpOgorICAgICAgICAqIHBhZ2UvVG91
Y2hEaXNhbWJpZ3VhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaW5kR29vZFRvdWNoVGFy
Z2V0cyk6CisgICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXF1ZXN0Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpIaXRUZXN0UmVxdWVzdDo6RGVmYXVsdCk6CisgICAgICAgIChIaXRUZXN0UmVxdWVz
dCk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW50ZXJuYWxzOjpub2Rlc0Zyb21SZWN0KToKKwogMjAxMi0wOS0wMyAgQWxsYW4gU2FuZGZlbGQg
SmVuc2VuICA8YWxsYW4uamVuc2VuQG5va2lhLmNvbT4KIAogICAgICAgICBBbGxvdyBjaGlsZC1m
cmFtZSBjb250ZW50IGluIGhpdC10ZXN0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCmlu
ZGV4IDgwYjMwNTQxZDI5Y2Y5Mzg5YWM4NmY2ZGNlMGFmNTNlMTEzODc1MTYuLmRjMjdkOWJkNjdl
NzJhODI1NTgxMmJhMjFjMWU1MDUzMzczYTg1MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTA5LTA1ICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4g
IDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgorCisgICAgICAgIFNpbXBsaWZ5IGhpdFRlc3RSZXN1
bHRBdFBvaW50IGFuZCBub2Rlc0Zyb21SZWN0IEFQSXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NzIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGNhbGxzIHRvIG5ldyBBUEkuCisKKyAgICAg
ICAgKiBBcGkvV2ViUGFnZS5jcHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBh
Z2VQcml2YXRlOjpjb250ZXh0Tm9kZSk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6Oldl
YlBhZ2VQcml2YXRlOjpub2RlRm9yWm9vbVVuZGVyUG9pbnQpOgorICAgICAgICAoQmxhY2tCZXJy
eTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZTo6aGFuZGxlTW91c2VFdmVudCk6CisgICAgICAgIChC
bGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2U6Om5vZGVBdFBvaW50KToKKyAgICAgICAgKiBXZWJL
aXRTdXBwb3J0L0ZhdEZpbmdlcnMuY3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpG
YXRGaW5nZXJzOjpnZXROb2Rlc0Zyb21SZWN0KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktp
dDo6RmF0RmluZ2Vyczo6Z2V0UmVsZXZhbnRJbmZvRnJvbVBvaW50KToKKyAgICAgICAgKiBXZWJL
aXRTdXBwb3J0L1NlbGVjdGlvbkhhbmRsZXIuY3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2Vi
S2l0Ojp2aXNpYmxlUG9zaXRpb25Gb3JQb2ludElnbm9yaW5nQ2xpcHBpbmcpOgorCiAyMDEyLTA5
LTA0ICBNYXJ5IFd1ICA8bWFyeS53dUB0b3JjaG1vYmlsZS5jb20uY24+CiAKICAgICAgICAgW0Js
YWNrQmVycnldIEFkZCB3ZWJwbGF0Zm9ybSBhbmQgYnJvd3NlciB0byBidWlsZCBpbmZvCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGZjNDhlNTllMGFlNjZiYTA0MDU5MTg1Yjg2ZmY0MmY1
NDg5MTZlYzkuLjM2YzRhNDc3Y2U0OWJlZTkyZDljOGQ0NDQzZjUwMDkyOTRhYzQxMjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTItMDktMDUgIEFsbGFu
IFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+CisKKyAgICAgICAgU2lt
cGxpZnkgaGl0VGVzdFJlc3VsdEF0UG9pbnQgYW5kIG5vZGVzRnJvbVJlY3QgQVBJcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU3MjAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgY2FsbHMgdG8g
bmV3IEFQSS4KKworICAgICAgICAqIHNyYy9Db250ZXh0TWVudUNsaWVudEltcGwuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpzZWxlY3RNaXNzcGVsbGVkV29yZCk6CisgICAgICAgICogc3JjL0ZyYW1l
TG9hZGVyQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50
SW1wbDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAg
KiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjpj
aGFyYWN0ZXJJbmRleEZvclBvaW50KToKKyAgICAgICAgKiBzcmMvV2ViUGx1Z2luQ29udGFpbmVy
SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbkNvbnRhaW5lckltcGw6OmlzUmVj
dFRvcG1vc3QpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXdJbXBsOjpoYW5kbGVNb3VzZVVwKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0ltcGw6OmNvbXB1dGVCbG9ja0JvdW5kcyk6CisKIDIwMTItMDktMDMgIFRhbyBCYWkgIDxtaWNo
YWVsYmFpQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBZGRlZCBBTkRST0lEX0dEQlNFUlZFUiBk
ZWZpbml0aW9uIGZvciBBbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCAzNTQ0NzZlN2NhMjVjOTUyMzZh
ODFiZWVlOTI5MzI5MTJhZTc4OGQ4Li41MTNmMDgyMDc5ZDc1YmU0ZWUzMzA0Y2Q0OGZmNmY4OWYy
MjgyOWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDktMDUgIEFs
bGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+CisKKyAgICAgICAg
U2ltcGxpZnkgaGl0VGVzdFJlc3VsdEF0UG9pbnQgYW5kIG5vZGVzRnJvbVJlY3QgQVBJcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU3MjAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgY2FsbHMg
dG8gbmV3IEFQSS4KKworICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgorICAgICAgICAoZXdr
X2ZyYW1lX2hpdF90ZXN0X25ldyk6CisKIDIwMTItMDktMDQgIE1pY2hhxYIgUGFrdcWCYSB2ZWwg
UnV0a2EgIDxtLnBha3VsYUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBDb250ZXh0IG1l
bnUgcmVzdG9yZS4gCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggZThiOTY5ZDFlMWMxOTUwMmU0NzFjZWE4
NWMwMTE1YzljZjk0Y2ViOC4uYjQ3NTJkM2RkMzdiMzZlOTcxNDk4OGFhYjZlNTNjZThjMmI5Nzgz
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA5LTA1ICBBbGxhbiBT
YW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgorCisgICAgICAgIFNpbXBs
aWZ5IGhpdFRlc3RSZXN1bHRBdFBvaW50IGFuZCBub2Rlc0Zyb21SZWN0IEFQSXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NzIwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGNhbGxzIHRvIG5l
dyBBUEkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5t
bToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjphY3Rpb25EaWN0aW9uYXJ5KToKKyAg
ICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBl
bGVtZW50QXRQb2ludDphbGxvd1NoYWRvd0NvbnRlbnQ6XSk6CisKIDIwMTItMDktMDEgIE1hcmsg
TGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZGVkICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9JZGVudGlmaWVyLmg+LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCA4MDM0MDhjMjY5MWU5
NGY0N2M0MmMyNjk0OTRjYmFmYTk2MTNkMjZkLi4xMWU4M2NkODBkMGQ0NzRiM2IxNDM1MmVmNmI4
MmVmNzcxYWI1NmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTA5LTA1
ICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgorCisgICAg
ICAgIFNpbXBsaWZ5IGhpdFRlc3RSZXN1bHRBdFBvaW50IGFuZCBub2Rlc0Zyb21SZWN0IEFQSXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NzIwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGNh
bGxzIHRvIG5ldyBBUEkuCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAg
KFFXZWJGcmFtZTo6aGl0VGVzdENvbnRlbnQpOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6
CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmhhbmRsZVNvZnR3YXJlSW5wdXRQYW5lbCk6Cisg
ICAgICAgIChRV2ViUGFnZVByaXZhdGU6OlRvdWNoQWRqdXN0ZXI6OmZpbmRDYW5kaWRhdGVQb2lu
dEZvclRvdWNoKToKKyAgICAgICAgKFFXZWJQYWdlOjp1cGRhdGVQb3NpdGlvbkRlcGVuZGVudEFj
dGlvbnMpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKwogMjAxMi0wOS0wNCAgSm9uIExlZSAgPGpvbmxl
ZUBhcHBsZS5jb20+CiAKICAgICAgICAgW1F0XSBSRUdSRVNTSU9OKHIxMjczMjEpOiBJdCBtYWRl
IDMgbm90aWZpY2F0aW9uIHRlc3QgdGltZW91dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93
aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDA3ZTRhNmVi
N2U1M2JjYWRkNGY0NTMyMWI5NmY0NWU4Y2Q5MzA3YjUuLjBhNmY1NDE2NDc1MzJmMGRhZTYxNTdj
N2RlODYyYjM3ODc0YWFiNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAx
Mi0wOS0wNSAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQG5va2lhLmNvbT4K
KworICAgICAgICBTaW1wbGlmeSBoaXRUZXN0UmVzdWx0QXRQb2ludCBhbmQgbm9kZXNGcm9tUmVj
dCBBUElzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
NTcyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVw
ZGF0ZSBjYWxscyB0byBuZXcgQVBJLgorCisgICAgICAgICogV2ViQWN0aW9uUHJvcGVydHlCYWcu
Y3BwOgorICAgICAgICAoV2ViQWN0aW9uUHJvcGVydHlCYWc6OlJlYWQpOgorICAgICAgICAqIFdl
YlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6aGFuZGxlQ29udGV4dE1lbnVFdmVudCk6Cisg
ICAgICAgIChXZWJWaWV3OjplbGVtZW50QXRQb2ludCk6CisKIDIwMTItMDgtMzAgIEJlbmphbWlu
IFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVwbGFjZSBKU0M6OlVT
dHJpbmcgYnkgV1RGOjpTdHJpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd3gvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cKaW5kZXggMzcxODNjZjQ2ZDE3OTgyNjQ4
ZDA4YWNiZTllMGFjNzQ2ZTI3NTI1MC4uZjdlZWE5NjFjZTk4YzMzMmVjZDYzY2U2MjViZTNkNGI2
NDNhMzI0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wOS0wNSAgQWxs
YW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQG5va2lhLmNvbT4KKworICAgICAgICBT
aW1wbGlmeSBoaXRUZXN0UmVzdWx0QXRQb2ludCBhbmQgbm9kZXNGcm9tUmVjdCBBUElzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTcyMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBjYWxscyB0
byBuZXcgQVBJLgorCisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJGcmFtZTo6SGl0VGVzdCk6CisKIDIwMTItMDgtMzAgIEJlbmphbWluIFBvdWxhaW4gIDxicG91
bGFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVwbGFjZSBKU0M6OlVTdHJpbmcgYnkgV1RGOjpT
dHJpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwppbmRleCA2MzFhMDFiNzNjNDE1YmY5Mjk4MGZmZTJiOWU3OTkxY2E2Mzkz
ZWU1Li5mMWMyNzM0ZmYzMTBiOGMyYmE4YWY5MzE2NzJkZDhkMGE1ZDIzYWQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjYgQEAKKzIwMTItMDktMDUgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFs
bGFuLmplbnNlbkBub2tpYS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkgaGl0VGVzdFJlc3VsdEF0
UG9pbnQgYW5kIG5vZGVzRnJvbVJlY3QgQVBJcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU3MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgY2FsbHMgdG8gbmV3IEFQSSBhbmQgdXBkYXRlIGV4
cG9ydGVkIHN5bWJvbHMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVj
dGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbjo6SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9u
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OmhhbmRsZUNvbnRleHRNZW51RXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpoaWdobGlnaHRQb3RlbnRpYWxBY3RpdmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6ZmluZFpvb21hYmxlQXJlYUZvclBvaW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNoYXJhY3Rl
ckluZGV4Rm9yUG9pbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtRGljdGlv
bmFyeUxvb2t1cEF0TG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzaG91bGRE
ZWxheVdpbmRvd09yZGVyaW5nRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjphY2Nl
cHRzRmlyc3RNb3VzZSk6CisgICAgICAgICogd2luL1dlYktpdDIuZGVmOgorICAgICAgICAqIHdp
bi9XZWJLaXQyQ0ZMaXRlLmRlZjoKKwogMjAxMi0wOS0wMyAgQWxsYW4gU2FuZGZlbGQgSmVuc2Vu
ICA8YWxsYW4uamVuc2VuQG5va2lhLmNvbT4KIAogICAgICAgICBBbGxvdyBjaGlsZC1mcmFtZSBj
b250ZW50IGluIGhpdC10ZXN0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggYmFlMzNmN2RhOTUy
ZmViNTkyMWQ2MWI4ZWE0NmYwY2MwMmU5OWRiYS4uNGZiMTk0MDU3MmY4ZjgwYzM4YjM1MjJmNDIy
OTI1Yzk3OWVhMzU1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4K
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTE1OCw3ICsxNTgsNyBAQCBf
X1pON1dlYkNvcmUxMkV2ZW50SGFuZGxlcjE0c2Nyb2xsT3ZlcmZsb3dFTlNfMTVTY3JvbGxEaXJl
Y3Rpb25FTlNfMTdTY3JvbGxHcmFudQogX19aTjdXZWJDb3JlMTJFdmVudEhhbmRsZXIxNWhhbmRs
ZUFjY2Vzc0tleUVSS05TXzIxUGxhdGZvcm1LZXlib2FyZEV2ZW50RQogX19aTjdXZWJDb3JlMTJF
dmVudEhhbmRsZXIxNmhhbmRsZVdoZWVsRXZlbnRFUktOU18xOFBsYXRmb3JtV2hlZWxFdmVudEUK
IF9fWk43V2ViQ29yZTEyRXZlbnRIYW5kbGVyMTdzY3JvbGxSZWN1cnNpdmVseUVOU18xNVNjcm9s
bERpcmVjdGlvbkVOU18xN1Njcm9sbEdyYW51bGFyaXR5RVBOU180Tm9kZUUKLV9fWk43V2ViQ29y
ZTEyRXZlbnRIYW5kbGVyMjBoaXRUZXN0UmVzdWx0QXRQb2ludEVSS05TXzIxRnJhY3Rpb25hbExh
eW91dFBvaW50RWJiTlNfMTdIaXRUZXN0U2Nyb2xsYmFyc0VqUktOU18yMEZyYWN0aW9uYWxMYXlv
dXRTaXplRQorX19aTjdXZWJDb3JlMTJFdmVudEhhbmRsZXIyMGhpdFRlc3RSZXN1bHRBdFBvaW50
RVJLTlNfMjFGcmFjdGlvbmFsTGF5b3V0UG9pbnRFalJLTlNfMjBGcmFjdGlvbmFsTGF5b3V0U2l6
ZUUKIF9fWk43V2ViQ29yZTEyRXZlbnRIYW5kbGVyMjFoYW5kbGVNb3VzZVByZXNzRXZlbnRFUktO
U18xOFBsYXRmb3JtTW91c2VFdmVudEUKIF9fWk43V2ViQ29yZTEyRXZlbnRIYW5kbGVyMjNoYW5k
bGVNb3VzZVJlbGVhc2VFdmVudEVSS05TXzE4UGxhdGZvcm1Nb3VzZUV2ZW50RQogX19aTjdXZWJD
b3JlMTJFdmVudEhhbmRsZXIyNGxvZ2ljYWxTY3JvbGxSZWN1cnNpdmVseUVOU18yMlNjcm9sbExv
Z2ljYWxEaXJlY3Rpb25FTlNfMTdTY3JvbGxHcmFudWxhcml0eUVQTlNfNE5vZGVFCkBAIC0xMzUz
LDcgKzEzNTMsNyBAQCBfX1pOSzdXZWJDb3JlN1J1bkxvb3A5VGltZXJCYXNlOGlzQWN0aXZlRXYK
IF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQxMHJlbmRlclZpZXdFdgogX19aTks3V2ViQ29yZThEb2N1
bWVudDExY29tcGxldGVVUkxFUktOM1dURjZTdHJpbmdFCiBfX1pOSzdXZWJDb3JlOERvY3VtZW50
MTNheE9iamVjdENhY2hlRXYKLV9fWk5LN1dlYkNvcmU4RG9jdW1lbnQxM25vZGVzRnJvbVJlY3RF
aWlqampqYmJiCitfX1pOSzdXZWJDb3JlOERvY3VtZW50MTNub2Rlc0Zyb21SZWN0RWlpampqamoK
IF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQxNGdldEVsZW1lbnRCeUlkRVJLTjNXVEYxMkF0b21pY1N0
cmluZ0UKIF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQzMWRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5j
b2RpbmdFUktOM1dURjZTdHJpbmdFCiBfX1pOSzdXZWJDb3JlOERvY3VtZW50NGJvZHlFdgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlciBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUub3JkZXIKaW5kZXggMzVhYmZlNjM1YjkzZGE0NGI0NzI1YTU0ZmIyMjNkMTgxNjczOGMx
Yy4uOTA1OWM4ZDNmOTkxNTRmMjVjMDVkM2JiNDZhNmYyNWY5MjA0MTRkNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lm9yZGVyCkBAIC0yMjc4NSw3ICsyMjc4NSw3IEBAIF9fWk5LN1dlYkNvcmUxMk5vZGVJdGVyYXRv
cjIwdXBkYXRlRm9yTm9kZVJlbW92YWxFUE5TXzROb2RlRVJOUzBfMTFOb2RlUG9pbnRlckUKIF9f
Wk43V2ViQ29yZTI3anNOb2RlSXRlcmF0b3JSZWZlcmVuY2VOb2RlRVBOM0pTQzlFeGVjU3RhdGVF
TlMwXzdKU1ZhbHVlRVJLTlMwXzEwSWRlbnRpZmllckUKIF9fWk5LN1dlYkNvcmU0Tm9kZTIwdHJh
dmVyc2VQcmV2aW91c05vZGVFUEtTMF8KIF9fWk43V2ViQ29yZTM3anNOb2RlSXRlcmF0b3JQcm90
b3R5cGVGdW5jdGlvbkRldGFjaEVQTjNKU0M5RXhlY1N0YXRlRQotX19aTks3V2ViQ29yZThEb2N1
bWVudDEzbm9kZXNGcm9tUmVjdEVpaWpqampiYmIKK19fWk5LN1dlYkNvcmU4RG9jdW1lbnQxM25v
ZGVzRnJvbVJlY3RFaWlqampqagogX19aTks3V2ViQ29yZThEb2N1bWVudDE3aGFuZGxlWmVyb1Bh
ZGRpbmdFUktOU18xNEhpdFRlc3RSZXF1ZXN0RVJOU18xM0hpdFRlc3RSZXN1bHRFCiBfX1pOM1dU
RjIxTGlzdEhhc2hTZXRUcmFuc2xhdG9ySU5TXzZSZWZQdHJJTjdXZWJDb3JlNE5vZGVFRUVMbTI1
NkVOU183UHRySGFzaElTNF9FRUU5dHJhbnNsYXRlRVJQTlNfMTVMaXN0SGFzaFNldE5vZGVJUzRf
TG0yNTZFRUVSS1M0X1BOU18yNExpc3RIYXNoU2V0Tm9kZUFsbG9jYXRvcklTNF9MbTI1NkVFRQog
X19aTjdXZWJDb3JlMjFTdGF0aWNIYXNoU2V0Tm9kZUxpc3RDMUVSTjNXVEYxMUxpc3RIYXNoU2V0
SU5TMV82UmVmUHRySU5TXzROb2RlRUVFTG0yNTZFTlMxXzdQdHJIYXNoSVM1X0VFRUUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCmluZGV4IDQ0NjU3NTEzNzE0ZDgyY2I5YTI5YTkwNTlmMzA1MDY1ZjQ5
NWQ3NWYuLjNiNWFmZjU5NTRhZGY1MWNlZTBhN2ZkMTc0NjA1ZWJhZmQ0Y2NlYmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcApAQCAtMTM4NCw3ICsxMzg0LDcgQEAgU3RyaW5nIERvY3VtZW50Ojpz
dWdnZXN0ZWRNSU1FVHlwZSgpIGNvbnN0CiAvLyAqIG1ha2luZyBpdCByZWNlaXZlIGEgcmVjdCBh
cyBwYXJhbWV0ZXIsIGkuZS4gbm9kZXNGcm9tUmVjdCh4LCB5LCB3LCBoKTsKIC8vICogbWFraW5n
IGl0IHJlY2VpdmUgdGhlIGV4cGFkaW5nIHNpemUgb2YgZWFjaCBkaXJlY3Rpb24gc2VwYXJhdGVs
eSwKIC8vICAgaS5lLiBub2Rlc0Zyb21SZWN0KHgsIHksIHRvcFNpemUsIHJpZ2h0U2l6ZSwgYm90
dG9tU2l6ZSwgbGVmdFNpemUpOwotUGFzc1JlZlB0cjxOb2RlTGlzdD4gRG9jdW1lbnQ6Om5vZGVz
RnJvbVJlY3QoaW50IGNlbnRlclgsIGludCBjZW50ZXJZLCB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1
bnNpZ25lZCByaWdodFBhZGRpbmcsIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxl
ZnRQYWRkaW5nLCBib29sIGlnbm9yZUNsaXBwaW5nLCBib29sIGFsbG93U2hhZG93Q29udGVudCwg
Ym9vbCBhbGxvd0NoaWxkRnJhbWVDb250ZW50KSBjb25zdAorUGFzc1JlZlB0cjxOb2RlTGlzdD4g
RG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QoaW50IGNlbnRlclgsIGludCBjZW50ZXJZLCB1bnNpZ25l
ZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcsIHVuc2lnbmVkIGJvdHRvbVBhZGRp
bmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nLCBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RU
eXBlIGhpdFR5cGUpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFNoYXJlIGNvZGUgYmV0d2VlbiB0
aGlzLCBlbGVtZW50RnJvbVBvaW50IGFuZCBjYXJldFJhbmdlRnJvbVBvaW50LgogICAgIGlmICgh
cmVuZGVyZXIoKSkKQEAgLTEzOTksMTkgKzEzOTksMTEgQEAgUGFzc1JlZlB0cjxOb2RlTGlzdD4g
RG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QoaW50IGNlbnRlclgsIGludCBjZW50ZXJZLCB1bnNpZ25l
ZAogICAgIGZsb2F0IHpvb21GYWN0b3IgPSBmcmFtZS0+cGFnZVpvb21GYWN0b3IoKTsKICAgICBM
YXlvdXRQb2ludCBwb2ludCA9IHJvdW5kZWRMYXlvdXRQb2ludChGbG9hdFBvaW50KGNlbnRlclgg
KiB6b29tRmFjdG9yICsgdmlldygpLT5zY3JvbGxYKCksIGNlbnRlclkgKiB6b29tRmFjdG9yICsg
dmlldygpLT5zY3JvbGxZKCkpKTsKIAotICAgIGludCB0eXBlID0gSGl0VGVzdFJlcXVlc3Q6OlJl
YWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZTsKKyAgICBIaXRUZXN0UmVxdWVzdCByZXF1
ZXN0KGhpdFR5cGUpOwogCiAgICAgLy8gV2hlbiBpZ25vcmVDbGlwcGluZyBpcyBmYWxzZSwgdGhp
cyBtZXRob2QgcmV0dXJucyBudWxsIGZvciBjb29yZGluYXRlcyBvdXRzaWRlIG9mIHRoZSB2aWV3
cG9ydC4KLSAgICBpZiAoaWdub3JlQ2xpcHBpbmcpCi0gICAgICAgIHR5cGUgfD0gSGl0VGVzdFJl
cXVlc3Q6Oklnbm9yZUNsaXBwaW5nOwotICAgIGVsc2UgaWYgKCFmcmFtZVZpZXctPnZpc2libGVD
b250ZW50UmVjdCgpLmludGVyc2VjdHMoSGl0VGVzdFJlc3VsdDo6cmVjdEZvclBvaW50KHBvaW50
LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nKSkp
CisgICAgaWYgKCFyZXF1ZXN0Lmlnbm9yZUNsaXBwaW5nKCkgJiYgIWZyYW1lVmlldy0+dmlzaWJs
ZUNvbnRlbnRSZWN0KCkuaW50ZXJzZWN0cyhIaXRUZXN0UmVzdWx0OjpyZWN0Rm9yUG9pbnQocG9p
bnQsIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcp
KSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKGFsbG93U2hhZG93Q29udGVudCkKLSAgICAg
ICAgdHlwZSB8PSBIaXRUZXN0UmVxdWVzdDo6QWxsb3dTaGFkb3dDb250ZW50OwotICAgIGlmIChh
bGxvd0NoaWxkRnJhbWVDb250ZW50KQotICAgICAgICB0eXBlIHw9IEhpdFRlc3RSZXF1ZXN0OjpB
bGxvd0NoaWxkRnJhbWVDb250ZW50OwotCi0gICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdCh0eXBl
KTsKIAogICAgIC8vIFBhc3NpbmcgYSB6ZXJvIHBhZGRpbmcgd2lsbCB0cmlnZ2VyIGEgcmVjdCBo
aXQgdGVzdCwgaG93ZXZlciBmb3IgdGhlIHB1cnBvc2VzIG9mIG5vZGVzRnJvbVJlY3QsCiAgICAg
Ly8gd2Ugc3BlY2lhbCBoYW5kbGUgdGhpcyBjYXNlIGluIG9yZGVyIHRvIHJldHVybiBhIHZhbGlk
IE5vZGVMaXN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCAyODcyZTVjMmFhOWIzNjI5YTU0NjBj
MTZiMjhhNGRjZmE0ZmZmZDk4Li4xMjQ1ZDdlNGEwNWM2OTA0MjUxYmI1NGQ1ZDc0NTgwMjc4MWNi
MjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkRP
TVRpbWVTdGFtcC5oIgogI2luY2x1ZGUgIkRvY3VtZW50RXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUg
IkRvY3VtZW50VGltaW5nLmgiCisjaW5jbHVkZSAiSGl0VGVzdFJlcXVlc3QuaCIKICNpbmNsdWRl
ICJJY29uVVJMLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ291bnRlcnMuaCIKICNpbmNsdWRlICJJ
bnRSZWN0LmgiCkBAIC0zNzYsMTIgKzM3NywxMCBAQCBwdWJsaWM6CiAgICAgICogQHBhcmFtIHJp
Z2h0UGFkZGluZyBIb3cgbXVjaCB0byBleHBhbmQgdGhlIHJpZ2h0IG9mIHRoZSByZWN0YW5nbGUK
ICAgICAgKiBAcGFyYW0gYm90dG9tUGFkZGluZyBIb3cgbXVjaCB0byBleHBhbmQgdGhlIGJvdHRv
bSBvZiB0aGUgcmVjdGFuZ2xlCiAgICAgICogQHBhcmFtIGxlZnRQYWRkaW5nIEhvdyBtdWNoIHRv
IGV4cGFuZCB0aGUgbGVmdCBvZiB0aGUgcmVjdGFuZ2xlCi0gICAgICogQHBhcmFtIGlnbm9yZUNs
aXBwaW5nIHdoZXRoZXIgb3Igbm90IHRvIGlnbm9yZSB0aGUgcm9vdCBzY3JvbGwgZnJhbWUgd2hl
biByZXRyaWV2aW5nIHRoZSBlbGVtZW50LgotICAgICAqICAgICAgICBJZiBmYWxzZSwgdGhpcyBt
ZXRob2QgcmV0dXJucyBudWxsIGZvciBjb29yZGluYXRlcyBvdXRzaWRlIG9mIHRoZSB2aWV3cG9y
dC4KICAgICAgKi8KICAgICBQYXNzUmVmUHRyPE5vZGVMaXN0PiBub2Rlc0Zyb21SZWN0KGludCBj
ZW50ZXJYLCBpbnQgY2VudGVyWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFkZGluZywgdW5zaWduZWQg
Ym90dG9tUGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIGlnbm9yZUNsaXBwaW5nLCBib29sIGFsbG93U2hhZG93
Q29udGVudCwgYm9vbCBhbGxvd0NoaWxkRnJhbWVDb250ZW50ID0gZmFsc2UpIGNvbnN0OworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGl0VGVzdFJlcXVlc3Q6OkhpdFRl
c3RSZXF1ZXN0VHlwZSBoaXRUeXBlID0gSGl0VGVzdFJlcXVlc3Q6OkRlZmF1bHQoZmFsc2UpKSBj
b25zdDsKICAgICBFbGVtZW50KiBlbGVtZW50RnJvbVBvaW50KGludCB4LCBpbnQgeSkgY29uc3Q7
CiAgICAgUGFzc1JlZlB0cjxSYW5nZT4gY2FyZXRSYW5nZUZyb21Qb2ludChpbnQgeCwgaW50IHkp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKaW5k
ZXggZDkwMTlmYzMwZmQ1ZDg2NDZmMmY0ZWZmNGVhNTRmNDg5Zjg5Mzg1Yi4uODdmM2NjNGQ2MTli
NTY2YzA1ZDIzNjFmNDk1MDY3NTQxYmQyNWMyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q29udGV4dE1lbnVDb250cm9sbGVyLmNwcApAQCAtMTQ5LDcgKzE0OSw3IEBAIFBhc3NPd25QdHI8
Q29udGV4dE1lbnU+IENvbnRleHRNZW51Q29udHJvbGxlcjo6Y3JlYXRlQ29udGV4dE1lbnUoRXZl
bnQqIGV2ZW50KQogICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KG1vdXNlRXZlbnQtPmFic29sdXRl
TG9jYXRpb24oKSk7CiAKICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZXZlbnQtPnRhcmdldCgpLT50
b05vZGUoKS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSkKLSAgICAgICAgcmVzdWx0ID0gZnJhbWUtPmV2
ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChtb3VzZUV2ZW50LT5hYnNvbHV0ZUxv
Y2F0aW9uKCksIGZhbHNlKTsKKyAgICAgICAgcmVzdWx0ID0gZnJhbWUtPmV2ZW50SGFuZGxlcigp
LT5oaXRUZXN0UmVzdWx0QXRQb2ludChtb3VzZUV2ZW50LT5hYnNvbHV0ZUxvY2F0aW9uKCkpOwog
CiAgICAgaWYgKCFyZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAppbmRleCBjNzQ0YzE4
OWViZGJmNGYwYTQwYjhhOTlkOGU3OWEyNWRiMGE2ZDY4Li4zMGEwN2U4YjkwNmMyYmM3ZGZjMGQ4
NTJjZDViYWJmYzdmMDVhOWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdD
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNw
cApAQCAtNTQ0LDcgKzU0NCw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmNhblByb2Nlc3NEcmFn
KERyYWdEYXRhKiBkcmFnRGF0YSkKICAgICBpZiAoIW1fcGFnZS0+bWFpbkZyYW1lKCktPmNvbnRl
bnRSZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXN1bHQgPSBtX3Bh
Z2UtPm1haW5GcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQocG9p
bnQsIHRydWUpOworICAgIHJlc3VsdCA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxl
cigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChwb2ludCwgSGl0VGVzdFJlcXVlc3Q6OkRlZmF1bHQo
dHJ1ZSkpOwogCiAgICAgaWYgKCFyZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTcyNiw3ICs3MjYsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpz
dGFydERyYWcoRnJhbWUqIHNyYywgY29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgRHJhZ09wZXJhdGlv
bgogICAgIGlmICghc3JjLT52aWV3KCkgfHwgIXNyYy0+Y29udGVudFJlbmRlcmVyKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIEhpdFRlc3RSZXN1bHQgaGl0VGVzdFJlc3VsdCA9IHNy
Yy0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGRyYWdPcmlnaW4sIHRydWUp
OworICAgIEhpdFRlc3RSZXN1bHQgaGl0VGVzdFJlc3VsdCA9IHNyYy0+ZXZlbnRIYW5kbGVyKCkt
PmhpdFRlc3RSZXN1bHRBdFBvaW50KGRyYWdPcmlnaW4sIEhpdFRlc3RSZXF1ZXN0OjpEZWZhdWx0
KHRydWUpKTsKICAgICBpZiAoIXN0YXRlLm1fZHJhZ1NyYy0+Y29udGFpbnMoaGl0VGVzdFJlc3Vs
dC5pbm5lck5vZGUoKSkpCiAgICAgICAgIC8vIFRoZSBvcmlnaW5hbCBub2RlIGJlaW5nIGRyYWdn
ZWQgaXNuJ3QgdW5kZXIgdGhlIGRyYWcgb3JpZ2luIGFueW1vcmUuLi4gbWF5YmUgaXQgd2FzCiAg
ICAgICAgIC8vIGhpZGRlbiBvciBtb3ZlZCBvdXQgZnJvbSB1bmRlciB0aGUgY3Vyc29yLiBSZWdh
cmRsZXNzLCB3ZSBkb24ndCB3YW50IHRvIHN0YXJ0IGEgZHJhZyBvbgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuY3BwCmluZGV4IDAwMWZkNmQ5ZTllMTE2Mjk1ZDIwYzUwOTIzMDE5MjdhMDVk
N2RmOTAuLjQ5MzQyNWJkOWM3ZmNjOGMxODdlNWI2OWYxYmJhNjQwMDM5ZjMyNjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTEwMDcsNyArMTAwNyw3IEBAIHZvaWQgRXZl
bnRIYW5kbGVyOjp1cGRhdGVBdXRvc2Nyb2xsUmVuZGVyZXIoKQogICAgIGlmICghbV9hdXRvc2Ny
b2xsUmVuZGVyZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIEhpdFRlc3RSZXN1bHQgaGl0VGVz
dCA9IGhpdFRlc3RSZXN1bHRBdFBvaW50KG1fcGFuU2Nyb2xsU3RhcnRQb3MsIHRydWUpOworICAg
IEhpdFRlc3RSZXN1bHQgaGl0VGVzdCA9IGhpdFRlc3RSZXN1bHRBdFBvaW50KG1fcGFuU2Nyb2xs
U3RhcnRQb3MsIEhpdFRlc3RSZXF1ZXN0OjpEZWZhdWx0KHRydWUpKTsKIAogICAgIGlmIChOb2Rl
KiBub2RlQXRQb2ludCA9IGhpdFRlc3QuaW5uZXJOb2RlKCkpCiAgICAgICAgIG1fYXV0b3Njcm9s
bFJlbmRlcmVyID0gbm9kZUF0UG9pbnQtPnJlbmRlcmVyKCk7CkBAIC0xMDM5LDIyICsxMDM5LDE4
IEBAIERyYWdTb3VyY2VBY3Rpb24gRXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnU291cmNlQWN0aW9u
c0FsbG93ZWQoKSBjb25zdAogfQogI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAg
Ci1IaXRUZXN0UmVzdWx0IEV2ZW50SGFuZGxlcjo6aGl0VGVzdFJlc3VsdEF0UG9pbnQoY29uc3Qg
TGF5b3V0UG9pbnQmIHBvaW50LCBib29sIGFsbG93U2hhZG93Q29udGVudCwgYm9vbCBpZ25vcmVD
bGlwcGluZywgSGl0VGVzdFNjcm9sbGJhcnMgdGVzdFNjcm9sbGJhcnMsIEhpdFRlc3RSZXF1ZXN0
OjpIaXRUZXN0UmVxdWVzdFR5cGUgaGl0VHlwZSwgY29uc3QgTGF5b3V0U2l6ZSYgcGFkZGluZykK
K0hpdFRlc3RSZXN1bHQgRXZlbnRIYW5kbGVyOjpoaXRUZXN0UmVzdWx0QXRQb2ludChjb25zdCBM
YXlvdXRQb2ludCYgcG9pbnQsIEhpdFRlc3RSZXF1ZXN0OjpIaXRUZXN0UmVxdWVzdFR5cGUgaGl0
VHlwZSwgY29uc3QgTGF5b3V0U2l6ZSYgcGFkZGluZykKIHsKICAgICBIaXRUZXN0UmVzdWx0IHJl
c3VsdChwb2ludCwgcGFkZGluZy5oZWlnaHQoKSwgcGFkZGluZy53aWR0aCgpLCBwYWRkaW5nLmhl
aWdodCgpLCBwYWRkaW5nLndpZHRoKCkpOwogCiAgICAgaWYgKCFtX2ZyYW1lLT5jb250ZW50UmVu
ZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICBpZiAoaWdub3JlQ2xpcHBpbmcp
Ci0gICAgICAgIGhpdFR5cGUgfD0gSGl0VGVzdFJlcXVlc3Q6Oklnbm9yZUNsaXBwaW5nOwotICAg
IGlmIChhbGxvd1NoYWRvd0NvbnRlbnQpCi0gICAgICAgIGhpdFR5cGUgfD0gSGl0VGVzdFJlcXVl
c3Q6OkFsbG93U2hhZG93Q29udGVudDsKLSAgICBpZiAodGVzdFNjcm9sbGJhcnMgPT0gU2hvdWxk
SGl0VGVzdFNjcm9sbGJhcnMpCi0gICAgICAgIGhpdFR5cGUgfD0gSGl0VGVzdFJlcXVlc3Q6OlRl
c3RDaGlsZEZyYW1lU2Nyb2xsQmFyczsKICAgICAvLyBXZSBhbHdheXMgbmVlZCB0byBoYW5kbGUg
Y2hpbGQgZnJhbWUgY29udGVudC4KICAgICBoaXRUeXBlIHw9IEhpdFRlc3RSZXF1ZXN0OjpBbGxv
d0NoaWxkRnJhbWVDb250ZW50OwogCi0gICAgbV9mcmFtZS0+Y29udGVudFJlbmRlcmVyKCktPmhp
dFRlc3QoSGl0VGVzdFJlcXVlc3QoaGl0VHlwZSksIHJlc3VsdCk7CisgICAgSGl0VGVzdFJlcXVl
c3QgcmVxdWVzdChoaXRUeXBlKTsKKworICAgIG1fZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpLT5o
aXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7CiAKICAgICAvLyBJZiBvdXIgSGl0VGVzdFJlc3VsdCBp
cyBub3QgdmlzaWJsZSwgdGhlbiB3ZSBzdGFydGVkIGhpdCB0ZXN0aW5nIHRvbyBmYXIgZG93biB0
aGUgZnJhbWUgY2hhaW4uIAogICAgIC8vIEFub3RoZXIgaGl0IHRlc3QgYXQgdGhlIG1haW4gZnJh
bWUgbGV2ZWwgc2hvdWxkIGdldCB1cyB0aGUgY29ycmVjdCB2aXNpYmxlIHJlc3VsdC4KQEAgLTEw
NjYsMTIgKzEwNjIsMTIgQEAgSGl0VGVzdFJlc3VsdCBFdmVudEhhbmRsZXI6OmhpdFRlc3RSZXN1
bHRBdFBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCwgYm9vbAogICAgICAgICAgICAgRnJh
bWVWaWV3KiBtYWluVmlldyA9IG1haW5GcmFtZS0+dmlldygpOwogICAgICAgICAgICAgaWYgKHJl
c3VsdFZpZXcgJiYgbWFpblZpZXcpIHsKICAgICAgICAgICAgICAgICBJbnRQb2ludCBtYWluRnJh
bWVQb2ludCA9IG1haW5WaWV3LT5yb290Vmlld1RvQ29udGVudHMocmVzdWx0Vmlldy0+Y29udGVu
dHNUb1Jvb3RWaWV3KHJvdW5kZWRJbnRQb2ludChyZXN1bHQucG9pbnQoKSkpKTsKLSAgICAgICAg
ICAgICAgICByZXN1bHQgPSBtYWluRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0
QXRQb2ludChtYWluRnJhbWVQb2ludCwgYWxsb3dTaGFkb3dDb250ZW50LCBpZ25vcmVDbGlwcGlu
ZywgdGVzdFNjcm9sbGJhcnMsIGhpdFR5cGUsIHBhZGRpbmcpOworICAgICAgICAgICAgICAgIHJl
c3VsdCA9IG1haW5GcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KG1h
aW5GcmFtZVBvaW50LCBoaXRUeXBlLCBwYWRkaW5nKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogICAgIH0KIAotICAgIGlmICghYWxsb3dTaGFkb3dDb250ZW50KQorICAgIGlmICghcmVxdWVz
dC5hbGxvd3NTaGFkb3dDb250ZW50KCkpCiAgICAgICAgIHJlc3VsdC5zZXRUb05vblNoYWRvd0Fu
Y2VzdG9yKCk7CiAKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTQ4MSw3ICsxNDc3LDcgQEAgYm9v
bCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNl
RXZlbnQmIG1vdXNlRXZlbnQpCiAgICAgbV9tb3VzZURvd25XYXNJblN1YmZyYW1lID0gZmFsc2U7
CiAKICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUpOwot
ICAgIC8vIFNhdmUgdGhlIGRvY3VtZW50IHBvaW50IHdlIGdlbmVyYXRlIGluIGNhc2UgdGhlIHdp
bmRvdyBjb29yZGluYXRlIGlzIGludmFsaWRhdGVkIGJ5IHdoYXQgaGFwcGVucyAKKyAgICAvLyBT
YXZlIHRoZSBkb2N1bWVudCBwb2ludCB3ZSBnZW5lcmF0ZSBpbiBjYXNlIHRoZSB3aW5kb3cgY29v
cmRpbmF0ZSBpcyBpbnZhbGlkYXRlZCBieSB3aGF0IGhhcHBlbnMKICAgICAvLyB3aGVuIHdlIGRp
c3BhdGNoIHRoZSBldmVudC4KICAgICBMYXlvdXRQb2ludCBkb2N1bWVudFBvaW50ID0gZG9jdW1l
bnRQb2ludEZvcldpbmRvd1BvaW50KG1fZnJhbWUsIG1vdXNlRXZlbnQucG9zaXRpb24oKSk7CiAg
ICAgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyBtZXYgPSBtX2ZyYW1lLT5kb2N1bWVudCgp
LT5wcmVwYXJlTW91c2VFdmVudChyZXF1ZXN0LCBkb2N1bWVudFBvaW50LCBtb3VzZUV2ZW50KTsK
QEAgLTIzODEsNyArMjM3Nyw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlRXZl
bnQoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKICAgICAgICAgZXZl
bnRUYXJnZXQgPSBtX3Njcm9sbEdlc3R1cmVIYW5kbGluZ05vZGUuZ2V0KCk7CiAKICAgICBpZiAo
IWV2ZW50VGFyZ2V0KSB7Ci0gICAgICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gaGl0VGVzdFJl
c3VsdEF0UG9pbnQoZ2VzdHVyZUV2ZW50LnBvc2l0aW9uKCksIGZhbHNlLCBmYWxzZSwgRG9udEhp
dFRlc3RTY3JvbGxiYXJzLCBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVz
dDo6QWN0aXZlKTsKKyAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBoaXRUZXN0UmVzdWx0
QXRQb2ludChnZXN0dXJlRXZlbnQucG9zaXRpb24oKSk7CiAgICAgICAgIGV2ZW50VGFyZ2V0ID0g
cmVzdWx0LnRhcmdldE5vZGUoKTsKICAgICB9CiAKQEAgLTI0ODMsOSArMjQ3OSw4IEBAIGJvb2wg
RXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlU2Nyb2xsQ29yZShjb25zdCBQbGF0Zm9ybUdlc3R1
cmVFdmVudCYgZ2VzdHVyZUV2CiAjaWYgRU5BQkxFKFRPVUNIX0FESlVTVE1FTlQpCiBib29sIEV2
ZW50SGFuZGxlcjo6YmVzdENsaWNrYWJsZU5vZGVGb3JUb3VjaFBvaW50KGNvbnN0IEludFBvaW50
JiB0b3VjaENlbnRlciwgY29uc3QgSW50U2l6ZSYgdG91Y2hSYWRpdXMsIEludFBvaW50JiB0YXJn
ZXRQb2ludCwgTm9kZSomIHRhcmdldE5vZGUpCiB7Ci0gICAgSGl0VGVzdFJlcXVlc3Q6OkhpdFRl
c3RSZXF1ZXN0VHlwZSBoaXRUeXBlID0gSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVz
dFJlcXVlc3Q6OkFjdGl2ZTsKICAgICBJbnRQb2ludCBoaXRUZXN0UG9pbnQgPSBtX2ZyYW1lLT52
aWV3KCktPndpbmRvd1RvQ29udGVudHModG91Y2hDZW50ZXIpOwotICAgIEhpdFRlc3RSZXN1bHQg
cmVzdWx0ID0gaGl0VGVzdFJlc3VsdEF0UG9pbnQoaGl0VGVzdFBvaW50LCAvKmFsbG93U2hhZG93
Q29udGVudCovIHRydWUsIC8qaWdub3JlQ2xpcHBpbmcqLyBmYWxzZSwgRG9udEhpdFRlc3RTY3Jv
bGxiYXJzLCBoaXRUeXBlLCB0b3VjaFJhZGl1cyk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQg
PSBoaXRUZXN0UmVzdWx0QXRQb2ludChoaXRUZXN0UG9pbnQsIEhpdFRlc3RSZXF1ZXN0OjpEZWZh
dWx0KHRydWUpLCB0b3VjaFJhZGl1cyk7CiAKICAgICBJbnRSZWN0IHRvdWNoUmVjdCh0b3VjaENl
bnRlciAtIHRvdWNoUmFkaXVzLCB0b3VjaFJhZGl1cyArIHRvdWNoUmFkaXVzKTsKICAgICBSZWZQ
dHI8U3RhdGljSGFzaFNldE5vZGVMaXN0PiBub2RlTGlzdCA9IFN0YXRpY0hhc2hTZXROb2RlTGlz
dDo6YWRvcHQocmVzdWx0LnJlY3RCYXNlZFRlc3RSZXN1bHQoKSk7CkBAIC0yNTAyLDkgKzI0OTcs
OCBAQCBib29sIEV2ZW50SGFuZGxlcjo6YmVzdENsaWNrYWJsZU5vZGVGb3JUb3VjaFBvaW50KGNv
bnN0IEludFBvaW50JiB0b3VjaENlbnRlciwgYwogCiBib29sIEV2ZW50SGFuZGxlcjo6YmVzdENv
bnRleHRNZW51Tm9kZUZvclRvdWNoUG9pbnQoY29uc3QgSW50UG9pbnQmIHRvdWNoQ2VudGVyLCBj
b25zdCBJbnRTaXplJiB0b3VjaFJhZGl1cywgSW50UG9pbnQmIHRhcmdldFBvaW50LCBOb2RlKiYg
dGFyZ2V0Tm9kZSkKIHsKLSAgICBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhp
dFR5cGUgPSBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZl
OwogICAgIEludFBvaW50IGhpdFRlc3RQb2ludCA9IG1fZnJhbWUtPnZpZXcoKS0+d2luZG93VG9D
b250ZW50cyh0b3VjaENlbnRlcik7Ci0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBoaXRUZXN0
UmVzdWx0QXRQb2ludChoaXRUZXN0UG9pbnQsIC8qYWxsb3dTaGFkb3dDb250ZW50Ki8gdHJ1ZSwg
LyppZ25vcmVDbGlwcGluZyovIGZhbHNlLCBEb250SGl0VGVzdFNjcm9sbGJhcnMsIGhpdFR5cGUs
IHRvdWNoUmFkaXVzKTsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGhpdFRlc3RSZXN1bHRB
dFBvaW50KGhpdFRlc3RQb2ludCwgSGl0VGVzdFJlcXVlc3Q6OkRlZmF1bHQodHJ1ZSksIHRvdWNo
UmFkaXVzKTsKIAogICAgIEludFJlY3QgdG91Y2hSZWN0KHRvdWNoQ2VudGVyIC0gdG91Y2hSYWRp
dXMsIHRvdWNoUmFkaXVzICsgdG91Y2hSYWRpdXMpOwogICAgIFJlZlB0cjxTdGF0aWNIYXNoU2V0
Tm9kZUxpc3Q+IG5vZGVMaXN0ID0gU3RhdGljSGFzaFNldE5vZGVMaXN0OjphZG9wdChyZXN1bHQu
cmVjdEJhc2VkVGVzdFJlc3VsdCgpKTsKQEAgLTI1MTMsOSArMjUwNyw4IEBAIGJvb2wgRXZlbnRI
YW5kbGVyOjpiZXN0Q29udGV4dE1lbnVOb2RlRm9yVG91Y2hQb2ludChjb25zdCBJbnRQb2ludCYg
dG91Y2hDZW50ZXIsCiAKIGJvb2wgRXZlbnRIYW5kbGVyOjpiZXN0Wm9vbWFibGVBcmVhRm9yVG91
Y2hQb2ludChjb25zdCBJbnRQb2ludCYgdG91Y2hDZW50ZXIsIGNvbnN0IEludFNpemUmIHRvdWNo
UmFkaXVzLCBJbnRSZWN0JiB0YXJnZXRBcmVhLCBOb2RlKiYgdGFyZ2V0Tm9kZSkKIHsKLSAgICBI
aXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhpdFR5cGUgPSBIaXRUZXN0UmVxdWVz
dDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlOwogICAgIEludFBvaW50IGhpdFRl
c3RQb2ludCA9IG1fZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyh0b3VjaENlbnRlcik7
Ci0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBoaXRUZXN0UmVzdWx0QXRQb2ludChoaXRUZXN0
UG9pbnQsIC8qYWxsb3dTaGFkb3dDb250ZW50Ki8gZmFsc2UsIC8qaWdub3JlQ2xpcHBpbmcqLyBm
YWxzZSwgRG9udEhpdFRlc3RTY3JvbGxiYXJzLCBoaXRUeXBlLCB0b3VjaFJhZGl1cyk7CisgICAg
SGl0VGVzdFJlc3VsdCByZXN1bHQgPSBoaXRUZXN0UmVzdWx0QXRQb2ludChoaXRUZXN0UG9pbnQs
IEhpdFRlc3RSZXF1ZXN0OjpEZWZhdWx0KGZhbHNlKSwgdG91Y2hSYWRpdXMpOwogCiAgICAgSW50
UmVjdCB0b3VjaFJlY3QodG91Y2hDZW50ZXIgLSB0b3VjaFJhZGl1cywgdG91Y2hSYWRpdXMgKyB0
b3VjaFJhZGl1cyk7CiAgICAgUmVmUHRyPFN0YXRpY0hhc2hTZXROb2RlTGlzdD4gbm9kZUxpc3Qg
PSBTdGF0aWNIYXNoU2V0Tm9kZUxpc3Q6OmFkb3B0KHJlc3VsdC5yZWN0QmFzZWRUZXN0UmVzdWx0
KCkpOwpAQCAtMzU1Nyw3ICszNTUwLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVRvdWNo
RXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JiBldmVudCkKICAgICAgICAgdW5zaWduZWQg
dG91Y2hQb2ludFRhcmdldEtleSA9IHBvaW50LmlkKCkgKyAxOwogICAgICAgICBSZWZQdHI8RXZl
bnRUYXJnZXQ+IHRvdWNoVGFyZ2V0OwogICAgICAgICBpZiAocG9pbnRTdGF0ZSA9PSBQbGF0Zm9y
bVRvdWNoUG9pbnQ6OlRvdWNoUHJlc3NlZCkgewotICAgICAgICAgICAgSGl0VGVzdFJlc3VsdCBy
ZXN1bHQgPSBoaXRUZXN0UmVzdWx0QXRQb2ludChwYWdlUG9pbnQsIC8qYWxsb3dTaGFkb3dDb250
ZW50Ki8gZmFsc2UsIGZhbHNlLCBEb250SGl0VGVzdFNjcm9sbGJhcnMsIGhpdFR5cGUpOworICAg
ICAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBoaXRUZXN0UmVzdWx0QXRQb2ludChwYWdl
UG9pbnQsIGhpdFR5cGUpOwogICAgICAgICAgICAgTm9kZSogbm9kZSA9IHJlc3VsdC5pbm5lck5v
ZGUoKTsKICAgICAgICAgICAgIEFTU0VSVChub2RlKTsKIApAQCAtMzU3NSw3ICszNTY4LDcgQEAg
Ym9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2
ZW50JiBldmVudCkKICAgICAgICAgICAgIHRvdWNoVGFyZ2V0ID0gbm9kZTsKICAgICAgICAgfSBl
bHNlIGlmIChwb2ludFN0YXRlID09IFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hSZWxlYXNlZCB8
fCBwb2ludFN0YXRlID09IFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hDYW5jZWxsZWQpIHsKICAg
ICAgICAgICAgIC8vIFdlIG9ubHkgcGVyZm9ybSBhIGhpdHRlc3Qgb24gcmVsZWFzZSBvciBjYW5j
ZWwgdG8gdW5zZXQgOmFjdGl2ZSBvciA6aG92ZXIgc3RhdGUuCi0gICAgICAgICAgICBoaXRUZXN0
UmVzdWx0QXRQb2ludChwYWdlUG9pbnQsIC8qYWxsb3dTaGFkb3dDb250ZW50Ki8gZmFsc2UsIGZh
bHNlLCBEb250SGl0VGVzdFNjcm9sbGJhcnMsIGhpdFR5cGUpOworICAgICAgICAgICAgaGl0VGVz
dFJlc3VsdEF0UG9pbnQocGFnZVBvaW50LCBoaXRUeXBlKTsKICAgICAgICAgICAgIC8vIFRoZSB0
YXJnZXQgc2hvdWxkIGJlIHRoZSBvcmlnaW5hbCB0YXJnZXQgZm9yIHRoaXMgdG91Y2gsIHNvIGdl
dCBpdCBmcm9tIHRoZSBoYXNobWFwLiBBcyBpdCdzIGEgcmVsZWFzZSBvciBjYW5jZWwKICAgICAg
ICAgICAgIC8vIHdlIGFsc28gcmVtb3ZlIGl0IGZyb20gdGhlIG1hcC4KICAgICAgICAgICAgIHRv
dWNoVGFyZ2V0ID0gbV9vcmlnaW5hdGluZ1RvdWNoUG9pbnRUYXJnZXRzLnRha2UodG91Y2hQb2lu
dFRhcmdldEtleSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAppbmRleCA2ZDhhMGFiNzY3
M2E4YzhmZGZiNGM5YTk1ZGJmYzFhYWQ5NTVkNDg3Li4yMmI1OWZjZTdiYWFhNDEwN2M2ODBiZjlm
ODAyNjlkNmEyODliYmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFu
ZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKQEAgLTg4LDgg
Kzg4LDYgQEAgZXh0ZXJuIGNvbnN0IGludCBUZXh0RHJhZ0h5c3RlcmVzaXM7CiBleHRlcm4gY29u
c3QgaW50IEdlbmVyYWxEcmFnSHlzdGVyZXNpczsKICNlbmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQ
T1JUKQogCi1lbnVtIEhpdFRlc3RTY3JvbGxiYXJzIHsgU2hvdWxkSGl0VGVzdFNjcm9sbGJhcnMs
IERvbnRIaXRUZXN0U2Nyb2xsYmFycyB9OwotCiBjbGFzcyBFdmVudEhhbmRsZXIgewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKEV2ZW50SGFuZGxlcik7CiBwdWJsaWM6CkBAIC0xMTUsOSArMTEz
LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRTb29uKCk7
CiAgICAgdm9pZCBkaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudFNvb25JblF1YWQoY29uc3QgRmxv
YXRRdWFkJik7CiAKLSAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3RSZXN1bHRBdFBvaW50KGNvbnN0
IExheW91dFBvaW50JiwgYm9vbCBhbGxvd1NoYWRvd0NvbnRlbnQsIGJvb2wgaWdub3JlQ2xpcHBp
bmcgPSBmYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhpdFRl
c3RTY3JvbGxiYXJzIHNjcm9sbGJhcnMgPSBEb250SGl0VGVzdFNjcm9sbGJhcnMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJl
cXVlc3RUeXBlIGhpdFR5cGUgPSBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVx
dWVzdDo6QWN0aXZlLAorICAgIEhpdFRlc3RSZXN1bHQgaGl0VGVzdFJlc3VsdEF0UG9pbnQoY29u
c3QgTGF5b3V0UG9pbnQmLCBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhpdFR5
cGUgPSBIaXRUZXN0UmVxdWVzdDo6RGVmYXVsdChmYWxzZSksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBMYXlvdXRTaXplJiBwYWRkaW5nID0gTGF5b3V0U2l6
ZSgpKTsKIAogICAgIGJvb2wgbW91c2VQcmVzc2VkKCkgY29uc3QgeyByZXR1cm4gbV9tb3VzZVBy
ZXNzZWQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAppbmRleCAwYjk0
MThiYTMyYmI5YzRjNTdiZDYyNTQ1NWQ4MjBiYzg5ZGMxYTAxLi5hMTJhMDQ1NzFlN2UyMDIzM2Ix
ZDI4YTJiNzZlMTM3YWJmNmQ2NDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zv
Y3VzQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xs
ZXIuY3BwCkBAIC03NDUsNyArNzQ1LDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlRm9jdXNDYW5kaWRh
dGVJZk5lZWRlZChGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIGNvbnN0IEZvY3VzQ2EKICAgICAg
ICAgLy8gSWYgMiBub2RlcyBhcmUgaW50ZXJzZWN0aW5nLCBkbyBoaXQgdGVzdCB0byBmaW5kIHdo
aWNoIG5vZGUgaW4gb24gdG9wLgogICAgICAgICBMYXlvdXRVbml0IHggPSBpbnRlcnNlY3Rpb25S
ZWN0LngoKSArIGludGVyc2VjdGlvblJlY3Qud2lkdGgoKSAvIDI7CiAgICAgICAgIExheW91dFVu
aXQgeSA9IGludGVyc2VjdGlvblJlY3QueSgpICsgaW50ZXJzZWN0aW9uUmVjdC5oZWlnaHQoKSAv
IDI7Ci0gICAgICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gY2FuZGlkYXRlLnZpc2libGVOb2Rl
LT5kb2N1bWVudCgpLT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVz
dFJlc3VsdEF0UG9pbnQoSW50UG9pbnQoeCwgeSksIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgSGl0
VGVzdFJlc3VsdCByZXN1bHQgPSBjYW5kaWRhdGUudmlzaWJsZU5vZGUtPmRvY3VtZW50KCktPnBh
Z2UoKS0+bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChJ
bnRQb2ludCh4LCB5KSwgSGl0VGVzdFJlcXVlc3Q6OkRlZmF1bHQoZmFsc2UsIHRydWUpKTsKICAg
ICAgICAgaWYgKGNhbmRpZGF0ZS52aXNpYmxlTm9kZS0+Y29udGFpbnMocmVzdWx0LmlubmVyTm9k
ZSgpKSkgewogICAgICAgICAgICAgY2xvc2VzdCA9IGNhbmRpZGF0ZTsKICAgICAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggYjM2NDhmNTI0NzAxOWRjMjlkM2RmNTUxMWQ5
Mjg2YmI4OGExMTFhZS4uODQ3MjNmM2U4Y2U5YTFiZDBmMDg1MDIzNGMyOTMwNTYzOGEwNmU5NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTcyNCw3ICs3MjQsNyBAQCBTdHJpbmcgRnJhbWU6OmRp
c3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2RpbmcoY29uc3QgU3RyaW5nJiBzdHIpIGNvbnN0CiAK
IFZpc2libGVQb3NpdGlvbiBGcmFtZTo6dmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQoY29uc3QgSW50
UG9pbnQmIGZyYW1lUG9pbnQpCiB7Ci0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBldmVudEhh
bmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoZnJhbWVQb2ludCwgdHJ1ZSk7CisgICAgSGl0
VGVzdFJlc3VsdCByZXN1bHQgPSBldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQo
ZnJhbWVQb2ludCwgSGl0VGVzdFJlcXVlc3Q6OkRlZmF1bHQodHJ1ZSkpOwogICAgIE5vZGUqIG5v
ZGUgPSByZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCk7CiAgICAgaWYgKCFub2RlKQogICAgICAg
ICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7CkBAIC03NDYsNyArNzQ2LDcgQEAgRG9jdW1lbnQq
IEZyYW1lOjpkb2N1bWVudEF0UG9pbnQoY29uc3QgSW50UG9pbnQmIHBvaW50KQogICAgIEhpdFRl
c3RSZXN1bHQgcmVzdWx0ID0gSGl0VGVzdFJlc3VsdChwdCk7CiAKICAgICBpZiAoY29udGVudFJl
bmRlcmVyKCkpCi0gICAgICAgIHJlc3VsdCA9IGV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0
QXRQb2ludChwdCwgZmFsc2UpOworICAgICAgICByZXN1bHQgPSBldmVudEhhbmRsZXIoKS0+aGl0
VGVzdFJlc3VsdEF0UG9pbnQocHQpOwogICAgIHJldHVybiByZXN1bHQuaW5uZXJOb2RlKCkgPyBy
ZXN1bHQuaW5uZXJOb2RlKCktPmRvY3VtZW50KCkgOiAwOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1RvdWNoRGlzYW1iaWd1YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9Ub3VjaERpc2FtYmlndWF0aW9uLmNwcAppbmRleCA1ZWZlM2RiNDkxNDA1ZTczNjFkNzZi
NzdlZmIxMWVhNzM0MDZmMTdlLi43MzJkZGE0YjQyMTkyMDZjMmQzNzkxNjE0YmMzYjU0OGIzM2Rh
ZWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoRGlzYW1iaWd1YXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVG91Y2hEaXNhbWJpZ3VhdGlvbi5jcHAKQEAg
LTk2LDcgKzk2LDcgQEAgdm9pZCBmaW5kR29vZFRvdWNoVGFyZ2V0cyhjb25zdCBJbnRSZWN0JiB0
b3VjaEJveCwgRnJhbWUqIG1haW5GcmFtZSwgZmxvYXQgcGFnZVMKICAgICBJbnRQb2ludCB0b3Vj
aFBvaW50ID0gdG91Y2hCb3guY2VudGVyKCk7CiAgICAgSW50UG9pbnQgY29udGVudHNQb2ludCA9
IG1haW5GcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHRvdWNoUG9pbnQpOwogCi0gICAg
SGl0VGVzdFJlc3VsdCByZXN1bHQgPSBtYWluRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0
UmVzdWx0QXRQb2ludChjb250ZW50c1BvaW50LCBmYWxzZSwgZmFsc2UsIERvbnRIaXRUZXN0U2Ny
b2xsYmFycywgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25s
eSwgSW50U2l6ZShwYWRkaW5nLCBwYWRkaW5nKSk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQg
PSBtYWluRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChjb250ZW50
c1BvaW50LCBIaXRUZXN0UmVxdWVzdDo6RGVmYXVsdChmYWxzZSksIEludFNpemUocGFkZGluZywg
cGFkZGluZykpOwogICAgIGNvbnN0IExpc3RIYXNoU2V0PFJlZlB0cjxOb2RlPiA+JiBoaXRSZXN1
bHRzID0gcmVzdWx0LnJlY3RCYXNlZFRlc3RSZXN1bHQoKTsKIAogICAgIEhhc2hNYXA8Tm9kZSos
IFRvdWNoVGFyZ2V0RGF0YT4gdG91Y2hUYXJnZXRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0hpdFRlc3RSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SGl0VGVzdFJlcXVlc3QuaAppbmRleCAzZmFmODhhOWY5MTM3NjFlYzAxM2Q2ZTdkMmNkZGFmMzJm
ODRkNzlmLi4yMWM5NjFkMWRiNDljYmY5MTk3MjFkNDBlOTJlY2NhM2JjZGQzZjEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlcXVlc3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlcXVlc3QuaApAQCAtNDgsNiArNDgsMTYgQEAg
cHVibGljOgogICAgIHsKICAgICB9CiAKKyAgICBzdGF0aWMgSGl0VGVzdFJlcXVlc3RUeXBlIERl
ZmF1bHQoYm9vbCBhbGxvd1NoYWRvd0NvbnRlbnQsIGJvb2wgaWdub3JlQ2xpcHBpbmcgPSBmYWxz
ZSkKKyAgICB7CisgICAgICAgIEhpdFRlc3RSZXF1ZXN0VHlwZSB0eXBlKFJlYWRPbmx5IHwgQWN0
aXZlKTsKKyAgICAgICAgaWYgKGFsbG93U2hhZG93Q29udGVudCkKKyAgICAgICAgICAgIHR5cGUg
fD0gQWxsb3dTaGFkb3dDb250ZW50OworICAgICAgICBpZiAoaWdub3JlQ2xpcHBpbmcpCisgICAg
ICAgICAgICB0eXBlIHw9IElnbm9yZUNsaXBwaW5nOworICAgICAgICByZXR1cm4gdHlwZTsKKyAg
ICB9CisKICAgICBib29sIHJlYWRPbmx5KCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0VHlwZSAm
IFJlYWRPbmx5OyB9CiAgICAgYm9vbCBhY3RpdmUoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RU
eXBlICYgQWN0aXZlOyB9CiAgICAgYm9vbCBtb3ZlKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0
VHlwZSAmIE1vdmU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBkMDNm
MDNjMGJjNTYxOWUyNDMyZTdkOGQ2NjQ4ZTM4ZTEwZTdlNWVhLi4zY2RmN2JiNjI0NTcyZmMyODEx
YTBiZWYxZTBiNWM1MGVlMjEwOTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CkBAIC05NzIsOCArOTcyLDExIEBAIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IEludGVybmFsczo6bm9k
ZXNGcm9tUmVjdChEb2N1bWVudCogZG9jdW1lbnQsIGludCB4LCBpbnQgeSwKICAgICAgICAgZWMg
PSBJTlZBTElEX0FDQ0VTU19FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KKyAgICBIaXRU
ZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhpdFR5cGUgPSBIaXRUZXN0UmVxdWVzdDo6
RGVmYXVsdChhbGxvd1NoYWRvd0NvbnRlbnQsIGlnbm9yZUNsaXBwaW5nKTsKKyAgICBpZiAoYWxs
b3dDaGlsZEZyYW1lQ29udGVudCkKKyAgICAgICAgaGl0VHlwZSB8PSBIaXRUZXN0UmVxdWVzdDo6
QWxsb3dDaGlsZEZyYW1lQ29udGVudDsKIAotICAgIHJldHVybiBkb2N1bWVudC0+bm9kZXNGcm9t
UmVjdCh4LCB5LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQ
YWRkaW5nLCBpZ25vcmVDbGlwcGluZywgYWxsb3dTaGFkb3dDb250ZW50LCBhbGxvd0NoaWxkRnJh
bWVDb250ZW50KTsKKyAgICByZXR1cm4gZG9jdW1lbnQtPm5vZGVzRnJvbVJlY3QoeCwgeSwgdG9w
UGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0UGFkZGluZywgaGl0VHlw
ZSk7CiB9CiAKIHZvaWQgSW50ZXJuYWxzOjplbWl0SW5zcGVjdG9yRGlkQmVnaW5GcmFtZSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwIGIvU291
cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcAppbmRleCBkNWQ3ZDI2ZWMyYjdk
ZjliMTM2NGNhNzNjMGE4YmIyZjM5NmMyNDNlLi4yOTNmZGUzYmE5ODAxN2FhMzlkZTgxYjgwMzRl
YWVlNmZmZDNjMTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dl
YlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAK
QEAgLTI3NDYsNyArMjc0Niw3IEBAIFBhc3NSZWZQdHI8Tm9kZT4gV2ViUGFnZVByaXZhdGU6OmNv
bnRleHROb2RlKFRhcmdldERldGVjdGlvblN0cmF0ZWd5IHN0cmF0ZWd5KQogICAgICAgICByZXR1
cm4gcmVzdWx0Lm5vZGUoRmF0RmluZ2Vyc1Jlc3VsdDo6U2hhZG93Q29udGVudE5vdEFsbG93ZWQp
OwogICAgIH0KIAotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZXZlbnRIYW5kbGVyLT5oaXRU
ZXN0UmVzdWx0QXRQb2ludChjb250ZW50UG9zLCBmYWxzZSAvKmFsbG93U2hhZG93Q29udGVudCov
KTsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGV2ZW50SGFuZGxlci0+aGl0VGVzdFJlc3Vs
dEF0UG9pbnQoY29udGVudFBvcyk7CiAgICAgcmV0dXJuIHJlc3VsdC5pbm5lck5vZGUoKTsKIH0K
IApAQCAtMjgxOCw3ICsyODE4LDcgQEAgTm9kZSogV2ViUGFnZVByaXZhdGU6Om5vZGVGb3Jab29t
VW5kZXJQb2ludChjb25zdCBJbnRQb2ludCYgcG9pbnQpCiAgICAgaWYgKCFtX21haW5GcmFtZSkK
ICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IG1fbWFpbkZy
YW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQobWFwRnJvbVRyYW5zZm9y
bWVkKHBvaW50KSwgZmFsc2UpOworICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gbV9tYWluRnJh
bWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChtYXBGcm9tVHJhbnNmb3Jt
ZWQocG9pbnQpKTsKIAogICAgIE5vZGUqIG5vZGUgPSByZXN1bHQuaW5uZXJOb25TaGFyZWROb2Rl
KCk7CiAKQEAgLTQwMjcsNyArNDAyNyw3IEBAIGJvb2wgV2ViUGFnZVByaXZhdGU6OmhhbmRsZU1v
dXNlRXZlbnQoUGxhdGZvcm1Nb3VzZUV2ZW50JiBtb3VzZUV2ZW50KQogICAgIH0KIAogICAgIGlm
ICghbm9kZSkgewotICAgICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGV2ZW50SGFuZGxlci0+
aGl0VGVzdFJlc3VsdEF0UG9pbnQobWFwRnJvbVZpZXdwb3J0VG9Db250ZW50cyhtb3VzZUV2ZW50
LnBvc2l0aW9uKCkpLCBmYWxzZSAvKmFsbG93U2hhZG93Q29udGVudCovKTsKKyAgICAgICAgSGl0
VGVzdFJlc3VsdCByZXN1bHQgPSBldmVudEhhbmRsZXItPmhpdFRlc3RSZXN1bHRBdFBvaW50KG1h
cEZyb21WaWV3cG9ydFRvQ29udGVudHMobW91c2VFdmVudC5wb3NpdGlvbigpKSk7CiAgICAgICAg
IG5vZGUgPSByZXN1bHQuaW5uZXJOb2RlKCk7CiAgICAgfQogCkBAIC01MTkwLDcgKzUxOTAsNyBA
QCBXZWJET01Eb2N1bWVudCBXZWJQYWdlOjpkb2N1bWVudCgpIGNvbnN0CiAKIFdlYkRPTU5vZGUg
V2ViUGFnZTo6bm9kZUF0UG9pbnQoaW50IHgsIGludCB5KQogewotICAgIEhpdFRlc3RSZXN1bHQg
cmVzdWx0ID0gZC0+bV9tYWluRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQ
b2ludChkLT5tYXBGcm9tVHJhbnNmb3JtZWQoSW50UG9pbnQoeCwgeSkpLCBmYWxzZSk7CisgICAg
SGl0VGVzdFJlc3VsdCByZXN1bHQgPSBkLT5tX21haW5GcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhp
dFRlc3RSZXN1bHRBdFBvaW50KGQtPm1hcEZyb21UcmFuc2Zvcm1lZChJbnRQb2ludCh4LCB5KSkp
OwogICAgIE5vZGUqIG5vZGUgPSByZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCk7CiAgICAgcmV0
dXJuIFdlYkRPTU5vZGUobm9kZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvV2ViS2l0U3VwcG9ydC9GYXRGaW5nZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9XZWJLaXRTdXBwb3J0L0ZhdEZpbmdlcnMuY3BwCmluZGV4IDM4MWU3YTFlY2YxMzA0NTVj
ZjM2M2I1N2EzMDEyOWZlY2UwZDdhNjguLmZmM2M4MGRlYWNhYTkzYTcyOTgzNjA2N2RjZDQ3MTg5
Mjk3NGRjNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBw
b3J0L0ZhdEZpbmdlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRT
dXBwb3J0L0ZhdEZpbmdlcnMuY3BwCkBAIC00OTEsMTEgKzQ5MSwxMCBAQCB2b2lkIEZhdEZpbmdl
cnM6OmdldE5vZGVzRnJvbVJlY3QoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBJbnRQb2ludCYg
Y29udGVudFBvcwogICAgIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9t
UGFkZGluZywgbGVmdFBhZGRpbmc7CiAgICAgZ2V0UGFkZGluZ3ModG9wUGFkZGluZywgcmlnaHRQ
YWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0UGFkZGluZyk7CiAKLSAgICBIaXRUZXN0UmVxdWVz
dCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3Rp
dmUgfCBIaXRUZXN0UmVxdWVzdDo6SWdub3JlQ2xpcHBpbmcpOwogICAgIC8vIFRoZSB1c2VyIGZ1
bmN0aW9ucyBjaGVja0ZvclRleHQoKSBhbmQgZmluZEludGVyc2VjdGluZ1JlZ2lvbnMoKSB1c2Vz
IHRoZSBOb2RlLndob2xlVGV4dCgpIHRvIGNoZWNrRmluZ2VySW50ZXJzZWN0aW9uKCkKICAgICAv
LyBub3QgdGhlIHRleHQgaW4gaXRzIHNoYWRvdyB0cmVlLgotICAgIFNoYWRvd0NvbnRlbnRGaWx0
ZXJQb2xpY3kgYWxsb3dTaGFkb3cgPSBtX3RhcmdldFR5cGUgPT0gVGV4dCA/IERvTm90QWxsb3dT
aGFkb3dDb250ZW50IDogQWxsb3dTaGFkb3dDb250ZW50OwotICAgIEhpdFRlc3RSZXN1bHQgcmVz
dWx0KGNvbnRlbnRQb3MsIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywg
bGVmdFBhZGRpbmcsIGFsbG93U2hhZG93KTsKKyAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0ID0g
SGl0VGVzdFJlcXVlc3Q6OkRlZmF1bHQobV90YXJnZXRUeXBlICE9IFRleHQsIHRydWUpOworICAg
IEhpdFRlc3RSZXN1bHQgcmVzdWx0KGNvbnRlbnRQb3MsIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGlu
ZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcpOwogCiAgICAgZG9jdW1lbnQtPnJlbmRlclZp
ZXcoKS0+bGF5ZXIoKS0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOwogICAgIGludGVyc2VjdGVk
Tm9kZXMgPSByZXN1bHQucmVjdEJhc2VkVGVzdFJlc3VsdCgpOwpAQCAtNTEwLDcgKzUwOSw3IEBA
IHZvaWQgRmF0RmluZ2Vyczo6Z2V0UmVsZXZhbnRJbmZvRnJvbVBvaW50KERvY3VtZW50KiBkb2N1
bWVudCwgY29uc3QgSW50UG9pbnQmIGNvCiAgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQt
PnJlbmRlcmVyKCkgfHwgIWRvY3VtZW50LT5mcmFtZSgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBIaXRUZXN0UmVzdWx0IHJlc3VsdCAgPSBkb2N1bWVudC0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVy
KCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGNvbnRlbnRQb3MsIHRydWUgLyphbGxvd1NoYWRvd0Nv
bnRlbnQqLyk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgID0gZG9jdW1lbnQtPmZyYW1lKCkt
PmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChjb250ZW50UG9zLCBIaXRUZXN0
UmVxdWVzdDo6RGVmYXVsdCh0cnVlIC8qYWxsb3dTaGFkb3dDb250ZW50Ki8pKTsKICAgICBOb2Rl
KiBub2RlID0gcmVzdWx0LmlubmVyTm9kZSgpOwogICAgIHdoaWxlIChub2RlICYmICFub2RlLT5p
c0VsZW1lbnROb2RlKCkpCiAgICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9TZWxlY3Rpb25I
YW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1NlbGVj
dGlvbkhhbmRsZXIuY3BwCmluZGV4IDNiMDQyNDdiZWNmZGJiN2MyNmM0ZTljMDQ2MTVjZGYxYzIz
ZmZkZWIuLmE3YTM5YmFhOWY0MzVkMjZjZjA1ZWIwYmEyODgwYWVlMTRlODM1YzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1NlbGVjdGlvbkhhbmRs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1NlbGVj
dGlvbkhhbmRsZXIuY3BwCkBAIC0xNTksNyArMTU5LDcgQEAgc3RhdGljIFZpc2libGVQb3NpdGlv
biB2aXNpYmxlUG9zaXRpb25Gb3JQb2ludElnbm9yaW5nQ2xpcHBpbmcoY29uc3QgRnJhbWUmIGZy
YW0KICAgICAvLyBvdXRzaWRlIHRoZSB2aXNpYmxlIHJlY3QuIFRvIHdvcmsgYXJvdW5kIHRoZSBi
dWcsIHRoaXMgaXMgYSBjb3B5IG9mCiAgICAgLy8gdmlzaWJsZVBvc2l0aW9uQXRQb2ludCB3aGlj
aCB3aGljaCBwYXNzZXMgaWdub3JlQ2xpcHBpbmc9dHJ1ZS4KICAgICAvLyBTZWUgUklNIEJ1ZyAj
NDMxNS4KLSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGZyYW1lLmV2ZW50SGFuZGxlcigpLT5o
aXRUZXN0UmVzdWx0QXRQb2ludChmcmFtZVBvaW50LCB0cnVlIC8qIGFsbG93U2hhZG93Q29udGVu
dCAqLywgdHJ1ZSAvKiBpZ25vcmVDbGlwcGluZyAqLyk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1
bHQgPSBmcmFtZS5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoZnJhbWVQb2lu
dCwgSGl0VGVzdFJlcXVlc3Q6OkRlZmF1bHQodHJ1ZSAvKiBhbGxvd1NoYWRvd0NvbnRlbnQgKi8s
IHRydWUgLyogaWdub3JlQ2xpcHBpbmcgKi8pKTsKIAogICAgIE5vZGUqIG5vZGUgPSByZXN1bHQu
aW5uZXJOb2RlKCk7CiAgICAgaWYgKCFub2RlIHx8IG5vZGUtPmRvY3VtZW50KCkgIT0gZnJhbWUu
ZG9jdW1lbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0NvbnRl
eHRNZW51Q2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Db250ZXh0
TWVudUNsaWVudEltcGwuY3BwCmluZGV4IGFkYWE0MTM5MmQyYTE3YjY0NDkzYjI0ZWNlYjhjNzk4
M2UzZWQ0YjEuLjNjMzEyYjExMGNjNmIzZjJhNzNhYmQzM2Q1YzcyNDlmMzk1NmQzODggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0NvbnRleHRNZW51Q2xpZW50SW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29udGV4dE1lbnVDbGllbnRJbXBs
LmNwcApAQCAtMTIyLDcgKzEyMiw3IEBAIHN0YXRpYyBTdHJpbmcgc2VsZWN0TWlzc3BlbGxlZFdv
cmQoY29uc3QgQ29udGV4dE1lbnUqIGRlZmF1bHRNZW51LCBGcmFtZSogc2VsZWN0CiAKICAgICAv
LyBTZWxlY3Rpb24gaXMgZW1wdHksIHNvIGNoYW5nZSB0aGUgc2VsZWN0aW9uIHRvIHRoZSB3b3Jk
IHVuZGVyIHRoZSBjdXJzb3IuCiAgICAgSGl0VGVzdFJlc3VsdCBoaXRUZXN0UmVzdWx0ID0gc2Vs
ZWN0ZWRGcmFtZS0+ZXZlbnRIYW5kbGVyKCktPgotICAgICAgICBoaXRUZXN0UmVzdWx0QXRQb2lu
dChzZWxlY3RlZEZyYW1lLT5wYWdlKCktPmNvbnRleHRNZW51Q29udHJvbGxlcigpLT5oaXRUZXN0
UmVzdWx0KCkucG9pbnQoKSwgdHJ1ZSk7CisgICAgICAgIGhpdFRlc3RSZXN1bHRBdFBvaW50KHNl
bGVjdGVkRnJhbWUtPnBhZ2UoKS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCktPmhpdFRlc3RSZXN1
bHQoKS5wb2ludCgpLCBIaXRUZXN0UmVxdWVzdDo6RGVmYXVsdCh0cnVlKSk7CiAgICAgTm9kZSog
aW5uZXJOb2RlID0gaGl0VGVzdFJlc3VsdC5pbm5lck5vZGUoKTsKICAgICBWaXNpYmxlUG9zaXRp
b24gcG9zKGlubmVyTm9kZS0+cmVuZGVyZXIoKS0+cG9zaXRpb25Gb3JQb2ludCgKICAgICAgICAg
aGl0VGVzdFJlc3VsdC5sb2NhbFBvaW50KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCmluZGV4IDVkZDAyYjU2M2QwOTEz
MmRjY2ExMmViYzEzZDM3YWQ2NWQ2MDA5YTIuLmM5OWJkN2M1NzI1M2IyYjZlYWRlMDBhNWM1YWUy
NmVkNmE2MzY3OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1l
TG9hZGVyQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJh
bWVMb2FkZXJDbGllbnRJbXBsLmNwcApAQCAtOTk3LDggKzk5Nyw3IEBAIHZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRJbXBsOjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oCiAg
ICAgICAgICAgICAgICAgaWYgKGV2ZW50LT5pc01vdXNlRXZlbnQoKSkgewogICAgICAgICAgICAg
ICAgICAgICBjb25zdCBNb3VzZUV2ZW50KiBtb3VzZUV2ZW50ID0KICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IE1vdXNlRXZlbnQqPihldmVudCk7Ci0gICAgICAgICAg
ICAgICAgICAgIG5vZGUgPSBtX3dlYkZyYW1lLT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGl0
VGVzdFJlc3VsdEF0UG9pbnQoCi0gICAgICAgICAgICAgICAgICAgICAgICBtb3VzZUV2ZW50LT5h
YnNvbHV0ZUxvY2F0aW9uKCksIGZhbHNlKS5pbm5lck5vblNoYXJlZE5vZGUoKTsKKyAgICAgICAg
ICAgICAgICAgICAgbm9kZSA9IG1fd2ViRnJhbWUtPmZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5o
aXRUZXN0UmVzdWx0QXRQb2ludChtb3VzZUV2ZW50LT5hYnNvbHV0ZUxvY2F0aW9uKCkpLmlubmVy
Tm9uU2hhcmVkTm9kZSgpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJGcmFtZUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJh
bWVJbXBsLmNwcAppbmRleCBlYjNhZWY3NzVjYWU1N2Q0NjRiYTQzM2FmYzBmNDc3MzRlNmM5ZmUz
Li5hNmQ4ODU2MWEzNDNhN2JjZDZiZWYzMDdlOWM5NjIzZjA2MDdhNDc4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKQEAgLTEyNjIsNyArMTI2Miw3IEBA
IHNpemVfdCBXZWJGcmFtZUltcGw6OmNoYXJhY3RlckluZGV4Rm9yUG9pbnQoY29uc3QgV2ViUG9p
bnQmIHdlYlBvaW50KSBjb25zdAogICAgICAgICByZXR1cm4gbm90Rm91bmQ7CiAKICAgICBJbnRQ
b2ludCBwb2ludCA9IGZyYW1lKCktPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyh3ZWJQb2ludCk7
Ci0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBmcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGl0
VGVzdFJlc3VsdEF0UG9pbnQocG9pbnQsIGZhbHNlKTsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3Vs
dCA9IGZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChwb2ludCk7
CiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IGZyYW1lKCktPnJhbmdlRm9yUG9pbnQocmVzdWx0
LnJvdW5kZWRQb2ludCgpKTsKICAgICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1cm4gbm90Rm91
bmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250
YWluZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRh
aW5lckltcGwuY3BwCmluZGV4IGZlOTlhYjg0NDViMTI3MmIyM2M2N2ZmNDc2YTk2MWI3MjFkYzY3
NjcuLjkzYzAyYzliOThkMWVhYjE3OTk0NmZiNWE4YjEwMGM5NTdkYTliODggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3Bw
CkBAIC01MTMsNyArNTEzLDcgQEAgYm9vbCBXZWJQbHVnaW5Db250YWluZXJJbXBsOjppc1JlY3RU
b3Btb3N0KGNvbnN0IFdlYlJlY3QmIHJlY3QpCiAgICAgTGF5b3V0UG9pbnQgY2VudGVyID0gZG9j
dW1lbnRSZWN0LmNlbnRlcigpOwogICAgIC8vIE1ha2UgdGhlIHJlY3Qgd2UncmUgY2hlY2tpbmcg
KHRoZSBwb2ludCBzdXJyb3VuZGVkIGJ5IHBhZGRpbmcgcmVjdHMpIGNvbnRhaW5lZCBpbnNpZGUg
dGhlIHJlcXVlc3RlZCByZWN0LiAoTm90ZSB0aGF0IC0xLzIgaXMgMC4pCiAgICAgTGF5b3V0U2l6
ZSBwYWRkaW5nKChkb2N1bWVudFJlY3Qud2lkdGgoKSAtIDEpIC8gMiwgKGRvY3VtZW50UmVjdC5o
ZWlnaHQoKSAtIDEpIC8gMik7Ci0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBmcmFtZS0+ZXZl
bnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGNlbnRlciwgZmFsc2UsIGZhbHNlLCBE
b250SGl0VGVzdFNjcm9sbGJhcnMsIEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RS
ZXF1ZXN0OjpBY3RpdmUsIHBhZGRpbmcpOworICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZnJh
bWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChjZW50ZXIsIEhpdFRlc3RS
ZXF1ZXN0OjpEZWZhdWx0KGZhbHNlKSwgcGFkZGluZyk7CiAgICAgY29uc3QgSGl0VGVzdFJlc3Vs
dDo6Tm9kZVNldCYgbm9kZXMgPSByZXN1bHQucmVjdEJhc2VkVGVzdFJlc3VsdCgpOwogICAgIGlm
IChub2Rlcy5zaXplKCkgIT0gMSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDJjNDg3YjgwNWQ4NjgzNzFkZWJi
OTEyNThhZGI3NGMyNTI2Nzk0NjcuLjVkYWFiNTBmNzZkYmRjNzBiMDc5NjU4NDVmNGUxZTUxOTA4
N2Q0M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAg
LTYzOCw3ICs2MzgsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpoYW5kbGVNb3VzZVVwKEZyYW1lJiBt
YWluRnJhbWUsIGNvbnN0IFdlYk1vdXNlRXZlbnQmIGV2ZW50KQogICAgICAgICBGcmFtZVZpZXcq
IHZpZXcgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCk7CiAgICAgICAgIEludFBvaW50IGNs
aWNrUG9pbnQobV9sYXN0TW91c2VEb3duUG9pbnQueCwgbV9sYXN0TW91c2VEb3duUG9pbnQueSk7
CiAgICAgICAgIEludFBvaW50IGNvbnRlbnRQb2ludCA9IHZpZXctPndpbmRvd1RvQ29udGVudHMo
Y2xpY2tQb2ludCk7Ci0gICAgICAgIEhpdFRlc3RSZXN1bHQgaGl0VGVzdFJlc3VsdCA9IGZvY3Vz
ZWQtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChjb250ZW50UG9pbnQsIGZh
bHNlLCBmYWxzZSwgU2hvdWxkSGl0VGVzdFNjcm9sbGJhcnMpOworICAgICAgICBIaXRUZXN0UmVz
dWx0IGhpdFRlc3RSZXN1bHQgPSBmb2N1c2VkLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3Vs
dEF0UG9pbnQoY29udGVudFBvaW50LCBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0
UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OlRlc3RDaGlsZEZyYW1lU2Nyb2xsQmFy
cyk7CiAgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gc2VuZCBhIHBhc3RlIHdoZW4gbWlkZGxl
IGNsaWNraW5nIGEgc2Nyb2xsIGJhciBvciBhCiAgICAgICAgIC8vIGxpbmsgKHdoaWNoIHdpbGwg
bmF2aWdhdGUgbGF0ZXIgaW4gdGhlIGNvZGUpLiAgVGhlIG1haW4gc2Nyb2xsYmFycwogICAgICAg
ICAvLyBoYXZlIHRvIGJlIGhhbmRsZWQgc2VwYXJhdGVseS4KQEAgLTEwMDUsOSArMTAwNSw3IEBA
IFdlYlJlY3QgV2ViVmlld0ltcGw6OmNvbXB1dGVCbG9ja0JvdW5kcyhjb25zdCBXZWJSZWN0JiBy
ZWN0LCBBdXRvWm9vbVR5cGUgem9vbVR5CiAKICAgICAvLyBVc2UgdGhlIHJlY3QtYmFzZWQgaGl0
IHRlc3QgdG8gZmluZCB0aGUgbm9kZS4KICAgICBJbnRQb2ludCBwb2ludCA9IG1haW5GcmFtZUlt
cGwoKS0+ZnJhbWVWaWV3KCktPndpbmRvd1RvQ29udGVudHMoSW50UG9pbnQocmVjdC54LCByZWN0
LnkpKTsKLSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IG1haW5GcmFtZUltcGwoKS0+ZnJhbWUo
KS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KHBvaW50LAotICAgICAgICAg
ICAgZmFsc2UsIHpvb21UeXBlID09IEZpbmRJblBhZ2UsIERvbnRIaXRUZXN0U2Nyb2xsYmFycywg
SGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSwKLSAgICAg
ICAgICAgIEludFNpemUocmVjdC53aWR0aCwgcmVjdC5oZWlnaHQpKTsKKyAgICBIaXRUZXN0UmVz
dWx0IHJlc3VsdCA9IG1haW5GcmFtZUltcGwoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhp
dFRlc3RSZXN1bHRBdFBvaW50KHBvaW50LCBIaXRUZXN0UmVxdWVzdDo6RGVmYXVsdChmYWxzZSwg
em9vbVR5cGUgPT0gRmluZEluUGFnZSksIEludFNpemUocmVjdC53aWR0aCwgcmVjdC5oZWlnaHQp
KTsKIAogICAgIE5vZGUqIG5vZGUgPSByZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCk7CiAgICAg
aWYgKCFub2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAppbmRleCA0YjMzYzYyODBm
M2NkMmY0YzE0NmRhYjk4YzhlM2NjN2RmZjIxYWFjLi5mNWEyMzMxOTQ2M2JmNDZjMTVkN2ZkOTc1
ZWFmOWRkNTJkNjhjYzM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2Zy
YW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcApAQCAtMzgs
NiArMzgsNyBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxQbHVnSW5F
bGVtZW50LmgiCiAjaW5jbHVkZSAiSGlzdG9yeUl0ZW0uaCIKKyNpbmNsdWRlICJIaXRUZXN0UmVx
dWVzdC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbnRTaXplLmgi
CiAjaW5jbHVkZSAiS1VSTC5oIgpAQCAtNjkzLDggKzY5NCw4IEBAIEV3a19IaXRfVGVzdCogZXdr
X2ZyYW1lX2hpdF90ZXN0X25ldyhjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUsIGludCB4LCBp
bnQgeSkKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFt
ZS0+Y29udGVudFJlbmRlcmVyKCksIDApOwogCiAgICAgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCBy
ZXN1bHQgPSBzbWFydERhdGEtPmZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0
UG9pbnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmlldy0+d2lu
ZG93VG9Db250ZW50cyhXZWJDb3JlOjpJbnRQb2ludCh4LCB5KSksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyphbGxvd1NoYWRvd0NvbnRlbnQqLyBmYWxzZSwgLypp
Z25vcmVDbGlwcGluZyovIHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICh2aWV3LT53aW5kb3dUb0NvbnRlbnRzKFdlYkNvcmU6OkludFBvaW50KHgsIHkpKSwg
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViQ29yZTo6SGl0VGVz
dFJlcXVlc3Q6OkRlZmF1bHQoLyphbGxvd1NoYWRvd0NvbnRlbnQqLyBmYWxzZSwgLyppZ25vcmVD
bGlwcGluZyovIHRydWUpKTsKIAogICAgIGlmIChyZXN1bHQuc2Nyb2xsYmFyKCkpCiAgICAgICAg
IHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCA2YWFhMGZkNWQwYzZjMDdiNjljOTM3Mjdi
ZGNiZGFkYjg5ZTliM2FlLi5hNTc2NDU0Y2I5NDQ1NWIyZjE3NjBmZjA5NTljOTNlYTM4ZDRkN2I2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMTMzMiw3ICsxMzMyLDcgQEAgTlNEaWN0aW9uYXJ5ICpX
ZWJGcmFtZUxvYWRlckNsaWVudDo6YWN0aW9uRGljdGlvbmFyeShjb25zdCBOYXZpZ2F0aW9uQWN0
aW9uJiBhY3QKIAogICAgIGlmIChjb25zdCBNb3VzZUV2ZW50KiBtb3VzZUV2ZW50ID0gZmluZE1v
dXNlRXZlbnQoZXZlbnQpKSB7CiAgICAgICAgIFdlYkVsZW1lbnREaWN0aW9uYXJ5ICplbGVtZW50
ID0gW1tXZWJFbGVtZW50RGljdGlvbmFyeSBhbGxvY10KLSAgICAgICAgICAgIGluaXRXaXRoSGl0
VGVzdFJlc3VsdDpjb3JlKG1fd2ViRnJhbWUuZ2V0KCkpLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVz
dFJlc3VsdEF0UG9pbnQobW91c2VFdmVudC0+YWJzb2x1dGVMb2NhdGlvbigpLCBmYWxzZSldOwor
ICAgICAgICAgICAgaW5pdFdpdGhIaXRUZXN0UmVzdWx0OmNvcmUobV93ZWJGcmFtZS5nZXQoKSkt
PmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChtb3VzZUV2ZW50LT5hYnNvbHV0
ZUxvY2F0aW9uKCkpXTsKICAgICAgICAgW3Jlc3VsdCBzZXRPYmplY3Q6ZWxlbWVudCBmb3JLZXk6
V2ViQWN0aW9uRWxlbWVudEtleV07CiAgICAgICAgIFtlbGVtZW50IHJlbGVhc2VdOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCBiZmVkZThkYjZmOWVmYjY1
ZmQxMTU0MTg5OGE4Y2QxMDg0ZTJiNjNmLi4xYzE3MDA4Y2FiOGIzOGFmMTY1MzRjMmE0NzhiYmFh
NDg5YWQwMGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxW
aWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAg
LTYyMDYsNyArNjIwNiw3IEBAIHN0YXRpYyB2b2lkIGV4dHJhY3RVbmRlcmxpbmVzKE5TQXR0cmli
dXRlZFN0cmluZyAqc3RyaW5nLCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlCiAgICAgRnJhbWUqIGNv
cmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7CiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAg
ICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIFtbW1dlYkVsZW1lbnREaWN0aW9uYXJ5IGFsbG9j
XSBpbml0V2l0aEhpdFRlc3RSZXN1bHQ6Y29yZUZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVz
dFJlc3VsdEF0UG9pbnQoSW50UG9pbnQocG9pbnQpLCBhbGxvdyldIGF1dG9yZWxlYXNlXTsKKyAg
ICByZXR1cm4gW1tbV2ViRWxlbWVudERpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoSGl0VGVzdFJl
c3VsdDpjb3JlRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChJbnRQ
b2ludChwb2ludCksIEhpdFRlc3RSZXF1ZXN0OjpEZWZhdWx0KGFsbG93KSldIGF1dG9yZWxlYXNl
XTsKIH0KIAogLSAoTlNVSW50ZWdlciljb3VudE1hdGNoZXNGb3JUZXh0OihOU1N0cmluZyAqKXN0
cmluZyBpbkRPTVJhbmdlOihET01SYW5nZSAqKXJhbmdlIG9wdGlvbnM6KFdlYkZpbmRPcHRpb25z
KW9wdGlvbnMgbGltaXQ6KE5TVUludGVnZXIpbGltaXQgbWFya01hdGNoZXM6KEJPT0wpbWFya01h
dGNoZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCmluZGV4IGFkYmZhMWNjZGU0ZmE3NDU1
ZTBiNmJjNzViYjEzN2E1ZmY0YWNhYjMuLmZjZWRiNmU3ZmI3ZDU1ZTIyMWJkYTJhYTQ4NmRiZjBi
NThjNDg3MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcApAQCAtMTQwNiw3ICsxNDA2
LDcgQEAgUVdlYkhpdFRlc3RSZXN1bHQgUVdlYkZyYW1lOjpoaXRUZXN0Q29udGVudChjb25zdCBR
UG9pbnQgJnBvcykgY29uc3QKICAgICBpZiAoIWQtPmZyYW1lLT52aWV3KCkgfHwgIWQtPmZyYW1l
LT5jb250ZW50UmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIFFXZWJIaXRUZXN0UmVzdWx0KCk7
CiAKLSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGQtPmZyYW1lLT5ldmVudEhhbmRsZXIoKS0+
aGl0VGVzdFJlc3VsdEF0UG9pbnQoZC0+ZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhw
b3MpLCAvKmFsbG93U2hhZG93Q29udGVudCovIGZhbHNlLCAvKmlnbm9yZUNsaXBwaW5nKi8gdHJ1
ZSk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBkLT5mcmFtZS0+ZXZlbnRIYW5kbGVyKCkt
PmhpdFRlc3RSZXN1bHRBdFBvaW50KGQtPmZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMo
cG9zKSwgSGl0VGVzdFJlcXVlc3Q6OkRlZmF1bHQoLyphbGxvd1NoYWRvd0NvbnRlbnQqLyBmYWxz
ZSwgLyppZ25vcmVDbGlwcGluZyovIHRydWUpKTsKIAogICAgIGlmIChyZXN1bHQuc2Nyb2xsYmFy
KCkpCiAgICAgICAgIHJldHVybiBRV2ViSGl0VGVzdFJlc3VsdCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdl
YnBhZ2UuY3BwCmluZGV4IDA4ZTg2MTgzYTZiNmVhNDQwODdlZjI0NzFmZDkwMDJkNGI2MDQwZjQu
LjI5NjI4ZjU5ODdjZTllMTgwNzM5MmNkZjg3YzVmNjY3NmRmNzljOTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0Fw
aS9xd2VicGFnZS5jcHAKQEAgLTgwOCw3ICs4MDgsNyBAQCB2b2lkIFFXZWJQYWdlUHJpdmF0ZTo6
aGFuZGxlU29mdHdhcmVJbnB1dFBhbmVsKFF0OjpNb3VzZUJ1dHRvbiBidXR0b24sIGNvbnN0IFFQ
bwogICAgICAgICBRU3R5bGU6OlJlcXVlc3RTb2Z0d2FyZUlucHV0UGFuZWwgYmVoYXZpb3IgPSBR
U3R5bGU6OlJlcXVlc3RTb2Z0d2FyZUlucHV0UGFuZWwoCiAgICAgICAgICAgICBjbGllbnQtPm93
bmVyV2lkZ2V0KCktPnN0eWxlKCktPnN0eWxlSGludChRU3R5bGU6OlNIX1JlcXVlc3RTb2Z0d2Fy
ZUlucHV0UGFuZWwpKTsKICAgICAgICAgaWYgKCFjbGlja0NhdXNlZEZvY3VzIHx8IGJlaGF2aW9y
ID09IFFTdHlsZTo6UlNJUF9Pbk1vdXNlQ2xpY2spIHsKLSAgICAgICAgICAgIEhpdFRlc3RSZXN1
bHQgcmVzdWx0ID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChm
cmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHBvcyksIGZhbHNlKTsKKyAgICAgICAgICAg
IEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVz
dWx0QXRQb2ludChmcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHBvcykpOwogICAgICAg
ICAgICAgaWYgKHJlc3VsdC5pc0NvbnRlbnRFZGl0YWJsZSgpKSB7CiAgICAgICAgICAgICAgICAg
UUV2ZW50IGV2ZW50KFFFdmVudDo6UmVxdWVzdFNvZnR3YXJlSW5wdXRQYW5lbCk7CiAgICAgICAg
ICAgICAgICAgUUFwcGxpY2F0aW9uOjpzZW5kRXZlbnQoY2xpZW50LT5vd25lcldpZGdldCgpLCAm
ZXZlbnQpOwpAQCAtMTU2NSw3ICsxNTY1LDcgQEAgSW50UG9pbnQgUVdlYlBhZ2VQcml2YXRlOjpU
b3VjaEFkanVzdGVyOjpmaW5kQ2FuZGlkYXRlUG9pbnRGb3JUb3VjaChjb25zdCBJbnRQb2kKICAg
ICBpbnQgeCA9IHRvdWNoUG9pbnQueCgpOwogICAgIGludCB5ID0gdG91Y2hQb2ludC55KCk7CiAK
LSAgICBSZWZQdHI8Tm9kZUxpc3Q+IGludGVyc2VjdGVkTm9kZXMgPSBkb2N1bWVudC0+bm9kZXNG
cm9tUmVjdCh4LCB5LCBtX3RvcFBhZGRpbmcsIG1fcmlnaHRQYWRkaW5nLCBtX2JvdHRvbVBhZGRp
bmcsIG1fbGVmdFBhZGRpbmcsIGZhbHNlIC8qaWdub3JlQ2xpcHBpbmcqLywgZmFsc2UgLyphbGxv
d1NoYWRvd0NvbnRlbnQqLyk7CisgICAgUmVmUHRyPE5vZGVMaXN0PiBpbnRlcnNlY3RlZE5vZGVz
ID0gZG9jdW1lbnQtPm5vZGVzRnJvbVJlY3QoeCwgeSwgbV90b3BQYWRkaW5nLCBtX3JpZ2h0UGFk
ZGluZywgbV9ib3R0b21QYWRkaW5nLCBtX2xlZnRQYWRkaW5nKTsKICAgICBpZiAoIWludGVyc2Vj
dGVkTm9kZXMpCiAgICAgICAgIHJldHVybiBJbnRQb2ludCgpOwogCkBAIC0zMzcxLDcgKzMzNzEs
NyBAQCB2b2lkIFFXZWJQYWdlOjp1cGRhdGVQb3NpdGlvbkRlcGVuZGVudEFjdGlvbnMoY29uc3Qg
UVBvaW50ICZwb3MpCiAgICAgZC0+Y3JlYXRlTWFpbkZyYW1lKCk7CiAgICAgV2ViQ29yZTo6RnJh
bWUqIGZvY3VzZWRGcmFtZSA9IGQtPnBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JN
YWluRnJhbWUoKTsKIAotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZm9jdXNlZEZyYW1lLT5l
dmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoZm9jdXNlZEZyYW1lLT52aWV3KCkt
PndpbmRvd1RvQ29udGVudHMocG9zKSwgLyphbGxvd1NoYWRvd0NvbnRlbnQqLyBmYWxzZSk7Cisg
ICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBmb2N1c2VkRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5o
aXRUZXN0UmVzdWx0QXRQb2ludChmb2N1c2VkRnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50
cyhwb3MpKTsKICAgICBpZiAocmVzdWx0LnNjcm9sbGJhcigpKQogICAgICAgICBkLT5oaXRUZXN0
UmVzdWx0ID0gUVdlYkhpdFRlc3RSZXN1bHQoKTsKICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwIGIvU291
cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAppbmRl
eCBiY2YwNzJkNjViNTY0ZmYxZWQ1YWI2YWQ1MTI5NDYxODQwOTFiMDYxLi43MmE1ZTAwNDk4MmRk
ZTc0ZTUyYTg1OWEzMGQxNDc1N2Y2MDJjZjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKQEAgLTEyNzIsNyAr
MTI3Miw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uKEZyYW1lUG9saWN5RnVuCiAgICAgICAgICAgICBpZiAoZXZlbnQt
PmlzTW91c2VFdmVudCgpKSB7CiAgICAgICAgICAgICAgICAgY29uc3QgTW91c2VFdmVudCogbW91
c2VFdmVudCA9ICBzdGF0aWNfY2FzdDxjb25zdCBNb3VzZUV2ZW50Kj4oZXZlbnQpOwogICAgICAg
ICAgICAgICAgIG5vZGUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKG1fd2ViRnJhbWUpLT5ldmVu
dEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoCi0gICAgICAgICAgICAgICAgICAgIG1v
dXNlRXZlbnQtPmFic29sdXRlTG9jYXRpb24oKSwgZmFsc2UpLmlubmVyTm9uU2hhcmVkTm9kZSgp
OworICAgICAgICAgICAgICAgICAgICBtb3VzZUV2ZW50LT5hYnNvbHV0ZUxvY2F0aW9uKCkpLmlu
bmVyTm9uU2hhcmVkTm9kZSgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJBY3Rpb25Qcm9w
ZXJ0eUJhZy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJBY3Rpb25Qcm9wZXJ0eUJhZy5jcHAK
aW5kZXggZmNhODNiZTBkNGU5MDAyMTAzYTMzNDZhZDE3MzI4OTc4Yjc4MzI0Ny4uZDI5MDUwOTFm
MmM3MzE2YzJjNTgyZmFkMDlmM2UzNjE4NDgyYTM4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC93aW4vV2ViQWN0aW9uUHJvcGVydHlCYWcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dl
YkFjdGlvblByb3BlcnR5QmFnLmNwcApAQCAtMTIxLDcgKzEyMSw3IEBAIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgV2ViQWN0aW9uUHJvcGVydHlCYWc6OlJlYWQoTFBDT0xFU1RSIHBzelByb3BO
YW1lLCBWQVJJCiAgICAgaWYgKGlzRXF1YWwocHN6UHJvcE5hbWUsIFdlYkFjdGlvbkVsZW1lbnRL
ZXkpKSB7CiAgICAgICAgIGlmIChjb25zdCBNb3VzZUV2ZW50KiBtb3VzZUV2ZW50ID0gZmluZE1v
dXNlRXZlbnQobV9hY3Rpb24uZXZlbnQoKSkpIHsKICAgICAgICAgICAgIFZfVlQocFZhcikgPSBW
VF9VTktOT1dOOwotICAgICAgICAgICAgVl9VTktOT1dOKHBWYXIpID0gV2ViRWxlbWVudFByb3Bl
cnR5QmFnOjpjcmVhdGVJbnN0YW5jZShtX2ZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJl
c3VsdEF0UG9pbnQobW91c2VFdmVudC0+YWJzb2x1dGVMb2NhdGlvbigpLCBmYWxzZSkpOworICAg
ICAgICAgICAgVl9VTktOT1dOKHBWYXIpID0gV2ViRWxlbWVudFByb3BlcnR5QmFnOjpjcmVhdGVJ
bnN0YW5jZShtX2ZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQobW91
c2VFdmVudC0+YWJzb2x1dGVMb2NhdGlvbigpKSk7CiAgICAgICAgICAgICByZXR1cm4gU19PSzsK
ICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcu
Y3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKaW5kZXggYzNmZGVkNmIxNDIwNDYx
NDA0YzFkMjBiNTk4MTQ0NmQwYWQ2YWI3Ni4uZmUyM2I0M2VmNTY3MWVjYmVlYWZmYjBkNzRhZTFl
ZDAxYjE1MWI2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKQEAgLTEzMjIsNyArMTMyMiw3IEBAIGJv
b2wgV2ViVmlldzo6aGFuZGxlQ29udGV4dE1lbnVFdmVudChXUEFSQU0gd1BhcmFtLCBMUEFSQU0g
bFBhcmFtKQogICAgIG1fcGFnZS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCktPmNsZWFyQ29udGV4
dE1lbnUoKTsKIAogICAgIEludFBvaW50IGRvY3VtZW50UG9pbnQobV9wYWdlLT5tYWluRnJhbWUo
KS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKGNvb3JkcykpOwotICAgIEhpdFRlc3RSZXN1bHQg
cmVzdWx0ID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1
bHRBdFBvaW50KGRvY3VtZW50UG9pbnQsIGZhbHNlKTsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3Vs
dCA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQ
b2ludChkb2N1bWVudFBvaW50KTsKICAgICBGcmFtZSogdGFyZ2V0RnJhbWUgPSByZXN1bHQuaW5u
ZXJOb25TaGFyZWROb2RlKCkgPyByZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCktPmRvY3VtZW50
KCktPmZyYW1lKCkgOiBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJh
bWUoKTsKIAogICAgIHRhcmdldEZyYW1lLT52aWV3KCktPnNldEN1cnNvcihwb2ludGVyQ3Vyc29y
KCkpOwpAQCAtMzU5Nyw3ICszNTk3LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJW
aWV3OjplbGVtZW50QXRQb2ludCgKICAgICBJbnRQb2ludCB3ZWJDb3JlUG9pbnQgPSBJbnRQb2lu
dChwb2ludC0+eCwgcG9pbnQtPnkpOwogICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gSGl0VGVz
dFJlc3VsdCh3ZWJDb3JlUG9pbnQpOwogICAgIGlmIChmcmFtZS0+Y29udGVudFJlbmRlcmVyKCkp
Ci0gICAgICAgIHJlc3VsdCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0
UG9pbnQod2ViQ29yZVBvaW50LCBmYWxzZSk7CisgICAgICAgIHJlc3VsdCA9IGZyYW1lLT5ldmVu
dEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQod2ViQ29yZVBvaW50KTsKICAgICAqZWxl
bWVudERpY3Rpb25hcnkgPSBXZWJFbGVtZW50UHJvcGVydHlCYWc6OmNyZWF0ZUluc3RhbmNlKHJl
c3VsdCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3d4
L1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvd3gvV2ViRnJhbWUuY3BwCmluZGV4IGFhYTc2
MTRlZmEzYjY0MTNiNzEwZTBlODVhYWQ5NTFkNmZlOTJmODIuLmI1MDQ2YTczMmFiMGJiMDY3NjQx
ZTg2NzNiMTg4NjljMzRkMTM2M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd3gvV2ViRnJh
bWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd3gvV2ViRnJhbWUuY3BwCkBAIC02OTAsNyArNjkw
LDcgQEAgV2ViVmlld0RPTUVsZW1lbnRJbmZvIFdlYkZyYW1lOjpIaXRUZXN0KGNvbnN0IHd4UG9p
bnQmIHBvcykgY29uc3QKICAgICBXZWJWaWV3RE9NRWxlbWVudEluZm8gZG9tSW5mbzsKIAogICAg
IGlmIChtX2ltcGwtPmZyYW1lLT52aWV3KCkpIHsKLSAgICAgICAgV2ViQ29yZTo6SGl0VGVzdFJl
c3VsdCByZXN1bHQgPSBtX2ltcGwtPmZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3Vs
dEF0UG9pbnQobV9pbXBsLT5mcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHBvcyksIGZh
bHNlKTsKKyAgICAgICAgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCByZXN1bHQgPSBtX2ltcGwtPmZy
YW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQobV9pbXBsLT5mcmFtZS0+
dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHBvcykpOwogICAgICAgICBpZiAocmVzdWx0LmlubmVy
Tm9kZSgpKSB7CiAgICAgICAgICAgICBkb21JbmZvLlNldExpbmsocmVzdWx0LmFic29sdXRlTGlu
a1VSTCgpLnN0cmluZygpKTsKICAgICAgICAgICAgIGRvbUluZm8uU2V0VGV4dChyZXN1bHQudGV4
dENvbnRlbnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFj
dGlvbi5jcHAKaW5kZXggNDI4MTM1NDgxYWZkOWM1MWIzYWJkMjc2Y2U4NjE2ZDM5NmY4YjQzZS4u
MjljNzBkZmI0NjZjN2QwZWQ0ZjE1ZWI0YzkyNGMzZDgyY2Y3MWIxNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmln
YXRpb25BY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcApAQCAtOTEsNyArOTEsNyBA
QCBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246OkluamVjdGVkQnVuZGxlTmF2aWdhdGlv
bkFjdGlvbihXZWJGcmFtZSogZnJhbWUsCiAgICAgLCBtX21vdXNlQnV0dG9uKFdlYk1vdXNlRXZl
bnQ6Ok5vQnV0dG9uKQogewogICAgIGlmIChjb25zdCBNb3VzZUV2ZW50KiBtb3VzZUV2ZW50ID0g
bW91c2VFdmVudEZvck5hdmlnYXRpb25BY3Rpb24obmF2aWdhdGlvbkFjdGlvbikpIHsKLSAgICAg
ICAgbV9oaXRUZXN0UmVzdWx0ID0gSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0OjpjcmVhdGUo
ZnJhbWUtPmNvcmVGcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQo
bW91c2VFdmVudC0+YWJzb2x1dGVMb2NhdGlvbigpLCBmYWxzZSkpOworICAgICAgICBtX2hpdFRl
c3RSZXN1bHQgPSBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ6OmNyZWF0ZShmcmFtZS0+Y29y
ZUZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChtb3VzZUV2ZW50
LT5hYnNvbHV0ZUxvY2F0aW9uKCkpKTsKICAgICAgICAgbV9tb3VzZUJ1dHRvbiAgID0gbW91c2VC
dXR0b25Gb3JNb3VzZUV2ZW50KG1vdXNlRXZlbnQpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGY0MGFhMGEzZTMzYTBmMDQz
MTJlNWJmZmJhMDUwZGUxYzM5NGQwYjEuLmVkMjZmYzM3OGJmNjIxNDRlOWRmY2NkODAxZmQzMjQ3
N2M5MzNjMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKQEAgLTEzMTAsNyArMTMxMCw3IEBAIHN0YXRpYyBib29sIGlzQ29udGV4dENsaWNrKGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpCiBzdGF0aWMgYm9vbCBoYW5kbGVDb250ZXh0
TWVudUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgcGxhdGZvcm1Nb3VzZUV2ZW50LCBX
ZWJQYWdlKiBwYWdlKQogewogICAgIEludFBvaW50IHBvaW50ID0gcGFnZS0+Y29yZVBhZ2UoKS0+
bWFpbkZyYW1lKCktPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhwbGF0Zm9ybU1vdXNlRXZlbnQu
cG9zaXRpb24oKSk7Ci0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBwYWdlLT5jb3JlUGFnZSgp
LT5tYWluRnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KHBvaW50
LCBmYWxzZSk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBwYWdlLT5jb3JlUGFnZSgpLT5t
YWluRnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KHBvaW50KTsK
IAogICAgIEZyYW1lKiBmcmFtZSA9IHBhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgpOwogICAg
IGlmIChyZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCkpCkBAIC0xNTU1LDcgKzE1NTUsNyBAQCB2
b2lkIFdlYlBhZ2U6OmhpZ2hsaWdodFBvdGVudGlhbEFjdGl2YXRpb24oY29uc3QgSW50UG9pbnQm
IHBvaW50LCBjb25zdCBJbnRTaXplJgogICAgICAgICAgICAgcmV0dXJuOwogCiAjZWxzZQotICAg
ICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IG1haW5mcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhp
dFRlc3RSZXN1bHRBdFBvaW50KG1haW5mcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHBv
aW50KSwgLyphbGxvd1NoYWRvd0NvbnRlbnQqLyBmYWxzZSwgLyppZ25vcmVDbGlwcGluZyovIHRy
dWUpOworICAgICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IG1haW5mcmFtZS0+ZXZlbnRIYW5k
bGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KG1haW5mcmFtZS0+dmlldygpLT53aW5kb3dUb0Nv
bnRlbnRzKHBvaW50KSwgSGl0VGVzdFJlcXVlc3Q6OkRlZmF1bHQoLyphbGxvd1NoYWRvd0NvbnRl
bnQqLyB0cnVlLCAvKmlnbm9yZUNsaXBwaW5nKi8gdHJ1ZSkpOwogICAgICAgICBhZGp1c3RlZE5v
ZGUgPSByZXN1bHQuaW5uZXJOb2RlKCk7CiAjZW5kaWYKICAgICAgICAgLy8gRmluZCB0aGUgbm9k
ZSB0byBoaWdobGlnaHQuIFRoaXMgaXMgbm90IHRoZSBzYW1lIGFzIHRoZSBub2RlIHJlc3BvbmRp
bmcgdGhlIHRhcCBnZXN0dXJlLCBiZWNhdXNlIG1hbnkKQEAgLTI3MjQsNyArMjcyNCw3IEBAIHZv
aWQgV2ViUGFnZTo6ZmluZFpvb21hYmxlQXJlYUZvclBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiBwb2ludCwgY29uc3QgV2ViCiB7CiAgICAgVU5VU0VEX1BBUkFNKGFyZWEpOwogICAgIEZy
YW1lKiBtYWluZnJhbWUgPSBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCk7Ci0gICAgSGl0VGVzdFJl
c3VsdCByZXN1bHQgPSBtYWluZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQ
b2ludChtYWluZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhwb2ludCksIC8qYWxsb3dT
aGFkb3dDb250ZW50Ki8gZmFsc2UsIC8qaWdub3JlQ2xpcHBpbmcqLyB0cnVlKTsKKyAgICBIaXRU
ZXN0UmVzdWx0IHJlc3VsdCA9IG1haW5mcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1
bHRBdFBvaW50KG1haW5mcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHBvaW50KSwgSGl0
VGVzdFJlcXVlc3Q6OkRlZmF1bHQoLyphbGxvd1NoYWRvd0NvbnRlbnQqLyBmYWxzZSwgLyppZ25v
cmVDbGlwcGluZyovIHRydWUpKTsKIAogICAgIE5vZGUqIG5vZGUgPSByZXN1bHQuaW5uZXJOb2Rl
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
V2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2Vi
UGFnZU1hYy5tbQppbmRleCBjMmYwMTY1Mzc1OTUzYjUzY2MzY2QxYjllYjQzMWRiNWVjZWI5M2Fk
Li4zMDEzNWFhNTA3ZTdkNjgwNTA1ZmY3NmI1NzQzYTIwMmVlOTBlMmE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC0z
NzUsNyArMzc1LDcgQEAgdm9pZCBXZWJQYWdlOjpjaGFyYWN0ZXJJbmRleEZvclBvaW50KEludFBv
aW50IHBvaW50LCB1aW50NjRfdCYgaW5kZXgpCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBmcmFtZS0+ZXZlbnRIYW5kbGVyKCkt
PmhpdFRlc3RSZXN1bHRBdFBvaW50KHBvaW50LCBmYWxzZSk7CisgICAgSGl0VGVzdFJlc3VsdCBy
ZXN1bHQgPSBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KHBvaW50
KTsKICAgICBmcmFtZSA9IHJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKSA/IHJlc3VsdC5pbm5l
ck5vblNoYXJlZE5vZGUoKS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSA6IG1fcGFnZS0+Zm9jdXNDb250
cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIAogICAgIFJlZlB0cjxSYW5nZT4g
cmFuZ2UgPSBmcmFtZS0+cmFuZ2VGb3JQb2ludChyZXN1bHQucm91bmRlZFBvaW50KCkpOwpAQCAt
NDY0LDcgKzQ2NCw3IEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExv
Y2F0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIGZsb2F0UG9pbnQpCiAKICAgICAvLyBGaW5kIHRoZSBm
cmFtZSB0aGUgcG9pbnQgaXMgb3Zlci4KICAgICBJbnRQb2ludCBwb2ludCA9IHJvdW5kZWRJbnRQ
b2ludChmbG9hdFBvaW50KTsKLSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGZyYW1lLT5ldmVu
dEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoZnJhbWUtPnZpZXcoKS0+d2luZG93VG9D
b250ZW50cyhwb2ludCksIGZhbHNlKTsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGZyYW1l
LT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoZnJhbWUtPnZpZXcoKS0+d2lu
ZG93VG9Db250ZW50cyhwb2ludCkpOwogICAgIGZyYW1lID0gcmVzdWx0LmlubmVyTm9uU2hhcmVk
Tm9kZSgpID8gcmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpLT5kb2N1bWVudCgpLT5mcmFtZSgp
IDogbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAKICAg
ICBJbnRQb2ludCB0cmFuc2xhdGVkUG9pbnQgPSBmcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRl
bnRzKHBvaW50KTsKQEAgLTcyNyw3ICs3MjcsNyBAQCB2b2lkIFdlYlBhZ2U6OnNob3VsZERlbGF5
V2luZG93T3JkZXJpbmdFdmVudChjb25zdCBXZWJLaXQ6OldlYk1vdXNlRXZlbnQmIGV2ZW50LAog
ICAgICAgICByZXR1cm47CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQotICAgIEhpdFRlc3RS
ZXN1bHQgaGl0UmVzdWx0ID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQ
b2ludChmcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKGV2ZW50LnBvc2l0aW9uKCkpLCB0
cnVlKTsKKyAgICBIaXRUZXN0UmVzdWx0IGhpdFJlc3VsdCA9IGZyYW1lLT5ldmVudEhhbmRsZXIo
KS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhl
dmVudC5wb3NpdGlvbigpKSwgSGl0VGVzdFJlcXVlc3Q6OkRlZmF1bHQodHJ1ZSkpOwogICAgIGlm
IChoaXRSZXN1bHQuaXNTZWxlY3RlZCgpKQogICAgICAgICByZXN1bHQgPSBmcmFtZS0+ZXZlbnRI
YW5kbGVyKCktPmV2ZW50TWF5U3RhcnREcmFnKHBsYXRmb3JtKGV2ZW50KSk7CiAjZW5kaWYKQEAg
LTc0MCw3ICs3NDAsNyBAQCB2b2lkIFdlYlBhZ2U6OmFjY2VwdHNGaXJzdE1vdXNlKGludCBldmVu
dE51bWJlciwgY29uc3QgV2ViS2l0OjpXZWJNb3VzZUV2ZW50JiBldgogICAgIGlmICghZnJhbWUp
CiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBIaXRUZXN0UmVzdWx0IGhpdFJlc3VsdCA9IGZy
YW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoZnJhbWUtPnZpZXcoKS0+
d2luZG93VG9Db250ZW50cyhldmVudC5wb3NpdGlvbigpKSwgdHJ1ZSk7CisgICAgSGl0VGVzdFJl
c3VsdCBoaXRSZXN1bHQgPSBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBv
aW50KGZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMoZXZlbnQucG9zaXRpb24oKSksIEhp
dFRlc3RSZXF1ZXN0OjpEZWZhdWx0KHRydWUpKTsKICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCkt
PnNldEFjdGl2YXRpb25FdmVudE51bWJlcihldmVudE51bWJlcik7CiAjaWYgRU5BQkxFKERSQUdf
U1VQUE9SVCkKICAgICBpZiAoaGl0UmVzdWx0LmlzU2VsZWN0ZWQoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZiBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQy
LmRlZgppbmRleCA2NTFjOThmYzcyMmM5Mzg5ZjViMDg3M2YwNTNmNjk0YjdjMzA2MmI3Li5mODYy
NzhiYzRjY2MxZGUyNmM3YTY0MjI2NjhmOWVmYmI4YzJiYThlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKKysrIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIu
ZGVmCkBAIC0yNTksNyArMjU5LDcgQEAgRVhQT1JUUwogICAgICAgICA/PzFDb250ZXh0RGVzdHJ1
Y3Rpb25PYnNlcnZlckBXZWJDb3JlQEBNQUVAWFoKICAgICAgICAgP2NvbnRleHREZXN0cm95ZWRA
Q29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXJAV2ViQ29yZUBAVUFFWFhaCiAgICAgICAgID8/MENv
bnRleHREZXN0cnVjdGlvbk9ic2VydmVyQFdlYkNvcmVAQFFBRUBQQVZTY3JpcHRFeGVjdXRpb25D
b250ZXh0QDFAQFoKLSAgICAgICAgP25vZGVzRnJvbVJlY3RARG9jdW1lbnRAV2ViQ29yZUBAUUJF
P0FWPyRQYXNzUmVmUHRyQFZOb2RlTGlzdEBXZWJDb3JlQEBAV1RGQEBISElJSUlfTjAwQFoKKyAg
ICAgICAgP25vZGVzRnJvbVJlY3RARG9jdW1lbnRAV2ViQ29yZUBAUUJFP0FWPyRQYXNzUmVmUHRy
QFZOb2RlTGlzdEBXZWJDb3JlQEBAV1RGQEBISElJSUlJQFoKICAgICAgICAgP3NlbGVjdGlvblN0
YXJ0SGFzTWFya2VyRm9yQEVkaXRvckBXZWJDb3JlQEBRQkVfTlc0TWFya2VyVHlwZUBEb2N1bWVu
dE1hcmtlckAyQEhIQFoKICAgICAgICAgP3dlYmtpdFdpbGxFbnRlckZ1bGxTY3JlZW5Gb3JFbGVt
ZW50QERvY3VtZW50QFdlYkNvcmVAQFFBRVhQQVZFbGVtZW50QDJAQFoKICAgICAgICAgP3dlYmtp
dERpZEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnRARG9jdW1lbnRAV2ViQ29yZUBAUUFFWFBBVkVs
ZW1lbnRAMkBAWgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUu
ZGVmIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCmluZGV4IGQzYmVmNDZk
YjNhMzM5ZmE5N2ZiMjY4NTAyN2NjYzhiYmYzNTUwMDcuLjVlNzk4NDU5MjgyNzAzMzNmNzhhNjUx
ZDExNTBhMDNlZjNlZTc3ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQy
Q0ZMaXRlLmRlZgorKysgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYKQEAg
LTI1Myw3ICsyNTMsNyBAQCBFWFBPUlRTCiAgICAgICAgID91c2VyUHJlZmVycmVkTGFuZ3VhZ2Vz
QFdlYkNvcmVAQFlBP0FWPyRWZWN0b3JAVlN0cmluZ0BXVEZAQCQwQUBAV1RGQEBYWgogICAgICAg
ICA/dXRmOEBTdHJpbmdAV1RGQEBRQkU/QVZDU3RyaW5nQDJAX05AWgogICAgICAgICA/dmlld0BE
b2N1bWVudEBXZWJDb3JlQEBRQkVQQVZGcmFtZVZpZXdAMkBYWgotICAgICAgICA/bm9kZXNGcm9t
UmVjdEBEb2N1bWVudEBXZWJDb3JlQEBRQkU/QVY/JFBhc3NSZWZQdHJAVk5vZGVMaXN0QFdlYkNv
cmVAQEBXVEZAQEhISUlJSV9OMDBAWgorICAgICAgICA/bm9kZXNGcm9tUmVjdEBEb2N1bWVudEBX
ZWJDb3JlQEBRQkU/QVY/JFBhc3NSZWZQdHJAVk5vZGVMaXN0QFdlYkNvcmVAQEBXVEZAQEhISUlJ
SUlAWgogICAgICAgICA/c2VsZWN0aW9uU3RhcnRIYXNNYXJrZXJGb3JARWRpdG9yQFdlYkNvcmVA
QFFCRV9OVzRNYXJrZXJUeXBlQERvY3VtZW50TWFya2VyQDJASEhAWgogICAgICAgICA/cmVzdHJp
Y3RTY2FsZUZhY3RvclRvSW5pdGlhbFNjYWxlSWZOb3RVc2VyU2NhbGFibGVAV2ViQ29yZUBAWUFY
QUFVVmlld3BvcnRBdHRyaWJ1dGVzQDFAQFoKICAgICAgICAgP3Jlc3RyaWN0TWluaW11bVNjYWxl
RmFjdG9yVG9WaWV3cG9ydFNpemVAV2ViQ29yZUBAWUFYQUFVVmlld3BvcnRBdHRyaWJ1dGVzQDFA
VkludFNpemVAMUBAWgpkaWZmIC0tZ2l0IGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRl
ciBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKaW5kZXggYjYzYjdjMWMzZmJmODIx
YzljZWJjYThhNTFmZTJlOTAzYTE0N2UwMi4uM2Q5YTNlYTJmMzFlOGVkYTA0MGQ0YjJhZjQxMWZm
ZTgxYmMyYjk2OSAxMDA2NDQKLS0tIGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgor
KysgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCkBAIC0xNjIsNyArMTYyLDcgQEAg
X1pON1dlYkNvcmUyMlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMxOGlzU2hhZG93RE9NRW5hYmxlZEU7
CiBfWk43V2ViQ29yZTIyUnVudGltZUVuYWJsZWRGZWF0dXJlczIyaXNDU1NFeGNsdXNpb25zRW5h
YmxlZEU7CiBfWk43V2ViQ29yZTIyUnVudGltZUVuYWJsZWRGZWF0dXJlczIyaXNEaWFsb2dFbGVt
ZW50RW5hYmxlZEU7CiBfWk43V2ViQ29yZTIyUnVudGltZUVuYWJsZWRGZWF0dXJlczM3aXNBdXRo
b3JTaGFkb3dET01Gb3JBbnlFbGVtZW50RW5hYmxlZEU7Ci1fWk5LN1dlYkNvcmU4RG9jdW1lbnQx
M25vZGVzRnJvbVJlY3RFaWlqampqYmJiOworX1pOSzdXZWJDb3JlOERvY3VtZW50MTNub2Rlc0Zy
b21SZWN0RWlpampqamo7CiBfWk43V2ViQ29yZTR0b0pTRVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3
SlNET01HbG9iYWxPYmplY3RFUE5TXzhOb2RlTGlzdEU7CiBfWk5LN1dlYkNvcmU2RWRpdG9yMjZz
ZWxlY3Rpb25TdGFydEhhc01hcmtlckZvckVOU18xNERvY3VtZW50TWFya2VyMTBNYXJrZXJUeXBl
RWlpOwogX1pON1dlYkNvcmU4RG9jdW1lbnQzM3dlYmtpdERpZEV4aXRGdWxsU2NyZWVuRm9yRWxl
bWVudEVQTlNfN0VsZW1lbnRFOwpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmlu
ZGV4IDY5YmY5OTc3NmFlOGRjMWIyZmRkNmY2ODdmZDM3NTRiOWI2NTcxOWMuLjY1NTFkZTk3NzI3
OGE2MGJmZjMwNmEwNDg4YzE0YWQ2NGQ0ZDc3OTcgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysg
Yi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wOS0wNSAgQWxsYW4gU2FuZGZlbGQg
SmVuc2VuICA8YWxsYW4uamVuc2VuQG5va2lhLmNvbT4KKworICAgICAgICBTaW1wbGlmeSBoaXRU
ZXN0UmVzdWx0QXRQb2ludCBhbmQgbm9kZXNGcm9tUmVjdCBBUElzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTcyMAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBleHBvcnRlZCBzeW1ib2xzLgor
CisgICAgICAgICogU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcjoKKwogMjAxMi0wOS0w
MyAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQG5va2lhLmNvbT4KIAogICAg
ICAgICBBbGxvdyBjaGlsZC1mcmFtZSBjb250ZW50IGluIGhpdC10ZXN0cy4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162262</attachid>
            <date>2012-09-05 09:10:33 -0700</date>
            <delta_ts>2012-09-07 02:56:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95720-20120905181005.patch</filename>
            <type>text/plain</type>
            <size>63692</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDIyNWQ2N2Q4NmI4YTAx
Mjc3MDU0ZDIyOTZhYmMwOGFjZDBjYjdlMy4uYWYyMzU5Y2ViY2VjNmUwZTNjMzBkOGU1ZGIwOTg3
ZjY5MWQ4MDg3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEyLTA5LTA1ICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgorCisgICAgICAgIFNp
bXBsaWZ5IGhpdFRlc3RSZXN1bHRBdFBvaW50IGFuZCBub2Rlc0Zyb21SZWN0IEFQSXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NzIwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGV4aXN0aW5nIEFQ
SSB3YXMgb3ZlcmxvYWRlZCBhbmQgY291bGQgYmUgc2ltcGxpZmllZCBieSBwYXNzaW5nIGFsbCB0
aGUgYm9vbCBhcmd1bWVudHMgaW4gCisgICAgICAgIGEgSGl0VGVzdFJlcXVlc3QgYXJndW1lbnQu
IFRoaXMgc2hvdWxkIGFsc28gaGVscCBjbGFyaWZ5IHRoZSBjYWxsIGFzIHRoZSBlbnVtIHZhbHVl
cyBleHBsaWNpdGVseQorICAgICAgICBzdGF0ZSB3aGF0IHRoZXkgZG8uCisKKyAgICAgICAgVG8g
YWxsb3cgZm9yIHNpbXBsZSBjb252ZXJzaW9uIGEgbmV3IHN0YXRpYyBmdW5jdGlvbiBoYXMgYmVl
biAgYWRkZWQgdG8gSGl0VGVzdFJlcXVlc3QgdG8gYnVpbGQKKyAgICAgICAgYSBkZWZhdWx0IHR5
cGUgYmFzZWQgb24gdGhlIG9sZCBib29sZWFuIGFyZ3VtZW50cy4KKworICAgICAgICAqIFdlYkNv
cmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUub3JkZXI6CisgICAgICAgICogZG9tL0RvY3Vt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpub2Rlc0Zyb21SZWN0KToKKyAg
ICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKERvY3VtZW50KToKKyAgICAgICAgKiBw
YWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0
TWVudUNvbnRyb2xsZXI6OmNyZWF0ZUNvbnRleHRNZW51KToKKyAgICAgICAgKiBwYWdlL0RyYWdD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVyOjpjYW5Qcm9j
ZXNzRHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKToK
KyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dEhhbmRsZXI6OnVwZGF0ZUF1dG9zY3JvbGxSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudEhhbmRsZXI6OmhpdFRlc3RSZXN1bHRBdFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6YmVzdENsaWNrYWJsZU5vZGVGb3JUb3VjaFBvaW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50SGFuZGxlcjo6YmVzdENvbnRleHRNZW51Tm9kZUZvclRvdWNoUG9pbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpiZXN0Wm9vbWFibGVBcmVhRm9yVG91Y2hQb2lu
dCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZVRvdWNoRXZlbnQpOgor
ICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmg6CisgICAgICAgIChFdmVudEhhbmRsZXIpOgor
ICAgICAgICAqIHBhZ2UvRm9jdXNDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVw
ZGF0ZUZvY3VzQ2FuZGlkYXRlSWZOZWVkZWQpOgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnZpc2libGVQb3NpdGlvbkZvclBvaW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lOjpkb2N1bWVudEF0UG9pbnQpOgorICAgICAgICAqIHBhZ2UvVG91
Y2hEaXNhbWJpZ3VhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaW5kR29vZFRvdWNoVGFy
Z2V0cyk6CisgICAgICAgICogcmVuZGVyaW5nL0hpdFRlc3RSZXF1ZXN0Lmg6CisgICAgICAgIChI
aXRUZXN0UmVxdWVzdCk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpub2Rlc0Zyb21SZWN0KToKKwogMjAxMi0wOS0wMyAgQWxs
YW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQG5va2lhLmNvbT4KIAogICAgICAgICBB
bGxvdyBjaGlsZC1mcmFtZSBjb250ZW50IGluIGhpdC10ZXN0cy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
Q2hhbmdlTG9nCmluZGV4IGFlOTJkYzA2YzMwYjE4ZTdlN2RjOWI0YjMzYzhjNmM4NjU2NDU4NjYu
LmY3N2ZmMzZhZjNlNzNhZTgyMDExM2JhOTgxM2Y5NzY2MDZiZmQ5ZTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTA5LTA1ICBBbGxhbiBTYW5k
ZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgorCisgICAgICAgIFNpbXBsaWZ5
IGhpdFRlc3RSZXN1bHRBdFBvaW50IGFuZCBub2Rlc0Zyb21SZWN0IEFQSXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NzIwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGNhbGxzIHRvIG5ldyBB
UEkuCisKKyAgICAgICAgKiBBcGkvV2ViUGFnZS5jcHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpX
ZWJLaXQ6OldlYlBhZ2VQcml2YXRlOjpjb250ZXh0Tm9kZSk6CisgICAgICAgIChCbGFja0JlcnJ5
OjpXZWJLaXQ6OldlYlBhZ2VQcml2YXRlOjpub2RlRm9yWm9vbVVuZGVyUG9pbnQpOgorICAgICAg
ICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZTo6aGFuZGxlTW91c2VFdmVudCk6
CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2U6Om5vZGVBdFBvaW50KToKKyAg
ICAgICAgKiBXZWJLaXRTdXBwb3J0L0ZhdEZpbmdlcnMuY3BwOgorICAgICAgICAoQmxhY2tCZXJy
eTo6V2ViS2l0OjpGYXRGaW5nZXJzOjpnZXROb2Rlc0Zyb21SZWN0KToKKyAgICAgICAgKEJsYWNr
QmVycnk6OldlYktpdDo6RmF0RmluZ2Vyczo6Z2V0UmVsZXZhbnRJbmZvRnJvbVBvaW50KToKKyAg
ICAgICAgKiBXZWJLaXRTdXBwb3J0L1NlbGVjdGlvbkhhbmRsZXIuY3BwOgorICAgICAgICAoQmxh
Y2tCZXJyeTo6V2ViS2l0Ojp2aXNpYmxlUG9zaXRpb25Gb3JQb2ludElnbm9yaW5nQ2xpcHBpbmcp
OgorCiAyMDEyLTA5LTA0ICBSb2IgQnVpcyAgPHJidWlzQHJpbS5jb20+CiAKICAgICAgICAgW0Js
YWNrQmVycnldIEZhdEZpbmdlcnM6OmNhY2hpbmdTdHJhdGVneSB1c2VzIGluY29ycmVjdCBlbnVt
IHZhbHVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGY3OGFhY2ZmMTUwZDlkMzliMmZk
OWQ4NDRlZDlmNzIyOGZmYzQ2YmUuLjc0NWE5NTdiZTU2ODIxMWJkYTEwN2ViNjI3YWRhNjUyMmVj
ZjdkMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTIt
MDktMDUgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+CisK
KyAgICAgICAgU2ltcGxpZnkgaGl0VGVzdFJlc3VsdEF0UG9pbnQgYW5kIG5vZGVzRnJvbVJlY3Qg
QVBJcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU3
MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRh
dGUgY2FsbHMgdG8gbmV3IEFQSS4KKworICAgICAgICAqIHNyYy9Db250ZXh0TWVudUNsaWVudElt
cGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpzZWxlY3RNaXNzcGVsbGVkV29yZCk6CisgICAgICAg
ICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1l
TG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
KToKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
RnJhbWVJbXBsOjpjaGFyYWN0ZXJJbmRleEZvclBvaW50KToKKyAgICAgICAgKiBzcmMvV2ViUGx1
Z2luQ29udGFpbmVySW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbkNvbnRhaW5l
ckltcGw6OmlzUmVjdFRvcG1vc3QpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpoYW5kbGVNb3VzZVVwKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlld0ltcGw6OmNvbXB1dGVCbG9ja0JvdW5kcyk6CisKIDIwMTItMDktMDUgIFBl
dGVyIEJldmVybG9vICA8cGV0ZXJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IHJvbGxpbmcgb3V0IHIxMjc1OTAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggZjY4ZmRlODgyZDFmOTE4
YzEwODE2MThiMmQ4NzAwOWU5ZTI3MTdiZi4uMDBhNjZhNDc5M2YyMzY4MzYxMGYxY2Y5YTM0YzE3
NmYyZDVmYjExNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA5LTA1
ICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgorCisgICAg
ICAgIFNpbXBsaWZ5IGhpdFRlc3RSZXN1bHRBdFBvaW50IGFuZCBub2Rlc0Zyb21SZWN0IEFQSXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NzIwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGNh
bGxzIHRvIG5ldyBBUEkuCisKKyAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKKyAgICAgICAg
KGV3a19mcmFtZV9oaXRfdGVzdF9uZXcpOgorCiAyMDEyLTA5LTA1ICBLYXVzdHViaCBBdHJhd2Fs
a2FyICA8a2F1c3R1YmhAbW90b3JvbGEuY29tPgogCiAgICAgICAgIFtEUlRdIExUQzo6IE1vdmUg
cHJpbnRpbmcgcmVsYXRlZCBBUElzIGZyb20gTGF5b3V0VGVzdENvbnRyb2xsZXIgdG8gSW50ZXJu
YWxzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggZThiOTY5ZDFlMWMxOTUwMmU0NzFjZWE4NWMwMTE1Yzlj
Zjk0Y2ViOC4uYjQ3NTJkM2RkMzdiMzZlOTcxNDk4OGFhYjZlNTNjZThjMmI5NzgzYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA5LTA1ICBBbGxhbiBTYW5kZmVsZCBK
ZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgorCisgICAgICAgIFNpbXBsaWZ5IGhpdFRl
c3RSZXN1bHRBdFBvaW50IGFuZCBub2Rlc0Zyb21SZWN0IEFQSXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NzIwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGNhbGxzIHRvIG5ldyBBUEkuCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAg
ICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjphY3Rpb25EaWN0aW9uYXJ5KToKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBlbGVtZW50QXRQ
b2ludDphbGxvd1NoYWRvd0NvbnRlbnQ6XSk6CisKIDIwMTItMDktMDEgIE1hcmsgTGFtICA8bWFy
ay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZGVkICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9JZGVudGlmaWVyLmg+LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCAwMTRkY2JiMDgwNGI0NDgyYWIyYmJi
MTI2NWU0N2EzNTE5ZTEyZWMwLi41ZGYxMjY3OTViNTVjOWRkOTAyYTk4ZGViMTFkYWQ1OGRkZjkw
MjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTA5LTA1ICBBbGxhbiBT
YW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgorCisgICAgICAgIFNpbXBs
aWZ5IGhpdFRlc3RSZXN1bHRBdFBvaW50IGFuZCBub2Rlc0Zyb21SZWN0IEFQSXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NzIwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGNhbGxzIHRvIG5l
dyBBUEkuCisKKyAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFt
ZTo6aGl0VGVzdENvbnRlbnQpOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAg
IChRV2ViUGFnZVByaXZhdGU6OmhhbmRsZVNvZnR3YXJlSW5wdXRQYW5lbCk6CisgICAgICAgIChR
V2ViUGFnZVByaXZhdGU6OlRvdWNoQWRqdXN0ZXI6OmZpbmRDYW5kaWRhdGVQb2ludEZvclRvdWNo
KToKKyAgICAgICAgKFFXZWJQYWdlOjp1cGRhdGVQb3NpdGlvbkRlcGVuZGVudEFjdGlvbnMpOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uKToKKwogMjAxMi0wOS0wNSAgS2F1c3R1YmggQXRyYXdhbGthciAgPGth
dXN0dWJoQG1vdG9yb2xhLmNvbT4KIAogICAgICAgICBbRFJUXSBMVEM6OiBNb3ZlIHByaW50aW5n
IHJlbGF0ZWQgQVBJcyBmcm9tIExheW91dFRlc3RDb250cm9sbGVyIHRvIEludGVybmFscwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4v
Q2hhbmdlTG9nCmluZGV4IDJhZmUyNjA0ZDRkYjM1ZDU1NGI4NmRjNmM4MWU2MmMzOWIyOTliNWQu
LjMyMDY3MGNkNGU1MTJkZDVlYmZiMGI2MDk1Nzk2ZDFiOWQwZDljYWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wOS0wNSAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8
YWxsYW4uamVuc2VuQG5va2lhLmNvbT4KKworICAgICAgICBTaW1wbGlmeSBoaXRUZXN0UmVzdWx0
QXRQb2ludCBhbmQgbm9kZXNGcm9tUmVjdCBBUElzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTcyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBjYWxscyB0byBuZXcgQVBJLgorCisgICAgICAg
ICogV2ViQWN0aW9uUHJvcGVydHlCYWcuY3BwOgorICAgICAgICAoV2ViQWN0aW9uUHJvcGVydHlC
YWc6OlJlYWQpOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6aGFu
ZGxlQ29udGV4dE1lbnVFdmVudCk6CisgICAgICAgIChXZWJWaWV3OjplbGVtZW50QXRQb2ludCk6
CisKIDIwMTItMDktMDUgIEthdXN0dWJoIEF0cmF3YWxrYXIgIDxrYXVzdHViaEBtb3Rvcm9sYS5j
b20+CiAKICAgICAgICAgW0RSVF0gTFRDOjogTW92ZSBwcmludGluZyByZWxhdGVkIEFQSXMgZnJv
bSBMYXlvdXRUZXN0Q29udHJvbGxlciB0byBJbnRlcm5hbHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvd3gvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cKaW5kZXggMzcx
ODNjZjQ2ZDE3OTgyNjQ4ZDA4YWNiZTllMGFjNzQ2ZTI3NTI1MC4uZjdlZWE5NjFjZTk4YzMzMmVj
ZDYzY2U2MjViZTNkNGI2NDNhMzI0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93eC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAor
MjAxMi0wOS0wNSAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQG5va2lhLmNv
bT4KKworICAgICAgICBTaW1wbGlmeSBoaXRUZXN0UmVzdWx0QXRQb2ludCBhbmQgbm9kZXNGcm9t
UmVjdCBBUElzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05NTcyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVwZGF0ZSBjYWxscyB0byBuZXcgQVBJLgorCisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6SGl0VGVzdCk6CisKIDIwMTItMDgtMzAgIEJlbmphbWlu
IFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVwbGFjZSBKU0M6OlVT
dHJpbmcgYnkgV1RGOjpTdHJpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBkMTk2ODMzMWFhMDcxMWEzNDQ2MTBj
ZjY2Njg2NTkwMGI5ZjM2NmUwLi5iNmNjMjJkMzIzYTMxNjJmNTM3ZDM2MjZmNmNlNmM5MTIzNzQw
MWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTItMDktMDUgIEFsbGFuIFNhbmRm
ZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkg
aGl0VGVzdFJlc3VsdEF0UG9pbnQgYW5kIG5vZGVzRnJvbVJlY3QgQVBJcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU3MjAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgY2FsbHMgdG8gbmV3IEFQ
SSBhbmQgdXBkYXRlIGV4cG9ydGVkIHN5bWJvbHMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbjo6SW5qZWN0ZWRCdW5kbGVO
YXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OmhhbmRsZUNvbnRleHRNZW51RXZlbnQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpoaWdobGlnaHRQb3RlbnRpYWxBY3RpdmF0aW9uKTogQ29ycmVjdHMg
dGhlIG1pc3BsYWNlZCBhcmd1bWVudHMgd2hpbGUgY29udmVydGluZyB0aGVtLgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpmaW5kWm9vbWFibGVBcmVhRm9yUG9pbnQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6Y2hhcmFjdGVySW5kZXhGb3JQb2ludCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OnBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnNob3VsZERlbGF5V2luZG93T3JkZXJpbmdFdmVudCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmFjY2VwdHNGaXJzdE1vdXNlKToKKyAgICAgICAgKiB3aW4vV2ViS2l0Mi5kZWY6
CisgICAgICAgICogd2luL1dlYktpdDJDRkxpdGUuZGVmOgorCiAyMDEyLTA5LTAzICBBbGxhbiBT
YW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgogCiAgICAgICAgIEFsbG93
IGNoaWxkLWZyYW1lIGNvbnRlbnQgaW4gaGl0LXRlc3RzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRl
eCBhNjVkNWQ1NTRiYzRlNzIxNzEwNDc0MTUxNDhjODJjZjAwNDljMzQzLi5iNDc2OWY5MTgyNTQ5
MWQ0MjM3NjYxODhiZmM5OTlkZWIyZjMxZTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMTU4
LDcgKzE1OCw3IEBAIF9fWk43V2ViQ29yZTEyRXZlbnRIYW5kbGVyMTRzY3JvbGxPdmVyZmxvd0VO
U18xNVNjcm9sbERpcmVjdGlvbkVOU18xN1Njcm9sbEdyYW51CiBfX1pON1dlYkNvcmUxMkV2ZW50
SGFuZGxlcjE1aGFuZGxlQWNjZXNzS2V5RVJLTlNfMjFQbGF0Zm9ybUtleWJvYXJkRXZlbnRFCiBf
X1pON1dlYkNvcmUxMkV2ZW50SGFuZGxlcjE2aGFuZGxlV2hlZWxFdmVudEVSS05TXzE4UGxhdGZv
cm1XaGVlbEV2ZW50RQogX19aTjdXZWJDb3JlMTJFdmVudEhhbmRsZXIxN3Njcm9sbFJlY3Vyc2l2
ZWx5RU5TXzE1U2Nyb2xsRGlyZWN0aW9uRU5TXzE3U2Nyb2xsR3JhbnVsYXJpdHlFUE5TXzROb2Rl
RQotX19aTjdXZWJDb3JlMTJFdmVudEhhbmRsZXIyMGhpdFRlc3RSZXN1bHRBdFBvaW50RVJLTlNf
MjFGcmFjdGlvbmFsTGF5b3V0UG9pbnRFYmJOU18xN0hpdFRlc3RTY3JvbGxiYXJzRWpSS05TXzIw
RnJhY3Rpb25hbExheW91dFNpemVFCitfX1pON1dlYkNvcmUxMkV2ZW50SGFuZGxlcjIwaGl0VGVz
dFJlc3VsdEF0UG9pbnRFUktOU18yMUZyYWN0aW9uYWxMYXlvdXRQb2ludEVqUktOU18yMEZyYWN0
aW9uYWxMYXlvdXRTaXplRQogX19aTjdXZWJDb3JlMTJFdmVudEhhbmRsZXIyMWhhbmRsZU1vdXNl
UHJlc3NFdmVudEVSS05TXzE4UGxhdGZvcm1Nb3VzZUV2ZW50RQogX19aTjdXZWJDb3JlMTJFdmVu
dEhhbmRsZXIyM2hhbmRsZU1vdXNlUmVsZWFzZUV2ZW50RVJLTlNfMThQbGF0Zm9ybU1vdXNlRXZl
bnRFCiBfX1pON1dlYkNvcmUxMkV2ZW50SGFuZGxlcjI0bG9naWNhbFNjcm9sbFJlY3Vyc2l2ZWx5
RU5TXzIyU2Nyb2xsTG9naWNhbERpcmVjdGlvbkVOU18xN1Njcm9sbEdyYW51bGFyaXR5RVBOU180
Tm9kZUUKQEAgLTEzNTQsNyArMTM1NCw3IEBAIF9fWk5LN1dlYkNvcmU3UnVuTG9vcDlUaW1lckJh
c2U4aXNBY3RpdmVFdgogX19aTks3V2ViQ29yZThEb2N1bWVudDEwcmVuZGVyVmlld0V2CiBfX1pO
SzdXZWJDb3JlOERvY3VtZW50MTFjb21wbGV0ZVVSTEVSS04zV1RGNlN0cmluZ0UKIF9fWk5LN1dl
YkNvcmU4RG9jdW1lbnQxM2F4T2JqZWN0Q2FjaGVFdgotX19aTks3V2ViQ29yZThEb2N1bWVudDEz
bm9kZXNGcm9tUmVjdEVpaWpqampiYmIKK19fWk5LN1dlYkNvcmU4RG9jdW1lbnQxM25vZGVzRnJv
bVJlY3RFaWlqampqagogX19aTks3V2ViQ29yZThEb2N1bWVudDE0Z2V0RWxlbWVudEJ5SWRFUktO
M1dURjEyQXRvbWljU3RyaW5nRQogX19aTks3V2ViQ29yZThEb2N1bWVudDMxZGlzcGxheVN0cmlu
Z01vZGlmaWVkQnlFbmNvZGluZ0VSS04zV1RGNlN0cmluZ0UKIF9fWk5LN1dlYkNvcmU4RG9jdW1l
bnQ0Ym9keUV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgppbmRleCAzNWFiZmU2MzViOTNkYTQ0YjQ3MjVhNTRm
YjIyM2QxODE2NzM4YzFjLi45MDU5YzhkM2Y5OTE1NGYyNWMwNWQzYmI0NmE2ZjI1ZjkyMDQxNGQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUub3JkZXIKQEAgLTIyNzg1LDcgKzIyNzg1LDcgQEAgX19aTks3V2ViQ29y
ZTEyTm9kZUl0ZXJhdG9yMjB1cGRhdGVGb3JOb2RlUmVtb3ZhbEVQTlNfNE5vZGVFUk5TMF8xMU5v
ZGVQb2ludGVyRQogX19aTjdXZWJDb3JlMjdqc05vZGVJdGVyYXRvclJlZmVyZW5jZU5vZGVFUE4z
SlNDOUV4ZWNTdGF0ZUVOUzBfN0pTVmFsdWVFUktOUzBfMTBJZGVudGlmaWVyRQogX19aTks3V2Vi
Q29yZTROb2RlMjB0cmF2ZXJzZVByZXZpb3VzTm9kZUVQS1MwXwogX19aTjdXZWJDb3JlMzdqc05v
ZGVJdGVyYXRvclByb3RvdHlwZUZ1bmN0aW9uRGV0YWNoRVBOM0pTQzlFeGVjU3RhdGVFCi1fX1pO
SzdXZWJDb3JlOERvY3VtZW50MTNub2Rlc0Zyb21SZWN0RWlpampqamJiYgorX19aTks3V2ViQ29y
ZThEb2N1bWVudDEzbm9kZXNGcm9tUmVjdEVpaWpqampqCiBfX1pOSzdXZWJDb3JlOERvY3VtZW50
MTdoYW5kbGVaZXJvUGFkZGluZ0VSS05TXzE0SGl0VGVzdFJlcXVlc3RFUk5TXzEzSGl0VGVzdFJl
c3VsdEUKIF9fWk4zV1RGMjFMaXN0SGFzaFNldFRyYW5zbGF0b3JJTlNfNlJlZlB0cklON1dlYkNv
cmU0Tm9kZUVFRUxtMjU2RU5TXzdQdHJIYXNoSVM0X0VFRTl0cmFuc2xhdGVFUlBOU18xNUxpc3RI
YXNoU2V0Tm9kZUlTNF9MbTI1NkVFRVJLUzRfUE5TXzI0TGlzdEhhc2hTZXROb2RlQWxsb2NhdG9y
SVM0X0xtMjU2RUVFCiBfX1pON1dlYkNvcmUyMVN0YXRpY0hhc2hTZXROb2RlTGlzdEMxRVJOM1dU
RjExTGlzdEhhc2hTZXRJTlMxXzZSZWZQdHJJTlNfNE5vZGVFRUVMbTI1NkVOUzFfN1B0ckhhc2hJ
UzVfRUVFRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggNDQ2NTc1MTM3MTRkODJjYjlhMjlh
OTA1OWYzMDUwNjVmNDk1ZDc1Zi4uM2I1YWZmNTk1NGFkZjUxY2VlMGE3ZmQxNzQ2MDVlYmFmZDRj
Y2ViYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0xMzg0LDcgKzEzODQsNyBAQCBTdHJp
bmcgRG9jdW1lbnQ6OnN1Z2dlc3RlZE1JTUVUeXBlKCkgY29uc3QKIC8vICogbWFraW5nIGl0IHJl
Y2VpdmUgYSByZWN0IGFzIHBhcmFtZXRlciwgaS5lLiBub2Rlc0Zyb21SZWN0KHgsIHksIHcsIGgp
OwogLy8gKiBtYWtpbmcgaXQgcmVjZWl2ZSB0aGUgZXhwYWRpbmcgc2l6ZSBvZiBlYWNoIGRpcmVj
dGlvbiBzZXBhcmF0ZWx5LAogLy8gICBpLmUuIG5vZGVzRnJvbVJlY3QoeCwgeSwgdG9wU2l6ZSwg
cmlnaHRTaXplLCBib3R0b21TaXplLCBsZWZ0U2l6ZSk7Ci1QYXNzUmVmUHRyPE5vZGVMaXN0PiBE
b2N1bWVudDo6bm9kZXNGcm9tUmVjdChpbnQgY2VudGVyWCwgaW50IGNlbnRlclksIHVuc2lnbmVk
IHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFkZGluZywgdW5zaWduZWQgYm90dG9tUGFkZGlu
ZywgdW5zaWduZWQgbGVmdFBhZGRpbmcsIGJvb2wgaWdub3JlQ2xpcHBpbmcsIGJvb2wgYWxsb3dT
aGFkb3dDb250ZW50LCBib29sIGFsbG93Q2hpbGRGcmFtZUNvbnRlbnQpIGNvbnN0CitQYXNzUmVm
UHRyPE5vZGVMaXN0PiBEb2N1bWVudDo6bm9kZXNGcm9tUmVjdChpbnQgY2VudGVyWCwgaW50IGNl
bnRlclksIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFkZGluZywgdW5zaWdu
ZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcsIEhpdFRlc3RSZXF1ZXN0OjpI
aXRUZXN0UmVxdWVzdFR5cGUgaGl0VHlwZSkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogU2hhcmUg
Y29kZSBiZXR3ZWVuIHRoaXMsIGVsZW1lbnRGcm9tUG9pbnQgYW5kIGNhcmV0UmFuZ2VGcm9tUG9p
bnQuCiAgICAgaWYgKCFyZW5kZXJlcigpKQpAQCAtMTM5OSwxOSArMTM5OSwxMSBAQCBQYXNzUmVm
UHRyPE5vZGVMaXN0PiBEb2N1bWVudDo6bm9kZXNGcm9tUmVjdChpbnQgY2VudGVyWCwgaW50IGNl
bnRlclksIHVuc2lnbmVkCiAgICAgZmxvYXQgem9vbUZhY3RvciA9IGZyYW1lLT5wYWdlWm9vbUZh
Y3RvcigpOwogICAgIExheW91dFBvaW50IHBvaW50ID0gcm91bmRlZExheW91dFBvaW50KEZsb2F0
UG9pbnQoY2VudGVyWCAqIHpvb21GYWN0b3IgKyB2aWV3KCktPnNjcm9sbFgoKSwgY2VudGVyWSAq
IHpvb21GYWN0b3IgKyB2aWV3KCktPnNjcm9sbFkoKSkpOwogCi0gICAgaW50IHR5cGUgPSBIaXRU
ZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlOworICAgIEhpdFRl
c3RSZXF1ZXN0IHJlcXVlc3QoaGl0VHlwZSk7CiAKICAgICAvLyBXaGVuIGlnbm9yZUNsaXBwaW5n
IGlzIGZhbHNlLCB0aGlzIG1ldGhvZCByZXR1cm5zIG51bGwgZm9yIGNvb3JkaW5hdGVzIG91dHNp
ZGUgb2YgdGhlIHZpZXdwb3J0LgotICAgIGlmIChpZ25vcmVDbGlwcGluZykKLSAgICAgICAgdHlw
ZSB8PSBIaXRUZXN0UmVxdWVzdDo6SWdub3JlQ2xpcHBpbmc7Ci0gICAgZWxzZSBpZiAoIWZyYW1l
Vmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0KCkuaW50ZXJzZWN0cyhIaXRUZXN0UmVzdWx0OjpyZWN0
Rm9yUG9pbnQocG9pbnQsIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywg
bGVmdFBhZGRpbmcpKSkKKyAgICBpZiAoIXJlcXVlc3QuaWdub3JlQ2xpcHBpbmcoKSAmJiAhZnJh
bWVWaWV3LT52aXNpYmxlQ29udGVudFJlY3QoKS5pbnRlcnNlY3RzKEhpdFRlc3RSZXN1bHQ6OnJl
Y3RGb3JQb2ludChwb2ludCwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5n
LCBsZWZ0UGFkZGluZykpKQogICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoYWxsb3dTaGFkb3dD
b250ZW50KQotICAgICAgICB0eXBlIHw9IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd1NoYWRvd0NvbnRl
bnQ7Ci0gICAgaWYgKGFsbG93Q2hpbGRGcmFtZUNvbnRlbnQpCi0gICAgICAgIHR5cGUgfD0gSGl0
VGVzdFJlcXVlc3Q6OkFsbG93Q2hpbGRGcmFtZUNvbnRlbnQ7Ci0KLSAgICBIaXRUZXN0UmVxdWVz
dCByZXF1ZXN0KHR5cGUpOwogCiAgICAgLy8gUGFzc2luZyBhIHplcm8gcGFkZGluZyB3aWxsIHRy
aWdnZXIgYSByZWN0IGhpdCB0ZXN0LCBob3dldmVyIGZvciB0aGUgcHVycG9zZXMgb2Ygbm9kZXNG
cm9tUmVjdCwKICAgICAvLyB3ZSBzcGVjaWFsIGhhbmRsZSB0aGlzIGNhc2UgaW4gb3JkZXIgdG8g
cmV0dXJuIGEgdmFsaWQgTm9kZUxpc3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDI4NzJlNWMy
YWE5YjM2MjlhNTQ2MGMxNmIyOGE0ZGNmYTRmZmZkOTguLmI4MmMzNTI5MzAyMjJlOTllNjllNTRj
YzVjN2ViN2ZhMTZlYTc0YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0zNCw2ICszNCw3IEBA
CiAjaW5jbHVkZSAiRE9NVGltZVN0YW1wLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRFdmVudFF1ZXVl
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRUaW1pbmcuaCIKKyNpbmNsdWRlICJIaXRUZXN0UmVxdWVz
dC5oIgogI2luY2x1ZGUgIkljb25VUkwuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb3VudGVycy5o
IgogI2luY2x1ZGUgIkludFJlY3QuaCIKQEAgLTM3NiwxMiArMzc3LDEwIEBAIHB1YmxpYzoKICAg
ICAgKiBAcGFyYW0gcmlnaHRQYWRkaW5nIEhvdyBtdWNoIHRvIGV4cGFuZCB0aGUgcmlnaHQgb2Yg
dGhlIHJlY3RhbmdsZQogICAgICAqIEBwYXJhbSBib3R0b21QYWRkaW5nIEhvdyBtdWNoIHRvIGV4
cGFuZCB0aGUgYm90dG9tIG9mIHRoZSByZWN0YW5nbGUKICAgICAgKiBAcGFyYW0gbGVmdFBhZGRp
bmcgSG93IG11Y2ggdG8gZXhwYW5kIHRoZSBsZWZ0IG9mIHRoZSByZWN0YW5nbGUKLSAgICAgKiBA
cGFyYW0gaWdub3JlQ2xpcHBpbmcgd2hldGhlciBvciBub3QgdG8gaWdub3JlIHRoZSByb290IHNj
cm9sbCBmcmFtZSB3aGVuIHJldHJpZXZpbmcgdGhlIGVsZW1lbnQuCi0gICAgICogICAgICAgIElm
IGZhbHNlLCB0aGlzIG1ldGhvZCByZXR1cm5zIG51bGwgZm9yIGNvb3JkaW5hdGVzIG91dHNpZGUg
b2YgdGhlIHZpZXdwb3J0LgogICAgICAqLwogICAgIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IG5vZGVz
RnJvbVJlY3QoaW50IGNlbnRlclgsIGludCBjZW50ZXJZLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgdG9wUGFkZGluZywgdW5zaWduZWQgcmlnaHRQYWRk
aW5nLCB1bnNpZ25lZCBib3R0b21QYWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGluZywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaWdub3JlQ2xpcHBpbmcsIGJv
b2wgYWxsb3dTaGFkb3dDb250ZW50LCBib29sIGFsbG93Q2hpbGRGcmFtZUNvbnRlbnQgPSBmYWxz
ZSkgY29uc3Q7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIaXRUZXN0
UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhpdFR5cGUgPSBIaXRUZXN0UmVxdWVzdDo6RGVm
YXVsdCkgY29uc3Q7CiAgICAgRWxlbWVudCogZWxlbWVudEZyb21Qb2ludChpbnQgeCwgaW50IHkp
IGNvbnN0OwogICAgIFBhc3NSZWZQdHI8UmFuZ2U+IGNhcmV0UmFuZ2VGcm9tUG9pbnQoaW50IHgs
IGludCB5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIu
Y3BwCmluZGV4IGQ5MDE5ZmMzMGZkNWQ4NjQ2ZjJmNGVmZjRlYTU0ZjQ4OWY4OTM4NWIuLjg3ZjNj
YzRkNjE5YjU2NmMwNWQyMzYxZjQ5NTA2NzU0MWJkMjVjMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKQEAgLTE0OSw3ICsxNDksNyBAQCBQYXNz
T3duUHRyPENvbnRleHRNZW51PiBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNyZWF0ZUNvbnRleHRN
ZW51KEV2ZW50KiBldmVudCkKICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdChtb3VzZUV2ZW50LT5h
YnNvbHV0ZUxvY2F0aW9uKCkpOwogCiAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGV2ZW50LT50YXJn
ZXQoKS0+dG9Ob2RlKCktPmRvY3VtZW50KCktPmZyYW1lKCkpCi0gICAgICAgIHJlc3VsdCA9IGZy
YW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQobW91c2VFdmVudC0+YWJz
b2x1dGVMb2NhdGlvbigpLCBmYWxzZSk7CisgICAgICAgIHJlc3VsdCA9IGZyYW1lLT5ldmVudEhh
bmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQobW91c2VFdmVudC0+YWJzb2x1dGVMb2NhdGlv
bigpKTsKIAogICAgIGlmICghcmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXgg
Yzc0NGMxODllYmRiZjRmMGE0MGI4YTk5ZDhlNzlhMjVkYjBhNmQ2OC4uYmM1YTk4NTNlMDhlOGQ2
MjA0NWY1NDEyYTcyMjliYjRjZDNjMTMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJv
bGxlci5jcHAKQEAgLTU0NCw3ICs1NDQsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpjYW5Qcm9j
ZXNzRHJhZyhEcmFnRGF0YSogZHJhZ0RhdGEpCiAgICAgaWYgKCFtX3BhZ2UtPm1haW5GcmFtZSgp
LT5jb250ZW50UmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmVzdWx0
ID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBv
aW50KHBvaW50LCB0cnVlKTsKKyAgICByZXN1bHQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmVu
dEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQocG9pbnQsIEhpdFRlc3RSZXF1ZXN0OjpE
ZWZhdWx0IHwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93U2hhZG93Q29udGVudCk7CiAKICAgICBpZiAo
IXJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
NzI2LDcgKzcyNiw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJhZyhGcmFtZSogc3Jj
LCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlLCBEcmFnT3BlcmF0aW9uCiAgICAgaWYgKCFzcmMtPnZp
ZXcoKSB8fCAhc3JjLT5jb250ZW50UmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgSGl0VGVzdFJlc3VsdCBoaXRUZXN0UmVzdWx0ID0gc3JjLT5ldmVudEhhbmRsZXIoKS0+
aGl0VGVzdFJlc3VsdEF0UG9pbnQoZHJhZ09yaWdpbiwgdHJ1ZSk7CisgICAgSGl0VGVzdFJlc3Vs
dCBoaXRUZXN0UmVzdWx0ID0gc3JjLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9p
bnQoZHJhZ09yaWdpbiwgSGl0VGVzdFJlcXVlc3Q6OkRlZmF1bHQgfCBIaXRUZXN0UmVxdWVzdDo6
QWxsb3dTaGFkb3dDb250ZW50KTsKICAgICBpZiAoIXN0YXRlLm1fZHJhZ1NyYy0+Y29udGFpbnMo
aGl0VGVzdFJlc3VsdC5pbm5lck5vZGUoKSkpCiAgICAgICAgIC8vIFRoZSBvcmlnaW5hbCBub2Rl
IGJlaW5nIGRyYWdnZWQgaXNuJ3QgdW5kZXIgdGhlIGRyYWcgb3JpZ2luIGFueW1vcmUuLi4gbWF5
YmUgaXQgd2FzCiAgICAgICAgIC8vIGhpZGRlbiBvciBtb3ZlZCBvdXQgZnJvbSB1bmRlciB0aGUg
Y3Vyc29yLiBSZWdhcmRsZXNzLCB3ZSBkb24ndCB3YW50IHRvIHN0YXJ0IGEgZHJhZyBvbgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDAwMWZkNmQ5ZTllMTE2Mjk1ZDIwYzUw
OTIzMDE5MjdhMDVkN2RmOTAuLmUwMDI3ZDk0MGEyNWRlY2JkMzliMDUzM2NmNmJmMDY2NTk5MDU2
MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTEwMDcsNyArMTAwNyw3
IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjp1cGRhdGVBdXRvc2Nyb2xsUmVuZGVyZXIoKQogICAgIGlm
ICghbV9hdXRvc2Nyb2xsUmVuZGVyZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIEhpdFRlc3RS
ZXN1bHQgaGl0VGVzdCA9IGhpdFRlc3RSZXN1bHRBdFBvaW50KG1fcGFuU2Nyb2xsU3RhcnRQb3Ms
IHRydWUpOworICAgIEhpdFRlc3RSZXN1bHQgaGl0VGVzdCA9IGhpdFRlc3RSZXN1bHRBdFBvaW50
KG1fcGFuU2Nyb2xsU3RhcnRQb3MsIEhpdFRlc3RSZXF1ZXN0OjpEZWZhdWx0IHwgSGl0VGVzdFJl
cXVlc3Q6OkFsbG93Q2hpbGRGcmFtZUNvbnRlbnQpOwogCiAgICAgaWYgKE5vZGUqIG5vZGVBdFBv
aW50ID0gaGl0VGVzdC5pbm5lck5vZGUoKSkKICAgICAgICAgbV9hdXRvc2Nyb2xsUmVuZGVyZXIg
PSBub2RlQXRQb2ludC0+cmVuZGVyZXIoKTsKQEAgLTEwMzksMjIgKzEwMzksMTggQEAgRHJhZ1Nv
dXJjZUFjdGlvbiBFdmVudEhhbmRsZXI6OnVwZGF0ZURyYWdTb3VyY2VBY3Rpb25zQWxsb3dlZCgp
IGNvbnN0CiB9CiAjZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICAKLUhpdFRlc3RS
ZXN1bHQgRXZlbnRIYW5kbGVyOjpoaXRUZXN0UmVzdWx0QXRQb2ludChjb25zdCBMYXlvdXRQb2lu
dCYgcG9pbnQsIGJvb2wgYWxsb3dTaGFkb3dDb250ZW50LCBib29sIGlnbm9yZUNsaXBwaW5nLCBI
aXRUZXN0U2Nyb2xsYmFycyB0ZXN0U2Nyb2xsYmFycywgSGl0VGVzdFJlcXVlc3Q6OkhpdFRlc3RS
ZXF1ZXN0VHlwZSBoaXRUeXBlLCBjb25zdCBMYXlvdXRTaXplJiBwYWRkaW5nKQorSGl0VGVzdFJl
c3VsdCBFdmVudEhhbmRsZXI6OmhpdFRlc3RSZXN1bHRBdFBvaW50KGNvbnN0IExheW91dFBvaW50
JiBwb2ludCwgSGl0VGVzdFJlcXVlc3Q6OkhpdFRlc3RSZXF1ZXN0VHlwZSBoaXRUeXBlLCBjb25z
dCBMYXlvdXRTaXplJiBwYWRkaW5nKQogewogICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHBvaW50
LCBwYWRkaW5nLmhlaWdodCgpLCBwYWRkaW5nLndpZHRoKCksIHBhZGRpbmcuaGVpZ2h0KCksIHBh
ZGRpbmcud2lkdGgoKSk7CiAKICAgICBpZiAoIW1fZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpKQog
ICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIGlmIChpZ25vcmVDbGlwcGluZykKLSAgICAgICAg
aGl0VHlwZSB8PSBIaXRUZXN0UmVxdWVzdDo6SWdub3JlQ2xpcHBpbmc7Ci0gICAgaWYgKGFsbG93
U2hhZG93Q29udGVudCkKLSAgICAgICAgaGl0VHlwZSB8PSBIaXRUZXN0UmVxdWVzdDo6QWxsb3dT
aGFkb3dDb250ZW50OwotICAgIGlmICh0ZXN0U2Nyb2xsYmFycyA9PSBTaG91bGRIaXRUZXN0U2Ny
b2xsYmFycykKLSAgICAgICAgaGl0VHlwZSB8PSBIaXRUZXN0UmVxdWVzdDo6VGVzdENoaWxkRnJh
bWVTY3JvbGxCYXJzOwogICAgIC8vIFdlIGFsd2F5cyBuZWVkIHRvIGhhbmRsZSBjaGlsZCBmcmFt
ZSBjb250ZW50LgogICAgIGhpdFR5cGUgfD0gSGl0VGVzdFJlcXVlc3Q6OkFsbG93Q2hpbGRGcmFt
ZUNvbnRlbnQ7CiAKLSAgICBtX2ZyYW1lLT5jb250ZW50UmVuZGVyZXIoKS0+aGl0VGVzdChIaXRU
ZXN0UmVxdWVzdChoaXRUeXBlKSwgcmVzdWx0KTsKKyAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0
KGhpdFR5cGUpOworCisgICAgbV9mcmFtZS0+Y29udGVudFJlbmRlcmVyKCktPmhpdFRlc3QocmVx
dWVzdCwgcmVzdWx0KTsKIAogICAgIC8vIElmIG91ciBIaXRUZXN0UmVzdWx0IGlzIG5vdCB2aXNp
YmxlLCB0aGVuIHdlIHN0YXJ0ZWQgaGl0IHRlc3RpbmcgdG9vIGZhciBkb3duIHRoZSBmcmFtZSBj
aGFpbi4gCiAgICAgLy8gQW5vdGhlciBoaXQgdGVzdCBhdCB0aGUgbWFpbiBmcmFtZSBsZXZlbCBz
aG91bGQgZ2V0IHVzIHRoZSBjb3JyZWN0IHZpc2libGUgcmVzdWx0LgpAQCAtMTA2NiwxMiArMTA2
MiwxMiBAQCBIaXRUZXN0UmVzdWx0IEV2ZW50SGFuZGxlcjo6aGl0VGVzdFJlc3VsdEF0UG9pbnQo
Y29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBib29sCiAgICAgICAgICAgICBGcmFtZVZpZXcqIG1h
aW5WaWV3ID0gbWFpbkZyYW1lLT52aWV3KCk7CiAgICAgICAgICAgICBpZiAocmVzdWx0VmlldyAm
JiBtYWluVmlldykgewogICAgICAgICAgICAgICAgIEludFBvaW50IG1haW5GcmFtZVBvaW50ID0g
bWFpblZpZXctPnJvb3RWaWV3VG9Db250ZW50cyhyZXN1bHRWaWV3LT5jb250ZW50c1RvUm9vdFZp
ZXcocm91bmRlZEludFBvaW50KHJlc3VsdC5wb2ludCgpKSkpOwotICAgICAgICAgICAgICAgIHJl
c3VsdCA9IG1haW5GcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KG1h
aW5GcmFtZVBvaW50LCBhbGxvd1NoYWRvd0NvbnRlbnQsIGlnbm9yZUNsaXBwaW5nLCB0ZXN0U2Ny
b2xsYmFycywgaGl0VHlwZSwgcGFkZGluZyk7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbWFp
bkZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQobWFpbkZyYW1lUG9p
bnQsIGhpdFR5cGUsIHBhZGRpbmcpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQog
Ci0gICAgaWYgKCFhbGxvd1NoYWRvd0NvbnRlbnQpCisgICAgaWYgKCFyZXF1ZXN0LmFsbG93c1No
YWRvd0NvbnRlbnQoKSkKICAgICAgICAgcmVzdWx0LnNldFRvTm9uU2hhZG93QW5jZXN0b3IoKTsK
IAogICAgIHJldHVybiByZXN1bHQ7CkBAIC0xNDgxLDcgKzE0NzcsNyBAQCBib29sIEV2ZW50SGFu
ZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgbW91
c2VFdmVudCkKICAgICBtX21vdXNlRG93bldhc0luU3ViZnJhbWUgPSBmYWxzZTsKIAogICAgIEhp
dFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSk7Ci0gICAgLy8gU2F2
ZSB0aGUgZG9jdW1lbnQgcG9pbnQgd2UgZ2VuZXJhdGUgaW4gY2FzZSB0aGUgd2luZG93IGNvb3Jk
aW5hdGUgaXMgaW52YWxpZGF0ZWQgYnkgd2hhdCBoYXBwZW5zIAorICAgIC8vIFNhdmUgdGhlIGRv
Y3VtZW50IHBvaW50IHdlIGdlbmVyYXRlIGluIGNhc2UgdGhlIHdpbmRvdyBjb29yZGluYXRlIGlz
IGludmFsaWRhdGVkIGJ5IHdoYXQgaGFwcGVucwogICAgIC8vIHdoZW4gd2UgZGlzcGF0Y2ggdGhl
IGV2ZW50LgogICAgIExheW91dFBvaW50IGRvY3VtZW50UG9pbnQgPSBkb2N1bWVudFBvaW50Rm9y
V2luZG93UG9pbnQobV9mcmFtZSwgbW91c2VFdmVudC5wb3NpdGlvbigpKTsKICAgICBNb3VzZUV2
ZW50V2l0aEhpdFRlc3RSZXN1bHRzIG1ldiA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnByZXBhcmVN
b3VzZUV2ZW50KHJlcXVlc3QsIGRvY3VtZW50UG9pbnQsIG1vdXNlRXZlbnQpOwpAQCAtMjM4MSw3
ICsyMzc3LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBQ
bGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQogICAgICAgICBldmVudFRhcmdldCA9
IG1fc2Nyb2xsR2VzdHVyZUhhbmRsaW5nTm9kZS5nZXQoKTsKIAogICAgIGlmICghZXZlbnRUYXJn
ZXQpIHsKLSAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBoaXRUZXN0UmVzdWx0QXRQb2lu
dChnZXN0dXJlRXZlbnQucG9zaXRpb24oKSwgZmFsc2UsIGZhbHNlLCBEb250SGl0VGVzdFNjcm9s
bGJhcnMsIEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUp
OworICAgICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGhpdFRlc3RSZXN1bHRBdFBvaW50KGdl
c3R1cmVFdmVudC5wb3NpdGlvbigpKTsKICAgICAgICAgZXZlbnRUYXJnZXQgPSByZXN1bHQudGFy
Z2V0Tm9kZSgpOwogICAgIH0KIApAQCAtMjQ4Myw5ICsyNDc5LDggQEAgYm9vbCBFdmVudEhhbmRs
ZXI6OmhhbmRsZUdlc3R1cmVTY3JvbGxDb3JlKGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBn
ZXN0dXJlRXYKICNpZiBFTkFCTEUoVE9VQ0hfQURKVVNUTUVOVCkKIGJvb2wgRXZlbnRIYW5kbGVy
OjpiZXN0Q2xpY2thYmxlTm9kZUZvclRvdWNoUG9pbnQoY29uc3QgSW50UG9pbnQmIHRvdWNoQ2Vu
dGVyLCBjb25zdCBJbnRTaXplJiB0b3VjaFJhZGl1cywgSW50UG9pbnQmIHRhcmdldFBvaW50LCBO
b2RlKiYgdGFyZ2V0Tm9kZSkKIHsKLSAgICBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RU
eXBlIGhpdFR5cGUgPSBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6
QWN0aXZlOwogICAgIEludFBvaW50IGhpdFRlc3RQb2ludCA9IG1fZnJhbWUtPnZpZXcoKS0+d2lu
ZG93VG9Db250ZW50cyh0b3VjaENlbnRlcik7Ci0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBo
aXRUZXN0UmVzdWx0QXRQb2ludChoaXRUZXN0UG9pbnQsIC8qYWxsb3dTaGFkb3dDb250ZW50Ki8g
dHJ1ZSwgLyppZ25vcmVDbGlwcGluZyovIGZhbHNlLCBEb250SGl0VGVzdFNjcm9sbGJhcnMsIGhp
dFR5cGUsIHRvdWNoUmFkaXVzKTsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGhpdFRlc3RS
ZXN1bHRBdFBvaW50KGhpdFRlc3RQb2ludCwgSGl0VGVzdFJlcXVlc3Q6OkRlZmF1bHQgfCBIaXRU
ZXN0UmVxdWVzdDo6QWxsb3dDaGlsZEZyYW1lQ29udGVudCwgdG91Y2hSYWRpdXMpOwogCiAgICAg
SW50UmVjdCB0b3VjaFJlY3QodG91Y2hDZW50ZXIgLSB0b3VjaFJhZGl1cywgdG91Y2hSYWRpdXMg
KyB0b3VjaFJhZGl1cyk7CiAgICAgUmVmUHRyPFN0YXRpY0hhc2hTZXROb2RlTGlzdD4gbm9kZUxp
c3QgPSBTdGF0aWNIYXNoU2V0Tm9kZUxpc3Q6OmFkb3B0KHJlc3VsdC5yZWN0QmFzZWRUZXN0UmVz
dWx0KCkpOwpAQCAtMjUwMiw5ICsyNDk3LDggQEAgYm9vbCBFdmVudEhhbmRsZXI6OmJlc3RDbGlj
a2FibGVOb2RlRm9yVG91Y2hQb2ludChjb25zdCBJbnRQb2ludCYgdG91Y2hDZW50ZXIsIGMKIAog
Ym9vbCBFdmVudEhhbmRsZXI6OmJlc3RDb250ZXh0TWVudU5vZGVGb3JUb3VjaFBvaW50KGNvbnN0
IEludFBvaW50JiB0b3VjaENlbnRlciwgY29uc3QgSW50U2l6ZSYgdG91Y2hSYWRpdXMsIEludFBv
aW50JiB0YXJnZXRQb2ludCwgTm9kZSomIHRhcmdldE5vZGUpCiB7Ci0gICAgSGl0VGVzdFJlcXVl
c3Q6OkhpdFRlc3RSZXF1ZXN0VHlwZSBoaXRUeXBlID0gSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5
IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZTsKICAgICBJbnRQb2ludCBoaXRUZXN0UG9pbnQgPSBt
X2ZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHModG91Y2hDZW50ZXIpOwotICAgIEhpdFRl
c3RSZXN1bHQgcmVzdWx0ID0gaGl0VGVzdFJlc3VsdEF0UG9pbnQoaGl0VGVzdFBvaW50LCAvKmFs
bG93U2hhZG93Q29udGVudCovIHRydWUsIC8qaWdub3JlQ2xpcHBpbmcqLyBmYWxzZSwgRG9udEhp
dFRlc3RTY3JvbGxiYXJzLCBoaXRUeXBlLCB0b3VjaFJhZGl1cyk7CisgICAgSGl0VGVzdFJlc3Vs
dCByZXN1bHQgPSBoaXRUZXN0UmVzdWx0QXRQb2ludChoaXRUZXN0UG9pbnQsIEhpdFRlc3RSZXF1
ZXN0OjpEZWZhdWx0IHwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93Q2hpbGRGcmFtZUNvbnRlbnQsIHRv
dWNoUmFkaXVzKTsKIAogICAgIEludFJlY3QgdG91Y2hSZWN0KHRvdWNoQ2VudGVyIC0gdG91Y2hS
YWRpdXMsIHRvdWNoUmFkaXVzICsgdG91Y2hSYWRpdXMpOwogICAgIFJlZlB0cjxTdGF0aWNIYXNo
U2V0Tm9kZUxpc3Q+IG5vZGVMaXN0ID0gU3RhdGljSGFzaFNldE5vZGVMaXN0OjphZG9wdChyZXN1
bHQucmVjdEJhc2VkVGVzdFJlc3VsdCgpKTsKQEAgLTI1MTMsOSArMjUwNyw4IEBAIGJvb2wgRXZl
bnRIYW5kbGVyOjpiZXN0Q29udGV4dE1lbnVOb2RlRm9yVG91Y2hQb2ludChjb25zdCBJbnRQb2lu
dCYgdG91Y2hDZW50ZXIsCiAKIGJvb2wgRXZlbnRIYW5kbGVyOjpiZXN0Wm9vbWFibGVBcmVhRm9y
VG91Y2hQb2ludChjb25zdCBJbnRQb2ludCYgdG91Y2hDZW50ZXIsIGNvbnN0IEludFNpemUmIHRv
dWNoUmFkaXVzLCBJbnRSZWN0JiB0YXJnZXRBcmVhLCBOb2RlKiYgdGFyZ2V0Tm9kZSkKIHsKLSAg
ICBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhpdFR5cGUgPSBIaXRUZXN0UmVx
dWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlOwogICAgIEludFBvaW50IGhp
dFRlc3RQb2ludCA9IG1fZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyh0b3VjaENlbnRl
cik7Ci0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBoaXRUZXN0UmVzdWx0QXRQb2ludChoaXRU
ZXN0UG9pbnQsIC8qYWxsb3dTaGFkb3dDb250ZW50Ki8gZmFsc2UsIC8qaWdub3JlQ2xpcHBpbmcq
LyBmYWxzZSwgRG9udEhpdFRlc3RTY3JvbGxiYXJzLCBoaXRUeXBlLCB0b3VjaFJhZGl1cyk7Cisg
ICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBoaXRUZXN0UmVzdWx0QXRQb2ludChoaXRUZXN0UG9p
bnQsIEhpdFRlc3RSZXF1ZXN0OjpEZWZhdWx0LCB0b3VjaFJhZGl1cyk7CiAKICAgICBJbnRSZWN0
IHRvdWNoUmVjdCh0b3VjaENlbnRlciAtIHRvdWNoUmFkaXVzLCB0b3VjaFJhZGl1cyArIHRvdWNo
UmFkaXVzKTsKICAgICBSZWZQdHI8U3RhdGljSGFzaFNldE5vZGVMaXN0PiBub2RlTGlzdCA9IFN0
YXRpY0hhc2hTZXROb2RlTGlzdDo6YWRvcHQocmVzdWx0LnJlY3RCYXNlZFRlc3RSZXN1bHQoKSk7
CkBAIC0zNTU3LDcgKzM1NTAsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlVG91Y2hFdmVu
dChjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmIGV2ZW50KQogICAgICAgICB1bnNpZ25lZCB0b3Vj
aFBvaW50VGFyZ2V0S2V5ID0gcG9pbnQuaWQoKSArIDE7CiAgICAgICAgIFJlZlB0cjxFdmVudFRh
cmdldD4gdG91Y2hUYXJnZXQ7CiAgICAgICAgIGlmIChwb2ludFN0YXRlID09IFBsYXRmb3JtVG91
Y2hQb2ludDo6VG91Y2hQcmVzc2VkKSB7Ci0gICAgICAgICAgICBIaXRUZXN0UmVzdWx0IHJlc3Vs
dCA9IGhpdFRlc3RSZXN1bHRBdFBvaW50KHBhZ2VQb2ludCwgLyphbGxvd1NoYWRvd0NvbnRlbnQq
LyBmYWxzZSwgZmFsc2UsIERvbnRIaXRUZXN0U2Nyb2xsYmFycywgaGl0VHlwZSk7CisgICAgICAg
ICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGhpdFRlc3RSZXN1bHRBdFBvaW50KHBhZ2VQb2lu
dCwgaGl0VHlwZSk7CiAgICAgICAgICAgICBOb2RlKiBub2RlID0gcmVzdWx0LmlubmVyTm9kZSgp
OwogICAgICAgICAgICAgQVNTRVJUKG5vZGUpOwogCkBAIC0zNTc1LDcgKzM1NjgsNyBAQCBib29s
IEV2ZW50SGFuZGxlcjo6aGFuZGxlVG91Y2hFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQm
IGV2ZW50KQogICAgICAgICAgICAgdG91Y2hUYXJnZXQgPSBub2RlOwogICAgICAgICB9IGVsc2Ug
aWYgKHBvaW50U3RhdGUgPT0gUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFJlbGVhc2VkIHx8IHBv
aW50U3RhdGUgPT0gUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaENhbmNlbGxlZCkgewogICAgICAg
ICAgICAgLy8gV2Ugb25seSBwZXJmb3JtIGEgaGl0dGVzdCBvbiByZWxlYXNlIG9yIGNhbmNlbCB0
byB1bnNldCA6YWN0aXZlIG9yIDpob3ZlciBzdGF0ZS4KLSAgICAgICAgICAgIGhpdFRlc3RSZXN1
bHRBdFBvaW50KHBhZ2VQb2ludCwgLyphbGxvd1NoYWRvd0NvbnRlbnQqLyBmYWxzZSwgZmFsc2Us
IERvbnRIaXRUZXN0U2Nyb2xsYmFycywgaGl0VHlwZSk7CisgICAgICAgICAgICBoaXRUZXN0UmVz
dWx0QXRQb2ludChwYWdlUG9pbnQsIGhpdFR5cGUpOwogICAgICAgICAgICAgLy8gVGhlIHRhcmdl
dCBzaG91bGQgYmUgdGhlIG9yaWdpbmFsIHRhcmdldCBmb3IgdGhpcyB0b3VjaCwgc28gZ2V0IGl0
IGZyb20gdGhlIGhhc2htYXAuIEFzIGl0J3MgYSByZWxlYXNlIG9yIGNhbmNlbAogICAgICAgICAg
ICAgLy8gd2UgYWxzbyByZW1vdmUgaXQgZnJvbSB0aGUgbWFwLgogICAgICAgICAgICAgdG91Y2hU
YXJnZXQgPSBtX29yaWdpbmF0aW5nVG91Y2hQb2ludFRhcmdldHMudGFrZSh0b3VjaFBvaW50VGFy
Z2V0S2V5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCmluZGV4IDZkOGEwYWI3NjczYThj
OGZkZmI0YzlhOTVkYmZjMWFhZDk1NWQ0ODcuLmU3NDYxNzg1N2MxNTdlZTA2YTBlZGJhOTQwZGVh
ZGQxYmM0N2EzNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaApAQCAtODgsOCArODgs
NiBAQCBleHRlcm4gY29uc3QgaW50IFRleHREcmFnSHlzdGVyZXNpczsKIGV4dGVybiBjb25zdCBp
bnQgR2VuZXJhbERyYWdIeXN0ZXJlc2lzOwogI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQp
CiAKLWVudW0gSGl0VGVzdFNjcm9sbGJhcnMgeyBTaG91bGRIaXRUZXN0U2Nyb2xsYmFycywgRG9u
dEhpdFRlc3RTY3JvbGxiYXJzIH07Ci0KIGNsYXNzIEV2ZW50SGFuZGxlciB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoRXZlbnRIYW5kbGVyKTsKIHB1YmxpYzoKQEAgLTExNSw5ICsxMTMsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBkaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudFNvb24oKTsKICAg
ICB2b2lkIGRpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50U29vbkluUXVhZChjb25zdCBGbG9hdFF1
YWQmKTsKIAotICAgIEhpdFRlc3RSZXN1bHQgaGl0VGVzdFJlc3VsdEF0UG9pbnQoY29uc3QgTGF5
b3V0UG9pbnQmLCBib29sIGFsbG93U2hhZG93Q29udGVudCwgYm9vbCBpZ25vcmVDbGlwcGluZyA9
IGZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGl0VGVzdFNj
cm9sbGJhcnMgc2Nyb2xsYmFycyA9IERvbnRIaXRUZXN0U2Nyb2xsYmFycywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhpdFRlc3RSZXF1ZXN0OjpIaXRUZXN0UmVxdWVz
dFR5cGUgaGl0VHlwZSA9IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0
OjpBY3RpdmUsCisgICAgSGl0VGVzdFJlc3VsdCBoaXRUZXN0UmVzdWx0QXRQb2ludChjb25zdCBM
YXlvdXRQb2ludCYsIEhpdFRlc3RSZXF1ZXN0OjpIaXRUZXN0UmVxdWVzdFR5cGUgaGl0VHlwZSA9
IEhpdFRlc3RSZXF1ZXN0OjpEZWZhdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgTGF5b3V0U2l6ZSYgcGFkZGluZyA9IExheW91dFNpemUoKSk7CiAKICAg
ICBib29sIG1vdXNlUHJlc3NlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbW91c2VQcmVzc2VkOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKaW5kZXggMGI5NDE4YmEzMmJiOWM0
YzU3YmQ2MjU0NTVkODIwYmM4OWRjMWEwMS4uM2IxMTY5OGJhNDYxYTZjYWNkODg3YzlhYWE0Nzhj
MWUyODBkN2U1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcApAQCAt
NzQ1LDcgKzc0NSw3IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZUZvY3VzQ2FuZGlkYXRlSWZOZWVkZWQo
Rm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBjb25zdCBGb2N1c0NhCiAgICAgICAgIC8vIElmIDIg
bm9kZXMgYXJlIGludGVyc2VjdGluZywgZG8gaGl0IHRlc3QgdG8gZmluZCB3aGljaCBub2RlIGlu
IG9uIHRvcC4KICAgICAgICAgTGF5b3V0VW5pdCB4ID0gaW50ZXJzZWN0aW9uUmVjdC54KCkgKyBp
bnRlcnNlY3Rpb25SZWN0LndpZHRoKCkgLyAyOwogICAgICAgICBMYXlvdXRVbml0IHkgPSBpbnRl
cnNlY3Rpb25SZWN0LnkoKSArIGludGVyc2VjdGlvblJlY3QuaGVpZ2h0KCkgLyAyOwotICAgICAg
ICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGNhbmRpZGF0ZS52aXNpYmxlTm9kZS0+ZG9jdW1lbnQo
KS0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBv
aW50KEludFBvaW50KHgsIHkpLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIEhpdFRlc3RSZXN1bHQg
cmVzdWx0ID0gY2FuZGlkYXRlLnZpc2libGVOb2RlLT5kb2N1bWVudCgpLT5wYWdlKCktPm1haW5G
cmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoSW50UG9pbnQoeCwg
eSksIEhpdFRlc3RSZXF1ZXN0OjpEZWZhdWx0IHwgSGl0VGVzdFJlcXVlc3Q6Oklnbm9yZUNsaXBw
aW5nKTsKICAgICAgICAgaWYgKGNhbmRpZGF0ZS52aXNpYmxlTm9kZS0+Y29udGFpbnMocmVzdWx0
LmlubmVyTm9kZSgpKSkgewogICAgICAgICAgICAgY2xvc2VzdCA9IGNhbmRpZGF0ZTsKICAgICAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggYjM2NDhmNTI0NzAxOWRjMjlk
M2RmNTUxMWQ5Mjg2YmI4OGExMTFhZS4uZTkxMzYwMDY2NmQ2OGIyMTg0MDEyYzQxOGE0NDI3ODcw
OTJiNDk2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTcyNCw3ICs3MjQsNyBAQCBTdHJpbmcg
RnJhbWU6OmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2RpbmcoY29uc3QgU3RyaW5nJiBzdHIp
IGNvbnN0CiAKIFZpc2libGVQb3NpdGlvbiBGcmFtZTo6dmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQo
Y29uc3QgSW50UG9pbnQmIGZyYW1lUG9pbnQpCiB7Ci0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQg
PSBldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoZnJhbWVQb2ludCwgdHJ1ZSk7
CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3Vs
dEF0UG9pbnQoZnJhbWVQb2ludCwgSGl0VGVzdFJlcXVlc3Q6OkRlZmF1bHQgfCBIaXRUZXN0UmVx
dWVzdDo6QWxsb3dDaGlsZEZyYW1lQ29udGVudCk7CiAgICAgTm9kZSogbm9kZSA9IHJlc3VsdC5p
bm5lck5vblNoYXJlZE5vZGUoKTsKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiBWaXNp
YmxlUG9zaXRpb24oKTsKQEAgLTc0Niw3ICs3NDYsNyBAQCBEb2N1bWVudCogRnJhbWU6OmRvY3Vt
ZW50QXRQb2ludChjb25zdCBJbnRQb2ludCYgcG9pbnQpCiAgICAgSGl0VGVzdFJlc3VsdCByZXN1
bHQgPSBIaXRUZXN0UmVzdWx0KHB0KTsKIAogICAgIGlmIChjb250ZW50UmVuZGVyZXIoKSkKLSAg
ICAgICAgcmVzdWx0ID0gZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KHB0LCBm
YWxzZSk7CisgICAgICAgIHJlc3VsdCA9IGV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQ
b2ludChwdCk7CiAgICAgcmV0dXJuIHJlc3VsdC5pbm5lck5vZGUoKSA/IHJlc3VsdC5pbm5lck5v
ZGUoKS0+ZG9jdW1lbnQoKSA6IDA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvVG91Y2hEaXNhbWJpZ3VhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoRGlz
YW1iaWd1YXRpb24uY3BwCmluZGV4IDVlZmUzZGI0OTE0MDVlNzM2MWQ3NmI3N2VmYjExZWE3MzQw
NmYxN2UuLmUyYmMwOGZhYzg4MzcwM2ZkYzc2MTFhZDE5NTdmZmE1OWJmYjk2ZjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVG91Y2hEaXNhbWJpZ3VhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9Ub3VjaERpc2FtYmlndWF0aW9uLmNwcApAQCAtOTYsNyArOTYsNyBA
QCB2b2lkIGZpbmRHb29kVG91Y2hUYXJnZXRzKGNvbnN0IEludFJlY3QmIHRvdWNoQm94LCBGcmFt
ZSogbWFpbkZyYW1lLCBmbG9hdCBwYWdlUwogICAgIEludFBvaW50IHRvdWNoUG9pbnQgPSB0b3Vj
aEJveC5jZW50ZXIoKTsKICAgICBJbnRQb2ludCBjb250ZW50c1BvaW50ID0gbWFpbkZyYW1lLT52
aWV3KCktPndpbmRvd1RvQ29udGVudHModG91Y2hQb2ludCk7CiAKLSAgICBIaXRUZXN0UmVzdWx0
IHJlc3VsdCA9IG1haW5GcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50
KGNvbnRlbnRzUG9pbnQsIGZhbHNlLCBmYWxzZSwgRG9udEhpdFRlc3RTY3JvbGxiYXJzLCBIaXRU
ZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5LCBJbnRTaXplKHBh
ZGRpbmcsIHBhZGRpbmcpKTsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IG1haW5GcmFtZS0+
ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGNvbnRlbnRzUG9pbnQsIEhpdFRl
c3RSZXF1ZXN0OjpEZWZhdWx0LCBJbnRTaXplKHBhZGRpbmcsIHBhZGRpbmcpKTsKICAgICBjb25z
dCBMaXN0SGFzaFNldDxSZWZQdHI8Tm9kZT4gPiYgaGl0UmVzdWx0cyA9IHJlc3VsdC5yZWN0QmFz
ZWRUZXN0UmVzdWx0KCk7CiAKICAgICBIYXNoTWFwPE5vZGUqLCBUb3VjaFRhcmdldERhdGE+IHRv
dWNoVGFyZ2V0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0
UmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXF1ZXN0LmgKaW5k
ZXggM2ZhZjg4YTlmOTEzNzYxZWMwMTNkNmU3ZDJjZGRhZjMyZjg0ZDc5Zi4uOGY1YjE0ZWYzMDM3
MDdmNjliOGQ2NDA3ZjNmZmNjYWY1MGU2NTViYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0hpdFRlc3RSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0hpdFRlc3RSZXF1ZXN0LmgKQEAgLTQyLDYgKzQyLDcgQEAgcHVibGljOgogICAgIH07CiAKICAg
ICB0eXBlZGVmIHVuc2lnbmVkIEhpdFRlc3RSZXF1ZXN0VHlwZTsKKyAgICBzdGF0aWMgY29uc3Qg
SGl0VGVzdFJlcXVlc3RUeXBlIERlZmF1bHQgPSBSZWFkT25seSB8IEFjdGl2ZTsKIAogICAgIEhp
dFRlc3RSZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0VHlwZSByZXF1ZXN0VHlwZSkKICAgICAgICAgOiBt
X3JlcXVlc3RUeXBlKHJlcXVlc3RUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CmluZGV4IDM2OTQ4MTQyMmY2Y2EyZmNlMDJmNTQ4OGY1YTViMDgyNzM4ODQyNzkuLjEzZDVhMTA0
ZDVmMWM4YTU3MWJhNjA4OTkxNTM3OWU5NTQ4NmVhNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAKQEAgLTk3Miw4ICs5NzIsMTUgQEAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gSW50
ZXJuYWxzOjpub2Rlc0Zyb21SZWN0KERvY3VtZW50KiBkb2N1bWVudCwgaW50IHgsIGludCB5LAog
ICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQotCi0gICAgcmV0dXJuIGRvY3VtZW50LT5ub2Rlc0Zyb21SZWN0KHgsIHksIHRvcFBhZGRpbmcs
IHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcsIGlnbm9yZUNsaXBwaW5n
LCBhbGxvd1NoYWRvd0NvbnRlbnQsIGFsbG93Q2hpbGRGcmFtZUNvbnRlbnQpOworICAgIEhpdFRl
c3RSZXF1ZXN0OjpIaXRUZXN0UmVxdWVzdFR5cGUgaGl0VHlwZSA9IEhpdFRlc3RSZXF1ZXN0OjpE
ZWZhdWx0OworICAgIGlmIChpZ25vcmVDbGlwcGluZykKKyAgICAgICAgaGl0VHlwZSB8PSBIaXRU
ZXN0UmVxdWVzdDo6SWdub3JlQ2xpcHBpbmc7CisgICAgaWYgKGFsbG93U2hhZG93Q29udGVudCkK
KyAgICAgICAgaGl0VHlwZSB8PSBIaXRUZXN0UmVxdWVzdDo6QWxsb3dTaGFkb3dDb250ZW50Owor
ICAgIGlmIChhbGxvd0NoaWxkRnJhbWVDb250ZW50KQorICAgICAgICBoaXRUeXBlIHw9IEhpdFRl
c3RSZXF1ZXN0OjpBbGxvd0NoaWxkRnJhbWVDb250ZW50OworCisgICAgcmV0dXJuIGRvY3VtZW50
LT5ub2Rlc0Zyb21SZWN0KHgsIHksIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFk
ZGluZywgbGVmdFBhZGRpbmcsIGhpdFR5cGUpOwogfQogCiB2b2lkIEludGVybmFsczo6ZW1pdElu
c3BlY3RvckRpZEJlZ2luRnJhbWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L0FwaS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFn
ZS5jcHAKaW5kZXggZDVkN2QyNmVjMmI3ZGY5YjEzNjRjYTczYzBhOGJiMmYzOTZjMjQzZS4uMjkz
ZmRlM2JhOTgwMTdhYTM5ZGU4MWI4MDM0ZWFlZTZmZmQzYzEwMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCkBAIC0yNzQ2LDcgKzI3NDYsNyBAQCBQYXNzUmVmUHRy
PE5vZGU+IFdlYlBhZ2VQcml2YXRlOjpjb250ZXh0Tm9kZShUYXJnZXREZXRlY3Rpb25TdHJhdGVn
eSBzdHJhdGVneSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC5ub2RlKEZhdEZpbmdlcnNSZXN1bHQ6
OlNoYWRvd0NvbnRlbnROb3RBbGxvd2VkKTsKICAgICB9CiAKLSAgICBIaXRUZXN0UmVzdWx0IHJl
c3VsdCA9IGV2ZW50SGFuZGxlci0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoY29udGVudFBvcywgZmFs
c2UgLyphbGxvd1NoYWRvd0NvbnRlbnQqLyk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBl
dmVudEhhbmRsZXItPmhpdFRlc3RSZXN1bHRBdFBvaW50KGNvbnRlbnRQb3MpOwogICAgIHJldHVy
biByZXN1bHQuaW5uZXJOb2RlKCk7CiB9CiAKQEAgLTI4MTgsNyArMjgxOCw3IEBAIE5vZGUqIFdl
YlBhZ2VQcml2YXRlOjpub2RlRm9yWm9vbVVuZGVyUG9pbnQoY29uc3QgSW50UG9pbnQmIHBvaW50
KQogICAgIGlmICghbV9tYWluRnJhbWUpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgSGl0VGVz
dFJlc3VsdCByZXN1bHQgPSBtX21haW5GcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1
bHRBdFBvaW50KG1hcEZyb21UcmFuc2Zvcm1lZChwb2ludCksIGZhbHNlKTsKKyAgICBIaXRUZXN0
UmVzdWx0IHJlc3VsdCA9IG1fbWFpbkZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3Vs
dEF0UG9pbnQobWFwRnJvbVRyYW5zZm9ybWVkKHBvaW50KSk7CiAKICAgICBOb2RlKiBub2RlID0g
cmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpOwogCkBAIC00MDI3LDcgKzQwMjcsNyBAQCBib29s
IFdlYlBhZ2VQcml2YXRlOjpoYW5kbGVNb3VzZUV2ZW50KFBsYXRmb3JtTW91c2VFdmVudCYgbW91
c2VFdmVudCkKICAgICB9CiAKICAgICBpZiAoIW5vZGUpIHsKLSAgICAgICAgSGl0VGVzdFJlc3Vs
dCByZXN1bHQgPSBldmVudEhhbmRsZXItPmhpdFRlc3RSZXN1bHRBdFBvaW50KG1hcEZyb21WaWV3
cG9ydFRvQ29udGVudHMobW91c2VFdmVudC5wb3NpdGlvbigpKSwgZmFsc2UgLyphbGxvd1NoYWRv
d0NvbnRlbnQqLyk7CisgICAgICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZXZlbnRIYW5kbGVy
LT5oaXRUZXN0UmVzdWx0QXRQb2ludChtYXBGcm9tVmlld3BvcnRUb0NvbnRlbnRzKG1vdXNlRXZl
bnQucG9zaXRpb24oKSkpOwogICAgICAgICBub2RlID0gcmVzdWx0LmlubmVyTm9kZSgpOwogICAg
IH0KIApAQCAtNTE5MCw3ICs1MTkwLDcgQEAgV2ViRE9NRG9jdW1lbnQgV2ViUGFnZTo6ZG9jdW1l
bnQoKSBjb25zdAogCiBXZWJET01Ob2RlIFdlYlBhZ2U6Om5vZGVBdFBvaW50KGludCB4LCBpbnQg
eSkKIHsKLSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGQtPm1fbWFpbkZyYW1lLT5ldmVudEhh
bmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoZC0+bWFwRnJvbVRyYW5zZm9ybWVkKEludFBv
aW50KHgsIHkpKSwgZmFsc2UpOworICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZC0+bV9tYWlu
RnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChkLT5tYXBGcm9tVHJh
bnNmb3JtZWQoSW50UG9pbnQoeCwgeSkpKTsKICAgICBOb2RlKiBub2RlID0gcmVzdWx0LmlubmVy
Tm9uU2hhcmVkTm9kZSgpOwogICAgIHJldHVybiBXZWJET01Ob2RlKG5vZGUpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRmF0RmluZ2Vycy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9GYXRGaW5nZXJzLmNw
cAppbmRleCBjMzQ0MmM4MjdhZjZjODA0YmI4Y2NmMTdhNzljNGIwYTBlMTNiNWU1Li5jYTc0NjM0
NzhmZDNhMjgxYWU5ODVmODBlOWUzNmFiNDBiYzJmZWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9GYXRGaW5nZXJzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9GYXRGaW5nZXJzLmNwcApAQCAtNDkxLDEx
ICs0OTEsMTIgQEAgdm9pZCBGYXRGaW5nZXJzOjpnZXROb2Rlc0Zyb21SZWN0KERvY3VtZW50KiBk
b2N1bWVudCwgY29uc3QgSW50UG9pbnQmIGNvbnRlbnRQb3MKICAgICB1bnNpZ25lZCB0b3BQYWRk
aW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nOwogICAgIGdldFBh
ZGRpbmdzKHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRp
bmcpOwogCi0gICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9u
bHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6Oklnbm9yZUNsaXBw
aW5nKTsKICAgICAvLyBUaGUgdXNlciBmdW5jdGlvbnMgY2hlY2tGb3JUZXh0KCkgYW5kIGZpbmRJ
bnRlcnNlY3RpbmdSZWdpb25zKCkgdXNlcyB0aGUgTm9kZS53aG9sZVRleHQoKSB0byBjaGVja0Zp
bmdlckludGVyc2VjdGlvbigpCiAgICAgLy8gbm90IHRoZSB0ZXh0IGluIGl0cyBzaGFkb3cgdHJl
ZS4KLSAgICBTaGFkb3dDb250ZW50RmlsdGVyUG9saWN5IGFsbG93U2hhZG93ID0gbV90YXJnZXRU
eXBlID09IFRleHQgPyBEb05vdEFsbG93U2hhZG93Q29udGVudCA6IEFsbG93U2hhZG93Q29udGVu
dDsKLSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdChjb250ZW50UG9zLCB0b3BQYWRkaW5nLCByaWdo
dFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nLCBhbGxvd1NoYWRvdyk7CisgICAg
SGl0VGVzdFJlcXVlc3QgcmVxdWVzdCA9IEhpdFRlc3RSZXF1ZXN0OjpEZWZhdWx0IHwgSGl0VGVz
dFJlcXVlc3Q6Oklnbm9yZUNsaXBwaW5nOworICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KGNvbnRl
bnRQb3MsIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRp
bmcpOworICAgIGlmIChtX3RhcmdldFR5cGUgIT0gVGV4dCkKKyAgICAgICAgcmVxdWVzdCB8PSBI
aXRUZXN0UmVxdWVzdDo6QWxsb3dTaGFkb3dDb250ZW50OwogCiAgICAgZG9jdW1lbnQtPnJlbmRl
clZpZXcoKS0+bGF5ZXIoKS0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOwogICAgIGludGVyc2Vj
dGVkTm9kZXMgPSByZXN1bHQucmVjdEJhc2VkVGVzdFJlc3VsdCgpOwpAQCAtNTEwLDcgKzUxMSw3
IEBAIHZvaWQgRmF0RmluZ2Vyczo6Z2V0UmVsZXZhbnRJbmZvRnJvbVBvaW50KERvY3VtZW50KiBk
b2N1bWVudCwgY29uc3QgSW50UG9pbnQmIGNvCiAgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1l
bnQtPnJlbmRlcmVyKCkgfHwgIWRvY3VtZW50LT5mcmFtZSgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCAgPSBkb2N1bWVudC0+ZnJhbWUoKS0+ZXZlbnRIYW5k
bGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGNvbnRlbnRQb3MsIHRydWUgLyphbGxvd1NoYWRv
d0NvbnRlbnQqLyk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgID0gZG9jdW1lbnQtPmZyYW1l
KCktPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChjb250ZW50UG9zLCBIaXRU
ZXN0UmVxdWVzdDo6RGVmYXVsdCB8IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd1NoYWRvd0NvbnRlbnQp
OwogICAgIE5vZGUqIG5vZGUgPSByZXN1bHQuaW5uZXJOb2RlKCk7CiAgICAgd2hpbGUgKG5vZGUg
JiYgIW5vZGUtPmlzRWxlbWVudE5vZGUoKSkKICAgICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudE5v
ZGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0
L1NlbGVjdGlvbkhhbmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1
cHBvcnQvU2VsZWN0aW9uSGFuZGxlci5jcHAKaW5kZXggM2IwNDI0N2JlY2ZkYmI3YzI2YzRlOWMw
NDYxNWNkZjFjMjNmZmRlYi4uYTlkOWRhOWVmNzUwYTM4MTUyMGY0NGFiMjc4ZTlmYjYyZGViOTc2
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvU2Vs
ZWN0aW9uSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1
cHBvcnQvU2VsZWN0aW9uSGFuZGxlci5jcHAKQEAgLTE1OSw3ICsxNTksNyBAQCBzdGF0aWMgVmlz
aWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZvclBvaW50SWdub3JpbmdDbGlwcGluZyhjb25z
dCBGcmFtZSYgZnJhbQogICAgIC8vIG91dHNpZGUgdGhlIHZpc2libGUgcmVjdC4gVG8gd29yayBh
cm91bmQgdGhlIGJ1ZywgdGhpcyBpcyBhIGNvcHkgb2YKICAgICAvLyB2aXNpYmxlUG9zaXRpb25B
dFBvaW50IHdoaWNoIHdoaWNoIHBhc3NlcyBpZ25vcmVDbGlwcGluZz10cnVlLgogICAgIC8vIFNl
ZSBSSU0gQnVnICM0MzE1LgotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZnJhbWUuZXZlbnRI
YW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGZyYW1lUG9pbnQsIHRydWUgLyogYWxsb3dT
aGFkb3dDb250ZW50ICovLCB0cnVlIC8qIGlnbm9yZUNsaXBwaW5nICovKTsKKyAgICBIaXRUZXN0
UmVzdWx0IHJlc3VsdCA9IGZyYW1lLmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2lu
dChmcmFtZVBvaW50LCBIaXRUZXN0UmVxdWVzdDo6RGVmYXVsdCB8IEhpdFRlc3RSZXF1ZXN0OjpB
bGxvd1NoYWRvd0NvbnRlbnQgfCBIaXRUZXN0UmVxdWVzdDo6SWdub3JlQ2xpcHBpbmcpOwogCiAg
ICAgTm9kZSogbm9kZSA9IHJlc3VsdC5pbm5lck5vZGUoKTsKICAgICBpZiAoIW5vZGUgfHwgbm9k
ZS0+ZG9jdW1lbnQoKSAhPSBmcmFtZS5kb2N1bWVudCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvQ29udGV4dE1lbnVDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0NvbnRleHRNZW51Q2xpZW50SW1wbC5jcHAKaW5kZXggYWRhYTQxMzky
ZDJhMTdiNjQ0OTNiMjRlY2ViOGM3OTgzZTNlZDRiMS4uNzNkOTc1NDNjNTFkYThjNGZkODA0OGIw
Y2Q4YTg2NTFkZjk1YmM4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
Q29udGV4dE1lbnVDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9Db250ZXh0TWVudUNsaWVudEltcGwuY3BwCkBAIC0xMjIsNyArMTIyLDcgQEAgc3RhdGljIFN0
cmluZyBzZWxlY3RNaXNzcGVsbGVkV29yZChjb25zdCBDb250ZXh0TWVudSogZGVmYXVsdE1lbnUs
IEZyYW1lKiBzZWxlY3QKIAogICAgIC8vIFNlbGVjdGlvbiBpcyBlbXB0eSwgc28gY2hhbmdlIHRo
ZSBzZWxlY3Rpb24gdG8gdGhlIHdvcmQgdW5kZXIgdGhlIGN1cnNvci4KICAgICBIaXRUZXN0UmVz
dWx0IGhpdFRlc3RSZXN1bHQgPSBzZWxlY3RlZEZyYW1lLT5ldmVudEhhbmRsZXIoKS0+Ci0gICAg
ICAgIGhpdFRlc3RSZXN1bHRBdFBvaW50KHNlbGVjdGVkRnJhbWUtPnBhZ2UoKS0+Y29udGV4dE1l
bnVDb250cm9sbGVyKCktPmhpdFRlc3RSZXN1bHQoKS5wb2ludCgpLCB0cnVlKTsKKyAgICAgICAg
aGl0VGVzdFJlc3VsdEF0UG9pbnQoc2VsZWN0ZWRGcmFtZS0+cGFnZSgpLT5jb250ZXh0TWVudUNv
bnRyb2xsZXIoKS0+aGl0VGVzdFJlc3VsdCgpLnBvaW50KCksIEhpdFRlc3RSZXF1ZXN0OjpEZWZh
dWx0IHwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93U2hhZG93Q29udGVudCk7CiAgICAgTm9kZSogaW5u
ZXJOb2RlID0gaGl0VGVzdFJlc3VsdC5pbm5lck5vZGUoKTsKICAgICBWaXNpYmxlUG9zaXRpb24g
cG9zKGlubmVyTm9kZS0+cmVuZGVyZXIoKS0+cG9zaXRpb25Gb3JQb2ludCgKICAgICAgICAgaGl0
VGVzdFJlc3VsdC5sb2NhbFBvaW50KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCmluZGV4IDVkZDAyYjU2M2QwOTEzMmRj
Y2ExMmViYzEzZDM3YWQ2NWQ2MDA5YTIuLmM5OWJkN2M1NzI1M2IyYjZlYWRlMDBhNWM1YWUyNmVk
NmE2MzY3OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9h
ZGVyQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVM
b2FkZXJDbGllbnRJbXBsLmNwcApAQCAtOTk3LDggKzk5Nyw3IEBAIHZvaWQgRnJhbWVMb2FkZXJD
bGllbnRJbXBsOjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oCiAgICAg
ICAgICAgICAgICAgaWYgKGV2ZW50LT5pc01vdXNlRXZlbnQoKSkgewogICAgICAgICAgICAgICAg
ICAgICBjb25zdCBNb3VzZUV2ZW50KiBtb3VzZUV2ZW50ID0KICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YXRpY19jYXN0PGNvbnN0IE1vdXNlRXZlbnQqPihldmVudCk7Ci0gICAgICAgICAgICAg
ICAgICAgIG5vZGUgPSBtX3dlYkZyYW1lLT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVz
dFJlc3VsdEF0UG9pbnQoCi0gICAgICAgICAgICAgICAgICAgICAgICBtb3VzZUV2ZW50LT5hYnNv
bHV0ZUxvY2F0aW9uKCksIGZhbHNlKS5pbm5lck5vblNoYXJlZE5vZGUoKTsKKyAgICAgICAgICAg
ICAgICAgICAgbm9kZSA9IG1fd2ViRnJhbWUtPmZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oaXRU
ZXN0UmVzdWx0QXRQb2ludChtb3VzZUV2ZW50LT5hYnNvbHV0ZUxvY2F0aW9uKCkpLmlubmVyTm9u
U2hhcmVkTm9kZSgpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJGcmFtZUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJ
bXBsLmNwcAppbmRleCBlYjNhZWY3NzVjYWU1N2Q0NjRiYTQzM2FmYzBmNDc3MzRlNmM5ZmUzLi5h
NmQ4ODU2MWEzNDNhN2JjZDZiZWYzMDdlOWM5NjIzZjA2MDdhNDc4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKQEAgLTEyNjIsNyArMTI2Miw3IEBAIHNp
emVfdCBXZWJGcmFtZUltcGw6OmNoYXJhY3RlckluZGV4Rm9yUG9pbnQoY29uc3QgV2ViUG9pbnQm
IHdlYlBvaW50KSBjb25zdAogICAgICAgICByZXR1cm4gbm90Rm91bmQ7CiAKICAgICBJbnRQb2lu
dCBwb2ludCA9IGZyYW1lKCktPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyh3ZWJQb2ludCk7Ci0g
ICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBmcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVz
dFJlc3VsdEF0UG9pbnQocG9pbnQsIGZhbHNlKTsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9
IGZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChwb2ludCk7CiAg
ICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IGZyYW1lKCktPnJhbmdlRm9yUG9pbnQocmVzdWx0LnJv
dW5kZWRQb2ludCgpKTsKICAgICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1cm4gbm90Rm91bmQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWlu
ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5l
ckltcGwuY3BwCmluZGV4IGZlOTlhYjg0NDViMTI3MmIyM2M2N2ZmNDc2YTk2MWI3MjFkYzY3Njcu
LjQyM2EzMDU5NzI0ZjJlZDMwZDFlNDNlOGE1NzBkODk0YmJkNjhkNWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwCkBA
IC01MTMsNyArNTEzLDcgQEAgYm9vbCBXZWJQbHVnaW5Db250YWluZXJJbXBsOjppc1JlY3RUb3Bt
b3N0KGNvbnN0IFdlYlJlY3QmIHJlY3QpCiAgICAgTGF5b3V0UG9pbnQgY2VudGVyID0gZG9jdW1l
bnRSZWN0LmNlbnRlcigpOwogICAgIC8vIE1ha2UgdGhlIHJlY3Qgd2UncmUgY2hlY2tpbmcgKHRo
ZSBwb2ludCBzdXJyb3VuZGVkIGJ5IHBhZGRpbmcgcmVjdHMpIGNvbnRhaW5lZCBpbnNpZGUgdGhl
IHJlcXVlc3RlZCByZWN0LiAoTm90ZSB0aGF0IC0xLzIgaXMgMC4pCiAgICAgTGF5b3V0U2l6ZSBw
YWRkaW5nKChkb2N1bWVudFJlY3Qud2lkdGgoKSAtIDEpIC8gMiwgKGRvY3VtZW50UmVjdC5oZWln
aHQoKSAtIDEpIC8gMik7Ci0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBmcmFtZS0+ZXZlbnRI
YW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGNlbnRlciwgZmFsc2UsIGZhbHNlLCBEb250
SGl0VGVzdFNjcm9sbGJhcnMsIEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1
ZXN0OjpBY3RpdmUsIHBhZGRpbmcpOworICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZnJhbWUt
PmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChjZW50ZXIsIEhpdFRlc3RSZXF1
ZXN0OjpEZWZhdWx0LCBwYWRkaW5nKTsKICAgICBjb25zdCBIaXRUZXN0UmVzdWx0OjpOb2RlU2V0
JiBub2RlcyA9IHJlc3VsdC5yZWN0QmFzZWRUZXN0UmVzdWx0KCk7CiAgICAgaWYgKG5vZGVzLnNp
emUoKSAhPSAxKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggYWI4YzM2YzY2YTg4YzcxYTViYmEyY2IxNTM3OTIz
OWYwNDU1MzE2NS4uZmVjYzdhOTA4OWY2ZjViN2FkNTk4YWM1MmNkNzcyMGY2NDc3OTE1ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtNjM4LDcgKzYz
OCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OmhhbmRsZU1vdXNlVXAoRnJhbWUmIG1haW5GcmFtZSwg
Y29uc3QgV2ViTW91c2VFdmVudCYgZXZlbnQpCiAgICAgICAgIEZyYW1lVmlldyogdmlldyA9IG1f
cGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKTsKICAgICAgICAgSW50UG9pbnQgY2xpY2tQb2ludCht
X2xhc3RNb3VzZURvd25Qb2ludC54LCBtX2xhc3RNb3VzZURvd25Qb2ludC55KTsKICAgICAgICAg
SW50UG9pbnQgY29udGVudFBvaW50ID0gdmlldy0+d2luZG93VG9Db250ZW50cyhjbGlja1BvaW50
KTsKLSAgICAgICAgSGl0VGVzdFJlc3VsdCBoaXRUZXN0UmVzdWx0ID0gZm9jdXNlZC0+ZXZlbnRI
YW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGNvbnRlbnRQb2ludCwgZmFsc2UsIGZhbHNl
LCBTaG91bGRIaXRUZXN0U2Nyb2xsYmFycyk7CisgICAgICAgIEhpdFRlc3RSZXN1bHQgaGl0VGVz
dFJlc3VsdCA9IGZvY3VzZWQtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChj
b250ZW50UG9pbnQsIEhpdFRlc3RSZXF1ZXN0OjpEZWZhdWx0IHwgSGl0VGVzdFJlcXVlc3Q6OlRl
c3RDaGlsZEZyYW1lU2Nyb2xsQmFycyk7CiAgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gc2Vu
ZCBhIHBhc3RlIHdoZW4gbWlkZGxlIGNsaWNraW5nIGEgc2Nyb2xsIGJhciBvciBhCiAgICAgICAg
IC8vIGxpbmsgKHdoaWNoIHdpbGwgbmF2aWdhdGUgbGF0ZXIgaW4gdGhlIGNvZGUpLiAgVGhlIG1h
aW4gc2Nyb2xsYmFycwogICAgICAgICAvLyBoYXZlIHRvIGJlIGhhbmRsZWQgc2VwYXJhdGVseS4K
QEAgLTEwMDUsOSArMTAwNSw4IEBAIFdlYlJlY3QgV2ViVmlld0ltcGw6OmNvbXB1dGVCbG9ja0Jv
dW5kcyhjb25zdCBXZWJSZWN0JiByZWN0LCBBdXRvWm9vbVR5cGUgem9vbVR5CiAKICAgICAvLyBV
c2UgdGhlIHJlY3QtYmFzZWQgaGl0IHRlc3QgdG8gZmluZCB0aGUgbm9kZS4KICAgICBJbnRQb2lu
dCBwb2ludCA9IG1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCktPndpbmRvd1RvQ29udGVudHMo
SW50UG9pbnQocmVjdC54LCByZWN0LnkpKTsKLSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IG1h
aW5GcmFtZUltcGwoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBv
aW50KHBvaW50LAotICAgICAgICAgICAgZmFsc2UsIHpvb21UeXBlID09IEZpbmRJblBhZ2UsIERv
bnRIaXRUZXN0U2Nyb2xsYmFycywgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1
ZXN0OjpSZWFkT25seSwKLSAgICAgICAgICAgIEludFNpemUocmVjdC53aWR0aCwgcmVjdC5oZWln
aHQpKTsKKyAgICBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhpdFR5cGUgPSBI
aXRUZXN0UmVxdWVzdDo6RGVmYXVsdCB8ICgoem9vbVR5cGUgPT0gRmluZEluUGFnZSkgPyBIaXRU
ZXN0UmVxdWVzdDo6SWdub3JlQ2xpcHBpbmcgOiAwKTsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3Vs
dCA9IG1haW5GcmFtZUltcGwoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1
bHRBdFBvaW50KHBvaW50LCBoaXRUeXBlLCBJbnRTaXplKHJlY3Qud2lkdGgsIHJlY3QuaGVpZ2h0
KSk7CiAKICAgICBOb2RlKiBub2RlID0gcmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpOwogICAg
IGlmICghbm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUu
Y3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAKaW5kZXggNGIzM2M2Mjgw
ZjNjZDJmNGMxNDZkYWI5OGM4ZTNjYzdkZmYyMWFhYy4uNmQzNjBmMGY4ZTJkNzIwYjY1MzM4N2I2
NmRkMzRiODUxNTFiMGNlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19m
cmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAKQEAgLTM4
LDYgKzM4LDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MUGx1Z0lu
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhpc3RvcnlJdGVtLmgiCisjaW5jbHVkZSAiSGl0VGVzdFJl
cXVlc3QuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5o
IgogI2luY2x1ZGUgIktVUkwuaCIKQEAgLTY5Myw4ICs2OTQsOCBAQCBFd2tfSGl0X1Rlc3QqIGV3
a19mcmFtZV9oaXRfdGVzdF9uZXcoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBpbnQgeCwg
aW50IHkpCiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJh
bWUtPmNvbnRlbnRSZW5kZXJlcigpLCAwKTsKIAogICAgIFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQg
cmVzdWx0ID0gc21hcnREYXRhLT5mcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRB
dFBvaW50Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZpZXctPndp
bmRvd1RvQ29udGVudHMoV2ViQ29yZTo6SW50UG9pbnQoeCwgeSkpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qYWxsb3dTaGFkb3dDb250ZW50Ki8gZmFsc2UsIC8q
aWdub3JlQ2xpcHBpbmcqLyB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAodmlldy0+d2luZG93VG9Db250ZW50cyhXZWJDb3JlOjpJbnRQb2ludCh4LCB5KSks
IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkNvcmU6OkhpdFRl
c3RSZXF1ZXN0OjpEZWZhdWx0IHwgV2ViQ29yZTo6SGl0VGVzdFJlcXVlc3Q6Oklnbm9yZUNsaXBw
aW5nKTsKIAogICAgIGlmIChyZXN1bHQuc2Nyb2xsYmFyKCkpCiAgICAgICAgIHJldHVybiAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5tbQppbmRleCA2YWFhMGZkNWQwYzZjMDdiNjljOTM3MjdiZGNiZGFkYjg5ZTli
M2FlLi5hNTc2NDU0Y2I5NDQ1NWIyZjE3NjBmZjA5NTljOTNlYTM4ZDRkN2I2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5tbQpAQCAtMTMzMiw3ICsxMzMyLDcgQEAgTlNEaWN0aW9uYXJ5ICpXZWJGcmFtZUxvYWRl
ckNsaWVudDo6YWN0aW9uRGljdGlvbmFyeShjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3QKIAog
ICAgIGlmIChjb25zdCBNb3VzZUV2ZW50KiBtb3VzZUV2ZW50ID0gZmluZE1vdXNlRXZlbnQoZXZl
bnQpKSB7CiAgICAgICAgIFdlYkVsZW1lbnREaWN0aW9uYXJ5ICplbGVtZW50ID0gW1tXZWJFbGVt
ZW50RGljdGlvbmFyeSBhbGxvY10KLSAgICAgICAgICAgIGluaXRXaXRoSGl0VGVzdFJlc3VsdDpj
b3JlKG1fd2ViRnJhbWUuZ2V0KCkpLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9p
bnQobW91c2VFdmVudC0+YWJzb2x1dGVMb2NhdGlvbigpLCBmYWxzZSldOworICAgICAgICAgICAg
aW5pdFdpdGhIaXRUZXN0UmVzdWx0OmNvcmUobV93ZWJGcmFtZS5nZXQoKSktPmV2ZW50SGFuZGxl
cigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChtb3VzZUV2ZW50LT5hYnNvbHV0ZUxvY2F0aW9uKCkp
XTsKICAgICAgICAgW3Jlc3VsdCBzZXRPYmplY3Q6ZWxlbWVudCBmb3JLZXk6V2ViQWN0aW9uRWxl
bWVudEtleV07CiAgICAgICAgIFtlbGVtZW50IHJlbGVhc2VdOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCBiZmVkZThkYjZmOWVmYjY1ZmQxMTU0MTg5OGE4
Y2QxMDg0ZTJiNjNmLi4yMzI4ZTI4ZjVhMTBlYTY0MjFjYmUzYzFhNjBhMmM2ODcwYTNjMjFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTYyMDYsNyArNjIw
Niw4IEBAIHN0YXRpYyB2b2lkIGV4dHJhY3RVbmRlcmxpbmVzKE5TQXR0cmlidXRlZFN0cmluZyAq
c3RyaW5nLCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlCiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNv
cmUoW3NlbGYgX2ZyYW1lXSk7CiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiBu
aWw7Ci0gICAgcmV0dXJuIFtbW1dlYkVsZW1lbnREaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aEhp
dFRlc3RSZXN1bHQ6Y29yZUZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9p
bnQoSW50UG9pbnQocG9pbnQpLCBhbGxvdyldIGF1dG9yZWxlYXNlXTsKKyAgICBIaXRUZXN0UmVx
dWVzdDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhpdFR5cGUgPSBIaXRUZXN0UmVxdWVzdDo6RGVmYXVs
dCB8IChhbGxvdyA/IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd1NoYWRvd0NvbnRlbnQgOiAwKTsKKyAg
ICByZXR1cm4gW1tbV2ViRWxlbWVudERpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoSGl0VGVzdFJl
c3VsdDpjb3JlRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChJbnRQ
b2ludChwb2ludCksIGhpdFR5cGUpXSBhdXRvcmVsZWFzZV07CiB9CiAKIC0gKE5TVUludGVnZXIp
Y291bnRNYXRjaGVzRm9yVGV4dDooTlNTdHJpbmcgKilzdHJpbmcgaW5ET01SYW5nZTooRE9NUmFu
Z2UgKilyYW5nZSBvcHRpb25zOihXZWJGaW5kT3B0aW9ucylvcHRpb25zIGxpbWl0OihOU1VJbnRl
Z2VyKWxpbWl0IG1hcmtNYXRjaGVzOihCT09MKW1hcmtNYXRjaGVzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdl
YmZyYW1lLmNwcAppbmRleCBhZGJmYTFjY2RlNGZhNzQ1NWUwYjZiYzc1YmIxMzdhNWZmNGFjYWIz
Li42ZjNjZTdlZGY3MDEzNjU5ZjE3ZjM5MWMwM2FmZTNiYzcwMjEwNGNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQv
QXBpL3F3ZWJmcmFtZS5jcHAKQEAgLTE0MDYsNyArMTQwNiw3IEBAIFFXZWJIaXRUZXN0UmVzdWx0
IFFXZWJGcmFtZTo6aGl0VGVzdENvbnRlbnQoY29uc3QgUVBvaW50ICZwb3MpIGNvbnN0CiAgICAg
aWYgKCFkLT5mcmFtZS0+dmlldygpIHx8ICFkLT5mcmFtZS0+Y29udGVudFJlbmRlcmVyKCkpCiAg
ICAgICAgIHJldHVybiBRV2ViSGl0VGVzdFJlc3VsdCgpOwogCi0gICAgSGl0VGVzdFJlc3VsdCBy
ZXN1bHQgPSBkLT5mcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGQt
PmZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMocG9zKSwgLyphbGxvd1NoYWRvd0NvbnRl
bnQqLyBmYWxzZSwgLyppZ25vcmVDbGlwcGluZyovIHRydWUpOworICAgIEhpdFRlc3RSZXN1bHQg
cmVzdWx0ID0gZC0+ZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChk
LT5mcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHBvcyksIEhpdFRlc3RSZXF1ZXN0OjpE
ZWZhdWx0IHwgSGl0VGVzdFJlcXVlc3Q6Oklnbm9yZUNsaXBwaW5nKTsKIAogICAgIGlmIChyZXN1
bHQuc2Nyb2xsYmFyKCkpCiAgICAgICAgIHJldHVybiBRV2ViSGl0VGVzdFJlc3VsdCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwIGIvU291cmNlL1dlYktp
dC9xdC9BcGkvcXdlYnBhZ2UuY3BwCmluZGV4IDA4ZTg2MTgzYTZiNmVhNDQwODdlZjI0NzFmZDkw
MDJkNGI2MDQwZjQuLjI5NjI4ZjU5ODdjZTllMTgwNzM5MmNkZjg3YzVmNjY3NmRmNzljOTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKQEAgLTgwOCw3ICs4MDgsNyBAQCB2b2lkIFFXZWJQ
YWdlUHJpdmF0ZTo6aGFuZGxlU29mdHdhcmVJbnB1dFBhbmVsKFF0OjpNb3VzZUJ1dHRvbiBidXR0
b24sIGNvbnN0IFFQbwogICAgICAgICBRU3R5bGU6OlJlcXVlc3RTb2Z0d2FyZUlucHV0UGFuZWwg
YmVoYXZpb3IgPSBRU3R5bGU6OlJlcXVlc3RTb2Z0d2FyZUlucHV0UGFuZWwoCiAgICAgICAgICAg
ICBjbGllbnQtPm93bmVyV2lkZ2V0KCktPnN0eWxlKCktPnN0eWxlSGludChRU3R5bGU6OlNIX1Jl
cXVlc3RTb2Z0d2FyZUlucHV0UGFuZWwpKTsKICAgICAgICAgaWYgKCFjbGlja0NhdXNlZEZvY3Vz
IHx8IGJlaGF2aW9yID09IFFTdHlsZTo6UlNJUF9Pbk1vdXNlQ2xpY2spIHsKLSAgICAgICAgICAg
IEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVz
dWx0QXRQb2ludChmcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHBvcyksIGZhbHNlKTsK
KyAgICAgICAgICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZnJhbWUtPmV2ZW50SGFuZGxlcigp
LT5oaXRUZXN0UmVzdWx0QXRQb2ludChmcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHBv
cykpOwogICAgICAgICAgICAgaWYgKHJlc3VsdC5pc0NvbnRlbnRFZGl0YWJsZSgpKSB7CiAgICAg
ICAgICAgICAgICAgUUV2ZW50IGV2ZW50KFFFdmVudDo6UmVxdWVzdFNvZnR3YXJlSW5wdXRQYW5l
bCk7CiAgICAgICAgICAgICAgICAgUUFwcGxpY2F0aW9uOjpzZW5kRXZlbnQoY2xpZW50LT5vd25l
cldpZGdldCgpLCAmZXZlbnQpOwpAQCAtMTU2NSw3ICsxNTY1LDcgQEAgSW50UG9pbnQgUVdlYlBh
Z2VQcml2YXRlOjpUb3VjaEFkanVzdGVyOjpmaW5kQ2FuZGlkYXRlUG9pbnRGb3JUb3VjaChjb25z
dCBJbnRQb2kKICAgICBpbnQgeCA9IHRvdWNoUG9pbnQueCgpOwogICAgIGludCB5ID0gdG91Y2hQ
b2ludC55KCk7CiAKLSAgICBSZWZQdHI8Tm9kZUxpc3Q+IGludGVyc2VjdGVkTm9kZXMgPSBkb2N1
bWVudC0+bm9kZXNGcm9tUmVjdCh4LCB5LCBtX3RvcFBhZGRpbmcsIG1fcmlnaHRQYWRkaW5nLCBt
X2JvdHRvbVBhZGRpbmcsIG1fbGVmdFBhZGRpbmcsIGZhbHNlIC8qaWdub3JlQ2xpcHBpbmcqLywg
ZmFsc2UgLyphbGxvd1NoYWRvd0NvbnRlbnQqLyk7CisgICAgUmVmUHRyPE5vZGVMaXN0PiBpbnRl
cnNlY3RlZE5vZGVzID0gZG9jdW1lbnQtPm5vZGVzRnJvbVJlY3QoeCwgeSwgbV90b3BQYWRkaW5n
LCBtX3JpZ2h0UGFkZGluZywgbV9ib3R0b21QYWRkaW5nLCBtX2xlZnRQYWRkaW5nKTsKICAgICBp
ZiAoIWludGVyc2VjdGVkTm9kZXMpCiAgICAgICAgIHJldHVybiBJbnRQb2ludCgpOwogCkBAIC0z
MzcxLDcgKzMzNzEsNyBAQCB2b2lkIFFXZWJQYWdlOjp1cGRhdGVQb3NpdGlvbkRlcGVuZGVudEFj
dGlvbnMoY29uc3QgUVBvaW50ICZwb3MpCiAgICAgZC0+Y3JlYXRlTWFpbkZyYW1lKCk7CiAgICAg
V2ViQ29yZTo6RnJhbWUqIGZvY3VzZWRGcmFtZSA9IGQtPnBhZ2UtPmZvY3VzQ29udHJvbGxlcigp
LT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKIAotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZm9j
dXNlZEZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoZm9jdXNlZEZy
YW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMocG9zKSwgLyphbGxvd1NoYWRvd0NvbnRlbnQq
LyBmYWxzZSk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBmb2N1c2VkRnJhbWUtPmV2ZW50
SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChmb2N1c2VkRnJhbWUtPnZpZXcoKS0+d2lu
ZG93VG9Db250ZW50cyhwb3MpKTsKICAgICBpZiAocmVzdWx0LnNjcm9sbGJhcigpKQogICAgICAg
ICBkLT5oaXRUZXN0UmVzdWx0ID0gUVdlYkhpdFRlc3RSZXN1bHQoKTsKICAgICBlbHNlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
UXQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dFF0LmNwcAppbmRleCBiY2YwNzJkNjViNTY0ZmYxZWQ1YWI2YWQ1MTI5NDYxODQwOTFiMDYxLi43
MmE1ZTAwNDk4MmRkZTc0ZTUyYTg1OWEzMGQxNDc1N2Y2MDJjZjEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAK
QEAgLTEyNzIsNyArMTI3Miw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKEZyYW1lUG9saWN5RnVuCiAgICAgICAgICAg
ICBpZiAoZXZlbnQtPmlzTW91c2VFdmVudCgpKSB7CiAgICAgICAgICAgICAgICAgY29uc3QgTW91
c2VFdmVudCogbW91c2VFdmVudCA9ICBzdGF0aWNfY2FzdDxjb25zdCBNb3VzZUV2ZW50Kj4oZXZl
bnQpOwogICAgICAgICAgICAgICAgIG5vZGUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKG1fd2Vi
RnJhbWUpLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoCi0gICAgICAgICAg
ICAgICAgICAgIG1vdXNlRXZlbnQtPmFic29sdXRlTG9jYXRpb24oKSwgZmFsc2UpLmlubmVyTm9u
U2hhcmVkTm9kZSgpOworICAgICAgICAgICAgICAgICAgICBtb3VzZUV2ZW50LT5hYnNvbHV0ZUxv
Y2F0aW9uKCkpLmlubmVyTm9uU2hhcmVkTm9kZSgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJBY3Rpb25Qcm9wZXJ0eUJhZy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJBY3Rpb25Qcm9w
ZXJ0eUJhZy5jcHAKaW5kZXggZmNhODNiZTBkNGU5MDAyMTAzYTMzNDZhZDE3MzI4OTc4Yjc4MzI0
Ny4uZDI5MDUwOTFmMmM3MzE2YzJjNTgyZmFkMDlmM2UzNjE4NDgyYTM4OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC93aW4vV2ViQWN0aW9uUHJvcGVydHlCYWcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYkFjdGlvblByb3BlcnR5QmFnLmNwcApAQCAtMTIxLDcgKzEyMSw3IEBAIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViQWN0aW9uUHJvcGVydHlCYWc6OlJlYWQoTFBDT0xF
U1RSIHBzelByb3BOYW1lLCBWQVJJCiAgICAgaWYgKGlzRXF1YWwocHN6UHJvcE5hbWUsIFdlYkFj
dGlvbkVsZW1lbnRLZXkpKSB7CiAgICAgICAgIGlmIChjb25zdCBNb3VzZUV2ZW50KiBtb3VzZUV2
ZW50ID0gZmluZE1vdXNlRXZlbnQobV9hY3Rpb24uZXZlbnQoKSkpIHsKICAgICAgICAgICAgIFZf
VlQocFZhcikgPSBWVF9VTktOT1dOOwotICAgICAgICAgICAgVl9VTktOT1dOKHBWYXIpID0gV2Vi
RWxlbWVudFByb3BlcnR5QmFnOjpjcmVhdGVJbnN0YW5jZShtX2ZyYW1lLT5ldmVudEhhbmRsZXIo
KS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQobW91c2VFdmVudC0+YWJzb2x1dGVMb2NhdGlvbigpLCBm
YWxzZSkpOworICAgICAgICAgICAgVl9VTktOT1dOKHBWYXIpID0gV2ViRWxlbWVudFByb3BlcnR5
QmFnOjpjcmVhdGVJbnN0YW5jZShtX2ZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3Vs
dEF0UG9pbnQobW91c2VFdmVudC0+YWJzb2x1dGVMb2NhdGlvbigpKSk7CiAgICAgICAgICAgICBy
ZXR1cm4gU19PSzsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
d2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKaW5kZXggYzNm
ZGVkNmIxNDIwNDYxNDA0YzFkMjBiNTk4MTQ0NmQwYWQ2YWI3Ni4uZmUyM2I0M2VmNTY3MWVjYmVl
YWZmYjBkNzRhZTFlZDAxYjE1MWI2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2Vi
Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKQEAgLTEzMjIsNyAr
MTMyMiw3IEBAIGJvb2wgV2ViVmlldzo6aGFuZGxlQ29udGV4dE1lbnVFdmVudChXUEFSQU0gd1Bh
cmFtLCBMUEFSQU0gbFBhcmFtKQogICAgIG1fcGFnZS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCkt
PmNsZWFyQ29udGV4dE1lbnUoKTsKIAogICAgIEludFBvaW50IGRvY3VtZW50UG9pbnQobV9wYWdl
LT5tYWluRnJhbWUoKS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKGNvb3JkcykpOwotICAgIEhp
dFRlc3RSZXN1bHQgcmVzdWx0ID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCkt
PmhpdFRlc3RSZXN1bHRBdFBvaW50KGRvY3VtZW50UG9pbnQsIGZhbHNlKTsKKyAgICBIaXRUZXN0
UmVzdWx0IHJlc3VsdCA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oaXRU
ZXN0UmVzdWx0QXRQb2ludChkb2N1bWVudFBvaW50KTsKICAgICBGcmFtZSogdGFyZ2V0RnJhbWUg
PSByZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCkgPyByZXN1bHQuaW5uZXJOb25TaGFyZWROb2Rl
KCktPmRvY3VtZW50KCktPmZyYW1lKCkgOiBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1
c2VkT3JNYWluRnJhbWUoKTsKIAogICAgIHRhcmdldEZyYW1lLT52aWV3KCktPnNldEN1cnNvcihw
b2ludGVyQ3Vyc29yKCkpOwpAQCAtMzU5Nyw3ICszNTk3LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJWaWV3OjplbGVtZW50QXRQb2ludCgKICAgICBJbnRQb2ludCB3ZWJDb3JlUG9p
bnQgPSBJbnRQb2ludChwb2ludC0+eCwgcG9pbnQtPnkpOwogICAgIEhpdFRlc3RSZXN1bHQgcmVz
dWx0ID0gSGl0VGVzdFJlc3VsdCh3ZWJDb3JlUG9pbnQpOwogICAgIGlmIChmcmFtZS0+Y29udGVu
dFJlbmRlcmVyKCkpCi0gICAgICAgIHJlc3VsdCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0
VGVzdFJlc3VsdEF0UG9pbnQod2ViQ29yZVBvaW50LCBmYWxzZSk7CisgICAgICAgIHJlc3VsdCA9
IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQod2ViQ29yZVBvaW50
KTsKICAgICAqZWxlbWVudERpY3Rpb25hcnkgPSBXZWJFbGVtZW50UHJvcGVydHlCYWc6OmNyZWF0
ZUluc3RhbmNlKHJlc3VsdCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3d4L1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvd3gvV2ViRnJhbWUuY3Bw
CmluZGV4IGFhYTc2MTRlZmEzYjY0MTNiNzEwZTBlODVhYWQ5NTFkNmZlOTJmODIuLmI1MDQ2YTcz
MmFiMGJiMDY3NjQxZTg2NzNiMTg4NjljMzRkMTM2M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvd3gvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd3gvV2ViRnJhbWUuY3BwCkBA
IC02OTAsNyArNjkwLDcgQEAgV2ViVmlld0RPTUVsZW1lbnRJbmZvIFdlYkZyYW1lOjpIaXRUZXN0
KGNvbnN0IHd4UG9pbnQmIHBvcykgY29uc3QKICAgICBXZWJWaWV3RE9NRWxlbWVudEluZm8gZG9t
SW5mbzsKIAogICAgIGlmIChtX2ltcGwtPmZyYW1lLT52aWV3KCkpIHsKLSAgICAgICAgV2ViQ29y
ZTo6SGl0VGVzdFJlc3VsdCByZXN1bHQgPSBtX2ltcGwtPmZyYW1lLT5ldmVudEhhbmRsZXIoKS0+
aGl0VGVzdFJlc3VsdEF0UG9pbnQobV9pbXBsLT5mcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRl
bnRzKHBvcyksIGZhbHNlKTsKKyAgICAgICAgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCByZXN1bHQg
PSBtX2ltcGwtPmZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQobV9p
bXBsLT5mcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHBvcykpOwogICAgICAgICBpZiAo
cmVzdWx0LmlubmVyTm9kZSgpKSB7CiAgICAgICAgICAgICBkb21JbmZvLlNldExpbmsocmVzdWx0
LmFic29sdXRlTGlua1VSTCgpLnN0cmluZygpKTsKICAgICAgICAgICAgIGRvbUluZm8uU2V0VGV4
dChyZXN1bHQudGV4dENvbnRlbnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
TmF2aWdhdGlvbkFjdGlvbi5jcHAKaW5kZXggNDI4MTM1NDgxYWZkOWM1MWIzYWJkMjc2Y2U4NjE2
ZDM5NmY4YjQzZS4uMjljNzBkZmI0NjZjN2QwZWQ0ZjE1ZWI0YzkyNGMzZDgyY2Y3MWIxNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcApAQCAt
OTEsNyArOTEsNyBAQCBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246OkluamVjdGVkQnVu
ZGxlTmF2aWdhdGlvbkFjdGlvbihXZWJGcmFtZSogZnJhbWUsCiAgICAgLCBtX21vdXNlQnV0dG9u
KFdlYk1vdXNlRXZlbnQ6Ok5vQnV0dG9uKQogewogICAgIGlmIChjb25zdCBNb3VzZUV2ZW50KiBt
b3VzZUV2ZW50ID0gbW91c2VFdmVudEZvck5hdmlnYXRpb25BY3Rpb24obmF2aWdhdGlvbkFjdGlv
bikpIHsKLSAgICAgICAgbV9oaXRUZXN0UmVzdWx0ID0gSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVz
dWx0OjpjcmVhdGUoZnJhbWUtPmNvcmVGcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJl
c3VsdEF0UG9pbnQobW91c2VFdmVudC0+YWJzb2x1dGVMb2NhdGlvbigpLCBmYWxzZSkpOworICAg
ICAgICBtX2hpdFRlc3RSZXN1bHQgPSBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ6OmNyZWF0
ZShmcmFtZS0+Y29yZUZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2lu
dChtb3VzZUV2ZW50LT5hYnNvbHV0ZUxvY2F0aW9uKCkpKTsKICAgICAgICAgbV9tb3VzZUJ1dHRv
biAgID0gbW91c2VCdXR0b25Gb3JNb3VzZUV2ZW50KG1vdXNlRXZlbnQpOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGY0MGFh
MGEzZTMzYTBmMDQzMTJlNWJmZmJhMDUwZGUxYzM5NGQwYjEuLjhlNmI5ZjBiMzZmNWJhM2E0OTdi
NjViNWEzYjIyYmJmZDY5Y2IyZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTEzMTAsNyArMTMxMCw3IEBAIHN0YXRpYyBib29sIGlzQ29u
dGV4dENsaWNrKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpCiBzdGF0aWMgYm9vbCBo
YW5kbGVDb250ZXh0TWVudUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgcGxhdGZvcm1N
b3VzZUV2ZW50LCBXZWJQYWdlKiBwYWdlKQogewogICAgIEludFBvaW50IHBvaW50ID0gcGFnZS0+
Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhwbGF0Zm9y
bU1vdXNlRXZlbnQucG9zaXRpb24oKSk7Ci0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBwYWdl
LT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRB
dFBvaW50KHBvaW50LCBmYWxzZSk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBwYWdlLT5j
b3JlUGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBv
aW50KHBvaW50KTsKIAogICAgIEZyYW1lKiBmcmFtZSA9IHBhZ2UtPmNvcmVQYWdlKCktPm1haW5G
cmFtZSgpOwogICAgIGlmIChyZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCkpCkBAIC0xNTU1LDcg
KzE1NTUsNyBAQCB2b2lkIFdlYlBhZ2U6OmhpZ2hsaWdodFBvdGVudGlhbEFjdGl2YXRpb24oY29u
c3QgSW50UG9pbnQmIHBvaW50LCBjb25zdCBJbnRTaXplJgogICAgICAgICAgICAgcmV0dXJuOwog
CiAjZWxzZQotICAgICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IG1haW5mcmFtZS0+ZXZlbnRI
YW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KG1haW5mcmFtZS0+dmlldygpLT53aW5kb3dU
b0NvbnRlbnRzKHBvaW50KSwgLyphbGxvd1NoYWRvd0NvbnRlbnQqLyBmYWxzZSwgLyppZ25vcmVD
bGlwcGluZyovIHRydWUpOworICAgICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IG1haW5mcmFt
ZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KG1haW5mcmFtZS0+dmlldygp
LT53aW5kb3dUb0NvbnRlbnRzKHBvaW50KSwgSGl0VGVzdFJlcXVlc3Q6OkRlZmF1bHQgfCBIaXRU
ZXN0UmVxdWVzdDo6QWxsb3dTaGFkb3dDb250ZW50KTsKICAgICAgICAgYWRqdXN0ZWROb2RlID0g
cmVzdWx0LmlubmVyTm9kZSgpOwogI2VuZGlmCiAgICAgICAgIC8vIEZpbmQgdGhlIG5vZGUgdG8g
aGlnaGxpZ2h0LiBUaGlzIGlzIG5vdCB0aGUgc2FtZSBhcyB0aGUgbm9kZSByZXNwb25kaW5nIHRo
ZSB0YXAgZ2VzdHVyZSwgYmVjYXVzZSBtYW55CkBAIC0yNzI0LDcgKzI3MjQsNyBAQCB2b2lkIFdl
YlBhZ2U6OmZpbmRab29tYWJsZUFyZWFGb3JQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYg
cG9pbnQsIGNvbnN0IFdlYgogewogICAgIFVOVVNFRF9QQVJBTShhcmVhKTsKICAgICBGcmFtZSog
bWFpbmZyYW1lID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpOwotICAgIEhpdFRlc3RSZXN1bHQg
cmVzdWx0ID0gbWFpbmZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQo
bWFpbmZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMocG9pbnQpLCAvKmFsbG93U2hhZG93
Q29udGVudCovIGZhbHNlLCAvKmlnbm9yZUNsaXBwaW5nKi8gdHJ1ZSk7CisgICAgSGl0VGVzdFJl
c3VsdCByZXN1bHQgPSBtYWluZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQ
b2ludChtYWluZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhwb2ludCksIEhpdFRlc3RS
ZXF1ZXN0OjpEZWZhdWx0IHwgSGl0VGVzdFJlcXVlc3Q6Oklnbm9yZUNsaXBwaW5nKTsKIAogICAg
IE5vZGUqIG5vZGUgPSByZXN1bHQuaW5uZXJOb2RlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCBjMmYwMTY1Mzc1
OTUzYjUzY2MzY2QxYjllYjQzMWRiNWVjZWI5M2FkLi4wZWRkOTIzZjcyYTYxODgzOTVmOGYzNzkw
OGJhZGIwZmMwZDVkYzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC0zNzUsNyArMzc1LDcgQEAgdm9pZCBXZWJQYWdl
OjpjaGFyYWN0ZXJJbmRleEZvclBvaW50KEludFBvaW50IHBvaW50LCB1aW50NjRfdCYgaW5kZXgp
CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSGl0VGVzdFJlc3VsdCBy
ZXN1bHQgPSBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KHBvaW50
LCBmYWxzZSk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBmcmFtZS0+ZXZlbnRIYW5kbGVy
KCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KHBvaW50KTsKICAgICBmcmFtZSA9IHJlc3VsdC5pbm5l
ck5vblNoYXJlZE5vZGUoKSA/IHJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKS0+ZG9jdW1lbnQo
KS0+ZnJhbWUoKSA6IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFt
ZSgpOwogICAgIAogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBmcmFtZS0+cmFuZ2VGb3JQb2lu
dChyZXN1bHQucm91bmRlZFBvaW50KCkpOwpAQCAtNDY0LDcgKzQ2NCw3IEBAIHZvaWQgV2ViUGFn
ZTo6cGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIGZs
b2F0UG9pbnQpCiAKICAgICAvLyBGaW5kIHRoZSBmcmFtZSB0aGUgcG9pbnQgaXMgb3Zlci4KICAg
ICBJbnRQb2ludCBwb2ludCA9IHJvdW5kZWRJbnRQb2ludChmbG9hdFBvaW50KTsKLSAgICBIaXRU
ZXN0UmVzdWx0IHJlc3VsdCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0
UG9pbnQoZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhwb2ludCksIGZhbHNlKTsKKyAg
ICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJl
c3VsdEF0UG9pbnQoZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhwb2ludCkpOwogICAg
IGZyYW1lID0gcmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpID8gcmVzdWx0LmlubmVyTm9uU2hh
cmVkTm9kZSgpLT5kb2N1bWVudCgpLT5mcmFtZSgpIDogbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIo
KS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAKICAgICBJbnRQb2ludCB0cmFuc2xhdGVkUG9pbnQg
PSBmcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHBvaW50KTsKQEAgLTcyNyw3ICs3Mjcs
NyBAQCB2b2lkIFdlYlBhZ2U6OnNob3VsZERlbGF5V2luZG93T3JkZXJpbmdFdmVudChjb25zdCBX
ZWJLaXQ6OldlYk1vdXNlRXZlbnQmIGV2ZW50LAogICAgICAgICByZXR1cm47CiAKICNpZiBFTkFC
TEUoRFJBR19TVVBQT1JUKQotICAgIEhpdFRlc3RSZXN1bHQgaGl0UmVzdWx0ID0gZnJhbWUtPmV2
ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChmcmFtZS0+dmlldygpLT53aW5kb3dU
b0NvbnRlbnRzKGV2ZW50LnBvc2l0aW9uKCkpLCB0cnVlKTsKKyAgICBIaXRUZXN0UmVzdWx0IGhp
dFJlc3VsdCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoZnJh
bWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhldmVudC5wb3NpdGlvbigpKSwgSGl0VGVzdFJl
cXVlc3Q6OkRlZmF1bHQgfCBIaXRUZXN0UmVxdWVzdDo6QWxsb3dTaGFkb3dDb250ZW50KTsKICAg
ICBpZiAoaGl0UmVzdWx0LmlzU2VsZWN0ZWQoKSkKICAgICAgICAgcmVzdWx0ID0gZnJhbWUtPmV2
ZW50SGFuZGxlcigpLT5ldmVudE1heVN0YXJ0RHJhZyhwbGF0Zm9ybShldmVudCkpOwogI2VuZGlm
CkBAIC03NDAsNyArNzQwLDcgQEAgdm9pZCBXZWJQYWdlOjphY2NlcHRzRmlyc3RNb3VzZShpbnQg
ZXZlbnROdW1iZXIsIGNvbnN0IFdlYktpdDo6V2ViTW91c2VFdmVudCYgZXYKICAgICBpZiAoIWZy
YW1lKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgSGl0VGVzdFJlc3VsdCBoaXRSZXN1bHQg
PSBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGZyYW1lLT52aWV3
KCktPndpbmRvd1RvQ29udGVudHMoZXZlbnQucG9zaXRpb24oKSksIHRydWUpOworICAgIEhpdFRl
c3RSZXN1bHQgaGl0UmVzdWx0ID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0
QXRQb2ludChmcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKGV2ZW50LnBvc2l0aW9uKCkp
LCBIaXRUZXN0UmVxdWVzdDo6RGVmYXVsdCB8IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd1NoYWRvd0Nv
bnRlbnQpOwogICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+c2V0QWN0aXZhdGlvbkV2ZW50TnVt
YmVyKGV2ZW50TnVtYmVyKTsKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAgIGlmIChoaXRS
ZXN1bHQuaXNTZWxlY3RlZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktp
dDIuZGVmIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCmluZGV4IDk3NWE3M2QzODc2
ZWI0MzZlYjRiZWI5MjA5ODY1ZjE5OGViMDViYzEuLjhlNTYwOTFiNTg3MTI2NjY4YzBjODQwZWVh
NmU1ZGYzMDlkMjUzNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRl
ZgorKysgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKQEAgLTI1OSw3ICsyNTksNyBA
QCBFWFBPUlRTCiAgICAgICAgID8/MUNvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyQFdlYkNvcmVA
QE1BRUBYWgogICAgICAgICA/Y29udGV4dERlc3Ryb3llZEBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNl
cnZlckBXZWJDb3JlQEBVQUVYWFoKICAgICAgICAgPz8wQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2
ZXJAV2ViQ29yZUBAUUFFQFBBVlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRAMUBAWgotICAgICAgICA/
bm9kZXNGcm9tUmVjdEBEb2N1bWVudEBXZWJDb3JlQEBRQkU/QVY/JFBhc3NSZWZQdHJAVk5vZGVM
aXN0QFdlYkNvcmVAQEBXVEZAQEhISUlJSV9OMDBAWgorICAgICAgICA/bm9kZXNGcm9tUmVjdEBE
b2N1bWVudEBXZWJDb3JlQEBRQkU/QVY/JFBhc3NSZWZQdHJAVk5vZGVMaXN0QFdlYkNvcmVAQEBX
VEZAQEhISUlJSUlAWgogICAgICAgICA/c2VsZWN0aW9uU3RhcnRIYXNNYXJrZXJGb3JARWRpdG9y
QFdlYkNvcmVAQFFCRV9OVzRNYXJrZXJUeXBlQERvY3VtZW50TWFya2VyQDJASEhAWgogICAgICAg
ICA/d2Via2l0V2lsbEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnRARG9jdW1lbnRAV2ViQ29yZUBA
UUFFWFBBVkVsZW1lbnRAMkBAWgogICAgICAgICA/d2Via2l0RGlkRW50ZXJGdWxsU2NyZWVuRm9y
RWxlbWVudEBEb2N1bWVudEBXZWJDb3JlQEBRQUVYUEFWRWxlbWVudEAyQEBaCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYgYi9Tb3VyY2UvV2ViS2l0Mi93
aW4vV2ViS2l0MkNGTGl0ZS5kZWYKaW5kZXggMzNlOGRlYjgwNzgzOWQzNGFhYWNiNDU1MTlmMDgz
ZGQzOWE2YTZjYS4uMDlmYjAzMjcyODBiYWNjOGI0ZDU3MGIyMzIwZmUwOTJiOWI4NzAwYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgpAQCAtMjUzLDcgKzI1Myw3IEBAIEVYUE9S
VFMKICAgICAgICAgP3VzZXJQcmVmZXJyZWRMYW5ndWFnZXNAV2ViQ29yZUBAWUE/QVY/JFZlY3Rv
ckBWU3RyaW5nQFdURkBAJDBBQEBXVEZAQFhaCiAgICAgICAgID91dGY4QFN0cmluZ0BXVEZAQFFC
RT9BVkNTdHJpbmdAMkBfTkBaCiAgICAgICAgID92aWV3QERvY3VtZW50QFdlYkNvcmVAQFFCRVBB
VkZyYW1lVmlld0AyQFhaCi0gICAgICAgID9ub2Rlc0Zyb21SZWN0QERvY3VtZW50QFdlYkNvcmVA
QFFCRT9BVj8kUGFzc1JlZlB0ckBWTm9kZUxpc3RAV2ViQ29yZUBAQFdURkBASEhJSUlJX04wMEBa
CisgICAgICAgID9ub2Rlc0Zyb21SZWN0QERvY3VtZW50QFdlYkNvcmVAQFFCRT9BVj8kUGFzc1Jl
ZlB0ckBWTm9kZUxpc3RAV2ViQ29yZUBAQFdURkBASEhJSUlJSUBaCiAgICAgICAgID9zZWxlY3Rp
b25TdGFydEhhc01hcmtlckZvckBFZGl0b3JAV2ViQ29yZUBAUUJFX05XNE1hcmtlclR5cGVARG9j
dW1lbnRNYXJrZXJAMkBISEBaCiAgICAgICAgID9yZXN0cmljdFNjYWxlRmFjdG9yVG9Jbml0aWFs
U2NhbGVJZk5vdFVzZXJTY2FsYWJsZUBXZWJDb3JlQEBZQVhBQVVWaWV3cG9ydEF0dHJpYnV0ZXNA
MUBAWgogICAgICAgICA/cmVzdHJpY3RNaW5pbXVtU2NhbGVGYWN0b3JUb1ZpZXdwb3J0U2l6ZUBX
ZWJDb3JlQEBZQVhBQVVWaWV3cG9ydEF0dHJpYnV0ZXNAMUBWSW50U2l6ZUAxQEBaCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyIGIvU291cmNlL2F1dG90b29scy9z
eW1ib2xzLmZpbHRlcgppbmRleCAxYTIxZWY5ZWY2MTkxMTg2NDg4Zjc4ZWNiZmZmNDZjNWNjMzA2
YmFmLi5hOTE4YzhjYjI5MDE4MmIzOTFiYTZkMmY5OTZlODViMmU0MDhhODQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCisrKyBiL1NvdXJjZS9hdXRvdG9vbHMv
c3ltYm9scy5maWx0ZXIKQEAgLTE2Miw3ICsxNjIsNyBAQCBfWk43V2ViQ29yZTIyUnVudGltZUVu
YWJsZWRGZWF0dXJlczE4aXNTaGFkb3dET01FbmFibGVkRTsKIF9aTjdXZWJDb3JlMjJSdW50aW1l
RW5hYmxlZEZlYXR1cmVzMjJpc0NTU0V4Y2x1c2lvbnNFbmFibGVkRTsKIF9aTjdXZWJDb3JlMjJS
dW50aW1lRW5hYmxlZEZlYXR1cmVzMjJpc0RpYWxvZ0VsZW1lbnRFbmFibGVkRTsKIF9aTjdXZWJD
b3JlMjJSdW50aW1lRW5hYmxlZEZlYXR1cmVzMzdpc0F1dGhvclNoYWRvd0RPTUZvckFueUVsZW1l
bnRFbmFibGVkRTsKLV9aTks3V2ViQ29yZThEb2N1bWVudDEzbm9kZXNGcm9tUmVjdEVpaWpqampi
YmI7CitfWk5LN1dlYkNvcmU4RG9jdW1lbnQxM25vZGVzRnJvbVJlY3RFaWlqampqajsKIF9aTjdX
ZWJDb3JlNHRvSlNFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTlNf
OE5vZGVMaXN0RTsKIF9aTks3V2ViQ29yZTZFZGl0b3IyNnNlbGVjdGlvblN0YXJ0SGFzTWFya2Vy
Rm9yRU5TXzE0RG9jdW1lbnRNYXJrZXIxME1hcmtlclR5cGVFaWk7CiBfWk43V2ViQ29yZThEb2N1
bWVudDMzd2Via2l0RGlkRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50RVBOU183RWxlbWVudEU7CmRp
ZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggNTdjOWZiM2YyODRmZGVlMzNl
ZmY3N2VkMjBiNmEyMDNmMmZhNmFjNS4uOWU0MmRmMTFiNjdjM2MwNTc3NWVlOTUyMzBhNjdmMDI0
ZDEwNzE3MiAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE0IEBACisyMDEyLTA5LTA1ICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5A
bm9raWEuY29tPgorCisgICAgICAgIFNpbXBsaWZ5IGhpdFRlc3RSZXN1bHRBdFBvaW50IGFuZCBu
b2Rlc0Zyb21SZWN0IEFQSXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTk1NzIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVXBkYXRlIGV4cG9ydGVkIHN5bWJvbHMuCisKKyAgICAgICAgKiBTb3VyY2UvYXV0
b3Rvb2xzL3N5bWJvbHMuZmlsdGVyOgorCiAyMDEyLTA5LTAzICBBbGxhbiBTYW5kZmVsZCBKZW5z
ZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgogCiAgICAgICAgIEFsbG93IGNoaWxkLWZyYW1l
IGNvbnRlbnQgaW4gaGl0LXRlc3RzLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162720</attachid>
            <date>2012-09-07 02:57:03 -0700</date>
            <delta_ts>2012-09-07 06:04:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95720-20120907115632.patch</filename>
            <type>text/plain</type>
            <size>64320</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3ODQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmVmNDQyZjc1NzcwODU5
YzZkYTgzZGMzMThlNzlmY2ViMzljZDI2NC4uYTYyOTkxMTVhOGJmY2RjNzc2MzBmN2JiMjEyOWFm
MDc1ZThjNzlkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTA5LTA1ICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgorCisgICAgICAgIFNp
bXBsaWZ5IGhpdFRlc3RSZXN1bHRBdFBvaW50IGFuZCBub2Rlc0Zyb21SZWN0IEFQSXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NzIwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGV4aXN0aW5nIEFQ
SSB3YXMgb3ZlcmxvYWRlZCBhbmQgY291bGQgYmUgc2ltcGxpZmllZCBieSBwYXNzaW5nIGFsbCB0
aGUgYm9vbCBhcmd1bWVudHMgaW4gCisgICAgICAgIGEgSGl0VGVzdFJlcXVlc3QgYXJndW1lbnQu
IFRoaXMgc2hvdWxkIGFsc28gaGVscCBjbGFyaWZ5IHRoZSBjYWxsIGFzIHRoZSBlbnVtIHZhbHVl
cyBleHBsaWNpdGVseQorICAgICAgICBzdGF0ZSB3aGF0IHRoZXkgZG8uCisKKyAgICAgICAgKiBX
ZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLm9yZGVyOgorICAgICAgICAqIGRvbS9E
b2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6bm9kZXNGcm9tUmVjdCk6
CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChEb2N1bWVudCk6CisgICAgICAg
ICogcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGV4dE1lbnVDb250cm9sbGVyOjpjcmVhdGVDb250ZXh0TWVudSk6CisgICAgICAgICogcGFnZS9E
cmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6Y2Fu
UHJvY2Vzc0RyYWcpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJh
Zyk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRIYW5kbGVyOjp1cGRhdGVBdXRvc2Nyb2xsUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RXZlbnRIYW5kbGVyOjpoaXRUZXN0UmVzdWx0QXRQb2ludCk6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudEhhbmRsZXI6OmJlc3RDbGlja2FibGVOb2RlRm9yVG91Y2hQb2ludCk6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudEhhbmRsZXI6OmJlc3RDb250ZXh0TWVudU5vZGVGb3JUb3VjaFBvaW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6YmVzdFpvb21hYmxlQXJlYUZvclRvdWNo
UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVUb3VjaEV2ZW50
KToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAgICAoRXZlbnRIYW5kbGVy
KToKKyAgICAgICAgKiBwYWdlL0ZvY3VzQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojp1cGRhdGVGb2N1c0NhbmRpZGF0ZUlmTmVlZGVkKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjp2aXNpYmxlUG9zaXRpb25Gb3JQb2ludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZTo6ZG9jdW1lbnRBdFBvaW50KToKKyAgICAgICAgKiBwYWdl
L1RvdWNoRGlzYW1iaWd1YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmluZEdvb2RUb3Vj
aFRhcmdldHMpOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0UmVxdWVzdC5oOgorICAgICAg
ICAoSGl0VGVzdFJlcXVlc3QpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6bm9kZXNGcm9tUmVjdCk6CisKIDIwMTItMDktMDcg
IFlvc2hpZnVtaSBJbm91ZSAgPHlvc2luQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZSBzaG91
bGQgaGF2ZSBhIGxvY2FsaXplZCBzdHJpbmcgb2YgZW1wdHkgZm9yIGRhdGUgdGltZSBmaWVsZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKaW5kZXggZjQzYTIwYzM0ODZhNzU2NjIxMzU3NmNk
ZDMxNmM3YjRlODY2NWNlOC4uYTU5ZjlhNjc1ZTZlNjExZGMzNWRiMGU0MGU1ZjI2NmUyODhiYjA4
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTIt
MDktMDUgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+CisK
KyAgICAgICAgU2ltcGxpZnkgaGl0VGVzdFJlc3VsdEF0UG9pbnQgYW5kIG5vZGVzRnJvbVJlY3Qg
QVBJcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU3
MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRh
dGUgY2FsbHMgdG8gbmV3IEFQSS4KKworICAgICAgICAqIEFwaS9XZWJQYWdlLmNwcDoKKyAgICAg
ICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZVByaXZhdGU6OmNvbnRleHROb2RlKToKKyAg
ICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZVByaXZhdGU6Om5vZGVGb3Jab29tVW5k
ZXJQb2ludCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VQcml2YXRlOjpo
YW5kbGVNb3VzZUV2ZW50KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZTo6
bm9kZUF0UG9pbnQpOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvRmF0RmluZ2Vycy5jcHA6Cisg
ICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkZhdEZpbmdlcnM6OmdldE5vZGVzRnJvbVJlY3Qp
OgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpGYXRGaW5nZXJzOjpnZXRSZWxldmFudElu
Zm9Gcm9tUG9pbnQpOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvU2VsZWN0aW9uSGFuZGxlci5j
cHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OnZpc2libGVQb3NpdGlvbkZvclBvaW50
SWdub3JpbmdDbGlwcGluZyk6CisKIDIwMTItMDktMDYgIENyeXN0YWwgWmhhbmcgIDxoYWl6aGFu
Z0ByaW0uY29tPgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSAgSW1wbGVtZW50IGEgY29sb3IgcGlj
a2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGRjYTQ4Njg3MzViZjJlMTExZWE2OGQ3
ZWQxNDk0ZWNlOWI4YTY1MzQuLmI3YTI5YmIwYTdjMmQ2NDQyODk2ZmM4OTNjZWVjYzg1MGFjZDE1
Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTItMDkt
MDUgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+CisKKyAg
ICAgICAgU2ltcGxpZnkgaGl0VGVzdFJlc3VsdEF0UG9pbnQgYW5kIG5vZGVzRnJvbVJlY3QgQVBJ
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU3MjAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUg
Y2FsbHMgdG8gbmV3IEFQSS4KKworICAgICAgICAqIHNyYy9Db250ZXh0TWVudUNsaWVudEltcGwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpzZWxlY3RNaXNzcGVsbGVkV29yZCk6CisgICAgICAgICog
c3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9h
ZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToK
KyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJh
bWVJbXBsOjpjaGFyYWN0ZXJJbmRleEZvclBvaW50KToKKyAgICAgICAgKiBzcmMvV2ViUGx1Z2lu
Q29udGFpbmVySW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbkNvbnRhaW5lcklt
cGw6OmlzUmVjdFRvcG1vc3QpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpoYW5kbGVNb3VzZVVwKToKKyAgICAgICAgKFdlYktp
dDo6V2ViVmlld0ltcGw6OmNvbXB1dGVCbG9ja0JvdW5kcyk6CisKIDIwMTItMDktMDcgIFlvc2hp
ZnVtaSBJbm91ZSAgPHlvc2luQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZSBzaG91bGQgaGF2
ZSBhIGxvY2FsaXplZCBzdHJpbmcgb2YgZW1wdHkgZm9yIGRhdGUgdGltZSBmaWVsZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hh
bmdlTG9nCmluZGV4IDM2YzhjYmU3MTM0Mjk3NGU2NmMzMWZjNmY2MmY3MGVmMWMwZDFkOWYuLjgx
ZmY3M2U4MzAwNTY4YTRlZjZmZmM1YTkzMzQ4YWVhYTRhMzQzYTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNSBAQAorMjAxMi0wOS0wNSAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxs
YW4uamVuc2VuQG5va2lhLmNvbT4KKworICAgICAgICBTaW1wbGlmeSBoaXRUZXN0UmVzdWx0QXRQ
b2ludCBhbmQgbm9kZXNGcm9tUmVjdCBBUElzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05NTcyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBjYWxscyB0byBuZXcgQVBJLgorCisgICAgICAgICog
ZXdrL2V3a19mcmFtZS5jcHA6CisgICAgICAgIChld2tfZnJhbWVfaGl0X3Rlc3RfbmV3KToKKwog
MjAxMi0wOS0wNyAgS2lob25nIEt3b24gIDxraWhvbmcua3dvbkBzYW1zdW5nLmNvbT4KIAogICAg
ICAgICBbRUZMXSBTdXBwb3J0IHRoZSBwZXJtaXNzaW9uIGZ1bmN0aW9uIG9mIHRoZSBXZWIgTm90
aWZpY2F0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDQyZGU3ODZmOTliMjczMjhmYmIxMzdhNzg0
YmIxNjJjYzcyOTdiZTcuLmIxMDY3YjcwYzQ5Y2I1MDNmYTVlODIwZDA4Yjk4ZTQ1N2NiZDFmYjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wOS0wNSAgQWxsYW4gU2Fu
ZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQG5va2lhLmNvbT4KKworICAgICAgICBTaW1wbGlm
eSBoaXRUZXN0UmVzdWx0QXRQb2ludCBhbmQgbm9kZXNGcm9tUmVjdCBBUElzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTcyMAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBjYWxscyB0byBuZXcg
QVBJLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06
CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6YWN0aW9uRGljdGlvbmFyeSk6CisgICAg
ICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgZWxl
bWVudEF0UG9pbnQ6YWxsb3dTaGFkb3dDb250ZW50Ol0pOgorCiAyMDEyLTA5LTA1ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUGFydCAyIG9mIHJlbW92aW5nIFBsYXRm
b3JtU3RyaW5nLmgsIHJlbW92ZSBQbGF0Zm9ybVN0cmluZy5oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDRi
YmFmYWEzZmRmMTRjYTBjZjZiYWY5YjBiMTU3NTNiOGRjZGIwYjkuLmRjMzhmODQxYWQ4MTg2YmIy
OWEzOWEzYmFjNTkxZjM1MDljNGU2ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAK
KzIwMTItMDktMDUgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tpYS5j
b20+CisKKyAgICAgICAgU2ltcGxpZnkgaGl0VGVzdFJlc3VsdEF0UG9pbnQgYW5kIG5vZGVzRnJv
bVJlY3QgQVBJcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTU3MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVcGRhdGUgY2FsbHMgdG8gbmV3IEFQSS4KKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3Bw
OgorICAgICAgICAoUVdlYkZyYW1lOjpoaXRUZXN0Q29udGVudCk6CisgICAgICAgICogQXBpL3F3
ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6aGFuZGxlU29mdHdhcmVJbnB1
dFBhbmVsKToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6VG91Y2hBZGp1c3Rlcjo6ZmluZENh
bmRpZGF0ZVBvaW50Rm9yVG91Y2gpOgorICAgICAgICAoUVdlYlBhZ2U6OnVwZGF0ZVBvc2l0aW9u
RGVwZW5kZW50QWN0aW9ucyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNw
YXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorCiAyMDEyLTA5LTA1ICBTYW0g
V2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUGFydCAyIG9mIHJlbW92aW5nIFBs
YXRmb3JtU3RyaW5nLmgsIHJlbW92ZSBQbGF0Zm9ybVN0cmluZy5oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5k
ZXggZmVmMzkxZTc0YzFiZDNiZDUwOWU2OWU1MzE0MTM0MmJjOGQ3Yjc5OC4uZDM2NjcwNTYzZjVm
OGUyOTA0MDNkODBiZGYxNjM1YWRiNjY2YTg4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93
aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE4IEBACisyMDEyLTA5LTA1ICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5A
bm9raWEuY29tPgorCisgICAgICAgIFNpbXBsaWZ5IGhpdFRlc3RSZXN1bHRBdFBvaW50IGFuZCBu
b2Rlc0Zyb21SZWN0IEFQSXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTk1NzIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVXBkYXRlIGNhbGxzIHRvIG5ldyBBUEkuCisKKyAgICAgICAgKiBXZWJBY3Rpb25Q
cm9wZXJ0eUJhZy5jcHA6CisgICAgICAgIChXZWJBY3Rpb25Qcm9wZXJ0eUJhZzo6UmVhZCk6Cisg
ICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3OjpoYW5kbGVDb250ZXh0TWVu
dUV2ZW50KToKKyAgICAgICAgKFdlYlZpZXc6OmVsZW1lbnRBdFBvaW50KToKKwogMjAxMi0wOS0w
NSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFBhcnQgMiBvZiByZW1v
dmluZyBQbGF0Zm9ybVN0cmluZy5oLCByZW1vdmUgUGxhdGZvcm1TdHJpbmcuaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxv
ZwppbmRleCA0YTI2YmIxNjIxMmNhNzNjMjMyMTYyNGEzNjc0M2I4ZTEzNzAzZTc3Li44ZTQ4ZWJh
MWFiY2Q5OWFhNWU1YjU1YjdjOTg1MWQ4NDI0MGJjNTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3d4L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE1IEBACisyMDEyLTA5LTA1ICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5z
ZW5Abm9raWEuY29tPgorCisgICAgICAgIFNpbXBsaWZ5IGhpdFRlc3RSZXN1bHRBdFBvaW50IGFu
ZCBub2Rlc0Zyb21SZWN0IEFQSXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTk1NzIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVXBkYXRlIGNhbGxzIHRvIG5ldyBBUEkuCisKKyAgICAgICAgKiBXZWJGcmFt
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpIaXRUZXN0KToKKwogMjAxMi0wOS0w
NSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFBhcnQgMiBvZiByZW1v
dmluZyBQbGF0Zm9ybVN0cmluZy5oLCByZW1vdmUgUGxhdGZvcm1TdHJpbmcuaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IGFjN2E1MmUwODU5YTA4OTdiYjllM2UyMTMyNWQ5ODY5MWI0NWIyMjAuLjlkOTMwNjcwN2Yw
NzRlZGQ4NTFkMWE2NmY3YTczZjA3MTUwYjk1ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBA
QAorMjAxMi0wOS0wNSAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQG5va2lh
LmNvbT4KKworICAgICAgICBTaW1wbGlmeSBoaXRUZXN0UmVzdWx0QXRQb2ludCBhbmQgbm9kZXNG
cm9tUmVjdCBBUElzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05NTcyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFVwZGF0ZSBjYWxscyB0byBuZXcgQVBJIGFuZCB1cGRhdGUgZXhwb3J0ZWQgc3ltYm9scy4K
KworICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZp
Z2F0aW9uQWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0
aW9uQWN0aW9uOjpJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6aGFuZGxlQ29u
dGV4dE1lbnVFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmhpZ2hsaWdodFBvdGVu
dGlhbEFjdGl2YXRpb24pOiBDb3JyZWN0cyB0aGUgbWlzcGxhY2VkIGFyZ3VtZW50cyB3aGlsZSBj
b252ZXJ0aW5nIHRoZW0uCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmZpbmRab29tYWJsZUFy
ZWFGb3JQb2ludCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFj
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjaGFyYWN0ZXJJbmRleEZvclBvaW50KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2hvdWxkRGVsYXlXaW5kb3dPcmRlcmlu
Z0V2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YWNjZXB0c0ZpcnN0TW91c2UpOgor
ICAgICAgICAqIHdpbi9XZWJLaXQyLmRlZjoKKyAgICAgICAgKiB3aW4vV2ViS2l0MkNGTGl0ZS5k
ZWY6CisKIDIwMTItMDktMDcgIE1pa2hhaWwgUG96ZG55YWtvdiAgPG1pa2hhaWwucG96ZG55YWtv
dkBpbnRlbC5jb20+CiAKICAgICAgICAgW1dLMl0gQVBJQ2xpZW50VHJhaXRzPFdLUGFnZUxvYWRl
ckNsaWVudD4gYW5kIEFQSUNsaWVudFRyYWl0czxXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQ+IGFy
ZSBub3QgaW5pdGlhbGl6ZWQgcHJvcGVybHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggYTY1ZDVk
NTU0YmM0ZTcyMTcxMDQ3NDE1MTQ4YzgyY2YwMDQ5YzM0My4uYjQ3NjlmOTE4MjU0OTFkNDIzNzY2
MTg4YmZjOTk5ZGViMmYzMWU1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTE1OCw3ICsxNTgs
NyBAQCBfX1pON1dlYkNvcmUxMkV2ZW50SGFuZGxlcjE0c2Nyb2xsT3ZlcmZsb3dFTlNfMTVTY3Jv
bGxEaXJlY3Rpb25FTlNfMTdTY3JvbGxHcmFudQogX19aTjdXZWJDb3JlMTJFdmVudEhhbmRsZXIx
NWhhbmRsZUFjY2Vzc0tleUVSS05TXzIxUGxhdGZvcm1LZXlib2FyZEV2ZW50RQogX19aTjdXZWJD
b3JlMTJFdmVudEhhbmRsZXIxNmhhbmRsZVdoZWVsRXZlbnRFUktOU18xOFBsYXRmb3JtV2hlZWxF
dmVudEUKIF9fWk43V2ViQ29yZTEyRXZlbnRIYW5kbGVyMTdzY3JvbGxSZWN1cnNpdmVseUVOU18x
NVNjcm9sbERpcmVjdGlvbkVOU18xN1Njcm9sbEdyYW51bGFyaXR5RVBOU180Tm9kZUUKLV9fWk43
V2ViQ29yZTEyRXZlbnRIYW5kbGVyMjBoaXRUZXN0UmVzdWx0QXRQb2ludEVSS05TXzIxRnJhY3Rp
b25hbExheW91dFBvaW50RWJiTlNfMTdIaXRUZXN0U2Nyb2xsYmFyc0VqUktOU18yMEZyYWN0aW9u
YWxMYXlvdXRTaXplRQorX19aTjdXZWJDb3JlMTJFdmVudEhhbmRsZXIyMGhpdFRlc3RSZXN1bHRB
dFBvaW50RVJLTlNfMjFGcmFjdGlvbmFsTGF5b3V0UG9pbnRFalJLTlNfMjBGcmFjdGlvbmFsTGF5
b3V0U2l6ZUUKIF9fWk43V2ViQ29yZTEyRXZlbnRIYW5kbGVyMjFoYW5kbGVNb3VzZVByZXNzRXZl
bnRFUktOU18xOFBsYXRmb3JtTW91c2VFdmVudEUKIF9fWk43V2ViQ29yZTEyRXZlbnRIYW5kbGVy
MjNoYW5kbGVNb3VzZVJlbGVhc2VFdmVudEVSS05TXzE4UGxhdGZvcm1Nb3VzZUV2ZW50RQogX19a
TjdXZWJDb3JlMTJFdmVudEhhbmRsZXIyNGxvZ2ljYWxTY3JvbGxSZWN1cnNpdmVseUVOU18yMlNj
cm9sbExvZ2ljYWxEaXJlY3Rpb25FTlNfMTdTY3JvbGxHcmFudWxhcml0eUVQTlNfNE5vZGVFCkBA
IC0xMzU0LDcgKzEzNTQsNyBAQCBfX1pOSzdXZWJDb3JlN1J1bkxvb3A5VGltZXJCYXNlOGlzQWN0
aXZlRXYKIF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQxMHJlbmRlclZpZXdFdgogX19aTks3V2ViQ29y
ZThEb2N1bWVudDExY29tcGxldGVVUkxFUktOM1dURjZTdHJpbmdFCiBfX1pOSzdXZWJDb3JlOERv
Y3VtZW50MTNheE9iamVjdENhY2hlRXYKLV9fWk5LN1dlYkNvcmU4RG9jdW1lbnQxM25vZGVzRnJv
bVJlY3RFaWlqampqYmJiCitfX1pOSzdXZWJDb3JlOERvY3VtZW50MTNub2Rlc0Zyb21SZWN0RWlp
ampqamoKIF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQxNGdldEVsZW1lbnRCeUlkRVJLTjNXVEYxMkF0
b21pY1N0cmluZ0UKIF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQzMWRpc3BsYXlTdHJpbmdNb2RpZmll
ZEJ5RW5jb2RpbmdFUktOM1dURjZTdHJpbmdFCiBfX1pOSzdXZWJDb3JlOERvY3VtZW50NGJvZHlF
dgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlciBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUub3JkZXIKaW5kZXggYTI0MzQzMjlmOWYwODlhMjYyMTVmNjZmZWU0ZGZiZTNi
MTYxNDdiZS4uNGQwOWVhZDkzNzU2YjJlNTAzY2Q4ZWY0MmEyZDE2OTQyZGIyYjExMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLm9yZGVyCkBAIC0yMjc4NSw3ICsyMjc4NSw3IEBAIF9fWk5LN1dlYkNvcmUxMk5vZGVJ
dGVyYXRvcjIwdXBkYXRlRm9yTm9kZVJlbW92YWxFUE5TXzROb2RlRVJOUzBfMTFOb2RlUG9pbnRl
ckUKIF9fWk43V2ViQ29yZTI3anNOb2RlSXRlcmF0b3JSZWZlcmVuY2VOb2RlRVBOM0pTQzlFeGVj
U3RhdGVFTlMwXzdKU1ZhbHVlRVJLTlMwXzEwSWRlbnRpZmllckUKIF9fWk5LN1dlYkNvcmU0Tm9k
ZTIwdHJhdmVyc2VQcmV2aW91c05vZGVFUEtTMF8KIF9fWk43V2ViQ29yZTM3anNOb2RlSXRlcmF0
b3JQcm90b3R5cGVGdW5jdGlvbkRldGFjaEVQTjNKU0M5RXhlY1N0YXRlRQotX19aTks3V2ViQ29y
ZThEb2N1bWVudDEzbm9kZXNGcm9tUmVjdEVpaWpqampiYmIKK19fWk5LN1dlYkNvcmU4RG9jdW1l
bnQxM25vZGVzRnJvbVJlY3RFaWlqampqagogX19aTks3V2ViQ29yZThEb2N1bWVudDE3aGFuZGxl
WmVyb1BhZGRpbmdFUktOU18xNEhpdFRlc3RSZXF1ZXN0RVJOU18xM0hpdFRlc3RSZXN1bHRFCiBf
X1pOM1dURjIxTGlzdEhhc2hTZXRUcmFuc2xhdG9ySU5TXzZSZWZQdHJJTjdXZWJDb3JlNE5vZGVF
RUVMbTI1NkVOU183UHRySGFzaElTNF9FRUU5dHJhbnNsYXRlRVJQTlNfMTVMaXN0SGFzaFNldE5v
ZGVJUzRfTG0yNTZFRUVSS1M0X1BOU18yNExpc3RIYXNoU2V0Tm9kZUFsbG9jYXRvcklTNF9MbTI1
NkVFRQogX19aTjdXZWJDb3JlMjFTdGF0aWNIYXNoU2V0Tm9kZUxpc3RDMUVSTjNXVEYxMUxpc3RI
YXNoU2V0SU5TMV82UmVmUHRySU5TXzROb2RlRUVFTG0yNTZFTlMxXzdQdHJIYXNoSVM1X0VFRUUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDQ5ZDAwYzViYWJmMDUzNDFhZmI1YjU2MGRhODAw
NDNhYmU4YTc3M2IuLjg4N2I0ZjY1NWZlN2VmYzkzYzIzZDlkMzYzYTRiM2I4ODhhYzgyNGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMTM4NCw3ICsxMzg0LDcgQEAgU3RyaW5nIERvY3Vt
ZW50OjpzdWdnZXN0ZWRNSU1FVHlwZSgpIGNvbnN0CiAvLyAqIG1ha2luZyBpdCByZWNlaXZlIGEg
cmVjdCBhcyBwYXJhbWV0ZXIsIGkuZS4gbm9kZXNGcm9tUmVjdCh4LCB5LCB3LCBoKTsKIC8vICog
bWFraW5nIGl0IHJlY2VpdmUgdGhlIGV4cGFkaW5nIHNpemUgb2YgZWFjaCBkaXJlY3Rpb24gc2Vw
YXJhdGVseSwKIC8vICAgaS5lLiBub2Rlc0Zyb21SZWN0KHgsIHksIHRvcFNpemUsIHJpZ2h0U2l6
ZSwgYm90dG9tU2l6ZSwgbGVmdFNpemUpOwotUGFzc1JlZlB0cjxOb2RlTGlzdD4gRG9jdW1lbnQ6
Om5vZGVzRnJvbVJlY3QoaW50IGNlbnRlclgsIGludCBjZW50ZXJZLCB1bnNpZ25lZCB0b3BQYWRk
aW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcsIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2ln
bmVkIGxlZnRQYWRkaW5nLCBib29sIGlnbm9yZUNsaXBwaW5nLCBib29sIGFsbG93U2hhZG93Q29u
dGVudCwgYm9vbCBhbGxvd0NoaWxkRnJhbWVDb250ZW50KSBjb25zdAorUGFzc1JlZlB0cjxOb2Rl
TGlzdD4gRG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QoaW50IGNlbnRlclgsIGludCBjZW50ZXJZLCB1
bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcsIHVuc2lnbmVkIGJvdHRv
bVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nLCBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJl
cXVlc3RUeXBlIGhpdFR5cGUpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFNoYXJlIGNvZGUgYmV0
d2VlbiB0aGlzLCBlbGVtZW50RnJvbVBvaW50IGFuZCBjYXJldFJhbmdlRnJvbVBvaW50LgogICAg
IGlmICghcmVuZGVyZXIoKSkKQEAgLTEzOTksMTkgKzEzOTksMTEgQEAgUGFzc1JlZlB0cjxOb2Rl
TGlzdD4gRG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QoaW50IGNlbnRlclgsIGludCBjZW50ZXJZLCB1
bnNpZ25lZAogICAgIGZsb2F0IHpvb21GYWN0b3IgPSBmcmFtZS0+cGFnZVpvb21GYWN0b3IoKTsK
ICAgICBMYXlvdXRQb2ludCBwb2ludCA9IHJvdW5kZWRMYXlvdXRQb2ludChGbG9hdFBvaW50KGNl
bnRlclggKiB6b29tRmFjdG9yICsgdmlldygpLT5zY3JvbGxYKCksIGNlbnRlclkgKiB6b29tRmFj
dG9yICsgdmlldygpLT5zY3JvbGxZKCkpKTsKIAotICAgIGludCB0eXBlID0gSGl0VGVzdFJlcXVl
c3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZTsKKyAgICBIaXRUZXN0UmVxdWVz
dCByZXF1ZXN0KGhpdFR5cGUpOwogCiAgICAgLy8gV2hlbiBpZ25vcmVDbGlwcGluZyBpcyBmYWxz
ZSwgdGhpcyBtZXRob2QgcmV0dXJucyBudWxsIGZvciBjb29yZGluYXRlcyBvdXRzaWRlIG9mIHRo
ZSB2aWV3cG9ydC4KLSAgICBpZiAoaWdub3JlQ2xpcHBpbmcpCi0gICAgICAgIHR5cGUgfD0gSGl0
VGVzdFJlcXVlc3Q6Oklnbm9yZUNsaXBwaW5nOwotICAgIGVsc2UgaWYgKCFmcmFtZVZpZXctPnZp
c2libGVDb250ZW50UmVjdCgpLmludGVyc2VjdHMoSGl0VGVzdFJlc3VsdDo6cmVjdEZvclBvaW50
KHBvaW50LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRk
aW5nKSkpCisgICAgaWYgKCFyZXF1ZXN0Lmlnbm9yZUNsaXBwaW5nKCkgJiYgIWZyYW1lVmlldy0+
dmlzaWJsZUNvbnRlbnRSZWN0KCkuaW50ZXJzZWN0cyhIaXRUZXN0UmVzdWx0OjpyZWN0Rm9yUG9p
bnQocG9pbnQsIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBh
ZGRpbmcpKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKGFsbG93U2hhZG93Q29udGVudCkK
LSAgICAgICAgdHlwZSB8PSBIaXRUZXN0UmVxdWVzdDo6QWxsb3dTaGFkb3dDb250ZW50OwotICAg
IGlmIChhbGxvd0NoaWxkRnJhbWVDb250ZW50KQotICAgICAgICB0eXBlIHw9IEhpdFRlc3RSZXF1
ZXN0OjpBbGxvd0NoaWxkRnJhbWVDb250ZW50OwotCi0gICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVz
dCh0eXBlKTsKIAogICAgIC8vIFBhc3NpbmcgYSB6ZXJvIHBhZGRpbmcgd2lsbCB0cmlnZ2VyIGEg
cmVjdCBoaXQgdGVzdCwgaG93ZXZlciBmb3IgdGhlIHB1cnBvc2VzIG9mIG5vZGVzRnJvbVJlY3Qs
CiAgICAgLy8gd2Ugc3BlY2lhbCBoYW5kbGUgdGhpcyBjYXNlIGluIG9yZGVyIHRvIHJldHVybiBh
IHZhbGlkIE5vZGVMaXN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCAyODcyZTVjMmFhOWIzNjI5
YTU0NjBjMTZiMjhhNGRjZmE0ZmZmZDk4Li5kYWZlMDRiZTMxNGE0YTdiNTAxMDU1Yzc1NWJhNTll
ZTA0NmQ2MmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1
ZGUgIkRPTVRpbWVTdGFtcC5oIgogI2luY2x1ZGUgIkRvY3VtZW50RXZlbnRRdWV1ZS5oIgogI2lu
Y2x1ZGUgIkRvY3VtZW50VGltaW5nLmgiCisjaW5jbHVkZSAiSGl0VGVzdFJlcXVlc3QuaCIKICNp
bmNsdWRlICJJY29uVVJMLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ291bnRlcnMuaCIKICNpbmNs
dWRlICJJbnRSZWN0LmgiCkBAIC0zNzYsMTIgKzM3NywxMCBAQCBwdWJsaWM6CiAgICAgICogQHBh
cmFtIHJpZ2h0UGFkZGluZyBIb3cgbXVjaCB0byBleHBhbmQgdGhlIHJpZ2h0IG9mIHRoZSByZWN0
YW5nbGUKICAgICAgKiBAcGFyYW0gYm90dG9tUGFkZGluZyBIb3cgbXVjaCB0byBleHBhbmQgdGhl
IGJvdHRvbSBvZiB0aGUgcmVjdGFuZ2xlCiAgICAgICogQHBhcmFtIGxlZnRQYWRkaW5nIEhvdyBt
dWNoIHRvIGV4cGFuZCB0aGUgbGVmdCBvZiB0aGUgcmVjdGFuZ2xlCi0gICAgICogQHBhcmFtIGln
bm9yZUNsaXBwaW5nIHdoZXRoZXIgb3Igbm90IHRvIGlnbm9yZSB0aGUgcm9vdCBzY3JvbGwgZnJh
bWUgd2hlbiByZXRyaWV2aW5nIHRoZSBlbGVtZW50LgotICAgICAqICAgICAgICBJZiBmYWxzZSwg
dGhpcyBtZXRob2QgcmV0dXJucyBudWxsIGZvciBjb29yZGluYXRlcyBvdXRzaWRlIG9mIHRoZSB2
aWV3cG9ydC4KICAgICAgKi8KICAgICBQYXNzUmVmUHRyPE5vZGVMaXN0PiBub2Rlc0Zyb21SZWN0
KGludCBjZW50ZXJYLCBpbnQgY2VudGVyWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFkZGluZywgdW5z
aWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlnbm9yZUNsaXBwaW5nLCBib29sIGFsbG93
U2hhZG93Q29udGVudCwgYm9vbCBhbGxvd0NoaWxkRnJhbWVDb250ZW50ID0gZmFsc2UpIGNvbnN0
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGl0VGVzdFJlcXVlc3Q6
OkhpdFRlc3RSZXF1ZXN0VHlwZSBoaXRUeXBlID0gSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwg
SGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSkgY29uc3Q7CiAgICAgRWxlbWVudCogZWxlbWVudEZyb21Q
b2ludChpbnQgeCwgaW50IHkpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8UmFuZ2U+IGNhcmV0UmFu
Z2VGcm9tUG9pbnQoaW50IHgsIGludCB5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250
ZXh0TWVudUNvbnRyb2xsZXIuY3BwCmluZGV4IGQ5MDE5ZmMzMGZkNWQ4NjQ2ZjJmNGVmZjRlYTU0
ZjQ4OWY4OTM4NWIuLjg3ZjNjYzRkNjE5YjU2NmMwNWQyMzYxZjQ5NTA2NzU0MWJkMjVjMjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKQEAgLTE0
OSw3ICsxNDksNyBAQCBQYXNzT3duUHRyPENvbnRleHRNZW51PiBDb250ZXh0TWVudUNvbnRyb2xs
ZXI6OmNyZWF0ZUNvbnRleHRNZW51KEV2ZW50KiBldmVudCkKICAgICBIaXRUZXN0UmVzdWx0IHJl
c3VsdChtb3VzZUV2ZW50LT5hYnNvbHV0ZUxvY2F0aW9uKCkpOwogCiAgICAgaWYgKEZyYW1lKiBm
cmFtZSA9IGV2ZW50LT50YXJnZXQoKS0+dG9Ob2RlKCktPmRvY3VtZW50KCktPmZyYW1lKCkpCi0g
ICAgICAgIHJlc3VsdCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9p
bnQobW91c2VFdmVudC0+YWJzb2x1dGVMb2NhdGlvbigpLCBmYWxzZSk7CisgICAgICAgIHJlc3Vs
dCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQobW91c2VFdmVu
dC0+YWJzb2x1dGVMb2NhdGlvbigpKTsKIAogICAgIGlmICghcmVzdWx0LmlubmVyTm9uU2hhcmVk
Tm9kZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29u
dHJvbGxlci5jcHAKaW5kZXggYzc0NGMxODllYmRiZjRmMGE0MGI4YTk5ZDhlNzlhMjVkYjBhNmQ2
OC4uYTFlNzhiODBhYTAyN2QxNmEyODUyOGMzYTZlNDlkYjEzN2M2MDA5OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTU0NCw3ICs1NDQsNyBAQCBib29sIERyYWdD
b250cm9sbGVyOjpjYW5Qcm9jZXNzRHJhZyhEcmFnRGF0YSogZHJhZ0RhdGEpCiAgICAgaWYgKCFt
X3BhZ2UtPm1haW5GcmFtZSgpLT5jb250ZW50UmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgcmVzdWx0ID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCkt
PmhpdFRlc3RSZXN1bHRBdFBvaW50KHBvaW50LCB0cnVlKTsKKyAgICByZXN1bHQgPSBtX3BhZ2Ut
Pm1haW5GcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQocG9pbnQs
IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRU
ZXN0UmVxdWVzdDo6QWxsb3dTaGFkb3dDb250ZW50KTsKIAogICAgIGlmICghcmVzdWx0LmlubmVy
Tm9uU2hhcmVkTm9kZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC03MjYsNyArNzI2LDcg
QEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lKiBzcmMsIGNvbnN0IERyYWdT
dGF0ZSYgc3RhdGUsIERyYWdPcGVyYXRpb24KICAgICBpZiAoIXNyYy0+dmlldygpIHx8ICFzcmMt
PmNvbnRlbnRSZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBIaXRUZXN0
UmVzdWx0IGhpdFRlc3RSZXN1bHQgPSBzcmMtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0
QXRQb2ludChkcmFnT3JpZ2luLCB0cnVlKTsKKyAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3RSZXN1
bHQgPSBzcmMtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChkcmFnT3JpZ2lu
LCBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0
VGVzdFJlcXVlc3Q6OkFsbG93U2hhZG93Q29udGVudCk7CiAgICAgaWYgKCFzdGF0ZS5tX2RyYWdT
cmMtPmNvbnRhaW5zKGhpdFRlc3RSZXN1bHQuaW5uZXJOb2RlKCkpKQogICAgICAgICAvLyBUaGUg
b3JpZ2luYWwgbm9kZSBiZWluZyBkcmFnZ2VkIGlzbid0IHVuZGVyIHRoZSBkcmFnIG9yaWdpbiBh
bnltb3JlLi4uIG1heWJlIGl0IHdhcwogICAgICAgICAvLyBoaWRkZW4gb3IgbW92ZWQgb3V0IGZy
b20gdW5kZXIgdGhlIGN1cnNvci4gUmVnYXJkbGVzcywgd2UgZG9uJ3Qgd2FudCB0byBzdGFydCBh
IGRyYWcgb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCAwMDFmZDZkOWU5
ZTExNjI5NWQyMGM1MDkyMzAxOTI3YTA1ZDdkZjkwLi4zODA3YzU1OTcyOGNmNTZjZTUxZWM2MzBj
N2E2OWJkMGQ3M2YwZGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFu
ZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0x
MDA3LDcgKzEwMDcsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6dXBkYXRlQXV0b3Njcm9sbFJlbmRl
cmVyKCkKICAgICBpZiAoIW1fYXV0b3Njcm9sbFJlbmRlcmVyKQogICAgICAgICByZXR1cm47CiAK
LSAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3QgPSBoaXRUZXN0UmVzdWx0QXRQb2ludChtX3BhblNj
cm9sbFN0YXJ0UG9zLCB0cnVlKTsKKyAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3QgPSBoaXRUZXN0
UmVzdWx0QXRQb2ludChtX3BhblNjcm9sbFN0YXJ0UG9zLCBIaXRUZXN0UmVxdWVzdDo6UmVhZE9u
bHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93U2hhZG93
Q29udGVudCk7CiAKICAgICBpZiAoTm9kZSogbm9kZUF0UG9pbnQgPSBoaXRUZXN0LmlubmVyTm9k
ZSgpKQogICAgICAgICBtX2F1dG9zY3JvbGxSZW5kZXJlciA9IG5vZGVBdFBvaW50LT5yZW5kZXJl
cigpOwpAQCAtMTAzOSwyMiArMTAzOSwxNyBAQCBEcmFnU291cmNlQWN0aW9uIEV2ZW50SGFuZGxl
cjo6dXBkYXRlRHJhZ1NvdXJjZUFjdGlvbnNBbGxvd2VkKCkgY29uc3QKIH0KICNlbmRpZiAvLyBF
TkFCTEUoRFJBR19TVVBQT1JUKQogICAgIAotSGl0VGVzdFJlc3VsdCBFdmVudEhhbmRsZXI6Omhp
dFRlc3RSZXN1bHRBdFBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCwgYm9vbCBhbGxvd1No
YWRvd0NvbnRlbnQsIGJvb2wgaWdub3JlQ2xpcHBpbmcsIEhpdFRlc3RTY3JvbGxiYXJzIHRlc3RT
Y3JvbGxiYXJzLCBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhpdFR5cGUsIGNv
bnN0IExheW91dFNpemUmIHBhZGRpbmcpCitIaXRUZXN0UmVzdWx0IEV2ZW50SGFuZGxlcjo6aGl0
VGVzdFJlc3VsdEF0UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBIaXRUZXN0UmVxdWVz
dDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhpdFR5cGUsIGNvbnN0IExheW91dFNpemUmIHBhZGRpbmcp
CiB7CiAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQocG9pbnQsIHBhZGRpbmcuaGVpZ2h0KCksIHBh
ZGRpbmcud2lkdGgoKSwgcGFkZGluZy5oZWlnaHQoKSwgcGFkZGluZy53aWR0aCgpKTsKIAogICAg
IGlmICghbV9mcmFtZS0+Y29udGVudFJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQ7
Ci0gICAgaWYgKGlnbm9yZUNsaXBwaW5nKQotICAgICAgICBoaXRUeXBlIHw9IEhpdFRlc3RSZXF1
ZXN0OjpJZ25vcmVDbGlwcGluZzsKLSAgICBpZiAoYWxsb3dTaGFkb3dDb250ZW50KQotICAgICAg
ICBoaXRUeXBlIHw9IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd1NoYWRvd0NvbnRlbnQ7Ci0gICAgaWYg
KHRlc3RTY3JvbGxiYXJzID09IFNob3VsZEhpdFRlc3RTY3JvbGxiYXJzKQotICAgICAgICBoaXRU
eXBlIHw9IEhpdFRlc3RSZXF1ZXN0OjpUZXN0Q2hpbGRGcmFtZVNjcm9sbEJhcnM7CiAgICAgLy8g
V2UgYWx3YXlzIG5lZWQgdG8gaGFuZGxlIGNoaWxkIGZyYW1lIGNvbnRlbnQuCiAgICAgaGl0VHlw
ZSB8PSBIaXRUZXN0UmVxdWVzdDo6QWxsb3dDaGlsZEZyYW1lQ29udGVudDsKIAotICAgIG1fZnJh
bWUtPmNvbnRlbnRSZW5kZXJlcigpLT5oaXRUZXN0KEhpdFRlc3RSZXF1ZXN0KGhpdFR5cGUpLCBy
ZXN1bHQpOworICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoaGl0VHlwZSk7CisgICAgbV9mcmFt
ZS0+Y29udGVudFJlbmRlcmVyKCktPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0KTsKIAogICAgIC8v
IElmIG91ciBIaXRUZXN0UmVzdWx0IGlzIG5vdCB2aXNpYmxlLCB0aGVuIHdlIHN0YXJ0ZWQgaGl0
IHRlc3RpbmcgdG9vIGZhciBkb3duIHRoZSBmcmFtZSBjaGFpbi4gCiAgICAgLy8gQW5vdGhlciBo
aXQgdGVzdCBhdCB0aGUgbWFpbiBmcmFtZSBsZXZlbCBzaG91bGQgZ2V0IHVzIHRoZSBjb3JyZWN0
IHZpc2libGUgcmVzdWx0LgpAQCAtMTA2NiwxMiArMTA2MSwxMiBAQCBIaXRUZXN0UmVzdWx0IEV2
ZW50SGFuZGxlcjo6aGl0VGVzdFJlc3VsdEF0UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50
LCBib29sCiAgICAgICAgICAgICBGcmFtZVZpZXcqIG1haW5WaWV3ID0gbWFpbkZyYW1lLT52aWV3
KCk7CiAgICAgICAgICAgICBpZiAocmVzdWx0VmlldyAmJiBtYWluVmlldykgewogICAgICAgICAg
ICAgICAgIEludFBvaW50IG1haW5GcmFtZVBvaW50ID0gbWFpblZpZXctPnJvb3RWaWV3VG9Db250
ZW50cyhyZXN1bHRWaWV3LT5jb250ZW50c1RvUm9vdFZpZXcocm91bmRlZEludFBvaW50KHJlc3Vs
dC5wb2ludCgpKSkpOwotICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1haW5GcmFtZS0+ZXZlbnRI
YW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KG1haW5GcmFtZVBvaW50LCBhbGxvd1NoYWRv
d0NvbnRlbnQsIGlnbm9yZUNsaXBwaW5nLCB0ZXN0U2Nyb2xsYmFycywgaGl0VHlwZSwgcGFkZGlu
Zyk7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbWFpbkZyYW1lLT5ldmVudEhhbmRsZXIoKS0+
aGl0VGVzdFJlc3VsdEF0UG9pbnQobWFpbkZyYW1lUG9pbnQsIGhpdFR5cGUsIHBhZGRpbmcpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKCFhbGxvd1NoYWRvd0Nv
bnRlbnQpCisgICAgaWYgKCFyZXF1ZXN0LmFsbG93c1NoYWRvd0NvbnRlbnQoKSkKICAgICAgICAg
cmVzdWx0LnNldFRvTm9uU2hhZG93QW5jZXN0b3IoKTsKIAogICAgIHJldHVybiByZXN1bHQ7CkBA
IC0xNDgxLDcgKzE0NzYsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2
ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgbW91c2VFdmVudCkKICAgICBtX21vdXNlRG93
bldhc0luU3ViZnJhbWUgPSBmYWxzZTsKIAogICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0
VGVzdFJlcXVlc3Q6OkFjdGl2ZSk7Ci0gICAgLy8gU2F2ZSB0aGUgZG9jdW1lbnQgcG9pbnQgd2Ug
Z2VuZXJhdGUgaW4gY2FzZSB0aGUgd2luZG93IGNvb3JkaW5hdGUgaXMgaW52YWxpZGF0ZWQgYnkg
d2hhdCBoYXBwZW5zIAorICAgIC8vIFNhdmUgdGhlIGRvY3VtZW50IHBvaW50IHdlIGdlbmVyYXRl
IGluIGNhc2UgdGhlIHdpbmRvdyBjb29yZGluYXRlIGlzIGludmFsaWRhdGVkIGJ5IHdoYXQgaGFw
cGVucwogICAgIC8vIHdoZW4gd2UgZGlzcGF0Y2ggdGhlIGV2ZW50LgogICAgIExheW91dFBvaW50
IGRvY3VtZW50UG9pbnQgPSBkb2N1bWVudFBvaW50Rm9yV2luZG93UG9pbnQobV9mcmFtZSwgbW91
c2VFdmVudC5wb3NpdGlvbigpKTsKICAgICBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzIG1l
diA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnByZXBhcmVNb3VzZUV2ZW50KHJlcXVlc3QsIGRvY3Vt
ZW50UG9pbnQsIG1vdXNlRXZlbnQpOwpAQCAtMjM4MSw3ICsyMzc2LDcgQEAgYm9vbCBFdmVudEhh
bmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2Vz
dHVyZUV2ZW50KQogICAgICAgICBldmVudFRhcmdldCA9IG1fc2Nyb2xsR2VzdHVyZUhhbmRsaW5n
Tm9kZS5nZXQoKTsKIAogICAgIGlmICghZXZlbnRUYXJnZXQpIHsKLSAgICAgICAgSGl0VGVzdFJl
c3VsdCByZXN1bHQgPSBoaXRUZXN0UmVzdWx0QXRQb2ludChnZXN0dXJlRXZlbnQucG9zaXRpb24o
KSwgZmFsc2UsIGZhbHNlLCBEb250SGl0VGVzdFNjcm9sbGJhcnMsIEhpdFRlc3RSZXF1ZXN0OjpS
ZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUpOworICAgICAgICBIaXRUZXN0UmVzdWx0
IHJlc3VsdCA9IGhpdFRlc3RSZXN1bHRBdFBvaW50KGdlc3R1cmVFdmVudC5wb3NpdGlvbigpKTsK
ICAgICAgICAgZXZlbnRUYXJnZXQgPSByZXN1bHQudGFyZ2V0Tm9kZSgpOwogICAgIH0KIApAQCAt
MjQ4Myw5ICsyNDc4LDggQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVTY3JvbGxD
b3JlKGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXYKICNpZiBFTkFCTEUoVE9V
Q0hfQURKVVNUTUVOVCkKIGJvb2wgRXZlbnRIYW5kbGVyOjpiZXN0Q2xpY2thYmxlTm9kZUZvclRv
dWNoUG9pbnQoY29uc3QgSW50UG9pbnQmIHRvdWNoQ2VudGVyLCBjb25zdCBJbnRTaXplJiB0b3Vj
aFJhZGl1cywgSW50UG9pbnQmIHRhcmdldFBvaW50LCBOb2RlKiYgdGFyZ2V0Tm9kZSkKIHsKLSAg
ICBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhpdFR5cGUgPSBIaXRUZXN0UmVx
dWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlOwogICAgIEludFBvaW50IGhp
dFRlc3RQb2ludCA9IG1fZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyh0b3VjaENlbnRl
cik7Ci0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBoaXRUZXN0UmVzdWx0QXRQb2ludChoaXRU
ZXN0UG9pbnQsIC8qYWxsb3dTaGFkb3dDb250ZW50Ki8gdHJ1ZSwgLyppZ25vcmVDbGlwcGluZyov
IGZhbHNlLCBEb250SGl0VGVzdFNjcm9sbGJhcnMsIGhpdFR5cGUsIHRvdWNoUmFkaXVzKTsKKyAg
ICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGhpdFRlc3RSZXN1bHRBdFBvaW50KGhpdFRlc3RQb2lu
dCwgSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhp
dFRlc3RSZXF1ZXN0OjpBbGxvd1NoYWRvd0NvbnRlbnQsIHRvdWNoUmFkaXVzKTsKIAogICAgIElu
dFJlY3QgdG91Y2hSZWN0KHRvdWNoQ2VudGVyIC0gdG91Y2hSYWRpdXMsIHRvdWNoUmFkaXVzICsg
dG91Y2hSYWRpdXMpOwogICAgIFJlZlB0cjxTdGF0aWNIYXNoU2V0Tm9kZUxpc3Q+IG5vZGVMaXN0
ID0gU3RhdGljSGFzaFNldE5vZGVMaXN0OjphZG9wdChyZXN1bHQucmVjdEJhc2VkVGVzdFJlc3Vs
dCgpKTsKQEAgLTI1MDIsOSArMjQ5Niw4IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpiZXN0Q2xpY2th
YmxlTm9kZUZvclRvdWNoUG9pbnQoY29uc3QgSW50UG9pbnQmIHRvdWNoQ2VudGVyLCBjCiAKIGJv
b2wgRXZlbnRIYW5kbGVyOjpiZXN0Q29udGV4dE1lbnVOb2RlRm9yVG91Y2hQb2ludChjb25zdCBJ
bnRQb2ludCYgdG91Y2hDZW50ZXIsIGNvbnN0IEludFNpemUmIHRvdWNoUmFkaXVzLCBJbnRQb2lu
dCYgdGFyZ2V0UG9pbnQsIE5vZGUqJiB0YXJnZXROb2RlKQogewotICAgIEhpdFRlc3RSZXF1ZXN0
OjpIaXRUZXN0UmVxdWVzdFR5cGUgaGl0VHlwZSA9IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8
IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmU7CiAgICAgSW50UG9pbnQgaGl0VGVzdFBvaW50ID0gbV9m
cmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHRvdWNoQ2VudGVyKTsKLSAgICBIaXRUZXN0
UmVzdWx0IHJlc3VsdCA9IGhpdFRlc3RSZXN1bHRBdFBvaW50KGhpdFRlc3RQb2ludCwgLyphbGxv
d1NoYWRvd0NvbnRlbnQqLyB0cnVlLCAvKmlnbm9yZUNsaXBwaW5nKi8gZmFsc2UsIERvbnRIaXRU
ZXN0U2Nyb2xsYmFycywgaGl0VHlwZSwgdG91Y2hSYWRpdXMpOworICAgIEhpdFRlc3RSZXN1bHQg
cmVzdWx0ID0gaGl0VGVzdFJlc3VsdEF0UG9pbnQoaGl0VGVzdFBvaW50LCBIaXRUZXN0UmVxdWVz
dDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OkFs
bG93U2hhZG93Q29udGVudCwgdG91Y2hSYWRpdXMpOwogCiAgICAgSW50UmVjdCB0b3VjaFJlY3Qo
dG91Y2hDZW50ZXIgLSB0b3VjaFJhZGl1cywgdG91Y2hSYWRpdXMgKyB0b3VjaFJhZGl1cyk7CiAg
ICAgUmVmUHRyPFN0YXRpY0hhc2hTZXROb2RlTGlzdD4gbm9kZUxpc3QgPSBTdGF0aWNIYXNoU2V0
Tm9kZUxpc3Q6OmFkb3B0KHJlc3VsdC5yZWN0QmFzZWRUZXN0UmVzdWx0KCkpOwpAQCAtMjUxMyw5
ICsyNTA2LDggQEAgYm9vbCBFdmVudEhhbmRsZXI6OmJlc3RDb250ZXh0TWVudU5vZGVGb3JUb3Vj
aFBvaW50KGNvbnN0IEludFBvaW50JiB0b3VjaENlbnRlciwKIAogYm9vbCBFdmVudEhhbmRsZXI6
OmJlc3Rab29tYWJsZUFyZWFGb3JUb3VjaFBvaW50KGNvbnN0IEludFBvaW50JiB0b3VjaENlbnRl
ciwgY29uc3QgSW50U2l6ZSYgdG91Y2hSYWRpdXMsIEludFJlY3QmIHRhcmdldEFyZWEsIE5vZGUq
JiB0YXJnZXROb2RlKQogewotICAgIEhpdFRlc3RSZXF1ZXN0OjpIaXRUZXN0UmVxdWVzdFR5cGUg
aGl0VHlwZSA9IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3Rp
dmU7CiAgICAgSW50UG9pbnQgaGl0VGVzdFBvaW50ID0gbV9mcmFtZS0+dmlldygpLT53aW5kb3dU
b0NvbnRlbnRzKHRvdWNoQ2VudGVyKTsKLSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGhpdFRl
c3RSZXN1bHRBdFBvaW50KGhpdFRlc3RQb2ludCwgLyphbGxvd1NoYWRvd0NvbnRlbnQqLyBmYWxz
ZSwgLyppZ25vcmVDbGlwcGluZyovIGZhbHNlLCBEb250SGl0VGVzdFNjcm9sbGJhcnMsIGhpdFR5
cGUsIHRvdWNoUmFkaXVzKTsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGhpdFRlc3RSZXN1
bHRBdFBvaW50KGhpdFRlc3RQb2ludCwgSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVz
dFJlcXVlc3Q6OkFjdGl2ZSwgdG91Y2hSYWRpdXMpOwogCiAgICAgSW50UmVjdCB0b3VjaFJlY3Qo
dG91Y2hDZW50ZXIgLSB0b3VjaFJhZGl1cywgdG91Y2hSYWRpdXMgKyB0b3VjaFJhZGl1cyk7CiAg
ICAgUmVmUHRyPFN0YXRpY0hhc2hTZXROb2RlTGlzdD4gbm9kZUxpc3QgPSBTdGF0aWNIYXNoU2V0
Tm9kZUxpc3Q6OmFkb3B0KHJlc3VsdC5yZWN0QmFzZWRUZXN0UmVzdWx0KCkpOwpAQCAtMzU1Nyw3
ICszNTQ5LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxh
dGZvcm1Ub3VjaEV2ZW50JiBldmVudCkKICAgICAgICAgdW5zaWduZWQgdG91Y2hQb2ludFRhcmdl
dEtleSA9IHBvaW50LmlkKCkgKyAxOwogICAgICAgICBSZWZQdHI8RXZlbnRUYXJnZXQ+IHRvdWNo
VGFyZ2V0OwogICAgICAgICBpZiAocG9pbnRTdGF0ZSA9PSBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRv
dWNoUHJlc3NlZCkgewotICAgICAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBoaXRUZXN0
UmVzdWx0QXRQb2ludChwYWdlUG9pbnQsIC8qYWxsb3dTaGFkb3dDb250ZW50Ki8gZmFsc2UsIGZh
bHNlLCBEb250SGl0VGVzdFNjcm9sbGJhcnMsIGhpdFR5cGUpOworICAgICAgICAgICAgSGl0VGVz
dFJlc3VsdCByZXN1bHQgPSBoaXRUZXN0UmVzdWx0QXRQb2ludChwYWdlUG9pbnQsIGhpdFR5cGUp
OwogICAgICAgICAgICAgTm9kZSogbm9kZSA9IHJlc3VsdC5pbm5lck5vZGUoKTsKICAgICAgICAg
ICAgIEFTU0VSVChub2RlKTsKIApAQCAtMzU3NSw3ICszNTY3LDcgQEAgYm9vbCBFdmVudEhhbmRs
ZXI6OmhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JiBldmVudCkKICAg
ICAgICAgICAgIHRvdWNoVGFyZ2V0ID0gbm9kZTsKICAgICAgICAgfSBlbHNlIGlmIChwb2ludFN0
YXRlID09IFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hSZWxlYXNlZCB8fCBwb2ludFN0YXRlID09
IFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hDYW5jZWxsZWQpIHsKICAgICAgICAgICAgIC8vIFdl
IG9ubHkgcGVyZm9ybSBhIGhpdHRlc3Qgb24gcmVsZWFzZSBvciBjYW5jZWwgdG8gdW5zZXQgOmFj
dGl2ZSBvciA6aG92ZXIgc3RhdGUuCi0gICAgICAgICAgICBoaXRUZXN0UmVzdWx0QXRQb2ludChw
YWdlUG9pbnQsIC8qYWxsb3dTaGFkb3dDb250ZW50Ki8gZmFsc2UsIGZhbHNlLCBEb250SGl0VGVz
dFNjcm9sbGJhcnMsIGhpdFR5cGUpOworICAgICAgICAgICAgaGl0VGVzdFJlc3VsdEF0UG9pbnQo
cGFnZVBvaW50LCBoaXRUeXBlKTsKICAgICAgICAgICAgIC8vIFRoZSB0YXJnZXQgc2hvdWxkIGJl
IHRoZSBvcmlnaW5hbCB0YXJnZXQgZm9yIHRoaXMgdG91Y2gsIHNvIGdldCBpdCBmcm9tIHRoZSBo
YXNobWFwLiBBcyBpdCdzIGEgcmVsZWFzZSBvciBjYW5jZWwKICAgICAgICAgICAgIC8vIHdlIGFs
c28gcmVtb3ZlIGl0IGZyb20gdGhlIG1hcC4KICAgICAgICAgICAgIHRvdWNoVGFyZ2V0ID0gbV9v
cmlnaW5hdGluZ1RvdWNoUG9pbnRUYXJnZXRzLnRha2UodG91Y2hQb2ludFRhcmdldEtleSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAppbmRleCA2ZDhhMGFiNzY3M2E4YzhmZGZiNGM5YTk1
ZGJmYzFhYWQ5NTVkNDg3Li45N2QwYmQwM2YwNjFiNWE4OGRmZGUwZDY5N2ZiMWE5OWMwMzEwNGEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKQEAgLTg4LDggKzg4LDYgQEAgZXh0ZXJu
IGNvbnN0IGludCBUZXh0RHJhZ0h5c3RlcmVzaXM7CiBleHRlcm4gY29uc3QgaW50IEdlbmVyYWxE
cmFnSHlzdGVyZXNpczsKICNlbmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQT1JUKQogCi1lbnVtIEhp
dFRlc3RTY3JvbGxiYXJzIHsgU2hvdWxkSGl0VGVzdFNjcm9sbGJhcnMsIERvbnRIaXRUZXN0U2Ny
b2xsYmFycyB9OwotCiBjbGFzcyBFdmVudEhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKEV2ZW50SGFuZGxlcik7CiBwdWJsaWM6CkBAIC0xMTUsOSArMTEzLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgZGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRTb29uKCk7CiAgICAgdm9pZCBkaXNw
YXRjaEZha2VNb3VzZU1vdmVFdmVudFNvb25JblF1YWQoY29uc3QgRmxvYXRRdWFkJik7CiAKLSAg
ICBIaXRUZXN0UmVzdWx0IGhpdFRlc3RSZXN1bHRBdFBvaW50KGNvbnN0IExheW91dFBvaW50Jiwg
Ym9vbCBhbGxvd1NoYWRvd0NvbnRlbnQsIGJvb2wgaWdub3JlQ2xpcHBpbmcgPSBmYWxzZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhpdFRlc3RTY3JvbGxiYXJzIHNj
cm9sbGJhcnMgPSBEb250SGl0VGVzdFNjcm9sbGJhcnMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhpdFR5
cGUgPSBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlLAor
ICAgIEhpdFRlc3RSZXN1bHQgaGl0VGVzdFJlc3VsdEF0UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQm
LCBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhpdFR5cGUgPSBIaXRUZXN0UmVx
dWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTGF5b3V0U2l6ZSYgcGFkZGluZyA9IExheW91
dFNpemUoKSk7CiAKICAgICBib29sIG1vdXNlUHJlc3NlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbW91
c2VQcmVzc2VkOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJv
bGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKaW5kZXgg
MGI5NDE4YmEzMmJiOWM0YzU3YmQ2MjU0NTVkODIwYmM4OWRjMWEwMS4uMDcwNWMwYmZhMTNiNDk4
YTk0NGI0N2EzNjFhMzY0NjNhZDgwMzM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250
cm9sbGVyLmNwcApAQCAtNzQ1LDcgKzc0NSw3IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZUZvY3VzQ2Fu
ZGlkYXRlSWZOZWVkZWQoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBjb25zdCBGb2N1c0NhCiAg
ICAgICAgIC8vIElmIDIgbm9kZXMgYXJlIGludGVyc2VjdGluZywgZG8gaGl0IHRlc3QgdG8gZmlu
ZCB3aGljaCBub2RlIGluIG9uIHRvcC4KICAgICAgICAgTGF5b3V0VW5pdCB4ID0gaW50ZXJzZWN0
aW9uUmVjdC54KCkgKyBpbnRlcnNlY3Rpb25SZWN0LndpZHRoKCkgLyAyOwogICAgICAgICBMYXlv
dXRVbml0IHkgPSBpbnRlcnNlY3Rpb25SZWN0LnkoKSArIGludGVyc2VjdGlvblJlY3QuaGVpZ2h0
KCkgLyAyOwotICAgICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGNhbmRpZGF0ZS52aXNpYmxl
Tm9kZS0+ZG9jdW1lbnQoKS0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhp
dFRlc3RSZXN1bHRBdFBvaW50KEludFBvaW50KHgsIHkpLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAg
IEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gY2FuZGlkYXRlLnZpc2libGVOb2RlLT5kb2N1bWVudCgp
LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9p
bnQoSW50UG9pbnQoeCwgeSksIEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1
ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6SWdub3JlQ2xpcHBpbmcpOwogICAgICAgICBp
ZiAoY2FuZGlkYXRlLnZpc2libGVOb2RlLT5jb250YWlucyhyZXN1bHQuaW5uZXJOb2RlKCkpKSB7
CiAgICAgICAgICAgICBjbG9zZXN0ID0gY2FuZGlkYXRlOwogICAgICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lLmNwcAppbmRleCA4NWMyYTMzNGEyMjkwYzc3NDU1ZDhlOGMyYjQ3MmM1OWIx
YWE2YTgzLi40NzE3MjY3Mjk3ZmIwY2NlNmVkNmVmZjExMzI0MjFlZWZlN2RkZmIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lLmNwcApAQCAtNzI0LDcgKzcyNCw3IEBAIFN0cmluZyBGcmFtZTo6ZGlzcGxheVN0
cmluZ01vZGlmaWVkQnlFbmNvZGluZyhjb25zdCBTdHJpbmcmIHN0cikgY29uc3QKIAogVmlzaWJs
ZVBvc2l0aW9uIEZyYW1lOjp2aXNpYmxlUG9zaXRpb25Gb3JQb2ludChjb25zdCBJbnRQb2ludCYg
ZnJhbWVQb2ludCkKIHsKLSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGV2ZW50SGFuZGxlcigp
LT5oaXRUZXN0UmVzdWx0QXRQb2ludChmcmFtZVBvaW50LCB0cnVlKTsKKyAgICBIaXRUZXN0UmVz
dWx0IHJlc3VsdCA9IGV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChmcmFtZVBv
aW50LCBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwg
SGl0VGVzdFJlcXVlc3Q6OkFsbG93U2hhZG93Q29udGVudCk7CiAgICAgTm9kZSogbm9kZSA9IHJl
c3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKTsKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVy
biBWaXNpYmxlUG9zaXRpb24oKTsKQEAgLTc0Niw3ICs3NDYsNyBAQCBEb2N1bWVudCogRnJhbWU6
OmRvY3VtZW50QXRQb2ludChjb25zdCBJbnRQb2ludCYgcG9pbnQpCiAgICAgSGl0VGVzdFJlc3Vs
dCByZXN1bHQgPSBIaXRUZXN0UmVzdWx0KHB0KTsKIAogICAgIGlmIChjb250ZW50UmVuZGVyZXIo
KSkKLSAgICAgICAgcmVzdWx0ID0gZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50
KHB0LCBmYWxzZSk7CisgICAgICAgIHJlc3VsdCA9IGV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVz
dWx0QXRQb2ludChwdCk7CiAgICAgcmV0dXJuIHJlc3VsdC5pbm5lck5vZGUoKSA/IHJlc3VsdC5p
bm5lck5vZGUoKS0+ZG9jdW1lbnQoKSA6IDA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvVG91Y2hEaXNhbWJpZ3VhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Rv
dWNoRGlzYW1iaWd1YXRpb24uY3BwCmluZGV4IDVlZmUzZGI0OTE0MDVlNzM2MWQ3NmI3N2VmYjEx
ZWE3MzQwNmYxN2UuLmRmZWVkYjJmNjA2OGFiY2U3ZGVjOTM5NGM3MmNjZjk1NTllNmE3ODcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVG91Y2hEaXNhbWJpZ3VhdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9Ub3VjaERpc2FtYmlndWF0aW9uLmNwcApAQCAtOTYsNyAr
OTYsNyBAQCB2b2lkIGZpbmRHb29kVG91Y2hUYXJnZXRzKGNvbnN0IEludFJlY3QmIHRvdWNoQm94
LCBGcmFtZSogbWFpbkZyYW1lLCBmbG9hdCBwYWdlUwogICAgIEludFBvaW50IHRvdWNoUG9pbnQg
PSB0b3VjaEJveC5jZW50ZXIoKTsKICAgICBJbnRQb2ludCBjb250ZW50c1BvaW50ID0gbWFpbkZy
YW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHModG91Y2hQb2ludCk7CiAKLSAgICBIaXRUZXN0
UmVzdWx0IHJlc3VsdCA9IG1haW5GcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRB
dFBvaW50KGNvbnRlbnRzUG9pbnQsIGZhbHNlLCBmYWxzZSwgRG9udEhpdFRlc3RTY3JvbGxiYXJz
LCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5LCBJbnRT
aXplKHBhZGRpbmcsIHBhZGRpbmcpKTsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IG1haW5G
cmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGNvbnRlbnRzUG9pbnQs
IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUsIEludFNp
emUocGFkZGluZywgcGFkZGluZykpOwogICAgIGNvbnN0IExpc3RIYXNoU2V0PFJlZlB0cjxOb2Rl
PiA+JiBoaXRSZXN1bHRzID0gcmVzdWx0LnJlY3RCYXNlZFRlc3RSZXN1bHQoKTsKIAogICAgIEhh
c2hNYXA8Tm9kZSosIFRvdWNoVGFyZ2V0RGF0YT4gdG91Y2hUYXJnZXRzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSGl0VGVzdFJlcXVlc3QuaAppbmRleCAzZmFmODhhOWY5MTM3NjFlYzAxM2Q2
ZTdkMmNkZGFmMzJmODRkNzlmLi4xOTAwOTAwZjEyMzg0MTliODExOTc1ZjI1MTYyN2U2MDdlOGNj
YTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlcXVlc3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlcXVlc3QuaApAQCAtMzcs
NiArMzcsNyBAQCBwdWJsaWM6CiAgICAgICAgIFRvdWNoRXZlbnQgPSAxIDw8IDcsCiAgICAgICAg
IEFsbG93U2hhZG93Q29udGVudCA9IDEgPDwgOCwKICAgICAgICAgQWxsb3dDaGlsZEZyYW1lQ29u
dGVudCA9IDEgPDwgOSwKKyAgICAgICAgLy8gRklYTUU6IEdldCByaWQgb2YgdGhlIHR3byBvcHRp
b25zIGJlbG93IGlmIHBvc3NpYmxlLgogICAgICAgICBDaGlsZEZyYW1lSGl0VGVzdCA9IDEgPDwg
MTAsCiAgICAgICAgIFRlc3RDaGlsZEZyYW1lU2Nyb2xsQmFycyA9IDEgPDwgMTEKICAgICB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDM2OTQ4MTQyMmY2Y2EyZmNlMDJm
NTQ4OGY1YTViMDgyNzM4ODQyNzkuLjA0Y2ZlY2QwZDFkMTJkNmFhNjZlMGQwZTQxM2E5ODVjODdi
MDQ4N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTk3Miw4ICs5NzIs
MTUgQEAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gSW50ZXJuYWxzOjpub2Rlc0Zyb21SZWN0KERvY3Vt
ZW50KiBkb2N1bWVudCwgaW50IHgsIGludCB5LAogICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNT
X0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotCi0gICAgcmV0dXJuIGRvY3VtZW50LT5u
b2Rlc0Zyb21SZWN0KHgsIHksIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGlu
ZywgbGVmdFBhZGRpbmcsIGlnbm9yZUNsaXBwaW5nLCBhbGxvd1NoYWRvd0NvbnRlbnQsIGFsbG93
Q2hpbGRGcmFtZUNvbnRlbnQpOworICAgIEhpdFRlc3RSZXF1ZXN0OjpIaXRUZXN0UmVxdWVzdFR5
cGUgaGl0VHlwZSA9IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpB
Y3RpdmU7CisgICAgaWYgKGlnbm9yZUNsaXBwaW5nKQorICAgICAgICBoaXRUeXBlIHw9IEhpdFRl
c3RSZXF1ZXN0OjpJZ25vcmVDbGlwcGluZzsKKyAgICBpZiAoYWxsb3dTaGFkb3dDb250ZW50KQor
ICAgICAgICBoaXRUeXBlIHw9IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd1NoYWRvd0NvbnRlbnQ7Cisg
ICAgaWYgKGFsbG93Q2hpbGRGcmFtZUNvbnRlbnQpCisgICAgICAgIGhpdFR5cGUgfD0gSGl0VGVz
dFJlcXVlc3Q6OkFsbG93Q2hpbGRGcmFtZUNvbnRlbnQ7CisKKyAgICByZXR1cm4gZG9jdW1lbnQt
Pm5vZGVzRnJvbVJlY3QoeCwgeSwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRk
aW5nLCBsZWZ0UGFkZGluZywgaGl0VHlwZSk7CiB9CiAKIHZvaWQgSW50ZXJuYWxzOjplbWl0SW5z
cGVjdG9yRGlkQmVnaW5GcmFtZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvQXBpL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdl
LmNwcAppbmRleCBiZjI0YzE5NzU4YTI5MzFmNTkxODliOTJlYTVkZmQ2NTZmNGMwM2M4Li4zMDIz
YTBkY2NlNGE1ZGY0M2UxNmI0NzZmNjJlZjVkNGU3YTQzNWI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAKQEAgLTI3NTMsNyArMjc1Myw3IEBAIFBhc3NSZWZQdHI8
Tm9kZT4gV2ViUGFnZVByaXZhdGU6OmNvbnRleHROb2RlKFRhcmdldERldGVjdGlvblN0cmF0ZWd5
IHN0cmF0ZWd5KQogICAgICAgICByZXR1cm4gcmVzdWx0Lm5vZGUoRmF0RmluZ2Vyc1Jlc3VsdDo6
U2hhZG93Q29udGVudE5vdEFsbG93ZWQpOwogICAgIH0KIAotICAgIEhpdFRlc3RSZXN1bHQgcmVz
dWx0ID0gZXZlbnRIYW5kbGVyLT5oaXRUZXN0UmVzdWx0QXRQb2ludChjb250ZW50UG9zLCBmYWxz
ZSAvKmFsbG93U2hhZG93Q29udGVudCovKTsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGV2
ZW50SGFuZGxlci0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoY29udGVudFBvcyk7CiAgICAgcmV0dXJu
IHJlc3VsdC5pbm5lck5vZGUoKTsKIH0KIApAQCAtMjgyNSw3ICsyODI1LDcgQEAgTm9kZSogV2Vi
UGFnZVByaXZhdGU6Om5vZGVGb3Jab29tVW5kZXJQb2ludChjb25zdCBJbnRQb2ludCYgcG9pbnQp
CiAgICAgaWYgKCFtX21haW5GcmFtZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBIaXRUZXN0
UmVzdWx0IHJlc3VsdCA9IG1fbWFpbkZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3Vs
dEF0UG9pbnQobWFwRnJvbVRyYW5zZm9ybWVkKHBvaW50KSwgZmFsc2UpOworICAgIEhpdFRlc3RS
ZXN1bHQgcmVzdWx0ID0gbV9tYWluRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0
QXRQb2ludChtYXBGcm9tVHJhbnNmb3JtZWQocG9pbnQpKTsKIAogICAgIE5vZGUqIG5vZGUgPSBy
ZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCk7CiAKQEAgLTQwMzQsNyArNDAzNCw3IEBAIGJvb2wg
V2ViUGFnZVByaXZhdGU6OmhhbmRsZU1vdXNlRXZlbnQoUGxhdGZvcm1Nb3VzZUV2ZW50JiBtb3Vz
ZUV2ZW50KQogICAgIH0KIAogICAgIGlmICghbm9kZSkgewotICAgICAgICBIaXRUZXN0UmVzdWx0
IHJlc3VsdCA9IGV2ZW50SGFuZGxlci0+aGl0VGVzdFJlc3VsdEF0UG9pbnQobWFwRnJvbVZpZXdw
b3J0VG9Db250ZW50cyhtb3VzZUV2ZW50LnBvc2l0aW9uKCkpLCBmYWxzZSAvKmFsbG93U2hhZG93
Q29udGVudCovKTsKKyAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBldmVudEhhbmRsZXIt
PmhpdFRlc3RSZXN1bHRBdFBvaW50KG1hcEZyb21WaWV3cG9ydFRvQ29udGVudHMobW91c2VFdmVu
dC5wb3NpdGlvbigpKSk7CiAgICAgICAgIG5vZGUgPSByZXN1bHQuaW5uZXJOb2RlKCk7CiAgICAg
fQogCkBAIC01MTk3LDcgKzUxOTcsNyBAQCBXZWJET01Eb2N1bWVudCBXZWJQYWdlOjpkb2N1bWVu
dCgpIGNvbnN0CiAKIFdlYkRPTU5vZGUgV2ViUGFnZTo6bm9kZUF0UG9pbnQoaW50IHgsIGludCB5
KQogewotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZC0+bV9tYWluRnJhbWUtPmV2ZW50SGFu
ZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChkLT5tYXBGcm9tVHJhbnNmb3JtZWQoSW50UG9p
bnQoeCwgeSkpLCBmYWxzZSk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBkLT5tX21haW5G
cmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGQtPm1hcEZyb21UcmFu
c2Zvcm1lZChJbnRQb2ludCh4LCB5KSkpOwogICAgIE5vZGUqIG5vZGUgPSByZXN1bHQuaW5uZXJO
b25TaGFyZWROb2RlKCk7CiAgICAgcmV0dXJuIFdlYkRPTU5vZGUobm9kZSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9GYXRGaW5nZXJzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0ZhdEZpbmdlcnMuY3Bw
CmluZGV4IGMzNDQyYzgyN2FmNmM4MDRiYjhjY2YxN2E3OWM0YjBhMGUxM2I1ZTUuLmY0MmY1ZWRi
ZmIzNmFjNmFlNjhhZDkwYTUwY2NkMmEzMmQxMTc3Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0ZhdEZpbmdlcnMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0ZhdEZpbmdlcnMuY3BwCkBAIC00OTEsMTEg
KzQ5MSwxMiBAQCB2b2lkIEZhdEZpbmdlcnM6OmdldE5vZGVzRnJvbVJlY3QoRG9jdW1lbnQqIGRv
Y3VtZW50LCBjb25zdCBJbnRQb2ludCYgY29udGVudFBvcwogICAgIHVuc2lnbmVkIHRvcFBhZGRp
bmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmc7CiAgICAgZ2V0UGFk
ZGluZ3ModG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0UGFkZGlu
Zyk7CiAKLSAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25s
eSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6SWdub3JlQ2xpcHBp
bmcpOwogICAgIC8vIFRoZSB1c2VyIGZ1bmN0aW9ucyBjaGVja0ZvclRleHQoKSBhbmQgZmluZElu
dGVyc2VjdGluZ1JlZ2lvbnMoKSB1c2VzIHRoZSBOb2RlLndob2xlVGV4dCgpIHRvIGNoZWNrRmlu
Z2VySW50ZXJzZWN0aW9uKCkKICAgICAvLyBub3QgdGhlIHRleHQgaW4gaXRzIHNoYWRvdyB0cmVl
LgotICAgIFNoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3kgYWxsb3dTaGFkb3cgPSBtX3RhcmdldFR5
cGUgPT0gVGV4dCA/IERvTm90QWxsb3dTaGFkb3dDb250ZW50IDogQWxsb3dTaGFkb3dDb250ZW50
OwotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KGNvbnRlbnRQb3MsIHRvcFBhZGRpbmcsIHJpZ2h0
UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcsIGFsbG93U2hhZG93KTsKKyAgICBI
aXRUZXN0UmVxdWVzdCByZXF1ZXN0ID0gSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVz
dFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpJZ25vcmVDbGlwcGluZzsKKyAgICBp
ZiAobV90YXJnZXRUeXBlICE9IFRleHQpCisgICAgICAgIHJlcXVlc3QgfD0gSGl0VGVzdFJlcXVl
c3Q6OkFsbG93U2hhZG93Q29udGVudDsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdChjb250ZW50
UG9zLCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5n
KTsKIAogICAgIGRvY3VtZW50LT5yZW5kZXJWaWV3KCktPmxheWVyKCktPmhpdFRlc3QocmVxdWVz
dCwgcmVzdWx0KTsKICAgICBpbnRlcnNlY3RlZE5vZGVzID0gcmVzdWx0LnJlY3RCYXNlZFRlc3RS
ZXN1bHQoKTsKQEAgLTUxMCw3ICs1MTEsNyBAQCB2b2lkIEZhdEZpbmdlcnM6OmdldFJlbGV2YW50
SW5mb0Zyb21Qb2ludChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEludFBvaW50JiBjbwogICAg
IGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5yZW5kZXJlcigpIHx8ICFkb2N1bWVudC0+ZnJh
bWUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgID0gZG9j
dW1lbnQtPmZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChjb250
ZW50UG9zLCB0cnVlIC8qYWxsb3dTaGFkb3dDb250ZW50Ki8pOworICAgIEhpdFRlc3RSZXN1bHQg
cmVzdWx0ICA9IGRvY3VtZW50LT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3Vs
dEF0UG9pbnQoY29udGVudFBvcywgSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJl
cXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd1NoYWRvd0NvbnRlbnQpOwogICAg
IE5vZGUqIG5vZGUgPSByZXN1bHQuaW5uZXJOb2RlKCk7CiAgICAgd2hpbGUgKG5vZGUgJiYgIW5v
ZGUtPmlzRWxlbWVudE5vZGUoKSkKICAgICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1NlbGVj
dGlvbkhhbmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQv
U2VsZWN0aW9uSGFuZGxlci5jcHAKaW5kZXggM2IwNDI0N2JlY2ZkYmI3YzI2YzRlOWMwNDYxNWNk
ZjFjMjNmZmRlYi4uMDhjMGY4ODI0NmM0M2FjOTRhMTM4YzEyNWYzZWY0YmRkMzIyNjA0ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvU2VsZWN0aW9u
SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQv
U2VsZWN0aW9uSGFuZGxlci5jcHAKQEAgLTE1OSw3ICsxNTksNyBAQCBzdGF0aWMgVmlzaWJsZVBv
c2l0aW9uIHZpc2libGVQb3NpdGlvbkZvclBvaW50SWdub3JpbmdDbGlwcGluZyhjb25zdCBGcmFt
ZSYgZnJhbQogICAgIC8vIG91dHNpZGUgdGhlIHZpc2libGUgcmVjdC4gVG8gd29yayBhcm91bmQg
dGhlIGJ1ZywgdGhpcyBpcyBhIGNvcHkgb2YKICAgICAvLyB2aXNpYmxlUG9zaXRpb25BdFBvaW50
IHdoaWNoIHdoaWNoIHBhc3NlcyBpZ25vcmVDbGlwcGluZz10cnVlLgogICAgIC8vIFNlZSBSSU0g
QnVnICM0MzE1LgotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZnJhbWUuZXZlbnRIYW5kbGVy
KCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGZyYW1lUG9pbnQsIHRydWUgLyogYWxsb3dTaGFkb3dD
b250ZW50ICovLCB0cnVlIC8qIGlnbm9yZUNsaXBwaW5nICovKTsKKyAgICBIaXRUZXN0UmVzdWx0
IHJlc3VsdCA9IGZyYW1lLmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChmcmFt
ZVBvaW50LCBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZl
IHwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93U2hhZG93Q29udGVudCB8IEhpdFRlc3RSZXF1ZXN0OjpJ
Z25vcmVDbGlwcGluZyk7CiAKICAgICBOb2RlKiBub2RlID0gcmVzdWx0LmlubmVyTm9kZSgpOwog
ICAgIGlmICghbm9kZSB8fCBub2RlLT5kb2N1bWVudCgpICE9IGZyYW1lLmRvY3VtZW50KCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Db250ZXh0TWVudUNsaWVudElt
cGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29udGV4dE1lbnVDbGllbnRJbXBs
LmNwcAppbmRleCA2NDFhNTg1YTAxODk0NWRhMjM2MGRiZmY5NmFmYzI2YzJkMTU5ZDAxLi4yZmQ2
NDMxYzFmNmYxMDFkYTAwMjA0YTM3OGQxZTgwYzFkMDc1YzFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9Db250ZXh0TWVudUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0NvbnRleHRNZW51Q2xpZW50SW1wbC5jcHAKQEAgLTEyMiw3
ICsxMjIsNyBAQCBzdGF0aWMgU3RyaW5nIHNlbGVjdE1pc3NwZWxsZWRXb3JkKGNvbnN0IENvbnRl
eHRNZW51KiBkZWZhdWx0TWVudSwgRnJhbWUqIHNlbGVjdAogCiAgICAgLy8gU2VsZWN0aW9uIGlz
IGVtcHR5LCBzbyBjaGFuZ2UgdGhlIHNlbGVjdGlvbiB0byB0aGUgd29yZCB1bmRlciB0aGUgY3Vy
c29yLgogICAgIEhpdFRlc3RSZXN1bHQgaGl0VGVzdFJlc3VsdCA9IHNlbGVjdGVkRnJhbWUtPmV2
ZW50SGFuZGxlcigpLT4KLSAgICAgICAgaGl0VGVzdFJlc3VsdEF0UG9pbnQoc2VsZWN0ZWRGcmFt
ZS0+cGFnZSgpLT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKS0+aGl0VGVzdFJlc3VsdCgpLnBvaW50
KCksIHRydWUpOworICAgICAgICBoaXRUZXN0UmVzdWx0QXRQb2ludChzZWxlY3RlZEZyYW1lLT5w
YWdlKCktPmNvbnRleHRNZW51Q29udHJvbGxlcigpLT5oaXRUZXN0UmVzdWx0KCkucG9pbnQoKSwg
SGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRl
c3RSZXF1ZXN0OjpBbGxvd1NoYWRvd0NvbnRlbnQpOwogICAgIE5vZGUqIGlubmVyTm9kZSA9IGhp
dFRlc3RSZXN1bHQuaW5uZXJOb2RlKCk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvcyhpbm5lck5v
ZGUtPnJlbmRlcmVyKCktPnBvc2l0aW9uRm9yUG9pbnQoCiAgICAgICAgIGhpdFRlc3RSZXN1bHQu
bG9jYWxQb2ludCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9G
cmFtZUxvYWRlckNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJh
bWVMb2FkZXJDbGllbnRJbXBsLmNwcAppbmRleCA1ZGQwMmI1NjNkMDkxMzJkY2NhMTJlYmMxM2Qz
N2FkNjVkNjAwOWEyLi5jOTliZDdjNTcyNTNiMmI2ZWFkZTAwYTVjNWFlMjZlZDZhNjM2NzhkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudElt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50
SW1wbC5jcHAKQEAgLTk5Nyw4ICs5OTcsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6
ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKAogICAgICAgICAgICAgICAg
IGlmIChldmVudC0+aXNNb3VzZUV2ZW50KCkpIHsKICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
TW91c2VFdmVudCogbW91c2VFdmVudCA9CiAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNf
Y2FzdDxjb25zdCBNb3VzZUV2ZW50Kj4oZXZlbnQpOwotICAgICAgICAgICAgICAgICAgICBub2Rl
ID0gbV93ZWJGcmFtZS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBv
aW50KAotICAgICAgICAgICAgICAgICAgICAgICAgbW91c2VFdmVudC0+YWJzb2x1dGVMb2NhdGlv
bigpLCBmYWxzZSkuaW5uZXJOb25TaGFyZWROb2RlKCk7CisgICAgICAgICAgICAgICAgICAgIG5v
ZGUgPSBtX3dlYkZyYW1lLT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0
UG9pbnQobW91c2VFdmVudC0+YWJzb2x1dGVMb2NhdGlvbigpKS5pbm5lck5vblNoYXJlZE5vZGUo
KTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKaW5k
ZXggYWUzYjU5OWRmZDE2Mzg0NmIyYjY5OGMyNTY0YjJmNDI2NDBlMGZiNy4uNDM5NWM2ZDcwZjg2
Yjk1ZGIxZTBmYWUxNTJmNTc3ZjI0MTZhYThlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJGcmFtZUltcGwuY3BwCkBAIC0xMjYzLDcgKzEyNjMsNyBAQCBzaXplX3QgV2ViRnJh
bWVJbXBsOjpjaGFyYWN0ZXJJbmRleEZvclBvaW50KGNvbnN0IFdlYlBvaW50JiB3ZWJQb2ludCkg
Y29uc3QKICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwogCiAgICAgSW50UG9pbnQgcG9pbnQgPSBm
cmFtZSgpLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMod2ViUG9pbnQpOwotICAgIEhpdFRlc3RS
ZXN1bHQgcmVzdWx0ID0gZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBv
aW50KHBvaW50LCBmYWxzZSk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBmcmFtZSgpLT5l
dmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQocG9pbnQpOwogICAgIFJlZlB0cjxS
YW5nZT4gcmFuZ2UgPSBmcmFtZSgpLT5yYW5nZUZvclBvaW50KHJlc3VsdC5yb3VuZGVkUG9pbnQo
KSk7CiAgICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcApp
bmRleCBmZTk5YWI4NDQ1YjEyNzJiMjNjNjdmZjQ3NmE5NjFiNzIxZGM2NzY3Li45N2JhNjFmN2E4
Y2YxYzI5ZTFmMjJlNTQzN2E1YzkzOGIyOTI4NzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcApAQCAtNTEzLDcgKzUx
Myw3IEBAIGJvb2wgV2ViUGx1Z2luQ29udGFpbmVySW1wbDo6aXNSZWN0VG9wbW9zdChjb25zdCBX
ZWJSZWN0JiByZWN0KQogICAgIExheW91dFBvaW50IGNlbnRlciA9IGRvY3VtZW50UmVjdC5jZW50
ZXIoKTsKICAgICAvLyBNYWtlIHRoZSByZWN0IHdlJ3JlIGNoZWNraW5nICh0aGUgcG9pbnQgc3Vy
cm91bmRlZCBieSBwYWRkaW5nIHJlY3RzKSBjb250YWluZWQgaW5zaWRlIHRoZSByZXF1ZXN0ZWQg
cmVjdC4gKE5vdGUgdGhhdCAtMS8yIGlzIDAuKQogICAgIExheW91dFNpemUgcGFkZGluZygoZG9j
dW1lbnRSZWN0LndpZHRoKCkgLSAxKSAvIDIsIChkb2N1bWVudFJlY3QuaGVpZ2h0KCkgLSAxKSAv
IDIpOwotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5o
aXRUZXN0UmVzdWx0QXRQb2ludChjZW50ZXIsIGZhbHNlLCBmYWxzZSwgRG9udEhpdFRlc3RTY3Jv
bGxiYXJzLCBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZl
LCBwYWRkaW5nKTsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGZyYW1lLT5ldmVudEhhbmRs
ZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoY2VudGVyLCBIaXRUZXN0UmVxdWVzdDo6UmVhZE9u
bHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlLCBwYWRkaW5nKTsKICAgICBjb25zdCBIaXRUZXN0
UmVzdWx0OjpOb2RlU2V0JiBub2RlcyA9IHJlc3VsdC5yZWN0QmFzZWRUZXN0UmVzdWx0KCk7CiAg
ICAgaWYgKG5vZGVzLnNpemUoKSAhPSAxKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggMWJhZDdjN2JmZDFjOWVk
OTFlYTcyYmY4N2EyYTcwYTU2MTVjM2M4Zi4uMDRiOWE2NWJhNDExZjE1MTlhY2U4YTBhMzI2MmZj
YzczMjljN2YxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNw
cApAQCAtNjM3LDcgKzYzNyw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OmhhbmRsZU1vdXNlVXAoRnJh
bWUmIG1haW5GcmFtZSwgY29uc3QgV2ViTW91c2VFdmVudCYgZXZlbnQpCiAgICAgICAgIEZyYW1l
VmlldyogdmlldyA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKTsKICAgICAgICAgSW50UG9p
bnQgY2xpY2tQb2ludChtX2xhc3RNb3VzZURvd25Qb2ludC54LCBtX2xhc3RNb3VzZURvd25Qb2lu
dC55KTsKICAgICAgICAgSW50UG9pbnQgY29udGVudFBvaW50ID0gdmlldy0+d2luZG93VG9Db250
ZW50cyhjbGlja1BvaW50KTsKLSAgICAgICAgSGl0VGVzdFJlc3VsdCBoaXRUZXN0UmVzdWx0ID0g
Zm9jdXNlZC0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGNvbnRlbnRQb2lu
dCwgZmFsc2UsIGZhbHNlLCBTaG91bGRIaXRUZXN0U2Nyb2xsYmFycyk7CisgICAgICAgIEhpdFRl
c3RSZXN1bHQgaGl0VGVzdFJlc3VsdCA9IGZvY3VzZWQtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0
UmVzdWx0QXRQb2ludChjb250ZW50UG9pbnQsIEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhp
dFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6VGVzdENoaWxkRnJhbWVTY3Jv
bGxCYXJzKTsKICAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBzZW5kIGEgcGFzdGUgd2hlbiBt
aWRkbGUgY2xpY2tpbmcgYSBzY3JvbGwgYmFyIG9yIGEKICAgICAgICAgLy8gbGluayAod2hpY2gg
d2lsbCBuYXZpZ2F0ZSBsYXRlciBpbiB0aGUgY29kZSkuICBUaGUgbWFpbiBzY3JvbGxiYXJzCiAg
ICAgICAgIC8vIGhhdmUgdG8gYmUgaGFuZGxlZCBzZXBhcmF0ZWx5LgpAQCAtMTAwNSw5ICsxMDA1
LDggQEAgV2ViUmVjdCBXZWJWaWV3SW1wbDo6Y29tcHV0ZUJsb2NrQm91bmRzKGNvbnN0IFdlYlJl
Y3QmIHJlY3QsIEF1dG9ab29tVHlwZSB6b29tVHkKIAogICAgIC8vIFVzZSB0aGUgcmVjdC1iYXNl
ZCBoaXQgdGVzdCB0byBmaW5kIHRoZSBub2RlLgogICAgIEludFBvaW50IHBvaW50ID0gbWFpbkZy
YW1lSW1wbCgpLT5mcmFtZVZpZXcoKS0+d2luZG93VG9Db250ZW50cyhJbnRQb2ludChyZWN0Lngs
IHJlY3QueSkpOwotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gbWFpbkZyYW1lSW1wbCgpLT5m
cmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQocG9pbnQsCi0gICAg
ICAgICAgICBmYWxzZSwgem9vbVR5cGUgPT0gRmluZEluUGFnZSwgRG9udEhpdFRlc3RTY3JvbGxi
YXJzLCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5LAot
ICAgICAgICAgICAgSW50U2l6ZShyZWN0LndpZHRoLCByZWN0LmhlaWdodCkpOworICAgIEhpdFRl
c3RSZXF1ZXN0OjpIaXRUZXN0UmVxdWVzdFR5cGUgaGl0VHlwZSA9IEhpdFRlc3RSZXF1ZXN0OjpS
ZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCAoKHpvb21UeXBlID09IEZpbmRJblBh
Z2UpID8gSGl0VGVzdFJlcXVlc3Q6Oklnbm9yZUNsaXBwaW5nIDogMCk7CisgICAgSGl0VGVzdFJl
c3VsdCByZXN1bHQgPSBtYWluRnJhbWVJbXBsKCktPmZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5o
aXRUZXN0UmVzdWx0QXRQb2ludChwb2ludCwgaGl0VHlwZSwgSW50U2l6ZShyZWN0LndpZHRoLCBy
ZWN0LmhlaWdodCkpOwogCiAgICAgTm9kZSogbm9kZSA9IHJlc3VsdC5pbm5lck5vblNoYXJlZE5v
ZGUoKTsKICAgICBpZiAoIW5vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX2ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCmluZGV4
IGUyZTVmNzVhNGExODljODI3OGYyODc5ZjEwMjE0ZGJmOTEyMDFlNDguLjI2MGZhYjBjN2I5YzQz
ZGZiN2I0NDgxMWJkM2QyMGYyODhkM2E4ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfZnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUu
Y3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAi
SFRNTFBsdWdJbkVsZW1lbnQuaCIKICNpbmNsdWRlICJIaXN0b3J5SXRlbS5oIgorI2luY2x1ZGUg
IkhpdFRlc3RSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUg
IkludFNpemUuaCIKICNpbmNsdWRlICJLVVJMLmgiCkBAIC02OTMsOCArNjk0LDggQEAgRXdrX0hp
dF9UZXN0KiBld2tfZnJhbWVfaGl0X3Rlc3RfbmV3KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFt
ZSwgaW50IHgsIGludCB5KQogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFy
dERhdGEtPmZyYW1lLT5jb250ZW50UmVuZGVyZXIoKSwgMCk7CiAKICAgICBXZWJDb3JlOjpIaXRU
ZXN0UmVzdWx0IHJlc3VsdCA9IHNtYXJ0RGF0YS0+ZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRU
ZXN0UmVzdWx0QXRQb2ludAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICh2aWV3LT53aW5kb3dUb0NvbnRlbnRzKFdlYkNvcmU6OkludFBvaW50KHgsIHkpKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKmFsbG93U2hhZG93Q29udGVudCov
IGZhbHNlLCAvKmlnbm9yZUNsaXBwaW5nKi8gdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKHZpZXctPndpbmRvd1RvQ29udGVudHMoV2ViQ29yZTo6SW50UG9p
bnQoeCwgeSkpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJD
b3JlOjpIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwg
V2ViQ29yZTo6SGl0VGVzdFJlcXVlc3Q6Oklnbm9yZUNsaXBwaW5nKTsKIAogICAgIGlmIChyZXN1
bHQuc2Nyb2xsYmFyKCkpCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCA2
NGU0NGE0ZDAwNDY1ZjZhZmFiZGFjMGIxNmNjNmUwMmE0ZDUyMTFiLi41YjY4YTFmNWZmZTZjODkz
ZTk5MzJmN2I5ZjQ4NjZjMWE2MDBmYmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMTMzMiw3ICsx
MzMyLDcgQEAgTlNEaWN0aW9uYXJ5ICpXZWJGcmFtZUxvYWRlckNsaWVudDo6YWN0aW9uRGljdGlv
bmFyeShjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3QKIAogICAgIGlmIChjb25zdCBNb3VzZUV2
ZW50KiBtb3VzZUV2ZW50ID0gZmluZE1vdXNlRXZlbnQoZXZlbnQpKSB7CiAgICAgICAgIFdlYkVs
ZW1lbnREaWN0aW9uYXJ5ICplbGVtZW50ID0gW1tXZWJFbGVtZW50RGljdGlvbmFyeSBhbGxvY10K
LSAgICAgICAgICAgIGluaXRXaXRoSGl0VGVzdFJlc3VsdDpjb3JlKG1fd2ViRnJhbWUuZ2V0KCkp
LT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQobW91c2VFdmVudC0+YWJzb2x1
dGVMb2NhdGlvbigpLCBmYWxzZSldOworICAgICAgICAgICAgaW5pdFdpdGhIaXRUZXN0UmVzdWx0
OmNvcmUobV93ZWJGcmFtZS5nZXQoKSktPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQ
b2ludChtb3VzZUV2ZW50LT5hYnNvbHV0ZUxvY2F0aW9uKCkpXTsKICAgICAgICAgW3Jlc3VsdCBz
ZXRPYmplY3Q6ZWxlbWVudCBmb3JLZXk6V2ViQWN0aW9uRWxlbWVudEtleV07CiAgICAgICAgIFtl
bGVtZW50IHJlbGVhc2VdOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5t
bQppbmRleCBiZmVkZThkYjZmOWVmYjY1ZmQxMTU0MTg5OGE4Y2QxMDg0ZTJiNjNmLi45NjQ5OTVm
OWM0NTFlYmY4MGZhNzhiMzE0MGY5NzM1ZDkxOWEzOTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTYyMDYsNyArNjIwNiw4IEBAIHN0YXRpYyB2b2lkIGV4
dHJhY3RVbmRlcmxpbmVzKE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nLCBWZWN0b3I8Q29tcG9z
aXRpb25VbmRlCiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7CiAg
ICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIFtbW1dl
YkVsZW1lbnREaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aEhpdFRlc3RSZXN1bHQ6Y29yZUZyYW1l
LT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoSW50UG9pbnQocG9pbnQpLCBh
bGxvdyldIGF1dG9yZWxlYXNlXTsKKyAgICBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RU
eXBlIGhpdFR5cGUgPSBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6
QWN0aXZlIHwgKGFsbG93ID8gSGl0VGVzdFJlcXVlc3Q6OkFsbG93U2hhZG93Q29udGVudCA6IDAp
OworICAgIHJldHVybiBbW1tXZWJFbGVtZW50RGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhIaXRU
ZXN0UmVzdWx0OmNvcmVGcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50
KEludFBvaW50KHBvaW50KSwgaGl0VHlwZSldIGF1dG9yZWxlYXNlXTsKIH0KIAogLSAoTlNVSW50
ZWdlciljb3VudE1hdGNoZXNGb3JUZXh0OihOU1N0cmluZyAqKXN0cmluZyBpbkRPTVJhbmdlOihE
T01SYW5nZSAqKXJhbmdlIG9wdGlvbnM6KFdlYkZpbmRPcHRpb25zKW9wdGlvbnMgbGltaXQ6KE5T
VUludGVnZXIpbGltaXQgbWFya01hdGNoZXM6KEJPT0wpbWFya01hdGNoZXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L0Fw
aS9xd2ViZnJhbWUuY3BwCmluZGV4IGFkYmZhMWNjZGU0ZmE3NDU1ZTBiNmJjNzViYjEzN2E1ZmY0
YWNhYjMuLjhhYzE4ZjhlM2I0MTcyMGI1ODA5MzFjMzg3NWJjMjYzZjVhZWMyOWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9xdC9BcGkvcXdlYmZyYW1lLmNwcApAQCAtMTQwNiw3ICsxNDA2LDcgQEAgUVdlYkhpdFRlc3RS
ZXN1bHQgUVdlYkZyYW1lOjpoaXRUZXN0Q29udGVudChjb25zdCBRUG9pbnQgJnBvcykgY29uc3QK
ICAgICBpZiAoIWQtPmZyYW1lLT52aWV3KCkgfHwgIWQtPmZyYW1lLT5jb250ZW50UmVuZGVyZXIo
KSkKICAgICAgICAgcmV0dXJuIFFXZWJIaXRUZXN0UmVzdWx0KCk7CiAKLSAgICBIaXRUZXN0UmVz
dWx0IHJlc3VsdCA9IGQtPmZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9p
bnQoZC0+ZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhwb3MpLCAvKmFsbG93U2hhZG93
Q29udGVudCovIGZhbHNlLCAvKmlnbm9yZUNsaXBwaW5nKi8gdHJ1ZSk7CisgICAgSGl0VGVzdFJl
c3VsdCByZXN1bHQgPSBkLT5mcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBv
aW50KGQtPmZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMocG9zKSwgSGl0VGVzdFJlcXVl
c3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpJ
Z25vcmVDbGlwcGluZyk7CiAKICAgICBpZiAocmVzdWx0LnNjcm9sbGJhcigpKQogICAgICAgICBy
ZXR1cm4gUVdlYkhpdFRlc3RSZXN1bHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQv
QXBpL3F3ZWJwYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAppbmRl
eCAwOGU4NjE4M2E2YjZlYTQ0MDg3ZWYyNDcxZmQ5MDAyZDRiNjA0MGY0Li4yOTYyOGY1OTg3Y2U5
ZTE4MDczOTJjZGY4N2M1ZjY2NzZkZjc5YzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0
L0FwaS9xd2VicGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3Bw
CkBAIC04MDgsNyArODA4LDcgQEAgdm9pZCBRV2ViUGFnZVByaXZhdGU6OmhhbmRsZVNvZnR3YXJl
SW5wdXRQYW5lbChRdDo6TW91c2VCdXR0b24gYnV0dG9uLCBjb25zdCBRUG8KICAgICAgICAgUVN0
eWxlOjpSZXF1ZXN0U29mdHdhcmVJbnB1dFBhbmVsIGJlaGF2aW9yID0gUVN0eWxlOjpSZXF1ZXN0
U29mdHdhcmVJbnB1dFBhbmVsKAogICAgICAgICAgICAgY2xpZW50LT5vd25lcldpZGdldCgpLT5z
dHlsZSgpLT5zdHlsZUhpbnQoUVN0eWxlOjpTSF9SZXF1ZXN0U29mdHdhcmVJbnB1dFBhbmVsKSk7
CiAgICAgICAgIGlmICghY2xpY2tDYXVzZWRGb2N1cyB8fCBiZWhhdmlvciA9PSBRU3R5bGU6OlJT
SVBfT25Nb3VzZUNsaWNrKSB7Ci0gICAgICAgICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGZy
YW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoZnJhbWUtPnZpZXcoKS0+
d2luZG93VG9Db250ZW50cyhwb3MpLCBmYWxzZSk7CisgICAgICAgICAgICBIaXRUZXN0UmVzdWx0
IHJlc3VsdCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoZnJh
bWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhwb3MpKTsKICAgICAgICAgICAgIGlmIChyZXN1
bHQuaXNDb250ZW50RWRpdGFibGUoKSkgewogICAgICAgICAgICAgICAgIFFFdmVudCBldmVudChR
RXZlbnQ6OlJlcXVlc3RTb2Z0d2FyZUlucHV0UGFuZWwpOwogICAgICAgICAgICAgICAgIFFBcHBs
aWNhdGlvbjo6c2VuZEV2ZW50KGNsaWVudC0+b3duZXJXaWRnZXQoKSwgJmV2ZW50KTsKQEAgLTE1
NjUsNyArMTU2NSw3IEBAIEludFBvaW50IFFXZWJQYWdlUHJpdmF0ZTo6VG91Y2hBZGp1c3Rlcjo6
ZmluZENhbmRpZGF0ZVBvaW50Rm9yVG91Y2goY29uc3QgSW50UG9pCiAgICAgaW50IHggPSB0b3Vj
aFBvaW50LngoKTsKICAgICBpbnQgeSA9IHRvdWNoUG9pbnQueSgpOwogCi0gICAgUmVmUHRyPE5v
ZGVMaXN0PiBpbnRlcnNlY3RlZE5vZGVzID0gZG9jdW1lbnQtPm5vZGVzRnJvbVJlY3QoeCwgeSwg
bV90b3BQYWRkaW5nLCBtX3JpZ2h0UGFkZGluZywgbV9ib3R0b21QYWRkaW5nLCBtX2xlZnRQYWRk
aW5nLCBmYWxzZSAvKmlnbm9yZUNsaXBwaW5nKi8sIGZhbHNlIC8qYWxsb3dTaGFkb3dDb250ZW50
Ki8pOworICAgIFJlZlB0cjxOb2RlTGlzdD4gaW50ZXJzZWN0ZWROb2RlcyA9IGRvY3VtZW50LT5u
b2Rlc0Zyb21SZWN0KHgsIHksIG1fdG9wUGFkZGluZywgbV9yaWdodFBhZGRpbmcsIG1fYm90dG9t
UGFkZGluZywgbV9sZWZ0UGFkZGluZyk7CiAgICAgaWYgKCFpbnRlcnNlY3RlZE5vZGVzKQogICAg
ICAgICByZXR1cm4gSW50UG9pbnQoKTsKIApAQCAtMzM3MSw3ICszMzcxLDcgQEAgdm9pZCBRV2Vi
UGFnZTo6dXBkYXRlUG9zaXRpb25EZXBlbmRlbnRBY3Rpb25zKGNvbnN0IFFQb2ludCAmcG9zKQog
ICAgIGQtPmNyZWF0ZU1haW5GcmFtZSgpOwogICAgIFdlYkNvcmU6OkZyYW1lKiBmb2N1c2VkRnJh
bWUgPSBkLT5wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAK
LSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGZvY3VzZWRGcmFtZS0+ZXZlbnRIYW5kbGVyKCkt
PmhpdFRlc3RSZXN1bHRBdFBvaW50KGZvY3VzZWRGcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRl
bnRzKHBvcyksIC8qYWxsb3dTaGFkb3dDb250ZW50Ki8gZmFsc2UpOworICAgIEhpdFRlc3RSZXN1
bHQgcmVzdWx0ID0gZm9jdXNlZEZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0
UG9pbnQoZm9jdXNlZEZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMocG9zKSk7CiAgICAg
aWYgKHJlc3VsdC5zY3JvbGxiYXIoKSkKICAgICAgICAgZC0+aGl0VGVzdFJlc3VsdCA9IFFXZWJI
aXRUZXN0UmVzdWx0KCk7CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKaW5kZXggYmNmMDcyZDY1YjU2
NGZmMWVkNWFiNmFkNTEyOTQ2MTg0MDkxYjA2MS4uNzJhNWUwMDQ5ODJkZGU3NGU1MmE4NTlhMzBk
MTQ3NTdmNjAyY2YxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCkBAIC0xMjcyLDcgKzEyNzIsNyBAQCB2b2lk
IEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbihGcmFtZVBvbGljeUZ1bgogICAgICAgICAgICAgaWYgKGV2ZW50LT5pc01vdXNlRXZlbnQo
KSkgewogICAgICAgICAgICAgICAgIGNvbnN0IE1vdXNlRXZlbnQqIG1vdXNlRXZlbnQgPSAgc3Rh
dGljX2Nhc3Q8Y29uc3QgTW91c2VFdmVudCo+KGV2ZW50KTsKICAgICAgICAgICAgICAgICBub2Rl
ID0gUVdlYkZyYW1lUHJpdmF0ZTo6Y29yZShtX3dlYkZyYW1lKS0+ZXZlbnRIYW5kbGVyKCktPmhp
dFRlc3RSZXN1bHRBdFBvaW50KAotICAgICAgICAgICAgICAgICAgICBtb3VzZUV2ZW50LT5hYnNv
bHV0ZUxvY2F0aW9uKCksIGZhbHNlKS5pbm5lck5vblNoYXJlZE5vZGUoKTsKKyAgICAgICAgICAg
ICAgICAgICAgbW91c2VFdmVudC0+YWJzb2x1dGVMb2NhdGlvbigpKS5pbm5lck5vblNoYXJlZE5v
ZGUoKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQWN0aW9uUHJvcGVydHlCYWcuY3BwIGIv
U291cmNlL1dlYktpdC93aW4vV2ViQWN0aW9uUHJvcGVydHlCYWcuY3BwCmluZGV4IGZjYTgzYmUw
ZDRlOTAwMjEwM2EzMzQ2YWQxNzMyODk3OGI3ODMyNDcuLmQyOTA1MDkxZjJjNzMxNmMyYzU4MmZh
ZDA5ZjNlMzYxODQ4MmEzODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkFjdGlv
blByb3BlcnR5QmFnLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJBY3Rpb25Qcm9wZXJ0
eUJhZy5jcHAKQEAgLTEyMSw3ICsxMjEsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdl
YkFjdGlvblByb3BlcnR5QmFnOjpSZWFkKExQQ09MRVNUUiBwc3pQcm9wTmFtZSwgVkFSSQogICAg
IGlmIChpc0VxdWFsKHBzelByb3BOYW1lLCBXZWJBY3Rpb25FbGVtZW50S2V5KSkgewogICAgICAg
ICBpZiAoY29uc3QgTW91c2VFdmVudCogbW91c2VFdmVudCA9IGZpbmRNb3VzZUV2ZW50KG1fYWN0
aW9uLmV2ZW50KCkpKSB7CiAgICAgICAgICAgICBWX1ZUKHBWYXIpID0gVlRfVU5LTk9XTjsKLSAg
ICAgICAgICAgIFZfVU5LTk9XTihwVmFyKSA9IFdlYkVsZW1lbnRQcm9wZXJ0eUJhZzo6Y3JlYXRl
SW5zdGFuY2UobV9mcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KG1v
dXNlRXZlbnQtPmFic29sdXRlTG9jYXRpb24oKSwgZmFsc2UpKTsKKyAgICAgICAgICAgIFZfVU5L
Tk9XTihwVmFyKSA9IFdlYkVsZW1lbnRQcm9wZXJ0eUJhZzo6Y3JlYXRlSW5zdGFuY2UobV9mcmFt
ZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KG1vdXNlRXZlbnQtPmFic29s
dXRlTG9jYXRpb24oKSkpOwogICAgICAgICAgICAgcmV0dXJuIFNfT0s7CiAgICAgICAgIH0KICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYlZpZXcuY3BwCmluZGV4IDNmMzgwNjBjYzRhOTMzMWMzMGQzNTUwNWMxZjc4
M2IzNjMyNTRjNjMuLjllYTkzMzJlYzJjZDRlYjFjYzY0ZjgwMTE4NTA4ODI0ZDMyZmM5NjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvd2luL1dlYlZpZXcuY3BwCkBAIC0xMzIyLDcgKzEzMjIsNyBAQCBib29sIFdlYlZpZXc6Omhh
bmRsZUNvbnRleHRNZW51RXZlbnQoV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKICAgICBt
X3BhZ2UtPmNvbnRleHRNZW51Q29udHJvbGxlcigpLT5jbGVhckNvbnRleHRNZW51KCk7CiAKICAg
ICBJbnRQb2ludCBkb2N1bWVudFBvaW50KG1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+d2lu
ZG93VG9Db250ZW50cyhjb29yZHMpKTsKLSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IG1fcGFn
ZS0+bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChkb2N1
bWVudFBvaW50LCBmYWxzZSk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBtX3BhZ2UtPm1h
aW5GcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoZG9jdW1lbnRQ
b2ludCk7CiAgICAgRnJhbWUqIHRhcmdldEZyYW1lID0gcmVzdWx0LmlubmVyTm9uU2hhcmVkTm9k
ZSgpID8gcmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpLT5kb2N1bWVudCgpLT5mcmFtZSgpIDog
bV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAKICAgICB0
YXJnZXRGcmFtZS0+dmlldygpLT5zZXRDdXJzb3IocG9pbnRlckN1cnNvcigpKTsKQEAgLTM1OTcs
NyArMzU5Nyw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6ZWxlbWVudEF0
UG9pbnQoCiAgICAgSW50UG9pbnQgd2ViQ29yZVBvaW50ID0gSW50UG9pbnQocG9pbnQtPngsIHBv
aW50LT55KTsKICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IEhpdFRlc3RSZXN1bHQod2ViQ29y
ZVBvaW50KTsKICAgICBpZiAoZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpKQotICAgICAgICByZXN1
bHQgPSBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KHdlYkNvcmVQ
b2ludCwgZmFsc2UpOworICAgICAgICByZXN1bHQgPSBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhp
dFRlc3RSZXN1bHRBdFBvaW50KHdlYkNvcmVQb2ludCk7CiAgICAgKmVsZW1lbnREaWN0aW9uYXJ5
ID0gV2ViRWxlbWVudFByb3BlcnR5QmFnOjpjcmVhdGVJbnN0YW5jZShyZXN1bHQpOwogICAgIHJl
dHVybiBTX09LOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93eC9XZWJGcmFtZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L3d4L1dlYkZyYW1lLmNwcAppbmRleCBiMzc0MTEzYzA3NzJhMWM3ZjI2
ZjI0NDA4MzAwMmJiM2FhZThjOGE5Li40NzAxNjVkYjQ0ZTI3NWYyNDM1NThjYWZjMDU1MGEyYjIw
YjdjOGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3d4L1dlYkZyYW1lLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L3d4L1dlYkZyYW1lLmNwcApAQCAtNjg5LDcgKzY4OSw3IEBAIFdlYlZpZXdE
T01FbGVtZW50SW5mbyBXZWJGcmFtZTo6SGl0VGVzdChjb25zdCB3eFBvaW50JiBwb3MpIGNvbnN0
CiAgICAgV2ViVmlld0RPTUVsZW1lbnRJbmZvIGRvbUluZm87CiAKICAgICBpZiAobV9pbXBsLT5m
cmFtZS0+dmlldygpKSB7Ci0gICAgICAgIFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQgcmVzdWx0ID0g
bV9pbXBsLT5mcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KG1faW1w
bC0+ZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhwb3MpLCBmYWxzZSk7CisgICAgICAg
IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gbV9pbXBsLT5mcmFtZS0+ZXZlbnRIYW5k
bGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KG1faW1wbC0+ZnJhbWUtPnZpZXcoKS0+d2luZG93
VG9Db250ZW50cyhwb3MpKTsKICAgICAgICAgaWYgKHJlc3VsdC5pbm5lck5vZGUoKSkgewogICAg
ICAgICAgICAgZG9tSW5mby5TZXRMaW5rKHJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwoKS5zdHJpbmco
KSk7CiAgICAgICAgICAgICBkb21JbmZvLlNldFRleHQocmVzdWx0LnRleHRDb250ZW50KCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3BwCmluZGV4
IDQyODEzNTQ4MWFmZDljNTFiM2FiZDI3NmNlODYxNmQzOTZmOGI0M2UuLjI5YzcwZGZiNDY2Yzdk
MGVkNGYxNWViNGM5MjRjM2Q4MmNmNzFiMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgSW5qZWN0ZWRCdW5k
bGVOYXZpZ2F0aW9uQWN0aW9uOjpJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24oV2ViRnJh
bWUqIGZyYW1lLAogICAgICwgbV9tb3VzZUJ1dHRvbihXZWJNb3VzZUV2ZW50OjpOb0J1dHRvbikK
IHsKICAgICBpZiAoY29uc3QgTW91c2VFdmVudCogbW91c2VFdmVudCA9IG1vdXNlRXZlbnRGb3JO
YXZpZ2F0aW9uQWN0aW9uKG5hdmlnYXRpb25BY3Rpb24pKSB7Ci0gICAgICAgIG1faGl0VGVzdFJl
c3VsdCA9IEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdDo6Y3JlYXRlKGZyYW1lLT5jb3JlRnJh
bWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KG1vdXNlRXZlbnQtPmFi
c29sdXRlTG9jYXRpb24oKSwgZmFsc2UpKTsKKyAgICAgICAgbV9oaXRUZXN0UmVzdWx0ID0gSW5q
ZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0OjpjcmVhdGUoZnJhbWUtPmNvcmVGcmFtZSgpLT5ldmVu
dEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQobW91c2VFdmVudC0+YWJzb2x1dGVMb2Nh
dGlvbigpKSk7CiAgICAgICAgIG1fbW91c2VCdXR0b24gICA9IG1vdXNlQnV0dG9uRm9yTW91c2VF
dmVudChtb3VzZUV2ZW50KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBmNDBhYTBhM2UzM2EwZjA0MzEyZTViZmZiYTA1MGRl
MWMzOTRkMGIxLi4wNmUwYWMyNGIxOTg3Yzg3YTlmYjc5M2EwY2YyOWMzZTMzYjZmYmI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xMzEw
LDcgKzEzMTAsNyBAQCBzdGF0aWMgYm9vbCBpc0NvbnRleHRDbGljayhjb25zdCBQbGF0Zm9ybU1v
dXNlRXZlbnQmIGV2ZW50KQogc3RhdGljIGJvb2wgaGFuZGxlQ29udGV4dE1lbnVFdmVudChjb25z
dCBQbGF0Zm9ybU1vdXNlRXZlbnQmIHBsYXRmb3JtTW91c2VFdmVudCwgV2ViUGFnZSogcGFnZSkK
IHsKICAgICBJbnRQb2ludCBwb2ludCA9IHBhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLT52
aWV3KCktPndpbmRvd1RvQ29udGVudHMocGxhdGZvcm1Nb3VzZUV2ZW50LnBvc2l0aW9uKCkpOwot
ICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gcGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkt
PmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChwb2ludCwgZmFsc2UpOworICAg
IEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gcGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2
ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChwb2ludCk7CiAKICAgICBGcmFtZSog
ZnJhbWUgPSBwYWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKTsKICAgICBpZiAocmVzdWx0Lmlu
bmVyTm9uU2hhcmVkTm9kZSgpKQpAQCAtMTU1NSw3ICsxNTU1LDcgQEAgdm9pZCBXZWJQYWdlOjpo
aWdobGlnaHRQb3RlbnRpYWxBY3RpdmF0aW9uKGNvbnN0IEludFBvaW50JiBwb2ludCwgY29uc3Qg
SW50U2l6ZSYKICAgICAgICAgICAgIHJldHVybjsKIAogI2Vsc2UKLSAgICAgICAgSGl0VGVzdFJl
c3VsdCByZXN1bHQgPSBtYWluZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQ
b2ludChtYWluZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhwb2ludCksIC8qYWxsb3dT
aGFkb3dDb250ZW50Ki8gZmFsc2UsIC8qaWdub3JlQ2xpcHBpbmcqLyB0cnVlKTsKKyAgICAgICAg
SGl0VGVzdFJlc3VsdCByZXN1bHQgPSBtYWluZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0
UmVzdWx0QXRQb2ludChtYWluZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhwb2ludCks
IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRU
ZXN0UmVxdWVzdDo6QWxsb3dTaGFkb3dDb250ZW50KTsKICAgICAgICAgYWRqdXN0ZWROb2RlID0g
cmVzdWx0LmlubmVyTm9kZSgpOwogI2VuZGlmCiAgICAgICAgIC8vIEZpbmQgdGhlIG5vZGUgdG8g
aGlnaGxpZ2h0LiBUaGlzIGlzIG5vdCB0aGUgc2FtZSBhcyB0aGUgbm9kZSByZXNwb25kaW5nIHRo
ZSB0YXAgZ2VzdHVyZSwgYmVjYXVzZSBtYW55CkBAIC0yNzI0LDcgKzI3MjQsNyBAQCB2b2lkIFdl
YlBhZ2U6OmZpbmRab29tYWJsZUFyZWFGb3JQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYg
cG9pbnQsIGNvbnN0IFdlYgogewogICAgIFVOVVNFRF9QQVJBTShhcmVhKTsKICAgICBGcmFtZSog
bWFpbmZyYW1lID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpOwotICAgIEhpdFRlc3RSZXN1bHQg
cmVzdWx0ID0gbWFpbmZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQo
bWFpbmZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMocG9pbnQpLCAvKmFsbG93U2hhZG93
Q29udGVudCovIGZhbHNlLCAvKmlnbm9yZUNsaXBwaW5nKi8gdHJ1ZSk7CisgICAgSGl0VGVzdFJl
c3VsdCByZXN1bHQgPSBtYWluZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQ
b2ludChtYWluZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhwb2ludCksIEhpdFRlc3RS
ZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVz
dDo6SWdub3JlQ2xpcHBpbmcpOwogCiAgICAgTm9kZSogbm9kZSA9IHJlc3VsdC5pbm5lck5vZGUo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9X
ZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQ
YWdlTWFjLm1tCmluZGV4IGMyZjAxNjUzNzU5NTNiNTNjYzNjZDFiOWViNDMxZGI1ZWNlYjkzYWQu
LjM1OWYzNWE1ZmI3NGJkZmZhYTc4M2NjYjc2MTNhYTg0ZDQ3ZGI2NmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTM3
NSw3ICszNzUsNyBAQCB2b2lkIFdlYlBhZ2U6OmNoYXJhY3RlckluZGV4Rm9yUG9pbnQoSW50UG9p
bnQgcG9pbnQsIHVpbnQ2NF90JiBpbmRleCkKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1
cm47CiAKLSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+
aGl0VGVzdFJlc3VsdEF0UG9pbnQocG9pbnQsIGZhbHNlKTsKKyAgICBIaXRUZXN0UmVzdWx0IHJl
c3VsdCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQocG9pbnQp
OwogICAgIGZyYW1lID0gcmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpID8gcmVzdWx0LmlubmVy
Tm9uU2hhcmVkTm9kZSgpLT5kb2N1bWVudCgpLT5mcmFtZSgpIDogbV9wYWdlLT5mb2N1c0NvbnRy
b2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgCiAgICAgUmVmUHRyPFJhbmdlPiBy
YW5nZSA9IGZyYW1lLT5yYW5nZUZvclBvaW50KHJlc3VsdC5yb3VuZGVkUG9pbnQoKSk7CkBAIC00
NjQsNyArNDY0LDcgQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9j
YXRpb24oY29uc3QgRmxvYXRQb2ludCYgZmxvYXRQb2ludCkKIAogICAgIC8vIEZpbmQgdGhlIGZy
YW1lIHRoZSBwb2ludCBpcyBvdmVyLgogICAgIEludFBvaW50IHBvaW50ID0gcm91bmRlZEludFBv
aW50KGZsb2F0UG9pbnQpOwotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZnJhbWUtPmV2ZW50
SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChmcmFtZS0+dmlldygpLT53aW5kb3dUb0Nv
bnRlbnRzKHBvaW50KSwgZmFsc2UpOworICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZnJhbWUt
PmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChmcmFtZS0+dmlldygpLT53aW5k
b3dUb0NvbnRlbnRzKHBvaW50KSk7CiAgICAgZnJhbWUgPSByZXN1bHQuaW5uZXJOb25TaGFyZWRO
b2RlKCkgPyByZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCktPmRvY3VtZW50KCktPmZyYW1lKCkg
OiBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKIAogICAg
IEludFBvaW50IHRyYW5zbGF0ZWRQb2ludCA9IGZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVu
dHMocG9pbnQpOwpAQCAtNzI3LDcgKzcyNyw3IEBAIHZvaWQgV2ViUGFnZTo6c2hvdWxkRGVsYXlX
aW5kb3dPcmRlcmluZ0V2ZW50KGNvbnN0IFdlYktpdDo6V2ViTW91c2VFdmVudCYgZXZlbnQsCiAg
ICAgICAgIHJldHVybjsKIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi0gICAgSGl0VGVzdFJl
c3VsdCBoaXRSZXN1bHQgPSBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBv
aW50KGZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMoZXZlbnQucG9zaXRpb24oKSksIHRy
dWUpOworICAgIEhpdFRlc3RSZXN1bHQgaGl0UmVzdWx0ID0gZnJhbWUtPmV2ZW50SGFuZGxlcigp
LT5oaXRUZXN0UmVzdWx0QXRQb2ludChmcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKGV2
ZW50LnBvc2l0aW9uKCkpLCBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVz
dDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93U2hhZG93Q29udGVudCk7CiAgICAgaWYg
KGhpdFJlc3VsdC5pc1NlbGVjdGVkKCkpCiAgICAgICAgIHJlc3VsdCA9IGZyYW1lLT5ldmVudEhh
bmRsZXIoKS0+ZXZlbnRNYXlTdGFydERyYWcocGxhdGZvcm0oZXZlbnQpKTsKICNlbmRpZgpAQCAt
NzQwLDcgKzc0MCw3IEBAIHZvaWQgV2ViUGFnZTo6YWNjZXB0c0ZpcnN0TW91c2UoaW50IGV2ZW50
TnVtYmVyLCBjb25zdCBXZWJLaXQ6OldlYk1vdXNlRXZlbnQmIGV2CiAgICAgaWYgKCFmcmFtZSkK
ICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIEhpdFRlc3RSZXN1bHQgaGl0UmVzdWx0ID0gZnJh
bWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChmcmFtZS0+dmlldygpLT53
aW5kb3dUb0NvbnRlbnRzKGV2ZW50LnBvc2l0aW9uKCkpLCB0cnVlKTsKKyAgICBIaXRUZXN0UmVz
dWx0IGhpdFJlc3VsdCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9p
bnQoZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhldmVudC5wb3NpdGlvbigpKSwgSGl0
VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RS
ZXF1ZXN0OjpBbGxvd1NoYWRvd0NvbnRlbnQpOwogICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+
c2V0QWN0aXZhdGlvbkV2ZW50TnVtYmVyKGV2ZW50TnVtYmVyKTsKICNpZiBFTkFCTEUoRFJBR19T
VVBQT1JUKQogICAgIGlmIChoaXRSZXN1bHQuaXNTZWxlY3RlZCgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIu
ZGVmCmluZGV4IDk3NWE3M2QzODc2ZWI0MzZlYjRiZWI5MjA5ODY1ZjE5OGViMDViYzEuLjhlNTYw
OTFiNTg3MTI2NjY4YzBjODQwZWVhNmU1ZGYzMDlkMjUzNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgorKysgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5k
ZWYKQEAgLTI1OSw3ICsyNTksNyBAQCBFWFBPUlRTCiAgICAgICAgID8/MUNvbnRleHREZXN0cnVj
dGlvbk9ic2VydmVyQFdlYkNvcmVAQE1BRUBYWgogICAgICAgICA/Y29udGV4dERlc3Ryb3llZEBD
b250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlckBXZWJDb3JlQEBVQUVYWFoKICAgICAgICAgPz8wQ29u
dGV4dERlc3RydWN0aW9uT2JzZXJ2ZXJAV2ViQ29yZUBAUUFFQFBBVlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRAMUBAWgotICAgICAgICA/bm9kZXNGcm9tUmVjdEBEb2N1bWVudEBXZWJDb3JlQEBRQkU/
QVY/JFBhc3NSZWZQdHJAVk5vZGVMaXN0QFdlYkNvcmVAQEBXVEZAQEhISUlJSV9OMDBAWgorICAg
ICAgICA/bm9kZXNGcm9tUmVjdEBEb2N1bWVudEBXZWJDb3JlQEBRQkU/QVY/JFBhc3NSZWZQdHJA
Vk5vZGVMaXN0QFdlYkNvcmVAQEBXVEZAQEhISUlJSUlAWgogICAgICAgICA/c2VsZWN0aW9uU3Rh
cnRIYXNNYXJrZXJGb3JARWRpdG9yQFdlYkNvcmVAQFFCRV9OVzRNYXJrZXJUeXBlQERvY3VtZW50
TWFya2VyQDJASEhAWgogICAgICAgICA/d2Via2l0V2lsbEVudGVyRnVsbFNjcmVlbkZvckVsZW1l
bnRARG9jdW1lbnRAV2ViQ29yZUBAUUFFWFBBVkVsZW1lbnRAMkBAWgogICAgICAgICA/d2Via2l0
RGlkRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudEBEb2N1bWVudEBXZWJDb3JlQEBRQUVYUEFWRWxl
bWVudEAyQEBaCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5k
ZWYgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYKaW5kZXggMzNlOGRlYjgw
NzgzOWQzNGFhYWNiNDU1MTlmMDgzZGQzOWE2YTZjYS4uMDlmYjAzMjcyODBiYWNjOGI0ZDU3MGIy
MzIwZmUwOTJiOWI4NzAwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJD
RkxpdGUuZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgpAQCAt
MjUzLDcgKzI1Myw3IEBAIEVYUE9SVFMKICAgICAgICAgP3VzZXJQcmVmZXJyZWRMYW5ndWFnZXNA
V2ViQ29yZUBAWUE/QVY/JFZlY3RvckBWU3RyaW5nQFdURkBAJDBBQEBXVEZAQFhaCiAgICAgICAg
ID91dGY4QFN0cmluZ0BXVEZAQFFCRT9BVkNTdHJpbmdAMkBfTkBaCiAgICAgICAgID92aWV3QERv
Y3VtZW50QFdlYkNvcmVAQFFCRVBBVkZyYW1lVmlld0AyQFhaCi0gICAgICAgID9ub2Rlc0Zyb21S
ZWN0QERvY3VtZW50QFdlYkNvcmVAQFFCRT9BVj8kUGFzc1JlZlB0ckBWTm9kZUxpc3RAV2ViQ29y
ZUBAQFdURkBASEhJSUlJX04wMEBaCisgICAgICAgID9ub2Rlc0Zyb21SZWN0QERvY3VtZW50QFdl
YkNvcmVAQFFCRT9BVj8kUGFzc1JlZlB0ckBWTm9kZUxpc3RAV2ViQ29yZUBAQFdURkBASEhJSUlJ
SUBaCiAgICAgICAgID9zZWxlY3Rpb25TdGFydEhhc01hcmtlckZvckBFZGl0b3JAV2ViQ29yZUBA
UUJFX05XNE1hcmtlclR5cGVARG9jdW1lbnRNYXJrZXJAMkBISEBaCiAgICAgICAgID9yZXN0cmlj
dFNjYWxlRmFjdG9yVG9Jbml0aWFsU2NhbGVJZk5vdFVzZXJTY2FsYWJsZUBXZWJDb3JlQEBZQVhB
QVVWaWV3cG9ydEF0dHJpYnV0ZXNAMUBAWgogICAgICAgICA/cmVzdHJpY3RNaW5pbXVtU2NhbGVG
YWN0b3JUb1ZpZXdwb3J0U2l6ZUBXZWJDb3JlQEBZQVhBQVVWaWV3cG9ydEF0dHJpYnV0ZXNAMUBW
SW50U2l6ZUAxQEBaCmRpZmYgLS1naXQgYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVy
IGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgppbmRleCAxYTIxZWY5ZWY2MTkxMTg2
NDg4Zjc4ZWNiZmZmNDZjNWNjMzA2YmFmLi5hOTE4YzhjYjI5MDE4MmIzOTFiYTZkMmY5OTZlODVi
MmU0MDhhODQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCisr
KyBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKQEAgLTE2Miw3ICsxNjIsNyBAQCBf
Wk43V2ViQ29yZTIyUnVudGltZUVuYWJsZWRGZWF0dXJlczE4aXNTaGFkb3dET01FbmFibGVkRTsK
IF9aTjdXZWJDb3JlMjJSdW50aW1lRW5hYmxlZEZlYXR1cmVzMjJpc0NTU0V4Y2x1c2lvbnNFbmFi
bGVkRTsKIF9aTjdXZWJDb3JlMjJSdW50aW1lRW5hYmxlZEZlYXR1cmVzMjJpc0RpYWxvZ0VsZW1l
bnRFbmFibGVkRTsKIF9aTjdXZWJDb3JlMjJSdW50aW1lRW5hYmxlZEZlYXR1cmVzMzdpc0F1dGhv
clNoYWRvd0RPTUZvckFueUVsZW1lbnRFbmFibGVkRTsKLV9aTks3V2ViQ29yZThEb2N1bWVudDEz
bm9kZXNGcm9tUmVjdEVpaWpqampiYmI7CitfWk5LN1dlYkNvcmU4RG9jdW1lbnQxM25vZGVzRnJv
bVJlY3RFaWlqampqajsKIF9aTjdXZWJDb3JlNHRvSlNFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNfMTdK
U0RPTUdsb2JhbE9iamVjdEVQTlNfOE5vZGVMaXN0RTsKIF9aTks3V2ViQ29yZTZFZGl0b3IyNnNl
bGVjdGlvblN0YXJ0SGFzTWFya2VyRm9yRU5TXzE0RG9jdW1lbnRNYXJrZXIxME1hcmtlclR5cGVF
aWk7CiBfWk43V2ViQ29yZThEb2N1bWVudDMzd2Via2l0RGlkRXhpdEZ1bGxTY3JlZW5Gb3JFbGVt
ZW50RVBOU183RWxlbWVudEU7CmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5k
ZXggMmI3YmM4ZTEzZWVkOTA5OGYwZGQ1ZTIzYzJiMWZmNGMzMGZhNTI4Ny4uODJiOThkMmU0ZDkx
OGQyY2EyOGU3ODQ3YWMxOGZlNWUzZDllZWMyYyAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBi
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA5LTA1ICBBbGxhbiBTYW5kZmVsZCBK
ZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgorCisgICAgICAgIFNpbXBsaWZ5IGhpdFRl
c3RSZXN1bHRBdFBvaW50IGFuZCBub2Rlc0Zyb21SZWN0IEFQSXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NzIwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGV4cG9ydGVkIHN5bWJvbHMuCisK
KyAgICAgICAgKiBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyOgorCiAyMDEyLTA5LTA2
ICBaYW4gRG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CiAKICAgICAgICAgW0d0a10g
UmVtb3ZlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgZmVhdHVyZXMgdGhhdCBhcmUgbm90IHN1
cHBvcnRlZCBieSB0aGUgR3RrIHBvcnQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162752</attachid>
            <date>2012-09-07 06:04:31 -0700</date>
            <delta_ts>2013-02-13 06:03:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95720-20120907150401.patch</filename>
            <type>text/plain</type>
            <size>64329</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3ODQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmVmNDQyZjc1NzcwODU5
YzZkYTgzZGMzMThlNzlmY2ViMzljZDI2NC4uYTYyOTkxMTVhOGJmY2RjNzc2MzBmN2JiMjEyOWFm
MDc1ZThjNzlkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTA5LTA1ICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgorCisgICAgICAgIFNp
bXBsaWZ5IGhpdFRlc3RSZXN1bHRBdFBvaW50IGFuZCBub2Rlc0Zyb21SZWN0IEFQSXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NzIwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGV4aXN0aW5nIEFQ
SSB3YXMgb3ZlcmxvYWRlZCBhbmQgY291bGQgYmUgc2ltcGxpZmllZCBieSBwYXNzaW5nIGFsbCB0
aGUgYm9vbCBhcmd1bWVudHMgaW4gCisgICAgICAgIGEgSGl0VGVzdFJlcXVlc3QgYXJndW1lbnQu
IFRoaXMgc2hvdWxkIGFsc28gaGVscCBjbGFyaWZ5IHRoZSBjYWxsIGFzIHRoZSBlbnVtIHZhbHVl
cyBleHBsaWNpdGVseQorICAgICAgICBzdGF0ZSB3aGF0IHRoZXkgZG8uCisKKyAgICAgICAgKiBX
ZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLm9yZGVyOgorICAgICAgICAqIGRvbS9E
b2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6bm9kZXNGcm9tUmVjdCk6
CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChEb2N1bWVudCk6CisgICAgICAg
ICogcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGV4dE1lbnVDb250cm9sbGVyOjpjcmVhdGVDb250ZXh0TWVudSk6CisgICAgICAgICogcGFnZS9E
cmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6Y2Fu
UHJvY2Vzc0RyYWcpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJh
Zyk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRIYW5kbGVyOjp1cGRhdGVBdXRvc2Nyb2xsUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RXZlbnRIYW5kbGVyOjpoaXRUZXN0UmVzdWx0QXRQb2ludCk6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudEhhbmRsZXI6OmJlc3RDbGlja2FibGVOb2RlRm9yVG91Y2hQb2ludCk6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudEhhbmRsZXI6OmJlc3RDb250ZXh0TWVudU5vZGVGb3JUb3VjaFBvaW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6YmVzdFpvb21hYmxlQXJlYUZvclRvdWNo
UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVUb3VjaEV2ZW50
KToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAgICAoRXZlbnRIYW5kbGVy
KToKKyAgICAgICAgKiBwYWdlL0ZvY3VzQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojp1cGRhdGVGb2N1c0NhbmRpZGF0ZUlmTmVlZGVkKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjp2aXNpYmxlUG9zaXRpb25Gb3JQb2ludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZTo6ZG9jdW1lbnRBdFBvaW50KToKKyAgICAgICAgKiBwYWdl
L1RvdWNoRGlzYW1iaWd1YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmluZEdvb2RUb3Vj
aFRhcmdldHMpOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0UmVxdWVzdC5oOgorICAgICAg
ICAoSGl0VGVzdFJlcXVlc3QpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6bm9kZXNGcm9tUmVjdCk6CisKIDIwMTItMDktMDcg
IFlvc2hpZnVtaSBJbm91ZSAgPHlvc2luQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZSBzaG91
bGQgaGF2ZSBhIGxvY2FsaXplZCBzdHJpbmcgb2YgZW1wdHkgZm9yIGRhdGUgdGltZSBmaWVsZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKaW5kZXggZjQzYTIwYzM0ODZhNzU2NjIxMzU3NmNk
ZDMxNmM3YjRlODY2NWNlOC4uYTU5ZjlhNjc1ZTZlNjExZGMzNWRiMGU0MGU1ZjI2NmUyODhiYjA4
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTIt
MDktMDUgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+CisK
KyAgICAgICAgU2ltcGxpZnkgaGl0VGVzdFJlc3VsdEF0UG9pbnQgYW5kIG5vZGVzRnJvbVJlY3Qg
QVBJcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU3
MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRh
dGUgY2FsbHMgdG8gbmV3IEFQSS4KKworICAgICAgICAqIEFwaS9XZWJQYWdlLmNwcDoKKyAgICAg
ICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZVByaXZhdGU6OmNvbnRleHROb2RlKToKKyAg
ICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZVByaXZhdGU6Om5vZGVGb3Jab29tVW5k
ZXJQb2ludCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VQcml2YXRlOjpo
YW5kbGVNb3VzZUV2ZW50KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZTo6
bm9kZUF0UG9pbnQpOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvRmF0RmluZ2Vycy5jcHA6Cisg
ICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkZhdEZpbmdlcnM6OmdldE5vZGVzRnJvbVJlY3Qp
OgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpGYXRGaW5nZXJzOjpnZXRSZWxldmFudElu
Zm9Gcm9tUG9pbnQpOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvU2VsZWN0aW9uSGFuZGxlci5j
cHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OnZpc2libGVQb3NpdGlvbkZvclBvaW50
SWdub3JpbmdDbGlwcGluZyk6CisKIDIwMTItMDktMDYgIENyeXN0YWwgWmhhbmcgIDxoYWl6aGFu
Z0ByaW0uY29tPgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSAgSW1wbGVtZW50IGEgY29sb3IgcGlj
a2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGRjYTQ4Njg3MzViZjJlMTExZWE2OGQ3
ZWQxNDk0ZWNlOWI4YTY1MzQuLmI3YTI5YmIwYTdjMmQ2NDQyODk2ZmM4OTNjZWVjYzg1MGFjZDE1
Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTItMDkt
MDUgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+CisKKyAg
ICAgICAgU2ltcGxpZnkgaGl0VGVzdFJlc3VsdEF0UG9pbnQgYW5kIG5vZGVzRnJvbVJlY3QgQVBJ
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU3MjAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUg
Y2FsbHMgdG8gbmV3IEFQSS4KKworICAgICAgICAqIHNyYy9Db250ZXh0TWVudUNsaWVudEltcGwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpzZWxlY3RNaXNzcGVsbGVkV29yZCk6CisgICAgICAgICog
c3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9h
ZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToK
KyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJh
bWVJbXBsOjpjaGFyYWN0ZXJJbmRleEZvclBvaW50KToKKyAgICAgICAgKiBzcmMvV2ViUGx1Z2lu
Q29udGFpbmVySW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbkNvbnRhaW5lcklt
cGw6OmlzUmVjdFRvcG1vc3QpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpoYW5kbGVNb3VzZVVwKToKKyAgICAgICAgKFdlYktp
dDo6V2ViVmlld0ltcGw6OmNvbXB1dGVCbG9ja0JvdW5kcyk6CisKIDIwMTItMDktMDcgIFlvc2hp
ZnVtaSBJbm91ZSAgPHlvc2luQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZSBzaG91bGQgaGF2
ZSBhIGxvY2FsaXplZCBzdHJpbmcgb2YgZW1wdHkgZm9yIGRhdGUgdGltZSBmaWVsZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hh
bmdlTG9nCmluZGV4IDM2YzhjYmU3MTM0Mjk3NGU2NmMzMWZjNmY2MmY3MGVmMWMwZDFkOWYuLjgx
ZmY3M2U4MzAwNTY4YTRlZjZmZmM1YTkzMzQ4YWVhYTRhMzQzYTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNSBAQAorMjAxMi0wOS0wNSAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxs
YW4uamVuc2VuQG5va2lhLmNvbT4KKworICAgICAgICBTaW1wbGlmeSBoaXRUZXN0UmVzdWx0QXRQ
b2ludCBhbmQgbm9kZXNGcm9tUmVjdCBBUElzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05NTcyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBjYWxscyB0byBuZXcgQVBJLgorCisgICAgICAgICog
ZXdrL2V3a19mcmFtZS5jcHA6CisgICAgICAgIChld2tfZnJhbWVfaGl0X3Rlc3RfbmV3KToKKwog
MjAxMi0wOS0wNyAgS2lob25nIEt3b24gIDxraWhvbmcua3dvbkBzYW1zdW5nLmNvbT4KIAogICAg
ICAgICBbRUZMXSBTdXBwb3J0IHRoZSBwZXJtaXNzaW9uIGZ1bmN0aW9uIG9mIHRoZSBXZWIgTm90
aWZpY2F0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDQyZGU3ODZmOTliMjczMjhmYmIxMzdhNzg0
YmIxNjJjYzcyOTdiZTcuLmIxMDY3YjcwYzQ5Y2I1MDNmYTVlODIwZDA4Yjk4ZTQ1N2NiZDFmYjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wOS0wNSAgQWxsYW4gU2Fu
ZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQG5va2lhLmNvbT4KKworICAgICAgICBTaW1wbGlm
eSBoaXRUZXN0UmVzdWx0QXRQb2ludCBhbmQgbm9kZXNGcm9tUmVjdCBBUElzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTcyMAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBjYWxscyB0byBuZXcg
QVBJLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06
CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6YWN0aW9uRGljdGlvbmFyeSk6CisgICAg
ICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgZWxl
bWVudEF0UG9pbnQ6YWxsb3dTaGFkb3dDb250ZW50Ol0pOgorCiAyMDEyLTA5LTA1ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUGFydCAyIG9mIHJlbW92aW5nIFBsYXRm
b3JtU3RyaW5nLmgsIHJlbW92ZSBQbGF0Zm9ybVN0cmluZy5oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDRi
YmFmYWEzZmRmMTRjYTBjZjZiYWY5YjBiMTU3NTNiOGRjZGIwYjkuLmRjMzhmODQxYWQ4MTg2YmIy
OWEzOWEzYmFjNTkxZjM1MDljNGU2ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAK
KzIwMTItMDktMDUgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tpYS5j
b20+CisKKyAgICAgICAgU2ltcGxpZnkgaGl0VGVzdFJlc3VsdEF0UG9pbnQgYW5kIG5vZGVzRnJv
bVJlY3QgQVBJcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTU3MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVcGRhdGUgY2FsbHMgdG8gbmV3IEFQSS4KKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3Bw
OgorICAgICAgICAoUVdlYkZyYW1lOjpoaXRUZXN0Q29udGVudCk6CisgICAgICAgICogQXBpL3F3
ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6aGFuZGxlU29mdHdhcmVJbnB1
dFBhbmVsKToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6VG91Y2hBZGp1c3Rlcjo6ZmluZENh
bmRpZGF0ZVBvaW50Rm9yVG91Y2gpOgorICAgICAgICAoUVdlYlBhZ2U6OnVwZGF0ZVBvc2l0aW9u
RGVwZW5kZW50QWN0aW9ucyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNw
YXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorCiAyMDEyLTA5LTA1ICBTYW0g
V2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUGFydCAyIG9mIHJlbW92aW5nIFBs
YXRmb3JtU3RyaW5nLmgsIHJlbW92ZSBQbGF0Zm9ybVN0cmluZy5oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5k
ZXggZmVmMzkxZTc0YzFiZDNiZDUwOWU2OWU1MzE0MTM0MmJjOGQ3Yjc5OC4uZDM2NjcwNTYzZjVm
OGUyOTA0MDNkODBiZGYxNjM1YWRiNjY2YTg4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93
aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE4IEBACisyMDEyLTA5LTA1ICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5A
bm9raWEuY29tPgorCisgICAgICAgIFNpbXBsaWZ5IGhpdFRlc3RSZXN1bHRBdFBvaW50IGFuZCBu
b2Rlc0Zyb21SZWN0IEFQSXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTk1NzIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVXBkYXRlIGNhbGxzIHRvIG5ldyBBUEkuCisKKyAgICAgICAgKiBXZWJBY3Rpb25Q
cm9wZXJ0eUJhZy5jcHA6CisgICAgICAgIChXZWJBY3Rpb25Qcm9wZXJ0eUJhZzo6UmVhZCk6Cisg
ICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3OjpoYW5kbGVDb250ZXh0TWVu
dUV2ZW50KToKKyAgICAgICAgKFdlYlZpZXc6OmVsZW1lbnRBdFBvaW50KToKKwogMjAxMi0wOS0w
NSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFBhcnQgMiBvZiByZW1v
dmluZyBQbGF0Zm9ybVN0cmluZy5oLCByZW1vdmUgUGxhdGZvcm1TdHJpbmcuaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxv
ZwppbmRleCA0YTI2YmIxNjIxMmNhNzNjMjMyMTYyNGEzNjc0M2I4ZTEzNzAzZTc3Li44ZTQ4ZWJh
MWFiY2Q5OWFhNWU1YjU1YjdjOTg1MWQ4NDI0MGJjNTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3d4L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE1IEBACisyMDEyLTA5LTA1ICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5z
ZW5Abm9raWEuY29tPgorCisgICAgICAgIFNpbXBsaWZ5IGhpdFRlc3RSZXN1bHRBdFBvaW50IGFu
ZCBub2Rlc0Zyb21SZWN0IEFQSXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTk1NzIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVXBkYXRlIGNhbGxzIHRvIG5ldyBBUEkuCisKKyAgICAgICAgKiBXZWJGcmFt
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpIaXRUZXN0KToKKwogMjAxMi0wOS0w
NSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFBhcnQgMiBvZiByZW1v
dmluZyBQbGF0Zm9ybVN0cmluZy5oLCByZW1vdmUgUGxhdGZvcm1TdHJpbmcuaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IGFjN2E1MmUwODU5YTA4OTdiYjllM2UyMTMyNWQ5ODY5MWI0NWIyMjAuLjlkOTMwNjcwN2Yw
NzRlZGQ4NTFkMWE2NmY3YTczZjA3MTUwYjk1ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBA
QAorMjAxMi0wOS0wNSAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQG5va2lh
LmNvbT4KKworICAgICAgICBTaW1wbGlmeSBoaXRUZXN0UmVzdWx0QXRQb2ludCBhbmQgbm9kZXNG
cm9tUmVjdCBBUElzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05NTcyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFVwZGF0ZSBjYWxscyB0byBuZXcgQVBJIGFuZCB1cGRhdGUgZXhwb3J0ZWQgc3ltYm9scy4K
KworICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZp
Z2F0aW9uQWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0
aW9uQWN0aW9uOjpJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6aGFuZGxlQ29u
dGV4dE1lbnVFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmhpZ2hsaWdodFBvdGVu
dGlhbEFjdGl2YXRpb24pOiBDb3JyZWN0cyB0aGUgbWlzcGxhY2VkIGFyZ3VtZW50cyB3aGlsZSBj
b252ZXJ0aW5nIHRoZW0uCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmZpbmRab29tYWJsZUFy
ZWFGb3JQb2ludCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFj
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjaGFyYWN0ZXJJbmRleEZvclBvaW50KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2hvdWxkRGVsYXlXaW5kb3dPcmRlcmlu
Z0V2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YWNjZXB0c0ZpcnN0TW91c2UpOgor
ICAgICAgICAqIHdpbi9XZWJLaXQyLmRlZjoKKyAgICAgICAgKiB3aW4vV2ViS2l0MkNGTGl0ZS5k
ZWY6CisKIDIwMTItMDktMDcgIE1pa2hhaWwgUG96ZG55YWtvdiAgPG1pa2hhaWwucG96ZG55YWtv
dkBpbnRlbC5jb20+CiAKICAgICAgICAgW1dLMl0gQVBJQ2xpZW50VHJhaXRzPFdLUGFnZUxvYWRl
ckNsaWVudD4gYW5kIEFQSUNsaWVudFRyYWl0czxXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQ+IGFy
ZSBub3QgaW5pdGlhbGl6ZWQgcHJvcGVybHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggYTY1ZDVk
NTU0YmM0ZTcyMTcxMDQ3NDE1MTQ4YzgyY2YwMDQ5YzM0My4uYjQ3NjlmOTE4MjU0OTFkNDIzNzY2
MTg4YmZjOTk5ZGViMmYzMWU1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTE1OCw3ICsxNTgs
NyBAQCBfX1pON1dlYkNvcmUxMkV2ZW50SGFuZGxlcjE0c2Nyb2xsT3ZlcmZsb3dFTlNfMTVTY3Jv
bGxEaXJlY3Rpb25FTlNfMTdTY3JvbGxHcmFudQogX19aTjdXZWJDb3JlMTJFdmVudEhhbmRsZXIx
NWhhbmRsZUFjY2Vzc0tleUVSS05TXzIxUGxhdGZvcm1LZXlib2FyZEV2ZW50RQogX19aTjdXZWJD
b3JlMTJFdmVudEhhbmRsZXIxNmhhbmRsZVdoZWVsRXZlbnRFUktOU18xOFBsYXRmb3JtV2hlZWxF
dmVudEUKIF9fWk43V2ViQ29yZTEyRXZlbnRIYW5kbGVyMTdzY3JvbGxSZWN1cnNpdmVseUVOU18x
NVNjcm9sbERpcmVjdGlvbkVOU18xN1Njcm9sbEdyYW51bGFyaXR5RVBOU180Tm9kZUUKLV9fWk43
V2ViQ29yZTEyRXZlbnRIYW5kbGVyMjBoaXRUZXN0UmVzdWx0QXRQb2ludEVSS05TXzIxRnJhY3Rp
b25hbExheW91dFBvaW50RWJiTlNfMTdIaXRUZXN0U2Nyb2xsYmFyc0VqUktOU18yMEZyYWN0aW9u
YWxMYXlvdXRTaXplRQorX19aTjdXZWJDb3JlMTJFdmVudEhhbmRsZXIyMGhpdFRlc3RSZXN1bHRB
dFBvaW50RVJLTlNfMjFGcmFjdGlvbmFsTGF5b3V0UG9pbnRFalJLTlNfMjBGcmFjdGlvbmFsTGF5
b3V0U2l6ZUUKIF9fWk43V2ViQ29yZTEyRXZlbnRIYW5kbGVyMjFoYW5kbGVNb3VzZVByZXNzRXZl
bnRFUktOU18xOFBsYXRmb3JtTW91c2VFdmVudEUKIF9fWk43V2ViQ29yZTEyRXZlbnRIYW5kbGVy
MjNoYW5kbGVNb3VzZVJlbGVhc2VFdmVudEVSS05TXzE4UGxhdGZvcm1Nb3VzZUV2ZW50RQogX19a
TjdXZWJDb3JlMTJFdmVudEhhbmRsZXIyNGxvZ2ljYWxTY3JvbGxSZWN1cnNpdmVseUVOU18yMlNj
cm9sbExvZ2ljYWxEaXJlY3Rpb25FTlNfMTdTY3JvbGxHcmFudWxhcml0eUVQTlNfNE5vZGVFCkBA
IC0xMzU0LDcgKzEzNTQsNyBAQCBfX1pOSzdXZWJDb3JlN1J1bkxvb3A5VGltZXJCYXNlOGlzQWN0
aXZlRXYKIF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQxMHJlbmRlclZpZXdFdgogX19aTks3V2ViQ29y
ZThEb2N1bWVudDExY29tcGxldGVVUkxFUktOM1dURjZTdHJpbmdFCiBfX1pOSzdXZWJDb3JlOERv
Y3VtZW50MTNheE9iamVjdENhY2hlRXYKLV9fWk5LN1dlYkNvcmU4RG9jdW1lbnQxM25vZGVzRnJv
bVJlY3RFaWlqampqYmJiCitfX1pOSzdXZWJDb3JlOERvY3VtZW50MTNub2Rlc0Zyb21SZWN0RWlp
ampqamoKIF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQxNGdldEVsZW1lbnRCeUlkRVJLTjNXVEYxMkF0
b21pY1N0cmluZ0UKIF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQzMWRpc3BsYXlTdHJpbmdNb2RpZmll
ZEJ5RW5jb2RpbmdFUktOM1dURjZTdHJpbmdFCiBfX1pOSzdXZWJDb3JlOERvY3VtZW50NGJvZHlF
dgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlciBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUub3JkZXIKaW5kZXggYTI0MzQzMjlmOWYwODlhMjYyMTVmNjZmZWU0ZGZiZTNi
MTYxNDdiZS4uNGQwOWVhZDkzNzU2YjJlNTAzY2Q4ZWY0MmEyZDE2OTQyZGIyYjExMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLm9yZGVyCkBAIC0yMjc4NSw3ICsyMjc4NSw3IEBAIF9fWk5LN1dlYkNvcmUxMk5vZGVJ
dGVyYXRvcjIwdXBkYXRlRm9yTm9kZVJlbW92YWxFUE5TXzROb2RlRVJOUzBfMTFOb2RlUG9pbnRl
ckUKIF9fWk43V2ViQ29yZTI3anNOb2RlSXRlcmF0b3JSZWZlcmVuY2VOb2RlRVBOM0pTQzlFeGVj
U3RhdGVFTlMwXzdKU1ZhbHVlRVJLTlMwXzEwSWRlbnRpZmllckUKIF9fWk5LN1dlYkNvcmU0Tm9k
ZTIwdHJhdmVyc2VQcmV2aW91c05vZGVFUEtTMF8KIF9fWk43V2ViQ29yZTM3anNOb2RlSXRlcmF0
b3JQcm90b3R5cGVGdW5jdGlvbkRldGFjaEVQTjNKU0M5RXhlY1N0YXRlRQotX19aTks3V2ViQ29y
ZThEb2N1bWVudDEzbm9kZXNGcm9tUmVjdEVpaWpqampiYmIKK19fWk5LN1dlYkNvcmU4RG9jdW1l
bnQxM25vZGVzRnJvbVJlY3RFaWlqampqagogX19aTks3V2ViQ29yZThEb2N1bWVudDE3aGFuZGxl
WmVyb1BhZGRpbmdFUktOU18xNEhpdFRlc3RSZXF1ZXN0RVJOU18xM0hpdFRlc3RSZXN1bHRFCiBf
X1pOM1dURjIxTGlzdEhhc2hTZXRUcmFuc2xhdG9ySU5TXzZSZWZQdHJJTjdXZWJDb3JlNE5vZGVF
RUVMbTI1NkVOU183UHRySGFzaElTNF9FRUU5dHJhbnNsYXRlRVJQTlNfMTVMaXN0SGFzaFNldE5v
ZGVJUzRfTG0yNTZFRUVSS1M0X1BOU18yNExpc3RIYXNoU2V0Tm9kZUFsbG9jYXRvcklTNF9MbTI1
NkVFRQogX19aTjdXZWJDb3JlMjFTdGF0aWNIYXNoU2V0Tm9kZUxpc3RDMUVSTjNXVEYxMUxpc3RI
YXNoU2V0SU5TMV82UmVmUHRySU5TXzROb2RlRUVFTG0yNTZFTlMxXzdQdHJIYXNoSVM1X0VFRUUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDQ5ZDAwYzViYWJmMDUzNDFhZmI1YjU2MGRhODAw
NDNhYmU4YTc3M2IuLjg4N2I0ZjY1NWZlN2VmYzkzYzIzZDlkMzYzYTRiM2I4ODhhYzgyNGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMTM4NCw3ICsxMzg0LDcgQEAgU3RyaW5nIERvY3Vt
ZW50OjpzdWdnZXN0ZWRNSU1FVHlwZSgpIGNvbnN0CiAvLyAqIG1ha2luZyBpdCByZWNlaXZlIGEg
cmVjdCBhcyBwYXJhbWV0ZXIsIGkuZS4gbm9kZXNGcm9tUmVjdCh4LCB5LCB3LCBoKTsKIC8vICog
bWFraW5nIGl0IHJlY2VpdmUgdGhlIGV4cGFkaW5nIHNpemUgb2YgZWFjaCBkaXJlY3Rpb24gc2Vw
YXJhdGVseSwKIC8vICAgaS5lLiBub2Rlc0Zyb21SZWN0KHgsIHksIHRvcFNpemUsIHJpZ2h0U2l6
ZSwgYm90dG9tU2l6ZSwgbGVmdFNpemUpOwotUGFzc1JlZlB0cjxOb2RlTGlzdD4gRG9jdW1lbnQ6
Om5vZGVzRnJvbVJlY3QoaW50IGNlbnRlclgsIGludCBjZW50ZXJZLCB1bnNpZ25lZCB0b3BQYWRk
aW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcsIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2ln
bmVkIGxlZnRQYWRkaW5nLCBib29sIGlnbm9yZUNsaXBwaW5nLCBib29sIGFsbG93U2hhZG93Q29u
dGVudCwgYm9vbCBhbGxvd0NoaWxkRnJhbWVDb250ZW50KSBjb25zdAorUGFzc1JlZlB0cjxOb2Rl
TGlzdD4gRG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QoaW50IGNlbnRlclgsIGludCBjZW50ZXJZLCB1
bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcsIHVuc2lnbmVkIGJvdHRv
bVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nLCBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJl
cXVlc3RUeXBlIGhpdFR5cGUpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFNoYXJlIGNvZGUgYmV0
d2VlbiB0aGlzLCBlbGVtZW50RnJvbVBvaW50IGFuZCBjYXJldFJhbmdlRnJvbVBvaW50LgogICAg
IGlmICghcmVuZGVyZXIoKSkKQEAgLTEzOTksMTkgKzEzOTksMTEgQEAgUGFzc1JlZlB0cjxOb2Rl
TGlzdD4gRG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QoaW50IGNlbnRlclgsIGludCBjZW50ZXJZLCB1
bnNpZ25lZAogICAgIGZsb2F0IHpvb21GYWN0b3IgPSBmcmFtZS0+cGFnZVpvb21GYWN0b3IoKTsK
ICAgICBMYXlvdXRQb2ludCBwb2ludCA9IHJvdW5kZWRMYXlvdXRQb2ludChGbG9hdFBvaW50KGNl
bnRlclggKiB6b29tRmFjdG9yICsgdmlldygpLT5zY3JvbGxYKCksIGNlbnRlclkgKiB6b29tRmFj
dG9yICsgdmlldygpLT5zY3JvbGxZKCkpKTsKIAotICAgIGludCB0eXBlID0gSGl0VGVzdFJlcXVl
c3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZTsKKyAgICBIaXRUZXN0UmVxdWVz
dCByZXF1ZXN0KGhpdFR5cGUpOwogCiAgICAgLy8gV2hlbiBpZ25vcmVDbGlwcGluZyBpcyBmYWxz
ZSwgdGhpcyBtZXRob2QgcmV0dXJucyBudWxsIGZvciBjb29yZGluYXRlcyBvdXRzaWRlIG9mIHRo
ZSB2aWV3cG9ydC4KLSAgICBpZiAoaWdub3JlQ2xpcHBpbmcpCi0gICAgICAgIHR5cGUgfD0gSGl0
VGVzdFJlcXVlc3Q6Oklnbm9yZUNsaXBwaW5nOwotICAgIGVsc2UgaWYgKCFmcmFtZVZpZXctPnZp
c2libGVDb250ZW50UmVjdCgpLmludGVyc2VjdHMoSGl0VGVzdFJlc3VsdDo6cmVjdEZvclBvaW50
KHBvaW50LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRk
aW5nKSkpCisgICAgaWYgKCFyZXF1ZXN0Lmlnbm9yZUNsaXBwaW5nKCkgJiYgIWZyYW1lVmlldy0+
dmlzaWJsZUNvbnRlbnRSZWN0KCkuaW50ZXJzZWN0cyhIaXRUZXN0UmVzdWx0OjpyZWN0Rm9yUG9p
bnQocG9pbnQsIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBh
ZGRpbmcpKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKGFsbG93U2hhZG93Q29udGVudCkK
LSAgICAgICAgdHlwZSB8PSBIaXRUZXN0UmVxdWVzdDo6QWxsb3dTaGFkb3dDb250ZW50OwotICAg
IGlmIChhbGxvd0NoaWxkRnJhbWVDb250ZW50KQotICAgICAgICB0eXBlIHw9IEhpdFRlc3RSZXF1
ZXN0OjpBbGxvd0NoaWxkRnJhbWVDb250ZW50OwotCi0gICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVz
dCh0eXBlKTsKIAogICAgIC8vIFBhc3NpbmcgYSB6ZXJvIHBhZGRpbmcgd2lsbCB0cmlnZ2VyIGEg
cmVjdCBoaXQgdGVzdCwgaG93ZXZlciBmb3IgdGhlIHB1cnBvc2VzIG9mIG5vZGVzRnJvbVJlY3Qs
CiAgICAgLy8gd2Ugc3BlY2lhbCBoYW5kbGUgdGhpcyBjYXNlIGluIG9yZGVyIHRvIHJldHVybiBh
IHZhbGlkIE5vZGVMaXN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCAyODcyZTVjMmFhOWIzNjI5
YTU0NjBjMTZiMjhhNGRjZmE0ZmZmZDk4Li5kYWZlMDRiZTMxNGE0YTdiNTAxMDU1Yzc1NWJhNTll
ZTA0NmQ2MmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1
ZGUgIkRPTVRpbWVTdGFtcC5oIgogI2luY2x1ZGUgIkRvY3VtZW50RXZlbnRRdWV1ZS5oIgogI2lu
Y2x1ZGUgIkRvY3VtZW50VGltaW5nLmgiCisjaW5jbHVkZSAiSGl0VGVzdFJlcXVlc3QuaCIKICNp
bmNsdWRlICJJY29uVVJMLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ291bnRlcnMuaCIKICNpbmNs
dWRlICJJbnRSZWN0LmgiCkBAIC0zNzYsMTIgKzM3NywxMCBAQCBwdWJsaWM6CiAgICAgICogQHBh
cmFtIHJpZ2h0UGFkZGluZyBIb3cgbXVjaCB0byBleHBhbmQgdGhlIHJpZ2h0IG9mIHRoZSByZWN0
YW5nbGUKICAgICAgKiBAcGFyYW0gYm90dG9tUGFkZGluZyBIb3cgbXVjaCB0byBleHBhbmQgdGhl
IGJvdHRvbSBvZiB0aGUgcmVjdGFuZ2xlCiAgICAgICogQHBhcmFtIGxlZnRQYWRkaW5nIEhvdyBt
dWNoIHRvIGV4cGFuZCB0aGUgbGVmdCBvZiB0aGUgcmVjdGFuZ2xlCi0gICAgICogQHBhcmFtIGln
bm9yZUNsaXBwaW5nIHdoZXRoZXIgb3Igbm90IHRvIGlnbm9yZSB0aGUgcm9vdCBzY3JvbGwgZnJh
bWUgd2hlbiByZXRyaWV2aW5nIHRoZSBlbGVtZW50LgotICAgICAqICAgICAgICBJZiBmYWxzZSwg
dGhpcyBtZXRob2QgcmV0dXJucyBudWxsIGZvciBjb29yZGluYXRlcyBvdXRzaWRlIG9mIHRoZSB2
aWV3cG9ydC4KICAgICAgKi8KICAgICBQYXNzUmVmUHRyPE5vZGVMaXN0PiBub2Rlc0Zyb21SZWN0
KGludCBjZW50ZXJYLCBpbnQgY2VudGVyWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFkZGluZywgdW5z
aWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlnbm9yZUNsaXBwaW5nLCBib29sIGFsbG93
U2hhZG93Q29udGVudCwgYm9vbCBhbGxvd0NoaWxkRnJhbWVDb250ZW50ID0gZmFsc2UpIGNvbnN0
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGl0VGVzdFJlcXVlc3Q6
OkhpdFRlc3RSZXF1ZXN0VHlwZSBoaXRUeXBlID0gSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwg
SGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSkgY29uc3Q7CiAgICAgRWxlbWVudCogZWxlbWVudEZyb21Q
b2ludChpbnQgeCwgaW50IHkpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8UmFuZ2U+IGNhcmV0UmFu
Z2VGcm9tUG9pbnQoaW50IHgsIGludCB5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250
ZXh0TWVudUNvbnRyb2xsZXIuY3BwCmluZGV4IGQ5MDE5ZmMzMGZkNWQ4NjQ2ZjJmNGVmZjRlYTU0
ZjQ4OWY4OTM4NWIuLjg3ZjNjYzRkNjE5YjU2NmMwNWQyMzYxZjQ5NTA2NzU0MWJkMjVjMjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKQEAgLTE0
OSw3ICsxNDksNyBAQCBQYXNzT3duUHRyPENvbnRleHRNZW51PiBDb250ZXh0TWVudUNvbnRyb2xs
ZXI6OmNyZWF0ZUNvbnRleHRNZW51KEV2ZW50KiBldmVudCkKICAgICBIaXRUZXN0UmVzdWx0IHJl
c3VsdChtb3VzZUV2ZW50LT5hYnNvbHV0ZUxvY2F0aW9uKCkpOwogCiAgICAgaWYgKEZyYW1lKiBm
cmFtZSA9IGV2ZW50LT50YXJnZXQoKS0+dG9Ob2RlKCktPmRvY3VtZW50KCktPmZyYW1lKCkpCi0g
ICAgICAgIHJlc3VsdCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9p
bnQobW91c2VFdmVudC0+YWJzb2x1dGVMb2NhdGlvbigpLCBmYWxzZSk7CisgICAgICAgIHJlc3Vs
dCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQobW91c2VFdmVu
dC0+YWJzb2x1dGVMb2NhdGlvbigpKTsKIAogICAgIGlmICghcmVzdWx0LmlubmVyTm9uU2hhcmVk
Tm9kZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29u
dHJvbGxlci5jcHAKaW5kZXggYzc0NGMxODllYmRiZjRmMGE0MGI4YTk5ZDhlNzlhMjVkYjBhNmQ2
OC4uYTFlNzhiODBhYTAyN2QxNmEyODUyOGMzYTZlNDlkYjEzN2M2MDA5OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTU0NCw3ICs1NDQsNyBAQCBib29sIERyYWdD
b250cm9sbGVyOjpjYW5Qcm9jZXNzRHJhZyhEcmFnRGF0YSogZHJhZ0RhdGEpCiAgICAgaWYgKCFt
X3BhZ2UtPm1haW5GcmFtZSgpLT5jb250ZW50UmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgcmVzdWx0ID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCkt
PmhpdFRlc3RSZXN1bHRBdFBvaW50KHBvaW50LCB0cnVlKTsKKyAgICByZXN1bHQgPSBtX3BhZ2Ut
Pm1haW5GcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQocG9pbnQs
IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRU
ZXN0UmVxdWVzdDo6QWxsb3dTaGFkb3dDb250ZW50KTsKIAogICAgIGlmICghcmVzdWx0LmlubmVy
Tm9uU2hhcmVkTm9kZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC03MjYsNyArNzI2LDcg
QEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6c3RhcnREcmFnKEZyYW1lKiBzcmMsIGNvbnN0IERyYWdT
dGF0ZSYgc3RhdGUsIERyYWdPcGVyYXRpb24KICAgICBpZiAoIXNyYy0+dmlldygpIHx8ICFzcmMt
PmNvbnRlbnRSZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBIaXRUZXN0
UmVzdWx0IGhpdFRlc3RSZXN1bHQgPSBzcmMtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0
QXRQb2ludChkcmFnT3JpZ2luLCB0cnVlKTsKKyAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3RSZXN1
bHQgPSBzcmMtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChkcmFnT3JpZ2lu
LCBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0
VGVzdFJlcXVlc3Q6OkFsbG93U2hhZG93Q29udGVudCk7CiAgICAgaWYgKCFzdGF0ZS5tX2RyYWdT
cmMtPmNvbnRhaW5zKGhpdFRlc3RSZXN1bHQuaW5uZXJOb2RlKCkpKQogICAgICAgICAvLyBUaGUg
b3JpZ2luYWwgbm9kZSBiZWluZyBkcmFnZ2VkIGlzbid0IHVuZGVyIHRoZSBkcmFnIG9yaWdpbiBh
bnltb3JlLi4uIG1heWJlIGl0IHdhcwogICAgICAgICAvLyBoaWRkZW4gb3IgbW92ZWQgb3V0IGZy
b20gdW5kZXIgdGhlIGN1cnNvci4gUmVnYXJkbGVzcywgd2UgZG9uJ3Qgd2FudCB0byBzdGFydCBh
IGRyYWcgb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCAwMDFmZDZkOWU5
ZTExNjI5NWQyMGM1MDkyMzAxOTI3YTA1ZDdkZjkwLi4zODA3YzU1OTcyOGNmNTZjZTUxZWM2MzBj
N2E2OWJkMGQ3M2YwZGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFu
ZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0x
MDA3LDcgKzEwMDcsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6dXBkYXRlQXV0b3Njcm9sbFJlbmRl
cmVyKCkKICAgICBpZiAoIW1fYXV0b3Njcm9sbFJlbmRlcmVyKQogICAgICAgICByZXR1cm47CiAK
LSAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3QgPSBoaXRUZXN0UmVzdWx0QXRQb2ludChtX3BhblNj
cm9sbFN0YXJ0UG9zLCB0cnVlKTsKKyAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3QgPSBoaXRUZXN0
UmVzdWx0QXRQb2ludChtX3BhblNjcm9sbFN0YXJ0UG9zLCBIaXRUZXN0UmVxdWVzdDo6UmVhZE9u
bHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93U2hhZG93
Q29udGVudCk7CiAKICAgICBpZiAoTm9kZSogbm9kZUF0UG9pbnQgPSBoaXRUZXN0LmlubmVyTm9k
ZSgpKQogICAgICAgICBtX2F1dG9zY3JvbGxSZW5kZXJlciA9IG5vZGVBdFBvaW50LT5yZW5kZXJl
cigpOwpAQCAtMTAzOSwyMiArMTAzOSwxNyBAQCBEcmFnU291cmNlQWN0aW9uIEV2ZW50SGFuZGxl
cjo6dXBkYXRlRHJhZ1NvdXJjZUFjdGlvbnNBbGxvd2VkKCkgY29uc3QKIH0KICNlbmRpZiAvLyBF
TkFCTEUoRFJBR19TVVBQT1JUKQogICAgIAotSGl0VGVzdFJlc3VsdCBFdmVudEhhbmRsZXI6Omhp
dFRlc3RSZXN1bHRBdFBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCwgYm9vbCBhbGxvd1No
YWRvd0NvbnRlbnQsIGJvb2wgaWdub3JlQ2xpcHBpbmcsIEhpdFRlc3RTY3JvbGxiYXJzIHRlc3RT
Y3JvbGxiYXJzLCBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhpdFR5cGUsIGNv
bnN0IExheW91dFNpemUmIHBhZGRpbmcpCitIaXRUZXN0UmVzdWx0IEV2ZW50SGFuZGxlcjo6aGl0
VGVzdFJlc3VsdEF0UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBIaXRUZXN0UmVxdWVz
dDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhpdFR5cGUsIGNvbnN0IExheW91dFNpemUmIHBhZGRpbmcp
CiB7CiAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQocG9pbnQsIHBhZGRpbmcuaGVpZ2h0KCksIHBh
ZGRpbmcud2lkdGgoKSwgcGFkZGluZy5oZWlnaHQoKSwgcGFkZGluZy53aWR0aCgpKTsKIAogICAg
IGlmICghbV9mcmFtZS0+Y29udGVudFJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQ7
Ci0gICAgaWYgKGlnbm9yZUNsaXBwaW5nKQotICAgICAgICBoaXRUeXBlIHw9IEhpdFRlc3RSZXF1
ZXN0OjpJZ25vcmVDbGlwcGluZzsKLSAgICBpZiAoYWxsb3dTaGFkb3dDb250ZW50KQotICAgICAg
ICBoaXRUeXBlIHw9IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd1NoYWRvd0NvbnRlbnQ7Ci0gICAgaWYg
KHRlc3RTY3JvbGxiYXJzID09IFNob3VsZEhpdFRlc3RTY3JvbGxiYXJzKQotICAgICAgICBoaXRU
eXBlIHw9IEhpdFRlc3RSZXF1ZXN0OjpUZXN0Q2hpbGRGcmFtZVNjcm9sbEJhcnM7CiAgICAgLy8g
V2UgYWx3YXlzIG5lZWQgdG8gaGFuZGxlIGNoaWxkIGZyYW1lIGNvbnRlbnQuCiAgICAgaGl0VHlw
ZSB8PSBIaXRUZXN0UmVxdWVzdDo6QWxsb3dDaGlsZEZyYW1lQ29udGVudDsKIAotICAgIG1fZnJh
bWUtPmNvbnRlbnRSZW5kZXJlcigpLT5oaXRUZXN0KEhpdFRlc3RSZXF1ZXN0KGhpdFR5cGUpLCBy
ZXN1bHQpOworICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoaGl0VHlwZSk7CisgICAgbV9mcmFt
ZS0+Y29udGVudFJlbmRlcmVyKCktPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0KTsKIAogICAgIC8v
IElmIG91ciBIaXRUZXN0UmVzdWx0IGlzIG5vdCB2aXNpYmxlLCB0aGVuIHdlIHN0YXJ0ZWQgaGl0
IHRlc3RpbmcgdG9vIGZhciBkb3duIHRoZSBmcmFtZSBjaGFpbi4gCiAgICAgLy8gQW5vdGhlciBo
aXQgdGVzdCBhdCB0aGUgbWFpbiBmcmFtZSBsZXZlbCBzaG91bGQgZ2V0IHVzIHRoZSBjb3JyZWN0
IHZpc2libGUgcmVzdWx0LgpAQCAtMTA2NiwxMiArMTA2MSwxMiBAQCBIaXRUZXN0UmVzdWx0IEV2
ZW50SGFuZGxlcjo6aGl0VGVzdFJlc3VsdEF0UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50
LCBib29sCiAgICAgICAgICAgICBGcmFtZVZpZXcqIG1haW5WaWV3ID0gbWFpbkZyYW1lLT52aWV3
KCk7CiAgICAgICAgICAgICBpZiAocmVzdWx0VmlldyAmJiBtYWluVmlldykgewogICAgICAgICAg
ICAgICAgIEludFBvaW50IG1haW5GcmFtZVBvaW50ID0gbWFpblZpZXctPnJvb3RWaWV3VG9Db250
ZW50cyhyZXN1bHRWaWV3LT5jb250ZW50c1RvUm9vdFZpZXcocm91bmRlZEludFBvaW50KHJlc3Vs
dC5wb2ludCgpKSkpOwotICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1haW5GcmFtZS0+ZXZlbnRI
YW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KG1haW5GcmFtZVBvaW50LCBhbGxvd1NoYWRv
d0NvbnRlbnQsIGlnbm9yZUNsaXBwaW5nLCB0ZXN0U2Nyb2xsYmFycywgaGl0VHlwZSwgcGFkZGlu
Zyk7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbWFpbkZyYW1lLT5ldmVudEhhbmRsZXIoKS0+
aGl0VGVzdFJlc3VsdEF0UG9pbnQobWFpbkZyYW1lUG9pbnQsIGhpdFR5cGUsIHBhZGRpbmcpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKCFhbGxvd1NoYWRvd0Nv
bnRlbnQpCisgICAgaWYgKCFyZXF1ZXN0LmFsbG93c1NoYWRvd0NvbnRlbnQoKSkKICAgICAgICAg
cmVzdWx0LnNldFRvTm9uU2hhZG93QW5jZXN0b3IoKTsKIAogICAgIHJldHVybiByZXN1bHQ7CkBA
IC0xNDgxLDcgKzE0NzYsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2
ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgbW91c2VFdmVudCkKICAgICBtX21vdXNlRG93
bldhc0luU3ViZnJhbWUgPSBmYWxzZTsKIAogICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0
VGVzdFJlcXVlc3Q6OkFjdGl2ZSk7Ci0gICAgLy8gU2F2ZSB0aGUgZG9jdW1lbnQgcG9pbnQgd2Ug
Z2VuZXJhdGUgaW4gY2FzZSB0aGUgd2luZG93IGNvb3JkaW5hdGUgaXMgaW52YWxpZGF0ZWQgYnkg
d2hhdCBoYXBwZW5zIAorICAgIC8vIFNhdmUgdGhlIGRvY3VtZW50IHBvaW50IHdlIGdlbmVyYXRl
IGluIGNhc2UgdGhlIHdpbmRvdyBjb29yZGluYXRlIGlzIGludmFsaWRhdGVkIGJ5IHdoYXQgaGFw
cGVucwogICAgIC8vIHdoZW4gd2UgZGlzcGF0Y2ggdGhlIGV2ZW50LgogICAgIExheW91dFBvaW50
IGRvY3VtZW50UG9pbnQgPSBkb2N1bWVudFBvaW50Rm9yV2luZG93UG9pbnQobV9mcmFtZSwgbW91
c2VFdmVudC5wb3NpdGlvbigpKTsKICAgICBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzIG1l
diA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnByZXBhcmVNb3VzZUV2ZW50KHJlcXVlc3QsIGRvY3Vt
ZW50UG9pbnQsIG1vdXNlRXZlbnQpOwpAQCAtMjM4MSw3ICsyMzc2LDcgQEAgYm9vbCBFdmVudEhh
bmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYgZ2Vz
dHVyZUV2ZW50KQogICAgICAgICBldmVudFRhcmdldCA9IG1fc2Nyb2xsR2VzdHVyZUhhbmRsaW5n
Tm9kZS5nZXQoKTsKIAogICAgIGlmICghZXZlbnRUYXJnZXQpIHsKLSAgICAgICAgSGl0VGVzdFJl
c3VsdCByZXN1bHQgPSBoaXRUZXN0UmVzdWx0QXRQb2ludChnZXN0dXJlRXZlbnQucG9zaXRpb24o
KSwgZmFsc2UsIGZhbHNlLCBEb250SGl0VGVzdFNjcm9sbGJhcnMsIEhpdFRlc3RSZXF1ZXN0OjpS
ZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUpOworICAgICAgICBIaXRUZXN0UmVzdWx0
IHJlc3VsdCA9IGhpdFRlc3RSZXN1bHRBdFBvaW50KGdlc3R1cmVFdmVudC5wb3NpdGlvbigpKTsK
ICAgICAgICAgZXZlbnRUYXJnZXQgPSByZXN1bHQudGFyZ2V0Tm9kZSgpOwogICAgIH0KIApAQCAt
MjQ4Myw5ICsyNDc4LDggQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVTY3JvbGxD
b3JlKGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXYKICNpZiBFTkFCTEUoVE9V
Q0hfQURKVVNUTUVOVCkKIGJvb2wgRXZlbnRIYW5kbGVyOjpiZXN0Q2xpY2thYmxlTm9kZUZvclRv
dWNoUG9pbnQoY29uc3QgSW50UG9pbnQmIHRvdWNoQ2VudGVyLCBjb25zdCBJbnRTaXplJiB0b3Vj
aFJhZGl1cywgSW50UG9pbnQmIHRhcmdldFBvaW50LCBOb2RlKiYgdGFyZ2V0Tm9kZSkKIHsKLSAg
ICBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhpdFR5cGUgPSBIaXRUZXN0UmVx
dWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlOwogICAgIEludFBvaW50IGhp
dFRlc3RQb2ludCA9IG1fZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyh0b3VjaENlbnRl
cik7Ci0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBoaXRUZXN0UmVzdWx0QXRQb2ludChoaXRU
ZXN0UG9pbnQsIC8qYWxsb3dTaGFkb3dDb250ZW50Ki8gdHJ1ZSwgLyppZ25vcmVDbGlwcGluZyov
IGZhbHNlLCBEb250SGl0VGVzdFNjcm9sbGJhcnMsIGhpdFR5cGUsIHRvdWNoUmFkaXVzKTsKKyAg
ICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGhpdFRlc3RSZXN1bHRBdFBvaW50KGhpdFRlc3RQb2lu
dCwgSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhp
dFRlc3RSZXF1ZXN0OjpBbGxvd1NoYWRvd0NvbnRlbnQsIHRvdWNoUmFkaXVzKTsKIAogICAgIElu
dFJlY3QgdG91Y2hSZWN0KHRvdWNoQ2VudGVyIC0gdG91Y2hSYWRpdXMsIHRvdWNoUmFkaXVzICsg
dG91Y2hSYWRpdXMpOwogICAgIFJlZlB0cjxTdGF0aWNIYXNoU2V0Tm9kZUxpc3Q+IG5vZGVMaXN0
ID0gU3RhdGljSGFzaFNldE5vZGVMaXN0OjphZG9wdChyZXN1bHQucmVjdEJhc2VkVGVzdFJlc3Vs
dCgpKTsKQEAgLTI1MDIsOSArMjQ5Niw4IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpiZXN0Q2xpY2th
YmxlTm9kZUZvclRvdWNoUG9pbnQoY29uc3QgSW50UG9pbnQmIHRvdWNoQ2VudGVyLCBjCiAKIGJv
b2wgRXZlbnRIYW5kbGVyOjpiZXN0Q29udGV4dE1lbnVOb2RlRm9yVG91Y2hQb2ludChjb25zdCBJ
bnRQb2ludCYgdG91Y2hDZW50ZXIsIGNvbnN0IEludFNpemUmIHRvdWNoUmFkaXVzLCBJbnRQb2lu
dCYgdGFyZ2V0UG9pbnQsIE5vZGUqJiB0YXJnZXROb2RlKQogewotICAgIEhpdFRlc3RSZXF1ZXN0
OjpIaXRUZXN0UmVxdWVzdFR5cGUgaGl0VHlwZSA9IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8
IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmU7CiAgICAgSW50UG9pbnQgaGl0VGVzdFBvaW50ID0gbV9m
cmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHRvdWNoQ2VudGVyKTsKLSAgICBIaXRUZXN0
UmVzdWx0IHJlc3VsdCA9IGhpdFRlc3RSZXN1bHRBdFBvaW50KGhpdFRlc3RQb2ludCwgLyphbGxv
d1NoYWRvd0NvbnRlbnQqLyB0cnVlLCAvKmlnbm9yZUNsaXBwaW5nKi8gZmFsc2UsIERvbnRIaXRU
ZXN0U2Nyb2xsYmFycywgaGl0VHlwZSwgdG91Y2hSYWRpdXMpOworICAgIEhpdFRlc3RSZXN1bHQg
cmVzdWx0ID0gaGl0VGVzdFJlc3VsdEF0UG9pbnQoaGl0VGVzdFBvaW50LCBIaXRUZXN0UmVxdWVz
dDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OkFs
bG93U2hhZG93Q29udGVudCwgdG91Y2hSYWRpdXMpOwogCiAgICAgSW50UmVjdCB0b3VjaFJlY3Qo
dG91Y2hDZW50ZXIgLSB0b3VjaFJhZGl1cywgdG91Y2hSYWRpdXMgKyB0b3VjaFJhZGl1cyk7CiAg
ICAgUmVmUHRyPFN0YXRpY0hhc2hTZXROb2RlTGlzdD4gbm9kZUxpc3QgPSBTdGF0aWNIYXNoU2V0
Tm9kZUxpc3Q6OmFkb3B0KHJlc3VsdC5yZWN0QmFzZWRUZXN0UmVzdWx0KCkpOwpAQCAtMjUxMyw5
ICsyNTA2LDggQEAgYm9vbCBFdmVudEhhbmRsZXI6OmJlc3RDb250ZXh0TWVudU5vZGVGb3JUb3Vj
aFBvaW50KGNvbnN0IEludFBvaW50JiB0b3VjaENlbnRlciwKIAogYm9vbCBFdmVudEhhbmRsZXI6
OmJlc3Rab29tYWJsZUFyZWFGb3JUb3VjaFBvaW50KGNvbnN0IEludFBvaW50JiB0b3VjaENlbnRl
ciwgY29uc3QgSW50U2l6ZSYgdG91Y2hSYWRpdXMsIEludFJlY3QmIHRhcmdldEFyZWEsIE5vZGUq
JiB0YXJnZXROb2RlKQogewotICAgIEhpdFRlc3RSZXF1ZXN0OjpIaXRUZXN0UmVxdWVzdFR5cGUg
aGl0VHlwZSA9IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3Rp
dmU7CiAgICAgSW50UG9pbnQgaGl0VGVzdFBvaW50ID0gbV9mcmFtZS0+dmlldygpLT53aW5kb3dU
b0NvbnRlbnRzKHRvdWNoQ2VudGVyKTsKLSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGhpdFRl
c3RSZXN1bHRBdFBvaW50KGhpdFRlc3RQb2ludCwgLyphbGxvd1NoYWRvd0NvbnRlbnQqLyBmYWxz
ZSwgLyppZ25vcmVDbGlwcGluZyovIGZhbHNlLCBEb250SGl0VGVzdFNjcm9sbGJhcnMsIGhpdFR5
cGUsIHRvdWNoUmFkaXVzKTsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGhpdFRlc3RSZXN1
bHRBdFBvaW50KGhpdFRlc3RQb2ludCwgSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVz
dFJlcXVlc3Q6OkFjdGl2ZSwgdG91Y2hSYWRpdXMpOwogCiAgICAgSW50UmVjdCB0b3VjaFJlY3Qo
dG91Y2hDZW50ZXIgLSB0b3VjaFJhZGl1cywgdG91Y2hSYWRpdXMgKyB0b3VjaFJhZGl1cyk7CiAg
ICAgUmVmUHRyPFN0YXRpY0hhc2hTZXROb2RlTGlzdD4gbm9kZUxpc3QgPSBTdGF0aWNIYXNoU2V0
Tm9kZUxpc3Q6OmFkb3B0KHJlc3VsdC5yZWN0QmFzZWRUZXN0UmVzdWx0KCkpOwpAQCAtMzU1Nyw3
ICszNTQ5LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxh
dGZvcm1Ub3VjaEV2ZW50JiBldmVudCkKICAgICAgICAgdW5zaWduZWQgdG91Y2hQb2ludFRhcmdl
dEtleSA9IHBvaW50LmlkKCkgKyAxOwogICAgICAgICBSZWZQdHI8RXZlbnRUYXJnZXQ+IHRvdWNo
VGFyZ2V0OwogICAgICAgICBpZiAocG9pbnRTdGF0ZSA9PSBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRv
dWNoUHJlc3NlZCkgewotICAgICAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBoaXRUZXN0
UmVzdWx0QXRQb2ludChwYWdlUG9pbnQsIC8qYWxsb3dTaGFkb3dDb250ZW50Ki8gZmFsc2UsIGZh
bHNlLCBEb250SGl0VGVzdFNjcm9sbGJhcnMsIGhpdFR5cGUpOworICAgICAgICAgICAgSGl0VGVz
dFJlc3VsdCByZXN1bHQgPSBoaXRUZXN0UmVzdWx0QXRQb2ludChwYWdlUG9pbnQsIGhpdFR5cGUp
OwogICAgICAgICAgICAgTm9kZSogbm9kZSA9IHJlc3VsdC5pbm5lck5vZGUoKTsKICAgICAgICAg
ICAgIEFTU0VSVChub2RlKTsKIApAQCAtMzU3NSw3ICszNTY3LDcgQEAgYm9vbCBFdmVudEhhbmRs
ZXI6OmhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50JiBldmVudCkKICAg
ICAgICAgICAgIHRvdWNoVGFyZ2V0ID0gbm9kZTsKICAgICAgICAgfSBlbHNlIGlmIChwb2ludFN0
YXRlID09IFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hSZWxlYXNlZCB8fCBwb2ludFN0YXRlID09
IFBsYXRmb3JtVG91Y2hQb2ludDo6VG91Y2hDYW5jZWxsZWQpIHsKICAgICAgICAgICAgIC8vIFdl
IG9ubHkgcGVyZm9ybSBhIGhpdHRlc3Qgb24gcmVsZWFzZSBvciBjYW5jZWwgdG8gdW5zZXQgOmFj
dGl2ZSBvciA6aG92ZXIgc3RhdGUuCi0gICAgICAgICAgICBoaXRUZXN0UmVzdWx0QXRQb2ludChw
YWdlUG9pbnQsIC8qYWxsb3dTaGFkb3dDb250ZW50Ki8gZmFsc2UsIGZhbHNlLCBEb250SGl0VGVz
dFNjcm9sbGJhcnMsIGhpdFR5cGUpOworICAgICAgICAgICAgaGl0VGVzdFJlc3VsdEF0UG9pbnQo
cGFnZVBvaW50LCBoaXRUeXBlKTsKICAgICAgICAgICAgIC8vIFRoZSB0YXJnZXQgc2hvdWxkIGJl
IHRoZSBvcmlnaW5hbCB0YXJnZXQgZm9yIHRoaXMgdG91Y2gsIHNvIGdldCBpdCBmcm9tIHRoZSBo
YXNobWFwLiBBcyBpdCdzIGEgcmVsZWFzZSBvciBjYW5jZWwKICAgICAgICAgICAgIC8vIHdlIGFs
c28gcmVtb3ZlIGl0IGZyb20gdGhlIG1hcC4KICAgICAgICAgICAgIHRvdWNoVGFyZ2V0ID0gbV9v
cmlnaW5hdGluZ1RvdWNoUG9pbnRUYXJnZXRzLnRha2UodG91Y2hQb2ludFRhcmdldEtleSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAppbmRleCA2ZDhhMGFiNzY3M2E4YzhmZGZiNGM5YTk1
ZGJmYzFhYWQ5NTVkNDg3Li45N2QwYmQwM2YwNjFiNWE4OGRmZGUwZDY5N2ZiMWE5OWMwMzEwNGEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKQEAgLTg4LDggKzg4LDYgQEAgZXh0ZXJu
IGNvbnN0IGludCBUZXh0RHJhZ0h5c3RlcmVzaXM7CiBleHRlcm4gY29uc3QgaW50IEdlbmVyYWxE
cmFnSHlzdGVyZXNpczsKICNlbmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQT1JUKQogCi1lbnVtIEhp
dFRlc3RTY3JvbGxiYXJzIHsgU2hvdWxkSGl0VGVzdFNjcm9sbGJhcnMsIERvbnRIaXRUZXN0U2Ny
b2xsYmFycyB9OwotCiBjbGFzcyBFdmVudEhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKEV2ZW50SGFuZGxlcik7CiBwdWJsaWM6CkBAIC0xMTUsOSArMTEzLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgZGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRTb29uKCk7CiAgICAgdm9pZCBkaXNw
YXRjaEZha2VNb3VzZU1vdmVFdmVudFNvb25JblF1YWQoY29uc3QgRmxvYXRRdWFkJik7CiAKLSAg
ICBIaXRUZXN0UmVzdWx0IGhpdFRlc3RSZXN1bHRBdFBvaW50KGNvbnN0IExheW91dFBvaW50Jiwg
Ym9vbCBhbGxvd1NoYWRvd0NvbnRlbnQsIGJvb2wgaWdub3JlQ2xpcHBpbmcgPSBmYWxzZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhpdFRlc3RTY3JvbGxiYXJzIHNj
cm9sbGJhcnMgPSBEb250SGl0VGVzdFNjcm9sbGJhcnMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhpdFR5
cGUgPSBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlLAor
ICAgIEhpdFRlc3RSZXN1bHQgaGl0VGVzdFJlc3VsdEF0UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQm
LCBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhpdFR5cGUgPSBIaXRUZXN0UmVx
dWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTGF5b3V0U2l6ZSYgcGFkZGluZyA9IExheW91
dFNpemUoKSk7CiAKICAgICBib29sIG1vdXNlUHJlc3NlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbW91
c2VQcmVzc2VkOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJv
bGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKaW5kZXgg
MGI5NDE4YmEzMmJiOWM0YzU3YmQ2MjU0NTVkODIwYmM4OWRjMWEwMS4uMDcwNWMwYmZhMTNiNDk4
YTk0NGI0N2EzNjFhMzY0NjNhZDgwMzM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250
cm9sbGVyLmNwcApAQCAtNzQ1LDcgKzc0NSw3IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZUZvY3VzQ2Fu
ZGlkYXRlSWZOZWVkZWQoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBjb25zdCBGb2N1c0NhCiAg
ICAgICAgIC8vIElmIDIgbm9kZXMgYXJlIGludGVyc2VjdGluZywgZG8gaGl0IHRlc3QgdG8gZmlu
ZCB3aGljaCBub2RlIGluIG9uIHRvcC4KICAgICAgICAgTGF5b3V0VW5pdCB4ID0gaW50ZXJzZWN0
aW9uUmVjdC54KCkgKyBpbnRlcnNlY3Rpb25SZWN0LndpZHRoKCkgLyAyOwogICAgICAgICBMYXlv
dXRVbml0IHkgPSBpbnRlcnNlY3Rpb25SZWN0LnkoKSArIGludGVyc2VjdGlvblJlY3QuaGVpZ2h0
KCkgLyAyOwotICAgICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGNhbmRpZGF0ZS52aXNpYmxl
Tm9kZS0+ZG9jdW1lbnQoKS0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhp
dFRlc3RSZXN1bHRBdFBvaW50KEludFBvaW50KHgsIHkpLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAg
IEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gY2FuZGlkYXRlLnZpc2libGVOb2RlLT5kb2N1bWVudCgp
LT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9p
bnQoSW50UG9pbnQoeCwgeSksIEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1
ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6SWdub3JlQ2xpcHBpbmcpOwogICAgICAgICBp
ZiAoY2FuZGlkYXRlLnZpc2libGVOb2RlLT5jb250YWlucyhyZXN1bHQuaW5uZXJOb2RlKCkpKSB7
CiAgICAgICAgICAgICBjbG9zZXN0ID0gY2FuZGlkYXRlOwogICAgICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lLmNwcAppbmRleCA4NWMyYTMzNGEyMjkwYzc3NDU1ZDhlOGMyYjQ3MmM1OWIx
YWE2YTgzLi40NzE3MjY3Mjk3ZmIwY2NlNmVkNmVmZjExMzI0MjFlZWZlN2RkZmIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lLmNwcApAQCAtNzI0LDcgKzcyNCw3IEBAIFN0cmluZyBGcmFtZTo6ZGlzcGxheVN0
cmluZ01vZGlmaWVkQnlFbmNvZGluZyhjb25zdCBTdHJpbmcmIHN0cikgY29uc3QKIAogVmlzaWJs
ZVBvc2l0aW9uIEZyYW1lOjp2aXNpYmxlUG9zaXRpb25Gb3JQb2ludChjb25zdCBJbnRQb2ludCYg
ZnJhbWVQb2ludCkKIHsKLSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGV2ZW50SGFuZGxlcigp
LT5oaXRUZXN0UmVzdWx0QXRQb2ludChmcmFtZVBvaW50LCB0cnVlKTsKKyAgICBIaXRUZXN0UmVz
dWx0IHJlc3VsdCA9IGV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChmcmFtZVBv
aW50LCBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwg
SGl0VGVzdFJlcXVlc3Q6OkFsbG93U2hhZG93Q29udGVudCk7CiAgICAgTm9kZSogbm9kZSA9IHJl
c3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKTsKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVy
biBWaXNpYmxlUG9zaXRpb24oKTsKQEAgLTc0Niw3ICs3NDYsNyBAQCBEb2N1bWVudCogRnJhbWU6
OmRvY3VtZW50QXRQb2ludChjb25zdCBJbnRQb2ludCYgcG9pbnQpCiAgICAgSGl0VGVzdFJlc3Vs
dCByZXN1bHQgPSBIaXRUZXN0UmVzdWx0KHB0KTsKIAogICAgIGlmIChjb250ZW50UmVuZGVyZXIo
KSkKLSAgICAgICAgcmVzdWx0ID0gZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50
KHB0LCBmYWxzZSk7CisgICAgICAgIHJlc3VsdCA9IGV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVz
dWx0QXRQb2ludChwdCk7CiAgICAgcmV0dXJuIHJlc3VsdC5pbm5lck5vZGUoKSA/IHJlc3VsdC5p
bm5lck5vZGUoKS0+ZG9jdW1lbnQoKSA6IDA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvVG91Y2hEaXNhbWJpZ3VhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Rv
dWNoRGlzYW1iaWd1YXRpb24uY3BwCmluZGV4IDVlZmUzZGI0OTE0MDVlNzM2MWQ3NmI3N2VmYjEx
ZWE3MzQwNmYxN2UuLmRmZWVkYjJmNjA2OGFiY2U3ZGVjOTM5NGM3MmNjZjk1NTllNmE3ODcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVG91Y2hEaXNhbWJpZ3VhdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9Ub3VjaERpc2FtYmlndWF0aW9uLmNwcApAQCAtOTYsNyAr
OTYsNyBAQCB2b2lkIGZpbmRHb29kVG91Y2hUYXJnZXRzKGNvbnN0IEludFJlY3QmIHRvdWNoQm94
LCBGcmFtZSogbWFpbkZyYW1lLCBmbG9hdCBwYWdlUwogICAgIEludFBvaW50IHRvdWNoUG9pbnQg
PSB0b3VjaEJveC5jZW50ZXIoKTsKICAgICBJbnRQb2ludCBjb250ZW50c1BvaW50ID0gbWFpbkZy
YW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHModG91Y2hQb2ludCk7CiAKLSAgICBIaXRUZXN0
UmVzdWx0IHJlc3VsdCA9IG1haW5GcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRB
dFBvaW50KGNvbnRlbnRzUG9pbnQsIGZhbHNlLCBmYWxzZSwgRG9udEhpdFRlc3RTY3JvbGxiYXJz
LCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5LCBJbnRT
aXplKHBhZGRpbmcsIHBhZGRpbmcpKTsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IG1haW5G
cmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGNvbnRlbnRzUG9pbnQs
IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUsIEludFNp
emUocGFkZGluZywgcGFkZGluZykpOwogICAgIGNvbnN0IExpc3RIYXNoU2V0PFJlZlB0cjxOb2Rl
PiA+JiBoaXRSZXN1bHRzID0gcmVzdWx0LnJlY3RCYXNlZFRlc3RSZXN1bHQoKTsKIAogICAgIEhh
c2hNYXA8Tm9kZSosIFRvdWNoVGFyZ2V0RGF0YT4gdG91Y2hUYXJnZXRzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSGl0VGVzdFJlcXVlc3QuaAppbmRleCAzZmFmODhhOWY5MTM3NjFlYzAxM2Q2
ZTdkMmNkZGFmMzJmODRkNzlmLi4xOTAwOTAwZjEyMzg0MTliODExOTc1ZjI1MTYyN2U2MDdlOGNj
YTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlcXVlc3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlcXVlc3QuaApAQCAtMzcs
NiArMzcsNyBAQCBwdWJsaWM6CiAgICAgICAgIFRvdWNoRXZlbnQgPSAxIDw8IDcsCiAgICAgICAg
IEFsbG93U2hhZG93Q29udGVudCA9IDEgPDwgOCwKICAgICAgICAgQWxsb3dDaGlsZEZyYW1lQ29u
dGVudCA9IDEgPDwgOSwKKyAgICAgICAgLy8gRklYTUU6IEdldCByaWQgb2YgdGhlIHR3byBvcHRp
b25zIGJlbG93IGlmIHBvc3NpYmxlLgogICAgICAgICBDaGlsZEZyYW1lSGl0VGVzdCA9IDEgPDwg
MTAsCiAgICAgICAgIFRlc3RDaGlsZEZyYW1lU2Nyb2xsQmFycyA9IDEgPDwgMTEKICAgICB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDM2OTQ4MTQyMmY2Y2EyZmNlMDJm
NTQ4OGY1YTViMDgyNzM4ODQyNzkuLjA0Y2ZlY2QwZDFkMTJkNmFhNjZlMGQwZTQxM2E5ODVjODdi
MDQ4N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTk3Miw4ICs5NzIs
MTUgQEAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gSW50ZXJuYWxzOjpub2Rlc0Zyb21SZWN0KERvY3Vt
ZW50KiBkb2N1bWVudCwgaW50IHgsIGludCB5LAogICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNT
X0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotCi0gICAgcmV0dXJuIGRvY3VtZW50LT5u
b2Rlc0Zyb21SZWN0KHgsIHksIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGlu
ZywgbGVmdFBhZGRpbmcsIGlnbm9yZUNsaXBwaW5nLCBhbGxvd1NoYWRvd0NvbnRlbnQsIGFsbG93
Q2hpbGRGcmFtZUNvbnRlbnQpOworICAgIEhpdFRlc3RSZXF1ZXN0OjpIaXRUZXN0UmVxdWVzdFR5
cGUgaGl0VHlwZSA9IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpB
Y3RpdmU7CisgICAgaWYgKGlnbm9yZUNsaXBwaW5nKQorICAgICAgICBoaXRUeXBlIHw9IEhpdFRl
c3RSZXF1ZXN0OjpJZ25vcmVDbGlwcGluZzsKKyAgICBpZiAoYWxsb3dTaGFkb3dDb250ZW50KQor
ICAgICAgICBoaXRUeXBlIHw9IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd1NoYWRvd0NvbnRlbnQ7Cisg
ICAgaWYgKGFsbG93Q2hpbGRGcmFtZUNvbnRlbnQpCisgICAgICAgIGhpdFR5cGUgfD0gSGl0VGVz
dFJlcXVlc3Q6OkFsbG93Q2hpbGRGcmFtZUNvbnRlbnQ7CisKKyAgICByZXR1cm4gZG9jdW1lbnQt
Pm5vZGVzRnJvbVJlY3QoeCwgeSwgdG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRk
aW5nLCBsZWZ0UGFkZGluZywgaGl0VHlwZSk7CiB9CiAKIHZvaWQgSW50ZXJuYWxzOjplbWl0SW5z
cGVjdG9yRGlkQmVnaW5GcmFtZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvQXBpL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdl
LmNwcAppbmRleCBiZjI0YzE5NzU4YTI5MzFmNTkxODliOTJlYTVkZmQ2NTZmNGMwM2M4Li4zMDIz
YTBkY2NlNGE1ZGY0M2UxNmI0NzZmNjJlZjVkNGU3YTQzNWI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAKQEAgLTI3NTMsNyArMjc1Myw3IEBAIFBhc3NSZWZQdHI8
Tm9kZT4gV2ViUGFnZVByaXZhdGU6OmNvbnRleHROb2RlKFRhcmdldERldGVjdGlvblN0cmF0ZWd5
IHN0cmF0ZWd5KQogICAgICAgICByZXR1cm4gcmVzdWx0Lm5vZGUoRmF0RmluZ2Vyc1Jlc3VsdDo6
U2hhZG93Q29udGVudE5vdEFsbG93ZWQpOwogICAgIH0KIAotICAgIEhpdFRlc3RSZXN1bHQgcmVz
dWx0ID0gZXZlbnRIYW5kbGVyLT5oaXRUZXN0UmVzdWx0QXRQb2ludChjb250ZW50UG9zLCBmYWxz
ZSAvKmFsbG93U2hhZG93Q29udGVudCovKTsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGV2
ZW50SGFuZGxlci0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoY29udGVudFBvcyk7CiAgICAgcmV0dXJu
IHJlc3VsdC5pbm5lck5vZGUoKTsKIH0KIApAQCAtMjgyNSw3ICsyODI1LDcgQEAgTm9kZSogV2Vi
UGFnZVByaXZhdGU6Om5vZGVGb3Jab29tVW5kZXJQb2ludChjb25zdCBJbnRQb2ludCYgcG9pbnQp
CiAgICAgaWYgKCFtX21haW5GcmFtZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBIaXRUZXN0
UmVzdWx0IHJlc3VsdCA9IG1fbWFpbkZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3Vs
dEF0UG9pbnQobWFwRnJvbVRyYW5zZm9ybWVkKHBvaW50KSwgZmFsc2UpOworICAgIEhpdFRlc3RS
ZXN1bHQgcmVzdWx0ID0gbV9tYWluRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0
QXRQb2ludChtYXBGcm9tVHJhbnNmb3JtZWQocG9pbnQpKTsKIAogICAgIE5vZGUqIG5vZGUgPSBy
ZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCk7CiAKQEAgLTQwMzQsNyArNDAzNCw3IEBAIGJvb2wg
V2ViUGFnZVByaXZhdGU6OmhhbmRsZU1vdXNlRXZlbnQoUGxhdGZvcm1Nb3VzZUV2ZW50JiBtb3Vz
ZUV2ZW50KQogICAgIH0KIAogICAgIGlmICghbm9kZSkgewotICAgICAgICBIaXRUZXN0UmVzdWx0
IHJlc3VsdCA9IGV2ZW50SGFuZGxlci0+aGl0VGVzdFJlc3VsdEF0UG9pbnQobWFwRnJvbVZpZXdw
b3J0VG9Db250ZW50cyhtb3VzZUV2ZW50LnBvc2l0aW9uKCkpLCBmYWxzZSAvKmFsbG93U2hhZG93
Q29udGVudCovKTsKKyAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBldmVudEhhbmRsZXIt
PmhpdFRlc3RSZXN1bHRBdFBvaW50KG1hcEZyb21WaWV3cG9ydFRvQ29udGVudHMobW91c2VFdmVu
dC5wb3NpdGlvbigpKSk7CiAgICAgICAgIG5vZGUgPSByZXN1bHQuaW5uZXJOb2RlKCk7CiAgICAg
fQogCkBAIC01MTk3LDcgKzUxOTcsNyBAQCBXZWJET01Eb2N1bWVudCBXZWJQYWdlOjpkb2N1bWVu
dCgpIGNvbnN0CiAKIFdlYkRPTU5vZGUgV2ViUGFnZTo6bm9kZUF0UG9pbnQoaW50IHgsIGludCB5
KQogewotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZC0+bV9tYWluRnJhbWUtPmV2ZW50SGFu
ZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChkLT5tYXBGcm9tVHJhbnNmb3JtZWQoSW50UG9p
bnQoeCwgeSkpLCBmYWxzZSk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBkLT5tX21haW5G
cmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGQtPm1hcEZyb21UcmFu
c2Zvcm1lZChJbnRQb2ludCh4LCB5KSkpOwogICAgIE5vZGUqIG5vZGUgPSByZXN1bHQuaW5uZXJO
b25TaGFyZWROb2RlKCk7CiAgICAgcmV0dXJuIFdlYkRPTU5vZGUobm9kZSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9GYXRGaW5nZXJzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0ZhdEZpbmdlcnMuY3Bw
CmluZGV4IGMzNDQyYzgyN2FmNmM4MDRiYjhjY2YxN2E3OWM0YjBhMGUxM2I1ZTUuLmY0MmY1ZWRi
ZmIzNmFjNmFlNjhhZDkwYTUwY2NkMmEzMmQxMTc3Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0ZhdEZpbmdlcnMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0ZhdEZpbmdlcnMuY3BwCkBAIC00OTEsMTEg
KzQ5MSwxMiBAQCB2b2lkIEZhdEZpbmdlcnM6OmdldE5vZGVzRnJvbVJlY3QoRG9jdW1lbnQqIGRv
Y3VtZW50LCBjb25zdCBJbnRQb2ludCYgY29udGVudFBvcwogICAgIHVuc2lnbmVkIHRvcFBhZGRp
bmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmc7CiAgICAgZ2V0UGFk
ZGluZ3ModG9wUGFkZGluZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0UGFkZGlu
Zyk7CiAKLSAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25s
eSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6SWdub3JlQ2xpcHBp
bmcpOwogICAgIC8vIFRoZSB1c2VyIGZ1bmN0aW9ucyBjaGVja0ZvclRleHQoKSBhbmQgZmluZElu
dGVyc2VjdGluZ1JlZ2lvbnMoKSB1c2VzIHRoZSBOb2RlLndob2xlVGV4dCgpIHRvIGNoZWNrRmlu
Z2VySW50ZXJzZWN0aW9uKCkKICAgICAvLyBub3QgdGhlIHRleHQgaW4gaXRzIHNoYWRvdyB0cmVl
LgotICAgIFNoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3kgYWxsb3dTaGFkb3cgPSBtX3RhcmdldFR5
cGUgPT0gVGV4dCA/IERvTm90QWxsb3dTaGFkb3dDb250ZW50IDogQWxsb3dTaGFkb3dDb250ZW50
OwotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KGNvbnRlbnRQb3MsIHRvcFBhZGRpbmcsIHJpZ2h0
UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcsIGFsbG93U2hhZG93KTsKKyAgICBI
aXRUZXN0UmVxdWVzdCByZXF1ZXN0ID0gSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVz
dFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpJZ25vcmVDbGlwcGluZzsKKyAgICBp
ZiAobV90YXJnZXRUeXBlICE9IFRleHQpCisgICAgICAgIHJlcXVlc3QgfD0gSGl0VGVzdFJlcXVl
c3Q6OkFsbG93U2hhZG93Q29udGVudDsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdChjb250ZW50
UG9zLCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5n
KTsKIAogICAgIGRvY3VtZW50LT5yZW5kZXJWaWV3KCktPmxheWVyKCktPmhpdFRlc3QocmVxdWVz
dCwgcmVzdWx0KTsKICAgICBpbnRlcnNlY3RlZE5vZGVzID0gcmVzdWx0LnJlY3RCYXNlZFRlc3RS
ZXN1bHQoKTsKQEAgLTUxMCw3ICs1MTEsNyBAQCB2b2lkIEZhdEZpbmdlcnM6OmdldFJlbGV2YW50
SW5mb0Zyb21Qb2ludChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEludFBvaW50JiBjbwogICAg
IGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5yZW5kZXJlcigpIHx8ICFkb2N1bWVudC0+ZnJh
bWUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgID0gZG9j
dW1lbnQtPmZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChjb250
ZW50UG9zLCB0cnVlIC8qYWxsb3dTaGFkb3dDb250ZW50Ki8pOworICAgIEhpdFRlc3RSZXN1bHQg
cmVzdWx0ICA9IGRvY3VtZW50LT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3Vs
dEF0UG9pbnQoY29udGVudFBvcywgSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJl
cXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd1NoYWRvd0NvbnRlbnQpOwogICAg
IE5vZGUqIG5vZGUgPSByZXN1bHQuaW5uZXJOb2RlKCk7CiAgICAgd2hpbGUgKG5vZGUgJiYgIW5v
ZGUtPmlzRWxlbWVudE5vZGUoKSkKICAgICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1NlbGVj
dGlvbkhhbmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQv
U2VsZWN0aW9uSGFuZGxlci5jcHAKaW5kZXggM2IwNDI0N2JlY2ZkYmI3YzI2YzRlOWMwNDYxNWNk
ZjFjMjNmZmRlYi4uMDhjMGY4ODI0NmM0M2FjOTRhMTM4YzEyNWYzZWY0YmRkMzIyNjA0ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvU2VsZWN0aW9u
SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQv
U2VsZWN0aW9uSGFuZGxlci5jcHAKQEAgLTE1OSw3ICsxNTksNyBAQCBzdGF0aWMgVmlzaWJsZVBv
c2l0aW9uIHZpc2libGVQb3NpdGlvbkZvclBvaW50SWdub3JpbmdDbGlwcGluZyhjb25zdCBGcmFt
ZSYgZnJhbQogICAgIC8vIG91dHNpZGUgdGhlIHZpc2libGUgcmVjdC4gVG8gd29yayBhcm91bmQg
dGhlIGJ1ZywgdGhpcyBpcyBhIGNvcHkgb2YKICAgICAvLyB2aXNpYmxlUG9zaXRpb25BdFBvaW50
IHdoaWNoIHdoaWNoIHBhc3NlcyBpZ25vcmVDbGlwcGluZz10cnVlLgogICAgIC8vIFNlZSBSSU0g
QnVnICM0MzE1LgotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZnJhbWUuZXZlbnRIYW5kbGVy
KCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGZyYW1lUG9pbnQsIHRydWUgLyogYWxsb3dTaGFkb3dD
b250ZW50ICovLCB0cnVlIC8qIGlnbm9yZUNsaXBwaW5nICovKTsKKyAgICBIaXRUZXN0UmVzdWx0
IHJlc3VsdCA9IGZyYW1lLmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChmcmFt
ZVBvaW50LCBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZl
IHwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93U2hhZG93Q29udGVudCB8IEhpdFRlc3RSZXF1ZXN0OjpJ
Z25vcmVDbGlwcGluZyk7CiAKICAgICBOb2RlKiBub2RlID0gcmVzdWx0LmlubmVyTm9kZSgpOwog
ICAgIGlmICghbm9kZSB8fCBub2RlLT5kb2N1bWVudCgpICE9IGZyYW1lLmRvY3VtZW50KCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Db250ZXh0TWVudUNsaWVudElt
cGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29udGV4dE1lbnVDbGllbnRJbXBs
LmNwcAppbmRleCA2NDFhNTg1YTAxODk0NWRhMjM2MGRiZmY5NmFmYzI2YzJkMTU5ZDAxLi4yZmQ2
NDMxYzFmNmYxMDFkYTAwMjA0YTM3OGQxZTgwYzFkMDc1YzFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9Db250ZXh0TWVudUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0NvbnRleHRNZW51Q2xpZW50SW1wbC5jcHAKQEAgLTEyMiw3
ICsxMjIsNyBAQCBzdGF0aWMgU3RyaW5nIHNlbGVjdE1pc3NwZWxsZWRXb3JkKGNvbnN0IENvbnRl
eHRNZW51KiBkZWZhdWx0TWVudSwgRnJhbWUqIHNlbGVjdAogCiAgICAgLy8gU2VsZWN0aW9uIGlz
IGVtcHR5LCBzbyBjaGFuZ2UgdGhlIHNlbGVjdGlvbiB0byB0aGUgd29yZCB1bmRlciB0aGUgY3Vy
c29yLgogICAgIEhpdFRlc3RSZXN1bHQgaGl0VGVzdFJlc3VsdCA9IHNlbGVjdGVkRnJhbWUtPmV2
ZW50SGFuZGxlcigpLT4KLSAgICAgICAgaGl0VGVzdFJlc3VsdEF0UG9pbnQoc2VsZWN0ZWRGcmFt
ZS0+cGFnZSgpLT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKS0+aGl0VGVzdFJlc3VsdCgpLnBvaW50
KCksIHRydWUpOworICAgICAgICBoaXRUZXN0UmVzdWx0QXRQb2ludChzZWxlY3RlZEZyYW1lLT5w
YWdlKCktPmNvbnRleHRNZW51Q29udHJvbGxlcigpLT5oaXRUZXN0UmVzdWx0KCkucG9pbnQoKSwg
SGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRl
c3RSZXF1ZXN0OjpBbGxvd1NoYWRvd0NvbnRlbnQpOwogICAgIE5vZGUqIGlubmVyTm9kZSA9IGhp
dFRlc3RSZXN1bHQuaW5uZXJOb2RlKCk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHBvcyhpbm5lck5v
ZGUtPnJlbmRlcmVyKCktPnBvc2l0aW9uRm9yUG9pbnQoCiAgICAgICAgIGhpdFRlc3RSZXN1bHQu
bG9jYWxQb2ludCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9G
cmFtZUxvYWRlckNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJh
bWVMb2FkZXJDbGllbnRJbXBsLmNwcAppbmRleCA1ZGQwMmI1NjNkMDkxMzJkY2NhMTJlYmMxM2Qz
N2FkNjVkNjAwOWEyLi5jOTliZDdjNTcyNTNiMmI2ZWFkZTAwYTVjNWFlMjZlZDZhNjM2NzhkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudElt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50
SW1wbC5jcHAKQEAgLTk5Nyw4ICs5OTcsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6
ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKAogICAgICAgICAgICAgICAg
IGlmIChldmVudC0+aXNNb3VzZUV2ZW50KCkpIHsKICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
TW91c2VFdmVudCogbW91c2VFdmVudCA9CiAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNf
Y2FzdDxjb25zdCBNb3VzZUV2ZW50Kj4oZXZlbnQpOwotICAgICAgICAgICAgICAgICAgICBub2Rl
ID0gbV93ZWJGcmFtZS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBv
aW50KAotICAgICAgICAgICAgICAgICAgICAgICAgbW91c2VFdmVudC0+YWJzb2x1dGVMb2NhdGlv
bigpLCBmYWxzZSkuaW5uZXJOb25TaGFyZWROb2RlKCk7CisgICAgICAgICAgICAgICAgICAgIG5v
ZGUgPSBtX3dlYkZyYW1lLT5mcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0
UG9pbnQobW91c2VFdmVudC0+YWJzb2x1dGVMb2NhdGlvbigpKS5pbm5lck5vblNoYXJlZE5vZGUo
KTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKaW5k
ZXggYWUzYjU5OWRmZDE2Mzg0NmIyYjY5OGMyNTY0YjJmNDI2NDBlMGZiNy4uNDM5NWM2ZDcwZjg2
Yjk1ZGIxZTBmYWUxNTJmNTc3ZjI0MTZhYThlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJGcmFtZUltcGwuY3BwCkBAIC0xMjYzLDcgKzEyNjMsNyBAQCBzaXplX3QgV2ViRnJh
bWVJbXBsOjpjaGFyYWN0ZXJJbmRleEZvclBvaW50KGNvbnN0IFdlYlBvaW50JiB3ZWJQb2ludCkg
Y29uc3QKICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwogCiAgICAgSW50UG9pbnQgcG9pbnQgPSBm
cmFtZSgpLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMod2ViUG9pbnQpOwotICAgIEhpdFRlc3RS
ZXN1bHQgcmVzdWx0ID0gZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBv
aW50KHBvaW50LCBmYWxzZSk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBmcmFtZSgpLT5l
dmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQocG9pbnQpOwogICAgIFJlZlB0cjxS
YW5nZT4gcmFuZ2UgPSBmcmFtZSgpLT5yYW5nZUZvclBvaW50KHJlc3VsdC5yb3VuZGVkUG9pbnQo
KSk7CiAgICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcApp
bmRleCBmZTk5YWI4NDQ1YjEyNzJiMjNjNjdmZjQ3NmE5NjFiNzIxZGM2NzY3Li45N2JhNjFmN2E4
Y2YxYzI5ZTFmMjJlNTQzN2E1YzkzOGIyOTI4NzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcApAQCAtNTEzLDcgKzUx
Myw3IEBAIGJvb2wgV2ViUGx1Z2luQ29udGFpbmVySW1wbDo6aXNSZWN0VG9wbW9zdChjb25zdCBX
ZWJSZWN0JiByZWN0KQogICAgIExheW91dFBvaW50IGNlbnRlciA9IGRvY3VtZW50UmVjdC5jZW50
ZXIoKTsKICAgICAvLyBNYWtlIHRoZSByZWN0IHdlJ3JlIGNoZWNraW5nICh0aGUgcG9pbnQgc3Vy
cm91bmRlZCBieSBwYWRkaW5nIHJlY3RzKSBjb250YWluZWQgaW5zaWRlIHRoZSByZXF1ZXN0ZWQg
cmVjdC4gKE5vdGUgdGhhdCAtMS8yIGlzIDAuKQogICAgIExheW91dFNpemUgcGFkZGluZygoZG9j
dW1lbnRSZWN0LndpZHRoKCkgLSAxKSAvIDIsIChkb2N1bWVudFJlY3QuaGVpZ2h0KCkgLSAxKSAv
IDIpOwotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5o
aXRUZXN0UmVzdWx0QXRQb2ludChjZW50ZXIsIGZhbHNlLCBmYWxzZSwgRG9udEhpdFRlc3RTY3Jv
bGxiYXJzLCBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZl
LCBwYWRkaW5nKTsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGZyYW1lLT5ldmVudEhhbmRs
ZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoY2VudGVyLCBIaXRUZXN0UmVxdWVzdDo6UmVhZE9u
bHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlLCBwYWRkaW5nKTsKICAgICBjb25zdCBIaXRUZXN0
UmVzdWx0OjpOb2RlU2V0JiBub2RlcyA9IHJlc3VsdC5yZWN0QmFzZWRUZXN0UmVzdWx0KCk7CiAg
ICAgaWYgKG5vZGVzLnNpemUoKSAhPSAxKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggMWJhZDdjN2JmZDFjOWVk
OTFlYTcyYmY4N2EyYTcwYTU2MTVjM2M4Zi4uMDRiOWE2NWJhNDExZjE1MTlhY2U4YTBhMzI2MmZj
YzczMjljN2YxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNw
cApAQCAtNjM3LDcgKzYzNyw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OmhhbmRsZU1vdXNlVXAoRnJh
bWUmIG1haW5GcmFtZSwgY29uc3QgV2ViTW91c2VFdmVudCYgZXZlbnQpCiAgICAgICAgIEZyYW1l
VmlldyogdmlldyA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKTsKICAgICAgICAgSW50UG9p
bnQgY2xpY2tQb2ludChtX2xhc3RNb3VzZURvd25Qb2ludC54LCBtX2xhc3RNb3VzZURvd25Qb2lu
dC55KTsKICAgICAgICAgSW50UG9pbnQgY29udGVudFBvaW50ID0gdmlldy0+d2luZG93VG9Db250
ZW50cyhjbGlja1BvaW50KTsKLSAgICAgICAgSGl0VGVzdFJlc3VsdCBoaXRUZXN0UmVzdWx0ID0g
Zm9jdXNlZC0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGNvbnRlbnRQb2lu
dCwgZmFsc2UsIGZhbHNlLCBTaG91bGRIaXRUZXN0U2Nyb2xsYmFycyk7CisgICAgICAgIEhpdFRl
c3RSZXN1bHQgaGl0VGVzdFJlc3VsdCA9IGZvY3VzZWQtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0
UmVzdWx0QXRQb2ludChjb250ZW50UG9pbnQsIEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhp
dFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6VGVzdENoaWxkRnJhbWVTY3Jv
bGxCYXJzKTsKICAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBzZW5kIGEgcGFzdGUgd2hlbiBt
aWRkbGUgY2xpY2tpbmcgYSBzY3JvbGwgYmFyIG9yIGEKICAgICAgICAgLy8gbGluayAod2hpY2gg
d2lsbCBuYXZpZ2F0ZSBsYXRlciBpbiB0aGUgY29kZSkuICBUaGUgbWFpbiBzY3JvbGxiYXJzCiAg
ICAgICAgIC8vIGhhdmUgdG8gYmUgaGFuZGxlZCBzZXBhcmF0ZWx5LgpAQCAtMTAwNSw5ICsxMDA1
LDggQEAgV2ViUmVjdCBXZWJWaWV3SW1wbDo6Y29tcHV0ZUJsb2NrQm91bmRzKGNvbnN0IFdlYlJl
Y3QmIHJlY3QsIEF1dG9ab29tVHlwZSB6b29tVHkKIAogICAgIC8vIFVzZSB0aGUgcmVjdC1iYXNl
ZCBoaXQgdGVzdCB0byBmaW5kIHRoZSBub2RlLgogICAgIEludFBvaW50IHBvaW50ID0gbWFpbkZy
YW1lSW1wbCgpLT5mcmFtZVZpZXcoKS0+d2luZG93VG9Db250ZW50cyhJbnRQb2ludChyZWN0Lngs
IHJlY3QueSkpOwotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gbWFpbkZyYW1lSW1wbCgpLT5m
cmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQocG9pbnQsCi0gICAg
ICAgICAgICBmYWxzZSwgem9vbVR5cGUgPT0gRmluZEluUGFnZSwgRG9udEhpdFRlc3RTY3JvbGxi
YXJzLCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5LAot
ICAgICAgICAgICAgSW50U2l6ZShyZWN0LndpZHRoLCByZWN0LmhlaWdodCkpOworICAgIEhpdFRl
c3RSZXF1ZXN0OjpIaXRUZXN0UmVxdWVzdFR5cGUgaGl0VHlwZSA9IEhpdFRlc3RSZXF1ZXN0OjpS
ZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCAoKHpvb21UeXBlID09IEZpbmRJblBh
Z2UpID8gSGl0VGVzdFJlcXVlc3Q6Oklnbm9yZUNsaXBwaW5nIDogMCk7CisgICAgSGl0VGVzdFJl
c3VsdCByZXN1bHQgPSBtYWluRnJhbWVJbXBsKCktPmZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5o
aXRUZXN0UmVzdWx0QXRQb2ludChwb2ludCwgaGl0VHlwZSwgSW50U2l6ZShyZWN0LndpZHRoLCBy
ZWN0LmhlaWdodCkpOwogCiAgICAgTm9kZSogbm9kZSA9IHJlc3VsdC5pbm5lck5vblNoYXJlZE5v
ZGUoKTsKICAgICBpZiAoIW5vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX2ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCmluZGV4
IGUyZTVmNzVhNGExODljODI3OGYyODc5ZjEwMjE0ZGJmOTEyMDFlNDguLjUwOTJhYzc5ZThhY2Ex
NmEwNzM4ZGVhNzVjMzMzNDEwZjAwMWM4NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfZnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUu
Y3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAi
SFRNTFBsdWdJbkVsZW1lbnQuaCIKICNpbmNsdWRlICJIaXN0b3J5SXRlbS5oIgorI2luY2x1ZGUg
IkhpdFRlc3RSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUg
IkludFNpemUuaCIKICNpbmNsdWRlICJLVVJMLmgiCkBAIC02OTMsOCArNjk0LDggQEAgRXdrX0hp
dF9UZXN0KiBld2tfZnJhbWVfaGl0X3Rlc3RfbmV3KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFt
ZSwgaW50IHgsIGludCB5KQogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFy
dERhdGEtPmZyYW1lLT5jb250ZW50UmVuZGVyZXIoKSwgMCk7CiAKICAgICBXZWJDb3JlOjpIaXRU
ZXN0UmVzdWx0IHJlc3VsdCA9IHNtYXJ0RGF0YS0+ZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRU
ZXN0UmVzdWx0QXRQb2ludAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICh2aWV3LT53aW5kb3dUb0NvbnRlbnRzKFdlYkNvcmU6OkludFBvaW50KHgsIHkpKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKmFsbG93U2hhZG93Q29udGVudCov
IGZhbHNlLCAvKmlnbm9yZUNsaXBwaW5nKi8gdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKHZpZXctPndpbmRvd1RvQ29udGVudHMoV2ViQ29yZTo6SW50UG9p
bnQoeCwgeSkpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJD
b3JlOjpIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBXZWJDb3JlOjpIaXRUZXN0UmVxdWVzdDo6
QWN0aXZlIHwgV2ViQ29yZTo6SGl0VGVzdFJlcXVlc3Q6Oklnbm9yZUNsaXBwaW5nKTsKIAogICAg
IGlmIChyZXN1bHQuc2Nyb2xsYmFyKCkpCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0g
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5t
bQppbmRleCA2NGU0NGE0ZDAwNDY1ZjZhZmFiZGFjMGIxNmNjNmUwMmE0ZDUyMTFiLi41YjY4YTFm
NWZmZTZjODkzZTk5MzJmN2I5ZjQ4NjZjMWE2MDBmYmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAt
MTMzMiw3ICsxMzMyLDcgQEAgTlNEaWN0aW9uYXJ5ICpXZWJGcmFtZUxvYWRlckNsaWVudDo6YWN0
aW9uRGljdGlvbmFyeShjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3QKIAogICAgIGlmIChjb25z
dCBNb3VzZUV2ZW50KiBtb3VzZUV2ZW50ID0gZmluZE1vdXNlRXZlbnQoZXZlbnQpKSB7CiAgICAg
ICAgIFdlYkVsZW1lbnREaWN0aW9uYXJ5ICplbGVtZW50ID0gW1tXZWJFbGVtZW50RGljdGlvbmFy
eSBhbGxvY10KLSAgICAgICAgICAgIGluaXRXaXRoSGl0VGVzdFJlc3VsdDpjb3JlKG1fd2ViRnJh
bWUuZ2V0KCkpLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQobW91c2VFdmVu
dC0+YWJzb2x1dGVMb2NhdGlvbigpLCBmYWxzZSldOworICAgICAgICAgICAgaW5pdFdpdGhIaXRU
ZXN0UmVzdWx0OmNvcmUobV93ZWJGcmFtZS5nZXQoKSktPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0
UmVzdWx0QXRQb2ludChtb3VzZUV2ZW50LT5hYnNvbHV0ZUxvY2F0aW9uKCkpXTsKICAgICAgICAg
W3Jlc3VsdCBzZXRPYmplY3Q6ZWxlbWVudCBmb3JLZXk6V2ViQWN0aW9uRWxlbWVudEtleV07CiAg
ICAgICAgIFtlbGVtZW50IHJlbGVhc2VdOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJI
VE1MVmlldy5tbQppbmRleCBiZmVkZThkYjZmOWVmYjY1ZmQxMTU0MTg5OGE4Y2QxMDg0ZTJiNjNm
Li45NjQ5OTVmOWM0NTFlYmY4MGZhNzhiMzE0MGY5NzM1ZDkxOWEzOTU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTYyMDYsNyArNjIwNiw4IEBAIHN0YXRp
YyB2b2lkIGV4dHJhY3RVbmRlcmxpbmVzKE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nLCBWZWN0
b3I8Q29tcG9zaXRpb25VbmRlCiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2Zy
YW1lXSk7CiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0
dXJuIFtbW1dlYkVsZW1lbnREaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aEhpdFRlc3RSZXN1bHQ6
Y29yZUZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoSW50UG9pbnQo
cG9pbnQpLCBhbGxvdyldIGF1dG9yZWxlYXNlXTsKKyAgICBIaXRUZXN0UmVxdWVzdDo6SGl0VGVz
dFJlcXVlc3RUeXBlIGhpdFR5cGUgPSBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0
UmVxdWVzdDo6QWN0aXZlIHwgKGFsbG93ID8gSGl0VGVzdFJlcXVlc3Q6OkFsbG93U2hhZG93Q29u
dGVudCA6IDApOworICAgIHJldHVybiBbW1tXZWJFbGVtZW50RGljdGlvbmFyeSBhbGxvY10gaW5p
dFdpdGhIaXRUZXN0UmVzdWx0OmNvcmVGcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1
bHRBdFBvaW50KEludFBvaW50KHBvaW50KSwgaGl0VHlwZSldIGF1dG9yZWxlYXNlXTsKIH0KIAog
LSAoTlNVSW50ZWdlciljb3VudE1hdGNoZXNGb3JUZXh0OihOU1N0cmluZyAqKXN0cmluZyBpbkRP
TVJhbmdlOihET01SYW5nZSAqKXJhbmdlIG9wdGlvbnM6KFdlYkZpbmRPcHRpb25zKW9wdGlvbnMg
bGltaXQ6KE5TVUludGVnZXIpbGltaXQgbWFya01hdGNoZXM6KEJPT0wpbWFya01hdGNoZXMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCmluZGV4IGFkYmZhMWNjZGU0ZmE3NDU1ZTBiNmJjNzVi
YjEzN2E1ZmY0YWNhYjMuLjhhYzE4ZjhlM2I0MTcyMGI1ODA5MzFjMzg3NWJjMjYzZjVhZWMyOWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcApAQCAtMTQwNiw3ICsxNDA2LDcgQEAgUVdl
YkhpdFRlc3RSZXN1bHQgUVdlYkZyYW1lOjpoaXRUZXN0Q29udGVudChjb25zdCBRUG9pbnQgJnBv
cykgY29uc3QKICAgICBpZiAoIWQtPmZyYW1lLT52aWV3KCkgfHwgIWQtPmZyYW1lLT5jb250ZW50
UmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIFFXZWJIaXRUZXN0UmVzdWx0KCk7CiAKLSAgICBI
aXRUZXN0UmVzdWx0IHJlc3VsdCA9IGQtPmZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJl
c3VsdEF0UG9pbnQoZC0+ZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhwb3MpLCAvKmFs
bG93U2hhZG93Q29udGVudCovIGZhbHNlLCAvKmlnbm9yZUNsaXBwaW5nKi8gdHJ1ZSk7CisgICAg
SGl0VGVzdFJlc3VsdCByZXN1bHQgPSBkLT5mcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RS
ZXN1bHRBdFBvaW50KGQtPmZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMocG9zKSwgSGl0
VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RS
ZXF1ZXN0OjpJZ25vcmVDbGlwcGluZyk7CiAKICAgICBpZiAocmVzdWx0LnNjcm9sbGJhcigpKQog
ICAgICAgICByZXR1cm4gUVdlYkhpdFRlc3RSZXN1bHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdl
LmNwcAppbmRleCAwOGU4NjE4M2E2YjZlYTQ0MDg3ZWYyNDcxZmQ5MDAyZDRiNjA0MGY0Li4yOTYy
OGY1OTg3Y2U5ZTE4MDczOTJjZGY4N2M1ZjY2NzZkZjc5YzkwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdl
YnBhZ2UuY3BwCkBAIC04MDgsNyArODA4LDcgQEAgdm9pZCBRV2ViUGFnZVByaXZhdGU6OmhhbmRs
ZVNvZnR3YXJlSW5wdXRQYW5lbChRdDo6TW91c2VCdXR0b24gYnV0dG9uLCBjb25zdCBRUG8KICAg
ICAgICAgUVN0eWxlOjpSZXF1ZXN0U29mdHdhcmVJbnB1dFBhbmVsIGJlaGF2aW9yID0gUVN0eWxl
OjpSZXF1ZXN0U29mdHdhcmVJbnB1dFBhbmVsKAogICAgICAgICAgICAgY2xpZW50LT5vd25lcldp
ZGdldCgpLT5zdHlsZSgpLT5zdHlsZUhpbnQoUVN0eWxlOjpTSF9SZXF1ZXN0U29mdHdhcmVJbnB1
dFBhbmVsKSk7CiAgICAgICAgIGlmICghY2xpY2tDYXVzZWRGb2N1cyB8fCBiZWhhdmlvciA9PSBR
U3R5bGU6OlJTSVBfT25Nb3VzZUNsaWNrKSB7Ci0gICAgICAgICAgICBIaXRUZXN0UmVzdWx0IHJl
c3VsdCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoZnJhbWUt
PnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhwb3MpLCBmYWxzZSk7CisgICAgICAgICAgICBIaXRU
ZXN0UmVzdWx0IHJlc3VsdCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0
UG9pbnQoZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhwb3MpKTsKICAgICAgICAgICAg
IGlmIChyZXN1bHQuaXNDb250ZW50RWRpdGFibGUoKSkgewogICAgICAgICAgICAgICAgIFFFdmVu
dCBldmVudChRRXZlbnQ6OlJlcXVlc3RTb2Z0d2FyZUlucHV0UGFuZWwpOwogICAgICAgICAgICAg
ICAgIFFBcHBsaWNhdGlvbjo6c2VuZEV2ZW50KGNsaWVudC0+b3duZXJXaWRnZXQoKSwgJmV2ZW50
KTsKQEAgLTE1NjUsNyArMTU2NSw3IEBAIEludFBvaW50IFFXZWJQYWdlUHJpdmF0ZTo6VG91Y2hB
ZGp1c3Rlcjo6ZmluZENhbmRpZGF0ZVBvaW50Rm9yVG91Y2goY29uc3QgSW50UG9pCiAgICAgaW50
IHggPSB0b3VjaFBvaW50LngoKTsKICAgICBpbnQgeSA9IHRvdWNoUG9pbnQueSgpOwogCi0gICAg
UmVmUHRyPE5vZGVMaXN0PiBpbnRlcnNlY3RlZE5vZGVzID0gZG9jdW1lbnQtPm5vZGVzRnJvbVJl
Y3QoeCwgeSwgbV90b3BQYWRkaW5nLCBtX3JpZ2h0UGFkZGluZywgbV9ib3R0b21QYWRkaW5nLCBt
X2xlZnRQYWRkaW5nLCBmYWxzZSAvKmlnbm9yZUNsaXBwaW5nKi8sIGZhbHNlIC8qYWxsb3dTaGFk
b3dDb250ZW50Ki8pOworICAgIFJlZlB0cjxOb2RlTGlzdD4gaW50ZXJzZWN0ZWROb2RlcyA9IGRv
Y3VtZW50LT5ub2Rlc0Zyb21SZWN0KHgsIHksIG1fdG9wUGFkZGluZywgbV9yaWdodFBhZGRpbmcs
IG1fYm90dG9tUGFkZGluZywgbV9sZWZ0UGFkZGluZyk7CiAgICAgaWYgKCFpbnRlcnNlY3RlZE5v
ZGVzKQogICAgICAgICByZXR1cm4gSW50UG9pbnQoKTsKIApAQCAtMzM3MSw3ICszMzcxLDcgQEAg
dm9pZCBRV2ViUGFnZTo6dXBkYXRlUG9zaXRpb25EZXBlbmRlbnRBY3Rpb25zKGNvbnN0IFFQb2lu
dCAmcG9zKQogICAgIGQtPmNyZWF0ZU1haW5GcmFtZSgpOwogICAgIFdlYkNvcmU6OkZyYW1lKiBm
b2N1c2VkRnJhbWUgPSBkLT5wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZy
YW1lKCk7CiAKLSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGZvY3VzZWRGcmFtZS0+ZXZlbnRI
YW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGZvY3VzZWRGcmFtZS0+dmlldygpLT53aW5k
b3dUb0NvbnRlbnRzKHBvcyksIC8qYWxsb3dTaGFkb3dDb250ZW50Ki8gZmFsc2UpOworICAgIEhp
dFRlc3RSZXN1bHQgcmVzdWx0ID0gZm9jdXNlZEZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVz
dFJlc3VsdEF0UG9pbnQoZm9jdXNlZEZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMocG9z
KSk7CiAgICAgaWYgKHJlc3VsdC5zY3JvbGxiYXIoKSkKICAgICAgICAgZC0+aGl0VGVzdFJlc3Vs
dCA9IFFXZWJIaXRUZXN0UmVzdWx0KCk7CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKaW5kZXggYmNm
MDcyZDY1YjU2NGZmMWVkNWFiNmFkNTEyOTQ2MTg0MDkxYjA2MS4uNzJhNWUwMDQ5ODJkZGU3NGU1
MmE4NTlhMzBkMTQ3NTdmNjAyY2YxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCkBAIC0xMjcyLDcgKzEyNzIs
NyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbihGcmFtZVBvbGljeUZ1bgogICAgICAgICAgICAgaWYgKGV2ZW50LT5pc01v
dXNlRXZlbnQoKSkgewogICAgICAgICAgICAgICAgIGNvbnN0IE1vdXNlRXZlbnQqIG1vdXNlRXZl
bnQgPSAgc3RhdGljX2Nhc3Q8Y29uc3QgTW91c2VFdmVudCo+KGV2ZW50KTsKICAgICAgICAgICAg
ICAgICBub2RlID0gUVdlYkZyYW1lUHJpdmF0ZTo6Y29yZShtX3dlYkZyYW1lKS0+ZXZlbnRIYW5k
bGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KAotICAgICAgICAgICAgICAgICAgICBtb3VzZUV2
ZW50LT5hYnNvbHV0ZUxvY2F0aW9uKCksIGZhbHNlKS5pbm5lck5vblNoYXJlZE5vZGUoKTsKKyAg
ICAgICAgICAgICAgICAgICAgbW91c2VFdmVudC0+YWJzb2x1dGVMb2NhdGlvbigpKS5pbm5lck5v
blNoYXJlZE5vZGUoKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQWN0aW9uUHJvcGVydHlC
YWcuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViQWN0aW9uUHJvcGVydHlCYWcuY3BwCmluZGV4
IGZjYTgzYmUwZDRlOTAwMjEwM2EzMzQ2YWQxNzMyODk3OGI3ODMyNDcuLmQyOTA1MDkxZjJjNzMx
NmMyYzU4MmZhZDA5ZjNlMzYxODQ4MmEzODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkFjdGlvblByb3BlcnR5QmFnLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJBY3Rp
b25Qcm9wZXJ0eUJhZy5jcHAKQEAgLTEyMSw3ICsxMjEsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFdlYkFjdGlvblByb3BlcnR5QmFnOjpSZWFkKExQQ09MRVNUUiBwc3pQcm9wTmFtZSwg
VkFSSQogICAgIGlmIChpc0VxdWFsKHBzelByb3BOYW1lLCBXZWJBY3Rpb25FbGVtZW50S2V5KSkg
ewogICAgICAgICBpZiAoY29uc3QgTW91c2VFdmVudCogbW91c2VFdmVudCA9IGZpbmRNb3VzZUV2
ZW50KG1fYWN0aW9uLmV2ZW50KCkpKSB7CiAgICAgICAgICAgICBWX1ZUKHBWYXIpID0gVlRfVU5L
Tk9XTjsKLSAgICAgICAgICAgIFZfVU5LTk9XTihwVmFyKSA9IFdlYkVsZW1lbnRQcm9wZXJ0eUJh
Zzo6Y3JlYXRlSW5zdGFuY2UobV9mcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRB
dFBvaW50KG1vdXNlRXZlbnQtPmFic29sdXRlTG9jYXRpb24oKSwgZmFsc2UpKTsKKyAgICAgICAg
ICAgIFZfVU5LTk9XTihwVmFyKSA9IFdlYkVsZW1lbnRQcm9wZXJ0eUJhZzo6Y3JlYXRlSW5zdGFu
Y2UobV9mcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KG1vdXNlRXZl
bnQtPmFic29sdXRlTG9jYXRpb24oKSkpOwogICAgICAgICAgICAgcmV0dXJuIFNfT0s7CiAgICAg
ICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcCBi
L1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCmluZGV4IDNmMzgwNjBjYzRhOTMzMWMzMGQz
NTUwNWMxZjc4M2IzNjMyNTRjNjMuLjllYTkzMzJlYzJjZDRlYjFjYzY0ZjgwMTE4NTA4ODI0ZDMy
ZmM5NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCkBAIC0xMzIyLDcgKzEzMjIsNyBAQCBib29sIFdl
YlZpZXc6OmhhbmRsZUNvbnRleHRNZW51RXZlbnQoV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJh
bSkKICAgICBtX3BhZ2UtPmNvbnRleHRNZW51Q29udHJvbGxlcigpLT5jbGVhckNvbnRleHRNZW51
KCk7CiAKICAgICBJbnRQb2ludCBkb2N1bWVudFBvaW50KG1fcGFnZS0+bWFpbkZyYW1lKCktPnZp
ZXcoKS0+d2luZG93VG9Db250ZW50cyhjb29yZHMpKTsKLSAgICBIaXRUZXN0UmVzdWx0IHJlc3Vs
dCA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQ
b2ludChkb2N1bWVudFBvaW50LCBmYWxzZSk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBt
X3BhZ2UtPm1haW5GcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQo
ZG9jdW1lbnRQb2ludCk7CiAgICAgRnJhbWUqIHRhcmdldEZyYW1lID0gcmVzdWx0LmlubmVyTm9u
U2hhcmVkTm9kZSgpID8gcmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpLT5kb2N1bWVudCgpLT5m
cmFtZSgpIDogbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7
CiAKICAgICB0YXJnZXRGcmFtZS0+dmlldygpLT5zZXRDdXJzb3IocG9pbnRlckN1cnNvcigpKTsK
QEAgLTM1OTcsNyArMzU5Nyw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6
ZWxlbWVudEF0UG9pbnQoCiAgICAgSW50UG9pbnQgd2ViQ29yZVBvaW50ID0gSW50UG9pbnQocG9p
bnQtPngsIHBvaW50LT55KTsKICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IEhpdFRlc3RSZXN1
bHQod2ViQ29yZVBvaW50KTsKICAgICBpZiAoZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpKQotICAg
ICAgICByZXN1bHQgPSBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50
KHdlYkNvcmVQb2ludCwgZmFsc2UpOworICAgICAgICByZXN1bHQgPSBmcmFtZS0+ZXZlbnRIYW5k
bGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KHdlYkNvcmVQb2ludCk7CiAgICAgKmVsZW1lbnRE
aWN0aW9uYXJ5ID0gV2ViRWxlbWVudFByb3BlcnR5QmFnOjpjcmVhdGVJbnN0YW5jZShyZXN1bHQp
OwogICAgIHJldHVybiBTX09LOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93eC9XZWJG
cmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3d4L1dlYkZyYW1lLmNwcAppbmRleCBiMzc0MTEzYzA3
NzJhMWM3ZjI2ZjI0NDA4MzAwMmJiM2FhZThjOGE5Li40NzAxNjVkYjQ0ZTI3NWYyNDM1NThjYWZj
MDU1MGEyYjIwYjdjOGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3d4L1dlYkZyYW1lLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L3d4L1dlYkZyYW1lLmNwcApAQCAtNjg5LDcgKzY4OSw3IEBA
IFdlYlZpZXdET01FbGVtZW50SW5mbyBXZWJGcmFtZTo6SGl0VGVzdChjb25zdCB3eFBvaW50JiBw
b3MpIGNvbnN0CiAgICAgV2ViVmlld0RPTUVsZW1lbnRJbmZvIGRvbUluZm87CiAKICAgICBpZiAo
bV9pbXBsLT5mcmFtZS0+dmlldygpKSB7Ci0gICAgICAgIFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQg
cmVzdWx0ID0gbV9pbXBsLT5mcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBv
aW50KG1faW1wbC0+ZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhwb3MpLCBmYWxzZSk7
CisgICAgICAgIFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gbV9pbXBsLT5mcmFtZS0+
ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KG1faW1wbC0+ZnJhbWUtPnZpZXco
KS0+d2luZG93VG9Db250ZW50cyhwb3MpKTsKICAgICAgICAgaWYgKHJlc3VsdC5pbm5lck5vZGUo
KSkgewogICAgICAgICAgICAgZG9tSW5mby5TZXRMaW5rKHJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwo
KS5zdHJpbmcoKSk7CiAgICAgICAgICAgICBkb21JbmZvLlNldFRleHQocmVzdWx0LnRleHRDb250
ZW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24u
Y3BwCmluZGV4IDQyODEzNTQ4MWFmZDljNTFiM2FiZDI3NmNlODYxNmQzOTZmOGI0M2UuLjI5Yzcw
ZGZiNDY2YzdkMGVkNGYxNWViNGM5MjRjM2Q4MmNmNzFiMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9u
QWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgSW5q
ZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uOjpJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rp
b24oV2ViRnJhbWUqIGZyYW1lLAogICAgICwgbV9tb3VzZUJ1dHRvbihXZWJNb3VzZUV2ZW50OjpO
b0J1dHRvbikKIHsKICAgICBpZiAoY29uc3QgTW91c2VFdmVudCogbW91c2VFdmVudCA9IG1vdXNl
RXZlbnRGb3JOYXZpZ2F0aW9uQWN0aW9uKG5hdmlnYXRpb25BY3Rpb24pKSB7Ci0gICAgICAgIG1f
aGl0VGVzdFJlc3VsdCA9IEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdDo6Y3JlYXRlKGZyYW1l
LT5jb3JlRnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KG1vdXNl
RXZlbnQtPmFic29sdXRlTG9jYXRpb24oKSwgZmFsc2UpKTsKKyAgICAgICAgbV9oaXRUZXN0UmVz
dWx0ID0gSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0OjpjcmVhdGUoZnJhbWUtPmNvcmVGcmFt
ZSgpLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQobW91c2VFdmVudC0+YWJz
b2x1dGVMb2NhdGlvbigpKSk7CiAgICAgICAgIG1fbW91c2VCdXR0b24gICA9IG1vdXNlQnV0dG9u
Rm9yTW91c2VFdmVudChtb3VzZUV2ZW50KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBmNDBhYTBhM2UzM2EwZjA0MzEyZTVi
ZmZiYTA1MGRlMWMzOTRkMGIxLi4wNmUwYWMyNGIxOTg3Yzg3YTlmYjc5M2EwY2YyOWMzZTMzYjZm
YmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CkBAIC0xMzEwLDcgKzEzMTAsNyBAQCBzdGF0aWMgYm9vbCBpc0NvbnRleHRDbGljayhjb25zdCBQ
bGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KQogc3RhdGljIGJvb2wgaGFuZGxlQ29udGV4dE1lbnVF
dmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIHBsYXRmb3JtTW91c2VFdmVudCwgV2ViUGFn
ZSogcGFnZSkKIHsKICAgICBJbnRQb2ludCBwb2ludCA9IHBhZ2UtPmNvcmVQYWdlKCktPm1haW5G
cmFtZSgpLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMocGxhdGZvcm1Nb3VzZUV2ZW50LnBvc2l0
aW9uKCkpOwotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gcGFnZS0+Y29yZVBhZ2UoKS0+bWFp
bkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChwb2ludCwgZmFs
c2UpOworICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gcGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZy
YW1lKCktPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChwb2ludCk7CiAKICAg
ICBGcmFtZSogZnJhbWUgPSBwYWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKTsKICAgICBpZiAo
cmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpKQpAQCAtMTU1NSw3ICsxNTU1LDcgQEAgdm9pZCBX
ZWJQYWdlOjpoaWdobGlnaHRQb3RlbnRpYWxBY3RpdmF0aW9uKGNvbnN0IEludFBvaW50JiBwb2lu
dCwgY29uc3QgSW50U2l6ZSYKICAgICAgICAgICAgIHJldHVybjsKIAogI2Vsc2UKLSAgICAgICAg
SGl0VGVzdFJlc3VsdCByZXN1bHQgPSBtYWluZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0
UmVzdWx0QXRQb2ludChtYWluZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhwb2ludCks
IC8qYWxsb3dTaGFkb3dDb250ZW50Ki8gZmFsc2UsIC8qaWdub3JlQ2xpcHBpbmcqLyB0cnVlKTsK
KyAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBtYWluZnJhbWUtPmV2ZW50SGFuZGxlcigp
LT5oaXRUZXN0UmVzdWx0QXRQb2ludChtYWluZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50
cyhwb2ludCksIEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3Rp
dmUgfCBIaXRUZXN0UmVxdWVzdDo6QWxsb3dTaGFkb3dDb250ZW50KTsKICAgICAgICAgYWRqdXN0
ZWROb2RlID0gcmVzdWx0LmlubmVyTm9kZSgpOwogI2VuZGlmCiAgICAgICAgIC8vIEZpbmQgdGhl
IG5vZGUgdG8gaGlnaGxpZ2h0LiBUaGlzIGlzIG5vdCB0aGUgc2FtZSBhcyB0aGUgbm9kZSByZXNw
b25kaW5nIHRoZSB0YXAgZ2VzdHVyZSwgYmVjYXVzZSBtYW55CkBAIC0yNzI0LDcgKzI3MjQsNyBA
QCB2b2lkIFdlYlBhZ2U6OmZpbmRab29tYWJsZUFyZWFGb3JQb2ludChjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYgcG9pbnQsIGNvbnN0IFdlYgogewogICAgIFVOVVNFRF9QQVJBTShhcmVhKTsKICAg
ICBGcmFtZSogbWFpbmZyYW1lID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpOwotICAgIEhpdFRl
c3RSZXN1bHQgcmVzdWx0ID0gbWFpbmZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3Vs
dEF0UG9pbnQobWFpbmZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMocG9pbnQpLCAvKmFs
bG93U2hhZG93Q29udGVudCovIGZhbHNlLCAvKmlnbm9yZUNsaXBwaW5nKi8gdHJ1ZSk7CisgICAg
SGl0VGVzdFJlc3VsdCByZXN1bHQgPSBtYWluZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0
UmVzdWx0QXRQb2ludChtYWluZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhwb2ludCks
IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRU
ZXN0UmVxdWVzdDo6SWdub3JlQ2xpcHBpbmcpOwogCiAgICAgTm9kZSogbm9kZSA9IHJlc3VsdC5p
bm5lck5vZGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IGMyZjAxNjUzNzU5NTNiNTNjYzNjZDFiOWViNDMxZGI1
ZWNlYjkzYWQuLjM1OWYzNWE1ZmI3NGJkZmZhYTc4M2NjYjc2MTNhYTg0ZDQ3ZGI2NmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMu
bW0KQEAgLTM3NSw3ICszNzUsNyBAQCB2b2lkIFdlYlBhZ2U6OmNoYXJhY3RlckluZGV4Rm9yUG9p
bnQoSW50UG9pbnQgcG9pbnQsIHVpbnQ2NF90JiBpbmRleCkKICAgICBpZiAoIWZyYW1lKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGZyYW1lLT5ldmVudEhh
bmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQocG9pbnQsIGZhbHNlKTsKKyAgICBIaXRUZXN0
UmVzdWx0IHJlc3VsdCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9p
bnQocG9pbnQpOwogICAgIGZyYW1lID0gcmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpID8gcmVz
dWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpLT5kb2N1bWVudCgpLT5mcmFtZSgpIDogbV9wYWdlLT5m
b2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgCiAgICAgUmVmUHRy
PFJhbmdlPiByYW5nZSA9IGZyYW1lLT5yYW5nZUZvclBvaW50KHJlc3VsdC5yb3VuZGVkUG9pbnQo
KSk7CkBAIC00NjQsNyArNDY0LDcgQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3JtRGljdGlvbmFyeUxv
b2t1cEF0TG9jYXRpb24oY29uc3QgRmxvYXRQb2ludCYgZmxvYXRQb2ludCkKIAogICAgIC8vIEZp
bmQgdGhlIGZyYW1lIHRoZSBwb2ludCBpcyBvdmVyLgogICAgIEludFBvaW50IHBvaW50ID0gcm91
bmRlZEludFBvaW50KGZsb2F0UG9pbnQpOwotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZnJh
bWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChmcmFtZS0+dmlldygpLT53
aW5kb3dUb0NvbnRlbnRzKHBvaW50KSwgZmFsc2UpOworICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0
ID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChmcmFtZS0+dmll
dygpLT53aW5kb3dUb0NvbnRlbnRzKHBvaW50KSk7CiAgICAgZnJhbWUgPSByZXN1bHQuaW5uZXJO
b25TaGFyZWROb2RlKCkgPyByZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCktPmRvY3VtZW50KCkt
PmZyYW1lKCkgOiBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUo
KTsKIAogICAgIEludFBvaW50IHRyYW5zbGF0ZWRQb2ludCA9IGZyYW1lLT52aWV3KCktPndpbmRv
d1RvQ29udGVudHMocG9pbnQpOwpAQCAtNzI3LDcgKzcyNyw3IEBAIHZvaWQgV2ViUGFnZTo6c2hv
dWxkRGVsYXlXaW5kb3dPcmRlcmluZ0V2ZW50KGNvbnN0IFdlYktpdDo6V2ViTW91c2VFdmVudCYg
ZXZlbnQsCiAgICAgICAgIHJldHVybjsKIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi0gICAg
SGl0VGVzdFJlc3VsdCBoaXRSZXN1bHQgPSBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RS
ZXN1bHRBdFBvaW50KGZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMoZXZlbnQucG9zaXRp
b24oKSksIHRydWUpOworICAgIEhpdFRlc3RSZXN1bHQgaGl0UmVzdWx0ID0gZnJhbWUtPmV2ZW50
SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChmcmFtZS0+dmlldygpLT53aW5kb3dUb0Nv
bnRlbnRzKGV2ZW50LnBvc2l0aW9uKCkpLCBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRU
ZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93U2hhZG93Q29udGVudCk7
CiAgICAgaWYgKGhpdFJlc3VsdC5pc1NlbGVjdGVkKCkpCiAgICAgICAgIHJlc3VsdCA9IGZyYW1l
LT5ldmVudEhhbmRsZXIoKS0+ZXZlbnRNYXlTdGFydERyYWcocGxhdGZvcm0oZXZlbnQpKTsKICNl
bmRpZgpAQCAtNzQwLDcgKzc0MCw3IEBAIHZvaWQgV2ViUGFnZTo6YWNjZXB0c0ZpcnN0TW91c2Uo
aW50IGV2ZW50TnVtYmVyLCBjb25zdCBXZWJLaXQ6OldlYk1vdXNlRXZlbnQmIGV2CiAgICAgaWYg
KCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIEhpdFRlc3RSZXN1bHQgaGl0UmVz
dWx0ID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChmcmFtZS0+
dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKGV2ZW50LnBvc2l0aW9uKCkpLCB0cnVlKTsKKyAgICBI
aXRUZXN0UmVzdWx0IGhpdFJlc3VsdCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJl
c3VsdEF0UG9pbnQoZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhldmVudC5wb3NpdGlv
bigpKSwgSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8
IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd1NoYWRvd0NvbnRlbnQpOwogICAgIGZyYW1lLT5ldmVudEhh
bmRsZXIoKS0+c2V0QWN0aXZhdGlvbkV2ZW50TnVtYmVyKGV2ZW50TnVtYmVyKTsKICNpZiBFTkFC
TEUoRFJBR19TVVBQT1JUKQogICAgIGlmIChoaXRSZXN1bHQuaXNTZWxlY3RlZCgpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmIGIvU291cmNlL1dlYktpdDIvd2lu
L1dlYktpdDIuZGVmCmluZGV4IDk3NWE3M2QzODc2ZWI0MzZlYjRiZWI5MjA5ODY1ZjE5OGViMDVi
YzEuLjhlNTYwOTFiNTg3MTI2NjY4YzBjODQwZWVhNmU1ZGYzMDlkMjUzNDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgorKysgYi9Tb3VyY2UvV2ViS2l0Mi93aW4v
V2ViS2l0Mi5kZWYKQEAgLTI1OSw3ICsyNTksNyBAQCBFWFBPUlRTCiAgICAgICAgID8/MUNvbnRl
eHREZXN0cnVjdGlvbk9ic2VydmVyQFdlYkNvcmVAQE1BRUBYWgogICAgICAgICA/Y29udGV4dERl
c3Ryb3llZEBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlckBXZWJDb3JlQEBVQUVYWFoKICAgICAg
ICAgPz8wQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXJAV2ViQ29yZUBAUUFFQFBBVlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRAMUBAWgotICAgICAgICA/bm9kZXNGcm9tUmVjdEBEb2N1bWVudEBXZWJD
b3JlQEBRQkU/QVY/JFBhc3NSZWZQdHJAVk5vZGVMaXN0QFdlYkNvcmVAQEBXVEZAQEhISUlJSV9O
MDBAWgorICAgICAgICA/bm9kZXNGcm9tUmVjdEBEb2N1bWVudEBXZWJDb3JlQEBRQkU/QVY/JFBh
c3NSZWZQdHJAVk5vZGVMaXN0QFdlYkNvcmVAQEBXVEZAQEhISUlJSUlAWgogICAgICAgICA/c2Vs
ZWN0aW9uU3RhcnRIYXNNYXJrZXJGb3JARWRpdG9yQFdlYkNvcmVAQFFCRV9OVzRNYXJrZXJUeXBl
QERvY3VtZW50TWFya2VyQDJASEhAWgogICAgICAgICA/d2Via2l0V2lsbEVudGVyRnVsbFNjcmVl
bkZvckVsZW1lbnRARG9jdW1lbnRAV2ViQ29yZUBAUUFFWFBBVkVsZW1lbnRAMkBAWgogICAgICAg
ICA/d2Via2l0RGlkRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudEBEb2N1bWVudEBXZWJDb3JlQEBR
QUVYUEFWRWxlbWVudEAyQEBaCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0
MkNGTGl0ZS5kZWYgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYKaW5kZXgg
MzNlOGRlYjgwNzgzOWQzNGFhYWNiNDU1MTlmMDgzZGQzOWE2YTZjYS4uMDlmYjAzMjcyODBiYWNj
OGI0ZDU3MGIyMzIwZmUwOTJiOWI4NzAwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvd2lu
L1dlYktpdDJDRkxpdGUuZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRl
LmRlZgpAQCAtMjUzLDcgKzI1Myw3IEBAIEVYUE9SVFMKICAgICAgICAgP3VzZXJQcmVmZXJyZWRM
YW5ndWFnZXNAV2ViQ29yZUBAWUE/QVY/JFZlY3RvckBWU3RyaW5nQFdURkBAJDBBQEBXVEZAQFha
CiAgICAgICAgID91dGY4QFN0cmluZ0BXVEZAQFFCRT9BVkNTdHJpbmdAMkBfTkBaCiAgICAgICAg
ID92aWV3QERvY3VtZW50QFdlYkNvcmVAQFFCRVBBVkZyYW1lVmlld0AyQFhaCi0gICAgICAgID9u
b2Rlc0Zyb21SZWN0QERvY3VtZW50QFdlYkNvcmVAQFFCRT9BVj8kUGFzc1JlZlB0ckBWTm9kZUxp
c3RAV2ViQ29yZUBAQFdURkBASEhJSUlJX04wMEBaCisgICAgICAgID9ub2Rlc0Zyb21SZWN0QERv
Y3VtZW50QFdlYkNvcmVAQFFCRT9BVj8kUGFzc1JlZlB0ckBWTm9kZUxpc3RAV2ViQ29yZUBAQFdU
RkBASEhJSUlJSUBaCiAgICAgICAgID9zZWxlY3Rpb25TdGFydEhhc01hcmtlckZvckBFZGl0b3JA
V2ViQ29yZUBAUUJFX05XNE1hcmtlclR5cGVARG9jdW1lbnRNYXJrZXJAMkBISEBaCiAgICAgICAg
ID9yZXN0cmljdFNjYWxlRmFjdG9yVG9Jbml0aWFsU2NhbGVJZk5vdFVzZXJTY2FsYWJsZUBXZWJD
b3JlQEBZQVhBQVVWaWV3cG9ydEF0dHJpYnV0ZXNAMUBAWgogICAgICAgICA/cmVzdHJpY3RNaW5p
bXVtU2NhbGVGYWN0b3JUb1ZpZXdwb3J0U2l6ZUBXZWJDb3JlQEBZQVhBQVVWaWV3cG9ydEF0dHJp
YnV0ZXNAMUBWSW50U2l6ZUAxQEBaCmRpZmYgLS1naXQgYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJv
bHMuZmlsdGVyIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgppbmRleCAxYTIxZWY5
ZWY2MTkxMTg2NDg4Zjc4ZWNiZmZmNDZjNWNjMzA2YmFmLi5hOTE4YzhjYjI5MDE4MmIzOTFiYTZk
MmY5OTZlODViMmU0MDhhODQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMu
ZmlsdGVyCisrKyBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKQEAgLTE2Miw3ICsx
NjIsNyBAQCBfWk43V2ViQ29yZTIyUnVudGltZUVuYWJsZWRGZWF0dXJlczE4aXNTaGFkb3dET01F
bmFibGVkRTsKIF9aTjdXZWJDb3JlMjJSdW50aW1lRW5hYmxlZEZlYXR1cmVzMjJpc0NTU0V4Y2x1
c2lvbnNFbmFibGVkRTsKIF9aTjdXZWJDb3JlMjJSdW50aW1lRW5hYmxlZEZlYXR1cmVzMjJpc0Rp
YWxvZ0VsZW1lbnRFbmFibGVkRTsKIF9aTjdXZWJDb3JlMjJSdW50aW1lRW5hYmxlZEZlYXR1cmVz
Mzdpc0F1dGhvclNoYWRvd0RPTUZvckFueUVsZW1lbnRFbmFibGVkRTsKLV9aTks3V2ViQ29yZThE
b2N1bWVudDEzbm9kZXNGcm9tUmVjdEVpaWpqampiYmI7CitfWk5LN1dlYkNvcmU4RG9jdW1lbnQx
M25vZGVzRnJvbVJlY3RFaWlqampqajsKIF9aTjdXZWJDb3JlNHRvSlNFUE4zSlNDOUV4ZWNTdGF0
ZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTlNfOE5vZGVMaXN0RTsKIF9aTks3V2ViQ29yZTZF
ZGl0b3IyNnNlbGVjdGlvblN0YXJ0SGFzTWFya2VyRm9yRU5TXzE0RG9jdW1lbnRNYXJrZXIxME1h
cmtlclR5cGVFaWk7CiBfWk43V2ViQ29yZThEb2N1bWVudDMzd2Via2l0RGlkRXhpdEZ1bGxTY3Jl
ZW5Gb3JFbGVtZW50RVBOU183RWxlbWVudEU7CmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFu
Z2VMb2cKaW5kZXggMmI3YmM4ZTEzZWVkOTA5OGYwZGQ1ZTIzYzJiMWZmNGMzMGZhNTI4Ny4uODJi
OThkMmU0ZDkxOGQyY2EyOGU3ODQ3YWMxOGZlNWUzZDllZWMyYyAxMDA2NDQKLS0tIGEvQ2hhbmdl
TG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA5LTA1ICBBbGxhbiBT
YW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgorCisgICAgICAgIFNpbXBs
aWZ5IGhpdFRlc3RSZXN1bHRBdFBvaW50IGFuZCBub2Rlc0Zyb21SZWN0IEFQSXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NzIwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGV4cG9ydGVkIHN5
bWJvbHMuCisKKyAgICAgICAgKiBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyOgorCiAy
MDEyLTA5LTA2ICBaYW4gRG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CiAKICAgICAg
ICAgW0d0a10gUmVtb3ZlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgZmVhdHVyZXMgdGhhdCBh
cmUgbm90IHN1cHBvcnRlZCBieSB0aGUgR3RrIHBvcnQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188065</attachid>
            <date>2013-02-13 06:03:21 -0800</date>
            <delta_ts>2013-02-13 06:10:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95720-20130213145906.patch</filename>
            <type>text/plain</type>
            <size>64374</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyNzMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2Q2YzZlYTM1MjUyZWVl
YjE0NjdiY2M2Mjc4NjM4YWNmNmM4YzY2My4uMDNhYzUxMjczYWU5MzczZGZmOTA0NDVkMDhmZDlk
M2JlZjY3MmNkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEzLTAyLTEzICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIFNp
bXBsaWZ5IGhpdFRlc3RSZXN1bHRBdFBvaW50IGFuZCBub2Rlc0Zyb21SZWN0IEFQSXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NzIwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGV4aXN0aW5nIEFQ
SSB3YXMgb3ZlcmxvYWRlZCBhbmQgY291bGQgYmUgc2ltcGxpZmllZCBieSBwYXNzaW5nIGFsbCB0
aGUgYm9vbCBhcmd1bWVudHMgaW4gCisgICAgICAgIGEgSGl0VGVzdFJlcXVlc3QgYXJndW1lbnQu
IFRoaXMgc2hvdWxkIGFsc28gaGVscCBjbGFyaWZ5IHRoZSBjYWxsIGFzIHRoZSBlbnVtIHZhbHVl
cyBleHBsaWNpdGVseQorICAgICAgICBzdGF0ZSB3aGF0IHRoZXkgZG8uCisKKyAgICAgICAgKiBX
ZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLm9yZGVyOgorICAgICAgICAqIGRvbS9E
b2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6bm9kZXNGcm9tUmVjdCk6
CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChEb2N1bWVudCk6CisgICAgICAg
ICogcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGV4dE1lbnVDb250cm9sbGVyOjpjcmVhdGVDb250ZXh0TWVudSk6CisgICAgICAgICogcGFnZS9E
cmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6Y2Fu
UHJvY2Vzc0RyYWcpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJh
Zyk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRIYW5kbGVyOjpoaXRUZXN0UmVzdWx0QXRQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVGb3JUZXh0U2VsZWN0aW9uT3JDb250ZXh0TWVudSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmJlc3RDbGlja2FibGVOb2RlRm9yVG91Y2hQ
b2ludCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmJlc3RDb250ZXh0TWVudU5v
ZGVGb3JUb3VjaFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6YmVzdFpv
b21hYmxlQXJlYUZvclRvdWNoUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVy
OjpoYW5kbGVUb3VjaEV2ZW50KToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChFdmVudEhhbmRsZXIpOgorICAgICAgICAqIHBhZ2Uv
Rm9jdXNDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZUZvY3VzQ2FuZGlk
YXRlSWZOZWVkZWQpOgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWU6OnZpc2libGVQb3NpdGlvbkZvclBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lOjpkb2N1bWVudEF0UG9pbnQpOgorICAgICAgICAqIHBhZ2UvVG91Y2hEaXNhbWJpZ3VhdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaW5kR29vZFRvdWNoVGFyZ2V0cyk6CisgICAgICAg
ICogcmVuZGVyaW5nL0hpdFRlc3RSZXF1ZXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0
UmVxdWVzdDo6YWxsb3dzRnJhbWVTY3JvbGxiYXJzKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVy
bmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Om5vZGVzRnJvbVJlY3QpOgor
CiAyMDEzLTAyLTEzICBBbmRyZXcgV2lsc29uICA8YXR3aWxzb25AY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQgQ2hyb21pdW0gZ3lwLWZpbGUgY2xlYW51cCBhZnRlciBnbGliIGJh
Y2tlbmQgcmVtb3ZhbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCmluZGV4IGViNDE5NzEy
NDAxYjA0NzA0MDY5MjQyYTUxMTk5MjQ5ODFkZjc1MmQuLjBjYTRmZjkwZjg1MGMxOTY5MmZmZTcw
MDRkNzMwODRkNWFmYWMyMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDIxIEBACisyMDEzLTAyLTEzICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5z
ZW5AZGlnaWEuY29tPgorCisgICAgICAgIFNpbXBsaWZ5IGhpdFRlc3RSZXN1bHRBdFBvaW50IGFu
ZCBub2Rlc0Zyb21SZWN0IEFQSXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTk1NzIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVXBkYXRlIGNhbGxzIHRvIG5ldyBBUEkuCisKKyAgICAgICAgKiBBcGkvV2Vi
UGFnZS5jcHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VQcml2YXRlOjpj
b250ZXh0Tm9kZSk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VQcml2YXRl
Ojpub2RlRm9yWm9vbVVuZGVyUG9pbnQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpX
ZWJQYWdlUHJpdmF0ZTo6aGFuZGxlTW91c2VFdmVudCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpX
ZWJLaXQ6OldlYlBhZ2U6Om5vZGVBdERvY3VtZW50UG9pbnQpOgorICAgICAgICAoQmxhY2tCZXJy
eTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZTo6aGl0VGVzdFJlc3VsdCk6CisgICAgICAgICogV2Vi
S2l0U3VwcG9ydC9TZWxlY3Rpb25IYW5kbGVyLmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6Oldl
YktpdDo6dmlzaWJsZVBvc2l0aW9uRm9yUG9pbnRJZ25vcmluZ0NsaXBwaW5nKToKKwogMjAxMy0w
Mi0xMiAgSmFrb2IgUGV0c292aXRzICA8anBldHNvdml0c0ByaW0uY29tPgogCiAgICAgICAgIFtC
bGFja0JlcnJ5XSBBc3N1bWUgc2V0U2Nyb2xsaW5nT3Jab29taW5nKCkgdG8gYmUgY2FsbGVkIG9u
IHRoZSBXZWJLaXQgdGhyZWFkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA2NzNlYjIw
ZDk5MjY5ZDZlODhiNjJhNmQ0MGUyNGRkM2RiMDAwNzY0Li4yNmE5OTA2NTE5MTNiY2FlNTUzMzkw
MjRhNDcwNmEzZDEzMjljNjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI1IEBACisyMDEzLTAyLTEzICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5A
ZGlnaWEuY29tPgorCisgICAgICAgIFNpbXBsaWZ5IGhpdFRlc3RSZXN1bHRBdFBvaW50IGFuZCBu
b2Rlc0Zyb21SZWN0IEFQSXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTk1NzIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVXBkYXRlIGNhbGxzIHRvIG5ldyBBUEkuCisKKyAgICAgICAgKiBzcmMvQ29udGV4
dE1lbnVDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6c2VsZWN0TWlzc3BlbGxlZFdv
cmQpOgorICAgICAgICAqIHNyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwOgorICAgICAgICAo
V2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbik6CisgICAgICAgICogc3JjL1dlYkZyYW1lSW1wbC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6Y2hhcmFjdGVySW5kZXhGb3JQb2ludCk6CisgICAgICAg
ICogc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
bHVnaW5Db250YWluZXJJbXBsOjppc1JlY3RUb3Btb3N0KToKKyAgICAgICAgKiBzcmMvV2ViVmll
d0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6aGFuZGxlTW91c2VEb3du
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmNvbXB1dGVCbG9ja0JvdW5kcyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpiZXN0VG91Y2hMaW5rTm9kZSk6CisKIDIwMTMt
MDItMTIgIFlvc2hpZnVtaSBJbm91ZSAgPHlvc2luQGNocm9taXVtLm9yZz4KIAogICAgICAgICBV
bnJldmlld2VkLiBCdWlsZCBmaXggZm9yIENocm9taXVtLVdpbi4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRl
eCA4ZDkwNTMyMDIwOTg5MDdmZjM5YzRhZTI2YjY1NmQ5MzZmNDE4MjgxLi44NGRjMWMwOGVhMzlk
YWYxMTA5ZTlkNDhhYmM2M2I1NzcxNjkzNGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTUgQEAKKzIwMTMtMDItMTMgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBk
aWdpYS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkgaGl0VGVzdFJlc3VsdEF0UG9pbnQgYW5kIG5v
ZGVzRnJvbVJlY3QgQVBJcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTU3MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVcGRhdGUgY2FsbHMgdG8gbmV3IEFQSS4KKworICAgICAgICAqIGV3ay9ld2tfZnJh
bWUuY3BwOgorICAgICAgICAoZXdrX2ZyYW1lX2hpdF90ZXN0X25ldyk6CisKIDIwMTMtMDItMTIg
IEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgW1Rl
eE1hcF0gQXBwbHkgZnJhbWVzLXBlci1zZWNvbmQgZGVidWcgY291bnRlciB0byBXSzEuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKaW5kZXggNTk5Y2RiNmU4M2NiYjNlOTY0NzJlODBmYjMxMzE3ZjY1YmRhZTA4MS4u
Y2QxODBlNDZjNWMzNDgxYzYxNGEwZDBjMjk3ZGZjNzAyYzFmNzY1MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE3IEBACisyMDEzLTAyLTEzICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxh
bGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIFNpbXBsaWZ5IGhpdFRlc3RSZXN1bHRB
dFBvaW50IGFuZCBub2Rlc0Zyb21SZWN0IEFQSXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NzIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGNhbGxzIHRvIG5ldyBBUEkuCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjphY3Rpb25EaWN0aW9uYXJ5KToKKyAgICAgICAgKiBXZWJWaWV3L1dl
YkhUTUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBlbGVtZW50QXRQb2ludDphbGxv
d1NoYWRvd0NvbnRlbnQ6XSk6CisKIDIwMTMtMDItMTIgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29y
YXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBFbmFibGUgUEFHRV9WSVNJQklMSVRZX0FQ
SQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L3F0L0NoYW5nZUxvZwppbmRleCBjN2U2MWI5MDlhNDNlYjI1OWY4MDEzNWI3MDEyMmE3Njc5NDcz
YWQ4Li42ZmE2NTNiZjRlNjBlZGFhNjliMjU0MWVkY2M5NWUxNGRiMDk0OWViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEzLTAyLTEzICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4g
IDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIFNpbXBsaWZ5IGhpdFRlc3RSZXN1
bHRBdFBvaW50IGFuZCBub2Rlc0Zyb21SZWN0IEFQSXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NzIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGNhbGxzIHRvIG5ldyBBUEkuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUVdlYkZyYW1lQWRhcHRlci5j
cHA6CisgICAgICAgIChRV2ViRnJhbWVBZGFwdGVyOjpoaXRUZXN0Q29udGVudCk6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcDoKKyAgICAgICAgKFFXZWJQYWdl
QWRhcHRlcjo6VG91Y2hBZGp1c3Rlcjo6ZmluZENhbmRpZGF0ZVBvaW50Rm9yVG91Y2gpOgorICAg
ICAgICAoUVdlYlBhZ2VBZGFwdGVyOjpoYW5kbGVTb2Z0d2FyZUlucHV0UGFuZWwpOgorICAgICAg
ICAoUVdlYlBhZ2VBZGFwdGVyOjp1cGRhdGVQb3NpdGlvbkRlcGVuZGVudE1lbnVBY3Rpb25zKToK
KwogMjAxMy0wMi0xMiAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4K
IAogICAgICAgICBbVGV4TWFwXSBBcHBseSBmcmFtZXMtcGVyLXNlY29uZCBkZWJ1ZyBjb3VudGVy
IHRvIFdLMS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCAzYmI0ZTQwNzYwZjg3OTcwNDJiNDg0ZDNjZDQ0
YzQ3YzRiM2ZhM2M2Li4yNWEwZmY3MmMzNTZhZWU4ZmM0MjMxYzA1YjUwNjc1ZWNjNGVhNjQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTMtMDItMTMgIEFsbGFuIFNhbmRm
ZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkg
aGl0VGVzdFJlc3VsdEF0UG9pbnQgYW5kIG5vZGVzRnJvbVJlY3QgQVBJcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU3MjAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgY2FsbHMgdG8gbmV3IEFQ
SS4KKworICAgICAgICAqIFdlYkFjdGlvblByb3BlcnR5QmFnLmNwcDoKKyAgICAgICAgKFdlYkFj
dGlvblByb3BlcnR5QmFnOjpSZWFkKToKKyAgICAgICAgKiBXZWJLaXQudmNwcm9qL1dlYktpdEV4
cG9ydHMuZGVmLmluOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6
aGFuZGxlQ29udGV4dE1lbnVFdmVudCk6CisgICAgICAgIChXZWJWaWV3OjplbGVtZW50QXRQb2lu
dCk6CisKIDIwMTMtMDItMTEgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgRGlzYWJsZSBkZWxldGUgYnV0dG9uIGNvbnRyb2xsZXIgb24gbm9uLU1hYyBwb3J0cyBh
bmQgZGVsZXRlIEVkaXRvckNsaWVudDo6c2hvdWxkU2hvd0RlbGV0ZUludGVyZmFjZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3d4L0NoYW5n
ZUxvZwppbmRleCBlNmNjNTE2M2M5YzljZGRhNjExMzUzZDU3MjIzMDJmOTdkZDViYzZhLi5lNDIx
YjY0NTE3ZjU5MzRhODdmY2VkYTJiMjg2OTdjZTI1OWU2MWYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L3d4L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE1IEBACisyMDEzLTAyLTEzICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5q
ZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIFNpbXBsaWZ5IGhpdFRlc3RSZXN1bHRBdFBvaW50
IGFuZCBub2Rlc0Zyb21SZWN0IEFQSXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk1NzIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVXBkYXRlIGNhbGxzIHRvIG5ldyBBUEkuCisKKyAgICAgICAgKiBXZWJG
cmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpIaXRUZXN0KToKKwogMjAxMy0w
Mi0xMSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBEaXNhYmxl
IGRlbGV0ZSBidXR0b24gY29udHJvbGxlciBvbiBub24tTWFjIHBvcnRzIGFuZCBkZWxldGUgRWRp
dG9yQ2xpZW50OjpzaG91bGRTaG93RGVsZXRlSW50ZXJmYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNzU4NzE1
NDY2Zjk3NjI3ZjVmNmIxZTlmMTljMTA2ZTU1NjMyNTQyYS4uYjI0OTViYjhiYzIyODcyMjc5NjY0
NmE3NmI3ZDQyODVlM2IxZjNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEzLTAy
LTEzICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisg
ICAgICAgIFNpbXBsaWZ5IGhpdFRlc3RSZXN1bHRBdFBvaW50IGFuZCBub2Rlc0Zyb21SZWN0IEFQ
SXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NzIw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRl
IGNhbGxzIHRvIG5ldyBBUEkgYW5kIHVwZGF0ZSBleHBvcnRlZCBzeW1ib2xzLgorCisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rp
b24uY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246
OkluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmhpdFRlc3Qp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6aGFuZGxlQ29udGV4dE1lbnVFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmhpZ2hsaWdodFBvdGVudGlhbEFjdGl2YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpmaW5kWm9vbWFibGVBcmVhRm9yUG9pbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y2hhcmFjdGVy
SW5kZXhGb3JQb2ludCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBlcmZvcm1EaWN0aW9u
YXJ5TG9va3VwQXRMb2NhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNob3VsZERl
bGF5V2luZG93T3JkZXJpbmdFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmFjY2Vw
dHNGaXJzdE1vdXNlKToKKwogMjAxMy0wMi0xMiAgQWRlbmlsc29uIENhdmFsY2FudGkgIDxjYXZh
bGNhbnRpaUBnbWFpbC5jb20+CiAKICAgICAgICAgW1dLMl0gUGFnZSByZWxvYWRpbmcgd2lsbCBj
cmFzaCBVSVByb2Nlc3MgYWZ0ZXIgV2ViUHJvY2VzcyB3YXMga2lsbGVkCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCmluZGV4IGRmZGFlODM4M2Q5NmZkOWVmOTNjYWNlMTQ5ZTcyZTg1NmQzYzY1Y2IuLjBjM2U1
Mzk3Yjg5ZjlkNmFlYzk0MDc5NzIxZThkZWI1NWQ2ODM2NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CkBAIC0xNzUsNyArMTc1LDcgQEAgX19aTjdXZWJDb3JlMTJFdmVudEhhbmRsZXIxNHNjcm9sbE92
ZXJmbG93RU5TXzE1U2Nyb2xsRGlyZWN0aW9uRU5TXzE3U2Nyb2xsR3JhbnUKIF9fWk43V2ViQ29y
ZTEyRXZlbnRIYW5kbGVyMTVoYW5kbGVBY2Nlc3NLZXlFUktOU18yMVBsYXRmb3JtS2V5Ym9hcmRF
dmVudEUKIF9fWk43V2ViQ29yZTEyRXZlbnRIYW5kbGVyMTZoYW5kbGVXaGVlbEV2ZW50RVJLTlNf
MThQbGF0Zm9ybVdoZWVsRXZlbnRFCiBfX1pON1dlYkNvcmUxMkV2ZW50SGFuZGxlcjE3c2Nyb2xs
UmVjdXJzaXZlbHlFTlNfMTVTY3JvbGxEaXJlY3Rpb25FTlNfMTdTY3JvbGxHcmFudWxhcml0eUVQ
TlNfNE5vZGVFCi1fX1pON1dlYkNvcmUxMkV2ZW50SGFuZGxlcjIwaGl0VGVzdFJlc3VsdEF0UG9p
bnRFUktOU18xMUxheW91dFBvaW50RWJiTlNfMTdIaXRUZXN0U2Nyb2xsYmFyc0VqUktOU18xMExh
eW91dFNpemVFCitfX1pON1dlYkNvcmUxMkV2ZW50SGFuZGxlcjIwaGl0VGVzdFJlc3VsdEF0UG9p
bnRFUktOU18xMUxheW91dFBvaW50RWpSS05TXzEwTGF5b3V0U2l6ZUUKIF9fWk43V2ViQ29yZTEy
RXZlbnRIYW5kbGVyMjFoYW5kbGVNb3VzZVByZXNzRXZlbnRFUktOU18xOFBsYXRmb3JtTW91c2VF
dmVudEUKIF9fWk43V2ViQ29yZTEyRXZlbnRIYW5kbGVyMjNoYW5kbGVNb3VzZVJlbGVhc2VFdmVu
dEVSS05TXzE4UGxhdGZvcm1Nb3VzZUV2ZW50RQogX19aTjdXZWJDb3JlMTJFdmVudEhhbmRsZXIy
NGxvZ2ljYWxTY3JvbGxSZWN1cnNpdmVseUVOU18yMlNjcm9sbExvZ2ljYWxEaXJlY3Rpb25FTlNf
MTdTY3JvbGxHcmFudWxhcml0eUVQTlNfNE5vZGVFCkBAIC0xNDgwLDcgKzE0ODAsNyBAQCBfX1pO
SzdXZWJDb3JlN0ludFJlY3RjdjZDR1JlY3RFdgogX19aTks3V2ViQ29yZTdSdW5Mb29wOVRpbWVy
QmFzZThpc0FjdGl2ZUV2CiBfX1pOSzdXZWJDb3JlOERvY3VtZW50MTFjb21wbGV0ZVVSTEVSS04z
V1RGNlN0cmluZ0UKIF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQxM2F4T2JqZWN0Q2FjaGVFdgotX19a
Tks3V2ViQ29yZThEb2N1bWVudDEzbm9kZXNGcm9tUmVjdEVpaWpqampiYgorX19aTks3V2ViQ29y
ZThEb2N1bWVudDEzbm9kZXNGcm9tUmVjdEVpaWpqampqCiBfX1pOSzdXZWJDb3JlOERvY3VtZW50
MTRnZXRFbGVtZW50QnlJZEVSS04zV1RGMTJBdG9taWNTdHJpbmdFCiBfX1pOSzdXZWJDb3JlOERv
Y3VtZW50MzFkaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nRVJLTjNXVEY2U3RyaW5nRQog
X19aTks3V2ViQ29yZThEb2N1bWVudDRib2R5RXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUub3JkZXIgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCmluZGV4IGE0YTA0
NzEwOTA3ZjgwZTc2MjI2N2U0ZjYwOGZmNWYwYzk0YzU1MWEuLmZjMTI4MjEzZDNiMWQ2Y2Q3M2I1
ODNiOWE4Y2M1NDA3NjI1ODFlOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
b3JkZXIKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgpAQCAtMjI3NDgsNyArMjI3
NDgsNyBAQCBfX1pOSzdXZWJDb3JlMTJOb2RlSXRlcmF0b3IyMHVwZGF0ZUZvck5vZGVSZW1vdmFs
RVBOU180Tm9kZUVSTlMwXzExTm9kZVBvaW50ZXJFCiBfX1pON1dlYkNvcmUyN2pzTm9kZUl0ZXJh
dG9yUmVmZXJlbmNlTm9kZUVQTjNKU0M5RXhlY1N0YXRlRU5TMF83SlNWYWx1ZUVSS05TMF8xMElk
ZW50aWZpZXJFCiBfX1pOSzdXZWJDb3JlNE5vZGUyMHRyYXZlcnNlUHJldmlvdXNOb2RlRVBLUzBf
CiBfX1pON1dlYkNvcmUzN2pzTm9kZUl0ZXJhdG9yUHJvdG90eXBlRnVuY3Rpb25EZXRhY2hFUE4z
SlNDOUV4ZWNTdGF0ZUUKLV9fWk5LN1dlYkNvcmU4RG9jdW1lbnQxM25vZGVzRnJvbVJlY3RFaWlq
ampqYgorX19aTks3V2ViQ29yZThEb2N1bWVudDEzbm9kZXNGcm9tUmVjdEVpaWpqampqCiBfX1pO
SzdXZWJDb3JlOERvY3VtZW50MTdoYW5kbGVaZXJvUGFkZGluZ0VSS05TXzE0SGl0VGVzdFJlcXVl
c3RFUk5TXzEzSGl0VGVzdFJlc3VsdEUKIF9fWk4zV1RGMjFMaXN0SGFzaFNldFRyYW5zbGF0b3JJ
TlNfNlJlZlB0cklON1dlYkNvcmU0Tm9kZUVFRUxtMjU2RU5TXzdQdHJIYXNoSVM0X0VFRTl0cmFu
c2xhdGVFUlBOU18xNUxpc3RIYXNoU2V0Tm9kZUlTNF9MbTI1NkVFRVJLUzRfUE5TXzI0TGlzdEhh
c2hTZXROb2RlQWxsb2NhdG9ySVM0X0xtMjU2RUVFCiBfX1pON1dlYkNvcmUyMVN0YXRpY0hhc2hT
ZXROb2RlTGlzdEMxRVJOM1dURjExTGlzdEhhc2hTZXRJTlMxXzZSZWZQdHJJTlNfNE5vZGVFRUVM
bTI1NkVOUzFfN1B0ckhhc2hJUzVfRUVFRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggNGQ2
Mjk2M2NhMTFlNTA5OGYwZTFmNzc3NzJmMWFkODkxYzU4OGQzNy4uZjYzZTVkNzM5YTA4Y2E3MGE1
NDcxNzczNmM5MGRkMTNhOWMxYzNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0xMzUx
LDcgKzEzNTEsNyBAQCBTdHJpbmcgRG9jdW1lbnQ6OnN1Z2dlc3RlZE1JTUVUeXBlKCkgY29uc3QK
IC8vICogbWFraW5nIGl0IHJlY2VpdmUgYSByZWN0IGFzIHBhcmFtZXRlciwgaS5lLiBub2Rlc0Zy
b21SZWN0KHgsIHksIHcsIGgpOwogLy8gKiBtYWtpbmcgaXQgcmVjZWl2ZSB0aGUgZXhwYWRpbmcg
c2l6ZSBvZiBlYWNoIGRpcmVjdGlvbiBzZXBhcmF0ZWx5LAogLy8gICBpLmUuIG5vZGVzRnJvbVJl
Y3QoeCwgeSwgdG9wU2l6ZSwgcmlnaHRTaXplLCBib3R0b21TaXplLCBsZWZ0U2l6ZSk7Ci1QYXNz
UmVmUHRyPE5vZGVMaXN0PiBEb2N1bWVudDo6bm9kZXNGcm9tUmVjdChpbnQgY2VudGVyWCwgaW50
IGNlbnRlclksIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFkZGluZywgdW5z
aWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcsIGJvb2wgaWdub3JlQ2xp
cHBpbmcsIGJvb2wgYWxsb3dTaGFkb3dDb250ZW50KSBjb25zdAorUGFzc1JlZlB0cjxOb2RlTGlz
dD4gRG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QoaW50IGNlbnRlclgsIGludCBjZW50ZXJZLCB1bnNp
Z25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcsIHVuc2lnbmVkIGJvdHRvbVBh
ZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nLCBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVl
c3RUeXBlIGhpdFR5cGUpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFNoYXJlIGNvZGUgYmV0d2Vl
biB0aGlzLCBlbGVtZW50RnJvbVBvaW50IGFuZCBjYXJldFJhbmdlRnJvbVBvaW50LgogICAgIGlm
ICghcmVuZGVyZXIoKSkKQEAgLTEzNjYsMTcgKzEzNjYsMTEgQEAgUGFzc1JlZlB0cjxOb2RlTGlz
dD4gRG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QoaW50IGNlbnRlclgsIGludCBjZW50ZXJZLCB1bnNp
Z25lZAogICAgIGZsb2F0IHpvb21GYWN0b3IgPSBmcmFtZS0+cGFnZVpvb21GYWN0b3IoKTsKICAg
ICBMYXlvdXRQb2ludCBwb2ludCA9IHJvdW5kZWRMYXlvdXRQb2ludChGbG9hdFBvaW50KGNlbnRl
clggKiB6b29tRmFjdG9yICsgdmlldygpLT5zY3JvbGxYKCksIGNlbnRlclkgKiB6b29tRmFjdG9y
ICsgdmlldygpLT5zY3JvbGxZKCkpKTsKIAotICAgIGludCB0eXBlID0gSGl0VGVzdFJlcXVlc3Q6
OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZTsKKyAgICBIaXRUZXN0UmVxdWVzdCBy
ZXF1ZXN0KGhpdFR5cGUpOwogCiAgICAgLy8gV2hlbiBpZ25vcmVDbGlwcGluZyBpcyBmYWxzZSwg
dGhpcyBtZXRob2QgcmV0dXJucyBudWxsIGZvciBjb29yZGluYXRlcyBvdXRzaWRlIG9mIHRoZSB2
aWV3cG9ydC4KLSAgICBpZiAoaWdub3JlQ2xpcHBpbmcpCi0gICAgICAgIHR5cGUgfD0gSGl0VGVz
dFJlcXVlc3Q6Oklnbm9yZUNsaXBwaW5nOwotICAgIGVsc2UgaWYgKCFmcmFtZVZpZXctPnZpc2li
bGVDb250ZW50UmVjdCgpLmludGVyc2VjdHMoSGl0VGVzdExvY2F0aW9uOjpyZWN0Rm9yUG9pbnQo
cG9pbnQsIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRp
bmcpKSkKKyAgICBpZiAoIXJlcXVlc3QuaWdub3JlQ2xpcHBpbmcoKSAmJiAhZnJhbWVWaWV3LT52
aXNpYmxlQ29udGVudFJlY3QoKS5pbnRlcnNlY3RzKEhpdFRlc3RMb2NhdGlvbjo6cmVjdEZvclBv
aW50KHBvaW50LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQ
YWRkaW5nKSkpCiAgICAgICAgIHJldHVybiAwOwotICAgIGlmIChhbGxvd1NoYWRvd0NvbnRlbnQp
Ci0gICAgICAgIHR5cGUgfD0gSGl0VGVzdFJlcXVlc3Q6OkFsbG93U2hhZG93Q29udGVudDsKLQot
ICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QodHlwZSk7CiAKICAgICAvLyBQYXNzaW5nIGEgemVy
byBwYWRkaW5nIHdpbGwgdHJpZ2dlciBhIHJlY3QgaGl0IHRlc3QsIGhvd2V2ZXIgZm9yIHRoZSBw
dXJwb3NlcyBvZiBub2Rlc0Zyb21SZWN0LAogICAgIC8vIHdlIHNwZWNpYWwgaGFuZGxlIHRoaXMg
Y2FzZSBpbiBvcmRlciB0byByZXR1cm4gYSB2YWxpZCBOb2RlTGlzdC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmgKaW5kZXggNzJjODM5OTNiZTA3ZmY4YzI3NjIwMjk5YWEyMTY0OTZjZjdmNTllNy4uNDA5NGQ3
N2RjNjhiNThkMWI0NGZiZDg1MzA4NGQ5YjhiNGEyMGRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgK
QEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJET01UaW1lU3RhbXAuaCIKICNpbmNsdWRlICJE
b2N1bWVudEV2ZW50UXVldWUuaCIKICNpbmNsdWRlICJEb2N1bWVudFRpbWluZy5oIgorI2luY2x1
ZGUgIkhpdFRlc3RSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiRm9jdXNEaXJlY3Rpb24uaCIKICNpbmNs
dWRlICJJY29uVVJMLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ291bnRlcnMuaCIKQEAgLTM4MCwx
MSArMzgxLDEwIEBAIHB1YmxpYzoKICAgICAgKiBAcGFyYW0gcmlnaHRQYWRkaW5nIEhvdyBtdWNo
IHRvIGV4cGFuZCB0aGUgcmlnaHQgb2YgdGhlIHJlY3RhbmdsZQogICAgICAqIEBwYXJhbSBib3R0
b21QYWRkaW5nIEhvdyBtdWNoIHRvIGV4cGFuZCB0aGUgYm90dG9tIG9mIHRoZSByZWN0YW5nbGUK
ICAgICAgKiBAcGFyYW0gbGVmdFBhZGRpbmcgSG93IG11Y2ggdG8gZXhwYW5kIHRoZSBsZWZ0IG9m
IHRoZSByZWN0YW5nbGUKLSAgICAgKiBAcGFyYW0gaWdub3JlQ2xpcHBpbmcgd2hldGhlciBvciBu
b3QgdG8gaWdub3JlIHRoZSByb290IHNjcm9sbCBmcmFtZSB3aGVuIHJldHJpZXZpbmcgdGhlIGVs
ZW1lbnQuCi0gICAgICogICAgICAgIElmIGZhbHNlLCB0aGlzIG1ldGhvZCByZXR1cm5zIG51bGwg
Zm9yIGNvb3JkaW5hdGVzIG91dHNpZGUgb2YgdGhlIHZpZXdwb3J0LgogICAgICAqLwotICAgIFBh
c3NSZWZQdHI8Tm9kZUxpc3Q+IG5vZGVzRnJvbVJlY3QoaW50IGNlbnRlclgsIGludCBjZW50ZXJZ
LCB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBib3R0b21QYWRkaW5nLCB1bnNp
Z25lZCBsZWZ0UGFkZGluZywgYm9vbCBpZ25vcmVDbGlwcGluZywgYm9vbCBhbGxvd1NoYWRvd0Nv
bnRlbnQpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IG5vZGVzRnJvbVJlY3QoaW50
IGNlbnRlclgsIGludCBjZW50ZXJZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgdG9wUGFkZGluZywgdW5zaWduZWQgcmlnaHRQYWRkaW5nLCB1bnNpZ25l
ZCBib3R0b21QYWRkaW5nLCB1bnNpZ25lZCBsZWZ0UGFkZGluZywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEhpdFRlc3RSZXF1ZXN0OjpIaXRUZXN0UmVxdWVzdFR5cGUg
aGl0VHlwZSA9IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3Rp
dmUpIGNvbnN0OwogICAgIEVsZW1lbnQqIGVsZW1lbnRGcm9tUG9pbnQoaW50IHgsIGludCB5KSBj
b25zdDsKICAgICBQYXNzUmVmUHRyPFJhbmdlPiBjYXJldFJhbmdlRnJvbVBvaW50KGludCB4LCBp
bnQgeSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNw
cAppbmRleCA0N2JiZjZjZDYwNzAxNDUzMjk3OTM0ZTc2NmY2MjNiNjUyYWM1MjI0Li45YzViMTNj
NzkzMTBiOWZhNTRlM2E2MDcwNWY4NTcwYTQyNTM2ZjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCkBAIC0xNTIsNyArMTUyLDcgQEAgUGFzc093
blB0cjxDb250ZXh0TWVudT4gQ29udGV4dE1lbnVDb250cm9sbGVyOjpjcmVhdGVDb250ZXh0TWVu
dShFdmVudCogZXZlbnQpCiAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQobW91c2VFdmVudC0+YWJz
b2x1dGVMb2NhdGlvbigpKTsKIAogICAgIGlmIChGcmFtZSogZnJhbWUgPSBldmVudC0+dGFyZ2V0
KCktPnRvTm9kZSgpLT5kb2N1bWVudCgpLT5mcmFtZSgpKQotICAgICAgICByZXN1bHQgPSBmcmFt
ZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KG1vdXNlRXZlbnQtPmFic29s
dXRlTG9jYXRpb24oKSwgZmFsc2UpOworICAgICAgICByZXN1bHQgPSBmcmFtZS0+ZXZlbnRIYW5k
bGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KG1vdXNlRXZlbnQtPmFic29sdXRlTG9jYXRpb24o
KSk7CiAKICAgICBpZiAoIXJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IDA2
NTcxMmQ3YTZiNWU3YWNjZDNkNjVkYjE5MzNmMTllODU3M2Y4ZmYuLjJkZDMwNmUwNDkyYWQxMzcw
NDFiY2EyZWNjYTY0MmFhNjI2MzkyNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xs
ZXIuY3BwCkBAIC01NjAsNyArNTYwLDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6Y2FuUHJvY2Vz
c0RyYWcoRHJhZ0RhdGEqIGRyYWdEYXRhKQogICAgIGlmICghbV9wYWdlLT5tYWluRnJhbWUoKS0+
Y29udGVudFJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJlc3VsdCA9
IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2lu
dChwb2ludCwgdHJ1ZSk7CisgICAgcmVzdWx0ID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZlbnRI
YW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KHBvaW50LCBIaXRUZXN0UmVxdWVzdDo6UmVh
ZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93U2hh
ZG93Q29udGVudCk7CiAKICAgICBpZiAoIXJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNzQ0LDcgKzc0NCw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xs
ZXI6OnN0YXJ0RHJhZyhGcmFtZSogc3JjLCBjb25zdCBEcmFnU3RhdGUmIHN0YXRlLCBEcmFnT3Bl
cmF0aW9uCiAgICAgaWYgKCFzcmMtPnZpZXcoKSB8fCAhc3JjLT5jb250ZW50UmVuZGVyZXIoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgSGl0VGVzdFJlc3VsdCBoaXRUZXN0UmVzdWx0
ID0gc3JjLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoZHJhZ09yaWdpbiwg
dHJ1ZSk7CisgICAgSGl0VGVzdFJlc3VsdCBoaXRUZXN0UmVzdWx0ID0gc3JjLT5ldmVudEhhbmRs
ZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoZHJhZ09yaWdpbiwgSGl0VGVzdFJlcXVlc3Q6OlJl
YWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd1No
YWRvd0NvbnRlbnQpOwogICAgIGlmICghc3RhdGUubV9kcmFnU3JjLT5jb250YWlucyhoaXRUZXN0
UmVzdWx0LmlubmVyTm9kZSgpKSkKICAgICAgICAgLy8gVGhlIG9yaWdpbmFsIG5vZGUgYmVpbmcg
ZHJhZ2dlZCBpc24ndCB1bmRlciB0aGUgZHJhZyBvcmlnaW4gYW55bW9yZS4uLiBtYXliZSBpdCB3
YXMKICAgICAgICAgLy8gaGlkZGVuIG9yIG1vdmVkIG91dCBmcm9tIHVuZGVyIHRoZSBjdXJzb3Iu
IFJlZ2FyZGxlc3MsIHdlIGRvbid0IHdhbnQgdG8gc3RhcnQgYSBkcmFnIG9uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggZmI2MzFmN2IxMWI4ODc3ZTUwZjgyNWU2ZTFhODcz
NzkxNWM4MTZkZi4uYjZmMWEyMDQ3ZGJmZDVlNjYxZTBhNDAxNjdmZjM4YmYyYWE0ZGQzYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMTAwMSw3ICsxMDAxLDcgQEAgRHJh
Z1NvdXJjZUFjdGlvbiBFdmVudEhhbmRsZXI6OnVwZGF0ZURyYWdTb3VyY2VBY3Rpb25zQWxsb3dl
ZCgpIGNvbnN0CiB9CiAjZW5kaWYgLy8gRU5BQkxFKERSQUdfU1VQUE9SVCkKIAotSGl0VGVzdFJl
c3VsdCBFdmVudEhhbmRsZXI6OmhpdFRlc3RSZXN1bHRBdFBvaW50KGNvbnN0IExheW91dFBvaW50
JiBwb2ludCwgYm9vbCBhbGxvd1NoYWRvd0NvbnRlbnQsIGJvb2wgaWdub3JlQ2xpcHBpbmcsIEhp
dFRlc3RTY3JvbGxiYXJzIHRlc3RTY3JvbGxiYXJzLCBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJl
cXVlc3RUeXBlIGhpdFR5cGUsIGNvbnN0IExheW91dFNpemUmIHBhZGRpbmcpCitIaXRUZXN0UmVz
dWx0IEV2ZW50SGFuZGxlcjo6aGl0VGVzdFJlc3VsdEF0UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQm
IHBvaW50LCBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhpdFR5cGUsIGNvbnN0
IExheW91dFNpemUmIHBhZGRpbmcpCiB7CiAgICAgLy8gV2UgYWx3YXlzIHNlbmQgaGl0VGVzdFJl
c3VsdEF0UG9pbnQgdG8gdGhlIG1haW4gZnJhbWUgaWYgd2UgaGF2ZSBvbmUsCiAgICAgLy8gb3Ro
ZXJ3aXNlIHdlIG1pZ2h0IGhpdCBhcmVhcyB0aGF0IGFyZSBvYnNjdXJlZCBieSBoaWdoZXIgZnJh
bWVzLgpAQCAtMTAxMiw3ICsxMDEyLDcgQEAgSGl0VGVzdFJlc3VsdCBFdmVudEhhbmRsZXI6Omhp
dFRlc3RSZXN1bHRBdFBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCwgYm9vbAogICAgICAg
ICAgICAgRnJhbWVWaWV3KiBtYWluVmlldyA9IG1haW5GcmFtZS0+dmlldygpOwogICAgICAgICAg
ICAgaWYgKGZyYW1lVmlldyAmJiBtYWluVmlldykgewogICAgICAgICAgICAgICAgIEludFBvaW50
IG1haW5GcmFtZVBvaW50ID0gbWFpblZpZXctPnJvb3RWaWV3VG9Db250ZW50cyhmcmFtZVZpZXct
PmNvbnRlbnRzVG9Sb290Vmlldyhyb3VuZGVkSW50UG9pbnQocG9pbnQpKSk7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIG1haW5GcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBv
aW50KG1haW5GcmFtZVBvaW50LCBhbGxvd1NoYWRvd0NvbnRlbnQsIGlnbm9yZUNsaXBwaW5nLCB0
ZXN0U2Nyb2xsYmFycywgaGl0VHlwZSwgcGFkZGluZyk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IG1haW5GcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KG1haW5GcmFt
ZVBvaW50LCBoaXRUeXBlLCBwYWRkaW5nKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
IH0KQEAgLTEwMjEsMTAgKzEwMjEsNyBAQCBIaXRUZXN0UmVzdWx0IEV2ZW50SGFuZGxlcjo6aGl0
VGVzdFJlc3VsdEF0UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBib29sCiAKICAgICBp
ZiAoIW1fZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gcmVzdWx0Owot
ICAgIGlmIChpZ25vcmVDbGlwcGluZykKLSAgICAgICAgaGl0VHlwZSB8PSBIaXRUZXN0UmVxdWVz
dDo6SWdub3JlQ2xpcHBpbmc7Ci0gICAgaWYgKGFsbG93U2hhZG93Q29udGVudCkKLSAgICAgICAg
aGl0VHlwZSB8PSBIaXRUZXN0UmVxdWVzdDo6QWxsb3dTaGFkb3dDb250ZW50OworCiAgICAgSGl0
VGVzdFJlcXVlc3QgcmVxdWVzdChoaXRUeXBlKTsKICAgICBtX2ZyYW1lLT5jb250ZW50UmVuZGVy
ZXIoKS0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOwogCkBAIC0xMDQ3LDE0ICsxMDQ0LDE0IEBA
IEhpdFRlc3RSZXN1bHQgRXZlbnRIYW5kbGVyOjpoaXRUZXN0UmVzdWx0QXRQb2ludChjb25zdCBM
YXlvdXRQb2ludCYgcG9pbnQsIGJvb2wKICAgICAgICAgZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigp
LT5oaXRUZXN0KHJlcXVlc3QsIHdpZGdldEhpdFRlc3RSZXN1bHQpOwogICAgICAgICByZXN1bHQg
PSB3aWRnZXRIaXRUZXN0UmVzdWx0OwogCi0gICAgICAgIGlmICh0ZXN0U2Nyb2xsYmFycyA9PSBT
aG91bGRIaXRUZXN0U2Nyb2xsYmFycykgeworICAgICAgICBpZiAocmVxdWVzdC5hbGxvd3NGcmFt
ZVNjcm9sbGJhcnMoKSkgewogICAgICAgICAgICAgU2Nyb2xsYmFyKiBldmVudFNjcm9sbGJhciA9
IHZpZXctPnNjcm9sbGJhckF0UG9pbnQocm91bmRlZEludFBvaW50KHBvaW50KSk7CiAgICAgICAg
ICAgICBpZiAoZXZlbnRTY3JvbGxiYXIpCiAgICAgICAgICAgICAgICAgcmVzdWx0LnNldFNjcm9s
bGJhcihldmVudFNjcm9sbGJhcik7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoIWFsbG93
U2hhZG93Q29udGVudCkKKyAgICBpZiAoIXJlcXVlc3QuYWxsb3dzU2hhZG93Q29udGVudCgpKQog
ICAgICAgICByZXN1bHQuc2V0VG9Ob25TaGFkb3dBbmNlc3RvcigpOwogCiAgICAgcmV0dXJuIHJl
c3VsdDsKQEAgLTE0NTIsNyArMTQ0OSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3Vz
ZVByZXNzRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBtb3VzZUV2ZW50KQogICAgIG1f
bW91c2VEb3duV2FzSW5TdWJmcmFtZSA9IGZhbHNlOwogCiAgICAgSGl0VGVzdFJlcXVlc3QgcmVx
dWVzdChIaXRUZXN0UmVxdWVzdDo6QWN0aXZlKTsKLSAgICAvLyBTYXZlIHRoZSBkb2N1bWVudCBw
b2ludCB3ZSBnZW5lcmF0ZSBpbiBjYXNlIHRoZSB3aW5kb3cgY29vcmRpbmF0ZSBpcyBpbnZhbGlk
YXRlZCBieSB3aGF0IGhhcHBlbnMgCisgICAgLy8gU2F2ZSB0aGUgZG9jdW1lbnQgcG9pbnQgd2Ug
Z2VuZXJhdGUgaW4gY2FzZSB0aGUgd2luZG93IGNvb3JkaW5hdGUgaXMgaW52YWxpZGF0ZWQgYnkg
d2hhdCBoYXBwZW5zCiAgICAgLy8gd2hlbiB3ZSBkaXNwYXRjaCB0aGUgZXZlbnQuCiAgICAgTGF5
b3V0UG9pbnQgZG9jdW1lbnRQb2ludCA9IGRvY3VtZW50UG9pbnRGb3JXaW5kb3dQb2ludChtX2Zy
YW1lLCBtb3VzZUV2ZW50LnBvc2l0aW9uKCkpOwogICAgIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJl
c3VsdHMgbWV2ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+cHJlcGFyZU1vdXNlRXZlbnQocmVxdWVz
dCwgZG9jdW1lbnRQb2ludCwgbW91c2VFdmVudCk7CkBAIC0yNDU2LDcgKzI0NTMsNyBAQCBib29s
IEV2ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2
ZW50JiBnZXN0dXJlRXZlbnQpCiAKICAgICBpZiAoKCFzY3JvbGxiYXIgJiYgIWV2ZW50VGFyZ2V0
KSB8fCAhKGhpdFR5cGUgJiBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkpKSB7CiAgICAgICAgIElu
dFBvaW50IGhpdFRlc3RQb2ludCA9IG1fZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhh
ZGp1c3RlZFBvaW50KTsKLSAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBoaXRUZXN0UmVz
dWx0QXRQb2ludChoaXRUZXN0UG9pbnQsIGZhbHNlLCBmYWxzZSwgU2hvdWxkSGl0VGVzdFNjcm9s
bGJhcnMsIGhpdFR5cGUpOworICAgICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGhpdFRlc3RS
ZXN1bHRBdFBvaW50KGhpdFRlc3RQb2ludCwgaGl0VHlwZSB8IEhpdFRlc3RSZXF1ZXN0OjpBbGxv
d0ZyYW1lU2Nyb2xsYmFycyk7CiAgICAgICAgIGV2ZW50VGFyZ2V0ID0gcmVzdWx0LnRhcmdldE5v
ZGUoKTsKICAgICAgICAgaWYgKCFzY3JvbGxiYXIpIHsKICAgICAgICAgICAgIEZyYW1lVmlldyog
dmlldyA9IG1fZnJhbWUtPnZpZXcoKTsKQEAgLTI1OTUsNyArMjU5Miw3IEBAIGJvb2wgRXZlbnRI
YW5kbGVyOjpoYW5kbGVHZXN0dXJlRm9yVGV4dFNlbGVjdGlvbk9yQ29udGV4dE1lbnUoY29uc3Qg
UGxhdGZvcm1HZXN0CiB7CiAjaWYgT1MoQU5EUk9JRCkKICAgICBJbnRQb2ludCBoaXRUZXN0UG9p
bnQgPSBtX2ZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMoZ2VzdHVyZUV2ZW50LnBvc2l0
aW9uKCkpOwotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gaGl0VGVzdFJlc3VsdEF0UG9pbnQo
aGl0VGVzdFBvaW50LCB0cnVlKTsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGhpdFRlc3RS
ZXN1bHRBdFBvaW50KGhpdFRlc3RQb2ludCwgSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0
VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd1NoYWRvd0NvbnRlbnQp
OwogICAgIE5vZGUqIGlubmVyTm9kZSA9IHJlc3VsdC50YXJnZXROb2RlKCk7CiAgICAgaWYgKCFy
ZXN1bHQuaXNMaXZlTGluaygpICYmIGlubmVyTm9kZSAmJiAoaW5uZXJOb2RlLT5pc0NvbnRlbnRF
ZGl0YWJsZSgpIHx8IGlubmVyTm9kZS0+aXNUZXh0Tm9kZSgpKSkgewogICAgICAgICBzZWxlY3RD
bG9zZXN0V29yZEZyb21IaXRUZXN0UmVzdWx0KHJlc3VsdCwgRG9udEFwcGVuZFRyYWlsaW5nV2hp
dGVzcGFjZSk7CkBAIC0yNzM3LDkgKzI3MzQsOCBAQCBib29sIEV2ZW50SGFuZGxlcjo6c2hvdWxk
QXBwbHlUb3VjaEFkanVzdG1lbnQoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGV2ZW50KQog
CiBib29sIEV2ZW50SGFuZGxlcjo6YmVzdENsaWNrYWJsZU5vZGVGb3JUb3VjaFBvaW50KGNvbnN0
IEludFBvaW50JiB0b3VjaENlbnRlciwgY29uc3QgSW50U2l6ZSYgdG91Y2hSYWRpdXMsIEludFBv
aW50JiB0YXJnZXRQb2ludCwgTm9kZSomIHRhcmdldE5vZGUpCiB7Ci0gICAgSGl0VGVzdFJlcXVl
c3Q6OkhpdFRlc3RSZXF1ZXN0VHlwZSBoaXRUeXBlID0gSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5
IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZTsKICAgICBJbnRQb2ludCBoaXRUZXN0UG9pbnQgPSBt
X2ZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHModG91Y2hDZW50ZXIpOwotICAgIEhpdFRl
c3RSZXN1bHQgcmVzdWx0ID0gaGl0VGVzdFJlc3VsdEF0UG9pbnQoaGl0VGVzdFBvaW50LCAvKmFs
bG93U2hhZG93Q29udGVudCovIHRydWUsIC8qaWdub3JlQ2xpcHBpbmcqLyBmYWxzZSwgRG9udEhp
dFRlc3RTY3JvbGxiYXJzLCBoaXRUeXBlLCB0b3VjaFJhZGl1cyk7CisgICAgSGl0VGVzdFJlc3Vs
dCByZXN1bHQgPSBoaXRUZXN0UmVzdWx0QXRQb2ludChoaXRUZXN0UG9pbnQsIEhpdFRlc3RSZXF1
ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6
QWxsb3dTaGFkb3dDb250ZW50LCB0b3VjaFJhZGl1cyk7CiAKICAgICBJbnRSZWN0IHRvdWNoUmVj
dCh0b3VjaENlbnRlciAtIHRvdWNoUmFkaXVzLCB0b3VjaFJhZGl1cyArIHRvdWNoUmFkaXVzKTsK
ICAgICBSZWZQdHI8U3RhdGljSGFzaFNldE5vZGVMaXN0PiBub2RlTGlzdCA9IFN0YXRpY0hhc2hT
ZXROb2RlTGlzdDo6YWRvcHQocmVzdWx0LnJlY3RCYXNlZFRlc3RSZXN1bHQoKSk7CkBAIC0yNzU2
LDkgKzI3NTIsOCBAQCBib29sIEV2ZW50SGFuZGxlcjo6YmVzdENsaWNrYWJsZU5vZGVGb3JUb3Vj
aFBvaW50KGNvbnN0IEludFBvaW50JiB0b3VjaENlbnRlciwgYwogCiBib29sIEV2ZW50SGFuZGxl
cjo6YmVzdENvbnRleHRNZW51Tm9kZUZvclRvdWNoUG9pbnQoY29uc3QgSW50UG9pbnQmIHRvdWNo
Q2VudGVyLCBjb25zdCBJbnRTaXplJiB0b3VjaFJhZGl1cywgSW50UG9pbnQmIHRhcmdldFBvaW50
LCBOb2RlKiYgdGFyZ2V0Tm9kZSkKIHsKLSAgICBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVl
c3RUeXBlIGhpdFR5cGUgPSBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVz
dDo6QWN0aXZlOwogICAgIEludFBvaW50IGhpdFRlc3RQb2ludCA9IG1fZnJhbWUtPnZpZXcoKS0+
d2luZG93VG9Db250ZW50cyh0b3VjaENlbnRlcik7Ci0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQg
PSBoaXRUZXN0UmVzdWx0QXRQb2ludChoaXRUZXN0UG9pbnQsIC8qYWxsb3dTaGFkb3dDb250ZW50
Ki8gdHJ1ZSwgLyppZ25vcmVDbGlwcGluZyovIGZhbHNlLCBEb250SGl0VGVzdFNjcm9sbGJhcnMs
IGhpdFR5cGUsIHRvdWNoUmFkaXVzKTsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGhpdFRl
c3RSZXN1bHRBdFBvaW50KGhpdFRlc3RQb2ludCwgSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwg
SGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd1NoYWRvd0NvbnRl
bnQsIHRvdWNoUmFkaXVzKTsKIAogICAgIEludFJlY3QgdG91Y2hSZWN0KHRvdWNoQ2VudGVyIC0g
dG91Y2hSYWRpdXMsIHRvdWNoUmFkaXVzICsgdG91Y2hSYWRpdXMpOwogICAgIFJlZlB0cjxTdGF0
aWNIYXNoU2V0Tm9kZUxpc3Q+IG5vZGVMaXN0ID0gU3RhdGljSGFzaFNldE5vZGVMaXN0OjphZG9w
dChyZXN1bHQucmVjdEJhc2VkVGVzdFJlc3VsdCgpKTsKQEAgLTI3NjcsOSArMjc2Miw4IEBAIGJv
b2wgRXZlbnRIYW5kbGVyOjpiZXN0Q29udGV4dE1lbnVOb2RlRm9yVG91Y2hQb2ludChjb25zdCBJ
bnRQb2ludCYgdG91Y2hDZW50ZXIsCiAKIGJvb2wgRXZlbnRIYW5kbGVyOjpiZXN0Wm9vbWFibGVB
cmVhRm9yVG91Y2hQb2ludChjb25zdCBJbnRQb2ludCYgdG91Y2hDZW50ZXIsIGNvbnN0IEludFNp
emUmIHRvdWNoUmFkaXVzLCBJbnRSZWN0JiB0YXJnZXRBcmVhLCBOb2RlKiYgdGFyZ2V0Tm9kZSkK
IHsKLSAgICBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhpdFR5cGUgPSBIaXRU
ZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlOwogICAgIEludFBv
aW50IGhpdFRlc3RQb2ludCA9IG1fZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyh0b3Vj
aENlbnRlcik7Ci0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBoaXRUZXN0UmVzdWx0QXRQb2lu
dChoaXRUZXN0UG9pbnQsIC8qYWxsb3dTaGFkb3dDb250ZW50Ki8gZmFsc2UsIC8qaWdub3JlQ2xp
cHBpbmcqLyBmYWxzZSwgRG9udEhpdFRlc3RTY3JvbGxiYXJzLCBoaXRUeXBlLCB0b3VjaFJhZGl1
cyk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBoaXRUZXN0UmVzdWx0QXRQb2ludChoaXRU
ZXN0UG9pbnQsIEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3Rp
dmUsIHRvdWNoUmFkaXVzKTsKIAogICAgIEludFJlY3QgdG91Y2hSZWN0KHRvdWNoQ2VudGVyIC0g
dG91Y2hSYWRpdXMsIHRvdWNoUmFkaXVzICsgdG91Y2hSYWRpdXMpOwogICAgIFJlZlB0cjxTdGF0
aWNIYXNoU2V0Tm9kZUxpc3Q+IG5vZGVMaXN0ID0gU3RhdGljSGFzaFNldE5vZGVMaXN0OjphZG9w
dChyZXN1bHQucmVjdEJhc2VkVGVzdFJlc3VsdCgpKTsKQEAgLTM4NjIsNyArMzg1Niw3IEBAIGJv
b2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVu
dCYgZXZlbnQpCiAgICAgICAgIGlmIChwb2ludFN0YXRlID09IFBsYXRmb3JtVG91Y2hQb2ludDo6
VG91Y2hQcmVzc2VkKSB7CiAgICAgICAgICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdDsKICAgICAg
ICAgICAgIGlmIChmcmVzaFRvdWNoRXZlbnRzKSB7Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0g
aGl0VGVzdFJlc3VsdEF0UG9pbnQocGFnZVBvaW50LCAvKmFsbG93U2hhZG93Q29udGVudCovIHRy
dWUsIGZhbHNlLCBEb250SGl0VGVzdFNjcm9sbGJhcnMsIGhpdFR5cGUpOworICAgICAgICAgICAg
ICAgIHJlc3VsdCA9IGhpdFRlc3RSZXN1bHRBdFBvaW50KHBhZ2VQb2ludCwgaGl0VHlwZSB8IEhp
dFRlc3RSZXF1ZXN0OjpBbGxvd1NoYWRvd0NvbnRlbnQpOwogICAgICAgICAgICAgICAgIG1fb3Jp
Z2luYXRpbmdUb3VjaFBvaW50VGFyZ2V0S2V5ID0gdG91Y2hQb2ludFRhcmdldEtleTsKICAgICAg
ICAgICAgIH0gZWxzZSBpZiAobV9vcmlnaW5hdGluZ1RvdWNoUG9pbnREb2N1bWVudC5nZXQoKSAm
JiBtX29yaWdpbmF0aW5nVG91Y2hQb2ludERvY3VtZW50LT5mcmFtZSgpKSB7CiAgICAgICAgICAg
ICAgICAgTGF5b3V0UG9pbnQgcGFnZVBvaW50SW5PcmlnaW5hdGluZ0RvY3VtZW50ID0gZG9jdW1l
bnRQb2ludEZvcldpbmRvd1BvaW50KG1fb3JpZ2luYXRpbmdUb3VjaFBvaW50RG9jdW1lbnQtPmZy
YW1lKCksIHBvaW50LnBvcygpKTsKQEAgLTM4OTYsNyArMzg5MCw3IEBAIGJvb2wgRXZlbnRIYW5k
bGVyOjpoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYgZXZlbnQpCiAg
ICAgICAgIH0gZWxzZSBpZiAocG9pbnRTdGF0ZSA9PSBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNo
UmVsZWFzZWQgfHwgcG9pbnRTdGF0ZSA9PSBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoQ2FuY2Vs
bGVkKSB7CiAgICAgICAgICAgICAvLyBXZSBvbmx5IHBlcmZvcm0gYSBoaXR0ZXN0IG9uIHJlbGVh
c2Ugb3IgY2FuY2VsIHRvIHVuc2V0IDphY3RpdmUgb3IgOmhvdmVyIHN0YXRlLgogICAgICAgICAg
ICAgaWYgKHRvdWNoUG9pbnRUYXJnZXRLZXkgPT0gbV9vcmlnaW5hdGluZ1RvdWNoUG9pbnRUYXJn
ZXRLZXkpIHsKLSAgICAgICAgICAgICAgICBoaXRUZXN0UmVzdWx0QXRQb2ludChwYWdlUG9pbnQs
IC8qYWxsb3dTaGFkb3dDb250ZW50Ki8gdHJ1ZSwgZmFsc2UsIERvbnRIaXRUZXN0U2Nyb2xsYmFy
cywgaGl0VHlwZSk7CisgICAgICAgICAgICAgICAgaGl0VGVzdFJlc3VsdEF0UG9pbnQocGFnZVBv
aW50LCBoaXRUeXBlIHwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93U2hhZG93Q29udGVudCk7CiAgICAg
ICAgICAgICAgICAgbV9vcmlnaW5hdGluZ1RvdWNoUG9pbnRUYXJnZXRLZXkgPSAwOwogICAgICAg
ICAgICAgfSBlbHNlIGlmIChtX29yaWdpbmF0aW5nVG91Y2hQb2ludERvY3VtZW50LmdldCgpICYm
IG1fb3JpZ2luYXRpbmdUb3VjaFBvaW50RG9jdW1lbnQtPmZyYW1lKCkpIHsKICAgICAgICAgICAg
ICAgICBMYXlvdXRQb2ludCBwYWdlUG9pbnRJbk9yaWdpbmF0aW5nRG9jdW1lbnQgPSBkb2N1bWVu
dFBvaW50Rm9yV2luZG93UG9pbnQobV9vcmlnaW5hdGluZ1RvdWNoUG9pbnREb2N1bWVudC0+ZnJh
bWUoKSwgcG9pbnQucG9zKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKaW5kZXggM2I4
MzYwMjI1YjU4ZTI2NWE1NWViNzhkOTAxZTc3YzRkM2I0NGVmOS4uM2ZjMDdmMmZhMjUyZjljNDVm
MjRmMWY2YjU1ZTQ3ZTdhMDBkNzUzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCkBA
IC05MSw3ICs5MSw2IEBAIGV4dGVybiBjb25zdCBpbnQgVGV4dERyYWdIeXN0ZXJlc2lzOwogZXh0
ZXJuIGNvbnN0IGludCBHZW5lcmFsRHJhZ0h5c3RlcmVzaXM7CiAjZW5kaWYgLy8gRU5BQkxFKERS
QUdfU1VQUE9SVCkKIAotZW51bSBIaXRUZXN0U2Nyb2xsYmFycyB7IFNob3VsZEhpdFRlc3RTY3Jv
bGxiYXJzLCBEb250SGl0VGVzdFNjcm9sbGJhcnMgfTsKIGVudW0gQXBwZW5kVHJhaWxpbmdXaGl0
ZXNwYWNlIHsgU2hvdWxkQXBwZW5kVHJhaWxpbmdXaGl0ZXNwYWNlLCBEb250QXBwZW5kVHJhaWxp
bmdXaGl0ZXNwYWNlIH07CiBlbnVtIENoZWNrRHJhZ0h5c3RlcmVzaXMgeyBTaG91bGRDaGVja0Ry
YWdIeXN0ZXJlc2lzLCBEb250Q2hlY2tEcmFnSHlzdGVyZXNpcyB9OwogCkBAIC0xMjcsOCArMTI2
LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRTb29uKCk7
CiAgICAgdm9pZCBkaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudFNvb25JblF1YWQoY29uc3QgRmxv
YXRRdWFkJik7CiAKLSAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3RSZXN1bHRBdFBvaW50KGNvbnN0
IExheW91dFBvaW50JiwgYm9vbCBhbGxvd1NoYWRvd0NvbnRlbnQsIGJvb2wgaWdub3JlQ2xpcHBp
bmcgPSBmYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhpdFRl
c3RTY3JvbGxiYXJzIHNjcm9sbGJhcnMgPSBEb250SGl0VGVzdFNjcm9sbGJhcnMsCisgICAgSGl0
VGVzdFJlc3VsdCBoaXRUZXN0UmVzdWx0QXRQb2ludChjb25zdCBMYXlvdXRQb2ludCYsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIaXRUZXN0UmVxdWVzdDo6SGl0VGVz
dFJlcXVlc3RUeXBlIGhpdFR5cGUgPSBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0
UmVxdWVzdDo6QWN0aXZlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgTGF5b3V0U2l6ZSYgcGFkZGluZyA9IExheW91dFNpemUoKSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAppbmRleCBhYWQwYzcxYWQzMjMxM2MyN2E3MzVmYmFm
OWEyNjVkYjMzNjU5YjFjLi42ZjU5ZTEzZTVmOTBhNDBhYjRkN2RlNWYwMGMyMzBmMmY4YTE3NzFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCkBAIC03MTcsNyArNzE3
LDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlRm9jdXNDYW5kaWRhdGVJZk5lZWRlZChGb2N1c0RpcmVj
dGlvbiBkaXJlY3Rpb24sIGNvbnN0IEZvY3VzQ2EKICAgICAgICAgLy8gSWYgMiBub2RlcyBhcmUg
aW50ZXJzZWN0aW5nLCBkbyBoaXQgdGVzdCB0byBmaW5kIHdoaWNoIG5vZGUgaW4gb24gdG9wLgog
ICAgICAgICBMYXlvdXRVbml0IHggPSBpbnRlcnNlY3Rpb25SZWN0LngoKSArIGludGVyc2VjdGlv
blJlY3Qud2lkdGgoKSAvIDI7CiAgICAgICAgIExheW91dFVuaXQgeSA9IGludGVyc2VjdGlvblJl
Y3QueSgpICsgaW50ZXJzZWN0aW9uUmVjdC5oZWlnaHQoKSAvIDI7Ci0gICAgICAgIEhpdFRlc3RS
ZXN1bHQgcmVzdWx0ID0gY2FuZGlkYXRlLnZpc2libGVOb2RlLT5kb2N1bWVudCgpLT5wYWdlKCkt
Pm1haW5GcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoSW50UG9p
bnQoeCwgeSksIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBj
YW5kaWRhdGUudmlzaWJsZU5vZGUtPmRvY3VtZW50KCktPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2
ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChJbnRQb2ludCh4LCB5KSwgSGl0VGVz
dFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1
ZXN0OjpJZ25vcmVDbGlwcGluZyk7CiAgICAgICAgIGlmIChjYW5kaWRhdGUudmlzaWJsZU5vZGUt
PmNvbnRhaW5zKHJlc3VsdC5pbm5lck5vZGUoKSkpIHsKICAgICAgICAgICAgIGNsb3Nlc3QgPSBj
YW5kaWRhdGU7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IGY2
ZmViMmI5ZWFiZTY2NTU3MzI2MTY0ZmZhMzU3OGQ3NTU5YzAzZmIuLjEyMzdmZjllNDBmOTA5N2Y1
YzE3YzNmYzI3N2ZjOTBhMDgzODNkOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC03MjEsNyAr
NzIxLDcgQEAgU3RyaW5nIEZyYW1lOjpkaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKGNv
bnN0IFN0cmluZyYgc3RyKSBjb25zdAogCiBWaXNpYmxlUG9zaXRpb24gRnJhbWU6OnZpc2libGVQ
b3NpdGlvbkZvclBvaW50KGNvbnN0IEludFBvaW50JiBmcmFtZVBvaW50KQogewotICAgIEhpdFRl
c3RSZXN1bHQgcmVzdWx0ID0gZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGZy
YW1lUG9pbnQsIHRydWUpOworICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZXZlbnRIYW5kbGVy
KCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGZyYW1lUG9pbnQsIEhpdFRlc3RSZXF1ZXN0OjpSZWFk
T25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6QWxsb3dTaGFk
b3dDb250ZW50KTsKICAgICBOb2RlKiBub2RlID0gcmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgp
OwogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwpAQCAt
NzQzLDcgKzc0Myw3IEBAIERvY3VtZW50KiBGcmFtZTo6ZG9jdW1lbnRBdFBvaW50KGNvbnN0IElu
dFBvaW50JiBwb2ludCkKICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IEhpdFRlc3RSZXN1bHQo
cHQpOwogCiAgICAgaWYgKGNvbnRlbnRSZW5kZXJlcigpKQotICAgICAgICByZXN1bHQgPSBldmVu
dEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQocHQsIGZhbHNlKTsKKyAgICAgICAgcmVz
dWx0ID0gZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KHB0KTsKICAgICByZXR1
cm4gcmVzdWx0LmlubmVyTm9kZSgpID8gcmVzdWx0LmlubmVyTm9kZSgpLT5kb2N1bWVudCgpIDog
MDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Ub3VjaERpc2FtYmlndWF0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVG91Y2hEaXNhbWJpZ3VhdGlvbi5jcHAKaW5k
ZXggODlkYTdjNDlkYTBlOTJhMjFkZmEzZTk5ZjBjMzA0OThiNDkzNzM4ZC4uMDhiMzUzOGNiNmNl
YjkxZDAxMzA5YzMxOGY3Yzk2YzI1ZGI2MDgwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9Ub3VjaERpc2FtYmlndWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Rv
dWNoRGlzYW1iaWd1YXRpb24uY3BwCkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgZmluZEdvb2RUb3Vj
aFRhcmdldHMoY29uc3QgSW50UmVjdCYgdG91Y2hCb3gsIEZyYW1lKiBtYWluRnJhbWUsIFZlY3Rv
cjxJbnRSCiAgICAgSW50UG9pbnQgdG91Y2hQb2ludCA9IHRvdWNoQm94LmNlbnRlcigpOwogICAg
IEludFBvaW50IGNvbnRlbnRzUG9pbnQgPSBtYWluRnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250
ZW50cyh0b3VjaFBvaW50KTsKIAotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gbWFpbkZyYW1l
LT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoY29udGVudHNQb2ludCwgZmFs
c2UsIGZhbHNlLCBEb250SGl0VGVzdFNjcm9sbGJhcnMsIEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUg
fCBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHksIEludFNpemUocGFkZGluZywgcGFkZGluZykpOwor
ICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gbWFpbkZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0
VGVzdFJlc3VsdEF0UG9pbnQoY29udGVudHNQb2ludCwgSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5
IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSwgSW50U2l6ZShwYWRkaW5nLCBwYWRkaW5nKSk7CiAg
ICAgY29uc3QgTGlzdEhhc2hTZXQ8UmVmUHRyPE5vZGU+ID4mIGhpdFJlc3VsdHMgPSByZXN1bHQu
cmVjdEJhc2VkVGVzdFJlc3VsdCgpOwogCiAgICAgLy8gQmxhY2tsaXN0IG5vZGVzIHRoYXQgYXJl
IGNvbnRhaW5lciBvZiBkaXNhbWJpZ3VhdGVkIG5vZGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSGl0VGVzdFJlcXVlc3QuaAppbmRleCBkOTM3YzI1MDQ2OTM5NmI3NGI3NDRlMmQyMDAzNjRh
OWQ3YjA0MTcwLi4xOTFjYzVjNzNlYTc2ODNiNmU1MWU0NTEyNjhjMjMxMTM3OWJiMjdmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlcXVlc3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlcXVlc3QuaApAQCAtMzUsNyArMzUsOCBA
QCBwdWJsaWM6CiAgICAgICAgIElnbm9yZUNsaXBwaW5nID0gMSA8PCA1LAogICAgICAgICBTVkdD
bGlwQ29udGVudCA9IDEgPDwgNiwKICAgICAgICAgVG91Y2hFdmVudCA9IDEgPDwgNywKLSAgICAg
ICAgQWxsb3dTaGFkb3dDb250ZW50ID0gMSA8PCA4CisgICAgICAgIEFsbG93U2hhZG93Q29udGVu
dCA9IDEgPDwgOCwKKyAgICAgICAgQWxsb3dGcmFtZVNjcm9sbGJhcnMgPSAxIDw8IDkKICAgICB9
OwogCiAgICAgdHlwZWRlZiB1bnNpZ25lZCBIaXRUZXN0UmVxdWVzdFR5cGU7CkBAIC01NCw2ICs1
NSw3IEBAIHB1YmxpYzoKICAgICBib29sIHRvdWNoRXZlbnQoKSBjb25zdCB7IHJldHVybiBtX3Jl
cXVlc3RUeXBlICYgVG91Y2hFdmVudDsgfQogICAgIGJvb2wgbW91c2VFdmVudCgpIGNvbnN0IHsg
cmV0dXJuICF0b3VjaEV2ZW50KCk7IH0KICAgICBib29sIGFsbG93c1NoYWRvd0NvbnRlbnQoKSBj
b25zdCB7IHJldHVybiBtX3JlcXVlc3RUeXBlICYgQWxsb3dTaGFkb3dDb250ZW50OyB9CisgICAg
Ym9vbCBhbGxvd3NGcmFtZVNjcm9sbGJhcnMoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3RUeXBl
ICYgQWxsb3dGcmFtZVNjcm9sbGJhcnM7IH0KIAogICAgIC8vIENvbnZlbmllbmNlIGZ1bmN0aW9u
cwogICAgIGJvb2wgdG91Y2hNb3ZlKCkgY29uc3QgeyByZXR1cm4gbW92ZSgpICYmIHRvdWNoRXZl
bnQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDc3MWYwY2NmNDIw
YTljNDlhYWI5YzNmMmRjNWIwZjRhYmExNzAwMmEuLjBjM2EyZDE3MDEzZGEyZGExN2I4YWU0ZmQx
MmQ5NGY2YzJkMmFjMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTEz
ODUsNyArMTM4NSwxMyBAQCBQYXNzUmVmUHRyPE5vZGVMaXN0PiBJbnRlcm5hbHM6Om5vZGVzRnJv
bVJlY3QoRG9jdW1lbnQqIGRvY3VtZW50LCBpbnQgeCwgaW50IHksCiAgICAgICAgIHJldHVybiAw
OwogICAgIH0KIAotICAgIHJldHVybiBkb2N1bWVudC0+bm9kZXNGcm9tUmVjdCh4LCB5LCB0b3BQ
YWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nLCBpZ25vcmVD
bGlwcGluZywgYWxsb3dTaGFkb3dDb250ZW50KTsKKyAgICBIaXRUZXN0UmVxdWVzdDo6SGl0VGVz
dFJlcXVlc3RUeXBlIGhpdFR5cGUgPSBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0
UmVxdWVzdDo6QWN0aXZlOworICAgIGlmIChpZ25vcmVDbGlwcGluZykKKyAgICAgICAgaGl0VHlw
ZSB8PSBIaXRUZXN0UmVxdWVzdDo6SWdub3JlQ2xpcHBpbmc7CisgICAgaWYgKGFsbG93U2hhZG93
Q29udGVudCkKKyAgICAgICAgaGl0VHlwZSB8PSBIaXRUZXN0UmVxdWVzdDo6QWxsb3dTaGFkb3dD
b250ZW50OworCisgICAgcmV0dXJuIGRvY3VtZW50LT5ub2Rlc0Zyb21SZWN0KHgsIHksIHRvcFBh
ZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRpbmcsIGhpdFR5cGUp
OwogfQogCiB2b2lkIEludGVybmFsczo6ZW1pdEluc3BlY3RvckRpZEJlZ2luRnJhbWUoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAKaW5kZXggZjY2Mjg3ZjUzMDE2ZGJm
NTI5Yzk3MWUzM2QwYjQ5NTgyZGRjOTQ1Yy4uM2MwNmMwMGQ0ODhmYjEzYWQ0NWVhNzZmMTk0MTU0
N2I5MjA4ZDA0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQ
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCkBA
IC0yNzAxLDcgKzI3MDEsNyBAQCBQYXNzUmVmUHRyPE5vZGU+IFdlYlBhZ2VQcml2YXRlOjpjb250
ZXh0Tm9kZShUYXJnZXREZXRlY3Rpb25TdHJhdGVneSBzdHJhdGVneSkKICAgICBlbHNlCiAgICAg
ICAgIGNvbnRlbnRQb3MgPSBtYXBGcm9tVmlld3BvcnRUb0NvbnRlbnRzKG1fbGFzdE1vdXNlRXZl
bnQucG9zaXRpb24oKSk7CiAKLSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGV2ZW50SGFuZGxl
ci0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoY29udGVudFBvcywgZmFsc2UgLyphbGxvd1NoYWRvd0Nv
bnRlbnQqLyk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBldmVudEhhbmRsZXItPmhpdFRl
c3RSZXN1bHRBdFBvaW50KGNvbnRlbnRQb3MpOwogICAgIHJldHVybiByZXN1bHQuaW5uZXJOb2Rl
KCk7CiB9CiAKQEAgLTI3NzIsNyArMjc3Miw3IEBAIE5vZGUqIFdlYlBhZ2VQcml2YXRlOjpub2Rl
Rm9yWm9vbVVuZGVyUG9pbnQoY29uc3QgSW50UG9pbnQmIGRvY3VtZW50UG9pbnQpCiAgICAgaWYg
KCFtX21haW5GcmFtZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBIaXRUZXN0UmVzdWx0IHJl
c3VsdCA9IG1fbWFpbkZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQo
ZG9jdW1lbnRQb2ludCwgZmFsc2UpOworICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gbV9tYWlu
RnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChkb2N1bWVudFBvaW50
KTsKIAogICAgIE5vZGUqIG5vZGUgPSByZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCk7CiAKQEAg
LTQwMDksNyArNDAwOSw3IEBAIGJvb2wgV2ViUGFnZVByaXZhdGU6OmhhbmRsZU1vdXNlRXZlbnQo
UGxhdGZvcm1Nb3VzZUV2ZW50JiBtb3VzZUV2ZW50KQogICAgIH0KIAogICAgIGlmICghbm9kZSkg
ewotICAgICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGV2ZW50SGFuZGxlci0+aGl0VGVzdFJl
c3VsdEF0UG9pbnQobWFwRnJvbVZpZXdwb3J0VG9Db250ZW50cyhtb3VzZUV2ZW50LnBvc2l0aW9u
KCkpLCBmYWxzZSAvKmFsbG93U2hhZG93Q29udGVudCovKTsKKyAgICAgICAgSGl0VGVzdFJlc3Vs
dCByZXN1bHQgPSBldmVudEhhbmRsZXItPmhpdFRlc3RSZXN1bHRBdFBvaW50KG1hcEZyb21WaWV3
cG9ydFRvQ29udGVudHMobW91c2VFdmVudC5wb3NpdGlvbigpKSk7CiAgICAgICAgIG5vZGUgPSBy
ZXN1bHQuaW5uZXJOb2RlKCk7CiAgICAgfQogCkBAIC00OTg1LDcgKzQ5ODUsNyBAQCBXZWJET01E
b2N1bWVudCBXZWJQYWdlOjpkb2N1bWVudCgpIGNvbnN0CiAKIFdlYkRPTU5vZGUgV2ViUGFnZTo6
bm9kZUF0RG9jdW1lbnRQb2ludChjb25zdCBQbGF0Zm9ybTo6SW50UG9pbnQmIGRvY3VtZW50UG9p
bnQpCiB7Ci0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBkLT5tX21haW5GcmFtZS0+ZXZlbnRI
YW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KFdlYkNvcmU6OkludFBvaW50KGRvY3VtZW50
UG9pbnQpLCBmYWxzZSk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBkLT5tX21haW5GcmFt
ZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KFdlYkNvcmU6OkludFBvaW50
KGRvY3VtZW50UG9pbnQpKTsKICAgICBOb2RlKiBub2RlID0gcmVzdWx0LmlubmVyTm9uU2hhcmVk
Tm9kZSgpOwogICAgIHJldHVybiBXZWJET01Ob2RlKG5vZGUpOwogfQpAQCAtNjI0Myw3ICs2MjQz
LDcgQEAgY29uc3QgSGl0VGVzdFJlc3VsdCYgV2ViUGFnZVByaXZhdGU6OmhpdFRlc3RSZXN1bHQo
Y29uc3QgSW50UG9pbnQmIGNvbnRlbnRQb3MpCiB7CiAgICAgaWYgKG1fY2FjaGVkSGl0VGVzdENv
bnRlbnRQb3MgIT0gY29udGVudFBvcykgewogICAgICAgICBtX2NhY2hlZEhpdFRlc3RDb250ZW50
UG9zID0gY29udGVudFBvczsKLSAgICAgICAgbV9jYWNoZWRIaXRUZXN0UmVzdWx0ID0gbV9tYWlu
RnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChtX2NhY2hlZEhpdFRl
c3RDb250ZW50UG9zLCB0cnVlIC8qYWxsb3dTaGFkb3dDb250ZW50Ki8pOworICAgICAgICBtX2Nh
Y2hlZEhpdFRlc3RSZXN1bHQgPSBtX21haW5GcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RS
ZXN1bHRBdFBvaW50KG1fY2FjaGVkSGl0VGVzdENvbnRlbnRQb3MsIEhpdFRlc3RSZXN1bHQ6OlJl
YWRPbmx5IHwgSGl0VGVzdFJlc3VsdDo6QWN0aXZlIHwgSGl0VGVzdFJlc3VsdDo6QWxsb3dTaGFk
b3dDb250ZW50KTsKICAgICB9CiAKICAgICByZXR1cm4gbV9jYWNoZWRIaXRUZXN0UmVzdWx0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvU2VsZWN0
aW9uSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9T
ZWxlY3Rpb25IYW5kbGVyLmNwcAppbmRleCBlMWRlZTg5MTY4N2E1YTQwMjk2MDRiZTA4NmVhNGY0
YzI0ZWVmMGM1Li5hNTEzNGQyMTZjMjhmZjYxZmM3Yzg3NDhiNWZmNDFkNzkwZDIzZWUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9TZWxlY3Rpb25I
YW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9T
ZWxlY3Rpb25IYW5kbGVyLmNwcApAQCAtMTY3LDcgKzE2Nyw3IEBAIHN0YXRpYyBWaXNpYmxlUG9z
aXRpb24gdmlzaWJsZVBvc2l0aW9uRm9yUG9pbnRJZ25vcmluZ0NsaXBwaW5nKGNvbnN0IEZyYW1l
JiBmcmFtCiAgICAgLy8gb3V0c2lkZSB0aGUgdmlzaWJsZSByZWN0LiBUbyB3b3JrIGFyb3VuZCB0
aGUgYnVnLCB0aGlzIGlzIGEgY29weSBvZgogICAgIC8vIHZpc2libGVQb3NpdGlvbkF0UG9pbnQg
d2hpY2ggd2hpY2ggcGFzc2VzIGlnbm9yZUNsaXBwaW5nPXRydWUuCiAgICAgLy8gU2VlIFJJTSBC
dWcgIzQzMTUuCi0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBmcmFtZS5ldmVudEhhbmRsZXIo
KS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoZnJhbWVQb2ludCwgdHJ1ZSAvKiBhbGxvd1NoYWRvd0Nv
bnRlbnQgKi8sIHRydWUgLyogaWdub3JlQ2xpcHBpbmcgKi8pOworICAgIEhpdFRlc3RSZXN1bHQg
cmVzdWx0ID0gZnJhbWUuZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGZyYW1l
UG9pbnQsIEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUg
fCBIaXRUZXN0UmVxdWVzdDo6QWxsb3dTaGFkb3dDb250ZW50IHwgSGl0VGVzdFJlcXVlc3Q6Okln
bm9yZUNsaXBwaW5nKTsKIAogICAgIE5vZGUqIG5vZGUgPSByZXN1bHQuaW5uZXJOb2RlKCk7CiAg
ICAgaWYgKCFub2RlIHx8IG5vZGUtPmRvY3VtZW50KCkgIT0gZnJhbWUuZG9jdW1lbnQoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0NvbnRleHRNZW51Q2xpZW50SW1w
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Db250ZXh0TWVudUNsaWVudEltcGwu
Y3BwCmluZGV4IGQzNjViZGViZmNmMWY1ZjFkODIzMjk0ZGZkNjQ1OTI4NDMwMmEyMTAuLjNmMDFm
Y2Y0ZjI3YjdlODI4N2I0NzhiYTAzODM2NjQwOWUyNmY2MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0NvbnRleHRNZW51Q2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvQ29udGV4dE1lbnVDbGllbnRJbXBsLmNwcApAQCAtMTIxLDcg
KzEyMSw3IEBAIHN0YXRpYyBTdHJpbmcgc2VsZWN0TWlzc3BlbGxlZFdvcmQoY29uc3QgQ29udGV4
dE1lbnUqIGRlZmF1bHRNZW51LCBGcmFtZSogc2VsZWN0CiAKICAgICAvLyBTZWxlY3Rpb24gaXMg
ZW1wdHksIHNvIGNoYW5nZSB0aGUgc2VsZWN0aW9uIHRvIHRoZSB3b3JkIHVuZGVyIHRoZSBjdXJz
b3IuCiAgICAgSGl0VGVzdFJlc3VsdCBoaXRUZXN0UmVzdWx0ID0gc2VsZWN0ZWRGcmFtZS0+ZXZl
bnRIYW5kbGVyKCktPgotICAgICAgICBoaXRUZXN0UmVzdWx0QXRQb2ludChzZWxlY3RlZEZyYW1l
LT5wYWdlKCktPmNvbnRleHRNZW51Q29udHJvbGxlcigpLT5oaXRUZXN0UmVzdWx0KCkucG9pbnRJ
bklubmVyTm9kZUZyYW1lKCksIHRydWUpOworICAgICAgICBoaXRUZXN0UmVzdWx0QXRQb2ludChz
ZWxlY3RlZEZyYW1lLT5wYWdlKCktPmNvbnRleHRNZW51Q29udHJvbGxlcigpLT5oaXRUZXN0UmVz
dWx0KCkucG9pbnRJbklubmVyTm9kZUZyYW1lKCksIEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8
IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6QWxsb3dTaGFkb3dDb250
ZW50KTsKICAgICBOb2RlKiBpbm5lck5vZGUgPSBoaXRUZXN0UmVzdWx0LmlubmVyTm9kZSgpOwog
ICAgIFZpc2libGVQb3NpdGlvbiBwb3MoaW5uZXJOb2RlLT5yZW5kZXJlcigpLT5wb3NpdGlvbkZv
clBvaW50KAogICAgICAgICBoaXRUZXN0UmVzdWx0LmxvY2FsUG9pbnQoKSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKaW5k
ZXggZThhMGIyNTg2ZmVkNWVjODBjMWY3OTZlODk0NmZmNmI2N2ZiZmU5ZS4uNDk5ZGRhMDNlOWRh
Nzc5ZWE3NDNmMWFhZDZkNzFlYzhiMDMyMDYxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCkBAIC0xMDA4LDggKzEwMDgs
NyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uKAogICAgICAgICAgICAgICAgIGlmIChldmVudC0+aXNNb3VzZUV2ZW50
KCkpIHsKICAgICAgICAgICAgICAgICAgICAgY29uc3QgTW91c2VFdmVudCogbW91c2VFdmVudCA9
CiAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBNb3VzZUV2ZW50Kj4o
ZXZlbnQpOwotICAgICAgICAgICAgICAgICAgICBub2RlID0gbV93ZWJGcmFtZS0+ZnJhbWUoKS0+
ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KAotICAgICAgICAgICAgICAgICAg
ICAgICAgbW91c2VFdmVudC0+YWJzb2x1dGVMb2NhdGlvbigpLCBmYWxzZSkuaW5uZXJOb25TaGFy
ZWROb2RlKCk7CisgICAgICAgICAgICAgICAgICAgIG5vZGUgPSBtX3dlYkZyYW1lLT5mcmFtZSgp
LT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQobW91c2VFdmVudC0+YWJzb2x1
dGVMb2NhdGlvbigpKS5pbm5lck5vblNoYXJlZE5vZGUoKTsKICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKaW5kZXggZmM4YTA3NGEzMTVhM2M0MjU5YzYw
NTYxOTYyMzcwMzI2YzZlYjMzZS4uNmYzZDkyOWVlZTcwZWZhNjg2MDFjYWJhZTIyZjEwODcxNzY0
OTg1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCkBA
IC0xMTgxLDcgKzExODEsNyBAQCBzaXplX3QgV2ViRnJhbWVJbXBsOjpjaGFyYWN0ZXJJbmRleEZv
clBvaW50KGNvbnN0IFdlYlBvaW50JiB3ZWJQb2ludCkgY29uc3QKICAgICAgICAgcmV0dXJuIG5v
dEZvdW5kOwogCiAgICAgSW50UG9pbnQgcG9pbnQgPSBmcmFtZSgpLT52aWV3KCktPndpbmRvd1Rv
Q29udGVudHMod2ViUG9pbnQpOwotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZnJhbWUoKS0+
ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KHBvaW50LCBmYWxzZSk7CisgICAg
SGl0VGVzdFJlc3VsdCByZXN1bHQgPSBmcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJl
c3VsdEF0UG9pbnQocG9pbnQpOwogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBmcmFtZSgpLT5y
YW5nZUZvclBvaW50KHJlc3VsdC5yb3VuZGVkUG9pbnRJbklubmVyTm9kZUZyYW1lKCkpOwogICAg
IGlmICghcmFuZ2UpCiAgICAgICAgIHJldHVybiBub3RGb3VuZDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5jcHAKaW5kZXggYmFk
M2Y4MTFjMDA3OWJiOTk1MDg3NDA0MzExMjE4MWUzNWM3MzlkMy4uMTgwMDAyZTNiZmEyYzA2MDRm
ZjU1MjBjNzE0ZjAyNjljNmYwOGNkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5jcHAKQEAgLTQ2Miw3ICs0NjIsNyBAQCBi
b29sIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OmlzUmVjdFRvcG1vc3QoY29uc3QgV2ViUmVjdCYg
cmVjdCkKICAgICBMYXlvdXRQb2ludCBjZW50ZXIgPSBkb2N1bWVudFJlY3QuY2VudGVyKCk7CiAg
ICAgLy8gTWFrZSB0aGUgcmVjdCB3ZSdyZSBjaGVja2luZyAodGhlIHBvaW50IHN1cnJvdW5kZWQg
YnkgcGFkZGluZyByZWN0cykgY29udGFpbmVkIGluc2lkZSB0aGUgcmVxdWVzdGVkIHJlY3QuIChO
b3RlIHRoYXQgLTEvMiBpcyAwLikKICAgICBMYXlvdXRTaXplIHBhZGRpbmcoKGRvY3VtZW50UmVj
dC53aWR0aCgpIC0gMSkgLyAyLCAoZG9jdW1lbnRSZWN0LmhlaWdodCgpIC0gMSkgLyAyKTsKLSAg
ICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJl
c3VsdEF0UG9pbnQoY2VudGVyLCBmYWxzZSwgZmFsc2UsIERvbnRIaXRUZXN0U2Nyb2xsYmFycywg
SGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSwgcGFkZGlu
Zyk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhp
dFRlc3RSZXN1bHRBdFBvaW50KGNlbnRlciwgSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0
VGVzdFJlcXVlc3Q6OkFjdGl2ZSwgcGFkZGluZyk7CiAgICAgY29uc3QgSGl0VGVzdFJlc3VsdDo6
Tm9kZVNldCYgbm9kZXMgPSByZXN1bHQucmVjdEJhc2VkVGVzdFJlc3VsdCgpOwogICAgIGlmIChu
b2Rlcy5zaXplKCkgIT0gMSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDA1NDFmMzNhNmY1ODQ5YWZhODhmN2Y4
NTkyMmJjN2JjYzcyNjI3ODcuLjY0ZTM5MTk4OTMxYWMwYWRmNjc4ZmY1NGRiMDBlMDA5YTFjYzM5
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTU2
OSw3ICs1NjksNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpoYW5kbGVNb3VzZURvd24oRnJhbWUmIG1h
aW5GcmFtZSwgY29uc3QgV2ViTW91c2VFdmVudCYgZXZlbnQpCiAgICAgaWYgKGV2ZW50LmJ1dHRv
biA9PSBXZWJNb3VzZUV2ZW50OjpCdXR0b25MZWZ0KSB7CiAgICAgICAgIEludFBvaW50IHBvaW50
KGV2ZW50LngsIGV2ZW50LnkpOwogICAgICAgICBwb2ludCA9IG1fcGFnZS0+bWFpbkZyYW1lKCkt
PnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhwb2ludCk7Ci0gICAgICAgIEhpdFRlc3RSZXN1bHQg
cmVzdWx0KG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0
QXRQb2ludChwb2ludCwgZmFsc2UpKTsKKyAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQobV9w
YWdlLT5tYWluRnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KHBv
aW50KSk7CiAgICAgICAgIE5vZGUqIGhpdE5vZGUgPSByZXN1bHQuaW5uZXJOb25TaGFyZWROb2Rl
KCk7CiAKICAgICAgICAgLy8gVGFrZSBjYXB0dXJlIG9uIGEgbW91c2UgZG93biBvbiBhIHBsdWdp
biBzbyB3ZSBjYW4gc2VuZCBpdCBtb3VzZSBldmVudHMuCkBAIC0xMDkxLDkgKzEwOTEsOCBAQCBX
ZWJSZWN0IFdlYlZpZXdJbXBsOjpjb21wdXRlQmxvY2tCb3VuZHMoY29uc3QgV2ViUmVjdCYgcmVj
dCwgQXV0b1pvb21UeXBlIHpvb21UeQogCiAgICAgLy8gVXNlIHRoZSByZWN0LWJhc2VkIGhpdCB0
ZXN0IHRvIGZpbmQgdGhlIG5vZGUuCiAgICAgSW50UG9pbnQgcG9pbnQgPSBtYWluRnJhbWVJbXBs
KCktPmZyYW1lVmlldygpLT53aW5kb3dUb0NvbnRlbnRzKEludFBvaW50KHJlY3QueCwgcmVjdC55
KSk7Ci0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBtYWluRnJhbWVJbXBsKCktPmZyYW1lKCkt
PmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChwb2ludCwKLSAgICAgICAgICAg
IGZhbHNlLCB6b29tVHlwZSA9PSBGaW5kSW5QYWdlLCBEb250SGl0VGVzdFNjcm9sbGJhcnMsIEhp
dFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHksCi0gICAgICAg
ICAgICBJbnRTaXplKHJlY3Qud2lkdGgsIHJlY3QuaGVpZ2h0KSk7CisgICAgSGl0VGVzdFJlcXVl
c3Q6OkhpdFRlc3RSZXF1ZXN0VHlwZSBoaXRUeXBlID0gSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5
IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8ICgoem9vbVR5cGUgPT0gRmluZEluUGFnZSkgPyBI
aXRUZXN0UmVxdWVzdDo6SWdub3JlQ2xpcHBpbmcgOiAwKTsKKyAgICBIaXRUZXN0UmVzdWx0IHJl
c3VsdCA9IG1haW5GcmFtZUltcGwoKS0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RS
ZXN1bHRBdFBvaW50KHBvaW50LCBoaXRUeXBlLCBJbnRTaXplKHJlY3Qud2lkdGgsIHJlY3QuaGVp
Z2h0KSk7CiAKICAgICBOb2RlKiBub2RlID0gcmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpOwog
ICAgIGlmICghbm9kZSkKQEAgLTEyODUsOCArMTI4NCw3IEBAIE5vZGUqIFdlYlZpZXdJbXBsOjpi
ZXN0VG91Y2hMaW5rTm9kZShjb25zdCBXZWJHZXN0dXJlRXZlbnQmIHRvdWNoRXZlbnQpCiAjZW5k
aWYKIAogICAgIEludFBvaW50IGhpdFRlc3RQb2ludCA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPnZp
ZXcoKS0+d2luZG93VG9Db250ZW50cyh0b3VjaEV2ZW50TG9jYXRpb24pOwotICAgIEhpdFRlc3RS
ZXN1bHQgcmVzdWx0ID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRl
c3RSZXN1bHRBdFBvaW50KAotICAgICAgICBoaXRUZXN0UG9pbnQsIGZhbHNlLCBmYWxzZSwgRG9u
dEhpdFRlc3RTY3JvbGxiYXJzLCBIaXRUZXN0UmVxdWVzdDo6VG91Y2hFdmVudCk7CisgICAgSGl0
VGVzdFJlc3VsdCByZXN1bHQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+
aGl0VGVzdFJlc3VsdEF0UG9pbnQoaGl0VGVzdFBvaW50LCBIaXRUZXN0UmVxdWVzdDo6VG91Y2hF
dmVudCk7CiAgICAgYmVzdFRvdWNoTm9kZSA9IHJlc3VsdC50YXJnZXROb2RlKCk7CiAKICAgICAv
LyBNYWtlIHN1cmUgb3VyIGhpZ2hsaWdodCBjYW5kaWRhdGUgdXNlcyBhIGhhbmQgY3Vyc29yIGFz
IGEgaGV1cmlzdGljIHRvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2Zy
YW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCmluZGV4IDNlMTYy
NjQ4NjIxNTA2NmVjZjc2MDQ3Y2U5ODIwYTNjYzFkMzZiMDMuLmMyOGRkMDU5ODcyZDBkMjRkNzM4
MjRlYTU5NDc1YzU5OTM4MTFjNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfZnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCkBA
IC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTFBs
dWdJbkVsZW1lbnQuaCIKICNpbmNsdWRlICJIaXN0b3J5SXRlbS5oIgorI2luY2x1ZGUgIkhpdFRl
c3RSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkludFNp
emUuaCIKICNpbmNsdWRlICJLVVJMLmgiCkBAIC02OTEsOCArNjkyLDggQEAgRXdrX0hpdF9UZXN0
KiBld2tfZnJhbWVfaGl0X3Rlc3RfbmV3KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgaW50
IHgsIGludCB5KQogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEt
PmZyYW1lLT5jb250ZW50UmVuZGVyZXIoKSwgMCk7CiAKICAgICBXZWJDb3JlOjpIaXRUZXN0UmVz
dWx0IHJlc3VsdCA9IHNtYXJ0RGF0YS0+ZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVz
dWx0QXRQb2ludAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2aWV3
LT53aW5kb3dUb0NvbnRlbnRzKFdlYkNvcmU6OkludFBvaW50KHgsIHkpKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKmFsbG93U2hhZG93Q29udGVudCovIGZhbHNl
LCAvKmlnbm9yZUNsaXBwaW5nKi8gdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKHZpZXctPndpbmRvd1RvQ29udGVudHMoV2ViQ29yZTo6SW50UG9pbnQoeCwg
eSkpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJDb3JlOjpI
aXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBXZWJDb3JlOjpIaXRUZXN0UmVxdWVzdDo6QWN0aXZl
IHwgV2ViQ29yZTo6SGl0VGVzdFJlcXVlc3Q6Oklnbm9yZUNsaXBwaW5nKTsKIAogICAgIGlmIChy
ZXN1bHQuc2Nyb2xsYmFyKCkpCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRl
eCBhMDc2M2FiNTc4OGIwYjU5MmFlOGI1ZTdkN2M5YzQ4NjRjZDNlODhiLi5kODJkMGVjZGJhMzhj
OTljNWNkYmRhNjJmM2U1YjNjN2EyYjRjNjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMTM0NCw3
ICsxMzQ0LDcgQEAgTlNEaWN0aW9uYXJ5ICpXZWJGcmFtZUxvYWRlckNsaWVudDo6YWN0aW9uRGlj
dGlvbmFyeShjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3QKIAogICAgIGlmIChjb25zdCBNb3Vz
ZUV2ZW50KiBtb3VzZUV2ZW50ID0gZmluZE1vdXNlRXZlbnQoZXZlbnQpKSB7CiAgICAgICAgIFdl
YkVsZW1lbnREaWN0aW9uYXJ5ICplbGVtZW50ID0gW1tXZWJFbGVtZW50RGljdGlvbmFyeSBhbGxv
Y10KLSAgICAgICAgICAgIGluaXRXaXRoSGl0VGVzdFJlc3VsdDpjb3JlKG1fd2ViRnJhbWUuZ2V0
KCkpLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQobW91c2VFdmVudC0+YWJz
b2x1dGVMb2NhdGlvbigpLCBmYWxzZSldOworICAgICAgICAgICAgaW5pdFdpdGhIaXRUZXN0UmVz
dWx0OmNvcmUobV93ZWJGcmFtZS5nZXQoKSktPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0
QXRQb2ludChtb3VzZUV2ZW50LT5hYnNvbHV0ZUxvY2F0aW9uKCkpXTsKICAgICAgICAgW3Jlc3Vs
dCBzZXRPYmplY3Q6ZWxlbWVudCBmb3JLZXk6V2ViQWN0aW9uRWxlbWVudEtleV07CiAgICAgICAg
IFtlbGVtZW50IHJlbGVhc2VdOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmll
dy5tbQppbmRleCA4ODM2MTA1ZDZlNDlkMGE4NWQzMzUwZjY3NWZkNGI3MDA0NzI1ZWM3Li42Y2Nj
OGRmODdkZDU4ZTNhY2MzYzBjYzc3MmRiZDgzMjcwZTVhY2MwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTYyMDIsNyArNjIwMiw4IEBAIHN0YXRpYyB2b2lk
IGV4dHJhY3RVbmRlcmxpbmVzKE5TQXR0cmlidXRlZFN0cmluZyAqc3RyaW5nLCBWZWN0b3I8Q29t
cG9zaXRpb25VbmRlCiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7
CiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIFtb
W1dlYkVsZW1lbnREaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aEhpdFRlc3RSZXN1bHQ6Y29yZUZy
YW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoSW50UG9pbnQocG9pbnQp
LCBhbGxvdyldIGF1dG9yZWxlYXNlXTsKKyAgICBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVl
c3RUeXBlIGhpdFR5cGUgPSBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVz
dDo6QWN0aXZlIHwgKGFsbG93ID8gSGl0VGVzdFJlcXVlc3Q6OkFsbG93U2hhZG93Q29udGVudCA6
IDApOworICAgIHJldHVybiBbW1tXZWJFbGVtZW50RGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhI
aXRUZXN0UmVzdWx0OmNvcmVGcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBv
aW50KEludFBvaW50KHBvaW50KSwgaGl0VHlwZSldIGF1dG9yZWxlYXNlXTsKIH0KIAogLSAoTlNV
SW50ZWdlciljb3VudE1hdGNoZXNGb3JUZXh0OihOU1N0cmluZyAqKXN0cmluZyBpbkRPTVJhbmdl
OihET01SYW5nZSAqKXJhbmdlIG9wdGlvbnM6KFdlYkZpbmRPcHRpb25zKW9wdGlvbnMgbGltaXQ6
KE5TVUludGVnZXIpbGltaXQgbWFya01hdGNoZXM6KEJPT0wpbWFya01hdGNoZXMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQu
Y3BwCmluZGV4IDA5NDk0Y2Q4NTk2ODRlYzcxNzJkOGE5ODQ3ZTVlZjNiMzVlOTg2YWEuLjBlNjIy
OGRlN2ZiYmEwMjVjYzBlZWQ2ZGJiMmU4YWQ2MjAzYjI2ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcApAQCAt
MTI1MCw3ICsxMjUwLDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oRnJhbWVQb2xpY3lGdW4KICAgICAgICAgICAgIGlm
IChldmVudC0+aXNNb3VzZUV2ZW50KCkpIHsKICAgICAgICAgICAgICAgICBjb25zdCBNb3VzZUV2
ZW50KiBtb3VzZUV2ZW50ID0gIHN0YXRpY19jYXN0PGNvbnN0IE1vdXNlRXZlbnQqPihldmVudCk7
CiAgICAgICAgICAgICAgICAgbm9kZSA9IG1fd2ViRnJhbWUtPmZyYW1lLT5ldmVudEhhbmRsZXIo
KS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoCi0gICAgICAgICAgICAgICAgICAgIG1vdXNlRXZlbnQt
PmFic29sdXRlTG9jYXRpb24oKSwgZmFsc2UpLmlubmVyTm9uU2hhcmVkTm9kZSgpOworICAgICAg
ICAgICAgICAgICAgICBtb3VzZUV2ZW50LT5hYnNvbHV0ZUxvY2F0aW9uKCkpLmlubmVyTm9uU2hh
cmVkTm9kZSgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJGcmFt
ZUFkYXB0ZXIuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RV2ViRnJhbWVB
ZGFwdGVyLmNwcAppbmRleCAxZWZlYTUwODJmMTJmZmI3NjhiYTA0MWQ3MWRmM2Y4ZDkzZDMwMmMx
Li4wZDMxMGUwMTdiYWY1ZGM1ZjNjM2Y1ZjZkYjZmMDY2NjYyNzZmNTQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJGcmFtZUFkYXB0ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYkZyYW1lQWRhcHRlci5jcHAKQEAg
LTM4OSw3ICszODksNyBAQCBRV2ViSGl0VGVzdFJlc3VsdFByaXZhdGUqIFFXZWJGcmFtZUFkYXB0
ZXI6OmhpdFRlc3RDb250ZW50KGNvbnN0IFFQb2ludCYgcG9zKSBjbwogICAgIGlmICghZnJhbWUt
PnZpZXcoKSB8fCAhZnJhbWUtPmNvbnRlbnRSZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gMDsK
IAotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRU
ZXN0UmVzdWx0QXRQb2ludChmcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHBvcyksIC8q
YWxsb3dTaGFkb3dDb250ZW50Ki8gZmFsc2UsIC8qaWdub3JlQ2xpcHBpbmcqLyB0cnVlKTsKKyAg
ICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJl
c3VsdEF0UG9pbnQoZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhwb3MpLCBIaXRUZXN0
UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVl
c3Q6Oklnbm9yZUNsaXBwaW5nKTsKIAogICAgIGlmIChyZXN1bHQuc2Nyb2xsYmFyKCkpCiAgICAg
ICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9RV2ViUGFnZUFkYXB0ZXIuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9R
V2ViUGFnZUFkYXB0ZXIuY3BwCmluZGV4IDQzYjZkZjdjOTU3NDkzZjA3MmM0N2MzODhiNzEwZGZj
NmY4N2M2YjMuLjNjNTk5MGVmNDcwNWVhOTkxYzllYTZjODJlY2MyMDUwODJjMTcyZmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5j
cHAKQEAgLTQyOSw3ICs0MjksNyBAQCBJbnRQb2ludCBRV2ViUGFnZUFkYXB0ZXI6OlRvdWNoQWRq
dXN0ZXI6OmZpbmRDYW5kaWRhdGVQb2ludEZvclRvdWNoKGNvbnN0IEludFBvaQogICAgIGludCB4
ID0gdG91Y2hQb2ludC54KCk7CiAgICAgaW50IHkgPSB0b3VjaFBvaW50LnkoKTsKIAotICAgIFJl
ZlB0cjxOb2RlTGlzdD4gaW50ZXJzZWN0ZWROb2RlcyA9IGRvY3VtZW50LT5ub2Rlc0Zyb21SZWN0
KHgsIHksIG1fdG9wUGFkZGluZywgbV9yaWdodFBhZGRpbmcsIG1fYm90dG9tUGFkZGluZywgbV9s
ZWZ0UGFkZGluZywgZmFsc2UgLyppZ25vcmVDbGlwcGluZyovLCBmYWxzZSAvKmFsbG93U2hhZG93
Q29udGVudCovKTsKKyAgICBSZWZQdHI8Tm9kZUxpc3Q+IGludGVyc2VjdGVkTm9kZXMgPSBkb2N1
bWVudC0+bm9kZXNGcm9tUmVjdCh4LCB5LCBtX3RvcFBhZGRpbmcsIG1fcmlnaHRQYWRkaW5nLCBt
X2JvdHRvbVBhZGRpbmcsIG1fbGVmdFBhZGRpbmcpOwogICAgIGlmICghaW50ZXJzZWN0ZWROb2Rl
cykKICAgICAgICAgcmV0dXJuIEludFBvaW50KCk7CiAKQEAgLTU4NSw3ICs1ODUsNyBAQCB2b2lk
IFFXZWJQYWdlQWRhcHRlcjo6aGFuZGxlU29mdHdhcmVJbnB1dFBhbmVsKFF0OjpNb3VzZUJ1dHRv
biBidXR0b24sIGNvbnN0IFFQbwogICAgICAgICAmJiBmcmFtZS0+ZG9jdW1lbnQoKS0+Zm9jdXNl
ZE5vZGUoKQogICAgICAgICAgICAgJiYgYnV0dG9uID09IFF0OjpMZWZ0QnV0dG9uICYmIHFHdWlB
cHAtPnByb3BlcnR5KCJhdXRvU2lwRW5hYmxlZCIpLnRvQm9vbCgpKSB7CiAgICAgICAgIGlmICgh
Y2xpY2tDYXVzZWRGb2N1cyB8fCByZXF1ZXN0U29mdHdhcmVJbnB1dFBhbmVsKCkpIHsKLSAgICAg
ICAgICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRU
ZXN0UmVzdWx0QXRQb2ludChmcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHBvcyksIGZh
bHNlKTsKKyAgICAgICAgICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZnJhbWUtPmV2ZW50SGFu
ZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChmcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRl
bnRzKHBvcykpOwogICAgICAgICAgICAgaWYgKHJlc3VsdC5pc0NvbnRlbnRFZGl0YWJsZSgpKSB7
CiAgICAgICAgICAgICAgICAgUUV2ZW50IGV2ZW50KFFFdmVudDo6UmVxdWVzdFNvZnR3YXJlSW5w
dXRQYW5lbCk7CiAgICAgICAgICAgICAgICAgUUd1aUFwcGxpY2F0aW9uOjpzZW5kRXZlbnQoY2xp
ZW50LT5vd25lcldpZGdldCgpLCAmZXZlbnQpOwpAQCAtOTI3LDcgKzkyNyw3IEBAIFFXZWJIaXRU
ZXN0UmVzdWx0UHJpdmF0ZSogUVdlYlBhZ2VBZGFwdGVyOjp1cGRhdGVQb3NpdGlvbkRlcGVuZGVu
dE1lbnVBY3Rpb25zKGNvCiB7CiAgICAgQVNTRVJUKHZpc2l0ZWRXZWJBY3Rpb25zKTsKICAgICBX
ZWJDb3JlOjpGcmFtZSogZm9jdXNlZEZyYW1lID0gcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZv
Y3VzZWRPck1haW5GcmFtZSgpOwotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZm9jdXNlZEZy
YW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoZm9jdXNlZEZyYW1lLT52
aWV3KCktPndpbmRvd1RvQ29udGVudHMocG9zKSwgLyphbGxvd1NoYWRvd0NvbnRlbnQqLyBmYWxz
ZSk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBmb2N1c2VkRnJhbWUtPmV2ZW50SGFuZGxl
cigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChmb2N1c2VkRnJhbWUtPnZpZXcoKS0+d2luZG93VG9D
b250ZW50cyhwb3MpKTsKICAgICBwYWdlLT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKS0+c2V0SGl0
VGVzdFJlc3VsdChyZXN1bHQpOwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkFjdGlvblByb3BlcnR5QmFnLmNwcCBiL1NvdXJjZS9XZWJL
aXQvd2luL1dlYkFjdGlvblByb3BlcnR5QmFnLmNwcAppbmRleCBmY2E4M2JlMGQ0ZTkwMDIxMDNh
MzM0NmFkMTczMjg5NzhiNzgzMjQ3Li5kMjkwNTA5MWYyYzczMTZjMmM1ODJmYWQwOWYzZTM2MTg0
ODJhMzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJBY3Rpb25Qcm9wZXJ0eUJh
Zy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQWN0aW9uUHJvcGVydHlCYWcuY3BwCkBA
IC0xMjEsNyArMTIxLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJBY3Rpb25Qcm9w
ZXJ0eUJhZzo6UmVhZChMUENPTEVTVFIgcHN6UHJvcE5hbWUsIFZBUkkKICAgICBpZiAoaXNFcXVh
bChwc3pQcm9wTmFtZSwgV2ViQWN0aW9uRWxlbWVudEtleSkpIHsKICAgICAgICAgaWYgKGNvbnN0
IE1vdXNlRXZlbnQqIG1vdXNlRXZlbnQgPSBmaW5kTW91c2VFdmVudChtX2FjdGlvbi5ldmVudCgp
KSkgewogICAgICAgICAgICAgVl9WVChwVmFyKSA9IFZUX1VOS05PV047Ci0gICAgICAgICAgICBW
X1VOS05PV04ocFZhcikgPSBXZWJFbGVtZW50UHJvcGVydHlCYWc6OmNyZWF0ZUluc3RhbmNlKG1f
ZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChtb3VzZUV2ZW50LT5h
YnNvbHV0ZUxvY2F0aW9uKCksIGZhbHNlKSk7CisgICAgICAgICAgICBWX1VOS05PV04ocFZhcikg
PSBXZWJFbGVtZW50UHJvcGVydHlCYWc6OmNyZWF0ZUluc3RhbmNlKG1fZnJhbWUtPmV2ZW50SGFu
ZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChtb3VzZUV2ZW50LT5hYnNvbHV0ZUxvY2F0aW9u
KCkpKTsKICAgICAgICAgICAgIHJldHVybiBTX09LOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXRFeHBvcnRzLmRlZi5p
biBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0RXhwb3J0cy5kZWYuaW4K
aW5kZXggOWVlZGRlZjAxYTI0ZDkzMTgzMzU0ZjViMzhlM2E0YjA4ODNlMzY5NC4uZmQ3YWE3NWFm
ZmY0OGY2N2QzMjc3MTFhNTQwMTVlOTQyYzVkN2MxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXRFeHBvcnRzLmRlZi5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdEV4cG9ydHMuZGVmLmluCkBAIC0zMDYsNyArMzA2
LDcgQEAgRVhQT1JUUwogICAgICAgICA/PzFDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlckBXZWJD
b3JlQEBNQUVAWFoKICAgICAgICAgP2NvbnRleHREZXN0cm95ZWRAQ29udGV4dERlc3RydWN0aW9u
T2JzZXJ2ZXJAV2ViQ29yZUBAVUFFWFhaCiAgICAgICAgID8/MENvbnRleHREZXN0cnVjdGlvbk9i
c2VydmVyQFdlYkNvcmVAQFFBRUBQQVZTY3JpcHRFeGVjdXRpb25Db250ZXh0QDFAQFoKLSAgICAg
ICAgP25vZGVzRnJvbVJlY3RARG9jdW1lbnRAV2ViQ29yZUBAUUJFP0FWPyRQYXNzUmVmUHRyQFZO
b2RlTGlzdEBXZWJDb3JlQEBAV1RGQEBISElJSUlfTjBAWgorICAgICAgICA/bm9kZXNGcm9tUmVj
dEBEb2N1bWVudEBXZWJDb3JlQEBRQkU/QVY/JFBhc3NSZWZQdHJAVk5vZGVMaXN0QFdlYkNvcmVA
QEBXVEZAQEhISUlJSUlAWgogICAgICAgICA/c2VsZWN0aW9uU3RhcnRIYXNNYXJrZXJGb3JARWRp
dG9yQFdlYkNvcmVAQFFCRV9OVzRNYXJrZXJUeXBlQERvY3VtZW50TWFya2VyQDJASEhAWgogI2lm
IEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICAgICAgP3dlYmtpdFdpbGxFbnRlckZ1bGxTY3Jl
ZW5Gb3JFbGVtZW50QERvY3VtZW50QFdlYkNvcmVAQFFBRVhQQVZFbGVtZW50QDJAQFoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC93aW4v
V2ViVmlldy5jcHAKaW5kZXggODgwZTQxMjExZTIyYTY2MTAzNTFlMDQ2Mjk2MDAzMmJjNTMzZGY2
Zi4uOGUwODg5NzRhODBkMjhjM2YzN2YyM2RhM2M1OGE3NzRkM2NhYmFkYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2Vi
Vmlldy5jcHAKQEAgLTEzMzQsNyArMTMzNCw3IEBAIGJvb2wgV2ViVmlldzo6aGFuZGxlQ29udGV4
dE1lbnVFdmVudChXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQogICAgIG1fcGFnZS0+Y29u
dGV4dE1lbnVDb250cm9sbGVyKCktPmNsZWFyQ29udGV4dE1lbnUoKTsKIAogICAgIEludFBvaW50
IGRvY3VtZW50UG9pbnQobV9wYWdlLT5tYWluRnJhbWUoKS0+dmlldygpLT53aW5kb3dUb0NvbnRl
bnRzKGNvb3JkcykpOwotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gbV9wYWdlLT5tYWluRnJh
bWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGRvY3VtZW50UG9pbnQs
IGZhbHNlKTsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IG1fcGFnZS0+bWFpbkZyYW1lKCkt
PmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChkb2N1bWVudFBvaW50KTsKICAg
ICBGcmFtZSogdGFyZ2V0RnJhbWUgPSByZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCkgPyByZXN1
bHQuaW5uZXJOb25TaGFyZWROb2RlKCktPmRvY3VtZW50KCktPmZyYW1lKCkgOiBtX3BhZ2UtPmZv
Y3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKIAogICAgIHRhcmdldEZyYW1l
LT52aWV3KCktPnNldEN1cnNvcihwb2ludGVyQ3Vyc29yKCkpOwpAQCAtMzYwMyw3ICszNjAzLDcg
QEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjplbGVtZW50QXRQb2ludCgKICAg
ICBJbnRQb2ludCB3ZWJDb3JlUG9pbnQgPSBJbnRQb2ludChwb2ludC0+eCwgcG9pbnQtPnkpOwog
ICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gSGl0VGVzdFJlc3VsdCh3ZWJDb3JlUG9pbnQpOwog
ICAgIGlmIChmcmFtZS0+Y29udGVudFJlbmRlcmVyKCkpCi0gICAgICAgIHJlc3VsdCA9IGZyYW1l
LT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQod2ViQ29yZVBvaW50LCBmYWxz
ZSk7CisgICAgICAgIHJlc3VsdCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3Vs
dEF0UG9pbnQod2ViQ29yZVBvaW50KTsKICAgICAqZWxlbWVudERpY3Rpb25hcnkgPSBXZWJFbGVt
ZW50UHJvcGVydHlCYWc6OmNyZWF0ZUluc3RhbmNlKHJlc3VsdCk7CiAgICAgcmV0dXJuIFNfT0s7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3d4L1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvd3gvV2ViRnJhbWUuY3BwCmluZGV4IGQ4ZmFjNjFmY2E5MzcxZGUyY2QyMGQyODBmMmFk
YWYwMWM3NGE5Y2YuLjU3NGJkMGY1MWJlOTJiYjdjYzRkM2VjNjljOGM0NjU2ZmM1Y2YzNmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd3gvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvd3gvV2ViRnJhbWUuY3BwCkBAIC02OTAsNyArNjkwLDcgQEAgV2ViVmlld0RPTUVsZW1lbnRJ
bmZvIFdlYkZyYW1lOjpIaXRUZXN0KGNvbnN0IHd4UG9pbnQmIHBvcykgY29uc3QKICAgICBXZWJW
aWV3RE9NRWxlbWVudEluZm8gZG9tSW5mbzsKIAogICAgIGlmIChtX2ltcGwtPmZyYW1lLT52aWV3
KCkpIHsKLSAgICAgICAgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCByZXN1bHQgPSBtX2ltcGwtPmZy
YW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQobV9pbXBsLT5mcmFtZS0+
dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHBvcyksIGZhbHNlKTsKKyAgICAgICAgV2ViQ29yZTo6
SGl0VGVzdFJlc3VsdCByZXN1bHQgPSBtX2ltcGwtPmZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0
VGVzdFJlc3VsdEF0UG9pbnQobV9pbXBsLT5mcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRz
KHBvcykpOwogICAgICAgICBpZiAocmVzdWx0LmlubmVyTm9kZSgpKSB7CiAgICAgICAgICAgICBk
b21JbmZvLlNldExpbmsocmVzdWx0LmFic29sdXRlTGlua1VSTCgpLnN0cmluZygpKTsKICAgICAg
ICAgICAgIGRvbUluZm8uU2V0VGV4dChyZXN1bHQudGV4dENvbnRlbnQoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
TmF2aWdhdGlvbkFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAKaW5kZXggNDI4MTM1NDgx
YWZkOWM1MWIzYWJkMjc2Y2U4NjE2ZDM5NmY4YjQzZS4uMjljNzBkZmI0NjZjN2QwZWQ0ZjE1ZWI0
YzkyNGMzZDgyY2Y3MWIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZp
Z2F0aW9uQWN0aW9uLmNwcApAQCAtOTEsNyArOTEsNyBAQCBJbmplY3RlZEJ1bmRsZU5hdmlnYXRp
b25BY3Rpb246OkluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbihXZWJGcmFtZSogZnJhbWUs
CiAgICAgLCBtX21vdXNlQnV0dG9uKFdlYk1vdXNlRXZlbnQ6Ok5vQnV0dG9uKQogewogICAgIGlm
IChjb25zdCBNb3VzZUV2ZW50KiBtb3VzZUV2ZW50ID0gbW91c2VFdmVudEZvck5hdmlnYXRpb25B
Y3Rpb24obmF2aWdhdGlvbkFjdGlvbikpIHsKLSAgICAgICAgbV9oaXRUZXN0UmVzdWx0ID0gSW5q
ZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0OjpjcmVhdGUoZnJhbWUtPmNvcmVGcmFtZSgpLT5ldmVu
dEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQobW91c2VFdmVudC0+YWJzb2x1dGVMb2Nh
dGlvbigpLCBmYWxzZSkpOworICAgICAgICBtX2hpdFRlc3RSZXN1bHQgPSBJbmplY3RlZEJ1bmRs
ZUhpdFRlc3RSZXN1bHQ6OmNyZWF0ZShmcmFtZS0+Y29yZUZyYW1lKCktPmV2ZW50SGFuZGxlcigp
LT5oaXRUZXN0UmVzdWx0QXRQb2ludChtb3VzZUV2ZW50LT5hYnNvbHV0ZUxvY2F0aW9uKCkpKTsK
ICAgICAgICAgbV9tb3VzZUJ1dHRvbiAgID0gbW91c2VCdXR0b25Gb3JNb3VzZUV2ZW50KG1vdXNl
RXZlbnQpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJGcmFtZS5jcHAKaW5kZXggNGZlMzE3ZWY3NjIzYTg2YmZlMzQzNjA1ZWRkMGQ5NjZlYmRjMDBk
Ny4uZTRlOTY0MTI3YjhiMjlmNjgxNzA3YjRlNGFiZWRiYTY2YjU5ODVmNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC01NDAsNyArNTQw
LDcgQEAgUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ+IFdlYkZyYW1lOjpo
aXRUZXN0KGNvbnN0IEludFBvaW50IHBvaW50KQogICAgIGlmICghbV9jb3JlRnJhbWUpCiAgICAg
ICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdDo6
Y3JlYXRlKG1fY29yZUZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQo
cG9pbnQsIGZhbHNlLCB0cnVlKSk7CisgICAgcmV0dXJuIEluamVjdGVkQnVuZGxlSGl0VGVzdFJl
c3VsdDo6Y3JlYXRlKG1fY29yZUZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0
UG9pbnQocG9pbnQsIEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpB
Y3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6SWdub3JlQ2xpcHBpbmcpKTsKIH0KIAogYm9vbCBXZWJG
cmFtZTo6Z2V0RG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IoZG91YmxlKiByZWQsIGRvdWJsZSogZ3Jl
ZW4sIGRvdWJsZSogYmx1ZSwgZG91YmxlKiBhbHBoYSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBjNDcwOGM4OGNhMjM4NTYxZGQyMTM4MTFj
OWNjZGQzNTg2NWNlMGY4Li5hN2Q1MWE3MDYwNDM2MWY2YTQ4ZTg0ZDk4YWNmZjdiMTQ1MmEyMDEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBA
IC0xNTA5LDcgKzE1MDksNyBAQCBzdGF0aWMgYm9vbCBpc0NvbnRleHRDbGljayhjb25zdCBQbGF0
Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KQogc3RhdGljIGJvb2wgaGFuZGxlQ29udGV4dE1lbnVFdmVu
dChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIHBsYXRmb3JtTW91c2VFdmVudCwgV2ViUGFnZSog
cGFnZSkKIHsKICAgICBJbnRQb2ludCBwb2ludCA9IHBhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFt
ZSgpLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMocGxhdGZvcm1Nb3VzZUV2ZW50LnBvc2l0aW9u
KCkpOwotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gcGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZy
YW1lKCktPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChwb2ludCwgZmFsc2Up
OworICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gcGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1l
KCktPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChwb2ludCk7CiAKICAgICBG
cmFtZSogZnJhbWUgPSBwYWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKTsKICAgICBpZiAocmVz
dWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpKQpAQCAtMTc2Myw3ICsxNzYzLDcgQEAgdm9pZCBXZWJQ
YWdlOjpoaWdobGlnaHRQb3RlbnRpYWxBY3RpdmF0aW9uKGNvbnN0IEludFBvaW50JiBwb2ludCwg
Y29uc3QgSW50U2l6ZSYKICAgICAgICAgICAgIHJldHVybjsKIAogI2Vsc2UKLSAgICAgICAgSGl0
VGVzdFJlc3VsdCByZXN1bHQgPSBtYWluZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVz
dWx0QXRQb2ludChtYWluZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhwb2ludCksIC8q
YWxsb3dTaGFkb3dDb250ZW50Ki8gZmFsc2UsIC8qaWdub3JlQ2xpcHBpbmcqLyB0cnVlKTsKKyAg
ICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBtYWluZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5o
aXRUZXN0UmVzdWx0QXRQb2ludChtYWluZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhw
b2ludCksIEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUg
fCBIaXRUZXN0UmVxdWVzdDo6QWxsb3dTaGFkb3dDb250ZW50KTsKICAgICAgICAgYWRqdXN0ZWRO
b2RlID0gcmVzdWx0LmlubmVyTm9kZSgpOwogI2VuZGlmCiAgICAgICAgIC8vIEZpbmQgdGhlIG5v
ZGUgdG8gaGlnaGxpZ2h0LiBUaGlzIGlzIG5vdCB0aGUgc2FtZSBhcyB0aGUgbm9kZSByZXNwb25k
aW5nIHRoZSB0YXAgZ2VzdHVyZSwgYmVjYXVzZSBtYW55CkBAIC0zMDMxLDcgKzMwMzEsNyBAQCB2
b2lkIFdlYlBhZ2U6OmZpbmRab29tYWJsZUFyZWFGb3JQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgcG9pbnQsIGNvbnN0IFdlYgogewogICAgIFVOVVNFRF9QQVJBTShhcmVhKTsKICAgICBG
cmFtZSogbWFpbmZyYW1lID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpOwotICAgIEhpdFRlc3RS
ZXN1bHQgcmVzdWx0ID0gbWFpbmZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0
UG9pbnQobWFpbmZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMocG9pbnQpLCAvKmFsbG93
U2hhZG93Q29udGVudCovIGZhbHNlLCAvKmlnbm9yZUNsaXBwaW5nKi8gdHJ1ZSk7CisgICAgSGl0
VGVzdFJlc3VsdCByZXN1bHQgPSBtYWluZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVz
dWx0QXRQb2ludChtYWluZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhwb2ludCksIEhp
dFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0
UmVxdWVzdDo6SWdub3JlQ2xpcHBpbmcpOwogCiAgICAgTm9kZSogbm9kZSA9IHJlc3VsdC5pbm5l
ck5vZGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9XZWJQYWdlTWFjLm1tCmluZGV4IGUzNjdhMTQ3YjY5OTI1ZjYwNjQ1YmEyN2IzNmJiY2I1MGM4
MWE3MzAuLmJlMGRlNzk2MGU4NjBhZWZlNjhmZjdhNzNmZjAxMTM2MDBmZGNmODIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0K
QEAgLTM4NSw3ICszODUsNyBAQCB2b2lkIFdlYlBhZ2U6OmNoYXJhY3RlckluZGV4Rm9yUG9pbnQo
SW50UG9pbnQgcG9pbnQsIHVpbnQ2NF90JiBpbmRleCkKICAgICBpZiAoIWZyYW1lKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGZyYW1lLT5ldmVudEhhbmRs
ZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQocG9pbnQsIGZhbHNlKTsKKyAgICBIaXRUZXN0UmVz
dWx0IHJlc3VsdCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQo
cG9pbnQpOwogICAgIGZyYW1lID0gcmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpID8gcmVzdWx0
LmlubmVyTm9kZUZyYW1lKCkgOiBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JN
YWluRnJhbWUoKTsKICAgICAKICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gZnJhbWUtPnJhbmdl
Rm9yUG9pbnQocmVzdWx0LnJvdW5kZWRQb2ludEluSW5uZXJOb2RlRnJhbWUoKSk7CkBAIC00ODIs
NyArNDgyLDcgQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRp
b24oY29uc3QgRmxvYXRQb2ludCYgZmxvYXRQb2ludCkKIAogICAgIC8vIEZpbmQgdGhlIGZyYW1l
IHRoZSBwb2ludCBpcyBvdmVyLgogICAgIEludFBvaW50IHBvaW50ID0gcm91bmRlZEludFBvaW50
KGZsb2F0UG9pbnQpOwotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZnJhbWUtPmV2ZW50SGFu
ZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChmcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRl
bnRzKHBvaW50KSwgZmFsc2UpOworICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZnJhbWUtPmV2
ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChmcmFtZS0+dmlldygpLT53aW5kb3dU
b0NvbnRlbnRzKHBvaW50KSk7CiAgICAgZnJhbWUgPSByZXN1bHQuaW5uZXJOb25TaGFyZWROb2Rl
KCkgPyByZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCktPmRvY3VtZW50KCktPmZyYW1lKCkgOiBt
X3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKIAogICAgIElu
dFBvaW50IHRyYW5zbGF0ZWRQb2ludCA9IGZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMo
cG9pbnQpOwpAQCAtNzQwLDcgKzc0MCw3IEBAIHZvaWQgV2ViUGFnZTo6c2hvdWxkRGVsYXlXaW5k
b3dPcmRlcmluZ0V2ZW50KGNvbnN0IFdlYktpdDo6V2ViTW91c2VFdmVudCYgZXZlbnQsCiAgICAg
ICAgIHJldHVybjsKIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi0gICAgSGl0VGVzdFJlc3Vs
dCBoaXRSZXN1bHQgPSBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50
KGZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMoZXZlbnQucG9zaXRpb24oKSksIHRydWUp
OworICAgIEhpdFRlc3RSZXN1bHQgaGl0UmVzdWx0ID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5o
aXRUZXN0UmVzdWx0QXRQb2ludChmcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKGV2ZW50
LnBvc2l0aW9uKCkpLCBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6
QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93U2hhZG93Q29udGVudCk7CiAgICAgaWYgKGhp
dFJlc3VsdC5pc1NlbGVjdGVkKCkpCiAgICAgICAgIHJlc3VsdCA9IGZyYW1lLT5ldmVudEhhbmRs
ZXIoKS0+ZXZlbnRNYXlTdGFydERyYWcocGxhdGZvcm0oZXZlbnQpKTsKICNlbmRpZgpAQCAtNzUz
LDcgKzc1Myw3IEBAIHZvaWQgV2ViUGFnZTo6YWNjZXB0c0ZpcnN0TW91c2UoaW50IGV2ZW50TnVt
YmVyLCBjb25zdCBXZWJLaXQ6OldlYk1vdXNlRXZlbnQmIGV2CiAgICAgaWYgKCFmcmFtZSkKICAg
ICAgICAgcmV0dXJuOwogICAgIAotICAgIEhpdFRlc3RSZXN1bHQgaGl0UmVzdWx0ID0gZnJhbWUt
PmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChmcmFtZS0+dmlldygpLT53aW5k
b3dUb0NvbnRlbnRzKGV2ZW50LnBvc2l0aW9uKCkpLCB0cnVlKTsKKyAgICBIaXRUZXN0UmVzdWx0
IGhpdFJlc3VsdCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQo
ZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhldmVudC5wb3NpdGlvbigpKSwgSGl0VGVz
dFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1
ZXN0OjpBbGxvd1NoYWRvd0NvbnRlbnQpOwogICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+c2V0
QWN0aXZhdGlvbkV2ZW50TnVtYmVyKGV2ZW50TnVtYmVyKTsKICNpZiBFTkFCTEUoRFJBR19TVVBQ
T1JUKQogICAgIGlmIChoaXRSZXN1bHQuaXNTZWxlY3RlZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L2F1dG90b29scy9zeW1ib2xzLmZpbHRlciBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0
ZXIKaW5kZXggN2M3ZTE3OTNiNjhlZDEwNTU4YzEzZTBlMGFjNTBmNTY5OGQ3ZTAyNC4uZTYxOWEy
NmY2Y2E3NjM5OTZjYzAxODNhNjNkNjJjMjYzMGY2Njk0ZSAxMDA2NDQKLS0tIGEvU291cmNlL2F1
dG90b29scy9zeW1ib2xzLmZpbHRlcgorKysgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmls
dGVyCkBAIC0yMjEsNyArMjIxLDcgQEAgX1pON1dlYkNvcmUyMlJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM0MGlzTGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWRFOwogX1pON1dlYkNv
cmUyMlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMyMmlzRGlhbG9nRWxlbWVudEVuYWJsZWRFOwogX1pO
N1dlYkNvcmUyMlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMzN2lzQXV0aG9yU2hhZG93RE9NRm9yQW55
RWxlbWVudEVuYWJsZWRFOwogX1pON1dlYkNvcmUyMlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMyMGlz
U3R5bGVTY29wZWRFbmFibGVkRTsKLV9aTks3V2ViQ29yZThEb2N1bWVudDEzbm9kZXNGcm9tUmVj
dEVpaWpqampiYjsKK19aTks3V2ViQ29yZThEb2N1bWVudDEzbm9kZXNGcm9tUmVjdEVpaWpqampq
OwogX1pON1dlYkNvcmU0dG9KU0VQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFsT2Jq
ZWN0RVBOU184Tm9kZUxpc3RFOwogX1pOSzdXZWJDb3JlNkVkaXRvcjI2c2VsZWN0aW9uU3RhcnRI
YXNNYXJrZXJGb3JFTlNfMTREb2N1bWVudE1hcmtlcjEwTWFya2VyVHlwZUVpaTsKIF9aTjdXZWJD
b3JlOERvY3VtZW50MzN3ZWJraXREaWRFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnRFUE5TXzdFbGVt
ZW50RTsKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBmZDM1YmIxNjQw
OTY4NTVmODE2ZmY1YjFkODc0M2UyNjBmMDc5NjQxLi4wN2MxZmIwMmEwNDY5N2VkNWQ5M2E1ZGUz
NjQwYzU3MWQxMDY1ZjhhIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMTMtMDItMTMgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFu
LmplbnNlbkBkaWdpYS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkgaGl0VGVzdFJlc3VsdEF0UG9p
bnQgYW5kIG5vZGVzRnJvbVJlY3QgQVBJcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTU3MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBVcGRhdGUgZXhwb3J0ZWQgc3ltYm9scy4KKworICAgICAgICAqIFNv
dXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXI6CisKIDIwMTMtMDItMTIgIE1hcnRpbiBSb2Jp
bnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFJlbW92ZSB0aGUg
R0xpYiB1bmljb2RlIGJhY2tlbmQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188066</attachid>
            <date>2013-02-13 06:10:59 -0800</date>
            <delta_ts>2013-02-15 06:07:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95720-20130213150645.patch</filename>
            <type>text/plain</type>
            <size>65652</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyNzMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2Q2YzZlYTM1MjUyZWVl
YjE0NjdiY2M2Mjc4NjM4YWNmNmM4YzY2My4uMDNhYzUxMjczYWU5MzczZGZmOTA0NDVkMDhmZDlk
M2JlZjY3MmNkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEzLTAyLTEzICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIFNp
bXBsaWZ5IGhpdFRlc3RSZXN1bHRBdFBvaW50IGFuZCBub2Rlc0Zyb21SZWN0IEFQSXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NzIwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGV4aXN0aW5nIEFQ
SSB3YXMgb3ZlcmxvYWRlZCBhbmQgY291bGQgYmUgc2ltcGxpZmllZCBieSBwYXNzaW5nIGFsbCB0
aGUgYm9vbCBhcmd1bWVudHMgaW4gCisgICAgICAgIGEgSGl0VGVzdFJlcXVlc3QgYXJndW1lbnQu
IFRoaXMgc2hvdWxkIGFsc28gaGVscCBjbGFyaWZ5IHRoZSBjYWxsIGFzIHRoZSBlbnVtIHZhbHVl
cyBleHBsaWNpdGVseQorICAgICAgICBzdGF0ZSB3aGF0IHRoZXkgZG8uCisKKyAgICAgICAgKiBX
ZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLm9yZGVyOgorICAgICAgICAqIGRvbS9E
b2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6bm9kZXNGcm9tUmVjdCk6
CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChEb2N1bWVudCk6CisgICAgICAg
ICogcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGV4dE1lbnVDb250cm9sbGVyOjpjcmVhdGVDb250ZXh0TWVudSk6CisgICAgICAgICogcGFnZS9E
cmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6Y2Fu
UHJvY2Vzc0RyYWcpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OnN0YXJ0RHJh
Zyk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRIYW5kbGVyOjpoaXRUZXN0UmVzdWx0QXRQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVGb3JUZXh0U2VsZWN0aW9uT3JDb250ZXh0TWVudSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmJlc3RDbGlja2FibGVOb2RlRm9yVG91Y2hQ
b2ludCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmJlc3RDb250ZXh0TWVudU5v
ZGVGb3JUb3VjaFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6YmVzdFpv
b21hYmxlQXJlYUZvclRvdWNoUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVy
OjpoYW5kbGVUb3VjaEV2ZW50KToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChFdmVudEhhbmRsZXIpOgorICAgICAgICAqIHBhZ2Uv
Rm9jdXNDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZUZvY3VzQ2FuZGlk
YXRlSWZOZWVkZWQpOgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWU6OnZpc2libGVQb3NpdGlvbkZvclBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lOjpkb2N1bWVudEF0UG9pbnQpOgorICAgICAgICAqIHBhZ2UvVG91Y2hEaXNhbWJpZ3VhdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmaW5kR29vZFRvdWNoVGFyZ2V0cyk6CisgICAgICAg
ICogcmVuZGVyaW5nL0hpdFRlc3RSZXF1ZXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0
UmVxdWVzdDo6YWxsb3dzRnJhbWVTY3JvbGxiYXJzKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVy
bmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Om5vZGVzRnJvbVJlY3QpOgor
CiAyMDEzLTAyLTEzICBBbmRyZXcgV2lsc29uICA8YXR3aWxzb25AY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQgQ2hyb21pdW0gZ3lwLWZpbGUgY2xlYW51cCBhZnRlciBnbGliIGJh
Y2tlbmQgcmVtb3ZhbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCmluZGV4IGViNDE5NzEy
NDAxYjA0NzA0MDY5MjQyYTUxMTk5MjQ5ODFkZjc1MmQuLjBjYTRmZjkwZjg1MGMxOTY5MmZmZTcw
MDRkNzMwODRkNWFmYWMyMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDIxIEBACisyMDEzLTAyLTEzICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5z
ZW5AZGlnaWEuY29tPgorCisgICAgICAgIFNpbXBsaWZ5IGhpdFRlc3RSZXN1bHRBdFBvaW50IGFu
ZCBub2Rlc0Zyb21SZWN0IEFQSXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTk1NzIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVXBkYXRlIGNhbGxzIHRvIG5ldyBBUEkuCisKKyAgICAgICAgKiBBcGkvV2Vi
UGFnZS5jcHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VQcml2YXRlOjpj
b250ZXh0Tm9kZSk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VQcml2YXRl
Ojpub2RlRm9yWm9vbVVuZGVyUG9pbnQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpX
ZWJQYWdlUHJpdmF0ZTo6aGFuZGxlTW91c2VFdmVudCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpX
ZWJLaXQ6OldlYlBhZ2U6Om5vZGVBdERvY3VtZW50UG9pbnQpOgorICAgICAgICAoQmxhY2tCZXJy
eTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZTo6aGl0VGVzdFJlc3VsdCk6CisgICAgICAgICogV2Vi
S2l0U3VwcG9ydC9TZWxlY3Rpb25IYW5kbGVyLmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6Oldl
YktpdDo6dmlzaWJsZVBvc2l0aW9uRm9yUG9pbnRJZ25vcmluZ0NsaXBwaW5nKToKKwogMjAxMy0w
Mi0xMiAgSmFrb2IgUGV0c292aXRzICA8anBldHNvdml0c0ByaW0uY29tPgogCiAgICAgICAgIFtC
bGFja0JlcnJ5XSBBc3N1bWUgc2V0U2Nyb2xsaW5nT3Jab29taW5nKCkgdG8gYmUgY2FsbGVkIG9u
IHRoZSBXZWJLaXQgdGhyZWFkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA2NzNlYjIw
ZDk5MjY5ZDZlODhiNjJhNmQ0MGUyNGRkM2RiMDAwNzY0Li4yNmE5OTA2NTE5MTNiY2FlNTUzMzkw
MjRhNDcwNmEzZDEzMjljNjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI1IEBACisyMDEzLTAyLTEzICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5A
ZGlnaWEuY29tPgorCisgICAgICAgIFNpbXBsaWZ5IGhpdFRlc3RSZXN1bHRBdFBvaW50IGFuZCBu
b2Rlc0Zyb21SZWN0IEFQSXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTk1NzIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVXBkYXRlIGNhbGxzIHRvIG5ldyBBUEkuCisKKyAgICAgICAgKiBzcmMvQ29udGV4
dE1lbnVDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6c2VsZWN0TWlzc3BlbGxlZFdv
cmQpOgorICAgICAgICAqIHNyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwOgorICAgICAgICAo
V2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbik6CisgICAgICAgICogc3JjL1dlYkZyYW1lSW1wbC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6Y2hhcmFjdGVySW5kZXhGb3JQb2ludCk6CisgICAgICAg
ICogc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
bHVnaW5Db250YWluZXJJbXBsOjppc1JlY3RUb3Btb3N0KToKKyAgICAgICAgKiBzcmMvV2ViVmll
d0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6aGFuZGxlTW91c2VEb3du
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmNvbXB1dGVCbG9ja0JvdW5kcyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpiZXN0VG91Y2hMaW5rTm9kZSk6CisKIDIwMTMt
MDItMTIgIFlvc2hpZnVtaSBJbm91ZSAgPHlvc2luQGNocm9taXVtLm9yZz4KIAogICAgICAgICBV
bnJldmlld2VkLiBCdWlsZCBmaXggZm9yIENocm9taXVtLVdpbi4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRl
eCA4ZDkwNTMyMDIwOTg5MDdmZjM5YzRhZTI2YjY1NmQ5MzZmNDE4MjgxLi44NGRjMWMwOGVhMzlk
YWYxMTA5ZTlkNDhhYmM2M2I1NzcxNjkzNGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTUgQEAKKzIwMTMtMDItMTMgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBk
aWdpYS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkgaGl0VGVzdFJlc3VsdEF0UG9pbnQgYW5kIG5v
ZGVzRnJvbVJlY3QgQVBJcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTU3MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVcGRhdGUgY2FsbHMgdG8gbmV3IEFQSS4KKworICAgICAgICAqIGV3ay9ld2tfZnJh
bWUuY3BwOgorICAgICAgICAoZXdrX2ZyYW1lX2hpdF90ZXN0X25ldyk6CisKIDIwMTMtMDItMTIg
IEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgW1Rl
eE1hcF0gQXBwbHkgZnJhbWVzLXBlci1zZWNvbmQgZGVidWcgY291bnRlciB0byBXSzEuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKaW5kZXggNTk5Y2RiNmU4M2NiYjNlOTY0NzJlODBmYjMxMzE3ZjY1YmRhZTA4MS4u
Y2QxODBlNDZjNWMzNDgxYzYxNGEwZDBjMjk3ZGZjNzAyYzFmNzY1MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE3IEBACisyMDEzLTAyLTEzICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxh
bGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIFNpbXBsaWZ5IGhpdFRlc3RSZXN1bHRB
dFBvaW50IGFuZCBub2Rlc0Zyb21SZWN0IEFQSXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NzIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGNhbGxzIHRvIG5ldyBBUEkuCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjphY3Rpb25EaWN0aW9uYXJ5KToKKyAgICAgICAgKiBXZWJWaWV3L1dl
YkhUTUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBlbGVtZW50QXRQb2ludDphbGxv
d1NoYWRvd0NvbnRlbnQ6XSk6CisKIDIwMTMtMDItMTIgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29y
YXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBFbmFibGUgUEFHRV9WSVNJQklMSVRZX0FQ
SQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L3F0L0NoYW5nZUxvZwppbmRleCBjN2U2MWI5MDlhNDNlYjI1OWY4MDEzNWI3MDEyMmE3Njc5NDcz
YWQ4Li42ZmE2NTNiZjRlNjBlZGFhNjliMjU0MWVkY2M5NWUxNGRiMDk0OWViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEzLTAyLTEzICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4g
IDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIFNpbXBsaWZ5IGhpdFRlc3RSZXN1
bHRBdFBvaW50IGFuZCBub2Rlc0Zyb21SZWN0IEFQSXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NzIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGNhbGxzIHRvIG5ldyBBUEkuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUVdlYkZyYW1lQWRhcHRlci5j
cHA6CisgICAgICAgIChRV2ViRnJhbWVBZGFwdGVyOjpoaXRUZXN0Q29udGVudCk6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcDoKKyAgICAgICAgKFFXZWJQYWdl
QWRhcHRlcjo6VG91Y2hBZGp1c3Rlcjo6ZmluZENhbmRpZGF0ZVBvaW50Rm9yVG91Y2gpOgorICAg
ICAgICAoUVdlYlBhZ2VBZGFwdGVyOjpoYW5kbGVTb2Z0d2FyZUlucHV0UGFuZWwpOgorICAgICAg
ICAoUVdlYlBhZ2VBZGFwdGVyOjp1cGRhdGVQb3NpdGlvbkRlcGVuZGVudE1lbnVBY3Rpb25zKToK
KwogMjAxMy0wMi0xMiAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4K
IAogICAgICAgICBbVGV4TWFwXSBBcHBseSBmcmFtZXMtcGVyLXNlY29uZCBkZWJ1ZyBjb3VudGVy
IHRvIFdLMS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCAzYmI0ZTQwNzYwZjg3OTcwNDJiNDg0ZDNjZDQ0
YzQ3YzRiM2ZhM2M2Li4yNWEwZmY3MmMzNTZhZWU4ZmM0MjMxYzA1YjUwNjc1ZWNjNGVhNjQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTMtMDItMTMgIEFsbGFuIFNhbmRm
ZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkg
aGl0VGVzdFJlc3VsdEF0UG9pbnQgYW5kIG5vZGVzRnJvbVJlY3QgQVBJcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU3MjAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgY2FsbHMgdG8gbmV3IEFQ
SS4KKworICAgICAgICAqIFdlYkFjdGlvblByb3BlcnR5QmFnLmNwcDoKKyAgICAgICAgKFdlYkFj
dGlvblByb3BlcnR5QmFnOjpSZWFkKToKKyAgICAgICAgKiBXZWJLaXQudmNwcm9qL1dlYktpdEV4
cG9ydHMuZGVmLmluOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6
aGFuZGxlQ29udGV4dE1lbnVFdmVudCk6CisgICAgICAgIChXZWJWaWV3OjplbGVtZW50QXRQb2lu
dCk6CisKIDIwMTMtMDItMTEgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgRGlzYWJsZSBkZWxldGUgYnV0dG9uIGNvbnRyb2xsZXIgb24gbm9uLU1hYyBwb3J0cyBh
bmQgZGVsZXRlIEVkaXRvckNsaWVudDo6c2hvdWxkU2hvd0RlbGV0ZUludGVyZmFjZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3d4L0NoYW5n
ZUxvZwppbmRleCBlNmNjNTE2M2M5YzljZGRhNjExMzUzZDU3MjIzMDJmOTdkZDViYzZhLi5lNDIx
YjY0NTE3ZjU5MzRhODdmY2VkYTJiMjg2OTdjZTI1OWU2MWYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L3d4L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE1IEBACisyMDEzLTAyLTEzICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5q
ZW5zZW5AZGlnaWEuY29tPgorCisgICAgICAgIFNpbXBsaWZ5IGhpdFRlc3RSZXN1bHRBdFBvaW50
IGFuZCBub2Rlc0Zyb21SZWN0IEFQSXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk1NzIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVXBkYXRlIGNhbGxzIHRvIG5ldyBBUEkuCisKKyAgICAgICAgKiBXZWJG
cmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpIaXRUZXN0KToKKwogMjAxMy0w
Mi0xMSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBEaXNhYmxl
IGRlbGV0ZSBidXR0b24gY29udHJvbGxlciBvbiBub24tTWFjIHBvcnRzIGFuZCBkZWxldGUgRWRp
dG9yQ2xpZW50OjpzaG91bGRTaG93RGVsZXRlSW50ZXJmYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNzU4NzE1
NDY2Zjk3NjI3ZjVmNmIxZTlmMTljMTA2ZTU1NjMyNTQyYS4uYjI0OTViYjhiYzIyODcyMjc5NjY0
NmE3NmI3ZDQyODVlM2IxZjNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEzLTAy
LTEzICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgorCisg
ICAgICAgIFNpbXBsaWZ5IGhpdFRlc3RSZXN1bHRBdFBvaW50IGFuZCBub2Rlc0Zyb21SZWN0IEFQ
SXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NzIw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRl
IGNhbGxzIHRvIG5ldyBBUEkgYW5kIHVwZGF0ZSBleHBvcnRlZCBzeW1ib2xzLgorCisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rp
b24uY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246
OkluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmhpdFRlc3Qp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6aGFuZGxlQ29udGV4dE1lbnVFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmhpZ2hsaWdodFBvdGVudGlhbEFjdGl2YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpmaW5kWm9vbWFibGVBcmVhRm9yUG9pbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y2hhcmFjdGVy
SW5kZXhGb3JQb2ludCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBlcmZvcm1EaWN0aW9u
YXJ5TG9va3VwQXRMb2NhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNob3VsZERl
bGF5V2luZG93T3JkZXJpbmdFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmFjY2Vw
dHNGaXJzdE1vdXNlKToKKwogMjAxMy0wMi0xMiAgQWRlbmlsc29uIENhdmFsY2FudGkgIDxjYXZh
bGNhbnRpaUBnbWFpbC5jb20+CiAKICAgICAgICAgW1dLMl0gUGFnZSByZWxvYWRpbmcgd2lsbCBj
cmFzaCBVSVByb2Nlc3MgYWZ0ZXIgV2ViUHJvY2VzcyB3YXMga2lsbGVkCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCmluZGV4IGRmZGFlODM4M2Q5NmZkOWVmOTNjYWNlMTQ5ZTcyZTg1NmQzYzY1Y2IuLjBjM2U1
Mzk3Yjg5ZjlkNmFlYzk0MDc5NzIxZThkZWI1NWQ2ODM2NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CkBAIC0xNzUsNyArMTc1LDcgQEAgX19aTjdXZWJDb3JlMTJFdmVudEhhbmRsZXIxNHNjcm9sbE92
ZXJmbG93RU5TXzE1U2Nyb2xsRGlyZWN0aW9uRU5TXzE3U2Nyb2xsR3JhbnUKIF9fWk43V2ViQ29y
ZTEyRXZlbnRIYW5kbGVyMTVoYW5kbGVBY2Nlc3NLZXlFUktOU18yMVBsYXRmb3JtS2V5Ym9hcmRF
dmVudEUKIF9fWk43V2ViQ29yZTEyRXZlbnRIYW5kbGVyMTZoYW5kbGVXaGVlbEV2ZW50RVJLTlNf
MThQbGF0Zm9ybVdoZWVsRXZlbnRFCiBfX1pON1dlYkNvcmUxMkV2ZW50SGFuZGxlcjE3c2Nyb2xs
UmVjdXJzaXZlbHlFTlNfMTVTY3JvbGxEaXJlY3Rpb25FTlNfMTdTY3JvbGxHcmFudWxhcml0eUVQ
TlNfNE5vZGVFCi1fX1pON1dlYkNvcmUxMkV2ZW50SGFuZGxlcjIwaGl0VGVzdFJlc3VsdEF0UG9p
bnRFUktOU18xMUxheW91dFBvaW50RWJiTlNfMTdIaXRUZXN0U2Nyb2xsYmFyc0VqUktOU18xMExh
eW91dFNpemVFCitfX1pON1dlYkNvcmUxMkV2ZW50SGFuZGxlcjIwaGl0VGVzdFJlc3VsdEF0UG9p
bnRFUktOU18xMUxheW91dFBvaW50RWpSS05TXzEwTGF5b3V0U2l6ZUUKIF9fWk43V2ViQ29yZTEy
RXZlbnRIYW5kbGVyMjFoYW5kbGVNb3VzZVByZXNzRXZlbnRFUktOU18xOFBsYXRmb3JtTW91c2VF
dmVudEUKIF9fWk43V2ViQ29yZTEyRXZlbnRIYW5kbGVyMjNoYW5kbGVNb3VzZVJlbGVhc2VFdmVu
dEVSS05TXzE4UGxhdGZvcm1Nb3VzZUV2ZW50RQogX19aTjdXZWJDb3JlMTJFdmVudEhhbmRsZXIy
NGxvZ2ljYWxTY3JvbGxSZWN1cnNpdmVseUVOU18yMlNjcm9sbExvZ2ljYWxEaXJlY3Rpb25FTlNf
MTdTY3JvbGxHcmFudWxhcml0eUVQTlNfNE5vZGVFCkBAIC0xNDgwLDcgKzE0ODAsNyBAQCBfX1pO
SzdXZWJDb3JlN0ludFJlY3RjdjZDR1JlY3RFdgogX19aTks3V2ViQ29yZTdSdW5Mb29wOVRpbWVy
QmFzZThpc0FjdGl2ZUV2CiBfX1pOSzdXZWJDb3JlOERvY3VtZW50MTFjb21wbGV0ZVVSTEVSS04z
V1RGNlN0cmluZ0UKIF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQxM2F4T2JqZWN0Q2FjaGVFdgotX19a
Tks3V2ViQ29yZThEb2N1bWVudDEzbm9kZXNGcm9tUmVjdEVpaWpqampiYgorX19aTks3V2ViQ29y
ZThEb2N1bWVudDEzbm9kZXNGcm9tUmVjdEVpaWpqampqCiBfX1pOSzdXZWJDb3JlOERvY3VtZW50
MTRnZXRFbGVtZW50QnlJZEVSS04zV1RGMTJBdG9taWNTdHJpbmdFCiBfX1pOSzdXZWJDb3JlOERv
Y3VtZW50MzFkaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nRVJLTjNXVEY2U3RyaW5nRQog
X19aTks3V2ViQ29yZThEb2N1bWVudDRib2R5RXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUub3JkZXIgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCmluZGV4IGE0YTA0
NzEwOTA3ZjgwZTc2MjI2N2U0ZjYwOGZmNWYwYzk0YzU1MWEuLmZjMTI4MjEzZDNiMWQ2Y2Q3M2I1
ODNiOWE4Y2M1NDA3NjI1ODFlOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
b3JkZXIKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgpAQCAtMjI3NDgsNyArMjI3
NDgsNyBAQCBfX1pOSzdXZWJDb3JlMTJOb2RlSXRlcmF0b3IyMHVwZGF0ZUZvck5vZGVSZW1vdmFs
RVBOU180Tm9kZUVSTlMwXzExTm9kZVBvaW50ZXJFCiBfX1pON1dlYkNvcmUyN2pzTm9kZUl0ZXJh
dG9yUmVmZXJlbmNlTm9kZUVQTjNKU0M5RXhlY1N0YXRlRU5TMF83SlNWYWx1ZUVSS05TMF8xMElk
ZW50aWZpZXJFCiBfX1pOSzdXZWJDb3JlNE5vZGUyMHRyYXZlcnNlUHJldmlvdXNOb2RlRVBLUzBf
CiBfX1pON1dlYkNvcmUzN2pzTm9kZUl0ZXJhdG9yUHJvdG90eXBlRnVuY3Rpb25EZXRhY2hFUE4z
SlNDOUV4ZWNTdGF0ZUUKLV9fWk5LN1dlYkNvcmU4RG9jdW1lbnQxM25vZGVzRnJvbVJlY3RFaWlq
ampqYgorX19aTks3V2ViQ29yZThEb2N1bWVudDEzbm9kZXNGcm9tUmVjdEVpaWpqampqCiBfX1pO
SzdXZWJDb3JlOERvY3VtZW50MTdoYW5kbGVaZXJvUGFkZGluZ0VSS05TXzE0SGl0VGVzdFJlcXVl
c3RFUk5TXzEzSGl0VGVzdFJlc3VsdEUKIF9fWk4zV1RGMjFMaXN0SGFzaFNldFRyYW5zbGF0b3JJ
TlNfNlJlZlB0cklON1dlYkNvcmU0Tm9kZUVFRUxtMjU2RU5TXzdQdHJIYXNoSVM0X0VFRTl0cmFu
c2xhdGVFUlBOU18xNUxpc3RIYXNoU2V0Tm9kZUlTNF9MbTI1NkVFRVJLUzRfUE5TXzI0TGlzdEhh
c2hTZXROb2RlQWxsb2NhdG9ySVM0X0xtMjU2RUVFCiBfX1pON1dlYkNvcmUyMVN0YXRpY0hhc2hT
ZXROb2RlTGlzdEMxRVJOM1dURjExTGlzdEhhc2hTZXRJTlMxXzZSZWZQdHJJTlNfNE5vZGVFRUVM
bTI1NkVOUzFfN1B0ckhhc2hJUzVfRUVFRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggNGQ2
Mjk2M2NhMTFlNTA5OGYwZTFmNzc3NzJmMWFkODkxYzU4OGQzNy4uZjYzZTVkNzM5YTA4Y2E3MGE1
NDcxNzczNmM5MGRkMTNhOWMxYzNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0xMzUx
LDcgKzEzNTEsNyBAQCBTdHJpbmcgRG9jdW1lbnQ6OnN1Z2dlc3RlZE1JTUVUeXBlKCkgY29uc3QK
IC8vICogbWFraW5nIGl0IHJlY2VpdmUgYSByZWN0IGFzIHBhcmFtZXRlciwgaS5lLiBub2Rlc0Zy
b21SZWN0KHgsIHksIHcsIGgpOwogLy8gKiBtYWtpbmcgaXQgcmVjZWl2ZSB0aGUgZXhwYWRpbmcg
c2l6ZSBvZiBlYWNoIGRpcmVjdGlvbiBzZXBhcmF0ZWx5LAogLy8gICBpLmUuIG5vZGVzRnJvbVJl
Y3QoeCwgeSwgdG9wU2l6ZSwgcmlnaHRTaXplLCBib3R0b21TaXplLCBsZWZ0U2l6ZSk7Ci1QYXNz
UmVmUHRyPE5vZGVMaXN0PiBEb2N1bWVudDo6bm9kZXNGcm9tUmVjdChpbnQgY2VudGVyWCwgaW50
IGNlbnRlclksIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFkZGluZywgdW5z
aWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcsIGJvb2wgaWdub3JlQ2xp
cHBpbmcsIGJvb2wgYWxsb3dTaGFkb3dDb250ZW50KSBjb25zdAorUGFzc1JlZlB0cjxOb2RlTGlz
dD4gRG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QoaW50IGNlbnRlclgsIGludCBjZW50ZXJZLCB1bnNp
Z25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcsIHVuc2lnbmVkIGJvdHRvbVBh
ZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nLCBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVl
c3RUeXBlIGhpdFR5cGUpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFNoYXJlIGNvZGUgYmV0d2Vl
biB0aGlzLCBlbGVtZW50RnJvbVBvaW50IGFuZCBjYXJldFJhbmdlRnJvbVBvaW50LgogICAgIGlm
ICghcmVuZGVyZXIoKSkKQEAgLTEzNjYsMTcgKzEzNjYsMTEgQEAgUGFzc1JlZlB0cjxOb2RlTGlz
dD4gRG9jdW1lbnQ6Om5vZGVzRnJvbVJlY3QoaW50IGNlbnRlclgsIGludCBjZW50ZXJZLCB1bnNp
Z25lZAogICAgIGZsb2F0IHpvb21GYWN0b3IgPSBmcmFtZS0+cGFnZVpvb21GYWN0b3IoKTsKICAg
ICBMYXlvdXRQb2ludCBwb2ludCA9IHJvdW5kZWRMYXlvdXRQb2ludChGbG9hdFBvaW50KGNlbnRl
clggKiB6b29tRmFjdG9yICsgdmlldygpLT5zY3JvbGxYKCksIGNlbnRlclkgKiB6b29tRmFjdG9y
ICsgdmlldygpLT5zY3JvbGxZKCkpKTsKIAotICAgIGludCB0eXBlID0gSGl0VGVzdFJlcXVlc3Q6
OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZTsKKyAgICBIaXRUZXN0UmVxdWVzdCBy
ZXF1ZXN0KGhpdFR5cGUpOwogCiAgICAgLy8gV2hlbiBpZ25vcmVDbGlwcGluZyBpcyBmYWxzZSwg
dGhpcyBtZXRob2QgcmV0dXJucyBudWxsIGZvciBjb29yZGluYXRlcyBvdXRzaWRlIG9mIHRoZSB2
aWV3cG9ydC4KLSAgICBpZiAoaWdub3JlQ2xpcHBpbmcpCi0gICAgICAgIHR5cGUgfD0gSGl0VGVz
dFJlcXVlc3Q6Oklnbm9yZUNsaXBwaW5nOwotICAgIGVsc2UgaWYgKCFmcmFtZVZpZXctPnZpc2li
bGVDb250ZW50UmVjdCgpLmludGVyc2VjdHMoSGl0VGVzdExvY2F0aW9uOjpyZWN0Rm9yUG9pbnQo
cG9pbnQsIHRvcFBhZGRpbmcsIHJpZ2h0UGFkZGluZywgYm90dG9tUGFkZGluZywgbGVmdFBhZGRp
bmcpKSkKKyAgICBpZiAoIXJlcXVlc3QuaWdub3JlQ2xpcHBpbmcoKSAmJiAhZnJhbWVWaWV3LT52
aXNpYmxlQ29udGVudFJlY3QoKS5pbnRlcnNlY3RzKEhpdFRlc3RMb2NhdGlvbjo6cmVjdEZvclBv
aW50KHBvaW50LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQ
YWRkaW5nKSkpCiAgICAgICAgIHJldHVybiAwOwotICAgIGlmIChhbGxvd1NoYWRvd0NvbnRlbnQp
Ci0gICAgICAgIHR5cGUgfD0gSGl0VGVzdFJlcXVlc3Q6OkFsbG93U2hhZG93Q29udGVudDsKLQot
ICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QodHlwZSk7CiAKICAgICAvLyBQYXNzaW5nIGEgemVy
byBwYWRkaW5nIHdpbGwgdHJpZ2dlciBhIHJlY3QgaGl0IHRlc3QsIGhvd2V2ZXIgZm9yIHRoZSBw
dXJwb3NlcyBvZiBub2Rlc0Zyb21SZWN0LAogICAgIC8vIHdlIHNwZWNpYWwgaGFuZGxlIHRoaXMg
Y2FzZSBpbiBvcmRlciB0byByZXR1cm4gYSB2YWxpZCBOb2RlTGlzdC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmgKaW5kZXggNzJjODM5OTNiZTA3ZmY4YzI3NjIwMjk5YWEyMTY0OTZjZjdmNTllNy4uMTI2NDM4
ZDcwZWYwMTYxYmMyYWZlOGZjZWE3NjhhNGJjODcwMzdhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgK
QEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudEV2ZW50UXVldWUuaCIKICNpbmNs
dWRlICJEb2N1bWVudFRpbWluZy5oIgogI2luY2x1ZGUgIkZvY3VzRGlyZWN0aW9uLmgiCisjaW5j
bHVkZSAiSGl0VGVzdFJlcXVlc3QuaCIKICNpbmNsdWRlICJJY29uVVJMLmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9yQ291bnRlcnMuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCkBAIC0zODAsMTEgKzM4
MSwxMCBAQCBwdWJsaWM6CiAgICAgICogQHBhcmFtIHJpZ2h0UGFkZGluZyBIb3cgbXVjaCB0byBl
eHBhbmQgdGhlIHJpZ2h0IG9mIHRoZSByZWN0YW5nbGUKICAgICAgKiBAcGFyYW0gYm90dG9tUGFk
ZGluZyBIb3cgbXVjaCB0byBleHBhbmQgdGhlIGJvdHRvbSBvZiB0aGUgcmVjdGFuZ2xlCiAgICAg
ICogQHBhcmFtIGxlZnRQYWRkaW5nIEhvdyBtdWNoIHRvIGV4cGFuZCB0aGUgbGVmdCBvZiB0aGUg
cmVjdGFuZ2xlCi0gICAgICogQHBhcmFtIGlnbm9yZUNsaXBwaW5nIHdoZXRoZXIgb3Igbm90IHRv
IGlnbm9yZSB0aGUgcm9vdCBzY3JvbGwgZnJhbWUgd2hlbiByZXRyaWV2aW5nIHRoZSBlbGVtZW50
LgotICAgICAqICAgICAgICBJZiBmYWxzZSwgdGhpcyBtZXRob2QgcmV0dXJucyBudWxsIGZvciBj
b29yZGluYXRlcyBvdXRzaWRlIG9mIHRoZSB2aWV3cG9ydC4KICAgICAgKi8KLSAgICBQYXNzUmVm
UHRyPE5vZGVMaXN0PiBub2Rlc0Zyb21SZWN0KGludCBjZW50ZXJYLCBpbnQgY2VudGVyWSwgdW5z
aWduZWQgdG9wUGFkZGluZywgdW5zaWduZWQgcmlnaHRQYWRkaW5nLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQg
bGVmdFBhZGRpbmcsIGJvb2wgaWdub3JlQ2xpcHBpbmcsIGJvb2wgYWxsb3dTaGFkb3dDb250ZW50
KSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPE5vZGVMaXN0PiBub2Rlc0Zyb21SZWN0KGludCBjZW50
ZXJYLCBpbnQgY2VudGVyWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFkZGluZywgdW5zaWduZWQgYm90
dG9tUGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBIaXRUZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhpdFR5
cGUgPSBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlKSBj
b25zdDsKICAgICBFbGVtZW50KiBlbGVtZW50RnJvbVBvaW50KGludCB4LCBpbnQgeSkgY29uc3Q7
CiAgICAgUGFzc1JlZlB0cjxSYW5nZT4gY2FyZXRSYW5nZUZyb21Qb2ludChpbnQgeCwgaW50IHkp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKaW5k
ZXggNDdiYmY2Y2Q2MDcwMTQ1MzI5NzkzNGU3NjZmNjIzYjY1MmFjNTIyNC4uOWM1YjEzYzc5MzEw
YjlmYTU0ZTNhNjA3MDVmODU3MGE0MjUzNmYwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q29udGV4dE1lbnVDb250cm9sbGVyLmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIFBhc3NPd25QdHI8
Q29udGV4dE1lbnU+IENvbnRleHRNZW51Q29udHJvbGxlcjo6Y3JlYXRlQ29udGV4dE1lbnUoRXZl
bnQqIGV2ZW50KQogICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KG1vdXNlRXZlbnQtPmFic29sdXRl
TG9jYXRpb24oKSk7CiAKICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZXZlbnQtPnRhcmdldCgpLT50
b05vZGUoKS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSkKLSAgICAgICAgcmVzdWx0ID0gZnJhbWUtPmV2
ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChtb3VzZUV2ZW50LT5hYnNvbHV0ZUxv
Y2F0aW9uKCksIGZhbHNlKTsKKyAgICAgICAgcmVzdWx0ID0gZnJhbWUtPmV2ZW50SGFuZGxlcigp
LT5oaXRUZXN0UmVzdWx0QXRQb2ludChtb3VzZUV2ZW50LT5hYnNvbHV0ZUxvY2F0aW9uKCkpOwog
CiAgICAgaWYgKCFyZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAppbmRleCAwNjU3MTJk
N2E2YjVlN2FjY2QzZDY1ZGIxOTMzZjE5ZTg1NzNmOGZmLi4yZGQzMDZlMDQ5MmFkMTM3MDQxYmNh
MmVjY2E2NDJhYTYyNjM5MjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdD
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNw
cApAQCAtNTYwLDcgKzU2MCw3IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmNhblByb2Nlc3NEcmFn
KERyYWdEYXRhKiBkcmFnRGF0YSkKICAgICBpZiAoIW1fcGFnZS0+bWFpbkZyYW1lKCktPmNvbnRl
bnRSZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXN1bHQgPSBtX3Bh
Z2UtPm1haW5GcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQocG9p
bnQsIHRydWUpOworICAgIHJlc3VsdCA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxl
cigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChwb2ludCwgSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5
IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd1NoYWRvd0Nv
bnRlbnQpOwogCiAgICAgaWYgKCFyZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTc0NCw3ICs3NDQsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpz
dGFydERyYWcoRnJhbWUqIHNyYywgY29uc3QgRHJhZ1N0YXRlJiBzdGF0ZSwgRHJhZ09wZXJhdGlv
bgogICAgIGlmICghc3JjLT52aWV3KCkgfHwgIXNyYy0+Y29udGVudFJlbmRlcmVyKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIEhpdFRlc3RSZXN1bHQgaGl0VGVzdFJlc3VsdCA9IHNy
Yy0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGRyYWdPcmlnaW4sIHRydWUp
OworICAgIEhpdFRlc3RSZXN1bHQgaGl0VGVzdFJlc3VsdCA9IHNyYy0+ZXZlbnRIYW5kbGVyKCkt
PmhpdFRlc3RSZXN1bHRBdFBvaW50KGRyYWdPcmlnaW4sIEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25s
eSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6QWxsb3dTaGFkb3dD
b250ZW50KTsKICAgICBpZiAoIXN0YXRlLm1fZHJhZ1NyYy0+Y29udGFpbnMoaGl0VGVzdFJlc3Vs
dC5pbm5lck5vZGUoKSkpCiAgICAgICAgIC8vIFRoZSBvcmlnaW5hbCBub2RlIGJlaW5nIGRyYWdn
ZWQgaXNuJ3QgdW5kZXIgdGhlIGRyYWcgb3JpZ2luIGFueW1vcmUuLi4gbWF5YmUgaXQgd2FzCiAg
ICAgICAgIC8vIGhpZGRlbiBvciBtb3ZlZCBvdXQgZnJvbSB1bmRlciB0aGUgY3Vyc29yLiBSZWdh
cmRsZXNzLCB3ZSBkb24ndCB3YW50IHRvIHN0YXJ0IGEgZHJhZyBvbgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuY3BwCmluZGV4IGZiNjMxZjdiMTFiODg3N2U1MGY4MjVlNmUxYTg3Mzc5MTVj
ODE2ZGYuLmI2ZjFhMjA0N2RiZmQ1ZTY2MWUwYTQwMTY3ZmYzOGJmMmFhNGRkM2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTEwMDEsNyArMTAwMSw3IEBAIERyYWdTb3Vy
Y2VBY3Rpb24gRXZlbnRIYW5kbGVyOjp1cGRhdGVEcmFnU291cmNlQWN0aW9uc0FsbG93ZWQoKSBj
b25zdAogfQogI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAKLUhpdFRlc3RSZXN1bHQg
RXZlbnRIYW5kbGVyOjpoaXRUZXN0UmVzdWx0QXRQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9p
bnQsIGJvb2wgYWxsb3dTaGFkb3dDb250ZW50LCBib29sIGlnbm9yZUNsaXBwaW5nLCBIaXRUZXN0
U2Nyb2xsYmFycyB0ZXN0U2Nyb2xsYmFycywgSGl0VGVzdFJlcXVlc3Q6OkhpdFRlc3RSZXF1ZXN0
VHlwZSBoaXRUeXBlLCBjb25zdCBMYXlvdXRTaXplJiBwYWRkaW5nKQorSGl0VGVzdFJlc3VsdCBF
dmVudEhhbmRsZXI6OmhpdFRlc3RSZXN1bHRBdFBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2lu
dCwgSGl0VGVzdFJlcXVlc3Q6OkhpdFRlc3RSZXF1ZXN0VHlwZSBoaXRUeXBlLCBjb25zdCBMYXlv
dXRTaXplJiBwYWRkaW5nKQogewogICAgIC8vIFdlIGFsd2F5cyBzZW5kIGhpdFRlc3RSZXN1bHRB
dFBvaW50IHRvIHRoZSBtYWluIGZyYW1lIGlmIHdlIGhhdmUgb25lLAogICAgIC8vIG90aGVyd2lz
ZSB3ZSBtaWdodCBoaXQgYXJlYXMgdGhhdCBhcmUgb2JzY3VyZWQgYnkgaGlnaGVyIGZyYW1lcy4K
QEAgLTEwMTIsNyArMTAxMiw3IEBAIEhpdFRlc3RSZXN1bHQgRXZlbnRIYW5kbGVyOjpoaXRUZXN0
UmVzdWx0QXRQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQsIGJvb2wKICAgICAgICAgICAg
IEZyYW1lVmlldyogbWFpblZpZXcgPSBtYWluRnJhbWUtPnZpZXcoKTsKICAgICAgICAgICAgIGlm
IChmcmFtZVZpZXcgJiYgbWFpblZpZXcpIHsKICAgICAgICAgICAgICAgICBJbnRQb2ludCBtYWlu
RnJhbWVQb2ludCA9IG1haW5WaWV3LT5yb290Vmlld1RvQ29udGVudHMoZnJhbWVWaWV3LT5jb250
ZW50c1RvUm9vdFZpZXcocm91bmRlZEludFBvaW50KHBvaW50KSkpOwotICAgICAgICAgICAgICAg
IHJldHVybiBtYWluRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludCht
YWluRnJhbWVQb2ludCwgYWxsb3dTaGFkb3dDb250ZW50LCBpZ25vcmVDbGlwcGluZywgdGVzdFNj
cm9sbGJhcnMsIGhpdFR5cGUsIHBhZGRpbmcpOworICAgICAgICAgICAgICAgIHJldHVybiBtYWlu
RnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChtYWluRnJhbWVQb2lu
dCwgaGl0VHlwZSwgcGFkZGluZyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBA
IC0xMDIxLDEwICsxMDIxLDcgQEAgSGl0VGVzdFJlc3VsdCBFdmVudEhhbmRsZXI6OmhpdFRlc3RS
ZXN1bHRBdFBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCwgYm9vbAogCiAgICAgaWYgKCFt
X2ZyYW1lLT5jb250ZW50UmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICBp
ZiAoaWdub3JlQ2xpcHBpbmcpCi0gICAgICAgIGhpdFR5cGUgfD0gSGl0VGVzdFJlcXVlc3Q6Okln
bm9yZUNsaXBwaW5nOwotICAgIGlmIChhbGxvd1NoYWRvd0NvbnRlbnQpCi0gICAgICAgIGhpdFR5
cGUgfD0gSGl0VGVzdFJlcXVlc3Q6OkFsbG93U2hhZG93Q29udGVudDsKKwogICAgIEhpdFRlc3RS
ZXF1ZXN0IHJlcXVlc3QoaGl0VHlwZSk7CiAgICAgbV9mcmFtZS0+Y29udGVudFJlbmRlcmVyKCkt
PmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0KTsKIApAQCAtMTA0NywxNCArMTA0NCwxNCBAQCBIaXRU
ZXN0UmVzdWx0IEV2ZW50SGFuZGxlcjo6aGl0VGVzdFJlc3VsdEF0UG9pbnQoY29uc3QgTGF5b3V0
UG9pbnQmIHBvaW50LCBib29sCiAgICAgICAgIGZyYW1lLT5jb250ZW50UmVuZGVyZXIoKS0+aGl0
VGVzdChyZXF1ZXN0LCB3aWRnZXRIaXRUZXN0UmVzdWx0KTsKICAgICAgICAgcmVzdWx0ID0gd2lk
Z2V0SGl0VGVzdFJlc3VsdDsKIAotICAgICAgICBpZiAodGVzdFNjcm9sbGJhcnMgPT0gU2hvdWxk
SGl0VGVzdFNjcm9sbGJhcnMpIHsKKyAgICAgICAgaWYgKHJlcXVlc3QuYWxsb3dzRnJhbWVTY3Jv
bGxiYXJzKCkpIHsKICAgICAgICAgICAgIFNjcm9sbGJhciogZXZlbnRTY3JvbGxiYXIgPSB2aWV3
LT5zY3JvbGxiYXJBdFBvaW50KHJvdW5kZWRJbnRQb2ludChwb2ludCkpOwogICAgICAgICAgICAg
aWYgKGV2ZW50U2Nyb2xsYmFyKQogICAgICAgICAgICAgICAgIHJlc3VsdC5zZXRTY3JvbGxiYXIo
ZXZlbnRTY3JvbGxiYXIpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKCFhbGxvd1NoYWRv
d0NvbnRlbnQpCisgICAgaWYgKCFyZXF1ZXN0LmFsbG93c1NoYWRvd0NvbnRlbnQoKSkKICAgICAg
ICAgcmVzdWx0LnNldFRvTm9uU2hhZG93QW5jZXN0b3IoKTsKIAogICAgIHJldHVybiByZXN1bHQ7
CkBAIC0xNDUyLDcgKzE0NDksNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVz
c0V2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgbW91c2VFdmVudCkKICAgICBtX21vdXNl
RG93bldhc0luU3ViZnJhbWUgPSBmYWxzZTsKIAogICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3Qo
SGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSk7Ci0gICAgLy8gU2F2ZSB0aGUgZG9jdW1lbnQgcG9pbnQg
d2UgZ2VuZXJhdGUgaW4gY2FzZSB0aGUgd2luZG93IGNvb3JkaW5hdGUgaXMgaW52YWxpZGF0ZWQg
Ynkgd2hhdCBoYXBwZW5zIAorICAgIC8vIFNhdmUgdGhlIGRvY3VtZW50IHBvaW50IHdlIGdlbmVy
YXRlIGluIGNhc2UgdGhlIHdpbmRvdyBjb29yZGluYXRlIGlzIGludmFsaWRhdGVkIGJ5IHdoYXQg
aGFwcGVucwogICAgIC8vIHdoZW4gd2UgZGlzcGF0Y2ggdGhlIGV2ZW50LgogICAgIExheW91dFBv
aW50IGRvY3VtZW50UG9pbnQgPSBkb2N1bWVudFBvaW50Rm9yV2luZG93UG9pbnQobV9mcmFtZSwg
bW91c2VFdmVudC5wb3NpdGlvbigpKTsKICAgICBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRz
IG1ldiA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnByZXBhcmVNb3VzZUV2ZW50KHJlcXVlc3QsIGRv
Y3VtZW50UG9pbnQsIG1vdXNlRXZlbnQpOwpAQCAtMjQ1Niw3ICsyNDUzLDcgQEAgYm9vbCBFdmVu
dEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYg
Z2VzdHVyZUV2ZW50KQogCiAgICAgaWYgKCghc2Nyb2xsYmFyICYmICFldmVudFRhcmdldCkgfHwg
IShoaXRUeXBlICYgSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5KSkgewogICAgICAgICBJbnRQb2lu
dCBoaXRUZXN0UG9pbnQgPSBtX2ZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMoYWRqdXN0
ZWRQb2ludCk7Ci0gICAgICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gaGl0VGVzdFJlc3VsdEF0
UG9pbnQoaGl0VGVzdFBvaW50LCBmYWxzZSwgZmFsc2UsIFNob3VsZEhpdFRlc3RTY3JvbGxiYXJz
LCBoaXRUeXBlKTsKKyAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBoaXRUZXN0UmVzdWx0
QXRQb2ludChoaXRUZXN0UG9pbnQsIGhpdFR5cGUgfCBIaXRUZXN0UmVxdWVzdDo6QWxsb3dGcmFt
ZVNjcm9sbGJhcnMpOwogICAgICAgICBldmVudFRhcmdldCA9IHJlc3VsdC50YXJnZXROb2RlKCk7
CiAgICAgICAgIGlmICghc2Nyb2xsYmFyKSB7CiAgICAgICAgICAgICBGcmFtZVZpZXcqIHZpZXcg
PSBtX2ZyYW1lLT52aWV3KCk7CkBAIC0yNTk1LDcgKzI1OTIsNyBAQCBib29sIEV2ZW50SGFuZGxl
cjo6aGFuZGxlR2VzdHVyZUZvclRleHRTZWxlY3Rpb25PckNvbnRleHRNZW51KGNvbnN0IFBsYXRm
b3JtR2VzdAogewogI2lmIE9TKEFORFJPSUQpCiAgICAgSW50UG9pbnQgaGl0VGVzdFBvaW50ID0g
bV9mcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKGdlc3R1cmVFdmVudC5wb3NpdGlvbigp
KTsKLSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGhpdFRlc3RSZXN1bHRBdFBvaW50KGhpdFRl
c3RQb2ludCwgdHJ1ZSk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBoaXRUZXN0UmVzdWx0
QXRQb2ludChoaXRUZXN0UG9pbnQsIEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RS
ZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6QWxsb3dTaGFkb3dDb250ZW50KTsKICAg
ICBOb2RlKiBpbm5lck5vZGUgPSByZXN1bHQudGFyZ2V0Tm9kZSgpOwogICAgIGlmICghcmVzdWx0
LmlzTGl2ZUxpbmsoKSAmJiBpbm5lck5vZGUgJiYgKGlubmVyTm9kZS0+aXNDb250ZW50RWRpdGFi
bGUoKSB8fCBpbm5lck5vZGUtPmlzVGV4dE5vZGUoKSkpIHsKICAgICAgICAgc2VsZWN0Q2xvc2Vz
dFdvcmRGcm9tSGl0VGVzdFJlc3VsdChyZXN1bHQsIERvbnRBcHBlbmRUcmFpbGluZ1doaXRlc3Bh
Y2UpOwpAQCAtMjczNyw5ICsyNzM0LDggQEAgYm9vbCBFdmVudEhhbmRsZXI6OnNob3VsZEFwcGx5
VG91Y2hBZGp1c3RtZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBldmVudCkKIAogYm9v
bCBFdmVudEhhbmRsZXI6OmJlc3RDbGlja2FibGVOb2RlRm9yVG91Y2hQb2ludChjb25zdCBJbnRQ
b2ludCYgdG91Y2hDZW50ZXIsIGNvbnN0IEludFNpemUmIHRvdWNoUmFkaXVzLCBJbnRQb2ludCYg
dGFyZ2V0UG9pbnQsIE5vZGUqJiB0YXJnZXROb2RlKQogewotICAgIEhpdFRlc3RSZXF1ZXN0OjpI
aXRUZXN0UmVxdWVzdFR5cGUgaGl0VHlwZSA9IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhp
dFRlc3RSZXF1ZXN0OjpBY3RpdmU7CiAgICAgSW50UG9pbnQgaGl0VGVzdFBvaW50ID0gbV9mcmFt
ZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHRvdWNoQ2VudGVyKTsKLSAgICBIaXRUZXN0UmVz
dWx0IHJlc3VsdCA9IGhpdFRlc3RSZXN1bHRBdFBvaW50KGhpdFRlc3RQb2ludCwgLyphbGxvd1No
YWRvd0NvbnRlbnQqLyB0cnVlLCAvKmlnbm9yZUNsaXBwaW5nKi8gZmFsc2UsIERvbnRIaXRUZXN0
U2Nyb2xsYmFycywgaGl0VHlwZSwgdG91Y2hSYWRpdXMpOworICAgIEhpdFRlc3RSZXN1bHQgcmVz
dWx0ID0gaGl0VGVzdFJlc3VsdEF0UG9pbnQoaGl0VGVzdFBvaW50LCBIaXRUZXN0UmVxdWVzdDo6
UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93
U2hhZG93Q29udGVudCwgdG91Y2hSYWRpdXMpOwogCiAgICAgSW50UmVjdCB0b3VjaFJlY3QodG91
Y2hDZW50ZXIgLSB0b3VjaFJhZGl1cywgdG91Y2hSYWRpdXMgKyB0b3VjaFJhZGl1cyk7CiAgICAg
UmVmUHRyPFN0YXRpY0hhc2hTZXROb2RlTGlzdD4gbm9kZUxpc3QgPSBTdGF0aWNIYXNoU2V0Tm9k
ZUxpc3Q6OmFkb3B0KHJlc3VsdC5yZWN0QmFzZWRUZXN0UmVzdWx0KCkpOwpAQCAtMjc1Niw5ICsy
NzUyLDggQEAgYm9vbCBFdmVudEhhbmRsZXI6OmJlc3RDbGlja2FibGVOb2RlRm9yVG91Y2hQb2lu
dChjb25zdCBJbnRQb2ludCYgdG91Y2hDZW50ZXIsIGMKIAogYm9vbCBFdmVudEhhbmRsZXI6OmJl
c3RDb250ZXh0TWVudU5vZGVGb3JUb3VjaFBvaW50KGNvbnN0IEludFBvaW50JiB0b3VjaENlbnRl
ciwgY29uc3QgSW50U2l6ZSYgdG91Y2hSYWRpdXMsIEludFBvaW50JiB0YXJnZXRQb2ludCwgTm9k
ZSomIHRhcmdldE5vZGUpCiB7Ci0gICAgSGl0VGVzdFJlcXVlc3Q6OkhpdFRlc3RSZXF1ZXN0VHlw
ZSBoaXRUeXBlID0gSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFj
dGl2ZTsKICAgICBJbnRQb2ludCBoaXRUZXN0UG9pbnQgPSBtX2ZyYW1lLT52aWV3KCktPndpbmRv
d1RvQ29udGVudHModG91Y2hDZW50ZXIpOwotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gaGl0
VGVzdFJlc3VsdEF0UG9pbnQoaGl0VGVzdFBvaW50LCAvKmFsbG93U2hhZG93Q29udGVudCovIHRy
dWUsIC8qaWdub3JlQ2xpcHBpbmcqLyBmYWxzZSwgRG9udEhpdFRlc3RTY3JvbGxiYXJzLCBoaXRU
eXBlLCB0b3VjaFJhZGl1cyk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBoaXRUZXN0UmVz
dWx0QXRQb2ludChoaXRUZXN0UG9pbnQsIEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRl
c3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6QWxsb3dTaGFkb3dDb250ZW50LCB0
b3VjaFJhZGl1cyk7CiAKICAgICBJbnRSZWN0IHRvdWNoUmVjdCh0b3VjaENlbnRlciAtIHRvdWNo
UmFkaXVzLCB0b3VjaFJhZGl1cyArIHRvdWNoUmFkaXVzKTsKICAgICBSZWZQdHI8U3RhdGljSGFz
aFNldE5vZGVMaXN0PiBub2RlTGlzdCA9IFN0YXRpY0hhc2hTZXROb2RlTGlzdDo6YWRvcHQocmVz
dWx0LnJlY3RCYXNlZFRlc3RSZXN1bHQoKSk7CkBAIC0yNzY3LDkgKzI3NjIsOCBAQCBib29sIEV2
ZW50SGFuZGxlcjo6YmVzdENvbnRleHRNZW51Tm9kZUZvclRvdWNoUG9pbnQoY29uc3QgSW50UG9p
bnQmIHRvdWNoQ2VudGVyLAogCiBib29sIEV2ZW50SGFuZGxlcjo6YmVzdFpvb21hYmxlQXJlYUZv
clRvdWNoUG9pbnQoY29uc3QgSW50UG9pbnQmIHRvdWNoQ2VudGVyLCBjb25zdCBJbnRTaXplJiB0
b3VjaFJhZGl1cywgSW50UmVjdCYgdGFyZ2V0QXJlYSwgTm9kZSomIHRhcmdldE5vZGUpCiB7Ci0g
ICAgSGl0VGVzdFJlcXVlc3Q6OkhpdFRlc3RSZXF1ZXN0VHlwZSBoaXRUeXBlID0gSGl0VGVzdFJl
cXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZTsKICAgICBJbnRQb2ludCBo
aXRUZXN0UG9pbnQgPSBtX2ZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHModG91Y2hDZW50
ZXIpOwotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gaGl0VGVzdFJlc3VsdEF0UG9pbnQoaGl0
VGVzdFBvaW50LCAvKmFsbG93U2hhZG93Q29udGVudCovIGZhbHNlLCAvKmlnbm9yZUNsaXBwaW5n
Ki8gZmFsc2UsIERvbnRIaXRUZXN0U2Nyb2xsYmFycywgaGl0VHlwZSwgdG91Y2hSYWRpdXMpOwor
ICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gaGl0VGVzdFJlc3VsdEF0UG9pbnQoaGl0VGVzdFBv
aW50LCBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlLCB0
b3VjaFJhZGl1cyk7CiAKICAgICBJbnRSZWN0IHRvdWNoUmVjdCh0b3VjaENlbnRlciAtIHRvdWNo
UmFkaXVzLCB0b3VjaFJhZGl1cyArIHRvdWNoUmFkaXVzKTsKICAgICBSZWZQdHI8U3RhdGljSGFz
aFNldE5vZGVMaXN0PiBub2RlTGlzdCA9IFN0YXRpY0hhc2hTZXROb2RlTGlzdDo6YWRvcHQocmVz
dWx0LnJlY3RCYXNlZFRlc3RSZXN1bHQoKSk7CkBAIC0zODYyLDcgKzM4NTYsNyBAQCBib29sIEV2
ZW50SGFuZGxlcjo6aGFuZGxlVG91Y2hFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmIGV2
ZW50KQogICAgICAgICBpZiAocG9pbnRTdGF0ZSA9PSBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNo
UHJlc3NlZCkgewogICAgICAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQ7CiAgICAgICAgICAg
ICBpZiAoZnJlc2hUb3VjaEV2ZW50cykgewotICAgICAgICAgICAgICAgIHJlc3VsdCA9IGhpdFRl
c3RSZXN1bHRBdFBvaW50KHBhZ2VQb2ludCwgLyphbGxvd1NoYWRvd0NvbnRlbnQqLyB0cnVlLCBm
YWxzZSwgRG9udEhpdFRlc3RTY3JvbGxiYXJzLCBoaXRUeXBlKTsKKyAgICAgICAgICAgICAgICBy
ZXN1bHQgPSBoaXRUZXN0UmVzdWx0QXRQb2ludChwYWdlUG9pbnQsIGhpdFR5cGUgfCBIaXRUZXN0
UmVxdWVzdDo6QWxsb3dTaGFkb3dDb250ZW50KTsKICAgICAgICAgICAgICAgICBtX29yaWdpbmF0
aW5nVG91Y2hQb2ludFRhcmdldEtleSA9IHRvdWNoUG9pbnRUYXJnZXRLZXk7CiAgICAgICAgICAg
ICB9IGVsc2UgaWYgKG1fb3JpZ2luYXRpbmdUb3VjaFBvaW50RG9jdW1lbnQuZ2V0KCkgJiYgbV9v
cmlnaW5hdGluZ1RvdWNoUG9pbnREb2N1bWVudC0+ZnJhbWUoKSkgewogICAgICAgICAgICAgICAg
IExheW91dFBvaW50IHBhZ2VQb2ludEluT3JpZ2luYXRpbmdEb2N1bWVudCA9IGRvY3VtZW50UG9p
bnRGb3JXaW5kb3dQb2ludChtX29yaWdpbmF0aW5nVG91Y2hQb2ludERvY3VtZW50LT5mcmFtZSgp
LCBwb2ludC5wb3MoKSk7CkBAIC0zODk2LDcgKzM4OTAsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6
aGFuZGxlVG91Y2hFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmIGV2ZW50KQogICAgICAg
ICB9IGVsc2UgaWYgKHBvaW50U3RhdGUgPT0gUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFJlbGVh
c2VkIHx8IHBvaW50U3RhdGUgPT0gUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaENhbmNlbGxlZCkg
ewogICAgICAgICAgICAgLy8gV2Ugb25seSBwZXJmb3JtIGEgaGl0dGVzdCBvbiByZWxlYXNlIG9y
IGNhbmNlbCB0byB1bnNldCA6YWN0aXZlIG9yIDpob3ZlciBzdGF0ZS4KICAgICAgICAgICAgIGlm
ICh0b3VjaFBvaW50VGFyZ2V0S2V5ID09IG1fb3JpZ2luYXRpbmdUb3VjaFBvaW50VGFyZ2V0S2V5
KSB7Ci0gICAgICAgICAgICAgICAgaGl0VGVzdFJlc3VsdEF0UG9pbnQocGFnZVBvaW50LCAvKmFs
bG93U2hhZG93Q29udGVudCovIHRydWUsIGZhbHNlLCBEb250SGl0VGVzdFNjcm9sbGJhcnMsIGhp
dFR5cGUpOworICAgICAgICAgICAgICAgIGhpdFRlc3RSZXN1bHRBdFBvaW50KHBhZ2VQb2ludCwg
aGl0VHlwZSB8IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd1NoYWRvd0NvbnRlbnQpOwogICAgICAgICAg
ICAgICAgIG1fb3JpZ2luYXRpbmdUb3VjaFBvaW50VGFyZ2V0S2V5ID0gMDsKICAgICAgICAgICAg
IH0gZWxzZSBpZiAobV9vcmlnaW5hdGluZ1RvdWNoUG9pbnREb2N1bWVudC5nZXQoKSAmJiBtX29y
aWdpbmF0aW5nVG91Y2hQb2ludERvY3VtZW50LT5mcmFtZSgpKSB7CiAgICAgICAgICAgICAgICAg
TGF5b3V0UG9pbnQgcGFnZVBvaW50SW5PcmlnaW5hdGluZ0RvY3VtZW50ID0gZG9jdW1lbnRQb2lu
dEZvcldpbmRvd1BvaW50KG1fb3JpZ2luYXRpbmdUb3VjaFBvaW50RG9jdW1lbnQtPmZyYW1lKCks
IHBvaW50LnBvcygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCmluZGV4IDNiODM2MDIy
NWI1OGUyNjVhNTVlYjc4ZDkwMWU3N2M0ZDNiNDRlZjkuLjNmYzA3ZjJmYTI1MmY5YzQ1ZjI0ZjFm
NmI1NWU0N2U3YTAwZDc1M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaApAQCAtOTEs
NyArOTEsNiBAQCBleHRlcm4gY29uc3QgaW50IFRleHREcmFnSHlzdGVyZXNpczsKIGV4dGVybiBj
b25zdCBpbnQgR2VuZXJhbERyYWdIeXN0ZXJlc2lzOwogI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NV
UFBPUlQpCiAKLWVudW0gSGl0VGVzdFNjcm9sbGJhcnMgeyBTaG91bGRIaXRUZXN0U2Nyb2xsYmFy
cywgRG9udEhpdFRlc3RTY3JvbGxiYXJzIH07CiBlbnVtIEFwcGVuZFRyYWlsaW5nV2hpdGVzcGFj
ZSB7IFNob3VsZEFwcGVuZFRyYWlsaW5nV2hpdGVzcGFjZSwgRG9udEFwcGVuZFRyYWlsaW5nV2hp
dGVzcGFjZSB9OwogZW51bSBDaGVja0RyYWdIeXN0ZXJlc2lzIHsgU2hvdWxkQ2hlY2tEcmFnSHlz
dGVyZXNpcywgRG9udENoZWNrRHJhZ0h5c3RlcmVzaXMgfTsKIApAQCAtMTI3LDggKzEyNiw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGRpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50U29vbigpOwogICAg
IHZvaWQgZGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRTb29uSW5RdWFkKGNvbnN0IEZsb2F0UXVh
ZCYpOwogCi0gICAgSGl0VGVzdFJlc3VsdCBoaXRUZXN0UmVzdWx0QXRQb2ludChjb25zdCBMYXlv
dXRQb2ludCYsIGJvb2wgYWxsb3dTaGFkb3dDb250ZW50LCBib29sIGlnbm9yZUNsaXBwaW5nID0g
ZmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIaXRUZXN0U2Ny
b2xsYmFycyBzY3JvbGxiYXJzID0gRG9udEhpdFRlc3RTY3JvbGxiYXJzLAorICAgIEhpdFRlc3RS
ZXN1bHQgaGl0VGVzdFJlc3VsdEF0UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGl0VGVzdFJlcXVlc3Q6OkhpdFRlc3RSZXF1
ZXN0VHlwZSBoaXRUeXBlID0gSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVl
c3Q6OkFjdGl2ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IExheW91dFNpemUmIHBhZGRpbmcgPSBMYXlvdXRTaXplKCkpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZvY3VzQ29udHJvbGxlci5jcHAKaW5kZXggYWFkMGM3MWFkMzIzMTNjMjdhNzM1ZmJhZjlhMjY1
ZGIzMzY1OWIxYy4uNmY1OWUxM2U1ZjkwYTQwYWI0ZDdkZTVmMDBjMjMwZjJmOGExNzcxYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcApAQCAtNzE3LDcgKzcxNyw3IEBA
IHN0YXRpYyB2b2lkIHVwZGF0ZUZvY3VzQ2FuZGlkYXRlSWZOZWVkZWQoRm9jdXNEaXJlY3Rpb24g
ZGlyZWN0aW9uLCBjb25zdCBGb2N1c0NhCiAgICAgICAgIC8vIElmIDIgbm9kZXMgYXJlIGludGVy
c2VjdGluZywgZG8gaGl0IHRlc3QgdG8gZmluZCB3aGljaCBub2RlIGluIG9uIHRvcC4KICAgICAg
ICAgTGF5b3V0VW5pdCB4ID0gaW50ZXJzZWN0aW9uUmVjdC54KCkgKyBpbnRlcnNlY3Rpb25SZWN0
LndpZHRoKCkgLyAyOwogICAgICAgICBMYXlvdXRVbml0IHkgPSBpbnRlcnNlY3Rpb25SZWN0Lnko
KSArIGludGVyc2VjdGlvblJlY3QuaGVpZ2h0KCkgLyAyOwotICAgICAgICBIaXRUZXN0UmVzdWx0
IHJlc3VsdCA9IGNhbmRpZGF0ZS52aXNpYmxlTm9kZS0+ZG9jdW1lbnQoKS0+cGFnZSgpLT5tYWlu
RnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KEludFBvaW50KHgs
IHkpLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gY2FuZGlk
YXRlLnZpc2libGVOb2RlLT5kb2N1bWVudCgpLT5wYWdlKCktPm1haW5GcmFtZSgpLT5ldmVudEhh
bmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoSW50UG9pbnQoeCwgeSksIEhpdFRlc3RSZXF1
ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6
SWdub3JlQ2xpcHBpbmcpOwogICAgICAgICBpZiAoY2FuZGlkYXRlLnZpc2libGVOb2RlLT5jb250
YWlucyhyZXN1bHQuaW5uZXJOb2RlKCkpKSB7CiAgICAgICAgICAgICBjbG9zZXN0ID0gY2FuZGlk
YXRlOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCBmNmZlYjJi
OWVhYmU2NjU1NzMyNjE2NGZmYTM1NzhkNzU1OWMwM2ZiLi4xMjM3ZmY5ZTQwZjkwOTdmNWMxN2Mz
ZmMyNzdmYzkwYTA4MzgzZDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtNzIxLDcgKzcyMSw3
IEBAIFN0cmluZyBGcmFtZTo6ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhjb25zdCBT
dHJpbmcmIHN0cikgY29uc3QKIAogVmlzaWJsZVBvc2l0aW9uIEZyYW1lOjp2aXNpYmxlUG9zaXRp
b25Gb3JQb2ludChjb25zdCBJbnRQb2ludCYgZnJhbWVQb2ludCkKIHsKLSAgICBIaXRUZXN0UmVz
dWx0IHJlc3VsdCA9IGV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChmcmFtZVBv
aW50LCB0cnVlKTsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGV2ZW50SGFuZGxlcigpLT5o
aXRUZXN0UmVzdWx0QXRQb2ludChmcmFtZVBvaW50LCBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkg
fCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93U2hhZG93Q29u
dGVudCk7CiAgICAgTm9kZSogbm9kZSA9IHJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKTsKICAg
ICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKQEAgLTc0Myw3
ICs3NDMsNyBAQCBEb2N1bWVudCogRnJhbWU6OmRvY3VtZW50QXRQb2ludChjb25zdCBJbnRQb2lu
dCYgcG9pbnQpCiAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBIaXRUZXN0UmVzdWx0KHB0KTsK
IAogICAgIGlmIChjb250ZW50UmVuZGVyZXIoKSkKLSAgICAgICAgcmVzdWx0ID0gZXZlbnRIYW5k
bGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KHB0LCBmYWxzZSk7CisgICAgICAgIHJlc3VsdCA9
IGV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChwdCk7CiAgICAgcmV0dXJuIHJl
c3VsdC5pbm5lck5vZGUoKSA/IHJlc3VsdC5pbm5lck5vZGUoKS0+ZG9jdW1lbnQoKSA6IDA7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVG91Y2hEaXNhbWJpZ3VhdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1RvdWNoRGlzYW1iaWd1YXRpb24uY3BwCmluZGV4IDg5
ZGE3YzQ5ZGEwZTkyYTIxZGZhM2U5OWYwYzMwNDk4YjQ5MzczOGQuLjA4YjM1MzhjYjZjZWI5MWQw
MTMwOWMzMThmN2M5NmMyNWRiNjA4MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
VG91Y2hEaXNhbWJpZ3VhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Ub3VjaERp
c2FtYmlndWF0aW9uLmNwcApAQCAtOTgsNyArOTgsNyBAQCB2b2lkIGZpbmRHb29kVG91Y2hUYXJn
ZXRzKGNvbnN0IEludFJlY3QmIHRvdWNoQm94LCBGcmFtZSogbWFpbkZyYW1lLCBWZWN0b3I8SW50
UgogICAgIEludFBvaW50IHRvdWNoUG9pbnQgPSB0b3VjaEJveC5jZW50ZXIoKTsKICAgICBJbnRQ
b2ludCBjb250ZW50c1BvaW50ID0gbWFpbkZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMo
dG91Y2hQb2ludCk7CiAKLSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IG1haW5GcmFtZS0+ZXZl
bnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGNvbnRlbnRzUG9pbnQsIGZhbHNlLCBm
YWxzZSwgRG9udEhpdFRlc3RTY3JvbGxiYXJzLCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0
VGVzdFJlcXVlc3Q6OlJlYWRPbmx5LCBJbnRTaXplKHBhZGRpbmcsIHBhZGRpbmcpKTsKKyAgICBI
aXRUZXN0UmVzdWx0IHJlc3VsdCA9IG1haW5GcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RS
ZXN1bHRBdFBvaW50KGNvbnRlbnRzUG9pbnQsIEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhp
dFRlc3RSZXF1ZXN0OjpBY3RpdmUsIEludFNpemUocGFkZGluZywgcGFkZGluZykpOwogICAgIGNv
bnN0IExpc3RIYXNoU2V0PFJlZlB0cjxOb2RlPiA+JiBoaXRSZXN1bHRzID0gcmVzdWx0LnJlY3RC
YXNlZFRlc3RSZXN1bHQoKTsKIAogICAgIC8vIEJsYWNrbGlzdCBub2RlcyB0aGF0IGFyZSBjb250
YWluZXIgb2YgZGlzYW1iaWd1YXRlZCBub2Rlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9IaXRUZXN0UmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hp
dFRlc3RSZXF1ZXN0LmgKaW5kZXggZDkzN2MyNTA0NjkzOTZiNzRiNzQ0ZTJkMjAwMzY0YTlkN2Iw
NDE3MC4uMTkxY2M1YzczZWE3NjgzYjZlNTFlNDUxMjY4YzIzMTEzNzliYjI3ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXF1ZXN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXF1ZXN0LmgKQEAgLTM1LDcgKzM1LDggQEAgcHVi
bGljOgogICAgICAgICBJZ25vcmVDbGlwcGluZyA9IDEgPDwgNSwKICAgICAgICAgU1ZHQ2xpcENv
bnRlbnQgPSAxIDw8IDYsCiAgICAgICAgIFRvdWNoRXZlbnQgPSAxIDw8IDcsCi0gICAgICAgIEFs
bG93U2hhZG93Q29udGVudCA9IDEgPDwgOAorICAgICAgICBBbGxvd1NoYWRvd0NvbnRlbnQgPSAx
IDw8IDgsCisgICAgICAgIEFsbG93RnJhbWVTY3JvbGxiYXJzID0gMSA8PCA5CiAgICAgfTsKIAog
ICAgIHR5cGVkZWYgdW5zaWduZWQgSGl0VGVzdFJlcXVlc3RUeXBlOwpAQCAtNTQsNiArNTUsNyBA
QCBwdWJsaWM6CiAgICAgYm9vbCB0b3VjaEV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0
VHlwZSAmIFRvdWNoRXZlbnQ7IH0KICAgICBib29sIG1vdXNlRXZlbnQoKSBjb25zdCB7IHJldHVy
biAhdG91Y2hFdmVudCgpOyB9CiAgICAgYm9vbCBhbGxvd3NTaGFkb3dDb250ZW50KCkgY29uc3Qg
eyByZXR1cm4gbV9yZXF1ZXN0VHlwZSAmIEFsbG93U2hhZG93Q29udGVudDsgfQorICAgIGJvb2wg
YWxsb3dzRnJhbWVTY3JvbGxiYXJzKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0VHlwZSAmIEFs
bG93RnJhbWVTY3JvbGxiYXJzOyB9CiAKICAgICAvLyBDb252ZW5pZW5jZSBmdW5jdGlvbnMKICAg
ICBib29sIHRvdWNoTW92ZSgpIGNvbnN0IHsgcmV0dXJuIG1vdmUoKSAmJiB0b3VjaEV2ZW50KCk7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA3NzFmMGNjZjQyMGE5YzQ5
YWFiOWMzZjJkYzViMGY0YWJhMTcwMDJhLi4wYzNhMmQxNzAxM2RhMmRhMTdiOGFlNGZkMTJkOTRm
NmMyZDJhYzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xMzg1LDcg
KzEzODUsMTMgQEAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gSW50ZXJuYWxzOjpub2Rlc0Zyb21SZWN0
KERvY3VtZW50KiBkb2N1bWVudCwgaW50IHgsIGludCB5LAogICAgICAgICByZXR1cm4gMDsKICAg
ICB9CiAKLSAgICByZXR1cm4gZG9jdW1lbnQtPm5vZGVzRnJvbVJlY3QoeCwgeSwgdG9wUGFkZGlu
ZywgcmlnaHRQYWRkaW5nLCBib3R0b21QYWRkaW5nLCBsZWZ0UGFkZGluZywgaWdub3JlQ2xpcHBp
bmcsIGFsbG93U2hhZG93Q29udGVudCk7CisgICAgSGl0VGVzdFJlcXVlc3Q6OkhpdFRlc3RSZXF1
ZXN0VHlwZSBoaXRUeXBlID0gSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVl
c3Q6OkFjdGl2ZTsKKyAgICBpZiAoaWdub3JlQ2xpcHBpbmcpCisgICAgICAgIGhpdFR5cGUgfD0g
SGl0VGVzdFJlcXVlc3Q6Oklnbm9yZUNsaXBwaW5nOworICAgIGlmIChhbGxvd1NoYWRvd0NvbnRl
bnQpCisgICAgICAgIGhpdFR5cGUgfD0gSGl0VGVzdFJlcXVlc3Q6OkFsbG93U2hhZG93Q29udGVu
dDsKKworICAgIHJldHVybiBkb2N1bWVudC0+bm9kZXNGcm9tUmVjdCh4LCB5LCB0b3BQYWRkaW5n
LCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRkaW5nLCBoaXRUeXBlKTsKIH0K
IAogdm9pZCBJbnRlcm5hbHM6OmVtaXRJbnNwZWN0b3JEaWRCZWdpbkZyYW1lKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCmluZGV4IGY2NjI4N2Y1MzAxNmRiZjUyOWM5
NzFlMzNkMGI0OTU4MmRkYzk0NWMuLjNjMDZjMDBkNDg4ZmIxM2FkNDVlYTc2ZjE5NDE1NDdiOTIw
OGQwNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcApAQCAtMjcw
MSw3ICsyNzAxLDcgQEAgUGFzc1JlZlB0cjxOb2RlPiBXZWJQYWdlUHJpdmF0ZTo6Y29udGV4dE5v
ZGUoVGFyZ2V0RGV0ZWN0aW9uU3RyYXRlZ3kgc3RyYXRlZ3kpCiAgICAgZWxzZQogICAgICAgICBj
b250ZW50UG9zID0gbWFwRnJvbVZpZXdwb3J0VG9Db250ZW50cyhtX2xhc3RNb3VzZUV2ZW50LnBv
c2l0aW9uKCkpOwogCi0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBldmVudEhhbmRsZXItPmhp
dFRlc3RSZXN1bHRBdFBvaW50KGNvbnRlbnRQb3MsIGZhbHNlIC8qYWxsb3dTaGFkb3dDb250ZW50
Ki8pOworICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZXZlbnRIYW5kbGVyLT5oaXRUZXN0UmVz
dWx0QXRQb2ludChjb250ZW50UG9zKTsKICAgICByZXR1cm4gcmVzdWx0LmlubmVyTm9kZSgpOwog
fQogCkBAIC0yNzcyLDcgKzI3NzIsNyBAQCBOb2RlKiBXZWJQYWdlUHJpdmF0ZTo6bm9kZUZvclpv
b21VbmRlclBvaW50KGNvbnN0IEludFBvaW50JiBkb2N1bWVudFBvaW50KQogICAgIGlmICghbV9t
YWluRnJhbWUpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQg
PSBtX21haW5GcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGRvY3Vt
ZW50UG9pbnQsIGZhbHNlKTsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IG1fbWFpbkZyYW1l
LT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoZG9jdW1lbnRQb2ludCk7CiAK
ICAgICBOb2RlKiBub2RlID0gcmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpOwogCkBAIC00MDA5
LDcgKzQwMDksNyBAQCBib29sIFdlYlBhZ2VQcml2YXRlOjpoYW5kbGVNb3VzZUV2ZW50KFBsYXRm
b3JtTW91c2VFdmVudCYgbW91c2VFdmVudCkKICAgICB9CiAKICAgICBpZiAoIW5vZGUpIHsKLSAg
ICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBldmVudEhhbmRsZXItPmhpdFRlc3RSZXN1bHRB
dFBvaW50KG1hcEZyb21WaWV3cG9ydFRvQ29udGVudHMobW91c2VFdmVudC5wb3NpdGlvbigpKSwg
ZmFsc2UgLyphbGxvd1NoYWRvd0NvbnRlbnQqLyk7CisgICAgICAgIEhpdFRlc3RSZXN1bHQgcmVz
dWx0ID0gZXZlbnRIYW5kbGVyLT5oaXRUZXN0UmVzdWx0QXRQb2ludChtYXBGcm9tVmlld3BvcnRU
b0NvbnRlbnRzKG1vdXNlRXZlbnQucG9zaXRpb24oKSkpOwogICAgICAgICBub2RlID0gcmVzdWx0
LmlubmVyTm9kZSgpOwogICAgIH0KIApAQCAtNDk4NSw3ICs0OTg1LDcgQEAgV2ViRE9NRG9jdW1l
bnQgV2ViUGFnZTo6ZG9jdW1lbnQoKSBjb25zdAogCiBXZWJET01Ob2RlIFdlYlBhZ2U6Om5vZGVB
dERvY3VtZW50UG9pbnQoY29uc3QgUGxhdGZvcm06OkludFBvaW50JiBkb2N1bWVudFBvaW50KQog
ewotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZC0+bV9tYWluRnJhbWUtPmV2ZW50SGFuZGxl
cigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChXZWJDb3JlOjpJbnRQb2ludChkb2N1bWVudFBvaW50
KSwgZmFsc2UpOworICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZC0+bV9tYWluRnJhbWUtPmV2
ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChXZWJDb3JlOjpJbnRQb2ludChkb2N1
bWVudFBvaW50KSk7CiAgICAgTm9kZSogbm9kZSA9IHJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUo
KTsKICAgICByZXR1cm4gV2ViRE9NTm9kZShub2RlKTsKIH0KQEAgLTYyNDMsNyArNjI0Myw3IEBA
IGNvbnN0IEhpdFRlc3RSZXN1bHQmIFdlYlBhZ2VQcml2YXRlOjpoaXRUZXN0UmVzdWx0KGNvbnN0
IEludFBvaW50JiBjb250ZW50UG9zKQogewogICAgIGlmIChtX2NhY2hlZEhpdFRlc3RDb250ZW50
UG9zICE9IGNvbnRlbnRQb3MpIHsKICAgICAgICAgbV9jYWNoZWRIaXRUZXN0Q29udGVudFBvcyA9
IGNvbnRlbnRQb3M7Ci0gICAgICAgIG1fY2FjaGVkSGl0VGVzdFJlc3VsdCA9IG1fbWFpbkZyYW1l
LT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQobV9jYWNoZWRIaXRUZXN0Q29u
dGVudFBvcywgdHJ1ZSAvKmFsbG93U2hhZG93Q29udGVudCovKTsKKyAgICAgICAgbV9jYWNoZWRI
aXRUZXN0UmVzdWx0ID0gbV9tYWluRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0
QXRQb2ludChtX2NhY2hlZEhpdFRlc3RDb250ZW50UG9zLCBIaXRUZXN0UmVzdWx0OjpSZWFkT25s
eSB8IEhpdFRlc3RSZXN1bHQ6OkFjdGl2ZSB8IEhpdFRlc3RSZXN1bHQ6OkFsbG93U2hhZG93Q29u
dGVudCk7CiAgICAgfQogCiAgICAgcmV0dXJuIG1fY2FjaGVkSGl0VGVzdFJlc3VsdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L1NlbGVjdGlvbkhh
bmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvU2VsZWN0
aW9uSGFuZGxlci5jcHAKaW5kZXggZTFkZWU4OTE2ODdhNWE0MDI5NjA0YmUwODZlYTRmNGMyNGVl
ZjBjNS4uYTUxMzRkMjE2YzI4ZmY2MWZjN2M4NzQ4YjVmZjQxZDc5MGQyM2VlMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvU2VsZWN0aW9uSGFuZGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvU2VsZWN0
aW9uSGFuZGxlci5jcHAKQEAgLTE2Nyw3ICsxNjcsNyBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9u
IHZpc2libGVQb3NpdGlvbkZvclBvaW50SWdub3JpbmdDbGlwcGluZyhjb25zdCBGcmFtZSYgZnJh
bQogICAgIC8vIG91dHNpZGUgdGhlIHZpc2libGUgcmVjdC4gVG8gd29yayBhcm91bmQgdGhlIGJ1
ZywgdGhpcyBpcyBhIGNvcHkgb2YKICAgICAvLyB2aXNpYmxlUG9zaXRpb25BdFBvaW50IHdoaWNo
IHdoaWNoIHBhc3NlcyBpZ25vcmVDbGlwcGluZz10cnVlLgogICAgIC8vIFNlZSBSSU0gQnVnICM0
MzE1LgotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZnJhbWUuZXZlbnRIYW5kbGVyKCktPmhp
dFRlc3RSZXN1bHRBdFBvaW50KGZyYW1lUG9pbnQsIHRydWUgLyogYWxsb3dTaGFkb3dDb250ZW50
ICovLCB0cnVlIC8qIGlnbm9yZUNsaXBwaW5nICovKTsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3Vs
dCA9IGZyYW1lLmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChmcmFtZVBvaW50
LCBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0
VGVzdFJlcXVlc3Q6OkFsbG93U2hhZG93Q29udGVudCB8IEhpdFRlc3RSZXF1ZXN0OjpJZ25vcmVD
bGlwcGluZyk7CiAKICAgICBOb2RlKiBub2RlID0gcmVzdWx0LmlubmVyTm9kZSgpOwogICAgIGlm
ICghbm9kZSB8fCBub2RlLT5kb2N1bWVudCgpICE9IGZyYW1lLmRvY3VtZW50KCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Db250ZXh0TWVudUNsaWVudEltcGwuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ29udGV4dE1lbnVDbGllbnRJbXBsLmNwcApp
bmRleCBkMzY1YmRlYmZjZjFmNWYxZDgyMzI5NGRmZDY0NTkyODQzMDJhMjEwLi4zZjAxZmNmNGYy
N2I3ZTgyODdiNDc4YmEwMzgzNjY0MDllMjZmNjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9Db250ZXh0TWVudUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0NvbnRleHRNZW51Q2xpZW50SW1wbC5jcHAKQEAgLTEyMSw3ICsxMjEs
NyBAQCBzdGF0aWMgU3RyaW5nIHNlbGVjdE1pc3NwZWxsZWRXb3JkKGNvbnN0IENvbnRleHRNZW51
KiBkZWZhdWx0TWVudSwgRnJhbWUqIHNlbGVjdAogCiAgICAgLy8gU2VsZWN0aW9uIGlzIGVtcHR5
LCBzbyBjaGFuZ2UgdGhlIHNlbGVjdGlvbiB0byB0aGUgd29yZCB1bmRlciB0aGUgY3Vyc29yLgog
ICAgIEhpdFRlc3RSZXN1bHQgaGl0VGVzdFJlc3VsdCA9IHNlbGVjdGVkRnJhbWUtPmV2ZW50SGFu
ZGxlcigpLT4KLSAgICAgICAgaGl0VGVzdFJlc3VsdEF0UG9pbnQoc2VsZWN0ZWRGcmFtZS0+cGFn
ZSgpLT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKS0+aGl0VGVzdFJlc3VsdCgpLnBvaW50SW5Jbm5l
ck5vZGVGcmFtZSgpLCB0cnVlKTsKKyAgICAgICAgaGl0VGVzdFJlc3VsdEF0UG9pbnQoc2VsZWN0
ZWRGcmFtZS0+cGFnZSgpLT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKS0+aGl0VGVzdFJlc3VsdCgp
LnBvaW50SW5Jbm5lck5vZGVGcmFtZSgpLCBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRU
ZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93U2hhZG93Q29udGVudCk7
CiAgICAgTm9kZSogaW5uZXJOb2RlID0gaGl0VGVzdFJlc3VsdC5pbm5lck5vZGUoKTsKICAgICBW
aXNpYmxlUG9zaXRpb24gcG9zKGlubmVyTm9kZS0+cmVuZGVyZXIoKS0+cG9zaXRpb25Gb3JQb2lu
dCgKICAgICAgICAgaGl0VGVzdFJlc3VsdC5sb2NhbFBvaW50KCkpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCmluZGV4IGU4
YTBiMjU4NmZlZDVlYzgwYzFmNzk2ZTg5NDZmZjZiNjdmYmZlOWUuLjQ5OWRkYTAzZTlkYTc3OWVh
NzQzZjFhYWQ2ZDcxZWM4YjAzMjA2MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcApAQCAtMTAwOCw4ICsxMDA4LDcgQEAg
dm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbigKICAgICAgICAgICAgICAgICBpZiAoZXZlbnQtPmlzTW91c2VFdmVudCgpKSB7
CiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE1vdXNlRXZlbnQqIG1vdXNlRXZlbnQgPQogICAg
ICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgTW91c2VFdmVudCo+KGV2ZW50
KTsKLSAgICAgICAgICAgICAgICAgICAgbm9kZSA9IG1fd2ViRnJhbWUtPmZyYW1lKCktPmV2ZW50
SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludCgKLSAgICAgICAgICAgICAgICAgICAgICAg
IG1vdXNlRXZlbnQtPmFic29sdXRlTG9jYXRpb24oKSwgZmFsc2UpLmlubmVyTm9uU2hhcmVkTm9k
ZSgpOworICAgICAgICAgICAgICAgICAgICBub2RlID0gbV93ZWJGcmFtZS0+ZnJhbWUoKS0+ZXZl
bnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KG1vdXNlRXZlbnQtPmFic29sdXRlTG9j
YXRpb24oKSkuaW5uZXJOb25TaGFyZWROb2RlKCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCmluZGV4IGZjOGEwNzRhMzE1YTNjNDI1OWM2MDU2MTk2
MjM3MDMyNmM2ZWIzM2UuLjZmM2Q5MjllZWU3MGVmYTY4NjAxY2FiYWUyMmYxMDg3MTc2NDk4NTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcApAQCAtMTE4
MSw3ICsxMTgxLDcgQEAgc2l6ZV90IFdlYkZyYW1lSW1wbDo6Y2hhcmFjdGVySW5kZXhGb3JQb2lu
dChjb25zdCBXZWJQb2ludCYgd2ViUG9pbnQpIGNvbnN0CiAgICAgICAgIHJldHVybiBub3RGb3Vu
ZDsKIAogICAgIEludFBvaW50IHBvaW50ID0gZnJhbWUoKS0+dmlldygpLT53aW5kb3dUb0NvbnRl
bnRzKHdlYlBvaW50KTsKLSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGZyYW1lKCktPmV2ZW50
SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChwb2ludCwgZmFsc2UpOworICAgIEhpdFRl
c3RSZXN1bHQgcmVzdWx0ID0gZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRB
dFBvaW50KHBvaW50KTsKICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gZnJhbWUoKS0+cmFuZ2VG
b3JQb2ludChyZXN1bHQucm91bmRlZFBvaW50SW5Jbm5lck5vZGVGcmFtZSgpKTsKICAgICBpZiAo
IXJhbmdlKQogICAgICAgICByZXR1cm4gbm90Rm91bmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwCmluZGV4IGJhZDNmODEx
YzAwNzliYjk5NTA4NzQwNDMxMTIxODFlMzVjNzM5ZDMuLjE4MDAwMmUzYmZhMmMwNjA0ZmY1NTIw
YzcxNGYwMjY5YzZmMDhjZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwCkBAIC00NjIsNyArNDYyLDcgQEAgYm9vbCBX
ZWJQbHVnaW5Db250YWluZXJJbXBsOjppc1JlY3RUb3Btb3N0KGNvbnN0IFdlYlJlY3QmIHJlY3Qp
CiAgICAgTGF5b3V0UG9pbnQgY2VudGVyID0gZG9jdW1lbnRSZWN0LmNlbnRlcigpOwogICAgIC8v
IE1ha2UgdGhlIHJlY3Qgd2UncmUgY2hlY2tpbmcgKHRoZSBwb2ludCBzdXJyb3VuZGVkIGJ5IHBh
ZGRpbmcgcmVjdHMpIGNvbnRhaW5lZCBpbnNpZGUgdGhlIHJlcXVlc3RlZCByZWN0LiAoTm90ZSB0
aGF0IC0xLzIgaXMgMC4pCiAgICAgTGF5b3V0U2l6ZSBwYWRkaW5nKChkb2N1bWVudFJlY3Qud2lk
dGgoKSAtIDEpIC8gMiwgKGRvY3VtZW50UmVjdC5oZWlnaHQoKSAtIDEpIC8gMik7Ci0gICAgSGl0
VGVzdFJlc3VsdCByZXN1bHQgPSBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRB
dFBvaW50KGNlbnRlciwgZmFsc2UsIGZhbHNlLCBEb250SGl0VGVzdFNjcm9sbGJhcnMsIEhpdFRl
c3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUsIHBhZGRpbmcpOwor
ICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0
UmVzdWx0QXRQb2ludChjZW50ZXIsIEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RS
ZXF1ZXN0OjpBY3RpdmUsIHBhZGRpbmcpOwogICAgIGNvbnN0IEhpdFRlc3RSZXN1bHQ6Ok5vZGVT
ZXQmIG5vZGVzID0gcmVzdWx0LnJlY3RCYXNlZFRlc3RSZXN1bHQoKTsKICAgICBpZiAobm9kZXMu
c2l6ZSgpICE9IDEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCAwNTQxZjMzYTZmNTg0OWFmYTg4ZjdmODU5MjJi
YzdiY2M3MjYyNzg3Li44MzljZTM0ZDcxMTE5OWI2N2E2MDY4NTIyY2NlZDkwNGZjMGI3NjQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC01NjksNyAr
NTY5LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6aGFuZGxlTW91c2VEb3duKEZyYW1lJiBtYWluRnJh
bWUsIGNvbnN0IFdlYk1vdXNlRXZlbnQmIGV2ZW50KQogICAgIGlmIChldmVudC5idXR0b24gPT0g
V2ViTW91c2VFdmVudDo6QnV0dG9uTGVmdCkgewogICAgICAgICBJbnRQb2ludCBwb2ludChldmVu
dC54LCBldmVudC55KTsKICAgICAgICAgcG9pbnQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3
KCktPndpbmRvd1RvQ29udGVudHMocG9pbnQpOwotICAgICAgICBIaXRUZXN0UmVzdWx0IHJlc3Vs
dChtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9p
bnQocG9pbnQsIGZhbHNlKSk7CisgICAgICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KG1fcGFnZS0+
bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChwb2ludCkp
OwogICAgICAgICBOb2RlKiBoaXROb2RlID0gcmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpOwog
CiAgICAgICAgIC8vIFRha2UgY2FwdHVyZSBvbiBhIG1vdXNlIGRvd24gb24gYSBwbHVnaW4gc28g
d2UgY2FuIHNlbmQgaXQgbW91c2UgZXZlbnRzLgpAQCAtMTA5MSw5ICsxMDkxLDggQEAgV2ViUmVj
dCBXZWJWaWV3SW1wbDo6Y29tcHV0ZUJsb2NrQm91bmRzKGNvbnN0IFdlYlJlY3QmIHJlY3QsIEF1
dG9ab29tVHlwZSB6b29tVHkKIAogICAgIC8vIFVzZSB0aGUgcmVjdC1iYXNlZCBoaXQgdGVzdCB0
byBmaW5kIHRoZSBub2RlLgogICAgIEludFBvaW50IHBvaW50ID0gbWFpbkZyYW1lSW1wbCgpLT5m
cmFtZVZpZXcoKS0+d2luZG93VG9Db250ZW50cyhJbnRQb2ludChyZWN0LngsIHJlY3QueSkpOwot
ICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gbWFpbkZyYW1lSW1wbCgpLT5mcmFtZSgpLT5ldmVu
dEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQocG9pbnQsCi0gICAgICAgICAgICBmYWxz
ZSwgem9vbVR5cGUgPT0gRmluZEluUGFnZSwgRG9udEhpdFRlc3RTY3JvbGxiYXJzLCBIaXRUZXN0
UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5LAotICAgICAgICAgICAg
SW50U2l6ZShyZWN0LndpZHRoLCByZWN0LmhlaWdodCkpOworICAgIEhpdFRlc3RSZXF1ZXN0OjpI
aXRUZXN0UmVxdWVzdFR5cGUgaGl0VHlwZSA9IEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhp
dFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCAoKHpvb21UeXBlID09IEZpbmRJblBhZ2UpID8gSGl0VGVz
dFJlcXVlc3Q6Oklnbm9yZUNsaXBwaW5nIDogMCk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQg
PSBtYWluRnJhbWVJbXBsKCktPmZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0
QXRQb2ludChwb2ludCwgaGl0VHlwZSwgSW50U2l6ZShyZWN0LndpZHRoLCByZWN0LmhlaWdodCkp
OwogCiAgICAgTm9kZSogbm9kZSA9IHJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKTsKICAgICBp
ZiAoIW5vZGUpCkBAIC0xMjg1LDggKzEyODQsNyBAQCBOb2RlKiBXZWJWaWV3SW1wbDo6YmVzdFRv
dWNoTGlua05vZGUoY29uc3QgV2ViR2VzdHVyZUV2ZW50JiB0b3VjaEV2ZW50KQogI2VuZGlmCiAK
ICAgICBJbnRQb2ludCBoaXRUZXN0UG9pbnQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCkt
PndpbmRvd1RvQ29udGVudHModG91Y2hFdmVudExvY2F0aW9uKTsKLSAgICBIaXRUZXN0UmVzdWx0
IHJlc3VsdCA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVz
dWx0QXRQb2ludCgKLSAgICAgICAgaGl0VGVzdFBvaW50LCBmYWxzZSwgZmFsc2UsIERvbnRIaXRU
ZXN0U2Nyb2xsYmFycywgSGl0VGVzdFJlcXVlc3Q6OlRvdWNoRXZlbnQpOworICAgIEhpdFRlc3RS
ZXN1bHQgcmVzdWx0ID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRl
c3RSZXN1bHRBdFBvaW50KGhpdFRlc3RQb2ludCwgSGl0VGVzdFJlcXVlc3Q6OlRvdWNoRXZlbnQp
OwogICAgIGJlc3RUb3VjaE5vZGUgPSByZXN1bHQudGFyZ2V0Tm9kZSgpOwogCiAgICAgLy8gTWFr
ZSBzdXJlIG91ciBoaWdobGlnaHQgY2FuZGlkYXRlIHVzZXMgYSBoYW5kIGN1cnNvciBhcyBhIGhl
dXJpc3RpYyB0bwpAQCAtMzkzNyw3ICszOTM1LDcgQEAgTm9kZSogV2ViVmlld0ltcGw6OmZvY3Vz
ZWRXZWJDb3JlTm9kZSgpCiBIaXRUZXN0UmVzdWx0IFdlYlZpZXdJbXBsOjpoaXRUZXN0UmVzdWx0
Rm9yV2luZG93UG9zKGNvbnN0IEludFBvaW50JiBwb3MpCiB7CiAgICAgSW50UG9pbnQgZG9jUG9p
bnQobV9wYWdlLT5tYWluRnJhbWUoKS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHBvcykpOwot
ICAgIHJldHVybiBtX3BhZ2UtPm1haW5GcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJl
c3VsdEF0UG9pbnQoZG9jUG9pbnQsIGZhbHNlKTsKKyAgICByZXR1cm4gbV9wYWdlLT5tYWluRnJh
bWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGRvY1BvaW50KTsKIH0K
IAogdm9pZCBXZWJWaWV3SW1wbDo6c2V0VGFic1RvTGlua3MoYm9vbCBlbmFibGUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfZnJhbWUuY3BwCmluZGV4IDNlMTYyNjQ4NjIxNTA2NmVjZjc2MDQ3Y2U5ODIw
YTNjYzFkMzZiMDMuLmMyOGRkMDU5ODcyZDBkMjRkNzM4MjRlYTU5NDc1YzU5OTM4MTFjNTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVk
ZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTFBsdWdJbkVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIaXN0b3J5SXRlbS5oIgorI2luY2x1ZGUgIkhpdFRlc3RSZXF1ZXN0LmgiCiAjaW5jbHVkZSAi
SGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJLVVJMLmgi
CkBAIC02OTEsOCArNjkyLDggQEAgRXdrX0hpdF9UZXN0KiBld2tfZnJhbWVfaGl0X3Rlc3RfbmV3
KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgaW50IHgsIGludCB5KQogICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLT5jb250ZW50UmVuZGVyZXIo
KSwgMCk7CiAKICAgICBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IHNtYXJ0RGF0YS0+
ZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2aWV3LT53aW5kb3dUb0NvbnRlbnRzKFdlYkNv
cmU6OkludFBvaW50KHgsIHkpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvKmFsbG93U2hhZG93Q29udGVudCovIGZhbHNlLCAvKmlnbm9yZUNsaXBwaW5nKi8gdHJ1
ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZpZXctPndpbmRv
d1RvQ29udGVudHMoV2ViQ29yZTo6SW50UG9pbnQoeCwgeSkpLCAKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBXZWJDb3JlOjpIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkg
fCBXZWJDb3JlOjpIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgV2ViQ29yZTo6SGl0VGVzdFJlcXVl
c3Q6Oklnbm9yZUNsaXBwaW5nKTsKIAogICAgIGlmIChyZXN1bHQuc2Nyb2xsYmFyKCkpCiAgICAg
ICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCBhMDc2M2FiNTc4OGIwYjU5MmFlOGI1
ZTdkN2M5YzQ4NjRjZDNlODhiLi5kODJkMGVjZGJhMzhjOTljNWNkYmRhNjJmM2U1YjNjN2EyYjRj
Njg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMTM0NCw3ICsxMzQ0LDcgQEAgTlNEaWN0aW9uYXJ5
ICpXZWJGcmFtZUxvYWRlckNsaWVudDo6YWN0aW9uRGljdGlvbmFyeShjb25zdCBOYXZpZ2F0aW9u
QWN0aW9uJiBhY3QKIAogICAgIGlmIChjb25zdCBNb3VzZUV2ZW50KiBtb3VzZUV2ZW50ID0gZmlu
ZE1vdXNlRXZlbnQoZXZlbnQpKSB7CiAgICAgICAgIFdlYkVsZW1lbnREaWN0aW9uYXJ5ICplbGVt
ZW50ID0gW1tXZWJFbGVtZW50RGljdGlvbmFyeSBhbGxvY10KLSAgICAgICAgICAgIGluaXRXaXRo
SGl0VGVzdFJlc3VsdDpjb3JlKG1fd2ViRnJhbWUuZ2V0KCkpLT5ldmVudEhhbmRsZXIoKS0+aGl0
VGVzdFJlc3VsdEF0UG9pbnQobW91c2VFdmVudC0+YWJzb2x1dGVMb2NhdGlvbigpLCBmYWxzZSld
OworICAgICAgICAgICAgaW5pdFdpdGhIaXRUZXN0UmVzdWx0OmNvcmUobV93ZWJGcmFtZS5nZXQo
KSktPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChtb3VzZUV2ZW50LT5hYnNv
bHV0ZUxvY2F0aW9uKCkpXTsKICAgICAgICAgW3Jlc3VsdCBzZXRPYmplY3Q6ZWxlbWVudCBmb3JL
ZXk6V2ViQWN0aW9uRWxlbWVudEtleV07CiAgICAgICAgIFtlbGVtZW50IHJlbGVhc2VdOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQppbmRleCBkYzc5ZTZmOGFiYTI1ZDU4YmNi
YWY0ZWU0NjJmODU1ZjFlZWViMGY3Li43NTVjMGQ3NTc4MDViNzk5MmRmMDg0YzBiZjkxZGNjNDk4
YzkyN2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTEyMTYsNyAr
MTIxNiw3IEBAIHN0YXRpYyBpbmxpbmUgV2ViRGF0YVNvdXJjZSAqZGF0YVNvdXJjZShEb2N1bWVu
dExvYWRlciogbG9hZGVyKQogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBfcHJpdmF0ZS0+Y29yZUZy
YW1lOwogICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVy
biBbW1tXZWJFbGVtZW50RGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhIaXRUZXN0UmVzdWx0OmNv
cmVGcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KEludFBvaW50KHBv
aW50KSwgZmFsc2UsIHRydWUpXSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIFtbW1dlYkVsZW1l
bnREaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aEhpdFRlc3RSZXN1bHQ6Y29yZUZyYW1lLT5ldmVu
dEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoSW50UG9pbnQocG9pbnQpLCBIaXRUZXN0
UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVl
c3Q6Oklnbm9yZUNsaXBwaW5nKV0gYXV0b3JlbGVhc2VdOwogfQogCiBAZW5kCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCA4ODM2MTA1ZDZlNDlkMGE4NWQzMzUw
ZjY3NWZkNGI3MDA0NzI1ZWM3Li42Y2NjOGRmODdkZDU4ZTNhY2MzYzBjYzc3MmRiZDgzMjcwZTVh
Y2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTYyMDIs
NyArNjIwMiw4IEBAIHN0YXRpYyB2b2lkIGV4dHJhY3RVbmRlcmxpbmVzKE5TQXR0cmlidXRlZFN0
cmluZyAqc3RyaW5nLCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlCiAgICAgRnJhbWUqIGNvcmVGcmFt
ZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7CiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJl
dHVybiBuaWw7Ci0gICAgcmV0dXJuIFtbW1dlYkVsZW1lbnREaWN0aW9uYXJ5IGFsbG9jXSBpbml0
V2l0aEhpdFRlc3RSZXN1bHQ6Y29yZUZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3Vs
dEF0UG9pbnQoSW50UG9pbnQocG9pbnQpLCBhbGxvdyldIGF1dG9yZWxlYXNlXTsKKyAgICBIaXRU
ZXN0UmVxdWVzdDo6SGl0VGVzdFJlcXVlc3RUeXBlIGhpdFR5cGUgPSBIaXRUZXN0UmVxdWVzdDo6
UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgKGFsbG93ID8gSGl0VGVzdFJlcXVl
c3Q6OkFsbG93U2hhZG93Q29udGVudCA6IDApOworICAgIHJldHVybiBbW1tXZWJFbGVtZW50RGlj
dGlvbmFyeSBhbGxvY10gaW5pdFdpdGhIaXRUZXN0UmVzdWx0OmNvcmVGcmFtZS0+ZXZlbnRIYW5k
bGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KEludFBvaW50KHBvaW50KSwgaGl0VHlwZSldIGF1
dG9yZWxlYXNlXTsKIH0KIAogLSAoTlNVSW50ZWdlciljb3VudE1hdGNoZXNGb3JUZXh0OihOU1N0
cmluZyAqKXN0cmluZyBpbkRPTVJhbmdlOihET01SYW5nZSAqKXJhbmdlIG9wdGlvbnM6KFdlYkZp
bmRPcHRpb25zKW9wdGlvbnMgbGltaXQ6KE5TVUludGVnZXIpbGltaXQgbWFya01hdGNoZXM6KEJP
T0wpbWFya01hdGNoZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCmluZGV4IDA5NDk0Y2Q4NTk2ODRlYzcxNzJkOGE5
ODQ3ZTVlZjNiMzVlOTg2YWEuLjBlNjIyOGRlN2ZiYmEwMjVjYzBlZWQ2ZGJiMmU4YWQ2MjAzYjI2
ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudFF0LmNwcApAQCAtMTI1MCw3ICsxMjUwLDcgQEAgdm9pZCBGcmFtZUxvYWRl
ckNsaWVudFF0OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oRnJhbWVQ
b2xpY3lGdW4KICAgICAgICAgICAgIGlmIChldmVudC0+aXNNb3VzZUV2ZW50KCkpIHsKICAgICAg
ICAgICAgICAgICBjb25zdCBNb3VzZUV2ZW50KiBtb3VzZUV2ZW50ID0gIHN0YXRpY19jYXN0PGNv
bnN0IE1vdXNlRXZlbnQqPihldmVudCk7CiAgICAgICAgICAgICAgICAgbm9kZSA9IG1fd2ViRnJh
bWUtPmZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoCi0gICAgICAg
ICAgICAgICAgICAgIG1vdXNlRXZlbnQtPmFic29sdXRlTG9jYXRpb24oKSwgZmFsc2UpLmlubmVy
Tm9uU2hhcmVkTm9kZSgpOworICAgICAgICAgICAgICAgICAgICBtb3VzZUV2ZW50LT5hYnNvbHV0
ZUxvY2F0aW9uKCkpLmlubmVyTm9uU2hhcmVkTm9kZSgpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L1FXZWJGcmFtZUFkYXB0ZXIuY3BwIGIvU291cmNlL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9RV2ViRnJhbWVBZGFwdGVyLmNwcAppbmRleCAxZWZlYTUwODJmMTJmZmI3
NjhiYTA0MWQ3MWRmM2Y4ZDkzZDMwMmMxLi4wZDMxMGUwMTdiYWY1ZGM1ZjNjM2Y1ZjZkYjZmMDY2
NjYyNzZmNTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FX
ZWJGcmFtZUFkYXB0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
UVdlYkZyYW1lQWRhcHRlci5jcHAKQEAgLTM4OSw3ICszODksNyBAQCBRV2ViSGl0VGVzdFJlc3Vs
dFByaXZhdGUqIFFXZWJGcmFtZUFkYXB0ZXI6OmhpdFRlc3RDb250ZW50KGNvbnN0IFFQb2ludCYg
cG9zKSBjbwogICAgIGlmICghZnJhbWUtPnZpZXcoKSB8fCAhZnJhbWUtPmNvbnRlbnRSZW5kZXJl
cigpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZnJh
bWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChmcmFtZS0+dmlldygpLT53
aW5kb3dUb0NvbnRlbnRzKHBvcyksIC8qYWxsb3dTaGFkb3dDb250ZW50Ki8gZmFsc2UsIC8qaWdu
b3JlQ2xpcHBpbmcqLyB0cnVlKTsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGZyYW1lLT5l
dmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoZnJhbWUtPnZpZXcoKS0+d2luZG93
VG9Db250ZW50cyhwb3MpLCBIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVz
dDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6Oklnbm9yZUNsaXBwaW5nKTsKIAogICAgIGlmIChy
ZXN1bHQuc2Nyb2xsYmFyKCkpCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuY3BwIGIvU291cmNlL1dl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuY3BwCmluZGV4IDQzYjZkZjdj
OTU3NDkzZjA3MmM0N2MzODhiNzEwZGZjNmY4N2M2YjMuLjNjNTk5MGVmNDcwNWVhOTkxYzllYTZj
ODJlY2MyMDUwODJjMTcyZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L1FXZWJQYWdlQWRhcHRlci5jcHAKQEAgLTQyOSw3ICs0MjksNyBAQCBJbnRQb2ludCBR
V2ViUGFnZUFkYXB0ZXI6OlRvdWNoQWRqdXN0ZXI6OmZpbmRDYW5kaWRhdGVQb2ludEZvclRvdWNo
KGNvbnN0IEludFBvaQogICAgIGludCB4ID0gdG91Y2hQb2ludC54KCk7CiAgICAgaW50IHkgPSB0
b3VjaFBvaW50LnkoKTsKIAotICAgIFJlZlB0cjxOb2RlTGlzdD4gaW50ZXJzZWN0ZWROb2RlcyA9
IGRvY3VtZW50LT5ub2Rlc0Zyb21SZWN0KHgsIHksIG1fdG9wUGFkZGluZywgbV9yaWdodFBhZGRp
bmcsIG1fYm90dG9tUGFkZGluZywgbV9sZWZ0UGFkZGluZywgZmFsc2UgLyppZ25vcmVDbGlwcGlu
ZyovLCBmYWxzZSAvKmFsbG93U2hhZG93Q29udGVudCovKTsKKyAgICBSZWZQdHI8Tm9kZUxpc3Q+
IGludGVyc2VjdGVkTm9kZXMgPSBkb2N1bWVudC0+bm9kZXNGcm9tUmVjdCh4LCB5LCBtX3RvcFBh
ZGRpbmcsIG1fcmlnaHRQYWRkaW5nLCBtX2JvdHRvbVBhZGRpbmcsIG1fbGVmdFBhZGRpbmcpOwog
ICAgIGlmICghaW50ZXJzZWN0ZWROb2RlcykKICAgICAgICAgcmV0dXJuIEludFBvaW50KCk7CiAK
QEAgLTU4NSw3ICs1ODUsNyBAQCB2b2lkIFFXZWJQYWdlQWRhcHRlcjo6aGFuZGxlU29mdHdhcmVJ
bnB1dFBhbmVsKFF0OjpNb3VzZUJ1dHRvbiBidXR0b24sIGNvbnN0IFFQbwogICAgICAgICAmJiBm
cmFtZS0+ZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUoKQogICAgICAgICAgICAgJiYgYnV0dG9uID09
IFF0OjpMZWZ0QnV0dG9uICYmIHFHdWlBcHAtPnByb3BlcnR5KCJhdXRvU2lwRW5hYmxlZCIpLnRv
Qm9vbCgpKSB7CiAgICAgICAgIGlmICghY2xpY2tDYXVzZWRGb2N1cyB8fCByZXF1ZXN0U29mdHdh
cmVJbnB1dFBhbmVsKCkpIHsKLSAgICAgICAgICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gZnJh
bWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChmcmFtZS0+dmlldygpLT53
aW5kb3dUb0NvbnRlbnRzKHBvcyksIGZhbHNlKTsKKyAgICAgICAgICAgIEhpdFRlc3RSZXN1bHQg
cmVzdWx0ID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChmcmFt
ZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHBvcykpOwogICAgICAgICAgICAgaWYgKHJlc3Vs
dC5pc0NvbnRlbnRFZGl0YWJsZSgpKSB7CiAgICAgICAgICAgICAgICAgUUV2ZW50IGV2ZW50KFFF
dmVudDo6UmVxdWVzdFNvZnR3YXJlSW5wdXRQYW5lbCk7CiAgICAgICAgICAgICAgICAgUUd1aUFw
cGxpY2F0aW9uOjpzZW5kRXZlbnQoY2xpZW50LT5vd25lcldpZGdldCgpLCAmZXZlbnQpOwpAQCAt
OTI3LDcgKzkyNyw3IEBAIFFXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZSogUVdlYlBhZ2VBZGFwdGVy
Ojp1cGRhdGVQb3NpdGlvbkRlcGVuZGVudE1lbnVBY3Rpb25zKGNvCiB7CiAgICAgQVNTRVJUKHZp
c2l0ZWRXZWJBY3Rpb25zKTsKICAgICBXZWJDb3JlOjpGcmFtZSogZm9jdXNlZEZyYW1lID0gcGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIEhpdFRlc3RS
ZXN1bHQgcmVzdWx0ID0gZm9jdXNlZEZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3Vs
dEF0UG9pbnQoZm9jdXNlZEZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMocG9zKSwgLyph
bGxvd1NoYWRvd0NvbnRlbnQqLyBmYWxzZSk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBm
b2N1c2VkRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChmb2N1c2Vk
RnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhwb3MpKTsKICAgICBwYWdlLT5jb250ZXh0
TWVudUNvbnRyb2xsZXIoKS0+c2V0SGl0VGVzdFJlc3VsdChyZXN1bHQpOwogCiAjaWYgRU5BQkxF
KElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkFjdGlvblByb3Bl
cnR5QmFnLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkFjdGlvblByb3BlcnR5QmFnLmNwcApp
bmRleCBmY2E4M2JlMGQ0ZTkwMDIxMDNhMzM0NmFkMTczMjg5NzhiNzgzMjQ3Li5kMjkwNTA5MWYy
YzczMTZjMmM1ODJmYWQwOWYzZTM2MTg0ODJhMzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJBY3Rpb25Qcm9wZXJ0eUJhZy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2Vi
QWN0aW9uUHJvcGVydHlCYWcuY3BwCkBAIC0xMjEsNyArMTIxLDcgQEAgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJBY3Rpb25Qcm9wZXJ0eUJhZzo6UmVhZChMUENPTEVTVFIgcHN6UHJvcE5h
bWUsIFZBUkkKICAgICBpZiAoaXNFcXVhbChwc3pQcm9wTmFtZSwgV2ViQWN0aW9uRWxlbWVudEtl
eSkpIHsKICAgICAgICAgaWYgKGNvbnN0IE1vdXNlRXZlbnQqIG1vdXNlRXZlbnQgPSBmaW5kTW91
c2VFdmVudChtX2FjdGlvbi5ldmVudCgpKSkgewogICAgICAgICAgICAgVl9WVChwVmFyKSA9IFZU
X1VOS05PV047Ci0gICAgICAgICAgICBWX1VOS05PV04ocFZhcikgPSBXZWJFbGVtZW50UHJvcGVy
dHlCYWc6OmNyZWF0ZUluc3RhbmNlKG1fZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVz
dWx0QXRQb2ludChtb3VzZUV2ZW50LT5hYnNvbHV0ZUxvY2F0aW9uKCksIGZhbHNlKSk7CisgICAg
ICAgICAgICBWX1VOS05PV04ocFZhcikgPSBXZWJFbGVtZW50UHJvcGVydHlCYWc6OmNyZWF0ZUlu
c3RhbmNlKG1fZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChtb3Vz
ZUV2ZW50LT5hYnNvbHV0ZUxvY2F0aW9uKCkpKTsKICAgICAgICAgICAgIHJldHVybiBTX09LOwog
ICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZj
cHJvai9XZWJLaXRFeHBvcnRzLmRlZi5pbiBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYktpdC52Y3By
b2ovV2ViS2l0RXhwb3J0cy5kZWYuaW4KaW5kZXggOWVlZGRlZjAxYTI0ZDkzMTgzMzU0ZjViMzhl
M2E0YjA4ODNlMzY5NC4uZmQ3YWE3NWFmZmY0OGY2N2QzMjc3MTFhNTQwMTVlOTQyYzVkN2MxZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXRFeHBvcnRz
LmRlZi5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdEV4cG9y
dHMuZGVmLmluCkBAIC0zMDYsNyArMzA2LDcgQEAgRVhQT1JUUwogICAgICAgICA/PzFDb250ZXh0
RGVzdHJ1Y3Rpb25PYnNlcnZlckBXZWJDb3JlQEBNQUVAWFoKICAgICAgICAgP2NvbnRleHREZXN0
cm95ZWRAQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXJAV2ViQ29yZUBAVUFFWFhaCiAgICAgICAg
ID8/MENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyQFdlYkNvcmVAQFFBRUBQQVZTY3JpcHRFeGVj
dXRpb25Db250ZXh0QDFAQFoKLSAgICAgICAgP25vZGVzRnJvbVJlY3RARG9jdW1lbnRAV2ViQ29y
ZUBAUUJFP0FWPyRQYXNzUmVmUHRyQFZOb2RlTGlzdEBXZWJDb3JlQEBAV1RGQEBISElJSUlfTjBA
WgorICAgICAgICA/bm9kZXNGcm9tUmVjdEBEb2N1bWVudEBXZWJDb3JlQEBRQkU/QVY/JFBhc3NS
ZWZQdHJAVk5vZGVMaXN0QFdlYkNvcmVAQEBXVEZAQEhISUlJSUlAWgogICAgICAgICA/c2VsZWN0
aW9uU3RhcnRIYXNNYXJrZXJGb3JARWRpdG9yQFdlYkNvcmVAQFFCRV9OVzRNYXJrZXJUeXBlQERv
Y3VtZW50TWFya2VyQDJASEhAWgogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICAgICAg
P3dlYmtpdFdpbGxFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50QERvY3VtZW50QFdlYkNvcmVAQFFB
RVhQQVZFbGVtZW50QDJAQFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcu
Y3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKaW5kZXggODgwZTQxMjExZTIyYTY2
MTAzNTFlMDQ2Mjk2MDAzMmJjNTMzZGY2Zi4uOGUwODg5NzRhODBkMjhjM2YzN2YyM2RhM2M1OGE3
NzRkM2NhYmFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKQEAgLTEzMzQsNyArMTMzNCw3IEBAIGJv
b2wgV2ViVmlldzo6aGFuZGxlQ29udGV4dE1lbnVFdmVudChXUEFSQU0gd1BhcmFtLCBMUEFSQU0g
bFBhcmFtKQogICAgIG1fcGFnZS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCktPmNsZWFyQ29udGV4
dE1lbnUoKTsKIAogICAgIEludFBvaW50IGRvY3VtZW50UG9pbnQobV9wYWdlLT5tYWluRnJhbWUo
KS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKGNvb3JkcykpOwotICAgIEhpdFRlc3RSZXN1bHQg
cmVzdWx0ID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1
bHRBdFBvaW50KGRvY3VtZW50UG9pbnQsIGZhbHNlKTsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3Vs
dCA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQ
b2ludChkb2N1bWVudFBvaW50KTsKICAgICBGcmFtZSogdGFyZ2V0RnJhbWUgPSByZXN1bHQuaW5u
ZXJOb25TaGFyZWROb2RlKCkgPyByZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCktPmRvY3VtZW50
KCktPmZyYW1lKCkgOiBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJh
bWUoKTsKIAogICAgIHRhcmdldEZyYW1lLT52aWV3KCktPnNldEN1cnNvcihwb2ludGVyQ3Vyc29y
KCkpOwpAQCAtMzYwMyw3ICszNjAzLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJW
aWV3OjplbGVtZW50QXRQb2ludCgKICAgICBJbnRQb2ludCB3ZWJDb3JlUG9pbnQgPSBJbnRQb2lu
dChwb2ludC0+eCwgcG9pbnQtPnkpOwogICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gSGl0VGVz
dFJlc3VsdCh3ZWJDb3JlUG9pbnQpOwogICAgIGlmIChmcmFtZS0+Y29udGVudFJlbmRlcmVyKCkp
Ci0gICAgICAgIHJlc3VsdCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0
UG9pbnQod2ViQ29yZVBvaW50LCBmYWxzZSk7CisgICAgICAgIHJlc3VsdCA9IGZyYW1lLT5ldmVu
dEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQod2ViQ29yZVBvaW50KTsKICAgICAqZWxl
bWVudERpY3Rpb25hcnkgPSBXZWJFbGVtZW50UHJvcGVydHlCYWc6OmNyZWF0ZUluc3RhbmNlKHJl
c3VsdCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3d4
L1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvd3gvV2ViRnJhbWUuY3BwCmluZGV4IGQ4ZmFj
NjFmY2E5MzcxZGUyY2QyMGQyODBmMmFkYWYwMWM3NGE5Y2YuLjU3NGJkMGY1MWJlOTJiYjdjYzRk
M2VjNjljOGM0NjU2ZmM1Y2YzNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd3gvV2ViRnJh
bWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd3gvV2ViRnJhbWUuY3BwCkBAIC02OTAsNyArNjkw
LDcgQEAgV2ViVmlld0RPTUVsZW1lbnRJbmZvIFdlYkZyYW1lOjpIaXRUZXN0KGNvbnN0IHd4UG9p
bnQmIHBvcykgY29uc3QKICAgICBXZWJWaWV3RE9NRWxlbWVudEluZm8gZG9tSW5mbzsKIAogICAg
IGlmIChtX2ltcGwtPmZyYW1lLT52aWV3KCkpIHsKLSAgICAgICAgV2ViQ29yZTo6SGl0VGVzdFJl
c3VsdCByZXN1bHQgPSBtX2ltcGwtPmZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3Vs
dEF0UG9pbnQobV9pbXBsLT5mcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHBvcyksIGZh
bHNlKTsKKyAgICAgICAgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCByZXN1bHQgPSBtX2ltcGwtPmZy
YW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQobV9pbXBsLT5mcmFtZS0+
dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHBvcykpOwogICAgICAgICBpZiAocmVzdWx0LmlubmVy
Tm9kZSgpKSB7CiAgICAgICAgICAgICBkb21JbmZvLlNldExpbmsocmVzdWx0LmFic29sdXRlTGlu
a1VSTCgpLnN0cmluZygpKTsKICAgICAgICAgICAgIGRvbUluZm8uU2V0VGV4dChyZXN1bHQudGV4
dENvbnRlbnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFj
dGlvbi5jcHAKaW5kZXggNDI4MTM1NDgxYWZkOWM1MWIzYWJkMjc2Y2U4NjE2ZDM5NmY4YjQzZS4u
MjljNzBkZmI0NjZjN2QwZWQ0ZjE1ZWI0YzkyNGMzZDgyY2Y3MWIxNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmln
YXRpb25BY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcApAQCAtOTEsNyArOTEsNyBA
QCBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb246OkluamVjdGVkQnVuZGxlTmF2aWdhdGlv
bkFjdGlvbihXZWJGcmFtZSogZnJhbWUsCiAgICAgLCBtX21vdXNlQnV0dG9uKFdlYk1vdXNlRXZl
bnQ6Ok5vQnV0dG9uKQogewogICAgIGlmIChjb25zdCBNb3VzZUV2ZW50KiBtb3VzZUV2ZW50ID0g
bW91c2VFdmVudEZvck5hdmlnYXRpb25BY3Rpb24obmF2aWdhdGlvbkFjdGlvbikpIHsKLSAgICAg
ICAgbV9oaXRUZXN0UmVzdWx0ID0gSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0OjpjcmVhdGUo
ZnJhbWUtPmNvcmVGcmFtZSgpLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQo
bW91c2VFdmVudC0+YWJzb2x1dGVMb2NhdGlvbigpLCBmYWxzZSkpOworICAgICAgICBtX2hpdFRl
c3RSZXN1bHQgPSBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ6OmNyZWF0ZShmcmFtZS0+Y29y
ZUZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChtb3VzZUV2ZW50
LT5hYnNvbHV0ZUxvY2F0aW9uKCkpKTsKICAgICAgICAgbV9tb3VzZUJ1dHRvbiAgID0gbW91c2VC
dXR0b25Gb3JNb3VzZUV2ZW50KG1vdXNlRXZlbnQpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggNGZlMzE3ZWY3NjIzYTg2
YmZlMzQzNjA1ZWRkMGQ5NjZlYmRjMDBkNy4uZTRlOTY0MTI3YjhiMjlmNjgxNzA3YjRlNGFiZWRi
YTY2YjU5ODVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
RnJhbWUuY3BwCkBAIC01NDAsNyArNTQwLDcgQEAgUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZUhp
dFRlc3RSZXN1bHQ+IFdlYkZyYW1lOjpoaXRUZXN0KGNvbnN0IEludFBvaW50IHBvaW50KQogICAg
IGlmICghbV9jb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIEluamVj
dGVkQnVuZGxlSGl0VGVzdFJlc3VsdDo6Y3JlYXRlKG1fY29yZUZyYW1lLT5ldmVudEhhbmRsZXIo
KS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQocG9pbnQsIGZhbHNlLCB0cnVlKSk7CisgICAgcmV0dXJu
IEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdDo6Y3JlYXRlKG1fY29yZUZyYW1lLT5ldmVudEhh
bmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQocG9pbnQsIEhpdFRlc3RSZXF1ZXN0OjpSZWFk
T25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6SWdub3JlQ2xp
cHBpbmcpKTsKIH0KIAogYm9vbCBXZWJGcmFtZTo6Z2V0RG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3Io
ZG91YmxlKiByZWQsIGRvdWJsZSogZ3JlZW4sIGRvdWJsZSogYmx1ZSwgZG91YmxlKiBhbHBoYSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBj
NDcwOGM4OGNhMjM4NTYxZGQyMTM4MTFjOWNjZGQzNTg2NWNlMGY4Li5hN2Q1MWE3MDYwNDM2MWY2
YTQ4ZTg0ZDk4YWNmZjdiMTQ1MmEyMDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xNTA5LDcgKzE1MDksNyBAQCBzdGF0aWMgYm9vbCBp
c0NvbnRleHRDbGljayhjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KQogc3RhdGljIGJv
b2wgaGFuZGxlQ29udGV4dE1lbnVFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIHBsYXRm
b3JtTW91c2VFdmVudCwgV2ViUGFnZSogcGFnZSkKIHsKICAgICBJbnRQb2ludCBwb2ludCA9IHBh
Z2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMocGxh
dGZvcm1Nb3VzZUV2ZW50LnBvc2l0aW9uKCkpOwotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0g
cGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVz
dWx0QXRQb2ludChwb2ludCwgZmFsc2UpOworICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gcGFn
ZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0
QXRQb2ludChwb2ludCk7CiAKICAgICBGcmFtZSogZnJhbWUgPSBwYWdlLT5jb3JlUGFnZSgpLT5t
YWluRnJhbWUoKTsKICAgICBpZiAocmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpKQpAQCAtMTc2
Myw3ICsxNzYzLDcgQEAgdm9pZCBXZWJQYWdlOjpoaWdobGlnaHRQb3RlbnRpYWxBY3RpdmF0aW9u
KGNvbnN0IEludFBvaW50JiBwb2ludCwgY29uc3QgSW50U2l6ZSYKICAgICAgICAgICAgIHJldHVy
bjsKIAogI2Vsc2UKLSAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBtYWluZnJhbWUtPmV2
ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChtYWluZnJhbWUtPnZpZXcoKS0+d2lu
ZG93VG9Db250ZW50cyhwb2ludCksIC8qYWxsb3dTaGFkb3dDb250ZW50Ki8gZmFsc2UsIC8qaWdu
b3JlQ2xpcHBpbmcqLyB0cnVlKTsKKyAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBtYWlu
ZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChtYWluZnJhbWUtPnZp
ZXcoKS0+d2luZG93VG9Db250ZW50cyhwb2ludCksIEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8
IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6QWxsb3dTaGFkb3dDb250
ZW50KTsKICAgICAgICAgYWRqdXN0ZWROb2RlID0gcmVzdWx0LmlubmVyTm9kZSgpOwogI2VuZGlm
CiAgICAgICAgIC8vIEZpbmQgdGhlIG5vZGUgdG8gaGlnaGxpZ2h0LiBUaGlzIGlzIG5vdCB0aGUg
c2FtZSBhcyB0aGUgbm9kZSByZXNwb25kaW5nIHRoZSB0YXAgZ2VzdHVyZSwgYmVjYXVzZSBtYW55
CkBAIC0zMDMxLDcgKzMwMzEsNyBAQCB2b2lkIFdlYlBhZ2U6OmZpbmRab29tYWJsZUFyZWFGb3JQ
b2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIGNvbnN0IFdlYgogewogICAgIFVO
VVNFRF9QQVJBTShhcmVhKTsKICAgICBGcmFtZSogbWFpbmZyYW1lID0gbV9tYWluRnJhbWUtPmNv
cmVGcmFtZSgpOwotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gbWFpbmZyYW1lLT5ldmVudEhh
bmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQobWFpbmZyYW1lLT52aWV3KCktPndpbmRvd1Rv
Q29udGVudHMocG9pbnQpLCAvKmFsbG93U2hhZG93Q29udGVudCovIGZhbHNlLCAvKmlnbm9yZUNs
aXBwaW5nKi8gdHJ1ZSk7CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBtYWluZnJhbWUtPmV2
ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChtYWluZnJhbWUtPnZpZXcoKS0+d2lu
ZG93VG9Db250ZW50cyhwb2ludCksIEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RS
ZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6SWdub3JlQ2xpcHBpbmcpOwogCiAgICAg
Tm9kZSogbm9kZSA9IHJlc3VsdC5pbm5lck5vZGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IGUzNjdhMTQ3YjY5
OTI1ZjYwNjQ1YmEyN2IzNmJiY2I1MGM4MWE3MzAuLmJlMGRlNzk2MGU4NjBhZWZlNjhmZjdhNzNm
ZjAxMTM2MDBmZGNmODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTM4NSw3ICszODUsNyBAQCB2b2lkIFdlYlBhZ2U6
OmNoYXJhY3RlckluZGV4Rm9yUG9pbnQoSW50UG9pbnQgcG9pbnQsIHVpbnQ2NF90JiBpbmRleCkK
ICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBIaXRUZXN0UmVzdWx0IHJl
c3VsdCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQocG9pbnQs
IGZhbHNlKTsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCA9IGZyYW1lLT5ldmVudEhhbmRsZXIo
KS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQocG9pbnQpOwogICAgIGZyYW1lID0gcmVzdWx0LmlubmVy
Tm9uU2hhcmVkTm9kZSgpID8gcmVzdWx0LmlubmVyTm9kZUZyYW1lKCkgOiBtX3BhZ2UtPmZvY3Vz
Q29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICAKICAgICBSZWZQdHI8UmFu
Z2U+IHJhbmdlID0gZnJhbWUtPnJhbmdlRm9yUG9pbnQocmVzdWx0LnJvdW5kZWRQb2ludEluSW5u
ZXJOb2RlRnJhbWUoKSk7CkBAIC00ODIsNyArNDgyLDcgQEAgdm9pZCBXZWJQYWdlOjpwZXJmb3Jt
RGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oY29uc3QgRmxvYXRQb2ludCYgZmxvYXRQb2ludCkK
IAogICAgIC8vIEZpbmQgdGhlIGZyYW1lIHRoZSBwb2ludCBpcyBvdmVyLgogICAgIEludFBvaW50
IHBvaW50ID0gcm91bmRlZEludFBvaW50KGZsb2F0UG9pbnQpOwotICAgIEhpdFRlc3RSZXN1bHQg
cmVzdWx0ID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChmcmFt
ZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHBvaW50KSwgZmFsc2UpOworICAgIEhpdFRlc3RS
ZXN1bHQgcmVzdWx0ID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2lu
dChmcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHBvaW50KSk7CiAgICAgZnJhbWUgPSBy
ZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCkgPyByZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCkt
PmRvY3VtZW50KCktPmZyYW1lKCkgOiBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2Vk
T3JNYWluRnJhbWUoKTsKIAogICAgIEludFBvaW50IHRyYW5zbGF0ZWRQb2ludCA9IGZyYW1lLT52
aWV3KCktPndpbmRvd1RvQ29udGVudHMocG9pbnQpOwpAQCAtNzQwLDcgKzc0MCw3IEBAIHZvaWQg
V2ViUGFnZTo6c2hvdWxkRGVsYXlXaW5kb3dPcmRlcmluZ0V2ZW50KGNvbnN0IFdlYktpdDo6V2Vi
TW91c2VFdmVudCYgZXZlbnQsCiAgICAgICAgIHJldHVybjsKIAogI2lmIEVOQUJMRShEUkFHX1NV
UFBPUlQpCi0gICAgSGl0VGVzdFJlc3VsdCBoaXRSZXN1bHQgPSBmcmFtZS0+ZXZlbnRIYW5kbGVy
KCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KGZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMo
ZXZlbnQucG9zaXRpb24oKSksIHRydWUpOworICAgIEhpdFRlc3RSZXN1bHQgaGl0UmVzdWx0ID0g
ZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQb2ludChmcmFtZS0+dmlldygp
LT53aW5kb3dUb0NvbnRlbnRzKGV2ZW50LnBvc2l0aW9uKCkpLCBIaXRUZXN0UmVxdWVzdDo6UmVh
ZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OkFsbG93U2hh
ZG93Q29udGVudCk7CiAgICAgaWYgKGhpdFJlc3VsdC5pc1NlbGVjdGVkKCkpCiAgICAgICAgIHJl
c3VsdCA9IGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+ZXZlbnRNYXlTdGFydERyYWcocGxhdGZvcm0o
ZXZlbnQpKTsKICNlbmRpZgpAQCAtNzUzLDcgKzc1Myw3IEBAIHZvaWQgV2ViUGFnZTo6YWNjZXB0
c0ZpcnN0TW91c2UoaW50IGV2ZW50TnVtYmVyLCBjb25zdCBXZWJLaXQ6OldlYk1vdXNlRXZlbnQm
IGV2CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIEhpdFRlc3RS
ZXN1bHQgaGl0UmVzdWx0ID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oaXRUZXN0UmVzdWx0QXRQ
b2ludChmcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKGV2ZW50LnBvc2l0aW9uKCkpLCB0
cnVlKTsKKyAgICBIaXRUZXN0UmVzdWx0IGhpdFJlc3VsdCA9IGZyYW1lLT5ldmVudEhhbmRsZXIo
KS0+aGl0VGVzdFJlc3VsdEF0UG9pbnQoZnJhbWUtPnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhl
dmVudC5wb3NpdGlvbigpKSwgSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVl
c3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd1NoYWRvd0NvbnRlbnQpOwogICAgIGZy
YW1lLT5ldmVudEhhbmRsZXIoKS0+c2V0QWN0aXZhdGlvbkV2ZW50TnVtYmVyKGV2ZW50TnVtYmVy
KTsKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAgIGlmIChoaXRSZXN1bHQuaXNTZWxlY3Rl
ZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlciBiL1NvdXJj
ZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKaW5kZXggN2M3ZTE3OTNiNjhlZDEwNTU4YzEzZTBl
MGFjNTBmNTY5OGQ3ZTAyNC4uZTYxOWEyNmY2Y2E3NjM5OTZjYzAxODNhNjNkNjJjMjYzMGY2Njk0
ZSAxMDA2NDQKLS0tIGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgorKysgYi9Tb3Vy
Y2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCkBAIC0yMjEsNyArMjIxLDcgQEAgX1pON1dlYkNv
cmUyMlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM0MGlzTGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRy
b2xVSUVuYWJsZWRFOwogX1pON1dlYkNvcmUyMlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMyMmlzRGlh
bG9nRWxlbWVudEVuYWJsZWRFOwogX1pON1dlYkNvcmUyMlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMz
N2lzQXV0aG9yU2hhZG93RE9NRm9yQW55RWxlbWVudEVuYWJsZWRFOwogX1pON1dlYkNvcmUyMlJ1
bnRpbWVFbmFibGVkRmVhdHVyZXMyMGlzU3R5bGVTY29wZWRFbmFibGVkRTsKLV9aTks3V2ViQ29y
ZThEb2N1bWVudDEzbm9kZXNGcm9tUmVjdEVpaWpqampiYjsKK19aTks3V2ViQ29yZThEb2N1bWVu
dDEzbm9kZXNGcm9tUmVjdEVpaWpqampqOwogX1pON1dlYkNvcmU0dG9KU0VQTjNKU0M5RXhlY1N0
YXRlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBOU184Tm9kZUxpc3RFOwogX1pOSzdXZWJDb3Jl
NkVkaXRvcjI2c2VsZWN0aW9uU3RhcnRIYXNNYXJrZXJGb3JFTlNfMTREb2N1bWVudE1hcmtlcjEw
TWFya2VyVHlwZUVpaTsKIF9aTjdXZWJDb3JlOERvY3VtZW50MzN3ZWJraXREaWRFeGl0RnVsbFNj
cmVlbkZvckVsZW1lbnRFUE5TXzdFbGVtZW50RTsKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0No
YW5nZUxvZwppbmRleCBmZDM1YmIxNjQwOTY4NTVmODE2ZmY1YjFkODc0M2UyNjBmMDc5NjQxLi4w
N2MxZmIwMmEwNDY5N2VkNWQ5M2E1ZGUzNjQwYzU3MWQxMDY1ZjhhIDEwMDY0NAotLS0gYS9DaGFu
Z2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTMtMDItMTMgIEFsbGFu
IFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CisKKyAgICAgICAgU2lt
cGxpZnkgaGl0VGVzdFJlc3VsdEF0UG9pbnQgYW5kIG5vZGVzRnJvbVJlY3QgQVBJcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU3MjAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgZXhwb3J0ZWQg
c3ltYm9scy4KKworICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXI6CisK
IDIwMTMtMDItMTIgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtHVEtdIFJlbW92ZSB0aGUgR0xpYiB1bmljb2RlIGJhY2tlbmQK
</data>
<flag name="review"
          id="208070"
          type_id="1"
          status="+"
          setter="jchaffraix"
    />
    <flag name="commit-queue"
          id="208469"
          type_id="3"
          status="-"
          setter="jchaffraix"
    />
          </attachment>
      

    </bug>

</bugzilla>