<?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>89072</bug_id>
          
          <creation_ts>2012-06-14 01:29:31 -0700</creation_ts>
          <short_desc>[WK2] Add support for Web Intents MessagePorts</short_desc>
          <delta_ts>2012-08-15 06:03:45 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://www.w3.org/TR/web-intents/</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>93175</dependson>
    
    <dependson>93778</dependson>
          <blocked>88303</blocked>
    
    <blocked>93353</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>andersca</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>d-r</cc>
    
    <cc>gbillock</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hausmann</cc>
    
    <cc>kenneth</cc>
    
    <cc>menard</cc>
    
    <cc>philn</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>648933</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-06-14 01:29:31 -0700</bug_when>
    <thetext>A Web Intent can carry MessagePorts. Those MessagePorts need to be passed carried over from the intent dispatch to its delivery.
Currently, the MessagePorts are ignored and they will be missing upon delivery to the Intent service.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649003</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-06-14 02:44:11 -0700</bug_when>
    <thetext>The MessagePorts technically don&apos;t need to be used on UI side. We - however - need to keep information about the MessagePorts in IntentData when dispatched to the UI so that the MessagePorts can be passed back to the intent service on WebProcess side upon delivery to a frame.

I&apos;m thinking of adding a &quot;HashMap&lt;uint64_t, WebCore::MessagePortArray*&gt; m_messagePorts;&quot; to Webprocess.h in order to keep the MessagePorts on WebProcess side and assign them an identifier. Then, I would pass only the identifier to the UI side via IntentData. Finally, upon intent delivery (WebFrame::deliverIntent() in Bug 88989), I would get back the WebCore::MessagePortArray* from m_messagePorts using the identifier in IntentData.

Can anyone tell me if this is the right/best approach for this use case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683154</commentid>
    <comment_count>2</comment_count>
      <attachid>155557</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-31 09:04:16 -0700</bug_when>
    <thetext>Created attachment 155557
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683159</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-31 09:06:45 -0700</bug_when>
    <thetext>With this patch, all the webintents/* layout tests are now passing for WK2 EFL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683193</commentid>
    <comment_count>4</comment_count>
      <attachid>155557</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-07-31 09:34:07 -0700</bug_when>
    <thetext>Comment on attachment 155557
Patch

Attachment 155557 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13410014</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683209</commentid>
    <comment_count>5</comment_count>
      <attachid>155572</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-31 09:50:56 -0700</bug_when>
    <thetext>Created attachment 155572
Patch

Attempt to fix Windows build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683211</commentid>
    <comment_count>6</comment_count>
      <attachid>155573</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-31 09:53:18 -0700</bug_when>
    <thetext>Created attachment 155573
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683366</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-31 12:13:34 -0700</bug_when>
    <thetext>I don&apos;t know how headers forwarding works for Mac port. It does not seem to be working for Source/WebCore/dom/default/*.h

Can anyone tell me what I should do to get it working?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683370</commentid>
    <comment_count>8</comment_count>
      <attachid>155573</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-07-31 12:15:54 -0700</bug_when>
    <thetext>Comment on attachment 155573
Patch

Attachment 155573 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13404144</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683407</commentid>
    <comment_count>9</comment_count>
      <attachid>155611</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-31 13:00:16 -0700</bug_when>
    <thetext>Created attachment 155611
Patch

Attempt to fix Mac build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683414</commentid>
    <comment_count>10</comment_count>
      <attachid>155615</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-31 13:11:29 -0700</bug_when>
    <thetext>Created attachment 155615
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685665</commentid>
    <comment_count>11</comment_count>
      <attachid>155615</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-08-02 12:24:06 -0700</bug_when>
    <thetext>Comment on attachment 155615
Patch

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

You should probably refer to the draft spec, plus do you have any regression test for this? You mention that the tests in webintents will be changed by this change but you are not adding the new results as part of this bug?

&gt; Source/WebKit2/Shared/IntentData.cpp:56
&gt; +    MessagePortChannelArray* coreMessagePorts = coreIntent-&gt;messagePorts();
&gt; +    if (coreMessagePorts) {
&gt; +        size_t numMessagePorts = coreMessagePorts-&gt;size();
&gt; +        for (size_t i = 0; i &lt; numMessagePorts; ++i)
&gt; +            messagePorts.append(WebProcess::shared().addMessagePortChannel((*coreMessagePorts)[i]-&gt;channel()));
&gt; +    }

no iterators for iterating over this?

&gt; Source/WebKit2/UIProcess/WebIntentData.cpp:40
&gt; +WebIntentData::WebIntentData(const IntentData&amp; store, WebProcessProxy* process)

You have to move this class around as part of this patch? It makes it harder to see what was changed

&gt; Source/WebKit2/UIProcess/WebIntentData.cpp:82
&gt; +        wkExtras.set(it-&gt;first, WebString::create(it-&gt;second));
&gt; +    return ImmutableDictionary::adopt(wkExtras);

can we get a newline before the return</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685725</commentid>
    <comment_count>12</comment_count>
      <attachid>155615</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-08-02 13:22:53 -0700</bug_when>
    <thetext>Comment on attachment 155615
Patch

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

&gt;&gt; Source/WebKit2/Shared/IntentData.cpp:56
&gt;&gt; +    }
&gt; 
&gt; no iterators for iterating over this?

WebKit coding Style says to use indexes instead of iterators to improve code readability. This is why I did this.

&gt;&gt; Source/WebKit2/UIProcess/WebIntentData.cpp:40
&gt;&gt; +WebIntentData::WebIntentData(const IntentData&amp; store, WebProcessProxy* process)
&gt; 
&gt; You have to move this class around as part of this patch? It makes it harder to see what was changed

I believe I need to move it because it depends on a UiProcess type now: WebProcessProxy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685729</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-08-02 13:27:23 -0700</bug_when>
    <thetext>Also, note that there is no need to update test results. The tests are currently failing for WebKit2 EFL and they start passing with this patch. The tests are not skipped or anything and the global test expectations are fine. EFL is the only port to enable Web Intents in WK2. Basically, this patch brings WK2 support for Web intents to the same level as WK1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685748</commentid>
    <comment_count>14</comment_count>
      <attachid>156152</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-08-02 13:39:04 -0700</bug_when>
    <thetext>Created attachment 156152
Patch

- Add empty line before return
- Attempt to clarify Changelogs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685755</commentid>
    <comment_count>15</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-08-02 13:41:32 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 155615 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=155615&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit2/Shared/IntentData.cpp:56
&gt; &gt;&gt; +    }
&gt; &gt; 
&gt; &gt; no iterators for iterating over this?
&gt; 
&gt; WebKit coding Style says to use indexes instead of iterators to improve code readability. This is why I did this.

For the coding style, I&apos;m referring to:

Prefer index over iterator in Vector iterations for a terse, easier-to-read code.
Right:

size_t frameViewsCount = frameViews.size();
for (size_t i = i; i &lt; frameViewsCount; ++i)
    frameViews[i]-&gt;updateLayoutAndStyleIfNeededRecursive();

Wrong:

const Vector&lt;RefPtr&lt;FrameView&gt; &gt;::iterator end = frameViews.end();
for (Vector&lt;RefPtr&lt;FrameView&gt; &gt;::iterator it = frameViews.begin(); it != end; ++it)
    (*it)-&gt;updateLayoutAndStyleIfNeededRecursive();


From http://www.webkit.org/coding/coding-style.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686753</commentid>
    <comment_count>16</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-08-03 08:07:25 -0700</bug_when>
    <thetext>What about moving it in a preparation patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687388</commentid>
    <comment_count>17</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-08-03 22:45:16 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; What about moving it in a preparation patch?

Sure, done in Bug 93175.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687445</commentid>
    <comment_count>18</comment_count>
      <attachid>156531</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-08-04 06:58:16 -0700</bug_when>
    <thetext>Created attachment 156531
Patch

Rebase on master now that the dependency landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687447</commentid>
    <comment_count>19</comment_count>
      <attachid>156531</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-08-04 07:40:21 -0700</bug_when>
    <thetext>Comment on attachment 156531
Patch

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

&gt; Source/WebKit2/Shared/IntentData.h:32
&gt; +#include &lt;WebCore/KURL.h&gt;

Where are you using this one?

&gt; Source/WebKit2/UIProcess/API/C/WKIntentData.cpp:34
&gt; +#include &quot;WebSerializedScriptValue.h&quot;

You add this to a cpp file you are only removing code from

&gt; Source/WebKit2/UIProcess/API/C/WKIntentData.h:-37
&gt; -WK_EXPORT WKIntentDataRef WKIntentDataCreate(WKDictionaryRef initDictionary);

Shouldn&apos;t the changelog explain why this was removed and what replaces it. So you can only use WKBundleIntentCreate() now? Can you make a C test showing how to use  this new api, maybe even api documentation?

&gt; Source/WebKit2/UIProcess/WebIntentData.cpp:50
&gt; +WebIntentData::~WebIntentData()
&gt; +{
&gt; +    // Remove MessagePortChannels from WebProcess.
&gt; +    if (m_process &amp;&amp; !m_store.messagePorts.isEmpty()) {
&gt; +        size_t numMessagePorts = m_store.messagePorts.size();

How is all of this clean up handled when the web process crashes? Would be great if it could be tested

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleIntent.cpp:65
&gt; +    RefPtr&lt;Intent&gt; coreIntent = Intent::create(toImpl(action)-&gt;string(), toImpl(type)-&gt;string(), data ? static_cast&lt;SerializedScriptValue*&gt;(toImpl(data)-&gt;internalRepresentation()) : 0, dummyPorts, ec);

Wouldn&apos;t it be nicer to do the ? * : * on a separate line

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleIntent.h:43
&gt; +WK_EXPORT WKStringRef WKBundleIntentCopyExtra(WKBundleIntentRef intentRef, WKStringRef key);

CopyExtraValue? to make it more different from CopyExtras

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1977
&gt; +    WebFrame* frame = WebProcess::shared().webFrame(frameID);
&gt; +    if (!frame)
&gt; +        return;
&gt; +
&gt; +    frame-&gt;deliverIntent(coreIntent);

Why not just

if (WebFrame* frame = WebProcess::shared().webFrame(frameID))
    frame-&gt;deliverIntent(coreIntent);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687460</commentid>
    <comment_count>20</comment_count>
      <attachid>156531</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-08-04 10:18:41 -0700</bug_when>
    <thetext>Comment on attachment 156531
Patch

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

&gt;&gt; Source/WebKit2/Shared/IntentData.h:32
&gt;&gt; +#include &lt;WebCore/KURL.h&gt;
&gt; 
&gt; Where are you using this one?

Because of the removal of &quot;GenericCallback.h&quot; (which should not have been there in the first place), I need to add a few includes in this file and in other Web Intents files.

&gt; Source/WebKit2/Shared/IntentData.h:59
&gt;      Vector&lt;WebCore::KURL&gt; suggestions;

See, KURL is used here.

&gt;&gt; Source/WebKit2/UIProcess/API/C/WKIntentData.cpp:34
&gt;&gt; +#include &quot;WebSerializedScriptValue.h&quot;
&gt; 
&gt; You add this to a cpp file you are only removing code from

well, it is really needed because WebSerializedScriptValue is used in this file and we no longer included &quot;WebSerializedScriptValue.h&quot; in WebIntentData.h. See WebIntentData.h cleanup in this present patch.

&gt;&gt; Source/WebKit2/UIProcess/API/C/WKIntentData.h:-37
&gt;&gt; -WK_EXPORT WKIntentDataRef WKIntentDataCreate(WKDictionaryRef initDictionary);
&gt; 
&gt; Shouldn&apos;t the changelog explain why this was removed and what replaces it. So you can only use WKBundleIntentCreate() now? Can you make a C test showing how to use  this new api, maybe even api documentation?

Yes, I could keep this here but this was originally added to support WTR use case. Now that WTR uses WKBundleIntent, we don&apos;t technically need it anymore. I could add a mention in the Changelog for this, yes. Regarding, the doc, I have not seen any C API with documentation. I am however planning to add C API tests for Web Intents in a separate patch. The API has not been very stable so far so I was waiting for feature-completion. Really, we are not supposed to create Web Intents on native side except for testing purposes AFAIK.

&gt;&gt; Source/WebKit2/UIProcess/WebIntentData.cpp:50
&gt;&gt; +        size_t numMessagePorts = m_store.messagePorts.size();
&gt; 
&gt; How is all of this clean up handled when the web process crashes? Would be great if it could be tested

Well, the MessagePorts are stored on WebProcess side, what could I even do if it crashes?

&gt;&gt; Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleIntent.cpp:65
&gt;&gt; +    RefPtr&lt;Intent&gt; coreIntent = Intent::create(toImpl(action)-&gt;string(), toImpl(type)-&gt;string(), data ? static_cast&lt;SerializedScriptValue*&gt;(toImpl(data)-&gt;internalRepresentation()) : 0, dummyPorts, ec);
&gt; 
&gt; Wouldn&apos;t it be nicer to do the ? * : * on a separate line

Sure, no problem.

&gt;&gt; Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleIntent.h:43
&gt;&gt; +WK_EXPORT WKStringRef WKBundleIntentCopyExtra(WKBundleIntentRef intentRef, WKStringRef key);
&gt; 
&gt; CopyExtraValue? to make it more different from CopyExtras

Hmm, I don&apos;t mind making this change but then I could need to edit the UIProcess equivalent as well. This is made to be consistent with WKIntentDataCopyExtra(). Do you think I should make both changes in this patch?

&gt;&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1977
&gt;&gt; +    frame-&gt;deliverIntent(coreIntent);
&gt; 
&gt; Why not just
&gt; 
&gt; if (WebFrame* frame = WebProcess::shared().webFrame(frameID))
&gt;     frame-&gt;deliverIntent(coreIntent);

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687462</commentid>
    <comment_count>21</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-08-04 10:23:24 -0700</bug_when>
    <thetext>
&gt; Yes, I could keep this here but this was originally added to support WTR use case. Now that WTR uses WKBundleIntent, we don&apos;t technically need it anymore. I could add a mention in the Changelog for this, yes. Regarding, the doc, I have not seen any C API with documentation. I am however planning to add C API tests for Web Intents in a separate patch. The API has not been very stable so far so I was waiting for feature-completion. Really, we are not supposed to create Web Intents on native side except for testing purposes AFAIK.

OK, just mention it in the changelog then.
 
&gt; &gt;&gt; Source/WebKit2/UIProcess/WebIntentData.cpp:50
&gt; &gt;&gt; +        size_t numMessagePorts = m_store.messagePorts.size();
&gt; &gt; 
&gt; &gt; How is all of this clean up handled when the web process crashes? Would be great if it could be tested
&gt; 
&gt; Well, the MessagePorts are stored on WebProcess side, what could I even do if it crashes?

You are storing the messageports on the UI side as well right, they should be cleared if it crashes. Are you doing that?

&gt; &gt; CopyExtraValue? to make it more different from CopyExtras
&gt; 
&gt; Hmm, I don&apos;t mind making this change but then I could need to edit the UIProcess equivalent as well. This is made to be consistent with WKIntentDataCopyExtra(). Do you think I should make both changes in this patch?

I think that is fine, or in another patch, whatever you feel like.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687463</commentid>
    <comment_count>22</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-08-04 10:23:54 -0700</bug_when>
    <thetext>I think Anders reviewed the original C api, it would be great if he could have a look again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687464</commentid>
    <comment_count>23</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-08-04 10:30:15 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; &gt; Yes, I could keep this here but this was originally added to support WTR use case. Now that WTR uses WKBundleIntent, we don&apos;t technically need it anymore. I could add a mention in the Changelog for this, yes. Regarding, the doc, I have not seen any C API with documentation. I am however planning to add C API tests for Web Intents in a separate patch. The API has not been very stable so far so I was waiting for feature-completion. Really, we are not supposed to create Web Intents on native side except for testing purposes AFAIK.
&gt; 
&gt; OK, just mention it in the changelog then.
&gt; 
&gt; &gt; &gt;&gt; Source/WebKit2/UIProcess/WebIntentData.cpp:50
&gt; &gt; &gt;&gt; +        size_t numMessagePorts = m_store.messagePorts.size();
&gt; &gt; &gt; 
&gt; &gt; &gt; How is all of this clean up handled when the web process crashes? Would be great if it could be tested
&gt; &gt; 
&gt; &gt; Well, the MessagePorts are stored on WebProcess side, what could I even do if it crashes?
&gt; 
&gt; You are storing the messageports on the UI side as well right, they should be cleared if it crashes. Are you doing that?

I&apos;m not storing MessagePorts on UI side. I&apos;m merely storing their identifiers in WebIntentData. The MessagePorts are not meant to be used on UI side so I only use identifiers. MessagePorts are stored only in the WebProcess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687468</commentid>
    <comment_count>24</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-08-04 11:15:13 -0700</bug_when>
    <thetext>
&gt; I&apos;m not storing MessagePorts on UI side. I&apos;m merely storing their identifiers in WebIntentData. The MessagePorts are not meant to be used on UI side so I only use identifiers. MessagePorts are stored only in the WebProcess.

Ok, just checking :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687473</commentid>
    <comment_count>25</comment_count>
      <attachid>156537</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-08-04 12:02:38 -0700</bug_when>
    <thetext>Created attachment 156537
Patch

Take Kenneth&apos;s feedback into consideration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>693275</commentid>
    <comment_count>26</comment_count>
      <attachid>157902</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-08-12 08:52:29 -0700</bug_when>
    <thetext>Created attachment 157902
Patch

Rebase on master and unskip related test cases for WebKit2 EFL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>693655</commentid>
    <comment_count>27</comment_count>
      <attachid>157998</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-08-13 07:45:38 -0700</bug_when>
    <thetext>Created attachment 157998
Patch

Rebase on master.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694860</commentid>
    <comment_count>28</comment_count>
      <attachid>157998</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-08-14 05:27:31 -0700</bug_when>
    <thetext>Comment on attachment 157998
Patch

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

&gt; Source/WebKit2/ChangeLog:12
&gt; +        between the Web application and the intent service.
&gt; +        This functionality is already supported by WebKit 1.

I would add a newline before that last line

&gt; Source/WebKit2/ChangeLog:25
&gt; +        before delivering to the DOMWindow.

delivering the intent to the ...

&gt; Source/WebKit2/ChangeLog:27
&gt; +        This functionality is already tested by:

newline after

&gt; Source/WebKit2/UIProcess/WebIntentData.cpp:51
&gt; +    if (m_process &amp;&amp; !m_store.messagePorts.isEmpty()) {
&gt; +        size_t numMessagePorts = m_store.messagePorts.size();
&gt; +        for (size_t i = 0; i &lt; numMessagePorts; ++i)

why look at empty if you are looking at the size() anyway?

&gt; Source/WebKit2/UIProcess/WebProcessProxy.cpp:198
&gt; +    send(Messages::WebProcess::RemoveMessagePortChannel(channelID), 0);

Add comment for what the 0 represents like /* ... */ 0

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleIntent.h:37
&gt; +WK_EXPORT WKBundleIntentRef WKBundleIntentCreate(WKDictionaryRef initDictionary);

im not sure the init adds much value

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.h:482
&gt; -    void deliverIntentToFrame(uint64_t frameID, const IntentData&amp;);
&gt; +    void deliverCoreIntentToFrame(uint64_t frameID, WebCore::Intent*);

Why not keep the name and rename the one with IntentData? or get rid of the one with IntentData</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695130</commentid>
    <comment_count>29</comment_count>
      <attachid>157998</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-08-14 10:33:26 -0700</bug_when>
    <thetext>Comment on attachment 157998
Patch

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

&gt;&gt; Source/WebKit2/WebProcess/WebPage/WebPage.h:482
&gt;&gt; +    void deliverCoreIntentToFrame(uint64_t frameID, WebCore::Intent*);
&gt; 
&gt; Why not keep the name and rename the one with IntentData? or get rid of the one with IntentData

I cannot get rid of the one with IntentData because it maps to an IPC message in WebPage.messages.in. This is also why I did not rename it (less intrusive change).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695204</commentid>
    <comment_count>30</comment_count>
      <attachid>158384</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-08-14 11:42:46 -0700</bug_when>
    <thetext>Created attachment 158384
Patch

Take Kenneth&apos;s feedback into consideration. Note that I did not rename deliverCoreIntentToFrame() (see previous comment).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695631</commentid>
    <comment_count>31</comment_count>
      <attachid>158384</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-14 18:22:19 -0700</bug_when>
    <thetext>Comment on attachment 158384
Patch

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

In Bug 93942, LayoutTestController.cpp is being changed to TestRunner.cpp. I think you need to check the bug for this patch.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleIntent.cpp:40
&gt; +#if ENABLE(WEB_INTENTS)

It seems to me this is a little excessive #if ~ #endif. usage. Can&apos;t you wrap from *#include XXX* to *using namespace* at a time ?

&gt; Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleIntent.cpp:82
&gt; +        wkExtras.set(it-&gt;first, WebString::create(it-&gt;second));

You have mentioned &quot;return xxxx&quot; is added after a newline. But, I think this is trivial stuff.

&gt; Source/WebKit2/WebProcess/InjectedBundle/InjectedBundleIntent.cpp:93
&gt; +    return ImmutableArray::adopt(wkSuggestions);

ditto.

&gt; Source/WebKit2/WebProcess/WebPage/WebFrame.cpp:267
&gt; +void WebFrame::deliverIntent(Intent* intent)

Parameter definition is different from webFrame.h

WebFrame.h
void deliverIntent(WebCore::Intent*);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695732</commentid>
    <comment_count>32</comment_count>
      <attachid>158500</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-08-14 21:56:04 -0700</bug_when>
    <thetext>Created attachment 158500
Patch

Take Gyuyoung nits into account.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695733</commentid>
    <comment_count>33</comment_count>
      <attachid>158500</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-14 22:09:05 -0700</bug_when>
    <thetext>Comment on attachment 158500
Patch

Attachment 158500 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13504460</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695737</commentid>
    <comment_count>34</comment_count>
      <attachid>158502</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-08-14 22:15:43 -0700</bug_when>
    <thetext>Created attachment 158502
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695884</commentid>
    <comment_count>35</comment_count>
      <attachid>158502</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-08-15 03:21:51 -0700</bug_when>
    <thetext>Comment on attachment 158502
Patch

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

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleIntent.cpp:67
&gt; +    RefPtr&lt;Intent&gt; coreIntent = Intent::create(toImpl(action)-&gt;string(),
&gt; +                                               toImpl(type)-&gt;string(),
&gt; +                                               data ? static_cast&lt;SerializedScriptValue*&gt;(toImpl(data)-&gt;internalRepresentation()) : 0,
&gt; +                                               dummyPorts,
&gt; +                                               ec);

We would normally just try to keep this on one line instead of adding weird identation. Using helper variables can make it look slightly nicer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695913</commentid>
    <comment_count>36</comment_count>
      <attachid>158547</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-08-15 05:07:48 -0700</bug_when>
    <thetext>Created attachment 158547
Patch for landing

Fix nit spotted by Kenneth.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695937</commentid>
    <comment_count>37</comment_count>
      <attachid>158547</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-15 06:03:35 -0700</bug_when>
    <thetext>Comment on attachment 158547
Patch for landing

Clearing flags on attachment: 158547

Committed r125670: &lt;http://trac.webkit.org/changeset/125670&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>695940</commentid>
    <comment_count>38</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-15 06:03:45 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155557</attachid>
            <date>2012-07-31 09:04:16 -0700</date>
            <delta_ts>2012-07-31 09:50:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>89072_wk2_messagePorts.patch</filename>
            <type>text/plain</type>
            <size>68383</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKaW5kZXggYTk1ZWJhMS4uNjNjZjk0ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0
cy50eHQKQEAgLTU0LDYgKzU0LDcgQEAgU0VUKFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwog
ICAgICIke1dFQkNPUkVfRElSfS9icmlkZ2UvanNjIgogICAgICIke1dFQkNPUkVfRElSfS9jc3Mi
CiAgICAgIiR7V0VCQ09SRV9ESVJ9L2RvbSIKKyAgICAiJHtXRUJDT1JFX0RJUn0vZG9tL2RlZmF1
bHQiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2VkaXRpbmciCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2hp
c3RvcnkiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2h0bWwiCkBAIC0xNTksNyArMTYwLDYgQEAgU0VU
KFdlYktpdDJfU09VUkNFUwogICAgIFNoYXJlZC9XZWJHcmFwaGljc0NvbnRleHQuY3BwCiAgICAg
U2hhcmVkL1dlYkhpdFRlc3RSZXN1bHQuY3BwCiAgICAgU2hhcmVkL1dlYkltYWdlLmNwcAotICAg
IFNoYXJlZC9XZWJJbnRlbnREYXRhLmNwcAogICAgIFNoYXJlZC9XZWJJbnRlbnRTZXJ2aWNlSW5m
by5jcHAKICAgICBTaGFyZWQvV2ViS2V5Ym9hcmRFdmVudC5jcHAKICAgICBTaGFyZWQvV2ViTGF5
ZXJUcmVlSW5mby5jcHAKQEAgLTI1Myw2ICsyNTMsNyBAQCBTRVQoV2ViS2l0Ml9TT1VSQ0VTCiAg
ICAgVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5jcHAKICAgICBVSVByb2Nlc3MvV2ViSWNvbkRh
dGFiYXNlQ2xpZW50LmNwcAogICAgIFVJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKKyAg
ICBVSVByb2Nlc3MvV2ViSW50ZW50RGF0YS5jcHAKICAgICBVSVByb2Nlc3MvV2ViS2V5VmFsdWVT
dG9yYWdlTWFuYWdlclByb3h5LmNwcAogICAgIFVJUHJvY2Vzcy9XZWJMYXllclRyZWVSZW5kZXJl
ci5jcHAKICAgICBVSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmNwcApAQCAtMzcxLDYgKzM3Miw3
IEBAIFNFVChXZWJLaXQyX1NPVVJDRVMKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlQ2xpZW50LmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3BwCisgICAgV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudC5jcHAKICAgICBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5jcHAKICAgICBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAKICAg
ICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZURpYWdub3N0aWNM
b2dnaW5nQ2xpZW50LmNwcApAQCAtMzkxLDYgKzM5Myw3IEBAIFNFVChXZWJLaXQyX1NPVVJDRVMK
ICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwCiAg
ICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUhpdFRlc3RSZXN1bHQu
Y3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUluc3BlY3Rv
ci5jcHAKKyAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50
LmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnRS
ZXF1ZXN0LmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVO
YXZpZ2F0aW9uQWN0aW9uLmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVOb2RlSGFuZGxlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGZlMDJiN2IuLmNkOTM2MDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMjYgQEAKKzIwMTItMDctMzEgIENocmlzdG9waGUgRHVtZXog
IDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKworICAgICAgICBbV0syXSBBZGQgc3VwcG9y
dCBmb3IgV2ViIEludGVudHMgTWVzc2FnZVBvcnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTA3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBXZWJJbnRlbnRzIE1lc3NhZ2VQ
b3J0cyBpbiBXZWJLaXQyLgorICAgICAgICBNZXNzYWdlUG9ydHMgY2FuIGJlIHBhc3NlZCB3aXRo
IGEgV2ViIEludGVudCBpbgorICAgICAgICBvcmRlciB0byBvcGVuIGEgZGlyZWN0IGNvbW11bmlj
YXRpb24gY2hhbm5lbAorICAgICAgICBiZXR3ZWVuIHRoZSBXZWIgYXBwbGljYXRpb24gYW5kIHRo
ZSBpbnRlbnQgc2VydmljZS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBuZXcg
SW5qZWN0ZWRCdW5kbGVJbnRlbnQKKyAgICAgICAgY2xhc3Mgd2hpY2ggd3JhcHMgYSBXZWJDb3Jl
OjpJbnRlbnQuIFRoaXMgd2F5CisgICAgICAgIGluZm9ybWF0aW9uIHJlZ2FyZGluZyB0aGUgTWVz
c2FnZVBvcnRzIGluIGEgV2ViCisgICAgICAgIEludGVudCBpcyBrZXB0IHdoZW4gdXNpbmcgYW4g
aW5qZWN0ZWQgYnVuZGxlLgorCisgICAgICAgIEZvciB0aGUgVUlQcm9jZXNzLCBXZWJJbnRlbnRE
YXRhIG5vdyBjYXJyaWVzCisgICAgICAgIGlkZW50aWZpZXJzIGZvciB0aGUgTWVzc2FnZVBvcnRz
IHdoaWNoIGNhbiBnbyBvdmVyCisgICAgICAgIElQQy4gVGhvc2UgaWRlbnRpZmllcnMgbWFwIHRv
IGFjdHVhbCBNZXNzYWdlUG9ydHMKKyAgICAgICAgc3RvcmVkIGluIHRoZSBXZWIgcHJvY2Vzcy4g
VGhpcyB3YXksIHdoZW4gdGhlIFVJCisgICAgICAgIGRlbGl2ZXJzIGFuIGludGVudCB0byBhIGZy
YW1lLCB3ZSBjYW4gZ2V0IGJhY2sgdGhlCisgICAgICAgIGNvcnJlc3BvbmRpbmcgTWVzc2FnZVBv
cnRzIGZyb20gdGhlIFdlYiBwcm9jZXNzCisgICAgICAgIGJlZm9yZSBkZWxpdmVyaW5nIHRvIHRo
ZSBET01XaW5kb3cuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVt
YWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0Jhc2UuaDoKKyAgICAg
ICAgKiBTaGFyZWQvQVBJT2JqZWN0Lmg6CisgICAgICAgICogU2hhcmVkL0ludGVudERhdGEuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpJbnRlbnREYXRhOjpJbnRlbnREYXRhKToKKyAgICAgICAgKFdl
YktpdDo6SW50ZW50RGF0YTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6SW50ZW50RGF0YTo6
ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvSW50ZW50RGF0YS5oOgorICAgICAgICAoSW50ZW50
RGF0YSk6CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
V0tJbnRlbnREYXRhLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tJbnRlbnREYXRh
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkludGVudERhdGEuY3BwOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSW50ZW50RGF0YS5jcHAuCisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJJbnRlbnREYXRhOjpXZWJJbnRlbnREYXRhKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSW50ZW50RGF0YTo6fldlYkludGVudERhdGEpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnRlbnREYXRhOjpkYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW50ZW50RGF0
YTo6c3VnZ2VzdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnRlbnREYXRhOjpleHRyYSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkludGVudERhdGE6OmV4dHJhcyk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYkludGVudERhdGEuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYkludGVudERhdGEuaC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJJbnRlbnRE
YXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW50ZW50RGF0YTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViSW50ZW50RGF0YTo6YWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW50
ZW50RGF0YTo6cGF5bG9hZFR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnRlbnREYXRhOjpz
ZXJ2aWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW50ZW50RGF0YTo6c3RvcmUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJbnRlbnREYXRhOjp0eXBlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRSZWNlaXZl
SW50ZW50Rm9yRnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnJlbW92ZU1lc3NhZ2VQb3J0Q2hh
bm5lbCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuaDoKKyAgICAgICAgKFdlYlByb2Nlc3NQcm94eSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUFQSUNhc3QuaDoKKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUlu
dGVudC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0lu
dGVudERhdGEuY3BwLgorICAgICAgICAoV0tCdW5kbGVJbnRlbnRHZXRUeXBlSUQpOgorICAgICAg
ICAoV0tCdW5kbGVJbnRlbnRDcmVhdGUpOgorICAgICAgICAoV0tCdW5kbGVJbnRlbnRDb3B5QWN0
aW9uKToKKyAgICAgICAgKFdLQnVuZGxlSW50ZW50Q29weVR5cGUpOgorICAgICAgICAoV0tCdW5k
bGVJbnRlbnRDb3B5U2VydmljZSk6CisgICAgICAgIChXS0J1bmRsZUludGVudENvcHlTdWdnZXN0
aW9ucyk6CisgICAgICAgIChXS0J1bmRsZUludGVudENvcHlFeHRyYSk6CisgICAgICAgIChXS0J1
bmRsZUludGVudENvcHlFeHRyYXMpOgorICAgICAgICAoV0tCdW5kbGVJbnRlbnRNZXNzYWdlUG9y
dENvdW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlSW50ZW50Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S0ludGVudERhdGEuaC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlSW50ZW50UmVxdWVzdC5jcHA6CisgICAgICAgIChXS0J1bmRsZUludGVudFJlcXVl
c3RDb3B5SW50ZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlSW50ZW50UmVxdWVzdC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdLQnVuZGxlUGFnZURlbGl2
ZXJJbnRlbnRUb0ZyYW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVJbnRlbnQuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYkludGVudERhdGEuY3BwLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktp
dDo6SW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVj
dGVkQnVuZGxlSW50ZW50OjpJbmplY3RlZEJ1bmRsZUludGVudCk6CisgICAgICAgIChXZWJLaXQ6
OkluamVjdGVkQnVuZGxlSW50ZW50OjphY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJbmplY3Rl
ZEJ1bmRsZUludGVudDo6cGF5bG9hZFR5cGUpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1
bmRsZUludGVudDo6c2VydmljZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlSW50
ZW50OjpkYXRhKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OmV4dHJh
KToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OmV4dHJhcyk6CisgICAg
ICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlSW50ZW50OjpzdWdnZXN0aW9ucyk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudC5oOiBSZW5h
bWVkIGZyb20gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkludGVudERhdGEuaC4KKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgIChJbmplY3RlZEJ1bmRsZUludGVudCk6CisgICAgICAgIChXZWJL
aXQ6OkluamVjdGVkQnVuZGxlSW50ZW50Ojpjb3JlSW50ZW50KToKKyAgICAgICAgKFdlYktpdDo6
SW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OnR5cGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6SW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0OjppbnRlbnQpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0Lmg6CisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJGcmFtZTo6ZGVsaXZlckludGVudCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJGcmFtZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGVsaXZlckNv
cmVJbnRlbnRUb0ZyYW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJQYWdlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjphZGRN
ZXNzYWdlUG9ydENoYW5uZWwpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzczo6bWVzc2FnZVBvcnRDaGFubmVsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzczo6cmVtb3ZlTWVzc2FnZVBvcnRDaGFubmVsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaDoKKyAgICAgICAgKFdlYlByb2Nlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKwogMjAxMi0wNy0zMCAgSHVhbmcgRG9uZ3N1bmcgIDxs
dXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBbVGV4bWFwXSBSZW1vdmUgdGhlIGJh
Y2tpbmcgc3RvcmUgYWZ0ZXIgJ3N0eWxlLnZpc2liaWxpdHknIGZvciBhbiBlbGVtZW50IHNldHMg
J2hpZGRlbicuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFt
IGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBlN2E2NGYwLi5lZDhj
MDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBi
L1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTQ2OSw4ICs0NjksNiBAQCB3
ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJIaXRUZXN0UmVz
dWx0LmggXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJJbWFnZS5jcHAgXAogCVNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJJbWFnZS5oIFwKLQlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSW50
ZW50RGF0YS5jcHAgXAotCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJJbnRlbnREYXRhLmggXAog
CVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJJbnRlbnRTZXJ2aWNlSW5mby5jcHAgXAogCVNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJJbnRlbnRTZXJ2aWNlSW5mby5oIFwKIAlTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViS2V5Ym9hcmRFdmVudC5jcHAgXApAQCAtODcxLDYgKzg2OSw4IEBAIHdlYmtp
dDJfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkljb25EYXRhYmFz
ZUNsaWVudC5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHku
Y3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaCBcCisJ
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkludGVudERhdGEuY3BwIFwKKwlTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViSW50ZW50RGF0YS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlclByb3h5LmNwcCBcCiAJU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYktleVZhbHVlU3RvcmFnZU1hbmFnZXJQcm94eS5oIFwKIAlTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eS5jcHAgXApAQCAtOTY0LDYg
Kzk2NCw4IEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUluaXRpYWxpemUuaCBcCiAJU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUluc3BlY3Rvci5j
cHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVJbnNwZWN0b3IuaCBcCisJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudC5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnQuaCBcCiAJU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudFJlcXVlc3Qu
Y3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlSW50ZW50UmVxdWVzdC5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlTm9kZUhhbmRsZS5jcHAgXApAQCAtOTk4LDYgKzEwMDAs
OCBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uaCBcCiAJU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RS
ZXN1bHQuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50LmNwcCBcCisJU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudC5oIFwKIAlT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50
ZW50UmVxdWVzdC5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0LmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKaW5kZXggNjg1NGVjYy4uYTZhOGJkNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaApAQCAtMTM1LDYgKzEzNSw3IEBAIHR5
cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uKiBXS0J1
bmRsZURPTVdpbmRvd0V4dGVuc2lvCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRs
ZUZyYW1lKiBXS0J1bmRsZUZyYW1lUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tC
dW5kbGVIaXRUZXN0UmVzdWx0KiBXS0J1bmRsZUhpdFRlc3RSZXN1bHRSZWY7CiB0eXBlZGVmIGNv
bnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRsZUluc3BlY3RvciogV0tCdW5kbGVJbnNwZWN0b3JSZWY7
Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRsZUludGVudCogV0tCdW5kbGVJbnRl
bnRSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRsZUludGVudFJlcXVlc3Qq
IFdLQnVuZGxlSW50ZW50UmVxdWVzdFJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdL
QnVuZGxlTmF2aWdhdGlvbkFjdGlvbiogV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uUmVmOwogdHlw
ZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVOb2RlSGFuZGxlKiBXS0J1bmRsZU5vZGVI
YW5kbGVSZWY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKaW5kZXggOGU0ZDI5My4uNzA4ZWZm
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaApAQCAtMTE3LDYgKzExNyw3IEBAIHB1Ymxp
YzoKICAgICAgICAgVHlwZUJ1bmRsZUZyYW1lLAogICAgICAgICBUeXBlQnVuZGxlSGl0VGVzdFJl
c3VsdCwKICAgICAgICAgVHlwZUJ1bmRsZUluc3BlY3RvciwKKyAgICAgICAgVHlwZUJ1bmRsZUlu
dGVudCwKICAgICAgICAgVHlwZUJ1bmRsZUludGVudFJlcXVlc3QsCiAgICAgICAgIFR5cGVCdW5k
bGVOYXZpZ2F0aW9uQWN0aW9uLAogICAgICAgICBUeXBlQnVuZGxlTm9kZUhhbmRsZSwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9JbnRlbnREYXRhLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9JbnRlbnREYXRhLmNwcAppbmRleCA0OTk1YjJlLi40MTA3ODc0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW50ZW50RGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL0ludGVudERhdGEuY3BwCkBAIC0zMSw3ICszMSwxMCBAQAogI2luY2x1ZGUg
IkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJXZWJD
b3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9JbnRlbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01lc3NhZ2VQb3J0Q2hhbm5lbC5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuaD4KIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTQ1LDYgKzQ4LDEyIEBAIEludGVudERhdGE6Oklu
dGVudERhdGEoSW50ZW50KiBjb3JlSW50ZW50KQogICAgICwgZXh0cmFzKGNvcmVJbnRlbnQtPmV4
dHJhcygpKQogICAgICwgc3VnZ2VzdGlvbnMoY29yZUludGVudC0+c3VnZ2VzdGlvbnMoKSkKIHsK
KyAgICBNZXNzYWdlUG9ydENoYW5uZWxBcnJheSogY29yZU1lc3NhZ2VQb3J0cyA9IGNvcmVJbnRl
bnQtPm1lc3NhZ2VQb3J0cygpOworICAgIGlmIChjb3JlTWVzc2FnZVBvcnRzKSB7CisgICAgICAg
IHNpemVfdCBudW1NZXNzYWdlUG9ydHMgPSBjb3JlTWVzc2FnZVBvcnRzLT5zaXplKCk7CisgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtTWVzc2FnZVBvcnRzOyArK2kpCisgICAgICAg
ICAgICBtZXNzYWdlUG9ydHMuYXBwZW5kKFdlYlByb2Nlc3M6OnNoYXJlZCgpLmFkZE1lc3NhZ2VQ
b3J0Q2hhbm5lbCgoKmNvcmVNZXNzYWdlUG9ydHMpW2ldLT5jaGFubmVsKCkpKTsKKyAgICB9CiB9
CiAKIHZvaWQgSW50ZW50RGF0YTo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciogZW5j
b2RlcikgY29uc3QKQEAgLTU1LDYgKzY0LDcgQEAgdm9pZCBJbnRlbnREYXRhOjplbmNvZGUoQ29y
ZUlQQzo6QXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXItPmVuY29k
ZShDb3JlSVBDOjpEYXRhUmVmZXJlbmNlKGRhdGEpKTsKICAgICBlbmNvZGVyLT5lbmNvZGUoZXh0
cmFzKTsKICAgICBlbmNvZGVyLT5lbmNvZGUoc3VnZ2VzdGlvbnMpOworICAgIGVuY29kZXItPmVu
Y29kZShtZXNzYWdlUG9ydHMpOwogfQogCiBib29sIEludGVudERhdGE6OmRlY29kZShDb3JlSVBD
OjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIEludGVudERhdGEmIGludGVudERhdGEpCkBAIC03
Myw2ICs4Myw4IEBAIGJvb2wgSW50ZW50RGF0YTo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVj
b2RlciogZGVjb2RlciwgSW50ZW50RGF0YSYgaW50ZW50RGF0CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBpZiAoIWRlY29kZXItPmRlY29kZShpbnRlbnREYXRhLnN1Z2dlc3Rpb25zKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGludGVudERhdGEu
bWVzc2FnZVBvcnRzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIHRydWU7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW50ZW50RGF0YS5oIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL0ludGVudERhdGEuaAppbmRleCA5NmUyZDlmLi5lODQzNWMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW50ZW50RGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9JbnRlbnREYXRhLmgKQEAgLTI5LDcgKzI5LDggQEAKICNpZiBFTkFC
TEUoV0VCX0lOVEVOVFMpCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKLSNpbmNsdWRlICJHZW5l
cmljQ2FsbGJhY2suaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KKyNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2Ug
Q29yZUlQQyB7CkBAIC01Niw2ICs1Nyw3IEBAIHN0cnVjdCBJbnRlbnREYXRhIHsKICAgICBWZWN0
b3I8dWludDhfdD4gZGF0YTsKICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBleHRyYXM7CiAg
ICAgVmVjdG9yPFdlYkNvcmU6OktVUkw+IHN1Z2dlc3Rpb25zOworICAgIFZlY3Rvcjx1aW50NjRf
dD4gbWVzc2FnZVBvcnRzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSW50ZW50RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViSW50ZW50RGF0YS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDk2MTI4ZGIuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkludGVudERh
dGEuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkludGVudERhdGEuaCIKLQotI2lm
IEVOQUJMRShXRUJfSU5URU5UUykKLQotI2luY2x1ZGUgIkltbXV0YWJsZUFycmF5LmgiCi0jaW5j
bHVkZSAiSW1tdXRhYmxlRGljdGlvbmFyeS5oIgotI2luY2x1ZGUgIldlYlN0cmluZy5oIgotI2lu
Y2x1ZGUgIldlYlVSTC5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotV2ViSW50ZW50RGF0YTo6
V2ViSW50ZW50RGF0YShjb25zdCBJbnRlbnREYXRhJiBzdG9yZSkKLSAgICA6IG1fc3RvcmUoc3Rv
cmUpCi17Ci19Ci0KLVBhc3NSZWZQdHI8V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlPiBXZWJJbnRl
bnREYXRhOjpkYXRhKCkgY29uc3QKLXsKLSAgICBWZWN0b3I8dWludDhfdD4gZGF0YUNvcHkgPSBt
X3N0b3JlLmRhdGE7Ci0gICAgcmV0dXJuIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQo
ZGF0YUNvcHkpOwotfQotCi1QYXNzUmVmUHRyPEltbXV0YWJsZUFycmF5PiBXZWJJbnRlbnREYXRh
OjpzdWdnZXN0aW9ucygpIGNvbnN0Ci17Ci0gICAgY29uc3Qgc2l6ZV90IG51bVN1Z2dlc3Rpb25z
ID0gbV9zdG9yZS5zdWdnZXN0aW9ucy5zaXplKCk7Ci0gICAgVmVjdG9yPFJlZlB0cjxBUElPYmpl
Y3Q+ID4gd2tTdWdnZXN0aW9ucyhudW1TdWdnZXN0aW9ucyk7Ci0gICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG51bVN1Z2dlc3Rpb25zOyArK2kpCi0gICAgICAgIHdrU3VnZ2VzdGlvbnNbaV0g
PSBXZWJVUkw6OmNyZWF0ZShtX3N0b3JlLnN1Z2dlc3Rpb25zW2ldKTsKLSAgICByZXR1cm4gSW1t
dXRhYmxlQXJyYXk6OmFkb3B0KHdrU3VnZ2VzdGlvbnMpOwotfQotCi1TdHJpbmcgV2ViSW50ZW50
RGF0YTo6ZXh0cmEoY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc3Rv
cmUuZXh0cmFzLmdldChrZXkpOwotfQotCi1QYXNzUmVmUHRyPEltbXV0YWJsZURpY3Rpb25hcnk+
IFdlYkludGVudERhdGE6OmV4dHJhcygpIGNvbnN0Ci17Ci0gICAgSW1tdXRhYmxlRGljdGlvbmFy
eTo6TWFwVHlwZSB3a0V4dHJhczsKLSAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPjo6Y29uc3Rf
aXRlcmF0b3IgZW5kID0gbV9zdG9yZS5leHRyYXMuZW5kKCk7Ci0gICAgZm9yIChIYXNoTWFwPFN0
cmluZywgU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3N0b3JlLmV4dHJhcy5iZWdpbigp
OyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIHdrRXh0cmFzLnNldChpdC0+Zmlyc3QsIFdlYlN0
cmluZzo6Y3JlYXRlKGl0LT5zZWNvbmQpKTsKLSAgICByZXR1cm4gSW1tdXRhYmxlRGljdGlvbmFy
eTo6YWRvcHQod2tFeHRyYXMpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlm
IC8vIEVOQUJMRShXRUJfSU5URU5UUykKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYkludGVudERhdGEuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJJbnRlbnREYXRh
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlY2Y0YWUuLjAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkludGVudERhdGEuaAorKysgL2Rldi9udWxsCkBAIC0x
LDcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24u
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViSW50ZW50RGF0YV9o
Ci0jZGVmaW5lIFdlYkludGVudERhdGFfaAotCi0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotCi0j
aW5jbHVkZSAiQVBJT2JqZWN0LmgiCi0jaW5jbHVkZSAiSW50ZW50RGF0YS5oIgotI2luY2x1ZGUg
IldlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJJbnRlbnREYXRhIDogcHVibGljIEFQ
SU9iamVjdCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0IFR5cGUgQVBJVHlwZSA9IFR5cGVJ
bnRlbnREYXRhOwotCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViSW50ZW50RGF0YT4gY3JlYXRl
KGNvbnN0IEludGVudERhdGEmIHN0b3JlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBXZWJJbnRlbnREYXRhKHN0b3JlKSk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+V2ViSW50
ZW50RGF0YSgpIHsgfQotCi0gICAgY29uc3QgU3RyaW5nJiBhY3Rpb24oKSBjb25zdCB7IHJldHVy
biBtX3N0b3JlLmFjdGlvbjsgfQotICAgIGNvbnN0IFN0cmluZyYgcGF5bG9hZFR5cGUoKSBjb25z
dCB7IHJldHVybiBtX3N0b3JlLnR5cGU7IH0KLSAgICBjb25zdCBXZWJDb3JlOjpLVVJMJiBzZXJ2
aWNlKCkgY29uc3QgeyByZXR1cm4gbV9zdG9yZS5zZXJ2aWNlOyB9Ci0gICAgUGFzc1JlZlB0cjxX
ZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEoKSBjb25zdDsKLSAgICBTdHJpbmcgZXh0cmEo
Y29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8SW1tdXRhYmxlRGljdGlv
bmFyeT4gZXh0cmFzKCkgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4gc3Vn
Z2VzdGlvbnMoKSBjb25zdDsKLQotICAgIGNvbnN0IEludGVudERhdGEmIHN0b3JlKCkgY29uc3Qg
eyByZXR1cm4gbV9zdG9yZTsgfQotCi1wcml2YXRlOgotICAgIFdlYkludGVudERhdGEoY29uc3Qg
SW50ZW50RGF0YSYpOwotCi0gICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBB
UElUeXBlOyB9Ci0KLSAgICBJbnRlbnREYXRhIG1fc3RvcmU7Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJfSU5URU5UUykKLQotI2VuZGlmIC8vIFdl
YkludGVudERhdGFfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaSBiL1Nv
dXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKaW5kZXggZWRlYTljNS4uMjA3ZDM0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQu
cHJpCkBAIC0xMTIsNyArMTEyLDYgQEAgSEVBREVSUyArPSBcCiAgICAgU2hhcmVkL1dlYkdyYXBo
aWNzQ29udGV4dC5oIFwKICAgICBTaGFyZWQvV2ViSGl0VGVzdFJlc3VsdC5oIFwKICAgICBTaGFy
ZWQvV2ViSW1hZ2UuaCBcCi0gICAgU2hhcmVkL1dlYkludGVudERhdGEuaCBcCiAgICAgU2hhcmVk
L1dlYkludGVudFNlcnZpY2VJbmZvLmggXAogICAgIFNoYXJlZC9XZWJMYXllclRyZWVJbmZvLmgg
XAogICAgIFNoYXJlZC9XZWJOYXZpZ2F0aW9uRGF0YVN0b3JlLmggXApAQCAtMjY3LDYgKzI2Niw3
IEBAIEhFQURFUlMgKz0gXAogICAgIFVJUHJvY2Vzcy9XZWJJY29uRGF0YWJhc2UuaCBcCiAgICAg
VUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZUNsaWVudC5oIFwKICAgICBVSVByb2Nlc3MvV2ViSW5z
cGVjdG9yUHJveHkuaCBcCisgICAgVUlQcm9jZXNzL1dlYkludGVudERhdGEuaCBcCiAgICAgVUlQ
cm9jZXNzL1dlYktleVZhbHVlU3RvcmFnZU1hbmFnZXJQcm94eS5oIFwKICAgICBVSVByb2Nlc3Mv
V2ViTGF5ZXJUcmVlUmVuZGVyZXIuaCBcCiAgICAgVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5o
IFwKQEAgLTMxOSw2ICszMTksNyBAQCBIRUFERVJTICs9IFwKICAgICBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQmFja0ZvcndhcmRMaXN0LmggXAogICAgIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmggXAog
ICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVIaXRUZXN0UmVzdWx0
LmggXAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnQu
aCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudFJl
cXVlc3QuaCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU5h
dmlnYXRpb25BY3Rpb24uaCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZU5vZGVIYW5kbGUuaCBcCkBAIC0zMzIsNiArMzMzLDcgQEAgSEVBREVSUyArPSBcCiAg
ICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUNsaWVudC5oIFwKICAg
ICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5z
aW9uLmggXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRU
ZXN0UmVzdWx0LmggXAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVJbnRlbnQuaCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZUludGVudFJlcXVlc3QuaCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uaCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5oIFwKQEAgLTQ5NSw3ICs0OTcs
NiBAQCBTT1VSQ0VTICs9IFwKICAgICBTaGFyZWQvV2ViSGl0VGVzdFJlc3VsdC5jcHAgXAogICAg
IFNoYXJlZC9XZWJLZXlib2FyZEV2ZW50LmNwcCBcCiAgICAgU2hhcmVkL1dlYkltYWdlLmNwcCBc
Ci0gICAgU2hhcmVkL1dlYkludGVudERhdGEuY3BwIFwKICAgICBTaGFyZWQvV2ViSW50ZW50U2Vy
dmljZUluZm8uY3BwIFwKICAgICBTaGFyZWQvV2ViTGF5ZXJUcmVlSW5mby5jcHAgXAogICAgIFNo
YXJlZC9XZWJNb3VzZUV2ZW50LmNwcCBcCkBAIC02MzgsNiArNjM5LDcgQEAgU09VUkNFUyArPSBc
CiAgICAgVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5jcHAgXAogICAgIFVJUHJvY2Vzcy9XZWJJ
Y29uRGF0YWJhc2VDbGllbnQuY3BwIFwKICAgICBVSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHku
Y3BwIFwKKyAgICBVSVByb2Nlc3MvV2ViSW50ZW50RGF0YS5jcHAgXAogICAgIFVJUHJvY2Vzcy9X
ZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUHJveHkuY3BwIFwKICAgICBVSVByb2Nlc3MvV2ViTGF5
ZXJUcmVlUmVuZGVyZXIuY3BwIFwKICAgICBVSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmNwcCBc
CkBAIC03MDMsNiArNzA1LDcgQEAgU09VUkNFUyArPSBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUhpdFRlc3RSZXN1bHQuY3BwIFwKICAgICBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW5zcGVjdG9yLmNwcCBcCisgICAgV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudC5jcHAgXAogICAgIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnRSZXF1ZXN0LmNwcCBcCiAg
ICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU5hdmlnYXRpb25BY3Rp
b24uY3BwIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlTm9k
ZUhhbmRsZS5jcHAgXApAQCAtNzE4LDYgKzcyMSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwIFwKICAgICBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmNw
cCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RS
ZXN1bHQuY3BwIFwKKyAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
SW50ZW50LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZUludGVudFJlcXVlc3QuY3BwIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAgXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0ludGVudERhdGEuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLSW50ZW50RGF0YS5jcHAKaW5kZXggN2E5MmRi
NS4uYjUxMzc1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
SW50ZW50RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLSW50
ZW50RGF0YS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNp
bmNsdWRlICJXS0RpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJXS1N0cmluZy5oIgorI2luY2x1ZGUg
IldlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogCiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQog
I2luY2x1ZGUgIldlYkludGVudERhdGEuaCIKQEAgLTQ3LDI3ICs0OCw2IEBAIFdLVHlwZUlEIFdL
SW50ZW50RGF0YUdldFR5cGVJRCgpCiAjZW5kaWYKIH0KIAotV0tJbnRlbnREYXRhUmVmIFdLSW50
ZW50RGF0YUNyZWF0ZShXS0RpY3Rpb25hcnlSZWYgaW5pdERpY3Rpb25hcnlSZWYpCi17Ci0jaWYg
RU5BQkxFKFdFQl9JTlRFTlRTKQotICAgIEludGVudERhdGEgaW50ZW50RGF0YTsKLSAgICBXS1N0
cmluZ1JlZiBhY3Rpb24gPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tEaWN0aW9uYXJ5R2V0
SXRlbUZvcktleShpbml0RGljdGlvbmFyeVJlZiwgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoImFjdGlvbiIpKSk7Ci0gICAgQVNTRVJUKGFjdGlvbik7Ci0gICAgaW50ZW50RGF0YS5hY3Rp
b24gPSB0b0ltcGwoYWN0aW9uKS0+c3RyaW5nKCk7Ci0gICAgV0tTdHJpbmdSZWYgdHlwZSA9IHN0
YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KGluaXREaWN0
aW9uYXJ5UmVmLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygidHlwZSIpKSk7Ci0gICAg
QVNTRVJUKHR5cGUpOwotICAgIGludGVudERhdGEudHlwZSA9IHRvSW1wbCh0eXBlKS0+c3RyaW5n
KCk7Ci0gICAgV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYgZGF0YSA9IHN0YXRpY19jYXN0PFdL
U2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KGluaXRE
aWN0aW9uYXJ5UmVmLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiZGF0YSIpKSk7Ci0g
ICAgaWYgKGRhdGEpCi0gICAgICAgIGludGVudERhdGEuZGF0YSA9IHRvSW1wbChkYXRhKS0+ZGF0
YVJlZmVyZW5jZSgpLnZlY3RvcigpOwotCi0gICAgUmVmUHRyPFdlYkludGVudERhdGE+IHdlYklu
dGVudERhdGEgPSBXZWJJbnRlbnREYXRhOjpjcmVhdGUoaW50ZW50RGF0YSk7Ci0gICAgcmV0dXJu
IHRvQVBJKHdlYkludGVudERhdGEucmVsZWFzZSgpLmxlYWtSZWYoKSk7Ci0jZWxzZQotICAgIHJl
dHVybiAwOwotI2VuZGlmCi19Ci0KIFdLU3RyaW5nUmVmIFdLSW50ZW50RGF0YUNvcHlBY3Rpb24o
V0tJbnRlbnREYXRhUmVmIGludGVudFJlZikKIHsKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnRlbnREYXRhLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnRlbnREYXRhLmgKaW5kZXggMWY4
MDllYy4uOGZjYjg2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLSW50ZW50RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0lu
dGVudERhdGEuaApAQCAtMzQsOCArMzQsNiBAQCBleHRlcm4gIkMiIHsKIAogV0tfRVhQT1JUIFdL
VHlwZUlEIFdLSW50ZW50RGF0YUdldFR5cGVJRCgpOwogCi1XS19FWFBPUlQgV0tJbnRlbnREYXRh
UmVmIFdLSW50ZW50RGF0YUNyZWF0ZShXS0RpY3Rpb25hcnlSZWYgaW5pdERpY3Rpb25hcnkpOwot
CiBXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tJbnRlbnREYXRhQ29weUFjdGlvbihXS0ludGVudERh
dGFSZWYgaW50ZW50UmVmKTsKIFdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0ludGVudERhdGFDb3B5
VHlwZShXS0ludGVudERhdGFSZWYgaW50ZW50UmVmKTsKIFdLX0VYUE9SVCBXS1VSTFJlZiBXS0lu
dGVudERhdGFDb3B5U2VydmljZShXS0ludGVudERhdGFSZWYgaW50ZW50UmVmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnRlbnREYXRhLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnRlbnREYXRhLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5kYzE5MGQ3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkludGVudERhdGEuY3BwCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJJbnRlbnREYXRhLmgi
CisKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisKKyNpbmNsdWRlICJJbW11dGFibGVBcnJheS5o
IgorI2luY2x1ZGUgIkltbXV0YWJsZURpY3Rpb25hcnkuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNz
UHJveHkuaCIKKyNpbmNsdWRlICJXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRl
ICJXZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJXZWJVUkwuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK1dlYkludGVudERhdGE6OldlYkludGVudERhdGEoY29uc3QgSW50ZW50RGF0YSYgc3RvcmUs
IFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcykKKyAgICA6IG1fc3RvcmUoc3RvcmUpCisgICAgLCBt
X3Byb2Nlc3MocHJvY2VzcykKK3sKK30KKworV2ViSW50ZW50RGF0YTo6fldlYkludGVudERhdGEo
KQoreworICAgIC8vIFJlbW92ZSBNZXNzYWdlUG9ydENoYW5uZWxzIGZyb20gV2ViUHJvY2Vzcy4K
KyAgICBpZiAobV9wcm9jZXNzICYmICFtX3N0b3JlLm1lc3NhZ2VQb3J0cy5pc0VtcHR5KCkpIHsK
KyAgICAgICAgc2l6ZV90IG51bU1lc3NhZ2VQb3J0cyA9IG1fc3RvcmUubWVzc2FnZVBvcnRzLnNp
emUoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1NZXNzYWdlUG9ydHM7ICsr
aSkKKyAgICAgICAgICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVBvcnRDaGFubmVsKG1fc3Rv
cmUubWVzc2FnZVBvcnRzW2ldKTsKKyAgICB9Cit9CisKK1Bhc3NSZWZQdHI8V2ViU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBXZWJJbnRlbnREYXRhOjpkYXRhKCkgY29uc3QKK3sKKyAgICBWZWN0b3I8
dWludDhfdD4gZGF0YUNvcHkgPSBtX3N0b3JlLmRhdGE7CisgICAgcmV0dXJuIFdlYlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6YWRvcHQoZGF0YUNvcHkpOworfQorCitQYXNzUmVmUHRyPEltbXV0YWJs
ZUFycmF5PiBXZWJJbnRlbnREYXRhOjpzdWdnZXN0aW9ucygpIGNvbnN0Cit7CisgICAgY29uc3Qg
c2l6ZV90IG51bVN1Z2dlc3Rpb25zID0gbV9zdG9yZS5zdWdnZXN0aW9ucy5zaXplKCk7CisgICAg
VmVjdG9yPFJlZlB0cjxBUElPYmplY3Q+ID4gd2tTdWdnZXN0aW9ucyhudW1TdWdnZXN0aW9ucyk7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVN1Z2dlc3Rpb25zOyArK2kpCisgICAg
ICAgIHdrU3VnZ2VzdGlvbnNbaV0gPSBXZWJVUkw6OmNyZWF0ZShtX3N0b3JlLnN1Z2dlc3Rpb25z
W2ldKTsKKyAgICByZXR1cm4gSW1tdXRhYmxlQXJyYXk6OmFkb3B0KHdrU3VnZ2VzdGlvbnMpOwor
fQorCitTdHJpbmcgV2ViSW50ZW50RGF0YTo6ZXh0cmEoY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fc3RvcmUuZXh0cmFzLmdldChrZXkpOworfQorCitQYXNzUmVmUHRy
PEltbXV0YWJsZURpY3Rpb25hcnk+IFdlYkludGVudERhdGE6OmV4dHJhcygpIGNvbnN0Cit7Cisg
ICAgSW1tdXRhYmxlRGljdGlvbmFyeTo6TWFwVHlwZSB3a0V4dHJhczsKKyAgICBIYXNoTWFwPFN0
cmluZywgU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9zdG9yZS5leHRyYXMuZW5kKCk7
CisgICAgZm9yIChIYXNoTWFwPFN0cmluZywgU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBt
X3N0b3JlLmV4dHJhcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgIHdrRXh0cmFz
LnNldChpdC0+Zmlyc3QsIFdlYlN0cmluZzo6Y3JlYXRlKGl0LT5zZWNvbmQpKTsKKyAgICByZXR1
cm4gSW1tdXRhYmxlRGljdGlvbmFyeTo6YWRvcHQod2tFeHRyYXMpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfSU5URU5UUykKKwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkludGVudERhdGEuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJJbnRlbnREYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uOWQ1OWY5MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJJbnRlbnREYXRhLmgKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBXZWJJbnRlbnREYXRhX2gKKyNkZWZpbmUgV2ViSW50ZW50RGF0YV9oCisKKyNp
ZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRl
ICJJbnRlbnREYXRhLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9LVVJMLmg+CisjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEltbXV0YWJsZUFy
cmF5OworY2xhc3MgSW1tdXRhYmxlRGljdGlvbmFyeTsKK2NsYXNzIFdlYlByb2Nlc3NQcm94eTsK
K2NsYXNzIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKKworY2xhc3MgV2ViSW50ZW50RGF0YSA6
IHB1YmxpYyBBUElPYmplY3QgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCBUeXBlIEFQSVR5
cGUgPSBUeXBlSW50ZW50RGF0YTsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkludGVudERh
dGE+IGNyZWF0ZShjb25zdCBJbnRlbnREYXRhJiBzdG9yZSwgV2ViUHJvY2Vzc1Byb3h5KiBwcm9j
ZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJJbnRlbnREYXRhKHN0
b3JlLCBwcm9jZXNzKSk7CisgICAgfQorCisgICAgdmlydHVhbCB+V2ViSW50ZW50RGF0YSgpOwor
CisgICAgY29uc3QgU3RyaW5nJiBhY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3N0b3JlLmFjdGlv
bjsgfQorICAgIGNvbnN0IFN0cmluZyYgcGF5bG9hZFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3N0
b3JlLnR5cGU7IH0KKyAgICBjb25zdCBXZWJDb3JlOjpLVVJMJiBzZXJ2aWNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdG9yZS5zZXJ2aWNlOyB9CisgICAgUGFzc1JlZlB0cjxXZWJTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IGRhdGEoKSBjb25zdDsKKyAgICBTdHJpbmcgZXh0cmEoY29uc3QgU3RyaW5nJiBr
ZXkpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4gZXh0cmFzKCkg
Y29uc3Q7CisgICAgUGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4gc3VnZ2VzdGlvbnMoKSBjb25z
dDsKKworICAgIGNvbnN0IEludGVudERhdGEmIHN0b3JlKCkgY29uc3QgeyByZXR1cm4gbV9zdG9y
ZTsgfQorCitwcml2YXRlOgorICAgIFdlYkludGVudERhdGEoY29uc3QgSW50ZW50RGF0YSYsIFdl
YlByb2Nlc3NQcm94eSopOworCisgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVy
biBBUElUeXBlOyB9CisKKyAgICBJbnRlbnREYXRhIG1fc3RvcmU7CisgICAgV2ViUHJvY2Vzc1By
b3h5KiBtX3Byb2Nlc3M7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IEVOQUJMRShXRUJfSU5URU5UUykKKworI2VuZGlmIC8vIFdlYkludGVudERhdGFfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA2Y2YyNjBhLi5lMzZmNDQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMjE5MCw3
ICsyMTkwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZSh1
aW50NjRfdCBmcmFtZUlELCBjb25zdCBJbnRlbnREYXRhJgogICAgIFdlYkZyYW1lUHJveHkqIGZy
YW1lID0gcHJvY2VzcygpLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKGZy
YW1lKTsKIAotICAgIFJlZlB0cjxXZWJJbnRlbnREYXRhPiB3ZWJJbnRlbnREYXRhID0gV2ViSW50
ZW50RGF0YTo6Y3JlYXRlKGludGVudERhdGEpOworICAgIFJlZlB0cjxXZWJJbnRlbnREYXRhPiB3
ZWJJbnRlbnREYXRhID0gV2ViSW50ZW50RGF0YTo6Y3JlYXRlKGludGVudERhdGEsIHByb2Nlc3Mo
KSk7CiAgICAgbV9sb2FkZXJDbGllbnQuZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKHRoaXMsIGZy
YW1lLCB3ZWJJbnRlbnREYXRhLmdldCgpLCB1c2VyRGF0YS5nZXQoKSk7CiB9CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggZTNjZGM4
OC4uMjZjM2FlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAKQEAgLTE5Niw2ICsxOTYsMTQgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlbW92ZVdl
YlBhZ2UodWludDY0X3QgcGFnZUlEKQogICAgIG1fcGFnZU1hcC5yZW1vdmUocGFnZUlEKTsKIH0K
IAordm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlbW92ZU1lc3NhZ2VQb3J0Q2hhbm5lbCh1aW50NjRf
dCBjaGFubmVsSUQpCit7CisgICAgaWYgKCFpc1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlJlbW92ZU1lc3NhZ2VQb3J0Q2hhbm5lbChj
aGFubmVsSUQpLCAwKTsKK30KKwogV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogV2ViUHJvY2Vzc1By
b3h5Ojp3ZWJCYWNrRm9yd2FyZEl0ZW0odWludDY0X3QgaXRlbUlEKSBjb25zdAogewogICAgIHJl
dHVybiBtX2JhY2tGb3J3YXJkTGlzdEl0ZW1NYXAuZ2V0KGl0ZW1JRCkuZ2V0KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXggOGU3NjhiZi4uN2IxY2Ew
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtODcs
NiArODcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRFeGlzdGluZ1dlYlBhZ2UoV2ViUGFnZVBy
b3h5KiwgdWludDY0X3QgcGFnZUlEKTsKICAgICB2b2lkIHJlbW92ZVdlYlBhZ2UodWludDY0X3Qg
cGFnZUlEKTsKIAorICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVBvcnRDaGFubmVsKHVpbnQ2NF90IGNo
YW5uZWxJRCk7CisKICAgICBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiB3ZWJCYWNrRm9yd2FyZEl0
ZW0odWludDY0X3QgaXRlbUlEKSBjb25zdDsKIAogICAgIFJlc3BvbnNpdmVuZXNzVGltZXIqIHJl
c3BvbnNpdmVuZXNzVGltZXIoKSB7IHJldHVybiAmbV9yZXNwb25zaXZlbmVzc1RpbWVyOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlQVBJQ2FzdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZUFQSUNhc3QuaAppbmRleCAzMzU1ZDA4Li4wMThlZjc5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlQVBJQ2FzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVBUElDYXN0LmgKQEAgLTQ2LDYgKzQ2LDcgQEAgY2xhc3MgSW5q
ZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3Q7CiBjbGFzcyBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3
YXJkTGlzdEl0ZW07CiBjbGFzcyBJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbjsKIGNs
YXNzIEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdDsKK2NsYXNzIEluamVjdGVkQnVuZGxlSW50
ZW50OwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0OwogY2xhc3MgSW5qZWN0ZWRC
dW5kbGVOYXZpZ2F0aW9uQWN0aW9uOwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOwpA
QCAtNjQsNiArNjUsNyBAQCBXS19BRERfQVBJX01BUFBJTkcoV0tCdW5kbGVET01XaW5kb3dFeHRl
bnNpb25SZWYsIEluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaQogV0tfQUREX0FQSV9NQVBQ
SU5HKFdLQnVuZGxlRnJhbWVSZWYsIFdlYkZyYW1lKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLQnVu
ZGxlSGl0VGVzdFJlc3VsdFJlZiwgSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0KQogV0tfQURE
X0FQSV9NQVBQSU5HKFdLQnVuZGxlSW5zcGVjdG9yUmVmLCBXZWJJbnNwZWN0b3IpCitXS19BRERf
QVBJX01BUFBJTkcoV0tCdW5kbGVJbnRlbnRSZWYsIEluamVjdGVkQnVuZGxlSW50ZW50KQogV0tf
QUREX0FQSV9NQVBQSU5HKFdLQnVuZGxlSW50ZW50UmVxdWVzdFJlZiwgSW5qZWN0ZWRCdW5kbGVJ
bnRlbnRSZXF1ZXN0KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLQnVuZGxlTmF2aWdhdGlvbkFjdGlv
blJlZiwgSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uKQogV0tfQUREX0FQSV9NQVBQSU5H
KFdLQnVuZGxlTm9kZUhhbmRsZVJlZiwgSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZUludGVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlSW50ZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi43N2RmMGQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudC5jcHAKQEAgLTAsMCArMSwxMzMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJX
S0J1bmRsZUludGVudC5oIgorCisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorI2luY2x1ZGUgIklt
bXV0YWJsZUFycmF5LmgiCisjaW5jbHVkZSAiSW1tdXRhYmxlRGljdGlvbmFyeS5oIgorI2luY2x1
ZGUgIkluamVjdGVkQnVuZGxlSW50ZW50LmgiCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5j
bHVkZSAiV0tCdW5kbGVBUElDYXN0LmgiCisjaW5jbHVkZSAiV0tEaWN0aW9uYXJ5LmgiCisjaW5j
bHVkZSAiV0tTdHJpbmcuaCIKKyNpbmNsdWRlICJXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIK
KyNlbmRpZgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7CisKK1dLVHlwZUlEIFdLQnVuZGxlSW50ZW50R2V0VHlwZUlEKCkKK3sKKyNpZiBFTkFCTEUo
V0VCX0lOVEVOVFMpCisgICAgcmV0dXJuIHRvQVBJKEluamVjdGVkQnVuZGxlSW50ZW50OjpBUElU
eXBlKTsKKyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KKworV0tCdW5kbGVJbnRlbnRS
ZWYgV0tCdW5kbGVJbnRlbnRDcmVhdGUoV0tEaWN0aW9uYXJ5UmVmIGluaXREaWN0aW9uYXJ5UmVm
KQoreworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICBXS1N0cmluZ1JlZiBhY3Rpb24gPSBz
dGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShpbml0RGlj
dGlvbmFyeVJlZiwgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImFjdGlvbiIpKSk7Cisg
ICAgQVNTRVJUKGFjdGlvbik7CisgICAgV0tTdHJpbmdSZWYgdHlwZSA9IHN0YXRpY19jYXN0PFdL
U3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KGluaXREaWN0aW9uYXJ5UmVmLCBX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygidHlwZSIpKSk7CisgICAgQVNTRVJUKHR5cGUp
OworICAgIFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmIGRhdGEgPSBzdGF0aWNfY2FzdDxXS1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShpbml0RGlj
dGlvbmFyeVJlZiwgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImRhdGEiKSkpOworICAg
IE1lc3NhZ2VQb3J0QXJyYXkgZHVtbXlQb3J0czsKKyAgICBFeGNlcHRpb25Db2RlIGVjOworCisg
ICAgUmVmUHRyPEludGVudD4gY29yZUludGVudCA9IEludGVudDo6Y3JlYXRlKHRvSW1wbChhY3Rp
b24pLT5zdHJpbmcoKSwgdG9JbXBsKHR5cGUpLT5zdHJpbmcoKSwgZGF0YSA/IHN0YXRpY19jYXN0
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSo+KHRvSW1wbChkYXRhKS0+aW50ZXJuYWxSZXByZXNlbnRh
dGlvbigpKSA6IDAsIGR1bW15UG9ydHMsIGVjKTsKKyAgICByZXR1cm4gdG9BUEkoSW5qZWN0ZWRC
dW5kbGVJbnRlbnQ6OmNyZWF0ZShjb3JlSW50ZW50LmdldCgpKS5sZWFrUmVmKCkpOworI2Vsc2UK
KyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCitXS1N0cmluZ1JlZiBXS0J1bmRsZUludGVudENv
cHlBY3Rpb24oV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmKQoreworI2lmIEVOQUJMRShXRUJf
SU5URU5UUykKKyAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKGludGVudFJlZiktPmFjdGlv
bigpKTsKKyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KKworV0tTdHJpbmdSZWYgV0tC
dW5kbGVJbnRlbnRDb3B5VHlwZShXS0J1bmRsZUludGVudFJlZiBpbnRlbnRSZWYpCit7CisjaWYg
RU5BQkxFKFdFQl9JTlRFTlRTKQorICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwoaW50ZW50
UmVmKS0+cGF5bG9hZFR5cGUoKSk7CisjZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCit9CisK
K1dLVVJMUmVmIFdLQnVuZGxlSW50ZW50Q29weVNlcnZpY2UoV0tCdW5kbGVJbnRlbnRSZWYgaW50
ZW50UmVmKQoreworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICByZXR1cm4gdG9Db3BpZWRV
UkxBUEkodG9JbXBsKGludGVudFJlZiktPnNlcnZpY2UoKSk7CisjZWxzZQorICAgIHJldHVybiAw
OworI2VuZGlmCit9CisKK1dLQXJyYXlSZWYgV0tCdW5kbGVJbnRlbnRDb3B5U3VnZ2VzdGlvbnMo
V0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmKQoreworI2lmIEVOQUJMRShXRUJfSU5URU5UUykK
KyAgICByZXR1cm4gdG9BUEkodG9JbXBsKGludGVudFJlZiktPnN1Z2dlc3Rpb25zKCkubGVha1Jl
ZigpKTsKKyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KKworV0tTdHJpbmdSZWYgV0tC
dW5kbGVJbnRlbnRDb3B5RXh0cmEoV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmLCBXS1N0cmlu
Z1JlZiBrZXkpCit7CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorICAgIHJldHVybiB0b0NvcGll
ZEFQSSh0b0ltcGwoaW50ZW50UmVmKS0+ZXh0cmEodG9XVEZTdHJpbmcoa2V5KSkpOworI2Vsc2UK
KyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCitXS0RpY3Rpb25hcnlSZWYgV0tCdW5kbGVJbnRl
bnRDb3B5RXh0cmFzKFdLQnVuZGxlSW50ZW50UmVmIGludGVudFJlZikKK3sKKyNpZiBFTkFCTEUo
V0VCX0lOVEVOVFMpCisgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChpbnRlbnRSZWYpLT5leHRyYXMo
KS5sZWFrUmVmKCkpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCitzaXplX3Qg
V0tCdW5kbGVJbnRlbnRNZXNzYWdlUG9ydENvdW50KFdLQnVuZGxlSW50ZW50UmVmIGludGVudFJl
ZikKK3sKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgTWVzc2FnZVBvcnRDaGFubmVsQXJy
YXkqIG1lc3NhZ2VQb3J0cyA9IHRvSW1wbChpbnRlbnRSZWYpLT5jb3JlSW50ZW50KCktPm1lc3Nh
Z2VQb3J0cygpOworCisgICAgcmV0dXJuIG1lc3NhZ2VQb3J0cyA/IG1lc3NhZ2VQb3J0cy0+c2l6
ZSgpIDogMDsKKyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRl
bnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVJbnRlbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NDcxOWQ0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudC5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgV0tCdW5kbGVJbnRlbnRfaAorI2RlZmluZSBXS0J1bmRsZUludGVu
dF9oCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMK
K2V4dGVybiAiQyIgeworI2VuZGlmCisKK1dLX0VYUE9SVCBXS1R5cGVJRCBXS0J1bmRsZUludGVu
dEdldFR5cGVJRCgpOworCitXS19FWFBPUlQgV0tCdW5kbGVJbnRlbnRSZWYgV0tCdW5kbGVJbnRl
bnRDcmVhdGUoV0tEaWN0aW9uYXJ5UmVmIGluaXREaWN0aW9uYXJ5KTsKKworV0tfRVhQT1JUIFdL
U3RyaW5nUmVmIFdLQnVuZGxlSW50ZW50Q29weUFjdGlvbihXS0J1bmRsZUludGVudFJlZiBpbnRl
bnRSZWYpOworV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLQnVuZGxlSW50ZW50Q29weVR5cGUoV0tC
dW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmKTsKK1dLX0VYUE9SVCBXS1VSTFJlZiBXS0J1bmRsZUlu
dGVudENvcHlTZXJ2aWNlKFdLQnVuZGxlSW50ZW50UmVmIGludGVudFJlZik7CitXS19FWFBPUlQg
V0tBcnJheVJlZiBXS0J1bmRsZUludGVudENvcHlTdWdnZXN0aW9ucyhXS0J1bmRsZUludGVudFJl
ZiBpbnRlbnRSZWYpOworV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLQnVuZGxlSW50ZW50Q29weUV4
dHJhKFdLQnVuZGxlSW50ZW50UmVmIGludGVudFJlZiwgV0tTdHJpbmdSZWYga2V5KTsKK1dLX0VY
UE9SVCBXS0RpY3Rpb25hcnlSZWYgV0tCdW5kbGVJbnRlbnRDb3B5RXh0cmFzKFdLQnVuZGxlSW50
ZW50UmVmIGludGVudFJlZik7CitXS19FWFBPUlQgc2l6ZV90IFdLQnVuZGxlSW50ZW50TWVzc2Fn
ZVBvcnRDb3VudChXS0J1bmRsZUludGVudFJlZiBpbnRlbnRSZWYpOworCisjaWZkZWYgX19jcGx1
c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLy8gV0tCdW5kbGVJbnRlbnRfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZUludGVudFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudFJlcXVlc3QuY3BwCmluZGV4IDgxYzk1YzYuLmE0Nzcy
ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVJbnRlbnRSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50UmVxdWVzdC5jcHAKQEAg
LTI3LDEwICsyNywxMCBAQAogI2luY2x1ZGUgIldLQnVuZGxlSW50ZW50UmVxdWVzdC5oIgogCiAj
aWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlSW50ZW50Lmgi
CiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiV0tB
UElDYXN0LmgiCiAjaW5jbHVkZSAiV0tCdW5kbGVBUElDYXN0LmgiCi0jaW5jbHVkZSAiV2ViSW50
ZW50RGF0YS5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogI2VuZGlmCkBAIC00NCwxMSAr
NDQsMTEgQEAgV0tUeXBlSUQgV0tCdW5kbGVJbnRlbnRSZXF1ZXN0R2V0VHlwZUlEKCkKICNlbmRp
ZgogfQogCi1XS0ludGVudERhdGFSZWYgV0tCdW5kbGVJbnRlbnRSZXF1ZXN0Q29weUludGVudERh
dGEoV0tCdW5kbGVJbnRlbnRSZXF1ZXN0UmVmIHJlcXVlc3RSZWYpCitXS0J1bmRsZUludGVudFJl
ZiBXS0J1bmRsZUludGVudFJlcXVlc3RDb3B5SW50ZW50KFdLQnVuZGxlSW50ZW50UmVxdWVzdFJl
ZiByZXF1ZXN0UmVmKQogewogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSAgICBSZWZQdHI8V2Vi
SW50ZW50RGF0YT4gd2ViSW50ZW50RGF0YSA9IHRvSW1wbChyZXF1ZXN0UmVmKS0+aW50ZW50KCk7
Ci0gICAgcmV0dXJuIHRvQVBJKHdlYkludGVudERhdGEucmVsZWFzZSgpLmxlYWtSZWYoKSk7Cisg
ICAgUmVmUHRyPEluamVjdGVkQnVuZGxlSW50ZW50PiB3ZWJJbnRlbnQgPSB0b0ltcGwocmVxdWVz
dFJlZiktPmludGVudCgpOworICAgIHJldHVybiB0b0FQSSh3ZWJJbnRlbnQucmVsZWFzZSgpLmxl
YWtSZWYoKSk7CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50
UmVxdWVzdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZUludGVudFJlcXVlc3QuaAppbmRleCBiMTgxMzZkLi4xMDVhZmE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlSW50ZW50UmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnRSZXF1ZXN0LmgKQEAgLTM0LDcgKzM0LDcgQEAg
ZXh0ZXJuICJDIiB7CiAKIFdLX0VYUE9SVCBXS1R5cGVJRCBXS0J1bmRsZUludGVudFJlcXVlc3RH
ZXRUeXBlSUQoKTsKIAotV0tfRVhQT1JUIFdLSW50ZW50RGF0YVJlZiBXS0J1bmRsZUludGVudFJl
cXVlc3RDb3B5SW50ZW50RGF0YShXS0J1bmRsZUludGVudFJlcXVlc3RSZWYgcmVxdWVzdCk7CitX
S19FWFBPUlQgV0tCdW5kbGVJbnRlbnRSZWYgV0tCdW5kbGVJbnRlbnRSZXF1ZXN0Q29weUludGVu
dChXS0J1bmRsZUludGVudFJlcXVlc3RSZWYgcmVxdWVzdCk7CiAKIFdLX0VYUE9SVCB2b2lkIFdL
QnVuZGxlSW50ZW50UmVxdWVzdFBvc3RSZXN1bHQoV0tCdW5kbGVJbnRlbnRSZXF1ZXN0UmVmIHJl
cXVlc3QsIFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmIHNlcmlhbGl6ZWREYXRhKTsKIFdLX0VY
UE9SVCB2b2lkIFdLQnVuZGxlSW50ZW50UmVxdWVzdFBvc3RGYWlsdXJlKFdLQnVuZGxlSW50ZW50
UmVxdWVzdFJlZiByZXF1ZXN0LCBXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiBzZXJpYWxpemVk
RGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKaW5kZXggMmFlMjIzNy4uODAyNDFj
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZVBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcApAQCAtNDcsNyArNDcsNyBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogCiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotI2luY2x1
ZGUgIldlYkludGVudERhdGEuaCIKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZUludGVudC5oIgog
I2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CkBAIC0zMTAsMTAgKzMxMCwxMCBAQCBk
b3VibGUgV0tCdW5kbGVQYWdlR2V0QmFja2luZ1NjYWxlRmFjdG9yKFdLQnVuZGxlUGFnZVJlZiBw
YWdlUmVmKQogICAgIHJldHVybiB0b0ltcGwocGFnZVJlZiktPmRldmljZVNjYWxlRmFjdG9yKCk7
CiB9CiAKLXZvaWQgV0tCdW5kbGVQYWdlRGVsaXZlckludGVudFRvRnJhbWUoV0tCdW5kbGVQYWdl
UmVmIHBhZ2VSZWYsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYsIFdLSW50ZW50RGF0YVJlZiBp
bnRlbnRSZWYpCit2b2lkIFdLQnVuZGxlUGFnZURlbGl2ZXJJbnRlbnRUb0ZyYW1lKFdLQnVuZGxl
UGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVmLCBXS0J1bmRsZUludGVu
dFJlZiBpbnRlbnRSZWYpCiB7CiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotICAgIHRvSW1wbChw
YWdlUmVmKS0+ZGVsaXZlckludGVudFRvRnJhbWUodG9JbXBsKGZyYW1lUmVmKS0+ZnJhbWVJRCgp
LCB0b0ltcGwoaW50ZW50UmVmKS0+c3RvcmUoKSk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5kZWxp
dmVyQ29yZUludGVudFRvRnJhbWUodG9JbXBsKGZyYW1lUmVmKS0+ZnJhbWVJRCgpLCB0b0ltcGwo
aW50ZW50UmVmKS0+Y29yZUludGVudCgpKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZVBhZ2UuaAppbmRleCBhYTg2MDkyLi42ZjE4YjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdl
LmgKQEAgLTQwNCw3ICs0MDQsNyBAQCBXS19FWFBPUlQgV0tJbWFnZVJlZiBXS0J1bmRsZVBhZ2VD
cmVhdGVTY2FsZWRTbmFwc2hvdEluRG9jdW1lbnRDb29yZGluYXRlcyhXS0J1bgogCiBXS19FWFBP
UlQgZG91YmxlIFdLQnVuZGxlUGFnZUdldEJhY2tpbmdTY2FsZUZhY3RvcihXS0J1bmRsZVBhZ2VS
ZWYgcGFnZSk7CiAKLVdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZURlbGl2ZXJJbnRlbnRUb0Zy
YW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBXS0ludGVu
dERhdGFSZWYgaW50ZW50KTsKK1dLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZURlbGl2ZXJJbnRl
bnRUb0ZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBX
S0J1bmRsZUludGVudFJlZiBpbnRlbnQpOwogCiAjaWYgZGVmaW5lZChFTkFCTEVfSU5TUEVDVE9S
KSAmJiBFTkFCTEVfSU5TUEVDVE9SCiBXS19FWFBPUlQgV0tCdW5kbGVJbnNwZWN0b3JSZWYgV0tC
dW5kbGVQYWdlR2V0SW5zcGVjdG9yKFdLQnVuZGxlUGFnZVJlZiBwYWdlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJ
bnRlbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZUludGVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
YjdhYjU4NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnQuY3BwCkBAIC0wLDAgKzEsOTggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbmplY3Rl
ZEJ1bmRsZUludGVudC5oIgorCisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorCisjaW5jbHVkZSAi
SW1tdXRhYmxlQXJyYXkuaCIKKyNpbmNsdWRlICJJbW11dGFibGVEaWN0aW9uYXJ5LmgiCisjaW5j
bHVkZSAiV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgi
CisjaW5jbHVkZSAiV2ViVVJMLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1l
c3BhY2UgV2ViS2l0IHsKKworUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZUludGVudD4gSW5qZWN0
ZWRCdW5kbGVJbnRlbnQ6OmNyZWF0ZShXZWJDb3JlOjpJbnRlbnQqIGludGVudCkKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEluamVjdGVkQnVuZGxlSW50ZW50KGludGVudCkpOworfQorCitJ
bmplY3RlZEJ1bmRsZUludGVudDo6SW5qZWN0ZWRCdW5kbGVJbnRlbnQoV2ViQ29yZTo6SW50ZW50
KiBpbnRlbnQpCisgICAgOiBtX2ludGVudChpbnRlbnQpCit7Cit9CisKK1N0cmluZyBJbmplY3Rl
ZEJ1bmRsZUludGVudDo6YWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbnRlbnQtPmFj
dGlvbigpOworfQorCitTdHJpbmcgSW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OnBheWxvYWRUeXBlKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9pbnRlbnQtPnR5cGUoKTsKK30KKworV2ViQ29yZTo6S1VS
TCBJbmplY3RlZEJ1bmRsZUludGVudDo6c2VydmljZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
aW50ZW50LT5zZXJ2aWNlKCk7Cit9CisKK1Bhc3NSZWZQdHI8V2ViU2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBJbmplY3RlZEJ1bmRsZUludGVudDo6ZGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdl
YlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKG1faW50ZW50LT5kYXRhKCkpOworfQorCitT
dHJpbmcgSW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OmV4dHJhKGNvbnN0IFN0cmluZyYga2V5KSBjb25z
dAoreworICAgIHJldHVybiBtX2ludGVudC0+ZXh0cmFzKCkuZ2V0KGtleSk7Cit9CisKK1Bhc3NS
ZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4gSW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OmV4dHJhcygp
IGNvbnN0Cit7CisgICAgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIGV4dHJhcyA9IG1f
aW50ZW50LT5leHRyYXMoKTsKKyAgICBJbW11dGFibGVEaWN0aW9uYXJ5OjpNYXBUeXBlIHdrRXh0
cmFzOworICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBl
eHRyYXMuZW5kKCk7CisgICAgZm9yIChIYXNoTWFwPFN0cmluZywgU3RyaW5nPjo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBleHRyYXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICB3a0V4
dHJhcy5zZXQoaXQtPmZpcnN0LCBXZWJTdHJpbmc6OmNyZWF0ZShpdC0+c2Vjb25kKSk7CisgICAg
cmV0dXJuIEltbXV0YWJsZURpY3Rpb25hcnk6OmFkb3B0KHdrRXh0cmFzKTsKK30KKworUGFzc1Jl
ZlB0cjxJbW11dGFibGVBcnJheT4gSW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OnN1Z2dlc3Rpb25zKCkg
Y29uc3QKK3sKKyAgICBjb25zdCBWZWN0b3I8S1VSTD4mIHN1Z2dlc3Rpb25zID0gbV9pbnRlbnQt
PnN1Z2dlc3Rpb25zKCk7CisgICAgY29uc3Qgc2l6ZV90IG51bVN1Z2dlc3Rpb25zID0gc3VnZ2Vz
dGlvbnMuc2l6ZSgpOworICAgIFZlY3RvcjxSZWZQdHI8QVBJT2JqZWN0PiA+IHdrU3VnZ2VzdGlv
bnMobnVtU3VnZ2VzdGlvbnMpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1TdWdn
ZXN0aW9uczsgKytpKQorICAgICAgICB3a1N1Z2dlc3Rpb25zW2ldID0gV2ViVVJMOjpjcmVhdGUo
c3VnZ2VzdGlvbnNbaV0pOworICAgIHJldHVybiBJbW11dGFibGVBcnJheTo6YWRvcHQod2tTdWdn
ZXN0aW9ucyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxF
KFdFQl9JTlRFTlRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkM2YwNmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50LmgK
QEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3Jh
dGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbmplY3RlZEJ1
bmRsZUludGVudF9oCisjZGVmaW5lIEluamVjdGVkQnVuZGxlSW50ZW50X2gKKworI2lmIEVOQUJM
RShXRUJfSU5URU5UUykKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvSW50ZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9LVVJMLmg+CisjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEltbXV0YWJsZUFycmF5OworY2xh
c3MgSW1tdXRhYmxlRGljdGlvbmFyeTsKK2NsYXNzIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsK
KworY2xhc3MgSW5qZWN0ZWRCdW5kbGVJbnRlbnQgOiBwdWJsaWMgQVBJT2JqZWN0IHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZUJ1bmRsZUludGVudDsKKwor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlSW50ZW50PiBjcmVhdGUoV2ViQ29y
ZTo6SW50ZW50Kik7CisKKyAgICBTdHJpbmcgYWN0aW9uKCkgY29uc3Q7CisgICAgU3RyaW5nIHBh
eWxvYWRUeXBlKCkgY29uc3Q7CisgICAgV2ViQ29yZTo6S1VSTCBzZXJ2aWNlKCkgY29uc3Q7Cisg
ICAgUGFzc1JlZlB0cjxXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEoKSBjb25zdDsKKyAg
ICBTdHJpbmcgZXh0cmEoY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8
SW1tdXRhYmxlRGljdGlvbmFyeT4gZXh0cmFzKCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxJbW11
dGFibGVBcnJheT4gc3VnZ2VzdGlvbnMoKSBjb25zdDsKKworICAgIFdlYkNvcmU6OkludGVudCog
Y29yZUludGVudCgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZW50LmdldCgpOyB9CisKK3ByaXZhdGU6
CisgICAgZXhwbGljaXQgSW5qZWN0ZWRCdW5kbGVJbnRlbnQoV2ViQ29yZTo6SW50ZW50Kik7CisK
KyAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIEFQSVR5cGU7IH0KKworICAg
IFJlZlB0cjxXZWJDb3JlOjpJbnRlbnQ+IG1faW50ZW50OworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0lOVEVOVFMpCisKKyNlbmRpZiAvLyBJbmpl
Y3RlZEJ1bmRsZUludGVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50UmVx
dWVzdC5jcHAKaW5kZXggNWNjYjE5Yy4uZWFjMGI4M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlSW50ZW50UmVxdWVzdC5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJJ
bmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuaCIKIAogI2lmIEVOQUJMRShXRUJfSU5URU5UUykK
KyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZUludGVudC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW50
ZW50UmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oPgogCkBA
IC01NCw5ICs1NSw5IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0Ojpwb3N0RmFp
bHVyZShXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUqIGRhdGEpCiAgICAgbV9pbnRlbnRSZXF1ZXN0
LT5wb3N0RmFpbHVyZShzdGF0aWNfY2FzdDxTZXJpYWxpemVkU2NyaXB0VmFsdWUqPihkYXRhLT5p
bnRlcm5hbFJlcHJlc2VudGF0aW9uKCkpKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJJbnRlbnREYXRh
PiBJbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3Q6OmludGVudCgpIGNvbnN0CitQYXNzUmVmUHRy
PEluamVjdGVkQnVuZGxlSW50ZW50PiBJbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3Q6OmludGVu
dCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdlYkludGVudERhdGE6OmNyZWF0ZShJbnRlbnREYXRh
KG1faW50ZW50UmVxdWVzdC0+aW50ZW50KCkpKTsKKyAgICByZXR1cm4gSW5qZWN0ZWRCdW5kbGVJ
bnRlbnQ6OmNyZWF0ZShtX2ludGVudFJlcXVlc3QtPmludGVudCgpKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuaApp
bmRleCBiNTg3MGQ5Li4zM2EzMTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRl
bnRSZXF1ZXN0LmgKQEAgLTI5LDcgKzI5LDYgQEAKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCiAK
ICNpbmNsdWRlICJBUElPYmplY3QuaCIKLSNpbmNsdWRlICJXZWJJbnRlbnREYXRhLmgiCiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTQwLDYgKzM5LDcgQEAgY2xhc3MgSW50ZW50UmVxdWVzdDsK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIEluamVjdGVkQnVuZGxlSW50ZW50OwogY2xh
c3MgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlOwogCiBjbGFzcyBJbmplY3RlZEJ1bmRsZUludGVu
dFJlcXVlc3QgOiBwdWJsaWMgQVBJT2JqZWN0IHsKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgcG9zdFJlc3VsdChXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUqKTsKICAgICB2b2lk
IHBvc3RGYWlsdXJlKFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSopOwogCi0gICAgUGFzc1JlZlB0
cjxXZWJJbnRlbnREYXRhPiBpbnRlbnQoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEluamVjdGVk
QnVuZGxlSW50ZW50PiBpbnRlbnQoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBJ
bmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QoV2ViQ29yZTo6SW50ZW50UmVxdWVzdCopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggZjM2
ZmMwMi4uZjliYjcwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuY3BwCkBAIC02Myw2ICs2Myw3IEBACiAjaW5jbHVkZSAiSW50ZW50RGF0YS5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvRE9NV2luZG93SW50ZW50cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
RGVsaXZlcmVkSW50ZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbnRlbnQuaD4KICNlbmRpZgog
CiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShXSU4pCkBAIC0yNDYsMTMgKzI0NywzOSBA
QCB2b2lkIFdlYkZyYW1lOjpjb252ZXJ0SGFuZGxlVG9Eb3dubG9hZChSZXNvdXJjZUhhbmRsZSog
aGFuZGxlLCBjb25zdCBSZXNvdXJjZVJlcQogdm9pZCBXZWJGcmFtZTo6ZGVsaXZlckludGVudChj
b25zdCBJbnRlbnREYXRhJiBpbnRlbnREYXRhKQogewogICAgIE93blB0cjxEZWxpdmVyZWRJbnRl
bnRDbGllbnQ+IGR1bW15Q2xpZW50OwotICAgIE93blB0cjxNZXNzYWdlUG9ydEFycmF5PiBkdW1t
eVBvcnRzOwogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhQ29weSA9IGludGVudERhdGEuZGF0YTsK
KworICAgIE93blB0cjxXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHM7
CisgICAgaWYgKCFpbnRlbnREYXRhLm1lc3NhZ2VQb3J0cy5pc0VtcHR5KCkpIHsKKyAgICAgICAg
Y2hhbm5lbHMgPSBhZG9wdFB0cihuZXcgV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsQXJyYXko
aW50ZW50RGF0YS5tZXNzYWdlUG9ydHMuc2l6ZSgpKSk7CisgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgaW50ZW50RGF0YS5tZXNzYWdlUG9ydHMuc2l6ZSgpOyArK2kpCisgICAgICAgICAg
ICAoKmNoYW5uZWxzKVtpXSA9IE1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlKFdlYlByb2Nlc3M6
OnNoYXJlZCgpLm1lc3NhZ2VQb3J0Q2hhbm5lbChpbnRlbnREYXRhLm1lc3NhZ2VQb3J0cy5hdChp
KSkpOworICAgIH0KKyAgICBPd25QdHI8V2ViQ29yZTo6TWVzc2FnZVBvcnRBcnJheT4gbWVzc2Fn
ZVBvcnRzID0gV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoKm1fY29yZUZyYW1l
LT5kb21XaW5kb3coKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBjaGFubmVscy5yZWxlYXNl
KCkpOworCiAgICAgUmVmUHRyPERlbGl2ZXJlZEludGVudD4gZGVsaXZlcmVkSW50ZW50ID0gRGVs
aXZlcmVkSW50ZW50OjpjcmVhdGUobV9jb3JlRnJhbWUsIGR1bW15Q2xpZW50LnJlbGVhc2UoKSwg
aW50ZW50RGF0YS5hY3Rpb24sIGludGVudERhdGEudHlwZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmFkb3B0KGRhdGFDb3B5KSwgZHVtbXlQb3J0cy5yZWxlYXNlKCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjphZG9wdChkYXRhQ29weSksIG1lc3Nh
Z2VQb3J0cy5yZWxlYXNlKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZW50RGF0YS5leHRyYXMpOwogICAg
IFdlYkNvcmU6OkRPTVdpbmRvd0ludGVudHM6OmZyb20obV9jb3JlRnJhbWUtPmRvbVdpbmRvdygp
KS0+ZGVsaXZlcihkZWxpdmVyZWRJbnRlbnQucmVsZWFzZSgpKTsKIH0KKwordm9pZCBXZWJGcmFt
ZTo6ZGVsaXZlckludGVudChJbnRlbnQqIGludGVudCkKK3sKKyAgICBPd25QdHI8RGVsaXZlcmVk
SW50ZW50Q2xpZW50PiBkdW1teUNsaWVudDsKKworICAgIE93blB0cjxXZWJDb3JlOjpNZXNzYWdl
UG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHM7CisgICAgV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFu
bmVsQXJyYXkqIG9yaWdDaGFubmVscyA9IGludGVudC0+bWVzc2FnZVBvcnRzKCk7CisgICAgaWYg
KG9yaWdDaGFubmVscyAmJiBvcmlnQ2hhbm5lbHMtPnNpemUoKSkgeworICAgICAgICBjaGFubmVs
cyA9IGFkb3B0UHRyKG5ldyBXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxBcnJheShvcmlnQ2hh
bm5lbHMtPnNpemUoKSkpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9yaWdDaGFu
bmVscy0+c2l6ZSgpOyArK2kpCisgICAgICAgICAgICAoKmNoYW5uZWxzKVtpXSA9IG9yaWdDaGFu
bmVscy0+YXQoaSkucmVsZWFzZSgpOworICAgIH0KKyAgICBPd25QdHI8V2ViQ29yZTo6TWVzc2Fn
ZVBvcnRBcnJheT4gbWVzc2FnZVBvcnRzID0gV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmVudGFuZ2xl
UG9ydHMoKm1fY29yZUZyYW1lLT5kb21XaW5kb3coKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LCBjaGFubmVscy5yZWxlYXNlKCkpOworCisgICAgUmVmUHRyPERlbGl2ZXJlZEludGVudD4gZGVs
aXZlcmVkSW50ZW50ID0gRGVsaXZlcmVkSW50ZW50OjpjcmVhdGUobV9jb3JlRnJhbWUsIGR1bW15
Q2xpZW50LnJlbGVhc2UoKSwgaW50ZW50LT5hY3Rpb24oKSwgaW50ZW50LT50eXBlKCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50ZW50LT5kYXRhKCksIG1lc3NhZ2VQb3J0cy5yZWxlYXNlKCksIGludGVudC0+
ZXh0cmFzKCkpOworICAgIFdlYkNvcmU6OkRPTVdpbmRvd0ludGVudHM6OmZyb20obV9jb3JlRnJh
bWUtPmRvbVdpbmRvdygpKS0+ZGVsaXZlcihkZWxpdmVyZWRJbnRlbnQucmVsZWFzZSgpKTsKK30K
ICNlbmRpZgogCiBTdHJpbmcgV2ViRnJhbWU6OnNvdXJjZSgpIGNvbnN0IApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAppbmRleCBiZDZjMDM4Li5lZWEwOWI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaApAQCAt
NDIsNiArNDIsOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEZyYW1lOwogICAg
IGNsYXNzIEhUTUxGcmFtZU93bmVyRWxlbWVudDsKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisg
ICAgY2xhc3MgSW50ZW50OworI2VuZGlmCiAgICAgY2xhc3MgS1VSTDsKIH0KIApAQCAtODEsNiAr
ODQsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCiAgICAgdm9pZCBkZWxp
dmVySW50ZW50KGNvbnN0IEludGVudERhdGEmKTsKKyAgICB2b2lkIGRlbGl2ZXJJbnRlbnQoV2Vi
Q29yZTo6SW50ZW50Kik7CiAjZW5kaWYKIAogICAgIFN0cmluZyBzb3VyY2UoKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA1OWQz
YmM1Li5iY2M4NTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCkBAIC0xMzYsNiArMTM2LDcgQEAKIAogI2lmIEVOQUJMRShXRUJfSU5URU5UUykK
ICNpbmNsdWRlICJJbnRlbnREYXRhLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9JbnRlbnQuaD4KICNl
bmRpZgogCiAjaWYgRU5BQkxFKFZJQlJBVElPTikKQEAgLTE5NjMsNiArMTk2NCwxNSBAQCB2b2lk
IFdlYlBhZ2U6OmRlbGl2ZXJJbnRlbnRUb0ZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IElu
dGVudERhdGEmIGludGVudERhdAogCiAgICAgZnJhbWUtPmRlbGl2ZXJJbnRlbnQoaW50ZW50RGF0
YSk7CiB9CisKK3ZvaWQgV2ViUGFnZTo6ZGVsaXZlckNvcmVJbnRlbnRUb0ZyYW1lKHVpbnQ2NF90
IGZyYW1lSUQsIEludGVudCogY29yZUludGVudCkKK3sKKyAgICBXZWJGcmFtZSogZnJhbWUgPSBX
ZWJQcm9jZXNzOjpzaGFyZWQoKS53ZWJGcmFtZShmcmFtZUlEKTsKKyAgICBpZiAoIWZyYW1lKQor
ICAgICAgICByZXR1cm47CisKKyAgICBmcmFtZS0+ZGVsaXZlckludGVudChjb3JlSW50ZW50KTsK
K30KICNlbmRpZgogCiB2b2lkIFdlYlBhZ2U6OnByZWZlcmVuY2VzRGlkQ2hhbmdlKGNvbnN0IFdl
YlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKaW5kZXggZTMyNTdhMy4uMTUzMzRlYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xMDYsNiArMTA2LDkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEZyYW1lOwogICAgIGNsYXNzIEZyYW1lVmlldzsKICAg
ICBjbGFzcyBIVE1MUGx1Z0luRWxlbWVudDsKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAg
Y2xhc3MgSW50ZW50OworI2VuZGlmCiAgICAgY2xhc3MgS2V5Ym9hcmRFdmVudDsKICAgICBjbGFz
cyBQYWdlOwogICAgIGNsYXNzIFByaW50Q29udGV4dDsKQEAgLTQ3OCw3ICs0ODEsNyBAQCBwdWJs
aWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSAgICB2b2lkIGRlbGl2ZXJJ
bnRlbnRUb0ZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IEludGVudERhdGEmKTsKKyAgICB2
b2lkIGRlbGl2ZXJDb3JlSW50ZW50VG9GcmFtZSh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpJ
bnRlbnQqKTsKICNlbmRpZgogCiAgICAgdm9pZCByZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQoV2Vi
Q29yZTo6RnJhbWUqLCBjb25zdCBTdHJpbmcmKTsKQEAgLTYzMyw2ICs2MzYsMTAgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGNvbnRleHRNZW51SGlkZGVuKCkgeyBtX2lzU2hvd2luZ0NvbnRleHRNZW51
ID0gZmFsc2U7IH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorICAgIHZvaWQg
ZGVsaXZlckludGVudFRvRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgSW50ZW50RGF0YSYp
OworI2VuZGlmCisKICAgICBzdGF0aWMgdm9pZCBzY3JvbGwoV2ViQ29yZTo6UGFnZSosIFdlYkNv
cmU6OlNjcm9sbERpcmVjdGlvbiwgV2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJpdHkpOwogICAgIHN0
YXRpYyB2b2lkIGxvZ2ljYWxTY3JvbGwoV2ViQ29yZTo6UGFnZSosIFdlYkNvcmU6OlNjcm9sbExv
Z2ljYWxEaXJlY3Rpb24sIFdlYkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5KTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNmViOGFiN2UuLjYzZmZlMTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtNzkxLDYgKzc5MSwy
NCBAQCBXZWJQYWdlR3JvdXBQcm94eSogV2ViUHJvY2Vzczo6d2ViUGFnZUdyb3VwKGNvbnN0IFdl
YlBhZ2VHcm91cERhdGEmIHBhZ2VHcm91cERhdAogICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3It
PnNlY29uZC5nZXQoKTsKIH0KIAordWludDY0X3QgV2ViUHJvY2Vzczo6YWRkTWVzc2FnZVBvcnRD
aGFubmVsKFBhc3NSZWZQdHI8UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw+IG1lc3NhZ2VQb3J0
Q2hhbm5lbCkKK3sKKyAgICBzdGF0aWMgdWludDY0X3QgY2hhbm5lbElEID0gMDsKKyAgICBtX21l
c3NhZ2VQb3J0Q2hhbm5lbHMuYWRkKCsrY2hhbm5lbElELCBtZXNzYWdlUG9ydENoYW5uZWwpOwor
CisgICAgcmV0dXJuIGNoYW5uZWxJRDsKK30KKworUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwq
IFdlYlByb2Nlc3M6Om1lc3NhZ2VQb3J0Q2hhbm5lbCh1aW50NjRfdCBjaGFubmVsSUQpCit7Cisg
ICAgcmV0dXJuIG1fbWVzc2FnZVBvcnRDaGFubmVscy5nZXQoY2hhbm5lbElEKS5nZXQoKTsKK30K
Kwordm9pZCBXZWJQcm9jZXNzOjpyZW1vdmVNZXNzYWdlUG9ydENoYW5uZWwodWludDY0X3QgY2hh
bm5lbElEKQoreworICAgIG1fbWVzc2FnZVBvcnRDaGFubmVscy5yZW1vdmUoY2hhbm5lbElEKTsK
K30KKwogc3RhdGljIGJvb2wgY2FuUGx1Z2luSGFuZGxlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgU3RyaW5nIHBsdWdpblBhdGg7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IDBkMDA1YTQuLjA4M2Y1NWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVk
ZSAiV2ViSWNvbkRhdGFiYXNlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQYWdlR3JvdXBQcm94eS5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvTGlua0hhc2guaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRm
b3JtTWVzc2FnZVBvcnRDaGFubmVsLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC0xMTMsNiAr
MTE0LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZVdlYlBhZ2UodWludDY0X3QgcGFnZUlE
KTsKICAgICBXZWJQYWdlKiBmb2N1c2VkV2ViUGFnZSgpIGNvbnN0OwogICAgIAorICAgIHVpbnQ2
NF90IGFkZE1lc3NhZ2VQb3J0Q2hhbm5lbChQYXNzUmVmUHRyPFdlYkNvcmU6OlBsYXRmb3JtTWVz
c2FnZVBvcnRDaGFubmVsPik7CisgICAgV2ViQ29yZTo6UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5u
ZWwqIG1lc3NhZ2VQb3J0Q2hhbm5lbCh1aW50NjRfdCk7CisgICAgdm9pZCByZW1vdmVNZXNzYWdl
UG9ydENoYW5uZWwodWludDY0X3QpOworCiAgICAgSW5qZWN0ZWRCdW5kbGUqIGluamVjdGVkQnVu
ZGxlKCkgY29uc3QgeyByZXR1cm4gbV9pbmplY3RlZEJ1bmRsZS5nZXQoKTsgfQogCiAgICAgYm9v
bCBpc1NlcGFyYXRlUHJvY2VzcygpIGNvbnN0OwpAQCAtMzAwLDYgKzMwNSw4IEBAIHByaXZhdGU6
CiAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBXZWJGcmFtZSo+IG1fZnJhbWVNYXA7CiAKKyAgICBI
YXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5u
ZWw+ID4gbV9tZXNzYWdlUG9ydENoYW5uZWxzOworCiAgICAgSGFzaFNldDxTdHJpbmcsIENhc2VG
b2xkaW5nSGFzaD4gbV9taW1lVHlwZXNXaXRoQ3VzdG9tUmVwcmVzZW50YXRpb25zOwogCiAgICAg
VGV4dENoZWNrZXJTdGF0ZSBtX3RleHRDaGVja2VyU3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggMGY4M2Q1Yi4uYzgyMTFh
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbgpAQCAtMjcsNiArMjcsOSBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIHsKICAgICAjIENy
ZWF0ZSBhIG5ldyBwYWdlLgogICAgIENyZWF0ZVdlYlBhZ2UodWludDY0X3QgbmV3UGFnZUlELCBX
ZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgcGFnZUNyZWF0aW9uUGFyYW1ldGVycykK
IAorICAgICMgTWVzc2FnZVBvcnRDaGFubmVsIG1lc3NhZ2VzCisgICAgUmVtb3ZlTWVzc2FnZVBv
cnRDaGFubmVsKHVpbnQ2NF90IGNoYW5uZWxJRCk7CisKICAgICAjIFZpc2l0ZWQgbGluayB0cmFj
a2luZy4KICAgICBTZXRWaXNpdGVkTGlua1RhYmxlKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5k
bGUgaGFuZGxlKQogICAgIFZpc2l0ZWRMaW5rU3RhdGVDaGFuZ2VkKFZlY3RvcjxXZWJDb3JlOjpM
aW5rSGFzaD4gbGlua0hhc2hlcykKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCA1NDRlZmQ2Li40Y2QyZTkxIDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTItMDctMzEg
IENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKworICAgICAg
ICBbV0syXSBBZGQgc3VwcG9ydCBmb3IgV2ViIEludGVudHMgTWVzc2FnZVBvcnRzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTA3MgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBXS0J1bmRsZUludGVu
dCBpbnN0ZWFkIG9mIFdlYkludGVudERhdGEgaW4KKyAgICAgICAgV2ViS2l0VGVzdFJ1bm5lci4g
V1RSIG5vdyBwcmludHMgdGhlIG51bWJlciBvZgorICAgICAgICBNZXNzYWdlUG9ydHMgaW4gcmVj
ZWl2ZWQgV2ViIGludGVudHMgYXMKKyAgICAgICAgZXhwZWN0ZWQgYnkgd2ViaW50ZW50cy8qIGxh
eW91dCB0ZXN0cy4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdl
OjpkaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpM
YXlvdXRUZXN0Q29udHJvbGxlcjo6ZGVsaXZlcldlYkludGVudCk6CisKIDIwMTItMDctMzAgIFJ5
b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2ZXJ0IHIxMjQxNTMg
YW5kIGxhbmQgdGhlICJyaWdodCIgYnVpbGQgZml4IHBlciBhcCdzIGNvbW1lbnQgb24gdGhlIGJ1
ZyA5MjY3Ni4KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAppbmRleCAxNjM3MWQxLi4xZWJjMmYwIDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCkBAIC01MCw4ICs1MCw4IEBACiAjZW5kaWYKIAogI2lm
IEVOQUJMRShXRUJfSU5URU5UUykKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlSW50ZW50Lmg+
CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZUludGVudFJlcXVlc3QuaD4KLSNpbmNsdWRlIDxX
ZWJLaXQyL1dLSW50ZW50RGF0YS5oPgogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTX1RB
RykKICNpbmNsdWRlIDxXZWJLaXQyL1dLSW50ZW50U2VydmljZUluZm8uaD4KQEAgLTQzMCwxOSAr
NDMwLDI0IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRSZWNlaXZlSW50ZW50Rm9yRnJh
bWUoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlCiB7CiAjaWYgRU5BQkxFKFdFQl9JTlRF
TlRTKQogICAgIHN0YXRpY19jYXN0PEluamVjdGVkQnVuZGxlUGFnZSo+KGNvbnN0X2Nhc3Q8dm9p
ZCo+KGNsaWVudEluZm8pKS0+bV9jdXJyZW50SW50ZW50UmVxdWVzdCA9IGludGVudFJlcXVlc3Q7
Ci0gICAgV0tSZXRhaW5QdHI8V0tJbnRlbnREYXRhUmVmPiBpbnRlbnQoQWRvcHRXSywgV0tCdW5k
bGVJbnRlbnRSZXF1ZXN0Q29weUludGVudERhdGEoaW50ZW50UmVxdWVzdCkpOworICAgIFdLUmV0
YWluUHRyPFdLQnVuZGxlSW50ZW50UmVmPiBpbnRlbnQoQWRvcHRXSywgV0tCdW5kbGVJbnRlbnRS
ZXF1ZXN0Q29weUludGVudChpbnRlbnRSZXF1ZXN0KSk7CiAKICAgICBJbmplY3RlZEJ1bmRsZTo6
c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoIlJlY2VpdmVkIFdlYiBJbnRlbnQ6IGFj
dGlvbj0iKTsKLSAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tBY3Rpb24oQWRvcHRXSywg
V0tJbnRlbnREYXRhQ29weUFjdGlvbihpbnRlbnQuZ2V0KCkpKTsKKyAgICBXS1JldGFpblB0cjxX
S1N0cmluZ1JlZj4gd2tBY3Rpb24oQWRvcHRXSywgV0tCdW5kbGVJbnRlbnRDb3B5QWN0aW9uKGlu
dGVudC5nZXQoKSkpOwogICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVy
KCktPmFwcGVuZCh0b1dURlN0cmluZyh3a0FjdGlvbi5nZXQoKSkpOwogICAgIEluamVjdGVkQnVu
ZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiIHR5cGU9Iik7Ci0gICAgV0tS
ZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHdrVHlwZShBZG9wdFdLLCBXS0ludGVudERhdGFDb3B5VHlw
ZShpbnRlbnQuZ2V0KCkpKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tUeXBlKEFk
b3B0V0ssIFdLQnVuZGxlSW50ZW50Q29weVR5cGUoaW50ZW50LmdldCgpKSk7CiAgICAgSW5qZWN0
ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKHRvV1RGU3RyaW5nKHdr
VHlwZS5nZXQoKSkpOwogICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVy
KCktPmFwcGVuZCgiXG4iKTsKIAotICAgIC8vIEZJWE1FOiBQcmludCBudW1iZXIgb2YgcG9ydHMg
d2hlbiBleHBvc2VkIGluIFdlYktpdDIKKyAgICBjb25zdCBzaXplX3QgbnVtTWVzc2FnZVBvcnRz
ID0gV0tCdW5kbGVJbnRlbnRNZXNzYWdlUG9ydENvdW50KGludGVudC5nZXQoKSk7CisgICAgaWYg
KG51bU1lc3NhZ2VQb3J0cykgeworICAgICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3Ry
aW5nQnVpbGRlcigpLT5hcHBlbmQoIkhhdmUgIik7CisgICAgICAgIEluamVjdGVkQnVuZGxlOjpz
aGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZChXVEY6OlN0cmluZzo6bnVtYmVyKG51bU1l
c3NhZ2VQb3J0cykpOworICAgICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVp
bGRlcigpLT5hcHBlbmQoIiBwb3J0c1xuIik7CisgICAgfQogCi0gICAgV0tSZXRhaW5QdHI8V0tV
UkxSZWY+IHdrU2VydmljZVVybChBZG9wdFdLLCBXS0ludGVudERhdGFDb3B5U2VydmljZShpbnRl
bnQuZ2V0KCkpKTsKKyAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gd2tTZXJ2aWNlVXJsKEFkb3B0
V0ssIFdLQnVuZGxlSW50ZW50Q29weVNlcnZpY2UoaW50ZW50LmdldCgpKSk7CiAgICAgaWYgKHdr
U2VydmljZVVybCkgewogICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tTZXJ2aWNl
KEFkb3B0V0ssIFdLVVJMQ29weVN0cmluZyh3a1NlcnZpY2VVcmwuZ2V0KCkpKTsKICAgICAgICAg
aWYgKHdrU2VydmljZSAmJiAhV0tTdHJpbmdJc0VtcHR5KHdrU2VydmljZS5nZXQoKSkpIHsKQEAg
LTQ1Miw3ICs0NTcsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZGlkUmVjZWl2ZUludGVu
dEZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZQogICAgICAgICB9CiAgICAg
fQogCi0gICAgV0tSZXRhaW5QdHI8V0tEaWN0aW9uYXJ5UmVmPiB3a0V4dHJhcyhBZG9wdFdLLCBX
S0ludGVudERhdGFDb3B5RXh0cmFzKGludGVudC5nZXQoKSkpOworICAgIFdLUmV0YWluUHRyPFdL
RGljdGlvbmFyeVJlZj4gd2tFeHRyYXMoQWRvcHRXSywgV0tCdW5kbGVJbnRlbnRDb3B5RXh0cmFz
KGludGVudC5nZXQoKSkpOwogICAgIFdLUmV0YWluUHRyPFdLQXJyYXlSZWY+IHdrRXh0cmFLZXlz
KEFkb3B0V0ssIFdLRGljdGlvbmFyeUNvcHlLZXlzKHdrRXh0cmFzLmdldCgpKSk7CiAgICAgY29u
c3Qgc2l6ZV90IG51bUV4dHJhS2V5cyA9IFdLQXJyYXlHZXRTaXplKHdrRXh0cmFLZXlzLmdldCgp
KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUV4dHJhS2V5czsgKytpKSB7CkBAIC00
NjUsNyArNDcwLDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZFJlY2VpdmVJbnRlbnRG
b3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGUKICAgICAgICAgSW5qZWN0ZWRC
dW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKCJcbiIpOwogICAgIH0KIAot
ICAgIFdLUmV0YWluUHRyPFdLQXJyYXlSZWY+IHdrU3VnZ2VzdGlvbnMoQWRvcHRXSywgV0tJbnRl
bnREYXRhQ29weVN1Z2dlc3Rpb25zKGludGVudC5nZXQoKSkpOworICAgIFdLUmV0YWluUHRyPFdL
QXJyYXlSZWY+IHdrU3VnZ2VzdGlvbnMoQWRvcHRXSywgV0tCdW5kbGVJbnRlbnRDb3B5U3VnZ2Vz
dGlvbnMoaW50ZW50LmdldCgpKSk7CiAgICAgY29uc3Qgc2l6ZV90IG51bVN1Z2dlc3Rpb25zID0g
V0tBcnJheUdldFNpemUod2tTdWdnZXN0aW9ucy5nZXQoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBudW1TdWdnZXN0aW9uczsgKytpKSB7CiAgICAgICAgIFdLU3RyaW5nUmVmIHdrU3Vn
Z2VzdGlvbiA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0FycmF5R2V0SXRlbUF0SW5kZXgo
d2tTdWdnZXN0aW9ucy5nZXQoKSwgaSkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRl
eCAzMzc2ZWQwLi43NjBkNDkwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcApAQCAtNDks
OCArNDksOCBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogI2lmIEVO
QUJMRShXRUJfSU5URU5UUykKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlSW50ZW50Lmg+CiAj
aW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZUludGVudFJlcXVlc3QuaD4KLSNpbmNsdWRlIDxXZWJL
aXQyL1dLSW50ZW50RGF0YS5oPgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXVFIgewpAQCAtNjQ5LDgg
KzY0OSw4IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmRlbGl2ZXJXZWJJbnRlbnQoSlNT
dHJpbmdSZWYgYWN0aW9uLCBKU1N0cmluZ1JlZiB0eXBlCiAgICAgV0tEaWN0aW9uYXJ5QWRkSXRl
bShpbnRlbnRJbml0RGljdC5nZXQoKSwgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoInR5
cGUiKSwgdHlwZVdLLmdldCgpKTsKICAgICBXS0RpY3Rpb25hcnlBZGRJdGVtKGludGVudEluaXRE
aWN0LmdldCgpLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiZGF0YSIpLCBkYXRhV0su
Z2V0KCkpOwogCi0gICAgV0tSZXRhaW5QdHI8V0tJbnRlbnREYXRhUmVmPiB3a0ludGVudERhdGEo
QWRvcHRXSywgV0tJbnRlbnREYXRhQ3JlYXRlKGludGVudEluaXREaWN0LmdldCgpKSk7Ci0gICAg
V0tCdW5kbGVQYWdlRGVsaXZlckludGVudFRvRnJhbWUoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgp
LnBhZ2UoKS0+cGFnZSgpLCBtYWluRnJhbWUsIHdrSW50ZW50RGF0YS5nZXQoKSk7CisgICAgV0tS
ZXRhaW5QdHI8V0tCdW5kbGVJbnRlbnRSZWY+IHdrSW50ZW50KEFkb3B0V0ssIFdLQnVuZGxlSW50
ZW50Q3JlYXRlKGludGVudEluaXREaWN0LmdldCgpKSk7CisgICAgV0tCdW5kbGVQYWdlRGVsaXZl
ckludGVudFRvRnJhbWUoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgpLCBt
YWluRnJhbWUsIHdrSW50ZW50LmdldCgpKTsKICNlbmRpZgogfQogCg==
</data>
<flag name="commit-queue"
          id="165044"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155572</attachid>
            <date>2012-07-31 09:50:56 -0700</date>
            <delta_ts>2012-07-31 09:53:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>89072_wk2_messagePorts.patch</filename>
            <type>text/plain</type>
            <size>70142</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5MjQwZmFiLi5hNjM1YjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTItMDctMzEgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBbV0syXSBBZGQgc3VwcG9ydCBmb3IgV2ViIEludGVudHMgTWVzc2Fn
ZVBvcnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
OTA3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZp
eCBoZWFkZXIgZm9yd2FyZGluZyBmb3IgV2ViQ29yZVxkb21cZGVmYXVsdFwqLmgKKyAgICAgICAg
b24gV2luZG93cyBwb3J0LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hh
bmdlLgorCisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovY29weUZvcndhcmRpbmdIZWFkZXJzLmNt
ZDoKKwogMjAxMi0wNy0zMSAgWW9zaGlmdW1pIElub3VlICA8eW9zaW5AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIENoYW5nZSBFbGVtZW50Ojppc1JlYWRPbmx5Rm9ybUNvbnRyb2wgdG8gRWxlbWVu
dDo6c2hvdWxkTWF0Y2hSZWFkT25seVNlbGVjdG9yL3Nob3VsZE1hdGNoUmVhZFdyaXRlU2VsZWN0
b3Igb3IgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6cmVhZE9ubHkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL2NvcHlGb3J3YXJkaW5nSGVhZGVycy5jbWQgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9jb3B5Rm9yd2FyZGluZ0hlYWRlcnMuY21kCmluZGV4
IDc5YzM2MjAuLjVlYmFmN2QgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL2NvcHlGb3J3YXJkaW5nSGVhZGVycy5jbWQKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovY29weUZvcndhcmRpbmdIZWFkZXJzLmNtZApAQCAtNzYsNiArNzYsNyBAQCB4Y29w
eSAveSAvZCAiJVByb2plY3REaXIlLi5ccmVuZGVyaW5nXHN0eWxlXCouaCIgIiVDT05GSUdVUkFU
SU9OQlVJTERESVIlXGluY2x1ZAogeGNvcHkgL3kgL2QgIiVQcm9qZWN0RGlyJS4uXHJlbmRlcmlu
Z1xzdmdcKi5oIiAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcaW5jbHVkZVxXZWJDb3JlIgogeGNv
cHkgL3kgL2QgIiVQcm9qZWN0RGlyJS4uXGVkaXRpbmdcKi5oIiAiJUNPTkZJR1VSQVRJT05CVUlM
RERJUiVcaW5jbHVkZVxXZWJDb3JlIgogeGNvcHkgL3kgL2QgIiVQcm9qZWN0RGlyJS4uXGRvbVwq
LmgiICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmUiCit4Y29weSAveSAv
ZCAiJVByb2plY3REaXIlLi5cZG9tXGRlZmF1bHRcKi5oIiAiJUNPTkZJR1VSQVRJT05CVUlMRERJ
UiVcaW5jbHVkZVxXZWJDb3JlIgogeGNvcHkgL3kgL2QgIiVQcm9qZWN0RGlyJS4uXHhtbFxwYXJz
ZXJcKi5oIiAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcaW5jbHVkZVxXZWJDb3JlIgogeGNvcHkg
L3kgL2QgIiVQcm9qZWN0RGlyJS4uXHhtbFwqLmgiICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxp
bmNsdWRlXFdlYkNvcmUiCiB4Y29weSAveSAvZCAiJVByb2plY3REaXIlLi5cc3ZnXGFuaW1hdGlv
blwqLmgiICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmUiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQyL0NNYWtl
TGlzdHMudHh0CmluZGV4IGE5NWViYTEuLjYzY2Y5NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CkBA
IC01NCw2ICs1NCw3IEBAIFNFVChXZWJLaXQyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtX
RUJDT1JFX0RJUn0vYnJpZGdlL2pzYyIKICAgICAiJHtXRUJDT1JFX0RJUn0vY3NzIgogICAgICIk
e1dFQkNPUkVfRElSfS9kb20iCisgICAgIiR7V0VCQ09SRV9ESVJ9L2RvbS9kZWZhdWx0IgogICAg
ICIke1dFQkNPUkVfRElSfS9lZGl0aW5nIgogICAgICIke1dFQkNPUkVfRElSfS9oaXN0b3J5Igog
ICAgICIke1dFQkNPUkVfRElSfS9odG1sIgpAQCAtMTU5LDcgKzE2MCw2IEBAIFNFVChXZWJLaXQy
X1NPVVJDRVMKICAgICBTaGFyZWQvV2ViR3JhcGhpY3NDb250ZXh0LmNwcAogICAgIFNoYXJlZC9X
ZWJIaXRUZXN0UmVzdWx0LmNwcAogICAgIFNoYXJlZC9XZWJJbWFnZS5jcHAKLSAgICBTaGFyZWQv
V2ViSW50ZW50RGF0YS5jcHAKICAgICBTaGFyZWQvV2ViSW50ZW50U2VydmljZUluZm8uY3BwCiAg
ICAgU2hhcmVkL1dlYktleWJvYXJkRXZlbnQuY3BwCiAgICAgU2hhcmVkL1dlYkxheWVyVHJlZUlu
Zm8uY3BwCkBAIC0yNTMsNiArMjUzLDcgQEAgU0VUKFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJv
Y2Vzcy9XZWJJY29uRGF0YWJhc2UuY3BwCiAgICAgVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZUNs
aWVudC5jcHAKICAgICBVSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCisgICAgVUlQcm9j
ZXNzL1dlYkludGVudERhdGEuY3BwCiAgICAgVUlQcm9jZXNzL1dlYktleVZhbHVlU3RvcmFnZU1h
bmFnZXJQcm94eS5jcHAKICAgICBVSVByb2Nlc3MvV2ViTGF5ZXJUcmVlUmVuZGVyZXIuY3BwCiAg
ICAgVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5jcHAKQEAgLTM3MSw2ICszNzIsNyBAQCBTRVQo
V2ViS2l0Ml9TT1VSQ0VTCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZUNsaWVudC5jcHAKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlRE9NV2luZG93RXh0ZW5zaW9uLmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnQuY3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuY3BwCiAgICAgV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3BwCiAgICAgV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VEaWFnbm9zdGljTG9nZ2luZ0Ns
aWVudC5jcHAKQEAgLTM5MSw2ICszOTMsNyBAQCBTRVQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNwcAogICAgIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcAogICAg
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnNwZWN0b3IuY3BwCisg
ICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudC5jcHAKICAg
ICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50UmVxdWVzdC5j
cHAKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlTmF2aWdhdGlv
bkFjdGlvbi5jcHAKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
Tm9kZUhhbmRsZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBmZTAyYjdiLi5jZDkzNjA3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTI2IEBACisyMDEyLTA3LTMxICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0
b3BoZS5kdW1lekBpbnRlbC5jb20+CisKKyAgICAgICAgW1dLMl0gQWRkIHN1cHBvcnQgZm9yIFdl
YiBJbnRlbnRzIE1lc3NhZ2VQb3J0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODkwNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgV2ViSW50ZW50cyBNZXNzYWdlUG9ydHMgaW4g
V2ViS2l0Mi4KKyAgICAgICAgTWVzc2FnZVBvcnRzIGNhbiBiZSBwYXNzZWQgd2l0aCBhIFdlYiBJ
bnRlbnQgaW4KKyAgICAgICAgb3JkZXIgdG8gb3BlbiBhIGRpcmVjdCBjb21tdW5pY2F0aW9uIGNo
YW5uZWwKKyAgICAgICAgYmV0d2VlbiB0aGUgV2ViIGFwcGxpY2F0aW9uIGFuZCB0aGUgaW50ZW50
IHNlcnZpY2UuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IEluamVjdGVk
QnVuZGxlSW50ZW50CisgICAgICAgIGNsYXNzIHdoaWNoIHdyYXBzIGEgV2ViQ29yZTo6SW50ZW50
LiBUaGlzIHdheQorICAgICAgICBpbmZvcm1hdGlvbiByZWdhcmRpbmcgdGhlIE1lc3NhZ2VQb3J0
cyBpbiBhIFdlYgorICAgICAgICBJbnRlbnQgaXMga2VwdCB3aGVuIHVzaW5nIGFuIGluamVjdGVk
IGJ1bmRsZS4KKworICAgICAgICBGb3IgdGhlIFVJUHJvY2VzcywgV2ViSW50ZW50RGF0YSBub3cg
Y2FycmllcworICAgICAgICBpZGVudGlmaWVycyBmb3IgdGhlIE1lc3NhZ2VQb3J0cyB3aGljaCBj
YW4gZ28gb3ZlcgorICAgICAgICBJUEMuIFRob3NlIGlkZW50aWZpZXJzIG1hcCB0byBhY3R1YWwg
TWVzc2FnZVBvcnRzCisgICAgICAgIHN0b3JlZCBpbiB0aGUgV2ViIHByb2Nlc3MuIFRoaXMgd2F5
LCB3aGVuIHRoZSBVSQorICAgICAgICBkZWxpdmVycyBhbiBpbnRlbnQgdG8gYSBmcmFtZSwgd2Ug
Y2FuIGdldCBiYWNrIHRoZQorICAgICAgICBjb3JyZXNwb25kaW5nIE1lc3NhZ2VQb3J0cyBmcm9t
IHRoZSBXZWIgcHJvY2VzcworICAgICAgICBiZWZvcmUgZGVsaXZlcmluZyB0byB0aGUgRE9NV2lu
ZG93LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUu
bGlzdC5hbToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tCYXNlLmg6CisgICAgICAgICogU2hh
cmVkL0FQSU9iamVjdC5oOgorICAgICAgICAqIFNoYXJlZC9JbnRlbnREYXRhLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6SW50ZW50RGF0YTo6SW50ZW50RGF0YSk6CisgICAgICAgIChXZWJLaXQ6Oklu
dGVudERhdGE6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OkludGVudERhdGE6OmRlY29kZSk6
CisgICAgICAgICogU2hhcmVkL0ludGVudERhdGEuaDoKKyAgICAgICAgKEludGVudERhdGEpOgor
ICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLSW50ZW50
RGF0YS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLSW50ZW50RGF0YS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJJbnRlbnREYXRhLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYkludGVudERhdGEuY3BwLgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSW50ZW50RGF0YTo6V2ViSW50ZW50RGF0YSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkludGVudERhdGE6On5XZWJJbnRlbnREYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SW50ZW50RGF0YTo6ZGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYkludGVudERhdGE6OnN1Z2dl
c3Rpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW50ZW50RGF0YTo6ZXh0cmEpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJbnRlbnREYXRhOjpleHRyYXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJJbnRlbnREYXRhLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJJbnRl
bnREYXRhLmguCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViSW50ZW50RGF0YSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkludGVudERhdGE6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkludGVudERhdGE6OmFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkludGVudERhdGE6
OnBheWxvYWRUeXBlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW50ZW50RGF0YTo6c2VydmljZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkludGVudERhdGE6OnN0b3JlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViSW50ZW50RGF0YTo6dHlwZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZUludGVudEZv
ckZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpyZW1vdmVNZXNzYWdlUG9ydENoYW5uZWwpOgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6
CisgICAgICAgIChXZWJQcm9jZXNzUHJveHkpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVBUElDYXN0Lmg6CisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnQuY3Bw
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnRlbnREYXRh
LmNwcC4KKyAgICAgICAgKFdLQnVuZGxlSW50ZW50R2V0VHlwZUlEKToKKyAgICAgICAgKFdLQnVu
ZGxlSW50ZW50Q3JlYXRlKToKKyAgICAgICAgKFdLQnVuZGxlSW50ZW50Q29weUFjdGlvbik6Cisg
ICAgICAgIChXS0J1bmRsZUludGVudENvcHlUeXBlKToKKyAgICAgICAgKFdLQnVuZGxlSW50ZW50
Q29weVNlcnZpY2UpOgorICAgICAgICAoV0tCdW5kbGVJbnRlbnRDb3B5U3VnZ2VzdGlvbnMpOgor
ICAgICAgICAoV0tCdW5kbGVJbnRlbnRDb3B5RXh0cmEpOgorICAgICAgICAoV0tCdW5kbGVJbnRl
bnRDb3B5RXh0cmFzKToKKyAgICAgICAgKFdLQnVuZGxlSW50ZW50TWVzc2FnZVBvcnRDb3VudCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVu
dC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnRlbnRE
YXRhLmguCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZUludGVudFJlcXVlc3QuY3BwOgorICAgICAgICAoV0tCdW5kbGVJbnRlbnRSZXF1ZXN0Q29weUlu
dGVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZUludGVudFJlcXVlc3QuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXS0J1bmRsZVBhZ2VEZWxpdmVySW50ZW50
VG9GcmFtZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZVBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlSW50ZW50LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJJ
bnRlbnREYXRhLmNwcC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OkluamVj
dGVkQnVuZGxlSW50ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRs
ZUludGVudDo6SW5qZWN0ZWRCdW5kbGVJbnRlbnQpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3Rl
ZEJ1bmRsZUludGVudDo6YWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVJ
bnRlbnQ6OnBheWxvYWRUeXBlKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVJbnRl
bnQ6OnNlcnZpY2UpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZUludGVudDo6ZGF0
YSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlSW50ZW50OjpleHRyYSk6CisgICAg
ICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlSW50ZW50OjpleHRyYXMpOgorICAgICAgICAoV2Vi
S2l0OjpJbmplY3RlZEJ1bmRsZUludGVudDo6c3VnZ2VzdGlvbnMpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnQuaDogUmVuYW1lZCBmcm9t
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJJbnRlbnREYXRhLmguCisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoSW5qZWN0ZWRCdW5kbGVJbnRlbnQpOgorICAgICAgICAoV2ViS2l0OjpJbmpl
Y3RlZEJ1bmRsZUludGVudDo6Y29yZUludGVudCk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVk
QnVuZGxlSW50ZW50Ojp0eXBlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVj
dGVkQnVuZGxlSW50ZW50UmVxdWVzdDo6aW50ZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5oOgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKEluamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJh
bWU6OmRlbGl2ZXJJbnRlbnQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
RnJhbWUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRlbGl2ZXJDb3JlSW50ZW50
VG9GcmFtZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViUGFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6YWRkTWVzc2FnZVBv
cnRDaGFubmVsKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3M6Om1lc3NhZ2VQb3J0Q2hhbm5lbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnJl
bW92ZU1lc3NhZ2VQb3J0Q2hhbm5lbCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lmg6CisgICAgICAgIChXZWJQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nl
c3MubWVzc2FnZXMuaW46CisKIDIwMTItMDctMzAgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFA
Y29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgW1RleG1hcF0gUmVtb3ZlIHRoZSBiYWNraW5nIHN0
b3JlIGFmdGVyICdzdHlsZS52aXNpYmlsaXR5JyBmb3IgYW4gZWxlbWVudCBzZXRzICdoaWRkZW4n
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJj
ZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggZTdhNjRmMC4uZWQ4YzA1ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC00NjksOCArNDY5LDYgQEAgd2Via2l0Ml9z
b3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdC5oIFwK
IAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSW1hZ2UuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViSW1hZ2UuaCBcCi0JU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkludGVudERhdGEu
Y3BwIFwKLQlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSW50ZW50RGF0YS5oIFwKIAlTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViSW50ZW50U2VydmljZUluZm8uY3BwIFwKIAlTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViSW50ZW50U2VydmljZUluZm8uaCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYktleWJvYXJkRXZlbnQuY3BwIFwKQEAgLTg3MSw2ICs4NjksOCBAQCB3ZWJraXQyX3NvdXJj
ZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJY29uRGF0YWJhc2VDbGllbnQu
aCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcCBcCiAJ
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmggXAorCVNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnRlbnREYXRhLmNwcCBcCisJU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkludGVudERhdGEuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYktl
eVZhbHVlU3RvcmFnZU1hbmFnZXJQcm94eS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUHJveHkuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHkuY3BwIFwKQEAgLTk2NCw2ICs5NjQsOCBA
QCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbml0aWFsaXplLmggXAogCVNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnNwZWN0b3IuY3BwIFwKIAlT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW5z
cGVjdG9yLmggXAorCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVJbnRlbnQuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50LmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnRSZXF1ZXN0LmNwcCBcCiAJ
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUlu
dGVudFJlcXVlc3QuaCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZU5vZGVIYW5kbGUuY3BwIFwKQEAgLTk5OCw2ICsxMDAwLDggQEAgd2Vi
a2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmggXAogCVNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNw
cCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZUhpdFRlc3RSZXN1bHQuaCBcCisJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudC5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnQuaCBcCiAJU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudFJlcXVl
c3QuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlSW50ZW50UmVxdWVzdC5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAgXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCmluZGV4IDY4NTRlY2MuLmE2YThiZDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKQEAgLTEzNSw2ICsxMzUsNyBAQCB0eXBlZGVmIGNv
bnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbiogV0tCdW5kbGVET01X
aW5kb3dFeHRlbnNpbwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVGcmFtZSog
V0tCdW5kbGVGcmFtZVJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQnVuZGxlSGl0
VGVzdFJlc3VsdCogV0tCdW5kbGVIaXRUZXN0UmVzdWx0UmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1
Y3QgT3BhcXVlV0tCdW5kbGVJbnNwZWN0b3IqIFdLQnVuZGxlSW5zcGVjdG9yUmVmOwordHlwZWRl
ZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVJbnRlbnQqIFdLQnVuZGxlSW50ZW50UmVmOwog
dHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVJbnRlbnRSZXF1ZXN0KiBXS0J1bmRs
ZUludGVudFJlcXVlc3RSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRsZU5h
dmlnYXRpb25BY3Rpb24qIFdLQnVuZGxlTmF2aWdhdGlvbkFjdGlvblJlZjsKIHR5cGVkZWYgY29u
c3Qgc3RydWN0IE9wYXF1ZVdLQnVuZGxlTm9kZUhhbmRsZSogV0tCdW5kbGVOb2RlSGFuZGxlUmVm
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCmluZGV4IDhlNGQyOTMuLjcwOGVmZmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKQEAgLTExNyw2ICsxMTcsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIFR5cGVCdW5kbGVGcmFtZSwKICAgICAgICAgVHlwZUJ1bmRsZUhpdFRlc3RSZXN1bHQsCiAg
ICAgICAgIFR5cGVCdW5kbGVJbnNwZWN0b3IsCisgICAgICAgIFR5cGVCdW5kbGVJbnRlbnQsCiAg
ICAgICAgIFR5cGVCdW5kbGVJbnRlbnRSZXF1ZXN0LAogICAgICAgICBUeXBlQnVuZGxlTmF2aWdh
dGlvbkFjdGlvbiwKICAgICAgICAgVHlwZUJ1bmRsZU5vZGVIYW5kbGUsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW50ZW50RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvSW50ZW50RGF0YS5jcHAKaW5kZXggNDk5NWIyZS4uNDEwNzg3NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0ludGVudERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9JbnRlbnREYXRhLmNwcApAQCAtMzEsNyArMzEsMTAgQEAKICNpbmNsdWRlICJBUElPYmpl
Y3QuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
SW50ZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9NZXNzYWdlUG9ydENoYW5uZWwuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCkBAIC00NSw2ICs0OCwxMiBAQCBJbnRlbnREYXRhOjpJbnRlbnREYXRh
KEludGVudCogY29yZUludGVudCkKICAgICAsIGV4dHJhcyhjb3JlSW50ZW50LT5leHRyYXMoKSkK
ICAgICAsIHN1Z2dlc3Rpb25zKGNvcmVJbnRlbnQtPnN1Z2dlc3Rpb25zKCkpCiB7CisgICAgTWVz
c2FnZVBvcnRDaGFubmVsQXJyYXkqIGNvcmVNZXNzYWdlUG9ydHMgPSBjb3JlSW50ZW50LT5tZXNz
YWdlUG9ydHMoKTsKKyAgICBpZiAoY29yZU1lc3NhZ2VQb3J0cykgeworICAgICAgICBzaXplX3Qg
bnVtTWVzc2FnZVBvcnRzID0gY29yZU1lc3NhZ2VQb3J0cy0+c2l6ZSgpOworICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG51bU1lc3NhZ2VQb3J0czsgKytpKQorICAgICAgICAgICAgbWVz
c2FnZVBvcnRzLmFwcGVuZChXZWJQcm9jZXNzOjpzaGFyZWQoKS5hZGRNZXNzYWdlUG9ydENoYW5u
ZWwoKCpjb3JlTWVzc2FnZVBvcnRzKVtpXS0+Y2hhbm5lbCgpKSk7CisgICAgfQogfQogCiB2b2lk
IEludGVudERhdGE6OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqIGVuY29kZXIpIGNv
bnN0CkBAIC01NSw2ICs2NCw3IEBAIHZvaWQgSW50ZW50RGF0YTo6ZW5jb2RlKENvcmVJUEM6OkFy
Z3VtZW50RW5jb2RlciogZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyLT5lbmNvZGUoQ29yZUlQ
Qzo6RGF0YVJlZmVyZW5jZShkYXRhKSk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKGV4dHJhcyk7CiAg
ICAgZW5jb2Rlci0+ZW5jb2RlKHN1Z2dlc3Rpb25zKTsKKyAgICBlbmNvZGVyLT5lbmNvZGUobWVz
c2FnZVBvcnRzKTsKIH0KIAogYm9vbCBJbnRlbnREYXRhOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1l
bnREZWNvZGVyKiBkZWNvZGVyLCBJbnRlbnREYXRhJiBpbnRlbnREYXRhKQpAQCAtNzMsNiArODMs
OCBAQCBib29sIEludGVudERhdGE6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRl
Y29kZXIsIEludGVudERhdGEmIGludGVudERhdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
aWYgKCFkZWNvZGVyLT5kZWNvZGUoaW50ZW50RGF0YS5zdWdnZXN0aW9ucykpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZShpbnRlbnREYXRhLm1lc3NhZ2VQ
b3J0cykpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiB0cnVlOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0ludGVudERhdGEuaCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9JbnRlbnREYXRhLmgKaW5kZXggOTZlMmQ5Zi4uZTg0MzVjMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0ludGVudERhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvSW50ZW50RGF0YS5oCkBAIC0yOSw3ICsyOSw4IEBACiAjaWYgRU5BQkxFKFdFQl9J
TlRFTlRTKQogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCi0jaW5jbHVkZSAiR2VuZXJpY0NhbGxi
YWNrLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9LVVJMLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIENvcmVJUEMg
ewpAQCAtNTYsNiArNTcsNyBAQCBzdHJ1Y3QgSW50ZW50RGF0YSB7CiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IGRhdGE7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gZXh0cmFzOwogICAgIFZlY3Rv
cjxXZWJDb3JlOjpLVVJMPiBzdWdnZXN0aW9uczsKKyAgICBWZWN0b3I8dWludDY0X3Q+IG1lc3Nh
Z2VQb3J0czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYkludGVudERhdGEuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYkludGVudERhdGEuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NjEyOGRi
Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJJbnRlbnREYXRhLmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIg
SW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJJbnRlbnREYXRhLmgiCi0KLSNpZiBFTkFCTEUo
V0VCX0lOVEVOVFMpCi0KLSNpbmNsdWRlICJJbW11dGFibGVBcnJheS5oIgotI2luY2x1ZGUgIklt
bXV0YWJsZURpY3Rpb25hcnkuaCIKLSNpbmNsdWRlICJXZWJTdHJpbmcuaCIKLSNpbmNsdWRlICJX
ZWJVUkwuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVdlYkludGVudERhdGE6OldlYkludGVu
dERhdGEoY29uc3QgSW50ZW50RGF0YSYgc3RvcmUpCi0gICAgOiBtX3N0b3JlKHN0b3JlKQotewot
fQotCi1QYXNzUmVmUHRyPFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gV2ViSW50ZW50RGF0YTo6
ZGF0YSgpIGNvbnN0Ci17Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGFDb3B5ID0gbV9zdG9yZS5k
YXRhOwotICAgIHJldHVybiBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0KGRhdGFDb3B5
KTsKLX0KLQotUGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4gV2ViSW50ZW50RGF0YTo6c3VnZ2Vz
dGlvbnMoKSBjb25zdAotewotICAgIGNvbnN0IHNpemVfdCBudW1TdWdnZXN0aW9ucyA9IG1fc3Rv
cmUuc3VnZ2VzdGlvbnMuc2l6ZSgpOwotICAgIFZlY3RvcjxSZWZQdHI8QVBJT2JqZWN0PiA+IHdr
U3VnZ2VzdGlvbnMobnVtU3VnZ2VzdGlvbnMpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBudW1TdWdnZXN0aW9uczsgKytpKQotICAgICAgICB3a1N1Z2dlc3Rpb25zW2ldID0gV2ViVVJM
OjpjcmVhdGUobV9zdG9yZS5zdWdnZXN0aW9uc1tpXSk7Ci0gICAgcmV0dXJuIEltbXV0YWJsZUFy
cmF5OjphZG9wdCh3a1N1Z2dlc3Rpb25zKTsKLX0KLQotU3RyaW5nIFdlYkludGVudERhdGE6OmV4
dHJhKGNvbnN0IFN0cmluZyYga2V5KSBjb25zdAotewotICAgIHJldHVybiBtX3N0b3JlLmV4dHJh
cy5nZXQoa2V5KTsKLX0KLQotUGFzc1JlZlB0cjxJbW11dGFibGVEaWN0aW9uYXJ5PiBXZWJJbnRl
bnREYXRhOjpleHRyYXMoKSBjb25zdAotewotICAgIEltbXV0YWJsZURpY3Rpb25hcnk6Ok1hcFR5
cGUgd2tFeHRyYXM7Ci0gICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46OmNvbnN0X2l0ZXJhdG9y
IGVuZCA9IG1fc3RvcmUuZXh0cmFzLmVuZCgpOwotICAgIGZvciAoSGFzaE1hcDxTdHJpbmcsIFN0
cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9zdG9yZS5leHRyYXMuYmVnaW4oKTsgaXQgIT0g
ZW5kOyArK2l0KQotICAgICAgICB3a0V4dHJhcy5zZXQoaXQtPmZpcnN0LCBXZWJTdHJpbmc6OmNy
ZWF0ZShpdC0+c2Vjb25kKSk7Ci0gICAgcmV0dXJuIEltbXV0YWJsZURpY3Rpb25hcnk6OmFkb3B0
KHdrRXh0cmFzKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFC
TEUoV0VCX0lOVEVOVFMpCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJJ
bnRlbnREYXRhLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSW50ZW50RGF0YS5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZWNmNGFlLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJJbnRlbnREYXRhLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYkludGVudERhdGFfaAotI2RlZmlu
ZSBXZWJJbnRlbnREYXRhX2gKLQotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLQotI2luY2x1ZGUg
IkFQSU9iamVjdC5oIgotI2luY2x1ZGUgIkludGVudERhdGEuaCIKLSNpbmNsdWRlICJXZWJTZXJp
YWxpemVkU2NyaXB0VmFsdWUuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotCi1uYW1l
c3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViSW50ZW50RGF0YSA6IHB1YmxpYyBBUElPYmplY3Qg
ewotcHVibGljOgotICAgIHN0YXRpYyBjb25zdCBUeXBlIEFQSVR5cGUgPSBUeXBlSW50ZW50RGF0
YTsKLQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkludGVudERhdGE+IGNyZWF0ZShjb25zdCBJ
bnRlbnREYXRhJiBzdG9yZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2Vi
SW50ZW50RGF0YShzdG9yZSkpOwotICAgIH0KLQotICAgIHZpcnR1YWwgfldlYkludGVudERhdGEo
KSB7IH0KLQotICAgIGNvbnN0IFN0cmluZyYgYWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdG9y
ZS5hY3Rpb247IH0KLSAgICBjb25zdCBTdHJpbmcmIHBheWxvYWRUeXBlKCkgY29uc3QgeyByZXR1
cm4gbV9zdG9yZS50eXBlOyB9Ci0gICAgY29uc3QgV2ViQ29yZTo6S1VSTCYgc2VydmljZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RvcmUuc2VydmljZTsgfQotICAgIFBhc3NSZWZQdHI8V2ViU2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBkYXRhKCkgY29uc3Q7Ci0gICAgU3RyaW5nIGV4dHJhKGNvbnN0IFN0
cmluZyYga2V5KSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPEltbXV0YWJsZURpY3Rpb25hcnk+IGV4
dHJhcygpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8SW1tdXRhYmxlQXJyYXk+IHN1Z2dlc3Rpb25z
KCkgY29uc3Q7Ci0KLSAgICBjb25zdCBJbnRlbnREYXRhJiBzdG9yZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RvcmU7IH0KLQotcHJpdmF0ZToKLSAgICBXZWJJbnRlbnREYXRhKGNvbnN0IEludGVudERh
dGEmKTsKLQotICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQVBJVHlwZTsg
fQotCi0gICAgSW50ZW50RGF0YSBtX3N0b3JlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0lOVEVOVFMpCi0KLSNlbmRpZiAvLyBXZWJJbnRlbnRE
YXRhX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2Vi
S2l0Mi9UYXJnZXQucHJpCmluZGV4IGVkZWE5YzUuLjIwN2QzNGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQpAQCAt
MTEyLDcgKzExMiw2IEBAIEhFQURFUlMgKz0gXAogICAgIFNoYXJlZC9XZWJHcmFwaGljc0NvbnRl
eHQuaCBcCiAgICAgU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHQuaCBcCiAgICAgU2hhcmVkL1dlYklt
YWdlLmggXAotICAgIFNoYXJlZC9XZWJJbnRlbnREYXRhLmggXAogICAgIFNoYXJlZC9XZWJJbnRl
bnRTZXJ2aWNlSW5mby5oIFwKICAgICBTaGFyZWQvV2ViTGF5ZXJUcmVlSW5mby5oIFwKICAgICBT
aGFyZWQvV2ViTmF2aWdhdGlvbkRhdGFTdG9yZS5oIFwKQEAgLTI2Nyw2ICsyNjYsNyBAQCBIRUFE
RVJTICs9IFwKICAgICBVSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlLmggXAogICAgIFVJUHJvY2Vz
cy9XZWJJY29uRGF0YWJhc2VDbGllbnQuaCBcCiAgICAgVUlQcm9jZXNzL1dlYkluc3BlY3RvclBy
b3h5LmggXAorICAgIFVJUHJvY2Vzcy9XZWJJbnRlbnREYXRhLmggXAogICAgIFVJUHJvY2Vzcy9X
ZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUHJveHkuaCBcCiAgICAgVUlQcm9jZXNzL1dlYkxheWVy
VHJlZVJlbmRlcmVyLmggXAogICAgIFVJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuaCBcCkBAIC0z
MTksNiArMzE5LDcgQEAgSEVBREVSUyArPSBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZUJhY2tGb3J3YXJkTGlzdC5oIFwKICAgICBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5oIFwKICAgICBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSGl0VGVzdFJlc3VsdC5oIFwKKyAg
ICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50LmggXAogICAg
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnRSZXF1ZXN0Lmgg
XAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVOYXZpZ2F0aW9u
QWN0aW9uLmggXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVO
b2RlSGFuZGxlLmggXApAQCAtMzMyLDYgKzMzMyw3IEBAIEhFQURFUlMgKz0gXAogICAgIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCBcCiAgICAgV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5oIFwK
ICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3Vs
dC5oIFwKKyAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50
LmggXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnRS
ZXF1ZXN0LmggXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVO
YXZpZ2F0aW9uQWN0aW9uLmggXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaCBcCkBAIC00OTUsNyArNDk3LDYgQEAgU09V
UkNFUyArPSBcCiAgICAgU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHQuY3BwIFwKICAgICBTaGFyZWQv
V2ViS2V5Ym9hcmRFdmVudC5jcHAgXAogICAgIFNoYXJlZC9XZWJJbWFnZS5jcHAgXAotICAgIFNo
YXJlZC9XZWJJbnRlbnREYXRhLmNwcCBcCiAgICAgU2hhcmVkL1dlYkludGVudFNlcnZpY2VJbmZv
LmNwcCBcCiAgICAgU2hhcmVkL1dlYkxheWVyVHJlZUluZm8uY3BwIFwKICAgICBTaGFyZWQvV2Vi
TW91c2VFdmVudC5jcHAgXApAQCAtNjM4LDYgKzYzOSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIFVJ
UHJvY2Vzcy9XZWJJY29uRGF0YWJhc2UuY3BwIFwKICAgICBVSVByb2Nlc3MvV2ViSWNvbkRhdGFi
YXNlQ2xpZW50LmNwcCBcCiAgICAgVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcCBcCisg
ICAgVUlQcm9jZXNzL1dlYkludGVudERhdGEuY3BwIFwKICAgICBVSVByb2Nlc3MvV2ViS2V5VmFs
dWVTdG9yYWdlTWFuYWdlclByb3h5LmNwcCBcCiAgICAgVUlQcm9jZXNzL1dlYkxheWVyVHJlZVJl
bmRlcmVyLmNwcCBcCiAgICAgVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5jcHAgXApAQCAtNzAz
LDYgKzcwNSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAgXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUluc3BlY3Rvci5jcHAgXAorICAgIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnQuY3BwIFwKICAgICBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50UmVxdWVzdC5jcHAgXAogICAgIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcCBc
CiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU5vZGVIYW5kbGUu
Y3BwIFwKQEAgLTcxOCw2ICs3MjEsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQ2xpZW50LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5jcHAgXAogICAg
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNw
cCBcCisgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudC5j
cHAgXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnRS
ZXF1ZXN0LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZU5hdmlnYXRpb25BY3Rpb24uY3BwIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnRlbnREYXRhLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0ludGVudERhdGEuY3BwCmluZGV4IDdhOTJkYjUuLmI1MTM3
NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0ludGVudERh
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0ludGVudERhdGEu
Y3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAi
V0tEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiV0tTdHJpbmcuaCIKKyNpbmNsdWRlICJXZWJTZXJp
YWxpemVkU2NyaXB0VmFsdWUuaCIKIAogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKICNpbmNsdWRl
ICJXZWJJbnRlbnREYXRhLmgiCkBAIC00NywyNyArNDgsNiBAQCBXS1R5cGVJRCBXS0ludGVudERh
dGFHZXRUeXBlSUQoKQogI2VuZGlmCiB9CiAKLVdLSW50ZW50RGF0YVJlZiBXS0ludGVudERhdGFD
cmVhdGUoV0tEaWN0aW9uYXJ5UmVmIGluaXREaWN0aW9uYXJ5UmVmKQotewotI2lmIEVOQUJMRShX
RUJfSU5URU5UUykKLSAgICBJbnRlbnREYXRhIGludGVudERhdGE7Ci0gICAgV0tTdHJpbmdSZWYg
YWN0aW9uID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JL
ZXkoaW5pdERpY3Rpb25hcnlSZWYsIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJhY3Rp
b24iKSkpOwotICAgIEFTU0VSVChhY3Rpb24pOwotICAgIGludGVudERhdGEuYWN0aW9uID0gdG9J
bXBsKGFjdGlvbiktPnN0cmluZygpOwotICAgIFdLU3RyaW5nUmVmIHR5cGUgPSBzdGF0aWNfY2Fz
dDxXS1N0cmluZ1JlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShpbml0RGljdGlvbmFyeVJl
ZiwgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoInR5cGUiKSkpOwotICAgIEFTU0VSVCh0
eXBlKTsKLSAgICBpbnRlbnREYXRhLnR5cGUgPSB0b0ltcGwodHlwZSktPnN0cmluZygpOwotICAg
IFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmIGRhdGEgPSBzdGF0aWNfY2FzdDxXS1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZVJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShpbml0RGljdGlvbmFy
eVJlZiwgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImRhdGEiKSkpOwotICAgIGlmIChk
YXRhKQotICAgICAgICBpbnRlbnREYXRhLmRhdGEgPSB0b0ltcGwoZGF0YSktPmRhdGFSZWZlcmVu
Y2UoKS52ZWN0b3IoKTsKLQotICAgIFJlZlB0cjxXZWJJbnRlbnREYXRhPiB3ZWJJbnRlbnREYXRh
ID0gV2ViSW50ZW50RGF0YTo6Y3JlYXRlKGludGVudERhdGEpOwotICAgIHJldHVybiB0b0FQSSh3
ZWJJbnRlbnREYXRhLnJlbGVhc2UoKS5sZWFrUmVmKCkpOwotI2Vsc2UKLSAgICByZXR1cm4gMDsK
LSNlbmRpZgotfQotCiBXS1N0cmluZ1JlZiBXS0ludGVudERhdGFDb3B5QWN0aW9uKFdLSW50ZW50
RGF0YVJlZiBpbnRlbnRSZWYpCiB7CiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLSW50ZW50RGF0YS5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLSW50ZW50RGF0YS5oCmluZGV4IDFmODA5ZWMuLjhm
Y2I4NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0ludGVu
dERhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnRlbnREYXRh
LmgKQEAgLTM0LDggKzM0LDYgQEAgZXh0ZXJuICJDIiB7CiAKIFdLX0VYUE9SVCBXS1R5cGVJRCBX
S0ludGVudERhdGFHZXRUeXBlSUQoKTsKIAotV0tfRVhQT1JUIFdLSW50ZW50RGF0YVJlZiBXS0lu
dGVudERhdGFDcmVhdGUoV0tEaWN0aW9uYXJ5UmVmIGluaXREaWN0aW9uYXJ5KTsKLQogV0tfRVhQ
T1JUIFdLU3RyaW5nUmVmIFdLSW50ZW50RGF0YUNvcHlBY3Rpb24oV0tJbnRlbnREYXRhUmVmIGlu
dGVudFJlZik7CiBXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tJbnRlbnREYXRhQ29weVR5cGUoV0tJ
bnRlbnREYXRhUmVmIGludGVudFJlZik7CiBXS19FWFBPUlQgV0tVUkxSZWYgV0tJbnRlbnREYXRh
Q29weVNlcnZpY2UoV0tJbnRlbnREYXRhUmVmIGludGVudFJlZik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW50ZW50RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViSW50ZW50RGF0YS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uZGMxOTBkNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJJbnRlbnREYXRhLmNwcApAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViSW50ZW50RGF0YS5oIgorCisjaWYg
RU5BQkxFKFdFQl9JTlRFTlRTKQorCisjaW5jbHVkZSAiSW1tdXRhYmxlQXJyYXkuaCIKKyNpbmNs
dWRlICJJbW11dGFibGVEaWN0aW9uYXJ5LmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5Lmgi
CisjaW5jbHVkZSAiV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSAiV2ViU3Ry
aW5nLmgiCisjaW5jbHVkZSAiV2ViVVJMLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJJ
bnRlbnREYXRhOjpXZWJJbnRlbnREYXRhKGNvbnN0IEludGVudERhdGEmIHN0b3JlLCBXZWJQcm9j
ZXNzUHJveHkqIHByb2Nlc3MpCisgICAgOiBtX3N0b3JlKHN0b3JlKQorICAgICwgbV9wcm9jZXNz
KHByb2Nlc3MpCit7Cit9CisKK1dlYkludGVudERhdGE6On5XZWJJbnRlbnREYXRhKCkKK3sKKyAg
ICAvLyBSZW1vdmUgTWVzc2FnZVBvcnRDaGFubmVscyBmcm9tIFdlYlByb2Nlc3MuCisgICAgaWYg
KG1fcHJvY2VzcyAmJiAhbV9zdG9yZS5tZXNzYWdlUG9ydHMuaXNFbXB0eSgpKSB7CisgICAgICAg
IHNpemVfdCBudW1NZXNzYWdlUG9ydHMgPSBtX3N0b3JlLm1lc3NhZ2VQb3J0cy5zaXplKCk7Cisg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtTWVzc2FnZVBvcnRzOyArK2kpCisgICAg
ICAgICAgICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VQb3J0Q2hhbm5lbChtX3N0b3JlLm1lc3Nh
Z2VQb3J0c1tpXSk7CisgICAgfQorfQorCitQYXNzUmVmUHRyPFdlYlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gV2ViSW50ZW50RGF0YTo6ZGF0YSgpIGNvbnN0Cit7CisgICAgVmVjdG9yPHVpbnQ4X3Q+
IGRhdGFDb3B5ID0gbV9zdG9yZS5kYXRhOworICAgIHJldHVybiBXZWJTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmFkb3B0KGRhdGFDb3B5KTsKK30KKworUGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4g
V2ViSW50ZW50RGF0YTo6c3VnZ2VzdGlvbnMoKSBjb25zdAoreworICAgIGNvbnN0IHNpemVfdCBu
dW1TdWdnZXN0aW9ucyA9IG1fc3RvcmUuc3VnZ2VzdGlvbnMuc2l6ZSgpOworICAgIFZlY3RvcjxS
ZWZQdHI8QVBJT2JqZWN0PiA+IHdrU3VnZ2VzdGlvbnMobnVtU3VnZ2VzdGlvbnMpOworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1TdWdnZXN0aW9uczsgKytpKQorICAgICAgICB3a1N1
Z2dlc3Rpb25zW2ldID0gV2ViVVJMOjpjcmVhdGUobV9zdG9yZS5zdWdnZXN0aW9uc1tpXSk7Cisg
ICAgcmV0dXJuIEltbXV0YWJsZUFycmF5OjphZG9wdCh3a1N1Z2dlc3Rpb25zKTsKK30KKworU3Ry
aW5nIFdlYkludGVudERhdGE6OmV4dHJhKGNvbnN0IFN0cmluZyYga2V5KSBjb25zdAoreworICAg
IHJldHVybiBtX3N0b3JlLmV4dHJhcy5nZXQoa2V5KTsKK30KKworUGFzc1JlZlB0cjxJbW11dGFi
bGVEaWN0aW9uYXJ5PiBXZWJJbnRlbnREYXRhOjpleHRyYXMoKSBjb25zdAoreworICAgIEltbXV0
YWJsZURpY3Rpb25hcnk6Ok1hcFR5cGUgd2tFeHRyYXM7CisgICAgSGFzaE1hcDxTdHJpbmcsIFN0
cmluZz46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fc3RvcmUuZXh0cmFzLmVuZCgpOworICAgIGZv
ciAoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9zdG9yZS5l
eHRyYXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICB3a0V4dHJhcy5zZXQoaXQt
PmZpcnN0LCBXZWJTdHJpbmc6OmNyZWF0ZShpdC0+c2Vjb25kKSk7CisgICAgcmV0dXJuIEltbXV0
YWJsZURpY3Rpb25hcnk6OmFkb3B0KHdrRXh0cmFzKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0lOVEVOVFMpCisKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnRlbnREYXRhLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViSW50ZW50RGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjlkNTlmOTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
SW50ZW50RGF0YS5oCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
SW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgV2ViSW50ZW50RGF0YV9oCisjZGVmaW5lIFdlYkludGVudERhdGFfaAorCisjaWYgRU5BQkxF
KFdFQl9JTlRFTlRTKQorCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiSW50ZW50
RGF0YS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBJbW11dGFibGVBcnJheTsKK2Ns
YXNzIEltbXV0YWJsZURpY3Rpb25hcnk7CitjbGFzcyBXZWJQcm9jZXNzUHJveHk7CitjbGFzcyBX
ZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU7CisKK2NsYXNzIFdlYkludGVudERhdGEgOiBwdWJsaWMg
QVBJT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlw
ZUludGVudERhdGE7CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJJbnRlbnREYXRhPiBjcmVh
dGUoY29uc3QgSW50ZW50RGF0YSYgc3RvcmUsIFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcykKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViSW50ZW50RGF0YShzdG9yZSwgcHJv
Y2VzcykpOworICAgIH0KKworICAgIHZpcnR1YWwgfldlYkludGVudERhdGEoKTsKKworICAgIGNv
bnN0IFN0cmluZyYgYWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdG9yZS5hY3Rpb247IH0KKyAg
ICBjb25zdCBTdHJpbmcmIHBheWxvYWRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9zdG9yZS50eXBl
OyB9CisgICAgY29uc3QgV2ViQ29yZTo6S1VSTCYgc2VydmljZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c3RvcmUuc2VydmljZTsgfQorICAgIFBhc3NSZWZQdHI8V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBkYXRhKCkgY29uc3Q7CisgICAgU3RyaW5nIGV4dHJhKGNvbnN0IFN0cmluZyYga2V5KSBjb25z
dDsKKyAgICBQYXNzUmVmUHRyPEltbXV0YWJsZURpY3Rpb25hcnk+IGV4dHJhcygpIGNvbnN0Owor
ICAgIFBhc3NSZWZQdHI8SW1tdXRhYmxlQXJyYXk+IHN1Z2dlc3Rpb25zKCkgY29uc3Q7CisKKyAg
ICBjb25zdCBJbnRlbnREYXRhJiBzdG9yZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmU7IH0KKwor
cHJpdmF0ZToKKyAgICBXZWJJbnRlbnREYXRhKGNvbnN0IEludGVudERhdGEmLCBXZWJQcm9jZXNz
UHJveHkqKTsKKworICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQVBJVHlw
ZTsgfQorCisgICAgSW50ZW50RGF0YSBtX3N0b3JlOworICAgIFdlYlByb2Nlc3NQcm94eSogbV9w
cm9jZXNzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUo
V0VCX0lOVEVOVFMpCisKKyNlbmRpZiAvLyBXZWJJbnRlbnREYXRhX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggNmNmMjYwYS4uZTM2ZjQ0MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTIxOTAsNyArMjE5MCw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWUodWludDY0X3Qg
ZnJhbWVJRCwgY29uc3QgSW50ZW50RGF0YSYKICAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IHBy
b2Nlc3MoKS0+d2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhmcmFtZSk7CiAK
LSAgICBSZWZQdHI8V2ViSW50ZW50RGF0YT4gd2ViSW50ZW50RGF0YSA9IFdlYkludGVudERhdGE6
OmNyZWF0ZShpbnRlbnREYXRhKTsKKyAgICBSZWZQdHI8V2ViSW50ZW50RGF0YT4gd2ViSW50ZW50
RGF0YSA9IFdlYkludGVudERhdGE6OmNyZWF0ZShpbnRlbnREYXRhLCBwcm9jZXNzKCkpOwogICAg
IG1fbG9hZGVyQ2xpZW50LmRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZSh0aGlzLCBmcmFtZSwgd2Vi
SW50ZW50RGF0YS5nZXQoKSwgdXNlckRhdGEuZ2V0KCkpOwogfQogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGUzY2RjODguLjI2YzNh
ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBA
IC0xOTYsNiArMTk2LDE0IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZW1vdmVXZWJQYWdlKHVp
bnQ2NF90IHBhZ2VJRCkKICAgICBtX3BhZ2VNYXAucmVtb3ZlKHBhZ2VJRCk7CiB9CiAKK3ZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjpyZW1vdmVNZXNzYWdlUG9ydENoYW5uZWwodWludDY0X3QgY2hhbm5l
bElEKQoreworICAgIGlmICghaXNWYWxpZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpSZW1vdmVNZXNzYWdlUG9ydENoYW5uZWwoY2hhbm5lbElE
KSwgMCk7Cit9CisKIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIFdlYlByb2Nlc3NQcm94eTo6d2Vi
QmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IGl0ZW1JRCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9i
YWNrRm9yd2FyZExpc3RJdGVtTWFwLmdldChpdGVtSUQpLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IDhlNzY4YmYuLjdiMWNhMDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTg3LDYgKzg3LDgg
QEAgcHVibGljOgogICAgIHZvaWQgYWRkRXhpc3RpbmdXZWJQYWdlKFdlYlBhZ2VQcm94eSosIHVp
bnQ2NF90IHBhZ2VJRCk7CiAgICAgdm9pZCByZW1vdmVXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCk7
CiAKKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VQb3J0Q2hhbm5lbCh1aW50NjRfdCBjaGFubmVsSUQp
OworCiAgICAgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogd2ViQmFja0ZvcndhcmRJdGVtKHVpbnQ2
NF90IGl0ZW1JRCkgY29uc3Q7CiAKICAgICBSZXNwb25zaXZlbmVzc1RpbWVyKiByZXNwb25zaXZl
bmVzc1RpbWVyKCkgeyByZXR1cm4gJm1fcmVzcG9uc2l2ZW5lc3NUaW1lcjsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZUFQSUNhc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVBUElDYXN0LmgKaW5kZXggMzM1NWQwOC4uMDE4ZWY3OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUFQ
SUNhc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlQVBJQ2FzdC5oCkBAIC00Niw2ICs0Niw3IEBAIGNsYXNzIEluamVjdGVkQnVu
ZGxlQmFja0ZvcndhcmRMaXN0OwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJ
dGVtOwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb247CiBjbGFzcyBJbmpl
Y3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ7CitjbGFzcyBJbmplY3RlZEJ1bmRsZUludGVudDsKIGNs
YXNzIEluamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdDsKIGNsYXNzIEluamVjdGVkQnVuZGxlTmF2
aWdhdGlvbkFjdGlvbjsKIGNsYXNzIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTsKQEAgLTY0LDYg
KzY1LDcgQEAgV0tfQUREX0FQSV9NQVBQSU5HKFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uUmVm
LCBJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2kKIFdLX0FERF9BUElfTUFQUElORyhXS0J1
bmRsZUZyYW1lUmVmLCBXZWJGcmFtZSkKIFdLX0FERF9BUElfTUFQUElORyhXS0J1bmRsZUhpdFRl
c3RSZXN1bHRSZWYsIEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdCkKIFdLX0FERF9BUElfTUFQ
UElORyhXS0J1bmRsZUluc3BlY3RvclJlZiwgV2ViSW5zcGVjdG9yKQorV0tfQUREX0FQSV9NQVBQ
SU5HKFdLQnVuZGxlSW50ZW50UmVmLCBJbmplY3RlZEJ1bmRsZUludGVudCkKIFdLX0FERF9BUElf
TUFQUElORyhXS0J1bmRsZUludGVudFJlcXVlc3RSZWYsIEluamVjdGVkQnVuZGxlSW50ZW50UmVx
dWVzdCkKIFdLX0FERF9BUElfTUFQUElORyhXS0J1bmRsZU5hdmlnYXRpb25BY3Rpb25SZWYsIElu
amVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbikKIFdLX0FERF9BUElfTUFQUElORyhXS0J1bmRs
ZU5vZGVIYW5kbGVSZWYsIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRl
bnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZUludGVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzdk
ZjBkOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnQuY3BwCkBAIC0wLDAgKzEsMTMzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0tCdW5kbGVJ
bnRlbnQuaCIKKworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyNpbmNsdWRlICJJbW11dGFibGVB
cnJheS5oIgorI2luY2x1ZGUgIkltbXV0YWJsZURpY3Rpb25hcnkuaCIKKyNpbmNsdWRlICJJbmpl
Y3RlZEJ1bmRsZUludGVudC5oIgorI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldL
QnVuZGxlQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLRGljdGlvbmFyeS5oIgorI2luY2x1ZGUgIldL
U3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjZW5kaWYK
KwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitX
S1R5cGVJRCBXS0J1bmRsZUludGVudEdldFR5cGVJRCgpCit7CisjaWYgRU5BQkxFKFdFQl9JTlRF
TlRTKQorICAgIHJldHVybiB0b0FQSShJbmplY3RlZEJ1bmRsZUludGVudDo6QVBJVHlwZSk7Cisj
ZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCit9CisKK1dLQnVuZGxlSW50ZW50UmVmIFdLQnVu
ZGxlSW50ZW50Q3JlYXRlKFdLRGljdGlvbmFyeVJlZiBpbml0RGljdGlvbmFyeVJlZikKK3sKKyNp
ZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgV0tTdHJpbmdSZWYgYWN0aW9uID0gc3RhdGljX2Nh
c3Q8V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkoaW5pdERpY3Rpb25hcnlS
ZWYsIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJhY3Rpb24iKSkpOworICAgIEFTU0VS
VChhY3Rpb24pOworICAgIFdLU3RyaW5nUmVmIHR5cGUgPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1Jl
Zj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShpbml0RGljdGlvbmFyeVJlZiwgV0tTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoInR5cGUiKSkpOworICAgIEFTU0VSVCh0eXBlKTsKKyAgICBX
S1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiBkYXRhID0gc3RhdGljX2Nhc3Q8V0tTZXJpYWxpemVk
U2NyaXB0VmFsdWVSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkoaW5pdERpY3Rpb25hcnlS
ZWYsIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJkYXRhIikpKTsKKyAgICBNZXNzYWdl
UG9ydEFycmF5IGR1bW15UG9ydHM7CisgICAgRXhjZXB0aW9uQ29kZSBlYzsKKworICAgIFJlZlB0
cjxJbnRlbnQ+IGNvcmVJbnRlbnQgPSBJbnRlbnQ6OmNyZWF0ZSh0b0ltcGwoYWN0aW9uKS0+c3Ry
aW5nKCksIHRvSW1wbCh0eXBlKS0+c3RyaW5nKCksIGRhdGEgPyBzdGF0aWNfY2FzdDxTZXJpYWxp
emVkU2NyaXB0VmFsdWUqPih0b0ltcGwoZGF0YSktPmludGVybmFsUmVwcmVzZW50YXRpb24oKSkg
OiAwLCBkdW1teVBvcnRzLCBlYyk7CisgICAgcmV0dXJuIHRvQVBJKEluamVjdGVkQnVuZGxlSW50
ZW50OjpjcmVhdGUoY29yZUludGVudC5nZXQoKSkubGVha1JlZigpKTsKKyNlbHNlCisgICAgcmV0
dXJuIDA7CisjZW5kaWYKK30KKworV0tTdHJpbmdSZWYgV0tCdW5kbGVJbnRlbnRDb3B5QWN0aW9u
KFdLQnVuZGxlSW50ZW50UmVmIGludGVudFJlZikKK3sKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMp
CisgICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChpbnRlbnRSZWYpLT5hY3Rpb24oKSk7Cisj
ZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCit9CisKK1dLU3RyaW5nUmVmIFdLQnVuZGxlSW50
ZW50Q29weVR5cGUoV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmKQoreworI2lmIEVOQUJMRShX
RUJfSU5URU5UUykKKyAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKGludGVudFJlZiktPnBh
eWxvYWRUeXBlKCkpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCitXS1VSTFJl
ZiBXS0J1bmRsZUludGVudENvcHlTZXJ2aWNlKFdLQnVuZGxlSW50ZW50UmVmIGludGVudFJlZikK
K3sKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgcmV0dXJuIHRvQ29waWVkVVJMQVBJKHRv
SW1wbChpbnRlbnRSZWYpLT5zZXJ2aWNlKCkpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRp
ZgorfQorCitXS0FycmF5UmVmIFdLQnVuZGxlSW50ZW50Q29weVN1Z2dlc3Rpb25zKFdLQnVuZGxl
SW50ZW50UmVmIGludGVudFJlZikKK3sKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgcmV0
dXJuIHRvQVBJKHRvSW1wbChpbnRlbnRSZWYpLT5zdWdnZXN0aW9ucygpLmxlYWtSZWYoKSk7Cisj
ZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCit9CisKK1dLU3RyaW5nUmVmIFdLQnVuZGxlSW50
ZW50Q29weUV4dHJhKFdLQnVuZGxlSW50ZW50UmVmIGludGVudFJlZiwgV0tTdHJpbmdSZWYga2V5
KQoreworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9J
bXBsKGludGVudFJlZiktPmV4dHJhKHRvV1RGU3RyaW5nKGtleSkpKTsKKyNlbHNlCisgICAgcmV0
dXJuIDA7CisjZW5kaWYKK30KKworV0tEaWN0aW9uYXJ5UmVmIFdLQnVuZGxlSW50ZW50Q29weUV4
dHJhcyhXS0J1bmRsZUludGVudFJlZiBpbnRlbnRSZWYpCit7CisjaWYgRU5BQkxFKFdFQl9JTlRF
TlRTKQorICAgIHJldHVybiB0b0FQSSh0b0ltcGwoaW50ZW50UmVmKS0+ZXh0cmFzKCkubGVha1Jl
ZigpKTsKKyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KKworc2l6ZV90IFdLQnVuZGxl
SW50ZW50TWVzc2FnZVBvcnRDb3VudChXS0J1bmRsZUludGVudFJlZiBpbnRlbnRSZWYpCit7Cisj
aWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorICAgIE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5KiBtZXNz
YWdlUG9ydHMgPSB0b0ltcGwoaW50ZW50UmVmKS0+Y29yZUludGVudCgpLT5tZXNzYWdlUG9ydHMo
KTsKKworICAgIHJldHVybiBtZXNzYWdlUG9ydHMgPyBtZXNzYWdlUG9ydHMtPnNpemUoKSA6IDA7
CisjZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50LmggYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50
ZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQ3MTlkNAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVJbnRlbnQuaApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFdLQnVuZGxlSW50ZW50X2gKKyNkZWZpbmUgV0tCdW5kbGVJbnRlbnRfaAorCisj
aW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4g
IkMiIHsKKyNlbmRpZgorCitXS19FWFBPUlQgV0tUeXBlSUQgV0tCdW5kbGVJbnRlbnRHZXRUeXBl
SUQoKTsKKworV0tfRVhQT1JUIFdLQnVuZGxlSW50ZW50UmVmIFdLQnVuZGxlSW50ZW50Q3JlYXRl
KFdLRGljdGlvbmFyeVJlZiBpbml0RGljdGlvbmFyeSk7CisKK1dLX0VYUE9SVCBXS1N0cmluZ1Jl
ZiBXS0J1bmRsZUludGVudENvcHlBY3Rpb24oV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmKTsK
K1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0J1bmRsZUludGVudENvcHlUeXBlKFdLQnVuZGxlSW50
ZW50UmVmIGludGVudFJlZik7CitXS19FWFBPUlQgV0tVUkxSZWYgV0tCdW5kbGVJbnRlbnRDb3B5
U2VydmljZShXS0J1bmRsZUludGVudFJlZiBpbnRlbnRSZWYpOworV0tfRVhQT1JUIFdLQXJyYXlS
ZWYgV0tCdW5kbGVJbnRlbnRDb3B5U3VnZ2VzdGlvbnMoV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50
UmVmKTsKK1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0J1bmRsZUludGVudENvcHlFeHRyYShXS0J1
bmRsZUludGVudFJlZiBpbnRlbnRSZWYsIFdLU3RyaW5nUmVmIGtleSk7CitXS19FWFBPUlQgV0tE
aWN0aW9uYXJ5UmVmIFdLQnVuZGxlSW50ZW50Q29weUV4dHJhcyhXS0J1bmRsZUludGVudFJlZiBp
bnRlbnRSZWYpOworV0tfRVhQT1JUIHNpemVfdCBXS0J1bmRsZUludGVudE1lc3NhZ2VQb3J0Q291
bnQoV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9
CisjZW5kaWYKKworI2VuZGlmIC8vIFdLQnVuZGxlSW50ZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnRS
ZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVJbnRlbnRSZXF1ZXN0LmNwcAppbmRleCA4MWM5NWM2Li5hNDc3MmVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlSW50ZW50UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudFJlcXVlc3QuY3BwCkBAIC0yNywxMCAr
MjcsMTAgQEAKICNpbmNsdWRlICJXS0J1bmRsZUludGVudFJlcXVlc3QuaCIKIAogI2lmIEVOQUJM
RShXRUJfSU5URU5UUykKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZUludGVudC5oIgogI2luY2x1
ZGUgIkluamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5o
IgogI2luY2x1ZGUgIldLQnVuZGxlQVBJQ2FzdC5oIgotI2luY2x1ZGUgIldlYkludGVudERhdGEu
aCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKICNlbmRpZgpAQCAtNDQsMTEgKzQ0LDExIEBA
IFdLVHlwZUlEIFdLQnVuZGxlSW50ZW50UmVxdWVzdEdldFR5cGVJRCgpCiAjZW5kaWYKIH0KIAot
V0tJbnRlbnREYXRhUmVmIFdLQnVuZGxlSW50ZW50UmVxdWVzdENvcHlJbnRlbnREYXRhKFdLQnVu
ZGxlSW50ZW50UmVxdWVzdFJlZiByZXF1ZXN0UmVmKQorV0tCdW5kbGVJbnRlbnRSZWYgV0tCdW5k
bGVJbnRlbnRSZXF1ZXN0Q29weUludGVudChXS0J1bmRsZUludGVudFJlcXVlc3RSZWYgcmVxdWVz
dFJlZikKIHsKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0gICAgUmVmUHRyPFdlYkludGVudERh
dGE+IHdlYkludGVudERhdGEgPSB0b0ltcGwocmVxdWVzdFJlZiktPmludGVudCgpOwotICAgIHJl
dHVybiB0b0FQSSh3ZWJJbnRlbnREYXRhLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAgIFJlZlB0
cjxJbmplY3RlZEJ1bmRsZUludGVudD4gd2ViSW50ZW50ID0gdG9JbXBsKHJlcXVlc3RSZWYpLT5p
bnRlbnQoKTsKKyAgICByZXR1cm4gdG9BUEkod2ViSW50ZW50LnJlbGVhc2UoKS5sZWFrUmVmKCkp
OwogI2Vsc2UKICAgICByZXR1cm4gMDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudFJlcXVlc3Qu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVJbnRlbnRSZXF1ZXN0LmgKaW5kZXggYjE4MTM2ZC4uMTA1YWZhNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVu
dFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlSW50ZW50UmVxdWVzdC5oCkBAIC0zNCw3ICszNCw3IEBAIGV4dGVybiAi
QyIgewogCiBXS19FWFBPUlQgV0tUeXBlSUQgV0tCdW5kbGVJbnRlbnRSZXF1ZXN0R2V0VHlwZUlE
KCk7CiAKLVdLX0VYUE9SVCBXS0ludGVudERhdGFSZWYgV0tCdW5kbGVJbnRlbnRSZXF1ZXN0Q29w
eUludGVudERhdGEoV0tCdW5kbGVJbnRlbnRSZXF1ZXN0UmVmIHJlcXVlc3QpOworV0tfRVhQT1JU
IFdLQnVuZGxlSW50ZW50UmVmIFdLQnVuZGxlSW50ZW50UmVxdWVzdENvcHlJbnRlbnQoV0tCdW5k
bGVJbnRlbnRSZXF1ZXN0UmVmIHJlcXVlc3QpOwogCiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZUlu
dGVudFJlcXVlc3RQb3N0UmVzdWx0KFdLQnVuZGxlSW50ZW50UmVxdWVzdFJlZiByZXF1ZXN0LCBX
S1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiBzZXJpYWxpemVkRGF0YSk7CiBXS19FWFBPUlQgdm9p
ZCBXS0J1bmRsZUludGVudFJlcXVlc3RQb3N0RmFpbHVyZShXS0J1bmRsZUludGVudFJlcXVlc3RS
ZWYgcmVxdWVzdCwgV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYgc2VyaWFsaXplZERhdGEpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZVBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCmluZGV4IDJhZTIyMzcuLjgwMjQxY2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL1BhZ2UuaD4KIAogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSNpbmNsdWRlICJXZWJJ
bnRlbnREYXRhLmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVJbnRlbnQuaCIKICNlbmRpZgog
CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwpAQCAtMzEwLDEwICszMTAsMTAgQEAgZG91YmxlIFdL
QnVuZGxlUGFnZUdldEJhY2tpbmdTY2FsZUZhY3RvcihXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZikK
ICAgICByZXR1cm4gdG9JbXBsKHBhZ2VSZWYpLT5kZXZpY2VTY2FsZUZhY3RvcigpOwogfQogCi12
b2lkIFdLQnVuZGxlUGFnZURlbGl2ZXJJbnRlbnRUb0ZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdl
UmVmLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVmLCBXS0ludGVudERhdGFSZWYgaW50ZW50UmVm
KQordm9pZCBXS0J1bmRsZVBhZ2VEZWxpdmVySW50ZW50VG9GcmFtZShXS0J1bmRsZVBhZ2VSZWYg
cGFnZVJlZiwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZVJlZiwgV0tCdW5kbGVJbnRlbnRSZWYgaW50
ZW50UmVmKQogewogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSAgICB0b0ltcGwocGFnZVJlZikt
PmRlbGl2ZXJJbnRlbnRUb0ZyYW1lKHRvSW1wbChmcmFtZVJlZiktPmZyYW1lSUQoKSwgdG9JbXBs
KGludGVudFJlZiktPnN0b3JlKCkpOworICAgIHRvSW1wbChwYWdlUmVmKS0+ZGVsaXZlckNvcmVJ
bnRlbnRUb0ZyYW1lKHRvSW1wbChmcmFtZVJlZiktPmZyYW1lSUQoKSwgdG9JbXBsKGludGVudFJl
ZiktPmNvcmVJbnRlbnQoKSk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgK
aW5kZXggYWE4NjA5Mi4uNmYxOGIzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCkBAIC00
MDQsNyArNDA0LDcgQEAgV0tfRVhQT1JUIFdLSW1hZ2VSZWYgV0tCdW5kbGVQYWdlQ3JlYXRlU2Nh
bGVkU25hcHNob3RJbkRvY3VtZW50Q29vcmRpbmF0ZXMoV0tCdW4KIAogV0tfRVhQT1JUIGRvdWJs
ZSBXS0J1bmRsZVBhZ2VHZXRCYWNraW5nU2NhbGVGYWN0b3IoV0tCdW5kbGVQYWdlUmVmIHBhZ2Up
OwogCi1XS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VEZWxpdmVySW50ZW50VG9GcmFtZShXS0J1
bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tJbnRlbnREYXRhUmVm
IGludGVudCk7CitXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VEZWxpdmVySW50ZW50VG9GcmFt
ZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tCdW5kbGVJ
bnRlbnRSZWYgaW50ZW50KTsKIAogI2lmIGRlZmluZWQoRU5BQkxFX0lOU1BFQ1RPUikgJiYgRU5B
QkxFX0lOU1BFQ1RPUgogV0tfRVhQT1JUIFdLQnVuZGxlSW5zcGVjdG9yUmVmIFdLQnVuZGxlUGFn
ZUdldEluc3BlY3RvcihXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVJbnRlbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3YWI1ODYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlSW50ZW50LmNwcApAQCAtMCwwICsxLDk4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVJ
bnRlbnQuaCIKKworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKworI2luY2x1ZGUgIkltbXV0YWJs
ZUFycmF5LmgiCisjaW5jbHVkZSAiSW1tdXRhYmxlRGljdGlvbmFyeS5oIgorI2luY2x1ZGUgIldl
YlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIldlYlN0cmluZy5oIgorI2luY2x1
ZGUgIldlYlVSTC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK1Bhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVJbnRlbnQ+IEluamVjdGVkQnVuZGxl
SW50ZW50OjpjcmVhdGUoV2ViQ29yZTo6SW50ZW50KiBpbnRlbnQpCit7CisgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBJbmplY3RlZEJ1bmRsZUludGVudChpbnRlbnQpKTsKK30KKworSW5qZWN0ZWRC
dW5kbGVJbnRlbnQ6OkluamVjdGVkQnVuZGxlSW50ZW50KFdlYkNvcmU6OkludGVudCogaW50ZW50
KQorICAgIDogbV9pbnRlbnQoaW50ZW50KQoreworfQorCitTdHJpbmcgSW5qZWN0ZWRCdW5kbGVJ
bnRlbnQ6OmFjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW50ZW50LT5hY3Rpb24oKTsK
K30KKworU3RyaW5nIEluamVjdGVkQnVuZGxlSW50ZW50OjpwYXlsb2FkVHlwZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1faW50ZW50LT50eXBlKCk7Cit9CisKK1dlYkNvcmU6OktVUkwgSW5qZWN0
ZWRCdW5kbGVJbnRlbnQ6OnNlcnZpY2UoKSBjb25zdAoreworICAgIHJldHVybiBtX2ludGVudC0+
c2VydmljZSgpOworfQorCitQYXNzUmVmUHRyPFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gSW5q
ZWN0ZWRCdW5kbGVJbnRlbnQ6OmRhdGEoKSBjb25zdAoreworICAgIHJldHVybiBXZWJTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmNyZWF0ZShtX2ludGVudC0+ZGF0YSgpKTsKK30KKworU3RyaW5nIElu
amVjdGVkQnVuZGxlSW50ZW50OjpleHRyYShjb25zdCBTdHJpbmcmIGtleSkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9pbnRlbnQtPmV4dHJhcygpLmdldChrZXkpOworfQorCitQYXNzUmVmUHRyPElt
bXV0YWJsZURpY3Rpb25hcnk+IEluamVjdGVkQnVuZGxlSW50ZW50OjpleHRyYXMoKSBjb25zdAor
eworICAgIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBleHRyYXMgPSBtX2ludGVudC0+
ZXh0cmFzKCk7CisgICAgSW1tdXRhYmxlRGljdGlvbmFyeTo6TWFwVHlwZSB3a0V4dHJhczsKKyAg
ICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gZXh0cmFzLmVu
ZCgpOworICAgIGZvciAoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gZXh0cmFzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgd2tFeHRyYXMuc2V0
KGl0LT5maXJzdCwgV2ViU3RyaW5nOjpjcmVhdGUoaXQtPnNlY29uZCkpOworICAgIHJldHVybiBJ
bW11dGFibGVEaWN0aW9uYXJ5OjphZG9wdCh3a0V4dHJhcyk7Cit9CisKK1Bhc3NSZWZQdHI8SW1t
dXRhYmxlQXJyYXk+IEluamVjdGVkQnVuZGxlSW50ZW50OjpzdWdnZXN0aW9ucygpIGNvbnN0Cit7
CisgICAgY29uc3QgVmVjdG9yPEtVUkw+JiBzdWdnZXN0aW9ucyA9IG1faW50ZW50LT5zdWdnZXN0
aW9ucygpOworICAgIGNvbnN0IHNpemVfdCBudW1TdWdnZXN0aW9ucyA9IHN1Z2dlc3Rpb25zLnNp
emUoKTsKKyAgICBWZWN0b3I8UmVmUHRyPEFQSU9iamVjdD4gPiB3a1N1Z2dlc3Rpb25zKG51bVN1
Z2dlc3Rpb25zKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtU3VnZ2VzdGlvbnM7
ICsraSkKKyAgICAgICAgd2tTdWdnZXN0aW9uc1tpXSA9IFdlYlVSTDo6Y3JlYXRlKHN1Z2dlc3Rp
b25zW2ldKTsKKyAgICByZXR1cm4gSW1tdXRhYmxlQXJyYXk6OmFkb3B0KHdrU3VnZ2VzdGlvbnMp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfSU5U
RU5UUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi41ZDNmMDZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudC5oCkBAIC0wLDAg
KzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW5qZWN0ZWRCdW5kbGVJbnRl
bnRfaAorI2RlZmluZSBJbmplY3RlZEJ1bmRsZUludGVudF9oCisKKyNpZiBFTkFCTEUoV0VCX0lO
VEVOVFMpCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ludGVu
dC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBJbW11dGFibGVBcnJheTsKK2NsYXNzIEltbXV0
YWJsZURpY3Rpb25hcnk7CitjbGFzcyBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU7CisKK2NsYXNz
IEluamVjdGVkQnVuZGxlSW50ZW50IDogcHVibGljIEFQSU9iamVjdCB7CitwdWJsaWM6CisgICAg
c3RhdGljIGNvbnN0IFR5cGUgQVBJVHlwZSA9IFR5cGVCdW5kbGVJbnRlbnQ7CisKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZUludGVudD4gY3JlYXRlKFdlYkNvcmU6OkludGVu
dCopOworCisgICAgU3RyaW5nIGFjdGlvbigpIGNvbnN0OworICAgIFN0cmluZyBwYXlsb2FkVHlw
ZSgpIGNvbnN0OworICAgIFdlYkNvcmU6OktVUkwgc2VydmljZSgpIGNvbnN0OworICAgIFBhc3NS
ZWZQdHI8V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhKCkgY29uc3Q7CisgICAgU3RyaW5n
IGV4dHJhKGNvbnN0IFN0cmluZyYga2V5KSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEltbXV0YWJs
ZURpY3Rpb25hcnk+IGV4dHJhcygpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8SW1tdXRhYmxlQXJy
YXk+IHN1Z2dlc3Rpb25zKCkgY29uc3Q7CisKKyAgICBXZWJDb3JlOjpJbnRlbnQqIGNvcmVJbnRl
bnQoKSBjb25zdCB7IHJldHVybiBtX2ludGVudC5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIGV4
cGxpY2l0IEluamVjdGVkQnVuZGxlSW50ZW50KFdlYkNvcmU6OkludGVudCopOworCisgICAgdmly
dHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBBUElUeXBlOyB9CisKKyAgICBSZWZQdHI8
V2ViQ29yZTo6SW50ZW50PiBtX2ludGVudDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYgLy8gRU5BQkxFKFdFQl9JTlRFTlRTKQorCisjZW5kaWYgLy8gSW5qZWN0ZWRCdW5k
bGVJbnRlbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuY3Bw
CmluZGV4IDVjY2IxOWMuLmVhYzBiODNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZUludGVudFJlcXVlc3QuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRC
dW5kbGVJbnRlbnRSZXF1ZXN0LmgiCiAKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisjaW5jbHVk
ZSAiSW5qZWN0ZWRCdW5kbGVJbnRlbnQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ludGVudFJlcXVl
c3QuaD4KICNpbmNsdWRlIDxXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaD4KIApAQCAtNTQsOSAr
NTUsOSBAQCB2b2lkIEluamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdDo6cG9zdEZhaWx1cmUoV2Vi
U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBkYXRhKQogICAgIG1faW50ZW50UmVxdWVzdC0+cG9zdEZh
aWx1cmUoc3RhdGljX2Nhc3Q8U2VyaWFsaXplZFNjcmlwdFZhbHVlKj4oZGF0YS0+aW50ZXJuYWxS
ZXByZXNlbnRhdGlvbigpKSk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViSW50ZW50RGF0YT4gSW5qZWN0
ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0OjppbnRlbnQoKSBjb25zdAorUGFzc1JlZlB0cjxJbmplY3Rl
ZEJ1bmRsZUludGVudD4gSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0OjppbnRlbnQoKSBjb25z
dAogewotICAgIHJldHVybiBXZWJJbnRlbnREYXRhOjpjcmVhdGUoSW50ZW50RGF0YShtX2ludGVu
dFJlcXVlc3QtPmludGVudCgpKSk7CisgICAgcmV0dXJuIEluamVjdGVkQnVuZGxlSW50ZW50Ojpj
cmVhdGUobV9pbnRlbnRSZXF1ZXN0LT5pbnRlbnQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0LmgKaW5kZXggYjU4
NzBkOS4uMzNhMzE5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50UmVxdWVz
dC5oCkBAIC0yOSw3ICsyOSw2IEBACiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQogCiAjaW5jbHVk
ZSAiQVBJT2JqZWN0LmgiCi0jaW5jbHVkZSAiV2ViSW50ZW50RGF0YS5oIgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CkBAIC00MCw2ICszOSw3IEBAIGNsYXNzIEludGVudFJlcXVlc3Q7CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCitjbGFzcyBJbmplY3RlZEJ1bmRsZUludGVudDsKIGNsYXNzIFdlYlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIAogY2xhc3MgSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0
IDogcHVibGljIEFQSU9iamVjdCB7CkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHBvc3RSZXN1bHQoV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlKik7CiAgICAgdm9pZCBwb3N0RmFp
bHVyZShXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUqKTsKIAotICAgIFBhc3NSZWZQdHI8V2ViSW50
ZW50RGF0YT4gaW50ZW50KCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZUlu
dGVudD4gaW50ZW50KCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgSW5qZWN0ZWRC
dW5kbGVJbnRlbnRSZXF1ZXN0KFdlYkNvcmU6OkludGVudFJlcXVlc3QqKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IGYzNmZjMDIuLmY5
YmI3MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJG
cmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1l
LmNwcApAQCAtNjMsNiArNjMsNyBAQAogI2luY2x1ZGUgIkludGVudERhdGEuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0RPTVdpbmRvd0ludGVudHMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RlbGl2ZXJl
ZEludGVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSW50ZW50Lmg+CiAjZW5kaWYKIAogI2lmIFBM
QVRGT1JNKE1BQykgfHwgUExBVEZPUk0oV0lOKQpAQCAtMjQ2LDEzICsyNDcsMzkgQEAgdm9pZCBX
ZWJGcmFtZTo6Y29udmVydEhhbmRsZVRvRG93bmxvYWQoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwg
Y29uc3QgUmVzb3VyY2VSZXEKIHZvaWQgV2ViRnJhbWU6OmRlbGl2ZXJJbnRlbnQoY29uc3QgSW50
ZW50RGF0YSYgaW50ZW50RGF0YSkKIHsKICAgICBPd25QdHI8RGVsaXZlcmVkSW50ZW50Q2xpZW50
PiBkdW1teUNsaWVudDsKLSAgICBPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4gZHVtbXlQb3J0czsK
ICAgICBWZWN0b3I8dWludDhfdD4gZGF0YUNvcHkgPSBpbnRlbnREYXRhLmRhdGE7CisKKyAgICBP
d25QdHI8V2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzOworICAgIGlm
ICghaW50ZW50RGF0YS5tZXNzYWdlUG9ydHMuaXNFbXB0eSgpKSB7CisgICAgICAgIGNoYW5uZWxz
ID0gYWRvcHRQdHIobmV3IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5KGludGVudERh
dGEubWVzc2FnZVBvcnRzLnNpemUoKSkpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGludGVudERhdGEubWVzc2FnZVBvcnRzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgKCpjaGFu
bmVscylbaV0gPSBNZXNzYWdlUG9ydENoYW5uZWw6OmNyZWF0ZShXZWJQcm9jZXNzOjpzaGFyZWQo
KS5tZXNzYWdlUG9ydENoYW5uZWwoaW50ZW50RGF0YS5tZXNzYWdlUG9ydHMuYXQoaSkpKTsKKyAg
ICB9CisgICAgT3duUHRyPFdlYkNvcmU6Ok1lc3NhZ2VQb3J0QXJyYXk+IG1lc3NhZ2VQb3J0cyA9
IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKCptX2NvcmVGcmFtZS0+ZG9tV2lu
ZG93KCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgY2hhbm5lbHMucmVsZWFzZSgpKTsKKwog
ICAgIFJlZlB0cjxEZWxpdmVyZWRJbnRlbnQ+IGRlbGl2ZXJlZEludGVudCA9IERlbGl2ZXJlZElu
dGVudDo6Y3JlYXRlKG1fY29yZUZyYW1lLCBkdW1teUNsaWVudC5yZWxlYXNlKCksIGludGVudERh
dGEuYWN0aW9uLCBpbnRlbnREYXRhLnR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VyaWFsaXplZFNjcmlw
dFZhbHVlOjphZG9wdChkYXRhQ29weSksIGR1bW15UG9ydHMucmVsZWFzZSgpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQoZGF0YUNvcHkpLCBtZXNzYWdlUG9ydHMu
cmVsZWFzZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludGVudERhdGEuZXh0cmFzKTsKICAgICBXZWJDb3Jl
OjpET01XaW5kb3dJbnRlbnRzOjpmcm9tKG1fY29yZUZyYW1lLT5kb21XaW5kb3coKSktPmRlbGl2
ZXIoZGVsaXZlcmVkSW50ZW50LnJlbGVhc2UoKSk7CiB9CisKK3ZvaWQgV2ViRnJhbWU6OmRlbGl2
ZXJJbnRlbnQoSW50ZW50KiBpbnRlbnQpCit7CisgICAgT3duUHRyPERlbGl2ZXJlZEludGVudENs
aWVudD4gZHVtbXlDbGllbnQ7CisKKyAgICBPd25QdHI8V2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFu
bmVsQXJyYXk+IGNoYW5uZWxzOworICAgIFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5
KiBvcmlnQ2hhbm5lbHMgPSBpbnRlbnQtPm1lc3NhZ2VQb3J0cygpOworICAgIGlmIChvcmlnQ2hh
bm5lbHMgJiYgb3JpZ0NoYW5uZWxzLT5zaXplKCkpIHsKKyAgICAgICAgY2hhbm5lbHMgPSBhZG9w
dFB0cihuZXcgV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsQXJyYXkob3JpZ0NoYW5uZWxzLT5z
aXplKCkpKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvcmlnQ2hhbm5lbHMtPnNp
emUoKTsgKytpKQorICAgICAgICAgICAgKCpjaGFubmVscylbaV0gPSBvcmlnQ2hhbm5lbHMtPmF0
KGkpLnJlbGVhc2UoKTsKKyAgICB9CisgICAgT3duUHRyPFdlYkNvcmU6Ok1lc3NhZ2VQb3J0QXJy
YXk+IG1lc3NhZ2VQb3J0cyA9IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKCpt
X2NvcmVGcmFtZS0+ZG9tV2luZG93KCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgY2hhbm5l
bHMucmVsZWFzZSgpKTsKKworICAgIFJlZlB0cjxEZWxpdmVyZWRJbnRlbnQ+IGRlbGl2ZXJlZElu
dGVudCA9IERlbGl2ZXJlZEludGVudDo6Y3JlYXRlKG1fY29yZUZyYW1lLCBkdW1teUNsaWVudC5y
ZWxlYXNlKCksIGludGVudC0+YWN0aW9uKCksIGludGVudC0+dHlwZSgpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludGVudC0+ZGF0YSgpLCBtZXNzYWdlUG9ydHMucmVsZWFzZSgpLCBpbnRlbnQtPmV4dHJhcygp
KTsKKyAgICBXZWJDb3JlOjpET01XaW5kb3dJbnRlbnRzOjpmcm9tKG1fY29yZUZyYW1lLT5kb21X
aW5kb3coKSktPmRlbGl2ZXIoZGVsaXZlcmVkSW50ZW50LnJlbGVhc2UoKSk7Cit9CiAjZW5kaWYK
IAogU3RyaW5nIFdlYkZyYW1lOjpzb3VyY2UoKSBjb25zdCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKaW5kZXggYmQ2YzAzOC4uZWVhMDliNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKQEAgLTQyLDYgKzQy
LDkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBGcmFtZTsKICAgICBjbGFzcyBI
VE1MRnJhbWVPd25lckVsZW1lbnQ7CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorICAgIGNsYXNz
IEludGVudDsKKyNlbmRpZgogICAgIGNsYXNzIEtVUkw7CiB9CiAKQEAgLTgxLDYgKzg0LDcgQEAg
cHVibGljOgogCiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQogICAgIHZvaWQgZGVsaXZlckludGVu
dChjb25zdCBJbnRlbnREYXRhJik7CisgICAgdm9pZCBkZWxpdmVySW50ZW50KFdlYkNvcmU6Oklu
dGVudCopOwogI2VuZGlmCiAKICAgICBTdHJpbmcgc291cmNlKCkgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNTlkM2JjNS4uYmNj
ODU0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cApAQCAtMTM2LDYgKzEzNiw3IEBACiAKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCiAjaW5jbHVk
ZSAiSW50ZW50RGF0YS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvSW50ZW50Lmg+CiAjZW5kaWYKIAog
I2lmIEVOQUJMRShWSUJSQVRJT04pCkBAIC0xOTYzLDYgKzE5NjQsMTUgQEAgdm9pZCBXZWJQYWdl
OjpkZWxpdmVySW50ZW50VG9GcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBJbnRlbnREYXRh
JiBpbnRlbnREYXQKIAogICAgIGZyYW1lLT5kZWxpdmVySW50ZW50KGludGVudERhdGEpOwogfQor
Cit2b2lkIFdlYlBhZ2U6OmRlbGl2ZXJDb3JlSW50ZW50VG9GcmFtZSh1aW50NjRfdCBmcmFtZUlE
LCBJbnRlbnQqIGNvcmVJbnRlbnQpCit7CisgICAgV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vz
czo6c2hhcmVkKCkud2ViRnJhbWUoZnJhbWVJRCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgZnJhbWUtPmRlbGl2ZXJJbnRlbnQoY29yZUludGVudCk7Cit9CiAjZW5k
aWYKIAogdm9pZCBXZWJQYWdlOjpwcmVmZXJlbmNlc0RpZENoYW5nZShjb25zdCBXZWJQcmVmZXJl
bmNlc1N0b3JlJiBzdG9yZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCmluZGV4IGUzMjU3YTMuLjE1MzM0ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTA2LDYgKzEwNiw5IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICBjbGFzcyBGcmFtZTsKICAgICBjbGFzcyBGcmFtZVZpZXc7CiAgICAgY2xhc3Mg
SFRNTFBsdWdJbkVsZW1lbnQ7CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorICAgIGNsYXNzIElu
dGVudDsKKyNlbmRpZgogICAgIGNsYXNzIEtleWJvYXJkRXZlbnQ7CiAgICAgY2xhc3MgUGFnZTsK
ICAgICBjbGFzcyBQcmludENvbnRleHQ7CkBAIC00NzgsNyArNDgxLDcgQEAgcHVibGljOgogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0gICAgdm9pZCBkZWxpdmVySW50ZW50VG9G
cmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBJbnRlbnREYXRhJik7CisgICAgdm9pZCBkZWxp
dmVyQ29yZUludGVudFRvRnJhbWUodWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6SW50ZW50Kik7
CiAjZW5kaWYKIAogICAgIHZvaWQgcmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KFdlYkNvcmU6OkZy
YW1lKiwgY29uc3QgU3RyaW5nJik7CkBAIC02MzMsNiArNjM2LDEwIEBAIHByaXZhdGU6CiAgICAg
dm9pZCBjb250ZXh0TWVudUhpZGRlbigpIHsgbV9pc1Nob3dpbmdDb250ZXh0TWVudSA9IGZhbHNl
OyB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICB2b2lkIGRlbGl2ZXJJ
bnRlbnRUb0ZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IEludGVudERhdGEmKTsKKyNlbmRp
ZgorCiAgICAgc3RhdGljIHZvaWQgc2Nyb2xsKFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpTY3Jv
bGxEaXJlY3Rpb24sIFdlYkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5KTsKICAgICBzdGF0aWMgdm9p
ZCBsb2dpY2FsU2Nyb2xsKFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpTY3JvbGxMb2dpY2FsRGly
ZWN0aW9uLCBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDZlYjhhYjdlLi42M2ZmZTE0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTc5MSw2ICs3OTEsMjQgQEAgV2Vi
UGFnZUdyb3VwUHJveHkqIFdlYlByb2Nlc3M6OndlYlBhZ2VHcm91cChjb25zdCBXZWJQYWdlR3Jv
dXBEYXRhJiBwYWdlR3JvdXBEYXQKICAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQu
Z2V0KCk7CiB9CiAKK3VpbnQ2NF90IFdlYlByb2Nlc3M6OmFkZE1lc3NhZ2VQb3J0Q2hhbm5lbChQ
YXNzUmVmUHRyPFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsPiBtZXNzYWdlUG9ydENoYW5uZWwp
Cit7CisgICAgc3RhdGljIHVpbnQ2NF90IGNoYW5uZWxJRCA9IDA7CisgICAgbV9tZXNzYWdlUG9y
dENoYW5uZWxzLmFkZCgrK2NoYW5uZWxJRCwgbWVzc2FnZVBvcnRDaGFubmVsKTsKKworICAgIHJl
dHVybiBjaGFubmVsSUQ7Cit9CisKK1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsKiBXZWJQcm9j
ZXNzOjptZXNzYWdlUG9ydENoYW5uZWwodWludDY0X3QgY2hhbm5lbElEKQoreworICAgIHJldHVy
biBtX21lc3NhZ2VQb3J0Q2hhbm5lbHMuZ2V0KGNoYW5uZWxJRCkuZ2V0KCk7Cit9CisKK3ZvaWQg
V2ViUHJvY2Vzczo6cmVtb3ZlTWVzc2FnZVBvcnRDaGFubmVsKHVpbnQ2NF90IGNoYW5uZWxJRCkK
K3sKKyAgICBtX21lc3NhZ2VQb3J0Q2hhbm5lbHMucmVtb3ZlKGNoYW5uZWxJRCk7Cit9CisKIHN0
YXRpYyBib29sIGNhblBsdWdpbkhhbmRsZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKQogewogICAgIFN0cmluZyBwbHVnaW5QYXRoOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaAppbmRleCAwZDAwNWE0Li4wODNmNTVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIldlYklj
b25EYXRhYmFzZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUGFnZUdyb3VwUHJveHkuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0xpbmtIYXNoLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybU1lc3Nh
Z2VQb3J0Q2hhbm5lbC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtMTEzLDYgKzExNCwxMCBA
QCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCk7CiAgICAg
V2ViUGFnZSogZm9jdXNlZFdlYlBhZ2UoKSBjb25zdDsKICAgICAKKyAgICB1aW50NjRfdCBhZGRN
ZXNzYWdlUG9ydENoYW5uZWwoUGFzc1JlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybU1lc3NhZ2VQb3J0
Q2hhbm5lbD4pOworICAgIFdlYkNvcmU6OlBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsKiBtZXNz
YWdlUG9ydENoYW5uZWwodWludDY0X3QpOworICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVBvcnRDaGFu
bmVsKHVpbnQ2NF90KTsKKwogICAgIEluamVjdGVkQnVuZGxlKiBpbmplY3RlZEJ1bmRsZSgpIGNv
bnN0IHsgcmV0dXJuIG1faW5qZWN0ZWRCdW5kbGUuZ2V0KCk7IH0KIAogICAgIGJvb2wgaXNTZXBh
cmF0ZVByb2Nlc3MoKSBjb25zdDsKQEAgLTMwMCw2ICszMDUsOCBAQCBwcml2YXRlOgogCiAgICAg
SGFzaE1hcDx1aW50NjRfdCwgV2ViRnJhbWUqPiBtX2ZyYW1lTWFwOwogCisgICAgSGFzaE1hcDx1
aW50NjRfdCwgUmVmUHRyPFdlYkNvcmU6OlBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsPiA+IG1f
bWVzc2FnZVBvcnRDaGFubmVsczsKKwogICAgIEhhc2hTZXQ8U3RyaW5nLCBDYXNlRm9sZGluZ0hh
c2g+IG1fbWltZVR5cGVzV2l0aEN1c3RvbVJlcHJlc2VudGF0aW9uczsKIAogICAgIFRleHRDaGVj
a2VyU3RhdGUgbV90ZXh0Q2hlY2tlclN0YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDBmODNkNWIuLmM4MjExYTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAg
LTI3LDYgKzI3LDkgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyB7CiAgICAgIyBDcmVhdGUgYSBu
ZXcgcGFnZS4KICAgICBDcmVhdGVXZWJQYWdlKHVpbnQ2NF90IG5ld1BhZ2VJRCwgV2ViS2l0OjpX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHBhZ2VDcmVhdGlvblBhcmFtZXRlcnMpCiAKKyAgICAj
IE1lc3NhZ2VQb3J0Q2hhbm5lbCBtZXNzYWdlcworICAgIFJlbW92ZU1lc3NhZ2VQb3J0Q2hhbm5l
bCh1aW50NjRfdCBjaGFubmVsSUQpOworCiAgICAgIyBWaXNpdGVkIGxpbmsgdHJhY2tpbmcuCiAg
ICAgU2V0VmlzaXRlZExpbmtUYWJsZShXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRs
ZSkKICAgICBWaXNpdGVkTGlua1N0YXRlQ2hhbmdlZChWZWN0b3I8V2ViQ29yZTo6TGlua0hhc2g+
IGxpbmtIYXNoZXMpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggNTQ0ZWZkNi4uNGNkMmU5MSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTA3LTMxICBDaHJpc3Rv
cGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CisKKyAgICAgICAgW1dLMl0g
QWRkIHN1cHBvcnQgZm9yIFdlYiBJbnRlbnRzIE1lc3NhZ2VQb3J0cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODkwNzIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgV0tCdW5kbGVJbnRlbnQgaW5zdGVh
ZCBvZiBXZWJJbnRlbnREYXRhIGluCisgICAgICAgIFdlYktpdFRlc3RSdW5uZXIuIFdUUiBub3cg
cHJpbnRzIHRoZSBudW1iZXIgb2YKKyAgICAgICAgTWVzc2FnZVBvcnRzIGluIHJlY2VpdmVkIFdl
YiBpbnRlbnRzIGFzCisgICAgICAgIGV4cGVjdGVkIGJ5IHdlYmludGVudHMvKiBsYXlvdXQgdGVz
dHMuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6ZGlkUmVj
ZWl2ZUludGVudEZvckZyYW1lKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6TGF5b3V0VGVz
dENvbnRyb2xsZXI6OmRlbGl2ZXJXZWJJbnRlbnQpOgorCiAyMDEyLTA3LTMwICBSeW9zdWtlIE5p
d2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmVydCByMTI0MTUzIGFuZCBsYW5k
IHRoZSAicmlnaHQiIGJ1aWxkIGZpeCBwZXIgYXAncyBjb21tZW50IG9uIHRoZSBidWcgOTI2NzYu
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZS5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZS5jcHAKaW5kZXggMTYzNzFkMS4uMWViYzJmMCAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2UuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlLmNwcApAQCAtNTAsOCArNTAsOCBAQAogI2VuZGlmCiAKICNpZiBFTkFCTEUo
V0VCX0lOVEVOVFMpCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZUludGVudC5oPgogI2luY2x1
ZGUgPFdlYktpdDIvV0tCdW5kbGVJbnRlbnRSZXF1ZXN0Lmg+Ci0jaW5jbHVkZSA8V2ViS2l0Mi9X
S0ludGVudERhdGEuaD4KICNlbmRpZgogI2lmIEVOQUJMRShXRUJfSU5URU5UU19UQUcpCiAjaW5j
bHVkZSA8V2ViS2l0Mi9XS0ludGVudFNlcnZpY2VJbmZvLmg+CkBAIC00MzAsMTkgKzQzMCwyNCBA
QCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKFdLQnVu
ZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZQogewogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKICAg
ICBzdGF0aWNfY2FzdDxJbmplY3RlZEJ1bmRsZVBhZ2UqPihjb25zdF9jYXN0PHZvaWQqPihjbGll
bnRJbmZvKSktPm1fY3VycmVudEludGVudFJlcXVlc3QgPSBpbnRlbnRSZXF1ZXN0OwotICAgIFdL
UmV0YWluUHRyPFdLSW50ZW50RGF0YVJlZj4gaW50ZW50KEFkb3B0V0ssIFdLQnVuZGxlSW50ZW50
UmVxdWVzdENvcHlJbnRlbnREYXRhKGludGVudFJlcXVlc3QpKTsKKyAgICBXS1JldGFpblB0cjxX
S0J1bmRsZUludGVudFJlZj4gaW50ZW50KEFkb3B0V0ssIFdLQnVuZGxlSW50ZW50UmVxdWVzdENv
cHlJbnRlbnQoaW50ZW50UmVxdWVzdCkpOwogCiAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgp
LnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKCJSZWNlaXZlZCBXZWIgSW50ZW50OiBhY3Rpb249Iik7
Ci0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHdrQWN0aW9uKEFkb3B0V0ssIFdLSW50ZW50
RGF0YUNvcHlBY3Rpb24oaW50ZW50LmdldCgpKSk7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdS
ZWY+IHdrQWN0aW9uKEFkb3B0V0ssIFdLQnVuZGxlSW50ZW50Q29weUFjdGlvbihpbnRlbnQuZ2V0
KCkpKTsKICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBl
bmQodG9XVEZTdHJpbmcod2tBY3Rpb24uZ2V0KCkpKTsKICAgICBJbmplY3RlZEJ1bmRsZTo6c2hh
cmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoIiB0eXBlPSIpOwotICAgIFdLUmV0YWluUHRy
PFdLU3RyaW5nUmVmPiB3a1R5cGUoQWRvcHRXSywgV0tJbnRlbnREYXRhQ29weVR5cGUoaW50ZW50
LmdldCgpKSk7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHdrVHlwZShBZG9wdFdLLCBX
S0J1bmRsZUludGVudENvcHlUeXBlKGludGVudC5nZXQoKSkpOwogICAgIEluamVjdGVkQnVuZGxl
OjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCh0b1dURlN0cmluZyh3a1R5cGUuZ2V0
KCkpKTsKICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBl
bmQoIlxuIik7CiAKLSAgICAvLyBGSVhNRTogUHJpbnQgbnVtYmVyIG9mIHBvcnRzIHdoZW4gZXhw
b3NlZCBpbiBXZWJLaXQyCisgICAgY29uc3Qgc2l6ZV90IG51bU1lc3NhZ2VQb3J0cyA9IFdLQnVu
ZGxlSW50ZW50TWVzc2FnZVBvcnRDb3VudChpbnRlbnQuZ2V0KCkpOworICAgIGlmIChudW1NZXNz
YWdlUG9ydHMpIHsKKyAgICAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxk
ZXIoKS0+YXBwZW5kKCJIYXZlICIpOworICAgICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCku
c3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoV1RGOjpTdHJpbmc6Om51bWJlcihudW1NZXNzYWdlUG9y
dHMpKTsKKyAgICAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+
YXBwZW5kKCIgcG9ydHNcbiIpOworICAgIH0KIAotICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiB3
a1NlcnZpY2VVcmwoQWRvcHRXSywgV0tJbnRlbnREYXRhQ29weVNlcnZpY2UoaW50ZW50LmdldCgp
KSk7CisgICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IHdrU2VydmljZVVybChBZG9wdFdLLCBXS0J1
bmRsZUludGVudENvcHlTZXJ2aWNlKGludGVudC5nZXQoKSkpOwogICAgIGlmICh3a1NlcnZpY2VV
cmwpIHsKICAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHdrU2VydmljZShBZG9wdFdL
LCBXS1VSTENvcHlTdHJpbmcod2tTZXJ2aWNlVXJsLmdldCgpKSk7CiAgICAgICAgIGlmICh3a1Nl
cnZpY2UgJiYgIVdLU3RyaW5nSXNFbXB0eSh3a1NlcnZpY2UuZ2V0KCkpKSB7CkBAIC00NTIsNyAr
NDU3LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZFJlY2VpdmVJbnRlbnRGb3JGcmFt
ZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGUKICAgICAgICAgfQogICAgIH0KIAotICAg
IFdLUmV0YWluUHRyPFdLRGljdGlvbmFyeVJlZj4gd2tFeHRyYXMoQWRvcHRXSywgV0tJbnRlbnRE
YXRhQ29weUV4dHJhcyhpbnRlbnQuZ2V0KCkpKTsKKyAgICBXS1JldGFpblB0cjxXS0RpY3Rpb25h
cnlSZWY+IHdrRXh0cmFzKEFkb3B0V0ssIFdLQnVuZGxlSW50ZW50Q29weUV4dHJhcyhpbnRlbnQu
Z2V0KCkpKTsKICAgICBXS1JldGFpblB0cjxXS0FycmF5UmVmPiB3a0V4dHJhS2V5cyhBZG9wdFdL
LCBXS0RpY3Rpb25hcnlDb3B5S2V5cyh3a0V4dHJhcy5nZXQoKSkpOwogICAgIGNvbnN0IHNpemVf
dCBudW1FeHRyYUtleXMgPSBXS0FycmF5R2V0U2l6ZSh3a0V4dHJhS2V5cy5nZXQoKSk7CiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1FeHRyYUtleXM7ICsraSkgewpAQCAtNDY1LDcgKzQ3
MCw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWUo
V0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlCiAgICAgICAgIEluamVjdGVkQnVuZGxlOjpz
aGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiXG4iKTsKICAgICB9CiAKLSAgICBXS1Jl
dGFpblB0cjxXS0FycmF5UmVmPiB3a1N1Z2dlc3Rpb25zKEFkb3B0V0ssIFdLSW50ZW50RGF0YUNv
cHlTdWdnZXN0aW9ucyhpbnRlbnQuZ2V0KCkpKTsKKyAgICBXS1JldGFpblB0cjxXS0FycmF5UmVm
PiB3a1N1Z2dlc3Rpb25zKEFkb3B0V0ssIFdLQnVuZGxlSW50ZW50Q29weVN1Z2dlc3Rpb25zKGlu
dGVudC5nZXQoKSkpOwogICAgIGNvbnN0IHNpemVfdCBudW1TdWdnZXN0aW9ucyA9IFdLQXJyYXlH
ZXRTaXplKHdrU3VnZ2VzdGlvbnMuZ2V0KCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bnVtU3VnZ2VzdGlvbnM7ICsraSkgewogICAgICAgICBXS1N0cmluZ1JlZiB3a1N1Z2dlc3Rpb24g
PSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tBcnJheUdldEl0ZW1BdEluZGV4KHdrU3VnZ2Vz
dGlvbnMuZ2V0KCksIGkpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXggMzM3NmVk
MC4uNzYwZDQ5MCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTQ5LDggKzQ5LDgg
QEAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKICNpZiBFTkFCTEUoV0VC
X0lOVEVOVFMpCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZUludGVudC5oPgogI2luY2x1ZGUg
PFdlYktpdDIvV0tCdW5kbGVJbnRlbnRSZXF1ZXN0Lmg+Ci0jaW5jbHVkZSA8V2ViS2l0Mi9XS0lu
dGVudERhdGEuaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgV1RSIHsKQEAgLTY0OSw4ICs2NDksOCBA
QCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpkZWxpdmVyV2ViSW50ZW50KEpTU3RyaW5nUmVm
IGFjdGlvbiwgSlNTdHJpbmdSZWYgdHlwZQogICAgIFdLRGljdGlvbmFyeUFkZEl0ZW0oaW50ZW50
SW5pdERpY3QuZ2V0KCksIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJ0eXBlIiksIHR5
cGVXSy5nZXQoKSk7CiAgICAgV0tEaWN0aW9uYXJ5QWRkSXRlbShpbnRlbnRJbml0RGljdC5nZXQo
KSwgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImRhdGEiKSwgZGF0YVdLLmdldCgpKTsK
IAotICAgIFdLUmV0YWluUHRyPFdLSW50ZW50RGF0YVJlZj4gd2tJbnRlbnREYXRhKEFkb3B0V0ss
IFdLSW50ZW50RGF0YUNyZWF0ZShpbnRlbnRJbml0RGljdC5nZXQoKSkpOwotICAgIFdLQnVuZGxl
UGFnZURlbGl2ZXJJbnRlbnRUb0ZyYW1lKEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdlKCkt
PnBhZ2UoKSwgbWFpbkZyYW1lLCB3a0ludGVudERhdGEuZ2V0KCkpOworICAgIFdLUmV0YWluUHRy
PFdLQnVuZGxlSW50ZW50UmVmPiB3a0ludGVudChBZG9wdFdLLCBXS0J1bmRsZUludGVudENyZWF0
ZShpbnRlbnRJbml0RGljdC5nZXQoKSkpOworICAgIFdLQnVuZGxlUGFnZURlbGl2ZXJJbnRlbnRU
b0ZyYW1lKEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBhZ2UoKSwgbWFpbkZyYW1l
LCB3a0ludGVudC5nZXQoKSk7CiAjZW5kaWYKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155573</attachid>
            <date>2012-07-31 09:53:18 -0700</date>
            <delta_ts>2012-07-31 13:00:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>89072_wk2_messagePorts.patch</filename>
            <type>text/plain</type>
            <size>70175</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5MjQwZmFiLi5hNjM1YjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTItMDctMzEgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBbV0syXSBBZGQgc3VwcG9ydCBmb3IgV2ViIEludGVudHMgTWVzc2Fn
ZVBvcnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
OTA3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZp
eCBoZWFkZXIgZm9yd2FyZGluZyBmb3IgV2ViQ29yZVxkb21cZGVmYXVsdFwqLmgKKyAgICAgICAg
b24gV2luZG93cyBwb3J0LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hh
bmdlLgorCisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovY29weUZvcndhcmRpbmdIZWFkZXJzLmNt
ZDoKKwogMjAxMi0wNy0zMSAgWW9zaGlmdW1pIElub3VlICA8eW9zaW5AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIENoYW5nZSBFbGVtZW50Ojppc1JlYWRPbmx5Rm9ybUNvbnRyb2wgdG8gRWxlbWVu
dDo6c2hvdWxkTWF0Y2hSZWFkT25seVNlbGVjdG9yL3Nob3VsZE1hdGNoUmVhZFdyaXRlU2VsZWN0
b3Igb3IgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6cmVhZE9ubHkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL2NvcHlGb3J3YXJkaW5nSGVhZGVycy5jbWQgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9jb3B5Rm9yd2FyZGluZ0hlYWRlcnMuY21kCmluZGV4
IDc5YzM2MjAuLjVlYmFmN2QgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL2NvcHlGb3J3YXJkaW5nSGVhZGVycy5jbWQKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovY29weUZvcndhcmRpbmdIZWFkZXJzLmNtZApAQCAtNzYsNiArNzYsNyBAQCB4Y29w
eSAveSAvZCAiJVByb2plY3REaXIlLi5ccmVuZGVyaW5nXHN0eWxlXCouaCIgIiVDT05GSUdVUkFU
SU9OQlVJTERESVIlXGluY2x1ZAogeGNvcHkgL3kgL2QgIiVQcm9qZWN0RGlyJS4uXHJlbmRlcmlu
Z1xzdmdcKi5oIiAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcaW5jbHVkZVxXZWJDb3JlIgogeGNv
cHkgL3kgL2QgIiVQcm9qZWN0RGlyJS4uXGVkaXRpbmdcKi5oIiAiJUNPTkZJR1VSQVRJT05CVUlM
RERJUiVcaW5jbHVkZVxXZWJDb3JlIgogeGNvcHkgL3kgL2QgIiVQcm9qZWN0RGlyJS4uXGRvbVwq
LmgiICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmUiCit4Y29weSAveSAv
ZCAiJVByb2plY3REaXIlLi5cZG9tXGRlZmF1bHRcKi5oIiAiJUNPTkZJR1VSQVRJT05CVUlMRERJ
UiVcaW5jbHVkZVxXZWJDb3JlIgogeGNvcHkgL3kgL2QgIiVQcm9qZWN0RGlyJS4uXHhtbFxwYXJz
ZXJcKi5oIiAiJUNPTkZJR1VSQVRJT05CVUlMRERJUiVcaW5jbHVkZVxXZWJDb3JlIgogeGNvcHkg
L3kgL2QgIiVQcm9qZWN0RGlyJS4uXHhtbFwqLmgiICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxp
bmNsdWRlXFdlYkNvcmUiCiB4Y29weSAveSAvZCAiJVByb2plY3REaXIlLi5cc3ZnXGFuaW1hdGlv
blwqLmgiICIlQ09ORklHVVJBVElPTkJVSUxERElSJVxpbmNsdWRlXFdlYkNvcmUiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQyL0NNYWtl
TGlzdHMudHh0CmluZGV4IGE5NWViYTEuLjYzY2Y5NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CkBA
IC01NCw2ICs1NCw3IEBAIFNFVChXZWJLaXQyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtX
RUJDT1JFX0RJUn0vYnJpZGdlL2pzYyIKICAgICAiJHtXRUJDT1JFX0RJUn0vY3NzIgogICAgICIk
e1dFQkNPUkVfRElSfS9kb20iCisgICAgIiR7V0VCQ09SRV9ESVJ9L2RvbS9kZWZhdWx0IgogICAg
ICIke1dFQkNPUkVfRElSfS9lZGl0aW5nIgogICAgICIke1dFQkNPUkVfRElSfS9oaXN0b3J5Igog
ICAgICIke1dFQkNPUkVfRElSfS9odG1sIgpAQCAtMTU5LDcgKzE2MCw2IEBAIFNFVChXZWJLaXQy
X1NPVVJDRVMKICAgICBTaGFyZWQvV2ViR3JhcGhpY3NDb250ZXh0LmNwcAogICAgIFNoYXJlZC9X
ZWJIaXRUZXN0UmVzdWx0LmNwcAogICAgIFNoYXJlZC9XZWJJbWFnZS5jcHAKLSAgICBTaGFyZWQv
V2ViSW50ZW50RGF0YS5jcHAKICAgICBTaGFyZWQvV2ViSW50ZW50U2VydmljZUluZm8uY3BwCiAg
ICAgU2hhcmVkL1dlYktleWJvYXJkRXZlbnQuY3BwCiAgICAgU2hhcmVkL1dlYkxheWVyVHJlZUlu
Zm8uY3BwCkBAIC0yNTMsNiArMjUzLDcgQEAgU0VUKFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJv
Y2Vzcy9XZWJJY29uRGF0YWJhc2UuY3BwCiAgICAgVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZUNs
aWVudC5jcHAKICAgICBVSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCisgICAgVUlQcm9j
ZXNzL1dlYkludGVudERhdGEuY3BwCiAgICAgVUlQcm9jZXNzL1dlYktleVZhbHVlU3RvcmFnZU1h
bmFnZXJQcm94eS5jcHAKICAgICBVSVByb2Nlc3MvV2ViTGF5ZXJUcmVlUmVuZGVyZXIuY3BwCiAg
ICAgVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5jcHAKQEAgLTM3MSw2ICszNzIsNyBAQCBTRVQo
V2ViS2l0Ml9TT1VSQ0VTCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZUNsaWVudC5jcHAKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlRE9NV2luZG93RXh0ZW5zaW9uLmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnQuY3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuY3BwCiAgICAgV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3BwCiAgICAgV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VEaWFnbm9zdGljTG9nZ2luZ0Ns
aWVudC5jcHAKQEAgLTM5MSw2ICszOTMsNyBAQCBTRVQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNwcAogICAgIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcAogICAg
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnNwZWN0b3IuY3BwCisg
ICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudC5jcHAKICAg
ICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50UmVxdWVzdC5j
cHAKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlTmF2aWdhdGlv
bkFjdGlvbi5jcHAKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
Tm9kZUhhbmRsZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBmZTAyYjdiLi5jZDkzNjA3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTI2IEBACisyMDEyLTA3LTMxICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0
b3BoZS5kdW1lekBpbnRlbC5jb20+CisKKyAgICAgICAgW1dLMl0gQWRkIHN1cHBvcnQgZm9yIFdl
YiBJbnRlbnRzIE1lc3NhZ2VQb3J0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODkwNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgV2ViSW50ZW50cyBNZXNzYWdlUG9ydHMgaW4g
V2ViS2l0Mi4KKyAgICAgICAgTWVzc2FnZVBvcnRzIGNhbiBiZSBwYXNzZWQgd2l0aCBhIFdlYiBJ
bnRlbnQgaW4KKyAgICAgICAgb3JkZXIgdG8gb3BlbiBhIGRpcmVjdCBjb21tdW5pY2F0aW9uIGNo
YW5uZWwKKyAgICAgICAgYmV0d2VlbiB0aGUgV2ViIGFwcGxpY2F0aW9uIGFuZCB0aGUgaW50ZW50
IHNlcnZpY2UuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IEluamVjdGVk
QnVuZGxlSW50ZW50CisgICAgICAgIGNsYXNzIHdoaWNoIHdyYXBzIGEgV2ViQ29yZTo6SW50ZW50
LiBUaGlzIHdheQorICAgICAgICBpbmZvcm1hdGlvbiByZWdhcmRpbmcgdGhlIE1lc3NhZ2VQb3J0
cyBpbiBhIFdlYgorICAgICAgICBJbnRlbnQgaXMga2VwdCB3aGVuIHVzaW5nIGFuIGluamVjdGVk
IGJ1bmRsZS4KKworICAgICAgICBGb3IgdGhlIFVJUHJvY2VzcywgV2ViSW50ZW50RGF0YSBub3cg
Y2FycmllcworICAgICAgICBpZGVudGlmaWVycyBmb3IgdGhlIE1lc3NhZ2VQb3J0cyB3aGljaCBj
YW4gZ28gb3ZlcgorICAgICAgICBJUEMuIFRob3NlIGlkZW50aWZpZXJzIG1hcCB0byBhY3R1YWwg
TWVzc2FnZVBvcnRzCisgICAgICAgIHN0b3JlZCBpbiB0aGUgV2ViIHByb2Nlc3MuIFRoaXMgd2F5
LCB3aGVuIHRoZSBVSQorICAgICAgICBkZWxpdmVycyBhbiBpbnRlbnQgdG8gYSBmcmFtZSwgd2Ug
Y2FuIGdldCBiYWNrIHRoZQorICAgICAgICBjb3JyZXNwb25kaW5nIE1lc3NhZ2VQb3J0cyBmcm9t
IHRoZSBXZWIgcHJvY2VzcworICAgICAgICBiZWZvcmUgZGVsaXZlcmluZyB0byB0aGUgRE9NV2lu
ZG93LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUu
bGlzdC5hbToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tCYXNlLmg6CisgICAgICAgICogU2hh
cmVkL0FQSU9iamVjdC5oOgorICAgICAgICAqIFNoYXJlZC9JbnRlbnREYXRhLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6SW50ZW50RGF0YTo6SW50ZW50RGF0YSk6CisgICAgICAgIChXZWJLaXQ6Oklu
dGVudERhdGE6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OkludGVudERhdGE6OmRlY29kZSk6
CisgICAgICAgICogU2hhcmVkL0ludGVudERhdGEuaDoKKyAgICAgICAgKEludGVudERhdGEpOgor
ICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLSW50ZW50
RGF0YS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLSW50ZW50RGF0YS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJJbnRlbnREYXRhLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYkludGVudERhdGEuY3BwLgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSW50ZW50RGF0YTo6V2ViSW50ZW50RGF0YSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkludGVudERhdGE6On5XZWJJbnRlbnREYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SW50ZW50RGF0YTo6ZGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYkludGVudERhdGE6OnN1Z2dl
c3Rpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW50ZW50RGF0YTo6ZXh0cmEpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJbnRlbnREYXRhOjpleHRyYXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJJbnRlbnREYXRhLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJJbnRl
bnREYXRhLmguCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViSW50ZW50RGF0YSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkludGVudERhdGE6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkludGVudERhdGE6OmFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkludGVudERhdGE6
OnBheWxvYWRUeXBlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW50ZW50RGF0YTo6c2VydmljZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkludGVudERhdGE6OnN0b3JlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViSW50ZW50RGF0YTo6dHlwZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZUludGVudEZv
ckZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpyZW1vdmVNZXNzYWdlUG9ydENoYW5uZWwpOgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6
CisgICAgICAgIChXZWJQcm9jZXNzUHJveHkpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVBUElDYXN0Lmg6CisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnQuY3Bw
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnRlbnREYXRh
LmNwcC4KKyAgICAgICAgKFdLQnVuZGxlSW50ZW50R2V0VHlwZUlEKToKKyAgICAgICAgKFdLQnVu
ZGxlSW50ZW50Q3JlYXRlKToKKyAgICAgICAgKFdLQnVuZGxlSW50ZW50Q29weUFjdGlvbik6Cisg
ICAgICAgIChXS0J1bmRsZUludGVudENvcHlUeXBlKToKKyAgICAgICAgKFdLQnVuZGxlSW50ZW50
Q29weVNlcnZpY2UpOgorICAgICAgICAoV0tCdW5kbGVJbnRlbnRDb3B5U3VnZ2VzdGlvbnMpOgor
ICAgICAgICAoV0tCdW5kbGVJbnRlbnRDb3B5RXh0cmEpOgorICAgICAgICAoV0tCdW5kbGVJbnRl
bnRDb3B5RXh0cmFzKToKKyAgICAgICAgKFdLQnVuZGxlSW50ZW50TWVzc2FnZVBvcnRDb3VudCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVu
dC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnRlbnRE
YXRhLmguCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZUludGVudFJlcXVlc3QuY3BwOgorICAgICAgICAoV0tCdW5kbGVJbnRlbnRSZXF1ZXN0Q29weUlu
dGVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZUludGVudFJlcXVlc3QuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXS0J1bmRsZVBhZ2VEZWxpdmVySW50ZW50
VG9GcmFtZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZVBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlSW50ZW50LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJJ
bnRlbnREYXRhLmNwcC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OkluamVj
dGVkQnVuZGxlSW50ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRs
ZUludGVudDo6SW5qZWN0ZWRCdW5kbGVJbnRlbnQpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3Rl
ZEJ1bmRsZUludGVudDo6YWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVJ
bnRlbnQ6OnBheWxvYWRUeXBlKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVJbnRl
bnQ6OnNlcnZpY2UpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZUludGVudDo6ZGF0
YSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlSW50ZW50OjpleHRyYSk6CisgICAg
ICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlSW50ZW50OjpleHRyYXMpOgorICAgICAgICAoV2Vi
S2l0OjpJbmplY3RlZEJ1bmRsZUludGVudDo6c3VnZ2VzdGlvbnMpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnQuaDogUmVuYW1lZCBmcm9t
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJJbnRlbnREYXRhLmguCisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoSW5qZWN0ZWRCdW5kbGVJbnRlbnQpOgorICAgICAgICAoV2ViS2l0OjpJbmpl
Y3RlZEJ1bmRsZUludGVudDo6Y29yZUludGVudCk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVk
QnVuZGxlSW50ZW50Ojp0eXBlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVj
dGVkQnVuZGxlSW50ZW50UmVxdWVzdDo6aW50ZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5oOgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKEluamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJh
bWU6OmRlbGl2ZXJJbnRlbnQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
RnJhbWUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRlbGl2ZXJDb3JlSW50ZW50
VG9GcmFtZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViUGFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6YWRkTWVzc2FnZVBv
cnRDaGFubmVsKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3M6Om1lc3NhZ2VQb3J0Q2hhbm5lbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnJl
bW92ZU1lc3NhZ2VQb3J0Q2hhbm5lbCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lmg6CisgICAgICAgIChXZWJQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nl
c3MubWVzc2FnZXMuaW46CisKIDIwMTItMDctMzAgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFA
Y29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgW1RleG1hcF0gUmVtb3ZlIHRoZSBiYWNraW5nIHN0
b3JlIGFmdGVyICdzdHlsZS52aXNpYmlsaXR5JyBmb3IgYW4gZWxlbWVudCBzZXRzICdoaWRkZW4n
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJj
ZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggZTdhNjRmMC4uZWQ4YzA1ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC00NjksOCArNDY5LDYgQEAgd2Via2l0Ml9z
b3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdC5oIFwK
IAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSW1hZ2UuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViSW1hZ2UuaCBcCi0JU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkludGVudERhdGEu
Y3BwIFwKLQlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSW50ZW50RGF0YS5oIFwKIAlTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViSW50ZW50U2VydmljZUluZm8uY3BwIFwKIAlTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViSW50ZW50U2VydmljZUluZm8uaCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYktleWJvYXJkRXZlbnQuY3BwIFwKQEAgLTg3MSw2ICs4NjksOCBAQCB3ZWJraXQyX3NvdXJj
ZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJY29uRGF0YWJhc2VDbGllbnQu
aCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcCBcCiAJ
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmggXAorCVNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnRlbnREYXRhLmNwcCBcCisJU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkludGVudERhdGEuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYktl
eVZhbHVlU3RvcmFnZU1hbmFnZXJQcm94eS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUHJveHkuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYk1lZGlhQ2FjaGVNYW5hZ2VyUHJveHkuY3BwIFwKQEAgLTk2NCw2ICs5NjQsOCBA
QCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbml0aWFsaXplLmggXAogCVNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnNwZWN0b3IuY3BwIFwKIAlT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW5z
cGVjdG9yLmggXAorCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVJbnRlbnQuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50LmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnRSZXF1ZXN0LmNwcCBcCiAJ
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUlu
dGVudFJlcXVlc3QuaCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZU5vZGVIYW5kbGUuY3BwIFwKQEAgLTk5OCw2ICsxMDAwLDggQEAgd2Vi
a2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmggXAogCVNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNw
cCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZUhpdFRlc3RSZXN1bHQuaCBcCisJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudC5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnQuaCBcCiAJU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudFJlcXVl
c3QuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlSW50ZW50UmVxdWVzdC5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAgXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCmluZGV4IDY4NTRlY2MuLmE2YThiZDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKQEAgLTEzNSw2ICsxMzUsNyBAQCB0eXBlZGVmIGNv
bnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbiogV0tCdW5kbGVET01X
aW5kb3dFeHRlbnNpbwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVGcmFtZSog
V0tCdW5kbGVGcmFtZVJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQnVuZGxlSGl0
VGVzdFJlc3VsdCogV0tCdW5kbGVIaXRUZXN0UmVzdWx0UmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1
Y3QgT3BhcXVlV0tCdW5kbGVJbnNwZWN0b3IqIFdLQnVuZGxlSW5zcGVjdG9yUmVmOwordHlwZWRl
ZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVJbnRlbnQqIFdLQnVuZGxlSW50ZW50UmVmOwog
dHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVJbnRlbnRSZXF1ZXN0KiBXS0J1bmRs
ZUludGVudFJlcXVlc3RSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRsZU5h
dmlnYXRpb25BY3Rpb24qIFdLQnVuZGxlTmF2aWdhdGlvbkFjdGlvblJlZjsKIHR5cGVkZWYgY29u
c3Qgc3RydWN0IE9wYXF1ZVdLQnVuZGxlTm9kZUhhbmRsZSogV0tCdW5kbGVOb2RlSGFuZGxlUmVm
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCmluZGV4IDhlNGQyOTMuLjcwOGVmZmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKQEAgLTExNyw2ICsxMTcsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIFR5cGVCdW5kbGVGcmFtZSwKICAgICAgICAgVHlwZUJ1bmRsZUhpdFRlc3RSZXN1bHQsCiAg
ICAgICAgIFR5cGVCdW5kbGVJbnNwZWN0b3IsCisgICAgICAgIFR5cGVCdW5kbGVJbnRlbnQsCiAg
ICAgICAgIFR5cGVCdW5kbGVJbnRlbnRSZXF1ZXN0LAogICAgICAgICBUeXBlQnVuZGxlTmF2aWdh
dGlvbkFjdGlvbiwKICAgICAgICAgVHlwZUJ1bmRsZU5vZGVIYW5kbGUsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW50ZW50RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvSW50ZW50RGF0YS5jcHAKaW5kZXggNDk5NWIyZS4uNDEwNzg3NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0ludGVudERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9JbnRlbnREYXRhLmNwcApAQCAtMzEsNyArMzEsMTAgQEAKICNpbmNsdWRlICJBUElPYmpl
Y3QuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
SW50ZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9NZXNzYWdlUG9ydENoYW5uZWwuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCkBAIC00NSw2ICs0OCwxMiBAQCBJbnRlbnREYXRhOjpJbnRlbnREYXRh
KEludGVudCogY29yZUludGVudCkKICAgICAsIGV4dHJhcyhjb3JlSW50ZW50LT5leHRyYXMoKSkK
ICAgICAsIHN1Z2dlc3Rpb25zKGNvcmVJbnRlbnQtPnN1Z2dlc3Rpb25zKCkpCiB7CisgICAgTWVz
c2FnZVBvcnRDaGFubmVsQXJyYXkqIGNvcmVNZXNzYWdlUG9ydHMgPSBjb3JlSW50ZW50LT5tZXNz
YWdlUG9ydHMoKTsKKyAgICBpZiAoY29yZU1lc3NhZ2VQb3J0cykgeworICAgICAgICBzaXplX3Qg
bnVtTWVzc2FnZVBvcnRzID0gY29yZU1lc3NhZ2VQb3J0cy0+c2l6ZSgpOworICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG51bU1lc3NhZ2VQb3J0czsgKytpKQorICAgICAgICAgICAgbWVz
c2FnZVBvcnRzLmFwcGVuZChXZWJQcm9jZXNzOjpzaGFyZWQoKS5hZGRNZXNzYWdlUG9ydENoYW5u
ZWwoKCpjb3JlTWVzc2FnZVBvcnRzKVtpXS0+Y2hhbm5lbCgpKSk7CisgICAgfQogfQogCiB2b2lk
IEludGVudERhdGE6OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqIGVuY29kZXIpIGNv
bnN0CkBAIC01NSw2ICs2NCw3IEBAIHZvaWQgSW50ZW50RGF0YTo6ZW5jb2RlKENvcmVJUEM6OkFy
Z3VtZW50RW5jb2RlciogZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyLT5lbmNvZGUoQ29yZUlQ
Qzo6RGF0YVJlZmVyZW5jZShkYXRhKSk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKGV4dHJhcyk7CiAg
ICAgZW5jb2Rlci0+ZW5jb2RlKHN1Z2dlc3Rpb25zKTsKKyAgICBlbmNvZGVyLT5lbmNvZGUobWVz
c2FnZVBvcnRzKTsKIH0KIAogYm9vbCBJbnRlbnREYXRhOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1l
bnREZWNvZGVyKiBkZWNvZGVyLCBJbnRlbnREYXRhJiBpbnRlbnREYXRhKQpAQCAtNzMsNiArODMs
OCBAQCBib29sIEludGVudERhdGE6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRl
Y29kZXIsIEludGVudERhdGEmIGludGVudERhdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
aWYgKCFkZWNvZGVyLT5kZWNvZGUoaW50ZW50RGF0YS5zdWdnZXN0aW9ucykpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZShpbnRlbnREYXRhLm1lc3NhZ2VQ
b3J0cykpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiB0cnVlOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0ludGVudERhdGEuaCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9JbnRlbnREYXRhLmgKaW5kZXggOTZlMmQ5Zi4uZTg0MzVjMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0ludGVudERhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvSW50ZW50RGF0YS5oCkBAIC0yOSw3ICsyOSw4IEBACiAjaWYgRU5BQkxFKFdFQl9J
TlRFTlRTKQogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCi0jaW5jbHVkZSAiR2VuZXJpY0NhbGxi
YWNrLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9LVVJMLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIENvcmVJUEMg
ewpAQCAtNTYsNiArNTcsNyBAQCBzdHJ1Y3QgSW50ZW50RGF0YSB7CiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IGRhdGE7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gZXh0cmFzOwogICAgIFZlY3Rv
cjxXZWJDb3JlOjpLVVJMPiBzdWdnZXN0aW9uczsKKyAgICBWZWN0b3I8dWludDY0X3Q+IG1lc3Nh
Z2VQb3J0czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYkludGVudERhdGEuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYkludGVudERhdGEuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NjEyOGRi
Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJJbnRlbnREYXRhLmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIg
SW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJJbnRlbnREYXRhLmgiCi0KLSNpZiBFTkFCTEUo
V0VCX0lOVEVOVFMpCi0KLSNpbmNsdWRlICJJbW11dGFibGVBcnJheS5oIgotI2luY2x1ZGUgIklt
bXV0YWJsZURpY3Rpb25hcnkuaCIKLSNpbmNsdWRlICJXZWJTdHJpbmcuaCIKLSNpbmNsdWRlICJX
ZWJVUkwuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVdlYkludGVudERhdGE6OldlYkludGVu
dERhdGEoY29uc3QgSW50ZW50RGF0YSYgc3RvcmUpCi0gICAgOiBtX3N0b3JlKHN0b3JlKQotewot
fQotCi1QYXNzUmVmUHRyPFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gV2ViSW50ZW50RGF0YTo6
ZGF0YSgpIGNvbnN0Ci17Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGFDb3B5ID0gbV9zdG9yZS5k
YXRhOwotICAgIHJldHVybiBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0KGRhdGFDb3B5
KTsKLX0KLQotUGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4gV2ViSW50ZW50RGF0YTo6c3VnZ2Vz
dGlvbnMoKSBjb25zdAotewotICAgIGNvbnN0IHNpemVfdCBudW1TdWdnZXN0aW9ucyA9IG1fc3Rv
cmUuc3VnZ2VzdGlvbnMuc2l6ZSgpOwotICAgIFZlY3RvcjxSZWZQdHI8QVBJT2JqZWN0PiA+IHdr
U3VnZ2VzdGlvbnMobnVtU3VnZ2VzdGlvbnMpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBudW1TdWdnZXN0aW9uczsgKytpKQotICAgICAgICB3a1N1Z2dlc3Rpb25zW2ldID0gV2ViVVJM
OjpjcmVhdGUobV9zdG9yZS5zdWdnZXN0aW9uc1tpXSk7Ci0gICAgcmV0dXJuIEltbXV0YWJsZUFy
cmF5OjphZG9wdCh3a1N1Z2dlc3Rpb25zKTsKLX0KLQotU3RyaW5nIFdlYkludGVudERhdGE6OmV4
dHJhKGNvbnN0IFN0cmluZyYga2V5KSBjb25zdAotewotICAgIHJldHVybiBtX3N0b3JlLmV4dHJh
cy5nZXQoa2V5KTsKLX0KLQotUGFzc1JlZlB0cjxJbW11dGFibGVEaWN0aW9uYXJ5PiBXZWJJbnRl
bnREYXRhOjpleHRyYXMoKSBjb25zdAotewotICAgIEltbXV0YWJsZURpY3Rpb25hcnk6Ok1hcFR5
cGUgd2tFeHRyYXM7Ci0gICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46OmNvbnN0X2l0ZXJhdG9y
IGVuZCA9IG1fc3RvcmUuZXh0cmFzLmVuZCgpOwotICAgIGZvciAoSGFzaE1hcDxTdHJpbmcsIFN0
cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9zdG9yZS5leHRyYXMuYmVnaW4oKTsgaXQgIT0g
ZW5kOyArK2l0KQotICAgICAgICB3a0V4dHJhcy5zZXQoaXQtPmZpcnN0LCBXZWJTdHJpbmc6OmNy
ZWF0ZShpdC0+c2Vjb25kKSk7Ci0gICAgcmV0dXJuIEltbXV0YWJsZURpY3Rpb25hcnk6OmFkb3B0
KHdrRXh0cmFzKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFC
TEUoV0VCX0lOVEVOVFMpCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJJ
bnRlbnREYXRhLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSW50ZW50RGF0YS5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZWNmNGFlLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJJbnRlbnREYXRhLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYkludGVudERhdGFfaAotI2RlZmlu
ZSBXZWJJbnRlbnREYXRhX2gKLQotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLQotI2luY2x1ZGUg
IkFQSU9iamVjdC5oIgotI2luY2x1ZGUgIkludGVudERhdGEuaCIKLSNpbmNsdWRlICJXZWJTZXJp
YWxpemVkU2NyaXB0VmFsdWUuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotCi1uYW1l
c3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViSW50ZW50RGF0YSA6IHB1YmxpYyBBUElPYmplY3Qg
ewotcHVibGljOgotICAgIHN0YXRpYyBjb25zdCBUeXBlIEFQSVR5cGUgPSBUeXBlSW50ZW50RGF0
YTsKLQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkludGVudERhdGE+IGNyZWF0ZShjb25zdCBJ
bnRlbnREYXRhJiBzdG9yZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2Vi
SW50ZW50RGF0YShzdG9yZSkpOwotICAgIH0KLQotICAgIHZpcnR1YWwgfldlYkludGVudERhdGEo
KSB7IH0KLQotICAgIGNvbnN0IFN0cmluZyYgYWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdG9y
ZS5hY3Rpb247IH0KLSAgICBjb25zdCBTdHJpbmcmIHBheWxvYWRUeXBlKCkgY29uc3QgeyByZXR1
cm4gbV9zdG9yZS50eXBlOyB9Ci0gICAgY29uc3QgV2ViQ29yZTo6S1VSTCYgc2VydmljZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RvcmUuc2VydmljZTsgfQotICAgIFBhc3NSZWZQdHI8V2ViU2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBkYXRhKCkgY29uc3Q7Ci0gICAgU3RyaW5nIGV4dHJhKGNvbnN0IFN0
cmluZyYga2V5KSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPEltbXV0YWJsZURpY3Rpb25hcnk+IGV4
dHJhcygpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8SW1tdXRhYmxlQXJyYXk+IHN1Z2dlc3Rpb25z
KCkgY29uc3Q7Ci0KLSAgICBjb25zdCBJbnRlbnREYXRhJiBzdG9yZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RvcmU7IH0KLQotcHJpdmF0ZToKLSAgICBXZWJJbnRlbnREYXRhKGNvbnN0IEludGVudERh
dGEmKTsKLQotICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQVBJVHlwZTsg
fQotCi0gICAgSW50ZW50RGF0YSBtX3N0b3JlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0lOVEVOVFMpCi0KLSNlbmRpZiAvLyBXZWJJbnRlbnRE
YXRhX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2Vi
S2l0Mi9UYXJnZXQucHJpCmluZGV4IGVkZWE5YzUuLjIwN2QzNGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQpAQCAt
MTEyLDcgKzExMiw2IEBAIEhFQURFUlMgKz0gXAogICAgIFNoYXJlZC9XZWJHcmFwaGljc0NvbnRl
eHQuaCBcCiAgICAgU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHQuaCBcCiAgICAgU2hhcmVkL1dlYklt
YWdlLmggXAotICAgIFNoYXJlZC9XZWJJbnRlbnREYXRhLmggXAogICAgIFNoYXJlZC9XZWJJbnRl
bnRTZXJ2aWNlSW5mby5oIFwKICAgICBTaGFyZWQvV2ViTGF5ZXJUcmVlSW5mby5oIFwKICAgICBT
aGFyZWQvV2ViTmF2aWdhdGlvbkRhdGFTdG9yZS5oIFwKQEAgLTI2Nyw2ICsyNjYsNyBAQCBIRUFE
RVJTICs9IFwKICAgICBVSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlLmggXAogICAgIFVJUHJvY2Vz
cy9XZWJJY29uRGF0YWJhc2VDbGllbnQuaCBcCiAgICAgVUlQcm9jZXNzL1dlYkluc3BlY3RvclBy
b3h5LmggXAorICAgIFVJUHJvY2Vzcy9XZWJJbnRlbnREYXRhLmggXAogICAgIFVJUHJvY2Vzcy9X
ZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUHJveHkuaCBcCiAgICAgVUlQcm9jZXNzL1dlYkxheWVy
VHJlZVJlbmRlcmVyLmggXAogICAgIFVJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuaCBcCkBAIC0z
MTksNiArMzE5LDcgQEAgSEVBREVSUyArPSBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZUJhY2tGb3J3YXJkTGlzdC5oIFwKICAgICBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5oIFwKICAgICBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSGl0VGVzdFJlc3VsdC5oIFwKKyAg
ICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50LmggXAogICAg
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnRSZXF1ZXN0Lmgg
XAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVOYXZpZ2F0aW9u
QWN0aW9uLmggXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVO
b2RlSGFuZGxlLmggXApAQCAtMzMyLDYgKzMzMyw3IEBAIEhFQURFUlMgKz0gXAogICAgIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCBcCiAgICAgV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5oIFwK
ICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3Vs
dC5oIFwKKyAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50
LmggXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnRS
ZXF1ZXN0LmggXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVO
YXZpZ2F0aW9uQWN0aW9uLmggXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaCBcCkBAIC00OTUsNyArNDk3LDYgQEAgU09V
UkNFUyArPSBcCiAgICAgU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHQuY3BwIFwKICAgICBTaGFyZWQv
V2ViS2V5Ym9hcmRFdmVudC5jcHAgXAogICAgIFNoYXJlZC9XZWJJbWFnZS5jcHAgXAotICAgIFNo
YXJlZC9XZWJJbnRlbnREYXRhLmNwcCBcCiAgICAgU2hhcmVkL1dlYkludGVudFNlcnZpY2VJbmZv
LmNwcCBcCiAgICAgU2hhcmVkL1dlYkxheWVyVHJlZUluZm8uY3BwIFwKICAgICBTaGFyZWQvV2Vi
TW91c2VFdmVudC5jcHAgXApAQCAtNjM4LDYgKzYzOSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIFVJ
UHJvY2Vzcy9XZWJJY29uRGF0YWJhc2UuY3BwIFwKICAgICBVSVByb2Nlc3MvV2ViSWNvbkRhdGFi
YXNlQ2xpZW50LmNwcCBcCiAgICAgVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcCBcCisg
ICAgVUlQcm9jZXNzL1dlYkludGVudERhdGEuY3BwIFwKICAgICBVSVByb2Nlc3MvV2ViS2V5VmFs
dWVTdG9yYWdlTWFuYWdlclByb3h5LmNwcCBcCiAgICAgVUlQcm9jZXNzL1dlYkxheWVyVHJlZVJl
bmRlcmVyLmNwcCBcCiAgICAgVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5jcHAgXApAQCAtNzAz
LDYgKzcwNSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAgXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUluc3BlY3Rvci5jcHAgXAorICAgIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnQuY3BwIFwKICAgICBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50UmVxdWVzdC5jcHAgXAogICAgIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcCBc
CiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU5vZGVIYW5kbGUu
Y3BwIFwKQEAgLTcxOCw2ICs3MjEsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQ2xpZW50LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5jcHAgXAogICAg
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNw
cCBcCisgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudC5j
cHAgXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnRS
ZXF1ZXN0LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZU5hdmlnYXRpb25BY3Rpb24uY3BwIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnRlbnREYXRhLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0ludGVudERhdGEuY3BwCmluZGV4IDdhOTJkYjUuLmI1MTM3
NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0ludGVudERh
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0ludGVudERhdGEu
Y3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAi
V0tEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiV0tTdHJpbmcuaCIKKyNpbmNsdWRlICJXZWJTZXJp
YWxpemVkU2NyaXB0VmFsdWUuaCIKIAogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKICNpbmNsdWRl
ICJXZWJJbnRlbnREYXRhLmgiCkBAIC00NywyNyArNDgsNiBAQCBXS1R5cGVJRCBXS0ludGVudERh
dGFHZXRUeXBlSUQoKQogI2VuZGlmCiB9CiAKLVdLSW50ZW50RGF0YVJlZiBXS0ludGVudERhdGFD
cmVhdGUoV0tEaWN0aW9uYXJ5UmVmIGluaXREaWN0aW9uYXJ5UmVmKQotewotI2lmIEVOQUJMRShX
RUJfSU5URU5UUykKLSAgICBJbnRlbnREYXRhIGludGVudERhdGE7Ci0gICAgV0tTdHJpbmdSZWYg
YWN0aW9uID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JL
ZXkoaW5pdERpY3Rpb25hcnlSZWYsIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJhY3Rp
b24iKSkpOwotICAgIEFTU0VSVChhY3Rpb24pOwotICAgIGludGVudERhdGEuYWN0aW9uID0gdG9J
bXBsKGFjdGlvbiktPnN0cmluZygpOwotICAgIFdLU3RyaW5nUmVmIHR5cGUgPSBzdGF0aWNfY2Fz
dDxXS1N0cmluZ1JlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShpbml0RGljdGlvbmFyeVJl
ZiwgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoInR5cGUiKSkpOwotICAgIEFTU0VSVCh0
eXBlKTsKLSAgICBpbnRlbnREYXRhLnR5cGUgPSB0b0ltcGwodHlwZSktPnN0cmluZygpOwotICAg
IFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmIGRhdGEgPSBzdGF0aWNfY2FzdDxXS1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZVJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShpbml0RGljdGlvbmFy
eVJlZiwgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImRhdGEiKSkpOwotICAgIGlmIChk
YXRhKQotICAgICAgICBpbnRlbnREYXRhLmRhdGEgPSB0b0ltcGwoZGF0YSktPmRhdGFSZWZlcmVu
Y2UoKS52ZWN0b3IoKTsKLQotICAgIFJlZlB0cjxXZWJJbnRlbnREYXRhPiB3ZWJJbnRlbnREYXRh
ID0gV2ViSW50ZW50RGF0YTo6Y3JlYXRlKGludGVudERhdGEpOwotICAgIHJldHVybiB0b0FQSSh3
ZWJJbnRlbnREYXRhLnJlbGVhc2UoKS5sZWFrUmVmKCkpOwotI2Vsc2UKLSAgICByZXR1cm4gMDsK
LSNlbmRpZgotfQotCiBXS1N0cmluZ1JlZiBXS0ludGVudERhdGFDb3B5QWN0aW9uKFdLSW50ZW50
RGF0YVJlZiBpbnRlbnRSZWYpCiB7CiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLSW50ZW50RGF0YS5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLSW50ZW50RGF0YS5oCmluZGV4IDFmODA5ZWMuLjhm
Y2I4NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0ludGVu
dERhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnRlbnREYXRh
LmgKQEAgLTM0LDggKzM0LDYgQEAgZXh0ZXJuICJDIiB7CiAKIFdLX0VYUE9SVCBXS1R5cGVJRCBX
S0ludGVudERhdGFHZXRUeXBlSUQoKTsKIAotV0tfRVhQT1JUIFdLSW50ZW50RGF0YVJlZiBXS0lu
dGVudERhdGFDcmVhdGUoV0tEaWN0aW9uYXJ5UmVmIGluaXREaWN0aW9uYXJ5KTsKLQogV0tfRVhQ
T1JUIFdLU3RyaW5nUmVmIFdLSW50ZW50RGF0YUNvcHlBY3Rpb24oV0tJbnRlbnREYXRhUmVmIGlu
dGVudFJlZik7CiBXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tJbnRlbnREYXRhQ29weVR5cGUoV0tJ
bnRlbnREYXRhUmVmIGludGVudFJlZik7CiBXS19FWFBPUlQgV0tVUkxSZWYgV0tJbnRlbnREYXRh
Q29weVNlcnZpY2UoV0tJbnRlbnREYXRhUmVmIGludGVudFJlZik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW50ZW50RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViSW50ZW50RGF0YS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uZGMxOTBkNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJJbnRlbnREYXRhLmNwcApAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViSW50ZW50RGF0YS5oIgorCisjaWYg
RU5BQkxFKFdFQl9JTlRFTlRTKQorCisjaW5jbHVkZSAiSW1tdXRhYmxlQXJyYXkuaCIKKyNpbmNs
dWRlICJJbW11dGFibGVEaWN0aW9uYXJ5LmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5Lmgi
CisjaW5jbHVkZSAiV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSAiV2ViU3Ry
aW5nLmgiCisjaW5jbHVkZSAiV2ViVVJMLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJJ
bnRlbnREYXRhOjpXZWJJbnRlbnREYXRhKGNvbnN0IEludGVudERhdGEmIHN0b3JlLCBXZWJQcm9j
ZXNzUHJveHkqIHByb2Nlc3MpCisgICAgOiBtX3N0b3JlKHN0b3JlKQorICAgICwgbV9wcm9jZXNz
KHByb2Nlc3MpCit7Cit9CisKK1dlYkludGVudERhdGE6On5XZWJJbnRlbnREYXRhKCkKK3sKKyAg
ICAvLyBSZW1vdmUgTWVzc2FnZVBvcnRDaGFubmVscyBmcm9tIFdlYlByb2Nlc3MuCisgICAgaWYg
KG1fcHJvY2VzcyAmJiAhbV9zdG9yZS5tZXNzYWdlUG9ydHMuaXNFbXB0eSgpKSB7CisgICAgICAg
IHNpemVfdCBudW1NZXNzYWdlUG9ydHMgPSBtX3N0b3JlLm1lc3NhZ2VQb3J0cy5zaXplKCk7Cisg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtTWVzc2FnZVBvcnRzOyArK2kpCisgICAg
ICAgICAgICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VQb3J0Q2hhbm5lbChtX3N0b3JlLm1lc3Nh
Z2VQb3J0c1tpXSk7CisgICAgfQorfQorCitQYXNzUmVmUHRyPFdlYlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gV2ViSW50ZW50RGF0YTo6ZGF0YSgpIGNvbnN0Cit7CisgICAgVmVjdG9yPHVpbnQ4X3Q+
IGRhdGFDb3B5ID0gbV9zdG9yZS5kYXRhOworICAgIHJldHVybiBXZWJTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmFkb3B0KGRhdGFDb3B5KTsKK30KKworUGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4g
V2ViSW50ZW50RGF0YTo6c3VnZ2VzdGlvbnMoKSBjb25zdAoreworICAgIGNvbnN0IHNpemVfdCBu
dW1TdWdnZXN0aW9ucyA9IG1fc3RvcmUuc3VnZ2VzdGlvbnMuc2l6ZSgpOworICAgIFZlY3RvcjxS
ZWZQdHI8QVBJT2JqZWN0PiA+IHdrU3VnZ2VzdGlvbnMobnVtU3VnZ2VzdGlvbnMpOworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1TdWdnZXN0aW9uczsgKytpKQorICAgICAgICB3a1N1
Z2dlc3Rpb25zW2ldID0gV2ViVVJMOjpjcmVhdGUobV9zdG9yZS5zdWdnZXN0aW9uc1tpXSk7Cisg
ICAgcmV0dXJuIEltbXV0YWJsZUFycmF5OjphZG9wdCh3a1N1Z2dlc3Rpb25zKTsKK30KKworU3Ry
aW5nIFdlYkludGVudERhdGE6OmV4dHJhKGNvbnN0IFN0cmluZyYga2V5KSBjb25zdAoreworICAg
IHJldHVybiBtX3N0b3JlLmV4dHJhcy5nZXQoa2V5KTsKK30KKworUGFzc1JlZlB0cjxJbW11dGFi
bGVEaWN0aW9uYXJ5PiBXZWJJbnRlbnREYXRhOjpleHRyYXMoKSBjb25zdAoreworICAgIEltbXV0
YWJsZURpY3Rpb25hcnk6Ok1hcFR5cGUgd2tFeHRyYXM7CisgICAgSGFzaE1hcDxTdHJpbmcsIFN0
cmluZz46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fc3RvcmUuZXh0cmFzLmVuZCgpOworICAgIGZv
ciAoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9zdG9yZS5l
eHRyYXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICB3a0V4dHJhcy5zZXQoaXQt
PmZpcnN0LCBXZWJTdHJpbmc6OmNyZWF0ZShpdC0+c2Vjb25kKSk7CisgICAgcmV0dXJuIEltbXV0
YWJsZURpY3Rpb25hcnk6OmFkb3B0KHdrRXh0cmFzKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0lOVEVOVFMpCisKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnRlbnREYXRhLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViSW50ZW50RGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjlkNTlmOTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
SW50ZW50RGF0YS5oCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
SW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgV2ViSW50ZW50RGF0YV9oCisjZGVmaW5lIFdlYkludGVudERhdGFfaAorCisjaWYgRU5BQkxF
KFdFQl9JTlRFTlRTKQorCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiSW50ZW50
RGF0YS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBJbW11dGFibGVBcnJheTsKK2Ns
YXNzIEltbXV0YWJsZURpY3Rpb25hcnk7CitjbGFzcyBXZWJQcm9jZXNzUHJveHk7CitjbGFzcyBX
ZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU7CisKK2NsYXNzIFdlYkludGVudERhdGEgOiBwdWJsaWMg
QVBJT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlw
ZUludGVudERhdGE7CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJJbnRlbnREYXRhPiBjcmVh
dGUoY29uc3QgSW50ZW50RGF0YSYgc3RvcmUsIFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcykKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViSW50ZW50RGF0YShzdG9yZSwgcHJv
Y2VzcykpOworICAgIH0KKworICAgIHZpcnR1YWwgfldlYkludGVudERhdGEoKTsKKworICAgIGNv
bnN0IFN0cmluZyYgYWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdG9yZS5hY3Rpb247IH0KKyAg
ICBjb25zdCBTdHJpbmcmIHBheWxvYWRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9zdG9yZS50eXBl
OyB9CisgICAgY29uc3QgV2ViQ29yZTo6S1VSTCYgc2VydmljZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c3RvcmUuc2VydmljZTsgfQorICAgIFBhc3NSZWZQdHI8V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBkYXRhKCkgY29uc3Q7CisgICAgU3RyaW5nIGV4dHJhKGNvbnN0IFN0cmluZyYga2V5KSBjb25z
dDsKKyAgICBQYXNzUmVmUHRyPEltbXV0YWJsZURpY3Rpb25hcnk+IGV4dHJhcygpIGNvbnN0Owor
ICAgIFBhc3NSZWZQdHI8SW1tdXRhYmxlQXJyYXk+IHN1Z2dlc3Rpb25zKCkgY29uc3Q7CisKKyAg
ICBjb25zdCBJbnRlbnREYXRhJiBzdG9yZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmU7IH0KKwor
cHJpdmF0ZToKKyAgICBXZWJJbnRlbnREYXRhKGNvbnN0IEludGVudERhdGEmLCBXZWJQcm9jZXNz
UHJveHkqKTsKKworICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQVBJVHlw
ZTsgfQorCisgICAgSW50ZW50RGF0YSBtX3N0b3JlOworICAgIFdlYlByb2Nlc3NQcm94eSogbV9w
cm9jZXNzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUo
V0VCX0lOVEVOVFMpCisKKyNlbmRpZiAvLyBXZWJJbnRlbnREYXRhX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggNmNmMjYwYS4uZTM2ZjQ0MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTIxOTAsNyArMjE5MCw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWUodWludDY0X3Qg
ZnJhbWVJRCwgY29uc3QgSW50ZW50RGF0YSYKICAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IHBy
b2Nlc3MoKS0+d2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhmcmFtZSk7CiAK
LSAgICBSZWZQdHI8V2ViSW50ZW50RGF0YT4gd2ViSW50ZW50RGF0YSA9IFdlYkludGVudERhdGE6
OmNyZWF0ZShpbnRlbnREYXRhKTsKKyAgICBSZWZQdHI8V2ViSW50ZW50RGF0YT4gd2ViSW50ZW50
RGF0YSA9IFdlYkludGVudERhdGE6OmNyZWF0ZShpbnRlbnREYXRhLCBwcm9jZXNzKCkpOwogICAg
IG1fbG9hZGVyQ2xpZW50LmRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZSh0aGlzLCBmcmFtZSwgd2Vi
SW50ZW50RGF0YS5nZXQoKSwgdXNlckRhdGEuZ2V0KCkpOwogfQogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGUzY2RjODguLjI2YzNh
ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBA
IC0xOTYsNiArMTk2LDE0IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZW1vdmVXZWJQYWdlKHVp
bnQ2NF90IHBhZ2VJRCkKICAgICBtX3BhZ2VNYXAucmVtb3ZlKHBhZ2VJRCk7CiB9CiAKK3ZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjpyZW1vdmVNZXNzYWdlUG9ydENoYW5uZWwodWludDY0X3QgY2hhbm5l
bElEKQoreworICAgIGlmICghaXNWYWxpZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpSZW1vdmVNZXNzYWdlUG9ydENoYW5uZWwoY2hhbm5lbElE
KSwgMCk7Cit9CisKIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIFdlYlByb2Nlc3NQcm94eTo6d2Vi
QmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IGl0ZW1JRCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9i
YWNrRm9yd2FyZExpc3RJdGVtTWFwLmdldChpdGVtSUQpLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IDhlNzY4YmYuLjdiMWNhMDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTg3LDYgKzg3LDgg
QEAgcHVibGljOgogICAgIHZvaWQgYWRkRXhpc3RpbmdXZWJQYWdlKFdlYlBhZ2VQcm94eSosIHVp
bnQ2NF90IHBhZ2VJRCk7CiAgICAgdm9pZCByZW1vdmVXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCk7
CiAKKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VQb3J0Q2hhbm5lbCh1aW50NjRfdCBjaGFubmVsSUQp
OworCiAgICAgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogd2ViQmFja0ZvcndhcmRJdGVtKHVpbnQ2
NF90IGl0ZW1JRCkgY29uc3Q7CiAKICAgICBSZXNwb25zaXZlbmVzc1RpbWVyKiByZXNwb25zaXZl
bmVzc1RpbWVyKCkgeyByZXR1cm4gJm1fcmVzcG9uc2l2ZW5lc3NUaW1lcjsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZUFQSUNhc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVBUElDYXN0LmgKaW5kZXggMzM1NWQwOC4uMDE4ZWY3OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUFQ
SUNhc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlQVBJQ2FzdC5oCkBAIC00Niw2ICs0Niw3IEBAIGNsYXNzIEluamVjdGVkQnVu
ZGxlQmFja0ZvcndhcmRMaXN0OwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJ
dGVtOwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb247CiBjbGFzcyBJbmpl
Y3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ7CitjbGFzcyBJbmplY3RlZEJ1bmRsZUludGVudDsKIGNs
YXNzIEluamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdDsKIGNsYXNzIEluamVjdGVkQnVuZGxlTmF2
aWdhdGlvbkFjdGlvbjsKIGNsYXNzIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTsKQEAgLTY0LDYg
KzY1LDcgQEAgV0tfQUREX0FQSV9NQVBQSU5HKFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uUmVm
LCBJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2kKIFdLX0FERF9BUElfTUFQUElORyhXS0J1
bmRsZUZyYW1lUmVmLCBXZWJGcmFtZSkKIFdLX0FERF9BUElfTUFQUElORyhXS0J1bmRsZUhpdFRl
c3RSZXN1bHRSZWYsIEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdCkKIFdLX0FERF9BUElfTUFQ
UElORyhXS0J1bmRsZUluc3BlY3RvclJlZiwgV2ViSW5zcGVjdG9yKQorV0tfQUREX0FQSV9NQVBQ
SU5HKFdLQnVuZGxlSW50ZW50UmVmLCBJbmplY3RlZEJ1bmRsZUludGVudCkKIFdLX0FERF9BUElf
TUFQUElORyhXS0J1bmRsZUludGVudFJlcXVlc3RSZWYsIEluamVjdGVkQnVuZGxlSW50ZW50UmVx
dWVzdCkKIFdLX0FERF9BUElfTUFQUElORyhXS0J1bmRsZU5hdmlnYXRpb25BY3Rpb25SZWYsIElu
amVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbikKIFdLX0FERF9BUElfTUFQUElORyhXS0J1bmRs
ZU5vZGVIYW5kbGVSZWYsIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRl
bnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZUludGVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDgz
ODYzZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnQuY3BwCkBAIC0wLDAgKzEsMTM1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0tCdW5kbGVJ
bnRlbnQuaCIKKworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyNpbmNsdWRlICJJbW11dGFibGVB
cnJheS5oIgorI2luY2x1ZGUgIkltbXV0YWJsZURpY3Rpb25hcnkuaCIKKyNpbmNsdWRlICJJbmpl
Y3RlZEJ1bmRsZUludGVudC5oIgorI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldL
QnVuZGxlQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLRGljdGlvbmFyeS5oIgorI2luY2x1ZGUgIldL
U3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjZW5kaWYK
KworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKKyNlbmRpZgorCitXS1R5cGVJRCBXS0J1bmRsZUludGVudEdl
dFR5cGVJRCgpCit7CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorICAgIHJldHVybiB0b0FQSShJ
bmplY3RlZEJ1bmRsZUludGVudDo6QVBJVHlwZSk7CisjZWxzZQorICAgIHJldHVybiAwOworI2Vu
ZGlmCit9CisKK1dLQnVuZGxlSW50ZW50UmVmIFdLQnVuZGxlSW50ZW50Q3JlYXRlKFdLRGljdGlv
bmFyeVJlZiBpbml0RGljdGlvbmFyeVJlZikKK3sKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisg
ICAgV0tTdHJpbmdSZWYgYWN0aW9uID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGljdGlv
bmFyeUdldEl0ZW1Gb3JLZXkoaW5pdERpY3Rpb25hcnlSZWYsIFdLU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKCJhY3Rpb24iKSkpOworICAgIEFTU0VSVChhY3Rpb24pOworICAgIFdLU3RyaW5n
UmVmIHR5cGUgPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZv
cktleShpbml0RGljdGlvbmFyeVJlZiwgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoInR5
cGUiKSkpOworICAgIEFTU0VSVCh0eXBlKTsKKyAgICBXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJl
ZiBkYXRhID0gc3RhdGljX2Nhc3Q8V0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWY+KFdLRGljdGlv
bmFyeUdldEl0ZW1Gb3JLZXkoaW5pdERpY3Rpb25hcnlSZWYsIFdLU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKCJkYXRhIikpKTsKKyAgICBNZXNzYWdlUG9ydEFycmF5IGR1bW15UG9ydHM7Cisg
ICAgRXhjZXB0aW9uQ29kZSBlYzsKKworICAgIFJlZlB0cjxJbnRlbnQ+IGNvcmVJbnRlbnQgPSBJ
bnRlbnQ6OmNyZWF0ZSh0b0ltcGwoYWN0aW9uKS0+c3RyaW5nKCksIHRvSW1wbCh0eXBlKS0+c3Ry
aW5nKCksIGRhdGEgPyBzdGF0aWNfY2FzdDxTZXJpYWxpemVkU2NyaXB0VmFsdWUqPih0b0ltcGwo
ZGF0YSktPmludGVybmFsUmVwcmVzZW50YXRpb24oKSkgOiAwLCBkdW1teVBvcnRzLCBlYyk7Cisg
ICAgcmV0dXJuIHRvQVBJKEluamVjdGVkQnVuZGxlSW50ZW50OjpjcmVhdGUoY29yZUludGVudC5n
ZXQoKSkubGVha1JlZigpKTsKKyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KKworV0tT
dHJpbmdSZWYgV0tCdW5kbGVJbnRlbnRDb3B5QWN0aW9uKFdLQnVuZGxlSW50ZW50UmVmIGludGVu
dFJlZikKK3sKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgcmV0dXJuIHRvQ29waWVkQVBJ
KHRvSW1wbChpbnRlbnRSZWYpLT5hY3Rpb24oKSk7CisjZWxzZQorICAgIHJldHVybiAwOworI2Vu
ZGlmCit9CisKK1dLU3RyaW5nUmVmIFdLQnVuZGxlSW50ZW50Q29weVR5cGUoV0tCdW5kbGVJbnRl
bnRSZWYgaW50ZW50UmVmKQoreworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICByZXR1cm4g
dG9Db3BpZWRBUEkodG9JbXBsKGludGVudFJlZiktPnBheWxvYWRUeXBlKCkpOworI2Vsc2UKKyAg
ICByZXR1cm4gMDsKKyNlbmRpZgorfQorCitXS1VSTFJlZiBXS0J1bmRsZUludGVudENvcHlTZXJ2
aWNlKFdLQnVuZGxlSW50ZW50UmVmIGludGVudFJlZikKK3sKKyNpZiBFTkFCTEUoV0VCX0lOVEVO
VFMpCisgICAgcmV0dXJuIHRvQ29waWVkVVJMQVBJKHRvSW1wbChpbnRlbnRSZWYpLT5zZXJ2aWNl
KCkpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCitXS0FycmF5UmVmIFdLQnVu
ZGxlSW50ZW50Q29weVN1Z2dlc3Rpb25zKFdLQnVuZGxlSW50ZW50UmVmIGludGVudFJlZikKK3sK
KyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChpbnRlbnRS
ZWYpLT5zdWdnZXN0aW9ucygpLmxlYWtSZWYoKSk7CisjZWxzZQorICAgIHJldHVybiAwOworI2Vu
ZGlmCit9CisKK1dLU3RyaW5nUmVmIFdLQnVuZGxlSW50ZW50Q29weUV4dHJhKFdLQnVuZGxlSW50
ZW50UmVmIGludGVudFJlZiwgV0tTdHJpbmdSZWYga2V5KQoreworI2lmIEVOQUJMRShXRUJfSU5U
RU5UUykKKyAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKGludGVudFJlZiktPmV4dHJhKHRv
V1RGU3RyaW5nKGtleSkpKTsKKyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KKworV0tE
aWN0aW9uYXJ5UmVmIFdLQnVuZGxlSW50ZW50Q29weUV4dHJhcyhXS0J1bmRsZUludGVudFJlZiBp
bnRlbnRSZWYpCit7CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorICAgIHJldHVybiB0b0FQSSh0
b0ltcGwoaW50ZW50UmVmKS0+ZXh0cmFzKCkubGVha1JlZigpKTsKKyNlbHNlCisgICAgcmV0dXJu
IDA7CisjZW5kaWYKK30KKworc2l6ZV90IFdLQnVuZGxlSW50ZW50TWVzc2FnZVBvcnRDb3VudChX
S0J1bmRsZUludGVudFJlZiBpbnRlbnRSZWYpCit7CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQor
ICAgIE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5KiBtZXNzYWdlUG9ydHMgPSB0b0ltcGwoaW50ZW50
UmVmKS0+Y29yZUludGVudCgpLT5tZXNzYWdlUG9ydHMoKTsKKworICAgIHJldHVybiBtZXNzYWdl
UG9ydHMgPyBtZXNzYWdlUG9ydHMtPnNpemUoKSA6IDA7CisjZWxzZQorICAgIHJldHVybiAwOwor
I2VuZGlmCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uNjQ3MTlkNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnQuaApAQCAt
MCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9u
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdLQnVuZGxlSW50ZW50
X2gKKyNkZWZpbmUgV0tCdW5kbGVJbnRlbnRfaAorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2Uu
aD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitXS19FWFBP
UlQgV0tUeXBlSUQgV0tCdW5kbGVJbnRlbnRHZXRUeXBlSUQoKTsKKworV0tfRVhQT1JUIFdLQnVu
ZGxlSW50ZW50UmVmIFdLQnVuZGxlSW50ZW50Q3JlYXRlKFdLRGljdGlvbmFyeVJlZiBpbml0RGlj
dGlvbmFyeSk7CisKK1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0J1bmRsZUludGVudENvcHlBY3Rp
b24oV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmKTsKK1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBX
S0J1bmRsZUludGVudENvcHlUeXBlKFdLQnVuZGxlSW50ZW50UmVmIGludGVudFJlZik7CitXS19F
WFBPUlQgV0tVUkxSZWYgV0tCdW5kbGVJbnRlbnRDb3B5U2VydmljZShXS0J1bmRsZUludGVudFJl
ZiBpbnRlbnRSZWYpOworV0tfRVhQT1JUIFdLQXJyYXlSZWYgV0tCdW5kbGVJbnRlbnRDb3B5U3Vn
Z2VzdGlvbnMoV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmKTsKK1dLX0VYUE9SVCBXS1N0cmlu
Z1JlZiBXS0J1bmRsZUludGVudENvcHlFeHRyYShXS0J1bmRsZUludGVudFJlZiBpbnRlbnRSZWYs
IFdLU3RyaW5nUmVmIGtleSk7CitXS19FWFBPUlQgV0tEaWN0aW9uYXJ5UmVmIFdLQnVuZGxlSW50
ZW50Q29weUV4dHJhcyhXS0J1bmRsZUludGVudFJlZiBpbnRlbnRSZWYpOworV0tfRVhQT1JUIHNp
emVfdCBXS0J1bmRsZUludGVudE1lc3NhZ2VQb3J0Q291bnQoV0tCdW5kbGVJbnRlbnRSZWYgaW50
ZW50UmVmKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8vIFdL
QnVuZGxlSW50ZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnRSZXF1ZXN0
LmNwcAppbmRleCA4MWM5NWM2Li5hNDc3MmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50UmVxdWVzdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZUludGVudFJlcXVlc3QuY3BwCkBAIC0yNywxMCArMjcsMTAgQEAKICNpbmNsdWRlICJXS0J1
bmRsZUludGVudFJlcXVlc3QuaCIKIAogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyNpbmNsdWRl
ICJJbmplY3RlZEJ1bmRsZUludGVudC5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlSW50ZW50
UmVxdWVzdC5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLQnVuZGxlQVBJ
Q2FzdC5oIgotI2luY2x1ZGUgIldlYkludGVudERhdGEuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKICNlbmRpZgpAQCAtNDQsMTEgKzQ0LDExIEBAIFdLVHlwZUlEIFdLQnVuZGxlSW50ZW50
UmVxdWVzdEdldFR5cGVJRCgpCiAjZW5kaWYKIH0KIAotV0tJbnRlbnREYXRhUmVmIFdLQnVuZGxl
SW50ZW50UmVxdWVzdENvcHlJbnRlbnREYXRhKFdLQnVuZGxlSW50ZW50UmVxdWVzdFJlZiByZXF1
ZXN0UmVmKQorV0tCdW5kbGVJbnRlbnRSZWYgV0tCdW5kbGVJbnRlbnRSZXF1ZXN0Q29weUludGVu
dChXS0J1bmRsZUludGVudFJlcXVlc3RSZWYgcmVxdWVzdFJlZikKIHsKICNpZiBFTkFCTEUoV0VC
X0lOVEVOVFMpCi0gICAgUmVmUHRyPFdlYkludGVudERhdGE+IHdlYkludGVudERhdGEgPSB0b0lt
cGwocmVxdWVzdFJlZiktPmludGVudCgpOwotICAgIHJldHVybiB0b0FQSSh3ZWJJbnRlbnREYXRh
LnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZUludGVudD4g
d2ViSW50ZW50ID0gdG9JbXBsKHJlcXVlc3RSZWYpLT5pbnRlbnQoKTsKKyAgICByZXR1cm4gdG9B
UEkod2ViSW50ZW50LnJlbGVhc2UoKS5sZWFrUmVmKCkpOwogI2Vsc2UKICAgICByZXR1cm4gMDsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnRSZXF1ZXN0LmgKaW5kZXgg
YjE4MTM2ZC4uMTA1YWZhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudFJlcXVlc3QuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50UmVx
dWVzdC5oCkBAIC0zNCw3ICszNCw3IEBAIGV4dGVybiAiQyIgewogCiBXS19FWFBPUlQgV0tUeXBl
SUQgV0tCdW5kbGVJbnRlbnRSZXF1ZXN0R2V0VHlwZUlEKCk7CiAKLVdLX0VYUE9SVCBXS0ludGVu
dERhdGFSZWYgV0tCdW5kbGVJbnRlbnRSZXF1ZXN0Q29weUludGVudERhdGEoV0tCdW5kbGVJbnRl
bnRSZXF1ZXN0UmVmIHJlcXVlc3QpOworV0tfRVhQT1JUIFdLQnVuZGxlSW50ZW50UmVmIFdLQnVu
ZGxlSW50ZW50UmVxdWVzdENvcHlJbnRlbnQoV0tCdW5kbGVJbnRlbnRSZXF1ZXN0UmVmIHJlcXVl
c3QpOwogCiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZUludGVudFJlcXVlc3RQb3N0UmVzdWx0KFdL
QnVuZGxlSW50ZW50UmVxdWVzdFJlZiByZXF1ZXN0LCBXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJl
ZiBzZXJpYWxpemVkRGF0YSk7CiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZUludGVudFJlcXVlc3RQ
b3N0RmFpbHVyZShXS0J1bmRsZUludGVudFJlcXVlc3RSZWYgcmVxdWVzdCwgV0tTZXJpYWxpemVk
U2NyaXB0VmFsdWVSZWYgc2VyaWFsaXplZERhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2Uu
Y3BwCmluZGV4IDJhZTIyMzcuLjgwMjQxY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5j
cHAKQEAgLTQ3LDcgKzQ3LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KIAogI2lmIEVO
QUJMRShXRUJfSU5URU5UUykKLSNpbmNsdWRlICJXZWJJbnRlbnREYXRhLmgiCisjaW5jbHVkZSAi
SW5qZWN0ZWRCdW5kbGVJbnRlbnQuaCIKICNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0
OwpAQCAtMzEwLDEwICszMTAsMTAgQEAgZG91YmxlIFdLQnVuZGxlUGFnZUdldEJhY2tpbmdTY2Fs
ZUZhY3RvcihXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZikKICAgICByZXR1cm4gdG9JbXBsKHBhZ2VS
ZWYpLT5kZXZpY2VTY2FsZUZhY3RvcigpOwogfQogCi12b2lkIFdLQnVuZGxlUGFnZURlbGl2ZXJJ
bnRlbnRUb0ZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVmIGZy
YW1lUmVmLCBXS0ludGVudERhdGFSZWYgaW50ZW50UmVmKQordm9pZCBXS0J1bmRsZVBhZ2VEZWxp
dmVySW50ZW50VG9GcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVGcmFtZVJl
ZiBmcmFtZVJlZiwgV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmKQogewogI2lmIEVOQUJMRShX
RUJfSU5URU5UUykKLSAgICB0b0ltcGwocGFnZVJlZiktPmRlbGl2ZXJJbnRlbnRUb0ZyYW1lKHRv
SW1wbChmcmFtZVJlZiktPmZyYW1lSUQoKSwgdG9JbXBsKGludGVudFJlZiktPnN0b3JlKCkpOwor
ICAgIHRvSW1wbChwYWdlUmVmKS0+ZGVsaXZlckNvcmVJbnRlbnRUb0ZyYW1lKHRvSW1wbChmcmFt
ZVJlZiktPmZyYW1lSUQoKSwgdG9JbXBsKGludGVudFJlZiktPmNvcmVJbnRlbnQoKSk7CiAjZW5k
aWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgKaW5kZXggYWE4NjA5Mi4uNmYxOGIzNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZVBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCkBAIC00MDQsNyArNDA0LDcgQEAgV0tfRVhQT1JU
IFdLSW1hZ2VSZWYgV0tCdW5kbGVQYWdlQ3JlYXRlU2NhbGVkU25hcHNob3RJbkRvY3VtZW50Q29v
cmRpbmF0ZXMoV0tCdW4KIAogV0tfRVhQT1JUIGRvdWJsZSBXS0J1bmRsZVBhZ2VHZXRCYWNraW5n
U2NhbGVGYWN0b3IoV0tCdW5kbGVQYWdlUmVmIHBhZ2UpOwogCi1XS19FWFBPUlQgdm9pZCBXS0J1
bmRsZVBhZ2VEZWxpdmVySW50ZW50VG9GcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5k
bGVGcmFtZVJlZiBmcmFtZSwgV0tJbnRlbnREYXRhUmVmIGludGVudCk7CitXS19FWFBPUlQgdm9p
ZCBXS0J1bmRsZVBhZ2VEZWxpdmVySW50ZW50VG9GcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwg
V0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50KTsKIAogI2lm
IGRlZmluZWQoRU5BQkxFX0lOU1BFQ1RPUikgJiYgRU5BQkxFX0lOU1BFQ1RPUgogV0tfRVhQT1JU
IFdLQnVuZGxlSW5zcGVjdG9yUmVmIFdLQnVuZGxlUGFnZUdldEluc3BlY3RvcihXS0J1bmRsZVBh
Z2VSZWYgcGFnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnQuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3YWI1ODYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50
LmNwcApAQCAtMCwwICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENv
cnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVJbnRlbnQuaCIKKworI2lmIEVOQUJMRShX
RUJfSU5URU5UUykKKworI2luY2x1ZGUgIkltbXV0YWJsZUFycmF5LmgiCisjaW5jbHVkZSAiSW1t
dXRhYmxlRGljdGlvbmFyeS5oIgorI2luY2x1ZGUgIldlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
IgorI2luY2x1ZGUgIldlYlN0cmluZy5oIgorI2luY2x1ZGUgIldlYlVSTC5oIgorCit1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1Bhc3NSZWZQdHI8SW5q
ZWN0ZWRCdW5kbGVJbnRlbnQ+IEluamVjdGVkQnVuZGxlSW50ZW50OjpjcmVhdGUoV2ViQ29yZTo6
SW50ZW50KiBpbnRlbnQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbmplY3RlZEJ1bmRs
ZUludGVudChpbnRlbnQpKTsKK30KKworSW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OkluamVjdGVkQnVu
ZGxlSW50ZW50KFdlYkNvcmU6OkludGVudCogaW50ZW50KQorICAgIDogbV9pbnRlbnQoaW50ZW50
KQoreworfQorCitTdHJpbmcgSW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OmFjdGlvbigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1faW50ZW50LT5hY3Rpb24oKTsKK30KKworU3RyaW5nIEluamVjdGVkQnVu
ZGxlSW50ZW50OjpwYXlsb2FkVHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW50ZW50LT50
eXBlKCk7Cit9CisKK1dlYkNvcmU6OktVUkwgSW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OnNlcnZpY2Uo
KSBjb25zdAoreworICAgIHJldHVybiBtX2ludGVudC0+c2VydmljZSgpOworfQorCitQYXNzUmVm
UHRyPFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gSW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OmRhdGEo
KSBjb25zdAoreworICAgIHJldHVybiBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSht
X2ludGVudC0+ZGF0YSgpKTsKK30KKworU3RyaW5nIEluamVjdGVkQnVuZGxlSW50ZW50OjpleHRy
YShjb25zdCBTdHJpbmcmIGtleSkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbnRlbnQtPmV4dHJh
cygpLmdldChrZXkpOworfQorCitQYXNzUmVmUHRyPEltbXV0YWJsZURpY3Rpb25hcnk+IEluamVj
dGVkQnVuZGxlSW50ZW50OjpleHRyYXMoKSBjb25zdAoreworICAgIGNvbnN0IEhhc2hNYXA8U3Ry
aW5nLCBTdHJpbmc+JiBleHRyYXMgPSBtX2ludGVudC0+ZXh0cmFzKCk7CisgICAgSW1tdXRhYmxl
RGljdGlvbmFyeTo6TWFwVHlwZSB3a0V4dHJhczsKKyAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5n
Pjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gZXh0cmFzLmVuZCgpOworICAgIGZvciAoSGFzaE1hcDxT
dHJpbmcsIFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gZXh0cmFzLmJlZ2luKCk7IGl0ICE9
IGVuZDsgKytpdCkKKyAgICAgICAgd2tFeHRyYXMuc2V0KGl0LT5maXJzdCwgV2ViU3RyaW5nOjpj
cmVhdGUoaXQtPnNlY29uZCkpOworICAgIHJldHVybiBJbW11dGFibGVEaWN0aW9uYXJ5OjphZG9w
dCh3a0V4dHJhcyk7Cit9CisKK1Bhc3NSZWZQdHI8SW1tdXRhYmxlQXJyYXk+IEluamVjdGVkQnVu
ZGxlSW50ZW50OjpzdWdnZXN0aW9ucygpIGNvbnN0Cit7CisgICAgY29uc3QgVmVjdG9yPEtVUkw+
JiBzdWdnZXN0aW9ucyA9IG1faW50ZW50LT5zdWdnZXN0aW9ucygpOworICAgIGNvbnN0IHNpemVf
dCBudW1TdWdnZXN0aW9ucyA9IHN1Z2dlc3Rpb25zLnNpemUoKTsKKyAgICBWZWN0b3I8UmVmUHRy
PEFQSU9iamVjdD4gPiB3a1N1Z2dlc3Rpb25zKG51bVN1Z2dlc3Rpb25zKTsKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbnVtU3VnZ2VzdGlvbnM7ICsraSkKKyAgICAgICAgd2tTdWdnZXN0
aW9uc1tpXSA9IFdlYlVSTDo6Y3JlYXRlKHN1Z2dlc3Rpb25zW2ldKTsKKyAgICByZXR1cm4gSW1t
dXRhYmxlQXJyYXk6OmFkb3B0KHdrU3VnZ2VzdGlvbnMpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfSU5URU5UUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnQu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVJbnRlbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZDNmMDZjCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZUludGVudC5oCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgSW5qZWN0ZWRCdW5kbGVJbnRlbnRfaAorI2RlZmluZSBJbmplY3RlZEJ1
bmRsZUludGVudF9oCisKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisKKyNpbmNsdWRlICJBUElP
YmplY3QuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ludGVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
S1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBJbW11dGFibGVBcnJheTsKK2NsYXNzIEltbXV0YWJsZURpY3Rpb25hcnk7CitjbGFzcyBX
ZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU7CisKK2NsYXNzIEluamVjdGVkQnVuZGxlSW50ZW50IDog
cHVibGljIEFQSU9iamVjdCB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IFR5cGUgQVBJVHlw
ZSA9IFR5cGVCdW5kbGVJbnRlbnQ7CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbmplY3RlZEJ1
bmRsZUludGVudD4gY3JlYXRlKFdlYkNvcmU6OkludGVudCopOworCisgICAgU3RyaW5nIGFjdGlv
bigpIGNvbnN0OworICAgIFN0cmluZyBwYXlsb2FkVHlwZSgpIGNvbnN0OworICAgIFdlYkNvcmU6
OktVUkwgc2VydmljZSgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8V2ViU2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBkYXRhKCkgY29uc3Q7CisgICAgU3RyaW5nIGV4dHJhKGNvbnN0IFN0cmluZyYga2V5
KSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEltbXV0YWJsZURpY3Rpb25hcnk+IGV4dHJhcygpIGNv
bnN0OworICAgIFBhc3NSZWZQdHI8SW1tdXRhYmxlQXJyYXk+IHN1Z2dlc3Rpb25zKCkgY29uc3Q7
CisKKyAgICBXZWJDb3JlOjpJbnRlbnQqIGNvcmVJbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2lu
dGVudC5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0IEluamVjdGVkQnVuZGxlSW50
ZW50KFdlYkNvcmU6OkludGVudCopOworCisgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7
IHJldHVybiBBUElUeXBlOyB9CisKKyAgICBSZWZQdHI8V2ViQ29yZTo6SW50ZW50PiBtX2ludGVu
dDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9J
TlRFTlRTKQorCisjZW5kaWYgLy8gSW5qZWN0ZWRCdW5kbGVJbnRlbnRfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUlu
dGVudFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuY3BwCmluZGV4IDVjY2IxOWMuLmVhYzBiODNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuY3BwCkBAIC0y
Nyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0LmgiCiAK
ICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVJbnRlbnQu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0ludGVudFJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJTZXJp
YWxpemVkU2NyaXB0VmFsdWUuaD4KIApAQCAtNTQsOSArNTUsOSBAQCB2b2lkIEluamVjdGVkQnVu
ZGxlSW50ZW50UmVxdWVzdDo6cG9zdEZhaWx1cmUoV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlKiBk
YXRhKQogICAgIG1faW50ZW50UmVxdWVzdC0+cG9zdEZhaWx1cmUoc3RhdGljX2Nhc3Q8U2VyaWFs
aXplZFNjcmlwdFZhbHVlKj4oZGF0YS0+aW50ZXJuYWxSZXByZXNlbnRhdGlvbigpKSk7CiB9CiAK
LVBhc3NSZWZQdHI8V2ViSW50ZW50RGF0YT4gSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0Ojpp
bnRlbnQoKSBjb25zdAorUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZUludGVudD4gSW5qZWN0ZWRC
dW5kbGVJbnRlbnRSZXF1ZXN0OjppbnRlbnQoKSBjb25zdAogewotICAgIHJldHVybiBXZWJJbnRl
bnREYXRhOjpjcmVhdGUoSW50ZW50RGF0YShtX2ludGVudFJlcXVlc3QtPmludGVudCgpKSk7Cisg
ICAgcmV0dXJuIEluamVjdGVkQnVuZGxlSW50ZW50OjpjcmVhdGUobV9pbnRlbnRSZXF1ZXN0LT5p
bnRlbnQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudFJl
cXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0LmgKaW5kZXggYjU4NzBkOS4uMzNhMzE5MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZUludGVudFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5oCkBAIC0yOSw3ICsyOSw2IEBACiAj
aWYgRU5BQkxFKFdFQl9JTlRFTlRTKQogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCi0jaW5jbHVk
ZSAiV2ViSW50ZW50RGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC00MCw2ICszOSw3
IEBAIGNsYXNzIEludGVudFJlcXVlc3Q7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBJ
bmplY3RlZEJ1bmRsZUludGVudDsKIGNsYXNzIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIAog
Y2xhc3MgSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0IDogcHVibGljIEFQSU9iamVjdCB7CkBA
IC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHBvc3RSZXN1bHQoV2ViU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKik7CiAgICAgdm9pZCBwb3N0RmFpbHVyZShXZWJTZXJpYWxpemVkU2NyaXB0
VmFsdWUqKTsKIAotICAgIFBhc3NSZWZQdHI8V2ViSW50ZW50RGF0YT4gaW50ZW50KCkgY29uc3Q7
CisgICAgUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZUludGVudD4gaW50ZW50KCkgY29uc3Q7CiAK
IHByaXZhdGU6CiAgICAgZXhwbGljaXQgSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0KFdlYkNv
cmU6OkludGVudFJlcXVlc3QqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViRnJhbWUuY3BwCmluZGV4IGYzNmZjMDIuLmY5YmI3MDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtNjMsNiArNjMsNyBAQAog
I2luY2x1ZGUgIkludGVudERhdGEuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0RPTVdpbmRvd0ludGVu
dHMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RlbGl2ZXJlZEludGVudC5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvSW50ZW50Lmg+CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0o
V0lOKQpAQCAtMjQ2LDEzICsyNDcsMzkgQEAgdm9pZCBXZWJGcmFtZTo6Y29udmVydEhhbmRsZVRv
RG93bmxvYWQoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzb3VyY2VSZXEKIHZvaWQg
V2ViRnJhbWU6OmRlbGl2ZXJJbnRlbnQoY29uc3QgSW50ZW50RGF0YSYgaW50ZW50RGF0YSkKIHsK
ICAgICBPd25QdHI8RGVsaXZlcmVkSW50ZW50Q2xpZW50PiBkdW1teUNsaWVudDsKLSAgICBPd25Q
dHI8TWVzc2FnZVBvcnRBcnJheT4gZHVtbXlQb3J0czsKICAgICBWZWN0b3I8dWludDhfdD4gZGF0
YUNvcHkgPSBpbnRlbnREYXRhLmRhdGE7CisKKyAgICBPd25QdHI8V2ViQ29yZTo6TWVzc2FnZVBv
cnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzOworICAgIGlmICghaW50ZW50RGF0YS5tZXNzYWdlUG9y
dHMuaXNFbXB0eSgpKSB7CisgICAgICAgIGNoYW5uZWxzID0gYWRvcHRQdHIobmV3IFdlYkNvcmU6
Ok1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5KGludGVudERhdGEubWVzc2FnZVBvcnRzLnNpemUoKSkp
OworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGludGVudERhdGEubWVzc2FnZVBvcnRz
LnNpemUoKTsgKytpKQorICAgICAgICAgICAgKCpjaGFubmVscylbaV0gPSBNZXNzYWdlUG9ydENo
YW5uZWw6OmNyZWF0ZShXZWJQcm9jZXNzOjpzaGFyZWQoKS5tZXNzYWdlUG9ydENoYW5uZWwoaW50
ZW50RGF0YS5tZXNzYWdlUG9ydHMuYXQoaSkpKTsKKyAgICB9CisgICAgT3duUHRyPFdlYkNvcmU6
Ok1lc3NhZ2VQb3J0QXJyYXk+IG1lc3NhZ2VQb3J0cyA9IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Ojpl
bnRhbmdsZVBvcnRzKCptX2NvcmVGcmFtZS0+ZG9tV2luZG93KCktPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSwgY2hhbm5lbHMucmVsZWFzZSgpKTsKKwogICAgIFJlZlB0cjxEZWxpdmVyZWRJbnRl
bnQ+IGRlbGl2ZXJlZEludGVudCA9IERlbGl2ZXJlZEludGVudDo6Y3JlYXRlKG1fY29yZUZyYW1l
LCBkdW1teUNsaWVudC5yZWxlYXNlKCksIGludGVudERhdGEuYWN0aW9uLCBpbnRlbnREYXRhLnR5
cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjphZG9wdChkYXRhQ29weSks
IGR1bW15UG9ydHMucmVsZWFzZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6YWRvcHQoZGF0YUNvcHkpLCBtZXNzYWdlUG9ydHMucmVsZWFzZSgpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludGVudERhdGEuZXh0cmFzKTsKICAgICBXZWJDb3JlOjpET01XaW5kb3dJbnRlbnRzOjpmcm9t
KG1fY29yZUZyYW1lLT5kb21XaW5kb3coKSktPmRlbGl2ZXIoZGVsaXZlcmVkSW50ZW50LnJlbGVh
c2UoKSk7CiB9CisKK3ZvaWQgV2ViRnJhbWU6OmRlbGl2ZXJJbnRlbnQoSW50ZW50KiBpbnRlbnQp
Cit7CisgICAgT3duUHRyPERlbGl2ZXJlZEludGVudENsaWVudD4gZHVtbXlDbGllbnQ7CisKKyAg
ICBPd25QdHI8V2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzOworICAg
IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5KiBvcmlnQ2hhbm5lbHMgPSBpbnRlbnQt
Pm1lc3NhZ2VQb3J0cygpOworICAgIGlmIChvcmlnQ2hhbm5lbHMgJiYgb3JpZ0NoYW5uZWxzLT5z
aXplKCkpIHsKKyAgICAgICAgY2hhbm5lbHMgPSBhZG9wdFB0cihuZXcgV2ViQ29yZTo6TWVzc2Fn
ZVBvcnRDaGFubmVsQXJyYXkob3JpZ0NoYW5uZWxzLT5zaXplKCkpKTsKKyAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBvcmlnQ2hhbm5lbHMtPnNpemUoKTsgKytpKQorICAgICAgICAgICAg
KCpjaGFubmVscylbaV0gPSBvcmlnQ2hhbm5lbHMtPmF0KGkpLnJlbGVhc2UoKTsKKyAgICB9Cisg
ICAgT3duUHRyPFdlYkNvcmU6Ok1lc3NhZ2VQb3J0QXJyYXk+IG1lc3NhZ2VQb3J0cyA9IFdlYkNv
cmU6Ok1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKCptX2NvcmVGcmFtZS0+ZG9tV2luZG93KCkt
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgY2hhbm5lbHMucmVsZWFzZSgpKTsKKworICAgIFJl
ZlB0cjxEZWxpdmVyZWRJbnRlbnQ+IGRlbGl2ZXJlZEludGVudCA9IERlbGl2ZXJlZEludGVudDo6
Y3JlYXRlKG1fY29yZUZyYW1lLCBkdW1teUNsaWVudC5yZWxlYXNlKCksIGludGVudC0+YWN0aW9u
KCksIGludGVudC0+dHlwZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVudC0+ZGF0YSgpLCBtZXNzYWdl
UG9ydHMucmVsZWFzZSgpLCBpbnRlbnQtPmV4dHJhcygpKTsKKyAgICBXZWJDb3JlOjpET01XaW5k
b3dJbnRlbnRzOjpmcm9tKG1fY29yZUZyYW1lLT5kb21XaW5kb3coKSktPmRlbGl2ZXIoZGVsaXZl
cmVkSW50ZW50LnJlbGVhc2UoKSk7Cit9CiAjZW5kaWYKIAogU3RyaW5nIFdlYkZyYW1lOjpzb3Vy
Y2UoKSBjb25zdCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJGcmFtZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1l
LmgKaW5kZXggYmQ2YzAzOC4uZWVhMDliNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkZyYW1lLmgKQEAgLTQyLDYgKzQyLDkgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICBjbGFzcyBGcmFtZTsKICAgICBjbGFzcyBIVE1MRnJhbWVPd25lckVsZW1lbnQ7Cisj
aWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorICAgIGNsYXNzIEludGVudDsKKyNlbmRpZgogICAgIGNs
YXNzIEtVUkw7CiB9CiAKQEAgLTgxLDYgKzg0LDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKFdF
Ql9JTlRFTlRTKQogICAgIHZvaWQgZGVsaXZlckludGVudChjb25zdCBJbnRlbnREYXRhJik7Cisg
ICAgdm9pZCBkZWxpdmVySW50ZW50KFdlYkNvcmU6OkludGVudCopOwogI2VuZGlmCiAKICAgICBT
dHJpbmcgc291cmNlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKaW5kZXggNTlkM2JjNS4uYmNjODU0NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTM2LDYgKzEzNiw3IEBACiAK
ICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCiAjaW5jbHVkZSAiSW50ZW50RGF0YS5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvSW50ZW50Lmg+CiAjZW5kaWYKIAogI2lmIEVOQUJMRShWSUJSQVRJT04pCkBA
IC0xOTYzLDYgKzE5NjQsMTUgQEAgdm9pZCBXZWJQYWdlOjpkZWxpdmVySW50ZW50VG9GcmFtZSh1
aW50NjRfdCBmcmFtZUlELCBjb25zdCBJbnRlbnREYXRhJiBpbnRlbnREYXQKIAogICAgIGZyYW1l
LT5kZWxpdmVySW50ZW50KGludGVudERhdGEpOwogfQorCit2b2lkIFdlYlBhZ2U6OmRlbGl2ZXJD
b3JlSW50ZW50VG9GcmFtZSh1aW50NjRfdCBmcmFtZUlELCBJbnRlbnQqIGNvcmVJbnRlbnQpCit7
CisgICAgV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2hhcmVkKCkud2ViRnJhbWUoZnJh
bWVJRCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZnJhbWUtPmRl
bGl2ZXJJbnRlbnQoY29yZUludGVudCk7Cit9CiAjZW5kaWYKIAogdm9pZCBXZWJQYWdlOjpwcmVm
ZXJlbmNlc0RpZENoYW5nZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGUzMjU3YTMuLjE1
MzM0ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApA
QCAtMTA2LDYgKzEwNiw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBGcmFtZTsK
ICAgICBjbGFzcyBGcmFtZVZpZXc7CiAgICAgY2xhc3MgSFRNTFBsdWdJbkVsZW1lbnQ7CisjaWYg
RU5BQkxFKFdFQl9JTlRFTlRTKQorICAgIGNsYXNzIEludGVudDsKKyNlbmRpZgogICAgIGNsYXNz
IEtleWJvYXJkRXZlbnQ7CiAgICAgY2xhc3MgUGFnZTsKICAgICBjbGFzcyBQcmludENvbnRleHQ7
CkBAIC00NzgsNyArNDgxLDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX0lO
VEVOVFMpCi0gICAgdm9pZCBkZWxpdmVySW50ZW50VG9GcmFtZSh1aW50NjRfdCBmcmFtZUlELCBj
b25zdCBJbnRlbnREYXRhJik7CisgICAgdm9pZCBkZWxpdmVyQ29yZUludGVudFRvRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6SW50ZW50Kik7CiAjZW5kaWYKIAogICAgIHZvaWQgcmVw
bGFjZVNlbGVjdGlvbldpdGhUZXh0KFdlYkNvcmU6OkZyYW1lKiwgY29uc3QgU3RyaW5nJik7CkBA
IC02MzMsNiArNjM2LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb250ZXh0TWVudUhpZGRlbigp
IHsgbV9pc1Nob3dpbmdDb250ZXh0TWVudSA9IGZhbHNlOyB9CiAjZW5kaWYKIAorI2lmIEVOQUJM
RShXRUJfSU5URU5UUykKKyAgICB2b2lkIGRlbGl2ZXJJbnRlbnRUb0ZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQsIGNvbnN0IEludGVudERhdGEmKTsKKyNlbmRpZgorCiAgICAgc3RhdGljIHZvaWQgc2Ny
b2xsKFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb24sIFdlYkNvcmU6OlNj
cm9sbEdyYW51bGFyaXR5KTsKICAgICBzdGF0aWMgdm9pZCBsb2dpY2FsU2Nyb2xsKFdlYkNvcmU6
OlBhZ2UqLCBXZWJDb3JlOjpTY3JvbGxMb2dpY2FsRGlyZWN0aW9uLCBXZWJDb3JlOjpTY3JvbGxH
cmFudWxhcml0eSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmlu
ZGV4IDZlYjhhYjdlLi42M2ZmZTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAKQEAgLTc5MSw2ICs3OTEsMjQgQEAgV2ViUGFnZUdyb3VwUHJveHkqIFdlYlByb2Nl
c3M6OndlYlBhZ2VHcm91cChjb25zdCBXZWJQYWdlR3JvdXBEYXRhJiBwYWdlR3JvdXBEYXQKICAg
ICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQuZ2V0KCk7CiB9CiAKK3VpbnQ2NF90IFdl
YlByb2Nlc3M6OmFkZE1lc3NhZ2VQb3J0Q2hhbm5lbChQYXNzUmVmUHRyPFBsYXRmb3JtTWVzc2Fn
ZVBvcnRDaGFubmVsPiBtZXNzYWdlUG9ydENoYW5uZWwpCit7CisgICAgc3RhdGljIHVpbnQ2NF90
IGNoYW5uZWxJRCA9IDA7CisgICAgbV9tZXNzYWdlUG9ydENoYW5uZWxzLmFkZCgrK2NoYW5uZWxJ
RCwgbWVzc2FnZVBvcnRDaGFubmVsKTsKKworICAgIHJldHVybiBjaGFubmVsSUQ7Cit9CisKK1Bs
YXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsKiBXZWJQcm9jZXNzOjptZXNzYWdlUG9ydENoYW5uZWwo
dWludDY0X3QgY2hhbm5lbElEKQoreworICAgIHJldHVybiBtX21lc3NhZ2VQb3J0Q2hhbm5lbHMu
Z2V0KGNoYW5uZWxJRCkuZ2V0KCk7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzczo6cmVtb3ZlTWVzc2Fn
ZVBvcnRDaGFubmVsKHVpbnQ2NF90IGNoYW5uZWxJRCkKK3sKKyAgICBtX21lc3NhZ2VQb3J0Q2hh
bm5lbHMucmVtb3ZlKGNoYW5uZWxJRCk7Cit9CisKIHN0YXRpYyBib29sIGNhblBsdWdpbkhhbmRs
ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIFN0cmlu
ZyBwbHVnaW5QYXRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCAw
ZDAwNWE0Li4wODNmNTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApA
QCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIldlYkljb25EYXRhYmFzZVByb3h5LmgiCiAjaW5j
bHVkZSAiV2ViUGFnZUdyb3VwUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0xpbmtIYXNoLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oPgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgpAQCAtMTEzLDYgKzExNCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1v
dmVXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCk7CiAgICAgV2ViUGFnZSogZm9jdXNlZFdlYlBhZ2Uo
KSBjb25zdDsKICAgICAKKyAgICB1aW50NjRfdCBhZGRNZXNzYWdlUG9ydENoYW5uZWwoUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbD4pOworICAgIFdlYkNvcmU6
OlBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsKiBtZXNzYWdlUG9ydENoYW5uZWwodWludDY0X3Qp
OworICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVBvcnRDaGFubmVsKHVpbnQ2NF90KTsKKwogICAgIElu
amVjdGVkQnVuZGxlKiBpbmplY3RlZEJ1bmRsZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5qZWN0ZWRC
dW5kbGUuZ2V0KCk7IH0KIAogICAgIGJvb2wgaXNTZXBhcmF0ZVByb2Nlc3MoKSBjb25zdDsKQEAg
LTMwMCw2ICszMDUsOCBAQCBwcml2YXRlOgogCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgV2ViRnJh
bWUqPiBtX2ZyYW1lTWFwOwogCisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYkNvcmU6
OlBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsPiA+IG1fbWVzc2FnZVBvcnRDaGFubmVsczsKKwog
ICAgIEhhc2hTZXQ8U3RyaW5nLCBDYXNlRm9sZGluZ0hhc2g+IG1fbWltZVR5cGVzV2l0aEN1c3Rv
bVJlcHJlc2VudGF0aW9uczsKIAogICAgIFRleHRDaGVja2VyU3RhdGUgbV90ZXh0Q2hlY2tlclN0
YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluCmluZGV4IDBmODNkNWIuLmM4MjExYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTI3LDYgKzI3LDkgQEAgbWVzc2FnZXMg
LT4gV2ViUHJvY2VzcyB7CiAgICAgIyBDcmVhdGUgYSBuZXcgcGFnZS4KICAgICBDcmVhdGVXZWJQ
YWdlKHVpbnQ2NF90IG5ld1BhZ2VJRCwgV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
IHBhZ2VDcmVhdGlvblBhcmFtZXRlcnMpCiAKKyAgICAjIE1lc3NhZ2VQb3J0Q2hhbm5lbCBtZXNz
YWdlcworICAgIFJlbW92ZU1lc3NhZ2VQb3J0Q2hhbm5lbCh1aW50NjRfdCBjaGFubmVsSUQpOwor
CiAgICAgIyBWaXNpdGVkIGxpbmsgdHJhY2tpbmcuCiAgICAgU2V0VmlzaXRlZExpbmtUYWJsZShX
ZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZSkKICAgICBWaXNpdGVkTGlua1N0YXRl
Q2hhbmdlZChWZWN0b3I8V2ViQ29yZTo6TGlua0hhc2g+IGxpbmtIYXNoZXMpCmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNTQ0ZWZkNi4uNGNkMmU5
MSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIwIEBACisyMDEyLTA3LTMxICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5k
dW1lekBpbnRlbC5jb20+CisKKyAgICAgICAgW1dLMl0gQWRkIHN1cHBvcnQgZm9yIFdlYiBJbnRl
bnRzIE1lc3NhZ2VQb3J0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODkwNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVc2UgV0tCdW5kbGVJbnRlbnQgaW5zdGVhZCBvZiBXZWJJbnRlbnREYXRhIGluCisg
ICAgICAgIFdlYktpdFRlc3RSdW5uZXIuIFdUUiBub3cgcHJpbnRzIHRoZSBudW1iZXIgb2YKKyAg
ICAgICAgTWVzc2FnZVBvcnRzIGluIHJlY2VpdmVkIFdlYiBpbnRlbnRzIGFzCisgICAgICAgIGV4
cGVjdGVkIGJ5IHdlYmludGVudHMvKiBsYXlvdXQgdGVzdHMuCisKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHA6CisgICAgICAg
IChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6ZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKToKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdUUjo6TGF5b3V0VGVzdENvbnRyb2xsZXI6OmRlbGl2ZXJXZWJJ
bnRlbnQpOgorCiAyMDEyLTA3LTMwICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFJldmVydCByMTI0MTUzIGFuZCBsYW5kIHRoZSAicmlnaHQiIGJ1aWxkIGZpeCBw
ZXIgYXAncyBjb21tZW50IG9uIHRoZSBidWcgOTI2NzYuCmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAK
aW5kZXggMTYzNzFkMS4uMWViYzJmMCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcApAQCAtNTAs
OCArNTAsOCBAQAogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisjaW5jbHVkZSA8
V2ViS2l0Mi9XS0J1bmRsZUludGVudC5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVJbnRl
bnRSZXF1ZXN0Lmg+Ci0jaW5jbHVkZSA8V2ViS2l0Mi9XS0ludGVudERhdGEuaD4KICNlbmRpZgog
I2lmIEVOQUJMRShXRUJfSU5URU5UU19UQUcpCiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0ludGVudFNl
cnZpY2VJbmZvLmg+CkBAIC00MzAsMTkgKzQzMCwyNCBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFn
ZTo6ZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRs
ZQogewogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKICAgICBzdGF0aWNfY2FzdDxJbmplY3RlZEJ1
bmRsZVBhZ2UqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPm1fY3VycmVudEludGVu
dFJlcXVlc3QgPSBpbnRlbnRSZXF1ZXN0OwotICAgIFdLUmV0YWluUHRyPFdLSW50ZW50RGF0YVJl
Zj4gaW50ZW50KEFkb3B0V0ssIFdLQnVuZGxlSW50ZW50UmVxdWVzdENvcHlJbnRlbnREYXRhKGlu
dGVudFJlcXVlc3QpKTsKKyAgICBXS1JldGFpblB0cjxXS0J1bmRsZUludGVudFJlZj4gaW50ZW50
KEFkb3B0V0ssIFdLQnVuZGxlSW50ZW50UmVxdWVzdENvcHlJbnRlbnQoaW50ZW50UmVxdWVzdCkp
OwogCiAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5k
KCJSZWNlaXZlZCBXZWIgSW50ZW50OiBhY3Rpb249Iik7Ci0gICAgV0tSZXRhaW5QdHI8V0tTdHJp
bmdSZWY+IHdrQWN0aW9uKEFkb3B0V0ssIFdLSW50ZW50RGF0YUNvcHlBY3Rpb24oaW50ZW50Lmdl
dCgpKSk7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHdrQWN0aW9uKEFkb3B0V0ssIFdL
QnVuZGxlSW50ZW50Q29weUFjdGlvbihpbnRlbnQuZ2V0KCkpKTsKICAgICBJbmplY3RlZEJ1bmRs
ZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQodG9XVEZTdHJpbmcod2tBY3Rpb24u
Z2V0KCkpKTsKICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5h
cHBlbmQoIiB0eXBlPSIpOwotICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB3a1R5cGUoQWRv
cHRXSywgV0tJbnRlbnREYXRhQ29weVR5cGUoaW50ZW50LmdldCgpKSk7CisgICAgV0tSZXRhaW5Q
dHI8V0tTdHJpbmdSZWY+IHdrVHlwZShBZG9wdFdLLCBXS0J1bmRsZUludGVudENvcHlUeXBlKGlu
dGVudC5nZXQoKSkpOwogICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVy
KCktPmFwcGVuZCh0b1dURlN0cmluZyh3a1R5cGUuZ2V0KCkpKTsKICAgICBJbmplY3RlZEJ1bmRs
ZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoIlxuIik7CiAKLSAgICAvLyBGSVhN
RTogUHJpbnQgbnVtYmVyIG9mIHBvcnRzIHdoZW4gZXhwb3NlZCBpbiBXZWJLaXQyCisgICAgY29u
c3Qgc2l6ZV90IG51bU1lc3NhZ2VQb3J0cyA9IFdLQnVuZGxlSW50ZW50TWVzc2FnZVBvcnRDb3Vu
dChpbnRlbnQuZ2V0KCkpOworICAgIGlmIChudW1NZXNzYWdlUG9ydHMpIHsKKyAgICAgICAgSW5q
ZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKCJIYXZlICIpOwor
ICAgICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQo
V1RGOjpTdHJpbmc6Om51bWJlcihudW1NZXNzYWdlUG9ydHMpKTsKKyAgICAgICAgSW5qZWN0ZWRC
dW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKCIgcG9ydHNcbiIpOworICAg
IH0KIAotICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiB3a1NlcnZpY2VVcmwoQWRvcHRXSywgV0tJ
bnRlbnREYXRhQ29weVNlcnZpY2UoaW50ZW50LmdldCgpKSk7CisgICAgV0tSZXRhaW5QdHI8V0tV
UkxSZWY+IHdrU2VydmljZVVybChBZG9wdFdLLCBXS0J1bmRsZUludGVudENvcHlTZXJ2aWNlKGlu
dGVudC5nZXQoKSkpOwogICAgIGlmICh3a1NlcnZpY2VVcmwpIHsKICAgICAgICAgV0tSZXRhaW5Q
dHI8V0tTdHJpbmdSZWY+IHdrU2VydmljZShBZG9wdFdLLCBXS1VSTENvcHlTdHJpbmcod2tTZXJ2
aWNlVXJsLmdldCgpKSk7CiAgICAgICAgIGlmICh3a1NlcnZpY2UgJiYgIVdLU3RyaW5nSXNFbXB0
eSh3a1NlcnZpY2UuZ2V0KCkpKSB7CkBAIC00NTIsNyArNDU3LDcgQEAgdm9pZCBJbmplY3RlZEJ1
bmRsZVBhZ2U6OmRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwg
V0tCdW5kbGUKICAgICAgICAgfQogICAgIH0KIAotICAgIFdLUmV0YWluUHRyPFdLRGljdGlvbmFy
eVJlZj4gd2tFeHRyYXMoQWRvcHRXSywgV0tJbnRlbnREYXRhQ29weUV4dHJhcyhpbnRlbnQuZ2V0
KCkpKTsKKyAgICBXS1JldGFpblB0cjxXS0RpY3Rpb25hcnlSZWY+IHdrRXh0cmFzKEFkb3B0V0ss
IFdLQnVuZGxlSW50ZW50Q29weUV4dHJhcyhpbnRlbnQuZ2V0KCkpKTsKICAgICBXS1JldGFpblB0
cjxXS0FycmF5UmVmPiB3a0V4dHJhS2V5cyhBZG9wdFdLLCBXS0RpY3Rpb25hcnlDb3B5S2V5cyh3
a0V4dHJhcy5nZXQoKSkpOwogICAgIGNvbnN0IHNpemVfdCBudW1FeHRyYUtleXMgPSBXS0FycmF5
R2V0U2l6ZSh3a0V4dHJhS2V5cy5nZXQoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBu
dW1FeHRyYUtleXM7ICsraSkgewpAQCAtNDY1LDcgKzQ3MCw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5k
bGVQYWdlOjpkaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdL
QnVuZGxlCiAgICAgICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCkt
PmFwcGVuZCgiXG4iKTsKICAgICB9CiAKLSAgICBXS1JldGFpblB0cjxXS0FycmF5UmVmPiB3a1N1
Z2dlc3Rpb25zKEFkb3B0V0ssIFdLSW50ZW50RGF0YUNvcHlTdWdnZXN0aW9ucyhpbnRlbnQuZ2V0
KCkpKTsKKyAgICBXS1JldGFpblB0cjxXS0FycmF5UmVmPiB3a1N1Z2dlc3Rpb25zKEFkb3B0V0ss
IFdLQnVuZGxlSW50ZW50Q29weVN1Z2dlc3Rpb25zKGludGVudC5nZXQoKSkpOwogICAgIGNvbnN0
IHNpemVfdCBudW1TdWdnZXN0aW9ucyA9IFdLQXJyYXlHZXRTaXplKHdrU3VnZ2VzdGlvbnMuZ2V0
KCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtU3VnZ2VzdGlvbnM7ICsraSkgewog
ICAgICAgICBXS1N0cmluZ1JlZiB3a1N1Z2dlc3Rpb24gPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1Jl
Zj4oV0tBcnJheUdldEl0ZW1BdEluZGV4KHdrU3VnZ2VzdGlvbnMuZ2V0KCksIGkpKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENv
bnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXggMzM3NmVkMC4uNzYwZDQ5MCAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5jcHAKQEAgLTQ5LDggKzQ5LDggQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmg+CiAKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisjaW5jbHVkZSA8V2Vi
S2l0Mi9XS0J1bmRsZUludGVudC5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVJbnRlbnRS
ZXF1ZXN0Lmg+Ci0jaW5jbHVkZSA8V2ViS2l0Mi9XS0ludGVudERhdGEuaD4KICNlbmRpZgogCiBu
YW1lc3BhY2UgV1RSIHsKQEAgLTY0OSw4ICs2NDksOCBAQCB2b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjpkZWxpdmVyV2ViSW50ZW50KEpTU3RyaW5nUmVmIGFjdGlvbiwgSlNTdHJpbmdSZWYgdHlw
ZQogICAgIFdLRGljdGlvbmFyeUFkZEl0ZW0oaW50ZW50SW5pdERpY3QuZ2V0KCksIFdLU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKCJ0eXBlIiksIHR5cGVXSy5nZXQoKSk7CiAgICAgV0tEaWN0
aW9uYXJ5QWRkSXRlbShpbnRlbnRJbml0RGljdC5nZXQoKSwgV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoImRhdGEiKSwgZGF0YVdLLmdldCgpKTsKIAotICAgIFdLUmV0YWluUHRyPFdLSW50
ZW50RGF0YVJlZj4gd2tJbnRlbnREYXRhKEFkb3B0V0ssIFdLSW50ZW50RGF0YUNyZWF0ZShpbnRl
bnRJbml0RGljdC5nZXQoKSkpOwotICAgIFdLQnVuZGxlUGFnZURlbGl2ZXJJbnRlbnRUb0ZyYW1l
KEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBhZ2UoKSwgbWFpbkZyYW1lLCB3a0lu
dGVudERhdGEuZ2V0KCkpOworICAgIFdLUmV0YWluUHRyPFdLQnVuZGxlSW50ZW50UmVmPiB3a0lu
dGVudChBZG9wdFdLLCBXS0J1bmRsZUludGVudENyZWF0ZShpbnRlbnRJbml0RGljdC5nZXQoKSkp
OworICAgIFdLQnVuZGxlUGFnZURlbGl2ZXJJbnRlbnRUb0ZyYW1lKEluamVjdGVkQnVuZGxlOjpz
aGFyZWQoKS5wYWdlKCktPnBhZ2UoKSwgbWFpbkZyYW1lLCB3a0ludGVudC5nZXQoKSk7CiAjZW5k
aWYKIH0KIAo=
</data>
<flag name="commit-queue"
          id="165065"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155611</attachid>
            <date>2012-07-31 13:00:16 -0700</date>
            <delta_ts>2012-07-31 13:11:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>89072_wk2_messagePorts.patch</filename>
            <type>text/plain</type>
            <size>68824</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKaW5kZXggYTk1ZWJhMS4uNjNjZjk0ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0
cy50eHQKQEAgLTU0LDYgKzU0LDcgQEAgU0VUKFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwog
ICAgICIke1dFQkNPUkVfRElSfS9icmlkZ2UvanNjIgogICAgICIke1dFQkNPUkVfRElSfS9jc3Mi
CiAgICAgIiR7V0VCQ09SRV9ESVJ9L2RvbSIKKyAgICAiJHtXRUJDT1JFX0RJUn0vZG9tL2RlZmF1
bHQiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2VkaXRpbmciCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2hp
c3RvcnkiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2h0bWwiCkBAIC0xNTksNyArMTYwLDYgQEAgU0VU
KFdlYktpdDJfU09VUkNFUwogICAgIFNoYXJlZC9XZWJHcmFwaGljc0NvbnRleHQuY3BwCiAgICAg
U2hhcmVkL1dlYkhpdFRlc3RSZXN1bHQuY3BwCiAgICAgU2hhcmVkL1dlYkltYWdlLmNwcAotICAg
IFNoYXJlZC9XZWJJbnRlbnREYXRhLmNwcAogICAgIFNoYXJlZC9XZWJJbnRlbnRTZXJ2aWNlSW5m
by5jcHAKICAgICBTaGFyZWQvV2ViS2V5Ym9hcmRFdmVudC5jcHAKICAgICBTaGFyZWQvV2ViTGF5
ZXJUcmVlSW5mby5jcHAKQEAgLTI1Myw2ICsyNTMsNyBAQCBTRVQoV2ViS2l0Ml9TT1VSQ0VTCiAg
ICAgVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5jcHAKICAgICBVSVByb2Nlc3MvV2ViSWNvbkRh
dGFiYXNlQ2xpZW50LmNwcAogICAgIFVJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKKyAg
ICBVSVByb2Nlc3MvV2ViSW50ZW50RGF0YS5jcHAKICAgICBVSVByb2Nlc3MvV2ViS2V5VmFsdWVT
dG9yYWdlTWFuYWdlclByb3h5LmNwcAogICAgIFVJUHJvY2Vzcy9XZWJMYXllclRyZWVSZW5kZXJl
ci5jcHAKICAgICBVSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmNwcApAQCAtMzcxLDYgKzM3Miw3
IEBAIFNFVChXZWJLaXQyX1NPVVJDRVMKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlQ2xpZW50LmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3BwCisgICAgV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudC5jcHAKICAgICBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5jcHAKICAgICBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAKICAg
ICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZURpYWdub3N0aWNM
b2dnaW5nQ2xpZW50LmNwcApAQCAtMzkxLDYgKzM5Myw3IEBAIFNFVChXZWJLaXQyX1NPVVJDRVMK
ICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwCiAg
ICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUhpdFRlc3RSZXN1bHQu
Y3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUluc3BlY3Rv
ci5jcHAKKyAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50
LmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnRS
ZXF1ZXN0LmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVO
YXZpZ2F0aW9uQWN0aW9uLmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVOb2RlSGFuZGxlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGZlMDJiN2IuLmNkOTM2MDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMjYgQEAKKzIwMTItMDctMzEgIENocmlzdG9waGUgRHVtZXog
IDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKworICAgICAgICBbV0syXSBBZGQgc3VwcG9y
dCBmb3IgV2ViIEludGVudHMgTWVzc2FnZVBvcnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTA3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBXZWJJbnRlbnRzIE1lc3NhZ2VQ
b3J0cyBpbiBXZWJLaXQyLgorICAgICAgICBNZXNzYWdlUG9ydHMgY2FuIGJlIHBhc3NlZCB3aXRo
IGEgV2ViIEludGVudCBpbgorICAgICAgICBvcmRlciB0byBvcGVuIGEgZGlyZWN0IGNvbW11bmlj
YXRpb24gY2hhbm5lbAorICAgICAgICBiZXR3ZWVuIHRoZSBXZWIgYXBwbGljYXRpb24gYW5kIHRo
ZSBpbnRlbnQgc2VydmljZS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBuZXcg
SW5qZWN0ZWRCdW5kbGVJbnRlbnQKKyAgICAgICAgY2xhc3Mgd2hpY2ggd3JhcHMgYSBXZWJDb3Jl
OjpJbnRlbnQuIFRoaXMgd2F5CisgICAgICAgIGluZm9ybWF0aW9uIHJlZ2FyZGluZyB0aGUgTWVz
c2FnZVBvcnRzIGluIGEgV2ViCisgICAgICAgIEludGVudCBpcyBrZXB0IHdoZW4gdXNpbmcgYW4g
aW5qZWN0ZWQgYnVuZGxlLgorCisgICAgICAgIEZvciB0aGUgVUlQcm9jZXNzLCBXZWJJbnRlbnRE
YXRhIG5vdyBjYXJyaWVzCisgICAgICAgIGlkZW50aWZpZXJzIGZvciB0aGUgTWVzc2FnZVBvcnRz
IHdoaWNoIGNhbiBnbyBvdmVyCisgICAgICAgIElQQy4gVGhvc2UgaWRlbnRpZmllcnMgbWFwIHRv
IGFjdHVhbCBNZXNzYWdlUG9ydHMKKyAgICAgICAgc3RvcmVkIGluIHRoZSBXZWIgcHJvY2Vzcy4g
VGhpcyB3YXksIHdoZW4gdGhlIFVJCisgICAgICAgIGRlbGl2ZXJzIGFuIGludGVudCB0byBhIGZy
YW1lLCB3ZSBjYW4gZ2V0IGJhY2sgdGhlCisgICAgICAgIGNvcnJlc3BvbmRpbmcgTWVzc2FnZVBv
cnRzIGZyb20gdGhlIFdlYiBwcm9jZXNzCisgICAgICAgIGJlZm9yZSBkZWxpdmVyaW5nIHRvIHRo
ZSBET01XaW5kb3cuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVt
YWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0Jhc2UuaDoKKyAgICAg
ICAgKiBTaGFyZWQvQVBJT2JqZWN0Lmg6CisgICAgICAgICogU2hhcmVkL0ludGVudERhdGEuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpJbnRlbnREYXRhOjpJbnRlbnREYXRhKToKKyAgICAgICAgKFdl
YktpdDo6SW50ZW50RGF0YTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6SW50ZW50RGF0YTo6
ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvSW50ZW50RGF0YS5oOgorICAgICAgICAoSW50ZW50
RGF0YSk6CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
V0tJbnRlbnREYXRhLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tJbnRlbnREYXRh
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkludGVudERhdGEuY3BwOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSW50ZW50RGF0YS5jcHAuCisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJJbnRlbnREYXRhOjpXZWJJbnRlbnREYXRhKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSW50ZW50RGF0YTo6fldlYkludGVudERhdGEpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnRlbnREYXRhOjpkYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW50ZW50RGF0
YTo6c3VnZ2VzdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnRlbnREYXRhOjpleHRyYSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkludGVudERhdGE6OmV4dHJhcyk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYkludGVudERhdGEuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYkludGVudERhdGEuaC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJJbnRlbnRE
YXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW50ZW50RGF0YTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViSW50ZW50RGF0YTo6YWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW50
ZW50RGF0YTo6cGF5bG9hZFR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnRlbnREYXRhOjpz
ZXJ2aWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW50ZW50RGF0YTo6c3RvcmUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJbnRlbnREYXRhOjp0eXBlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRSZWNlaXZl
SW50ZW50Rm9yRnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnJlbW92ZU1lc3NhZ2VQb3J0Q2hh
bm5lbCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuaDoKKyAgICAgICAgKFdlYlByb2Nlc3NQcm94eSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUFQSUNhc3QuaDoKKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUlu
dGVudC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0lu
dGVudERhdGEuY3BwLgorICAgICAgICAoV0tCdW5kbGVJbnRlbnRHZXRUeXBlSUQpOgorICAgICAg
ICAoV0tCdW5kbGVJbnRlbnRDcmVhdGUpOgorICAgICAgICAoV0tCdW5kbGVJbnRlbnRDb3B5QWN0
aW9uKToKKyAgICAgICAgKFdLQnVuZGxlSW50ZW50Q29weVR5cGUpOgorICAgICAgICAoV0tCdW5k
bGVJbnRlbnRDb3B5U2VydmljZSk6CisgICAgICAgIChXS0J1bmRsZUludGVudENvcHlTdWdnZXN0
aW9ucyk6CisgICAgICAgIChXS0J1bmRsZUludGVudENvcHlFeHRyYSk6CisgICAgICAgIChXS0J1
bmRsZUludGVudENvcHlFeHRyYXMpOgorICAgICAgICAoV0tCdW5kbGVJbnRlbnRNZXNzYWdlUG9y
dENvdW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlSW50ZW50Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S0ludGVudERhdGEuaC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlSW50ZW50UmVxdWVzdC5jcHA6CisgICAgICAgIChXS0J1bmRsZUludGVudFJlcXVl
c3RDb3B5SW50ZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlSW50ZW50UmVxdWVzdC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdLQnVuZGxlUGFnZURlbGl2
ZXJJbnRlbnRUb0ZyYW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVJbnRlbnQuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYkludGVudERhdGEuY3BwLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktp
dDo6SW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVj
dGVkQnVuZGxlSW50ZW50OjpJbmplY3RlZEJ1bmRsZUludGVudCk6CisgICAgICAgIChXZWJLaXQ6
OkluamVjdGVkQnVuZGxlSW50ZW50OjphY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJbmplY3Rl
ZEJ1bmRsZUludGVudDo6cGF5bG9hZFR5cGUpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1
bmRsZUludGVudDo6c2VydmljZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlSW50
ZW50OjpkYXRhKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OmV4dHJh
KToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OmV4dHJhcyk6CisgICAg
ICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlSW50ZW50OjpzdWdnZXN0aW9ucyk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudC5oOiBSZW5h
bWVkIGZyb20gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkludGVudERhdGEuaC4KKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgIChJbmplY3RlZEJ1bmRsZUludGVudCk6CisgICAgICAgIChXZWJL
aXQ6OkluamVjdGVkQnVuZGxlSW50ZW50Ojpjb3JlSW50ZW50KToKKyAgICAgICAgKFdlYktpdDo6
SW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OnR5cGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6SW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0OjppbnRlbnQpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0Lmg6CisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJGcmFtZTo6ZGVsaXZlckludGVudCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJGcmFtZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGVsaXZlckNv
cmVJbnRlbnRUb0ZyYW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJQYWdlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjphZGRN
ZXNzYWdlUG9ydENoYW5uZWwpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzczo6bWVzc2FnZVBvcnRDaGFubmVsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzczo6cmVtb3ZlTWVzc2FnZVBvcnRDaGFubmVsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaDoKKyAgICAgICAgKFdlYlByb2Nlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKwogMjAxMi0wNy0zMCAgSHVhbmcgRG9uZ3N1bmcgIDxs
dXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBbVGV4bWFwXSBSZW1vdmUgdGhlIGJh
Y2tpbmcgc3RvcmUgYWZ0ZXIgJ3N0eWxlLnZpc2liaWxpdHknIGZvciBhbiBlbGVtZW50IHNldHMg
J2hpZGRlbicuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFt
IGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBlN2E2NGYwLi5lZDhj
MDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBi
L1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTQ2OSw4ICs0NjksNiBAQCB3
ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJIaXRUZXN0UmVz
dWx0LmggXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJJbWFnZS5jcHAgXAogCVNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJJbWFnZS5oIFwKLQlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSW50
ZW50RGF0YS5jcHAgXAotCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJJbnRlbnREYXRhLmggXAog
CVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJJbnRlbnRTZXJ2aWNlSW5mby5jcHAgXAogCVNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJJbnRlbnRTZXJ2aWNlSW5mby5oIFwKIAlTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViS2V5Ym9hcmRFdmVudC5jcHAgXApAQCAtODcxLDYgKzg2OSw4IEBAIHdlYmtp
dDJfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkljb25EYXRhYmFz
ZUNsaWVudC5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHku
Y3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaCBcCisJ
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkludGVudERhdGEuY3BwIFwKKwlTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViSW50ZW50RGF0YS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlclByb3h5LmNwcCBcCiAJU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYktleVZhbHVlU3RvcmFnZU1hbmFnZXJQcm94eS5oIFwKIAlTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eS5jcHAgXApAQCAtOTY0LDYg
Kzk2NCw4IEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUluaXRpYWxpemUuaCBcCiAJU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUluc3BlY3Rvci5j
cHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVJbnNwZWN0b3IuaCBcCisJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudC5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnQuaCBcCiAJU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudFJlcXVlc3Qu
Y3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlSW50ZW50UmVxdWVzdC5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlTm9kZUhhbmRsZS5jcHAgXApAQCAtOTk4LDYgKzEwMDAs
OCBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uaCBcCiAJU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RS
ZXN1bHQuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50LmNwcCBcCisJU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudC5oIFwKIAlT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50
ZW50UmVxdWVzdC5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0LmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKaW5kZXggNjg1NGVjYy4uYTZhOGJkNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaApAQCAtMTM1LDYgKzEzNSw3IEBAIHR5
cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uKiBXS0J1
bmRsZURPTVdpbmRvd0V4dGVuc2lvCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRs
ZUZyYW1lKiBXS0J1bmRsZUZyYW1lUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tC
dW5kbGVIaXRUZXN0UmVzdWx0KiBXS0J1bmRsZUhpdFRlc3RSZXN1bHRSZWY7CiB0eXBlZGVmIGNv
bnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRsZUluc3BlY3RvciogV0tCdW5kbGVJbnNwZWN0b3JSZWY7
Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRsZUludGVudCogV0tCdW5kbGVJbnRl
bnRSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRsZUludGVudFJlcXVlc3Qq
IFdLQnVuZGxlSW50ZW50UmVxdWVzdFJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdL
QnVuZGxlTmF2aWdhdGlvbkFjdGlvbiogV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uUmVmOwogdHlw
ZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVOb2RlSGFuZGxlKiBXS0J1bmRsZU5vZGVI
YW5kbGVSZWY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKaW5kZXggOGU0ZDI5My4uNzA4ZWZm
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaApAQCAtMTE3LDYgKzExNyw3IEBAIHB1Ymxp
YzoKICAgICAgICAgVHlwZUJ1bmRsZUZyYW1lLAogICAgICAgICBUeXBlQnVuZGxlSGl0VGVzdFJl
c3VsdCwKICAgICAgICAgVHlwZUJ1bmRsZUluc3BlY3RvciwKKyAgICAgICAgVHlwZUJ1bmRsZUlu
dGVudCwKICAgICAgICAgVHlwZUJ1bmRsZUludGVudFJlcXVlc3QsCiAgICAgICAgIFR5cGVCdW5k
bGVOYXZpZ2F0aW9uQWN0aW9uLAogICAgICAgICBUeXBlQnVuZGxlTm9kZUhhbmRsZSwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9JbnRlbnREYXRhLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9JbnRlbnREYXRhLmNwcAppbmRleCA0OTk1YjJlLi40MTA3ODc0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW50ZW50RGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL0ludGVudERhdGEuY3BwCkBAIC0zMSw3ICszMSwxMCBAQAogI2luY2x1ZGUg
IkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJXZWJD
b3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9JbnRlbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01lc3NhZ2VQb3J0Q2hhbm5lbC5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuaD4KIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTQ1LDYgKzQ4LDEyIEBAIEludGVudERhdGE6Oklu
dGVudERhdGEoSW50ZW50KiBjb3JlSW50ZW50KQogICAgICwgZXh0cmFzKGNvcmVJbnRlbnQtPmV4
dHJhcygpKQogICAgICwgc3VnZ2VzdGlvbnMoY29yZUludGVudC0+c3VnZ2VzdGlvbnMoKSkKIHsK
KyAgICBNZXNzYWdlUG9ydENoYW5uZWxBcnJheSogY29yZU1lc3NhZ2VQb3J0cyA9IGNvcmVJbnRl
bnQtPm1lc3NhZ2VQb3J0cygpOworICAgIGlmIChjb3JlTWVzc2FnZVBvcnRzKSB7CisgICAgICAg
IHNpemVfdCBudW1NZXNzYWdlUG9ydHMgPSBjb3JlTWVzc2FnZVBvcnRzLT5zaXplKCk7CisgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtTWVzc2FnZVBvcnRzOyArK2kpCisgICAgICAg
ICAgICBtZXNzYWdlUG9ydHMuYXBwZW5kKFdlYlByb2Nlc3M6OnNoYXJlZCgpLmFkZE1lc3NhZ2VQ
b3J0Q2hhbm5lbCgoKmNvcmVNZXNzYWdlUG9ydHMpW2ldLT5jaGFubmVsKCkpKTsKKyAgICB9CiB9
CiAKIHZvaWQgSW50ZW50RGF0YTo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciogZW5j
b2RlcikgY29uc3QKQEAgLTU1LDYgKzY0LDcgQEAgdm9pZCBJbnRlbnREYXRhOjplbmNvZGUoQ29y
ZUlQQzo6QXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXItPmVuY29k
ZShDb3JlSVBDOjpEYXRhUmVmZXJlbmNlKGRhdGEpKTsKICAgICBlbmNvZGVyLT5lbmNvZGUoZXh0
cmFzKTsKICAgICBlbmNvZGVyLT5lbmNvZGUoc3VnZ2VzdGlvbnMpOworICAgIGVuY29kZXItPmVu
Y29kZShtZXNzYWdlUG9ydHMpOwogfQogCiBib29sIEludGVudERhdGE6OmRlY29kZShDb3JlSVBD
OjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIEludGVudERhdGEmIGludGVudERhdGEpCkBAIC03
Myw2ICs4Myw4IEBAIGJvb2wgSW50ZW50RGF0YTo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVj
b2RlciogZGVjb2RlciwgSW50ZW50RGF0YSYgaW50ZW50RGF0CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBpZiAoIWRlY29kZXItPmRlY29kZShpbnRlbnREYXRhLnN1Z2dlc3Rpb25zKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGludGVudERhdGEu
bWVzc2FnZVBvcnRzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIHRydWU7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW50ZW50RGF0YS5oIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL0ludGVudERhdGEuaAppbmRleCA5NmUyZDlmLi5lODQzNWMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW50ZW50RGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9JbnRlbnREYXRhLmgKQEAgLTI5LDcgKzI5LDggQEAKICNpZiBFTkFC
TEUoV0VCX0lOVEVOVFMpCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKLSNpbmNsdWRlICJHZW5l
cmljQ2FsbGJhY2suaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KKyNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2Ug
Q29yZUlQQyB7CkBAIC01Niw2ICs1Nyw3IEBAIHN0cnVjdCBJbnRlbnREYXRhIHsKICAgICBWZWN0
b3I8dWludDhfdD4gZGF0YTsKICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBleHRyYXM7CiAg
ICAgVmVjdG9yPFdlYkNvcmU6OktVUkw+IHN1Z2dlc3Rpb25zOworICAgIFZlY3Rvcjx1aW50NjRf
dD4gbWVzc2FnZVBvcnRzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSW50ZW50RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViSW50ZW50RGF0YS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDk2MTI4ZGIuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkludGVudERh
dGEuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkludGVudERhdGEuaCIKLQotI2lm
IEVOQUJMRShXRUJfSU5URU5UUykKLQotI2luY2x1ZGUgIkltbXV0YWJsZUFycmF5LmgiCi0jaW5j
bHVkZSAiSW1tdXRhYmxlRGljdGlvbmFyeS5oIgotI2luY2x1ZGUgIldlYlN0cmluZy5oIgotI2lu
Y2x1ZGUgIldlYlVSTC5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotV2ViSW50ZW50RGF0YTo6
V2ViSW50ZW50RGF0YShjb25zdCBJbnRlbnREYXRhJiBzdG9yZSkKLSAgICA6IG1fc3RvcmUoc3Rv
cmUpCi17Ci19Ci0KLVBhc3NSZWZQdHI8V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlPiBXZWJJbnRl
bnREYXRhOjpkYXRhKCkgY29uc3QKLXsKLSAgICBWZWN0b3I8dWludDhfdD4gZGF0YUNvcHkgPSBt
X3N0b3JlLmRhdGE7Ci0gICAgcmV0dXJuIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQo
ZGF0YUNvcHkpOwotfQotCi1QYXNzUmVmUHRyPEltbXV0YWJsZUFycmF5PiBXZWJJbnRlbnREYXRh
OjpzdWdnZXN0aW9ucygpIGNvbnN0Ci17Ci0gICAgY29uc3Qgc2l6ZV90IG51bVN1Z2dlc3Rpb25z
ID0gbV9zdG9yZS5zdWdnZXN0aW9ucy5zaXplKCk7Ci0gICAgVmVjdG9yPFJlZlB0cjxBUElPYmpl
Y3Q+ID4gd2tTdWdnZXN0aW9ucyhudW1TdWdnZXN0aW9ucyk7Ci0gICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG51bVN1Z2dlc3Rpb25zOyArK2kpCi0gICAgICAgIHdrU3VnZ2VzdGlvbnNbaV0g
PSBXZWJVUkw6OmNyZWF0ZShtX3N0b3JlLnN1Z2dlc3Rpb25zW2ldKTsKLSAgICByZXR1cm4gSW1t
dXRhYmxlQXJyYXk6OmFkb3B0KHdrU3VnZ2VzdGlvbnMpOwotfQotCi1TdHJpbmcgV2ViSW50ZW50
RGF0YTo6ZXh0cmEoY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc3Rv
cmUuZXh0cmFzLmdldChrZXkpOwotfQotCi1QYXNzUmVmUHRyPEltbXV0YWJsZURpY3Rpb25hcnk+
IFdlYkludGVudERhdGE6OmV4dHJhcygpIGNvbnN0Ci17Ci0gICAgSW1tdXRhYmxlRGljdGlvbmFy
eTo6TWFwVHlwZSB3a0V4dHJhczsKLSAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPjo6Y29uc3Rf
aXRlcmF0b3IgZW5kID0gbV9zdG9yZS5leHRyYXMuZW5kKCk7Ci0gICAgZm9yIChIYXNoTWFwPFN0
cmluZywgU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3N0b3JlLmV4dHJhcy5iZWdpbigp
OyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIHdrRXh0cmFzLnNldChpdC0+Zmlyc3QsIFdlYlN0
cmluZzo6Y3JlYXRlKGl0LT5zZWNvbmQpKTsKLSAgICByZXR1cm4gSW1tdXRhYmxlRGljdGlvbmFy
eTo6YWRvcHQod2tFeHRyYXMpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlm
IC8vIEVOQUJMRShXRUJfSU5URU5UUykKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYkludGVudERhdGEuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJJbnRlbnREYXRh
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlY2Y0YWUuLjAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkludGVudERhdGEuaAorKysgL2Rldi9udWxsCkBAIC0x
LDcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24u
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViSW50ZW50RGF0YV9o
Ci0jZGVmaW5lIFdlYkludGVudERhdGFfaAotCi0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotCi0j
aW5jbHVkZSAiQVBJT2JqZWN0LmgiCi0jaW5jbHVkZSAiSW50ZW50RGF0YS5oIgotI2luY2x1ZGUg
IldlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJJbnRlbnREYXRhIDogcHVibGljIEFQ
SU9iamVjdCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0IFR5cGUgQVBJVHlwZSA9IFR5cGVJ
bnRlbnREYXRhOwotCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViSW50ZW50RGF0YT4gY3JlYXRl
KGNvbnN0IEludGVudERhdGEmIHN0b3JlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBXZWJJbnRlbnREYXRhKHN0b3JlKSk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+V2ViSW50
ZW50RGF0YSgpIHsgfQotCi0gICAgY29uc3QgU3RyaW5nJiBhY3Rpb24oKSBjb25zdCB7IHJldHVy
biBtX3N0b3JlLmFjdGlvbjsgfQotICAgIGNvbnN0IFN0cmluZyYgcGF5bG9hZFR5cGUoKSBjb25z
dCB7IHJldHVybiBtX3N0b3JlLnR5cGU7IH0KLSAgICBjb25zdCBXZWJDb3JlOjpLVVJMJiBzZXJ2
aWNlKCkgY29uc3QgeyByZXR1cm4gbV9zdG9yZS5zZXJ2aWNlOyB9Ci0gICAgUGFzc1JlZlB0cjxX
ZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEoKSBjb25zdDsKLSAgICBTdHJpbmcgZXh0cmEo
Y29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8SW1tdXRhYmxlRGljdGlv
bmFyeT4gZXh0cmFzKCkgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4gc3Vn
Z2VzdGlvbnMoKSBjb25zdDsKLQotICAgIGNvbnN0IEludGVudERhdGEmIHN0b3JlKCkgY29uc3Qg
eyByZXR1cm4gbV9zdG9yZTsgfQotCi1wcml2YXRlOgotICAgIFdlYkludGVudERhdGEoY29uc3Qg
SW50ZW50RGF0YSYpOwotCi0gICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBB
UElUeXBlOyB9Ci0KLSAgICBJbnRlbnREYXRhIG1fc3RvcmU7Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJfSU5URU5UUykKLQotI2VuZGlmIC8vIFdl
YkludGVudERhdGFfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaSBiL1Nv
dXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKaW5kZXggZWRlYTljNS4uMjA3ZDM0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQu
cHJpCkBAIC0xMTIsNyArMTEyLDYgQEAgSEVBREVSUyArPSBcCiAgICAgU2hhcmVkL1dlYkdyYXBo
aWNzQ29udGV4dC5oIFwKICAgICBTaGFyZWQvV2ViSGl0VGVzdFJlc3VsdC5oIFwKICAgICBTaGFy
ZWQvV2ViSW1hZ2UuaCBcCi0gICAgU2hhcmVkL1dlYkludGVudERhdGEuaCBcCiAgICAgU2hhcmVk
L1dlYkludGVudFNlcnZpY2VJbmZvLmggXAogICAgIFNoYXJlZC9XZWJMYXllclRyZWVJbmZvLmgg
XAogICAgIFNoYXJlZC9XZWJOYXZpZ2F0aW9uRGF0YVN0b3JlLmggXApAQCAtMjY3LDYgKzI2Niw3
IEBAIEhFQURFUlMgKz0gXAogICAgIFVJUHJvY2Vzcy9XZWJJY29uRGF0YWJhc2UuaCBcCiAgICAg
VUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZUNsaWVudC5oIFwKICAgICBVSVByb2Nlc3MvV2ViSW5z
cGVjdG9yUHJveHkuaCBcCisgICAgVUlQcm9jZXNzL1dlYkludGVudERhdGEuaCBcCiAgICAgVUlQ
cm9jZXNzL1dlYktleVZhbHVlU3RvcmFnZU1hbmFnZXJQcm94eS5oIFwKICAgICBVSVByb2Nlc3Mv
V2ViTGF5ZXJUcmVlUmVuZGVyZXIuaCBcCiAgICAgVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5o
IFwKQEAgLTMxOSw2ICszMTksNyBAQCBIRUFERVJTICs9IFwKICAgICBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQmFja0ZvcndhcmRMaXN0LmggXAogICAgIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmggXAog
ICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVIaXRUZXN0UmVzdWx0
LmggXAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnQu
aCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudFJl
cXVlc3QuaCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU5h
dmlnYXRpb25BY3Rpb24uaCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZU5vZGVIYW5kbGUuaCBcCkBAIC0zMzIsNiArMzMzLDcgQEAgSEVBREVSUyArPSBcCiAg
ICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUNsaWVudC5oIFwKICAg
ICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5z
aW9uLmggXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRU
ZXN0UmVzdWx0LmggXAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVJbnRlbnQuaCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZUludGVudFJlcXVlc3QuaCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uaCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5oIFwKQEAgLTQ5NSw3ICs0OTcs
NiBAQCBTT1VSQ0VTICs9IFwKICAgICBTaGFyZWQvV2ViSGl0VGVzdFJlc3VsdC5jcHAgXAogICAg
IFNoYXJlZC9XZWJLZXlib2FyZEV2ZW50LmNwcCBcCiAgICAgU2hhcmVkL1dlYkltYWdlLmNwcCBc
Ci0gICAgU2hhcmVkL1dlYkludGVudERhdGEuY3BwIFwKICAgICBTaGFyZWQvV2ViSW50ZW50U2Vy
dmljZUluZm8uY3BwIFwKICAgICBTaGFyZWQvV2ViTGF5ZXJUcmVlSW5mby5jcHAgXAogICAgIFNo
YXJlZC9XZWJNb3VzZUV2ZW50LmNwcCBcCkBAIC02MzgsNiArNjM5LDcgQEAgU09VUkNFUyArPSBc
CiAgICAgVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5jcHAgXAogICAgIFVJUHJvY2Vzcy9XZWJJ
Y29uRGF0YWJhc2VDbGllbnQuY3BwIFwKICAgICBVSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHku
Y3BwIFwKKyAgICBVSVByb2Nlc3MvV2ViSW50ZW50RGF0YS5jcHAgXAogICAgIFVJUHJvY2Vzcy9X
ZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUHJveHkuY3BwIFwKICAgICBVSVByb2Nlc3MvV2ViTGF5
ZXJUcmVlUmVuZGVyZXIuY3BwIFwKICAgICBVSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmNwcCBc
CkBAIC03MDMsNiArNzA1LDcgQEAgU09VUkNFUyArPSBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUhpdFRlc3RSZXN1bHQuY3BwIFwKICAgICBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW5zcGVjdG9yLmNwcCBcCisgICAgV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudC5jcHAgXAogICAgIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnRSZXF1ZXN0LmNwcCBcCiAg
ICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU5hdmlnYXRpb25BY3Rp
b24uY3BwIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlTm9k
ZUhhbmRsZS5jcHAgXApAQCAtNzE4LDYgKzcyMSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwIFwKICAgICBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmNw
cCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RS
ZXN1bHQuY3BwIFwKKyAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
SW50ZW50LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZUludGVudFJlcXVlc3QuY3BwIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAgXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0ludGVudERhdGEuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLSW50ZW50RGF0YS5jcHAKaW5kZXggN2E5MmRi
NS4uYjUxMzc1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
SW50ZW50RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLSW50
ZW50RGF0YS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNp
bmNsdWRlICJXS0RpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJXS1N0cmluZy5oIgorI2luY2x1ZGUg
IldlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogCiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQog
I2luY2x1ZGUgIldlYkludGVudERhdGEuaCIKQEAgLTQ3LDI3ICs0OCw2IEBAIFdLVHlwZUlEIFdL
SW50ZW50RGF0YUdldFR5cGVJRCgpCiAjZW5kaWYKIH0KIAotV0tJbnRlbnREYXRhUmVmIFdLSW50
ZW50RGF0YUNyZWF0ZShXS0RpY3Rpb25hcnlSZWYgaW5pdERpY3Rpb25hcnlSZWYpCi17Ci0jaWYg
RU5BQkxFKFdFQl9JTlRFTlRTKQotICAgIEludGVudERhdGEgaW50ZW50RGF0YTsKLSAgICBXS1N0
cmluZ1JlZiBhY3Rpb24gPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tEaWN0aW9uYXJ5R2V0
SXRlbUZvcktleShpbml0RGljdGlvbmFyeVJlZiwgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoImFjdGlvbiIpKSk7Ci0gICAgQVNTRVJUKGFjdGlvbik7Ci0gICAgaW50ZW50RGF0YS5hY3Rp
b24gPSB0b0ltcGwoYWN0aW9uKS0+c3RyaW5nKCk7Ci0gICAgV0tTdHJpbmdSZWYgdHlwZSA9IHN0
YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KGluaXREaWN0
aW9uYXJ5UmVmLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygidHlwZSIpKSk7Ci0gICAg
QVNTRVJUKHR5cGUpOwotICAgIGludGVudERhdGEudHlwZSA9IHRvSW1wbCh0eXBlKS0+c3RyaW5n
KCk7Ci0gICAgV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYgZGF0YSA9IHN0YXRpY19jYXN0PFdL
U2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KGluaXRE
aWN0aW9uYXJ5UmVmLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiZGF0YSIpKSk7Ci0g
ICAgaWYgKGRhdGEpCi0gICAgICAgIGludGVudERhdGEuZGF0YSA9IHRvSW1wbChkYXRhKS0+ZGF0
YVJlZmVyZW5jZSgpLnZlY3RvcigpOwotCi0gICAgUmVmUHRyPFdlYkludGVudERhdGE+IHdlYklu
dGVudERhdGEgPSBXZWJJbnRlbnREYXRhOjpjcmVhdGUoaW50ZW50RGF0YSk7Ci0gICAgcmV0dXJu
IHRvQVBJKHdlYkludGVudERhdGEucmVsZWFzZSgpLmxlYWtSZWYoKSk7Ci0jZWxzZQotICAgIHJl
dHVybiAwOwotI2VuZGlmCi19Ci0KIFdLU3RyaW5nUmVmIFdLSW50ZW50RGF0YUNvcHlBY3Rpb24o
V0tJbnRlbnREYXRhUmVmIGludGVudFJlZikKIHsKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnRlbnREYXRhLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnRlbnREYXRhLmgKaW5kZXggMWY4
MDllYy4uOGZjYjg2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLSW50ZW50RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0lu
dGVudERhdGEuaApAQCAtMzQsOCArMzQsNiBAQCBleHRlcm4gIkMiIHsKIAogV0tfRVhQT1JUIFdL
VHlwZUlEIFdLSW50ZW50RGF0YUdldFR5cGVJRCgpOwogCi1XS19FWFBPUlQgV0tJbnRlbnREYXRh
UmVmIFdLSW50ZW50RGF0YUNyZWF0ZShXS0RpY3Rpb25hcnlSZWYgaW5pdERpY3Rpb25hcnkpOwot
CiBXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tJbnRlbnREYXRhQ29weUFjdGlvbihXS0ludGVudERh
dGFSZWYgaW50ZW50UmVmKTsKIFdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0ludGVudERhdGFDb3B5
VHlwZShXS0ludGVudERhdGFSZWYgaW50ZW50UmVmKTsKIFdLX0VYUE9SVCBXS1VSTFJlZiBXS0lu
dGVudERhdGFDb3B5U2VydmljZShXS0ludGVudERhdGFSZWYgaW50ZW50UmVmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnRlbnREYXRhLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnRlbnREYXRhLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5kYzE5MGQ3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkludGVudERhdGEuY3BwCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJJbnRlbnREYXRhLmgi
CisKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisKKyNpbmNsdWRlICJJbW11dGFibGVBcnJheS5o
IgorI2luY2x1ZGUgIkltbXV0YWJsZURpY3Rpb25hcnkuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNz
UHJveHkuaCIKKyNpbmNsdWRlICJXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRl
ICJXZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJXZWJVUkwuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK1dlYkludGVudERhdGE6OldlYkludGVudERhdGEoY29uc3QgSW50ZW50RGF0YSYgc3RvcmUs
IFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcykKKyAgICA6IG1fc3RvcmUoc3RvcmUpCisgICAgLCBt
X3Byb2Nlc3MocHJvY2VzcykKK3sKK30KKworV2ViSW50ZW50RGF0YTo6fldlYkludGVudERhdGEo
KQoreworICAgIC8vIFJlbW92ZSBNZXNzYWdlUG9ydENoYW5uZWxzIGZyb20gV2ViUHJvY2Vzcy4K
KyAgICBpZiAobV9wcm9jZXNzICYmICFtX3N0b3JlLm1lc3NhZ2VQb3J0cy5pc0VtcHR5KCkpIHsK
KyAgICAgICAgc2l6ZV90IG51bU1lc3NhZ2VQb3J0cyA9IG1fc3RvcmUubWVzc2FnZVBvcnRzLnNp
emUoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1NZXNzYWdlUG9ydHM7ICsr
aSkKKyAgICAgICAgICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVBvcnRDaGFubmVsKG1fc3Rv
cmUubWVzc2FnZVBvcnRzW2ldKTsKKyAgICB9Cit9CisKK1Bhc3NSZWZQdHI8V2ViU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBXZWJJbnRlbnREYXRhOjpkYXRhKCkgY29uc3QKK3sKKyAgICBWZWN0b3I8
dWludDhfdD4gZGF0YUNvcHkgPSBtX3N0b3JlLmRhdGE7CisgICAgcmV0dXJuIFdlYlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6YWRvcHQoZGF0YUNvcHkpOworfQorCitQYXNzUmVmUHRyPEltbXV0YWJs
ZUFycmF5PiBXZWJJbnRlbnREYXRhOjpzdWdnZXN0aW9ucygpIGNvbnN0Cit7CisgICAgY29uc3Qg
c2l6ZV90IG51bVN1Z2dlc3Rpb25zID0gbV9zdG9yZS5zdWdnZXN0aW9ucy5zaXplKCk7CisgICAg
VmVjdG9yPFJlZlB0cjxBUElPYmplY3Q+ID4gd2tTdWdnZXN0aW9ucyhudW1TdWdnZXN0aW9ucyk7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVN1Z2dlc3Rpb25zOyArK2kpCisgICAg
ICAgIHdrU3VnZ2VzdGlvbnNbaV0gPSBXZWJVUkw6OmNyZWF0ZShtX3N0b3JlLnN1Z2dlc3Rpb25z
W2ldKTsKKyAgICByZXR1cm4gSW1tdXRhYmxlQXJyYXk6OmFkb3B0KHdrU3VnZ2VzdGlvbnMpOwor
fQorCitTdHJpbmcgV2ViSW50ZW50RGF0YTo6ZXh0cmEoY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fc3RvcmUuZXh0cmFzLmdldChrZXkpOworfQorCitQYXNzUmVmUHRy
PEltbXV0YWJsZURpY3Rpb25hcnk+IFdlYkludGVudERhdGE6OmV4dHJhcygpIGNvbnN0Cit7Cisg
ICAgSW1tdXRhYmxlRGljdGlvbmFyeTo6TWFwVHlwZSB3a0V4dHJhczsKKyAgICBIYXNoTWFwPFN0
cmluZywgU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9zdG9yZS5leHRyYXMuZW5kKCk7
CisgICAgZm9yIChIYXNoTWFwPFN0cmluZywgU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBt
X3N0b3JlLmV4dHJhcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgIHdrRXh0cmFz
LnNldChpdC0+Zmlyc3QsIFdlYlN0cmluZzo6Y3JlYXRlKGl0LT5zZWNvbmQpKTsKKyAgICByZXR1
cm4gSW1tdXRhYmxlRGljdGlvbmFyeTo6YWRvcHQod2tFeHRyYXMpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfSU5URU5UUykKKwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkludGVudERhdGEuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJJbnRlbnREYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uOWQ1OWY5MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJJbnRlbnREYXRhLmgKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBXZWJJbnRlbnREYXRhX2gKKyNkZWZpbmUgV2ViSW50ZW50RGF0YV9oCisKKyNp
ZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRl
ICJJbnRlbnREYXRhLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9LVVJMLmg+CisjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEltbXV0YWJsZUFy
cmF5OworY2xhc3MgSW1tdXRhYmxlRGljdGlvbmFyeTsKK2NsYXNzIFdlYlByb2Nlc3NQcm94eTsK
K2NsYXNzIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKKworY2xhc3MgV2ViSW50ZW50RGF0YSA6
IHB1YmxpYyBBUElPYmplY3QgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCBUeXBlIEFQSVR5
cGUgPSBUeXBlSW50ZW50RGF0YTsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkludGVudERh
dGE+IGNyZWF0ZShjb25zdCBJbnRlbnREYXRhJiBzdG9yZSwgV2ViUHJvY2Vzc1Byb3h5KiBwcm9j
ZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJJbnRlbnREYXRhKHN0
b3JlLCBwcm9jZXNzKSk7CisgICAgfQorCisgICAgdmlydHVhbCB+V2ViSW50ZW50RGF0YSgpOwor
CisgICAgY29uc3QgU3RyaW5nJiBhY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3N0b3JlLmFjdGlv
bjsgfQorICAgIGNvbnN0IFN0cmluZyYgcGF5bG9hZFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3N0
b3JlLnR5cGU7IH0KKyAgICBjb25zdCBXZWJDb3JlOjpLVVJMJiBzZXJ2aWNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdG9yZS5zZXJ2aWNlOyB9CisgICAgUGFzc1JlZlB0cjxXZWJTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IGRhdGEoKSBjb25zdDsKKyAgICBTdHJpbmcgZXh0cmEoY29uc3QgU3RyaW5nJiBr
ZXkpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4gZXh0cmFzKCkg
Y29uc3Q7CisgICAgUGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4gc3VnZ2VzdGlvbnMoKSBjb25z
dDsKKworICAgIGNvbnN0IEludGVudERhdGEmIHN0b3JlKCkgY29uc3QgeyByZXR1cm4gbV9zdG9y
ZTsgfQorCitwcml2YXRlOgorICAgIFdlYkludGVudERhdGEoY29uc3QgSW50ZW50RGF0YSYsIFdl
YlByb2Nlc3NQcm94eSopOworCisgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVy
biBBUElUeXBlOyB9CisKKyAgICBJbnRlbnREYXRhIG1fc3RvcmU7CisgICAgV2ViUHJvY2Vzc1By
b3h5KiBtX3Byb2Nlc3M7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IEVOQUJMRShXRUJfSU5URU5UUykKKworI2VuZGlmIC8vIFdlYkludGVudERhdGFfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA2Y2YyNjBhLi5lMzZmNDQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMjE5MCw3
ICsyMTkwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZSh1
aW50NjRfdCBmcmFtZUlELCBjb25zdCBJbnRlbnREYXRhJgogICAgIFdlYkZyYW1lUHJveHkqIGZy
YW1lID0gcHJvY2VzcygpLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKGZy
YW1lKTsKIAotICAgIFJlZlB0cjxXZWJJbnRlbnREYXRhPiB3ZWJJbnRlbnREYXRhID0gV2ViSW50
ZW50RGF0YTo6Y3JlYXRlKGludGVudERhdGEpOworICAgIFJlZlB0cjxXZWJJbnRlbnREYXRhPiB3
ZWJJbnRlbnREYXRhID0gV2ViSW50ZW50RGF0YTo6Y3JlYXRlKGludGVudERhdGEsIHByb2Nlc3Mo
KSk7CiAgICAgbV9sb2FkZXJDbGllbnQuZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKHRoaXMsIGZy
YW1lLCB3ZWJJbnRlbnREYXRhLmdldCgpLCB1c2VyRGF0YS5nZXQoKSk7CiB9CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggZTNjZGM4
OC4uMjZjM2FlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAKQEAgLTE5Niw2ICsxOTYsMTQgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlbW92ZVdl
YlBhZ2UodWludDY0X3QgcGFnZUlEKQogICAgIG1fcGFnZU1hcC5yZW1vdmUocGFnZUlEKTsKIH0K
IAordm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlbW92ZU1lc3NhZ2VQb3J0Q2hhbm5lbCh1aW50NjRf
dCBjaGFubmVsSUQpCit7CisgICAgaWYgKCFpc1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlJlbW92ZU1lc3NhZ2VQb3J0Q2hhbm5lbChj
aGFubmVsSUQpLCAwKTsKK30KKwogV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogV2ViUHJvY2Vzc1By
b3h5Ojp3ZWJCYWNrRm9yd2FyZEl0ZW0odWludDY0X3QgaXRlbUlEKSBjb25zdAogewogICAgIHJl
dHVybiBtX2JhY2tGb3J3YXJkTGlzdEl0ZW1NYXAuZ2V0KGl0ZW1JRCkuZ2V0KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXggOGU3NjhiZi4uN2IxY2Ew
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtODcs
NiArODcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRFeGlzdGluZ1dlYlBhZ2UoV2ViUGFnZVBy
b3h5KiwgdWludDY0X3QgcGFnZUlEKTsKICAgICB2b2lkIHJlbW92ZVdlYlBhZ2UodWludDY0X3Qg
cGFnZUlEKTsKIAorICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVBvcnRDaGFubmVsKHVpbnQ2NF90IGNo
YW5uZWxJRCk7CisKICAgICBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiB3ZWJCYWNrRm9yd2FyZEl0
ZW0odWludDY0X3QgaXRlbUlEKSBjb25zdDsKIAogICAgIFJlc3BvbnNpdmVuZXNzVGltZXIqIHJl
c3BvbnNpdmVuZXNzVGltZXIoKSB7IHJldHVybiAmbV9yZXNwb25zaXZlbmVzc1RpbWVyOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlQVBJQ2FzdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZUFQSUNhc3QuaAppbmRleCAzMzU1ZDA4Li4wMThlZjc5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlQVBJQ2FzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVBUElDYXN0LmgKQEAgLTQ2LDYgKzQ2LDcgQEAgY2xhc3MgSW5q
ZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3Q7CiBjbGFzcyBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3
YXJkTGlzdEl0ZW07CiBjbGFzcyBJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbjsKIGNs
YXNzIEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdDsKK2NsYXNzIEluamVjdGVkQnVuZGxlSW50
ZW50OwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0OwogY2xhc3MgSW5qZWN0ZWRC
dW5kbGVOYXZpZ2F0aW9uQWN0aW9uOwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOwpA
QCAtNjQsNiArNjUsNyBAQCBXS19BRERfQVBJX01BUFBJTkcoV0tCdW5kbGVET01XaW5kb3dFeHRl
bnNpb25SZWYsIEluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaQogV0tfQUREX0FQSV9NQVBQ
SU5HKFdLQnVuZGxlRnJhbWVSZWYsIFdlYkZyYW1lKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLQnVu
ZGxlSGl0VGVzdFJlc3VsdFJlZiwgSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0KQogV0tfQURE
X0FQSV9NQVBQSU5HKFdLQnVuZGxlSW5zcGVjdG9yUmVmLCBXZWJJbnNwZWN0b3IpCitXS19BRERf
QVBJX01BUFBJTkcoV0tCdW5kbGVJbnRlbnRSZWYsIEluamVjdGVkQnVuZGxlSW50ZW50KQogV0tf
QUREX0FQSV9NQVBQSU5HKFdLQnVuZGxlSW50ZW50UmVxdWVzdFJlZiwgSW5qZWN0ZWRCdW5kbGVJ
bnRlbnRSZXF1ZXN0KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLQnVuZGxlTmF2aWdhdGlvbkFjdGlv
blJlZiwgSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uKQogV0tfQUREX0FQSV9NQVBQSU5H
KFdLQnVuZGxlTm9kZUhhbmRsZVJlZiwgSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZUludGVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlSW50ZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5kODM4NjNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudC5jcHAKQEAgLTAsMCArMSwxMzUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJX
S0J1bmRsZUludGVudC5oIgorCisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorI2luY2x1ZGUgIklt
bXV0YWJsZUFycmF5LmgiCisjaW5jbHVkZSAiSW1tdXRhYmxlRGljdGlvbmFyeS5oIgorI2luY2x1
ZGUgIkluamVjdGVkQnVuZGxlSW50ZW50LmgiCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5j
bHVkZSAiV0tCdW5kbGVBUElDYXN0LmgiCisjaW5jbHVkZSAiV0tEaWN0aW9uYXJ5LmgiCisjaW5j
bHVkZSAiV0tTdHJpbmcuaCIKKyNpbmNsdWRlICJXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIK
KyNlbmRpZgorCisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworI2VuZGlmCisKK1dLVHlwZUlEIFdLQnVuZGxl
SW50ZW50R2V0VHlwZUlEKCkKK3sKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgcmV0dXJu
IHRvQVBJKEluamVjdGVkQnVuZGxlSW50ZW50OjpBUElUeXBlKTsKKyNlbHNlCisgICAgcmV0dXJu
IDA7CisjZW5kaWYKK30KKworV0tCdW5kbGVJbnRlbnRSZWYgV0tCdW5kbGVJbnRlbnRDcmVhdGUo
V0tEaWN0aW9uYXJ5UmVmIGluaXREaWN0aW9uYXJ5UmVmKQoreworI2lmIEVOQUJMRShXRUJfSU5U
RU5UUykKKyAgICBXS1N0cmluZ1JlZiBhY3Rpb24gPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4o
V0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShpbml0RGljdGlvbmFyeVJlZiwgV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoImFjdGlvbiIpKSk7CisgICAgQVNTRVJUKGFjdGlvbik7CisgICAg
V0tTdHJpbmdSZWYgdHlwZSA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlH
ZXRJdGVtRm9yS2V5KGluaXREaWN0aW9uYXJ5UmVmLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZygidHlwZSIpKSk7CisgICAgQVNTRVJUKHR5cGUpOworICAgIFdLU2VyaWFsaXplZFNjcmlw
dFZhbHVlUmVmIGRhdGEgPSBzdGF0aWNfY2FzdDxXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZj4o
V0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShpbml0RGljdGlvbmFyeVJlZiwgV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoImRhdGEiKSkpOworICAgIE1lc3NhZ2VQb3J0QXJyYXkgZHVtbXlQ
b3J0czsKKyAgICBFeGNlcHRpb25Db2RlIGVjOworCisgICAgUmVmUHRyPEludGVudD4gY29yZUlu
dGVudCA9IEludGVudDo6Y3JlYXRlKHRvSW1wbChhY3Rpb24pLT5zdHJpbmcoKSwgdG9JbXBsKHR5
cGUpLT5zdHJpbmcoKSwgZGF0YSA/IHN0YXRpY19jYXN0PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSo+
KHRvSW1wbChkYXRhKS0+aW50ZXJuYWxSZXByZXNlbnRhdGlvbigpKSA6IDAsIGR1bW15UG9ydHMs
IGVjKTsKKyAgICByZXR1cm4gdG9BUEkoSW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OmNyZWF0ZShjb3Jl
SW50ZW50LmdldCgpKS5sZWFrUmVmKCkpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgor
fQorCitXS1N0cmluZ1JlZiBXS0J1bmRsZUludGVudENvcHlBY3Rpb24oV0tCdW5kbGVJbnRlbnRS
ZWYgaW50ZW50UmVmKQoreworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICByZXR1cm4gdG9D
b3BpZWRBUEkodG9JbXBsKGludGVudFJlZiktPmFjdGlvbigpKTsKKyNlbHNlCisgICAgcmV0dXJu
IDA7CisjZW5kaWYKK30KKworV0tTdHJpbmdSZWYgV0tCdW5kbGVJbnRlbnRDb3B5VHlwZShXS0J1
bmRsZUludGVudFJlZiBpbnRlbnRSZWYpCit7CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorICAg
IHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwoaW50ZW50UmVmKS0+cGF5bG9hZFR5cGUoKSk7Cisj
ZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCit9CisKK1dLVVJMUmVmIFdLQnVuZGxlSW50ZW50
Q29weVNlcnZpY2UoV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmKQoreworI2lmIEVOQUJMRShX
RUJfSU5URU5UUykKKyAgICByZXR1cm4gdG9Db3BpZWRVUkxBUEkodG9JbXBsKGludGVudFJlZikt
PnNlcnZpY2UoKSk7CisjZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCit9CisKK1dLQXJyYXlS
ZWYgV0tCdW5kbGVJbnRlbnRDb3B5U3VnZ2VzdGlvbnMoV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50
UmVmKQoreworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICByZXR1cm4gdG9BUEkodG9JbXBs
KGludGVudFJlZiktPnN1Z2dlc3Rpb25zKCkubGVha1JlZigpKTsKKyNlbHNlCisgICAgcmV0dXJu
IDA7CisjZW5kaWYKK30KKworV0tTdHJpbmdSZWYgV0tCdW5kbGVJbnRlbnRDb3B5RXh0cmEoV0tC
dW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmLCBXS1N0cmluZ1JlZiBrZXkpCit7CisjaWYgRU5BQkxF
KFdFQl9JTlRFTlRTKQorICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwoaW50ZW50UmVmKS0+
ZXh0cmEodG9XVEZTdHJpbmcoa2V5KSkpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgor
fQorCitXS0RpY3Rpb25hcnlSZWYgV0tCdW5kbGVJbnRlbnRDb3B5RXh0cmFzKFdLQnVuZGxlSW50
ZW50UmVmIGludGVudFJlZikKK3sKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgcmV0dXJu
IHRvQVBJKHRvSW1wbChpbnRlbnRSZWYpLT5leHRyYXMoKS5sZWFrUmVmKCkpOworI2Vsc2UKKyAg
ICByZXR1cm4gMDsKKyNlbmRpZgorfQorCitzaXplX3QgV0tCdW5kbGVJbnRlbnRNZXNzYWdlUG9y
dENvdW50KFdLQnVuZGxlSW50ZW50UmVmIGludGVudFJlZikKK3sKKyNpZiBFTkFCTEUoV0VCX0lO
VEVOVFMpCisgICAgTWVzc2FnZVBvcnRDaGFubmVsQXJyYXkqIG1lc3NhZ2VQb3J0cyA9IHRvSW1w
bChpbnRlbnRSZWYpLT5jb3JlSW50ZW50KCktPm1lc3NhZ2VQb3J0cygpOworCisgICAgcmV0dXJu
IG1lc3NhZ2VQb3J0cyA/IG1lc3NhZ2VQb3J0cy0+c2l6ZSgpIDogMDsKKyNlbHNlCisgICAgcmV0
dXJuIDA7CisjZW5kaWYKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NDcxOWQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVu
dC5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29y
cG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV0tCdW5k
bGVJbnRlbnRfaAorI2RlZmluZSBXS0J1bmRsZUludGVudF9oCisKKyNpbmNsdWRlIDxXZWJLaXQy
L1dLQmFzZS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisK
K1dLX0VYUE9SVCBXS1R5cGVJRCBXS0J1bmRsZUludGVudEdldFR5cGVJRCgpOworCitXS19FWFBP
UlQgV0tCdW5kbGVJbnRlbnRSZWYgV0tCdW5kbGVJbnRlbnRDcmVhdGUoV0tEaWN0aW9uYXJ5UmVm
IGluaXREaWN0aW9uYXJ5KTsKKworV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLQnVuZGxlSW50ZW50
Q29weUFjdGlvbihXS0J1bmRsZUludGVudFJlZiBpbnRlbnRSZWYpOworV0tfRVhQT1JUIFdLU3Ry
aW5nUmVmIFdLQnVuZGxlSW50ZW50Q29weVR5cGUoV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVm
KTsKK1dLX0VYUE9SVCBXS1VSTFJlZiBXS0J1bmRsZUludGVudENvcHlTZXJ2aWNlKFdLQnVuZGxl
SW50ZW50UmVmIGludGVudFJlZik7CitXS19FWFBPUlQgV0tBcnJheVJlZiBXS0J1bmRsZUludGVu
dENvcHlTdWdnZXN0aW9ucyhXS0J1bmRsZUludGVudFJlZiBpbnRlbnRSZWYpOworV0tfRVhQT1JU
IFdLU3RyaW5nUmVmIFdLQnVuZGxlSW50ZW50Q29weUV4dHJhKFdLQnVuZGxlSW50ZW50UmVmIGlu
dGVudFJlZiwgV0tTdHJpbmdSZWYga2V5KTsKK1dLX0VYUE9SVCBXS0RpY3Rpb25hcnlSZWYgV0tC
dW5kbGVJbnRlbnRDb3B5RXh0cmFzKFdLQnVuZGxlSW50ZW50UmVmIGludGVudFJlZik7CitXS19F
WFBPUlQgc2l6ZV90IFdLQnVuZGxlSW50ZW50TWVzc2FnZVBvcnRDb3VudChXS0J1bmRsZUludGVu
dFJlZiBpbnRlbnRSZWYpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5k
aWYgLy8gV0tCdW5kbGVJbnRlbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudFJlcXVlc3QuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVu
dFJlcXVlc3QuY3BwCmluZGV4IDgxYzk1YzYuLmE0NzcyZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnRSZXF1
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlSW50ZW50UmVxdWVzdC5jcHAKQEAgLTI3LDEwICsyNywxMCBAQAogI2luY2x1
ZGUgIldLQnVuZGxlSW50ZW50UmVxdWVzdC5oIgogCiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQor
I2luY2x1ZGUgIkluamVjdGVkQnVuZGxlSW50ZW50LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5k
bGVJbnRlbnRSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tC
dW5kbGVBUElDYXN0LmgiCi0jaW5jbHVkZSAiV2ViSW50ZW50RGF0YS5oIgogCiB1c2luZyBuYW1l
c3BhY2UgV2ViS2l0OwogI2VuZGlmCkBAIC00NCwxMSArNDQsMTEgQEAgV0tUeXBlSUQgV0tCdW5k
bGVJbnRlbnRSZXF1ZXN0R2V0VHlwZUlEKCkKICNlbmRpZgogfQogCi1XS0ludGVudERhdGFSZWYg
V0tCdW5kbGVJbnRlbnRSZXF1ZXN0Q29weUludGVudERhdGEoV0tCdW5kbGVJbnRlbnRSZXF1ZXN0
UmVmIHJlcXVlc3RSZWYpCitXS0J1bmRsZUludGVudFJlZiBXS0J1bmRsZUludGVudFJlcXVlc3RD
b3B5SW50ZW50KFdLQnVuZGxlSW50ZW50UmVxdWVzdFJlZiByZXF1ZXN0UmVmKQogewogI2lmIEVO
QUJMRShXRUJfSU5URU5UUykKLSAgICBSZWZQdHI8V2ViSW50ZW50RGF0YT4gd2ViSW50ZW50RGF0
YSA9IHRvSW1wbChyZXF1ZXN0UmVmKS0+aW50ZW50KCk7Ci0gICAgcmV0dXJuIHRvQVBJKHdlYklu
dGVudERhdGEucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgUmVmUHRyPEluamVjdGVkQnVuZGxl
SW50ZW50PiB3ZWJJbnRlbnQgPSB0b0ltcGwocmVxdWVzdFJlZiktPmludGVudCgpOworICAgIHJl
dHVybiB0b0FQSSh3ZWJJbnRlbnQucmVsZWFzZSgpLmxlYWtSZWYoKSk7CiAjZWxzZQogICAgIHJl
dHVybiAwOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50UmVxdWVzdC5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudFJlcXVlc3Qu
aAppbmRleCBiMTgxMzZkLi4xMDVhZmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50UmVxdWVzdC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJ
bnRlbnRSZXF1ZXN0LmgKQEAgLTM0LDcgKzM0LDcgQEAgZXh0ZXJuICJDIiB7CiAKIFdLX0VYUE9S
VCBXS1R5cGVJRCBXS0J1bmRsZUludGVudFJlcXVlc3RHZXRUeXBlSUQoKTsKIAotV0tfRVhQT1JU
IFdLSW50ZW50RGF0YVJlZiBXS0J1bmRsZUludGVudFJlcXVlc3RDb3B5SW50ZW50RGF0YShXS0J1
bmRsZUludGVudFJlcXVlc3RSZWYgcmVxdWVzdCk7CitXS19FWFBPUlQgV0tCdW5kbGVJbnRlbnRS
ZWYgV0tCdW5kbGVJbnRlbnRSZXF1ZXN0Q29weUludGVudChXS0J1bmRsZUludGVudFJlcXVlc3RS
ZWYgcmVxdWVzdCk7CiAKIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlSW50ZW50UmVxdWVzdFBvc3RS
ZXN1bHQoV0tCdW5kbGVJbnRlbnRSZXF1ZXN0UmVmIHJlcXVlc3QsIFdLU2VyaWFsaXplZFNjcmlw
dFZhbHVlUmVmIHNlcmlhbGl6ZWREYXRhKTsKIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlSW50ZW50
UmVxdWVzdFBvc3RGYWlsdXJlKFdLQnVuZGxlSW50ZW50UmVxdWVzdFJlZiByZXF1ZXN0LCBXS1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiBzZXJpYWxpemVkRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlUGFnZS5jcHAKaW5kZXggMmFlMjIzNy4uODAyNDFjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVQYWdlLmNwcApAQCAtNDcsNyArNDcsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgog
CiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotI2luY2x1ZGUgIldlYkludGVudERhdGEuaCIKKyNp
bmNsdWRlICJJbmplY3RlZEJ1bmRsZUludGVudC5oIgogI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7CkBAIC0zMTAsMTAgKzMxMCwxMCBAQCBkb3VibGUgV0tCdW5kbGVQYWdlR2V0QmFj
a2luZ1NjYWxlRmFjdG9yKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmKQogICAgIHJldHVybiB0b0lt
cGwocGFnZVJlZiktPmRldmljZVNjYWxlRmFjdG9yKCk7CiB9CiAKLXZvaWQgV0tCdW5kbGVQYWdl
RGVsaXZlckludGVudFRvRnJhbWUoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlRnJh
bWVSZWYgZnJhbWVSZWYsIFdLSW50ZW50RGF0YVJlZiBpbnRlbnRSZWYpCit2b2lkIFdLQnVuZGxl
UGFnZURlbGl2ZXJJbnRlbnRUb0ZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRs
ZUZyYW1lUmVmIGZyYW1lUmVmLCBXS0J1bmRsZUludGVudFJlZiBpbnRlbnRSZWYpCiB7CiAjaWYg
RU5BQkxFKFdFQl9JTlRFTlRTKQotICAgIHRvSW1wbChwYWdlUmVmKS0+ZGVsaXZlckludGVudFRv
RnJhbWUodG9JbXBsKGZyYW1lUmVmKS0+ZnJhbWVJRCgpLCB0b0ltcGwoaW50ZW50UmVmKS0+c3Rv
cmUoKSk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5kZWxpdmVyQ29yZUludGVudFRvRnJhbWUodG9J
bXBsKGZyYW1lUmVmKS0+ZnJhbWVJRCgpLCB0b0ltcGwoaW50ZW50UmVmKS0+Y29yZUludGVudCgp
KTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaAppbmRleCBhYTg2MDkyLi42
ZjE4YjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgKQEAgLTQwNCw3ICs0MDQsNyBAQCBX
S19FWFBPUlQgV0tJbWFnZVJlZiBXS0J1bmRsZVBhZ2VDcmVhdGVTY2FsZWRTbmFwc2hvdEluRG9j
dW1lbnRDb29yZGluYXRlcyhXS0J1bgogCiBXS19FWFBPUlQgZG91YmxlIFdLQnVuZGxlUGFnZUdl
dEJhY2tpbmdTY2FsZUZhY3RvcihXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7CiAKLVdLX0VYUE9SVCB2
b2lkIFdLQnVuZGxlUGFnZURlbGl2ZXJJbnRlbnRUb0ZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdl
LCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBXS0ludGVudERhdGFSZWYgaW50ZW50KTsKK1dLX0VY
UE9SVCB2b2lkIFdLQnVuZGxlUGFnZURlbGl2ZXJJbnRlbnRUb0ZyYW1lKFdLQnVuZGxlUGFnZVJl
ZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBXS0J1bmRsZUludGVudFJlZiBpbnRlbnQp
OwogCiAjaWYgZGVmaW5lZChFTkFCTEVfSU5TUEVDVE9SKSAmJiBFTkFCTEVfSU5TUEVDVE9SCiBX
S19FWFBPUlQgV0tCdW5kbGVJbnNwZWN0b3JSZWYgV0tCdW5kbGVQYWdlR2V0SW5zcGVjdG9yKFdL
QnVuZGxlUGFnZVJlZiBwYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnQuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjdhYjU4NgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVJbnRlbnQuY3BwCkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
SW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZUludGVudC5oIgorCisjaWYg
RU5BQkxFKFdFQl9JTlRFTlRTKQorCisjaW5jbHVkZSAiSW1tdXRhYmxlQXJyYXkuaCIKKyNpbmNs
dWRlICJJbW11dGFibGVEaWN0aW9uYXJ5LmgiCisjaW5jbHVkZSAiV2ViU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViVVJMLmgiCisK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGFzc1Jl
ZlB0cjxJbmplY3RlZEJ1bmRsZUludGVudD4gSW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OmNyZWF0ZShX
ZWJDb3JlOjpJbnRlbnQqIGludGVudCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEluamVj
dGVkQnVuZGxlSW50ZW50KGludGVudCkpOworfQorCitJbmplY3RlZEJ1bmRsZUludGVudDo6SW5q
ZWN0ZWRCdW5kbGVJbnRlbnQoV2ViQ29yZTo6SW50ZW50KiBpbnRlbnQpCisgICAgOiBtX2ludGVu
dChpbnRlbnQpCit7Cit9CisKK1N0cmluZyBJbmplY3RlZEJ1bmRsZUludGVudDo6YWN0aW9uKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9pbnRlbnQtPmFjdGlvbigpOworfQorCitTdHJpbmcgSW5q
ZWN0ZWRCdW5kbGVJbnRlbnQ6OnBheWxvYWRUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9p
bnRlbnQtPnR5cGUoKTsKK30KKworV2ViQ29yZTo6S1VSTCBJbmplY3RlZEJ1bmRsZUludGVudDo6
c2VydmljZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW50ZW50LT5zZXJ2aWNlKCk7Cit9CisK
K1Bhc3NSZWZQdHI8V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlPiBJbmplY3RlZEJ1bmRsZUludGVu
dDo6ZGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
Y3JlYXRlKG1faW50ZW50LT5kYXRhKCkpOworfQorCitTdHJpbmcgSW5qZWN0ZWRCdW5kbGVJbnRl
bnQ6OmV4dHJhKGNvbnN0IFN0cmluZyYga2V5KSBjb25zdAoreworICAgIHJldHVybiBtX2ludGVu
dC0+ZXh0cmFzKCkuZ2V0KGtleSk7Cit9CisKK1Bhc3NSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFy
eT4gSW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OmV4dHJhcygpIGNvbnN0Cit7CisgICAgY29uc3QgSGFz
aE1hcDxTdHJpbmcsIFN0cmluZz4mIGV4dHJhcyA9IG1faW50ZW50LT5leHRyYXMoKTsKKyAgICBJ
bW11dGFibGVEaWN0aW9uYXJ5OjpNYXBUeXBlIHdrRXh0cmFzOworICAgIEhhc2hNYXA8U3RyaW5n
LCBTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBleHRyYXMuZW5kKCk7CisgICAgZm9yIChI
YXNoTWFwPFN0cmluZywgU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBleHRyYXMuYmVnaW4o
KTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICB3a0V4dHJhcy5zZXQoaXQtPmZpcnN0LCBXZWJT
dHJpbmc6OmNyZWF0ZShpdC0+c2Vjb25kKSk7CisgICAgcmV0dXJuIEltbXV0YWJsZURpY3Rpb25h
cnk6OmFkb3B0KHdrRXh0cmFzKTsKK30KKworUGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4gSW5q
ZWN0ZWRCdW5kbGVJbnRlbnQ6OnN1Z2dlc3Rpb25zKCkgY29uc3QKK3sKKyAgICBjb25zdCBWZWN0
b3I8S1VSTD4mIHN1Z2dlc3Rpb25zID0gbV9pbnRlbnQtPnN1Z2dlc3Rpb25zKCk7CisgICAgY29u
c3Qgc2l6ZV90IG51bVN1Z2dlc3Rpb25zID0gc3VnZ2VzdGlvbnMuc2l6ZSgpOworICAgIFZlY3Rv
cjxSZWZQdHI8QVBJT2JqZWN0PiA+IHdrU3VnZ2VzdGlvbnMobnVtU3VnZ2VzdGlvbnMpOworICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1TdWdnZXN0aW9uczsgKytpKQorICAgICAgICB3
a1N1Z2dlc3Rpb25zW2ldID0gV2ViVVJMOjpjcmVhdGUoc3VnZ2VzdGlvbnNbaV0pOworICAgIHJl
dHVybiBJbW11dGFibGVBcnJheTo6YWRvcHQod2tTdWdnZXN0aW9ucyk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9JTlRFTlRTKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZUludGVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZUludGVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVk
M2YwNmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50LmgKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBJbmplY3RlZEJ1bmRsZUludGVudF9oCisjZGVmaW5lIElu
amVjdGVkQnVuZGxlSW50ZW50X2gKKworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKworI2luY2x1
ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvSW50ZW50Lmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9LVVJMLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIEltbXV0YWJsZUFycmF5OworY2xhc3MgSW1tdXRhYmxlRGljdGlvbmFyeTsK
K2NsYXNzIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKKworY2xhc3MgSW5qZWN0ZWRCdW5kbGVJ
bnRlbnQgOiBwdWJsaWMgQVBJT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgVHlw
ZSBBUElUeXBlID0gVHlwZUJ1bmRsZUludGVudDsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPElu
amVjdGVkQnVuZGxlSW50ZW50PiBjcmVhdGUoV2ViQ29yZTo6SW50ZW50Kik7CisKKyAgICBTdHJp
bmcgYWN0aW9uKCkgY29uc3Q7CisgICAgU3RyaW5nIHBheWxvYWRUeXBlKCkgY29uc3Q7CisgICAg
V2ViQ29yZTo6S1VSTCBzZXJ2aWNlKCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxXZWJTZXJpYWxp
emVkU2NyaXB0VmFsdWU+IGRhdGEoKSBjb25zdDsKKyAgICBTdHJpbmcgZXh0cmEoY29uc3QgU3Ry
aW5nJiBrZXkpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4gZXh0
cmFzKCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4gc3VnZ2VzdGlvbnMo
KSBjb25zdDsKKworICAgIFdlYkNvcmU6OkludGVudCogY29yZUludGVudCgpIGNvbnN0IHsgcmV0
dXJuIG1faW50ZW50LmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgSW5qZWN0ZWRC
dW5kbGVJbnRlbnQoV2ViQ29yZTo6SW50ZW50Kik7CisKKyAgICB2aXJ0dWFsIFR5cGUgdHlwZSgp
IGNvbnN0IHsgcmV0dXJuIEFQSVR5cGU7IH0KKworICAgIFJlZlB0cjxXZWJDb3JlOjpJbnRlbnQ+
IG1faW50ZW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFC
TEUoV0VCX0lOVEVOVFMpCisKKyNlbmRpZiAvLyBJbmplY3RlZEJ1bmRsZUludGVudF9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlSW50ZW50UmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5jcHAKaW5kZXggNWNjYjE5Yy4u
ZWFjMGI4M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5j
cHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZUludGVudFJlcXVl
c3QuaCIKIAogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRs
ZUludGVudC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW50ZW50UmVxdWVzdC5oPgogI2luY2x1ZGUg
PFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oPgogCkBAIC01NCw5ICs1NSw5IEBAIHZvaWQgSW5q
ZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0Ojpwb3N0RmFpbHVyZShXZWJTZXJpYWxpemVkU2NyaXB0
VmFsdWUqIGRhdGEpCiAgICAgbV9pbnRlbnRSZXF1ZXN0LT5wb3N0RmFpbHVyZShzdGF0aWNfY2Fz
dDxTZXJpYWxpemVkU2NyaXB0VmFsdWUqPihkYXRhLT5pbnRlcm5hbFJlcHJlc2VudGF0aW9uKCkp
KTsKIH0KIAotUGFzc1JlZlB0cjxXZWJJbnRlbnREYXRhPiBJbmplY3RlZEJ1bmRsZUludGVudFJl
cXVlc3Q6OmludGVudCgpIGNvbnN0CitQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlSW50ZW50PiBJ
bmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3Q6OmludGVudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IFdlYkludGVudERhdGE6OmNyZWF0ZShJbnRlbnREYXRhKG1faW50ZW50UmVxdWVzdC0+aW50ZW50
KCkpKTsKKyAgICByZXR1cm4gSW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OmNyZWF0ZShtX2ludGVudFJl
cXVlc3QtPmludGVudCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
SW50ZW50UmVxdWVzdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuaAppbmRleCBiNTg3MGQ5Li4zM2EzMTkyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlSW50ZW50UmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0LmgKQEAgLTI5LDcgKzI5
LDYgQEAKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIK
LSNpbmNsdWRlICJXZWJJbnRlbnREYXRhLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTQw
LDYgKzM5LDcgQEAgY2xhc3MgSW50ZW50UmVxdWVzdDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
K2NsYXNzIEluamVjdGVkQnVuZGxlSW50ZW50OwogY2xhc3MgV2ViU2VyaWFsaXplZFNjcmlwdFZh
bHVlOwogCiBjbGFzcyBJbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QgOiBwdWJsaWMgQVBJT2Jq
ZWN0IHsKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHZvaWQgcG9zdFJlc3VsdChXZWJT
ZXJpYWxpemVkU2NyaXB0VmFsdWUqKTsKICAgICB2b2lkIHBvc3RGYWlsdXJlKFdlYlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSopOwogCi0gICAgUGFzc1JlZlB0cjxXZWJJbnRlbnREYXRhPiBpbnRlbnQo
KSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlSW50ZW50PiBpbnRlbnQoKSBj
b25zdDsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBJbmplY3RlZEJ1bmRsZUludGVudFJlcXVl
c3QoV2ViQ29yZTo6SW50ZW50UmVxdWVzdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggZjM2ZmMwMi4uZjliYjcwMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC02Myw2ICs2
Myw3IEBACiAjaW5jbHVkZSAiSW50ZW50RGF0YS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRE9NV2lu
ZG93SW50ZW50cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGVsaXZlcmVkSW50ZW50Lmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9JbnRlbnQuaD4KICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQ
TEFURk9STShXSU4pCkBAIC0yNDYsMTMgKzI0NywzOSBAQCB2b2lkIFdlYkZyYW1lOjpjb252ZXJ0
SGFuZGxlVG9Eb3dubG9hZChSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZVJl
cQogdm9pZCBXZWJGcmFtZTo6ZGVsaXZlckludGVudChjb25zdCBJbnRlbnREYXRhJiBpbnRlbnRE
YXRhKQogewogICAgIE93blB0cjxEZWxpdmVyZWRJbnRlbnRDbGllbnQ+IGR1bW15Q2xpZW50Owot
ICAgIE93blB0cjxNZXNzYWdlUG9ydEFycmF5PiBkdW1teVBvcnRzOwogICAgIFZlY3Rvcjx1aW50
OF90PiBkYXRhQ29weSA9IGludGVudERhdGEuZGF0YTsKKworICAgIE93blB0cjxXZWJDb3JlOjpN
ZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHM7CisgICAgaWYgKCFpbnRlbnREYXRhLm1l
c3NhZ2VQb3J0cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgY2hhbm5lbHMgPSBhZG9wdFB0cihuZXcg
V2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsQXJyYXkoaW50ZW50RGF0YS5tZXNzYWdlUG9ydHMu
c2l6ZSgpKSk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW50ZW50RGF0YS5tZXNz
YWdlUG9ydHMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICAoKmNoYW5uZWxzKVtpXSA9IE1lc3Nh
Z2VQb3J0Q2hhbm5lbDo6Y3JlYXRlKFdlYlByb2Nlc3M6OnNoYXJlZCgpLm1lc3NhZ2VQb3J0Q2hh
bm5lbChpbnRlbnREYXRhLm1lc3NhZ2VQb3J0cy5hdChpKSkpOworICAgIH0KKyAgICBPd25QdHI8
V2ViQ29yZTo6TWVzc2FnZVBvcnRBcnJheT4gbWVzc2FnZVBvcnRzID0gV2ViQ29yZTo6TWVzc2Fn
ZVBvcnQ6OmVudGFuZ2xlUG9ydHMoKm1fY29yZUZyYW1lLT5kb21XaW5kb3coKS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCBjaGFubmVscy5yZWxlYXNlKCkpOworCiAgICAgUmVmUHRyPERlbGl2
ZXJlZEludGVudD4gZGVsaXZlcmVkSW50ZW50ID0gRGVsaXZlcmVkSW50ZW50OjpjcmVhdGUobV9j
b3JlRnJhbWUsIGR1bW15Q2xpZW50LnJlbGVhc2UoKSwgaW50ZW50RGF0YS5hY3Rpb24sIGludGVu
dERhdGEudHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0KGRh
dGFDb3B5KSwgZHVtbXlQb3J0cy5yZWxlYXNlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjphZG9wdChkYXRhQ29weSksIG1lc3NhZ2VQb3J0cy5yZWxlYXNlKCksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50ZW50RGF0YS5leHRyYXMpOwogICAgIFdlYkNvcmU6OkRPTVdpbmRvd0ludGVu
dHM6OmZyb20obV9jb3JlRnJhbWUtPmRvbVdpbmRvdygpKS0+ZGVsaXZlcihkZWxpdmVyZWRJbnRl
bnQucmVsZWFzZSgpKTsKIH0KKwordm9pZCBXZWJGcmFtZTo6ZGVsaXZlckludGVudChJbnRlbnQq
IGludGVudCkKK3sKKyAgICBPd25QdHI8RGVsaXZlcmVkSW50ZW50Q2xpZW50PiBkdW1teUNsaWVu
dDsKKworICAgIE93blB0cjxXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5l
bHM7CisgICAgV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsQXJyYXkqIG9yaWdDaGFubmVscyA9
IGludGVudC0+bWVzc2FnZVBvcnRzKCk7CisgICAgaWYgKG9yaWdDaGFubmVscyAmJiBvcmlnQ2hh
bm5lbHMtPnNpemUoKSkgeworICAgICAgICBjaGFubmVscyA9IGFkb3B0UHRyKG5ldyBXZWJDb3Jl
OjpNZXNzYWdlUG9ydENoYW5uZWxBcnJheShvcmlnQ2hhbm5lbHMtPnNpemUoKSkpOworICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9yaWdDaGFubmVscy0+c2l6ZSgpOyArK2kpCisgICAg
ICAgICAgICAoKmNoYW5uZWxzKVtpXSA9IG9yaWdDaGFubmVscy0+YXQoaSkucmVsZWFzZSgpOwor
ICAgIH0KKyAgICBPd25QdHI8V2ViQ29yZTo6TWVzc2FnZVBvcnRBcnJheT4gbWVzc2FnZVBvcnRz
ID0gV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoKm1fY29yZUZyYW1lLT5kb21X
aW5kb3coKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBjaGFubmVscy5yZWxlYXNlKCkpOwor
CisgICAgUmVmUHRyPERlbGl2ZXJlZEludGVudD4gZGVsaXZlcmVkSW50ZW50ID0gRGVsaXZlcmVk
SW50ZW50OjpjcmVhdGUobV9jb3JlRnJhbWUsIGR1bW15Q2xpZW50LnJlbGVhc2UoKSwgaW50ZW50
LT5hY3Rpb24oKSwgaW50ZW50LT50eXBlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZW50LT5kYXRhKCks
IG1lc3NhZ2VQb3J0cy5yZWxlYXNlKCksIGludGVudC0+ZXh0cmFzKCkpOworICAgIFdlYkNvcmU6
OkRPTVdpbmRvd0ludGVudHM6OmZyb20obV9jb3JlRnJhbWUtPmRvbVdpbmRvdygpKS0+ZGVsaXZl
cihkZWxpdmVyZWRJbnRlbnQucmVsZWFzZSgpKTsKK30KICNlbmRpZgogCiBTdHJpbmcgV2ViRnJh
bWU6OnNvdXJjZSgpIGNvbnN0IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuaAppbmRleCBiZDZjMDM4Li5lZWEwOWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaApAQCAtNDIsNiArNDIsOSBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIGNsYXNzIEZyYW1lOwogICAgIGNsYXNzIEhUTUxGcmFtZU93bmVyRWxl
bWVudDsKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgY2xhc3MgSW50ZW50OworI2VuZGlm
CiAgICAgY2xhc3MgS1VSTDsKIH0KIApAQCAtODEsNiArODQsNyBAQCBwdWJsaWM6CiAKICNpZiBF
TkFCTEUoV0VCX0lOVEVOVFMpCiAgICAgdm9pZCBkZWxpdmVySW50ZW50KGNvbnN0IEludGVudERh
dGEmKTsKKyAgICB2b2lkIGRlbGl2ZXJJbnRlbnQoV2ViQ29yZTo6SW50ZW50Kik7CiAjZW5kaWYK
IAogICAgIFN0cmluZyBzb3VyY2UoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA1OWQzYmM1Li5iY2M4NTQ2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xMzYsNiArMTM2
LDcgQEAKIAogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKICNpbmNsdWRlICJJbnRlbnREYXRhLmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9JbnRlbnQuaD4KICNlbmRpZgogCiAjaWYgRU5BQkxFKFZJQlJB
VElPTikKQEAgLTE5NjMsNiArMTk2NCwxNSBAQCB2b2lkIFdlYlBhZ2U6OmRlbGl2ZXJJbnRlbnRU
b0ZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IEludGVudERhdGEmIGludGVudERhdAogCiAg
ICAgZnJhbWUtPmRlbGl2ZXJJbnRlbnQoaW50ZW50RGF0YSk7CiB9CisKK3ZvaWQgV2ViUGFnZTo6
ZGVsaXZlckNvcmVJbnRlbnRUb0ZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIEludGVudCogY29yZUlu
dGVudCkKK3sKKyAgICBXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaGFyZWQoKS53ZWJG
cmFtZShmcmFtZUlEKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBm
cmFtZS0+ZGVsaXZlckludGVudChjb3JlSW50ZW50KTsKK30KICNlbmRpZgogCiB2b2lkIFdlYlBh
Z2U6OnByZWZlcmVuY2VzRGlkQ2hhbmdlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3Jl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggZTMy
NTdhMy4uMTUzMzRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCkBAIC0xMDYsNiArMTA2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNz
IEZyYW1lOwogICAgIGNsYXNzIEZyYW1lVmlldzsKICAgICBjbGFzcyBIVE1MUGx1Z0luRWxlbWVu
dDsKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgY2xhc3MgSW50ZW50OworI2VuZGlmCiAg
ICAgY2xhc3MgS2V5Ym9hcmRFdmVudDsKICAgICBjbGFzcyBQYWdlOwogICAgIGNsYXNzIFByaW50
Q29udGV4dDsKQEAgLTQ3OCw3ICs0ODEsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShXRUJfSU5URU5UUykKLSAgICB2b2lkIGRlbGl2ZXJJbnRlbnRUb0ZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQsIGNvbnN0IEludGVudERhdGEmKTsKKyAgICB2b2lkIGRlbGl2ZXJDb3JlSW50ZW50VG9G
cmFtZSh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpJbnRlbnQqKTsKICNlbmRpZgogCiAgICAg
dm9pZCByZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQoV2ViQ29yZTo6RnJhbWUqLCBjb25zdCBTdHJp
bmcmKTsKQEAgLTYzMyw2ICs2MzYsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbnRleHRNZW51
SGlkZGVuKCkgeyBtX2lzU2hvd2luZ0NvbnRleHRNZW51ID0gZmFsc2U7IH0KICNlbmRpZgogCisj
aWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorICAgIHZvaWQgZGVsaXZlckludGVudFRvRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCwgY29uc3QgSW50ZW50RGF0YSYpOworI2VuZGlmCisKICAgICBzdGF0aWMg
dm9pZCBzY3JvbGwoV2ViQ29yZTo6UGFnZSosIFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbiwgV2Vi
Q29yZTo6U2Nyb2xsR3JhbnVsYXJpdHkpOwogICAgIHN0YXRpYyB2b2lkIGxvZ2ljYWxTY3JvbGwo
V2ViQ29yZTo6UGFnZSosIFdlYkNvcmU6OlNjcm9sbExvZ2ljYWxEaXJlY3Rpb24sIFdlYkNvcmU6
OlNjcm9sbEdyYW51bGFyaXR5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAKaW5kZXggNmViOGFiN2UuLjI3ZThiMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcApAQCAtODAsNiArODAsMTAgQEAKICNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SYW5kb21OdW1iZXIuaD4KIAorI2lmIEVOQUJMRShXRUJf
SU5URU5UUykKKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmg+
CisjZW5kaWYKKwogI2lmIEVOQUJMRShORVRXT1JLX0lORk8pCiAjaW5jbHVkZSAiV2ViTmV0d29y
a0luZm9NYW5hZ2VyTWVzc2FnZXMuaCIKICNlbmRpZgpAQCAtNzkxLDYgKzc5NSwyNiBAQCBXZWJQ
YWdlR3JvdXBQcm94eSogV2ViUHJvY2Vzczo6d2ViUGFnZUdyb3VwKGNvbnN0IFdlYlBhZ2VHcm91
cERhdGEmIHBhZ2VHcm91cERhdAogICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3ItPnNlY29uZC5n
ZXQoKTsKIH0KIAorI2lmIEVOQUJMRShXRUJfSU5URU5UUykKK3VpbnQ2NF90IFdlYlByb2Nlc3M6
OmFkZE1lc3NhZ2VQb3J0Q2hhbm5lbChQYXNzUmVmUHRyPFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFu
bmVsPiBtZXNzYWdlUG9ydENoYW5uZWwpCit7CisgICAgc3RhdGljIHVpbnQ2NF90IGNoYW5uZWxJ
RCA9IDA7CisgICAgbV9tZXNzYWdlUG9ydENoYW5uZWxzLmFkZCgrK2NoYW5uZWxJRCwgbWVzc2Fn
ZVBvcnRDaGFubmVsKTsKKworICAgIHJldHVybiBjaGFubmVsSUQ7Cit9CisKK1BsYXRmb3JtTWVz
c2FnZVBvcnRDaGFubmVsKiBXZWJQcm9jZXNzOjptZXNzYWdlUG9ydENoYW5uZWwodWludDY0X3Qg
Y2hhbm5lbElEKQoreworICAgIHJldHVybiBtX21lc3NhZ2VQb3J0Q2hhbm5lbHMuZ2V0KGNoYW5u
ZWxJRCkuZ2V0KCk7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzczo6cmVtb3ZlTWVzc2FnZVBvcnRDaGFu
bmVsKHVpbnQ2NF90IGNoYW5uZWxJRCkKK3sKKyAgICBtX21lc3NhZ2VQb3J0Q2hhbm5lbHMucmVt
b3ZlKGNoYW5uZWxJRCk7Cit9CisjZW5kaWYKKwogc3RhdGljIGJvb2wgY2FuUGx1Z2luSGFuZGxl
UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgU3RyaW5n
IHBsdWdpblBhdGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IDBk
MDA1YTQuLmQzZGYxYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBA
IC03OCw2ICs3OCw5IEBAIFFUX0VORF9OQU1FU1BBQ0UKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICBjbGFzcyBJbnRTaXplOwogICAgIGNsYXNzIFBhZ2VHcm91cDsKKyNpZiBFTkFCTEUoV0VCX0lO
VEVOVFMpCisgICAgY2xhc3MgUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw7CisjZW5kaWYKICAg
ICBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiAgICAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIH0K
QEAgLTExMiw3ICsxMTUsMTMgQEAgcHVibGljOgogICAgIHZvaWQgY3JlYXRlV2ViUGFnZSh1aW50
NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmKTsKICAgICB2b2lk
IHJlbW92ZVdlYlBhZ2UodWludDY0X3QgcGFnZUlEKTsKICAgICBXZWJQYWdlKiBmb2N1c2VkV2Vi
UGFnZSgpIGNvbnN0OwotICAgIAorCisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKSAKKyAgICB1aW50
NjRfdCBhZGRNZXNzYWdlUG9ydENoYW5uZWwoUGFzc1JlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybU1l
c3NhZ2VQb3J0Q2hhbm5lbD4pOworICAgIFdlYkNvcmU6OlBsYXRmb3JtTWVzc2FnZVBvcnRDaGFu
bmVsKiBtZXNzYWdlUG9ydENoYW5uZWwodWludDY0X3QpOworICAgIHZvaWQgcmVtb3ZlTWVzc2Fn
ZVBvcnRDaGFubmVsKHVpbnQ2NF90KTsKKyNlbmRpZgorCiAgICAgSW5qZWN0ZWRCdW5kbGUqIGlu
amVjdGVkQnVuZGxlKCkgY29uc3QgeyByZXR1cm4gbV9pbmplY3RlZEJ1bmRsZS5nZXQoKTsgfQog
CiAgICAgYm9vbCBpc1NlcGFyYXRlUHJvY2VzcygpIGNvbnN0OwpAQCAtMzAwLDYgKzMwOSwxMCBA
QCBwcml2YXRlOgogCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgV2ViRnJhbWUqPiBtX2ZyYW1lTWFw
OwogCisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0
cjxXZWJDb3JlOjpQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbD4gPiBtX21lc3NhZ2VQb3J0Q2hh
bm5lbHM7CisjZW5kaWYKKwogICAgIEhhc2hTZXQ8U3RyaW5nLCBDYXNlRm9sZGluZ0hhc2g+IG1f
bWltZVR5cGVzV2l0aEN1c3RvbVJlcHJlc2VudGF0aW9uczsKIAogICAgIFRleHRDaGVja2VyU3Rh
dGUgbV90ZXh0Q2hlY2tlclN0YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDBmODNkNWIuLjIyNzE2Y2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTI3LDYg
KzI3LDEwIEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgewogICAgICMgQ3JlYXRlIGEgbmV3IHBh
Z2UuCiAgICAgQ3JlYXRlV2ViUGFnZSh1aW50NjRfdCBuZXdQYWdlSUQsIFdlYktpdDo6V2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycyBwYWdlQ3JlYXRpb25QYXJhbWV0ZXJzKQogCisjaWYgRU5BQkxF
KFdFQl9JTlRFTlRTKQorICAgIFJlbW92ZU1lc3NhZ2VQb3J0Q2hhbm5lbCh1aW50NjRfdCBjaGFu
bmVsSUQpOworI2VuZGlmCisKICAgICAjIFZpc2l0ZWQgbGluayB0cmFja2luZy4KICAgICBTZXRW
aXNpdGVkTGlua1RhYmxlKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlKQogICAg
IFZpc2l0ZWRMaW5rU3RhdGVDaGFuZ2VkKFZlY3RvcjxXZWJDb3JlOjpMaW5rSGFzaD4gbGlua0hh
c2hlcykKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCA1NDRlZmQ2Li40Y2QyZTkxIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTItMDctMzEgIENocmlzdG9waGUgRHVt
ZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKworICAgICAgICBbV0syXSBBZGQgc3Vw
cG9ydCBmb3IgV2ViIEludGVudHMgTWVzc2FnZVBvcnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTA3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBXS0J1bmRsZUludGVudCBpbnN0ZWFkIG9mIFdl
YkludGVudERhdGEgaW4KKyAgICAgICAgV2ViS2l0VGVzdFJ1bm5lci4gV1RSIG5vdyBwcmludHMg
dGhlIG51bWJlciBvZgorICAgICAgICBNZXNzYWdlUG9ydHMgaW4gcmVjZWl2ZWQgV2ViIGludGVu
dHMgYXMKKyAgICAgICAgZXhwZWN0ZWQgYnkgd2ViaW50ZW50cy8qIGxheW91dCB0ZXN0cy4KKwor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRSZWNlaXZlSW50
ZW50Rm9yRnJhbWUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
TGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpMYXlvdXRUZXN0Q29udHJv
bGxlcjo6ZGVsaXZlcldlYkludGVudCk6CisKIDIwMTItMDctMzAgIFJ5b3N1a2UgTml3YSAgPHJu
aXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2ZXJ0IHIxMjQxNTMgYW5kIGxhbmQgdGhlICJy
aWdodCIgYnVpbGQgZml4IHBlciBhcCdzIGNvbW1lbnQgb24gdGhlIGJ1ZyA5MjY3Ni4KZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlLmNwcAppbmRleCAxNjM3MWQxLi4xZWJjMmYwIDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2UuY3BwCkBAIC01MCw4ICs1MCw4IEBACiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfSU5U
RU5UUykKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlSW50ZW50Lmg+CiAjaW5jbHVkZSA8V2Vi
S2l0Mi9XS0J1bmRsZUludGVudFJlcXVlc3QuaD4KLSNpbmNsdWRlIDxXZWJLaXQyL1dLSW50ZW50
RGF0YS5oPgogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTX1RBRykKICNpbmNsdWRlIDxX
ZWJLaXQyL1dLSW50ZW50U2VydmljZUluZm8uaD4KQEAgLTQzMCwxOSArNDMwLDI0IEBAIHZvaWQg
SW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWUoV0tCdW5kbGVQYWdl
UmVmIHBhZ2UsIFdLQnVuZGxlCiB7CiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQogICAgIHN0YXRp
Y19jYXN0PEluamVjdGVkQnVuZGxlUGFnZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8p
KS0+bV9jdXJyZW50SW50ZW50UmVxdWVzdCA9IGludGVudFJlcXVlc3Q7Ci0gICAgV0tSZXRhaW5Q
dHI8V0tJbnRlbnREYXRhUmVmPiBpbnRlbnQoQWRvcHRXSywgV0tCdW5kbGVJbnRlbnRSZXF1ZXN0
Q29weUludGVudERhdGEoaW50ZW50UmVxdWVzdCkpOworICAgIFdLUmV0YWluUHRyPFdLQnVuZGxl
SW50ZW50UmVmPiBpbnRlbnQoQWRvcHRXSywgV0tCdW5kbGVJbnRlbnRSZXF1ZXN0Q29weUludGVu
dChpbnRlbnRSZXF1ZXN0KSk7CiAKICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5n
QnVpbGRlcigpLT5hcHBlbmQoIlJlY2VpdmVkIFdlYiBJbnRlbnQ6IGFjdGlvbj0iKTsKLSAgICBX
S1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tBY3Rpb24oQWRvcHRXSywgV0tJbnRlbnREYXRhQ29w
eUFjdGlvbihpbnRlbnQuZ2V0KCkpKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tB
Y3Rpb24oQWRvcHRXSywgV0tCdW5kbGVJbnRlbnRDb3B5QWN0aW9uKGludGVudC5nZXQoKSkpOwog
ICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCh0b1dU
RlN0cmluZyh3a0FjdGlvbi5nZXQoKSkpOwogICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5z
dHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiIHR5cGU9Iik7Ci0gICAgV0tSZXRhaW5QdHI8V0tTdHJp
bmdSZWY+IHdrVHlwZShBZG9wdFdLLCBXS0ludGVudERhdGFDb3B5VHlwZShpbnRlbnQuZ2V0KCkp
KTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tUeXBlKEFkb3B0V0ssIFdLQnVuZGxl
SW50ZW50Q29weVR5cGUoaW50ZW50LmdldCgpKSk7CiAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJl
ZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKHRvV1RGU3RyaW5nKHdrVHlwZS5nZXQoKSkpOwog
ICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiXG4i
KTsKIAotICAgIC8vIEZJWE1FOiBQcmludCBudW1iZXIgb2YgcG9ydHMgd2hlbiBleHBvc2VkIGlu
IFdlYktpdDIKKyAgICBjb25zdCBzaXplX3QgbnVtTWVzc2FnZVBvcnRzID0gV0tCdW5kbGVJbnRl
bnRNZXNzYWdlUG9ydENvdW50KGludGVudC5nZXQoKSk7CisgICAgaWYgKG51bU1lc3NhZ2VQb3J0
cykgeworICAgICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5h
cHBlbmQoIkhhdmUgIik7CisgICAgICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdC
dWlsZGVyKCktPmFwcGVuZChXVEY6OlN0cmluZzo6bnVtYmVyKG51bU1lc3NhZ2VQb3J0cykpOwor
ICAgICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQo
IiBwb3J0c1xuIik7CisgICAgfQogCi0gICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IHdrU2Vydmlj
ZVVybChBZG9wdFdLLCBXS0ludGVudERhdGFDb3B5U2VydmljZShpbnRlbnQuZ2V0KCkpKTsKKyAg
ICBXS1JldGFpblB0cjxXS1VSTFJlZj4gd2tTZXJ2aWNlVXJsKEFkb3B0V0ssIFdLQnVuZGxlSW50
ZW50Q29weVNlcnZpY2UoaW50ZW50LmdldCgpKSk7CiAgICAgaWYgKHdrU2VydmljZVVybCkgewog
ICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tTZXJ2aWNlKEFkb3B0V0ssIFdLVVJM
Q29weVN0cmluZyh3a1NlcnZpY2VVcmwuZ2V0KCkpKTsKICAgICAgICAgaWYgKHdrU2VydmljZSAm
JiAhV0tTdHJpbmdJc0VtcHR5KHdrU2VydmljZS5nZXQoKSkpIHsKQEAgLTQ1Miw3ICs0NTcsNyBA
QCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKFdLQnVu
ZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZQogICAgICAgICB9CiAgICAgfQogCi0gICAgV0tSZXRh
aW5QdHI8V0tEaWN0aW9uYXJ5UmVmPiB3a0V4dHJhcyhBZG9wdFdLLCBXS0ludGVudERhdGFDb3B5
RXh0cmFzKGludGVudC5nZXQoKSkpOworICAgIFdLUmV0YWluUHRyPFdLRGljdGlvbmFyeVJlZj4g
d2tFeHRyYXMoQWRvcHRXSywgV0tCdW5kbGVJbnRlbnRDb3B5RXh0cmFzKGludGVudC5nZXQoKSkp
OwogICAgIFdLUmV0YWluUHRyPFdLQXJyYXlSZWY+IHdrRXh0cmFLZXlzKEFkb3B0V0ssIFdLRGlj
dGlvbmFyeUNvcHlLZXlzKHdrRXh0cmFzLmdldCgpKSk7CiAgICAgY29uc3Qgc2l6ZV90IG51bUV4
dHJhS2V5cyA9IFdLQXJyYXlHZXRTaXplKHdrRXh0cmFLZXlzLmdldCgpKTsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG51bUV4dHJhS2V5czsgKytpKSB7CkBAIC00NjUsNyArNDcwLDcgQEAg
dm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZShXS0J1bmRs
ZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGUKICAgICAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgp
LnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKCJcbiIpOwogICAgIH0KIAotICAgIFdLUmV0YWluUHRy
PFdLQXJyYXlSZWY+IHdrU3VnZ2VzdGlvbnMoQWRvcHRXSywgV0tJbnRlbnREYXRhQ29weVN1Z2dl
c3Rpb25zKGludGVudC5nZXQoKSkpOworICAgIFdLUmV0YWluUHRyPFdLQXJyYXlSZWY+IHdrU3Vn
Z2VzdGlvbnMoQWRvcHRXSywgV0tCdW5kbGVJbnRlbnRDb3B5U3VnZ2VzdGlvbnMoaW50ZW50Lmdl
dCgpKSk7CiAgICAgY29uc3Qgc2l6ZV90IG51bVN1Z2dlc3Rpb25zID0gV0tBcnJheUdldFNpemUo
d2tTdWdnZXN0aW9ucy5nZXQoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1TdWdn
ZXN0aW9uczsgKytpKSB7CiAgICAgICAgIFdLU3RyaW5nUmVmIHdrU3VnZ2VzdGlvbiA9IHN0YXRp
Y19jYXN0PFdLU3RyaW5nUmVmPihXS0FycmF5R2V0SXRlbUF0SW5kZXgod2tTdWdnZXN0aW9ucy5n
ZXQoKSwgaSkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCAzMzc2ZWQwLi43NjBk
NDkwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xh
eW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcApAQCAtNDksOCArNDksOCBAQAogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogI2lmIEVOQUJMRShXRUJfSU5URU5U
UykKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlSW50ZW50Lmg+CiAjaW5jbHVkZSA8V2ViS2l0
Mi9XS0J1bmRsZUludGVudFJlcXVlc3QuaD4KLSNpbmNsdWRlIDxXZWJLaXQyL1dLSW50ZW50RGF0
YS5oPgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXVFIgewpAQCAtNjQ5LDggKzY0OSw4IEBAIHZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OmRlbGl2ZXJXZWJJbnRlbnQoSlNTdHJpbmdSZWYgYWN0aW9u
LCBKU1N0cmluZ1JlZiB0eXBlCiAgICAgV0tEaWN0aW9uYXJ5QWRkSXRlbShpbnRlbnRJbml0RGlj
dC5nZXQoKSwgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoInR5cGUiKSwgdHlwZVdLLmdl
dCgpKTsKICAgICBXS0RpY3Rpb25hcnlBZGRJdGVtKGludGVudEluaXREaWN0LmdldCgpLCBXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiZGF0YSIpLCBkYXRhV0suZ2V0KCkpOwogCi0gICAg
V0tSZXRhaW5QdHI8V0tJbnRlbnREYXRhUmVmPiB3a0ludGVudERhdGEoQWRvcHRXSywgV0tJbnRl
bnREYXRhQ3JlYXRlKGludGVudEluaXREaWN0LmdldCgpKSk7Ci0gICAgV0tCdW5kbGVQYWdlRGVs
aXZlckludGVudFRvRnJhbWUoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgp
LCBtYWluRnJhbWUsIHdrSW50ZW50RGF0YS5nZXQoKSk7CisgICAgV0tSZXRhaW5QdHI8V0tCdW5k
bGVJbnRlbnRSZWY+IHdrSW50ZW50KEFkb3B0V0ssIFdLQnVuZGxlSW50ZW50Q3JlYXRlKGludGVu
dEluaXREaWN0LmdldCgpKSk7CisgICAgV0tCdW5kbGVQYWdlRGVsaXZlckludGVudFRvRnJhbWUo
SW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgpLCBtYWluRnJhbWUsIHdrSW50
ZW50LmdldCgpKTsKICNlbmRpZgogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155615</attachid>
            <date>2012-07-31 13:11:29 -0700</date>
            <delta_ts>2012-08-02 13:39:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>89072_wk2_messagePorts.patch</filename>
            <type>text/plain</type>
            <size>68940</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKaW5kZXggYTk1ZWJhMS4uNjNjZjk0ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0
cy50eHQKQEAgLTU0LDYgKzU0LDcgQEAgU0VUKFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwog
ICAgICIke1dFQkNPUkVfRElSfS9icmlkZ2UvanNjIgogICAgICIke1dFQkNPUkVfRElSfS9jc3Mi
CiAgICAgIiR7V0VCQ09SRV9ESVJ9L2RvbSIKKyAgICAiJHtXRUJDT1JFX0RJUn0vZG9tL2RlZmF1
bHQiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2VkaXRpbmciCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2hp
c3RvcnkiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2h0bWwiCkBAIC0xNTksNyArMTYwLDYgQEAgU0VU
KFdlYktpdDJfU09VUkNFUwogICAgIFNoYXJlZC9XZWJHcmFwaGljc0NvbnRleHQuY3BwCiAgICAg
U2hhcmVkL1dlYkhpdFRlc3RSZXN1bHQuY3BwCiAgICAgU2hhcmVkL1dlYkltYWdlLmNwcAotICAg
IFNoYXJlZC9XZWJJbnRlbnREYXRhLmNwcAogICAgIFNoYXJlZC9XZWJJbnRlbnRTZXJ2aWNlSW5m
by5jcHAKICAgICBTaGFyZWQvV2ViS2V5Ym9hcmRFdmVudC5jcHAKICAgICBTaGFyZWQvV2ViTGF5
ZXJUcmVlSW5mby5jcHAKQEAgLTI1Myw2ICsyNTMsNyBAQCBTRVQoV2ViS2l0Ml9TT1VSQ0VTCiAg
ICAgVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5jcHAKICAgICBVSVByb2Nlc3MvV2ViSWNvbkRh
dGFiYXNlQ2xpZW50LmNwcAogICAgIFVJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKKyAg
ICBVSVByb2Nlc3MvV2ViSW50ZW50RGF0YS5jcHAKICAgICBVSVByb2Nlc3MvV2ViS2V5VmFsdWVT
dG9yYWdlTWFuYWdlclByb3h5LmNwcAogICAgIFVJUHJvY2Vzcy9XZWJMYXllclRyZWVSZW5kZXJl
ci5jcHAKICAgICBVSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmNwcApAQCAtMzcxLDYgKzM3Miw3
IEBAIFNFVChXZWJLaXQyX1NPVVJDRVMKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlQ2xpZW50LmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3BwCisgICAgV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudC5jcHAKICAgICBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5jcHAKICAgICBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAKICAg
ICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZURpYWdub3N0aWNM
b2dnaW5nQ2xpZW50LmNwcApAQCAtMzkxLDYgKzM5Myw3IEBAIFNFVChXZWJLaXQyX1NPVVJDRVMK
ICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwCiAg
ICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUhpdFRlc3RSZXN1bHQu
Y3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUluc3BlY3Rv
ci5jcHAKKyAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50
LmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnRS
ZXF1ZXN0LmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVO
YXZpZ2F0aW9uQWN0aW9uLmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVOb2RlSGFuZGxlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGZlMDJiN2IuLmNkOTM2MDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMjYgQEAKKzIwMTItMDctMzEgIENocmlzdG9waGUgRHVtZXog
IDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKworICAgICAgICBbV0syXSBBZGQgc3VwcG9y
dCBmb3IgV2ViIEludGVudHMgTWVzc2FnZVBvcnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTA3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBXZWJJbnRlbnRzIE1lc3NhZ2VQ
b3J0cyBpbiBXZWJLaXQyLgorICAgICAgICBNZXNzYWdlUG9ydHMgY2FuIGJlIHBhc3NlZCB3aXRo
IGEgV2ViIEludGVudCBpbgorICAgICAgICBvcmRlciB0byBvcGVuIGEgZGlyZWN0IGNvbW11bmlj
YXRpb24gY2hhbm5lbAorICAgICAgICBiZXR3ZWVuIHRoZSBXZWIgYXBwbGljYXRpb24gYW5kIHRo
ZSBpbnRlbnQgc2VydmljZS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBuZXcg
SW5qZWN0ZWRCdW5kbGVJbnRlbnQKKyAgICAgICAgY2xhc3Mgd2hpY2ggd3JhcHMgYSBXZWJDb3Jl
OjpJbnRlbnQuIFRoaXMgd2F5CisgICAgICAgIGluZm9ybWF0aW9uIHJlZ2FyZGluZyB0aGUgTWVz
c2FnZVBvcnRzIGluIGEgV2ViCisgICAgICAgIEludGVudCBpcyBrZXB0IHdoZW4gdXNpbmcgYW4g
aW5qZWN0ZWQgYnVuZGxlLgorCisgICAgICAgIEZvciB0aGUgVUlQcm9jZXNzLCBXZWJJbnRlbnRE
YXRhIG5vdyBjYXJyaWVzCisgICAgICAgIGlkZW50aWZpZXJzIGZvciB0aGUgTWVzc2FnZVBvcnRz
IHdoaWNoIGNhbiBnbyBvdmVyCisgICAgICAgIElQQy4gVGhvc2UgaWRlbnRpZmllcnMgbWFwIHRv
IGFjdHVhbCBNZXNzYWdlUG9ydHMKKyAgICAgICAgc3RvcmVkIGluIHRoZSBXZWIgcHJvY2Vzcy4g
VGhpcyB3YXksIHdoZW4gdGhlIFVJCisgICAgICAgIGRlbGl2ZXJzIGFuIGludGVudCB0byBhIGZy
YW1lLCB3ZSBjYW4gZ2V0IGJhY2sgdGhlCisgICAgICAgIGNvcnJlc3BvbmRpbmcgTWVzc2FnZVBv
cnRzIGZyb20gdGhlIFdlYiBwcm9jZXNzCisgICAgICAgIGJlZm9yZSBkZWxpdmVyaW5nIHRvIHRo
ZSBET01XaW5kb3cuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVt
YWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0Jhc2UuaDoKKyAgICAg
ICAgKiBTaGFyZWQvQVBJT2JqZWN0Lmg6CisgICAgICAgICogU2hhcmVkL0ludGVudERhdGEuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpJbnRlbnREYXRhOjpJbnRlbnREYXRhKToKKyAgICAgICAgKFdl
YktpdDo6SW50ZW50RGF0YTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6SW50ZW50RGF0YTo6
ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvSW50ZW50RGF0YS5oOgorICAgICAgICAoSW50ZW50
RGF0YSk6CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
V0tJbnRlbnREYXRhLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tJbnRlbnREYXRh
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkludGVudERhdGEuY3BwOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSW50ZW50RGF0YS5jcHAuCisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJJbnRlbnREYXRhOjpXZWJJbnRlbnREYXRhKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSW50ZW50RGF0YTo6fldlYkludGVudERhdGEpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnRlbnREYXRhOjpkYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW50ZW50RGF0
YTo6c3VnZ2VzdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnRlbnREYXRhOjpleHRyYSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkludGVudERhdGE6OmV4dHJhcyk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYkludGVudERhdGEuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYkludGVudERhdGEuaC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJJbnRlbnRE
YXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW50ZW50RGF0YTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViSW50ZW50RGF0YTo6YWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW50
ZW50RGF0YTo6cGF5bG9hZFR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnRlbnREYXRhOjpz
ZXJ2aWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW50ZW50RGF0YTo6c3RvcmUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJbnRlbnREYXRhOjp0eXBlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRSZWNlaXZl
SW50ZW50Rm9yRnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnJlbW92ZU1lc3NhZ2VQb3J0Q2hh
bm5lbCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuaDoKKyAgICAgICAgKFdlYlByb2Nlc3NQcm94eSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUFQSUNhc3QuaDoKKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUlu
dGVudC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0lu
dGVudERhdGEuY3BwLgorICAgICAgICAoV0tCdW5kbGVJbnRlbnRHZXRUeXBlSUQpOgorICAgICAg
ICAoV0tCdW5kbGVJbnRlbnRDcmVhdGUpOgorICAgICAgICAoV0tCdW5kbGVJbnRlbnRDb3B5QWN0
aW9uKToKKyAgICAgICAgKFdLQnVuZGxlSW50ZW50Q29weVR5cGUpOgorICAgICAgICAoV0tCdW5k
bGVJbnRlbnRDb3B5U2VydmljZSk6CisgICAgICAgIChXS0J1bmRsZUludGVudENvcHlTdWdnZXN0
aW9ucyk6CisgICAgICAgIChXS0J1bmRsZUludGVudENvcHlFeHRyYSk6CisgICAgICAgIChXS0J1
bmRsZUludGVudENvcHlFeHRyYXMpOgorICAgICAgICAoV0tCdW5kbGVJbnRlbnRNZXNzYWdlUG9y
dENvdW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlSW50ZW50Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S0ludGVudERhdGEuaC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlSW50ZW50UmVxdWVzdC5jcHA6CisgICAgICAgIChXS0J1bmRsZUludGVudFJlcXVl
c3RDb3B5SW50ZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlSW50ZW50UmVxdWVzdC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdLQnVuZGxlUGFnZURlbGl2
ZXJJbnRlbnRUb0ZyYW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVJbnRlbnQuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYkludGVudERhdGEuY3BwLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktp
dDo6SW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVj
dGVkQnVuZGxlSW50ZW50OjpJbmplY3RlZEJ1bmRsZUludGVudCk6CisgICAgICAgIChXZWJLaXQ6
OkluamVjdGVkQnVuZGxlSW50ZW50OjphY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJbmplY3Rl
ZEJ1bmRsZUludGVudDo6cGF5bG9hZFR5cGUpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1
bmRsZUludGVudDo6c2VydmljZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlSW50
ZW50OjpkYXRhKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OmV4dHJh
KToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OmV4dHJhcyk6CisgICAg
ICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlSW50ZW50OjpzdWdnZXN0aW9ucyk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudC5oOiBSZW5h
bWVkIGZyb20gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkludGVudERhdGEuaC4KKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgIChJbmplY3RlZEJ1bmRsZUludGVudCk6CisgICAgICAgIChXZWJL
aXQ6OkluamVjdGVkQnVuZGxlSW50ZW50Ojpjb3JlSW50ZW50KToKKyAgICAgICAgKFdlYktpdDo6
SW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OnR5cGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6SW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0OjppbnRlbnQpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0Lmg6CisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJGcmFtZTo6ZGVsaXZlckludGVudCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJGcmFtZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGVsaXZlckNv
cmVJbnRlbnRUb0ZyYW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJQYWdlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjphZGRN
ZXNzYWdlUG9ydENoYW5uZWwpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzczo6bWVzc2FnZVBvcnRDaGFubmVsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzczo6cmVtb3ZlTWVzc2FnZVBvcnRDaGFubmVsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaDoKKyAgICAgICAgKFdlYlByb2Nlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKwogMjAxMi0wNy0zMCAgSHVhbmcgRG9uZ3N1bmcgIDxs
dXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBbVGV4bWFwXSBSZW1vdmUgdGhlIGJh
Y2tpbmcgc3RvcmUgYWZ0ZXIgJ3N0eWxlLnZpc2liaWxpdHknIGZvciBhbiBlbGVtZW50IHNldHMg
J2hpZGRlbicuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFt
IGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBlN2E2NGYwLi5lZDhj
MDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBi
L1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTQ2OSw4ICs0NjksNiBAQCB3
ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJIaXRUZXN0UmVz
dWx0LmggXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJJbWFnZS5jcHAgXAogCVNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJJbWFnZS5oIFwKLQlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSW50
ZW50RGF0YS5jcHAgXAotCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJJbnRlbnREYXRhLmggXAog
CVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJJbnRlbnRTZXJ2aWNlSW5mby5jcHAgXAogCVNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJJbnRlbnRTZXJ2aWNlSW5mby5oIFwKIAlTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViS2V5Ym9hcmRFdmVudC5jcHAgXApAQCAtODcxLDYgKzg2OSw4IEBAIHdlYmtp
dDJfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkljb25EYXRhYmFz
ZUNsaWVudC5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHku
Y3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuaCBcCisJ
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkludGVudERhdGEuY3BwIFwKKwlTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViSW50ZW50RGF0YS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViS2V5VmFsdWVTdG9yYWdlTWFuYWdlclByb3h5LmNwcCBcCiAJU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYktleVZhbHVlU3RvcmFnZU1hbmFnZXJQcm94eS5oIFwKIAlTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eS5jcHAgXApAQCAtOTY0LDYg
Kzk2NCw4IEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUluaXRpYWxpemUuaCBcCiAJU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUluc3BlY3Rvci5j
cHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVJbnNwZWN0b3IuaCBcCisJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudC5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnQuaCBcCiAJU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudFJlcXVlc3Qu
Y3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlSW50ZW50UmVxdWVzdC5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlTm9kZUhhbmRsZS5jcHAgXApAQCAtOTk4LDYgKzEwMDAs
OCBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uaCBcCiAJU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RS
ZXN1bHQuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50LmNwcCBcCisJU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudC5oIFwKIAlT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50
ZW50UmVxdWVzdC5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0LmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKaW5kZXggNjg1NGVjYy4uYTZhOGJkNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaApAQCAtMTM1LDYgKzEzNSw3IEBAIHR5
cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uKiBXS0J1
bmRsZURPTVdpbmRvd0V4dGVuc2lvCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRs
ZUZyYW1lKiBXS0J1bmRsZUZyYW1lUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tC
dW5kbGVIaXRUZXN0UmVzdWx0KiBXS0J1bmRsZUhpdFRlc3RSZXN1bHRSZWY7CiB0eXBlZGVmIGNv
bnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRsZUluc3BlY3RvciogV0tCdW5kbGVJbnNwZWN0b3JSZWY7
Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRsZUludGVudCogV0tCdW5kbGVJbnRl
bnRSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRsZUludGVudFJlcXVlc3Qq
IFdLQnVuZGxlSW50ZW50UmVxdWVzdFJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdL
QnVuZGxlTmF2aWdhdGlvbkFjdGlvbiogV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uUmVmOwogdHlw
ZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVOb2RlSGFuZGxlKiBXS0J1bmRsZU5vZGVI
YW5kbGVSZWY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKaW5kZXggOGU0ZDI5My4uNzA4ZWZm
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaApAQCAtMTE3LDYgKzExNyw3IEBAIHB1Ymxp
YzoKICAgICAgICAgVHlwZUJ1bmRsZUZyYW1lLAogICAgICAgICBUeXBlQnVuZGxlSGl0VGVzdFJl
c3VsdCwKICAgICAgICAgVHlwZUJ1bmRsZUluc3BlY3RvciwKKyAgICAgICAgVHlwZUJ1bmRsZUlu
dGVudCwKICAgICAgICAgVHlwZUJ1bmRsZUludGVudFJlcXVlc3QsCiAgICAgICAgIFR5cGVCdW5k
bGVOYXZpZ2F0aW9uQWN0aW9uLAogICAgICAgICBUeXBlQnVuZGxlTm9kZUhhbmRsZSwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9JbnRlbnREYXRhLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9JbnRlbnREYXRhLmNwcAppbmRleCA0OTk1YjJlLi40MTA3ODc0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW50ZW50RGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL0ludGVudERhdGEuY3BwCkBAIC0zMSw3ICszMSwxMCBAQAogI2luY2x1ZGUg
IkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJXZWJD
b3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9JbnRlbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01lc3NhZ2VQb3J0Q2hhbm5lbC5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuaD4KIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTQ1LDYgKzQ4LDEyIEBAIEludGVudERhdGE6Oklu
dGVudERhdGEoSW50ZW50KiBjb3JlSW50ZW50KQogICAgICwgZXh0cmFzKGNvcmVJbnRlbnQtPmV4
dHJhcygpKQogICAgICwgc3VnZ2VzdGlvbnMoY29yZUludGVudC0+c3VnZ2VzdGlvbnMoKSkKIHsK
KyAgICBNZXNzYWdlUG9ydENoYW5uZWxBcnJheSogY29yZU1lc3NhZ2VQb3J0cyA9IGNvcmVJbnRl
bnQtPm1lc3NhZ2VQb3J0cygpOworICAgIGlmIChjb3JlTWVzc2FnZVBvcnRzKSB7CisgICAgICAg
IHNpemVfdCBudW1NZXNzYWdlUG9ydHMgPSBjb3JlTWVzc2FnZVBvcnRzLT5zaXplKCk7CisgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtTWVzc2FnZVBvcnRzOyArK2kpCisgICAgICAg
ICAgICBtZXNzYWdlUG9ydHMuYXBwZW5kKFdlYlByb2Nlc3M6OnNoYXJlZCgpLmFkZE1lc3NhZ2VQ
b3J0Q2hhbm5lbCgoKmNvcmVNZXNzYWdlUG9ydHMpW2ldLT5jaGFubmVsKCkpKTsKKyAgICB9CiB9
CiAKIHZvaWQgSW50ZW50RGF0YTo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciogZW5j
b2RlcikgY29uc3QKQEAgLTU1LDYgKzY0LDcgQEAgdm9pZCBJbnRlbnREYXRhOjplbmNvZGUoQ29y
ZUlQQzo6QXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXItPmVuY29k
ZShDb3JlSVBDOjpEYXRhUmVmZXJlbmNlKGRhdGEpKTsKICAgICBlbmNvZGVyLT5lbmNvZGUoZXh0
cmFzKTsKICAgICBlbmNvZGVyLT5lbmNvZGUoc3VnZ2VzdGlvbnMpOworICAgIGVuY29kZXItPmVu
Y29kZShtZXNzYWdlUG9ydHMpOwogfQogCiBib29sIEludGVudERhdGE6OmRlY29kZShDb3JlSVBD
OjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIEludGVudERhdGEmIGludGVudERhdGEpCkBAIC03
Myw2ICs4Myw4IEBAIGJvb2wgSW50ZW50RGF0YTo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVj
b2RlciogZGVjb2RlciwgSW50ZW50RGF0YSYgaW50ZW50RGF0CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBpZiAoIWRlY29kZXItPmRlY29kZShpbnRlbnREYXRhLnN1Z2dlc3Rpb25zKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGludGVudERhdGEu
bWVzc2FnZVBvcnRzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIHRydWU7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW50ZW50RGF0YS5oIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL0ludGVudERhdGEuaAppbmRleCA5NmUyZDlmLi5lODQzNWMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW50ZW50RGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9JbnRlbnREYXRhLmgKQEAgLTI5LDcgKzI5LDggQEAKICNpZiBFTkFC
TEUoV0VCX0lOVEVOVFMpCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKLSNpbmNsdWRlICJHZW5l
cmljQ2FsbGJhY2suaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KKyNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2Ug
Q29yZUlQQyB7CkBAIC01Niw2ICs1Nyw3IEBAIHN0cnVjdCBJbnRlbnREYXRhIHsKICAgICBWZWN0
b3I8dWludDhfdD4gZGF0YTsKICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBleHRyYXM7CiAg
ICAgVmVjdG9yPFdlYkNvcmU6OktVUkw+IHN1Z2dlc3Rpb25zOworICAgIFZlY3Rvcjx1aW50NjRf
dD4gbWVzc2FnZVBvcnRzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSW50ZW50RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViSW50ZW50RGF0YS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDk2MTI4ZGIuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkludGVudERh
dGEuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkludGVudERhdGEuaCIKLQotI2lm
IEVOQUJMRShXRUJfSU5URU5UUykKLQotI2luY2x1ZGUgIkltbXV0YWJsZUFycmF5LmgiCi0jaW5j
bHVkZSAiSW1tdXRhYmxlRGljdGlvbmFyeS5oIgotI2luY2x1ZGUgIldlYlN0cmluZy5oIgotI2lu
Y2x1ZGUgIldlYlVSTC5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotV2ViSW50ZW50RGF0YTo6
V2ViSW50ZW50RGF0YShjb25zdCBJbnRlbnREYXRhJiBzdG9yZSkKLSAgICA6IG1fc3RvcmUoc3Rv
cmUpCi17Ci19Ci0KLVBhc3NSZWZQdHI8V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlPiBXZWJJbnRl
bnREYXRhOjpkYXRhKCkgY29uc3QKLXsKLSAgICBWZWN0b3I8dWludDhfdD4gZGF0YUNvcHkgPSBt
X3N0b3JlLmRhdGE7Ci0gICAgcmV0dXJuIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQo
ZGF0YUNvcHkpOwotfQotCi1QYXNzUmVmUHRyPEltbXV0YWJsZUFycmF5PiBXZWJJbnRlbnREYXRh
OjpzdWdnZXN0aW9ucygpIGNvbnN0Ci17Ci0gICAgY29uc3Qgc2l6ZV90IG51bVN1Z2dlc3Rpb25z
ID0gbV9zdG9yZS5zdWdnZXN0aW9ucy5zaXplKCk7Ci0gICAgVmVjdG9yPFJlZlB0cjxBUElPYmpl
Y3Q+ID4gd2tTdWdnZXN0aW9ucyhudW1TdWdnZXN0aW9ucyk7Ci0gICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG51bVN1Z2dlc3Rpb25zOyArK2kpCi0gICAgICAgIHdrU3VnZ2VzdGlvbnNbaV0g
PSBXZWJVUkw6OmNyZWF0ZShtX3N0b3JlLnN1Z2dlc3Rpb25zW2ldKTsKLSAgICByZXR1cm4gSW1t
dXRhYmxlQXJyYXk6OmFkb3B0KHdrU3VnZ2VzdGlvbnMpOwotfQotCi1TdHJpbmcgV2ViSW50ZW50
RGF0YTo6ZXh0cmEoY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc3Rv
cmUuZXh0cmFzLmdldChrZXkpOwotfQotCi1QYXNzUmVmUHRyPEltbXV0YWJsZURpY3Rpb25hcnk+
IFdlYkludGVudERhdGE6OmV4dHJhcygpIGNvbnN0Ci17Ci0gICAgSW1tdXRhYmxlRGljdGlvbmFy
eTo6TWFwVHlwZSB3a0V4dHJhczsKLSAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPjo6Y29uc3Rf
aXRlcmF0b3IgZW5kID0gbV9zdG9yZS5leHRyYXMuZW5kKCk7Ci0gICAgZm9yIChIYXNoTWFwPFN0
cmluZywgU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3N0b3JlLmV4dHJhcy5iZWdpbigp
OyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIHdrRXh0cmFzLnNldChpdC0+Zmlyc3QsIFdlYlN0
cmluZzo6Y3JlYXRlKGl0LT5zZWNvbmQpKTsKLSAgICByZXR1cm4gSW1tdXRhYmxlRGljdGlvbmFy
eTo6YWRvcHQod2tFeHRyYXMpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlm
IC8vIEVOQUJMRShXRUJfSU5URU5UUykKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYkludGVudERhdGEuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJJbnRlbnREYXRh
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlY2Y0YWUuLjAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkludGVudERhdGEuaAorKysgL2Rldi9udWxsCkBAIC0x
LDcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24u
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViSW50ZW50RGF0YV9o
Ci0jZGVmaW5lIFdlYkludGVudERhdGFfaAotCi0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotCi0j
aW5jbHVkZSAiQVBJT2JqZWN0LmgiCi0jaW5jbHVkZSAiSW50ZW50RGF0YS5oIgotI2luY2x1ZGUg
IldlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJJbnRlbnREYXRhIDogcHVibGljIEFQ
SU9iamVjdCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0IFR5cGUgQVBJVHlwZSA9IFR5cGVJ
bnRlbnREYXRhOwotCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViSW50ZW50RGF0YT4gY3JlYXRl
KGNvbnN0IEludGVudERhdGEmIHN0b3JlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBXZWJJbnRlbnREYXRhKHN0b3JlKSk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+V2ViSW50
ZW50RGF0YSgpIHsgfQotCi0gICAgY29uc3QgU3RyaW5nJiBhY3Rpb24oKSBjb25zdCB7IHJldHVy
biBtX3N0b3JlLmFjdGlvbjsgfQotICAgIGNvbnN0IFN0cmluZyYgcGF5bG9hZFR5cGUoKSBjb25z
dCB7IHJldHVybiBtX3N0b3JlLnR5cGU7IH0KLSAgICBjb25zdCBXZWJDb3JlOjpLVVJMJiBzZXJ2
aWNlKCkgY29uc3QgeyByZXR1cm4gbV9zdG9yZS5zZXJ2aWNlOyB9Ci0gICAgUGFzc1JlZlB0cjxX
ZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEoKSBjb25zdDsKLSAgICBTdHJpbmcgZXh0cmEo
Y29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0OwotICAgIFBhc3NSZWZQdHI8SW1tdXRhYmxlRGljdGlv
bmFyeT4gZXh0cmFzKCkgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4gc3Vn
Z2VzdGlvbnMoKSBjb25zdDsKLQotICAgIGNvbnN0IEludGVudERhdGEmIHN0b3JlKCkgY29uc3Qg
eyByZXR1cm4gbV9zdG9yZTsgfQotCi1wcml2YXRlOgotICAgIFdlYkludGVudERhdGEoY29uc3Qg
SW50ZW50RGF0YSYpOwotCi0gICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBB
UElUeXBlOyB9Ci0KLSAgICBJbnRlbnREYXRhIG1fc3RvcmU7Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJfSU5URU5UUykKLQotI2VuZGlmIC8vIFdl
YkludGVudERhdGFfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaSBiL1Nv
dXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKaW5kZXggZWRlYTljNS4uMjA3ZDM0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQu
cHJpCkBAIC0xMTIsNyArMTEyLDYgQEAgSEVBREVSUyArPSBcCiAgICAgU2hhcmVkL1dlYkdyYXBo
aWNzQ29udGV4dC5oIFwKICAgICBTaGFyZWQvV2ViSGl0VGVzdFJlc3VsdC5oIFwKICAgICBTaGFy
ZWQvV2ViSW1hZ2UuaCBcCi0gICAgU2hhcmVkL1dlYkludGVudERhdGEuaCBcCiAgICAgU2hhcmVk
L1dlYkludGVudFNlcnZpY2VJbmZvLmggXAogICAgIFNoYXJlZC9XZWJMYXllclRyZWVJbmZvLmgg
XAogICAgIFNoYXJlZC9XZWJOYXZpZ2F0aW9uRGF0YVN0b3JlLmggXApAQCAtMjY3LDYgKzI2Niw3
IEBAIEhFQURFUlMgKz0gXAogICAgIFVJUHJvY2Vzcy9XZWJJY29uRGF0YWJhc2UuaCBcCiAgICAg
VUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZUNsaWVudC5oIFwKICAgICBVSVByb2Nlc3MvV2ViSW5z
cGVjdG9yUHJveHkuaCBcCisgICAgVUlQcm9jZXNzL1dlYkludGVudERhdGEuaCBcCiAgICAgVUlQ
cm9jZXNzL1dlYktleVZhbHVlU3RvcmFnZU1hbmFnZXJQcm94eS5oIFwKICAgICBVSVByb2Nlc3Mv
V2ViTGF5ZXJUcmVlUmVuZGVyZXIuaCBcCiAgICAgVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5o
IFwKQEAgLTMxOSw2ICszMTksNyBAQCBIRUFERVJTICs9IFwKICAgICBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQmFja0ZvcndhcmRMaXN0LmggXAogICAgIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmggXAog
ICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVIaXRUZXN0UmVzdWx0
LmggXAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnQu
aCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudFJl
cXVlc3QuaCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU5h
dmlnYXRpb25BY3Rpb24uaCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZU5vZGVIYW5kbGUuaCBcCkBAIC0zMzIsNiArMzMzLDcgQEAgSEVBREVSUyArPSBcCiAg
ICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUNsaWVudC5oIFwKICAg
ICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5z
aW9uLmggXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRU
ZXN0UmVzdWx0LmggXAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVJbnRlbnQuaCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZUludGVudFJlcXVlc3QuaCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uaCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5oIFwKQEAgLTQ5NSw3ICs0OTcs
NiBAQCBTT1VSQ0VTICs9IFwKICAgICBTaGFyZWQvV2ViSGl0VGVzdFJlc3VsdC5jcHAgXAogICAg
IFNoYXJlZC9XZWJLZXlib2FyZEV2ZW50LmNwcCBcCiAgICAgU2hhcmVkL1dlYkltYWdlLmNwcCBc
Ci0gICAgU2hhcmVkL1dlYkludGVudERhdGEuY3BwIFwKICAgICBTaGFyZWQvV2ViSW50ZW50U2Vy
dmljZUluZm8uY3BwIFwKICAgICBTaGFyZWQvV2ViTGF5ZXJUcmVlSW5mby5jcHAgXAogICAgIFNo
YXJlZC9XZWJNb3VzZUV2ZW50LmNwcCBcCkBAIC02MzgsNiArNjM5LDcgQEAgU09VUkNFUyArPSBc
CiAgICAgVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5jcHAgXAogICAgIFVJUHJvY2Vzcy9XZWJJ
Y29uRGF0YWJhc2VDbGllbnQuY3BwIFwKICAgICBVSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHku
Y3BwIFwKKyAgICBVSVByb2Nlc3MvV2ViSW50ZW50RGF0YS5jcHAgXAogICAgIFVJUHJvY2Vzcy9X
ZWJLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyUHJveHkuY3BwIFwKICAgICBVSVByb2Nlc3MvV2ViTGF5
ZXJUcmVlUmVuZGVyZXIuY3BwIFwKICAgICBVSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmNwcCBc
CkBAIC03MDMsNiArNzA1LDcgQEAgU09VUkNFUyArPSBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUhpdFRlc3RSZXN1bHQuY3BwIFwKICAgICBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW5zcGVjdG9yLmNwcCBcCisgICAgV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudC5jcHAgXAogICAgIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnRSZXF1ZXN0LmNwcCBcCiAg
ICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU5hdmlnYXRpb25BY3Rp
b24uY3BwIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlTm9k
ZUhhbmRsZS5jcHAgXApAQCAtNzE4LDYgKzcyMSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwIFwKICAgICBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmNw
cCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RS
ZXN1bHQuY3BwIFwKKyAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
SW50ZW50LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZUludGVudFJlcXVlc3QuY3BwIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAgXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0ludGVudERhdGEuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLSW50ZW50RGF0YS5jcHAKaW5kZXggN2E5MmRi
NS4uYjUxMzc1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
SW50ZW50RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLSW50
ZW50RGF0YS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNp
bmNsdWRlICJXS0RpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJXS1N0cmluZy5oIgorI2luY2x1ZGUg
IldlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogCiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQog
I2luY2x1ZGUgIldlYkludGVudERhdGEuaCIKQEAgLTQ3LDI3ICs0OCw2IEBAIFdLVHlwZUlEIFdL
SW50ZW50RGF0YUdldFR5cGVJRCgpCiAjZW5kaWYKIH0KIAotV0tJbnRlbnREYXRhUmVmIFdLSW50
ZW50RGF0YUNyZWF0ZShXS0RpY3Rpb25hcnlSZWYgaW5pdERpY3Rpb25hcnlSZWYpCi17Ci0jaWYg
RU5BQkxFKFdFQl9JTlRFTlRTKQotICAgIEludGVudERhdGEgaW50ZW50RGF0YTsKLSAgICBXS1N0
cmluZ1JlZiBhY3Rpb24gPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tEaWN0aW9uYXJ5R2V0
SXRlbUZvcktleShpbml0RGljdGlvbmFyeVJlZiwgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoImFjdGlvbiIpKSk7Ci0gICAgQVNTRVJUKGFjdGlvbik7Ci0gICAgaW50ZW50RGF0YS5hY3Rp
b24gPSB0b0ltcGwoYWN0aW9uKS0+c3RyaW5nKCk7Ci0gICAgV0tTdHJpbmdSZWYgdHlwZSA9IHN0
YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KGluaXREaWN0
aW9uYXJ5UmVmLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygidHlwZSIpKSk7Ci0gICAg
QVNTRVJUKHR5cGUpOwotICAgIGludGVudERhdGEudHlwZSA9IHRvSW1wbCh0eXBlKS0+c3RyaW5n
KCk7Ci0gICAgV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYgZGF0YSA9IHN0YXRpY19jYXN0PFdL
U2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KGluaXRE
aWN0aW9uYXJ5UmVmLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiZGF0YSIpKSk7Ci0g
ICAgaWYgKGRhdGEpCi0gICAgICAgIGludGVudERhdGEuZGF0YSA9IHRvSW1wbChkYXRhKS0+ZGF0
YVJlZmVyZW5jZSgpLnZlY3RvcigpOwotCi0gICAgUmVmUHRyPFdlYkludGVudERhdGE+IHdlYklu
dGVudERhdGEgPSBXZWJJbnRlbnREYXRhOjpjcmVhdGUoaW50ZW50RGF0YSk7Ci0gICAgcmV0dXJu
IHRvQVBJKHdlYkludGVudERhdGEucmVsZWFzZSgpLmxlYWtSZWYoKSk7Ci0jZWxzZQotICAgIHJl
dHVybiAwOwotI2VuZGlmCi19Ci0KIFdLU3RyaW5nUmVmIFdLSW50ZW50RGF0YUNvcHlBY3Rpb24o
V0tJbnRlbnREYXRhUmVmIGludGVudFJlZikKIHsKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnRlbnREYXRhLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnRlbnREYXRhLmgKaW5kZXggMWY4
MDllYy4uOGZjYjg2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLSW50ZW50RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0lu
dGVudERhdGEuaApAQCAtMzQsOCArMzQsNiBAQCBleHRlcm4gIkMiIHsKIAogV0tfRVhQT1JUIFdL
VHlwZUlEIFdLSW50ZW50RGF0YUdldFR5cGVJRCgpOwogCi1XS19FWFBPUlQgV0tJbnRlbnREYXRh
UmVmIFdLSW50ZW50RGF0YUNyZWF0ZShXS0RpY3Rpb25hcnlSZWYgaW5pdERpY3Rpb25hcnkpOwot
CiBXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tJbnRlbnREYXRhQ29weUFjdGlvbihXS0ludGVudERh
dGFSZWYgaW50ZW50UmVmKTsKIFdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0ludGVudERhdGFDb3B5
VHlwZShXS0ludGVudERhdGFSZWYgaW50ZW50UmVmKTsKIFdLX0VYUE9SVCBXS1VSTFJlZiBXS0lu
dGVudERhdGFDb3B5U2VydmljZShXS0ludGVudERhdGFSZWYgaW50ZW50UmVmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnRlbnREYXRhLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnRlbnREYXRhLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5kYzE5MGQ3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkludGVudERhdGEuY3BwCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJJbnRlbnREYXRhLmgi
CisKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisKKyNpbmNsdWRlICJJbW11dGFibGVBcnJheS5o
IgorI2luY2x1ZGUgIkltbXV0YWJsZURpY3Rpb25hcnkuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNz
UHJveHkuaCIKKyNpbmNsdWRlICJXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRl
ICJXZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJXZWJVUkwuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK1dlYkludGVudERhdGE6OldlYkludGVudERhdGEoY29uc3QgSW50ZW50RGF0YSYgc3RvcmUs
IFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcykKKyAgICA6IG1fc3RvcmUoc3RvcmUpCisgICAgLCBt
X3Byb2Nlc3MocHJvY2VzcykKK3sKK30KKworV2ViSW50ZW50RGF0YTo6fldlYkludGVudERhdGEo
KQoreworICAgIC8vIFJlbW92ZSBNZXNzYWdlUG9ydENoYW5uZWxzIGZyb20gV2ViUHJvY2Vzcy4K
KyAgICBpZiAobV9wcm9jZXNzICYmICFtX3N0b3JlLm1lc3NhZ2VQb3J0cy5pc0VtcHR5KCkpIHsK
KyAgICAgICAgc2l6ZV90IG51bU1lc3NhZ2VQb3J0cyA9IG1fc3RvcmUubWVzc2FnZVBvcnRzLnNp
emUoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1NZXNzYWdlUG9ydHM7ICsr
aSkKKyAgICAgICAgICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVBvcnRDaGFubmVsKG1fc3Rv
cmUubWVzc2FnZVBvcnRzW2ldKTsKKyAgICB9Cit9CisKK1Bhc3NSZWZQdHI8V2ViU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBXZWJJbnRlbnREYXRhOjpkYXRhKCkgY29uc3QKK3sKKyAgICBWZWN0b3I8
dWludDhfdD4gZGF0YUNvcHkgPSBtX3N0b3JlLmRhdGE7CisgICAgcmV0dXJuIFdlYlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6YWRvcHQoZGF0YUNvcHkpOworfQorCitQYXNzUmVmUHRyPEltbXV0YWJs
ZUFycmF5PiBXZWJJbnRlbnREYXRhOjpzdWdnZXN0aW9ucygpIGNvbnN0Cit7CisgICAgY29uc3Qg
c2l6ZV90IG51bVN1Z2dlc3Rpb25zID0gbV9zdG9yZS5zdWdnZXN0aW9ucy5zaXplKCk7CisgICAg
VmVjdG9yPFJlZlB0cjxBUElPYmplY3Q+ID4gd2tTdWdnZXN0aW9ucyhudW1TdWdnZXN0aW9ucyk7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVN1Z2dlc3Rpb25zOyArK2kpCisgICAg
ICAgIHdrU3VnZ2VzdGlvbnNbaV0gPSBXZWJVUkw6OmNyZWF0ZShtX3N0b3JlLnN1Z2dlc3Rpb25z
W2ldKTsKKyAgICByZXR1cm4gSW1tdXRhYmxlQXJyYXk6OmFkb3B0KHdrU3VnZ2VzdGlvbnMpOwor
fQorCitTdHJpbmcgV2ViSW50ZW50RGF0YTo6ZXh0cmEoY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fc3RvcmUuZXh0cmFzLmdldChrZXkpOworfQorCitQYXNzUmVmUHRy
PEltbXV0YWJsZURpY3Rpb25hcnk+IFdlYkludGVudERhdGE6OmV4dHJhcygpIGNvbnN0Cit7Cisg
ICAgSW1tdXRhYmxlRGljdGlvbmFyeTo6TWFwVHlwZSB3a0V4dHJhczsKKyAgICBIYXNoTWFwPFN0
cmluZywgU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9zdG9yZS5leHRyYXMuZW5kKCk7
CisgICAgZm9yIChIYXNoTWFwPFN0cmluZywgU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBt
X3N0b3JlLmV4dHJhcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgIHdrRXh0cmFz
LnNldChpdC0+Zmlyc3QsIFdlYlN0cmluZzo6Y3JlYXRlKGl0LT5zZWNvbmQpKTsKKyAgICByZXR1
cm4gSW1tdXRhYmxlRGljdGlvbmFyeTo6YWRvcHQod2tFeHRyYXMpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfSU5URU5UUykKKwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkludGVudERhdGEuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJJbnRlbnREYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uOWQ1OWY5MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJJbnRlbnREYXRhLmgKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBXZWJJbnRlbnREYXRhX2gKKyNkZWZpbmUgV2ViSW50ZW50RGF0YV9oCisKKyNp
ZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRl
ICJJbnRlbnREYXRhLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9LVVJMLmg+CisjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEltbXV0YWJsZUFy
cmF5OworY2xhc3MgSW1tdXRhYmxlRGljdGlvbmFyeTsKK2NsYXNzIFdlYlByb2Nlc3NQcm94eTsK
K2NsYXNzIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKKworY2xhc3MgV2ViSW50ZW50RGF0YSA6
IHB1YmxpYyBBUElPYmplY3QgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCBUeXBlIEFQSVR5
cGUgPSBUeXBlSW50ZW50RGF0YTsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkludGVudERh
dGE+IGNyZWF0ZShjb25zdCBJbnRlbnREYXRhJiBzdG9yZSwgV2ViUHJvY2Vzc1Byb3h5KiBwcm9j
ZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJJbnRlbnREYXRhKHN0
b3JlLCBwcm9jZXNzKSk7CisgICAgfQorCisgICAgdmlydHVhbCB+V2ViSW50ZW50RGF0YSgpOwor
CisgICAgY29uc3QgU3RyaW5nJiBhY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3N0b3JlLmFjdGlv
bjsgfQorICAgIGNvbnN0IFN0cmluZyYgcGF5bG9hZFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3N0
b3JlLnR5cGU7IH0KKyAgICBjb25zdCBXZWJDb3JlOjpLVVJMJiBzZXJ2aWNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdG9yZS5zZXJ2aWNlOyB9CisgICAgUGFzc1JlZlB0cjxXZWJTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IGRhdGEoKSBjb25zdDsKKyAgICBTdHJpbmcgZXh0cmEoY29uc3QgU3RyaW5nJiBr
ZXkpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4gZXh0cmFzKCkg
Y29uc3Q7CisgICAgUGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4gc3VnZ2VzdGlvbnMoKSBjb25z
dDsKKworICAgIGNvbnN0IEludGVudERhdGEmIHN0b3JlKCkgY29uc3QgeyByZXR1cm4gbV9zdG9y
ZTsgfQorCitwcml2YXRlOgorICAgIFdlYkludGVudERhdGEoY29uc3QgSW50ZW50RGF0YSYsIFdl
YlByb2Nlc3NQcm94eSopOworCisgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVy
biBBUElUeXBlOyB9CisKKyAgICBJbnRlbnREYXRhIG1fc3RvcmU7CisgICAgV2ViUHJvY2Vzc1By
b3h5KiBtX3Byb2Nlc3M7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IEVOQUJMRShXRUJfSU5URU5UUykKKworI2VuZGlmIC8vIFdlYkludGVudERhdGFfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA2Y2YyNjBhLi5lMzZmNDQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMjE5MCw3
ICsyMTkwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZSh1
aW50NjRfdCBmcmFtZUlELCBjb25zdCBJbnRlbnREYXRhJgogICAgIFdlYkZyYW1lUHJveHkqIGZy
YW1lID0gcHJvY2VzcygpLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKGZy
YW1lKTsKIAotICAgIFJlZlB0cjxXZWJJbnRlbnREYXRhPiB3ZWJJbnRlbnREYXRhID0gV2ViSW50
ZW50RGF0YTo6Y3JlYXRlKGludGVudERhdGEpOworICAgIFJlZlB0cjxXZWJJbnRlbnREYXRhPiB3
ZWJJbnRlbnREYXRhID0gV2ViSW50ZW50RGF0YTo6Y3JlYXRlKGludGVudERhdGEsIHByb2Nlc3Mo
KSk7CiAgICAgbV9sb2FkZXJDbGllbnQuZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKHRoaXMsIGZy
YW1lLCB3ZWJJbnRlbnREYXRhLmdldCgpLCB1c2VyRGF0YS5nZXQoKSk7CiB9CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggZTNjZGM4
OC4uYmM1MTg1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAKQEAgLTE5Niw2ICsxOTYsMTYgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlbW92ZVdl
YlBhZ2UodWludDY0X3QgcGFnZUlEKQogICAgIG1fcGFnZU1hcC5yZW1vdmUocGFnZUlEKTsKIH0K
IAorI2lmIEVOQUJMRShXRUJfSU5URU5UUykKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZW1vdmVN
ZXNzYWdlUG9ydENoYW5uZWwodWludDY0X3QgY2hhbm5lbElEKQoreworICAgIGlmICghaXNWYWxp
ZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpS
ZW1vdmVNZXNzYWdlUG9ydENoYW5uZWwoY2hhbm5lbElEKSwgMCk7Cit9CisjZW5kaWYKKwogV2Vi
QmFja0ZvcndhcmRMaXN0SXRlbSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJCYWNrRm9yd2FyZEl0ZW0o
dWludDY0X3QgaXRlbUlEKSBjb25zdAogewogICAgIHJldHVybiBtX2JhY2tGb3J3YXJkTGlzdEl0
ZW1NYXAuZ2V0KGl0ZW1JRCkuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmgKaW5kZXggOGU3NjhiZi4uZDI5OWNjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtODcsNiArODcsMTAgQEAgcHVibGljOgogICAg
IHZvaWQgYWRkRXhpc3RpbmdXZWJQYWdlKFdlYlBhZ2VQcm94eSosIHVpbnQ2NF90IHBhZ2VJRCk7
CiAgICAgdm9pZCByZW1vdmVXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCk7CiAKKyNpZiBFTkFCTEUo
V0VCX0lOVEVOVFMpCisgICAgdm9pZCByZW1vdmVNZXNzYWdlUG9ydENoYW5uZWwodWludDY0X3Qg
Y2hhbm5lbElEKTsKKyNlbmRpZgorCiAgICAgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogd2ViQmFj
a0ZvcndhcmRJdGVtKHVpbnQ2NF90IGl0ZW1JRCkgY29uc3Q7CiAKICAgICBSZXNwb25zaXZlbmVz
c1RpbWVyKiByZXNwb25zaXZlbmVzc1RpbWVyKCkgeyByZXR1cm4gJm1fcmVzcG9uc2l2ZW5lc3NU
aW1lcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZUFQSUNhc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVBUElDYXN0LmgKaW5kZXggMzM1NWQwOC4uMDE4
ZWY3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZUFQSUNhc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQVBJQ2FzdC5oCkBAIC00Niw2ICs0Niw3IEBA
IGNsYXNzIEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0OwogY2xhc3MgSW5qZWN0ZWRCdW5k
bGVCYWNrRm9yd2FyZExpc3RJdGVtOwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRl
bnNpb247CiBjbGFzcyBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ7CitjbGFzcyBJbmplY3Rl
ZEJ1bmRsZUludGVudDsKIGNsYXNzIEluamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdDsKIGNsYXNz
IEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbjsKIGNsYXNzIEluamVjdGVkQnVuZGxlTm9k
ZUhhbmRsZTsKQEAgLTY0LDYgKzY1LDcgQEAgV0tfQUREX0FQSV9NQVBQSU5HKFdLQnVuZGxlRE9N
V2luZG93RXh0ZW5zaW9uUmVmLCBJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2kKIFdLX0FE
RF9BUElfTUFQUElORyhXS0J1bmRsZUZyYW1lUmVmLCBXZWJGcmFtZSkKIFdLX0FERF9BUElfTUFQ
UElORyhXS0J1bmRsZUhpdFRlc3RSZXN1bHRSZWYsIEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3Vs
dCkKIFdLX0FERF9BUElfTUFQUElORyhXS0J1bmRsZUluc3BlY3RvclJlZiwgV2ViSW5zcGVjdG9y
KQorV0tfQUREX0FQSV9NQVBQSU5HKFdLQnVuZGxlSW50ZW50UmVmLCBJbmplY3RlZEJ1bmRsZUlu
dGVudCkKIFdLX0FERF9BUElfTUFQUElORyhXS0J1bmRsZUludGVudFJlcXVlc3RSZWYsIEluamVj
dGVkQnVuZGxlSW50ZW50UmVxdWVzdCkKIFdLX0FERF9BUElfTUFQUElORyhXS0J1bmRsZU5hdmln
YXRpb25BY3Rpb25SZWYsIEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbikKIFdLX0FERF9B
UElfTUFQUElORyhXS0J1bmRsZU5vZGVIYW5kbGVSZWYsIEluamVjdGVkQnVuZGxlTm9kZUhhbmRs
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVJbnRlbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uZDgzODYzZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnQuY3BwCkBAIC0w
LDAgKzEsMTM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9u
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiV0tCdW5kbGVJbnRlbnQuaCIKKworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyNp
bmNsdWRlICJJbW11dGFibGVBcnJheS5oIgorI2luY2x1ZGUgIkltbXV0YWJsZURpY3Rpb25hcnku
aCIKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZUludGVudC5oIgorI2luY2x1ZGUgIldLQVBJQ2Fz
dC5oIgorI2luY2x1ZGUgIldLQnVuZGxlQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLRGljdGlvbmFy
eS5oIgorI2luY2x1ZGUgIldLU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmgiCisjZW5kaWYKKworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKyNlbmRpZgorCitXS1R5cGVJ
RCBXS0J1bmRsZUludGVudEdldFR5cGVJRCgpCit7CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQor
ICAgIHJldHVybiB0b0FQSShJbmplY3RlZEJ1bmRsZUludGVudDo6QVBJVHlwZSk7CisjZWxzZQor
ICAgIHJldHVybiAwOworI2VuZGlmCit9CisKK1dLQnVuZGxlSW50ZW50UmVmIFdLQnVuZGxlSW50
ZW50Q3JlYXRlKFdLRGljdGlvbmFyeVJlZiBpbml0RGljdGlvbmFyeVJlZikKK3sKKyNpZiBFTkFC
TEUoV0VCX0lOVEVOVFMpCisgICAgV0tTdHJpbmdSZWYgYWN0aW9uID0gc3RhdGljX2Nhc3Q8V0tT
dHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkoaW5pdERpY3Rpb25hcnlSZWYsIFdL
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJhY3Rpb24iKSkpOworICAgIEFTU0VSVChhY3Rp
b24pOworICAgIFdLU3RyaW5nUmVmIHR5cGUgPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tE
aWN0aW9uYXJ5R2V0SXRlbUZvcktleShpbml0RGljdGlvbmFyeVJlZiwgV0tTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoInR5cGUiKSkpOworICAgIEFTU0VSVCh0eXBlKTsKKyAgICBXS1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZVJlZiBkYXRhID0gc3RhdGljX2Nhc3Q8V0tTZXJpYWxpemVkU2NyaXB0
VmFsdWVSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkoaW5pdERpY3Rpb25hcnlSZWYsIFdL
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJkYXRhIikpKTsKKyAgICBNZXNzYWdlUG9ydEFy
cmF5IGR1bW15UG9ydHM7CisgICAgRXhjZXB0aW9uQ29kZSBlYzsKKworICAgIFJlZlB0cjxJbnRl
bnQ+IGNvcmVJbnRlbnQgPSBJbnRlbnQ6OmNyZWF0ZSh0b0ltcGwoYWN0aW9uKS0+c3RyaW5nKCks
IHRvSW1wbCh0eXBlKS0+c3RyaW5nKCksIGRhdGEgPyBzdGF0aWNfY2FzdDxTZXJpYWxpemVkU2Ny
aXB0VmFsdWUqPih0b0ltcGwoZGF0YSktPmludGVybmFsUmVwcmVzZW50YXRpb24oKSkgOiAwLCBk
dW1teVBvcnRzLCBlYyk7CisgICAgcmV0dXJuIHRvQVBJKEluamVjdGVkQnVuZGxlSW50ZW50Ojpj
cmVhdGUoY29yZUludGVudC5nZXQoKSkubGVha1JlZigpKTsKKyNlbHNlCisgICAgcmV0dXJuIDA7
CisjZW5kaWYKK30KKworV0tTdHJpbmdSZWYgV0tCdW5kbGVJbnRlbnRDb3B5QWN0aW9uKFdLQnVu
ZGxlSW50ZW50UmVmIGludGVudFJlZikKK3sKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAg
cmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChpbnRlbnRSZWYpLT5hY3Rpb24oKSk7CisjZWxzZQor
ICAgIHJldHVybiAwOworI2VuZGlmCit9CisKK1dLU3RyaW5nUmVmIFdLQnVuZGxlSW50ZW50Q29w
eVR5cGUoV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmKQoreworI2lmIEVOQUJMRShXRUJfSU5U
RU5UUykKKyAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKGludGVudFJlZiktPnBheWxvYWRU
eXBlKCkpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCitXS1VSTFJlZiBXS0J1
bmRsZUludGVudENvcHlTZXJ2aWNlKFdLQnVuZGxlSW50ZW50UmVmIGludGVudFJlZikKK3sKKyNp
ZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgcmV0dXJuIHRvQ29waWVkVVJMQVBJKHRvSW1wbChp
bnRlbnRSZWYpLT5zZXJ2aWNlKCkpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQor
CitXS0FycmF5UmVmIFdLQnVuZGxlSW50ZW50Q29weVN1Z2dlc3Rpb25zKFdLQnVuZGxlSW50ZW50
UmVmIGludGVudFJlZikKK3sKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgcmV0dXJuIHRv
QVBJKHRvSW1wbChpbnRlbnRSZWYpLT5zdWdnZXN0aW9ucygpLmxlYWtSZWYoKSk7CisjZWxzZQor
ICAgIHJldHVybiAwOworI2VuZGlmCit9CisKK1dLU3RyaW5nUmVmIFdLQnVuZGxlSW50ZW50Q29w
eUV4dHJhKFdLQnVuZGxlSW50ZW50UmVmIGludGVudFJlZiwgV0tTdHJpbmdSZWYga2V5KQorewor
I2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKGlu
dGVudFJlZiktPmV4dHJhKHRvV1RGU3RyaW5nKGtleSkpKTsKKyNlbHNlCisgICAgcmV0dXJuIDA7
CisjZW5kaWYKK30KKworV0tEaWN0aW9uYXJ5UmVmIFdLQnVuZGxlSW50ZW50Q29weUV4dHJhcyhX
S0J1bmRsZUludGVudFJlZiBpbnRlbnRSZWYpCit7CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQor
ICAgIHJldHVybiB0b0FQSSh0b0ltcGwoaW50ZW50UmVmKS0+ZXh0cmFzKCkubGVha1JlZigpKTsK
KyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KKworc2l6ZV90IFdLQnVuZGxlSW50ZW50
TWVzc2FnZVBvcnRDb3VudChXS0J1bmRsZUludGVudFJlZiBpbnRlbnRSZWYpCit7CisjaWYgRU5B
QkxFKFdFQl9JTlRFTlRTKQorICAgIE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5KiBtZXNzYWdlUG9y
dHMgPSB0b0ltcGwoaW50ZW50UmVmKS0+Y29yZUludGVudCgpLT5tZXNzYWdlUG9ydHMoKTsKKwor
ICAgIHJldHVybiBtZXNzYWdlUG9ydHMgPyBtZXNzYWdlUG9ydHMtPnNpemUoKSA6IDA7CisjZWxz
ZQorICAgIHJldHVybiAwOworI2VuZGlmCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQ3MTlkNAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVJbnRlbnQuaApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFdLQnVuZGxlSW50ZW50X2gKKyNkZWZpbmUgV0tCdW5kbGVJbnRlbnRfaAorCisjaW5jbHVk
ZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsK
KyNlbmRpZgorCitXS19FWFBPUlQgV0tUeXBlSUQgV0tCdW5kbGVJbnRlbnRHZXRUeXBlSUQoKTsK
KworV0tfRVhQT1JUIFdLQnVuZGxlSW50ZW50UmVmIFdLQnVuZGxlSW50ZW50Q3JlYXRlKFdLRGlj
dGlvbmFyeVJlZiBpbml0RGljdGlvbmFyeSk7CisKK1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0J1
bmRsZUludGVudENvcHlBY3Rpb24oV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmKTsKK1dLX0VY
UE9SVCBXS1N0cmluZ1JlZiBXS0J1bmRsZUludGVudENvcHlUeXBlKFdLQnVuZGxlSW50ZW50UmVm
IGludGVudFJlZik7CitXS19FWFBPUlQgV0tVUkxSZWYgV0tCdW5kbGVJbnRlbnRDb3B5U2Vydmlj
ZShXS0J1bmRsZUludGVudFJlZiBpbnRlbnRSZWYpOworV0tfRVhQT1JUIFdLQXJyYXlSZWYgV0tC
dW5kbGVJbnRlbnRDb3B5U3VnZ2VzdGlvbnMoV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmKTsK
K1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0J1bmRsZUludGVudENvcHlFeHRyYShXS0J1bmRsZUlu
dGVudFJlZiBpbnRlbnRSZWYsIFdLU3RyaW5nUmVmIGtleSk7CitXS19FWFBPUlQgV0tEaWN0aW9u
YXJ5UmVmIFdLQnVuZGxlSW50ZW50Q29weUV4dHJhcyhXS0J1bmRsZUludGVudFJlZiBpbnRlbnRS
ZWYpOworV0tfRVhQT1JUIHNpemVfdCBXS0J1bmRsZUludGVudE1lc3NhZ2VQb3J0Q291bnQoV0tC
dW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5k
aWYKKworI2VuZGlmIC8vIFdLQnVuZGxlSW50ZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnRSZXF1ZXN0
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVJbnRlbnRSZXF1ZXN0LmNwcAppbmRleCA4MWM5NWM2Li5hNDc3MmVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
SW50ZW50UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudFJlcXVlc3QuY3BwCkBAIC0yNywxMCArMjcsMTAg
QEAKICNpbmNsdWRlICJXS0J1bmRsZUludGVudFJlcXVlc3QuaCIKIAogI2lmIEVOQUJMRShXRUJf
SU5URU5UUykKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZUludGVudC5oIgogI2luY2x1ZGUgIklu
amVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2lu
Y2x1ZGUgIldLQnVuZGxlQVBJQ2FzdC5oIgotI2luY2x1ZGUgIldlYkludGVudERhdGEuaCIKIAog
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKICNlbmRpZgpAQCAtNDQsMTEgKzQ0LDExIEBAIFdLVHlw
ZUlEIFdLQnVuZGxlSW50ZW50UmVxdWVzdEdldFR5cGVJRCgpCiAjZW5kaWYKIH0KIAotV0tJbnRl
bnREYXRhUmVmIFdLQnVuZGxlSW50ZW50UmVxdWVzdENvcHlJbnRlbnREYXRhKFdLQnVuZGxlSW50
ZW50UmVxdWVzdFJlZiByZXF1ZXN0UmVmKQorV0tCdW5kbGVJbnRlbnRSZWYgV0tCdW5kbGVJbnRl
bnRSZXF1ZXN0Q29weUludGVudChXS0J1bmRsZUludGVudFJlcXVlc3RSZWYgcmVxdWVzdFJlZikK
IHsKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0gICAgUmVmUHRyPFdlYkludGVudERhdGE+IHdl
YkludGVudERhdGEgPSB0b0ltcGwocmVxdWVzdFJlZiktPmludGVudCgpOwotICAgIHJldHVybiB0
b0FQSSh3ZWJJbnRlbnREYXRhLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAgIFJlZlB0cjxJbmpl
Y3RlZEJ1bmRsZUludGVudD4gd2ViSW50ZW50ID0gdG9JbXBsKHJlcXVlc3RSZWYpLT5pbnRlbnQo
KTsKKyAgICByZXR1cm4gdG9BUEkod2ViSW50ZW50LnJlbGVhc2UoKS5sZWFrUmVmKCkpOwogI2Vs
c2UKICAgICByZXR1cm4gMDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudFJlcXVlc3QuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRl
bnRSZXF1ZXN0LmgKaW5kZXggYjE4MTM2ZC4uMTA1YWZhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudFJlcXVl
c3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlSW50ZW50UmVxdWVzdC5oCkBAIC0zNCw3ICszNCw3IEBAIGV4dGVybiAiQyIgewog
CiBXS19FWFBPUlQgV0tUeXBlSUQgV0tCdW5kbGVJbnRlbnRSZXF1ZXN0R2V0VHlwZUlEKCk7CiAK
LVdLX0VYUE9SVCBXS0ludGVudERhdGFSZWYgV0tCdW5kbGVJbnRlbnRSZXF1ZXN0Q29weUludGVu
dERhdGEoV0tCdW5kbGVJbnRlbnRSZXF1ZXN0UmVmIHJlcXVlc3QpOworV0tfRVhQT1JUIFdLQnVu
ZGxlSW50ZW50UmVmIFdLQnVuZGxlSW50ZW50UmVxdWVzdENvcHlJbnRlbnQoV0tCdW5kbGVJbnRl
bnRSZXF1ZXN0UmVmIHJlcXVlc3QpOwogCiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZUludGVudFJl
cXVlc3RQb3N0UmVzdWx0KFdLQnVuZGxlSW50ZW50UmVxdWVzdFJlZiByZXF1ZXN0LCBXS1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZVJlZiBzZXJpYWxpemVkRGF0YSk7CiBXS19FWFBPUlQgdm9pZCBXS0J1
bmRsZUludGVudFJlcXVlc3RQb3N0RmFpbHVyZShXS0J1bmRsZUludGVudFJlcXVlc3RSZWYgcmVx
dWVzdCwgV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYgc2VyaWFsaXplZERhdGEpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZVBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZVBhZ2UuY3BwCmluZGV4IDJhZTIyMzcuLjgwMjQxY2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQ
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUGFnZS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L1BhZ2UuaD4KIAogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSNpbmNsdWRlICJXZWJJbnRlbnRE
YXRhLmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVJbnRlbnQuaCIKICNlbmRpZgogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViS2l0OwpAQCAtMzEwLDEwICszMTAsMTAgQEAgZG91YmxlIFdLQnVuZGxl
UGFnZUdldEJhY2tpbmdTY2FsZUZhY3RvcihXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZikKICAgICBy
ZXR1cm4gdG9JbXBsKHBhZ2VSZWYpLT5kZXZpY2VTY2FsZUZhY3RvcigpOwogfQogCi12b2lkIFdL
QnVuZGxlUGFnZURlbGl2ZXJJbnRlbnRUb0ZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBX
S0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVmLCBXS0ludGVudERhdGFSZWYgaW50ZW50UmVmKQordm9p
ZCBXS0J1bmRsZVBhZ2VEZWxpdmVySW50ZW50VG9GcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZVJl
ZiwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZVJlZiwgV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVm
KQogewogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSAgICB0b0ltcGwocGFnZVJlZiktPmRlbGl2
ZXJJbnRlbnRUb0ZyYW1lKHRvSW1wbChmcmFtZVJlZiktPmZyYW1lSUQoKSwgdG9JbXBsKGludGVu
dFJlZiktPnN0b3JlKCkpOworICAgIHRvSW1wbChwYWdlUmVmKS0+ZGVsaXZlckNvcmVJbnRlbnRU
b0ZyYW1lKHRvSW1wbChmcmFtZVJlZiktPmZyYW1lSUQoKSwgdG9JbXBsKGludGVudFJlZiktPmNv
cmVJbnRlbnQoKSk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgKaW5kZXgg
YWE4NjA5Mi4uNmYxOGIzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCkBAIC00MDQsNyAr
NDA0LDcgQEAgV0tfRVhQT1JUIFdLSW1hZ2VSZWYgV0tCdW5kbGVQYWdlQ3JlYXRlU2NhbGVkU25h
cHNob3RJbkRvY3VtZW50Q29vcmRpbmF0ZXMoV0tCdW4KIAogV0tfRVhQT1JUIGRvdWJsZSBXS0J1
bmRsZVBhZ2VHZXRCYWNraW5nU2NhbGVGYWN0b3IoV0tCdW5kbGVQYWdlUmVmIHBhZ2UpOwogCi1X
S19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VEZWxpdmVySW50ZW50VG9GcmFtZShXS0J1bmRsZVBh
Z2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tJbnRlbnREYXRhUmVmIGludGVu
dCk7CitXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VEZWxpdmVySW50ZW50VG9GcmFtZShXS0J1
bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tCdW5kbGVJbnRlbnRS
ZWYgaW50ZW50KTsKIAogI2lmIGRlZmluZWQoRU5BQkxFX0lOU1BFQ1RPUikgJiYgRU5BQkxFX0lO
U1BFQ1RPUgogV0tfRVhQT1JUIFdLQnVuZGxlSW5zcGVjdG9yUmVmIFdLQnVuZGxlUGFnZUdldElu
c3BlY3RvcihXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRl
bnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3YWI1ODYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlSW50ZW50LmNwcApAQCAtMCwwICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVJbnRlbnQu
aCIKKworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKworI2luY2x1ZGUgIkltbXV0YWJsZUFycmF5
LmgiCisjaW5jbHVkZSAiSW1tdXRhYmxlRGljdGlvbmFyeS5oIgorI2luY2x1ZGUgIldlYlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIldlYlN0cmluZy5oIgorI2luY2x1ZGUgIldl
YlVSTC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK1Bhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVJbnRlbnQ+IEluamVjdGVkQnVuZGxlSW50ZW50
OjpjcmVhdGUoV2ViQ29yZTo6SW50ZW50KiBpbnRlbnQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBJbmplY3RlZEJ1bmRsZUludGVudChpbnRlbnQpKTsKK30KKworSW5qZWN0ZWRCdW5kbGVJ
bnRlbnQ6OkluamVjdGVkQnVuZGxlSW50ZW50KFdlYkNvcmU6OkludGVudCogaW50ZW50KQorICAg
IDogbV9pbnRlbnQoaW50ZW50KQoreworfQorCitTdHJpbmcgSW5qZWN0ZWRCdW5kbGVJbnRlbnQ6
OmFjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW50ZW50LT5hY3Rpb24oKTsKK30KKwor
U3RyaW5nIEluamVjdGVkQnVuZGxlSW50ZW50OjpwYXlsb2FkVHlwZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1faW50ZW50LT50eXBlKCk7Cit9CisKK1dlYkNvcmU6OktVUkwgSW5qZWN0ZWRCdW5k
bGVJbnRlbnQ6OnNlcnZpY2UoKSBjb25zdAoreworICAgIHJldHVybiBtX2ludGVudC0+c2Vydmlj
ZSgpOworfQorCitQYXNzUmVmUHRyPFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gSW5qZWN0ZWRC
dW5kbGVJbnRlbnQ6OmRhdGEoKSBjb25zdAoreworICAgIHJldHVybiBXZWJTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OmNyZWF0ZShtX2ludGVudC0+ZGF0YSgpKTsKK30KKworU3RyaW5nIEluamVjdGVk
QnVuZGxlSW50ZW50OjpleHRyYShjb25zdCBTdHJpbmcmIGtleSkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9pbnRlbnQtPmV4dHJhcygpLmdldChrZXkpOworfQorCitQYXNzUmVmUHRyPEltbXV0YWJs
ZURpY3Rpb25hcnk+IEluamVjdGVkQnVuZGxlSW50ZW50OjpleHRyYXMoKSBjb25zdAoreworICAg
IGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBleHRyYXMgPSBtX2ludGVudC0+ZXh0cmFz
KCk7CisgICAgSW1tdXRhYmxlRGljdGlvbmFyeTo6TWFwVHlwZSB3a0V4dHJhczsKKyAgICBIYXNo
TWFwPFN0cmluZywgU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gZXh0cmFzLmVuZCgpOwor
ICAgIGZvciAoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gZXh0
cmFzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgd2tFeHRyYXMuc2V0KGl0LT5m
aXJzdCwgV2ViU3RyaW5nOjpjcmVhdGUoaXQtPnNlY29uZCkpOworICAgIHJldHVybiBJbW11dGFi
bGVEaWN0aW9uYXJ5OjphZG9wdCh3a0V4dHJhcyk7Cit9CisKK1Bhc3NSZWZQdHI8SW1tdXRhYmxl
QXJyYXk+IEluamVjdGVkQnVuZGxlSW50ZW50OjpzdWdnZXN0aW9ucygpIGNvbnN0Cit7CisgICAg
Y29uc3QgVmVjdG9yPEtVUkw+JiBzdWdnZXN0aW9ucyA9IG1faW50ZW50LT5zdWdnZXN0aW9ucygp
OworICAgIGNvbnN0IHNpemVfdCBudW1TdWdnZXN0aW9ucyA9IHN1Z2dlc3Rpb25zLnNpemUoKTsK
KyAgICBWZWN0b3I8UmVmUHRyPEFQSU9iamVjdD4gPiB3a1N1Z2dlc3Rpb25zKG51bVN1Z2dlc3Rp
b25zKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtU3VnZ2VzdGlvbnM7ICsraSkK
KyAgICAgICAgd2tTdWdnZXN0aW9uc1tpXSA9IFdlYlVSTDo6Y3JlYXRlKHN1Z2dlc3Rpb25zW2ld
KTsKKyAgICByZXR1cm4gSW1tdXRhYmxlQXJyYXk6OmFkb3B0KHdrU3VnZ2VzdGlvbnMpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfSU5URU5UUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVJbnRlbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi41ZDNmMDZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudC5oCkBAIC0wLDAgKzEsNzIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW5qZWN0ZWRCdW5kbGVJbnRlbnRfaAor
I2RlZmluZSBJbmplY3RlZEJ1bmRsZUludGVudF9oCisKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMp
CisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ludGVudC5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBJbW11dGFibGVBcnJheTsKK2NsYXNzIEltbXV0YWJsZURp
Y3Rpb25hcnk7CitjbGFzcyBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU7CisKK2NsYXNzIEluamVj
dGVkQnVuZGxlSW50ZW50IDogcHVibGljIEFQSU9iamVjdCB7CitwdWJsaWM6CisgICAgc3RhdGlj
IGNvbnN0IFR5cGUgQVBJVHlwZSA9IFR5cGVCdW5kbGVJbnRlbnQ7CisKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxJbmplY3RlZEJ1bmRsZUludGVudD4gY3JlYXRlKFdlYkNvcmU6OkludGVudCopOwor
CisgICAgU3RyaW5nIGFjdGlvbigpIGNvbnN0OworICAgIFN0cmluZyBwYXlsb2FkVHlwZSgpIGNv
bnN0OworICAgIFdlYkNvcmU6OktVUkwgc2VydmljZSgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8
V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhKCkgY29uc3Q7CisgICAgU3RyaW5nIGV4dHJh
KGNvbnN0IFN0cmluZyYga2V5KSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEltbXV0YWJsZURpY3Rp
b25hcnk+IGV4dHJhcygpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8SW1tdXRhYmxlQXJyYXk+IHN1
Z2dlc3Rpb25zKCkgY29uc3Q7CisKKyAgICBXZWJDb3JlOjpJbnRlbnQqIGNvcmVJbnRlbnQoKSBj
b25zdCB7IHJldHVybiBtX2ludGVudC5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0
IEluamVjdGVkQnVuZGxlSW50ZW50KFdlYkNvcmU6OkludGVudCopOworCisgICAgdmlydHVhbCBU
eXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBBUElUeXBlOyB9CisKKyAgICBSZWZQdHI8V2ViQ29y
ZTo6SW50ZW50PiBtX2ludGVudDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gRU5BQkxFKFdFQl9JTlRFTlRTKQorCisjZW5kaWYgLy8gSW5qZWN0ZWRCdW5kbGVJbnRl
bnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuY3BwCmluZGV4
IDVjY2IxOWMuLmVhYzBiODNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVu
dFJlcXVlc3QuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVJ
bnRlbnRSZXF1ZXN0LmgiCiAKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisjaW5jbHVkZSAiSW5q
ZWN0ZWRCdW5kbGVJbnRlbnQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ludGVudFJlcXVlc3QuaD4K
ICNpbmNsdWRlIDxXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaD4KIApAQCAtNTQsOSArNTUsOSBA
QCB2b2lkIEluamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdDo6cG9zdEZhaWx1cmUoV2ViU2VyaWFs
aXplZFNjcmlwdFZhbHVlKiBkYXRhKQogICAgIG1faW50ZW50UmVxdWVzdC0+cG9zdEZhaWx1cmUo
c3RhdGljX2Nhc3Q8U2VyaWFsaXplZFNjcmlwdFZhbHVlKj4oZGF0YS0+aW50ZXJuYWxSZXByZXNl
bnRhdGlvbigpKSk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViSW50ZW50RGF0YT4gSW5qZWN0ZWRCdW5k
bGVJbnRlbnRSZXF1ZXN0OjppbnRlbnQoKSBjb25zdAorUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRs
ZUludGVudD4gSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0OjppbnRlbnQoKSBjb25zdAogewot
ICAgIHJldHVybiBXZWJJbnRlbnREYXRhOjpjcmVhdGUoSW50ZW50RGF0YShtX2ludGVudFJlcXVl
c3QtPmludGVudCgpKSk7CisgICAgcmV0dXJuIEluamVjdGVkQnVuZGxlSW50ZW50OjpjcmVhdGUo
bV9pbnRlbnRSZXF1ZXN0LT5pbnRlbnQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZUludGVudFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0LmgKaW5kZXggYjU4NzBkOS4u
MzNhMzE5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5oCkBA
IC0yOSw3ICsyOSw2IEBACiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQogCiAjaW5jbHVkZSAiQVBJ
T2JqZWN0LmgiCi0jaW5jbHVkZSAiV2ViSW50ZW50RGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CkBAIC00MCw2ICszOSw3IEBAIGNsYXNzIEludGVudFJlcXVlc3Q7CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCitjbGFzcyBJbmplY3RlZEJ1bmRsZUludGVudDsKIGNsYXNzIFdlYlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTsKIAogY2xhc3MgSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0IDogcHVi
bGljIEFQSU9iamVjdCB7CkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHBvc3RS
ZXN1bHQoV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlKik7CiAgICAgdm9pZCBwb3N0RmFpbHVyZShX
ZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUqKTsKIAotICAgIFBhc3NSZWZQdHI8V2ViSW50ZW50RGF0
YT4gaW50ZW50KCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZUludGVudD4g
aW50ZW50KCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgSW5qZWN0ZWRCdW5kbGVJ
bnRlbnRSZXF1ZXN0KFdlYkNvcmU6OkludGVudFJlcXVlc3QqKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IGYzNmZjMDIuLmQ2ZGRjYmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApA
QCAtNjMsNiArNjMsOCBAQAogI2luY2x1ZGUgIkludGVudERhdGEuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL0RPTVdpbmRvd0ludGVudHMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RlbGl2ZXJlZEludGVu
dC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSW50ZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0
Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oPgogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpIHx8
IFBMQVRGT1JNKFdJTikKQEAgLTI0NiwxMyArMjQ4LDM5IEBAIHZvaWQgV2ViRnJhbWU6OmNvbnZl
cnRIYW5kbGVUb0Rvd25sb2FkKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJlc291cmNl
UmVxCiB2b2lkIFdlYkZyYW1lOjpkZWxpdmVySW50ZW50KGNvbnN0IEludGVudERhdGEmIGludGVu
dERhdGEpCiB7CiAgICAgT3duUHRyPERlbGl2ZXJlZEludGVudENsaWVudD4gZHVtbXlDbGllbnQ7
Ci0gICAgT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IGR1bW15UG9ydHM7CiAgICAgVmVjdG9yPHVp
bnQ4X3Q+IGRhdGFDb3B5ID0gaW50ZW50RGF0YS5kYXRhOworCisgICAgT3duUHRyPFdlYkNvcmU6
Ok1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVsczsKKyAgICBpZiAoIWludGVudERhdGEu
bWVzc2FnZVBvcnRzLmlzRW1wdHkoKSkgeworICAgICAgICBjaGFubmVscyA9IGFkb3B0UHRyKG5l
dyBXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxBcnJheShpbnRlbnREYXRhLm1lc3NhZ2VQb3J0
cy5zaXplKCkpKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbnRlbnREYXRhLm1l
c3NhZ2VQb3J0cy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgICgqY2hhbm5lbHMpW2ldID0gTWVz
c2FnZVBvcnRDaGFubmVsOjpjcmVhdGUoV2ViUHJvY2Vzczo6c2hhcmVkKCkubWVzc2FnZVBvcnRD
aGFubmVsKGludGVudERhdGEubWVzc2FnZVBvcnRzLmF0KGkpKSk7CisgICAgfQorICAgIE93blB0
cjxXZWJDb3JlOjpNZXNzYWdlUG9ydEFycmF5PiBtZXNzYWdlUG9ydHMgPSBXZWJDb3JlOjpNZXNz
YWdlUG9ydDo6ZW50YW5nbGVQb3J0cygqbV9jb3JlRnJhbWUtPmRvbVdpbmRvdygpLT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCksIGNoYW5uZWxzLnJlbGVhc2UoKSk7CisKICAgICBSZWZQdHI8RGVs
aXZlcmVkSW50ZW50PiBkZWxpdmVyZWRJbnRlbnQgPSBEZWxpdmVyZWRJbnRlbnQ6OmNyZWF0ZSht
X2NvcmVGcmFtZSwgZHVtbXlDbGllbnQucmVsZWFzZSgpLCBpbnRlbnREYXRhLmFjdGlvbiwgaW50
ZW50RGF0YS50eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQo
ZGF0YUNvcHkpLCBkdW1teVBvcnRzLnJlbGVhc2UoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmFkb3B0KGRhdGFDb3B5KSwgbWVzc2FnZVBvcnRzLnJlbGVhc2UoKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnRlbnREYXRhLmV4dHJhcyk7CiAgICAgV2ViQ29yZTo6RE9NV2luZG93SW50
ZW50czo6ZnJvbShtX2NvcmVGcmFtZS0+ZG9tV2luZG93KCkpLT5kZWxpdmVyKGRlbGl2ZXJlZElu
dGVudC5yZWxlYXNlKCkpOwogfQorCit2b2lkIFdlYkZyYW1lOjpkZWxpdmVySW50ZW50KEludGVu
dCogaW50ZW50KQoreworICAgIE93blB0cjxEZWxpdmVyZWRJbnRlbnRDbGllbnQ+IGR1bW15Q2xp
ZW50OworCisgICAgT3duUHRyPFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFu
bmVsczsKKyAgICBXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxBcnJheSogb3JpZ0NoYW5uZWxz
ID0gaW50ZW50LT5tZXNzYWdlUG9ydHMoKTsKKyAgICBpZiAob3JpZ0NoYW5uZWxzICYmIG9yaWdD
aGFubmVscy0+c2l6ZSgpKSB7CisgICAgICAgIGNoYW5uZWxzID0gYWRvcHRQdHIobmV3IFdlYkNv
cmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5KG9yaWdDaGFubmVscy0+c2l6ZSgpKSk7CisgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb3JpZ0NoYW5uZWxzLT5zaXplKCk7ICsraSkKKyAg
ICAgICAgICAgICgqY2hhbm5lbHMpW2ldID0gb3JpZ0NoYW5uZWxzLT5hdChpKS5yZWxlYXNlKCk7
CisgICAgfQorICAgIE93blB0cjxXZWJDb3JlOjpNZXNzYWdlUG9ydEFycmF5PiBtZXNzYWdlUG9y
dHMgPSBXZWJDb3JlOjpNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cygqbV9jb3JlRnJhbWUtPmRv
bVdpbmRvdygpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGNoYW5uZWxzLnJlbGVhc2UoKSk7
CisKKyAgICBSZWZQdHI8RGVsaXZlcmVkSW50ZW50PiBkZWxpdmVyZWRJbnRlbnQgPSBEZWxpdmVy
ZWRJbnRlbnQ6OmNyZWF0ZShtX2NvcmVGcmFtZSwgZHVtbXlDbGllbnQucmVsZWFzZSgpLCBpbnRl
bnQtPmFjdGlvbigpLCBpbnRlbnQtPnR5cGUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlbnQtPmRhdGEo
KSwgbWVzc2FnZVBvcnRzLnJlbGVhc2UoKSwgaW50ZW50LT5leHRyYXMoKSk7CisgICAgV2ViQ29y
ZTo6RE9NV2luZG93SW50ZW50czo6ZnJvbShtX2NvcmVGcmFtZS0+ZG9tV2luZG93KCkpLT5kZWxp
dmVyKGRlbGl2ZXJlZEludGVudC5yZWxlYXNlKCkpOworfQogI2VuZGlmCiAKIFN0cmluZyBXZWJG
cmFtZTo6c291cmNlKCkgY29uc3QgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJGcmFtZS5oCmluZGV4IGJkNmMwMzguLmVlYTA5YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCkBAIC00Miw2ICs0Miw5IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgRnJhbWU7CiAgICAgY2xhc3MgSFRNTEZyYW1lT3duZXJF
bGVtZW50OworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICBjbGFzcyBJbnRlbnQ7CisjZW5k
aWYKICAgICBjbGFzcyBLVVJMOwogfQogCkBAIC04MSw2ICs4NCw3IEBAIHB1YmxpYzoKIAogI2lm
IEVOQUJMRShXRUJfSU5URU5UUykKICAgICB2b2lkIGRlbGl2ZXJJbnRlbnQoY29uc3QgSW50ZW50
RGF0YSYpOworICAgIHZvaWQgZGVsaXZlckludGVudChXZWJDb3JlOjpJbnRlbnQqKTsKICNlbmRp
ZgogCiAgICAgU3RyaW5nIHNvdXJjZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDU5ZDNiYzUuLmJjYzg1NDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTEzNiw2ICsx
MzYsNyBAQAogCiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQogI2luY2x1ZGUgIkludGVudERhdGEu
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ludGVudC5oPgogI2VuZGlmCiAKICNpZiBFTkFCTEUoVklC
UkFUSU9OKQpAQCAtMTk2Myw2ICsxOTY0LDE1IEBAIHZvaWQgV2ViUGFnZTo6ZGVsaXZlckludGVu
dFRvRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgSW50ZW50RGF0YSYgaW50ZW50RGF0CiAK
ICAgICBmcmFtZS0+ZGVsaXZlckludGVudChpbnRlbnREYXRhKTsKIH0KKwordm9pZCBXZWJQYWdl
OjpkZWxpdmVyQ29yZUludGVudFRvRnJhbWUodWludDY0X3QgZnJhbWVJRCwgSW50ZW50KiBjb3Jl
SW50ZW50KQoreworICAgIFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNoYXJlZCgpLndl
YkZyYW1lKGZyYW1lSUQpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAg
IGZyYW1lLT5kZWxpdmVySW50ZW50KGNvcmVJbnRlbnQpOworfQogI2VuZGlmCiAKIHZvaWQgV2Vi
UGFnZTo6cHJlZmVyZW5jZXNEaWRDaGFuZ2UoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3Rv
cmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBl
MzI1N2EzLi4xNTMzNGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKQEAgLTEwNiw2ICsxMDYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xh
c3MgRnJhbWU7CiAgICAgY2xhc3MgRnJhbWVWaWV3OwogICAgIGNsYXNzIEhUTUxQbHVnSW5FbGVt
ZW50OworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICBjbGFzcyBJbnRlbnQ7CisjZW5kaWYK
ICAgICBjbGFzcyBLZXlib2FyZEV2ZW50OwogICAgIGNsYXNzIFBhZ2U7CiAgICAgY2xhc3MgUHJp
bnRDb250ZXh0OwpAQCAtNDc4LDcgKzQ4MSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5B
QkxFKFdFQl9JTlRFTlRTKQotICAgIHZvaWQgZGVsaXZlckludGVudFRvRnJhbWUodWludDY0X3Qg
ZnJhbWVJRCwgY29uc3QgSW50ZW50RGF0YSYpOworICAgIHZvaWQgZGVsaXZlckNvcmVJbnRlbnRU
b0ZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OkludGVudCopOwogI2VuZGlmCiAKICAg
ICB2b2lkIHJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dChXZWJDb3JlOjpGcmFtZSosIGNvbnN0IFN0
cmluZyYpOwpAQCAtNjMzLDYgKzYzNiwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgY29udGV4dE1l
bnVIaWRkZW4oKSB7IG1faXNTaG93aW5nQ29udGV4dE1lbnUgPSBmYWxzZTsgfQogI2VuZGlmCiAK
KyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgdm9pZCBkZWxpdmVySW50ZW50VG9GcmFtZSh1
aW50NjRfdCBmcmFtZUlELCBjb25zdCBJbnRlbnREYXRhJik7CisjZW5kaWYKKwogICAgIHN0YXRp
YyB2b2lkIHNjcm9sbChXZWJDb3JlOjpQYWdlKiwgV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9uLCBX
ZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eSk7CiAgICAgc3RhdGljIHZvaWQgbG9naWNhbFNjcm9s
bChXZWJDb3JlOjpQYWdlKiwgV2ViQ29yZTo6U2Nyb2xsTG9naWNhbERpcmVjdGlvbiwgV2ViQ29y
ZTo6U2Nyb2xsR3JhbnVsYXJpdHkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcAppbmRleCA2ZWI4YWI3ZS4uMjdlOGIwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC04MCw2ICs4MCwxMCBAQAogI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JhbmRvbU51bWJlci5oPgogCisjaWYgRU5BQkxFKFdF
Ql9JTlRFTlRTKQorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwu
aD4KKyNlbmRpZgorCiAjaWYgRU5BQkxFKE5FVFdPUktfSU5GTykKICNpbmNsdWRlICJXZWJOZXR3
b3JrSW5mb01hbmFnZXJNZXNzYWdlcy5oIgogI2VuZGlmCkBAIC03OTEsNiArNzk1LDI2IEBAIFdl
YlBhZ2VHcm91cFByb3h5KiBXZWJQcm9jZXNzOjp3ZWJQYWdlR3JvdXAoY29uc3QgV2ViUGFnZUdy
b3VwRGF0YSYgcGFnZUdyb3VwRGF0CiAgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25k
LmdldCgpOwogfQogCisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQordWludDY0X3QgV2ViUHJvY2Vz
czo6YWRkTWVzc2FnZVBvcnRDaGFubmVsKFBhc3NSZWZQdHI8UGxhdGZvcm1NZXNzYWdlUG9ydENo
YW5uZWw+IG1lc3NhZ2VQb3J0Q2hhbm5lbCkKK3sKKyAgICBzdGF0aWMgdWludDY0X3QgY2hhbm5l
bElEID0gMDsKKyAgICBtX21lc3NhZ2VQb3J0Q2hhbm5lbHMuYWRkKCsrY2hhbm5lbElELCBtZXNz
YWdlUG9ydENoYW5uZWwpOworCisgICAgcmV0dXJuIGNoYW5uZWxJRDsKK30KKworUGxhdGZvcm1N
ZXNzYWdlUG9ydENoYW5uZWwqIFdlYlByb2Nlc3M6Om1lc3NhZ2VQb3J0Q2hhbm5lbCh1aW50NjRf
dCBjaGFubmVsSUQpCit7CisgICAgcmV0dXJuIG1fbWVzc2FnZVBvcnRDaGFubmVscy5nZXQoY2hh
bm5lbElEKS5nZXQoKTsKK30KKwordm9pZCBXZWJQcm9jZXNzOjpyZW1vdmVNZXNzYWdlUG9ydENo
YW5uZWwodWludDY0X3QgY2hhbm5lbElEKQoreworICAgIG1fbWVzc2FnZVBvcnRDaGFubmVscy5y
ZW1vdmUoY2hhbm5lbElEKTsKK30KKyNlbmRpZgorCiBzdGF0aWMgYm9vbCBjYW5QbHVnaW5IYW5k
bGVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBTdHJp
bmcgcGx1Z2luUGF0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXgg
MGQwMDVhNC4uZDNkZjFiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgK
QEAgLTc4LDYgKzc4LDkgQEAgUVRfRU5EX05BTUVTUEFDRQogbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIGNsYXNzIEludFNpemU7CiAgICAgY2xhc3MgUGFnZUdyb3VwOworI2lmIEVOQUJMRShXRUJf
SU5URU5UUykKKyAgICBjbGFzcyBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDsKKyNlbmRpZgog
ICAgIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKICAgICBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwog
fQpAQCAtMTEyLDcgKzExNSwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjcmVhdGVXZWJQYWdlKHVp
bnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYpOwogICAgIHZv
aWQgcmVtb3ZlV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQpOwogICAgIFdlYlBhZ2UqIGZvY3VzZWRX
ZWJQYWdlKCkgY29uc3Q7Ci0gICAgCisKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpIAorICAgIHVp
bnQ2NF90IGFkZE1lc3NhZ2VQb3J0Q2hhbm5lbChQYXNzUmVmUHRyPFdlYkNvcmU6OlBsYXRmb3Jt
TWVzc2FnZVBvcnRDaGFubmVsPik7CisgICAgV2ViQ29yZTo6UGxhdGZvcm1NZXNzYWdlUG9ydENo
YW5uZWwqIG1lc3NhZ2VQb3J0Q2hhbm5lbCh1aW50NjRfdCk7CisgICAgdm9pZCByZW1vdmVNZXNz
YWdlUG9ydENoYW5uZWwodWludDY0X3QpOworI2VuZGlmCisKICAgICBJbmplY3RlZEJ1bmRsZSog
aW5qZWN0ZWRCdW5kbGUoKSBjb25zdCB7IHJldHVybiBtX2luamVjdGVkQnVuZGxlLmdldCgpOyB9
CiAKICAgICBib29sIGlzU2VwYXJhdGVQcm9jZXNzKCkgY29uc3Q7CkBAIC0zMDAsNiArMzA5LDEw
IEBAIHByaXZhdGU6CiAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBXZWJGcmFtZSo+IG1fZnJhbWVN
YXA7CiAKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVm
UHRyPFdlYkNvcmU6OlBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsPiA+IG1fbWVzc2FnZVBvcnRD
aGFubmVsczsKKyNlbmRpZgorCiAgICAgSGFzaFNldDxTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD4g
bV9taW1lVHlwZXNXaXRoQ3VzdG9tUmVwcmVzZW50YXRpb25zOwogCiAgICAgVGV4dENoZWNrZXJT
dGF0ZSBtX3RleHRDaGVja2VyU3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggMGY4M2Q1Yi4uMjI3MTZjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjcs
NiArMjcsMTAgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyB7CiAgICAgIyBDcmVhdGUgYSBuZXcg
cGFnZS4KICAgICBDcmVhdGVXZWJQYWdlKHVpbnQ2NF90IG5ld1BhZ2VJRCwgV2ViS2l0OjpXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHBhZ2VDcmVhdGlvblBhcmFtZXRlcnMpCiAKKyNpZiBFTkFC
TEUoV0VCX0lOVEVOVFMpCisgICAgUmVtb3ZlTWVzc2FnZVBvcnRDaGFubmVsKHVpbnQ2NF90IGNo
YW5uZWxJRCk7CisjZW5kaWYKKwogICAgICMgVmlzaXRlZCBsaW5rIHRyYWNraW5nLgogICAgIFNl
dFZpc2l0ZWRMaW5rVGFibGUoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGUpCiAg
ICAgVmlzaXRlZExpbmtTdGF0ZUNoYW5nZWQoVmVjdG9yPFdlYkNvcmU6OkxpbmtIYXNoPiBsaW5r
SGFzaGVzKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDU0NGVmZDYuLjRjZDJlOTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMi0wNy0zMSAgQ2hyaXN0b3BoZSBE
dW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgorCisgICAgICAgIFtXSzJdIEFkZCBz
dXBwb3J0IGZvciBXZWIgSW50ZW50cyBNZXNzYWdlUG9ydHMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5MDcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFdLQnVuZGxlSW50ZW50IGluc3RlYWQgb2Yg
V2ViSW50ZW50RGF0YSBpbgorICAgICAgICBXZWJLaXRUZXN0UnVubmVyLiBXVFIgbm93IHByaW50
cyB0aGUgbnVtYmVyIG9mCisgICAgICAgIE1lc3NhZ2VQb3J0cyBpbiByZWNlaXZlZCBXZWIgaW50
ZW50cyBhcworICAgICAgICBleHBlY3RlZCBieSB3ZWJpbnRlbnRzLyogbGF5b3V0IHRlc3RzLgor
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZVBhZ2UuY3BwOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZFJlY2VpdmVJ
bnRlbnRGb3JGcmFtZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OkxheW91dFRlc3RDb250
cm9sbGVyOjpkZWxpdmVyV2ViSW50ZW50KToKKwogMjAxMi0wNy0zMCAgUnlvc3VrZSBOaXdhICA8
cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZlcnQgcjEyNDE1MyBhbmQgbGFuZCB0aGUg
InJpZ2h0IiBidWlsZCBmaXggcGVyIGFwJ3MgY29tbWVudCBvbiB0aGUgYnVnIDkyNjc2LgpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2UuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2UuY3BwCmluZGV4IDE2MzcxZDEuLjFlYmMyZjAgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNw
cAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZS5jcHAKQEAgLTUwLDggKzUwLDggQEAKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9J
TlRFTlRTKQorI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVJbnRlbnQuaD4KICNpbmNsdWRlIDxX
ZWJLaXQyL1dLQnVuZGxlSW50ZW50UmVxdWVzdC5oPgotI2luY2x1ZGUgPFdlYktpdDIvV0tJbnRl
bnREYXRhLmg+CiAjZW5kaWYKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFNfVEFHKQogI2luY2x1ZGUg
PFdlYktpdDIvV0tJbnRlbnRTZXJ2aWNlSW5mby5oPgpAQCAtNDMwLDE5ICs0MzAsMjQgQEAgdm9p
ZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZShXS0J1bmRsZVBh
Z2VSZWYgcGFnZSwgV0tCdW5kbGUKIHsKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCiAgICAgc3Rh
dGljX2Nhc3Q8SW5qZWN0ZWRCdW5kbGVQYWdlKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5m
bykpLT5tX2N1cnJlbnRJbnRlbnRSZXF1ZXN0ID0gaW50ZW50UmVxdWVzdDsKLSAgICBXS1JldGFp
blB0cjxXS0ludGVudERhdGFSZWY+IGludGVudChBZG9wdFdLLCBXS0J1bmRsZUludGVudFJlcXVl
c3RDb3B5SW50ZW50RGF0YShpbnRlbnRSZXF1ZXN0KSk7CisgICAgV0tSZXRhaW5QdHI8V0tCdW5k
bGVJbnRlbnRSZWY+IGludGVudChBZG9wdFdLLCBXS0J1bmRsZUludGVudFJlcXVlc3RDb3B5SW50
ZW50KGludGVudFJlcXVlc3QpKTsKIAogICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJp
bmdCdWlsZGVyKCktPmFwcGVuZCgiUmVjZWl2ZWQgV2ViIEludGVudDogYWN0aW9uPSIpOwotICAg
IFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB3a0FjdGlvbihBZG9wdFdLLCBXS0ludGVudERhdGFD
b3B5QWN0aW9uKGludGVudC5nZXQoKSkpOworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB3
a0FjdGlvbihBZG9wdFdLLCBXS0J1bmRsZUludGVudENvcHlBY3Rpb24oaW50ZW50LmdldCgpKSk7
CiAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKHRv
V1RGU3RyaW5nKHdrQWN0aW9uLmdldCgpKSk7CiAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgp
LnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKCIgdHlwZT0iKTsKLSAgICBXS1JldGFpblB0cjxXS1N0
cmluZ1JlZj4gd2tUeXBlKEFkb3B0V0ssIFdLSW50ZW50RGF0YUNvcHlUeXBlKGludGVudC5nZXQo
KSkpOworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB3a1R5cGUoQWRvcHRXSywgV0tCdW5k
bGVJbnRlbnRDb3B5VHlwZShpbnRlbnQuZ2V0KCkpKTsKICAgICBJbmplY3RlZEJ1bmRsZTo6c2hh
cmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQodG9XVEZTdHJpbmcod2tUeXBlLmdldCgpKSk7
CiAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKCJc
biIpOwogCi0gICAgLy8gRklYTUU6IFByaW50IG51bWJlciBvZiBwb3J0cyB3aGVuIGV4cG9zZWQg
aW4gV2ViS2l0MgorICAgIGNvbnN0IHNpemVfdCBudW1NZXNzYWdlUG9ydHMgPSBXS0J1bmRsZUlu
dGVudE1lc3NhZ2VQb3J0Q291bnQoaW50ZW50LmdldCgpKTsKKyAgICBpZiAobnVtTWVzc2FnZVBv
cnRzKSB7CisgICAgICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCkt
PmFwcGVuZCgiSGF2ZSAiKTsKKyAgICAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmlu
Z0J1aWxkZXIoKS0+YXBwZW5kKFdURjo6U3RyaW5nOjpudW1iZXIobnVtTWVzc2FnZVBvcnRzKSk7
CisgICAgICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVu
ZCgiIHBvcnRzXG4iKTsKKyAgICB9CiAKLSAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gd2tTZXJ2
aWNlVXJsKEFkb3B0V0ssIFdLSW50ZW50RGF0YUNvcHlTZXJ2aWNlKGludGVudC5nZXQoKSkpOwor
ICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiB3a1NlcnZpY2VVcmwoQWRvcHRXSywgV0tCdW5kbGVJ
bnRlbnRDb3B5U2VydmljZShpbnRlbnQuZ2V0KCkpKTsKICAgICBpZiAod2tTZXJ2aWNlVXJsKSB7
CiAgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB3a1NlcnZpY2UoQWRvcHRXSywgV0tV
UkxDb3B5U3RyaW5nKHdrU2VydmljZVVybC5nZXQoKSkpOwogICAgICAgICBpZiAod2tTZXJ2aWNl
ICYmICFXS1N0cmluZ0lzRW1wdHkod2tTZXJ2aWNlLmdldCgpKSkgewpAQCAtNDUyLDcgKzQ1Nyw3
IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWUoV0tC
dW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBXS1Jl
dGFpblB0cjxXS0RpY3Rpb25hcnlSZWY+IHdrRXh0cmFzKEFkb3B0V0ssIFdLSW50ZW50RGF0YUNv
cHlFeHRyYXMoaW50ZW50LmdldCgpKSk7CisgICAgV0tSZXRhaW5QdHI8V0tEaWN0aW9uYXJ5UmVm
PiB3a0V4dHJhcyhBZG9wdFdLLCBXS0J1bmRsZUludGVudENvcHlFeHRyYXMoaW50ZW50LmdldCgp
KSk7CiAgICAgV0tSZXRhaW5QdHI8V0tBcnJheVJlZj4gd2tFeHRyYUtleXMoQWRvcHRXSywgV0tE
aWN0aW9uYXJ5Q29weUtleXMod2tFeHRyYXMuZ2V0KCkpKTsKICAgICBjb25zdCBzaXplX3QgbnVt
RXh0cmFLZXlzID0gV0tBcnJheUdldFNpemUod2tFeHRyYUtleXMuZ2V0KCkpOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbnVtRXh0cmFLZXlzOyArK2kpIHsKQEAgLTQ2NSw3ICs0NzAsNyBA
QCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKFdLQnVu
ZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZQogICAgICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVk
KCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoIlxuIik7CiAgICAgfQogCi0gICAgV0tSZXRhaW5Q
dHI8V0tBcnJheVJlZj4gd2tTdWdnZXN0aW9ucyhBZG9wdFdLLCBXS0ludGVudERhdGFDb3B5U3Vn
Z2VzdGlvbnMoaW50ZW50LmdldCgpKSk7CisgICAgV0tSZXRhaW5QdHI8V0tBcnJheVJlZj4gd2tT
dWdnZXN0aW9ucyhBZG9wdFdLLCBXS0J1bmRsZUludGVudENvcHlTdWdnZXN0aW9ucyhpbnRlbnQu
Z2V0KCkpKTsKICAgICBjb25zdCBzaXplX3QgbnVtU3VnZ2VzdGlvbnMgPSBXS0FycmF5R2V0U2l6
ZSh3a1N1Z2dlc3Rpb25zLmdldCgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bVN1
Z2dlc3Rpb25zOyArK2kpIHsKICAgICAgICAgV0tTdHJpbmdSZWYgd2tTdWdnZXN0aW9uID0gc3Rh
dGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLQXJyYXlHZXRJdGVtQXRJbmRleCh3a1N1Z2dlc3Rpb25z
LmdldCgpLCBpKSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDMzNzZlZDAuLjc2
MGQ0OTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
TGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC00OSw4ICs0OSw4IEBACiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiAjaWYgRU5BQkxFKFdFQl9JTlRF
TlRTKQorI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVJbnRlbnQuaD4KICNpbmNsdWRlIDxXZWJL
aXQyL1dLQnVuZGxlSW50ZW50UmVxdWVzdC5oPgotI2luY2x1ZGUgPFdlYktpdDIvV0tJbnRlbnRE
YXRhLmg+CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdUUiB7CkBAIC02NDksOCArNjQ5LDggQEAgdm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZGVsaXZlcldlYkludGVudChKU1N0cmluZ1JlZiBhY3Rp
b24sIEpTU3RyaW5nUmVmIHR5cGUKICAgICBXS0RpY3Rpb25hcnlBZGRJdGVtKGludGVudEluaXRE
aWN0LmdldCgpLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygidHlwZSIpLCB0eXBlV0su
Z2V0KCkpOwogICAgIFdLRGljdGlvbmFyeUFkZEl0ZW0oaW50ZW50SW5pdERpY3QuZ2V0KCksIFdL
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJkYXRhIiksIGRhdGFXSy5nZXQoKSk7CiAKLSAg
ICBXS1JldGFpblB0cjxXS0ludGVudERhdGFSZWY+IHdrSW50ZW50RGF0YShBZG9wdFdLLCBXS0lu
dGVudERhdGFDcmVhdGUoaW50ZW50SW5pdERpY3QuZ2V0KCkpKTsKLSAgICBXS0J1bmRsZVBhZ2VE
ZWxpdmVySW50ZW50VG9GcmFtZShJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdl
KCksIG1haW5GcmFtZSwgd2tJbnRlbnREYXRhLmdldCgpKTsKKyAgICBXS1JldGFpblB0cjxXS0J1
bmRsZUludGVudFJlZj4gd2tJbnRlbnQoQWRvcHRXSywgV0tCdW5kbGVJbnRlbnRDcmVhdGUoaW50
ZW50SW5pdERpY3QuZ2V0KCkpKTsKKyAgICBXS0J1bmRsZVBhZ2VEZWxpdmVySW50ZW50VG9GcmFt
ZShJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdlKCksIG1haW5GcmFtZSwgd2tJ
bnRlbnQuZ2V0KCkpOwogI2VuZGlmCiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156152</attachid>
            <date>2012-08-02 13:39:04 -0700</date>
            <delta_ts>2012-08-04 06:58:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>89072_wk2_messagePorts.patch</filename>
            <type>text/plain</type>
            <size>69244</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKaW5kZXggYTk1ZWJhMS4uNjNjZjk0ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0
cy50eHQKQEAgLTU0LDYgKzU0LDcgQEAgU0VUKFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwog
ICAgICIke1dFQkNPUkVfRElSfS9icmlkZ2UvanNjIgogICAgICIke1dFQkNPUkVfRElSfS9jc3Mi
CiAgICAgIiR7V0VCQ09SRV9ESVJ9L2RvbSIKKyAgICAiJHtXRUJDT1JFX0RJUn0vZG9tL2RlZmF1
bHQiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2VkaXRpbmciCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2hp
c3RvcnkiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2h0bWwiCkBAIC0xNTksNyArMTYwLDYgQEAgU0VU
KFdlYktpdDJfU09VUkNFUwogICAgIFNoYXJlZC9XZWJHcmFwaGljc0NvbnRleHQuY3BwCiAgICAg
U2hhcmVkL1dlYkhpdFRlc3RSZXN1bHQuY3BwCiAgICAgU2hhcmVkL1dlYkltYWdlLmNwcAotICAg
IFNoYXJlZC9XZWJJbnRlbnREYXRhLmNwcAogICAgIFNoYXJlZC9XZWJJbnRlbnRTZXJ2aWNlSW5m
by5jcHAKICAgICBTaGFyZWQvV2ViS2V5Ym9hcmRFdmVudC5jcHAKICAgICBTaGFyZWQvV2ViTGF5
ZXJUcmVlSW5mby5jcHAKQEAgLTI1Myw2ICsyNTMsNyBAQCBTRVQoV2ViS2l0Ml9TT1VSQ0VTCiAg
ICAgVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5jcHAKICAgICBVSVByb2Nlc3MvV2ViSWNvbkRh
dGFiYXNlQ2xpZW50LmNwcAogICAgIFVJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKKyAg
ICBVSVByb2Nlc3MvV2ViSW50ZW50RGF0YS5jcHAKICAgICBVSVByb2Nlc3MvV2ViS2V5VmFsdWVT
dG9yYWdlTWFuYWdlclByb3h5LmNwcAogICAgIFVJUHJvY2Vzcy9XZWJMYXllclRyZWVSZW5kZXJl
ci5jcHAKICAgICBVSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmNwcApAQCAtMzcxLDYgKzM3Miw3
IEBAIFNFVChXZWJLaXQyX1NPVVJDRVMKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlQ2xpZW50LmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3BwCisgICAgV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudC5jcHAKICAgICBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5jcHAKICAgICBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAKICAg
ICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZURpYWdub3N0aWNM
b2dnaW5nQ2xpZW50LmNwcApAQCAtMzkxLDYgKzM5Myw3IEBAIFNFVChXZWJLaXQyX1NPVVJDRVMK
ICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwCiAg
ICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUhpdFRlc3RSZXN1bHQu
Y3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUluc3BlY3Rv
ci5jcHAKKyAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50
LmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnRS
ZXF1ZXN0LmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVO
YXZpZ2F0aW9uQWN0aW9uLmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVOb2RlSGFuZGxlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDczNmFlMWUuLjdmNzNjZjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMzEgQEAKKzIwMTItMDctMzEgIENocmlzdG9waGUgRHVtZXog
IDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKworICAgICAgICBbV0syXSBBZGQgc3VwcG9y
dCBmb3IgV2ViIEludGVudHMgTWVzc2FnZVBvcnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTA3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBXZWJJbnRlbnRzIE1lc3NhZ2VQ
b3J0cyBpbiBXZWJLaXQyLgorICAgICAgICBNZXNzYWdlUG9ydHMgY2FuIGJlIHBhc3NlZCB3aXRo
IGEgV2ViIEludGVudCBpbgorICAgICAgICBvcmRlciB0byBvcGVuIGEgZGlyZWN0IGNvbW11bmlj
YXRpb24gY2hhbm5lbAorICAgICAgICBiZXR3ZWVuIHRoZSBXZWIgYXBwbGljYXRpb24gYW5kIHRo
ZSBpbnRlbnQgc2VydmljZS4KKyAgICAgICAgVGhpcyBmdW5jdGlvbmFsaXR5IGlzIGFscmVhZHkg
c3VwcG9ydGVkIGJ5IFdlYktpdCAxLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBh
IG5ldyBJbmplY3RlZEJ1bmRsZUludGVudAorICAgICAgICBjbGFzcyB3aGljaCB3cmFwcyBhIFdl
YkNvcmU6OkludGVudC4gVGhpcyB3YXkKKyAgICAgICAgaW5mb3JtYXRpb24gcmVnYXJkaW5nIHRo
ZSBNZXNzYWdlUG9ydHMgaW4gYSBXZWIKKyAgICAgICAgSW50ZW50IGlzIGtlcHQgd2hlbiB1c2lu
ZyBhbiBpbmplY3RlZCBidW5kbGUuCisKKyAgICAgICAgRm9yIHRoZSBVSVByb2Nlc3MsIFdlYklu
dGVudERhdGEgbm93IGNhcnJpZXMKKyAgICAgICAgaWRlbnRpZmllcnMgZm9yIHRoZSBNZXNzYWdl
UG9ydHMgd2hpY2ggY2FuIGdvIG92ZXIKKyAgICAgICAgSVBDLiBUaG9zZSBpZGVudGlmaWVycyBt
YXAgdG8gYWN0dWFsIE1lc3NhZ2VQb3J0cworICAgICAgICBzdG9yZWQgaW4gdGhlIFdlYiBwcm9j
ZXNzLiBUaGlzIHdheSwgd2hlbiB0aGUgVUkKKyAgICAgICAgZGVsaXZlcnMgYW4gaW50ZW50IHRv
IGEgZnJhbWUsIHdlIGNhbiBnZXQgYmFjayB0aGUKKyAgICAgICAgY29ycmVzcG9uZGluZyBNZXNz
YWdlUG9ydHMgZnJvbSB0aGUgV2ViIHByb2Nlc3MKKyAgICAgICAgYmVmb3JlIGRlbGl2ZXJpbmcg
dG8gdGhlIERPTVdpbmRvdy4KKworICAgICAgICBUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgYWxyZWFk
eSB0ZXN0ZWQgYnk6CisgICAgICAgIHdlYmludGVudHMvd2ViLWludGVudHMtaW52b2tlLXBvcnQu
aHRtbAorICAgICAgICB3ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLW9iai1jb25zdHJ1Y3Rvci5odG1s
CisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0
LmFtOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0Jhc2UuaDoKKyAgICAgICAgKiBTaGFyZWQv
QVBJT2JqZWN0Lmg6CisgICAgICAgICogU2hhcmVkL0ludGVudERhdGEuY3BwOgorICAgICAgICAo
V2ViS2l0OjpJbnRlbnREYXRhOjpJbnRlbnREYXRhKToKKyAgICAgICAgKFdlYktpdDo6SW50ZW50
RGF0YTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6SW50ZW50RGF0YTo6ZGVjb2RlKToKKyAg
ICAgICAgKiBTaGFyZWQvSW50ZW50RGF0YS5oOgorICAgICAgICAoSW50ZW50RGF0YSk6CisgICAg
ICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tJbnRlbnREYXRh
LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tJbnRlbnREYXRhLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYkludGVudERhdGEuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViSW50ZW50RGF0YS5jcHAuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJJbnRlbnREYXRhOjpXZWJJbnRlbnREYXRhKToKKyAgICAgICAgKFdlYktpdDo6
V2ViSW50ZW50RGF0YTo6fldlYkludGVudERhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnRl
bnREYXRhOjpkYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW50ZW50RGF0YTo6c3VnZ2VzdGlv
bnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnRlbnREYXRhOjpleHRyYSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkludGVudERhdGE6OmV4dHJhcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYklu
dGVudERhdGEuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkludGVudERh
dGEuaC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJJbnRlbnREYXRhKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViSW50ZW50RGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SW50ZW50RGF0YTo6YWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW50ZW50RGF0YTo6cGF5
bG9hZFR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnRlbnREYXRhOjpzZXJ2aWNlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSW50ZW50RGF0YTo6c3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJbnRlbnREYXRhOjp0eXBlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlSW50ZW50Rm9yRnJh
bWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnJlbW92ZU1lc3NhZ2VQb3J0Q2hhbm5lbCk6CisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAg
ICAgICAgKFdlYlByb2Nlc3NQcm94eSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZUFQSUNhc3QuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudC5jcHA6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0ludGVudERhdGEuY3Bw
LgorICAgICAgICAoV0tCdW5kbGVJbnRlbnRHZXRUeXBlSUQpOgorICAgICAgICAoV0tCdW5kbGVJ
bnRlbnRDcmVhdGUpOgorICAgICAgICAoV0tCdW5kbGVJbnRlbnRDb3B5QWN0aW9uKToKKyAgICAg
ICAgKFdLQnVuZGxlSW50ZW50Q29weVR5cGUpOgorICAgICAgICAoV0tCdW5kbGVJbnRlbnRDb3B5
U2VydmljZSk6CisgICAgICAgIChXS0J1bmRsZUludGVudENvcHlTdWdnZXN0aW9ucyk6CisgICAg
ICAgIChXS0J1bmRsZUludGVudENvcHlFeHRyYSk6CisgICAgICAgIChXS0J1bmRsZUludGVudENv
cHlFeHRyYXMpOgorICAgICAgICAoV0tCdW5kbGVJbnRlbnRNZXNzYWdlUG9ydENvdW50KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50Lmg6
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0ludGVudERhdGEu
aC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50
ZW50UmVxdWVzdC5jcHA6CisgICAgICAgIChXS0J1bmRsZUludGVudFJlcXVlc3RDb3B5SW50ZW50
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50
ZW50UmVxdWVzdC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdLQnVuZGxlUGFnZURlbGl2ZXJJbnRlbnRUb0Zy
YW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
UGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVJbnRlbnQuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkludGVu
dERhdGEuY3BwLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRC
dW5kbGVJbnRlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlSW50
ZW50OjpJbmplY3RlZEJ1bmRsZUludGVudCk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVu
ZGxlSW50ZW50OjphY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZUludGVu
dDo6cGF5bG9hZFR5cGUpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZUludGVudDo6
c2VydmljZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlSW50ZW50OjpkYXRhKToK
KyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OmV4dHJhKToKKyAgICAgICAg
KFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OmV4dHJhcyk6CisgICAgICAgIChXZWJLaXQ6
OkluamVjdGVkQnVuZGxlSW50ZW50OjpzdWdnZXN0aW9ucyk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudC5oOiBSZW5hbWVkIGZyb20gU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYkludGVudERhdGEuaC4KKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChJbmplY3RlZEJ1bmRsZUludGVudCk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVk
QnVuZGxlSW50ZW50Ojpjb3JlSW50ZW50KToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5k
bGVJbnRlbnQ6OnR5cGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRC
dW5kbGVJbnRlbnRSZXF1ZXN0OjppbnRlbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0Lmg6CisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6
ZGVsaXZlckludGVudCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJGcmFtZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJGcmFt
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGVsaXZlckNvcmVJbnRlbnRUb0Zy
YW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJQYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjphZGRNZXNzYWdlUG9ydENo
YW5uZWwpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6
bWVzc2FnZVBvcnRDaGFubmVsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cmVtb3Zl
TWVzc2FnZVBvcnRDaGFubmVsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoK
KyAgICAgICAgKFdlYlByb2Nlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5t
ZXNzYWdlcy5pbjoKKwogMjAxMi0wOC0wMiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lh
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gSW5zcGVjdG9yIHNob3VsZCBzZXQgYSBkZWZh
dWx0IGF0dGFjaGVkIGhlaWdodCBiZWZvcmUgYmVpbmcgYXR0YWNoZWQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtl
ZmlsZS5saXN0LmFtCmluZGV4IGU3YTY0ZjAuLmVkOGMwNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZp
bGUubGlzdC5hbQpAQCAtNDY5LDggKzQ2OSw2IEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHQuaCBcCiAJU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYkltYWdlLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkltYWdlLmgg
XAotCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJJbnRlbnREYXRhLmNwcCBcCi0JU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYkludGVudERhdGEuaCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YkludGVudFNlcnZpY2VJbmZvLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkludGVu
dFNlcnZpY2VJbmZvLmggXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJLZXlib2FyZEV2ZW50
LmNwcCBcCkBAIC04NzEsNiArODY5LDggQEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlQ2xpZW50LmggXAogCVNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViSW50ZW50RGF0YS5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnRlbnRE
YXRhLmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJLZXlWYWx1ZVN0b3JhZ2VNYW5h
Z2VyUHJveHkuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViS2V5VmFsdWVTdG9y
YWdlTWFuYWdlclByb3h5LmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJNZWRpYUNh
Y2hlTWFuYWdlclByb3h5LmNwcCBcCkBAIC05NjQsNiArOTY0LDggQEAgd2Via2l0Ml9zb3VyY2Vz
ICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlSW5pdGlhbGl6ZS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlSW5zcGVjdG9yLmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUluc3BlY3Rvci5oIFwKKwlTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50
LmNwcCBcCisJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZUludGVudC5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50UmVxdWVzdC5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnRSZXF1ZXN0LmggXAog
CVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVO
b2RlSGFuZGxlLmNwcCBcCkBAIC05OTgsNiArMTAwMCw4IEBAIHdlYmtpdDJfc291cmNlcyArPSBc
CiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZURPTVdpbmRvd0V4dGVuc2lvbi5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAgXAogCVNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0
LmggXAorCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVJbnRlbnQuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlSW50ZW50LmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0LmNwcCBcCiAJU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudFJl
cXVlc3QuaCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9X
S0Jhc2UuaAppbmRleCA2ODU0ZWNjLi5hNmE4YmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9j
L1dLQmFzZS5oCkBAIC0xMzUsNiArMTM1LDcgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVl
V0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24qIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW8KIHR5
cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQnVuZGxlRnJhbWUqIFdLQnVuZGxlRnJhbWVSZWY7
CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRsZUhpdFRlc3RSZXN1bHQqIFdLQnVu
ZGxlSGl0VGVzdFJlc3VsdFJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQnVuZGxl
SW5zcGVjdG9yKiBXS0J1bmRsZUluc3BlY3RvclJlZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0IE9w
YXF1ZVdLQnVuZGxlSW50ZW50KiBXS0J1bmRsZUludGVudFJlZjsKIHR5cGVkZWYgY29uc3Qgc3Ry
dWN0IE9wYXF1ZVdLQnVuZGxlSW50ZW50UmVxdWVzdCogV0tCdW5kbGVJbnRlbnRSZXF1ZXN0UmVm
OwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uKiBX
S0J1bmRsZU5hdmlnYXRpb25BY3Rpb25SZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVX
S0J1bmRsZU5vZGVIYW5kbGUqIFdLQnVuZGxlTm9kZUhhbmRsZVJlZjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UElPYmplY3QuaAppbmRleCA4ZTRkMjkzLi43MDhlZmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9i
amVjdC5oCkBAIC0xMTcsNiArMTE3LDcgQEAgcHVibGljOgogICAgICAgICBUeXBlQnVuZGxlRnJh
bWUsCiAgICAgICAgIFR5cGVCdW5kbGVIaXRUZXN0UmVzdWx0LAogICAgICAgICBUeXBlQnVuZGxl
SW5zcGVjdG9yLAorICAgICAgICBUeXBlQnVuZGxlSW50ZW50LAogICAgICAgICBUeXBlQnVuZGxl
SW50ZW50UmVxdWVzdCwKICAgICAgICAgVHlwZUJ1bmRsZU5hdmlnYXRpb25BY3Rpb24sCiAgICAg
ICAgIFR5cGVCdW5kbGVOb2RlSGFuZGxlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0ludGVudERhdGEuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0ludGVudERhdGEuY3Bw
CmluZGV4IDQ5OTViMmUuLjQxMDc4NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9JbnRlbnREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW50ZW50RGF0YS5j
cHAKQEAgLTMxLDcgKzMxLDEwIEBACiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAi
RGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2lu
Y2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ludGVudC5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvTWVzc2FnZVBvcnRDaGFubmVsLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0
Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApA
QCAtNDUsNiArNDgsMTIgQEAgSW50ZW50RGF0YTo6SW50ZW50RGF0YShJbnRlbnQqIGNvcmVJbnRl
bnQpCiAgICAgLCBleHRyYXMoY29yZUludGVudC0+ZXh0cmFzKCkpCiAgICAgLCBzdWdnZXN0aW9u
cyhjb3JlSW50ZW50LT5zdWdnZXN0aW9ucygpKQogeworICAgIE1lc3NhZ2VQb3J0Q2hhbm5lbEFy
cmF5KiBjb3JlTWVzc2FnZVBvcnRzID0gY29yZUludGVudC0+bWVzc2FnZVBvcnRzKCk7CisgICAg
aWYgKGNvcmVNZXNzYWdlUG9ydHMpIHsKKyAgICAgICAgc2l6ZV90IG51bU1lc3NhZ2VQb3J0cyA9
IGNvcmVNZXNzYWdlUG9ydHMtPnNpemUoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBudW1NZXNzYWdlUG9ydHM7ICsraSkKKyAgICAgICAgICAgIG1lc3NhZ2VQb3J0cy5hcHBlbmQo
V2ViUHJvY2Vzczo6c2hhcmVkKCkuYWRkTWVzc2FnZVBvcnRDaGFubmVsKCgqY29yZU1lc3NhZ2VQ
b3J0cylbaV0tPmNoYW5uZWwoKSkpOworICAgIH0KIH0KIAogdm9pZCBJbnRlbnREYXRhOjplbmNv
ZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyKSBjb25zdApAQCAtNTUsNiArNjQs
NyBAQCB2b2lkIEludGVudERhdGE6OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqIGVu
Y29kZXIpIGNvbnN0CiAgICAgZW5jb2Rlci0+ZW5jb2RlKENvcmVJUEM6OkRhdGFSZWZlcmVuY2Uo
ZGF0YSkpOwogICAgIGVuY29kZXItPmVuY29kZShleHRyYXMpOwogICAgIGVuY29kZXItPmVuY29k
ZShzdWdnZXN0aW9ucyk7CisgICAgZW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2VQb3J0cyk7CiB9CiAK
IGJvb2wgSW50ZW50RGF0YTo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2Rl
ciwgSW50ZW50RGF0YSYgaW50ZW50RGF0YSkKQEAgLTczLDYgKzgzLDggQEAgYm9vbCBJbnRlbnRE
YXRhOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBJbnRlbnREYXRh
JiBpbnRlbnREYXQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci0+ZGVj
b2RlKGludGVudERhdGEuc3VnZ2VzdGlvbnMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKCFkZWNvZGVyLT5kZWNvZGUoaW50ZW50RGF0YS5tZXNzYWdlUG9ydHMpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9JbnRlbnREYXRhLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW50ZW50
RGF0YS5oCmluZGV4IDk2ZTJkOWYuLmU4NDM1YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9JbnRlbnREYXRhLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0ludGVudERh
dGEuaApAQCAtMjksNyArMjksOCBAQAogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKIAogI2luY2x1
ZGUgIkFQSU9iamVjdC5oIgotI2luY2x1ZGUgIkdlbmVyaWNDYWxsYmFjay5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvS1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBDb3JlSVBDIHsKQEAgLTU2LDYgKzU3LDcg
QEAgc3RydWN0IEludGVudERhdGEgewogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgIEhh
c2hNYXA8U3RyaW5nLCBTdHJpbmc+IGV4dHJhczsKICAgICBWZWN0b3I8V2ViQ29yZTo6S1VSTD4g
c3VnZ2VzdGlvbnM7CisgICAgVmVjdG9yPHVpbnQ2NF90PiBtZXNzYWdlUG9ydHM7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJJbnRlbnREYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJJbnRlbnREYXRhLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTYxMjhkYi4uMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSW50ZW50RGF0YS5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSw3NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9u
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiV2ViSW50ZW50RGF0YS5oIgotCi0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotCi0j
aW5jbHVkZSAiSW1tdXRhYmxlQXJyYXkuaCIKLSNpbmNsdWRlICJJbW11dGFibGVEaWN0aW9uYXJ5
LmgiCi0jaW5jbHVkZSAiV2ViU3RyaW5nLmgiCi0jaW5jbHVkZSAiV2ViVVJMLmgiCi0KLW5hbWVz
cGFjZSBXZWJLaXQgewotCi1XZWJJbnRlbnREYXRhOjpXZWJJbnRlbnREYXRhKGNvbnN0IEludGVu
dERhdGEmIHN0b3JlKQotICAgIDogbV9zdG9yZShzdG9yZSkKLXsKLX0KLQotUGFzc1JlZlB0cjxX
ZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFdlYkludGVudERhdGE6OmRhdGEoKSBjb25zdAotewot
ICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhQ29weSA9IG1fc3RvcmUuZGF0YTsKLSAgICByZXR1cm4g
V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlOjphZG9wdChkYXRhQ29weSk7Ci19Ci0KLVBhc3NSZWZQ
dHI8SW1tdXRhYmxlQXJyYXk+IFdlYkludGVudERhdGE6OnN1Z2dlc3Rpb25zKCkgY29uc3QKLXsK
LSAgICBjb25zdCBzaXplX3QgbnVtU3VnZ2VzdGlvbnMgPSBtX3N0b3JlLnN1Z2dlc3Rpb25zLnNp
emUoKTsKLSAgICBWZWN0b3I8UmVmUHRyPEFQSU9iamVjdD4gPiB3a1N1Z2dlc3Rpb25zKG51bVN1
Z2dlc3Rpb25zKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtU3VnZ2VzdGlvbnM7
ICsraSkKLSAgICAgICAgd2tTdWdnZXN0aW9uc1tpXSA9IFdlYlVSTDo6Y3JlYXRlKG1fc3RvcmUu
c3VnZ2VzdGlvbnNbaV0pOwotICAgIHJldHVybiBJbW11dGFibGVBcnJheTo6YWRvcHQod2tTdWdn
ZXN0aW9ucyk7Ci19Ci0KLVN0cmluZyBXZWJJbnRlbnREYXRhOjpleHRyYShjb25zdCBTdHJpbmcm
IGtleSkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zdG9yZS5leHRyYXMuZ2V0KGtleSk7Ci19Ci0K
LVBhc3NSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4gV2ViSW50ZW50RGF0YTo6ZXh0cmFzKCkg
Y29uc3QKLXsKLSAgICBJbW11dGFibGVEaWN0aW9uYXJ5OjpNYXBUeXBlIHdrRXh0cmFzOwotICAg
IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3N0b3JlLmV4
dHJhcy5lbmQoKTsKLSAgICBmb3IgKEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Ojpjb25zdF9pdGVy
YXRvciBpdCA9IG1fc3RvcmUuZXh0cmFzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAg
ICAgd2tFeHRyYXMuc2V0KGl0LT5maXJzdCwgV2ViU3RyaW5nOjpjcmVhdGUoaXQtPnNlY29uZCkp
OwotICAgIHJldHVybiBJbW11dGFibGVEaWN0aW9uYXJ5OjphZG9wdCh3a0V4dHJhcyk7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9JTlRFTlRTKQot
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViSW50ZW50RGF0YS5oIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYkludGVudERhdGEuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZGVjZjRhZS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
SW50ZW50RGF0YS5oCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2lmbmRlZiBXZWJJbnRlbnREYXRhX2gKLSNkZWZpbmUgV2ViSW50ZW50RGF0YV9o
Ci0KLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0KLSNpbmNsdWRlICJBUElPYmplY3QuaCIKLSNp
bmNsdWRlICJJbnRlbnREYXRhLmgiCi0jaW5jbHVkZSAiV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0K
LWNsYXNzIFdlYkludGVudERhdGEgOiBwdWJsaWMgQVBJT2JqZWN0IHsKLXB1YmxpYzoKLSAgICBz
dGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZUludGVudERhdGE7Ci0KLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxXZWJJbnRlbnREYXRhPiBjcmVhdGUoY29uc3QgSW50ZW50RGF0YSYgc3RvcmUp
Ci0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkludGVudERhdGEoc3RvcmUp
KTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5XZWJJbnRlbnREYXRhKCkgeyB9Ci0KLSAgICBjb25z
dCBTdHJpbmcmIGFjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmUuYWN0aW9uOyB9Ci0gICAg
Y29uc3QgU3RyaW5nJiBwYXlsb2FkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmUudHlwZTsg
fQotICAgIGNvbnN0IFdlYkNvcmU6OktVUkwmIHNlcnZpY2UoKSBjb25zdCB7IHJldHVybiBtX3N0
b3JlLnNlcnZpY2U7IH0KLSAgICBQYXNzUmVmUHRyPFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
ZGF0YSgpIGNvbnN0OwotICAgIFN0cmluZyBleHRyYShjb25zdCBTdHJpbmcmIGtleSkgY29uc3Q7
Ci0gICAgUGFzc1JlZlB0cjxJbW11dGFibGVEaWN0aW9uYXJ5PiBleHRyYXMoKSBjb25zdDsKLSAg
ICBQYXNzUmVmUHRyPEltbXV0YWJsZUFycmF5PiBzdWdnZXN0aW9ucygpIGNvbnN0OwotCi0gICAg
Y29uc3QgSW50ZW50RGF0YSYgc3RvcmUoKSBjb25zdCB7IHJldHVybiBtX3N0b3JlOyB9Ci0KLXBy
aXZhdGU6Ci0gICAgV2ViSW50ZW50RGF0YShjb25zdCBJbnRlbnREYXRhJik7Ci0KLSAgICB2aXJ0
dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIEFQSVR5cGU7IH0KLQotICAgIEludGVudERh
dGEgbV9zdG9yZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5B
QkxFKFdFQl9JTlRFTlRTKQotCi0jZW5kaWYgLy8gV2ViSW50ZW50RGF0YV9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpIGIvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQpp
bmRleCBlZGVhOWM1Li4yMDdkMzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQu
cHJpCisrKyBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKQEAgLTExMiw3ICsxMTIsNiBAQCBI
RUFERVJTICs9IFwKICAgICBTaGFyZWQvV2ViR3JhcGhpY3NDb250ZXh0LmggXAogICAgIFNoYXJl
ZC9XZWJIaXRUZXN0UmVzdWx0LmggXAogICAgIFNoYXJlZC9XZWJJbWFnZS5oIFwKLSAgICBTaGFy
ZWQvV2ViSW50ZW50RGF0YS5oIFwKICAgICBTaGFyZWQvV2ViSW50ZW50U2VydmljZUluZm8uaCBc
CiAgICAgU2hhcmVkL1dlYkxheWVyVHJlZUluZm8uaCBcCiAgICAgU2hhcmVkL1dlYk5hdmlnYXRp
b25EYXRhU3RvcmUuaCBcCkBAIC0yNjcsNiArMjY2LDcgQEAgSEVBREVSUyArPSBcCiAgICAgVUlQ
cm9jZXNzL1dlYkljb25EYXRhYmFzZS5oIFwKICAgICBVSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNl
Q2xpZW50LmggXAogICAgIFVJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oIFwKKyAgICBVSVBy
b2Nlc3MvV2ViSW50ZW50RGF0YS5oIFwKICAgICBVSVByb2Nlc3MvV2ViS2V5VmFsdWVTdG9yYWdl
TWFuYWdlclByb3h5LmggXAogICAgIFVJUHJvY2Vzcy9XZWJMYXllclRyZWVSZW5kZXJlci5oIFwK
ICAgICBVSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmggXApAQCAtMzE5LDYgKzMxOSw3IEBAIEhF
QURFUlMgKz0gXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVC
YWNrRm9yd2FyZExpc3QuaCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uaCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZUhpdFRlc3RSZXN1bHQuaCBcCisgICAgV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudC5oIFwKICAgICBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50UmVxdWVzdC5oIFwKICAgICBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5oIFwKICAgICBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlTm9kZUhhbmRsZS5oIFwKQEAg
LTMzMiw2ICszMzMsNyBAQCBIRUFERVJTICs9IFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlQ2xpZW50LmggXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uaCBcCiAgICAgV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuaCBcCisgICAgV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudC5oIFwKICAgICBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5oIFwKICAgICBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5o
IFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUNvbnRl
eHRNZW51Q2xpZW50LmggXApAQCAtNDk1LDcgKzQ5Nyw2IEBAIFNPVVJDRVMgKz0gXAogICAgIFNo
YXJlZC9XZWJIaXRUZXN0UmVzdWx0LmNwcCBcCiAgICAgU2hhcmVkL1dlYktleWJvYXJkRXZlbnQu
Y3BwIFwKICAgICBTaGFyZWQvV2ViSW1hZ2UuY3BwIFwKLSAgICBTaGFyZWQvV2ViSW50ZW50RGF0
YS5jcHAgXAogICAgIFNoYXJlZC9XZWJJbnRlbnRTZXJ2aWNlSW5mby5jcHAgXAogICAgIFNoYXJl
ZC9XZWJMYXllclRyZWVJbmZvLmNwcCBcCiAgICAgU2hhcmVkL1dlYk1vdXNlRXZlbnQuY3BwIFwK
QEAgLTYzOCw2ICs2MzksNyBAQCBTT1VSQ0VTICs9IFwKICAgICBVSVByb2Nlc3MvV2ViSWNvbkRh
dGFiYXNlLmNwcCBcCiAgICAgVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZUNsaWVudC5jcHAgXAog
ICAgIFVJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAgXAorICAgIFVJUHJvY2Vzcy9XZWJJ
bnRlbnREYXRhLmNwcCBcCiAgICAgVUlQcm9jZXNzL1dlYktleVZhbHVlU3RvcmFnZU1hbmFnZXJQ
cm94eS5jcHAgXAogICAgIFVJUHJvY2Vzcy9XZWJMYXllclRyZWVSZW5kZXJlci5jcHAgXAogICAg
IFVJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuY3BwIFwKQEAgLTcwMyw2ICs3MDUsNyBAQCBTT1VS
Q0VTICs9IFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJh
bWUuY3BwIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSGl0
VGVzdFJlc3VsdC5jcHAgXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVJbnNwZWN0b3IuY3BwIFwKKyAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlSW50ZW50LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZUludGVudFJlcXVlc3QuY3BwIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAgXAogICAgIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVOb2RlSGFuZGxlLmNwcCBcCkBAIC03MTgsNiAr
NzIxLDcgQEAgU09VUkNFUyArPSBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZUNsaWVudC5jcHAgXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3BwIFwKICAgICBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAgXAorICAgIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnQuY3BwIFwKICAgICBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5jcHAgXAogICAg
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9u
LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VD
b250ZXh0TWVudUNsaWVudC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLSW50ZW50RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tJbnRlbnREYXRhLmNwcAppbmRleCA3YTkyZGI1Li5iNTEzNzVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnRlbnREYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnRlbnREYXRhLmNwcApAQCAtMzEsNiArMzEs
NyBAQAogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLRGljdGlvbmFyeS5oIgog
I2luY2x1ZGUgIldLU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmgiCiAKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCiAjaW5jbHVkZSAiV2ViSW50ZW50RGF0YS5o
IgpAQCAtNDcsMjcgKzQ4LDYgQEAgV0tUeXBlSUQgV0tJbnRlbnREYXRhR2V0VHlwZUlEKCkKICNl
bmRpZgogfQogCi1XS0ludGVudERhdGFSZWYgV0tJbnRlbnREYXRhQ3JlYXRlKFdLRGljdGlvbmFy
eVJlZiBpbml0RGljdGlvbmFyeVJlZikKLXsKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0gICAg
SW50ZW50RGF0YSBpbnRlbnREYXRhOwotICAgIFdLU3RyaW5nUmVmIGFjdGlvbiA9IHN0YXRpY19j
YXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KGluaXREaWN0aW9uYXJ5
UmVmLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiYWN0aW9uIikpKTsKLSAgICBBU1NF
UlQoYWN0aW9uKTsKLSAgICBpbnRlbnREYXRhLmFjdGlvbiA9IHRvSW1wbChhY3Rpb24pLT5zdHJp
bmcoKTsKLSAgICBXS1N0cmluZ1JlZiB0eXBlID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdL
RGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkoaW5pdERpY3Rpb25hcnlSZWYsIFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJ0eXBlIikpKTsKLSAgICBBU1NFUlQodHlwZSk7Ci0gICAgaW50ZW50
RGF0YS50eXBlID0gdG9JbXBsKHR5cGUpLT5zdHJpbmcoKTsKLSAgICBXS1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZVJlZiBkYXRhID0gc3RhdGljX2Nhc3Q8V0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWY+
KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkoaW5pdERpY3Rpb25hcnlSZWYsIFdLU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKCJkYXRhIikpKTsKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgaW50
ZW50RGF0YS5kYXRhID0gdG9JbXBsKGRhdGEpLT5kYXRhUmVmZXJlbmNlKCkudmVjdG9yKCk7Ci0K
LSAgICBSZWZQdHI8V2ViSW50ZW50RGF0YT4gd2ViSW50ZW50RGF0YSA9IFdlYkludGVudERhdGE6
OmNyZWF0ZShpbnRlbnREYXRhKTsKLSAgICByZXR1cm4gdG9BUEkod2ViSW50ZW50RGF0YS5yZWxl
YXNlKCkubGVha1JlZigpKTsKLSNlbHNlCi0gICAgcmV0dXJuIDA7Ci0jZW5kaWYKLX0KLQogV0tT
dHJpbmdSZWYgV0tJbnRlbnREYXRhQ29weUFjdGlvbihXS0ludGVudERhdGFSZWYgaW50ZW50UmVm
KQogewogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS0ludGVudERhdGEuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS0ludGVudERhdGEuaAppbmRleCAxZjgwOWVjLi44ZmNiODYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnRlbnREYXRhLmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLSW50ZW50RGF0YS5oCkBAIC0zNCw4ICszNCw2
IEBAIGV4dGVybiAiQyIgewogCiBXS19FWFBPUlQgV0tUeXBlSUQgV0tJbnRlbnREYXRhR2V0VHlw
ZUlEKCk7CiAKLVdLX0VYUE9SVCBXS0ludGVudERhdGFSZWYgV0tJbnRlbnREYXRhQ3JlYXRlKFdL
RGljdGlvbmFyeVJlZiBpbml0RGljdGlvbmFyeSk7Ci0KIFdLX0VYUE9SVCBXS1N0cmluZ1JlZiBX
S0ludGVudERhdGFDb3B5QWN0aW9uKFdLSW50ZW50RGF0YVJlZiBpbnRlbnRSZWYpOwogV0tfRVhQ
T1JUIFdLU3RyaW5nUmVmIFdLSW50ZW50RGF0YUNvcHlUeXBlKFdLSW50ZW50RGF0YVJlZiBpbnRl
bnRSZWYpOwogV0tfRVhQT1JUIFdLVVJMUmVmIFdLSW50ZW50RGF0YUNvcHlTZXJ2aWNlKFdLSW50
ZW50RGF0YVJlZiBpbnRlbnRSZWYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkludGVudERhdGEuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkludGVu
dERhdGEuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5ZDIxNzYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW50ZW50RGF0YS5j
cHAKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jw
b3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIldlYkludGVudERhdGEuaCIKKworI2lmIEVOQUJMRShXRUJfSU5URU5U
UykKKworI2luY2x1ZGUgIkltbXV0YWJsZUFycmF5LmgiCisjaW5jbHVkZSAiSW1tdXRhYmxlRGlj
dGlvbmFyeS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgorI2luY2x1ZGUgIldlYlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIldlYlN0cmluZy5oIgorI2luY2x1ZGUg
IldlYlVSTC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViSW50ZW50RGF0YTo6V2ViSW50
ZW50RGF0YShjb25zdCBJbnRlbnREYXRhJiBzdG9yZSwgV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNz
KQorICAgIDogbV9zdG9yZShzdG9yZSkKKyAgICAsIG1fcHJvY2Vzcyhwcm9jZXNzKQoreworfQor
CitXZWJJbnRlbnREYXRhOjp+V2ViSW50ZW50RGF0YSgpCit7CisgICAgLy8gUmVtb3ZlIE1lc3Nh
Z2VQb3J0Q2hhbm5lbHMgZnJvbSBXZWJQcm9jZXNzLgorICAgIGlmIChtX3Byb2Nlc3MgJiYgIW1f
c3RvcmUubWVzc2FnZVBvcnRzLmlzRW1wdHkoKSkgeworICAgICAgICBzaXplX3QgbnVtTWVzc2Fn
ZVBvcnRzID0gbV9zdG9yZS5tZXNzYWdlUG9ydHMuc2l6ZSgpOworICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG51bU1lc3NhZ2VQb3J0czsgKytpKQorICAgICAgICAgICAgbV9wcm9jZXNz
LT5yZW1vdmVNZXNzYWdlUG9ydENoYW5uZWwobV9zdG9yZS5tZXNzYWdlUG9ydHNbaV0pOworICAg
IH0KK30KKworUGFzc1JlZlB0cjxXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFdlYkludGVudERh
dGE6OmRhdGEoKSBjb25zdAoreworICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhQ29weSA9IG1fc3Rv
cmUuZGF0YTsKKyAgICByZXR1cm4gV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlOjphZG9wdChkYXRh
Q29weSk7Cit9CisKK1Bhc3NSZWZQdHI8SW1tdXRhYmxlQXJyYXk+IFdlYkludGVudERhdGE6OnN1
Z2dlc3Rpb25zKCkgY29uc3QKK3sKKyAgICBjb25zdCBzaXplX3QgbnVtU3VnZ2VzdGlvbnMgPSBt
X3N0b3JlLnN1Z2dlc3Rpb25zLnNpemUoKTsKKyAgICBWZWN0b3I8UmVmUHRyPEFQSU9iamVjdD4g
PiB3a1N1Z2dlc3Rpb25zKG51bVN1Z2dlc3Rpb25zKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbnVtU3VnZ2VzdGlvbnM7ICsraSkKKyAgICAgICAgd2tTdWdnZXN0aW9uc1tpXSA9IFdl
YlVSTDo6Y3JlYXRlKG1fc3RvcmUuc3VnZ2VzdGlvbnNbaV0pOworICAgIHJldHVybiBJbW11dGFi
bGVBcnJheTo6YWRvcHQod2tTdWdnZXN0aW9ucyk7Cit9CisKK1N0cmluZyBXZWJJbnRlbnREYXRh
OjpleHRyYShjb25zdCBTdHJpbmcmIGtleSkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zdG9yZS5l
eHRyYXMuZ2V0KGtleSk7Cit9CisKK1Bhc3NSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4gV2Vi
SW50ZW50RGF0YTo6ZXh0cmFzKCkgY29uc3QKK3sKKyAgICBJbW11dGFibGVEaWN0aW9uYXJ5OjpN
YXBUeXBlIHdrRXh0cmFzOworICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Ojpjb25zdF9pdGVy
YXRvciBlbmQgPSBtX3N0b3JlLmV4dHJhcy5lbmQoKTsKKyAgICBmb3IgKEhhc2hNYXA8U3RyaW5n
LCBTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fc3RvcmUuZXh0cmFzLmJlZ2luKCk7IGl0
ICE9IGVuZDsgKytpdCkKKyAgICAgICAgd2tFeHRyYXMuc2V0KGl0LT5maXJzdCwgV2ViU3RyaW5n
OjpjcmVhdGUoaXQtPnNlY29uZCkpOworCisgICAgcmV0dXJuIEltbXV0YWJsZURpY3Rpb25hcnk6
OmFkb3B0KHdrRXh0cmFzKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBFTkFCTEUoV0VCX0lOVEVOVFMpCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJJbnRlbnREYXRhLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW50ZW50
RGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkNTlmOTAKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW50ZW50RGF0YS5oCkBA
IC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRp
b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViSW50ZW50RGF0
YV9oCisjZGVmaW5lIFdlYkludGVudERhdGFfaAorCisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQor
CisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiSW50ZW50RGF0YS5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvS1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBJbW11dGFibGVBcnJheTsKK2NsYXNzIEltbXV0YWJsZURp
Y3Rpb25hcnk7CitjbGFzcyBXZWJQcm9jZXNzUHJveHk7CitjbGFzcyBXZWJTZXJpYWxpemVkU2Ny
aXB0VmFsdWU7CisKK2NsYXNzIFdlYkludGVudERhdGEgOiBwdWJsaWMgQVBJT2JqZWN0IHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZUludGVudERhdGE7CisK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJJbnRlbnREYXRhPiBjcmVhdGUoY29uc3QgSW50ZW50
RGF0YSYgc3RvcmUsIFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcykKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgV2ViSW50ZW50RGF0YShzdG9yZSwgcHJvY2VzcykpOworICAgIH0K
KworICAgIHZpcnR1YWwgfldlYkludGVudERhdGEoKTsKKworICAgIGNvbnN0IFN0cmluZyYgYWN0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdG9yZS5hY3Rpb247IH0KKyAgICBjb25zdCBTdHJpbmcm
IHBheWxvYWRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9zdG9yZS50eXBlOyB9CisgICAgY29uc3Qg
V2ViQ29yZTo6S1VSTCYgc2VydmljZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmUuc2VydmljZTsg
fQorICAgIFBhc3NSZWZQdHI8V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhKCkgY29uc3Q7
CisgICAgU3RyaW5nIGV4dHJhKGNvbnN0IFN0cmluZyYga2V5KSBjb25zdDsKKyAgICBQYXNzUmVm
UHRyPEltbXV0YWJsZURpY3Rpb25hcnk+IGV4dHJhcygpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8
SW1tdXRhYmxlQXJyYXk+IHN1Z2dlc3Rpb25zKCkgY29uc3Q7CisKKyAgICBjb25zdCBJbnRlbnRE
YXRhJiBzdG9yZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmU7IH0KKworcHJpdmF0ZToKKyAgICBX
ZWJJbnRlbnREYXRhKGNvbnN0IEludGVudERhdGEmLCBXZWJQcm9jZXNzUHJveHkqKTsKKworICAg
IHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQVBJVHlwZTsgfQorCisgICAgSW50
ZW50RGF0YSBtX3N0b3JlOworICAgIFdlYlByb2Nlc3NQcm94eSogbV9wcm9jZXNzOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0lOVEVOVFMpCisK
KyNlbmRpZiAvLyBXZWJJbnRlbnREYXRhX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKaW5kZXggYjc1ZWRkZS4uZWExYzA0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTIxOTAsNyArMjE5MCw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
SW50ZW50RGF0YSYKICAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IHByb2Nlc3MoKS0+d2ViRnJh
bWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhmcmFtZSk7CiAKLSAgICBSZWZQdHI8V2Vi
SW50ZW50RGF0YT4gd2ViSW50ZW50RGF0YSA9IFdlYkludGVudERhdGE6OmNyZWF0ZShpbnRlbnRE
YXRhKTsKKyAgICBSZWZQdHI8V2ViSW50ZW50RGF0YT4gd2ViSW50ZW50RGF0YSA9IFdlYkludGVu
dERhdGE6OmNyZWF0ZShpbnRlbnREYXRhLCBwcm9jZXNzKCkpOwogICAgIG1fbG9hZGVyQ2xpZW50
LmRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZSh0aGlzLCBmcmFtZSwgd2ViSW50ZW50RGF0YS5nZXQo
KSwgdXNlckRhdGEuZ2V0KCkpOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDVhMGFmNjI5Li5jMGI3OWMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTk2LDYgKzE5Niwx
NiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cmVtb3ZlV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQp
CiAgICAgbV9wYWdlTWFwLnJlbW92ZShwYWdlSUQpOwogfQogCisjaWYgRU5BQkxFKFdFQl9JTlRF
TlRTKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlbW92ZU1lc3NhZ2VQb3J0Q2hhbm5lbCh1aW50
NjRfdCBjaGFubmVsSUQpCit7CisgICAgaWYgKCFpc1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsK
KworICAgIHNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlJlbW92ZU1lc3NhZ2VQb3J0Q2hhbm5l
bChjaGFubmVsSUQpLCAwKTsKK30KKyNlbmRpZgorCiBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBX
ZWJQcm9jZXNzUHJveHk6OndlYkJhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBpdGVtSUQpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIG1fYmFja0ZvcndhcmRMaXN0SXRlbU1hcC5nZXQoaXRlbUlEKS5nZXQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCA4ZTc2
OGJmLi5kMjk5Y2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5oCkBAIC04Nyw2ICs4NywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRFeGlzdGluZ1dlYlBh
Z2UoV2ViUGFnZVByb3h5KiwgdWludDY0X3QgcGFnZUlEKTsKICAgICB2b2lkIHJlbW92ZVdlYlBh
Z2UodWludDY0X3QgcGFnZUlEKTsKIAorI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICB2b2lk
IHJlbW92ZU1lc3NhZ2VQb3J0Q2hhbm5lbCh1aW50NjRfdCBjaGFubmVsSUQpOworI2VuZGlmCisK
ICAgICBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiB3ZWJCYWNrRm9yd2FyZEl0ZW0odWludDY0X3Qg
aXRlbUlEKSBjb25zdDsKIAogICAgIFJlc3BvbnNpdmVuZXNzVGltZXIqIHJlc3BvbnNpdmVuZXNz
VGltZXIoKSB7IHJldHVybiAmbV9yZXNwb25zaXZlbmVzc1RpbWVyOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQVBJ
Q2FzdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZUFQSUNhc3QuaAppbmRleCAzMzU1ZDA4Li4wMThlZjc5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQVBJQ2Fz
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVBUElDYXN0LmgKQEAgLTQ2LDYgKzQ2LDcgQEAgY2xhc3MgSW5qZWN0ZWRCdW5kbGVC
YWNrRm9yd2FyZExpc3Q7CiBjbGFzcyBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW07
CiBjbGFzcyBJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbjsKIGNsYXNzIEluamVjdGVk
QnVuZGxlSGl0VGVzdFJlc3VsdDsKK2NsYXNzIEluamVjdGVkQnVuZGxlSW50ZW50OwogY2xhc3Mg
SW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0OwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0
aW9uQWN0aW9uOwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOwpAQCAtNjQsNiArNjUs
NyBAQCBXS19BRERfQVBJX01BUFBJTkcoV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYsIElu
amVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaQogV0tfQUREX0FQSV9NQVBQSU5HKFdLQnVuZGxl
RnJhbWVSZWYsIFdlYkZyYW1lKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLQnVuZGxlSGl0VGVzdFJl
c3VsdFJlZiwgSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0KQogV0tfQUREX0FQSV9NQVBQSU5H
KFdLQnVuZGxlSW5zcGVjdG9yUmVmLCBXZWJJbnNwZWN0b3IpCitXS19BRERfQVBJX01BUFBJTkco
V0tCdW5kbGVJbnRlbnRSZWYsIEluamVjdGVkQnVuZGxlSW50ZW50KQogV0tfQUREX0FQSV9NQVBQ
SU5HKFdLQnVuZGxlSW50ZW50UmVxdWVzdFJlZiwgSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0
KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLQnVuZGxlTmF2aWdhdGlvbkFjdGlvblJlZiwgSW5qZWN0
ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLQnVuZGxlTm9k
ZUhhbmRsZVJlZiwgSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlSW50ZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kODM4NjNm
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudC5jcHAKQEAgLTAsMCArMSwxMzUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXS0J1bmRsZUludGVu
dC5oIgorCisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorI2luY2x1ZGUgIkltbXV0YWJsZUFycmF5
LmgiCisjaW5jbHVkZSAiSW1tdXRhYmxlRGljdGlvbmFyeS5oIgorI2luY2x1ZGUgIkluamVjdGVk
QnVuZGxlSW50ZW50LmgiCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV0tCdW5k
bGVBUElDYXN0LmgiCisjaW5jbHVkZSAiV0tEaWN0aW9uYXJ5LmgiCisjaW5jbHVkZSAiV0tTdHJp
bmcuaCIKKyNpbmNsdWRlICJXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKyNlbmRpZgorCisj
aWYgRU5BQkxFKFdFQl9JTlRFTlRTKQordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OworI2VuZGlmCisKK1dLVHlwZUlEIFdLQnVuZGxlSW50ZW50R2V0VHlw
ZUlEKCkKK3sKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgcmV0dXJuIHRvQVBJKEluamVj
dGVkQnVuZGxlSW50ZW50OjpBUElUeXBlKTsKKyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYK
K30KKworV0tCdW5kbGVJbnRlbnRSZWYgV0tCdW5kbGVJbnRlbnRDcmVhdGUoV0tEaWN0aW9uYXJ5
UmVmIGluaXREaWN0aW9uYXJ5UmVmKQoreworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICBX
S1N0cmluZ1JlZiBhY3Rpb24gPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tEaWN0aW9uYXJ5
R2V0SXRlbUZvcktleShpbml0RGljdGlvbmFyeVJlZiwgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoImFjdGlvbiIpKSk7CisgICAgQVNTRVJUKGFjdGlvbik7CisgICAgV0tTdHJpbmdSZWYg
dHlwZSA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5
KGluaXREaWN0aW9uYXJ5UmVmLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygidHlwZSIp
KSk7CisgICAgQVNTRVJUKHR5cGUpOworICAgIFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmIGRh
dGEgPSBzdGF0aWNfY2FzdDxXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZj4oV0tEaWN0aW9uYXJ5
R2V0SXRlbUZvcktleShpbml0RGljdGlvbmFyeVJlZiwgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoImRhdGEiKSkpOworICAgIE1lc3NhZ2VQb3J0QXJyYXkgZHVtbXlQb3J0czsKKyAgICBF
eGNlcHRpb25Db2RlIGVjOworCisgICAgUmVmUHRyPEludGVudD4gY29yZUludGVudCA9IEludGVu
dDo6Y3JlYXRlKHRvSW1wbChhY3Rpb24pLT5zdHJpbmcoKSwgdG9JbXBsKHR5cGUpLT5zdHJpbmco
KSwgZGF0YSA/IHN0YXRpY19jYXN0PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSo+KHRvSW1wbChkYXRh
KS0+aW50ZXJuYWxSZXByZXNlbnRhdGlvbigpKSA6IDAsIGR1bW15UG9ydHMsIGVjKTsKKyAgICBy
ZXR1cm4gdG9BUEkoSW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OmNyZWF0ZShjb3JlSW50ZW50LmdldCgp
KS5sZWFrUmVmKCkpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCitXS1N0cmlu
Z1JlZiBXS0J1bmRsZUludGVudENvcHlBY3Rpb24oV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVm
KQoreworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9J
bXBsKGludGVudFJlZiktPmFjdGlvbigpKTsKKyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYK
K30KKworV0tTdHJpbmdSZWYgV0tCdW5kbGVJbnRlbnRDb3B5VHlwZShXS0J1bmRsZUludGVudFJl
ZiBpbnRlbnRSZWYpCit7CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorICAgIHJldHVybiB0b0Nv
cGllZEFQSSh0b0ltcGwoaW50ZW50UmVmKS0+cGF5bG9hZFR5cGUoKSk7CisjZWxzZQorICAgIHJl
dHVybiAwOworI2VuZGlmCit9CisKK1dLVVJMUmVmIFdLQnVuZGxlSW50ZW50Q29weVNlcnZpY2Uo
V0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmKQoreworI2lmIEVOQUJMRShXRUJfSU5URU5UUykK
KyAgICByZXR1cm4gdG9Db3BpZWRVUkxBUEkodG9JbXBsKGludGVudFJlZiktPnNlcnZpY2UoKSk7
CisjZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCit9CisKK1dLQXJyYXlSZWYgV0tCdW5kbGVJ
bnRlbnRDb3B5U3VnZ2VzdGlvbnMoV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmKQoreworI2lm
IEVOQUJMRShXRUJfSU5URU5UUykKKyAgICByZXR1cm4gdG9BUEkodG9JbXBsKGludGVudFJlZikt
PnN1Z2dlc3Rpb25zKCkubGVha1JlZigpKTsKKyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYK
K30KKworV0tTdHJpbmdSZWYgV0tCdW5kbGVJbnRlbnRDb3B5RXh0cmEoV0tCdW5kbGVJbnRlbnRS
ZWYgaW50ZW50UmVmLCBXS1N0cmluZ1JlZiBrZXkpCit7CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRT
KQorICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwoaW50ZW50UmVmKS0+ZXh0cmEodG9XVEZT
dHJpbmcoa2V5KSkpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCitXS0RpY3Rp
b25hcnlSZWYgV0tCdW5kbGVJbnRlbnRDb3B5RXh0cmFzKFdLQnVuZGxlSW50ZW50UmVmIGludGVu
dFJlZikKK3sKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgcmV0dXJuIHRvQVBJKHRvSW1w
bChpbnRlbnRSZWYpLT5leHRyYXMoKS5sZWFrUmVmKCkpOworI2Vsc2UKKyAgICByZXR1cm4gMDsK
KyNlbmRpZgorfQorCitzaXplX3QgV0tCdW5kbGVJbnRlbnRNZXNzYWdlUG9ydENvdW50KFdLQnVu
ZGxlSW50ZW50UmVmIGludGVudFJlZikKK3sKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAg
TWVzc2FnZVBvcnRDaGFubmVsQXJyYXkqIG1lc3NhZ2VQb3J0cyA9IHRvSW1wbChpbnRlbnRSZWYp
LT5jb3JlSW50ZW50KCktPm1lc3NhZ2VQb3J0cygpOworCisgICAgcmV0dXJuIG1lc3NhZ2VQb3J0
cyA/IG1lc3NhZ2VQb3J0cy0+c2l6ZSgpIDogMDsKKyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5k
aWYKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVJbnRlbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi42NDcxOWQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudC5oCkBAIC0wLDAg
KzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV0tCdW5kbGVJbnRlbnRfaAor
I2RlZmluZSBXS0J1bmRsZUludGVudF9oCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgor
CisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK1dLX0VYUE9SVCBX
S1R5cGVJRCBXS0J1bmRsZUludGVudEdldFR5cGVJRCgpOworCitXS19FWFBPUlQgV0tCdW5kbGVJ
bnRlbnRSZWYgV0tCdW5kbGVJbnRlbnRDcmVhdGUoV0tEaWN0aW9uYXJ5UmVmIGluaXREaWN0aW9u
YXJ5KTsKKworV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLQnVuZGxlSW50ZW50Q29weUFjdGlvbihX
S0J1bmRsZUludGVudFJlZiBpbnRlbnRSZWYpOworV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLQnVu
ZGxlSW50ZW50Q29weVR5cGUoV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmKTsKK1dLX0VYUE9S
VCBXS1VSTFJlZiBXS0J1bmRsZUludGVudENvcHlTZXJ2aWNlKFdLQnVuZGxlSW50ZW50UmVmIGlu
dGVudFJlZik7CitXS19FWFBPUlQgV0tBcnJheVJlZiBXS0J1bmRsZUludGVudENvcHlTdWdnZXN0
aW9ucyhXS0J1bmRsZUludGVudFJlZiBpbnRlbnRSZWYpOworV0tfRVhQT1JUIFdLU3RyaW5nUmVm
IFdLQnVuZGxlSW50ZW50Q29weUV4dHJhKFdLQnVuZGxlSW50ZW50UmVmIGludGVudFJlZiwgV0tT
dHJpbmdSZWYga2V5KTsKK1dLX0VYUE9SVCBXS0RpY3Rpb25hcnlSZWYgV0tCdW5kbGVJbnRlbnRD
b3B5RXh0cmFzKFdLQnVuZGxlSW50ZW50UmVmIGludGVudFJlZik7CitXS19FWFBPUlQgc2l6ZV90
IFdLQnVuZGxlSW50ZW50TWVzc2FnZVBvcnRDb3VudChXS0J1bmRsZUludGVudFJlZiBpbnRlbnRS
ZWYpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLy8gV0tCdW5k
bGVJbnRlbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudFJlcXVlc3QuY3Bw
CmluZGV4IDgxYzk1YzYuLmE0NzcyZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnRSZXF1ZXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
SW50ZW50UmVxdWVzdC5jcHAKQEAgLTI3LDEwICsyNywxMCBAQAogI2luY2x1ZGUgIldLQnVuZGxl
SW50ZW50UmVxdWVzdC5oIgogCiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorI2luY2x1ZGUgIklu
amVjdGVkQnVuZGxlSW50ZW50LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1
ZXN0LmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tCdW5kbGVBUElDYXN0
LmgiCi0jaW5jbHVkZSAiV2ViSW50ZW50RGF0YS5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0
OwogI2VuZGlmCkBAIC00NCwxMSArNDQsMTEgQEAgV0tUeXBlSUQgV0tCdW5kbGVJbnRlbnRSZXF1
ZXN0R2V0VHlwZUlEKCkKICNlbmRpZgogfQogCi1XS0ludGVudERhdGFSZWYgV0tCdW5kbGVJbnRl
bnRSZXF1ZXN0Q29weUludGVudERhdGEoV0tCdW5kbGVJbnRlbnRSZXF1ZXN0UmVmIHJlcXVlc3RS
ZWYpCitXS0J1bmRsZUludGVudFJlZiBXS0J1bmRsZUludGVudFJlcXVlc3RDb3B5SW50ZW50KFdL
QnVuZGxlSW50ZW50UmVxdWVzdFJlZiByZXF1ZXN0UmVmKQogewogI2lmIEVOQUJMRShXRUJfSU5U
RU5UUykKLSAgICBSZWZQdHI8V2ViSW50ZW50RGF0YT4gd2ViSW50ZW50RGF0YSA9IHRvSW1wbChy
ZXF1ZXN0UmVmKS0+aW50ZW50KCk7Ci0gICAgcmV0dXJuIHRvQVBJKHdlYkludGVudERhdGEucmVs
ZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlSW50ZW50PiB3ZWJJ
bnRlbnQgPSB0b0ltcGwocmVxdWVzdFJlZiktPmludGVudCgpOworICAgIHJldHVybiB0b0FQSSh3
ZWJJbnRlbnQucmVsZWFzZSgpLmxlYWtSZWYoKSk7CiAjZWxzZQogICAgIHJldHVybiAwOwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlSW50ZW50UmVxdWVzdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudFJlcXVlc3QuaAppbmRleCBiMTgx
MzZkLi4xMDVhZmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50UmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnRSZXF1ZXN0
LmgKQEAgLTM0LDcgKzM0LDcgQEAgZXh0ZXJuICJDIiB7CiAKIFdLX0VYUE9SVCBXS1R5cGVJRCBX
S0J1bmRsZUludGVudFJlcXVlc3RHZXRUeXBlSUQoKTsKIAotV0tfRVhQT1JUIFdLSW50ZW50RGF0
YVJlZiBXS0J1bmRsZUludGVudFJlcXVlc3RDb3B5SW50ZW50RGF0YShXS0J1bmRsZUludGVudFJl
cXVlc3RSZWYgcmVxdWVzdCk7CitXS19FWFBPUlQgV0tCdW5kbGVJbnRlbnRSZWYgV0tCdW5kbGVJ
bnRlbnRSZXF1ZXN0Q29weUludGVudChXS0J1bmRsZUludGVudFJlcXVlc3RSZWYgcmVxdWVzdCk7
CiAKIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlSW50ZW50UmVxdWVzdFBvc3RSZXN1bHQoV0tCdW5k
bGVJbnRlbnRSZXF1ZXN0UmVmIHJlcXVlc3QsIFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmIHNl
cmlhbGl6ZWREYXRhKTsKIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlSW50ZW50UmVxdWVzdFBvc3RG
YWlsdXJlKFdLQnVuZGxlSW50ZW50UmVxdWVzdFJlZiByZXF1ZXN0LCBXS1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZVJlZiBzZXJpYWxpemVkRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAK
aW5kZXggMmFlMjIzNy4uODAyNDFjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcApA
QCAtNDcsNyArNDcsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogCiAjaWYgRU5BQkxF
KFdFQl9JTlRFTlRTKQotI2luY2x1ZGUgIldlYkludGVudERhdGEuaCIKKyNpbmNsdWRlICJJbmpl
Y3RlZEJ1bmRsZUludGVudC5oIgogI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CkBA
IC0zMTAsMTAgKzMxMCwxMCBAQCBkb3VibGUgV0tCdW5kbGVQYWdlR2V0QmFja2luZ1NjYWxlRmFj
dG9yKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmKQogICAgIHJldHVybiB0b0ltcGwocGFnZVJlZikt
PmRldmljZVNjYWxlRmFjdG9yKCk7CiB9CiAKLXZvaWQgV0tCdW5kbGVQYWdlRGVsaXZlckludGVu
dFRvRnJhbWUoV0tCdW5kbGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVS
ZWYsIFdLSW50ZW50RGF0YVJlZiBpbnRlbnRSZWYpCit2b2lkIFdLQnVuZGxlUGFnZURlbGl2ZXJJ
bnRlbnRUb0ZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVmIGZy
YW1lUmVmLCBXS0J1bmRsZUludGVudFJlZiBpbnRlbnRSZWYpCiB7CiAjaWYgRU5BQkxFKFdFQl9J
TlRFTlRTKQotICAgIHRvSW1wbChwYWdlUmVmKS0+ZGVsaXZlckludGVudFRvRnJhbWUodG9JbXBs
KGZyYW1lUmVmKS0+ZnJhbWVJRCgpLCB0b0ltcGwoaW50ZW50UmVmKS0+c3RvcmUoKSk7CisgICAg
dG9JbXBsKHBhZ2VSZWYpLT5kZWxpdmVyQ29yZUludGVudFRvRnJhbWUodG9JbXBsKGZyYW1lUmVm
KS0+ZnJhbWVJRCgpLCB0b0ltcGwoaW50ZW50UmVmKS0+Y29yZUludGVudCgpKTsKICNlbmRpZgog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaAppbmRleCBhYTg2MDkyLi42ZjE4YjM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgKQEAgLTQwNCw3ICs0MDQsNyBAQCBXS19FWFBPUlQgV0tJ
bWFnZVJlZiBXS0J1bmRsZVBhZ2VDcmVhdGVTY2FsZWRTbmFwc2hvdEluRG9jdW1lbnRDb29yZGlu
YXRlcyhXS0J1bgogCiBXS19FWFBPUlQgZG91YmxlIFdLQnVuZGxlUGFnZUdldEJhY2tpbmdTY2Fs
ZUZhY3RvcihXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7CiAKLVdLX0VYUE9SVCB2b2lkIFdLQnVuZGxl
UGFnZURlbGl2ZXJJbnRlbnRUb0ZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZy
YW1lUmVmIGZyYW1lLCBXS0ludGVudERhdGFSZWYgaW50ZW50KTsKK1dLX0VYUE9SVCB2b2lkIFdL
QnVuZGxlUGFnZURlbGl2ZXJJbnRlbnRUb0ZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1
bmRsZUZyYW1lUmVmIGZyYW1lLCBXS0J1bmRsZUludGVudFJlZiBpbnRlbnQpOwogCiAjaWYgZGVm
aW5lZChFTkFCTEVfSU5TUEVDVE9SKSAmJiBFTkFCTEVfSU5TUEVDVE9SCiBXS19FWFBPUlQgV0tC
dW5kbGVJbnNwZWN0b3JSZWYgV0tCdW5kbGVQYWdlR2V0SW5zcGVjdG9yKFdLQnVuZGxlUGFnZVJl
ZiBwYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uYjdhYjU4NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnQuY3Bw
CkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9y
YXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZUludGVudC5oIgorCisjaWYgRU5BQkxFKFdFQl9J
TlRFTlRTKQorCisjaW5jbHVkZSAiSW1tdXRhYmxlQXJyYXkuaCIKKyNpbmNsdWRlICJJbW11dGFi
bGVEaWN0aW9uYXJ5LmgiCisjaW5jbHVkZSAiV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisj
aW5jbHVkZSAiV2ViU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViVVJMLmgiCisKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGFzc1JlZlB0cjxJbmplY3Rl
ZEJ1bmRsZUludGVudD4gSW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OmNyZWF0ZShXZWJDb3JlOjpJbnRl
bnQqIGludGVudCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEluamVjdGVkQnVuZGxlSW50
ZW50KGludGVudCkpOworfQorCitJbmplY3RlZEJ1bmRsZUludGVudDo6SW5qZWN0ZWRCdW5kbGVJ
bnRlbnQoV2ViQ29yZTo6SW50ZW50KiBpbnRlbnQpCisgICAgOiBtX2ludGVudChpbnRlbnQpCit7
Cit9CisKK1N0cmluZyBJbmplY3RlZEJ1bmRsZUludGVudDo6YWN0aW9uKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9pbnRlbnQtPmFjdGlvbigpOworfQorCitTdHJpbmcgSW5qZWN0ZWRCdW5kbGVJ
bnRlbnQ6OnBheWxvYWRUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbnRlbnQtPnR5cGUo
KTsKK30KKworV2ViQ29yZTo6S1VSTCBJbmplY3RlZEJ1bmRsZUludGVudDo6c2VydmljZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1faW50ZW50LT5zZXJ2aWNlKCk7Cit9CisKK1Bhc3NSZWZQdHI8
V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlPiBJbmplY3RlZEJ1bmRsZUludGVudDo6ZGF0YSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKG1faW50
ZW50LT5kYXRhKCkpOworfQorCitTdHJpbmcgSW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OmV4dHJhKGNv
bnN0IFN0cmluZyYga2V5KSBjb25zdAoreworICAgIHJldHVybiBtX2ludGVudC0+ZXh0cmFzKCku
Z2V0KGtleSk7Cit9CisKK1Bhc3NSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4gSW5qZWN0ZWRC
dW5kbGVJbnRlbnQ6OmV4dHJhcygpIGNvbnN0Cit7CisgICAgY29uc3QgSGFzaE1hcDxTdHJpbmcs
IFN0cmluZz4mIGV4dHJhcyA9IG1faW50ZW50LT5leHRyYXMoKTsKKyAgICBJbW11dGFibGVEaWN0
aW9uYXJ5OjpNYXBUeXBlIHdrRXh0cmFzOworICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Ojpj
b25zdF9pdGVyYXRvciBlbmQgPSBleHRyYXMuZW5kKCk7CisgICAgZm9yIChIYXNoTWFwPFN0cmlu
ZywgU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBleHRyYXMuYmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KQorICAgICAgICB3a0V4dHJhcy5zZXQoaXQtPmZpcnN0LCBXZWJTdHJpbmc6OmNyZWF0
ZShpdC0+c2Vjb25kKSk7CisgICAgcmV0dXJuIEltbXV0YWJsZURpY3Rpb25hcnk6OmFkb3B0KHdr
RXh0cmFzKTsKK30KKworUGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4gSW5qZWN0ZWRCdW5kbGVJ
bnRlbnQ6OnN1Z2dlc3Rpb25zKCkgY29uc3QKK3sKKyAgICBjb25zdCBWZWN0b3I8S1VSTD4mIHN1
Z2dlc3Rpb25zID0gbV9pbnRlbnQtPnN1Z2dlc3Rpb25zKCk7CisgICAgY29uc3Qgc2l6ZV90IG51
bVN1Z2dlc3Rpb25zID0gc3VnZ2VzdGlvbnMuc2l6ZSgpOworICAgIFZlY3RvcjxSZWZQdHI8QVBJ
T2JqZWN0PiA+IHdrU3VnZ2VzdGlvbnMobnVtU3VnZ2VzdGlvbnMpOworICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBudW1TdWdnZXN0aW9uczsgKytpKQorICAgICAgICB3a1N1Z2dlc3Rpb25z
W2ldID0gV2ViVVJMOjpjcmVhdGUoc3VnZ2VzdGlvbnNbaV0pOworICAgIHJldHVybiBJbW11dGFi
bGVBcnJheTo6YWRvcHQod2tTdWdnZXN0aW9ucyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9JTlRFTlRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudC5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUlu
dGVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkM2YwNmMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlSW50ZW50LmgKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBJbmplY3RlZEJ1bmRsZUludGVudF9oCisjZGVmaW5lIEluamVjdGVkQnVuZGxl
SW50ZW50X2gKKworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKworI2luY2x1ZGUgIkFQSU9iamVj
dC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvSW50ZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9LVVJM
Lmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IEltbXV0YWJsZUFycmF5OworY2xhc3MgSW1tdXRhYmxlRGljdGlvbmFyeTsKK2NsYXNzIFdlYlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTsKKworY2xhc3MgSW5qZWN0ZWRCdW5kbGVJbnRlbnQgOiBwdWJs
aWMgQVBJT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0g
VHlwZUJ1bmRsZUludGVudDsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxl
SW50ZW50PiBjcmVhdGUoV2ViQ29yZTo6SW50ZW50Kik7CisKKyAgICBTdHJpbmcgYWN0aW9uKCkg
Y29uc3Q7CisgICAgU3RyaW5nIHBheWxvYWRUeXBlKCkgY29uc3Q7CisgICAgV2ViQ29yZTo6S1VS
TCBzZXJ2aWNlKCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxXZWJTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IGRhdGEoKSBjb25zdDsKKyAgICBTdHJpbmcgZXh0cmEoY29uc3QgU3RyaW5nJiBrZXkpIGNv
bnN0OworICAgIFBhc3NSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4gZXh0cmFzKCkgY29uc3Q7
CisgICAgUGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4gc3VnZ2VzdGlvbnMoKSBjb25zdDsKKwor
ICAgIFdlYkNvcmU6OkludGVudCogY29yZUludGVudCgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZW50
LmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgSW5qZWN0ZWRCdW5kbGVJbnRlbnQo
V2ViQ29yZTo6SW50ZW50Kik7CisKKyAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIEFQSVR5cGU7IH0KKworICAgIFJlZlB0cjxXZWJDb3JlOjpJbnRlbnQ+IG1faW50ZW50Owor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0lOVEVO
VFMpCisKKyNlbmRpZiAvLyBJbmplY3RlZEJ1bmRsZUludGVudF9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50
UmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5jcHAKaW5kZXggNWNjYjE5Yy4uZWFjMGI4M2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5jcHAKQEAgLTI3LDYg
KzI3LDcgQEAKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuaCIKIAogI2lm
IEVOQUJMRShXRUJfSU5URU5UUykKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZUludGVudC5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvSW50ZW50UmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oPgogCkBAIC01NCw5ICs1NSw5IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVJ
bnRlbnRSZXF1ZXN0Ojpwb3N0RmFpbHVyZShXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUqIGRhdGEp
CiAgICAgbV9pbnRlbnRSZXF1ZXN0LT5wb3N0RmFpbHVyZShzdGF0aWNfY2FzdDxTZXJpYWxpemVk
U2NyaXB0VmFsdWUqPihkYXRhLT5pbnRlcm5hbFJlcHJlc2VudGF0aW9uKCkpKTsKIH0KIAotUGFz
c1JlZlB0cjxXZWJJbnRlbnREYXRhPiBJbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3Q6OmludGVu
dCgpIGNvbnN0CitQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlSW50ZW50PiBJbmplY3RlZEJ1bmRs
ZUludGVudFJlcXVlc3Q6OmludGVudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdlYkludGVudERh
dGE6OmNyZWF0ZShJbnRlbnREYXRhKG1faW50ZW50UmVxdWVzdC0+aW50ZW50KCkpKTsKKyAgICBy
ZXR1cm4gSW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OmNyZWF0ZShtX2ludGVudFJlcXVlc3QtPmludGVu
dCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50UmVxdWVz
dC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZUludGVudFJlcXVlc3QuaAppbmRleCBiNTg3MGQ5Li4zM2EzMTkyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50
ZW50UmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0LmgKQEAgLTI5LDcgKzI5LDYgQEAKICNpZiBF
TkFCTEUoV0VCX0lOVEVOVFMpCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKLSNpbmNsdWRlICJX
ZWJJbnRlbnREYXRhLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTQwLDYgKzM5LDcgQEAg
Y2xhc3MgSW50ZW50UmVxdWVzdDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIEluamVj
dGVkQnVuZGxlSW50ZW50OwogY2xhc3MgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlOwogCiBjbGFz
cyBJbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QgOiBwdWJsaWMgQVBJT2JqZWN0IHsKQEAgLTUx
LDcgKzUxLDcgQEAgcHVibGljOgogICAgIHZvaWQgcG9zdFJlc3VsdChXZWJTZXJpYWxpemVkU2Ny
aXB0VmFsdWUqKTsKICAgICB2b2lkIHBvc3RGYWlsdXJlKFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSopOwogCi0gICAgUGFzc1JlZlB0cjxXZWJJbnRlbnREYXRhPiBpbnRlbnQoKSBjb25zdDsKKyAg
ICBQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlSW50ZW50PiBpbnRlbnQoKSBjb25zdDsKIAogcHJp
dmF0ZToKICAgICBleHBsaWNpdCBJbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QoV2ViQ29yZTo6
SW50ZW50UmVxdWVzdCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJGcmFtZS5jcHAKaW5kZXggZjM2ZmMwMi4uZDZkZGNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC02Myw2ICs2Myw4IEBACiAjaW5j
bHVkZSAiSW50ZW50RGF0YS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRE9NV2luZG93SW50ZW50cy5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRGVsaXZlcmVkSW50ZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9JbnRlbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVs
Lmg+CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oV0lOKQpAQCAtMjQ2
LDEzICsyNDgsMzkgQEAgdm9pZCBXZWJGcmFtZTo6Y29udmVydEhhbmRsZVRvRG93bmxvYWQoUmVz
b3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzb3VyY2VSZXEKIHZvaWQgV2ViRnJhbWU6OmRl
bGl2ZXJJbnRlbnQoY29uc3QgSW50ZW50RGF0YSYgaW50ZW50RGF0YSkKIHsKICAgICBPd25QdHI8
RGVsaXZlcmVkSW50ZW50Q2xpZW50PiBkdW1teUNsaWVudDsKLSAgICBPd25QdHI8TWVzc2FnZVBv
cnRBcnJheT4gZHVtbXlQb3J0czsKICAgICBWZWN0b3I8dWludDhfdD4gZGF0YUNvcHkgPSBpbnRl
bnREYXRhLmRhdGE7CisKKyAgICBPd25QdHI8V2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsQXJy
YXk+IGNoYW5uZWxzOworICAgIGlmICghaW50ZW50RGF0YS5tZXNzYWdlUG9ydHMuaXNFbXB0eSgp
KSB7CisgICAgICAgIGNoYW5uZWxzID0gYWRvcHRQdHIobmV3IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0
Q2hhbm5lbEFycmF5KGludGVudERhdGEubWVzc2FnZVBvcnRzLnNpemUoKSkpOworICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGludGVudERhdGEubWVzc2FnZVBvcnRzLnNpemUoKTsgKytp
KQorICAgICAgICAgICAgKCpjaGFubmVscylbaV0gPSBNZXNzYWdlUG9ydENoYW5uZWw6OmNyZWF0
ZShXZWJQcm9jZXNzOjpzaGFyZWQoKS5tZXNzYWdlUG9ydENoYW5uZWwoaW50ZW50RGF0YS5tZXNz
YWdlUG9ydHMuYXQoaSkpKTsKKyAgICB9CisgICAgT3duUHRyPFdlYkNvcmU6Ok1lc3NhZ2VQb3J0
QXJyYXk+IG1lc3NhZ2VQb3J0cyA9IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRz
KCptX2NvcmVGcmFtZS0+ZG9tV2luZG93KCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgY2hh
bm5lbHMucmVsZWFzZSgpKTsKKwogICAgIFJlZlB0cjxEZWxpdmVyZWRJbnRlbnQ+IGRlbGl2ZXJl
ZEludGVudCA9IERlbGl2ZXJlZEludGVudDo6Y3JlYXRlKG1fY29yZUZyYW1lLCBkdW1teUNsaWVu
dC5yZWxlYXNlKCksIGludGVudERhdGEuYWN0aW9uLCBpbnRlbnREYXRhLnR5cGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjphZG9wdChkYXRhQ29weSksIGR1bW15UG9ydHMu
cmVsZWFzZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQoZGF0
YUNvcHkpLCBtZXNzYWdlUG9ydHMucmVsZWFzZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVudERhdGEu
ZXh0cmFzKTsKICAgICBXZWJDb3JlOjpET01XaW5kb3dJbnRlbnRzOjpmcm9tKG1fY29yZUZyYW1l
LT5kb21XaW5kb3coKSktPmRlbGl2ZXIoZGVsaXZlcmVkSW50ZW50LnJlbGVhc2UoKSk7CiB9CisK
K3ZvaWQgV2ViRnJhbWU6OmRlbGl2ZXJJbnRlbnQoSW50ZW50KiBpbnRlbnQpCit7CisgICAgT3du
UHRyPERlbGl2ZXJlZEludGVudENsaWVudD4gZHVtbXlDbGllbnQ7CisKKyAgICBPd25QdHI8V2Vi
Q29yZTo6TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzOworICAgIFdlYkNvcmU6Ok1l
c3NhZ2VQb3J0Q2hhbm5lbEFycmF5KiBvcmlnQ2hhbm5lbHMgPSBpbnRlbnQtPm1lc3NhZ2VQb3J0
cygpOworICAgIGlmIChvcmlnQ2hhbm5lbHMgJiYgb3JpZ0NoYW5uZWxzLT5zaXplKCkpIHsKKyAg
ICAgICAgY2hhbm5lbHMgPSBhZG9wdFB0cihuZXcgV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVs
QXJyYXkob3JpZ0NoYW5uZWxzLT5zaXplKCkpKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBvcmlnQ2hhbm5lbHMtPnNpemUoKTsgKytpKQorICAgICAgICAgICAgKCpjaGFubmVscylb
aV0gPSBvcmlnQ2hhbm5lbHMtPmF0KGkpLnJlbGVhc2UoKTsKKyAgICB9CisgICAgT3duUHRyPFdl
YkNvcmU6Ok1lc3NhZ2VQb3J0QXJyYXk+IG1lc3NhZ2VQb3J0cyA9IFdlYkNvcmU6Ok1lc3NhZ2VQ
b3J0OjplbnRhbmdsZVBvcnRzKCptX2NvcmVGcmFtZS0+ZG9tV2luZG93KCktPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSwgY2hhbm5lbHMucmVsZWFzZSgpKTsKKworICAgIFJlZlB0cjxEZWxpdmVy
ZWRJbnRlbnQ+IGRlbGl2ZXJlZEludGVudCA9IERlbGl2ZXJlZEludGVudDo6Y3JlYXRlKG1fY29y
ZUZyYW1lLCBkdW1teUNsaWVudC5yZWxlYXNlKCksIGludGVudC0+YWN0aW9uKCksIGludGVudC0+
dHlwZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludGVudC0+ZGF0YSgpLCBtZXNzYWdlUG9ydHMucmVsZWFz
ZSgpLCBpbnRlbnQtPmV4dHJhcygpKTsKKyAgICBXZWJDb3JlOjpET01XaW5kb3dJbnRlbnRzOjpm
cm9tKG1fY29yZUZyYW1lLT5kb21XaW5kb3coKSktPmRlbGl2ZXIoZGVsaXZlcmVkSW50ZW50LnJl
bGVhc2UoKSk7Cit9CiAjZW5kaWYKIAogU3RyaW5nIFdlYkZyYW1lOjpzb3VyY2UoKSBjb25zdCAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKaW5kZXggYmQ2
YzAzOC4uZWVhMDliNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkZyYW1lLmgKQEAgLTQyLDYgKzQyLDkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFz
cyBGcmFtZTsKICAgICBjbGFzcyBIVE1MRnJhbWVPd25lckVsZW1lbnQ7CisjaWYgRU5BQkxFKFdF
Ql9JTlRFTlRTKQorICAgIGNsYXNzIEludGVudDsKKyNlbmRpZgogICAgIGNsYXNzIEtVUkw7CiB9
CiAKQEAgLTgxLDYgKzg0LDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQog
ICAgIHZvaWQgZGVsaXZlckludGVudChjb25zdCBJbnRlbnREYXRhJik7CisgICAgdm9pZCBkZWxp
dmVySW50ZW50KFdlYkNvcmU6OkludGVudCopOwogI2VuZGlmCiAKICAgICBTdHJpbmcgc291cmNl
KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKaW5kZXggZDQ3YWYwOS4uM2E1ZGQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTM2LDYgKzEzNiw3IEBACiAKICNpZiBFTkFCTEUo
V0VCX0lOVEVOVFMpCiAjaW5jbHVkZSAiSW50ZW50RGF0YS5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
SW50ZW50Lmg+CiAjZW5kaWYKIAogI2lmIEVOQUJMRShWSUJSQVRJT04pCkBAIC0xOTY1LDYgKzE5
NjYsMTUgQEAgdm9pZCBXZWJQYWdlOjpkZWxpdmVySW50ZW50VG9GcmFtZSh1aW50NjRfdCBmcmFt
ZUlELCBjb25zdCBJbnRlbnREYXRhJiBpbnRlbnREYXQKIAogICAgIGZyYW1lLT5kZWxpdmVySW50
ZW50KGludGVudERhdGEpOwogfQorCit2b2lkIFdlYlBhZ2U6OmRlbGl2ZXJDb3JlSW50ZW50VG9G
cmFtZSh1aW50NjRfdCBmcmFtZUlELCBJbnRlbnQqIGNvcmVJbnRlbnQpCit7CisgICAgV2ViRnJh
bWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2hhcmVkKCkud2ViRnJhbWUoZnJhbWVJRCk7CisgICAg
aWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZnJhbWUtPmRlbGl2ZXJJbnRlbnQo
Y29yZUludGVudCk7Cit9CiAjZW5kaWYKIAogdm9pZCBXZWJQYWdlOjpwcmVmZXJlbmNlc0RpZENo
YW5nZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDNiNjVlYzQuLjJmMTE5M2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTA2LDYgKzEw
Niw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBGcmFtZTsKICAgICBjbGFzcyBG
cmFtZVZpZXc7CiAgICAgY2xhc3MgSFRNTFBsdWdJbkVsZW1lbnQ7CisjaWYgRU5BQkxFKFdFQl9J
TlRFTlRTKQorICAgIGNsYXNzIEludGVudDsKKyNlbmRpZgogICAgIGNsYXNzIEtleWJvYXJkRXZl
bnQ7CiAgICAgY2xhc3MgUGFnZTsKICAgICBjbGFzcyBQcmludENvbnRleHQ7CkBAIC00NzgsNyAr
NDgxLDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0gICAg
dm9pZCBkZWxpdmVySW50ZW50VG9GcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBJbnRlbnRE
YXRhJik7CisgICAgdm9pZCBkZWxpdmVyQ29yZUludGVudFRvRnJhbWUodWludDY0X3QgZnJhbWVJ
RCwgV2ViQ29yZTo6SW50ZW50Kik7CiAjZW5kaWYKIAogICAgIHZvaWQgcmVwbGFjZVNlbGVjdGlv
bldpdGhUZXh0KFdlYkNvcmU6OkZyYW1lKiwgY29uc3QgU3RyaW5nJik7CkBAIC02MzYsNiArNjM5
LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb250ZXh0TWVudUhpZGRlbigpIHsgbV9pc1Nob3dp
bmdDb250ZXh0TWVudSA9IGZhbHNlOyB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShXRUJfSU5URU5U
UykKKyAgICB2b2lkIGRlbGl2ZXJJbnRlbnRUb0ZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IEludGVudERhdGEmKTsKKyNlbmRpZgorCiAgICAgc3RhdGljIHZvaWQgc2Nyb2xsKFdlYkNvcmU6
OlBhZ2UqLCBXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb24sIFdlYkNvcmU6OlNjcm9sbEdyYW51bGFy
aXR5KTsKICAgICBzdGF0aWMgdm9pZCBsb2dpY2FsU2Nyb2xsKFdlYkNvcmU6OlBhZ2UqLCBXZWJD
b3JlOjpTY3JvbGxMb2dpY2FsRGlyZWN0aW9uLCBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDZlYjhhYjdl
Li4yN2U4YjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAg
LTgwLDYgKzgwLDEwIEBACiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvUmFuZG9tTnVtYmVyLmg+CiAKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisjaW5jbHVkZSA8
V2ViQ29yZS9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oPgorI2VuZGlmCisKICNpZiBFTkFC
TEUoTkVUV09SS19JTkZPKQogI2luY2x1ZGUgIldlYk5ldHdvcmtJbmZvTWFuYWdlck1lc3NhZ2Vz
LmgiCiAjZW5kaWYKQEAgLTc5MSw2ICs3OTUsMjYgQEAgV2ViUGFnZUdyb3VwUHJveHkqIFdlYlBy
b2Nlc3M6OndlYlBhZ2VHcm91cChjb25zdCBXZWJQYWdlR3JvdXBEYXRhJiBwYWdlR3JvdXBEYXQK
ICAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQuZ2V0KCk7CiB9CiAKKyNpZiBFTkFC
TEUoV0VCX0lOVEVOVFMpCit1aW50NjRfdCBXZWJQcm9jZXNzOjphZGRNZXNzYWdlUG9ydENoYW5u
ZWwoUGFzc1JlZlB0cjxQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbD4gbWVzc2FnZVBvcnRDaGFu
bmVsKQoreworICAgIHN0YXRpYyB1aW50NjRfdCBjaGFubmVsSUQgPSAwOworICAgIG1fbWVzc2Fn
ZVBvcnRDaGFubmVscy5hZGQoKytjaGFubmVsSUQsIG1lc3NhZ2VQb3J0Q2hhbm5lbCk7CisKKyAg
ICByZXR1cm4gY2hhbm5lbElEOworfQorCitQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbCogV2Vi
UHJvY2Vzczo6bWVzc2FnZVBvcnRDaGFubmVsKHVpbnQ2NF90IGNoYW5uZWxJRCkKK3sKKyAgICBy
ZXR1cm4gbV9tZXNzYWdlUG9ydENoYW5uZWxzLmdldChjaGFubmVsSUQpLmdldCgpOworfQorCit2
b2lkIFdlYlByb2Nlc3M6OnJlbW92ZU1lc3NhZ2VQb3J0Q2hhbm5lbCh1aW50NjRfdCBjaGFubmVs
SUQpCit7CisgICAgbV9tZXNzYWdlUG9ydENoYW5uZWxzLnJlbW92ZShjaGFubmVsSUQpOworfQor
I2VuZGlmCisKIHN0YXRpYyBib29sIGNhblBsdWdpbkhhbmRsZVJlc3BvbnNlKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIFN0cmluZyBwbHVnaW5QYXRoOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCAwZDAwNWE0Li5kM2RmMWI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtNzgsNiArNzgsOSBAQCBRVF9F
TkRfTkFNRVNQQUNFCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgSW50U2l6ZTsKICAg
ICBjbGFzcyBQYWdlR3JvdXA7CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorICAgIGNsYXNzIFBs
YXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsOworI2VuZGlmCiAgICAgY2xhc3MgUmVzb3VyY2VSZXF1
ZXN0OwogICAgIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiB9CkBAIC0xMTIsNyArMTE1LDEzIEBA
IHB1YmxpYzoKICAgICB2b2lkIGNyZWF0ZVdlYlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCBX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAgICAgdm9pZCByZW1vdmVXZWJQYWdlKHVpbnQ2
NF90IHBhZ2VJRCk7CiAgICAgV2ViUGFnZSogZm9jdXNlZFdlYlBhZ2UoKSBjb25zdDsKLSAgICAK
KworI2lmIEVOQUJMRShXRUJfSU5URU5UUykgCisgICAgdWludDY0X3QgYWRkTWVzc2FnZVBvcnRD
aGFubmVsKFBhc3NSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw+KTsK
KyAgICBXZWJDb3JlOjpQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbCogbWVzc2FnZVBvcnRDaGFu
bmVsKHVpbnQ2NF90KTsKKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VQb3J0Q2hhbm5lbCh1aW50NjRf
dCk7CisjZW5kaWYKKwogICAgIEluamVjdGVkQnVuZGxlKiBpbmplY3RlZEJ1bmRsZSgpIGNvbnN0
IHsgcmV0dXJuIG1faW5qZWN0ZWRCdW5kbGUuZ2V0KCk7IH0KIAogICAgIGJvb2wgaXNTZXBhcmF0
ZVByb2Nlc3MoKSBjb25zdDsKQEAgLTMwMCw2ICszMDksMTAgQEAgcHJpdmF0ZToKIAogICAgIEhh
c2hNYXA8dWludDY0X3QsIFdlYkZyYW1lKj4gbV9mcmFtZU1hcDsKIAorI2lmIEVOQUJMRShXRUJf
SU5URU5UUykKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1N
ZXNzYWdlUG9ydENoYW5uZWw+ID4gbV9tZXNzYWdlUG9ydENoYW5uZWxzOworI2VuZGlmCisKICAg
ICBIYXNoU2V0PFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPiBtX21pbWVUeXBlc1dpdGhDdXN0b21S
ZXByZXNlbnRhdGlvbnM7CiAKICAgICBUZXh0Q2hlY2tlclN0YXRlIG1fdGV4dENoZWNrZXJTdGF0
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bgppbmRleCAwZjgzZDViLi4yMjcxNmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0yNyw2ICsyNywxMCBAQCBtZXNzYWdlcyAt
PiBXZWJQcm9jZXNzIHsKICAgICAjIENyZWF0ZSBhIG5ldyBwYWdlLgogICAgIENyZWF0ZVdlYlBh
Z2UodWludDY0X3QgbmV3UGFnZUlELCBXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMg
cGFnZUNyZWF0aW9uUGFyYW1ldGVycykKIAorI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICBS
ZW1vdmVNZXNzYWdlUG9ydENoYW5uZWwodWludDY0X3QgY2hhbm5lbElEKTsKKyNlbmRpZgorCiAg
ICAgIyBWaXNpdGVkIGxpbmsgdHJhY2tpbmcuCiAgICAgU2V0VmlzaXRlZExpbmtUYWJsZShXZWJL
aXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZSkKICAgICBWaXNpdGVkTGlua1N0YXRlQ2hh
bmdlZChWZWN0b3I8V2ViQ29yZTo6TGlua0hhc2g+IGxpbmtIYXNoZXMpCmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzkwNzJlZS4uNzllYmQ3MyAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDIyIEBACisyMDEyLTA3LTMxICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1l
ekBpbnRlbC5jb20+CisKKyAgICAgICAgW1dLMl0gQWRkIHN1cHBvcnQgZm9yIFdlYiBJbnRlbnRz
IE1lc3NhZ2VQb3J0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODkwNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBVc2UgV0tCdW5kbGVJbnRlbnQgaW5zdGVhZCBvZiBXZWJJbnRlbnREYXRhIGluCisgICAg
ICAgIFdlYktpdFRlc3RSdW5uZXIuIFdUUiBub3cgcHJpbnRzIHRoZSBudW1iZXIgb2YKKyAgICAg
ICAgTWVzc2FnZVBvcnRzIGluIHJlY2VpdmVkIFdlYiBpbnRlbnRzIGFzCisgICAgICAgIGV4cGVj
dGVkIGJ5IHRoZSBmb2xsb3dpbmcgbGF5b3V0IHRlc3RzOgorICAgICAgICB3ZWJpbnRlbnRzL3dl
Yi1pbnRlbnRzLWludm9rZS1wb3J0Lmh0bWwKKyAgICAgICAgd2ViaW50ZW50cy93ZWItaW50ZW50
cy1vYmotY29uc3RydWN0b3IuaHRtbAorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwOgorICAgICAgICAoV1RSOjpJbmplY3Rl
ZEJ1bmRsZVBhZ2U6OmRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZSk6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAg
ICAgIChXVFI6OkxheW91dFRlc3RDb250cm9sbGVyOjpkZWxpdmVyV2ViSW50ZW50KToKKwogMjAx
Mi0wOC0wMiAgWGlhbnpodSBXYW5nICA8d2FuZ3hpYW56aHVAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFtDaHJvbWl1bS1BbmRyb2lkXSBSdW4gbGF5b3V0IHRlc3RzIG9uIG11bHRpcGxlIGRldmlj
ZXMgaW4gcGFyYWxsZWwKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAppbmRleCAxNjM3MWQxLi4xZWJj
MmYwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCkBAIC01MCw4ICs1MCw4IEBACiAjZW5kaWYK
IAogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlSW50
ZW50Lmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZUludGVudFJlcXVlc3QuaD4KLSNpbmNs
dWRlIDxXZWJLaXQyL1dLSW50ZW50RGF0YS5oPgogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQl9JTlRF
TlRTX1RBRykKICNpbmNsdWRlIDxXZWJLaXQyL1dLSW50ZW50U2VydmljZUluZm8uaD4KQEAgLTQz
MCwxOSArNDMwLDI0IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRSZWNlaXZlSW50ZW50
Rm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlCiB7CiAjaWYgRU5BQkxFKFdF
Ql9JTlRFTlRTKQogICAgIHN0YXRpY19jYXN0PEluamVjdGVkQnVuZGxlUGFnZSo+KGNvbnN0X2Nh
c3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+bV9jdXJyZW50SW50ZW50UmVxdWVzdCA9IGludGVudFJl
cXVlc3Q7Ci0gICAgV0tSZXRhaW5QdHI8V0tJbnRlbnREYXRhUmVmPiBpbnRlbnQoQWRvcHRXSywg
V0tCdW5kbGVJbnRlbnRSZXF1ZXN0Q29weUludGVudERhdGEoaW50ZW50UmVxdWVzdCkpOworICAg
IFdLUmV0YWluUHRyPFdLQnVuZGxlSW50ZW50UmVmPiBpbnRlbnQoQWRvcHRXSywgV0tCdW5kbGVJ
bnRlbnRSZXF1ZXN0Q29weUludGVudChpbnRlbnRSZXF1ZXN0KSk7CiAKICAgICBJbmplY3RlZEJ1
bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoIlJlY2VpdmVkIFdlYiBJbnRl
bnQ6IGFjdGlvbj0iKTsKLSAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tBY3Rpb24oQWRv
cHRXSywgV0tJbnRlbnREYXRhQ29weUFjdGlvbihpbnRlbnQuZ2V0KCkpKTsKKyAgICBXS1JldGFp
blB0cjxXS1N0cmluZ1JlZj4gd2tBY3Rpb24oQWRvcHRXSywgV0tCdW5kbGVJbnRlbnRDb3B5QWN0
aW9uKGludGVudC5nZXQoKSkpOwogICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdC
dWlsZGVyKCktPmFwcGVuZCh0b1dURlN0cmluZyh3a0FjdGlvbi5nZXQoKSkpOwogICAgIEluamVj
dGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiIHR5cGU9Iik7Ci0g
ICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHdrVHlwZShBZG9wdFdLLCBXS0ludGVudERhdGFD
b3B5VHlwZShpbnRlbnQuZ2V0KCkpKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tU
eXBlKEFkb3B0V0ssIFdLQnVuZGxlSW50ZW50Q29weVR5cGUoaW50ZW50LmdldCgpKSk7CiAgICAg
SW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKHRvV1RGU3Ry
aW5nKHdrVHlwZS5nZXQoKSkpOwogICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdC
dWlsZGVyKCktPmFwcGVuZCgiXG4iKTsKIAotICAgIC8vIEZJWE1FOiBQcmludCBudW1iZXIgb2Yg
cG9ydHMgd2hlbiBleHBvc2VkIGluIFdlYktpdDIKKyAgICBjb25zdCBzaXplX3QgbnVtTWVzc2Fn
ZVBvcnRzID0gV0tCdW5kbGVJbnRlbnRNZXNzYWdlUG9ydENvdW50KGludGVudC5nZXQoKSk7Cisg
ICAgaWYgKG51bU1lc3NhZ2VQb3J0cykgeworICAgICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVk
KCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoIkhhdmUgIik7CisgICAgICAgIEluamVjdGVkQnVu
ZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZChXVEY6OlN0cmluZzo6bnVtYmVy
KG51bU1lc3NhZ2VQb3J0cykpOworICAgICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3Ry
aW5nQnVpbGRlcigpLT5hcHBlbmQoIiBwb3J0c1xuIik7CisgICAgfQogCi0gICAgV0tSZXRhaW5Q
dHI8V0tVUkxSZWY+IHdrU2VydmljZVVybChBZG9wdFdLLCBXS0ludGVudERhdGFDb3B5U2Vydmlj
ZShpbnRlbnQuZ2V0KCkpKTsKKyAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gd2tTZXJ2aWNlVXJs
KEFkb3B0V0ssIFdLQnVuZGxlSW50ZW50Q29weVNlcnZpY2UoaW50ZW50LmdldCgpKSk7CiAgICAg
aWYgKHdrU2VydmljZVVybCkgewogICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tT
ZXJ2aWNlKEFkb3B0V0ssIFdLVVJMQ29weVN0cmluZyh3a1NlcnZpY2VVcmwuZ2V0KCkpKTsKICAg
ICAgICAgaWYgKHdrU2VydmljZSAmJiAhV0tTdHJpbmdJc0VtcHR5KHdrU2VydmljZS5nZXQoKSkp
IHsKQEAgLTQ1Miw3ICs0NTcsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZGlkUmVjZWl2
ZUludGVudEZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZQogICAgICAgICB9
CiAgICAgfQogCi0gICAgV0tSZXRhaW5QdHI8V0tEaWN0aW9uYXJ5UmVmPiB3a0V4dHJhcyhBZG9w
dFdLLCBXS0ludGVudERhdGFDb3B5RXh0cmFzKGludGVudC5nZXQoKSkpOworICAgIFdLUmV0YWlu
UHRyPFdLRGljdGlvbmFyeVJlZj4gd2tFeHRyYXMoQWRvcHRXSywgV0tCdW5kbGVJbnRlbnRDb3B5
RXh0cmFzKGludGVudC5nZXQoKSkpOwogICAgIFdLUmV0YWluUHRyPFdLQXJyYXlSZWY+IHdrRXh0
cmFLZXlzKEFkb3B0V0ssIFdLRGljdGlvbmFyeUNvcHlLZXlzKHdrRXh0cmFzLmdldCgpKSk7CiAg
ICAgY29uc3Qgc2l6ZV90IG51bUV4dHJhS2V5cyA9IFdLQXJyYXlHZXRTaXplKHdrRXh0cmFLZXlz
LmdldCgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUV4dHJhS2V5czsgKytpKSB7
CkBAIC00NjUsNyArNDcwLDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZFJlY2VpdmVJ
bnRlbnRGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGUKICAgICAgICAgSW5q
ZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKCJcbiIpOwogICAg
IH0KIAotICAgIFdLUmV0YWluUHRyPFdLQXJyYXlSZWY+IHdrU3VnZ2VzdGlvbnMoQWRvcHRXSywg
V0tJbnRlbnREYXRhQ29weVN1Z2dlc3Rpb25zKGludGVudC5nZXQoKSkpOworICAgIFdLUmV0YWlu
UHRyPFdLQXJyYXlSZWY+IHdrU3VnZ2VzdGlvbnMoQWRvcHRXSywgV0tCdW5kbGVJbnRlbnRDb3B5
U3VnZ2VzdGlvbnMoaW50ZW50LmdldCgpKSk7CiAgICAgY29uc3Qgc2l6ZV90IG51bVN1Z2dlc3Rp
b25zID0gV0tBcnJheUdldFNpemUod2tTdWdnZXN0aW9ucy5nZXQoKSk7CiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBudW1TdWdnZXN0aW9uczsgKytpKSB7CiAgICAgICAgIFdLU3RyaW5nUmVm
IHdrU3VnZ2VzdGlvbiA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0FycmF5R2V0SXRlbUF0
SW5kZXgod2tTdWdnZXN0aW9ucy5nZXQoKSwgaSkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNw
cAppbmRleCA1ZmI1MjZkLi5kMTY4NGJiIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcApA
QCAtNDksOCArNDksOCBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAog
I2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlSW50ZW50
Lmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZUludGVudFJlcXVlc3QuaD4KLSNpbmNsdWRl
IDxXZWJLaXQyL1dLSW50ZW50RGF0YS5oPgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXVFIgewpAQCAt
NjUxLDggKzY1MSw4IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmRlbGl2ZXJXZWJJbnRl
bnQoSlNTdHJpbmdSZWYgYWN0aW9uLCBKU1N0cmluZ1JlZiB0eXBlCiAgICAgV0tEaWN0aW9uYXJ5
QWRkSXRlbShpbnRlbnRJbml0RGljdC5nZXQoKSwgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoInR5cGUiKSwgdHlwZVdLLmdldCgpKTsKICAgICBXS0RpY3Rpb25hcnlBZGRJdGVtKGludGVu
dEluaXREaWN0LmdldCgpLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiZGF0YSIpLCBk
YXRhV0suZ2V0KCkpOwogCi0gICAgV0tSZXRhaW5QdHI8V0tJbnRlbnREYXRhUmVmPiB3a0ludGVu
dERhdGEoQWRvcHRXSywgV0tJbnRlbnREYXRhQ3JlYXRlKGludGVudEluaXREaWN0LmdldCgpKSk7
Ci0gICAgV0tCdW5kbGVQYWdlRGVsaXZlckludGVudFRvRnJhbWUoSW5qZWN0ZWRCdW5kbGU6OnNo
YXJlZCgpLnBhZ2UoKS0+cGFnZSgpLCBtYWluRnJhbWUsIHdrSW50ZW50RGF0YS5nZXQoKSk7Cisg
ICAgV0tSZXRhaW5QdHI8V0tCdW5kbGVJbnRlbnRSZWY+IHdrSW50ZW50KEFkb3B0V0ssIFdLQnVu
ZGxlSW50ZW50Q3JlYXRlKGludGVudEluaXREaWN0LmdldCgpKSk7CisgICAgV0tCdW5kbGVQYWdl
RGVsaXZlckludGVudFRvRnJhbWUoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFn
ZSgpLCBtYWluRnJhbWUsIHdrSW50ZW50LmdldCgpKTsKICNlbmRpZgogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156531</attachid>
            <date>2012-08-04 06:58:16 -0700</date>
            <delta_ts>2012-08-04 12:02:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>89072_wk2_messagePorts.patch</filename>
            <type>text/plain</type>
            <size>56956</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKaW5kZXggNjNhOGNhNy4uNjNjZjk0ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0
cy50eHQKQEAgLTU0LDYgKzU0LDcgQEAgU0VUKFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwog
ICAgICIke1dFQkNPUkVfRElSfS9icmlkZ2UvanNjIgogICAgICIke1dFQkNPUkVfRElSfS9jc3Mi
CiAgICAgIiR7V0VCQ09SRV9ESVJ9L2RvbSIKKyAgICAiJHtXRUJDT1JFX0RJUn0vZG9tL2RlZmF1
bHQiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2VkaXRpbmciCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2hp
c3RvcnkiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2h0bWwiCkBAIC0zNzEsNiArMzcyLDcgQEAgU0VU
KFdlYktpdDJfU09VUkNFUwogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVDbGllbnQuY3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5jcHAKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAKKyAgICBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50LmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0LmNwcAogICAgIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcAogICAgIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRGlhZ25vc3RpY0xvZ2dpbmdD
bGllbnQuY3BwCkBAIC0zOTEsNiArMzkzLDcgQEAgU0VUKFdlYktpdDJfU09VUkNFUwogICAgIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAKICAgICBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAKICAg
ICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW5zcGVjdG9yLmNwcAor
ICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnQuY3BwCiAg
ICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudFJlcXVlc3Qu
Y3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU5hdmlnYXRp
b25BY3Rpb24uY3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZU5vZGVIYW5kbGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNjg0NjhlZi4uOGY3MTE0OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSw1ICsxLDEyNiBAQAogMjAxMi0wOC0wNCAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlz
dG9waGUuZHVtZXpAaW50ZWwuY29tPgogCisgICAgICAgIFtXSzJdIEFkZCBzdXBwb3J0IGZvciBX
ZWIgSW50ZW50cyBNZXNzYWdlUG9ydHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTg5MDcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIFdlYkludGVudHMgTWVzc2FnZVBvcnRzIGlu
IFdlYktpdDIuCisgICAgICAgIE1lc3NhZ2VQb3J0cyBjYW4gYmUgcGFzc2VkIHdpdGggYSBXZWIg
SW50ZW50IGluCisgICAgICAgIG9yZGVyIHRvIG9wZW4gYSBkaXJlY3QgY29tbXVuaWNhdGlvbiBj
aGFubmVsCisgICAgICAgIGJldHdlZW4gdGhlIFdlYiBhcHBsaWNhdGlvbiBhbmQgdGhlIGludGVu
dCBzZXJ2aWNlLgorICAgICAgICBUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgYWxyZWFkeSBzdXBwb3J0
ZWQgYnkgV2ViS2l0IDEuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IElu
amVjdGVkQnVuZGxlSW50ZW50CisgICAgICAgIGNsYXNzIHdoaWNoIHdyYXBzIGEgV2ViQ29yZTo6
SW50ZW50LiBUaGlzIHdheQorICAgICAgICBpbmZvcm1hdGlvbiByZWdhcmRpbmcgdGhlIE1lc3Nh
Z2VQb3J0cyBpbiBhIFdlYgorICAgICAgICBJbnRlbnQgaXMga2VwdCB3aGVuIHVzaW5nIGFuIGlu
amVjdGVkIGJ1bmRsZS4KKworICAgICAgICBGb3IgdGhlIFVJUHJvY2VzcywgV2ViSW50ZW50RGF0
YSBub3cgY2FycmllcworICAgICAgICBpZGVudGlmaWVycyBmb3IgdGhlIE1lc3NhZ2VQb3J0cyB3
aGljaCBjYW4gZ28gb3ZlcgorICAgICAgICBJUEMuIFRob3NlIGlkZW50aWZpZXJzIG1hcCB0byBh
Y3R1YWwgTWVzc2FnZVBvcnRzCisgICAgICAgIHN0b3JlZCBpbiB0aGUgV2ViIHByb2Nlc3MuIFRo
aXMgd2F5LCB3aGVuIHRoZSBVSQorICAgICAgICBkZWxpdmVycyBhbiBpbnRlbnQgdG8gYSBmcmFt
ZSwgd2UgY2FuIGdldCBiYWNrIHRoZQorICAgICAgICBjb3JyZXNwb25kaW5nIE1lc3NhZ2VQb3J0
cyBmcm9tIHRoZSBXZWIgcHJvY2VzcworICAgICAgICBiZWZvcmUgZGVsaXZlcmluZyB0byB0aGUg
RE9NV2luZG93LgorCisgICAgICAgIFRoaXMgZnVuY3Rpb25hbGl0eSBpcyBhbHJlYWR5IHRlc3Rl
ZCBieToKKyAgICAgICAgd2ViaW50ZW50cy93ZWItaW50ZW50cy1pbnZva2UtcG9ydC5odG1sCisg
ICAgICAgIHdlYmludGVudHMvd2ViLWludGVudHMtb2JqLWNvbnN0cnVjdG9yLmh0bWwKKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06Cisg
ICAgICAgICogU2hhcmVkL0FQSS9jL1dLQmFzZS5oOgorICAgICAgICAqIFNoYXJlZC9BUElPYmpl
Y3QuaDoKKyAgICAgICAgKiBTaGFyZWQvSW50ZW50RGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkludGVudERhdGE6OkludGVudERhdGEpOgorICAgICAgICAoV2ViS2l0OjpJbnRlbnREYXRhOjpl
bmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpJbnRlbnREYXRhOjpkZWNvZGUpOgorICAgICAgICAq
IFNoYXJlZC9JbnRlbnREYXRhLmg6CisgICAgICAgIChJbnRlbnREYXRhKToKKyAgICAgICAgKiBU
YXJnZXQucHJpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0ludGVudERhdGEuY3BwOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0ludGVudERhdGEuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViSW50ZW50RGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkludGVudERhdGE6
OldlYkludGVudERhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnRlbnREYXRhOjp+V2ViSW50
ZW50RGF0YSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnRlbnRE
YXRhOjpleHRyYXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJJbnRlbnREYXRhLmg6CisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnRlbnREYXRhOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViSW50ZW50RGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZUludGVudEZv
ckZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6cmVtb3ZlTWVz
c2FnZVBvcnRDaGFubmVsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6
CisgICAgICAgIChXZWJQcm9jZXNzUHJveHkpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVBUElDYXN0Lmg6CisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnQuY3Bw
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnRlbnREYXRh
LmNwcC4KKyAgICAgICAgKFdLQnVuZGxlSW50ZW50R2V0VHlwZUlEKToKKyAgICAgICAgKFdLQnVu
ZGxlSW50ZW50Q3JlYXRlKToKKyAgICAgICAgKFdLQnVuZGxlSW50ZW50Q29weUFjdGlvbik6Cisg
ICAgICAgIChXS0J1bmRsZUludGVudENvcHlUeXBlKToKKyAgICAgICAgKFdLQnVuZGxlSW50ZW50
Q29weVNlcnZpY2UpOgorICAgICAgICAoV0tCdW5kbGVJbnRlbnRDb3B5U3VnZ2VzdGlvbnMpOgor
ICAgICAgICAoV0tCdW5kbGVJbnRlbnRDb3B5RXh0cmEpOgorICAgICAgICAoV0tCdW5kbGVJbnRl
bnRDb3B5RXh0cmFzKToKKyAgICAgICAgKFdLQnVuZGxlSW50ZW50TWVzc2FnZVBvcnRDb3VudCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVu
dC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnRlbnRE
YXRhLmguCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZUludGVudFJlcXVlc3QuY3BwOgorICAgICAgICAoV0tCdW5kbGVJbnRlbnRSZXF1ZXN0Q29weUlu
dGVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZUludGVudFJlcXVlc3QuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXS0J1bmRsZVBhZ2VEZWxpdmVySW50ZW50
VG9GcmFtZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZVBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlSW50ZW50LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkludGVudERhdGEuY3BwLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6SW5q
ZWN0ZWRCdW5kbGVJbnRlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVu
ZGxlSW50ZW50OjpJbmplY3RlZEJ1bmRsZUludGVudCk6CisgICAgICAgIChXZWJLaXQ6OkluamVj
dGVkQnVuZGxlSW50ZW50OjphY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRs
ZUludGVudDo6cGF5bG9hZFR5cGUpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZUlu
dGVudDo6c2VydmljZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlSW50ZW50Ojpk
YXRhKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OmV4dHJhKToKKyAg
ICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OmV4dHJhcyk6CisgICAgICAgIChX
ZWJLaXQ6OkluamVjdGVkQnVuZGxlSW50ZW50OjpzdWdnZXN0aW9ucyk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudC5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW50ZW50RGF0YS5oLgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKEluamVjdGVkQnVuZGxlSW50ZW50KToKKyAgICAgICAgKFdlYktpdDo6
SW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OmNvcmVJbnRlbnQpOgorICAgICAgICAoV2ViS2l0OjpJbmpl
Y3RlZEJ1bmRsZUludGVudDo6dHlwZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpJ
bmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3Q6OmludGVudCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuaDoKKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgIChJbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkZyYW1lOjpkZWxpdmVySW50ZW50KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkZyYW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkZWxpdmVyQ29yZUlu
dGVudFRvRnJhbWUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYlBhZ2UpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzOjphZGRNZXNzYWdlUG9ydENoYW5uZWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzOjptZXNzYWdlUG9ydENoYW5uZWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
OjpyZW1vdmVNZXNzYWdlUG9ydENoYW5uZWwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJQcm9jZXNzKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisKKzIwMTItMDgtMDQgIENo
cmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKwogICAgICAgICBb
V0syXSBNb3ZlIFdlYkludGVudERhdGEgZnJvbSBTaGFyZWQgdG8gVUlQcm9jZXNzCiAgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzE3NQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYktpdDIv
R05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBlZWZkNWEwLi5lZDhjMDVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dO
VW1ha2VmaWxlLmxpc3QuYW0KQEAgLTk2NCw2ICs5NjQsOCBAQCB3ZWJraXQyX3NvdXJjZXMgKz0g
XAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVJbml0aWFsaXplLmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVJbnNwZWN0b3IuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW5zcGVjdG9yLmggXAorCVNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnQuY3Bw
IFwKKwlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlSW50ZW50LmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVJbnRlbnRSZXF1ZXN0LmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudFJlcXVlc3QuaCBcCiAJU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU5vZGVI
YW5kbGUuY3BwIFwKQEAgLTk5OCw2ICsxMDAwLDggQEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlRE9N
V2luZG93RXh0ZW5zaW9uLmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcCBcCiAJU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuaCBc
CisJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZUludGVudC5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVJbnRlbnQuaCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuY3BwIFwKIAlTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50UmVxdWVz
dC5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSS9jL1dLQmFzZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFz
ZS5oCmluZGV4IDY4NTRlY2MuLmE2YThiZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUEkvYy9XS0Jhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tC
YXNlLmgKQEAgLTEzNSw2ICsxMzUsNyBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0J1
bmRsZURPTVdpbmRvd0V4dGVuc2lvbiogV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpbwogdHlwZWRl
ZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVGcmFtZSogV0tCdW5kbGVGcmFtZVJlZjsKIHR5
cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQnVuZGxlSGl0VGVzdFJlc3VsdCogV0tCdW5kbGVI
aXRUZXN0UmVzdWx0UmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVJbnNw
ZWN0b3IqIFdLQnVuZGxlSW5zcGVjdG9yUmVmOwordHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVl
V0tCdW5kbGVJbnRlbnQqIFdLQnVuZGxlSW50ZW50UmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3Qg
T3BhcXVlV0tCdW5kbGVJbnRlbnRSZXF1ZXN0KiBXS0J1bmRsZUludGVudFJlcXVlc3RSZWY7CiB0
eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRsZU5hdmlnYXRpb25BY3Rpb24qIFdLQnVu
ZGxlTmF2aWdhdGlvbkFjdGlvblJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQnVu
ZGxlTm9kZUhhbmRsZSogV0tCdW5kbGVOb2RlSGFuZGxlUmVmOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9i
amVjdC5oCmluZGV4IDhlNGQyOTMuLjcwOGVmZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUElPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0
LmgKQEAgLTExNyw2ICsxMTcsNyBAQCBwdWJsaWM6CiAgICAgICAgIFR5cGVCdW5kbGVGcmFtZSwK
ICAgICAgICAgVHlwZUJ1bmRsZUhpdFRlc3RSZXN1bHQsCiAgICAgICAgIFR5cGVCdW5kbGVJbnNw
ZWN0b3IsCisgICAgICAgIFR5cGVCdW5kbGVJbnRlbnQsCiAgICAgICAgIFR5cGVCdW5kbGVJbnRl
bnRSZXF1ZXN0LAogICAgICAgICBUeXBlQnVuZGxlTmF2aWdhdGlvbkFjdGlvbiwKICAgICAgICAg
VHlwZUJ1bmRsZU5vZGVIYW5kbGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
SW50ZW50RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW50ZW50RGF0YS5jcHAKaW5k
ZXggNDk5NWIyZS4uNDEwNzg3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0lu
dGVudERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9JbnRlbnREYXRhLmNwcApA
QCAtMzEsNyArMzEsMTAgQEAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJEYXRh
UmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVk
ZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW50ZW50Lmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9NZXNzYWdlUG9ydENoYW5uZWwuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3Jt
TWVzc2FnZVBvcnRDaGFubmVsLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC00
NSw2ICs0OCwxMiBAQCBJbnRlbnREYXRhOjpJbnRlbnREYXRhKEludGVudCogY29yZUludGVudCkK
ICAgICAsIGV4dHJhcyhjb3JlSW50ZW50LT5leHRyYXMoKSkKICAgICAsIHN1Z2dlc3Rpb25zKGNv
cmVJbnRlbnQtPnN1Z2dlc3Rpb25zKCkpCiB7CisgICAgTWVzc2FnZVBvcnRDaGFubmVsQXJyYXkq
IGNvcmVNZXNzYWdlUG9ydHMgPSBjb3JlSW50ZW50LT5tZXNzYWdlUG9ydHMoKTsKKyAgICBpZiAo
Y29yZU1lc3NhZ2VQb3J0cykgeworICAgICAgICBzaXplX3QgbnVtTWVzc2FnZVBvcnRzID0gY29y
ZU1lc3NhZ2VQb3J0cy0+c2l6ZSgpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51
bU1lc3NhZ2VQb3J0czsgKytpKQorICAgICAgICAgICAgbWVzc2FnZVBvcnRzLmFwcGVuZChXZWJQ
cm9jZXNzOjpzaGFyZWQoKS5hZGRNZXNzYWdlUG9ydENoYW5uZWwoKCpjb3JlTWVzc2FnZVBvcnRz
KVtpXS0+Y2hhbm5lbCgpKSk7CisgICAgfQogfQogCiB2b2lkIEludGVudERhdGE6OmVuY29kZShD
b3JlSVBDOjpBcmd1bWVudEVuY29kZXIqIGVuY29kZXIpIGNvbnN0CkBAIC01NSw2ICs2NCw3IEBA
IHZvaWQgSW50ZW50RGF0YTo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciogZW5jb2Rl
cikgY29uc3QKICAgICBlbmNvZGVyLT5lbmNvZGUoQ29yZUlQQzo6RGF0YVJlZmVyZW5jZShkYXRh
KSk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKGV4dHJhcyk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKHN1
Z2dlc3Rpb25zKTsKKyAgICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZVBvcnRzKTsKIH0KIAogYm9v
bCBJbnRlbnREYXRhOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBJ
bnRlbnREYXRhJiBpbnRlbnREYXRhKQpAQCAtNzMsNiArODMsOCBAQCBib29sIEludGVudERhdGE6
OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIEludGVudERhdGEmIGlu
dGVudERhdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUo
aW50ZW50RGF0YS5zdWdnZXN0aW9ucykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAo
IWRlY29kZXItPmRlY29kZShpbnRlbnREYXRhLm1lc3NhZ2VQb3J0cykpCisgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0ludGVudERhdGEuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9JbnRlbnREYXRh
LmgKaW5kZXggOTZlMmQ5Zi4uZTg0MzVjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0ludGVudERhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW50ZW50RGF0YS5o
CkBAIC0yOSw3ICsyOSw4IEBACiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQogCiAjaW5jbHVkZSAi
QVBJT2JqZWN0LmgiCi0jaW5jbHVkZSAiR2VuZXJpY0NhbGxiYWNrLmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9LVVJMLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIENvcmVJUEMgewpAQCAtNTYsNiArNTcsNyBAQCBz
dHJ1Y3QgSW50ZW50RGF0YSB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgSGFzaE1h
cDxTdHJpbmcsIFN0cmluZz4gZXh0cmFzOwogICAgIFZlY3RvcjxXZWJDb3JlOjpLVVJMPiBzdWdn
ZXN0aW9uczsKKyAgICBWZWN0b3I8dWludDY0X3Q+IG1lc3NhZ2VQb3J0czsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaSBi
L1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKaW5kZXggNzFmMDI3Yi4uMjA3ZDM0ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJn
ZXQucHJpCkBAIC0zMTksNiArMzE5LDcgQEAgSEVBREVSUyArPSBcCiAgICAgV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUJhY2tGb3J3YXJkTGlzdC5oIFwKICAgICBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5o
IFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSGl0VGVzdFJl
c3VsdC5oIFwKKyAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50
ZW50LmggXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRl
bnRSZXF1ZXN0LmggXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVOYXZpZ2F0aW9uQWN0aW9uLmggXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVOb2RlSGFuZGxlLmggXApAQCAtMzMyLDYgKzMzMyw3IEBAIEhFQURFUlMgKz0g
XAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCBc
CiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4
dGVuc2lvbi5oIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
SGl0VGVzdFJlc3VsdC5oIFwKKyAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlSW50ZW50LmggXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVJbnRlbnRSZXF1ZXN0LmggXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmggXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaCBcCkBAIC03MDMsNiAr
NzA1LDcgQEAgU09VUkNFUyArPSBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZUZyYW1lLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZUhpdFRlc3RSZXN1bHQuY3BwIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlSW5zcGVjdG9yLmNwcCBcCisgICAgV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudC5jcHAgXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnRSZXF1ZXN0LmNwcCBcCiAgICAgV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3BwIFwKICAg
ICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlTm9kZUhhbmRsZS5jcHAg
XApAQCAtNzE4LDYgKzcyMSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwIFwKICAgICBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmNwcCBcCiAgICAgV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3BwIFwK
KyAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50LmNwcCBc
CiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudFJlcXVl
c3QuY3BwIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2
aWdhdGlvbkFjdGlvbi5jcHAgXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0ludGVudERhdGEuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLSW50ZW50RGF0YS5jcHAKaW5kZXggN2E5MmRiNS4uYjUxMzc1ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLSW50ZW50RGF0YS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLSW50ZW50RGF0YS5jcHAK
QEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXS0Rp
Y3Rpb25hcnkuaCIKICNpbmNsdWRlICJXS1N0cmluZy5oIgorI2luY2x1ZGUgIldlYlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oIgogCiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQogI2luY2x1ZGUgIldl
YkludGVudERhdGEuaCIKQEAgLTQ3LDI3ICs0OCw2IEBAIFdLVHlwZUlEIFdLSW50ZW50RGF0YUdl
dFR5cGVJRCgpCiAjZW5kaWYKIH0KIAotV0tJbnRlbnREYXRhUmVmIFdLSW50ZW50RGF0YUNyZWF0
ZShXS0RpY3Rpb25hcnlSZWYgaW5pdERpY3Rpb25hcnlSZWYpCi17Ci0jaWYgRU5BQkxFKFdFQl9J
TlRFTlRTKQotICAgIEludGVudERhdGEgaW50ZW50RGF0YTsKLSAgICBXS1N0cmluZ1JlZiBhY3Rp
b24gPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShp
bml0RGljdGlvbmFyeVJlZiwgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImFjdGlvbiIp
KSk7Ci0gICAgQVNTRVJUKGFjdGlvbik7Ci0gICAgaW50ZW50RGF0YS5hY3Rpb24gPSB0b0ltcGwo
YWN0aW9uKS0+c3RyaW5nKCk7Ci0gICAgV0tTdHJpbmdSZWYgdHlwZSA9IHN0YXRpY19jYXN0PFdL
U3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KGluaXREaWN0aW9uYXJ5UmVmLCBX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygidHlwZSIpKSk7Ci0gICAgQVNTRVJUKHR5cGUp
OwotICAgIGludGVudERhdGEudHlwZSA9IHRvSW1wbCh0eXBlKS0+c3RyaW5nKCk7Ci0gICAgV0tT
ZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYgZGF0YSA9IHN0YXRpY19jYXN0PFdLU2VyaWFsaXplZFNj
cmlwdFZhbHVlUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KGluaXREaWN0aW9uYXJ5UmVm
LCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiZGF0YSIpKSk7Ci0gICAgaWYgKGRhdGEp
Ci0gICAgICAgIGludGVudERhdGEuZGF0YSA9IHRvSW1wbChkYXRhKS0+ZGF0YVJlZmVyZW5jZSgp
LnZlY3RvcigpOwotCi0gICAgUmVmUHRyPFdlYkludGVudERhdGE+IHdlYkludGVudERhdGEgPSBX
ZWJJbnRlbnREYXRhOjpjcmVhdGUoaW50ZW50RGF0YSk7Ci0gICAgcmV0dXJuIHRvQVBJKHdlYklu
dGVudERhdGEucmVsZWFzZSgpLmxlYWtSZWYoKSk7Ci0jZWxzZQotICAgIHJldHVybiAwOwotI2Vu
ZGlmCi19Ci0KIFdLU3RyaW5nUmVmIFdLSW50ZW50RGF0YUNvcHlBY3Rpb24oV0tJbnRlbnREYXRh
UmVmIGludGVudFJlZikKIHsKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnRlbnREYXRhLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnRlbnREYXRhLmgKaW5kZXggMWY4MDllYy4uOGZjYjg2
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLSW50ZW50RGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0ludGVudERhdGEuaApA
QCAtMzQsOCArMzQsNiBAQCBleHRlcm4gIkMiIHsKIAogV0tfRVhQT1JUIFdLVHlwZUlEIFdLSW50
ZW50RGF0YUdldFR5cGVJRCgpOwogCi1XS19FWFBPUlQgV0tJbnRlbnREYXRhUmVmIFdLSW50ZW50
RGF0YUNyZWF0ZShXS0RpY3Rpb25hcnlSZWYgaW5pdERpY3Rpb25hcnkpOwotCiBXS19FWFBPUlQg
V0tTdHJpbmdSZWYgV0tJbnRlbnREYXRhQ29weUFjdGlvbihXS0ludGVudERhdGFSZWYgaW50ZW50
UmVmKTsKIFdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0ludGVudERhdGFDb3B5VHlwZShXS0ludGVu
dERhdGFSZWYgaW50ZW50UmVmKTsKIFdLX0VYUE9SVCBXS1VSTFJlZiBXS0ludGVudERhdGFDb3B5
U2VydmljZShXS0ludGVudERhdGFSZWYgaW50ZW50UmVmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnRlbnREYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJJbnRlbnREYXRhLmNwcAppbmRleCA5NjEyOGRiLi5hOWQyMTc2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW50ZW50RGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkludGVudERhdGEuY3BwCkBAIC0zMCwxNiArMzAsMjkgQEAK
IAogI2luY2x1ZGUgIkltbXV0YWJsZUFycmF5LmgiCiAjaW5jbHVkZSAiSW1tdXRhYmxlRGljdGlv
bmFyeS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgorI2luY2x1ZGUgIldlYlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIldlYlN0cmluZy5oIgogI2luY2x1ZGUgIldl
YlVSTC5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotV2ViSW50ZW50RGF0YTo6V2ViSW50ZW50
RGF0YShjb25zdCBJbnRlbnREYXRhJiBzdG9yZSkKK1dlYkludGVudERhdGE6OldlYkludGVudERh
dGEoY29uc3QgSW50ZW50RGF0YSYgc3RvcmUsIFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcykKICAg
ICA6IG1fc3RvcmUoc3RvcmUpCisgICAgLCBtX3Byb2Nlc3MocHJvY2VzcykKIHsKIH0KIAorV2Vi
SW50ZW50RGF0YTo6fldlYkludGVudERhdGEoKQoreworICAgIC8vIFJlbW92ZSBNZXNzYWdlUG9y
dENoYW5uZWxzIGZyb20gV2ViUHJvY2Vzcy4KKyAgICBpZiAobV9wcm9jZXNzICYmICFtX3N0b3Jl
Lm1lc3NhZ2VQb3J0cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgc2l6ZV90IG51bU1lc3NhZ2VQb3J0
cyA9IG1fc3RvcmUubWVzc2FnZVBvcnRzLnNpemUoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBudW1NZXNzYWdlUG9ydHM7ICsraSkKKyAgICAgICAgICAgIG1fcHJvY2Vzcy0+cmVt
b3ZlTWVzc2FnZVBvcnRDaGFubmVsKG1fc3RvcmUubWVzc2FnZVBvcnRzW2ldKTsKKyAgICB9Cit9
CisKIFBhc3NSZWZQdHI8V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlPiBXZWJJbnRlbnREYXRhOjpk
YXRhKCkgY29uc3QKIHsKICAgICBWZWN0b3I8dWludDhfdD4gZGF0YUNvcHkgPSBtX3N0b3JlLmRh
dGE7CkBAIC02Niw2ICs3OSw3IEBAIFBhc3NSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4gV2Vi
SW50ZW50RGF0YTo6ZXh0cmFzKCkgY29uc3QKICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPjo6
Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9zdG9yZS5leHRyYXMuZW5kKCk7CiAgICAgZm9yIChIYXNo
TWFwPFN0cmluZywgU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3N0b3JlLmV4dHJhcy5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCiAgICAgICAgIHdrRXh0cmFzLnNldChpdC0+Zmlyc3Qs
IFdlYlN0cmluZzo6Y3JlYXRlKGl0LT5zZWNvbmQpKTsKKwogICAgIHJldHVybiBJbW11dGFibGVE
aWN0aW9uYXJ5OjphZG9wdCh3a0V4dHJhcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJJbnRlbnREYXRhLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViSW50ZW50RGF0YS5oCmluZGV4IGRlY2Y0YWUuLjlkNTlmOTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnRlbnREYXRhLmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkludGVudERhdGEuaApAQCAtMzAsMjEgKzMwLDI2IEBACiAKICNpbmNsdWRl
ICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJJbnRlbnREYXRhLmgiCi0jaW5jbHVkZSAiV2ViU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9LVVJMLmg+CiAjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIEltbXV0
YWJsZUFycmF5OworY2xhc3MgSW1tdXRhYmxlRGljdGlvbmFyeTsKK2NsYXNzIFdlYlByb2Nlc3NQ
cm94eTsKK2NsYXNzIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKKwogY2xhc3MgV2ViSW50ZW50
RGF0YSA6IHB1YmxpYyBBUElPYmplY3QgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBUeXBl
IEFQSVR5cGUgPSBUeXBlSW50ZW50RGF0YTsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYklu
dGVudERhdGE+IGNyZWF0ZShjb25zdCBJbnRlbnREYXRhJiBzdG9yZSkKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxXZWJJbnRlbnREYXRhPiBjcmVhdGUoY29uc3QgSW50ZW50RGF0YSYgc3RvcmUsIFdl
YlByb2Nlc3NQcm94eSogcHJvY2VzcykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgV2ViSW50ZW50RGF0YShzdG9yZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdl
YkludGVudERhdGEoc3RvcmUsIHByb2Nlc3MpKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5XZWJJ
bnRlbnREYXRhKCkgeyB9CisgICAgdmlydHVhbCB+V2ViSW50ZW50RGF0YSgpOwogCiAgICAgY29u
c3QgU3RyaW5nJiBhY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3N0b3JlLmFjdGlvbjsgfQogICAg
IGNvbnN0IFN0cmluZyYgcGF5bG9hZFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3N0b3JlLnR5cGU7
IH0KQEAgLTU3LDExICs2MiwxMiBAQCBwdWJsaWM6CiAgICAgY29uc3QgSW50ZW50RGF0YSYgc3Rv
cmUoKSBjb25zdCB7IHJldHVybiBtX3N0b3JlOyB9CiAKIHByaXZhdGU6Ci0gICAgV2ViSW50ZW50
RGF0YShjb25zdCBJbnRlbnREYXRhJik7CisgICAgV2ViSW50ZW50RGF0YShjb25zdCBJbnRlbnRE
YXRhJiwgV2ViUHJvY2Vzc1Byb3h5Kik7CiAKICAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0
IHsgcmV0dXJuIEFQSVR5cGU7IH0KIAogICAgIEludGVudERhdGEgbV9zdG9yZTsKKyAgICBXZWJQ
cm9jZXNzUHJveHkqIG1fcHJvY2VzczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBmZDBjMGVhLi42N2Uz
Y2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMjE5
MSw3ICsyMTkxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVJbnRlbnRGb3JGcmFt
ZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBJbnRlbnREYXRhJgogICAgIFdlYkZyYW1lUHJveHkq
IGZyYW1lID0gcHJvY2VzcygpLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNL
KGZyYW1lKTsKIAotICAgIFJlZlB0cjxXZWJJbnRlbnREYXRhPiB3ZWJJbnRlbnREYXRhID0gV2Vi
SW50ZW50RGF0YTo6Y3JlYXRlKGludGVudERhdGEpOworICAgIFJlZlB0cjxXZWJJbnRlbnREYXRh
PiB3ZWJJbnRlbnREYXRhID0gV2ViSW50ZW50RGF0YTo6Y3JlYXRlKGludGVudERhdGEsIHByb2Nl
c3MoKSk7CiAgICAgbV9sb2FkZXJDbGllbnQuZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKHRoaXMs
IGZyYW1lLCB3ZWJJbnRlbnREYXRhLmdldCgpLCB1c2VyRGF0YS5nZXQoKSk7CiB9CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggMWZk
ZDM5Yy4uNjVkMzAyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAKQEAgLTE5Nyw2ICsxOTcsMTYgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlbW92
ZVdlYlBhZ2UodWludDY0X3QgcGFnZUlEKQogICAgIG1fcGFnZU1hcC5yZW1vdmUocGFnZUlEKTsK
IH0KIAorI2lmIEVOQUJMRShXRUJfSU5URU5UUykKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZW1v
dmVNZXNzYWdlUG9ydENoYW5uZWwodWludDY0X3QgY2hhbm5lbElEKQoreworICAgIGlmICghaXNW
YWxpZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNz
OjpSZW1vdmVNZXNzYWdlUG9ydENoYW5uZWwoY2hhbm5lbElEKSwgMCk7Cit9CisjZW5kaWYKKwog
V2ViQmFja0ZvcndhcmRMaXN0SXRlbSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJCYWNrRm9yd2FyZEl0
ZW0odWludDY0X3QgaXRlbUlEKSBjb25zdAogewogICAgIHJldHVybiBtX2JhY2tGb3J3YXJkTGlz
dEl0ZW1NYXAuZ2V0KGl0ZW1JRCkuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmgKaW5kZXggMDYyMmE0Yi4uNzkyYjAxZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtODcsNiArODcsMTAgQEAgcHVibGljOgog
ICAgIHZvaWQgYWRkRXhpc3RpbmdXZWJQYWdlKFdlYlBhZ2VQcm94eSosIHVpbnQ2NF90IHBhZ2VJ
RCk7CiAgICAgdm9pZCByZW1vdmVXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCk7CiAKKyNpZiBFTkFC
TEUoV0VCX0lOVEVOVFMpCisgICAgdm9pZCByZW1vdmVNZXNzYWdlUG9ydENoYW5uZWwodWludDY0
X3QgY2hhbm5lbElEKTsKKyNlbmRpZgorCiAgICAgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogd2Vi
QmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IGl0ZW1JRCkgY29uc3Q7CiAKICAgICBSZXNwb25zaXZl
bmVzc1RpbWVyKiByZXNwb25zaXZlbmVzc1RpbWVyKCkgeyByZXR1cm4gJm1fcmVzcG9uc2l2ZW5l
c3NUaW1lcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUFQSUNhc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVBUElDYXN0LmgKaW5kZXggMzM1NWQwOC4u
MDE4ZWY3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZUFQSUNhc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQVBJQ2FzdC5oCkBAIC00Niw2ICs0Niw3
IEBAIGNsYXNzIEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0OwogY2xhc3MgSW5qZWN0ZWRC
dW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtOwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dF
eHRlbnNpb247CiBjbGFzcyBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ7CitjbGFzcyBJbmpl
Y3RlZEJ1bmRsZUludGVudDsKIGNsYXNzIEluamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdDsKIGNs
YXNzIEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbjsKIGNsYXNzIEluamVjdGVkQnVuZGxl
Tm9kZUhhbmRsZTsKQEAgLTY0LDYgKzY1LDcgQEAgV0tfQUREX0FQSV9NQVBQSU5HKFdLQnVuZGxl
RE9NV2luZG93RXh0ZW5zaW9uUmVmLCBJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2kKIFdL
X0FERF9BUElfTUFQUElORyhXS0J1bmRsZUZyYW1lUmVmLCBXZWJGcmFtZSkKIFdLX0FERF9BUElf
TUFQUElORyhXS0J1bmRsZUhpdFRlc3RSZXN1bHRSZWYsIEluamVjdGVkQnVuZGxlSGl0VGVzdFJl
c3VsdCkKIFdLX0FERF9BUElfTUFQUElORyhXS0J1bmRsZUluc3BlY3RvclJlZiwgV2ViSW5zcGVj
dG9yKQorV0tfQUREX0FQSV9NQVBQSU5HKFdLQnVuZGxlSW50ZW50UmVmLCBJbmplY3RlZEJ1bmRs
ZUludGVudCkKIFdLX0FERF9BUElfTUFQUElORyhXS0J1bmRsZUludGVudFJlcXVlc3RSZWYsIElu
amVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdCkKIFdLX0FERF9BUElfTUFQUElORyhXS0J1bmRsZU5h
dmlnYXRpb25BY3Rpb25SZWYsIEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbikKIFdLX0FE
RF9BUElfTUFQUElORyhXS0J1bmRsZU5vZGVIYW5kbGVSZWYsIEluamVjdGVkQnVuZGxlTm9kZUhh
bmRsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVJbnRlbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uZDgzODYzZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnQuY3BwCkBA
IC0wLDAgKzEsMTM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0
aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiV0tCdW5kbGVJbnRlbnQuaCIKKworI2lmIEVOQUJMRShXRUJfSU5URU5UUykK
KyNpbmNsdWRlICJJbW11dGFibGVBcnJheS5oIgorI2luY2x1ZGUgIkltbXV0YWJsZURpY3Rpb25h
cnkuaCIKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZUludGVudC5oIgorI2luY2x1ZGUgIldLQVBJ
Q2FzdC5oIgorI2luY2x1ZGUgIldLQnVuZGxlQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLRGljdGlv
bmFyeS5oIgorI2luY2x1ZGUgIldLU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmgiCisjZW5kaWYKKworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKyNlbmRpZgorCitXS1R5
cGVJRCBXS0J1bmRsZUludGVudEdldFR5cGVJRCgpCit7CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRT
KQorICAgIHJldHVybiB0b0FQSShJbmplY3RlZEJ1bmRsZUludGVudDo6QVBJVHlwZSk7CisjZWxz
ZQorICAgIHJldHVybiAwOworI2VuZGlmCit9CisKK1dLQnVuZGxlSW50ZW50UmVmIFdLQnVuZGxl
SW50ZW50Q3JlYXRlKFdLRGljdGlvbmFyeVJlZiBpbml0RGljdGlvbmFyeVJlZikKK3sKKyNpZiBF
TkFCTEUoV0VCX0lOVEVOVFMpCisgICAgV0tTdHJpbmdSZWYgYWN0aW9uID0gc3RhdGljX2Nhc3Q8
V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkoaW5pdERpY3Rpb25hcnlSZWYs
IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJhY3Rpb24iKSkpOworICAgIEFTU0VSVChh
Y3Rpb24pOworICAgIFdLU3RyaW5nUmVmIHR5cGUgPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4o
V0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShpbml0RGljdGlvbmFyeVJlZiwgV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoInR5cGUiKSkpOworICAgIEFTU0VSVCh0eXBlKTsKKyAgICBXS1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiBkYXRhID0gc3RhdGljX2Nhc3Q8V0tTZXJpYWxpemVkU2Ny
aXB0VmFsdWVSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkoaW5pdERpY3Rpb25hcnlSZWYs
IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJkYXRhIikpKTsKKyAgICBNZXNzYWdlUG9y
dEFycmF5IGR1bW15UG9ydHM7CisgICAgRXhjZXB0aW9uQ29kZSBlYzsKKworICAgIFJlZlB0cjxJ
bnRlbnQ+IGNvcmVJbnRlbnQgPSBJbnRlbnQ6OmNyZWF0ZSh0b0ltcGwoYWN0aW9uKS0+c3RyaW5n
KCksIHRvSW1wbCh0eXBlKS0+c3RyaW5nKCksIGRhdGEgPyBzdGF0aWNfY2FzdDxTZXJpYWxpemVk
U2NyaXB0VmFsdWUqPih0b0ltcGwoZGF0YSktPmludGVybmFsUmVwcmVzZW50YXRpb24oKSkgOiAw
LCBkdW1teVBvcnRzLCBlYyk7CisgICAgcmV0dXJuIHRvQVBJKEluamVjdGVkQnVuZGxlSW50ZW50
OjpjcmVhdGUoY29yZUludGVudC5nZXQoKSkubGVha1JlZigpKTsKKyNlbHNlCisgICAgcmV0dXJu
IDA7CisjZW5kaWYKK30KKworV0tTdHJpbmdSZWYgV0tCdW5kbGVJbnRlbnRDb3B5QWN0aW9uKFdL
QnVuZGxlSW50ZW50UmVmIGludGVudFJlZikKK3sKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisg
ICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChpbnRlbnRSZWYpLT5hY3Rpb24oKSk7CisjZWxz
ZQorICAgIHJldHVybiAwOworI2VuZGlmCit9CisKK1dLU3RyaW5nUmVmIFdLQnVuZGxlSW50ZW50
Q29weVR5cGUoV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmKQoreworI2lmIEVOQUJMRShXRUJf
SU5URU5UUykKKyAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKGludGVudFJlZiktPnBheWxv
YWRUeXBlKCkpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCitXS1VSTFJlZiBX
S0J1bmRsZUludGVudENvcHlTZXJ2aWNlKFdLQnVuZGxlSW50ZW50UmVmIGludGVudFJlZikKK3sK
KyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgcmV0dXJuIHRvQ29waWVkVVJMQVBJKHRvSW1w
bChpbnRlbnRSZWYpLT5zZXJ2aWNlKCkpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgor
fQorCitXS0FycmF5UmVmIFdLQnVuZGxlSW50ZW50Q29weVN1Z2dlc3Rpb25zKFdLQnVuZGxlSW50
ZW50UmVmIGludGVudFJlZikKK3sKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgcmV0dXJu
IHRvQVBJKHRvSW1wbChpbnRlbnRSZWYpLT5zdWdnZXN0aW9ucygpLmxlYWtSZWYoKSk7CisjZWxz
ZQorICAgIHJldHVybiAwOworI2VuZGlmCit9CisKK1dLU3RyaW5nUmVmIFdLQnVuZGxlSW50ZW50
Q29weUV4dHJhKFdLQnVuZGxlSW50ZW50UmVmIGludGVudFJlZiwgV0tTdHJpbmdSZWYga2V5KQor
eworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBs
KGludGVudFJlZiktPmV4dHJhKHRvV1RGU3RyaW5nKGtleSkpKTsKKyNlbHNlCisgICAgcmV0dXJu
IDA7CisjZW5kaWYKK30KKworV0tEaWN0aW9uYXJ5UmVmIFdLQnVuZGxlSW50ZW50Q29weUV4dHJh
cyhXS0J1bmRsZUludGVudFJlZiBpbnRlbnRSZWYpCit7CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRT
KQorICAgIHJldHVybiB0b0FQSSh0b0ltcGwoaW50ZW50UmVmKS0+ZXh0cmFzKCkubGVha1JlZigp
KTsKKyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KKworc2l6ZV90IFdLQnVuZGxlSW50
ZW50TWVzc2FnZVBvcnRDb3VudChXS0J1bmRsZUludGVudFJlZiBpbnRlbnRSZWYpCit7CisjaWYg
RU5BQkxFKFdFQl9JTlRFTlRTKQorICAgIE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5KiBtZXNzYWdl
UG9ydHMgPSB0b0ltcGwoaW50ZW50UmVmKS0+Y29yZUludGVudCgpLT5tZXNzYWdlUG9ydHMoKTsK
KworICAgIHJldHVybiBtZXNzYWdlUG9ydHMgPyBtZXNzYWdlUG9ydHMtPnNpemUoKSA6IDA7Cisj
ZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQ3MTlkNAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVJbnRlbnQuaApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFdLQnVuZGxlSW50ZW50X2gKKyNkZWZpbmUgV0tCdW5kbGVJbnRlbnRfaAorCisjaW5j
bHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMi
IHsKKyNlbmRpZgorCitXS19FWFBPUlQgV0tUeXBlSUQgV0tCdW5kbGVJbnRlbnRHZXRUeXBlSUQo
KTsKKworV0tfRVhQT1JUIFdLQnVuZGxlSW50ZW50UmVmIFdLQnVuZGxlSW50ZW50Q3JlYXRlKFdL
RGljdGlvbmFyeVJlZiBpbml0RGljdGlvbmFyeSk7CisKK1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBX
S0J1bmRsZUludGVudENvcHlBY3Rpb24oV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmKTsKK1dL
X0VYUE9SVCBXS1N0cmluZ1JlZiBXS0J1bmRsZUludGVudENvcHlUeXBlKFdLQnVuZGxlSW50ZW50
UmVmIGludGVudFJlZik7CitXS19FWFBPUlQgV0tVUkxSZWYgV0tCdW5kbGVJbnRlbnRDb3B5U2Vy
dmljZShXS0J1bmRsZUludGVudFJlZiBpbnRlbnRSZWYpOworV0tfRVhQT1JUIFdLQXJyYXlSZWYg
V0tCdW5kbGVJbnRlbnRDb3B5U3VnZ2VzdGlvbnMoV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVm
KTsKK1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0J1bmRsZUludGVudENvcHlFeHRyYShXS0J1bmRs
ZUludGVudFJlZiBpbnRlbnRSZWYsIFdLU3RyaW5nUmVmIGtleSk7CitXS19FWFBPUlQgV0tEaWN0
aW9uYXJ5UmVmIFdLQnVuZGxlSW50ZW50Q29weUV4dHJhcyhXS0J1bmRsZUludGVudFJlZiBpbnRl
bnRSZWYpOworV0tfRVhQT1JUIHNpemVfdCBXS0J1bmRsZUludGVudE1lc3NhZ2VQb3J0Q291bnQo
V0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9Cisj
ZW5kaWYKKworI2VuZGlmIC8vIFdLQnVuZGxlSW50ZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnRSZXF1
ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVJbnRlbnRSZXF1ZXN0LmNwcAppbmRleCA4MWM5NWM2Li5hNDc3MmVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlSW50ZW50UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudFJlcXVlc3QuY3BwCkBAIC0yNywxMCArMjcs
MTAgQEAKICNpbmNsdWRlICJXS0J1bmRsZUludGVudFJlcXVlc3QuaCIKIAogI2lmIEVOQUJMRShX
RUJfSU5URU5UUykKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZUludGVudC5oIgogI2luY2x1ZGUg
IkluamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgog
I2luY2x1ZGUgIldLQnVuZGxlQVBJQ2FzdC5oIgotI2luY2x1ZGUgIldlYkludGVudERhdGEuaCIK
IAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKICNlbmRpZgpAQCAtNDQsMTEgKzQ0LDExIEBAIFdL
VHlwZUlEIFdLQnVuZGxlSW50ZW50UmVxdWVzdEdldFR5cGVJRCgpCiAjZW5kaWYKIH0KIAotV0tJ
bnRlbnREYXRhUmVmIFdLQnVuZGxlSW50ZW50UmVxdWVzdENvcHlJbnRlbnREYXRhKFdLQnVuZGxl
SW50ZW50UmVxdWVzdFJlZiByZXF1ZXN0UmVmKQorV0tCdW5kbGVJbnRlbnRSZWYgV0tCdW5kbGVJ
bnRlbnRSZXF1ZXN0Q29weUludGVudChXS0J1bmRsZUludGVudFJlcXVlc3RSZWYgcmVxdWVzdFJl
ZikKIHsKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0gICAgUmVmUHRyPFdlYkludGVudERhdGE+
IHdlYkludGVudERhdGEgPSB0b0ltcGwocmVxdWVzdFJlZiktPmludGVudCgpOwotICAgIHJldHVy
biB0b0FQSSh3ZWJJbnRlbnREYXRhLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAgIFJlZlB0cjxJ
bmplY3RlZEJ1bmRsZUludGVudD4gd2ViSW50ZW50ID0gdG9JbXBsKHJlcXVlc3RSZWYpLT5pbnRl
bnQoKTsKKyAgICByZXR1cm4gdG9BUEkod2ViSW50ZW50LnJlbGVhc2UoKS5sZWFrUmVmKCkpOwog
I2Vsc2UKICAgICByZXR1cm4gMDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudFJlcXVlc3QuaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJ
bnRlbnRSZXF1ZXN0LmgKaW5kZXggYjE4MTM2ZC4uMTA1YWZhNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudFJl
cXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlSW50ZW50UmVxdWVzdC5oCkBAIC0zNCw3ICszNCw3IEBAIGV4dGVybiAiQyIg
ewogCiBXS19FWFBPUlQgV0tUeXBlSUQgV0tCdW5kbGVJbnRlbnRSZXF1ZXN0R2V0VHlwZUlEKCk7
CiAKLVdLX0VYUE9SVCBXS0ludGVudERhdGFSZWYgV0tCdW5kbGVJbnRlbnRSZXF1ZXN0Q29weUlu
dGVudERhdGEoV0tCdW5kbGVJbnRlbnRSZXF1ZXN0UmVmIHJlcXVlc3QpOworV0tfRVhQT1JUIFdL
QnVuZGxlSW50ZW50UmVmIFdLQnVuZGxlSW50ZW50UmVxdWVzdENvcHlJbnRlbnQoV0tCdW5kbGVJ
bnRlbnRSZXF1ZXN0UmVmIHJlcXVlc3QpOwogCiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZUludGVu
dFJlcXVlc3RQb3N0UmVzdWx0KFdLQnVuZGxlSW50ZW50UmVxdWVzdFJlZiByZXF1ZXN0LCBXS1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiBzZXJpYWxpemVkRGF0YSk7CiBXS19FWFBPUlQgdm9pZCBX
S0J1bmRsZUludGVudFJlcXVlc3RQb3N0RmFpbHVyZShXS0J1bmRsZUludGVudFJlcXVlc3RSZWYg
cmVxdWVzdCwgV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYgc2VyaWFsaXplZERhdGEpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZVBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCmluZGV4IDJhZTIyMzcuLjgwMjQxY2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL1BhZ2UuaD4KIAogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSNpbmNsdWRlICJXZWJJbnRl
bnREYXRhLmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVJbnRlbnQuaCIKICNlbmRpZgogCiB1
c2luZyBuYW1lc3BhY2UgV2ViS2l0OwpAQCAtMzEwLDEwICszMTAsMTAgQEAgZG91YmxlIFdLQnVu
ZGxlUGFnZUdldEJhY2tpbmdTY2FsZUZhY3RvcihXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZikKICAg
ICByZXR1cm4gdG9JbXBsKHBhZ2VSZWYpLT5kZXZpY2VTY2FsZUZhY3RvcigpOwogfQogCi12b2lk
IFdLQnVuZGxlUGFnZURlbGl2ZXJJbnRlbnRUb0ZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVm
LCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVmLCBXS0ludGVudERhdGFSZWYgaW50ZW50UmVmKQor
dm9pZCBXS0J1bmRsZVBhZ2VEZWxpdmVySW50ZW50VG9GcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFn
ZVJlZiwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZVJlZiwgV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50
UmVmKQogewogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSAgICB0b0ltcGwocGFnZVJlZiktPmRl
bGl2ZXJJbnRlbnRUb0ZyYW1lKHRvSW1wbChmcmFtZVJlZiktPmZyYW1lSUQoKSwgdG9JbXBsKGlu
dGVudFJlZiktPnN0b3JlKCkpOworICAgIHRvSW1wbChwYWdlUmVmKS0+ZGVsaXZlckNvcmVJbnRl
bnRUb0ZyYW1lKHRvSW1wbChmcmFtZVJlZiktPmZyYW1lSUQoKSwgdG9JbXBsKGludGVudFJlZikt
PmNvcmVJbnRlbnQoKSk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgKaW5k
ZXggYWE4NjA5Mi4uNmYxOGIzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCkBAIC00MDQs
NyArNDA0LDcgQEAgV0tfRVhQT1JUIFdLSW1hZ2VSZWYgV0tCdW5kbGVQYWdlQ3JlYXRlU2NhbGVk
U25hcHNob3RJbkRvY3VtZW50Q29vcmRpbmF0ZXMoV0tCdW4KIAogV0tfRVhQT1JUIGRvdWJsZSBX
S0J1bmRsZVBhZ2VHZXRCYWNraW5nU2NhbGVGYWN0b3IoV0tCdW5kbGVQYWdlUmVmIHBhZ2UpOwog
Ci1XS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VEZWxpdmVySW50ZW50VG9GcmFtZShXS0J1bmRs
ZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tJbnRlbnREYXRhUmVmIGlu
dGVudCk7CitXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VEZWxpdmVySW50ZW50VG9GcmFtZShX
S0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tCdW5kbGVJbnRl
bnRSZWYgaW50ZW50KTsKIAogI2lmIGRlZmluZWQoRU5BQkxFX0lOU1BFQ1RPUikgJiYgRU5BQkxF
X0lOU1BFQ1RPUgogV0tfRVhQT1JUIFdLQnVuZGxlSW5zcGVjdG9yUmVmIFdLQnVuZGxlUGFnZUdl
dEluc3BlY3RvcihXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJ
bnRlbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3YWI1ODYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlSW50ZW50LmNwcApAQCAtMCwwICsxLDk4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVJbnRl
bnQuaCIKKworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKworI2luY2x1ZGUgIkltbXV0YWJsZUFy
cmF5LmgiCisjaW5jbHVkZSAiSW1tdXRhYmxlRGljdGlvbmFyeS5oIgorI2luY2x1ZGUgIldlYlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIldlYlN0cmluZy5oIgorI2luY2x1ZGUg
IldlYlVSTC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK1Bhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVJbnRlbnQ+IEluamVjdGVkQnVuZGxlSW50
ZW50OjpjcmVhdGUoV2ViQ29yZTo6SW50ZW50KiBpbnRlbnQpCit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBJbmplY3RlZEJ1bmRsZUludGVudChpbnRlbnQpKTsKK30KKworSW5qZWN0ZWRCdW5k
bGVJbnRlbnQ6OkluamVjdGVkQnVuZGxlSW50ZW50KFdlYkNvcmU6OkludGVudCogaW50ZW50KQor
ICAgIDogbV9pbnRlbnQoaW50ZW50KQoreworfQorCitTdHJpbmcgSW5qZWN0ZWRCdW5kbGVJbnRl
bnQ6OmFjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW50ZW50LT5hY3Rpb24oKTsKK30K
KworU3RyaW5nIEluamVjdGVkQnVuZGxlSW50ZW50OjpwYXlsb2FkVHlwZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1faW50ZW50LT50eXBlKCk7Cit9CisKK1dlYkNvcmU6OktVUkwgSW5qZWN0ZWRC
dW5kbGVJbnRlbnQ6OnNlcnZpY2UoKSBjb25zdAoreworICAgIHJldHVybiBtX2ludGVudC0+c2Vy
dmljZSgpOworfQorCitQYXNzUmVmUHRyPFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gSW5qZWN0
ZWRCdW5kbGVJbnRlbnQ6OmRhdGEoKSBjb25zdAoreworICAgIHJldHVybiBXZWJTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmNyZWF0ZShtX2ludGVudC0+ZGF0YSgpKTsKK30KKworU3RyaW5nIEluamVj
dGVkQnVuZGxlSW50ZW50OjpleHRyYShjb25zdCBTdHJpbmcmIGtleSkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9pbnRlbnQtPmV4dHJhcygpLmdldChrZXkpOworfQorCitQYXNzUmVmUHRyPEltbXV0
YWJsZURpY3Rpb25hcnk+IEluamVjdGVkQnVuZGxlSW50ZW50OjpleHRyYXMoKSBjb25zdAorewor
ICAgIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBleHRyYXMgPSBtX2ludGVudC0+ZXh0
cmFzKCk7CisgICAgSW1tdXRhYmxlRGljdGlvbmFyeTo6TWFwVHlwZSB3a0V4dHJhczsKKyAgICBI
YXNoTWFwPFN0cmluZywgU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gZXh0cmFzLmVuZCgp
OworICAgIGZvciAoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0g
ZXh0cmFzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgd2tFeHRyYXMuc2V0KGl0
LT5maXJzdCwgV2ViU3RyaW5nOjpjcmVhdGUoaXQtPnNlY29uZCkpOworICAgIHJldHVybiBJbW11
dGFibGVEaWN0aW9uYXJ5OjphZG9wdCh3a0V4dHJhcyk7Cit9CisKK1Bhc3NSZWZQdHI8SW1tdXRh
YmxlQXJyYXk+IEluamVjdGVkQnVuZGxlSW50ZW50OjpzdWdnZXN0aW9ucygpIGNvbnN0Cit7Cisg
ICAgY29uc3QgVmVjdG9yPEtVUkw+JiBzdWdnZXN0aW9ucyA9IG1faW50ZW50LT5zdWdnZXN0aW9u
cygpOworICAgIGNvbnN0IHNpemVfdCBudW1TdWdnZXN0aW9ucyA9IHN1Z2dlc3Rpb25zLnNpemUo
KTsKKyAgICBWZWN0b3I8UmVmUHRyPEFQSU9iamVjdD4gPiB3a1N1Z2dlc3Rpb25zKG51bVN1Z2dl
c3Rpb25zKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtU3VnZ2VzdGlvbnM7ICsr
aSkKKyAgICAgICAgd2tTdWdnZXN0aW9uc1tpXSA9IFdlYlVSTDo6Y3JlYXRlKHN1Z2dlc3Rpb25z
W2ldKTsKKyAgICByZXR1cm4gSW1tdXRhYmxlQXJyYXk6OmFkb3B0KHdrU3VnZ2VzdGlvbnMpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfSU5URU5U
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVJbnRlbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi41ZDNmMDZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudC5oCkBAIC0wLDAgKzEs
NzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW5qZWN0ZWRCdW5kbGVJbnRlbnRf
aAorI2RlZmluZSBJbmplY3RlZEJ1bmRsZUludGVudF9oCisKKyNpZiBFTkFCTEUoV0VCX0lOVEVO
VFMpCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ludGVudC5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Cisj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBJbW11dGFibGVBcnJheTsKK2NsYXNzIEltbXV0YWJs
ZURpY3Rpb25hcnk7CitjbGFzcyBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU7CisKK2NsYXNzIElu
amVjdGVkQnVuZGxlSW50ZW50IDogcHVibGljIEFQSU9iamVjdCB7CitwdWJsaWM6CisgICAgc3Rh
dGljIGNvbnN0IFR5cGUgQVBJVHlwZSA9IFR5cGVCdW5kbGVJbnRlbnQ7CisKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZUludGVudD4gY3JlYXRlKFdlYkNvcmU6OkludGVudCop
OworCisgICAgU3RyaW5nIGFjdGlvbigpIGNvbnN0OworICAgIFN0cmluZyBwYXlsb2FkVHlwZSgp
IGNvbnN0OworICAgIFdlYkNvcmU6OktVUkwgc2VydmljZSgpIGNvbnN0OworICAgIFBhc3NSZWZQ
dHI8V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhKCkgY29uc3Q7CisgICAgU3RyaW5nIGV4
dHJhKGNvbnN0IFN0cmluZyYga2V5KSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEltbXV0YWJsZURp
Y3Rpb25hcnk+IGV4dHJhcygpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8SW1tdXRhYmxlQXJyYXk+
IHN1Z2dlc3Rpb25zKCkgY29uc3Q7CisKKyAgICBXZWJDb3JlOjpJbnRlbnQqIGNvcmVJbnRlbnQo
KSBjb25zdCB7IHJldHVybiBtX2ludGVudC5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIGV4cGxp
Y2l0IEluamVjdGVkQnVuZGxlSW50ZW50KFdlYkNvcmU6OkludGVudCopOworCisgICAgdmlydHVh
bCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBBUElUeXBlOyB9CisKKyAgICBSZWZQdHI8V2Vi
Q29yZTo6SW50ZW50PiBtX2ludGVudDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gRU5BQkxFKFdFQl9JTlRFTlRTKQorCisjZW5kaWYgLy8gSW5qZWN0ZWRCdW5kbGVJ
bnRlbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuY3BwCmlu
ZGV4IDVjY2IxOWMuLmVhYzBiODNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUlu
dGVudFJlcXVlc3QuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5k
bGVJbnRlbnRSZXF1ZXN0LmgiCiAKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisjaW5jbHVkZSAi
SW5qZWN0ZWRCdW5kbGVJbnRlbnQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ludGVudFJlcXVlc3Qu
aD4KICNpbmNsdWRlIDxXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaD4KIApAQCAtNTQsOSArNTUs
OSBAQCB2b2lkIEluamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdDo6cG9zdEZhaWx1cmUoV2ViU2Vy
aWFsaXplZFNjcmlwdFZhbHVlKiBkYXRhKQogICAgIG1faW50ZW50UmVxdWVzdC0+cG9zdEZhaWx1
cmUoc3RhdGljX2Nhc3Q8U2VyaWFsaXplZFNjcmlwdFZhbHVlKj4oZGF0YS0+aW50ZXJuYWxSZXBy
ZXNlbnRhdGlvbigpKSk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViSW50ZW50RGF0YT4gSW5qZWN0ZWRC
dW5kbGVJbnRlbnRSZXF1ZXN0OjppbnRlbnQoKSBjb25zdAorUGFzc1JlZlB0cjxJbmplY3RlZEJ1
bmRsZUludGVudD4gSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0OjppbnRlbnQoKSBjb25zdAog
ewotICAgIHJldHVybiBXZWJJbnRlbnREYXRhOjpjcmVhdGUoSW50ZW50RGF0YShtX2ludGVudFJl
cXVlc3QtPmludGVudCgpKSk7CisgICAgcmV0dXJuIEluamVjdGVkQnVuZGxlSW50ZW50OjpjcmVh
dGUobV9pbnRlbnRSZXF1ZXN0LT5pbnRlbnQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0LmgKaW5kZXggYjU4NzBk
OS4uMzNhMzE5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5o
CkBAIC0yOSw3ICsyOSw2IEBACiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQogCiAjaW5jbHVkZSAi
QVBJT2JqZWN0LmgiCi0jaW5jbHVkZSAiV2ViSW50ZW50RGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CkBAIC00MCw2ICszOSw3IEBAIGNsYXNzIEludGVudFJlcXVlc3Q7CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCitjbGFzcyBJbmplY3RlZEJ1bmRsZUludGVudDsKIGNsYXNzIFdlYlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTsKIAogY2xhc3MgSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0IDog
cHVibGljIEFQSU9iamVjdCB7CkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHBv
c3RSZXN1bHQoV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlKik7CiAgICAgdm9pZCBwb3N0RmFpbHVy
ZShXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUqKTsKIAotICAgIFBhc3NSZWZQdHI8V2ViSW50ZW50
RGF0YT4gaW50ZW50KCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZUludGVu
dD4gaW50ZW50KCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgSW5qZWN0ZWRCdW5k
bGVJbnRlbnRSZXF1ZXN0KFdlYkNvcmU6OkludGVudFJlcXVlc3QqKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IGYzNmZjMDIuLmQ2ZGRj
YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFt
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNw
cApAQCAtNjMsNiArNjMsOCBAQAogI2luY2x1ZGUgIkludGVudERhdGEuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0RPTVdpbmRvd0ludGVudHMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RlbGl2ZXJlZElu
dGVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSW50ZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Q
bGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oPgogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMp
IHx8IFBMQVRGT1JNKFdJTikKQEAgLTI0NiwxMyArMjQ4LDM5IEBAIHZvaWQgV2ViRnJhbWU6OmNv
bnZlcnRIYW5kbGVUb0Rvd25sb2FkKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJlc291
cmNlUmVxCiB2b2lkIFdlYkZyYW1lOjpkZWxpdmVySW50ZW50KGNvbnN0IEludGVudERhdGEmIGlu
dGVudERhdGEpCiB7CiAgICAgT3duUHRyPERlbGl2ZXJlZEludGVudENsaWVudD4gZHVtbXlDbGll
bnQ7Ci0gICAgT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IGR1bW15UG9ydHM7CiAgICAgVmVjdG9y
PHVpbnQ4X3Q+IGRhdGFDb3B5ID0gaW50ZW50RGF0YS5kYXRhOworCisgICAgT3duUHRyPFdlYkNv
cmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVsczsKKyAgICBpZiAoIWludGVudERh
dGEubWVzc2FnZVBvcnRzLmlzRW1wdHkoKSkgeworICAgICAgICBjaGFubmVscyA9IGFkb3B0UHRy
KG5ldyBXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxBcnJheShpbnRlbnREYXRhLm1lc3NhZ2VQ
b3J0cy5zaXplKCkpKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbnRlbnREYXRh
Lm1lc3NhZ2VQb3J0cy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgICgqY2hhbm5lbHMpW2ldID0g
TWVzc2FnZVBvcnRDaGFubmVsOjpjcmVhdGUoV2ViUHJvY2Vzczo6c2hhcmVkKCkubWVzc2FnZVBv
cnRDaGFubmVsKGludGVudERhdGEubWVzc2FnZVBvcnRzLmF0KGkpKSk7CisgICAgfQorICAgIE93
blB0cjxXZWJDb3JlOjpNZXNzYWdlUG9ydEFycmF5PiBtZXNzYWdlUG9ydHMgPSBXZWJDb3JlOjpN
ZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cygqbV9jb3JlRnJhbWUtPmRvbVdpbmRvdygpLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCksIGNoYW5uZWxzLnJlbGVhc2UoKSk7CisKICAgICBSZWZQdHI8
RGVsaXZlcmVkSW50ZW50PiBkZWxpdmVyZWRJbnRlbnQgPSBEZWxpdmVyZWRJbnRlbnQ6OmNyZWF0
ZShtX2NvcmVGcmFtZSwgZHVtbXlDbGllbnQucmVsZWFzZSgpLCBpbnRlbnREYXRhLmFjdGlvbiwg
aW50ZW50RGF0YS50eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRv
cHQoZGF0YUNvcHkpLCBkdW1teVBvcnRzLnJlbGVhc2UoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmFkb3B0KGRhdGFDb3B5KSwgbWVzc2FnZVBvcnRzLnJlbGVhc2UoKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnRlbnREYXRhLmV4dHJhcyk7CiAgICAgV2ViQ29yZTo6RE9NV2luZG93
SW50ZW50czo6ZnJvbShtX2NvcmVGcmFtZS0+ZG9tV2luZG93KCkpLT5kZWxpdmVyKGRlbGl2ZXJl
ZEludGVudC5yZWxlYXNlKCkpOwogfQorCit2b2lkIFdlYkZyYW1lOjpkZWxpdmVySW50ZW50KElu
dGVudCogaW50ZW50KQoreworICAgIE93blB0cjxEZWxpdmVyZWRJbnRlbnRDbGllbnQ+IGR1bW15
Q2xpZW50OworCisgICAgT3duUHRyPFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBj
aGFubmVsczsKKyAgICBXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxBcnJheSogb3JpZ0NoYW5u
ZWxzID0gaW50ZW50LT5tZXNzYWdlUG9ydHMoKTsKKyAgICBpZiAob3JpZ0NoYW5uZWxzICYmIG9y
aWdDaGFubmVscy0+c2l6ZSgpKSB7CisgICAgICAgIGNoYW5uZWxzID0gYWRvcHRQdHIobmV3IFdl
YkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5KG9yaWdDaGFubmVscy0+c2l6ZSgpKSk7Cisg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb3JpZ0NoYW5uZWxzLT5zaXplKCk7ICsraSkK
KyAgICAgICAgICAgICgqY2hhbm5lbHMpW2ldID0gb3JpZ0NoYW5uZWxzLT5hdChpKS5yZWxlYXNl
KCk7CisgICAgfQorICAgIE93blB0cjxXZWJDb3JlOjpNZXNzYWdlUG9ydEFycmF5PiBtZXNzYWdl
UG9ydHMgPSBXZWJDb3JlOjpNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cygqbV9jb3JlRnJhbWUt
PmRvbVdpbmRvdygpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGNoYW5uZWxzLnJlbGVhc2Uo
KSk7CisKKyAgICBSZWZQdHI8RGVsaXZlcmVkSW50ZW50PiBkZWxpdmVyZWRJbnRlbnQgPSBEZWxp
dmVyZWRJbnRlbnQ6OmNyZWF0ZShtX2NvcmVGcmFtZSwgZHVtbXlDbGllbnQucmVsZWFzZSgpLCBp
bnRlbnQtPmFjdGlvbigpLCBpbnRlbnQtPnR5cGUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlbnQtPmRh
dGEoKSwgbWVzc2FnZVBvcnRzLnJlbGVhc2UoKSwgaW50ZW50LT5leHRyYXMoKSk7CisgICAgV2Vi
Q29yZTo6RE9NV2luZG93SW50ZW50czo6ZnJvbShtX2NvcmVGcmFtZS0+ZG9tV2luZG93KCkpLT5k
ZWxpdmVyKGRlbGl2ZXJlZEludGVudC5yZWxlYXNlKCkpOworfQogI2VuZGlmCiAKIFN0cmluZyBX
ZWJGcmFtZTo6c291cmNlKCkgY29uc3QgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5oCmluZGV4IGJkNmMwMzguLmVlYTA5YjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCkBAIC00Miw2ICs0Miw5IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgRnJhbWU7CiAgICAgY2xhc3MgSFRNTEZyYW1lT3du
ZXJFbGVtZW50OworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICBjbGFzcyBJbnRlbnQ7Cisj
ZW5kaWYKICAgICBjbGFzcyBLVVJMOwogfQogCkBAIC04MSw2ICs4NCw3IEBAIHB1YmxpYzoKIAog
I2lmIEVOQUJMRShXRUJfSU5URU5UUykKICAgICB2b2lkIGRlbGl2ZXJJbnRlbnQoY29uc3QgSW50
ZW50RGF0YSYpOworICAgIHZvaWQgZGVsaXZlckludGVudChXZWJDb3JlOjpJbnRlbnQqKTsKICNl
bmRpZgogCiAgICAgU3RyaW5nIHNvdXJjZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDU2NTAwN2YuLjM2ZmNkMDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTEzNiw2
ICsxMzYsNyBAQAogCiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQogI2luY2x1ZGUgIkludGVudERh
dGEuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ludGVudC5oPgogI2VuZGlmCiAKICNpZiBFTkFCTEUo
VklCUkFUSU9OKQpAQCAtMTk2Niw2ICsxOTY3LDE1IEBAIHZvaWQgV2ViUGFnZTo6ZGVsaXZlcklu
dGVudFRvRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgSW50ZW50RGF0YSYgaW50ZW50RGF0
CiAKICAgICBmcmFtZS0+ZGVsaXZlckludGVudChpbnRlbnREYXRhKTsKIH0KKwordm9pZCBXZWJQ
YWdlOjpkZWxpdmVyQ29yZUludGVudFRvRnJhbWUodWludDY0X3QgZnJhbWVJRCwgSW50ZW50KiBj
b3JlSW50ZW50KQoreworICAgIFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNoYXJlZCgp
LndlYkZyYW1lKGZyYW1lSUQpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGZyYW1lLT5kZWxpdmVySW50ZW50KGNvcmVJbnRlbnQpOworfQogI2VuZGlmCiAKIHZvaWQg
V2ViUGFnZTo6cHJlZmVyZW5jZXNEaWRDaGFuZ2UoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYg
c3RvcmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRl
eCAyNTZiNzlmLi5lY2Y3YWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKQEAgLTEwNiw2ICsxMDYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
Y2xhc3MgRnJhbWU7CiAgICAgY2xhc3MgRnJhbWVWaWV3OwogICAgIGNsYXNzIEhUTUxQbHVnSW5F
bGVtZW50OworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICBjbGFzcyBJbnRlbnQ7CisjZW5k
aWYKICAgICBjbGFzcyBLZXlib2FyZEV2ZW50OwogICAgIGNsYXNzIFBhZ2U7CiAgICAgY2xhc3Mg
UHJpbnRDb250ZXh0OwpAQCAtNDc4LDcgKzQ4MSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYg
RU5BQkxFKFdFQl9JTlRFTlRTKQotICAgIHZvaWQgZGVsaXZlckludGVudFRvRnJhbWUodWludDY0
X3QgZnJhbWVJRCwgY29uc3QgSW50ZW50RGF0YSYpOworICAgIHZvaWQgZGVsaXZlckNvcmVJbnRl
bnRUb0ZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OkludGVudCopOwogI2VuZGlmCiAK
ICAgICB2b2lkIHJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dChXZWJDb3JlOjpGcmFtZSosIGNvbnN0
IFN0cmluZyYpOwpAQCAtNjQwLDYgKzY0MywxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgY29udGV4
dE1lbnVIaWRkZW4oKSB7IG1faXNTaG93aW5nQ29udGV4dE1lbnUgPSBmYWxzZTsgfQogI2VuZGlm
CiAKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgdm9pZCBkZWxpdmVySW50ZW50VG9GcmFt
ZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBJbnRlbnREYXRhJik7CisjZW5kaWYKKwogICAgIHN0
YXRpYyB2b2lkIHNjcm9sbChXZWJDb3JlOjpQYWdlKiwgV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9u
LCBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eSk7CiAgICAgc3RhdGljIHZvaWQgbG9naWNhbFNj
cm9sbChXZWJDb3JlOjpQYWdlKiwgV2ViQ29yZTo6U2Nyb2xsTG9naWNhbERpcmVjdGlvbiwgV2Vi
Q29yZTo6U2Nyb2xsR3JhbnVsYXJpdHkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcAppbmRleCA2ZWI4YWI3ZS4uMjdlOGIwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC04MCw2ICs4MCwxMCBAQAogI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JhbmRvbU51bWJlci5oPgogCisjaWYgRU5BQkxF
KFdFQl9JTlRFTlRTKQorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5u
ZWwuaD4KKyNlbmRpZgorCiAjaWYgRU5BQkxFKE5FVFdPUktfSU5GTykKICNpbmNsdWRlICJXZWJO
ZXR3b3JrSW5mb01hbmFnZXJNZXNzYWdlcy5oIgogI2VuZGlmCkBAIC03OTEsNiArNzk1LDI2IEBA
IFdlYlBhZ2VHcm91cFByb3h5KiBXZWJQcm9jZXNzOjp3ZWJQYWdlR3JvdXAoY29uc3QgV2ViUGFn
ZUdyb3VwRGF0YSYgcGFnZUdyb3VwRGF0CiAgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+c2Vj
b25kLmdldCgpOwogfQogCisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQordWludDY0X3QgV2ViUHJv
Y2Vzczo6YWRkTWVzc2FnZVBvcnRDaGFubmVsKFBhc3NSZWZQdHI8UGxhdGZvcm1NZXNzYWdlUG9y
dENoYW5uZWw+IG1lc3NhZ2VQb3J0Q2hhbm5lbCkKK3sKKyAgICBzdGF0aWMgdWludDY0X3QgY2hh
bm5lbElEID0gMDsKKyAgICBtX21lc3NhZ2VQb3J0Q2hhbm5lbHMuYWRkKCsrY2hhbm5lbElELCBt
ZXNzYWdlUG9ydENoYW5uZWwpOworCisgICAgcmV0dXJuIGNoYW5uZWxJRDsKK30KKworUGxhdGZv
cm1NZXNzYWdlUG9ydENoYW5uZWwqIFdlYlByb2Nlc3M6Om1lc3NhZ2VQb3J0Q2hhbm5lbCh1aW50
NjRfdCBjaGFubmVsSUQpCit7CisgICAgcmV0dXJuIG1fbWVzc2FnZVBvcnRDaGFubmVscy5nZXQo
Y2hhbm5lbElEKS5nZXQoKTsKK30KKwordm9pZCBXZWJQcm9jZXNzOjpyZW1vdmVNZXNzYWdlUG9y
dENoYW5uZWwodWludDY0X3QgY2hhbm5lbElEKQoreworICAgIG1fbWVzc2FnZVBvcnRDaGFubmVs
cy5yZW1vdmUoY2hhbm5lbElEKTsKK30KKyNlbmRpZgorCiBzdGF0aWMgYm9vbCBjYW5QbHVnaW5I
YW5kbGVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBT
dHJpbmcgcGx1Z2luUGF0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5k
ZXggMGQwMDVhNC4uZDNkZjFiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmgKQEAgLTc4LDYgKzc4LDkgQEAgUVRfRU5EX05BTUVTUEFDRQogbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIGNsYXNzIEludFNpemU7CiAgICAgY2xhc3MgUGFnZUdyb3VwOworI2lmIEVOQUJMRShX
RUJfSU5URU5UUykKKyAgICBjbGFzcyBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDsKKyNlbmRp
ZgogICAgIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKICAgICBjbGFzcyBSZXNvdXJjZVJlc3BvbnNl
OwogfQpAQCAtMTEyLDcgKzExNSwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjcmVhdGVXZWJQYWdl
KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYpOwogICAg
IHZvaWQgcmVtb3ZlV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQpOwogICAgIFdlYlBhZ2UqIGZvY3Vz
ZWRXZWJQYWdlKCkgY29uc3Q7Ci0gICAgCisKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpIAorICAg
IHVpbnQ2NF90IGFkZE1lc3NhZ2VQb3J0Q2hhbm5lbChQYXNzUmVmUHRyPFdlYkNvcmU6OlBsYXRm
b3JtTWVzc2FnZVBvcnRDaGFubmVsPik7CisgICAgV2ViQ29yZTo6UGxhdGZvcm1NZXNzYWdlUG9y
dENoYW5uZWwqIG1lc3NhZ2VQb3J0Q2hhbm5lbCh1aW50NjRfdCk7CisgICAgdm9pZCByZW1vdmVN
ZXNzYWdlUG9ydENoYW5uZWwodWludDY0X3QpOworI2VuZGlmCisKICAgICBJbmplY3RlZEJ1bmRs
ZSogaW5qZWN0ZWRCdW5kbGUoKSBjb25zdCB7IHJldHVybiBtX2luamVjdGVkQnVuZGxlLmdldCgp
OyB9CiAKICAgICBib29sIGlzU2VwYXJhdGVQcm9jZXNzKCkgY29uc3Q7CkBAIC0zMDAsNiArMzA5
LDEwIEBAIHByaXZhdGU6CiAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBXZWJGcmFtZSo+IG1fZnJh
bWVNYXA7CiAKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgSGFzaE1hcDx1aW50NjRfdCwg
UmVmUHRyPFdlYkNvcmU6OlBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsPiA+IG1fbWVzc2FnZVBv
cnRDaGFubmVsczsKKyNlbmRpZgorCiAgICAgSGFzaFNldDxTdHJpbmcsIENhc2VGb2xkaW5nSGFz
aD4gbV9taW1lVHlwZXNXaXRoQ3VzdG9tUmVwcmVzZW50YXRpb25zOwogCiAgICAgVGV4dENoZWNr
ZXJTdGF0ZSBtX3RleHRDaGVja2VyU3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggMGY4M2Q1Yi4uMjI3MTZjZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAt
MjcsNiArMjcsMTAgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyB7CiAgICAgIyBDcmVhdGUgYSBu
ZXcgcGFnZS4KICAgICBDcmVhdGVXZWJQYWdlKHVpbnQ2NF90IG5ld1BhZ2VJRCwgV2ViS2l0OjpX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHBhZ2VDcmVhdGlvblBhcmFtZXRlcnMpCiAKKyNpZiBF
TkFCTEUoV0VCX0lOVEVOVFMpCisgICAgUmVtb3ZlTWVzc2FnZVBvcnRDaGFubmVsKHVpbnQ2NF90
IGNoYW5uZWxJRCk7CisjZW5kaWYKKwogICAgICMgVmlzaXRlZCBsaW5rIHRyYWNraW5nLgogICAg
IFNldFZpc2l0ZWRMaW5rVGFibGUoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGUp
CiAgICAgVmlzaXRlZExpbmtTdGF0ZUNoYW5nZWQoVmVjdG9yPFdlYkNvcmU6OkxpbmtIYXNoPiBs
aW5rSGFzaGVzKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IGVkNGI2NWYuLjU1YzQ3ZjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMi0wOC0wNCAgQ2hyaXN0b3Bo
ZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgorCisgICAgICAgIFtXSzJdIEFk
ZCBzdXBwb3J0IGZvciBXZWIgSW50ZW50cyBNZXNzYWdlUG9ydHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5MDcyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFdLQnVuZGxlSW50ZW50IGluc3RlYWQg
b2YgV2ViSW50ZW50RGF0YSBpbgorICAgICAgICBXZWJLaXRUZXN0UnVubmVyLiBXVFIgbm93IHBy
aW50cyB0aGUgbnVtYmVyIG9mCisgICAgICAgIE1lc3NhZ2VQb3J0cyBpbiByZWNlaXZlZCBXZWIg
aW50ZW50cyBhcworICAgICAgICBleHBlY3RlZCBieSB0aGUgZm9sbG93aW5nIGxheW91dCB0ZXN0
czoKKyAgICAgICAgd2ViaW50ZW50cy93ZWItaW50ZW50cy1pbnZva2UtcG9ydC5odG1sCisgICAg
ICAgIHdlYmludGVudHMvd2ViLWludGVudHMtb2JqLWNvbnN0cnVjdG9yLmh0bWwKKworICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNw
cDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRSZWNlaXZlSW50ZW50Rm9y
RnJhbWUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpMYXlvdXRUZXN0Q29udHJvbGxlcjo6
ZGVsaXZlcldlYkludGVudCk6CisKIDIwMTItMDgtMDMgIFlhcm9uIEZyaWVkbWFuICA8eWZyaWVk
bWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21lLUFuZHJvaWRdIC0gUHJlcGFyZSBh
cGsgdGVzdHMgZm9yIHN3aXRjaCB0byBjaGVja2VkIGluIFNESy4KZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
LmNwcAppbmRleCAxNjM3MWQxLi4xZWJjMmYwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCkBA
IC01MCw4ICs1MCw4IEBACiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyNpbmNs
dWRlIDxXZWJLaXQyL1dLQnVuZGxlSW50ZW50Lmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRs
ZUludGVudFJlcXVlc3QuaD4KLSNpbmNsdWRlIDxXZWJLaXQyL1dLSW50ZW50RGF0YS5oPgogI2Vu
ZGlmCiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTX1RBRykKICNpbmNsdWRlIDxXZWJLaXQyL1dLSW50
ZW50U2VydmljZUluZm8uaD4KQEAgLTQzMCwxOSArNDMwLDI0IEBAIHZvaWQgSW5qZWN0ZWRCdW5k
bGVQYWdlOjpkaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdL
QnVuZGxlCiB7CiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQogICAgIHN0YXRpY19jYXN0PEluamVj
dGVkQnVuZGxlUGFnZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+bV9jdXJyZW50
SW50ZW50UmVxdWVzdCA9IGludGVudFJlcXVlc3Q7Ci0gICAgV0tSZXRhaW5QdHI8V0tJbnRlbnRE
YXRhUmVmPiBpbnRlbnQoQWRvcHRXSywgV0tCdW5kbGVJbnRlbnRSZXF1ZXN0Q29weUludGVudERh
dGEoaW50ZW50UmVxdWVzdCkpOworICAgIFdLUmV0YWluUHRyPFdLQnVuZGxlSW50ZW50UmVmPiBp
bnRlbnQoQWRvcHRXSywgV0tCdW5kbGVJbnRlbnRSZXF1ZXN0Q29weUludGVudChpbnRlbnRSZXF1
ZXN0KSk7CiAKICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5h
cHBlbmQoIlJlY2VpdmVkIFdlYiBJbnRlbnQ6IGFjdGlvbj0iKTsKLSAgICBXS1JldGFpblB0cjxX
S1N0cmluZ1JlZj4gd2tBY3Rpb24oQWRvcHRXSywgV0tJbnRlbnREYXRhQ29weUFjdGlvbihpbnRl
bnQuZ2V0KCkpKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tBY3Rpb24oQWRvcHRX
SywgV0tCdW5kbGVJbnRlbnRDb3B5QWN0aW9uKGludGVudC5nZXQoKSkpOwogICAgIEluamVjdGVk
QnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCh0b1dURlN0cmluZyh3a0Fj
dGlvbi5nZXQoKSkpOwogICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVy
KCktPmFwcGVuZCgiIHR5cGU9Iik7Ci0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHdrVHlw
ZShBZG9wdFdLLCBXS0ludGVudERhdGFDb3B5VHlwZShpbnRlbnQuZ2V0KCkpKTsKKyAgICBXS1Jl
dGFpblB0cjxXS1N0cmluZ1JlZj4gd2tUeXBlKEFkb3B0V0ssIFdLQnVuZGxlSW50ZW50Q29weVR5
cGUoaW50ZW50LmdldCgpKSk7CiAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1
aWxkZXIoKS0+YXBwZW5kKHRvV1RGU3RyaW5nKHdrVHlwZS5nZXQoKSkpOwogICAgIEluamVjdGVk
QnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiXG4iKTsKIAotICAgIC8v
IEZJWE1FOiBQcmludCBudW1iZXIgb2YgcG9ydHMgd2hlbiBleHBvc2VkIGluIFdlYktpdDIKKyAg
ICBjb25zdCBzaXplX3QgbnVtTWVzc2FnZVBvcnRzID0gV0tCdW5kbGVJbnRlbnRNZXNzYWdlUG9y
dENvdW50KGludGVudC5nZXQoKSk7CisgICAgaWYgKG51bU1lc3NhZ2VQb3J0cykgeworICAgICAg
ICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoIkhhdmUg
Iik7CisgICAgICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFw
cGVuZChXVEY6OlN0cmluZzo6bnVtYmVyKG51bU1lc3NhZ2VQb3J0cykpOworICAgICAgICBJbmpl
Y3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoIiBwb3J0c1xuIik7
CisgICAgfQogCi0gICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IHdrU2VydmljZVVybChBZG9wdFdL
LCBXS0ludGVudERhdGFDb3B5U2VydmljZShpbnRlbnQuZ2V0KCkpKTsKKyAgICBXS1JldGFpblB0
cjxXS1VSTFJlZj4gd2tTZXJ2aWNlVXJsKEFkb3B0V0ssIFdLQnVuZGxlSW50ZW50Q29weVNlcnZp
Y2UoaW50ZW50LmdldCgpKSk7CiAgICAgaWYgKHdrU2VydmljZVVybCkgewogICAgICAgICBXS1Jl
dGFpblB0cjxXS1N0cmluZ1JlZj4gd2tTZXJ2aWNlKEFkb3B0V0ssIFdLVVJMQ29weVN0cmluZyh3
a1NlcnZpY2VVcmwuZ2V0KCkpKTsKICAgICAgICAgaWYgKHdrU2VydmljZSAmJiAhV0tTdHJpbmdJ
c0VtcHR5KHdrU2VydmljZS5nZXQoKSkpIHsKQEAgLTQ1Miw3ICs0NTcsNyBAQCB2b2lkIEluamVj
dGVkQnVuZGxlUGFnZTo6ZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiBw
YWdlLCBXS0J1bmRsZQogICAgICAgICB9CiAgICAgfQogCi0gICAgV0tSZXRhaW5QdHI8V0tEaWN0
aW9uYXJ5UmVmPiB3a0V4dHJhcyhBZG9wdFdLLCBXS0ludGVudERhdGFDb3B5RXh0cmFzKGludGVu
dC5nZXQoKSkpOworICAgIFdLUmV0YWluUHRyPFdLRGljdGlvbmFyeVJlZj4gd2tFeHRyYXMoQWRv
cHRXSywgV0tCdW5kbGVJbnRlbnRDb3B5RXh0cmFzKGludGVudC5nZXQoKSkpOwogICAgIFdLUmV0
YWluUHRyPFdLQXJyYXlSZWY+IHdrRXh0cmFLZXlzKEFkb3B0V0ssIFdLRGljdGlvbmFyeUNvcHlL
ZXlzKHdrRXh0cmFzLmdldCgpKSk7CiAgICAgY29uc3Qgc2l6ZV90IG51bUV4dHJhS2V5cyA9IFdL
QXJyYXlHZXRTaXplKHdrRXh0cmFLZXlzLmdldCgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG51bUV4dHJhS2V5czsgKytpKSB7CkBAIC00NjUsNyArNDcwLDcgQEAgdm9pZCBJbmplY3Rl
ZEJ1bmRsZVBhZ2U6OmRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFn
ZSwgV0tCdW5kbGUKICAgICAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxk
ZXIoKS0+YXBwZW5kKCJcbiIpOwogICAgIH0KIAotICAgIFdLUmV0YWluUHRyPFdLQXJyYXlSZWY+
IHdrU3VnZ2VzdGlvbnMoQWRvcHRXSywgV0tJbnRlbnREYXRhQ29weVN1Z2dlc3Rpb25zKGludGVu
dC5nZXQoKSkpOworICAgIFdLUmV0YWluUHRyPFdLQXJyYXlSZWY+IHdrU3VnZ2VzdGlvbnMoQWRv
cHRXSywgV0tCdW5kbGVJbnRlbnRDb3B5U3VnZ2VzdGlvbnMoaW50ZW50LmdldCgpKSk7CiAgICAg
Y29uc3Qgc2l6ZV90IG51bVN1Z2dlc3Rpb25zID0gV0tBcnJheUdldFNpemUod2tTdWdnZXN0aW9u
cy5nZXQoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1TdWdnZXN0aW9uczsgKytp
KSB7CiAgICAgICAgIFdLU3RyaW5nUmVmIHdrU3VnZ2VzdGlvbiA9IHN0YXRpY19jYXN0PFdLU3Ry
aW5nUmVmPihXS0FycmF5R2V0SXRlbUF0SW5kZXgod2tTdWdnZXN0aW9ucy5nZXQoKSwgaSkpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0xheW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCA1ZmI1MjZkLi5kMTY4NGJiIDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250
cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xh
eW91dFRlc3RDb250cm9sbGVyLmNwcApAQCAtNDksOCArNDksOCBAQAogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyNpbmNsdWRl
IDxXZWJLaXQyL1dLQnVuZGxlSW50ZW50Lmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZUlu
dGVudFJlcXVlc3QuaD4KLSNpbmNsdWRlIDxXZWJLaXQyL1dLSW50ZW50RGF0YS5oPgogI2VuZGlm
CiAKIG5hbWVzcGFjZSBXVFIgewpAQCAtNjUxLDggKzY1MSw4IEBAIHZvaWQgTGF5b3V0VGVzdENv
bnRyb2xsZXI6OmRlbGl2ZXJXZWJJbnRlbnQoSlNTdHJpbmdSZWYgYWN0aW9uLCBKU1N0cmluZ1Jl
ZiB0eXBlCiAgICAgV0tEaWN0aW9uYXJ5QWRkSXRlbShpbnRlbnRJbml0RGljdC5nZXQoKSwgV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoInR5cGUiKSwgdHlwZVdLLmdldCgpKTsKICAgICBX
S0RpY3Rpb25hcnlBZGRJdGVtKGludGVudEluaXREaWN0LmdldCgpLCBXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygiZGF0YSIpLCBkYXRhV0suZ2V0KCkpOwogCi0gICAgV0tSZXRhaW5QdHI8
V0tJbnRlbnREYXRhUmVmPiB3a0ludGVudERhdGEoQWRvcHRXSywgV0tJbnRlbnREYXRhQ3JlYXRl
KGludGVudEluaXREaWN0LmdldCgpKSk7Ci0gICAgV0tCdW5kbGVQYWdlRGVsaXZlckludGVudFRv
RnJhbWUoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgpLCBtYWluRnJhbWUs
IHdrSW50ZW50RGF0YS5nZXQoKSk7CisgICAgV0tSZXRhaW5QdHI8V0tCdW5kbGVJbnRlbnRSZWY+
IHdrSW50ZW50KEFkb3B0V0ssIFdLQnVuZGxlSW50ZW50Q3JlYXRlKGludGVudEluaXREaWN0Lmdl
dCgpKSk7CisgICAgV0tCdW5kbGVQYWdlRGVsaXZlckludGVudFRvRnJhbWUoSW5qZWN0ZWRCdW5k
bGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgpLCBtYWluRnJhbWUsIHdrSW50ZW50LmdldCgpKTsK
ICNlbmRpZgogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156537</attachid>
            <date>2012-08-04 12:02:38 -0700</date>
            <delta_ts>2012-08-12 08:52:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>89072_wk2_messagePorts.patch</filename>
            <type>text/plain</type>
            <size>59226</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKaW5kZXggNjNhOGNhNy4uNjNjZjk0ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0
cy50eHQKQEAgLTU0LDYgKzU0LDcgQEAgU0VUKFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwog
ICAgICIke1dFQkNPUkVfRElSfS9icmlkZ2UvanNjIgogICAgICIke1dFQkNPUkVfRElSfS9jc3Mi
CiAgICAgIiR7V0VCQ09SRV9ESVJ9L2RvbSIKKyAgICAiJHtXRUJDT1JFX0RJUn0vZG9tL2RlZmF1
bHQiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2VkaXRpbmciCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2hp
c3RvcnkiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2h0bWwiCkBAIC0zNzEsNiArMzcyLDcgQEAgU0VU
KFdlYktpdDJfU09VUkNFUwogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVDbGllbnQuY3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5jcHAKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAKKyAgICBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50LmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0LmNwcAogICAgIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcAogICAgIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlRGlhZ25vc3RpY0xvZ2dpbmdD
bGllbnQuY3BwCkBAIC0zOTEsNiArMzkzLDcgQEAgU0VUKFdlYktpdDJfU09VUkNFUwogICAgIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAKICAgICBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAKICAg
ICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW5zcGVjdG9yLmNwcAor
ICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnQuY3BwCiAg
ICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudFJlcXVlc3Qu
Y3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU5hdmlnYXRp
b25BY3Rpb24uY3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZU5vZGVIYW5kbGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNjg0NjhlZi4uYTJiOGZjOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSw1ICsxLDEzNCBAQAogMjAxMi0wOC0wNCAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlz
dG9waGUuZHVtZXpAaW50ZWwuY29tPgogCisgICAgICAgIFtXSzJdIEFkZCBzdXBwb3J0IGZvciBX
ZWIgSW50ZW50cyBNZXNzYWdlUG9ydHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTg5MDcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIFdlYkludGVudHMgTWVzc2FnZVBvcnRzIGlu
IFdlYktpdDIuCisgICAgICAgIE1lc3NhZ2VQb3J0cyBjYW4gYmUgcGFzc2VkIHdpdGggYSBXZWIg
SW50ZW50IGluCisgICAgICAgIG9yZGVyIHRvIG9wZW4gYSBkaXJlY3QgY29tbXVuaWNhdGlvbiBj
aGFubmVsCisgICAgICAgIGJldHdlZW4gdGhlIFdlYiBhcHBsaWNhdGlvbiBhbmQgdGhlIGludGVu
dCBzZXJ2aWNlLgorICAgICAgICBUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgYWxyZWFkeSBzdXBwb3J0
ZWQgYnkgV2ViS2l0IDEuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IElu
amVjdGVkQnVuZGxlSW50ZW50CisgICAgICAgIGNsYXNzIHdoaWNoIHdyYXBzIGEgV2ViQ29yZTo6
SW50ZW50LiBUaGlzIHdheQorICAgICAgICBpbmZvcm1hdGlvbiByZWdhcmRpbmcgdGhlIE1lc3Nh
Z2VQb3J0cyBpbiBhIFdlYgorICAgICAgICBJbnRlbnQgaXMga2VwdCB3aGVuIHVzaW5nIGFuIGlu
amVjdGVkIGJ1bmRsZS4KKworICAgICAgICBGb3IgdGhlIFVJUHJvY2VzcywgV2ViSW50ZW50RGF0
YSBub3cgY2FycmllcworICAgICAgICBpZGVudGlmaWVycyBmb3IgdGhlIE1lc3NhZ2VQb3J0cyB3
aGljaCBjYW4gZ28gb3ZlcgorICAgICAgICBJUEMuIFRob3NlIGlkZW50aWZpZXJzIG1hcCB0byBh
Y3R1YWwgTWVzc2FnZVBvcnRzCisgICAgICAgIHN0b3JlZCBpbiB0aGUgV2ViIHByb2Nlc3MuIFRo
aXMgd2F5LCB3aGVuIHRoZSBVSQorICAgICAgICBkZWxpdmVycyBhbiBpbnRlbnQgdG8gYSBmcmFt
ZSwgd2UgY2FuIGdldCBiYWNrIHRoZQorICAgICAgICBjb3JyZXNwb25kaW5nIE1lc3NhZ2VQb3J0
cyBmcm9tIHRoZSBXZWIgcHJvY2VzcworICAgICAgICBiZWZvcmUgZGVsaXZlcmluZyB0byB0aGUg
RE9NV2luZG93LgorCisgICAgICAgIFRoaXMgZnVuY3Rpb25hbGl0eSBpcyBhbHJlYWR5IHRlc3Rl
ZCBieToKKyAgICAgICAgd2ViaW50ZW50cy93ZWItaW50ZW50cy1pbnZva2UtcG9ydC5odG1sCisg
ICAgICAgIHdlYmludGVudHMvd2ViLWludGVudHMtb2JqLWNvbnN0cnVjdG9yLmh0bWwKKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06Cisg
ICAgICAgICogU2hhcmVkL0FQSS9jL1dLQmFzZS5oOgorICAgICAgICAqIFNoYXJlZC9BUElPYmpl
Y3QuaDoKKyAgICAgICAgKiBTaGFyZWQvSW50ZW50RGF0YS5jcHA6IEFkZCBNZXNzYWdlUG9ydCBp
ZGVudGlmaWVycy4KKyAgICAgICAgKFdlYktpdDo6SW50ZW50RGF0YTo6SW50ZW50RGF0YSk6Cisg
ICAgICAgIChXZWJLaXQ6OkludGVudERhdGE6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6Oklu
dGVudERhdGE6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0ludGVudERhdGEuaDoKKyAgICAg
ICAgKEludGVudERhdGEpOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLSW50ZW50RGF0YS5jcHA6IFJlbmFtZSBXS0ludGVudERhdGFDb3B5RXh0cmEo
KSB0bworICAgICAgICBXS0ludGVudERhdGFDb3B5RXh0cmFWYWx1ZSgpIGZvciBjbGFyaXR5Lgor
ICAgICAgICAoV0tJbnRlbnREYXRhQ29weUV4dHJhVmFsdWUpOiAKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0MvV0tJbnRlbnREYXRhLmg6IFJlbW92ZSBXS0ludGVudERhdGFDcmVhdGUoKSBmdW5j
dGlvbiBub3cKKyAgICAgICAgdGhhdCBXVFIgdXNlcyBXS0J1bmRsZUludGVudENyZWF0ZSgpIGlu
c3RlYWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2ludGVudC5jcHA6CisgICAg
ICAgIChld2tfaW50ZW50X2V4dHJhX2dldCk6IFVzZSBXS0ludGVudERhdGFDb3B5RXh0cmFWYWx1
ZSgpIGluc3RlYWQgb2YKKyAgICAgICAgV0tJbnRlbnREYXRhQ29weUV4dHJhKCkgc2luY2UgaXQg
d2FzIHJlbmFtZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkludGVudERhdGEuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJbnRlbnREYXRhOjpXZWJJbnRlbnREYXRhKToKKyAgICAgICAgKFdl
YktpdDo6V2ViSW50ZW50RGF0YTo6fldlYkludGVudERhdGEpOiBSZW1vdmUgTWVzc2FnZVBvcnRz
IGZyb20gV2ViUHJvY2VzcyB1cG9uCisgICAgICAgIFdlYkludGVudERhdGEgZGVzdHJ1Y3Rpb24u
CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnRlbnREYXRhOjpleHRy
YXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJJbnRlbnREYXRhLmg6CisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnRlbnREYXRhOjpjcmVhdGUpOgorICAgICAgICAo
V2ViSW50ZW50RGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6cmVtb3ZlTWVzc2FnZVBvcnRD
aGFubmVsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAg
IChXZWJQcm9jZXNzUHJveHkpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVBUElDYXN0Lmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnQuY3BwOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnRlbnREYXRhLmNwcC4KKyAg
ICAgICAgKFdLQnVuZGxlSW50ZW50R2V0VHlwZUlEKToKKyAgICAgICAgKFdLQnVuZGxlSW50ZW50
Q3JlYXRlKToKKyAgICAgICAgKFdLQnVuZGxlSW50ZW50Q29weUFjdGlvbik6CisgICAgICAgIChX
S0J1bmRsZUludGVudENvcHlUeXBlKToKKyAgICAgICAgKFdLQnVuZGxlSW50ZW50Q29weVNlcnZp
Y2UpOgorICAgICAgICAoV0tCdW5kbGVJbnRlbnRDb3B5U3VnZ2VzdGlvbnMpOgorICAgICAgICAo
V0tCdW5kbGVJbnRlbnRDb3B5RXh0cmFWYWx1ZSk6CisgICAgICAgIChXS0J1bmRsZUludGVudENv
cHlFeHRyYXMpOgorICAgICAgICAoV0tCdW5kbGVJbnRlbnRNZXNzYWdlUG9ydENvdW50KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50Lmg6
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0ludGVudERhdGEu
aC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50
ZW50UmVxdWVzdC5jcHA6CisgICAgICAgIChXS0J1bmRsZUludGVudFJlcXVlc3RDb3B5SW50ZW50
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50
ZW50UmVxdWVzdC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdLQnVuZGxlUGFnZURlbGl2ZXJJbnRlbnRUb0Zy
YW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
UGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVJbnRlbnQuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW50
ZW50RGF0YS5jcHAuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3Rl
ZEJ1bmRsZUludGVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVJ
bnRlbnQ6OkluamVjdGVkQnVuZGxlSW50ZW50KToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRC
dW5kbGVJbnRlbnQ6OmFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlSW50
ZW50OjpwYXlsb2FkVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlSW50ZW50
OjpzZXJ2aWNlKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OmRhdGEp
OgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZUludGVudDo6ZXh0cmEpOgorICAgICAg
ICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZUludGVudDo6ZXh0cmFzKToKKyAgICAgICAgKFdlYktp
dDo6SW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OnN1Z2dlc3Rpb25zKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50Lmg6IENvcGllZCBmcm9tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnRlbnREYXRhLmguCisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoSW5qZWN0ZWRCdW5kbGVJbnRlbnQpOgorICAgICAgICAoV2ViS2l0OjpJbmpl
Y3RlZEJ1bmRsZUludGVudDo6Y29yZUludGVudCk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVk
QnVuZGxlSW50ZW50Ojp0eXBlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVj
dGVkQnVuZGxlSW50ZW50UmVxdWVzdDo6aW50ZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5oOgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKEluamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJh
bWU6OmRlbGl2ZXJJbnRlbnQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
RnJhbWUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRlbGl2ZXJDb3JlSW50ZW50
VG9GcmFtZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViUGFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcDogU3RvcmUgTWVzc2FnZVBvcnRzIGluIFdlYlByb2Nlc3MgYW5kIGtlZXAg
bWFwcGluZyB3aXRoCisgICAgICAgIHRoZWlyIGlkZW50aWZpZXJzLgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6YWRkTWVzc2FnZVBvcnRDaGFubmVsKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6bWVzc2FnZVBvcnRDaGFubmVsKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cmVtb3ZlTWVzc2FnZVBvcnRDaGFubmVsKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViUHJvY2Vzcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluOgorCisyMDEyLTA4LTA0ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBp
bnRlbC5jb20+CisKICAgICAgICAgW1dLMl0gTW92ZSBXZWJJbnRlbnREYXRhIGZyb20gU2hhcmVk
IHRvIFVJUHJvY2VzcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTMxNzUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlz
dC5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggZWVmZDVhMC4u
ZWQ4YzA1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC05NjQsNiArOTY0LDgg
QEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW5pdGlhbGl6ZS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW5zcGVjdG9yLmNwcCBcCiAJ
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUlu
c3BlY3Rvci5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlSW50ZW50LmNwcCBcCisJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudC5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50UmVxdWVzdC5jcHAgXAog
CVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJ
bnRlbnRSZXF1ZXN0LmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVOb2RlSGFuZGxlLmNwcCBcCkBAIC05OTgsNiArMTAwMCw4IEBAIHdl
YmtpdDJfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5oIFwKIAlTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5j
cHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVIaXRUZXN0UmVzdWx0LmggXAorCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnQuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50LmggXAogCVNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1
ZXN0LmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZUludGVudFJlcXVlc3QuaCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3BwIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAppbmRleCA2ODU0ZWNjLi5hNmE4YmQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCkBAIC0xMzUsNiArMTM1LDcgQEAgdHlwZWRlZiBj
b25zdCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24qIFdLQnVuZGxlRE9N
V2luZG93RXh0ZW5zaW8KIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQnVuZGxlRnJhbWUq
IFdLQnVuZGxlRnJhbWVSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRsZUhp
dFRlc3RSZXN1bHQqIFdLQnVuZGxlSGl0VGVzdFJlc3VsdFJlZjsKIHR5cGVkZWYgY29uc3Qgc3Ry
dWN0IE9wYXF1ZVdLQnVuZGxlSW5zcGVjdG9yKiBXS0J1bmRsZUluc3BlY3RvclJlZjsKK3R5cGVk
ZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQnVuZGxlSW50ZW50KiBXS0J1bmRsZUludGVudFJlZjsK
IHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQnVuZGxlSW50ZW50UmVxdWVzdCogV0tCdW5k
bGVJbnRlbnRSZXF1ZXN0UmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVO
YXZpZ2F0aW9uQWN0aW9uKiBXS0J1bmRsZU5hdmlnYXRpb25BY3Rpb25SZWY7CiB0eXBlZGVmIGNv
bnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRsZU5vZGVIYW5kbGUqIFdLQnVuZGxlTm9kZUhhbmRsZVJl
ZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaCBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaAppbmRleCA4ZTRkMjkzLi43MDhlZmZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCkBAIC0xMTcsNiArMTE3LDcgQEAgcHVibGljOgogICAg
ICAgICBUeXBlQnVuZGxlRnJhbWUsCiAgICAgICAgIFR5cGVCdW5kbGVIaXRUZXN0UmVzdWx0LAog
ICAgICAgICBUeXBlQnVuZGxlSW5zcGVjdG9yLAorICAgICAgICBUeXBlQnVuZGxlSW50ZW50LAog
ICAgICAgICBUeXBlQnVuZGxlSW50ZW50UmVxdWVzdCwKICAgICAgICAgVHlwZUJ1bmRsZU5hdmln
YXRpb25BY3Rpb24sCiAgICAgICAgIFR5cGVCdW5kbGVOb2RlSGFuZGxlLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL0ludGVudERhdGEuY3BwIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0ludGVudERhdGEuY3BwCmluZGV4IDQ5OTViMmUuLjQxMDc4NzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9JbnRlbnREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvSW50ZW50RGF0YS5jcHAKQEAgLTMxLDcgKzMxLDEwIEBACiAjaW5jbHVkZSAiQVBJT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1
bWVudENvZGVycy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0ludGVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTWVzc2FnZVBvcnRDaGFubmVsLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oPgogCiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIApAQCAtNDUsNiArNDgsMTIgQEAgSW50ZW50RGF0YTo6SW50ZW50RGF0
YShJbnRlbnQqIGNvcmVJbnRlbnQpCiAgICAgLCBleHRyYXMoY29yZUludGVudC0+ZXh0cmFzKCkp
CiAgICAgLCBzdWdnZXN0aW9ucyhjb3JlSW50ZW50LT5zdWdnZXN0aW9ucygpKQogeworICAgIE1l
c3NhZ2VQb3J0Q2hhbm5lbEFycmF5KiBjb3JlTWVzc2FnZVBvcnRzID0gY29yZUludGVudC0+bWVz
c2FnZVBvcnRzKCk7CisgICAgaWYgKGNvcmVNZXNzYWdlUG9ydHMpIHsKKyAgICAgICAgc2l6ZV90
IG51bU1lc3NhZ2VQb3J0cyA9IGNvcmVNZXNzYWdlUG9ydHMtPnNpemUoKTsKKyAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBudW1NZXNzYWdlUG9ydHM7ICsraSkKKyAgICAgICAgICAgIG1l
c3NhZ2VQb3J0cy5hcHBlbmQoV2ViUHJvY2Vzczo6c2hhcmVkKCkuYWRkTWVzc2FnZVBvcnRDaGFu
bmVsKCgqY29yZU1lc3NhZ2VQb3J0cylbaV0tPmNoYW5uZWwoKSkpOworICAgIH0KIH0KIAogdm9p
ZCBJbnRlbnREYXRhOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyKSBj
b25zdApAQCAtNTUsNiArNjQsNyBAQCB2b2lkIEludGVudERhdGE6OmVuY29kZShDb3JlSVBDOjpB
cmd1bWVudEVuY29kZXIqIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2Rlci0+ZW5jb2RlKENvcmVJ
UEM6OkRhdGFSZWZlcmVuY2UoZGF0YSkpOwogICAgIGVuY29kZXItPmVuY29kZShleHRyYXMpOwog
ICAgIGVuY29kZXItPmVuY29kZShzdWdnZXN0aW9ucyk7CisgICAgZW5jb2Rlci0+ZW5jb2RlKG1l
c3NhZ2VQb3J0cyk7CiB9CiAKIGJvb2wgSW50ZW50RGF0YTo6ZGVjb2RlKENvcmVJUEM6OkFyZ3Vt
ZW50RGVjb2RlciogZGVjb2RlciwgSW50ZW50RGF0YSYgaW50ZW50RGF0YSkKQEAgLTczLDYgKzgz
LDggQEAgYm9vbCBJbnRlbnREYXRhOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBk
ZWNvZGVyLCBJbnRlbnREYXRhJiBpbnRlbnREYXQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IGlmICghZGVjb2Rlci0+ZGVjb2RlKGludGVudERhdGEuc3VnZ2VzdGlvbnMpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoaW50ZW50RGF0YS5tZXNzYWdl
UG9ydHMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9JbnRlbnREYXRhLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvSW50ZW50RGF0YS5oCmluZGV4IDk2ZTJkOWYuLmU4NDM1YzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9JbnRlbnREYXRhLmgKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL0ludGVudERhdGEuaApAQCAtMjksNyArMjksOCBAQAogI2lmIEVOQUJMRShXRUJf
SU5URU5UUykKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgotI2luY2x1ZGUgIkdlbmVyaWNDYWxs
YmFjay5oIgorI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBDb3JlSVBD
IHsKQEAgLTU2LDYgKzU3LDcgQEAgc3RydWN0IEludGVudERhdGEgewogICAgIFZlY3Rvcjx1aW50
OF90PiBkYXRhOwogICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IGV4dHJhczsKICAgICBWZWN0
b3I8V2ViQ29yZTo6S1VSTD4gc3VnZ2VzdGlvbnM7CisgICAgVmVjdG9yPHVpbnQ2NF90PiBtZXNz
YWdlUG9ydHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCmluZGV4IDcx
ZjAyN2IuLjIwN2QzNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKKysr
IGIvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQpAQCAtMzE5LDYgKzMxOSw3IEBAIEhFQURFUlMg
Kz0gXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVCYWNrRm9y
d2FyZExpc3QuaCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZUJhY2tGb3J3YXJkTGlzdEl0ZW0uaCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZUhpdFRlc3RSZXN1bHQuaCBcCisgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudC5oIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50UmVxdWVzdC5oIFwKICAgICBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5oIFwKICAgICBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlTm9kZUhhbmRsZS5oIFwKQEAgLTMzMiw2
ICszMzMsNyBAQCBIRUFERVJTICs9IFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlQ2xpZW50LmggXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uaCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuaCBcCisgICAgV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudC5oIFwKICAgICBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5oIFwKICAgICBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5oIFwKICAg
ICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51
Q2xpZW50LmggXApAQCAtNzAzLDYgKzcwNSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAgXAogICAgIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcCBcCiAgICAg
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUluc3BlY3Rvci5jcHAgXAor
ICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnQuY3BwIFwK
ICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50UmVxdWVz
dC5jcHAgXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVOYXZp
Z2F0aW9uQWN0aW9uLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZU5vZGVIYW5kbGUuY3BwIFwKQEAgLTcxOCw2ICs3MjEsNyBAQCBTT1VSQ0VTICs9IFwK
ICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQ2xpZW50LmNwcCBc
CiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4
dGVuc2lvbi5jcHAgXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVIaXRUZXN0UmVzdWx0LmNwcCBcCisgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZUludGVudC5jcHAgXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3BwIFwKICAgICBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnRlbnREYXRh
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0ludGVudERhdGEuY3BwCmlu
ZGV4IDdhOTJkYjUuLjkyZTYxODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS0ludGVudERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS0ludGVudERhdGEuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiV0tBUElD
YXN0LmgiCiAjaW5jbHVkZSAiV0tEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiV0tTdHJpbmcuaCIK
KyNpbmNsdWRlICJXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKIAogI2lmIEVOQUJMRShXRUJf
SU5URU5UUykKICNpbmNsdWRlICJXZWJJbnRlbnREYXRhLmgiCkBAIC00NywyNyArNDgsNiBAQCBX
S1R5cGVJRCBXS0ludGVudERhdGFHZXRUeXBlSUQoKQogI2VuZGlmCiB9CiAKLVdLSW50ZW50RGF0
YVJlZiBXS0ludGVudERhdGFDcmVhdGUoV0tEaWN0aW9uYXJ5UmVmIGluaXREaWN0aW9uYXJ5UmVm
KQotewotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSAgICBJbnRlbnREYXRhIGludGVudERhdGE7
Ci0gICAgV0tTdHJpbmdSZWYgYWN0aW9uID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGlj
dGlvbmFyeUdldEl0ZW1Gb3JLZXkoaW5pdERpY3Rpb25hcnlSZWYsIFdLU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKCJhY3Rpb24iKSkpOwotICAgIEFTU0VSVChhY3Rpb24pOwotICAgIGludGVu
dERhdGEuYWN0aW9uID0gdG9JbXBsKGFjdGlvbiktPnN0cmluZygpOwotICAgIFdLU3RyaW5nUmVm
IHR5cGUgPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktl
eShpbml0RGljdGlvbmFyeVJlZiwgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoInR5cGUi
KSkpOwotICAgIEFTU0VSVCh0eXBlKTsKLSAgICBpbnRlbnREYXRhLnR5cGUgPSB0b0ltcGwodHlw
ZSktPnN0cmluZygpOwotICAgIFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmIGRhdGEgPSBzdGF0
aWNfY2FzdDxXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZv
cktleShpbml0RGljdGlvbmFyeVJlZiwgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImRh
dGEiKSkpOwotICAgIGlmIChkYXRhKQotICAgICAgICBpbnRlbnREYXRhLmRhdGEgPSB0b0ltcGwo
ZGF0YSktPmRhdGFSZWZlcmVuY2UoKS52ZWN0b3IoKTsKLQotICAgIFJlZlB0cjxXZWJJbnRlbnRE
YXRhPiB3ZWJJbnRlbnREYXRhID0gV2ViSW50ZW50RGF0YTo6Y3JlYXRlKGludGVudERhdGEpOwot
ICAgIHJldHVybiB0b0FQSSh3ZWJJbnRlbnREYXRhLnJlbGVhc2UoKS5sZWFrUmVmKCkpOwotI2Vs
c2UKLSAgICByZXR1cm4gMDsKLSNlbmRpZgotfQotCiBXS1N0cmluZ1JlZiBXS0ludGVudERhdGFD
b3B5QWN0aW9uKFdLSW50ZW50RGF0YVJlZiBpbnRlbnRSZWYpCiB7CiAjaWYgRU5BQkxFKFdFQl9J
TlRFTlRTKQpAQCAtMTA0LDcgKzg0LDcgQEAgV0tBcnJheVJlZiBXS0ludGVudERhdGFDb3B5U3Vn
Z2VzdGlvbnMoV0tJbnRlbnREYXRhUmVmIGludGVudFJlZikKICNlbmRpZgogfQogCi1XS1N0cmlu
Z1JlZiBXS0ludGVudERhdGFDb3B5RXh0cmEoV0tJbnRlbnREYXRhUmVmIGludGVudFJlZiwgV0tT
dHJpbmdSZWYga2V5KQorV0tTdHJpbmdSZWYgV0tJbnRlbnREYXRhQ29weUV4dHJhVmFsdWUoV0tJ
bnRlbnREYXRhUmVmIGludGVudFJlZiwgV0tTdHJpbmdSZWYga2V5KQogewogI2lmIEVOQUJMRShX
RUJfSU5URU5UUykKICAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKGludGVudFJlZiktPmV4
dHJhKHRvV1RGU3RyaW5nKGtleSkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS0ludGVudERhdGEuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS0ludGVudERhdGEuaAppbmRleCAxZjgwOWVjLi5jYWYxYjQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnRlbnREYXRhLmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLSW50ZW50RGF0YS5oCkBAIC0zNCwxMyArMzQsMTEgQEAg
ZXh0ZXJuICJDIiB7CiAKIFdLX0VYUE9SVCBXS1R5cGVJRCBXS0ludGVudERhdGFHZXRUeXBlSUQo
KTsKIAotV0tfRVhQT1JUIFdLSW50ZW50RGF0YVJlZiBXS0ludGVudERhdGFDcmVhdGUoV0tEaWN0
aW9uYXJ5UmVmIGluaXREaWN0aW9uYXJ5KTsKLQogV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLSW50
ZW50RGF0YUNvcHlBY3Rpb24oV0tJbnRlbnREYXRhUmVmIGludGVudFJlZik7CiBXS19FWFBPUlQg
V0tTdHJpbmdSZWYgV0tJbnRlbnREYXRhQ29weVR5cGUoV0tJbnRlbnREYXRhUmVmIGludGVudFJl
Zik7CiBXS19FWFBPUlQgV0tVUkxSZWYgV0tJbnRlbnREYXRhQ29weVNlcnZpY2UoV0tJbnRlbnRE
YXRhUmVmIGludGVudFJlZik7CiBXS19FWFBPUlQgV0tBcnJheVJlZiBXS0ludGVudERhdGFDb3B5
U3VnZ2VzdGlvbnMoV0tJbnRlbnREYXRhUmVmIGludGVudFJlZik7Ci1XS19FWFBPUlQgV0tTdHJp
bmdSZWYgV0tJbnRlbnREYXRhQ29weUV4dHJhKFdLSW50ZW50RGF0YVJlZiBpbnRlbnRSZWYsIFdL
U3RyaW5nUmVmIGtleSk7CitXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tJbnRlbnREYXRhQ29weUV4
dHJhVmFsdWUoV0tJbnRlbnREYXRhUmVmIGludGVudFJlZiwgV0tTdHJpbmdSZWYga2V5KTsKIFdL
X0VYUE9SVCBXS0RpY3Rpb25hcnlSZWYgV0tJbnRlbnREYXRhQ29weUV4dHJhcyhXS0ludGVudERh
dGFSZWYgaW50ZW50UmVmKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfaW50ZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19pbnRlbnQuY3BwCmluZGV4IDg1NjE3OTMuLjVjMmIy
MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19pbnRl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19pbnRlbnQu
Y3BwCkBAIC0xNzEsNyArMTcxLDcgQEAgY29uc3QgY2hhciogZXdrX2ludGVudF9leHRyYV9nZXQo
Y29uc3QgRXdrX0ludGVudCogaW50ZW50LCBjb25zdCBjaGFyKiBrZXkpCiAgICAgRVdLX0lOVEVO
VF9XS19HRVRfT1JfUkVUVVJOKGludGVudCwgd2tJbnRlbnQsIDApOwogCiAgICAgV0tSZXRhaW5Q
dHI8V0tTdHJpbmdSZWY+IGtleVJlZiA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoa2V5KSk7Ci0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHdrVmFsdWUoQWRvcHRX
SywgV0tJbnRlbnREYXRhQ29weUV4dHJhKHdrSW50ZW50LCBrZXlSZWYuZ2V0KCkpKTsKKyAgICBX
S1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tWYWx1ZShBZG9wdFdLLCBXS0ludGVudERhdGFDb3B5
RXh0cmFWYWx1ZSh3a0ludGVudCwga2V5UmVmLmdldCgpKSk7CiAgICAgU3RyaW5nIHZhbHVlID0g
dG9JbXBsKHdrVmFsdWUuZ2V0KCkpLT5zdHJpbmcoKTsKICAgICBpZiAodmFsdWUuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJJbnRlbnREYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnRlbnRE
YXRhLmNwcAppbmRleCA5NjEyOGRiLi5hOWQyMTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViSW50ZW50RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkludGVudERhdGEuY3BwCkBAIC0zMCwxNiArMzAsMjkgQEAKIAogI2luY2x1ZGUgIklt
bXV0YWJsZUFycmF5LmgiCiAjaW5jbHVkZSAiSW1tdXRhYmxlRGljdGlvbmFyeS5oIgorI2luY2x1
ZGUgIldlYlByb2Nlc3NQcm94eS5oIgorI2luY2x1ZGUgIldlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5oIgogI2luY2x1ZGUgIldlYlN0cmluZy5oIgogI2luY2x1ZGUgIldlYlVSTC5oIgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAotV2ViSW50ZW50RGF0YTo6V2ViSW50ZW50RGF0YShjb25zdCBJbnRl
bnREYXRhJiBzdG9yZSkKK1dlYkludGVudERhdGE6OldlYkludGVudERhdGEoY29uc3QgSW50ZW50
RGF0YSYgc3RvcmUsIFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcykKICAgICA6IG1fc3RvcmUoc3Rv
cmUpCisgICAgLCBtX3Byb2Nlc3MocHJvY2VzcykKIHsKIH0KIAorV2ViSW50ZW50RGF0YTo6fldl
YkludGVudERhdGEoKQoreworICAgIC8vIFJlbW92ZSBNZXNzYWdlUG9ydENoYW5uZWxzIGZyb20g
V2ViUHJvY2Vzcy4KKyAgICBpZiAobV9wcm9jZXNzICYmICFtX3N0b3JlLm1lc3NhZ2VQb3J0cy5p
c0VtcHR5KCkpIHsKKyAgICAgICAgc2l6ZV90IG51bU1lc3NhZ2VQb3J0cyA9IG1fc3RvcmUubWVz
c2FnZVBvcnRzLnNpemUoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1NZXNz
YWdlUG9ydHM7ICsraSkKKyAgICAgICAgICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVBvcnRD
aGFubmVsKG1fc3RvcmUubWVzc2FnZVBvcnRzW2ldKTsKKyAgICB9Cit9CisKIFBhc3NSZWZQdHI8
V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlPiBXZWJJbnRlbnREYXRhOjpkYXRhKCkgY29uc3QKIHsK
ICAgICBWZWN0b3I8dWludDhfdD4gZGF0YUNvcHkgPSBtX3N0b3JlLmRhdGE7CkBAIC02Niw2ICs3
OSw3IEBAIFBhc3NSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4gV2ViSW50ZW50RGF0YTo6ZXh0
cmFzKCkgY29uc3QKICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3Ig
ZW5kID0gbV9zdG9yZS5leHRyYXMuZW5kKCk7CiAgICAgZm9yIChIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3N0b3JlLmV4dHJhcy5iZWdpbigpOyBpdCAhPSBl
bmQ7ICsraXQpCiAgICAgICAgIHdrRXh0cmFzLnNldChpdC0+Zmlyc3QsIFdlYlN0cmluZzo6Y3Jl
YXRlKGl0LT5zZWNvbmQpKTsKKwogICAgIHJldHVybiBJbW11dGFibGVEaWN0aW9uYXJ5OjphZG9w
dCh3a0V4dHJhcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJJbnRlbnREYXRhLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW50ZW50RGF0YS5o
CmluZGV4IGRlY2Y0YWUuLjlkNTlmOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJJbnRlbnREYXRhLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYklu
dGVudERhdGEuaApAQCAtMzAsMjEgKzMwLDI2IEBACiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIK
ICNpbmNsdWRlICJJbnRlbnREYXRhLmgiCi0jaW5jbHVkZSAiV2ViU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9LVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIEltbXV0YWJsZUFycmF5OworY2xh
c3MgSW1tdXRhYmxlRGljdGlvbmFyeTsKK2NsYXNzIFdlYlByb2Nlc3NQcm94eTsKK2NsYXNzIFdl
YlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKKwogY2xhc3MgV2ViSW50ZW50RGF0YSA6IHB1YmxpYyBB
UElPYmplY3QgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBUeXBlIEFQSVR5cGUgPSBUeXBl
SW50ZW50RGF0YTsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkludGVudERhdGE+IGNyZWF0
ZShjb25zdCBJbnRlbnREYXRhJiBzdG9yZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJJbnRl
bnREYXRhPiBjcmVhdGUoY29uc3QgSW50ZW50RGF0YSYgc3RvcmUsIFdlYlByb2Nlc3NQcm94eSog
cHJvY2VzcykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViSW50ZW50RGF0
YShzdG9yZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkludGVudERhdGEoc3Rv
cmUsIHByb2Nlc3MpKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5XZWJJbnRlbnREYXRhKCkgeyB9
CisgICAgdmlydHVhbCB+V2ViSW50ZW50RGF0YSgpOwogCiAgICAgY29uc3QgU3RyaW5nJiBhY3Rp
b24oKSBjb25zdCB7IHJldHVybiBtX3N0b3JlLmFjdGlvbjsgfQogICAgIGNvbnN0IFN0cmluZyYg
cGF5bG9hZFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3N0b3JlLnR5cGU7IH0KQEAgLTU3LDExICs2
MiwxMiBAQCBwdWJsaWM6CiAgICAgY29uc3QgSW50ZW50RGF0YSYgc3RvcmUoKSBjb25zdCB7IHJl
dHVybiBtX3N0b3JlOyB9CiAKIHByaXZhdGU6Ci0gICAgV2ViSW50ZW50RGF0YShjb25zdCBJbnRl
bnREYXRhJik7CisgICAgV2ViSW50ZW50RGF0YShjb25zdCBJbnRlbnREYXRhJiwgV2ViUHJvY2Vz
c1Byb3h5Kik7CiAKICAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIEFQSVR5
cGU7IH0KIAogICAgIEludGVudERhdGEgbV9zdG9yZTsKKyAgICBXZWJQcm9jZXNzUHJveHkqIG1f
cHJvY2VzczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBmZDBjMGVhLi42N2UzY2VmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMjE5MSw3ICsyMTkxLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZSh1aW50NjRfdCBmcmFt
ZUlELCBjb25zdCBJbnRlbnREYXRhJgogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gcHJvY2Vz
cygpLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKIAotICAg
IFJlZlB0cjxXZWJJbnRlbnREYXRhPiB3ZWJJbnRlbnREYXRhID0gV2ViSW50ZW50RGF0YTo6Y3Jl
YXRlKGludGVudERhdGEpOworICAgIFJlZlB0cjxXZWJJbnRlbnREYXRhPiB3ZWJJbnRlbnREYXRh
ID0gV2ViSW50ZW50RGF0YTo6Y3JlYXRlKGludGVudERhdGEsIHByb2Nlc3MoKSk7CiAgICAgbV9s
b2FkZXJDbGllbnQuZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKHRoaXMsIGZyYW1lLCB3ZWJJbnRl
bnREYXRhLmdldCgpLCB1c2VyRGF0YS5nZXQoKSk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggMWZkZDM5Yy4uNjVkMzAyNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTE5
Nyw2ICsxOTcsMTYgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlbW92ZVdlYlBhZ2UodWludDY0
X3QgcGFnZUlEKQogICAgIG1fcGFnZU1hcC5yZW1vdmUocGFnZUlEKTsKIH0KIAorI2lmIEVOQUJM
RShXRUJfSU5URU5UUykKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZW1vdmVNZXNzYWdlUG9ydENo
YW5uZWwodWludDY0X3QgY2hhbm5lbElEKQoreworICAgIGlmICghaXNWYWxpZCgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpSZW1vdmVNZXNzYWdl
UG9ydENoYW5uZWwoY2hhbm5lbElEKSwgMCk7Cit9CisjZW5kaWYKKwogV2ViQmFja0ZvcndhcmRM
aXN0SXRlbSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJCYWNrRm9yd2FyZEl0ZW0odWludDY0X3QgaXRl
bUlEKSBjb25zdAogewogICAgIHJldHVybiBtX2JhY2tGb3J3YXJkTGlzdEl0ZW1NYXAuZ2V0KGl0
ZW1JRCkuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgK
aW5kZXggMDYyMmE0Yi4uNzkyYjAxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuaApAQCAtODcsNiArODcsMTAgQEAgcHVibGljOgogICAgIHZvaWQgYWRkRXhp
c3RpbmdXZWJQYWdlKFdlYlBhZ2VQcm94eSosIHVpbnQ2NF90IHBhZ2VJRCk7CiAgICAgdm9pZCBy
ZW1vdmVXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCk7CiAKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMp
CisgICAgdm9pZCByZW1vdmVNZXNzYWdlUG9ydENoYW5uZWwodWludDY0X3QgY2hhbm5lbElEKTsK
KyNlbmRpZgorCiAgICAgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogd2ViQmFja0ZvcndhcmRJdGVt
KHVpbnQ2NF90IGl0ZW1JRCkgY29uc3Q7CiAKICAgICBSZXNwb25zaXZlbmVzc1RpbWVyKiByZXNw
b25zaXZlbmVzc1RpbWVyKCkgeyByZXR1cm4gJm1fcmVzcG9uc2l2ZW5lc3NUaW1lcjsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZUFQSUNhc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVBUElDYXN0LmgKaW5kZXggMzM1NWQwOC4uMDE4ZWY3OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZUFQSUNhc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlQVBJQ2FzdC5oCkBAIC00Niw2ICs0Niw3IEBAIGNsYXNzIEluamVj
dGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0OwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2Fy
ZExpc3RJdGVtOwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb247CiBjbGFz
cyBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ7CitjbGFzcyBJbmplY3RlZEJ1bmRsZUludGVu
dDsKIGNsYXNzIEluamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdDsKIGNsYXNzIEluamVjdGVkQnVu
ZGxlTmF2aWdhdGlvbkFjdGlvbjsKIGNsYXNzIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTsKQEAg
LTY0LDYgKzY1LDcgQEAgV0tfQUREX0FQSV9NQVBQSU5HKFdLQnVuZGxlRE9NV2luZG93RXh0ZW5z
aW9uUmVmLCBJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2kKIFdLX0FERF9BUElfTUFQUElO
RyhXS0J1bmRsZUZyYW1lUmVmLCBXZWJGcmFtZSkKIFdLX0FERF9BUElfTUFQUElORyhXS0J1bmRs
ZUhpdFRlc3RSZXN1bHRSZWYsIEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdCkKIFdLX0FERF9B
UElfTUFQUElORyhXS0J1bmRsZUluc3BlY3RvclJlZiwgV2ViSW5zcGVjdG9yKQorV0tfQUREX0FQ
SV9NQVBQSU5HKFdLQnVuZGxlSW50ZW50UmVmLCBJbmplY3RlZEJ1bmRsZUludGVudCkKIFdLX0FE
RF9BUElfTUFQUElORyhXS0J1bmRsZUludGVudFJlcXVlc3RSZWYsIEluamVjdGVkQnVuZGxlSW50
ZW50UmVxdWVzdCkKIFdLX0FERF9BUElfTUFQUElORyhXS0J1bmRsZU5hdmlnYXRpb25BY3Rpb25S
ZWYsIEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbikKIFdLX0FERF9BUElfTUFQUElORyhX
S0J1bmRsZU5vZGVIYW5kbGVSZWYsIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVJbnRlbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZUludGVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uZGY3NWM1ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnQuY3BwCkBAIC0wLDAgKzEsMTQwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0tC
dW5kbGVJbnRlbnQuaCIKKworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyNpbmNsdWRlICJJbW11
dGFibGVBcnJheS5oIgorI2luY2x1ZGUgIkltbXV0YWJsZURpY3Rpb25hcnkuaCIKKyNpbmNsdWRl
ICJJbmplY3RlZEJ1bmRsZUludGVudC5oIgorI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1
ZGUgIldLQnVuZGxlQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLRGljdGlvbmFyeS5oIgorI2luY2x1
ZGUgIldLU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisj
ZW5kaWYKKworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKyNlbmRpZgorCitXS1R5cGVJRCBXS0J1bmRsZUlu
dGVudEdldFR5cGVJRCgpCit7CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorICAgIHJldHVybiB0
b0FQSShJbmplY3RlZEJ1bmRsZUludGVudDo6QVBJVHlwZSk7CisjZWxzZQorICAgIHJldHVybiAw
OworI2VuZGlmCit9CisKK1dLQnVuZGxlSW50ZW50UmVmIFdLQnVuZGxlSW50ZW50Q3JlYXRlKFdL
RGljdGlvbmFyeVJlZiBpbml0RGljdGlvbmFyeVJlZikKK3sKKyNpZiBFTkFCTEUoV0VCX0lOVEVO
VFMpCisgICAgV0tTdHJpbmdSZWYgYWN0aW9uID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdL
RGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkoaW5pdERpY3Rpb25hcnlSZWYsIFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJhY3Rpb24iKSkpOworICAgIEFTU0VSVChhY3Rpb24pOworICAgIFdL
U3RyaW5nUmVmIHR5cGUgPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tEaWN0aW9uYXJ5R2V0
SXRlbUZvcktleShpbml0RGljdGlvbmFyeVJlZiwgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoInR5cGUiKSkpOworICAgIEFTU0VSVCh0eXBlKTsKKyAgICBXS1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZVJlZiBkYXRhID0gc3RhdGljX2Nhc3Q8V0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWY+KFdL
RGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkoaW5pdERpY3Rpb25hcnlSZWYsIFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJkYXRhIikpKTsKKyAgICBNZXNzYWdlUG9ydEFycmF5IGR1bW15UG9y
dHM7CisgICAgRXhjZXB0aW9uQ29kZSBlYzsKKworICAgIFJlZlB0cjxJbnRlbnQ+IGNvcmVJbnRl
bnQgPSBJbnRlbnQ6OmNyZWF0ZSh0b0ltcGwoYWN0aW9uKS0+c3RyaW5nKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvSW1wbCh0eXBlKS0+c3RyaW5n
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEg
PyBzdGF0aWNfY2FzdDxTZXJpYWxpemVkU2NyaXB0VmFsdWUqPih0b0ltcGwoZGF0YSktPmludGVy
bmFsUmVwcmVzZW50YXRpb24oKSkgOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkdW1teVBvcnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlYyk7CisKKyAgICByZXR1cm4gdG9BUEkoSW5qZWN0ZWRCdW5k
bGVJbnRlbnQ6OmNyZWF0ZShjb3JlSW50ZW50LmdldCgpKS5sZWFrUmVmKCkpOworI2Vsc2UKKyAg
ICByZXR1cm4gMDsKKyNlbmRpZgorfQorCitXS1N0cmluZ1JlZiBXS0J1bmRsZUludGVudENvcHlB
Y3Rpb24oV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmKQoreworI2lmIEVOQUJMRShXRUJfSU5U
RU5UUykKKyAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKGludGVudFJlZiktPmFjdGlvbigp
KTsKKyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KKworV0tTdHJpbmdSZWYgV0tCdW5k
bGVJbnRlbnRDb3B5VHlwZShXS0J1bmRsZUludGVudFJlZiBpbnRlbnRSZWYpCit7CisjaWYgRU5B
QkxFKFdFQl9JTlRFTlRTKQorICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwoaW50ZW50UmVm
KS0+cGF5bG9hZFR5cGUoKSk7CisjZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCit9CisKK1dL
VVJMUmVmIFdLQnVuZGxlSW50ZW50Q29weVNlcnZpY2UoV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50
UmVmKQoreworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICByZXR1cm4gdG9Db3BpZWRVUkxB
UEkodG9JbXBsKGludGVudFJlZiktPnNlcnZpY2UoKSk7CisjZWxzZQorICAgIHJldHVybiAwOwor
I2VuZGlmCit9CisKK1dLQXJyYXlSZWYgV0tCdW5kbGVJbnRlbnRDb3B5U3VnZ2VzdGlvbnMoV0tC
dW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmKQoreworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAg
ICByZXR1cm4gdG9BUEkodG9JbXBsKGludGVudFJlZiktPnN1Z2dlc3Rpb25zKCkubGVha1JlZigp
KTsKKyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KKworV0tTdHJpbmdSZWYgV0tCdW5k
bGVJbnRlbnRDb3B5RXh0cmFWYWx1ZShXS0J1bmRsZUludGVudFJlZiBpbnRlbnRSZWYsIFdLU3Ry
aW5nUmVmIGtleSkKK3sKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgcmV0dXJuIHRvQ29w
aWVkQVBJKHRvSW1wbChpbnRlbnRSZWYpLT5leHRyYSh0b1dURlN0cmluZyhrZXkpKSk7CisjZWxz
ZQorICAgIHJldHVybiAwOworI2VuZGlmCit9CisKK1dLRGljdGlvbmFyeVJlZiBXS0J1bmRsZUlu
dGVudENvcHlFeHRyYXMoV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmKQoreworI2lmIEVOQUJM
RShXRUJfSU5URU5UUykKKyAgICByZXR1cm4gdG9BUEkodG9JbXBsKGludGVudFJlZiktPmV4dHJh
cygpLmxlYWtSZWYoKSk7CisjZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCit9CisKK3NpemVf
dCBXS0J1bmRsZUludGVudE1lc3NhZ2VQb3J0Q291bnQoV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50
UmVmKQoreworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICBNZXNzYWdlUG9ydENoYW5uZWxB
cnJheSogbWVzc2FnZVBvcnRzID0gdG9JbXBsKGludGVudFJlZiktPmNvcmVJbnRlbnQoKS0+bWVz
c2FnZVBvcnRzKCk7CisKKyAgICByZXR1cm4gbWVzc2FnZVBvcnRzID8gbWVzc2FnZVBvcnRzLT5z
aXplKCkgOiAwOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUlu
dGVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZUludGVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlNGI1
MDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50LmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBXS0J1bmRsZUludGVudF9oCisjZGVmaW5lIFdLQnVuZGxlSW50
ZW50X2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1
cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworV0tfRVhQT1JUIFdLVHlwZUlEIFdLQnVuZGxlSW50
ZW50R2V0VHlwZUlEKCk7CisKK1dLX0VYUE9SVCBXS0J1bmRsZUludGVudFJlZiBXS0J1bmRsZUlu
dGVudENyZWF0ZShXS0RpY3Rpb25hcnlSZWYgaW5pdERpY3Rpb25hcnkpOworCitXS19FWFBPUlQg
V0tTdHJpbmdSZWYgV0tCdW5kbGVJbnRlbnRDb3B5QWN0aW9uKFdLQnVuZGxlSW50ZW50UmVmIGlu
dGVudFJlZik7CitXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tCdW5kbGVJbnRlbnRDb3B5VHlwZShX
S0J1bmRsZUludGVudFJlZiBpbnRlbnRSZWYpOworV0tfRVhQT1JUIFdLVVJMUmVmIFdLQnVuZGxl
SW50ZW50Q29weVNlcnZpY2UoV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmKTsKK1dLX0VYUE9S
VCBXS0FycmF5UmVmIFdLQnVuZGxlSW50ZW50Q29weVN1Z2dlc3Rpb25zKFdLQnVuZGxlSW50ZW50
UmVmIGludGVudFJlZik7CitXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tCdW5kbGVJbnRlbnRDb3B5
RXh0cmFWYWx1ZShXS0J1bmRsZUludGVudFJlZiBpbnRlbnRSZWYsIFdLU3RyaW5nUmVmIGtleSk7
CitXS19FWFBPUlQgV0tEaWN0aW9uYXJ5UmVmIFdLQnVuZGxlSW50ZW50Q29weUV4dHJhcyhXS0J1
bmRsZUludGVudFJlZiBpbnRlbnRSZWYpOworV0tfRVhQT1JUIHNpemVfdCBXS0J1bmRsZUludGVu
dE1lc3NhZ2VQb3J0Q291bnQoV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmKTsKKworI2lmZGVm
IF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8vIFdLQnVuZGxlSW50ZW50X2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVJbnRlbnRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnRSZXF1ZXN0LmNwcAppbmRleCA4MWM5NWM2
Li5hNDc3MmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudFJlcXVlc3Qu
Y3BwCkBAIC0yNywxMCArMjcsMTAgQEAKICNpbmNsdWRlICJXS0J1bmRsZUludGVudFJlcXVlc3Qu
aCIKIAogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZUlu
dGVudC5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5oIgogI2luY2x1
ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLQnVuZGxlQVBJQ2FzdC5oIgotI2luY2x1ZGUg
IldlYkludGVudERhdGEuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKICNlbmRpZgpAQCAt
NDQsMTEgKzQ0LDExIEBAIFdLVHlwZUlEIFdLQnVuZGxlSW50ZW50UmVxdWVzdEdldFR5cGVJRCgp
CiAjZW5kaWYKIH0KIAotV0tJbnRlbnREYXRhUmVmIFdLQnVuZGxlSW50ZW50UmVxdWVzdENvcHlJ
bnRlbnREYXRhKFdLQnVuZGxlSW50ZW50UmVxdWVzdFJlZiByZXF1ZXN0UmVmKQorV0tCdW5kbGVJ
bnRlbnRSZWYgV0tCdW5kbGVJbnRlbnRSZXF1ZXN0Q29weUludGVudChXS0J1bmRsZUludGVudFJl
cXVlc3RSZWYgcmVxdWVzdFJlZikKIHsKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0gICAgUmVm
UHRyPFdlYkludGVudERhdGE+IHdlYkludGVudERhdGEgPSB0b0ltcGwocmVxdWVzdFJlZiktPmlu
dGVudCgpOwotICAgIHJldHVybiB0b0FQSSh3ZWJJbnRlbnREYXRhLnJlbGVhc2UoKS5sZWFrUmVm
KCkpOworICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZUludGVudD4gd2ViSW50ZW50ID0gdG9JbXBs
KHJlcXVlc3RSZWYpLT5pbnRlbnQoKTsKKyAgICByZXR1cm4gdG9BUEkod2ViSW50ZW50LnJlbGVh
c2UoKS5sZWFrUmVmKCkpOwogI2Vsc2UKICAgICByZXR1cm4gMDsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZUludGVudFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVJbnRlbnRSZXF1ZXN0LmgKaW5kZXggYjE4MTM2ZC4uMTA1YWZhNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZUludGVudFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50UmVxdWVzdC5oCkBAIC0zNCw3ICsz
NCw3IEBAIGV4dGVybiAiQyIgewogCiBXS19FWFBPUlQgV0tUeXBlSUQgV0tCdW5kbGVJbnRlbnRS
ZXF1ZXN0R2V0VHlwZUlEKCk7CiAKLVdLX0VYUE9SVCBXS0ludGVudERhdGFSZWYgV0tCdW5kbGVJ
bnRlbnRSZXF1ZXN0Q29weUludGVudERhdGEoV0tCdW5kbGVJbnRlbnRSZXF1ZXN0UmVmIHJlcXVl
c3QpOworV0tfRVhQT1JUIFdLQnVuZGxlSW50ZW50UmVmIFdLQnVuZGxlSW50ZW50UmVxdWVzdENv
cHlJbnRlbnQoV0tCdW5kbGVJbnRlbnRSZXF1ZXN0UmVmIHJlcXVlc3QpOwogCiBXS19FWFBPUlQg
dm9pZCBXS0J1bmRsZUludGVudFJlcXVlc3RQb3N0UmVzdWx0KFdLQnVuZGxlSW50ZW50UmVxdWVz
dFJlZiByZXF1ZXN0LCBXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiBzZXJpYWxpemVkRGF0YSk7
CiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZUludGVudFJlcXVlc3RQb3N0RmFpbHVyZShXS0J1bmRs
ZUludGVudFJlcXVlc3RSZWYgcmVxdWVzdCwgV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYgc2Vy
aWFsaXplZERhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCmluZGV4IDJhZTIyMzcu
LjgwMjQxY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKQEAgLTQ3LDcgKzQ3LDcg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KIAogI2lmIEVOQUJMRShXRUJfSU5URU5UUykK
LSNpbmNsdWRlICJXZWJJbnRlbnREYXRhLmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVJbnRl
bnQuaCIKICNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwpAQCAtMzEwLDEwICszMTAs
MTAgQEAgZG91YmxlIFdLQnVuZGxlUGFnZUdldEJhY2tpbmdTY2FsZUZhY3RvcihXS0J1bmRsZVBh
Z2VSZWYgcGFnZVJlZikKICAgICByZXR1cm4gdG9JbXBsKHBhZ2VSZWYpLT5kZXZpY2VTY2FsZUZh
Y3RvcigpOwogfQogCi12b2lkIFdLQnVuZGxlUGFnZURlbGl2ZXJJbnRlbnRUb0ZyYW1lKFdLQnVu
ZGxlUGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVmLCBXS0ludGVudERh
dGFSZWYgaW50ZW50UmVmKQordm9pZCBXS0J1bmRsZVBhZ2VEZWxpdmVySW50ZW50VG9GcmFtZShX
S0J1bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZVJlZiwgV0tCdW5k
bGVJbnRlbnRSZWYgaW50ZW50UmVmKQogewogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSAgICB0
b0ltcGwocGFnZVJlZiktPmRlbGl2ZXJJbnRlbnRUb0ZyYW1lKHRvSW1wbChmcmFtZVJlZiktPmZy
YW1lSUQoKSwgdG9JbXBsKGludGVudFJlZiktPnN0b3JlKCkpOworICAgIHRvSW1wbChwYWdlUmVm
KS0+ZGVsaXZlckNvcmVJbnRlbnRUb0ZyYW1lKHRvSW1wbChmcmFtZVJlZiktPmZyYW1lSUQoKSwg
dG9JbXBsKGludGVudFJlZiktPmNvcmVJbnRlbnQoKSk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZVBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVQYWdlLmgKaW5kZXggYWE4NjA5Mi4uNmYxOGIzNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlUGFnZS5oCkBAIC00MDQsNyArNDA0LDcgQEAgV0tfRVhQT1JUIFdLSW1hZ2VSZWYgV0tCdW5k
bGVQYWdlQ3JlYXRlU2NhbGVkU25hcHNob3RJbkRvY3VtZW50Q29vcmRpbmF0ZXMoV0tCdW4KIAog
V0tfRVhQT1JUIGRvdWJsZSBXS0J1bmRsZVBhZ2VHZXRCYWNraW5nU2NhbGVGYWN0b3IoV0tCdW5k
bGVQYWdlUmVmIHBhZ2UpOwogCi1XS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VEZWxpdmVySW50
ZW50VG9GcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwg
V0tJbnRlbnREYXRhUmVmIGludGVudCk7CitXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VEZWxp
dmVySW50ZW50VG9GcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBm
cmFtZSwgV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50KTsKIAogI2lmIGRlZmluZWQoRU5BQkxFX0lO
U1BFQ1RPUikgJiYgRU5BQkxFX0lOU1BFQ1RPUgogV0tfRVhQT1JUIFdLQnVuZGxlSW5zcGVjdG9y
UmVmIFdLQnVuZGxlUGFnZUdldEluc3BlY3RvcihXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlSW50ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmI3YWI1ODYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50LmNwcApAQCAtMCwwICsxLDk4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
SW5qZWN0ZWRCdW5kbGVJbnRlbnQuaCIKKworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKworI2lu
Y2x1ZGUgIkltbXV0YWJsZUFycmF5LmgiCisjaW5jbHVkZSAiSW1tdXRhYmxlRGljdGlvbmFyeS5o
IgorI2luY2x1ZGUgIldlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIldlYlN0
cmluZy5oIgorI2luY2x1ZGUgIldlYlVSTC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK1Bhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVJbnRlbnQ+
IEluamVjdGVkQnVuZGxlSW50ZW50OjpjcmVhdGUoV2ViQ29yZTo6SW50ZW50KiBpbnRlbnQpCit7
CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbmplY3RlZEJ1bmRsZUludGVudChpbnRlbnQpKTsK
K30KKworSW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OkluamVjdGVkQnVuZGxlSW50ZW50KFdlYkNvcmU6
OkludGVudCogaW50ZW50KQorICAgIDogbV9pbnRlbnQoaW50ZW50KQoreworfQorCitTdHJpbmcg
SW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OmFjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW50
ZW50LT5hY3Rpb24oKTsKK30KKworU3RyaW5nIEluamVjdGVkQnVuZGxlSW50ZW50OjpwYXlsb2Fk
VHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW50ZW50LT50eXBlKCk7Cit9CisKK1dlYkNv
cmU6OktVUkwgSW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OnNlcnZpY2UoKSBjb25zdAoreworICAgIHJl
dHVybiBtX2ludGVudC0+c2VydmljZSgpOworfQorCitQYXNzUmVmUHRyPFdlYlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gSW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OmRhdGEoKSBjb25zdAoreworICAgIHJl
dHVybiBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShtX2ludGVudC0+ZGF0YSgpKTsK
K30KKworU3RyaW5nIEluamVjdGVkQnVuZGxlSW50ZW50OjpleHRyYShjb25zdCBTdHJpbmcmIGtl
eSkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbnRlbnQtPmV4dHJhcygpLmdldChrZXkpOworfQor
CitQYXNzUmVmUHRyPEltbXV0YWJsZURpY3Rpb25hcnk+IEluamVjdGVkQnVuZGxlSW50ZW50Ojpl
eHRyYXMoKSBjb25zdAoreworICAgIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBleHRy
YXMgPSBtX2ludGVudC0+ZXh0cmFzKCk7CisgICAgSW1tdXRhYmxlRGljdGlvbmFyeTo6TWFwVHlw
ZSB3a0V4dHJhczsKKyAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3Ig
ZW5kID0gZXh0cmFzLmVuZCgpOworICAgIGZvciAoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gZXh0cmFzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAg
ICAgd2tFeHRyYXMuc2V0KGl0LT5maXJzdCwgV2ViU3RyaW5nOjpjcmVhdGUoaXQtPnNlY29uZCkp
OworICAgIHJldHVybiBJbW11dGFibGVEaWN0aW9uYXJ5OjphZG9wdCh3a0V4dHJhcyk7Cit9CisK
K1Bhc3NSZWZQdHI8SW1tdXRhYmxlQXJyYXk+IEluamVjdGVkQnVuZGxlSW50ZW50OjpzdWdnZXN0
aW9ucygpIGNvbnN0Cit7CisgICAgY29uc3QgVmVjdG9yPEtVUkw+JiBzdWdnZXN0aW9ucyA9IG1f
aW50ZW50LT5zdWdnZXN0aW9ucygpOworICAgIGNvbnN0IHNpemVfdCBudW1TdWdnZXN0aW9ucyA9
IHN1Z2dlc3Rpb25zLnNpemUoKTsKKyAgICBWZWN0b3I8UmVmUHRyPEFQSU9iamVjdD4gPiB3a1N1
Z2dlc3Rpb25zKG51bVN1Z2dlc3Rpb25zKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bnVtU3VnZ2VzdGlvbnM7ICsraSkKKyAgICAgICAgd2tTdWdnZXN0aW9uc1tpXSA9IFdlYlVSTDo6
Y3JlYXRlKHN1Z2dlc3Rpb25zW2ldKTsKKyAgICByZXR1cm4gSW1tdXRhYmxlQXJyYXk6OmFkb3B0
KHdrU3VnZ2VzdGlvbnMpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IEVOQUJMRShXRUJfSU5URU5UUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnQuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnQuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZDNmMDZjCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUlu
dGVudC5oCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwg
Q29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW5q
ZWN0ZWRCdW5kbGVJbnRlbnRfaAorI2RlZmluZSBJbmplY3RlZEJ1bmRsZUludGVudF9oCisKKyNp
ZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL0ludGVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgorI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBJbW11dGFibGVBcnJh
eTsKK2NsYXNzIEltbXV0YWJsZURpY3Rpb25hcnk7CitjbGFzcyBXZWJTZXJpYWxpemVkU2NyaXB0
VmFsdWU7CisKK2NsYXNzIEluamVjdGVkQnVuZGxlSW50ZW50IDogcHVibGljIEFQSU9iamVjdCB7
CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IFR5cGUgQVBJVHlwZSA9IFR5cGVCdW5kbGVJbnRl
bnQ7CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZUludGVudD4gY3JlYXRl
KFdlYkNvcmU6OkludGVudCopOworCisgICAgU3RyaW5nIGFjdGlvbigpIGNvbnN0OworICAgIFN0
cmluZyBwYXlsb2FkVHlwZSgpIGNvbnN0OworICAgIFdlYkNvcmU6OktVUkwgc2VydmljZSgpIGNv
bnN0OworICAgIFBhc3NSZWZQdHI8V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhKCkgY29u
c3Q7CisgICAgU3RyaW5nIGV4dHJhKGNvbnN0IFN0cmluZyYga2V5KSBjb25zdDsKKyAgICBQYXNz
UmVmUHRyPEltbXV0YWJsZURpY3Rpb25hcnk+IGV4dHJhcygpIGNvbnN0OworICAgIFBhc3NSZWZQ
dHI8SW1tdXRhYmxlQXJyYXk+IHN1Z2dlc3Rpb25zKCkgY29uc3Q7CisKKyAgICBXZWJDb3JlOjpJ
bnRlbnQqIGNvcmVJbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2ludGVudC5nZXQoKTsgfQorCitw
cml2YXRlOgorICAgIGV4cGxpY2l0IEluamVjdGVkQnVuZGxlSW50ZW50KFdlYkNvcmU6OkludGVu
dCopOworCisgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBBUElUeXBlOyB9
CisKKyAgICBSZWZQdHI8V2ViQ29yZTo6SW50ZW50PiBtX2ludGVudDsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9JTlRFTlRTKQorCisjZW5kaWYg
Ly8gSW5qZWN0ZWRCdW5kbGVJbnRlbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUlu
dGVudFJlcXVlc3QuY3BwCmluZGV4IDVjY2IxOWMuLmVhYzBiODNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50
UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5j
bHVkZSAiSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0LmgiCiAKICNpZiBFTkFCTEUoV0VCX0lO
VEVOVFMpCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVJbnRlbnQuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL0ludGVudFJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUu
aD4KIApAQCAtNTQsOSArNTUsOSBAQCB2b2lkIEluamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdDo6
cG9zdEZhaWx1cmUoV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlKiBkYXRhKQogICAgIG1faW50ZW50
UmVxdWVzdC0+cG9zdEZhaWx1cmUoc3RhdGljX2Nhc3Q8U2VyaWFsaXplZFNjcmlwdFZhbHVlKj4o
ZGF0YS0+aW50ZXJuYWxSZXByZXNlbnRhdGlvbigpKSk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViSW50
ZW50RGF0YT4gSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0OjppbnRlbnQoKSBjb25zdAorUGFz
c1JlZlB0cjxJbmplY3RlZEJ1bmRsZUludGVudD4gSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0
OjppbnRlbnQoKSBjb25zdAogewotICAgIHJldHVybiBXZWJJbnRlbnREYXRhOjpjcmVhdGUoSW50
ZW50RGF0YShtX2ludGVudFJlcXVlc3QtPmludGVudCgpKSk7CisgICAgcmV0dXJuIEluamVjdGVk
QnVuZGxlSW50ZW50OjpjcmVhdGUobV9pbnRlbnRSZXF1ZXN0LT5pbnRlbnQoKSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1
ZXN0LmgKaW5kZXggYjU4NzBkOS4uMzNhMzE5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlSW50ZW50UmVxdWVzdC5oCkBAIC0yOSw3ICsyOSw2IEBACiAjaWYgRU5BQkxFKFdFQl9JTlRF
TlRTKQogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCi0jaW5jbHVkZSAiV2ViSW50ZW50RGF0YS5o
IgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC00MCw2ICszOSw3IEBAIGNsYXNzIEludGVudFJl
cXVlc3Q7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBJbmplY3RlZEJ1bmRsZUludGVu
dDsKIGNsYXNzIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIAogY2xhc3MgSW5qZWN0ZWRCdW5k
bGVJbnRlbnRSZXF1ZXN0IDogcHVibGljIEFQSU9iamVjdCB7CkBAIC01MSw3ICs1MSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHBvc3RSZXN1bHQoV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlKik7CiAg
ICAgdm9pZCBwb3N0RmFpbHVyZShXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUqKTsKIAotICAgIFBh
c3NSZWZQdHI8V2ViSW50ZW50RGF0YT4gaW50ZW50KCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxJ
bmplY3RlZEJ1bmRsZUludGVudD4gaW50ZW50KCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgZXhw
bGljaXQgSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0KFdlYkNvcmU6OkludGVudFJlcXVlc3Qq
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFt
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmlu
ZGV4IGYzNmZjMDIuLmQ2ZGRjYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtNjMsNiArNjMsOCBAQAogI2luY2x1ZGUgIkludGVudERh
dGEuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0RPTVdpbmRvd0ludGVudHMuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0RlbGl2ZXJlZEludGVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSW50ZW50Lmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oPgogI2VuZGlmCiAK
ICNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFdJTikKQEAgLTI0NiwxMyArMjQ4LDM5IEBA
IHZvaWQgV2ViRnJhbWU6OmNvbnZlcnRIYW5kbGVUb0Rvd25sb2FkKFJlc291cmNlSGFuZGxlKiBo
YW5kbGUsIGNvbnN0IFJlc291cmNlUmVxCiB2b2lkIFdlYkZyYW1lOjpkZWxpdmVySW50ZW50KGNv
bnN0IEludGVudERhdGEmIGludGVudERhdGEpCiB7CiAgICAgT3duUHRyPERlbGl2ZXJlZEludGVu
dENsaWVudD4gZHVtbXlDbGllbnQ7Ci0gICAgT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IGR1bW15
UG9ydHM7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGFDb3B5ID0gaW50ZW50RGF0YS5kYXRhOwor
CisgICAgT3duUHRyPFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVsczsK
KyAgICBpZiAoIWludGVudERhdGEubWVzc2FnZVBvcnRzLmlzRW1wdHkoKSkgeworICAgICAgICBj
aGFubmVscyA9IGFkb3B0UHRyKG5ldyBXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxBcnJheShp
bnRlbnREYXRhLm1lc3NhZ2VQb3J0cy5zaXplKCkpKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBpbnRlbnREYXRhLm1lc3NhZ2VQb3J0cy5zaXplKCk7ICsraSkKKyAgICAgICAgICAg
ICgqY2hhbm5lbHMpW2ldID0gTWVzc2FnZVBvcnRDaGFubmVsOjpjcmVhdGUoV2ViUHJvY2Vzczo6
c2hhcmVkKCkubWVzc2FnZVBvcnRDaGFubmVsKGludGVudERhdGEubWVzc2FnZVBvcnRzLmF0KGkp
KSk7CisgICAgfQorICAgIE93blB0cjxXZWJDb3JlOjpNZXNzYWdlUG9ydEFycmF5PiBtZXNzYWdl
UG9ydHMgPSBXZWJDb3JlOjpNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cygqbV9jb3JlRnJhbWUt
PmRvbVdpbmRvdygpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGNoYW5uZWxzLnJlbGVhc2Uo
KSk7CisKICAgICBSZWZQdHI8RGVsaXZlcmVkSW50ZW50PiBkZWxpdmVyZWRJbnRlbnQgPSBEZWxp
dmVyZWRJbnRlbnQ6OmNyZWF0ZShtX2NvcmVGcmFtZSwgZHVtbXlDbGllbnQucmVsZWFzZSgpLCBp
bnRlbnREYXRhLmFjdGlvbiwgaW50ZW50RGF0YS50eXBlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6YWRvcHQoZGF0YUNvcHkpLCBkdW1teVBvcnRzLnJlbGVhc2UoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0KGRhdGFDb3B5KSwgbWVzc2Fn
ZVBvcnRzLnJlbGVhc2UoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlbnREYXRhLmV4dHJhcyk7CiAgICAg
V2ViQ29yZTo6RE9NV2luZG93SW50ZW50czo6ZnJvbShtX2NvcmVGcmFtZS0+ZG9tV2luZG93KCkp
LT5kZWxpdmVyKGRlbGl2ZXJlZEludGVudC5yZWxlYXNlKCkpOwogfQorCit2b2lkIFdlYkZyYW1l
OjpkZWxpdmVySW50ZW50KEludGVudCogaW50ZW50KQoreworICAgIE93blB0cjxEZWxpdmVyZWRJ
bnRlbnRDbGllbnQ+IGR1bW15Q2xpZW50OworCisgICAgT3duUHRyPFdlYkNvcmU6Ok1lc3NhZ2VQ
b3J0Q2hhbm5lbEFycmF5PiBjaGFubmVsczsKKyAgICBXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5u
ZWxBcnJheSogb3JpZ0NoYW5uZWxzID0gaW50ZW50LT5tZXNzYWdlUG9ydHMoKTsKKyAgICBpZiAo
b3JpZ0NoYW5uZWxzICYmIG9yaWdDaGFubmVscy0+c2l6ZSgpKSB7CisgICAgICAgIGNoYW5uZWxz
ID0gYWRvcHRQdHIobmV3IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5KG9yaWdDaGFu
bmVscy0+c2l6ZSgpKSk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb3JpZ0NoYW5u
ZWxzLT5zaXplKCk7ICsraSkKKyAgICAgICAgICAgICgqY2hhbm5lbHMpW2ldID0gb3JpZ0NoYW5u
ZWxzLT5hdChpKS5yZWxlYXNlKCk7CisgICAgfQorICAgIE93blB0cjxXZWJDb3JlOjpNZXNzYWdl
UG9ydEFycmF5PiBtZXNzYWdlUG9ydHMgPSBXZWJDb3JlOjpNZXNzYWdlUG9ydDo6ZW50YW5nbGVQ
b3J0cygqbV9jb3JlRnJhbWUtPmRvbVdpbmRvdygpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCks
IGNoYW5uZWxzLnJlbGVhc2UoKSk7CisKKyAgICBSZWZQdHI8RGVsaXZlcmVkSW50ZW50PiBkZWxp
dmVyZWRJbnRlbnQgPSBEZWxpdmVyZWRJbnRlbnQ6OmNyZWF0ZShtX2NvcmVGcmFtZSwgZHVtbXlD
bGllbnQucmVsZWFzZSgpLCBpbnRlbnQtPmFjdGlvbigpLCBpbnRlbnQtPnR5cGUoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnRlbnQtPmRhdGEoKSwgbWVzc2FnZVBvcnRzLnJlbGVhc2UoKSwgaW50ZW50LT5l
eHRyYXMoKSk7CisgICAgV2ViQ29yZTo6RE9NV2luZG93SW50ZW50czo6ZnJvbShtX2NvcmVGcmFt
ZS0+ZG9tV2luZG93KCkpLT5kZWxpdmVyKGRlbGl2ZXJlZEludGVudC5yZWxlYXNlKCkpOworfQog
I2VuZGlmCiAKIFN0cmluZyBXZWJGcmFtZTo6c291cmNlKCkgY29uc3QgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCmluZGV4IGJkNmMwMzguLmVlYTA5Yjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCkBAIC00
Miw2ICs0Miw5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgRnJhbWU7CiAgICAg
Y2xhc3MgSFRNTEZyYW1lT3duZXJFbGVtZW50OworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAg
ICBjbGFzcyBJbnRlbnQ7CisjZW5kaWYKICAgICBjbGFzcyBLVVJMOwogfQogCkBAIC04MSw2ICs4
NCw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKICAgICB2b2lkIGRlbGl2
ZXJJbnRlbnQoY29uc3QgSW50ZW50RGF0YSYpOworICAgIHZvaWQgZGVsaXZlckludGVudChXZWJD
b3JlOjpJbnRlbnQqKTsKICNlbmRpZgogCiAgICAgU3RyaW5nIHNvdXJjZSgpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDU2NTAw
N2YuLjkzOWU4N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKQEAgLTEzNiw2ICsxMzYsNyBAQAogCiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQog
I2luY2x1ZGUgIkludGVudERhdGEuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ludGVudC5oPgogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoVklCUkFUSU9OKQpAQCAtMTk2Niw2ICsxOTY3LDEyIEBAIHZvaWQg
V2ViUGFnZTo6ZGVsaXZlckludGVudFRvRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgSW50
ZW50RGF0YSYgaW50ZW50RGF0CiAKICAgICBmcmFtZS0+ZGVsaXZlckludGVudChpbnRlbnREYXRh
KTsKIH0KKwordm9pZCBXZWJQYWdlOjpkZWxpdmVyQ29yZUludGVudFRvRnJhbWUodWludDY0X3Qg
ZnJhbWVJRCwgSW50ZW50KiBjb3JlSW50ZW50KQoreworICAgIGlmIChXZWJGcmFtZSogZnJhbWUg
PSBXZWJQcm9jZXNzOjpzaGFyZWQoKS53ZWJGcmFtZShmcmFtZUlEKSkKKyAgICAgICAgZnJhbWUt
PmRlbGl2ZXJJbnRlbnQoY29yZUludGVudCk7Cit9CiAjZW5kaWYKIAogdm9pZCBXZWJQYWdlOjpw
cmVmZXJlbmNlc0RpZENoYW5nZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDI1NmI3OWYu
LmVjZjdhYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aApAQCAtMTA2LDYgKzEwNiw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBGcmFt
ZTsKICAgICBjbGFzcyBGcmFtZVZpZXc7CiAgICAgY2xhc3MgSFRNTFBsdWdJbkVsZW1lbnQ7Cisj
aWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorICAgIGNsYXNzIEludGVudDsKKyNlbmRpZgogICAgIGNs
YXNzIEtleWJvYXJkRXZlbnQ7CiAgICAgY2xhc3MgUGFnZTsKICAgICBjbGFzcyBQcmludENvbnRl
eHQ7CkBAIC00NzgsNyArNDgxLDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VC
X0lOVEVOVFMpCi0gICAgdm9pZCBkZWxpdmVySW50ZW50VG9GcmFtZSh1aW50NjRfdCBmcmFtZUlE
LCBjb25zdCBJbnRlbnREYXRhJik7CisgICAgdm9pZCBkZWxpdmVyQ29yZUludGVudFRvRnJhbWUo
dWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6SW50ZW50Kik7CiAjZW5kaWYKIAogICAgIHZvaWQg
cmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KFdlYkNvcmU6OkZyYW1lKiwgY29uc3QgU3RyaW5nJik7
CkBAIC02NDAsNiArNjQzLDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb250ZXh0TWVudUhpZGRl
bigpIHsgbV9pc1Nob3dpbmdDb250ZXh0TWVudSA9IGZhbHNlOyB9CiAjZW5kaWYKIAorI2lmIEVO
QUJMRShXRUJfSU5URU5UUykKKyAgICB2b2lkIGRlbGl2ZXJJbnRlbnRUb0ZyYW1lKHVpbnQ2NF90
IGZyYW1lSUQsIGNvbnN0IEludGVudERhdGEmKTsKKyNlbmRpZgorCiAgICAgc3RhdGljIHZvaWQg
c2Nyb2xsKFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb24sIFdlYkNvcmU6
OlNjcm9sbEdyYW51bGFyaXR5KTsKICAgICBzdGF0aWMgdm9pZCBsb2dpY2FsU2Nyb2xsKFdlYkNv
cmU6OlBhZ2UqLCBXZWJDb3JlOjpTY3JvbGxMb2dpY2FsRGlyZWN0aW9uLCBXZWJDb3JlOjpTY3Jv
bGxHcmFudWxhcml0eSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
CmluZGV4IDZlYjhhYjdlLi4yN2U4YjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAKQEAgLTgwLDYgKzgwLDEwIEBACiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUmFuZG9tTnVtYmVyLmg+CiAKKyNpZiBFTkFCTEUoV0VCX0lOVEVO
VFMpCisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oPgorI2Vu
ZGlmCisKICNpZiBFTkFCTEUoTkVUV09SS19JTkZPKQogI2luY2x1ZGUgIldlYk5ldHdvcmtJbmZv
TWFuYWdlck1lc3NhZ2VzLmgiCiAjZW5kaWYKQEAgLTc5MSw2ICs3OTUsMjYgQEAgV2ViUGFnZUdy
b3VwUHJveHkqIFdlYlByb2Nlc3M6OndlYlBhZ2VHcm91cChjb25zdCBXZWJQYWdlR3JvdXBEYXRh
JiBwYWdlR3JvdXBEYXQKICAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQuZ2V0KCk7
CiB9CiAKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCit1aW50NjRfdCBXZWJQcm9jZXNzOjphZGRN
ZXNzYWdlUG9ydENoYW5uZWwoUGFzc1JlZlB0cjxQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbD4g
bWVzc2FnZVBvcnRDaGFubmVsKQoreworICAgIHN0YXRpYyB1aW50NjRfdCBjaGFubmVsSUQgPSAw
OworICAgIG1fbWVzc2FnZVBvcnRDaGFubmVscy5hZGQoKytjaGFubmVsSUQsIG1lc3NhZ2VQb3J0
Q2hhbm5lbCk7CisKKyAgICByZXR1cm4gY2hhbm5lbElEOworfQorCitQbGF0Zm9ybU1lc3NhZ2VQ
b3J0Q2hhbm5lbCogV2ViUHJvY2Vzczo6bWVzc2FnZVBvcnRDaGFubmVsKHVpbnQ2NF90IGNoYW5u
ZWxJRCkKK3sKKyAgICByZXR1cm4gbV9tZXNzYWdlUG9ydENoYW5uZWxzLmdldChjaGFubmVsSUQp
LmdldCgpOworfQorCit2b2lkIFdlYlByb2Nlc3M6OnJlbW92ZU1lc3NhZ2VQb3J0Q2hhbm5lbCh1
aW50NjRfdCBjaGFubmVsSUQpCit7CisgICAgbV9tZXNzYWdlUG9ydENoYW5uZWxzLnJlbW92ZShj
aGFubmVsSUQpOworfQorI2VuZGlmCisKIHN0YXRpYyBib29sIGNhblBsdWdpbkhhbmRsZVJlc3Bv
bnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIFN0cmluZyBwbHVn
aW5QYXRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCAwZDAwNWE0
Li5kM2RmMWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtNzgs
NiArNzgsOSBAQCBRVF9FTkRfTkFNRVNQQUNFCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xh
c3MgSW50U2l6ZTsKICAgICBjbGFzcyBQYWdlR3JvdXA7CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRT
KQorICAgIGNsYXNzIFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsOworI2VuZGlmCiAgICAgY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0OwogICAgIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiB9CkBAIC0x
MTIsNyArMTE1LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGNyZWF0ZVdlYlBhZ2UodWludDY0X3Qg
cGFnZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAgICAgdm9pZCByZW1v
dmVXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCk7CiAgICAgV2ViUGFnZSogZm9jdXNlZFdlYlBhZ2Uo
KSBjb25zdDsKLSAgICAKKworI2lmIEVOQUJMRShXRUJfSU5URU5UUykgCisgICAgdWludDY0X3Qg
YWRkTWVzc2FnZVBvcnRDaGFubmVsKFBhc3NSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1NZXNzYWdl
UG9ydENoYW5uZWw+KTsKKyAgICBXZWJDb3JlOjpQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbCog
bWVzc2FnZVBvcnRDaGFubmVsKHVpbnQ2NF90KTsKKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VQb3J0
Q2hhbm5lbCh1aW50NjRfdCk7CisjZW5kaWYKKwogICAgIEluamVjdGVkQnVuZGxlKiBpbmplY3Rl
ZEJ1bmRsZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5qZWN0ZWRCdW5kbGUuZ2V0KCk7IH0KIAogICAg
IGJvb2wgaXNTZXBhcmF0ZVByb2Nlc3MoKSBjb25zdDsKQEAgLTMwMCw2ICszMDksMTAgQEAgcHJp
dmF0ZToKIAogICAgIEhhc2hNYXA8dWludDY0X3QsIFdlYkZyYW1lKj4gbV9mcmFtZU1hcDsKIAor
I2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2Vi
Q29yZTo6UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw+ID4gbV9tZXNzYWdlUG9ydENoYW5uZWxz
OworI2VuZGlmCisKICAgICBIYXNoU2V0PFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPiBtX21pbWVU
eXBlc1dpdGhDdXN0b21SZXByZXNlbnRhdGlvbnM7CiAKICAgICBUZXh0Q2hlY2tlclN0YXRlIG1f
dGV4dENoZWNrZXJTdGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbgppbmRleCAwZjgzZDViLi4yMjcxNmNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0yNyw2ICsyNywx
MCBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIHsKICAgICAjIENyZWF0ZSBhIG5ldyBwYWdlLgog
ICAgIENyZWF0ZVdlYlBhZ2UodWludDY0X3QgbmV3UGFnZUlELCBXZWJLaXQ6OldlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMgcGFnZUNyZWF0aW9uUGFyYW1ldGVycykKIAorI2lmIEVOQUJMRShXRUJf
SU5URU5UUykKKyAgICBSZW1vdmVNZXNzYWdlUG9ydENoYW5uZWwodWludDY0X3QgY2hhbm5lbElE
KTsKKyNlbmRpZgorCiAgICAgIyBWaXNpdGVkIGxpbmsgdHJhY2tpbmcuCiAgICAgU2V0VmlzaXRl
ZExpbmtUYWJsZShXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZSkKICAgICBWaXNp
dGVkTGlua1N0YXRlQ2hhbmdlZChWZWN0b3I8V2ViQ29yZTo6TGlua0hhc2g+IGxpbmtIYXNoZXMp
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWQ0
YjY1Zi4uNTVjNDdmNCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTA4LTA0ICBDaHJpc3RvcGhlIER1bWV6ICA8
Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CisKKyAgICAgICAgW1dLMl0gQWRkIHN1cHBvcnQg
Zm9yIFdlYiBJbnRlbnRzIE1lc3NhZ2VQb3J0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODkwNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVc2UgV0tCdW5kbGVJbnRlbnQgaW5zdGVhZCBvZiBXZWJJbnRl
bnREYXRhIGluCisgICAgICAgIFdlYktpdFRlc3RSdW5uZXIuIFdUUiBub3cgcHJpbnRzIHRoZSBu
dW1iZXIgb2YKKyAgICAgICAgTWVzc2FnZVBvcnRzIGluIHJlY2VpdmVkIFdlYiBpbnRlbnRzIGFz
CisgICAgICAgIGV4cGVjdGVkIGJ5IHRoZSBmb2xsb3dpbmcgbGF5b3V0IHRlc3RzOgorICAgICAg
ICB3ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLWludm9rZS1wb3J0Lmh0bWwKKyAgICAgICAgd2ViaW50
ZW50cy93ZWItaW50ZW50cy1vYmotY29uc3RydWN0b3IuaHRtbAorCisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwOgorICAgICAg
ICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZSk6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJv
bGxlci5jcHA6CisgICAgICAgIChXVFI6OkxheW91dFRlc3RDb250cm9sbGVyOjpkZWxpdmVyV2Vi
SW50ZW50KToKKwogMjAxMi0wOC0wMyAgWWFyb24gRnJpZWRtYW4gIDx5ZnJpZWRtYW5AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWUtQW5kcm9pZF0gLSBQcmVwYXJlIGFwayB0ZXN0cyBm
b3Igc3dpdGNoIHRvIGNoZWNrZWQgaW4gU0RLLgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCmluZGV4
IDE2MzcxZDEuLjFlYmMyZjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKQEAgLTUwLDggKzUw
LDggQEAKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorI2luY2x1ZGUgPFdlYktp
dDIvV0tCdW5kbGVJbnRlbnQuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlSW50ZW50UmVx
dWVzdC5oPgotI2luY2x1ZGUgPFdlYktpdDIvV0tJbnRlbnREYXRhLmg+CiAjZW5kaWYKICNpZiBF
TkFCTEUoV0VCX0lOVEVOVFNfVEFHKQogI2luY2x1ZGUgPFdlYktpdDIvV0tJbnRlbnRTZXJ2aWNl
SW5mby5oPgpAQCAtNDMwLDE5ICs0MzAsMjQgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRp
ZFJlY2VpdmVJbnRlbnRGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGUKIHsK
ICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCiAgICAgc3RhdGljX2Nhc3Q8SW5qZWN0ZWRCdW5kbGVQ
YWdlKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5tX2N1cnJlbnRJbnRlbnRSZXF1
ZXN0ID0gaW50ZW50UmVxdWVzdDsKLSAgICBXS1JldGFpblB0cjxXS0ludGVudERhdGFSZWY+IGlu
dGVudChBZG9wdFdLLCBXS0J1bmRsZUludGVudFJlcXVlc3RDb3B5SW50ZW50RGF0YShpbnRlbnRS
ZXF1ZXN0KSk7CisgICAgV0tSZXRhaW5QdHI8V0tCdW5kbGVJbnRlbnRSZWY+IGludGVudChBZG9w
dFdLLCBXS0J1bmRsZUludGVudFJlcXVlc3RDb3B5SW50ZW50KGludGVudFJlcXVlc3QpKTsKIAog
ICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiUmVj
ZWl2ZWQgV2ViIEludGVudDogYWN0aW9uPSIpOwotICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVm
PiB3a0FjdGlvbihBZG9wdFdLLCBXS0ludGVudERhdGFDb3B5QWN0aW9uKGludGVudC5nZXQoKSkp
OworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB3a0FjdGlvbihBZG9wdFdLLCBXS0J1bmRs
ZUludGVudENvcHlBY3Rpb24oaW50ZW50LmdldCgpKSk7CiAgICAgSW5qZWN0ZWRCdW5kbGU6OnNo
YXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKHRvV1RGU3RyaW5nKHdrQWN0aW9uLmdldCgp
KSk7CiAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5k
KCIgdHlwZT0iKTsKLSAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tUeXBlKEFkb3B0V0ss
IFdLSW50ZW50RGF0YUNvcHlUeXBlKGludGVudC5nZXQoKSkpOworICAgIFdLUmV0YWluUHRyPFdL
U3RyaW5nUmVmPiB3a1R5cGUoQWRvcHRXSywgV0tCdW5kbGVJbnRlbnRDb3B5VHlwZShpbnRlbnQu
Z2V0KCkpKTsKICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5h
cHBlbmQodG9XVEZTdHJpbmcod2tUeXBlLmdldCgpKSk7CiAgICAgSW5qZWN0ZWRCdW5kbGU6OnNo
YXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKCJcbiIpOwogCi0gICAgLy8gRklYTUU6IFBy
aW50IG51bWJlciBvZiBwb3J0cyB3aGVuIGV4cG9zZWQgaW4gV2ViS2l0MgorICAgIGNvbnN0IHNp
emVfdCBudW1NZXNzYWdlUG9ydHMgPSBXS0J1bmRsZUludGVudE1lc3NhZ2VQb3J0Q291bnQoaW50
ZW50LmdldCgpKTsKKyAgICBpZiAobnVtTWVzc2FnZVBvcnRzKSB7CisgICAgICAgIEluamVjdGVk
QnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiSGF2ZSAiKTsKKyAgICAg
ICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKFdURjo6
U3RyaW5nOjpudW1iZXIobnVtTWVzc2FnZVBvcnRzKSk7CisgICAgICAgIEluamVjdGVkQnVuZGxl
OjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiIHBvcnRzXG4iKTsKKyAgICB9CiAK
LSAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gd2tTZXJ2aWNlVXJsKEFkb3B0V0ssIFdLSW50ZW50
RGF0YUNvcHlTZXJ2aWNlKGludGVudC5nZXQoKSkpOworICAgIFdLUmV0YWluUHRyPFdLVVJMUmVm
PiB3a1NlcnZpY2VVcmwoQWRvcHRXSywgV0tCdW5kbGVJbnRlbnRDb3B5U2VydmljZShpbnRlbnQu
Z2V0KCkpKTsKICAgICBpZiAod2tTZXJ2aWNlVXJsKSB7CiAgICAgICAgIFdLUmV0YWluUHRyPFdL
U3RyaW5nUmVmPiB3a1NlcnZpY2UoQWRvcHRXSywgV0tVUkxDb3B5U3RyaW5nKHdrU2VydmljZVVy
bC5nZXQoKSkpOwogICAgICAgICBpZiAod2tTZXJ2aWNlICYmICFXS1N0cmluZ0lzRW1wdHkod2tT
ZXJ2aWNlLmdldCgpKSkgewpAQCAtNDUyLDcgKzQ1Nyw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQ
YWdlOjpkaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVu
ZGxlCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBXS1JldGFpblB0cjxXS0RpY3Rpb25hcnlSZWY+
IHdrRXh0cmFzKEFkb3B0V0ssIFdLSW50ZW50RGF0YUNvcHlFeHRyYXMoaW50ZW50LmdldCgpKSk7
CisgICAgV0tSZXRhaW5QdHI8V0tEaWN0aW9uYXJ5UmVmPiB3a0V4dHJhcyhBZG9wdFdLLCBXS0J1
bmRsZUludGVudENvcHlFeHRyYXMoaW50ZW50LmdldCgpKSk7CiAgICAgV0tSZXRhaW5QdHI8V0tB
cnJheVJlZj4gd2tFeHRyYUtleXMoQWRvcHRXSywgV0tEaWN0aW9uYXJ5Q29weUtleXMod2tFeHRy
YXMuZ2V0KCkpKTsKICAgICBjb25zdCBzaXplX3QgbnVtRXh0cmFLZXlzID0gV0tBcnJheUdldFNp
emUod2tFeHRyYUtleXMuZ2V0KCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtRXh0
cmFLZXlzOyArK2kpIHsKQEAgLTQ2NSw3ICs0NzAsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFn
ZTo6ZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRs
ZQogICAgICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBl
bmQoIlxuIik7CiAgICAgfQogCi0gICAgV0tSZXRhaW5QdHI8V0tBcnJheVJlZj4gd2tTdWdnZXN0
aW9ucyhBZG9wdFdLLCBXS0ludGVudERhdGFDb3B5U3VnZ2VzdGlvbnMoaW50ZW50LmdldCgpKSk7
CisgICAgV0tSZXRhaW5QdHI8V0tBcnJheVJlZj4gd2tTdWdnZXN0aW9ucyhBZG9wdFdLLCBXS0J1
bmRsZUludGVudENvcHlTdWdnZXN0aW9ucyhpbnRlbnQuZ2V0KCkpKTsKICAgICBjb25zdCBzaXpl
X3QgbnVtU3VnZ2VzdGlvbnMgPSBXS0FycmF5R2V0U2l6ZSh3a1N1Z2dlc3Rpb25zLmdldCgpKTsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bVN1Z2dlc3Rpb25zOyArK2kpIHsKICAgICAg
ICAgV0tTdHJpbmdSZWYgd2tTdWdnZXN0aW9uID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdL
QXJyYXlHZXRJdGVtQXRJbmRleCh3a1N1Z2dlc3Rpb25zLmdldCgpLCBpKSk7CmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9s
bGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVz
dENvbnRyb2xsZXIuY3BwCmluZGV4IDVmYjUyNmQuLmQxNjg0YmIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3Bw
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENv
bnRyb2xsZXIuY3BwCkBAIC00OSw4ICs0OSw4IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
QnVpbGRlci5oPgogCiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorI2luY2x1ZGUgPFdlYktpdDIv
V0tCdW5kbGVJbnRlbnQuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlSW50ZW50UmVxdWVz
dC5oPgotI2luY2x1ZGUgPFdlYktpdDIvV0tJbnRlbnREYXRhLmg+CiAjZW5kaWYKIAogbmFtZXNw
YWNlIFdUUiB7CkBAIC02NTEsOCArNjUxLDggQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
ZGVsaXZlcldlYkludGVudChKU1N0cmluZ1JlZiBhY3Rpb24sIEpTU3RyaW5nUmVmIHR5cGUKICAg
ICBXS0RpY3Rpb25hcnlBZGRJdGVtKGludGVudEluaXREaWN0LmdldCgpLCBXS1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZygidHlwZSIpLCB0eXBlV0suZ2V0KCkpOwogICAgIFdLRGljdGlvbmFy
eUFkZEl0ZW0oaW50ZW50SW5pdERpY3QuZ2V0KCksIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKCJkYXRhIiksIGRhdGFXSy5nZXQoKSk7CiAKLSAgICBXS1JldGFpblB0cjxXS0ludGVudERh
dGFSZWY+IHdrSW50ZW50RGF0YShBZG9wdFdLLCBXS0ludGVudERhdGFDcmVhdGUoaW50ZW50SW5p
dERpY3QuZ2V0KCkpKTsKLSAgICBXS0J1bmRsZVBhZ2VEZWxpdmVySW50ZW50VG9GcmFtZShJbmpl
Y3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdlKCksIG1haW5GcmFtZSwgd2tJbnRlbnRE
YXRhLmdldCgpKTsKKyAgICBXS1JldGFpblB0cjxXS0J1bmRsZUludGVudFJlZj4gd2tJbnRlbnQo
QWRvcHRXSywgV0tCdW5kbGVJbnRlbnRDcmVhdGUoaW50ZW50SW5pdERpY3QuZ2V0KCkpKTsKKyAg
ICBXS0J1bmRsZVBhZ2VEZWxpdmVySW50ZW50VG9GcmFtZShJbmplY3RlZEJ1bmRsZTo6c2hhcmVk
KCkucGFnZSgpLT5wYWdlKCksIG1haW5GcmFtZSwgd2tJbnRlbnQuZ2V0KCkpOwogI2VuZGlmCiB9
CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157902</attachid>
            <date>2012-08-12 08:52:29 -0700</date>
            <delta_ts>2012-08-13 07:45:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>89072_wk2_messagePorts.patch</filename>
            <type>text/plain</type>
            <size>60484</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3Mzk0OTRjLi42MTNmOWZmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTkgQEAKIDIwMTItMDgt
MTIgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAorICAg
ICAgICBbV0syXSBBZGQgc3VwcG9ydCBmb3IgV2ViIEludGVudHMgTWVzc2FnZVBvcnRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTA3MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVuc2tpcCB3ZWJpbnRl
bnRzL3dlYi1pbnRlbnRzLWludm9rZS1wb3J0Lmh0bWwgYW5kCisgICAgICAgIHdlYmludGVudHMv
d2ViLWludGVudHMtb2JqLWNvbnN0cnVjdG9yLmh0bWwgZm9yCisgICAgICAgIFdlYktpdDIgRUZM
IG5vdyB0aGF0IGluZm9ybWF0aW9uIGFib3V0IG1lc3NhZ2UgcG9ydHMKKyAgICAgICAgaXMgY29y
cmVjdGx5IGRpc3BsYXllZCBieSBXZWJLaXRUZXN0UnVubmVyLgorCisgICAgICAgICogcGxhdGZv
cm0vZWZsLXdrMi9Ta2lwcGVkOgorCisyMDEyLTA4LTEyICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hy
aXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CisKICAgICAgICAgW0VGTF1bV0syXSBTa2lwIHdlYmlu
dGVudHMvd2ViLWludGVudHMtb2JqLWNvbnN0cnVjdG9yLmh0bWwgdGVzdAogICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM3NzgKIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsLXdrMi9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZWZsLXdrMi9Ta2lwcGVkCmluZGV4IDE3YzVhMmQuLjNlMTM1Y2YgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2VmbC13azIvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9lZmwtd2syL1NraXBwZWQKQEAgLTI3MSw3ICsyNzEsMyBAQCBpbnNwZWN0b3IvZXh0ZW5z
aW9ucy9leHRlbnNpb25zLXBhbmVsLmh0bWwKIGluc3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lv
bnMtc2lkZWJhci5odG1sCiBqcXVlcnkvYXR0cmlidXRlcy5odG1sCiAKLSMgQnVnIDg5MDcyOiBX
VFIgZG9lcyBub3QgcHJpbnQgaW5mb3JtYXRpb24gYWJvdXQgV2ViIEludGVudHMgTWVzc2FnZVBv
cnRzCi13ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLWludm9rZS1wb3J0Lmh0bWwKLXdlYmludGVudHMv
d2ViLWludGVudHMtb2JqLWNvbnN0cnVjdG9yLmh0bWwKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAppbmRl
eCAwNjQ0MGIyLi4yNTk1ZmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3Rz
LnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dApAQCAtNTYsNiArNTYsNyBA
QCBTRVQoV2ViS2l0Ml9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2Jy
aWRnZS9qc2MiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2NzcyIKICAgICAiJHtXRUJDT1JFX0RJUn0v
ZG9tIgorICAgICIke1dFQkNPUkVfRElSfS9kb20vZGVmYXVsdCIKICAgICAiJHtXRUJDT1JFX0RJ
Un0vZWRpdGluZyIKICAgICAiJHtXRUJDT1JFX0RJUn0vaGlzdG9yeSIKICAgICAiJHtXRUJDT1JF
X0RJUn0vaHRtbCIKQEAgLTM4MCw2ICszODEsNyBAQCBTRVQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAg
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAKICAgICBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9u
LmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0
UmVzdWx0LmNwcAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJ
bnRlbnQuY3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUlu
dGVudFJlcXVlc3QuY3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZU5hdmlnYXRpb25BY3Rpb24uY3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZVBhZ2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5jcHAKQEAgLTQwMCw2ICs0
MDIsNyBAQCBTRVQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVJbnNwZWN0b3IuY3BwCisgICAgV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudC5jcHAKICAgICBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50UmVxdWVzdC5jcHAKICAgICBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAKICAgICBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlTm9kZUhhbmRsZS5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwppbmRleCA4YTk1YmQ5Li42MWJkOWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMyIEBACisy
MDEyLTA4LTA0ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+
CisKKyAgICAgICAgW1dLMl0gQWRkIHN1cHBvcnQgZm9yIFdlYiBJbnRlbnRzIE1lc3NhZ2VQb3J0
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODkwNzIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgc3Vw
cG9ydCBmb3IgV2ViSW50ZW50cyBNZXNzYWdlUG9ydHMgaW4gV2ViS2l0Mi4KKyAgICAgICAgTWVz
c2FnZVBvcnRzIGNhbiBiZSBwYXNzZWQgd2l0aCBhIFdlYiBJbnRlbnQgaW4KKyAgICAgICAgb3Jk
ZXIgdG8gb3BlbiBhIGRpcmVjdCBjb21tdW5pY2F0aW9uIGNoYW5uZWwKKyAgICAgICAgYmV0d2Vl
biB0aGUgV2ViIGFwcGxpY2F0aW9uIGFuZCB0aGUgaW50ZW50IHNlcnZpY2UuCisgICAgICAgIFRo
aXMgZnVuY3Rpb25hbGl0eSBpcyBhbHJlYWR5IHN1cHBvcnRlZCBieSBXZWJLaXQgMS4KKworICAg
ICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgSW5qZWN0ZWRCdW5kbGVJbnRlbnQKKyAg
ICAgICAgY2xhc3Mgd2hpY2ggd3JhcHMgYSBXZWJDb3JlOjpJbnRlbnQuIFRoaXMgd2F5CisgICAg
ICAgIGluZm9ybWF0aW9uIHJlZ2FyZGluZyB0aGUgTWVzc2FnZVBvcnRzIGluIGEgV2ViCisgICAg
ICAgIEludGVudCBpcyBrZXB0IHdoZW4gdXNpbmcgYW4gaW5qZWN0ZWQgYnVuZGxlLgorCisgICAg
ICAgIEZvciB0aGUgVUlQcm9jZXNzLCBXZWJJbnRlbnREYXRhIG5vdyBjYXJyaWVzCisgICAgICAg
IGlkZW50aWZpZXJzIGZvciB0aGUgTWVzc2FnZVBvcnRzIHdoaWNoIGNhbiBnbyBvdmVyCisgICAg
ICAgIElQQy4gVGhvc2UgaWRlbnRpZmllcnMgbWFwIHRvIGFjdHVhbCBNZXNzYWdlUG9ydHMKKyAg
ICAgICAgc3RvcmVkIGluIHRoZSBXZWIgcHJvY2Vzcy4gVGhpcyB3YXksIHdoZW4gdGhlIFVJCisg
ICAgICAgIGRlbGl2ZXJzIGFuIGludGVudCB0byBhIGZyYW1lLCB3ZSBjYW4gZ2V0IGJhY2sgdGhl
CisgICAgICAgIGNvcnJlc3BvbmRpbmcgTWVzc2FnZVBvcnRzIGZyb20gdGhlIFdlYiBwcm9jZXNz
CisgICAgICAgIGJlZm9yZSBkZWxpdmVyaW5nIHRvIHRoZSBET01XaW5kb3cuCisKKyAgICAgICAg
VGhpcyBmdW5jdGlvbmFsaXR5IGlzIGFscmVhZHkgdGVzdGVkIGJ5OgorICAgICAgICB3ZWJpbnRl
bnRzL3dlYi1pbnRlbnRzLWludm9rZS1wb3J0Lmh0bWwKKyAgICAgICAgd2ViaW50ZW50cy93ZWIt
aW50ZW50cy1vYmotY29uc3RydWN0b3IuaHRtbAorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2Mv
V0tCYXNlLmg6CisgICAgICAgICogU2hhcmVkL0FQSU9iamVjdC5oOgorICAgICAgICAqIFNoYXJl
ZC9JbnRlbnREYXRhLmNwcDogQWRkIE1lc3NhZ2VQb3J0IGlkZW50aWZpZXJzLgorICAgICAgICAo
V2ViS2l0OjpJbnRlbnREYXRhOjpJbnRlbnREYXRhKToKKyAgICAgICAgKFdlYktpdDo6SW50ZW50
RGF0YTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6SW50ZW50RGF0YTo6ZGVjb2RlKToKKyAg
ICAgICAgKiBTaGFyZWQvSW50ZW50RGF0YS5oOgorICAgICAgICAoSW50ZW50RGF0YSk6CisgICAg
ICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tJbnRlbnREYXRh
LmNwcDogUmVuYW1lIFdLSW50ZW50RGF0YUNvcHlFeHRyYSgpIHRvCisgICAgICAgIFdLSW50ZW50
RGF0YUNvcHlFeHRyYVZhbHVlKCkgZm9yIGNsYXJpdHkuCisgICAgICAgIChXS0ludGVudERhdGFD
b3B5RXh0cmFWYWx1ZSk6IAorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0ludGVudERhdGEu
aDogUmVtb3ZlIFdLSW50ZW50RGF0YUNyZWF0ZSgpIGZ1bmN0aW9uIG5vdworICAgICAgICB0aGF0
IFdUUiB1c2VzIFdLQnVuZGxlSW50ZW50Q3JlYXRlKCkgaW5zdGVhZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfaW50ZW50LmNwcDoKKyAgICAgICAgKGV3a19pbnRlbnRfZXh0cmFf
Z2V0KTogVXNlIFdLSW50ZW50RGF0YUNvcHlFeHRyYVZhbHVlKCkgaW5zdGVhZCBvZgorICAgICAg
ICBXS0ludGVudERhdGFDb3B5RXh0cmEoKSBzaW5jZSBpdCB3YXMgcmVuYW1lZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViSW50ZW50RGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkludGVu
dERhdGE6OldlYkludGVudERhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnRlbnREYXRhOjp+
V2ViSW50ZW50RGF0YSk6IFJlbW92ZSBNZXNzYWdlUG9ydHMgZnJvbSBXZWJQcm9jZXNzIHVwb24K
KyAgICAgICAgV2ViSW50ZW50RGF0YSBkZXN0cnVjdGlvbi4KKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkludGVudERhdGE6OmV4dHJhcyk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYkludGVudERhdGEuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6
OldlYkludGVudERhdGE6OmNyZWF0ZSk6CisgICAgICAgIChXZWJJbnRlbnREYXRhKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpkaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Byb3h5OjpyZW1vdmVNZXNzYWdlUG9ydENoYW5uZWwpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYlByb2Nlc3NQcm94eSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUFQSUNhc3Qu
aDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZUludGVudC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS0ludGVudERhdGEuY3BwLgorICAgICAgICAoV0tCdW5kbGVJbnRlbnRH
ZXRUeXBlSUQpOgorICAgICAgICAoV0tCdW5kbGVJbnRlbnRDcmVhdGUpOgorICAgICAgICAoV0tC
dW5kbGVJbnRlbnRDb3B5QWN0aW9uKToKKyAgICAgICAgKFdLQnVuZGxlSW50ZW50Q29weVR5cGUp
OgorICAgICAgICAoV0tCdW5kbGVJbnRlbnRDb3B5U2VydmljZSk6CisgICAgICAgIChXS0J1bmRs
ZUludGVudENvcHlTdWdnZXN0aW9ucyk6CisgICAgICAgIChXS0J1bmRsZUludGVudENvcHlFeHRy
YVZhbHVlKToKKyAgICAgICAgKFdLQnVuZGxlSW50ZW50Q29weUV4dHJhcyk6CisgICAgICAgIChX
S0J1bmRsZUludGVudE1lc3NhZ2VQb3J0Q291bnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnQuaDogQ29waWVkIGZyb20gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLSW50ZW50RGF0YS5oLgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnRSZXF1ZXN0LmNwcDoKKyAgICAg
ICAgKFdLQnVuZGxlSW50ZW50UmVxdWVzdENvcHlJbnRlbnQpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnRSZXF1ZXN0Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwOgorICAg
ICAgICAoV0tCdW5kbGVQYWdlRGVsaXZlckludGVudFRvRnJhbWUpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudC5jcHA6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnRlbnREYXRhLmNwcC4KKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlSW50ZW50OjpjcmVhdGUp
OgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZUludGVudDo6SW5qZWN0ZWRCdW5kbGVJ
bnRlbnQpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZUludGVudDo6YWN0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OnBheWxvYWRUeXBlKToKKyAg
ICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OnNlcnZpY2UpOgorICAgICAgICAo
V2ViS2l0OjpJbmplY3RlZEJ1bmRsZUludGVudDo6ZGF0YSk6CisgICAgICAgIChXZWJLaXQ6Oklu
amVjdGVkQnVuZGxlSW50ZW50OjpleHRyYSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVu
ZGxlSW50ZW50OjpleHRyYXMpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZUludGVu
dDo6c3VnZ2VzdGlvbnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVJbnRlbnQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkludGVudERhdGEuaC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChJbmplY3RlZEJ1
bmRsZUludGVudCk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlSW50ZW50Ojpjb3Jl
SW50ZW50KToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OnR5cGUpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnRS
ZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0
OjppbnRlbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVJbnRlbnRSZXF1ZXN0Lmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoSW5qZWN0
ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
RnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6ZGVsaXZlckludGVudCk6Cisg
ICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5o
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJGcmFtZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6ZGVsaXZlckNvcmVJbnRlbnRUb0ZyYW1lKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJQYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOiBTdG9yZSBN
ZXNzYWdlUG9ydHMgaW4gV2ViUHJvY2VzcyBhbmQga2VlcCBtYXBwaW5nIHdpdGgKKyAgICAgICAg
dGhlaXIgaWRlbnRpZmllcnMuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzOjphZGRNZXNzYWdlUG9ydENoYW5uZWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzOjptZXNzYWdlUG9ydENoYW5uZWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
OjpyZW1vdmVNZXNzYWdlUG9ydENoYW5uZWwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJQcm9jZXNzKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisKIDIwMTItMDgtMTIgIE51
bm8gTG9wZXMgIDxubG9wZXNAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBidWlsZCB3aXRoIHJl
Y2VudCBjbGFuZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3Qu
YW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGQ3MzdiYzcuLmQ0
MTdiNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysr
IGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtOTYxLDYgKzk2MSw4IEBA
IHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUluaXRpYWxpemUuaCBcCiAJU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUluc3BlY3Rvci5jcHAgXAogCVNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnNw
ZWN0b3IuaCBcCisJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZUludGVudC5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnQuaCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudFJlcXVlc3QuY3BwIFwKIAlT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50
ZW50UmVxdWVzdC5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlTm9kZUhhbmRsZS5jcHAgXApAQCAtOTk1LDYgKzk5Nyw4IEBAIHdlYmtp
dDJfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAg
XAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVIaXRUZXN0UmVzdWx0LmggXAorCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnQuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50LmggXAogCVNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0
LmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZUludGVudFJlcXVlc3QuaCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3BwIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAppbmRleCA2ODU0ZWNjLi5hNmE4YmQ2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCkBAIC0xMzUsNiArMTM1LDcgQEAgdHlwZWRlZiBjb25z
dCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24qIFdLQnVuZGxlRE9NV2lu
ZG93RXh0ZW5zaW8KIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQnVuZGxlRnJhbWUqIFdL
QnVuZGxlRnJhbWVSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRsZUhpdFRl
c3RSZXN1bHQqIFdLQnVuZGxlSGl0VGVzdFJlc3VsdFJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0
IE9wYXF1ZVdLQnVuZGxlSW5zcGVjdG9yKiBXS0J1bmRsZUluc3BlY3RvclJlZjsKK3R5cGVkZWYg
Y29uc3Qgc3RydWN0IE9wYXF1ZVdLQnVuZGxlSW50ZW50KiBXS0J1bmRsZUludGVudFJlZjsKIHR5
cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQnVuZGxlSW50ZW50UmVxdWVzdCogV0tCdW5kbGVJ
bnRlbnRSZXF1ZXN0UmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVOYXZp
Z2F0aW9uQWN0aW9uKiBXS0J1bmRsZU5hdmlnYXRpb25BY3Rpb25SZWY7CiB0eXBlZGVmIGNvbnN0
IHN0cnVjdCBPcGFxdWVXS0J1bmRsZU5vZGVIYW5kbGUqIFdLQnVuZGxlTm9kZUhhbmRsZVJlZjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaCBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaAppbmRleCA4ZTRkMjkzLi43MDhlZmZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSU9iamVjdC5oCkBAIC0xMTcsNiArMTE3LDcgQEAgcHVibGljOgogICAgICAg
ICBUeXBlQnVuZGxlRnJhbWUsCiAgICAgICAgIFR5cGVCdW5kbGVIaXRUZXN0UmVzdWx0LAogICAg
ICAgICBUeXBlQnVuZGxlSW5zcGVjdG9yLAorICAgICAgICBUeXBlQnVuZGxlSW50ZW50LAogICAg
ICAgICBUeXBlQnVuZGxlSW50ZW50UmVxdWVzdCwKICAgICAgICAgVHlwZUJ1bmRsZU5hdmlnYXRp
b25BY3Rpb24sCiAgICAgICAgIFR5cGVCdW5kbGVOb2RlSGFuZGxlLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0ludGVudERhdGEuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L0ludGVudERhdGEuY3BwCmluZGV4IDQ5OTViMmUuLjQxMDc4NzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9JbnRlbnREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvSW50ZW50RGF0YS5jcHAKQEAgLTMxLDcgKzMxLDEwIEBACiAjaW5jbHVkZSAiQVBJT2JqZWN0
LmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVu
dENvZGVycy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0lu
dGVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTWVzc2FnZVBvcnRDaGFubmVsLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oPgogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIApAQCAtNDUsNiArNDgsMTIgQEAgSW50ZW50RGF0YTo6SW50ZW50RGF0YShJ
bnRlbnQqIGNvcmVJbnRlbnQpCiAgICAgLCBleHRyYXMoY29yZUludGVudC0+ZXh0cmFzKCkpCiAg
ICAgLCBzdWdnZXN0aW9ucyhjb3JlSW50ZW50LT5zdWdnZXN0aW9ucygpKQogeworICAgIE1lc3Nh
Z2VQb3J0Q2hhbm5lbEFycmF5KiBjb3JlTWVzc2FnZVBvcnRzID0gY29yZUludGVudC0+bWVzc2Fn
ZVBvcnRzKCk7CisgICAgaWYgKGNvcmVNZXNzYWdlUG9ydHMpIHsKKyAgICAgICAgc2l6ZV90IG51
bU1lc3NhZ2VQb3J0cyA9IGNvcmVNZXNzYWdlUG9ydHMtPnNpemUoKTsKKyAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBudW1NZXNzYWdlUG9ydHM7ICsraSkKKyAgICAgICAgICAgIG1lc3Nh
Z2VQb3J0cy5hcHBlbmQoV2ViUHJvY2Vzczo6c2hhcmVkKCkuYWRkTWVzc2FnZVBvcnRDaGFubmVs
KCgqY29yZU1lc3NhZ2VQb3J0cylbaV0tPmNoYW5uZWwoKSkpOworICAgIH0KIH0KIAogdm9pZCBJ
bnRlbnREYXRhOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyKSBjb25z
dApAQCAtNTUsNiArNjQsNyBAQCB2b2lkIEludGVudERhdGE6OmVuY29kZShDb3JlSVBDOjpBcmd1
bWVudEVuY29kZXIqIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2Rlci0+ZW5jb2RlKENvcmVJUEM6
OkRhdGFSZWZlcmVuY2UoZGF0YSkpOwogICAgIGVuY29kZXItPmVuY29kZShleHRyYXMpOwogICAg
IGVuY29kZXItPmVuY29kZShzdWdnZXN0aW9ucyk7CisgICAgZW5jb2Rlci0+ZW5jb2RlKG1lc3Nh
Z2VQb3J0cyk7CiB9CiAKIGJvb2wgSW50ZW50RGF0YTo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50
RGVjb2RlciogZGVjb2RlciwgSW50ZW50RGF0YSYgaW50ZW50RGF0YSkKQEAgLTczLDYgKzgzLDgg
QEAgYm9vbCBJbnRlbnREYXRhOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNv
ZGVyLCBJbnRlbnREYXRhJiBpbnRlbnREYXQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlm
ICghZGVjb2Rlci0+ZGVjb2RlKGludGVudERhdGEuc3VnZ2VzdGlvbnMpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoaW50ZW50RGF0YS5tZXNzYWdlUG9y
dHMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9JbnRlbnREYXRhLmggYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvSW50ZW50RGF0YS5oCmluZGV4IDk2ZTJkOWYuLmU4NDM1YzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9JbnRlbnREYXRhLmgKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL0ludGVudERhdGEuaApAQCAtMjksNyArMjksOCBAQAogI2lmIEVOQUJMRShXRUJfSU5U
RU5UUykKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgotI2luY2x1ZGUgIkdlbmVyaWNDYWxsYmFj
ay5oIgorI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBDb3JlSVBDIHsK
QEAgLTU2LDYgKzU3LDcgQEAgc3RydWN0IEludGVudERhdGEgewogICAgIFZlY3Rvcjx1aW50OF90
PiBkYXRhOwogICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IGV4dHJhczsKICAgICBWZWN0b3I8
V2ViQ29yZTo6S1VSTD4gc3VnZ2VzdGlvbnM7CisgICAgVmVjdG9yPHVpbnQ2NF90PiBtZXNzYWdl
UG9ydHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCmluZGV4IDVmZmM4
Y2MuLjFkZjIwMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKKysrIGIv
U291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQpAQCAtMjc5LDYgKzI3OSw3IEBAIEhFQURFUlMgKz0g
XAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVCYWNrRm9yd2Fy
ZExpc3QuaCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUJh
Y2tGb3J3YXJkTGlzdEl0ZW0uaCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZUhpdFRlc3RSZXN1bHQuaCBcCisgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZUludGVudC5oIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlSW50ZW50UmVxdWVzdC5oIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5oIFwKICAgICBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlTm9kZUhhbmRsZS5oIFwKQEAgLTI5Miw2ICsy
OTMsNyBAQCBIRUFERVJTICs9IFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlQ2xpZW50LmggXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uaCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuaCBcCisgICAgV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudC5oIFwKICAgICBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5oIFwKICAgICBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5oIFwKICAgICBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xp
ZW50LmggXApAQCAtNjMwLDYgKzYzMiw3IEBAIFNPVVJDRVMgKz0gXAogICAgIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAgXAogICAgIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcCBcCiAgICAgV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUluc3BlY3Rvci5jcHAgXAorICAg
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnQuY3BwIFwKICAg
ICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50UmVxdWVzdC5j
cHAgXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVOYXZpZ2F0
aW9uQWN0aW9uLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZU5vZGVIYW5kbGUuY3BwIFwKQEAgLTY0NSw2ICs2NDgsNyBAQCBTT1VSQ0VTICs9IFwKICAg
ICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQ2xpZW50LmNwcCBcCiAg
ICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVu
c2lvbi5jcHAgXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVI
aXRUZXN0UmVzdWx0LmNwcCBcCisgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZUludGVudC5jcHAgXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3BwIFwKICAgICBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnRlbnREYXRhLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0ludGVudERhdGEuY3BwCmluZGV4
IDdhOTJkYjUuLjkyZTYxODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS0ludGVudERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS0ludGVudERhdGEuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiV0tBUElDYXN0
LmgiCiAjaW5jbHVkZSAiV0tEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiV0tTdHJpbmcuaCIKKyNp
bmNsdWRlICJXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKIAogI2lmIEVOQUJMRShXRUJfSU5U
RU5UUykKICNpbmNsdWRlICJXZWJJbnRlbnREYXRhLmgiCkBAIC00NywyNyArNDgsNiBAQCBXS1R5
cGVJRCBXS0ludGVudERhdGFHZXRUeXBlSUQoKQogI2VuZGlmCiB9CiAKLVdLSW50ZW50RGF0YVJl
ZiBXS0ludGVudERhdGFDcmVhdGUoV0tEaWN0aW9uYXJ5UmVmIGluaXREaWN0aW9uYXJ5UmVmKQot
ewotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSAgICBJbnRlbnREYXRhIGludGVudERhdGE7Ci0g
ICAgV0tTdHJpbmdSZWYgYWN0aW9uID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGljdGlv
bmFyeUdldEl0ZW1Gb3JLZXkoaW5pdERpY3Rpb25hcnlSZWYsIFdLU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKCJhY3Rpb24iKSkpOwotICAgIEFTU0VSVChhY3Rpb24pOwotICAgIGludGVudERh
dGEuYWN0aW9uID0gdG9JbXBsKGFjdGlvbiktPnN0cmluZygpOwotICAgIFdLU3RyaW5nUmVmIHR5
cGUgPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShp
bml0RGljdGlvbmFyeVJlZiwgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoInR5cGUiKSkp
OwotICAgIEFTU0VSVCh0eXBlKTsKLSAgICBpbnRlbnREYXRhLnR5cGUgPSB0b0ltcGwodHlwZSkt
PnN0cmluZygpOwotICAgIFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmIGRhdGEgPSBzdGF0aWNf
Y2FzdDxXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktl
eShpbml0RGljdGlvbmFyeVJlZiwgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImRhdGEi
KSkpOwotICAgIGlmIChkYXRhKQotICAgICAgICBpbnRlbnREYXRhLmRhdGEgPSB0b0ltcGwoZGF0
YSktPmRhdGFSZWZlcmVuY2UoKS52ZWN0b3IoKTsKLQotICAgIFJlZlB0cjxXZWJJbnRlbnREYXRh
PiB3ZWJJbnRlbnREYXRhID0gV2ViSW50ZW50RGF0YTo6Y3JlYXRlKGludGVudERhdGEpOwotICAg
IHJldHVybiB0b0FQSSh3ZWJJbnRlbnREYXRhLnJlbGVhc2UoKS5sZWFrUmVmKCkpOwotI2Vsc2UK
LSAgICByZXR1cm4gMDsKLSNlbmRpZgotfQotCiBXS1N0cmluZ1JlZiBXS0ludGVudERhdGFDb3B5
QWN0aW9uKFdLSW50ZW50RGF0YVJlZiBpbnRlbnRSZWYpCiB7CiAjaWYgRU5BQkxFKFdFQl9JTlRF
TlRTKQpAQCAtMTA0LDcgKzg0LDcgQEAgV0tBcnJheVJlZiBXS0ludGVudERhdGFDb3B5U3VnZ2Vz
dGlvbnMoV0tJbnRlbnREYXRhUmVmIGludGVudFJlZikKICNlbmRpZgogfQogCi1XS1N0cmluZ1Jl
ZiBXS0ludGVudERhdGFDb3B5RXh0cmEoV0tJbnRlbnREYXRhUmVmIGludGVudFJlZiwgV0tTdHJp
bmdSZWYga2V5KQorV0tTdHJpbmdSZWYgV0tJbnRlbnREYXRhQ29weUV4dHJhVmFsdWUoV0tJbnRl
bnREYXRhUmVmIGludGVudFJlZiwgV0tTdHJpbmdSZWYga2V5KQogewogI2lmIEVOQUJMRShXRUJf
SU5URU5UUykKICAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKGludGVudFJlZiktPmV4dHJh
KHRvV1RGU3RyaW5nKGtleSkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS0ludGVudERhdGEuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S0ludGVudERhdGEuaAppbmRleCAxZjgwOWVjLi5jYWYxYjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnRlbnREYXRhLmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLSW50ZW50RGF0YS5oCkBAIC0zNCwxMyArMzQsMTEgQEAgZXh0
ZXJuICJDIiB7CiAKIFdLX0VYUE9SVCBXS1R5cGVJRCBXS0ludGVudERhdGFHZXRUeXBlSUQoKTsK
IAotV0tfRVhQT1JUIFdLSW50ZW50RGF0YVJlZiBXS0ludGVudERhdGFDcmVhdGUoV0tEaWN0aW9u
YXJ5UmVmIGluaXREaWN0aW9uYXJ5KTsKLQogV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLSW50ZW50
RGF0YUNvcHlBY3Rpb24oV0tJbnRlbnREYXRhUmVmIGludGVudFJlZik7CiBXS19FWFBPUlQgV0tT
dHJpbmdSZWYgV0tJbnRlbnREYXRhQ29weVR5cGUoV0tJbnRlbnREYXRhUmVmIGludGVudFJlZik7
CiBXS19FWFBPUlQgV0tVUkxSZWYgV0tJbnRlbnREYXRhQ29weVNlcnZpY2UoV0tJbnRlbnREYXRh
UmVmIGludGVudFJlZik7CiBXS19FWFBPUlQgV0tBcnJheVJlZiBXS0ludGVudERhdGFDb3B5U3Vn
Z2VzdGlvbnMoV0tJbnRlbnREYXRhUmVmIGludGVudFJlZik7Ci1XS19FWFBPUlQgV0tTdHJpbmdS
ZWYgV0tJbnRlbnREYXRhQ29weUV4dHJhKFdLSW50ZW50RGF0YVJlZiBpbnRlbnRSZWYsIFdLU3Ry
aW5nUmVmIGtleSk7CitXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tJbnRlbnREYXRhQ29weUV4dHJh
VmFsdWUoV0tJbnRlbnREYXRhUmVmIGludGVudFJlZiwgV0tTdHJpbmdSZWYga2V5KTsKIFdLX0VY
UE9SVCBXS0RpY3Rpb25hcnlSZWYgV0tJbnRlbnREYXRhQ29weUV4dHJhcyhXS0ludGVudERhdGFS
ZWYgaW50ZW50UmVmKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfaW50ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19pbnRlbnQuY3BwCmluZGV4IDg1NjE3OTMuLjVjMmIyMTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19pbnRlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19pbnRlbnQuY3Bw
CkBAIC0xNzEsNyArMTcxLDcgQEAgY29uc3QgY2hhciogZXdrX2ludGVudF9leHRyYV9nZXQoY29u
c3QgRXdrX0ludGVudCogaW50ZW50LCBjb25zdCBjaGFyKiBrZXkpCiAgICAgRVdLX0lOVEVOVF9X
S19HRVRfT1JfUkVUVVJOKGludGVudCwgd2tJbnRlbnQsIDApOwogCiAgICAgV0tSZXRhaW5QdHI8
V0tTdHJpbmdSZWY+IGtleVJlZiA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoa2V5KSk7Ci0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHdrVmFsdWUoQWRvcHRXSywg
V0tJbnRlbnREYXRhQ29weUV4dHJhKHdrSW50ZW50LCBrZXlSZWYuZ2V0KCkpKTsKKyAgICBXS1Jl
dGFpblB0cjxXS1N0cmluZ1JlZj4gd2tWYWx1ZShBZG9wdFdLLCBXS0ludGVudERhdGFDb3B5RXh0
cmFWYWx1ZSh3a0ludGVudCwga2V5UmVmLmdldCgpKSk7CiAgICAgU3RyaW5nIHZhbHVlID0gdG9J
bXBsKHdrVmFsdWUuZ2V0KCkpLT5zdHJpbmcoKTsKICAgICBpZiAodmFsdWUuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJJbnRlbnREYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnRlbnREYXRh
LmNwcAppbmRleCA5NjEyOGRiLi5hOWQyMTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViSW50ZW50RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkludGVudERhdGEuY3BwCkBAIC0zMCwxNiArMzAsMjkgQEAKIAogI2luY2x1ZGUgIkltbXV0
YWJsZUFycmF5LmgiCiAjaW5jbHVkZSAiSW1tdXRhYmxlRGljdGlvbmFyeS5oIgorI2luY2x1ZGUg
IldlYlByb2Nlc3NQcm94eS5oIgorI2luY2x1ZGUgIldlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
IgogI2luY2x1ZGUgIldlYlN0cmluZy5oIgogI2luY2x1ZGUgIldlYlVSTC5oIgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAotV2ViSW50ZW50RGF0YTo6V2ViSW50ZW50RGF0YShjb25zdCBJbnRlbnRE
YXRhJiBzdG9yZSkKK1dlYkludGVudERhdGE6OldlYkludGVudERhdGEoY29uc3QgSW50ZW50RGF0
YSYgc3RvcmUsIFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcykKICAgICA6IG1fc3RvcmUoc3RvcmUp
CisgICAgLCBtX3Byb2Nlc3MocHJvY2VzcykKIHsKIH0KIAorV2ViSW50ZW50RGF0YTo6fldlYklu
dGVudERhdGEoKQoreworICAgIC8vIFJlbW92ZSBNZXNzYWdlUG9ydENoYW5uZWxzIGZyb20gV2Vi
UHJvY2Vzcy4KKyAgICBpZiAobV9wcm9jZXNzICYmICFtX3N0b3JlLm1lc3NhZ2VQb3J0cy5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgc2l6ZV90IG51bU1lc3NhZ2VQb3J0cyA9IG1fc3RvcmUubWVzc2Fn
ZVBvcnRzLnNpemUoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1NZXNzYWdl
UG9ydHM7ICsraSkKKyAgICAgICAgICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVBvcnRDaGFu
bmVsKG1fc3RvcmUubWVzc2FnZVBvcnRzW2ldKTsKKyAgICB9Cit9CisKIFBhc3NSZWZQdHI8V2Vi
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBXZWJJbnRlbnREYXRhOjpkYXRhKCkgY29uc3QKIHsKICAg
ICBWZWN0b3I8dWludDhfdD4gZGF0YUNvcHkgPSBtX3N0b3JlLmRhdGE7CkBAIC02Niw2ICs3OSw3
IEBAIFBhc3NSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4gV2ViSW50ZW50RGF0YTo6ZXh0cmFz
KCkgY29uc3QKICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgZW5k
ID0gbV9zdG9yZS5leHRyYXMuZW5kKCk7CiAgICAgZm9yIChIYXNoTWFwPFN0cmluZywgU3RyaW5n
Pjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3N0b3JlLmV4dHJhcy5iZWdpbigpOyBpdCAhPSBlbmQ7
ICsraXQpCiAgICAgICAgIHdrRXh0cmFzLnNldChpdC0+Zmlyc3QsIFdlYlN0cmluZzo6Y3JlYXRl
KGl0LT5zZWNvbmQpKTsKKwogICAgIHJldHVybiBJbW11dGFibGVEaWN0aW9uYXJ5OjphZG9wdCh3
a0V4dHJhcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJ
bnRlbnREYXRhLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW50ZW50RGF0YS5oCmlu
ZGV4IGRlY2Y0YWUuLjlkNTlmOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJJbnRlbnREYXRhLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkludGVu
dERhdGEuaApAQCAtMzAsMjEgKzMwLDI2IEBACiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNp
bmNsdWRlICJJbnRlbnREYXRhLmgiCi0jaW5jbHVkZSAiV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9LVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIEltbXV0YWJsZUFycmF5OworY2xhc3Mg
SW1tdXRhYmxlRGljdGlvbmFyeTsKK2NsYXNzIFdlYlByb2Nlc3NQcm94eTsKK2NsYXNzIFdlYlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTsKKwogY2xhc3MgV2ViSW50ZW50RGF0YSA6IHB1YmxpYyBBUElP
YmplY3QgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBUeXBlIEFQSVR5cGUgPSBUeXBlSW50
ZW50RGF0YTsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkludGVudERhdGE+IGNyZWF0ZShj
b25zdCBJbnRlbnREYXRhJiBzdG9yZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJJbnRlbnRE
YXRhPiBjcmVhdGUoY29uc3QgSW50ZW50RGF0YSYgc3RvcmUsIFdlYlByb2Nlc3NQcm94eSogcHJv
Y2VzcykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViSW50ZW50RGF0YShz
dG9yZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkludGVudERhdGEoc3RvcmUs
IHByb2Nlc3MpKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5XZWJJbnRlbnREYXRhKCkgeyB9Cisg
ICAgdmlydHVhbCB+V2ViSW50ZW50RGF0YSgpOwogCiAgICAgY29uc3QgU3RyaW5nJiBhY3Rpb24o
KSBjb25zdCB7IHJldHVybiBtX3N0b3JlLmFjdGlvbjsgfQogICAgIGNvbnN0IFN0cmluZyYgcGF5
bG9hZFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3N0b3JlLnR5cGU7IH0KQEAgLTU3LDExICs2Miwx
MiBAQCBwdWJsaWM6CiAgICAgY29uc3QgSW50ZW50RGF0YSYgc3RvcmUoKSBjb25zdCB7IHJldHVy
biBtX3N0b3JlOyB9CiAKIHByaXZhdGU6Ci0gICAgV2ViSW50ZW50RGF0YShjb25zdCBJbnRlbnRE
YXRhJik7CisgICAgV2ViSW50ZW50RGF0YShjb25zdCBJbnRlbnREYXRhJiwgV2ViUHJvY2Vzc1By
b3h5Kik7CiAKICAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIEFQSVR5cGU7
IH0KIAogICAgIEludGVudERhdGEgbV9zdG9yZTsKKyAgICBXZWJQcm9jZXNzUHJveHkqIG1fcHJv
Y2VzczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA5YzRkZjhlLi5mZjEzNzQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMjIwNiw3ICsyMjA2LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlE
LCBjb25zdCBJbnRlbnREYXRhJgogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gcHJvY2Vzcygp
LT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKIAotICAgIFJl
ZlB0cjxXZWJJbnRlbnREYXRhPiB3ZWJJbnRlbnREYXRhID0gV2ViSW50ZW50RGF0YTo6Y3JlYXRl
KGludGVudERhdGEpOworICAgIFJlZlB0cjxXZWJJbnRlbnREYXRhPiB3ZWJJbnRlbnREYXRhID0g
V2ViSW50ZW50RGF0YTo6Y3JlYXRlKGludGVudERhdGEsIHByb2Nlc3MoKSk7CiAgICAgbV9sb2Fk
ZXJDbGllbnQuZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKHRoaXMsIGZyYW1lLCB3ZWJJbnRlbnRE
YXRhLmdldCgpLCB1c2VyRGF0YS5nZXQoKSk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggZDkwMzU1Yy4uOTU3MGNmNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTE4OSw2
ICsxODksMTYgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlbW92ZVdlYlBhZ2UodWludDY0X3Qg
cGFnZUlEKQogICAgIG1fcGFnZU1hcC5yZW1vdmUocGFnZUlEKTsKIH0KIAorI2lmIEVOQUJMRShX
RUJfSU5URU5UUykKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZW1vdmVNZXNzYWdlUG9ydENoYW5u
ZWwodWludDY0X3QgY2hhbm5lbElEKQoreworICAgIGlmICghaXNWYWxpZCgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpSZW1vdmVNZXNzYWdlUG9y
dENoYW5uZWwoY2hhbm5lbElEKSwgMCk7Cit9CisjZW5kaWYKKwogV2ViQmFja0ZvcndhcmRMaXN0
SXRlbSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJCYWNrRm9yd2FyZEl0ZW0odWludDY0X3QgaXRlbUlE
KSBjb25zdAogewogICAgIHJldHVybiBtX2JhY2tGb3J3YXJkTGlzdEl0ZW1NYXAuZ2V0KGl0ZW1J
RCkuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5k
ZXggMDlkODYxYS4uODk5NzRkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuaApAQCAtODUsNiArODUsMTAgQEAgcHVibGljOgogICAgIHZvaWQgYWRkRXhpc3Rp
bmdXZWJQYWdlKFdlYlBhZ2VQcm94eSosIHVpbnQ2NF90IHBhZ2VJRCk7CiAgICAgdm9pZCByZW1v
dmVXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCk7CiAKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisg
ICAgdm9pZCByZW1vdmVNZXNzYWdlUG9ydENoYW5uZWwodWludDY0X3QgY2hhbm5lbElEKTsKKyNl
bmRpZgorCiAgICAgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogd2ViQmFja0ZvcndhcmRJdGVtKHVp
bnQ2NF90IGl0ZW1JRCkgY29uc3Q7CiAKICAgICBSZXNwb25zaXZlbmVzc1RpbWVyKiByZXNwb25z
aXZlbmVzc1RpbWVyKCkgeyByZXR1cm4gJm1fcmVzcG9uc2l2ZW5lc3NUaW1lcjsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZUFQSUNhc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVBUElDYXN0LmgKaW5kZXggMzM1NWQwOC4uMDE4ZWY3OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZUFQSUNhc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlQVBJQ2FzdC5oCkBAIC00Niw2ICs0Niw3IEBAIGNsYXNzIEluamVjdGVk
QnVuZGxlQmFja0ZvcndhcmRMaXN0OwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExp
c3RJdGVtOwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb247CiBjbGFzcyBJ
bmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ7CitjbGFzcyBJbmplY3RlZEJ1bmRsZUludGVudDsK
IGNsYXNzIEluamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdDsKIGNsYXNzIEluamVjdGVkQnVuZGxl
TmF2aWdhdGlvbkFjdGlvbjsKIGNsYXNzIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTsKQEAgLTY0
LDYgKzY1LDcgQEAgV0tfQUREX0FQSV9NQVBQSU5HKFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9u
UmVmLCBJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2kKIFdLX0FERF9BUElfTUFQUElORyhX
S0J1bmRsZUZyYW1lUmVmLCBXZWJGcmFtZSkKIFdLX0FERF9BUElfTUFQUElORyhXS0J1bmRsZUhp
dFRlc3RSZXN1bHRSZWYsIEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdCkKIFdLX0FERF9BUElf
TUFQUElORyhXS0J1bmRsZUluc3BlY3RvclJlZiwgV2ViSW5zcGVjdG9yKQorV0tfQUREX0FQSV9N
QVBQSU5HKFdLQnVuZGxlSW50ZW50UmVmLCBJbmplY3RlZEJ1bmRsZUludGVudCkKIFdLX0FERF9B
UElfTUFQUElORyhXS0J1bmRsZUludGVudFJlcXVlc3RSZWYsIEluamVjdGVkQnVuZGxlSW50ZW50
UmVxdWVzdCkKIFdLX0FERF9BUElfTUFQUElORyhXS0J1bmRsZU5hdmlnYXRpb25BY3Rpb25SZWYs
IEluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbikKIFdLX0FERF9BUElfTUFQUElORyhXS0J1
bmRsZU5vZGVIYW5kbGVSZWYsIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJ
bnRlbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZUludGVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
ZGY3NWM1ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnQuY3BwCkBAIC0wLDAgKzEsMTQwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0tCdW5k
bGVJbnRlbnQuaCIKKworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyNpbmNsdWRlICJJbW11dGFi
bGVBcnJheS5oIgorI2luY2x1ZGUgIkltbXV0YWJsZURpY3Rpb25hcnkuaCIKKyNpbmNsdWRlICJJ
bmplY3RlZEJ1bmRsZUludGVudC5oIgorI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUg
IldLQnVuZGxlQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLRGljdGlvbmFyeS5oIgorI2luY2x1ZGUg
IldLU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjZW5k
aWYKKworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwor
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKyNlbmRpZgorCitXS1R5cGVJRCBXS0J1bmRsZUludGVu
dEdldFR5cGVJRCgpCit7CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorICAgIHJldHVybiB0b0FQ
SShJbmplY3RlZEJ1bmRsZUludGVudDo6QVBJVHlwZSk7CisjZWxzZQorICAgIHJldHVybiAwOwor
I2VuZGlmCit9CisKK1dLQnVuZGxlSW50ZW50UmVmIFdLQnVuZGxlSW50ZW50Q3JlYXRlKFdLRGlj
dGlvbmFyeVJlZiBpbml0RGljdGlvbmFyeVJlZikKK3sKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMp
CisgICAgV0tTdHJpbmdSZWYgYWN0aW9uID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGlj
dGlvbmFyeUdldEl0ZW1Gb3JLZXkoaW5pdERpY3Rpb25hcnlSZWYsIFdLU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKCJhY3Rpb24iKSkpOworICAgIEFTU0VSVChhY3Rpb24pOworICAgIFdLU3Ry
aW5nUmVmIHR5cGUgPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tEaWN0aW9uYXJ5R2V0SXRl
bUZvcktleShpbml0RGljdGlvbmFyeVJlZiwgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
InR5cGUiKSkpOworICAgIEFTU0VSVCh0eXBlKTsKKyAgICBXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZVJlZiBkYXRhID0gc3RhdGljX2Nhc3Q8V0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWY+KFdLRGlj
dGlvbmFyeUdldEl0ZW1Gb3JLZXkoaW5pdERpY3Rpb25hcnlSZWYsIFdLU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKCJkYXRhIikpKTsKKyAgICBNZXNzYWdlUG9ydEFycmF5IGR1bW15UG9ydHM7
CisgICAgRXhjZXB0aW9uQ29kZSBlYzsKKworICAgIFJlZlB0cjxJbnRlbnQ+IGNvcmVJbnRlbnQg
PSBJbnRlbnQ6OmNyZWF0ZSh0b0ltcGwoYWN0aW9uKS0+c3RyaW5nKCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvSW1wbCh0eXBlKS0+c3RyaW5nKCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPyBz
dGF0aWNfY2FzdDxTZXJpYWxpemVkU2NyaXB0VmFsdWUqPih0b0ltcGwoZGF0YSktPmludGVybmFs
UmVwcmVzZW50YXRpb24oKSkgOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkdW1teVBvcnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBlYyk7CisKKyAgICByZXR1cm4gdG9BUEkoSW5qZWN0ZWRCdW5kbGVJ
bnRlbnQ6OmNyZWF0ZShjb3JlSW50ZW50LmdldCgpKS5sZWFrUmVmKCkpOworI2Vsc2UKKyAgICBy
ZXR1cm4gMDsKKyNlbmRpZgorfQorCitXS1N0cmluZ1JlZiBXS0J1bmRsZUludGVudENvcHlBY3Rp
b24oV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmKQoreworI2lmIEVOQUJMRShXRUJfSU5URU5U
UykKKyAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKGludGVudFJlZiktPmFjdGlvbigpKTsK
KyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KKworV0tTdHJpbmdSZWYgV0tCdW5kbGVJ
bnRlbnRDb3B5VHlwZShXS0J1bmRsZUludGVudFJlZiBpbnRlbnRSZWYpCit7CisjaWYgRU5BQkxF
KFdFQl9JTlRFTlRTKQorICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwoaW50ZW50UmVmKS0+
cGF5bG9hZFR5cGUoKSk7CisjZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCit9CisKK1dLVVJM
UmVmIFdLQnVuZGxlSW50ZW50Q29weVNlcnZpY2UoV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVm
KQoreworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICByZXR1cm4gdG9Db3BpZWRVUkxBUEko
dG9JbXBsKGludGVudFJlZiktPnNlcnZpY2UoKSk7CisjZWxzZQorICAgIHJldHVybiAwOworI2Vu
ZGlmCit9CisKK1dLQXJyYXlSZWYgV0tCdW5kbGVJbnRlbnRDb3B5U3VnZ2VzdGlvbnMoV0tCdW5k
bGVJbnRlbnRSZWYgaW50ZW50UmVmKQoreworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICBy
ZXR1cm4gdG9BUEkodG9JbXBsKGludGVudFJlZiktPnN1Z2dlc3Rpb25zKCkubGVha1JlZigpKTsK
KyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KKworV0tTdHJpbmdSZWYgV0tCdW5kbGVJ
bnRlbnRDb3B5RXh0cmFWYWx1ZShXS0J1bmRsZUludGVudFJlZiBpbnRlbnRSZWYsIFdLU3RyaW5n
UmVmIGtleSkKK3sKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgcmV0dXJuIHRvQ29waWVk
QVBJKHRvSW1wbChpbnRlbnRSZWYpLT5leHRyYSh0b1dURlN0cmluZyhrZXkpKSk7CisjZWxzZQor
ICAgIHJldHVybiAwOworI2VuZGlmCit9CisKK1dLRGljdGlvbmFyeVJlZiBXS0J1bmRsZUludGVu
dENvcHlFeHRyYXMoV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmKQoreworI2lmIEVOQUJMRShX
RUJfSU5URU5UUykKKyAgICByZXR1cm4gdG9BUEkodG9JbXBsKGludGVudFJlZiktPmV4dHJhcygp
LmxlYWtSZWYoKSk7CisjZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCit9CisKK3NpemVfdCBX
S0J1bmRsZUludGVudE1lc3NhZ2VQb3J0Q291bnQoV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVm
KQoreworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICBNZXNzYWdlUG9ydENoYW5uZWxBcnJh
eSogbWVzc2FnZVBvcnRzID0gdG9JbXBsKGludGVudFJlZiktPmNvcmVJbnRlbnQoKS0+bWVzc2Fn
ZVBvcnRzKCk7CisKKyAgICByZXR1cm4gbWVzc2FnZVBvcnRzID8gbWVzc2FnZVBvcnRzLT5zaXpl
KCkgOiAwOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVu
dC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZUludGVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlNGI1MDcK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50LmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBXS0J1bmRsZUludGVudF9oCisjZGVmaW5lIFdLQnVuZGxlSW50ZW50
X2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cwor
ZXh0ZXJuICJDIiB7CisjZW5kaWYKKworV0tfRVhQT1JUIFdLVHlwZUlEIFdLQnVuZGxlSW50ZW50
R2V0VHlwZUlEKCk7CisKK1dLX0VYUE9SVCBXS0J1bmRsZUludGVudFJlZiBXS0J1bmRsZUludGVu
dENyZWF0ZShXS0RpY3Rpb25hcnlSZWYgaW5pdERpY3Rpb25hcnkpOworCitXS19FWFBPUlQgV0tT
dHJpbmdSZWYgV0tCdW5kbGVJbnRlbnRDb3B5QWN0aW9uKFdLQnVuZGxlSW50ZW50UmVmIGludGVu
dFJlZik7CitXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tCdW5kbGVJbnRlbnRDb3B5VHlwZShXS0J1
bmRsZUludGVudFJlZiBpbnRlbnRSZWYpOworV0tfRVhQT1JUIFdLVVJMUmVmIFdLQnVuZGxlSW50
ZW50Q29weVNlcnZpY2UoV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmKTsKK1dLX0VYUE9SVCBX
S0FycmF5UmVmIFdLQnVuZGxlSW50ZW50Q29weVN1Z2dlc3Rpb25zKFdLQnVuZGxlSW50ZW50UmVm
IGludGVudFJlZik7CitXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tCdW5kbGVJbnRlbnRDb3B5RXh0
cmFWYWx1ZShXS0J1bmRsZUludGVudFJlZiBpbnRlbnRSZWYsIFdLU3RyaW5nUmVmIGtleSk7CitX
S19FWFBPUlQgV0tEaWN0aW9uYXJ5UmVmIFdLQnVuZGxlSW50ZW50Q29weUV4dHJhcyhXS0J1bmRs
ZUludGVudFJlZiBpbnRlbnRSZWYpOworV0tfRVhQT1JUIHNpemVfdCBXS0J1bmRsZUludGVudE1l
c3NhZ2VQb3J0Q291bnQoV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmKTsKKworI2lmZGVmIF9f
Y3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8vIFdLQnVuZGxlSW50ZW50X2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVJbnRlbnRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnRSZXF1ZXN0LmNwcAppbmRleCA4MWM5NWM2Li5h
NDc3MmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudFJlcXVlc3QuY3Bw
CkBAIC0yNywxMCArMjcsMTAgQEAKICNpbmNsdWRlICJXS0J1bmRsZUludGVudFJlcXVlc3QuaCIK
IAogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZUludGVu
dC5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5oIgogI2luY2x1ZGUg
IldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLQnVuZGxlQVBJQ2FzdC5oIgotI2luY2x1ZGUgIldl
YkludGVudERhdGEuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKICNlbmRpZgpAQCAtNDQs
MTEgKzQ0LDExIEBAIFdLVHlwZUlEIFdLQnVuZGxlSW50ZW50UmVxdWVzdEdldFR5cGVJRCgpCiAj
ZW5kaWYKIH0KIAotV0tJbnRlbnREYXRhUmVmIFdLQnVuZGxlSW50ZW50UmVxdWVzdENvcHlJbnRl
bnREYXRhKFdLQnVuZGxlSW50ZW50UmVxdWVzdFJlZiByZXF1ZXN0UmVmKQorV0tCdW5kbGVJbnRl
bnRSZWYgV0tCdW5kbGVJbnRlbnRSZXF1ZXN0Q29weUludGVudChXS0J1bmRsZUludGVudFJlcXVl
c3RSZWYgcmVxdWVzdFJlZikKIHsKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0gICAgUmVmUHRy
PFdlYkludGVudERhdGE+IHdlYkludGVudERhdGEgPSB0b0ltcGwocmVxdWVzdFJlZiktPmludGVu
dCgpOwotICAgIHJldHVybiB0b0FQSSh3ZWJJbnRlbnREYXRhLnJlbGVhc2UoKS5sZWFrUmVmKCkp
OworICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZUludGVudD4gd2ViSW50ZW50ID0gdG9JbXBsKHJl
cXVlc3RSZWYpLT5pbnRlbnQoKTsKKyAgICByZXR1cm4gdG9BUEkod2ViSW50ZW50LnJlbGVhc2Uo
KS5sZWFrUmVmKCkpOwogI2Vsc2UKICAgICByZXR1cm4gMDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUlu
dGVudFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVJbnRlbnRSZXF1ZXN0LmgKaW5kZXggYjE4MTM2ZC4uMTA1YWZhNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZUludGVudFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50UmVxdWVzdC5oCkBAIC0zNCw3ICszNCw3
IEBAIGV4dGVybiAiQyIgewogCiBXS19FWFBPUlQgV0tUeXBlSUQgV0tCdW5kbGVJbnRlbnRSZXF1
ZXN0R2V0VHlwZUlEKCk7CiAKLVdLX0VYUE9SVCBXS0ludGVudERhdGFSZWYgV0tCdW5kbGVJbnRl
bnRSZXF1ZXN0Q29weUludGVudERhdGEoV0tCdW5kbGVJbnRlbnRSZXF1ZXN0UmVmIHJlcXVlc3Qp
OworV0tfRVhQT1JUIFdLQnVuZGxlSW50ZW50UmVmIFdLQnVuZGxlSW50ZW50UmVxdWVzdENvcHlJ
bnRlbnQoV0tCdW5kbGVJbnRlbnRSZXF1ZXN0UmVmIHJlcXVlc3QpOwogCiBXS19FWFBPUlQgdm9p
ZCBXS0J1bmRsZUludGVudFJlcXVlc3RQb3N0UmVzdWx0KFdLQnVuZGxlSW50ZW50UmVxdWVzdFJl
ZiByZXF1ZXN0LCBXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiBzZXJpYWxpemVkRGF0YSk7CiBX
S19FWFBPUlQgdm9pZCBXS0J1bmRsZUludGVudFJlcXVlc3RQb3N0RmFpbHVyZShXS0J1bmRsZUlu
dGVudFJlcXVlc3RSZWYgcmVxdWVzdCwgV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYgc2VyaWFs
aXplZERhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCmluZGV4IDFmNDNhMTIuLmJm
NDYzY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KIAogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSNp
bmNsdWRlICJXZWJJbnRlbnREYXRhLmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVJbnRlbnQu
aCIKICNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwpAQCAtMzE2LDEwICszMTYsMTAg
QEAgZG91YmxlIFdLQnVuZGxlUGFnZUdldEJhY2tpbmdTY2FsZUZhY3RvcihXS0J1bmRsZVBhZ2VS
ZWYgcGFnZVJlZikKICAgICByZXR1cm4gdG9JbXBsKHBhZ2VSZWYpLT5kZXZpY2VTY2FsZUZhY3Rv
cigpOwogfQogCi12b2lkIFdLQnVuZGxlUGFnZURlbGl2ZXJJbnRlbnRUb0ZyYW1lKFdLQnVuZGxl
UGFnZVJlZiBwYWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVmLCBXS0ludGVudERhdGFS
ZWYgaW50ZW50UmVmKQordm9pZCBXS0J1bmRsZVBhZ2VEZWxpdmVySW50ZW50VG9GcmFtZShXS0J1
bmRsZVBhZ2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZVJlZiwgV0tCdW5kbGVJ
bnRlbnRSZWYgaW50ZW50UmVmKQogewogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSAgICB0b0lt
cGwocGFnZVJlZiktPmRlbGl2ZXJJbnRlbnRUb0ZyYW1lKHRvSW1wbChmcmFtZVJlZiktPmZyYW1l
SUQoKSwgdG9JbXBsKGludGVudFJlZiktPnN0b3JlKCkpOworICAgIHRvSW1wbChwYWdlUmVmKS0+
ZGVsaXZlckNvcmVJbnRlbnRUb0ZyYW1lKHRvSW1wbChmcmFtZVJlZiktPmZyYW1lSUQoKSwgdG9J
bXBsKGludGVudFJlZiktPmNvcmVJbnRlbnQoKSk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBh
Z2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVQYWdlLmgKaW5kZXggMjhlZWU1Yy4uOGJjNzY3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
UGFnZS5oCkBAIC00MTAsNyArNDEwLDcgQEAgV0tfRVhQT1JUIFdLSW1hZ2VSZWYgV0tCdW5kbGVQ
YWdlQ3JlYXRlU2NhbGVkU25hcHNob3RJbkRvY3VtZW50Q29vcmRpbmF0ZXMoV0tCdW4KIAogV0tf
RVhQT1JUIGRvdWJsZSBXS0J1bmRsZVBhZ2VHZXRCYWNraW5nU2NhbGVGYWN0b3IoV0tCdW5kbGVQ
YWdlUmVmIHBhZ2UpOwogCi1XS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VEZWxpdmVySW50ZW50
VG9GcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tJ
bnRlbnREYXRhUmVmIGludGVudCk7CitXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VEZWxpdmVy
SW50ZW50VG9GcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFt
ZSwgV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50KTsKIAogI2lmIGRlZmluZWQoRU5BQkxFX0lOU1BF
Q1RPUikgJiYgRU5BQkxFX0lOU1BFQ1RPUgogV0tfRVhQT1JUIFdLQnVuZGxlSW5zcGVjdG9yUmVm
IFdLQnVuZGxlUGFnZUdldEluc3BlY3RvcihXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlSW50ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVJbnRlbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmI3YWI1ODYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50LmNwcApAQCAtMCwwICsxLDk4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW5q
ZWN0ZWRCdW5kbGVJbnRlbnQuaCIKKworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKworI2luY2x1
ZGUgIkltbXV0YWJsZUFycmF5LmgiCisjaW5jbHVkZSAiSW1tdXRhYmxlRGljdGlvbmFyeS5oIgor
I2luY2x1ZGUgIldlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIldlYlN0cmlu
Zy5oIgorI2luY2x1ZGUgIldlYlVSTC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK1Bhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVJbnRlbnQ+IElu
amVjdGVkQnVuZGxlSW50ZW50OjpjcmVhdGUoV2ViQ29yZTo6SW50ZW50KiBpbnRlbnQpCit7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbmplY3RlZEJ1bmRsZUludGVudChpbnRlbnQpKTsKK30K
KworSW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OkluamVjdGVkQnVuZGxlSW50ZW50KFdlYkNvcmU6Oklu
dGVudCogaW50ZW50KQorICAgIDogbV9pbnRlbnQoaW50ZW50KQoreworfQorCitTdHJpbmcgSW5q
ZWN0ZWRCdW5kbGVJbnRlbnQ6OmFjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW50ZW50
LT5hY3Rpb24oKTsKK30KKworU3RyaW5nIEluamVjdGVkQnVuZGxlSW50ZW50OjpwYXlsb2FkVHlw
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW50ZW50LT50eXBlKCk7Cit9CisKK1dlYkNvcmU6
OktVUkwgSW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OnNlcnZpY2UoKSBjb25zdAoreworICAgIHJldHVy
biBtX2ludGVudC0+c2VydmljZSgpOworfQorCitQYXNzUmVmUHRyPFdlYlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gSW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OmRhdGEoKSBjb25zdAoreworICAgIHJldHVy
biBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShtX2ludGVudC0+ZGF0YSgpKTsKK30K
KworU3RyaW5nIEluamVjdGVkQnVuZGxlSW50ZW50OjpleHRyYShjb25zdCBTdHJpbmcmIGtleSkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9pbnRlbnQtPmV4dHJhcygpLmdldChrZXkpOworfQorCitQ
YXNzUmVmUHRyPEltbXV0YWJsZURpY3Rpb25hcnk+IEluamVjdGVkQnVuZGxlSW50ZW50OjpleHRy
YXMoKSBjb25zdAoreworICAgIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBleHRyYXMg
PSBtX2ludGVudC0+ZXh0cmFzKCk7CisgICAgSW1tdXRhYmxlRGljdGlvbmFyeTo6TWFwVHlwZSB3
a0V4dHJhczsKKyAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgZW5k
ID0gZXh0cmFzLmVuZCgpOworICAgIGZvciAoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gZXh0cmFzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAg
d2tFeHRyYXMuc2V0KGl0LT5maXJzdCwgV2ViU3RyaW5nOjpjcmVhdGUoaXQtPnNlY29uZCkpOwor
ICAgIHJldHVybiBJbW11dGFibGVEaWN0aW9uYXJ5OjphZG9wdCh3a0V4dHJhcyk7Cit9CisKK1Bh
c3NSZWZQdHI8SW1tdXRhYmxlQXJyYXk+IEluamVjdGVkQnVuZGxlSW50ZW50OjpzdWdnZXN0aW9u
cygpIGNvbnN0Cit7CisgICAgY29uc3QgVmVjdG9yPEtVUkw+JiBzdWdnZXN0aW9ucyA9IG1faW50
ZW50LT5zdWdnZXN0aW9ucygpOworICAgIGNvbnN0IHNpemVfdCBudW1TdWdnZXN0aW9ucyA9IHN1
Z2dlc3Rpb25zLnNpemUoKTsKKyAgICBWZWN0b3I8UmVmUHRyPEFQSU9iamVjdD4gPiB3a1N1Z2dl
c3Rpb25zKG51bVN1Z2dlc3Rpb25zKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVt
U3VnZ2VzdGlvbnM7ICsraSkKKyAgICAgICAgd2tTdWdnZXN0aW9uc1tpXSA9IFdlYlVSTDo6Y3Jl
YXRlKHN1Z2dlc3Rpb25zW2ldKTsKKyAgICByZXR1cm4gSW1tdXRhYmxlQXJyYXk6OmFkb3B0KHdr
U3VnZ2VzdGlvbnMpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVO
QUJMRShXRUJfSU5URU5UUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZDNmMDZjCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVu
dC5oCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29y
cG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW5qZWN0
ZWRCdW5kbGVJbnRlbnRfaAorI2RlZmluZSBJbmplY3RlZEJ1bmRsZUludGVudF9oCisKKyNpZiBF
TkFCTEUoV0VCX0lOVEVOVFMpCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL0ludGVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgorI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBJbW11dGFibGVBcnJheTsK
K2NsYXNzIEltbXV0YWJsZURpY3Rpb25hcnk7CitjbGFzcyBXZWJTZXJpYWxpemVkU2NyaXB0VmFs
dWU7CisKK2NsYXNzIEluamVjdGVkQnVuZGxlSW50ZW50IDogcHVibGljIEFQSU9iamVjdCB7Citw
dWJsaWM6CisgICAgc3RhdGljIGNvbnN0IFR5cGUgQVBJVHlwZSA9IFR5cGVCdW5kbGVJbnRlbnQ7
CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZUludGVudD4gY3JlYXRlKFdl
YkNvcmU6OkludGVudCopOworCisgICAgU3RyaW5nIGFjdGlvbigpIGNvbnN0OworICAgIFN0cmlu
ZyBwYXlsb2FkVHlwZSgpIGNvbnN0OworICAgIFdlYkNvcmU6OktVUkwgc2VydmljZSgpIGNvbnN0
OworICAgIFBhc3NSZWZQdHI8V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhKCkgY29uc3Q7
CisgICAgU3RyaW5nIGV4dHJhKGNvbnN0IFN0cmluZyYga2V5KSBjb25zdDsKKyAgICBQYXNzUmVm
UHRyPEltbXV0YWJsZURpY3Rpb25hcnk+IGV4dHJhcygpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8
SW1tdXRhYmxlQXJyYXk+IHN1Z2dlc3Rpb25zKCkgY29uc3Q7CisKKyAgICBXZWJDb3JlOjpJbnRl
bnQqIGNvcmVJbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2ludGVudC5nZXQoKTsgfQorCitwcml2
YXRlOgorICAgIGV4cGxpY2l0IEluamVjdGVkQnVuZGxlSW50ZW50KFdlYkNvcmU6OkludGVudCop
OworCisgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBBUElUeXBlOyB9CisK
KyAgICBSZWZQdHI8V2ViQ29yZTo6SW50ZW50PiBtX2ludGVudDsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9JTlRFTlRTKQorCisjZW5kaWYgLy8g
SW5qZWN0ZWRCdW5kbGVJbnRlbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVu
dFJlcXVlc3QuY3BwCmluZGV4IDVjY2IxOWMuLmVhYzBiODNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50UmVx
dWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVk
ZSAiSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0LmgiCiAKICNpZiBFTkFCTEUoV0VCX0lOVEVO
VFMpCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVJbnRlbnQuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0ludGVudFJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaD4K
IApAQCAtNTQsOSArNTUsOSBAQCB2b2lkIEluamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdDo6cG9z
dEZhaWx1cmUoV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlKiBkYXRhKQogICAgIG1faW50ZW50UmVx
dWVzdC0+cG9zdEZhaWx1cmUoc3RhdGljX2Nhc3Q8U2VyaWFsaXplZFNjcmlwdFZhbHVlKj4oZGF0
YS0+aW50ZXJuYWxSZXByZXNlbnRhdGlvbigpKSk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViSW50ZW50
RGF0YT4gSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0OjppbnRlbnQoKSBjb25zdAorUGFzc1Jl
ZlB0cjxJbmplY3RlZEJ1bmRsZUludGVudD4gSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0Ojpp
bnRlbnQoKSBjb25zdAogewotICAgIHJldHVybiBXZWJJbnRlbnREYXRhOjpjcmVhdGUoSW50ZW50
RGF0YShtX2ludGVudFJlcXVlc3QtPmludGVudCgpKSk7CisgICAgcmV0dXJuIEluamVjdGVkQnVu
ZGxlSW50ZW50OjpjcmVhdGUobV9pbnRlbnRSZXF1ZXN0LT5pbnRlbnQoKSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0
LmgKaW5kZXggYjU4NzBkOS4uMzNhMzE5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
SW50ZW50UmVxdWVzdC5oCkBAIC0yOSw3ICsyOSw2IEBACiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRT
KQogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCi0jaW5jbHVkZSAiV2ViSW50ZW50RGF0YS5oIgog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC00MCw2ICszOSw3IEBAIGNsYXNzIEludGVudFJlcXVl
c3Q7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBJbmplY3RlZEJ1bmRsZUludGVudDsK
IGNsYXNzIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIAogY2xhc3MgSW5qZWN0ZWRCdW5kbGVJ
bnRlbnRSZXF1ZXN0IDogcHVibGljIEFQSU9iamVjdCB7CkBAIC01MSw3ICs1MSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHBvc3RSZXN1bHQoV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlKik7CiAgICAg
dm9pZCBwb3N0RmFpbHVyZShXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUqKTsKIAotICAgIFBhc3NS
ZWZQdHI8V2ViSW50ZW50RGF0YT4gaW50ZW50KCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxJbmpl
Y3RlZEJ1bmRsZUludGVudD4gaW50ZW50KCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgZXhwbGlj
aXQgSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0KFdlYkNvcmU6OkludGVudFJlcXVlc3QqKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4
IGYzNmZjMDIuLmQ2ZGRjYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmNwcApAQCAtNjMsNiArNjMsOCBAQAogI2luY2x1ZGUgIkludGVudERhdGEu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0RPTVdpbmRvd0ludGVudHMuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0RlbGl2ZXJlZEludGVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSW50ZW50Lmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oPgogI2VuZGlmCiAKICNp
ZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFdJTikKQEAgLTI0NiwxMyArMjQ4LDM5IEBAIHZv
aWQgV2ViRnJhbWU6OmNvbnZlcnRIYW5kbGVUb0Rvd25sb2FkKFJlc291cmNlSGFuZGxlKiBoYW5k
bGUsIGNvbnN0IFJlc291cmNlUmVxCiB2b2lkIFdlYkZyYW1lOjpkZWxpdmVySW50ZW50KGNvbnN0
IEludGVudERhdGEmIGludGVudERhdGEpCiB7CiAgICAgT3duUHRyPERlbGl2ZXJlZEludGVudENs
aWVudD4gZHVtbXlDbGllbnQ7Ci0gICAgT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IGR1bW15UG9y
dHM7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGFDb3B5ID0gaW50ZW50RGF0YS5kYXRhOworCisg
ICAgT3duUHRyPFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVsczsKKyAg
ICBpZiAoIWludGVudERhdGEubWVzc2FnZVBvcnRzLmlzRW1wdHkoKSkgeworICAgICAgICBjaGFu
bmVscyA9IGFkb3B0UHRyKG5ldyBXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxBcnJheShpbnRl
bnREYXRhLm1lc3NhZ2VQb3J0cy5zaXplKCkpKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBpbnRlbnREYXRhLm1lc3NhZ2VQb3J0cy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgICgq
Y2hhbm5lbHMpW2ldID0gTWVzc2FnZVBvcnRDaGFubmVsOjpjcmVhdGUoV2ViUHJvY2Vzczo6c2hh
cmVkKCkubWVzc2FnZVBvcnRDaGFubmVsKGludGVudERhdGEubWVzc2FnZVBvcnRzLmF0KGkpKSk7
CisgICAgfQorICAgIE93blB0cjxXZWJDb3JlOjpNZXNzYWdlUG9ydEFycmF5PiBtZXNzYWdlUG9y
dHMgPSBXZWJDb3JlOjpNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cygqbV9jb3JlRnJhbWUtPmRv
bVdpbmRvdygpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGNoYW5uZWxzLnJlbGVhc2UoKSk7
CisKICAgICBSZWZQdHI8RGVsaXZlcmVkSW50ZW50PiBkZWxpdmVyZWRJbnRlbnQgPSBEZWxpdmVy
ZWRJbnRlbnQ6OmNyZWF0ZShtX2NvcmVGcmFtZSwgZHVtbXlDbGllbnQucmVsZWFzZSgpLCBpbnRl
bnREYXRhLmFjdGlvbiwgaW50ZW50RGF0YS50eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6YWRvcHQoZGF0YUNvcHkpLCBkdW1teVBvcnRzLnJlbGVhc2UoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0KGRhdGFDb3B5KSwgbWVzc2FnZVBv
cnRzLnJlbGVhc2UoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlbnREYXRhLmV4dHJhcyk7CiAgICAgV2Vi
Q29yZTo6RE9NV2luZG93SW50ZW50czo6ZnJvbShtX2NvcmVGcmFtZS0+ZG9tV2luZG93KCkpLT5k
ZWxpdmVyKGRlbGl2ZXJlZEludGVudC5yZWxlYXNlKCkpOwogfQorCit2b2lkIFdlYkZyYW1lOjpk
ZWxpdmVySW50ZW50KEludGVudCogaW50ZW50KQoreworICAgIE93blB0cjxEZWxpdmVyZWRJbnRl
bnRDbGllbnQ+IGR1bW15Q2xpZW50OworCisgICAgT3duUHRyPFdlYkNvcmU6Ok1lc3NhZ2VQb3J0
Q2hhbm5lbEFycmF5PiBjaGFubmVsczsKKyAgICBXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxB
cnJheSogb3JpZ0NoYW5uZWxzID0gaW50ZW50LT5tZXNzYWdlUG9ydHMoKTsKKyAgICBpZiAob3Jp
Z0NoYW5uZWxzICYmIG9yaWdDaGFubmVscy0+c2l6ZSgpKSB7CisgICAgICAgIGNoYW5uZWxzID0g
YWRvcHRQdHIobmV3IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5KG9yaWdDaGFubmVs
cy0+c2l6ZSgpKSk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb3JpZ0NoYW5uZWxz
LT5zaXplKCk7ICsraSkKKyAgICAgICAgICAgICgqY2hhbm5lbHMpW2ldID0gb3JpZ0NoYW5uZWxz
LT5hdChpKS5yZWxlYXNlKCk7CisgICAgfQorICAgIE93blB0cjxXZWJDb3JlOjpNZXNzYWdlUG9y
dEFycmF5PiBtZXNzYWdlUG9ydHMgPSBXZWJDb3JlOjpNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0
cygqbV9jb3JlRnJhbWUtPmRvbVdpbmRvdygpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGNo
YW5uZWxzLnJlbGVhc2UoKSk7CisKKyAgICBSZWZQdHI8RGVsaXZlcmVkSW50ZW50PiBkZWxpdmVy
ZWRJbnRlbnQgPSBEZWxpdmVyZWRJbnRlbnQ6OmNyZWF0ZShtX2NvcmVGcmFtZSwgZHVtbXlDbGll
bnQucmVsZWFzZSgpLCBpbnRlbnQtPmFjdGlvbigpLCBpbnRlbnQtPnR5cGUoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnRlbnQtPmRhdGEoKSwgbWVzc2FnZVBvcnRzLnJlbGVhc2UoKSwgaW50ZW50LT5leHRy
YXMoKSk7CisgICAgV2ViQ29yZTo6RE9NV2luZG93SW50ZW50czo6ZnJvbShtX2NvcmVGcmFtZS0+
ZG9tV2luZG93KCkpLT5kZWxpdmVyKGRlbGl2ZXJlZEludGVudC5yZWxlYXNlKCkpOworfQogI2Vu
ZGlmCiAKIFN0cmluZyBXZWJGcmFtZTo6c291cmNlKCkgY29uc3QgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCmluZGV4IGJkNmMwMzguLmVlYTA5YjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCkBAIC00Miw2
ICs0Miw5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgRnJhbWU7CiAgICAgY2xh
c3MgSFRNTEZyYW1lT3duZXJFbGVtZW50OworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICBj
bGFzcyBJbnRlbnQ7CisjZW5kaWYKICAgICBjbGFzcyBLVVJMOwogfQogCkBAIC04MSw2ICs4NCw3
IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKICAgICB2b2lkIGRlbGl2ZXJJ
bnRlbnQoY29uc3QgSW50ZW50RGF0YSYpOworICAgIHZvaWQgZGVsaXZlckludGVudChXZWJDb3Jl
OjpJbnRlbnQqKTsKICNlbmRpZgogCiAgICAgU3RyaW5nIHNvdXJjZSgpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDU5NjE3ZGYu
LjE5MTU5NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKQEAgLTE0MCw2ICsxNDAsNyBAQAogCiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQogI2lu
Y2x1ZGUgIkludGVudERhdGEuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ludGVudC5oPgogI2VuZGlm
CiAKICNpZiBFTkFCTEUoVklCUkFUSU9OKQpAQCAtMTk1OSw2ICsxOTYwLDEyIEBAIHZvaWQgV2Vi
UGFnZTo6ZGVsaXZlckludGVudFRvRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgSW50ZW50
RGF0YSYgaW50ZW50RGF0CiAKICAgICBmcmFtZS0+ZGVsaXZlckludGVudChpbnRlbnREYXRhKTsK
IH0KKwordm9pZCBXZWJQYWdlOjpkZWxpdmVyQ29yZUludGVudFRvRnJhbWUodWludDY0X3QgZnJh
bWVJRCwgSW50ZW50KiBjb3JlSW50ZW50KQoreworICAgIGlmIChXZWJGcmFtZSogZnJhbWUgPSBX
ZWJQcm9jZXNzOjpzaGFyZWQoKS53ZWJGcmFtZShmcmFtZUlEKSkKKyAgICAgICAgZnJhbWUtPmRl
bGl2ZXJJbnRlbnQoY29yZUludGVudCk7Cit9CiAjZW5kaWYKIAogdm9pZCBXZWJQYWdlOjpwcmVm
ZXJlbmNlc0RpZENoYW5nZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGJiZmFiZDAuLmVj
NWFmMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApA
QCAtMTA2LDYgKzEwNiw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBGcmFtZTsK
ICAgICBjbGFzcyBGcmFtZVZpZXc7CiAgICAgY2xhc3MgSFRNTFBsdWdJbkVsZW1lbnQ7CisjaWYg
RU5BQkxFKFdFQl9JTlRFTlRTKQorICAgIGNsYXNzIEludGVudDsKKyNlbmRpZgogICAgIGNsYXNz
IEtleWJvYXJkRXZlbnQ7CiAgICAgY2xhc3MgUGFnZTsKICAgICBjbGFzcyBQcmludENvbnRleHQ7
CkBAIC00NzYsNyArNDc5LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX0lO
VEVOVFMpCi0gICAgdm9pZCBkZWxpdmVySW50ZW50VG9GcmFtZSh1aW50NjRfdCBmcmFtZUlELCBj
b25zdCBJbnRlbnREYXRhJik7CisgICAgdm9pZCBkZWxpdmVyQ29yZUludGVudFRvRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6SW50ZW50Kik7CiAjZW5kaWYKIAogICAgIHZvaWQgcmVw
bGFjZVNlbGVjdGlvbldpdGhUZXh0KFdlYkNvcmU6OkZyYW1lKiwgY29uc3QgU3RyaW5nJik7CkBA
IC02NDEsNiArNjQ0LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb250ZXh0TWVudUhpZGRlbigp
IHsgbV9pc1Nob3dpbmdDb250ZXh0TWVudSA9IGZhbHNlOyB9CiAjZW5kaWYKIAorI2lmIEVOQUJM
RShXRUJfSU5URU5UUykKKyAgICB2b2lkIGRlbGl2ZXJJbnRlbnRUb0ZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQsIGNvbnN0IEludGVudERhdGEmKTsKKyNlbmRpZgorCiAgICAgc3RhdGljIHZvaWQgc2Ny
b2xsKFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb24sIFdlYkNvcmU6OlNj
cm9sbEdyYW51bGFyaXR5KTsKICAgICBzdGF0aWMgdm9pZCBsb2dpY2FsU2Nyb2xsKFdlYkNvcmU6
OlBhZ2UqLCBXZWJDb3JlOjpTY3JvbGxMb2dpY2FsRGlyZWN0aW9uLCBXZWJDb3JlOjpTY3JvbGxH
cmFudWxhcml0eSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmlu
ZGV4IDZlYjhhYjdlLi4yN2U4YjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAKQEAgLTgwLDYgKzgwLDEwIEBACiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUmFuZG9tTnVtYmVyLmg+CiAKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMp
CisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oPgorI2VuZGlm
CisKICNpZiBFTkFCTEUoTkVUV09SS19JTkZPKQogI2luY2x1ZGUgIldlYk5ldHdvcmtJbmZvTWFu
YWdlck1lc3NhZ2VzLmgiCiAjZW5kaWYKQEAgLTc5MSw2ICs3OTUsMjYgQEAgV2ViUGFnZUdyb3Vw
UHJveHkqIFdlYlByb2Nlc3M6OndlYlBhZ2VHcm91cChjb25zdCBXZWJQYWdlR3JvdXBEYXRhJiBw
YWdlR3JvdXBEYXQKICAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQuZ2V0KCk7CiB9
CiAKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCit1aW50NjRfdCBXZWJQcm9jZXNzOjphZGRNZXNz
YWdlUG9ydENoYW5uZWwoUGFzc1JlZlB0cjxQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbD4gbWVz
c2FnZVBvcnRDaGFubmVsKQoreworICAgIHN0YXRpYyB1aW50NjRfdCBjaGFubmVsSUQgPSAwOwor
ICAgIG1fbWVzc2FnZVBvcnRDaGFubmVscy5hZGQoKytjaGFubmVsSUQsIG1lc3NhZ2VQb3J0Q2hh
bm5lbCk7CisKKyAgICByZXR1cm4gY2hhbm5lbElEOworfQorCitQbGF0Zm9ybU1lc3NhZ2VQb3J0
Q2hhbm5lbCogV2ViUHJvY2Vzczo6bWVzc2FnZVBvcnRDaGFubmVsKHVpbnQ2NF90IGNoYW5uZWxJ
RCkKK3sKKyAgICByZXR1cm4gbV9tZXNzYWdlUG9ydENoYW5uZWxzLmdldChjaGFubmVsSUQpLmdl
dCgpOworfQorCit2b2lkIFdlYlByb2Nlc3M6OnJlbW92ZU1lc3NhZ2VQb3J0Q2hhbm5lbCh1aW50
NjRfdCBjaGFubmVsSUQpCit7CisgICAgbV9tZXNzYWdlUG9ydENoYW5uZWxzLnJlbW92ZShjaGFu
bmVsSUQpOworfQorI2VuZGlmCisKIHN0YXRpYyBib29sIGNhblBsdWdpbkhhbmRsZVJlc3BvbnNl
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIFN0cmluZyBwbHVnaW5Q
YXRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCAwZDAwNWE0Li5k
M2RmMWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtNzgsNiAr
NzgsOSBAQCBRVF9FTkRfTkFNRVNQQUNFCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3Mg
SW50U2l6ZTsKICAgICBjbGFzcyBQYWdlR3JvdXA7CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQor
ICAgIGNsYXNzIFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsOworI2VuZGlmCiAgICAgY2xhc3Mg
UmVzb3VyY2VSZXF1ZXN0OwogICAgIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiB9CkBAIC0xMTIs
NyArMTE1LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGNyZWF0ZVdlYlBhZ2UodWludDY0X3QgcGFn
ZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAgICAgdm9pZCByZW1vdmVX
ZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCk7CiAgICAgV2ViUGFnZSogZm9jdXNlZFdlYlBhZ2UoKSBj
b25zdDsKLSAgICAKKworI2lmIEVOQUJMRShXRUJfSU5URU5UUykgCisgICAgdWludDY0X3QgYWRk
TWVzc2FnZVBvcnRDaGFubmVsKFBhc3NSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1NZXNzYWdlUG9y
dENoYW5uZWw+KTsKKyAgICBXZWJDb3JlOjpQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbCogbWVz
c2FnZVBvcnRDaGFubmVsKHVpbnQ2NF90KTsKKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VQb3J0Q2hh
bm5lbCh1aW50NjRfdCk7CisjZW5kaWYKKwogICAgIEluamVjdGVkQnVuZGxlKiBpbmplY3RlZEJ1
bmRsZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5qZWN0ZWRCdW5kbGUuZ2V0KCk7IH0KIAogICAgIGJv
b2wgaXNTZXBhcmF0ZVByb2Nlc3MoKSBjb25zdDsKQEAgLTMwMCw2ICszMDksMTAgQEAgcHJpdmF0
ZToKIAogICAgIEhhc2hNYXA8dWludDY0X3QsIFdlYkZyYW1lKj4gbV9mcmFtZU1hcDsKIAorI2lm
IEVOQUJMRShXRUJfSU5URU5UUykKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViQ29y
ZTo6UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw+ID4gbV9tZXNzYWdlUG9ydENoYW5uZWxzOwor
I2VuZGlmCisKICAgICBIYXNoU2V0PFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPiBtX21pbWVUeXBl
c1dpdGhDdXN0b21SZXByZXNlbnRhdGlvbnM7CiAKICAgICBUZXh0Q2hlY2tlclN0YXRlIG1fdGV4
dENoZWNrZXJTdGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbgppbmRleCAwZjgzZDViLi4yMjcxNmNlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0yNyw2ICsyNywxMCBA
QCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIHsKICAgICAjIENyZWF0ZSBhIG5ldyBwYWdlLgogICAg
IENyZWF0ZVdlYlBhZ2UodWludDY0X3QgbmV3UGFnZUlELCBXZWJLaXQ6OldlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMgcGFnZUNyZWF0aW9uUGFyYW1ldGVycykKIAorI2lmIEVOQUJMRShXRUJfSU5U
RU5UUykKKyAgICBSZW1vdmVNZXNzYWdlUG9ydENoYW5uZWwodWludDY0X3QgY2hhbm5lbElEKTsK
KyNlbmRpZgorCiAgICAgIyBWaXNpdGVkIGxpbmsgdHJhY2tpbmcuCiAgICAgU2V0VmlzaXRlZExp
bmtUYWJsZShXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZSkKICAgICBWaXNpdGVk
TGlua1N0YXRlQ2hhbmdlZChWZWN0b3I8V2ViQ29yZTo6TGlua0hhc2g+IGxpbmtIYXNoZXMpCmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDUzMTFm
ZC4uYzBkNDYzYyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTA4LTA0ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hy
aXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CisKKyAgICAgICAgW1dLMl0gQWRkIHN1cHBvcnQgZm9y
IFdlYiBJbnRlbnRzIE1lc3NhZ2VQb3J0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODkwNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBVc2UgV0tCdW5kbGVJbnRlbnQgaW5zdGVhZCBvZiBXZWJJbnRlbnRE
YXRhIGluCisgICAgICAgIFdlYktpdFRlc3RSdW5uZXIuIFdUUiBub3cgcHJpbnRzIHRoZSBudW1i
ZXIgb2YKKyAgICAgICAgTWVzc2FnZVBvcnRzIGluIHJlY2VpdmVkIFdlYiBpbnRlbnRzIGFzCisg
ICAgICAgIGV4cGVjdGVkIGJ5IHRoZSBmb2xsb3dpbmcgbGF5b3V0IHRlc3RzOgorICAgICAgICB3
ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLWludm9rZS1wb3J0Lmh0bWwKKyAgICAgICAgd2ViaW50ZW50
cy93ZWItaW50ZW50cy1vYmotY29uc3RydWN0b3IuaHRtbAorCisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwOgorICAgICAgICAo
V1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZSk6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXVFI6OkxheW91dFRlc3RDb250cm9sbGVyOjpkZWxpdmVyV2ViSW50
ZW50KToKKwogMjAxMi0wOC0xMiAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIG1hc3Rlci5jZmcgdW5pdHRlc3QgY2xlYW51cDogU2hvdyBEZXByZWNhdGlv
bldhcm5pbmdzIHdpdGggcHl0aG9uID49IDIuNyB0b28KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcApp
bmRleCBkZTMyY2IwLi45ZjQxZTE3IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCkBAIC01MCw4
ICs1MCw4IEBACiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyNpbmNsdWRlIDxX
ZWJLaXQyL1dLQnVuZGxlSW50ZW50Lmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZUludGVu
dFJlcXVlc3QuaD4KLSNpbmNsdWRlIDxXZWJLaXQyL1dLSW50ZW50RGF0YS5oPgogI2VuZGlmCiAj
aWYgRU5BQkxFKFdFQl9JTlRFTlRTX1RBRykKICNpbmNsdWRlIDxXZWJLaXQyL1dLSW50ZW50U2Vy
dmljZUluZm8uaD4KQEAgLTQzMCwxOSArNDMwLDI0IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdl
OjpkaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxl
CiB7CiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQogICAgIHN0YXRpY19jYXN0PEluamVjdGVkQnVu
ZGxlUGFnZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+bV9jdXJyZW50SW50ZW50
UmVxdWVzdCA9IGludGVudFJlcXVlc3Q7Ci0gICAgV0tSZXRhaW5QdHI8V0tJbnRlbnREYXRhUmVm
PiBpbnRlbnQoQWRvcHRXSywgV0tCdW5kbGVJbnRlbnRSZXF1ZXN0Q29weUludGVudERhdGEoaW50
ZW50UmVxdWVzdCkpOworICAgIFdLUmV0YWluUHRyPFdLQnVuZGxlSW50ZW50UmVmPiBpbnRlbnQo
QWRvcHRXSywgV0tCdW5kbGVJbnRlbnRSZXF1ZXN0Q29weUludGVudChpbnRlbnRSZXF1ZXN0KSk7
CiAKICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQo
IlJlY2VpdmVkIFdlYiBJbnRlbnQ6IGFjdGlvbj0iKTsKLSAgICBXS1JldGFpblB0cjxXS1N0cmlu
Z1JlZj4gd2tBY3Rpb24oQWRvcHRXSywgV0tJbnRlbnREYXRhQ29weUFjdGlvbihpbnRlbnQuZ2V0
KCkpKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tBY3Rpb24oQWRvcHRXSywgV0tC
dW5kbGVJbnRlbnRDb3B5QWN0aW9uKGludGVudC5nZXQoKSkpOwogICAgIEluamVjdGVkQnVuZGxl
OjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCh0b1dURlN0cmluZyh3a0FjdGlvbi5n
ZXQoKSkpOwogICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFw
cGVuZCgiIHR5cGU9Iik7Ci0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHdrVHlwZShBZG9w
dFdLLCBXS0ludGVudERhdGFDb3B5VHlwZShpbnRlbnQuZ2V0KCkpKTsKKyAgICBXS1JldGFpblB0
cjxXS1N0cmluZ1JlZj4gd2tUeXBlKEFkb3B0V0ssIFdLQnVuZGxlSW50ZW50Q29weVR5cGUoaW50
ZW50LmdldCgpKSk7CiAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIo
KS0+YXBwZW5kKHRvV1RGU3RyaW5nKHdrVHlwZS5nZXQoKSkpOwogICAgIEluamVjdGVkQnVuZGxl
OjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiXG4iKTsKIAotICAgIC8vIEZJWE1F
OiBQcmludCBudW1iZXIgb2YgcG9ydHMgd2hlbiBleHBvc2VkIGluIFdlYktpdDIKKyAgICBjb25z
dCBzaXplX3QgbnVtTWVzc2FnZVBvcnRzID0gV0tCdW5kbGVJbnRlbnRNZXNzYWdlUG9ydENvdW50
KGludGVudC5nZXQoKSk7CisgICAgaWYgKG51bU1lc3NhZ2VQb3J0cykgeworICAgICAgICBJbmpl
Y3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoIkhhdmUgIik7Cisg
ICAgICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZChX
VEY6OlN0cmluZzo6bnVtYmVyKG51bU1lc3NhZ2VQb3J0cykpOworICAgICAgICBJbmplY3RlZEJ1
bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoIiBwb3J0c1xuIik7CisgICAg
fQogCi0gICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IHdrU2VydmljZVVybChBZG9wdFdLLCBXS0lu
dGVudERhdGFDb3B5U2VydmljZShpbnRlbnQuZ2V0KCkpKTsKKyAgICBXS1JldGFpblB0cjxXS1VS
TFJlZj4gd2tTZXJ2aWNlVXJsKEFkb3B0V0ssIFdLQnVuZGxlSW50ZW50Q29weVNlcnZpY2UoaW50
ZW50LmdldCgpKSk7CiAgICAgaWYgKHdrU2VydmljZVVybCkgewogICAgICAgICBXS1JldGFpblB0
cjxXS1N0cmluZ1JlZj4gd2tTZXJ2aWNlKEFkb3B0V0ssIFdLVVJMQ29weVN0cmluZyh3a1NlcnZp
Y2VVcmwuZ2V0KCkpKTsKICAgICAgICAgaWYgKHdrU2VydmljZSAmJiAhV0tTdHJpbmdJc0VtcHR5
KHdrU2VydmljZS5nZXQoKSkpIHsKQEAgLTQ1Miw3ICs0NTcsNyBAQCB2b2lkIEluamVjdGVkQnVu
ZGxlUGFnZTo6ZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBX
S0J1bmRsZQogICAgICAgICB9CiAgICAgfQogCi0gICAgV0tSZXRhaW5QdHI8V0tEaWN0aW9uYXJ5
UmVmPiB3a0V4dHJhcyhBZG9wdFdLLCBXS0ludGVudERhdGFDb3B5RXh0cmFzKGludGVudC5nZXQo
KSkpOworICAgIFdLUmV0YWluUHRyPFdLRGljdGlvbmFyeVJlZj4gd2tFeHRyYXMoQWRvcHRXSywg
V0tCdW5kbGVJbnRlbnRDb3B5RXh0cmFzKGludGVudC5nZXQoKSkpOwogICAgIFdLUmV0YWluUHRy
PFdLQXJyYXlSZWY+IHdrRXh0cmFLZXlzKEFkb3B0V0ssIFdLRGljdGlvbmFyeUNvcHlLZXlzKHdr
RXh0cmFzLmdldCgpKSk7CiAgICAgY29uc3Qgc2l6ZV90IG51bUV4dHJhS2V5cyA9IFdLQXJyYXlH
ZXRTaXplKHdrRXh0cmFLZXlzLmdldCgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51
bUV4dHJhS2V5czsgKytpKSB7CkBAIC00NjUsNyArNDcwLDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRs
ZVBhZ2U6OmRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tC
dW5kbGUKICAgICAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+
YXBwZW5kKCJcbiIpOwogICAgIH0KIAotICAgIFdLUmV0YWluUHRyPFdLQXJyYXlSZWY+IHdrU3Vn
Z2VzdGlvbnMoQWRvcHRXSywgV0tJbnRlbnREYXRhQ29weVN1Z2dlc3Rpb25zKGludGVudC5nZXQo
KSkpOworICAgIFdLUmV0YWluUHRyPFdLQXJyYXlSZWY+IHdrU3VnZ2VzdGlvbnMoQWRvcHRXSywg
V0tCdW5kbGVJbnRlbnRDb3B5U3VnZ2VzdGlvbnMoaW50ZW50LmdldCgpKSk7CiAgICAgY29uc3Qg
c2l6ZV90IG51bVN1Z2dlc3Rpb25zID0gV0tBcnJheUdldFNpemUod2tTdWdnZXN0aW9ucy5nZXQo
KSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1TdWdnZXN0aW9uczsgKytpKSB7CiAg
ICAgICAgIFdLU3RyaW5nUmVmIHdrU3VnZ2VzdGlvbiA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVm
PihXS0FycmF5R2V0SXRlbUF0SW5kZXgod2tTdWdnZXN0aW9ucy5nZXQoKSwgaSkpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91
dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCBjZGZmY2FlLi5mM2NkY2IyIDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVy
LmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRl
c3RDb250cm9sbGVyLmNwcApAQCAtNDksOCArNDksOCBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0J1aWxkZXIuaD4KIAogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyNpbmNsdWRlIDxXZWJL
aXQyL1dLQnVuZGxlSW50ZW50Lmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZUludGVudFJl
cXVlc3QuaD4KLSNpbmNsdWRlIDxXZWJLaXQyL1dLSW50ZW50RGF0YS5oPgogI2VuZGlmCiAKIG5h
bWVzcGFjZSBXVFIgewpAQCAtNjUxLDggKzY1MSw4IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OmRlbGl2ZXJXZWJJbnRlbnQoSlNTdHJpbmdSZWYgYWN0aW9uLCBKU1N0cmluZ1JlZiB0eXBl
CiAgICAgV0tEaWN0aW9uYXJ5QWRkSXRlbShpbnRlbnRJbml0RGljdC5nZXQoKSwgV0tTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoInR5cGUiKSwgdHlwZVdLLmdldCgpKTsKICAgICBXS0RpY3Rp
b25hcnlBZGRJdGVtKGludGVudEluaXREaWN0LmdldCgpLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZygiZGF0YSIpLCBkYXRhV0suZ2V0KCkpOwogCi0gICAgV0tSZXRhaW5QdHI8V0tJbnRl
bnREYXRhUmVmPiB3a0ludGVudERhdGEoQWRvcHRXSywgV0tJbnRlbnREYXRhQ3JlYXRlKGludGVu
dEluaXREaWN0LmdldCgpKSk7Ci0gICAgV0tCdW5kbGVQYWdlRGVsaXZlckludGVudFRvRnJhbWUo
SW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgpLCBtYWluRnJhbWUsIHdrSW50
ZW50RGF0YS5nZXQoKSk7CisgICAgV0tSZXRhaW5QdHI8V0tCdW5kbGVJbnRlbnRSZWY+IHdrSW50
ZW50KEFkb3B0V0ssIFdLQnVuZGxlSW50ZW50Q3JlYXRlKGludGVudEluaXREaWN0LmdldCgpKSk7
CisgICAgV0tCdW5kbGVQYWdlRGVsaXZlckludGVudFRvRnJhbWUoSW5qZWN0ZWRCdW5kbGU6OnNo
YXJlZCgpLnBhZ2UoKS0+cGFnZSgpLCBtYWluRnJhbWUsIHdrSW50ZW50LmdldCgpKTsKICNlbmRp
ZgogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157998</attachid>
            <date>2012-08-13 07:45:38 -0700</date>
            <delta_ts>2012-08-14 11:42:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>89072_wk2_messagePorts.patch</filename>
            <type>text/plain</type>
            <size>60553</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkNjEyN2ZiLi4wNTI5OTcyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDgt
MTMgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKworICAg
ICAgICBbV0syXSBBZGQgc3VwcG9ydCBmb3IgV2ViIEludGVudHMgTWVzc2FnZVBvcnRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTA3MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVuc2tpcCB3ZWJpbnRl
bnRzL3dlYi1pbnRlbnRzLWludm9rZS1wb3J0Lmh0bWwgYW5kCisgICAgICAgIHdlYmludGVudHMv
d2ViLWludGVudHMtb2JqLWNvbnN0cnVjdG9yLmh0bWwgZm9yCisgICAgICAgIFdlYktpdDIgRUZM
IG5vdyB0aGF0IGluZm9ybWF0aW9uIGFib3V0IG1lc3NhZ2UgcG9ydHMKKyAgICAgICAgaXMgY29y
cmVjdGx5IGRpc3BsYXllZCBieSBXZWJLaXRUZXN0UnVubmVyLgorCisgICAgICAgICogcGxhdGZv
cm0vZWZsLXdrMi9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDEyLTA4LTEzICBaYW4gRG9iZXJzZWsg
IDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBHVEsgZ2FyZGVu
aW5nLCB1cGRhdGluZyB0ZXN0IGV4cGVjdGF0aW9uIGZvcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZWZsLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZWZsLXdrMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGM2M2EzZmMuLjU0Nzk3NTkgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC13azIvVGVzdEV4cGVjdGF0aW9ucworKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwtd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTI3NSw3
ICsyNzUsMyBAQCBCVUdXS0VGTCA6IGluc3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMtcGFu
ZWwuaHRtbCA9IFRFWFQKIEJVR1dLRUZMIDogaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9u
cy1zaWRlYmFyLmh0bWwgPSBURVhUCiBCVUdXS0VGTCA6IGpxdWVyeS9hdHRyaWJ1dGVzLmh0bWwg
PSBURVhUCiAKLS8vIFdUUiBkb2VzIG5vdCBwcmludCBpbmZvcm1hdGlvbiBhYm91dCBXZWIgSW50
ZW50cyBNZXNzYWdlUG9ydHMKLUJVR1dLODkwNzIgOiB3ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLWlu
dm9rZS1wb3J0Lmh0bWwgPSBURVhUCi1CVUdXSzg5MDcyIDogd2ViaW50ZW50cy93ZWItaW50ZW50
cy1vYmotY29uc3RydWN0b3IuaHRtbCA9IENSQVNICi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKaW5kZXgg
MDY0NDBiMi4uMjU5NWZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50
eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKQEAgLTU2LDYgKzU2LDcgQEAg
U0VUKFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElSfS9icmlk
Z2UvanNjIgogICAgICIke1dFQkNPUkVfRElSfS9jc3MiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2Rv
bSIKKyAgICAiJHtXRUJDT1JFX0RJUn0vZG9tL2RlZmF1bHQiCiAgICAgIiR7V0VCQ09SRV9ESVJ9
L2VkaXRpbmciCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2hpc3RvcnkiCiAgICAgIiR7V0VCQ09SRV9E
SVJ9L2h0bWwiCkBAIC0zODAsNiArMzgxLDcgQEAgU0VUKFdlYktpdDJfU09VUkNFUwogICAgIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwCiAgICAgV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5j
cHAKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJl
c3VsdC5jcHAKKyAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50
ZW50LmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRl
bnRSZXF1ZXN0LmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVOYXZpZ2F0aW9uQWN0aW9uLmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuY3BwCkBAIC00MDAsNiArNDAy
LDcgQEAgU0VUKFdlYktpdDJfU09VUkNFUwogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlSW5zcGVjdG9yLmNwcAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnQuY3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudFJlcXVlc3QuY3BwCiAgICAgV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3BwCiAgICAgV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU5vZGVIYW5kbGUuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
aW5kZXggOGE5NWJkOS4uNjFiZDljMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMiBAQAorMjAx
Mi0wOC0wNCAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgor
CisgICAgICAgIFtXSzJdIEFkZCBzdXBwb3J0IGZvciBXZWIgSW50ZW50cyBNZXNzYWdlUG9ydHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5MDcyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBv
cnQgZm9yIFdlYkludGVudHMgTWVzc2FnZVBvcnRzIGluIFdlYktpdDIuCisgICAgICAgIE1lc3Nh
Z2VQb3J0cyBjYW4gYmUgcGFzc2VkIHdpdGggYSBXZWIgSW50ZW50IGluCisgICAgICAgIG9yZGVy
IHRvIG9wZW4gYSBkaXJlY3QgY29tbXVuaWNhdGlvbiBjaGFubmVsCisgICAgICAgIGJldHdlZW4g
dGhlIFdlYiBhcHBsaWNhdGlvbiBhbmQgdGhlIGludGVudCBzZXJ2aWNlLgorICAgICAgICBUaGlz
IGZ1bmN0aW9uYWxpdHkgaXMgYWxyZWFkeSBzdXBwb3J0ZWQgYnkgV2ViS2l0IDEuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IEluamVjdGVkQnVuZGxlSW50ZW50CisgICAg
ICAgIGNsYXNzIHdoaWNoIHdyYXBzIGEgV2ViQ29yZTo6SW50ZW50LiBUaGlzIHdheQorICAgICAg
ICBpbmZvcm1hdGlvbiByZWdhcmRpbmcgdGhlIE1lc3NhZ2VQb3J0cyBpbiBhIFdlYgorICAgICAg
ICBJbnRlbnQgaXMga2VwdCB3aGVuIHVzaW5nIGFuIGluamVjdGVkIGJ1bmRsZS4KKworICAgICAg
ICBGb3IgdGhlIFVJUHJvY2VzcywgV2ViSW50ZW50RGF0YSBub3cgY2FycmllcworICAgICAgICBp
ZGVudGlmaWVycyBmb3IgdGhlIE1lc3NhZ2VQb3J0cyB3aGljaCBjYW4gZ28gb3ZlcgorICAgICAg
ICBJUEMuIFRob3NlIGlkZW50aWZpZXJzIG1hcCB0byBhY3R1YWwgTWVzc2FnZVBvcnRzCisgICAg
ICAgIHN0b3JlZCBpbiB0aGUgV2ViIHByb2Nlc3MuIFRoaXMgd2F5LCB3aGVuIHRoZSBVSQorICAg
ICAgICBkZWxpdmVycyBhbiBpbnRlbnQgdG8gYSBmcmFtZSwgd2UgY2FuIGdldCBiYWNrIHRoZQor
ICAgICAgICBjb3JyZXNwb25kaW5nIE1lc3NhZ2VQb3J0cyBmcm9tIHRoZSBXZWIgcHJvY2Vzcwor
ICAgICAgICBiZWZvcmUgZGVsaXZlcmluZyB0byB0aGUgRE9NV2luZG93LgorCisgICAgICAgIFRo
aXMgZnVuY3Rpb25hbGl0eSBpcyBhbHJlYWR5IHRlc3RlZCBieToKKyAgICAgICAgd2ViaW50ZW50
cy93ZWItaW50ZW50cy1pbnZva2UtcG9ydC5odG1sCisgICAgICAgIHdlYmludGVudHMvd2ViLWlu
dGVudHMtb2JqLWNvbnN0cnVjdG9yLmh0bWwKKworICAgICAgICAqIENNYWtlTGlzdHMudHh0Ogor
ICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dL
QmFzZS5oOgorICAgICAgICAqIFNoYXJlZC9BUElPYmplY3QuaDoKKyAgICAgICAgKiBTaGFyZWQv
SW50ZW50RGF0YS5jcHA6IEFkZCBNZXNzYWdlUG9ydCBpZGVudGlmaWVycy4KKyAgICAgICAgKFdl
YktpdDo6SW50ZW50RGF0YTo6SW50ZW50RGF0YSk6CisgICAgICAgIChXZWJLaXQ6OkludGVudERh
dGE6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OkludGVudERhdGE6OmRlY29kZSk6CisgICAg
ICAgICogU2hhcmVkL0ludGVudERhdGEuaDoKKyAgICAgICAgKEludGVudERhdGEpOgorICAgICAg
ICAqIFRhcmdldC5wcmk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLSW50ZW50RGF0YS5j
cHA6IFJlbmFtZSBXS0ludGVudERhdGFDb3B5RXh0cmEoKSB0bworICAgICAgICBXS0ludGVudERh
dGFDb3B5RXh0cmFWYWx1ZSgpIGZvciBjbGFyaXR5LgorICAgICAgICAoV0tJbnRlbnREYXRhQ29w
eUV4dHJhVmFsdWUpOiAKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tJbnRlbnREYXRhLmg6
IFJlbW92ZSBXS0ludGVudERhdGFDcmVhdGUoKSBmdW5jdGlvbiBub3cKKyAgICAgICAgdGhhdCBX
VFIgdXNlcyBXS0J1bmRsZUludGVudENyZWF0ZSgpIGluc3RlYWQuCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2ludGVudC5jcHA6CisgICAgICAgIChld2tfaW50ZW50X2V4dHJhX2dl
dCk6IFVzZSBXS0ludGVudERhdGFDb3B5RXh0cmFWYWx1ZSgpIGluc3RlYWQgb2YKKyAgICAgICAg
V0tJbnRlbnREYXRhQ29weUV4dHJhKCkgc2luY2UgaXQgd2FzIHJlbmFtZWQuCisgICAgICAgICog
VUlQcm9jZXNzL1dlYkludGVudERhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnRlbnRE
YXRhOjpXZWJJbnRlbnREYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW50ZW50RGF0YTo6fldl
YkludGVudERhdGEpOiBSZW1vdmUgTWVzc2FnZVBvcnRzIGZyb20gV2ViUHJvY2VzcyB1cG9uCisg
ICAgICAgIFdlYkludGVudERhdGEgZGVzdHJ1Y3Rpb24uCisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJbnRlbnREYXRhOjpleHRyYXMpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJJbnRlbnREYXRhLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJbnRlbnREYXRhOjpjcmVhdGUpOgorICAgICAgICAoV2ViSW50ZW50RGF0YSk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQcm94eTo6cmVtb3ZlTWVzc2FnZVBvcnRDaGFubmVsKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgIChXZWJQcm9jZXNzUHJveHkpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVBUElDYXN0Lmg6
CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVJbnRlbnQuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tJbnRlbnREYXRhLmNwcC4KKyAgICAgICAgKFdLQnVuZGxlSW50ZW50R2V0
VHlwZUlEKToKKyAgICAgICAgKFdLQnVuZGxlSW50ZW50Q3JlYXRlKToKKyAgICAgICAgKFdLQnVu
ZGxlSW50ZW50Q29weUFjdGlvbik6CisgICAgICAgIChXS0J1bmRsZUludGVudENvcHlUeXBlKToK
KyAgICAgICAgKFdLQnVuZGxlSW50ZW50Q29weVNlcnZpY2UpOgorICAgICAgICAoV0tCdW5kbGVJ
bnRlbnRDb3B5U3VnZ2VzdGlvbnMpOgorICAgICAgICAoV0tCdW5kbGVJbnRlbnRDb3B5RXh0cmFW
YWx1ZSk6CisgICAgICAgIChXS0J1bmRsZUludGVudENvcHlFeHRyYXMpOgorICAgICAgICAoV0tC
dW5kbGVJbnRlbnRNZXNzYWdlUG9ydENvdW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0ludGVudERhdGEuaC4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50UmVxdWVzdC5jcHA6CisgICAgICAg
IChXS0J1bmRsZUludGVudFJlcXVlc3RDb3B5SW50ZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50UmVxdWVzdC5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcDoKKyAgICAg
ICAgKFdLQnVuZGxlUGFnZURlbGl2ZXJJbnRlbnRUb0ZyYW1lKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnQuY3BwOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW50ZW50RGF0YS5jcHAuCisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZUludGVudDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OkluamVjdGVkQnVuZGxlSW50
ZW50KToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OmFjdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlSW50ZW50OjpwYXlsb2FkVHlwZSk6CisgICAg
ICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlSW50ZW50OjpzZXJ2aWNlKToKKyAgICAgICAgKFdl
YktpdDo6SW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OmRhdGEpOgorICAgICAgICAoV2ViS2l0OjpJbmpl
Y3RlZEJ1bmRsZUludGVudDo6ZXh0cmEpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRs
ZUludGVudDo6ZXh0cmFzKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVJbnRlbnQ6
OnN1Z2dlc3Rpb25zKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlSW50ZW50Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJJbnRlbnREYXRhLmguCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoSW5qZWN0ZWRCdW5k
bGVJbnRlbnQpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZUludGVudDo6Y29yZUlu
dGVudCk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlSW50ZW50Ojp0eXBlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50UmVx
dWVzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdDo6
aW50ZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlSW50ZW50UmVxdWVzdC5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKEluamVjdGVk
QnVuZGxlSW50ZW50UmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZy
YW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmRlbGl2ZXJJbnRlbnQpOgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViRnJhbWUpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OmRlbGl2ZXJDb3JlSW50ZW50VG9GcmFtZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViUGFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDogU3RvcmUgTWVz
c2FnZVBvcnRzIGluIFdlYlByb2Nlc3MgYW5kIGtlZXAgbWFwcGluZyB3aXRoCisgICAgICAgIHRo
ZWlyIGlkZW50aWZpZXJzLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzczo6YWRkTWVzc2FnZVBvcnRDaGFubmVsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzczo6bWVzc2FnZVBvcnRDaGFubmVsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6
cmVtb3ZlTWVzc2FnZVBvcnRDaGFubmVsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViUHJvY2Vzcyk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorCiAyMDEyLTA4LTEyICBOdW5v
IExvcGVzICA8bmxvcGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggYnVpbGQgd2l0aCByZWNl
bnQgY2xhbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFt
IGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBkNzM3YmM3Li5kNDE3
YjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBi
L1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTk2MSw2ICs5NjEsOCBAQCB3
ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVJbml0aWFsaXplLmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnNwZWN0b3IuY3BwIFwKIAlTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW5zcGVj
dG9yLmggXAorCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVJbnRlbnQuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50LmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnRSZXF1ZXN0LmNwcCBcCiAJU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVu
dFJlcXVlc3QuaCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZU5vZGVIYW5kbGUuY3BwIFwKQEAgLTk5NSw2ICs5OTcsOCBAQCB3ZWJraXQy
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uaCBcCiAJU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3BwIFwK
IAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
SGl0VGVzdFJlc3VsdC5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlSW50ZW50LmNwcCBcCisJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudC5oIFwKIAlTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5j
cHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVJbnRlbnRSZXF1ZXN0LmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJL2MvV0tCYXNlLmgKaW5kZXggNjg1NGVjYy4uYTZhOGJkNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUEkvYy9XS0Jhc2UuaApAQCAtMTM1LDYgKzEzNSw3IEBAIHR5cGVkZWYgY29uc3Qg
c3RydWN0IE9wYXF1ZVdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uKiBXS0J1bmRsZURPTVdpbmRv
d0V4dGVuc2lvCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRsZUZyYW1lKiBXS0J1
bmRsZUZyYW1lUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVIaXRUZXN0
UmVzdWx0KiBXS0J1bmRsZUhpdFRlc3RSZXN1bHRSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBP
cGFxdWVXS0J1bmRsZUluc3BlY3RvciogV0tCdW5kbGVJbnNwZWN0b3JSZWY7Cit0eXBlZGVmIGNv
bnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRsZUludGVudCogV0tCdW5kbGVJbnRlbnRSZWY7CiB0eXBl
ZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRsZUludGVudFJlcXVlc3QqIFdLQnVuZGxlSW50
ZW50UmVxdWVzdFJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQnVuZGxlTmF2aWdh
dGlvbkFjdGlvbiogV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uUmVmOwogdHlwZWRlZiBjb25zdCBz
dHJ1Y3QgT3BhcXVlV0tCdW5kbGVOb2RlSGFuZGxlKiBXS0J1bmRsZU5vZGVIYW5kbGVSZWY7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKaW5kZXggOGU0ZDI5My4uNzA4ZWZmZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUElPYmplY3QuaApAQCAtMTE3LDYgKzExNyw3IEBAIHB1YmxpYzoKICAgICAgICAg
VHlwZUJ1bmRsZUZyYW1lLAogICAgICAgICBUeXBlQnVuZGxlSGl0VGVzdFJlc3VsdCwKICAgICAg
ICAgVHlwZUJ1bmRsZUluc3BlY3RvciwKKyAgICAgICAgVHlwZUJ1bmRsZUludGVudCwKICAgICAg
ICAgVHlwZUJ1bmRsZUludGVudFJlcXVlc3QsCiAgICAgICAgIFR5cGVCdW5kbGVOYXZpZ2F0aW9u
QWN0aW9uLAogICAgICAgICBUeXBlQnVuZGxlTm9kZUhhbmRsZSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9JbnRlbnREYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9J
bnRlbnREYXRhLmNwcAppbmRleCA0OTk1YjJlLi40MTA3ODc0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvSW50ZW50RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L0ludGVudERhdGEuY3BwCkBAIC0zMSw3ICszMSwxMCBAQAogI2luY2x1ZGUgIkFQSU9iamVjdC5o
IgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRD
b2RlcnMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRl
bnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01lc3NhZ2VQb3J0Q2hhbm5lbC5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuaD4KIAogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKQEAgLTQ1LDYgKzQ4LDEyIEBAIEludGVudERhdGE6OkludGVudERhdGEoSW50
ZW50KiBjb3JlSW50ZW50KQogICAgICwgZXh0cmFzKGNvcmVJbnRlbnQtPmV4dHJhcygpKQogICAg
ICwgc3VnZ2VzdGlvbnMoY29yZUludGVudC0+c3VnZ2VzdGlvbnMoKSkKIHsKKyAgICBNZXNzYWdl
UG9ydENoYW5uZWxBcnJheSogY29yZU1lc3NhZ2VQb3J0cyA9IGNvcmVJbnRlbnQtPm1lc3NhZ2VQ
b3J0cygpOworICAgIGlmIChjb3JlTWVzc2FnZVBvcnRzKSB7CisgICAgICAgIHNpemVfdCBudW1N
ZXNzYWdlUG9ydHMgPSBjb3JlTWVzc2FnZVBvcnRzLT5zaXplKCk7CisgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbnVtTWVzc2FnZVBvcnRzOyArK2kpCisgICAgICAgICAgICBtZXNzYWdl
UG9ydHMuYXBwZW5kKFdlYlByb2Nlc3M6OnNoYXJlZCgpLmFkZE1lc3NhZ2VQb3J0Q2hhbm5lbCgo
KmNvcmVNZXNzYWdlUG9ydHMpW2ldLT5jaGFubmVsKCkpKTsKKyAgICB9CiB9CiAKIHZvaWQgSW50
ZW50RGF0YTo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciogZW5jb2RlcikgY29uc3QK
QEAgLTU1LDYgKzY0LDcgQEAgdm9pZCBJbnRlbnREYXRhOjplbmNvZGUoQ29yZUlQQzo6QXJndW1l
bnRFbmNvZGVyKiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXItPmVuY29kZShDb3JlSVBDOjpE
YXRhUmVmZXJlbmNlKGRhdGEpKTsKICAgICBlbmNvZGVyLT5lbmNvZGUoZXh0cmFzKTsKICAgICBl
bmNvZGVyLT5lbmNvZGUoc3VnZ2VzdGlvbnMpOworICAgIGVuY29kZXItPmVuY29kZShtZXNzYWdl
UG9ydHMpOwogfQogCiBib29sIEludGVudERhdGE6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERl
Y29kZXIqIGRlY29kZXIsIEludGVudERhdGEmIGludGVudERhdGEpCkBAIC03Myw2ICs4Myw4IEBA
IGJvb2wgSW50ZW50RGF0YTo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2Rl
ciwgSW50ZW50RGF0YSYgaW50ZW50RGF0CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAo
IWRlY29kZXItPmRlY29kZShpbnRlbnREYXRhLnN1Z2dlc3Rpb25zKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGludGVudERhdGEubWVzc2FnZVBvcnRz
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW50ZW50RGF0YS5oIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL0ludGVudERhdGEuaAppbmRleCA5NmUyZDlmLi5lODQzNWMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW50ZW50RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9JbnRlbnREYXRhLmgKQEAgLTI5LDcgKzI5LDggQEAKICNpZiBFTkFCTEUoV0VCX0lOVEVO
VFMpCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKLSNpbmNsdWRlICJHZW5lcmljQ2FsbGJhY2su
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgQ29yZUlQQyB7CkBA
IC01Niw2ICs1Nyw3IEBAIHN0cnVjdCBJbnRlbnREYXRhIHsKICAgICBWZWN0b3I8dWludDhfdD4g
ZGF0YTsKICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBleHRyYXM7CiAgICAgVmVjdG9yPFdl
YkNvcmU6OktVUkw+IHN1Z2dlc3Rpb25zOworICAgIFZlY3Rvcjx1aW50NjRfdD4gbWVzc2FnZVBv
cnRzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9UYXJnZXQucHJpIGIvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQppbmRleCA1ZmZjOGNj
Li4xZGYyMDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKQEAgLTI3OSw2ICsyNzksNyBAQCBIRUFERVJTICs9IFwK
ICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQmFja0ZvcndhcmRM
aXN0LmggXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVCYWNr
Rm9yd2FyZExpc3RJdGVtLmggXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVIaXRUZXN0UmVzdWx0LmggXAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVJbnRlbnQuaCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZUludGVudFJlcXVlc3QuaCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZU5hdmlnYXRpb25BY3Rpb24uaCBcCiAgICAgV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU5vZGVIYW5kbGUuaCBcCkBAIC0yOTIsNiArMjkz
LDcgQEAgSEVBREVSUyArPSBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZUNsaWVudC5oIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmggXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmggXAorICAgIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnQuaCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuaCBcCiAgICAgV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uaCBcCiAgICAgV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVu
dC5oIFwKQEAgLTYzMCw2ICs2MzIsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwIFwKICAgICBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAgXAogICAgIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnNwZWN0b3IuY3BwIFwKKyAgICBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50LmNwcCBcCiAgICAg
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudFJlcXVlc3QuY3Bw
IFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlTmF2aWdhdGlv
bkFjdGlvbi5jcHAgXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVOb2RlSGFuZGxlLmNwcCBcCkBAIC02NDUsNiArNjQ4LDcgQEAgU09VUkNFUyArPSBcCiAgICAg
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAgXAogICAg
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNp
b24uY3BwIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0
VGVzdFJlc3VsdC5jcHAgXAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVJbnRlbnQuY3BwIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlSW50ZW50UmVxdWVzdC5jcHAgXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHAgXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLSW50ZW50RGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnRlbnREYXRhLmNwcAppbmRleCA3
YTkyZGI1Li45MmU2MTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tJbnRlbnREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tJbnRlbnREYXRhLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIldLQVBJQ2FzdC5o
IgogI2luY2x1ZGUgIldLRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIldLU3RyaW5nLmgiCisjaW5j
bHVkZSAiV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAKICNpZiBFTkFCTEUoV0VCX0lOVEVO
VFMpCiAjaW5jbHVkZSAiV2ViSW50ZW50RGF0YS5oIgpAQCAtNDcsMjcgKzQ4LDYgQEAgV0tUeXBl
SUQgV0tJbnRlbnREYXRhR2V0VHlwZUlEKCkKICNlbmRpZgogfQogCi1XS0ludGVudERhdGFSZWYg
V0tJbnRlbnREYXRhQ3JlYXRlKFdLRGljdGlvbmFyeVJlZiBpbml0RGljdGlvbmFyeVJlZikKLXsK
LSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0gICAgSW50ZW50RGF0YSBpbnRlbnREYXRhOwotICAg
IFdLU3RyaW5nUmVmIGFjdGlvbiA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25h
cnlHZXRJdGVtRm9yS2V5KGluaXREaWN0aW9uYXJ5UmVmLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZygiYWN0aW9uIikpKTsKLSAgICBBU1NFUlQoYWN0aW9uKTsKLSAgICBpbnRlbnREYXRh
LmFjdGlvbiA9IHRvSW1wbChhY3Rpb24pLT5zdHJpbmcoKTsKLSAgICBXS1N0cmluZ1JlZiB0eXBl
ID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkoaW5p
dERpY3Rpb25hcnlSZWYsIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJ0eXBlIikpKTsK
LSAgICBBU1NFUlQodHlwZSk7Ci0gICAgaW50ZW50RGF0YS50eXBlID0gdG9JbXBsKHR5cGUpLT5z
dHJpbmcoKTsKLSAgICBXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiBkYXRhID0gc3RhdGljX2Nh
c3Q8V0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXko
aW5pdERpY3Rpb25hcnlSZWYsIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJkYXRhIikp
KTsKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgaW50ZW50RGF0YS5kYXRhID0gdG9JbXBsKGRhdGEp
LT5kYXRhUmVmZXJlbmNlKCkudmVjdG9yKCk7Ci0KLSAgICBSZWZQdHI8V2ViSW50ZW50RGF0YT4g
d2ViSW50ZW50RGF0YSA9IFdlYkludGVudERhdGE6OmNyZWF0ZShpbnRlbnREYXRhKTsKLSAgICBy
ZXR1cm4gdG9BUEkod2ViSW50ZW50RGF0YS5yZWxlYXNlKCkubGVha1JlZigpKTsKLSNlbHNlCi0g
ICAgcmV0dXJuIDA7Ci0jZW5kaWYKLX0KLQogV0tTdHJpbmdSZWYgV0tJbnRlbnREYXRhQ29weUFj
dGlvbihXS0ludGVudERhdGFSZWYgaW50ZW50UmVmKQogewogI2lmIEVOQUJMRShXRUJfSU5URU5U
UykKQEAgLTEwNCw3ICs4NCw3IEBAIFdLQXJyYXlSZWYgV0tJbnRlbnREYXRhQ29weVN1Z2dlc3Rp
b25zKFdLSW50ZW50RGF0YVJlZiBpbnRlbnRSZWYpCiAjZW5kaWYKIH0KIAotV0tTdHJpbmdSZWYg
V0tJbnRlbnREYXRhQ29weUV4dHJhKFdLSW50ZW50RGF0YVJlZiBpbnRlbnRSZWYsIFdLU3RyaW5n
UmVmIGtleSkKK1dLU3RyaW5nUmVmIFdLSW50ZW50RGF0YUNvcHlFeHRyYVZhbHVlKFdLSW50ZW50
RGF0YVJlZiBpbnRlbnRSZWYsIFdLU3RyaW5nUmVmIGtleSkKIHsKICNpZiBFTkFCTEUoV0VCX0lO
VEVOVFMpCiAgICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChpbnRlbnRSZWYpLT5leHRyYSh0
b1dURlN0cmluZyhrZXkpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tJbnRlbnREYXRhLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJ
bnRlbnREYXRhLmgKaW5kZXggMWY4MDllYy4uY2FmMWI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLSW50ZW50RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS0ludGVudERhdGEuaApAQCAtMzQsMTMgKzM0LDExIEBAIGV4dGVy
biAiQyIgewogCiBXS19FWFBPUlQgV0tUeXBlSUQgV0tJbnRlbnREYXRhR2V0VHlwZUlEKCk7CiAK
LVdLX0VYUE9SVCBXS0ludGVudERhdGFSZWYgV0tJbnRlbnREYXRhQ3JlYXRlKFdLRGljdGlvbmFy
eVJlZiBpbml0RGljdGlvbmFyeSk7Ci0KIFdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0ludGVudERh
dGFDb3B5QWN0aW9uKFdLSW50ZW50RGF0YVJlZiBpbnRlbnRSZWYpOwogV0tfRVhQT1JUIFdLU3Ry
aW5nUmVmIFdLSW50ZW50RGF0YUNvcHlUeXBlKFdLSW50ZW50RGF0YVJlZiBpbnRlbnRSZWYpOwog
V0tfRVhQT1JUIFdLVVJMUmVmIFdLSW50ZW50RGF0YUNvcHlTZXJ2aWNlKFdLSW50ZW50RGF0YVJl
ZiBpbnRlbnRSZWYpOwogV0tfRVhQT1JUIFdLQXJyYXlSZWYgV0tJbnRlbnREYXRhQ29weVN1Z2dl
c3Rpb25zKFdLSW50ZW50RGF0YVJlZiBpbnRlbnRSZWYpOwotV0tfRVhQT1JUIFdLU3RyaW5nUmVm
IFdLSW50ZW50RGF0YUNvcHlFeHRyYShXS0ludGVudERhdGFSZWYgaW50ZW50UmVmLCBXS1N0cmlu
Z1JlZiBrZXkpOworV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLSW50ZW50RGF0YUNvcHlFeHRyYVZh
bHVlKFdLSW50ZW50RGF0YVJlZiBpbnRlbnRSZWYsIFdLU3RyaW5nUmVmIGtleSk7CiBXS19FWFBP
UlQgV0tEaWN0aW9uYXJ5UmVmIFdLSW50ZW50RGF0YUNvcHlFeHRyYXMoV0tJbnRlbnREYXRhUmVm
IGludGVudFJlZik7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2ludGVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfaW50ZW50LmNwcAppbmRleCA4NTYxNzkzLi41YzJiMjE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfaW50ZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfaW50ZW50LmNwcApA
QCAtMTcxLDcgKzE3MSw3IEBAIGNvbnN0IGNoYXIqIGV3a19pbnRlbnRfZXh0cmFfZ2V0KGNvbnN0
IEV3a19JbnRlbnQqIGludGVudCwgY29uc3QgY2hhcioga2V5KQogICAgIEVXS19JTlRFTlRfV0tf
R0VUX09SX1JFVFVSTihpbnRlbnQsIHdrSW50ZW50LCAwKTsKIAogICAgIFdLUmV0YWluUHRyPFdL
U3RyaW5nUmVmPiBrZXlSZWYgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KGtleSkpOwotICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB3a1ZhbHVlKEFkb3B0V0ssIFdL
SW50ZW50RGF0YUNvcHlFeHRyYSh3a0ludGVudCwga2V5UmVmLmdldCgpKSk7CisgICAgV0tSZXRh
aW5QdHI8V0tTdHJpbmdSZWY+IHdrVmFsdWUoQWRvcHRXSywgV0tJbnRlbnREYXRhQ29weUV4dHJh
VmFsdWUod2tJbnRlbnQsIGtleVJlZi5nZXQoKSkpOwogICAgIFN0cmluZyB2YWx1ZSA9IHRvSW1w
bCh3a1ZhbHVlLmdldCgpKS0+c3RyaW5nKCk7CiAgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
SW50ZW50RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW50ZW50RGF0YS5j
cHAKaW5kZXggOTYxMjhkYi4uYTlkMjE3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkludGVudERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJJbnRlbnREYXRhLmNwcApAQCAtMzAsMTYgKzMwLDI5IEBACiAKICNpbmNsdWRlICJJbW11dGFi
bGVBcnJheS5oIgogI2luY2x1ZGUgIkltbXV0YWJsZURpY3Rpb25hcnkuaCIKKyNpbmNsdWRlICJX
ZWJQcm9jZXNzUHJveHkuaCIKKyNpbmNsdWRlICJXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIK
ICNpbmNsdWRlICJXZWJTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJVUkwuaCIKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKLVdlYkludGVudERhdGE6OldlYkludGVudERhdGEoY29uc3QgSW50ZW50RGF0
YSYgc3RvcmUpCitXZWJJbnRlbnREYXRhOjpXZWJJbnRlbnREYXRhKGNvbnN0IEludGVudERhdGEm
IHN0b3JlLCBXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MpCiAgICAgOiBtX3N0b3JlKHN0b3JlKQor
ICAgICwgbV9wcm9jZXNzKHByb2Nlc3MpCiB7CiB9CiAKK1dlYkludGVudERhdGE6On5XZWJJbnRl
bnREYXRhKCkKK3sKKyAgICAvLyBSZW1vdmUgTWVzc2FnZVBvcnRDaGFubmVscyBmcm9tIFdlYlBy
b2Nlc3MuCisgICAgaWYgKG1fcHJvY2VzcyAmJiAhbV9zdG9yZS5tZXNzYWdlUG9ydHMuaXNFbXB0
eSgpKSB7CisgICAgICAgIHNpemVfdCBudW1NZXNzYWdlUG9ydHMgPSBtX3N0b3JlLm1lc3NhZ2VQ
b3J0cy5zaXplKCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtTWVzc2FnZVBv
cnRzOyArK2kpCisgICAgICAgICAgICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VQb3J0Q2hhbm5l
bChtX3N0b3JlLm1lc3NhZ2VQb3J0c1tpXSk7CisgICAgfQorfQorCiBQYXNzUmVmUHRyPFdlYlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gV2ViSW50ZW50RGF0YTo6ZGF0YSgpIGNvbnN0CiB7CiAgICAg
VmVjdG9yPHVpbnQ4X3Q+IGRhdGFDb3B5ID0gbV9zdG9yZS5kYXRhOwpAQCAtNjYsNiArNzksNyBA
QCBQYXNzUmVmUHRyPEltbXV0YWJsZURpY3Rpb25hcnk+IFdlYkludGVudERhdGE6OmV4dHJhcygp
IGNvbnN0CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9
IG1fc3RvcmUuZXh0cmFzLmVuZCgpOwogICAgIGZvciAoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9zdG9yZS5leHRyYXMuYmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KQogICAgICAgICB3a0V4dHJhcy5zZXQoaXQtPmZpcnN0LCBXZWJTdHJpbmc6OmNyZWF0ZShp
dC0+c2Vjb25kKSk7CisKICAgICByZXR1cm4gSW1tdXRhYmxlRGljdGlvbmFyeTo6YWRvcHQod2tF
eHRyYXMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW50
ZW50RGF0YS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkludGVudERhdGEuaAppbmRl
eCBkZWNmNGFlLi45ZDU5ZjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViSW50ZW50RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnRlbnRE
YXRhLmgKQEAgLTMwLDIxICszMCwyNiBAQAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5j
bHVkZSAiSW50ZW50RGF0YS5oIgotI2luY2x1ZGUgIldlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBJbW11dGFibGVBcnJheTsKK2NsYXNzIElt
bXV0YWJsZURpY3Rpb25hcnk7CitjbGFzcyBXZWJQcm9jZXNzUHJveHk7CitjbGFzcyBXZWJTZXJp
YWxpemVkU2NyaXB0VmFsdWU7CisKIGNsYXNzIFdlYkludGVudERhdGEgOiBwdWJsaWMgQVBJT2Jq
ZWN0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZUludGVu
dERhdGE7CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJJbnRlbnREYXRhPiBjcmVhdGUoY29u
c3QgSW50ZW50RGF0YSYgc3RvcmUpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViSW50ZW50RGF0
YT4gY3JlYXRlKGNvbnN0IEludGVudERhdGEmIHN0b3JlLCBXZWJQcm9jZXNzUHJveHkqIHByb2Nl
c3MpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkludGVudERhdGEoc3Rv
cmUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJJbnRlbnREYXRhKHN0b3JlLCBw
cm9jZXNzKSk7CiAgICAgfQogCi0gICAgdmlydHVhbCB+V2ViSW50ZW50RGF0YSgpIHsgfQorICAg
IHZpcnR1YWwgfldlYkludGVudERhdGEoKTsKIAogICAgIGNvbnN0IFN0cmluZyYgYWN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9zdG9yZS5hY3Rpb247IH0KICAgICBjb25zdCBTdHJpbmcmIHBheWxv
YWRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9zdG9yZS50eXBlOyB9CkBAIC01NywxMSArNjIsMTIg
QEAgcHVibGljOgogICAgIGNvbnN0IEludGVudERhdGEmIHN0b3JlKCkgY29uc3QgeyByZXR1cm4g
bV9zdG9yZTsgfQogCiBwcml2YXRlOgotICAgIFdlYkludGVudERhdGEoY29uc3QgSW50ZW50RGF0
YSYpOworICAgIFdlYkludGVudERhdGEoY29uc3QgSW50ZW50RGF0YSYsIFdlYlByb2Nlc3NQcm94
eSopOwogCiAgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBBUElUeXBlOyB9
CiAKICAgICBJbnRlbnREYXRhIG1fc3RvcmU7CisgICAgV2ViUHJvY2Vzc1Byb3h5KiBtX3Byb2Nl
c3M7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggOWM0ZGY4ZS4uZmYxMzc0MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTIyMDYsNyArMjIwNiw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwg
Y29uc3QgSW50ZW50RGF0YSYKICAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IHByb2Nlc3MoKS0+
d2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhmcmFtZSk7CiAKLSAgICBSZWZQ
dHI8V2ViSW50ZW50RGF0YT4gd2ViSW50ZW50RGF0YSA9IFdlYkludGVudERhdGE6OmNyZWF0ZShp
bnRlbnREYXRhKTsKKyAgICBSZWZQdHI8V2ViSW50ZW50RGF0YT4gd2ViSW50ZW50RGF0YSA9IFdl
YkludGVudERhdGE6OmNyZWF0ZShpbnRlbnREYXRhLCBwcm9jZXNzKCkpOwogICAgIG1fbG9hZGVy
Q2xpZW50LmRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZSh0aGlzLCBmcmFtZSwgd2ViSW50ZW50RGF0
YS5nZXQoKSwgdXNlckRhdGEuZ2V0KCkpOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGQ5MDM1NWMuLjk1NzBjZjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0xODksNiAr
MTg5LDE2IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZW1vdmVXZWJQYWdlKHVpbnQ2NF90IHBh
Z2VJRCkKICAgICBtX3BhZ2VNYXAucmVtb3ZlKHBhZ2VJRCk7CiB9CiAKKyNpZiBFTkFCTEUoV0VC
X0lOVEVOVFMpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6cmVtb3ZlTWVzc2FnZVBvcnRDaGFubmVs
KHVpbnQ2NF90IGNoYW5uZWxJRCkKK3sKKyAgICBpZiAoIWlzVmFsaWQoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgc2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6UmVtb3ZlTWVzc2FnZVBvcnRD
aGFubmVsKGNoYW5uZWxJRCksIDApOworfQorI2VuZGlmCisKIFdlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0qIFdlYlByb2Nlc3NQcm94eTo6d2ViQmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IGl0ZW1JRCkg
Y29uc3QKIHsKICAgICByZXR1cm4gbV9iYWNrRm9yd2FyZExpc3RJdGVtTWFwLmdldChpdGVtSUQp
LmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4
IDA5ZDg2MWEuLjg5OTc0ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmgKQEAgLTg1LDYgKzg1LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZEV4aXN0aW5n
V2ViUGFnZShXZWJQYWdlUHJveHkqLCB1aW50NjRfdCBwYWdlSUQpOwogICAgIHZvaWQgcmVtb3Zl
V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQpOwogCisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorICAg
IHZvaWQgcmVtb3ZlTWVzc2FnZVBvcnRDaGFubmVsKHVpbnQ2NF90IGNoYW5uZWxJRCk7CisjZW5k
aWYKKwogICAgIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIHdlYkJhY2tGb3J3YXJkSXRlbSh1aW50
NjRfdCBpdGVtSUQpIGNvbnN0OwogCiAgICAgUmVzcG9uc2l2ZW5lc3NUaW1lciogcmVzcG9uc2l2
ZW5lc3NUaW1lcigpIHsgcmV0dXJuICZtX3Jlc3BvbnNpdmVuZXNzVGltZXI7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVBUElDYXN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlQVBJQ2FzdC5oCmluZGV4IDMzNTVkMDguLjAxOGVmNzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVB
UElDYXN0LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZUFQSUNhc3QuaApAQCAtNDYsNiArNDYsNyBAQCBjbGFzcyBJbmplY3RlZEJ1
bmRsZUJhY2tGb3J3YXJkTGlzdDsKIGNsYXNzIEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0
SXRlbTsKIGNsYXNzIEluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uOwogY2xhc3MgSW5q
ZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0OworY2xhc3MgSW5qZWN0ZWRCdW5kbGVJbnRlbnQ7CiBj
bGFzcyBJbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3Q7CiBjbGFzcyBJbmplY3RlZEJ1bmRsZU5h
dmlnYXRpb25BY3Rpb247CiBjbGFzcyBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU7CkBAIC02NCw2
ICs2NSw3IEBAIFdLX0FERF9BUElfTUFQUElORyhXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvblJl
ZiwgSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpCiBXS19BRERfQVBJX01BUFBJTkcoV0tC
dW5kbGVGcmFtZVJlZiwgV2ViRnJhbWUpCiBXS19BRERfQVBJX01BUFBJTkcoV0tCdW5kbGVIaXRU
ZXN0UmVzdWx0UmVmLCBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQpCiBXS19BRERfQVBJX01B
UFBJTkcoV0tCdW5kbGVJbnNwZWN0b3JSZWYsIFdlYkluc3BlY3RvcikKK1dLX0FERF9BUElfTUFQ
UElORyhXS0J1bmRsZUludGVudFJlZiwgSW5qZWN0ZWRCdW5kbGVJbnRlbnQpCiBXS19BRERfQVBJ
X01BUFBJTkcoV0tCdW5kbGVJbnRlbnRSZXF1ZXN0UmVmLCBJbmplY3RlZEJ1bmRsZUludGVudFJl
cXVlc3QpCiBXS19BRERfQVBJX01BUFBJTkcoV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uUmVmLCBJ
bmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24pCiBXS19BRERfQVBJX01BUFBJTkcoV0tCdW5k
bGVOb2RlSGFuZGxlUmVmLCBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVJbnRlbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRm
NzVjNWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50LmNwcApAQCAtMCwwICsxLDE0MCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldLQnVuZGxl
SW50ZW50LmgiCisKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisjaW5jbHVkZSAiSW1tdXRhYmxl
QXJyYXkuaCIKKyNpbmNsdWRlICJJbW11dGFibGVEaWN0aW9uYXJ5LmgiCisjaW5jbHVkZSAiSW5q
ZWN0ZWRCdW5kbGVJbnRlbnQuaCIKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJX
S0J1bmRsZUFQSUNhc3QuaCIKKyNpbmNsdWRlICJXS0RpY3Rpb25hcnkuaCIKKyNpbmNsdWRlICJX
S1N0cmluZy5oIgorI2luY2x1ZGUgIldlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2VuZGlm
CisKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisjZW5kaWYKKworV0tUeXBlSUQgV0tCdW5kbGVJbnRlbnRH
ZXRUeXBlSUQoKQoreworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICByZXR1cm4gdG9BUEko
SW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OkFQSVR5cGUpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNl
bmRpZgorfQorCitXS0J1bmRsZUludGVudFJlZiBXS0J1bmRsZUludGVudENyZWF0ZShXS0RpY3Rp
b25hcnlSZWYgaW5pdERpY3Rpb25hcnlSZWYpCit7CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQor
ICAgIFdLU3RyaW5nUmVmIGFjdGlvbiA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rp
b25hcnlHZXRJdGVtRm9yS2V5KGluaXREaWN0aW9uYXJ5UmVmLCBXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiYWN0aW9uIikpKTsKKyAgICBBU1NFUlQoYWN0aW9uKTsKKyAgICBXS1N0cmlu
Z1JlZiB0eXBlID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1G
b3JLZXkoaW5pdERpY3Rpb25hcnlSZWYsIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJ0
eXBlIikpKTsKKyAgICBBU1NFUlQodHlwZSk7CisgICAgV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVS
ZWYgZGF0YSA9IHN0YXRpY19jYXN0PFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmPihXS0RpY3Rp
b25hcnlHZXRJdGVtRm9yS2V5KGluaXREaWN0aW9uYXJ5UmVmLCBXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiZGF0YSIpKSk7CisgICAgTWVzc2FnZVBvcnRBcnJheSBkdW1teVBvcnRzOwor
ICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisKKyAgICBSZWZQdHI8SW50ZW50PiBjb3JlSW50ZW50ID0g
SW50ZW50OjpjcmVhdGUodG9JbXBsKGFjdGlvbiktPnN0cmluZygpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b0ltcGwodHlwZSktPnN0cmluZygpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhID8gc3Rh
dGljX2Nhc3Q8U2VyaWFsaXplZFNjcmlwdFZhbHVlKj4odG9JbXBsKGRhdGEpLT5pbnRlcm5hbFJl
cHJlc2VudGF0aW9uKCkpIDogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZHVtbXlQb3J0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZWMpOworCisgICAgcmV0dXJuIHRvQVBJKEluamVjdGVkQnVuZGxlSW50
ZW50OjpjcmVhdGUoY29yZUludGVudC5nZXQoKSkubGVha1JlZigpKTsKKyNlbHNlCisgICAgcmV0
dXJuIDA7CisjZW5kaWYKK30KKworV0tTdHJpbmdSZWYgV0tCdW5kbGVJbnRlbnRDb3B5QWN0aW9u
KFdLQnVuZGxlSW50ZW50UmVmIGludGVudFJlZikKK3sKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMp
CisgICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChpbnRlbnRSZWYpLT5hY3Rpb24oKSk7Cisj
ZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCit9CisKK1dLU3RyaW5nUmVmIFdLQnVuZGxlSW50
ZW50Q29weVR5cGUoV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmKQoreworI2lmIEVOQUJMRShX
RUJfSU5URU5UUykKKyAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKGludGVudFJlZiktPnBh
eWxvYWRUeXBlKCkpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCitXS1VSTFJl
ZiBXS0J1bmRsZUludGVudENvcHlTZXJ2aWNlKFdLQnVuZGxlSW50ZW50UmVmIGludGVudFJlZikK
K3sKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgcmV0dXJuIHRvQ29waWVkVVJMQVBJKHRv
SW1wbChpbnRlbnRSZWYpLT5zZXJ2aWNlKCkpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRp
ZgorfQorCitXS0FycmF5UmVmIFdLQnVuZGxlSW50ZW50Q29weVN1Z2dlc3Rpb25zKFdLQnVuZGxl
SW50ZW50UmVmIGludGVudFJlZikKK3sKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgcmV0
dXJuIHRvQVBJKHRvSW1wbChpbnRlbnRSZWYpLT5zdWdnZXN0aW9ucygpLmxlYWtSZWYoKSk7Cisj
ZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCit9CisKK1dLU3RyaW5nUmVmIFdLQnVuZGxlSW50
ZW50Q29weUV4dHJhVmFsdWUoV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmLCBXS1N0cmluZ1Jl
ZiBrZXkpCit7CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorICAgIHJldHVybiB0b0NvcGllZEFQ
SSh0b0ltcGwoaW50ZW50UmVmKS0+ZXh0cmEodG9XVEZTdHJpbmcoa2V5KSkpOworI2Vsc2UKKyAg
ICByZXR1cm4gMDsKKyNlbmRpZgorfQorCitXS0RpY3Rpb25hcnlSZWYgV0tCdW5kbGVJbnRlbnRD
b3B5RXh0cmFzKFdLQnVuZGxlSW50ZW50UmVmIGludGVudFJlZikKK3sKKyNpZiBFTkFCTEUoV0VC
X0lOVEVOVFMpCisgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChpbnRlbnRSZWYpLT5leHRyYXMoKS5s
ZWFrUmVmKCkpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCitzaXplX3QgV0tC
dW5kbGVJbnRlbnRNZXNzYWdlUG9ydENvdW50KFdLQnVuZGxlSW50ZW50UmVmIGludGVudFJlZikK
K3sKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgTWVzc2FnZVBvcnRDaGFubmVsQXJyYXkq
IG1lc3NhZ2VQb3J0cyA9IHRvSW1wbChpbnRlbnRSZWYpLT5jb3JlSW50ZW50KCktPm1lc3NhZ2VQ
b3J0cygpOworCisgICAgcmV0dXJuIG1lc3NhZ2VQb3J0cyA/IG1lc3NhZ2VQb3J0cy0+c2l6ZSgp
IDogMDsKKyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnQu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGVJbnRlbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZTRiNTA3Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZUludGVudC5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgV0tCdW5kbGVJbnRlbnRfaAorI2RlZmluZSBXS0J1bmRsZUludGVudF9o
CisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4
dGVybiAiQyIgeworI2VuZGlmCisKK1dLX0VYUE9SVCBXS1R5cGVJRCBXS0J1bmRsZUludGVudEdl
dFR5cGVJRCgpOworCitXS19FWFBPUlQgV0tCdW5kbGVJbnRlbnRSZWYgV0tCdW5kbGVJbnRlbnRD
cmVhdGUoV0tEaWN0aW9uYXJ5UmVmIGluaXREaWN0aW9uYXJ5KTsKKworV0tfRVhQT1JUIFdLU3Ry
aW5nUmVmIFdLQnVuZGxlSW50ZW50Q29weUFjdGlvbihXS0J1bmRsZUludGVudFJlZiBpbnRlbnRS
ZWYpOworV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLQnVuZGxlSW50ZW50Q29weVR5cGUoV0tCdW5k
bGVJbnRlbnRSZWYgaW50ZW50UmVmKTsKK1dLX0VYUE9SVCBXS1VSTFJlZiBXS0J1bmRsZUludGVu
dENvcHlTZXJ2aWNlKFdLQnVuZGxlSW50ZW50UmVmIGludGVudFJlZik7CitXS19FWFBPUlQgV0tB
cnJheVJlZiBXS0J1bmRsZUludGVudENvcHlTdWdnZXN0aW9ucyhXS0J1bmRsZUludGVudFJlZiBp
bnRlbnRSZWYpOworV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLQnVuZGxlSW50ZW50Q29weUV4dHJh
VmFsdWUoV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmLCBXS1N0cmluZ1JlZiBrZXkpOworV0tf
RVhQT1JUIFdLRGljdGlvbmFyeVJlZiBXS0J1bmRsZUludGVudENvcHlFeHRyYXMoV0tCdW5kbGVJ
bnRlbnRSZWYgaW50ZW50UmVmKTsKK1dLX0VYUE9SVCBzaXplX3QgV0tCdW5kbGVJbnRlbnRNZXNz
YWdlUG9ydENvdW50KFdLQnVuZGxlSW50ZW50UmVmIGludGVudFJlZik7CisKKyNpZmRlZiBfX2Nw
bHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvLyBXS0J1bmRsZUludGVudF9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlSW50ZW50UmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50UmVxdWVzdC5jcHAKaW5kZXggODFjOTVjNi4uYTQ3
NzJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZUludGVudFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnRSZXF1ZXN0LmNwcApA
QCAtMjcsMTAgKzI3LDEwIEBACiAjaW5jbHVkZSAiV0tCdW5kbGVJbnRlbnRSZXF1ZXN0LmgiCiAK
ICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVJbnRlbnQu
aCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuaCIKICNpbmNsdWRlICJX
S0FQSUNhc3QuaCIKICNpbmNsdWRlICJXS0J1bmRsZUFQSUNhc3QuaCIKLSNpbmNsdWRlICJXZWJJ
bnRlbnREYXRhLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAjZW5kaWYKQEAgLTQ0LDEx
ICs0NCwxMSBAQCBXS1R5cGVJRCBXS0J1bmRsZUludGVudFJlcXVlc3RHZXRUeXBlSUQoKQogI2Vu
ZGlmCiB9CiAKLVdLSW50ZW50RGF0YVJlZiBXS0J1bmRsZUludGVudFJlcXVlc3RDb3B5SW50ZW50
RGF0YShXS0J1bmRsZUludGVudFJlcXVlc3RSZWYgcmVxdWVzdFJlZikKK1dLQnVuZGxlSW50ZW50
UmVmIFdLQnVuZGxlSW50ZW50UmVxdWVzdENvcHlJbnRlbnQoV0tCdW5kbGVJbnRlbnRSZXF1ZXN0
UmVmIHJlcXVlc3RSZWYpCiB7CiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotICAgIFJlZlB0cjxX
ZWJJbnRlbnREYXRhPiB3ZWJJbnRlbnREYXRhID0gdG9JbXBsKHJlcXVlc3RSZWYpLT5pbnRlbnQo
KTsKLSAgICByZXR1cm4gdG9BUEkod2ViSW50ZW50RGF0YS5yZWxlYXNlKCkubGVha1JlZigpKTsK
KyAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVJbnRlbnQ+IHdlYkludGVudCA9IHRvSW1wbChyZXF1
ZXN0UmVmKS0+aW50ZW50KCk7CisgICAgcmV0dXJuIHRvQVBJKHdlYkludGVudC5yZWxlYXNlKCku
bGVha1JlZigpKTsKICNlbHNlCiAgICAgcmV0dXJuIDA7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRl
bnRSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlSW50ZW50UmVxdWVzdC5oCmluZGV4IGIxODEzNmQuLjEwNWFmYTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVJbnRlbnRSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudFJlcXVlc3QuaApAQCAtMzQsNyArMzQsNyBA
QCBleHRlcm4gIkMiIHsKIAogV0tfRVhQT1JUIFdLVHlwZUlEIFdLQnVuZGxlSW50ZW50UmVxdWVz
dEdldFR5cGVJRCgpOwogCi1XS19FWFBPUlQgV0tJbnRlbnREYXRhUmVmIFdLQnVuZGxlSW50ZW50
UmVxdWVzdENvcHlJbnRlbnREYXRhKFdLQnVuZGxlSW50ZW50UmVxdWVzdFJlZiByZXF1ZXN0KTsK
K1dLX0VYUE9SVCBXS0J1bmRsZUludGVudFJlZiBXS0J1bmRsZUludGVudFJlcXVlc3RDb3B5SW50
ZW50KFdLQnVuZGxlSW50ZW50UmVxdWVzdFJlZiByZXF1ZXN0KTsKIAogV0tfRVhQT1JUIHZvaWQg
V0tCdW5kbGVJbnRlbnRSZXF1ZXN0UG9zdFJlc3VsdChXS0J1bmRsZUludGVudFJlcXVlc3RSZWYg
cmVxdWVzdCwgV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYgc2VyaWFsaXplZERhdGEpOwogV0tf
RVhQT1JUIHZvaWQgV0tCdW5kbGVJbnRlbnRSZXF1ZXN0UG9zdEZhaWx1cmUoV0tCdW5kbGVJbnRl
bnRSZXF1ZXN0UmVmIHJlcXVlc3QsIFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmIHNlcmlhbGl6
ZWREYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcAppbmRleCAxZjQzYTEyLi5iZjQ2
M2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCkBAIC00Nyw3ICs0Nyw3IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CiAKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0jaW5j
bHVkZSAiV2ViSW50ZW50RGF0YS5oIgorI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlSW50ZW50Lmgi
CiAjZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKQEAgLTMxNiwxMCArMzE2LDEwIEBA
IGRvdWJsZSBXS0J1bmRsZVBhZ2VHZXRCYWNraW5nU2NhbGVGYWN0b3IoV0tCdW5kbGVQYWdlUmVm
IHBhZ2VSZWYpCiAgICAgcmV0dXJuIHRvSW1wbChwYWdlUmVmKS0+ZGV2aWNlU2NhbGVGYWN0b3Io
KTsKIH0KIAotdm9pZCBXS0J1bmRsZVBhZ2VEZWxpdmVySW50ZW50VG9GcmFtZShXS0J1bmRsZVBh
Z2VSZWYgcGFnZVJlZiwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZVJlZiwgV0tJbnRlbnREYXRhUmVm
IGludGVudFJlZikKK3ZvaWQgV0tCdW5kbGVQYWdlRGVsaXZlckludGVudFRvRnJhbWUoV0tCdW5k
bGVQYWdlUmVmIHBhZ2VSZWYsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYsIFdLQnVuZGxlSW50
ZW50UmVmIGludGVudFJlZikKIHsKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0gICAgdG9JbXBs
KHBhZ2VSZWYpLT5kZWxpdmVySW50ZW50VG9GcmFtZSh0b0ltcGwoZnJhbWVSZWYpLT5mcmFtZUlE
KCksIHRvSW1wbChpbnRlbnRSZWYpLT5zdG9yZSgpKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPmRl
bGl2ZXJDb3JlSW50ZW50VG9GcmFtZSh0b0ltcGwoZnJhbWVSZWYpLT5mcmFtZUlEKCksIHRvSW1w
bChpbnRlbnRSZWYpLT5jb3JlSW50ZW50KCkpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdl
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlUGFnZS5oCmluZGV4IDI4ZWVlNWMuLjhiYzc2NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBh
Z2UuaApAQCAtNDEwLDcgKzQxMCw3IEBAIFdLX0VYUE9SVCBXS0ltYWdlUmVmIFdLQnVuZGxlUGFn
ZUNyZWF0ZVNjYWxlZFNuYXBzaG90SW5Eb2N1bWVudENvb3JkaW5hdGVzKFdLQnVuCiAKIFdLX0VY
UE9SVCBkb3VibGUgV0tCdW5kbGVQYWdlR2V0QmFja2luZ1NjYWxlRmFjdG9yKFdLQnVuZGxlUGFn
ZVJlZiBwYWdlKTsKIAotV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlRGVsaXZlckludGVudFRv
RnJhbWUoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdLSW50
ZW50RGF0YVJlZiBpbnRlbnQpOworV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVQYWdlRGVsaXZlcklu
dGVudFRvRnJhbWUoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUs
IFdLQnVuZGxlSW50ZW50UmVmIGludGVudCk7CiAKICNpZiBkZWZpbmVkKEVOQUJMRV9JTlNQRUNU
T1IpICYmIEVOQUJMRV9JTlNQRUNUT1IKIFdLX0VYUE9SVCBXS0J1bmRsZUluc3BlY3RvclJlZiBX
S0J1bmRsZVBhZ2VHZXRJbnNwZWN0b3IoV0tCdW5kbGVQYWdlUmVmIHBhZ2UpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZUludGVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlSW50ZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5iN2FiNTg2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudC5jcHAKQEAgLTAsMCArMSw5OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkluamVj
dGVkQnVuZGxlSW50ZW50LmgiCisKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisKKyNpbmNsdWRl
ICJJbW11dGFibGVBcnJheS5oIgorI2luY2x1ZGUgIkltbXV0YWJsZURpY3Rpb25hcnkuaCIKKyNp
bmNsdWRlICJXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcu
aCIKKyNpbmNsdWRlICJXZWJVUkwuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlSW50ZW50PiBJbmpl
Y3RlZEJ1bmRsZUludGVudDo6Y3JlYXRlKFdlYkNvcmU6OkludGVudCogaW50ZW50KQoreworICAg
IHJldHVybiBhZG9wdFJlZihuZXcgSW5qZWN0ZWRCdW5kbGVJbnRlbnQoaW50ZW50KSk7Cit9CisK
K0luamVjdGVkQnVuZGxlSW50ZW50OjpJbmplY3RlZEJ1bmRsZUludGVudChXZWJDb3JlOjpJbnRl
bnQqIGludGVudCkKKyAgICA6IG1faW50ZW50KGludGVudCkKK3sKK30KKworU3RyaW5nIEluamVj
dGVkQnVuZGxlSW50ZW50OjphY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBtX2ludGVudC0+
YWN0aW9uKCk7Cit9CisKK1N0cmluZyBJbmplY3RlZEJ1bmRsZUludGVudDo6cGF5bG9hZFR5cGUo
KSBjb25zdAoreworICAgIHJldHVybiBtX2ludGVudC0+dHlwZSgpOworfQorCitXZWJDb3JlOjpL
VVJMIEluamVjdGVkQnVuZGxlSW50ZW50OjpzZXJ2aWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9pbnRlbnQtPnNlcnZpY2UoKTsKK30KKworUGFzc1JlZlB0cjxXZWJTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IEluamVjdGVkQnVuZGxlSW50ZW50OjpkYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUobV9pbnRlbnQtPmRhdGEoKSk7Cit9CisK
K1N0cmluZyBJbmplY3RlZEJ1bmRsZUludGVudDo6ZXh0cmEoY29uc3QgU3RyaW5nJiBrZXkpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1faW50ZW50LT5leHRyYXMoKS5nZXQoa2V5KTsKK30KKworUGFz
c1JlZlB0cjxJbW11dGFibGVEaWN0aW9uYXJ5PiBJbmplY3RlZEJ1bmRsZUludGVudDo6ZXh0cmFz
KCkgY29uc3QKK3sKKyAgICBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgZXh0cmFzID0g
bV9pbnRlbnQtPmV4dHJhcygpOworICAgIEltbXV0YWJsZURpY3Rpb25hcnk6Ok1hcFR5cGUgd2tF
eHRyYXM7CisgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9
IGV4dHJhcy5lbmQoKTsKKyAgICBmb3IgKEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Ojpjb25zdF9p
dGVyYXRvciBpdCA9IGV4dHJhcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgIHdr
RXh0cmFzLnNldChpdC0+Zmlyc3QsIFdlYlN0cmluZzo6Y3JlYXRlKGl0LT5zZWNvbmQpKTsKKyAg
ICByZXR1cm4gSW1tdXRhYmxlRGljdGlvbmFyeTo6YWRvcHQod2tFeHRyYXMpOworfQorCitQYXNz
UmVmUHRyPEltbXV0YWJsZUFycmF5PiBJbmplY3RlZEJ1bmRsZUludGVudDo6c3VnZ2VzdGlvbnMo
KSBjb25zdAoreworICAgIGNvbnN0IFZlY3RvcjxLVVJMPiYgc3VnZ2VzdGlvbnMgPSBtX2ludGVu
dC0+c3VnZ2VzdGlvbnMoKTsKKyAgICBjb25zdCBzaXplX3QgbnVtU3VnZ2VzdGlvbnMgPSBzdWdn
ZXN0aW9ucy5zaXplKCk7CisgICAgVmVjdG9yPFJlZlB0cjxBUElPYmplY3Q+ID4gd2tTdWdnZXN0
aW9ucyhudW1TdWdnZXN0aW9ucyk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVN1
Z2dlc3Rpb25zOyArK2kpCisgICAgICAgIHdrU3VnZ2VzdGlvbnNbaV0gPSBXZWJVUkw6OmNyZWF0
ZShzdWdnZXN0aW9uc1tpXSk7CisgICAgcmV0dXJuIEltbXV0YWJsZUFycmF5OjphZG9wdCh3a1N1
Z2dlc3Rpb25zKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFC
TEUoV0VCX0lOVEVOVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWQzZjA2YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnQu
aApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBv
cmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEluamVjdGVk
QnVuZGxlSW50ZW50X2gKKyNkZWZpbmUgSW5qZWN0ZWRCdW5kbGVJbnRlbnRfaAorCisjaWYgRU5B
QkxFKFdFQl9JTlRFTlRTKQorCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9JbnRlbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KKyNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgSW1tdXRhYmxlQXJyYXk7Citj
bGFzcyBJbW11dGFibGVEaWN0aW9uYXJ5OworY2xhc3MgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVl
OworCitjbGFzcyBJbmplY3RlZEJ1bmRsZUludGVudCA6IHB1YmxpYyBBUElPYmplY3QgeworcHVi
bGljOgorICAgIHN0YXRpYyBjb25zdCBUeXBlIEFQSVR5cGUgPSBUeXBlQnVuZGxlSW50ZW50Owor
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVJbnRlbnQ+IGNyZWF0ZShXZWJD
b3JlOjpJbnRlbnQqKTsKKworICAgIFN0cmluZyBhY3Rpb24oKSBjb25zdDsKKyAgICBTdHJpbmcg
cGF5bG9hZFR5cGUoKSBjb25zdDsKKyAgICBXZWJDb3JlOjpLVVJMIHNlcnZpY2UoKSBjb25zdDsK
KyAgICBQYXNzUmVmUHRyPFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSgpIGNvbnN0Owor
ICAgIFN0cmluZyBleHRyYShjb25zdCBTdHJpbmcmIGtleSkgY29uc3Q7CisgICAgUGFzc1JlZlB0
cjxJbW11dGFibGVEaWN0aW9uYXJ5PiBleHRyYXMoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPElt
bXV0YWJsZUFycmF5PiBzdWdnZXN0aW9ucygpIGNvbnN0OworCisgICAgV2ViQ29yZTo6SW50ZW50
KiBjb3JlSW50ZW50KCkgY29uc3QgeyByZXR1cm4gbV9pbnRlbnQuZ2V0KCk7IH0KKworcHJpdmF0
ZToKKyAgICBleHBsaWNpdCBJbmplY3RlZEJ1bmRsZUludGVudChXZWJDb3JlOjpJbnRlbnQqKTsK
KworICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQVBJVHlwZTsgfQorCisg
ICAgUmVmUHRyPFdlYkNvcmU6OkludGVudD4gbV9pbnRlbnQ7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfSU5URU5UUykKKworI2VuZGlmIC8vIElu
amVjdGVkQnVuZGxlSW50ZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnRS
ZXF1ZXN0LmNwcAppbmRleCA1Y2NiMTljLi5lYWMwYjgzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudFJlcXVl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUg
IkluamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5oIgogCiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRT
KQorI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlSW50ZW50LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9J
bnRlbnRSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg+CiAK
QEAgLTU0LDkgKzU1LDkgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3Q6OnBvc3RG
YWlsdXJlKFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogZGF0YSkKICAgICBtX2ludGVudFJlcXVl
c3QtPnBvc3RGYWlsdXJlKHN0YXRpY19jYXN0PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSo+KGRhdGEt
PmludGVybmFsUmVwcmVzZW50YXRpb24oKSkpOwogfQogCi1QYXNzUmVmUHRyPFdlYkludGVudERh
dGE+IEluamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdDo6aW50ZW50KCkgY29uc3QKK1Bhc3NSZWZQ
dHI8SW5qZWN0ZWRCdW5kbGVJbnRlbnQ+IEluamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdDo6aW50
ZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gV2ViSW50ZW50RGF0YTo6Y3JlYXRlKEludGVudERh
dGEobV9pbnRlbnRSZXF1ZXN0LT5pbnRlbnQoKSkpOworICAgIHJldHVybiBJbmplY3RlZEJ1bmRs
ZUludGVudDo6Y3JlYXRlKG1faW50ZW50UmVxdWVzdC0+aW50ZW50KCkpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5o
CmluZGV4IGI1ODcwZDkuLjMzYTMxOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0LmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUlu
dGVudFJlcXVlc3QuaApAQCAtMjksNyArMjksNiBAQAogI2lmIEVOQUJMRShXRUJfSU5URU5UUykK
IAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgotI2luY2x1ZGUgIldlYkludGVudERhdGEuaCIKICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNDAsNiArMzksNyBAQCBjbGFzcyBJbnRlbnRSZXF1ZXN0
OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgSW5qZWN0ZWRCdW5kbGVJbnRlbnQ7CiBj
bGFzcyBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU7CiAKIGNsYXNzIEluamVjdGVkQnVuZGxlSW50
ZW50UmVxdWVzdCA6IHB1YmxpYyBBUElPYmplY3QgewpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBwb3N0UmVzdWx0KFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSopOwogICAgIHZv
aWQgcG9zdEZhaWx1cmUoV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlKik7CiAKLSAgICBQYXNzUmVm
UHRyPFdlYkludGVudERhdGE+IGludGVudCgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8SW5qZWN0
ZWRCdW5kbGVJbnRlbnQ+IGludGVudCgpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0
IEluamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdChXZWJDb3JlOjpJbnRlbnRSZXF1ZXN0Kik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCBm
MzZmYzAyLi5kNmRkY2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJGcmFtZS5jcHAKQEAgLTYzLDYgKzYzLDggQEAKICNpbmNsdWRlICJJbnRlbnREYXRhLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9ET01XaW5kb3dJbnRlbnRzLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9EZWxpdmVyZWRJbnRlbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ludGVudC5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuaD4KICNlbmRpZgogCiAjaWYg
UExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShXSU4pCkBAIC0yNDYsMTMgKzI0OCwzOSBAQCB2b2lk
IFdlYkZyYW1lOjpjb252ZXJ0SGFuZGxlVG9Eb3dubG9hZChSZXNvdXJjZUhhbmRsZSogaGFuZGxl
LCBjb25zdCBSZXNvdXJjZVJlcQogdm9pZCBXZWJGcmFtZTo6ZGVsaXZlckludGVudChjb25zdCBJ
bnRlbnREYXRhJiBpbnRlbnREYXRhKQogewogICAgIE93blB0cjxEZWxpdmVyZWRJbnRlbnRDbGll
bnQ+IGR1bW15Q2xpZW50OwotICAgIE93blB0cjxNZXNzYWdlUG9ydEFycmF5PiBkdW1teVBvcnRz
OwogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhQ29weSA9IGludGVudERhdGEuZGF0YTsKKworICAg
IE93blB0cjxXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHM7CisgICAg
aWYgKCFpbnRlbnREYXRhLm1lc3NhZ2VQb3J0cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgY2hhbm5l
bHMgPSBhZG9wdFB0cihuZXcgV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsQXJyYXkoaW50ZW50
RGF0YS5tZXNzYWdlUG9ydHMuc2l6ZSgpKSk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgaW50ZW50RGF0YS5tZXNzYWdlUG9ydHMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICAoKmNo
YW5uZWxzKVtpXSA9IE1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlKFdlYlByb2Nlc3M6OnNoYXJl
ZCgpLm1lc3NhZ2VQb3J0Q2hhbm5lbChpbnRlbnREYXRhLm1lc3NhZ2VQb3J0cy5hdChpKSkpOwor
ICAgIH0KKyAgICBPd25QdHI8V2ViQ29yZTo6TWVzc2FnZVBvcnRBcnJheT4gbWVzc2FnZVBvcnRz
ID0gV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoKm1fY29yZUZyYW1lLT5kb21X
aW5kb3coKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBjaGFubmVscy5yZWxlYXNlKCkpOwor
CiAgICAgUmVmUHRyPERlbGl2ZXJlZEludGVudD4gZGVsaXZlcmVkSW50ZW50ID0gRGVsaXZlcmVk
SW50ZW50OjpjcmVhdGUobV9jb3JlRnJhbWUsIGR1bW15Q2xpZW50LnJlbGVhc2UoKSwgaW50ZW50
RGF0YS5hY3Rpb24sIGludGVudERhdGEudHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OmFkb3B0KGRhdGFDb3B5KSwgZHVtbXlQb3J0cy5yZWxlYXNlKCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjphZG9wdChkYXRhQ29weSksIG1lc3NhZ2VQb3J0
cy5yZWxlYXNlKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZW50RGF0YS5leHRyYXMpOwogICAgIFdlYkNv
cmU6OkRPTVdpbmRvd0ludGVudHM6OmZyb20obV9jb3JlRnJhbWUtPmRvbVdpbmRvdygpKS0+ZGVs
aXZlcihkZWxpdmVyZWRJbnRlbnQucmVsZWFzZSgpKTsKIH0KKwordm9pZCBXZWJGcmFtZTo6ZGVs
aXZlckludGVudChJbnRlbnQqIGludGVudCkKK3sKKyAgICBPd25QdHI8RGVsaXZlcmVkSW50ZW50
Q2xpZW50PiBkdW1teUNsaWVudDsKKworICAgIE93blB0cjxXZWJDb3JlOjpNZXNzYWdlUG9ydENo
YW5uZWxBcnJheT4gY2hhbm5lbHM7CisgICAgV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsQXJy
YXkqIG9yaWdDaGFubmVscyA9IGludGVudC0+bWVzc2FnZVBvcnRzKCk7CisgICAgaWYgKG9yaWdD
aGFubmVscyAmJiBvcmlnQ2hhbm5lbHMtPnNpemUoKSkgeworICAgICAgICBjaGFubmVscyA9IGFk
b3B0UHRyKG5ldyBXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxBcnJheShvcmlnQ2hhbm5lbHMt
PnNpemUoKSkpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9yaWdDaGFubmVscy0+
c2l6ZSgpOyArK2kpCisgICAgICAgICAgICAoKmNoYW5uZWxzKVtpXSA9IG9yaWdDaGFubmVscy0+
YXQoaSkucmVsZWFzZSgpOworICAgIH0KKyAgICBPd25QdHI8V2ViQ29yZTo6TWVzc2FnZVBvcnRB
cnJheT4gbWVzc2FnZVBvcnRzID0gV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMo
Km1fY29yZUZyYW1lLT5kb21XaW5kb3coKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBjaGFu
bmVscy5yZWxlYXNlKCkpOworCisgICAgUmVmUHRyPERlbGl2ZXJlZEludGVudD4gZGVsaXZlcmVk
SW50ZW50ID0gRGVsaXZlcmVkSW50ZW50OjpjcmVhdGUobV9jb3JlRnJhbWUsIGR1bW15Q2xpZW50
LnJlbGVhc2UoKSwgaW50ZW50LT5hY3Rpb24oKSwgaW50ZW50LT50eXBlKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50ZW50LT5kYXRhKCksIG1lc3NhZ2VQb3J0cy5yZWxlYXNlKCksIGludGVudC0+ZXh0cmFz
KCkpOworICAgIFdlYkNvcmU6OkRPTVdpbmRvd0ludGVudHM6OmZyb20obV9jb3JlRnJhbWUtPmRv
bVdpbmRvdygpKS0+ZGVsaXZlcihkZWxpdmVyZWRJbnRlbnQucmVsZWFzZSgpKTsKK30KICNlbmRp
ZgogCiBTdHJpbmcgV2ViRnJhbWU6OnNvdXJjZSgpIGNvbnN0IApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAppbmRleCBiZDZjMDM4Li5lZWEwOWI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaApAQCAtNDIsNiAr
NDIsOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEZyYW1lOwogICAgIGNsYXNz
IEhUTUxGcmFtZU93bmVyRWxlbWVudDsKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgY2xh
c3MgSW50ZW50OworI2VuZGlmCiAgICAgY2xhc3MgS1VSTDsKIH0KIApAQCAtODEsNiArODQsNyBA
QCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCiAgICAgdm9pZCBkZWxpdmVySW50
ZW50KGNvbnN0IEludGVudERhdGEmKTsKKyAgICB2b2lkIGRlbGl2ZXJJbnRlbnQoV2ViQ29yZTo6
SW50ZW50Kik7CiAjZW5kaWYKIAogICAgIFN0cmluZyBzb3VyY2UoKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA1OTYxN2RmLi4x
OTE1OTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCkBAIC0xNDAsNiArMTQwLDcgQEAKIAogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKICNpbmNs
dWRlICJJbnRlbnREYXRhLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9JbnRlbnQuaD4KICNlbmRpZgog
CiAjaWYgRU5BQkxFKFZJQlJBVElPTikKQEAgLTE5NTksNiArMTk2MCwxMiBAQCB2b2lkIFdlYlBh
Z2U6OmRlbGl2ZXJJbnRlbnRUb0ZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IEludGVudERh
dGEmIGludGVudERhdAogCiAgICAgZnJhbWUtPmRlbGl2ZXJJbnRlbnQoaW50ZW50RGF0YSk7CiB9
CisKK3ZvaWQgV2ViUGFnZTo6ZGVsaXZlckNvcmVJbnRlbnRUb0ZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIEludGVudCogY29yZUludGVudCkKK3sKKyAgICBpZiAoV2ViRnJhbWUqIGZyYW1lID0gV2Vi
UHJvY2Vzczo6c2hhcmVkKCkud2ViRnJhbWUoZnJhbWVJRCkpCisgICAgICAgIGZyYW1lLT5kZWxp
dmVySW50ZW50KGNvcmVJbnRlbnQpOworfQogI2VuZGlmCiAKIHZvaWQgV2ViUGFnZTo6cHJlZmVy
ZW5jZXNEaWRDaGFuZ2UoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBiYmZhYmQwLi5lYzVh
ZjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAg
LTEwNiw2ICsxMDYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgRnJhbWU7CiAg
ICAgY2xhc3MgRnJhbWVWaWV3OwogICAgIGNsYXNzIEhUTUxQbHVnSW5FbGVtZW50OworI2lmIEVO
QUJMRShXRUJfSU5URU5UUykKKyAgICBjbGFzcyBJbnRlbnQ7CisjZW5kaWYKICAgICBjbGFzcyBL
ZXlib2FyZEV2ZW50OwogICAgIGNsYXNzIFBhZ2U7CiAgICAgY2xhc3MgUHJpbnRDb250ZXh0OwpA
QCAtNDc2LDcgKzQ3OSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9JTlRF
TlRTKQotICAgIHZvaWQgZGVsaXZlckludGVudFRvRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29u
c3QgSW50ZW50RGF0YSYpOworICAgIHZvaWQgZGVsaXZlckNvcmVJbnRlbnRUb0ZyYW1lKHVpbnQ2
NF90IGZyYW1lSUQsIFdlYkNvcmU6OkludGVudCopOwogI2VuZGlmCiAKICAgICB2b2lkIHJlcGxh
Y2VTZWxlY3Rpb25XaXRoVGV4dChXZWJDb3JlOjpGcmFtZSosIGNvbnN0IFN0cmluZyYpOwpAQCAt
NjQxLDYgKzY0NCwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgY29udGV4dE1lbnVIaWRkZW4oKSB7
IG1faXNTaG93aW5nQ29udGV4dE1lbnUgPSBmYWxzZTsgfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUo
V0VCX0lOVEVOVFMpCisgICAgdm9pZCBkZWxpdmVySW50ZW50VG9GcmFtZSh1aW50NjRfdCBmcmFt
ZUlELCBjb25zdCBJbnRlbnREYXRhJik7CisjZW5kaWYKKwogICAgIHN0YXRpYyB2b2lkIHNjcm9s
bChXZWJDb3JlOjpQYWdlKiwgV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9uLCBXZWJDb3JlOjpTY3Jv
bGxHcmFudWxhcml0eSk7CiAgICAgc3RhdGljIHZvaWQgbG9naWNhbFNjcm9sbChXZWJDb3JlOjpQ
YWdlKiwgV2ViQ29yZTo6U2Nyb2xsTG9naWNhbERpcmVjdGlvbiwgV2ViQ29yZTo6U2Nyb2xsR3Jh
bnVsYXJpdHkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRl
eCA2ZWI4YWI3ZS4uMjdlOGIwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwCkBAIC04MCw2ICs4MCwxMCBAQAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1JhbmRvbU51bWJlci5oPgogCisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQor
I2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuaD4KKyNlbmRpZgor
CiAjaWYgRU5BQkxFKE5FVFdPUktfSU5GTykKICNpbmNsdWRlICJXZWJOZXR3b3JrSW5mb01hbmFn
ZXJNZXNzYWdlcy5oIgogI2VuZGlmCkBAIC03OTEsNiArNzk1LDI2IEBAIFdlYlBhZ2VHcm91cFBy
b3h5KiBXZWJQcm9jZXNzOjp3ZWJQYWdlR3JvdXAoY29uc3QgV2ViUGFnZUdyb3VwRGF0YSYgcGFn
ZUdyb3VwRGF0CiAgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kLmdldCgpOwogfQog
CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQordWludDY0X3QgV2ViUHJvY2Vzczo6YWRkTWVzc2Fn
ZVBvcnRDaGFubmVsKFBhc3NSZWZQdHI8UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw+IG1lc3Nh
Z2VQb3J0Q2hhbm5lbCkKK3sKKyAgICBzdGF0aWMgdWludDY0X3QgY2hhbm5lbElEID0gMDsKKyAg
ICBtX21lc3NhZ2VQb3J0Q2hhbm5lbHMuYWRkKCsrY2hhbm5lbElELCBtZXNzYWdlUG9ydENoYW5u
ZWwpOworCisgICAgcmV0dXJuIGNoYW5uZWxJRDsKK30KKworUGxhdGZvcm1NZXNzYWdlUG9ydENo
YW5uZWwqIFdlYlByb2Nlc3M6Om1lc3NhZ2VQb3J0Q2hhbm5lbCh1aW50NjRfdCBjaGFubmVsSUQp
Cit7CisgICAgcmV0dXJuIG1fbWVzc2FnZVBvcnRDaGFubmVscy5nZXQoY2hhbm5lbElEKS5nZXQo
KTsKK30KKwordm9pZCBXZWJQcm9jZXNzOjpyZW1vdmVNZXNzYWdlUG9ydENoYW5uZWwodWludDY0
X3QgY2hhbm5lbElEKQoreworICAgIG1fbWVzc2FnZVBvcnRDaGFubmVscy5yZW1vdmUoY2hhbm5l
bElEKTsKK30KKyNlbmRpZgorCiBzdGF0aWMgYm9vbCBjYW5QbHVnaW5IYW5kbGVSZXNwb25zZShj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBTdHJpbmcgcGx1Z2luUGF0
aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggMGQwMDVhNC4uZDNk
ZjFiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTc4LDYgKzc4
LDkgQEAgUVRfRU5EX05BTUVTUEFDRQogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIElu
dFNpemU7CiAgICAgY2xhc3MgUGFnZUdyb3VwOworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAg
ICBjbGFzcyBQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDsKKyNlbmRpZgogICAgIGNsYXNzIFJl
c291cmNlUmVxdWVzdDsKICAgICBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogfQpAQCAtMTEyLDcg
KzExNSwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjcmVhdGVXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJ
RCwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYpOwogICAgIHZvaWQgcmVtb3ZlV2Vi
UGFnZSh1aW50NjRfdCBwYWdlSUQpOwogICAgIFdlYlBhZ2UqIGZvY3VzZWRXZWJQYWdlKCkgY29u
c3Q7Ci0gICAgCisKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpIAorICAgIHVpbnQ2NF90IGFkZE1l
c3NhZ2VQb3J0Q2hhbm5lbChQYXNzUmVmUHRyPFdlYkNvcmU6OlBsYXRmb3JtTWVzc2FnZVBvcnRD
aGFubmVsPik7CisgICAgV2ViQ29yZTo6UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwqIG1lc3Nh
Z2VQb3J0Q2hhbm5lbCh1aW50NjRfdCk7CisgICAgdm9pZCByZW1vdmVNZXNzYWdlUG9ydENoYW5u
ZWwodWludDY0X3QpOworI2VuZGlmCisKICAgICBJbmplY3RlZEJ1bmRsZSogaW5qZWN0ZWRCdW5k
bGUoKSBjb25zdCB7IHJldHVybiBtX2luamVjdGVkQnVuZGxlLmdldCgpOyB9CiAKICAgICBib29s
IGlzU2VwYXJhdGVQcm9jZXNzKCkgY29uc3Q7CkBAIC0zMDAsNiArMzA5LDEwIEBAIHByaXZhdGU6
CiAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBXZWJGcmFtZSo+IG1fZnJhbWVNYXA7CiAKKyNpZiBF
TkFCTEUoV0VCX0lOVEVOVFMpCisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYkNvcmU6
OlBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsPiA+IG1fbWVzc2FnZVBvcnRDaGFubmVsczsKKyNl
bmRpZgorCiAgICAgSGFzaFNldDxTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD4gbV9taW1lVHlwZXNX
aXRoQ3VzdG9tUmVwcmVzZW50YXRpb25zOwogCiAgICAgVGV4dENoZWNrZXJTdGF0ZSBtX3RleHRD
aGVja2VyU3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4KaW5kZXggMGY4M2Q1Yi4uMjI3MTZjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjcsNiArMjcsMTAgQEAg
bWVzc2FnZXMgLT4gV2ViUHJvY2VzcyB7CiAgICAgIyBDcmVhdGUgYSBuZXcgcGFnZS4KICAgICBD
cmVhdGVXZWJQYWdlKHVpbnQ2NF90IG5ld1BhZ2VJRCwgV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzIHBhZ2VDcmVhdGlvblBhcmFtZXRlcnMpCiAKKyNpZiBFTkFCTEUoV0VCX0lOVEVO
VFMpCisgICAgUmVtb3ZlTWVzc2FnZVBvcnRDaGFubmVsKHVpbnQ2NF90IGNoYW5uZWxJRCk7Cisj
ZW5kaWYKKwogICAgICMgVmlzaXRlZCBsaW5rIHRyYWNraW5nLgogICAgIFNldFZpc2l0ZWRMaW5r
VGFibGUoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGUpCiAgICAgVmlzaXRlZExp
bmtTdGF0ZUNoYW5nZWQoVmVjdG9yPFdlYkNvcmU6OkxpbmtIYXNoPiBsaW5rSGFzaGVzKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGE2YWUxYjMu
LmQyZGY0OTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMi0wOC0wNCAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlz
dG9waGUuZHVtZXpAaW50ZWwuY29tPgorCisgICAgICAgIFtXSzJdIEFkZCBzdXBwb3J0IGZvciBX
ZWIgSW50ZW50cyBNZXNzYWdlUG9ydHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTg5MDcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVXNlIFdLQnVuZGxlSW50ZW50IGluc3RlYWQgb2YgV2ViSW50ZW50RGF0
YSBpbgorICAgICAgICBXZWJLaXRUZXN0UnVubmVyLiBXVFIgbm93IHByaW50cyB0aGUgbnVtYmVy
IG9mCisgICAgICAgIE1lc3NhZ2VQb3J0cyBpbiByZWNlaXZlZCBXZWIgaW50ZW50cyBhcworICAg
ICAgICBleHBlY3RlZCBieSB0aGUgZm9sbG93aW5nIGxheW91dCB0ZXN0czoKKyAgICAgICAgd2Vi
aW50ZW50cy93ZWItaW50ZW50cy1pbnZva2UtcG9ydC5odG1sCisgICAgICAgIHdlYmludGVudHMv
d2ViLWludGVudHMtb2JqLWNvbnN0cnVjdG9yLmh0bWwKKworICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdU
Ujo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWUpOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV1RSOjpMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZGVsaXZlcldlYkludGVu
dCk6CisKIDIwMTItMDgtMTMgIE1pa2hhaWwgUG96ZG55YWtvdiAgPG1pa2hhaWwucG96ZG55YWtv
dkBpbnRlbC5jb20+CiAKICAgICAgICAgW1dLMl0gW1dUUl0gSW5qZWN0ZWRCdW5kbGVQYWdlOjpk
aWRGYWlsTG9hZEZvclJlc291cmNlIGludm9rZXMgd3JvbmcgY2FsbGJhY2sKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
LmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlLmNwcAppbmRleCAyYTNlYzIwLi4xMTYzNDExIDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2Uu
Y3BwCkBAIC01MCw4ICs1MCw4IEBACiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfSU5URU5UUykK
KyNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlSW50ZW50Lmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9X
S0J1bmRsZUludGVudFJlcXVlc3QuaD4KLSNpbmNsdWRlIDxXZWJLaXQyL1dLSW50ZW50RGF0YS5o
PgogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTX1RBRykKICNpbmNsdWRlIDxXZWJLaXQy
L1dLSW50ZW50U2VydmljZUluZm8uaD4KQEAgLTQzMCwxOSArNDMwLDI0IEBAIHZvaWQgSW5qZWN0
ZWRCdW5kbGVQYWdlOjpkaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVmIHBh
Z2UsIFdLQnVuZGxlCiB7CiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQogICAgIHN0YXRpY19jYXN0
PEluamVjdGVkQnVuZGxlUGFnZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+bV9j
dXJyZW50SW50ZW50UmVxdWVzdCA9IGludGVudFJlcXVlc3Q7Ci0gICAgV0tSZXRhaW5QdHI8V0tJ
bnRlbnREYXRhUmVmPiBpbnRlbnQoQWRvcHRXSywgV0tCdW5kbGVJbnRlbnRSZXF1ZXN0Q29weUlu
dGVudERhdGEoaW50ZW50UmVxdWVzdCkpOworICAgIFdLUmV0YWluUHRyPFdLQnVuZGxlSW50ZW50
UmVmPiBpbnRlbnQoQWRvcHRXSywgV0tCdW5kbGVJbnRlbnRSZXF1ZXN0Q29weUludGVudChpbnRl
bnRSZXF1ZXN0KSk7CiAKICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRl
cigpLT5hcHBlbmQoIlJlY2VpdmVkIFdlYiBJbnRlbnQ6IGFjdGlvbj0iKTsKLSAgICBXS1JldGFp
blB0cjxXS1N0cmluZ1JlZj4gd2tBY3Rpb24oQWRvcHRXSywgV0tJbnRlbnREYXRhQ29weUFjdGlv
bihpbnRlbnQuZ2V0KCkpKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tBY3Rpb24o
QWRvcHRXSywgV0tCdW5kbGVJbnRlbnRDb3B5QWN0aW9uKGludGVudC5nZXQoKSkpOwogICAgIElu
amVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCh0b1dURlN0cmlu
Zyh3a0FjdGlvbi5nZXQoKSkpOwogICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdC
dWlsZGVyKCktPmFwcGVuZCgiIHR5cGU9Iik7Ci0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+
IHdrVHlwZShBZG9wdFdLLCBXS0ludGVudERhdGFDb3B5VHlwZShpbnRlbnQuZ2V0KCkpKTsKKyAg
ICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tUeXBlKEFkb3B0V0ssIFdLQnVuZGxlSW50ZW50
Q29weVR5cGUoaW50ZW50LmdldCgpKSk7CiAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0
cmluZ0J1aWxkZXIoKS0+YXBwZW5kKHRvV1RGU3RyaW5nKHdrVHlwZS5nZXQoKSkpOwogICAgIElu
amVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiXG4iKTsKIAot
ICAgIC8vIEZJWE1FOiBQcmludCBudW1iZXIgb2YgcG9ydHMgd2hlbiBleHBvc2VkIGluIFdlYktp
dDIKKyAgICBjb25zdCBzaXplX3QgbnVtTWVzc2FnZVBvcnRzID0gV0tCdW5kbGVJbnRlbnRNZXNz
YWdlUG9ydENvdW50KGludGVudC5nZXQoKSk7CisgICAgaWYgKG51bU1lc3NhZ2VQb3J0cykgewor
ICAgICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQo
IkhhdmUgIik7CisgICAgICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVy
KCktPmFwcGVuZChXVEY6OlN0cmluZzo6bnVtYmVyKG51bU1lc3NhZ2VQb3J0cykpOworICAgICAg
ICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoIiBwb3J0
c1xuIik7CisgICAgfQogCi0gICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IHdrU2VydmljZVVybChB
ZG9wdFdLLCBXS0ludGVudERhdGFDb3B5U2VydmljZShpbnRlbnQuZ2V0KCkpKTsKKyAgICBXS1Jl
dGFpblB0cjxXS1VSTFJlZj4gd2tTZXJ2aWNlVXJsKEFkb3B0V0ssIFdLQnVuZGxlSW50ZW50Q29w
eVNlcnZpY2UoaW50ZW50LmdldCgpKSk7CiAgICAgaWYgKHdrU2VydmljZVVybCkgewogICAgICAg
ICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tTZXJ2aWNlKEFkb3B0V0ssIFdLVVJMQ29weVN0
cmluZyh3a1NlcnZpY2VVcmwuZ2V0KCkpKTsKICAgICAgICAgaWYgKHdrU2VydmljZSAmJiAhV0tT
dHJpbmdJc0VtcHR5KHdrU2VydmljZS5nZXQoKSkpIHsKQEAgLTQ1Miw3ICs0NTcsNyBAQCB2b2lk
IEluamVjdGVkQnVuZGxlUGFnZTo6ZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKFdLQnVuZGxlUGFn
ZVJlZiBwYWdlLCBXS0J1bmRsZQogICAgICAgICB9CiAgICAgfQogCi0gICAgV0tSZXRhaW5QdHI8
V0tEaWN0aW9uYXJ5UmVmPiB3a0V4dHJhcyhBZG9wdFdLLCBXS0ludGVudERhdGFDb3B5RXh0cmFz
KGludGVudC5nZXQoKSkpOworICAgIFdLUmV0YWluUHRyPFdLRGljdGlvbmFyeVJlZj4gd2tFeHRy
YXMoQWRvcHRXSywgV0tCdW5kbGVJbnRlbnRDb3B5RXh0cmFzKGludGVudC5nZXQoKSkpOwogICAg
IFdLUmV0YWluUHRyPFdLQXJyYXlSZWY+IHdrRXh0cmFLZXlzKEFkb3B0V0ssIFdLRGljdGlvbmFy
eUNvcHlLZXlzKHdrRXh0cmFzLmdldCgpKSk7CiAgICAgY29uc3Qgc2l6ZV90IG51bUV4dHJhS2V5
cyA9IFdLQXJyYXlHZXRTaXplKHdrRXh0cmFLZXlzLmdldCgpKTsKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG51bUV4dHJhS2V5czsgKytpKSB7CkBAIC00NjUsNyArNDcwLDcgQEAgdm9pZCBJ
bmplY3RlZEJ1bmRsZVBhZ2U6OmRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZShXS0J1bmRsZVBhZ2VS
ZWYgcGFnZSwgV0tCdW5kbGUKICAgICAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmlu
Z0J1aWxkZXIoKS0+YXBwZW5kKCJcbiIpOwogICAgIH0KIAotICAgIFdLUmV0YWluUHRyPFdLQXJy
YXlSZWY+IHdrU3VnZ2VzdGlvbnMoQWRvcHRXSywgV0tJbnRlbnREYXRhQ29weVN1Z2dlc3Rpb25z
KGludGVudC5nZXQoKSkpOworICAgIFdLUmV0YWluUHRyPFdLQXJyYXlSZWY+IHdrU3VnZ2VzdGlv
bnMoQWRvcHRXSywgV0tCdW5kbGVJbnRlbnRDb3B5U3VnZ2VzdGlvbnMoaW50ZW50LmdldCgpKSk7
CiAgICAgY29uc3Qgc2l6ZV90IG51bVN1Z2dlc3Rpb25zID0gV0tBcnJheUdldFNpemUod2tTdWdn
ZXN0aW9ucy5nZXQoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1TdWdnZXN0aW9u
czsgKytpKSB7CiAgICAgICAgIFdLU3RyaW5nUmVmIHdrU3VnZ2VzdGlvbiA9IHN0YXRpY19jYXN0
PFdLU3RyaW5nUmVmPihXS0FycmF5R2V0SXRlbUF0SW5kZXgod2tTdWdnZXN0aW9ucy5nZXQoKSwg
aSkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9M
YXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCBjZGZmY2FlLi5mM2NkY2IyIDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRl
c3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcApAQCAtNDksOCArNDksOCBAQAogI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyNp
bmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlSW50ZW50Lmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1
bmRsZUludGVudFJlcXVlc3QuaD4KLSNpbmNsdWRlIDxXZWJLaXQyL1dLSW50ZW50RGF0YS5oPgog
I2VuZGlmCiAKIG5hbWVzcGFjZSBXVFIgewpAQCAtNjUxLDggKzY1MSw4IEBAIHZvaWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OmRlbGl2ZXJXZWJJbnRlbnQoSlNTdHJpbmdSZWYgYWN0aW9uLCBKU1N0
cmluZ1JlZiB0eXBlCiAgICAgV0tEaWN0aW9uYXJ5QWRkSXRlbShpbnRlbnRJbml0RGljdC5nZXQo
KSwgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoInR5cGUiKSwgdHlwZVdLLmdldCgpKTsK
ICAgICBXS0RpY3Rpb25hcnlBZGRJdGVtKGludGVudEluaXREaWN0LmdldCgpLCBXS1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZygiZGF0YSIpLCBkYXRhV0suZ2V0KCkpOwogCi0gICAgV0tSZXRh
aW5QdHI8V0tJbnRlbnREYXRhUmVmPiB3a0ludGVudERhdGEoQWRvcHRXSywgV0tJbnRlbnREYXRh
Q3JlYXRlKGludGVudEluaXREaWN0LmdldCgpKSk7Ci0gICAgV0tCdW5kbGVQYWdlRGVsaXZlcklu
dGVudFRvRnJhbWUoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgpLCBtYWlu
RnJhbWUsIHdrSW50ZW50RGF0YS5nZXQoKSk7CisgICAgV0tSZXRhaW5QdHI8V0tCdW5kbGVJbnRl
bnRSZWY+IHdrSW50ZW50KEFkb3B0V0ssIFdLQnVuZGxlSW50ZW50Q3JlYXRlKGludGVudEluaXRE
aWN0LmdldCgpKSk7CisgICAgV0tCdW5kbGVQYWdlRGVsaXZlckludGVudFRvRnJhbWUoSW5qZWN0
ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgpLCBtYWluRnJhbWUsIHdrSW50ZW50Lmdl
dCgpKTsKICNlbmRpZgogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158384</attachid>
            <date>2012-08-14 11:42:46 -0700</date>
            <delta_ts>2012-08-14 21:56:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>89072_wk2_messagePorts.patch</filename>
            <type>text/plain</type>
            <size>60549</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiZGQ2YmViLi5lNWY5ZGJkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDgt
MTMgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKworICAg
ICAgICBbV0syXSBBZGQgc3VwcG9ydCBmb3IgV2ViIEludGVudHMgTWVzc2FnZVBvcnRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTA3MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVuc2tpcCB3ZWJpbnRl
bnRzL3dlYi1pbnRlbnRzLWludm9rZS1wb3J0Lmh0bWwgYW5kCisgICAgICAgIHdlYmludGVudHMv
d2ViLWludGVudHMtb2JqLWNvbnN0cnVjdG9yLmh0bWwgZm9yCisgICAgICAgIFdlYktpdDIgRUZM
IG5vdyB0aGF0IGluZm9ybWF0aW9uIGFib3V0IG1lc3NhZ2UgcG9ydHMKKyAgICAgICAgaXMgY29y
cmVjdGx5IGRpc3BsYXllZCBieSBXZWJLaXRUZXN0UnVubmVyLgorCisgICAgICAgICogcGxhdGZv
cm0vZWZsLXdrMi9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDEyLTA4LTE0ICBDaHJpc3RvcGhlIER1
bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CiAKICAgICAgICAgRml4ICBMYXlvdXRU
ZXN0cy9jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQuZHJhdy5zcGFjZS5jb2xsYXBzZS5ub25z
cGFjZS5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwtd2syL1Rlc3RF
eHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwtd2syL1Rlc3RFeHBlY3RhdGlv
bnMKaW5kZXggNDdkMTNkZC4uZTlhNjJmZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZWZsLXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Vm
bC13azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjc4LDcgKzI3OCwzIEBAIEJVR1dLRUZMIDogaW5z
cGVjdG9yL2V4dGVuc2lvbnMvZXh0ZW5zaW9ucy1wYW5lbC5odG1sID0gVEVYVAogQlVHV0tFRkwg
OiBpbnNwZWN0b3IvZXh0ZW5zaW9ucy9leHRlbnNpb25zLXNpZGViYXIuaHRtbCA9IFRFWFQKIEJV
R1dLRUZMIDoganF1ZXJ5L2F0dHJpYnV0ZXMuaHRtbCA9IFRFWFQKIAotLy8gV1RSIGRvZXMgbm90
IHByaW50IGluZm9ybWF0aW9uIGFib3V0IFdlYiBJbnRlbnRzIE1lc3NhZ2VQb3J0cwotQlVHV0s4
OTA3MiA6IHdlYmludGVudHMvd2ViLWludGVudHMtaW52b2tlLXBvcnQuaHRtbCA9IFRFWFQKLUJV
R1dLODkwNzIgOiB3ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLW9iai1jb25zdHJ1Y3Rvci5odG1sID0g
VEVYVAotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CmluZGV4IGE2NmE1NmMuLmM0M2RkNGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NN
YWtlTGlzdHMudHh0CkBAIC01Niw2ICs1Niw3IEBAIFNFVChXZWJLaXQyX0lOQ0xVREVfRElSRUNU
T1JJRVMKICAgICAiJHtXRUJDT1JFX0RJUn0vYnJpZGdlL2pzYyIKICAgICAiJHtXRUJDT1JFX0RJ
Un0vY3NzIgogICAgICIke1dFQkNPUkVfRElSfS9kb20iCisgICAgIiR7V0VCQ09SRV9ESVJ9L2Rv
bS9kZWZhdWx0IgogICAgICIke1dFQkNPUkVfRElSfS9lZGl0aW5nIgogICAgICIke1dFQkNPUkVf
RElSfS9oaXN0b3J5IgogICAgICIke1dFQkNPUkVfRElSfS9odG1sIgpAQCAtMzgwLDYgKzM4MSw3
IEBAIFNFVChXZWJLaXQyX1NPVVJDRVMKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlQ2xpZW50LmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uY3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3BwCisgICAgV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudC5jcHAKICAgICBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5jcHAKICAgICBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAKICAg
ICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZURpYWdub3N0aWNM
b2dnaW5nQ2xpZW50LmNwcApAQCAtNDAwLDYgKzQwMiw3IEBAIFNFVChXZWJLaXQyX1NPVVJDRVMK
ICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwCiAg
ICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUhpdFRlc3RSZXN1bHQu
Y3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUluc3BlY3Rv
ci5jcHAKKyAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50
LmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnRS
ZXF1ZXN0LmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVO
YXZpZ2F0aW9uQWN0aW9uLmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVOb2RlSGFuZGxlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGY0ZWMyMWUuLjdhMWU4ZWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMzQgQEAKKzIwMTItMDgtMDQgIENocmlzdG9waGUgRHVtZXog
IDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKworICAgICAgICBbV0syXSBBZGQgc3VwcG9y
dCBmb3IgV2ViIEludGVudHMgTWVzc2FnZVBvcnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTA3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBXZWJJbnRlbnRzIE1lc3NhZ2VQ
b3J0cyBpbiBXZWJLaXQyLgorICAgICAgICBNZXNzYWdlUG9ydHMgY2FuIGJlIHBhc3NlZCB3aXRo
IGEgV2ViIEludGVudCBpbgorICAgICAgICBvcmRlciB0byBvcGVuIGEgZGlyZWN0IGNvbW11bmlj
YXRpb24gY2hhbm5lbAorICAgICAgICBiZXR3ZWVuIHRoZSBXZWIgYXBwbGljYXRpb24gYW5kIHRo
ZSBpbnRlbnQgc2VydmljZS4KKworICAgICAgICBUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgYWxyZWFk
eSBzdXBwb3J0ZWQgYnkgV2ViS2l0IDEuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2Vz
IGEgbmV3IEluamVjdGVkQnVuZGxlSW50ZW50CisgICAgICAgIGNsYXNzIHdoaWNoIHdyYXBzIGEg
V2ViQ29yZTo6SW50ZW50LiBUaGlzIHdheQorICAgICAgICBpbmZvcm1hdGlvbiByZWdhcmRpbmcg
dGhlIE1lc3NhZ2VQb3J0cyBpbiBhIFdlYgorICAgICAgICBJbnRlbnQgaXMga2VwdCB3aGVuIHVz
aW5nIGFuIGluamVjdGVkIGJ1bmRsZS4KKworICAgICAgICBGb3IgdGhlIFVJUHJvY2VzcywgV2Vi
SW50ZW50RGF0YSBub3cgY2FycmllcworICAgICAgICBpZGVudGlmaWVycyBmb3IgdGhlIE1lc3Nh
Z2VQb3J0cyB3aGljaCBjYW4gZ28gb3ZlcgorICAgICAgICBJUEMuIFRob3NlIGlkZW50aWZpZXJz
IG1hcCB0byBhY3R1YWwgTWVzc2FnZVBvcnRzCisgICAgICAgIHN0b3JlZCBpbiB0aGUgV2ViIHBy
b2Nlc3MuIFRoaXMgd2F5LCB3aGVuIHRoZSBVSQorICAgICAgICBkZWxpdmVycyBhbiBpbnRlbnQg
dG8gYSBmcmFtZSwgd2UgY2FuIGdldCBiYWNrIHRoZQorICAgICAgICBjb3JyZXNwb25kaW5nIE1l
c3NhZ2VQb3J0cyBmcm9tIHRoZSBXZWIgcHJvY2VzcworICAgICAgICBiZWZvcmUgZGVsaXZlcmlu
ZyB0aGUgaW50ZW50IHRvIHRoZSBET01XaW5kb3cuCisKKyAgICAgICAgVGhpcyBmdW5jdGlvbmFs
aXR5IGlzIGFscmVhZHkgdGVzdGVkIGJ5OgorCisgICAgICAgIC0gd2ViaW50ZW50cy93ZWItaW50
ZW50cy1pbnZva2UtcG9ydC5odG1sCisgICAgICAgIC0gd2ViaW50ZW50cy93ZWItaW50ZW50cy1v
YmotY29uc3RydWN0b3IuaHRtbAorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAg
ICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tCYXNlLmg6
CisgICAgICAgICogU2hhcmVkL0FQSU9iamVjdC5oOgorICAgICAgICAqIFNoYXJlZC9JbnRlbnRE
YXRhLmNwcDogQWRkIE1lc3NhZ2VQb3J0IGlkZW50aWZpZXJzLgorICAgICAgICAoV2ViS2l0OjpJ
bnRlbnREYXRhOjpJbnRlbnREYXRhKToKKyAgICAgICAgKFdlYktpdDo6SW50ZW50RGF0YTo6ZW5j
b2RlKToKKyAgICAgICAgKFdlYktpdDo6SW50ZW50RGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiBT
aGFyZWQvSW50ZW50RGF0YS5oOgorICAgICAgICAoSW50ZW50RGF0YSk6CisgICAgICAgICogVGFy
Z2V0LnByaToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tJbnRlbnREYXRhLmNwcDogUmVu
YW1lIFdLSW50ZW50RGF0YUNvcHlFeHRyYSgpIHRvCisgICAgICAgIFdLSW50ZW50RGF0YUNvcHlF
eHRyYVZhbHVlKCkgZm9yIGNsYXJpdHkuCisgICAgICAgIChXS0ludGVudERhdGFDb3B5RXh0cmFW
YWx1ZSk6IAorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0ludGVudERhdGEuaDogUmVtb3Zl
IFdLSW50ZW50RGF0YUNyZWF0ZSgpIGZ1bmN0aW9uIG5vdworICAgICAgICB0aGF0IFdUUiB1c2Vz
IFdLQnVuZGxlSW50ZW50Q3JlYXRlKCkgaW5zdGVhZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfaW50ZW50LmNwcDoKKyAgICAgICAgKGV3a19pbnRlbnRfZXh0cmFfZ2V0KTogVXNl
IFdLSW50ZW50RGF0YUNvcHlFeHRyYVZhbHVlKCkgaW5zdGVhZCBvZgorICAgICAgICBXS0ludGVu
dERhdGFDb3B5RXh0cmEoKSBzaW5jZSBpdCB3YXMgcmVuYW1lZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViSW50ZW50RGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkludGVudERhdGE6Oldl
YkludGVudERhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnRlbnREYXRhOjp+V2ViSW50ZW50
RGF0YSk6IFJlbW92ZSBNZXNzYWdlUG9ydHMgZnJvbSBXZWJQcm9jZXNzIHVwb24KKyAgICAgICAg
V2ViSW50ZW50RGF0YSBkZXN0cnVjdGlvbi4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkludGVudERhdGE6OmV4dHJhcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYklu
dGVudERhdGEuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkludGVu
dERhdGE6OmNyZWF0ZSk6CisgICAgICAgIChXZWJJbnRlbnREYXRhKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpk
aWRSZWNlaXZlSW50ZW50Rm9yRnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Byb3h5OjpyZW1vdmVNZXNzYWdlUG9ydENoYW5uZWwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYlByb2Nlc3NQcm94eSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUFQSUNhc3QuaDoKKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZUludGVudC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS0ludGVudERhdGEuY3BwLgorICAgICAgICAoV0tCdW5kbGVJbnRlbnRHZXRUeXBlSUQp
OgorICAgICAgICAoV0tCdW5kbGVJbnRlbnRDcmVhdGUpOgorICAgICAgICAoV0tCdW5kbGVJbnRl
bnRDb3B5QWN0aW9uKToKKyAgICAgICAgKFdLQnVuZGxlSW50ZW50Q29weVR5cGUpOgorICAgICAg
ICAoV0tCdW5kbGVJbnRlbnRDb3B5U2VydmljZSk6CisgICAgICAgIChXS0J1bmRsZUludGVudENv
cHlTdWdnZXN0aW9ucyk6CisgICAgICAgIChXS0J1bmRsZUludGVudENvcHlFeHRyYVZhbHVlKToK
KyAgICAgICAgKFdLQnVuZGxlSW50ZW50Q29weUV4dHJhcyk6CisgICAgICAgIChXS0J1bmRsZUlu
dGVudE1lc3NhZ2VQb3J0Q291bnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVJbnRlbnQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLSW50ZW50RGF0YS5oLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdLQnVu
ZGxlSW50ZW50UmVxdWVzdENvcHlJbnRlbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnRSZXF1ZXN0Lmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwOgorICAgICAgICAoV0tC
dW5kbGVQYWdlRGVsaXZlckludGVudFRvRnJhbWUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudC5jcHA6IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnRlbnREYXRhLmNwcC4KKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlSW50ZW50OjpjcmVhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZUludGVudDo6SW5qZWN0ZWRCdW5kbGVJbnRlbnQpOgor
ICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZUludGVudDo6YWN0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OnBheWxvYWRUeXBlKToKKyAgICAgICAgKFdl
YktpdDo6SW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OnNlcnZpY2UpOgorICAgICAgICAoV2ViS2l0OjpJ
bmplY3RlZEJ1bmRsZUludGVudDo6ZGF0YSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVu
ZGxlSW50ZW50OjpleHRyYSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlSW50ZW50
OjpleHRyYXMpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZUludGVudDo6c3VnZ2Vz
dGlvbnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVJbnRlbnQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkludGVu
dERhdGEuaC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChJbmplY3RlZEJ1bmRsZUludGVu
dCk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlSW50ZW50Ojpjb3JlSW50ZW50KToK
KyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OnR5cGUpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0OjppbnRlbnQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRl
bnRSZXF1ZXN0Lmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoSW5qZWN0ZWRCdW5kbGVJ
bnRlbnRSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6ZGVsaXZlckludGVudCk6CisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJGcmFtZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6ZGVsaXZlckNvcmVJbnRlbnRUb0ZyYW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJQYWdl
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOiBTdG9yZSBNZXNzYWdlUG9y
dHMgaW4gV2ViUHJvY2VzcyBhbmQga2VlcCBtYXBwaW5nIHdpdGgKKyAgICAgICAgdGhlaXIgaWRl
bnRpZmllcnMuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
OjphZGRNZXNzYWdlUG9ydENoYW5uZWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpt
ZXNzYWdlUG9ydENoYW5uZWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpyZW1vdmVN
ZXNzYWdlUG9ydENoYW5uZWwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisKIDIwMTItMDgtMTQgIEFsbGFuIFNhbmRm
ZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+CiAKICAgICAgICAgW1F0XSBVcGRh
dGVBdGxhcyBpcyB3YXN0aW5nIG1lbW9yeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05V
bWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5k
ZXggZDczN2JjNy4uZDQxN2I1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZp
bGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC05
NjEsNiArOTYxLDggQEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW5pdGlhbGl6ZS5oIFwKIAlTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW5zcGVj
dG9yLmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZUluc3BlY3Rvci5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50LmNwcCBcCisJU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudC5oIFwKIAlTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50UmVx
dWVzdC5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVJbnRlbnRSZXF1ZXN0LmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVOb2RlSGFuZGxlLmNwcCBcCkBAIC05OTUsNiAr
OTk3LDggQEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmggXAogCVNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRU
ZXN0UmVzdWx0LmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuaCBcCisJU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudC5jcHAgXAorCVNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnQuaCBc
CiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZUludGVudFJlcXVlc3QuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5j
cHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCmluZGV4IDY4NTRlY2MuLmE2YThi
ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKQEAgLTEzNSw2ICsxMzUsNyBA
QCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbiog
V0tCdW5kbGVET01XaW5kb3dFeHRlbnNpbwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tC
dW5kbGVGcmFtZSogV0tCdW5kbGVGcmFtZVJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1
ZVdLQnVuZGxlSGl0VGVzdFJlc3VsdCogV0tCdW5kbGVIaXRUZXN0UmVzdWx0UmVmOwogdHlwZWRl
ZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVJbnNwZWN0b3IqIFdLQnVuZGxlSW5zcGVjdG9y
UmVmOwordHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVJbnRlbnQqIFdLQnVuZGxl
SW50ZW50UmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVJbnRlbnRSZXF1
ZXN0KiBXS0J1bmRsZUludGVudFJlcXVlc3RSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFx
dWVXS0J1bmRsZU5hdmlnYXRpb25BY3Rpb24qIFdLQnVuZGxlTmF2aWdhdGlvbkFjdGlvblJlZjsK
IHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQnVuZGxlTm9kZUhhbmRsZSogV0tCdW5kbGVO
b2RlSGFuZGxlUmVmOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVj
dC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCmluZGV4IDhlNGQyOTMuLjcw
OGVmZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKQEAgLTExNyw2ICsxMTcsNyBAQCBw
dWJsaWM6CiAgICAgICAgIFR5cGVCdW5kbGVGcmFtZSwKICAgICAgICAgVHlwZUJ1bmRsZUhpdFRl
c3RSZXN1bHQsCiAgICAgICAgIFR5cGVCdW5kbGVJbnNwZWN0b3IsCisgICAgICAgIFR5cGVCdW5k
bGVJbnRlbnQsCiAgICAgICAgIFR5cGVCdW5kbGVJbnRlbnRSZXF1ZXN0LAogICAgICAgICBUeXBl
QnVuZGxlTmF2aWdhdGlvbkFjdGlvbiwKICAgICAgICAgVHlwZUJ1bmRsZU5vZGVIYW5kbGUsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW50ZW50RGF0YS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvSW50ZW50RGF0YS5jcHAKaW5kZXggNDk5NWIyZS4uNDEwNzg3NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0ludGVudERhdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9JbnRlbnREYXRhLmNwcApAQCAtMzEsNyArMzEsMTAgQEAKICNpbmNs
dWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAi
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvSW50ZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9NZXNzYWdlUG9ydENoYW5u
ZWwuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmg+CiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC00NSw2ICs0OCwxMiBAQCBJbnRlbnREYXRh
OjpJbnRlbnREYXRhKEludGVudCogY29yZUludGVudCkKICAgICAsIGV4dHJhcyhjb3JlSW50ZW50
LT5leHRyYXMoKSkKICAgICAsIHN1Z2dlc3Rpb25zKGNvcmVJbnRlbnQtPnN1Z2dlc3Rpb25zKCkp
CiB7CisgICAgTWVzc2FnZVBvcnRDaGFubmVsQXJyYXkqIGNvcmVNZXNzYWdlUG9ydHMgPSBjb3Jl
SW50ZW50LT5tZXNzYWdlUG9ydHMoKTsKKyAgICBpZiAoY29yZU1lc3NhZ2VQb3J0cykgeworICAg
ICAgICBzaXplX3QgbnVtTWVzc2FnZVBvcnRzID0gY29yZU1lc3NhZ2VQb3J0cy0+c2l6ZSgpOwor
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bU1lc3NhZ2VQb3J0czsgKytpKQorICAg
ICAgICAgICAgbWVzc2FnZVBvcnRzLmFwcGVuZChXZWJQcm9jZXNzOjpzaGFyZWQoKS5hZGRNZXNz
YWdlUG9ydENoYW5uZWwoKCpjb3JlTWVzc2FnZVBvcnRzKVtpXS0+Y2hhbm5lbCgpKSk7CisgICAg
fQogfQogCiB2b2lkIEludGVudERhdGE6OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIq
IGVuY29kZXIpIGNvbnN0CkBAIC01NSw2ICs2NCw3IEBAIHZvaWQgSW50ZW50RGF0YTo6ZW5jb2Rl
KENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciogZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyLT5l
bmNvZGUoQ29yZUlQQzo6RGF0YVJlZmVyZW5jZShkYXRhKSk7CiAgICAgZW5jb2Rlci0+ZW5jb2Rl
KGV4dHJhcyk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKHN1Z2dlc3Rpb25zKTsKKyAgICBlbmNvZGVy
LT5lbmNvZGUobWVzc2FnZVBvcnRzKTsKIH0KIAogYm9vbCBJbnRlbnREYXRhOjpkZWNvZGUoQ29y
ZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBJbnRlbnREYXRhJiBpbnRlbnREYXRhKQpA
QCAtNzMsNiArODMsOCBAQCBib29sIEludGVudERhdGE6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVu
dERlY29kZXIqIGRlY29kZXIsIEludGVudERhdGEmIGludGVudERhdAogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoaW50ZW50RGF0YS5zdWdnZXN0aW9ucykp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZShpbnRlbnRE
YXRhLm1lc3NhZ2VQb3J0cykpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiB0
cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0ludGVudERhdGEuaCBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9JbnRlbnREYXRhLmgKaW5kZXggOTZlMmQ5Zi4uZTg0MzVj
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0ludGVudERhdGEuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW50ZW50RGF0YS5oCkBAIC0yOSw3ICsyOSw4IEBACiAjaWYg
RU5BQkxFKFdFQl9JTlRFTlRTKQogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCi0jaW5jbHVkZSAi
R2VuZXJpY0NhbGxiYWNrLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9LVVJMLmg+CisjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNw
YWNlIENvcmVJUEMgewpAQCAtNTYsNiArNTcsNyBAQCBzdHJ1Y3QgSW50ZW50RGF0YSB7CiAgICAg
VmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gZXh0cmFz
OwogICAgIFZlY3RvcjxXZWJDb3JlOjpLVVJMPiBzdWdnZXN0aW9uczsKKyAgICBWZWN0b3I8dWlu
dDY0X3Q+IG1lc3NhZ2VQb3J0czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5w
cmkKaW5kZXggYjhlMWFlYy4uMzczMzY1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVGFy
Z2V0LnByaQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCkBAIC0yNzksNiArMjc5LDcg
QEAgSEVBREVSUyArPSBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZUJhY2tGb3J3YXJkTGlzdC5oIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5oIFwKICAgICBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSGl0VGVzdFJlc3VsdC5oIFwKKyAgICBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50LmggXAogICAgIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnRSZXF1ZXN0LmggXAogICAgIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmggXAog
ICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVOb2RlSGFuZGxlLmgg
XApAQCAtMjkyLDYgKzI5Myw3IEBAIEhFQURFUlMgKz0gXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5oIFwKICAgICBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5oIFwKKyAgICBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50LmggXAogICAgIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0LmggXAog
ICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0
aW9uLmggXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
Q29udGV4dE1lbnVDbGllbnQuaCBcCkBAIC02MzEsNiArNjMzLDcgQEAgU09VUkNFUyArPSBcCiAg
ICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNwcCBcCiAg
ICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUhpdFRlc3RSZXN1bHQu
Y3BwIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW5zcGVj
dG9yLmNwcCBcCisgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUlu
dGVudC5jcHAgXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJ
bnRlbnRSZXF1ZXN0LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3BwIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlTm9kZUhhbmRsZS5jcHAgXApAQCAtNjQ2LDYgKzY0OSw3IEBAIFNP
VVJDRVMgKz0gXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVD
bGllbnQuY3BwIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
RE9NV2luZG93RXh0ZW5zaW9uLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3BwIFwKKyAgICBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuY3BwIFwKICAgICBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAgXAogICAg
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVD
bGllbnQuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S0ludGVudERhdGEuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLSW50ZW50
RGF0YS5jcHAKaW5kZXggN2E5MmRiNS4uOTJlNjE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLSW50ZW50RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLSW50ZW50RGF0YS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNs
dWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXS0RpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJX
S1N0cmluZy5oIgorI2luY2x1ZGUgIldlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogCiAjaWYg
RU5BQkxFKFdFQl9JTlRFTlRTKQogI2luY2x1ZGUgIldlYkludGVudERhdGEuaCIKQEAgLTQ3LDI3
ICs0OCw2IEBAIFdLVHlwZUlEIFdLSW50ZW50RGF0YUdldFR5cGVJRCgpCiAjZW5kaWYKIH0KIAot
V0tJbnRlbnREYXRhUmVmIFdLSW50ZW50RGF0YUNyZWF0ZShXS0RpY3Rpb25hcnlSZWYgaW5pdERp
Y3Rpb25hcnlSZWYpCi17Ci0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotICAgIEludGVudERhdGEg
aW50ZW50RGF0YTsKLSAgICBXS1N0cmluZ1JlZiBhY3Rpb24gPSBzdGF0aWNfY2FzdDxXS1N0cmlu
Z1JlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShpbml0RGljdGlvbmFyeVJlZiwgV0tTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImFjdGlvbiIpKSk7Ci0gICAgQVNTRVJUKGFjdGlvbik7
Ci0gICAgaW50ZW50RGF0YS5hY3Rpb24gPSB0b0ltcGwoYWN0aW9uKS0+c3RyaW5nKCk7Ci0gICAg
V0tTdHJpbmdSZWYgdHlwZSA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlH
ZXRJdGVtRm9yS2V5KGluaXREaWN0aW9uYXJ5UmVmLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZygidHlwZSIpKSk7Ci0gICAgQVNTRVJUKHR5cGUpOwotICAgIGludGVudERhdGEudHlwZSA9
IHRvSW1wbCh0eXBlKS0+c3RyaW5nKCk7Ci0gICAgV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYg
ZGF0YSA9IHN0YXRpY19jYXN0PFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmPihXS0RpY3Rpb25h
cnlHZXRJdGVtRm9yS2V5KGluaXREaWN0aW9uYXJ5UmVmLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZygiZGF0YSIpKSk7Ci0gICAgaWYgKGRhdGEpCi0gICAgICAgIGludGVudERhdGEuZGF0
YSA9IHRvSW1wbChkYXRhKS0+ZGF0YVJlZmVyZW5jZSgpLnZlY3RvcigpOwotCi0gICAgUmVmUHRy
PFdlYkludGVudERhdGE+IHdlYkludGVudERhdGEgPSBXZWJJbnRlbnREYXRhOjpjcmVhdGUoaW50
ZW50RGF0YSk7Ci0gICAgcmV0dXJuIHRvQVBJKHdlYkludGVudERhdGEucmVsZWFzZSgpLmxlYWtS
ZWYoKSk7Ci0jZWxzZQotICAgIHJldHVybiAwOwotI2VuZGlmCi19Ci0KIFdLU3RyaW5nUmVmIFdL
SW50ZW50RGF0YUNvcHlBY3Rpb24oV0tJbnRlbnREYXRhUmVmIGludGVudFJlZikKIHsKICNpZiBF
TkFCTEUoV0VCX0lOVEVOVFMpCkBAIC0xMDQsNyArODQsNyBAQCBXS0FycmF5UmVmIFdLSW50ZW50
RGF0YUNvcHlTdWdnZXN0aW9ucyhXS0ludGVudERhdGFSZWYgaW50ZW50UmVmKQogI2VuZGlmCiB9
CiAKLVdLU3RyaW5nUmVmIFdLSW50ZW50RGF0YUNvcHlFeHRyYShXS0ludGVudERhdGFSZWYgaW50
ZW50UmVmLCBXS1N0cmluZ1JlZiBrZXkpCitXS1N0cmluZ1JlZiBXS0ludGVudERhdGFDb3B5RXh0
cmFWYWx1ZShXS0ludGVudERhdGFSZWYgaW50ZW50UmVmLCBXS1N0cmluZ1JlZiBrZXkpCiB7CiAj
aWYgRU5BQkxFKFdFQl9JTlRFTlRTKQogICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwoaW50
ZW50UmVmKS0+ZXh0cmEodG9XVEZTdHJpbmcoa2V5KSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLSW50ZW50RGF0YS5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLSW50ZW50RGF0YS5oCmluZGV4IDFmODA5ZWMuLmNhZjFiNDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0ludGVudERhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnRlbnREYXRhLmgKQEAgLTM0LDEz
ICszNCwxMSBAQCBleHRlcm4gIkMiIHsKIAogV0tfRVhQT1JUIFdLVHlwZUlEIFdLSW50ZW50RGF0
YUdldFR5cGVJRCgpOwogCi1XS19FWFBPUlQgV0tJbnRlbnREYXRhUmVmIFdLSW50ZW50RGF0YUNy
ZWF0ZShXS0RpY3Rpb25hcnlSZWYgaW5pdERpY3Rpb25hcnkpOwotCiBXS19FWFBPUlQgV0tTdHJp
bmdSZWYgV0tJbnRlbnREYXRhQ29weUFjdGlvbihXS0ludGVudERhdGFSZWYgaW50ZW50UmVmKTsK
IFdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0ludGVudERhdGFDb3B5VHlwZShXS0ludGVudERhdGFS
ZWYgaW50ZW50UmVmKTsKIFdLX0VYUE9SVCBXS1VSTFJlZiBXS0ludGVudERhdGFDb3B5U2Vydmlj
ZShXS0ludGVudERhdGFSZWYgaW50ZW50UmVmKTsKIFdLX0VYUE9SVCBXS0FycmF5UmVmIFdLSW50
ZW50RGF0YUNvcHlTdWdnZXN0aW9ucyhXS0ludGVudERhdGFSZWYgaW50ZW50UmVmKTsKLVdLX0VY
UE9SVCBXS1N0cmluZ1JlZiBXS0ludGVudERhdGFDb3B5RXh0cmEoV0tJbnRlbnREYXRhUmVmIGlu
dGVudFJlZiwgV0tTdHJpbmdSZWYga2V5KTsKK1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0ludGVu
dERhdGFDb3B5RXh0cmFWYWx1ZShXS0ludGVudERhdGFSZWYgaW50ZW50UmVmLCBXS1N0cmluZ1Jl
ZiBrZXkpOwogV0tfRVhQT1JUIFdLRGljdGlvbmFyeVJlZiBXS0ludGVudERhdGFDb3B5RXh0cmFz
KFdLSW50ZW50RGF0YVJlZiBpbnRlbnRSZWYpOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19pbnRlbnQuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2ludGVudC5jcHAKaW5kZXggODU2
MTc5My4uNWMyYjIxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX2ludGVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX2ludGVudC5jcHAKQEAgLTE3MSw3ICsxNzEsNyBAQCBjb25zdCBjaGFyKiBld2tfaW50ZW50
X2V4dHJhX2dldChjb25zdCBFd2tfSW50ZW50KiBpbnRlbnQsIGNvbnN0IGNoYXIqIGtleSkKICAg
ICBFV0tfSU5URU5UX1dLX0dFVF9PUl9SRVRVUk4oaW50ZW50LCB3a0ludGVudCwgMCk7CiAKICAg
ICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4ga2V5UmVmID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZyhrZXkpKTsKLSAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tW
YWx1ZShBZG9wdFdLLCBXS0ludGVudERhdGFDb3B5RXh0cmEod2tJbnRlbnQsIGtleVJlZi5nZXQo
KSkpOworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB3a1ZhbHVlKEFkb3B0V0ssIFdLSW50
ZW50RGF0YUNvcHlFeHRyYVZhbHVlKHdrSW50ZW50LCBrZXlSZWYuZ2V0KCkpKTsKICAgICBTdHJp
bmcgdmFsdWUgPSB0b0ltcGwod2tWYWx1ZS5nZXQoKSktPnN0cmluZygpOwogICAgIGlmICh2YWx1
ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkludGVudERhdGEuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkludGVudERhdGEuY3BwCmluZGV4IDk2MTI4ZGIuLjYzMmFhM2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnRlbnREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViSW50ZW50RGF0YS5jcHAKQEAgLTMwLDE2ICszMCwyOSBAQAogCiAj
aW5jbHVkZSAiSW1tdXRhYmxlQXJyYXkuaCIKICNpbmNsdWRlICJJbW11dGFibGVEaWN0aW9uYXJ5
LmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCisjaW5jbHVkZSAiV2ViU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCiAjaW5jbHVkZSAiV2ViVVJM
LmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1XZWJJbnRlbnREYXRhOjpXZWJJbnRlbnREYXRh
KGNvbnN0IEludGVudERhdGEmIHN0b3JlKQorV2ViSW50ZW50RGF0YTo6V2ViSW50ZW50RGF0YShj
b25zdCBJbnRlbnREYXRhJiBzdG9yZSwgV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzKQogICAgIDog
bV9zdG9yZShzdG9yZSkKKyAgICAsIG1fcHJvY2Vzcyhwcm9jZXNzKQogewogfQogCitXZWJJbnRl
bnREYXRhOjp+V2ViSW50ZW50RGF0YSgpCit7CisgICAgLy8gUmVtb3ZlIE1lc3NhZ2VQb3J0Q2hh
bm5lbHMgZnJvbSBXZWJQcm9jZXNzLgorICAgIGlmIChtX3Byb2Nlc3MpIHsKKyAgICAgICAgc2l6
ZV90IG51bU1lc3NhZ2VQb3J0cyA9IG1fc3RvcmUubWVzc2FnZVBvcnRzLnNpemUoKTsKKyAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1NZXNzYWdlUG9ydHM7ICsraSkKKyAgICAgICAg
ICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVBvcnRDaGFubmVsKG1fc3RvcmUubWVzc2FnZVBv
cnRzW2ldKTsKKyAgICB9Cit9CisKIFBhc3NSZWZQdHI8V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBXZWJJbnRlbnREYXRhOjpkYXRhKCkgY29uc3QKIHsKICAgICBWZWN0b3I8dWludDhfdD4gZGF0
YUNvcHkgPSBtX3N0b3JlLmRhdGE7CkBAIC02Niw2ICs3OSw3IEBAIFBhc3NSZWZQdHI8SW1tdXRh
YmxlRGljdGlvbmFyeT4gV2ViSW50ZW50RGF0YTo6ZXh0cmFzKCkgY29uc3QKICAgICBIYXNoTWFw
PFN0cmluZywgU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9zdG9yZS5leHRyYXMuZW5k
KCk7CiAgICAgZm9yIChIYXNoTWFwPFN0cmluZywgU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQg
PSBtX3N0b3JlLmV4dHJhcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCiAgICAgICAgIHdrRXh0
cmFzLnNldChpdC0+Zmlyc3QsIFdlYlN0cmluZzo6Y3JlYXRlKGl0LT5zZWNvbmQpKTsKKwogICAg
IHJldHVybiBJbW11dGFibGVEaWN0aW9uYXJ5OjphZG9wdCh3a0V4dHJhcyk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnRlbnREYXRhLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW50ZW50RGF0YS5oCmluZGV4IGRlY2Y0YWUuLjlkNTlmOTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnRlbnREYXRhLmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkludGVudERhdGEuaApAQCAtMzAsMjEgKzMw
LDI2IEBACiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJJbnRlbnREYXRhLmgi
Ci0jaW5jbHVkZSAiV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9LVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKK2NsYXNzIEltbXV0YWJsZUFycmF5OworY2xhc3MgSW1tdXRhYmxlRGljdGlvbmFyeTsK
K2NsYXNzIFdlYlByb2Nlc3NQcm94eTsKK2NsYXNzIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsK
KwogY2xhc3MgV2ViSW50ZW50RGF0YSA6IHB1YmxpYyBBUElPYmplY3QgewogcHVibGljOgogICAg
IHN0YXRpYyBjb25zdCBUeXBlIEFQSVR5cGUgPSBUeXBlSW50ZW50RGF0YTsKIAotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFdlYkludGVudERhdGE+IGNyZWF0ZShjb25zdCBJbnRlbnREYXRhJiBzdG9y
ZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJJbnRlbnREYXRhPiBjcmVhdGUoY29uc3QgSW50
ZW50RGF0YSYgc3RvcmUsIFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcykKICAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgV2ViSW50ZW50RGF0YShzdG9yZSkpOworICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFdlYkludGVudERhdGEoc3RvcmUsIHByb2Nlc3MpKTsKICAgICB9CiAK
LSAgICB2aXJ0dWFsIH5XZWJJbnRlbnREYXRhKCkgeyB9CisgICAgdmlydHVhbCB+V2ViSW50ZW50
RGF0YSgpOwogCiAgICAgY29uc3QgU3RyaW5nJiBhY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3N0
b3JlLmFjdGlvbjsgfQogICAgIGNvbnN0IFN0cmluZyYgcGF5bG9hZFR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX3N0b3JlLnR5cGU7IH0KQEAgLTU3LDExICs2MiwxMiBAQCBwdWJsaWM6CiAgICAgY29u
c3QgSW50ZW50RGF0YSYgc3RvcmUoKSBjb25zdCB7IHJldHVybiBtX3N0b3JlOyB9CiAKIHByaXZh
dGU6Ci0gICAgV2ViSW50ZW50RGF0YShjb25zdCBJbnRlbnREYXRhJik7CisgICAgV2ViSW50ZW50
RGF0YShjb25zdCBJbnRlbnREYXRhJiwgV2ViUHJvY2Vzc1Byb3h5Kik7CiAKICAgICB2aXJ0dWFs
IFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIEFQSVR5cGU7IH0KIAogICAgIEludGVudERhdGEg
bV9zdG9yZTsKKyAgICBXZWJQcm9jZXNzUHJveHkqIG1fcHJvY2VzczsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApp
bmRleCA5YzRkZjhlLi5mZjEzNzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcApAQCAtMjIwNiw3ICsyMjA2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJl
Y2VpdmVJbnRlbnRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBJbnRlbnREYXRhJgog
ICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gcHJvY2VzcygpLT53ZWJGcmFtZShmcmFtZUlEKTsK
ICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKIAotICAgIFJlZlB0cjxXZWJJbnRlbnREYXRhPiB3
ZWJJbnRlbnREYXRhID0gV2ViSW50ZW50RGF0YTo6Y3JlYXRlKGludGVudERhdGEpOworICAgIFJl
ZlB0cjxXZWJJbnRlbnREYXRhPiB3ZWJJbnRlbnREYXRhID0gV2ViSW50ZW50RGF0YTo6Y3JlYXRl
KGludGVudERhdGEsIHByb2Nlc3MoKSk7CiAgICAgbV9sb2FkZXJDbGllbnQuZGlkUmVjZWl2ZUlu
dGVudEZvckZyYW1lKHRoaXMsIGZyYW1lLCB3ZWJJbnRlbnREYXRhLmdldCgpLCB1c2VyRGF0YS5n
ZXQoKSk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAKaW5kZXggNjk0YTMxMi4uMjI0OTg0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTIwMSw2ICsyMDEsMTYgQEAgdm9pZCBXZWJQ
cm9jZXNzUHJveHk6OnJlbW92ZVdlYlBhZ2UodWludDY0X3QgcGFnZUlEKQogICAgIG1fcGFnZU1h
cC5yZW1vdmUocGFnZUlEKTsKIH0KIAorI2lmIEVOQUJMRShXRUJfSU5URU5UUykKK3ZvaWQgV2Vi
UHJvY2Vzc1Byb3h5OjpyZW1vdmVNZXNzYWdlUG9ydENoYW5uZWwodWludDY0X3QgY2hhbm5lbElE
KQoreworICAgIGlmICghaXNWYWxpZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQcm9jZXNzOjpSZW1vdmVNZXNzYWdlUG9ydENoYW5uZWwoY2hhbm5lbElEKSwg
LyogZGVzdGluYXRpb25JRCAqLyAwKTsKK30KKyNlbmRpZgorCiBXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtKiBXZWJQcm9jZXNzUHJveHk6OndlYkJhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBpdGVtSUQp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fYmFja0ZvcndhcmRMaXN0SXRlbU1hcC5nZXQoaXRlbUlE
KS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRl
eCA0MGFiNTQ4Li4yZGMyMDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5oCkBAIC04NSw2ICs4NSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRFeGlzdGlu
Z1dlYlBhZ2UoV2ViUGFnZVByb3h5KiwgdWludDY0X3QgcGFnZUlEKTsKICAgICB2b2lkIHJlbW92
ZVdlYlBhZ2UodWludDY0X3QgcGFnZUlEKTsKIAorI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAg
ICB2b2lkIHJlbW92ZU1lc3NhZ2VQb3J0Q2hhbm5lbCh1aW50NjRfdCBjaGFubmVsSUQpOworI2Vu
ZGlmCisKICAgICBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiB3ZWJCYWNrRm9yd2FyZEl0ZW0odWlu
dDY0X3QgaXRlbUlEKSBjb25zdDsKIAogICAgIFJlc3BvbnNpdmVuZXNzVGltZXIqIHJlc3BvbnNp
dmVuZXNzVGltZXIoKSB7IHJldHVybiAmbV9yZXNwb25zaXZlbmVzc1RpbWVyOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlQVBJQ2FzdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZUFQSUNhc3QuaAppbmRleCAzMzU1ZDA4Li4wMThlZjc5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
QVBJQ2FzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVBUElDYXN0LmgKQEAgLTQ2LDYgKzQ2LDcgQEAgY2xhc3MgSW5qZWN0ZWRC
dW5kbGVCYWNrRm9yd2FyZExpc3Q7CiBjbGFzcyBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlz
dEl0ZW07CiBjbGFzcyBJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbjsKIGNsYXNzIElu
amVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdDsKK2NsYXNzIEluamVjdGVkQnVuZGxlSW50ZW50Owog
Y2xhc3MgSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0OwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVO
YXZpZ2F0aW9uQWN0aW9uOwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOwpAQCAtNjQs
NiArNjUsNyBAQCBXS19BRERfQVBJX01BUFBJTkcoV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25S
ZWYsIEluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaQogV0tfQUREX0FQSV9NQVBQSU5HKFdL
QnVuZGxlRnJhbWVSZWYsIFdlYkZyYW1lKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLQnVuZGxlSGl0
VGVzdFJlc3VsdFJlZiwgSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0KQogV0tfQUREX0FQSV9N
QVBQSU5HKFdLQnVuZGxlSW5zcGVjdG9yUmVmLCBXZWJJbnNwZWN0b3IpCitXS19BRERfQVBJX01B
UFBJTkcoV0tCdW5kbGVJbnRlbnRSZWYsIEluamVjdGVkQnVuZGxlSW50ZW50KQogV0tfQUREX0FQ
SV9NQVBQSU5HKFdLQnVuZGxlSW50ZW50UmVxdWVzdFJlZiwgSW5qZWN0ZWRCdW5kbGVJbnRlbnRS
ZXF1ZXN0KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLQnVuZGxlTmF2aWdhdGlvbkFjdGlvblJlZiwg
SW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLQnVu
ZGxlTm9kZUhhbmRsZVJlZiwgSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUlu
dGVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlSW50ZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42
NmZiN2RlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudC5jcHAKQEAgLTAsMCArMSwxNDAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXS0J1bmRs
ZUludGVudC5oIgorCisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorI2luY2x1ZGUgIkltbXV0YWJs
ZUFycmF5LmgiCisjaW5jbHVkZSAiSW1tdXRhYmxlRGljdGlvbmFyeS5oIgorI2luY2x1ZGUgIklu
amVjdGVkQnVuZGxlSW50ZW50LmgiCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAi
V0tCdW5kbGVBUElDYXN0LmgiCisjaW5jbHVkZSAiV0tEaWN0aW9uYXJ5LmgiCisjaW5jbHVkZSAi
V0tTdHJpbmcuaCIKKyNpbmNsdWRlICJXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKyNlbmRp
ZgorCisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1
c2luZyBuYW1lc3BhY2UgV2ViS2l0OworI2VuZGlmCisKK1dLVHlwZUlEIFdLQnVuZGxlSW50ZW50
R2V0VHlwZUlEKCkKK3sKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgcmV0dXJuIHRvQVBJ
KEluamVjdGVkQnVuZGxlSW50ZW50OjpBUElUeXBlKTsKKyNlbHNlCisgICAgcmV0dXJuIDA7Cisj
ZW5kaWYKK30KKworV0tCdW5kbGVJbnRlbnRSZWYgV0tCdW5kbGVJbnRlbnRDcmVhdGUoV0tEaWN0
aW9uYXJ5UmVmIGRpY3Rpb25hcnlSZWYpCit7CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorICAg
IFdLU3RyaW5nUmVmIGFjdGlvbiA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25h
cnlHZXRJdGVtRm9yS2V5KGRpY3Rpb25hcnlSZWYsIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKCJhY3Rpb24iKSkpOworICAgIEFTU0VSVChhY3Rpb24pOworICAgIFdLU3RyaW5nUmVmIHR5
cGUgPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShk
aWN0aW9uYXJ5UmVmLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygidHlwZSIpKSk7Cisg
ICAgQVNTRVJUKHR5cGUpOworICAgIFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmIGRhdGEgPSBz
dGF0aWNfY2FzdDxXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRl
bUZvcktleShkaWN0aW9uYXJ5UmVmLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiZGF0
YSIpKSk7CisgICAgTWVzc2FnZVBvcnRBcnJheSBkdW1teVBvcnRzOworICAgIEV4Y2VwdGlvbkNv
ZGUgZWM7CisKKyAgICBSZWZQdHI8SW50ZW50PiBjb3JlSW50ZW50ID0gSW50ZW50OjpjcmVhdGUo
dG9JbXBsKGFjdGlvbiktPnN0cmluZygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0b0ltcGwodHlwZSktPnN0cmluZygpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhID8gc3RhdGljX2Nhc3Q8U2VyaWFs
aXplZFNjcmlwdFZhbHVlKj4odG9JbXBsKGRhdGEpLT5pbnRlcm5hbFJlcHJlc2VudGF0aW9uKCkp
IDogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVt
bXlQb3J0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZWMpOworCisgICAgcmV0dXJuIHRvQVBJKEluamVjdGVkQnVuZGxlSW50ZW50OjpjcmVhdGUoY29y
ZUludGVudC5nZXQoKSkubGVha1JlZigpKTsKKyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYK
K30KKworV0tTdHJpbmdSZWYgV0tCdW5kbGVJbnRlbnRDb3B5QWN0aW9uKFdLQnVuZGxlSW50ZW50
UmVmIGludGVudFJlZikKK3sKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgcmV0dXJuIHRv
Q29waWVkQVBJKHRvSW1wbChpbnRlbnRSZWYpLT5hY3Rpb24oKSk7CisjZWxzZQorICAgIHJldHVy
biAwOworI2VuZGlmCit9CisKK1dLU3RyaW5nUmVmIFdLQnVuZGxlSW50ZW50Q29weVR5cGUoV0tC
dW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmKQoreworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAg
ICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKGludGVudFJlZiktPnBheWxvYWRUeXBlKCkpOwor
I2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCitXS1VSTFJlZiBXS0J1bmRsZUludGVu
dENvcHlTZXJ2aWNlKFdLQnVuZGxlSW50ZW50UmVmIGludGVudFJlZikKK3sKKyNpZiBFTkFCTEUo
V0VCX0lOVEVOVFMpCisgICAgcmV0dXJuIHRvQ29waWVkVVJMQVBJKHRvSW1wbChpbnRlbnRSZWYp
LT5zZXJ2aWNlKCkpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCitXS0FycmF5
UmVmIFdLQnVuZGxlSW50ZW50Q29weVN1Z2dlc3Rpb25zKFdLQnVuZGxlSW50ZW50UmVmIGludGVu
dFJlZikKK3sKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgcmV0dXJuIHRvQVBJKHRvSW1w
bChpbnRlbnRSZWYpLT5zdWdnZXN0aW9ucygpLmxlYWtSZWYoKSk7CisjZWxzZQorICAgIHJldHVy
biAwOworI2VuZGlmCit9CisKK1dLU3RyaW5nUmVmIFdLQnVuZGxlSW50ZW50Q29weUV4dHJhVmFs
dWUoV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmLCBXS1N0cmluZ1JlZiBrZXkpCit7CisjaWYg
RU5BQkxFKFdFQl9JTlRFTlRTKQorICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwoaW50ZW50
UmVmKS0+ZXh0cmEodG9XVEZTdHJpbmcoa2V5KSkpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNl
bmRpZgorfQorCitXS0RpY3Rpb25hcnlSZWYgV0tCdW5kbGVJbnRlbnRDb3B5RXh0cmFzKFdLQnVu
ZGxlSW50ZW50UmVmIGludGVudFJlZikKK3sKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAg
cmV0dXJuIHRvQVBJKHRvSW1wbChpbnRlbnRSZWYpLT5leHRyYXMoKS5sZWFrUmVmKCkpOworI2Vs
c2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCitzaXplX3QgV0tCdW5kbGVJbnRlbnRNZXNz
YWdlUG9ydENvdW50KFdLQnVuZGxlSW50ZW50UmVmIGludGVudFJlZikKK3sKKyNpZiBFTkFCTEUo
V0VCX0lOVEVOVFMpCisgICAgTWVzc2FnZVBvcnRDaGFubmVsQXJyYXkqIG1lc3NhZ2VQb3J0cyA9
IHRvSW1wbChpbnRlbnRSZWYpLT5jb3JlSW50ZW50KCktPm1lc3NhZ2VQb3J0cygpOworCisgICAg
cmV0dXJuIG1lc3NhZ2VQb3J0cyA/IG1lc3NhZ2VQb3J0cy0+c2l6ZSgpIDogMDsKKyNlbHNlCisg
ICAgcmV0dXJuIDA7CisjZW5kaWYKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnQuaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnQuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDNmZTAyCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZUludGVudC5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50
ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
V0tCdW5kbGVJbnRlbnRfaAorI2RlZmluZSBXS0J1bmRsZUludGVudF9oCisKKyNpbmNsdWRlIDxX
ZWJLaXQyL1dLQmFzZS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2Vu
ZGlmCisKK1dLX0VYUE9SVCBXS1R5cGVJRCBXS0J1bmRsZUludGVudEdldFR5cGVJRCgpOworCitX
S19FWFBPUlQgV0tCdW5kbGVJbnRlbnRSZWYgV0tCdW5kbGVJbnRlbnRDcmVhdGUoV0tEaWN0aW9u
YXJ5UmVmIGRpY3Rpb25hcnlSZWYpOworCitXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tCdW5kbGVJ
bnRlbnRDb3B5QWN0aW9uKFdLQnVuZGxlSW50ZW50UmVmIGludGVudFJlZik7CitXS19FWFBPUlQg
V0tTdHJpbmdSZWYgV0tCdW5kbGVJbnRlbnRDb3B5VHlwZShXS0J1bmRsZUludGVudFJlZiBpbnRl
bnRSZWYpOworV0tfRVhQT1JUIFdLVVJMUmVmIFdLQnVuZGxlSW50ZW50Q29weVNlcnZpY2UoV0tC
dW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmKTsKK1dLX0VYUE9SVCBXS0FycmF5UmVmIFdLQnVuZGxl
SW50ZW50Q29weVN1Z2dlc3Rpb25zKFdLQnVuZGxlSW50ZW50UmVmIGludGVudFJlZik7CitXS19F
WFBPUlQgV0tTdHJpbmdSZWYgV0tCdW5kbGVJbnRlbnRDb3B5RXh0cmFWYWx1ZShXS0J1bmRsZUlu
dGVudFJlZiBpbnRlbnRSZWYsIFdLU3RyaW5nUmVmIGtleSk7CitXS19FWFBPUlQgV0tEaWN0aW9u
YXJ5UmVmIFdLQnVuZGxlSW50ZW50Q29weUV4dHJhcyhXS0J1bmRsZUludGVudFJlZiBpbnRlbnRS
ZWYpOworV0tfRVhQT1JUIHNpemVfdCBXS0J1bmRsZUludGVudE1lc3NhZ2VQb3J0Q291bnQoV0tC
dW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5k
aWYKKworI2VuZGlmIC8vIFdLQnVuZGxlSW50ZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnRSZXF1ZXN0
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVJbnRlbnRSZXF1ZXN0LmNwcAppbmRleCA4MWM5NWM2Li5hNDc3MmVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
SW50ZW50UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudFJlcXVlc3QuY3BwCkBAIC0yNywxMCArMjcsMTAg
QEAKICNpbmNsdWRlICJXS0J1bmRsZUludGVudFJlcXVlc3QuaCIKIAogI2lmIEVOQUJMRShXRUJf
SU5URU5UUykKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZUludGVudC5oIgogI2luY2x1ZGUgIklu
amVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2lu
Y2x1ZGUgIldLQnVuZGxlQVBJQ2FzdC5oIgotI2luY2x1ZGUgIldlYkludGVudERhdGEuaCIKIAog
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKICNlbmRpZgpAQCAtNDQsMTEgKzQ0LDExIEBAIFdLVHlw
ZUlEIFdLQnVuZGxlSW50ZW50UmVxdWVzdEdldFR5cGVJRCgpCiAjZW5kaWYKIH0KIAotV0tJbnRl
bnREYXRhUmVmIFdLQnVuZGxlSW50ZW50UmVxdWVzdENvcHlJbnRlbnREYXRhKFdLQnVuZGxlSW50
ZW50UmVxdWVzdFJlZiByZXF1ZXN0UmVmKQorV0tCdW5kbGVJbnRlbnRSZWYgV0tCdW5kbGVJbnRl
bnRSZXF1ZXN0Q29weUludGVudChXS0J1bmRsZUludGVudFJlcXVlc3RSZWYgcmVxdWVzdFJlZikK
IHsKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0gICAgUmVmUHRyPFdlYkludGVudERhdGE+IHdl
YkludGVudERhdGEgPSB0b0ltcGwocmVxdWVzdFJlZiktPmludGVudCgpOwotICAgIHJldHVybiB0
b0FQSSh3ZWJJbnRlbnREYXRhLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAgIFJlZlB0cjxJbmpl
Y3RlZEJ1bmRsZUludGVudD4gd2ViSW50ZW50ID0gdG9JbXBsKHJlcXVlc3RSZWYpLT5pbnRlbnQo
KTsKKyAgICByZXR1cm4gdG9BUEkod2ViSW50ZW50LnJlbGVhc2UoKS5sZWFrUmVmKCkpOwogI2Vs
c2UKICAgICByZXR1cm4gMDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudFJlcXVlc3QuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRl
bnRSZXF1ZXN0LmgKaW5kZXggYjE4MTM2ZC4uMTA1YWZhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudFJlcXVl
c3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlSW50ZW50UmVxdWVzdC5oCkBAIC0zNCw3ICszNCw3IEBAIGV4dGVybiAiQyIgewog
CiBXS19FWFBPUlQgV0tUeXBlSUQgV0tCdW5kbGVJbnRlbnRSZXF1ZXN0R2V0VHlwZUlEKCk7CiAK
LVdLX0VYUE9SVCBXS0ludGVudERhdGFSZWYgV0tCdW5kbGVJbnRlbnRSZXF1ZXN0Q29weUludGVu
dERhdGEoV0tCdW5kbGVJbnRlbnRSZXF1ZXN0UmVmIHJlcXVlc3QpOworV0tfRVhQT1JUIFdLQnVu
ZGxlSW50ZW50UmVmIFdLQnVuZGxlSW50ZW50UmVxdWVzdENvcHlJbnRlbnQoV0tCdW5kbGVJbnRl
bnRSZXF1ZXN0UmVmIHJlcXVlc3QpOwogCiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZUludGVudFJl
cXVlc3RQb3N0UmVzdWx0KFdLQnVuZGxlSW50ZW50UmVxdWVzdFJlZiByZXF1ZXN0LCBXS1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZVJlZiBzZXJpYWxpemVkRGF0YSk7CiBXS19FWFBPUlQgdm9pZCBXS0J1
bmRsZUludGVudFJlcXVlc3RQb3N0RmFpbHVyZShXS0J1bmRsZUludGVudFJlcXVlc3RSZWYgcmVx
dWVzdCwgV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYgc2VyaWFsaXplZERhdGEpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZVBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZVBhZ2UuY3BwCmluZGV4IDFmNDNhMTIuLmJmNDYzY2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQ
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUGFnZS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L1BhZ2UuaD4KIAogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSNpbmNsdWRlICJXZWJJbnRlbnRE
YXRhLmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVJbnRlbnQuaCIKICNlbmRpZgogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViS2l0OwpAQCAtMzE2LDEwICszMTYsMTAgQEAgZG91YmxlIFdLQnVuZGxl
UGFnZUdldEJhY2tpbmdTY2FsZUZhY3RvcihXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZikKICAgICBy
ZXR1cm4gdG9JbXBsKHBhZ2VSZWYpLT5kZXZpY2VTY2FsZUZhY3RvcigpOwogfQogCi12b2lkIFdL
QnVuZGxlUGFnZURlbGl2ZXJJbnRlbnRUb0ZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBX
S0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVmLCBXS0ludGVudERhdGFSZWYgaW50ZW50UmVmKQordm9p
ZCBXS0J1bmRsZVBhZ2VEZWxpdmVySW50ZW50VG9GcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZVJl
ZiwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZVJlZiwgV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVm
KQogewogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSAgICB0b0ltcGwocGFnZVJlZiktPmRlbGl2
ZXJJbnRlbnRUb0ZyYW1lKHRvSW1wbChmcmFtZVJlZiktPmZyYW1lSUQoKSwgdG9JbXBsKGludGVu
dFJlZiktPnN0b3JlKCkpOworICAgIHRvSW1wbChwYWdlUmVmKS0+ZGVsaXZlckNvcmVJbnRlbnRU
b0ZyYW1lKHRvSW1wbChmcmFtZVJlZiktPmZyYW1lSUQoKSwgdG9JbXBsKGludGVudFJlZiktPmNv
cmVJbnRlbnQoKSk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgKaW5kZXgg
MjhlZWU1Yy4uOGJjNzY3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCkBAIC00MTAsNyAr
NDEwLDcgQEAgV0tfRVhQT1JUIFdLSW1hZ2VSZWYgV0tCdW5kbGVQYWdlQ3JlYXRlU2NhbGVkU25h
cHNob3RJbkRvY3VtZW50Q29vcmRpbmF0ZXMoV0tCdW4KIAogV0tfRVhQT1JUIGRvdWJsZSBXS0J1
bmRsZVBhZ2VHZXRCYWNraW5nU2NhbGVGYWN0b3IoV0tCdW5kbGVQYWdlUmVmIHBhZ2UpOwogCi1X
S19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VEZWxpdmVySW50ZW50VG9GcmFtZShXS0J1bmRsZVBh
Z2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tJbnRlbnREYXRhUmVmIGludGVu
dCk7CitXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VEZWxpdmVySW50ZW50VG9GcmFtZShXS0J1
bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tCdW5kbGVJbnRlbnRS
ZWYgaW50ZW50KTsKIAogI2lmIGRlZmluZWQoRU5BQkxFX0lOU1BFQ1RPUikgJiYgRU5BQkxFX0lO
U1BFQ1RPUgogV0tfRVhQT1JUIFdLQnVuZGxlSW5zcGVjdG9yUmVmIFdLQnVuZGxlUGFnZUdldElu
c3BlY3RvcihXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRl
bnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3YWI1ODYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlSW50ZW50LmNwcApAQCAtMCwwICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVJbnRlbnQu
aCIKKworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKworI2luY2x1ZGUgIkltbXV0YWJsZUFycmF5
LmgiCisjaW5jbHVkZSAiSW1tdXRhYmxlRGljdGlvbmFyeS5oIgorI2luY2x1ZGUgIldlYlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIldlYlN0cmluZy5oIgorI2luY2x1ZGUgIldl
YlVSTC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK1Bhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVJbnRlbnQ+IEluamVjdGVkQnVuZGxlSW50ZW50
OjpjcmVhdGUoV2ViQ29yZTo6SW50ZW50KiBpbnRlbnQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBJbmplY3RlZEJ1bmRsZUludGVudChpbnRlbnQpKTsKK30KKworSW5qZWN0ZWRCdW5kbGVJ
bnRlbnQ6OkluamVjdGVkQnVuZGxlSW50ZW50KFdlYkNvcmU6OkludGVudCogaW50ZW50KQorICAg
IDogbV9pbnRlbnQoaW50ZW50KQoreworfQorCitTdHJpbmcgSW5qZWN0ZWRCdW5kbGVJbnRlbnQ6
OmFjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW50ZW50LT5hY3Rpb24oKTsKK30KKwor
U3RyaW5nIEluamVjdGVkQnVuZGxlSW50ZW50OjpwYXlsb2FkVHlwZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1faW50ZW50LT50eXBlKCk7Cit9CisKK1dlYkNvcmU6OktVUkwgSW5qZWN0ZWRCdW5k
bGVJbnRlbnQ6OnNlcnZpY2UoKSBjb25zdAoreworICAgIHJldHVybiBtX2ludGVudC0+c2Vydmlj
ZSgpOworfQorCitQYXNzUmVmUHRyPFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gSW5qZWN0ZWRC
dW5kbGVJbnRlbnQ6OmRhdGEoKSBjb25zdAoreworICAgIHJldHVybiBXZWJTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OmNyZWF0ZShtX2ludGVudC0+ZGF0YSgpKTsKK30KKworU3RyaW5nIEluamVjdGVk
QnVuZGxlSW50ZW50OjpleHRyYShjb25zdCBTdHJpbmcmIGtleSkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9pbnRlbnQtPmV4dHJhcygpLmdldChrZXkpOworfQorCitQYXNzUmVmUHRyPEltbXV0YWJs
ZURpY3Rpb25hcnk+IEluamVjdGVkQnVuZGxlSW50ZW50OjpleHRyYXMoKSBjb25zdAoreworICAg
IGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBleHRyYXMgPSBtX2ludGVudC0+ZXh0cmFz
KCk7CisgICAgSW1tdXRhYmxlRGljdGlvbmFyeTo6TWFwVHlwZSB3a0V4dHJhczsKKyAgICBIYXNo
TWFwPFN0cmluZywgU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gZXh0cmFzLmVuZCgpOwor
ICAgIGZvciAoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gZXh0
cmFzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgd2tFeHRyYXMuc2V0KGl0LT5m
aXJzdCwgV2ViU3RyaW5nOjpjcmVhdGUoaXQtPnNlY29uZCkpOworICAgIHJldHVybiBJbW11dGFi
bGVEaWN0aW9uYXJ5OjphZG9wdCh3a0V4dHJhcyk7Cit9CisKK1Bhc3NSZWZQdHI8SW1tdXRhYmxl
QXJyYXk+IEluamVjdGVkQnVuZGxlSW50ZW50OjpzdWdnZXN0aW9ucygpIGNvbnN0Cit7CisgICAg
Y29uc3QgVmVjdG9yPEtVUkw+JiBzdWdnZXN0aW9ucyA9IG1faW50ZW50LT5zdWdnZXN0aW9ucygp
OworICAgIGNvbnN0IHNpemVfdCBudW1TdWdnZXN0aW9ucyA9IHN1Z2dlc3Rpb25zLnNpemUoKTsK
KyAgICBWZWN0b3I8UmVmUHRyPEFQSU9iamVjdD4gPiB3a1N1Z2dlc3Rpb25zKG51bVN1Z2dlc3Rp
b25zKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtU3VnZ2VzdGlvbnM7ICsraSkK
KyAgICAgICAgd2tTdWdnZXN0aW9uc1tpXSA9IFdlYlVSTDo6Y3JlYXRlKHN1Z2dlc3Rpb25zW2ld
KTsKKyAgICByZXR1cm4gSW1tdXRhYmxlQXJyYXk6OmFkb3B0KHdrU3VnZ2VzdGlvbnMpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfSU5URU5UUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVJbnRlbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi41ZDNmMDZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudC5oCkBAIC0wLDAgKzEsNzIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW5qZWN0ZWRCdW5kbGVJbnRlbnRfaAor
I2RlZmluZSBJbmplY3RlZEJ1bmRsZUludGVudF9oCisKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMp
CisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ludGVudC5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvS1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBJbW11dGFibGVBcnJheTsKK2NsYXNzIEltbXV0YWJsZURp
Y3Rpb25hcnk7CitjbGFzcyBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU7CisKK2NsYXNzIEluamVj
dGVkQnVuZGxlSW50ZW50IDogcHVibGljIEFQSU9iamVjdCB7CitwdWJsaWM6CisgICAgc3RhdGlj
IGNvbnN0IFR5cGUgQVBJVHlwZSA9IFR5cGVCdW5kbGVJbnRlbnQ7CisKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxJbmplY3RlZEJ1bmRsZUludGVudD4gY3JlYXRlKFdlYkNvcmU6OkludGVudCopOwor
CisgICAgU3RyaW5nIGFjdGlvbigpIGNvbnN0OworICAgIFN0cmluZyBwYXlsb2FkVHlwZSgpIGNv
bnN0OworICAgIFdlYkNvcmU6OktVUkwgc2VydmljZSgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8
V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhKCkgY29uc3Q7CisgICAgU3RyaW5nIGV4dHJh
KGNvbnN0IFN0cmluZyYga2V5KSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEltbXV0YWJsZURpY3Rp
b25hcnk+IGV4dHJhcygpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8SW1tdXRhYmxlQXJyYXk+IHN1
Z2dlc3Rpb25zKCkgY29uc3Q7CisKKyAgICBXZWJDb3JlOjpJbnRlbnQqIGNvcmVJbnRlbnQoKSBj
b25zdCB7IHJldHVybiBtX2ludGVudC5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0
IEluamVjdGVkQnVuZGxlSW50ZW50KFdlYkNvcmU6OkludGVudCopOworCisgICAgdmlydHVhbCBU
eXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBBUElUeXBlOyB9CisKKyAgICBSZWZQdHI8V2ViQ29y
ZTo6SW50ZW50PiBtX2ludGVudDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gRU5BQkxFKFdFQl9JTlRFTlRTKQorCisjZW5kaWYgLy8gSW5qZWN0ZWRCdW5kbGVJbnRl
bnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuY3BwCmluZGV4
IDVjY2IxOWMuLmVhYzBiODNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVu
dFJlcXVlc3QuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVJ
bnRlbnRSZXF1ZXN0LmgiCiAKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisjaW5jbHVkZSAiSW5q
ZWN0ZWRCdW5kbGVJbnRlbnQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ludGVudFJlcXVlc3QuaD4K
ICNpbmNsdWRlIDxXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaD4KIApAQCAtNTQsOSArNTUsOSBA
QCB2b2lkIEluamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdDo6cG9zdEZhaWx1cmUoV2ViU2VyaWFs
aXplZFNjcmlwdFZhbHVlKiBkYXRhKQogICAgIG1faW50ZW50UmVxdWVzdC0+cG9zdEZhaWx1cmUo
c3RhdGljX2Nhc3Q8U2VyaWFsaXplZFNjcmlwdFZhbHVlKj4oZGF0YS0+aW50ZXJuYWxSZXByZXNl
bnRhdGlvbigpKSk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViSW50ZW50RGF0YT4gSW5qZWN0ZWRCdW5k
bGVJbnRlbnRSZXF1ZXN0OjppbnRlbnQoKSBjb25zdAorUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRs
ZUludGVudD4gSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0OjppbnRlbnQoKSBjb25zdAogewot
ICAgIHJldHVybiBXZWJJbnRlbnREYXRhOjpjcmVhdGUoSW50ZW50RGF0YShtX2ludGVudFJlcXVl
c3QtPmludGVudCgpKSk7CisgICAgcmV0dXJuIEluamVjdGVkQnVuZGxlSW50ZW50OjpjcmVhdGUo
bV9pbnRlbnRSZXF1ZXN0LT5pbnRlbnQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZUludGVudFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0LmgKaW5kZXggYjU4NzBkOS4u
MzNhMzE5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5oCkBA
IC0yOSw3ICsyOSw2IEBACiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQogCiAjaW5jbHVkZSAiQVBJ
T2JqZWN0LmgiCi0jaW5jbHVkZSAiV2ViSW50ZW50RGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CkBAIC00MCw2ICszOSw3IEBAIGNsYXNzIEludGVudFJlcXVlc3Q7CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCitjbGFzcyBJbmplY3RlZEJ1bmRsZUludGVudDsKIGNsYXNzIFdlYlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTsKIAogY2xhc3MgSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0IDogcHVi
bGljIEFQSU9iamVjdCB7CkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHBvc3RS
ZXN1bHQoV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlKik7CiAgICAgdm9pZCBwb3N0RmFpbHVyZShX
ZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUqKTsKIAotICAgIFBhc3NSZWZQdHI8V2ViSW50ZW50RGF0
YT4gaW50ZW50KCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxJbmplY3RlZEJ1bmRsZUludGVudD4g
aW50ZW50KCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgSW5qZWN0ZWRCdW5kbGVJ
bnRlbnRSZXF1ZXN0KFdlYkNvcmU6OkludGVudFJlcXVlc3QqKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IGYzNmZjMDIuLmQ2ZGRjYmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApA
QCAtNjMsNiArNjMsOCBAQAogI2luY2x1ZGUgIkludGVudERhdGEuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL0RPTVdpbmRvd0ludGVudHMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RlbGl2ZXJlZEludGVu
dC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSW50ZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0
Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oPgogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpIHx8
IFBMQVRGT1JNKFdJTikKQEAgLTI0NiwxMyArMjQ4LDM5IEBAIHZvaWQgV2ViRnJhbWU6OmNvbnZl
cnRIYW5kbGVUb0Rvd25sb2FkKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJlc291cmNl
UmVxCiB2b2lkIFdlYkZyYW1lOjpkZWxpdmVySW50ZW50KGNvbnN0IEludGVudERhdGEmIGludGVu
dERhdGEpCiB7CiAgICAgT3duUHRyPERlbGl2ZXJlZEludGVudENsaWVudD4gZHVtbXlDbGllbnQ7
Ci0gICAgT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IGR1bW15UG9ydHM7CiAgICAgVmVjdG9yPHVp
bnQ4X3Q+IGRhdGFDb3B5ID0gaW50ZW50RGF0YS5kYXRhOworCisgICAgT3duUHRyPFdlYkNvcmU6
Ok1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVsczsKKyAgICBpZiAoIWludGVudERhdGEu
bWVzc2FnZVBvcnRzLmlzRW1wdHkoKSkgeworICAgICAgICBjaGFubmVscyA9IGFkb3B0UHRyKG5l
dyBXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxBcnJheShpbnRlbnREYXRhLm1lc3NhZ2VQb3J0
cy5zaXplKCkpKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbnRlbnREYXRhLm1l
c3NhZ2VQb3J0cy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgICgqY2hhbm5lbHMpW2ldID0gTWVz
c2FnZVBvcnRDaGFubmVsOjpjcmVhdGUoV2ViUHJvY2Vzczo6c2hhcmVkKCkubWVzc2FnZVBvcnRD
aGFubmVsKGludGVudERhdGEubWVzc2FnZVBvcnRzLmF0KGkpKSk7CisgICAgfQorICAgIE93blB0
cjxXZWJDb3JlOjpNZXNzYWdlUG9ydEFycmF5PiBtZXNzYWdlUG9ydHMgPSBXZWJDb3JlOjpNZXNz
YWdlUG9ydDo6ZW50YW5nbGVQb3J0cygqbV9jb3JlRnJhbWUtPmRvbVdpbmRvdygpLT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCksIGNoYW5uZWxzLnJlbGVhc2UoKSk7CisKICAgICBSZWZQdHI8RGVs
aXZlcmVkSW50ZW50PiBkZWxpdmVyZWRJbnRlbnQgPSBEZWxpdmVyZWRJbnRlbnQ6OmNyZWF0ZSht
X2NvcmVGcmFtZSwgZHVtbXlDbGllbnQucmVsZWFzZSgpLCBpbnRlbnREYXRhLmFjdGlvbiwgaW50
ZW50RGF0YS50eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQo
ZGF0YUNvcHkpLCBkdW1teVBvcnRzLnJlbGVhc2UoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmFkb3B0KGRhdGFDb3B5KSwgbWVzc2FnZVBvcnRzLnJlbGVhc2UoKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnRlbnREYXRhLmV4dHJhcyk7CiAgICAgV2ViQ29yZTo6RE9NV2luZG93SW50
ZW50czo6ZnJvbShtX2NvcmVGcmFtZS0+ZG9tV2luZG93KCkpLT5kZWxpdmVyKGRlbGl2ZXJlZElu
dGVudC5yZWxlYXNlKCkpOwogfQorCit2b2lkIFdlYkZyYW1lOjpkZWxpdmVySW50ZW50KEludGVu
dCogaW50ZW50KQoreworICAgIE93blB0cjxEZWxpdmVyZWRJbnRlbnRDbGllbnQ+IGR1bW15Q2xp
ZW50OworCisgICAgT3duUHRyPFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFu
bmVsczsKKyAgICBXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxBcnJheSogb3JpZ0NoYW5uZWxz
ID0gaW50ZW50LT5tZXNzYWdlUG9ydHMoKTsKKyAgICBpZiAob3JpZ0NoYW5uZWxzICYmIG9yaWdD
aGFubmVscy0+c2l6ZSgpKSB7CisgICAgICAgIGNoYW5uZWxzID0gYWRvcHRQdHIobmV3IFdlYkNv
cmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5KG9yaWdDaGFubmVscy0+c2l6ZSgpKSk7CisgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb3JpZ0NoYW5uZWxzLT5zaXplKCk7ICsraSkKKyAg
ICAgICAgICAgICgqY2hhbm5lbHMpW2ldID0gb3JpZ0NoYW5uZWxzLT5hdChpKS5yZWxlYXNlKCk7
CisgICAgfQorICAgIE93blB0cjxXZWJDb3JlOjpNZXNzYWdlUG9ydEFycmF5PiBtZXNzYWdlUG9y
dHMgPSBXZWJDb3JlOjpNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cygqbV9jb3JlRnJhbWUtPmRv
bVdpbmRvdygpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGNoYW5uZWxzLnJlbGVhc2UoKSk7
CisKKyAgICBSZWZQdHI8RGVsaXZlcmVkSW50ZW50PiBkZWxpdmVyZWRJbnRlbnQgPSBEZWxpdmVy
ZWRJbnRlbnQ6OmNyZWF0ZShtX2NvcmVGcmFtZSwgZHVtbXlDbGllbnQucmVsZWFzZSgpLCBpbnRl
bnQtPmFjdGlvbigpLCBpbnRlbnQtPnR5cGUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlbnQtPmRhdGEo
KSwgbWVzc2FnZVBvcnRzLnJlbGVhc2UoKSwgaW50ZW50LT5leHRyYXMoKSk7CisgICAgV2ViQ29y
ZTo6RE9NV2luZG93SW50ZW50czo6ZnJvbShtX2NvcmVGcmFtZS0+ZG9tV2luZG93KCkpLT5kZWxp
dmVyKGRlbGl2ZXJlZEludGVudC5yZWxlYXNlKCkpOworfQogI2VuZGlmCiAKIFN0cmluZyBXZWJG
cmFtZTo6c291cmNlKCkgY29uc3QgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJGcmFtZS5oCmluZGV4IGJkNmMwMzguLmVlYTA5YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCkBAIC00Miw2ICs0Miw5IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgRnJhbWU7CiAgICAgY2xhc3MgSFRNTEZyYW1lT3duZXJF
bGVtZW50OworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICBjbGFzcyBJbnRlbnQ7CisjZW5k
aWYKICAgICBjbGFzcyBLVVJMOwogfQogCkBAIC04MSw2ICs4NCw3IEBAIHB1YmxpYzoKIAogI2lm
IEVOQUJMRShXRUJfSU5URU5UUykKICAgICB2b2lkIGRlbGl2ZXJJbnRlbnQoY29uc3QgSW50ZW50
RGF0YSYpOworICAgIHZvaWQgZGVsaXZlckludGVudChXZWJDb3JlOjpJbnRlbnQqKTsKICNlbmRp
ZgogCiAgICAgU3RyaW5nIHNvdXJjZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDc5ODliMjkuLmViMTkxZTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE0MCw2ICsx
NDAsNyBAQAogCiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQogI2luY2x1ZGUgIkludGVudERhdGEu
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ludGVudC5oPgogI2VuZGlmCiAKICNpZiBFTkFCTEUoVklC
UkFUSU9OKQpAQCAtMTk1OSw2ICsxOTYwLDEyIEBAIHZvaWQgV2ViUGFnZTo6ZGVsaXZlckludGVu
dFRvRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgSW50ZW50RGF0YSYgaW50ZW50RGF0CiAK
ICAgICBmcmFtZS0+ZGVsaXZlckludGVudChpbnRlbnREYXRhKTsKIH0KKwordm9pZCBXZWJQYWdl
OjpkZWxpdmVyQ29yZUludGVudFRvRnJhbWUodWludDY0X3QgZnJhbWVJRCwgSW50ZW50KiBjb3Jl
SW50ZW50KQoreworICAgIGlmIChXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaGFyZWQo
KS53ZWJGcmFtZShmcmFtZUlEKSkKKyAgICAgICAgZnJhbWUtPmRlbGl2ZXJJbnRlbnQoY29yZUlu
dGVudCk7Cit9CiAjZW5kaWYKIAogdm9pZCBXZWJQYWdlOjpwcmVmZXJlbmNlc0RpZENoYW5nZShj
b25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGJiZmFiZDAuLmVjNWFmMGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTA2LDYgKzEwNiw5IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBGcmFtZTsKICAgICBjbGFzcyBGcmFtZVZp
ZXc7CiAgICAgY2xhc3MgSFRNTFBsdWdJbkVsZW1lbnQ7CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRT
KQorICAgIGNsYXNzIEludGVudDsKKyNlbmRpZgogICAgIGNsYXNzIEtleWJvYXJkRXZlbnQ7CiAg
ICAgY2xhc3MgUGFnZTsKICAgICBjbGFzcyBQcmludENvbnRleHQ7CkBAIC00NzYsNyArNDc5LDcg
QEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0gICAgdm9pZCBk
ZWxpdmVySW50ZW50VG9GcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBJbnRlbnREYXRhJik7
CisgICAgdm9pZCBkZWxpdmVyQ29yZUludGVudFRvRnJhbWUodWludDY0X3QgZnJhbWVJRCwgV2Vi
Q29yZTo6SW50ZW50Kik7CiAjZW5kaWYKIAogICAgIHZvaWQgcmVwbGFjZVNlbGVjdGlvbldpdGhU
ZXh0KFdlYkNvcmU6OkZyYW1lKiwgY29uc3QgU3RyaW5nJik7CkBAIC02NDEsNiArNjQ0LDEwIEBA
IHByaXZhdGU6CiAgICAgdm9pZCBjb250ZXh0TWVudUhpZGRlbigpIHsgbV9pc1Nob3dpbmdDb250
ZXh0TWVudSA9IGZhbHNlOyB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAg
ICB2b2lkIGRlbGl2ZXJJbnRlbnRUb0ZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IEludGVu
dERhdGEmKTsKKyNlbmRpZgorCiAgICAgc3RhdGljIHZvaWQgc2Nyb2xsKFdlYkNvcmU6OlBhZ2Uq
LCBXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb24sIFdlYkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5KTsK
ICAgICBzdGF0aWMgdm9pZCBsb2dpY2FsU2Nyb2xsKFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpT
Y3JvbGxMb2dpY2FsRGlyZWN0aW9uLCBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDNlNzU2ZWMuLjQ4MGNk
NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtODAsNiAr
ODAsMTAgQEAKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SYW5k
b21OdW1iZXIuaD4KIAorI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyNpbmNsdWRlIDxXZWJDb3Jl
L1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmg+CisjZW5kaWYKKwogI2lmIEVOQUJMRShORVRX
T1JLX0lORk8pCiAjaW5jbHVkZSAiV2ViTmV0d29ya0luZm9NYW5hZ2VyTWVzc2FnZXMuaCIKICNl
bmRpZgpAQCAtNzkxLDYgKzc5NSwyNiBAQCBXZWJQYWdlR3JvdXBQcm94eSogV2ViUHJvY2Vzczo6
d2ViUGFnZUdyb3VwKGNvbnN0IFdlYlBhZ2VHcm91cERhdGEmIHBhZ2VHcm91cERhdAogICAgIHJl
dHVybiByZXN1bHQuaXRlcmF0b3ItPnNlY29uZC5nZXQoKTsKIH0KIAorI2lmIEVOQUJMRShXRUJf
SU5URU5UUykKK3VpbnQ2NF90IFdlYlByb2Nlc3M6OmFkZE1lc3NhZ2VQb3J0Q2hhbm5lbChQYXNz
UmVmUHRyPFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsPiBtZXNzYWdlUG9ydENoYW5uZWwpCit7
CisgICAgc3RhdGljIHVpbnQ2NF90IGNoYW5uZWxJRCA9IDA7CisgICAgbV9tZXNzYWdlUG9ydENo
YW5uZWxzLmFkZCgrK2NoYW5uZWxJRCwgbWVzc2FnZVBvcnRDaGFubmVsKTsKKworICAgIHJldHVy
biBjaGFubmVsSUQ7Cit9CisKK1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsKiBXZWJQcm9jZXNz
OjptZXNzYWdlUG9ydENoYW5uZWwodWludDY0X3QgY2hhbm5lbElEKQoreworICAgIHJldHVybiBt
X21lc3NhZ2VQb3J0Q2hhbm5lbHMuZ2V0KGNoYW5uZWxJRCkuZ2V0KCk7Cit9CisKK3ZvaWQgV2Vi
UHJvY2Vzczo6cmVtb3ZlTWVzc2FnZVBvcnRDaGFubmVsKHVpbnQ2NF90IGNoYW5uZWxJRCkKK3sK
KyAgICBtX21lc3NhZ2VQb3J0Q2hhbm5lbHMucmVtb3ZlKGNoYW5uZWxJRCk7Cit9CisjZW5kaWYK
Kwogc3RhdGljIGJvb2wgY2FuUGx1Z2luSGFuZGxlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UpCiB7CiAgICAgU3RyaW5nIHBsdWdpblBhdGg7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IDBkMDA1YTQuLmQzZGYxYjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC03OCw2ICs3OCw5IEBAIFFUX0VORF9OQU1F
U1BBQ0UKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBJbnRTaXplOwogICAgIGNsYXNz
IFBhZ2VHcm91cDsKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgY2xhc3MgUGxhdGZvcm1N
ZXNzYWdlUG9ydENoYW5uZWw7CisjZW5kaWYKICAgICBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiAg
ICAgY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIH0KQEAgLTExMiw3ICsxMTUsMTMgQEAgcHVibGlj
OgogICAgIHZvaWQgY3JlYXRlV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMmKTsKICAgICB2b2lkIHJlbW92ZVdlYlBhZ2UodWludDY0X3QgcGFn
ZUlEKTsKICAgICBXZWJQYWdlKiBmb2N1c2VkV2ViUGFnZSgpIGNvbnN0OwotICAgIAorCisjaWYg
RU5BQkxFKFdFQl9JTlRFTlRTKSAKKyAgICB1aW50NjRfdCBhZGRNZXNzYWdlUG9ydENoYW5uZWwo
UGFzc1JlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbD4pOworICAgIFdl
YkNvcmU6OlBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsKiBtZXNzYWdlUG9ydENoYW5uZWwodWlu
dDY0X3QpOworICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVBvcnRDaGFubmVsKHVpbnQ2NF90KTsKKyNl
bmRpZgorCiAgICAgSW5qZWN0ZWRCdW5kbGUqIGluamVjdGVkQnVuZGxlKCkgY29uc3QgeyByZXR1
cm4gbV9pbmplY3RlZEJ1bmRsZS5nZXQoKTsgfQogCiAgICAgYm9vbCBpc1NlcGFyYXRlUHJvY2Vz
cygpIGNvbnN0OwpAQCAtMzAwLDYgKzMwOSwxMCBAQCBwcml2YXRlOgogCiAgICAgSGFzaE1hcDx1
aW50NjRfdCwgV2ViRnJhbWUqPiBtX2ZyYW1lTWFwOwogCisjaWYgRU5BQkxFKFdFQl9JTlRFTlRT
KQorICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybU1lc3NhZ2VQ
b3J0Q2hhbm5lbD4gPiBtX21lc3NhZ2VQb3J0Q2hhbm5lbHM7CisjZW5kaWYKKwogICAgIEhhc2hT
ZXQ8U3RyaW5nLCBDYXNlRm9sZGluZ0hhc2g+IG1fbWltZVR5cGVzV2l0aEN1c3RvbVJlcHJlc2Vu
dGF0aW9uczsKIAogICAgIFRleHRDaGVja2VyU3RhdGUgbV90ZXh0Q2hlY2tlclN0YXRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4
IDBmODNkNWIuLjIyNzE2Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTI3LDYgKzI3LDEwIEBAIG1lc3NhZ2VzIC0+IFdlYlBy
b2Nlc3MgewogICAgICMgQ3JlYXRlIGEgbmV3IHBhZ2UuCiAgICAgQ3JlYXRlV2ViUGFnZSh1aW50
NjRfdCBuZXdQYWdlSUQsIFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBwYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzKQogCisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorICAgIFJlbW92ZU1l
c3NhZ2VQb3J0Q2hhbm5lbCh1aW50NjRfdCBjaGFubmVsSUQpOworI2VuZGlmCisKICAgICAjIFZp
c2l0ZWQgbGluayB0cmFja2luZy4KICAgICBTZXRWaXNpdGVkTGlua1RhYmxlKFdlYktpdDo6U2hh
cmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlKQogICAgIFZpc2l0ZWRMaW5rU3RhdGVDaGFuZ2VkKFZl
Y3RvcjxXZWJDb3JlOjpMaW5rSGFzaD4gbGlua0hhc2hlcykKZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA0OGM2NjdiLi4wMWQyOWEyIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIg
QEAKKzIwMTItMDgtMDQgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBbV0syXSBBZGQgc3VwcG9ydCBmb3IgV2ViIEludGVudHMgTWVzc2Fn
ZVBvcnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
OTA3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVz
ZSBXS0J1bmRsZUludGVudCBpbnN0ZWFkIG9mIFdlYkludGVudERhdGEgaW4KKyAgICAgICAgV2Vi
S2l0VGVzdFJ1bm5lci4gV1RSIG5vdyBwcmludHMgdGhlIG51bWJlciBvZgorICAgICAgICBNZXNz
YWdlUG9ydHMgaW4gcmVjZWl2ZWQgV2ViIGludGVudHMgYXMKKyAgICAgICAgZXhwZWN0ZWQgYnkg
dGhlIGZvbGxvd2luZyBsYXlvdXQgdGVzdHM6CisgICAgICAgIHdlYmludGVudHMvd2ViLWludGVu
dHMtaW52b2tlLXBvcnQuaHRtbAorICAgICAgICB3ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLW9iai1j
b25zdHJ1Y3Rvci5odG1sCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxl
UGFnZTo6ZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdU
Ujo6TGF5b3V0VGVzdENvbnRyb2xsZXI6OmRlbGl2ZXJXZWJJbnRlbnQpOgorCiAyMDEyLTA4LTE0
ICBBbGV4aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAg
IFVwZGF0ZSBJTmRUIGJ1aWxkIGJvdCB0byBNb3VudGFpbiBMaW9uLgpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3Bw
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBh
Z2UuY3BwCmluZGV4IDJhM2VjMjAuLjExNjM0MTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAK
QEAgLTUwLDggKzUwLDggQEAKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorI2lu
Y2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVJbnRlbnQuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLQnVu
ZGxlSW50ZW50UmVxdWVzdC5oPgotI2luY2x1ZGUgPFdlYktpdDIvV0tJbnRlbnREYXRhLmg+CiAj
ZW5kaWYKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFNfVEFHKQogI2luY2x1ZGUgPFdlYktpdDIvV0tJ
bnRlbnRTZXJ2aWNlSW5mby5oPgpAQCAtNDMwLDE5ICs0MzAsMjQgQEAgdm9pZCBJbmplY3RlZEJ1
bmRsZVBhZ2U6OmRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwg
V0tCdW5kbGUKIHsKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCiAgICAgc3RhdGljX2Nhc3Q8SW5q
ZWN0ZWRCdW5kbGVQYWdlKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5tX2N1cnJl
bnRJbnRlbnRSZXF1ZXN0ID0gaW50ZW50UmVxdWVzdDsKLSAgICBXS1JldGFpblB0cjxXS0ludGVu
dERhdGFSZWY+IGludGVudChBZG9wdFdLLCBXS0J1bmRsZUludGVudFJlcXVlc3RDb3B5SW50ZW50
RGF0YShpbnRlbnRSZXF1ZXN0KSk7CisgICAgV0tSZXRhaW5QdHI8V0tCdW5kbGVJbnRlbnRSZWY+
IGludGVudChBZG9wdFdLLCBXS0J1bmRsZUludGVudFJlcXVlc3RDb3B5SW50ZW50KGludGVudFJl
cXVlc3QpKTsKIAogICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCkt
PmFwcGVuZCgiUmVjZWl2ZWQgV2ViIEludGVudDogYWN0aW9uPSIpOwotICAgIFdLUmV0YWluUHRy
PFdLU3RyaW5nUmVmPiB3a0FjdGlvbihBZG9wdFdLLCBXS0ludGVudERhdGFDb3B5QWN0aW9uKGlu
dGVudC5nZXQoKSkpOworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB3a0FjdGlvbihBZG9w
dFdLLCBXS0J1bmRsZUludGVudENvcHlBY3Rpb24oaW50ZW50LmdldCgpKSk7CiAgICAgSW5qZWN0
ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKHRvV1RGU3RyaW5nKHdr
QWN0aW9uLmdldCgpKSk7CiAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxk
ZXIoKS0+YXBwZW5kKCIgdHlwZT0iKTsKLSAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tU
eXBlKEFkb3B0V0ssIFdLSW50ZW50RGF0YUNvcHlUeXBlKGludGVudC5nZXQoKSkpOworICAgIFdL
UmV0YWluUHRyPFdLU3RyaW5nUmVmPiB3a1R5cGUoQWRvcHRXSywgV0tCdW5kbGVJbnRlbnRDb3B5
VHlwZShpbnRlbnQuZ2V0KCkpKTsKICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5n
QnVpbGRlcigpLT5hcHBlbmQodG9XVEZTdHJpbmcod2tUeXBlLmdldCgpKSk7CiAgICAgSW5qZWN0
ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKCJcbiIpOwogCi0gICAg
Ly8gRklYTUU6IFByaW50IG51bWJlciBvZiBwb3J0cyB3aGVuIGV4cG9zZWQgaW4gV2ViS2l0Mgor
ICAgIGNvbnN0IHNpemVfdCBudW1NZXNzYWdlUG9ydHMgPSBXS0J1bmRsZUludGVudE1lc3NhZ2VQ
b3J0Q291bnQoaW50ZW50LmdldCgpKTsKKyAgICBpZiAobnVtTWVzc2FnZVBvcnRzKSB7CisgICAg
ICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiSGF2
ZSAiKTsKKyAgICAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+
YXBwZW5kKFdURjo6U3RyaW5nOjpudW1iZXIobnVtTWVzc2FnZVBvcnRzKSk7CisgICAgICAgIElu
amVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiIHBvcnRzXG4i
KTsKKyAgICB9CiAKLSAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gd2tTZXJ2aWNlVXJsKEFkb3B0
V0ssIFdLSW50ZW50RGF0YUNvcHlTZXJ2aWNlKGludGVudC5nZXQoKSkpOworICAgIFdLUmV0YWlu
UHRyPFdLVVJMUmVmPiB3a1NlcnZpY2VVcmwoQWRvcHRXSywgV0tCdW5kbGVJbnRlbnRDb3B5U2Vy
dmljZShpbnRlbnQuZ2V0KCkpKTsKICAgICBpZiAod2tTZXJ2aWNlVXJsKSB7CiAgICAgICAgIFdL
UmV0YWluUHRyPFdLU3RyaW5nUmVmPiB3a1NlcnZpY2UoQWRvcHRXSywgV0tVUkxDb3B5U3RyaW5n
KHdrU2VydmljZVVybC5nZXQoKSkpOwogICAgICAgICBpZiAod2tTZXJ2aWNlICYmICFXS1N0cmlu
Z0lzRW1wdHkod2tTZXJ2aWNlLmdldCgpKSkgewpAQCAtNDUyLDcgKzQ1Nyw3IEBAIHZvaWQgSW5q
ZWN0ZWRCdW5kbGVQYWdlOjpkaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVm
IHBhZ2UsIFdLQnVuZGxlCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBXS1JldGFpblB0cjxXS0Rp
Y3Rpb25hcnlSZWY+IHdrRXh0cmFzKEFkb3B0V0ssIFdLSW50ZW50RGF0YUNvcHlFeHRyYXMoaW50
ZW50LmdldCgpKSk7CisgICAgV0tSZXRhaW5QdHI8V0tEaWN0aW9uYXJ5UmVmPiB3a0V4dHJhcyhB
ZG9wdFdLLCBXS0J1bmRsZUludGVudENvcHlFeHRyYXMoaW50ZW50LmdldCgpKSk7CiAgICAgV0tS
ZXRhaW5QdHI8V0tBcnJheVJlZj4gd2tFeHRyYUtleXMoQWRvcHRXSywgV0tEaWN0aW9uYXJ5Q29w
eUtleXMod2tFeHRyYXMuZ2V0KCkpKTsKICAgICBjb25zdCBzaXplX3QgbnVtRXh0cmFLZXlzID0g
V0tBcnJheUdldFNpemUod2tFeHRyYUtleXMuZ2V0KCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbnVtRXh0cmFLZXlzOyArK2kpIHsKQEAgLTQ2NSw3ICs0NzAsNyBAQCB2b2lkIEluamVj
dGVkQnVuZGxlUGFnZTo6ZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiBw
YWdlLCBXS0J1bmRsZQogICAgICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVp
bGRlcigpLT5hcHBlbmQoIlxuIik7CiAgICAgfQogCi0gICAgV0tSZXRhaW5QdHI8V0tBcnJheVJl
Zj4gd2tTdWdnZXN0aW9ucyhBZG9wdFdLLCBXS0ludGVudERhdGFDb3B5U3VnZ2VzdGlvbnMoaW50
ZW50LmdldCgpKSk7CisgICAgV0tSZXRhaW5QdHI8V0tBcnJheVJlZj4gd2tTdWdnZXN0aW9ucyhB
ZG9wdFdLLCBXS0J1bmRsZUludGVudENvcHlTdWdnZXN0aW9ucyhpbnRlbnQuZ2V0KCkpKTsKICAg
ICBjb25zdCBzaXplX3QgbnVtU3VnZ2VzdGlvbnMgPSBXS0FycmF5R2V0U2l6ZSh3a1N1Z2dlc3Rp
b25zLmdldCgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bVN1Z2dlc3Rpb25zOyAr
K2kpIHsKICAgICAgICAgV0tTdHJpbmdSZWYgd2tTdWdnZXN0aW9uID0gc3RhdGljX2Nhc3Q8V0tT
dHJpbmdSZWY+KFdLQXJyYXlHZXRJdGVtQXRJbmRleCh3a1N1Z2dlc3Rpb25zLmdldCgpLCBpKSk7
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91
dFRlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGNkZmZjYWUuLmYzY2RjYjIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENv
bnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
TGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC00OSw4ICs0OSw4IEBACiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorI2luY2x1
ZGUgPFdlYktpdDIvV0tCdW5kbGVJbnRlbnQuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxl
SW50ZW50UmVxdWVzdC5oPgotI2luY2x1ZGUgPFdlYktpdDIvV0tJbnRlbnREYXRhLmg+CiAjZW5k
aWYKIAogbmFtZXNwYWNlIFdUUiB7CkBAIC02NTEsOCArNjUxLDggQEAgdm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6ZGVsaXZlcldlYkludGVudChKU1N0cmluZ1JlZiBhY3Rpb24sIEpTU3RyaW5n
UmVmIHR5cGUKICAgICBXS0RpY3Rpb25hcnlBZGRJdGVtKGludGVudEluaXREaWN0LmdldCgpLCBX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygidHlwZSIpLCB0eXBlV0suZ2V0KCkpOwogICAg
IFdLRGljdGlvbmFyeUFkZEl0ZW0oaW50ZW50SW5pdERpY3QuZ2V0KCksIFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJkYXRhIiksIGRhdGFXSy5nZXQoKSk7CiAKLSAgICBXS1JldGFpblB0
cjxXS0ludGVudERhdGFSZWY+IHdrSW50ZW50RGF0YShBZG9wdFdLLCBXS0ludGVudERhdGFDcmVh
dGUoaW50ZW50SW5pdERpY3QuZ2V0KCkpKTsKLSAgICBXS0J1bmRsZVBhZ2VEZWxpdmVySW50ZW50
VG9GcmFtZShJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdlKCksIG1haW5GcmFt
ZSwgd2tJbnRlbnREYXRhLmdldCgpKTsKKyAgICBXS1JldGFpblB0cjxXS0J1bmRsZUludGVudFJl
Zj4gd2tJbnRlbnQoQWRvcHRXSywgV0tCdW5kbGVJbnRlbnRDcmVhdGUoaW50ZW50SW5pdERpY3Qu
Z2V0KCkpKTsKKyAgICBXS0J1bmRsZVBhZ2VEZWxpdmVySW50ZW50VG9GcmFtZShJbmplY3RlZEJ1
bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdlKCksIG1haW5GcmFtZSwgd2tJbnRlbnQuZ2V0KCkp
OwogI2VuZGlmCiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158500</attachid>
            <date>2012-08-14 21:56:04 -0700</date>
            <delta_ts>2012-08-14 22:15:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>89072_wk2_messagePorts.patch</filename>
            <type>text/plain</type>
            <size>60592</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzOWM4ZmE4Li5lZjEzMTg3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDgt
MTMgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKworICAg
ICAgICBbV0syXSBBZGQgc3VwcG9ydCBmb3IgV2ViIEludGVudHMgTWVzc2FnZVBvcnRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTA3MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVuc2tpcCB3ZWJpbnRl
bnRzL3dlYi1pbnRlbnRzLWludm9rZS1wb3J0Lmh0bWwgYW5kCisgICAgICAgIHdlYmludGVudHMv
d2ViLWludGVudHMtb2JqLWNvbnN0cnVjdG9yLmh0bWwgZm9yCisgICAgICAgIFdlYktpdDIgRUZM
IG5vdyB0aGF0IGluZm9ybWF0aW9uIGFib3V0IG1lc3NhZ2UgcG9ydHMKKyAgICAgICAgaXMgY29y
cmVjdGx5IGRpc3BsYXllZCBieSBXZWJLaXRUZXN0UnVubmVyLgorCisgICAgICAgICogcGxhdGZv
cm0vZWZsLXdrMi9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDEyLTA4LTEwICBLaW51a28gWWFzdWRh
ICA8a2ludWtvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBGaWxlV3JpdGVyIGZhaWxzIHdpdGgg
YXNzZXJ0aW9uIHdoZW4gdHJ5aW5nIHRvIHdyaXRlIGVtcHR5IEJsb2IKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2VmbC13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2VmbC13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA0N2QxM2RkLi5lOWE2MmZk
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwtd2syL1Rlc3RFeHBlY3RhdGlv
bnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsLXdrMi9UZXN0RXhwZWN0YXRpb25zCkBA
IC0yNzgsNyArMjc4LDMgQEAgQlVHV0tFRkwgOiBpbnNwZWN0b3IvZXh0ZW5zaW9ucy9leHRlbnNp
b25zLXBhbmVsLmh0bWwgPSBURVhUCiBCVUdXS0VGTCA6IGluc3BlY3Rvci9leHRlbnNpb25zL2V4
dGVuc2lvbnMtc2lkZWJhci5odG1sID0gVEVYVAogQlVHV0tFRkwgOiBqcXVlcnkvYXR0cmlidXRl
cy5odG1sID0gVEVYVAogCi0vLyBXVFIgZG9lcyBub3QgcHJpbnQgaW5mb3JtYXRpb24gYWJvdXQg
V2ViIEludGVudHMgTWVzc2FnZVBvcnRzCi1CVUdXSzg5MDcyIDogd2ViaW50ZW50cy93ZWItaW50
ZW50cy1pbnZva2UtcG9ydC5odG1sID0gVEVYVAotQlVHV0s4OTA3MiA6IHdlYmludGVudHMvd2Vi
LWludGVudHMtb2JqLWNvbnN0cnVjdG9yLmh0bWwgPSBURVhUCi0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQK
aW5kZXggYTY2YTU2Yy4uYzQzZGQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ01ha2VM
aXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKQEAgLTU2LDYgKzU2
LDcgQEAgU0VUKFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElS
fS9icmlkZ2UvanNjIgogICAgICIke1dFQkNPUkVfRElSfS9jc3MiCiAgICAgIiR7V0VCQ09SRV9E
SVJ9L2RvbSIKKyAgICAiJHtXRUJDT1JFX0RJUn0vZG9tL2RlZmF1bHQiCiAgICAgIiR7V0VCQ09S
RV9ESVJ9L2VkaXRpbmciCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2hpc3RvcnkiCiAgICAgIiR7V0VC
Q09SRV9ESVJ9L2h0bWwiCkBAIC0zODAsNiArMzgxLDcgQEAgU0VUKFdlYktpdDJfU09VUkNFUwog
ICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwCiAg
ICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVu
c2lvbi5jcHAKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0
VGVzdFJlc3VsdC5jcHAKKyAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlSW50ZW50LmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVJbnRlbnRSZXF1ZXN0LmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuY3BwCkBAIC00MDAs
NiArNDAyLDcgQEAgU0VUKFdlYktpdDJfU09VUkNFUwogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAKICAgICBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW5zcGVjdG9yLmNwcAorICAgIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnQuY3BwCiAgICAgV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudFJlcXVlc3QuY3BwCiAgICAgV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3BwCiAgICAg
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU5vZGVIYW5kbGUuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggOWEyZGYxZC4uMDQxMmNmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNCBA
QAorMjAxMi0wOC0wNCAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwu
Y29tPgorCisgICAgICAgIFtXSzJdIEFkZCBzdXBwb3J0IGZvciBXZWIgSW50ZW50cyBNZXNzYWdl
UG9ydHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5
MDcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
IHN1cHBvcnQgZm9yIFdlYkludGVudHMgTWVzc2FnZVBvcnRzIGluIFdlYktpdDIuCisgICAgICAg
IE1lc3NhZ2VQb3J0cyBjYW4gYmUgcGFzc2VkIHdpdGggYSBXZWIgSW50ZW50IGluCisgICAgICAg
IG9yZGVyIHRvIG9wZW4gYSBkaXJlY3QgY29tbXVuaWNhdGlvbiBjaGFubmVsCisgICAgICAgIGJl
dHdlZW4gdGhlIFdlYiBhcHBsaWNhdGlvbiBhbmQgdGhlIGludGVudCBzZXJ2aWNlLgorCisgICAg
ICAgIFRoaXMgZnVuY3Rpb25hbGl0eSBpcyBhbHJlYWR5IHN1cHBvcnRlZCBieSBXZWJLaXQgMS4K
KworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgSW5qZWN0ZWRCdW5kbGVJbnRl
bnQKKyAgICAgICAgY2xhc3Mgd2hpY2ggd3JhcHMgYSBXZWJDb3JlOjpJbnRlbnQuIFRoaXMgd2F5
CisgICAgICAgIGluZm9ybWF0aW9uIHJlZ2FyZGluZyB0aGUgTWVzc2FnZVBvcnRzIGluIGEgV2Vi
CisgICAgICAgIEludGVudCBpcyBrZXB0IHdoZW4gdXNpbmcgYW4gaW5qZWN0ZWQgYnVuZGxlLgor
CisgICAgICAgIEZvciB0aGUgVUlQcm9jZXNzLCBXZWJJbnRlbnREYXRhIG5vdyBjYXJyaWVzCisg
ICAgICAgIGlkZW50aWZpZXJzIGZvciB0aGUgTWVzc2FnZVBvcnRzIHdoaWNoIGNhbiBnbyBvdmVy
CisgICAgICAgIElQQy4gVGhvc2UgaWRlbnRpZmllcnMgbWFwIHRvIGFjdHVhbCBNZXNzYWdlUG9y
dHMKKyAgICAgICAgc3RvcmVkIGluIHRoZSBXZWIgcHJvY2Vzcy4gVGhpcyB3YXksIHdoZW4gdGhl
IFVJCisgICAgICAgIGRlbGl2ZXJzIGFuIGludGVudCB0byBhIGZyYW1lLCB3ZSBjYW4gZ2V0IGJh
Y2sgdGhlCisgICAgICAgIGNvcnJlc3BvbmRpbmcgTWVzc2FnZVBvcnRzIGZyb20gdGhlIFdlYiBw
cm9jZXNzCisgICAgICAgIGJlZm9yZSBkZWxpdmVyaW5nIHRoZSBpbnRlbnQgdG8gdGhlIERPTVdp
bmRvdy4KKworICAgICAgICBUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgYWxyZWFkeSB0ZXN0ZWQgYnk6
CisKKyAgICAgICAgLSB3ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLWludm9rZS1wb3J0Lmh0bWwKKyAg
ICAgICAgLSB3ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLW9iai1jb25zdHJ1Y3Rvci5odG1sCisKKyAg
ICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgor
ICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0Jhc2UuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJT2Jq
ZWN0Lmg6CisgICAgICAgICogU2hhcmVkL0ludGVudERhdGEuY3BwOiBBZGQgTWVzc2FnZVBvcnQg
aWRlbnRpZmllcnMuCisgICAgICAgIChXZWJLaXQ6OkludGVudERhdGE6OkludGVudERhdGEpOgor
ICAgICAgICAoV2ViS2l0OjpJbnRlbnREYXRhOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpJ
bnRlbnREYXRhOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9JbnRlbnREYXRhLmg6CisgICAg
ICAgIChJbnRlbnREYXRhKToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQy9XS0ludGVudERhdGEuY3BwOiBSZW5hbWUgV0tJbnRlbnREYXRhQ29weUV4dHJh
KCkgdG8KKyAgICAgICAgV0tJbnRlbnREYXRhQ29weUV4dHJhVmFsdWUoKSBmb3IgY2xhcml0eS4K
KyAgICAgICAgKFdLSW50ZW50RGF0YUNvcHlFeHRyYVZhbHVlKTogCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLSW50ZW50RGF0YS5oOiBSZW1vdmUgV0tJbnRlbnREYXRhQ3JlYXRlKCkgZnVu
Y3Rpb24gbm93CisgICAgICAgIHRoYXQgV1RSIHVzZXMgV0tCdW5kbGVJbnRlbnRDcmVhdGUoKSBp
bnN0ZWFkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19pbnRlbnQuY3BwOgorICAg
ICAgICAoZXdrX2ludGVudF9leHRyYV9nZXQpOiBVc2UgV0tJbnRlbnREYXRhQ29weUV4dHJhVmFs
dWUoKSBpbnN0ZWFkIG9mCisgICAgICAgIFdLSW50ZW50RGF0YUNvcHlFeHRyYSgpIHNpbmNlIGl0
IHdhcyByZW5hbWVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJJbnRlbnREYXRhLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViSW50ZW50RGF0YTo6V2ViSW50ZW50RGF0YSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkludGVudERhdGE6On5XZWJJbnRlbnREYXRhKTogUmVtb3ZlIE1lc3NhZ2VQb3J0
cyBmcm9tIFdlYlByb2Nlc3MgdXBvbgorICAgICAgICBXZWJJbnRlbnREYXRhIGRlc3RydWN0aW9u
LgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW50ZW50RGF0YTo6ZXh0
cmFzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViSW50ZW50RGF0YS5oOgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW50ZW50RGF0YTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkludGVudERhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZSk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnJlbW92ZU1lc3NhZ2VQb3J0
Q2hhbm5lbCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAg
ICAoV2ViUHJvY2Vzc1Byb3h5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlQVBJQ2FzdC5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50LmNwcDogQ29waWVk
IGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLSW50ZW50RGF0YS5jcHAuCisg
ICAgICAgIChXS0J1bmRsZUludGVudEdldFR5cGVJRCk6CisgICAgICAgIChXS0J1bmRsZUludGVu
dENyZWF0ZSk6CisgICAgICAgIChXS0J1bmRsZUludGVudENvcHlBY3Rpb24pOgorICAgICAgICAo
V0tCdW5kbGVJbnRlbnRDb3B5VHlwZSk6CisgICAgICAgIChXS0J1bmRsZUludGVudENvcHlTZXJ2
aWNlKToKKyAgICAgICAgKFdLQnVuZGxlSW50ZW50Q29weVN1Z2dlc3Rpb25zKToKKyAgICAgICAg
KFdLQnVuZGxlSW50ZW50Q29weUV4dHJhVmFsdWUpOgorICAgICAgICAoV0tCdW5kbGVJbnRlbnRD
b3B5RXh0cmFzKToKKyAgICAgICAgKFdLQnVuZGxlSW50ZW50TWVzc2FnZVBvcnRDb3VudCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudC5o
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnRlbnREYXRh
LmguCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUlu
dGVudFJlcXVlc3QuY3BwOgorICAgICAgICAoV0tCdW5kbGVJbnRlbnRSZXF1ZXN0Q29weUludGVu
dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUlu
dGVudFJlcXVlc3QuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXS0J1bmRsZVBhZ2VEZWxpdmVySW50ZW50VG9G
cmFtZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZVBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlSW50ZW50LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYklu
dGVudERhdGEuY3BwLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0
ZWRCdW5kbGVJbnRlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxl
SW50ZW50OjpJbmplY3RlZEJ1bmRsZUludGVudCk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVk
QnVuZGxlSW50ZW50OjphY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZUlu
dGVudDo6cGF5bG9hZFR5cGUpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZUludGVu
dDo6c2VydmljZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlSW50ZW50OjpkYXRh
KToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OmV4dHJhKToKKyAgICAg
ICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OmV4dHJhcyk6CisgICAgICAgIChXZWJL
aXQ6OkluamVjdGVkQnVuZGxlSW50ZW50OjpzdWdnZXN0aW9ucyk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudC5oOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW50ZW50RGF0YS5oLgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKEluamVjdGVkQnVuZGxlSW50ZW50KToKKyAgICAgICAgKFdlYktpdDo6SW5q
ZWN0ZWRCdW5kbGVJbnRlbnQ6OmNvcmVJbnRlbnQpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3Rl
ZEJ1bmRsZUludGVudDo6dHlwZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmpl
Y3RlZEJ1bmRsZUludGVudFJlcXVlc3Q6OmludGVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuaDoKKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgIChJbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZy
YW1lOjpkZWxpdmVySW50ZW50KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkZyYW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkZWxpdmVyQ29yZUludGVu
dFRvRnJhbWUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYlBhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHA6IFN0b3JlIE1lc3NhZ2VQb3J0cyBpbiBXZWJQcm9jZXNzIGFuZCBrZWVw
IG1hcHBpbmcgd2l0aAorICAgICAgICB0aGVpciBpZGVudGlmaWVycy4KKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmFkZE1lc3NhZ2VQb3J0Q2hhbm5lbCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6Om1lc3NhZ2VQb3J0Q2hhbm5lbCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnJlbW92ZU1lc3NhZ2VQb3J0Q2hhbm5lbCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYlByb2Nlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbjoKKwogMjAxMi0wOC0xNCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAg
ICAgICAgIERlbGV0ZSBGcmFtZTo6ZG9tV2luZG93KCkgYW5kIEZyYW1lOjpleGlzdGluZ0RPTVdp
bmRvdygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtIGIv
U291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBkNzM3YmM3Li5kNDE3YjVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTk2MSw2ICs5NjEsOCBAQCB3ZWJr
aXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVJbml0aWFsaXplLmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnNwZWN0b3IuY3BwIFwKIAlTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW5zcGVjdG9y
LmggXAorCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVJbnRlbnQuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50LmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnRSZXF1ZXN0LmNwcCBcCiAJU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudFJl
cXVlc3QuaCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZU5vZGVIYW5kbGUuY3BwIFwKQEAgLTk5NSw2ICs5OTcsOCBAQCB3ZWJraXQyX3Nv
dXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uaCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3BwIFwKIAlT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0
VGVzdFJlc3VsdC5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlSW50ZW50LmNwcCBcCisJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudC5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5jcHAg
XAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVJbnRlbnRSZXF1ZXN0LmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJL2MvV0tCYXNlLmgKaW5kZXggNjg1NGVjYy4uYTZhOGJkNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUEkvYy9XS0Jhc2UuaApAQCAtMTM1LDYgKzEzNSw3IEBAIHR5cGVkZWYgY29uc3Qgc3Ry
dWN0IE9wYXF1ZVdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uKiBXS0J1bmRsZURPTVdpbmRvd0V4
dGVuc2lvCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRsZUZyYW1lKiBXS0J1bmRs
ZUZyYW1lUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVIaXRUZXN0UmVz
dWx0KiBXS0J1bmRsZUhpdFRlc3RSZXN1bHRSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFx
dWVXS0J1bmRsZUluc3BlY3RvciogV0tCdW5kbGVJbnNwZWN0b3JSZWY7Cit0eXBlZGVmIGNvbnN0
IHN0cnVjdCBPcGFxdWVXS0J1bmRsZUludGVudCogV0tCdW5kbGVJbnRlbnRSZWY7CiB0eXBlZGVm
IGNvbnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRsZUludGVudFJlcXVlc3QqIFdLQnVuZGxlSW50ZW50
UmVxdWVzdFJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQnVuZGxlTmF2aWdhdGlv
bkFjdGlvbiogV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1
Y3QgT3BhcXVlV0tCdW5kbGVOb2RlSGFuZGxlKiBXS0J1bmRsZU5vZGVIYW5kbGVSZWY7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJT2JqZWN0LmgKaW5kZXggOGU0ZDI5My4uNzA4ZWZmZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUElPYmplY3QuaApAQCAtMTE3LDYgKzExNyw3IEBAIHB1YmxpYzoKICAgICAgICAgVHlw
ZUJ1bmRsZUZyYW1lLAogICAgICAgICBUeXBlQnVuZGxlSGl0VGVzdFJlc3VsdCwKICAgICAgICAg
VHlwZUJ1bmRsZUluc3BlY3RvciwKKyAgICAgICAgVHlwZUJ1bmRsZUludGVudCwKICAgICAgICAg
VHlwZUJ1bmRsZUludGVudFJlcXVlc3QsCiAgICAgICAgIFR5cGVCdW5kbGVOYXZpZ2F0aW9uQWN0
aW9uLAogICAgICAgICBUeXBlQnVuZGxlTm9kZUhhbmRsZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9JbnRlbnREYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9JbnRl
bnREYXRhLmNwcAppbmRleCA0OTk1YjJlLi40MTA3ODc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvSW50ZW50RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0lu
dGVudERhdGEuY3BwCkBAIC0zMSw3ICszMSwxMCBAQAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgog
I2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRlbnQu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL01lc3NhZ2VQb3J0Q2hhbm5lbC5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKQEAgLTQ1LDYgKzQ4LDEyIEBAIEludGVudERhdGE6OkludGVudERhdGEoSW50ZW50
KiBjb3JlSW50ZW50KQogICAgICwgZXh0cmFzKGNvcmVJbnRlbnQtPmV4dHJhcygpKQogICAgICwg
c3VnZ2VzdGlvbnMoY29yZUludGVudC0+c3VnZ2VzdGlvbnMoKSkKIHsKKyAgICBNZXNzYWdlUG9y
dENoYW5uZWxBcnJheSogY29yZU1lc3NhZ2VQb3J0cyA9IGNvcmVJbnRlbnQtPm1lc3NhZ2VQb3J0
cygpOworICAgIGlmIChjb3JlTWVzc2FnZVBvcnRzKSB7CisgICAgICAgIHNpemVfdCBudW1NZXNz
YWdlUG9ydHMgPSBjb3JlTWVzc2FnZVBvcnRzLT5zaXplKCk7CisgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbnVtTWVzc2FnZVBvcnRzOyArK2kpCisgICAgICAgICAgICBtZXNzYWdlUG9y
dHMuYXBwZW5kKFdlYlByb2Nlc3M6OnNoYXJlZCgpLmFkZE1lc3NhZ2VQb3J0Q2hhbm5lbCgoKmNv
cmVNZXNzYWdlUG9ydHMpW2ldLT5jaGFubmVsKCkpKTsKKyAgICB9CiB9CiAKIHZvaWQgSW50ZW50
RGF0YTo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciogZW5jb2RlcikgY29uc3QKQEAg
LTU1LDYgKzY0LDcgQEAgdm9pZCBJbnRlbnREYXRhOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRF
bmNvZGVyKiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXItPmVuY29kZShDb3JlSVBDOjpEYXRh
UmVmZXJlbmNlKGRhdGEpKTsKICAgICBlbmNvZGVyLT5lbmNvZGUoZXh0cmFzKTsKICAgICBlbmNv
ZGVyLT5lbmNvZGUoc3VnZ2VzdGlvbnMpOworICAgIGVuY29kZXItPmVuY29kZShtZXNzYWdlUG9y
dHMpOwogfQogCiBib29sIEludGVudERhdGE6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29k
ZXIqIGRlY29kZXIsIEludGVudERhdGEmIGludGVudERhdGEpCkBAIC03Myw2ICs4Myw4IEBAIGJv
b2wgSW50ZW50RGF0YTo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2Rlciwg
SW50ZW50RGF0YSYgaW50ZW50RGF0CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRl
Y29kZXItPmRlY29kZShpbnRlbnREYXRhLnN1Z2dlc3Rpb25zKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGludGVudERhdGEubWVzc2FnZVBvcnRzKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW50ZW50RGF0YS5oIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0ludGVudERhdGEuaAppbmRleCA5NmUyZDlmLi5lODQzNWMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvSW50ZW50RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9JbnRlbnREYXRhLmgKQEAgLTI5LDcgKzI5LDggQEAKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMp
CiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKLSNpbmNsdWRlICJHZW5lcmljQ2FsbGJhY2suaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgQ29yZUlQQyB7CkBAIC01
Niw2ICs1Nyw3IEBAIHN0cnVjdCBJbnRlbnREYXRhIHsKICAgICBWZWN0b3I8dWludDhfdD4gZGF0
YTsKICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBleHRyYXM7CiAgICAgVmVjdG9yPFdlYkNv
cmU6OktVUkw+IHN1Z2dlc3Rpb25zOworICAgIFZlY3Rvcjx1aW50NjRfdD4gbWVzc2FnZVBvcnRz
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9UYXJnZXQucHJpIGIvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQppbmRleCBiOGUxYWVjLi4z
NzMzNjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1RhcmdldC5wcmkKQEAgLTI3OSw2ICsyNzksNyBAQCBIRUFERVJTICs9IFwKICAg
ICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQmFja0ZvcndhcmRMaXN0
LmggXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVCYWNrRm9y
d2FyZExpc3RJdGVtLmggXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVIaXRUZXN0UmVzdWx0LmggXAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVJbnRlbnQuaCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZUludGVudFJlcXVlc3QuaCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZU5hdmlnYXRpb25BY3Rpb24uaCBcCiAgICAgV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU5vZGVIYW5kbGUuaCBcCkBAIC0yOTIsNiArMjkzLDcg
QEAgSEVBREVSUyArPSBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZUNsaWVudC5oIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlRE9NV2luZG93RXh0ZW5zaW9uLmggXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmggXAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnQuaCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuaCBcCiAgICAgV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uaCBcCiAgICAgV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5o
IFwKQEAgLTYzMSw2ICs2MzMsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwIFwKICAgICBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAgXAogICAgIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnNwZWN0b3IuY3BwIFwKKyAgICBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50LmNwcCBcCiAgICAgV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudFJlcXVlc3QuY3BwIFwK
ICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlTmF2aWdhdGlvbkFj
dGlvbi5jcHAgXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVO
b2RlSGFuZGxlLmNwcCBcCkBAIC02NDYsNiArNjQ5LDcgQEAgU09VUkNFUyArPSBcCiAgICAgV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAgXAogICAgIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24u
Y3BwIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVz
dFJlc3VsdC5jcHAgXAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVJbnRlbnQuY3BwIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlSW50ZW50UmVxdWVzdC5jcHAgXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHAgXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLSW50ZW50RGF0YS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnRlbnREYXRhLmNwcAppbmRleCA3YTky
ZGI1Li45MmU2MTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tJbnRlbnREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJ
bnRlbnREYXRhLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgog
I2luY2x1ZGUgIldLRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIldLU3RyaW5nLmgiCisjaW5jbHVk
ZSAiV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMp
CiAjaW5jbHVkZSAiV2ViSW50ZW50RGF0YS5oIgpAQCAtNDcsMjcgKzQ4LDYgQEAgV0tUeXBlSUQg
V0tJbnRlbnREYXRhR2V0VHlwZUlEKCkKICNlbmRpZgogfQogCi1XS0ludGVudERhdGFSZWYgV0tJ
bnRlbnREYXRhQ3JlYXRlKFdLRGljdGlvbmFyeVJlZiBpbml0RGljdGlvbmFyeVJlZikKLXsKLSNp
ZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0gICAgSW50ZW50RGF0YSBpbnRlbnREYXRhOwotICAgIFdL
U3RyaW5nUmVmIGFjdGlvbiA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlH
ZXRJdGVtRm9yS2V5KGluaXREaWN0aW9uYXJ5UmVmLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZygiYWN0aW9uIikpKTsKLSAgICBBU1NFUlQoYWN0aW9uKTsKLSAgICBpbnRlbnREYXRhLmFj
dGlvbiA9IHRvSW1wbChhY3Rpb24pLT5zdHJpbmcoKTsKLSAgICBXS1N0cmluZ1JlZiB0eXBlID0g
c3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkoaW5pdERp
Y3Rpb25hcnlSZWYsIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJ0eXBlIikpKTsKLSAg
ICBBU1NFUlQodHlwZSk7Ci0gICAgaW50ZW50RGF0YS50eXBlID0gdG9JbXBsKHR5cGUpLT5zdHJp
bmcoKTsKLSAgICBXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiBkYXRhID0gc3RhdGljX2Nhc3Q8
V0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkoaW5p
dERpY3Rpb25hcnlSZWYsIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJkYXRhIikpKTsK
LSAgICBpZiAoZGF0YSkKLSAgICAgICAgaW50ZW50RGF0YS5kYXRhID0gdG9JbXBsKGRhdGEpLT5k
YXRhUmVmZXJlbmNlKCkudmVjdG9yKCk7Ci0KLSAgICBSZWZQdHI8V2ViSW50ZW50RGF0YT4gd2Vi
SW50ZW50RGF0YSA9IFdlYkludGVudERhdGE6OmNyZWF0ZShpbnRlbnREYXRhKTsKLSAgICByZXR1
cm4gdG9BUEkod2ViSW50ZW50RGF0YS5yZWxlYXNlKCkubGVha1JlZigpKTsKLSNlbHNlCi0gICAg
cmV0dXJuIDA7Ci0jZW5kaWYKLX0KLQogV0tTdHJpbmdSZWYgV0tJbnRlbnREYXRhQ29weUFjdGlv
bihXS0ludGVudERhdGFSZWYgaW50ZW50UmVmKQogewogI2lmIEVOQUJMRShXRUJfSU5URU5UUykK
QEAgLTEwNCw3ICs4NCw3IEBAIFdLQXJyYXlSZWYgV0tJbnRlbnREYXRhQ29weVN1Z2dlc3Rpb25z
KFdLSW50ZW50RGF0YVJlZiBpbnRlbnRSZWYpCiAjZW5kaWYKIH0KIAotV0tTdHJpbmdSZWYgV0tJ
bnRlbnREYXRhQ29weUV4dHJhKFdLSW50ZW50RGF0YVJlZiBpbnRlbnRSZWYsIFdLU3RyaW5nUmVm
IGtleSkKK1dLU3RyaW5nUmVmIFdLSW50ZW50RGF0YUNvcHlFeHRyYVZhbHVlKFdLSW50ZW50RGF0
YVJlZiBpbnRlbnRSZWYsIFdLU3RyaW5nUmVmIGtleSkKIHsKICNpZiBFTkFCTEUoV0VCX0lOVEVO
VFMpCiAgICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChpbnRlbnRSZWYpLT5leHRyYSh0b1dU
RlN0cmluZyhrZXkpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tJbnRlbnREYXRhLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnRl
bnREYXRhLmgKaW5kZXggMWY4MDllYy4uY2FmMWI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLSW50ZW50RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS0ludGVudERhdGEuaApAQCAtMzQsMTMgKzM0LDExIEBAIGV4dGVybiAi
QyIgewogCiBXS19FWFBPUlQgV0tUeXBlSUQgV0tJbnRlbnREYXRhR2V0VHlwZUlEKCk7CiAKLVdL
X0VYUE9SVCBXS0ludGVudERhdGFSZWYgV0tJbnRlbnREYXRhQ3JlYXRlKFdLRGljdGlvbmFyeVJl
ZiBpbml0RGljdGlvbmFyeSk7Ci0KIFdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0ludGVudERhdGFD
b3B5QWN0aW9uKFdLSW50ZW50RGF0YVJlZiBpbnRlbnRSZWYpOwogV0tfRVhQT1JUIFdLU3RyaW5n
UmVmIFdLSW50ZW50RGF0YUNvcHlUeXBlKFdLSW50ZW50RGF0YVJlZiBpbnRlbnRSZWYpOwogV0tf
RVhQT1JUIFdLVVJMUmVmIFdLSW50ZW50RGF0YUNvcHlTZXJ2aWNlKFdLSW50ZW50RGF0YVJlZiBp
bnRlbnRSZWYpOwogV0tfRVhQT1JUIFdLQXJyYXlSZWYgV0tJbnRlbnREYXRhQ29weVN1Z2dlc3Rp
b25zKFdLSW50ZW50RGF0YVJlZiBpbnRlbnRSZWYpOwotV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdL
SW50ZW50RGF0YUNvcHlFeHRyYShXS0ludGVudERhdGFSZWYgaW50ZW50UmVmLCBXS1N0cmluZ1Jl
ZiBrZXkpOworV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLSW50ZW50RGF0YUNvcHlFeHRyYVZhbHVl
KFdLSW50ZW50RGF0YVJlZiBpbnRlbnRSZWYsIFdLU3RyaW5nUmVmIGtleSk7CiBXS19FWFBPUlQg
V0tEaWN0aW9uYXJ5UmVmIFdLSW50ZW50RGF0YUNvcHlFeHRyYXMoV0tJbnRlbnREYXRhUmVmIGlu
dGVudFJlZik7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2ludGVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfaW50ZW50LmNwcAppbmRleCA4NTYxNzkzLi41YzJiMjE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfaW50ZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfaW50ZW50LmNwcApAQCAt
MTcxLDcgKzE3MSw3IEBAIGNvbnN0IGNoYXIqIGV3a19pbnRlbnRfZXh0cmFfZ2V0KGNvbnN0IEV3
a19JbnRlbnQqIGludGVudCwgY29uc3QgY2hhcioga2V5KQogICAgIEVXS19JTlRFTlRfV0tfR0VU
X09SX1JFVFVSTihpbnRlbnQsIHdrSW50ZW50LCAwKTsKIAogICAgIFdLUmV0YWluUHRyPFdLU3Ry
aW5nUmVmPiBrZXlSZWYgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGtl
eSkpOwotICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB3a1ZhbHVlKEFkb3B0V0ssIFdLSW50
ZW50RGF0YUNvcHlFeHRyYSh3a0ludGVudCwga2V5UmVmLmdldCgpKSk7CisgICAgV0tSZXRhaW5Q
dHI8V0tTdHJpbmdSZWY+IHdrVmFsdWUoQWRvcHRXSywgV0tJbnRlbnREYXRhQ29weUV4dHJhVmFs
dWUod2tJbnRlbnQsIGtleVJlZi5nZXQoKSkpOwogICAgIFN0cmluZyB2YWx1ZSA9IHRvSW1wbCh3
a1ZhbHVlLmdldCgpKS0+c3RyaW5nKCk7CiAgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW50
ZW50RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW50ZW50RGF0YS5jcHAK
aW5kZXggOTYxMjhkYi4uNjMyYWEzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkludGVudERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJ
bnRlbnREYXRhLmNwcApAQCAtMzAsMTYgKzMwLDI5IEBACiAKICNpbmNsdWRlICJJbW11dGFibGVB
cnJheS5oIgogI2luY2x1ZGUgIkltbXV0YWJsZURpY3Rpb25hcnkuaCIKKyNpbmNsdWRlICJXZWJQ
cm9jZXNzUHJveHkuaCIKKyNpbmNsdWRlICJXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNp
bmNsdWRlICJXZWJTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJVUkwuaCIKIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKLVdlYkludGVudERhdGE6OldlYkludGVudERhdGEoY29uc3QgSW50ZW50RGF0YSYg
c3RvcmUpCitXZWJJbnRlbnREYXRhOjpXZWJJbnRlbnREYXRhKGNvbnN0IEludGVudERhdGEmIHN0
b3JlLCBXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MpCiAgICAgOiBtX3N0b3JlKHN0b3JlKQorICAg
ICwgbV9wcm9jZXNzKHByb2Nlc3MpCiB7CiB9CiAKK1dlYkludGVudERhdGE6On5XZWJJbnRlbnRE
YXRhKCkKK3sKKyAgICAvLyBSZW1vdmUgTWVzc2FnZVBvcnRDaGFubmVscyBmcm9tIFdlYlByb2Nl
c3MuCisgICAgaWYgKG1fcHJvY2VzcykgeworICAgICAgICBzaXplX3QgbnVtTWVzc2FnZVBvcnRz
ID0gbV9zdG9yZS5tZXNzYWdlUG9ydHMuc2l6ZSgpOworICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG51bU1lc3NhZ2VQb3J0czsgKytpKQorICAgICAgICAgICAgbV9wcm9jZXNzLT5yZW1v
dmVNZXNzYWdlUG9ydENoYW5uZWwobV9zdG9yZS5tZXNzYWdlUG9ydHNbaV0pOworICAgIH0KK30K
KwogUGFzc1JlZlB0cjxXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFdlYkludGVudERhdGE6OmRh
dGEoKSBjb25zdAogewogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhQ29weSA9IG1fc3RvcmUuZGF0
YTsKQEAgLTY2LDYgKzc5LDcgQEAgUGFzc1JlZlB0cjxJbW11dGFibGVEaWN0aW9uYXJ5PiBXZWJJ
bnRlbnREYXRhOjpleHRyYXMoKSBjb25zdAogICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Ojpj
b25zdF9pdGVyYXRvciBlbmQgPSBtX3N0b3JlLmV4dHJhcy5lbmQoKTsKICAgICBmb3IgKEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fc3RvcmUuZXh0cmFzLmJl
Z2luKCk7IGl0ICE9IGVuZDsgKytpdCkKICAgICAgICAgd2tFeHRyYXMuc2V0KGl0LT5maXJzdCwg
V2ViU3RyaW5nOjpjcmVhdGUoaXQtPnNlY29uZCkpOworCiAgICAgcmV0dXJuIEltbXV0YWJsZURp
Y3Rpb25hcnk6OmFkb3B0KHdrRXh0cmFzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkludGVudERhdGEuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJJbnRlbnREYXRhLmgKaW5kZXggZGVjZjRhZS4uOWQ1OWY5MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkludGVudERhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViSW50ZW50RGF0YS5oCkBAIC0zMCwyMSArMzAsMjYgQEAKIAogI2luY2x1ZGUg
IkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIkludGVudERhdGEuaCIKLSNpbmNsdWRlICJXZWJTZXJp
YWxpemVkU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KICNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgSW1tdXRh
YmxlQXJyYXk7CitjbGFzcyBJbW11dGFibGVEaWN0aW9uYXJ5OworY2xhc3MgV2ViUHJvY2Vzc1By
b3h5OworY2xhc3MgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlOworCiBjbGFzcyBXZWJJbnRlbnRE
YXRhIDogcHVibGljIEFQSU9iamVjdCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IFR5cGUg
QVBJVHlwZSA9IFR5cGVJbnRlbnREYXRhOwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViSW50
ZW50RGF0YT4gY3JlYXRlKGNvbnN0IEludGVudERhdGEmIHN0b3JlKQorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFdlYkludGVudERhdGE+IGNyZWF0ZShjb25zdCBJbnRlbnREYXRhJiBzdG9yZSwgV2Vi
UHJvY2Vzc1Byb3h5KiBwcm9jZXNzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBXZWJJbnRlbnREYXRhKHN0b3JlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2Vi
SW50ZW50RGF0YShzdG9yZSwgcHJvY2VzcykpOwogICAgIH0KIAotICAgIHZpcnR1YWwgfldlYklu
dGVudERhdGEoKSB7IH0KKyAgICB2aXJ0dWFsIH5XZWJJbnRlbnREYXRhKCk7CiAKICAgICBjb25z
dCBTdHJpbmcmIGFjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmUuYWN0aW9uOyB9CiAgICAg
Y29uc3QgU3RyaW5nJiBwYXlsb2FkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmUudHlwZTsg
fQpAQCAtNTcsMTEgKzYyLDEyIEBAIHB1YmxpYzoKICAgICBjb25zdCBJbnRlbnREYXRhJiBzdG9y
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmU7IH0KIAogcHJpdmF0ZToKLSAgICBXZWJJbnRlbnRE
YXRhKGNvbnN0IEludGVudERhdGEmKTsKKyAgICBXZWJJbnRlbnREYXRhKGNvbnN0IEludGVudERh
dGEmLCBXZWJQcm9jZXNzUHJveHkqKTsKIAogICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3Qg
eyByZXR1cm4gQVBJVHlwZTsgfQogCiAgICAgSW50ZW50RGF0YSBtX3N0b3JlOworICAgIFdlYlBy
b2Nlc3NQcm94eSogbV9wcm9jZXNzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDljNGRmOGUuLmZmMTM3
NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0yMjA2
LDcgKzIyMDYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZUludGVudEZvckZyYW1l
KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IEludGVudERhdGEmCiAgICAgV2ViRnJhbWVQcm94eSog
ZnJhbWUgPSBwcm9jZXNzKCktPndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0so
ZnJhbWUpOwogCi0gICAgUmVmUHRyPFdlYkludGVudERhdGE+IHdlYkludGVudERhdGEgPSBXZWJJ
bnRlbnREYXRhOjpjcmVhdGUoaW50ZW50RGF0YSk7CisgICAgUmVmUHRyPFdlYkludGVudERhdGE+
IHdlYkludGVudERhdGEgPSBXZWJJbnRlbnREYXRhOjpjcmVhdGUoaW50ZW50RGF0YSwgcHJvY2Vz
cygpKTsKICAgICBtX2xvYWRlckNsaWVudC5kaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWUodGhpcywg
ZnJhbWUsIHdlYkludGVudERhdGEuZ2V0KCksIHVzZXJEYXRhLmdldCgpKTsKIH0KICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAzZTcw
ZmVlLi4yMmEyYjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmNwcApAQCAtMTk5LDYgKzE5OSwxNiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cmVtb3Zl
V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQpCiAgICAgbV9wYWdlTWFwLnJlbW92ZShwYWdlSUQpOwog
fQogCisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlbW92
ZU1lc3NhZ2VQb3J0Q2hhbm5lbCh1aW50NjRfdCBjaGFubmVsSUQpCit7CisgICAgaWYgKCFpc1Zh
bGlkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIHNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6
OlJlbW92ZU1lc3NhZ2VQb3J0Q2hhbm5lbChjaGFubmVsSUQpLCAvKiBkZXN0aW5hdGlvbklEICov
IDApOworfQorI2VuZGlmCisKIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIFdlYlByb2Nlc3NQcm94
eTo6d2ViQmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IGl0ZW1JRCkgY29uc3QKIHsKICAgICByZXR1
cm4gbV9iYWNrRm9yd2FyZExpc3RJdGVtTWFwLmdldChpdGVtSUQpLmdldCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IDQwYWI1NDguLjJkYzIwNGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTg1LDYg
Kzg1LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZEV4aXN0aW5nV2ViUGFnZShXZWJQYWdlUHJv
eHkqLCB1aW50NjRfdCBwYWdlSUQpOwogICAgIHZvaWQgcmVtb3ZlV2ViUGFnZSh1aW50NjRfdCBw
YWdlSUQpOwogCisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorICAgIHZvaWQgcmVtb3ZlTWVzc2Fn
ZVBvcnRDaGFubmVsKHVpbnQ2NF90IGNoYW5uZWxJRCk7CisjZW5kaWYKKwogICAgIFdlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0qIHdlYkJhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBpdGVtSUQpIGNvbnN0
OwogCiAgICAgUmVzcG9uc2l2ZW5lc3NUaW1lciogcmVzcG9uc2l2ZW5lc3NUaW1lcigpIHsgcmV0
dXJuICZtX3Jlc3BvbnNpdmVuZXNzVGltZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVBUElDYXN0LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQVBJQ2Fz
dC5oCmluZGV4IDMzNTVkMDguLjAxOGVmNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVBUElDYXN0LmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUFQSUNh
c3QuaApAQCAtNDYsNiArNDYsNyBAQCBjbGFzcyBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlz
dDsKIGNsYXNzIEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbTsKIGNsYXNzIEluamVj
dGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uOwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVIaXRUZXN0
UmVzdWx0OworY2xhc3MgSW5qZWN0ZWRCdW5kbGVJbnRlbnQ7CiBjbGFzcyBJbmplY3RlZEJ1bmRs
ZUludGVudFJlcXVlc3Q7CiBjbGFzcyBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb247CiBj
bGFzcyBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU7CkBAIC02NCw2ICs2NSw3IEBAIFdLX0FERF9B
UElfTUFQUElORyhXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZiwgSW5qZWN0ZWRCdW5kbGVE
T01XaW5kb3dFeHRlbnNpCiBXS19BRERfQVBJX01BUFBJTkcoV0tCdW5kbGVGcmFtZVJlZiwgV2Vi
RnJhbWUpCiBXS19BRERfQVBJX01BUFBJTkcoV0tCdW5kbGVIaXRUZXN0UmVzdWx0UmVmLCBJbmpl
Y3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQpCiBXS19BRERfQVBJX01BUFBJTkcoV0tCdW5kbGVJbnNw
ZWN0b3JSZWYsIFdlYkluc3BlY3RvcikKK1dLX0FERF9BUElfTUFQUElORyhXS0J1bmRsZUludGVu
dFJlZiwgSW5qZWN0ZWRCdW5kbGVJbnRlbnQpCiBXS19BRERfQVBJX01BUFBJTkcoV0tCdW5kbGVJ
bnRlbnRSZXF1ZXN0UmVmLCBJbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QpCiBXS19BRERfQVBJ
X01BUFBJTkcoV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uUmVmLCBJbmplY3RlZEJ1bmRsZU5hdmln
YXRpb25BY3Rpb24pCiBXS19BRERfQVBJX01BUFBJTkcoV0tCdW5kbGVOb2RlSGFuZGxlUmVmLCBJ
bmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnQuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2NWU1NjAKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlSW50ZW50LmNwcApAQCAtMCwwICsxLDEzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldLQnVuZGxlSW50ZW50LmgiCisKKyNpZiBF
TkFCTEUoV0VCX0lOVEVOVFMpCisjaW5jbHVkZSAiSW1tdXRhYmxlQXJyYXkuaCIKKyNpbmNsdWRl
ICJJbW11dGFibGVEaWN0aW9uYXJ5LmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVJbnRlbnQu
aCIKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXS0J1bmRsZUFQSUNhc3QuaCIK
KyNpbmNsdWRlICJXS0RpY3Rpb25hcnkuaCIKKyNpbmNsdWRlICJXS1N0cmluZy5oIgorI2luY2x1
ZGUgIldlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisjZW5kaWYKKworV0tUeXBlSUQgV0tCdW5kbGVJ
bnRlbnRHZXRUeXBlSUQoKQoreworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICByZXR1cm4g
dG9BUEkoSW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OkFQSVR5cGUpOworI2Vsc2UKKyAgICByZXR1cm4g
MDsKKyNlbmRpZgorfQorCitXS0J1bmRsZUludGVudFJlZiBXS0J1bmRsZUludGVudENyZWF0ZShX
S0RpY3Rpb25hcnlSZWYgZGljdGlvbmFyeVJlZikKK3sKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMp
CisgICAgV0tTdHJpbmdSZWYgYWN0aW9uID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGlj
dGlvbmFyeUdldEl0ZW1Gb3JLZXkoZGljdGlvbmFyeVJlZiwgV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoImFjdGlvbiIpKSk7CisgICAgQVNTRVJUKGFjdGlvbik7CisgICAgV0tTdHJpbmdS
ZWYgdHlwZSA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9y
S2V5KGRpY3Rpb25hcnlSZWYsIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJ0eXBlIikp
KTsKKyAgICBBU1NFUlQodHlwZSk7CisgICAgV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYgZGF0
YSA9IHN0YXRpY19jYXN0PFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmPihXS0RpY3Rpb25hcnlH
ZXRJdGVtRm9yS2V5KGRpY3Rpb25hcnlSZWYsIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJkYXRhIikpKTsKKyAgICBNZXNzYWdlUG9ydEFycmF5IGR1bW15UG9ydHM7CisgICAgRXhjZXB0
aW9uQ29kZSBlYzsKKworICAgIFJlZlB0cjxJbnRlbnQ+IGNvcmVJbnRlbnQgPSBJbnRlbnQ6OmNy
ZWF0ZSh0b0ltcGwoYWN0aW9uKS0+c3RyaW5nKCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRvSW1wbCh0eXBlKS0+c3RyaW5nKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPyBzdGF0aWNfY2FzdDxT
ZXJpYWxpemVkU2NyaXB0VmFsdWUqPih0b0ltcGwoZGF0YSktPmludGVybmFsUmVwcmVzZW50YXRp
b24oKSkgOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkdW1teVBvcnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlYyk7CisKKyAgICByZXR1cm4gdG9BUEkoSW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OmNyZWF0
ZShjb3JlSW50ZW50LmdldCgpKS5sZWFrUmVmKCkpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNl
bmRpZgorfQorCitXS1N0cmluZ1JlZiBXS0J1bmRsZUludGVudENvcHlBY3Rpb24oV0tCdW5kbGVJ
bnRlbnRSZWYgaW50ZW50UmVmKQoreworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICByZXR1
cm4gdG9Db3BpZWRBUEkodG9JbXBsKGludGVudFJlZiktPmFjdGlvbigpKTsKKyNlbHNlCisgICAg
cmV0dXJuIDA7CisjZW5kaWYKK30KKworV0tTdHJpbmdSZWYgV0tCdW5kbGVJbnRlbnRDb3B5VHlw
ZShXS0J1bmRsZUludGVudFJlZiBpbnRlbnRSZWYpCit7CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRT
KQorICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwoaW50ZW50UmVmKS0+cGF5bG9hZFR5cGUo
KSk7CisjZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCit9CisKK1dLVVJMUmVmIFdLQnVuZGxl
SW50ZW50Q29weVNlcnZpY2UoV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmKQoreworI2lmIEVO
QUJMRShXRUJfSU5URU5UUykKKyAgICByZXR1cm4gdG9Db3BpZWRVUkxBUEkodG9JbXBsKGludGVu
dFJlZiktPnNlcnZpY2UoKSk7CisjZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCit9CisKK1dL
QXJyYXlSZWYgV0tCdW5kbGVJbnRlbnRDb3B5U3VnZ2VzdGlvbnMoV0tCdW5kbGVJbnRlbnRSZWYg
aW50ZW50UmVmKQoreworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICByZXR1cm4gdG9BUEko
dG9JbXBsKGludGVudFJlZiktPnN1Z2dlc3Rpb25zKCkubGVha1JlZigpKTsKKyNlbHNlCisgICAg
cmV0dXJuIDA7CisjZW5kaWYKK30KKworV0tTdHJpbmdSZWYgV0tCdW5kbGVJbnRlbnRDb3B5RXh0
cmFWYWx1ZShXS0J1bmRsZUludGVudFJlZiBpbnRlbnRSZWYsIFdLU3RyaW5nUmVmIGtleSkKK3sK
KyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChp
bnRlbnRSZWYpLT5leHRyYSh0b1dURlN0cmluZyhrZXkpKSk7CisjZWxzZQorICAgIHJldHVybiAw
OworI2VuZGlmCit9CisKK1dLRGljdGlvbmFyeVJlZiBXS0J1bmRsZUludGVudENvcHlFeHRyYXMo
V0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmKQoreworI2lmIEVOQUJMRShXRUJfSU5URU5UUykK
KyAgICByZXR1cm4gdG9BUEkodG9JbXBsKGludGVudFJlZiktPmV4dHJhcygpLmxlYWtSZWYoKSk7
CisjZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCit9CisKK3NpemVfdCBXS0J1bmRsZUludGVu
dE1lc3NhZ2VQb3J0Q291bnQoV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmKQoreworI2lmIEVO
QUJMRShXRUJfSU5URU5UUykKKyAgICBNZXNzYWdlUG9ydENoYW5uZWxBcnJheSogbWVzc2FnZVBv
cnRzID0gdG9JbXBsKGludGVudFJlZiktPmNvcmVJbnRlbnQoKS0+bWVzc2FnZVBvcnRzKCk7CisK
KyAgICByZXR1cm4gbWVzc2FnZVBvcnRzID8gbWVzc2FnZVBvcnRzLT5zaXplKCkgOiAwOworI2Vs
c2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudC5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwM2ZlMDIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlSW50ZW50LmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBXS0J1bmRsZUludGVudF9oCisjZGVmaW5lIFdLQnVuZGxlSW50ZW50X2gKKworI2luY2x1
ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7
CisjZW5kaWYKKworV0tfRVhQT1JUIFdLVHlwZUlEIFdLQnVuZGxlSW50ZW50R2V0VHlwZUlEKCk7
CisKK1dLX0VYUE9SVCBXS0J1bmRsZUludGVudFJlZiBXS0J1bmRsZUludGVudENyZWF0ZShXS0Rp
Y3Rpb25hcnlSZWYgZGljdGlvbmFyeVJlZik7CisKK1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0J1
bmRsZUludGVudENvcHlBY3Rpb24oV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmKTsKK1dLX0VY
UE9SVCBXS1N0cmluZ1JlZiBXS0J1bmRsZUludGVudENvcHlUeXBlKFdLQnVuZGxlSW50ZW50UmVm
IGludGVudFJlZik7CitXS19FWFBPUlQgV0tVUkxSZWYgV0tCdW5kbGVJbnRlbnRDb3B5U2Vydmlj
ZShXS0J1bmRsZUludGVudFJlZiBpbnRlbnRSZWYpOworV0tfRVhQT1JUIFdLQXJyYXlSZWYgV0tC
dW5kbGVJbnRlbnRDb3B5U3VnZ2VzdGlvbnMoV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmKTsK
K1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0J1bmRsZUludGVudENvcHlFeHRyYVZhbHVlKFdLQnVu
ZGxlSW50ZW50UmVmIGludGVudFJlZiwgV0tTdHJpbmdSZWYga2V5KTsKK1dLX0VYUE9SVCBXS0Rp
Y3Rpb25hcnlSZWYgV0tCdW5kbGVJbnRlbnRDb3B5RXh0cmFzKFdLQnVuZGxlSW50ZW50UmVmIGlu
dGVudFJlZik7CitXS19FWFBPUlQgc2l6ZV90IFdLQnVuZGxlSW50ZW50TWVzc2FnZVBvcnRDb3Vu
dChXS0J1bmRsZUludGVudFJlZiBpbnRlbnRSZWYpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30K
KyNlbmRpZgorCisjZW5kaWYgLy8gV0tCdW5kbGVJbnRlbnRfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudFJl
cXVlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZUludGVudFJlcXVlc3QuY3BwCmluZGV4IDgxYzk1YzYuLmE0NzcyZWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVJbnRlbnRSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50UmVxdWVzdC5jcHAKQEAgLTI3LDEwICsy
NywxMCBAQAogI2luY2x1ZGUgIldLQnVuZGxlSW50ZW50UmVxdWVzdC5oIgogCiAjaWYgRU5BQkxF
KFdFQl9JTlRFTlRTKQorI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlSW50ZW50LmgiCiAjaW5jbHVk
ZSAiSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0Lmgi
CiAjaW5jbHVkZSAiV0tCdW5kbGVBUElDYXN0LmgiCi0jaW5jbHVkZSAiV2ViSW50ZW50RGF0YS5o
IgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogI2VuZGlmCkBAIC00NCwxMSArNDQsMTEgQEAg
V0tUeXBlSUQgV0tCdW5kbGVJbnRlbnRSZXF1ZXN0R2V0VHlwZUlEKCkKICNlbmRpZgogfQogCi1X
S0ludGVudERhdGFSZWYgV0tCdW5kbGVJbnRlbnRSZXF1ZXN0Q29weUludGVudERhdGEoV0tCdW5k
bGVJbnRlbnRSZXF1ZXN0UmVmIHJlcXVlc3RSZWYpCitXS0J1bmRsZUludGVudFJlZiBXS0J1bmRs
ZUludGVudFJlcXVlc3RDb3B5SW50ZW50KFdLQnVuZGxlSW50ZW50UmVxdWVzdFJlZiByZXF1ZXN0
UmVmKQogewogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSAgICBSZWZQdHI8V2ViSW50ZW50RGF0
YT4gd2ViSW50ZW50RGF0YSA9IHRvSW1wbChyZXF1ZXN0UmVmKS0+aW50ZW50KCk7Ci0gICAgcmV0
dXJuIHRvQVBJKHdlYkludGVudERhdGEucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgUmVmUHRy
PEluamVjdGVkQnVuZGxlSW50ZW50PiB3ZWJJbnRlbnQgPSB0b0ltcGwocmVxdWVzdFJlZiktPmlu
dGVudCgpOworICAgIHJldHVybiB0b0FQSSh3ZWJJbnRlbnQucmVsZWFzZSgpLmxlYWtSZWYoKSk7
CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50UmVxdWVzdC5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZUludGVudFJlcXVlc3QuaAppbmRleCBiMTgxMzZkLi4xMDVhZmE0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50
UmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVJbnRlbnRSZXF1ZXN0LmgKQEAgLTM0LDcgKzM0LDcgQEAgZXh0ZXJuICJD
IiB7CiAKIFdLX0VYUE9SVCBXS1R5cGVJRCBXS0J1bmRsZUludGVudFJlcXVlc3RHZXRUeXBlSUQo
KTsKIAotV0tfRVhQT1JUIFdLSW50ZW50RGF0YVJlZiBXS0J1bmRsZUludGVudFJlcXVlc3RDb3B5
SW50ZW50RGF0YShXS0J1bmRsZUludGVudFJlcXVlc3RSZWYgcmVxdWVzdCk7CitXS19FWFBPUlQg
V0tCdW5kbGVJbnRlbnRSZWYgV0tCdW5kbGVJbnRlbnRSZXF1ZXN0Q29weUludGVudChXS0J1bmRs
ZUludGVudFJlcXVlc3RSZWYgcmVxdWVzdCk7CiAKIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlSW50
ZW50UmVxdWVzdFBvc3RSZXN1bHQoV0tCdW5kbGVJbnRlbnRSZXF1ZXN0UmVmIHJlcXVlc3QsIFdL
U2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmIHNlcmlhbGl6ZWREYXRhKTsKIFdLX0VYUE9SVCB2b2lk
IFdLQnVuZGxlSW50ZW50UmVxdWVzdFBvc3RGYWlsdXJlKFdLQnVuZGxlSW50ZW50UmVxdWVzdFJl
ZiByZXF1ZXN0LCBXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiBzZXJpYWxpemVkRGF0YSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKaW5kZXggMWY0M2ExMi4uYmY0NjNjZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZVBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcApAQCAtNDcsNyArNDcsNyBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvUGFnZS5oPgogCiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotI2luY2x1ZGUgIldlYklu
dGVudERhdGEuaCIKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZUludGVudC5oIgogI2VuZGlmCiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CkBAIC0zMTYsMTAgKzMxNiwxMCBAQCBkb3VibGUgV0tC
dW5kbGVQYWdlR2V0QmFja2luZ1NjYWxlRmFjdG9yKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmKQog
ICAgIHJldHVybiB0b0ltcGwocGFnZVJlZiktPmRldmljZVNjYWxlRmFjdG9yKCk7CiB9CiAKLXZv
aWQgV0tCdW5kbGVQYWdlRGVsaXZlckludGVudFRvRnJhbWUoV0tCdW5kbGVQYWdlUmVmIHBhZ2VS
ZWYsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYsIFdLSW50ZW50RGF0YVJlZiBpbnRlbnRSZWYp
Cit2b2lkIFdLQnVuZGxlUGFnZURlbGl2ZXJJbnRlbnRUb0ZyYW1lKFdLQnVuZGxlUGFnZVJlZiBw
YWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVmLCBXS0J1bmRsZUludGVudFJlZiBpbnRl
bnRSZWYpCiB7CiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotICAgIHRvSW1wbChwYWdlUmVmKS0+
ZGVsaXZlckludGVudFRvRnJhbWUodG9JbXBsKGZyYW1lUmVmKS0+ZnJhbWVJRCgpLCB0b0ltcGwo
aW50ZW50UmVmKS0+c3RvcmUoKSk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5kZWxpdmVyQ29yZUlu
dGVudFRvRnJhbWUodG9JbXBsKGZyYW1lUmVmKS0+ZnJhbWVJRCgpLCB0b0ltcGwoaW50ZW50UmVm
KS0+Y29yZUludGVudCgpKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaApp
bmRleCAyOGVlZTVjLi44YmM3NjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgKQEAgLTQx
MCw3ICs0MTAsNyBAQCBXS19FWFBPUlQgV0tJbWFnZVJlZiBXS0J1bmRsZVBhZ2VDcmVhdGVTY2Fs
ZWRTbmFwc2hvdEluRG9jdW1lbnRDb29yZGluYXRlcyhXS0J1bgogCiBXS19FWFBPUlQgZG91Ymxl
IFdLQnVuZGxlUGFnZUdldEJhY2tpbmdTY2FsZUZhY3RvcihXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7
CiAKLVdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZURlbGl2ZXJJbnRlbnRUb0ZyYW1lKFdLQnVu
ZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBXS0ludGVudERhdGFSZWYg
aW50ZW50KTsKK1dLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZURlbGl2ZXJJbnRlbnRUb0ZyYW1l
KFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBXS0J1bmRsZUlu
dGVudFJlZiBpbnRlbnQpOwogCiAjaWYgZGVmaW5lZChFTkFCTEVfSU5TUEVDVE9SKSAmJiBFTkFC
TEVfSU5TUEVDVE9SCiBXS19FWFBPUlQgV0tCdW5kbGVJbnNwZWN0b3JSZWYgV0tCdW5kbGVQYWdl
R2V0SW5zcGVjdG9yKFdLQnVuZGxlUGFnZVJlZiBwYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnQuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZUludGVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTJkZTYxYwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnQuY3BwCkBAIC0wLDAgKzEsMTAwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVJ
bnRlbnQuaCIKKworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKworI2luY2x1ZGUgIkltbXV0YWJs
ZUFycmF5LmgiCisjaW5jbHVkZSAiSW1tdXRhYmxlRGljdGlvbmFyeS5oIgorI2luY2x1ZGUgIldl
YlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIldlYlN0cmluZy5oIgorI2luY2x1
ZGUgIldlYlVSTC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK1Bhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVJbnRlbnQ+IEluamVjdGVkQnVuZGxl
SW50ZW50OjpjcmVhdGUoV2ViQ29yZTo6SW50ZW50KiBpbnRlbnQpCit7CisgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBJbmplY3RlZEJ1bmRsZUludGVudChpbnRlbnQpKTsKK30KKworSW5qZWN0ZWRC
dW5kbGVJbnRlbnQ6OkluamVjdGVkQnVuZGxlSW50ZW50KFdlYkNvcmU6OkludGVudCogaW50ZW50
KQorICAgIDogbV9pbnRlbnQoaW50ZW50KQoreworfQorCitTdHJpbmcgSW5qZWN0ZWRCdW5kbGVJ
bnRlbnQ6OmFjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW50ZW50LT5hY3Rpb24oKTsK
K30KKworU3RyaW5nIEluamVjdGVkQnVuZGxlSW50ZW50OjpwYXlsb2FkVHlwZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1faW50ZW50LT50eXBlKCk7Cit9CisKK1dlYkNvcmU6OktVUkwgSW5qZWN0
ZWRCdW5kbGVJbnRlbnQ6OnNlcnZpY2UoKSBjb25zdAoreworICAgIHJldHVybiBtX2ludGVudC0+
c2VydmljZSgpOworfQorCitQYXNzUmVmUHRyPFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gSW5q
ZWN0ZWRCdW5kbGVJbnRlbnQ6OmRhdGEoKSBjb25zdAoreworICAgIHJldHVybiBXZWJTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmNyZWF0ZShtX2ludGVudC0+ZGF0YSgpKTsKK30KKworU3RyaW5nIElu
amVjdGVkQnVuZGxlSW50ZW50OjpleHRyYShjb25zdCBTdHJpbmcmIGtleSkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9pbnRlbnQtPmV4dHJhcygpLmdldChrZXkpOworfQorCitQYXNzUmVmUHRyPElt
bXV0YWJsZURpY3Rpb25hcnk+IEluamVjdGVkQnVuZGxlSW50ZW50OjpleHRyYXMoKSBjb25zdAor
eworICAgIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBleHRyYXMgPSBtX2ludGVudC0+
ZXh0cmFzKCk7CisgICAgSW1tdXRhYmxlRGljdGlvbmFyeTo6TWFwVHlwZSB3a0V4dHJhczsKKyAg
ICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gZXh0cmFzLmVu
ZCgpOworICAgIGZvciAoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gZXh0cmFzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgd2tFeHRyYXMuc2V0
KGl0LT5maXJzdCwgV2ViU3RyaW5nOjpjcmVhdGUoaXQtPnNlY29uZCkpOworCisgICAgcmV0dXJu
IEltbXV0YWJsZURpY3Rpb25hcnk6OmFkb3B0KHdrRXh0cmFzKTsKK30KKworUGFzc1JlZlB0cjxJ
bW11dGFibGVBcnJheT4gSW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OnN1Z2dlc3Rpb25zKCkgY29uc3QK
K3sKKyAgICBjb25zdCBWZWN0b3I8S1VSTD4mIHN1Z2dlc3Rpb25zID0gbV9pbnRlbnQtPnN1Z2dl
c3Rpb25zKCk7CisgICAgY29uc3Qgc2l6ZV90IG51bVN1Z2dlc3Rpb25zID0gc3VnZ2VzdGlvbnMu
c2l6ZSgpOworICAgIFZlY3RvcjxSZWZQdHI8QVBJT2JqZWN0PiA+IHdrU3VnZ2VzdGlvbnMobnVt
U3VnZ2VzdGlvbnMpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1TdWdnZXN0aW9u
czsgKytpKQorICAgICAgICB3a1N1Z2dlc3Rpb25zW2ldID0gV2ViVVJMOjpjcmVhdGUoc3VnZ2Vz
dGlvbnNbaV0pOworCisgICAgcmV0dXJuIEltbXV0YWJsZUFycmF5OjphZG9wdCh3a1N1Z2dlc3Rp
b25zKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VC
X0lOVEVOVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uNWQzZjA2YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnQuaApAQCAt
MCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9u
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEluamVjdGVkQnVuZGxl
SW50ZW50X2gKKyNkZWZpbmUgSW5qZWN0ZWRCdW5kbGVJbnRlbnRfaAorCisjaWYgRU5BQkxFKFdF
Ql9JTlRFTlRTKQorCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9J
bnRlbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgSW1tdXRhYmxlQXJyYXk7CitjbGFzcyBJ
bW11dGFibGVEaWN0aW9uYXJ5OworY2xhc3MgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlOworCitj
bGFzcyBJbmplY3RlZEJ1bmRsZUludGVudCA6IHB1YmxpYyBBUElPYmplY3QgeworcHVibGljOgor
ICAgIHN0YXRpYyBjb25zdCBUeXBlIEFQSVR5cGUgPSBUeXBlQnVuZGxlSW50ZW50OworCisgICAg
c3RhdGljIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVJbnRlbnQ+IGNyZWF0ZShXZWJDb3JlOjpJ
bnRlbnQqKTsKKworICAgIFN0cmluZyBhY3Rpb24oKSBjb25zdDsKKyAgICBTdHJpbmcgcGF5bG9h
ZFR5cGUoKSBjb25zdDsKKyAgICBXZWJDb3JlOjpLVVJMIHNlcnZpY2UoKSBjb25zdDsKKyAgICBQ
YXNzUmVmUHRyPFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSgpIGNvbnN0OworICAgIFN0
cmluZyBleHRyYShjb25zdCBTdHJpbmcmIGtleSkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxJbW11
dGFibGVEaWN0aW9uYXJ5PiBleHRyYXMoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEltbXV0YWJs
ZUFycmF5PiBzdWdnZXN0aW9ucygpIGNvbnN0OworCisgICAgV2ViQ29yZTo6SW50ZW50KiBjb3Jl
SW50ZW50KCkgY29uc3QgeyByZXR1cm4gbV9pbnRlbnQuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAg
ICBleHBsaWNpdCBJbmplY3RlZEJ1bmRsZUludGVudChXZWJDb3JlOjpJbnRlbnQqKTsKKworICAg
IHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQVBJVHlwZTsgfQorCisgICAgUmVm
UHRyPFdlYkNvcmU6OkludGVudD4gbV9pbnRlbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfSU5URU5UUykKKworI2VuZGlmIC8vIEluamVjdGVk
QnVuZGxlSW50ZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0
LmNwcAppbmRleCA1Y2NiMTljLi5lYWMwYjgzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVJbnRlbnRSZXF1ZXN0LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkluamVj
dGVkQnVuZGxlSW50ZW50UmVxdWVzdC5oIgogCiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorI2lu
Y2x1ZGUgIkluamVjdGVkQnVuZGxlSW50ZW50LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRlbnRS
ZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg+CiAKQEAgLTU0
LDkgKzU1LDkgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3Q6OnBvc3RGYWlsdXJl
KFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogZGF0YSkKICAgICBtX2ludGVudFJlcXVlc3QtPnBv
c3RGYWlsdXJlKHN0YXRpY19jYXN0PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSo+KGRhdGEtPmludGVy
bmFsUmVwcmVzZW50YXRpb24oKSkpOwogfQogCi1QYXNzUmVmUHRyPFdlYkludGVudERhdGE+IElu
amVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdDo6aW50ZW50KCkgY29uc3QKK1Bhc3NSZWZQdHI8SW5q
ZWN0ZWRCdW5kbGVJbnRlbnQ+IEluamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdDo6aW50ZW50KCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gV2ViSW50ZW50RGF0YTo6Y3JlYXRlKEludGVudERhdGEobV9p
bnRlbnRSZXF1ZXN0LT5pbnRlbnQoKSkpOworICAgIHJldHVybiBJbmplY3RlZEJ1bmRsZUludGVu
dDo6Y3JlYXRlKG1faW50ZW50UmVxdWVzdC0+aW50ZW50KCkpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5oCmluZGV4
IGI1ODcwZDkuLjMzYTMxOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0LmgKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudFJl
cXVlc3QuaApAQCAtMjksNyArMjksNiBAQAogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKIAogI2lu
Y2x1ZGUgIkFQSU9iamVjdC5oIgotI2luY2x1ZGUgIldlYkludGVudERhdGEuaCIKICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgpAQCAtNDAsNiArMzksNyBAQCBjbGFzcyBJbnRlbnRSZXF1ZXN0OwogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgSW5qZWN0ZWRCdW5kbGVJbnRlbnQ7CiBjbGFzcyBX
ZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU7CiAKIGNsYXNzIEluamVjdGVkQnVuZGxlSW50ZW50UmVx
dWVzdCA6IHB1YmxpYyBBUElPYmplY3QgewpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBwb3N0UmVzdWx0KFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSopOwogICAgIHZvaWQgcG9z
dEZhaWx1cmUoV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlKik7CiAKLSAgICBQYXNzUmVmUHRyPFdl
YkludGVudERhdGE+IGludGVudCgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5k
bGVJbnRlbnQ+IGludGVudCgpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEluamVj
dGVkQnVuZGxlSW50ZW50UmVxdWVzdChXZWJDb3JlOjpJbnRlbnRSZXF1ZXN0Kik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCAxOTI0M2Jl
Li4wMGZkNTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJG
cmFtZS5jcHAKQEAgLTYzLDYgKzYzLDggQEAKICNpbmNsdWRlICJJbnRlbnREYXRhLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9ET01XaW5kb3dJbnRlbnRzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EZWxp
dmVyZWRJbnRlbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ludGVudC5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuaD4KICNlbmRpZgogCiAjaWYgUExBVEZP
Uk0oTUFDKSB8fCBQTEFURk9STShXSU4pCkBAIC0yNDYsMTMgKzI0OCwzOSBAQCB2b2lkIFdlYkZy
YW1lOjpjb252ZXJ0SGFuZGxlVG9Eb3dubG9hZChSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25z
dCBSZXNvdXJjZVJlcQogdm9pZCBXZWJGcmFtZTo6ZGVsaXZlckludGVudChjb25zdCBJbnRlbnRE
YXRhJiBpbnRlbnREYXRhKQogewogICAgIE93blB0cjxEZWxpdmVyZWRJbnRlbnRDbGllbnQ+IGR1
bW15Q2xpZW50OwotICAgIE93blB0cjxNZXNzYWdlUG9ydEFycmF5PiBkdW1teVBvcnRzOwogICAg
IFZlY3Rvcjx1aW50OF90PiBkYXRhQ29weSA9IGludGVudERhdGEuZGF0YTsKKworICAgIE93blB0
cjxXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHM7CisgICAgaWYgKCFp
bnRlbnREYXRhLm1lc3NhZ2VQb3J0cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgY2hhbm5lbHMgPSBh
ZG9wdFB0cihuZXcgV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsQXJyYXkoaW50ZW50RGF0YS5t
ZXNzYWdlUG9ydHMuc2l6ZSgpKSk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW50
ZW50RGF0YS5tZXNzYWdlUG9ydHMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICAoKmNoYW5uZWxz
KVtpXSA9IE1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlKFdlYlByb2Nlc3M6OnNoYXJlZCgpLm1l
c3NhZ2VQb3J0Q2hhbm5lbChpbnRlbnREYXRhLm1lc3NhZ2VQb3J0cy5hdChpKSkpOworICAgIH0K
KyAgICBPd25QdHI8V2ViQ29yZTo6TWVzc2FnZVBvcnRBcnJheT4gbWVzc2FnZVBvcnRzID0gV2Vi
Q29yZTo6TWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoKm1fY29yZUZyYW1lLT5kb21XaW5kb3co
KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBjaGFubmVscy5yZWxlYXNlKCkpOworCiAgICAg
UmVmUHRyPERlbGl2ZXJlZEludGVudD4gZGVsaXZlcmVkSW50ZW50ID0gRGVsaXZlcmVkSW50ZW50
OjpjcmVhdGUobV9jb3JlRnJhbWUsIGR1bW15Q2xpZW50LnJlbGVhc2UoKSwgaW50ZW50RGF0YS5h
Y3Rpb24sIGludGVudERhdGEudHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OmFkb3B0KGRhdGFDb3B5KSwgZHVtbXlQb3J0cy5yZWxlYXNlKCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjphZG9wdChkYXRhQ29weSksIG1lc3NhZ2VQb3J0cy5yZWxl
YXNlKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50ZW50RGF0YS5leHRyYXMpOwogICAgIFdlYkNvcmU6OkRP
TVdpbmRvd0ludGVudHM6OmZyb20obV9jb3JlRnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygp
KS0+ZGVsaXZlcihkZWxpdmVyZWRJbnRlbnQucmVsZWFzZSgpKTsKIH0KKwordm9pZCBXZWJGcmFt
ZTo6ZGVsaXZlckludGVudChXZWJDb3JlOjpJbnRlbnQqIGludGVudCkKK3sKKyAgICBPd25QdHI8
RGVsaXZlcmVkSW50ZW50Q2xpZW50PiBkdW1teUNsaWVudDsKKworICAgIE93blB0cjxXZWJDb3Jl
OjpNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHM7CisgICAgV2ViQ29yZTo6TWVzc2Fn
ZVBvcnRDaGFubmVsQXJyYXkqIG9yaWdDaGFubmVscyA9IGludGVudC0+bWVzc2FnZVBvcnRzKCk7
CisgICAgaWYgKG9yaWdDaGFubmVscyAmJiBvcmlnQ2hhbm5lbHMtPnNpemUoKSkgeworICAgICAg
ICBjaGFubmVscyA9IGFkb3B0UHRyKG5ldyBXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxBcnJh
eShvcmlnQ2hhbm5lbHMtPnNpemUoKSkpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG9yaWdDaGFubmVscy0+c2l6ZSgpOyArK2kpCisgICAgICAgICAgICAoKmNoYW5uZWxzKVtpXSA9
IG9yaWdDaGFubmVscy0+YXQoaSkucmVsZWFzZSgpOworICAgIH0KKyAgICBPd25QdHI8V2ViQ29y
ZTo6TWVzc2FnZVBvcnRBcnJheT4gbWVzc2FnZVBvcnRzID0gV2ViQ29yZTo6TWVzc2FnZVBvcnQ6
OmVudGFuZ2xlUG9ydHMoKm1fY29yZUZyYW1lLT5kb21XaW5kb3coKS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLCBjaGFubmVscy5yZWxlYXNlKCkpOworCisgICAgUmVmUHRyPERlbGl2ZXJlZElu
dGVudD4gZGVsaXZlcmVkSW50ZW50ID0gRGVsaXZlcmVkSW50ZW50OjpjcmVhdGUobV9jb3JlRnJh
bWUsIGR1bW15Q2xpZW50LnJlbGVhc2UoKSwgaW50ZW50LT5hY3Rpb24oKSwgaW50ZW50LT50eXBl
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50ZW50LT5kYXRhKCksIG1lc3NhZ2VQb3J0cy5yZWxlYXNlKCks
IGludGVudC0+ZXh0cmFzKCkpOworICAgIFdlYkNvcmU6OkRPTVdpbmRvd0ludGVudHM6OmZyb20o
bV9jb3JlRnJhbWUtPmRvbVdpbmRvdygpKS0+ZGVsaXZlcihkZWxpdmVyZWRJbnRlbnQucmVsZWFz
ZSgpKTsKK30KICNlbmRpZgogCiBTdHJpbmcgV2ViRnJhbWU6OnNvdXJjZSgpIGNvbnN0IApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmggYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAppbmRleCBiZDZjMDM4
Li5lZWEwOWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuaApAQCAtNDIsNiArNDIsOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEZy
YW1lOwogICAgIGNsYXNzIEhUTUxGcmFtZU93bmVyRWxlbWVudDsKKyNpZiBFTkFCTEUoV0VCX0lO
VEVOVFMpCisgICAgY2xhc3MgSW50ZW50OworI2VuZGlmCiAgICAgY2xhc3MgS1VSTDsKIH0KIApA
QCAtODEsNiArODQsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCiAgICAg
dm9pZCBkZWxpdmVySW50ZW50KGNvbnN0IEludGVudERhdGEmKTsKKyAgICB2b2lkIGRlbGl2ZXJJ
bnRlbnQoV2ViQ29yZTo6SW50ZW50Kik7CiAjZW5kaWYKIAogICAgIFN0cmluZyBzb3VyY2UoKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApp
bmRleCA3OTg5YjI5Li5lYjE5MWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xNDAsNiArMTQwLDcgQEAKIAogI2lmIEVOQUJMRShXRUJf
SU5URU5UUykKICNpbmNsdWRlICJJbnRlbnREYXRhLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9JbnRl
bnQuaD4KICNlbmRpZgogCiAjaWYgRU5BQkxFKFZJQlJBVElPTikKQEAgLTE5NTksNiArMTk2MCwx
MiBAQCB2b2lkIFdlYlBhZ2U6OmRlbGl2ZXJJbnRlbnRUb0ZyYW1lKHVpbnQ2NF90IGZyYW1lSUQs
IGNvbnN0IEludGVudERhdGEmIGludGVudERhdAogCiAgICAgZnJhbWUtPmRlbGl2ZXJJbnRlbnQo
aW50ZW50RGF0YSk7CiB9CisKK3ZvaWQgV2ViUGFnZTo6ZGVsaXZlckNvcmVJbnRlbnRUb0ZyYW1l
KHVpbnQ2NF90IGZyYW1lSUQsIEludGVudCogY29yZUludGVudCkKK3sKKyAgICBpZiAoV2ViRnJh
bWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2hhcmVkKCkud2ViRnJhbWUoZnJhbWVJRCkpCisgICAg
ICAgIGZyYW1lLT5kZWxpdmVySW50ZW50KGNvcmVJbnRlbnQpOworfQogI2VuZGlmCiAKIHZvaWQg
V2ViUGFnZTo6cHJlZmVyZW5jZXNEaWRDaGFuZ2UoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYg
c3RvcmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRl
eCBiYmZhYmQwLi5lYzVhZjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKQEAgLTEwNiw2ICsxMDYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
Y2xhc3MgRnJhbWU7CiAgICAgY2xhc3MgRnJhbWVWaWV3OwogICAgIGNsYXNzIEhUTUxQbHVnSW5F
bGVtZW50OworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICBjbGFzcyBJbnRlbnQ7CisjZW5k
aWYKICAgICBjbGFzcyBLZXlib2FyZEV2ZW50OwogICAgIGNsYXNzIFBhZ2U7CiAgICAgY2xhc3Mg
UHJpbnRDb250ZXh0OwpAQCAtNDc2LDcgKzQ3OSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYg
RU5BQkxFKFdFQl9JTlRFTlRTKQotICAgIHZvaWQgZGVsaXZlckludGVudFRvRnJhbWUodWludDY0
X3QgZnJhbWVJRCwgY29uc3QgSW50ZW50RGF0YSYpOworICAgIHZvaWQgZGVsaXZlckNvcmVJbnRl
bnRUb0ZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OkludGVudCopOwogI2VuZGlmCiAK
ICAgICB2b2lkIHJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dChXZWJDb3JlOjpGcmFtZSosIGNvbnN0
IFN0cmluZyYpOwpAQCAtNjQxLDYgKzY0NCwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgY29udGV4
dE1lbnVIaWRkZW4oKSB7IG1faXNTaG93aW5nQ29udGV4dE1lbnUgPSBmYWxzZTsgfQogI2VuZGlm
CiAKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgdm9pZCBkZWxpdmVySW50ZW50VG9GcmFt
ZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBJbnRlbnREYXRhJik7CisjZW5kaWYKKwogICAgIHN0
YXRpYyB2b2lkIHNjcm9sbChXZWJDb3JlOjpQYWdlKiwgV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9u
LCBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eSk7CiAgICAgc3RhdGljIHZvaWQgbG9naWNhbFNj
cm9sbChXZWJDb3JlOjpQYWdlKiwgV2ViQ29yZTo6U2Nyb2xsTG9naWNhbERpcmVjdGlvbiwgV2Vi
Q29yZTo6U2Nyb2xsR3JhbnVsYXJpdHkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcAppbmRleCAzZTc1NmVjLi40ODBjZDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTgwLDYgKzgwLDEwIEBACiAjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmFuZG9tTnVtYmVyLmg+CiAKKyNpZiBFTkFCTEUo
V0VCX0lOVEVOVFMpCisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5l
bC5oPgorI2VuZGlmCisKICNpZiBFTkFCTEUoTkVUV09SS19JTkZPKQogI2luY2x1ZGUgIldlYk5l
dHdvcmtJbmZvTWFuYWdlck1lc3NhZ2VzLmgiCiAjZW5kaWYKQEAgLTc5MSw2ICs3OTUsMjYgQEAg
V2ViUGFnZUdyb3VwUHJveHkqIFdlYlByb2Nlc3M6OndlYlBhZ2VHcm91cChjb25zdCBXZWJQYWdl
R3JvdXBEYXRhJiBwYWdlR3JvdXBEYXQKICAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT5zZWNv
bmQuZ2V0KCk7CiB9CiAKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCit1aW50NjRfdCBXZWJQcm9j
ZXNzOjphZGRNZXNzYWdlUG9ydENoYW5uZWwoUGFzc1JlZlB0cjxQbGF0Zm9ybU1lc3NhZ2VQb3J0
Q2hhbm5lbD4gbWVzc2FnZVBvcnRDaGFubmVsKQoreworICAgIHN0YXRpYyB1aW50NjRfdCBjaGFu
bmVsSUQgPSAwOworICAgIG1fbWVzc2FnZVBvcnRDaGFubmVscy5hZGQoKytjaGFubmVsSUQsIG1l
c3NhZ2VQb3J0Q2hhbm5lbCk7CisKKyAgICByZXR1cm4gY2hhbm5lbElEOworfQorCitQbGF0Zm9y
bU1lc3NhZ2VQb3J0Q2hhbm5lbCogV2ViUHJvY2Vzczo6bWVzc2FnZVBvcnRDaGFubmVsKHVpbnQ2
NF90IGNoYW5uZWxJRCkKK3sKKyAgICByZXR1cm4gbV9tZXNzYWdlUG9ydENoYW5uZWxzLmdldChj
aGFubmVsSUQpLmdldCgpOworfQorCit2b2lkIFdlYlByb2Nlc3M6OnJlbW92ZU1lc3NhZ2VQb3J0
Q2hhbm5lbCh1aW50NjRfdCBjaGFubmVsSUQpCit7CisgICAgbV9tZXNzYWdlUG9ydENoYW5uZWxz
LnJlbW92ZShjaGFubmVsSUQpOworfQorI2VuZGlmCisKIHN0YXRpYyBib29sIGNhblBsdWdpbkhh
bmRsZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIFN0
cmluZyBwbHVnaW5QYXRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRl
eCAwZDAwNWE0Li5kM2RmMWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
aApAQCAtNzgsNiArNzgsOSBAQCBRVF9FTkRfTkFNRVNQQUNFCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgY2xhc3MgSW50U2l6ZTsKICAgICBjbGFzcyBQYWdlR3JvdXA7CisjaWYgRU5BQkxFKFdF
Ql9JTlRFTlRTKQorICAgIGNsYXNzIFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsOworI2VuZGlm
CiAgICAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogICAgIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7
CiB9CkBAIC0xMTIsNyArMTE1LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGNyZWF0ZVdlYlBhZ2Uo
dWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAgICAg
dm9pZCByZW1vdmVXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCk7CiAgICAgV2ViUGFnZSogZm9jdXNl
ZFdlYlBhZ2UoKSBjb25zdDsKLSAgICAKKworI2lmIEVOQUJMRShXRUJfSU5URU5UUykgCisgICAg
dWludDY0X3QgYWRkTWVzc2FnZVBvcnRDaGFubmVsKFBhc3NSZWZQdHI8V2ViQ29yZTo6UGxhdGZv
cm1NZXNzYWdlUG9ydENoYW5uZWw+KTsKKyAgICBXZWJDb3JlOjpQbGF0Zm9ybU1lc3NhZ2VQb3J0
Q2hhbm5lbCogbWVzc2FnZVBvcnRDaGFubmVsKHVpbnQ2NF90KTsKKyAgICB2b2lkIHJlbW92ZU1l
c3NhZ2VQb3J0Q2hhbm5lbCh1aW50NjRfdCk7CisjZW5kaWYKKwogICAgIEluamVjdGVkQnVuZGxl
KiBpbmplY3RlZEJ1bmRsZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5qZWN0ZWRCdW5kbGUuZ2V0KCk7
IH0KIAogICAgIGJvb2wgaXNTZXBhcmF0ZVByb2Nlc3MoKSBjb25zdDsKQEAgLTMwMCw2ICszMDks
MTAgQEAgcHJpdmF0ZToKIAogICAgIEhhc2hNYXA8dWludDY0X3QsIFdlYkZyYW1lKj4gbV9mcmFt
ZU1hcDsKIAorI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBS
ZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw+ID4gbV9tZXNzYWdlUG9y
dENoYW5uZWxzOworI2VuZGlmCisKICAgICBIYXNoU2V0PFN0cmluZywgQ2FzZUZvbGRpbmdIYXNo
PiBtX21pbWVUeXBlc1dpdGhDdXN0b21SZXByZXNlbnRhdGlvbnM7CiAKICAgICBUZXh0Q2hlY2tl
clN0YXRlIG1fdGV4dENoZWNrZXJTdGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAwZjgzZDViLi4yMjcxNmNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0y
Nyw2ICsyNywxMCBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIHsKICAgICAjIENyZWF0ZSBhIG5l
dyBwYWdlLgogICAgIENyZWF0ZVdlYlBhZ2UodWludDY0X3QgbmV3UGFnZUlELCBXZWJLaXQ6Oldl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgcGFnZUNyZWF0aW9uUGFyYW1ldGVycykKIAorI2lmIEVO
QUJMRShXRUJfSU5URU5UUykKKyAgICBSZW1vdmVNZXNzYWdlUG9ydENoYW5uZWwodWludDY0X3Qg
Y2hhbm5lbElEKTsKKyNlbmRpZgorCiAgICAgIyBWaXNpdGVkIGxpbmsgdHJhY2tpbmcuCiAgICAg
U2V0VmlzaXRlZExpbmtUYWJsZShXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZSkK
ICAgICBWaXNpdGVkTGlua1N0YXRlQ2hhbmdlZChWZWN0b3I8V2ViQ29yZTo6TGlua0hhc2g+IGxp
bmtIYXNoZXMpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggNDhjNGM2MC4uNzViODU1MCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTA4LTA0ICBDaHJpc3RvcGhl
IER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CisKKyAgICAgICAgW1dLMl0gQWRk
IHN1cHBvcnQgZm9yIFdlYiBJbnRlbnRzIE1lc3NhZ2VQb3J0cworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODkwNzIKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgV0tCdW5kbGVJbnRlbnQgaW5zdGVhZCBv
ZiBXZWJJbnRlbnREYXRhIGluCisgICAgICAgIFdlYktpdFRlc3RSdW5uZXIuIFdUUiBub3cgcHJp
bnRzIHRoZSBudW1iZXIgb2YKKyAgICAgICAgTWVzc2FnZVBvcnRzIGluIHJlY2VpdmVkIFdlYiBp
bnRlbnRzIGFzCisgICAgICAgIGV4cGVjdGVkIGJ5IHRoZSBmb2xsb3dpbmcgbGF5b3V0IHRlc3Rz
OgorICAgICAgICB3ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLWludm9rZS1wb3J0Lmh0bWwKKyAgICAg
ICAgd2ViaW50ZW50cy93ZWItaW50ZW50cy1vYmotY29uc3RydWN0b3IuaHRtbAorCisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3Bw
OgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZFJlY2VpdmVJbnRlbnRGb3JG
cmFtZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OkxheW91dFRlc3RDb250cm9sbGVyOjpk
ZWxpdmVyV2ViSW50ZW50KToKKwogMjAxMi0wOC0xNCAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBw
bGUuY29tPgogCiAgICAgICAgIGZhc3QvZXZlbnRzL292ZXJmbG93LXNjcm9sbC1mYWtlLW1vdXNl
LW1vdmUuaHRtbCBhbmQgZmFzdC9ldmVudHMvZnJhbWUtc2Nyb2xsLWZha2UtbW91c2UtbW92ZS5o
dG1sIGFyZSBmYWlsaW5nIGluIFdlYktpdDEKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcCBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAppbmRleCA2
ZTJmNTA4Li4zYmMwMzVjIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCkBAIC01MSw4ICs1MSw4
IEBACiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyNpbmNsdWRlIDxXZWJLaXQy
L1dLQnVuZGxlSW50ZW50Lmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZUludGVudFJlcXVl
c3QuaD4KLSNpbmNsdWRlIDxXZWJLaXQyL1dLSW50ZW50RGF0YS5oPgogI2VuZGlmCiAjaWYgRU5B
QkxFKFdFQl9JTlRFTlRTX1RBRykKICNpbmNsdWRlIDxXZWJLaXQyL1dLSW50ZW50U2VydmljZUlu
Zm8uaD4KQEAgLTU0OCwxOSArNTQ4LDI0IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRS
ZWNlaXZlSW50ZW50Rm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlCiB7CiAj
aWYgRU5BQkxFKFdFQl9JTlRFTlRTKQogICAgIHN0YXRpY19jYXN0PEluamVjdGVkQnVuZGxlUGFn
ZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+bV9jdXJyZW50SW50ZW50UmVxdWVz
dCA9IGludGVudFJlcXVlc3Q7Ci0gICAgV0tSZXRhaW5QdHI8V0tJbnRlbnREYXRhUmVmPiBpbnRl
bnQoQWRvcHRXSywgV0tCdW5kbGVJbnRlbnRSZXF1ZXN0Q29weUludGVudERhdGEoaW50ZW50UmVx
dWVzdCkpOworICAgIFdLUmV0YWluUHRyPFdLQnVuZGxlSW50ZW50UmVmPiBpbnRlbnQoQWRvcHRX
SywgV0tCdW5kbGVJbnRlbnRSZXF1ZXN0Q29weUludGVudChpbnRlbnRSZXF1ZXN0KSk7CiAKICAg
ICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoIlJlY2Vp
dmVkIFdlYiBJbnRlbnQ6IGFjdGlvbj0iKTsKLSAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4g
d2tBY3Rpb24oQWRvcHRXSywgV0tJbnRlbnREYXRhQ29weUFjdGlvbihpbnRlbnQuZ2V0KCkpKTsK
KyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tBY3Rpb24oQWRvcHRXSywgV0tCdW5kbGVJ
bnRlbnRDb3B5QWN0aW9uKGludGVudC5nZXQoKSkpOwogICAgIEluamVjdGVkQnVuZGxlOjpzaGFy
ZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCh0b1dURlN0cmluZyh3a0FjdGlvbi5nZXQoKSkp
OwogICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgi
IHR5cGU9Iik7Ci0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHdrVHlwZShBZG9wdFdLLCBX
S0ludGVudERhdGFDb3B5VHlwZShpbnRlbnQuZ2V0KCkpKTsKKyAgICBXS1JldGFpblB0cjxXS1N0
cmluZ1JlZj4gd2tUeXBlKEFkb3B0V0ssIFdLQnVuZGxlSW50ZW50Q29weVR5cGUoaW50ZW50Lmdl
dCgpKSk7CiAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBw
ZW5kKHRvV1RGU3RyaW5nKHdrVHlwZS5nZXQoKSkpOwogICAgIEluamVjdGVkQnVuZGxlOjpzaGFy
ZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiXG4iKTsKIAotICAgIC8vIEZJWE1FOiBQcmlu
dCBudW1iZXIgb2YgcG9ydHMgd2hlbiBleHBvc2VkIGluIFdlYktpdDIKKyAgICBjb25zdCBzaXpl
X3QgbnVtTWVzc2FnZVBvcnRzID0gV0tCdW5kbGVJbnRlbnRNZXNzYWdlUG9ydENvdW50KGludGVu
dC5nZXQoKSk7CisgICAgaWYgKG51bU1lc3NhZ2VQb3J0cykgeworICAgICAgICBJbmplY3RlZEJ1
bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoIkhhdmUgIik7CisgICAgICAg
IEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZChXVEY6OlN0
cmluZzo6bnVtYmVyKG51bU1lc3NhZ2VQb3J0cykpOworICAgICAgICBJbmplY3RlZEJ1bmRsZTo6
c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoIiBwb3J0c1xuIik7CisgICAgfQogCi0g
ICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IHdrU2VydmljZVVybChBZG9wdFdLLCBXS0ludGVudERh
dGFDb3B5U2VydmljZShpbnRlbnQuZ2V0KCkpKTsKKyAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4g
d2tTZXJ2aWNlVXJsKEFkb3B0V0ssIFdLQnVuZGxlSW50ZW50Q29weVNlcnZpY2UoaW50ZW50Lmdl
dCgpKSk7CiAgICAgaWYgKHdrU2VydmljZVVybCkgewogICAgICAgICBXS1JldGFpblB0cjxXS1N0
cmluZ1JlZj4gd2tTZXJ2aWNlKEFkb3B0V0ssIFdLVVJMQ29weVN0cmluZyh3a1NlcnZpY2VVcmwu
Z2V0KCkpKTsKICAgICAgICAgaWYgKHdrU2VydmljZSAmJiAhV0tTdHJpbmdJc0VtcHR5KHdrU2Vy
dmljZS5nZXQoKSkpIHsKQEAgLTU3MCw3ICs1NzUsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFn
ZTo6ZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRs
ZQogICAgICAgICB9CiAgICAgfQogCi0gICAgV0tSZXRhaW5QdHI8V0tEaWN0aW9uYXJ5UmVmPiB3
a0V4dHJhcyhBZG9wdFdLLCBXS0ludGVudERhdGFDb3B5RXh0cmFzKGludGVudC5nZXQoKSkpOwor
ICAgIFdLUmV0YWluUHRyPFdLRGljdGlvbmFyeVJlZj4gd2tFeHRyYXMoQWRvcHRXSywgV0tCdW5k
bGVJbnRlbnRDb3B5RXh0cmFzKGludGVudC5nZXQoKSkpOwogICAgIFdLUmV0YWluUHRyPFdLQXJy
YXlSZWY+IHdrRXh0cmFLZXlzKEFkb3B0V0ssIFdLRGljdGlvbmFyeUNvcHlLZXlzKHdrRXh0cmFz
LmdldCgpKSk7CiAgICAgY29uc3Qgc2l6ZV90IG51bUV4dHJhS2V5cyA9IFdLQXJyYXlHZXRTaXpl
KHdrRXh0cmFLZXlzLmdldCgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUV4dHJh
S2V5czsgKytpKSB7CkBAIC01ODMsNyArNTg4LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6
OmRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGUK
ICAgICAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5k
KCJcbiIpOwogICAgIH0KIAotICAgIFdLUmV0YWluUHRyPFdLQXJyYXlSZWY+IHdrU3VnZ2VzdGlv
bnMoQWRvcHRXSywgV0tJbnRlbnREYXRhQ29weVN1Z2dlc3Rpb25zKGludGVudC5nZXQoKSkpOwor
ICAgIFdLUmV0YWluUHRyPFdLQXJyYXlSZWY+IHdrU3VnZ2VzdGlvbnMoQWRvcHRXSywgV0tCdW5k
bGVJbnRlbnRDb3B5U3VnZ2VzdGlvbnMoaW50ZW50LmdldCgpKSk7CiAgICAgY29uc3Qgc2l6ZV90
IG51bVN1Z2dlc3Rpb25zID0gV0tBcnJheUdldFNpemUod2tTdWdnZXN0aW9ucy5nZXQoKSk7CiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1TdWdnZXN0aW9uczsgKytpKSB7CiAgICAgICAg
IFdLU3RyaW5nUmVmIHdrU3VnZ2VzdGlvbiA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0Fy
cmF5R2V0SXRlbUF0SW5kZXgod2tTdWdnZXN0aW9ucy5nZXQoKSwgaSkpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RD
b250cm9sbGVyLmNwcAppbmRleCA3ZDFmNzg0Li5iODY1YTg5IDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250
cm9sbGVyLmNwcApAQCAtNDksOCArNDksOCBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KIAogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyNpbmNsdWRlIDxXZWJLaXQyL1dL
QnVuZGxlSW50ZW50Lmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZUludGVudFJlcXVlc3Qu
aD4KLSNpbmNsdWRlIDxXZWJLaXQyL1dLSW50ZW50RGF0YS5oPgogI2VuZGlmCiAKIG5hbWVzcGFj
ZSBXVFIgewpAQCAtNjUyLDggKzY1Miw4IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmRl
bGl2ZXJXZWJJbnRlbnQoSlNTdHJpbmdSZWYgYWN0aW9uLCBKU1N0cmluZ1JlZiB0eXBlCiAgICAg
V0tEaWN0aW9uYXJ5QWRkSXRlbShpbnRlbnRJbml0RGljdC5nZXQoKSwgV0tTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoInR5cGUiKSwgdHlwZVdLLmdldCgpKTsKICAgICBXS0RpY3Rpb25hcnlB
ZGRJdGVtKGludGVudEluaXREaWN0LmdldCgpLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiZGF0YSIpLCBkYXRhV0suZ2V0KCkpOwogCi0gICAgV0tSZXRhaW5QdHI8V0tJbnRlbnREYXRh
UmVmPiB3a0ludGVudERhdGEoQWRvcHRXSywgV0tJbnRlbnREYXRhQ3JlYXRlKGludGVudEluaXRE
aWN0LmdldCgpKSk7Ci0gICAgV0tCdW5kbGVQYWdlRGVsaXZlckludGVudFRvRnJhbWUoSW5qZWN0
ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgpLCBtYWluRnJhbWUsIHdrSW50ZW50RGF0
YS5nZXQoKSk7CisgICAgV0tSZXRhaW5QdHI8V0tCdW5kbGVJbnRlbnRSZWY+IHdrSW50ZW50KEFk
b3B0V0ssIFdLQnVuZGxlSW50ZW50Q3JlYXRlKGludGVudEluaXREaWN0LmdldCgpKSk7CisgICAg
V0tCdW5kbGVQYWdlRGVsaXZlckludGVudFRvRnJhbWUoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgp
LnBhZ2UoKS0+cGFnZSgpLCBtYWluRnJhbWUsIHdrSW50ZW50LmdldCgpKTsKICNlbmRpZgogfQog
Cg==
</data>
<flag name="commit-queue"
          id="168632"
          type_id="3"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158502</attachid>
            <date>2012-08-14 22:15:43 -0700</date>
            <delta_ts>2012-08-15 05:07:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>89072_wk2_messagePorts.patch</filename>
            <type>text/plain</type>
            <size>60628</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzOWM4ZmE4Li5lZjEzMTg3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDgt
MTMgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKworICAg
ICAgICBbV0syXSBBZGQgc3VwcG9ydCBmb3IgV2ViIEludGVudHMgTWVzc2FnZVBvcnRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTA3MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVuc2tpcCB3ZWJpbnRl
bnRzL3dlYi1pbnRlbnRzLWludm9rZS1wb3J0Lmh0bWwgYW5kCisgICAgICAgIHdlYmludGVudHMv
d2ViLWludGVudHMtb2JqLWNvbnN0cnVjdG9yLmh0bWwgZm9yCisgICAgICAgIFdlYktpdDIgRUZM
IG5vdyB0aGF0IGluZm9ybWF0aW9uIGFib3V0IG1lc3NhZ2UgcG9ydHMKKyAgICAgICAgaXMgY29y
cmVjdGx5IGRpc3BsYXllZCBieSBXZWJLaXRUZXN0UnVubmVyLgorCisgICAgICAgICogcGxhdGZv
cm0vZWZsLXdrMi9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDEyLTA4LTEwICBLaW51a28gWWFzdWRh
ICA8a2ludWtvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBGaWxlV3JpdGVyIGZhaWxzIHdpdGgg
YXNzZXJ0aW9uIHdoZW4gdHJ5aW5nIHRvIHdyaXRlIGVtcHR5IEJsb2IKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2VmbC13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2VmbC13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA0N2QxM2RkLi5lOWE2MmZk
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwtd2syL1Rlc3RFeHBlY3RhdGlv
bnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsLXdrMi9UZXN0RXhwZWN0YXRpb25zCkBA
IC0yNzgsNyArMjc4LDMgQEAgQlVHV0tFRkwgOiBpbnNwZWN0b3IvZXh0ZW5zaW9ucy9leHRlbnNp
b25zLXBhbmVsLmh0bWwgPSBURVhUCiBCVUdXS0VGTCA6IGluc3BlY3Rvci9leHRlbnNpb25zL2V4
dGVuc2lvbnMtc2lkZWJhci5odG1sID0gVEVYVAogQlVHV0tFRkwgOiBqcXVlcnkvYXR0cmlidXRl
cy5odG1sID0gVEVYVAogCi0vLyBXVFIgZG9lcyBub3QgcHJpbnQgaW5mb3JtYXRpb24gYWJvdXQg
V2ViIEludGVudHMgTWVzc2FnZVBvcnRzCi1CVUdXSzg5MDcyIDogd2ViaW50ZW50cy93ZWItaW50
ZW50cy1pbnZva2UtcG9ydC5odG1sID0gVEVYVAotQlVHV0s4OTA3MiA6IHdlYmludGVudHMvd2Vi
LWludGVudHMtb2JqLWNvbnN0cnVjdG9yLmh0bWwgPSBURVhUCi0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQK
aW5kZXggYTY2YTU2Yy4uYzQzZGQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ01ha2VM
aXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKQEAgLTU2LDYgKzU2
LDcgQEAgU0VUKFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElS
fS9icmlkZ2UvanNjIgogICAgICIke1dFQkNPUkVfRElSfS9jc3MiCiAgICAgIiR7V0VCQ09SRV9E
SVJ9L2RvbSIKKyAgICAiJHtXRUJDT1JFX0RJUn0vZG9tL2RlZmF1bHQiCiAgICAgIiR7V0VCQ09S
RV9ESVJ9L2VkaXRpbmciCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2hpc3RvcnkiCiAgICAgIiR7V0VC
Q09SRV9ESVJ9L2h0bWwiCkBAIC0zODAsNiArMzgxLDcgQEAgU0VUKFdlYktpdDJfU09VUkNFUwog
ICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwCiAg
ICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVu
c2lvbi5jcHAKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0
VGVzdFJlc3VsdC5jcHAKKyAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlSW50ZW50LmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVJbnRlbnRSZXF1ZXN0LmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuY3BwCkBAIC00MDAs
NiArNDAyLDcgQEAgU0VUKFdlYktpdDJfU09VUkNFUwogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAKICAgICBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW5zcGVjdG9yLmNwcAorICAgIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnQuY3BwCiAgICAgV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudFJlcXVlc3QuY3BwCiAgICAgV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3BwCiAgICAg
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU5vZGVIYW5kbGUuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggOWEyZGYxZC4uMDQxMmNmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNCBA
QAorMjAxMi0wOC0wNCAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwu
Y29tPgorCisgICAgICAgIFtXSzJdIEFkZCBzdXBwb3J0IGZvciBXZWIgSW50ZW50cyBNZXNzYWdl
UG9ydHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5
MDcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
IHN1cHBvcnQgZm9yIFdlYkludGVudHMgTWVzc2FnZVBvcnRzIGluIFdlYktpdDIuCisgICAgICAg
IE1lc3NhZ2VQb3J0cyBjYW4gYmUgcGFzc2VkIHdpdGggYSBXZWIgSW50ZW50IGluCisgICAgICAg
IG9yZGVyIHRvIG9wZW4gYSBkaXJlY3QgY29tbXVuaWNhdGlvbiBjaGFubmVsCisgICAgICAgIGJl
dHdlZW4gdGhlIFdlYiBhcHBsaWNhdGlvbiBhbmQgdGhlIGludGVudCBzZXJ2aWNlLgorCisgICAg
ICAgIFRoaXMgZnVuY3Rpb25hbGl0eSBpcyBhbHJlYWR5IHN1cHBvcnRlZCBieSBXZWJLaXQgMS4K
KworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgSW5qZWN0ZWRCdW5kbGVJbnRl
bnQKKyAgICAgICAgY2xhc3Mgd2hpY2ggd3JhcHMgYSBXZWJDb3JlOjpJbnRlbnQuIFRoaXMgd2F5
CisgICAgICAgIGluZm9ybWF0aW9uIHJlZ2FyZGluZyB0aGUgTWVzc2FnZVBvcnRzIGluIGEgV2Vi
CisgICAgICAgIEludGVudCBpcyBrZXB0IHdoZW4gdXNpbmcgYW4gaW5qZWN0ZWQgYnVuZGxlLgor
CisgICAgICAgIEZvciB0aGUgVUlQcm9jZXNzLCBXZWJJbnRlbnREYXRhIG5vdyBjYXJyaWVzCisg
ICAgICAgIGlkZW50aWZpZXJzIGZvciB0aGUgTWVzc2FnZVBvcnRzIHdoaWNoIGNhbiBnbyBvdmVy
CisgICAgICAgIElQQy4gVGhvc2UgaWRlbnRpZmllcnMgbWFwIHRvIGFjdHVhbCBNZXNzYWdlUG9y
dHMKKyAgICAgICAgc3RvcmVkIGluIHRoZSBXZWIgcHJvY2Vzcy4gVGhpcyB3YXksIHdoZW4gdGhl
IFVJCisgICAgICAgIGRlbGl2ZXJzIGFuIGludGVudCB0byBhIGZyYW1lLCB3ZSBjYW4gZ2V0IGJh
Y2sgdGhlCisgICAgICAgIGNvcnJlc3BvbmRpbmcgTWVzc2FnZVBvcnRzIGZyb20gdGhlIFdlYiBw
cm9jZXNzCisgICAgICAgIGJlZm9yZSBkZWxpdmVyaW5nIHRoZSBpbnRlbnQgdG8gdGhlIERPTVdp
bmRvdy4KKworICAgICAgICBUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgYWxyZWFkeSB0ZXN0ZWQgYnk6
CisKKyAgICAgICAgLSB3ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLWludm9rZS1wb3J0Lmh0bWwKKyAg
ICAgICAgLSB3ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLW9iai1jb25zdHJ1Y3Rvci5odG1sCisKKyAg
ICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgor
ICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0Jhc2UuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJT2Jq
ZWN0Lmg6CisgICAgICAgICogU2hhcmVkL0ludGVudERhdGEuY3BwOiBBZGQgTWVzc2FnZVBvcnQg
aWRlbnRpZmllcnMuCisgICAgICAgIChXZWJLaXQ6OkludGVudERhdGE6OkludGVudERhdGEpOgor
ICAgICAgICAoV2ViS2l0OjpJbnRlbnREYXRhOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpJ
bnRlbnREYXRhOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9JbnRlbnREYXRhLmg6CisgICAg
ICAgIChJbnRlbnREYXRhKToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQy9XS0ludGVudERhdGEuY3BwOiBSZW5hbWUgV0tJbnRlbnREYXRhQ29weUV4dHJh
KCkgdG8KKyAgICAgICAgV0tJbnRlbnREYXRhQ29weUV4dHJhVmFsdWUoKSBmb3IgY2xhcml0eS4K
KyAgICAgICAgKFdLSW50ZW50RGF0YUNvcHlFeHRyYVZhbHVlKTogCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLSW50ZW50RGF0YS5oOiBSZW1vdmUgV0tJbnRlbnREYXRhQ3JlYXRlKCkgZnVu
Y3Rpb24gbm93CisgICAgICAgIHRoYXQgV1RSIHVzZXMgV0tCdW5kbGVJbnRlbnRDcmVhdGUoKSBp
bnN0ZWFkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19pbnRlbnQuY3BwOgorICAg
ICAgICAoZXdrX2ludGVudF9leHRyYV9nZXQpOiBVc2UgV0tJbnRlbnREYXRhQ29weUV4dHJhVmFs
dWUoKSBpbnN0ZWFkIG9mCisgICAgICAgIFdLSW50ZW50RGF0YUNvcHlFeHRyYSgpIHNpbmNlIGl0
IHdhcyByZW5hbWVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJJbnRlbnREYXRhLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViSW50ZW50RGF0YTo6V2ViSW50ZW50RGF0YSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkludGVudERhdGE6On5XZWJJbnRlbnREYXRhKTogUmVtb3ZlIE1lc3NhZ2VQb3J0
cyBmcm9tIFdlYlByb2Nlc3MgdXBvbgorICAgICAgICBXZWJJbnRlbnREYXRhIGRlc3RydWN0aW9u
LgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW50ZW50RGF0YTo6ZXh0
cmFzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViSW50ZW50RGF0YS5oOgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSW50ZW50RGF0YTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkludGVudERhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZSk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnJlbW92ZU1lc3NhZ2VQb3J0
Q2hhbm5lbCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAg
ICAoV2ViUHJvY2Vzc1Byb3h5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlQVBJQ2FzdC5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50LmNwcDogQ29waWVk
IGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLSW50ZW50RGF0YS5jcHAuCisg
ICAgICAgIChXS0J1bmRsZUludGVudEdldFR5cGVJRCk6CisgICAgICAgIChXS0J1bmRsZUludGVu
dENyZWF0ZSk6CisgICAgICAgIChXS0J1bmRsZUludGVudENvcHlBY3Rpb24pOgorICAgICAgICAo
V0tCdW5kbGVJbnRlbnRDb3B5VHlwZSk6CisgICAgICAgIChXS0J1bmRsZUludGVudENvcHlTZXJ2
aWNlKToKKyAgICAgICAgKFdLQnVuZGxlSW50ZW50Q29weVN1Z2dlc3Rpb25zKToKKyAgICAgICAg
KFdLQnVuZGxlSW50ZW50Q29weUV4dHJhVmFsdWUpOgorICAgICAgICAoV0tCdW5kbGVJbnRlbnRD
b3B5RXh0cmFzKToKKyAgICAgICAgKFdLQnVuZGxlSW50ZW50TWVzc2FnZVBvcnRDb3VudCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudC5o
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnRlbnREYXRh
LmguCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUlu
dGVudFJlcXVlc3QuY3BwOgorICAgICAgICAoV0tCdW5kbGVJbnRlbnRSZXF1ZXN0Q29weUludGVu
dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUlu
dGVudFJlcXVlc3QuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXS0J1bmRsZVBhZ2VEZWxpdmVySW50ZW50VG9G
cmFtZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZVBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlSW50ZW50LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYklu
dGVudERhdGEuY3BwLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0
ZWRCdW5kbGVJbnRlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxl
SW50ZW50OjpJbmplY3RlZEJ1bmRsZUludGVudCk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVk
QnVuZGxlSW50ZW50OjphY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZUlu
dGVudDo6cGF5bG9hZFR5cGUpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZUludGVu
dDo6c2VydmljZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlSW50ZW50OjpkYXRh
KToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OmV4dHJhKToKKyAgICAg
ICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OmV4dHJhcyk6CisgICAgICAgIChXZWJL
aXQ6OkluamVjdGVkQnVuZGxlSW50ZW50OjpzdWdnZXN0aW9ucyk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudC5oOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW50ZW50RGF0YS5oLgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKEluamVjdGVkQnVuZGxlSW50ZW50KToKKyAgICAgICAgKFdlYktpdDo6SW5q
ZWN0ZWRCdW5kbGVJbnRlbnQ6OmNvcmVJbnRlbnQpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3Rl
ZEJ1bmRsZUludGVudDo6dHlwZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmpl
Y3RlZEJ1bmRsZUludGVudFJlcXVlc3Q6OmludGVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuaDoKKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgIChJbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZy
YW1lOjpkZWxpdmVySW50ZW50KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkZyYW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkZWxpdmVyQ29yZUludGVu
dFRvRnJhbWUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYlBhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHA6IFN0b3JlIE1lc3NhZ2VQb3J0cyBpbiBXZWJQcm9jZXNzIGFuZCBrZWVw
IG1hcHBpbmcgd2l0aAorICAgICAgICB0aGVpciBpZGVudGlmaWVycy4KKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmFkZE1lc3NhZ2VQb3J0Q2hhbm5lbCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6Om1lc3NhZ2VQb3J0Q2hhbm5lbCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnJlbW92ZU1lc3NhZ2VQb3J0Q2hhbm5lbCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYlByb2Nlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbjoKKwogMjAxMi0wOC0xNCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAg
ICAgICAgIERlbGV0ZSBGcmFtZTo6ZG9tV2luZG93KCkgYW5kIEZyYW1lOjpleGlzdGluZ0RPTVdp
bmRvdygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtIGIv
U291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBkNzM3YmM3Li5kNDE3YjVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTk2MSw2ICs5NjEsOCBAQCB3ZWJr
aXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVJbml0aWFsaXplLmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnNwZWN0b3IuY3BwIFwKIAlTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW5zcGVjdG9y
LmggXAorCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVJbnRlbnQuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50LmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnRSZXF1ZXN0LmNwcCBcCiAJU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudFJl
cXVlc3QuaCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZU5vZGVIYW5kbGUuY3BwIFwKQEAgLTk5NSw2ICs5OTcsOCBAQCB3ZWJraXQyX3Nv
dXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uaCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3BwIFwKIAlT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0
VGVzdFJlc3VsdC5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlSW50ZW50LmNwcCBcCisJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudC5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5jcHAg
XAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVJbnRlbnRSZXF1ZXN0LmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJL2MvV0tCYXNlLmgKaW5kZXggNjg1NGVjYy4uYTZhOGJkNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUEkvYy9XS0Jhc2UuaApAQCAtMTM1LDYgKzEzNSw3IEBAIHR5cGVkZWYgY29uc3Qgc3Ry
dWN0IE9wYXF1ZVdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uKiBXS0J1bmRsZURPTVdpbmRvd0V4
dGVuc2lvCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRsZUZyYW1lKiBXS0J1bmRs
ZUZyYW1lUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVIaXRUZXN0UmVz
dWx0KiBXS0J1bmRsZUhpdFRlc3RSZXN1bHRSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFx
dWVXS0J1bmRsZUluc3BlY3RvciogV0tCdW5kbGVJbnNwZWN0b3JSZWY7Cit0eXBlZGVmIGNvbnN0
IHN0cnVjdCBPcGFxdWVXS0J1bmRsZUludGVudCogV0tCdW5kbGVJbnRlbnRSZWY7CiB0eXBlZGVm
IGNvbnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRsZUludGVudFJlcXVlc3QqIFdLQnVuZGxlSW50ZW50
UmVxdWVzdFJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQnVuZGxlTmF2aWdhdGlv
bkFjdGlvbiogV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1
Y3QgT3BhcXVlV0tCdW5kbGVOb2RlSGFuZGxlKiBXS0J1bmRsZU5vZGVIYW5kbGVSZWY7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJT2JqZWN0LmgKaW5kZXggOGU0ZDI5My4uNzA4ZWZmZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUElPYmplY3QuaApAQCAtMTE3LDYgKzExNyw3IEBAIHB1YmxpYzoKICAgICAgICAgVHlw
ZUJ1bmRsZUZyYW1lLAogICAgICAgICBUeXBlQnVuZGxlSGl0VGVzdFJlc3VsdCwKICAgICAgICAg
VHlwZUJ1bmRsZUluc3BlY3RvciwKKyAgICAgICAgVHlwZUJ1bmRsZUludGVudCwKICAgICAgICAg
VHlwZUJ1bmRsZUludGVudFJlcXVlc3QsCiAgICAgICAgIFR5cGVCdW5kbGVOYXZpZ2F0aW9uQWN0
aW9uLAogICAgICAgICBUeXBlQnVuZGxlTm9kZUhhbmRsZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9JbnRlbnREYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9JbnRl
bnREYXRhLmNwcAppbmRleCA0OTk1YjJlLi40MTA3ODc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvSW50ZW50RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0lu
dGVudERhdGEuY3BwCkBAIC0zMSw3ICszMSwxMCBAQAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgog
I2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRlbnQu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL01lc3NhZ2VQb3J0Q2hhbm5lbC5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKQEAgLTQ1LDYgKzQ4LDEyIEBAIEludGVudERhdGE6OkludGVudERhdGEoSW50ZW50
KiBjb3JlSW50ZW50KQogICAgICwgZXh0cmFzKGNvcmVJbnRlbnQtPmV4dHJhcygpKQogICAgICwg
c3VnZ2VzdGlvbnMoY29yZUludGVudC0+c3VnZ2VzdGlvbnMoKSkKIHsKKyAgICBNZXNzYWdlUG9y
dENoYW5uZWxBcnJheSogY29yZU1lc3NhZ2VQb3J0cyA9IGNvcmVJbnRlbnQtPm1lc3NhZ2VQb3J0
cygpOworICAgIGlmIChjb3JlTWVzc2FnZVBvcnRzKSB7CisgICAgICAgIHNpemVfdCBudW1NZXNz
YWdlUG9ydHMgPSBjb3JlTWVzc2FnZVBvcnRzLT5zaXplKCk7CisgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbnVtTWVzc2FnZVBvcnRzOyArK2kpCisgICAgICAgICAgICBtZXNzYWdlUG9y
dHMuYXBwZW5kKFdlYlByb2Nlc3M6OnNoYXJlZCgpLmFkZE1lc3NhZ2VQb3J0Q2hhbm5lbCgoKmNv
cmVNZXNzYWdlUG9ydHMpW2ldLT5jaGFubmVsKCkpKTsKKyAgICB9CiB9CiAKIHZvaWQgSW50ZW50
RGF0YTo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciogZW5jb2RlcikgY29uc3QKQEAg
LTU1LDYgKzY0LDcgQEAgdm9pZCBJbnRlbnREYXRhOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRF
bmNvZGVyKiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXItPmVuY29kZShDb3JlSVBDOjpEYXRh
UmVmZXJlbmNlKGRhdGEpKTsKICAgICBlbmNvZGVyLT5lbmNvZGUoZXh0cmFzKTsKICAgICBlbmNv
ZGVyLT5lbmNvZGUoc3VnZ2VzdGlvbnMpOworICAgIGVuY29kZXItPmVuY29kZShtZXNzYWdlUG9y
dHMpOwogfQogCiBib29sIEludGVudERhdGE6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29k
ZXIqIGRlY29kZXIsIEludGVudERhdGEmIGludGVudERhdGEpCkBAIC03Myw2ICs4Myw4IEBAIGJv
b2wgSW50ZW50RGF0YTo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2Rlciwg
SW50ZW50RGF0YSYgaW50ZW50RGF0CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRl
Y29kZXItPmRlY29kZShpbnRlbnREYXRhLnN1Z2dlc3Rpb25zKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGludGVudERhdGEubWVzc2FnZVBvcnRzKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW50ZW50RGF0YS5oIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0ludGVudERhdGEuaAppbmRleCA5NmUyZDlmLi5lODQzNWMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvSW50ZW50RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9JbnRlbnREYXRhLmgKQEAgLTI5LDcgKzI5LDggQEAKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMp
CiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKLSNpbmNsdWRlICJHZW5lcmljQ2FsbGJhY2suaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgQ29yZUlQQyB7CkBAIC01
Niw2ICs1Nyw3IEBAIHN0cnVjdCBJbnRlbnREYXRhIHsKICAgICBWZWN0b3I8dWludDhfdD4gZGF0
YTsKICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBleHRyYXM7CiAgICAgVmVjdG9yPFdlYkNv
cmU6OktVUkw+IHN1Z2dlc3Rpb25zOworICAgIFZlY3Rvcjx1aW50NjRfdD4gbWVzc2FnZVBvcnRz
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9UYXJnZXQucHJpIGIvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQppbmRleCBiOGUxYWVjLi4z
NzMzNjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1RhcmdldC5wcmkKQEAgLTI3OSw2ICsyNzksNyBAQCBIRUFERVJTICs9IFwKICAg
ICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQmFja0ZvcndhcmRMaXN0
LmggXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVCYWNrRm9y
d2FyZExpc3RJdGVtLmggXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVIaXRUZXN0UmVzdWx0LmggXAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVJbnRlbnQuaCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZUludGVudFJlcXVlc3QuaCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZU5hdmlnYXRpb25BY3Rpb24uaCBcCiAgICAgV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU5vZGVIYW5kbGUuaCBcCkBAIC0yOTIsNiArMjkzLDcg
QEAgSEVBREVSUyArPSBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZUNsaWVudC5oIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlRE9NV2luZG93RXh0ZW5zaW9uLmggXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmggXAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnQuaCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuaCBcCiAgICAgV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uaCBcCiAgICAgV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5o
IFwKQEAgLTYzMSw2ICs2MzMsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwIFwKICAgICBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAgXAogICAgIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnNwZWN0b3IuY3BwIFwKKyAgICBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50LmNwcCBcCiAgICAgV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudFJlcXVlc3QuY3BwIFwK
ICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlTmF2aWdhdGlvbkFj
dGlvbi5jcHAgXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVO
b2RlSGFuZGxlLmNwcCBcCkBAIC02NDYsNiArNjQ5LDcgQEAgU09VUkNFUyArPSBcCiAgICAgV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAgXAogICAgIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb24u
Y3BwIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVz
dFJlc3VsdC5jcHAgXAorICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVJbnRlbnQuY3BwIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlSW50ZW50UmVxdWVzdC5jcHAgXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHAgXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLSW50ZW50RGF0YS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnRlbnREYXRhLmNwcAppbmRleCA3YTky
ZGI1Li45MmU2MTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tJbnRlbnREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJ
bnRlbnREYXRhLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgog
I2luY2x1ZGUgIldLRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIldLU3RyaW5nLmgiCisjaW5jbHVk
ZSAiV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMp
CiAjaW5jbHVkZSAiV2ViSW50ZW50RGF0YS5oIgpAQCAtNDcsMjcgKzQ4LDYgQEAgV0tUeXBlSUQg
V0tJbnRlbnREYXRhR2V0VHlwZUlEKCkKICNlbmRpZgogfQogCi1XS0ludGVudERhdGFSZWYgV0tJ
bnRlbnREYXRhQ3JlYXRlKFdLRGljdGlvbmFyeVJlZiBpbml0RGljdGlvbmFyeVJlZikKLXsKLSNp
ZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0gICAgSW50ZW50RGF0YSBpbnRlbnREYXRhOwotICAgIFdL
U3RyaW5nUmVmIGFjdGlvbiA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlH
ZXRJdGVtRm9yS2V5KGluaXREaWN0aW9uYXJ5UmVmLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZygiYWN0aW9uIikpKTsKLSAgICBBU1NFUlQoYWN0aW9uKTsKLSAgICBpbnRlbnREYXRhLmFj
dGlvbiA9IHRvSW1wbChhY3Rpb24pLT5zdHJpbmcoKTsKLSAgICBXS1N0cmluZ1JlZiB0eXBlID0g
c3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkoaW5pdERp
Y3Rpb25hcnlSZWYsIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJ0eXBlIikpKTsKLSAg
ICBBU1NFUlQodHlwZSk7Ci0gICAgaW50ZW50RGF0YS50eXBlID0gdG9JbXBsKHR5cGUpLT5zdHJp
bmcoKTsKLSAgICBXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiBkYXRhID0gc3RhdGljX2Nhc3Q8
V0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkoaW5p
dERpY3Rpb25hcnlSZWYsIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJkYXRhIikpKTsK
LSAgICBpZiAoZGF0YSkKLSAgICAgICAgaW50ZW50RGF0YS5kYXRhID0gdG9JbXBsKGRhdGEpLT5k
YXRhUmVmZXJlbmNlKCkudmVjdG9yKCk7Ci0KLSAgICBSZWZQdHI8V2ViSW50ZW50RGF0YT4gd2Vi
SW50ZW50RGF0YSA9IFdlYkludGVudERhdGE6OmNyZWF0ZShpbnRlbnREYXRhKTsKLSAgICByZXR1
cm4gdG9BUEkod2ViSW50ZW50RGF0YS5yZWxlYXNlKCkubGVha1JlZigpKTsKLSNlbHNlCi0gICAg
cmV0dXJuIDA7Ci0jZW5kaWYKLX0KLQogV0tTdHJpbmdSZWYgV0tJbnRlbnREYXRhQ29weUFjdGlv
bihXS0ludGVudERhdGFSZWYgaW50ZW50UmVmKQogewogI2lmIEVOQUJMRShXRUJfSU5URU5UUykK
QEAgLTEwNCw3ICs4NCw3IEBAIFdLQXJyYXlSZWYgV0tJbnRlbnREYXRhQ29weVN1Z2dlc3Rpb25z
KFdLSW50ZW50RGF0YVJlZiBpbnRlbnRSZWYpCiAjZW5kaWYKIH0KIAotV0tTdHJpbmdSZWYgV0tJ
bnRlbnREYXRhQ29weUV4dHJhKFdLSW50ZW50RGF0YVJlZiBpbnRlbnRSZWYsIFdLU3RyaW5nUmVm
IGtleSkKK1dLU3RyaW5nUmVmIFdLSW50ZW50RGF0YUNvcHlFeHRyYVZhbHVlKFdLSW50ZW50RGF0
YVJlZiBpbnRlbnRSZWYsIFdLU3RyaW5nUmVmIGtleSkKIHsKICNpZiBFTkFCTEUoV0VCX0lOVEVO
VFMpCiAgICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChpbnRlbnRSZWYpLT5leHRyYSh0b1dU
RlN0cmluZyhrZXkpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tJbnRlbnREYXRhLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnRl
bnREYXRhLmgKaW5kZXggMWY4MDllYy4uY2FmMWI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLSW50ZW50RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS0ludGVudERhdGEuaApAQCAtMzQsMTMgKzM0LDExIEBAIGV4dGVybiAi
QyIgewogCiBXS19FWFBPUlQgV0tUeXBlSUQgV0tJbnRlbnREYXRhR2V0VHlwZUlEKCk7CiAKLVdL
X0VYUE9SVCBXS0ludGVudERhdGFSZWYgV0tJbnRlbnREYXRhQ3JlYXRlKFdLRGljdGlvbmFyeVJl
ZiBpbml0RGljdGlvbmFyeSk7Ci0KIFdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0ludGVudERhdGFD
b3B5QWN0aW9uKFdLSW50ZW50RGF0YVJlZiBpbnRlbnRSZWYpOwogV0tfRVhQT1JUIFdLU3RyaW5n
UmVmIFdLSW50ZW50RGF0YUNvcHlUeXBlKFdLSW50ZW50RGF0YVJlZiBpbnRlbnRSZWYpOwogV0tf
RVhQT1JUIFdLVVJMUmVmIFdLSW50ZW50RGF0YUNvcHlTZXJ2aWNlKFdLSW50ZW50RGF0YVJlZiBp
bnRlbnRSZWYpOwogV0tfRVhQT1JUIFdLQXJyYXlSZWYgV0tJbnRlbnREYXRhQ29weVN1Z2dlc3Rp
b25zKFdLSW50ZW50RGF0YVJlZiBpbnRlbnRSZWYpOwotV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdL
SW50ZW50RGF0YUNvcHlFeHRyYShXS0ludGVudERhdGFSZWYgaW50ZW50UmVmLCBXS1N0cmluZ1Jl
ZiBrZXkpOworV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLSW50ZW50RGF0YUNvcHlFeHRyYVZhbHVl
KFdLSW50ZW50RGF0YVJlZiBpbnRlbnRSZWYsIFdLU3RyaW5nUmVmIGtleSk7CiBXS19FWFBPUlQg
V0tEaWN0aW9uYXJ5UmVmIFdLSW50ZW50RGF0YUNvcHlFeHRyYXMoV0tJbnRlbnREYXRhUmVmIGlu
dGVudFJlZik7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2ludGVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfaW50ZW50LmNwcAppbmRleCA4NTYxNzkzLi41YzJiMjE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfaW50ZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfaW50ZW50LmNwcApAQCAt
MTcxLDcgKzE3MSw3IEBAIGNvbnN0IGNoYXIqIGV3a19pbnRlbnRfZXh0cmFfZ2V0KGNvbnN0IEV3
a19JbnRlbnQqIGludGVudCwgY29uc3QgY2hhcioga2V5KQogICAgIEVXS19JTlRFTlRfV0tfR0VU
X09SX1JFVFVSTihpbnRlbnQsIHdrSW50ZW50LCAwKTsKIAogICAgIFdLUmV0YWluUHRyPFdLU3Ry
aW5nUmVmPiBrZXlSZWYgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGtl
eSkpOwotICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB3a1ZhbHVlKEFkb3B0V0ssIFdLSW50
ZW50RGF0YUNvcHlFeHRyYSh3a0ludGVudCwga2V5UmVmLmdldCgpKSk7CisgICAgV0tSZXRhaW5Q
dHI8V0tTdHJpbmdSZWY+IHdrVmFsdWUoQWRvcHRXSywgV0tJbnRlbnREYXRhQ29weUV4dHJhVmFs
dWUod2tJbnRlbnQsIGtleVJlZi5nZXQoKSkpOwogICAgIFN0cmluZyB2YWx1ZSA9IHRvSW1wbCh3
a1ZhbHVlLmdldCgpKS0+c3RyaW5nKCk7CiAgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW50
ZW50RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW50ZW50RGF0YS5jcHAK
aW5kZXggOTYxMjhkYi4uNjMyYWEzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkludGVudERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJ
bnRlbnREYXRhLmNwcApAQCAtMzAsMTYgKzMwLDI5IEBACiAKICNpbmNsdWRlICJJbW11dGFibGVB
cnJheS5oIgogI2luY2x1ZGUgIkltbXV0YWJsZURpY3Rpb25hcnkuaCIKKyNpbmNsdWRlICJXZWJQ
cm9jZXNzUHJveHkuaCIKKyNpbmNsdWRlICJXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNp
bmNsdWRlICJXZWJTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJVUkwuaCIKIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKLVdlYkludGVudERhdGE6OldlYkludGVudERhdGEoY29uc3QgSW50ZW50RGF0YSYg
c3RvcmUpCitXZWJJbnRlbnREYXRhOjpXZWJJbnRlbnREYXRhKGNvbnN0IEludGVudERhdGEmIHN0
b3JlLCBXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MpCiAgICAgOiBtX3N0b3JlKHN0b3JlKQorICAg
ICwgbV9wcm9jZXNzKHByb2Nlc3MpCiB7CiB9CiAKK1dlYkludGVudERhdGE6On5XZWJJbnRlbnRE
YXRhKCkKK3sKKyAgICAvLyBSZW1vdmUgTWVzc2FnZVBvcnRDaGFubmVscyBmcm9tIFdlYlByb2Nl
c3MuCisgICAgaWYgKG1fcHJvY2VzcykgeworICAgICAgICBzaXplX3QgbnVtTWVzc2FnZVBvcnRz
ID0gbV9zdG9yZS5tZXNzYWdlUG9ydHMuc2l6ZSgpOworICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG51bU1lc3NhZ2VQb3J0czsgKytpKQorICAgICAgICAgICAgbV9wcm9jZXNzLT5yZW1v
dmVNZXNzYWdlUG9ydENoYW5uZWwobV9zdG9yZS5tZXNzYWdlUG9ydHNbaV0pOworICAgIH0KK30K
KwogUGFzc1JlZlB0cjxXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFdlYkludGVudERhdGE6OmRh
dGEoKSBjb25zdAogewogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhQ29weSA9IG1fc3RvcmUuZGF0
YTsKQEAgLTY2LDYgKzc5LDcgQEAgUGFzc1JlZlB0cjxJbW11dGFibGVEaWN0aW9uYXJ5PiBXZWJJ
bnRlbnREYXRhOjpleHRyYXMoKSBjb25zdAogICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Ojpj
b25zdF9pdGVyYXRvciBlbmQgPSBtX3N0b3JlLmV4dHJhcy5lbmQoKTsKICAgICBmb3IgKEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fc3RvcmUuZXh0cmFzLmJl
Z2luKCk7IGl0ICE9IGVuZDsgKytpdCkKICAgICAgICAgd2tFeHRyYXMuc2V0KGl0LT5maXJzdCwg
V2ViU3RyaW5nOjpjcmVhdGUoaXQtPnNlY29uZCkpOworCiAgICAgcmV0dXJuIEltbXV0YWJsZURp
Y3Rpb25hcnk6OmFkb3B0KHdrRXh0cmFzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkludGVudERhdGEuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJJbnRlbnREYXRhLmgKaW5kZXggZGVjZjRhZS4uOWQ1OWY5MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkludGVudERhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViSW50ZW50RGF0YS5oCkBAIC0zMCwyMSArMzAsMjYgQEAKIAogI2luY2x1ZGUg
IkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIkludGVudERhdGEuaCIKLSNpbmNsdWRlICJXZWJTZXJp
YWxpemVkU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KICNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgSW1tdXRh
YmxlQXJyYXk7CitjbGFzcyBJbW11dGFibGVEaWN0aW9uYXJ5OworY2xhc3MgV2ViUHJvY2Vzc1By
b3h5OworY2xhc3MgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlOworCiBjbGFzcyBXZWJJbnRlbnRE
YXRhIDogcHVibGljIEFQSU9iamVjdCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IFR5cGUg
QVBJVHlwZSA9IFR5cGVJbnRlbnREYXRhOwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViSW50
ZW50RGF0YT4gY3JlYXRlKGNvbnN0IEludGVudERhdGEmIHN0b3JlKQorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFdlYkludGVudERhdGE+IGNyZWF0ZShjb25zdCBJbnRlbnREYXRhJiBzdG9yZSwgV2Vi
UHJvY2Vzc1Byb3h5KiBwcm9jZXNzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBXZWJJbnRlbnREYXRhKHN0b3JlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2Vi
SW50ZW50RGF0YShzdG9yZSwgcHJvY2VzcykpOwogICAgIH0KIAotICAgIHZpcnR1YWwgfldlYklu
dGVudERhdGEoKSB7IH0KKyAgICB2aXJ0dWFsIH5XZWJJbnRlbnREYXRhKCk7CiAKICAgICBjb25z
dCBTdHJpbmcmIGFjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmUuYWN0aW9uOyB9CiAgICAg
Y29uc3QgU3RyaW5nJiBwYXlsb2FkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmUudHlwZTsg
fQpAQCAtNTcsMTEgKzYyLDEyIEBAIHB1YmxpYzoKICAgICBjb25zdCBJbnRlbnREYXRhJiBzdG9y
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmU7IH0KIAogcHJpdmF0ZToKLSAgICBXZWJJbnRlbnRE
YXRhKGNvbnN0IEludGVudERhdGEmKTsKKyAgICBXZWJJbnRlbnREYXRhKGNvbnN0IEludGVudERh
dGEmLCBXZWJQcm9jZXNzUHJveHkqKTsKIAogICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3Qg
eyByZXR1cm4gQVBJVHlwZTsgfQogCiAgICAgSW50ZW50RGF0YSBtX3N0b3JlOworICAgIFdlYlBy
b2Nlc3NQcm94eSogbV9wcm9jZXNzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDljNGRmOGUuLmZmMTM3
NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0yMjA2
LDcgKzIyMDYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZUludGVudEZvckZyYW1l
KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IEludGVudERhdGEmCiAgICAgV2ViRnJhbWVQcm94eSog
ZnJhbWUgPSBwcm9jZXNzKCktPndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0so
ZnJhbWUpOwogCi0gICAgUmVmUHRyPFdlYkludGVudERhdGE+IHdlYkludGVudERhdGEgPSBXZWJJ
bnRlbnREYXRhOjpjcmVhdGUoaW50ZW50RGF0YSk7CisgICAgUmVmUHRyPFdlYkludGVudERhdGE+
IHdlYkludGVudERhdGEgPSBXZWJJbnRlbnREYXRhOjpjcmVhdGUoaW50ZW50RGF0YSwgcHJvY2Vz
cygpKTsKICAgICBtX2xvYWRlckNsaWVudC5kaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWUodGhpcywg
ZnJhbWUsIHdlYkludGVudERhdGEuZ2V0KCksIHVzZXJEYXRhLmdldCgpKTsKIH0KICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAzZTcw
ZmVlLi4yMmEyYjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmNwcApAQCAtMTk5LDYgKzE5OSwxNiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cmVtb3Zl
V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQpCiAgICAgbV9wYWdlTWFwLnJlbW92ZShwYWdlSUQpOwog
fQogCisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlbW92
ZU1lc3NhZ2VQb3J0Q2hhbm5lbCh1aW50NjRfdCBjaGFubmVsSUQpCit7CisgICAgaWYgKCFpc1Zh
bGlkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIHNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6
OlJlbW92ZU1lc3NhZ2VQb3J0Q2hhbm5lbChjaGFubmVsSUQpLCAvKiBkZXN0aW5hdGlvbklEICov
IDApOworfQorI2VuZGlmCisKIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIFdlYlByb2Nlc3NQcm94
eTo6d2ViQmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IGl0ZW1JRCkgY29uc3QKIHsKICAgICByZXR1
cm4gbV9iYWNrRm9yd2FyZExpc3RJdGVtTWFwLmdldChpdGVtSUQpLmdldCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IDQwYWI1NDguLjJkYzIwNGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTg1LDYg
Kzg1LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZEV4aXN0aW5nV2ViUGFnZShXZWJQYWdlUHJv
eHkqLCB1aW50NjRfdCBwYWdlSUQpOwogICAgIHZvaWQgcmVtb3ZlV2ViUGFnZSh1aW50NjRfdCBw
YWdlSUQpOwogCisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorICAgIHZvaWQgcmVtb3ZlTWVzc2Fn
ZVBvcnRDaGFubmVsKHVpbnQ2NF90IGNoYW5uZWxJRCk7CisjZW5kaWYKKwogICAgIFdlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0qIHdlYkJhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBpdGVtSUQpIGNvbnN0
OwogCiAgICAgUmVzcG9uc2l2ZW5lc3NUaW1lciogcmVzcG9uc2l2ZW5lc3NUaW1lcigpIHsgcmV0
dXJuICZtX3Jlc3BvbnNpdmVuZXNzVGltZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVBUElDYXN0LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQVBJQ2Fz
dC5oCmluZGV4IDMzNTVkMDguLjAxOGVmNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVBUElDYXN0LmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUFQSUNh
c3QuaApAQCAtNDYsNiArNDYsNyBAQCBjbGFzcyBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlz
dDsKIGNsYXNzIEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbTsKIGNsYXNzIEluamVj
dGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uOwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVIaXRUZXN0
UmVzdWx0OworY2xhc3MgSW5qZWN0ZWRCdW5kbGVJbnRlbnQ7CiBjbGFzcyBJbmplY3RlZEJ1bmRs
ZUludGVudFJlcXVlc3Q7CiBjbGFzcyBJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb247CiBj
bGFzcyBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU7CkBAIC02NCw2ICs2NSw3IEBAIFdLX0FERF9B
UElfTUFQUElORyhXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvblJlZiwgSW5qZWN0ZWRCdW5kbGVE
T01XaW5kb3dFeHRlbnNpCiBXS19BRERfQVBJX01BUFBJTkcoV0tCdW5kbGVGcmFtZVJlZiwgV2Vi
RnJhbWUpCiBXS19BRERfQVBJX01BUFBJTkcoV0tCdW5kbGVIaXRUZXN0UmVzdWx0UmVmLCBJbmpl
Y3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQpCiBXS19BRERfQVBJX01BUFBJTkcoV0tCdW5kbGVJbnNw
ZWN0b3JSZWYsIFdlYkluc3BlY3RvcikKK1dLX0FERF9BUElfTUFQUElORyhXS0J1bmRsZUludGVu
dFJlZiwgSW5qZWN0ZWRCdW5kbGVJbnRlbnQpCiBXS19BRERfQVBJX01BUFBJTkcoV0tCdW5kbGVJ
bnRlbnRSZXF1ZXN0UmVmLCBJbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QpCiBXS19BRERfQVBJ
X01BUFBJTkcoV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uUmVmLCBJbmplY3RlZEJ1bmRsZU5hdmln
YXRpb25BY3Rpb24pCiBXS19BRERfQVBJX01BUFBJTkcoV0tCdW5kbGVOb2RlSGFuZGxlUmVmLCBJ
bmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnQuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2NWU1NjAKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlSW50ZW50LmNwcApAQCAtMCwwICsxLDEzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldLQnVuZGxlSW50ZW50LmgiCisKKyNpZiBF
TkFCTEUoV0VCX0lOVEVOVFMpCisjaW5jbHVkZSAiSW1tdXRhYmxlQXJyYXkuaCIKKyNpbmNsdWRl
ICJJbW11dGFibGVEaWN0aW9uYXJ5LmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVJbnRlbnQu
aCIKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXS0J1bmRsZUFQSUNhc3QuaCIK
KyNpbmNsdWRlICJXS0RpY3Rpb25hcnkuaCIKKyNpbmNsdWRlICJXS1N0cmluZy5oIgorI2luY2x1
ZGUgIldlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisjZW5kaWYKKworV0tUeXBlSUQgV0tCdW5kbGVJ
bnRlbnRHZXRUeXBlSUQoKQoreworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICByZXR1cm4g
dG9BUEkoSW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OkFQSVR5cGUpOworI2Vsc2UKKyAgICByZXR1cm4g
MDsKKyNlbmRpZgorfQorCitXS0J1bmRsZUludGVudFJlZiBXS0J1bmRsZUludGVudENyZWF0ZShX
S0RpY3Rpb25hcnlSZWYgZGljdGlvbmFyeVJlZikKK3sKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMp
CisgICAgV0tTdHJpbmdSZWYgYWN0aW9uID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGlj
dGlvbmFyeUdldEl0ZW1Gb3JLZXkoZGljdGlvbmFyeVJlZiwgV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoImFjdGlvbiIpKSk7CisgICAgQVNTRVJUKGFjdGlvbik7CisgICAgV0tTdHJpbmdS
ZWYgdHlwZSA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9y
S2V5KGRpY3Rpb25hcnlSZWYsIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJ0eXBlIikp
KTsKKyAgICBBU1NFUlQodHlwZSk7CisgICAgV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYgZGF0
YSA9IHN0YXRpY19jYXN0PFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmPihXS0RpY3Rpb25hcnlH
ZXRJdGVtRm9yS2V5KGRpY3Rpb25hcnlSZWYsIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJkYXRhIikpKTsKKyAgICBNZXNzYWdlUG9ydEFycmF5IGR1bW15UG9ydHM7CisgICAgRXhjZXB0
aW9uQ29kZSBlYzsKKworICAgIFJlZlB0cjxJbnRlbnQ+IGNvcmVJbnRlbnQgPSBJbnRlbnQ6OmNy
ZWF0ZSh0b0ltcGwoYWN0aW9uKS0+c3RyaW5nKCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRvSW1wbCh0eXBlKS0+c3RyaW5nKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPyBzdGF0aWNfY2FzdDxT
ZXJpYWxpemVkU2NyaXB0VmFsdWUqPih0b0ltcGwoZGF0YSktPmludGVybmFsUmVwcmVzZW50YXRp
b24oKSkgOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkdW1teVBvcnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlYyk7CisKKyAgICByZXR1cm4gdG9BUEkoSW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OmNyZWF0
ZShjb3JlSW50ZW50LmdldCgpKS5sZWFrUmVmKCkpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNl
bmRpZgorfQorCitXS1N0cmluZ1JlZiBXS0J1bmRsZUludGVudENvcHlBY3Rpb24oV0tCdW5kbGVJ
bnRlbnRSZWYgaW50ZW50UmVmKQoreworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICByZXR1
cm4gdG9Db3BpZWRBUEkodG9JbXBsKGludGVudFJlZiktPmFjdGlvbigpKTsKKyNlbHNlCisgICAg
cmV0dXJuIDA7CisjZW5kaWYKK30KKworV0tTdHJpbmdSZWYgV0tCdW5kbGVJbnRlbnRDb3B5VHlw
ZShXS0J1bmRsZUludGVudFJlZiBpbnRlbnRSZWYpCit7CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRT
KQorICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwoaW50ZW50UmVmKS0+cGF5bG9hZFR5cGUo
KSk7CisjZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCit9CisKK1dLVVJMUmVmIFdLQnVuZGxl
SW50ZW50Q29weVNlcnZpY2UoV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmKQoreworI2lmIEVO
QUJMRShXRUJfSU5URU5UUykKKyAgICByZXR1cm4gdG9Db3BpZWRVUkxBUEkodG9JbXBsKGludGVu
dFJlZiktPnNlcnZpY2UoKSk7CisjZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCit9CisKK1dL
QXJyYXlSZWYgV0tCdW5kbGVJbnRlbnRDb3B5U3VnZ2VzdGlvbnMoV0tCdW5kbGVJbnRlbnRSZWYg
aW50ZW50UmVmKQoreworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICByZXR1cm4gdG9BUEko
dG9JbXBsKGludGVudFJlZiktPnN1Z2dlc3Rpb25zKCkubGVha1JlZigpKTsKKyNlbHNlCisgICAg
cmV0dXJuIDA7CisjZW5kaWYKK30KKworV0tTdHJpbmdSZWYgV0tCdW5kbGVJbnRlbnRDb3B5RXh0
cmFWYWx1ZShXS0J1bmRsZUludGVudFJlZiBpbnRlbnRSZWYsIFdLU3RyaW5nUmVmIGtleSkKK3sK
KyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChp
bnRlbnRSZWYpLT5leHRyYSh0b1dURlN0cmluZyhrZXkpKSk7CisjZWxzZQorICAgIHJldHVybiAw
OworI2VuZGlmCit9CisKK1dLRGljdGlvbmFyeVJlZiBXS0J1bmRsZUludGVudENvcHlFeHRyYXMo
V0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmKQoreworI2lmIEVOQUJMRShXRUJfSU5URU5UUykK
KyAgICByZXR1cm4gdG9BUEkodG9JbXBsKGludGVudFJlZiktPmV4dHJhcygpLmxlYWtSZWYoKSk7
CisjZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCit9CisKK3NpemVfdCBXS0J1bmRsZUludGVu
dE1lc3NhZ2VQb3J0Q291bnQoV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmKQoreworI2lmIEVO
QUJMRShXRUJfSU5URU5UUykKKyAgICBNZXNzYWdlUG9ydENoYW5uZWxBcnJheSogbWVzc2FnZVBv
cnRzID0gdG9JbXBsKGludGVudFJlZiktPmNvcmVJbnRlbnQoKS0+bWVzc2FnZVBvcnRzKCk7CisK
KyAgICByZXR1cm4gbWVzc2FnZVBvcnRzID8gbWVzc2FnZVBvcnRzLT5zaXplKCkgOiAwOworI2Vs
c2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudC5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwM2ZlMDIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlSW50ZW50LmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBXS0J1bmRsZUludGVudF9oCisjZGVmaW5lIFdLQnVuZGxlSW50ZW50X2gKKworI2luY2x1
ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7
CisjZW5kaWYKKworV0tfRVhQT1JUIFdLVHlwZUlEIFdLQnVuZGxlSW50ZW50R2V0VHlwZUlEKCk7
CisKK1dLX0VYUE9SVCBXS0J1bmRsZUludGVudFJlZiBXS0J1bmRsZUludGVudENyZWF0ZShXS0Rp
Y3Rpb25hcnlSZWYgZGljdGlvbmFyeVJlZik7CisKK1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0J1
bmRsZUludGVudENvcHlBY3Rpb24oV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmKTsKK1dLX0VY
UE9SVCBXS1N0cmluZ1JlZiBXS0J1bmRsZUludGVudENvcHlUeXBlKFdLQnVuZGxlSW50ZW50UmVm
IGludGVudFJlZik7CitXS19FWFBPUlQgV0tVUkxSZWYgV0tCdW5kbGVJbnRlbnRDb3B5U2Vydmlj
ZShXS0J1bmRsZUludGVudFJlZiBpbnRlbnRSZWYpOworV0tfRVhQT1JUIFdLQXJyYXlSZWYgV0tC
dW5kbGVJbnRlbnRDb3B5U3VnZ2VzdGlvbnMoV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmKTsK
K1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0J1bmRsZUludGVudENvcHlFeHRyYVZhbHVlKFdLQnVu
ZGxlSW50ZW50UmVmIGludGVudFJlZiwgV0tTdHJpbmdSZWYga2V5KTsKK1dLX0VYUE9SVCBXS0Rp
Y3Rpb25hcnlSZWYgV0tCdW5kbGVJbnRlbnRDb3B5RXh0cmFzKFdLQnVuZGxlSW50ZW50UmVmIGlu
dGVudFJlZik7CitXS19FWFBPUlQgc2l6ZV90IFdLQnVuZGxlSW50ZW50TWVzc2FnZVBvcnRDb3Vu
dChXS0J1bmRsZUludGVudFJlZiBpbnRlbnRSZWYpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30K
KyNlbmRpZgorCisjZW5kaWYgLy8gV0tCdW5kbGVJbnRlbnRfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudFJl
cXVlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZUludGVudFJlcXVlc3QuY3BwCmluZGV4IDgxYzk1YzYuLmE0NzcyZWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVJbnRlbnRSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50UmVxdWVzdC5jcHAKQEAgLTI3LDEwICsy
NywxMCBAQAogI2luY2x1ZGUgIldLQnVuZGxlSW50ZW50UmVxdWVzdC5oIgogCiAjaWYgRU5BQkxF
KFdFQl9JTlRFTlRTKQorI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlSW50ZW50LmgiCiAjaW5jbHVk
ZSAiSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0Lmgi
CiAjaW5jbHVkZSAiV0tCdW5kbGVBUElDYXN0LmgiCi0jaW5jbHVkZSAiV2ViSW50ZW50RGF0YS5o
IgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogI2VuZGlmCkBAIC00NCwxMSArNDQsMTEgQEAg
V0tUeXBlSUQgV0tCdW5kbGVJbnRlbnRSZXF1ZXN0R2V0VHlwZUlEKCkKICNlbmRpZgogfQogCi1X
S0ludGVudERhdGFSZWYgV0tCdW5kbGVJbnRlbnRSZXF1ZXN0Q29weUludGVudERhdGEoV0tCdW5k
bGVJbnRlbnRSZXF1ZXN0UmVmIHJlcXVlc3RSZWYpCitXS0J1bmRsZUludGVudFJlZiBXS0J1bmRs
ZUludGVudFJlcXVlc3RDb3B5SW50ZW50KFdLQnVuZGxlSW50ZW50UmVxdWVzdFJlZiByZXF1ZXN0
UmVmKQogewogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSAgICBSZWZQdHI8V2ViSW50ZW50RGF0
YT4gd2ViSW50ZW50RGF0YSA9IHRvSW1wbChyZXF1ZXN0UmVmKS0+aW50ZW50KCk7Ci0gICAgcmV0
dXJuIHRvQVBJKHdlYkludGVudERhdGEucmVsZWFzZSgpLmxlYWtSZWYoKSk7CisgICAgUmVmUHRy
PEluamVjdGVkQnVuZGxlSW50ZW50PiB3ZWJJbnRlbnQgPSB0b0ltcGwocmVxdWVzdFJlZiktPmlu
dGVudCgpOworICAgIHJldHVybiB0b0FQSSh3ZWJJbnRlbnQucmVsZWFzZSgpLmxlYWtSZWYoKSk7
CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50UmVxdWVzdC5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZUludGVudFJlcXVlc3QuaAppbmRleCBiMTgxMzZkLi4xMDVhZmE0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50
UmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVJbnRlbnRSZXF1ZXN0LmgKQEAgLTM0LDcgKzM0LDcgQEAgZXh0ZXJuICJD
IiB7CiAKIFdLX0VYUE9SVCBXS1R5cGVJRCBXS0J1bmRsZUludGVudFJlcXVlc3RHZXRUeXBlSUQo
KTsKIAotV0tfRVhQT1JUIFdLSW50ZW50RGF0YVJlZiBXS0J1bmRsZUludGVudFJlcXVlc3RDb3B5
SW50ZW50RGF0YShXS0J1bmRsZUludGVudFJlcXVlc3RSZWYgcmVxdWVzdCk7CitXS19FWFBPUlQg
V0tCdW5kbGVJbnRlbnRSZWYgV0tCdW5kbGVJbnRlbnRSZXF1ZXN0Q29weUludGVudChXS0J1bmRs
ZUludGVudFJlcXVlc3RSZWYgcmVxdWVzdCk7CiAKIFdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlSW50
ZW50UmVxdWVzdFBvc3RSZXN1bHQoV0tCdW5kbGVJbnRlbnRSZXF1ZXN0UmVmIHJlcXVlc3QsIFdL
U2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmIHNlcmlhbGl6ZWREYXRhKTsKIFdLX0VYUE9SVCB2b2lk
IFdLQnVuZGxlSW50ZW50UmVxdWVzdFBvc3RGYWlsdXJlKFdLQnVuZGxlSW50ZW50UmVxdWVzdFJl
ZiByZXF1ZXN0LCBXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiBzZXJpYWxpemVkRGF0YSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKaW5kZXggMWY0M2ExMi4uYmY0NjNjZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZVBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcApAQCAtNDcsNyArNDcsNyBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvUGFnZS5oPgogCiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotI2luY2x1ZGUgIldlYklu
dGVudERhdGEuaCIKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZUludGVudC5oIgogI2VuZGlmCiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CkBAIC0zMTYsMTAgKzMxNiwxMCBAQCBkb3VibGUgV0tC
dW5kbGVQYWdlR2V0QmFja2luZ1NjYWxlRmFjdG9yKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmKQog
ICAgIHJldHVybiB0b0ltcGwocGFnZVJlZiktPmRldmljZVNjYWxlRmFjdG9yKCk7CiB9CiAKLXZv
aWQgV0tCdW5kbGVQYWdlRGVsaXZlckludGVudFRvRnJhbWUoV0tCdW5kbGVQYWdlUmVmIHBhZ2VS
ZWYsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYsIFdLSW50ZW50RGF0YVJlZiBpbnRlbnRSZWYp
Cit2b2lkIFdLQnVuZGxlUGFnZURlbGl2ZXJJbnRlbnRUb0ZyYW1lKFdLQnVuZGxlUGFnZVJlZiBw
YWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVmLCBXS0J1bmRsZUludGVudFJlZiBpbnRl
bnRSZWYpCiB7CiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotICAgIHRvSW1wbChwYWdlUmVmKS0+
ZGVsaXZlckludGVudFRvRnJhbWUodG9JbXBsKGZyYW1lUmVmKS0+ZnJhbWVJRCgpLCB0b0ltcGwo
aW50ZW50UmVmKS0+c3RvcmUoKSk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5kZWxpdmVyQ29yZUlu
dGVudFRvRnJhbWUodG9JbXBsKGZyYW1lUmVmKS0+ZnJhbWVJRCgpLCB0b0ltcGwoaW50ZW50UmVm
KS0+Y29yZUludGVudCgpKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaApp
bmRleCAyOGVlZTVjLi44YmM3NjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgKQEAgLTQx
MCw3ICs0MTAsNyBAQCBXS19FWFBPUlQgV0tJbWFnZVJlZiBXS0J1bmRsZVBhZ2VDcmVhdGVTY2Fs
ZWRTbmFwc2hvdEluRG9jdW1lbnRDb29yZGluYXRlcyhXS0J1bgogCiBXS19FWFBPUlQgZG91Ymxl
IFdLQnVuZGxlUGFnZUdldEJhY2tpbmdTY2FsZUZhY3RvcihXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7
CiAKLVdLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZURlbGl2ZXJJbnRlbnRUb0ZyYW1lKFdLQnVu
ZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBXS0ludGVudERhdGFSZWYg
aW50ZW50KTsKK1dLX0VYUE9SVCB2b2lkIFdLQnVuZGxlUGFnZURlbGl2ZXJJbnRlbnRUb0ZyYW1l
KFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBXS0J1bmRsZUlu
dGVudFJlZiBpbnRlbnQpOwogCiAjaWYgZGVmaW5lZChFTkFCTEVfSU5TUEVDVE9SKSAmJiBFTkFC
TEVfSU5TUEVDVE9SCiBXS19FWFBPUlQgV0tCdW5kbGVJbnNwZWN0b3JSZWYgV0tCdW5kbGVQYWdl
R2V0SW5zcGVjdG9yKFdLQnVuZGxlUGFnZVJlZiBwYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnQuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZUludGVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTJkZTYxYwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnQuY3BwCkBAIC0wLDAgKzEsMTAwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVJ
bnRlbnQuaCIKKworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKworI2luY2x1ZGUgIkltbXV0YWJs
ZUFycmF5LmgiCisjaW5jbHVkZSAiSW1tdXRhYmxlRGljdGlvbmFyeS5oIgorI2luY2x1ZGUgIldl
YlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIldlYlN0cmluZy5oIgorI2luY2x1
ZGUgIldlYlVSTC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK1Bhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVJbnRlbnQ+IEluamVjdGVkQnVuZGxl
SW50ZW50OjpjcmVhdGUoV2ViQ29yZTo6SW50ZW50KiBpbnRlbnQpCit7CisgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBJbmplY3RlZEJ1bmRsZUludGVudChpbnRlbnQpKTsKK30KKworSW5qZWN0ZWRC
dW5kbGVJbnRlbnQ6OkluamVjdGVkQnVuZGxlSW50ZW50KFdlYkNvcmU6OkludGVudCogaW50ZW50
KQorICAgIDogbV9pbnRlbnQoaW50ZW50KQoreworfQorCitTdHJpbmcgSW5qZWN0ZWRCdW5kbGVJ
bnRlbnQ6OmFjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW50ZW50LT5hY3Rpb24oKTsK
K30KKworU3RyaW5nIEluamVjdGVkQnVuZGxlSW50ZW50OjpwYXlsb2FkVHlwZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1faW50ZW50LT50eXBlKCk7Cit9CisKK1dlYkNvcmU6OktVUkwgSW5qZWN0
ZWRCdW5kbGVJbnRlbnQ6OnNlcnZpY2UoKSBjb25zdAoreworICAgIHJldHVybiBtX2ludGVudC0+
c2VydmljZSgpOworfQorCitQYXNzUmVmUHRyPFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gSW5q
ZWN0ZWRCdW5kbGVJbnRlbnQ6OmRhdGEoKSBjb25zdAoreworICAgIHJldHVybiBXZWJTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmNyZWF0ZShtX2ludGVudC0+ZGF0YSgpKTsKK30KKworU3RyaW5nIElu
amVjdGVkQnVuZGxlSW50ZW50OjpleHRyYShjb25zdCBTdHJpbmcmIGtleSkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9pbnRlbnQtPmV4dHJhcygpLmdldChrZXkpOworfQorCitQYXNzUmVmUHRyPElt
bXV0YWJsZURpY3Rpb25hcnk+IEluamVjdGVkQnVuZGxlSW50ZW50OjpleHRyYXMoKSBjb25zdAor
eworICAgIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBleHRyYXMgPSBtX2ludGVudC0+
ZXh0cmFzKCk7CisgICAgSW1tdXRhYmxlRGljdGlvbmFyeTo6TWFwVHlwZSB3a0V4dHJhczsKKyAg
ICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gZXh0cmFzLmVu
ZCgpOworICAgIGZvciAoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gZXh0cmFzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgd2tFeHRyYXMuc2V0
KGl0LT5maXJzdCwgV2ViU3RyaW5nOjpjcmVhdGUoaXQtPnNlY29uZCkpOworCisgICAgcmV0dXJu
IEltbXV0YWJsZURpY3Rpb25hcnk6OmFkb3B0KHdrRXh0cmFzKTsKK30KKworUGFzc1JlZlB0cjxJ
bW11dGFibGVBcnJheT4gSW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OnN1Z2dlc3Rpb25zKCkgY29uc3QK
K3sKKyAgICBjb25zdCBWZWN0b3I8S1VSTD4mIHN1Z2dlc3Rpb25zID0gbV9pbnRlbnQtPnN1Z2dl
c3Rpb25zKCk7CisgICAgY29uc3Qgc2l6ZV90IG51bVN1Z2dlc3Rpb25zID0gc3VnZ2VzdGlvbnMu
c2l6ZSgpOworICAgIFZlY3RvcjxSZWZQdHI8QVBJT2JqZWN0PiA+IHdrU3VnZ2VzdGlvbnMobnVt
U3VnZ2VzdGlvbnMpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1TdWdnZXN0aW9u
czsgKytpKQorICAgICAgICB3a1N1Z2dlc3Rpb25zW2ldID0gV2ViVVJMOjpjcmVhdGUoc3VnZ2Vz
dGlvbnNbaV0pOworCisgICAgcmV0dXJuIEltbXV0YWJsZUFycmF5OjphZG9wdCh3a1N1Z2dlc3Rp
b25zKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VC
X0lOVEVOVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uNWQzZjA2YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnQuaApAQCAt
MCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9u
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEluamVjdGVkQnVuZGxl
SW50ZW50X2gKKyNkZWZpbmUgSW5qZWN0ZWRCdW5kbGVJbnRlbnRfaAorCisjaWYgRU5BQkxFKFdF
Ql9JTlRFTlRTKQorCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9J
bnRlbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgSW1tdXRhYmxlQXJyYXk7CitjbGFzcyBJ
bW11dGFibGVEaWN0aW9uYXJ5OworY2xhc3MgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlOworCitj
bGFzcyBJbmplY3RlZEJ1bmRsZUludGVudCA6IHB1YmxpYyBBUElPYmplY3QgeworcHVibGljOgor
ICAgIHN0YXRpYyBjb25zdCBUeXBlIEFQSVR5cGUgPSBUeXBlQnVuZGxlSW50ZW50OworCisgICAg
c3RhdGljIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5kbGVJbnRlbnQ+IGNyZWF0ZShXZWJDb3JlOjpJ
bnRlbnQqKTsKKworICAgIFN0cmluZyBhY3Rpb24oKSBjb25zdDsKKyAgICBTdHJpbmcgcGF5bG9h
ZFR5cGUoKSBjb25zdDsKKyAgICBXZWJDb3JlOjpLVVJMIHNlcnZpY2UoKSBjb25zdDsKKyAgICBQ
YXNzUmVmUHRyPFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSgpIGNvbnN0OworICAgIFN0
cmluZyBleHRyYShjb25zdCBTdHJpbmcmIGtleSkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxJbW11
dGFibGVEaWN0aW9uYXJ5PiBleHRyYXMoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEltbXV0YWJs
ZUFycmF5PiBzdWdnZXN0aW9ucygpIGNvbnN0OworCisgICAgV2ViQ29yZTo6SW50ZW50KiBjb3Jl
SW50ZW50KCkgY29uc3QgeyByZXR1cm4gbV9pbnRlbnQuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAg
ICBleHBsaWNpdCBJbmplY3RlZEJ1bmRsZUludGVudChXZWJDb3JlOjpJbnRlbnQqKTsKKworICAg
IHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQVBJVHlwZTsgfQorCisgICAgUmVm
UHRyPFdlYkNvcmU6OkludGVudD4gbV9pbnRlbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfSU5URU5UUykKKworI2VuZGlmIC8vIEluamVjdGVk
QnVuZGxlSW50ZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0
LmNwcAppbmRleCA1Y2NiMTljLi5lYWMwYjgzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVJbnRlbnRSZXF1ZXN0LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkluamVj
dGVkQnVuZGxlSW50ZW50UmVxdWVzdC5oIgogCiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorI2lu
Y2x1ZGUgIkluamVjdGVkQnVuZGxlSW50ZW50LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRlbnRS
ZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg+CiAKQEAgLTU0
LDkgKzU1LDkgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3Q6OnBvc3RGYWlsdXJl
KFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogZGF0YSkKICAgICBtX2ludGVudFJlcXVlc3QtPnBv
c3RGYWlsdXJlKHN0YXRpY19jYXN0PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSo+KGRhdGEtPmludGVy
bmFsUmVwcmVzZW50YXRpb24oKSkpOwogfQogCi1QYXNzUmVmUHRyPFdlYkludGVudERhdGE+IElu
amVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdDo6aW50ZW50KCkgY29uc3QKK1Bhc3NSZWZQdHI8SW5q
ZWN0ZWRCdW5kbGVJbnRlbnQ+IEluamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdDo6aW50ZW50KCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gV2ViSW50ZW50RGF0YTo6Y3JlYXRlKEludGVudERhdGEobV9p
bnRlbnRSZXF1ZXN0LT5pbnRlbnQoKSkpOworICAgIHJldHVybiBJbmplY3RlZEJ1bmRsZUludGVu
dDo6Y3JlYXRlKG1faW50ZW50UmVxdWVzdC0+aW50ZW50KCkpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5oCmluZGV4
IGI1ODcwZDkuLjMzYTMxOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0LmgKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudFJl
cXVlc3QuaApAQCAtMjksNyArMjksNiBAQAogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKIAogI2lu
Y2x1ZGUgIkFQSU9iamVjdC5oIgotI2luY2x1ZGUgIldlYkludGVudERhdGEuaCIKICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgpAQCAtNDAsNiArMzksNyBAQCBjbGFzcyBJbnRlbnRSZXF1ZXN0OwogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgSW5qZWN0ZWRCdW5kbGVJbnRlbnQ7CiBjbGFzcyBX
ZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU7CiAKIGNsYXNzIEluamVjdGVkQnVuZGxlSW50ZW50UmVx
dWVzdCA6IHB1YmxpYyBBUElPYmplY3QgewpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBwb3N0UmVzdWx0KFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSopOwogICAgIHZvaWQgcG9z
dEZhaWx1cmUoV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlKik7CiAKLSAgICBQYXNzUmVmUHRyPFdl
YkludGVudERhdGE+IGludGVudCgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8SW5qZWN0ZWRCdW5k
bGVJbnRlbnQ+IGludGVudCgpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEluamVj
dGVkQnVuZGxlSW50ZW50UmVxdWVzdChXZWJDb3JlOjpJbnRlbnRSZXF1ZXN0Kik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCAxOTI0M2Jl
Li5mZDZmNGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJG
cmFtZS5jcHAKQEAgLTYzLDYgKzYzLDggQEAKICNpbmNsdWRlICJJbnRlbnREYXRhLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9ET01XaW5kb3dJbnRlbnRzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EZWxp
dmVyZWRJbnRlbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ludGVudC5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuaD4KICNlbmRpZgogCiAjaWYgUExBVEZP
Uk0oTUFDKSB8fCBQTEFURk9STShXSU4pCkBAIC0yNDYsMTMgKzI0OCwzOSBAQCB2b2lkIFdlYkZy
YW1lOjpjb252ZXJ0SGFuZGxlVG9Eb3dubG9hZChSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25z
dCBSZXNvdXJjZVJlcQogdm9pZCBXZWJGcmFtZTo6ZGVsaXZlckludGVudChjb25zdCBJbnRlbnRE
YXRhJiBpbnRlbnREYXRhKQogewogICAgIE93blB0cjxEZWxpdmVyZWRJbnRlbnRDbGllbnQ+IGR1
bW15Q2xpZW50OwotICAgIE93blB0cjxNZXNzYWdlUG9ydEFycmF5PiBkdW1teVBvcnRzOwogICAg
IFZlY3Rvcjx1aW50OF90PiBkYXRhQ29weSA9IGludGVudERhdGEuZGF0YTsKKworICAgIE93blB0
cjxXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHM7CisgICAgaWYgKCFp
bnRlbnREYXRhLm1lc3NhZ2VQb3J0cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgY2hhbm5lbHMgPSBh
ZG9wdFB0cihuZXcgV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsQXJyYXkoaW50ZW50RGF0YS5t
ZXNzYWdlUG9ydHMuc2l6ZSgpKSk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW50
ZW50RGF0YS5tZXNzYWdlUG9ydHMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICAoKmNoYW5uZWxz
KVtpXSA9IE1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlKFdlYlByb2Nlc3M6OnNoYXJlZCgpLm1l
c3NhZ2VQb3J0Q2hhbm5lbChpbnRlbnREYXRhLm1lc3NhZ2VQb3J0cy5hdChpKSkpOworICAgIH0K
KyAgICBPd25QdHI8V2ViQ29yZTo6TWVzc2FnZVBvcnRBcnJheT4gbWVzc2FnZVBvcnRzID0gV2Vi
Q29yZTo6TWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoKm1fY29yZUZyYW1lLT5kb2N1bWVudCgp
LT5kb21XaW5kb3coKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBjaGFubmVscy5yZWxlYXNl
KCkpOworCiAgICAgUmVmUHRyPERlbGl2ZXJlZEludGVudD4gZGVsaXZlcmVkSW50ZW50ID0gRGVs
aXZlcmVkSW50ZW50OjpjcmVhdGUobV9jb3JlRnJhbWUsIGR1bW15Q2xpZW50LnJlbGVhc2UoKSwg
aW50ZW50RGF0YS5hY3Rpb24sIGludGVudERhdGEudHlwZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmFkb3B0KGRhdGFDb3B5KSwgZHVtbXlQb3J0cy5yZWxlYXNlKCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjphZG9wdChkYXRhQ29weSksIG1lc3Nh
Z2VQb3J0cy5yZWxlYXNlKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZW50RGF0YS5leHRyYXMpOwogICAg
IFdlYkNvcmU6OkRPTVdpbmRvd0ludGVudHM6OmZyb20obV9jb3JlRnJhbWUtPmRvY3VtZW50KCkt
PmRvbVdpbmRvdygpKS0+ZGVsaXZlcihkZWxpdmVyZWRJbnRlbnQucmVsZWFzZSgpKTsKIH0KKwor
dm9pZCBXZWJGcmFtZTo6ZGVsaXZlckludGVudChXZWJDb3JlOjpJbnRlbnQqIGludGVudCkKK3sK
KyAgICBPd25QdHI8RGVsaXZlcmVkSW50ZW50Q2xpZW50PiBkdW1teUNsaWVudDsKKworICAgIE93
blB0cjxXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHM7CisgICAgV2Vi
Q29yZTo6TWVzc2FnZVBvcnRDaGFubmVsQXJyYXkqIG9yaWdDaGFubmVscyA9IGludGVudC0+bWVz
c2FnZVBvcnRzKCk7CisgICAgaWYgKG9yaWdDaGFubmVscyAmJiBvcmlnQ2hhbm5lbHMtPnNpemUo
KSkgeworICAgICAgICBjaGFubmVscyA9IGFkb3B0UHRyKG5ldyBXZWJDb3JlOjpNZXNzYWdlUG9y
dENoYW5uZWxBcnJheShvcmlnQ2hhbm5lbHMtPnNpemUoKSkpOworICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG9yaWdDaGFubmVscy0+c2l6ZSgpOyArK2kpCisgICAgICAgICAgICAoKmNo
YW5uZWxzKVtpXSA9IG9yaWdDaGFubmVscy0+YXQoaSkucmVsZWFzZSgpOworICAgIH0KKyAgICBP
d25QdHI8V2ViQ29yZTo6TWVzc2FnZVBvcnRBcnJheT4gbWVzc2FnZVBvcnRzID0gV2ViQ29yZTo6
TWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoKm1fY29yZUZyYW1lLT5kb2N1bWVudCgpLT5kb21X
aW5kb3coKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBjaGFubmVscy5yZWxlYXNlKCkpOwor
CisgICAgUmVmUHRyPERlbGl2ZXJlZEludGVudD4gZGVsaXZlcmVkSW50ZW50ID0gRGVsaXZlcmVk
SW50ZW50OjpjcmVhdGUobV9jb3JlRnJhbWUsIGR1bW15Q2xpZW50LnJlbGVhc2UoKSwgaW50ZW50
LT5hY3Rpb24oKSwgaW50ZW50LT50eXBlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZW50LT5kYXRhKCks
IG1lc3NhZ2VQb3J0cy5yZWxlYXNlKCksIGludGVudC0+ZXh0cmFzKCkpOworICAgIFdlYkNvcmU6
OkRPTVdpbmRvd0ludGVudHM6OmZyb20obV9jb3JlRnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRv
dygpKS0+ZGVsaXZlcihkZWxpdmVyZWRJbnRlbnQucmVsZWFzZSgpKTsKK30KICNlbmRpZgogCiBT
dHJpbmcgV2ViRnJhbWU6OnNvdXJjZSgpIGNvbnN0IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAppbmRleCBiZDZjMDM4Li5lZWEwOWI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaApAQCAtNDIsNiArNDIsOSBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEZyYW1lOwogICAgIGNsYXNzIEhUTUxG
cmFtZU93bmVyRWxlbWVudDsKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgY2xhc3MgSW50
ZW50OworI2VuZGlmCiAgICAgY2xhc3MgS1VSTDsKIH0KIApAQCAtODEsNiArODQsNyBAQCBwdWJs
aWM6CiAKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCiAgICAgdm9pZCBkZWxpdmVySW50ZW50KGNv
bnN0IEludGVudERhdGEmKTsKKyAgICB2b2lkIGRlbGl2ZXJJbnRlbnQoV2ViQ29yZTo6SW50ZW50
Kik7CiAjZW5kaWYKIAogICAgIFN0cmluZyBzb3VyY2UoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA3OTg5YjI5Li5lYjE5MWU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBA
IC0xNDAsNiArMTQwLDcgQEAKIAogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKICNpbmNsdWRlICJJ
bnRlbnREYXRhLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9JbnRlbnQuaD4KICNlbmRpZgogCiAjaWYg
RU5BQkxFKFZJQlJBVElPTikKQEAgLTE5NTksNiArMTk2MCwxMiBAQCB2b2lkIFdlYlBhZ2U6OmRl
bGl2ZXJJbnRlbnRUb0ZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IEludGVudERhdGEmIGlu
dGVudERhdAogCiAgICAgZnJhbWUtPmRlbGl2ZXJJbnRlbnQoaW50ZW50RGF0YSk7CiB9CisKK3Zv
aWQgV2ViUGFnZTo6ZGVsaXZlckNvcmVJbnRlbnRUb0ZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIElu
dGVudCogY29yZUludGVudCkKK3sKKyAgICBpZiAoV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vz
czo6c2hhcmVkKCkud2ViRnJhbWUoZnJhbWVJRCkpCisgICAgICAgIGZyYW1lLT5kZWxpdmVySW50
ZW50KGNvcmVJbnRlbnQpOworfQogI2VuZGlmCiAKIHZvaWQgV2ViUGFnZTo6cHJlZmVyZW5jZXNE
aWRDaGFuZ2UoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBiYmZhYmQwLi5lYzVhZjBlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTEwNiw2
ICsxMDYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgRnJhbWU7CiAgICAgY2xh
c3MgRnJhbWVWaWV3OwogICAgIGNsYXNzIEhUTUxQbHVnSW5FbGVtZW50OworI2lmIEVOQUJMRShX
RUJfSU5URU5UUykKKyAgICBjbGFzcyBJbnRlbnQ7CisjZW5kaWYKICAgICBjbGFzcyBLZXlib2Fy
ZEV2ZW50OwogICAgIGNsYXNzIFBhZ2U7CiAgICAgY2xhc3MgUHJpbnRDb250ZXh0OwpAQCAtNDc2
LDcgKzQ3OSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQot
ICAgIHZvaWQgZGVsaXZlckludGVudFRvRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgSW50
ZW50RGF0YSYpOworICAgIHZvaWQgZGVsaXZlckNvcmVJbnRlbnRUb0ZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQsIFdlYkNvcmU6OkludGVudCopOwogI2VuZGlmCiAKICAgICB2b2lkIHJlcGxhY2VTZWxl
Y3Rpb25XaXRoVGV4dChXZWJDb3JlOjpGcmFtZSosIGNvbnN0IFN0cmluZyYpOwpAQCAtNjQxLDYg
KzY0NCwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgY29udGV4dE1lbnVIaWRkZW4oKSB7IG1faXNT
aG93aW5nQ29udGV4dE1lbnUgPSBmYWxzZTsgfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCX0lO
VEVOVFMpCisgICAgdm9pZCBkZWxpdmVySW50ZW50VG9GcmFtZSh1aW50NjRfdCBmcmFtZUlELCBj
b25zdCBJbnRlbnREYXRhJik7CisjZW5kaWYKKwogICAgIHN0YXRpYyB2b2lkIHNjcm9sbChXZWJD
b3JlOjpQYWdlKiwgV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9uLCBXZWJDb3JlOjpTY3JvbGxHcmFu
dWxhcml0eSk7CiAgICAgc3RhdGljIHZvaWQgbG9naWNhbFNjcm9sbChXZWJDb3JlOjpQYWdlKiwg
V2ViQ29yZTo6U2Nyb2xsTG9naWNhbERpcmVjdGlvbiwgV2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJp
dHkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCAzZTc1
NmVjLi40ODBjZDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAK
QEAgLTgwLDYgKzgwLDEwIEBACiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvUmFuZG9tTnVtYmVyLmg+CiAKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisjaW5jbHVk
ZSA8V2ViQ29yZS9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oPgorI2VuZGlmCisKICNpZiBF
TkFCTEUoTkVUV09SS19JTkZPKQogI2luY2x1ZGUgIldlYk5ldHdvcmtJbmZvTWFuYWdlck1lc3Nh
Z2VzLmgiCiAjZW5kaWYKQEAgLTc5MSw2ICs3OTUsMjYgQEAgV2ViUGFnZUdyb3VwUHJveHkqIFdl
YlByb2Nlc3M6OndlYlBhZ2VHcm91cChjb25zdCBXZWJQYWdlR3JvdXBEYXRhJiBwYWdlR3JvdXBE
YXQKICAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQuZ2V0KCk7CiB9CiAKKyNpZiBF
TkFCTEUoV0VCX0lOVEVOVFMpCit1aW50NjRfdCBXZWJQcm9jZXNzOjphZGRNZXNzYWdlUG9ydENo
YW5uZWwoUGFzc1JlZlB0cjxQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbD4gbWVzc2FnZVBvcnRD
aGFubmVsKQoreworICAgIHN0YXRpYyB1aW50NjRfdCBjaGFubmVsSUQgPSAwOworICAgIG1fbWVz
c2FnZVBvcnRDaGFubmVscy5hZGQoKytjaGFubmVsSUQsIG1lc3NhZ2VQb3J0Q2hhbm5lbCk7CisK
KyAgICByZXR1cm4gY2hhbm5lbElEOworfQorCitQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbCog
V2ViUHJvY2Vzczo6bWVzc2FnZVBvcnRDaGFubmVsKHVpbnQ2NF90IGNoYW5uZWxJRCkKK3sKKyAg
ICByZXR1cm4gbV9tZXNzYWdlUG9ydENoYW5uZWxzLmdldChjaGFubmVsSUQpLmdldCgpOworfQor
Cit2b2lkIFdlYlByb2Nlc3M6OnJlbW92ZU1lc3NhZ2VQb3J0Q2hhbm5lbCh1aW50NjRfdCBjaGFu
bmVsSUQpCit7CisgICAgbV9tZXNzYWdlUG9ydENoYW5uZWxzLnJlbW92ZShjaGFubmVsSUQpOwor
fQorI2VuZGlmCisKIHN0YXRpYyBib29sIGNhblBsdWdpbkhhbmRsZVJlc3BvbnNlKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIFN0cmluZyBwbHVnaW5QYXRoOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCAwZDAwNWE0Li5kM2RmMWI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtNzgsNiArNzgsOSBAQCBR
VF9FTkRfTkFNRVNQQUNFCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgSW50U2l6ZTsK
ICAgICBjbGFzcyBQYWdlR3JvdXA7CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorICAgIGNsYXNz
IFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsOworI2VuZGlmCiAgICAgY2xhc3MgUmVzb3VyY2VS
ZXF1ZXN0OwogICAgIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiB9CkBAIC0xMTIsNyArMTE1LDEz
IEBAIHB1YmxpYzoKICAgICB2b2lkIGNyZWF0ZVdlYlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25z
dCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAgICAgdm9pZCByZW1vdmVXZWJQYWdlKHVp
bnQ2NF90IHBhZ2VJRCk7CiAgICAgV2ViUGFnZSogZm9jdXNlZFdlYlBhZ2UoKSBjb25zdDsKLSAg
ICAKKworI2lmIEVOQUJMRShXRUJfSU5URU5UUykgCisgICAgdWludDY0X3QgYWRkTWVzc2FnZVBv
cnRDaGFubmVsKFBhc3NSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw+
KTsKKyAgICBXZWJDb3JlOjpQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbCogbWVzc2FnZVBvcnRD
aGFubmVsKHVpbnQ2NF90KTsKKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VQb3J0Q2hhbm5lbCh1aW50
NjRfdCk7CisjZW5kaWYKKwogICAgIEluamVjdGVkQnVuZGxlKiBpbmplY3RlZEJ1bmRsZSgpIGNv
bnN0IHsgcmV0dXJuIG1faW5qZWN0ZWRCdW5kbGUuZ2V0KCk7IH0KIAogICAgIGJvb2wgaXNTZXBh
cmF0ZVByb2Nlc3MoKSBjb25zdDsKQEAgLTMwMCw2ICszMDksMTAgQEAgcHJpdmF0ZToKIAogICAg
IEhhc2hNYXA8dWludDY0X3QsIFdlYkZyYW1lKj4gbV9mcmFtZU1hcDsKIAorI2lmIEVOQUJMRShX
RUJfSU5URU5UUykKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViQ29yZTo6UGxhdGZv
cm1NZXNzYWdlUG9ydENoYW5uZWw+ID4gbV9tZXNzYWdlUG9ydENoYW5uZWxzOworI2VuZGlmCisK
ICAgICBIYXNoU2V0PFN0cmluZywgQ2FzZUZvbGRpbmdIYXNoPiBtX21pbWVUeXBlc1dpdGhDdXN0
b21SZXByZXNlbnRhdGlvbnM7CiAKICAgICBUZXh0Q2hlY2tlclN0YXRlIG1fdGV4dENoZWNrZXJT
dGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbgppbmRleCAwZjgzZDViLi4yMjcxNmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0yNyw2ICsyNywxMCBAQCBtZXNzYWdl
cyAtPiBXZWJQcm9jZXNzIHsKICAgICAjIENyZWF0ZSBhIG5ldyBwYWdlLgogICAgIENyZWF0ZVdl
YlBhZ2UodWludDY0X3QgbmV3UGFnZUlELCBXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMgcGFnZUNyZWF0aW9uUGFyYW1ldGVycykKIAorI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAg
ICBSZW1vdmVNZXNzYWdlUG9ydENoYW5uZWwodWludDY0X3QgY2hhbm5lbElEKTsKKyNlbmRpZgor
CiAgICAgIyBWaXNpdGVkIGxpbmsgdHJhY2tpbmcuCiAgICAgU2V0VmlzaXRlZExpbmtUYWJsZShX
ZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZSkKICAgICBWaXNpdGVkTGlua1N0YXRl
Q2hhbmdlZChWZWN0b3I8V2ViQ29yZTo6TGlua0hhc2g+IGxpbmtIYXNoZXMpCmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDhjNGM2MC4uNzViODU1
MCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIyIEBACisyMDEyLTA4LTA0ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5k
dW1lekBpbnRlbC5jb20+CisKKyAgICAgICAgW1dLMl0gQWRkIHN1cHBvcnQgZm9yIFdlYiBJbnRl
bnRzIE1lc3NhZ2VQb3J0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODkwNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVc2UgV0tCdW5kbGVJbnRlbnQgaW5zdGVhZCBvZiBXZWJJbnRlbnREYXRhIGluCisg
ICAgICAgIFdlYktpdFRlc3RSdW5uZXIuIFdUUiBub3cgcHJpbnRzIHRoZSBudW1iZXIgb2YKKyAg
ICAgICAgTWVzc2FnZVBvcnRzIGluIHJlY2VpdmVkIFdlYiBpbnRlbnRzIGFzCisgICAgICAgIGV4
cGVjdGVkIGJ5IHRoZSBmb2xsb3dpbmcgbGF5b3V0IHRlc3RzOgorICAgICAgICB3ZWJpbnRlbnRz
L3dlYi1pbnRlbnRzLWludm9rZS1wb3J0Lmh0bWwKKyAgICAgICAgd2ViaW50ZW50cy93ZWItaW50
ZW50cy1vYmotY29uc3RydWN0b3IuaHRtbAorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwOgorICAgICAgICAoV1RSOjpJbmpl
Y3RlZEJ1bmRsZVBhZ2U6OmRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZSk6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXVFI6OkxheW91dFRlc3RDb250cm9sbGVyOjpkZWxpdmVyV2ViSW50ZW50KToKKwog
MjAxMi0wOC0xNCAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIGZh
c3QvZXZlbnRzL292ZXJmbG93LXNjcm9sbC1mYWtlLW1vdXNlLW1vdmUuaHRtbCBhbmQgZmFzdC9l
dmVudHMvZnJhbWUtc2Nyb2xsLWZha2UtbW91c2UtbW92ZS5odG1sIGFyZSBmYWlsaW5nIGluIFdl
YktpdDEKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAppbmRleCA2ZTJmNTA4Li4zYmMwMzVjIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZVBhZ2UuY3BwCkBAIC01MSw4ICs1MSw4IEBACiAjZW5kaWYKIAogI2lmIEVO
QUJMRShXRUJfSU5URU5UUykKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlSW50ZW50Lmg+CiAj
aW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZUludGVudFJlcXVlc3QuaD4KLSNpbmNsdWRlIDxXZWJL
aXQyL1dLSW50ZW50RGF0YS5oPgogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTX1RBRykK
ICNpbmNsdWRlIDxXZWJLaXQyL1dLSW50ZW50U2VydmljZUluZm8uaD4KQEAgLTU0OCwxOSArNTQ4
LDI0IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWUo
V0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlCiB7CiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRT
KQogICAgIHN0YXRpY19jYXN0PEluamVjdGVkQnVuZGxlUGFnZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+
KGNsaWVudEluZm8pKS0+bV9jdXJyZW50SW50ZW50UmVxdWVzdCA9IGludGVudFJlcXVlc3Q7Ci0g
ICAgV0tSZXRhaW5QdHI8V0tJbnRlbnREYXRhUmVmPiBpbnRlbnQoQWRvcHRXSywgV0tCdW5kbGVJ
bnRlbnRSZXF1ZXN0Q29weUludGVudERhdGEoaW50ZW50UmVxdWVzdCkpOworICAgIFdLUmV0YWlu
UHRyPFdLQnVuZGxlSW50ZW50UmVmPiBpbnRlbnQoQWRvcHRXSywgV0tCdW5kbGVJbnRlbnRSZXF1
ZXN0Q29weUludGVudChpbnRlbnRSZXF1ZXN0KSk7CiAKICAgICBJbmplY3RlZEJ1bmRsZTo6c2hh
cmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoIlJlY2VpdmVkIFdlYiBJbnRlbnQ6IGFjdGlv
bj0iKTsKLSAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tBY3Rpb24oQWRvcHRXSywgV0tJ
bnRlbnREYXRhQ29weUFjdGlvbihpbnRlbnQuZ2V0KCkpKTsKKyAgICBXS1JldGFpblB0cjxXS1N0
cmluZ1JlZj4gd2tBY3Rpb24oQWRvcHRXSywgV0tCdW5kbGVJbnRlbnRDb3B5QWN0aW9uKGludGVu
dC5nZXQoKSkpOwogICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCkt
PmFwcGVuZCh0b1dURlN0cmluZyh3a0FjdGlvbi5nZXQoKSkpOwogICAgIEluamVjdGVkQnVuZGxl
OjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiIHR5cGU9Iik7Ci0gICAgV0tSZXRh
aW5QdHI8V0tTdHJpbmdSZWY+IHdrVHlwZShBZG9wdFdLLCBXS0ludGVudERhdGFDb3B5VHlwZShp
bnRlbnQuZ2V0KCkpKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tUeXBlKEFkb3B0
V0ssIFdLQnVuZGxlSW50ZW50Q29weVR5cGUoaW50ZW50LmdldCgpKSk7CiAgICAgSW5qZWN0ZWRC
dW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKHRvV1RGU3RyaW5nKHdrVHlw
ZS5nZXQoKSkpOwogICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCkt
PmFwcGVuZCgiXG4iKTsKIAotICAgIC8vIEZJWE1FOiBQcmludCBudW1iZXIgb2YgcG9ydHMgd2hl
biBleHBvc2VkIGluIFdlYktpdDIKKyAgICBjb25zdCBzaXplX3QgbnVtTWVzc2FnZVBvcnRzID0g
V0tCdW5kbGVJbnRlbnRNZXNzYWdlUG9ydENvdW50KGludGVudC5nZXQoKSk7CisgICAgaWYgKG51
bU1lc3NhZ2VQb3J0cykgeworICAgICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5n
QnVpbGRlcigpLT5hcHBlbmQoIkhhdmUgIik7CisgICAgICAgIEluamVjdGVkQnVuZGxlOjpzaGFy
ZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZChXVEY6OlN0cmluZzo6bnVtYmVyKG51bU1lc3Nh
Z2VQb3J0cykpOworICAgICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRl
cigpLT5hcHBlbmQoIiBwb3J0c1xuIik7CisgICAgfQogCi0gICAgV0tSZXRhaW5QdHI8V0tVUkxS
ZWY+IHdrU2VydmljZVVybChBZG9wdFdLLCBXS0ludGVudERhdGFDb3B5U2VydmljZShpbnRlbnQu
Z2V0KCkpKTsKKyAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gd2tTZXJ2aWNlVXJsKEFkb3B0V0ss
IFdLQnVuZGxlSW50ZW50Q29weVNlcnZpY2UoaW50ZW50LmdldCgpKSk7CiAgICAgaWYgKHdrU2Vy
dmljZVVybCkgewogICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tTZXJ2aWNlKEFk
b3B0V0ssIFdLVVJMQ29weVN0cmluZyh3a1NlcnZpY2VVcmwuZ2V0KCkpKTsKICAgICAgICAgaWYg
KHdrU2VydmljZSAmJiAhV0tTdHJpbmdJc0VtcHR5KHdrU2VydmljZS5nZXQoKSkpIHsKQEAgLTU3
MCw3ICs1NzUsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZGlkUmVjZWl2ZUludGVudEZv
ckZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZQogICAgICAgICB9CiAgICAgfQog
Ci0gICAgV0tSZXRhaW5QdHI8V0tEaWN0aW9uYXJ5UmVmPiB3a0V4dHJhcyhBZG9wdFdLLCBXS0lu
dGVudERhdGFDb3B5RXh0cmFzKGludGVudC5nZXQoKSkpOworICAgIFdLUmV0YWluUHRyPFdLRGlj
dGlvbmFyeVJlZj4gd2tFeHRyYXMoQWRvcHRXSywgV0tCdW5kbGVJbnRlbnRDb3B5RXh0cmFzKGlu
dGVudC5nZXQoKSkpOwogICAgIFdLUmV0YWluUHRyPFdLQXJyYXlSZWY+IHdrRXh0cmFLZXlzKEFk
b3B0V0ssIFdLRGljdGlvbmFyeUNvcHlLZXlzKHdrRXh0cmFzLmdldCgpKSk7CiAgICAgY29uc3Qg
c2l6ZV90IG51bUV4dHJhS2V5cyA9IFdLQXJyYXlHZXRTaXplKHdrRXh0cmFLZXlzLmdldCgpKTsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUV4dHJhS2V5czsgKytpKSB7CkBAIC01ODMs
NyArNTg4LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZFJlY2VpdmVJbnRlbnRGb3JG
cmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGUKICAgICAgICAgSW5qZWN0ZWRCdW5k
bGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKCJcbiIpOwogICAgIH0KIAotICAg
IFdLUmV0YWluUHRyPFdLQXJyYXlSZWY+IHdrU3VnZ2VzdGlvbnMoQWRvcHRXSywgV0tJbnRlbnRE
YXRhQ29weVN1Z2dlc3Rpb25zKGludGVudC5nZXQoKSkpOworICAgIFdLUmV0YWluUHRyPFdLQXJy
YXlSZWY+IHdrU3VnZ2VzdGlvbnMoQWRvcHRXSywgV0tCdW5kbGVJbnRlbnRDb3B5U3VnZ2VzdGlv
bnMoaW50ZW50LmdldCgpKSk7CiAgICAgY29uc3Qgc2l6ZV90IG51bVN1Z2dlc3Rpb25zID0gV0tB
cnJheUdldFNpemUod2tTdWdnZXN0aW9ucy5nZXQoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBudW1TdWdnZXN0aW9uczsgKytpKSB7CiAgICAgICAgIFdLU3RyaW5nUmVmIHdrU3VnZ2Vz
dGlvbiA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0FycmF5R2V0SXRlbUF0SW5kZXgod2tT
dWdnZXN0aW9ucy5nZXQoKSwgaSkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCA3
ZDFmNzg0Li5iODY1YTg5IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcApAQCAtNDksOCAr
NDksOCBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogI2lmIEVOQUJM
RShXRUJfSU5URU5UUykKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlSW50ZW50Lmg+CiAjaW5j
bHVkZSA8V2ViS2l0Mi9XS0J1bmRsZUludGVudFJlcXVlc3QuaD4KLSNpbmNsdWRlIDxXZWJLaXQy
L1dLSW50ZW50RGF0YS5oPgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXVFIgewpAQCAtNjUyLDggKzY1
Miw4IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmRlbGl2ZXJXZWJJbnRlbnQoSlNTdHJp
bmdSZWYgYWN0aW9uLCBKU1N0cmluZ1JlZiB0eXBlCiAgICAgV0tEaWN0aW9uYXJ5QWRkSXRlbShp
bnRlbnRJbml0RGljdC5nZXQoKSwgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoInR5cGUi
KSwgdHlwZVdLLmdldCgpKTsKICAgICBXS0RpY3Rpb25hcnlBZGRJdGVtKGludGVudEluaXREaWN0
LmdldCgpLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiZGF0YSIpLCBkYXRhV0suZ2V0
KCkpOwogCi0gICAgV0tSZXRhaW5QdHI8V0tJbnRlbnREYXRhUmVmPiB3a0ludGVudERhdGEoQWRv
cHRXSywgV0tJbnRlbnREYXRhQ3JlYXRlKGludGVudEluaXREaWN0LmdldCgpKSk7Ci0gICAgV0tC
dW5kbGVQYWdlRGVsaXZlckludGVudFRvRnJhbWUoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBh
Z2UoKS0+cGFnZSgpLCBtYWluRnJhbWUsIHdrSW50ZW50RGF0YS5nZXQoKSk7CisgICAgV0tSZXRh
aW5QdHI8V0tCdW5kbGVJbnRlbnRSZWY+IHdrSW50ZW50KEFkb3B0V0ssIFdLQnVuZGxlSW50ZW50
Q3JlYXRlKGludGVudEluaXREaWN0LmdldCgpKSk7CisgICAgV0tCdW5kbGVQYWdlRGVsaXZlcklu
dGVudFRvRnJhbWUoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgpLCBtYWlu
RnJhbWUsIHdrSW50ZW50LmdldCgpKTsKICNlbmRpZgogfQogCg==
</data>
<flag name="review"
          id="168634"
          type_id="1"
          status="+"
          setter="kenneth"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158547</attachid>
            <date>2012-08-15 05:07:48 -0700</date>
            <delta_ts>2012-08-15 06:03:35 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>89072_intents_messageportsLanding.patch</filename>
            <type>text/plain</type>
            <size>60427</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxMGM2ZDVhLi5kYmI5N2EyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDgt
MTUgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKworICAg
ICAgICBbV0syXSBBZGQgc3VwcG9ydCBmb3IgV2ViIEludGVudHMgTWVzc2FnZVBvcnRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTA3MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIFVu
c2tpcCB3ZWJpbnRlbnRzL3dlYi1pbnRlbnRzLWludm9rZS1wb3J0Lmh0bWwgYW5kCisgICAgICAg
IHdlYmludGVudHMvd2ViLWludGVudHMtb2JqLWNvbnN0cnVjdG9yLmh0bWwgZm9yCisgICAgICAg
IFdlYktpdDIgRUZMIG5vdyB0aGF0IGluZm9ybWF0aW9uIGFib3V0IG1lc3NhZ2UgcG9ydHMKKyAg
ICAgICAgaXMgY29ycmVjdGx5IGRpc3BsYXllZCBieSBXZWJLaXRUZXN0UnVubmVyLgorCisgICAg
ICAgICogcGxhdGZvcm0vZWZsLXdrMi9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDEyLTA4LTE1ICBT
aGlueWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21p
dW0gTWFjXSBVbnJldmlld2VkLCByZWJhc2VsaW5lIGFmdGVyIHIxMjU2NTkuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwtd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9lZmwtd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNDdkMTNkZC4uZTlh
NjJmZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsLXdrMi9UZXN0RXhwZWN0
YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC13azIvVGVzdEV4cGVjdGF0aW9u
cwpAQCAtMjc4LDcgKzI3OCwzIEBAIEJVR1dLRUZMIDogaW5zcGVjdG9yL2V4dGVuc2lvbnMvZXh0
ZW5zaW9ucy1wYW5lbC5odG1sID0gVEVYVAogQlVHV0tFRkwgOiBpbnNwZWN0b3IvZXh0ZW5zaW9u
cy9leHRlbnNpb25zLXNpZGViYXIuaHRtbCA9IFRFWFQKIEJVR1dLRUZMIDoganF1ZXJ5L2F0dHJp
YnV0ZXMuaHRtbCA9IFRFWFQKIAotLy8gV1RSIGRvZXMgbm90IHByaW50IGluZm9ybWF0aW9uIGFi
b3V0IFdlYiBJbnRlbnRzIE1lc3NhZ2VQb3J0cwotQlVHV0s4OTA3MiA6IHdlYmludGVudHMvd2Vi
LWludGVudHMtaW52b2tlLXBvcnQuaHRtbCA9IFRFWFQKLUJVR1dLODkwNzIgOiB3ZWJpbnRlbnRz
L3dlYi1pbnRlbnRzLW9iai1jb25zdHJ1Y3Rvci5odG1sID0gVEVYVAotCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMu
dHh0CmluZGV4IGE2NmE1NmMuLmM0M2RkNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CkBAIC01Niw2
ICs1Niw3IEBAIFNFVChXZWJLaXQyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJDT1JF
X0RJUn0vYnJpZGdlL2pzYyIKICAgICAiJHtXRUJDT1JFX0RJUn0vY3NzIgogICAgICIke1dFQkNP
UkVfRElSfS9kb20iCisgICAgIiR7V0VCQ09SRV9ESVJ9L2RvbS9kZWZhdWx0IgogICAgICIke1dF
QkNPUkVfRElSfS9lZGl0aW5nIgogICAgICIke1dFQkNPUkVfRElSfS9oaXN0b3J5IgogICAgICIk
e1dFQkNPUkVfRElSfS9odG1sIgpAQCAtMzgwLDYgKzM4MSw3IEBAIFNFVChXZWJLaXQyX1NPVVJD
RVMKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQ2xpZW50LmNw
cAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dF
eHRlbnNpb24uY3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZUhpdFRlc3RSZXN1bHQuY3BwCisgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZUludGVudC5jcHAKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlSW50ZW50UmVxdWVzdC5jcHAKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAKICAgICBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmNwcApAQCAt
NDAwLDYgKzQwMiw3IEBAIFNFVChXZWJLaXQyX1NPVVJDRVMKICAgICBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUhpdFRlc3RSZXN1bHQuY3BwCiAgICAgV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUluc3BlY3Rvci5jcHAKKyAgICBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50LmNwcAogICAgIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnRSZXF1ZXN0LmNwcAogICAgIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcAog
ICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVOb2RlSGFuZGxlLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCmluZGV4IDlhMmRmMWQuLmVkNTc5ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MzQgQEAKKzIwMTItMDgtMTUgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGlu
dGVsLmNvbT4KKworICAgICAgICBbV0syXSBBZGQgc3VwcG9ydCBmb3IgV2ViIEludGVudHMgTWVz
c2FnZVBvcnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04OTA3MgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2Vu
LgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBXZWJJbnRlbnRzIE1lc3NhZ2VQb3J0cyBpbiBX
ZWJLaXQyLgorICAgICAgICBNZXNzYWdlUG9ydHMgY2FuIGJlIHBhc3NlZCB3aXRoIGEgV2ViIElu
dGVudCBpbgorICAgICAgICBvcmRlciB0byBvcGVuIGEgZGlyZWN0IGNvbW11bmljYXRpb24gY2hh
bm5lbAorICAgICAgICBiZXR3ZWVuIHRoZSBXZWIgYXBwbGljYXRpb24gYW5kIHRoZSBpbnRlbnQg
c2VydmljZS4KKworICAgICAgICBUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgYWxyZWFkeSBzdXBwb3J0
ZWQgYnkgV2ViS2l0IDEuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IElu
amVjdGVkQnVuZGxlSW50ZW50CisgICAgICAgIGNsYXNzIHdoaWNoIHdyYXBzIGEgV2ViQ29yZTo6
SW50ZW50LiBUaGlzIHdheQorICAgICAgICBpbmZvcm1hdGlvbiByZWdhcmRpbmcgdGhlIE1lc3Nh
Z2VQb3J0cyBpbiBhIFdlYgorICAgICAgICBJbnRlbnQgaXMga2VwdCB3aGVuIHVzaW5nIGFuIGlu
amVjdGVkIGJ1bmRsZS4KKworICAgICAgICBGb3IgdGhlIFVJUHJvY2VzcywgV2ViSW50ZW50RGF0
YSBub3cgY2FycmllcworICAgICAgICBpZGVudGlmaWVycyBmb3IgdGhlIE1lc3NhZ2VQb3J0cyB3
aGljaCBjYW4gZ28gb3ZlcgorICAgICAgICBJUEMuIFRob3NlIGlkZW50aWZpZXJzIG1hcCB0byBh
Y3R1YWwgTWVzc2FnZVBvcnRzCisgICAgICAgIHN0b3JlZCBpbiB0aGUgV2ViIHByb2Nlc3MuIFRo
aXMgd2F5LCB3aGVuIHRoZSBVSQorICAgICAgICBkZWxpdmVycyBhbiBpbnRlbnQgdG8gYSBmcmFt
ZSwgd2UgY2FuIGdldCBiYWNrIHRoZQorICAgICAgICBjb3JyZXNwb25kaW5nIE1lc3NhZ2VQb3J0
cyBmcm9tIHRoZSBXZWIgcHJvY2VzcworICAgICAgICBiZWZvcmUgZGVsaXZlcmluZyB0aGUgaW50
ZW50IHRvIHRoZSBET01XaW5kb3cuCisKKyAgICAgICAgVGhpcyBmdW5jdGlvbmFsaXR5IGlzIGFs
cmVhZHkgdGVzdGVkIGJ5OgorCisgICAgICAgIC0gd2ViaW50ZW50cy93ZWItaW50ZW50cy1pbnZv
a2UtcG9ydC5odG1sCisgICAgICAgIC0gd2ViaW50ZW50cy93ZWItaW50ZW50cy1vYmotY29uc3Ry
dWN0b3IuaHRtbAorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFr
ZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tCYXNlLmg6CisgICAgICAg
ICogU2hhcmVkL0FQSU9iamVjdC5oOgorICAgICAgICAqIFNoYXJlZC9JbnRlbnREYXRhLmNwcDog
QWRkIE1lc3NhZ2VQb3J0IGlkZW50aWZpZXJzLgorICAgICAgICAoV2ViS2l0OjpJbnRlbnREYXRh
OjpJbnRlbnREYXRhKToKKyAgICAgICAgKFdlYktpdDo6SW50ZW50RGF0YTo6ZW5jb2RlKToKKyAg
ICAgICAgKFdlYktpdDo6SW50ZW50RGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvSW50
ZW50RGF0YS5oOgorICAgICAgICAoSW50ZW50RGF0YSk6CisgICAgICAgICogVGFyZ2V0LnByaToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tJbnRlbnREYXRhLmNwcDogUmVuYW1lIFdLSW50
ZW50RGF0YUNvcHlFeHRyYSgpIHRvCisgICAgICAgIFdLSW50ZW50RGF0YUNvcHlFeHRyYVZhbHVl
KCkgZm9yIGNsYXJpdHkuCisgICAgICAgIChXS0ludGVudERhdGFDb3B5RXh0cmFWYWx1ZSk6IAor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0ludGVudERhdGEuaDogUmVtb3ZlIFdLSW50ZW50
RGF0YUNyZWF0ZSgpIGZ1bmN0aW9uIG5vdworICAgICAgICB0aGF0IFdUUiB1c2VzIFdLQnVuZGxl
SW50ZW50Q3JlYXRlKCkgaW5zdGVhZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tf
aW50ZW50LmNwcDoKKyAgICAgICAgKGV3a19pbnRlbnRfZXh0cmFfZ2V0KTogVXNlIFdLSW50ZW50
RGF0YUNvcHlFeHRyYVZhbHVlKCkgaW5zdGVhZCBvZgorICAgICAgICBXS0ludGVudERhdGFDb3B5
RXh0cmEoKSBzaW5jZSBpdCB3YXMgcmVuYW1lZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViSW50
ZW50RGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkludGVudERhdGE6OldlYkludGVudERh
dGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnRlbnREYXRhOjp+V2ViSW50ZW50RGF0YSk6IFJl
bW92ZSBNZXNzYWdlUG9ydHMgZnJvbSBXZWJQcm9jZXNzIHVwb24KKyAgICAgICAgV2ViSW50ZW50
RGF0YSBkZXN0cnVjdGlvbi4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkludGVudERhdGE6OmV4dHJhcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkludGVudERhdGEu
aDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkludGVudERhdGE6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJJbnRlbnREYXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRSZWNlaXZl
SW50ZW50Rm9yRnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojpy
ZW1vdmVNZXNzYWdlUG9ydENoYW5uZWwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuaDoKKyAgICAgICAgKFdlYlByb2Nlc3NQcm94eSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUFQSUNhc3QuaDoKKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUlu
dGVudC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0lu
dGVudERhdGEuY3BwLgorICAgICAgICAoV0tCdW5kbGVJbnRlbnRHZXRUeXBlSUQpOgorICAgICAg
ICAoV0tCdW5kbGVJbnRlbnRDcmVhdGUpOgorICAgICAgICAoV0tCdW5kbGVJbnRlbnRDb3B5QWN0
aW9uKToKKyAgICAgICAgKFdLQnVuZGxlSW50ZW50Q29weVR5cGUpOgorICAgICAgICAoV0tCdW5k
bGVJbnRlbnRDb3B5U2VydmljZSk6CisgICAgICAgIChXS0J1bmRsZUludGVudENvcHlTdWdnZXN0
aW9ucyk6CisgICAgICAgIChXS0J1bmRsZUludGVudENvcHlFeHRyYVZhbHVlKToKKyAgICAgICAg
KFdLQnVuZGxlSW50ZW50Q29weUV4dHJhcyk6CisgICAgICAgIChXS0J1bmRsZUludGVudE1lc3Nh
Z2VQb3J0Q291bnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVJbnRlbnQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLSW50ZW50RGF0YS5oLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVJbnRlbnRSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdLQnVuZGxlSW50ZW50
UmVxdWVzdENvcHlJbnRlbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVJbnRlbnRSZXF1ZXN0Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwOgorICAgICAgICAoV0tCdW5kbGVQYWdl
RGVsaXZlckludGVudFRvRnJhbWUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJJbnRlbnREYXRhLmNwcC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJLaXQ6OkluamVjdGVkQnVuZGxlSW50ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0
OjpJbmplY3RlZEJ1bmRsZUludGVudDo6SW5qZWN0ZWRCdW5kbGVJbnRlbnQpOgorICAgICAgICAo
V2ViS2l0OjpJbmplY3RlZEJ1bmRsZUludGVudDo6YWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
SW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OnBheWxvYWRUeXBlKToKKyAgICAgICAgKFdlYktpdDo6SW5q
ZWN0ZWRCdW5kbGVJbnRlbnQ6OnNlcnZpY2UpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1
bmRsZUludGVudDo6ZGF0YSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlSW50ZW50
OjpleHRyYSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlSW50ZW50OjpleHRyYXMp
OgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZUludGVudDo6c3VnZ2VzdGlvbnMpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnQu
aDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkludGVudERhdGEuaC4K
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChJbmplY3RlZEJ1bmRsZUludGVudCk6CisgICAg
ICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlSW50ZW50Ojpjb3JlSW50ZW50KToKKyAgICAgICAg
KFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OnR5cGUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0OjppbnRlbnQpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0
Lmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1
ZXN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJGcmFtZTo6ZGVsaXZlckludGVudCk6CisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJGcmFtZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
ZGVsaXZlckNvcmVJbnRlbnRUb0ZyYW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJQYWdlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOiBTdG9yZSBNZXNzYWdlUG9ydHMgaW4gV2Vi
UHJvY2VzcyBhbmQga2VlcCBtYXBwaW5nIHdpdGgKKyAgICAgICAgdGhlaXIgaWRlbnRpZmllcnMu
CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjphZGRNZXNz
YWdlUG9ydENoYW5uZWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjptZXNzYWdlUG9y
dENoYW5uZWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpyZW1vdmVNZXNzYWdlUG9y
dENoYW5uZWwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlByb2Nlc3MubWVzc2FnZXMuaW46CisKIDIwMTItMDgtMTQgIEFkYW0gQmFydGggIDxhYmFydGhA
d2Via2l0Lm9yZz4KIAogICAgICAgICBEZWxldGUgRnJhbWU6OmRvbVdpbmRvdygpIGFuZCBGcmFt
ZTo6ZXhpc3RpbmdET01XaW5kb3coKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFr
ZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXgg
ZDczN2JjNy4uZDQxN2I1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUu
bGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC05NjEs
NiArOTYxLDggQEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW5pdGlhbGl6ZS5oIFwKIAlTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW5zcGVjdG9y
LmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZUluc3BlY3Rvci5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50LmNwcCBcCisJU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudC5oIFwKIAlTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50UmVxdWVz
dC5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVJbnRlbnRSZXF1ZXN0LmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVOb2RlSGFuZGxlLmNwcCBcCkBAIC05OTUsNiArOTk3
LDggQEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmggXAogCVNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0
UmVzdWx0LmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuaCBcCisJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudC5jcHAgXAorCVNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnQuaCBcCiAJ
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUlu
dGVudFJlcXVlc3QuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCmluZGV4IDY4NTRlY2MuLmE2YThiZDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKQEAgLTEzNSw2ICsxMzUsNyBAQCB0
eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbiogV0tC
dW5kbGVET01XaW5kb3dFeHRlbnNpbwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tCdW5k
bGVGcmFtZSogV0tCdW5kbGVGcmFtZVJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdL
QnVuZGxlSGl0VGVzdFJlc3VsdCogV0tCdW5kbGVIaXRUZXN0UmVzdWx0UmVmOwogdHlwZWRlZiBj
b25zdCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVJbnNwZWN0b3IqIFdLQnVuZGxlSW5zcGVjdG9yUmVm
OwordHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVJbnRlbnQqIFdLQnVuZGxlSW50
ZW50UmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tCdW5kbGVJbnRlbnRSZXF1ZXN0
KiBXS0J1bmRsZUludGVudFJlcXVlc3RSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVX
S0J1bmRsZU5hdmlnYXRpb25BY3Rpb24qIFdLQnVuZGxlTmF2aWdhdGlvbkFjdGlvblJlZjsKIHR5
cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLQnVuZGxlTm9kZUhhbmRsZSogV0tCdW5kbGVOb2Rl
SGFuZGxlUmVmOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5o
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCmluZGV4IDhlNGQyOTMuLjcwOGVm
ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKQEAgLTExNyw2ICsxMTcsNyBAQCBwdWJs
aWM6CiAgICAgICAgIFR5cGVCdW5kbGVGcmFtZSwKICAgICAgICAgVHlwZUJ1bmRsZUhpdFRlc3RS
ZXN1bHQsCiAgICAgICAgIFR5cGVCdW5kbGVJbnNwZWN0b3IsCisgICAgICAgIFR5cGVCdW5kbGVJ
bnRlbnQsCiAgICAgICAgIFR5cGVCdW5kbGVJbnRlbnRSZXF1ZXN0LAogICAgICAgICBUeXBlQnVu
ZGxlTmF2aWdhdGlvbkFjdGlvbiwKICAgICAgICAgVHlwZUJ1bmRsZU5vZGVIYW5kbGUsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvSW50ZW50RGF0YS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvSW50ZW50RGF0YS5jcHAKaW5kZXggNDk5NWIyZS4uNDEwNzg3NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0ludGVudERhdGEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9JbnRlbnREYXRhLmNwcApAQCAtMzEsNyArMzEsMTAgQEAKICNpbmNsdWRl
ICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvSW50ZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9NZXNzYWdlUG9ydENoYW5uZWwu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmg+CiAKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC00NSw2ICs0OCwxMiBAQCBJbnRlbnREYXRhOjpJ
bnRlbnREYXRhKEludGVudCogY29yZUludGVudCkKICAgICAsIGV4dHJhcyhjb3JlSW50ZW50LT5l
eHRyYXMoKSkKICAgICAsIHN1Z2dlc3Rpb25zKGNvcmVJbnRlbnQtPnN1Z2dlc3Rpb25zKCkpCiB7
CisgICAgTWVzc2FnZVBvcnRDaGFubmVsQXJyYXkqIGNvcmVNZXNzYWdlUG9ydHMgPSBjb3JlSW50
ZW50LT5tZXNzYWdlUG9ydHMoKTsKKyAgICBpZiAoY29yZU1lc3NhZ2VQb3J0cykgeworICAgICAg
ICBzaXplX3QgbnVtTWVzc2FnZVBvcnRzID0gY29yZU1lc3NhZ2VQb3J0cy0+c2l6ZSgpOworICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bU1lc3NhZ2VQb3J0czsgKytpKQorICAgICAg
ICAgICAgbWVzc2FnZVBvcnRzLmFwcGVuZChXZWJQcm9jZXNzOjpzaGFyZWQoKS5hZGRNZXNzYWdl
UG9ydENoYW5uZWwoKCpjb3JlTWVzc2FnZVBvcnRzKVtpXS0+Y2hhbm5lbCgpKSk7CisgICAgfQog
fQogCiB2b2lkIEludGVudERhdGE6OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqIGVu
Y29kZXIpIGNvbnN0CkBAIC01NSw2ICs2NCw3IEBAIHZvaWQgSW50ZW50RGF0YTo6ZW5jb2RlKENv
cmVJUEM6OkFyZ3VtZW50RW5jb2RlciogZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyLT5lbmNv
ZGUoQ29yZUlQQzo6RGF0YVJlZmVyZW5jZShkYXRhKSk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKGV4
dHJhcyk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKHN1Z2dlc3Rpb25zKTsKKyAgICBlbmNvZGVyLT5l
bmNvZGUobWVzc2FnZVBvcnRzKTsKIH0KIAogYm9vbCBJbnRlbnREYXRhOjpkZWNvZGUoQ29yZUlQ
Qzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBJbnRlbnREYXRhJiBpbnRlbnREYXRhKQpAQCAt
NzMsNiArODMsOCBAQCBib29sIEludGVudERhdGE6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERl
Y29kZXIqIGRlY29kZXIsIEludGVudERhdGEmIGludGVudERhdAogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoaW50ZW50RGF0YS5zdWdnZXN0aW9ucykpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZShpbnRlbnREYXRh
Lm1lc3NhZ2VQb3J0cykpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiB0cnVl
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0ludGVudERhdGEuaCBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9JbnRlbnREYXRhLmgKaW5kZXggOTZlMmQ5Zi4uZTg0MzVjMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0ludGVudERhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvSW50ZW50RGF0YS5oCkBAIC0yOSw3ICsyOSw4IEBACiAjaWYgRU5B
QkxFKFdFQl9JTlRFTlRTKQogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCi0jaW5jbHVkZSAiR2Vu
ZXJpY0NhbGxiYWNrLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9LVVJMLmg+CisjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNl
IENvcmVJUEMgewpAQCAtNTYsNiArNTcsNyBAQCBzdHJ1Y3QgSW50ZW50RGF0YSB7CiAgICAgVmVj
dG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gZXh0cmFzOwog
ICAgIFZlY3RvcjxXZWJDb3JlOjpLVVJMPiBzdWdnZXN0aW9uczsKKyAgICBWZWN0b3I8dWludDY0
X3Q+IG1lc3NhZ2VQb3J0czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkK
aW5kZXggYjhlMWFlYy4uMzczMzY1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVGFyZ2V0
LnByaQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCkBAIC0yNzksNiArMjc5LDcgQEAg
SEVBREVSUyArPSBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZUJhY2tGb3J3YXJkTGlzdC5oIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5oIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlSGl0VGVzdFJlc3VsdC5oIFwKKyAgICBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW50ZW50LmggXAogICAgIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnRSZXF1ZXN0LmggXAogICAgIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmggXAogICAg
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVOb2RlSGFuZGxlLmggXApA
QCAtMjkyLDYgKzI5Myw3IEBAIEhFQURFUlMgKz0gXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5oIFwKICAgICBXZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5oIFwKKyAgICBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50LmggXAogICAgIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0LmggXAogICAg
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9u
LmggXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlQ29u
dGV4dE1lbnVDbGllbnQuaCBcCkBAIC02MzEsNiArNjMzLDcgQEAgU09VUkNFUyArPSBcCiAgICAg
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNwcCBcCiAgICAg
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUhpdFRlc3RSZXN1bHQuY3Bw
IFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlSW5zcGVjdG9y
LmNwcCBcCisgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVu
dC5jcHAgXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRl
bnRSZXF1ZXN0LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZU5hdmlnYXRpb25BY3Rpb24uY3BwIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlTm9kZUhhbmRsZS5jcHAgXApAQCAtNjQ2LDYgKzY0OSw3IEBAIFNPVVJD
RVMgKz0gXAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVDbGll
bnQuY3BwIFwKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlRE9N
V2luZG93RXh0ZW5zaW9uLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3BwIFwKKyAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlSW50ZW50LmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuY3BwIFwKICAgICBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlvbi5jcHAgXAogICAgIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGll
bnQuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0lu
dGVudERhdGEuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLSW50ZW50RGF0
YS5jcHAKaW5kZXggN2E5MmRiNS4uOTJlNjE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLSW50ZW50RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLSW50ZW50RGF0YS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRl
ICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXS0RpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJXS1N0
cmluZy5oIgorI2luY2x1ZGUgIldlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogCiAjaWYgRU5B
QkxFKFdFQl9JTlRFTlRTKQogI2luY2x1ZGUgIldlYkludGVudERhdGEuaCIKQEAgLTQ3LDI3ICs0
OCw2IEBAIFdLVHlwZUlEIFdLSW50ZW50RGF0YUdldFR5cGVJRCgpCiAjZW5kaWYKIH0KIAotV0tJ
bnRlbnREYXRhUmVmIFdLSW50ZW50RGF0YUNyZWF0ZShXS0RpY3Rpb25hcnlSZWYgaW5pdERpY3Rp
b25hcnlSZWYpCi17Ci0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotICAgIEludGVudERhdGEgaW50
ZW50RGF0YTsKLSAgICBXS1N0cmluZ1JlZiBhY3Rpb24gPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1Jl
Zj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShpbml0RGljdGlvbmFyeVJlZiwgV0tTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoImFjdGlvbiIpKSk7Ci0gICAgQVNTRVJUKGFjdGlvbik7Ci0g
ICAgaW50ZW50RGF0YS5hY3Rpb24gPSB0b0ltcGwoYWN0aW9uKS0+c3RyaW5nKCk7Ci0gICAgV0tT
dHJpbmdSZWYgdHlwZSA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJ
dGVtRm9yS2V5KGluaXREaWN0aW9uYXJ5UmVmLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygidHlwZSIpKSk7Ci0gICAgQVNTRVJUKHR5cGUpOwotICAgIGludGVudERhdGEudHlwZSA9IHRv
SW1wbCh0eXBlKS0+c3RyaW5nKCk7Ci0gICAgV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYgZGF0
YSA9IHN0YXRpY19jYXN0PFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmPihXS0RpY3Rpb25hcnlH
ZXRJdGVtRm9yS2V5KGluaXREaWN0aW9uYXJ5UmVmLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZygiZGF0YSIpKSk7Ci0gICAgaWYgKGRhdGEpCi0gICAgICAgIGludGVudERhdGEuZGF0YSA9
IHRvSW1wbChkYXRhKS0+ZGF0YVJlZmVyZW5jZSgpLnZlY3RvcigpOwotCi0gICAgUmVmUHRyPFdl
YkludGVudERhdGE+IHdlYkludGVudERhdGEgPSBXZWJJbnRlbnREYXRhOjpjcmVhdGUoaW50ZW50
RGF0YSk7Ci0gICAgcmV0dXJuIHRvQVBJKHdlYkludGVudERhdGEucmVsZWFzZSgpLmxlYWtSZWYo
KSk7Ci0jZWxzZQotICAgIHJldHVybiAwOwotI2VuZGlmCi19Ci0KIFdLU3RyaW5nUmVmIFdLSW50
ZW50RGF0YUNvcHlBY3Rpb24oV0tJbnRlbnREYXRhUmVmIGludGVudFJlZikKIHsKICNpZiBFTkFC
TEUoV0VCX0lOVEVOVFMpCkBAIC0xMDQsNyArODQsNyBAQCBXS0FycmF5UmVmIFdLSW50ZW50RGF0
YUNvcHlTdWdnZXN0aW9ucyhXS0ludGVudERhdGFSZWYgaW50ZW50UmVmKQogI2VuZGlmCiB9CiAK
LVdLU3RyaW5nUmVmIFdLSW50ZW50RGF0YUNvcHlFeHRyYShXS0ludGVudERhdGFSZWYgaW50ZW50
UmVmLCBXS1N0cmluZ1JlZiBrZXkpCitXS1N0cmluZ1JlZiBXS0ludGVudERhdGFDb3B5RXh0cmFW
YWx1ZShXS0ludGVudERhdGFSZWYgaW50ZW50UmVmLCBXS1N0cmluZ1JlZiBrZXkpCiB7CiAjaWYg
RU5BQkxFKFdFQl9JTlRFTlRTKQogICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwoaW50ZW50
UmVmKS0+ZXh0cmEodG9XVEZTdHJpbmcoa2V5KSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLSW50ZW50RGF0YS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLSW50ZW50RGF0YS5oCmluZGV4IDFmODA5ZWMuLmNhZjFiNDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0ludGVudERhdGEuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tJbnRlbnREYXRhLmgKQEAgLTM0LDEzICsz
NCwxMSBAQCBleHRlcm4gIkMiIHsKIAogV0tfRVhQT1JUIFdLVHlwZUlEIFdLSW50ZW50RGF0YUdl
dFR5cGVJRCgpOwogCi1XS19FWFBPUlQgV0tJbnRlbnREYXRhUmVmIFdLSW50ZW50RGF0YUNyZWF0
ZShXS0RpY3Rpb25hcnlSZWYgaW5pdERpY3Rpb25hcnkpOwotCiBXS19FWFBPUlQgV0tTdHJpbmdS
ZWYgV0tJbnRlbnREYXRhQ29weUFjdGlvbihXS0ludGVudERhdGFSZWYgaW50ZW50UmVmKTsKIFdL
X0VYUE9SVCBXS1N0cmluZ1JlZiBXS0ludGVudERhdGFDb3B5VHlwZShXS0ludGVudERhdGFSZWYg
aW50ZW50UmVmKTsKIFdLX0VYUE9SVCBXS1VSTFJlZiBXS0ludGVudERhdGFDb3B5U2VydmljZShX
S0ludGVudERhdGFSZWYgaW50ZW50UmVmKTsKIFdLX0VYUE9SVCBXS0FycmF5UmVmIFdLSW50ZW50
RGF0YUNvcHlTdWdnZXN0aW9ucyhXS0ludGVudERhdGFSZWYgaW50ZW50UmVmKTsKLVdLX0VYUE9S
VCBXS1N0cmluZ1JlZiBXS0ludGVudERhdGFDb3B5RXh0cmEoV0tJbnRlbnREYXRhUmVmIGludGVu
dFJlZiwgV0tTdHJpbmdSZWYga2V5KTsKK1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0ludGVudERh
dGFDb3B5RXh0cmFWYWx1ZShXS0ludGVudERhdGFSZWYgaW50ZW50UmVmLCBXS1N0cmluZ1JlZiBr
ZXkpOwogV0tfRVhQT1JUIFdLRGljdGlvbmFyeVJlZiBXS0ludGVudERhdGFDb3B5RXh0cmFzKFdL
SW50ZW50RGF0YVJlZiBpbnRlbnRSZWYpOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19pbnRlbnQuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2ludGVudC5jcHAKaW5kZXggODU2MTc5
My4uNWMyYjIxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX2ludGVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X2ludGVudC5jcHAKQEAgLTE3MSw3ICsxNzEsNyBAQCBjb25zdCBjaGFyKiBld2tfaW50ZW50X2V4
dHJhX2dldChjb25zdCBFd2tfSW50ZW50KiBpbnRlbnQsIGNvbnN0IGNoYXIqIGtleSkKICAgICBF
V0tfSU5URU5UX1dLX0dFVF9PUl9SRVRVUk4oaW50ZW50LCB3a0ludGVudCwgMCk7CiAKICAgICBX
S1JldGFpblB0cjxXS1N0cmluZ1JlZj4ga2V5UmVmID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZyhrZXkpKTsKLSAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tWYWx1
ZShBZG9wdFdLLCBXS0ludGVudERhdGFDb3B5RXh0cmEod2tJbnRlbnQsIGtleVJlZi5nZXQoKSkp
OworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB3a1ZhbHVlKEFkb3B0V0ssIFdLSW50ZW50
RGF0YUNvcHlFeHRyYVZhbHVlKHdrSW50ZW50LCBrZXlSZWYuZ2V0KCkpKTsKICAgICBTdHJpbmcg
dmFsdWUgPSB0b0ltcGwod2tWYWx1ZS5nZXQoKSktPnN0cmluZygpOwogICAgIGlmICh2YWx1ZS5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkludGVudERhdGEuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkludGVudERhdGEuY3BwCmluZGV4IDk2MTI4ZGIuLjYzMmFhM2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnRlbnREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViSW50ZW50RGF0YS5jcHAKQEAgLTMwLDE2ICszMCwyOSBAQAogCiAjaW5j
bHVkZSAiSW1tdXRhYmxlQXJyYXkuaCIKICNpbmNsdWRlICJJbW11dGFibGVEaWN0aW9uYXJ5Lmgi
CisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCisjaW5jbHVkZSAiV2ViU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCiAjaW5jbHVkZSAiV2ViVVJMLmgi
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1XZWJJbnRlbnREYXRhOjpXZWJJbnRlbnREYXRhKGNv
bnN0IEludGVudERhdGEmIHN0b3JlKQorV2ViSW50ZW50RGF0YTo6V2ViSW50ZW50RGF0YShjb25z
dCBJbnRlbnREYXRhJiBzdG9yZSwgV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzKQogICAgIDogbV9z
dG9yZShzdG9yZSkKKyAgICAsIG1fcHJvY2Vzcyhwcm9jZXNzKQogewogfQogCitXZWJJbnRlbnRE
YXRhOjp+V2ViSW50ZW50RGF0YSgpCit7CisgICAgLy8gUmVtb3ZlIE1lc3NhZ2VQb3J0Q2hhbm5l
bHMgZnJvbSBXZWJQcm9jZXNzLgorICAgIGlmIChtX3Byb2Nlc3MpIHsKKyAgICAgICAgc2l6ZV90
IG51bU1lc3NhZ2VQb3J0cyA9IG1fc3RvcmUubWVzc2FnZVBvcnRzLnNpemUoKTsKKyAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1NZXNzYWdlUG9ydHM7ICsraSkKKyAgICAgICAgICAg
IG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVBvcnRDaGFubmVsKG1fc3RvcmUubWVzc2FnZVBvcnRz
W2ldKTsKKyAgICB9Cit9CisKIFBhc3NSZWZQdHI8V2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlPiBX
ZWJJbnRlbnREYXRhOjpkYXRhKCkgY29uc3QKIHsKICAgICBWZWN0b3I8dWludDhfdD4gZGF0YUNv
cHkgPSBtX3N0b3JlLmRhdGE7CkBAIC02Niw2ICs3OSw3IEBAIFBhc3NSZWZQdHI8SW1tdXRhYmxl
RGljdGlvbmFyeT4gV2ViSW50ZW50RGF0YTo6ZXh0cmFzKCkgY29uc3QKICAgICBIYXNoTWFwPFN0
cmluZywgU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9zdG9yZS5leHRyYXMuZW5kKCk7
CiAgICAgZm9yIChIYXNoTWFwPFN0cmluZywgU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBt
X3N0b3JlLmV4dHJhcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCiAgICAgICAgIHdrRXh0cmFz
LnNldChpdC0+Zmlyc3QsIFdlYlN0cmluZzo6Y3JlYXRlKGl0LT5zZWNvbmQpKTsKKwogICAgIHJl
dHVybiBJbW11dGFibGVEaWN0aW9uYXJ5OjphZG9wdCh3a0V4dHJhcyk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnRlbnREYXRhLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViSW50ZW50RGF0YS5oCmluZGV4IGRlY2Y0YWUuLjlkNTlmOTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnRlbnREYXRhLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkludGVudERhdGEuaApAQCAtMzAsMjEgKzMwLDI2
IEBACiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJJbnRlbnREYXRhLmgiCi0j
aW5jbHVkZSAiV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9L
VVJMLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKK2NsYXNzIEltbXV0YWJsZUFycmF5OworY2xhc3MgSW1tdXRhYmxlRGljdGlvbmFyeTsKK2Ns
YXNzIFdlYlByb2Nlc3NQcm94eTsKK2NsYXNzIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKKwog
Y2xhc3MgV2ViSW50ZW50RGF0YSA6IHB1YmxpYyBBUElPYmplY3QgewogcHVibGljOgogICAgIHN0
YXRpYyBjb25zdCBUeXBlIEFQSVR5cGUgPSBUeXBlSW50ZW50RGF0YTsKIAotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFdlYkludGVudERhdGE+IGNyZWF0ZShjb25zdCBJbnRlbnREYXRhJiBzdG9yZSkK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJJbnRlbnREYXRhPiBjcmVhdGUoY29uc3QgSW50ZW50
RGF0YSYgc3RvcmUsIFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcykKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgV2ViSW50ZW50RGF0YShzdG9yZSkpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFdlYkludGVudERhdGEoc3RvcmUsIHByb2Nlc3MpKTsKICAgICB9CiAKLSAg
ICB2aXJ0dWFsIH5XZWJJbnRlbnREYXRhKCkgeyB9CisgICAgdmlydHVhbCB+V2ViSW50ZW50RGF0
YSgpOwogCiAgICAgY29uc3QgU3RyaW5nJiBhY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3N0b3Jl
LmFjdGlvbjsgfQogICAgIGNvbnN0IFN0cmluZyYgcGF5bG9hZFR5cGUoKSBjb25zdCB7IHJldHVy
biBtX3N0b3JlLnR5cGU7IH0KQEAgLTU3LDExICs2MiwxMiBAQCBwdWJsaWM6CiAgICAgY29uc3Qg
SW50ZW50RGF0YSYgc3RvcmUoKSBjb25zdCB7IHJldHVybiBtX3N0b3JlOyB9CiAKIHByaXZhdGU6
Ci0gICAgV2ViSW50ZW50RGF0YShjb25zdCBJbnRlbnREYXRhJik7CisgICAgV2ViSW50ZW50RGF0
YShjb25zdCBJbnRlbnREYXRhJiwgV2ViUHJvY2Vzc1Byb3h5Kik7CiAKICAgICB2aXJ0dWFsIFR5
cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIEFQSVR5cGU7IH0KIAogICAgIEludGVudERhdGEgbV9z
dG9yZTsKKyAgICBXZWJQcm9jZXNzUHJveHkqIG1fcHJvY2VzczsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRl
eCA5YzRkZjhlLi5mZjEzNzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcApAQCAtMjIwNiw3ICsyMjA2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2Vp
dmVJbnRlbnRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBJbnRlbnREYXRhJgogICAg
IFdlYkZyYW1lUHJveHkqIGZyYW1lID0gcHJvY2VzcygpLT53ZWJGcmFtZShmcmFtZUlEKTsKICAg
ICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKIAotICAgIFJlZlB0cjxXZWJJbnRlbnREYXRhPiB3ZWJJ
bnRlbnREYXRhID0gV2ViSW50ZW50RGF0YTo6Y3JlYXRlKGludGVudERhdGEpOworICAgIFJlZlB0
cjxXZWJJbnRlbnREYXRhPiB3ZWJJbnRlbnREYXRhID0gV2ViSW50ZW50RGF0YTo6Y3JlYXRlKGlu
dGVudERhdGEsIHByb2Nlc3MoKSk7CiAgICAgbV9sb2FkZXJDbGllbnQuZGlkUmVjZWl2ZUludGVu
dEZvckZyYW1lKHRoaXMsIGZyYW1lLCB3ZWJJbnRlbnREYXRhLmdldCgpLCB1c2VyRGF0YS5nZXQo
KSk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAKaW5kZXggM2U3MGZlZS4uMjJhMmI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTE5OSw2ICsxOTksMTYgQEAgdm9pZCBXZWJQcm9j
ZXNzUHJveHk6OnJlbW92ZVdlYlBhZ2UodWludDY0X3QgcGFnZUlEKQogICAgIG1fcGFnZU1hcC5y
ZW1vdmUocGFnZUlEKTsKIH0KIAorI2lmIEVOQUJMRShXRUJfSU5URU5UUykKK3ZvaWQgV2ViUHJv
Y2Vzc1Byb3h5OjpyZW1vdmVNZXNzYWdlUG9ydENoYW5uZWwodWludDY0X3QgY2hhbm5lbElEKQor
eworICAgIGlmICghaXNWYWxpZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzOjpSZW1vdmVNZXNzYWdlUG9ydENoYW5uZWwoY2hhbm5lbElEKSwgLyog
ZGVzdGluYXRpb25JRCAqLyAwKTsKK30KKyNlbmRpZgorCiBXZWJCYWNrRm9yd2FyZExpc3RJdGVt
KiBXZWJQcm9jZXNzUHJveHk6OndlYkJhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBpdGVtSUQpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIG1fYmFja0ZvcndhcmRMaXN0SXRlbU1hcC5nZXQoaXRlbUlEKS5n
ZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCA0
MGFiNTQ4Li4yZGMyMDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5oCkBAIC04NSw2ICs4NSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRFeGlzdGluZ1dl
YlBhZ2UoV2ViUGFnZVByb3h5KiwgdWludDY0X3QgcGFnZUlEKTsKICAgICB2b2lkIHJlbW92ZVdl
YlBhZ2UodWludDY0X3QgcGFnZUlEKTsKIAorI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICB2
b2lkIHJlbW92ZU1lc3NhZ2VQb3J0Q2hhbm5lbCh1aW50NjRfdCBjaGFubmVsSUQpOworI2VuZGlm
CisKICAgICBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiB3ZWJCYWNrRm9yd2FyZEl0ZW0odWludDY0
X3QgaXRlbUlEKSBjb25zdDsKIAogICAgIFJlc3BvbnNpdmVuZXNzVGltZXIqIHJlc3BvbnNpdmVu
ZXNzVGltZXIoKSB7IHJldHVybiAmbV9yZXNwb25zaXZlbmVzc1RpbWVyOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
QVBJQ2FzdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZUFQSUNhc3QuaAppbmRleCAzMzU1ZDA4Li4wMThlZjc5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQVBJ
Q2FzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVBUElDYXN0LmgKQEAgLTQ2LDYgKzQ2LDcgQEAgY2xhc3MgSW5qZWN0ZWRCdW5k
bGVCYWNrRm9yd2FyZExpc3Q7CiBjbGFzcyBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0
ZW07CiBjbGFzcyBJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lvbjsKIGNsYXNzIEluamVj
dGVkQnVuZGxlSGl0VGVzdFJlc3VsdDsKK2NsYXNzIEluamVjdGVkQnVuZGxlSW50ZW50OwogY2xh
c3MgSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0OwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVOYXZp
Z2F0aW9uQWN0aW9uOwogY2xhc3MgSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOwpAQCAtNjQsNiAr
NjUsNyBAQCBXS19BRERfQVBJX01BUFBJTkcoV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb25SZWYs
IEluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaQogV0tfQUREX0FQSV9NQVBQSU5HKFdLQnVu
ZGxlRnJhbWVSZWYsIFdlYkZyYW1lKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLQnVuZGxlSGl0VGVz
dFJlc3VsdFJlZiwgSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0KQogV0tfQUREX0FQSV9NQVBQ
SU5HKFdLQnVuZGxlSW5zcGVjdG9yUmVmLCBXZWJJbnNwZWN0b3IpCitXS19BRERfQVBJX01BUFBJ
TkcoV0tCdW5kbGVJbnRlbnRSZWYsIEluamVjdGVkQnVuZGxlSW50ZW50KQogV0tfQUREX0FQSV9N
QVBQSU5HKFdLQnVuZGxlSW50ZW50UmVxdWVzdFJlZiwgSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1
ZXN0KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLQnVuZGxlTmF2aWdhdGlvbkFjdGlvblJlZiwgSW5q
ZWN0ZWRCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLQnVuZGxl
Tm9kZUhhbmRsZVJlZiwgSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlSW50ZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NjFh
NTE0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudC5jcHAKQEAgLTAsMCArMSwxMzQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXS0J1bmRsZUlu
dGVudC5oIgorCisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorI2luY2x1ZGUgIkltbXV0YWJsZUFy
cmF5LmgiCisjaW5jbHVkZSAiSW1tdXRhYmxlRGljdGlvbmFyeS5oIgorI2luY2x1ZGUgIkluamVj
dGVkQnVuZGxlSW50ZW50LmgiCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV0tC
dW5kbGVBUElDYXN0LmgiCisjaW5jbHVkZSAiV0tEaWN0aW9uYXJ5LmgiCisjaW5jbHVkZSAiV0tT
dHJpbmcuaCIKKyNpbmNsdWRlICJXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKwordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworI2VuZGlmCisKK1dL
VHlwZUlEIFdLQnVuZGxlSW50ZW50R2V0VHlwZUlEKCkKK3sKKyNpZiBFTkFCTEUoV0VCX0lOVEVO
VFMpCisgICAgcmV0dXJuIHRvQVBJKEluamVjdGVkQnVuZGxlSW50ZW50OjpBUElUeXBlKTsKKyNl
bHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KKworV0tCdW5kbGVJbnRlbnRSZWYgV0tCdW5k
bGVJbnRlbnRDcmVhdGUoV0tEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnlSZWYpCit7CisjaWYgRU5B
QkxFKFdFQl9JTlRFTlRTKQorICAgIFdLU3RyaW5nUmVmIGFjdGlvbiA9IHN0YXRpY19jYXN0PFdL
U3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KGRpY3Rpb25hcnlSZWYsIFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJhY3Rpb24iKSkpOworICAgIEFTU0VSVChhY3Rpb24p
OworICAgIFdLU3RyaW5nUmVmIHR5cGUgPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tEaWN0
aW9uYXJ5R2V0SXRlbUZvcktleShkaWN0aW9uYXJ5UmVmLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZygidHlwZSIpKSk7CisgICAgQVNTRVJUKHR5cGUpOworICAgIFdLU2VyaWFsaXplZFNj
cmlwdFZhbHVlUmVmIGRhdGEgPSBzdGF0aWNfY2FzdDxXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJl
Zj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShkaWN0aW9uYXJ5UmVmLCBXS1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZygiZGF0YSIpKSk7CisgICAgTWVzc2FnZVBvcnRBcnJheSBkdW1teVBv
cnRzOworICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisKKyAgICBSZWZQdHI8SW50ZW50PiBjb3JlSW50
ZW50ID0gSW50ZW50OjpjcmVhdGUodG9JbXBsKGFjdGlvbiktPnN0cmluZygpLCB0b0ltcGwodHlw
ZSktPnN0cmluZygpLCBkYXRhID8gc3RhdGljX2Nhc3Q8U2VyaWFsaXplZFNjcmlwdFZhbHVlKj4o
dG9JbXBsKGRhdGEpLT5pbnRlcm5hbFJlcHJlc2VudGF0aW9uKCkpIDogMCwgZHVtbXlQb3J0cywg
ZWMpOworCisgICAgcmV0dXJuIHRvQVBJKEluamVjdGVkQnVuZGxlSW50ZW50OjpjcmVhdGUoY29y
ZUludGVudC5nZXQoKSkubGVha1JlZigpKTsKKyNlbHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYK
K30KKworV0tTdHJpbmdSZWYgV0tCdW5kbGVJbnRlbnRDb3B5QWN0aW9uKFdLQnVuZGxlSW50ZW50
UmVmIGludGVudFJlZikKK3sKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgcmV0dXJuIHRv
Q29waWVkQVBJKHRvSW1wbChpbnRlbnRSZWYpLT5hY3Rpb24oKSk7CisjZWxzZQorICAgIHJldHVy
biAwOworI2VuZGlmCit9CisKK1dLU3RyaW5nUmVmIFdLQnVuZGxlSW50ZW50Q29weVR5cGUoV0tC
dW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmKQoreworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAg
ICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKGludGVudFJlZiktPnBheWxvYWRUeXBlKCkpOwor
I2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCitXS1VSTFJlZiBXS0J1bmRsZUludGVu
dENvcHlTZXJ2aWNlKFdLQnVuZGxlSW50ZW50UmVmIGludGVudFJlZikKK3sKKyNpZiBFTkFCTEUo
V0VCX0lOVEVOVFMpCisgICAgcmV0dXJuIHRvQ29waWVkVVJMQVBJKHRvSW1wbChpbnRlbnRSZWYp
LT5zZXJ2aWNlKCkpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCitXS0FycmF5
UmVmIFdLQnVuZGxlSW50ZW50Q29weVN1Z2dlc3Rpb25zKFdLQnVuZGxlSW50ZW50UmVmIGludGVu
dFJlZikKK3sKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgcmV0dXJuIHRvQVBJKHRvSW1w
bChpbnRlbnRSZWYpLT5zdWdnZXN0aW9ucygpLmxlYWtSZWYoKSk7CisjZWxzZQorICAgIHJldHVy
biAwOworI2VuZGlmCit9CisKK1dLU3RyaW5nUmVmIFdLQnVuZGxlSW50ZW50Q29weUV4dHJhVmFs
dWUoV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmLCBXS1N0cmluZ1JlZiBrZXkpCit7CisjaWYg
RU5BQkxFKFdFQl9JTlRFTlRTKQorICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwoaW50ZW50
UmVmKS0+ZXh0cmEodG9XVEZTdHJpbmcoa2V5KSkpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNl
bmRpZgorfQorCitXS0RpY3Rpb25hcnlSZWYgV0tCdW5kbGVJbnRlbnRDb3B5RXh0cmFzKFdLQnVu
ZGxlSW50ZW50UmVmIGludGVudFJlZikKK3sKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAg
cmV0dXJuIHRvQVBJKHRvSW1wbChpbnRlbnRSZWYpLT5leHRyYXMoKS5sZWFrUmVmKCkpOworI2Vs
c2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCitzaXplX3QgV0tCdW5kbGVJbnRlbnRNZXNz
YWdlUG9ydENvdW50KFdLQnVuZGxlSW50ZW50UmVmIGludGVudFJlZikKK3sKKyNpZiBFTkFCTEUo
V0VCX0lOVEVOVFMpCisgICAgTWVzc2FnZVBvcnRDaGFubmVsQXJyYXkqIG1lc3NhZ2VQb3J0cyA9
IHRvSW1wbChpbnRlbnRSZWYpLT5jb3JlSW50ZW50KCktPm1lc3NhZ2VQb3J0cygpOworCisgICAg
cmV0dXJuIG1lc3NhZ2VQb3J0cyA/IG1lc3NhZ2VQb3J0cy0+c2l6ZSgpIDogMDsKKyNlbHNlCisg
ICAgcmV0dXJuIDA7CisjZW5kaWYKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnQuaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnQuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDNmZTAyCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZUludGVudC5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50
ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
V0tCdW5kbGVJbnRlbnRfaAorI2RlZmluZSBXS0J1bmRsZUludGVudF9oCisKKyNpbmNsdWRlIDxX
ZWJLaXQyL1dLQmFzZS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2Vu
ZGlmCisKK1dLX0VYUE9SVCBXS1R5cGVJRCBXS0J1bmRsZUludGVudEdldFR5cGVJRCgpOworCitX
S19FWFBPUlQgV0tCdW5kbGVJbnRlbnRSZWYgV0tCdW5kbGVJbnRlbnRDcmVhdGUoV0tEaWN0aW9u
YXJ5UmVmIGRpY3Rpb25hcnlSZWYpOworCitXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tCdW5kbGVJ
bnRlbnRDb3B5QWN0aW9uKFdLQnVuZGxlSW50ZW50UmVmIGludGVudFJlZik7CitXS19FWFBPUlQg
V0tTdHJpbmdSZWYgV0tCdW5kbGVJbnRlbnRDb3B5VHlwZShXS0J1bmRsZUludGVudFJlZiBpbnRl
bnRSZWYpOworV0tfRVhQT1JUIFdLVVJMUmVmIFdLQnVuZGxlSW50ZW50Q29weVNlcnZpY2UoV0tC
dW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmKTsKK1dLX0VYUE9SVCBXS0FycmF5UmVmIFdLQnVuZGxl
SW50ZW50Q29weVN1Z2dlc3Rpb25zKFdLQnVuZGxlSW50ZW50UmVmIGludGVudFJlZik7CitXS19F
WFBPUlQgV0tTdHJpbmdSZWYgV0tCdW5kbGVJbnRlbnRDb3B5RXh0cmFWYWx1ZShXS0J1bmRsZUlu
dGVudFJlZiBpbnRlbnRSZWYsIFdLU3RyaW5nUmVmIGtleSk7CitXS19FWFBPUlQgV0tEaWN0aW9u
YXJ5UmVmIFdLQnVuZGxlSW50ZW50Q29weUV4dHJhcyhXS0J1bmRsZUludGVudFJlZiBpbnRlbnRS
ZWYpOworV0tfRVhQT1JUIHNpemVfdCBXS0J1bmRsZUludGVudE1lc3NhZ2VQb3J0Q291bnQoV0tC
dW5kbGVJbnRlbnRSZWYgaW50ZW50UmVmKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5k
aWYKKworI2VuZGlmIC8vIFdLQnVuZGxlSW50ZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRlbnRSZXF1ZXN0
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVJbnRlbnRSZXF1ZXN0LmNwcAppbmRleCA4MWM5NWM2Li5hNDc3MmVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
SW50ZW50UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudFJlcXVlc3QuY3BwCkBAIC0yNywxMCArMjcsMTAg
QEAKICNpbmNsdWRlICJXS0J1bmRsZUludGVudFJlcXVlc3QuaCIKIAogI2lmIEVOQUJMRShXRUJf
SU5URU5UUykKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZUludGVudC5oIgogI2luY2x1ZGUgIklu
amVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2lu
Y2x1ZGUgIldLQnVuZGxlQVBJQ2FzdC5oIgotI2luY2x1ZGUgIldlYkludGVudERhdGEuaCIKIAog
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKICNlbmRpZgpAQCAtNDQsMTEgKzQ0LDExIEBAIFdLVHlw
ZUlEIFdLQnVuZGxlSW50ZW50UmVxdWVzdEdldFR5cGVJRCgpCiAjZW5kaWYKIH0KIAotV0tJbnRl
bnREYXRhUmVmIFdLQnVuZGxlSW50ZW50UmVxdWVzdENvcHlJbnRlbnREYXRhKFdLQnVuZGxlSW50
ZW50UmVxdWVzdFJlZiByZXF1ZXN0UmVmKQorV0tCdW5kbGVJbnRlbnRSZWYgV0tCdW5kbGVJbnRl
bnRSZXF1ZXN0Q29weUludGVudChXS0J1bmRsZUludGVudFJlcXVlc3RSZWYgcmVxdWVzdFJlZikK
IHsKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0gICAgUmVmUHRyPFdlYkludGVudERhdGE+IHdl
YkludGVudERhdGEgPSB0b0ltcGwocmVxdWVzdFJlZiktPmludGVudCgpOwotICAgIHJldHVybiB0
b0FQSSh3ZWJJbnRlbnREYXRhLnJlbGVhc2UoKS5sZWFrUmVmKCkpOworICAgIFJlZlB0cjxJbmpl
Y3RlZEJ1bmRsZUludGVudD4gd2ViSW50ZW50ID0gdG9JbXBsKHJlcXVlc3RSZWYpLT5pbnRlbnQo
KTsKKyAgICByZXR1cm4gdG9BUEkod2ViSW50ZW50LnJlbGVhc2UoKS5sZWFrUmVmKCkpOwogI2Vs
c2UKICAgICByZXR1cm4gMDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudFJlcXVlc3QuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVJbnRl
bnRSZXF1ZXN0LmgKaW5kZXggYjE4MTM2ZC4uMTA1YWZhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUludGVudFJlcXVl
c3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9j
L1dLQnVuZGxlSW50ZW50UmVxdWVzdC5oCkBAIC0zNCw3ICszNCw3IEBAIGV4dGVybiAiQyIgewog
CiBXS19FWFBPUlQgV0tUeXBlSUQgV0tCdW5kbGVJbnRlbnRSZXF1ZXN0R2V0VHlwZUlEKCk7CiAK
LVdLX0VYUE9SVCBXS0ludGVudERhdGFSZWYgV0tCdW5kbGVJbnRlbnRSZXF1ZXN0Q29weUludGVu
dERhdGEoV0tCdW5kbGVJbnRlbnRSZXF1ZXN0UmVmIHJlcXVlc3QpOworV0tfRVhQT1JUIFdLQnVu
ZGxlSW50ZW50UmVmIFdLQnVuZGxlSW50ZW50UmVxdWVzdENvcHlJbnRlbnQoV0tCdW5kbGVJbnRl
bnRSZXF1ZXN0UmVmIHJlcXVlc3QpOwogCiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZUludGVudFJl
cXVlc3RQb3N0UmVzdWx0KFdLQnVuZGxlSW50ZW50UmVxdWVzdFJlZiByZXF1ZXN0LCBXS1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZVJlZiBzZXJpYWxpemVkRGF0YSk7CiBXS19FWFBPUlQgdm9pZCBXS0J1
bmRsZUludGVudFJlcXVlc3RQb3N0RmFpbHVyZShXS0J1bmRsZUludGVudFJlcXVlc3RSZWYgcmVx
dWVzdCwgV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYgc2VyaWFsaXplZERhdGEpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZVBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZVBhZ2UuY3BwCmluZGV4IDFmNDNhMTIuLmJmNDYzY2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQ
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlUGFnZS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L1BhZ2UuaD4KIAogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSNpbmNsdWRlICJXZWJJbnRlbnRE
YXRhLmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVJbnRlbnQuaCIKICNlbmRpZgogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViS2l0OwpAQCAtMzE2LDEwICszMTYsMTAgQEAgZG91YmxlIFdLQnVuZGxl
UGFnZUdldEJhY2tpbmdTY2FsZUZhY3RvcihXS0J1bmRsZVBhZ2VSZWYgcGFnZVJlZikKICAgICBy
ZXR1cm4gdG9JbXBsKHBhZ2VSZWYpLT5kZXZpY2VTY2FsZUZhY3RvcigpOwogfQogCi12b2lkIFdL
QnVuZGxlUGFnZURlbGl2ZXJJbnRlbnRUb0ZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlUmVmLCBX
S0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVmLCBXS0ludGVudERhdGFSZWYgaW50ZW50UmVmKQordm9p
ZCBXS0J1bmRsZVBhZ2VEZWxpdmVySW50ZW50VG9GcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZVJl
ZiwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZVJlZiwgV0tCdW5kbGVJbnRlbnRSZWYgaW50ZW50UmVm
KQogewogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSAgICB0b0ltcGwocGFnZVJlZiktPmRlbGl2
ZXJJbnRlbnRUb0ZyYW1lKHRvSW1wbChmcmFtZVJlZiktPmZyYW1lSUQoKSwgdG9JbXBsKGludGVu
dFJlZiktPnN0b3JlKCkpOworICAgIHRvSW1wbChwYWdlUmVmKS0+ZGVsaXZlckNvcmVJbnRlbnRU
b0ZyYW1lKHRvSW1wbChmcmFtZVJlZiktPmZyYW1lSUQoKSwgdG9JbXBsKGludGVudFJlZiktPmNv
cmVJbnRlbnQoKSk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgKaW5kZXgg
MjhlZWU1Yy4uOGJjNzY3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCkBAIC00MTAsNyAr
NDEwLDcgQEAgV0tfRVhQT1JUIFdLSW1hZ2VSZWYgV0tCdW5kbGVQYWdlQ3JlYXRlU2NhbGVkU25h
cHNob3RJbkRvY3VtZW50Q29vcmRpbmF0ZXMoV0tCdW4KIAogV0tfRVhQT1JUIGRvdWJsZSBXS0J1
bmRsZVBhZ2VHZXRCYWNraW5nU2NhbGVGYWN0b3IoV0tCdW5kbGVQYWdlUmVmIHBhZ2UpOwogCi1X
S19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VEZWxpdmVySW50ZW50VG9GcmFtZShXS0J1bmRsZVBh
Z2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tJbnRlbnREYXRhUmVmIGludGVu
dCk7CitXS19FWFBPUlQgdm9pZCBXS0J1bmRsZVBhZ2VEZWxpdmVySW50ZW50VG9GcmFtZShXS0J1
bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tCdW5kbGVJbnRlbnRS
ZWYgaW50ZW50KTsKIAogI2lmIGRlZmluZWQoRU5BQkxFX0lOU1BFQ1RPUikgJiYgRU5BQkxFX0lO
U1BFQ1RPUgogV0tfRVhQT1JUIFdLQnVuZGxlSW5zcGVjdG9yUmVmIFdLQnVuZGxlUGFnZUdldElu
c3BlY3RvcihXS0J1bmRsZVBhZ2VSZWYgcGFnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRl
bnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyZGU2MWMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlSW50ZW50LmNwcApAQCAtMCwwICsxLDEwMCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlSW50ZW50
LmgiCisKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisKKyNpbmNsdWRlICJJbW11dGFibGVBcnJh
eS5oIgorI2luY2x1ZGUgIkltbXV0YWJsZURpY3Rpb25hcnkuaCIKKyNpbmNsdWRlICJXZWJTZXJp
YWxpemVkU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJX
ZWJVUkwuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlSW50ZW50PiBJbmplY3RlZEJ1bmRsZUludGVu
dDo6Y3JlYXRlKFdlYkNvcmU6OkludGVudCogaW50ZW50KQoreworICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgSW5qZWN0ZWRCdW5kbGVJbnRlbnQoaW50ZW50KSk7Cit9CisKK0luamVjdGVkQnVuZGxl
SW50ZW50OjpJbmplY3RlZEJ1bmRsZUludGVudChXZWJDb3JlOjpJbnRlbnQqIGludGVudCkKKyAg
ICA6IG1faW50ZW50KGludGVudCkKK3sKK30KKworU3RyaW5nIEluamVjdGVkQnVuZGxlSW50ZW50
OjphY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBtX2ludGVudC0+YWN0aW9uKCk7Cit9CisK
K1N0cmluZyBJbmplY3RlZEJ1bmRsZUludGVudDo6cGF5bG9hZFR5cGUoKSBjb25zdAoreworICAg
IHJldHVybiBtX2ludGVudC0+dHlwZSgpOworfQorCitXZWJDb3JlOjpLVVJMIEluamVjdGVkQnVu
ZGxlSW50ZW50OjpzZXJ2aWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbnRlbnQtPnNlcnZp
Y2UoKTsKK30KKworUGFzc1JlZlB0cjxXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU+IEluamVjdGVk
QnVuZGxlSW50ZW50OjpkYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV2ViU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpjcmVhdGUobV9pbnRlbnQtPmRhdGEoKSk7Cit9CisKK1N0cmluZyBJbmplY3Rl
ZEJ1bmRsZUludGVudDo6ZXh0cmEoY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1faW50ZW50LT5leHRyYXMoKS5nZXQoa2V5KTsKK30KKworUGFzc1JlZlB0cjxJbW11dGFi
bGVEaWN0aW9uYXJ5PiBJbmplY3RlZEJ1bmRsZUludGVudDo6ZXh0cmFzKCkgY29uc3QKK3sKKyAg
ICBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgZXh0cmFzID0gbV9pbnRlbnQtPmV4dHJh
cygpOworICAgIEltbXV0YWJsZURpY3Rpb25hcnk6Ok1hcFR5cGUgd2tFeHRyYXM7CisgICAgSGFz
aE1hcDxTdHJpbmcsIFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGV4dHJhcy5lbmQoKTsK
KyAgICBmb3IgKEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGV4
dHJhcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgIHdrRXh0cmFzLnNldChpdC0+
Zmlyc3QsIFdlYlN0cmluZzo6Y3JlYXRlKGl0LT5zZWNvbmQpKTsKKworICAgIHJldHVybiBJbW11
dGFibGVEaWN0aW9uYXJ5OjphZG9wdCh3a0V4dHJhcyk7Cit9CisKK1Bhc3NSZWZQdHI8SW1tdXRh
YmxlQXJyYXk+IEluamVjdGVkQnVuZGxlSW50ZW50OjpzdWdnZXN0aW9ucygpIGNvbnN0Cit7Cisg
ICAgY29uc3QgVmVjdG9yPEtVUkw+JiBzdWdnZXN0aW9ucyA9IG1faW50ZW50LT5zdWdnZXN0aW9u
cygpOworICAgIGNvbnN0IHNpemVfdCBudW1TdWdnZXN0aW9ucyA9IHN1Z2dlc3Rpb25zLnNpemUo
KTsKKyAgICBWZWN0b3I8UmVmUHRyPEFQSU9iamVjdD4gPiB3a1N1Z2dlc3Rpb25zKG51bVN1Z2dl
c3Rpb25zKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtU3VnZ2VzdGlvbnM7ICsr
aSkKKyAgICAgICAgd2tTdWdnZXN0aW9uc1tpXSA9IFdlYlVSTDo6Y3JlYXRlKHN1Z2dlc3Rpb25z
W2ldKTsKKworICAgIHJldHVybiBJbW11dGFibGVBcnJheTo6YWRvcHQod2tTdWdnZXN0aW9ucyk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9JTlRF
TlRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZUludGVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjVkM2YwNmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50LmgKQEAgLTAsMCAr
MSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbmplY3RlZEJ1bmRsZUludGVu
dF9oCisjZGVmaW5lIEluamVjdGVkQnVuZGxlSW50ZW50X2gKKworI2lmIEVOQUJMRShXRUJfSU5U
RU5UUykKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvSW50ZW50
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9LVVJMLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
KyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEltbXV0YWJsZUFycmF5OworY2xhc3MgSW1tdXRh
YmxlRGljdGlvbmFyeTsKK2NsYXNzIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKKworY2xhc3Mg
SW5qZWN0ZWRCdW5kbGVJbnRlbnQgOiBwdWJsaWMgQVBJT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZUJ1bmRsZUludGVudDsKKworICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlSW50ZW50PiBjcmVhdGUoV2ViQ29yZTo6SW50ZW50
Kik7CisKKyAgICBTdHJpbmcgYWN0aW9uKCkgY29uc3Q7CisgICAgU3RyaW5nIHBheWxvYWRUeXBl
KCkgY29uc3Q7CisgICAgV2ViQ29yZTo6S1VSTCBzZXJ2aWNlKCkgY29uc3Q7CisgICAgUGFzc1Jl
ZlB0cjxXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEoKSBjb25zdDsKKyAgICBTdHJpbmcg
ZXh0cmEoY29uc3QgU3RyaW5nJiBrZXkpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8SW1tdXRhYmxl
RGljdGlvbmFyeT4gZXh0cmFzKCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxJbW11dGFibGVBcnJh
eT4gc3VnZ2VzdGlvbnMoKSBjb25zdDsKKworICAgIFdlYkNvcmU6OkludGVudCogY29yZUludGVu
dCgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZW50LmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgZXhw
bGljaXQgSW5qZWN0ZWRCdW5kbGVJbnRlbnQoV2ViQ29yZTo6SW50ZW50Kik7CisKKyAgICB2aXJ0
dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIEFQSVR5cGU7IH0KKworICAgIFJlZlB0cjxX
ZWJDb3JlOjpJbnRlbnQ+IG1faW50ZW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBFTkFCTEUoV0VCX0lOVEVOVFMpCisKKyNlbmRpZiAvLyBJbmplY3RlZEJ1bmRs
ZUludGVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5jcHAK
aW5kZXggNWNjYjE5Yy4uZWFjMGI4M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
SW50ZW50UmVxdWVzdC5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJJbmplY3RlZEJ1
bmRsZUludGVudFJlcXVlc3QuaCIKIAogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyNpbmNsdWRl
ICJJbmplY3RlZEJ1bmRsZUludGVudC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW50ZW50UmVxdWVz
dC5oPgogI2luY2x1ZGUgPFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oPgogCkBAIC01NCw5ICs1
NSw5IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0Ojpwb3N0RmFpbHVyZShXZWJT
ZXJpYWxpemVkU2NyaXB0VmFsdWUqIGRhdGEpCiAgICAgbV9pbnRlbnRSZXF1ZXN0LT5wb3N0RmFp
bHVyZShzdGF0aWNfY2FzdDxTZXJpYWxpemVkU2NyaXB0VmFsdWUqPihkYXRhLT5pbnRlcm5hbFJl
cHJlc2VudGF0aW9uKCkpKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJJbnRlbnREYXRhPiBJbmplY3Rl
ZEJ1bmRsZUludGVudFJlcXVlc3Q6OmludGVudCgpIGNvbnN0CitQYXNzUmVmUHRyPEluamVjdGVk
QnVuZGxlSW50ZW50PiBJbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3Q6OmludGVudCgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIFdlYkludGVudERhdGE6OmNyZWF0ZShJbnRlbnREYXRhKG1faW50ZW50
UmVxdWVzdC0+aW50ZW50KCkpKTsKKyAgICByZXR1cm4gSW5qZWN0ZWRCdW5kbGVJbnRlbnQ6OmNy
ZWF0ZShtX2ludGVudFJlcXVlc3QtPmludGVudCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuaAppbmRleCBiNTg3
MGQ5Li4zM2EzMTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSW50ZW50UmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnRSZXF1ZXN0
LmgKQEAgLTI5LDcgKzI5LDYgQEAKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCiAKICNpbmNsdWRl
ICJBUElPYmplY3QuaCIKLSNpbmNsdWRlICJXZWJJbnRlbnREYXRhLmgiCiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KQEAgLTQwLDYgKzM5LDcgQEAgY2xhc3MgSW50ZW50UmVxdWVzdDsKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKK2NsYXNzIEluamVjdGVkQnVuZGxlSW50ZW50OwogY2xhc3MgV2ViU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOwogCiBjbGFzcyBJbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3Qg
OiBwdWJsaWMgQVBJT2JqZWN0IHsKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHZvaWQg
cG9zdFJlc3VsdChXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUqKTsKICAgICB2b2lkIHBvc3RGYWls
dXJlKFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSopOwogCi0gICAgUGFzc1JlZlB0cjxXZWJJbnRl
bnREYXRhPiBpbnRlbnQoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPEluamVjdGVkQnVuZGxlSW50
ZW50PiBpbnRlbnQoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBJbmplY3RlZEJ1
bmRsZUludGVudFJlcXVlc3QoV2ViQ29yZTo6SW50ZW50UmVxdWVzdCopOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggMTkyNDNiZS4uZmQ2
ZjRjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZy
YW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
Y3BwCkBAIC02Myw2ICs2Myw4IEBACiAjaW5jbHVkZSAiSW50ZW50RGF0YS5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvRE9NV2luZG93SW50ZW50cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGVsaXZlcmVk
SW50ZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbnRlbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmg+CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1B
QykgfHwgUExBVEZPUk0oV0lOKQpAQCAtMjQ2LDEzICsyNDgsMzkgQEAgdm9pZCBXZWJGcmFtZTo6
Y29udmVydEhhbmRsZVRvRG93bmxvYWQoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVz
b3VyY2VSZXEKIHZvaWQgV2ViRnJhbWU6OmRlbGl2ZXJJbnRlbnQoY29uc3QgSW50ZW50RGF0YSYg
aW50ZW50RGF0YSkKIHsKICAgICBPd25QdHI8RGVsaXZlcmVkSW50ZW50Q2xpZW50PiBkdW1teUNs
aWVudDsKLSAgICBPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4gZHVtbXlQb3J0czsKICAgICBWZWN0
b3I8dWludDhfdD4gZGF0YUNvcHkgPSBpbnRlbnREYXRhLmRhdGE7CisKKyAgICBPd25QdHI8V2Vi
Q29yZTo6TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzOworICAgIGlmICghaW50ZW50
RGF0YS5tZXNzYWdlUG9ydHMuaXNFbXB0eSgpKSB7CisgICAgICAgIGNoYW5uZWxzID0gYWRvcHRQ
dHIobmV3IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5KGludGVudERhdGEubWVzc2Fn
ZVBvcnRzLnNpemUoKSkpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGludGVudERh
dGEubWVzc2FnZVBvcnRzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgKCpjaGFubmVscylbaV0g
PSBNZXNzYWdlUG9ydENoYW5uZWw6OmNyZWF0ZShXZWJQcm9jZXNzOjpzaGFyZWQoKS5tZXNzYWdl
UG9ydENoYW5uZWwoaW50ZW50RGF0YS5tZXNzYWdlUG9ydHMuYXQoaSkpKTsKKyAgICB9CisgICAg
T3duUHRyPFdlYkNvcmU6Ok1lc3NhZ2VQb3J0QXJyYXk+IG1lc3NhZ2VQb3J0cyA9IFdlYkNvcmU6
Ok1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKCptX2NvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+ZG9t
V2luZG93KCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgY2hhbm5lbHMucmVsZWFzZSgpKTsK
KwogICAgIFJlZlB0cjxEZWxpdmVyZWRJbnRlbnQ+IGRlbGl2ZXJlZEludGVudCA9IERlbGl2ZXJl
ZEludGVudDo6Y3JlYXRlKG1fY29yZUZyYW1lLCBkdW1teUNsaWVudC5yZWxlYXNlKCksIGludGVu
dERhdGEuYWN0aW9uLCBpbnRlbnREYXRhLnR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjphZG9wdChkYXRhQ29weSksIGR1bW15UG9ydHMucmVsZWFzZSgpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQoZGF0YUNvcHkpLCBtZXNzYWdlUG9y
dHMucmVsZWFzZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVudERhdGEuZXh0cmFzKTsKICAgICBXZWJD
b3JlOjpET01XaW5kb3dJbnRlbnRzOjpmcm9tKG1fY29yZUZyYW1lLT5kb2N1bWVudCgpLT5kb21X
aW5kb3coKSktPmRlbGl2ZXIoZGVsaXZlcmVkSW50ZW50LnJlbGVhc2UoKSk7CiB9CisKK3ZvaWQg
V2ViRnJhbWU6OmRlbGl2ZXJJbnRlbnQoV2ViQ29yZTo6SW50ZW50KiBpbnRlbnQpCit7CisgICAg
T3duUHRyPERlbGl2ZXJlZEludGVudENsaWVudD4gZHVtbXlDbGllbnQ7CisKKyAgICBPd25QdHI8
V2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzOworICAgIFdlYkNvcmU6
Ok1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5KiBvcmlnQ2hhbm5lbHMgPSBpbnRlbnQtPm1lc3NhZ2VQ
b3J0cygpOworICAgIGlmIChvcmlnQ2hhbm5lbHMgJiYgb3JpZ0NoYW5uZWxzLT5zaXplKCkpIHsK
KyAgICAgICAgY2hhbm5lbHMgPSBhZG9wdFB0cihuZXcgV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFu
bmVsQXJyYXkob3JpZ0NoYW5uZWxzLT5zaXplKCkpKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBvcmlnQ2hhbm5lbHMtPnNpemUoKTsgKytpKQorICAgICAgICAgICAgKCpjaGFubmVs
cylbaV0gPSBvcmlnQ2hhbm5lbHMtPmF0KGkpLnJlbGVhc2UoKTsKKyAgICB9CisgICAgT3duUHRy
PFdlYkNvcmU6Ok1lc3NhZ2VQb3J0QXJyYXk+IG1lc3NhZ2VQb3J0cyA9IFdlYkNvcmU6Ok1lc3Nh
Z2VQb3J0OjplbnRhbmdsZVBvcnRzKCptX2NvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93
KCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgY2hhbm5lbHMucmVsZWFzZSgpKTsKKworICAg
IFJlZlB0cjxEZWxpdmVyZWRJbnRlbnQ+IGRlbGl2ZXJlZEludGVudCA9IERlbGl2ZXJlZEludGVu
dDo6Y3JlYXRlKG1fY29yZUZyYW1lLCBkdW1teUNsaWVudC5yZWxlYXNlKCksIGludGVudC0+YWN0
aW9uKCksIGludGVudC0+dHlwZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVudC0+ZGF0YSgpLCBtZXNz
YWdlUG9ydHMucmVsZWFzZSgpLCBpbnRlbnQtPmV4dHJhcygpKTsKKyAgICBXZWJDb3JlOjpET01X
aW5kb3dJbnRlbnRzOjpmcm9tKG1fY29yZUZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSkt
PmRlbGl2ZXIoZGVsaXZlcmVkSW50ZW50LnJlbGVhc2UoKSk7Cit9CiAjZW5kaWYKIAogU3RyaW5n
IFdlYkZyYW1lOjpzb3VyY2UoKSBjb25zdCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmgKaW5kZXggYmQ2YzAzOC4uZWVhMDliNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKQEAgLTQyLDYgKzQyLDkgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBGcmFtZTsKICAgICBjbGFzcyBIVE1MRnJhbWVP
d25lckVsZW1lbnQ7CisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorICAgIGNsYXNzIEludGVudDsK
KyNlbmRpZgogICAgIGNsYXNzIEtVUkw7CiB9CiAKQEAgLTgxLDYgKzg0LDcgQEAgcHVibGljOgog
CiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQogICAgIHZvaWQgZGVsaXZlckludGVudChjb25zdCBJ
bnRlbnREYXRhJik7CisgICAgdm9pZCBkZWxpdmVySW50ZW50KFdlYkNvcmU6OkludGVudCopOwog
I2VuZGlmCiAKICAgICBTdHJpbmcgc291cmNlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNzk4OWIyOS4uZWIxOTFlNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTQw
LDYgKzE0MCw3IEBACiAKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCiAjaW5jbHVkZSAiSW50ZW50
RGF0YS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvSW50ZW50Lmg+CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShWSUJSQVRJT04pCkBAIC0xOTU5LDYgKzE5NjAsMTIgQEAgdm9pZCBXZWJQYWdlOjpkZWxpdmVy
SW50ZW50VG9GcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBJbnRlbnREYXRhJiBpbnRlbnRE
YXQKIAogICAgIGZyYW1lLT5kZWxpdmVySW50ZW50KGludGVudERhdGEpOwogfQorCit2b2lkIFdl
YlBhZ2U6OmRlbGl2ZXJDb3JlSW50ZW50VG9GcmFtZSh1aW50NjRfdCBmcmFtZUlELCBJbnRlbnQq
IGNvcmVJbnRlbnQpCit7CisgICAgaWYgKFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNo
YXJlZCgpLndlYkZyYW1lKGZyYW1lSUQpKQorICAgICAgICBmcmFtZS0+ZGVsaXZlckludGVudChj
b3JlSW50ZW50KTsKK30KICNlbmRpZgogCiB2b2lkIFdlYlBhZ2U6OnByZWZlcmVuY2VzRGlkQ2hh
bmdlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYmJmYWJkMC4uZWM1YWYwZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xMDYsNiArMTA2
LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEZyYW1lOwogICAgIGNsYXNzIEZy
YW1lVmlldzsKICAgICBjbGFzcyBIVE1MUGx1Z0luRWxlbWVudDsKKyNpZiBFTkFCTEUoV0VCX0lO
VEVOVFMpCisgICAgY2xhc3MgSW50ZW50OworI2VuZGlmCiAgICAgY2xhc3MgS2V5Ym9hcmRFdmVu
dDsKICAgICBjbGFzcyBQYWdlOwogICAgIGNsYXNzIFByaW50Q29udGV4dDsKQEAgLTQ3Niw3ICs0
NzksNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSAgICB2
b2lkIGRlbGl2ZXJJbnRlbnRUb0ZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IEludGVudERh
dGEmKTsKKyAgICB2b2lkIGRlbGl2ZXJDb3JlSW50ZW50VG9GcmFtZSh1aW50NjRfdCBmcmFtZUlE
LCBXZWJDb3JlOjpJbnRlbnQqKTsKICNlbmRpZgogCiAgICAgdm9pZCByZXBsYWNlU2VsZWN0aW9u
V2l0aFRleHQoV2ViQ29yZTo6RnJhbWUqLCBjb25zdCBTdHJpbmcmKTsKQEAgLTY0MSw2ICs2NDQs
MTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbnRleHRNZW51SGlkZGVuKCkgeyBtX2lzU2hvd2lu
Z0NvbnRleHRNZW51ID0gZmFsc2U7IH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFdFQl9JTlRFTlRT
KQorICAgIHZvaWQgZGVsaXZlckludGVudFRvRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
SW50ZW50RGF0YSYpOworI2VuZGlmCisKICAgICBzdGF0aWMgdm9pZCBzY3JvbGwoV2ViQ29yZTo6
UGFnZSosIFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbiwgV2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJp
dHkpOwogICAgIHN0YXRpYyB2b2lkIGxvZ2ljYWxTY3JvbGwoV2ViQ29yZTo6UGFnZSosIFdlYkNv
cmU6OlNjcm9sbExvZ2ljYWxEaXJlY3Rpb24sIFdlYkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5KTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggM2U3NTZlYy4u
NDgwY2Q3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC04
MCw2ICs4MCwxMCBAQAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1JhbmRvbU51bWJlci5oPgogCisjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQorI2luY2x1ZGUgPFdl
YkNvcmUvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuaD4KKyNlbmRpZgorCiAjaWYgRU5BQkxF
KE5FVFdPUktfSU5GTykKICNpbmNsdWRlICJXZWJOZXR3b3JrSW5mb01hbmFnZXJNZXNzYWdlcy5o
IgogI2VuZGlmCkBAIC03OTEsNiArNzk1LDI2IEBAIFdlYlBhZ2VHcm91cFByb3h5KiBXZWJQcm9j
ZXNzOjp3ZWJQYWdlR3JvdXAoY29uc3QgV2ViUGFnZUdyb3VwRGF0YSYgcGFnZUdyb3VwRGF0CiAg
ICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kLmdldCgpOwogfQogCisjaWYgRU5BQkxF
KFdFQl9JTlRFTlRTKQordWludDY0X3QgV2ViUHJvY2Vzczo6YWRkTWVzc2FnZVBvcnRDaGFubmVs
KFBhc3NSZWZQdHI8UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw+IG1lc3NhZ2VQb3J0Q2hhbm5l
bCkKK3sKKyAgICBzdGF0aWMgdWludDY0X3QgY2hhbm5lbElEID0gMDsKKyAgICBtX21lc3NhZ2VQ
b3J0Q2hhbm5lbHMuYWRkKCsrY2hhbm5lbElELCBtZXNzYWdlUG9ydENoYW5uZWwpOworCisgICAg
cmV0dXJuIGNoYW5uZWxJRDsKK30KKworUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwqIFdlYlBy
b2Nlc3M6Om1lc3NhZ2VQb3J0Q2hhbm5lbCh1aW50NjRfdCBjaGFubmVsSUQpCit7CisgICAgcmV0
dXJuIG1fbWVzc2FnZVBvcnRDaGFubmVscy5nZXQoY2hhbm5lbElEKS5nZXQoKTsKK30KKwordm9p
ZCBXZWJQcm9jZXNzOjpyZW1vdmVNZXNzYWdlUG9ydENoYW5uZWwodWludDY0X3QgY2hhbm5lbElE
KQoreworICAgIG1fbWVzc2FnZVBvcnRDaGFubmVscy5yZW1vdmUoY2hhbm5lbElEKTsKK30KKyNl
bmRpZgorCiBzdGF0aWMgYm9vbCBjYW5QbHVnaW5IYW5kbGVSZXNwb25zZShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBTdHJpbmcgcGx1Z2luUGF0aDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggMGQwMDVhNC4uZDNkZjFiNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTc4LDYgKzc4LDkgQEAgUVRfRU5E
X05BTUVTUEFDRQogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEludFNpemU7CiAgICAg
Y2xhc3MgUGFnZUdyb3VwOworI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyAgICBjbGFzcyBQbGF0
Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDsKKyNlbmRpZgogICAgIGNsYXNzIFJlc291cmNlUmVxdWVz
dDsKICAgICBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogfQpAQCAtMTEyLDcgKzExNSwxMyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBjcmVhdGVXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycyYpOwogICAgIHZvaWQgcmVtb3ZlV2ViUGFnZSh1aW50NjRf
dCBwYWdlSUQpOwogICAgIFdlYlBhZ2UqIGZvY3VzZWRXZWJQYWdlKCkgY29uc3Q7Ci0gICAgCisK
KyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpIAorICAgIHVpbnQ2NF90IGFkZE1lc3NhZ2VQb3J0Q2hh
bm5lbChQYXNzUmVmUHRyPFdlYkNvcmU6OlBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsPik7Cisg
ICAgV2ViQ29yZTo6UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwqIG1lc3NhZ2VQb3J0Q2hhbm5l
bCh1aW50NjRfdCk7CisgICAgdm9pZCByZW1vdmVNZXNzYWdlUG9ydENoYW5uZWwodWludDY0X3Qp
OworI2VuZGlmCisKICAgICBJbmplY3RlZEJ1bmRsZSogaW5qZWN0ZWRCdW5kbGUoKSBjb25zdCB7
IHJldHVybiBtX2luamVjdGVkQnVuZGxlLmdldCgpOyB9CiAKICAgICBib29sIGlzU2VwYXJhdGVQ
cm9jZXNzKCkgY29uc3Q7CkBAIC0zMDAsNiArMzA5LDEwIEBAIHByaXZhdGU6CiAKICAgICBIYXNo
TWFwPHVpbnQ2NF90LCBXZWJGcmFtZSo+IG1fZnJhbWVNYXA7CiAKKyNpZiBFTkFCTEUoV0VCX0lO
VEVOVFMpCisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYkNvcmU6OlBsYXRmb3JtTWVz
c2FnZVBvcnRDaGFubmVsPiA+IG1fbWVzc2FnZVBvcnRDaGFubmVsczsKKyNlbmRpZgorCiAgICAg
SGFzaFNldDxTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD4gbV9taW1lVHlwZXNXaXRoQ3VzdG9tUmVw
cmVzZW50YXRpb25zOwogCiAgICAgVGV4dENoZWNrZXJTdGF0ZSBtX3RleHRDaGVja2VyU3RhdGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4K
aW5kZXggMGY4M2Q1Yi4uMjI3MTZjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjcsNiArMjcsMTAgQEAgbWVzc2FnZXMgLT4g
V2ViUHJvY2VzcyB7CiAgICAgIyBDcmVhdGUgYSBuZXcgcGFnZS4KICAgICBDcmVhdGVXZWJQYWdl
KHVpbnQ2NF90IG5ld1BhZ2VJRCwgV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMpCiAKKyNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCisgICAgUmVt
b3ZlTWVzc2FnZVBvcnRDaGFubmVsKHVpbnQ2NF90IGNoYW5uZWxJRCk7CisjZW5kaWYKKwogICAg
ICMgVmlzaXRlZCBsaW5rIHRyYWNraW5nLgogICAgIFNldFZpc2l0ZWRMaW5rVGFibGUoV2ViS2l0
OjpTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGUpCiAgICAgVmlzaXRlZExpbmtTdGF0ZUNoYW5n
ZWQoVmVjdG9yPFdlYkNvcmU6OkxpbmtIYXNoPiBsaW5rSGFzaGVzKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGVlZjBhNjQuLjNmMTI4NzIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyMiBAQAorMjAxMi0wOC0xNSAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpA
aW50ZWwuY29tPgorCisgICAgICAgIFtXSzJdIEFkZCBzdXBwb3J0IGZvciBXZWIgSW50ZW50cyBN
ZXNzYWdlUG9ydHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg5MDcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5z
ZW4uCisKKyAgICAgICAgVXNlIFdLQnVuZGxlSW50ZW50IGluc3RlYWQgb2YgV2ViSW50ZW50RGF0
YSBpbgorICAgICAgICBXZWJLaXRUZXN0UnVubmVyLiBXVFIgbm93IHByaW50cyB0aGUgbnVtYmVy
IG9mCisgICAgICAgIE1lc3NhZ2VQb3J0cyBpbiByZWNlaXZlZCBXZWIgaW50ZW50cyBhcworICAg
ICAgICBleHBlY3RlZCBieSB0aGUgZm9sbG93aW5nIGxheW91dCB0ZXN0czoKKyAgICAgICAgd2Vi
aW50ZW50cy93ZWItaW50ZW50cy1pbnZva2UtcG9ydC5odG1sCisgICAgICAgIHdlYmludGVudHMv
d2ViLWludGVudHMtb2JqLWNvbnN0cnVjdG9yLmh0bWwKKworICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdU
Ujo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWUpOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV1RSOjpMYXlvdXRUZXN0Q29udHJvbGxlcjo6ZGVsaXZlcldlYkludGVu
dCk6CisKIDIwMTItMDgtMTQgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgQnVpbGQgZml4IGFmdGVyIHIxMjU1MTYuIFJldmVydCB0aGUgZXJyb25lb3VzIHJlbmFt
ZSBzaW5jZSB3ZSBuZWVkIHRvIGtlZXAgZXhwb3NpbmcKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcApp
bmRleCA2ZTJmNTA4Li4zYmMwMzVjIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCkBAIC01MSw4
ICs1MSw4IEBACiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyNpbmNsdWRlIDxX
ZWJLaXQyL1dLQnVuZGxlSW50ZW50Lmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZUludGVu
dFJlcXVlc3QuaD4KLSNpbmNsdWRlIDxXZWJLaXQyL1dLSW50ZW50RGF0YS5oPgogI2VuZGlmCiAj
aWYgRU5BQkxFKFdFQl9JTlRFTlRTX1RBRykKICNpbmNsdWRlIDxXZWJLaXQyL1dLSW50ZW50U2Vy
dmljZUluZm8uaD4KQEAgLTU0OCwxOSArNTQ4LDI0IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdl
OjpkaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxl
CiB7CiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQogICAgIHN0YXRpY19jYXN0PEluamVjdGVkQnVu
ZGxlUGFnZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+bV9jdXJyZW50SW50ZW50
UmVxdWVzdCA9IGludGVudFJlcXVlc3Q7Ci0gICAgV0tSZXRhaW5QdHI8V0tJbnRlbnREYXRhUmVm
PiBpbnRlbnQoQWRvcHRXSywgV0tCdW5kbGVJbnRlbnRSZXF1ZXN0Q29weUludGVudERhdGEoaW50
ZW50UmVxdWVzdCkpOworICAgIFdLUmV0YWluUHRyPFdLQnVuZGxlSW50ZW50UmVmPiBpbnRlbnQo
QWRvcHRXSywgV0tCdW5kbGVJbnRlbnRSZXF1ZXN0Q29weUludGVudChpbnRlbnRSZXF1ZXN0KSk7
CiAKICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQo
IlJlY2VpdmVkIFdlYiBJbnRlbnQ6IGFjdGlvbj0iKTsKLSAgICBXS1JldGFpblB0cjxXS1N0cmlu
Z1JlZj4gd2tBY3Rpb24oQWRvcHRXSywgV0tJbnRlbnREYXRhQ29weUFjdGlvbihpbnRlbnQuZ2V0
KCkpKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tBY3Rpb24oQWRvcHRXSywgV0tC
dW5kbGVJbnRlbnRDb3B5QWN0aW9uKGludGVudC5nZXQoKSkpOwogICAgIEluamVjdGVkQnVuZGxl
OjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCh0b1dURlN0cmluZyh3a0FjdGlvbi5n
ZXQoKSkpOwogICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFw
cGVuZCgiIHR5cGU9Iik7Ci0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHdrVHlwZShBZG9w
dFdLLCBXS0ludGVudERhdGFDb3B5VHlwZShpbnRlbnQuZ2V0KCkpKTsKKyAgICBXS1JldGFpblB0
cjxXS1N0cmluZ1JlZj4gd2tUeXBlKEFkb3B0V0ssIFdLQnVuZGxlSW50ZW50Q29weVR5cGUoaW50
ZW50LmdldCgpKSk7CiAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIo
KS0+YXBwZW5kKHRvV1RGU3RyaW5nKHdrVHlwZS5nZXQoKSkpOwogICAgIEluamVjdGVkQnVuZGxl
OjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiXG4iKTsKIAotICAgIC8vIEZJWE1F
OiBQcmludCBudW1iZXIgb2YgcG9ydHMgd2hlbiBleHBvc2VkIGluIFdlYktpdDIKKyAgICBjb25z
dCBzaXplX3QgbnVtTWVzc2FnZVBvcnRzID0gV0tCdW5kbGVJbnRlbnRNZXNzYWdlUG9ydENvdW50
KGludGVudC5nZXQoKSk7CisgICAgaWYgKG51bU1lc3NhZ2VQb3J0cykgeworICAgICAgICBJbmpl
Y3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoIkhhdmUgIik7Cisg
ICAgICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZChX
VEY6OlN0cmluZzo6bnVtYmVyKG51bU1lc3NhZ2VQb3J0cykpOworICAgICAgICBJbmplY3RlZEJ1
bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoIiBwb3J0c1xuIik7CisgICAg
fQogCi0gICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IHdrU2VydmljZVVybChBZG9wdFdLLCBXS0lu
dGVudERhdGFDb3B5U2VydmljZShpbnRlbnQuZ2V0KCkpKTsKKyAgICBXS1JldGFpblB0cjxXS1VS
TFJlZj4gd2tTZXJ2aWNlVXJsKEFkb3B0V0ssIFdLQnVuZGxlSW50ZW50Q29weVNlcnZpY2UoaW50
ZW50LmdldCgpKSk7CiAgICAgaWYgKHdrU2VydmljZVVybCkgewogICAgICAgICBXS1JldGFpblB0
cjxXS1N0cmluZ1JlZj4gd2tTZXJ2aWNlKEFkb3B0V0ssIFdLVVJMQ29weVN0cmluZyh3a1NlcnZp
Y2VVcmwuZ2V0KCkpKTsKICAgICAgICAgaWYgKHdrU2VydmljZSAmJiAhV0tTdHJpbmdJc0VtcHR5
KHdrU2VydmljZS5nZXQoKSkpIHsKQEAgLTU3MCw3ICs1NzUsNyBAQCB2b2lkIEluamVjdGVkQnVu
ZGxlUGFnZTo6ZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBX
S0J1bmRsZQogICAgICAgICB9CiAgICAgfQogCi0gICAgV0tSZXRhaW5QdHI8V0tEaWN0aW9uYXJ5
UmVmPiB3a0V4dHJhcyhBZG9wdFdLLCBXS0ludGVudERhdGFDb3B5RXh0cmFzKGludGVudC5nZXQo
KSkpOworICAgIFdLUmV0YWluUHRyPFdLRGljdGlvbmFyeVJlZj4gd2tFeHRyYXMoQWRvcHRXSywg
V0tCdW5kbGVJbnRlbnRDb3B5RXh0cmFzKGludGVudC5nZXQoKSkpOwogICAgIFdLUmV0YWluUHRy
PFdLQXJyYXlSZWY+IHdrRXh0cmFLZXlzKEFkb3B0V0ssIFdLRGljdGlvbmFyeUNvcHlLZXlzKHdr
RXh0cmFzLmdldCgpKSk7CiAgICAgY29uc3Qgc2l6ZV90IG51bUV4dHJhS2V5cyA9IFdLQXJyYXlH
ZXRTaXplKHdrRXh0cmFLZXlzLmdldCgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51
bUV4dHJhS2V5czsgKytpKSB7CkBAIC01ODMsNyArNTg4LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRs
ZVBhZ2U6OmRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tC
dW5kbGUKICAgICAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+
YXBwZW5kKCJcbiIpOwogICAgIH0KIAotICAgIFdLUmV0YWluUHRyPFdLQXJyYXlSZWY+IHdrU3Vn
Z2VzdGlvbnMoQWRvcHRXSywgV0tJbnRlbnREYXRhQ29weVN1Z2dlc3Rpb25zKGludGVudC5nZXQo
KSkpOworICAgIFdLUmV0YWluUHRyPFdLQXJyYXlSZWY+IHdrU3VnZ2VzdGlvbnMoQWRvcHRXSywg
V0tCdW5kbGVJbnRlbnRDb3B5U3VnZ2VzdGlvbnMoaW50ZW50LmdldCgpKSk7CiAgICAgY29uc3Qg
c2l6ZV90IG51bVN1Z2dlc3Rpb25zID0gV0tBcnJheUdldFNpemUod2tTdWdnZXN0aW9ucy5nZXQo
KSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1TdWdnZXN0aW9uczsgKytpKSB7CiAg
ICAgICAgIFdLU3RyaW5nUmVmIHdrU3VnZ2VzdGlvbiA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVm
PihXS0FycmF5R2V0SXRlbUF0SW5kZXgod2tTdWdnZXN0aW9ucy5nZXQoKSwgaSkpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91
dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCA3ZDFmNzg0Li5iODY1YTg5IDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVy
LmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRl
c3RDb250cm9sbGVyLmNwcApAQCAtNDksOCArNDksOCBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0J1aWxkZXIuaD4KIAogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKKyNpbmNsdWRlIDxXZWJL
aXQyL1dLQnVuZGxlSW50ZW50Lmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZUludGVudFJl
cXVlc3QuaD4KLSNpbmNsdWRlIDxXZWJLaXQyL1dLSW50ZW50RGF0YS5oPgogI2VuZGlmCiAKIG5h
bWVzcGFjZSBXVFIgewpAQCAtNjUyLDggKzY1Miw4IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OmRlbGl2ZXJXZWJJbnRlbnQoSlNTdHJpbmdSZWYgYWN0aW9uLCBKU1N0cmluZ1JlZiB0eXBl
CiAgICAgV0tEaWN0aW9uYXJ5QWRkSXRlbShpbnRlbnRJbml0RGljdC5nZXQoKSwgV0tTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoInR5cGUiKSwgdHlwZVdLLmdldCgpKTsKICAgICBXS0RpY3Rp
b25hcnlBZGRJdGVtKGludGVudEluaXREaWN0LmdldCgpLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZygiZGF0YSIpLCBkYXRhV0suZ2V0KCkpOwogCi0gICAgV0tSZXRhaW5QdHI8V0tJbnRl
bnREYXRhUmVmPiB3a0ludGVudERhdGEoQWRvcHRXSywgV0tJbnRlbnREYXRhQ3JlYXRlKGludGVu
dEluaXREaWN0LmdldCgpKSk7Ci0gICAgV0tCdW5kbGVQYWdlRGVsaXZlckludGVudFRvRnJhbWUo
SW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgpLCBtYWluRnJhbWUsIHdrSW50
ZW50RGF0YS5nZXQoKSk7CisgICAgV0tSZXRhaW5QdHI8V0tCdW5kbGVJbnRlbnRSZWY+IHdrSW50
ZW50KEFkb3B0V0ssIFdLQnVuZGxlSW50ZW50Q3JlYXRlKGludGVudEluaXREaWN0LmdldCgpKSk7
CisgICAgV0tCdW5kbGVQYWdlRGVsaXZlckludGVudFRvRnJhbWUoSW5qZWN0ZWRCdW5kbGU6OnNo
YXJlZCgpLnBhZ2UoKS0+cGFnZSgpLCBtYWluRnJhbWUsIHdrSW50ZW50LmdldCgpKTsKICNlbmRp
ZgogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>