<?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>53733</bug_id>
          
          <creation_ts>2011-02-03 16:31:37 -0800</creation_ts>
          <short_desc>Timers can fire after a frame has been put into the page cache</short_desc>
          <delta_ts>2015-01-07 10:21:30 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac (PowerPC)</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>77742</dependson>
    
    <dependson>77888</dependson>
          <blocked>140184</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mihai Parparita">mihaip</reporter>
          <assigned_to name="Allan Sandfeld Jensen">allan.jensen</assigned_to>
          <cc>abarth</cc>
    
    <cc>allan.jensen</cc>
    
    <cc>ap</cc>
    
    <cc>arvid2.nilsson</cc>
    
    <cc>beidson</cc>
    
    <cc>dglazkov</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>joepeck</cc>
    
    <cc>kenneth</cc>
    
    <cc>manyoso</cc>
    
    <cc>ossy</cc>
    
    <cc>pnormand</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>staikos</cc>
    
    <cc>svillar</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yong.li.webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>345126</commentid>
    <comment_count>0</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2011-02-03 16:31:37 -0800</bug_when>
    <thetext>As a follow-up from the fix on bug 53648, it&apos;s still possible to execute JavaScript in a frame after active DOM objects have been suspended. Given this frame hierarchy:

Main frame
   frame A
   frame B

When navigating away from the main frame (and putting it in the page cache via CachedFrame), we still do things in this order:

1. Fire pagehide for the main frame
2. Fire pagehide for frame A
3. Suspend active DOM objects for frame A
4. Fire pagehide for frame B
5. Suspend active DOM objects for frame B
6. Suspend active DOM objects for the main frame

If frame B in its pagehide handler calls a function in frame A that uses setTimeout, that timer will not be suspended, and could fire while in the page cache.

The correct fix would be to separate the recursion steps; one full pass to fire pagehide and another to suspend active DOM objects. This may require some refactoring of CachedFrame::CachedFrame, where all this happens currently.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345414</commentid>
    <comment_count>1</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2011-02-04 02:35:07 -0800</bug_when>
    <thetext>Might this be the reason for

http://build.webkit.org/results/GTK Linux 32-bit Release/r77615 (10360)/fast/events/pagehide-timeout-pretty-diff.html

?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345508</commentid>
    <comment_count>2</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2011-02-04 08:49:37 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; Might this be the reason for
&gt; 
&gt; http://build.webkit.org/results/GTK Linux 32-bit Release/r77615 (10360)/fast/events/pagehide-timeout-pretty-diff.html

No, I don&apos;t think this is the reason. The test failure makes it look like the GTK port is not getting the page cache enabled for this test, even though the test is requesting it. Filed bug 53771  about it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540457</commentid>
    <comment_count>3</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-01-23 03:00:56 -0800</bug_when>
    <thetext>This will be fixed by that patch for https://bugs.webkit.org/show_bug.cgi?id=76063</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540582</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-01-23 08:56:43 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; This will be fixed by that patch for https://bugs.webkit.org/show_bug.cgi?id=76063

Why this assertion?

76063 repeatedly purports to be about WebKit2 API only yet this is a cross WebProcess-only crossplatform WebCore bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540585</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-01-23 08:58:47 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; This will be fixed by that patch for https://bugs.webkit.org/show_bug.cgi?id=76063
&gt; 
&gt; Why this assertion?
&gt; 
&gt; 76063 repeatedly purports to be about WebKit2 API only yet this is a cross WebProcess-only crossplatform WebCore bug.

Reading through 76063 I now see that it is was more complicated in scope than the claimed &quot;Add a new WK2 API&quot; task.  *sigh*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540597</commentid>
    <comment_count>6</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-01-23 09:18:38 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; (In reply to comment #3)
&gt; &gt; &gt; This will be fixed by that patch for https://bugs.webkit.org/show_bug.cgi?id=76063
&gt; &gt; 
&gt; &gt; Why this assertion?
&gt; &gt; 
&gt; &gt; 76063 repeatedly purports to be about WebKit2 API only yet this is a cross WebProcess-only crossplatform WebCore bug.
&gt; 
&gt; Reading through 76063 I now see that it is was more complicated in scope than the claimed &quot;Add a new WK2 API&quot; task.  *sigh*

With the API old bugs were exposed and fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540600</commentid>
    <comment_count>7</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-01-23 09:21:23 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; (In reply to comment #4)
&gt; &gt; &gt; (In reply to comment #3)
&gt; &gt; &gt; &gt; This will be fixed by that patch for https://bugs.webkit.org/show_bug.cgi?id=76063
&gt; &gt; &gt; 
&gt; &gt; &gt; Why this assertion?
&gt; &gt; &gt; 
&gt; &gt; &gt; 76063 repeatedly purports to be about WebKit2 API only yet this is a cross WebProcess-only crossplatform WebCore bug.
&gt; &gt; 
&gt; &gt; Reading through 76063 I now see that it is was more complicated in scope than the claimed &quot;Add a new WK2 API&quot; task.  *sigh*
&gt; 
&gt; With the API old bugs were exposed and fixed.

It should be noted that without the new API it is hard to trigger cases of this bug, making it is practically impossible to test, and I am not going to submit patches without having tested them first. So the API is required.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540613</commentid>
    <comment_count>8</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-01-23 09:41:02 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; Reading through 76063 I now see that it is was more complicated in scope than the claimed &quot;Add a new WK2 API&quot; task.  *sigh*
&gt; 
&gt; With the API old bugs were exposed and fixed.

With the new API you exposed new ways of reproducing/noticing old bugs.

With the WebCore changes you fixed them.
(In reply to comment #7)
&gt; It should be noted that without the new API it is hard to trigger cases of this bug, making it is practically impossible to test, and I am not going to submit patches without having tested them first. So the API is required.

Mihai illustrated pure web content that would reproduce this bug as far back as a year ago.

Even if it&apos;s not 100% repro, it&apos;s better than no test coverage.

I&apos;m also not confused as to why you&apos;re unwilling to submit a patch without test coverage here, yet your patch in 76063 has no test coverage.  Besides not having a test is not an automatic disqualifier as our patch guidelines state &quot;If no layout test can be (or needs to be) constructed for the fix, you must explain why a new test isn&apos;t necessary&quot;

We like to keep a 1:1 relationship between patches and bugs as it makes it easier to track changes in behavior later, easier to roll out smaller changes, easier to review smaller patches, etc etc.  This policy is to make everyone&apos;s life easier.

Like it or not your patch in 76063 *DOES* do two logically separate things.  It fixes a cross platform WebCore bug and it adds new WebKit2 API.

Please reconsider splitting out the WebCore-only portion here,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540749</commentid>
    <comment_count>9</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-01-23 12:45:02 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Like it or not your patch in 76063 *DOES* do two logically separate things.  It fixes a cross platform WebCore bug and it adds new WebKit2 API.
&gt; 

I do not think it does two separate things. If this bug did not exist it would not have been an issue. It was pure accident I stumbled across this bug in the code comments. But for bugzilla clarity I wouldn&apos;t mind separating the patch. I do like to do at least manual tests, but this has been done, and the code is clear enough.

But please note that the last remaining reviewer comments I have against my patch (by Simon Fraser), are on the parts that would be a submitted here instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540774</commentid>
    <comment_count>10</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-01-23 13:08:29 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; Like it or not your patch in 76063 *DOES* do two logically separate things.  It fixes a cross platform WebCore bug and it adds new WebKit2 API.
&gt; &gt; 
&gt; 
&gt; I do not think it does two separate things. 

Yes it does.
1 - It fixes this long standing bug in WebCore, a task tracked here in bug 53733
2 - It adds new WebKit2 API giving the embedding application the ability to forcefully &quot;pause&quot; the web page, a task tracked by 76063

&gt; If this bug did not exist it would not have been an issue. 

If you&apos;re saying that if this bug existed then the separate task of adding new WebKit 2 API wouldn&apos;t be necessary then we should close 76063 as Invalid and just fix this bug!

&gt;It was pure accident I stumbled across this bug in the code comments. But for bugzilla clarity I wouldn&apos;t mind separating the patch. I do like to do at least manual tests, but this has been done, and the code is clear enough. 
&gt; But please note that the last remaining reviewer comments I have against my patch (by Simon Fraser), are on the parts that would be a submitted here instead.

That&apos;s fine, and he won&apos;t mind.  And I plan on thoroughly reviewing the patch here from scratch.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540777</commentid>
    <comment_count>11</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-01-23 13:09:39 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; 
&gt; If you&apos;re saying that if this bug existed then the separate task of adding new WebKit 2 API wouldn&apos;t be necessary then we should close 76063 as Invalid and just fix this bug!

Sorry I meant to say:
If you&apos;re saying that if this bug DID NOT EXIST then the separate task of adding new WebKit 2 API wouldn&apos;t be necessary, then we should close 76063 as Invalid and just fix this bug!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540832</commentid>
    <comment_count>12</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2012-01-23 14:16:07 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Mihai illustrated pure web content that would reproduce this bug as far back as a year ago.

I didn&apos;t actually create a test case for this bug (only bug 53648, which is related), but it should be easy to make a test case for this bug too. See http://persistent.info/webkit/test-cases/webkit-53733/main.html ( (it will alert &quot;I am running in a.html&quot; even after navigating away to dummy.html)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540833</commentid>
    <comment_count>13</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2012-01-23 14:20:00 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; I didn&apos;t actually create a test case for this bug (only bug 53648, which is related), but it should be easy to make a test case for this bug too. See http://persistent.info/webkit/test-cases/webkit-53733/main.html (it will alert &quot;I am running in a.html&quot; even after navigating away to dummy.html)

Just to be clear, that URL is a test for this bug, it should be easy to convert to a layout test (see the test case in http://trac.webkit.org/changeset/77559, the test logs when various bits of code execute, so the ordering of the log statements makes it easy to verify that no code execution is taking place while the page is in the page cache).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540982</commentid>
    <comment_count>14</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-01-23 16:52:04 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; 
&gt; &gt; If you&apos;re saying that if this bug existed then the separate task of adding new WebKit 2 API wouldn&apos;t be necessary then we should close 76063 as Invalid and just fix this bug!
&gt; 
&gt; Sorry I meant to say:
&gt; If you&apos;re saying that if this bug DID NOT EXIST then the separate task of adding new WebKit 2 API wouldn&apos;t be necessary, then we should close 76063 as Invalid and just fix this bug!

I did not mean to offend. My point was only that if this bug had not already filed, I wouldn&apos;t bother to file it separately, but it is a hypothetical question at this point so let us forget it and stick to the code :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541009</commentid>
    <comment_count>15</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-01-23 17:18:18 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #11)
&gt;My point was only that if this bug had not already filed, I wouldn&apos;t bother to file it separately, but it is a hypothetical question at this point so let us forget it and stick to the code :)

Especially since we have code ready to be a layout test!  Excited to see your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541182</commentid>
    <comment_count>16</comment_count>
      <attachid>123706</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-01-24 01:53:02 -0800</bug_when>
    <thetext>Created attachment 123706
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541186</commentid>
    <comment_count>17</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-01-24 01:57:46 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #14)
&gt; &gt; (In reply to comment #11)
&gt; &gt;My point was only that if this bug had not already filed, I wouldn&apos;t bother to file it separately, but it is a hypothetical question at this point so let us forget it and stick to the code :)
&gt; 
&gt; Especially since we have code ready to be a layout test!  Excited to see your patch.

I am not sure I can make that into a layout test. I will check, but it may at least be a manual test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541323</commentid>
    <comment_count>18</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-01-24 07:50:35 -0800</bug_when>
    <thetext>After some investigation, I think my patch is only a general solution to https://bugs.webkit.org/show_bug.cgi?id=53648 so that the API doesn&apos;t depend on the order of suspending and triggering onpagehide events.

This particular bug, or at least the attached test-case is not caused by inconsistency of suspending active dom-objects, but on timeouts being installed on the mainframe. 

In the test-case the timeout from a-frame is installed on the main frame, and correctly suspended, but the main frame is then reused for the new page where all active dom objects are resumed, including the timeouts of subframes of the old page.

At least that is how it looks to me currently. I will unlink the bugs, as it was not as related as it looked at first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541367</commentid>
    <comment_count>19</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-01-24 08:59:10 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #15)
&gt; &gt; (In reply to comment #14)
&gt; &gt; &gt; (In reply to comment #11)
&gt; &gt; &gt;My point was only that if this bug had not already filed, I wouldn&apos;t bother to file it separately, but it is a hypothetical question at this point so let us forget it and stick to the code :)
&gt; &gt; 
&gt; &gt; Especially since we have code ready to be a layout test!  Excited to see your patch.
&gt; 
&gt; I am not sure I can make that into a layout test. I will check, but it may at least be a manual test.

I don&apos;t see why it can&apos;t.  Can you say why you&apos;re having a hard time making it in to one?

(In reply to comment #18)
&gt; After some investigation, I think my patch is only a general solution to https://bugs.webkit.org/show_bug.cgi?id=53648 so that the API doesn&apos;t depend on the order of suspending and triggering onpagehide events.
&gt; 
&gt; This particular bug, or at least the attached test-case is not caused by inconsistency of suspending active dom-objects, but on timeouts being installed on the mainframe.

Indeed the test case is about a timeout being added on the mainframe.  It would manifest in almost the exact same way by adding an ActiveDOMObject during pagehide.

To support the API you wish to add you&apos;ll have to solve the problem with *all* elements on a page that need to be suspended.  That includes ActiveDOMObjects *and* timers, as well as any others that might be floating around out there.

&gt; In the test-case the timeout from a-frame is installed on the main frame, and correctly suspended, but the main frame is then reused for the new page where all active dom objects are resumed, including the timeouts of subframes of the old page.
&gt; 
&gt; At least that is how it looks to me currently. I will unlink the bugs, as it was not as related as it looked at first.

Why does it look that way?  That would be surprising to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541373</commentid>
    <comment_count>20</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2012-01-24 09:04:39 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; &gt; This particular bug, or at least the attached test-case is not caused by inconsistency of suspending active dom-objects, but on timeouts being installed on the mainframe.

Actually, timeouts are implemented by the SuspendableTimer class, which subclasses ActiveDOMObject.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541375</commentid>
    <comment_count>21</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2012-01-24 09:06:54 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; (In reply to comment #19)
&gt; &gt; &gt; This particular bug, or at least the attached test-case is not caused by inconsistency of suspending active dom-objects, but on timeouts being installed on the mainframe.
&gt; 
&gt; Actually, timeouts are implemented by the SuspendableTimer class, which subclasses ActiveDOMObject.

More accurately, DOMWindow::setTimeout creates a DOMTimer, which subclasses SuspendableTimer, which in turn sublcasses ActiveDOMObject.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541376</commentid>
    <comment_count>22</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-01-24 09:08:09 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #17)
&gt; &gt; I am not sure I can make that into a layout test. I will check, but it may at least be a manual test.
&gt; 
&gt; I don&apos;t see why it can&apos;t.  Can you say why you&apos;re having a hard time making it in to one?
&gt; 

I didn&apos;t. I had just missed one of the comments here. It was pretty simple with that information.

&gt; (In reply to comment #18)
&gt; 
&gt; Why does it look that way?  That would be surprising to me.

What I mean is that my current patch did not touch the code this bug is in, as I thought it did. It will still need to be solved, but I am decoupling the bugs as two separate task like you originally asked for.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541377</commentid>
    <comment_count>23</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-01-24 09:11:22 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; (In reply to comment #20)
&gt; &gt; (In reply to comment #19)
&gt; &gt; &gt; &gt; This particular bug, or at least the attached test-case is not caused by inconsistency of suspending active dom-objects, but on timeouts being installed on the mainframe.
&gt; &gt; 
&gt; &gt; Actually, timeouts are implemented by the SuspendableTimer class, which subclasses ActiveDOMObject.
&gt; 
&gt; More accurately, DOMWindow::setTimeout creates a DOMTimer, which subclasses SuspendableTimer, which in turn sublcasses ActiveDOMObject.

I know. The problem is that they remain in the same ScriptExecutionContext, so they are suspended as ActiveDOMObjects, but they are also resumed as ActiveDOMObjects because the main frame is reused for the new page. 

So the problem seems to be that CachedFrame doesn&apos;t store these DOMTimers somewhere before reusing the Frame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541407</commentid>
    <comment_count>24</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-01-24 09:50:32 -0800</bug_when>
    <thetext>(In reply to comment #23)
&gt; (In reply to comment #21)
&gt; &gt; (In reply to comment #20)
&gt; &gt; &gt; (In reply to comment #19)
&gt; &gt; &gt; &gt; &gt; This particular bug, or at least the attached test-case is not caused by inconsistency of suspending active dom-objects, but on timeouts being installed on the mainframe.
&gt; &gt; &gt; 
&gt; &gt; &gt; Actually, timeouts are implemented by the SuspendableTimer class, which subclasses ActiveDOMObject.
&gt; &gt; 
&gt; &gt; More accurately, DOMWindow::setTimeout creates a DOMTimer, which subclasses SuspendableTimer, which in turn sublcasses ActiveDOMObject.
&gt; 
&gt; I know. The problem is that they remain in the same ScriptExecutionContext, so they are suspended as ActiveDOMObjects, but they are also resumed as ActiveDOMObjects because the main frame is reused for the new page. 

The main frame is reused, yes.

But the ScriptExecutionContext is the Document, and when you navigate you get a new Document in the frame.

&gt; So the problem seems to be that CachedFrame doesn&apos;t store these DOMTimers somewhere before reusing the Frame.

CachedFrame stores off the Document, which is the ScriptExecutionContext that holds those timers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541466</commentid>
    <comment_count>25</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-01-24 10:44:47 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; (In reply to comment #23)
&gt; &gt; I know. The problem is that they remain in the same ScriptExecutionContext, so they are suspended as ActiveDOMObjects, but they are also resumed as ActiveDOMObjects because the main frame is reused for the new page. 
&gt; 
&gt; The main frame is reused, yes.
&gt; 
&gt; But the ScriptExecutionContext is the Document, and when you navigate you get a new Document in the frame.
&gt; 
&gt; &gt; So the problem seems to be that CachedFrame doesn&apos;t store these DOMTimers somewhere before reusing the Frame.
&gt; 
&gt; CachedFrame stores off the Document, which is the ScriptExecutionContext that holds those timers.

Then I misinterpreted what I saw. I inspected the timer to see what happened to it when the new page was loaded, and I could see it was suspended with SuspendableTimer::suspend() called from ScriptExecutionContext::suspendActiveDOMObjects() when the page was hidden, and was resumed with a SuspendableTimer::resume() called from ScriptExecutionContext::resumeActiveDOMObjects() after the new page was loaded and immediately before the alert was shown.

I haven&apos;t yet investigated what calls resumeActiveDOMObjects() on a document in PageCache. I guess this will be the next step. I only concluded it was correctly suspended in the first place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542255</commentid>
    <comment_count>26</comment_count>
      <attachid>123937</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-01-25 07:38:34 -0800</bug_when>
    <thetext>Created attachment 123937
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542257</commentid>
    <comment_count>27</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-01-25 07:41:02 -0800</bug_when>
    <thetext>My analysis yesterday was based on faulty output. I traced the odd output I was seeing to virtual functions called from constructors. 

The method to maintain the suspend-state has now been moved to a post-constructor method, and is called from the static create functions for active DOM objects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542258</commentid>
    <comment_count>28</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-25 07:41:41 -0800</bug_when>
    <thetext>Attachment 123937 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast...&quot; exit_code: 1

Source/WebCore/fileapi/FileReader.cpp:54:  Declaration has space between type name and * in FileReader *fileReader  [whitespace/declaration] [3]
Source/WebCore/fileapi/FileWriter.cpp:51:  Declaration has space between type name and * in FileWriter *fileWriter  [whitespace/declaration] [3]
Source/WebCore/websockets/WebSocket.cpp:169:  Declaration has space between type name and * in WebSocket *webSocket  [whitespace/declaration] [3]
Source/WebCore/websockets/WebSocket.h:56:  The parameter name &quot;context&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/fileapi/FileWriter.h:51:  The parameter name &quot;context&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 5 in 22 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542270</commentid>
    <comment_count>29</comment_count>
      <attachid>123942</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-01-25 07:58:25 -0800</bug_when>
    <thetext>Created attachment 123942
Patch

Fixed coding style</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542323</commentid>
    <comment_count>30</comment_count>
      <attachid>123942</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-01-25 09:05:13 -0800</bug_when>
    <thetext>Comment on attachment 123942
Patch

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

Can didCreateActiveDOMObject be merged with didInstallActiveDOMObject? 

This change makes the interface bigger and even more confusing, relying on manual work that can be easily forgotten.

&gt; Source/WebCore/ChangeLog:38
&gt; +        (FileReader):
&gt; +        ():

prepare-ChangeLog creates this list so that patch authors could put useful information here. Script mistakes need to be corrected manually.

&gt; Source/WebCore/fileapi/FileReader.cpp:51
&gt; +// static

We don&apos;t normally add such comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542373</commentid>
    <comment_count>31</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-01-25 09:44:50 -0800</bug_when>
    <thetext>(In reply to comment #30)
&gt; (From update of attachment 123942 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=123942&amp;action=review
&gt; 
&gt; Can didCreateActiveDOMObject be merged with didInstallActiveDOMObject? 
&gt; 
&gt; This change makes the interface bigger and even more confusing, relying on manual work that can be easily forgotten.
&gt; 
This was what I started with, but I realized that didCreateActiveDOMObject is called from the ActiveDOMObject constructor and didInstallActiveDOMObject calls suspend() which is a virtual function. Calling virtual functions from a constructor does not work, but instead just does the function call as if it was not virtual (I wished they would be crash, because they create such obscure bugs). So a manual function call after the constructor is unfortunately required for any ActiveDOMObjects that implements suspend. 

If we could rely on C++11, it would be possible to make a inherited constructor, but for C++ in general and for a cross platform project like this I do not think it is possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542380</commentid>
    <comment_count>32</comment_count>
      <attachid>123942</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-25 09:50:21 -0800</bug_when>
    <thetext>Comment on attachment 123942
Patch

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

New failing tests:
fast/events/suspend-timers.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542458</commentid>
    <comment_count>33</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-01-25 11:03:12 -0800</bug_when>
    <thetext>Good point. Can we get rid of didCreate then?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542633</commentid>
    <comment_count>34</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-01-25 14:32:01 -0800</bug_when>
    <thetext>(In reply to comment #33)
&gt; Good point. Can we get rid of didCreate then?

I gave that some serious though, but the didCreateActiveDOMObject  matches the didCreateDestructionObserver, and forms a set together with the willDestroy.. functions, all called from constructors and destructors. I do not want to break up a perfect pattern of matching similar functions.

Perhaps a better design were the all registration functions were called after the constructors would be better, but redesigning all these functions is beyond this bug-fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542651</commentid>
    <comment_count>35</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-01-25 14:47:13 -0800</bug_when>
    <thetext>I don&apos;t think that destruction observer should have any impact on ActiveDOMObject design.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542979</commentid>
    <comment_count>36</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-01-26 02:00:07 -0800</bug_when>
    <thetext>(In reply to comment #35)
&gt; I don&apos;t think that destruction observer should have any impact on ActiveDOMObject design.

All ActiveDOMObjects are also DestructionObservers (they even defined in the same header file ActiveDOMObject.h). I feel it is more logical if the functions that operate on them behave in the same way.

didCreateActiveDOMObject - called from the constructor, and can be relied on having been called in inherited constructors
didCreateDestructionObserver - called from the constructor, and can be relied on having been called in inherited constructors

willDestroyActiveDOMObject - called from the destructor
willDestroyDestructionObserver - called from the destructor

didInstallActiveDOMObjects - called after the constructor, and can not be relied on having been called in inherited constructors, but can use virtual functions.

If I merged didInstall and didCreate, the functions would no longer operate similar to destruction observers, and I would have to check all functions called from constructors of inherited ActiveDOMObjects to see if the rely on ActiveDOMObjects already being registered in the ScriptExecutionContext (it would be a classic ASSERT for instance).

I do think there are way to many of these setup functions, and is not even sure why active DOM objects and destruction observers are accounted separately, but someone has designed it this way, and currently it has a very symmetric and predicable definition that I would hate to change in a bug-fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543133</commentid>
    <comment_count>37</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2012-01-26 07:11:39 -0800</bug_when>
    <thetext>As an alternate fix to this bug (which couldn&apos;t involve any changes to ActiveDOMObject or its subclasses), did you consider my initial comment: &quot;separate the recursion steps; one full pass to fire pagehide and another to suspend active DOM objects.&quot;? It might be as easy as moving lines 167 to 175 of CachedFrame.cpp to a separate function that is called after the CachedFrame constructor. Something like:

PassRefPtr&lt;CachedFrame&gt; CachedFrame::create(Frame* frame)
{
  // Will fire pagehide event handlers.
  RefPtr&lt;CachedFrame&gt; cachedFrame = adoptRef(new CachedFrame(frame));
  // Only after we&apos;ve stopped executing script can we suspend active DOM in the frame tree.
  cachedFrame-&gt;suspend();
  return cachedFrame-&gt;release();
}

CachedFrame::suspend()
{
  m_document-&gt;documentWillSuspendForPageCache();
  m_document-&gt;suspendScriptedAnimationControllerCallbacks();
  m_document-&gt;suspendActiveDOMObjects(ActiveDOMObject::DocumentWillBecomeInactive);
  m_cachedFrameScriptData = adoptPtr(new ScriptCachedFrameData(frame));

  for (unsigned i = 0; i &lt; m_childFrames.size(); ++i)
    m_childFrames[i]-&gt;suspend();
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543141</commentid>
    <comment_count>38</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-01-26 07:23:23 -0800</bug_when>
    <thetext>(In reply to comment #37)
&gt; As an alternate fix to this bug (which couldn&apos;t involve any changes to ActiveDOMObject or its subclasses), did you consider my initial comment: &quot;separate the recursion steps; one full pass to fire pagehide and another to suspend active DOM objects.&quot;? It might be as easy as moving lines 167 to 175 of CachedFrame.cpp to a separate function that is called after the CachedFrame 

That would solve the bug for the case of suspending when moving to pageCache, but It would not solve the bug generally. They way I discovered the bug, was from  the new pagePaused API, which had the same problem of timers firing after they were supposed to be suspended. I need a general solution, not a work-around in CachedFrame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543223</commentid>
    <comment_count>39</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-01-26 10:01:48 -0800</bug_when>
    <thetext>(In reply to comment #38)
&gt; (In reply to comment #37)
&gt; &gt; As an alternate fix to this bug (which couldn&apos;t involve any changes to ActiveDOMObject or its subclasses), did you consider my initial comment: &quot;separate the recursion steps; one full pass to fire pagehide and another to suspend active DOM objects.&quot;? It might be as easy as moving lines 167 to 175 of CachedFrame.cpp to a separate function that is called after the CachedFrame 
&gt; 
&gt; That would solve the bug for the case of suspending when moving to pageCache, but It would not solve the bug generally. They way I discovered the bug, was from  the new pagePaused API, which had the same problem of timers firing after they were supposed to be suspended. I need a general solution, not a work-around in CachedFrame.

Indeed.  In general we have a few places lurking in WebCore code where we try to put some object into some state, and by doing so we run some javascript, and that javascript invalidates what we&apos;re trying to do.

I like that we&apos;re close to identifying a way to *actually* solve the problem at least in this one case, and I think we shouldn&apos;t stop short of doing so.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543951</commentid>
    <comment_count>40</comment_count>
      <attachid>124286</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-01-27 04:01:37 -0800</bug_when>
    <thetext>Created attachment 124286
Patch

Updated patch. 

Fixed comments.

Call didInstallActiveDOMObjects for AbstractWorker subclasses as well, even though they don&apos;t use the suspend API, this makes the didInstallActiveDOMObjects universally called from all descendants of ActiveDOMObjects.

Moved expected result to qt only, because I do not have the ability to test all platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543957</commentid>
    <comment_count>41</comment_count>
      <attachid>124288</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-01-27 04:12:21 -0800</bug_when>
    <thetext>Created attachment 124288
Patch

Quick update: Moved expected result back to main, and just set Chromium to skip it. Hopefully all the other required platforms will have support for PageCache.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543958</commentid>
    <comment_count>42</comment_count>
      <attachid>124289</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-01-27 04:14:55 -0800</bug_when>
    <thetext>Created attachment 124289
Patch

Remember to update ChangeLog after moving file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544223</commentid>
    <comment_count>43</comment_count>
      <attachid>124289</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-01-27 11:48:42 -0800</bug_when>
    <thetext>Comment on attachment 124289
Patch

Maybe it is better to call didInstallActiveDOMObject in the ctor of ActiveDOMObejct? Anyway, just FYI, database callbacks are probably also ActiveDOMObjects. It would be nice if we could guarantee no JS will be executed once we stop all active dom objects on the page. Maybe we can dispatch the hide event to the page before caching it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544947</commentid>
    <comment_count>44</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-01-30 01:50:37 -0800</bug_when>
    <thetext>(In reply to comment #43)
&gt; (From update of attachment 124289 [details])
&gt; Maybe it is better to call didInstallActiveDOMObject in the ctor of ActiveDOMObejct? Anyway, just FYI, database callbacks are probably also ActiveDOMObjects. It would be nice if we could guarantee no JS will be executed once we stop all active dom objects on the page. Maybe we can dispatch the hide event to the page before caching it?

As already mentioned in both the ChangeLog and the discussion about didInstallActiveDOMObject can not be called from the ctor of ActiveDOMObject because it may need to call the virtual function suspend().

I think you are right about database objects, I thought I did a full search, but I seem to have missed a few classes. I will try again, and upload a new patch once I am sure I have caught all Active DOM Object derivatives.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545031</commentid>
    <comment_count>45</comment_count>
      <attachid>124529</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-01-30 05:12:50 -0800</bug_when>
    <thetext>Created attachment 124529
Patch

Update of creation hooks after deep-search for all classes inherited by ActiveDOMObject.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545043</commentid>
    <comment_count>46</comment_count>
      <attachid>124529</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-30 05:35:43 -0800</bug_when>
    <thetext>Comment on attachment 124529
Patch

Attachment 124529 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11360889</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545051</commentid>
    <comment_count>47</comment_count>
      <attachid>124537</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-01-30 05:49:08 -0800</bug_when>
    <thetext>Created attachment 124537
Patch

Avoid local name overload.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545069</commentid>
    <comment_count>48</comment_count>
      <attachid>124537</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-30 06:33:29 -0800</bug_when>
    <thetext>Comment on attachment 124537
Patch

Attachment 124537 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11366581</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545092</commentid>
    <comment_count>49</comment_count>
      <attachid>124548</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-01-30 07:34:34 -0800</bug_when>
    <thetext>Created attachment 124548
Patch

Compiled and regression tested with both Qt and Chromium platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545242</commentid>
    <comment_count>50</comment_count>
      <attachid>124548</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-30 11:41:54 -0800</bug_when>
    <thetext>Comment on attachment 124548
Patch

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

Should this work be done by the base class?  Having all the subclasses call didInstallActiveDOMObject seems error-prone.

&gt; Source/WebCore/Modules/intents/IntentRequest.cpp:44
&gt; +    IntentRequest* intentRequest = new IntentRequest(context, intent, successCallback, errorCallback);

Please call adoptRef right away.  You can then use release() at in the return statement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545245</commentid>
    <comment_count>51</comment_count>
      <attachid>124548</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-30 11:45:23 -0800</bug_when>
    <thetext>Comment on attachment 124548
Patch

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

I really don&apos;t like the need to have every subclass of ActiveDOMObject call didInstallActiveDOMObject.  That&apos;s not going to scale well.

&gt; Source/WebCore/dom/ScriptExecutionContext.cpp:266
&gt; +void ScriptExecutionContext::didInstallActiveDOMObject(ActiveDOMObject* object)
&gt; +{
&gt; +    ASSERT(m_activeDOMObjects.contains(object));
&gt; +    // Ensure all ActiveDOMObjects are suspended also newly created ones.
&gt; +    if (m_activeDOMObjectsAreSuspended)
&gt; +        object-&gt;suspend(m_suspendReason);
&gt; +}

Why can&apos;t this work be done in didCreateActiveDOMObject ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545250</commentid>
    <comment_count>52</comment_count>
      <attachid>124548</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2012-01-30 11:49:14 -0800</bug_when>
    <thetext>Comment on attachment 124548
Patch

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

&gt;&gt; Source/WebCore/dom/ScriptExecutionContext.cpp:266
&gt;&gt; +}
&gt; 
&gt; Why can&apos;t this work be done in didCreateActiveDOMObject ?

didInstallActiveDOMObject may call suspend(), which is a virtual method.  didCreateActiveDOMObject is called by the ActiveDOMObject (i.e. base class) constructor, so it won&apos;t get the right implementation of suspend().

An alternative implementation is to move the didCreateActiveDOMObject call from the ActiveDOMObject&apos;s constructor to each of the subclasses&apos; constructors. It&apos;s still sucky that it has to be repeated everywhere, but at least it&apos;s more encapsulated (vs. having to remember to call it every time a instance is created).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545258</commentid>
    <comment_count>53</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-30 11:59:31 -0800</bug_when>
    <thetext>Hum...  Maybe we should move the didCreateActiveDOMObject call into the subclass constructor so that things won&apos;t work at all if you forget to call it.  That might help future contributors not forget.  In the approach used by this patch, forgetting the call leads to a subtle bug, not an obvious bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545261</commentid>
    <comment_count>54</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-01-30 12:01:26 -0800</bug_when>
    <thetext>(In reply to comment #52)
&gt; (From update of attachment 124548 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=124548&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/dom/ScriptExecutionContext.cpp:266
&gt; &gt;&gt; +}
&gt; &gt; 
&gt; &gt; Why can&apos;t this work be done in didCreateActiveDOMObject ?
&gt; 
&gt; didInstallActiveDOMObject may call suspend(), which is a virtual method.  didCreateActiveDOMObject is called by the ActiveDOMObject (i.e. base class) constructor, so it won&apos;t get the right implementation of suspend().
&gt; 
&gt; An alternative implementation is to move the didCreateActiveDOMObject call from the ActiveDOMObject&apos;s constructor to each of the subclasses&apos; constructors. It&apos;s still sucky that it has to be repeated everywhere, but at least it&apos;s more encapsulated (vs. having to remember to call it every time a instance is created).

Since all classes had the static &apos;create&apos; function, it seemed safer to call it there. 

I was thinking about instead of calling didInstallActiveDOMObject, then making a virtual ActiveDOMObject::postConstructor and calling that from the static create functions. If something like this is needed elsewhere it could be a common pattern in WebKit. This way it is possible to have virtual post-constructors where-ever needed. I can think of many places this would be useful, and it could possible be integrated with a special version of adoptRef.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545271</commentid>
    <comment_count>55</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-01-30 12:05:39 -0800</bug_when>
    <thetext>(In reply to comment #53)
&gt; Hum...  Maybe we should move the didCreateActiveDOMObject call into the subclass constructor so that things won&apos;t work at all if you forget to call it.  That might help future contributors not forget.  In the approach used by this patch, forgetting the call leads to a subtle bug, not an obvious bug.

Calling didCreateActiveDOMObject from subclass constructors could still lead to subtle bugs in later subclasses. For instance the abstract worker classes does not implement suspend, but inherit from ActiveDOMObject, a subclass could reimplement suspend, but if the abstract worker calls didCreateActiveDOMObject, the correct suspend function would never be called. This is why I prefer calling these functions after the object have been completely constructed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545273</commentid>
    <comment_count>56</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-30 12:07:46 -0800</bug_when>
    <thetext>The general postConstructor sounds a bit over designed.  Let&apos;s start by solving the current problem.  If this pattern recurs, we can generalize it in the future.

Having the call in the create function sounds fine.  Having things fail catastrophically rather than subtly is important.  Perhaps we should also have a debug-only bool on ActiveDOMObject and an ASSERT in the ActiveDOMObject destructor to make sure that all subclasses drive this part of the lifecycle correctly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545276</commentid>
    <comment_count>57</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-01-30 12:09:09 -0800</bug_when>
    <thetext>(In reply to comment #44)
&gt; (In reply to comment #43)
&gt; &gt; (From update of attachment 124289 [details] [details])
&gt; &gt; Maybe it is better to call didInstallActiveDOMObject in the ctor of ActiveDOMObejct? Anyway, just FYI, database callbacks are probably also ActiveDOMObjects. It would be nice if we could guarantee no JS will be executed once we stop all active dom objects on the page. Maybe we can dispatch the hide event to the page before caching it?
&gt; 
&gt; As already mentioned in both the ChangeLog and the discussion about didInstallActiveDOMObject can not be called from the ctor of ActiveDOMObject because it may need to call the virtual function suspend().

Yeah, I realized that. But is there anything we can try like letting all derived classes know they are suspended at creation? Anyway, I just see the risk that we can miss some cases now or in the future. Forcing a change to ActiveDOMObject ctor can help find out all the derived classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545288</commentid>
    <comment_count>58</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-01-30 12:13:08 -0800</bug_when>
    <thetext>(In reply to comment #56)
&gt; The general postConstructor sounds a bit over designed.  Let&apos;s start by solving the current problem.  If this pattern recurs, we can generalize it in the future.
&gt; 
&gt; Having the call in the create function sounds fine.  Having things fail catastrophically rather than subtly is important.  Perhaps we should also have a debug-only bool on ActiveDOMObject and an ASSERT in the ActiveDOMObject destructor to make sure that all subclasses drive this part of the lifecycle correctly.

Sounds like a good idea. It could be asserted several places in fact to even ensure fast crashes for developers. Unless there are any objections, I will make this addition tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545940</commentid>
    <comment_count>59</comment_count>
      <attachid>124706</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-01-31 04:12:47 -0800</bug_when>
    <thetext>Created attachment 124706
Patch

Add special ASSERT flag to ActiveDOMObject to enforce correct behavior on debug builds.

Rename didInstall.. to suspendIfNeeded so it describes what it actually does.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545941</commentid>
    <comment_count>60</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-31 04:14:12 -0800</bug_when>
    <thetext>Attachment 124706 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;]&quot; exit_code: 9

Updating OpenSource
First, rewinding head to replay your work on top of it...
Applying: Fix compilation errors on build-webkit --debug --no-workers on mac.
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Auto-merging LayoutTests/ChangeLog
CONFLICT (content): Merge conflict in LayoutTests/ChangeLog
Auto-merging LayoutTests/platform/qt/Skipped
CONFLICT (content): Merge conflict in LayoutTests/platform/qt/Skipped
Auto-merging Source/WebCore/ChangeLog
CONFLICT (content): Merge conflict in Source/WebCore/ChangeLog
Failed to merge in the changes.
Patch failed at 0001 Fix compilation errors on build-webkit --debug --no-workers on mac.

When you have resolved this problem run &quot;git rebase --continue&quot;.
If you would prefer to skip this patch, instead run &quot;git rebase --skip&quot;.
To restore the original branch and stop rebasing run &quot;git rebase --abort&quot;.

rebase refs/remotes/origin/master: command returned error: 1

Died at Tools/Scripts/update-webkit line 164.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545950</commentid>
    <comment_count>61</comment_count>
      <attachid>124708</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-01-31 04:48:46 -0800</bug_when>
    <thetext>Created attachment 124708
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545952</commentid>
    <comment_count>62</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-31 04:50:40 -0800</bug_when>
    <thetext>Attachment 124708 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;]&quot; exit_code: 9

Updating OpenSource
First, rewinding head to replay your work on top of it...
Applying: Fix compilation errors on build-webkit --debug --no-workers on mac.
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Auto-merging LayoutTests/ChangeLog
CONFLICT (content): Merge conflict in LayoutTests/ChangeLog
Auto-merging LayoutTests/platform/qt/Skipped
CONFLICT (content): Merge conflict in LayoutTests/platform/qt/Skipped
Auto-merging Source/WebCore/ChangeLog
CONFLICT (content): Merge conflict in Source/WebCore/ChangeLog
Failed to merge in the changes.
Patch failed at 0001 Fix compilation errors on build-webkit --debug --no-workers on mac.

When you have resolved this problem run &quot;git rebase --continue&quot;.
If you would prefer to skip this patch, instead run &quot;git rebase --skip&quot;.
To restore the original branch and stop rebasing run &quot;git rebase --abort&quot;.

rebase refs/remotes/origin/master: command returned error: 1

Died at Tools/Scripts/update-webkit line 164.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546114</commentid>
    <comment_count>63</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-01-31 08:55:11 -0800</bug_when>
    <thetext>See also: bug 77370.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547188</commentid>
    <comment_count>64</comment_count>
      <attachid>124708</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2012-02-01 10:34:56 -0800</bug_when>
    <thetext>Comment on attachment 124708
Patch

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

Almost there.

&gt; Source/WebCore/dom/ActiveDOMObject.cpp:63
&gt; +    , m_suspendUptodate(false)

The name of this is slightly awkward. Maybe call it m_suspendIfNeededCalled?

&gt; Source/WebCore/dom/ScriptExecutionContext.cpp:208
&gt; +        ASSERT(iter-&gt;first-&gt;scriptExecutionContext() == this &amp;&amp; iter-&gt;first-&gt;m_suspendUptodate);

Can you move the new check to its own ASSERT statement, so that that if it fails it&apos;s easier to see which one was responsible (applies below too)?

Also, there should be a getter for the property (which should be private), since it should not be mutable by others.

&gt; Source/WebCore/page/SuspendableTimer.cpp:39
&gt; +#if !ASSERT_DISABLED

Why this change (making m_active be available for release builds)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547733</commentid>
    <comment_count>65</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-02-02 01:31:40 -0800</bug_when>
    <thetext>(In reply to comment #64)
&gt; (From update of attachment 124708 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=124708&amp;action=review
&gt; 
&gt; Almost there.
&gt; 
&gt; &gt; Source/WebCore/dom/ActiveDOMObject.cpp:63
&gt; &gt; +    , m_suspendUptodate(false)
&gt; 
&gt; The name of this is slightly awkward. Maybe call it m_suspendIfNeededCalled?
&gt; 
It was named from an ASSERT point-of-view. If suspendIfNeeded has been called, then we are sure suspend is fully updated, but I will rename it.

&gt; &gt; Source/WebCore/dom/ScriptExecutionContext.cpp:208
&gt; &gt; +        ASSERT(iter-&gt;first-&gt;scriptExecutionContext() == this &amp;&amp; iter-&gt;first-&gt;m_suspendUptodate);
&gt; 
&gt; Can you move the new check to its own ASSERT statement, so that that if it fails it&apos;s easier to see which one was responsible (applies below too)?
&gt; 
&gt; Also, there should be a getter for the property (which should be private), since it should not be mutable by others.
&gt; 
Okay, I just didn&apos;t want to add an ASSERT-only function, which is why I made it public.

&gt; &gt; Source/WebCore/page/SuspendableTimer.cpp:39
&gt; &gt; +#if !ASSERT_DISABLED
&gt; 
&gt; Why this change (making m_active be available for release builds)?

It only changes the constructor. m_active is already available on release builds, it just isn&apos;t initialized. It is not a real bug though since bools defaults to being initialized to false, but it is certainly a mistake, which is why I fixed it while debugging the class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547741</commentid>
    <comment_count>66</comment_count>
      <attachid>125100</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-02-02 02:00:21 -0800</bug_when>
    <thetext>Created attachment 125100
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548159</commentid>
    <comment_count>67</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-02-02 14:17:55 -0800</bug_when>
    <thetext>(In reply to comment #65)

&gt; ...It is not a real bug though since bools defaults to being initialized to false.

Not true in C++, except static members.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548214</commentid>
    <comment_count>68</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-02 15:48:58 -0800</bug_when>
    <thetext>Is this patch ready to land?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548253</commentid>
    <comment_count>69</comment_count>
      <attachid>125100</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-02 16:46:37 -0800</bug_when>
    <thetext>Comment on attachment 125100
Patch

Rejecting attachment 125100 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
om/ActiveDOMObject.h:58: error: expected &apos;;&apos; before &apos;}&apos; token
make: *** [out/Debug/obj.target/webcore_bindings/gen/webkit/bindings/V8DerivedSources04.o] Error 1
make: *** Waiting for unfinished jobs....
make: *** [out/Debug/obj.target/webcore_bindings/gen/webkit/bindings/V8DerivedSources01.o] Error 1
make: *** [out/Debug/obj.target/webcore_bindings/gen/webkit/bindings/V8DerivedSources03.o] Error 1
make: *** [out/Debug/obj.target/webcore_bindings/gen/webkit/bindings/V8DerivedSources02.o] Error 1

Full output: http://queues.webkit.org/results/11386983</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548598</commentid>
    <comment_count>70</comment_count>
      <attachid>125297</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-02-03 02:44:08 -0800</bug_when>
    <thetext>Created attachment 125297
Patch

I needed to ensure the assertions actually compiled and worked after the last rename.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548623</commentid>
    <comment_count>71</comment_count>
      <attachid>125305</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-02-03 04:00:14 -0800</bug_when>
    <thetext>Created attachment 125305
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548624</commentid>
    <comment_count>72</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-02-03 04:01:07 -0800</bug_when>
    <thetext>(In reply to comment #71)
&gt; Created an attachment (id=125305) [details]
&gt; Patch for landing

Misplaced semicolon failed debug-build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548656</commentid>
    <comment_count>73</comment_count>
      <attachid>125305</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-03 05:42:35 -0800</bug_when>
    <thetext>Comment on attachment 125305
Patch for landing

Clearing flags on attachment: 125305

Committed r106654: &lt;http://trac.webkit.org/changeset/106654&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548657</commentid>
    <comment_count>74</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-03 05:42:46 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548727</commentid>
    <comment_count>75</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-02-03 08:16:55 -0800</bug_when>
    <thetext>Reopen, because it made many tests assert in debug mode:
http://build.webkit.sed.hu/results/x86-64%20Linux%20Qt%20Debug/r106654%20%2820860%29/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548772</commentid>
    <comment_count>76</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-02-03 08:57:11 -0800</bug_when>
    <thetext>(In reply to comment #75)
&gt; Reopen, because it made many tests assert in debug mode:
&gt; http://build.webkit.sed.hu/results/x86-64%20Linux%20Qt%20Debug/r106654%20%2820860%29/results.html

Rolled out in r106667.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549860</commentid>
    <comment_count>77</comment_count>
      <attachid>125603</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-02-06 02:35:50 -0800</bug_when>
    <thetext>Created attachment 125603
Patch for landing

In Worker::create and SharedWorker::Create move the call to suspendIfNeeded up before the first exit of the create function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549896</commentid>
    <comment_count>78</comment_count>
      <attachid>125603</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-06 04:36:55 -0800</bug_when>
    <thetext>Comment on attachment 125603
Patch for landing

Clearing flags on attachment: 125603

Committed r106797: &lt;http://trac.webkit.org/changeset/106797&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549897</commentid>
    <comment_count>79</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-06 04:37:09 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550135</commentid>
    <comment_count>80</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-02-06 11:31:59 -0800</bug_when>
    <thetext>The change has caused some ASSERTs on ToT (see bug 77868 for example but I am seeing those errors also in webaudio). Allan, here is the link to the failing tests:

http://test-results.appspot.com/dashboards/flakiness_dashboard.html#showExpectations=true&amp;tests=webaudio%2Fmediaelementaudiosourcenode-gc.html%2Cwebaudio%2Fsample-accurate-scheduling.html%2Cwebaudio%2Fdelaynode-scheduling.html%2Cwebaudio%2Fdistance-exponential.html%2Cwebaudio%2Fdistance-linear.html%2Cwebaudio%2Fbiquad-highshelf.html%2Cwebaudio%2Fbiquad-peaking.html%2Cwebaudio%2Faudionode-connect-order.html%2Cwebaudio%2Fbiquad-lowshelf.html%2Cwebaudio%2Fnote-grain-on-play.html%2Cwebaudio%2Fpanner-equalpower.html%2Cwebaudio%2Fbiquad-bandpass.html%2Cwebaudio%2Faudiobuffersource.html

I rolled out the patch and the follow up in &lt;http://trac.webkit.org/changeset/106823&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550150</commentid>
    <comment_count>81</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-02-06 11:46:39 -0800</bug_when>
    <thetext>(In reply to comment #80)
&gt; The change has caused some ASSERTs on ToT (see bug 77868 for example but I am seeing those errors also in webaudio). Allan, here is the link to the failing tests:
&gt; 
&gt; http://test-results.appspot.com/dashboards/flakiness_dashboard.html#showExpectations=true&amp;tests=webaudio%2Fmediaelementaudiosourcenode-gc.html%2Cwebaudio%2Fsample-accurate-scheduling.html%2Cwebaudio%2Fdelaynode-scheduling.html%2Cwebaudio%2Fdistance-exponential.html%2Cwebaudio%2Fdistance-linear.html%2Cwebaudio%2Fbiquad-highshelf.html%2Cwebaudio%2Fbiquad-peaking.html%2Cwebaudio%2Faudionode-connect-order.html%2Cwebaudio%2Fbiquad-lowshelf.html%2Cwebaudio%2Fnote-grain-on-play.html%2Cwebaudio%2Fpanner-equalpower.html%2Cwebaudio%2Fbiquad-bandpass.html%2Cwebaudio%2Faudiobuffersource.html
&gt; 
&gt; I rolled out the patch and the follow up in &lt;http://trac.webkit.org/changeset/106823&gt;.

I have run all the enabled tests on Chromium on all of the committed patches, but there appears to be a load of tests tested by your bot that are not tested in a default run of testrunner. Is there a way I can get a list of parameters to give the testrunner to get all the tests that you expect to pass?
Or possibly if you have a setup that runs all the tests, then make the bot run ALL of them so they can be fixed in one go?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550239</commentid>
    <comment_count>82</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-06 13:17:27 -0800</bug_when>
    <thetext>The bot just runs the same set of tests that you&apos;d run with run-webkit-tests --chromium.  Maybe you tried a release build and that&apos;s why you didn&apos;t see the ASSERT?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550704</commentid>
    <comment_count>83</comment_count>
      <attachid>125781</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-02-07 01:14:59 -0800</bug_when>
    <thetext>Created attachment 125781
Patch

Call suspendIfNeeded() from the second AudioContext creator function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550706</commentid>
    <comment_count>84</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-02-07 01:16:51 -0800</bug_when>
    <thetext>(In reply to comment #82)
&gt; The bot just runs the same set of tests that you&apos;d run with run-webkit-tests --chromium.  Maybe you tried a release build and that&apos;s why you didn&apos;t see the ASSERT?

No I run &apos;run-webkit-tests --chromium --debug&apos;. The problem is that neither the tests in storage/indexeddb or webaudio are run by this default run. I have to run these two directories of tests manually afterwards. I can understand these features might be under development, it is just unfortunate that tests that are expected to work are not included in a default run of run-webkit-tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550710</commentid>
    <comment_count>85</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-02-07 01:34:46 -0800</bug_when>
    <thetext>I followed the issues related to calling virtual methods in constructors, but the technique adopted by this patch is very fragile. Every time someone adds a new active DOM object without remember to call suspendIfNeeded() in the ctor, stuff is going to break again in hard-to-find ways. You really need some compile-time warning, or something that &quot;just works&quot; here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550713</commentid>
    <comment_count>86</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-02-07 01:40:00 -0800</bug_when>
    <thetext>(In reply to comment #85)
&gt; I followed the issues related to calling virtual methods in constructors, but the technique adopted by this patch is very fragile. Every time someone adds a new active DOM object without remember to call suspendIfNeeded() in the ctor, stuff is going to break again in hard-to-find ways. You really need some compile-time warning, or something that &quot;just works&quot; here.

I am wondering, how this will affect the web components work, Dimitri?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550732</commentid>
    <comment_count>87</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-02-07 02:01:00 -0800</bug_when>
    <thetext>(In reply to comment #85)
&gt; I followed the issues related to calling virtual methods in constructors, but the technique adopted by this patch is very fragile. Every time someone adds a new active DOM object without remember to call suspendIfNeeded() in the ctor, stuff is going to break again in hard-to-find ways. You really need some compile-time warning, or something that &quot;just works&quot; here.

This is why we have the ASSERT. It is not hard to find. You just need to run any test that creates this kind of object and the ASSERT will catch it if you haven&apos;t called suspendIfNeeded. What is happening right now for instance is that all the cases not found by inspection is caught by this assert, so there is no way any hard-to-find bugs will pop up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553129</commentid>
    <comment_count>88</comment_count>
      <attachid>125781</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-09 06:49:38 -0800</bug_when>
    <thetext>Comment on attachment 125781
Patch

Clearing flags on attachment: 125781

Committed r107239: &lt;http://trac.webkit.org/changeset/107239&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553130</commentid>
    <comment_count>89</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-09 06:49:49 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648328</commentid>
    <comment_count>90</comment_count>
      <attachid>125781</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-06-13 12:01:15 -0700</bug_when>
    <thetext>Comment on attachment 125781
Patch

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

&gt; Source/WebCore/page/DOMTimer.cpp:95
&gt;      DOMTimer* timer = new DOMTimer(context, action, timeout, singleShot);
&gt;  
&gt; +    timer-&gt;suspendIfNeeded();

So DOMTimer::suspendIfNeeded() calls ScriptExecutionContext::suspendActiveDOMObjectIfNeeded, which uses m_reasonForSuspendingActiveDOMObjects. What guarantees that m_reasonForSuspendingActiveDOMObjects is correct here?

It&apos;s really unclear to me what &quot;IfNeeded&quot; part means in function name. For example, if the object is already suspended, should suspendIfNeeded() be a no-op? Or should it change the reason? what happens in practice is that an assertion fails.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648338</commentid>
    <comment_count>91</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-06-13 12:13:48 -0700</bug_when>
    <thetext>(In reply to comment #90)
&gt; (From update of attachment 125781 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=125781&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/DOMTimer.cpp:95
&gt; &gt;      DOMTimer* timer = new DOMTimer(context, action, timeout, singleShot);
&gt; &gt;  
&gt; &gt; +    timer-&gt;suspendIfNeeded();
&gt; 
&gt; So DOMTimer::suspendIfNeeded() calls ScriptExecutionContext::suspendActiveDOMObjectIfNeeded, which uses m_reasonForSuspendingActiveDOMObjects. What guarantees that m_reasonForSuspendingActiveDOMObjects is correct here?
&gt; 
&gt; It&apos;s really unclear to me what &quot;IfNeeded&quot; part means in function name. For example, if the object is already suspended, should suspendIfNeeded() be a no-op? Or should it change the reason? what happens in practice is that an assertion fails.

It means the active object should be suspended if the ScriptExecutionContext is currently suspending all active objects. You can also call it initialize suspend state or suspend if suspending active DOM objects. I think this was as clear as it gets though.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123706</attachid>
            <date>2012-01-24 01:53:02 -0800</date>
            <delta_ts>2012-01-24 07:51:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53733-20120124105157.patch</filename>
            <type>text/plain</type>
            <size>5420</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1NTg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2M4OWZlODY1ZDYxNzhl
ZDg2MzFkOGE3Mzc4NDEwNmMyZTY1ZmRlOS4uY2JiM2FmNmMzOGZjNjdmNjhhYWIwZDU0NmU4ZGQw
MmMzZmI5MjFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTAxLTI0ICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgorCisgICAgICAgIEVu
c3VyZSB0aW1lcnMgYW5kIG90aGVyIGFjdGl2ZSBET00gb2JqZWN0cyBkbyBub3QgZmlyZSBpbiBz
dXNwZW5kZWQgRG9jdW1lbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTM3MzMKKworICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0IG5vdyBy
ZW1lbWJlcnMgaXQgaGFzIHN1c3BlbmRlZCBhY3RpdmUgRE9NIG9iamVjdHMKKyAgICAgICAgYW5k
IHN1c3BlbmRzIGFsbCBuZXdseSBpbnN0YWxsZWQgYWN0aXZlIERPTSBvYmplY3RzIGFzIHdlbGwu
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBkb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNhblN1c3BlbmRBY3RpdmVET01PYmplY3RzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnN1c3BlbmRBY3RpdmVET01P
YmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnJlc3Vt
ZUFjdGl2ZURPTU9iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6ZGlkQ3JlYXRlQWN0aXZlRE9NT2JqZWN0KToKKyAgICAgICAgKiBkb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6YWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpyZWFzb25Gb3JTdXNwZW5kaW5nQWN0aXZlRE9NT2JqZWN0cyk6
CisgICAgICAgICogaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRGcmFtZTo6Q2FjaGVkRnJhbWUpOgorCiAyMDEyLTAxLTIxICBEYXZpZCBSZXZlbWFuICA8
cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBJbmNyZW1lbnRhbCB0
ZXh0dXJlIHVwZGF0ZXMgYXJlIG5vdCBhdG9taWMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKaW5kZXggZWYwNmMyOWVjYjk1ZWJhMGQ4NjhiMWNhM2Yy
MmMyODdkOTY2OTcyNC4uZTM0MmJhODE5ZmExNmNlZjMzODA2MWExYmNmMWEyM2IyNjk1MzBlNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcApAQCAt
OTIsNiArOTIsNyBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpTY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkKICAgICA6IG1faXRlcmF0aW5nQWN0aXZlRE9NT2JqZWN0cyhmYWxzZSkKICAgICAsIG1f
aW5EZXN0cnVjdG9yKGZhbHNlKQogICAgICwgbV9pbkRpc3BhdGNoRXJyb3JFdmVudChmYWxzZSkK
KyAgICAsIG1fYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZChmYWxzZSkKICNpZiBFTkFCTEUo
U1FMX0RBVEFCQVNFKQogICAgICwgbV9oYXNPcGVuRGF0YWJhc2VzKGZhbHNlKQogI2VuZGlmCkBA
IC0yMTAsNyArMjExLDcgQEAgYm9vbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpjYW5TdXNwZW5k
QWN0aXZlRE9NT2JqZWN0cygpCiAgICAgICAgICAgICBtX2l0ZXJhdGluZ0FjdGl2ZURPTU9iamVj
dHMgPSBmYWxzZTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQotICAgIH0g
ICAgCisgICAgfQogICAgIG1faXRlcmF0aW5nQWN0aXZlRE9NT2JqZWN0cyA9IGZhbHNlOwogICAg
IHJldHVybiB0cnVlOwogfQpAQCAtMjI1LDEwICsyMjYsMTMgQEAgdm9pZCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyhBY3RpdmVET01PYmplY3Q6OlJlYXNv
bkZvclMKICAgICAgICAgaXRlci0+Zmlyc3QtPnN1c3BlbmQod2h5KTsKICAgICB9CiAgICAgbV9p
dGVyYXRpbmdBY3RpdmVET01PYmplY3RzID0gZmFsc2U7CisgICAgbV9hY3RpdmVET01PYmplY3Rz
QXJlU3VzcGVuZGVkID0gdHJ1ZTsKKyAgICBtX3N1c3BlbmRSZWFzb24gPSB3aHk7CiB9CiAKIHZv
aWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cmVzdW1lQWN0aXZlRE9NT2JqZWN0cygpCiB7Cisg
ICAgbV9hY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkICA9IGZhbHNlOwogICAgIC8vIE5vIHBy
b3RlY3Rpb24gYWdhaW5zdCBtX2FjdGl2ZURPTU9iamVjdHMgY2hhbmdpbmcgZHVyaW5nIGl0ZXJh
dGlvbjogcmVzdW1lKCkgc2hvdWxkbid0IGV4ZWN1dGUgYXJiaXRyYXJ5IEpTLgogICAgIG1faXRl
cmF0aW5nQWN0aXZlRE9NT2JqZWN0cyA9IHRydWU7CiAgICAgSGFzaE1hcDxBY3RpdmVET01PYmpl
Y3QqLCB2b2lkKj46Oml0ZXJhdG9yIGFjdGl2ZU9iamVjdHNFbmQgPSBtX2FjdGl2ZURPTU9iamVj
dHMuZW5kKCk7CkBAIC0yNjIsNiArMjY2LDEwIEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6ZGlkQ3JlYXRlQWN0aXZlRE9NT2JqZWN0KEFjdGl2ZURPTU9iamVjdCogb2JqZWN0LCB2CiAg
ICAgaWYgKG1faXRlcmF0aW5nQWN0aXZlRE9NT2JqZWN0cykKICAgICAgICAgQ1JBU0goKTsKICAg
ICBtX2FjdGl2ZURPTU9iamVjdHMuYWRkKG9iamVjdCwgdXBjYXN0UG9pbnRlcik7CisKKyAgICAv
LyBFbnN1cmUgYWxsIEFjdGl2ZURPTU9iamVjdHMgYXJlIHN1c3BlbmRlZCBhbHNvIG5ld2x5IGNy
ZWF0ZWQgb25lcy4KKyAgICBpZiAobV9hY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkKQorICAg
ICAgICBvYmplY3QtPnN1c3BlbmQobV9zdXNwZW5kUmVhc29uKTsKIH0KIAogdm9pZCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0Ojp3aWxsRGVzdHJveUFjdGl2ZURPTU9iamVjdChBY3RpdmVET01PYmpl
Y3QqIG9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRp
b25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
CmluZGV4IGFlZDM0MTFlMDY5YjE1NGIyZWIwOWEwZWQ4MzVkNzMxNmQ0OWI0NTkuLjJmMjVmYmEw
ODU0NzlmODRlNWQ4YzBkZmQwNjZiMzRmNjBmMzMyNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtMTAzLDYgKzEwMyw5IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgcmVzdW1lQWN0aXZlRE9NT2JqZWN0cygpOwogICAgIHZpcnR1YWwgdm9p
ZCBzdG9wQWN0aXZlRE9NT2JqZWN0cygpOwogCisgICAgYm9vbCBhY3RpdmVET01PYmplY3RzQXJl
U3VzcGVuZGVkKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVk
OyB9CisgICAgQWN0aXZlRE9NT2JqZWN0OjpSZWFzb25Gb3JTdXNwZW5zaW9uIHJlYXNvbkZvclN1
c3BlbmRpbmdBY3RpdmVET01PYmplY3RzKCkgeyByZXR1cm4gbV9zdXNwZW5kUmVhc29uOyB9CisK
ICAgICB2b2lkIGRpZENyZWF0ZUFjdGl2ZURPTU9iamVjdChBY3RpdmVET01PYmplY3QqLCB2b2lk
KiB1cGNhc3RQb2ludGVyKTsKICAgICB2b2lkIHdpbGxEZXN0cm95QWN0aXZlRE9NT2JqZWN0KEFj
dGl2ZURPTU9iamVjdCopOwogCkBAIC0yMDYsNiArMjA5LDkgQEAgcHJpdmF0ZToKICAgICBjbGFz
cyBQZW5kaW5nRXhjZXB0aW9uOwogICAgIE93blB0cjxWZWN0b3I8T3duUHRyPFBlbmRpbmdFeGNl
cHRpb24+ID4gPiBtX3BlbmRpbmdFeGNlcHRpb25zOwogCisgICAgYm9vbCBtX2FjdGl2ZURPTU9i
amVjdHNBcmVTdXNwZW5kZWQ7CisgICAgQWN0aXZlRE9NT2JqZWN0OjpSZWFzb25Gb3JTdXNwZW5z
aW9uIG1fc3VzcGVuZFJlYXNvbjsKKwogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgUmVm
UHRyPERhdGFiYXNlVGhyZWFkPiBtX2RhdGFiYXNlVGhyZWFkOwogICAgIGJvb2wgbV9oYXNPcGVu
RGF0YWJhc2VzOyAvLyBUaGlzIG5ldmVyIGNoYW5nZXMgYmFjayB0byBmYWxzZSwgZXZlbiBhZnRl
ciB0aGUgZGF0YWJhc2UgdGhyZWFkIGlzIGNsb3NlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNo
ZWRGcmFtZS5jcHAKaW5kZXggNjBmYWIwNDNmOTAwMjA5MTQxNDE0NTkwMzdhNTJhZDhhYTJmYmFi
My4uOWIwZDJmZTgyMmYyN2ZhMGRkYWZlODZjMTYwYmZmMWE5N2QxMGQwMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAKQEAgLTE2OCw3ICsxNjgsNiBAQCBDYWNoZWRGcmFt
ZTo6Q2FjaGVkRnJhbWUoRnJhbWUqIGZyYW1lKQogICAgIC8vIGJ1dCBhZnRlciB3ZSd2ZSBmaXJl
ZCB0aGUgcGFnZWhpZGUgZXZlbnQsIGluIGNhc2UgdGhhdCBjcmVhdGVzIG1vcmUgb2JqZWN0cy4K
ICAgICAvLyBTdXNwZW5kaW5nIG11c3QgYWxzbyBoYXBwZW4gYWZ0ZXIgd2UndmUgcmVjdXJzZWQg
b3ZlciBjaGlsZCBmcmFtZXMsIGluIGNhc2UKICAgICAvLyB0aG9zZSBjcmVhdGUgbW9yZSBvYmpl
Y3RzLgotICAgIC8vIEZJWE1FOiBJdCdzIHN0aWxsIHBvc3NpYmxlIHRvIGhhdmUgb2JqZWN0cyBj
cmVhdGVkIGFmdGVyIHN1c3BlbmRpbmcgaW4gc29tZSBjYXNlcywgc2VlIGh0dHA6Ly93ZWJraXQu
b3JnL2IvNTM3MzMgZm9yIG1vcmUgZGV0YWlscy4KICAgICBtX2RvY3VtZW50LT5kb2N1bWVudFdp
bGxTdXNwZW5kRm9yUGFnZUNhY2hlKCk7CiAgICAgbV9kb2N1bWVudC0+c3VzcGVuZFNjcmlwdGVk
QW5pbWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOwogICAgIG1fZG9jdW1lbnQtPnN1c3BlbmRB
Y3RpdmVET01PYmplY3RzKEFjdGl2ZURPTU9iamVjdDo6RG9jdW1lbnRXaWxsQmVjb21lSW5hY3Rp
dmUpOwo=
</data>
<flag name="review"
          id="124800"
          type_id="1"
          status="-"
          setter="allan.jensen"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123937</attachid>
            <date>2012-01-25 07:38:34 -0800</date>
            <delta_ts>2012-01-25 07:58:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Bug53733-patch.diff</filename>
            <type>text/plain</type>
            <size>20111</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjM2EyN2Q0Li41N2NmNWQzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDEt
MjUgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+CisKKyAg
ICAgICAgVGVzdCB0aGF0IHRpbWVycyBkbyBub3QgZmlyZSBmcm9tIHN1YmZyYW1lcyBvZiBzdXNw
ZW5kZWQgZG9jdW1lbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTM3MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGZhc3QvZXZlbnRzL3Jlc291cmNlcy9zdXNwZW5kLXN1YmZyYW1lLTEuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvcmVzb3VyY2VzL3N1c3BlbmQtc3ViZnJhbWUt
Mi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9zdXNwZW5kLXRpbWVycy1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3N1c3BlbmQtdGltZXJzLmh0
bWw6IEFkZGVkLgorCiAyMDEyLTAxLTI1ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgVXBkYXRlIHJlc3VsdHMuaHRtbCB2ZXJzaW9uIG9mIFBpeGVsWm9vbWVyCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZXNvdXJjZXMvc3VzcGVuZC1zdWJm
cmFtZS0xLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZXNvdXJjZXMvc3VzcGVuZC1z
dWJmcmFtZS0xLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTFiYThl
YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Jlc291cmNlcy9z
dXNwZW5kLXN1YmZyYW1lLTEuaHRtbApAQCAtMCwwICsxLDE2IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdD4KKyAgICAgICAgZnVuY3Rpb24gdGVzdCgpIHsK
KyAgICAgICAgICAgIHdpbmRvdy50b3AuY29uc29sZS5sb2coJ1RpbWVvdXQgaW4gc3ViZnJhbWUt
MSBjcmVhdGVkJyk7CisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgICAgIGFsZXJ0KCdUaW1lb3V0IGNyZWF0ZWQgaW4gc3ViZnJhbWUtMS5odG1sIGZpcmVk
Jyk7CisgICAgICAgICAgICB9LCA1MCk7CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorSSBhbSBzdWJmcmFtZS0xLmh0bWwKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Jlc291cmNlcy9zdXNwZW5kLXN1YmZyYW1l
LTIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Jlc291cmNlcy9zdXNwZW5kLXN1YmZy
YW1lLTIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTNiMmVlCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcmVzb3VyY2VzL3N1c3Bl
bmQtc3ViZnJhbWUtMi5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKwk8c2NyaXB0PgorCW9ucGFnZWhpZGUgPSBmdW5jdGlvbigpIHsKKwkgIHdp
bmRvdy50b3AuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2EtZnJhbWUnKS5jb250ZW50V2luZG93
LnRlc3QoKTsKKwl9CisJPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KK0kgYW0gc3ViZnJhbWUt
Mi5odG1sCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9zdXNwZW5kLXRpbWVycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9zdXNwZW5kLXRpbWVycy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uODU5Nzc0ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL3N1c3BlbmQtdGltZXJzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBACitDT05TT0xF
IE1FU1NBR0U6IGxpbmUgNjogVGltZW91dCBpbiBzdWJmcmFtZS0xIGNyZWF0ZWQKK0NPTlNPTEUg
TUVTU0FHRTogbGluZSA1OiBMb2FkZWQgcGFnZWhpZGUtdGltZW91dC1nby1iYWNrLmh0bWwsIGdv
aW5nIGJhY2sKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAzMTogUmVzdG9yZWQgcGFnZSBmcm9tIHBh
Z2UgY2FjaGUuCitBTEVSVDogVGltZW91dCBjcmVhdGVkIGluIHN1YmZyYW1lLTEuaHRtbCBmaXJl
ZAorVGVzdHMgdGhhdCBhbGwgSlMgdGltZXJzIGFyZSBzdXNwZW5kZWQgYWZ0ZXIgdGhlIHBhZ2Vo
aWRlIGV2ZW50IGlzIGZpcmVkLCBzbyB0aGF0IHRpbWVycyBjcmVhdGVkIHdpdGhpbiBpdCB3aWxs
IG5vdCBmaXJlIHdoaWxlIHRoZSBkb2N1bWVudCBpcyBpbiB0aGUgcGFnZSBjYWNoZS4KKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9zdXNwZW5kLXRpbWVycy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3VzcGVuZC10
aW1lcnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjdlZTc0Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3VzcGVuZC10aW1lcnMu
aHRtbApAQCAtMCwwICsxLDUzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
dGl0bGU+U3VzcGVuZCB0aW1lcnMgb24gbmF2aWdhdGU8L3RpdGxlPgorPHN0eWxlPgorICAgIGlm
cmFtZSB7CisgICAgICBkaXNwbGF5OiBibG9jazsKKyAgICAgIGJvcmRlcjogc29saWQgMXB4ICNj
Y2M7CisgICAgICBtYXJnaW46IDFlbTsKKyAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgIGhlaWdo
dDogMjAwcHg7CisgICAgfQorPC9zdHlsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisKKzxp
ZnJhbWUgc3JjPSJyZXNvdXJjZXMvc3VzcGVuZC1zdWJmcmFtZS0xLmh0bWwiIGlkPSJhLWZyYW1l
Ij48L2lmcmFtZT4gPGlmcmFtZSBzcmM9InJlc291cmNlcy9zdXNwZW5kLXN1YmZyYW1lLTIuaHRt
bCIgaWQ9ImItZnJhbWUiPjwvaWZyYW1lPgorCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCI+CitkZXNjcmlwdGlvbignVGVzdHMgdGhhdCBhbGwgSlMgdGltZXJzIGFyZSBzdXNwZW5kZWQg
YWZ0ZXIgdGhlIHBhZ2VoaWRlIGV2ZW50IGlzIGZpcmVkLCBzbyB0aGF0IHRpbWVycyBjcmVhdGVk
IHdpdGhpbiBpdCB3aWxsIG5vdCBmaXJlIHdoaWxlIHRoZSBkb2N1bWVudCBpcyBpbiB0aGUgcGFn
ZSBjYWNoZS4nKTsKKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoJ1dlYktpdFVzZXNQYWdlQ2FjaGVQ
cmVmZXJlbmNlS2V5JywgMSk7CisKKworb25wYWdlc2hvdyA9IGZ1bmN0aW9uKGV2ZW50KQorewor
ICAgIGlmIChldmVudC5wZXJzaXN0ZWQpIHsKKyAgICAgICAgY29uc29sZS5sb2coJ1Jlc3RvcmVk
IHBhZ2UgZnJvbSBwYWdlIGNhY2hlLicpOworICAgICAgICBpZiAoIXdpbmRvdy53YXNGaW5pc2hK
U1Rlc3RDYWxsZWQpIHsKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICB9LCAyMDApOworICAgICAg
ICB9CisgICAgfQorfQorCitvbmxvYWQgPSBmdW5jdGlvbigpCit7CisgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsKKyAgICAgICAgbG9jYXRpb24uaHJlZiA9ICdyZXNvdXJjZXMvcGFnZWhpZGUt
dGltZW91dC1nby1iYWNrLmh0bWwnOworICAgIH0sIDEwKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7Cit2YXIganNUZXN0SXNBc3luYyA9IHRydWU7Cis8L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDVmNGU0MjEuLjJhNTg0YjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw3MCBAQAorMjAxMi0wMS0yNSAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8
YWxsYW4uamVuc2VuQG5va2lhLmNvbT4KKworICAgICAgICBFbnN1cmUgdGltZXJzIGFuZCBvdGhl
ciBhY3RpdmUgRE9NIG9iamVjdHMgZG8gbm90IGZpcmUgaW4gc3VzcGVuZGVkIGRvY3VtZW50cy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUzNzMzCisK
KyAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBub3cgcmVtZW1iZXJzIGl0IGhhcyBzdXNw
ZW5kZWQgYWN0aXZlIERPTSBvYmplY3RzCisgICAgICAgIGFuZCBzdXNwZW5kcyBhbGwgbmV3bHkg
aW5zdGFsbGVkIGFjdGl2ZSBET00gb2JqZWN0cyBhcyB3ZWxsLgorCisgICAgICAgIEFsbCBjcmVh
dGUtY2FsbHMgYWN0aXZlIERPTSBvYmplY3RzIG5vdyBjYWxscyBhIHBvc3QtY29uc3RydWN0b3Ig
bWV0aG9kIG9uCisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgdGhhdCB1cGRhdGVzIHRo
ZSBzdXNwZW5kIHN0YXRlLiBJdCBpcyBwb3N0IGNvbnN0cnVjdG9yCisgICAgICAgIGJlY2F1c2Ug
dGhlIHN1c3BlbmQvcmVzdW1lIGZ1bmN0aW9ucyBhcmUgdmlydHVhbCBhbmQgdGh1cyBjYW4gbm90
IGJlIGNhbGxlZAorICAgICAgICBmcm9tIGNvbnN0cnVjdG9ycy4KKyAgICAgICAgSFRNTCBlbGVt
ZW50cyB0aGF0IGFyZSBhbHNvIGFjdGl2ZSBET00gb2JqZWN0cyBjYWxscyB0aGUgcG9zdC1jb25z
dHJ1Y3RvcgorICAgICAgICBmcm9tIGluc2VydGVkSW50b0RvY3VtZW50KCkuCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogZmFzdC9ldmVudHMv
c3VzcGVuZC10aW1lcnMuaHRtbAorCisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6U2NyaXB0
RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250
ZXh0Ojp+U2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpjYW5TdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpyZXN1bWVBY3RpdmVE
T01PYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmRp
ZEluc3RhbGxBY3RpdmVET01PYmplY3QpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICog
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OmFjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQpOgorICAgICAgICAo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgICogZmlsZWFwaS9ET01GaWxlU3lzdGVt
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW06OmNyZWF0ZSk6CisgICAgICAg
ICogZmlsZWFwaS9GaWxlUmVhZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6RmlsZVJlYWRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFk
ZXIuaDoKKyAgICAgICAgKEZpbGVSZWFkZXIpOgorICAgICAgICAoKToKKyAgICAgICAgKiBmaWxl
YXBpL0ZpbGVXcml0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpGaWxlV3JpdGVyOjpjcmVhdGUpOgorICAgICAgICAqIGZpbGVhcGkvRmlsZVdyaXRlci5oOgor
ICAgICAgICAoRmlsZVdyaXRlcik6CisgICAgICAgICgpOgorICAgICAgICAqIGh0bWwvSFRNTE1h
cnF1ZWVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNYXJxdWVlRWxlbWVudDo6
aW5zZXJ0ZWRJbnRvRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogaHRt
bC9IVE1MTWFycXVlZUVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxNYXJxdWVlRWxlbWVudCk6Cisg
ICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KToKKyAgICAgICAgKiBwYWdlL0RP
TVRpbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRpbWVyOjppbnN0YWxsKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTVRpbWVyOjpmaXJlZCk6CisgICAgICAgICogcGFnZS9FdmVudFNvdXJj
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFNvdXJjZTo6Y3JlYXRlKToKKyAgICAgICAg
KiBwYWdlL1N1c3BlbmRhYmxlVGltZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VzcGVuZGFi
bGVUaW1lcjo6U3VzcGVuZGFibGVUaW1lcik6CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2Nr
ZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXQuaDoKKyAgICAgICAgKFdl
YlNvY2tldCk6CisgICAgICAgICgpOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlKToKKwogMjAxMi0wMS0y
NSAgUm9sYW5kIFN0ZWluZXIgIDxyb2xhbmRzdGVpbmVyQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICA8c3R5bGUgc2NvcGVkPjogSW1wbGVtZW50IHJlZ2lzdGVyaW5nIG9mIDxzdHlsZSBzY29wZWQ+
IHdpdGggdGhlIHNjb3BpbmcgZWxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuY3BwCmluZGV4IGVmMDZjMjkuLmU5NTg5MzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKQEAgLTkyLDYgKzkyLDcgQEAg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpCiAgICAgOiBt
X2l0ZXJhdGluZ0FjdGl2ZURPTU9iamVjdHMoZmFsc2UpCiAgICAgLCBtX2luRGVzdHJ1Y3Rvcihm
YWxzZSkKICAgICAsIG1faW5EaXNwYXRjaEVycm9yRXZlbnQoZmFsc2UpCisgICAgLCBtX2FjdGl2
ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQoZmFsc2UpCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkK
ICAgICAsIG1faGFzT3BlbkRhdGFiYXNlcyhmYWxzZSkKICNlbmRpZgpAQCAtMTAxLDcgKzEwMiw2
IEBAIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKQogU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6flNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKQogewogICAgIG1f
aW5EZXN0cnVjdG9yID0gdHJ1ZTsKLQogICAgIGZvciAoSGFzaFNldDxDb250ZXh0RGVzdHJ1Y3Rp
b25PYnNlcnZlcio+OjppdGVyYXRvciBpdGVyID0gbV9kZXN0cnVjdGlvbk9ic2VydmVycy5iZWdp
bigpOyBpdGVyICE9IG1fZGVzdHJ1Y3Rpb25PYnNlcnZlcnMuZW5kKCk7IGl0ZXIgPSBtX2Rlc3Ry
dWN0aW9uT2JzZXJ2ZXJzLmJlZ2luKCkpIHsKICAgICAgICAgQ29udGV4dERlc3RydWN0aW9uT2Jz
ZXJ2ZXIqIG9ic2VydmVyID0gKml0ZXI7CiAgICAgICAgIG1fZGVzdHJ1Y3Rpb25PYnNlcnZlcnMu
cmVtb3ZlKG9ic2VydmVyKTsKQEAgLTIxMCw3ICsyMTAsNyBAQCBib29sIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OmNhblN1c3BlbmRBY3RpdmVET01PYmplY3RzKCkKICAgICAgICAgICAgIG1faXRl
cmF0aW5nQWN0aXZlRE9NT2JqZWN0cyA9IGZhbHNlOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICB9Ci0gICAgfSAgICAKKyAgICB9CiAgICAgbV9pdGVyYXRpbmdBY3RpdmVET01P
YmplY3RzID0gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yMjUsMTAgKzIyNSwxMyBA
QCB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnN1c3BlbmRBY3RpdmVET01PYmplY3RzKEFj
dGl2ZURPTU9iamVjdDo6UmVhc29uRm9yUwogICAgICAgICBpdGVyLT5maXJzdC0+c3VzcGVuZCh3
aHkpOwogICAgIH0KICAgICBtX2l0ZXJhdGluZ0FjdGl2ZURPTU9iamVjdHMgPSBmYWxzZTsKKyAg
ICBtX2FjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQgPSB0cnVlOworICAgIG1fc3VzcGVuZFJl
YXNvbiA9IHdoeTsKIH0KIAogdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpyZXN1bWVBY3Rp
dmVET01PYmplY3RzKCkKIHsKKyAgICBtX2FjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQgPSBm
YWxzZTsKICAgICAvLyBObyBwcm90ZWN0aW9uIGFnYWluc3QgbV9hY3RpdmVET01PYmplY3RzIGNo
YW5naW5nIGR1cmluZyBpdGVyYXRpb246IHJlc3VtZSgpIHNob3VsZG4ndCBleGVjdXRlIGFyYml0
cmFyeSBKUy4KICAgICBtX2l0ZXJhdGluZ0FjdGl2ZURPTU9iamVjdHMgPSB0cnVlOwogICAgIEhh
c2hNYXA8QWN0aXZlRE9NT2JqZWN0Kiwgdm9pZCo+OjppdGVyYXRvciBhY3RpdmVPYmplY3RzRW5k
ID0gbV9hY3RpdmVET01PYmplY3RzLmVuZCgpOwpAQCAtMjU0LDYgKzI1NywxNCBAQCB2b2lkIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnN0b3BBY3RpdmVET01PYmplY3RzKCkKICAgICBjbG9zZU1l
c3NhZ2VQb3J0cygpOwogfQogCit2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmRpZEluc3Rh
bGxBY3RpdmVET01PYmplY3QoQWN0aXZlRE9NT2JqZWN0KiBvYmplY3QpCit7CisgICAgQVNTRVJU
KG1fYWN0aXZlRE9NT2JqZWN0cy5jb250YWlucyhvYmplY3QpKTsKKyAgICAvLyBFbnN1cmUgYWxs
IEFjdGl2ZURPTU9iamVjdHMgYXJlIHN1c3BlbmRlZCBhbHNvIG5ld2x5IGNyZWF0ZWQgb25lcy4K
KyAgICBpZiAobV9hY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkKQorICAgICAgICBvYmplY3Qt
PnN1c3BlbmQobV9zdXNwZW5kUmVhc29uKTsKK30KKwogdm9pZCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpkaWRDcmVhdGVBY3RpdmVET01PYmplY3QoQWN0aXZlRE9NT2JqZWN0KiBvYmplY3QsIHZv
aWQqIHVwY2FzdFBvaW50ZXIpCiB7CiAgICAgQVNTRVJUKG9iamVjdCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAppbmRleCBhZWQzNDExLi5kMDAwMGIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKQEAgLTEwMyw5
ICsxMDMsMTUgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZXN1bWVBY3RpdmVET01PYmpl
Y3RzKCk7CiAgICAgdmlydHVhbCB2b2lkIHN0b3BBY3RpdmVET01PYmplY3RzKCk7CiAKKyAgICBi
b29sIGFjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2
ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQ7IH0KKworICAgIC8vIENhbGxlZCBmcm9tIHRoZSBjb25z
dHJ1Y3RvciBhbmQgZGVzdHJ1Y3RvcnMgb2YgQWN0aXZlRE9NT2JqZWN0CiAgICAgdm9pZCBkaWRD
cmVhdGVBY3RpdmVET01PYmplY3QoQWN0aXZlRE9NT2JqZWN0Kiwgdm9pZCogdXBjYXN0UG9pbnRl
cik7CiAgICAgdm9pZCB3aWxsRGVzdHJveUFjdGl2ZURPTU9iamVjdChBY3RpdmVET01PYmplY3Qq
KTsKIAorICAgIC8vIENhbGxlZCBhZnRlciB0aGUgY29uc3RydWN0aW9uIG9mIGFuIEFjdGl2ZURP
TU9iamVjdAorICAgIHZvaWQgZGlkSW5zdGFsbEFjdGl2ZURPTU9iamVjdChBY3RpdmVET01PYmpl
Y3QqKTsKKwogICAgIHR5cGVkZWYgY29uc3QgSGFzaE1hcDxBY3RpdmVET01PYmplY3QqLCB2b2lk
Kj4gQWN0aXZlRE9NT2JqZWN0c01hcDsKICAgICBBY3RpdmVET01PYmplY3RzTWFwJiBhY3RpdmVE
T01PYmplY3RzKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmVET01PYmplY3RzOyB9CiAKQEAgLTIw
Niw2ICsyMTIsOSBAQCBwcml2YXRlOgogICAgIGNsYXNzIFBlbmRpbmdFeGNlcHRpb247CiAgICAg
T3duUHRyPFZlY3RvcjxPd25QdHI8UGVuZGluZ0V4Y2VwdGlvbj4gPiA+IG1fcGVuZGluZ0V4Y2Vw
dGlvbnM7CiAKKyAgICBib29sIG1fYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZDsKKyAgICBB
Y3RpdmVET01PYmplY3Q6OlJlYXNvbkZvclN1c3BlbnNpb24gbV9zdXNwZW5kUmVhc29uOworCiAj
aWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICBSZWZQdHI8RGF0YWJhc2VUaHJlYWQ+IG1fZGF0
YWJhc2VUaHJlYWQ7CiAgICAgYm9vbCBtX2hhc09wZW5EYXRhYmFzZXM7IC8vIFRoaXMgbmV2ZXIg
Y2hhbmdlcyBiYWNrIHRvIGZhbHNlLCBldmVuIGFmdGVyIHRoZSBkYXRhYmFzZSB0aHJlYWQgaXMg
Y2xvc2VkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVt
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbS5jcHAKaW5kZXggYWMz
ODY5MC4uYzhlZDQyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxl
U3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3Bw
CkBAIC01Niw2ICs1Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFBhc3NSZWZQdHI8RE9NRmls
ZVN5c3RlbT4gRE9NRmlsZVN5c3RlbTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGFz
eW5jRmlsZVN5c3RlbSkKIHsKICAgICBSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZVN5c3RlbShh
ZG9wdFJlZihuZXcgRE9NRmlsZVN5c3RlbShjb250ZXh0LCBuYW1lLCBhc3luY0ZpbGVTeXN0ZW0p
KSk7CisgICAgY29udGV4dC0+ZGlkSW5zdGFsbEFjdGl2ZURPTU9iamVjdChmaWxlU3lzdGVtLmdl
dCgpKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE9wZW5GaWxlU3lzdGVtKGZp
bGVTeXN0ZW0uZ2V0KCkpOwogICAgIHJldHVybiBmaWxlU3lzdGVtOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRmlsZVJlYWRlci5jcHAKaW5kZXggMjljNTk4NC4uODRmY2QwMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwCkBAIC00OCw2ICs0OCwxNCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHN0YXRpYyBjb25zdCBkb3VibGUgcHJvZ3Jlc3NOb3RpZmljYXRpb25JbnRlcnZh
bE1TID0gNTA7CiAKKy8vIHN0YXRpYworUGFzc1JlZlB0cjxGaWxlUmVhZGVyPiBGaWxlUmVhZGVy
OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBGaWxlUmVh
ZGVyICpmaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoY29udGV4dCk7CisgICAgY29udGV4dC0+
ZGlkSW5zdGFsbEFjdGl2ZURPTU9iamVjdChmaWxlUmVhZGVyKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoZmlsZVJlYWRlcik7Cit9CisKIEZpbGVSZWFkZXI6OkZpbGVSZWFkZXIoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCkKICAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlz
KQogICAgICwgbV9zdGF0ZShFTVBUWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvRmlsZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmgKaW5k
ZXggODA0ZGQyOS4uZWNkZDQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9G
aWxlUmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmgKQEAg
LTUxLDEwICs1MSw3IEBAIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKIGNsYXNzIEZpbGVS
ZWFkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxGaWxlUmVhZGVyPiwgcHVibGljIEFjdGl2ZURPTU9i
amVjdCwgcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMgRmlsZVJlYWRlckxvYWRlckNsaWVudCB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RmlsZVJlYWRlcj4gY3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEZpbGVSZWFkZXIoY29udGV4dCkpOwotICAgIH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxGaWxlUmVhZGVyPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogCiAgICAgdmly
dHVhbCB+RmlsZVJlYWRlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGVXcml0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlV3JpdGVyLmNwcApp
bmRleCAyYjI1Y2ZhLi4xMjZlNTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGVXcml0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVdyaXRlci5j
cHAKQEAgLTQ1LDYgKzQ1LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0
IGludCBrTWF4UmVjdXJzaW9uRGVwdGggPSAzOwogCisvLyBzdGF0aWMKK1Bhc3NSZWZQdHI8Rmls
ZVdyaXRlcj4gRmlsZVdyaXRlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQpCit7CisgICAgRmlsZVdyaXRlciAqZmlsZVdyaXRlciA9IG5ldyBGaWxlV3JpdGVyKGNvbnRl
eHQpOworICAgIGNvbnRleHQtPmRpZEluc3RhbGxBY3RpdmVET01PYmplY3QoZmlsZVdyaXRlcik7
CisgICAgcmV0dXJuIGFkb3B0UmVmKGZpbGVXcml0ZXIpOworfQorCiBGaWxlV3JpdGVyOjpGaWxl
V3JpdGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgOiBBY3RpdmVET01P
YmplY3QoY29udGV4dCwgdGhpcykKICAgICAsIG1fcmVhZHlTdGF0ZShJTklUKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlV3JpdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0ZpbGVXcml0ZXIuaAppbmRleCAyYjU5N2ExLi44NjQyNzhiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVXcml0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0ZpbGVXcml0ZXIuaApAQCAtNDgsMTAgKzQ4LDcgQEAgY2xhc3MgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDsKIAogY2xhc3MgRmlsZVdyaXRlciA6IHB1YmxpYyBGaWxlV3JpdGVyQmFzZSwg
cHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMgQXN5bmNG
aWxlV3JpdGVyQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxGaWxlV3Jp
dGVyPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgRmlsZVdyaXRlcihjb250ZXh0KSk7Ci0gICAgfQorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEZpbGVXcml0ZXI+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0KTsKIAogICAgIGVudW0gUmVhZHlTdGF0ZSB7CiAgICAgICAgIElOSVQgPSAw
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuY3BwCmluZGV4IDA1M2Zm
YTguLjYyZTU4MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5j
cHAKQEAgLTE3OCw2ICsxNzgsMTIgQEAgYm9vbCBIVE1MTWFycXVlZUVsZW1lbnQ6OmNhblN1c3Bl
bmQoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIEhUTUxNYXJxdWVlRWxlbWVu
dDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKQoreworICAgIGRvY3VtZW50KCktPmRpZEluc3RhbGxB
Y3RpdmVET01PYmplY3QodGhpcyk7CisgICAgSFRNTEVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3Vt
ZW50KCk7Cit9CisKIHZvaWQgSFRNTE1hcnF1ZWVFbGVtZW50OjpzdXNwZW5kKFJlYXNvbkZvclN1
c3BlbnNpb24pCiB7CiAgICAgaWYgKFJlbmRlck1hcnF1ZWUqIG1hcnF1ZWVSZW5kZXJlciA9IHJl
bmRlck1hcnF1ZWUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1
ZWVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5oCmlu
ZGV4IDU4NmFhNmYuLmY0OTliZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1hcnF1ZWVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFycXVlZUVs
ZW1lbnQuaApAQCAtNTYsNiArNTYsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBtYXBU
b0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYpIGNvbnN0
OwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKIAor
ICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudCgpOworCiAgICAgLy8gQWN0aXZl
RE9NT2JqZWN0CiAgICAgdmlydHVhbCBib29sIGNhblN1c3BlbmQoKSBjb25zdDsKICAgICB2aXJ0
dWFsIHZvaWQgc3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IGNjNWMyNjQuLmNkZTkyYTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNDY2LDYgKzQ2Niw3IEBAIFJlbmRl
ck9iamVjdCogSFRNTE1lZGlhRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFy
ZW5hLCBSZW5kZXJTdHlsZSopCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Omluc2VydGVkSW50b0Rv
Y3VtZW50KCkKIHsKICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjppbnNlcnRlZElu
dG9Eb2N1bWVudCIpOworICAgIGRvY3VtZW50KCktPmRpZEluc3RhbGxBY3RpdmVET01PYmplY3Qo
dGhpcyk7CiAgICAgSFRNTEVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCk7CiAgICAgaWYg
KCFnZXRBdHRyaWJ1dGUoc3JjQXR0cikuaXNFbXB0eSgpICYmIG1fbmV0d29ya1N0YXRlID09IE5F
VFdPUktfRU1QVFkpCiAgICAgICAgIHNjaGVkdWxlTG9hZChNZWRpYVJlc291cmNlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9ET01UaW1lci5jcHAKaW5kZXggMGE5NGU3ZWYuLjRmMGJkOTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NVGltZXIuY3BwCkBAIC05Miw2ICs5Miw3IEBAIGludCBET01UaW1lcjo6aW5zdGFsbChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzT3duUHRyPFNjaGVkdWxlZEFjdGlvCiAg
ICAgLy8gb3IgaWYgaXQgaXMgYSBvbmUtdGltZSB0aW1lciBhbmQgaXQgaGFzIGZpcmVkIChET01U
aW1lcjo6ZmlyZWQpLgogICAgIERPTVRpbWVyKiB0aW1lciA9IG5ldyBET01UaW1lcihjb250ZXh0
LCBhY3Rpb24sIHRpbWVvdXQsIHNpbmdsZVNob3QpOwogCisgICAgY29udGV4dC0+ZGlkSW5zdGFs
bEFjdGl2ZURPTU9iamVjdCh0aW1lcik7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRJbnN0YWxsVGltZXIoY29udGV4dCwgdGltZXItPm1fdGltZW91dElkLCB0aW1lb3V0LCBzaW5n
bGVTaG90KTsKIAogICAgIHJldHVybiB0aW1lci0+bV90aW1lb3V0SWQ7CkBAIC0xMTQsNyArMTE1
LDcgQEAgdm9pZCBET01UaW1lcjo6ZmlyZWQoKQogewogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgdGltZXJOZXN0aW5n
TGV2ZWwgPSBtX25lc3RpbmdMZXZlbDsKLSAgICAKKyAgICBBU1NFUlQoIWNvbnRleHQtPmFjdGl2
ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQoKSk7CiAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2Vz
dHVyZUluZGljYXRvcihtX3Nob3VsZEZvcndhcmRVc2VyR2VzdHVyZSA/IERlZmluaXRlbHlQcm9j
ZXNzaW5nVXNlckdlc3R1cmUgOiBQb3NzaWJseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7CiAgICAg
CiAgICAgLy8gT25seSB0aGUgZmlyc3QgZXhlY3V0aW9uIG9mIGEgbXVsdGktc2hvdCB0aW1lciBz
aG91bGQgZ2V0IGFuIGFmZmlybWF0aXZlIHVzZXIgZ2VzdHVyZSBpbmRpY2F0b3IuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRTb3VyY2UuY3BwCmluZGV4IGVhMDY2MDAuLjMxYjExMWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRTb3VyY2UuY3BwCkBAIC05OSw2ICs5OSw4IEBAIFBhc3NSZWZQdHI8RXZlbnRT
b3VyY2U+IEV2ZW50U291cmNlOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgY29uCiAgICAgc291cmNlLT5zZXRQZW5kaW5nQWN0aXZpdHkoc291cmNlLmdldCgpKTsKICAg
ICBzb3VyY2UtPmNvbm5lY3QoKTsKIAorICAgIGNvbnRleHQtPmRpZEluc3RhbGxBY3RpdmVET01P
YmplY3Qoc291cmNlLmdldCgpKTsKKwogICAgIHJldHVybiBzb3VyY2UucmVsZWFzZSgpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1c3BlbmRhYmxlVGltZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9TdXNwZW5kYWJsZVRpbWVyLmNwcAppbmRleCAyYTRkMmU1Li5k
ZDNlODlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1c3BlbmRhYmxlVGltZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3VzcGVuZGFibGVUaW1lci5jcHAKQEAgLTM1
LDggKzM1LDggQEAgU3VzcGVuZGFibGVUaW1lcjo6U3VzcGVuZGFibGVUaW1lcihTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRo
aXMpCiAgICAgLCBtX25leHRGaXJlSW50ZXJ2YWwoMCkKICAgICAsIG1fcmVwZWF0SW50ZXJ2YWwo
MCkKLSNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgLCBtX2FjdGl2ZShmYWxzZSkKKyNpZiAhQVNT
RVJUX0RJU0FCTEVECiAgICAgLCBtX3N1c3BlbmRlZChmYWxzZSkKICNlbmRpZgogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IDVlMjEzYjguLmY3ODMwYmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKQEAgLTE2NCw2ICsxNjQsMTMg
QEAgV2ViU29ja2V0Ojp+V2ViU29ja2V0KCkKICAgICAgICAgbV9jaGFubmVsLT5kaXNjb25uZWN0
KCk7CiB9CiAKK1Bhc3NSZWZQdHI8V2ViU29ja2V0PiBXZWJTb2NrZXQ6OmNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQoreworICAgIFdlYlNvY2tldCAqd2ViU29ja2V0ID0g
bmV3IFdlYlNvY2tldChjb250ZXh0KTsKKyAgICBjb250ZXh0LT5kaWRJbnN0YWxsQWN0aXZlRE9N
T2JqZWN0KHdlYlNvY2tldCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKHdlYlNvY2tldCk7Cit9CisK
IHZvaWQgV2ViU29ja2V0Ojpjb25uZWN0KGNvbnN0IFN0cmluZyYgdXJsLCBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKICAgICBWZWN0b3I8U3RyaW5nPiBwcm90b2NvbHM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oIGIvU291cmNlL1dlYkNvcmUvd2Vic29j
a2V0cy9XZWJTb2NrZXQuaAppbmRleCBiODYwYjc1Li44ZDE5NWM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dl
YnNvY2tldHMvV2ViU29ja2V0LmgKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3MgV2ViU29ja2V0IDog
cHVibGljIFJlZkNvdW50ZWQ8V2ViU29ja2V0PiwgcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMg
QWN0aXYKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBzZXRJc0F2YWlsYWJsZShib29sKTsKICAg
ICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlNv
Y2tldD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpIHsgcmV0dXJuIGFk
b3B0UmVmKG5ldyBXZWJTb2NrZXQoY29udGV4dCkpOyB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8
V2ViU29ja2V0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCk7CiAgICAg
dmlydHVhbCB+V2ViU29ja2V0KCk7CiAKICAgICBlbnVtIFN0YXRlIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IDZiZTU4YWEuLjBmMTlhNWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtMTU0LDcgKzE1NCwxMCBAQCBzdGF0aWMgdm9pZCBs
b2dDb25zb2xlRXJyb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3Ry
aW5nJiBtZXNzYQogCiBQYXNzUmVmUHRyPFhNTEh0dHBSZXF1ZXN0PiBYTUxIdHRwUmVxdWVzdDo6
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgWE1M
SHR0cFJlcXVlc3QoY29udGV4dCwgc2VjdXJpdHlPcmlnaW4pKTsKKyAgICBYTUxIdHRwUmVxdWVz
dCogeG1sSHR0cFJlcXVlc3QgPSBuZXcgWE1MSHR0cFJlcXVlc3QoY29udGV4dCwgc2VjdXJpdHlP
cmlnaW4pOworICAgIGNvbnRleHQtPmRpZEluc3RhbGxBY3RpdmVET01PYmplY3QoeG1sSHR0cFJl
cXVlc3QpOworCisgICAgcmV0dXJuIGFkb3B0UmVmKHhtbEh0dHBSZXF1ZXN0KTsKIH0KIAogWE1M
SHR0cFJlcXVlc3Q6OlhNTEh0dHBSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123942</attachid>
            <date>2012-01-25 07:58:25 -0800</date>
            <delta_ts>2012-01-27 04:01:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Bug53733-patch.diff</filename>
            <type>text/plain</type>
            <size>20095</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjM2EyN2Q0Li41N2NmNWQzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDEt
MjUgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+CisKKyAg
ICAgICAgVGVzdCB0aGF0IHRpbWVycyBkbyBub3QgZmlyZSBmcm9tIHN1YmZyYW1lcyBvZiBzdXNw
ZW5kZWQgZG9jdW1lbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTM3MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGZhc3QvZXZlbnRzL3Jlc291cmNlcy9zdXNwZW5kLXN1YmZyYW1lLTEuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvcmVzb3VyY2VzL3N1c3BlbmQtc3ViZnJhbWUt
Mi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9zdXNwZW5kLXRpbWVycy1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3N1c3BlbmQtdGltZXJzLmh0
bWw6IEFkZGVkLgorCiAyMDEyLTAxLTI1ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgVXBkYXRlIHJlc3VsdHMuaHRtbCB2ZXJzaW9uIG9mIFBpeGVsWm9vbWVyCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZXNvdXJjZXMvc3VzcGVuZC1zdWJm
cmFtZS0xLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZXNvdXJjZXMvc3VzcGVuZC1z
dWJmcmFtZS0xLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTFiYThl
YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Jlc291cmNlcy9z
dXNwZW5kLXN1YmZyYW1lLTEuaHRtbApAQCAtMCwwICsxLDE2IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdD4KKyAgICAgICAgZnVuY3Rpb24gdGVzdCgpIHsK
KyAgICAgICAgICAgIHdpbmRvdy50b3AuY29uc29sZS5sb2coJ1RpbWVvdXQgaW4gc3ViZnJhbWUt
MSBjcmVhdGVkJyk7CisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgICAgIGFsZXJ0KCdUaW1lb3V0IGNyZWF0ZWQgaW4gc3ViZnJhbWUtMS5odG1sIGZpcmVk
Jyk7CisgICAgICAgICAgICB9LCA1MCk7CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorSSBhbSBzdWJmcmFtZS0xLmh0bWwKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Jlc291cmNlcy9zdXNwZW5kLXN1YmZyYW1l
LTIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Jlc291cmNlcy9zdXNwZW5kLXN1YmZy
YW1lLTIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTNiMmVlCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcmVzb3VyY2VzL3N1c3Bl
bmQtc3ViZnJhbWUtMi5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKwk8c2NyaXB0PgorCW9ucGFnZWhpZGUgPSBmdW5jdGlvbigpIHsKKwkgIHdp
bmRvdy50b3AuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2EtZnJhbWUnKS5jb250ZW50V2luZG93
LnRlc3QoKTsKKwl9CisJPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KK0kgYW0gc3ViZnJhbWUt
Mi5odG1sCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9zdXNwZW5kLXRpbWVycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9zdXNwZW5kLXRpbWVycy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uODU5Nzc0ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL3N1c3BlbmQtdGltZXJzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBACitDT05TT0xF
IE1FU1NBR0U6IGxpbmUgNjogVGltZW91dCBpbiBzdWJmcmFtZS0xIGNyZWF0ZWQKK0NPTlNPTEUg
TUVTU0FHRTogbGluZSA1OiBMb2FkZWQgcGFnZWhpZGUtdGltZW91dC1nby1iYWNrLmh0bWwsIGdv
aW5nIGJhY2sKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAzMTogUmVzdG9yZWQgcGFnZSBmcm9tIHBh
Z2UgY2FjaGUuCitBTEVSVDogVGltZW91dCBjcmVhdGVkIGluIHN1YmZyYW1lLTEuaHRtbCBmaXJl
ZAorVGVzdHMgdGhhdCBhbGwgSlMgdGltZXJzIGFyZSBzdXNwZW5kZWQgYWZ0ZXIgdGhlIHBhZ2Vo
aWRlIGV2ZW50IGlzIGZpcmVkLCBzbyB0aGF0IHRpbWVycyBjcmVhdGVkIHdpdGhpbiBpdCB3aWxs
IG5vdCBmaXJlIHdoaWxlIHRoZSBkb2N1bWVudCBpcyBpbiB0aGUgcGFnZSBjYWNoZS4KKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9zdXNwZW5kLXRpbWVycy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3VzcGVuZC10
aW1lcnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjdlZTc0Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3VzcGVuZC10aW1lcnMu
aHRtbApAQCAtMCwwICsxLDUzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
dGl0bGU+U3VzcGVuZCB0aW1lcnMgb24gbmF2aWdhdGU8L3RpdGxlPgorPHN0eWxlPgorICAgIGlm
cmFtZSB7CisgICAgICBkaXNwbGF5OiBibG9jazsKKyAgICAgIGJvcmRlcjogc29saWQgMXB4ICNj
Y2M7CisgICAgICBtYXJnaW46IDFlbTsKKyAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgIGhlaWdo
dDogMjAwcHg7CisgICAgfQorPC9zdHlsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisKKzxp
ZnJhbWUgc3JjPSJyZXNvdXJjZXMvc3VzcGVuZC1zdWJmcmFtZS0xLmh0bWwiIGlkPSJhLWZyYW1l
Ij48L2lmcmFtZT4gPGlmcmFtZSBzcmM9InJlc291cmNlcy9zdXNwZW5kLXN1YmZyYW1lLTIuaHRt
bCIgaWQ9ImItZnJhbWUiPjwvaWZyYW1lPgorCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCI+CitkZXNjcmlwdGlvbignVGVzdHMgdGhhdCBhbGwgSlMgdGltZXJzIGFyZSBzdXNwZW5kZWQg
YWZ0ZXIgdGhlIHBhZ2VoaWRlIGV2ZW50IGlzIGZpcmVkLCBzbyB0aGF0IHRpbWVycyBjcmVhdGVk
IHdpdGhpbiBpdCB3aWxsIG5vdCBmaXJlIHdoaWxlIHRoZSBkb2N1bWVudCBpcyBpbiB0aGUgcGFn
ZSBjYWNoZS4nKTsKKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoJ1dlYktpdFVzZXNQYWdlQ2FjaGVQ
cmVmZXJlbmNlS2V5JywgMSk7CisKKworb25wYWdlc2hvdyA9IGZ1bmN0aW9uKGV2ZW50KQorewor
ICAgIGlmIChldmVudC5wZXJzaXN0ZWQpIHsKKyAgICAgICAgY29uc29sZS5sb2coJ1Jlc3RvcmVk
IHBhZ2UgZnJvbSBwYWdlIGNhY2hlLicpOworICAgICAgICBpZiAoIXdpbmRvdy53YXNGaW5pc2hK
U1Rlc3RDYWxsZWQpIHsKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICB9LCAyMDApOworICAgICAg
ICB9CisgICAgfQorfQorCitvbmxvYWQgPSBmdW5jdGlvbigpCit7CisgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsKKyAgICAgICAgbG9jYXRpb24uaHJlZiA9ICdyZXNvdXJjZXMvcGFnZWhpZGUt
dGltZW91dC1nby1iYWNrLmh0bWwnOworICAgIH0sIDEwKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7Cit2YXIganNUZXN0SXNBc3luYyA9IHRydWU7Cis8L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDVmNGU0MjEuLjJhNTg0YjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw3MCBAQAorMjAxMi0wMS0yNSAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8
YWxsYW4uamVuc2VuQG5va2lhLmNvbT4KKworICAgICAgICBFbnN1cmUgdGltZXJzIGFuZCBvdGhl
ciBhY3RpdmUgRE9NIG9iamVjdHMgZG8gbm90IGZpcmUgaW4gc3VzcGVuZGVkIGRvY3VtZW50cy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUzNzMzCisK
KyAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBub3cgcmVtZW1iZXJzIGl0IGhhcyBzdXNw
ZW5kZWQgYWN0aXZlIERPTSBvYmplY3RzCisgICAgICAgIGFuZCBzdXNwZW5kcyBhbGwgbmV3bHkg
aW5zdGFsbGVkIGFjdGl2ZSBET00gb2JqZWN0cyBhcyB3ZWxsLgorCisgICAgICAgIEFsbCBjcmVh
dGUtY2FsbHMgYWN0aXZlIERPTSBvYmplY3RzIG5vdyBjYWxscyBhIHBvc3QtY29uc3RydWN0b3Ig
bWV0aG9kIG9uCisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgdGhhdCB1cGRhdGVzIHRo
ZSBzdXNwZW5kIHN0YXRlLiBJdCBpcyBwb3N0IGNvbnN0cnVjdG9yCisgICAgICAgIGJlY2F1c2Ug
dGhlIHN1c3BlbmQvcmVzdW1lIGZ1bmN0aW9ucyBhcmUgdmlydHVhbCBhbmQgdGh1cyBjYW4gbm90
IGJlIGNhbGxlZAorICAgICAgICBmcm9tIGNvbnN0cnVjdG9ycy4KKyAgICAgICAgSFRNTCBlbGVt
ZW50cyB0aGF0IGFyZSBhbHNvIGFjdGl2ZSBET00gb2JqZWN0cyBjYWxscyB0aGUgcG9zdC1jb25z
dHJ1Y3RvcgorICAgICAgICBmcm9tIGluc2VydGVkSW50b0RvY3VtZW50KCkuCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogZmFzdC9ldmVudHMv
c3VzcGVuZC10aW1lcnMuaHRtbAorCisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6U2NyaXB0
RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250
ZXh0Ojp+U2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpjYW5TdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpyZXN1bWVBY3RpdmVE
T01PYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmRp
ZEluc3RhbGxBY3RpdmVET01PYmplY3QpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICog
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OmFjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQpOgorICAgICAgICAo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgICogZmlsZWFwaS9ET01GaWxlU3lzdGVt
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW06OmNyZWF0ZSk6CisgICAgICAg
ICogZmlsZWFwaS9GaWxlUmVhZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6RmlsZVJlYWRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFk
ZXIuaDoKKyAgICAgICAgKEZpbGVSZWFkZXIpOgorICAgICAgICAoKToKKyAgICAgICAgKiBmaWxl
YXBpL0ZpbGVXcml0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpGaWxlV3JpdGVyOjpjcmVhdGUpOgorICAgICAgICAqIGZpbGVhcGkvRmlsZVdyaXRlci5oOgor
ICAgICAgICAoRmlsZVdyaXRlcik6CisgICAgICAgICgpOgorICAgICAgICAqIGh0bWwvSFRNTE1h
cnF1ZWVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNYXJxdWVlRWxlbWVudDo6
aW5zZXJ0ZWRJbnRvRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogaHRt
bC9IVE1MTWFycXVlZUVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxNYXJxdWVlRWxlbWVudCk6Cisg
ICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KToKKyAgICAgICAgKiBwYWdlL0RP
TVRpbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRpbWVyOjppbnN0YWxsKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTVRpbWVyOjpmaXJlZCk6CisgICAgICAgICogcGFnZS9FdmVudFNvdXJj
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFNvdXJjZTo6Y3JlYXRlKToKKyAgICAgICAg
KiBwYWdlL1N1c3BlbmRhYmxlVGltZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VzcGVuZGFi
bGVUaW1lcjo6U3VzcGVuZGFibGVUaW1lcik6CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2Nr
ZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXQuaDoKKyAgICAgICAgKFdl
YlNvY2tldCk6CisgICAgICAgICgpOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlKToKKwogMjAxMi0wMS0y
NSAgUm9sYW5kIFN0ZWluZXIgIDxyb2xhbmRzdGVpbmVyQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICA8c3R5bGUgc2NvcGVkPjogSW1wbGVtZW50IHJlZ2lzdGVyaW5nIG9mIDxzdHlsZSBzY29wZWQ+
IHdpdGggdGhlIHNjb3BpbmcgZWxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuY3BwCmluZGV4IGVmMDZjMjkuLmU5NTg5MzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKQEAgLTkyLDYgKzkyLDcgQEAg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpCiAgICAgOiBt
X2l0ZXJhdGluZ0FjdGl2ZURPTU9iamVjdHMoZmFsc2UpCiAgICAgLCBtX2luRGVzdHJ1Y3Rvcihm
YWxzZSkKICAgICAsIG1faW5EaXNwYXRjaEVycm9yRXZlbnQoZmFsc2UpCisgICAgLCBtX2FjdGl2
ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQoZmFsc2UpCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkK
ICAgICAsIG1faGFzT3BlbkRhdGFiYXNlcyhmYWxzZSkKICNlbmRpZgpAQCAtMTAxLDcgKzEwMiw2
IEBAIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKQogU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6flNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKQogewogICAgIG1f
aW5EZXN0cnVjdG9yID0gdHJ1ZTsKLQogICAgIGZvciAoSGFzaFNldDxDb250ZXh0RGVzdHJ1Y3Rp
b25PYnNlcnZlcio+OjppdGVyYXRvciBpdGVyID0gbV9kZXN0cnVjdGlvbk9ic2VydmVycy5iZWdp
bigpOyBpdGVyICE9IG1fZGVzdHJ1Y3Rpb25PYnNlcnZlcnMuZW5kKCk7IGl0ZXIgPSBtX2Rlc3Ry
dWN0aW9uT2JzZXJ2ZXJzLmJlZ2luKCkpIHsKICAgICAgICAgQ29udGV4dERlc3RydWN0aW9uT2Jz
ZXJ2ZXIqIG9ic2VydmVyID0gKml0ZXI7CiAgICAgICAgIG1fZGVzdHJ1Y3Rpb25PYnNlcnZlcnMu
cmVtb3ZlKG9ic2VydmVyKTsKQEAgLTIxMCw3ICsyMTAsNyBAQCBib29sIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OmNhblN1c3BlbmRBY3RpdmVET01PYmplY3RzKCkKICAgICAgICAgICAgIG1faXRl
cmF0aW5nQWN0aXZlRE9NT2JqZWN0cyA9IGZhbHNlOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICB9Ci0gICAgfSAgICAKKyAgICB9CiAgICAgbV9pdGVyYXRpbmdBY3RpdmVET01P
YmplY3RzID0gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yMjUsMTAgKzIyNSwxMyBA
QCB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnN1c3BlbmRBY3RpdmVET01PYmplY3RzKEFj
dGl2ZURPTU9iamVjdDo6UmVhc29uRm9yUwogICAgICAgICBpdGVyLT5maXJzdC0+c3VzcGVuZCh3
aHkpOwogICAgIH0KICAgICBtX2l0ZXJhdGluZ0FjdGl2ZURPTU9iamVjdHMgPSBmYWxzZTsKKyAg
ICBtX2FjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQgPSB0cnVlOworICAgIG1fc3VzcGVuZFJl
YXNvbiA9IHdoeTsKIH0KIAogdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpyZXN1bWVBY3Rp
dmVET01PYmplY3RzKCkKIHsKKyAgICBtX2FjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQgPSBm
YWxzZTsKICAgICAvLyBObyBwcm90ZWN0aW9uIGFnYWluc3QgbV9hY3RpdmVET01PYmplY3RzIGNo
YW5naW5nIGR1cmluZyBpdGVyYXRpb246IHJlc3VtZSgpIHNob3VsZG4ndCBleGVjdXRlIGFyYml0
cmFyeSBKUy4KICAgICBtX2l0ZXJhdGluZ0FjdGl2ZURPTU9iamVjdHMgPSB0cnVlOwogICAgIEhh
c2hNYXA8QWN0aXZlRE9NT2JqZWN0Kiwgdm9pZCo+OjppdGVyYXRvciBhY3RpdmVPYmplY3RzRW5k
ID0gbV9hY3RpdmVET01PYmplY3RzLmVuZCgpOwpAQCAtMjU0LDYgKzI1NywxNCBAQCB2b2lkIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnN0b3BBY3RpdmVET01PYmplY3RzKCkKICAgICBjbG9zZU1l
c3NhZ2VQb3J0cygpOwogfQogCit2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmRpZEluc3Rh
bGxBY3RpdmVET01PYmplY3QoQWN0aXZlRE9NT2JqZWN0KiBvYmplY3QpCit7CisgICAgQVNTRVJU
KG1fYWN0aXZlRE9NT2JqZWN0cy5jb250YWlucyhvYmplY3QpKTsKKyAgICAvLyBFbnN1cmUgYWxs
IEFjdGl2ZURPTU9iamVjdHMgYXJlIHN1c3BlbmRlZCBhbHNvIG5ld2x5IGNyZWF0ZWQgb25lcy4K
KyAgICBpZiAobV9hY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkKQorICAgICAgICBvYmplY3Qt
PnN1c3BlbmQobV9zdXNwZW5kUmVhc29uKTsKK30KKwogdm9pZCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpkaWRDcmVhdGVBY3RpdmVET01PYmplY3QoQWN0aXZlRE9NT2JqZWN0KiBvYmplY3QsIHZv
aWQqIHVwY2FzdFBvaW50ZXIpCiB7CiAgICAgQVNTRVJUKG9iamVjdCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAppbmRleCBhZWQzNDExLi5kMDAwMGIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKQEAgLTEwMyw5
ICsxMDMsMTUgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZXN1bWVBY3RpdmVET01PYmpl
Y3RzKCk7CiAgICAgdmlydHVhbCB2b2lkIHN0b3BBY3RpdmVET01PYmplY3RzKCk7CiAKKyAgICBi
b29sIGFjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2
ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQ7IH0KKworICAgIC8vIENhbGxlZCBmcm9tIHRoZSBjb25z
dHJ1Y3RvciBhbmQgZGVzdHJ1Y3RvcnMgb2YgQWN0aXZlRE9NT2JqZWN0CiAgICAgdm9pZCBkaWRD
cmVhdGVBY3RpdmVET01PYmplY3QoQWN0aXZlRE9NT2JqZWN0Kiwgdm9pZCogdXBjYXN0UG9pbnRl
cik7CiAgICAgdm9pZCB3aWxsRGVzdHJveUFjdGl2ZURPTU9iamVjdChBY3RpdmVET01PYmplY3Qq
KTsKIAorICAgIC8vIENhbGxlZCBhZnRlciB0aGUgY29uc3RydWN0aW9uIG9mIGFuIEFjdGl2ZURP
TU9iamVjdAorICAgIHZvaWQgZGlkSW5zdGFsbEFjdGl2ZURPTU9iamVjdChBY3RpdmVET01PYmpl
Y3QqKTsKKwogICAgIHR5cGVkZWYgY29uc3QgSGFzaE1hcDxBY3RpdmVET01PYmplY3QqLCB2b2lk
Kj4gQWN0aXZlRE9NT2JqZWN0c01hcDsKICAgICBBY3RpdmVET01PYmplY3RzTWFwJiBhY3RpdmVE
T01PYmplY3RzKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmVET01PYmplY3RzOyB9CiAKQEAgLTIw
Niw2ICsyMTIsOSBAQCBwcml2YXRlOgogICAgIGNsYXNzIFBlbmRpbmdFeGNlcHRpb247CiAgICAg
T3duUHRyPFZlY3RvcjxPd25QdHI8UGVuZGluZ0V4Y2VwdGlvbj4gPiA+IG1fcGVuZGluZ0V4Y2Vw
dGlvbnM7CiAKKyAgICBib29sIG1fYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZDsKKyAgICBB
Y3RpdmVET01PYmplY3Q6OlJlYXNvbkZvclN1c3BlbnNpb24gbV9zdXNwZW5kUmVhc29uOworCiAj
aWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICBSZWZQdHI8RGF0YWJhc2VUaHJlYWQ+IG1fZGF0
YWJhc2VUaHJlYWQ7CiAgICAgYm9vbCBtX2hhc09wZW5EYXRhYmFzZXM7IC8vIFRoaXMgbmV2ZXIg
Y2hhbmdlcyBiYWNrIHRvIGZhbHNlLCBldmVuIGFmdGVyIHRoZSBkYXRhYmFzZSB0aHJlYWQgaXMg
Y2xvc2VkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVt
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbS5jcHAKaW5kZXggYWMz
ODY5MC4uYzhlZDQyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxl
U3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3Bw
CkBAIC01Niw2ICs1Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFBhc3NSZWZQdHI8RE9NRmls
ZVN5c3RlbT4gRE9NRmlsZVN5c3RlbTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGFz
eW5jRmlsZVN5c3RlbSkKIHsKICAgICBSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZVN5c3RlbShh
ZG9wdFJlZihuZXcgRE9NRmlsZVN5c3RlbShjb250ZXh0LCBuYW1lLCBhc3luY0ZpbGVTeXN0ZW0p
KSk7CisgICAgY29udGV4dC0+ZGlkSW5zdGFsbEFjdGl2ZURPTU9iamVjdChmaWxlU3lzdGVtLmdl
dCgpKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE9wZW5GaWxlU3lzdGVtKGZp
bGVTeXN0ZW0uZ2V0KCkpOwogICAgIHJldHVybiBmaWxlU3lzdGVtOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRmlsZVJlYWRlci5jcHAKaW5kZXggMjljNTk4NC4uNDYzYjUzYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwCkBAIC00OCw2ICs0OCwxNCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHN0YXRpYyBjb25zdCBkb3VibGUgcHJvZ3Jlc3NOb3RpZmljYXRpb25JbnRlcnZh
bE1TID0gNTA7CiAKKy8vIHN0YXRpYworUGFzc1JlZlB0cjxGaWxlUmVhZGVyPiBGaWxlUmVhZGVy
OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBGaWxlUmVh
ZGVyKiBmaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoY29udGV4dCk7CisgICAgY29udGV4dC0+
ZGlkSW5zdGFsbEFjdGl2ZURPTU9iamVjdChmaWxlUmVhZGVyKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoZmlsZVJlYWRlcik7Cit9CisKIEZpbGVSZWFkZXI6OkZpbGVSZWFkZXIoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCkKICAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlz
KQogICAgICwgbV9zdGF0ZShFTVBUWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvRmlsZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmgKaW5k
ZXggODA0ZGQyOS4uZWNkZDQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9G
aWxlUmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmgKQEAg
LTUxLDEwICs1MSw3IEBAIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKIGNsYXNzIEZpbGVS
ZWFkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxGaWxlUmVhZGVyPiwgcHVibGljIEFjdGl2ZURPTU9i
amVjdCwgcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMgRmlsZVJlYWRlckxvYWRlckNsaWVudCB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RmlsZVJlYWRlcj4gY3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEZpbGVSZWFkZXIoY29udGV4dCkpOwotICAgIH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxGaWxlUmVhZGVyPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogCiAgICAgdmly
dHVhbCB+RmlsZVJlYWRlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGVXcml0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlV3JpdGVyLmNwcApp
bmRleCAyYjI1Y2ZhLi5jYWVkNjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGVXcml0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVdyaXRlci5j
cHAKQEAgLTQ1LDYgKzQ1LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0
IGludCBrTWF4UmVjdXJzaW9uRGVwdGggPSAzOwogCisvLyBzdGF0aWMKK1Bhc3NSZWZQdHI8Rmls
ZVdyaXRlcj4gRmlsZVdyaXRlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQpCit7CisgICAgRmlsZVdyaXRlciogZmlsZVdyaXRlciA9IG5ldyBGaWxlV3JpdGVyKGNvbnRl
eHQpOworICAgIGNvbnRleHQtPmRpZEluc3RhbGxBY3RpdmVET01PYmplY3QoZmlsZVdyaXRlcik7
CisgICAgcmV0dXJuIGFkb3B0UmVmKGZpbGVXcml0ZXIpOworfQorCiBGaWxlV3JpdGVyOjpGaWxl
V3JpdGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgOiBBY3RpdmVET01P
YmplY3QoY29udGV4dCwgdGhpcykKICAgICAsIG1fcmVhZHlTdGF0ZShJTklUKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlV3JpdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0ZpbGVXcml0ZXIuaAppbmRleCAyYjU5N2ExLi45NDYxMzUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVXcml0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0ZpbGVXcml0ZXIuaApAQCAtNDgsMTAgKzQ4LDcgQEAgY2xhc3MgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDsKIAogY2xhc3MgRmlsZVdyaXRlciA6IHB1YmxpYyBGaWxlV3JpdGVyQmFzZSwg
cHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMgQXN5bmNG
aWxlV3JpdGVyQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxGaWxlV3Jp
dGVyPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgRmlsZVdyaXRlcihjb250ZXh0KSk7Ci0gICAgfQorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEZpbGVXcml0ZXI+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0Kik7CiAKICAgICBlbnVtIFJlYWR5U3RhdGUgewogICAgICAgICBJTklUID0gMCwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNwcAppbmRleCAwNTNmZmE4Li42MmU1
ODM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuY3BwCkBAIC0x
NzgsNiArMTc4LDEyIEBAIGJvb2wgSFRNTE1hcnF1ZWVFbGVtZW50OjpjYW5TdXNwZW5kKCkgY29u
c3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBIVE1MTWFycXVlZUVsZW1lbnQ6Omluc2Vy
dGVkSW50b0RvY3VtZW50KCkKK3sKKyAgICBkb2N1bWVudCgpLT5kaWRJbnN0YWxsQWN0aXZlRE9N
T2JqZWN0KHRoaXMpOworICAgIEhUTUxFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpOwor
fQorCiB2b2lkIEhUTUxNYXJxdWVlRWxlbWVudDo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9u
KQogewogICAgIGlmIChSZW5kZXJNYXJxdWVlKiBtYXJxdWVlUmVuZGVyZXIgPSByZW5kZXJNYXJx
dWVlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuaAppbmRleCA1ODZh
YTZmLi5mNDk5YmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVl
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmgK
QEAgLTU2LDYgKzU2LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgbWFwVG9FbnRyeShj
b25zdCBRdWFsaWZpZWROYW1lJiwgTWFwcGVkQXR0cmlidXRlRW50cnkmKSBjb25zdDsKICAgICB2
aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAKKyAgICB2aXJ0
dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKKwogICAgIC8vIEFjdGl2ZURPTU9iamVj
dAogICAgIHZpcnR1YWwgYm9vbCBjYW5TdXNwZW5kKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lk
IHN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcAppbmRleCBjYzVjMjY0Li5jZGU5MmE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTQ2Niw2ICs0NjYsNyBAQCBSZW5kZXJPYmplY3Qq
IEhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVu
ZGVyU3R5bGUqKQogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgp
CiB7CiAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1l
bnQiKTsKKyAgICBkb2N1bWVudCgpLT5kaWRJbnN0YWxsQWN0aXZlRE9NT2JqZWN0KHRoaXMpOwog
ICAgIEhUTUxFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpOwogICAgIGlmICghZ2V0QXR0
cmlidXRlKHNyY0F0dHIpLmlzRW1wdHkoKSAmJiBtX25ldHdvcmtTdGF0ZSA9PSBORVRXT1JLX0VN
UFRZKQogICAgICAgICBzY2hlZHVsZUxvYWQoTWVkaWFSZXNvdXJjZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
VGltZXIuY3BwCmluZGV4IDBhOTRlN2VmLi40ZjBiZDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVRpbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVy
LmNwcApAQCAtOTIsNiArOTIsNyBAQCBpbnQgRE9NVGltZXI6Omluc3RhbGwoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgUGFzc093blB0cjxTY2hlZHVsZWRBY3RpbwogICAgIC8vIG9y
IGlmIGl0IGlzIGEgb25lLXRpbWUgdGltZXIgYW5kIGl0IGhhcyBmaXJlZCAoRE9NVGltZXI6OmZp
cmVkKS4KICAgICBET01UaW1lciogdGltZXIgPSBuZXcgRE9NVGltZXIoY29udGV4dCwgYWN0aW9u
LCB0aW1lb3V0LCBzaW5nbGVTaG90KTsKIAorICAgIGNvbnRleHQtPmRpZEluc3RhbGxBY3RpdmVE
T01PYmplY3QodGltZXIpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSW5zdGFs
bFRpbWVyKGNvbnRleHQsIHRpbWVyLT5tX3RpbWVvdXRJZCwgdGltZW91dCwgc2luZ2xlU2hvdCk7
CiAKICAgICByZXR1cm4gdGltZXItPm1fdGltZW91dElkOwpAQCAtMTE0LDcgKzExNSw3IEBAIHZv
aWQgRE9NVGltZXI6OmZpcmVkKCkKIHsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIHRpbWVyTmVzdGluZ0xldmVsID0g
bV9uZXN0aW5nTGV2ZWw7Ci0gICAgCisgICAgQVNTRVJUKCFjb250ZXh0LT5hY3RpdmVET01PYmpl
Y3RzQXJlU3VzcGVuZGVkKCkpOwogICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRp
Y2F0b3IobV9zaG91bGRGb3J3YXJkVXNlckdlc3R1cmUgPyBEZWZpbml0ZWx5UHJvY2Vzc2luZ1Vz
ZXJHZXN0dXJlIDogUG9zc2libHlQcm9jZXNzaW5nVXNlckdlc3R1cmUpOwogICAgIAogICAgIC8v
IE9ubHkgdGhlIGZpcnN0IGV4ZWN1dGlvbiBvZiBhIG11bHRpLXNob3QgdGltZXIgc2hvdWxkIGdl
dCBhbiBhZmZpcm1hdGl2ZSB1c2VyIGdlc3R1cmUgaW5kaWNhdG9yLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50U291cmNlLmNwcAppbmRleCBlYTA2NjAwLi4zMWIxMTFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50U291cmNlLmNwcApAQCAtOTksNiArOTksOCBAQCBQYXNzUmVmUHRyPEV2ZW50U291cmNlPiBF
dmVudFNvdXJjZTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbgog
ICAgIHNvdXJjZS0+c2V0UGVuZGluZ0FjdGl2aXR5KHNvdXJjZS5nZXQoKSk7CiAgICAgc291cmNl
LT5jb25uZWN0KCk7CiAKKyAgICBjb250ZXh0LT5kaWRJbnN0YWxsQWN0aXZlRE9NT2JqZWN0KHNv
dXJjZS5nZXQoKSk7CisKICAgICByZXR1cm4gc291cmNlLnJlbGVhc2UoKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TdXNwZW5kYWJsZVRpbWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU3VzcGVuZGFibGVUaW1lci5jcHAKaW5kZXggMmE0ZDJlNS4uZGQzZTg5ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TdXNwZW5kYWJsZVRpbWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1c3BlbmRhYmxlVGltZXIuY3BwCkBAIC0zNSw4ICszNSw4
IEBAIFN1c3BlbmRhYmxlVGltZXI6OlN1c3BlbmRhYmxlVGltZXIoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCkKICAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQogICAg
ICwgbV9uZXh0RmlyZUludGVydmFsKDApCiAgICAgLCBtX3JlcGVhdEludGVydmFsKDApCi0jaWYg
IUFTU0VSVF9ESVNBQkxFRAogICAgICwgbV9hY3RpdmUoZmFsc2UpCisjaWYgIUFTU0VSVF9ESVNB
QkxFRAogICAgICwgbV9zdXNwZW5kZWQoZmFsc2UpCiAjZW5kaWYKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dl
YnNvY2tldHMvV2ViU29ja2V0LmNwcAppbmRleCA1ZTIxM2I4Li45Zjg0ZTBjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCkBAIC0xNjQsNiArMTY0LDEzIEBAIFdlYlNv
Y2tldDo6fldlYlNvY2tldCgpCiAgICAgICAgIG1fY2hhbm5lbC0+ZGlzY29ubmVjdCgpOwogfQog
CitQYXNzUmVmUHRyPFdlYlNvY2tldD4gV2ViU29ja2V0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCkKK3sKKyAgICBXZWJTb2NrZXQqIHdlYlNvY2tldCA9IG5ldyBXZWJT
b2NrZXQoY29udGV4dCk7CisgICAgY29udGV4dC0+ZGlkSW5zdGFsbEFjdGl2ZURPTU9iamVjdCh3
ZWJTb2NrZXQpOworICAgIHJldHVybiBhZG9wdFJlZih3ZWJTb2NrZXQpOworfQorCiB2b2lkIFdl
YlNvY2tldDo6Y29ubmVjdChjb25zdCBTdHJpbmcmIHVybCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7
CiAgICAgVmVjdG9yPFN0cmluZz4gcHJvdG9jb2xzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2Vi
U29ja2V0LmgKaW5kZXggYjg2MGI3NS4uY2FlNTdkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRz
L1dlYlNvY2tldC5oCkBAIC01Myw3ICs1Myw3IEBAIGNsYXNzIFdlYlNvY2tldCA6IHB1YmxpYyBS
ZWZDb3VudGVkPFdlYlNvY2tldD4sIHB1YmxpYyBFdmVudFRhcmdldCwgcHVibGljIEFjdGl2CiBw
dWJsaWM6CiAgICAgc3RhdGljIHZvaWQgc2V0SXNBdmFpbGFibGUoYm9vbCk7CiAgICAgc3RhdGlj
IGJvb2wgaXNBdmFpbGFibGUoKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJTb2NrZXQ+IGNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KSB7IHJldHVybiBhZG9wdFJlZihu
ZXcgV2ViU29ja2V0KGNvbnRleHQpKTsgfQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlNvY2tl
dD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKICAgICB2aXJ0dWFsIH5XZWJTb2Nr
ZXQoKTsKIAogICAgIGVudW0gU3RhdGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1s
L1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5j
cHAKaW5kZXggNmJlNThhYS4uMGYxOWE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1s
L1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVl
c3QuY3BwCkBAIC0xNTQsNyArMTU0LDEwIEBAIHN0YXRpYyB2b2lkIGxvZ0NvbnNvbGVFcnJvcihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG1lc3NhCiAKIFBh
c3NSZWZQdHI8WE1MSHR0cFJlcXVlc3Q+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJp
dHlPcmlnaW4pCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBYTUxIdHRwUmVxdWVzdChjb250
ZXh0LCBzZWN1cml0eU9yaWdpbikpOworICAgIFhNTEh0dHBSZXF1ZXN0KiB4bWxIdHRwUmVxdWVz
dCA9IG5ldyBYTUxIdHRwUmVxdWVzdChjb250ZXh0LCBzZWN1cml0eU9yaWdpbik7CisgICAgY29u
dGV4dC0+ZGlkSW5zdGFsbEFjdGl2ZURPTU9iamVjdCh4bWxIdHRwUmVxdWVzdCk7CisKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoeG1sSHR0cFJlcXVlc3QpOwogfQogCiBYTUxIdHRwUmVxdWVzdDo6WE1M
SHR0cFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxT
ZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4pCg==
</data>
<flag name="commit-queue"
          id="125122"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124286</attachid>
            <date>2012-01-27 04:01:37 -0800</date>
            <delta_ts>2012-01-27 04:12:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Bug53733-patch2.diff</filename>
            <type>text/plain</type>
            <size>22128</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmOTQxNzZmLi42MjE3ODAyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDEt
MjcgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+CisKKyAg
ICAgICAgVGVzdCB0aGF0IHRpbWVycyBkbyBub3QgZmlyZSBmcm9tIHN1YmZyYW1lcyBvZiBzdXNw
ZW5kZWQgZG9jdW1lbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTM3MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGZhc3QvZXZlbnRzL3Jlc291cmNlcy9zdXNwZW5kLXN1YmZyYW1lLTEuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvcmVzb3VyY2VzL3N1c3BlbmQtc3ViZnJhbWUt
Mi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9zdXNwZW5kLXRpbWVycy5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9mYXN0L2V2ZW50cy9zdXNwZW5kLXRpbWVy
cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDEyLTAxLTI2ICBDc2FiYSBPc3p0cm9nb27DoWMg
IDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XSBVbnJldmlld2VkIGdhcmRlbmluZyBh
ZnRlciByMTA1OTE3LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcmVzb3Vy
Y2VzL3N1c3BlbmQtc3ViZnJhbWUtMS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcmVz
b3VyY2VzL3N1c3BlbmQtc3ViZnJhbWUtMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmUxYmE4ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9yZXNvdXJjZXMvc3VzcGVuZC1zdWJmcmFtZS0xLmh0bWwKQEAgLTAsMCArMSwxNiBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQ+CisgICAgICAgIGZ1
bmN0aW9uIHRlc3QoKSB7CisgICAgICAgICAgICB3aW5kb3cudG9wLmNvbnNvbGUubG9nKCdUaW1l
b3V0IGluIHN1YmZyYW1lLTEgY3JlYXRlZCcpOworICAgICAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgICAgICBhbGVydCgnVGltZW91dCBjcmVhdGVkIGluIHN1YmZy
YW1lLTEuaHRtbCBmaXJlZCcpOworICAgICAgICAgICAgfSwgNTApOworICAgICAgICB9CisgICAg
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KK0kgYW0gc3ViZnJhbWUtMS5odG1sCis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZXNvdXJjZXMv
c3VzcGVuZC1zdWJmcmFtZS0yLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZXNvdXJj
ZXMvc3VzcGVuZC1zdWJmcmFtZS0yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uOWUzYjJlZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L3Jlc291cmNlcy9zdXNwZW5kLXN1YmZyYW1lLTIuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisJPHNjcmlwdD4KKwlvbnBhZ2VoaWRlID0gZnVu
Y3Rpb24oKSB7CisJICB3aW5kb3cudG9wLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhLWZyYW1l
JykuY29udGVudFdpbmRvdy50ZXN0KCk7CisJfQorCTwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
CitJIGFtIHN1YmZyYW1lLTIuaHRtbAorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvc3VzcGVuZC10aW1lcnMuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL3N1c3BlbmQtdGltZXJzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uOGI3ZWU3NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL3N1c3BlbmQtdGltZXJzLmh0bWwKQEAgLTAsMCArMSw1MyBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPlN1c3BlbmQgdGltZXJzIG9uIG5hdmlnYXRlPC90aXRs
ZT4KKzxzdHlsZT4KKyAgICBpZnJhbWUgeworICAgICAgZGlzcGxheTogYmxvY2s7CisgICAgICBi
b3JkZXI6IHNvbGlkIDFweCAjY2NjOworICAgICAgbWFyZ2luOiAxZW07CisgICAgICB3aWR0aDog
MjAwcHg7CisgICAgICBoZWlnaHQ6IDIwMHB4OworICAgIH0KKzwvc3R5bGU+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8
c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorCis8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3N1c3BlbmQtc3ViZnJhbWUt
MS5odG1sIiBpZD0iYS1mcmFtZSI+PC9pZnJhbWU+IDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvc3Vz
cGVuZC1zdWJmcmFtZS0yLmh0bWwiIGlkPSJiLWZyYW1lIj48L2lmcmFtZT4KKworPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorZGVzY3JpcHRpb24oJ1Rlc3RzIHRoYXQgYWxsIEpTIHRp
bWVycyBhcmUgc3VzcGVuZGVkIGFmdGVyIHRoZSBwYWdlaGlkZSBldmVudCBpcyBmaXJlZCwgc28g
dGhhdCB0aW1lcnMgY3JlYXRlZCB3aXRoaW4gaXQgd2lsbCBub3QgZmlyZSB3aGlsZSB0aGUgZG9j
dW1lbnQgaXMgaW4gdGhlIHBhZ2UgY2FjaGUuJyk7CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCdX
ZWJLaXRVc2VzUGFnZUNhY2hlUHJlZmVyZW5jZUtleScsIDEpOworCisKK29ucGFnZXNob3cgPSBm
dW5jdGlvbihldmVudCkKK3sKKyAgICBpZiAoZXZlbnQucGVyc2lzdGVkKSB7CisgICAgICAgIGNv
bnNvbGUubG9nKCdSZXN0b3JlZCBwYWdlIGZyb20gcGFnZSBjYWNoZS4nKTsKKyAgICAgICAgaWYg
KCF3aW5kb3cud2FzRmluaXNoSlNUZXN0Q2FsbGVkKSB7CisgICAgICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAg
ICAgfSwgMjAwKTsKKyAgICAgICAgfQorICAgIH0KK30KKworb25sb2FkID0gZnVuY3Rpb24oKQor
eworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgIGxvY2F0aW9uLmhyZWYgPSAn
cmVzb3VyY2VzL3BhZ2VoaWRlLXRpbWVvdXQtZ28tYmFjay5odG1sJzsKKyAgICB9LCAxMCk7Cit9
CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwordmFyIGpzVGVzdElzQXN5bmMgPSB0
cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL3F0L2Zhc3QvZXZlbnRzL3N1c3BlbmQtdGltZXJzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvZXZlbnRzL3N1c3BlbmQtdGltZXJzLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTk3NzRkCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9ldmVudHMvc3VzcGVu
ZC10aW1lcnMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKK0NPTlNPTEUgTUVTU0FHRTog
bGluZSA2OiBUaW1lb3V0IGluIHN1YmZyYW1lLTEgY3JlYXRlZAorQ09OU09MRSBNRVNTQUdFOiBs
aW5lIDU6IExvYWRlZCBwYWdlaGlkZS10aW1lb3V0LWdvLWJhY2suaHRtbCwgZ29pbmcgYmFjawor
Q09OU09MRSBNRVNTQUdFOiBsaW5lIDMxOiBSZXN0b3JlZCBwYWdlIGZyb20gcGFnZSBjYWNoZS4K
K0FMRVJUOiBUaW1lb3V0IGNyZWF0ZWQgaW4gc3ViZnJhbWUtMS5odG1sIGZpcmVkCitUZXN0cyB0
aGF0IGFsbCBKUyB0aW1lcnMgYXJlIHN1c3BlbmRlZCBhZnRlciB0aGUgcGFnZWhpZGUgZXZlbnQg
aXMgZmlyZWQsIHNvIHRoYXQgdGltZXJzIGNyZWF0ZWQgd2l0aGluIGl0IHdpbGwgbm90IGZpcmUg
d2hpbGUgdGhlIGRvY3VtZW50IGlzIGluIHRoZSBwYWdlIGNhY2hlLgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2MTMyZmMyLi5hMGJmZjE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNjMgQEAKKzIwMTItMDEtMjUgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFu
LmplbnNlbkBub2tpYS5jb20+CisKKyAgICAgICAgRW5zdXJlIHRpbWVycyBhbmQgb3RoZXIgYWN0
aXZlIERPTSBvYmplY3RzIGRvIG5vdCBmaXJlIGluIHN1c3BlbmRlZCBkb2N1bWVudHMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MzczMworCisgICAg
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgbm93IHJlbWVtYmVycyBpdCBoYXMgc3VzcGVuZGVk
IGFjdGl2ZSBET00gb2JqZWN0cworICAgICAgICBhbmQgc3VzcGVuZHMgYWxsIG5ld2x5IGluc3Rh
bGxlZCBhY3RpdmUgRE9NIG9iamVjdHMgYXMgd2VsbC4KKworICAgICAgICBBbGwgY3JlYXRlLWNh
bGxzIGFjdGl2ZSBET00gb2JqZWN0cyBub3cgY2FsbHMgYSBwb3N0LWNvbnN0cnVjdG9yIG1ldGhv
ZCBvbgorICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0IHRoYXQgdXBkYXRlcyB0aGUgc3Vz
cGVuZCBzdGF0ZS4gSXQgaXMgcG9zdCBjb25zdHJ1Y3RvcgorICAgICAgICBiZWNhdXNlIHRoZSBz
dXNwZW5kL3Jlc3VtZSBmdW5jdGlvbnMgYXJlIHZpcnR1YWwgYW5kIHRodXMgY2FuIG5vdCBiZSBj
YWxsZWQKKyAgICAgICAgZnJvbSBjb25zdHJ1Y3RvcnMuCisgICAgICAgIEhUTUwgZWxlbWVudHMg
dGhhdCBhcmUgYWxzbyBhY3RpdmUgRE9NIG9iamVjdHMgY2FsbHMgdGhlIHBvc3QtY29uc3RydWN0
b3IKKyAgICAgICAgZnJvbSBpbnNlcnRlZEludG9Eb2N1bWVudCgpLgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZXZlbnRzL3N1c3Bl
bmQtdGltZXJzLmh0bWwKKworICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
flNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6Y2FuU3VzcGVuZEFjdGl2ZURPTU9iamVjdHMpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6c3VzcGVuZEFjdGl2ZURPTU9iamVjdHMpOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cmVzdW1lQWN0aXZlRE9NT2Jq
ZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpkaWRJbnN0
YWxsQWN0aXZlRE9NT2JqZWN0KToKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6YWN0aXZlRE9N
T2JqZWN0c0FyZVN1c3BlbmRlZCk6CisgICAgICAgICogZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW06OmNyZWF0ZSk6CisgICAgICAgICog
ZmlsZWFwaS9GaWxlUmVhZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVSZWFkZXI6OmNy
ZWF0ZSk6CisgICAgICAgICogZmlsZWFwaS9GaWxlUmVhZGVyLmg6CisgICAgICAgICogZmlsZWFw
aS9GaWxlV3JpdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVXcml0ZXI6OmNyZWF0ZSk6
CisgICAgICAgICogZmlsZWFwaS9GaWxlV3JpdGVyLmg6CisgICAgICAgICogaGlzdG9yeS9DYWNo
ZWRGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGcmFtZTo6Q2FjaGVkRnJhbWUp
OgorICAgICAgICAqIGh0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNYXJxdWVlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQpOgorICAgICAgICAq
IGh0bWwvSFRNTE1hcnF1ZWVFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Omluc2VydGVkSW50
b0RvY3VtZW50KToKKyAgICAgICAgKiBwYWdlL0RPTVRpbWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVRpbWVyOjppbnN0YWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRpbWVyOjpmaXJl
ZCk6CisgICAgICAgICogcGFnZS9FdmVudFNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudFNvdXJjZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWdlL1N1c3BlbmRhYmxlVGltZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U3VzcGVuZGFibGVUaW1lcjo6U3VzcGVuZGFibGVUaW1lcik6
CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2ViU29ja2V0OjpjcmVhdGUpOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Lmg6Cisg
ICAgICAgICogd29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hh
cmVkV29ya2VyOjpjcmVhdGUpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Oldvcmtlcjo6Y3JlYXRlKToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVl
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZSk6CisKIDIw
MTItMDEtMjYgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CiAKICAg
ICAgICAgTm90IHJldmlld2VkLiBUcnkgdG8gZml4IEd0ayBidWlsZCAtIEpTU2hhZG93Um9vdC5j
cHAgY2FuJ3QgYmUgZm91bmQsIGZpeCBieSBsb29raW5nIGZvciBpdCBpbiB0aGUgZGVyaXZlZCBz
b3VyY2VzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3Bw
CmluZGV4IGVmMDZjMjkuLmU5NTg5MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5jcHAKQEAgLTkyLDYgKzkyLDcgQEAgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpCiAgICAgOiBtX2l0ZXJhdGluZ0FjdGl2ZURP
TU9iamVjdHMoZmFsc2UpCiAgICAgLCBtX2luRGVzdHJ1Y3RvcihmYWxzZSkKICAgICAsIG1faW5E
aXNwYXRjaEVycm9yRXZlbnQoZmFsc2UpCisgICAgLCBtX2FjdGl2ZURPTU9iamVjdHNBcmVTdXNw
ZW5kZWQoZmFsc2UpCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICAsIG1faGFzT3BlbkRh
dGFiYXNlcyhmYWxzZSkKICNlbmRpZgpAQCAtMTAxLDcgKzEwMiw2IEBAIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKQogU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6flNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKQogewogICAgIG1faW5EZXN0cnVjdG9yID0gdHJ1
ZTsKLQogICAgIGZvciAoSGFzaFNldDxDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcio+OjppdGVy
YXRvciBpdGVyID0gbV9kZXN0cnVjdGlvbk9ic2VydmVycy5iZWdpbigpOyBpdGVyICE9IG1fZGVz
dHJ1Y3Rpb25PYnNlcnZlcnMuZW5kKCk7IGl0ZXIgPSBtX2Rlc3RydWN0aW9uT2JzZXJ2ZXJzLmJl
Z2luKCkpIHsKICAgICAgICAgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIqIG9ic2VydmVyID0g
Kml0ZXI7CiAgICAgICAgIG1fZGVzdHJ1Y3Rpb25PYnNlcnZlcnMucmVtb3ZlKG9ic2VydmVyKTsK
QEAgLTIxMCw3ICsyMTAsNyBAQCBib29sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNhblN1c3Bl
bmRBY3RpdmVET01PYmplY3RzKCkKICAgICAgICAgICAgIG1faXRlcmF0aW5nQWN0aXZlRE9NT2Jq
ZWN0cyA9IGZhbHNlOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAg
fSAgICAKKyAgICB9CiAgICAgbV9pdGVyYXRpbmdBY3RpdmVET01PYmplY3RzID0gZmFsc2U7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yMjUsMTAgKzIyNSwxMyBAQCB2b2lkIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OnN1c3BlbmRBY3RpdmVET01PYmplY3RzKEFjdGl2ZURPTU9iamVjdDo6UmVh
c29uRm9yUwogICAgICAgICBpdGVyLT5maXJzdC0+c3VzcGVuZCh3aHkpOwogICAgIH0KICAgICBt
X2l0ZXJhdGluZ0FjdGl2ZURPTU9iamVjdHMgPSBmYWxzZTsKKyAgICBtX2FjdGl2ZURPTU9iamVj
dHNBcmVTdXNwZW5kZWQgPSB0cnVlOworICAgIG1fc3VzcGVuZFJlYXNvbiA9IHdoeTsKIH0KIAog
dm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpyZXN1bWVBY3RpdmVET01PYmplY3RzKCkKIHsK
KyAgICBtX2FjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQgPSBmYWxzZTsKICAgICAvLyBObyBw
cm90ZWN0aW9uIGFnYWluc3QgbV9hY3RpdmVET01PYmplY3RzIGNoYW5naW5nIGR1cmluZyBpdGVy
YXRpb246IHJlc3VtZSgpIHNob3VsZG4ndCBleGVjdXRlIGFyYml0cmFyeSBKUy4KICAgICBtX2l0
ZXJhdGluZ0FjdGl2ZURPTU9iamVjdHMgPSB0cnVlOwogICAgIEhhc2hNYXA8QWN0aXZlRE9NT2Jq
ZWN0Kiwgdm9pZCo+OjppdGVyYXRvciBhY3RpdmVPYmplY3RzRW5kID0gbV9hY3RpdmVET01PYmpl
Y3RzLmVuZCgpOwpAQCAtMjU0LDYgKzI1NywxNCBAQCB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OnN0b3BBY3RpdmVET01PYmplY3RzKCkKICAgICBjbG9zZU1lc3NhZ2VQb3J0cygpOwogfQog
Cit2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmRpZEluc3RhbGxBY3RpdmVET01PYmplY3Qo
QWN0aXZlRE9NT2JqZWN0KiBvYmplY3QpCit7CisgICAgQVNTRVJUKG1fYWN0aXZlRE9NT2JqZWN0
cy5jb250YWlucyhvYmplY3QpKTsKKyAgICAvLyBFbnN1cmUgYWxsIEFjdGl2ZURPTU9iamVjdHMg
YXJlIHN1c3BlbmRlZCBhbHNvIG5ld2x5IGNyZWF0ZWQgb25lcy4KKyAgICBpZiAobV9hY3RpdmVE
T01PYmplY3RzQXJlU3VzcGVuZGVkKQorICAgICAgICBvYmplY3QtPnN1c3BlbmQobV9zdXNwZW5k
UmVhc29uKTsKK30KKwogdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpkaWRDcmVhdGVBY3Rp
dmVET01PYmplY3QoQWN0aXZlRE9NT2JqZWN0KiBvYmplY3QsIHZvaWQqIHVwY2FzdFBvaW50ZXIp
CiB7CiAgICAgQVNTRVJUKG9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaAppbmRleCBhZWQzNDExLi5kMDAwMGIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKQEAgLTEwMyw5ICsxMDMsMTUgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCByZXN1bWVBY3RpdmVET01PYmplY3RzKCk7CiAgICAgdmlydHVh
bCB2b2lkIHN0b3BBY3RpdmVET01PYmplY3RzKCk7CiAKKyAgICBib29sIGFjdGl2ZURPTU9iamVj
dHNBcmVTdXNwZW5kZWQoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2ZURPTU9iamVjdHNBcmVTdXNw
ZW5kZWQ7IH0KKworICAgIC8vIENhbGxlZCBmcm9tIHRoZSBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1
Y3RvcnMgb2YgQWN0aXZlRE9NT2JqZWN0CiAgICAgdm9pZCBkaWRDcmVhdGVBY3RpdmVET01PYmpl
Y3QoQWN0aXZlRE9NT2JqZWN0Kiwgdm9pZCogdXBjYXN0UG9pbnRlcik7CiAgICAgdm9pZCB3aWxs
RGVzdHJveUFjdGl2ZURPTU9iamVjdChBY3RpdmVET01PYmplY3QqKTsKIAorICAgIC8vIENhbGxl
ZCBhZnRlciB0aGUgY29uc3RydWN0aW9uIG9mIGFuIEFjdGl2ZURPTU9iamVjdAorICAgIHZvaWQg
ZGlkSW5zdGFsbEFjdGl2ZURPTU9iamVjdChBY3RpdmVET01PYmplY3QqKTsKKwogICAgIHR5cGVk
ZWYgY29uc3QgSGFzaE1hcDxBY3RpdmVET01PYmplY3QqLCB2b2lkKj4gQWN0aXZlRE9NT2JqZWN0
c01hcDsKICAgICBBY3RpdmVET01PYmplY3RzTWFwJiBhY3RpdmVET01PYmplY3RzKCkgY29uc3Qg
eyByZXR1cm4gbV9hY3RpdmVET01PYmplY3RzOyB9CiAKQEAgLTIwNiw2ICsyMTIsOSBAQCBwcml2
YXRlOgogICAgIGNsYXNzIFBlbmRpbmdFeGNlcHRpb247CiAgICAgT3duUHRyPFZlY3RvcjxPd25Q
dHI8UGVuZGluZ0V4Y2VwdGlvbj4gPiA+IG1fcGVuZGluZ0V4Y2VwdGlvbnM7CiAKKyAgICBib29s
IG1fYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZDsKKyAgICBBY3RpdmVET01PYmplY3Q6OlJl
YXNvbkZvclN1c3BlbnNpb24gbV9zdXNwZW5kUmVhc29uOworCiAjaWYgRU5BQkxFKFNRTF9EQVRB
QkFTRSkKICAgICBSZWZQdHI8RGF0YWJhc2VUaHJlYWQ+IG1fZGF0YWJhc2VUaHJlYWQ7CiAgICAg
Ym9vbCBtX2hhc09wZW5EYXRhYmFzZXM7IC8vIFRoaXMgbmV2ZXIgY2hhbmdlcyBiYWNrIHRvIGZh
bHNlLCBldmVuIGFmdGVyIHRoZSBkYXRhYmFzZSB0aHJlYWQgaXMgY2xvc2VkLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbS5jcHAKaW5kZXggYWMzODY5MC4uYzhlZDQyZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCkBAIC01Niw2ICs1Niw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4gRE9NRmlsZVN5
c3RlbTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGFzeW5jRmlsZVN5c3RlbSkKIHsK
ICAgICBSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZVN5c3RlbShhZG9wdFJlZihuZXcgRE9NRmls
ZVN5c3RlbShjb250ZXh0LCBuYW1lLCBhc3luY0ZpbGVTeXN0ZW0pKSk7CisgICAgY29udGV4dC0+
ZGlkSW5zdGFsbEFjdGl2ZURPTU9iamVjdChmaWxlU3lzdGVtLmdldCgpKTsKICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZE9wZW5GaWxlU3lzdGVtKGZpbGVTeXN0ZW0uZ2V0KCkpOwog
ICAgIHJldHVybiBmaWxlU3lzdGVtOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5j
cHAKaW5kZXggMjljNTk4NC4uOWU5NmM2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFk
ZXIuY3BwCkBAIC00OCw2ICs0OCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBj
b25zdCBkb3VibGUgcHJvZ3Jlc3NOb3RpZmljYXRpb25JbnRlcnZhbE1TID0gNTA7CiAKK1Bhc3NS
ZWZQdHI8RmlsZVJlYWRlcj4gRmlsZVJlYWRlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQpCit7CisgICAgRmlsZVJlYWRlciogZmlsZVJlYWRlciA9IG5ldyBGaWxlUmVh
ZGVyKGNvbnRleHQpOworICAgIGNvbnRleHQtPmRpZEluc3RhbGxBY3RpdmVET01PYmplY3QoZmls
ZVJlYWRlcik7CisgICAgcmV0dXJuIGFkb3B0UmVmKGZpbGVSZWFkZXIpOworfQorCiBGaWxlUmVh
ZGVyOjpGaWxlUmVhZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgOiBB
Y3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKICAgICAsIG1fc3RhdGUoRU1QVFkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5oCmluZGV4IDgwNGRkMjkuLmVjZGQ0ODUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5oCkBAIC01MSwxMCArNTEsNyBAQCB0eXBlZGVmIGludCBF
eGNlcHRpb25Db2RlOwogCiBjbGFzcyBGaWxlUmVhZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8Rmls
ZVJlYWRlcj4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBFdmVudFRhcmdldCwgcHVi
bGljIEZpbGVSZWFkZXJMb2FkZXJDbGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEZpbGVSZWFkZXI+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGaWxlUmVhZGVyKGNvbnRleHQpKTsK
LSAgICB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RmlsZVJlYWRlcj4gY3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqKTsKIAogICAgIHZpcnR1YWwgfkZpbGVSZWFkZXIoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlV3JpdGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRmlsZVdyaXRlci5jcHAKaW5kZXggMmIyNWNmYS4uNDM2ZThmOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlV3JpdGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0ZpbGVXcml0ZXIuY3BwCkBAIC00NSw2ICs0NSwxMyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBpbnQga01heFJlY3Vyc2lvbkRlcHRoID0gMzsK
IAorUGFzc1JlZlB0cjxGaWxlV3JpdGVyPiBGaWxlV3JpdGVyOjpjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBGaWxlV3JpdGVyKiBmaWxlV3JpdGVyID0gbmV3
IEZpbGVXcml0ZXIoY29udGV4dCk7CisgICAgY29udGV4dC0+ZGlkSW5zdGFsbEFjdGl2ZURPTU9i
amVjdChmaWxlV3JpdGVyKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoZmlsZVdyaXRlcik7Cit9CisK
IEZpbGVXcml0ZXI6OkZpbGVXcml0ZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkK
ICAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQogICAgICwgbV9yZWFkeVN0YXRl
KElOSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVXcml0ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVdyaXRlci5oCmluZGV4IDJiNTk3YTEuLjk0NjEz
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVdyaXRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVdyaXRlci5oCkBAIC00OCwxMCArNDgsNyBAQCBj
bGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCiBjbGFzcyBGaWxlV3JpdGVyIDogcHVibGlj
IEZpbGVXcml0ZXJCYXNlLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgRXZlbnRUYXJn
ZXQsIHB1YmxpYyBBc3luY0ZpbGVXcml0ZXJDbGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEZpbGVXcml0ZXI+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGaWxlV3JpdGVyKGNvbnRl
eHQpKTsKLSAgICB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RmlsZVdyaXRlcj4gY3JlYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKIAogICAgIGVudW0gUmVhZHlTdGF0ZSB7CiAgICAgICAg
IElOSVQgPSAwLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFt
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmNwcAppbmRleCA2MGZh
YjA0Li45YjBkMmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZy
YW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmNwcApAQCAt
MTY4LDcgKzE2OCw2IEBAIENhY2hlZEZyYW1lOjpDYWNoZWRGcmFtZShGcmFtZSogZnJhbWUpCiAg
ICAgLy8gYnV0IGFmdGVyIHdlJ3ZlIGZpcmVkIHRoZSBwYWdlaGlkZSBldmVudCwgaW4gY2FzZSB0
aGF0IGNyZWF0ZXMgbW9yZSBvYmplY3RzLgogICAgIC8vIFN1c3BlbmRpbmcgbXVzdCBhbHNvIGhh
cHBlbiBhZnRlciB3ZSd2ZSByZWN1cnNlZCBvdmVyIGNoaWxkIGZyYW1lcywgaW4gY2FzZQogICAg
IC8vIHRob3NlIGNyZWF0ZSBtb3JlIG9iamVjdHMuCi0gICAgLy8gRklYTUU6IEl0J3Mgc3RpbGwg
cG9zc2libGUgdG8gaGF2ZSBvYmplY3RzIGNyZWF0ZWQgYWZ0ZXIgc3VzcGVuZGluZyBpbiBzb21l
IGNhc2VzLCBzZWUgaHR0cDovL3dlYmtpdC5vcmcvYi81MzczMyBmb3IgbW9yZSBkZXRhaWxzLgog
ICAgIG1fZG9jdW1lbnQtPmRvY3VtZW50V2lsbFN1c3BlbmRGb3JQYWdlQ2FjaGUoKTsKICAgICBt
X2RvY3VtZW50LT5zdXNwZW5kU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyQ2FsbGJhY2tzKCk7
CiAgICAgbV9kb2N1bWVudC0+c3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoQWN0aXZlRE9NT2JqZWN0
OjpEb2N1bWVudFdpbGxCZWNvbWVJbmFjdGl2ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
YXJxdWVlRWxlbWVudC5jcHAKaW5kZXggMDUzZmZhOC4uNjJlNTgzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNwcApAQCAtMTc4LDYgKzE3OCwxMiBAQCBib29s
IEhUTUxNYXJxdWVlRWxlbWVudDo6Y2FuU3VzcGVuZCgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKK3ZvaWQgSFRNTE1hcnF1ZWVFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpCit7
CisgICAgZG9jdW1lbnQoKS0+ZGlkSW5zdGFsbEFjdGl2ZURPTU9iamVjdCh0aGlzKTsKKyAgICBI
VE1MRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKK30KKwogdm9pZCBIVE1MTWFycXVl
ZUVsZW1lbnQ6OnN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikKIHsKICAgICBpZiAoUmVuZGVy
TWFycXVlZSogbWFycXVlZVJlbmRlcmVyID0gcmVuZGVyTWFycXVlZSgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmgKaW5kZXggNTg2YWE2Zi4uZjQ5OWJlYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5oCkBAIC01Niw2ICs1Niw4IEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCBib29sIG1hcFRvRW50cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IE1hcHBlZEF0dHJpYnV0ZUVudHJ5JikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFw
cGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogCisgICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50
b0RvY3VtZW50KCk7CisKICAgICAvLyBBY3RpdmVET01PYmplY3QKICAgICB2aXJ0dWFsIGJvb2wg
Y2FuU3VzcGVuZCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBzdXNwZW5kKFJlYXNvbkZvclN1
c3BlbnNpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXgg
Y2M1YzI2NC4uY2RlOTJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCkBAIC00NjYsNiArNDY2LDcgQEAgUmVuZGVyT2JqZWN0KiBIVE1MTWVkaWFFbGVtZW50Ojpj
cmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKQogewogICAgIExPRyhNZWRpYSwg
IkhUTUxNZWRpYUVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50Iik7CisgICAgZG9jdW1lbnQo
KS0+ZGlkSW5zdGFsbEFjdGl2ZURPTU9iamVjdCh0aGlzKTsKICAgICBIVE1MRWxlbWVudDo6aW5z
ZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKICAgICBpZiAoIWdldEF0dHJpYnV0ZShzcmNBdHRyKS5pc0Vt
cHR5KCkgJiYgbV9uZXR3b3JrU3RhdGUgPT0gTkVUV09SS19FTVBUWSkKICAgICAgICAgc2NoZWR1
bGVMb2FkKE1lZGlhUmVzb3VyY2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9E
T01UaW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNwcAppbmRleCAwYTk0
ZTdlZi4uNGYwYmQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01UaW1lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01UaW1lci5jcHAKQEAgLTkyLDYgKzkyLDcg
QEAgaW50IERPTVRpbWVyOjppbnN0YWxsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IFBhc3NPd25QdHI8U2NoZWR1bGVkQWN0aW8KICAgICAvLyBvciBpZiBpdCBpcyBhIG9uZS10aW1l
IHRpbWVyIGFuZCBpdCBoYXMgZmlyZWQgKERPTVRpbWVyOjpmaXJlZCkuCiAgICAgRE9NVGltZXIq
IHRpbWVyID0gbmV3IERPTVRpbWVyKGNvbnRleHQsIGFjdGlvbiwgdGltZW91dCwgc2luZ2xlU2hv
dCk7CiAKKyAgICBjb250ZXh0LT5kaWRJbnN0YWxsQWN0aXZlRE9NT2JqZWN0KHRpbWVyKTsKICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEluc3RhbGxUaW1lcihjb250ZXh0LCB0aW1l
ci0+bV90aW1lb3V0SWQsIHRpbWVvdXQsIHNpbmdsZVNob3QpOwogCiAgICAgcmV0dXJuIHRpbWVy
LT5tX3RpbWVvdXRJZDsKQEAgLTExNCw3ICsxMTUsNyBAQCB2b2lkIERPTVRpbWVyOjpmaXJlZCgp
CiB7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsKICAgICB0aW1lck5lc3RpbmdMZXZlbCA9IG1fbmVzdGluZ0xldmVsOwotICAg
IAorICAgIEFTU0VSVCghY29udGV4dC0+YWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgpKTsK
ICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKG1fc2hvdWxkRm9yd2Fy
ZFVzZXJHZXN0dXJlID8gRGVmaW5pdGVseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSA6IFBvc3NpYmx5
UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsKICAgICAKICAgICAvLyBPbmx5IHRoZSBmaXJzdCBleGVj
dXRpb24gb2YgYSBtdWx0aS1zaG90IHRpbWVyIHNob3VsZCBnZXQgYW4gYWZmaXJtYXRpdmUgdXNl
ciBnZXN0dXJlIGluZGljYXRvci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKaW5kZXgg
ZWEwNjYwMC4uMzFiMTExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNv
dXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKQEAgLTk5
LDYgKzk5LDggQEAgUGFzc1JlZlB0cjxFdmVudFNvdXJjZT4gRXZlbnRTb3VyY2U6OmNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb24KICAgICBzb3VyY2UtPnNldFBlbmRp
bmdBY3Rpdml0eShzb3VyY2UuZ2V0KCkpOwogICAgIHNvdXJjZS0+Y29ubmVjdCgpOwogCisgICAg
Y29udGV4dC0+ZGlkSW5zdGFsbEFjdGl2ZURPTU9iamVjdChzb3VyY2UuZ2V0KCkpOworCiAgICAg
cmV0dXJuIHNvdXJjZS5yZWxlYXNlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU3VzcGVuZGFibGVUaW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1c3BlbmRh
YmxlVGltZXIuY3BwCmluZGV4IDJhNGQyZTUuLmRkM2U4OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU3VzcGVuZGFibGVUaW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9TdXNwZW5kYWJsZVRpbWVyLmNwcApAQCAtMzUsOCArMzUsOCBAQCBTdXNwZW5kYWJsZVRpbWVy
OjpTdXNwZW5kYWJsZVRpbWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAg
OiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKICAgICAsIG1fbmV4dEZpcmVJbnRlcnZh
bCgwKQogICAgICwgbV9yZXBlYXRJbnRlcnZhbCgwKQotI2lmICFBU1NFUlRfRElTQUJMRUQKICAg
ICAsIG1fYWN0aXZlKGZhbHNlKQorI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAsIG1fc3VzcGVu
ZGVkKGZhbHNlKQogI2VuZGlmCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5j
cHAKaW5kZXggNWUyMTNiOC4uOWY4NGUwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vi
c29ja2V0cy9XZWJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2Vi
U29ja2V0LmNwcApAQCAtMTY0LDYgKzE2NCwxMyBAQCBXZWJTb2NrZXQ6On5XZWJTb2NrZXQoKQog
ICAgICAgICBtX2NoYW5uZWwtPmRpc2Nvbm5lY3QoKTsKIH0KIAorUGFzc1JlZlB0cjxXZWJTb2Nr
ZXQ+IFdlYlNvY2tldDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit7
CisgICAgV2ViU29ja2V0KiB3ZWJTb2NrZXQgPSBuZXcgV2ViU29ja2V0KGNvbnRleHQpOworICAg
IGNvbnRleHQtPmRpZEluc3RhbGxBY3RpdmVET01PYmplY3Qod2ViU29ja2V0KTsKKyAgICByZXR1
cm4gYWRvcHRSZWYod2ViU29ja2V0KTsKK30KKwogdm9pZCBXZWJTb2NrZXQ6OmNvbm5lY3QoY29u
c3QgU3RyaW5nJiB1cmwsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFZlY3RvcjxTdHJpbmc+
IHByb3RvY29sczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29j
a2V0LmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCmluZGV4IGI4NjBi
NzUuLmNhZTU3ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29j
a2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaApAQCAtNTMs
NyArNTMsNyBAQCBjbGFzcyBXZWJTb2NrZXQgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJTb2NrZXQ+
LCBwdWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBBY3RpdgogcHVibGljOgogICAgIHN0YXRpYyB2
b2lkIHNldElzQXZhaWxhYmxlKGJvb2wpOwogICAgIHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKCk7
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViU29ja2V0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlNvY2tldChjb250ZXh0
KSk7IH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJTb2NrZXQ+IGNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0Kik7CiAgICAgdmlydHVhbCB+V2ViU29ja2V0KCk7CiAKICAgICBlbnVtIFN0
YXRlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmNwcAppbmRleCBmZjA3OTJj
Li5kZjBiNDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwCkBAIC02
NCw2ICs2NCw3IEBAIFBhc3NSZWZQdHI8U2hhcmVkV29ya2VyPiBTaGFyZWRXb3JrZXI6OmNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjCiAKICAgICBTaGFyZWRXb3JrZXJS
ZXBvc2l0b3J5Ojpjb25uZWN0KHdvcmtlci5nZXQoKSwgcmVtb3RlUG9ydC5yZWxlYXNlKCksIHNj
cmlwdFVSTCwgbmFtZSwgZWMpOwogCisgICAgY29udGV4dC0+ZGlkSW5zdGFsbEFjdGl2ZURPTU9i
amVjdCh3b3JrZXIuZ2V0KCkpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3Jl
YXRlV29ya2VyKGNvbnRleHQsIHdvcmtlci0+YXNJRCgpLCBzY3JpcHRVUkwuc3RyaW5nKCksIHRy
dWUpOwogCiAgICAgcmV0dXJuIHdvcmtlci5yZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ci5jcHAKaW5kZXggYjMyMzZhNy4uNzc0NmNmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNw
cApAQCAtNzMsNiArNzMsNyBAQCBQYXNzUmVmUHRyPFdvcmtlcj4gV29ya2VyOjpjcmVhdGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJgogI2VuZGlmCiAgICAg
d29ya2VyLT5tX3NjcmlwdExvYWRlci0+bG9hZEFzeW5jaHJvbm91c2x5KGNvbnRleHQsIHNjcmlw
dFVSTCwgRGVueUNyb3NzT3JpZ2luUmVxdWVzdHMsIHdvcmtlci5nZXQoKSk7CiAKKyAgICBjb250
ZXh0LT5kaWRJbnN0YWxsQWN0aXZlRE9NT2JqZWN0KHdvcmtlci5nZXQoKSk7CiAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVXb3JrZXIoY29udGV4dCwgd29ya2VyLT5hc0lE
KCksIHNjcmlwdFVSTC5zdHJpbmcoKSwgZmFsc2UpOwogCiAgICAgcmV0dXJuIHdvcmtlci5yZWxl
YXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCA2YmU1OGFhLi4w
ZjE5YTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTE1NCw3ICsx
NTQsMTAgQEAgc3RhdGljIHZvaWQgbG9nQ29uc29sZUVycm9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbWVzc2EKIAogUGFzc1JlZlB0cjxYTUxIdHRwUmVx
dWVzdD4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbikKIHsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFhNTEh0dHBSZXF1ZXN0KGNvbnRleHQsIHNlY3VyaXR5T3JpZ2lu
KSk7CisgICAgWE1MSHR0cFJlcXVlc3QqIHhtbEh0dHBSZXF1ZXN0ID0gbmV3IFhNTEh0dHBSZXF1
ZXN0KGNvbnRleHQsIHNlY3VyaXR5T3JpZ2luKTsKKyAgICBjb250ZXh0LT5kaWRJbnN0YWxsQWN0
aXZlRE9NT2JqZWN0KHhtbEh0dHBSZXF1ZXN0KTsKKworICAgIHJldHVybiBhZG9wdFJlZih4bWxI
dHRwUmVxdWVzdCk7CiB9CiAKIFhNTEh0dHBSZXF1ZXN0OjpYTUxIdHRwUmVxdWVzdChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1
cml0eU9yaWdpbikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124288</attachid>
            <date>2012-01-27 04:12:21 -0800</date>
            <delta_ts>2012-01-27 04:14:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Bug53733-patch3.diff</filename>
            <type>text/plain</type>
            <size>22952</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmOTQxNzZmLi42MjE3ODAyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDEt
MjcgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+CisKKyAg
ICAgICAgVGVzdCB0aGF0IHRpbWVycyBkbyBub3QgZmlyZSBmcm9tIHN1YmZyYW1lcyBvZiBzdXNw
ZW5kZWQgZG9jdW1lbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTM3MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGZhc3QvZXZlbnRzL3Jlc291cmNlcy9zdXNwZW5kLXN1YmZyYW1lLTEuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvcmVzb3VyY2VzL3N1c3BlbmQtc3ViZnJhbWUt
Mi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9zdXNwZW5kLXRpbWVycy5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9mYXN0L2V2ZW50cy9zdXNwZW5kLXRpbWVy
cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDEyLTAxLTI2ICBDc2FiYSBPc3p0cm9nb27DoWMg
IDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XSBVbnJldmlld2VkIGdhcmRlbmluZyBh
ZnRlciByMTA1OTE3LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcmVzb3Vy
Y2VzL3N1c3BlbmQtc3ViZnJhbWUtMS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcmVz
b3VyY2VzL3N1c3BlbmQtc3ViZnJhbWUtMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmUxYmE4ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9yZXNvdXJjZXMvc3VzcGVuZC1zdWJmcmFtZS0xLmh0bWwKQEAgLTAsMCArMSwxNiBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQ+CisgICAgICAgIGZ1
bmN0aW9uIHRlc3QoKSB7CisgICAgICAgICAgICB3aW5kb3cudG9wLmNvbnNvbGUubG9nKCdUaW1l
b3V0IGluIHN1YmZyYW1lLTEgY3JlYXRlZCcpOworICAgICAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgICAgICBhbGVydCgnVGltZW91dCBjcmVhdGVkIGluIHN1YmZy
YW1lLTEuaHRtbCBmaXJlZCcpOworICAgICAgICAgICAgfSwgNTApOworICAgICAgICB9CisgICAg
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KK0kgYW0gc3ViZnJhbWUtMS5odG1sCis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZXNvdXJjZXMv
c3VzcGVuZC1zdWJmcmFtZS0yLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZXNvdXJj
ZXMvc3VzcGVuZC1zdWJmcmFtZS0yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uOWUzYjJlZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L3Jlc291cmNlcy9zdXNwZW5kLXN1YmZyYW1lLTIuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisJPHNjcmlwdD4KKwlvbnBhZ2VoaWRlID0gZnVu
Y3Rpb24oKSB7CisJICB3aW5kb3cudG9wLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhLWZyYW1l
JykuY29udGVudFdpbmRvdy50ZXN0KCk7CisJfQorCTwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
CitJIGFtIHN1YmZyYW1lLTIuaHRtbAorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvc3VzcGVuZC10aW1lcnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvc3VzcGVuZC10aW1lcnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1OTc3NGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9zdXNwZW5kLXRpbWVycy1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxMyBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDY6IFRpbWVvdXQgaW4gc3ViZnJhbWUtMSBj
cmVhdGVkCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNTogTG9hZGVkIHBhZ2VoaWRlLXRpbWVvdXQt
Z28tYmFjay5odG1sLCBnb2luZyBiYWNrCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMzE6IFJlc3Rv
cmVkIHBhZ2UgZnJvbSBwYWdlIGNhY2hlLgorQUxFUlQ6IFRpbWVvdXQgY3JlYXRlZCBpbiBzdWJm
cmFtZS0xLmh0bWwgZmlyZWQKK1Rlc3RzIHRoYXQgYWxsIEpTIHRpbWVycyBhcmUgc3VzcGVuZGVk
IGFmdGVyIHRoZSBwYWdlaGlkZSBldmVudCBpcyBmaXJlZCwgc28gdGhhdCB0aW1lcnMgY3JlYXRl
ZCB3aXRoaW4gaXQgd2lsbCBub3QgZmlyZSB3aGlsZSB0aGUgZG9jdW1lbnQgaXMgaW4gdGhlIHBh
Z2UgY2FjaGUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvc3VzcGVuZC10aW1lcnMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL3N1c3BlbmQtdGltZXJzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uOGI3ZWU3NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L3N1c3BlbmQtdGltZXJzLmh0bWwKQEAgLTAsMCArMSw1MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPHRpdGxlPlN1c3BlbmQgdGltZXJzIG9uIG5hdmlnYXRlPC90aXRsZT4K
KzxzdHlsZT4KKyAgICBpZnJhbWUgeworICAgICAgZGlzcGxheTogYmxvY2s7CisgICAgICBib3Jk
ZXI6IHNvbGlkIDFweCAjY2NjOworICAgICAgbWFyZ2luOiAxZW07CisgICAgICB3aWR0aDogMjAw
cHg7CisgICAgICBoZWlnaHQ6IDIwMHB4OworICAgIH0KKzwvc3R5bGU+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2Ny
aXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorCis8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3N1c3BlbmQtc3ViZnJhbWUtMS5o
dG1sIiBpZD0iYS1mcmFtZSI+PC9pZnJhbWU+IDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvc3VzcGVu
ZC1zdWJmcmFtZS0yLmh0bWwiIGlkPSJiLWZyYW1lIj48L2lmcmFtZT4KKworPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiPgorZGVzY3JpcHRpb24oJ1Rlc3RzIHRoYXQgYWxsIEpTIHRpbWVy
cyBhcmUgc3VzcGVuZGVkIGFmdGVyIHRoZSBwYWdlaGlkZSBldmVudCBpcyBmaXJlZCwgc28gdGhh
dCB0aW1lcnMgY3JlYXRlZCB3aXRoaW4gaXQgd2lsbCBub3QgZmlyZSB3aGlsZSB0aGUgZG9jdW1l
bnQgaXMgaW4gdGhlIHBhZ2UgY2FjaGUuJyk7CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCdXZWJL
aXRVc2VzUGFnZUNhY2hlUHJlZmVyZW5jZUtleScsIDEpOworCisKK29ucGFnZXNob3cgPSBmdW5j
dGlvbihldmVudCkKK3sKKyAgICBpZiAoZXZlbnQucGVyc2lzdGVkKSB7CisgICAgICAgIGNvbnNv
bGUubG9nKCdSZXN0b3JlZCBwYWdlIGZyb20gcGFnZSBjYWNoZS4nKTsKKyAgICAgICAgaWYgKCF3
aW5kb3cud2FzRmluaXNoSlNUZXN0Q2FsbGVkKSB7CisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAg
fSwgMjAwKTsKKyAgICAgICAgfQorICAgIH0KK30KKworb25sb2FkID0gZnVuY3Rpb24oKQorewor
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgIGxvY2F0aW9uLmhyZWYgPSAncmVz
b3VyY2VzL3BhZ2VoaWRlLXRpbWVvdXQtZ28tYmFjay5odG1sJzsKKyAgICB9LCAxMCk7Cit9CisK
K3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwordmFyIGpzVGVzdElzQXN5bmMgPSB0cnVl
OworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAppbmRleCAwMTIzZGU2Li5jODcx
ZDgxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVj
dGF0aW9ucy50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBl
Y3RhdGlvbnMudHh0CkBAIC0yMDYsNiArMjA2LDcgQEAgV09OVEZJWCBTS0lQIDogZmFzdC9kb20v
V2luZG93L3RpbWVyLXJlc3VtZS1vbi1uYXZpZ2F0aW9uLWJhY2suaHRtbCA9IFRJTUVPVVQgRkEK
IFdPTlRGSVggU0tJUCA6IGZhc3QvZXZlbnRzL3BhZ2VoaWRlLXRpbWVvdXQuaHRtbCA9IFRJTUVP
VVQKIFdPTlRGSVggU0tJUCA6IGZhc3QvZXZlbnRzL3BhZ2VzaG93LXBhZ2VoaWRlLW9uLWJhY2st
Y2FjaGVkLmh0bWwgPSBUSU1FT1VUIEZBSUwKIFdPTlRGSVggU0tJUCA6IGZhc3QvZXZlbnRzL3Bh
Z2VzaG93LXBhZ2VoaWRlLW9uLWJhY2stY2FjaGVkLXdpdGgtZnJhbWVzLmh0bWwgPSBUSU1FT1VU
CitXT05URklYIFNLSVAgOiBmYXN0L2V2ZW50cy9zdXNwZW5kLXRpbWVycy5odG1sID0gVElNRU9V
VAogV09OVEZJWCBTS0lQIDogbWVkaWEvcmVzdG9yZS1mcm9tLXBhZ2UtY2FjaGUuaHRtbCA9IFRJ
TUVPVVQKIFdPTlRGSVggU0tJUCA6IGxvYWRlci9nby1iYWNrLXRvLWRpZmZlcmVudC13aW5kb3ct
c2l6ZS5odG1sID0gVElNRU9VVCBURVhUCiBXT05URklYIFNLSVAgOiBmYXN0L2xvYWRlci9jcmFz
aC1jb3B5aW5nLWJhY2tmb3J3YXJkbGlzdC5odG1sID0gVEVYVApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDYxMzJm
YzIuLmEwYmZmMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MyBAQAorMjAxMi0wMS0yNSAgQWxs
YW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQG5va2lhLmNvbT4KKworICAgICAgICBF
bnN1cmUgdGltZXJzIGFuZCBvdGhlciBhY3RpdmUgRE9NIG9iamVjdHMgZG8gbm90IGZpcmUgaW4g
c3VzcGVuZGVkIGRvY3VtZW50cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTUzNzMzCisKKyAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBub3cg
cmVtZW1iZXJzIGl0IGhhcyBzdXNwZW5kZWQgYWN0aXZlIERPTSBvYmplY3RzCisgICAgICAgIGFu
ZCBzdXNwZW5kcyBhbGwgbmV3bHkgaW5zdGFsbGVkIGFjdGl2ZSBET00gb2JqZWN0cyBhcyB3ZWxs
LgorCisgICAgICAgIEFsbCBjcmVhdGUtY2FsbHMgYWN0aXZlIERPTSBvYmplY3RzIG5vdyBjYWxs
cyBhIHBvc3QtY29uc3RydWN0b3IgbWV0aG9kIG9uCisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQgdGhhdCB1cGRhdGVzIHRoZSBzdXNwZW5kIHN0YXRlLiBJdCBpcyBwb3N0IGNvbnN0cnVj
dG9yCisgICAgICAgIGJlY2F1c2UgdGhlIHN1c3BlbmQvcmVzdW1lIGZ1bmN0aW9ucyBhcmUgdmly
dHVhbCBhbmQgdGh1cyBjYW4gbm90IGJlIGNhbGxlZAorICAgICAgICBmcm9tIGNvbnN0cnVjdG9y
cy4KKyAgICAgICAgSFRNTCBlbGVtZW50cyB0aGF0IGFyZSBhbHNvIGFjdGl2ZSBET00gb2JqZWN0
cyBjYWxscyB0aGUgcG9zdC1jb25zdHJ1Y3RvcgorICAgICAgICBmcm9tIGluc2VydGVkSW50b0Rv
Y3VtZW50KCkuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGVzdDogZmFzdC9ldmVudHMvc3VzcGVuZC10aW1lcnMuaHRtbAorCisgICAgICAgICogZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojp+U2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpjYW5TdXNwZW5kQWN0aXZlRE9N
T2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpzdXNw
ZW5kQWN0aXZlRE9NT2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpyZXN1bWVBY3RpdmVET01PYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OmRpZEluc3RhbGxBY3RpdmVET01PYmplY3QpOgorICAgICAgICAq
IGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjphY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkKToKKyAgICAgICAg
KiBmaWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NRmlsZVN5
c3RlbTo6Y3JlYXRlKToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsZVJlYWRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVS
ZWFkZXIuaDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVXcml0ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsZVdyaXRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVXcml0ZXIu
aDoKKyAgICAgICAgKiBoaXN0b3J5L0NhY2hlZEZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZEZyYW1lOjpDYWNoZWRGcmFtZSk6CisgICAgICAgICogaHRtbC9IVE1MTWFycXVlZUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1hcnF1ZWVFbGVtZW50OjppbnNlcnRl
ZEludG9Eb2N1bWVudCk6CisgICAgICAgICogaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuaDoKKyAg
ICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQpOgorICAgICAgICAqIHBhZ2UvRE9N
VGltZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NVGltZXI6Omluc3RhbGwpOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NVGltZXI6OmZpcmVkKToKKyAgICAgICAgKiBwYWdlL0V2ZW50U291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50U291cmNlOjpjcmVhdGUpOgorICAgICAgICAq
IHBhZ2UvU3VzcGVuZGFibGVUaW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdXNwZW5kYWJs
ZVRpbWVyOjpTdXNwZW5kYWJsZVRpbWVyKToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tl
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmNyZWF0ZSk6CisgICAgICAgICog
d2Vic29ja2V0cy9XZWJTb2NrZXQuaDoKKyAgICAgICAgKiB3b3JrZXJzL1NoYXJlZFdvcmtlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXI6OmNyZWF0ZSk6CisgICAgICAgICog
d29ya2Vycy9Xb3JrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyOjpjcmVhdGUpOgor
ICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxI
dHRwUmVxdWVzdDo6Y3JlYXRlKToKKwogMjAxMi0wMS0yNiAgTmlrb2xhcyBaaW1tZXJtYW5uICA8
bnppbW1lcm1hbm5AcmltLmNvbT4KIAogICAgICAgICBOb3QgcmV2aWV3ZWQuIFRyeSB0byBmaXgg
R3RrIGJ1aWxkIC0gSlNTaGFkb3dSb290LmNwcCBjYW4ndCBiZSBmb3VuZCwgZml4IGJ5IGxvb2tp
bmcgZm9yIGl0IGluIHRoZSBkZXJpdmVkIHNvdXJjZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKaW5kZXggZWYwNmMyOS4uZTk1ODkzNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcApAQCAtOTIsNiAr
OTIsNyBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkK
ICAgICA6IG1faXRlcmF0aW5nQWN0aXZlRE9NT2JqZWN0cyhmYWxzZSkKICAgICAsIG1faW5EZXN0
cnVjdG9yKGZhbHNlKQogICAgICwgbV9pbkRpc3BhdGNoRXJyb3JFdmVudChmYWxzZSkKKyAgICAs
IG1fYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZChmYWxzZSkKICNpZiBFTkFCTEUoU1FMX0RB
VEFCQVNFKQogICAgICwgbV9oYXNPcGVuRGF0YWJhc2VzKGZhbHNlKQogI2VuZGlmCkBAIC0xMDEs
NyArMTAyLDYgQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6U2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojp+U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpCiB7
CiAgICAgbV9pbkRlc3RydWN0b3IgPSB0cnVlOwotCiAgICAgZm9yIChIYXNoU2V0PENvbnRleHRE
ZXN0cnVjdGlvbk9ic2VydmVyKj46Oml0ZXJhdG9yIGl0ZXIgPSBtX2Rlc3RydWN0aW9uT2JzZXJ2
ZXJzLmJlZ2luKCk7IGl0ZXIgIT0gbV9kZXN0cnVjdGlvbk9ic2VydmVycy5lbmQoKTsgaXRlciA9
IG1fZGVzdHJ1Y3Rpb25PYnNlcnZlcnMuYmVnaW4oKSkgewogICAgICAgICBDb250ZXh0RGVzdHJ1
Y3Rpb25PYnNlcnZlciogb2JzZXJ2ZXIgPSAqaXRlcjsKICAgICAgICAgbV9kZXN0cnVjdGlvbk9i
c2VydmVycy5yZW1vdmUob2JzZXJ2ZXIpOwpAQCAtMjEwLDcgKzIxMCw3IEBAIGJvb2wgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6Y2FuU3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoKQogICAgICAgICAg
ICAgbV9pdGVyYXRpbmdBY3RpdmVET01PYmplY3RzID0gZmFsc2U7CiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIH0KLSAgICB9ICAgIAorICAgIH0KICAgICBtX2l0ZXJhdGluZ0Fj
dGl2ZURPTU9iamVjdHMgPSBmYWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTIyNSwxMCAr
MjI1LDEzIEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6c3VzcGVuZEFjdGl2ZURPTU9i
amVjdHMoQWN0aXZlRE9NT2JqZWN0OjpSZWFzb25Gb3JTCiAgICAgICAgIGl0ZXItPmZpcnN0LT5z
dXNwZW5kKHdoeSk7CiAgICAgfQogICAgIG1faXRlcmF0aW5nQWN0aXZlRE9NT2JqZWN0cyA9IGZh
bHNlOworICAgIG1fYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCA9IHRydWU7CisgICAgbV9z
dXNwZW5kUmVhc29uID0gd2h5OwogfQogCiB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnJl
c3VtZUFjdGl2ZURPTU9iamVjdHMoKQogeworICAgIG1fYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3Bl
bmRlZCA9IGZhbHNlOwogICAgIC8vIE5vIHByb3RlY3Rpb24gYWdhaW5zdCBtX2FjdGl2ZURPTU9i
amVjdHMgY2hhbmdpbmcgZHVyaW5nIGl0ZXJhdGlvbjogcmVzdW1lKCkgc2hvdWxkbid0IGV4ZWN1
dGUgYXJiaXRyYXJ5IEpTLgogICAgIG1faXRlcmF0aW5nQWN0aXZlRE9NT2JqZWN0cyA9IHRydWU7
CiAgICAgSGFzaE1hcDxBY3RpdmVET01PYmplY3QqLCB2b2lkKj46Oml0ZXJhdG9yIGFjdGl2ZU9i
amVjdHNFbmQgPSBtX2FjdGl2ZURPTU9iamVjdHMuZW5kKCk7CkBAIC0yNTQsNiArMjU3LDE0IEBA
IHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6c3RvcEFjdGl2ZURPTU9iamVjdHMoKQogICAg
IGNsb3NlTWVzc2FnZVBvcnRzKCk7CiB9CiAKK3ZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
ZGlkSW5zdGFsbEFjdGl2ZURPTU9iamVjdChBY3RpdmVET01PYmplY3QqIG9iamVjdCkKK3sKKyAg
ICBBU1NFUlQobV9hY3RpdmVET01PYmplY3RzLmNvbnRhaW5zKG9iamVjdCkpOworICAgIC8vIEVu
c3VyZSBhbGwgQWN0aXZlRE9NT2JqZWN0cyBhcmUgc3VzcGVuZGVkIGFsc28gbmV3bHkgY3JlYXRl
ZCBvbmVzLgorICAgIGlmIChtX2FjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQpCisgICAgICAg
IG9iamVjdC0+c3VzcGVuZChtX3N1c3BlbmRSZWFzb24pOworfQorCiB2b2lkIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OmRpZENyZWF0ZUFjdGl2ZURPTU9iamVjdChBY3RpdmVET01PYmplY3QqIG9i
amVjdCwgdm9pZCogdXBjYXN0UG9pbnRlcikKIHsKICAgICBBU1NFUlQob2JqZWN0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCmluZGV4IGFlZDM0MTEuLmQw
MDAwYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApA
QCAtMTAzLDkgKzEwMywxNSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlc3VtZUFjdGl2
ZURPTU9iamVjdHMoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcEFjdGl2ZURPTU9iamVjdHMoKTsK
IAorICAgIGJvb2wgYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZDsgfQorCisgICAgLy8gQ2FsbGVkIGZyb20g
dGhlIGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9ycyBvZiBBY3RpdmVET01PYmplY3QKICAgICB2
b2lkIGRpZENyZWF0ZUFjdGl2ZURPTU9iamVjdChBY3RpdmVET01PYmplY3QqLCB2b2lkKiB1cGNh
c3RQb2ludGVyKTsKICAgICB2b2lkIHdpbGxEZXN0cm95QWN0aXZlRE9NT2JqZWN0KEFjdGl2ZURP
TU9iamVjdCopOwogCisgICAgLy8gQ2FsbGVkIGFmdGVyIHRoZSBjb25zdHJ1Y3Rpb24gb2YgYW4g
QWN0aXZlRE9NT2JqZWN0CisgICAgdm9pZCBkaWRJbnN0YWxsQWN0aXZlRE9NT2JqZWN0KEFjdGl2
ZURPTU9iamVjdCopOworCiAgICAgdHlwZWRlZiBjb25zdCBIYXNoTWFwPEFjdGl2ZURPTU9iamVj
dCosIHZvaWQqPiBBY3RpdmVET01PYmplY3RzTWFwOwogICAgIEFjdGl2ZURPTU9iamVjdHNNYXAm
IGFjdGl2ZURPTU9iamVjdHMoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2ZURPTU9iamVjdHM7IH0K
IApAQCAtMjA2LDYgKzIxMiw5IEBAIHByaXZhdGU6CiAgICAgY2xhc3MgUGVuZGluZ0V4Y2VwdGlv
bjsKICAgICBPd25QdHI8VmVjdG9yPE93blB0cjxQZW5kaW5nRXhjZXB0aW9uPiA+ID4gbV9wZW5k
aW5nRXhjZXB0aW9uczsKIAorICAgIGJvb2wgbV9hY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVk
OworICAgIEFjdGl2ZURPTU9iamVjdDo6UmVhc29uRm9yU3VzcGVuc2lvbiBtX3N1c3BlbmRSZWFz
b247CisKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogICAgIFJlZlB0cjxEYXRhYmFzZVRocmVh
ZD4gbV9kYXRhYmFzZVRocmVhZDsKICAgICBib29sIG1faGFzT3BlbkRhdGFiYXNlczsgLy8gVGhp
cyBuZXZlciBjaGFuZ2VzIGJhY2sgdG8gZmFsc2UsIGV2ZW4gYWZ0ZXIgdGhlIGRhdGFiYXNlIHRo
cmVhZCBpcyBjbG9zZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZp
bGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNwcApp
bmRleCBhYzM4NjkwLi5jOGVkNDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0RPTUZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5
c3RlbS5jcHAKQEAgLTU2LDYgKzU2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogUGFzc1JlZlB0
cjxET01GaWxlU3lzdGVtPiBET01GaWxlU3lzdGVtOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5
c3RlbT4gYXN5bmNGaWxlU3lzdGVtKQogewogICAgIFJlZlB0cjxET01GaWxlU3lzdGVtPiBmaWxl
U3lzdGVtKGFkb3B0UmVmKG5ldyBET01GaWxlU3lzdGVtKGNvbnRleHQsIG5hbWUsIGFzeW5jRmls
ZVN5c3RlbSkpKTsKKyAgICBjb250ZXh0LT5kaWRJbnN0YWxsQWN0aXZlRE9NT2JqZWN0KGZpbGVT
eXN0ZW0uZ2V0KCkpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkT3BlbkZpbGVT
eXN0ZW0oZmlsZVN5c3RlbS5nZXQoKSk7CiAgICAgcmV0dXJuIGZpbGVTeXN0ZW07CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcAppbmRleCAyOWM1OTg0Li45ZTk2YzYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAKQEAgLTQ4LDYgKzQ4LDEzIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IGRvdWJsZSBwcm9ncmVzc05vdGlmaWNhdGlv
bkludGVydmFsTVMgPSA1MDsKIAorUGFzc1JlZlB0cjxGaWxlUmVhZGVyPiBGaWxlUmVhZGVyOjpj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBGaWxlUmVhZGVy
KiBmaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoY29udGV4dCk7CisgICAgY29udGV4dC0+ZGlk
SW5zdGFsbEFjdGl2ZURPTU9iamVjdChmaWxlUmVhZGVyKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
ZmlsZVJlYWRlcik7Cit9CisKIEZpbGVSZWFkZXI6OkZpbGVSZWFkZXIoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCkKICAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQog
ICAgICwgbV9zdGF0ZShFTVBUWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
RmlsZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmgKaW5kZXgg
ODA0ZGQyOS4uZWNkZDQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxl
UmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmgKQEAgLTUx
LDEwICs1MSw3IEBAIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKIGNsYXNzIEZpbGVSZWFk
ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxGaWxlUmVhZGVyPiwgcHVibGljIEFjdGl2ZURPTU9iamVj
dCwgcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMgRmlsZVJlYWRlckxvYWRlckNsaWVudCB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RmlsZVJlYWRlcj4gY3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEZpbGVSZWFkZXIoY29udGV4dCkpOwotICAgIH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxG
aWxlUmVhZGVyPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogCiAgICAgdmlydHVh
bCB+RmlsZVJlYWRlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Zp
bGVXcml0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlV3JpdGVyLmNwcAppbmRl
eCAyYjI1Y2ZhLi40MzZlOGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Zp
bGVXcml0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVdyaXRlci5jcHAK
QEAgLTQ1LDYgKzQ1LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IGlu
dCBrTWF4UmVjdXJzaW9uRGVwdGggPSAzOwogCitQYXNzUmVmUHRyPEZpbGVXcml0ZXI+IEZpbGVX
cml0ZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQoreworICAgIEZp
bGVXcml0ZXIqIGZpbGVXcml0ZXIgPSBuZXcgRmlsZVdyaXRlcihjb250ZXh0KTsKKyAgICBjb250
ZXh0LT5kaWRJbnN0YWxsQWN0aXZlRE9NT2JqZWN0KGZpbGVXcml0ZXIpOworICAgIHJldHVybiBh
ZG9wdFJlZihmaWxlV3JpdGVyKTsKK30KKwogRmlsZVdyaXRlcjo6RmlsZVdyaXRlcihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQs
IHRoaXMpCiAgICAgLCBtX3JlYWR5U3RhdGUoSU5JVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRmlsZVdyaXRlci5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlV3Jp
dGVyLmgKaW5kZXggMmI1OTdhMS4uOTQ2MTM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9GaWxlV3JpdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlV3Jp
dGVyLmgKQEAgLTQ4LDEwICs0OCw3IEBAIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAK
IGNsYXNzIEZpbGVXcml0ZXIgOiBwdWJsaWMgRmlsZVdyaXRlckJhc2UsIHB1YmxpYyBBY3RpdmVE
T01PYmplY3QsIHB1YmxpYyBFdmVudFRhcmdldCwgcHVibGljIEFzeW5jRmlsZVdyaXRlckNsaWVu
dCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RmlsZVdyaXRlcj4gY3JlYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCi0gICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEZpbGVXcml0ZXIoY29udGV4dCkpOwotICAgIH0KKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxGaWxlV3JpdGVyPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogCiAgICAg
ZW51bSBSZWFkeVN0YXRlIHsKICAgICAgICAgSU5JVCA9IDAsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hpc3Rvcnkv
Q2FjaGVkRnJhbWUuY3BwCmluZGV4IDYwZmFiMDQuLjliMGQyZmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hp
c3RvcnkvQ2FjaGVkRnJhbWUuY3BwCkBAIC0xNjgsNyArMTY4LDYgQEAgQ2FjaGVkRnJhbWU6OkNh
Y2hlZEZyYW1lKEZyYW1lKiBmcmFtZSkKICAgICAvLyBidXQgYWZ0ZXIgd2UndmUgZmlyZWQgdGhl
IHBhZ2VoaWRlIGV2ZW50LCBpbiBjYXNlIHRoYXQgY3JlYXRlcyBtb3JlIG9iamVjdHMuCiAgICAg
Ly8gU3VzcGVuZGluZyBtdXN0IGFsc28gaGFwcGVuIGFmdGVyIHdlJ3ZlIHJlY3Vyc2VkIG92ZXIg
Y2hpbGQgZnJhbWVzLCBpbiBjYXNlCiAgICAgLy8gdGhvc2UgY3JlYXRlIG1vcmUgb2JqZWN0cy4K
LSAgICAvLyBGSVhNRTogSXQncyBzdGlsbCBwb3NzaWJsZSB0byBoYXZlIG9iamVjdHMgY3JlYXRl
ZCBhZnRlciBzdXNwZW5kaW5nIGluIHNvbWUgY2FzZXMsIHNlZSBodHRwOi8vd2Via2l0Lm9yZy9i
LzUzNzMzIGZvciBtb3JlIGRldGFpbHMuCiAgICAgbV9kb2N1bWVudC0+ZG9jdW1lbnRXaWxsU3Vz
cGVuZEZvclBhZ2VDYWNoZSgpOwogICAgIG1fZG9jdW1lbnQtPnN1c3BlbmRTY3JpcHRlZEFuaW1h
dGlvbkNvbnRyb2xsZXJDYWxsYmFja3MoKTsKICAgICBtX2RvY3VtZW50LT5zdXNwZW5kQWN0aXZl
RE9NT2JqZWN0cyhBY3RpdmVET01PYmplY3Q6OkRvY3VtZW50V2lsbEJlY29tZUluYWN0aXZlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNwcAppbmRleCAwNTNmZmE4
Li42MmU1ODM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuY3Bw
CkBAIC0xNzgsNiArMTc4LDEyIEBAIGJvb2wgSFRNTE1hcnF1ZWVFbGVtZW50OjpjYW5TdXNwZW5k
KCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBIVE1MTWFycXVlZUVsZW1lbnQ6
Omluc2VydGVkSW50b0RvY3VtZW50KCkKK3sKKyAgICBkb2N1bWVudCgpLT5kaWRJbnN0YWxsQWN0
aXZlRE9NT2JqZWN0KHRoaXMpOworICAgIEhUTUxFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVu
dCgpOworfQorCiB2b2lkIEhUTUxNYXJxdWVlRWxlbWVudDo6c3VzcGVuZChSZWFzb25Gb3JTdXNw
ZW5zaW9uKQogewogICAgIGlmIChSZW5kZXJNYXJxdWVlKiBtYXJxdWVlUmVuZGVyZXIgPSByZW5k
ZXJNYXJxdWVlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVl
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuaAppbmRl
eCA1ODZhYTZmLi5mNDk5YmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
YXJxdWVlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVt
ZW50LmgKQEAgLTU2LDYgKzU2LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgbWFwVG9F
bnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiwgTWFwcGVkQXR0cmlidXRlRW50cnkmKSBjb25zdDsK
ICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAKKyAg
ICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKKwogICAgIC8vIEFjdGl2ZURP
TU9iamVjdAogICAgIHZpcnR1YWwgYm9vbCBjYW5TdXNwZW5kKCkgY29uc3Q7CiAgICAgdmlydHVh
bCB2b2lkIHN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBjYzVjMjY0Li5jZGU5MmE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTQ2Niw2ICs0NjYsNyBAQCBSZW5kZXJP
YmplY3QqIEhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVu
YSwgUmVuZGVyU3R5bGUqKQogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1
bWVudCgpCiB7CiAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6aW5zZXJ0ZWRJbnRv
RG9jdW1lbnQiKTsKKyAgICBkb2N1bWVudCgpLT5kaWRJbnN0YWxsQWN0aXZlRE9NT2JqZWN0KHRo
aXMpOwogICAgIEhUTUxFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpOwogICAgIGlmICgh
Z2V0QXR0cmlidXRlKHNyY0F0dHIpLmlzRW1wdHkoKSAmJiBtX25ldHdvcmtTdGF0ZSA9PSBORVRX
T1JLX0VNUFRZKQogICAgICAgICBzY2hlZHVsZUxvYWQoTWVkaWFSZXNvdXJjZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NVGltZXIuY3BwCmluZGV4IDBhOTRlN2VmLi40ZjBiZDkxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVRpbWVyLmNwcApAQCAtOTIsNiArOTIsNyBAQCBpbnQgRE9NVGltZXI6Omluc3RhbGwoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc093blB0cjxTY2hlZHVsZWRBY3RpbwogICAg
IC8vIG9yIGlmIGl0IGlzIGEgb25lLXRpbWUgdGltZXIgYW5kIGl0IGhhcyBmaXJlZCAoRE9NVGlt
ZXI6OmZpcmVkKS4KICAgICBET01UaW1lciogdGltZXIgPSBuZXcgRE9NVGltZXIoY29udGV4dCwg
YWN0aW9uLCB0aW1lb3V0LCBzaW5nbGVTaG90KTsKIAorICAgIGNvbnRleHQtPmRpZEluc3RhbGxB
Y3RpdmVET01PYmplY3QodGltZXIpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
SW5zdGFsbFRpbWVyKGNvbnRleHQsIHRpbWVyLT5tX3RpbWVvdXRJZCwgdGltZW91dCwgc2luZ2xl
U2hvdCk7CiAKICAgICByZXR1cm4gdGltZXItPm1fdGltZW91dElkOwpAQCAtMTE0LDcgKzExNSw3
IEBAIHZvaWQgRE9NVGltZXI6OmZpcmVkKCkKIHsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIHRpbWVyTmVzdGluZ0xl
dmVsID0gbV9uZXN0aW5nTGV2ZWw7Ci0gICAgCisgICAgQVNTRVJUKCFjb250ZXh0LT5hY3RpdmVE
T01PYmplY3RzQXJlU3VzcGVuZGVkKCkpOwogICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1
cmVJbmRpY2F0b3IobV9zaG91bGRGb3J3YXJkVXNlckdlc3R1cmUgPyBEZWZpbml0ZWx5UHJvY2Vz
c2luZ1VzZXJHZXN0dXJlIDogUG9zc2libHlQcm9jZXNzaW5nVXNlckdlc3R1cmUpOwogICAgIAog
ICAgIC8vIE9ubHkgdGhlIGZpcnN0IGV4ZWN1dGlvbiBvZiBhIG11bHRpLXNob3QgdGltZXIgc2hv
dWxkIGdldCBhbiBhZmZpcm1hdGl2ZSB1c2VyIGdlc3R1cmUgaW5kaWNhdG9yLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50U291cmNlLmNwcAppbmRleCBlYTA2NjAwLi4zMWIxMTFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50U291cmNlLmNwcApAQCAtOTksNiArOTksOCBAQCBQYXNzUmVmUHRyPEV2ZW50U291
cmNlPiBFdmVudFNvdXJjZTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IGNvbgogICAgIHNvdXJjZS0+c2V0UGVuZGluZ0FjdGl2aXR5KHNvdXJjZS5nZXQoKSk7CiAgICAg
c291cmNlLT5jb25uZWN0KCk7CiAKKyAgICBjb250ZXh0LT5kaWRJbnN0YWxsQWN0aXZlRE9NT2Jq
ZWN0KHNvdXJjZS5nZXQoKSk7CisKICAgICByZXR1cm4gc291cmNlLnJlbGVhc2UoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TdXNwZW5kYWJsZVRpbWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU3VzcGVuZGFibGVUaW1lci5jcHAKaW5kZXggMmE0ZDJlNS4uZGQz
ZTg5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TdXNwZW5kYWJsZVRpbWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1c3BlbmRhYmxlVGltZXIuY3BwCkBAIC0zNSw4
ICszNSw4IEBAIFN1c3BlbmRhYmxlVGltZXI6OlN1c3BlbmRhYmxlVGltZXIoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCkKICAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlz
KQogICAgICwgbV9uZXh0RmlyZUludGVydmFsKDApCiAgICAgLCBtX3JlcGVhdEludGVydmFsKDAp
Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICwgbV9hY3RpdmUoZmFsc2UpCisjaWYgIUFTU0VS
VF9ESVNBQkxFRAogICAgICwgbV9zdXNwZW5kZWQoZmFsc2UpCiAjZW5kaWYKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAppbmRleCA1ZTIxM2I4Li45Zjg0ZTBjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCkBAIC0xNjQsNiArMTY0LDEzIEBA
IFdlYlNvY2tldDo6fldlYlNvY2tldCgpCiAgICAgICAgIG1fY2hhbm5lbC0+ZGlzY29ubmVjdCgp
OwogfQogCitQYXNzUmVmUHRyPFdlYlNvY2tldD4gV2ViU29ja2V0OjpjcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBXZWJTb2NrZXQqIHdlYlNvY2tldCA9IG5l
dyBXZWJTb2NrZXQoY29udGV4dCk7CisgICAgY29udGV4dC0+ZGlkSW5zdGFsbEFjdGl2ZURPTU9i
amVjdCh3ZWJTb2NrZXQpOworICAgIHJldHVybiBhZG9wdFJlZih3ZWJTb2NrZXQpOworfQorCiB2
b2lkIFdlYlNvY2tldDo6Y29ubmVjdChjb25zdCBTdHJpbmcmIHVybCwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7CiAgICAgVmVjdG9yPFN0cmluZz4gcHJvdG9jb2xzOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tl
dHMvV2ViU29ja2V0LmgKaW5kZXggYjg2MGI3NS4uY2FlNTdkMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJz
b2NrZXRzL1dlYlNvY2tldC5oCkBAIC01Myw3ICs1Myw3IEBAIGNsYXNzIFdlYlNvY2tldCA6IHB1
YmxpYyBSZWZDb3VudGVkPFdlYlNvY2tldD4sIHB1YmxpYyBFdmVudFRhcmdldCwgcHVibGljIEFj
dGl2CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgc2V0SXNBdmFpbGFibGUoYm9vbCk7CiAgICAg
c3RhdGljIGJvb2wgaXNBdmFpbGFibGUoKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJTb2Nr
ZXQ+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KSB7IHJldHVybiBhZG9w
dFJlZihuZXcgV2ViU29ja2V0KGNvbnRleHQpKTsgfQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdl
YlNvY2tldD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKICAgICB2aXJ0dWFsIH5X
ZWJTb2NrZXQoKTsKIAogICAgIGVudW0gU3RhdGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFy
ZWRXb3JrZXIuY3BwCmluZGV4IGZmMDc5MmMuLmRmMGI0MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1NoYXJlZFdvcmtlci5jcHAKQEAgLTY0LDYgKzY0LDcgQEAgUGFzc1JlZlB0cjxTaGFyZWRX
b3JrZXI+IFNoYXJlZFdvcmtlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIGMKIAogICAgIFNoYXJlZFdvcmtlclJlcG9zaXRvcnk6OmNvbm5lY3Qod29ya2VyLmdldCgp
LCByZW1vdGVQb3J0LnJlbGVhc2UoKSwgc2NyaXB0VVJMLCBuYW1lLCBlYyk7CiAKKyAgICBjb250
ZXh0LT5kaWRJbnN0YWxsQWN0aXZlRE9NT2JqZWN0KHdvcmtlci5nZXQoKSk7CiAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVXb3JrZXIoY29udGV4dCwgd29ya2VyLT5hc0lE
KCksIHNjcmlwdFVSTC5zdHJpbmcoKSwgdHJ1ZSk7CiAKICAgICByZXR1cm4gd29ya2VyLnJlbGVh
c2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcAppbmRleCBiMzIzNmE3Li43NzQ2Y2YyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCkBAIC03Myw2ICs3Myw3IEBAIFBhc3NSZWZQdHI8
V29ya2VyPiBXb3JrZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBj
b25zdCBTdHJpbmcmCiAjZW5kaWYKICAgICB3b3JrZXItPm1fc2NyaXB0TG9hZGVyLT5sb2FkQXN5
bmNocm9ub3VzbHkoY29udGV4dCwgc2NyaXB0VVJMLCBEZW55Q3Jvc3NPcmlnaW5SZXF1ZXN0cywg
d29ya2VyLmdldCgpKTsKIAorICAgIGNvbnRleHQtPmRpZEluc3RhbGxBY3RpdmVET01PYmplY3Qo
d29ya2VyLmdldCgpKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdv
cmtlcihjb250ZXh0LCB3b3JrZXItPmFzSUQoKSwgc2NyaXB0VVJMLnN0cmluZygpLCBmYWxzZSk7
CiAKICAgICByZXR1cm4gd29ya2VyLnJlbGVhc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3QuY3BwCmluZGV4IDZiZTU4YWEuLjBmMTlhNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0LmNwcApAQCAtMTU0LDcgKzE1NCwxMCBAQCBzdGF0aWMgdm9pZCBsb2dDb25zb2xl
RXJyb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBtZXNz
YQogCiBQYXNzUmVmUHRyPFhNTEh0dHBSZXF1ZXN0PiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+
IHNlY3VyaXR5T3JpZ2luKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgWE1MSHR0cFJlcXVl
c3QoY29udGV4dCwgc2VjdXJpdHlPcmlnaW4pKTsKKyAgICBYTUxIdHRwUmVxdWVzdCogeG1sSHR0
cFJlcXVlc3QgPSBuZXcgWE1MSHR0cFJlcXVlc3QoY29udGV4dCwgc2VjdXJpdHlPcmlnaW4pOwor
ICAgIGNvbnRleHQtPmRpZEluc3RhbGxBY3RpdmVET01PYmplY3QoeG1sSHR0cFJlcXVlc3QpOwor
CisgICAgcmV0dXJuIGFkb3B0UmVmKHhtbEh0dHBSZXF1ZXN0KTsKIH0KIAogWE1MSHR0cFJlcXVl
c3Q6OlhNTEh0dHBSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124289</attachid>
            <date>2012-01-27 04:14:55 -0800</date>
            <delta_ts>2012-01-30 05:12:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Bug53733-patch4.diff</filename>
            <type>text/plain</type>
            <size>22992</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmOTQxNzZmLi4xZTIzYmYwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDEt
MjcgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+CisKKyAg
ICAgICAgVGVzdCB0aGF0IHRpbWVycyBkbyBub3QgZmlyZSBmcm9tIHN1YmZyYW1lcyBvZiBzdXNw
ZW5kZWQgZG9jdW1lbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTM3MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGZhc3QvZXZlbnRzL3Jlc291cmNlcy9zdXNwZW5kLXN1YmZyYW1lLTEuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvcmVzb3VyY2VzL3N1c3BlbmQtc3ViZnJhbWUt
Mi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9zdXNwZW5kLXRpbWVycy1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3N1c3BlbmQtdGltZXJzLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25z
LnR4dDoKKwogMjAxMi0wMS0yNiAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFtRdF0gVW5yZXZpZXdlZCBnYXJkZW5pbmcgYWZ0ZXIgcjEwNTkxNy4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Jlc291cmNlcy9zdXNwZW5kLXN1YmZy
YW1lLTEuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Jlc291cmNlcy9zdXNwZW5kLXN1
YmZyYW1lLTEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMWJhOGVh
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcmVzb3VyY2VzL3N1
c3BlbmQtc3ViZnJhbWUtMS5odG1sCkBAIC0wLDAgKzEsMTYgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0PgorICAgICAgICBmdW5jdGlvbiB0ZXN0KCkgewor
ICAgICAgICAgICAgd2luZG93LnRvcC5jb25zb2xlLmxvZygnVGltZW91dCBpbiBzdWJmcmFtZS0x
IGNyZWF0ZWQnKTsKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICAgICAgYWxlcnQoJ1RpbWVvdXQgY3JlYXRlZCBpbiBzdWJmcmFtZS0xLmh0bWwgZmlyZWQn
KTsKKyAgICAgICAgICAgIH0sIDUwKTsKKyAgICAgICAgfQorICAgIDwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+CitJIGFtIHN1YmZyYW1lLTEuaHRtbAorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcmVzb3VyY2VzL3N1c3BlbmQtc3ViZnJhbWUt
Mi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcmVzb3VyY2VzL3N1c3BlbmQtc3ViZnJh
bWUtMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllM2IyZWUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZXNvdXJjZXMvc3VzcGVu
ZC1zdWJmcmFtZS0yLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorCTxzY3JpcHQ+CisJb25wYWdlaGlkZSA9IGZ1bmN0aW9uKCkgeworCSAgd2lu
ZG93LnRvcC5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYS1mcmFtZScpLmNvbnRlbnRXaW5kb3cu
dGVzdCgpOworCX0KKwk8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorSSBhbSBzdWJmcmFtZS0y
Lmh0bWwKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL3N1c3BlbmQtdGltZXJzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L3N1c3BlbmQtdGltZXJzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi44NTk3NzRkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvc3VzcGVuZC10aW1lcnMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKK0NPTlNPTEUg
TUVTU0FHRTogbGluZSA2OiBUaW1lb3V0IGluIHN1YmZyYW1lLTEgY3JlYXRlZAorQ09OU09MRSBN
RVNTQUdFOiBsaW5lIDU6IExvYWRlZCBwYWdlaGlkZS10aW1lb3V0LWdvLWJhY2suaHRtbCwgZ29p
bmcgYmFjaworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDMxOiBSZXN0b3JlZCBwYWdlIGZyb20gcGFn
ZSBjYWNoZS4KK0FMRVJUOiBUaW1lb3V0IGNyZWF0ZWQgaW4gc3ViZnJhbWUtMS5odG1sIGZpcmVk
CitUZXN0cyB0aGF0IGFsbCBKUyB0aW1lcnMgYXJlIHN1c3BlbmRlZCBhZnRlciB0aGUgcGFnZWhp
ZGUgZXZlbnQgaXMgZmlyZWQsIHNvIHRoYXQgdGltZXJzIGNyZWF0ZWQgd2l0aGluIGl0IHdpbGwg
bm90IGZpcmUgd2hpbGUgdGhlIGRvY3VtZW50IGlzIGluIHRoZSBwYWdlIGNhY2hlLgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L3N1c3BlbmQtdGltZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zdXNwZW5kLXRp
bWVycy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiN2VlNzQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zdXNwZW5kLXRpbWVycy5o
dG1sCkBAIC0wLDAgKzEsNTMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0
aXRsZT5TdXNwZW5kIHRpbWVycyBvbiBuYXZpZ2F0ZTwvdGl0bGU+Cis8c3R5bGU+CisgICAgaWZy
YW1lIHsKKyAgICAgIGRpc3BsYXk6IGJsb2NrOworICAgICAgYm9yZGVyOiBzb2xpZCAxcHggI2Nj
YzsKKyAgICAgIG1hcmdpbjogMWVtOworICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgaGVpZ2h0
OiAyMDBweDsKKyAgICB9Cis8L3N0eWxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKworPGlm
cmFtZSBzcmM9InJlc291cmNlcy9zdXNwZW5kLXN1YmZyYW1lLTEuaHRtbCIgaWQ9ImEtZnJhbWUi
PjwvaWZyYW1lPiA8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3N1c3BlbmQtc3ViZnJhbWUtMi5odG1s
IiBpZD0iYi1mcmFtZSI+PC9pZnJhbWU+CisKKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
Ij4KK2Rlc2NyaXB0aW9uKCdUZXN0cyB0aGF0IGFsbCBKUyB0aW1lcnMgYXJlIHN1c3BlbmRlZCBh
ZnRlciB0aGUgcGFnZWhpZGUgZXZlbnQgaXMgZmlyZWQsIHNvIHRoYXQgdGltZXJzIGNyZWF0ZWQg
d2l0aGluIGl0IHdpbGwgbm90IGZpcmUgd2hpbGUgdGhlIGRvY3VtZW50IGlzIGluIHRoZSBwYWdl
IGNhY2hlLicpOworCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgnV2ViS2l0VXNlc1BhZ2VDYWNoZVBy
ZWZlcmVuY2VLZXknLCAxKTsKKworCitvbnBhZ2VzaG93ID0gZnVuY3Rpb24oZXZlbnQpCit7Cisg
ICAgaWYgKGV2ZW50LnBlcnNpc3RlZCkgeworICAgICAgICBjb25zb2xlLmxvZygnUmVzdG9yZWQg
cGFnZSBmcm9tIHBhZ2UgY2FjaGUuJyk7CisgICAgICAgIGlmICghd2luZG93Lndhc0ZpbmlzaEpT
VGVzdENhbGxlZCkgeworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgIH0sIDIwMCk7CisgICAgICAg
IH0KKyAgICB9Cit9CisKK29ubG9hZCA9IGZ1bmN0aW9uKCkKK3sKKyAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeworICAgICAgICBsb2NhdGlvbi5ocmVmID0gJ3Jlc291cmNlcy9wYWdlaGlkZS10
aW1lb3V0LWdvLWJhY2suaHRtbCc7CisgICAgfSwgMTApOworfQorCit2YXIgc3VjY2Vzc2Z1bGx5
UGFyc2VkID0gdHJ1ZTsKK3ZhciBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90
ZXN0X2V4cGVjdGF0aW9ucy50eHQKaW5kZXggMDEyM2RlNi4uYzg3MWQ4MSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dApAQCAt
MjA2LDYgKzIwNiw3IEBAIFdPTlRGSVggU0tJUCA6IGZhc3QvZG9tL1dpbmRvdy90aW1lci1yZXN1
bWUtb24tbmF2aWdhdGlvbi1iYWNrLmh0bWwgPSBUSU1FT1VUIEZBCiBXT05URklYIFNLSVAgOiBm
YXN0L2V2ZW50cy9wYWdlaGlkZS10aW1lb3V0Lmh0bWwgPSBUSU1FT1VUCiBXT05URklYIFNLSVAg
OiBmYXN0L2V2ZW50cy9wYWdlc2hvdy1wYWdlaGlkZS1vbi1iYWNrLWNhY2hlZC5odG1sID0gVElN
RU9VVCBGQUlMCiBXT05URklYIFNLSVAgOiBmYXN0L2V2ZW50cy9wYWdlc2hvdy1wYWdlaGlkZS1v
bi1iYWNrLWNhY2hlZC13aXRoLWZyYW1lcy5odG1sID0gVElNRU9VVAorV09OVEZJWCBTS0lQIDog
ZmFzdC9ldmVudHMvc3VzcGVuZC10aW1lcnMuaHRtbCA9IFRJTUVPVVQKIFdPTlRGSVggU0tJUCA6
IG1lZGlhL3Jlc3RvcmUtZnJvbS1wYWdlLWNhY2hlLmh0bWwgPSBUSU1FT1VUCiBXT05URklYIFNL
SVAgOiBsb2FkZXIvZ28tYmFjay10by1kaWZmZXJlbnQtd2luZG93LXNpemUuaHRtbCA9IFRJTUVP
VVQgVEVYVAogV09OVEZJWCBTS0lQIDogZmFzdC9sb2FkZXIvY3Jhc2gtY29weWluZy1iYWNrZm9y
d2FyZGxpc3QuaHRtbCA9IFRFWFQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2MTMyZmMyLi5mNjU3MTZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNjMgQEAKKzIwMTItMDEtMjcgIEFsbGFuIFNhbmRmZWxkIEplbnNl
biAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+CisKKyAgICAgICAgRW5zdXJlIHRpbWVycyBhbmQg
b3RoZXIgYWN0aXZlIERPTSBvYmplY3RzIGRvIG5vdCBmaXJlIGluIHN1c3BlbmRlZCBkb2N1bWVu
dHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01Mzcz
MworCisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgbm93IHJlbWVtYmVycyBpdCBoYXMg
c3VzcGVuZGVkIGFjdGl2ZSBET00gb2JqZWN0cworICAgICAgICBhbmQgc3VzcGVuZHMgYWxsIG5l
d2x5IGluc3RhbGxlZCBhY3RpdmUgRE9NIG9iamVjdHMgYXMgd2VsbC4KKworICAgICAgICBBbGwg
Y3JlYXRlLWNhbGxzIGFjdGl2ZSBET00gb2JqZWN0cyBub3cgY2FsbHMgYSBwb3N0LWNvbnN0cnVj
dG9yIG1ldGhvZCBvbgorICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0IHRoYXQgdXBkYXRl
cyB0aGUgc3VzcGVuZCBzdGF0ZS4gSXQgaXMgcG9zdCBjb25zdHJ1Y3RvcgorICAgICAgICBiZWNh
dXNlIHRoZSBzdXNwZW5kL3Jlc3VtZSBmdW5jdGlvbnMgYXJlIHZpcnR1YWwgYW5kIHRodXMgY2Fu
IG5vdCBiZSBjYWxsZWQKKyAgICAgICAgZnJvbSBjb25zdHJ1Y3RvcnMuCisgICAgICAgIEhUTUwg
ZWxlbWVudHMgdGhhdCBhcmUgYWxzbyBhY3RpdmUgRE9NIG9iamVjdHMgY2FsbHMgdGhlIHBvc3Qt
Y29uc3RydWN0b3IKKyAgICAgICAgZnJvbSBpbnNlcnRlZEludG9Eb2N1bWVudCgpLgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZXZl
bnRzL3N1c3BlbmQtdGltZXJzLmh0bWwKKworICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6flNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6Y2FuU3VzcGVuZEFjdGl2ZURPTU9iamVjdHMpOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6c3VzcGVuZEFjdGl2ZURPTU9iamVj
dHMpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cmVzdW1lQWN0
aXZlRE9NT2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpkaWRJbnN0YWxsQWN0aXZlRE9NT2JqZWN0KToKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
YWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCk6CisgICAgICAgICogZmlsZWFwaS9ET01GaWxl
U3lzdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW06OmNyZWF0ZSk6Cisg
ICAgICAgICogZmlsZWFwaS9GaWxlUmVhZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVS
ZWFkZXI6OmNyZWF0ZSk6CisgICAgICAgICogZmlsZWFwaS9GaWxlUmVhZGVyLmg6CisgICAgICAg
ICogZmlsZWFwaS9GaWxlV3JpdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVXcml0ZXI6
OmNyZWF0ZSk6CisgICAgICAgICogZmlsZWFwaS9GaWxlV3JpdGVyLmg6CisgICAgICAgICogaGlz
dG9yeS9DYWNoZWRGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGcmFtZTo6Q2Fj
aGVkRnJhbWUpOgorICAgICAgICAqIGh0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNYXJxdWVlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQpOgor
ICAgICAgICAqIGh0bWwvSFRNTE1hcnF1ZWVFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Omlu
c2VydGVkSW50b0RvY3VtZW50KToKKyAgICAgICAgKiBwYWdlL0RPTVRpbWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTVRpbWVyOjppbnN0YWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRp
bWVyOjpmaXJlZCk6CisgICAgICAgICogcGFnZS9FdmVudFNvdXJjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudFNvdXJjZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWdlL1N1c3BlbmRhYmxl
VGltZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VzcGVuZGFibGVUaW1lcjo6U3VzcGVuZGFi
bGVUaW1lcik6CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViU29ja2V0OjpjcmVhdGUpOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29j
a2V0Lmg6CisgICAgICAgICogd29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVkV29ya2VyOjpjcmVhdGUpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcjo6Y3JlYXRlKToKKyAgICAgICAgKiB4bWwvWE1M
SHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0
ZSk6CisKIDIwMTItMDEtMjYgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5j
b20+CiAKICAgICAgICAgTm90IHJldmlld2VkLiBUcnkgdG8gZml4IEd0ayBidWlsZCAtIEpTU2hh
ZG93Um9vdC5jcHAgY2FuJ3QgYmUgZm91bmQsIGZpeCBieSBsb29raW5nIGZvciBpdCBpbiB0aGUg
ZGVyaXZlZCBzb3VyY2VzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuY3BwCmluZGV4IGVmMDZjMjkuLmU5NTg5MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKQEAgLTkyLDYgKzkyLDcgQEAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpCiAgICAgOiBtX2l0ZXJhdGlu
Z0FjdGl2ZURPTU9iamVjdHMoZmFsc2UpCiAgICAgLCBtX2luRGVzdHJ1Y3RvcihmYWxzZSkKICAg
ICAsIG1faW5EaXNwYXRjaEVycm9yRXZlbnQoZmFsc2UpCisgICAgLCBtX2FjdGl2ZURPTU9iamVj
dHNBcmVTdXNwZW5kZWQoZmFsc2UpCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICAsIG1f
aGFzT3BlbkRhdGFiYXNlcyhmYWxzZSkKICNlbmRpZgpAQCAtMTAxLDcgKzEwMiw2IEBAIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKQogU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6flNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKQogewogICAgIG1faW5EZXN0cnVj
dG9yID0gdHJ1ZTsKLQogICAgIGZvciAoSGFzaFNldDxDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZl
cio+OjppdGVyYXRvciBpdGVyID0gbV9kZXN0cnVjdGlvbk9ic2VydmVycy5iZWdpbigpOyBpdGVy
ICE9IG1fZGVzdHJ1Y3Rpb25PYnNlcnZlcnMuZW5kKCk7IGl0ZXIgPSBtX2Rlc3RydWN0aW9uT2Jz
ZXJ2ZXJzLmJlZ2luKCkpIHsKICAgICAgICAgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIqIG9i
c2VydmVyID0gKml0ZXI7CiAgICAgICAgIG1fZGVzdHJ1Y3Rpb25PYnNlcnZlcnMucmVtb3ZlKG9i
c2VydmVyKTsKQEAgLTIxMCw3ICsyMTAsNyBAQCBib29sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OmNhblN1c3BlbmRBY3RpdmVET01PYmplY3RzKCkKICAgICAgICAgICAgIG1faXRlcmF0aW5nQWN0
aXZlRE9NT2JqZWN0cyA9IGZhbHNlOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9Ci0gICAgfSAgICAKKyAgICB9CiAgICAgbV9pdGVyYXRpbmdBY3RpdmVET01PYmplY3RzID0g
ZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yMjUsMTAgKzIyNSwxMyBAQCB2b2lkIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnN1c3BlbmRBY3RpdmVET01PYmplY3RzKEFjdGl2ZURPTU9i
amVjdDo6UmVhc29uRm9yUwogICAgICAgICBpdGVyLT5maXJzdC0+c3VzcGVuZCh3aHkpOwogICAg
IH0KICAgICBtX2l0ZXJhdGluZ0FjdGl2ZURPTU9iamVjdHMgPSBmYWxzZTsKKyAgICBtX2FjdGl2
ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQgPSB0cnVlOworICAgIG1fc3VzcGVuZFJlYXNvbiA9IHdo
eTsKIH0KIAogdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpyZXN1bWVBY3RpdmVET01PYmpl
Y3RzKCkKIHsKKyAgICBtX2FjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQgPSBmYWxzZTsKICAg
ICAvLyBObyBwcm90ZWN0aW9uIGFnYWluc3QgbV9hY3RpdmVET01PYmplY3RzIGNoYW5naW5nIGR1
cmluZyBpdGVyYXRpb246IHJlc3VtZSgpIHNob3VsZG4ndCBleGVjdXRlIGFyYml0cmFyeSBKUy4K
ICAgICBtX2l0ZXJhdGluZ0FjdGl2ZURPTU9iamVjdHMgPSB0cnVlOwogICAgIEhhc2hNYXA8QWN0
aXZlRE9NT2JqZWN0Kiwgdm9pZCo+OjppdGVyYXRvciBhY3RpdmVPYmplY3RzRW5kID0gbV9hY3Rp
dmVET01PYmplY3RzLmVuZCgpOwpAQCAtMjU0LDYgKzI1NywxNCBAQCB2b2lkIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OnN0b3BBY3RpdmVET01PYmplY3RzKCkKICAgICBjbG9zZU1lc3NhZ2VQb3J0
cygpOwogfQogCit2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmRpZEluc3RhbGxBY3RpdmVE
T01PYmplY3QoQWN0aXZlRE9NT2JqZWN0KiBvYmplY3QpCit7CisgICAgQVNTRVJUKG1fYWN0aXZl
RE9NT2JqZWN0cy5jb250YWlucyhvYmplY3QpKTsKKyAgICAvLyBFbnN1cmUgYWxsIEFjdGl2ZURP
TU9iamVjdHMgYXJlIHN1c3BlbmRlZCBhbHNvIG5ld2x5IGNyZWF0ZWQgb25lcy4KKyAgICBpZiAo
bV9hY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkKQorICAgICAgICBvYmplY3QtPnN1c3BlbmQo
bV9zdXNwZW5kUmVhc29uKTsKK30KKwogdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpkaWRD
cmVhdGVBY3RpdmVET01PYmplY3QoQWN0aXZlRE9NT2JqZWN0KiBvYmplY3QsIHZvaWQqIHVwY2Fz
dFBvaW50ZXIpCiB7CiAgICAgQVNTRVJUKG9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaAppbmRleCBhZWQzNDExLi5kMDAwMGIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKQEAgLTEwMyw5ICsxMDMsMTUg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZXN1bWVBY3RpdmVET01PYmplY3RzKCk7CiAg
ICAgdmlydHVhbCB2b2lkIHN0b3BBY3RpdmVET01PYmplY3RzKCk7CiAKKyAgICBib29sIGFjdGl2
ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2ZURPTU9iamVj
dHNBcmVTdXNwZW5kZWQ7IH0KKworICAgIC8vIENhbGxlZCBmcm9tIHRoZSBjb25zdHJ1Y3RvciBh
bmQgZGVzdHJ1Y3RvcnMgb2YgQWN0aXZlRE9NT2JqZWN0CiAgICAgdm9pZCBkaWRDcmVhdGVBY3Rp
dmVET01PYmplY3QoQWN0aXZlRE9NT2JqZWN0Kiwgdm9pZCogdXBjYXN0UG9pbnRlcik7CiAgICAg
dm9pZCB3aWxsRGVzdHJveUFjdGl2ZURPTU9iamVjdChBY3RpdmVET01PYmplY3QqKTsKIAorICAg
IC8vIENhbGxlZCBhZnRlciB0aGUgY29uc3RydWN0aW9uIG9mIGFuIEFjdGl2ZURPTU9iamVjdAor
ICAgIHZvaWQgZGlkSW5zdGFsbEFjdGl2ZURPTU9iamVjdChBY3RpdmVET01PYmplY3QqKTsKKwog
ICAgIHR5cGVkZWYgY29uc3QgSGFzaE1hcDxBY3RpdmVET01PYmplY3QqLCB2b2lkKj4gQWN0aXZl
RE9NT2JqZWN0c01hcDsKICAgICBBY3RpdmVET01PYmplY3RzTWFwJiBhY3RpdmVET01PYmplY3Rz
KCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmVET01PYmplY3RzOyB9CiAKQEAgLTIwNiw2ICsyMTIs
OSBAQCBwcml2YXRlOgogICAgIGNsYXNzIFBlbmRpbmdFeGNlcHRpb247CiAgICAgT3duUHRyPFZl
Y3RvcjxPd25QdHI8UGVuZGluZ0V4Y2VwdGlvbj4gPiA+IG1fcGVuZGluZ0V4Y2VwdGlvbnM7CiAK
KyAgICBib29sIG1fYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZDsKKyAgICBBY3RpdmVET01P
YmplY3Q6OlJlYXNvbkZvclN1c3BlbnNpb24gbV9zdXNwZW5kUmVhc29uOworCiAjaWYgRU5BQkxF
KFNRTF9EQVRBQkFTRSkKICAgICBSZWZQdHI8RGF0YWJhc2VUaHJlYWQ+IG1fZGF0YWJhc2VUaHJl
YWQ7CiAgICAgYm9vbCBtX2hhc09wZW5EYXRhYmFzZXM7IC8vIFRoaXMgbmV2ZXIgY2hhbmdlcyBi
YWNrIHRvIGZhbHNlLCBldmVuIGFmdGVyIHRoZSBkYXRhYmFzZSB0aHJlYWQgaXMgY2xvc2VkLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbS5jcHAKaW5kZXggYWMzODY5MC4uYzhl
ZDQyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCkBAIC01Niw2
ICs1Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4g
RE9NRmlsZVN5c3RlbTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFN0cmluZyYgbmFtZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGFzeW5jRmlsZVN5
c3RlbSkKIHsKICAgICBSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZVN5c3RlbShhZG9wdFJlZihu
ZXcgRE9NRmlsZVN5c3RlbShjb250ZXh0LCBuYW1lLCBhc3luY0ZpbGVTeXN0ZW0pKSk7CisgICAg
Y29udGV4dC0+ZGlkSW5zdGFsbEFjdGl2ZURPTU9iamVjdChmaWxlU3lzdGVtLmdldCgpKTsKICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE9wZW5GaWxlU3lzdGVtKGZpbGVTeXN0ZW0u
Z2V0KCkpOwogICAgIHJldHVybiBmaWxlU3lzdGVtOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmls
ZVJlYWRlci5jcHAKaW5kZXggMjljNTk4NC4uOWU5NmM2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGVSZWFkZXIuY3BwCkBAIC00OCw2ICs0OCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHN0YXRpYyBjb25zdCBkb3VibGUgcHJvZ3Jlc3NOb3RpZmljYXRpb25JbnRlcnZhbE1TID0gNTA7
CiAKK1Bhc3NSZWZQdHI8RmlsZVJlYWRlcj4gRmlsZVJlYWRlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQpCit7CisgICAgRmlsZVJlYWRlciogZmlsZVJlYWRlciA9IG5l
dyBGaWxlUmVhZGVyKGNvbnRleHQpOworICAgIGNvbnRleHQtPmRpZEluc3RhbGxBY3RpdmVET01P
YmplY3QoZmlsZVJlYWRlcik7CisgICAgcmV0dXJuIGFkb3B0UmVmKGZpbGVSZWFkZXIpOworfQor
CiBGaWxlUmVhZGVyOjpGaWxlUmVhZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQp
CiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKICAgICAsIG1fc3RhdGUoRU1Q
VFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5oCmluZGV4IDgwNGRkMjkuLmVjZGQ0ODUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5oCkBAIC01MSwxMCArNTEsNyBAQCB0eXBl
ZGVmIGludCBFeGNlcHRpb25Db2RlOwogCiBjbGFzcyBGaWxlUmVhZGVyIDogcHVibGljIFJlZkNv
dW50ZWQ8RmlsZVJlYWRlcj4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBFdmVudFRh
cmdldCwgcHVibGljIEZpbGVSZWFkZXJMb2FkZXJDbGllbnQgewogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEZpbGVSZWFkZXI+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGaWxlUmVhZGVyKGNv
bnRleHQpKTsKLSAgICB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RmlsZVJlYWRlcj4gY3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKIAogICAgIHZpcnR1YWwgfkZpbGVSZWFkZXIoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlV3JpdGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVdyaXRlci5jcHAKaW5kZXggMmIyNWNmYS4uNDM2ZThm
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlV3JpdGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVXcml0ZXIuY3BwCkBAIC00NSw2ICs0NSwxMyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBpbnQga01heFJlY3Vyc2lvbkRl
cHRoID0gMzsKIAorUGFzc1JlZlB0cjxGaWxlV3JpdGVyPiBGaWxlV3JpdGVyOjpjcmVhdGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBGaWxlV3JpdGVyKiBmaWxlV3Jp
dGVyID0gbmV3IEZpbGVXcml0ZXIoY29udGV4dCk7CisgICAgY29udGV4dC0+ZGlkSW5zdGFsbEFj
dGl2ZURPTU9iamVjdChmaWxlV3JpdGVyKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoZmlsZVdyaXRl
cik7Cit9CisKIEZpbGVXcml0ZXI6OkZpbGVXcml0ZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCkKICAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQogICAgICwgbV9y
ZWFkeVN0YXRlKElOSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVX
cml0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVdyaXRlci5oCmluZGV4IDJiNTk3
YTEuLjk0NjEzNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVdyaXRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVdyaXRlci5oCkBAIC00OCwxMCAr
NDgsNyBAQCBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCiBjbGFzcyBGaWxlV3JpdGVy
IDogcHVibGljIEZpbGVXcml0ZXJCYXNlLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMg
RXZlbnRUYXJnZXQsIHB1YmxpYyBBc3luY0ZpbGVXcml0ZXJDbGllbnQgewogcHVibGljOgotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEZpbGVXcml0ZXI+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGaWxlV3Jp
dGVyKGNvbnRleHQpKTsKLSAgICB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RmlsZVdyaXRlcj4g
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKIAogICAgIGVudW0gUmVhZHlTdGF0ZSB7
CiAgICAgICAgIElOSVQgPSAwLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9D
YWNoZWRGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmNwcApp
bmRleCA2MGZhYjA0Li45YjBkMmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L0NhY2hlZEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1l
LmNwcApAQCAtMTY4LDcgKzE2OCw2IEBAIENhY2hlZEZyYW1lOjpDYWNoZWRGcmFtZShGcmFtZSog
ZnJhbWUpCiAgICAgLy8gYnV0IGFmdGVyIHdlJ3ZlIGZpcmVkIHRoZSBwYWdlaGlkZSBldmVudCwg
aW4gY2FzZSB0aGF0IGNyZWF0ZXMgbW9yZSBvYmplY3RzLgogICAgIC8vIFN1c3BlbmRpbmcgbXVz
dCBhbHNvIGhhcHBlbiBhZnRlciB3ZSd2ZSByZWN1cnNlZCBvdmVyIGNoaWxkIGZyYW1lcywgaW4g
Y2FzZQogICAgIC8vIHRob3NlIGNyZWF0ZSBtb3JlIG9iamVjdHMuCi0gICAgLy8gRklYTUU6IEl0
J3Mgc3RpbGwgcG9zc2libGUgdG8gaGF2ZSBvYmplY3RzIGNyZWF0ZWQgYWZ0ZXIgc3VzcGVuZGlu
ZyBpbiBzb21lIGNhc2VzLCBzZWUgaHR0cDovL3dlYmtpdC5vcmcvYi81MzczMyBmb3IgbW9yZSBk
ZXRhaWxzLgogICAgIG1fZG9jdW1lbnQtPmRvY3VtZW50V2lsbFN1c3BlbmRGb3JQYWdlQ2FjaGUo
KTsKICAgICBtX2RvY3VtZW50LT5zdXNwZW5kU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyQ2Fs
bGJhY2tzKCk7CiAgICAgbV9kb2N1bWVudC0+c3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoQWN0aXZl
RE9NT2JqZWN0OjpEb2N1bWVudFdpbGxCZWNvbWVJbmFjdGl2ZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNYXJxdWVlRWxlbWVudC5jcHAKaW5kZXggMDUzZmZhOC4uNjJlNTgzOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNwcApAQCAtMTc4LDYgKzE3OCwx
MiBAQCBib29sIEhUTUxNYXJxdWVlRWxlbWVudDo6Y2FuU3VzcGVuZCgpIGNvbnN0CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKK3ZvaWQgSFRNTE1hcnF1ZWVFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1
bWVudCgpCit7CisgICAgZG9jdW1lbnQoKS0+ZGlkSW5zdGFsbEFjdGl2ZURPTU9iamVjdCh0aGlz
KTsKKyAgICBIVE1MRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKK30KKwogdm9pZCBI
VE1MTWFycXVlZUVsZW1lbnQ6OnN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikKIHsKICAgICBp
ZiAoUmVuZGVyTWFycXVlZSogbWFycXVlZVJlbmRlcmVyID0gcmVuZGVyTWFycXVlZSgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmgKaW5kZXggNTg2YWE2Zi4uZjQ5OWJl
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5oCkBAIC01Niw2ICs1
Niw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIG1hcFRvRW50cnkoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIE1hcHBlZEF0dHJpYnV0ZUVudHJ5JikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lk
IHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogCisgICAgdmlydHVhbCB2b2lkIGlu
c2VydGVkSW50b0RvY3VtZW50KCk7CisKICAgICAvLyBBY3RpdmVET01PYmplY3QKICAgICB2aXJ0
dWFsIGJvb2wgY2FuU3VzcGVuZCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBzdXNwZW5kKFJl
YXNvbkZvclN1c3BlbnNpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAKaW5kZXggY2M1YzI2NC4uY2RlOTJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwCkBAIC00NjYsNiArNDY2LDcgQEAgUmVuZGVyT2JqZWN0KiBIVE1MTWVkaWFF
bGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikK
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKQogewogICAgIExP
RyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50Iik7CisgICAg
ZG9jdW1lbnQoKS0+ZGlkSW5zdGFsbEFjdGl2ZURPTU9iamVjdCh0aGlzKTsKICAgICBIVE1MRWxl
bWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKICAgICBpZiAoIWdldEF0dHJpYnV0ZShzcmNB
dHRyKS5pc0VtcHR5KCkgJiYgbV9uZXR3b3JrU3RhdGUgPT0gTkVUV09SS19FTVBUWSkKICAgICAg
ICAgc2NoZWR1bGVMb2FkKE1lZGlhUmVzb3VyY2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9ET01UaW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNwcApp
bmRleCAwYTk0ZTdlZi4uNGYwYmQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9E
T01UaW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01UaW1lci5jcHAKQEAgLTky
LDYgKzkyLDcgQEAgaW50IERPTVRpbWVyOjppbnN0YWxsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIFBhc3NPd25QdHI8U2NoZWR1bGVkQWN0aW8KICAgICAvLyBvciBpZiBpdCBpcyBh
IG9uZS10aW1lIHRpbWVyIGFuZCBpdCBoYXMgZmlyZWQgKERPTVRpbWVyOjpmaXJlZCkuCiAgICAg
RE9NVGltZXIqIHRpbWVyID0gbmV3IERPTVRpbWVyKGNvbnRleHQsIGFjdGlvbiwgdGltZW91dCwg
c2luZ2xlU2hvdCk7CiAKKyAgICBjb250ZXh0LT5kaWRJbnN0YWxsQWN0aXZlRE9NT2JqZWN0KHRp
bWVyKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEluc3RhbGxUaW1lcihjb250
ZXh0LCB0aW1lci0+bV90aW1lb3V0SWQsIHRpbWVvdXQsIHNpbmdsZVNob3QpOwogCiAgICAgcmV0
dXJuIHRpbWVyLT5tX3RpbWVvdXRJZDsKQEAgLTExNCw3ICsxMTUsNyBAQCB2b2lkIERPTVRpbWVy
OjpmaXJlZCgpCiB7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICB0aW1lck5lc3RpbmdMZXZlbCA9IG1fbmVzdGluZ0xl
dmVsOwotICAgIAorICAgIEFTU0VSVCghY29udGV4dC0+YWN0aXZlRE9NT2JqZWN0c0FyZVN1c3Bl
bmRlZCgpKTsKICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKG1fc2hv
dWxkRm9yd2FyZFVzZXJHZXN0dXJlID8gRGVmaW5pdGVseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSA6
IFBvc3NpYmx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsKICAgICAKICAgICAvLyBPbmx5IHRoZSBm
aXJzdCBleGVjdXRpb24gb2YgYSBtdWx0aS1zaG90IHRpbWVyIHNob3VsZCBnZXQgYW4gYWZmaXJt
YXRpdmUgdXNlciBnZXN0dXJlIGluZGljYXRvci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5j
cHAKaW5kZXggZWEwNjYwMC4uMzFiMTExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudFNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5j
cHAKQEAgLTk5LDYgKzk5LDggQEAgUGFzc1JlZlB0cjxFdmVudFNvdXJjZT4gRXZlbnRTb3VyY2U6
OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb24KICAgICBzb3VyY2Ut
PnNldFBlbmRpbmdBY3Rpdml0eShzb3VyY2UuZ2V0KCkpOwogICAgIHNvdXJjZS0+Y29ubmVjdCgp
OwogCisgICAgY29udGV4dC0+ZGlkSW5zdGFsbEFjdGl2ZURPTU9iamVjdChzb3VyY2UuZ2V0KCkp
OworCiAgICAgcmV0dXJuIHNvdXJjZS5yZWxlYXNlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU3VzcGVuZGFibGVUaW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1N1c3BlbmRhYmxlVGltZXIuY3BwCmluZGV4IDJhNGQyZTUuLmRkM2U4OWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3VzcGVuZGFibGVUaW1lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9TdXNwZW5kYWJsZVRpbWVyLmNwcApAQCAtMzUsOCArMzUsOCBAQCBTdXNwZW5k
YWJsZVRpbWVyOjpTdXNwZW5kYWJsZVRpbWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQpCiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKICAgICAsIG1fbmV4dEZp
cmVJbnRlcnZhbCgwKQogICAgICwgbV9yZXBlYXRJbnRlcnZhbCgwKQotI2lmICFBU1NFUlRfRElT
QUJMRUQKICAgICAsIG1fYWN0aXZlKGZhbHNlKQorI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAs
IG1fc3VzcGVuZGVkKGZhbHNlKQogI2VuZGlmCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dl
YlNvY2tldC5jcHAKaW5kZXggNWUyMTNiOC4uOWY4NGUwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNv
Y2tldHMvV2ViU29ja2V0LmNwcApAQCAtMTY0LDYgKzE2NCwxMyBAQCBXZWJTb2NrZXQ6On5XZWJT
b2NrZXQoKQogICAgICAgICBtX2NoYW5uZWwtPmRpc2Nvbm5lY3QoKTsKIH0KIAorUGFzc1JlZlB0
cjxXZWJTb2NrZXQ+IFdlYlNvY2tldDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQpCit7CisgICAgV2ViU29ja2V0KiB3ZWJTb2NrZXQgPSBuZXcgV2ViU29ja2V0KGNvbnRl
eHQpOworICAgIGNvbnRleHQtPmRpZEluc3RhbGxBY3RpdmVET01PYmplY3Qod2ViU29ja2V0KTsK
KyAgICByZXR1cm4gYWRvcHRSZWYod2ViU29ja2V0KTsKK30KKwogdm9pZCBXZWJTb2NrZXQ6OmNv
bm5lY3QoY29uc3QgU3RyaW5nJiB1cmwsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFZlY3Rv
cjxTdHJpbmc+IHByb3RvY29sczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tl
dHMvV2ViU29ja2V0LmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCmlu
ZGV4IGI4NjBiNzUuLmNhZTU3ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tl
dHMvV2ViU29ja2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQu
aApAQCAtNTMsNyArNTMsNyBAQCBjbGFzcyBXZWJTb2NrZXQgOiBwdWJsaWMgUmVmQ291bnRlZDxX
ZWJTb2NrZXQ+LCBwdWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBBY3RpdgogcHVibGljOgogICAg
IHN0YXRpYyB2b2lkIHNldElzQXZhaWxhYmxlKGJvb2wpOwogICAgIHN0YXRpYyBib29sIGlzQXZh
aWxhYmxlKCk7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViU29ja2V0PiBjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlNvY2tl
dChjb250ZXh0KSk7IH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJTb2NrZXQ+IGNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAgICAgdmlydHVhbCB+V2ViU29ja2V0KCk7CiAKICAg
ICBlbnVtIFN0YXRlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVk
V29ya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmNwcAppbmRl
eCBmZjA3OTJjLi5kZjBiNDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1No
YXJlZFdvcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIu
Y3BwCkBAIC02NCw2ICs2NCw3IEBAIFBhc3NSZWZQdHI8U2hhcmVkV29ya2VyPiBTaGFyZWRXb3Jr
ZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjCiAKICAgICBTaGFy
ZWRXb3JrZXJSZXBvc2l0b3J5Ojpjb25uZWN0KHdvcmtlci5nZXQoKSwgcmVtb3RlUG9ydC5yZWxl
YXNlKCksIHNjcmlwdFVSTCwgbmFtZSwgZWMpOwogCisgICAgY29udGV4dC0+ZGlkSW5zdGFsbEFj
dGl2ZURPTU9iamVjdCh3b3JrZXIuZ2V0KCkpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkQ3JlYXRlV29ya2VyKGNvbnRleHQsIHdvcmtlci0+YXNJRCgpLCBzY3JpcHRVUkwuc3Ry
aW5nKCksIHRydWUpOwogCiAgICAgcmV0dXJuIHdvcmtlci5yZWxlYXNlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlci5jcHAKaW5kZXggYjMyMzZhNy4uNzc0NmNmMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyLmNwcApAQCAtNzMsNiArNzMsNyBAQCBQYXNzUmVmUHRyPFdvcmtlcj4gV29ya2VyOjpj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJgogI2Vu
ZGlmCiAgICAgd29ya2VyLT5tX3NjcmlwdExvYWRlci0+bG9hZEFzeW5jaHJvbm91c2x5KGNvbnRl
eHQsIHNjcmlwdFVSTCwgRGVueUNyb3NzT3JpZ2luUmVxdWVzdHMsIHdvcmtlci5nZXQoKSk7CiAK
KyAgICBjb250ZXh0LT5kaWRJbnN0YWxsQWN0aXZlRE9NT2JqZWN0KHdvcmtlci5nZXQoKSk7CiAg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVXb3JrZXIoY29udGV4dCwgd29y
a2VyLT5hc0lEKCksIHNjcmlwdFVSTC5zdHJpbmcoKSwgZmFsc2UpOwogCiAgICAgcmV0dXJuIHdv
cmtlci5yZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCA2
YmU1OGFhLi4wZjE5YTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAg
LTE1NCw3ICsxNTQsMTAgQEAgc3RhdGljIHZvaWQgbG9nQ29uc29sZUVycm9yKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbWVzc2EKIAogUGFzc1JlZlB0cjxY
TUxIdHRwUmVxdWVzdD4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbikK
IHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFhNTEh0dHBSZXF1ZXN0KGNvbnRleHQsIHNlY3Vy
aXR5T3JpZ2luKSk7CisgICAgWE1MSHR0cFJlcXVlc3QqIHhtbEh0dHBSZXF1ZXN0ID0gbmV3IFhN
TEh0dHBSZXF1ZXN0KGNvbnRleHQsIHNlY3VyaXR5T3JpZ2luKTsKKyAgICBjb250ZXh0LT5kaWRJ
bnN0YWxsQWN0aXZlRE9NT2JqZWN0KHhtbEh0dHBSZXF1ZXN0KTsKKworICAgIHJldHVybiBhZG9w
dFJlZih4bWxIdHRwUmVxdWVzdCk7CiB9CiAKIFhNTEh0dHBSZXF1ZXN0OjpYTUxIdHRwUmVxdWVz
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiBzZWN1cml0eU9yaWdpbikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124529</attachid>
            <date>2012-01-30 05:12:50 -0800</date>
            <delta_ts>2012-01-30 05:49:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Bug53733-patch6.diff</filename>
            <type>text/plain</type>
            <size>31855</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlNTg4MDkyLi5iYWJjMWY3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDEt
MzAgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+CisKKyAg
ICAgICAgVGVzdCB0aGF0IHRpbWVycyBkbyBub3QgZmlyZSBmcm9tIHN1YmZyYW1lcyBvZiBzdXNw
ZW5kZWQgZG9jdW1lbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTM3MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGZhc3QvZXZlbnRzL3Jlc291cmNlcy9zdXNwZW5kLXN1YmZyYW1lLTEuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvcmVzb3VyY2VzL3N1c3BlbmQtc3ViZnJhbWUt
Mi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9zdXNwZW5kLXRpbWVycy1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3N1c3BlbmQtdGltZXJzLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25z
LnR4dDoKKwogMjAxMi0wMS0yNyAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5Acmlt
LmNvbT4KIAogICAgICAgICA8ZmVJbWFnZT4gRE9NIG11dGF0aW9uIHByb2JsZW1zCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZXNvdXJjZXMvc3VzcGVuZC1zdWJmcmFtZS0x
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZXNvdXJjZXMvc3VzcGVuZC1zdWJmcmFt
ZS0xLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTFiYThlYQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Jlc291cmNlcy9zdXNwZW5k
LXN1YmZyYW1lLTEuaHRtbApAQCAtMCwwICsxLDE2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+CisgICAgPHNjcmlwdD4KKyAgICAgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAg
ICAgICAgIHdpbmRvdy50b3AuY29uc29sZS5sb2coJ1RpbWVvdXQgaW4gc3ViZnJhbWUtMSBjcmVh
dGVkJyk7CisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
ICAgIGFsZXJ0KCdUaW1lb3V0IGNyZWF0ZWQgaW4gc3ViZnJhbWUtMS5odG1sIGZpcmVkJyk7Cisg
ICAgICAgICAgICB9LCA1MCk7CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorSSBhbSBzdWJmcmFtZS0xLmh0bWwKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Jlc291cmNlcy9zdXNwZW5kLXN1YmZyYW1lLTIuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Jlc291cmNlcy9zdXNwZW5kLXN1YmZyYW1lLTIu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTNiMmVlCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcmVzb3VyY2VzL3N1c3BlbmQtc3Vi
ZnJhbWUtMi5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKwk8c2NyaXB0PgorCW9ucGFnZWhpZGUgPSBmdW5jdGlvbigpIHsKKwkgIHdpbmRvdy50
b3AuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2EtZnJhbWUnKS5jb250ZW50V2luZG93LnRlc3Qo
KTsKKwl9CisJPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KK0kgYW0gc3ViZnJhbWUtMi5odG1s
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9z
dXNwZW5kLXRpbWVycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zdXNw
ZW5kLXRpbWVycy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uODU5Nzc0ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3N1
c3BlbmQtdGltZXJzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBACitDT05TT0xFIE1FU1NB
R0U6IGxpbmUgNjogVGltZW91dCBpbiBzdWJmcmFtZS0xIGNyZWF0ZWQKK0NPTlNPTEUgTUVTU0FH
RTogbGluZSA1OiBMb2FkZWQgcGFnZWhpZGUtdGltZW91dC1nby1iYWNrLmh0bWwsIGdvaW5nIGJh
Y2sKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAzMTogUmVzdG9yZWQgcGFnZSBmcm9tIHBhZ2UgY2Fj
aGUuCitBTEVSVDogVGltZW91dCBjcmVhdGVkIGluIHN1YmZyYW1lLTEuaHRtbCBmaXJlZAorVGVz
dHMgdGhhdCBhbGwgSlMgdGltZXJzIGFyZSBzdXNwZW5kZWQgYWZ0ZXIgdGhlIHBhZ2VoaWRlIGV2
ZW50IGlzIGZpcmVkLCBzbyB0aGF0IHRpbWVycyBjcmVhdGVkIHdpdGhpbiBpdCB3aWxsIG5vdCBm
aXJlIHdoaWxlIHRoZSBkb2N1bWVudCBpcyBpbiB0aGUgcGFnZSBjYWNoZS4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zdXNw
ZW5kLXRpbWVycy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3VzcGVuZC10aW1lcnMu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjdlZTc0Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3VzcGVuZC10aW1lcnMuaHRtbApA
QCAtMCwwICsxLDUzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+
U3VzcGVuZCB0aW1lcnMgb24gbmF2aWdhdGU8L3RpdGxlPgorPHN0eWxlPgorICAgIGlmcmFtZSB7
CisgICAgICBkaXNwbGF5OiBibG9jazsKKyAgICAgIGJvcmRlcjogc29saWQgMXB4ICNjY2M7Cisg
ICAgICBtYXJnaW46IDFlbTsKKyAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgIGhlaWdodDogMjAw
cHg7CisgICAgfQorPC9zdHlsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisKKzxpZnJhbWUg
c3JjPSJyZXNvdXJjZXMvc3VzcGVuZC1zdWJmcmFtZS0xLmh0bWwiIGlkPSJhLWZyYW1lIj48L2lm
cmFtZT4gPGlmcmFtZSBzcmM9InJlc291cmNlcy9zdXNwZW5kLXN1YmZyYW1lLTIuaHRtbCIgaWQ9
ImItZnJhbWUiPjwvaWZyYW1lPgorCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Citk
ZXNjcmlwdGlvbignVGVzdHMgdGhhdCBhbGwgSlMgdGltZXJzIGFyZSBzdXNwZW5kZWQgYWZ0ZXIg
dGhlIHBhZ2VoaWRlIGV2ZW50IGlzIGZpcmVkLCBzbyB0aGF0IHRpbWVycyBjcmVhdGVkIHdpdGhp
biBpdCB3aWxsIG5vdCBmaXJlIHdoaWxlIHRoZSBkb2N1bWVudCBpcyBpbiB0aGUgcGFnZSBjYWNo
ZS4nKTsKKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoJ1dlYktpdFVzZXNQYWdlQ2FjaGVQcmVmZXJl
bmNlS2V5JywgMSk7CisKKworb25wYWdlc2hvdyA9IGZ1bmN0aW9uKGV2ZW50KQoreworICAgIGlm
IChldmVudC5wZXJzaXN0ZWQpIHsKKyAgICAgICAgY29uc29sZS5sb2coJ1Jlc3RvcmVkIHBhZ2Ug
ZnJvbSBwYWdlIGNhY2hlLicpOworICAgICAgICBpZiAoIXdpbmRvdy53YXNGaW5pc2hKU1Rlc3RD
YWxsZWQpIHsKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICB9LCAyMDApOworICAgICAgICB9Cisg
ICAgfQorfQorCitvbmxvYWQgPSBmdW5jdGlvbigpCit7CisgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsKKyAgICAgICAgbG9jYXRpb24uaHJlZiA9ICdyZXNvdXJjZXMvcGFnZWhpZGUtdGltZW91
dC1nby1iYWNrLmh0bWwnOworICAgIH0sIDEwKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7Cit2YXIganNUZXN0SXNBc3luYyA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVz
dF9leHBlY3RhdGlvbnMudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9l
eHBlY3RhdGlvbnMudHh0CmluZGV4IDQxZTY1NjcuLjIwZTRiM2UgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKQEAgLTIwNyw2
ICsyMDcsNyBAQCBXT05URklYIFNLSVAgOiBmYXN0L2RvbS9XaW5kb3cvdGltZXItcmVzdW1lLW9u
LW5hdmlnYXRpb24tYmFjay5odG1sID0gVElNRU9VVCBGQQogV09OVEZJWCBTS0lQIDogZmFzdC9l
dmVudHMvcGFnZWhpZGUtdGltZW91dC5odG1sID0gVElNRU9VVAogV09OVEZJWCBTS0lQIDogZmFz
dC9ldmVudHMvcGFnZXNob3ctcGFnZWhpZGUtb24tYmFjay1jYWNoZWQuaHRtbCA9IFRJTUVPVVQg
RkFJTAogV09OVEZJWCBTS0lQIDogZmFzdC9ldmVudHMvcGFnZXNob3ctcGFnZWhpZGUtb24tYmFj
ay1jYWNoZWQtd2l0aC1mcmFtZXMuaHRtbCA9IFRJTUVPVVQKK1dPTlRGSVggU0tJUCA6IGZhc3Qv
ZXZlbnRzL3N1c3BlbmQtdGltZXJzLmh0bWwgPSBUSU1FT1VUCiBXT05URklYIFNLSVAgOiBtZWRp
YS9yZXN0b3JlLWZyb20tcGFnZS1jYWNoZS5odG1sID0gVElNRU9VVAogV09OVEZJWCBTS0lQIDog
bG9hZGVyL2dvLWJhY2stdG8tZGlmZmVyZW50LXdpbmRvdy1zaXplLmh0bWwgPSBUSU1FT1VUIFRF
WFQKIFdPTlRGSVggU0tJUCA6IGZhc3QvbG9hZGVyL2NyYXNoLWNvcHlpbmctYmFja2ZvcndhcmRs
aXN0Lmh0bWwgPSBURVhUCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjRiYWYxOS4uYjVmNDk0MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDgzIEBACisyMDEyLTAxLTMwICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxh
bGxhbi5qZW5zZW5Abm9raWEuY29tPgorCisgICAgICAgIEVuc3VyZSB0aW1lcnMgYW5kIG90aGVy
IGFjdGl2ZSBET00gb2JqZWN0cyBkbyBub3QgZmlyZSBpbiBzdXNwZW5kZWQgZG9jdW1lbnRzLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTM3MzMKKwor
ICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0IG5vdyByZW1lbWJlcnMgaXQgaGFzIHN1c3Bl
bmRlZCBhY3RpdmUgRE9NIG9iamVjdHMKKyAgICAgICAgYW5kIHN1c3BlbmRzIGFsbCBuZXdseSBp
bnN0YWxsZWQgYWN0aXZlIERPTSBvYmplY3RzIGFzIHdlbGwuCisKKyAgICAgICAgQWxsIGNyZWF0
ZS1jYWxscyBhY3RpdmUgRE9NIG9iamVjdHMgbm93IGNhbGxzIGEgcG9zdC1jb25zdHJ1Y3RvciBt
ZXRob2Qgb24KKyAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCB0aGF0IHVwZGF0ZXMgdGhl
IHN1c3BlbmQgc3RhdGUuIEl0IGlzIHBvc3QgY29uc3RydWN0b3IKKyAgICAgICAgYmVjYXVzZSB0
aGUgc3VzcGVuZC9yZXN1bWUgZnVuY3Rpb25zIGFyZSB2aXJ0dWFsIGFuZCB0aHVzIGNhbiBub3Qg
YmUgY2FsbGVkCisgICAgICAgIGZyb20gY29uc3RydWN0b3JzLgorICAgICAgICBIVE1MIGVsZW1l
bnRzIHRoYXQgYXJlIGFsc28gYWN0aXZlIERPTSBvYmplY3RzIGNhbGxzIHRoZSBwb3N0LWNvbnN0
cnVjdG9yCisgICAgICAgIGZyb20gaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKS4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBmYXN0L2V2ZW50cy9z
dXNwZW5kLXRpbWVycy5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL2ludGVudHMvSW50ZW50UmVx
dWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlbnRSZXF1ZXN0OjpjcmVhdGUpOgorICAg
ICAgICAqIGJpbmRpbmdzL2dlbmVyaWMvQWN0aXZlRE9NQ2FsbGJhY2suY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QWN0aXZlRE9NQ2FsbGJhY2s6OkFjdGl2ZURPTUNhbGxiYWNrKToKKyAgICAgICAg
KiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6On5TY3JpcHRFeGVjdXRpb25Db250ZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNhblN1c3BlbmRBY3Rp
dmVET01PYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OnN1c3BlbmRBY3RpdmVET01PYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OnJlc3VtZUFjdGl2ZURPTU9iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZGlkSW5zdGFsbEFjdGl2ZURPTU9iamVjdCk6CisgICAg
ICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmFjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQpOgorICAg
ICAgICAqIGZpbGVhcGkvRE9NRmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01G
aWxlU3lzdGVtOjpjcmVhdGUpOgorICAgICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWxlUmVhZGVyOjpjcmVhdGUpOgorICAgICAgICAqIGZpbGVhcGkv
RmlsZVJlYWRlci5oOgorICAgICAgICAqIGZpbGVhcGkvRmlsZVdyaXRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGaWxlV3JpdGVyOjpjcmVhdGUpOgorICAgICAgICAqIGZpbGVhcGkvRmlsZVdy
aXRlci5oOgorICAgICAgICAqIGhpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkRnJhbWU6OkNhY2hlZEZyYW1lKToKKyAgICAgICAgKiBodG1sL0hUTUxNYXJx
dWVlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWFycXVlZUVsZW1lbnQ6Omlu
c2VydGVkSW50b0RvY3VtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxNYXJxdWVlRWxlbWVudC5o
OgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCk6CisgICAgICAgICogbWVk
aWFzdHJlYW0vUGVlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5l
Y3Rpb246OmNyZWF0ZSk6CisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIG5v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5v
dGlmaWNhdGlvbkNlbnRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvbkNlbnRlci5oOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2VudGVyOjpj
cmVhdGVIVE1MTm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBwYWdlL0RPTVRpbWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRPTVRpbWVyOjppbnN0YWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkRP
TVRpbWVyOjpmaXJlZCk6CisgICAgICAgICogcGFnZS9FdmVudFNvdXJjZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudFNvdXJjZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWdlL1N1c3BlbmRh
YmxlVGltZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VzcGVuZGFibGVUaW1lcjo6U3VzcGVu
ZGFibGVUaW1lcik6CisgICAgICAgICogc3RvcmFnZS9JREJEYXRhYmFzZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJREJEYXRhYmFzZTo6Y3JlYXRlKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQlJl
cXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6Y3JlYXRlKToKKyAgICAg
ICAgKiBzdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRy
YW5zYWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHdlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmNyZWF0ZSk6CisgICAgICAgICogd2Vi
c29ja2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpjcmVh
dGUpOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Lmg6CisgICAgICAgICogd29ya2Vy
cy9TaGFyZWRXb3JrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyOjpjcmVh
dGUpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlcjo6Y3JlYXRlKToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZSk6CisKIDIwMTItMDEtMjYgIFZzZXZv
bG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3Rv
cjogU2NyaXB0cyBwYW5lbDogZml4IGV2ZW50IGRpc3BhdGNoaW5nIGJldHdlZW4gRmlsZVNlbGVj
dG9yIGFuZCBFZGl0b3JDb250YWluZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ludGVudHMvSW50ZW50UmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
dGVudHMvSW50ZW50UmVxdWVzdC5jcHAKaW5kZXggMjk2ZjNkZC4uMGJjODllZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0ludGVudFJlcXVlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnRSZXF1ZXN0LmNwcApAQCAtNDEs
NyArNDEsOSBAQCBQYXNzUmVmUHRyPEludGVudFJlcXVlc3Q+IEludGVudFJlcXVlc3Q6OmNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxJbnRlbnRSZXN1bHRDYWxsYmFj
az4gc3VjY2Vzc0NhbGxiYWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUGFzc1JlZlB0cjxJbnRlbnRSZXN1bHRDYWxsYmFjaz4gZXJyb3JDYWxsYmFj
aykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEludGVudFJlcXVlc3QoY29udGV4dCwgaW50
ZW50LCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKTsKKyAgICBJbnRlbnRSZXF1ZXN0
KiBpbnRlbnRSZXF1ZXN0ID0gbmV3IEludGVudFJlcXVlc3QoY29udGV4dCwgaW50ZW50LCBzdWNj
ZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOworICAgIGNvbnRleHQtPmRpZEluc3RhbGxBY3Rp
dmVET01PYmplY3QoaW50ZW50UmVxdWVzdCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKGludGVudFJl
cXVlc3QpOwogfQogCiBJbnRlbnRSZXF1ZXN0OjpJbnRlbnRSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9n
ZW5lcmljL0FjdGl2ZURPTUNhbGxiYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dl
bmVyaWMvQWN0aXZlRE9NQ2FsbGJhY2suY3BwCmluZGV4IGZmMDJhNDIuLmJkNDdjMTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvQWN0aXZlRE9NQ2FsbGJhY2su
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvQWN0aXZlRE9NQ2FsbGJh
Y2suY3BwCkBAIC0xMjIsNiArMTIyLDcgQEAgc3RhdGljIHZvaWQgZGVzdHJveU9uQ29udGV4dFRo
cmVhZChQYXNzT3duUHRyPEFjdGl2ZURPTU9iamVjdENhbGxiYWNrSW1wbD4gaW1wbCkKIEFjdGl2
ZURPTUNhbGxiYWNrOjpBY3RpdmVET01DYWxsYmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0KQogICAgIDogbV9pbXBsKGFkb3B0UHRyKG5ldyBBY3RpdmVET01PYmplY3RDYWxsYmFj
a0ltcGwoY29udGV4dCkpKQogeworICAgIGNvbnRleHQtPmRpZEluc3RhbGxBY3RpdmVET01PYmpl
Y3QobV9pbXBsLmdldCgpKTsKIH0KIAogQWN0aXZlRE9NQ2FsbGJhY2s6On5BY3RpdmVET01DYWxs
YmFjaygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAK
aW5kZXggZWYwNmMyOS4uZTk1ODkzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0LmNwcApAQCAtOTIsNiArOTIsNyBAQCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkKICAgICA6IG1faXRlcmF0aW5nQWN0aXZlRE9N
T2JqZWN0cyhmYWxzZSkKICAgICAsIG1faW5EZXN0cnVjdG9yKGZhbHNlKQogICAgICwgbV9pbkRp
c3BhdGNoRXJyb3JFdmVudChmYWxzZSkKKyAgICAsIG1fYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3Bl
bmRlZChmYWxzZSkKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogICAgICwgbV9oYXNPcGVuRGF0
YWJhc2VzKGZhbHNlKQogI2VuZGlmCkBAIC0xMDEsNyArMTAyLDYgQEAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0
Ojp+U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpCiB7CiAgICAgbV9pbkRlc3RydWN0b3IgPSB0cnVl
OwotCiAgICAgZm9yIChIYXNoU2V0PENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKj46Oml0ZXJh
dG9yIGl0ZXIgPSBtX2Rlc3RydWN0aW9uT2JzZXJ2ZXJzLmJlZ2luKCk7IGl0ZXIgIT0gbV9kZXN0
cnVjdGlvbk9ic2VydmVycy5lbmQoKTsgaXRlciA9IG1fZGVzdHJ1Y3Rpb25PYnNlcnZlcnMuYmVn
aW4oKSkgewogICAgICAgICBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciogb2JzZXJ2ZXIgPSAq
aXRlcjsKICAgICAgICAgbV9kZXN0cnVjdGlvbk9ic2VydmVycy5yZW1vdmUob2JzZXJ2ZXIpOwpA
QCAtMjEwLDcgKzIxMCw3IEBAIGJvb2wgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6Y2FuU3VzcGVu
ZEFjdGl2ZURPTU9iamVjdHMoKQogICAgICAgICAgICAgbV9pdGVyYXRpbmdBY3RpdmVET01PYmpl
Y3RzID0gZmFsc2U7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KLSAgICB9
ICAgIAorICAgIH0KICAgICBtX2l0ZXJhdGluZ0FjdGl2ZURPTU9iamVjdHMgPSBmYWxzZTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTIyNSwxMCArMjI1LDEzIEBAIHZvaWQgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6c3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoQWN0aXZlRE9NT2JqZWN0OjpSZWFz
b25Gb3JTCiAgICAgICAgIGl0ZXItPmZpcnN0LT5zdXNwZW5kKHdoeSk7CiAgICAgfQogICAgIG1f
aXRlcmF0aW5nQWN0aXZlRE9NT2JqZWN0cyA9IGZhbHNlOworICAgIG1fYWN0aXZlRE9NT2JqZWN0
c0FyZVN1c3BlbmRlZCA9IHRydWU7CisgICAgbV9zdXNwZW5kUmVhc29uID0gd2h5OwogfQogCiB2
b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnJlc3VtZUFjdGl2ZURPTU9iamVjdHMoKQogewor
ICAgIG1fYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCA9IGZhbHNlOwogICAgIC8vIE5vIHBy
b3RlY3Rpb24gYWdhaW5zdCBtX2FjdGl2ZURPTU9iamVjdHMgY2hhbmdpbmcgZHVyaW5nIGl0ZXJh
dGlvbjogcmVzdW1lKCkgc2hvdWxkbid0IGV4ZWN1dGUgYXJiaXRyYXJ5IEpTLgogICAgIG1faXRl
cmF0aW5nQWN0aXZlRE9NT2JqZWN0cyA9IHRydWU7CiAgICAgSGFzaE1hcDxBY3RpdmVET01PYmpl
Y3QqLCB2b2lkKj46Oml0ZXJhdG9yIGFjdGl2ZU9iamVjdHNFbmQgPSBtX2FjdGl2ZURPTU9iamVj
dHMuZW5kKCk7CkBAIC0yNTQsNiArMjU3LDE0IEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6c3RvcEFjdGl2ZURPTU9iamVjdHMoKQogICAgIGNsb3NlTWVzc2FnZVBvcnRzKCk7CiB9CiAK
K3ZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZGlkSW5zdGFsbEFjdGl2ZURPTU9iamVjdChB
Y3RpdmVET01PYmplY3QqIG9iamVjdCkKK3sKKyAgICBBU1NFUlQobV9hY3RpdmVET01PYmplY3Rz
LmNvbnRhaW5zKG9iamVjdCkpOworICAgIC8vIEVuc3VyZSBhbGwgQWN0aXZlRE9NT2JqZWN0cyBh
cmUgc3VzcGVuZGVkIGFsc28gbmV3bHkgY3JlYXRlZCBvbmVzLgorICAgIGlmIChtX2FjdGl2ZURP
TU9iamVjdHNBcmVTdXNwZW5kZWQpCisgICAgICAgIG9iamVjdC0+c3VzcGVuZChtX3N1c3BlbmRS
ZWFzb24pOworfQorCiB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmRpZENyZWF0ZUFjdGl2
ZURPTU9iamVjdChBY3RpdmVET01PYmplY3QqIG9iamVjdCwgdm9pZCogdXBjYXN0UG9pbnRlcikK
IHsKICAgICBBU1NFUlQob2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oCmluZGV4IGFlZDM0MTEuLmQwMDAwYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtMTAzLDkgKzEwMywxNSBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHJlc3VtZUFjdGl2ZURPTU9iamVjdHMoKTsKICAgICB2aXJ0dWFs
IHZvaWQgc3RvcEFjdGl2ZURPTU9iamVjdHMoKTsKIAorICAgIGJvb2wgYWN0aXZlRE9NT2JqZWN0
c0FyZVN1c3BlbmRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3Bl
bmRlZDsgfQorCisgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVj
dG9ycyBvZiBBY3RpdmVET01PYmplY3QKICAgICB2b2lkIGRpZENyZWF0ZUFjdGl2ZURPTU9iamVj
dChBY3RpdmVET01PYmplY3QqLCB2b2lkKiB1cGNhc3RQb2ludGVyKTsKICAgICB2b2lkIHdpbGxE
ZXN0cm95QWN0aXZlRE9NT2JqZWN0KEFjdGl2ZURPTU9iamVjdCopOwogCisgICAgLy8gQ2FsbGVk
IGFmdGVyIHRoZSBjb25zdHJ1Y3Rpb24gb2YgYW4gQWN0aXZlRE9NT2JqZWN0CisgICAgdm9pZCBk
aWRJbnN0YWxsQWN0aXZlRE9NT2JqZWN0KEFjdGl2ZURPTU9iamVjdCopOworCiAgICAgdHlwZWRl
ZiBjb25zdCBIYXNoTWFwPEFjdGl2ZURPTU9iamVjdCosIHZvaWQqPiBBY3RpdmVET01PYmplY3Rz
TWFwOwogICAgIEFjdGl2ZURPTU9iamVjdHNNYXAmIGFjdGl2ZURPTU9iamVjdHMoKSBjb25zdCB7
IHJldHVybiBtX2FjdGl2ZURPTU9iamVjdHM7IH0KIApAQCAtMjA2LDYgKzIxMiw5IEBAIHByaXZh
dGU6CiAgICAgY2xhc3MgUGVuZGluZ0V4Y2VwdGlvbjsKICAgICBPd25QdHI8VmVjdG9yPE93blB0
cjxQZW5kaW5nRXhjZXB0aW9uPiA+ID4gbV9wZW5kaW5nRXhjZXB0aW9uczsKIAorICAgIGJvb2wg
bV9hY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkOworICAgIEFjdGl2ZURPTU9iamVjdDo6UmVh
c29uRm9yU3VzcGVuc2lvbiBtX3N1c3BlbmRSZWFzb247CisKICNpZiBFTkFCTEUoU1FMX0RBVEFC
QVNFKQogICAgIFJlZlB0cjxEYXRhYmFzZVRocmVhZD4gbV9kYXRhYmFzZVRocmVhZDsKICAgICBi
b29sIG1faGFzT3BlbkRhdGFiYXNlczsgLy8gVGhpcyBuZXZlciBjaGFuZ2VzIGJhY2sgdG8gZmFs
c2UsIGV2ZW4gYWZ0ZXIgdGhlIGRhdGFiYXNlIHRocmVhZCBpcyBjbG9zZWQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNwcAppbmRleCBhYzM4NjkwLi5jOGVkNDJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbS5jcHAKQEAgLTU2LDYgKzU2LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBET01GaWxlU3lz
dGVtOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gYXN5bmNGaWxlU3lzdGVtKQogewog
ICAgIFJlZlB0cjxET01GaWxlU3lzdGVtPiBmaWxlU3lzdGVtKGFkb3B0UmVmKG5ldyBET01GaWxl
U3lzdGVtKGNvbnRleHQsIG5hbWUsIGFzeW5jRmlsZVN5c3RlbSkpKTsKKyAgICBjb250ZXh0LT5k
aWRJbnN0YWxsQWN0aXZlRE9NT2JqZWN0KGZpbGVTeXN0ZW0uZ2V0KCkpOwogICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkT3BlbkZpbGVTeXN0ZW0oZmlsZVN5c3RlbS5nZXQoKSk7CiAg
ICAgcmV0dXJuIGZpbGVTeXN0ZW07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0ZpbGVSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNw
cAppbmRleCAyOWM1OTg0Li45ZTk2YzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0ZpbGVSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRl
ci5jcHAKQEAgLTQ4LDYgKzQ4LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNv
bnN0IGRvdWJsZSBwcm9ncmVzc05vdGlmaWNhdGlvbkludGVydmFsTVMgPSA1MDsKIAorUGFzc1Jl
ZlB0cjxGaWxlUmVhZGVyPiBGaWxlUmVhZGVyOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCkKK3sKKyAgICBGaWxlUmVhZGVyKiBmaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFk
ZXIoY29udGV4dCk7CisgICAgY29udGV4dC0+ZGlkSW5zdGFsbEFjdGl2ZURPTU9iamVjdChmaWxl
UmVhZGVyKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoZmlsZVJlYWRlcik7Cit9CisKIEZpbGVSZWFk
ZXI6OkZpbGVSZWFkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICA6IEFj
dGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQogICAgICwgbV9zdGF0ZShFTVBUWSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlUmVhZGVyLmgKaW5kZXggODA0ZGQyOS4uZWNkZDQ4NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlUmVhZGVyLmgKQEAgLTUxLDEwICs1MSw3IEBAIHR5cGVkZWYgaW50IEV4
Y2VwdGlvbkNvZGU7CiAKIGNsYXNzIEZpbGVSZWFkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxGaWxl
UmVhZGVyPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJs
aWMgRmlsZVJlYWRlckxvYWRlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8RmlsZVJlYWRlcj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCi0g
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZpbGVSZWFkZXIoY29udGV4dCkpOwot
ICAgIH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxGaWxlUmVhZGVyPiBjcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCopOwogCiAgICAgdmlydHVhbCB+RmlsZVJlYWRlcigpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVXcml0ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlV3JpdGVyLmNwcAppbmRleCAyYjI1Y2ZhLi40MzZlOGY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVXcml0ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZVdyaXRlci5jcHAKQEAgLTQ1LDYgKzQ1LDEzIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IGludCBrTWF4UmVjdXJzaW9uRGVwdGggPSAzOwog
CitQYXNzUmVmUHRyPEZpbGVXcml0ZXI+IEZpbGVXcml0ZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0KQoreworICAgIEZpbGVXcml0ZXIqIGZpbGVXcml0ZXIgPSBuZXcg
RmlsZVdyaXRlcihjb250ZXh0KTsKKyAgICBjb250ZXh0LT5kaWRJbnN0YWxsQWN0aXZlRE9NT2Jq
ZWN0KGZpbGVXcml0ZXIpOworICAgIHJldHVybiBhZG9wdFJlZihmaWxlV3JpdGVyKTsKK30KKwog
RmlsZVdyaXRlcjo6RmlsZVdyaXRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQog
ICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCiAgICAgLCBtX3JlYWR5U3RhdGUo
SU5JVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVdyaXRlci5oIGIv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlV3JpdGVyLmgKaW5kZXggMmI1OTdhMS4uOTQ2MTM1
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlV3JpdGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlV3JpdGVyLmgKQEAgLTQ4LDEwICs0OCw3IEBAIGNs
YXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKIGNsYXNzIEZpbGVXcml0ZXIgOiBwdWJsaWMg
RmlsZVdyaXRlckJhc2UsIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBFdmVudFRhcmdl
dCwgcHVibGljIEFzeW5jRmlsZVdyaXRlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8RmlsZVdyaXRlcj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZpbGVXcml0ZXIoY29udGV4
dCkpOwotICAgIH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxGaWxlV3JpdGVyPiBjcmVhdGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCopOwogCiAgICAgZW51bSBSZWFkeVN0YXRlIHsKICAgICAgICAg
SU5JVCA9IDAsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1l
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwCmluZGV4IDYwZmFi
MDQuLjliMGQyZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJh
bWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwCkBAIC0x
NjgsNyArMTY4LDYgQEAgQ2FjaGVkRnJhbWU6OkNhY2hlZEZyYW1lKEZyYW1lKiBmcmFtZSkKICAg
ICAvLyBidXQgYWZ0ZXIgd2UndmUgZmlyZWQgdGhlIHBhZ2VoaWRlIGV2ZW50LCBpbiBjYXNlIHRo
YXQgY3JlYXRlcyBtb3JlIG9iamVjdHMuCiAgICAgLy8gU3VzcGVuZGluZyBtdXN0IGFsc28gaGFw
cGVuIGFmdGVyIHdlJ3ZlIHJlY3Vyc2VkIG92ZXIgY2hpbGQgZnJhbWVzLCBpbiBjYXNlCiAgICAg
Ly8gdGhvc2UgY3JlYXRlIG1vcmUgb2JqZWN0cy4KLSAgICAvLyBGSVhNRTogSXQncyBzdGlsbCBw
b3NzaWJsZSB0byBoYXZlIG9iamVjdHMgY3JlYXRlZCBhZnRlciBzdXNwZW5kaW5nIGluIHNvbWUg
Y2FzZXMsIHNlZSBodHRwOi8vd2Via2l0Lm9yZy9iLzUzNzMzIGZvciBtb3JlIGRldGFpbHMuCiAg
ICAgbV9kb2N1bWVudC0+ZG9jdW1lbnRXaWxsU3VzcGVuZEZvclBhZ2VDYWNoZSgpOwogICAgIG1f
ZG9jdW1lbnQtPnN1c3BlbmRTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXJDYWxsYmFja3MoKTsK
ICAgICBtX2RvY3VtZW50LT5zdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyhBY3RpdmVET01PYmplY3Q6
OkRvY3VtZW50V2lsbEJlY29tZUluYWN0aXZlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1h
cnF1ZWVFbGVtZW50LmNwcAppbmRleCAwNTNmZmE4Li42MmU1ODM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuY3BwCkBAIC0xNzgsNiArMTc4LDEyIEBAIGJvb2wg
SFRNTE1hcnF1ZWVFbGVtZW50OjpjYW5TdXNwZW5kKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAordm9pZCBIVE1MTWFycXVlZUVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCkKK3sK
KyAgICBkb2N1bWVudCgpLT5kaWRJbnN0YWxsQWN0aXZlRE9NT2JqZWN0KHRoaXMpOworICAgIEhU
TUxFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpOworfQorCiB2b2lkIEhUTUxNYXJxdWVl
RWxlbWVudDo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKQogewogICAgIGlmIChSZW5kZXJN
YXJxdWVlKiBtYXJxdWVlUmVuZGVyZXIgPSByZW5kZXJNYXJxdWVlKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuaAppbmRleCA1ODZhYTZmLi5mNDk5YmViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmgKQEAgLTU2LDYgKzU2LDggQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgbWFwVG9FbnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiwg
TWFwcGVkQXR0cmlidXRlRW50cnkmKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBw
ZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAKKyAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRv
RG9jdW1lbnQoKTsKKwogICAgIC8vIEFjdGl2ZURPTU9iamVjdAogICAgIHZpcnR1YWwgYm9vbCBj
YW5TdXNwZW5kKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHN1c3BlbmQoUmVhc29uRm9yU3Vz
cGVuc2lvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBj
YzVjMjY0Li5jZGU5MmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAKQEAgLTQ2Niw2ICs0NjYsNyBAQCBSZW5kZXJPYmplY3QqIEhUTUxNZWRpYUVsZW1lbnQ6OmNy
ZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQogdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpCiB7CiAgICAgTE9HKE1lZGlhLCAi
SFRNTE1lZGlhRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQiKTsKKyAgICBkb2N1bWVudCgp
LT5kaWRJbnN0YWxsQWN0aXZlRE9NT2JqZWN0KHRoaXMpOwogICAgIEhUTUxFbGVtZW50OjppbnNl
cnRlZEludG9Eb2N1bWVudCgpOwogICAgIGlmICghZ2V0QXR0cmlidXRlKHNyY0F0dHIpLmlzRW1w
dHkoKSAmJiBtX25ldHdvcmtTdGF0ZSA9PSBORVRXT1JLX0VNUFRZKQogICAgICAgICBzY2hlZHVs
ZUxvYWQoTWVkaWFSZXNvdXJjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0
cmVhbS9QZWVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9QZWVy
Q29ubmVjdGlvbi5jcHAKaW5kZXggZTU0NDQ3YS4uNDNkOTgxNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uLmNwcApAQCAtNDEsNiArNDEsNyBAQCBQYXNz
UmVmUHRyPFBlZXJDb25uZWN0aW9uPiBQZWVyQ29ubmVjdGlvbjo6Y3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleAogICAgIFJlZlB0cjxQZWVyQ29ubmVjdGlvbj4gY29ubmVjdGlv
biA9IGFkb3B0UmVmKG5ldyBQZWVyQ29ubmVjdGlvbihjb250ZXh0LCBzZXJ2ZXJDb25maWd1cmF0
aW9uLCBzaWduYWxpbmdDYWxsYmFjaykpOwogICAgIGNvbm5lY3Rpb24tPnNldFBlbmRpbmdBY3Rp
dml0eShjb25uZWN0aW9uLmdldCgpKTsKICAgICBjb25uZWN0aW9uLT5zY2hlZHVsZUluaXRpYWxO
ZWdvdGlhdGlvbigpOworICAgIGNvbnRleHQtPmRpZEluc3RhbGxBY3RpdmVET01PYmplY3QoY29u
bmVjdGlvbi5nZXQoKSk7CiAKICAgICByZXR1cm4gY29ubmVjdGlvbi5yZWxlYXNlKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKaW5kZXggZDc5
OTFmMi4uZDgxZmJlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uLmNwcApAQCAtMTAyLDEyICsxMDIsMTYgQEAgTm90aWZpY2F0aW9uOjp+Tm90aWZpY2F0
aW9uKCkKIAogUGFzc1JlZlB0cjxOb3RpZmljYXRpb24+IE5vdGlmaWNhdGlvbjo6Y3JlYXRlKGNv
bnN0IEtVUkwmIHVybCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9u
Q29kZSYgZWMsIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBwcm92aWRlcikgCiB7IAot
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgTm90aWZpY2F0aW9uKHVybCwgY29udGV4dCwgZWMsIHBy
b3ZpZGVyKSk7CisgICAgTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24gPSBuZXcgTm90aWZpY2F0
aW9uKHVybCwgY29udGV4dCwgZWMsIHByb3ZpZGVyKTsKKyAgICBjb250ZXh0LT5kaWRJbnN0YWxs
QWN0aXZlRE9NT2JqZWN0KG5vdGlmaWNhdGlvbik7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5vdGlm
aWNhdGlvbik7CiB9CiAKIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uPiBOb3RpZmljYXRpb246OmNy
ZWF0ZShjb25zdCBOb3RpZmljYXRpb25Db250ZW50cyYgY29udGVudHMsIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjLCBQYXNzUmVmUHRyPE5vdGlmaWNh
dGlvbkNlbnRlcj4gcHJvdmlkZXIpIAogeyAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IE5vdGlm
aWNhdGlvbihjb250ZW50cywgY29udGV4dCwgZWMsIHByb3ZpZGVyKSk7CisgICAgTm90aWZpY2F0
aW9uKiBub3RpZmljYXRpb24gPSBuZXcgTm90aWZpY2F0aW9uKGNvbnRlbnRzLCBjb250ZXh0LCBl
YywgcHJvdmlkZXIpOworICAgIGNvbnRleHQtPmRpZEluc3RhbGxBY3RpdmVET01PYmplY3Qobm90
aWZpY2F0aW9uKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobm90aWZpY2F0aW9uKTsKIH0KIAogY29u
c3QgQXRvbWljU3RyaW5nJiBOb3RpZmljYXRpb246OmludGVyZmFjZU5hbWUoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuY3Bw
CmluZGV4IDQ1ZGMzNDUuLjVjMjI3YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9ub3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5jcHAKQEAgLTQxLDYgKzQxLDEzIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IE5vdGlm
aWNhdGlvbkNlbnRlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIE5v
dGlmaWNhdGlvblByZXNlbnRlciogcHJlc2VudGVyKQoreworICAgIE5vdGlmaWNhdGlvbkNlbnRl
ciogbm90aWZpY2F0aW9uQ2VudGVyID0gbmV3IE5vdGlmaWNhdGlvbkNlbnRlcihjb250ZXh0LCBw
cmVzZW50ZXIpOworICAgIGNvbnRleHQtPmRpZEluc3RhbGxBY3RpdmVET01PYmplY3Qobm90aWZp
Y2F0aW9uQ2VudGVyKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobm90aWZpY2F0aW9uQ2VudGVyKTsK
K30KKwogTm90aWZpY2F0aW9uQ2VudGVyOjpOb3RpZmljYXRpb25DZW50ZXIoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgTm90aWZpY2F0aW9uUHJlc2VudGVyKiBwcmVzZW50ZXIpCiAg
ICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKICAgICAsIG1fbm90aWZpY2F0aW9u
UHJlc2VudGVyKHByZXNlbnRlcikge30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbkNlbnRlci5oCmluZGV4IDIzYjMxZTAuLjQwMmNjYmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaApAQCAt
NTAsNyArNTAsNyBAQCBjbGFzcyBWb2lkQ2FsbGJhY2s7CiAKIGNsYXNzIE5vdGlmaWNhdGlvbkNl
bnRlciA6IHB1YmxpYyBSZWZDb3VudGVkPE5vdGlmaWNhdGlvbkNlbnRlcj4sIHB1YmxpYyBBY3Rp
dmVET01PYmplY3QgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5vdGlmaWNhdGlv
bkNlbnRlcj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIE5vdGlmaWNh
dGlvblByZXNlbnRlciogcHJlc2VudGVyKSB7IHJldHVybiBhZG9wdFJlZihuZXcgTm90aWZpY2F0
aW9uQ2VudGVyKGNvbnRleHQsIHByZXNlbnRlcikpOyB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8
Tm90aWZpY2F0aW9uQ2VudGVyPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE5vdGlm
aWNhdGlvblByZXNlbnRlciopOwogCiAgICAgUGFzc1JlZlB0cjxOb3RpZmljYXRpb24+IGNyZWF0
ZUhUTUxOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBVUkksIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9ET01UaW1lci5jcHAKaW5kZXggMGE5NGU3ZWYuLjRmMGJkOTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwCkBAIC05Miw2ICs5Miw3IEBAIGludCBET01UaW1lcjo6
aW5zdGFsbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzT3duUHRyPFNjaGVk
dWxlZEFjdGlvCiAgICAgLy8gb3IgaWYgaXQgaXMgYSBvbmUtdGltZSB0aW1lciBhbmQgaXQgaGFz
IGZpcmVkIChET01UaW1lcjo6ZmlyZWQpLgogICAgIERPTVRpbWVyKiB0aW1lciA9IG5ldyBET01U
aW1lcihjb250ZXh0LCBhY3Rpb24sIHRpbWVvdXQsIHNpbmdsZVNob3QpOwogCisgICAgY29udGV4
dC0+ZGlkSW5zdGFsbEFjdGl2ZURPTU9iamVjdCh0aW1lcik7CiAgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRJbnN0YWxsVGltZXIoY29udGV4dCwgdGltZXItPm1fdGltZW91dElkLCB0
aW1lb3V0LCBzaW5nbGVTaG90KTsKIAogICAgIHJldHVybiB0aW1lci0+bV90aW1lb3V0SWQ7CkBA
IC0xMTQsNyArMTE1LDcgQEAgdm9pZCBET01UaW1lcjo6ZmlyZWQoKQogewogICAgIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAg
dGltZXJOZXN0aW5nTGV2ZWwgPSBtX25lc3RpbmdMZXZlbDsKLSAgICAKKyAgICBBU1NFUlQoIWNv
bnRleHQtPmFjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQoKSk7CiAgICAgVXNlckdlc3R1cmVJ
bmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihtX3Nob3VsZEZvcndhcmRVc2VyR2VzdHVyZSA/IERl
ZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUgOiBQb3NzaWJseVByb2Nlc3NpbmdVc2VyR2Vz
dHVyZSk7CiAgICAgCiAgICAgLy8gT25seSB0aGUgZmlyc3QgZXhlY3V0aW9uIG9mIGEgbXVsdGkt
c2hvdCB0aW1lciBzaG91bGQgZ2V0IGFuIGFmZmlybWF0aXZlIHVzZXIgZ2VzdHVyZSBpbmRpY2F0
b3IuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCmluZGV4IGVhMDY2MDAuLjMxYjExMWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCkBAIC05OSw2ICs5OSw4IEBAIFBhc3NS
ZWZQdHI8RXZlbnRTb3VyY2U+IEV2ZW50U291cmNlOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgY29uCiAgICAgc291cmNlLT5zZXRQZW5kaW5nQWN0aXZpdHkoc291cmNl
LmdldCgpKTsKICAgICBzb3VyY2UtPmNvbm5lY3QoKTsKIAorICAgIGNvbnRleHQtPmRpZEluc3Rh
bGxBY3RpdmVET01PYmplY3Qoc291cmNlLmdldCgpKTsKKwogICAgIHJldHVybiBzb3VyY2UucmVs
ZWFzZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1c3BlbmRhYmxl
VGltZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TdXNwZW5kYWJsZVRpbWVyLmNwcAppbmRl
eCAyYTRkMmU1Li5kZDNlODlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1c3Bl
bmRhYmxlVGltZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3VzcGVuZGFibGVUaW1l
ci5jcHAKQEAgLTM1LDggKzM1LDggQEAgU3VzcGVuZGFibGVUaW1lcjo6U3VzcGVuZGFibGVUaW1l
cihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIDogQWN0aXZlRE9NT2JqZWN0
KGNvbnRleHQsIHRoaXMpCiAgICAgLCBtX25leHRGaXJlSW50ZXJ2YWwoMCkKICAgICAsIG1fcmVw
ZWF0SW50ZXJ2YWwoMCkKLSNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgLCBtX2FjdGl2ZShmYWxz
ZSkKKyNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgLCBtX3N1c3BlbmRlZChmYWxzZSkKICNlbmRp
ZgogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmNwcAppbmRleCBjNGI3M2NlLi4y
ZDkxZjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmNwcApAQCAtNTAsNyAr
NTAsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NSZWZQdHI8SURCRGF0YWJhc2U+IElE
QkRhdGFiYXNlOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1Jl
ZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGRhdGFiYXNlKQogewotICAgIHJldHVy
biBhZG9wdFJlZihuZXcgSURCRGF0YWJhc2UoY29udGV4dCwgZGF0YWJhc2UpKTsKKyAgICBJREJE
YXRhYmFzZSogZGF0YWJhc2UgPSBuZXcgSURCRGF0YWJhc2UoY29udGV4dCwgZGF0YWJhc2UpOwor
ICAgIGNvbnRleHQtPmRpZEluc3RhbGxBY3RpdmVET01PYmplY3QoZGF0YWJhc2UpOworICAgIHJl
dHVybiBhZG9wdFJlZihkYXRhYmFzZSk7CiB9CiAKIElEQkRhdGFiYXNlOjpJREJEYXRhYmFzZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFj
a2VuZEludGVyZmFjZT4gYmFja2VuZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuY3Bw
CmluZGV4IDk2OGZiNTAuLmIxY2FjNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0
LmNwcApAQCAtNDUsNyArNDUsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NSZWZQdHI8
SURCUmVxdWVzdD4gSURCUmVxdWVzdDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKiB0cmFuc2Fj
dGlvbikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQlJlcXVlc3QoY29udGV4dCwgc291
cmNlLCB0cmFuc2FjdGlvbikpOworICAgIElEQlJlcXVlc3QqIHJlcXVlc3QgPSBuZXcgSURCUmVx
dWVzdChjb250ZXh0LCBzb3VyY2UsIHRyYW5zYWN0aW9uKTsKKyAgICBjb250ZXh0LT5kaWRJbnN0
YWxsQWN0aXZlRE9NT2JqZWN0KHJlcXVlc3QpOworICAgIHJldHVybiBhZG9wdFJlZihyZXF1ZXN0
KTsKIH0KIAogSURCUmVxdWVzdDo6SURCUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBJREJUcmFuc2FjdGlvbiogdHJhbnNh
Y3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb24uY3BwCmluZGV4IDE0
MGRmMDUuLmE0ZTE2ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJh
bnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb24u
Y3BwCkBAIC00Miw3ICs0Miw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGFzc1JlZlB0cjxJ
REJUcmFuc2FjdGlvbj4gSURCVHJhbnNhY3Rpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4g
YmFja2VuZCwgSURCRGF0YWJhc2UqIGRiKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURC
VHJhbnNhY3Rpb24oY29udGV4dCwgYmFja2VuZCwgZGIpKTsKKyAgICBJREJUcmFuc2FjdGlvbiog
dHJhbnNhY3Rpb24gPSBuZXcgSURCVHJhbnNhY3Rpb24oY29udGV4dCwgYmFja2VuZCwgZGIpOwor
ICAgIGNvbnRleHQtPmRpZEluc3RhbGxBY3RpdmVET01PYmplY3QodHJhbnNhY3Rpb24pOworICAg
IHJldHVybiBhZG9wdFJlZih0cmFuc2FjdGlvbik7CiB9CiAKIElEQlRyYW5zYWN0aW9uOjpJREJU
cmFuc2FjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgSURCRGF0YWJhc2UqIGRiKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5kZXggMGMxNjY0Zi4uMjNi
MGM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCkBAIC0xMDIs
OCArMTAyLDEwIEBAIFBhc3NSZWZQdHI8QXVkaW9Db250ZXh0PiBBdWRpb0NvbnRleHQ6OmNyZWF0
ZShEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBp
ZiAoc19oYXJkd2FyZUNvbnRleHRDb3VudCA+PSBNYXhIYXJkd2FyZUNvbnRleHRzKQogICAgICAg
ICByZXR1cm4gMDsKLSAgICAgICAgCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBdWRpb0NvbnRl
eHQoZG9jdW1lbnQpKTsKKworICAgIEF1ZGlvQ29udGV4dCogYXVkaW9Db250ZXh0ID0gbmV3IEF1
ZGlvQ29udGV4dChkb2N1bWVudCk7CisgICAgZG9jdW1lbnQtPmRpZEluc3RhbGxBY3RpdmVET01P
YmplY1QoYXVkaW9Db250ZXh0KTsKKyAgICByZXR1cm4gYWRvcHRSZWYoYXVkaW9Db250ZXh0KTsK
IH0KIAogUGFzc1JlZlB0cjxBdWRpb0NvbnRleHQ+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlT2ZmbGlu
ZUNvbnRleHQoRG9jdW1lbnQqIGRvY3VtZW50LCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBz
aXplX3QgbnVtYmVyT2ZGcmFtZXMsIGZsb2F0IHNhbXBsZVJhdGUsIEV4Y2VwdGlvbkNvZGUmIGVj
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IDVlMjEzYjguLjlm
ODRlMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKQEAgLTE2NCw2
ICsxNjQsMTMgQEAgV2ViU29ja2V0Ojp+V2ViU29ja2V0KCkKICAgICAgICAgbV9jaGFubmVsLT5k
aXNjb25uZWN0KCk7CiB9CiAKK1Bhc3NSZWZQdHI8V2ViU29ja2V0PiBXZWJTb2NrZXQ6OmNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQoreworICAgIFdlYlNvY2tldCogd2Vi
U29ja2V0ID0gbmV3IFdlYlNvY2tldChjb250ZXh0KTsKKyAgICBjb250ZXh0LT5kaWRJbnN0YWxs
QWN0aXZlRE9NT2JqZWN0KHdlYlNvY2tldCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKHdlYlNvY2tl
dCk7Cit9CisKIHZvaWQgV2ViU29ja2V0Ojpjb25uZWN0KGNvbnN0IFN0cmluZyYgdXJsLCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKICAgICBWZWN0b3I8U3RyaW5nPiBwcm90b2NvbHM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oIGIvU291cmNlL1dlYkNv
cmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAppbmRleCBiODYwYjc1Li5jYWU1N2QyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3MgV2Vi
U29ja2V0IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViU29ja2V0PiwgcHVibGljIEV2ZW50VGFyZ2V0
LCBwdWJsaWMgQWN0aXYKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBzZXRJc0F2YWlsYWJsZShi
b29sKTsKICAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgpOwotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFdlYlNvY2tldD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpIHsg
cmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJTb2NrZXQoY29udGV4dCkpOyB9CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8V2ViU29ja2V0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogICAg
IHZpcnR1YWwgfldlYlNvY2tldCgpOwogCiAgICAgZW51bSBTdGF0ZSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1NoYXJlZFdvcmtlci5jcHAKaW5kZXggZmYwNzkyYy4uZGYwYjQzNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmNwcApAQCAtNjQsNiArNjQsNyBAQCBQYXNzUmVm
UHRyPFNoYXJlZFdvcmtlcj4gU2hhcmVkV29ya2VyOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgYwogCiAgICAgU2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6Y29ubmVjdCh3
b3JrZXIuZ2V0KCksIHJlbW90ZVBvcnQucmVsZWFzZSgpLCBzY3JpcHRVUkwsIG5hbWUsIGVjKTsK
IAorICAgIGNvbnRleHQtPmRpZEluc3RhbGxBY3RpdmVET01PYmplY3Qod29ya2VyLmdldCgpKTsK
ICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdvcmtlcihjb250ZXh0LCB3
b3JrZXItPmFzSUQoKSwgc2NyaXB0VVJMLnN0cmluZygpLCB0cnVlKTsKIAogICAgIHJldHVybiB3
b3JrZXIucmVsZWFzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCmluZGV4IGIzMjM2YTcu
Ljc3NDZjZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAKQEAgLTczLDYgKzczLDcgQEAg
UGFzc1JlZlB0cjxXb3JrZXI+IFdvcmtlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIGNvbnN0IFN0cmluZyYKICNlbmRpZgogICAgIHdvcmtlci0+bV9zY3JpcHRMb2Fk
ZXItPmxvYWRBc3luY2hyb25vdXNseShjb250ZXh0LCBzY3JpcHRVUkwsIERlbnlDcm9zc09yaWdp
blJlcXVlc3RzLCB3b3JrZXIuZ2V0KCkpOwogCisgICAgY29udGV4dC0+ZGlkSW5zdGFsbEFjdGl2
ZURPTU9iamVjdCh3b3JrZXIuZ2V0KCkpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkQ3JlYXRlV29ya2VyKGNvbnRleHQsIHdvcmtlci0+YXNJRCgpLCBzY3JpcHRVUkwuc3RyaW5n
KCksIGZhbHNlKTsKIAogICAgIHJldHVybiB3b3JrZXIucmVsZWFzZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggNmJlNThhYS4uMGYxOWE1ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0xNTQsNyArMTU0LDEwIEBAIHN0YXRpYyB2b2lk
IGxvZ0NvbnNvbGVFcnJvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIG1lc3NhCiAKIFBhc3NSZWZQdHI8WE1MSHR0cFJlcXVlc3Q+IFhNTEh0dHBSZXF1ZXN0
OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxTZWN1
cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4pCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBY
TUxIdHRwUmVxdWVzdChjb250ZXh0LCBzZWN1cml0eU9yaWdpbikpOworICAgIFhNTEh0dHBSZXF1
ZXN0KiB4bWxIdHRwUmVxdWVzdCA9IG5ldyBYTUxIdHRwUmVxdWVzdChjb250ZXh0LCBzZWN1cml0
eU9yaWdpbik7CisgICAgY29udGV4dC0+ZGlkSW5zdGFsbEFjdGl2ZURPTU9iamVjdCh4bWxIdHRw
UmVxdWVzdCk7CisKKyAgICByZXR1cm4gYWRvcHRSZWYoeG1sSHR0cFJlcXVlc3QpOwogfQogCiBY
TUxIdHRwUmVxdWVzdDo6WE1MSHR0cFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4pCg==
</data>
<flag name="commit-queue"
          id="125810"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124537</attachid>
            <date>2012-01-30 05:49:08 -0800</date>
            <delta_ts>2012-01-30 07:34:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Bug53733-patch7.diff</filename>
            <type>text/plain</type>
            <size>31864</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlNTg4MDkyLi5iYWJjMWY3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDEt
MzAgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+CisKKyAg
ICAgICAgVGVzdCB0aGF0IHRpbWVycyBkbyBub3QgZmlyZSBmcm9tIHN1YmZyYW1lcyBvZiBzdXNw
ZW5kZWQgZG9jdW1lbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTM3MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGZhc3QvZXZlbnRzL3Jlc291cmNlcy9zdXNwZW5kLXN1YmZyYW1lLTEuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvcmVzb3VyY2VzL3N1c3BlbmQtc3ViZnJhbWUt
Mi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9zdXNwZW5kLXRpbWVycy1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3N1c3BlbmQtdGltZXJzLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25z
LnR4dDoKKwogMjAxMi0wMS0yNyAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5Acmlt
LmNvbT4KIAogICAgICAgICA8ZmVJbWFnZT4gRE9NIG11dGF0aW9uIHByb2JsZW1zCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZXNvdXJjZXMvc3VzcGVuZC1zdWJmcmFtZS0x
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZXNvdXJjZXMvc3VzcGVuZC1zdWJmcmFt
ZS0xLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTFiYThlYQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Jlc291cmNlcy9zdXNwZW5k
LXN1YmZyYW1lLTEuaHRtbApAQCAtMCwwICsxLDE2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+CisgICAgPHNjcmlwdD4KKyAgICAgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAg
ICAgICAgIHdpbmRvdy50b3AuY29uc29sZS5sb2coJ1RpbWVvdXQgaW4gc3ViZnJhbWUtMSBjcmVh
dGVkJyk7CisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
ICAgIGFsZXJ0KCdUaW1lb3V0IGNyZWF0ZWQgaW4gc3ViZnJhbWUtMS5odG1sIGZpcmVkJyk7Cisg
ICAgICAgICAgICB9LCA1MCk7CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorSSBhbSBzdWJmcmFtZS0xLmh0bWwKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Jlc291cmNlcy9zdXNwZW5kLXN1YmZyYW1lLTIuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Jlc291cmNlcy9zdXNwZW5kLXN1YmZyYW1lLTIu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTNiMmVlCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcmVzb3VyY2VzL3N1c3BlbmQtc3Vi
ZnJhbWUtMi5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKwk8c2NyaXB0PgorCW9ucGFnZWhpZGUgPSBmdW5jdGlvbigpIHsKKwkgIHdpbmRvdy50
b3AuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2EtZnJhbWUnKS5jb250ZW50V2luZG93LnRlc3Qo
KTsKKwl9CisJPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KK0kgYW0gc3ViZnJhbWUtMi5odG1s
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9z
dXNwZW5kLXRpbWVycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zdXNw
ZW5kLXRpbWVycy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uODU5Nzc0ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3N1
c3BlbmQtdGltZXJzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBACitDT05TT0xFIE1FU1NB
R0U6IGxpbmUgNjogVGltZW91dCBpbiBzdWJmcmFtZS0xIGNyZWF0ZWQKK0NPTlNPTEUgTUVTU0FH
RTogbGluZSA1OiBMb2FkZWQgcGFnZWhpZGUtdGltZW91dC1nby1iYWNrLmh0bWwsIGdvaW5nIGJh
Y2sKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAzMTogUmVzdG9yZWQgcGFnZSBmcm9tIHBhZ2UgY2Fj
aGUuCitBTEVSVDogVGltZW91dCBjcmVhdGVkIGluIHN1YmZyYW1lLTEuaHRtbCBmaXJlZAorVGVz
dHMgdGhhdCBhbGwgSlMgdGltZXJzIGFyZSBzdXNwZW5kZWQgYWZ0ZXIgdGhlIHBhZ2VoaWRlIGV2
ZW50IGlzIGZpcmVkLCBzbyB0aGF0IHRpbWVycyBjcmVhdGVkIHdpdGhpbiBpdCB3aWxsIG5vdCBm
aXJlIHdoaWxlIHRoZSBkb2N1bWVudCBpcyBpbiB0aGUgcGFnZSBjYWNoZS4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zdXNw
ZW5kLXRpbWVycy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3VzcGVuZC10aW1lcnMu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjdlZTc0Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3VzcGVuZC10aW1lcnMuaHRtbApA
QCAtMCwwICsxLDUzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+
U3VzcGVuZCB0aW1lcnMgb24gbmF2aWdhdGU8L3RpdGxlPgorPHN0eWxlPgorICAgIGlmcmFtZSB7
CisgICAgICBkaXNwbGF5OiBibG9jazsKKyAgICAgIGJvcmRlcjogc29saWQgMXB4ICNjY2M7Cisg
ICAgICBtYXJnaW46IDFlbTsKKyAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgIGhlaWdodDogMjAw
cHg7CisgICAgfQorPC9zdHlsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisKKzxpZnJhbWUg
c3JjPSJyZXNvdXJjZXMvc3VzcGVuZC1zdWJmcmFtZS0xLmh0bWwiIGlkPSJhLWZyYW1lIj48L2lm
cmFtZT4gPGlmcmFtZSBzcmM9InJlc291cmNlcy9zdXNwZW5kLXN1YmZyYW1lLTIuaHRtbCIgaWQ9
ImItZnJhbWUiPjwvaWZyYW1lPgorCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Citk
ZXNjcmlwdGlvbignVGVzdHMgdGhhdCBhbGwgSlMgdGltZXJzIGFyZSBzdXNwZW5kZWQgYWZ0ZXIg
dGhlIHBhZ2VoaWRlIGV2ZW50IGlzIGZpcmVkLCBzbyB0aGF0IHRpbWVycyBjcmVhdGVkIHdpdGhp
biBpdCB3aWxsIG5vdCBmaXJlIHdoaWxlIHRoZSBkb2N1bWVudCBpcyBpbiB0aGUgcGFnZSBjYWNo
ZS4nKTsKKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoJ1dlYktpdFVzZXNQYWdlQ2FjaGVQcmVmZXJl
bmNlS2V5JywgMSk7CisKKworb25wYWdlc2hvdyA9IGZ1bmN0aW9uKGV2ZW50KQoreworICAgIGlm
IChldmVudC5wZXJzaXN0ZWQpIHsKKyAgICAgICAgY29uc29sZS5sb2coJ1Jlc3RvcmVkIHBhZ2Ug
ZnJvbSBwYWdlIGNhY2hlLicpOworICAgICAgICBpZiAoIXdpbmRvdy53YXNGaW5pc2hKU1Rlc3RD
YWxsZWQpIHsKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICB9LCAyMDApOworICAgICAgICB9Cisg
ICAgfQorfQorCitvbmxvYWQgPSBmdW5jdGlvbigpCit7CisgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsKKyAgICAgICAgbG9jYXRpb24uaHJlZiA9ICdyZXNvdXJjZXMvcGFnZWhpZGUtdGltZW91
dC1nby1iYWNrLmh0bWwnOworICAgIH0sIDEwKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7Cit2YXIganNUZXN0SXNBc3luYyA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVz
dF9leHBlY3RhdGlvbnMudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9l
eHBlY3RhdGlvbnMudHh0CmluZGV4IDQxZTY1NjcuLjIwZTRiM2UgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKQEAgLTIwNyw2
ICsyMDcsNyBAQCBXT05URklYIFNLSVAgOiBmYXN0L2RvbS9XaW5kb3cvdGltZXItcmVzdW1lLW9u
LW5hdmlnYXRpb24tYmFjay5odG1sID0gVElNRU9VVCBGQQogV09OVEZJWCBTS0lQIDogZmFzdC9l
dmVudHMvcGFnZWhpZGUtdGltZW91dC5odG1sID0gVElNRU9VVAogV09OVEZJWCBTS0lQIDogZmFz
dC9ldmVudHMvcGFnZXNob3ctcGFnZWhpZGUtb24tYmFjay1jYWNoZWQuaHRtbCA9IFRJTUVPVVQg
RkFJTAogV09OVEZJWCBTS0lQIDogZmFzdC9ldmVudHMvcGFnZXNob3ctcGFnZWhpZGUtb24tYmFj
ay1jYWNoZWQtd2l0aC1mcmFtZXMuaHRtbCA9IFRJTUVPVVQKK1dPTlRGSVggU0tJUCA6IGZhc3Qv
ZXZlbnRzL3N1c3BlbmQtdGltZXJzLmh0bWwgPSBUSU1FT1VUCiBXT05URklYIFNLSVAgOiBtZWRp
YS9yZXN0b3JlLWZyb20tcGFnZS1jYWNoZS5odG1sID0gVElNRU9VVAogV09OVEZJWCBTS0lQIDog
bG9hZGVyL2dvLWJhY2stdG8tZGlmZmVyZW50LXdpbmRvdy1zaXplLmh0bWwgPSBUSU1FT1VUIFRF
WFQKIFdPTlRGSVggU0tJUCA6IGZhc3QvbG9hZGVyL2NyYXNoLWNvcHlpbmctYmFja2ZvcndhcmRs
aXN0Lmh0bWwgPSBURVhUCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjRiYWYxOS4uYjVmNDk0MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDgzIEBACisyMDEyLTAxLTMwICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxh
bGxhbi5qZW5zZW5Abm9raWEuY29tPgorCisgICAgICAgIEVuc3VyZSB0aW1lcnMgYW5kIG90aGVy
IGFjdGl2ZSBET00gb2JqZWN0cyBkbyBub3QgZmlyZSBpbiBzdXNwZW5kZWQgZG9jdW1lbnRzLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTM3MzMKKwor
ICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0IG5vdyByZW1lbWJlcnMgaXQgaGFzIHN1c3Bl
bmRlZCBhY3RpdmUgRE9NIG9iamVjdHMKKyAgICAgICAgYW5kIHN1c3BlbmRzIGFsbCBuZXdseSBp
bnN0YWxsZWQgYWN0aXZlIERPTSBvYmplY3RzIGFzIHdlbGwuCisKKyAgICAgICAgQWxsIGNyZWF0
ZS1jYWxscyBhY3RpdmUgRE9NIG9iamVjdHMgbm93IGNhbGxzIGEgcG9zdC1jb25zdHJ1Y3RvciBt
ZXRob2Qgb24KKyAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCB0aGF0IHVwZGF0ZXMgdGhl
IHN1c3BlbmQgc3RhdGUuIEl0IGlzIHBvc3QgY29uc3RydWN0b3IKKyAgICAgICAgYmVjYXVzZSB0
aGUgc3VzcGVuZC9yZXN1bWUgZnVuY3Rpb25zIGFyZSB2aXJ0dWFsIGFuZCB0aHVzIGNhbiBub3Qg
YmUgY2FsbGVkCisgICAgICAgIGZyb20gY29uc3RydWN0b3JzLgorICAgICAgICBIVE1MIGVsZW1l
bnRzIHRoYXQgYXJlIGFsc28gYWN0aXZlIERPTSBvYmplY3RzIGNhbGxzIHRoZSBwb3N0LWNvbnN0
cnVjdG9yCisgICAgICAgIGZyb20gaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKS4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBmYXN0L2V2ZW50cy9z
dXNwZW5kLXRpbWVycy5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL2ludGVudHMvSW50ZW50UmVx
dWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlbnRSZXF1ZXN0OjpjcmVhdGUpOgorICAg
ICAgICAqIGJpbmRpbmdzL2dlbmVyaWMvQWN0aXZlRE9NQ2FsbGJhY2suY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QWN0aXZlRE9NQ2FsbGJhY2s6OkFjdGl2ZURPTUNhbGxiYWNrKToKKyAgICAgICAg
KiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6On5TY3JpcHRFeGVjdXRpb25Db250ZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNhblN1c3BlbmRBY3Rp
dmVET01PYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OnN1c3BlbmRBY3RpdmVET01PYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OnJlc3VtZUFjdGl2ZURPTU9iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZGlkSW5zdGFsbEFjdGl2ZURPTU9iamVjdCk6CisgICAg
ICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmFjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQpOgorICAg
ICAgICAqIGZpbGVhcGkvRE9NRmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01G
aWxlU3lzdGVtOjpjcmVhdGUpOgorICAgICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWxlUmVhZGVyOjpjcmVhdGUpOgorICAgICAgICAqIGZpbGVhcGkv
RmlsZVJlYWRlci5oOgorICAgICAgICAqIGZpbGVhcGkvRmlsZVdyaXRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGaWxlV3JpdGVyOjpjcmVhdGUpOgorICAgICAgICAqIGZpbGVhcGkvRmlsZVdy
aXRlci5oOgorICAgICAgICAqIGhpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkRnJhbWU6OkNhY2hlZEZyYW1lKToKKyAgICAgICAgKiBodG1sL0hUTUxNYXJx
dWVlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWFycXVlZUVsZW1lbnQ6Omlu
c2VydGVkSW50b0RvY3VtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxNYXJxdWVlRWxlbWVudC5o
OgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCk6CisgICAgICAgICogbWVk
aWFzdHJlYW0vUGVlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5l
Y3Rpb246OmNyZWF0ZSk6CisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIG5v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5v
dGlmaWNhdGlvbkNlbnRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvbkNlbnRlci5oOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2VudGVyOjpj
cmVhdGVIVE1MTm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBwYWdlL0RPTVRpbWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRPTVRpbWVyOjppbnN0YWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkRP
TVRpbWVyOjpmaXJlZCk6CisgICAgICAgICogcGFnZS9FdmVudFNvdXJjZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudFNvdXJjZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWdlL1N1c3BlbmRh
YmxlVGltZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VzcGVuZGFibGVUaW1lcjo6U3VzcGVu
ZGFibGVUaW1lcik6CisgICAgICAgICogc3RvcmFnZS9JREJEYXRhYmFzZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJREJEYXRhYmFzZTo6Y3JlYXRlKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQlJl
cXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6Y3JlYXRlKToKKyAgICAg
ICAgKiBzdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRy
YW5zYWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHdlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmNyZWF0ZSk6CisgICAgICAgICogd2Vi
c29ja2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpjcmVh
dGUpOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Lmg6CisgICAgICAgICogd29ya2Vy
cy9TaGFyZWRXb3JrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyOjpjcmVh
dGUpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlcjo6Y3JlYXRlKToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZSk6CisKIDIwMTItMDEtMjYgIFZzZXZv
bG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3Rv
cjogU2NyaXB0cyBwYW5lbDogZml4IGV2ZW50IGRpc3BhdGNoaW5nIGJldHdlZW4gRmlsZVNlbGVj
dG9yIGFuZCBFZGl0b3JDb250YWluZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ludGVudHMvSW50ZW50UmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
dGVudHMvSW50ZW50UmVxdWVzdC5jcHAKaW5kZXggMjk2ZjNkZC4uMGJjODllZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0ludGVudFJlcXVlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnRSZXF1ZXN0LmNwcApAQCAtNDEs
NyArNDEsOSBAQCBQYXNzUmVmUHRyPEludGVudFJlcXVlc3Q+IEludGVudFJlcXVlc3Q6OmNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxJbnRlbnRSZXN1bHRDYWxsYmFj
az4gc3VjY2Vzc0NhbGxiYWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUGFzc1JlZlB0cjxJbnRlbnRSZXN1bHRDYWxsYmFjaz4gZXJyb3JDYWxsYmFj
aykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEludGVudFJlcXVlc3QoY29udGV4dCwgaW50
ZW50LCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKTsKKyAgICBJbnRlbnRSZXF1ZXN0
KiBpbnRlbnRSZXF1ZXN0ID0gbmV3IEludGVudFJlcXVlc3QoY29udGV4dCwgaW50ZW50LCBzdWNj
ZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOworICAgIGNvbnRleHQtPmRpZEluc3RhbGxBY3Rp
dmVET01PYmplY3QoaW50ZW50UmVxdWVzdCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKGludGVudFJl
cXVlc3QpOwogfQogCiBJbnRlbnRSZXF1ZXN0OjpJbnRlbnRSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9n
ZW5lcmljL0FjdGl2ZURPTUNhbGxiYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dl
bmVyaWMvQWN0aXZlRE9NQ2FsbGJhY2suY3BwCmluZGV4IGZmMDJhNDIuLmJkNDdjMTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvQWN0aXZlRE9NQ2FsbGJhY2su
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvQWN0aXZlRE9NQ2FsbGJh
Y2suY3BwCkBAIC0xMjIsNiArMTIyLDcgQEAgc3RhdGljIHZvaWQgZGVzdHJveU9uQ29udGV4dFRo
cmVhZChQYXNzT3duUHRyPEFjdGl2ZURPTU9iamVjdENhbGxiYWNrSW1wbD4gaW1wbCkKIEFjdGl2
ZURPTUNhbGxiYWNrOjpBY3RpdmVET01DYWxsYmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0KQogICAgIDogbV9pbXBsKGFkb3B0UHRyKG5ldyBBY3RpdmVET01PYmplY3RDYWxsYmFj
a0ltcGwoY29udGV4dCkpKQogeworICAgIGNvbnRleHQtPmRpZEluc3RhbGxBY3RpdmVET01PYmpl
Y3QobV9pbXBsLmdldCgpKTsKIH0KIAogQWN0aXZlRE9NQ2FsbGJhY2s6On5BY3RpdmVET01DYWxs
YmFjaygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAK
aW5kZXggZWYwNmMyOS4uZTk1ODkzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0LmNwcApAQCAtOTIsNiArOTIsNyBAQCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkKICAgICA6IG1faXRlcmF0aW5nQWN0aXZlRE9N
T2JqZWN0cyhmYWxzZSkKICAgICAsIG1faW5EZXN0cnVjdG9yKGZhbHNlKQogICAgICwgbV9pbkRp
c3BhdGNoRXJyb3JFdmVudChmYWxzZSkKKyAgICAsIG1fYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3Bl
bmRlZChmYWxzZSkKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogICAgICwgbV9oYXNPcGVuRGF0
YWJhc2VzKGZhbHNlKQogI2VuZGlmCkBAIC0xMDEsNyArMTAyLDYgQEAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0
Ojp+U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpCiB7CiAgICAgbV9pbkRlc3RydWN0b3IgPSB0cnVl
OwotCiAgICAgZm9yIChIYXNoU2V0PENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKj46Oml0ZXJh
dG9yIGl0ZXIgPSBtX2Rlc3RydWN0aW9uT2JzZXJ2ZXJzLmJlZ2luKCk7IGl0ZXIgIT0gbV9kZXN0
cnVjdGlvbk9ic2VydmVycy5lbmQoKTsgaXRlciA9IG1fZGVzdHJ1Y3Rpb25PYnNlcnZlcnMuYmVn
aW4oKSkgewogICAgICAgICBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciogb2JzZXJ2ZXIgPSAq
aXRlcjsKICAgICAgICAgbV9kZXN0cnVjdGlvbk9ic2VydmVycy5yZW1vdmUob2JzZXJ2ZXIpOwpA
QCAtMjEwLDcgKzIxMCw3IEBAIGJvb2wgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6Y2FuU3VzcGVu
ZEFjdGl2ZURPTU9iamVjdHMoKQogICAgICAgICAgICAgbV9pdGVyYXRpbmdBY3RpdmVET01PYmpl
Y3RzID0gZmFsc2U7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KLSAgICB9
ICAgIAorICAgIH0KICAgICBtX2l0ZXJhdGluZ0FjdGl2ZURPTU9iamVjdHMgPSBmYWxzZTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTIyNSwxMCArMjI1LDEzIEBAIHZvaWQgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6c3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoQWN0aXZlRE9NT2JqZWN0OjpSZWFz
b25Gb3JTCiAgICAgICAgIGl0ZXItPmZpcnN0LT5zdXNwZW5kKHdoeSk7CiAgICAgfQogICAgIG1f
aXRlcmF0aW5nQWN0aXZlRE9NT2JqZWN0cyA9IGZhbHNlOworICAgIG1fYWN0aXZlRE9NT2JqZWN0
c0FyZVN1c3BlbmRlZCA9IHRydWU7CisgICAgbV9zdXNwZW5kUmVhc29uID0gd2h5OwogfQogCiB2
b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnJlc3VtZUFjdGl2ZURPTU9iamVjdHMoKQogewor
ICAgIG1fYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCA9IGZhbHNlOwogICAgIC8vIE5vIHBy
b3RlY3Rpb24gYWdhaW5zdCBtX2FjdGl2ZURPTU9iamVjdHMgY2hhbmdpbmcgZHVyaW5nIGl0ZXJh
dGlvbjogcmVzdW1lKCkgc2hvdWxkbid0IGV4ZWN1dGUgYXJiaXRyYXJ5IEpTLgogICAgIG1faXRl
cmF0aW5nQWN0aXZlRE9NT2JqZWN0cyA9IHRydWU7CiAgICAgSGFzaE1hcDxBY3RpdmVET01PYmpl
Y3QqLCB2b2lkKj46Oml0ZXJhdG9yIGFjdGl2ZU9iamVjdHNFbmQgPSBtX2FjdGl2ZURPTU9iamVj
dHMuZW5kKCk7CkBAIC0yNTQsNiArMjU3LDE0IEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6c3RvcEFjdGl2ZURPTU9iamVjdHMoKQogICAgIGNsb3NlTWVzc2FnZVBvcnRzKCk7CiB9CiAK
K3ZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZGlkSW5zdGFsbEFjdGl2ZURPTU9iamVjdChB
Y3RpdmVET01PYmplY3QqIG9iamVjdCkKK3sKKyAgICBBU1NFUlQobV9hY3RpdmVET01PYmplY3Rz
LmNvbnRhaW5zKG9iamVjdCkpOworICAgIC8vIEVuc3VyZSBhbGwgQWN0aXZlRE9NT2JqZWN0cyBh
cmUgc3VzcGVuZGVkIGFsc28gbmV3bHkgY3JlYXRlZCBvbmVzLgorICAgIGlmIChtX2FjdGl2ZURP
TU9iamVjdHNBcmVTdXNwZW5kZWQpCisgICAgICAgIG9iamVjdC0+c3VzcGVuZChtX3N1c3BlbmRS
ZWFzb24pOworfQorCiB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmRpZENyZWF0ZUFjdGl2
ZURPTU9iamVjdChBY3RpdmVET01PYmplY3QqIG9iamVjdCwgdm9pZCogdXBjYXN0UG9pbnRlcikK
IHsKICAgICBBU1NFUlQob2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oCmluZGV4IGFlZDM0MTEuLmQwMDAwYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtMTAzLDkgKzEwMywxNSBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHJlc3VtZUFjdGl2ZURPTU9iamVjdHMoKTsKICAgICB2aXJ0dWFs
IHZvaWQgc3RvcEFjdGl2ZURPTU9iamVjdHMoKTsKIAorICAgIGJvb2wgYWN0aXZlRE9NT2JqZWN0
c0FyZVN1c3BlbmRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3Bl
bmRlZDsgfQorCisgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVj
dG9ycyBvZiBBY3RpdmVET01PYmplY3QKICAgICB2b2lkIGRpZENyZWF0ZUFjdGl2ZURPTU9iamVj
dChBY3RpdmVET01PYmplY3QqLCB2b2lkKiB1cGNhc3RQb2ludGVyKTsKICAgICB2b2lkIHdpbGxE
ZXN0cm95QWN0aXZlRE9NT2JqZWN0KEFjdGl2ZURPTU9iamVjdCopOwogCisgICAgLy8gQ2FsbGVk
IGFmdGVyIHRoZSBjb25zdHJ1Y3Rpb24gb2YgYW4gQWN0aXZlRE9NT2JqZWN0CisgICAgdm9pZCBk
aWRJbnN0YWxsQWN0aXZlRE9NT2JqZWN0KEFjdGl2ZURPTU9iamVjdCopOworCiAgICAgdHlwZWRl
ZiBjb25zdCBIYXNoTWFwPEFjdGl2ZURPTU9iamVjdCosIHZvaWQqPiBBY3RpdmVET01PYmplY3Rz
TWFwOwogICAgIEFjdGl2ZURPTU9iamVjdHNNYXAmIGFjdGl2ZURPTU9iamVjdHMoKSBjb25zdCB7
IHJldHVybiBtX2FjdGl2ZURPTU9iamVjdHM7IH0KIApAQCAtMjA2LDYgKzIxMiw5IEBAIHByaXZh
dGU6CiAgICAgY2xhc3MgUGVuZGluZ0V4Y2VwdGlvbjsKICAgICBPd25QdHI8VmVjdG9yPE93blB0
cjxQZW5kaW5nRXhjZXB0aW9uPiA+ID4gbV9wZW5kaW5nRXhjZXB0aW9uczsKIAorICAgIGJvb2wg
bV9hY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkOworICAgIEFjdGl2ZURPTU9iamVjdDo6UmVh
c29uRm9yU3VzcGVuc2lvbiBtX3N1c3BlbmRSZWFzb247CisKICNpZiBFTkFCTEUoU1FMX0RBVEFC
QVNFKQogICAgIFJlZlB0cjxEYXRhYmFzZVRocmVhZD4gbV9kYXRhYmFzZVRocmVhZDsKICAgICBi
b29sIG1faGFzT3BlbkRhdGFiYXNlczsgLy8gVGhpcyBuZXZlciBjaGFuZ2VzIGJhY2sgdG8gZmFs
c2UsIGV2ZW4gYWZ0ZXIgdGhlIGRhdGFiYXNlIHRocmVhZCBpcyBjbG9zZWQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNwcAppbmRleCBhYzM4NjkwLi5jOGVkNDJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbS5jcHAKQEAgLTU2LDYgKzU2LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBET01GaWxlU3lz
dGVtOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gYXN5bmNGaWxlU3lzdGVtKQogewog
ICAgIFJlZlB0cjxET01GaWxlU3lzdGVtPiBmaWxlU3lzdGVtKGFkb3B0UmVmKG5ldyBET01GaWxl
U3lzdGVtKGNvbnRleHQsIG5hbWUsIGFzeW5jRmlsZVN5c3RlbSkpKTsKKyAgICBjb250ZXh0LT5k
aWRJbnN0YWxsQWN0aXZlRE9NT2JqZWN0KGZpbGVTeXN0ZW0uZ2V0KCkpOwogICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkT3BlbkZpbGVTeXN0ZW0oZmlsZVN5c3RlbS5nZXQoKSk7CiAg
ICAgcmV0dXJuIGZpbGVTeXN0ZW07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0ZpbGVSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNw
cAppbmRleCAyOWM1OTg0Li45ZTk2YzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0ZpbGVSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRl
ci5jcHAKQEAgLTQ4LDYgKzQ4LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNv
bnN0IGRvdWJsZSBwcm9ncmVzc05vdGlmaWNhdGlvbkludGVydmFsTVMgPSA1MDsKIAorUGFzc1Jl
ZlB0cjxGaWxlUmVhZGVyPiBGaWxlUmVhZGVyOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCkKK3sKKyAgICBGaWxlUmVhZGVyKiBmaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFk
ZXIoY29udGV4dCk7CisgICAgY29udGV4dC0+ZGlkSW5zdGFsbEFjdGl2ZURPTU9iamVjdChmaWxl
UmVhZGVyKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoZmlsZVJlYWRlcik7Cit9CisKIEZpbGVSZWFk
ZXI6OkZpbGVSZWFkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICA6IEFj
dGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQogICAgICwgbV9zdGF0ZShFTVBUWSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlUmVhZGVyLmgKaW5kZXggODA0ZGQyOS4uZWNkZDQ4NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlUmVhZGVyLmgKQEAgLTUxLDEwICs1MSw3IEBAIHR5cGVkZWYgaW50IEV4
Y2VwdGlvbkNvZGU7CiAKIGNsYXNzIEZpbGVSZWFkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxGaWxl
UmVhZGVyPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJs
aWMgRmlsZVJlYWRlckxvYWRlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8RmlsZVJlYWRlcj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCi0g
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZpbGVSZWFkZXIoY29udGV4dCkpOwot
ICAgIH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxGaWxlUmVhZGVyPiBjcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCopOwogCiAgICAgdmlydHVhbCB+RmlsZVJlYWRlcigpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVXcml0ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlV3JpdGVyLmNwcAppbmRleCAyYjI1Y2ZhLi40MzZlOGY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVXcml0ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZVdyaXRlci5jcHAKQEAgLTQ1LDYgKzQ1LDEzIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IGludCBrTWF4UmVjdXJzaW9uRGVwdGggPSAzOwog
CitQYXNzUmVmUHRyPEZpbGVXcml0ZXI+IEZpbGVXcml0ZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0KQoreworICAgIEZpbGVXcml0ZXIqIGZpbGVXcml0ZXIgPSBuZXcg
RmlsZVdyaXRlcihjb250ZXh0KTsKKyAgICBjb250ZXh0LT5kaWRJbnN0YWxsQWN0aXZlRE9NT2Jq
ZWN0KGZpbGVXcml0ZXIpOworICAgIHJldHVybiBhZG9wdFJlZihmaWxlV3JpdGVyKTsKK30KKwog
RmlsZVdyaXRlcjo6RmlsZVdyaXRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQog
ICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCiAgICAgLCBtX3JlYWR5U3RhdGUo
SU5JVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVdyaXRlci5oIGIv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlV3JpdGVyLmgKaW5kZXggMmI1OTdhMS4uOTQ2MTM1
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlV3JpdGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlV3JpdGVyLmgKQEAgLTQ4LDEwICs0OCw3IEBAIGNs
YXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKIGNsYXNzIEZpbGVXcml0ZXIgOiBwdWJsaWMg
RmlsZVdyaXRlckJhc2UsIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBFdmVudFRhcmdl
dCwgcHVibGljIEFzeW5jRmlsZVdyaXRlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8RmlsZVdyaXRlcj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZpbGVXcml0ZXIoY29udGV4
dCkpOwotICAgIH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxGaWxlV3JpdGVyPiBjcmVhdGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCopOwogCiAgICAgZW51bSBSZWFkeVN0YXRlIHsKICAgICAgICAg
SU5JVCA9IDAsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1l
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwCmluZGV4IDYwZmFi
MDQuLjliMGQyZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJh
bWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwCkBAIC0x
NjgsNyArMTY4LDYgQEAgQ2FjaGVkRnJhbWU6OkNhY2hlZEZyYW1lKEZyYW1lKiBmcmFtZSkKICAg
ICAvLyBidXQgYWZ0ZXIgd2UndmUgZmlyZWQgdGhlIHBhZ2VoaWRlIGV2ZW50LCBpbiBjYXNlIHRo
YXQgY3JlYXRlcyBtb3JlIG9iamVjdHMuCiAgICAgLy8gU3VzcGVuZGluZyBtdXN0IGFsc28gaGFw
cGVuIGFmdGVyIHdlJ3ZlIHJlY3Vyc2VkIG92ZXIgY2hpbGQgZnJhbWVzLCBpbiBjYXNlCiAgICAg
Ly8gdGhvc2UgY3JlYXRlIG1vcmUgb2JqZWN0cy4KLSAgICAvLyBGSVhNRTogSXQncyBzdGlsbCBw
b3NzaWJsZSB0byBoYXZlIG9iamVjdHMgY3JlYXRlZCBhZnRlciBzdXNwZW5kaW5nIGluIHNvbWUg
Y2FzZXMsIHNlZSBodHRwOi8vd2Via2l0Lm9yZy9iLzUzNzMzIGZvciBtb3JlIGRldGFpbHMuCiAg
ICAgbV9kb2N1bWVudC0+ZG9jdW1lbnRXaWxsU3VzcGVuZEZvclBhZ2VDYWNoZSgpOwogICAgIG1f
ZG9jdW1lbnQtPnN1c3BlbmRTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXJDYWxsYmFja3MoKTsK
ICAgICBtX2RvY3VtZW50LT5zdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyhBY3RpdmVET01PYmplY3Q6
OkRvY3VtZW50V2lsbEJlY29tZUluYWN0aXZlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1h
cnF1ZWVFbGVtZW50LmNwcAppbmRleCAwNTNmZmE4Li42MmU1ODM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuY3BwCkBAIC0xNzgsNiArMTc4LDEyIEBAIGJvb2wg
SFRNTE1hcnF1ZWVFbGVtZW50OjpjYW5TdXNwZW5kKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAordm9pZCBIVE1MTWFycXVlZUVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCkKK3sK
KyAgICBkb2N1bWVudCgpLT5kaWRJbnN0YWxsQWN0aXZlRE9NT2JqZWN0KHRoaXMpOworICAgIEhU
TUxFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpOworfQorCiB2b2lkIEhUTUxNYXJxdWVl
RWxlbWVudDo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKQogewogICAgIGlmIChSZW5kZXJN
YXJxdWVlKiBtYXJxdWVlUmVuZGVyZXIgPSByZW5kZXJNYXJxdWVlKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuaAppbmRleCA1ODZhYTZmLi5mNDk5YmViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmgKQEAgLTU2LDYgKzU2LDggQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgbWFwVG9FbnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiwg
TWFwcGVkQXR0cmlidXRlRW50cnkmKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBw
ZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAKKyAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRv
RG9jdW1lbnQoKTsKKwogICAgIC8vIEFjdGl2ZURPTU9iamVjdAogICAgIHZpcnR1YWwgYm9vbCBj
YW5TdXNwZW5kKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHN1c3BlbmQoUmVhc29uRm9yU3Vz
cGVuc2lvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBj
YzVjMjY0Li5jZGU5MmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAKQEAgLTQ2Niw2ICs0NjYsNyBAQCBSZW5kZXJPYmplY3QqIEhUTUxNZWRpYUVsZW1lbnQ6OmNy
ZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQogdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpCiB7CiAgICAgTE9HKE1lZGlhLCAi
SFRNTE1lZGlhRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQiKTsKKyAgICBkb2N1bWVudCgp
LT5kaWRJbnN0YWxsQWN0aXZlRE9NT2JqZWN0KHRoaXMpOwogICAgIEhUTUxFbGVtZW50OjppbnNl
cnRlZEludG9Eb2N1bWVudCgpOwogICAgIGlmICghZ2V0QXR0cmlidXRlKHNyY0F0dHIpLmlzRW1w
dHkoKSAmJiBtX25ldHdvcmtTdGF0ZSA9PSBORVRXT1JLX0VNUFRZKQogICAgICAgICBzY2hlZHVs
ZUxvYWQoTWVkaWFSZXNvdXJjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0
cmVhbS9QZWVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9QZWVy
Q29ubmVjdGlvbi5jcHAKaW5kZXggZTU0NDQ3YS4uNDNkOTgxNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uLmNwcApAQCAtNDEsNiArNDEsNyBAQCBQYXNz
UmVmUHRyPFBlZXJDb25uZWN0aW9uPiBQZWVyQ29ubmVjdGlvbjo6Y3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleAogICAgIFJlZlB0cjxQZWVyQ29ubmVjdGlvbj4gY29ubmVjdGlv
biA9IGFkb3B0UmVmKG5ldyBQZWVyQ29ubmVjdGlvbihjb250ZXh0LCBzZXJ2ZXJDb25maWd1cmF0
aW9uLCBzaWduYWxpbmdDYWxsYmFjaykpOwogICAgIGNvbm5lY3Rpb24tPnNldFBlbmRpbmdBY3Rp
dml0eShjb25uZWN0aW9uLmdldCgpKTsKICAgICBjb25uZWN0aW9uLT5zY2hlZHVsZUluaXRpYWxO
ZWdvdGlhdGlvbigpOworICAgIGNvbnRleHQtPmRpZEluc3RhbGxBY3RpdmVET01PYmplY3QoY29u
bmVjdGlvbi5nZXQoKSk7CiAKICAgICByZXR1cm4gY29ubmVjdGlvbi5yZWxlYXNlKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKaW5kZXggZDc5
OTFmMi4uZDgxZmJlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uLmNwcApAQCAtMTAyLDEyICsxMDIsMTYgQEAgTm90aWZpY2F0aW9uOjp+Tm90aWZpY2F0
aW9uKCkKIAogUGFzc1JlZlB0cjxOb3RpZmljYXRpb24+IE5vdGlmaWNhdGlvbjo6Y3JlYXRlKGNv
bnN0IEtVUkwmIHVybCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9u
Q29kZSYgZWMsIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBwcm92aWRlcikgCiB7IAot
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgTm90aWZpY2F0aW9uKHVybCwgY29udGV4dCwgZWMsIHBy
b3ZpZGVyKSk7CisgICAgTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24gPSBuZXcgTm90aWZpY2F0
aW9uKHVybCwgY29udGV4dCwgZWMsIHByb3ZpZGVyKTsKKyAgICBjb250ZXh0LT5kaWRJbnN0YWxs
QWN0aXZlRE9NT2JqZWN0KG5vdGlmaWNhdGlvbik7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5vdGlm
aWNhdGlvbik7CiB9CiAKIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uPiBOb3RpZmljYXRpb246OmNy
ZWF0ZShjb25zdCBOb3RpZmljYXRpb25Db250ZW50cyYgY29udGVudHMsIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjLCBQYXNzUmVmUHRyPE5vdGlmaWNh
dGlvbkNlbnRlcj4gcHJvdmlkZXIpIAogeyAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IE5vdGlm
aWNhdGlvbihjb250ZW50cywgY29udGV4dCwgZWMsIHByb3ZpZGVyKSk7CisgICAgTm90aWZpY2F0
aW9uKiBub3RpZmljYXRpb24gPSBuZXcgTm90aWZpY2F0aW9uKGNvbnRlbnRzLCBjb250ZXh0LCBl
YywgcHJvdmlkZXIpOworICAgIGNvbnRleHQtPmRpZEluc3RhbGxBY3RpdmVET01PYmplY3Qobm90
aWZpY2F0aW9uKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobm90aWZpY2F0aW9uKTsKIH0KIAogY29u
c3QgQXRvbWljU3RyaW5nJiBOb3RpZmljYXRpb246OmludGVyZmFjZU5hbWUoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuY3Bw
CmluZGV4IDQ1ZGMzNDUuLjVjMjI3YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9ub3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5jcHAKQEAgLTQxLDYgKzQxLDEzIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IE5vdGlm
aWNhdGlvbkNlbnRlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIE5v
dGlmaWNhdGlvblByZXNlbnRlciogcHJlc2VudGVyKQoreworICAgIE5vdGlmaWNhdGlvbkNlbnRl
ciogbm90aWZpY2F0aW9uQ2VudGVyID0gbmV3IE5vdGlmaWNhdGlvbkNlbnRlcihjb250ZXh0LCBw
cmVzZW50ZXIpOworICAgIGNvbnRleHQtPmRpZEluc3RhbGxBY3RpdmVET01PYmplY3Qobm90aWZp
Y2F0aW9uQ2VudGVyKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobm90aWZpY2F0aW9uQ2VudGVyKTsK
K30KKwogTm90aWZpY2F0aW9uQ2VudGVyOjpOb3RpZmljYXRpb25DZW50ZXIoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgTm90aWZpY2F0aW9uUHJlc2VudGVyKiBwcmVzZW50ZXIpCiAg
ICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKICAgICAsIG1fbm90aWZpY2F0aW9u
UHJlc2VudGVyKHByZXNlbnRlcikge30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbkNlbnRlci5oCmluZGV4IDIzYjMxZTAuLjQwMmNjYmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaApAQCAt
NTAsNyArNTAsNyBAQCBjbGFzcyBWb2lkQ2FsbGJhY2s7CiAKIGNsYXNzIE5vdGlmaWNhdGlvbkNl
bnRlciA6IHB1YmxpYyBSZWZDb3VudGVkPE5vdGlmaWNhdGlvbkNlbnRlcj4sIHB1YmxpYyBBY3Rp
dmVET01PYmplY3QgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5vdGlmaWNhdGlv
bkNlbnRlcj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIE5vdGlmaWNh
dGlvblByZXNlbnRlciogcHJlc2VudGVyKSB7IHJldHVybiBhZG9wdFJlZihuZXcgTm90aWZpY2F0
aW9uQ2VudGVyKGNvbnRleHQsIHByZXNlbnRlcikpOyB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8
Tm90aWZpY2F0aW9uQ2VudGVyPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE5vdGlm
aWNhdGlvblByZXNlbnRlciopOwogCiAgICAgUGFzc1JlZlB0cjxOb3RpZmljYXRpb24+IGNyZWF0
ZUhUTUxOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBVUkksIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9ET01UaW1lci5jcHAKaW5kZXggMGE5NGU3ZWYuLjRmMGJkOTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwCkBAIC05Miw2ICs5Miw3IEBAIGludCBET01UaW1lcjo6
aW5zdGFsbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzT3duUHRyPFNjaGVk
dWxlZEFjdGlvCiAgICAgLy8gb3IgaWYgaXQgaXMgYSBvbmUtdGltZSB0aW1lciBhbmQgaXQgaGFz
IGZpcmVkIChET01UaW1lcjo6ZmlyZWQpLgogICAgIERPTVRpbWVyKiB0aW1lciA9IG5ldyBET01U
aW1lcihjb250ZXh0LCBhY3Rpb24sIHRpbWVvdXQsIHNpbmdsZVNob3QpOwogCisgICAgY29udGV4
dC0+ZGlkSW5zdGFsbEFjdGl2ZURPTU9iamVjdCh0aW1lcik7CiAgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRJbnN0YWxsVGltZXIoY29udGV4dCwgdGltZXItPm1fdGltZW91dElkLCB0
aW1lb3V0LCBzaW5nbGVTaG90KTsKIAogICAgIHJldHVybiB0aW1lci0+bV90aW1lb3V0SWQ7CkBA
IC0xMTQsNyArMTE1LDcgQEAgdm9pZCBET01UaW1lcjo6ZmlyZWQoKQogewogICAgIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAg
dGltZXJOZXN0aW5nTGV2ZWwgPSBtX25lc3RpbmdMZXZlbDsKLSAgICAKKyAgICBBU1NFUlQoIWNv
bnRleHQtPmFjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQoKSk7CiAgICAgVXNlckdlc3R1cmVJ
bmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihtX3Nob3VsZEZvcndhcmRVc2VyR2VzdHVyZSA/IERl
ZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUgOiBQb3NzaWJseVByb2Nlc3NpbmdVc2VyR2Vz
dHVyZSk7CiAgICAgCiAgICAgLy8gT25seSB0aGUgZmlyc3QgZXhlY3V0aW9uIG9mIGEgbXVsdGkt
c2hvdCB0aW1lciBzaG91bGQgZ2V0IGFuIGFmZmlybWF0aXZlIHVzZXIgZ2VzdHVyZSBpbmRpY2F0
b3IuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCmluZGV4IGVhMDY2MDAuLjMxYjExMWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCkBAIC05OSw2ICs5OSw4IEBAIFBhc3NS
ZWZQdHI8RXZlbnRTb3VyY2U+IEV2ZW50U291cmNlOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgY29uCiAgICAgc291cmNlLT5zZXRQZW5kaW5nQWN0aXZpdHkoc291cmNl
LmdldCgpKTsKICAgICBzb3VyY2UtPmNvbm5lY3QoKTsKIAorICAgIGNvbnRleHQtPmRpZEluc3Rh
bGxBY3RpdmVET01PYmplY3Qoc291cmNlLmdldCgpKTsKKwogICAgIHJldHVybiBzb3VyY2UucmVs
ZWFzZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1c3BlbmRhYmxl
VGltZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TdXNwZW5kYWJsZVRpbWVyLmNwcAppbmRl
eCAyYTRkMmU1Li5kZDNlODlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1c3Bl
bmRhYmxlVGltZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3VzcGVuZGFibGVUaW1l
ci5jcHAKQEAgLTM1LDggKzM1LDggQEAgU3VzcGVuZGFibGVUaW1lcjo6U3VzcGVuZGFibGVUaW1l
cihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIDogQWN0aXZlRE9NT2JqZWN0
KGNvbnRleHQsIHRoaXMpCiAgICAgLCBtX25leHRGaXJlSW50ZXJ2YWwoMCkKICAgICAsIG1fcmVw
ZWF0SW50ZXJ2YWwoMCkKLSNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgLCBtX2FjdGl2ZShmYWxz
ZSkKKyNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgLCBtX3N1c3BlbmRlZChmYWxzZSkKICNlbmRp
ZgogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmNwcAppbmRleCBjNGI3M2NlLi4y
ZGViYzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmNwcApAQCAtNTAsNyAr
NTAsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NSZWZQdHI8SURCRGF0YWJhc2U+IElE
QkRhdGFiYXNlOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1Jl
ZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGRhdGFiYXNlKQogewotICAgIHJldHVy
biBhZG9wdFJlZihuZXcgSURCRGF0YWJhc2UoY29udGV4dCwgZGF0YWJhc2UpKTsKKyAgICBJREJE
YXRhYmFzZSogaWRiRGF0YWJhc2UgPSBuZXcgSURCRGF0YWJhc2UoY29udGV4dCwgZGF0YWJhc2Up
OworICAgIGNvbnRleHQtPmRpZEluc3RhbGxBY3RpdmVET01PYmplY3QoaWRiRGF0YWJhc2UpOwor
ICAgIHJldHVybiBhZG9wdFJlZihpZGJEYXRhYmFzZSk7CiB9CiAKIElEQkRhdGFiYXNlOjpJREJE
YXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkRh
dGFiYXNlQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJl
cXVlc3QuY3BwCmluZGV4IDk2OGZiNTAuLmIxY2FjNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJSZXF1ZXN0LmNwcApAQCAtNDUsNyArNDUsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBh
c3NSZWZQdHI8SURCUmVxdWVzdD4gSURCUmVxdWVzdDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIElEQlRyYW5zYWN0aW9u
KiB0cmFuc2FjdGlvbikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQlJlcXVlc3QoY29u
dGV4dCwgc291cmNlLCB0cmFuc2FjdGlvbikpOworICAgIElEQlJlcXVlc3QqIHJlcXVlc3QgPSBu
ZXcgSURCUmVxdWVzdChjb250ZXh0LCBzb3VyY2UsIHRyYW5zYWN0aW9uKTsKKyAgICBjb250ZXh0
LT5kaWRJbnN0YWxsQWN0aXZlRE9NT2JqZWN0KHJlcXVlc3QpOworICAgIHJldHVybiBhZG9wdFJl
ZihyZXF1ZXN0KTsKIH0KIAogSURCUmVxdWVzdDo6SURCUmVxdWVzdChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBJREJUcmFuc2FjdGlv
biogdHJhbnNhY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRy
YW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb24uY3Bw
CmluZGV4IDE0MGRmMDUuLmE0ZTE2ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJh
bnNhY3Rpb24uY3BwCkBAIC00Miw3ICs0Miw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGFz
c1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gSURCVHJhbnNhY3Rpb246OmNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZT4gYmFja2VuZCwgSURCRGF0YWJhc2UqIGRiKQogewotICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgSURCVHJhbnNhY3Rpb24oY29udGV4dCwgYmFja2VuZCwgZGIpKTsKKyAgICBJREJUcmFu
c2FjdGlvbiogdHJhbnNhY3Rpb24gPSBuZXcgSURCVHJhbnNhY3Rpb24oY29udGV4dCwgYmFja2Vu
ZCwgZGIpOworICAgIGNvbnRleHQtPmRpZEluc3RhbGxBY3RpdmVET01PYmplY3QodHJhbnNhY3Rp
b24pOworICAgIHJldHVybiBhZG9wdFJlZih0cmFuc2FjdGlvbik7CiB9CiAKIElEQlRyYW5zYWN0
aW9uOjpJREJUcmFuc2FjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNz
UmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgSURCRGF0YWJh
c2UqIGRiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Db250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5kZXggMGMx
NjY0Zi4uMjNiMGM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9D
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3Bw
CkBAIC0xMDIsOCArMTAyLDEwIEBAIFBhc3NSZWZQdHI8QXVkaW9Db250ZXh0PiBBdWRpb0NvbnRl
eHQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKICAgICBpZiAoc19oYXJkd2FyZUNvbnRleHRDb3VudCA+PSBNYXhIYXJkd2FyZUNvbnRleHRz
KQogICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBB
dWRpb0NvbnRleHQoZG9jdW1lbnQpKTsKKworICAgIEF1ZGlvQ29udGV4dCogYXVkaW9Db250ZXh0
ID0gbmV3IEF1ZGlvQ29udGV4dChkb2N1bWVudCk7CisgICAgZG9jdW1lbnQtPmRpZEluc3RhbGxB
Y3RpdmVET01PYmplY1QoYXVkaW9Db250ZXh0KTsKKyAgICByZXR1cm4gYWRvcHRSZWYoYXVkaW9D
b250ZXh0KTsKIH0KIAogUGFzc1JlZlB0cjxBdWRpb0NvbnRleHQ+IEF1ZGlvQ29udGV4dDo6Y3Jl
YXRlT2ZmbGluZUNvbnRleHQoRG9jdW1lbnQqIGRvY3VtZW50LCB1bnNpZ25lZCBudW1iZXJPZkNo
YW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMsIGZsb2F0IHNhbXBsZVJhdGUsIEV4Y2VwdGlv
bkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2Nr
ZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IDVl
MjEzYjguLjlmODRlMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2Vi
U29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAK
QEAgLTE2NCw2ICsxNjQsMTMgQEAgV2ViU29ja2V0Ojp+V2ViU29ja2V0KCkKICAgICAgICAgbV9j
aGFubmVsLT5kaXNjb25uZWN0KCk7CiB9CiAKK1Bhc3NSZWZQdHI8V2ViU29ja2V0PiBXZWJTb2Nr
ZXQ6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQoreworICAgIFdlYlNv
Y2tldCogd2ViU29ja2V0ID0gbmV3IFdlYlNvY2tldChjb250ZXh0KTsKKyAgICBjb250ZXh0LT5k
aWRJbnN0YWxsQWN0aXZlRE9NT2JqZWN0KHdlYlNvY2tldCk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KHdlYlNvY2tldCk7Cit9CisKIHZvaWQgV2ViU29ja2V0Ojpjb25uZWN0KGNvbnN0IFN0cmluZyYg
dXJsLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBWZWN0b3I8U3RyaW5nPiBwcm90b2NvbHM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oIGIvU291
cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAppbmRleCBiODYwYjc1Li5jYWU1N2Qy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKQEAgLTUzLDcgKzUzLDcgQEAg
Y2xhc3MgV2ViU29ja2V0IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViU29ja2V0PiwgcHVibGljIEV2
ZW50VGFyZ2V0LCBwdWJsaWMgQWN0aXYKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBzZXRJc0F2
YWlsYWJsZShib29sKTsKICAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgpOwotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFdlYlNvY2tldD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJTb2NrZXQoY29udGV4dCkpOyB9CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8V2ViU29ja2V0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCopOwogICAgIHZpcnR1YWwgfldlYlNvY2tldCgpOwogCiAgICAgZW51bSBTdGF0ZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5jcHAKaW5kZXggZmYwNzkyYy4uZGYwYjQzNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmNwcApAQCAtNjQsNiArNjQsNyBA
QCBQYXNzUmVmUHRyPFNoYXJlZFdvcmtlcj4gU2hhcmVkV29ya2VyOjpjcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgYwogCiAgICAgU2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6
Y29ubmVjdCh3b3JrZXIuZ2V0KCksIHJlbW90ZVBvcnQucmVsZWFzZSgpLCBzY3JpcHRVUkwsIG5h
bWUsIGVjKTsKIAorICAgIGNvbnRleHQtPmRpZEluc3RhbGxBY3RpdmVET01PYmplY3Qod29ya2Vy
LmdldCgpKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdvcmtlcihj
b250ZXh0LCB3b3JrZXItPmFzSUQoKSwgc2NyaXB0VVJMLnN0cmluZygpLCB0cnVlKTsKIAogICAg
IHJldHVybiB3b3JrZXIucmVsZWFzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCmluZGV4
IGIzMjM2YTcuLjc3NDZjZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAKQEAgLTczLDYg
KzczLDcgQEAgUGFzc1JlZlB0cjxXb3JrZXI+IFdvcmtlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYKICNlbmRpZgogICAgIHdvcmtlci0+bV9z
Y3JpcHRMb2FkZXItPmxvYWRBc3luY2hyb25vdXNseShjb250ZXh0LCBzY3JpcHRVUkwsIERlbnlD
cm9zc09yaWdpblJlcXVlc3RzLCB3b3JrZXIuZ2V0KCkpOwogCisgICAgY29udGV4dC0+ZGlkSW5z
dGFsbEFjdGl2ZURPTU9iamVjdCh3b3JrZXIuZ2V0KCkpOwogICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkQ3JlYXRlV29ya2VyKGNvbnRleHQsIHdvcmtlci0+YXNJRCgpLCBzY3JpcHRV
Ukwuc3RyaW5nKCksIGZhbHNlKTsKIAogICAgIHJldHVybiB3b3JrZXIucmVsZWFzZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggNmJlNThhYS4uMGYxOWE1ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0xNTQsNyArMTU0LDEwIEBAIHN0
YXRpYyB2b2lkIGxvZ0NvbnNvbGVFcnJvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBjb25zdCBTdHJpbmcmIG1lc3NhCiAKIFBhc3NSZWZQdHI8WE1MSHR0cFJlcXVlc3Q+IFhNTEh0
dHBSZXF1ZXN0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1Jl
ZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4pCiB7Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBYTUxIdHRwUmVxdWVzdChjb250ZXh0LCBzZWN1cml0eU9yaWdpbikpOworICAgIFhN
TEh0dHBSZXF1ZXN0KiB4bWxIdHRwUmVxdWVzdCA9IG5ldyBYTUxIdHRwUmVxdWVzdChjb250ZXh0
LCBzZWN1cml0eU9yaWdpbik7CisgICAgY29udGV4dC0+ZGlkSW5zdGFsbEFjdGl2ZURPTU9iamVj
dCh4bWxIdHRwUmVxdWVzdCk7CisKKyAgICByZXR1cm4gYWRvcHRSZWYoeG1sSHR0cFJlcXVlc3Qp
OwogfQogCiBYTUxIdHRwUmVxdWVzdDo6WE1MSHR0cFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4p
Cg==
</data>
<flag name="commit-queue"
          id="125824"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124548</attachid>
            <date>2012-01-30 07:34:34 -0800</date>
            <delta_ts>2012-01-31 04:12:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Bug53733-patch8</filename>
            <type>text/plain</type>
            <size>31864</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlNTg4MDkyLi5iYWJjMWY3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDEt
MzAgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+CisKKyAg
ICAgICAgVGVzdCB0aGF0IHRpbWVycyBkbyBub3QgZmlyZSBmcm9tIHN1YmZyYW1lcyBvZiBzdXNw
ZW5kZWQgZG9jdW1lbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTM3MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGZhc3QvZXZlbnRzL3Jlc291cmNlcy9zdXNwZW5kLXN1YmZyYW1lLTEuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvcmVzb3VyY2VzL3N1c3BlbmQtc3ViZnJhbWUt
Mi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9zdXNwZW5kLXRpbWVycy1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3N1c3BlbmQtdGltZXJzLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25z
LnR4dDoKKwogMjAxMi0wMS0yNyAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5Acmlt
LmNvbT4KIAogICAgICAgICA8ZmVJbWFnZT4gRE9NIG11dGF0aW9uIHByb2JsZW1zCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZXNvdXJjZXMvc3VzcGVuZC1zdWJmcmFtZS0x
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZXNvdXJjZXMvc3VzcGVuZC1zdWJmcmFt
ZS0xLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTFiYThlYQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Jlc291cmNlcy9zdXNwZW5k
LXN1YmZyYW1lLTEuaHRtbApAQCAtMCwwICsxLDE2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+CisgICAgPHNjcmlwdD4KKyAgICAgICAgZnVuY3Rpb24gdGVzdCgpIHsKKyAgICAg
ICAgICAgIHdpbmRvdy50b3AuY29uc29sZS5sb2coJ1RpbWVvdXQgaW4gc3ViZnJhbWUtMSBjcmVh
dGVkJyk7CisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
ICAgIGFsZXJ0KCdUaW1lb3V0IGNyZWF0ZWQgaW4gc3ViZnJhbWUtMS5odG1sIGZpcmVkJyk7Cisg
ICAgICAgICAgICB9LCA1MCk7CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorSSBhbSBzdWJmcmFtZS0xLmh0bWwKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Jlc291cmNlcy9zdXNwZW5kLXN1YmZyYW1lLTIuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Jlc291cmNlcy9zdXNwZW5kLXN1YmZyYW1lLTIu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTNiMmVlCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcmVzb3VyY2VzL3N1c3BlbmQtc3Vi
ZnJhbWUtMi5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKwk8c2NyaXB0PgorCW9ucGFnZWhpZGUgPSBmdW5jdGlvbigpIHsKKwkgIHdpbmRvdy50
b3AuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2EtZnJhbWUnKS5jb250ZW50V2luZG93LnRlc3Qo
KTsKKwl9CisJPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KK0kgYW0gc3ViZnJhbWUtMi5odG1s
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9z
dXNwZW5kLXRpbWVycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zdXNw
ZW5kLXRpbWVycy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uODU5Nzc0ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3N1
c3BlbmQtdGltZXJzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBACitDT05TT0xFIE1FU1NB
R0U6IGxpbmUgNjogVGltZW91dCBpbiBzdWJmcmFtZS0xIGNyZWF0ZWQKK0NPTlNPTEUgTUVTU0FH
RTogbGluZSA1OiBMb2FkZWQgcGFnZWhpZGUtdGltZW91dC1nby1iYWNrLmh0bWwsIGdvaW5nIGJh
Y2sKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAzMTogUmVzdG9yZWQgcGFnZSBmcm9tIHBhZ2UgY2Fj
aGUuCitBTEVSVDogVGltZW91dCBjcmVhdGVkIGluIHN1YmZyYW1lLTEuaHRtbCBmaXJlZAorVGVz
dHMgdGhhdCBhbGwgSlMgdGltZXJzIGFyZSBzdXNwZW5kZWQgYWZ0ZXIgdGhlIHBhZ2VoaWRlIGV2
ZW50IGlzIGZpcmVkLCBzbyB0aGF0IHRpbWVycyBjcmVhdGVkIHdpdGhpbiBpdCB3aWxsIG5vdCBm
aXJlIHdoaWxlIHRoZSBkb2N1bWVudCBpcyBpbiB0aGUgcGFnZSBjYWNoZS4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zdXNw
ZW5kLXRpbWVycy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3VzcGVuZC10aW1lcnMu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjdlZTc0Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3VzcGVuZC10aW1lcnMuaHRtbApA
QCAtMCwwICsxLDUzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+
U3VzcGVuZCB0aW1lcnMgb24gbmF2aWdhdGU8L3RpdGxlPgorPHN0eWxlPgorICAgIGlmcmFtZSB7
CisgICAgICBkaXNwbGF5OiBibG9jazsKKyAgICAgIGJvcmRlcjogc29saWQgMXB4ICNjY2M7Cisg
ICAgICBtYXJnaW46IDFlbTsKKyAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgIGhlaWdodDogMjAw
cHg7CisgICAgfQorPC9zdHlsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisKKzxpZnJhbWUg
c3JjPSJyZXNvdXJjZXMvc3VzcGVuZC1zdWJmcmFtZS0xLmh0bWwiIGlkPSJhLWZyYW1lIj48L2lm
cmFtZT4gPGlmcmFtZSBzcmM9InJlc291cmNlcy9zdXNwZW5kLXN1YmZyYW1lLTIuaHRtbCIgaWQ9
ImItZnJhbWUiPjwvaWZyYW1lPgorCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Citk
ZXNjcmlwdGlvbignVGVzdHMgdGhhdCBhbGwgSlMgdGltZXJzIGFyZSBzdXNwZW5kZWQgYWZ0ZXIg
dGhlIHBhZ2VoaWRlIGV2ZW50IGlzIGZpcmVkLCBzbyB0aGF0IHRpbWVycyBjcmVhdGVkIHdpdGhp
biBpdCB3aWxsIG5vdCBmaXJlIHdoaWxlIHRoZSBkb2N1bWVudCBpcyBpbiB0aGUgcGFnZSBjYWNo
ZS4nKTsKKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoJ1dlYktpdFVzZXNQYWdlQ2FjaGVQcmVmZXJl
bmNlS2V5JywgMSk7CisKKworb25wYWdlc2hvdyA9IGZ1bmN0aW9uKGV2ZW50KQoreworICAgIGlm
IChldmVudC5wZXJzaXN0ZWQpIHsKKyAgICAgICAgY29uc29sZS5sb2coJ1Jlc3RvcmVkIHBhZ2Ug
ZnJvbSBwYWdlIGNhY2hlLicpOworICAgICAgICBpZiAoIXdpbmRvdy53YXNGaW5pc2hKU1Rlc3RD
YWxsZWQpIHsKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICB9LCAyMDApOworICAgICAgICB9Cisg
ICAgfQorfQorCitvbmxvYWQgPSBmdW5jdGlvbigpCit7CisgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsKKyAgICAgICAgbG9jYXRpb24uaHJlZiA9ICdyZXNvdXJjZXMvcGFnZWhpZGUtdGltZW91
dC1nby1iYWNrLmh0bWwnOworICAgIH0sIDEwKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7Cit2YXIganNUZXN0SXNBc3luYyA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVz
dF9leHBlY3RhdGlvbnMudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9l
eHBlY3RhdGlvbnMudHh0CmluZGV4IDQxZTY1NjcuLjIwZTRiM2UgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKQEAgLTIwNyw2
ICsyMDcsNyBAQCBXT05URklYIFNLSVAgOiBmYXN0L2RvbS9XaW5kb3cvdGltZXItcmVzdW1lLW9u
LW5hdmlnYXRpb24tYmFjay5odG1sID0gVElNRU9VVCBGQQogV09OVEZJWCBTS0lQIDogZmFzdC9l
dmVudHMvcGFnZWhpZGUtdGltZW91dC5odG1sID0gVElNRU9VVAogV09OVEZJWCBTS0lQIDogZmFz
dC9ldmVudHMvcGFnZXNob3ctcGFnZWhpZGUtb24tYmFjay1jYWNoZWQuaHRtbCA9IFRJTUVPVVQg
RkFJTAogV09OVEZJWCBTS0lQIDogZmFzdC9ldmVudHMvcGFnZXNob3ctcGFnZWhpZGUtb24tYmFj
ay1jYWNoZWQtd2l0aC1mcmFtZXMuaHRtbCA9IFRJTUVPVVQKK1dPTlRGSVggU0tJUCA6IGZhc3Qv
ZXZlbnRzL3N1c3BlbmQtdGltZXJzLmh0bWwgPSBUSU1FT1VUCiBXT05URklYIFNLSVAgOiBtZWRp
YS9yZXN0b3JlLWZyb20tcGFnZS1jYWNoZS5odG1sID0gVElNRU9VVAogV09OVEZJWCBTS0lQIDog
bG9hZGVyL2dvLWJhY2stdG8tZGlmZmVyZW50LXdpbmRvdy1zaXplLmh0bWwgPSBUSU1FT1VUIFRF
WFQKIFdPTlRGSVggU0tJUCA6IGZhc3QvbG9hZGVyL2NyYXNoLWNvcHlpbmctYmFja2ZvcndhcmRs
aXN0Lmh0bWwgPSBURVhUCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjRiYWYxOS4uYjVmNDk0MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDgzIEBACisyMDEyLTAxLTMwICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxh
bGxhbi5qZW5zZW5Abm9raWEuY29tPgorCisgICAgICAgIEVuc3VyZSB0aW1lcnMgYW5kIG90aGVy
IGFjdGl2ZSBET00gb2JqZWN0cyBkbyBub3QgZmlyZSBpbiBzdXNwZW5kZWQgZG9jdW1lbnRzLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTM3MzMKKwor
ICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0IG5vdyByZW1lbWJlcnMgaXQgaGFzIHN1c3Bl
bmRlZCBhY3RpdmUgRE9NIG9iamVjdHMKKyAgICAgICAgYW5kIHN1c3BlbmRzIGFsbCBuZXdseSBp
bnN0YWxsZWQgYWN0aXZlIERPTSBvYmplY3RzIGFzIHdlbGwuCisKKyAgICAgICAgQWxsIGNyZWF0
ZS1jYWxscyBhY3RpdmUgRE9NIG9iamVjdHMgbm93IGNhbGxzIGEgcG9zdC1jb25zdHJ1Y3RvciBt
ZXRob2Qgb24KKyAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCB0aGF0IHVwZGF0ZXMgdGhl
IHN1c3BlbmQgc3RhdGUuIEl0IGlzIHBvc3QgY29uc3RydWN0b3IKKyAgICAgICAgYmVjYXVzZSB0
aGUgc3VzcGVuZC9yZXN1bWUgZnVuY3Rpb25zIGFyZSB2aXJ0dWFsIGFuZCB0aHVzIGNhbiBub3Qg
YmUgY2FsbGVkCisgICAgICAgIGZyb20gY29uc3RydWN0b3JzLgorICAgICAgICBIVE1MIGVsZW1l
bnRzIHRoYXQgYXJlIGFsc28gYWN0aXZlIERPTSBvYmplY3RzIGNhbGxzIHRoZSBwb3N0LWNvbnN0
cnVjdG9yCisgICAgICAgIGZyb20gaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKS4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBmYXN0L2V2ZW50cy9z
dXNwZW5kLXRpbWVycy5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL2ludGVudHMvSW50ZW50UmVx
dWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlbnRSZXF1ZXN0OjpjcmVhdGUpOgorICAg
ICAgICAqIGJpbmRpbmdzL2dlbmVyaWMvQWN0aXZlRE9NQ2FsbGJhY2suY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QWN0aXZlRE9NQ2FsbGJhY2s6OkFjdGl2ZURPTUNhbGxiYWNrKToKKyAgICAgICAg
KiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6On5TY3JpcHRFeGVjdXRpb25Db250ZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNhblN1c3BlbmRBY3Rp
dmVET01PYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OnN1c3BlbmRBY3RpdmVET01PYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OnJlc3VtZUFjdGl2ZURPTU9iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZGlkSW5zdGFsbEFjdGl2ZURPTU9iamVjdCk6CisgICAg
ICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmFjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQpOgorICAg
ICAgICAqIGZpbGVhcGkvRE9NRmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01G
aWxlU3lzdGVtOjpjcmVhdGUpOgorICAgICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWxlUmVhZGVyOjpjcmVhdGUpOgorICAgICAgICAqIGZpbGVhcGkv
RmlsZVJlYWRlci5oOgorICAgICAgICAqIGZpbGVhcGkvRmlsZVdyaXRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGaWxlV3JpdGVyOjpjcmVhdGUpOgorICAgICAgICAqIGZpbGVhcGkvRmlsZVdy
aXRlci5oOgorICAgICAgICAqIGhpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkRnJhbWU6OkNhY2hlZEZyYW1lKToKKyAgICAgICAgKiBodG1sL0hUTUxNYXJx
dWVlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWFycXVlZUVsZW1lbnQ6Omlu
c2VydGVkSW50b0RvY3VtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxNYXJxdWVlRWxlbWVudC5o
OgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCk6CisgICAgICAgICogbWVk
aWFzdHJlYW0vUGVlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5l
Y3Rpb246OmNyZWF0ZSk6CisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIG5v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5v
dGlmaWNhdGlvbkNlbnRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvbkNlbnRlci5oOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2VudGVyOjpj
cmVhdGVIVE1MTm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBwYWdlL0RPTVRpbWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRPTVRpbWVyOjppbnN0YWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkRP
TVRpbWVyOjpmaXJlZCk6CisgICAgICAgICogcGFnZS9FdmVudFNvdXJjZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudFNvdXJjZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWdlL1N1c3BlbmRh
YmxlVGltZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VzcGVuZGFibGVUaW1lcjo6U3VzcGVu
ZGFibGVUaW1lcik6CisgICAgICAgICogc3RvcmFnZS9JREJEYXRhYmFzZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJREJEYXRhYmFzZTo6Y3JlYXRlKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQlJl
cXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6Y3JlYXRlKToKKyAgICAg
ICAgKiBzdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRy
YW5zYWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHdlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmNyZWF0ZSk6CisgICAgICAgICogd2Vi
c29ja2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpjcmVh
dGUpOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0Lmg6CisgICAgICAgICogd29ya2Vy
cy9TaGFyZWRXb3JrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyOjpjcmVh
dGUpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlcjo6Y3JlYXRlKToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZSk6CisKIDIwMTItMDEtMjYgIFZzZXZv
bG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3Rv
cjogU2NyaXB0cyBwYW5lbDogZml4IGV2ZW50IGRpc3BhdGNoaW5nIGJldHdlZW4gRmlsZVNlbGVj
dG9yIGFuZCBFZGl0b3JDb250YWluZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ludGVudHMvSW50ZW50UmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
dGVudHMvSW50ZW50UmVxdWVzdC5jcHAKaW5kZXggMjk2ZjNkZC4uMGJjODllZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0ludGVudFJlcXVlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnRSZXF1ZXN0LmNwcApAQCAtNDEs
NyArNDEsOSBAQCBQYXNzUmVmUHRyPEludGVudFJlcXVlc3Q+IEludGVudFJlcXVlc3Q6OmNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxJbnRlbnRSZXN1bHRDYWxsYmFj
az4gc3VjY2Vzc0NhbGxiYWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUGFzc1JlZlB0cjxJbnRlbnRSZXN1bHRDYWxsYmFjaz4gZXJyb3JDYWxsYmFj
aykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEludGVudFJlcXVlc3QoY29udGV4dCwgaW50
ZW50LCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKTsKKyAgICBJbnRlbnRSZXF1ZXN0
KiBpbnRlbnRSZXF1ZXN0ID0gbmV3IEludGVudFJlcXVlc3QoY29udGV4dCwgaW50ZW50LCBzdWNj
ZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spOworICAgIGNvbnRleHQtPmRpZEluc3RhbGxBY3Rp
dmVET01PYmplY3QoaW50ZW50UmVxdWVzdCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKGludGVudFJl
cXVlc3QpOwogfQogCiBJbnRlbnRSZXF1ZXN0OjpJbnRlbnRSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9n
ZW5lcmljL0FjdGl2ZURPTUNhbGxiYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dl
bmVyaWMvQWN0aXZlRE9NQ2FsbGJhY2suY3BwCmluZGV4IGZmMDJhNDIuLmJkNDdjMTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvQWN0aXZlRE9NQ2FsbGJhY2su
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvQWN0aXZlRE9NQ2FsbGJh
Y2suY3BwCkBAIC0xMjIsNiArMTIyLDcgQEAgc3RhdGljIHZvaWQgZGVzdHJveU9uQ29udGV4dFRo
cmVhZChQYXNzT3duUHRyPEFjdGl2ZURPTU9iamVjdENhbGxiYWNrSW1wbD4gaW1wbCkKIEFjdGl2
ZURPTUNhbGxiYWNrOjpBY3RpdmVET01DYWxsYmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0KQogICAgIDogbV9pbXBsKGFkb3B0UHRyKG5ldyBBY3RpdmVET01PYmplY3RDYWxsYmFj
a0ltcGwoY29udGV4dCkpKQogeworICAgIGNvbnRleHQtPmRpZEluc3RhbGxBY3RpdmVET01PYmpl
Y3QobV9pbXBsLmdldCgpKTsKIH0KIAogQWN0aXZlRE9NQ2FsbGJhY2s6On5BY3RpdmVET01DYWxs
YmFjaygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAK
aW5kZXggZWYwNmMyOS4uZTk1ODkzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0LmNwcApAQCAtOTIsNiArOTIsNyBAQCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkKICAgICA6IG1faXRlcmF0aW5nQWN0aXZlRE9N
T2JqZWN0cyhmYWxzZSkKICAgICAsIG1faW5EZXN0cnVjdG9yKGZhbHNlKQogICAgICwgbV9pbkRp
c3BhdGNoRXJyb3JFdmVudChmYWxzZSkKKyAgICAsIG1fYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3Bl
bmRlZChmYWxzZSkKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogICAgICwgbV9oYXNPcGVuRGF0
YWJhc2VzKGZhbHNlKQogI2VuZGlmCkBAIC0xMDEsNyArMTAyLDYgQEAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0
Ojp+U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpCiB7CiAgICAgbV9pbkRlc3RydWN0b3IgPSB0cnVl
OwotCiAgICAgZm9yIChIYXNoU2V0PENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKj46Oml0ZXJh
dG9yIGl0ZXIgPSBtX2Rlc3RydWN0aW9uT2JzZXJ2ZXJzLmJlZ2luKCk7IGl0ZXIgIT0gbV9kZXN0
cnVjdGlvbk9ic2VydmVycy5lbmQoKTsgaXRlciA9IG1fZGVzdHJ1Y3Rpb25PYnNlcnZlcnMuYmVn
aW4oKSkgewogICAgICAgICBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciogb2JzZXJ2ZXIgPSAq
aXRlcjsKICAgICAgICAgbV9kZXN0cnVjdGlvbk9ic2VydmVycy5yZW1vdmUob2JzZXJ2ZXIpOwpA
QCAtMjEwLDcgKzIxMCw3IEBAIGJvb2wgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6Y2FuU3VzcGVu
ZEFjdGl2ZURPTU9iamVjdHMoKQogICAgICAgICAgICAgbV9pdGVyYXRpbmdBY3RpdmVET01PYmpl
Y3RzID0gZmFsc2U7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KLSAgICB9
ICAgIAorICAgIH0KICAgICBtX2l0ZXJhdGluZ0FjdGl2ZURPTU9iamVjdHMgPSBmYWxzZTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTIyNSwxMCArMjI1LDEzIEBAIHZvaWQgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6c3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoQWN0aXZlRE9NT2JqZWN0OjpSZWFz
b25Gb3JTCiAgICAgICAgIGl0ZXItPmZpcnN0LT5zdXNwZW5kKHdoeSk7CiAgICAgfQogICAgIG1f
aXRlcmF0aW5nQWN0aXZlRE9NT2JqZWN0cyA9IGZhbHNlOworICAgIG1fYWN0aXZlRE9NT2JqZWN0
c0FyZVN1c3BlbmRlZCA9IHRydWU7CisgICAgbV9zdXNwZW5kUmVhc29uID0gd2h5OwogfQogCiB2
b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnJlc3VtZUFjdGl2ZURPTU9iamVjdHMoKQogewor
ICAgIG1fYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCA9IGZhbHNlOwogICAgIC8vIE5vIHBy
b3RlY3Rpb24gYWdhaW5zdCBtX2FjdGl2ZURPTU9iamVjdHMgY2hhbmdpbmcgZHVyaW5nIGl0ZXJh
dGlvbjogcmVzdW1lKCkgc2hvdWxkbid0IGV4ZWN1dGUgYXJiaXRyYXJ5IEpTLgogICAgIG1faXRl
cmF0aW5nQWN0aXZlRE9NT2JqZWN0cyA9IHRydWU7CiAgICAgSGFzaE1hcDxBY3RpdmVET01PYmpl
Y3QqLCB2b2lkKj46Oml0ZXJhdG9yIGFjdGl2ZU9iamVjdHNFbmQgPSBtX2FjdGl2ZURPTU9iamVj
dHMuZW5kKCk7CkBAIC0yNTQsNiArMjU3LDE0IEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6c3RvcEFjdGl2ZURPTU9iamVjdHMoKQogICAgIGNsb3NlTWVzc2FnZVBvcnRzKCk7CiB9CiAK
K3ZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZGlkSW5zdGFsbEFjdGl2ZURPTU9iamVjdChB
Y3RpdmVET01PYmplY3QqIG9iamVjdCkKK3sKKyAgICBBU1NFUlQobV9hY3RpdmVET01PYmplY3Rz
LmNvbnRhaW5zKG9iamVjdCkpOworICAgIC8vIEVuc3VyZSBhbGwgQWN0aXZlRE9NT2JqZWN0cyBh
cmUgc3VzcGVuZGVkIGFsc28gbmV3bHkgY3JlYXRlZCBvbmVzLgorICAgIGlmIChtX2FjdGl2ZURP
TU9iamVjdHNBcmVTdXNwZW5kZWQpCisgICAgICAgIG9iamVjdC0+c3VzcGVuZChtX3N1c3BlbmRS
ZWFzb24pOworfQorCiB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmRpZENyZWF0ZUFjdGl2
ZURPTU9iamVjdChBY3RpdmVET01PYmplY3QqIG9iamVjdCwgdm9pZCogdXBjYXN0UG9pbnRlcikK
IHsKICAgICBBU1NFUlQob2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oCmluZGV4IGFlZDM0MTEuLmQwMDAwYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtMTAzLDkgKzEwMywxNSBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHJlc3VtZUFjdGl2ZURPTU9iamVjdHMoKTsKICAgICB2aXJ0dWFs
IHZvaWQgc3RvcEFjdGl2ZURPTU9iamVjdHMoKTsKIAorICAgIGJvb2wgYWN0aXZlRE9NT2JqZWN0
c0FyZVN1c3BlbmRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3Bl
bmRlZDsgfQorCisgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVj
dG9ycyBvZiBBY3RpdmVET01PYmplY3QKICAgICB2b2lkIGRpZENyZWF0ZUFjdGl2ZURPTU9iamVj
dChBY3RpdmVET01PYmplY3QqLCB2b2lkKiB1cGNhc3RQb2ludGVyKTsKICAgICB2b2lkIHdpbGxE
ZXN0cm95QWN0aXZlRE9NT2JqZWN0KEFjdGl2ZURPTU9iamVjdCopOwogCisgICAgLy8gQ2FsbGVk
IGFmdGVyIHRoZSBjb25zdHJ1Y3Rpb24gb2YgYW4gQWN0aXZlRE9NT2JqZWN0CisgICAgdm9pZCBk
aWRJbnN0YWxsQWN0aXZlRE9NT2JqZWN0KEFjdGl2ZURPTU9iamVjdCopOworCiAgICAgdHlwZWRl
ZiBjb25zdCBIYXNoTWFwPEFjdGl2ZURPTU9iamVjdCosIHZvaWQqPiBBY3RpdmVET01PYmplY3Rz
TWFwOwogICAgIEFjdGl2ZURPTU9iamVjdHNNYXAmIGFjdGl2ZURPTU9iamVjdHMoKSBjb25zdCB7
IHJldHVybiBtX2FjdGl2ZURPTU9iamVjdHM7IH0KIApAQCAtMjA2LDYgKzIxMiw5IEBAIHByaXZh
dGU6CiAgICAgY2xhc3MgUGVuZGluZ0V4Y2VwdGlvbjsKICAgICBPd25QdHI8VmVjdG9yPE93blB0
cjxQZW5kaW5nRXhjZXB0aW9uPiA+ID4gbV9wZW5kaW5nRXhjZXB0aW9uczsKIAorICAgIGJvb2wg
bV9hY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkOworICAgIEFjdGl2ZURPTU9iamVjdDo6UmVh
c29uRm9yU3VzcGVuc2lvbiBtX3N1c3BlbmRSZWFzb247CisKICNpZiBFTkFCTEUoU1FMX0RBVEFC
QVNFKQogICAgIFJlZlB0cjxEYXRhYmFzZVRocmVhZD4gbV9kYXRhYmFzZVRocmVhZDsKICAgICBi
b29sIG1faGFzT3BlbkRhdGFiYXNlczsgLy8gVGhpcyBuZXZlciBjaGFuZ2VzIGJhY2sgdG8gZmFs
c2UsIGV2ZW4gYWZ0ZXIgdGhlIGRhdGFiYXNlIHRocmVhZCBpcyBjbG9zZWQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNwcAppbmRleCBhYzM4NjkwLi5jOGVkNDJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbS5jcHAKQEAgLTU2LDYgKzU2LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBET01GaWxlU3lz
dGVtOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gYXN5bmNGaWxlU3lzdGVtKQogewog
ICAgIFJlZlB0cjxET01GaWxlU3lzdGVtPiBmaWxlU3lzdGVtKGFkb3B0UmVmKG5ldyBET01GaWxl
U3lzdGVtKGNvbnRleHQsIG5hbWUsIGFzeW5jRmlsZVN5c3RlbSkpKTsKKyAgICBjb250ZXh0LT5k
aWRJbnN0YWxsQWN0aXZlRE9NT2JqZWN0KGZpbGVTeXN0ZW0uZ2V0KCkpOwogICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkT3BlbkZpbGVTeXN0ZW0oZmlsZVN5c3RlbS5nZXQoKSk7CiAg
ICAgcmV0dXJuIGZpbGVTeXN0ZW07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0ZpbGVSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNw
cAppbmRleCAyOWM1OTg0Li45ZTk2YzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0ZpbGVSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRl
ci5jcHAKQEAgLTQ4LDYgKzQ4LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNv
bnN0IGRvdWJsZSBwcm9ncmVzc05vdGlmaWNhdGlvbkludGVydmFsTVMgPSA1MDsKIAorUGFzc1Jl
ZlB0cjxGaWxlUmVhZGVyPiBGaWxlUmVhZGVyOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCkKK3sKKyAgICBGaWxlUmVhZGVyKiBmaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFk
ZXIoY29udGV4dCk7CisgICAgY29udGV4dC0+ZGlkSW5zdGFsbEFjdGl2ZURPTU9iamVjdChmaWxl
UmVhZGVyKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoZmlsZVJlYWRlcik7Cit9CisKIEZpbGVSZWFk
ZXI6OkZpbGVSZWFkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICA6IEFj
dGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQogICAgICwgbV9zdGF0ZShFTVBUWSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlUmVhZGVyLmgKaW5kZXggODA0ZGQyOS4uZWNkZDQ4NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlUmVhZGVyLmgKQEAgLTUxLDEwICs1MSw3IEBAIHR5cGVkZWYgaW50IEV4
Y2VwdGlvbkNvZGU7CiAKIGNsYXNzIEZpbGVSZWFkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxGaWxl
UmVhZGVyPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJs
aWMgRmlsZVJlYWRlckxvYWRlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8RmlsZVJlYWRlcj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCi0g
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZpbGVSZWFkZXIoY29udGV4dCkpOwot
ICAgIH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxGaWxlUmVhZGVyPiBjcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCopOwogCiAgICAgdmlydHVhbCB+RmlsZVJlYWRlcigpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVXcml0ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlV3JpdGVyLmNwcAppbmRleCAyYjI1Y2ZhLi40MzZlOGY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVXcml0ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZVdyaXRlci5jcHAKQEAgLTQ1LDYgKzQ1LDEzIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IGludCBrTWF4UmVjdXJzaW9uRGVwdGggPSAzOwog
CitQYXNzUmVmUHRyPEZpbGVXcml0ZXI+IEZpbGVXcml0ZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0KQoreworICAgIEZpbGVXcml0ZXIqIGZpbGVXcml0ZXIgPSBuZXcg
RmlsZVdyaXRlcihjb250ZXh0KTsKKyAgICBjb250ZXh0LT5kaWRJbnN0YWxsQWN0aXZlRE9NT2Jq
ZWN0KGZpbGVXcml0ZXIpOworICAgIHJldHVybiBhZG9wdFJlZihmaWxlV3JpdGVyKTsKK30KKwog
RmlsZVdyaXRlcjo6RmlsZVdyaXRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQog
ICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCiAgICAgLCBtX3JlYWR5U3RhdGUo
SU5JVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVdyaXRlci5oIGIv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlV3JpdGVyLmgKaW5kZXggMmI1OTdhMS4uOTQ2MTM1
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlV3JpdGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlV3JpdGVyLmgKQEAgLTQ4LDEwICs0OCw3IEBAIGNs
YXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKIGNsYXNzIEZpbGVXcml0ZXIgOiBwdWJsaWMg
RmlsZVdyaXRlckJhc2UsIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBFdmVudFRhcmdl
dCwgcHVibGljIEFzeW5jRmlsZVdyaXRlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8RmlsZVdyaXRlcj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZpbGVXcml0ZXIoY29udGV4
dCkpOwotICAgIH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxGaWxlV3JpdGVyPiBjcmVhdGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCopOwogCiAgICAgZW51bSBSZWFkeVN0YXRlIHsKICAgICAgICAg
SU5JVCA9IDAsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1l
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwCmluZGV4IDYwZmFi
MDQuLjliMGQyZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJh
bWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwCkBAIC0x
NjgsNyArMTY4LDYgQEAgQ2FjaGVkRnJhbWU6OkNhY2hlZEZyYW1lKEZyYW1lKiBmcmFtZSkKICAg
ICAvLyBidXQgYWZ0ZXIgd2UndmUgZmlyZWQgdGhlIHBhZ2VoaWRlIGV2ZW50LCBpbiBjYXNlIHRo
YXQgY3JlYXRlcyBtb3JlIG9iamVjdHMuCiAgICAgLy8gU3VzcGVuZGluZyBtdXN0IGFsc28gaGFw
cGVuIGFmdGVyIHdlJ3ZlIHJlY3Vyc2VkIG92ZXIgY2hpbGQgZnJhbWVzLCBpbiBjYXNlCiAgICAg
Ly8gdGhvc2UgY3JlYXRlIG1vcmUgb2JqZWN0cy4KLSAgICAvLyBGSVhNRTogSXQncyBzdGlsbCBw
b3NzaWJsZSB0byBoYXZlIG9iamVjdHMgY3JlYXRlZCBhZnRlciBzdXNwZW5kaW5nIGluIHNvbWUg
Y2FzZXMsIHNlZSBodHRwOi8vd2Via2l0Lm9yZy9iLzUzNzMzIGZvciBtb3JlIGRldGFpbHMuCiAg
ICAgbV9kb2N1bWVudC0+ZG9jdW1lbnRXaWxsU3VzcGVuZEZvclBhZ2VDYWNoZSgpOwogICAgIG1f
ZG9jdW1lbnQtPnN1c3BlbmRTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXJDYWxsYmFja3MoKTsK
ICAgICBtX2RvY3VtZW50LT5zdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyhBY3RpdmVET01PYmplY3Q6
OkRvY3VtZW50V2lsbEJlY29tZUluYWN0aXZlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1h
cnF1ZWVFbGVtZW50LmNwcAppbmRleCAwNTNmZmE4Li42MmU1ODM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuY3BwCkBAIC0xNzgsNiArMTc4LDEyIEBAIGJvb2wg
SFRNTE1hcnF1ZWVFbGVtZW50OjpjYW5TdXNwZW5kKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAordm9pZCBIVE1MTWFycXVlZUVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCkKK3sK
KyAgICBkb2N1bWVudCgpLT5kaWRJbnN0YWxsQWN0aXZlRE9NT2JqZWN0KHRoaXMpOworICAgIEhU
TUxFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpOworfQorCiB2b2lkIEhUTUxNYXJxdWVl
RWxlbWVudDo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKQogewogICAgIGlmIChSZW5kZXJN
YXJxdWVlKiBtYXJxdWVlUmVuZGVyZXIgPSByZW5kZXJNYXJxdWVlKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuaAppbmRleCA1ODZhYTZmLi5mNDk5YmViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmgKQEAgLTU2LDYgKzU2LDggQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgbWFwVG9FbnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiwg
TWFwcGVkQXR0cmlidXRlRW50cnkmKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBw
ZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAKKyAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRv
RG9jdW1lbnQoKTsKKwogICAgIC8vIEFjdGl2ZURPTU9iamVjdAogICAgIHZpcnR1YWwgYm9vbCBj
YW5TdXNwZW5kKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHN1c3BlbmQoUmVhc29uRm9yU3Vz
cGVuc2lvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBj
YzVjMjY0Li5jZGU5MmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAKQEAgLTQ2Niw2ICs0NjYsNyBAQCBSZW5kZXJPYmplY3QqIEhUTUxNZWRpYUVsZW1lbnQ6OmNy
ZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQogdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpCiB7CiAgICAgTE9HKE1lZGlhLCAi
SFRNTE1lZGlhRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQiKTsKKyAgICBkb2N1bWVudCgp
LT5kaWRJbnN0YWxsQWN0aXZlRE9NT2JqZWN0KHRoaXMpOwogICAgIEhUTUxFbGVtZW50OjppbnNl
cnRlZEludG9Eb2N1bWVudCgpOwogICAgIGlmICghZ2V0QXR0cmlidXRlKHNyY0F0dHIpLmlzRW1w
dHkoKSAmJiBtX25ldHdvcmtTdGF0ZSA9PSBORVRXT1JLX0VNUFRZKQogICAgICAgICBzY2hlZHVs
ZUxvYWQoTWVkaWFSZXNvdXJjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0
cmVhbS9QZWVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9QZWVy
Q29ubmVjdGlvbi5jcHAKaW5kZXggZTU0NDQ3YS4uNDNkOTgxNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uLmNwcApAQCAtNDEsNiArNDEsNyBAQCBQYXNz
UmVmUHRyPFBlZXJDb25uZWN0aW9uPiBQZWVyQ29ubmVjdGlvbjo6Y3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleAogICAgIFJlZlB0cjxQZWVyQ29ubmVjdGlvbj4gY29ubmVjdGlv
biA9IGFkb3B0UmVmKG5ldyBQZWVyQ29ubmVjdGlvbihjb250ZXh0LCBzZXJ2ZXJDb25maWd1cmF0
aW9uLCBzaWduYWxpbmdDYWxsYmFjaykpOwogICAgIGNvbm5lY3Rpb24tPnNldFBlbmRpbmdBY3Rp
dml0eShjb25uZWN0aW9uLmdldCgpKTsKICAgICBjb25uZWN0aW9uLT5zY2hlZHVsZUluaXRpYWxO
ZWdvdGlhdGlvbigpOworICAgIGNvbnRleHQtPmRpZEluc3RhbGxBY3RpdmVET01PYmplY3QoY29u
bmVjdGlvbi5nZXQoKSk7CiAKICAgICByZXR1cm4gY29ubmVjdGlvbi5yZWxlYXNlKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKaW5kZXggZDc5
OTFmMi4uZDgxZmJlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uLmNwcApAQCAtMTAyLDEyICsxMDIsMTYgQEAgTm90aWZpY2F0aW9uOjp+Tm90aWZpY2F0
aW9uKCkKIAogUGFzc1JlZlB0cjxOb3RpZmljYXRpb24+IE5vdGlmaWNhdGlvbjo6Y3JlYXRlKGNv
bnN0IEtVUkwmIHVybCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9u
Q29kZSYgZWMsIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBwcm92aWRlcikgCiB7IAot
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgTm90aWZpY2F0aW9uKHVybCwgY29udGV4dCwgZWMsIHBy
b3ZpZGVyKSk7CisgICAgTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24gPSBuZXcgTm90aWZpY2F0
aW9uKHVybCwgY29udGV4dCwgZWMsIHByb3ZpZGVyKTsKKyAgICBjb250ZXh0LT5kaWRJbnN0YWxs
QWN0aXZlRE9NT2JqZWN0KG5vdGlmaWNhdGlvbik7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5vdGlm
aWNhdGlvbik7CiB9CiAKIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uPiBOb3RpZmljYXRpb246OmNy
ZWF0ZShjb25zdCBOb3RpZmljYXRpb25Db250ZW50cyYgY29udGVudHMsIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjLCBQYXNzUmVmUHRyPE5vdGlmaWNh
dGlvbkNlbnRlcj4gcHJvdmlkZXIpIAogeyAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IE5vdGlm
aWNhdGlvbihjb250ZW50cywgY29udGV4dCwgZWMsIHByb3ZpZGVyKSk7CisgICAgTm90aWZpY2F0
aW9uKiBub3RpZmljYXRpb24gPSBuZXcgTm90aWZpY2F0aW9uKGNvbnRlbnRzLCBjb250ZXh0LCBl
YywgcHJvdmlkZXIpOworICAgIGNvbnRleHQtPmRpZEluc3RhbGxBY3RpdmVET01PYmplY3Qobm90
aWZpY2F0aW9uKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobm90aWZpY2F0aW9uKTsKIH0KIAogY29u
c3QgQXRvbWljU3RyaW5nJiBOb3RpZmljYXRpb246OmludGVyZmFjZU5hbWUoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuY3Bw
CmluZGV4IDQ1ZGMzNDUuLjVjMjI3YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9ub3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5jcHAKQEAgLTQxLDYgKzQxLDEzIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IE5vdGlm
aWNhdGlvbkNlbnRlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIE5v
dGlmaWNhdGlvblByZXNlbnRlciogcHJlc2VudGVyKQoreworICAgIE5vdGlmaWNhdGlvbkNlbnRl
ciogbm90aWZpY2F0aW9uQ2VudGVyID0gbmV3IE5vdGlmaWNhdGlvbkNlbnRlcihjb250ZXh0LCBw
cmVzZW50ZXIpOworICAgIGNvbnRleHQtPmRpZEluc3RhbGxBY3RpdmVET01PYmplY3Qobm90aWZp
Y2F0aW9uQ2VudGVyKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobm90aWZpY2F0aW9uQ2VudGVyKTsK
K30KKwogTm90aWZpY2F0aW9uQ2VudGVyOjpOb3RpZmljYXRpb25DZW50ZXIoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgTm90aWZpY2F0aW9uUHJlc2VudGVyKiBwcmVzZW50ZXIpCiAg
ICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKICAgICAsIG1fbm90aWZpY2F0aW9u
UHJlc2VudGVyKHByZXNlbnRlcikge30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbkNlbnRlci5oCmluZGV4IDIzYjMxZTAuLjQwMmNjYmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaApAQCAt
NTAsNyArNTAsNyBAQCBjbGFzcyBWb2lkQ2FsbGJhY2s7CiAKIGNsYXNzIE5vdGlmaWNhdGlvbkNl
bnRlciA6IHB1YmxpYyBSZWZDb3VudGVkPE5vdGlmaWNhdGlvbkNlbnRlcj4sIHB1YmxpYyBBY3Rp
dmVET01PYmplY3QgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5vdGlmaWNhdGlv
bkNlbnRlcj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIE5vdGlmaWNh
dGlvblByZXNlbnRlciogcHJlc2VudGVyKSB7IHJldHVybiBhZG9wdFJlZihuZXcgTm90aWZpY2F0
aW9uQ2VudGVyKGNvbnRleHQsIHByZXNlbnRlcikpOyB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8
Tm90aWZpY2F0aW9uQ2VudGVyPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE5vdGlm
aWNhdGlvblByZXNlbnRlciopOwogCiAgICAgUGFzc1JlZlB0cjxOb3RpZmljYXRpb24+IGNyZWF0
ZUhUTUxOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBVUkksIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9ET01UaW1lci5jcHAKaW5kZXggMGE5NGU3ZWYuLjRmMGJkOTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwCkBAIC05Miw2ICs5Miw3IEBAIGludCBET01UaW1lcjo6
aW5zdGFsbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzT3duUHRyPFNjaGVk
dWxlZEFjdGlvCiAgICAgLy8gb3IgaWYgaXQgaXMgYSBvbmUtdGltZSB0aW1lciBhbmQgaXQgaGFz
IGZpcmVkIChET01UaW1lcjo6ZmlyZWQpLgogICAgIERPTVRpbWVyKiB0aW1lciA9IG5ldyBET01U
aW1lcihjb250ZXh0LCBhY3Rpb24sIHRpbWVvdXQsIHNpbmdsZVNob3QpOwogCisgICAgY29udGV4
dC0+ZGlkSW5zdGFsbEFjdGl2ZURPTU9iamVjdCh0aW1lcik7CiAgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRJbnN0YWxsVGltZXIoY29udGV4dCwgdGltZXItPm1fdGltZW91dElkLCB0
aW1lb3V0LCBzaW5nbGVTaG90KTsKIAogICAgIHJldHVybiB0aW1lci0+bV90aW1lb3V0SWQ7CkBA
IC0xMTQsNyArMTE1LDcgQEAgdm9pZCBET01UaW1lcjo6ZmlyZWQoKQogewogICAgIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAg
dGltZXJOZXN0aW5nTGV2ZWwgPSBtX25lc3RpbmdMZXZlbDsKLSAgICAKKyAgICBBU1NFUlQoIWNv
bnRleHQtPmFjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQoKSk7CiAgICAgVXNlckdlc3R1cmVJ
bmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihtX3Nob3VsZEZvcndhcmRVc2VyR2VzdHVyZSA/IERl
ZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUgOiBQb3NzaWJseVByb2Nlc3NpbmdVc2VyR2Vz
dHVyZSk7CiAgICAgCiAgICAgLy8gT25seSB0aGUgZmlyc3QgZXhlY3V0aW9uIG9mIGEgbXVsdGkt
c2hvdCB0aW1lciBzaG91bGQgZ2V0IGFuIGFmZmlybWF0aXZlIHVzZXIgZ2VzdHVyZSBpbmRpY2F0
b3IuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCmluZGV4IGVhMDY2MDAuLjMxYjExMWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCkBAIC05OSw2ICs5OSw4IEBAIFBhc3NS
ZWZQdHI8RXZlbnRTb3VyY2U+IEV2ZW50U291cmNlOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgY29uCiAgICAgc291cmNlLT5zZXRQZW5kaW5nQWN0aXZpdHkoc291cmNl
LmdldCgpKTsKICAgICBzb3VyY2UtPmNvbm5lY3QoKTsKIAorICAgIGNvbnRleHQtPmRpZEluc3Rh
bGxBY3RpdmVET01PYmplY3Qoc291cmNlLmdldCgpKTsKKwogICAgIHJldHVybiBzb3VyY2UucmVs
ZWFzZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1c3BlbmRhYmxl
VGltZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TdXNwZW5kYWJsZVRpbWVyLmNwcAppbmRl
eCAyYTRkMmU1Li5kZDNlODlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1c3Bl
bmRhYmxlVGltZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3VzcGVuZGFibGVUaW1l
ci5jcHAKQEAgLTM1LDggKzM1LDggQEAgU3VzcGVuZGFibGVUaW1lcjo6U3VzcGVuZGFibGVUaW1l
cihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIDogQWN0aXZlRE9NT2JqZWN0
KGNvbnRleHQsIHRoaXMpCiAgICAgLCBtX25leHRGaXJlSW50ZXJ2YWwoMCkKICAgICAsIG1fcmVw
ZWF0SW50ZXJ2YWwoMCkKLSNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgLCBtX2FjdGl2ZShmYWxz
ZSkKKyNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgLCBtX3N1c3BlbmRlZChmYWxzZSkKICNlbmRp
ZgogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmNwcAppbmRleCBjNGI3M2NlLi4y
ZGViYzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmNwcApAQCAtNTAsNyAr
NTAsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NSZWZQdHI8SURCRGF0YWJhc2U+IElE
QkRhdGFiYXNlOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1Jl
ZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGRhdGFiYXNlKQogewotICAgIHJldHVy
biBhZG9wdFJlZihuZXcgSURCRGF0YWJhc2UoY29udGV4dCwgZGF0YWJhc2UpKTsKKyAgICBJREJE
YXRhYmFzZSogaWRiRGF0YWJhc2UgPSBuZXcgSURCRGF0YWJhc2UoY29udGV4dCwgZGF0YWJhc2Up
OworICAgIGNvbnRleHQtPmRpZEluc3RhbGxBY3RpdmVET01PYmplY3QoaWRiRGF0YWJhc2UpOwor
ICAgIHJldHVybiBhZG9wdFJlZihpZGJEYXRhYmFzZSk7CiB9CiAKIElEQkRhdGFiYXNlOjpJREJE
YXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkRh
dGFiYXNlQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJl
cXVlc3QuY3BwCmluZGV4IDk2OGZiNTAuLmIxY2FjNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJSZXF1ZXN0LmNwcApAQCAtNDUsNyArNDUsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBh
c3NSZWZQdHI8SURCUmVxdWVzdD4gSURCUmVxdWVzdDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIElEQlRyYW5zYWN0aW9u
KiB0cmFuc2FjdGlvbikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQlJlcXVlc3QoY29u
dGV4dCwgc291cmNlLCB0cmFuc2FjdGlvbikpOworICAgIElEQlJlcXVlc3QqIHJlcXVlc3QgPSBu
ZXcgSURCUmVxdWVzdChjb250ZXh0LCBzb3VyY2UsIHRyYW5zYWN0aW9uKTsKKyAgICBjb250ZXh0
LT5kaWRJbnN0YWxsQWN0aXZlRE9NT2JqZWN0KHJlcXVlc3QpOworICAgIHJldHVybiBhZG9wdFJl
ZihyZXF1ZXN0KTsKIH0KIAogSURCUmVxdWVzdDo6SURCUmVxdWVzdChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBJREJUcmFuc2FjdGlv
biogdHJhbnNhY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRy
YW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb24uY3Bw
CmluZGV4IDE0MGRmMDUuLmE0ZTE2ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJh
bnNhY3Rpb24uY3BwCkBAIC00Miw3ICs0Miw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGFz
c1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gSURCVHJhbnNhY3Rpb246OmNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZT4gYmFja2VuZCwgSURCRGF0YWJhc2UqIGRiKQogewotICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgSURCVHJhbnNhY3Rpb24oY29udGV4dCwgYmFja2VuZCwgZGIpKTsKKyAgICBJREJUcmFu
c2FjdGlvbiogdHJhbnNhY3Rpb24gPSBuZXcgSURCVHJhbnNhY3Rpb24oY29udGV4dCwgYmFja2Vu
ZCwgZGIpOworICAgIGNvbnRleHQtPmRpZEluc3RhbGxBY3RpdmVET01PYmplY3QodHJhbnNhY3Rp
b24pOworICAgIHJldHVybiBhZG9wdFJlZih0cmFuc2FjdGlvbik7CiB9CiAKIElEQlRyYW5zYWN0
aW9uOjpJREJUcmFuc2FjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNz
UmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwgSURCRGF0YWJh
c2UqIGRiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Db250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5kZXggMGMx
NjY0Zi4uMDUwOTdhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9D
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3Bw
CkBAIC0xMDIsOCArMTAyLDEwIEBAIFBhc3NSZWZQdHI8QXVkaW9Db250ZXh0PiBBdWRpb0NvbnRl
eHQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKICAgICBpZiAoc19oYXJkd2FyZUNvbnRleHRDb3VudCA+PSBNYXhIYXJkd2FyZUNvbnRleHRz
KQogICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBB
dWRpb0NvbnRleHQoZG9jdW1lbnQpKTsKKworICAgIEF1ZGlvQ29udGV4dCogYXVkaW9Db250ZXh0
ID0gbmV3IEF1ZGlvQ29udGV4dChkb2N1bWVudCk7CisgICAgZG9jdW1lbnQtPmRpZEluc3RhbGxB
Y3RpdmVET01PYmplY3QoYXVkaW9Db250ZXh0KTsKKyAgICByZXR1cm4gYWRvcHRSZWYoYXVkaW9D
b250ZXh0KTsKIH0KIAogUGFzc1JlZlB0cjxBdWRpb0NvbnRleHQ+IEF1ZGlvQ29udGV4dDo6Y3Jl
YXRlT2ZmbGluZUNvbnRleHQoRG9jdW1lbnQqIGRvY3VtZW50LCB1bnNpZ25lZCBudW1iZXJPZkNo
YW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMsIGZsb2F0IHNhbXBsZVJhdGUsIEV4Y2VwdGlv
bkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2Nr
ZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IDVl
MjEzYjguLjlmODRlMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2Vi
U29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAK
QEAgLTE2NCw2ICsxNjQsMTMgQEAgV2ViU29ja2V0Ojp+V2ViU29ja2V0KCkKICAgICAgICAgbV9j
aGFubmVsLT5kaXNjb25uZWN0KCk7CiB9CiAKK1Bhc3NSZWZQdHI8V2ViU29ja2V0PiBXZWJTb2Nr
ZXQ6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQoreworICAgIFdlYlNv
Y2tldCogd2ViU29ja2V0ID0gbmV3IFdlYlNvY2tldChjb250ZXh0KTsKKyAgICBjb250ZXh0LT5k
aWRJbnN0YWxsQWN0aXZlRE9NT2JqZWN0KHdlYlNvY2tldCk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KHdlYlNvY2tldCk7Cit9CisKIHZvaWQgV2ViU29ja2V0Ojpjb25uZWN0KGNvbnN0IFN0cmluZyYg
dXJsLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBWZWN0b3I8U3RyaW5nPiBwcm90b2NvbHM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oIGIvU291
cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAppbmRleCBiODYwYjc1Li5jYWU1N2Qy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKQEAgLTUzLDcgKzUzLDcgQEAg
Y2xhc3MgV2ViU29ja2V0IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViU29ja2V0PiwgcHVibGljIEV2
ZW50VGFyZ2V0LCBwdWJsaWMgQWN0aXYKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBzZXRJc0F2
YWlsYWJsZShib29sKTsKICAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgpOwotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFdlYlNvY2tldD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJTb2NrZXQoY29udGV4dCkpOyB9CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8V2ViU29ja2V0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCopOwogICAgIHZpcnR1YWwgfldlYlNvY2tldCgpOwogCiAgICAgZW51bSBTdGF0ZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5jcHAKaW5kZXggZmYwNzkyYy4uZGYwYjQzNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmNwcApAQCAtNjQsNiArNjQsNyBA
QCBQYXNzUmVmUHRyPFNoYXJlZFdvcmtlcj4gU2hhcmVkV29ya2VyOjpjcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgYwogCiAgICAgU2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6
Y29ubmVjdCh3b3JrZXIuZ2V0KCksIHJlbW90ZVBvcnQucmVsZWFzZSgpLCBzY3JpcHRVUkwsIG5h
bWUsIGVjKTsKIAorICAgIGNvbnRleHQtPmRpZEluc3RhbGxBY3RpdmVET01PYmplY3Qod29ya2Vy
LmdldCgpKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdvcmtlcihj
b250ZXh0LCB3b3JrZXItPmFzSUQoKSwgc2NyaXB0VVJMLnN0cmluZygpLCB0cnVlKTsKIAogICAg
IHJldHVybiB3b3JrZXIucmVsZWFzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCmluZGV4
IGIzMjM2YTcuLjc3NDZjZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAKQEAgLTczLDYg
KzczLDcgQEAgUGFzc1JlZlB0cjxXb3JrZXI+IFdvcmtlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYKICNlbmRpZgogICAgIHdvcmtlci0+bV9z
Y3JpcHRMb2FkZXItPmxvYWRBc3luY2hyb25vdXNseShjb250ZXh0LCBzY3JpcHRVUkwsIERlbnlD
cm9zc09yaWdpblJlcXVlc3RzLCB3b3JrZXIuZ2V0KCkpOwogCisgICAgY29udGV4dC0+ZGlkSW5z
dGFsbEFjdGl2ZURPTU9iamVjdCh3b3JrZXIuZ2V0KCkpOwogICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkQ3JlYXRlV29ya2VyKGNvbnRleHQsIHdvcmtlci0+YXNJRCgpLCBzY3JpcHRV
Ukwuc3RyaW5nKCksIGZhbHNlKTsKIAogICAgIHJldHVybiB3b3JrZXIucmVsZWFzZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggNmJlNThhYS4uMGYxOWE1ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0xNTQsNyArMTU0LDEwIEBAIHN0
YXRpYyB2b2lkIGxvZ0NvbnNvbGVFcnJvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBjb25zdCBTdHJpbmcmIG1lc3NhCiAKIFBhc3NSZWZQdHI8WE1MSHR0cFJlcXVlc3Q+IFhNTEh0
dHBSZXF1ZXN0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1Jl
ZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4pCiB7Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBYTUxIdHRwUmVxdWVzdChjb250ZXh0LCBzZWN1cml0eU9yaWdpbikpOworICAgIFhN
TEh0dHBSZXF1ZXN0KiB4bWxIdHRwUmVxdWVzdCA9IG5ldyBYTUxIdHRwUmVxdWVzdChjb250ZXh0
LCBzZWN1cml0eU9yaWdpbik7CisgICAgY29udGV4dC0+ZGlkSW5zdGFsbEFjdGl2ZURPTU9iamVj
dCh4bWxIdHRwUmVxdWVzdCk7CisKKyAgICByZXR1cm4gYWRvcHRSZWYoeG1sSHR0cFJlcXVlc3Qp
OwogfQogCiBYTUxIdHRwUmVxdWVzdDo6WE1MSHR0cFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4p
Cg==
</data>
<flag name="review"
          id="125833"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124706</attachid>
            <date>2012-01-31 04:12:47 -0800</date>
            <delta_ts>2012-01-31 04:48:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Bug53733-patch9.diff</filename>
            <type>text/plain</type>
            <size>37267</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0NDAzNzBhLi5hZmJlNzM5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDEt
MzAgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+CisKKyAg
ICAgICAgVGVzdCB0aGF0IHRpbWVycyBkbyBub3QgZmlyZSBmcm9tIHN1YmZyYW1lcyBvZiBzdXNw
ZW5kZWQgZG9jdW1lbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTM3MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGZhc3QvZXZlbnRzL3Jlc291cmNlcy9zdXNwZW5kLXN1YmZyYW1lLTEuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvcmVzb3VyY2VzL3N1c3BlbmQtc3ViZnJhbWUt
Mi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9zdXNwZW5kLXRpbWVycy1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3N1c3BlbmQtdGltZXJzLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25z
LnR4dDoKKwogMjAxMi0wMS0zMCAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFtRdF1bV0syXSBodHRwL3Rlc3RzL2hpc3RvcnkvcmVwbGFjZXN0YXRlLXBv
c3QtdG8tZ2V0LTIuaHRtbCBmYWlscyB3aXRoIHRpbWVvdXQKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL3Jlc291cmNlcy9zdXNwZW5kLXN1YmZyYW1lLTEuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL3Jlc291cmNlcy9zdXNwZW5kLXN1YmZyYW1lLTEuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMWJhOGVhCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcmVzb3VyY2VzL3N1c3BlbmQtc3ViZnJhbWUtMS5o
dG1sCkBAIC0wLDAgKzEsMTYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAg
ICA8c2NyaXB0PgorICAgICAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICAgICAgd2luZG93
LnRvcC5jb25zb2xlLmxvZygnVGltZW91dCBpbiBzdWJmcmFtZS0xIGNyZWF0ZWQnKTsKKyAgICAg
ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgYWxlcnQoJ1Rp
bWVvdXQgY3JlYXRlZCBpbiBzdWJmcmFtZS0xLmh0bWwgZmlyZWQnKTsKKyAgICAgICAgICAgIH0s
IDUwKTsKKyAgICAgICAgfQorICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CitJIGFtIHN1
YmZyYW1lLTEuaHRtbAorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvcmVzb3VyY2VzL3N1c3BlbmQtc3ViZnJhbWUtMi5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvcmVzb3VyY2VzL3N1c3BlbmQtc3ViZnJhbWUtMi5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllM2IyZWUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZXNvdXJjZXMvc3VzcGVuZC1zdWJmcmFtZS0yLmh0bWwK
QEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorCTxzY3Jp
cHQ+CisJb25wYWdlaGlkZSA9IGZ1bmN0aW9uKCkgeworCSAgd2luZG93LnRvcC5kb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnYS1mcmFtZScpLmNvbnRlbnRXaW5kb3cudGVzdCgpOworCX0KKwk8L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorSSBhbSBzdWJmcmFtZS0yLmh0bWwKKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3N1c3BlbmQtdGltZXJz
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3N1c3BlbmQtdGltZXJzLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTk3NzRkCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3VzcGVuZC10aW1lcnMt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA2OiBU
aW1lb3V0IGluIHN1YmZyYW1lLTEgY3JlYXRlZAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDU6IExv
YWRlZCBwYWdlaGlkZS10aW1lb3V0LWdvLWJhY2suaHRtbCwgZ29pbmcgYmFjaworQ09OU09MRSBN
RVNTQUdFOiBsaW5lIDMxOiBSZXN0b3JlZCBwYWdlIGZyb20gcGFnZSBjYWNoZS4KK0FMRVJUOiBU
aW1lb3V0IGNyZWF0ZWQgaW4gc3ViZnJhbWUtMS5odG1sIGZpcmVkCitUZXN0cyB0aGF0IGFsbCBK
UyB0aW1lcnMgYXJlIHN1c3BlbmRlZCBhZnRlciB0aGUgcGFnZWhpZGUgZXZlbnQgaXMgZmlyZWQs
IHNvIHRoYXQgdGltZXJzIGNyZWF0ZWQgd2l0aGluIGl0IHdpbGwgbm90IGZpcmUgd2hpbGUgdGhl
IGRvY3VtZW50IGlzIGluIHRoZSBwYWdlIGNhY2hlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3N1c3BlbmQtdGltZXJzLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zdXNwZW5kLXRpbWVycy5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiN2VlNzQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zdXNwZW5kLXRpbWVycy5odG1sCkBAIC0wLDAgKzEsNTMg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5TdXNwZW5kIHRpbWVy
cyBvbiBuYXZpZ2F0ZTwvdGl0bGU+Cis8c3R5bGU+CisgICAgaWZyYW1lIHsKKyAgICAgIGRpc3Bs
YXk6IGJsb2NrOworICAgICAgYm9yZGVyOiBzb2xpZCAxcHggI2NjYzsKKyAgICAgIG1hcmdpbjog
MWVtOworICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICB9Cis8
L3N0eWxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKworPGlmcmFtZSBzcmM9InJlc291cmNl
cy9zdXNwZW5kLXN1YmZyYW1lLTEuaHRtbCIgaWQ9ImEtZnJhbWUiPjwvaWZyYW1lPiA8aWZyYW1l
IHNyYz0icmVzb3VyY2VzL3N1c3BlbmQtc3ViZnJhbWUtMi5odG1sIiBpZD0iYi1mcmFtZSI+PC9p
ZnJhbWU+CisKKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK2Rlc2NyaXB0aW9uKCdU
ZXN0cyB0aGF0IGFsbCBKUyB0aW1lcnMgYXJlIHN1c3BlbmRlZCBhZnRlciB0aGUgcGFnZWhpZGUg
ZXZlbnQgaXMgZmlyZWQsIHNvIHRoYXQgdGltZXJzIGNyZWF0ZWQgd2l0aGluIGl0IHdpbGwgbm90
IGZpcmUgd2hpbGUgdGhlIGRvY3VtZW50IGlzIGluIHRoZSBwYWdlIGNhY2hlLicpOworCitpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92
ZXJyaWRlUHJlZmVyZW5jZSgnV2ViS2l0VXNlc1BhZ2VDYWNoZVByZWZlcmVuY2VLZXknLCAxKTsK
KworCitvbnBhZ2VzaG93ID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAgaWYgKGV2ZW50LnBlcnNp
c3RlZCkgeworICAgICAgICBjb25zb2xlLmxvZygnUmVzdG9yZWQgcGFnZSBmcm9tIHBhZ2UgY2Fj
aGUuJyk7CisgICAgICAgIGlmICghd2luZG93Lndhc0ZpbmlzaEpTVGVzdENhbGxlZCkgeworICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKKyAgICAgICAgICAgIH0sIDIwMCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK29u
bG9hZCA9IGZ1bmN0aW9uKCkKK3sKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAg
ICBsb2NhdGlvbi5ocmVmID0gJ3Jlc291cmNlcy9wYWdlaGlkZS10aW1lb3V0LWdvLWJhY2suaHRt
bCc7CisgICAgfSwgMTApOworfQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKK3Zh
ciBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9u
cy50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50
eHQKaW5kZXggYjkzYmM2OC4uNGYyMzc3MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dApAQCAtMjA3LDYgKzIwNyw3IEBAIFdP
TlRGSVggU0tJUCA6IGZhc3QvZG9tL1dpbmRvdy90aW1lci1yZXN1bWUtb24tbmF2aWdhdGlvbi1i
YWNrLmh0bWwgPSBUSU1FT1VUIEZBCiBXT05URklYIFNLSVAgOiBmYXN0L2V2ZW50cy9wYWdlaGlk
ZS10aW1lb3V0Lmh0bWwgPSBUSU1FT1VUCiBXT05URklYIFNLSVAgOiBmYXN0L2V2ZW50cy9wYWdl
c2hvdy1wYWdlaGlkZS1vbi1iYWNrLWNhY2hlZC5odG1sID0gVElNRU9VVCBGQUlMCiBXT05URklY
IFNLSVAgOiBmYXN0L2V2ZW50cy9wYWdlc2hvdy1wYWdlaGlkZS1vbi1iYWNrLWNhY2hlZC13aXRo
LWZyYW1lcy5odG1sID0gVElNRU9VVAorV09OVEZJWCBTS0lQIDogZmFzdC9ldmVudHMvc3VzcGVu
ZC10aW1lcnMuaHRtbCA9IFRJTUVPVVQKIFdPTlRGSVggU0tJUCA6IG1lZGlhL3Jlc3RvcmUtZnJv
bS1wYWdlLWNhY2hlLmh0bWwgPSBUSU1FT1VUCiBXT05URklYIFNLSVAgOiBsb2FkZXIvZ28tYmFj
ay10by1kaWZmZXJlbnQtd2luZG93LXNpemUuaHRtbCA9IFRJTUVPVVQgVEVYVAogV09OVEZJWCBT
S0lQIDogZmFzdC9sb2FkZXIvY3Jhc2gtY29weWluZy1iYWNrZm9yd2FyZGxpc3QuaHRtbCA9IFRF
WFQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCBhMTJjNjUzLi5jMDY1Yzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
ODkgQEAKKzIwMTItMDEtMzEgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBu
b2tpYS5jb20+CisKKyAgICAgICAgRW5zdXJlIHRpbWVycyBhbmQgb3RoZXIgYWN0aXZlIERPTSBv
YmplY3RzIGRvIG5vdCBmaXJlIGluIHN1c3BlbmRlZCBkb2N1bWVudHMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MzczMworCisgICAgICAgIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQgbm93IHJlbWVtYmVycyBpdCBoYXMgc3VzcGVuZGVkIGFjdGl2ZSBE
T00gb2JqZWN0cworICAgICAgICBhbmQgc3VzcGVuZHMgYWxsIG5ld2x5IGluc3RhbGxlZCBhY3Rp
dmUgRE9NIG9iamVjdHMgYXMgd2VsbC4KKworICAgICAgICBBbGwgY3JlYXRlLWNhbGxzIGFjdGl2
ZSBET00gb2JqZWN0cyBub3cgY2FsbHMgdGhlIHBvc3QgY29uc3RydWN0b3IgbWV0aG9kCisgICAg
ICAgIHN1c3BlbmRJZk5lZWRlZCB0aGF0IHVwZGF0ZXMgdGhlIHN1c3BlbmQgc3RhdGUuIEl0IGlz
IHBvc3QgY29uc3RydWN0b3IKKyAgICAgICAgYmVjYXVzZSB0aGUgc3VzcGVuZC9yZXN1bWUgZnVu
Y3Rpb25zIGFyZSB2aXJ0dWFsIGFuZCB0aHVzIGNhbiBub3QgYmUgY2FsbGVkCisgICAgICAgIGZy
b20gY29uc3RydWN0b3JzLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRlc3Q6IGZhc3QvZXZlbnRzL3N1c3BlbmQtdGltZXJzLmh0bWwKKworICAgICAg
ICAqIE1vZHVsZXMvaW50ZW50cy9JbnRlbnRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkludGVudFJlcXVlc3Q6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvZ2VuZXJpYy9BY3Rp
dmVET01DYWxsYmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY3RpdmVET01DYWxsYmFjazo6
QWN0aXZlRE9NQ2FsbGJhY2spOgorICAgICAgICAqIGRvbS9BY3RpdmVET01PYmplY3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QWN0aXZlRE9NT2JqZWN0OjpBY3RpdmVET01PYmplY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6QWN0aXZlRE9NT2JqZWN0Ojp+QWN0aXZlRE9NT2JqZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjdGl2ZURPTU9iamVjdDo6c3VzcGVuZElmTmVlZGVkKToKKyAgICAgICAg
KiBkb20vQWN0aXZlRE9NT2JqZWN0Lmg6CisgICAgICAgICogZG9tL0RvY3VtZW50RXZlbnRRdWV1
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEV2ZW50UXVldWU6OkRvY3VtZW50RXZl
bnRRdWV1ZSk6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojp+U2NyaXB0
RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpjYW5TdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpyZXN1bWVBY3RpdmVET01PYmplY3RzKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnN0b3BBY3RpdmVET01P
YmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnN1c3Bl
bmRBY3RpdmVET01PYmplY3RJZk5lZWRlZCk6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmFj
dGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQpOgorICAgICAgICAqIGZpbGVhcGkvRE9NRmlsZVN5
c3RlbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVtOjpjcmVhdGUpOgorICAg
ICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlUmVh
ZGVyOjpjcmVhdGUpOgorICAgICAgICAqIGZpbGVhcGkvRmlsZVJlYWRlci5oOgorICAgICAgICAq
IGZpbGVhcGkvRmlsZVdyaXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlV3JpdGVyOjpj
cmVhdGUpOgorICAgICAgICAqIGZpbGVhcGkvRmlsZVdyaXRlci5oOgorICAgICAgICAqIGhpc3Rv
cnkvQ2FjaGVkRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRnJhbWU6OkNhY2hl
ZEZyYW1lKToKKyAgICAgICAgKiBodG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEF1ZGlvRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxN
YXJxdWVlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWFycXVlZUVsZW1lbnQ6
OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogbWVkaWFzdHJl
YW0vUGVlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGVlckNvbm5lY3Rpb246
OmNyZWF0ZSk6CisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIG5vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNh
dGlvbkNlbnRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBub3RpZmljYXRpb25zL05vdGlmaWNhdGlv
bkNlbnRlci5oOgorICAgICAgICAqIHBhZ2UvRE9NVGltZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NVGltZXI6Omluc3RhbGwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVGltZXI6OmZpcmVk
KToKKyAgICAgICAgKiBwYWdlL0V2ZW50U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50U291cmNlOjpjcmVhdGUpOgorICAgICAgICAqIHBhZ2UvU3VzcGVuZGFibGVUaW1lci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdXNwZW5kYWJsZVRpbWVyOjpTdXNwZW5kYWJsZVRpbWVyKToK
KyAgICAgICAgKiBzdG9yYWdlL0lEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QkRhdGFiYXNlOjpjcmVhdGUpOgorICAgICAgICAqIHN0b3JhZ2UvSURCUmVxdWVzdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJSZXF1ZXN0OjpjcmVhdGUpOgorICAgICAgICAqIHN0b3JhZ2Uv
SURCVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OmNy
ZWF0ZSk6CisgICAgICAgICogd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvQ29udGV4dDo6Y3JlYXRlKToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNv
Y2tldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmNyZWF0ZSk6CisgICAgICAg
ICogd2Vic29ja2V0cy9XZWJTb2NrZXQuaDoKKyAgICAgICAgKiB3b3JrZXJzL1NoYXJlZFdvcmtl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRXb3JrZXI6OmNyZWF0ZSk6CisgICAgICAg
ICogd29ya2Vycy9Xb3JrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyOjpjcmVhdGUp
OgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpY
TUxIdHRwUmVxdWVzdDo6Y3JlYXRlKToKKwogMjAxMi0wMS0zMCAgUm9sYW5kIFN0ZWluZXIgIDxy
b2xhbmRzdGVpbmVyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBOb2RlOjpwYXJlbnRPckhvc3RF
bGVtZW50KCk6IE5vZGU6OnNoYWRvd0hvc3QoKSBhbHJlYWR5IHJldHVybnMgYW4gRWxlbWVudCoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnRSZXF1ZXN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnRSZXF1ZXN0LmNwcApp
bmRleCAyOTZmM2RkLi40NjhiNTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ludGVudHMvSW50ZW50UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bnRlbnRzL0ludGVudFJlcXVlc3QuY3BwCkBAIC00MSw3ICs0MSw5IEBAIFBhc3NSZWZQdHI8SW50
ZW50UmVxdWVzdD4gSW50ZW50UmVxdWVzdDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQYXNzUmVmUHRyPEludGVudFJlc3VsdENhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzUmVmUHRyPElu
dGVudFJlc3VsdENhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQogewotICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgSW50ZW50UmVxdWVzdChjb250ZXh0LCBpbnRlbnQsIHN1Y2Nlc3NDYWxsYmFjaywgZXJy
b3JDYWxsYmFjaykpOworICAgIFJlZlB0cjxJbnRlbnRSZXF1ZXN0PiBpbnRlbnRSZXF1ZXN0KGFk
b3B0UmVmKG5ldyBJbnRlbnRSZXF1ZXN0KGNvbnRleHQsIGludGVudCwgc3VjY2Vzc0NhbGxiYWNr
LCBlcnJvckNhbGxiYWNrKSkpOworICAgIGludGVudFJlcXVlc3QtPnN1c3BlbmRJZk5lZWRlZCgp
OworICAgIHJldHVybiBpbnRlbnRSZXF1ZXN0LnJlbGVhc2UoKTsKIH0KIAogSW50ZW50UmVxdWVz
dDo6SW50ZW50UmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9BY3RpdmVET01DYWxsYmFjay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL0FjdGl2ZURPTUNhbGxiYWNrLmNw
cAppbmRleCBmZjAyYTQyLi5jMjA0MWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9nZW5lcmljL0FjdGl2ZURPTUNhbGxiYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9nZW5lcmljL0FjdGl2ZURPTUNhbGxiYWNrLmNwcApAQCAtMTIyLDYgKzEyMiw3IEBA
IHN0YXRpYyB2b2lkIGRlc3Ryb3lPbkNvbnRleHRUaHJlYWQoUGFzc093blB0cjxBY3RpdmVET01P
YmplY3RDYWxsYmFja0ltcGw+IGltcGwpCiBBY3RpdmVET01DYWxsYmFjazo6QWN0aXZlRE9NQ2Fs
bGJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICA6IG1faW1wbChhZG9w
dFB0cihuZXcgQWN0aXZlRE9NT2JqZWN0Q2FsbGJhY2tJbXBsKGNvbnRleHQpKSkKIHsKKyAgICBt
X2ltcGwtPnN1c3BlbmRJZk5lZWRlZCgpOwogfQogCiBBY3RpdmVET01DYWxsYmFjazo6fkFjdGl2
ZURPTUNhbGxiYWNrKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01P
YmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5jcHAKaW5kZXgg
MzlhNGM0Yy4uZjQyNzc1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURP
TU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5jcHAK
QEAgLTU5LDYgKzU5LDkgQEAgdm9pZCBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6Y29udGV4
dERlc3Ryb3llZCgpCiAKIEFjdGl2ZURPTU9iamVjdDo6QWN0aXZlRE9NT2JqZWN0KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHZvaWQqIHVwY2FzdFBvaW50
ZXIpCiAgICAgOiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcihzY3JpcHRFeGVjdXRpb25Db250
ZXh0KQorI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAsIG1fc3VzcGVuZFVwdG9kYXRlKGZhbHNl
KQorI2VuZGlmCiAgICAgLCBtX3BlbmRpbmdBY3Rpdml0eUNvdW50KDApCiB7CiAgICAgaWYgKCFt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCkBAIC03MywxMCArNzYsMjMgQEAgQWN0aXZlRE9NT2Jq
ZWN0Ojp+QWN0aXZlRE9NT2JqZWN0KCkKICAgICBpZiAoIW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCkKICAgICAgICAgcmV0dXJuOwogCisgICAgQVNTRVJUKG1fc3VzcGVuZFVwdG9kYXRlKTsKICAg
ICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0NvbnRleHRUaHJlYWQoKSk7CiAg
ICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT53aWxsRGVzdHJveUFjdGl2ZURPTU9iamVjdCh0
aGlzKTsKIH0KIAordm9pZCBBY3RpdmVET01PYmplY3Q6OnN1c3BlbmRJZk5lZWRlZCgpCit7Cisj
aWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIEFTU0VSVCghbV9zdXNwZW5kVXB0b2RhdGUpOworICAg
IG1fc3VzcGVuZFVwdG9kYXRlID0gdHJ1ZTsKKyNlbmRpZgorICAgIGlmICghbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0KQorICAgICAgICByZXR1cm47CisKKyAgICBtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQtPnN1c3BlbmRBY3RpdmVET01PYmplY3RJZk5lZWRlZCh0aGlzKTsKK30KKwogYm9vbCBB
Y3RpdmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1fcGVuZGluZ0FjdGl2aXR5Q291bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
QWN0aXZlRE9NT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmgK
aW5kZXggZGI3Y2E2Ni4uZGYyZjRjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Fj
dGl2ZURPTU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3Qu
aApAQCAtNTEsNiArNTEsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHB1YmxpYzoKICAg
ICAgICAgQWN0aXZlRE9NT2JqZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCB2b2lkKiB1cGNh
c3RQb2ludGVyKTsKIAorICAgICAgICAvLyBzdXNwZW5kSWZOZWVkZWQoKSBzaG91bGQgYmUgY2Fs
bGVkIGV4YWN0bHkgb25jZSBhZnRlciBvYmplY3QgY29uc3RydWN0aW9uIHRvIHN5bmNocm9uaXpl
CisgICAgICAgIC8vIHRoZSBzdXNwZW5kIHN0YXRlIHdpdGggdGhhdCBpbiBTY3JpcHRFeGVjdXRp
b25Db250ZXh0LgorICAgICAgICB2b2lkIHN1c3BlbmRJZk5lZWRlZCgpOworCiAgICAgICAgIHZp
cnR1YWwgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdDsKIAogICAgICAgICAvLyBjYW5T
dXNwZW5kKCkgaXMgdXNlZCBieSB0aGUgY2FsbGVyIGlmIHRoZXJlIGlzIGEgY2hvaWNlIGJldHdl
ZW4gc3VzcGVuZGluZyBhbmQgc3RvcHBpbmcuCkBAIC04Myw2ICs4Nyw5IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgICAgIHRoaXNPYmplY3QtPmRlcmVmKCk7CiAgICAgICAgIH0KIAor
I2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAgICAgYm9vbCBtX3N1c3BlbmRVcHRvZGF0ZTsKKyNl
bmRpZgogICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCB+QWN0aXZlRE9NT2JqZWN0KCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHAKaW5kZXggMzEwMjNl
Mi4uNWI4OTliMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRR
dWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHAK
QEAgLTY0LDYgKzY0LDcgQEAgRG9jdW1lbnRFdmVudFF1ZXVlOjpEb2N1bWVudEV2ZW50UXVldWUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICA6IG1fcGVuZGluZ0V2ZW50VGlt
ZXIoYWRvcHRQdHIobmV3IERvY3VtZW50RXZlbnRRdWV1ZVRpbWVyKHRoaXMsIGNvbnRleHQpKSkK
ICAgICAsIG1faXNDbG9zZWQoZmFsc2UpCiB7CisgICAgbV9wZW5kaW5nRXZlbnRUaW1lci0+c3Vz
cGVuZElmTmVlZGVkKCk7CiB9CiAKIERvY3VtZW50RXZlbnRRdWV1ZTo6fkRvY3VtZW50RXZlbnRR
dWV1ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAK
aW5kZXggZWYwNmMyOS4uZDgzN2FlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0LmNwcApAQCAtOTIsNiArOTIsNyBAQCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkKICAgICA6IG1faXRlcmF0aW5nQWN0aXZlRE9N
T2JqZWN0cyhmYWxzZSkKICAgICAsIG1faW5EZXN0cnVjdG9yKGZhbHNlKQogICAgICwgbV9pbkRp
c3BhdGNoRXJyb3JFdmVudChmYWxzZSkKKyAgICAsIG1fYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3Bl
bmRlZChmYWxzZSkKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogICAgICwgbV9oYXNPcGVuRGF0
YWJhc2VzKGZhbHNlKQogI2VuZGlmCkBAIC0xMDEsNyArMTAyLDYgQEAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0
Ojp+U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpCiB7CiAgICAgbV9pbkRlc3RydWN0b3IgPSB0cnVl
OwotCiAgICAgZm9yIChIYXNoU2V0PENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKj46Oml0ZXJh
dG9yIGl0ZXIgPSBtX2Rlc3RydWN0aW9uT2JzZXJ2ZXJzLmJlZ2luKCk7IGl0ZXIgIT0gbV9kZXN0
cnVjdGlvbk9ic2VydmVycy5lbmQoKTsgaXRlciA9IG1fZGVzdHJ1Y3Rpb25PYnNlcnZlcnMuYmVn
aW4oKSkgewogICAgICAgICBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciogb2JzZXJ2ZXIgPSAq
aXRlcjsKICAgICAgICAgbV9kZXN0cnVjdGlvbk9ic2VydmVycy5yZW1vdmUob2JzZXJ2ZXIpOwpA
QCAtMjA1LDEyICsyMDUsMTIgQEAgYm9vbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpjYW5TdXNw
ZW5kQWN0aXZlRE9NT2JqZWN0cygpCiAgICAgbV9pdGVyYXRpbmdBY3RpdmVET01PYmplY3RzID0g
dHJ1ZTsKICAgICBIYXNoTWFwPEFjdGl2ZURPTU9iamVjdCosIHZvaWQqPjo6aXRlcmF0b3IgYWN0
aXZlT2JqZWN0c0VuZCA9IG1fYWN0aXZlRE9NT2JqZWN0cy5lbmQoKTsKICAgICBmb3IgKEhhc2hN
YXA8QWN0aXZlRE9NT2JqZWN0Kiwgdm9pZCo+OjppdGVyYXRvciBpdGVyID0gbV9hY3RpdmVET01P
YmplY3RzLmJlZ2luKCk7IGl0ZXIgIT0gYWN0aXZlT2JqZWN0c0VuZDsgKytpdGVyKSB7Ci0gICAg
ICAgIEFTU0VSVChpdGVyLT5maXJzdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpID09IHRoaXMp
OworICAgICAgICBBU1NFUlQoaXRlci0+Zmlyc3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA9
PSB0aGlzICYmIGl0ZXItPmZpcnN0LT5tX3N1c3BlbmRVcHRvZGF0ZSk7CiAgICAgICAgIGlmICgh
aXRlci0+Zmlyc3QtPmNhblN1c3BlbmQoKSkgewogICAgICAgICAgICAgbV9pdGVyYXRpbmdBY3Rp
dmVET01PYmplY3RzID0gZmFsc2U7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IH0KLSAgICB9ICAgIAorICAgIH0KICAgICBtX2l0ZXJhdGluZ0FjdGl2ZURPTU9iamVjdHMgPSBm
YWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTIyMSwxOSArMjIxLDIyIEBAIHZvaWQgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6c3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoQWN0aXZlRE9NT2Jq
ZWN0OjpSZWFzb25Gb3JTCiAgICAgbV9pdGVyYXRpbmdBY3RpdmVET01PYmplY3RzID0gdHJ1ZTsK
ICAgICBIYXNoTWFwPEFjdGl2ZURPTU9iamVjdCosIHZvaWQqPjo6aXRlcmF0b3IgYWN0aXZlT2Jq
ZWN0c0VuZCA9IG1fYWN0aXZlRE9NT2JqZWN0cy5lbmQoKTsKICAgICBmb3IgKEhhc2hNYXA8QWN0
aXZlRE9NT2JqZWN0Kiwgdm9pZCo+OjppdGVyYXRvciBpdGVyID0gbV9hY3RpdmVET01PYmplY3Rz
LmJlZ2luKCk7IGl0ZXIgIT0gYWN0aXZlT2JqZWN0c0VuZDsgKytpdGVyKSB7Ci0gICAgICAgIEFT
U0VSVChpdGVyLT5maXJzdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpID09IHRoaXMpOworICAg
ICAgICBBU1NFUlQoaXRlci0+Zmlyc3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA9PSB0aGlz
ICYmIGl0ZXItPmZpcnN0LT5tX3N1c3BlbmRVcHRvZGF0ZSk7CiAgICAgICAgIGl0ZXItPmZpcnN0
LT5zdXNwZW5kKHdoeSk7CiAgICAgfQogICAgIG1faXRlcmF0aW5nQWN0aXZlRE9NT2JqZWN0cyA9
IGZhbHNlOworICAgIG1fYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCA9IHRydWU7CisgICAg
bV9zdXNwZW5kUmVhc29uID0gd2h5OwogfQogCiB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OnJlc3VtZUFjdGl2ZURPTU9iamVjdHMoKQogeworICAgIG1fYWN0aXZlRE9NT2JqZWN0c0FyZVN1
c3BlbmRlZCA9IGZhbHNlOwogICAgIC8vIE5vIHByb3RlY3Rpb24gYWdhaW5zdCBtX2FjdGl2ZURP
TU9iamVjdHMgY2hhbmdpbmcgZHVyaW5nIGl0ZXJhdGlvbjogcmVzdW1lKCkgc2hvdWxkbid0IGV4
ZWN1dGUgYXJiaXRyYXJ5IEpTLgogICAgIG1faXRlcmF0aW5nQWN0aXZlRE9NT2JqZWN0cyA9IHRy
dWU7CiAgICAgSGFzaE1hcDxBY3RpdmVET01PYmplY3QqLCB2b2lkKj46Oml0ZXJhdG9yIGFjdGl2
ZU9iamVjdHNFbmQgPSBtX2FjdGl2ZURPTU9iamVjdHMuZW5kKCk7CiAgICAgZm9yIChIYXNoTWFw
PEFjdGl2ZURPTU9iamVjdCosIHZvaWQqPjo6aXRlcmF0b3IgaXRlciA9IG1fYWN0aXZlRE9NT2Jq
ZWN0cy5iZWdpbigpOyBpdGVyICE9IGFjdGl2ZU9iamVjdHNFbmQ7ICsraXRlcikgewotICAgICAg
ICBBU1NFUlQoaXRlci0+Zmlyc3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA9PSB0aGlzKTsK
KyAgICAgICAgQVNTRVJUKGl0ZXItPmZpcnN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPT0g
dGhpcyAmJiBpdGVyLT5maXJzdC0+bV9zdXNwZW5kVXB0b2RhdGUpOwogICAgICAgICBpdGVyLT5m
aXJzdC0+cmVzdW1lKCk7CiAgICAgfQogICAgIG1faXRlcmF0aW5nQWN0aXZlRE9NT2JqZWN0cyA9
IGZhbHNlOwpAQCAtMjQ1LDcgKzI0OCw3IEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
c3RvcEFjdGl2ZURPTU9iamVjdHMoKQogICAgIG1faXRlcmF0aW5nQWN0aXZlRE9NT2JqZWN0cyA9
IHRydWU7CiAgICAgSGFzaE1hcDxBY3RpdmVET01PYmplY3QqLCB2b2lkKj46Oml0ZXJhdG9yIGFj
dGl2ZU9iamVjdHNFbmQgPSBtX2FjdGl2ZURPTU9iamVjdHMuZW5kKCk7CiAgICAgZm9yIChIYXNo
TWFwPEFjdGl2ZURPTU9iamVjdCosIHZvaWQqPjo6aXRlcmF0b3IgaXRlciA9IG1fYWN0aXZlRE9N
T2JqZWN0cy5iZWdpbigpOyBpdGVyICE9IGFjdGl2ZU9iamVjdHNFbmQ7ICsraXRlcikgewotICAg
ICAgICBBU1NFUlQoaXRlci0+Zmlyc3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA9PSB0aGlz
KTsKKyAgICAgICAgQVNTRVJUKGl0ZXItPmZpcnN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkg
PT0gdGhpcyAmJiBpdGVyLT5maXJzdC0+bV9zdXNwZW5kVXB0b2RhdGUpOwogICAgICAgICBpdGVy
LT5maXJzdC0+c3RvcCgpOwogICAgIH0KICAgICBtX2l0ZXJhdGluZ0FjdGl2ZURPTU9iamVjdHMg
PSBmYWxzZTsKQEAgLTI1NCw2ICsyNTcsMTQgQEAgdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpzdG9wQWN0aXZlRE9NT2JqZWN0cygpCiAgICAgY2xvc2VNZXNzYWdlUG9ydHMoKTsKIH0KIAor
dm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0SWZOZWVk
ZWQoQWN0aXZlRE9NT2JqZWN0KiBvYmplY3QpCit7CisgICAgQVNTRVJUKG1fYWN0aXZlRE9NT2Jq
ZWN0cy5jb250YWlucyhvYmplY3QpKTsKKyAgICAvLyBFbnN1cmUgYWxsIEFjdGl2ZURPTU9iamVj
dHMgYXJlIHN1c3BlbmRlZCBhbHNvIG5ld2x5IGNyZWF0ZWQgb25lcy4KKyAgICBpZiAobV9hY3Rp
dmVET01PYmplY3RzQXJlU3VzcGVuZGVkKQorICAgICAgICBvYmplY3QtPnN1c3BlbmQobV9zdXNw
ZW5kUmVhc29uKTsKK30KKwogdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpkaWRDcmVhdGVB
Y3RpdmVET01PYmplY3QoQWN0aXZlRE9NT2JqZWN0KiBvYmplY3QsIHZvaWQqIHVwY2FzdFBvaW50
ZXIpCiB7CiAgICAgQVNTRVJUKG9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaAppbmRleCBhZWQzNDExLi5kNjNiM2QzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKQEAgLTEwMyw5ICsxMDMsMTUgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCByZXN1bWVBY3RpdmVET01PYmplY3RzKCk7CiAgICAgdmly
dHVhbCB2b2lkIHN0b3BBY3RpdmVET01PYmplY3RzKCk7CiAKKyAgICBib29sIGFjdGl2ZURPTU9i
amVjdHNBcmVTdXNwZW5kZWQoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2ZURPTU9iamVjdHNBcmVT
dXNwZW5kZWQ7IH0KKworICAgIC8vIENhbGxlZCBmcm9tIHRoZSBjb25zdHJ1Y3RvciBhbmQgZGVz
dHJ1Y3RvcnMgb2YgQWN0aXZlRE9NT2JqZWN0LgogICAgIHZvaWQgZGlkQ3JlYXRlQWN0aXZlRE9N
T2JqZWN0KEFjdGl2ZURPTU9iamVjdCosIHZvaWQqIHVwY2FzdFBvaW50ZXIpOwogICAgIHZvaWQg
d2lsbERlc3Ryb3lBY3RpdmVET01PYmplY3QoQWN0aXZlRE9NT2JqZWN0Kik7CiAKKyAgICAvLyBD
YWxsZWQgYWZ0ZXIgdGhlIGNvbnN0cnVjdGlvbiBvZiBhbiBBY3RpdmVET01PYmplY3QgdG8gc3lu
Y2hyb25pemUgc3VzcGVuZCBzdGF0ZS4KKyAgICB2b2lkIHN1c3BlbmRBY3RpdmVET01PYmplY3RJ
Zk5lZWRlZChBY3RpdmVET01PYmplY3QqKTsKKwogICAgIHR5cGVkZWYgY29uc3QgSGFzaE1hcDxB
Y3RpdmVET01PYmplY3QqLCB2b2lkKj4gQWN0aXZlRE9NT2JqZWN0c01hcDsKICAgICBBY3RpdmVE
T01PYmplY3RzTWFwJiBhY3RpdmVET01PYmplY3RzKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmVE
T01PYmplY3RzOyB9CiAKQEAgLTIwNiw2ICsyMTIsOSBAQCBwcml2YXRlOgogICAgIGNsYXNzIFBl
bmRpbmdFeGNlcHRpb247CiAgICAgT3duUHRyPFZlY3RvcjxPd25QdHI8UGVuZGluZ0V4Y2VwdGlv
bj4gPiA+IG1fcGVuZGluZ0V4Y2VwdGlvbnM7CiAKKyAgICBib29sIG1fYWN0aXZlRE9NT2JqZWN0
c0FyZVN1c3BlbmRlZDsKKyAgICBBY3RpdmVET01PYmplY3Q6OlJlYXNvbkZvclN1c3BlbnNpb24g
bV9zdXNwZW5kUmVhc29uOworCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICBSZWZQdHI8
RGF0YWJhc2VUaHJlYWQ+IG1fZGF0YWJhc2VUaHJlYWQ7CiAgICAgYm9vbCBtX2hhc09wZW5EYXRh
YmFzZXM7IC8vIFRoaXMgbmV2ZXIgY2hhbmdlcyBiYWNrIHRvIGZhbHNlLCBldmVuIGFmdGVyIHRo
ZSBkYXRhYmFzZSB0aHJlYWQgaXMgY2xvc2VkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmls
ZVN5c3RlbS5jcHAKaW5kZXggYWMzODY5MC4uOTc5OWUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0RPTUZpbGVTeXN0ZW0uY3BwCkBAIC01Niw4ICs1Niw5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4gRE9NRmlsZVN5c3RlbTo6Y3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc093blB0
cjxBc3luY0ZpbGVTeXN0ZW0+IGFzeW5jRmlsZVN5c3RlbSkKIHsKICAgICBSZWZQdHI8RE9NRmls
ZVN5c3RlbT4gZmlsZVN5c3RlbShhZG9wdFJlZihuZXcgRE9NRmlsZVN5c3RlbShjb250ZXh0LCBu
YW1lLCBhc3luY0ZpbGVTeXN0ZW0pKSk7CisgICAgZmlsZVN5c3RlbS0+c3VzcGVuZElmTmVlZGVk
KCk7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRPcGVuRmlsZVN5c3RlbShmaWxl
U3lzdGVtLmdldCgpKTsKLSAgICByZXR1cm4gZmlsZVN5c3RlbTsKKyAgICByZXR1cm4gZmlsZVN5
c3RlbS5yZWxlYXNlKCk7CiB9CiAKIERPTUZpbGVTeXN0ZW06OkRPTUZpbGVTeXN0ZW0oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzT3duUHRy
PEFzeW5jRmlsZVN5c3RlbT4gYXN5bmNGaWxlU3lzdGVtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmls
ZVJlYWRlci5jcHAKaW5kZXggMjljNTk4NC4uMDdjNGI2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGVSZWFkZXIuY3BwCkBAIC00OCw2ICs0OCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHN0YXRpYyBjb25zdCBkb3VibGUgcHJvZ3Jlc3NOb3RpZmljYXRpb25JbnRlcnZhbE1TID0gNTA7
CiAKK1Bhc3NSZWZQdHI8RmlsZVJlYWRlcj4gRmlsZVJlYWRlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQpCit7CisgICAgUmVmUHRyPEZpbGVSZWFkZXI+IGZpbGVSZWFk
ZXIoYWRvcHRSZWYobmV3IEZpbGVSZWFkZXIoY29udGV4dCkpKTsKKyAgICBmaWxlUmVhZGVyLT5z
dXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gZmlsZVJlYWRlci5yZWxlYXNlKCk7Cit9CisK
IEZpbGVSZWFkZXI6OkZpbGVSZWFkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkK
ICAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQogICAgICwgbV9zdGF0ZShFTVBU
WSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmgKaW5kZXggODA0ZGQyOS4uZWNkZDQ4NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmgKQEAgLTUxLDEwICs1MSw3IEBAIHR5cGVk
ZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKIGNsYXNzIEZpbGVSZWFkZXIgOiBwdWJsaWMgUmVmQ291
bnRlZDxGaWxlUmVhZGVyPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIEV2ZW50VGFy
Z2V0LCBwdWJsaWMgRmlsZVJlYWRlckxvYWRlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8RmlsZVJlYWRlcj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZpbGVSZWFkZXIoY29u
dGV4dCkpOwotICAgIH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxGaWxlUmVhZGVyPiBjcmVhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogCiAgICAgdmlydHVhbCB+RmlsZVJlYWRlcigpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVXcml0ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlV3JpdGVyLmNwcAppbmRleCAyYjI1Y2ZhLi43Y2Q5Yjgz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVXcml0ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVdyaXRlci5jcHAKQEAgLTQ1LDYgKzQ1LDEzIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IGludCBrTWF4UmVjdXJzaW9uRGVw
dGggPSAzOwogCitQYXNzUmVmUHRyPEZpbGVXcml0ZXI+IEZpbGVXcml0ZXI6OmNyZWF0ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQoreworICAgIFJlZlB0cjxGaWxlV3JpdGVyPiBm
aWxlV3JpdGVyKGFkb3B0UmVmKG5ldyBGaWxlV3JpdGVyKGNvbnRleHQpKSk7CisgICAgZmlsZVdy
aXRlci0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgcmV0dXJuIGZpbGVXcml0ZXIucmVsZWFzZSgp
OworfQorCiBGaWxlV3JpdGVyOjpGaWxlV3JpdGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQpCiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKICAgICAsIG1fcmVh
ZHlTdGF0ZShJTklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlV3Jp
dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVXcml0ZXIuaAppbmRleCAyYjU5N2Ex
Li45NDYxMzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVXcml0ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVXcml0ZXIuaApAQCAtNDgsMTAgKzQ4
LDcgQEAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAogY2xhc3MgRmlsZVdyaXRlciA6
IHB1YmxpYyBGaWxlV3JpdGVyQmFzZSwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIEV2
ZW50VGFyZ2V0LCBwdWJsaWMgQXN5bmNGaWxlV3JpdGVyQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxGaWxlV3JpdGVyPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRmlsZVdyaXRl
cihjb250ZXh0KSk7Ci0gICAgfQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbGVXcml0ZXI+IGNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAKICAgICBlbnVtIFJlYWR5U3RhdGUgewog
ICAgICAgICBJTklUID0gMCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2Fj
aGVkRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAKaW5k
ZXggNjBmYWIwNC4uOWIwZDJmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9D
YWNoZWRGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5j
cHAKQEAgLTE2OCw3ICsxNjgsNiBAQCBDYWNoZWRGcmFtZTo6Q2FjaGVkRnJhbWUoRnJhbWUqIGZy
YW1lKQogICAgIC8vIGJ1dCBhZnRlciB3ZSd2ZSBmaXJlZCB0aGUgcGFnZWhpZGUgZXZlbnQsIGlu
IGNhc2UgdGhhdCBjcmVhdGVzIG1vcmUgb2JqZWN0cy4KICAgICAvLyBTdXNwZW5kaW5nIG11c3Qg
YWxzbyBoYXBwZW4gYWZ0ZXIgd2UndmUgcmVjdXJzZWQgb3ZlciBjaGlsZCBmcmFtZXMsIGluIGNh
c2UKICAgICAvLyB0aG9zZSBjcmVhdGUgbW9yZSBvYmplY3RzLgotICAgIC8vIEZJWE1FOiBJdCdz
IHN0aWxsIHBvc3NpYmxlIHRvIGhhdmUgb2JqZWN0cyBjcmVhdGVkIGFmdGVyIHN1c3BlbmRpbmcg
aW4gc29tZSBjYXNlcywgc2VlIGh0dHA6Ly93ZWJraXQub3JnL2IvNTM3MzMgZm9yIG1vcmUgZGV0
YWlscy4KICAgICBtX2RvY3VtZW50LT5kb2N1bWVudFdpbGxTdXNwZW5kRm9yUGFnZUNhY2hlKCk7
CiAgICAgbV9kb2N1bWVudC0+c3VzcGVuZFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlckNhbGxi
YWNrcygpOwogICAgIG1fZG9jdW1lbnQtPnN1c3BlbmRBY3RpdmVET01PYmplY3RzKEFjdGl2ZURP
TU9iamVjdDo6RG9jdW1lbnRXaWxsQmVjb21lSW5hY3RpdmUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQXVkaW9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEF1ZGlvRWxlbWVudC5jcHAKaW5kZXggZTNkY2Y0Ny4uZGMxMGIzYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXVkaW9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwCkBAIC00Myw3ICs0Myw5IEBAIEhUTUxBdWRp
b0VsZW1lbnQ6OkhUTUxBdWRpb0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQqIGRvY3VtCiAKIFBhc3NSZWZQdHI8SFRNTEF1ZGlvRWxlbWVudD4gSFRNTEF1ZGlv
RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBk
b2N1bWVudCwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBIVE1MQXVkaW9FbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBjcmVhdGVkQnlQYXJzZXIpKTsK
KyAgICBSZWZQdHI8SFRNTEF1ZGlvRWxlbWVudD4gYXVkaW9FbGVtZW50KGFkb3B0UmVmKG5ldyBI
VE1MQXVkaW9FbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBjcmVhdGVkQnlQYXJzZXIpKSk7Cisg
ICAgYXVkaW9FbGVtZW50LT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gYXVkaW9FbGVt
ZW50LnJlbGVhc2UoKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MQXVkaW9FbGVtZW50PiBIVE1MQXVk
aW9FbGVtZW50OjpjcmVhdGVGb3JKU0NvbnN0cnVjdG9yKERvY3VtZW50KiBkb2N1bWVudCwgY29u
c3QgU3RyaW5nJiBzcmMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJx
dWVlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5j
cHAKaW5kZXggMDUzZmZhOC4uMmZlMjI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWFycXVlZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1h
cnF1ZWVFbGVtZW50LmNwcApAQCAtNDgsNyArNDgsOSBAQCBpbmxpbmUgSFRNTE1hcnF1ZWVFbGVt
ZW50OjpIVE1MTWFycXVlZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dQogCiBQYXNzUmVmUHRyPEhUTUxNYXJxdWVlRWxlbWVudD4gSFRNTE1hcnF1ZWVFbGVtZW50Ojpj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQog
ewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTE1hcnF1ZWVFbGVtZW50KHRhZ05hbWUsIGRv
Y3VtZW50KSk7CisgICAgUmVmUHRyPEhUTUxNYXJxdWVlRWxlbWVudD4gbWFycXVlZUVsZW1lbnQo
YWRvcHRSZWYobmV3IEhUTUxNYXJxdWVlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpKTsKKyAg
ICBtYXJxdWVlRWxlbWVudC0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgcmV0dXJuIG1hcnF1ZWVF
bGVtZW50LnJlbGVhc2UoKTsKIH0KIAogYm9vbCBIVE1MTWFycXVlZUVsZW1lbnQ6Om1hcFRvRW50
cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIE1hcHBlZEF0dHJpYnV0ZUVudHJ5JiBy
ZXN1bHQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0Vs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAppbmRl
eCBmZWQyZmE0Li45MWFjYzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxW
aWRlb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVu
dC5jcHAKQEAgLTU0LDcgKzU0LDkgQEAgaW5saW5lIEhUTUxWaWRlb0VsZW1lbnQ6OkhUTUxWaWRl
b0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQKIAogUGFzc1Jl
ZlB0cjxIVE1MVmlkZW9FbGVtZW50PiBIVE1MVmlkZW9FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIGNyZWF0ZWRCeVBh
cnNlcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxWaWRlb0VsZW1lbnQodGFnTmFt
ZSwgZG9jdW1lbnQsIGNyZWF0ZWRCeVBhcnNlcikpOworICAgIFJlZlB0cjxIVE1MVmlkZW9FbGVt
ZW50PiB2aWRlb0VsZW1lbnQoYWRvcHRSZWYobmV3IEhUTUxWaWRlb0VsZW1lbnQodGFnTmFtZSwg
ZG9jdW1lbnQsIGNyZWF0ZWRCeVBhcnNlcikpKTsKKyAgICB2aWRlb0VsZW1lbnQtPnN1c3BlbmRJ
Zk5lZWRlZCgpOworICAgIHJldHVybiB2aWRlb0VsZW1lbnQucmVsZWFzZSgpOwogfQogCiBib29s
IEhUTUxWaWRlb0VsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0Nv
bnRleHQmIGNvbnRleHQpIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0v
UGVlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vUGVlckNvbm5l
Y3Rpb24uY3BwCmluZGV4IGU1NDQ0N2EuLjM4N2Y4N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9t
ZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbi5jcHAKQEAgLTQxLDYgKzQxLDcgQEAgUGFzc1JlZlB0
cjxQZWVyQ29ubmVjdGlvbj4gUGVlckNvbm5lY3Rpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXgKICAgICBSZWZQdHI8UGVlckNvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBh
ZG9wdFJlZihuZXcgUGVlckNvbm5lY3Rpb24oY29udGV4dCwgc2VydmVyQ29uZmlndXJhdGlvbiwg
c2lnbmFsaW5nQ2FsbGJhY2spKTsKICAgICBjb25uZWN0aW9uLT5zZXRQZW5kaW5nQWN0aXZpdHko
Y29ubmVjdGlvbi5nZXQoKSk7CiAgICAgY29ubmVjdGlvbi0+c2NoZWR1bGVJbml0aWFsTmVnb3Rp
YXRpb24oKTsKKyAgICBjb25uZWN0aW9uLT5zdXNwZW5kSWZOZWVkZWQoKTsKIAogICAgIHJldHVy
biBjb25uZWN0aW9uLnJlbGVhc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL25v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uLmNwcAppbmRleCBkNzk5MWYyLi43NDk2NGRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCkBAIC0xMDIsMTIgKzEwMiwx
NiBAQCBOb3RpZmljYXRpb246On5Ob3RpZmljYXRpb24oKQogCiBQYXNzUmVmUHRyPE5vdGlmaWNh
dGlvbj4gTm90aWZpY2F0aW9uOjpjcmVhdGUoY29uc3QgS1VSTCYgdXJsLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYywgUGFzc1JlZlB0cjxOb3RpZmlj
YXRpb25DZW50ZXI+IHByb3ZpZGVyKSAKIHsgCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBOb3Rp
ZmljYXRpb24odXJsLCBjb250ZXh0LCBlYywgcHJvdmlkZXIpKTsKKyAgICBSZWZQdHI8Tm90aWZp
Y2F0aW9uPiBub3RpZmljYXRpb24oYWRvcHRSZWYobmV3IE5vdGlmaWNhdGlvbih1cmwsIGNvbnRl
eHQsIGVjLCBwcm92aWRlcikpKTsKKyAgICBub3RpZmljYXRpb24tPnN1c3BlbmRJZk5lZWRlZCgp
OworICAgIHJldHVybiBub3RpZmljYXRpb24ucmVsZWFzZSgpOwogfQogCiBQYXNzUmVmUHRyPE5v
dGlmaWNhdGlvbj4gTm90aWZpY2F0aW9uOjpjcmVhdGUoY29uc3QgTm90aWZpY2F0aW9uQ29udGVu
dHMmIGNvbnRlbnRzLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25D
b2RlJiBlYywgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IHByb3ZpZGVyKSAKIHsgCi0g
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBOb3RpZmljYXRpb24oY29udGVudHMsIGNvbnRleHQsIGVj
LCBwcm92aWRlcikpOworICAgIFJlZlB0cjxOb3RpZmljYXRpb24+IG5vdGlmaWNhdGlvbihhZG9w
dFJlZihuZXcgTm90aWZpY2F0aW9uKGNvbnRlbnRzLCBjb250ZXh0LCBlYywgcHJvdmlkZXIpKSk7
CisgICAgbm90aWZpY2F0aW9uLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gbm90aWZp
Y2F0aW9uLnJlbGVhc2UoKTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBOb3RpZmljYXRpb246
OmludGVyZmFjZU5hbWUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuY3BwCmluZGV4IDQ1ZGMzNDUuLmU1OGE0NjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5j
cHAKQEAgLTQxLDYgKzQxLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorUGFzc1JlZlB0
cjxOb3RpZmljYXRpb25DZW50ZXI+IE5vdGlmaWNhdGlvbkNlbnRlcjo6Y3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIE5vdGlmaWNhdGlvblByZXNlbnRlciogcHJlc2VudGVy
KQoreworICAgIFJlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IG5vdGlmaWNhdGlvbkNlbnRlcihh
ZG9wdFJlZihuZXcgTm90aWZpY2F0aW9uQ2VudGVyKGNvbnRleHQsIHByZXNlbnRlcikpKTsKKyAg
ICBub3RpZmljYXRpb25DZW50ZXItPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiBub3Rp
ZmljYXRpb25DZW50ZXIucmVsZWFzZSgpOworfQorCiBOb3RpZmljYXRpb25DZW50ZXI6Ok5vdGlm
aWNhdGlvbkNlbnRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBOb3RpZmljYXRp
b25QcmVzZW50ZXIqIHByZXNlbnRlcikKICAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0
aGlzKQogICAgICwgbV9ub3RpZmljYXRpb25QcmVzZW50ZXIocHJlc2VudGVyKSB7fQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmgKaW5kZXgg
MjNiMzFlMC4uNDAyY2NiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb25DZW50ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbkNlbnRlci5oCkBAIC01MCw3ICs1MCw3IEBAIGNsYXNzIFZvaWRDYWxsYmFj
azsKIAogY2xhc3MgTm90aWZpY2F0aW9uQ2VudGVyIDogcHVibGljIFJlZkNvdW50ZWQ8Tm90aWZp
Y2F0aW9uQ2VudGVyPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgTm90aWZpY2F0aW9uUHJlc2VudGVyKiBwcmVzZW50ZXIpIHsgcmV0
dXJuIGFkb3B0UmVmKG5ldyBOb3RpZmljYXRpb25DZW50ZXIoY29udGV4dCwgcHJlc2VudGVyKSk7
IH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IGNyZWF0ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgTm90aWZpY2F0aW9uUHJlc2VudGVyKik7CiAKICAgICBQYXNz
UmVmUHRyPE5vdGlmaWNhdGlvbj4gY3JlYXRlSFRNTE5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcm
IFVSSSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9ET01UaW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNwcApp
bmRleCAwYTk0ZTdlZi4uZGFkNzZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9E
T01UaW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01UaW1lci5jcHAKQEAgLTky
LDYgKzkyLDcgQEAgaW50IERPTVRpbWVyOjppbnN0YWxsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIFBhc3NPd25QdHI8U2NoZWR1bGVkQWN0aW8KICAgICAvLyBvciBpZiBpdCBpcyBh
IG9uZS10aW1lIHRpbWVyIGFuZCBpdCBoYXMgZmlyZWQgKERPTVRpbWVyOjpmaXJlZCkuCiAgICAg
RE9NVGltZXIqIHRpbWVyID0gbmV3IERPTVRpbWVyKGNvbnRleHQsIGFjdGlvbiwgdGltZW91dCwg
c2luZ2xlU2hvdCk7CiAKKyAgICB0aW1lci0+c3VzcGVuZElmTmVlZGVkKCk7CiAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRJbnN0YWxsVGltZXIoY29udGV4dCwgdGltZXItPm1fdGlt
ZW91dElkLCB0aW1lb3V0LCBzaW5nbGVTaG90KTsKIAogICAgIHJldHVybiB0aW1lci0+bV90aW1l
b3V0SWQ7CkBAIC0xMTQsNyArMTE1LDcgQEAgdm9pZCBET01UaW1lcjo6ZmlyZWQoKQogewogICAg
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7CiAgICAgdGltZXJOZXN0aW5nTGV2ZWwgPSBtX25lc3RpbmdMZXZlbDsKLSAgICAKKyAgICBB
U1NFUlQoIWNvbnRleHQtPmFjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQoKSk7CiAgICAgVXNl
ckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihtX3Nob3VsZEZvcndhcmRVc2VyR2Vz
dHVyZSA/IERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUgOiBQb3NzaWJseVByb2Nlc3Np
bmdVc2VyR2VzdHVyZSk7CiAgICAgCiAgICAgLy8gT25seSB0aGUgZmlyc3QgZXhlY3V0aW9uIG9m
IGEgbXVsdGktc2hvdCB0aW1lciBzaG91bGQgZ2V0IGFuIGFmZmlybWF0aXZlIHVzZXIgZ2VzdHVy
ZSBpbmRpY2F0b3IuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCmluZGV4IGVhMDY2MDAu
LjU0M2YxZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCkBAIC05OCw2ICs5OCw3
IEBAIFBhc3NSZWZQdHI8RXZlbnRTb3VyY2U+IEV2ZW50U291cmNlOjpjcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uCiAKICAgICBzb3VyY2UtPnNldFBlbmRpbmdBY3Rp
dml0eShzb3VyY2UuZ2V0KCkpOwogICAgIHNvdXJjZS0+Y29ubmVjdCgpOworICAgIHNvdXJjZS0+
c3VzcGVuZElmTmVlZGVkKCk7CiAKICAgICByZXR1cm4gc291cmNlLnJlbGVhc2UoKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3VzcGVuZGFibGVUaW1lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1N1c3BlbmRhYmxlVGltZXIuY3BwCmluZGV4IDJhNGQyZTUuLmRkM2U4
OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3VzcGVuZGFibGVUaW1lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TdXNwZW5kYWJsZVRpbWVyLmNwcApAQCAtMzUsOCAr
MzUsOCBAQCBTdXNwZW5kYWJsZVRpbWVyOjpTdXNwZW5kYWJsZVRpbWVyKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQpCiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykK
ICAgICAsIG1fbmV4dEZpcmVJbnRlcnZhbCgwKQogICAgICwgbV9yZXBlYXRJbnRlcnZhbCgwKQot
I2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAsIG1fYWN0aXZlKGZhbHNlKQorI2lmICFBU1NFUlRf
RElTQUJMRUQKICAgICAsIG1fc3VzcGVuZGVkKGZhbHNlKQogI2VuZGlmCiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwCmluZGV4IGM0YjczY2UuLjI1NjUwZjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwCkBAIC01MCw3ICs1MCw5IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogUGFzc1JlZlB0cjxJREJEYXRhYmFzZT4gSURCRGF0YWJhc2U6OmNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNl
QmFja2VuZEludGVyZmFjZT4gZGF0YWJhc2UpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJ
REJEYXRhYmFzZShjb250ZXh0LCBkYXRhYmFzZSkpOworICAgIFJlZlB0cjxJREJEYXRhYmFzZT4g
aWRiRGF0YWJhc2UoYWRvcHRSZWYobmV3IElEQkRhdGFiYXNlKGNvbnRleHQsIGRhdGFiYXNlKSkp
OworICAgIGlkYkRhdGFiYXNlLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gaWRiRGF0
YWJhc2UucmVsZWFzZSgpOwogfQogCiBJREJEYXRhYmFzZTo6SURCRGF0YWJhc2UoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRl
cmZhY2U+IGJhY2tlbmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJl
cXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNwcAppbmRleCA5
NjhmYjUwLi45YmZjZGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJl
cXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAKQEAg
LTQ1LDcgKzQ1LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNzUmVmUHRyPElEQlJlcXVl
c3Q+IElEQlJlcXVlc3Q6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQ
YXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJSZXF1ZXN0KGNvbnRleHQsIHNvdXJjZSwgdHJh
bnNhY3Rpb24pKTsKKyAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdChhZG9wdFJlZihuZXcg
SURCUmVxdWVzdChjb250ZXh0LCBzb3VyY2UsIHRyYW5zYWN0aW9uKSkpOworICAgIHJlcXVlc3Qt
PnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKIH0KIAog
SURCUmVxdWVzdDo6SURCUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQ
YXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb24uY3BwCmluZGV4IDE0MGRmMDUuLjkw
NDg3NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC00
Miw3ICs0Miw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGFzc1JlZlB0cjxJREJUcmFuc2Fj
dGlvbj4gSURCVHJhbnNhY3Rpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCwg
SURCRGF0YWJhc2UqIGRiKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCVHJhbnNhY3Rp
b24oY29udGV4dCwgYmFja2VuZCwgZGIpKTsKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IHRy
YW5zYWN0aW9uKGFkb3B0UmVmKG5ldyBJREJUcmFuc2FjdGlvbihjb250ZXh0LCBiYWNrZW5kLCBk
YikpKTsKKyAgICB0cmFuc2FjdGlvbi0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgcmV0dXJuIHRy
YW5zYWN0aW9uLnJlbGVhc2UoKTsKIH0KIAogSURCVHJhbnNhY3Rpb246OklEQlRyYW5zYWN0aW9u
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBJREJEYXRhYmFzZSogZGIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAppbmRleCAwYzE2NjRmLi5kN2Y3MzEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKQEAgLTEwMiw4ICsxMDIsMTAg
QEAgUGFzc1JlZlB0cjxBdWRpb0NvbnRleHQ+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlKERvY3VtZW50
KiBkb2N1bWVudCkKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmIChzX2hhcmR3
YXJlQ29udGV4dENvdW50ID49IE1heEhhcmR3YXJlQ29udGV4dHMpCiAgICAgICAgIHJldHVybiAw
OwotICAgICAgICAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF1ZGlvQ29udGV4dChkb2N1bWVu
dCkpOworCisgICAgUmVmUHRyPEF1ZGlvQ29udGV4dD4gYXVkaW9Db250ZXh0KGFkb3B0UmVmKG5l
dyBBdWRpb0NvbnRleHQoZG9jdW1lbnQpKSk7CisgICAgYXVkaW9Db250ZXh0LT5zdXNwZW5kSWZO
ZWVkZWQoKTsKKyAgICByZXR1cm4gYXVkaW9Db250ZXh0LnJlbGVhc2UoKTsKIH0KIAogUGFzc1Jl
ZlB0cjxBdWRpb0NvbnRleHQ+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlT2ZmbGluZUNvbnRleHQoRG9j
dW1lbnQqIGRvY3VtZW50LCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVy
T2ZGcmFtZXMsIGZsb2F0IHNhbXBsZVJhdGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IDVlMjEzYjguLjMwMTBlYTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKQEAgLTE2NCw2ICsxNjQsMTMgQEAg
V2ViU29ja2V0Ojp+V2ViU29ja2V0KCkKICAgICAgICAgbV9jaGFubmVsLT5kaXNjb25uZWN0KCk7
CiB9CiAKK1Bhc3NSZWZQdHI8V2ViU29ja2V0PiBXZWJTb2NrZXQ6OmNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0KQoreworICAgIFJlZlB0cjxXZWJTb2NrZXQ+IHdlYlNvY2tl
dChhZG9wdFJlZihuZXcgV2ViU29ja2V0KGNvbnRleHQpKSk7CisgICAgd2ViU29ja2V0LT5zdXNw
ZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gd2ViU29ja2V0LnJlbGVhc2UoKTsKK30KKwogdm9p
ZCBXZWJTb2NrZXQ6OmNvbm5lY3QoY29uc3QgU3RyaW5nJiB1cmwsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogewogICAgIFZlY3RvcjxTdHJpbmc+IHByb3RvY29sczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRz
L1dlYlNvY2tldC5oCmluZGV4IGI4NjBiNzUuLmNhZTU3ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29j
a2V0cy9XZWJTb2NrZXQuaApAQCAtNTMsNyArNTMsNyBAQCBjbGFzcyBXZWJTb2NrZXQgOiBwdWJs
aWMgUmVmQ291bnRlZDxXZWJTb2NrZXQ+LCBwdWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBBY3Rp
dgogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHNldElzQXZhaWxhYmxlKGJvb2wpOwogICAgIHN0
YXRpYyBib29sIGlzQXZhaWxhYmxlKCk7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViU29ja2V0
PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkgeyByZXR1cm4gYWRvcHRS
ZWYobmV3IFdlYlNvY2tldChjb250ZXh0KSk7IH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJT
b2NrZXQ+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAgICAgdmlydHVhbCB+V2Vi
U29ja2V0KCk7CiAKICAgICBlbnVtIFN0YXRlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvU2hhcmVkV29ya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVk
V29ya2VyLmNwcAppbmRleCBmZjA3OTJjLi4wOTZlMDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9TaGFyZWRXb3JrZXIuY3BwCkBAIC02NCw2ICs2NCw3IEBAIFBhc3NSZWZQdHI8U2hhcmVkV29y
a2VyPiBTaGFyZWRXb3JrZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBjCiAKICAgICBTaGFyZWRXb3JrZXJSZXBvc2l0b3J5Ojpjb25uZWN0KHdvcmtlci5nZXQoKSwg
cmVtb3RlUG9ydC5yZWxlYXNlKCksIHNjcmlwdFVSTCwgbmFtZSwgZWMpOwogCisgICAgd29ya2Vy
LT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENy
ZWF0ZVdvcmtlcihjb250ZXh0LCB3b3JrZXItPmFzSUQoKSwgc2NyaXB0VVJMLnN0cmluZygpLCB0
cnVlKTsKIAogICAgIHJldHVybiB3b3JrZXIucmVsZWFzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXIuY3BwCmluZGV4IGIzMjM2YTcuLjQ3MTNiMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5j
cHAKQEAgLTczLDYgKzczLDcgQEAgUGFzc1JlZlB0cjxXb3JrZXI+IFdvcmtlcjo6Y3JlYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYKICNlbmRpZgogICAg
IHdvcmtlci0+bV9zY3JpcHRMb2FkZXItPmxvYWRBc3luY2hyb25vdXNseShjb250ZXh0LCBzY3Jp
cHRVUkwsIERlbnlDcm9zc09yaWdpblJlcXVlc3RzLCB3b3JrZXIuZ2V0KCkpOwogCisgICAgd29y
a2VyLT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZENyZWF0ZVdvcmtlcihjb250ZXh0LCB3b3JrZXItPmFzSUQoKSwgc2NyaXB0VVJMLnN0cmluZygp
LCBmYWxzZSk7CiAKICAgICByZXR1cm4gd29ya2VyLnJlbGVhc2UoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IDZiZTU4YWEuLmEwZmIxOTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtMTU0LDcgKzE1NCwxMCBAQCBzdGF0aWMgdm9pZCBs
b2dDb25zb2xlRXJyb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3Ry
aW5nJiBtZXNzYQogCiBQYXNzUmVmUHRyPFhNTEh0dHBSZXF1ZXN0PiBYTUxIdHRwUmVxdWVzdDo6
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgWE1M
SHR0cFJlcXVlc3QoY29udGV4dCwgc2VjdXJpdHlPcmlnaW4pKTsKKyAgICBSZWZQdHI8WE1MSHR0
cFJlcXVlc3Q+IHhtbEh0dHBSZXF1ZXN0KGFkb3B0UmVmKG5ldyBYTUxIdHRwUmVxdWVzdChjb250
ZXh0LCBzZWN1cml0eU9yaWdpbikpKTsKKyAgICB4bWxIdHRwUmVxdWVzdC0+c3VzcGVuZElmTmVl
ZGVkKCk7CisKKyAgICByZXR1cm4geG1sSHR0cFJlcXVlc3QucmVsZWFzZSgpOwogfQogCiBYTUxI
dHRwUmVxdWVzdDo6WE1MSHR0cFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4pCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124708</attachid>
            <date>2012-01-31 04:48:46 -0800</date>
            <delta_ts>2012-02-02 02:00:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53733-20120131134759.patch</filename>
            <type>text/plain</type>
            <size>39821</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDJhODRjYmM4OWM0ODMw
MGRiNGY5OWM1Y2M5Njk1NDhjYzMzZDY0MS4uOTFjZGYwYWUyNjU1NDI3ZjRjZTQyMTcxMTdkMTQ0
YzQ5MmQ3MGRjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg5IEBACisyMDEyLTAxLTMxICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgorCisgICAgICAgIEVu
c3VyZSB0aW1lcnMgYW5kIG90aGVyIGFjdGl2ZSBET00gb2JqZWN0cyBkbyBub3QgZmlyZSBpbiBz
dXNwZW5kZWQgZG9jdW1lbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTM3MzMKKworICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0IG5vdyBy
ZW1lbWJlcnMgaXQgaGFzIHN1c3BlbmRlZCBhY3RpdmUgRE9NIG9iamVjdHMKKyAgICAgICAgYW5k
IHN1c3BlbmRzIGFsbCBuZXdseSBpbnN0YWxsZWQgYWN0aXZlIERPTSBvYmplY3RzIGFzIHdlbGwu
CisKKyAgICAgICAgQWxsIGNyZWF0ZS1jYWxscyBhY3RpdmUgRE9NIG9iamVjdHMgbm93IGNhbGxz
IHRoZSBwb3N0IGNvbnN0cnVjdG9yIG1ldGhvZAorICAgICAgICBzdXNwZW5kSWZOZWVkZWQgdGhh
dCB1cGRhdGVzIHRoZSBzdXNwZW5kIHN0YXRlLiBJdCBpcyBwb3N0IGNvbnN0cnVjdG9yCisgICAg
ICAgIGJlY2F1c2UgdGhlIHN1c3BlbmQvcmVzdW1lIGZ1bmN0aW9ucyBhcmUgdmlydHVhbCBhbmQg
dGh1cyBjYW4gbm90IGJlIGNhbGxlZAorICAgICAgICBmcm9tIGNvbnN0cnVjdG9ycy4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBmYXN0L2V2
ZW50cy9zdXNwZW5kLXRpbWVycy5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL2ludGVudHMvSW50
ZW50UmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlbnRSZXF1ZXN0OjpjcmVhdGUp
OgorICAgICAgICAqIGJpbmRpbmdzL2dlbmVyaWMvQWN0aXZlRE9NQ2FsbGJhY2suY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QWN0aXZlRE9NQ2FsbGJhY2s6OkFjdGl2ZURPTUNhbGxiYWNrKToKKyAg
ICAgICAgKiBkb20vQWN0aXZlRE9NT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjdGl2
ZURPTU9iamVjdDo6QWN0aXZlRE9NT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjdGl2ZURP
TU9iamVjdDo6fkFjdGl2ZURPTU9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY3RpdmVET01P
YmplY3Q6OnN1c3BlbmRJZk5lZWRlZCk6CisgICAgICAgICogZG9tL0FjdGl2ZURPTU9iamVjdC5o
OgorICAgICAgICAqIGRvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRFdmVudFF1ZXVlOjpEb2N1bWVudEV2ZW50UXVldWUpOgorICAgICAgICAqIGRv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6flNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6Y2FuU3VzcGVuZEFjdGl2ZURP
TU9iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6c3Vz
cGVuZEFjdGl2ZURPTU9iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6cmVzdW1lQWN0aXZlRE9NT2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpzdG9wQWN0aXZlRE9NT2JqZWN0cyk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0SWZOZWVk
ZWQpOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjphY3RpdmVET01PYmplY3RzQXJlU3VzcGVu
ZGVkKToKKyAgICAgICAgKiBmaWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NRmlsZVN5c3RlbTo6Y3JlYXRlKToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVJlYWRlcjo6Y3JlYXRlKToKKyAgICAgICAg
KiBmaWxlYXBpL0ZpbGVSZWFkZXIuaDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVXcml0ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RmlsZVdyaXRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBmaWxl
YXBpL0ZpbGVXcml0ZXIuaDoKKyAgICAgICAgKiBoaXN0b3J5L0NhY2hlZEZyYW1lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZEZyYW1lOjpDYWNoZWRGcmFtZSk6CisgICAgICAgICogaHRt
bC9IVE1MQXVkaW9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBdWRpb0VsZW1l
bnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1hcnF1ZWVFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0
bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVt
ZW50OjpjcmVhdGUpOgorICAgICAgICAqIG1lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIG5v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNh
dGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25DZW50ZXI6OmNyZWF0ZSk6Cisg
ICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaDoKKyAgICAgICAgKiBw
YWdlL0RPTVRpbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRpbWVyOjppbnN0YWxsKToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTVRpbWVyOjpmaXJlZCk6CisgICAgICAgICogcGFnZS9FdmVu
dFNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFNvdXJjZTo6Y3JlYXRlKToKKyAg
ICAgICAgKiBwYWdlL1N1c3BlbmRhYmxlVGltZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3Vz
cGVuZGFibGVUaW1lcjo6U3VzcGVuZGFibGVUaW1lcik6CisgICAgICAgICogc3RvcmFnZS9JREJE
YXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6Y3JlYXRlKToKKyAg
ICAgICAgKiBzdG9yYWdlL0lEQlJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVx
dWVzdDo6Y3JlYXRlKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHdlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmNy
ZWF0ZSk6CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0OjpjcmVhdGUpOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0
Lmg6CisgICAgICAgICogd29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkV29ya2VyOjpjcmVhdGUpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcjo6Y3JlYXRlKToKKyAgICAgICAgKiB4bWwvWE1MSHR0
cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZSk6
CisKIDIwMTItMDEtMzEgIEFsZXhlaSBGaWxpcHBvdiAgPGFsZXhlaWZAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHNob3cgc2l6ZXMgaW4gYnl0ZXMgaW5zdGVhZCBvZiBL
QiwgTUIgaW4gaGVhcCBwcm9maWxlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW50ZW50cy9JbnRlbnRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50
ZW50cy9JbnRlbnRSZXF1ZXN0LmNwcAppbmRleCAyOTZmM2RkMmQ2NGI1NWU4ZTE5MGIyOTBmZGE4
ZmQzNDQyMzgxNzlhLi40NjhiNTFmNDNjZTg3ODRmNzAzYzgwMjQ3ZmIwNGRmODhmMmIwZjJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ludGVudHMvSW50ZW50UmVxdWVzdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0ludGVudFJlcXVlc3QuY3Bw
CkBAIC00MSw3ICs0MSw5IEBAIFBhc3NSZWZQdHI8SW50ZW50UmVxdWVzdD4gSW50ZW50UmVxdWVz
dDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzUmVmUHRyPEludGVudFJlc3Vs
dENhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBQYXNzUmVmUHRyPEludGVudFJlc3VsdENhbGxiYWNrPiBlcnJv
ckNhbGxiYWNrKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW50ZW50UmVxdWVzdChjb250
ZXh0LCBpbnRlbnQsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpOworICAgIFJlZlB0
cjxJbnRlbnRSZXF1ZXN0PiBpbnRlbnRSZXF1ZXN0KGFkb3B0UmVmKG5ldyBJbnRlbnRSZXF1ZXN0
KGNvbnRleHQsIGludGVudCwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSkpOworICAg
IGludGVudFJlcXVlc3QtPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiBpbnRlbnRSZXF1
ZXN0LnJlbGVhc2UoKTsKIH0KIAogSW50ZW50UmVxdWVzdDo6SW50ZW50UmVxdWVzdChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvZ2VuZXJpYy9BY3RpdmVET01DYWxsYmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9nZW5lcmljL0FjdGl2ZURPTUNhbGxiYWNrLmNwcAppbmRleCBmZjAyYTQyMDVmNmYyMGIy
ODYyODMzM2Y4MjAwM2JlODM2Nzc2M2RmLi5jMjA0MWQzZGZlZTc1ZjNjNjhkNmM0NmU4Zjk2OWY1
Y2QxMDQ4MmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL0Fj
dGl2ZURPTUNhbGxiYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmlj
L0FjdGl2ZURPTUNhbGxiYWNrLmNwcApAQCAtMTIyLDYgKzEyMiw3IEBAIHN0YXRpYyB2b2lkIGRl
c3Ryb3lPbkNvbnRleHRUaHJlYWQoUGFzc093blB0cjxBY3RpdmVET01PYmplY3RDYWxsYmFja0lt
cGw+IGltcGwpCiBBY3RpdmVET01DYWxsYmFjazo6QWN0aXZlRE9NQ2FsbGJhY2soU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICA6IG1faW1wbChhZG9wdFB0cihuZXcgQWN0aXZl
RE9NT2JqZWN0Q2FsbGJhY2tJbXBsKGNvbnRleHQpKSkKIHsKKyAgICBtX2ltcGwtPnN1c3BlbmRJ
Zk5lZWRlZCgpOwogfQogCiBBY3RpdmVET01DYWxsYmFjazo6fkFjdGl2ZURPTUNhbGxiYWNrKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5jcHAKaW5kZXggMzlhNGM0YzZiOTFlZDYy
MzM5MDBhNWNiZjc2NjJjOGE0ZmFiNTdkNi4uZjQyNzc1NmU0NzAxNTM5ZWU5NGY3YTZhYTdhYTMz
NjhlY2YzOTJhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVj
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5jcHAKQEAgLTU5
LDYgKzU5LDkgQEAgdm9pZCBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6Y29udGV4dERlc3Ry
b3llZCgpCiAKIEFjdGl2ZURPTU9iamVjdDo6QWN0aXZlRE9NT2JqZWN0KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHZvaWQqIHVwY2FzdFBvaW50ZXIpCiAg
ICAgOiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcihzY3JpcHRFeGVjdXRpb25Db250ZXh0KQor
I2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAsIG1fc3VzcGVuZFVwdG9kYXRlKGZhbHNlKQorI2Vu
ZGlmCiAgICAgLCBtX3BlbmRpbmdBY3Rpdml0eUNvdW50KDApCiB7CiAgICAgaWYgKCFtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQpCkBAIC03MywxMCArNzYsMjMgQEAgQWN0aXZlRE9NT2JqZWN0Ojp+
QWN0aXZlRE9NT2JqZWN0KCkKICAgICBpZiAoIW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKICAg
ICAgICAgcmV0dXJuOwogCisgICAgQVNTRVJUKG1fc3VzcGVuZFVwdG9kYXRlKTsKICAgICBBU1NF
UlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0NvbnRleHRUaHJlYWQoKSk7CiAgICAgbV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0LT53aWxsRGVzdHJveUFjdGl2ZURPTU9iamVjdCh0aGlzKTsK
IH0KIAordm9pZCBBY3RpdmVET01PYmplY3Q6OnN1c3BlbmRJZk5lZWRlZCgpCit7CisjaWYgIUFT
U0VSVF9ESVNBQkxFRAorICAgIEFTU0VSVCghbV9zdXNwZW5kVXB0b2RhdGUpOworICAgIG1fc3Vz
cGVuZFVwdG9kYXRlID0gdHJ1ZTsKKyNlbmRpZgorICAgIGlmICghbV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0KQorICAgICAgICByZXR1cm47CisKKyAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQt
PnN1c3BlbmRBY3RpdmVET01PYmplY3RJZk5lZWRlZCh0aGlzKTsKK30KKwogYm9vbCBBY3RpdmVE
T01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGVu
ZGluZ0FjdGl2aXR5Q291bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZl
RE9NT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmgKaW5kZXgg
ZGI3Y2E2NmMwMWQyMTI5ZmFlMWU3OTA2ZGQ0NGQ0Mjk3YzM2ZjRjYi4uZGYyZjRjMDAzZWZmMmY4
ZGVmYjdmMGUwY2U1OWNkNzlhNjU1NzYyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0FjdGl2ZURPTU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmpl
Y3QuaApAQCAtNTEsNiArNTEsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHB1YmxpYzoK
ICAgICAgICAgQWN0aXZlRE9NT2JqZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCB2b2lkKiB1
cGNhc3RQb2ludGVyKTsKIAorICAgICAgICAvLyBzdXNwZW5kSWZOZWVkZWQoKSBzaG91bGQgYmUg
Y2FsbGVkIGV4YWN0bHkgb25jZSBhZnRlciBvYmplY3QgY29uc3RydWN0aW9uIHRvIHN5bmNocm9u
aXplCisgICAgICAgIC8vIHRoZSBzdXNwZW5kIHN0YXRlIHdpdGggdGhhdCBpbiBTY3JpcHRFeGVj
dXRpb25Db250ZXh0LgorICAgICAgICB2b2lkIHN1c3BlbmRJZk5lZWRlZCgpOworCiAgICAgICAg
IHZpcnR1YWwgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdDsKIAogICAgICAgICAvLyBj
YW5TdXNwZW5kKCkgaXMgdXNlZCBieSB0aGUgY2FsbGVyIGlmIHRoZXJlIGlzIGEgY2hvaWNlIGJl
dHdlZW4gc3VzcGVuZGluZyBhbmQgc3RvcHBpbmcuCkBAIC04Myw2ICs4Nyw5IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgICAgIHRoaXNPYmplY3QtPmRlcmVmKCk7CiAgICAgICAgIH0K
IAorI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAgICAgYm9vbCBtX3N1c3BlbmRVcHRvZGF0ZTsK
KyNlbmRpZgogICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCB+QWN0aXZlRE9NT2JqZWN0
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHAKaW5kZXggMzEw
MjNlMjhkMzExZWRjMWY4MTI0MDg3M2E4ODI3ZjMzMWU4YmFkZi4uNWI4OTliM2Y1NzhhMjc0Mzk4
MjQ4NTk4YjlkMjlhZDk4OGYwMDM2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50RXZlbnRRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZl
bnRRdWV1ZS5jcHAKQEAgLTY0LDYgKzY0LDcgQEAgRG9jdW1lbnRFdmVudFF1ZXVlOjpEb2N1bWVu
dEV2ZW50UXVldWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICA6IG1fcGVu
ZGluZ0V2ZW50VGltZXIoYWRvcHRQdHIobmV3IERvY3VtZW50RXZlbnRRdWV1ZVRpbWVyKHRoaXMs
IGNvbnRleHQpKSkKICAgICAsIG1faXNDbG9zZWQoZmFsc2UpCiB7CisgICAgbV9wZW5kaW5nRXZl
bnRUaW1lci0+c3VzcGVuZElmTmVlZGVkKCk7CiB9CiAKIERvY3VtZW50RXZlbnRRdWV1ZTo6fkRv
Y3VtZW50RXZlbnRRdWV1ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5jcHAKaW5kZXggZWYwNmMyOWVjYjk1ZWJhMGQ4NjhiMWNhM2YyMmMyODdkOTY2OTcy
NC4uZDgzN2FlZWJkMDBlZmIzOGZmYzBmNzBiZGIzYzc3YmY0ZmVkYjBkMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcApAQCAtOTIsNiArOTIsNyBA
QCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkKICAgICA6
IG1faXRlcmF0aW5nQWN0aXZlRE9NT2JqZWN0cyhmYWxzZSkKICAgICAsIG1faW5EZXN0cnVjdG9y
KGZhbHNlKQogICAgICwgbV9pbkRpc3BhdGNoRXJyb3JFdmVudChmYWxzZSkKKyAgICAsIG1fYWN0
aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZChmYWxzZSkKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNF
KQogICAgICwgbV9oYXNPcGVuRGF0YWJhc2VzKGZhbHNlKQogI2VuZGlmCkBAIC0xMDEsNyArMTAy
LDYgQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpCiBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Ojp+U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpCiB7CiAgICAg
bV9pbkRlc3RydWN0b3IgPSB0cnVlOwotCiAgICAgZm9yIChIYXNoU2V0PENvbnRleHREZXN0cnVj
dGlvbk9ic2VydmVyKj46Oml0ZXJhdG9yIGl0ZXIgPSBtX2Rlc3RydWN0aW9uT2JzZXJ2ZXJzLmJl
Z2luKCk7IGl0ZXIgIT0gbV9kZXN0cnVjdGlvbk9ic2VydmVycy5lbmQoKTsgaXRlciA9IG1fZGVz
dHJ1Y3Rpb25PYnNlcnZlcnMuYmVnaW4oKSkgewogICAgICAgICBDb250ZXh0RGVzdHJ1Y3Rpb25P
YnNlcnZlciogb2JzZXJ2ZXIgPSAqaXRlcjsKICAgICAgICAgbV9kZXN0cnVjdGlvbk9ic2VydmVy
cy5yZW1vdmUob2JzZXJ2ZXIpOwpAQCAtMjA1LDEyICsyMDUsMTIgQEAgYm9vbCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpjYW5TdXNwZW5kQWN0aXZlRE9NT2JqZWN0cygpCiAgICAgbV9pdGVyYXRp
bmdBY3RpdmVET01PYmplY3RzID0gdHJ1ZTsKICAgICBIYXNoTWFwPEFjdGl2ZURPTU9iamVjdCos
IHZvaWQqPjo6aXRlcmF0b3IgYWN0aXZlT2JqZWN0c0VuZCA9IG1fYWN0aXZlRE9NT2JqZWN0cy5l
bmQoKTsKICAgICBmb3IgKEhhc2hNYXA8QWN0aXZlRE9NT2JqZWN0Kiwgdm9pZCo+OjppdGVyYXRv
ciBpdGVyID0gbV9hY3RpdmVET01PYmplY3RzLmJlZ2luKCk7IGl0ZXIgIT0gYWN0aXZlT2JqZWN0
c0VuZDsgKytpdGVyKSB7Ci0gICAgICAgIEFTU0VSVChpdGVyLT5maXJzdC0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpID09IHRoaXMpOworICAgICAgICBBU1NFUlQoaXRlci0+Zmlyc3QtPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSA9PSB0aGlzICYmIGl0ZXItPmZpcnN0LT5tX3N1c3BlbmRVcHRv
ZGF0ZSk7CiAgICAgICAgIGlmICghaXRlci0+Zmlyc3QtPmNhblN1c3BlbmQoKSkgewogICAgICAg
ICAgICAgbV9pdGVyYXRpbmdBY3RpdmVET01PYmplY3RzID0gZmFsc2U7CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KLSAgICB9ICAgIAorICAgIH0KICAgICBtX2l0ZXJhdGlu
Z0FjdGl2ZURPTU9iamVjdHMgPSBmYWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTIyMSwx
OSArMjIxLDIyIEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6c3VzcGVuZEFjdGl2ZURP
TU9iamVjdHMoQWN0aXZlRE9NT2JqZWN0OjpSZWFzb25Gb3JTCiAgICAgbV9pdGVyYXRpbmdBY3Rp
dmVET01PYmplY3RzID0gdHJ1ZTsKICAgICBIYXNoTWFwPEFjdGl2ZURPTU9iamVjdCosIHZvaWQq
Pjo6aXRlcmF0b3IgYWN0aXZlT2JqZWN0c0VuZCA9IG1fYWN0aXZlRE9NT2JqZWN0cy5lbmQoKTsK
ICAgICBmb3IgKEhhc2hNYXA8QWN0aXZlRE9NT2JqZWN0Kiwgdm9pZCo+OjppdGVyYXRvciBpdGVy
ID0gbV9hY3RpdmVET01PYmplY3RzLmJlZ2luKCk7IGl0ZXIgIT0gYWN0aXZlT2JqZWN0c0VuZDsg
KytpdGVyKSB7Ci0gICAgICAgIEFTU0VSVChpdGVyLT5maXJzdC0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpID09IHRoaXMpOworICAgICAgICBBU1NFUlQoaXRlci0+Zmlyc3QtPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSA9PSB0aGlzICYmIGl0ZXItPmZpcnN0LT5tX3N1c3BlbmRVcHRvZGF0ZSk7
CiAgICAgICAgIGl0ZXItPmZpcnN0LT5zdXNwZW5kKHdoeSk7CiAgICAgfQogICAgIG1faXRlcmF0
aW5nQWN0aXZlRE9NT2JqZWN0cyA9IGZhbHNlOworICAgIG1fYWN0aXZlRE9NT2JqZWN0c0FyZVN1
c3BlbmRlZCA9IHRydWU7CisgICAgbV9zdXNwZW5kUmVhc29uID0gd2h5OwogfQogCiB2b2lkIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnJlc3VtZUFjdGl2ZURPTU9iamVjdHMoKQogeworICAgIG1f
YWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCA9IGZhbHNlOwogICAgIC8vIE5vIHByb3RlY3Rp
b24gYWdhaW5zdCBtX2FjdGl2ZURPTU9iamVjdHMgY2hhbmdpbmcgZHVyaW5nIGl0ZXJhdGlvbjog
cmVzdW1lKCkgc2hvdWxkbid0IGV4ZWN1dGUgYXJiaXRyYXJ5IEpTLgogICAgIG1faXRlcmF0aW5n
QWN0aXZlRE9NT2JqZWN0cyA9IHRydWU7CiAgICAgSGFzaE1hcDxBY3RpdmVET01PYmplY3QqLCB2
b2lkKj46Oml0ZXJhdG9yIGFjdGl2ZU9iamVjdHNFbmQgPSBtX2FjdGl2ZURPTU9iamVjdHMuZW5k
KCk7CiAgICAgZm9yIChIYXNoTWFwPEFjdGl2ZURPTU9iamVjdCosIHZvaWQqPjo6aXRlcmF0b3Ig
aXRlciA9IG1fYWN0aXZlRE9NT2JqZWN0cy5iZWdpbigpOyBpdGVyICE9IGFjdGl2ZU9iamVjdHNF
bmQ7ICsraXRlcikgewotICAgICAgICBBU1NFUlQoaXRlci0+Zmlyc3QtPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSA9PSB0aGlzKTsKKyAgICAgICAgQVNTRVJUKGl0ZXItPmZpcnN0LT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkgPT0gdGhpcyAmJiBpdGVyLT5maXJzdC0+bV9zdXNwZW5kVXB0b2Rh
dGUpOwogICAgICAgICBpdGVyLT5maXJzdC0+cmVzdW1lKCk7CiAgICAgfQogICAgIG1faXRlcmF0
aW5nQWN0aXZlRE9NT2JqZWN0cyA9IGZhbHNlOwpAQCAtMjQ1LDcgKzI0OCw3IEBAIHZvaWQgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6c3RvcEFjdGl2ZURPTU9iamVjdHMoKQogICAgIG1faXRlcmF0
aW5nQWN0aXZlRE9NT2JqZWN0cyA9IHRydWU7CiAgICAgSGFzaE1hcDxBY3RpdmVET01PYmplY3Qq
LCB2b2lkKj46Oml0ZXJhdG9yIGFjdGl2ZU9iamVjdHNFbmQgPSBtX2FjdGl2ZURPTU9iamVjdHMu
ZW5kKCk7CiAgICAgZm9yIChIYXNoTWFwPEFjdGl2ZURPTU9iamVjdCosIHZvaWQqPjo6aXRlcmF0
b3IgaXRlciA9IG1fYWN0aXZlRE9NT2JqZWN0cy5iZWdpbigpOyBpdGVyICE9IGFjdGl2ZU9iamVj
dHNFbmQ7ICsraXRlcikgewotICAgICAgICBBU1NFUlQoaXRlci0+Zmlyc3QtPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSA9PSB0aGlzKTsKKyAgICAgICAgQVNTRVJUKGl0ZXItPmZpcnN0LT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgPT0gdGhpcyAmJiBpdGVyLT5maXJzdC0+bV9zdXNwZW5kVXB0
b2RhdGUpOwogICAgICAgICBpdGVyLT5maXJzdC0+c3RvcCgpOwogICAgIH0KICAgICBtX2l0ZXJh
dGluZ0FjdGl2ZURPTU9iamVjdHMgPSBmYWxzZTsKQEAgLTI1NCw2ICsyNTcsMTQgQEAgdm9pZCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpzdG9wQWN0aXZlRE9NT2JqZWN0cygpCiAgICAgY2xvc2VN
ZXNzYWdlUG9ydHMoKTsKIH0KIAordm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpzdXNwZW5k
QWN0aXZlRE9NT2JqZWN0SWZOZWVkZWQoQWN0aXZlRE9NT2JqZWN0KiBvYmplY3QpCit7CisgICAg
QVNTRVJUKG1fYWN0aXZlRE9NT2JqZWN0cy5jb250YWlucyhvYmplY3QpKTsKKyAgICAvLyBFbnN1
cmUgYWxsIEFjdGl2ZURPTU9iamVjdHMgYXJlIHN1c3BlbmRlZCBhbHNvIG5ld2x5IGNyZWF0ZWQg
b25lcy4KKyAgICBpZiAobV9hY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkKQorICAgICAgICBv
YmplY3QtPnN1c3BlbmQobV9zdXNwZW5kUmVhc29uKTsKK30KKwogdm9pZCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpkaWRDcmVhdGVBY3RpdmVET01PYmplY3QoQWN0aXZlRE9NT2JqZWN0KiBvYmpl
Y3QsIHZvaWQqIHVwY2FzdFBvaW50ZXIpCiB7CiAgICAgQVNTRVJUKG9iamVjdCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAppbmRleCBhZWQzNDExZTA2OWIx
NTRiMmViMDlhMGVkODM1ZDczMTZkNDliNDU5Li5kNjNiM2QzYjJmMDE0ZDY2MjRmOWZhZGMxOGVh
NzY0NzQ0ZTgxZDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgKQEAgLTEwMyw5ICsxMDMsMTUgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZXN1
bWVBY3RpdmVET01PYmplY3RzKCk7CiAgICAgdmlydHVhbCB2b2lkIHN0b3BBY3RpdmVET01PYmpl
Y3RzKCk7CiAKKyAgICBib29sIGFjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQoKSBjb25zdCB7
IHJldHVybiBtX2FjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQ7IH0KKworICAgIC8vIENhbGxl
ZCBmcm9tIHRoZSBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1Y3RvcnMgb2YgQWN0aXZlRE9NT2JqZWN0
LgogICAgIHZvaWQgZGlkQ3JlYXRlQWN0aXZlRE9NT2JqZWN0KEFjdGl2ZURPTU9iamVjdCosIHZv
aWQqIHVwY2FzdFBvaW50ZXIpOwogICAgIHZvaWQgd2lsbERlc3Ryb3lBY3RpdmVET01PYmplY3Qo
QWN0aXZlRE9NT2JqZWN0Kik7CiAKKyAgICAvLyBDYWxsZWQgYWZ0ZXIgdGhlIGNvbnN0cnVjdGlv
biBvZiBhbiBBY3RpdmVET01PYmplY3QgdG8gc3luY2hyb25pemUgc3VzcGVuZCBzdGF0ZS4KKyAg
ICB2b2lkIHN1c3BlbmRBY3RpdmVET01PYmplY3RJZk5lZWRlZChBY3RpdmVET01PYmplY3QqKTsK
KwogICAgIHR5cGVkZWYgY29uc3QgSGFzaE1hcDxBY3RpdmVET01PYmplY3QqLCB2b2lkKj4gQWN0
aXZlRE9NT2JqZWN0c01hcDsKICAgICBBY3RpdmVET01PYmplY3RzTWFwJiBhY3RpdmVET01PYmpl
Y3RzKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmVET01PYmplY3RzOyB9CiAKQEAgLTIwNiw2ICsy
MTIsOSBAQCBwcml2YXRlOgogICAgIGNsYXNzIFBlbmRpbmdFeGNlcHRpb247CiAgICAgT3duUHRy
PFZlY3RvcjxPd25QdHI8UGVuZGluZ0V4Y2VwdGlvbj4gPiA+IG1fcGVuZGluZ0V4Y2VwdGlvbnM7
CiAKKyAgICBib29sIG1fYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZDsKKyAgICBBY3RpdmVE
T01PYmplY3Q6OlJlYXNvbkZvclN1c3BlbnNpb24gbV9zdXNwZW5kUmVhc29uOworCiAjaWYgRU5B
QkxFKFNRTF9EQVRBQkFTRSkKICAgICBSZWZQdHI8RGF0YWJhc2VUaHJlYWQ+IG1fZGF0YWJhc2VU
aHJlYWQ7CiAgICAgYm9vbCBtX2hhc09wZW5EYXRhYmFzZXM7IC8vIFRoaXMgbmV2ZXIgY2hhbmdl
cyBiYWNrIHRvIGZhbHNlLCBldmVuIGFmdGVyIHRoZSBkYXRhYmFzZSB0aHJlYWQgaXMgY2xvc2Vk
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbS5jcHAKaW5kZXggYWMzODY5MDNi
MThmYmJjYjFjNTBlYTQ3ODIyMjAxOTExZTc2NzIyMC4uOTc5OWUxMjA3OWU4YWVkNDIzNTdhODE2
ZmJjNjE1YmQ5YmJhMGI0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01G
aWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW0u
Y3BwCkBAIC01Niw4ICs1Niw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFBhc3NSZWZQdHI8RE9N
RmlsZVN5c3RlbT4gRE9NRmlsZVN5c3RlbTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+
IGFzeW5jRmlsZVN5c3RlbSkKIHsKICAgICBSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZVN5c3Rl
bShhZG9wdFJlZihuZXcgRE9NRmlsZVN5c3RlbShjb250ZXh0LCBuYW1lLCBhc3luY0ZpbGVTeXN0
ZW0pKSk7CisgICAgZmlsZVN5c3RlbS0+c3VzcGVuZElmTmVlZGVkKCk7CiAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRPcGVuRmlsZVN5c3RlbShmaWxlU3lzdGVtLmdldCgpKTsKLSAg
ICByZXR1cm4gZmlsZVN5c3RlbTsKKyAgICByZXR1cm4gZmlsZVN5c3RlbS5yZWxlYXNlKCk7CiB9
CiAKIERPTUZpbGVTeXN0ZW06OkRPTUZpbGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4g
YXN5bmNGaWxlU3lzdGVtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxl
UmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAKaW5kZXgg
MjljNTk4NDcwNzNiNDNjMjI0NWM1MjA3MzI0ZGNjZWJiYTFjYWE0NS4uMDdjNGI2NzQ2MTExMTYx
ZWZmMjk5NTlhYjFkMmZiZGMxYzAxMzEyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFk
ZXIuY3BwCkBAIC00OCw2ICs0OCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBj
b25zdCBkb3VibGUgcHJvZ3Jlc3NOb3RpZmljYXRpb25JbnRlcnZhbE1TID0gNTA7CiAKK1Bhc3NS
ZWZQdHI8RmlsZVJlYWRlcj4gRmlsZVJlYWRlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQpCit7CisgICAgUmVmUHRyPEZpbGVSZWFkZXI+IGZpbGVSZWFkZXIoYWRvcHRS
ZWYobmV3IEZpbGVSZWFkZXIoY29udGV4dCkpKTsKKyAgICBmaWxlUmVhZGVyLT5zdXNwZW5kSWZO
ZWVkZWQoKTsKKyAgICByZXR1cm4gZmlsZVJlYWRlci5yZWxlYXNlKCk7Cit9CisKIEZpbGVSZWFk
ZXI6OkZpbGVSZWFkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICA6IEFj
dGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQogICAgICwgbV9zdGF0ZShFTVBUWSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlUmVhZGVyLmgKaW5kZXggODA0ZGQyOTFiMjNmOGEzZWQ2NWY1NzY5MWVi
NzlhOWVkMjE5MDg0YS4uZWNkZDQ4NTZjNGMzYzM2OTZjOTc0MTY4NTc3ZTU5YzU0YjM4NTA3MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmgKQEAgLTUxLDEwICs1MSw3IEBAIHR5cGVk
ZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKIGNsYXNzIEZpbGVSZWFkZXIgOiBwdWJsaWMgUmVmQ291
bnRlZDxGaWxlUmVhZGVyPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIEV2ZW50VGFy
Z2V0LCBwdWJsaWMgRmlsZVJlYWRlckxvYWRlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8RmlsZVJlYWRlcj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZpbGVSZWFkZXIoY29u
dGV4dCkpOwotICAgIH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxGaWxlUmVhZGVyPiBjcmVhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogCiAgICAgdmlydHVhbCB+RmlsZVJlYWRlcigpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVXcml0ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlV3JpdGVyLmNwcAppbmRleCAyYjI1Y2ZhZjk5MzM5NGE3
YWI3OGM5YjY0MGVlMTQ4ZGM3MTRhNmUzLi43Y2Q5YjgzNDhiYWIyOWIzMDUxNjk3Y2NkNDIwNjNl
MjZiNTMxZGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVXcml0ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVdyaXRlci5jcHAKQEAgLTQ1LDYg
KzQ1LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IGludCBrTWF4UmVj
dXJzaW9uRGVwdGggPSAzOwogCitQYXNzUmVmUHRyPEZpbGVXcml0ZXI+IEZpbGVXcml0ZXI6OmNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQoreworICAgIFJlZlB0cjxGaWxl
V3JpdGVyPiBmaWxlV3JpdGVyKGFkb3B0UmVmKG5ldyBGaWxlV3JpdGVyKGNvbnRleHQpKSk7Cisg
ICAgZmlsZVdyaXRlci0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgcmV0dXJuIGZpbGVXcml0ZXIu
cmVsZWFzZSgpOworfQorCiBGaWxlV3JpdGVyOjpGaWxlV3JpdGVyKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQpCiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKICAg
ICAsIG1fcmVhZHlTdGF0ZShJTklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9GaWxlV3JpdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVXcml0ZXIuaAppbmRl
eCAyYjU5N2ExODhiNzU5M2M4MWE0MTJkOTE1Zjk2OGM0N2NjZmY2NjM1Li45NDYxMzUwNzI2YWE1
ZTJkZmRmNDI1YzIwMDBiNWE2NjI0ZjkwOGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0ZpbGVXcml0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVXcml0
ZXIuaApAQCAtNDgsMTAgKzQ4LDcgQEAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAog
Y2xhc3MgRmlsZVdyaXRlciA6IHB1YmxpYyBGaWxlV3JpdGVyQmFzZSwgcHVibGljIEFjdGl2ZURP
TU9iamVjdCwgcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMgQXN5bmNGaWxlV3JpdGVyQ2xpZW50
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxGaWxlV3JpdGVyPiBjcmVhdGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgRmlsZVdyaXRlcihjb250ZXh0KSk7Ci0gICAgfQorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEZpbGVXcml0ZXI+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAKICAgICBl
bnVtIFJlYWR5U3RhdGUgewogICAgICAgICBJTklUID0gMCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9D
YWNoZWRGcmFtZS5jcHAKaW5kZXggNjBmYWIwNDNmOTAwMjA5MTQxNDE0NTkwMzdhNTJhZDhhYTJm
YmFiMy4uOWIwZDJmZTgyMmYyN2ZhMGRkYWZlODZjMTYwYmZmMWE5N2QxMGQwMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAKQEAgLTE2OCw3ICsxNjgsNiBAQCBDYWNoZWRG
cmFtZTo6Q2FjaGVkRnJhbWUoRnJhbWUqIGZyYW1lKQogICAgIC8vIGJ1dCBhZnRlciB3ZSd2ZSBm
aXJlZCB0aGUgcGFnZWhpZGUgZXZlbnQsIGluIGNhc2UgdGhhdCBjcmVhdGVzIG1vcmUgb2JqZWN0
cy4KICAgICAvLyBTdXNwZW5kaW5nIG11c3QgYWxzbyBoYXBwZW4gYWZ0ZXIgd2UndmUgcmVjdXJz
ZWQgb3ZlciBjaGlsZCBmcmFtZXMsIGluIGNhc2UKICAgICAvLyB0aG9zZSBjcmVhdGUgbW9yZSBv
YmplY3RzLgotICAgIC8vIEZJWE1FOiBJdCdzIHN0aWxsIHBvc3NpYmxlIHRvIGhhdmUgb2JqZWN0
cyBjcmVhdGVkIGFmdGVyIHN1c3BlbmRpbmcgaW4gc29tZSBjYXNlcywgc2VlIGh0dHA6Ly93ZWJr
aXQub3JnL2IvNTM3MzMgZm9yIG1vcmUgZGV0YWlscy4KICAgICBtX2RvY3VtZW50LT5kb2N1bWVu
dFdpbGxTdXNwZW5kRm9yUGFnZUNhY2hlKCk7CiAgICAgbV9kb2N1bWVudC0+c3VzcGVuZFNjcmlw
dGVkQW5pbWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOwogICAgIG1fZG9jdW1lbnQtPnN1c3Bl
bmRBY3RpdmVET01PYmplY3RzKEFjdGl2ZURPTU9iamVjdDo6RG9jdW1lbnRXaWxsQmVjb21lSW5h
Y3RpdmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXVkaW9FbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5jcHAKaW5kZXggZTNk
Y2Y0N2YxOGM5MTYzZjA3NmM4NWZiMDA1ZjNkZTUxMTY4ZjQwZS4uZGMxMGIzYTJiNzk2ZWYyZGFj
NTMzYTAwZmJjN2U1MzJmMWNkMDY5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQXVkaW9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdWRpb0Vs
ZW1lbnQuY3BwCkBAIC00Myw3ICs0Myw5IEBAIEhUTUxBdWRpb0VsZW1lbnQ6OkhUTUxBdWRpb0Vs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtCiAKIFBh
c3NSZWZQdHI8SFRNTEF1ZGlvRWxlbWVudD4gSFRNTEF1ZGlvRWxlbWVudDo6Y3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBjcmVhdGVk
QnlQYXJzZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MQXVkaW9FbGVtZW50KHRh
Z05hbWUsIGRvY3VtZW50LCBjcmVhdGVkQnlQYXJzZXIpKTsKKyAgICBSZWZQdHI8SFRNTEF1ZGlv
RWxlbWVudD4gYXVkaW9FbGVtZW50KGFkb3B0UmVmKG5ldyBIVE1MQXVkaW9FbGVtZW50KHRhZ05h
bWUsIGRvY3VtZW50LCBjcmVhdGVkQnlQYXJzZXIpKSk7CisgICAgYXVkaW9FbGVtZW50LT5zdXNw
ZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gYXVkaW9FbGVtZW50LnJlbGVhc2UoKTsKIH0KIAog
UGFzc1JlZlB0cjxIVE1MQXVkaW9FbGVtZW50PiBIVE1MQXVkaW9FbGVtZW50OjpjcmVhdGVGb3JK
U0NvbnN0cnVjdG9yKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBzcmMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5jcHAKaW5kZXggMDUzZmZhODkyYTQ1
OGQzNDJkMTFhMjhjMTVmNjYzMDc4Y2JmNTgyYy4uMmZlMjI0ZjY2NGJjZWJjMjU5NzlhNDBmOTVl
OTRiNmJmZTUwYTgxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFycXVl
ZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50
LmNwcApAQCAtNDgsNyArNDgsOSBAQCBpbmxpbmUgSFRNTE1hcnF1ZWVFbGVtZW50OjpIVE1MTWFy
cXVlZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdQogCiBQYXNzUmVm
UHRyPEhUTUxNYXJxdWVlRWxlbWVudD4gSFRNTE1hcnF1ZWVFbGVtZW50OjpjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIHJldHVy
biBhZG9wdFJlZihuZXcgSFRNTE1hcnF1ZWVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7Cisg
ICAgUmVmUHRyPEhUTUxNYXJxdWVlRWxlbWVudD4gbWFycXVlZUVsZW1lbnQoYWRvcHRSZWYobmV3
IEhUTUxNYXJxdWVlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpKTsKKyAgICBtYXJxdWVlRWxl
bWVudC0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgcmV0dXJuIG1hcnF1ZWVFbGVtZW50LnJlbGVh
c2UoKTsKIH0KIAogYm9vbCBIVE1MTWFycXVlZUVsZW1lbnQ6Om1hcFRvRW50cnkoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0ck5hbWUsIE1hcHBlZEF0dHJpYnV0ZUVudHJ5JiByZXN1bHQpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAppbmRleCBmZWQyZmE0MzU2
NTRkNWM0YWUxOTYxMWIzM2ZkNTgwZTFjZWUwNThiLi45MWFjYzQyZmQ0OTIwOGEyNDRkZGI1MGVh
OWRkNjBiZjY2ODQ1Yzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRl
b0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5j
cHAKQEAgLTU0LDcgKzU0LDkgQEAgaW5saW5lIEhUTUxWaWRlb0VsZW1lbnQ6OkhUTUxWaWRlb0Vs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQKIAogUGFzc1JlZlB0
cjxIVE1MVmlkZW9FbGVtZW50PiBIVE1MVmlkZW9FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIGNyZWF0ZWRCeVBhcnNl
cikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxWaWRlb0VsZW1lbnQodGFnTmFtZSwg
ZG9jdW1lbnQsIGNyZWF0ZWRCeVBhcnNlcikpOworICAgIFJlZlB0cjxIVE1MVmlkZW9FbGVtZW50
PiB2aWRlb0VsZW1lbnQoYWRvcHRSZWYobmV3IEhUTUxWaWRlb0VsZW1lbnQodGFnTmFtZSwgZG9j
dW1lbnQsIGNyZWF0ZWRCeVBhcnNlcikpKTsKKyAgICB2aWRlb0VsZW1lbnQtPnN1c3BlbmRJZk5l
ZWRlZCgpOworICAgIHJldHVybiB2aWRlb0VsZW1lbnQucmVsZWFzZSgpOwogfQogCiBib29sIEhU
TUxWaWRlb0VsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRl
eHQmIGNvbnRleHQpIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vUGVl
ckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rp
b24uY3BwCmluZGV4IGJiNDkzZDc2ODM4OWY4ODA0NDRjMWJhMzVkMmY3YjMyZWU2M2U4MjQuLjdl
NWZjOWFlZjZjODYwNWJkMDU1NGY3NjE1NWM5MGYwMWNiMTk2MDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbi5jcHAKQEAgLTQxLDYgKzQxLDcgQEAgUGFz
c1JlZlB0cjxQZWVyQ29ubmVjdGlvbj4gUGVlckNvbm5lY3Rpb246OmNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXgKICAgICBSZWZQdHI8UGVlckNvbm5lY3Rpb24+IGNvbm5lY3Rp
b24gPSBhZG9wdFJlZihuZXcgUGVlckNvbm5lY3Rpb24oY29udGV4dCwgc2VydmVyQ29uZmlndXJh
dGlvbiwgc2lnbmFsaW5nQ2FsbGJhY2spKTsKICAgICBjb25uZWN0aW9uLT5zZXRQZW5kaW5nQWN0
aXZpdHkoY29ubmVjdGlvbi5nZXQoKSk7CiAgICAgY29ubmVjdGlvbi0+c2NoZWR1bGVJbml0aWFs
TmVnb3RpYXRpb24oKTsKKyAgICBjb25uZWN0aW9uLT5zdXNwZW5kSWZOZWVkZWQoKTsKIAogICAg
IHJldHVybiBjb25uZWN0aW9uLnJlbGVhc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAppbmRleCBkNzk5MWYyZDljZDk4ZDRlZTI1MWExMWI3
ZWQ0YjdhMGE1MTExNzMxLi43NDk2NGRjNzdhZGFkMDgxY2IwZWYxOWNhNDRhZDRhNDhlMDg3ZTcy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCkBA
IC0xMDIsMTIgKzEwMiwxNiBAQCBOb3RpZmljYXRpb246On5Ob3RpZmljYXRpb24oKQogCiBQYXNz
UmVmUHRyPE5vdGlmaWNhdGlvbj4gTm90aWZpY2F0aW9uOjpjcmVhdGUoY29uc3QgS1VSTCYgdXJs
LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYywgUGFz
c1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IHByb3ZpZGVyKSAKIHsgCi0gICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBOb3RpZmljYXRpb24odXJsLCBjb250ZXh0LCBlYywgcHJvdmlkZXIpKTsKKyAg
ICBSZWZQdHI8Tm90aWZpY2F0aW9uPiBub3RpZmljYXRpb24oYWRvcHRSZWYobmV3IE5vdGlmaWNh
dGlvbih1cmwsIGNvbnRleHQsIGVjLCBwcm92aWRlcikpKTsKKyAgICBub3RpZmljYXRpb24tPnN1
c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiBub3RpZmljYXRpb24ucmVsZWFzZSgpOwogfQog
CiBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4gTm90aWZpY2F0aW9uOjpjcmVhdGUoY29uc3QgTm90
aWZpY2F0aW9uQ29udGVudHMmIGNvbnRlbnRzLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBFeGNlcHRpb25Db2RlJiBlYywgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IHBy
b3ZpZGVyKSAKIHsgCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBOb3RpZmljYXRpb24oY29udGVu
dHMsIGNvbnRleHQsIGVjLCBwcm92aWRlcikpOworICAgIFJlZlB0cjxOb3RpZmljYXRpb24+IG5v
dGlmaWNhdGlvbihhZG9wdFJlZihuZXcgTm90aWZpY2F0aW9uKGNvbnRlbnRzLCBjb250ZXh0LCBl
YywgcHJvdmlkZXIpKSk7CisgICAgbm90aWZpY2F0aW9uLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAg
ICByZXR1cm4gbm90aWZpY2F0aW9uLnJlbGVhc2UoKTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5n
JiBOb3RpZmljYXRpb246OmludGVyZmFjZU5hbWUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuY3BwCmluZGV4IDQ1ZGMzNDVk
ZmE2ZmRjMTRlYTdmNmMyMzk1YWJkYmVmMjZiNTFlOTIuLmU1OGE0Njg4OTZlZTQzMzBjYjc4ZGZk
ZTRjZWZmZTZmMjgyNTY2MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uQ2VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbkNlbnRlci5jcHAKQEAgLTQxLDYgKzQxLDEzIEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IE5vdGlmaWNhdGlv
bkNlbnRlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIE5vdGlmaWNh
dGlvblByZXNlbnRlciogcHJlc2VudGVyKQoreworICAgIFJlZlB0cjxOb3RpZmljYXRpb25DZW50
ZXI+IG5vdGlmaWNhdGlvbkNlbnRlcihhZG9wdFJlZihuZXcgTm90aWZpY2F0aW9uQ2VudGVyKGNv
bnRleHQsIHByZXNlbnRlcikpKTsKKyAgICBub3RpZmljYXRpb25DZW50ZXItPnN1c3BlbmRJZk5l
ZWRlZCgpOworICAgIHJldHVybiBub3RpZmljYXRpb25DZW50ZXIucmVsZWFzZSgpOworfQorCiBO
b3RpZmljYXRpb25DZW50ZXI6Ok5vdGlmaWNhdGlvbkNlbnRlcihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBOb3RpZmljYXRpb25QcmVzZW50ZXIqIHByZXNlbnRlcikKICAgICA6IEFj
dGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQogICAgICwgbV9ub3RpZmljYXRpb25QcmVzZW50
ZXIocHJlc2VudGVyKSB7fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb25DZW50ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uQ2VudGVyLmgKaW5kZXggMjNiMzFlMDMxZjZkNDEzZGQ5MjY5YWRhZTk4NjZiMTA0
MTMxMjAyYi4uNDAyY2NiYTkzOGIyZmVlMDgxZjhhNmE4ZDdiZWNlZmY3OGNjMjY5MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5oCkBA
IC01MCw3ICs1MCw3IEBAIGNsYXNzIFZvaWRDYWxsYmFjazsKIAogY2xhc3MgTm90aWZpY2F0aW9u
Q2VudGVyIDogcHVibGljIFJlZkNvdW50ZWQ8Tm90aWZpY2F0aW9uQ2VudGVyPiwgcHVibGljIEFj
dGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Tm90aWZpY2F0
aW9uQ2VudGVyPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgTm90aWZp
Y2F0aW9uUHJlc2VudGVyKiBwcmVzZW50ZXIpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBOb3RpZmlj
YXRpb25DZW50ZXIoY29udGV4dCwgcHJlc2VudGVyKSk7IH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxOb3RpZmljYXRpb25DZW50ZXI+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTm90
aWZpY2F0aW9uUHJlc2VudGVyKik7CiAKICAgICBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4gY3Jl
YXRlSFRNTE5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIFVSSSwgRXhjZXB0aW9uQ29kZSYgZWMp
CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01UaW1lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNwcAppbmRleCAwYTk0ZTdlZjhjOWI0NThlMWZm
OTdmMDg2N2FmNTE3YjhlZjc4M2MzLi5kYWQ3NmY1OGRmZmM2MjYwNjRmYjIzNzI5YTg1MWEyNTAz
YzQ5ZmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNwcApAQCAtOTIsNiArOTIsNyBAQCBpbnQg
RE9NVGltZXI6Omluc3RhbGwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc093
blB0cjxTY2hlZHVsZWRBY3RpbwogICAgIC8vIG9yIGlmIGl0IGlzIGEgb25lLXRpbWUgdGltZXIg
YW5kIGl0IGhhcyBmaXJlZCAoRE9NVGltZXI6OmZpcmVkKS4KICAgICBET01UaW1lciogdGltZXIg
PSBuZXcgRE9NVGltZXIoY29udGV4dCwgYWN0aW9uLCB0aW1lb3V0LCBzaW5nbGVTaG90KTsKIAor
ICAgIHRpbWVyLT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZEluc3RhbGxUaW1lcihjb250ZXh0LCB0aW1lci0+bV90aW1lb3V0SWQsIHRpbWVvdXQs
IHNpbmdsZVNob3QpOwogCiAgICAgcmV0dXJuIHRpbWVyLT5tX3RpbWVvdXRJZDsKQEAgLTExNCw3
ICsxMTUsNyBAQCB2b2lkIERPTVRpbWVyOjpmaXJlZCgpCiB7CiAgICAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICB0aW1lck5l
c3RpbmdMZXZlbCA9IG1fbmVzdGluZ0xldmVsOwotICAgIAorICAgIEFTU0VSVCghY29udGV4dC0+
YWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgpKTsKICAgICBVc2VyR2VzdHVyZUluZGljYXRv
ciBnZXN0dXJlSW5kaWNhdG9yKG1fc2hvdWxkRm9yd2FyZFVzZXJHZXN0dXJlID8gRGVmaW5pdGVs
eVByb2Nlc3NpbmdVc2VyR2VzdHVyZSA6IFBvc3NpYmx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsK
ICAgICAKICAgICAvLyBPbmx5IHRoZSBmaXJzdCBleGVjdXRpb24gb2YgYSBtdWx0aS1zaG90IHRp
bWVyIHNob3VsZCBnZXQgYW4gYWZmaXJtYXRpdmUgdXNlciBnZXN0dXJlIGluZGljYXRvci4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKaW5kZXggZWEwNjYwMGIxMzg0ZDExMTcyZTRhYzJi
OWUzZDYxZmI2YWJkNjFkNi4uNTQzZjFlMWFjNzQyMzhhMzM5ZTIxODEyOTgwMjgzMGY0YWEyOTQx
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKQEAgLTk4LDYgKzk4LDcgQEAgUGFz
c1JlZlB0cjxFdmVudFNvdXJjZT4gRXZlbnRTb3VyY2U6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBjb24KIAogICAgIHNvdXJjZS0+c2V0UGVuZGluZ0FjdGl2aXR5KHNv
dXJjZS5nZXQoKSk7CiAgICAgc291cmNlLT5jb25uZWN0KCk7CisgICAgc291cmNlLT5zdXNwZW5k
SWZOZWVkZWQoKTsKIAogICAgIHJldHVybiBzb3VyY2UucmVsZWFzZSgpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TdXNwZW5kYWJsZVRpbWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU3VzcGVuZGFibGVUaW1lci5jcHAKaW5kZXggMmE0ZDJlNTIxY2E4YzU5MDdjMTYw
NGI3NGRhNjg4ZTUzMDUyMTExMS4uZGQzZTg5ZjE4YmVmNmEwMzFhZWNjYTdkYzdkZjk5ZGVhMmZl
MTk5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TdXNwZW5kYWJsZVRpbWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1c3BlbmRhYmxlVGltZXIuY3BwCkBAIC0zNSw4
ICszNSw4IEBAIFN1c3BlbmRhYmxlVGltZXI6OlN1c3BlbmRhYmxlVGltZXIoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCkKICAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlz
KQogICAgICwgbV9uZXh0RmlyZUludGVydmFsKDApCiAgICAgLCBtX3JlcGVhdEludGVydmFsKDAp
Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICwgbV9hY3RpdmUoZmFsc2UpCisjaWYgIUFTU0VS
VF9ESVNBQkxFRAogICAgICwgbV9zdXNwZW5kZWQoZmFsc2UpCiAjZW5kaWYKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJEYXRhYmFzZS5jcHAKaW5kZXggYzRiNzNjZWM1MjczMjhjNWZkYjhiZTgw
MzVkNjFiZjA5Y2RhYThhMy4uMjU2NTBmMzkyN2ViODljMjc1ZjM2OGNhNTUxMWVhNzk0OGUzYmIz
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5jcHAKQEAgLTUwLDcgKzUwLDkg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNzUmVmUHRyPElEQkRhdGFiYXNlPiBJREJEYXRh
YmFzZTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8
SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBkYXRhYmFzZSkKIHsKLSAgICByZXR1cm4gYWRv
cHRSZWYobmV3IElEQkRhdGFiYXNlKGNvbnRleHQsIGRhdGFiYXNlKSk7CisgICAgUmVmUHRyPElE
QkRhdGFiYXNlPiBpZGJEYXRhYmFzZShhZG9wdFJlZihuZXcgSURCRGF0YWJhc2UoY29udGV4dCwg
ZGF0YWJhc2UpKSk7CisgICAgaWRiRGF0YWJhc2UtPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJl
dHVybiBpZGJEYXRhYmFzZS5yZWxlYXNlKCk7CiB9CiAKIElEQkRhdGFiYXNlOjpJREJEYXRhYmFz
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNl
QmFja2VuZEludGVyZmFjZT4gYmFja2VuZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3Qu
Y3BwCmluZGV4IDk2OGZiNTBjZTA4NDlmNTE4NTcwNTk0OTc2NTgzMmY1MTI4MzYyYjguLjliZmNk
ZDdjMWFkM2FjOWMwODA1MDYwZjNkZWMyOWNlNDcxYzdmNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJSZXF1ZXN0LmNwcApAQCAtNDUsNyArNDUsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCUmVxdWVzdDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIElEQlRyYW5zYWN0
aW9uKiB0cmFuc2FjdGlvbikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQlJlcXVlc3Qo
Y29udGV4dCwgc291cmNlLCB0cmFuc2FjdGlvbikpOworICAgIFJlZlB0cjxJREJSZXF1ZXN0PiBy
ZXF1ZXN0KGFkb3B0UmVmKG5ldyBJREJSZXF1ZXN0KGNvbnRleHQsIHNvdXJjZSwgdHJhbnNhY3Rp
b24pKSk7CisgICAgcmVxdWVzdC0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgcmV0dXJuIHJlcXVl
c3QucmVsZWFzZSgpOwogfQogCiBJREJSZXF1ZXN0OjpJREJSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIElEQlRyYW5zYWN0
aW9uKiB0cmFuc2FjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
VHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5j
cHAKaW5kZXggMTQwZGYwNWFhZDk1YWM1NWU3NDcwNTU5OTMwNjgzZWI4NDEzZjFlZS4uOTA0ODc3
MDQ1ZDFiMzU0YTViMTY1MjEwYjczZGVkNTNiNjlhZjU0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9JREJUcmFuc2FjdGlvbi5jcHAKQEAgLTQyLDcgKzQyLDkgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBJREJUcmFuc2FjdGlvbjo6Y3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBJREJEYXRhYmFzZSogZGIpCiB7Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBJREJUcmFuc2FjdGlvbihjb250ZXh0LCBiYWNrZW5kLCBkYikpOwor
ICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24oYWRvcHRSZWYobmV3IElEQlRy
YW5zYWN0aW9uKGNvbnRleHQsIGJhY2tlbmQsIGRiKSkpOworICAgIHRyYW5zYWN0aW9uLT5zdXNw
ZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gdHJhbnNhY3Rpb24ucmVsZWFzZSgpOwogfQogCiBJ
REJUcmFuc2FjdGlvbjo6SURCVHJhbnNhY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQs
IElEQkRhdGFiYXNlKiBkYikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3Bw
CmluZGV4IDBjMTY2NGZiODQ4OWM3Njg0MzlmZWU4N2NjZjIwYjk5ZmVlZjMyM2EuLmQ3ZjczMTA5
NmI0ZWEzZGY4OWZkNGZiZGRjYjY2NWZkNjU1MmM2MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVk
aW8vQXVkaW9Db250ZXh0LmNwcApAQCAtMTAyLDggKzEwMiwxMCBAQCBQYXNzUmVmUHRyPEF1ZGlv
Q29udGV4dD4gQXVkaW9Db250ZXh0OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgaWYgKHNfaGFyZHdhcmVDb250ZXh0Q291bnQgPj0g
TWF4SGFyZHdhcmVDb250ZXh0cykKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIAotICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgQXVkaW9Db250ZXh0KGRvY3VtZW50KSk7CisKKyAgICBSZWZQdHI8
QXVkaW9Db250ZXh0PiBhdWRpb0NvbnRleHQoYWRvcHRSZWYobmV3IEF1ZGlvQ29udGV4dChkb2N1
bWVudCkpKTsKKyAgICBhdWRpb0NvbnRleHQtPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVy
biBhdWRpb0NvbnRleHQucmVsZWFzZSgpOwogfQogCiBQYXNzUmVmUHRyPEF1ZGlvQ29udGV4dD4g
QXVkaW9Db250ZXh0OjpjcmVhdGVPZmZsaW5lQ29udGV4dChEb2N1bWVudCogZG9jdW1lbnQsIHVu
c2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywgZmxvYXQgc2Ft
cGxlUmF0ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNv
Y2tldC5jcHAKaW5kZXggNWUyMTNiODcxNjBlNDgyNDFjMTQxYzg1MWQ0ODAzMWNmNDg0YzU4OS4u
MzAxMGVhMzBlNWI3YmVhZjgxMWMyZjVmMTdlZTc4MmM4ODIxNzUxMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcApAQCAtMTY0LDYgKzE2NCwxMyBAQCBXZWJTb2NrZXQ6
On5XZWJTb2NrZXQoKQogICAgICAgICBtX2NoYW5uZWwtPmRpc2Nvbm5lY3QoKTsKIH0KIAorUGFz
c1JlZlB0cjxXZWJTb2NrZXQ+IFdlYlNvY2tldDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQpCit7CisgICAgUmVmUHRyPFdlYlNvY2tldD4gd2ViU29ja2V0KGFkb3B0UmVm
KG5ldyBXZWJTb2NrZXQoY29udGV4dCkpKTsKKyAgICB3ZWJTb2NrZXQtPnN1c3BlbmRJZk5lZWRl
ZCgpOworICAgIHJldHVybiB3ZWJTb2NrZXQucmVsZWFzZSgpOworfQorCiB2b2lkIFdlYlNvY2tl
dDo6Y29ubmVjdChjb25zdCBTdHJpbmcmIHVybCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAg
VmVjdG9yPFN0cmluZz4gcHJvdG9jb2xzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vi
c29ja2V0cy9XZWJTb2NrZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0
LmgKaW5kZXggYjg2MGI3NWM3YTc5ZDNiMmVjYjczOGUyODc1ZTljMTM1ZGE5YjUzMy4uY2FlNTdk
MmE3NjNlNjE3MTRkNjkyMTE3ZGY4NmYyMDQ0YjU1YjY1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5oCkBAIC01Myw3ICs1Myw3IEBAIGNsYXNzIFdlYlNvY2tldCA6IHB1Ymxp
YyBSZWZDb3VudGVkPFdlYlNvY2tldD4sIHB1YmxpYyBFdmVudFRhcmdldCwgcHVibGljIEFjdGl2
CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgc2V0SXNBdmFpbGFibGUoYm9vbCk7CiAgICAgc3Rh
dGljIGJvb2wgaXNBdmFpbGFibGUoKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJTb2NrZXQ+
IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KSB7IHJldHVybiBhZG9wdFJl
ZihuZXcgV2ViU29ja2V0KGNvbnRleHQpKTsgfQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlNv
Y2tldD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKICAgICB2aXJ0dWFsIH5XZWJT
b2NrZXQoKTsKIAogICAgIGVudW0gU3RhdGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRX
b3JrZXIuY3BwCmluZGV4IGZmMDc5MmM1NDAyNDA3MDM3MmFlZTY5ZTdiMjhkOWI0OGY5OTJlMjUu
LjA5NmUwMDliMWZhZDVlMzY5ZmU5NTA0Y2U1ZGNhYmMxMGZiZmUyNDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1NoYXJlZFdvcmtlci5jcHAKQEAgLTY0LDYgKzY0LDcgQEAgUGFzc1JlZlB0cjxT
aGFyZWRXb3JrZXI+IFNoYXJlZFdvcmtlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIGMKIAogICAgIFNoYXJlZFdvcmtlclJlcG9zaXRvcnk6OmNvbm5lY3Qod29ya2Vy
LmdldCgpLCByZW1vdGVQb3J0LnJlbGVhc2UoKSwgc2NyaXB0VVJMLCBuYW1lLCBlYyk7CiAKKyAg
ICB3b3JrZXItPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkQ3JlYXRlV29ya2VyKGNvbnRleHQsIHdvcmtlci0+YXNJRCgpLCBzY3JpcHRVUkwuc3Ry
aW5nKCksIHRydWUpOwogCiAgICAgcmV0dXJuIHdvcmtlci5yZWxlYXNlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlci5jcHAKaW5kZXggYjMyMzZhN2NmNzE3YTk5Zjc3NmM3ZTdkNjZiZTVhNTViZDE0
MjE1MS4uNDcxM2IwN2MxNWY2YTZmYzc4NzRlZDk3NzdhOTJiZjk0ZjNkMDk0YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyLmNwcApAQCAtNzMsNiArNzMsNyBAQCBQYXNzUmVmUHRyPFdvcmtlcj4g
V29ya2VyOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3Ry
aW5nJgogI2VuZGlmCiAgICAgd29ya2VyLT5tX3NjcmlwdExvYWRlci0+bG9hZEFzeW5jaHJvbm91
c2x5KGNvbnRleHQsIHNjcmlwdFVSTCwgRGVueUNyb3NzT3JpZ2luUmVxdWVzdHMsIHdvcmtlci5n
ZXQoKSk7CiAKKyAgICB3b3JrZXItPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlV29ya2VyKGNvbnRleHQsIHdvcmtlci0+YXNJRCgpLCBz
Y3JpcHRVUkwuc3RyaW5nKCksIGZhbHNlKTsKIAogICAgIHJldHVybiB3b3JrZXIucmVsZWFzZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggNmJlNThhYWNmMWQ2Njc1
OThmZWUyNjA1NjBjZGE3ZDU2YTdkMjAwZi4uYTBmYjE5MWMxMGI3ZjAwM2M2NGM0ODU0MTMzNDc3
NzE5MDc1M2I3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0xNTQs
NyArMTU0LDEwIEBAIHN0YXRpYyB2b2lkIGxvZ0NvbnNvbGVFcnJvcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG1lc3NhCiAKIFBhc3NSZWZQdHI8WE1MSHR0
cFJlcXVlc3Q+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4pCiB7Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBYTUxIdHRwUmVxdWVzdChjb250ZXh0LCBzZWN1cml0eU9y
aWdpbikpOworICAgIFJlZlB0cjxYTUxIdHRwUmVxdWVzdD4geG1sSHR0cFJlcXVlc3QoYWRvcHRS
ZWYobmV3IFhNTEh0dHBSZXF1ZXN0KGNvbnRleHQsIHNlY3VyaXR5T3JpZ2luKSkpOworICAgIHht
bEh0dHBSZXF1ZXN0LT5zdXNwZW5kSWZOZWVkZWQoKTsKKworICAgIHJldHVybiB4bWxIdHRwUmVx
dWVzdC5yZWxlYXNlKCk7CiB9CiAKIFhNTEh0dHBSZXF1ZXN0OjpYTUxIdHRwUmVxdWVzdChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBz
ZWN1cml0eU9yaWdpbikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyZDIzNzcwYTMzZDAwNGU3MGQxYWE5YTZmNWQyM2Y2Y2Fi
ZjNiNzM1Li41MGE1OGUzYzIwYzQ0Yjg0OTdiMzYzMTQ1NTk0NWMwZTIzZTEzOTE4IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTItMDEtMzAgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFu
LmplbnNlbkBub2tpYS5jb20+CisKKyAgICAgICAgVGVzdCB0aGF0IHRpbWVycyBkbyBub3QgZmly
ZSBmcm9tIHN1YmZyYW1lcyBvZiBzdXNwZW5kZWQgZG9jdW1lbnRzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTM3MzMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZXZlbnRzL3Jlc291cmNlcy9z
dXNwZW5kLXN1YmZyYW1lLTEuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvcmVz
b3VyY2VzL3N1c3BlbmQtc3ViZnJhbWUtMi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2
ZW50cy9zdXNwZW5kLXRpbWVycy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZXZlbnRzL3N1c3BlbmQtdGltZXJzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2No
cm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dDoKKwogMjAxMi0wMS0zMSAgWXV6byBGdWppc2hp
bWEgIDx5dXpvQGdvb2dsZS5jb20+CiAKICAgICAgICAgW0Nocm9taXVtXSBVbnJldmlld2VkIHRl
c3QgZXhwZWN0YXRpb24gY2hhbmdlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvcmVzb3VyY2VzL3N1c3BlbmQtc3ViZnJhbWUtMS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvcmVzb3VyY2VzL3N1c3BlbmQtc3ViZnJhbWUtMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUxYmE4
ZWFjZjQxZTBlZDQ5ZDRjMmJjMmM5NmZlMjZhZDA2NTRmNzAKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZXNvdXJjZXMvc3VzcGVuZC1zdWJmcmFtZS0xLmh0bWwK
QEAgLTAsMCArMSwxNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxz
Y3JpcHQ+CisgICAgICAgIGZ1bmN0aW9uIHRlc3QoKSB7CisgICAgICAgICAgICB3aW5kb3cudG9w
LmNvbnNvbGUubG9nKCdUaW1lb3V0IGluIHN1YmZyYW1lLTEgY3JlYXRlZCcpOworICAgICAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBhbGVydCgnVGltZW91
dCBjcmVhdGVkIGluIHN1YmZyYW1lLTEuaHRtbCBmaXJlZCcpOworICAgICAgICAgICAgfSwgNTAp
OworICAgICAgICB9CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KK0kgYW0gc3ViZnJh
bWUtMS5odG1sCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9yZXNvdXJjZXMvc3VzcGVuZC1zdWJmcmFtZS0yLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9yZXNvdXJjZXMvc3VzcGVuZC1zdWJmcmFtZS0yLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OWUzYjJlZTVmNTk3YzhmNDM4MTFhNjY3N2JjOGEyMTg5MTlkODgyNAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Jlc291cmNlcy9zdXNwZW5kLXN1YmZyYW1lLTIu
aHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisJ
PHNjcmlwdD4KKwlvbnBhZ2VoaWRlID0gZnVuY3Rpb24oKSB7CisJICB3aW5kb3cudG9wLmRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdhLWZyYW1lJykuY29udGVudFdpbmRvdy50ZXN0KCk7CisJfQor
CTwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CitJIGFtIHN1YmZyYW1lLTIuaHRtbAorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3VzcGVuZC10
aW1lcnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3VzcGVuZC10aW1l
cnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg1OTc3NGQyYmYwNjFmMWU2MzNkYzQ0OWNmZmU2
YjRlYWFlOGViM2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9z
dXNwZW5kLXRpbWVycy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAorQ09OU09MRSBNRVNT
QUdFOiBsaW5lIDY6IFRpbWVvdXQgaW4gc3ViZnJhbWUtMSBjcmVhdGVkCitDT05TT0xFIE1FU1NB
R0U6IGxpbmUgNTogTG9hZGVkIHBhZ2VoaWRlLXRpbWVvdXQtZ28tYmFjay5odG1sLCBnb2luZyBi
YWNrCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMzE6IFJlc3RvcmVkIHBhZ2UgZnJvbSBwYWdlIGNh
Y2hlLgorQUxFUlQ6IFRpbWVvdXQgY3JlYXRlZCBpbiBzdWJmcmFtZS0xLmh0bWwgZmlyZWQKK1Rl
c3RzIHRoYXQgYWxsIEpTIHRpbWVycyBhcmUgc3VzcGVuZGVkIGFmdGVyIHRoZSBwYWdlaGlkZSBl
dmVudCBpcyBmaXJlZCwgc28gdGhhdCB0aW1lcnMgY3JlYXRlZCB3aXRoaW4gaXQgd2lsbCBub3Qg
ZmlyZSB3aGlsZSB0aGUgZG9jdW1lbnQgaXMgaW4gdGhlIHBhZ2UgY2FjaGUuCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3Vz
cGVuZC10aW1lcnMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3N1c3BlbmQtdGltZXJz
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOGI3ZWU3NGY4NDQzZjcxNDQ2YjRiNzhkMjBmNmZkMzUyOGE5NmQ2
NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3N1c3BlbmQtdGlt
ZXJzLmh0bWwKQEAgLTAsMCArMSw1MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPHRpdGxlPlN1c3BlbmQgdGltZXJzIG9uIG5hdmlnYXRlPC90aXRsZT4KKzxzdHlsZT4KKyAg
ICBpZnJhbWUgeworICAgICAgZGlzcGxheTogYmxvY2s7CisgICAgICBib3JkZXI6IHNvbGlkIDFw
eCAjY2NjOworICAgICAgbWFyZ2luOiAxZW07CisgICAgICB3aWR0aDogMjAwcHg7CisgICAgICBo
ZWlnaHQ6IDIwMHB4OworICAgIH0KKzwvc3R5bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
Cis8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3N1c3BlbmQtc3ViZnJhbWUtMS5odG1sIiBpZD0iYS1m
cmFtZSI+PC9pZnJhbWU+IDxpZnJhbWUgc3JjPSJyZXNvdXJjZXMvc3VzcGVuZC1zdWJmcmFtZS0y
Lmh0bWwiIGlkPSJiLWZyYW1lIj48L2lmcmFtZT4KKworPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiPgorZGVzY3JpcHRpb24oJ1Rlc3RzIHRoYXQgYWxsIEpTIHRpbWVycyBhcmUgc3VzcGVu
ZGVkIGFmdGVyIHRoZSBwYWdlaGlkZSBldmVudCBpcyBmaXJlZCwgc28gdGhhdCB0aW1lcnMgY3Jl
YXRlZCB3aXRoaW4gaXQgd2lsbCBub3QgZmlyZSB3aGlsZSB0aGUgZG9jdW1lbnQgaXMgaW4gdGhl
IHBhZ2UgY2FjaGUuJyk7CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCdXZWJLaXRVc2VzUGFnZUNh
Y2hlUHJlZmVyZW5jZUtleScsIDEpOworCisKK29ucGFnZXNob3cgPSBmdW5jdGlvbihldmVudCkK
K3sKKyAgICBpZiAoZXZlbnQucGVyc2lzdGVkKSB7CisgICAgICAgIGNvbnNvbGUubG9nKCdSZXN0
b3JlZCBwYWdlIGZyb20gcGFnZSBjYWNoZS4nKTsKKyAgICAgICAgaWYgKCF3aW5kb3cud2FzRmlu
aXNoSlNUZXN0Q2FsbGVkKSB7CisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgfSwgMjAwKTsKKyAg
ICAgICAgfQorICAgIH0KK30KKworb25sb2FkID0gZnVuY3Rpb24oKQoreworICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7CisgICAgICAgIGxvY2F0aW9uLmhyZWYgPSAncmVzb3VyY2VzL3BhZ2Vo
aWRlLXRpbWVvdXQtZ28tYmFjay5odG1sJzsKKyAgICB9LCAxMCk7Cit9CisKK3ZhciBzdWNjZXNz
ZnVsbHlQYXJzZWQgPSB0cnVlOwordmFyIGpzVGVzdElzQXN5bmMgPSB0cnVlOworPC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAppbmRleCAxNGQ3OGMzZmRjZjU3OGUyNTdlNDQ0ODBl
YzRmZTRiMzYyNmM3MWQxLi41ZTRlMzg5NGZiODJiOWRiMjVlZWEzNGMyMzY2N2E0NzU1ZTYzMjFk
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0
aW9ucy50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3Rh
dGlvbnMudHh0CkBAIC0yMDQsNiArMjA0LDcgQEAgV09OVEZJWCBTS0lQIDogZmFzdC9kb20vV2lu
ZG93L3RpbWVyLXJlc3VtZS1vbi1uYXZpZ2F0aW9uLWJhY2suaHRtbCA9IFRJTUVPVVQgRkEKIFdP
TlRGSVggU0tJUCA6IGZhc3QvZXZlbnRzL3BhZ2VoaWRlLXRpbWVvdXQuaHRtbCA9IFRJTUVPVVQK
IFdPTlRGSVggU0tJUCA6IGZhc3QvZXZlbnRzL3BhZ2VzaG93LXBhZ2VoaWRlLW9uLWJhY2stY2Fj
aGVkLmh0bWwgPSBUSU1FT1VUIEZBSUwKIFdPTlRGSVggU0tJUCA6IGZhc3QvZXZlbnRzL3BhZ2Vz
aG93LXBhZ2VoaWRlLW9uLWJhY2stY2FjaGVkLXdpdGgtZnJhbWVzLmh0bWwgPSBUSU1FT1VUCitX
T05URklYIFNLSVAgOiBmYXN0L2V2ZW50cy9zdXNwZW5kLXRpbWVycy5odG1sID0gVElNRU9VVAog
V09OVEZJWCBTS0lQIDogbWVkaWEvcmVzdG9yZS1mcm9tLXBhZ2UtY2FjaGUuaHRtbCA9IFRJTUVP
VVQKIFdPTlRGSVggU0tJUCA6IGxvYWRlci9nby1iYWNrLXRvLWRpZmZlcmVudC13aW5kb3ctc2l6
ZS5odG1sID0gVElNRU9VVCBURVhUCiBXT05URklYIFNLSVAgOiBmYXN0L2xvYWRlci9jcmFzaC1j
b3B5aW5nLWJhY2tmb3J3YXJkbGlzdC5odG1sID0gVEVYVAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125100</attachid>
            <date>2012-02-02 02:00:21 -0800</date>
            <delta_ts>2012-02-03 02:44:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53733-20120202105939.patch</filename>
            <type>text/plain</type>
            <size>39797</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDJhODRjYmM4OWM0ODMw
MGRiNGY5OWM1Y2M5Njk1NDhjYzMzZDY0MS4uY2M0Y2JmMmM0ZWI2YTJkYWEzOGRlNWJjNzk3NTNl
MDAzMDJlYjcxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkwIEBACisyMDEyLTAxLTMxICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgorCisgICAgICAgIEVu
c3VyZSB0aW1lcnMgYW5kIG90aGVyIGFjdGl2ZSBET00gb2JqZWN0cyBkbyBub3QgZmlyZSBpbiBz
dXNwZW5kZWQgZG9jdW1lbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTM3MzMKKworICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0IG5vdyBy
ZW1lbWJlcnMgaXQgaGFzIHN1c3BlbmRlZCBhY3RpdmUgRE9NIG9iamVjdHMKKyAgICAgICAgYW5k
IHN1c3BlbmRzIGFsbCBuZXdseSBpbnN0YWxsZWQgYWN0aXZlIERPTSBvYmplY3RzIGFzIHdlbGwu
CisKKyAgICAgICAgQWxsIGNyZWF0ZS1jYWxscyBhY3RpdmUgRE9NIG9iamVjdHMgbm93IGNhbGxz
IHRoZSBwb3N0IGNvbnN0cnVjdG9yIG1ldGhvZAorICAgICAgICBzdXNwZW5kSWZOZWVkZWQgdGhh
dCB1cGRhdGVzIHRoZSBzdXNwZW5kIHN0YXRlLiBJdCBpcyBwb3N0IGNvbnN0cnVjdG9yCisgICAg
ICAgIGJlY2F1c2UgdGhlIHN1c3BlbmQvcmVzdW1lIGZ1bmN0aW9ucyBhcmUgdmlydHVhbCBhbmQg
dGh1cyBjYW4gbm90IGJlIGNhbGxlZAorICAgICAgICBmcm9tIGNvbnN0cnVjdG9ycy4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBmYXN0L2V2
ZW50cy9zdXNwZW5kLXRpbWVycy5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL2ludGVudHMvSW50
ZW50UmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlbnRSZXF1ZXN0OjpjcmVhdGUp
OgorICAgICAgICAqIGJpbmRpbmdzL2dlbmVyaWMvQWN0aXZlRE9NQ2FsbGJhY2suY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QWN0aXZlRE9NQ2FsbGJhY2s6OkFjdGl2ZURPTUNhbGxiYWNrKToKKyAg
ICAgICAgKiBkb20vQWN0aXZlRE9NT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjdGl2
ZURPTU9iamVjdDo6QWN0aXZlRE9NT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjdGl2ZURP
TU9iamVjdDo6fkFjdGl2ZURPTU9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY3RpdmVET01P
YmplY3Q6OnN1c3BlbmRJZk5lZWRlZCk6CisgICAgICAgICogZG9tL0FjdGl2ZURPTU9iamVjdC5o
OgorICAgICAgICAoV2ViQ29yZTo6QWN0aXZlRE9NT2JqZWN0OjpzdXNwZW5kSWZOZWVkZWRDYWxs
ZWQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRFdmVudFF1ZXVlOjpEb2N1bWVudEV2ZW50UXVldWUpOgorICAgICAgICAq
IGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6flNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6Y2FuU3VzcGVuZEFjdGl2
ZURPTU9iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
c3VzcGVuZEFjdGl2ZURPTU9iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6cmVzdW1lQWN0aXZlRE9NT2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpzdG9wQWN0aXZlRE9NT2JqZWN0cyk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0SWZO
ZWVkZWQpOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjphY3RpdmVET01PYmplY3RzQXJlU3Vz
cGVuZGVkKToKKyAgICAgICAgKiBmaWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RE9NRmlsZVN5c3RlbTo6Y3JlYXRlKToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVS
ZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVJlYWRlcjo6Y3JlYXRlKToKKyAgICAg
ICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXIuaDoKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVXcml0ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVdyaXRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBm
aWxlYXBpL0ZpbGVXcml0ZXIuaDoKKyAgICAgICAgKiBoaXN0b3J5L0NhY2hlZEZyYW1lLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZyYW1lOjpDYWNoZWRGcmFtZSk6CisgICAgICAgICog
aHRtbC9IVE1MQXVkaW9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBdWRpb0Vs
ZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1hcnF1ZWVFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAq
IGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9F
bGVtZW50OjpjcmVhdGUpOgorICAgICAgICAqIG1lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAq
IG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlm
aWNhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNl
bnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25DZW50ZXI6OmNyZWF0ZSk6
CisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaDoKKyAgICAgICAg
KiBwYWdlL0RPTVRpbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRpbWVyOjppbnN0YWxs
KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRpbWVyOjpmaXJlZCk6CisgICAgICAgICogcGFnZS9F
dmVudFNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFNvdXJjZTo6Y3JlYXRlKToK
KyAgICAgICAgKiBwYWdlL1N1c3BlbmRhYmxlVGltZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U3VzcGVuZGFibGVUaW1lcjo6U3VzcGVuZGFibGVUaW1lcik6CisgICAgICAgICogc3RvcmFnZS9J
REJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZTo6Y3JlYXRlKToK
KyAgICAgICAgKiBzdG9yYWdlL0lEQlJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
UmVxdWVzdDo6Y3JlYXRlKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHdl
YmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6
OmNyZWF0ZSk6CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViU29ja2V0OjpjcmVhdGUpOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29j
a2V0Lmg6CisgICAgICAgICogd29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcmVkV29ya2VyOjpjcmVhdGUpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcjo6Y3JlYXRlKToKKyAgICAgICAgKiB4bWwvWE1M
SHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0
ZSk6CisKIDIwMTItMDEtMzEgIEFsZXhlaSBGaWxpcHBvdiAgPGFsZXhlaWZAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHNob3cgc2l6ZXMgaW4gYnl0ZXMgaW5zdGVhZCBv
ZiBLQiwgTUIgaW4gaGVhcCBwcm9maWxlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW50ZW50cy9JbnRlbnRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW50ZW50cy9JbnRlbnRSZXF1ZXN0LmNwcAppbmRleCAyOTZmM2RkMmQ2NGI1NWU4ZTE5MGIyOTBm
ZGE4ZmQzNDQyMzgxNzlhLi40NjhiNTFmNDNjZTg3ODRmNzAzYzgwMjQ3ZmIwNGRmODhmMmIwZjJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ludGVudHMvSW50ZW50UmVxdWVz
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRzL0ludGVudFJlcXVlc3Qu
Y3BwCkBAIC00MSw3ICs0MSw5IEBAIFBhc3NSZWZQdHI8SW50ZW50UmVxdWVzdD4gSW50ZW50UmVx
dWVzdDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzUmVmUHRyPEludGVudFJl
c3VsdENhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBQYXNzUmVmUHRyPEludGVudFJlc3VsdENhbGxiYWNrPiBl
cnJvckNhbGxiYWNrKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW50ZW50UmVxdWVzdChj
b250ZXh0LCBpbnRlbnQsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykpOworICAgIFJl
ZlB0cjxJbnRlbnRSZXF1ZXN0PiBpbnRlbnRSZXF1ZXN0KGFkb3B0UmVmKG5ldyBJbnRlbnRSZXF1
ZXN0KGNvbnRleHQsIGludGVudCwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSkpOwor
ICAgIGludGVudFJlcXVlc3QtPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiBpbnRlbnRS
ZXF1ZXN0LnJlbGVhc2UoKTsKIH0KIAogSW50ZW50UmVxdWVzdDo6SW50ZW50UmVxdWVzdChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvZ2VuZXJpYy9BY3RpdmVET01DYWxsYmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9nZW5lcmljL0FjdGl2ZURPTUNhbGxiYWNrLmNwcAppbmRleCBmZjAyYTQyMDVmNmYy
MGIyODYyODMzM2Y4MjAwM2JlODM2Nzc2M2RmLi5jMjA0MWQzZGZlZTc1ZjNjNjhkNmM0NmU4Zjk2
OWY1Y2QxMDQ4MmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmlj
L0FjdGl2ZURPTUNhbGxiYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5l
cmljL0FjdGl2ZURPTUNhbGxiYWNrLmNwcApAQCAtMTIyLDYgKzEyMiw3IEBAIHN0YXRpYyB2b2lk
IGRlc3Ryb3lPbkNvbnRleHRUaHJlYWQoUGFzc093blB0cjxBY3RpdmVET01PYmplY3RDYWxsYmFj
a0ltcGw+IGltcGwpCiBBY3RpdmVET01DYWxsYmFjazo6QWN0aXZlRE9NQ2FsbGJhY2soU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICA6IG1faW1wbChhZG9wdFB0cihuZXcgQWN0
aXZlRE9NT2JqZWN0Q2FsbGJhY2tJbXBsKGNvbnRleHQpKSkKIHsKKyAgICBtX2ltcGwtPnN1c3Bl
bmRJZk5lZWRlZCgpOwogfQogCiBBY3RpdmVET01DYWxsYmFjazo6fkFjdGl2ZURPTUNhbGxiYWNr
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5jcHAKaW5kZXggMzlhNGM0YzZiOTFl
ZDYyMzM5MDBhNWNiZjc2NjJjOGE0ZmFiNTdkNi4uYmIyZWMyMjA5NTA0YzUwZjE0ODliYTMyNjA1
M2NkOWRmZjMwMDhlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9i
amVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5jcHAKQEAg
LTYwLDYgKzYwLDkgQEAgdm9pZCBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6Y29udGV4dERl
c3Ryb3llZCgpCiBBY3RpdmVET01PYmplY3Q6OkFjdGl2ZURPTU9iamVjdChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCB2b2lkKiB1cGNhc3RQb2ludGVyKQog
ICAgIDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkK
ICAgICAsIG1fcGVuZGluZ0FjdGl2aXR5Q291bnQoMCkKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisg
ICAgLCBtX3N1c3BlbmRJZk5lZWRlZENhbGxlZChmYWxzZSkKKyNlbmRpZgogewogICAgIGlmICgh
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KQogICAgICAgICByZXR1cm47CkBAIC03MywxMCArNzYs
MjMgQEAgQWN0aXZlRE9NT2JqZWN0Ojp+QWN0aXZlRE9NT2JqZWN0KCkKICAgICBpZiAoIW1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCisgICAgQVNTRVJUKG1fc3Vz
cGVuZElmTmVlZGVkQ2FsbGVkKTsKICAgICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
LT5pc0NvbnRleHRUaHJlYWQoKSk7CiAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT53aWxs
RGVzdHJveUFjdGl2ZURPTU9iamVjdCh0aGlzKTsKIH0KIAordm9pZCBBY3RpdmVET01PYmplY3Q6
OnN1c3BlbmRJZk5lZWRlZCgpCit7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIEFTU0VSVCgh
bV9zdXNwZW5kSWZOZWVkZWRDYWxsZWQpOworICAgIG1fc3VzcGVuZElmTmVlZGVkQ2FsbGVkID0g
dHJ1ZTsKKyNlbmRpZgorICAgIGlmICghbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnN1c3BlbmRBY3RpdmVE
T01PYmplY3RJZk5lZWRlZCh0aGlzKTsKK30KKwogYm9vbCBBY3RpdmVET01PYmplY3Q6Omhhc1Bl
bmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGVuZGluZ0FjdGl2aXR5Q291
bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmgKaW5kZXggZGI3Y2E2NmMwMWQyMTI5
ZmFlMWU3OTA2ZGQ0NGQ0Mjk3YzM2ZjRjYi4uY2VmMGM1YjVmYmYzNDkyMzdiYjE2Njk2YjYwODI2
ZDk4NjljOGQ4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVj
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuaApAQCAtNTEsNiAr
NTEsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHB1YmxpYzoKICAgICAgICAgQWN0aXZl
RE9NT2JqZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCB2b2lkKiB1cGNhc3RQb2ludGVyKTsK
IAorICAgICAgICAvLyBzdXNwZW5kSWZOZWVkZWQoKSBzaG91bGQgYmUgY2FsbGVkIGV4YWN0bHkg
b25jZSBhZnRlciBvYmplY3QgY29uc3RydWN0aW9uIHRvIHN5bmNocm9uaXplCisgICAgICAgIC8v
IHRoZSBzdXNwZW5kIHN0YXRlIHdpdGggdGhhdCBpbiBTY3JpcHRFeGVjdXRpb25Db250ZXh0Lgor
ICAgICAgICB2b2lkIHN1c3BlbmRJZk5lZWRlZCgpOworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAg
ICAgICAgdm9pZCBzdXNwZW5kSWZOZWVkZWRDYWxsZWQoKSBjb25zdCB7IHJldHVybiBtX3N1c3Bl
bmRJZk5lZWRlZENhbGxlZCB9OworI2VuZGlmCisKICAgICAgICAgdmlydHVhbCBib29sIGhhc1Bl
bmRpbmdBY3Rpdml0eSgpIGNvbnN0OwogCiAgICAgICAgIC8vIGNhblN1c3BlbmQoKSBpcyB1c2Vk
IGJ5IHRoZSBjYWxsZXIgaWYgdGhlcmUgaXMgYSBjaG9pY2UgYmV0d2VlbiBzdXNwZW5kaW5nIGFu
ZCBzdG9wcGluZy4KQEAgLTg4LDYgKzk1LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAg
cHJpdmF0ZToKICAgICAgICAgdW5zaWduZWQgbV9wZW5kaW5nQWN0aXZpdHlDb3VudDsKKyNpZiAh
QVNTRVJUX0RJU0FCTEVECisgICAgICAgIGJvb2wgbV9zdXNwZW5kSWZOZWVkZWRDYWxsZWQ7Cisj
ZW5kaWYKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwCmluZGV4IDMxMDIzZTI4ZDMxMWVkYzFmODEyNDA4NzNh
ODgyN2YzMzFlOGJhZGYuLjViODk5YjNmNTc4YTI3NDM5ODI0ODU5OGI5ZDI5YWQ5ODhmMDAzNmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwCkBAIC02NCw2ICs2
NCw3IEBAIERvY3VtZW50RXZlbnRRdWV1ZTo6RG9jdW1lbnRFdmVudFF1ZXVlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgOiBtX3BlbmRpbmdFdmVudFRpbWVyKGFkb3B0UHRy
KG5ldyBEb2N1bWVudEV2ZW50UXVldWVUaW1lcih0aGlzLCBjb250ZXh0KSkpCiAgICAgLCBtX2lz
Q2xvc2VkKGZhbHNlKQogeworICAgIG1fcGVuZGluZ0V2ZW50VGltZXItPnN1c3BlbmRJZk5lZWRl
ZCgpOwogfQogCiBEb2N1bWVudEV2ZW50UXVldWU6On5Eb2N1bWVudEV2ZW50UXVldWUoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCmluZGV4IGVmMDZj
MjllY2I5NWViYTBkODY4YjFjYTNmMjJjMjg3ZDk2Njk3MjQuLmIzNmIyMjM3NDFmZGRhN2Y3NzVk
ZjMyODFiYzA5YTI4ZTE5MTcxZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5jcHAKQEAgLTkyLDYgKzkyLDcgQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpCiAgICAgOiBtX2l0ZXJhdGluZ0FjdGl2ZURPTU9i
amVjdHMoZmFsc2UpCiAgICAgLCBtX2luRGVzdHJ1Y3RvcihmYWxzZSkKICAgICAsIG1faW5EaXNw
YXRjaEVycm9yRXZlbnQoZmFsc2UpCisgICAgLCBtX2FjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5k
ZWQoZmFsc2UpCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICAsIG1faGFzT3BlbkRhdGFi
YXNlcyhmYWxzZSkKICNlbmRpZgpAQCAtMTAxLDcgKzEwMiw2IEBAIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKQogU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
flNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKQogewogICAgIG1faW5EZXN0cnVjdG9yID0gdHJ1ZTsK
LQogICAgIGZvciAoSGFzaFNldDxDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcio+OjppdGVyYXRv
ciBpdGVyID0gbV9kZXN0cnVjdGlvbk9ic2VydmVycy5iZWdpbigpOyBpdGVyICE9IG1fZGVzdHJ1
Y3Rpb25PYnNlcnZlcnMuZW5kKCk7IGl0ZXIgPSBtX2Rlc3RydWN0aW9uT2JzZXJ2ZXJzLmJlZ2lu
KCkpIHsKICAgICAgICAgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIqIG9ic2VydmVyID0gKml0
ZXI7CiAgICAgICAgIG1fZGVzdHJ1Y3Rpb25PYnNlcnZlcnMucmVtb3ZlKG9ic2VydmVyKTsKQEAg
LTIwNiwxMSArMjA2LDEyIEBAIGJvb2wgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6Y2FuU3VzcGVu
ZEFjdGl2ZURPTU9iamVjdHMoKQogICAgIEhhc2hNYXA8QWN0aXZlRE9NT2JqZWN0Kiwgdm9pZCo+
OjppdGVyYXRvciBhY3RpdmVPYmplY3RzRW5kID0gbV9hY3RpdmVET01PYmplY3RzLmVuZCgpOwog
ICAgIGZvciAoSGFzaE1hcDxBY3RpdmVET01PYmplY3QqLCB2b2lkKj46Oml0ZXJhdG9yIGl0ZXIg
PSBtX2FjdGl2ZURPTU9iamVjdHMuYmVnaW4oKTsgaXRlciAhPSBhY3RpdmVPYmplY3RzRW5kOyAr
K2l0ZXIpIHsKICAgICAgICAgQVNTRVJUKGl0ZXItPmZpcnN0LT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkgPT0gdGhpcyk7CisgICAgICAgIEFTU0VSVChpdGVyLT5maXJzdC0+c3VzcGVuZElmTmVl
ZGVkQ2FsbGVkKCkpOwogICAgICAgICBpZiAoIWl0ZXItPmZpcnN0LT5jYW5TdXNwZW5kKCkpIHsK
ICAgICAgICAgICAgIG1faXRlcmF0aW5nQWN0aXZlRE9NT2JqZWN0cyA9IGZhbHNlOwogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAgfSAgICAKKyAgICB9CiAgICAgbV9p
dGVyYXRpbmdBY3RpdmVET01PYmplY3RzID0gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBA
IC0yMjIsMTggKzIyMywyMyBAQCB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnN1c3BlbmRB
Y3RpdmVET01PYmplY3RzKEFjdGl2ZURPTU9iamVjdDo6UmVhc29uRm9yUwogICAgIEhhc2hNYXA8
QWN0aXZlRE9NT2JqZWN0Kiwgdm9pZCo+OjppdGVyYXRvciBhY3RpdmVPYmplY3RzRW5kID0gbV9h
Y3RpdmVET01PYmplY3RzLmVuZCgpOwogICAgIGZvciAoSGFzaE1hcDxBY3RpdmVET01PYmplY3Qq
LCB2b2lkKj46Oml0ZXJhdG9yIGl0ZXIgPSBtX2FjdGl2ZURPTU9iamVjdHMuYmVnaW4oKTsgaXRl
ciAhPSBhY3RpdmVPYmplY3RzRW5kOyArK2l0ZXIpIHsKICAgICAgICAgQVNTRVJUKGl0ZXItPmZp
cnN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPT0gdGhpcyk7CisgICAgICAgIEFTU0VSVChp
dGVyLT5maXJzdC0+c3VzcGVuZElmTmVlZGVkQ2FsbGVkKCkpOwogICAgICAgICBpdGVyLT5maXJz
dC0+c3VzcGVuZCh3aHkpOwogICAgIH0KICAgICBtX2l0ZXJhdGluZ0FjdGl2ZURPTU9iamVjdHMg
PSBmYWxzZTsKKyAgICBtX2FjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQgPSB0cnVlOworICAg
IG1fcmVhc29uRm9yU3VzcGVuZGluZ0FjdGl2ZURPTU9iamVjdHMgPSB3aHk7CiB9CiAKIHZvaWQg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cmVzdW1lQWN0aXZlRE9NT2JqZWN0cygpCiB7CisgICAg
bV9hY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkID0gZmFsc2U7CiAgICAgLy8gTm8gcHJvdGVj
dGlvbiBhZ2FpbnN0IG1fYWN0aXZlRE9NT2JqZWN0cyBjaGFuZ2luZyBkdXJpbmcgaXRlcmF0aW9u
OiByZXN1bWUoKSBzaG91bGRuJ3QgZXhlY3V0ZSBhcmJpdHJhcnkgSlMuCiAgICAgbV9pdGVyYXRp
bmdBY3RpdmVET01PYmplY3RzID0gdHJ1ZTsKICAgICBIYXNoTWFwPEFjdGl2ZURPTU9iamVjdCos
IHZvaWQqPjo6aXRlcmF0b3IgYWN0aXZlT2JqZWN0c0VuZCA9IG1fYWN0aXZlRE9NT2JqZWN0cy5l
bmQoKTsKICAgICBmb3IgKEhhc2hNYXA8QWN0aXZlRE9NT2JqZWN0Kiwgdm9pZCo+OjppdGVyYXRv
ciBpdGVyID0gbV9hY3RpdmVET01PYmplY3RzLmJlZ2luKCk7IGl0ZXIgIT0gYWN0aXZlT2JqZWN0
c0VuZDsgKytpdGVyKSB7CiAgICAgICAgIEFTU0VSVChpdGVyLT5maXJzdC0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpID09IHRoaXMpOworICAgICAgICBBU1NFUlQoaXRlci0+Zmlyc3QtPnN1c3Bl
bmRJZk5lZWRlZENhbGxlZCgpKTsKICAgICAgICAgaXRlci0+Zmlyc3QtPnJlc3VtZSgpOwogICAg
IH0KICAgICBtX2l0ZXJhdGluZ0FjdGl2ZURPTU9iamVjdHMgPSBmYWxzZTsKQEAgLTI0Niw2ICsy
NTIsNyBAQCB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnN0b3BBY3RpdmVET01PYmplY3Rz
KCkKICAgICBIYXNoTWFwPEFjdGl2ZURPTU9iamVjdCosIHZvaWQqPjo6aXRlcmF0b3IgYWN0aXZl
T2JqZWN0c0VuZCA9IG1fYWN0aXZlRE9NT2JqZWN0cy5lbmQoKTsKICAgICBmb3IgKEhhc2hNYXA8
QWN0aXZlRE9NT2JqZWN0Kiwgdm9pZCo+OjppdGVyYXRvciBpdGVyID0gbV9hY3RpdmVET01PYmpl
Y3RzLmJlZ2luKCk7IGl0ZXIgIT0gYWN0aXZlT2JqZWN0c0VuZDsgKytpdGVyKSB7CiAgICAgICAg
IEFTU0VSVChpdGVyLT5maXJzdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpID09IHRoaXMpOwor
ICAgICAgICBBU1NFUlQoaXRlci0+Zmlyc3QtPnN1c3BlbmRJZk5lZWRlZENhbGxlZCgpKTsKICAg
ICAgICAgaXRlci0+Zmlyc3QtPnN0b3AoKTsKICAgICB9CiAgICAgbV9pdGVyYXRpbmdBY3RpdmVE
T01PYmplY3RzID0gZmFsc2U7CkBAIC0yNTQsNiArMjYxLDE0IEBAIHZvaWQgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6c3RvcEFjdGl2ZURPTU9iamVjdHMoKQogICAgIGNsb3NlTWVzc2FnZVBvcnRz
KCk7CiB9CiAKK3ZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6c3VzcGVuZEFjdGl2ZURPTU9i
amVjdElmTmVlZGVkKEFjdGl2ZURPTU9iamVjdCogb2JqZWN0KQoreworICAgIEFTU0VSVChtX2Fj
dGl2ZURPTU9iamVjdHMuY29udGFpbnMob2JqZWN0KSk7CisgICAgLy8gRW5zdXJlIGFsbCBBY3Rp
dmVET01PYmplY3RzIGFyZSBzdXNwZW5kZWQgYWxzbyBuZXdseSBjcmVhdGVkIG9uZXMuCisgICAg
aWYgKG1fYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCkKKyAgICAgICAgb2JqZWN0LT5zdXNw
ZW5kKG1fcmVhc29uRm9yU3VzcGVuZGluZ0FjdGl2ZURPTU9iamVjdHMpOworfQorCiB2b2lkIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmRpZENyZWF0ZUFjdGl2ZURPTU9iamVjdChBY3RpdmVET01P
YmplY3QqIG9iamVjdCwgdm9pZCogdXBjYXN0UG9pbnRlcikKIHsKICAgICBBU1NFUlQob2JqZWN0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCmluZGV4IGFl
ZDM0MTFlMDY5YjE1NGIyZWIwOWEwZWQ4MzVkNzMxNmQ0OWI0NTkuLjZmZTQxZDU0MWRlNmE4ZmEx
M2JhYzdmOGEzNDdkM2Q5NjkxZDY2ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaApAQCAtMTAzLDkgKzEwMywxNSBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHJlc3VtZUFjdGl2ZURPTU9iamVjdHMoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcEFj
dGl2ZURPTU9iamVjdHMoKTsKIAorICAgIGJvb2wgYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZDsgfQorCisg
ICAgLy8gQ2FsbGVkIGZyb20gdGhlIGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9ycyBvZiBBY3Rp
dmVET01PYmplY3QuCiAgICAgdm9pZCBkaWRDcmVhdGVBY3RpdmVET01PYmplY3QoQWN0aXZlRE9N
T2JqZWN0Kiwgdm9pZCogdXBjYXN0UG9pbnRlcik7CiAgICAgdm9pZCB3aWxsRGVzdHJveUFjdGl2
ZURPTU9iamVjdChBY3RpdmVET01PYmplY3QqKTsKIAorICAgIC8vIENhbGxlZCBhZnRlciB0aGUg
Y29uc3RydWN0aW9uIG9mIGFuIEFjdGl2ZURPTU9iamVjdCB0byBzeW5jaHJvbml6ZSBzdXNwZW5k
IHN0YXRlLgorICAgIHZvaWQgc3VzcGVuZEFjdGl2ZURPTU9iamVjdElmTmVlZGVkKEFjdGl2ZURP
TU9iamVjdCopOworCiAgICAgdHlwZWRlZiBjb25zdCBIYXNoTWFwPEFjdGl2ZURPTU9iamVjdCos
IHZvaWQqPiBBY3RpdmVET01PYmplY3RzTWFwOwogICAgIEFjdGl2ZURPTU9iamVjdHNNYXAmIGFj
dGl2ZURPTU9iamVjdHMoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2ZURPTU9iamVjdHM7IH0KIApA
QCAtMjA2LDYgKzIxMiw5IEBAIHByaXZhdGU6CiAgICAgY2xhc3MgUGVuZGluZ0V4Y2VwdGlvbjsK
ICAgICBPd25QdHI8VmVjdG9yPE93blB0cjxQZW5kaW5nRXhjZXB0aW9uPiA+ID4gbV9wZW5kaW5n
RXhjZXB0aW9uczsKIAorICAgIGJvb2wgbV9hY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkOwor
ICAgIEFjdGl2ZURPTU9iamVjdDo6UmVhc29uRm9yU3VzcGVuc2lvbiBtX3JlYXNvbkZvclN1c3Bl
bmRpbmdBY3RpdmVET01PYmplY3RzOworCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICBS
ZWZQdHI8RGF0YWJhc2VUaHJlYWQ+IG1fZGF0YWJhc2VUaHJlYWQ7CiAgICAgYm9vbCBtX2hhc09w
ZW5EYXRhYmFzZXM7IC8vIFRoaXMgbmV2ZXIgY2hhbmdlcyBiYWNrIHRvIGZhbHNlLCBldmVuIGFm
dGVyIHRoZSBkYXRhYmFzZSB0aHJlYWQgaXMgY2xvc2VkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
RE9NRmlsZVN5c3RlbS5jcHAKaW5kZXggYWMzODY5MDNiMThmYmJjYjFjNTBlYTQ3ODIyMjAxOTEx
ZTc2NzIyMC4uOTc5OWUxMjA3OWU4YWVkNDIzNTdhODE2ZmJjNjE1YmQ5YmJhMGI0NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCkBAIC01Niw4ICs1Niw5IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4gRE9NRmlsZVN5c3Rl
bTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYg
bmFtZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGFzeW5jRmlsZVN5c3RlbSkKIHsKICAg
ICBSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZVN5c3RlbShhZG9wdFJlZihuZXcgRE9NRmlsZVN5
c3RlbShjb250ZXh0LCBuYW1lLCBhc3luY0ZpbGVTeXN0ZW0pKSk7CisgICAgZmlsZVN5c3RlbS0+
c3VzcGVuZElmTmVlZGVkKCk7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRPcGVu
RmlsZVN5c3RlbShmaWxlU3lzdGVtLmdldCgpKTsKLSAgICByZXR1cm4gZmlsZVN5c3RlbTsKKyAg
ICByZXR1cm4gZmlsZVN5c3RlbS5yZWxlYXNlKCk7CiB9CiAKIERPTUZpbGVTeXN0ZW06OkRPTUZp
bGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gYXN5bmNGaWxlU3lzdGVtKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAKaW5kZXggMjljNTk4NDcwNzNiNDNjMjI0NWM1MjA3
MzI0ZGNjZWJiYTFjYWE0NS4uMDdjNGI2NzQ2MTExMTYxZWZmMjk5NTlhYjFkMmZiZGMxYzAxMzEy
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwCkBAIC00OCw2ICs0OCwxMyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBkb3VibGUgcHJvZ3Jlc3NOb3Rp
ZmljYXRpb25JbnRlcnZhbE1TID0gNTA7CiAKK1Bhc3NSZWZQdHI8RmlsZVJlYWRlcj4gRmlsZVJl
YWRlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit7CisgICAgUmVm
UHRyPEZpbGVSZWFkZXI+IGZpbGVSZWFkZXIoYWRvcHRSZWYobmV3IEZpbGVSZWFkZXIoY29udGV4
dCkpKTsKKyAgICBmaWxlUmVhZGVyLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gZmls
ZVJlYWRlci5yZWxlYXNlKCk7Cit9CisKIEZpbGVSZWFkZXI6OkZpbGVSZWFkZXIoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0
aGlzKQogICAgICwgbV9zdGF0ZShFTVBUWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRmlsZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmgK
aW5kZXggODA0ZGQyOTFiMjNmOGEzZWQ2NWY1NzY5MWViNzlhOWVkMjE5MDg0YS4uZWNkZDQ4NTZj
NGMzYzM2OTZjOTc0MTY4NTc3ZTU5YzU0YjM4NTA3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlUmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxl
UmVhZGVyLmgKQEAgLTUxLDEwICs1MSw3IEBAIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAK
IGNsYXNzIEZpbGVSZWFkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxGaWxlUmVhZGVyPiwgcHVibGlj
IEFjdGl2ZURPTU9iamVjdCwgcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMgRmlsZVJlYWRlckxv
YWRlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RmlsZVJlYWRlcj4g
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCi0gICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEZpbGVSZWFkZXIoY29udGV4dCkpOwotICAgIH0KKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxGaWxlUmVhZGVyPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCop
OwogCiAgICAgdmlydHVhbCB+RmlsZVJlYWRlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0ZpbGVXcml0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxl
V3JpdGVyLmNwcAppbmRleCAyYjI1Y2ZhZjk5MzM5NGE3YWI3OGM5YjY0MGVlMTQ4ZGM3MTRhNmUz
Li43Y2Q5YjgzNDhiYWIyOWIzMDUxNjk3Y2NkNDIwNjNlMjZiNTMxZGZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVXcml0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRmlsZVdyaXRlci5jcHAKQEAgLTQ1LDYgKzQ1LDEzIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogc3RhdGljIGNvbnN0IGludCBrTWF4UmVjdXJzaW9uRGVwdGggPSAzOwogCitQYXNz
UmVmUHRyPEZpbGVXcml0ZXI+IEZpbGVXcml0ZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0KQoreworICAgIFJlZlB0cjxGaWxlV3JpdGVyPiBmaWxlV3JpdGVyKGFkb3B0
UmVmKG5ldyBGaWxlV3JpdGVyKGNvbnRleHQpKSk7CisgICAgZmlsZVdyaXRlci0+c3VzcGVuZElm
TmVlZGVkKCk7CisgICAgcmV0dXJuIGZpbGVXcml0ZXIucmVsZWFzZSgpOworfQorCiBGaWxlV3Jp
dGVyOjpGaWxlV3JpdGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgOiBB
Y3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKICAgICAsIG1fcmVhZHlTdGF0ZShJTklUKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlV3JpdGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0ZpbGVXcml0ZXIuaAppbmRleCAyYjU5N2ExODhiNzU5M2M4MWE0MTJk
OTE1Zjk2OGM0N2NjZmY2NjM1Li45NDYxMzUwNzI2YWE1ZTJkZmRmNDI1YzIwMDBiNWE2NjI0Zjkw
OGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVXcml0ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVXcml0ZXIuaApAQCAtNDgsMTAgKzQ4LDcgQEAg
Y2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAogY2xhc3MgRmlsZVdyaXRlciA6IHB1Ymxp
YyBGaWxlV3JpdGVyQmFzZSwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIEV2ZW50VGFy
Z2V0LCBwdWJsaWMgQXN5bmNGaWxlV3JpdGVyQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxGaWxlV3JpdGVyPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRmlsZVdyaXRlcihjb250
ZXh0KSk7Ci0gICAgfQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbGVXcml0ZXI+IGNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAKICAgICBlbnVtIFJlYWR5U3RhdGUgewogICAgICAg
ICBJTklUID0gMCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJh
bWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAKaW5kZXggNjBm
YWIwNDNmOTAwMjA5MTQxNDE0NTkwMzdhNTJhZDhhYTJmYmFiMy4uOWIwZDJmZTgyMmYyN2ZhMGRk
YWZlODZjMTYwYmZmMWE5N2QxMGQwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9y
eS9DYWNoZWRGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFt
ZS5jcHAKQEAgLTE2OCw3ICsxNjgsNiBAQCBDYWNoZWRGcmFtZTo6Q2FjaGVkRnJhbWUoRnJhbWUq
IGZyYW1lKQogICAgIC8vIGJ1dCBhZnRlciB3ZSd2ZSBmaXJlZCB0aGUgcGFnZWhpZGUgZXZlbnQs
IGluIGNhc2UgdGhhdCBjcmVhdGVzIG1vcmUgb2JqZWN0cy4KICAgICAvLyBTdXNwZW5kaW5nIG11
c3QgYWxzbyBoYXBwZW4gYWZ0ZXIgd2UndmUgcmVjdXJzZWQgb3ZlciBjaGlsZCBmcmFtZXMsIGlu
IGNhc2UKICAgICAvLyB0aG9zZSBjcmVhdGUgbW9yZSBvYmplY3RzLgotICAgIC8vIEZJWE1FOiBJ
dCdzIHN0aWxsIHBvc3NpYmxlIHRvIGhhdmUgb2JqZWN0cyBjcmVhdGVkIGFmdGVyIHN1c3BlbmRp
bmcgaW4gc29tZSBjYXNlcywgc2VlIGh0dHA6Ly93ZWJraXQub3JnL2IvNTM3MzMgZm9yIG1vcmUg
ZGV0YWlscy4KICAgICBtX2RvY3VtZW50LT5kb2N1bWVudFdpbGxTdXNwZW5kRm9yUGFnZUNhY2hl
KCk7CiAgICAgbV9kb2N1bWVudC0+c3VzcGVuZFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlckNh
bGxiYWNrcygpOwogICAgIG1fZG9jdW1lbnQtPnN1c3BlbmRBY3RpdmVET01PYmplY3RzKEFjdGl2
ZURPTU9iamVjdDo6RG9jdW1lbnRXaWxsQmVjb21lSW5hY3RpdmUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXVkaW9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEF1ZGlvRWxlbWVudC5jcHAKaW5kZXggZTNkY2Y0N2YxOGM5MTYzZjA3NmM4NWZiMDA1
ZjNkZTUxMTY4ZjQwZS4uZGMxMGIzYTJiNzk2ZWYyZGFjNTMzYTAwZmJjN2U1MzJmMWNkMDY5YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXVkaW9FbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwCkBAIC00Myw3ICs0Myw5
IEBAIEhUTUxBdWRpb0VsZW1lbnQ6OkhUTUxBdWRpb0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtCiAKIFBhc3NSZWZQdHI8SFRNTEF1ZGlvRWxlbWVu
dD4gSFRNTEF1ZGlvRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCiB7Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBIVE1MQXVkaW9FbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBjcmVhdGVk
QnlQYXJzZXIpKTsKKyAgICBSZWZQdHI8SFRNTEF1ZGlvRWxlbWVudD4gYXVkaW9FbGVtZW50KGFk
b3B0UmVmKG5ldyBIVE1MQXVkaW9FbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBjcmVhdGVkQnlQ
YXJzZXIpKSk7CisgICAgYXVkaW9FbGVtZW50LT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1
cm4gYXVkaW9FbGVtZW50LnJlbGVhc2UoKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MQXVkaW9FbGVt
ZW50PiBIVE1MQXVkaW9FbGVtZW50OjpjcmVhdGVGb3JKU0NvbnN0cnVjdG9yKERvY3VtZW50KiBk
b2N1bWVudCwgY29uc3QgU3RyaW5nJiBzcmMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNYXJxdWVlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJx
dWVlRWxlbWVudC5jcHAKaW5kZXggMDUzZmZhODkyYTQ1OGQzNDJkMTFhMjhjMTVmNjYzMDc4Y2Jm
NTgyYy4uMmZlMjI0ZjY2NGJjZWJjMjU5NzlhNDBmOTVlOTRiNmJmZTUwYTgxNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNwcApAQCAtNDgsNyArNDgsOSBAQCBp
bmxpbmUgSFRNTE1hcnF1ZWVFbGVtZW50OjpIVE1MTWFycXVlZUVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdQogCiBQYXNzUmVmUHRyPEhUTUxNYXJxdWVlRWxlbWVudD4g
SFRNTE1hcnF1ZWVFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTE1hcnF1
ZWVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CisgICAgUmVmUHRyPEhUTUxNYXJxdWVlRWxl
bWVudD4gbWFycXVlZUVsZW1lbnQoYWRvcHRSZWYobmV3IEhUTUxNYXJxdWVlRWxlbWVudCh0YWdO
YW1lLCBkb2N1bWVudCkpKTsKKyAgICBtYXJxdWVlRWxlbWVudC0+c3VzcGVuZElmTmVlZGVkKCk7
CisgICAgcmV0dXJuIG1hcnF1ZWVFbGVtZW50LnJlbGVhc2UoKTsKIH0KIAogYm9vbCBIVE1MTWFy
cXVlZUVsZW1lbnQ6Om1hcFRvRW50cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIE1h
cHBlZEF0dHJpYnV0ZUVudHJ5JiByZXN1bHQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VmlkZW9FbGVtZW50LmNwcAppbmRleCBmZWQyZmE0MzU2NTRkNWM0YWUxOTYxMWIzM2ZkNTgwZTFj
ZWUwNThiLi45MWFjYzQyZmQ0OTIwOGEyNDRkZGI1MGVhOWRkNjBiZjY2ODQ1Yzk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKQEAgLTU0LDcgKzU0LDkgQEAgaW5s
aW5lIEhUTUxWaWRlb0VsZW1lbnQ6OkhUTUxWaWRlb0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQKIAogUGFzc1JlZlB0cjxIVE1MVmlkZW9FbGVtZW50PiBIVE1M
VmlkZW9FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQqIGRvY3VtZW50LCBib29sIGNyZWF0ZWRCeVBhcnNlcikKIHsKLSAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEhUTUxWaWRlb0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGNyZWF0ZWRCeVBhcnNl
cikpOworICAgIFJlZlB0cjxIVE1MVmlkZW9FbGVtZW50PiB2aWRlb0VsZW1lbnQoYWRvcHRSZWYo
bmV3IEhUTUxWaWRlb0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGNyZWF0ZWRCeVBhcnNlcikp
KTsKKyAgICB2aWRlb0VsZW1lbnQtPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiB2aWRl
b0VsZW1lbnQucmVsZWFzZSgpOwogfQogCiBib29sIEhUTUxWaWRlb0VsZW1lbnQ6OnJlbmRlcmVy
SXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQpIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24uY3BwCmluZGV4IGJiNDkzZDc2ODM4
OWY4ODA0NDRjMWJhMzVkMmY3YjMyZWU2M2U4MjQuLjdlNWZjOWFlZjZjODYwNWJkMDU1NGY3NjE1
NWM5MGYwMWNiMTk2MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1Bl
ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9QZWVyQ29u
bmVjdGlvbi5jcHAKQEAgLTQxLDYgKzQxLDcgQEAgUGFzc1JlZlB0cjxQZWVyQ29ubmVjdGlvbj4g
UGVlckNvbm5lY3Rpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXgKICAg
ICBSZWZQdHI8UGVlckNvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBhZG9wdFJlZihuZXcgUGVlckNv
bm5lY3Rpb24oY29udGV4dCwgc2VydmVyQ29uZmlndXJhdGlvbiwgc2lnbmFsaW5nQ2FsbGJhY2sp
KTsKICAgICBjb25uZWN0aW9uLT5zZXRQZW5kaW5nQWN0aXZpdHkoY29ubmVjdGlvbi5nZXQoKSk7
CiAgICAgY29ubmVjdGlvbi0+c2NoZWR1bGVJbml0aWFsTmVnb3RpYXRpb24oKTsKKyAgICBjb25u
ZWN0aW9uLT5zdXNwZW5kSWZOZWVkZWQoKTsKIAogICAgIHJldHVybiBjb25uZWN0aW9uLnJlbGVh
c2UoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNw
cAppbmRleCBkNzk5MWYyZDljZDk4ZDRlZTI1MWExMWI3ZWQ0YjdhMGE1MTExNzMxLi43NDk2NGRj
NzdhZGFkMDgxY2IwZWYxOWNhNDRhZDRhNDhlMDg3ZTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCkBAIC0xMDIsMTIgKzEwMiwxNiBAQCBOb3Rp
ZmljYXRpb246On5Ob3RpZmljYXRpb24oKQogCiBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4gTm90
aWZpY2F0aW9uOjpjcmVhdGUoY29uc3QgS1VSTCYgdXJsLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYywgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50
ZXI+IHByb3ZpZGVyKSAKIHsgCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBOb3RpZmljYXRpb24o
dXJsLCBjb250ZXh0LCBlYywgcHJvdmlkZXIpKTsKKyAgICBSZWZQdHI8Tm90aWZpY2F0aW9uPiBu
b3RpZmljYXRpb24oYWRvcHRSZWYobmV3IE5vdGlmaWNhdGlvbih1cmwsIGNvbnRleHQsIGVjLCBw
cm92aWRlcikpKTsKKyAgICBub3RpZmljYXRpb24tPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJl
dHVybiBub3RpZmljYXRpb24ucmVsZWFzZSgpOwogfQogCiBQYXNzUmVmUHRyPE5vdGlmaWNhdGlv
bj4gTm90aWZpY2F0aW9uOjpjcmVhdGUoY29uc3QgTm90aWZpY2F0aW9uQ29udGVudHMmIGNvbnRl
bnRzLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYywg
UGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IHByb3ZpZGVyKSAKIHsgCi0gICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBOb3RpZmljYXRpb24oY29udGVudHMsIGNvbnRleHQsIGVjLCBwcm92aWRl
cikpOworICAgIFJlZlB0cjxOb3RpZmljYXRpb24+IG5vdGlmaWNhdGlvbihhZG9wdFJlZihuZXcg
Tm90aWZpY2F0aW9uKGNvbnRlbnRzLCBjb250ZXh0LCBlYywgcHJvdmlkZXIpKSk7CisgICAgbm90
aWZpY2F0aW9uLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gbm90aWZpY2F0aW9uLnJl
bGVhc2UoKTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBOb3RpZmljYXRpb246OmludGVyZmFj
ZU5hbWUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb25DZW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb25DZW50ZXIuY3BwCmluZGV4IDQ1ZGMzNDVkZmE2ZmRjMTRlYTdmNmMyMzk1YWJkYmVm
MjZiNTFlOTIuLmU1OGE0Njg4OTZlZTQzMzBjYjc4ZGZkZTRjZWZmZTZmMjgyNTY2MWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5j
cHAKQEAgLTQxLDYgKzQxLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorUGFzc1JlZlB0
cjxOb3RpZmljYXRpb25DZW50ZXI+IE5vdGlmaWNhdGlvbkNlbnRlcjo6Y3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIE5vdGlmaWNhdGlvblByZXNlbnRlciogcHJlc2VudGVy
KQoreworICAgIFJlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IG5vdGlmaWNhdGlvbkNlbnRlcihh
ZG9wdFJlZihuZXcgTm90aWZpY2F0aW9uQ2VudGVyKGNvbnRleHQsIHByZXNlbnRlcikpKTsKKyAg
ICBub3RpZmljYXRpb25DZW50ZXItPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiBub3Rp
ZmljYXRpb25DZW50ZXIucmVsZWFzZSgpOworfQorCiBOb3RpZmljYXRpb25DZW50ZXI6Ok5vdGlm
aWNhdGlvbkNlbnRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBOb3RpZmljYXRp
b25QcmVzZW50ZXIqIHByZXNlbnRlcikKICAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0
aGlzKQogICAgICwgbV9ub3RpZmljYXRpb25QcmVzZW50ZXIocHJlc2VudGVyKSB7fQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmgKaW5kZXgg
MjNiMzFlMDMxZjZkNDEzZGQ5MjY5YWRhZTk4NjZiMTA0MTMxMjAyYi4uNDAyY2NiYTkzOGIyZmVl
MDgxZjhhNmE4ZDdiZWNlZmY3OGNjMjY5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9ub3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5oCkBAIC01MCw3ICs1MCw3IEBAIGNsYXNzIFZv
aWRDYWxsYmFjazsKIAogY2xhc3MgTm90aWZpY2F0aW9uQ2VudGVyIDogcHVibGljIFJlZkNvdW50
ZWQ8Tm90aWZpY2F0aW9uQ2VudGVyPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgTm90aWZpY2F0aW9uUHJlc2VudGVyKiBwcmVzZW50
ZXIpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBOb3RpZmljYXRpb25DZW50ZXIoY29udGV4dCwgcHJl
c2VudGVyKSk7IH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IGNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTm90aWZpY2F0aW9uUHJlc2VudGVyKik7CiAK
ICAgICBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4gY3JlYXRlSFRNTE5vdGlmaWNhdGlvbihjb25z
dCBTdHJpbmcmIFVSSSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9ET01UaW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRp
bWVyLmNwcAppbmRleCAwYTk0ZTdlZjhjOWI0NThlMWZmOTdmMDg2N2FmNTE3YjhlZjc4M2MzLi5k
YWQ3NmY1OGRmZmM2MjYwNjRmYjIzNzI5YTg1MWEyNTAzYzQ5ZmIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVRpbWVyLmNwcApAQCAtOTIsNiArOTIsNyBAQCBpbnQgRE9NVGltZXI6Omluc3RhbGwoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc093blB0cjxTY2hlZHVsZWRBY3RpbwogICAg
IC8vIG9yIGlmIGl0IGlzIGEgb25lLXRpbWUgdGltZXIgYW5kIGl0IGhhcyBmaXJlZCAoRE9NVGlt
ZXI6OmZpcmVkKS4KICAgICBET01UaW1lciogdGltZXIgPSBuZXcgRE9NVGltZXIoY29udGV4dCwg
YWN0aW9uLCB0aW1lb3V0LCBzaW5nbGVTaG90KTsKIAorICAgIHRpbWVyLT5zdXNwZW5kSWZOZWVk
ZWQoKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEluc3RhbGxUaW1lcihjb250
ZXh0LCB0aW1lci0+bV90aW1lb3V0SWQsIHRpbWVvdXQsIHNpbmdsZVNob3QpOwogCiAgICAgcmV0
dXJuIHRpbWVyLT5tX3RpbWVvdXRJZDsKQEAgLTExNCw3ICsxMTUsNyBAQCB2b2lkIERPTVRpbWVy
OjpmaXJlZCgpCiB7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICB0aW1lck5lc3RpbmdMZXZlbCA9IG1fbmVzdGluZ0xl
dmVsOwotICAgIAorICAgIEFTU0VSVCghY29udGV4dC0+YWN0aXZlRE9NT2JqZWN0c0FyZVN1c3Bl
bmRlZCgpKTsKICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKG1fc2hv
dWxkRm9yd2FyZFVzZXJHZXN0dXJlID8gRGVmaW5pdGVseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSA6
IFBvc3NpYmx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsKICAgICAKICAgICAvLyBPbmx5IHRoZSBm
aXJzdCBleGVjdXRpb24gb2YgYSBtdWx0aS1zaG90IHRpbWVyIHNob3VsZCBnZXQgYW4gYWZmaXJt
YXRpdmUgdXNlciBnZXN0dXJlIGluZGljYXRvci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5j
cHAKaW5kZXggZWEwNjYwMGIxMzg0ZDExMTcyZTRhYzJiOWUzZDYxZmI2YWJkNjFkNi4uNTQzZjFl
MWFjNzQyMzhhMzM5ZTIxODEyOTgwMjgzMGY0YWEyOTQxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dFNvdXJjZS5jcHAKQEAgLTk4LDYgKzk4LDcgQEAgUGFzc1JlZlB0cjxFdmVudFNvdXJjZT4gRXZl
bnRTb3VyY2U6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb24KIAog
ICAgIHNvdXJjZS0+c2V0UGVuZGluZ0FjdGl2aXR5KHNvdXJjZS5nZXQoKSk7CiAgICAgc291cmNl
LT5jb25uZWN0KCk7CisgICAgc291cmNlLT5zdXNwZW5kSWZOZWVkZWQoKTsKIAogICAgIHJldHVy
biBzb3VyY2UucmVsZWFzZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
dXNwZW5kYWJsZVRpbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3VzcGVuZGFibGVUaW1l
ci5jcHAKaW5kZXggMmE0ZDJlNTIxY2E4YzU5MDdjMTYwNGI3NGRhNjg4ZTUzMDUyMTExMS4uZGQz
ZTg5ZjE4YmVmNmEwMzFhZWNjYTdkYzdkZjk5ZGVhMmZlMTk5NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9TdXNwZW5kYWJsZVRpbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1N1c3BlbmRhYmxlVGltZXIuY3BwCkBAIC0zNSw4ICszNSw4IEBAIFN1c3BlbmRhYmxlVGlt
ZXI6OlN1c3BlbmRhYmxlVGltZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAg
ICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQogICAgICwgbV9uZXh0RmlyZUludGVy
dmFsKDApCiAgICAgLCBtX3JlcGVhdEludGVydmFsKDApCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAog
ICAgICwgbV9hY3RpdmUoZmFsc2UpCisjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICwgbV9zdXNw
ZW5kZWQoZmFsc2UpCiAjZW5kaWYKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5j
cHAKaW5kZXggYzRiNzNjZWM1MjczMjhjNWZkYjhiZTgwMzVkNjFiZjA5Y2RhYThhMy4uMjU2NTBm
MzkyN2ViODljMjc1ZjM2OGNhNTUxMWVhNzk0OGUzYmIzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJEYXRhYmFzZS5jcHAKQEAgLTUwLDcgKzUwLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBQYXNzUmVmUHRyPElEQkRhdGFiYXNlPiBJREJEYXRhYmFzZTo6Y3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJm
YWNlPiBkYXRhYmFzZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQkRhdGFiYXNlKGNv
bnRleHQsIGRhdGFiYXNlKSk7CisgICAgUmVmUHRyPElEQkRhdGFiYXNlPiBpZGJEYXRhYmFzZShh
ZG9wdFJlZihuZXcgSURCRGF0YWJhc2UoY29udGV4dCwgZGF0YWJhc2UpKSk7CisgICAgaWRiRGF0
YWJhc2UtPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiBpZGJEYXRhYmFzZS5yZWxlYXNl
KCk7CiB9CiAKIElEQkRhdGFiYXNlOjpJREJEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gYmFja2Vu
ZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuY3BwCmluZGV4IDk2OGZiNTBjZTA4NDlm
NTE4NTcwNTk0OTc2NTgzMmY1MTI4MzYyYjguLjliZmNkZDdjMWFkM2FjOWMwODA1MDYwZjNkZWMy
OWNlNDcxYzdmNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVz
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNwcApAQCAtNDUs
NyArNDUsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4g
SURCUmVxdWVzdDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NS
ZWZQdHI8SURCQW55PiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IElEQlJlcXVlc3QoY29udGV4dCwgc291cmNlLCB0cmFuc2Fj
dGlvbikpOworICAgIFJlZlB0cjxJREJSZXF1ZXN0PiByZXF1ZXN0KGFkb3B0UmVmKG5ldyBJREJS
ZXF1ZXN0KGNvbnRleHQsIHNvdXJjZSwgdHJhbnNhY3Rpb24pKSk7CisgICAgcmVxdWVzdC0+c3Vz
cGVuZElmTmVlZGVkKCk7CisgICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZSgpOwogfQogCiBJREJS
ZXF1ZXN0OjpJREJSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NS
ZWZQdHI8SURCQW55PiBzb3VyY2UsIElEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggMTQwZGYwNWFhZDk1YWM1
NWU3NDcwNTU5OTMwNjgzZWI4NDEzZjFlZS4uOTA0ODc3MDQ1ZDFiMzU0YTViMTY1MjEwYjczZGVk
NTNiNjlhZjU0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2Fj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5jcHAK
QEAgLTQyLDcgKzQyLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNzUmVmUHRyPElEQlRy
YW5zYWN0aW9uPiBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBiYWNr
ZW5kLCBJREJEYXRhYmFzZSogZGIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJUcmFu
c2FjdGlvbihjb250ZXh0LCBiYWNrZW5kLCBkYikpOworICAgIFJlZlB0cjxJREJUcmFuc2FjdGlv
bj4gdHJhbnNhY3Rpb24oYWRvcHRSZWYobmV3IElEQlRyYW5zYWN0aW9uKGNvbnRleHQsIGJhY2tl
bmQsIGRiKSkpOworICAgIHRyYW5zYWN0aW9uLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1
cm4gdHJhbnNhY3Rpb24ucmVsZWFzZSgpOwogfQogCiBJREJUcmFuc2FjdGlvbjo6SURCVHJhbnNh
Y3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQsIElEQkRhdGFiYXNlKiBkYikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCmluZGV4IDBjMTY2NGZiODQ4OWM3Njg0
MzlmZWU4N2NjZjIwYjk5ZmVlZjMyM2EuLmQ3ZjczMTA5NmI0ZWEzZGY4OWZkNGZiZGRjYjY2NWZk
NjU1MmM2MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ29udGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcApAQCAt
MTAyLDggKzEwMiwxMCBAQCBQYXNzUmVmUHRyPEF1ZGlvQ29udGV4dD4gQXVkaW9Db250ZXh0Ojpj
cmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAg
ICAgaWYgKHNfaGFyZHdhcmVDb250ZXh0Q291bnQgPj0gTWF4SGFyZHdhcmVDb250ZXh0cykKICAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXVkaW9D
b250ZXh0KGRvY3VtZW50KSk7CisKKyAgICBSZWZQdHI8QXVkaW9Db250ZXh0PiBhdWRpb0NvbnRl
eHQoYWRvcHRSZWYobmV3IEF1ZGlvQ29udGV4dChkb2N1bWVudCkpKTsKKyAgICBhdWRpb0NvbnRl
eHQtPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiBhdWRpb0NvbnRleHQucmVsZWFzZSgp
OwogfQogCiBQYXNzUmVmUHRyPEF1ZGlvQ29udGV4dD4gQXVkaW9Db250ZXh0OjpjcmVhdGVPZmZs
aW5lQ29udGV4dChEb2N1bWVudCogZG9jdW1lbnQsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMs
IHNpemVfdCBudW1iZXJPZkZyYW1lcywgZmxvYXQgc2FtcGxlUmF0ZSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKaW5kZXggNWUyMTNiODcx
NjBlNDgyNDFjMTQxYzg1MWQ0ODAzMWNmNDg0YzU4OS4uMzAxMGVhMzBlNWI3YmVhZjgxMWMyZjVm
MTdlZTc4MmM4ODIxNzUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9X
ZWJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNw
cApAQCAtMTY0LDYgKzE2NCwxMyBAQCBXZWJTb2NrZXQ6On5XZWJTb2NrZXQoKQogICAgICAgICBt
X2NoYW5uZWwtPmRpc2Nvbm5lY3QoKTsKIH0KIAorUGFzc1JlZlB0cjxXZWJTb2NrZXQ+IFdlYlNv
Y2tldDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit7CisgICAgUmVm
UHRyPFdlYlNvY2tldD4gd2ViU29ja2V0KGFkb3B0UmVmKG5ldyBXZWJTb2NrZXQoY29udGV4dCkp
KTsKKyAgICB3ZWJTb2NrZXQtPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiB3ZWJTb2Nr
ZXQucmVsZWFzZSgpOworfQorCiB2b2lkIFdlYlNvY2tldDo6Y29ubmVjdChjb25zdCBTdHJpbmcm
IHVybCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgVmVjdG9yPFN0cmluZz4gcHJvdG9jb2xz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKaW5kZXggYjg2MGI3NWM3YTc5ZDNi
MmVjYjczOGUyODc1ZTljMTM1ZGE5YjUzMy4uY2FlNTdkMmE3NjNlNjE3MTRkNjkyMTE3ZGY4NmYy
MDQ0YjU1YjY1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2Nr
ZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCkBAIC01Myw3
ICs1Myw3IEBAIGNsYXNzIFdlYlNvY2tldCA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlNvY2tldD4s
IHB1YmxpYyBFdmVudFRhcmdldCwgcHVibGljIEFjdGl2CiBwdWJsaWM6CiAgICAgc3RhdGljIHZv
aWQgc2V0SXNBdmFpbGFibGUoYm9vbCk7CiAgICAgc3RhdGljIGJvb2wgaXNBdmFpbGFibGUoKTsK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJTb2NrZXQ+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0KSB7IHJldHVybiBhZG9wdFJlZihuZXcgV2ViU29ja2V0KGNvbnRleHQp
KTsgfQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlNvY2tldD4gY3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqKTsKICAgICB2aXJ0dWFsIH5XZWJTb2NrZXQoKTsKIAogICAgIGVudW0gU3Rh
dGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwCmluZGV4IGZmMDc5MmM1
NDAyNDA3MDM3MmFlZTY5ZTdiMjhkOWI0OGY5OTJlMjUuLjA5NmUwMDliMWZhZDVlMzY5ZmU5NTA0
Y2U1ZGNhYmMxMGZiZmUyNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hh
cmVkV29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5j
cHAKQEAgLTY0LDYgKzY0LDcgQEAgUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXI+IFNoYXJlZFdvcmtl
cjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGMKIAogICAgIFNoYXJl
ZFdvcmtlclJlcG9zaXRvcnk6OmNvbm5lY3Qod29ya2VyLmdldCgpLCByZW1vdGVQb3J0LnJlbGVh
c2UoKSwgc2NyaXB0VVJMLCBuYW1lLCBlYyk7CiAKKyAgICB3b3JrZXItPnN1c3BlbmRJZk5lZWRl
ZCgpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlV29ya2VyKGNvbnRl
eHQsIHdvcmtlci0+YXNJRCgpLCBzY3JpcHRVUkwuc3RyaW5nKCksIHRydWUpOwogCiAgICAgcmV0
dXJuIHdvcmtlci5yZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAKaW5kZXggYjMy
MzZhN2NmNzE3YTk5Zjc3NmM3ZTdkNjZiZTVhNTViZDE0MjE1MS4uNDcxM2IwN2MxNWY2YTZmYzc4
NzRlZDk3NzdhOTJiZjk0ZjNkMDk0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcApAQCAt
NzMsNiArNzMsNyBAQCBQYXNzUmVmUHRyPFdvcmtlcj4gV29ya2VyOjpjcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJgogI2VuZGlmCiAgICAgd29ya2Vy
LT5tX3NjcmlwdExvYWRlci0+bG9hZEFzeW5jaHJvbm91c2x5KGNvbnRleHQsIHNjcmlwdFVSTCwg
RGVueUNyb3NzT3JpZ2luUmVxdWVzdHMsIHdvcmtlci5nZXQoKSk7CiAKKyAgICB3b3JrZXItPnN1
c3BlbmRJZk5lZWRlZCgpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRl
V29ya2VyKGNvbnRleHQsIHdvcmtlci0+YXNJRCgpLCBzY3JpcHRVUkwuc3RyaW5nKCksIGZhbHNl
KTsKIAogICAgIHJldHVybiB3b3JrZXIucmVsZWFzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5jcHAKaW5kZXggNmJlNThhYWNmMWQ2Njc1OThmZWUyNjA1NjBjZGE3ZDU2YTdkMjAw
Zi4uYTBmYjE5MWMxMGI3ZjAwM2M2NGM0ODU0MTMzNDc3NzE5MDc1M2I3YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0xNTQsNyArMTU0LDEwIEBAIHN0YXRpYyB2b2lk
IGxvZ0NvbnNvbGVFcnJvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBT
dHJpbmcmIG1lc3NhCiAKIFBhc3NSZWZQdHI8WE1MSHR0cFJlcXVlc3Q+IFhNTEh0dHBSZXF1ZXN0
OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxTZWN1
cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4pCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBY
TUxIdHRwUmVxdWVzdChjb250ZXh0LCBzZWN1cml0eU9yaWdpbikpOworICAgIFJlZlB0cjxYTUxI
dHRwUmVxdWVzdD4geG1sSHR0cFJlcXVlc3QoYWRvcHRSZWYobmV3IFhNTEh0dHBSZXF1ZXN0KGNv
bnRleHQsIHNlY3VyaXR5T3JpZ2luKSkpOworICAgIHhtbEh0dHBSZXF1ZXN0LT5zdXNwZW5kSWZO
ZWVkZWQoKTsKKworICAgIHJldHVybiB4bWxIdHRwUmVxdWVzdC5yZWxlYXNlKCk7CiB9CiAKIFhN
TEh0dHBSZXF1ZXN0OjpYTUxIdHRwUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbikKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAy
ZDIzNzcwYTMzZDAwNGU3MGQxYWE5YTZmNWQyM2Y2Y2FiZjNiNzM1Li41MGE1OGUzYzIwYzQ0Yjg0
OTdiMzYzMTQ1NTk0NWMwZTIzZTEzOTE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDEt
MzAgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+CisKKyAg
ICAgICAgVGVzdCB0aGF0IHRpbWVycyBkbyBub3QgZmlyZSBmcm9tIHN1YmZyYW1lcyBvZiBzdXNw
ZW5kZWQgZG9jdW1lbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTM3MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGZhc3QvZXZlbnRzL3Jlc291cmNlcy9zdXNwZW5kLXN1YmZyYW1lLTEuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvcmVzb3VyY2VzL3N1c3BlbmQtc3ViZnJhbWUt
Mi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9zdXNwZW5kLXRpbWVycy1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3N1c3BlbmQtdGltZXJzLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25z
LnR4dDoKKwogMjAxMi0wMS0zMSAgWXV6byBGdWppc2hpbWEgIDx5dXpvQGdvb2dsZS5jb20+CiAK
ICAgICAgICAgW0Nocm9taXVtXSBVbnJldmlld2VkIHRlc3QgZXhwZWN0YXRpb24gY2hhbmdlLgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcmVzb3VyY2VzL3N1c3BlbmQtc3Vi
ZnJhbWUtMS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcmVzb3VyY2VzL3N1c3BlbmQt
c3ViZnJhbWUtMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUxYmE4ZWFjZjQxZTBlZDQ5ZDRjMmJjMmM5NmZl
MjZhZDA2NTRmNzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9y
ZXNvdXJjZXMvc3VzcGVuZC1zdWJmcmFtZS0xLmh0bWwKQEAgLTAsMCArMSwxNiBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQ+CisgICAgICAgIGZ1bmN0aW9u
IHRlc3QoKSB7CisgICAgICAgICAgICB3aW5kb3cudG9wLmNvbnNvbGUubG9nKCdUaW1lb3V0IGlu
IHN1YmZyYW1lLTEgY3JlYXRlZCcpOworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgICAgICBhbGVydCgnVGltZW91dCBjcmVhdGVkIGluIHN1YmZyYW1lLTEu
aHRtbCBmaXJlZCcpOworICAgICAgICAgICAgfSwgNTApOworICAgICAgICB9CisgICAgPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KK0kgYW0gc3ViZnJhbWUtMS5odG1sCis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZXNvdXJjZXMvc3VzcGVu
ZC1zdWJmcmFtZS0yLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZXNvdXJjZXMvc3Vz
cGVuZC1zdWJmcmFtZS0yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWUzYjJlZTVmNTk3YzhmNDM4MTFhNjY3
N2JjOGEyMTg5MTlkODgyNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL3Jlc291cmNlcy9zdXNwZW5kLXN1YmZyYW1lLTIuaHRtbApAQCAtMCwwICsxLDEzIEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisJPHNjcmlwdD4KKwlvbnBhZ2VoaWRlID0g
ZnVuY3Rpb24oKSB7CisJICB3aW5kb3cudG9wLmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhLWZy
YW1lJykuY29udGVudFdpbmRvdy50ZXN0KCk7CisJfQorCTwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+CitJIGFtIHN1YmZyYW1lLTIuaHRtbAorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3VzcGVuZC10aW1lcnMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvc3VzcGVuZC10aW1lcnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjg1OTc3NGQyYmYwNjFmMWU2MzNkYzQ0OWNmZmU2YjRlYWFlOGViM2UKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zdXNwZW5kLXRpbWVycy1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxMyBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDY6IFRpbWVvdXQgaW4g
c3ViZnJhbWUtMSBjcmVhdGVkCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNTogTG9hZGVkIHBhZ2Vo
aWRlLXRpbWVvdXQtZ28tYmFjay5odG1sLCBnb2luZyBiYWNrCitDT05TT0xFIE1FU1NBR0U6IGxp
bmUgMzE6IFJlc3RvcmVkIHBhZ2UgZnJvbSBwYWdlIGNhY2hlLgorQUxFUlQ6IFRpbWVvdXQgY3Jl
YXRlZCBpbiBzdWJmcmFtZS0xLmh0bWwgZmlyZWQKK1Rlc3RzIHRoYXQgYWxsIEpTIHRpbWVycyBh
cmUgc3VzcGVuZGVkIGFmdGVyIHRoZSBwYWdlaGlkZSBldmVudCBpcyBmaXJlZCwgc28gdGhhdCB0
aW1lcnMgY3JlYXRlZCB3aXRoaW4gaXQgd2lsbCBub3QgZmlyZSB3aGlsZSB0aGUgZG9jdW1lbnQg
aXMgaW4gdGhlIHBhZ2UgY2FjaGUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3VzcGVuZC10aW1lcnMuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL3N1c3BlbmQtdGltZXJzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGI3ZWU3
NGY4NDQzZjcxNDQ2YjRiNzhkMjBmNmZkMzUyOGE5NmQ2NgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL3N1c3BlbmQtdGltZXJzLmh0bWwKQEAgLTAsMCArMSw1MyBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPlN1c3BlbmQgdGltZXJz
IG9uIG5hdmlnYXRlPC90aXRsZT4KKzxzdHlsZT4KKyAgICBpZnJhbWUgeworICAgICAgZGlzcGxh
eTogYmxvY2s7CisgICAgICBib3JkZXI6IHNvbGlkIDFweCAjY2NjOworICAgICAgbWFyZ2luOiAx
ZW07CisgICAgICB3aWR0aDogMjAwcHg7CisgICAgICBoZWlnaHQ6IDIwMHB4OworICAgIH0KKzwv
c3R5bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCis8aWZyYW1lIHNyYz0icmVzb3VyY2Vz
L3N1c3BlbmQtc3ViZnJhbWUtMS5odG1sIiBpZD0iYS1mcmFtZSI+PC9pZnJhbWU+IDxpZnJhbWUg
c3JjPSJyZXNvdXJjZXMvc3VzcGVuZC1zdWJmcmFtZS0yLmh0bWwiIGlkPSJiLWZyYW1lIj48L2lm
cmFtZT4KKworPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorZGVzY3JpcHRpb24oJ1Rl
c3RzIHRoYXQgYWxsIEpTIHRpbWVycyBhcmUgc3VzcGVuZGVkIGFmdGVyIHRoZSBwYWdlaGlkZSBl
dmVudCBpcyBmaXJlZCwgc28gdGhhdCB0aW1lcnMgY3JlYXRlZCB3aXRoaW4gaXQgd2lsbCBub3Qg
ZmlyZSB3aGlsZSB0aGUgZG9jdW1lbnQgaXMgaW4gdGhlIHBhZ2UgY2FjaGUuJyk7CisKK2lmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3Zl
cnJpZGVQcmVmZXJlbmNlKCdXZWJLaXRVc2VzUGFnZUNhY2hlUHJlZmVyZW5jZUtleScsIDEpOwor
CisKK29ucGFnZXNob3cgPSBmdW5jdGlvbihldmVudCkKK3sKKyAgICBpZiAoZXZlbnQucGVyc2lz
dGVkKSB7CisgICAgICAgIGNvbnNvbGUubG9nKCdSZXN0b3JlZCBwYWdlIGZyb20gcGFnZSBjYWNo
ZS4nKTsKKyAgICAgICAgaWYgKCF3aW5kb3cud2FzRmluaXNoSlNUZXN0Q2FsbGVkKSB7CisgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGZpbmlzaEpT
VGVzdCgpOworICAgICAgICAgICAgfSwgMjAwKTsKKyAgICAgICAgfQorICAgIH0KK30KKworb25s
b2FkID0gZnVuY3Rpb24oKQoreworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAg
IGxvY2F0aW9uLmhyZWYgPSAncmVzb3VyY2VzL3BhZ2VoaWRlLXRpbWVvdXQtZ28tYmFjay5odG1s
JzsKKyAgICB9LCAxMCk7Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwordmFy
IGpzVGVzdElzQXN5bmMgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25z
LnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4
dAppbmRleCAxNGQ3OGMzZmRjZjU3OGUyNTdlNDQ0ODBlYzRmZTRiMzYyNmM3MWQxLi41ZTRlMzg5
NGZiODJiOWRiMjVlZWEzNGMyMzY2N2E0NzU1ZTYzMjFkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC0yMDQsNiArMjA0
LDcgQEAgV09OVEZJWCBTS0lQIDogZmFzdC9kb20vV2luZG93L3RpbWVyLXJlc3VtZS1vbi1uYXZp
Z2F0aW9uLWJhY2suaHRtbCA9IFRJTUVPVVQgRkEKIFdPTlRGSVggU0tJUCA6IGZhc3QvZXZlbnRz
L3BhZ2VoaWRlLXRpbWVvdXQuaHRtbCA9IFRJTUVPVVQKIFdPTlRGSVggU0tJUCA6IGZhc3QvZXZl
bnRzL3BhZ2VzaG93LXBhZ2VoaWRlLW9uLWJhY2stY2FjaGVkLmh0bWwgPSBUSU1FT1VUIEZBSUwK
IFdPTlRGSVggU0tJUCA6IGZhc3QvZXZlbnRzL3BhZ2VzaG93LXBhZ2VoaWRlLW9uLWJhY2stY2Fj
aGVkLXdpdGgtZnJhbWVzLmh0bWwgPSBUSU1FT1VUCitXT05URklYIFNLSVAgOiBmYXN0L2V2ZW50
cy9zdXNwZW5kLXRpbWVycy5odG1sID0gVElNRU9VVAogV09OVEZJWCBTS0lQIDogbWVkaWEvcmVz
dG9yZS1mcm9tLXBhZ2UtY2FjaGUuaHRtbCA9IFRJTUVPVVQKIFdPTlRGSVggU0tJUCA6IGxvYWRl
ci9nby1iYWNrLXRvLWRpZmZlcmVudC13aW5kb3ctc2l6ZS5odG1sID0gVElNRU9VVCBURVhUCiBX
T05URklYIFNLSVAgOiBmYXN0L2xvYWRlci9jcmFzaC1jb3B5aW5nLWJhY2tmb3J3YXJkbGlzdC5o
dG1sID0gVEVYVAo=
</data>
<flag name="review"
          id="126528"
          type_id="1"
          status="+"
          setter="mihaip"
    />
    <flag name="commit-queue"
          id="126649"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125297</attachid>
            <date>2012-02-03 02:44:08 -0800</date>
            <delta_ts>2012-02-03 04:00:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Bug53733-patch12.diff</filename>
            <type>text/plain</type>
            <size>37234</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmNWMzMWFmLi41MGEwZTRjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDEt
MzAgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+CisKKyAg
ICAgICAgVGVzdCB0aGF0IHRpbWVycyBkbyBub3QgZmlyZSBmcm9tIHN1YmZyYW1lcyBvZiBzdXNw
ZW5kZWQgZG9jdW1lbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTM3MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGZhc3QvZXZlbnRzL3Jlc291cmNlcy9zdXNwZW5kLXN1YmZyYW1lLTEuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvcmVzb3VyY2VzL3N1c3BlbmQtc3ViZnJhbWUt
Mi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9zdXNwZW5kLXRpbWVycy1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3N1c3BlbmQtdGltZXJzLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25z
LnR4dDoKKwogMjAxMi0wMi0wMyAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGdvb2dsZS5jb20+
CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogcHJlc2VydmUgZWxlbWVudHMgcGFuZWwgc2VsZWN0
aW9uIHVwb24gbm9kZSBkcmFnJ24nZHJvcApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvcmVzb3VyY2VzL3N1c3BlbmQtc3ViZnJhbWUtMS5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvcmVzb3VyY2VzL3N1c3BlbmQtc3ViZnJhbWUtMS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxYmE4ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9yZXNvdXJjZXMvc3VzcGVuZC1zdWJmcmFtZS0xLmh0bWwKQEAgLTAs
MCArMSwxNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQ+
CisgICAgICAgIGZ1bmN0aW9uIHRlc3QoKSB7CisgICAgICAgICAgICB3aW5kb3cudG9wLmNvbnNv
bGUubG9nKCdUaW1lb3V0IGluIHN1YmZyYW1lLTEgY3JlYXRlZCcpOworICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBhbGVydCgnVGltZW91dCBjcmVh
dGVkIGluIHN1YmZyYW1lLTEuaHRtbCBmaXJlZCcpOworICAgICAgICAgICAgfSwgNTApOworICAg
ICAgICB9CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KK0kgYW0gc3ViZnJhbWUtMS5o
dG1sCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9yZXNvdXJjZXMvc3VzcGVuZC1zdWJmcmFtZS0yLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9yZXNvdXJjZXMvc3VzcGVuZC1zdWJmcmFtZS0yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uOWUzYjJlZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL3Jlc291cmNlcy9zdXNwZW5kLXN1YmZyYW1lLTIuaHRtbApAQCAtMCwwICsx
LDEzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisJPHNjcmlwdD4KKwlvbnBh
Z2VoaWRlID0gZnVuY3Rpb24oKSB7CisJICB3aW5kb3cudG9wLmRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdhLWZyYW1lJykuY29udGVudFdpbmRvdy50ZXN0KCk7CisJfQorCTwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+CitJIGFtIHN1YmZyYW1lLTIuaHRtbAorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3VzcGVuZC10aW1lcnMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3VzcGVuZC10aW1lcnMtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1OTc3NGQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zdXNwZW5kLXRpbWVycy1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxMyBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDY6IFRpbWVvdXQgaW4g
c3ViZnJhbWUtMSBjcmVhdGVkCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNTogTG9hZGVkIHBhZ2Vo
aWRlLXRpbWVvdXQtZ28tYmFjay5odG1sLCBnb2luZyBiYWNrCitDT05TT0xFIE1FU1NBR0U6IGxp
bmUgMzE6IFJlc3RvcmVkIHBhZ2UgZnJvbSBwYWdlIGNhY2hlLgorQUxFUlQ6IFRpbWVvdXQgY3Jl
YXRlZCBpbiBzdWJmcmFtZS0xLmh0bWwgZmlyZWQKK1Rlc3RzIHRoYXQgYWxsIEpTIHRpbWVycyBh
cmUgc3VzcGVuZGVkIGFmdGVyIHRoZSBwYWdlaGlkZSBldmVudCBpcyBmaXJlZCwgc28gdGhhdCB0
aW1lcnMgY3JlYXRlZCB3aXRoaW4gaXQgd2lsbCBub3QgZmlyZSB3aGlsZSB0aGUgZG9jdW1lbnQg
aXMgaW4gdGhlIHBhZ2UgY2FjaGUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3VzcGVuZC10aW1lcnMuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL3N1c3BlbmQtdGltZXJzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uOGI3ZWU3NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL3N1c3BlbmQtdGltZXJzLmh0bWwKQEAgLTAsMCArMSw1MyBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPlN1c3BlbmQgdGltZXJzIG9uIG5hdmln
YXRlPC90aXRsZT4KKzxzdHlsZT4KKyAgICBpZnJhbWUgeworICAgICAgZGlzcGxheTogYmxvY2s7
CisgICAgICBib3JkZXI6IHNvbGlkIDFweCAjY2NjOworICAgICAgbWFyZ2luOiAxZW07CisgICAg
ICB3aWR0aDogMjAwcHg7CisgICAgICBoZWlnaHQ6IDIwMHB4OworICAgIH0KKzwvc3R5bGU+Cis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCis8aWZyYW1lIHNyYz0icmVzb3VyY2VzL3N1c3BlbmQt
c3ViZnJhbWUtMS5odG1sIiBpZD0iYS1mcmFtZSI+PC9pZnJhbWU+IDxpZnJhbWUgc3JjPSJyZXNv
dXJjZXMvc3VzcGVuZC1zdWJmcmFtZS0yLmh0bWwiIGlkPSJiLWZyYW1lIj48L2lmcmFtZT4KKwor
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorZGVzY3JpcHRpb24oJ1Rlc3RzIHRoYXQg
YWxsIEpTIHRpbWVycyBhcmUgc3VzcGVuZGVkIGFmdGVyIHRoZSBwYWdlaGlkZSBldmVudCBpcyBm
aXJlZCwgc28gdGhhdCB0aW1lcnMgY3JlYXRlZCB3aXRoaW4gaXQgd2lsbCBub3QgZmlyZSB3aGls
ZSB0aGUgZG9jdW1lbnQgaXMgaW4gdGhlIHBhZ2UgY2FjaGUuJyk7CisKK2lmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVm
ZXJlbmNlKCdXZWJLaXRVc2VzUGFnZUNhY2hlUHJlZmVyZW5jZUtleScsIDEpOworCisKK29ucGFn
ZXNob3cgPSBmdW5jdGlvbihldmVudCkKK3sKKyAgICBpZiAoZXZlbnQucGVyc2lzdGVkKSB7Cisg
ICAgICAgIGNvbnNvbGUubG9nKCdSZXN0b3JlZCBwYWdlIGZyb20gcGFnZSBjYWNoZS4nKTsKKyAg
ICAgICAgaWYgKCF3aW5kb3cud2FzRmluaXNoSlNUZXN0Q2FsbGVkKSB7CisgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwor
ICAgICAgICAgICAgfSwgMjAwKTsKKyAgICAgICAgfQorICAgIH0KK30KKworb25sb2FkID0gZnVu
Y3Rpb24oKQoreworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgIGxvY2F0aW9u
LmhyZWYgPSAncmVzb3VyY2VzL3BhZ2VoaWRlLXRpbWVvdXQtZ28tYmFjay5odG1sJzsKKyAgICB9
LCAxMCk7Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwordmFyIGpzVGVzdElz
QXN5bmMgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAppbmRleCA5
N2Y0MjczLi4wMzg0Y2VlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC0yMDQsNiArMjA0LDcgQEAgV09OVEZJWCBTS0lQ
IDogZmFzdC9kb20vV2luZG93L3RpbWVyLXJlc3VtZS1vbi1uYXZpZ2F0aW9uLWJhY2suaHRtbCA9
IFRJTUVPVVQgRkEKIFdPTlRGSVggU0tJUCA6IGZhc3QvZXZlbnRzL3BhZ2VoaWRlLXRpbWVvdXQu
aHRtbCA9IFRJTUVPVVQKIFdPTlRGSVggU0tJUCA6IGZhc3QvZXZlbnRzL3BhZ2VzaG93LXBhZ2Vo
aWRlLW9uLWJhY2stY2FjaGVkLmh0bWwgPSBUSU1FT1VUIEZBSUwKIFdPTlRGSVggU0tJUCA6IGZh
c3QvZXZlbnRzL3BhZ2VzaG93LXBhZ2VoaWRlLW9uLWJhY2stY2FjaGVkLXdpdGgtZnJhbWVzLmh0
bWwgPSBUSU1FT1VUCitXT05URklYIFNLSVAgOiBmYXN0L2V2ZW50cy9zdXNwZW5kLXRpbWVycy5o
dG1sID0gVElNRU9VVAogV09OVEZJWCBTS0lQIDogbWVkaWEvcmVzdG9yZS1mcm9tLXBhZ2UtY2Fj
aGUuaHRtbCA9IFRJTUVPVVQKIFdPTlRGSVggU0tJUCA6IGxvYWRlci9nby1iYWNrLXRvLWRpZmZl
cmVudC13aW5kb3ctc2l6ZS5odG1sID0gVElNRU9VVCBURVhUCiBXT05URklYIFNLSVAgOiBmYXN0
L2xvYWRlci9jcmFzaC1jb3B5aW5nLWJhY2tmb3J3YXJkbGlzdC5odG1sID0gVEVYVApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IGU0ODk4MWIuLjU3ZjJmZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5MCBAQAorMjAx
Mi0wMS0zMSAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQG5va2lhLmNvbT4K
KworICAgICAgICBFbnN1cmUgdGltZXJzIGFuZCBvdGhlciBhY3RpdmUgRE9NIG9iamVjdHMgZG8g
bm90IGZpcmUgaW4gc3VzcGVuZGVkIGRvY3VtZW50cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUzNzMzCisKKyAgICAgICAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCBub3cgcmVtZW1iZXJzIGl0IGhhcyBzdXNwZW5kZWQgYWN0aXZlIERPTSBvYmplY3Rz
CisgICAgICAgIGFuZCBzdXNwZW5kcyBhbGwgbmV3bHkgaW5zdGFsbGVkIGFjdGl2ZSBET00gb2Jq
ZWN0cyBhcyB3ZWxsLgorCisgICAgICAgIEFsbCBjcmVhdGUtY2FsbHMgYWN0aXZlIERPTSBvYmpl
Y3RzIG5vdyBjYWxscyB0aGUgcG9zdCBjb25zdHJ1Y3RvciBtZXRob2QKKyAgICAgICAgc3VzcGVu
ZElmTmVlZGVkIHRoYXQgdXBkYXRlcyB0aGUgc3VzcGVuZCBzdGF0ZS4gSXQgaXMgcG9zdCBjb25z
dHJ1Y3RvcgorICAgICAgICBiZWNhdXNlIHRoZSBzdXNwZW5kL3Jlc3VtZSBmdW5jdGlvbnMgYXJl
IHZpcnR1YWwgYW5kIHRodXMgY2FuIG5vdCBiZSBjYWxsZWQKKyAgICAgICAgZnJvbSBjb25zdHJ1
Y3RvcnMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGVzdDogZmFzdC9ldmVudHMvc3VzcGVuZC10aW1lcnMuaHRtbAorCisgICAgICAgICogTW9kdWxl
cy9pbnRlbnRzL0ludGVudFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZW50UmVx
dWVzdDo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9nZW5lcmljL0FjdGl2ZURPTUNhbGxi
YWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjdGl2ZURPTUNhbGxiYWNrOjpBY3RpdmVET01D
YWxsYmFjayk6CisgICAgICAgICogZG9tL0FjdGl2ZURPTU9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBY3RpdmVET01PYmplY3Q6OkFjdGl2ZURPTU9iamVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpBY3RpdmVET01PYmplY3Q6On5BY3RpdmVET01PYmplY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QWN0aXZlRE9NT2JqZWN0OjpzdXNwZW5kSWZOZWVkZWQpOgorICAgICAgICAqIGRvbS9BY3Rp
dmVET01PYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFjdGl2ZURPTU9iamVjdDo6c3VzcGVu
ZElmTmVlZGVkQ2FsbGVkKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRFdmVudFF1ZXVlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RXZlbnRRdWV1ZTo6RG9jdW1lbnRFdmVudFF1ZXVl
KToKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6On5TY3JpcHRFeGVjdXRp
b25Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNh
blN1c3BlbmRBY3RpdmVET01PYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OnN1c3BlbmRBY3RpdmVET01PYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnJlc3VtZUFjdGl2ZURPTU9iamVjdHMpOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6c3RvcEFjdGl2ZURPTU9iamVjdHMp
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6c3VzcGVuZEFjdGl2
ZURPTU9iamVjdElmTmVlZGVkKToKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6YWN0aXZlRE9N
T2JqZWN0c0FyZVN1c3BlbmRlZCk6CisgICAgICAgICogZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW06OmNyZWF0ZSk6CisgICAgICAgICog
ZmlsZWFwaS9GaWxlUmVhZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVSZWFkZXI6OmNy
ZWF0ZSk6CisgICAgICAgICogZmlsZWFwaS9GaWxlUmVhZGVyLmg6CisgICAgICAgICogZmlsZWFw
aS9GaWxlV3JpdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVXcml0ZXI6OmNyZWF0ZSk6
CisgICAgICAgICogZmlsZWFwaS9GaWxlV3JpdGVyLmg6CisgICAgICAgICogaGlzdG9yeS9DYWNo
ZWRGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGcmFtZTo6Q2FjaGVkRnJhbWUp
OgorICAgICAgICAqIGh0bWwvSFRNTEF1ZGlvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MQXVkaW9FbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTE1hcnF1ZWVF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNYXJxdWVlRWxlbWVudDo6Y3JlYXRl
KToKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFZpZGVvRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBtZWRpYXN0cmVhbS9QZWVy
Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6Y3JlYXRl
KToKKyAgICAgICAgKiBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpOb3RpZmljYXRpb246OmNyZWF0ZSk6CisgICAgICAgICogbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb25DZW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2Vu
dGVyOjpjcmVhdGUpOgorICAgICAgICAqIG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVy
Lmg6CisgICAgICAgICogcGFnZS9ET01UaW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01U
aW1lcjo6aW5zdGFsbCk6CisgICAgICAgIChXZWJDb3JlOjpET01UaW1lcjo6ZmlyZWQpOgorICAg
ICAgICAqIHBhZ2UvRXZlbnRTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRTb3Vy
Y2U6OmNyZWF0ZSk6CisgICAgICAgICogcGFnZS9TdXNwZW5kYWJsZVRpbWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN1c3BlbmRhYmxlVGltZXI6OlN1c3BlbmRhYmxlVGltZXIpOgorICAgICAg
ICAqIHN0b3JhZ2UvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2U6OmNyZWF0ZSk6CisgICAgICAgICogc3RvcmFnZS9JREJSZXF1ZXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQlJlcXVlc3Q6OmNyZWF0ZSk6CisgICAgICAgICogc3RvcmFnZS9JREJUcmFu
c2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6Y3JlYXRlKToK
KyAgICAgICAgKiB3ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9Db250ZXh0OjpjcmVhdGUpOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6Y3JlYXRlKToKKyAgICAgICAgKiB3ZWJz
b2NrZXRzL1dlYlNvY2tldC5oOgorICAgICAgICAqIHdvcmtlcnMvU2hhcmVkV29ya2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlcjo6Y3JlYXRlKToKKyAgICAgICAgKiB3b3Jr
ZXJzL1dvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXI6OmNyZWF0ZSk6CisgICAg
ICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBS
ZXF1ZXN0OjpjcmVhdGUpOgorCiAyMDEyLTAyLTAzICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZW1vdmUgW0xlZ2FjeVBhcmVudF0gZnJvbSBDb2RlR2Vu
ZXJhdG9yR09iamVjdC5wbSwgYW5kIHJlbmFtZSBpdCB0byBbSlNMZWdhY3lQYXJlbnRdCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ludGVudHMvSW50ZW50UmVxdWVzdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ludGVudHMvSW50ZW50UmVxdWVzdC5jcHAKaW5kZXgg
Mjk2ZjNkZC4uNDY4YjUxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRl
bnRzL0ludGVudFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50
cy9JbnRlbnRSZXF1ZXN0LmNwcApAQCAtNDEsNyArNDEsOSBAQCBQYXNzUmVmUHRyPEludGVudFJl
cXVlc3Q+IEludGVudFJlcXVlc3Q6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFz
c1JlZlB0cjxJbnRlbnRSZXN1bHRDYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxJbnRlbnRS
ZXN1bHRDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3
IEludGVudFJlcXVlc3QoY29udGV4dCwgaW50ZW50LCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2Fs
bGJhY2spKTsKKyAgICBSZWZQdHI8SW50ZW50UmVxdWVzdD4gaW50ZW50UmVxdWVzdChhZG9wdFJl
ZihuZXcgSW50ZW50UmVxdWVzdChjb250ZXh0LCBpbnRlbnQsIHN1Y2Nlc3NDYWxsYmFjaywgZXJy
b3JDYWxsYmFjaykpKTsKKyAgICBpbnRlbnRSZXF1ZXN0LT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAg
ICByZXR1cm4gaW50ZW50UmVxdWVzdC5yZWxlYXNlKCk7CiB9CiAKIEludGVudFJlcXVlc3Q6Oklu
dGVudFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvQWN0aXZlRE9NQ2FsbGJhY2suY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9BY3RpdmVET01DYWxsYmFjay5jcHAKaW5k
ZXggZmYwMmE0Mi4uYzIwNDFkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
Z2VuZXJpYy9BY3RpdmVET01DYWxsYmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvZ2VuZXJpYy9BY3RpdmVET01DYWxsYmFjay5jcHAKQEAgLTEyMiw2ICsxMjIsNyBAQCBzdGF0
aWMgdm9pZCBkZXN0cm95T25Db250ZXh0VGhyZWFkKFBhc3NPd25QdHI8QWN0aXZlRE9NT2JqZWN0
Q2FsbGJhY2tJbXBsPiBpbXBsKQogQWN0aXZlRE9NQ2FsbGJhY2s6OkFjdGl2ZURPTUNhbGxiYWNr
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgOiBtX2ltcGwoYWRvcHRQdHIo
bmV3IEFjdGl2ZURPTU9iamVjdENhbGxiYWNrSW1wbChjb250ZXh0KSkpCiB7CisgICAgbV9pbXBs
LT5zdXNwZW5kSWZOZWVkZWQoKTsKIH0KIAogQWN0aXZlRE9NQ2FsbGJhY2s6On5BY3RpdmVET01D
YWxsYmFjaygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuY3BwCmluZGV4IDM5YTRj
NGMuLmJiMmVjMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuY3BwCkBAIC02
MCw2ICs2MCw5IEBAIHZvaWQgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OmNvbnRleHREZXN0
cm95ZWQoKQogQWN0aXZlRE9NT2JqZWN0OjpBY3RpdmVET01PYmplY3QoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgdm9pZCogdXBjYXN0UG9pbnRlcikKICAg
ICA6IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiAg
ICAgLCBtX3BlbmRpbmdBY3Rpdml0eUNvdW50KDApCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAg
ICwgbV9zdXNwZW5kSWZOZWVkZWRDYWxsZWQoZmFsc2UpCisjZW5kaWYKIHsKICAgICBpZiAoIW1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwpAQCAtNzMsMTAgKzc2LDIz
IEBAIEFjdGl2ZURPTU9iamVjdDo6fkFjdGl2ZURPTU9iamVjdCgpCiAgICAgaWYgKCFtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAorICAgIEFTU0VSVChtX3N1c3Bl
bmRJZk5lZWRlZENhbGxlZCk7CiAgICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+
aXNDb250ZXh0VGhyZWFkKCkpOwogICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+d2lsbERl
c3Ryb3lBY3RpdmVET01PYmplY3QodGhpcyk7CiB9CiAKK3ZvaWQgQWN0aXZlRE9NT2JqZWN0Ojpz
dXNwZW5kSWZOZWVkZWQoKQoreworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBBU1NFUlQoIW1f
c3VzcGVuZElmTmVlZGVkQ2FsbGVkKTsKKyAgICBtX3N1c3BlbmRJZk5lZWRlZENhbGxlZCA9IHRy
dWU7CisjZW5kaWYKKyAgICBpZiAoIW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5zdXNwZW5kQWN0aXZlRE9N
T2JqZWN0SWZOZWVkZWQodGhpcyk7Cit9CisKIGJvb2wgQWN0aXZlRE9NT2JqZWN0OjpoYXNQZW5k
aW5nQWN0aXZpdHkoKSBjb25zdAogewogICAgIHJldHVybiBtX3BlbmRpbmdBY3Rpdml0eUNvdW50
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5oCmluZGV4IGRiN2NhNjYuLjY2NzVjYjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmgKQEAgLTUxLDYgKzUxLDEzIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIEFjdGl2ZURPTU9iamVjdChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Kiwgdm9pZCogdXBjYXN0UG9pbnRlcik7CiAKKyAgICAgICAg
Ly8gc3VzcGVuZElmTmVlZGVkKCkgc2hvdWxkIGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYWZ0ZXIg
b2JqZWN0IGNvbnN0cnVjdGlvbiB0byBzeW5jaHJvbml6ZQorICAgICAgICAvLyB0aGUgc3VzcGVu
ZCBzdGF0ZSB3aXRoIHRoYXQgaW4gU2NyaXB0RXhlY3V0aW9uQ29udGV4dC4KKyAgICAgICAgdm9p
ZCBzdXNwZW5kSWZOZWVkZWQoKTsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgIGJvb2wg
c3VzcGVuZElmTmVlZGVkQ2FsbGVkKCkgY29uc3QgeyByZXR1cm4gbV9zdXNwZW5kSWZOZWVkZWRD
YWxsZWQgfTsKKyNlbmRpZgorCiAgICAgICAgIHZpcnR1YWwgYm9vbCBoYXNQZW5kaW5nQWN0aXZp
dHkoKSBjb25zdDsKIAogICAgICAgICAvLyBjYW5TdXNwZW5kKCkgaXMgdXNlZCBieSB0aGUgY2Fs
bGVyIGlmIHRoZXJlIGlzIGEgY2hvaWNlIGJldHdlZW4gc3VzcGVuZGluZyBhbmQgc3RvcHBpbmcu
CkBAIC04OCw2ICs5NSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHByaXZhdGU6CiAg
ICAgICAgIHVuc2lnbmVkIG1fcGVuZGluZ0FjdGl2aXR5Q291bnQ7CisjaWYgIUFTU0VSVF9ESVNB
QkxFRAorICAgICAgICBib29sIG1fc3VzcGVuZElmTmVlZGVkQ2FsbGVkOworI2VuZGlmCiAgICAg
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRF
dmVudFF1ZXVlLmNwcAppbmRleCAzMTAyM2UyLi41Yjg5OWIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRFdmVudFF1ZXVlLmNwcApAQCAtNjQsNiArNjQsNyBAQCBEb2N1bWVudEV2ZW50
UXVldWU6OkRvY3VtZW50RXZlbnRRdWV1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
KQogICAgIDogbV9wZW5kaW5nRXZlbnRUaW1lcihhZG9wdFB0cihuZXcgRG9jdW1lbnRFdmVudFF1
ZXVlVGltZXIodGhpcywgY29udGV4dCkpKQogICAgICwgbV9pc0Nsb3NlZChmYWxzZSkKIHsKKyAg
ICBtX3BlbmRpbmdFdmVudFRpbWVyLT5zdXNwZW5kSWZOZWVkZWQoKTsKIH0KIAogRG9jdW1lbnRF
dmVudFF1ZXVlOjp+RG9jdW1lbnRFdmVudFF1ZXVlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAppbmRleCBlZjA2YzI5Li5iMzZiMjIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC05Miw2ICs5
Miw3IEBAIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKQog
ICAgIDogbV9pdGVyYXRpbmdBY3RpdmVET01PYmplY3RzKGZhbHNlKQogICAgICwgbV9pbkRlc3Ry
dWN0b3IoZmFsc2UpCiAgICAgLCBtX2luRGlzcGF0Y2hFcnJvckV2ZW50KGZhbHNlKQorICAgICwg
bV9hY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkKGZhbHNlKQogI2lmIEVOQUJMRShTUUxfREFU
QUJBU0UpCiAgICAgLCBtX2hhc09wZW5EYXRhYmFzZXMoZmFsc2UpCiAjZW5kaWYKQEAgLTEwMSw3
ICsxMDIsNiBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpTY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6On5TY3JpcHRFeGVjdXRpb25Db250ZXh0KCkKIHsK
ICAgICBtX2luRGVzdHJ1Y3RvciA9IHRydWU7Ci0KICAgICBmb3IgKEhhc2hTZXQ8Q29udGV4dERl
c3RydWN0aW9uT2JzZXJ2ZXIqPjo6aXRlcmF0b3IgaXRlciA9IG1fZGVzdHJ1Y3Rpb25PYnNlcnZl
cnMuYmVnaW4oKTsgaXRlciAhPSBtX2Rlc3RydWN0aW9uT2JzZXJ2ZXJzLmVuZCgpOyBpdGVyID0g
bV9kZXN0cnVjdGlvbk9ic2VydmVycy5iZWdpbigpKSB7CiAgICAgICAgIENvbnRleHREZXN0cnVj
dGlvbk9ic2VydmVyKiBvYnNlcnZlciA9ICppdGVyOwogICAgICAgICBtX2Rlc3RydWN0aW9uT2Jz
ZXJ2ZXJzLnJlbW92ZShvYnNlcnZlcik7CkBAIC0yMDYsMTEgKzIwNiwxMiBAQCBib29sIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OmNhblN1c3BlbmRBY3RpdmVET01PYmplY3RzKCkKICAgICBIYXNo
TWFwPEFjdGl2ZURPTU9iamVjdCosIHZvaWQqPjo6aXRlcmF0b3IgYWN0aXZlT2JqZWN0c0VuZCA9
IG1fYWN0aXZlRE9NT2JqZWN0cy5lbmQoKTsKICAgICBmb3IgKEhhc2hNYXA8QWN0aXZlRE9NT2Jq
ZWN0Kiwgdm9pZCo+OjppdGVyYXRvciBpdGVyID0gbV9hY3RpdmVET01PYmplY3RzLmJlZ2luKCk7
IGl0ZXIgIT0gYWN0aXZlT2JqZWN0c0VuZDsgKytpdGVyKSB7CiAgICAgICAgIEFTU0VSVChpdGVy
LT5maXJzdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpID09IHRoaXMpOworICAgICAgICBBU1NF
UlQoaXRlci0+Zmlyc3QtPnN1c3BlbmRJZk5lZWRlZENhbGxlZCgpKTsKICAgICAgICAgaWYgKCFp
dGVyLT5maXJzdC0+Y2FuU3VzcGVuZCgpKSB7CiAgICAgICAgICAgICBtX2l0ZXJhdGluZ0FjdGl2
ZURPTU9iamVjdHMgPSBmYWxzZTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
fQotICAgIH0gICAgCisgICAgfQogICAgIG1faXRlcmF0aW5nQWN0aXZlRE9NT2JqZWN0cyA9IGZh
bHNlOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMjIyLDE4ICsyMjMsMjMgQEAgdm9pZCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyhBY3RpdmVET01PYmpl
Y3Q6OlJlYXNvbkZvclMKICAgICBIYXNoTWFwPEFjdGl2ZURPTU9iamVjdCosIHZvaWQqPjo6aXRl
cmF0b3IgYWN0aXZlT2JqZWN0c0VuZCA9IG1fYWN0aXZlRE9NT2JqZWN0cy5lbmQoKTsKICAgICBm
b3IgKEhhc2hNYXA8QWN0aXZlRE9NT2JqZWN0Kiwgdm9pZCo+OjppdGVyYXRvciBpdGVyID0gbV9h
Y3RpdmVET01PYmplY3RzLmJlZ2luKCk7IGl0ZXIgIT0gYWN0aXZlT2JqZWN0c0VuZDsgKytpdGVy
KSB7CiAgICAgICAgIEFTU0VSVChpdGVyLT5maXJzdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
ID09IHRoaXMpOworICAgICAgICBBU1NFUlQoaXRlci0+Zmlyc3QtPnN1c3BlbmRJZk5lZWRlZENh
bGxlZCgpKTsKICAgICAgICAgaXRlci0+Zmlyc3QtPnN1c3BlbmQod2h5KTsKICAgICB9CiAgICAg
bV9pdGVyYXRpbmdBY3RpdmVET01PYmplY3RzID0gZmFsc2U7CisgICAgbV9hY3RpdmVET01PYmpl
Y3RzQXJlU3VzcGVuZGVkID0gdHJ1ZTsKKyAgICBtX3JlYXNvbkZvclN1c3BlbmRpbmdBY3RpdmVE
T01PYmplY3RzID0gd2h5OwogfQogCiB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnJlc3Vt
ZUFjdGl2ZURPTU9iamVjdHMoKQogeworICAgIG1fYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRl
ZCA9IGZhbHNlOwogICAgIC8vIE5vIHByb3RlY3Rpb24gYWdhaW5zdCBtX2FjdGl2ZURPTU9iamVj
dHMgY2hhbmdpbmcgZHVyaW5nIGl0ZXJhdGlvbjogcmVzdW1lKCkgc2hvdWxkbid0IGV4ZWN1dGUg
YXJiaXRyYXJ5IEpTLgogICAgIG1faXRlcmF0aW5nQWN0aXZlRE9NT2JqZWN0cyA9IHRydWU7CiAg
ICAgSGFzaE1hcDxBY3RpdmVET01PYmplY3QqLCB2b2lkKj46Oml0ZXJhdG9yIGFjdGl2ZU9iamVj
dHNFbmQgPSBtX2FjdGl2ZURPTU9iamVjdHMuZW5kKCk7CiAgICAgZm9yIChIYXNoTWFwPEFjdGl2
ZURPTU9iamVjdCosIHZvaWQqPjo6aXRlcmF0b3IgaXRlciA9IG1fYWN0aXZlRE9NT2JqZWN0cy5i
ZWdpbigpOyBpdGVyICE9IGFjdGl2ZU9iamVjdHNFbmQ7ICsraXRlcikgewogICAgICAgICBBU1NF
UlQoaXRlci0+Zmlyc3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA9PSB0aGlzKTsKKyAgICAg
ICAgQVNTRVJUKGl0ZXItPmZpcnN0LT5zdXNwZW5kSWZOZWVkZWRDYWxsZWQoKSk7CiAgICAgICAg
IGl0ZXItPmZpcnN0LT5yZXN1bWUoKTsKICAgICB9CiAgICAgbV9pdGVyYXRpbmdBY3RpdmVET01P
YmplY3RzID0gZmFsc2U7CkBAIC0yNDYsNiArMjUyLDcgQEAgdm9pZCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpzdG9wQWN0aXZlRE9NT2JqZWN0cygpCiAgICAgSGFzaE1hcDxBY3RpdmVET01PYmpl
Y3QqLCB2b2lkKj46Oml0ZXJhdG9yIGFjdGl2ZU9iamVjdHNFbmQgPSBtX2FjdGl2ZURPTU9iamVj
dHMuZW5kKCk7CiAgICAgZm9yIChIYXNoTWFwPEFjdGl2ZURPTU9iamVjdCosIHZvaWQqPjo6aXRl
cmF0b3IgaXRlciA9IG1fYWN0aXZlRE9NT2JqZWN0cy5iZWdpbigpOyBpdGVyICE9IGFjdGl2ZU9i
amVjdHNFbmQ7ICsraXRlcikgewogICAgICAgICBBU1NFUlQoaXRlci0+Zmlyc3QtPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSA9PSB0aGlzKTsKKyAgICAgICAgQVNTRVJUKGl0ZXItPmZpcnN0LT5z
dXNwZW5kSWZOZWVkZWRDYWxsZWQoKSk7CiAgICAgICAgIGl0ZXItPmZpcnN0LT5zdG9wKCk7CiAg
ICAgfQogICAgIG1faXRlcmF0aW5nQWN0aXZlRE9NT2JqZWN0cyA9IGZhbHNlOwpAQCAtMjU0LDYg
KzI2MSwxNCBAQCB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnN0b3BBY3RpdmVET01PYmpl
Y3RzKCkKICAgICBjbG9zZU1lc3NhZ2VQb3J0cygpOwogfQogCit2b2lkIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OnN1c3BlbmRBY3RpdmVET01PYmplY3RJZk5lZWRlZChBY3RpdmVET01PYmplY3Qq
IG9iamVjdCkKK3sKKyAgICBBU1NFUlQobV9hY3RpdmVET01PYmplY3RzLmNvbnRhaW5zKG9iamVj
dCkpOworICAgIC8vIEVuc3VyZSBhbGwgQWN0aXZlRE9NT2JqZWN0cyBhcmUgc3VzcGVuZGVkIGFs
c28gbmV3bHkgY3JlYXRlZCBvbmVzLgorICAgIGlmIChtX2FjdGl2ZURPTU9iamVjdHNBcmVTdXNw
ZW5kZWQpCisgICAgICAgIG9iamVjdC0+c3VzcGVuZChtX3JlYXNvbkZvclN1c3BlbmRpbmdBY3Rp
dmVET01PYmplY3RzKTsKK30KKwogdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpkaWRDcmVh
dGVBY3RpdmVET01PYmplY3QoQWN0aXZlRE9NT2JqZWN0KiBvYmplY3QsIHZvaWQqIHVwY2FzdFBv
aW50ZXIpCiB7CiAgICAgQVNTRVJUKG9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaAppbmRleCBhZWQzNDExLi42ZmU0MWQ1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKQEAgLTEwMyw5ICsxMDMsMTUgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZXN1bWVBY3RpdmVET01PYmplY3RzKCk7CiAgICAg
dmlydHVhbCB2b2lkIHN0b3BBY3RpdmVET01PYmplY3RzKCk7CiAKKyAgICBib29sIGFjdGl2ZURP
TU9iamVjdHNBcmVTdXNwZW5kZWQoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2ZURPTU9iamVjdHNB
cmVTdXNwZW5kZWQ7IH0KKworICAgIC8vIENhbGxlZCBmcm9tIHRoZSBjb25zdHJ1Y3RvciBhbmQg
ZGVzdHJ1Y3RvcnMgb2YgQWN0aXZlRE9NT2JqZWN0LgogICAgIHZvaWQgZGlkQ3JlYXRlQWN0aXZl
RE9NT2JqZWN0KEFjdGl2ZURPTU9iamVjdCosIHZvaWQqIHVwY2FzdFBvaW50ZXIpOwogICAgIHZv
aWQgd2lsbERlc3Ryb3lBY3RpdmVET01PYmplY3QoQWN0aXZlRE9NT2JqZWN0Kik7CiAKKyAgICAv
LyBDYWxsZWQgYWZ0ZXIgdGhlIGNvbnN0cnVjdGlvbiBvZiBhbiBBY3RpdmVET01PYmplY3QgdG8g
c3luY2hyb25pemUgc3VzcGVuZCBzdGF0ZS4KKyAgICB2b2lkIHN1c3BlbmRBY3RpdmVET01PYmpl
Y3RJZk5lZWRlZChBY3RpdmVET01PYmplY3QqKTsKKwogICAgIHR5cGVkZWYgY29uc3QgSGFzaE1h
cDxBY3RpdmVET01PYmplY3QqLCB2b2lkKj4gQWN0aXZlRE9NT2JqZWN0c01hcDsKICAgICBBY3Rp
dmVET01PYmplY3RzTWFwJiBhY3RpdmVET01PYmplY3RzKCkgY29uc3QgeyByZXR1cm4gbV9hY3Rp
dmVET01PYmplY3RzOyB9CiAKQEAgLTIwNiw2ICsyMTIsOSBAQCBwcml2YXRlOgogICAgIGNsYXNz
IFBlbmRpbmdFeGNlcHRpb247CiAgICAgT3duUHRyPFZlY3RvcjxPd25QdHI8UGVuZGluZ0V4Y2Vw
dGlvbj4gPiA+IG1fcGVuZGluZ0V4Y2VwdGlvbnM7CiAKKyAgICBib29sIG1fYWN0aXZlRE9NT2Jq
ZWN0c0FyZVN1c3BlbmRlZDsKKyAgICBBY3RpdmVET01PYmplY3Q6OlJlYXNvbkZvclN1c3BlbnNp
b24gbV9yZWFzb25Gb3JTdXNwZW5kaW5nQWN0aXZlRE9NT2JqZWN0czsKKwogI2lmIEVOQUJMRShT
UUxfREFUQUJBU0UpCiAgICAgUmVmUHRyPERhdGFiYXNlVGhyZWFkPiBtX2RhdGFiYXNlVGhyZWFk
OwogICAgIGJvb2wgbV9oYXNPcGVuRGF0YWJhc2VzOyAvLyBUaGlzIG5ldmVyIGNoYW5nZXMgYmFj
ayB0byBmYWxzZSwgZXZlbiBhZnRlciB0aGUgZGF0YWJhc2UgdGhyZWFkIGlzIGNsb3NlZC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCmluZGV4IGFjMzg2OTAuLjk3OTll
MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNwcApAQCAtNTYsOCAr
NTYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IERP
TUZpbGVTeXN0ZW06OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25z
dCBTdHJpbmcmIG5hbWUsIFBhc3NPd25QdHI8QXN5bmNGaWxlU3lzdGVtPiBhc3luY0ZpbGVTeXN0
ZW0pCiB7CiAgICAgUmVmUHRyPERPTUZpbGVTeXN0ZW0+IGZpbGVTeXN0ZW0oYWRvcHRSZWYobmV3
IERPTUZpbGVTeXN0ZW0oY29udGV4dCwgbmFtZSwgYXN5bmNGaWxlU3lzdGVtKSkpOworICAgIGZp
bGVTeXN0ZW0tPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkT3BlbkZpbGVTeXN0ZW0oZmlsZVN5c3RlbS5nZXQoKSk7Ci0gICAgcmV0dXJuIGZpbGVT
eXN0ZW07CisgICAgcmV0dXJuIGZpbGVTeXN0ZW0ucmVsZWFzZSgpOwogfQogCiBET01GaWxlU3lz
dGVtOjpET01GaWxlU3lzdGVtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0
IFN0cmluZyYgbmFtZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGFzeW5jRmlsZVN5c3Rl
bSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwCmluZGV4IDI5YzU5ODQuLjA3YzRi
NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcApAQCAtNDgsNiArNDgsMTMg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgZG91YmxlIHByb2dyZXNzTm90
aWZpY2F0aW9uSW50ZXJ2YWxNUyA9IDUwOwogCitQYXNzUmVmUHRyPEZpbGVSZWFkZXI+IEZpbGVS
ZWFkZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQoreworICAgIFJl
ZlB0cjxGaWxlUmVhZGVyPiBmaWxlUmVhZGVyKGFkb3B0UmVmKG5ldyBGaWxlUmVhZGVyKGNvbnRl
eHQpKSk7CisgICAgZmlsZVJlYWRlci0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgcmV0dXJuIGZp
bGVSZWFkZXIucmVsZWFzZSgpOworfQorCiBGaWxlUmVhZGVyOjpGaWxlUmVhZGVyKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwg
dGhpcykKICAgICAsIG1fc3RhdGUoRU1QVFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0ZpbGVSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5o
CmluZGV4IDgwNGRkMjkuLmVjZGQ0ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvRmlsZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5o
CkBAIC01MSwxMCArNTEsNyBAQCB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogCiBjbGFzcyBG
aWxlUmVhZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8RmlsZVJlYWRlcj4sIHB1YmxpYyBBY3RpdmVE
T01PYmplY3QsIHB1YmxpYyBFdmVudFRhcmdldCwgcHVibGljIEZpbGVSZWFkZXJMb2FkZXJDbGll
bnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbGVSZWFkZXI+IGNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBGaWxlUmVhZGVyKGNvbnRleHQpKTsKLSAgICB9CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8RmlsZVJlYWRlcj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKIAogICAg
IHZpcnR1YWwgfkZpbGVSZWFkZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlV3JpdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVdyaXRlci5j
cHAKaW5kZXggMmIyNWNmYS4uN2NkOWI4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlV3JpdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVXcml0
ZXIuY3BwCkBAIC00NSw2ICs0NSwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBj
b25zdCBpbnQga01heFJlY3Vyc2lvbkRlcHRoID0gMzsKIAorUGFzc1JlZlB0cjxGaWxlV3JpdGVy
PiBGaWxlV3JpdGVyOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK3sK
KyAgICBSZWZQdHI8RmlsZVdyaXRlcj4gZmlsZVdyaXRlcihhZG9wdFJlZihuZXcgRmlsZVdyaXRl
cihjb250ZXh0KSkpOworICAgIGZpbGVXcml0ZXItPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJl
dHVybiBmaWxlV3JpdGVyLnJlbGVhc2UoKTsKK30KKwogRmlsZVdyaXRlcjo6RmlsZVdyaXRlcihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIDogQWN0aXZlRE9NT2JqZWN0KGNv
bnRleHQsIHRoaXMpCiAgICAgLCBtX3JlYWR5U3RhdGUoSU5JVCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVdyaXRlci5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9G
aWxlV3JpdGVyLmgKaW5kZXggMmI1OTdhMS4uOTQ2MTM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9GaWxlV3JpdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9G
aWxlV3JpdGVyLmgKQEAgLTQ4LDEwICs0OCw3IEBAIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ7CiAKIGNsYXNzIEZpbGVXcml0ZXIgOiBwdWJsaWMgRmlsZVdyaXRlckJhc2UsIHB1YmxpYyBB
Y3RpdmVET01PYmplY3QsIHB1YmxpYyBFdmVudFRhcmdldCwgcHVibGljIEFzeW5jRmlsZVdyaXRl
ckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RmlsZVdyaXRlcj4gY3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCi0gICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IEZpbGVXcml0ZXIoY29udGV4dCkpOwotICAgIH0KKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxGaWxlV3JpdGVyPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwog
CiAgICAgZW51bSBSZWFkeVN0YXRlIHsKICAgICAgICAgSU5JVCA9IDAsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hp
c3RvcnkvQ2FjaGVkRnJhbWUuY3BwCmluZGV4IDYwZmFiMDQuLjliMGQyZmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwCkBAIC0xNjgsNyArMTY4LDYgQEAgQ2FjaGVkRnJh
bWU6OkNhY2hlZEZyYW1lKEZyYW1lKiBmcmFtZSkKICAgICAvLyBidXQgYWZ0ZXIgd2UndmUgZmly
ZWQgdGhlIHBhZ2VoaWRlIGV2ZW50LCBpbiBjYXNlIHRoYXQgY3JlYXRlcyBtb3JlIG9iamVjdHMu
CiAgICAgLy8gU3VzcGVuZGluZyBtdXN0IGFsc28gaGFwcGVuIGFmdGVyIHdlJ3ZlIHJlY3Vyc2Vk
IG92ZXIgY2hpbGQgZnJhbWVzLCBpbiBjYXNlCiAgICAgLy8gdGhvc2UgY3JlYXRlIG1vcmUgb2Jq
ZWN0cy4KLSAgICAvLyBGSVhNRTogSXQncyBzdGlsbCBwb3NzaWJsZSB0byBoYXZlIG9iamVjdHMg
Y3JlYXRlZCBhZnRlciBzdXNwZW5kaW5nIGluIHNvbWUgY2FzZXMsIHNlZSBodHRwOi8vd2Via2l0
Lm9yZy9iLzUzNzMzIGZvciBtb3JlIGRldGFpbHMuCiAgICAgbV9kb2N1bWVudC0+ZG9jdW1lbnRX
aWxsU3VzcGVuZEZvclBhZ2VDYWNoZSgpOwogICAgIG1fZG9jdW1lbnQtPnN1c3BlbmRTY3JpcHRl
ZEFuaW1hdGlvbkNvbnRyb2xsZXJDYWxsYmFja3MoKTsKICAgICBtX2RvY3VtZW50LT5zdXNwZW5k
QWN0aXZlRE9NT2JqZWN0cyhBY3RpdmVET01PYmplY3Q6OkRvY3VtZW50V2lsbEJlY29tZUluYWN0
aXZlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwCmluZGV4IGUzZGNm
NDcuLmRjMTBiM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF1ZGlvRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXVkaW9FbGVtZW50LmNwcApA
QCAtNDMsNyArNDMsOSBAQCBIVE1MQXVkaW9FbGVtZW50OjpIVE1MQXVkaW9FbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bQogCiBQYXNzUmVmUHRyPEhU
TUxBdWRpb0VsZW1lbnQ+IEhUTUxBdWRpb0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQog
ewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTEF1ZGlvRWxlbWVudCh0YWdOYW1lLCBkb2N1
bWVudCwgY3JlYXRlZEJ5UGFyc2VyKSk7CisgICAgUmVmUHRyPEhUTUxBdWRpb0VsZW1lbnQ+IGF1
ZGlvRWxlbWVudChhZG9wdFJlZihuZXcgSFRNTEF1ZGlvRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVu
dCwgY3JlYXRlZEJ5UGFyc2VyKSkpOworICAgIGF1ZGlvRWxlbWVudC0+c3VzcGVuZElmTmVlZGVk
KCk7CisgICAgcmV0dXJuIGF1ZGlvRWxlbWVudC5yZWxlYXNlKCk7CiB9CiAKIFBhc3NSZWZQdHI8
SFRNTEF1ZGlvRWxlbWVudD4gSFRNTEF1ZGlvRWxlbWVudDo6Y3JlYXRlRm9ySlNDb25zdHJ1Y3Rv
cihEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgc3JjKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuY3BwCmluZGV4IDA1M2ZmYTguLjJmZTIyNGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5jcHAKQEAgLTQ4LDcgKzQ4LDkg
QEAgaW5saW5lIEhUTUxNYXJxdWVlRWxlbWVudDo6SFRNTE1hcnF1ZWVFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3UKIAogUGFzc1JlZlB0cjxIVE1MTWFycXVlZUVsZW1l
bnQ+IEhUTUxNYXJxdWVlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxN
YXJxdWVlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOworICAgIFJlZlB0cjxIVE1MTWFycXVl
ZUVsZW1lbnQ+IG1hcnF1ZWVFbGVtZW50KGFkb3B0UmVmKG5ldyBIVE1MTWFycXVlZUVsZW1lbnQo
dGFnTmFtZSwgZG9jdW1lbnQpKSk7CisgICAgbWFycXVlZUVsZW1lbnQtPnN1c3BlbmRJZk5lZWRl
ZCgpOworICAgIHJldHVybiBtYXJxdWVlRWxlbWVudC5yZWxlYXNlKCk7CiB9CiAKIGJvb2wgSFRN
TE1hcnF1ZWVFbGVtZW50OjptYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1l
LCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYgcmVzdWx0KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFZpZGVvRWxlbWVudC5jcHAKaW5kZXggZmVkMmZhNC4uOTFhY2M0MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCkBAIC01NCw3ICs1NCw5IEBAIGlubGluZSBI
VE1MVmlkZW9FbGVtZW50OjpIVE1MVmlkZW9FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50CiAKIFBhc3NSZWZQdHI8SFRNTFZpZGVvRWxlbWVudD4gSFRNTFZpZGVv
RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBk
b2N1bWVudCwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBIVE1MVmlkZW9FbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBjcmVhdGVkQnlQYXJzZXIpKTsK
KyAgICBSZWZQdHI8SFRNTFZpZGVvRWxlbWVudD4gdmlkZW9FbGVtZW50KGFkb3B0UmVmKG5ldyBI
VE1MVmlkZW9FbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBjcmVhdGVkQnlQYXJzZXIpKSk7Cisg
ICAgdmlkZW9FbGVtZW50LT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gdmlkZW9FbGVt
ZW50LnJlbGVhc2UoKTsKIH0KIAogYm9vbCBIVE1MVmlkZW9FbGVtZW50OjpyZW5kZXJlcklzTmVl
ZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0KSAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uLmNwcAppbmRleCBiYjQ5M2Q3Li43ZTVmYzlh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24uY3BwCkBA
IC00MSw2ICs0MSw3IEBAIFBhc3NSZWZQdHI8UGVlckNvbm5lY3Rpb24+IFBlZXJDb25uZWN0aW9u
OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4CiAgICAgUmVmUHRyPFBlZXJD
b25uZWN0aW9uPiBjb25uZWN0aW9uID0gYWRvcHRSZWYobmV3IFBlZXJDb25uZWN0aW9uKGNvbnRl
eHQsIHNlcnZlckNvbmZpZ3VyYXRpb24sIHNpZ25hbGluZ0NhbGxiYWNrKSk7CiAgICAgY29ubmVj
dGlvbi0+c2V0UGVuZGluZ0FjdGl2aXR5KGNvbm5lY3Rpb24uZ2V0KCkpOwogICAgIGNvbm5lY3Rp
b24tPnNjaGVkdWxlSW5pdGlhbE5lZ290aWF0aW9uKCk7CisgICAgY29ubmVjdGlvbi0+c3VzcGVu
ZElmTmVlZGVkKCk7CiAKICAgICByZXR1cm4gY29ubmVjdGlvbi5yZWxlYXNlKCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKaW5kZXggZDc5OTFm
Mi4uNzQ5NjRkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uLmNwcApAQCAtMTAyLDEyICsxMDIsMTYgQEAgTm90aWZpY2F0aW9uOjp+Tm90aWZpY2F0aW9u
KCkKIAogUGFzc1JlZlB0cjxOb3RpZmljYXRpb24+IE5vdGlmaWNhdGlvbjo6Y3JlYXRlKGNvbnN0
IEtVUkwmIHVybCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29k
ZSYgZWMsIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBwcm92aWRlcikgCiB7IAotICAg
IHJldHVybiBhZG9wdFJlZihuZXcgTm90aWZpY2F0aW9uKHVybCwgY29udGV4dCwgZWMsIHByb3Zp
ZGVyKSk7CisgICAgUmVmUHRyPE5vdGlmaWNhdGlvbj4gbm90aWZpY2F0aW9uKGFkb3B0UmVmKG5l
dyBOb3RpZmljYXRpb24odXJsLCBjb250ZXh0LCBlYywgcHJvdmlkZXIpKSk7CisgICAgbm90aWZp
Y2F0aW9uLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gbm90aWZpY2F0aW9uLnJlbGVh
c2UoKTsKIH0KIAogUGFzc1JlZlB0cjxOb3RpZmljYXRpb24+IE5vdGlmaWNhdGlvbjo6Y3JlYXRl
KGNvbnN0IE5vdGlmaWNhdGlvbkNvbnRlbnRzJiBjb250ZW50cywgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMsIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9u
Q2VudGVyPiBwcm92aWRlcikgCiB7IAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgTm90aWZpY2F0
aW9uKGNvbnRlbnRzLCBjb250ZXh0LCBlYywgcHJvdmlkZXIpKTsKKyAgICBSZWZQdHI8Tm90aWZp
Y2F0aW9uPiBub3RpZmljYXRpb24oYWRvcHRSZWYobmV3IE5vdGlmaWNhdGlvbihjb250ZW50cywg
Y29udGV4dCwgZWMsIHByb3ZpZGVyKSkpOworICAgIG5vdGlmaWNhdGlvbi0+c3VzcGVuZElmTmVl
ZGVkKCk7CisgICAgcmV0dXJuIG5vdGlmaWNhdGlvbi5yZWxlYXNlKCk7CiB9CiAKIGNvbnN0IEF0
b21pY1N0cmluZyYgTm90aWZpY2F0aW9uOjppbnRlcmZhY2VOYW1lKCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmNwcAppbmRl
eCAzN2VkNTQ3Li43MTE0NmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbkNlbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuY3BwCkBAIC00MSw2ICs0MSwxMyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK1Bhc3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBOb3RpZmljYXRp
b25DZW50ZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBOb3RpZmlj
YXRpb25QcmVzZW50ZXIqIHByZXNlbnRlcikKK3sKKyAgICBSZWZQdHI8Tm90aWZpY2F0aW9uQ2Vu
dGVyPiBub3RpZmljYXRpb25DZW50ZXIoYWRvcHRSZWYobmV3IE5vdGlmaWNhdGlvbkNlbnRlcihj
b250ZXh0LCBwcmVzZW50ZXIpKSk7CisgICAgbm90aWZpY2F0aW9uQ2VudGVyLT5zdXNwZW5kSWZO
ZWVkZWQoKTsKKyAgICByZXR1cm4gbm90aWZpY2F0aW9uQ2VudGVyLnJlbGVhc2UoKTsKK30KKwog
Tm90aWZpY2F0aW9uQ2VudGVyOjpOb3RpZmljYXRpb25DZW50ZXIoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgTm90aWZpY2F0aW9uUHJlc2VudGVyKiBwcmVzZW50ZXIpCiAgICAgOiBB
Y3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKICAgICAsIG1fbm90aWZpY2F0aW9uUHJlc2Vu
dGVyKHByZXNlbnRlcikge30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uQ2VudGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvbkNlbnRlci5oCmluZGV4IDIzYjMxZTAuLjQwMmNjYmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaApAQCAtNTAsNyAr
NTAsNyBAQCBjbGFzcyBWb2lkQ2FsbGJhY2s7CiAKIGNsYXNzIE5vdGlmaWNhdGlvbkNlbnRlciA6
IHB1YmxpYyBSZWZDb3VudGVkPE5vdGlmaWNhdGlvbkNlbnRlcj4sIHB1YmxpYyBBY3RpdmVET01P
YmplY3QgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRl
cj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIE5vdGlmaWNhdGlvblBy
ZXNlbnRlciogcHJlc2VudGVyKSB7IHJldHVybiBhZG9wdFJlZihuZXcgTm90aWZpY2F0aW9uQ2Vu
dGVyKGNvbnRleHQsIHByZXNlbnRlcikpOyB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Tm90aWZp
Y2F0aW9uQ2VudGVyPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE5vdGlmaWNhdGlv
blByZXNlbnRlciopOwogCiAgICAgUGFzc1JlZlB0cjxOb3RpZmljYXRpb24+IGNyZWF0ZUhUTUxO
b3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBVUkksIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9ET01UaW1lci5jcHAKaW5kZXggZjllYjAxYy4uMDhmOWYzMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01UaW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9ET01UaW1lci5jcHAKQEAgLTk2LDYgKzk2LDcgQEAgaW50IERPTVRpbWVyOjppbnN0YWxs
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NPd25QdHI8U2NoZWR1bGVkQWN0
aW8KICAgICAvLyBvciBpZiBpdCBpcyBhIG9uZS10aW1lIHRpbWVyIGFuZCBpdCBoYXMgZmlyZWQg
KERPTVRpbWVyOjpmaXJlZCkuCiAgICAgRE9NVGltZXIqIHRpbWVyID0gbmV3IERPTVRpbWVyKGNv
bnRleHQsIGFjdGlvbiwgdGltZW91dCwgc2luZ2xlU2hvdCk7CiAKKyAgICB0aW1lci0+c3VzcGVu
ZElmTmVlZGVkKCk7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRJbnN0YWxsVGlt
ZXIoY29udGV4dCwgdGltZXItPm1fdGltZW91dElkLCB0aW1lb3V0LCBzaW5nbGVTaG90KTsKIAog
ICAgIHJldHVybiB0aW1lci0+bV90aW1lb3V0SWQ7CkBAIC0xMTgsNyArMTE5LDcgQEAgdm9pZCBE
T01UaW1lcjo6ZmlyZWQoKQogewogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQg
PSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgdGltZXJOZXN0aW5nTGV2ZWwgPSBtX25l
c3RpbmdMZXZlbDsKLSAgICAKKyAgICBBU1NFUlQoIWNvbnRleHQtPmFjdGl2ZURPTU9iamVjdHNB
cmVTdXNwZW5kZWQoKSk7CiAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRv
cihtX3Nob3VsZEZvcndhcmRVc2VyR2VzdHVyZSA/IERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdl
c3R1cmUgOiBQb3NzaWJseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7CiAgICAgCiAgICAgLy8gT25s
eSB0aGUgZmlyc3QgZXhlY3V0aW9uIG9mIGEgbXVsdGktc2hvdCB0aW1lciBzaG91bGQgZ2V0IGFu
IGFmZmlybWF0aXZlIHVzZXIgZ2VzdHVyZSBpbmRpY2F0b3IuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRT
b3VyY2UuY3BwCmluZGV4IGVhMDY2MDAuLjU0M2YxZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRT
b3VyY2UuY3BwCkBAIC05OCw2ICs5OCw3IEBAIFBhc3NSZWZQdHI8RXZlbnRTb3VyY2U+IEV2ZW50
U291cmNlOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uCiAKICAg
ICBzb3VyY2UtPnNldFBlbmRpbmdBY3Rpdml0eShzb3VyY2UuZ2V0KCkpOwogICAgIHNvdXJjZS0+
Y29ubmVjdCgpOworICAgIHNvdXJjZS0+c3VzcGVuZElmTmVlZGVkKCk7CiAKICAgICByZXR1cm4g
c291cmNlLnJlbGVhc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3Vz
cGVuZGFibGVUaW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1c3BlbmRhYmxlVGltZXIu
Y3BwCmluZGV4IDJhNGQyZTUuLmRkM2U4OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU3VzcGVuZGFibGVUaW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TdXNwZW5k
YWJsZVRpbWVyLmNwcApAQCAtMzUsOCArMzUsOCBAQCBTdXNwZW5kYWJsZVRpbWVyOjpTdXNwZW5k
YWJsZVRpbWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgOiBBY3RpdmVE
T01PYmplY3QoY29udGV4dCwgdGhpcykKICAgICAsIG1fbmV4dEZpcmVJbnRlcnZhbCgwKQogICAg
ICwgbV9yZXBlYXRJbnRlcnZhbCgwKQotI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAsIG1fYWN0
aXZlKGZhbHNlKQorI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAsIG1fc3VzcGVuZGVkKGZhbHNl
KQogI2VuZGlmCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFi
YXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwCmluZGV4IGM0
YjczY2UuLjI1NjUwZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0
YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwCkBA
IC01MCw3ICs1MCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGFzc1JlZlB0cjxJREJEYXRh
YmFzZT4gSURCRGF0YWJhc2U6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gZGF0YWJhc2UpCiB7Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJEYXRhYmFzZShjb250ZXh0LCBkYXRhYmFzZSkpOwor
ICAgIFJlZlB0cjxJREJEYXRhYmFzZT4gaWRiRGF0YWJhc2UoYWRvcHRSZWYobmV3IElEQkRhdGFi
YXNlKGNvbnRleHQsIGRhdGFiYXNlKSkpOworICAgIGlkYkRhdGFiYXNlLT5zdXNwZW5kSWZOZWVk
ZWQoKTsKKyAgICByZXR1cm4gaWRiRGF0YWJhc2UucmVsZWFzZSgpOwogfQogCiBJREJEYXRhYmFz
ZTo6SURCRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0
cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJSZXF1ZXN0LmNwcAppbmRleCA5NjhmYjUwLi45YmZjZGQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCUmVxdWVzdC5jcHAKQEAgLTQ1LDcgKzQ1LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQlJlcXVlc3Q6OmNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBJREJUcmFu
c2FjdGlvbiogdHJhbnNhY3Rpb24pCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJSZXF1
ZXN0KGNvbnRleHQsIHNvdXJjZSwgdHJhbnNhY3Rpb24pKTsKKyAgICBSZWZQdHI8SURCUmVxdWVz
dD4gcmVxdWVzdChhZG9wdFJlZihuZXcgSURCUmVxdWVzdChjb250ZXh0LCBzb3VyY2UsIHRyYW5z
YWN0aW9uKSkpOworICAgIHJlcXVlc3QtPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiBy
ZXF1ZXN0LnJlbGVhc2UoKTsKIH0KIAogSURCUmVxdWVzdDo6SURCUmVxdWVzdChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBJREJUcmFu
c2FjdGlvbiogdHJhbnNhY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L0lEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rp
b24uY3BwCmluZGV4IDE0MGRmMDUuLjkwNDg3NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
SURCVHJhbnNhY3Rpb24uY3BwCkBAIC00Miw3ICs0Miw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gSURCVHJhbnNhY3Rpb246OmNyZWF0ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZT4gYmFja2VuZCwgSURCRGF0YWJhc2UqIGRiKQogewotICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgSURCVHJhbnNhY3Rpb24oY29udGV4dCwgYmFja2VuZCwgZGIpKTsKKyAgICBS
ZWZQdHI8SURCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uKGFkb3B0UmVmKG5ldyBJREJUcmFuc2Fj
dGlvbihjb250ZXh0LCBiYWNrZW5kLCBkYikpKTsKKyAgICB0cmFuc2FjdGlvbi0+c3VzcGVuZElm
TmVlZGVkKCk7CisgICAgcmV0dXJuIHRyYW5zYWN0aW9uLnJlbGVhc2UoKTsKIH0KIAogSURCVHJh
bnNhY3Rpb246OklEQlRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBJREJE
YXRhYmFzZSogZGIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0Nv
bnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAppbmRl
eCAwYzE2NjRmLi5kN2Y3MzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9B
dWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ29udGV4
dC5jcHAKQEAgLTEwMiw4ICsxMDIsMTAgQEAgUGFzc1JlZlB0cjxBdWRpb0NvbnRleHQ+IEF1ZGlv
Q29udGV4dDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwogICAgIGlmIChzX2hhcmR3YXJlQ29udGV4dENvdW50ID49IE1heEhhcmR3YXJlQ29u
dGV4dHMpCiAgICAgICAgIHJldHVybiAwOwotICAgICAgICAKLSAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEF1ZGlvQ29udGV4dChkb2N1bWVudCkpOworCisgICAgUmVmUHRyPEF1ZGlvQ29udGV4dD4g
YXVkaW9Db250ZXh0KGFkb3B0UmVmKG5ldyBBdWRpb0NvbnRleHQoZG9jdW1lbnQpKSk7CisgICAg
YXVkaW9Db250ZXh0LT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gYXVkaW9Db250ZXh0
LnJlbGVhc2UoKTsKIH0KIAogUGFzc1JlZlB0cjxBdWRpb0NvbnRleHQ+IEF1ZGlvQ29udGV4dDo6
Y3JlYXRlT2ZmbGluZUNvbnRleHQoRG9jdW1lbnQqIGRvY3VtZW50LCB1bnNpZ25lZCBudW1iZXJP
ZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMsIGZsb2F0IHNhbXBsZVJhdGUsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJT
b2NrZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4
IDVlMjEzYjguLjMwMTBlYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMv
V2ViU29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5j
cHAKQEAgLTE2NCw2ICsxNjQsMTMgQEAgV2ViU29ja2V0Ojp+V2ViU29ja2V0KCkKICAgICAgICAg
bV9jaGFubmVsLT5kaXNjb25uZWN0KCk7CiB9CiAKK1Bhc3NSZWZQdHI8V2ViU29ja2V0PiBXZWJT
b2NrZXQ6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQoreworICAgIFJl
ZlB0cjxXZWJTb2NrZXQ+IHdlYlNvY2tldChhZG9wdFJlZihuZXcgV2ViU29ja2V0KGNvbnRleHQp
KSk7CisgICAgd2ViU29ja2V0LT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gd2ViU29j
a2V0LnJlbGVhc2UoKTsKK30KKwogdm9pZCBXZWJTb2NrZXQ6OmNvbm5lY3QoY29uc3QgU3RyaW5n
JiB1cmwsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFZlY3RvcjxTdHJpbmc+IHByb3RvY29s
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmggYi9T
b3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCmluZGV4IGI4NjBiNzUuLmNhZTU3
ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaApAQCAtNTMsNyArNTMsNyBA
QCBjbGFzcyBXZWJTb2NrZXQgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJTb2NrZXQ+LCBwdWJsaWMg
RXZlbnRUYXJnZXQsIHB1YmxpYyBBY3RpdgogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHNldElz
QXZhaWxhYmxlKGJvb2wpOwogICAgIHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKCk7Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8V2ViU29ja2V0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlNvY2tldChjb250ZXh0KSk7IH0KKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJTb2NrZXQ+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0Kik7CiAgICAgdmlydHVhbCB+V2ViU29ja2V0KCk7CiAKICAgICBlbnVtIFN0YXRlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmNwcAppbmRleCBmZjA3OTJjLi4wOTZlMDA5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwCkBAIC02NCw2ICs2NCw3
IEBAIFBhc3NSZWZQdHI8U2hhcmVkV29ya2VyPiBTaGFyZWRXb3JrZXI6OmNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjCiAKICAgICBTaGFyZWRXb3JrZXJSZXBvc2l0b3J5
Ojpjb25uZWN0KHdvcmtlci5nZXQoKSwgcmVtb3RlUG9ydC5yZWxlYXNlKCksIHNjcmlwdFVSTCwg
bmFtZSwgZWMpOwogCisgICAgd29ya2VyLT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdvcmtlcihjb250ZXh0LCB3b3JrZXItPmFzSUQo
KSwgc2NyaXB0VVJMLnN0cmluZygpLCB0cnVlKTsKIAogICAgIHJldHVybiB3b3JrZXIucmVsZWFz
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCmluZGV4IGIzMjM2YTcuLjQ3MTNiMDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAKQEAgLTczLDYgKzczLDcgQEAgUGFzc1JlZlB0cjxX
b3JrZXI+IFdvcmtlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFN0cmluZyYKICNlbmRpZgogICAgIHdvcmtlci0+bV9zY3JpcHRMb2FkZXItPmxvYWRBc3lu
Y2hyb25vdXNseShjb250ZXh0LCBzY3JpcHRVUkwsIERlbnlDcm9zc09yaWdpblJlcXVlc3RzLCB3
b3JrZXIuZ2V0KCkpOwogCisgICAgd29ya2VyLT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdvcmtlcihjb250ZXh0LCB3b3JrZXItPmFz
SUQoKSwgc2NyaXB0VVJMLnN0cmluZygpLCBmYWxzZSk7CiAKICAgICByZXR1cm4gd29ya2VyLnJl
bGVhc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IDZiZTU4YWEu
LmEwZmIxOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtMTU0LDcg
KzE1NCwxMCBAQCBzdGF0aWMgdm9pZCBsb2dDb25zb2xlRXJyb3IoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBtZXNzYQogCiBQYXNzUmVmUHRyPFhNTEh0dHBS
ZXF1ZXN0PiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luKQogewotICAg
IHJldHVybiBhZG9wdFJlZihuZXcgWE1MSHR0cFJlcXVlc3QoY29udGV4dCwgc2VjdXJpdHlPcmln
aW4pKTsKKyAgICBSZWZQdHI8WE1MSHR0cFJlcXVlc3Q+IHhtbEh0dHBSZXF1ZXN0KGFkb3B0UmVm
KG5ldyBYTUxIdHRwUmVxdWVzdChjb250ZXh0LCBzZWN1cml0eU9yaWdpbikpKTsKKyAgICB4bWxI
dHRwUmVxdWVzdC0+c3VzcGVuZElmTmVlZGVkKCk7CisKKyAgICByZXR1cm4geG1sSHR0cFJlcXVl
c3QucmVsZWFzZSgpOwogfQogCiBYTUxIdHRwUmVxdWVzdDo6WE1MSHR0cFJlcXVlc3QoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2Vj
dXJpdHlPcmlnaW4pCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125305</attachid>
            <date>2012-02-03 04:00:14 -0800</date>
            <delta_ts>2012-02-06 02:35:50 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>Bug53733-patch13.diff</filename>
            <type>text/plain</type>
            <size>37236</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmNWMzMWFmLi4wZDM5MDZlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDEt
MzAgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+CisKKyAg
ICAgICAgVGVzdCB0aGF0IHRpbWVycyBkbyBub3QgZmlyZSBmcm9tIHN1YmZyYW1lcyBvZiBzdXNw
ZW5kZWQgZG9jdW1lbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTM3MzMKKworICAgICAgICBSZXZpZXdlZCBieSBNaWhhaSBQYXJwYXJpdGEuCisK
KyAgICAgICAgKiBmYXN0L2V2ZW50cy9yZXNvdXJjZXMvc3VzcGVuZC1zdWJmcmFtZS0xLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3Jlc291cmNlcy9zdXNwZW5kLXN1YmZyYW1l
LTIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvc3VzcGVuZC10aW1lcnMtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9zdXNwZW5kLXRpbWVycy5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9u
cy50eHQ6CisKIDIwMTItMDItMDMgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29t
PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHByZXNlcnZlIGVsZW1lbnRzIHBhbmVsIHNlbGVj
dGlvbiB1cG9uIG5vZGUgZHJhZyduJ2Ryb3AKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL3Jlc291cmNlcy9zdXNwZW5kLXN1YmZyYW1lLTEuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL3Jlc291cmNlcy9zdXNwZW5kLXN1YmZyYW1lLTEuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMWJhOGVhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvcmVzb3VyY2VzL3N1c3BlbmQtc3ViZnJhbWUtMS5odG1sCkBAIC0w
LDAgKzEsMTYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0
PgorICAgICAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICAgICAgd2luZG93LnRvcC5jb25z
b2xlLmxvZygnVGltZW91dCBpbiBzdWJmcmFtZS0xIGNyZWF0ZWQnKTsKKyAgICAgICAgICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgYWxlcnQoJ1RpbWVvdXQgY3Jl
YXRlZCBpbiBzdWJmcmFtZS0xLmh0bWwgZmlyZWQnKTsKKyAgICAgICAgICAgIH0sIDUwKTsKKyAg
ICAgICAgfQorICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CitJIGFtIHN1YmZyYW1lLTEu
aHRtbAorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvcmVzb3VyY2VzL3N1c3BlbmQtc3ViZnJhbWUtMi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvcmVzb3VyY2VzL3N1c3BlbmQtc3ViZnJhbWUtMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjllM2IyZWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9yZXNvdXJjZXMvc3VzcGVuZC1zdWJmcmFtZS0yLmh0bWwKQEAgLTAsMCAr
MSwxMyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorCTxzY3JpcHQ+CisJb25w
YWdlaGlkZSA9IGZ1bmN0aW9uKCkgeworCSAgd2luZG93LnRvcC5kb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnYS1mcmFtZScpLmNvbnRlbnRXaW5kb3cudGVzdCgpOworCX0KKwk8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorSSBhbSBzdWJmcmFtZS0yLmh0bWwKKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3N1c3BlbmQtdGltZXJzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3N1c3BlbmQtdGltZXJzLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTk3NzRkCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3VzcGVuZC10aW1lcnMtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTMgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA2OiBUaW1lb3V0IGlu
IHN1YmZyYW1lLTEgY3JlYXRlZAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDU6IExvYWRlZCBwYWdl
aGlkZS10aW1lb3V0LWdvLWJhY2suaHRtbCwgZ29pbmcgYmFjaworQ09OU09MRSBNRVNTQUdFOiBs
aW5lIDMxOiBSZXN0b3JlZCBwYWdlIGZyb20gcGFnZSBjYWNoZS4KK0FMRVJUOiBUaW1lb3V0IGNy
ZWF0ZWQgaW4gc3ViZnJhbWUtMS5odG1sIGZpcmVkCitUZXN0cyB0aGF0IGFsbCBKUyB0aW1lcnMg
YXJlIHN1c3BlbmRlZCBhZnRlciB0aGUgcGFnZWhpZGUgZXZlbnQgaXMgZmlyZWQsIHNvIHRoYXQg
dGltZXJzIGNyZWF0ZWQgd2l0aGluIGl0IHdpbGwgbm90IGZpcmUgd2hpbGUgdGhlIGRvY3VtZW50
IGlzIGluIHRoZSBwYWdlIGNhY2hlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3N1c3BlbmQtdGltZXJzLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9zdXNwZW5kLXRpbWVycy5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjhiN2VlNzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9zdXNwZW5kLXRpbWVycy5odG1sCkBAIC0wLDAgKzEsNTMgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5TdXNwZW5kIHRpbWVycyBvbiBuYXZp
Z2F0ZTwvdGl0bGU+Cis8c3R5bGU+CisgICAgaWZyYW1lIHsKKyAgICAgIGRpc3BsYXk6IGJsb2Nr
OworICAgICAgYm9yZGVyOiBzb2xpZCAxcHggI2NjYzsKKyAgICAgIG1hcmdpbjogMWVtOworICAg
ICAgd2lkdGg6IDIwMHB4OworICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICB9Cis8L3N0eWxlPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKworPGlmcmFtZSBzcmM9InJlc291cmNlcy9zdXNwZW5k
LXN1YmZyYW1lLTEuaHRtbCIgaWQ9ImEtZnJhbWUiPjwvaWZyYW1lPiA8aWZyYW1lIHNyYz0icmVz
b3VyY2VzL3N1c3BlbmQtc3ViZnJhbWUtMi5odG1sIiBpZD0iYi1mcmFtZSI+PC9pZnJhbWU+CisK
KzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK2Rlc2NyaXB0aW9uKCdUZXN0cyB0aGF0
IGFsbCBKUyB0aW1lcnMgYXJlIHN1c3BlbmRlZCBhZnRlciB0aGUgcGFnZWhpZGUgZXZlbnQgaXMg
ZmlyZWQsIHNvIHRoYXQgdGltZXJzIGNyZWF0ZWQgd2l0aGluIGl0IHdpbGwgbm90IGZpcmUgd2hp
bGUgdGhlIGRvY3VtZW50IGlzIGluIHRoZSBwYWdlIGNhY2hlLicpOworCitpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJl
ZmVyZW5jZSgnV2ViS2l0VXNlc1BhZ2VDYWNoZVByZWZlcmVuY2VLZXknLCAxKTsKKworCitvbnBh
Z2VzaG93ID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAgaWYgKGV2ZW50LnBlcnNpc3RlZCkgewor
ICAgICAgICBjb25zb2xlLmxvZygnUmVzdG9yZWQgcGFnZSBmcm9tIHBhZ2UgY2FjaGUuJyk7Cisg
ICAgICAgIGlmICghd2luZG93Lndhc0ZpbmlzaEpTVGVzdENhbGxlZCkgeworICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICAgICAgICAgIH0sIDIwMCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK29ubG9hZCA9IGZ1
bmN0aW9uKCkKK3sKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICBsb2NhdGlv
bi5ocmVmID0gJ3Jlc291cmNlcy9wYWdlaGlkZS10aW1lb3V0LWdvLWJhY2suaHRtbCc7CisgICAg
fSwgMTApOworfQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKK3ZhciBqc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKaW5kZXgg
OTdmNDI3My4uMDM4NGNlZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dApAQCAtMjA0LDYgKzIwNCw3IEBAIFdPTlRGSVggU0tJ
UCA6IGZhc3QvZG9tL1dpbmRvdy90aW1lci1yZXN1bWUtb24tbmF2aWdhdGlvbi1iYWNrLmh0bWwg
PSBUSU1FT1VUIEZBCiBXT05URklYIFNLSVAgOiBmYXN0L2V2ZW50cy9wYWdlaGlkZS10aW1lb3V0
Lmh0bWwgPSBUSU1FT1VUCiBXT05URklYIFNLSVAgOiBmYXN0L2V2ZW50cy9wYWdlc2hvdy1wYWdl
aGlkZS1vbi1iYWNrLWNhY2hlZC5odG1sID0gVElNRU9VVCBGQUlMCiBXT05URklYIFNLSVAgOiBm
YXN0L2V2ZW50cy9wYWdlc2hvdy1wYWdlaGlkZS1vbi1iYWNrLWNhY2hlZC13aXRoLWZyYW1lcy5o
dG1sID0gVElNRU9VVAorV09OVEZJWCBTS0lQIDogZmFzdC9ldmVudHMvc3VzcGVuZC10aW1lcnMu
aHRtbCA9IFRJTUVPVVQKIFdPTlRGSVggU0tJUCA6IG1lZGlhL3Jlc3RvcmUtZnJvbS1wYWdlLWNh
Y2hlLmh0bWwgPSBUSU1FT1VUCiBXT05URklYIFNLSVAgOiBsb2FkZXIvZ28tYmFjay10by1kaWZm
ZXJlbnQtd2luZG93LXNpemUuaHRtbCA9IFRJTUVPVVQgVEVYVAogV09OVEZJWCBTS0lQIDogZmFz
dC9sb2FkZXIvY3Jhc2gtY29weWluZy1iYWNrZm9yd2FyZGxpc3QuaHRtbCA9IFRFWFQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCBlNDg5ODFiLi5iYmRkOTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTAgQEAKKzIw
MTItMDEtMzEgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+
CisKKyAgICAgICAgRW5zdXJlIHRpbWVycyBhbmQgb3RoZXIgYWN0aXZlIERPTSBvYmplY3RzIGRv
IG5vdCBmaXJlIGluIHN1c3BlbmRlZCBkb2N1bWVudHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MzczMworCisgICAgICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQgbm93IHJlbWVtYmVycyBpdCBoYXMgc3VzcGVuZGVkIGFjdGl2ZSBET00gb2JqZWN0
cworICAgICAgICBhbmQgc3VzcGVuZHMgYWxsIG5ld2x5IGluc3RhbGxlZCBhY3RpdmUgRE9NIG9i
amVjdHMgYXMgd2VsbC4KKworICAgICAgICBBbGwgY3JlYXRlLWNhbGxzIGFjdGl2ZSBET00gb2Jq
ZWN0cyBub3cgY2FsbHMgdGhlIHBvc3QgY29uc3RydWN0b3IgbWV0aG9kCisgICAgICAgIHN1c3Bl
bmRJZk5lZWRlZCB0aGF0IHVwZGF0ZXMgdGhlIHN1c3BlbmQgc3RhdGUuIEl0IGlzIHBvc3QgY29u
c3RydWN0b3IKKyAgICAgICAgYmVjYXVzZSB0aGUgc3VzcGVuZC9yZXN1bWUgZnVuY3Rpb25zIGFy
ZSB2aXJ0dWFsIGFuZCB0aHVzIGNhbiBub3QgYmUgY2FsbGVkCisgICAgICAgIGZyb20gY29uc3Ry
dWN0b3JzLgorCisgICAgICAgIFJldmlld2VkIGJ5IE1paGFpIFBhcnBhcml0YS4KKworICAgICAg
ICBUZXN0OiBmYXN0L2V2ZW50cy9zdXNwZW5kLXRpbWVycy5odG1sCisKKyAgICAgICAgKiBNb2R1
bGVzL2ludGVudHMvSW50ZW50UmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlbnRS
ZXF1ZXN0OjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2dlbmVyaWMvQWN0aXZlRE9NQ2Fs
bGJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWN0aXZlRE9NQ2FsbGJhY2s6OkFjdGl2ZURP
TUNhbGxiYWNrKToKKyAgICAgICAgKiBkb20vQWN0aXZlRE9NT2JqZWN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFjdGl2ZURPTU9iamVjdDo6QWN0aXZlRE9NT2JqZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkFjdGl2ZURPTU9iamVjdDo6fkFjdGl2ZURPTU9iamVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpBY3RpdmVET01PYmplY3Q6OnN1c3BlbmRJZk5lZWRlZCk6CisgICAgICAgICogZG9tL0Fj
dGl2ZURPTU9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6QWN0aXZlRE9NT2JqZWN0OjpzdXNw
ZW5kSWZOZWVkZWRDYWxsZWQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRFdmVudFF1ZXVlOjpEb2N1bWVudEV2ZW50UXVl
dWUpOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6flNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
Y2FuU3VzcGVuZEFjdGl2ZURPTU9iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6c3VzcGVuZEFjdGl2ZURPTU9iamVjdHMpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cmVzdW1lQWN0aXZlRE9NT2JqZWN0cyk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpzdG9wQWN0aXZlRE9NT2JqZWN0
cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpzdXNwZW5kQWN0
aXZlRE9NT2JqZWN0SWZOZWVkZWQpOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjphY3RpdmVE
T01PYmplY3RzQXJlU3VzcGVuZGVkKToKKyAgICAgICAgKiBmaWxlYXBpL0RPTUZpbGVTeXN0ZW0u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NRmlsZVN5c3RlbTo6Y3JlYXRlKToKKyAgICAgICAg
KiBmaWxlYXBpL0ZpbGVSZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVJlYWRlcjo6
Y3JlYXRlKToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXIuaDoKKyAgICAgICAgKiBmaWxl
YXBpL0ZpbGVXcml0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVdyaXRlcjo6Y3JlYXRl
KToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVXcml0ZXIuaDoKKyAgICAgICAgKiBoaXN0b3J5L0Nh
Y2hlZEZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZyYW1lOjpDYWNoZWRGcmFt
ZSk6CisgICAgICAgICogaHRtbC9IVE1MQXVkaW9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxBdWRpb0VsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MTWFycXVl
ZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1hcnF1ZWVFbGVtZW50OjpjcmVh
dGUpOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MVmlkZW9FbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAqIG1lZGlhc3RyZWFtL1Bl
ZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uOjpjcmVh
dGUpOgorICAgICAgICAqIG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbkNlbnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25D
ZW50ZXI6OmNyZWF0ZSk6CisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50
ZXIuaDoKKyAgICAgICAgKiBwYWdlL0RPTVRpbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRP
TVRpbWVyOjppbnN0YWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRpbWVyOjpmaXJlZCk6Cisg
ICAgICAgICogcGFnZS9FdmVudFNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFNv
dXJjZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWdlL1N1c3BlbmRhYmxlVGltZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3VzcGVuZGFibGVUaW1lcjo6U3VzcGVuZGFibGVUaW1lcik6CisgICAg
ICAgICogc3RvcmFnZS9JREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRh
YmFzZTo6Y3JlYXRlKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQlJlcXVlc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6Y3JlYXRlKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQlRy
YW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpjcmVhdGUp
OgorICAgICAgICAqIHdlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb0NvbnRleHQ6OmNyZWF0ZSk6CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpjcmVhdGUpOgorICAgICAgICAqIHdl
YnNvY2tldHMvV2ViU29ja2V0Lmg6CisgICAgICAgICogd29ya2Vycy9TaGFyZWRXb3JrZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyOjpjcmVhdGUpOgorICAgICAgICAqIHdv
cmtlcnMvV29ya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcjo6Y3JlYXRlKToKKyAg
ICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0
cFJlcXVlc3Q6OmNyZWF0ZSk6CisKIDIwMTItMDItMDMgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbW92ZSBbTGVnYWN5UGFyZW50XSBmcm9tIENvZGVH
ZW5lcmF0b3JHT2JqZWN0LnBtLCBhbmQgcmVuYW1lIGl0IHRvIFtKU0xlZ2FjeVBhcmVudF0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnRSZXF1ZXN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnRSZXF1ZXN0LmNwcAppbmRl
eCAyOTZmM2RkLi40NjhiNTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
dGVudHMvSW50ZW50UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRl
bnRzL0ludGVudFJlcXVlc3QuY3BwCkBAIC00MSw3ICs0MSw5IEBAIFBhc3NSZWZQdHI8SW50ZW50
UmVxdWVzdD4gSW50ZW50UmVxdWVzdDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ
YXNzUmVmUHRyPEludGVudFJlc3VsdENhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzUmVmUHRyPEludGVu
dFJlc3VsdENhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQogewotICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgSW50ZW50UmVxdWVzdChjb250ZXh0LCBpbnRlbnQsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JD
YWxsYmFjaykpOworICAgIFJlZlB0cjxJbnRlbnRSZXF1ZXN0PiBpbnRlbnRSZXF1ZXN0KGFkb3B0
UmVmKG5ldyBJbnRlbnRSZXF1ZXN0KGNvbnRleHQsIGludGVudCwgc3VjY2Vzc0NhbGxiYWNrLCBl
cnJvckNhbGxiYWNrKSkpOworICAgIGludGVudFJlcXVlc3QtPnN1c3BlbmRJZk5lZWRlZCgpOwor
ICAgIHJldHVybiBpbnRlbnRSZXF1ZXN0LnJlbGVhc2UoKTsKIH0KIAogSW50ZW50UmVxdWVzdDo6
SW50ZW50UmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9BY3RpdmVET01DYWxsYmFjay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL0FjdGl2ZURPTUNhbGxiYWNrLmNwcApp
bmRleCBmZjAyYTQyLi5jMjA0MWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9nZW5lcmljL0FjdGl2ZURPTUNhbGxiYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9nZW5lcmljL0FjdGl2ZURPTUNhbGxiYWNrLmNwcApAQCAtMTIyLDYgKzEyMiw3IEBAIHN0
YXRpYyB2b2lkIGRlc3Ryb3lPbkNvbnRleHRUaHJlYWQoUGFzc093blB0cjxBY3RpdmVET01PYmpl
Y3RDYWxsYmFja0ltcGw+IGltcGwpCiBBY3RpdmVET01DYWxsYmFjazo6QWN0aXZlRE9NQ2FsbGJh
Y2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICA6IG1faW1wbChhZG9wdFB0
cihuZXcgQWN0aXZlRE9NT2JqZWN0Q2FsbGJhY2tJbXBsKGNvbnRleHQpKSkKIHsKKyAgICBtX2lt
cGwtPnN1c3BlbmRJZk5lZWRlZCgpOwogfQogCiBBY3RpdmVET01DYWxsYmFjazo6fkFjdGl2ZURP
TUNhbGxiYWNrKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmpl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5jcHAKaW5kZXggMzlh
NGM0Yy4uYmIyZWMyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9i
amVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5jcHAKQEAg
LTYwLDYgKzYwLDkgQEAgdm9pZCBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6Y29udGV4dERl
c3Ryb3llZCgpCiBBY3RpdmVET01PYmplY3Q6OkFjdGl2ZURPTU9iamVjdChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCB2b2lkKiB1cGNhc3RQb2ludGVyKQog
ICAgIDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkK
ICAgICAsIG1fcGVuZGluZ0FjdGl2aXR5Q291bnQoMCkKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisg
ICAgLCBtX3N1c3BlbmRJZk5lZWRlZENhbGxlZChmYWxzZSkKKyNlbmRpZgogewogICAgIGlmICgh
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KQogICAgICAgICByZXR1cm47CkBAIC03MywxMCArNzYs
MjMgQEAgQWN0aXZlRE9NT2JqZWN0Ojp+QWN0aXZlRE9NT2JqZWN0KCkKICAgICBpZiAoIW1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCisgICAgQVNTRVJUKG1fc3Vz
cGVuZElmTmVlZGVkQ2FsbGVkKTsKICAgICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
LT5pc0NvbnRleHRUaHJlYWQoKSk7CiAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT53aWxs
RGVzdHJveUFjdGl2ZURPTU9iamVjdCh0aGlzKTsKIH0KIAordm9pZCBBY3RpdmVET01PYmplY3Q6
OnN1c3BlbmRJZk5lZWRlZCgpCit7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIEFTU0VSVCgh
bV9zdXNwZW5kSWZOZWVkZWRDYWxsZWQpOworICAgIG1fc3VzcGVuZElmTmVlZGVkQ2FsbGVkID0g
dHJ1ZTsKKyNlbmRpZgorICAgIGlmICghbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnN1c3BlbmRBY3RpdmVE
T01PYmplY3RJZk5lZWRlZCh0aGlzKTsKK30KKwogYm9vbCBBY3RpdmVET01PYmplY3Q6Omhhc1Bl
bmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGVuZGluZ0FjdGl2aXR5Q291
bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmgKaW5kZXggZGI3Y2E2Ni4uZGNlNmI1
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuaApAQCAtNTEsNiArNTEsMTMgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHB1YmxpYzoKICAgICAgICAgQWN0aXZlRE9NT2JqZWN0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCB2b2lkKiB1cGNhc3RQb2ludGVyKTsKIAorICAgICAg
ICAvLyBzdXNwZW5kSWZOZWVkZWQoKSBzaG91bGQgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBhZnRl
ciBvYmplY3QgY29uc3RydWN0aW9uIHRvIHN5bmNocm9uaXplCisgICAgICAgIC8vIHRoZSBzdXNw
ZW5kIHN0YXRlIHdpdGggdGhhdCBpbiBTY3JpcHRFeGVjdXRpb25Db250ZXh0LgorICAgICAgICB2
b2lkIHN1c3BlbmRJZk5lZWRlZCgpOworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAgICAgYm9v
bCBzdXNwZW5kSWZOZWVkZWRDYWxsZWQoKSBjb25zdCB7IHJldHVybiBtX3N1c3BlbmRJZk5lZWRl
ZENhbGxlZDsgfQorI2VuZGlmCisKICAgICAgICAgdmlydHVhbCBib29sIGhhc1BlbmRpbmdBY3Rp
dml0eSgpIGNvbnN0OwogCiAgICAgICAgIC8vIGNhblN1c3BlbmQoKSBpcyB1c2VkIGJ5IHRoZSBj
YWxsZXIgaWYgdGhlcmUgaXMgYSBjaG9pY2UgYmV0d2VlbiBzdXNwZW5kaW5nIGFuZCBzdG9wcGlu
Zy4KQEAgLTg4LDYgKzk1LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgdW5zaWduZWQgbV9wZW5kaW5nQWN0aXZpdHlDb3VudDsKKyNpZiAhQVNTRVJUX0RJ
U0FCTEVECisgICAgICAgIGJvb2wgbV9zdXNwZW5kSWZOZWVkZWRDYWxsZWQ7CisjZW5kaWYKICAg
ICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dEV2ZW50UXVldWUuY3BwCmluZGV4IDMxMDIzZTIuLjViODk5YjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwCkBAIC02NCw2ICs2NCw3IEBAIERvY3VtZW50RXZl
bnRRdWV1ZTo6RG9jdW1lbnRFdmVudFF1ZXVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQpCiAgICAgOiBtX3BlbmRpbmdFdmVudFRpbWVyKGFkb3B0UHRyKG5ldyBEb2N1bWVudEV2ZW50
UXVldWVUaW1lcih0aGlzLCBjb250ZXh0KSkpCiAgICAgLCBtX2lzQ2xvc2VkKGZhbHNlKQogewor
ICAgIG1fcGVuZGluZ0V2ZW50VGltZXItPnN1c3BlbmRJZk5lZWRlZCgpOwogfQogCiBEb2N1bWVu
dEV2ZW50UXVldWU6On5Eb2N1bWVudEV2ZW50UXVldWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCmluZGV4IGVmMDZjMjkuLmIzNmIyMjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKQEAgLTkyLDYg
KzkyLDcgQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
CiAgICAgOiBtX2l0ZXJhdGluZ0FjdGl2ZURPTU9iamVjdHMoZmFsc2UpCiAgICAgLCBtX2luRGVz
dHJ1Y3RvcihmYWxzZSkKICAgICAsIG1faW5EaXNwYXRjaEVycm9yRXZlbnQoZmFsc2UpCisgICAg
LCBtX2FjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQoZmFsc2UpCiAjaWYgRU5BQkxFKFNRTF9E
QVRBQkFTRSkKICAgICAsIG1faGFzT3BlbkRhdGFiYXNlcyhmYWxzZSkKICNlbmRpZgpAQCAtMTAx
LDcgKzEwMiw2IEBAIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKQogU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6flNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKQog
ewogICAgIG1faW5EZXN0cnVjdG9yID0gdHJ1ZTsKLQogICAgIGZvciAoSGFzaFNldDxDb250ZXh0
RGVzdHJ1Y3Rpb25PYnNlcnZlcio+OjppdGVyYXRvciBpdGVyID0gbV9kZXN0cnVjdGlvbk9ic2Vy
dmVycy5iZWdpbigpOyBpdGVyICE9IG1fZGVzdHJ1Y3Rpb25PYnNlcnZlcnMuZW5kKCk7IGl0ZXIg
PSBtX2Rlc3RydWN0aW9uT2JzZXJ2ZXJzLmJlZ2luKCkpIHsKICAgICAgICAgQ29udGV4dERlc3Ry
dWN0aW9uT2JzZXJ2ZXIqIG9ic2VydmVyID0gKml0ZXI7CiAgICAgICAgIG1fZGVzdHJ1Y3Rpb25P
YnNlcnZlcnMucmVtb3ZlKG9ic2VydmVyKTsKQEAgLTIwNiwxMSArMjA2LDEyIEBAIGJvb2wgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6Y2FuU3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoKQogICAgIEhh
c2hNYXA8QWN0aXZlRE9NT2JqZWN0Kiwgdm9pZCo+OjppdGVyYXRvciBhY3RpdmVPYmplY3RzRW5k
ID0gbV9hY3RpdmVET01PYmplY3RzLmVuZCgpOwogICAgIGZvciAoSGFzaE1hcDxBY3RpdmVET01P
YmplY3QqLCB2b2lkKj46Oml0ZXJhdG9yIGl0ZXIgPSBtX2FjdGl2ZURPTU9iamVjdHMuYmVnaW4o
KTsgaXRlciAhPSBhY3RpdmVPYmplY3RzRW5kOyArK2l0ZXIpIHsKICAgICAgICAgQVNTRVJUKGl0
ZXItPmZpcnN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPT0gdGhpcyk7CisgICAgICAgIEFT
U0VSVChpdGVyLT5maXJzdC0+c3VzcGVuZElmTmVlZGVkQ2FsbGVkKCkpOwogICAgICAgICBpZiAo
IWl0ZXItPmZpcnN0LT5jYW5TdXNwZW5kKCkpIHsKICAgICAgICAgICAgIG1faXRlcmF0aW5nQWN0
aXZlRE9NT2JqZWN0cyA9IGZhbHNlOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9Ci0gICAgfSAgICAKKyAgICB9CiAgICAgbV9pdGVyYXRpbmdBY3RpdmVET01PYmplY3RzID0g
ZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yMjIsMTggKzIyMywyMyBAQCB2b2lkIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnN1c3BlbmRBY3RpdmVET01PYmplY3RzKEFjdGl2ZURPTU9i
amVjdDo6UmVhc29uRm9yUwogICAgIEhhc2hNYXA8QWN0aXZlRE9NT2JqZWN0Kiwgdm9pZCo+Ojpp
dGVyYXRvciBhY3RpdmVPYmplY3RzRW5kID0gbV9hY3RpdmVET01PYmplY3RzLmVuZCgpOwogICAg
IGZvciAoSGFzaE1hcDxBY3RpdmVET01PYmplY3QqLCB2b2lkKj46Oml0ZXJhdG9yIGl0ZXIgPSBt
X2FjdGl2ZURPTU9iamVjdHMuYmVnaW4oKTsgaXRlciAhPSBhY3RpdmVPYmplY3RzRW5kOyArK2l0
ZXIpIHsKICAgICAgICAgQVNTRVJUKGl0ZXItPmZpcnN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkgPT0gdGhpcyk7CisgICAgICAgIEFTU0VSVChpdGVyLT5maXJzdC0+c3VzcGVuZElmTmVlZGVk
Q2FsbGVkKCkpOwogICAgICAgICBpdGVyLT5maXJzdC0+c3VzcGVuZCh3aHkpOwogICAgIH0KICAg
ICBtX2l0ZXJhdGluZ0FjdGl2ZURPTU9iamVjdHMgPSBmYWxzZTsKKyAgICBtX2FjdGl2ZURPTU9i
amVjdHNBcmVTdXNwZW5kZWQgPSB0cnVlOworICAgIG1fcmVhc29uRm9yU3VzcGVuZGluZ0FjdGl2
ZURPTU9iamVjdHMgPSB3aHk7CiB9CiAKIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cmVz
dW1lQWN0aXZlRE9NT2JqZWN0cygpCiB7CisgICAgbV9hY3RpdmVET01PYmplY3RzQXJlU3VzcGVu
ZGVkID0gZmFsc2U7CiAgICAgLy8gTm8gcHJvdGVjdGlvbiBhZ2FpbnN0IG1fYWN0aXZlRE9NT2Jq
ZWN0cyBjaGFuZ2luZyBkdXJpbmcgaXRlcmF0aW9uOiByZXN1bWUoKSBzaG91bGRuJ3QgZXhlY3V0
ZSBhcmJpdHJhcnkgSlMuCiAgICAgbV9pdGVyYXRpbmdBY3RpdmVET01PYmplY3RzID0gdHJ1ZTsK
ICAgICBIYXNoTWFwPEFjdGl2ZURPTU9iamVjdCosIHZvaWQqPjo6aXRlcmF0b3IgYWN0aXZlT2Jq
ZWN0c0VuZCA9IG1fYWN0aXZlRE9NT2JqZWN0cy5lbmQoKTsKICAgICBmb3IgKEhhc2hNYXA8QWN0
aXZlRE9NT2JqZWN0Kiwgdm9pZCo+OjppdGVyYXRvciBpdGVyID0gbV9hY3RpdmVET01PYmplY3Rz
LmJlZ2luKCk7IGl0ZXIgIT0gYWN0aXZlT2JqZWN0c0VuZDsgKytpdGVyKSB7CiAgICAgICAgIEFT
U0VSVChpdGVyLT5maXJzdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpID09IHRoaXMpOworICAg
ICAgICBBU1NFUlQoaXRlci0+Zmlyc3QtPnN1c3BlbmRJZk5lZWRlZENhbGxlZCgpKTsKICAgICAg
ICAgaXRlci0+Zmlyc3QtPnJlc3VtZSgpOwogICAgIH0KICAgICBtX2l0ZXJhdGluZ0FjdGl2ZURP
TU9iamVjdHMgPSBmYWxzZTsKQEAgLTI0Niw2ICsyNTIsNyBAQCB2b2lkIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OnN0b3BBY3RpdmVET01PYmplY3RzKCkKICAgICBIYXNoTWFwPEFjdGl2ZURPTU9i
amVjdCosIHZvaWQqPjo6aXRlcmF0b3IgYWN0aXZlT2JqZWN0c0VuZCA9IG1fYWN0aXZlRE9NT2Jq
ZWN0cy5lbmQoKTsKICAgICBmb3IgKEhhc2hNYXA8QWN0aXZlRE9NT2JqZWN0Kiwgdm9pZCo+Ojpp
dGVyYXRvciBpdGVyID0gbV9hY3RpdmVET01PYmplY3RzLmJlZ2luKCk7IGl0ZXIgIT0gYWN0aXZl
T2JqZWN0c0VuZDsgKytpdGVyKSB7CiAgICAgICAgIEFTU0VSVChpdGVyLT5maXJzdC0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpID09IHRoaXMpOworICAgICAgICBBU1NFUlQoaXRlci0+Zmlyc3Qt
PnN1c3BlbmRJZk5lZWRlZENhbGxlZCgpKTsKICAgICAgICAgaXRlci0+Zmlyc3QtPnN0b3AoKTsK
ICAgICB9CiAgICAgbV9pdGVyYXRpbmdBY3RpdmVET01PYmplY3RzID0gZmFsc2U7CkBAIC0yNTQs
NiArMjYxLDE0IEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6c3RvcEFjdGl2ZURPTU9i
amVjdHMoKQogICAgIGNsb3NlTWVzc2FnZVBvcnRzKCk7CiB9CiAKK3ZvaWQgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6c3VzcGVuZEFjdGl2ZURPTU9iamVjdElmTmVlZGVkKEFjdGl2ZURPTU9iamVj
dCogb2JqZWN0KQoreworICAgIEFTU0VSVChtX2FjdGl2ZURPTU9iamVjdHMuY29udGFpbnMob2Jq
ZWN0KSk7CisgICAgLy8gRW5zdXJlIGFsbCBBY3RpdmVET01PYmplY3RzIGFyZSBzdXNwZW5kZWQg
YWxzbyBuZXdseSBjcmVhdGVkIG9uZXMuCisgICAgaWYgKG1fYWN0aXZlRE9NT2JqZWN0c0FyZVN1
c3BlbmRlZCkKKyAgICAgICAgb2JqZWN0LT5zdXNwZW5kKG1fcmVhc29uRm9yU3VzcGVuZGluZ0Fj
dGl2ZURPTU9iamVjdHMpOworfQorCiB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmRpZENy
ZWF0ZUFjdGl2ZURPTU9iamVjdChBY3RpdmVET01PYmplY3QqIG9iamVjdCwgdm9pZCogdXBjYXN0
UG9pbnRlcikKIHsKICAgICBBU1NFUlQob2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oCmluZGV4IGFlZDM0MTEuLjZmZTQxZDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtMTAzLDkgKzEwMywxNSBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlc3VtZUFjdGl2ZURPTU9iamVjdHMoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc3RvcEFjdGl2ZURPTU9iamVjdHMoKTsKIAorICAgIGJvb2wgYWN0aXZl
RE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZlRE9NT2JqZWN0
c0FyZVN1c3BlbmRlZDsgfQorCisgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGNvbnN0cnVjdG9yIGFu
ZCBkZXN0cnVjdG9ycyBvZiBBY3RpdmVET01PYmplY3QuCiAgICAgdm9pZCBkaWRDcmVhdGVBY3Rp
dmVET01PYmplY3QoQWN0aXZlRE9NT2JqZWN0Kiwgdm9pZCogdXBjYXN0UG9pbnRlcik7CiAgICAg
dm9pZCB3aWxsRGVzdHJveUFjdGl2ZURPTU9iamVjdChBY3RpdmVET01PYmplY3QqKTsKIAorICAg
IC8vIENhbGxlZCBhZnRlciB0aGUgY29uc3RydWN0aW9uIG9mIGFuIEFjdGl2ZURPTU9iamVjdCB0
byBzeW5jaHJvbml6ZSBzdXNwZW5kIHN0YXRlLgorICAgIHZvaWQgc3VzcGVuZEFjdGl2ZURPTU9i
amVjdElmTmVlZGVkKEFjdGl2ZURPTU9iamVjdCopOworCiAgICAgdHlwZWRlZiBjb25zdCBIYXNo
TWFwPEFjdGl2ZURPTU9iamVjdCosIHZvaWQqPiBBY3RpdmVET01PYmplY3RzTWFwOwogICAgIEFj
dGl2ZURPTU9iamVjdHNNYXAmIGFjdGl2ZURPTU9iamVjdHMoKSBjb25zdCB7IHJldHVybiBtX2Fj
dGl2ZURPTU9iamVjdHM7IH0KIApAQCAtMjA2LDYgKzIxMiw5IEBAIHByaXZhdGU6CiAgICAgY2xh
c3MgUGVuZGluZ0V4Y2VwdGlvbjsKICAgICBPd25QdHI8VmVjdG9yPE93blB0cjxQZW5kaW5nRXhj
ZXB0aW9uPiA+ID4gbV9wZW5kaW5nRXhjZXB0aW9uczsKIAorICAgIGJvb2wgbV9hY3RpdmVET01P
YmplY3RzQXJlU3VzcGVuZGVkOworICAgIEFjdGl2ZURPTU9iamVjdDo6UmVhc29uRm9yU3VzcGVu
c2lvbiBtX3JlYXNvbkZvclN1c3BlbmRpbmdBY3RpdmVET01PYmplY3RzOworCiAjaWYgRU5BQkxF
KFNRTF9EQVRBQkFTRSkKICAgICBSZWZQdHI8RGF0YWJhc2VUaHJlYWQ+IG1fZGF0YWJhc2VUaHJl
YWQ7CiAgICAgYm9vbCBtX2hhc09wZW5EYXRhYmFzZXM7IC8vIFRoaXMgbmV2ZXIgY2hhbmdlcyBi
YWNrIHRvIGZhbHNlLCBldmVuIGFmdGVyIHRoZSBkYXRhYmFzZSB0aHJlYWQgaXMgY2xvc2VkLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbS5jcHAKaW5kZXggYWMzODY5MC4uOTc5
OWUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCkBAIC01Niw4
ICs1Niw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4g
RE9NRmlsZVN5c3RlbTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFN0cmluZyYgbmFtZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGFzeW5jRmlsZVN5
c3RlbSkKIHsKICAgICBSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZVN5c3RlbShhZG9wdFJlZihu
ZXcgRE9NRmlsZVN5c3RlbShjb250ZXh0LCBuYW1lLCBhc3luY0ZpbGVTeXN0ZW0pKSk7CisgICAg
ZmlsZVN5c3RlbS0+c3VzcGVuZElmTmVlZGVkKCk7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRPcGVuRmlsZVN5c3RlbShmaWxlU3lzdGVtLmdldCgpKTsKLSAgICByZXR1cm4gZmls
ZVN5c3RlbTsKKyAgICByZXR1cm4gZmlsZVN5c3RlbS5yZWxlYXNlKCk7CiB9CiAKIERPTUZpbGVT
eXN0ZW06OkRPTUZpbGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gYXN5bmNGaWxlU3lz
dGVtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAKaW5kZXggMjljNTk4NC4uMDdj
NGI2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwCkBAIC00OCw2ICs0OCwx
MyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBkb3VibGUgcHJvZ3Jlc3NO
b3RpZmljYXRpb25JbnRlcnZhbE1TID0gNTA7CiAKK1Bhc3NSZWZQdHI8RmlsZVJlYWRlcj4gRmls
ZVJlYWRlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit7CisgICAg
UmVmUHRyPEZpbGVSZWFkZXI+IGZpbGVSZWFkZXIoYWRvcHRSZWYobmV3IEZpbGVSZWFkZXIoY29u
dGV4dCkpKTsKKyAgICBmaWxlUmVhZGVyLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4g
ZmlsZVJlYWRlci5yZWxlYXNlKCk7Cit9CisKIEZpbGVSZWFkZXI6OkZpbGVSZWFkZXIoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0
LCB0aGlzKQogICAgICwgbV9zdGF0ZShFTVBUWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRmlsZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVy
LmgKaW5kZXggODA0ZGQyOS4uZWNkZDQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlUmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVy
LmgKQEAgLTUxLDEwICs1MSw3IEBAIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKIGNsYXNz
IEZpbGVSZWFkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxGaWxlUmVhZGVyPiwgcHVibGljIEFjdGl2
ZURPTU9iamVjdCwgcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMgRmlsZVJlYWRlckxvYWRlckNs
aWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RmlsZVJlYWRlcj4gY3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCi0gICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEZpbGVSZWFkZXIoY29udGV4dCkpOwotICAgIH0KKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxGaWxlUmVhZGVyPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogCiAg
ICAgdmlydHVhbCB+RmlsZVJlYWRlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0ZpbGVXcml0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlV3JpdGVy
LmNwcAppbmRleCAyYjI1Y2ZhLi43Y2Q5YjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0ZpbGVXcml0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVdy
aXRlci5jcHAKQEAgLTQ1LDYgKzQ1LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGlj
IGNvbnN0IGludCBrTWF4UmVjdXJzaW9uRGVwdGggPSAzOwogCitQYXNzUmVmUHRyPEZpbGVXcml0
ZXI+IEZpbGVXcml0ZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQor
eworICAgIFJlZlB0cjxGaWxlV3JpdGVyPiBmaWxlV3JpdGVyKGFkb3B0UmVmKG5ldyBGaWxlV3Jp
dGVyKGNvbnRleHQpKSk7CisgICAgZmlsZVdyaXRlci0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAg
cmV0dXJuIGZpbGVXcml0ZXIucmVsZWFzZSgpOworfQorCiBGaWxlV3JpdGVyOjpGaWxlV3JpdGVy
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgOiBBY3RpdmVET01PYmplY3Qo
Y29udGV4dCwgdGhpcykKICAgICAsIG1fcmVhZHlTdGF0ZShJTklUKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlV3JpdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGVXcml0ZXIuaAppbmRleCAyYjU5N2ExLi45NDYxMzUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0ZpbGVXcml0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGVXcml0ZXIuaApAQCAtNDgsMTAgKzQ4LDcgQEAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDsKIAogY2xhc3MgRmlsZVdyaXRlciA6IHB1YmxpYyBGaWxlV3JpdGVyQmFzZSwgcHVibGlj
IEFjdGl2ZURPTU9iamVjdCwgcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMgQXN5bmNGaWxlV3Jp
dGVyQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxGaWxlV3JpdGVyPiBj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgRmlsZVdyaXRlcihjb250ZXh0KSk7Ci0gICAgfQorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEZpbGVXcml0ZXI+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7
CiAKICAgICBlbnVtIFJlYWR5U3RhdGUgewogICAgICAgICBJTklUID0gMCwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
aGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAKaW5kZXggNjBmYWIwNC4uOWIwZDJmZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAKQEAgLTE2OCw3ICsxNjgsNiBAQCBDYWNoZWRG
cmFtZTo6Q2FjaGVkRnJhbWUoRnJhbWUqIGZyYW1lKQogICAgIC8vIGJ1dCBhZnRlciB3ZSd2ZSBm
aXJlZCB0aGUgcGFnZWhpZGUgZXZlbnQsIGluIGNhc2UgdGhhdCBjcmVhdGVzIG1vcmUgb2JqZWN0
cy4KICAgICAvLyBTdXNwZW5kaW5nIG11c3QgYWxzbyBoYXBwZW4gYWZ0ZXIgd2UndmUgcmVjdXJz
ZWQgb3ZlciBjaGlsZCBmcmFtZXMsIGluIGNhc2UKICAgICAvLyB0aG9zZSBjcmVhdGUgbW9yZSBv
YmplY3RzLgotICAgIC8vIEZJWE1FOiBJdCdzIHN0aWxsIHBvc3NpYmxlIHRvIGhhdmUgb2JqZWN0
cyBjcmVhdGVkIGFmdGVyIHN1c3BlbmRpbmcgaW4gc29tZSBjYXNlcywgc2VlIGh0dHA6Ly93ZWJr
aXQub3JnL2IvNTM3MzMgZm9yIG1vcmUgZGV0YWlscy4KICAgICBtX2RvY3VtZW50LT5kb2N1bWVu
dFdpbGxTdXNwZW5kRm9yUGFnZUNhY2hlKCk7CiAgICAgbV9kb2N1bWVudC0+c3VzcGVuZFNjcmlw
dGVkQW5pbWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOwogICAgIG1fZG9jdW1lbnQtPnN1c3Bl
bmRBY3RpdmVET01PYmplY3RzKEFjdGl2ZURPTU9iamVjdDo6RG9jdW1lbnRXaWxsQmVjb21lSW5h
Y3RpdmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXVkaW9FbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5jcHAKaW5kZXggZTNk
Y2Y0Ny4uZGMxMGIzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXVkaW9F
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuY3Bw
CkBAIC00Myw3ICs0Myw5IEBAIEhUTUxBdWRpb0VsZW1lbnQ6OkhUTUxBdWRpb0VsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtCiAKIFBhc3NSZWZQdHI8
SFRNTEF1ZGlvRWxlbWVudD4gSFRNTEF1ZGlvRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBjcmVhdGVkQnlQYXJzZXIp
CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MQXVkaW9FbGVtZW50KHRhZ05hbWUsIGRv
Y3VtZW50LCBjcmVhdGVkQnlQYXJzZXIpKTsKKyAgICBSZWZQdHI8SFRNTEF1ZGlvRWxlbWVudD4g
YXVkaW9FbGVtZW50KGFkb3B0UmVmKG5ldyBIVE1MQXVkaW9FbGVtZW50KHRhZ05hbWUsIGRvY3Vt
ZW50LCBjcmVhdGVkQnlQYXJzZXIpKSk7CisgICAgYXVkaW9FbGVtZW50LT5zdXNwZW5kSWZOZWVk
ZWQoKTsKKyAgICByZXR1cm4gYXVkaW9FbGVtZW50LnJlbGVhc2UoKTsKIH0KIAogUGFzc1JlZlB0
cjxIVE1MQXVkaW9FbGVtZW50PiBIVE1MQXVkaW9FbGVtZW50OjpjcmVhdGVGb3JKU0NvbnN0cnVj
dG9yKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBzcmMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5jcHAKaW5kZXggMDUzZmZhOC4uMmZlMjI0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNwcApAQCAtNDgsNyArNDgs
OSBAQCBpbmxpbmUgSFRNTE1hcnF1ZWVFbGVtZW50OjpIVE1MTWFycXVlZUVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdQogCiBQYXNzUmVmUHRyPEhUTUxNYXJxdWVlRWxl
bWVudD4gSFRNTE1hcnF1ZWVFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRN
TE1hcnF1ZWVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CisgICAgUmVmUHRyPEhUTUxNYXJx
dWVlRWxlbWVudD4gbWFycXVlZUVsZW1lbnQoYWRvcHRSZWYobmV3IEhUTUxNYXJxdWVlRWxlbWVu
dCh0YWdOYW1lLCBkb2N1bWVudCkpKTsKKyAgICBtYXJxdWVlRWxlbWVudC0+c3VzcGVuZElmTmVl
ZGVkKCk7CisgICAgcmV0dXJuIG1hcnF1ZWVFbGVtZW50LnJlbGVhc2UoKTsKIH0KIAogYm9vbCBI
VE1MTWFycXVlZUVsZW1lbnQ6Om1hcFRvRW50cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5h
bWUsIE1hcHBlZEF0dHJpYnV0ZUVudHJ5JiByZXN1bHQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVmlkZW9FbGVtZW50LmNwcAppbmRleCBmZWQyZmE0Li45MWFjYzQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKQEAgLTU0LDcgKzU0LDkgQEAgaW5saW5l
IEhUTUxWaWRlb0VsZW1lbnQ6OkhUTUxWaWRlb0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQKIAogUGFzc1JlZlB0cjxIVE1MVmlkZW9FbGVtZW50PiBIVE1MVmlk
ZW9FbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQq
IGRvY3VtZW50LCBib29sIGNyZWF0ZWRCeVBhcnNlcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEhUTUxWaWRlb0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGNyZWF0ZWRCeVBhcnNlcikp
OworICAgIFJlZlB0cjxIVE1MVmlkZW9FbGVtZW50PiB2aWRlb0VsZW1lbnQoYWRvcHRSZWYobmV3
IEhUTUxWaWRlb0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGNyZWF0ZWRCeVBhcnNlcikpKTsK
KyAgICB2aWRlb0VsZW1lbnQtPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiB2aWRlb0Vs
ZW1lbnQucmVsZWFzZSgpOwogfQogCiBib29sIEhUTUxWaWRlb0VsZW1lbnQ6OnJlbmRlcmVySXNO
ZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQpIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24uY3BwCmluZGV4IGJiNDkzZDcuLjdlNWZj
OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbi5jcHAK
QEAgLTQxLDYgKzQxLDcgQEAgUGFzc1JlZlB0cjxQZWVyQ29ubmVjdGlvbj4gUGVlckNvbm5lY3Rp
b246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXgKICAgICBSZWZQdHI8UGVl
ckNvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBhZG9wdFJlZihuZXcgUGVlckNvbm5lY3Rpb24oY29u
dGV4dCwgc2VydmVyQ29uZmlndXJhdGlvbiwgc2lnbmFsaW5nQ2FsbGJhY2spKTsKICAgICBjb25u
ZWN0aW9uLT5zZXRQZW5kaW5nQWN0aXZpdHkoY29ubmVjdGlvbi5nZXQoKSk7CiAgICAgY29ubmVj
dGlvbi0+c2NoZWR1bGVJbml0aWFsTmVnb3RpYXRpb24oKTsKKyAgICBjb25uZWN0aW9uLT5zdXNw
ZW5kSWZOZWVkZWQoKTsKIAogICAgIHJldHVybiBjb25uZWN0aW9uLnJlbGVhc2UoKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAppbmRleCBkNzk5
MWYyLi43NDk2NGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb24uY3BwCkBAIC0xMDIsMTIgKzEwMiwxNiBAQCBOb3RpZmljYXRpb246On5Ob3RpZmljYXRp
b24oKQogCiBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4gTm90aWZpY2F0aW9uOjpjcmVhdGUoY29u
c3QgS1VSTCYgdXJsLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25D
b2RlJiBlYywgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IHByb3ZpZGVyKSAKIHsgCi0g
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBOb3RpZmljYXRpb24odXJsLCBjb250ZXh0LCBlYywgcHJv
dmlkZXIpKTsKKyAgICBSZWZQdHI8Tm90aWZpY2F0aW9uPiBub3RpZmljYXRpb24oYWRvcHRSZWYo
bmV3IE5vdGlmaWNhdGlvbih1cmwsIGNvbnRleHQsIGVjLCBwcm92aWRlcikpKTsKKyAgICBub3Rp
ZmljYXRpb24tPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiBub3RpZmljYXRpb24ucmVs
ZWFzZSgpOwogfQogCiBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4gTm90aWZpY2F0aW9uOjpjcmVh
dGUoY29uc3QgTm90aWZpY2F0aW9uQ29udGVudHMmIGNvbnRlbnRzLCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYywgUGFzc1JlZlB0cjxOb3RpZmljYXRp
b25DZW50ZXI+IHByb3ZpZGVyKSAKIHsgCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBOb3RpZmlj
YXRpb24oY29udGVudHMsIGNvbnRleHQsIGVjLCBwcm92aWRlcikpOworICAgIFJlZlB0cjxOb3Rp
ZmljYXRpb24+IG5vdGlmaWNhdGlvbihhZG9wdFJlZihuZXcgTm90aWZpY2F0aW9uKGNvbnRlbnRz
LCBjb250ZXh0LCBlYywgcHJvdmlkZXIpKSk7CisgICAgbm90aWZpY2F0aW9uLT5zdXNwZW5kSWZO
ZWVkZWQoKTsKKyAgICByZXR1cm4gbm90aWZpY2F0aW9uLnJlbGVhc2UoKTsKIH0KIAogY29uc3Qg
QXRvbWljU3RyaW5nJiBOb3RpZmljYXRpb246OmludGVyZmFjZU5hbWUoKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuY3BwCmlu
ZGV4IDM3ZWQ1NDcuLjcxMTQ2YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5jcHAKQEAgLTQxLDYgKzQxLDEzIEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IE5vdGlmaWNh
dGlvbkNlbnRlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIE5vdGlm
aWNhdGlvblByZXNlbnRlciogcHJlc2VudGVyKQoreworICAgIFJlZlB0cjxOb3RpZmljYXRpb25D
ZW50ZXI+IG5vdGlmaWNhdGlvbkNlbnRlcihhZG9wdFJlZihuZXcgTm90aWZpY2F0aW9uQ2VudGVy
KGNvbnRleHQsIHByZXNlbnRlcikpKTsKKyAgICBub3RpZmljYXRpb25DZW50ZXItPnN1c3BlbmRJ
Zk5lZWRlZCgpOworICAgIHJldHVybiBub3RpZmljYXRpb25DZW50ZXIucmVsZWFzZSgpOworfQor
CiBOb3RpZmljYXRpb25DZW50ZXI6Ok5vdGlmaWNhdGlvbkNlbnRlcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBOb3RpZmljYXRpb25QcmVzZW50ZXIqIHByZXNlbnRlcikKICAgICA6
IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQogICAgICwgbV9ub3RpZmljYXRpb25QcmVz
ZW50ZXIocHJlc2VudGVyKSB7fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uQ2VudGVyLmgKaW5kZXggMjNiMzFlMC4uNDAyY2NiYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5oCkBAIC01MCw3
ICs1MCw3IEBAIGNsYXNzIFZvaWRDYWxsYmFjazsKIAogY2xhc3MgTm90aWZpY2F0aW9uQ2VudGVy
IDogcHVibGljIFJlZkNvdW50ZWQ8Tm90aWZpY2F0aW9uQ2VudGVyPiwgcHVibGljIEFjdGl2ZURP
TU9iamVjdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2Vu
dGVyPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgTm90aWZpY2F0aW9u
UHJlc2VudGVyKiBwcmVzZW50ZXIpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBOb3RpZmljYXRpb25D
ZW50ZXIoY29udGV4dCwgcHJlc2VudGVyKSk7IH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxOb3Rp
ZmljYXRpb25DZW50ZXI+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTm90aWZpY2F0
aW9uUHJlc2VudGVyKik7CiAKICAgICBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4gY3JlYXRlSFRN
TE5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIFVSSSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01UaW1lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNwcAppbmRleCBmOWViMDFjLi4wOGY5ZjMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVRpbWVyLmNwcApAQCAtOTYsNiArOTYsNyBAQCBpbnQgRE9NVGltZXI6Omluc3Rh
bGwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc093blB0cjxTY2hlZHVsZWRB
Y3RpbwogICAgIC8vIG9yIGlmIGl0IGlzIGEgb25lLXRpbWUgdGltZXIgYW5kIGl0IGhhcyBmaXJl
ZCAoRE9NVGltZXI6OmZpcmVkKS4KICAgICBET01UaW1lciogdGltZXIgPSBuZXcgRE9NVGltZXIo
Y29udGV4dCwgYWN0aW9uLCB0aW1lb3V0LCBzaW5nbGVTaG90KTsKIAorICAgIHRpbWVyLT5zdXNw
ZW5kSWZOZWVkZWQoKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEluc3RhbGxU
aW1lcihjb250ZXh0LCB0aW1lci0+bV90aW1lb3V0SWQsIHRpbWVvdXQsIHNpbmdsZVNob3QpOwog
CiAgICAgcmV0dXJuIHRpbWVyLT5tX3RpbWVvdXRJZDsKQEAgLTExOCw3ICsxMTksNyBAQCB2b2lk
IERPTVRpbWVyOjpmaXJlZCgpCiB7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICB0aW1lck5lc3RpbmdMZXZlbCA9IG1f
bmVzdGluZ0xldmVsOwotICAgIAorICAgIEFTU0VSVCghY29udGV4dC0+YWN0aXZlRE9NT2JqZWN0
c0FyZVN1c3BlbmRlZCgpKTsKICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNh
dG9yKG1fc2hvdWxkRm9yd2FyZFVzZXJHZXN0dXJlID8gRGVmaW5pdGVseVByb2Nlc3NpbmdVc2Vy
R2VzdHVyZSA6IFBvc3NpYmx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsKICAgICAKICAgICAvLyBP
bmx5IHRoZSBmaXJzdCBleGVjdXRpb24gb2YgYSBtdWx0aS1zaG90IHRpbWVyIHNob3VsZCBnZXQg
YW4gYWZmaXJtYXRpdmUgdXNlciBnZXN0dXJlIGluZGljYXRvci4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dFNvdXJjZS5jcHAKaW5kZXggZWEwNjYwMC4uNTQzZjFlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dFNvdXJjZS5jcHAKQEAgLTk4LDYgKzk4LDcgQEAgUGFzc1JlZlB0cjxFdmVudFNvdXJjZT4gRXZl
bnRTb3VyY2U6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb24KIAog
ICAgIHNvdXJjZS0+c2V0UGVuZGluZ0FjdGl2aXR5KHNvdXJjZS5nZXQoKSk7CiAgICAgc291cmNl
LT5jb25uZWN0KCk7CisgICAgc291cmNlLT5zdXNwZW5kSWZOZWVkZWQoKTsKIAogICAgIHJldHVy
biBzb3VyY2UucmVsZWFzZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
dXNwZW5kYWJsZVRpbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3VzcGVuZGFibGVUaW1l
ci5jcHAKaW5kZXggMmE0ZDJlNS4uZGQzZTg5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9TdXNwZW5kYWJsZVRpbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1c3Bl
bmRhYmxlVGltZXIuY3BwCkBAIC0zNSw4ICszNSw4IEBAIFN1c3BlbmRhYmxlVGltZXI6OlN1c3Bl
bmRhYmxlVGltZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICA6IEFjdGl2
ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQogICAgICwgbV9uZXh0RmlyZUludGVydmFsKDApCiAg
ICAgLCBtX3JlcGVhdEludGVydmFsKDApCi0jaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICwgbV9h
Y3RpdmUoZmFsc2UpCisjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICwgbV9zdXNwZW5kZWQoZmFs
c2UpCiAjZW5kaWYKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0
YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5jcHAKaW5kZXgg
YzRiNzNjZS4uMjU2NTBmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJE
YXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5jcHAK
QEAgLTUwLDcgKzUwLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNzUmVmUHRyPElEQkRh
dGFiYXNlPiBJREJEYXRhYmFzZTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBkYXRhYmFzZSkKIHsK
LSAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQkRhdGFiYXNlKGNvbnRleHQsIGRhdGFiYXNlKSk7
CisgICAgUmVmUHRyPElEQkRhdGFiYXNlPiBpZGJEYXRhYmFzZShhZG9wdFJlZihuZXcgSURCRGF0
YWJhc2UoY29udGV4dCwgZGF0YWJhc2UpKSk7CisgICAgaWRiRGF0YWJhc2UtPnN1c3BlbmRJZk5l
ZWRlZCgpOworICAgIHJldHVybiBpZGJEYXRhYmFzZS5yZWxlYXNlKCk7CiB9CiAKIElEQkRhdGFi
YXNlOjpJREJEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVm
UHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gYmFja2VuZCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9y
YWdlL0lEQlJlcXVlc3QuY3BwCmluZGV4IDk2OGZiNTAuLjliZmNkZDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9JREJSZXF1ZXN0LmNwcApAQCAtNDUsNyArNDUsOSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCUmVxdWVzdDo6Y3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIElEQlRy
YW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQlJl
cXVlc3QoY29udGV4dCwgc291cmNlLCB0cmFuc2FjdGlvbikpOworICAgIFJlZlB0cjxJREJSZXF1
ZXN0PiByZXF1ZXN0KGFkb3B0UmVmKG5ldyBJREJSZXF1ZXN0KGNvbnRleHQsIHNvdXJjZSwgdHJh
bnNhY3Rpb24pKSk7CisgICAgcmVxdWVzdC0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgcmV0dXJu
IHJlcXVlc3QucmVsZWFzZSgpOwogfQogCiBJREJSZXF1ZXN0OjpJREJSZXF1ZXN0KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIElEQlRy
YW5zYWN0aW9uKiB0cmFuc2FjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJUcmFuc2Fj
dGlvbi5jcHAKaW5kZXggMTQwZGYwNS4uOTA0ODc3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJUcmFuc2FjdGlvbi5jcHAKQEAgLTQyLDcgKzQyLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBJREJEYXRhYmFzZSogZGIpCiB7Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBJREJUcmFuc2FjdGlvbihjb250ZXh0LCBiYWNrZW5kLCBkYikpOworICAg
IFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24oYWRvcHRSZWYobmV3IElEQlRyYW5z
YWN0aW9uKGNvbnRleHQsIGJhY2tlbmQsIGRiKSkpOworICAgIHRyYW5zYWN0aW9uLT5zdXNwZW5k
SWZOZWVkZWQoKTsKKyAgICByZXR1cm4gdHJhbnNhY3Rpb24ucmVsZWFzZSgpOwogfQogCiBJREJU
cmFuc2FjdGlvbjo6SURCVHJhbnNhY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQsIElE
QkRhdGFiYXNlKiBkYikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlv
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCmlu
ZGV4IDBjMTY2NGYuLmQ3ZjczMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Db250
ZXh0LmNwcApAQCAtMTAyLDggKzEwMiwxMCBAQCBQYXNzUmVmUHRyPEF1ZGlvQ29udGV4dD4gQXVk
aW9Db250ZXh0OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAgICAgaWYgKHNfaGFyZHdhcmVDb250ZXh0Q291bnQgPj0gTWF4SGFyZHdhcmVD
b250ZXh0cykKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIAotICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgQXVkaW9Db250ZXh0KGRvY3VtZW50KSk7CisKKyAgICBSZWZQdHI8QXVkaW9Db250ZXh0
PiBhdWRpb0NvbnRleHQoYWRvcHRSZWYobmV3IEF1ZGlvQ29udGV4dChkb2N1bWVudCkpKTsKKyAg
ICBhdWRpb0NvbnRleHQtPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiBhdWRpb0NvbnRl
eHQucmVsZWFzZSgpOwogfQogCiBQYXNzUmVmUHRyPEF1ZGlvQ29udGV4dD4gQXVkaW9Db250ZXh0
OjpjcmVhdGVPZmZsaW5lQ29udGV4dChEb2N1bWVudCogZG9jdW1lbnQsIHVuc2lnbmVkIG51bWJl
ck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywgZmxvYXQgc2FtcGxlUmF0ZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dl
YlNvY2tldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKaW5k
ZXggNWUyMTNiOC4uMzAxMGVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0
cy9XZWJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0
LmNwcApAQCAtMTY0LDYgKzE2NCwxMyBAQCBXZWJTb2NrZXQ6On5XZWJTb2NrZXQoKQogICAgICAg
ICBtX2NoYW5uZWwtPmRpc2Nvbm5lY3QoKTsKIH0KIAorUGFzc1JlZlB0cjxXZWJTb2NrZXQ+IFdl
YlNvY2tldDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit7CisgICAg
UmVmUHRyPFdlYlNvY2tldD4gd2ViU29ja2V0KGFkb3B0UmVmKG5ldyBXZWJTb2NrZXQoY29udGV4
dCkpKTsKKyAgICB3ZWJTb2NrZXQtPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiB3ZWJT
b2NrZXQucmVsZWFzZSgpOworfQorCiB2b2lkIFdlYlNvY2tldDo6Y29ubmVjdChjb25zdCBTdHJp
bmcmIHVybCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgVmVjdG9yPFN0cmluZz4gcHJvdG9j
b2xzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaCBi
L1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKaW5kZXggYjg2MGI3NS4uY2Fl
NTdkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCkBAIC01Myw3ICs1Myw3
IEBAIGNsYXNzIFdlYlNvY2tldCA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlNvY2tldD4sIHB1Ymxp
YyBFdmVudFRhcmdldCwgcHVibGljIEFjdGl2CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgc2V0
SXNBdmFpbGFibGUoYm9vbCk7CiAgICAgc3RhdGljIGJvb2wgaXNBdmFpbGFibGUoKTsKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxXZWJTb2NrZXQ+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0KSB7IHJldHVybiBhZG9wdFJlZihuZXcgV2ViU29ja2V0KGNvbnRleHQpKTsgfQor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlNvY2tldD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqKTsKICAgICB2aXJ0dWFsIH5XZWJTb2NrZXQoKTsKIAogICAgIGVudW0gU3RhdGUgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwCmluZGV4IGZmMDc5MmMuLjA5NmUw
MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5jcHAKQEAgLTY0LDYgKzY0
LDcgQEAgUGFzc1JlZlB0cjxTaGFyZWRXb3JrZXI+IFNoYXJlZFdvcmtlcjo6Y3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGMKIAogICAgIFNoYXJlZFdvcmtlclJlcG9zaXRv
cnk6OmNvbm5lY3Qod29ya2VyLmdldCgpLCByZW1vdGVQb3J0LnJlbGVhc2UoKSwgc2NyaXB0VVJM
LCBuYW1lLCBlYyk7CiAKKyAgICB3b3JrZXItPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlV29ya2VyKGNvbnRleHQsIHdvcmtlci0+YXNJ
RCgpLCBzY3JpcHRVUkwuc3RyaW5nKCksIHRydWUpOwogCiAgICAgcmV0dXJuIHdvcmtlci5yZWxl
YXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAKaW5kZXggYjMyMzZhNy4uNDcxM2IwNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcApAQCAtNzMsNiArNzMsNyBAQCBQYXNzUmVmUHRy
PFdvcmtlcj4gV29ya2VyOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
Y29uc3QgU3RyaW5nJgogI2VuZGlmCiAgICAgd29ya2VyLT5tX3NjcmlwdExvYWRlci0+bG9hZEFz
eW5jaHJvbm91c2x5KGNvbnRleHQsIHNjcmlwdFVSTCwgRGVueUNyb3NzT3JpZ2luUmVxdWVzdHMs
IHdvcmtlci5nZXQoKSk7CiAKKyAgICB3b3JrZXItPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlV29ya2VyKGNvbnRleHQsIHdvcmtlci0+
YXNJRCgpLCBzY3JpcHRVUkwuc3RyaW5nKCksIGZhbHNlKTsKIAogICAgIHJldHVybiB3b3JrZXIu
cmVsZWFzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggNmJlNThh
YS4uYTBmYjE5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0xNTQs
NyArMTU0LDEwIEBAIHN0YXRpYyB2b2lkIGxvZ0NvbnNvbGVFcnJvcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG1lc3NhCiAKIFBhc3NSZWZQdHI8WE1MSHR0
cFJlcXVlc3Q+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4pCiB7Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBYTUxIdHRwUmVxdWVzdChjb250ZXh0LCBzZWN1cml0eU9y
aWdpbikpOworICAgIFJlZlB0cjxYTUxIdHRwUmVxdWVzdD4geG1sSHR0cFJlcXVlc3QoYWRvcHRS
ZWYobmV3IFhNTEh0dHBSZXF1ZXN0KGNvbnRleHQsIHNlY3VyaXR5T3JpZ2luKSkpOworICAgIHht
bEh0dHBSZXF1ZXN0LT5zdXNwZW5kSWZOZWVkZWQoKTsKKworICAgIHJldHVybiB4bWxIdHRwUmVx
dWVzdC5yZWxlYXNlKCk7CiB9CiAKIFhNTEh0dHBSZXF1ZXN0OjpYTUxIdHRwUmVxdWVzdChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBz
ZWN1cml0eU9yaWdpbikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125603</attachid>
            <date>2012-02-06 02:35:50 -0800</date>
            <delta_ts>2012-02-07 01:14:59 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>Bug53733-patch14.diff</filename>
            <type>text/plain</type>
            <size>37394</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmNWMzMWFmLi4wZDM5MDZlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDEt
MzAgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+CisKKyAg
ICAgICAgVGVzdCB0aGF0IHRpbWVycyBkbyBub3QgZmlyZSBmcm9tIHN1YmZyYW1lcyBvZiBzdXNw
ZW5kZWQgZG9jdW1lbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTM3MzMKKworICAgICAgICBSZXZpZXdlZCBieSBNaWhhaSBQYXJwYXJpdGEuCisK
KyAgICAgICAgKiBmYXN0L2V2ZW50cy9yZXNvdXJjZXMvc3VzcGVuZC1zdWJmcmFtZS0xLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3Jlc291cmNlcy9zdXNwZW5kLXN1YmZyYW1l
LTIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvc3VzcGVuZC10aW1lcnMtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9zdXNwZW5kLXRpbWVycy5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9u
cy50eHQ6CisKIDIwMTItMDItMDMgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29t
PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHByZXNlcnZlIGVsZW1lbnRzIHBhbmVsIHNlbGVj
dGlvbiB1cG9uIG5vZGUgZHJhZyduJ2Ryb3AKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL3Jlc291cmNlcy9zdXNwZW5kLXN1YmZyYW1lLTEuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL3Jlc291cmNlcy9zdXNwZW5kLXN1YmZyYW1lLTEuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMWJhOGVhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvcmVzb3VyY2VzL3N1c3BlbmQtc3ViZnJhbWUtMS5odG1sCkBAIC0w
LDAgKzEsMTYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0
PgorICAgICAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICAgICAgd2luZG93LnRvcC5jb25z
b2xlLmxvZygnVGltZW91dCBpbiBzdWJmcmFtZS0xIGNyZWF0ZWQnKTsKKyAgICAgICAgICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgYWxlcnQoJ1RpbWVvdXQgY3Jl
YXRlZCBpbiBzdWJmcmFtZS0xLmh0bWwgZmlyZWQnKTsKKyAgICAgICAgICAgIH0sIDUwKTsKKyAg
ICAgICAgfQorICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CitJIGFtIHN1YmZyYW1lLTEu
aHRtbAorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvcmVzb3VyY2VzL3N1c3BlbmQtc3ViZnJhbWUtMi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvcmVzb3VyY2VzL3N1c3BlbmQtc3ViZnJhbWUtMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjllM2IyZWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9yZXNvdXJjZXMvc3VzcGVuZC1zdWJmcmFtZS0yLmh0bWwKQEAgLTAsMCAr
MSwxMyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorCTxzY3JpcHQ+CisJb25w
YWdlaGlkZSA9IGZ1bmN0aW9uKCkgeworCSAgd2luZG93LnRvcC5kb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnYS1mcmFtZScpLmNvbnRlbnRXaW5kb3cudGVzdCgpOworCX0KKwk8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorSSBhbSBzdWJmcmFtZS0yLmh0bWwKKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3N1c3BlbmQtdGltZXJzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3N1c3BlbmQtdGltZXJzLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTk3NzRkCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3VzcGVuZC10aW1lcnMtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTMgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA2OiBUaW1lb3V0IGlu
IHN1YmZyYW1lLTEgY3JlYXRlZAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDU6IExvYWRlZCBwYWdl
aGlkZS10aW1lb3V0LWdvLWJhY2suaHRtbCwgZ29pbmcgYmFjaworQ09OU09MRSBNRVNTQUdFOiBs
aW5lIDMxOiBSZXN0b3JlZCBwYWdlIGZyb20gcGFnZSBjYWNoZS4KK0FMRVJUOiBUaW1lb3V0IGNy
ZWF0ZWQgaW4gc3ViZnJhbWUtMS5odG1sIGZpcmVkCitUZXN0cyB0aGF0IGFsbCBKUyB0aW1lcnMg
YXJlIHN1c3BlbmRlZCBhZnRlciB0aGUgcGFnZWhpZGUgZXZlbnQgaXMgZmlyZWQsIHNvIHRoYXQg
dGltZXJzIGNyZWF0ZWQgd2l0aGluIGl0IHdpbGwgbm90IGZpcmUgd2hpbGUgdGhlIGRvY3VtZW50
IGlzIGluIHRoZSBwYWdlIGNhY2hlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3N1c3BlbmQtdGltZXJzLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9zdXNwZW5kLXRpbWVycy5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjhiN2VlNzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9zdXNwZW5kLXRpbWVycy5odG1sCkBAIC0wLDAgKzEsNTMgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5TdXNwZW5kIHRpbWVycyBvbiBuYXZp
Z2F0ZTwvdGl0bGU+Cis8c3R5bGU+CisgICAgaWZyYW1lIHsKKyAgICAgIGRpc3BsYXk6IGJsb2Nr
OworICAgICAgYm9yZGVyOiBzb2xpZCAxcHggI2NjYzsKKyAgICAgIG1hcmdpbjogMWVtOworICAg
ICAgd2lkdGg6IDIwMHB4OworICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICB9Cis8L3N0eWxlPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKworPGlmcmFtZSBzcmM9InJlc291cmNlcy9zdXNwZW5k
LXN1YmZyYW1lLTEuaHRtbCIgaWQ9ImEtZnJhbWUiPjwvaWZyYW1lPiA8aWZyYW1lIHNyYz0icmVz
b3VyY2VzL3N1c3BlbmQtc3ViZnJhbWUtMi5odG1sIiBpZD0iYi1mcmFtZSI+PC9pZnJhbWU+CisK
KzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK2Rlc2NyaXB0aW9uKCdUZXN0cyB0aGF0
IGFsbCBKUyB0aW1lcnMgYXJlIHN1c3BlbmRlZCBhZnRlciB0aGUgcGFnZWhpZGUgZXZlbnQgaXMg
ZmlyZWQsIHNvIHRoYXQgdGltZXJzIGNyZWF0ZWQgd2l0aGluIGl0IHdpbGwgbm90IGZpcmUgd2hp
bGUgdGhlIGRvY3VtZW50IGlzIGluIHRoZSBwYWdlIGNhY2hlLicpOworCitpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJl
ZmVyZW5jZSgnV2ViS2l0VXNlc1BhZ2VDYWNoZVByZWZlcmVuY2VLZXknLCAxKTsKKworCitvbnBh
Z2VzaG93ID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAgaWYgKGV2ZW50LnBlcnNpc3RlZCkgewor
ICAgICAgICBjb25zb2xlLmxvZygnUmVzdG9yZWQgcGFnZSBmcm9tIHBhZ2UgY2FjaGUuJyk7Cisg
ICAgICAgIGlmICghd2luZG93Lndhc0ZpbmlzaEpTVGVzdENhbGxlZCkgeworICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICAgICAgICAgIH0sIDIwMCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK29ubG9hZCA9IGZ1
bmN0aW9uKCkKK3sKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICBsb2NhdGlv
bi5ocmVmID0gJ3Jlc291cmNlcy9wYWdlaGlkZS10aW1lb3V0LWdvLWJhY2suaHRtbCc7CisgICAg
fSwgMTApOworfQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKK3ZhciBqc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKaW5kZXgg
OTdmNDI3My4uMDM4NGNlZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dApAQCAtMjA0LDYgKzIwNCw3IEBAIFdPTlRGSVggU0tJ
UCA6IGZhc3QvZG9tL1dpbmRvdy90aW1lci1yZXN1bWUtb24tbmF2aWdhdGlvbi1iYWNrLmh0bWwg
PSBUSU1FT1VUIEZBCiBXT05URklYIFNLSVAgOiBmYXN0L2V2ZW50cy9wYWdlaGlkZS10aW1lb3V0
Lmh0bWwgPSBUSU1FT1VUCiBXT05URklYIFNLSVAgOiBmYXN0L2V2ZW50cy9wYWdlc2hvdy1wYWdl
aGlkZS1vbi1iYWNrLWNhY2hlZC5odG1sID0gVElNRU9VVCBGQUlMCiBXT05URklYIFNLSVAgOiBm
YXN0L2V2ZW50cy9wYWdlc2hvdy1wYWdlaGlkZS1vbi1iYWNrLWNhY2hlZC13aXRoLWZyYW1lcy5o
dG1sID0gVElNRU9VVAorV09OVEZJWCBTS0lQIDogZmFzdC9ldmVudHMvc3VzcGVuZC10aW1lcnMu
aHRtbCA9IFRJTUVPVVQKIFdPTlRGSVggU0tJUCA6IG1lZGlhL3Jlc3RvcmUtZnJvbS1wYWdlLWNh
Y2hlLmh0bWwgPSBUSU1FT1VUCiBXT05URklYIFNLSVAgOiBsb2FkZXIvZ28tYmFjay10by1kaWZm
ZXJlbnQtd2luZG93LXNpemUuaHRtbCA9IFRJTUVPVVQgVEVYVAogV09OVEZJWCBTS0lQIDogZmFz
dC9sb2FkZXIvY3Jhc2gtY29weWluZy1iYWNrZm9yd2FyZGxpc3QuaHRtbCA9IFRFWFQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCBlNDg5ODFiLi5iYmRkOTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTAgQEAKKzIw
MTItMDEtMzEgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+
CisKKyAgICAgICAgRW5zdXJlIHRpbWVycyBhbmQgb3RoZXIgYWN0aXZlIERPTSBvYmplY3RzIGRv
IG5vdCBmaXJlIGluIHN1c3BlbmRlZCBkb2N1bWVudHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MzczMworCisgICAgICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQgbm93IHJlbWVtYmVycyBpdCBoYXMgc3VzcGVuZGVkIGFjdGl2ZSBET00gb2JqZWN0
cworICAgICAgICBhbmQgc3VzcGVuZHMgYWxsIG5ld2x5IGluc3RhbGxlZCBhY3RpdmUgRE9NIG9i
amVjdHMgYXMgd2VsbC4KKworICAgICAgICBBbGwgY3JlYXRlLWNhbGxzIGFjdGl2ZSBET00gb2Jq
ZWN0cyBub3cgY2FsbHMgdGhlIHBvc3QgY29uc3RydWN0b3IgbWV0aG9kCisgICAgICAgIHN1c3Bl
bmRJZk5lZWRlZCB0aGF0IHVwZGF0ZXMgdGhlIHN1c3BlbmQgc3RhdGUuIEl0IGlzIHBvc3QgY29u
c3RydWN0b3IKKyAgICAgICAgYmVjYXVzZSB0aGUgc3VzcGVuZC9yZXN1bWUgZnVuY3Rpb25zIGFy
ZSB2aXJ0dWFsIGFuZCB0aHVzIGNhbiBub3QgYmUgY2FsbGVkCisgICAgICAgIGZyb20gY29uc3Ry
dWN0b3JzLgorCisgICAgICAgIFJldmlld2VkIGJ5IE1paGFpIFBhcnBhcml0YS4KKworICAgICAg
ICBUZXN0OiBmYXN0L2V2ZW50cy9zdXNwZW5kLXRpbWVycy5odG1sCisKKyAgICAgICAgKiBNb2R1
bGVzL2ludGVudHMvSW50ZW50UmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlbnRS
ZXF1ZXN0OjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2dlbmVyaWMvQWN0aXZlRE9NQ2Fs
bGJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWN0aXZlRE9NQ2FsbGJhY2s6OkFjdGl2ZURP
TUNhbGxiYWNrKToKKyAgICAgICAgKiBkb20vQWN0aXZlRE9NT2JqZWN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFjdGl2ZURPTU9iamVjdDo6QWN0aXZlRE9NT2JqZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkFjdGl2ZURPTU9iamVjdDo6fkFjdGl2ZURPTU9iamVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpBY3RpdmVET01PYmplY3Q6OnN1c3BlbmRJZk5lZWRlZCk6CisgICAgICAgICogZG9tL0Fj
dGl2ZURPTU9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6QWN0aXZlRE9NT2JqZWN0OjpzdXNw
ZW5kSWZOZWVkZWRDYWxsZWQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRFdmVudFF1ZXVlOjpEb2N1bWVudEV2ZW50UXVl
dWUpOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6flNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
Y2FuU3VzcGVuZEFjdGl2ZURPTU9iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6c3VzcGVuZEFjdGl2ZURPTU9iamVjdHMpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cmVzdW1lQWN0aXZlRE9NT2JqZWN0cyk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpzdG9wQWN0aXZlRE9NT2JqZWN0
cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpzdXNwZW5kQWN0
aXZlRE9NT2JqZWN0SWZOZWVkZWQpOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjphY3RpdmVE
T01PYmplY3RzQXJlU3VzcGVuZGVkKToKKyAgICAgICAgKiBmaWxlYXBpL0RPTUZpbGVTeXN0ZW0u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NRmlsZVN5c3RlbTo6Y3JlYXRlKToKKyAgICAgICAg
KiBmaWxlYXBpL0ZpbGVSZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVJlYWRlcjo6
Y3JlYXRlKToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXIuaDoKKyAgICAgICAgKiBmaWxl
YXBpL0ZpbGVXcml0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVdyaXRlcjo6Y3JlYXRl
KToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVXcml0ZXIuaDoKKyAgICAgICAgKiBoaXN0b3J5L0Nh
Y2hlZEZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZyYW1lOjpDYWNoZWRGcmFt
ZSk6CisgICAgICAgICogaHRtbC9IVE1MQXVkaW9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxBdWRpb0VsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MTWFycXVl
ZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1hcnF1ZWVFbGVtZW50OjpjcmVh
dGUpOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MVmlkZW9FbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAqIG1lZGlhc3RyZWFtL1Bl
ZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uOjpjcmVh
dGUpOgorICAgICAgICAqIG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbkNlbnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25D
ZW50ZXI6OmNyZWF0ZSk6CisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50
ZXIuaDoKKyAgICAgICAgKiBwYWdlL0RPTVRpbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRP
TVRpbWVyOjppbnN0YWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRpbWVyOjpmaXJlZCk6Cisg
ICAgICAgICogcGFnZS9FdmVudFNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFNv
dXJjZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWdlL1N1c3BlbmRhYmxlVGltZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3VzcGVuZGFibGVUaW1lcjo6U3VzcGVuZGFibGVUaW1lcik6CisgICAg
ICAgICogc3RvcmFnZS9JREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRh
YmFzZTo6Y3JlYXRlKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQlJlcXVlc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6Y3JlYXRlKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQlRy
YW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpjcmVhdGUp
OgorICAgICAgICAqIHdlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb0NvbnRleHQ6OmNyZWF0ZSk6CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpjcmVhdGUpOgorICAgICAgICAqIHdl
YnNvY2tldHMvV2ViU29ja2V0Lmg6CisgICAgICAgICogd29ya2Vycy9TaGFyZWRXb3JrZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyOjpjcmVhdGUpOgorICAgICAgICAqIHdv
cmtlcnMvV29ya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcjo6Y3JlYXRlKToKKyAg
ICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0
cFJlcXVlc3Q6OmNyZWF0ZSk6CisKIDIwMTItMDItMDMgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbW92ZSBbTGVnYWN5UGFyZW50XSBmcm9tIENvZGVH
ZW5lcmF0b3JHT2JqZWN0LnBtLCBhbmQgcmVuYW1lIGl0IHRvIFtKU0xlZ2FjeVBhcmVudF0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnRSZXF1ZXN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnRSZXF1ZXN0LmNwcAppbmRl
eCAyOTZmM2RkLi40NjhiNTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
dGVudHMvSW50ZW50UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRl
bnRzL0ludGVudFJlcXVlc3QuY3BwCkBAIC00MSw3ICs0MSw5IEBAIFBhc3NSZWZQdHI8SW50ZW50
UmVxdWVzdD4gSW50ZW50UmVxdWVzdDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ
YXNzUmVmUHRyPEludGVudFJlc3VsdENhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzUmVmUHRyPEludGVu
dFJlc3VsdENhbGxiYWNrPiBlcnJvckNhbGxiYWNrKQogewotICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgSW50ZW50UmVxdWVzdChjb250ZXh0LCBpbnRlbnQsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JD
YWxsYmFjaykpOworICAgIFJlZlB0cjxJbnRlbnRSZXF1ZXN0PiBpbnRlbnRSZXF1ZXN0KGFkb3B0
UmVmKG5ldyBJbnRlbnRSZXF1ZXN0KGNvbnRleHQsIGludGVudCwgc3VjY2Vzc0NhbGxiYWNrLCBl
cnJvckNhbGxiYWNrKSkpOworICAgIGludGVudFJlcXVlc3QtPnN1c3BlbmRJZk5lZWRlZCgpOwor
ICAgIHJldHVybiBpbnRlbnRSZXF1ZXN0LnJlbGVhc2UoKTsKIH0KIAogSW50ZW50UmVxdWVzdDo6
SW50ZW50UmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9BY3RpdmVET01DYWxsYmFjay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL0FjdGl2ZURPTUNhbGxiYWNrLmNwcApp
bmRleCBmZjAyYTQyLi5jMjA0MWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9nZW5lcmljL0FjdGl2ZURPTUNhbGxiYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9nZW5lcmljL0FjdGl2ZURPTUNhbGxiYWNrLmNwcApAQCAtMTIyLDYgKzEyMiw3IEBAIHN0
YXRpYyB2b2lkIGRlc3Ryb3lPbkNvbnRleHRUaHJlYWQoUGFzc093blB0cjxBY3RpdmVET01PYmpl
Y3RDYWxsYmFja0ltcGw+IGltcGwpCiBBY3RpdmVET01DYWxsYmFjazo6QWN0aXZlRE9NQ2FsbGJh
Y2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICA6IG1faW1wbChhZG9wdFB0
cihuZXcgQWN0aXZlRE9NT2JqZWN0Q2FsbGJhY2tJbXBsKGNvbnRleHQpKSkKIHsKKyAgICBtX2lt
cGwtPnN1c3BlbmRJZk5lZWRlZCgpOwogfQogCiBBY3RpdmVET01DYWxsYmFjazo6fkFjdGl2ZURP
TUNhbGxiYWNrKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmpl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5jcHAKaW5kZXggMzlh
NGM0Yy4uYmIyZWMyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9i
amVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5jcHAKQEAg
LTYwLDYgKzYwLDkgQEAgdm9pZCBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6Y29udGV4dERl
c3Ryb3llZCgpCiBBY3RpdmVET01PYmplY3Q6OkFjdGl2ZURPTU9iamVjdChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCB2b2lkKiB1cGNhc3RQb2ludGVyKQog
ICAgIDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkK
ICAgICAsIG1fcGVuZGluZ0FjdGl2aXR5Q291bnQoMCkKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisg
ICAgLCBtX3N1c3BlbmRJZk5lZWRlZENhbGxlZChmYWxzZSkKKyNlbmRpZgogewogICAgIGlmICgh
bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KQogICAgICAgICByZXR1cm47CkBAIC03MywxMCArNzYs
MjMgQEAgQWN0aXZlRE9NT2JqZWN0Ojp+QWN0aXZlRE9NT2JqZWN0KCkKICAgICBpZiAoIW1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCisgICAgQVNTRVJUKG1fc3Vz
cGVuZElmTmVlZGVkQ2FsbGVkKTsKICAgICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
LT5pc0NvbnRleHRUaHJlYWQoKSk7CiAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT53aWxs
RGVzdHJveUFjdGl2ZURPTU9iamVjdCh0aGlzKTsKIH0KIAordm9pZCBBY3RpdmVET01PYmplY3Q6
OnN1c3BlbmRJZk5lZWRlZCgpCit7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIEFTU0VSVCgh
bV9zdXNwZW5kSWZOZWVkZWRDYWxsZWQpOworICAgIG1fc3VzcGVuZElmTmVlZGVkQ2FsbGVkID0g
dHJ1ZTsKKyNlbmRpZgorICAgIGlmICghbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnN1c3BlbmRBY3RpdmVE
T01PYmplY3RJZk5lZWRlZCh0aGlzKTsKK30KKwogYm9vbCBBY3RpdmVET01PYmplY3Q6Omhhc1Bl
bmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGVuZGluZ0FjdGl2aXR5Q291
bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmgKaW5kZXggZGI3Y2E2Ni4uZGNlNmI1
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuaApAQCAtNTEsNiArNTEsMTMgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHB1YmxpYzoKICAgICAgICAgQWN0aXZlRE9NT2JqZWN0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCB2b2lkKiB1cGNhc3RQb2ludGVyKTsKIAorICAgICAg
ICAvLyBzdXNwZW5kSWZOZWVkZWQoKSBzaG91bGQgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBhZnRl
ciBvYmplY3QgY29uc3RydWN0aW9uIHRvIHN5bmNocm9uaXplCisgICAgICAgIC8vIHRoZSBzdXNw
ZW5kIHN0YXRlIHdpdGggdGhhdCBpbiBTY3JpcHRFeGVjdXRpb25Db250ZXh0LgorICAgICAgICB2
b2lkIHN1c3BlbmRJZk5lZWRlZCgpOworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAgICAgYm9v
bCBzdXNwZW5kSWZOZWVkZWRDYWxsZWQoKSBjb25zdCB7IHJldHVybiBtX3N1c3BlbmRJZk5lZWRl
ZENhbGxlZDsgfQorI2VuZGlmCisKICAgICAgICAgdmlydHVhbCBib29sIGhhc1BlbmRpbmdBY3Rp
dml0eSgpIGNvbnN0OwogCiAgICAgICAgIC8vIGNhblN1c3BlbmQoKSBpcyB1c2VkIGJ5IHRoZSBj
YWxsZXIgaWYgdGhlcmUgaXMgYSBjaG9pY2UgYmV0d2VlbiBzdXNwZW5kaW5nIGFuZCBzdG9wcGlu
Zy4KQEAgLTg4LDYgKzk1LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgdW5zaWduZWQgbV9wZW5kaW5nQWN0aXZpdHlDb3VudDsKKyNpZiAhQVNTRVJUX0RJ
U0FCTEVECisgICAgICAgIGJvb2wgbV9zdXNwZW5kSWZOZWVkZWRDYWxsZWQ7CisjZW5kaWYKICAg
ICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dEV2ZW50UXVldWUuY3BwCmluZGV4IDMxMDIzZTIuLjViODk5YjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwCkBAIC02NCw2ICs2NCw3IEBAIERvY3VtZW50RXZl
bnRRdWV1ZTo6RG9jdW1lbnRFdmVudFF1ZXVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQpCiAgICAgOiBtX3BlbmRpbmdFdmVudFRpbWVyKGFkb3B0UHRyKG5ldyBEb2N1bWVudEV2ZW50
UXVldWVUaW1lcih0aGlzLCBjb250ZXh0KSkpCiAgICAgLCBtX2lzQ2xvc2VkKGZhbHNlKQogewor
ICAgIG1fcGVuZGluZ0V2ZW50VGltZXItPnN1c3BlbmRJZk5lZWRlZCgpOwogfQogCiBEb2N1bWVu
dEV2ZW50UXVldWU6On5Eb2N1bWVudEV2ZW50UXVldWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCmluZGV4IGVmMDZjMjkuLmIzNmIyMjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKQEAgLTkyLDYg
KzkyLDcgQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
CiAgICAgOiBtX2l0ZXJhdGluZ0FjdGl2ZURPTU9iamVjdHMoZmFsc2UpCiAgICAgLCBtX2luRGVz
dHJ1Y3RvcihmYWxzZSkKICAgICAsIG1faW5EaXNwYXRjaEVycm9yRXZlbnQoZmFsc2UpCisgICAg
LCBtX2FjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQoZmFsc2UpCiAjaWYgRU5BQkxFKFNRTF9E
QVRBQkFTRSkKICAgICAsIG1faGFzT3BlbkRhdGFiYXNlcyhmYWxzZSkKICNlbmRpZgpAQCAtMTAx
LDcgKzEwMiw2IEBAIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKQogU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6flNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKQog
ewogICAgIG1faW5EZXN0cnVjdG9yID0gdHJ1ZTsKLQogICAgIGZvciAoSGFzaFNldDxDb250ZXh0
RGVzdHJ1Y3Rpb25PYnNlcnZlcio+OjppdGVyYXRvciBpdGVyID0gbV9kZXN0cnVjdGlvbk9ic2Vy
dmVycy5iZWdpbigpOyBpdGVyICE9IG1fZGVzdHJ1Y3Rpb25PYnNlcnZlcnMuZW5kKCk7IGl0ZXIg
PSBtX2Rlc3RydWN0aW9uT2JzZXJ2ZXJzLmJlZ2luKCkpIHsKICAgICAgICAgQ29udGV4dERlc3Ry
dWN0aW9uT2JzZXJ2ZXIqIG9ic2VydmVyID0gKml0ZXI7CiAgICAgICAgIG1fZGVzdHJ1Y3Rpb25P
YnNlcnZlcnMucmVtb3ZlKG9ic2VydmVyKTsKQEAgLTIwNiwxMSArMjA2LDEyIEBAIGJvb2wgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6Y2FuU3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoKQogICAgIEhh
c2hNYXA8QWN0aXZlRE9NT2JqZWN0Kiwgdm9pZCo+OjppdGVyYXRvciBhY3RpdmVPYmplY3RzRW5k
ID0gbV9hY3RpdmVET01PYmplY3RzLmVuZCgpOwogICAgIGZvciAoSGFzaE1hcDxBY3RpdmVET01P
YmplY3QqLCB2b2lkKj46Oml0ZXJhdG9yIGl0ZXIgPSBtX2FjdGl2ZURPTU9iamVjdHMuYmVnaW4o
KTsgaXRlciAhPSBhY3RpdmVPYmplY3RzRW5kOyArK2l0ZXIpIHsKICAgICAgICAgQVNTRVJUKGl0
ZXItPmZpcnN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPT0gdGhpcyk7CisgICAgICAgIEFT
U0VSVChpdGVyLT5maXJzdC0+c3VzcGVuZElmTmVlZGVkQ2FsbGVkKCkpOwogICAgICAgICBpZiAo
IWl0ZXItPmZpcnN0LT5jYW5TdXNwZW5kKCkpIHsKICAgICAgICAgICAgIG1faXRlcmF0aW5nQWN0
aXZlRE9NT2JqZWN0cyA9IGZhbHNlOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9Ci0gICAgfSAgICAKKyAgICB9CiAgICAgbV9pdGVyYXRpbmdBY3RpdmVET01PYmplY3RzID0g
ZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yMjIsMTggKzIyMywyMyBAQCB2b2lkIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnN1c3BlbmRBY3RpdmVET01PYmplY3RzKEFjdGl2ZURPTU9i
amVjdDo6UmVhc29uRm9yUwogICAgIEhhc2hNYXA8QWN0aXZlRE9NT2JqZWN0Kiwgdm9pZCo+Ojpp
dGVyYXRvciBhY3RpdmVPYmplY3RzRW5kID0gbV9hY3RpdmVET01PYmplY3RzLmVuZCgpOwogICAg
IGZvciAoSGFzaE1hcDxBY3RpdmVET01PYmplY3QqLCB2b2lkKj46Oml0ZXJhdG9yIGl0ZXIgPSBt
X2FjdGl2ZURPTU9iamVjdHMuYmVnaW4oKTsgaXRlciAhPSBhY3RpdmVPYmplY3RzRW5kOyArK2l0
ZXIpIHsKICAgICAgICAgQVNTRVJUKGl0ZXItPmZpcnN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkgPT0gdGhpcyk7CisgICAgICAgIEFTU0VSVChpdGVyLT5maXJzdC0+c3VzcGVuZElmTmVlZGVk
Q2FsbGVkKCkpOwogICAgICAgICBpdGVyLT5maXJzdC0+c3VzcGVuZCh3aHkpOwogICAgIH0KICAg
ICBtX2l0ZXJhdGluZ0FjdGl2ZURPTU9iamVjdHMgPSBmYWxzZTsKKyAgICBtX2FjdGl2ZURPTU9i
amVjdHNBcmVTdXNwZW5kZWQgPSB0cnVlOworICAgIG1fcmVhc29uRm9yU3VzcGVuZGluZ0FjdGl2
ZURPTU9iamVjdHMgPSB3aHk7CiB9CiAKIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cmVz
dW1lQWN0aXZlRE9NT2JqZWN0cygpCiB7CisgICAgbV9hY3RpdmVET01PYmplY3RzQXJlU3VzcGVu
ZGVkID0gZmFsc2U7CiAgICAgLy8gTm8gcHJvdGVjdGlvbiBhZ2FpbnN0IG1fYWN0aXZlRE9NT2Jq
ZWN0cyBjaGFuZ2luZyBkdXJpbmcgaXRlcmF0aW9uOiByZXN1bWUoKSBzaG91bGRuJ3QgZXhlY3V0
ZSBhcmJpdHJhcnkgSlMuCiAgICAgbV9pdGVyYXRpbmdBY3RpdmVET01PYmplY3RzID0gdHJ1ZTsK
ICAgICBIYXNoTWFwPEFjdGl2ZURPTU9iamVjdCosIHZvaWQqPjo6aXRlcmF0b3IgYWN0aXZlT2Jq
ZWN0c0VuZCA9IG1fYWN0aXZlRE9NT2JqZWN0cy5lbmQoKTsKICAgICBmb3IgKEhhc2hNYXA8QWN0
aXZlRE9NT2JqZWN0Kiwgdm9pZCo+OjppdGVyYXRvciBpdGVyID0gbV9hY3RpdmVET01PYmplY3Rz
LmJlZ2luKCk7IGl0ZXIgIT0gYWN0aXZlT2JqZWN0c0VuZDsgKytpdGVyKSB7CiAgICAgICAgIEFT
U0VSVChpdGVyLT5maXJzdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpID09IHRoaXMpOworICAg
ICAgICBBU1NFUlQoaXRlci0+Zmlyc3QtPnN1c3BlbmRJZk5lZWRlZENhbGxlZCgpKTsKICAgICAg
ICAgaXRlci0+Zmlyc3QtPnJlc3VtZSgpOwogICAgIH0KICAgICBtX2l0ZXJhdGluZ0FjdGl2ZURP
TU9iamVjdHMgPSBmYWxzZTsKQEAgLTI0Niw2ICsyNTIsNyBAQCB2b2lkIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OnN0b3BBY3RpdmVET01PYmplY3RzKCkKICAgICBIYXNoTWFwPEFjdGl2ZURPTU9i
amVjdCosIHZvaWQqPjo6aXRlcmF0b3IgYWN0aXZlT2JqZWN0c0VuZCA9IG1fYWN0aXZlRE9NT2Jq
ZWN0cy5lbmQoKTsKICAgICBmb3IgKEhhc2hNYXA8QWN0aXZlRE9NT2JqZWN0Kiwgdm9pZCo+Ojpp
dGVyYXRvciBpdGVyID0gbV9hY3RpdmVET01PYmplY3RzLmJlZ2luKCk7IGl0ZXIgIT0gYWN0aXZl
T2JqZWN0c0VuZDsgKytpdGVyKSB7CiAgICAgICAgIEFTU0VSVChpdGVyLT5maXJzdC0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpID09IHRoaXMpOworICAgICAgICBBU1NFUlQoaXRlci0+Zmlyc3Qt
PnN1c3BlbmRJZk5lZWRlZENhbGxlZCgpKTsKICAgICAgICAgaXRlci0+Zmlyc3QtPnN0b3AoKTsK
ICAgICB9CiAgICAgbV9pdGVyYXRpbmdBY3RpdmVET01PYmplY3RzID0gZmFsc2U7CkBAIC0yNTQs
NiArMjYxLDE0IEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6c3RvcEFjdGl2ZURPTU9i
amVjdHMoKQogICAgIGNsb3NlTWVzc2FnZVBvcnRzKCk7CiB9CiAKK3ZvaWQgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6c3VzcGVuZEFjdGl2ZURPTU9iamVjdElmTmVlZGVkKEFjdGl2ZURPTU9iamVj
dCogb2JqZWN0KQoreworICAgIEFTU0VSVChtX2FjdGl2ZURPTU9iamVjdHMuY29udGFpbnMob2Jq
ZWN0KSk7CisgICAgLy8gRW5zdXJlIGFsbCBBY3RpdmVET01PYmplY3RzIGFyZSBzdXNwZW5kZWQg
YWxzbyBuZXdseSBjcmVhdGVkIG9uZXMuCisgICAgaWYgKG1fYWN0aXZlRE9NT2JqZWN0c0FyZVN1
c3BlbmRlZCkKKyAgICAgICAgb2JqZWN0LT5zdXNwZW5kKG1fcmVhc29uRm9yU3VzcGVuZGluZ0Fj
dGl2ZURPTU9iamVjdHMpOworfQorCiB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmRpZENy
ZWF0ZUFjdGl2ZURPTU9iamVjdChBY3RpdmVET01PYmplY3QqIG9iamVjdCwgdm9pZCogdXBjYXN0
UG9pbnRlcikKIHsKICAgICBBU1NFUlQob2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oCmluZGV4IGFlZDM0MTEuLjZmZTQxZDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtMTAzLDkgKzEwMywxNSBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlc3VtZUFjdGl2ZURPTU9iamVjdHMoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc3RvcEFjdGl2ZURPTU9iamVjdHMoKTsKIAorICAgIGJvb2wgYWN0aXZl
RE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZlRE9NT2JqZWN0
c0FyZVN1c3BlbmRlZDsgfQorCisgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGNvbnN0cnVjdG9yIGFu
ZCBkZXN0cnVjdG9ycyBvZiBBY3RpdmVET01PYmplY3QuCiAgICAgdm9pZCBkaWRDcmVhdGVBY3Rp
dmVET01PYmplY3QoQWN0aXZlRE9NT2JqZWN0Kiwgdm9pZCogdXBjYXN0UG9pbnRlcik7CiAgICAg
dm9pZCB3aWxsRGVzdHJveUFjdGl2ZURPTU9iamVjdChBY3RpdmVET01PYmplY3QqKTsKIAorICAg
IC8vIENhbGxlZCBhZnRlciB0aGUgY29uc3RydWN0aW9uIG9mIGFuIEFjdGl2ZURPTU9iamVjdCB0
byBzeW5jaHJvbml6ZSBzdXNwZW5kIHN0YXRlLgorICAgIHZvaWQgc3VzcGVuZEFjdGl2ZURPTU9i
amVjdElmTmVlZGVkKEFjdGl2ZURPTU9iamVjdCopOworCiAgICAgdHlwZWRlZiBjb25zdCBIYXNo
TWFwPEFjdGl2ZURPTU9iamVjdCosIHZvaWQqPiBBY3RpdmVET01PYmplY3RzTWFwOwogICAgIEFj
dGl2ZURPTU9iamVjdHNNYXAmIGFjdGl2ZURPTU9iamVjdHMoKSBjb25zdCB7IHJldHVybiBtX2Fj
dGl2ZURPTU9iamVjdHM7IH0KIApAQCAtMjA2LDYgKzIxMiw5IEBAIHByaXZhdGU6CiAgICAgY2xh
c3MgUGVuZGluZ0V4Y2VwdGlvbjsKICAgICBPd25QdHI8VmVjdG9yPE93blB0cjxQZW5kaW5nRXhj
ZXB0aW9uPiA+ID4gbV9wZW5kaW5nRXhjZXB0aW9uczsKIAorICAgIGJvb2wgbV9hY3RpdmVET01P
YmplY3RzQXJlU3VzcGVuZGVkOworICAgIEFjdGl2ZURPTU9iamVjdDo6UmVhc29uRm9yU3VzcGVu
c2lvbiBtX3JlYXNvbkZvclN1c3BlbmRpbmdBY3RpdmVET01PYmplY3RzOworCiAjaWYgRU5BQkxF
KFNRTF9EQVRBQkFTRSkKICAgICBSZWZQdHI8RGF0YWJhc2VUaHJlYWQ+IG1fZGF0YWJhc2VUaHJl
YWQ7CiAgICAgYm9vbCBtX2hhc09wZW5EYXRhYmFzZXM7IC8vIFRoaXMgbmV2ZXIgY2hhbmdlcyBi
YWNrIHRvIGZhbHNlLCBldmVuIGFmdGVyIHRoZSBkYXRhYmFzZSB0aHJlYWQgaXMgY2xvc2VkLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbS5jcHAKaW5kZXggYWMzODY5MC4uOTc5
OWUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCkBAIC01Niw4
ICs1Niw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4g
RE9NRmlsZVN5c3RlbTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFN0cmluZyYgbmFtZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGFzeW5jRmlsZVN5
c3RlbSkKIHsKICAgICBSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZVN5c3RlbShhZG9wdFJlZihu
ZXcgRE9NRmlsZVN5c3RlbShjb250ZXh0LCBuYW1lLCBhc3luY0ZpbGVTeXN0ZW0pKSk7CisgICAg
ZmlsZVN5c3RlbS0+c3VzcGVuZElmTmVlZGVkKCk7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRPcGVuRmlsZVN5c3RlbShmaWxlU3lzdGVtLmdldCgpKTsKLSAgICByZXR1cm4gZmls
ZVN5c3RlbTsKKyAgICByZXR1cm4gZmlsZVN5c3RlbS5yZWxlYXNlKCk7CiB9CiAKIERPTUZpbGVT
eXN0ZW06OkRPTUZpbGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gYXN5bmNGaWxlU3lz
dGVtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAKaW5kZXggMjljNTk4NC4uMDdj
NGI2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwCkBAIC00OCw2ICs0OCwx
MyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBkb3VibGUgcHJvZ3Jlc3NO
b3RpZmljYXRpb25JbnRlcnZhbE1TID0gNTA7CiAKK1Bhc3NSZWZQdHI8RmlsZVJlYWRlcj4gRmls
ZVJlYWRlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit7CisgICAg
UmVmUHRyPEZpbGVSZWFkZXI+IGZpbGVSZWFkZXIoYWRvcHRSZWYobmV3IEZpbGVSZWFkZXIoY29u
dGV4dCkpKTsKKyAgICBmaWxlUmVhZGVyLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4g
ZmlsZVJlYWRlci5yZWxlYXNlKCk7Cit9CisKIEZpbGVSZWFkZXI6OkZpbGVSZWFkZXIoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0
LCB0aGlzKQogICAgICwgbV9zdGF0ZShFTVBUWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRmlsZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVy
LmgKaW5kZXggODA0ZGQyOS4uZWNkZDQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlUmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVy
LmgKQEAgLTUxLDEwICs1MSw3IEBAIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKIGNsYXNz
IEZpbGVSZWFkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxGaWxlUmVhZGVyPiwgcHVibGljIEFjdGl2
ZURPTU9iamVjdCwgcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMgRmlsZVJlYWRlckxvYWRlckNs
aWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RmlsZVJlYWRlcj4gY3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCi0gICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEZpbGVSZWFkZXIoY29udGV4dCkpOwotICAgIH0KKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxGaWxlUmVhZGVyPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogCiAg
ICAgdmlydHVhbCB+RmlsZVJlYWRlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0ZpbGVXcml0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlV3JpdGVy
LmNwcAppbmRleCAyYjI1Y2ZhLi43Y2Q5YjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0ZpbGVXcml0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVdy
aXRlci5jcHAKQEAgLTQ1LDYgKzQ1LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGlj
IGNvbnN0IGludCBrTWF4UmVjdXJzaW9uRGVwdGggPSAzOwogCitQYXNzUmVmUHRyPEZpbGVXcml0
ZXI+IEZpbGVXcml0ZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQor
eworICAgIFJlZlB0cjxGaWxlV3JpdGVyPiBmaWxlV3JpdGVyKGFkb3B0UmVmKG5ldyBGaWxlV3Jp
dGVyKGNvbnRleHQpKSk7CisgICAgZmlsZVdyaXRlci0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAg
cmV0dXJuIGZpbGVXcml0ZXIucmVsZWFzZSgpOworfQorCiBGaWxlV3JpdGVyOjpGaWxlV3JpdGVy
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgOiBBY3RpdmVET01PYmplY3Qo
Y29udGV4dCwgdGhpcykKICAgICAsIG1fcmVhZHlTdGF0ZShJTklUKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlV3JpdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGVXcml0ZXIuaAppbmRleCAyYjU5N2ExLi45NDYxMzUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0ZpbGVXcml0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGVXcml0ZXIuaApAQCAtNDgsMTAgKzQ4LDcgQEAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDsKIAogY2xhc3MgRmlsZVdyaXRlciA6IHB1YmxpYyBGaWxlV3JpdGVyQmFzZSwgcHVibGlj
IEFjdGl2ZURPTU9iamVjdCwgcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMgQXN5bmNGaWxlV3Jp
dGVyQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxGaWxlV3JpdGVyPiBj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgRmlsZVdyaXRlcihjb250ZXh0KSk7Ci0gICAgfQorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEZpbGVXcml0ZXI+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7
CiAKICAgICBlbnVtIFJlYWR5U3RhdGUgewogICAgICAgICBJTklUID0gMCwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
aGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAKaW5kZXggNjBmYWIwNC4uOWIwZDJmZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAKQEAgLTE2OCw3ICsxNjgsNiBAQCBDYWNoZWRG
cmFtZTo6Q2FjaGVkRnJhbWUoRnJhbWUqIGZyYW1lKQogICAgIC8vIGJ1dCBhZnRlciB3ZSd2ZSBm
aXJlZCB0aGUgcGFnZWhpZGUgZXZlbnQsIGluIGNhc2UgdGhhdCBjcmVhdGVzIG1vcmUgb2JqZWN0
cy4KICAgICAvLyBTdXNwZW5kaW5nIG11c3QgYWxzbyBoYXBwZW4gYWZ0ZXIgd2UndmUgcmVjdXJz
ZWQgb3ZlciBjaGlsZCBmcmFtZXMsIGluIGNhc2UKICAgICAvLyB0aG9zZSBjcmVhdGUgbW9yZSBv
YmplY3RzLgotICAgIC8vIEZJWE1FOiBJdCdzIHN0aWxsIHBvc3NpYmxlIHRvIGhhdmUgb2JqZWN0
cyBjcmVhdGVkIGFmdGVyIHN1c3BlbmRpbmcgaW4gc29tZSBjYXNlcywgc2VlIGh0dHA6Ly93ZWJr
aXQub3JnL2IvNTM3MzMgZm9yIG1vcmUgZGV0YWlscy4KICAgICBtX2RvY3VtZW50LT5kb2N1bWVu
dFdpbGxTdXNwZW5kRm9yUGFnZUNhY2hlKCk7CiAgICAgbV9kb2N1bWVudC0+c3VzcGVuZFNjcmlw
dGVkQW5pbWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOwogICAgIG1fZG9jdW1lbnQtPnN1c3Bl
bmRBY3RpdmVET01PYmplY3RzKEFjdGl2ZURPTU9iamVjdDo6RG9jdW1lbnRXaWxsQmVjb21lSW5h
Y3RpdmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXVkaW9FbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5jcHAKaW5kZXggZTNk
Y2Y0Ny4uOThkZWNjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXVkaW9F
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuY3Bw
CkBAIC00Myw3ICs0Myw5IEBAIEhUTUxBdWRpb0VsZW1lbnQ6OkhUTUxBdWRpb0VsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtCiAKIFBhc3NSZWZQdHI8
SFRNTEF1ZGlvRWxlbWVudD4gSFRNTEF1ZGlvRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBjcmVhdGVkQnlQYXJzZXIp
CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MQXVkaW9FbGVtZW50KHRhZ05hbWUsIGRv
Y3VtZW50LCBjcmVhdGVkQnlQYXJzZXIpKTsKKyAgICBSZWZQdHI8SFRNTEF1ZGlvRWxlbWVudD4g
YXVkaW9FbGVtZW50KGFkb3B0UmVmKG5ldyBIVE1MQXVkaW9FbGVtZW50KHRhZ05hbWUsIGRvY3Vt
ZW50LCBjcmVhdGVkQnlQYXJzZXIpKSk7CisgICAgYXVkaW9FbGVtZW50LT5zdXNwZW5kSWZOZWVk
ZWQoKTsKKyAgICByZXR1cm4gYXVkaW9FbGVtZW50LnJlbGVhc2UoKTsKIH0KIAogUGFzc1JlZlB0
cjxIVE1MQXVkaW9FbGVtZW50PiBIVE1MQXVkaW9FbGVtZW50OjpjcmVhdGVGb3JKU0NvbnN0cnVj
dG9yKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBzcmMpCkBAIC01NCw2ICs1Niw3
IEBAIFBhc3NSZWZQdHI8SFRNTEF1ZGlvRWxlbWVudD4gSFRNTEF1ZGlvRWxlbWVudDo6Y3JlYXRl
Rm9ySlNDb25zdHJ1Y3RvcihEb2N1bWVudCoKICAgICAgICAgYXVkaW8tPnNldFNyYyhzcmMpOwog
ICAgICAgICBhdWRpby0+c2NoZWR1bGVMb2FkKEhUTUxNZWRpYUVsZW1lbnQ6Ok1lZGlhUmVzb3Vy
Y2UpOwogICAgIH0KKyAgICBhdWRpby0+c3VzcGVuZElmTmVlZGVkKCk7CiAgICAgcmV0dXJuIGF1
ZGlvLnJlbGVhc2UoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWFycXVlZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFycXVlZUVsZW1l
bnQuY3BwCmluZGV4IDA1M2ZmYTguLjJmZTIyNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNYXJxdWVlRWxlbWVudC5jcHAKQEAgLTQ4LDcgKzQ4LDkgQEAgaW5saW5lIEhUTUxNYXJxdWVl
RWxlbWVudDo6SFRNTE1hcnF1ZWVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3UKIAogUGFzc1JlZlB0cjxIVE1MTWFycXVlZUVsZW1lbnQ+IEhUTUxNYXJxdWVlRWxlbWVu
dDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVu
dCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxNYXJxdWVlRWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCkpOworICAgIFJlZlB0cjxIVE1MTWFycXVlZUVsZW1lbnQ+IG1hcnF1ZWVFbGVt
ZW50KGFkb3B0UmVmKG5ldyBIVE1MTWFycXVlZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKSk7
CisgICAgbWFycXVlZUVsZW1lbnQtPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiBtYXJx
dWVlRWxlbWVudC5yZWxlYXNlKCk7CiB9CiAKIGJvb2wgSFRNTE1hcnF1ZWVFbGVtZW50OjptYXBU
b0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBNYXBwZWRBdHRyaWJ1dGVFbnRy
eSYgcmVzdWx0KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlk
ZW9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAK
aW5kZXggZmVkMmZhNC4uOTFhY2M0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVmlkZW9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0Vs
ZW1lbnQuY3BwCkBAIC01NCw3ICs1NCw5IEBAIGlubGluZSBIVE1MVmlkZW9FbGVtZW50OjpIVE1M
VmlkZW9FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50CiAKIFBh
c3NSZWZQdHI8SFRNTFZpZGVvRWxlbWVudD4gSFRNTFZpZGVvRWxlbWVudDo6Y3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBjcmVhdGVk
QnlQYXJzZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MVmlkZW9FbGVtZW50KHRh
Z05hbWUsIGRvY3VtZW50LCBjcmVhdGVkQnlQYXJzZXIpKTsKKyAgICBSZWZQdHI8SFRNTFZpZGVv
RWxlbWVudD4gdmlkZW9FbGVtZW50KGFkb3B0UmVmKG5ldyBIVE1MVmlkZW9FbGVtZW50KHRhZ05h
bWUsIGRvY3VtZW50LCBjcmVhdGVkQnlQYXJzZXIpKSk7CisgICAgdmlkZW9FbGVtZW50LT5zdXNw
ZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gdmlkZW9FbGVtZW50LnJlbGVhc2UoKTsKIH0KIAog
Ym9vbCBIVE1MVmlkZW9FbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJp
bmdDb250ZXh0JiBjb250ZXh0KSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21lZGlhc3Ry
ZWFtL1BlZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1BlZXJD
b25uZWN0aW9uLmNwcAppbmRleCBiYjQ5M2Q3Li43ZTVmYzlhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24uY3BwCkBAIC00MSw2ICs0MSw3IEBAIFBhc3NS
ZWZQdHI8UGVlckNvbm5lY3Rpb24+IFBlZXJDb25uZWN0aW9uOjpjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4CiAgICAgUmVmUHRyPFBlZXJDb25uZWN0aW9uPiBjb25uZWN0aW9u
ID0gYWRvcHRSZWYobmV3IFBlZXJDb25uZWN0aW9uKGNvbnRleHQsIHNlcnZlckNvbmZpZ3VyYXRp
b24sIHNpZ25hbGluZ0NhbGxiYWNrKSk7CiAgICAgY29ubmVjdGlvbi0+c2V0UGVuZGluZ0FjdGl2
aXR5KGNvbm5lY3Rpb24uZ2V0KCkpOwogICAgIGNvbm5lY3Rpb24tPnNjaGVkdWxlSW5pdGlhbE5l
Z290aWF0aW9uKCk7CisgICAgY29ubmVjdGlvbi0+c3VzcGVuZElmTmVlZGVkKCk7CiAKICAgICBy
ZXR1cm4gY29ubmVjdGlvbi5yZWxlYXNlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbi5jcHAKaW5kZXggZDc5OTFmMi4uNzQ5NjRkYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcApAQCAtMTAyLDEyICsx
MDIsMTYgQEAgTm90aWZpY2F0aW9uOjp+Tm90aWZpY2F0aW9uKCkKIAogUGFzc1JlZlB0cjxOb3Rp
ZmljYXRpb24+IE5vdGlmaWNhdGlvbjo6Y3JlYXRlKGNvbnN0IEtVUkwmIHVybCwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMsIFBhc3NSZWZQdHI8Tm90
aWZpY2F0aW9uQ2VudGVyPiBwcm92aWRlcikgCiB7IAotICAgIHJldHVybiBhZG9wdFJlZihuZXcg
Tm90aWZpY2F0aW9uKHVybCwgY29udGV4dCwgZWMsIHByb3ZpZGVyKSk7CisgICAgUmVmUHRyPE5v
dGlmaWNhdGlvbj4gbm90aWZpY2F0aW9uKGFkb3B0UmVmKG5ldyBOb3RpZmljYXRpb24odXJsLCBj
b250ZXh0LCBlYywgcHJvdmlkZXIpKSk7CisgICAgbm90aWZpY2F0aW9uLT5zdXNwZW5kSWZOZWVk
ZWQoKTsKKyAgICByZXR1cm4gbm90aWZpY2F0aW9uLnJlbGVhc2UoKTsKIH0KIAogUGFzc1JlZlB0
cjxOb3RpZmljYXRpb24+IE5vdGlmaWNhdGlvbjo6Y3JlYXRlKGNvbnN0IE5vdGlmaWNhdGlvbkNv
bnRlbnRzJiBjb250ZW50cywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0
aW9uQ29kZSYgZWMsIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBwcm92aWRlcikgCiB7
IAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgTm90aWZpY2F0aW9uKGNvbnRlbnRzLCBjb250ZXh0
LCBlYywgcHJvdmlkZXIpKTsKKyAgICBSZWZQdHI8Tm90aWZpY2F0aW9uPiBub3RpZmljYXRpb24o
YWRvcHRSZWYobmV3IE5vdGlmaWNhdGlvbihjb250ZW50cywgY29udGV4dCwgZWMsIHByb3ZpZGVy
KSkpOworICAgIG5vdGlmaWNhdGlvbi0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgcmV0dXJuIG5v
dGlmaWNhdGlvbi5yZWxlYXNlKCk7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgTm90aWZpY2F0
aW9uOjppbnRlcmZhY2VOYW1lKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL25v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmNwcAppbmRleCAzN2VkNTQ3Li43MTE0NmFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50
ZXIuY3BwCkBAIC00MSw2ICs0MSwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1Bhc3NS
ZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBOb3RpZmljYXRpb25DZW50ZXI6OmNyZWF0ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBOb3RpZmljYXRpb25QcmVzZW50ZXIqIHByZXNl
bnRlcikKK3sKKyAgICBSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBub3RpZmljYXRpb25DZW50
ZXIoYWRvcHRSZWYobmV3IE5vdGlmaWNhdGlvbkNlbnRlcihjb250ZXh0LCBwcmVzZW50ZXIpKSk7
CisgICAgbm90aWZpY2F0aW9uQ2VudGVyLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4g
bm90aWZpY2F0aW9uQ2VudGVyLnJlbGVhc2UoKTsKK30KKwogTm90aWZpY2F0aW9uQ2VudGVyOjpO
b3RpZmljYXRpb25DZW50ZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgTm90aWZp
Y2F0aW9uUHJlc2VudGVyKiBwcmVzZW50ZXIpCiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4
dCwgdGhpcykKICAgICAsIG1fbm90aWZpY2F0aW9uUHJlc2VudGVyKHByZXNlbnRlcikge30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5oCmlu
ZGV4IDIzYjMxZTAuLjQwMmNjYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaApAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBWb2lkQ2Fs
bGJhY2s7CiAKIGNsYXNzIE5vdGlmaWNhdGlvbkNlbnRlciA6IHB1YmxpYyBSZWZDb3VudGVkPE5v
dGlmaWNhdGlvbkNlbnRlcj4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogcHVibGljOgotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4gY3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIE5vdGlmaWNhdGlvblByZXNlbnRlciogcHJlc2VudGVyKSB7
IHJldHVybiBhZG9wdFJlZihuZXcgTm90aWZpY2F0aW9uQ2VudGVyKGNvbnRleHQsIHByZXNlbnRl
cikpOyB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBjcmVhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE5vdGlmaWNhdGlvblByZXNlbnRlciopOwogCiAgICAg
UGFzc1JlZlB0cjxOb3RpZmljYXRpb24+IGNyZWF0ZUhUTUxOb3RpZmljYXRpb24oY29uc3QgU3Ry
aW5nJiBVUkksIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01UaW1lci5j
cHAKaW5kZXggZjllYjAxYy4uMDhmOWYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01UaW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01UaW1lci5jcHAKQEAg
LTk2LDYgKzk2LDcgQEAgaW50IERPTVRpbWVyOjppbnN0YWxsKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIFBhc3NPd25QdHI8U2NoZWR1bGVkQWN0aW8KICAgICAvLyBvciBpZiBpdCBp
cyBhIG9uZS10aW1lIHRpbWVyIGFuZCBpdCBoYXMgZmlyZWQgKERPTVRpbWVyOjpmaXJlZCkuCiAg
ICAgRE9NVGltZXIqIHRpbWVyID0gbmV3IERPTVRpbWVyKGNvbnRleHQsIGFjdGlvbiwgdGltZW91
dCwgc2luZ2xlU2hvdCk7CiAKKyAgICB0aW1lci0+c3VzcGVuZElmTmVlZGVkKCk7CiAgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRJbnN0YWxsVGltZXIoY29udGV4dCwgdGltZXItPm1f
dGltZW91dElkLCB0aW1lb3V0LCBzaW5nbGVTaG90KTsKIAogICAgIHJldHVybiB0aW1lci0+bV90
aW1lb3V0SWQ7CkBAIC0xMTgsNyArMTE5LDcgQEAgdm9pZCBET01UaW1lcjo6ZmlyZWQoKQogewog
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCk7CiAgICAgdGltZXJOZXN0aW5nTGV2ZWwgPSBtX25lc3RpbmdMZXZlbDsKLSAgICAKKyAg
ICBBU1NFUlQoIWNvbnRleHQtPmFjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQoKSk7CiAgICAg
VXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihtX3Nob3VsZEZvcndhcmRVc2Vy
R2VzdHVyZSA/IERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUgOiBQb3NzaWJseVByb2Nl
c3NpbmdVc2VyR2VzdHVyZSk7CiAgICAgCiAgICAgLy8gT25seSB0aGUgZmlyc3QgZXhlY3V0aW9u
IG9mIGEgbXVsdGktc2hvdCB0aW1lciBzaG91bGQgZ2V0IGFuIGFmZmlybWF0aXZlIHVzZXIgZ2Vz
dHVyZSBpbmRpY2F0b3IuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291
cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCmluZGV4IGVhMDY2
MDAuLjU0M2YxZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCkBAIC05OCw2ICs5
OCw3IEBAIFBhc3NSZWZQdHI8RXZlbnRTb3VyY2U+IEV2ZW50U291cmNlOjpjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uCiAKICAgICBzb3VyY2UtPnNldFBlbmRpbmdB
Y3Rpdml0eShzb3VyY2UuZ2V0KCkpOwogICAgIHNvdXJjZS0+Y29ubmVjdCgpOworICAgIHNvdXJj
ZS0+c3VzcGVuZElmTmVlZGVkKCk7CiAKICAgICByZXR1cm4gc291cmNlLnJlbGVhc2UoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3VzcGVuZGFibGVUaW1lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1N1c3BlbmRhYmxlVGltZXIuY3BwCmluZGV4IDJhNGQyZTUuLmRk
M2U4OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3VzcGVuZGFibGVUaW1lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TdXNwZW5kYWJsZVRpbWVyLmNwcApAQCAtMzUs
OCArMzUsOCBAQCBTdXNwZW5kYWJsZVRpbWVyOjpTdXNwZW5kYWJsZVRpbWVyKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhp
cykKICAgICAsIG1fbmV4dEZpcmVJbnRlcnZhbCgwKQogICAgICwgbV9yZXBlYXRJbnRlcnZhbCgw
KQotI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAsIG1fYWN0aXZlKGZhbHNlKQorI2lmICFBU1NF
UlRfRElTQUJMRUQKICAgICAsIG1fc3VzcGVuZGVkKGZhbHNlKQogI2VuZGlmCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwCmluZGV4IGM0YjczY2UuLjI1NjUwZjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwCkBAIC01MCw3ICs1MCw5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogUGFzc1JlZlB0cjxJREJEYXRhYmFzZT4gSURCRGF0YWJhc2U6OmNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkRhdGFi
YXNlQmFja2VuZEludGVyZmFjZT4gZGF0YWJhc2UpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBJREJEYXRhYmFzZShjb250ZXh0LCBkYXRhYmFzZSkpOworICAgIFJlZlB0cjxJREJEYXRhYmFz
ZT4gaWRiRGF0YWJhc2UoYWRvcHRSZWYobmV3IElEQkRhdGFiYXNlKGNvbnRleHQsIGRhdGFiYXNl
KSkpOworICAgIGlkYkRhdGFiYXNlLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gaWRi
RGF0YWJhc2UucmVsZWFzZSgpOwogfQogCiBJREJEYXRhYmFzZTo6SURCRGF0YWJhc2UoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJ
bnRlcmZhY2U+IGJhY2tlbmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
QlJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNwcAppbmRl
eCA5NjhmYjUwLi45YmZjZGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
QlJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAK
QEAgLTQ1LDcgKzQ1LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNzUmVmUHRyPElEQlJl
cXVlc3Q+IElEQlJlcXVlc3Q6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24p
CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJSZXF1ZXN0KGNvbnRleHQsIHNvdXJjZSwg
dHJhbnNhY3Rpb24pKTsKKyAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVzdChhZG9wdFJlZihu
ZXcgSURCUmVxdWVzdChjb250ZXh0LCBzb3VyY2UsIHRyYW5zYWN0aW9uKSkpOworICAgIHJlcXVl
c3QtPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKIH0K
IAogSURCUmVxdWVzdDo6SURCUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5zYWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb24uY3BwCmluZGV4IDE0MGRmMDUu
LjkwNDg3NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb24uY3BwCkBA
IC00Miw3ICs0Miw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGFzc1JlZlB0cjxJREJUcmFu
c2FjdGlvbj4gSURCVHJhbnNhY3Rpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gYmFja2Vu
ZCwgSURCRGF0YWJhc2UqIGRiKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCVHJhbnNh
Y3Rpb24oY29udGV4dCwgYmFja2VuZCwgZGIpKTsKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+
IHRyYW5zYWN0aW9uKGFkb3B0UmVmKG5ldyBJREJUcmFuc2FjdGlvbihjb250ZXh0LCBiYWNrZW5k
LCBkYikpKTsKKyAgICB0cmFuc2FjdGlvbi0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgcmV0dXJu
IHRyYW5zYWN0aW9uLnJlbGVhc2UoKTsKIH0KIAogSURCVHJhbnNhY3Rpb246OklEQlRyYW5zYWN0
aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBJREJEYXRhYmFzZSogZGIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAppbmRleCAwYzE2NjRmLi5kN2Y3MzEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKQEAgLTEwMiw4ICsxMDIs
MTAgQEAgUGFzc1JlZlB0cjxBdWRpb0NvbnRleHQ+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlKERvY3Vt
ZW50KiBkb2N1bWVudCkKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGlmIChzX2hh
cmR3YXJlQ29udGV4dENvdW50ID49IE1heEhhcmR3YXJlQ29udGV4dHMpCiAgICAgICAgIHJldHVy
biAwOwotICAgICAgICAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF1ZGlvQ29udGV4dChkb2N1
bWVudCkpOworCisgICAgUmVmUHRyPEF1ZGlvQ29udGV4dD4gYXVkaW9Db250ZXh0KGFkb3B0UmVm
KG5ldyBBdWRpb0NvbnRleHQoZG9jdW1lbnQpKSk7CisgICAgYXVkaW9Db250ZXh0LT5zdXNwZW5k
SWZOZWVkZWQoKTsKKyAgICByZXR1cm4gYXVkaW9Db250ZXh0LnJlbGVhc2UoKTsKIH0KIAogUGFz
c1JlZlB0cjxBdWRpb0NvbnRleHQ+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlT2ZmbGluZUNvbnRleHQo
RG9jdW1lbnQqIGRvY3VtZW50LCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgbnVt
YmVyT2ZGcmFtZXMsIGZsb2F0IHNhbXBsZVJhdGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IDVlMjEzYjguLjMwMTBlYTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKQEAgLTE2NCw2ICsxNjQsMTMg
QEAgV2ViU29ja2V0Ojp+V2ViU29ja2V0KCkKICAgICAgICAgbV9jaGFubmVsLT5kaXNjb25uZWN0
KCk7CiB9CiAKK1Bhc3NSZWZQdHI8V2ViU29ja2V0PiBXZWJTb2NrZXQ6OmNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQoreworICAgIFJlZlB0cjxXZWJTb2NrZXQ+IHdlYlNv
Y2tldChhZG9wdFJlZihuZXcgV2ViU29ja2V0KGNvbnRleHQpKSk7CisgICAgd2ViU29ja2V0LT5z
dXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gd2ViU29ja2V0LnJlbGVhc2UoKTsKK30KKwog
dm9pZCBXZWJTb2NrZXQ6OmNvbm5lY3QoY29uc3QgU3RyaW5nJiB1cmwsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogewogICAgIFZlY3RvcjxTdHJpbmc+IHByb3RvY29sczsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5oCmluZGV4IGI4NjBiNzUuLmNhZTU3ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vi
c29ja2V0cy9XZWJTb2NrZXQuaApAQCAtNTMsNyArNTMsNyBAQCBjbGFzcyBXZWJTb2NrZXQgOiBw
dWJsaWMgUmVmQ291bnRlZDxXZWJTb2NrZXQ+LCBwdWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBB
Y3RpdgogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHNldElzQXZhaWxhYmxlKGJvb2wpOwogICAg
IHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKCk7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViU29j
a2V0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkgeyByZXR1cm4gYWRv
cHRSZWYobmV3IFdlYlNvY2tldChjb250ZXh0KSk7IH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxX
ZWJTb2NrZXQ+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAgICAgdmlydHVhbCB+
V2ViU29ja2V0KCk7CiAKICAgICBlbnVtIFN0YXRlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hh
cmVkV29ya2VyLmNwcAppbmRleCBmZjA3OTJjLi45ZTk0ZWU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9TaGFyZWRXb3JrZXIuY3BwCkBAIC01OCw2ICs1OCw4IEBAIFBhc3NSZWZQdHI8U2hhcmVk
V29ya2VyPiBTaGFyZWRXb3JrZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBjCiAgICAgT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4gcmVtb3RlUG9ydCA9IGNoYW5u
ZWwtPnBvcnQyKCktPmRpc2VudGFuZ2xlKGVjKTsKICAgICBBU1NFUlQocmVtb3RlUG9ydCk7CiAK
KyAgICB3b3JrZXItPnN1c3BlbmRJZk5lZWRlZCgpOworCiAgICAgS1VSTCBzY3JpcHRVUkwgPSB3
b3JrZXItPnJlc29sdmVVUkwodXJsLCBlYyk7CiAgICAgaWYgKHNjcmlwdFVSTC5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCmluZGV4IGIzMjM2
YTcuLjJmNWU0ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAKQEAgLTYwLDYgKzYwLDgg
QEAgUGFzc1JlZlB0cjxXb3JrZXI+IFdvcmtlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYKIHsKICAgICBSZWZQdHI8V29ya2VyPiB3b3JrZXIg
PSBhZG9wdFJlZihuZXcgV29ya2VyKGNvbnRleHQpKTsKIAorICAgIHdvcmtlci0+c3VzcGVuZElm
TmVlZGVkKCk7CisKICAgICBLVVJMIHNjcmlwdFVSTCA9IHdvcmtlci0+cmVzb2x2ZVVSTCh1cmws
IGVjKTsKICAgICBpZiAoc2NyaXB0VVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCA2YmU1OGFhLi5hMGZiMTkxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTE1NCw3ICsxNTQsMTAgQEAg
c3RhdGljIHZvaWQgbG9nQ29uc29sZUVycm9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IFN0cmluZyYgbWVzc2EKIAogUGFzc1JlZlB0cjxYTUxIdHRwUmVxdWVzdD4gWE1M
SHR0cFJlcXVlc3Q6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNz
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbikKIHsKLSAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFhNTEh0dHBSZXF1ZXN0KGNvbnRleHQsIHNlY3VyaXR5T3JpZ2luKSk7CisgICAg
UmVmUHRyPFhNTEh0dHBSZXF1ZXN0PiB4bWxIdHRwUmVxdWVzdChhZG9wdFJlZihuZXcgWE1MSHR0
cFJlcXVlc3QoY29udGV4dCwgc2VjdXJpdHlPcmlnaW4pKSk7CisgICAgeG1sSHR0cFJlcXVlc3Qt
PnN1c3BlbmRJZk5lZWRlZCgpOworCisgICAgcmV0dXJuIHhtbEh0dHBSZXF1ZXN0LnJlbGVhc2Uo
KTsKIH0KIAogWE1MSHR0cFJlcXVlc3Q6OlhNTEh0dHBSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2lu
KQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125781</attachid>
            <date>2012-02-07 01:14:59 -0800</date>
            <delta_ts>2012-06-13 12:01:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Bug53733-patch15.diff</filename>
            <type>text/plain</type>
            <size>39639</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlOTY1OGVmLi44OGM2Y2I3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDIt
MDcgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+CisKKyAg
ICAgICAgVGVzdCB0aGF0IHRpbWVycyBkbyBub3QgZmlyZSBmcm9tIHN1YmZyYW1lcyBvZiBzdXNw
ZW5kZWQgZG9jdW1lbnRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTM3MzMKKworICAgICAgICBSZXZpZXdlZCBieSBNaWhhaSBQYXJwYXJpdGEuCisK
KyAgICAgICAgKiBmYXN0L2V2ZW50cy9yZXNvdXJjZXMvc3VzcGVuZC1zdWJmcmFtZS0xLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3Jlc291cmNlcy9zdXNwZW5kLXN1YmZyYW1l
LTIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvc3VzcGVuZC10aW1lcnMtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9zdXNwZW5kLXRpbWVycy5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9u
cy50eHQ6CisKIDIwMTItMDItMDcgIEthdXN0dWJoIEF0cmF3YWxrYXIgIDxrYXVzdHViaEBtb3Rv
cm9sYS5jb20+CiAKICAgICAgICAgTWlncmF0ZSBjcmVhdGVPYmplY3RVUkwgJiByZXZva2VPYmpl
Y3RVUkwgdG8gc3RhdGljIChDbGFzcykgbWV0aG9kcy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL3Jlc291cmNlcy9zdXNwZW5kLXN1YmZyYW1lLTEuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL3Jlc291cmNlcy9zdXNwZW5kLXN1YmZyYW1lLTEuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMWJhOGVhCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcmVzb3VyY2VzL3N1c3BlbmQtc3ViZnJhbWUtMS5odG1s
CkBAIC0wLDAgKzEsMTYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8
c2NyaXB0PgorICAgICAgICBmdW5jdGlvbiB0ZXN0KCkgeworICAgICAgICAgICAgd2luZG93LnRv
cC5jb25zb2xlLmxvZygnVGltZW91dCBpbiBzdWJmcmFtZS0xIGNyZWF0ZWQnKTsKKyAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgYWxlcnQoJ1RpbWVv
dXQgY3JlYXRlZCBpbiBzdWJmcmFtZS0xLmh0bWwgZmlyZWQnKTsKKyAgICAgICAgICAgIH0sIDUw
KTsKKyAgICAgICAgfQorICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CitJIGFtIHN1YmZy
YW1lLTEuaHRtbAorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvcmVzb3VyY2VzL3N1c3BlbmQtc3ViZnJhbWUtMi5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvcmVzb3VyY2VzL3N1c3BlbmQtc3ViZnJhbWUtMi5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllM2IyZWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9yZXNvdXJjZXMvc3VzcGVuZC1zdWJmcmFtZS0yLmh0bWwKQEAg
LTAsMCArMSwxMyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorCTxzY3JpcHQ+
CisJb25wYWdlaGlkZSA9IGZ1bmN0aW9uKCkgeworCSAgd2luZG93LnRvcC5kb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnYS1mcmFtZScpLmNvbnRlbnRXaW5kb3cudGVzdCgpOworCX0KKwk8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorSSBhbSBzdWJmcmFtZS0yLmh0bWwKKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3N1c3BlbmQtdGltZXJzLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3N1c3BlbmQtdGltZXJzLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTk3NzRkCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc3VzcGVuZC10aW1lcnMtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA2OiBUaW1l
b3V0IGluIHN1YmZyYW1lLTEgY3JlYXRlZAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDU6IExvYWRl
ZCBwYWdlaGlkZS10aW1lb3V0LWdvLWJhY2suaHRtbCwgZ29pbmcgYmFjaworQ09OU09MRSBNRVNT
QUdFOiBsaW5lIDMxOiBSZXN0b3JlZCBwYWdlIGZyb20gcGFnZSBjYWNoZS4KK0FMRVJUOiBUaW1l
b3V0IGNyZWF0ZWQgaW4gc3ViZnJhbWUtMS5odG1sIGZpcmVkCitUZXN0cyB0aGF0IGFsbCBKUyB0
aW1lcnMgYXJlIHN1c3BlbmRlZCBhZnRlciB0aGUgcGFnZWhpZGUgZXZlbnQgaXMgZmlyZWQsIHNv
IHRoYXQgdGltZXJzIGNyZWF0ZWQgd2l0aGluIGl0IHdpbGwgbm90IGZpcmUgd2hpbGUgdGhlIGRv
Y3VtZW50IGlzIGluIHRoZSBwYWdlIGNhY2hlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3N1c3BlbmQtdGltZXJzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zdXNwZW5kLXRpbWVycy5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiN2VlNzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9zdXNwZW5kLXRpbWVycy5odG1sCkBAIC0wLDAgKzEsNTMgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5TdXNwZW5kIHRpbWVycyBv
biBuYXZpZ2F0ZTwvdGl0bGU+Cis8c3R5bGU+CisgICAgaWZyYW1lIHsKKyAgICAgIGRpc3BsYXk6
IGJsb2NrOworICAgICAgYm9yZGVyOiBzb2xpZCAxcHggI2NjYzsKKyAgICAgIG1hcmdpbjogMWVt
OworICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICB9Cis8L3N0
eWxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKworPGlmcmFtZSBzcmM9InJlc291cmNlcy9z
dXNwZW5kLXN1YmZyYW1lLTEuaHRtbCIgaWQ9ImEtZnJhbWUiPjwvaWZyYW1lPiA8aWZyYW1lIHNy
Yz0icmVzb3VyY2VzL3N1c3BlbmQtc3ViZnJhbWUtMi5odG1sIiBpZD0iYi1mcmFtZSI+PC9pZnJh
bWU+CisKKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK2Rlc2NyaXB0aW9uKCdUZXN0
cyB0aGF0IGFsbCBKUyB0aW1lcnMgYXJlIHN1c3BlbmRlZCBhZnRlciB0aGUgcGFnZWhpZGUgZXZl
bnQgaXMgZmlyZWQsIHNvIHRoYXQgdGltZXJzIGNyZWF0ZWQgd2l0aGluIGl0IHdpbGwgbm90IGZp
cmUgd2hpbGUgdGhlIGRvY3VtZW50IGlzIGluIHRoZSBwYWdlIGNhY2hlLicpOworCitpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJy
aWRlUHJlZmVyZW5jZSgnV2ViS2l0VXNlc1BhZ2VDYWNoZVByZWZlcmVuY2VLZXknLCAxKTsKKwor
CitvbnBhZ2VzaG93ID0gZnVuY3Rpb24oZXZlbnQpCit7CisgICAgaWYgKGV2ZW50LnBlcnNpc3Rl
ZCkgeworICAgICAgICBjb25zb2xlLmxvZygnUmVzdG9yZWQgcGFnZSBmcm9tIHBhZ2UgY2FjaGUu
Jyk7CisgICAgICAgIGlmICghd2luZG93Lndhc0ZpbmlzaEpTVGVzdENhbGxlZCkgeworICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKKyAgICAgICAgICAgIH0sIDIwMCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK29ubG9h
ZCA9IGZ1bmN0aW9uKCkKK3sKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICBs
b2NhdGlvbi5ocmVmID0gJ3Jlc291cmNlcy9wYWdlaGlkZS10aW1lb3V0LWdvLWJhY2suaHRtbCc7
CisgICAgfSwgMTApOworfQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKK3ZhciBq
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50
eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQK
aW5kZXggMjgxNTk5Ni4uYjBkMWEzOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dApAQCAtMjAzLDYgKzIwMyw3IEBAIFdPTlRG
SVggU0tJUCA6IGZhc3QvZG9tL1dpbmRvdy90aW1lci1yZXN1bWUtb24tbmF2aWdhdGlvbi1iYWNr
Lmh0bWwgPSBUSU1FT1VUIEZBCiBXT05URklYIFNLSVAgOiBmYXN0L2V2ZW50cy9wYWdlaGlkZS10
aW1lb3V0Lmh0bWwgPSBUSU1FT1VUCiBXT05URklYIFNLSVAgOiBmYXN0L2V2ZW50cy9wYWdlc2hv
dy1wYWdlaGlkZS1vbi1iYWNrLWNhY2hlZC5odG1sID0gVElNRU9VVCBGQUlMCiBXT05URklYIFNL
SVAgOiBmYXN0L2V2ZW50cy9wYWdlc2hvdy1wYWdlaGlkZS1vbi1iYWNrLWNhY2hlZC13aXRoLWZy
YW1lcy5odG1sID0gVElNRU9VVAorV09OVEZJWCBTS0lQIDogZmFzdC9ldmVudHMvc3VzcGVuZC10
aW1lcnMuaHRtbCA9IFRJTUVPVVQKIFdPTlRGSVggU0tJUCA6IG1lZGlhL3Jlc3RvcmUtZnJvbS1w
YWdlLWNhY2hlLmh0bWwgPSBUSU1FT1VUCiBXT05URklYIFNLSVAgOiBsb2FkZXIvZ28tYmFjay10
by1kaWZmZXJlbnQtd2luZG93LXNpemUuaHRtbCA9IFRJTUVPVVQgVEVYVAogV09OVEZJWCBTS0lQ
IDogZmFzdC9sb2FkZXIvY3Jhc2gtY29weWluZy1iYWNrZm9yd2FyZGxpc3QuaHRtbCA9IFRFWFQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1N2RkMmRmLi5hOWZmYmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTUg
QEAKKzIwMTItMDItMDcgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tp
YS5jb20+CisKKyAgICAgICAgRW5zdXJlIHRpbWVycyBhbmQgb3RoZXIgYWN0aXZlIERPTSBvYmpl
Y3RzIGRvIG5vdCBmaXJlIGluIHN1c3BlbmRlZCBkb2N1bWVudHMuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MzczMworCisgICAgICAgIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQgbm93IHJlbWVtYmVycyBpdCBoYXMgc3VzcGVuZGVkIGFjdGl2ZSBET00g
b2JqZWN0cworICAgICAgICBhbmQgc3VzcGVuZHMgYWxsIG5ld2x5IGluc3RhbGxlZCBhY3RpdmUg
RE9NIG9iamVjdHMgYXMgd2VsbC4KKworICAgICAgICBBbGwgY3JlYXRlLWNhbGxzIGFjdGl2ZSBE
T00gb2JqZWN0cyBub3cgY2FsbHMgdGhlIHBvc3QgY29uc3RydWN0b3IgbWV0aG9kCisgICAgICAg
IHN1c3BlbmRJZk5lZWRlZCB0aGF0IHVwZGF0ZXMgdGhlIHN1c3BlbmQgc3RhdGUuIEl0IGlzIHBv
c3QgY29uc3RydWN0b3IKKyAgICAgICAgYmVjYXVzZSB0aGUgc3VzcGVuZC9yZXN1bWUgZnVuY3Rp
b25zIGFyZSB2aXJ0dWFsIGFuZCB0aHVzIGNhbiBub3QgYmUgY2FsbGVkCisgICAgICAgIGZyb20g
Y29uc3RydWN0b3JzLgorCisgICAgICAgIFJldmlld2VkIGJ5IE1paGFpIFBhcnBhcml0YS4KKwor
ICAgICAgICBUZXN0OiBmYXN0L2V2ZW50cy9zdXNwZW5kLXRpbWVycy5odG1sCisKKyAgICAgICAg
KiBNb2R1bGVzL2ludGVudHMvSW50ZW50UmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnRlbnRSZXF1ZXN0OjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2dlbmVyaWMvQWN0aXZl
RE9NQ2FsbGJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWN0aXZlRE9NQ2FsbGJhY2s6OkFj
dGl2ZURPTUNhbGxiYWNrKToKKyAgICAgICAgKiBkb20vQWN0aXZlRE9NT2JqZWN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFjdGl2ZURPTU9iamVjdDo6QWN0aXZlRE9NT2JqZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjdGl2ZURPTU9iamVjdDo6fkFjdGl2ZURPTU9iamVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpBY3RpdmVET01PYmplY3Q6OnN1c3BlbmRJZk5lZWRlZCk6CisgICAgICAgICog
ZG9tL0FjdGl2ZURPTU9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6QWN0aXZlRE9NT2JqZWN0
OjpzdXNwZW5kSWZOZWVkZWRDYWxsZWQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudEV2ZW50UXVl
dWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRFdmVudFF1ZXVlOjpEb2N1bWVudEV2
ZW50UXVldWUpOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6flNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6Y2FuU3VzcGVuZEFjdGl2ZURPTU9iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6c3VzcGVuZEFjdGl2ZURPTU9iamVjdHMpOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cmVzdW1lQWN0aXZlRE9NT2JqZWN0cyk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpzdG9wQWN0aXZlRE9N
T2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpzdXNw
ZW5kQWN0aXZlRE9NT2JqZWN0SWZOZWVkZWQpOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRp
b25Db250ZXh0Lmg6CisgICAgICAgIChTY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmFjdGl2ZURPTU9iamVjdHNBcmVTdXNw
ZW5kZWQpOgorICAgICAgICAqIGZpbGVhcGkvRE9NRmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpET01GaWxlU3lzdGVtOjpjcmVhdGUpOgorICAgICAgICAqIGZpbGVhcGkvRmlsZVJl
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlUmVhZGVyOjpjcmVhdGUpOgorICAgICAg
ICAqIGZpbGVhcGkvRmlsZVJlYWRlci5oOgorICAgICAgICAqIGZpbGVhcGkvRmlsZVdyaXRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGaWxlV3JpdGVyOjpjcmVhdGUpOgorICAgICAgICAqIGZp
bGVhcGkvRmlsZVdyaXRlci5oOgorICAgICAgICAqIGhpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRnJhbWU6OkNhY2hlZEZyYW1lKToKKyAgICAgICAgKiBo
dG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF1ZGlvRWxl
bWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBdWRpb0VsZW1lbnQ6OmNyZWF0
ZUZvckpTQ29uc3RydWN0b3IpOgorICAgICAgICAqIGh0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNYXJxdWVlRWxlbWVudDo6Y3JlYXRlKToKKyAgICAg
ICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZp
ZGVvRWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBtZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKiBub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpO
b3RpZmljYXRpb246OmNyZWF0ZSk6CisgICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b25DZW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2VudGVyOjpjcmVh
dGUpOgorICAgICAgICAqIG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmg6CisgICAg
ICAgICogcGFnZS9ET01UaW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01UaW1lcjo6aW5z
dGFsbCk6CisgICAgICAgIChXZWJDb3JlOjpET01UaW1lcjo6ZmlyZWQpOgorICAgICAgICAqIHBh
Z2UvRXZlbnRTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRTb3VyY2U6OmNyZWF0
ZSk6CisgICAgICAgICogcGFnZS9TdXNwZW5kYWJsZVRpbWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlN1c3BlbmRhYmxlVGltZXI6OlN1c3BlbmRhYmxlVGltZXIpOgorICAgICAgICAqIHN0b3Jh
Z2UvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OmNyZWF0
ZSk6CisgICAgICAgICogc3RvcmFnZS9JREJSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQlJlcXVlc3Q6OmNyZWF0ZSk6CisgICAgICAgICogc3RvcmFnZS9JREJUcmFuc2FjdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6Y3JlYXRlKToKKyAgICAgICAg
KiBzdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0OjpjcmVhdGUpOgorICAgICAgICAqIHdlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmNyZWF0ZU9mZmxpbmVDb250ZXh0KToK
KyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJTb2NrZXQ6OmNyZWF0ZSk6CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXQuaDoKKyAg
ICAgICAgKiB3b3JrZXJzL1NoYXJlZFdvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRXb3JrZXI6OmNyZWF0ZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyOjpjcmVhdGUpOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVz
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlKToKKwogMjAx
Mi0wMi0wNyAgS2F1c3R1YmggQXRyYXdhbGthciAgPGthdXN0dWJoQG1vdG9yb2xhLmNvbT4KIAog
ICAgICAgICBNaWdyYXRlIGNyZWF0ZU9iamVjdFVSTCAmIHJldm9rZU9iamVjdFVSTCB0byBzdGF0
aWMgKENsYXNzKSBtZXRob2RzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bnRlbnRzL0ludGVudFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbnRlbnRz
L0ludGVudFJlcXVlc3QuY3BwCmluZGV4IDI5NmYzZGQuLjQ2OGI1MWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW50ZW50cy9JbnRlbnRSZXF1ZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ludGVudHMvSW50ZW50UmVxdWVzdC5jcHAKQEAgLTQxLDcgKzQx
LDkgQEAgUGFzc1JlZlB0cjxJbnRlbnRSZXF1ZXN0PiBJbnRlbnRSZXF1ZXN0OjpjcmVhdGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFBhc3NSZWZQdHI8SW50ZW50UmVzdWx0Q2FsbGJhY2s+IHN1
Y2Nlc3NDYWxsYmFjaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFBhc3NSZWZQdHI8SW50ZW50UmVzdWx0Q2FsbGJhY2s+IGVycm9yQ2FsbGJhY2spCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbnRlbnRSZXF1ZXN0KGNvbnRleHQsIGludGVudCwg
c3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSk7CisgICAgUmVmUHRyPEludGVudFJlcXVl
c3Q+IGludGVudFJlcXVlc3QoYWRvcHRSZWYobmV3IEludGVudFJlcXVlc3QoY29udGV4dCwgaW50
ZW50LCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spKSk7CisgICAgaW50ZW50UmVxdWVz
dC0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgcmV0dXJuIGludGVudFJlcXVlc3QucmVsZWFzZSgp
OwogfQogCiBJbnRlbnRSZXF1ZXN0OjpJbnRlbnRSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmlj
L0FjdGl2ZURPTUNhbGxiYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMv
QWN0aXZlRE9NQ2FsbGJhY2suY3BwCmluZGV4IGZmMDJhNDIuLmMyMDQxZDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvQWN0aXZlRE9NQ2FsbGJhY2suY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvQWN0aXZlRE9NQ2FsbGJhY2suY3Bw
CkBAIC0xMjIsNiArMTIyLDcgQEAgc3RhdGljIHZvaWQgZGVzdHJveU9uQ29udGV4dFRocmVhZChQ
YXNzT3duUHRyPEFjdGl2ZURPTU9iamVjdENhbGxiYWNrSW1wbD4gaW1wbCkKIEFjdGl2ZURPTUNh
bGxiYWNrOjpBY3RpdmVET01DYWxsYmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
KQogICAgIDogbV9pbXBsKGFkb3B0UHRyKG5ldyBBY3RpdmVET01PYmplY3RDYWxsYmFja0ltcGwo
Y29udGV4dCkpKQogeworICAgIG1faW1wbC0+c3VzcGVuZElmTmVlZGVkKCk7CiB9CiAKIEFjdGl2
ZURPTUNhbGxiYWNrOjp+QWN0aXZlRE9NQ2FsbGJhY2soKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZl
RE9NT2JqZWN0LmNwcAppbmRleCAzOWE0YzRjLi5iYjJlYzIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
QWN0aXZlRE9NT2JqZWN0LmNwcApAQCAtNjAsNiArNjAsOSBAQCB2b2lkIENvbnRleHREZXN0cnVj
dGlvbk9ic2VydmVyOjpjb250ZXh0RGVzdHJveWVkKCkKIEFjdGl2ZURPTU9iamVjdDo6QWN0aXZl
RE9NT2JqZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQs
IHZvaWQqIHVwY2FzdFBvaW50ZXIpCiAgICAgOiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcihz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KQogICAgICwgbV9wZW5kaW5nQWN0aXZpdHlDb3VudCgwKQor
I2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAsIG1fc3VzcGVuZElmTmVlZGVkQ2FsbGVkKGZhbHNl
KQorI2VuZGlmCiB7CiAgICAgaWYgKCFtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiAgICAgICAg
IHJldHVybjsKQEAgLTczLDEwICs3NiwyMyBAQCBBY3RpdmVET01PYmplY3Q6On5BY3RpdmVET01P
YmplY3QoKQogICAgIGlmICghbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KQogICAgICAgICByZXR1
cm47CiAKKyAgICBBU1NFUlQobV9zdXNwZW5kSWZOZWVkZWRDYWxsZWQpOwogICAgIEFTU0VSVCht
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzQ29udGV4dFRocmVhZCgpKTsKICAgICBtX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQtPndpbGxEZXN0cm95QWN0aXZlRE9NT2JqZWN0KHRoaXMpOwogfQog
Cit2b2lkIEFjdGl2ZURPTU9iamVjdDo6c3VzcGVuZElmTmVlZGVkKCkKK3sKKyNpZiAhQVNTRVJU
X0RJU0FCTEVECisgICAgQVNTRVJUKCFtX3N1c3BlbmRJZk5lZWRlZENhbGxlZCk7CisgICAgbV9z
dXNwZW5kSWZOZWVkZWRDYWxsZWQgPSB0cnVlOworI2VuZGlmCisgICAgaWYgKCFtX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dC0+c3VzcGVuZEFjdGl2ZURPTU9iamVjdElmTmVlZGVkKHRoaXMpOworfQorCiBib29s
IEFjdGl2ZURPTU9iamVjdDo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsKICAgICByZXR1
cm4gbV9wZW5kaW5nQWN0aXZpdHlDb3VudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9BY3RpdmVET01PYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3Qu
aAppbmRleCBkYjdjYTY2Li5kY2U2YjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
QWN0aXZlRE9NT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVj
dC5oCkBAIC01MSw2ICs1MSwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHVibGljOgog
ICAgICAgICBBY3RpdmVET01PYmplY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIHZvaWQqIHVw
Y2FzdFBvaW50ZXIpOwogCisgICAgICAgIC8vIHN1c3BlbmRJZk5lZWRlZCgpIHNob3VsZCBiZSBj
YWxsZWQgZXhhY3RseSBvbmNlIGFmdGVyIG9iamVjdCBjb25zdHJ1Y3Rpb24gdG8gc3luY2hyb25p
emUKKyAgICAgICAgLy8gdGhlIHN1c3BlbmQgc3RhdGUgd2l0aCB0aGF0IGluIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuCisgICAgICAgIHZvaWQgc3VzcGVuZElmTmVlZGVkKCk7CisjaWYgIUFTU0VS
VF9ESVNBQkxFRAorICAgICAgICBib29sIHN1c3BlbmRJZk5lZWRlZENhbGxlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fc3VzcGVuZElmTmVlZGVkQ2FsbGVkOyB9CisjZW5kaWYKKwogICAgICAgICB2aXJ0
dWFsIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Q7CiAKICAgICAgICAgLy8gY2FuU3Vz
cGVuZCgpIGlzIHVzZWQgYnkgdGhlIGNhbGxlciBpZiB0aGVyZSBpcyBhIGNob2ljZSBiZXR3ZWVu
IHN1c3BlbmRpbmcgYW5kIHN0b3BwaW5nLgpAQCAtODgsNiArOTUsOSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICBwcml2YXRlOgogICAgICAgICB1bnNpZ25lZCBtX3BlbmRpbmdBY3Rpdml0
eUNvdW50OworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAgICAgYm9vbCBtX3N1c3BlbmRJZk5l
ZWRlZENhbGxlZDsKKyNlbmRpZgogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHAKaW5kZXggMzEwMjNlMi4uNWI4
OTliMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHAKQEAgLTY0
LDYgKzY0LDcgQEAgRG9jdW1lbnRFdmVudFF1ZXVlOjpEb2N1bWVudEV2ZW50UXVldWUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICA6IG1fcGVuZGluZ0V2ZW50VGltZXIoYWRv
cHRQdHIobmV3IERvY3VtZW50RXZlbnRRdWV1ZVRpbWVyKHRoaXMsIGNvbnRleHQpKSkKICAgICAs
IG1faXNDbG9zZWQoZmFsc2UpCiB7CisgICAgbV9wZW5kaW5nRXZlbnRUaW1lci0+c3VzcGVuZElm
TmVlZGVkKCk7CiB9CiAKIERvY3VtZW50RXZlbnRRdWV1ZTo6fkRvY3VtZW50RXZlbnRRdWV1ZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKaW5kZXgg
NTY3MGZlOC4uOWE1NjgyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRp
b25Db250ZXh0LmNwcApAQCAtOTMsNiArOTMsNyBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkKICAgICA6IG1faXRlcmF0aW5nQWN0aXZlRE9NT2JqZWN0
cyhmYWxzZSkKICAgICAsIG1faW5EZXN0cnVjdG9yKGZhbHNlKQogICAgICwgbV9pbkRpc3BhdGNo
RXJyb3JFdmVudChmYWxzZSkKKyAgICAsIG1fYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZChm
YWxzZSkKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogICAgICwgbV9oYXNPcGVuRGF0YWJhc2Vz
KGZhbHNlKQogI2VuZGlmCkBAIC0xMDIsNyArMTAzLDYgQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojp+U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpCiB7CiAgICAgbV9pbkRlc3RydWN0b3IgPSB0cnVlOwotCiAg
ICAgZm9yIChIYXNoU2V0PENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKj46Oml0ZXJhdG9yIGl0
ZXIgPSBtX2Rlc3RydWN0aW9uT2JzZXJ2ZXJzLmJlZ2luKCk7IGl0ZXIgIT0gbV9kZXN0cnVjdGlv
bk9ic2VydmVycy5lbmQoKTsgaXRlciA9IG1fZGVzdHJ1Y3Rpb25PYnNlcnZlcnMuYmVnaW4oKSkg
ewogICAgICAgICBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciogb2JzZXJ2ZXIgPSAqaXRlcjsK
ICAgICAgICAgbV9kZXN0cnVjdGlvbk9ic2VydmVycy5yZW1vdmUob2JzZXJ2ZXIpOwpAQCAtMjEx
LDExICsyMTEsMTIgQEAgYm9vbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpjYW5TdXNwZW5kQWN0
aXZlRE9NT2JqZWN0cygpCiAgICAgSGFzaE1hcDxBY3RpdmVET01PYmplY3QqLCB2b2lkKj46Oml0
ZXJhdG9yIGFjdGl2ZU9iamVjdHNFbmQgPSBtX2FjdGl2ZURPTU9iamVjdHMuZW5kKCk7CiAgICAg
Zm9yIChIYXNoTWFwPEFjdGl2ZURPTU9iamVjdCosIHZvaWQqPjo6aXRlcmF0b3IgaXRlciA9IG1f
YWN0aXZlRE9NT2JqZWN0cy5iZWdpbigpOyBpdGVyICE9IGFjdGl2ZU9iamVjdHNFbmQ7ICsraXRl
cikgewogICAgICAgICBBU1NFUlQoaXRlci0+Zmlyc3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSA9PSB0aGlzKTsKKyAgICAgICAgQVNTRVJUKGl0ZXItPmZpcnN0LT5zdXNwZW5kSWZOZWVkZWRD
YWxsZWQoKSk7CiAgICAgICAgIGlmICghaXRlci0+Zmlyc3QtPmNhblN1c3BlbmQoKSkgewogICAg
ICAgICAgICAgbV9pdGVyYXRpbmdBY3RpdmVET01PYmplY3RzID0gZmFsc2U7CiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KLSAgICB9ICAgIAorICAgIH0KICAgICBtX2l0ZXJh
dGluZ0FjdGl2ZURPTU9iamVjdHMgPSBmYWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTIy
NywxOCArMjI4LDIzIEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6c3VzcGVuZEFjdGl2
ZURPTU9iamVjdHMoQWN0aXZlRE9NT2JqZWN0OjpSZWFzb25Gb3JTCiAgICAgSGFzaE1hcDxBY3Rp
dmVET01PYmplY3QqLCB2b2lkKj46Oml0ZXJhdG9yIGFjdGl2ZU9iamVjdHNFbmQgPSBtX2FjdGl2
ZURPTU9iamVjdHMuZW5kKCk7CiAgICAgZm9yIChIYXNoTWFwPEFjdGl2ZURPTU9iamVjdCosIHZv
aWQqPjo6aXRlcmF0b3IgaXRlciA9IG1fYWN0aXZlRE9NT2JqZWN0cy5iZWdpbigpOyBpdGVyICE9
IGFjdGl2ZU9iamVjdHNFbmQ7ICsraXRlcikgewogICAgICAgICBBU1NFUlQoaXRlci0+Zmlyc3Qt
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA9PSB0aGlzKTsKKyAgICAgICAgQVNTRVJUKGl0ZXIt
PmZpcnN0LT5zdXNwZW5kSWZOZWVkZWRDYWxsZWQoKSk7CiAgICAgICAgIGl0ZXItPmZpcnN0LT5z
dXNwZW5kKHdoeSk7CiAgICAgfQogICAgIG1faXRlcmF0aW5nQWN0aXZlRE9NT2JqZWN0cyA9IGZh
bHNlOworICAgIG1fYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCA9IHRydWU7CisgICAgbV9y
ZWFzb25Gb3JTdXNwZW5kaW5nQWN0aXZlRE9NT2JqZWN0cyA9IHdoeTsKIH0KIAogdm9pZCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpyZXN1bWVBY3RpdmVET01PYmplY3RzKCkKIHsKKyAgICBtX2Fj
dGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQgPSBmYWxzZTsKICAgICAvLyBObyBwcm90ZWN0aW9u
IGFnYWluc3QgbV9hY3RpdmVET01PYmplY3RzIGNoYW5naW5nIGR1cmluZyBpdGVyYXRpb246IHJl
c3VtZSgpIHNob3VsZG4ndCBleGVjdXRlIGFyYml0cmFyeSBKUy4KICAgICBtX2l0ZXJhdGluZ0Fj
dGl2ZURPTU9iamVjdHMgPSB0cnVlOwogICAgIEhhc2hNYXA8QWN0aXZlRE9NT2JqZWN0Kiwgdm9p
ZCo+OjppdGVyYXRvciBhY3RpdmVPYmplY3RzRW5kID0gbV9hY3RpdmVET01PYmplY3RzLmVuZCgp
OwogICAgIGZvciAoSGFzaE1hcDxBY3RpdmVET01PYmplY3QqLCB2b2lkKj46Oml0ZXJhdG9yIGl0
ZXIgPSBtX2FjdGl2ZURPTU9iamVjdHMuYmVnaW4oKTsgaXRlciAhPSBhY3RpdmVPYmplY3RzRW5k
OyArK2l0ZXIpIHsKICAgICAgICAgQVNTRVJUKGl0ZXItPmZpcnN0LT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkgPT0gdGhpcyk7CisgICAgICAgIEFTU0VSVChpdGVyLT5maXJzdC0+c3VzcGVuZElm
TmVlZGVkQ2FsbGVkKCkpOwogICAgICAgICBpdGVyLT5maXJzdC0+cmVzdW1lKCk7CiAgICAgfQog
ICAgIG1faXRlcmF0aW5nQWN0aXZlRE9NT2JqZWN0cyA9IGZhbHNlOwpAQCAtMjUxLDYgKzI1Nyw3
IEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6c3RvcEFjdGl2ZURPTU9iamVjdHMoKQog
ICAgIEhhc2hNYXA8QWN0aXZlRE9NT2JqZWN0Kiwgdm9pZCo+OjppdGVyYXRvciBhY3RpdmVPYmpl
Y3RzRW5kID0gbV9hY3RpdmVET01PYmplY3RzLmVuZCgpOwogICAgIGZvciAoSGFzaE1hcDxBY3Rp
dmVET01PYmplY3QqLCB2b2lkKj46Oml0ZXJhdG9yIGl0ZXIgPSBtX2FjdGl2ZURPTU9iamVjdHMu
YmVnaW4oKTsgaXRlciAhPSBhY3RpdmVPYmplY3RzRW5kOyArK2l0ZXIpIHsKICAgICAgICAgQVNT
RVJUKGl0ZXItPmZpcnN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgPT0gdGhpcyk7CisgICAg
ICAgIEFTU0VSVChpdGVyLT5maXJzdC0+c3VzcGVuZElmTmVlZGVkQ2FsbGVkKCkpOwogICAgICAg
ICBpdGVyLT5maXJzdC0+c3RvcCgpOwogICAgIH0KICAgICBtX2l0ZXJhdGluZ0FjdGl2ZURPTU9i
amVjdHMgPSBmYWxzZTsKQEAgLTI1OSw2ICsyNjYsMTQgQEAgdm9pZCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpzdG9wQWN0aXZlRE9NT2JqZWN0cygpCiAgICAgY2xvc2VNZXNzYWdlUG9ydHMoKTsK
IH0KIAordm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0
SWZOZWVkZWQoQWN0aXZlRE9NT2JqZWN0KiBvYmplY3QpCit7CisgICAgQVNTRVJUKG1fYWN0aXZl
RE9NT2JqZWN0cy5jb250YWlucyhvYmplY3QpKTsKKyAgICAvLyBFbnN1cmUgYWxsIEFjdGl2ZURP
TU9iamVjdHMgYXJlIHN1c3BlbmRlZCBhbHNvIG5ld2x5IGNyZWF0ZWQgb25lcy4KKyAgICBpZiAo
bV9hY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkKQorICAgICAgICBvYmplY3QtPnN1c3BlbmQo
bV9yZWFzb25Gb3JTdXNwZW5kaW5nQWN0aXZlRE9NT2JqZWN0cyk7Cit9CisKIHZvaWQgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6ZGlkQ3JlYXRlQWN0aXZlRE9NT2JqZWN0KEFjdGl2ZURPTU9iamVj
dCogb2JqZWN0LCB2b2lkKiB1cGNhc3RQb2ludGVyKQogewogICAgIEFTU0VSVChvYmplY3QpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXggNTdhOWYx
Mi4uNjEyZjFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oCkBAIC05OSw2ICs5OSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZENvbnNvbGVNZXNzYWdl
KE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwgPSBTdHJpbmcoKSwgdW5zaWduZWQgbGlu
ZU51bWJlciA9IDAsIFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiA9IDApOwogICAgIHZvaWQg
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZl
bCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4pOwog
CisjaWYgRU5BQkxFKEJMT0IpCisgICAgUHVibGljVVJMTWFuYWdlciYgcHVibGljVVJMTWFuYWdl
cigpOworI2VuZGlmCiAgICAgLy8gQWN0aXZlIG9iamVjdHMgYXJlIG5vdCBnYXJiYWdlIGNvbGxl
Y3RlZCBldmVuIGlmIGluYWNjZXNzaWJsZSwgZS5nLiBiZWNhdXNlIHRoZWlyIGFjdGl2aXR5IG1h
eSByZXN1bHQgaW4gY2FsbGJhY2tzIGJlaW5nIGludm9rZWQuCiAgICAgYm9vbCBjYW5TdXNwZW5k
QWN0aXZlRE9NT2JqZWN0cygpOwogICAgIC8vIEFjdGl2ZSBvYmplY3RzIGNhbiBiZSBhc2tlZCB0
byBzdXNwZW5kIGV2ZW4gaWYgY2FuU3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoKSByZXR1cm5zICdm
YWxzZScgLQpAQCAtMTA3LDEyICsxMTAsMTUgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBy
ZXN1bWVBY3RpdmVET01PYmplY3RzKCk7CiAgICAgdmlydHVhbCB2b2lkIHN0b3BBY3RpdmVET01P
YmplY3RzKCk7CiAKLSNpZiBFTkFCTEUoQkxPQikKLSAgICBQdWJsaWNVUkxNYW5hZ2VyJiBwdWJs
aWNVUkxNYW5hZ2VyKCk7Ci0jZW5kaWYKKyAgICBib29sIGFjdGl2ZURPTU9iamVjdHNBcmVTdXNw
ZW5kZWQoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQ7IH0K
KworICAgIC8vIENhbGxlZCBmcm9tIHRoZSBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1Y3RvcnMgb2Yg
QWN0aXZlRE9NT2JqZWN0LgogICAgIHZvaWQgZGlkQ3JlYXRlQWN0aXZlRE9NT2JqZWN0KEFjdGl2
ZURPTU9iamVjdCosIHZvaWQqIHVwY2FzdFBvaW50ZXIpOwogICAgIHZvaWQgd2lsbERlc3Ryb3lB
Y3RpdmVET01PYmplY3QoQWN0aXZlRE9NT2JqZWN0Kik7CiAKKyAgICAvLyBDYWxsZWQgYWZ0ZXIg
dGhlIGNvbnN0cnVjdGlvbiBvZiBhbiBBY3RpdmVET01PYmplY3QgdG8gc3luY2hyb25pemUgc3Vz
cGVuZCBzdGF0ZS4KKyAgICB2b2lkIHN1c3BlbmRBY3RpdmVET01PYmplY3RJZk5lZWRlZChBY3Rp
dmVET01PYmplY3QqKTsKKwogICAgIHR5cGVkZWYgY29uc3QgSGFzaE1hcDxBY3RpdmVET01PYmpl
Y3QqLCB2b2lkKj4gQWN0aXZlRE9NT2JqZWN0c01hcDsKICAgICBBY3RpdmVET01PYmplY3RzTWFw
JiBhY3RpdmVET01PYmplY3RzKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmVET01PYmplY3RzOyB9
CiAKQEAgLTIxNiw2ICsyMjIsOSBAQCBwcml2YXRlOgogICAgIE93blB0cjxQdWJsaWNVUkxNYW5h
Z2VyPiBtX3B1YmxpY1VSTE1hbmFnZXI7CiAjZW5kaWYKIAorICAgIGJvb2wgbV9hY3RpdmVET01P
YmplY3RzQXJlU3VzcGVuZGVkOworICAgIEFjdGl2ZURPTU9iamVjdDo6UmVhc29uRm9yU3VzcGVu
c2lvbiBtX3JlYXNvbkZvclN1c3BlbmRpbmdBY3RpdmVET01PYmplY3RzOworCiAjaWYgRU5BQkxF
KFNRTF9EQVRBQkFTRSkKICAgICBSZWZQdHI8RGF0YWJhc2VUaHJlYWQ+IG1fZGF0YWJhc2VUaHJl
YWQ7CiAgICAgYm9vbCBtX2hhc09wZW5EYXRhYmFzZXM7IC8vIFRoaXMgbmV2ZXIgY2hhbmdlcyBi
YWNrIHRvIGZhbHNlLCBldmVuIGFmdGVyIHRoZSBkYXRhYmFzZSB0aHJlYWQgaXMgY2xvc2VkLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbS5jcHAKaW5kZXggYWMzODY5MC4uOTc5
OWUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9ET01GaWxlU3lzdGVtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCkBAIC01Niw4
ICs1Niw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4g
RE9NRmlsZVN5c3RlbTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFN0cmluZyYgbmFtZSwgUGFzc093blB0cjxBc3luY0ZpbGVTeXN0ZW0+IGFzeW5jRmlsZVN5
c3RlbSkKIHsKICAgICBSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZVN5c3RlbShhZG9wdFJlZihu
ZXcgRE9NRmlsZVN5c3RlbShjb250ZXh0LCBuYW1lLCBhc3luY0ZpbGVTeXN0ZW0pKSk7CisgICAg
ZmlsZVN5c3RlbS0+c3VzcGVuZElmTmVlZGVkKCk7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRPcGVuRmlsZVN5c3RlbShmaWxlU3lzdGVtLmdldCgpKTsKLSAgICByZXR1cm4gZmls
ZVN5c3RlbTsKKyAgICByZXR1cm4gZmlsZVN5c3RlbS5yZWxlYXNlKCk7CiB9CiAKIERPTUZpbGVT
eXN0ZW06OkRPTUZpbGVTeXN0ZW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBQYXNzT3duUHRyPEFzeW5jRmlsZVN5c3RlbT4gYXN5bmNGaWxlU3lz
dGVtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAKaW5kZXggMjljNTk4NC4uMDdj
NGI2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwCkBAIC00OCw2ICs0OCwx
MyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBkb3VibGUgcHJvZ3Jlc3NO
b3RpZmljYXRpb25JbnRlcnZhbE1TID0gNTA7CiAKK1Bhc3NSZWZQdHI8RmlsZVJlYWRlcj4gRmls
ZVJlYWRlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit7CisgICAg
UmVmUHRyPEZpbGVSZWFkZXI+IGZpbGVSZWFkZXIoYWRvcHRSZWYobmV3IEZpbGVSZWFkZXIoY29u
dGV4dCkpKTsKKyAgICBmaWxlUmVhZGVyLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4g
ZmlsZVJlYWRlci5yZWxlYXNlKCk7Cit9CisKIEZpbGVSZWFkZXI6OkZpbGVSZWFkZXIoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0
LCB0aGlzKQogICAgICwgbV9zdGF0ZShFTVBUWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRmlsZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVy
LmgKaW5kZXggODA0ZGQyOS4uZWNkZDQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9GaWxlUmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVy
LmgKQEAgLTUxLDEwICs1MSw3IEBAIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKIGNsYXNz
IEZpbGVSZWFkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxGaWxlUmVhZGVyPiwgcHVibGljIEFjdGl2
ZURPTU9iamVjdCwgcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMgRmlsZVJlYWRlckxvYWRlckNs
aWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RmlsZVJlYWRlcj4gY3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCi0gICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEZpbGVSZWFkZXIoY29udGV4dCkpOwotICAgIH0KKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxGaWxlUmVhZGVyPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogCiAg
ICAgdmlydHVhbCB+RmlsZVJlYWRlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0ZpbGVXcml0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlV3JpdGVy
LmNwcAppbmRleCAyYjI1Y2ZhLi43Y2Q5YjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0ZpbGVXcml0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVdy
aXRlci5jcHAKQEAgLTQ1LDYgKzQ1LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGlj
IGNvbnN0IGludCBrTWF4UmVjdXJzaW9uRGVwdGggPSAzOwogCitQYXNzUmVmUHRyPEZpbGVXcml0
ZXI+IEZpbGVXcml0ZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQor
eworICAgIFJlZlB0cjxGaWxlV3JpdGVyPiBmaWxlV3JpdGVyKGFkb3B0UmVmKG5ldyBGaWxlV3Jp
dGVyKGNvbnRleHQpKSk7CisgICAgZmlsZVdyaXRlci0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAg
cmV0dXJuIGZpbGVXcml0ZXIucmVsZWFzZSgpOworfQorCiBGaWxlV3JpdGVyOjpGaWxlV3JpdGVy
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgOiBBY3RpdmVET01PYmplY3Qo
Y29udGV4dCwgdGhpcykKICAgICAsIG1fcmVhZHlTdGF0ZShJTklUKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlV3JpdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGVXcml0ZXIuaAppbmRleCAyYjU5N2ExLi45NDYxMzUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0ZpbGVXcml0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0ZpbGVXcml0ZXIuaApAQCAtNDgsMTAgKzQ4LDcgQEAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDsKIAogY2xhc3MgRmlsZVdyaXRlciA6IHB1YmxpYyBGaWxlV3JpdGVyQmFzZSwgcHVibGlj
IEFjdGl2ZURPTU9iamVjdCwgcHVibGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMgQXN5bmNGaWxlV3Jp
dGVyQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxGaWxlV3JpdGVyPiBj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgRmlsZVdyaXRlcihjb250ZXh0KSk7Ci0gICAgfQorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEZpbGVXcml0ZXI+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7
CiAKICAgICBlbnVtIFJlYWR5U3RhdGUgewogICAgICAgICBJTklUID0gMCwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
aGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAKaW5kZXggNjBmYWIwNC4uOWIwZDJmZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAKQEAgLTE2OCw3ICsxNjgsNiBAQCBDYWNoZWRG
cmFtZTo6Q2FjaGVkRnJhbWUoRnJhbWUqIGZyYW1lKQogICAgIC8vIGJ1dCBhZnRlciB3ZSd2ZSBm
aXJlZCB0aGUgcGFnZWhpZGUgZXZlbnQsIGluIGNhc2UgdGhhdCBjcmVhdGVzIG1vcmUgb2JqZWN0
cy4KICAgICAvLyBTdXNwZW5kaW5nIG11c3QgYWxzbyBoYXBwZW4gYWZ0ZXIgd2UndmUgcmVjdXJz
ZWQgb3ZlciBjaGlsZCBmcmFtZXMsIGluIGNhc2UKICAgICAvLyB0aG9zZSBjcmVhdGUgbW9yZSBv
YmplY3RzLgotICAgIC8vIEZJWE1FOiBJdCdzIHN0aWxsIHBvc3NpYmxlIHRvIGhhdmUgb2JqZWN0
cyBjcmVhdGVkIGFmdGVyIHN1c3BlbmRpbmcgaW4gc29tZSBjYXNlcywgc2VlIGh0dHA6Ly93ZWJr
aXQub3JnL2IvNTM3MzMgZm9yIG1vcmUgZGV0YWlscy4KICAgICBtX2RvY3VtZW50LT5kb2N1bWVu
dFdpbGxTdXNwZW5kRm9yUGFnZUNhY2hlKCk7CiAgICAgbV9kb2N1bWVudC0+c3VzcGVuZFNjcmlw
dGVkQW5pbWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOwogICAgIG1fZG9jdW1lbnQtPnN1c3Bl
bmRBY3RpdmVET01PYmplY3RzKEFjdGl2ZURPTU9iamVjdDo6RG9jdW1lbnRXaWxsQmVjb21lSW5h
Y3RpdmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXVkaW9FbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5jcHAKaW5kZXggZTNk
Y2Y0Ny4uOThkZWNjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXVkaW9F
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuY3Bw
CkBAIC00Myw3ICs0Myw5IEBAIEhUTUxBdWRpb0VsZW1lbnQ6OkhUTUxBdWRpb0VsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtCiAKIFBhc3NSZWZQdHI8
SFRNTEF1ZGlvRWxlbWVudD4gSFRNTEF1ZGlvRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBjcmVhdGVkQnlQYXJzZXIp
CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MQXVkaW9FbGVtZW50KHRhZ05hbWUsIGRv
Y3VtZW50LCBjcmVhdGVkQnlQYXJzZXIpKTsKKyAgICBSZWZQdHI8SFRNTEF1ZGlvRWxlbWVudD4g
YXVkaW9FbGVtZW50KGFkb3B0UmVmKG5ldyBIVE1MQXVkaW9FbGVtZW50KHRhZ05hbWUsIGRvY3Vt
ZW50LCBjcmVhdGVkQnlQYXJzZXIpKSk7CisgICAgYXVkaW9FbGVtZW50LT5zdXNwZW5kSWZOZWVk
ZWQoKTsKKyAgICByZXR1cm4gYXVkaW9FbGVtZW50LnJlbGVhc2UoKTsKIH0KIAogUGFzc1JlZlB0
cjxIVE1MQXVkaW9FbGVtZW50PiBIVE1MQXVkaW9FbGVtZW50OjpjcmVhdGVGb3JKU0NvbnN0cnVj
dG9yKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBzcmMpCkBAIC01NCw2ICs1Niw3
IEBAIFBhc3NSZWZQdHI8SFRNTEF1ZGlvRWxlbWVudD4gSFRNTEF1ZGlvRWxlbWVudDo6Y3JlYXRl
Rm9ySlNDb25zdHJ1Y3RvcihEb2N1bWVudCoKICAgICAgICAgYXVkaW8tPnNldFNyYyhzcmMpOwog
ICAgICAgICBhdWRpby0+c2NoZWR1bGVMb2FkKEhUTUxNZWRpYUVsZW1lbnQ6Ok1lZGlhUmVzb3Vy
Y2UpOwogICAgIH0KKyAgICBhdWRpby0+c3VzcGVuZElmTmVlZGVkKCk7CiAgICAgcmV0dXJuIGF1
ZGlvLnJlbGVhc2UoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWFycXVlZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFycXVlZUVsZW1l
bnQuY3BwCmluZGV4IDFkODgzYjQuLmM3N2M5ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNYXJxdWVlRWxlbWVudC5jcHAKQEAgLTQ4LDcgKzQ4LDkgQEAgaW5saW5lIEhUTUxNYXJxdWVl
RWxlbWVudDo6SFRNTE1hcnF1ZWVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3UKIAogUGFzc1JlZlB0cjxIVE1MTWFycXVlZUVsZW1lbnQ+IEhUTUxNYXJxdWVlRWxlbWVu
dDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVu
dCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxNYXJxdWVlRWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCkpOworICAgIFJlZlB0cjxIVE1MTWFycXVlZUVsZW1lbnQ+IG1hcnF1ZWVFbGVt
ZW50KGFkb3B0UmVmKG5ldyBIVE1MTWFycXVlZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKSk7
CisgICAgbWFycXVlZUVsZW1lbnQtPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiBtYXJx
dWVlRWxlbWVudC5yZWxlYXNlKCk7CiB9CiAKIHZvaWQgSFRNTE1hcnF1ZWVFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9F
bGVtZW50LmNwcAppbmRleCBjNTlmOTk1Li42YjNmYzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFZpZGVvRWxlbWVudC5jcHAKQEAgLTU0LDcgKzU0LDkgQEAgaW5saW5lIEhUTUxWaWRlb0Vs
ZW1lbnQ6OkhUTUxWaWRlb0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQKIAogUGFzc1JlZlB0cjxIVE1MVmlkZW9FbGVtZW50PiBIVE1MVmlkZW9FbGVtZW50Ojpj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBi
b29sIGNyZWF0ZWRCeVBhcnNlcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxWaWRl
b0VsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGNyZWF0ZWRCeVBhcnNlcikpOworICAgIFJlZlB0
cjxIVE1MVmlkZW9FbGVtZW50PiB2aWRlb0VsZW1lbnQoYWRvcHRSZWYobmV3IEhUTUxWaWRlb0Vs
ZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGNyZWF0ZWRCeVBhcnNlcikpKTsKKyAgICB2aWRlb0Vs
ZW1lbnQtPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiB2aWRlb0VsZW1lbnQucmVsZWFz
ZSgpOwogfQogCiBib29sIEhUTUxWaWRlb0VsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3Qg
Tm9kZVJlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQpIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvbWVkaWFz
dHJlYW0vUGVlckNvbm5lY3Rpb24uY3BwCmluZGV4IGJiNDkzZDcuLjdlNWZjOWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbi5jcHAKQEAgLTQxLDYgKzQx
LDcgQEAgUGFzc1JlZlB0cjxQZWVyQ29ubmVjdGlvbj4gUGVlckNvbm5lY3Rpb246OmNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXgKICAgICBSZWZQdHI8UGVlckNvbm5lY3Rpb24+
IGNvbm5lY3Rpb24gPSBhZG9wdFJlZihuZXcgUGVlckNvbm5lY3Rpb24oY29udGV4dCwgc2VydmVy
Q29uZmlndXJhdGlvbiwgc2lnbmFsaW5nQ2FsbGJhY2spKTsKICAgICBjb25uZWN0aW9uLT5zZXRQ
ZW5kaW5nQWN0aXZpdHkoY29ubmVjdGlvbi5nZXQoKSk7CiAgICAgY29ubmVjdGlvbi0+c2NoZWR1
bGVJbml0aWFsTmVnb3RpYXRpb24oKTsKKyAgICBjb25uZWN0aW9uLT5zdXNwZW5kSWZOZWVkZWQo
KTsKIAogICAgIHJldHVybiBjb25uZWN0aW9uLnJlbGVhc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAppbmRleCBkNzk5MWYyLi43NDk2NGRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCkBA
IC0xMDIsMTIgKzEwMiwxNiBAQCBOb3RpZmljYXRpb246On5Ob3RpZmljYXRpb24oKQogCiBQYXNz
UmVmUHRyPE5vdGlmaWNhdGlvbj4gTm90aWZpY2F0aW9uOjpjcmVhdGUoY29uc3QgS1VSTCYgdXJs
LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlJiBlYywgUGFz
c1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IHByb3ZpZGVyKSAKIHsgCi0gICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBOb3RpZmljYXRpb24odXJsLCBjb250ZXh0LCBlYywgcHJvdmlkZXIpKTsKKyAg
ICBSZWZQdHI8Tm90aWZpY2F0aW9uPiBub3RpZmljYXRpb24oYWRvcHRSZWYobmV3IE5vdGlmaWNh
dGlvbih1cmwsIGNvbnRleHQsIGVjLCBwcm92aWRlcikpKTsKKyAgICBub3RpZmljYXRpb24tPnN1
c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiBub3RpZmljYXRpb24ucmVsZWFzZSgpOwogfQog
CiBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4gTm90aWZpY2F0aW9uOjpjcmVhdGUoY29uc3QgTm90
aWZpY2F0aW9uQ29udGVudHMmIGNvbnRlbnRzLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBFeGNlcHRpb25Db2RlJiBlYywgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IHBy
b3ZpZGVyKSAKIHsgCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBOb3RpZmljYXRpb24oY29udGVu
dHMsIGNvbnRleHQsIGVjLCBwcm92aWRlcikpOworICAgIFJlZlB0cjxOb3RpZmljYXRpb24+IG5v
dGlmaWNhdGlvbihhZG9wdFJlZihuZXcgTm90aWZpY2F0aW9uKGNvbnRlbnRzLCBjb250ZXh0LCBl
YywgcHJvdmlkZXIpKSk7CisgICAgbm90aWZpY2F0aW9uLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAg
ICByZXR1cm4gbm90aWZpY2F0aW9uLnJlbGVhc2UoKTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5n
JiBOb3RpZmljYXRpb246OmludGVyZmFjZU5hbWUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuY3BwCmluZGV4IDM3ZWQ1NDcu
LjcxMTQ2YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uQ2VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9ub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvbkNlbnRlci5jcHAKQEAgLTQxLDYgKzQxLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IE5vdGlmaWNhdGlvbkNlbnRlcjo6
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIE5vdGlmaWNhdGlvblByZXNl
bnRlciogcHJlc2VudGVyKQoreworICAgIFJlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IG5vdGlm
aWNhdGlvbkNlbnRlcihhZG9wdFJlZihuZXcgTm90aWZpY2F0aW9uQ2VudGVyKGNvbnRleHQsIHBy
ZXNlbnRlcikpKTsKKyAgICBub3RpZmljYXRpb25DZW50ZXItPnN1c3BlbmRJZk5lZWRlZCgpOwor
ICAgIHJldHVybiBub3RpZmljYXRpb25DZW50ZXIucmVsZWFzZSgpOworfQorCiBOb3RpZmljYXRp
b25DZW50ZXI6Ok5vdGlmaWNhdGlvbkNlbnRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBOb3RpZmljYXRpb25QcmVzZW50ZXIqIHByZXNlbnRlcikKICAgICA6IEFjdGl2ZURPTU9i
amVjdChjb250ZXh0LCB0aGlzKQogICAgICwgbV9ub3RpZmljYXRpb25QcmVzZW50ZXIocHJlc2Vu
dGVyKSB7fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb25DZW50ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
Q2VudGVyLmgKaW5kZXggMjNiMzFlMC4uNDAyY2NiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5oCkBAIC01MCw3ICs1MCw3IEBAIGNs
YXNzIFZvaWRDYWxsYmFjazsKIAogY2xhc3MgTm90aWZpY2F0aW9uQ2VudGVyIDogcHVibGljIFJl
ZkNvdW50ZWQ8Tm90aWZpY2F0aW9uQ2VudGVyPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uQ2VudGVyPiBjcmVhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgTm90aWZpY2F0aW9uUHJlc2VudGVyKiBw
cmVzZW50ZXIpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBOb3RpZmljYXRpb25DZW50ZXIoY29udGV4
dCwgcHJlc2VudGVyKSk7IH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50
ZXI+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTm90aWZpY2F0aW9uUHJlc2VudGVy
Kik7CiAKICAgICBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4gY3JlYXRlSFRNTE5vdGlmaWNhdGlv
bihjb25zdCBTdHJpbmcmIFVSSSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01UaW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVRpbWVyLmNwcAppbmRleCAwYTk0ZTdlZi4uZGFkNzZmNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01UaW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01U
aW1lci5jcHAKQEAgLTkyLDYgKzkyLDcgQEAgaW50IERPTVRpbWVyOjppbnN0YWxsKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NPd25QdHI8U2NoZWR1bGVkQWN0aW8KICAgICAv
LyBvciBpZiBpdCBpcyBhIG9uZS10aW1lIHRpbWVyIGFuZCBpdCBoYXMgZmlyZWQgKERPTVRpbWVy
OjpmaXJlZCkuCiAgICAgRE9NVGltZXIqIHRpbWVyID0gbmV3IERPTVRpbWVyKGNvbnRleHQsIGFj
dGlvbiwgdGltZW91dCwgc2luZ2xlU2hvdCk7CiAKKyAgICB0aW1lci0+c3VzcGVuZElmTmVlZGVk
KCk7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRJbnN0YWxsVGltZXIoY29udGV4
dCwgdGltZXItPm1fdGltZW91dElkLCB0aW1lb3V0LCBzaW5nbGVTaG90KTsKIAogICAgIHJldHVy
biB0aW1lci0+bV90aW1lb3V0SWQ7CkBAIC0xMTQsNyArMTE1LDcgQEAgdm9pZCBET01UaW1lcjo6
ZmlyZWQoKQogewogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCk7CiAgICAgdGltZXJOZXN0aW5nTGV2ZWwgPSBtX25lc3RpbmdMZXZl
bDsKLSAgICAKKyAgICBBU1NFUlQoIWNvbnRleHQtPmFjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5k
ZWQoKSk7CiAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihtX3Nob3Vs
ZEZvcndhcmRVc2VyR2VzdHVyZSA/IERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUgOiBQ
b3NzaWJseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7CiAgICAgCiAgICAgLy8gT25seSB0aGUgZmly
c3QgZXhlY3V0aW9uIG9mIGEgbXVsdGktc2hvdCB0aW1lciBzaG91bGQgZ2V0IGFuIGFmZmlybWF0
aXZlIHVzZXIgZ2VzdHVyZSBpbmRpY2F0b3IuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3Bw
CmluZGV4IGVhMDY2MDAuLjU0M2YxZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3Bw
CkBAIC05OCw2ICs5OCw3IEBAIFBhc3NSZWZQdHI8RXZlbnRTb3VyY2U+IEV2ZW50U291cmNlOjpj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uCiAKICAgICBzb3VyY2Ut
PnNldFBlbmRpbmdBY3Rpdml0eShzb3VyY2UuZ2V0KCkpOwogICAgIHNvdXJjZS0+Y29ubmVjdCgp
OworICAgIHNvdXJjZS0+c3VzcGVuZElmTmVlZGVkKCk7CiAKICAgICByZXR1cm4gc291cmNlLnJl
bGVhc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3VzcGVuZGFibGVU
aW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1c3BlbmRhYmxlVGltZXIuY3BwCmluZGV4
IDJhNGQyZTUuLmRkM2U4OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3VzcGVu
ZGFibGVUaW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TdXNwZW5kYWJsZVRpbWVy
LmNwcApAQCAtMzUsOCArMzUsOCBAQCBTdXNwZW5kYWJsZVRpbWVyOjpTdXNwZW5kYWJsZVRpbWVy
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgOiBBY3RpdmVET01PYmplY3Qo
Y29udGV4dCwgdGhpcykKICAgICAsIG1fbmV4dEZpcmVJbnRlcnZhbCgwKQogICAgICwgbV9yZXBl
YXRJbnRlcnZhbCgwKQotI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAsIG1fYWN0aXZlKGZhbHNl
KQorI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAsIG1fc3VzcGVuZGVkKGZhbHNlKQogI2VuZGlm
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkRhdGFiYXNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwCmluZGV4IGM0YjczY2UuLjI1
NjUwZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwCkBAIC01MCw3ICs1
MCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGFzc1JlZlB0cjxJREJEYXRhYmFzZT4gSURC
RGF0YWJhc2U6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVm
UHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gZGF0YWJhc2UpCiB7Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBJREJEYXRhYmFzZShjb250ZXh0LCBkYXRhYmFzZSkpOworICAgIFJlZlB0
cjxJREJEYXRhYmFzZT4gaWRiRGF0YWJhc2UoYWRvcHRSZWYobmV3IElEQkRhdGFiYXNlKGNvbnRl
eHQsIGRhdGFiYXNlKSkpOworICAgIGlkYkRhdGFiYXNlLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAg
ICByZXR1cm4gaWRiRGF0YWJhc2UucmVsZWFzZSgpOwogfQogCiBJREJEYXRhYmFzZTo6SURCRGF0
YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJEYXRh
YmFzZUJhY2tlbmRJbnRlcmZhY2U+IGJhY2tlbmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQlJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1
ZXN0LmNwcAppbmRleCA5NjhmYjUwLi45YmZjZGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQlJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
UmVxdWVzdC5jcHAKQEAgLTQ1LDcgKzQ1LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNz
UmVmUHRyPElEQlJlcXVlc3Q+IElEQlJlcXVlc3Q6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBJREJUcmFuc2FjdGlvbiog
dHJhbnNhY3Rpb24pCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJSZXF1ZXN0KGNvbnRl
eHQsIHNvdXJjZSwgdHJhbnNhY3Rpb24pKTsKKyAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVxdWVz
dChhZG9wdFJlZihuZXcgSURCUmVxdWVzdChjb250ZXh0LCBzb3VyY2UsIHRyYW5zYWN0aW9uKSkp
OworICAgIHJlcXVlc3QtPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiByZXF1ZXN0LnJl
bGVhc2UoKTsKIH0KIAogSURCUmVxdWVzdDo6SURCUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBJREJUcmFuc2FjdGlvbiog
dHJhbnNhY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlRyYW5z
YWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNhY3Rpb24uY3BwCmlu
ZGV4IDE0MGRmMDUuLjkwNDg3NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
SURCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVHJhbnNh
Y3Rpb24uY3BwCkBAIC00Miw3ICs0Miw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGFzc1Jl
ZlB0cjxJREJUcmFuc2FjdGlvbj4gSURCVHJhbnNhY3Rpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZT4gYmFja2VuZCwgSURCRGF0YWJhc2UqIGRiKQogewotICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgSURCVHJhbnNhY3Rpb24oY29udGV4dCwgYmFja2VuZCwgZGIpKTsKKyAgICBSZWZQdHI8SURC
VHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uKGFkb3B0UmVmKG5ldyBJREJUcmFuc2FjdGlvbihjb250
ZXh0LCBiYWNrZW5kLCBkYikpKTsKKyAgICB0cmFuc2FjdGlvbi0+c3VzcGVuZElmTmVlZGVkKCk7
CisgICAgcmV0dXJuIHRyYW5zYWN0aW9uLnJlbGVhc2UoKTsKIH0KIAogSURCVHJhbnNhY3Rpb246
OklEQlRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQ
dHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kLCBJREJEYXRhYmFzZSog
ZGIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VS
ZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZVJlcXVl
c3QuY3BwCmluZGV4IDA4MWQyNGMuLmYxM2NhOWQzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5jcHAKQEAgLTM1LDcgKzM1LDEwIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGFzc1JlZlB0cjxJREJWZXJzaW9uQ2hhbmdlUmVxdWVz
dD4gSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Q6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlLCBjb25zdCBTdHJpbmcmIHZlcnNp
b24pCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdChj
b250ZXh0LCBzb3VyY2UsIHZlcnNpb24pKTsKKyAgICBSZWZQdHI8SURCVmVyc2lvbkNoYW5nZVJl
cXVlc3Q+IHJlcXVlc3QoYWRvcHRSZWYobmV3IElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0KGNvbnRl
eHQsIHNvdXJjZSwgdmVyc2lvbikpKTsKKyAgICByZXF1ZXN0LT5zdXNwZW5kSWZOZWVkZWQoKTsK
KyAgICByZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7CisKIH0KIAogSURCVmVyc2lvbkNoYW5nZVJl
cXVlc3Q6OklEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgdmVyc2lvbikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCmluZGV4IDBjMTY2NGYuLmFm
YzgxMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcApAQCAtMTAy
LDggKzEwMiwxMCBAQCBQYXNzUmVmUHRyPEF1ZGlvQ29udGV4dD4gQXVkaW9Db250ZXh0OjpjcmVh
dGUoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAg
aWYgKHNfaGFyZHdhcmVDb250ZXh0Q291bnQgPj0gTWF4SGFyZHdhcmVDb250ZXh0cykKICAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgICAgIAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXVkaW9Db250
ZXh0KGRvY3VtZW50KSk7CisKKyAgICBSZWZQdHI8QXVkaW9Db250ZXh0PiBhdWRpb0NvbnRleHQo
YWRvcHRSZWYobmV3IEF1ZGlvQ29udGV4dChkb2N1bWVudCkpKTsKKyAgICBhdWRpb0NvbnRleHQt
PnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiBhdWRpb0NvbnRleHQucmVsZWFzZSgpOwog
fQogCiBQYXNzUmVmUHRyPEF1ZGlvQ29udGV4dD4gQXVkaW9Db250ZXh0OjpjcmVhdGVPZmZsaW5l
Q29udGV4dChEb2N1bWVudCogZG9jdW1lbnQsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNp
emVfdCBudW1iZXJPZkZyYW1lcywgZmxvYXQgc2FtcGxlUmF0ZSwgRXhjZXB0aW9uQ29kZSYgZWMp
CkBAIC0xMTgsNyArMTIwLDkgQEAgUGFzc1JlZlB0cjxBdWRpb0NvbnRleHQ+IEF1ZGlvQ29udGV4
dDo6Y3JlYXRlT2ZmbGluZUNvbnRleHQoRG9jdW1lbnQqIGRvY3VtZW50LAogICAgICAgICByZXR1
cm4gMDsKICAgICB9CiAKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF1ZGlvQ29udGV4dChkb2N1
bWVudCwgbnVtYmVyT2ZDaGFubmVscywgbnVtYmVyT2ZGcmFtZXMsIHNhbXBsZVJhdGUpKTsKKyAg
ICBSZWZQdHI8QXVkaW9Db250ZXh0PiBhdWRpb0NvbnRleHQobmV3IEF1ZGlvQ29udGV4dChkb2N1
bWVudCwgbnVtYmVyT2ZDaGFubmVscywgbnVtYmVyT2ZGcmFtZXMsIHNhbXBsZVJhdGUpKTsKKyAg
ICBhdWRpb0NvbnRleHQtPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiBhdWRpb0NvbnRl
eHQucmVsZWFzZSgpOwogfQogCiAvLyBDb25zdHJ1Y3RvciBmb3IgcmVuZGVyaW5nIHRvIHRoZSBh
dWRpbyBoYXJkd2FyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2Vi
U29ja2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAppbmRl
eCA1ZTIxM2I4Li4zMDEwZWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRz
L1dlYlNvY2tldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQu
Y3BwCkBAIC0xNjQsNiArMTY0LDEzIEBAIFdlYlNvY2tldDo6fldlYlNvY2tldCgpCiAgICAgICAg
IG1fY2hhbm5lbC0+ZGlzY29ubmVjdCgpOwogfQogCitQYXNzUmVmUHRyPFdlYlNvY2tldD4gV2Vi
U29ja2V0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBS
ZWZQdHI8V2ViU29ja2V0PiB3ZWJTb2NrZXQoYWRvcHRSZWYobmV3IFdlYlNvY2tldChjb250ZXh0
KSkpOworICAgIHdlYlNvY2tldC0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgcmV0dXJuIHdlYlNv
Y2tldC5yZWxlYXNlKCk7Cit9CisKIHZvaWQgV2ViU29ja2V0Ojpjb25uZWN0KGNvbnN0IFN0cmlu
ZyYgdXJsLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBWZWN0b3I8U3RyaW5nPiBwcm90b2Nv
bHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oIGIv
U291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAppbmRleCBiODYwYjc1Li5jYWU1
N2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKQEAgLTUzLDcgKzUzLDcg
QEAgY2xhc3MgV2ViU29ja2V0IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViU29ja2V0PiwgcHVibGlj
IEV2ZW50VGFyZ2V0LCBwdWJsaWMgQWN0aXYKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBzZXRJ
c0F2YWlsYWJsZShib29sKTsKICAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgpOwotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFdlYlNvY2tldD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJTb2NrZXQoY29udGV4dCkpOyB9Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViU29ja2V0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCopOwogICAgIHZpcnR1YWwgfldlYlNvY2tldCgpOwogCiAgICAgZW51bSBTdGF0ZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdvcmtlci5jcHAKaW5kZXggZmYwNzkyYy4uOWU5NGVl
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3JrZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2hhcmVkV29ya2VyLmNwcApAQCAtNTgsNiArNTgs
OCBAQCBQYXNzUmVmUHRyPFNoYXJlZFdvcmtlcj4gU2hhcmVkV29ya2VyOjpjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgYwogICAgIE93blB0cjxNZXNzYWdlUG9ydENoYW5u
ZWw+IHJlbW90ZVBvcnQgPSBjaGFubmVsLT5wb3J0MigpLT5kaXNlbnRhbmdsZShlYyk7CiAgICAg
QVNTRVJUKHJlbW90ZVBvcnQpOwogCisgICAgd29ya2VyLT5zdXNwZW5kSWZOZWVkZWQoKTsKKwog
ICAgIEtVUkwgc2NyaXB0VVJMID0gd29ya2VyLT5yZXNvbHZlVVJMKHVybCwgZWMpOwogICAgIGlm
IChzY3JpcHRVUkwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyLmNwcAppbmRleCBiMzIzNmE3Li4yZjVlNGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXIuY3BwCkBAIC02MCw2ICs2MCw4IEBAIFBhc3NSZWZQdHI8V29ya2VyPiBXb3JrZXI6OmNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmCiB7CiAgICAg
UmVmUHRyPFdvcmtlcj4gd29ya2VyID0gYWRvcHRSZWYobmV3IFdvcmtlcihjb250ZXh0KSk7CiAK
KyAgICB3b3JrZXItPnN1c3BlbmRJZk5lZWRlZCgpOworCiAgICAgS1VSTCBzY3JpcHRVUkwgPSB3
b3JrZXItPnJlc29sdmVVUkwodXJsLCBlYyk7CiAgICAgaWYgKHNjcmlwdFVSTC5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5k
ZXggNDFmMDYyMS4uN2VkODIxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3Bw
CkBAIC0xNTQsNyArMTU0LDEwIEBAIHN0YXRpYyB2b2lkIGxvZ0NvbnNvbGVFcnJvcihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG1lc3NhCiAKIFBhc3NSZWZQ
dHI8WE1MSHR0cFJlcXVlc3Q+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmln
aW4pCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBYTUxIdHRwUmVxdWVzdChjb250ZXh0LCBz
ZWN1cml0eU9yaWdpbikpOworICAgIFJlZlB0cjxYTUxIdHRwUmVxdWVzdD4geG1sSHR0cFJlcXVl
c3QoYWRvcHRSZWYobmV3IFhNTEh0dHBSZXF1ZXN0KGNvbnRleHQsIHNlY3VyaXR5T3JpZ2luKSkp
OworICAgIHhtbEh0dHBSZXF1ZXN0LT5zdXNwZW5kSWZOZWVkZWQoKTsKKworICAgIHJldHVybiB4
bWxIdHRwUmVxdWVzdC5yZWxlYXNlKCk7CiB9CiAKIFhNTEh0dHBSZXF1ZXN0OjpYTUxIdHRwUmVx
dWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiBzZWN1cml0eU9yaWdpbikK
</data>

          </attachment>
      

    </bug>

</bugzilla>