<?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>178187</bug_id>
          
          <creation_ts>2017-10-11 14:06:08 -0700</creation_ts>
          <short_desc>SW &quot;Hello world&quot;</short_desc>
          <delta_ts>2017-12-16 17:02:44 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=174541</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>aestes</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kangil.han</cc>
    
    <cc>mike</cc>
    
    <cc>mjs</cc>
    
    <cc>mkwst</cc>
    
    <cc>olivier</cc>
    
    <cc>thorton</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1359382</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-10-11 14:06:08 -0700</bug_when>
    <thetext>SW &quot;Hello world&quot;

&lt;rdar://problem/33225187&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359830</commentid>
    <comment_count>1</comment_count>
      <attachid>323605</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-10-12 17:14:46 -0700</bug_when>
    <thetext>Created attachment 323605
Patch (without changeling but otherwise review ready?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359831</commentid>
    <comment_count>2</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-10-12 17:15:13 -0700</bug_when>
    <thetext>Wow, autocorrect made &quot;changelog&quot; into &quot;changeling&quot;

Nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359837</commentid>
    <comment_count>3</comment_count>
      <attachid>323605</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-10-12 17:23:40 -0700</bug_when>
    <thetext>Comment on attachment 323605
Patch (without changeling but otherwise review ready?)

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

&gt; Source/WebCore/workers/service/ServiceWorkerContextData.h:70
&gt; +    if (!decoder.decode(scriptURL))
&gt; +        return std::nullopt;

Shouldn&apos;t we have a MESSAGE_CHECK of some sort here?

&gt; Source/WebCore/workers/service/ServiceWorkerGlobalScope.cpp:35
&gt; +ServiceWorkerGlobalScope::ServiceWorkerGlobalScope(uint64_t serverConnectionIdentifier, const ServiceWorkerContextData&amp; data, const URL&amp; url, const String&amp; identifier, const String&amp; userAgent, ServiceWorkerThread&amp; thread, bool shouldBypassMainWorldContentSecurityPolicy, Ref&lt;SecurityOrigin&gt;&amp;&amp; topOrigin, MonotonicTime timeOrigin, IDBClient::IDBConnectionProxy* connectionProxy, SocketProvider* socketProvider, PAL::SessionID sessionID)

That is a lot of arguments. Will there be more? Seems ripe for a Parameters object or something.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359900</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-10-12 20:19:51 -0700</bug_when>
    <thetext>(In reply to Tim Horton from comment #3)
&gt; Comment on attachment 323605 [details]
&gt; Patch (without changeling but otherwise review ready?)
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=323605&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/workers/service/ServiceWorkerContextData.h:70
&gt; &gt; +    if (!decoder.decode(scriptURL))
&gt; &gt; +        return std::nullopt;
&gt; 
&gt; Shouldn&apos;t we have a MESSAGE_CHECK of some sort here?

WebCore has no concept of MESSAGE_CHECK, so therefore non of the WebCore encoder/decoders do.

&gt; 
&gt; &gt; Source/WebCore/workers/service/ServiceWorkerGlobalScope.cpp:35
&gt; &gt; +ServiceWorkerGlobalScope::ServiceWorkerGlobalScope(uint64_t serverConnectionIdentifier, const ServiceWorkerContextData&amp; data, const URL&amp; url, const String&amp; identifier, const String&amp; userAgent, ServiceWorkerThread&amp; thread, bool shouldBypassMainWorldContentSecurityPolicy, Ref&lt;SecurityOrigin&gt;&amp;&amp; topOrigin, MonotonicTime timeOrigin, IDBClient::IDBConnectionProxy* connectionProxy, SocketProvider* socketProvider, PAL::SessionID sessionID)
&gt; 
&gt; That is a lot of arguments. Will there be more? Seems ripe for a Parameters
&gt; object or something.

This is exactly the same as WorkerGlobalScope, DedicatedWorkerGlobalScope, WorkerThread, etc etc etc.

I don&apos;t know that a parameters object makes a lot of sense. For these families of objects there&apos;s only ever going to be one caller, and making changes to the parameters is easily handled with the ::create() method being variadic.

Also a parameters object would allow for default arguments, and I think it&apos;s good for none of these arguments to be things you can ignore!
Part of it is made nicer with a variadic ::create() method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359901</commentid>
    <comment_count>5</comment_count>
      <attachid>323625</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-10-12 20:22:47 -0700</bug_when>
    <thetext>Created attachment 323625
Patch (Changelog to come, still reviewable now)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359904</commentid>
    <comment_count>6</comment_count>
      <attachid>323625</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-10-12 20:55:20 -0700</bug_when>
    <thetext>Comment on attachment 323625
Patch (Changelog to come, still reviewable now)

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

&gt; Source/WebCore/bindings/js/WorkerScriptController.cpp:112
&gt; +        Structure* contextPrototypeStructure = JSServiceWorkerGlobalScopePrototype::createStructure(*m_vm, nullptr, jsNull());
&gt; +        Strong&lt;JSServiceWorkerGlobalScopePrototype&gt; contextPrototype(*m_vm, JSServiceWorkerGlobalScopePrototype::create(*m_vm, nullptr, contextPrototypeStructure));
&gt; +        Structure* structure = JSServiceWorkerGlobalScope::createStructure(*m_vm, nullptr, contextPrototype.get());
&gt; +        auto* proxyStructure = JSProxy::createStructure(*m_vm, nullptr, jsNull(), PureForwardingProxyType);
&gt; +        auto* proxy = JSProxy::create(*m_vm, proxyStructure);
&gt; +    
&gt; +        m_workerGlobalScopeWrapper.set(*m_vm, JSServiceWorkerGlobalScope::create(*m_vm, structure, static_cast&lt;ServiceWorkerGlobalScope&amp;&gt;(*m_workerGlobalScope), proxy));
&gt; +        contextPrototypeStructure-&gt;setGlobalObject(*m_vm, m_workerGlobalScopeWrapper.get());
&gt; +        ASSERT(structure-&gt;globalObject() == m_workerGlobalScopeWrapper);
&gt; +        ASSERT(m_workerGlobalScopeWrapper-&gt;structure()-&gt;globalObject() == m_workerGlobalScopeWrapper);
&gt; +        contextPrototype-&gt;structure()-&gt;setGlobalObject(*m_vm, m_workerGlobalScopeWrapper.get());
&gt; +        contextPrototype-&gt;structure()-&gt;setPrototypeWithoutTransition(*m_vm, JSWorkerGlobalScope::prototype(*m_vm, *m_workerGlobalScopeWrapper.get()));
&gt; +
&gt; +        proxy-&gt;setTarget(*m_vm, m_workerGlobalScopeWrapper.get());
&gt; +        proxy-&gt;structure()-&gt;setGlobalObject(*m_vm, m_workerGlobalScopeWrapper.get());

Since there&apos;s very little difference between this and the the code for dedicated workers above, I&apos;d consider factoring this out into a function template that takes the prototype and global scope class names as parameters.

&gt; Source/WebCore/workers/service/ServiceWorkerGlobalScope.h:38
&gt; +    

whitespace

&gt; Source/WebCore/workers/service/context/ServiceWorkerThread.cpp:76
&gt; +static uint64_t nextUniqueContextIdentifier()
&gt; +{
&gt; +    ASSERT(isMainThread());
&gt; +    static uint64_t currentUniqueContextIdentifier;
&gt; +    return ++currentUniqueContextIdentifier;
&gt; +}

Can ServiceWorkerThread use Identified&lt;&gt; instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359923</commentid>
    <comment_count>7</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-10-12 22:17:02 -0700</bug_when>
    <thetext>(In reply to Andy Estes from comment #6)
&gt; Comment on attachment 323625 [details]
&gt; Patch (Changelog to come, still reviewable now)
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=323625&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/js/WorkerScriptController.cpp:112
&gt; &gt; +        Structure* contextPrototypeStructure = JSServiceWorkerGlobalScopePrototype::createStructure(*m_vm, nullptr, jsNull());
&gt; &gt; +        Strong&lt;JSServiceWorkerGlobalScopePrototype&gt; contextPrototype(*m_vm, JSServiceWorkerGlobalScopePrototype::create(*m_vm, nullptr, contextPrototypeStructure));
&gt; &gt; +        Structure* structure = JSServiceWorkerGlobalScope::createStructure(*m_vm, nullptr, contextPrototype.get());
&gt; &gt; +        auto* proxyStructure = JSProxy::createStructure(*m_vm, nullptr, jsNull(), PureForwardingProxyType);
&gt; &gt; +        auto* proxy = JSProxy::create(*m_vm, proxyStructure);
&gt; &gt; +    
&gt; &gt; +        m_workerGlobalScopeWrapper.set(*m_vm, JSServiceWorkerGlobalScope::create(*m_vm, structure, static_cast&lt;ServiceWorkerGlobalScope&amp;&gt;(*m_workerGlobalScope), proxy));
&gt; &gt; +        contextPrototypeStructure-&gt;setGlobalObject(*m_vm, m_workerGlobalScopeWrapper.get());
&gt; &gt; +        ASSERT(structure-&gt;globalObject() == m_workerGlobalScopeWrapper);
&gt; &gt; +        ASSERT(m_workerGlobalScopeWrapper-&gt;structure()-&gt;globalObject() == m_workerGlobalScopeWrapper);
&gt; &gt; +        contextPrototype-&gt;structure()-&gt;setGlobalObject(*m_vm, m_workerGlobalScopeWrapper.get());
&gt; &gt; +        contextPrototype-&gt;structure()-&gt;setPrototypeWithoutTransition(*m_vm, JSWorkerGlobalScope::prototype(*m_vm, *m_workerGlobalScopeWrapper.get()));
&gt; &gt; +
&gt; &gt; +        proxy-&gt;setTarget(*m_vm, m_workerGlobalScopeWrapper.get());
&gt; &gt; +        proxy-&gt;structure()-&gt;setGlobalObject(*m_vm, m_workerGlobalScopeWrapper.get());
&gt; 
&gt; Since there&apos;s very little difference between this and the the code for
&gt; dedicated workers above, I&apos;d consider factoring this out into a function
&gt; template that takes the prototype and global scope class names as parameters.
&gt; 

Not as much of a slam dunk as it seems as there&apos;s SW specific bits coming very very soon.

I&apos;ll take a quick look at it.

&gt; &gt; Source/WebCore/workers/service/ServiceWorkerGlobalScope.h:38
&gt; &gt; +    
&gt; 
&gt; whitespace
&gt; 
&gt; &gt; Source/WebCore/workers/service/context/ServiceWorkerThread.cpp:76
&gt; &gt; +static uint64_t nextUniqueContextIdentifier()
&gt; &gt; +{
&gt; &gt; +    ASSERT(isMainThread());
&gt; &gt; +    static uint64_t currentUniqueContextIdentifier;
&gt; &gt; +    return ++currentUniqueContextIdentifier;
&gt; &gt; +}
&gt; 
&gt; Can ServiceWorkerThread use Identified&lt;&gt; instead?

(Puts on the hat of the person who added Identified&lt;&gt; in the first place)

Yes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359927</commentid>
    <comment_count>8</comment_count>
      <attachid>323637</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-10-12 22:24:31 -0700</bug_when>
    <thetext>Created attachment 323637
PFL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359929</commentid>
    <comment_count>9</comment_count>
      <attachid>323639</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-10-12 22:57:09 -0700</bug_when>
    <thetext>Created attachment 323639
PFL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359936</commentid>
    <comment_count>10</comment_count>
      <attachid>323639</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-12 23:44:50 -0700</bug_when>
    <thetext>Comment on attachment 323639
PFL

Clearing flags on attachment: 323639

Committed r223277: &lt;https://trac.webkit.org/changeset/223277&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360024</commentid>
    <comment_count>11</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-10-13 09:30:23 -0700</bug_when>
    <thetext>Is it possible with this patch landed to do some HTTP/POST to a server so as to enable communication between a window and a service worker through this server?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360051</commentid>
    <comment_count>12</comment_count>
      <attachid>323639</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-13 10:07:23 -0700</bug_when>
    <thetext>Comment on attachment 323639
PFL

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

&gt; Source/WebCore/workers/service/context/SWContextManager.cpp:40
&gt; +    static SWContextManager* sharedManager = new SWContextManager;

Any reason we are not using NeverDestroyed here?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323605</attachid>
            <date>2017-10-12 17:14:46 -0700</date>
            <delta_ts>2017-10-12 20:22:47 -0700</delta_ts>
            <desc>Patch (without changeling but otherwise review ready?)</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>39158</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Jhc2lj
LXJlZ2lzdGVyLWV4Y2VwdGlvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93b3JrZXJzL3NlcnZpY2UvYmFzaWMtcmVnaXN0ZXItZXhjZXB0aW9ucy1leHBlY3RlZC50eHQK
aW5kZXggODdjNWZiMjgwMjQuLjFlMTk1M2EyNzQ4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy1yZWdpc3Rlci1leGNlcHRpb25zLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNp
Yy1yZWdpc3Rlci1leGNlcHRpb25zLWV4cGVjdGVkLnR4dApAQCAtNCw3ICs0LDcgQEAgQ09OU09M
RSBNRVNTQUdFOiBsaW5lIDQwOiBSZWdpc3RyYXRpb24gZmFpbGVkIHdpdGggZXJyb3I6IFR5cGVF
cnJvcjogc2VydmljZVdvcmsKIENPTlNPTEUgTUVTU0FHRTogbGluZSA1MDogUmVnaXN0cmF0aW9u
IGZhaWxlZCB3aXRoIGVycm9yOiBUeXBlRXJyb3I6IHNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoKSBt
dXN0IGJlIGNhbGxlZCB3aXRoIGEgc2NyaXB0IFVSTCB3aG9zZSBwYXRoIGRvZXMgbm90IGNvbnRh
aW4gJyUyZicgb3IgJyU1YycKIENPTlNPTEUgTUVTU0FHRTogbGluZSA2MDogUmVnaXN0cmF0aW9u
IGZhaWxlZCB3aXRoIGVycm9yOiBUeXBlRXJyb3I6IFNjb3BlIFVSTCBwcm92aWRlZCB0byBzZXJ2
aWNlV29ya2VyLnJlZ2lzdGVyKCkgbXVzdCBiZSBlaXRoZXIgSFRUUCBvciBIVFRQUwogQ09OU09M
RSBNRVNTQUdFOiBsaW5lIDcwOiBSZWdpc3RyYXRpb24gZmFpbGVkIHdpdGggZXJyb3I6IFR5cGVF
cnJvcjogU2NvcGUgVVJMIHByb3ZpZGVkIHRvIHNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoKSBjYW5u
b3QgaGF2ZSBhIHBhdGggdGhhdCBjb250YWlucyAnJTJmJyBvciAnJTVjJwotQ09OU09MRSBNRVNT
QUdFOiBsaW5lIDEwOiBSZWdpc3RyYXRpb24gZmFpbGVkIHdpdGggZXJyb3I6IFVua25vd25FcnJv
cjogRmFpbGVkIHRvIHN0YXJ0IHNlcnZpY2Ugd29ya2VyIHNjcmlwdCBvZiBsZW5ndGggMAorQ09O
U09MRSBNRVNTQUdFOiBsaW5lIDEwOiBSZWdpc3RyYXRpb24gZmFpbGVkIHdpdGggZXJyb3I6IFVu
a25vd25FcnJvcjogV29ya2VyIHNjcmlwdCBzdWNjZXNzZnVsbHkgc3RhcnRlZCwgYnV0IGl0IGhh
cyBubyB3YXkgdG8gY29tbXVuaWNhdGUgeWV0CiBDT05TT0xFIE1FU1NBR0U6IGxpbmUgODA6IFJl
Z2lzdHJhdGlvbiBmYWlsZWQgd2l0aCBlcnJvcjogU2VjdXJpdHlFcnJvcjogU2NyaXB0IG9yaWdp
biBkb2VzIG5vdCBtYXRjaCB0aGUgcmVnaXN0ZXJpbmcgY2xpZW50J3Mgb3JpZ2luCiBDT05TT0xF
IE1FU1NBR0U6IGxpbmUgOTE6IFJlZ2lzdHJhdGlvbiBmYWlsZWQgd2l0aCBlcnJvcjogU2VjdXJp
dHlFcnJvcjogU2NvcGUgb3JpZ2luIGRvZXMgbm90IG1hdGNoIHRoZSByZWdpc3RlcmluZyBjbGll
bnQncyBvcmlnaW4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJz
L3NlcnZpY2UvYmFzaWMtcmVnaXN0ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93b3JrZXJzL3NlcnZpY2UvYmFzaWMtcmVnaXN0ZXItZXhwZWN0ZWQudHh0CmluZGV4IDUx
MzNiYjJmY2Q4Li5mMjMwYWNhMDQzMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93b3JrZXJzL3NlcnZpY2UvYmFzaWMtcmVnaXN0ZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Jhc2ljLXJlZ2lzdGVyLWV4cGVjdGVk
LnR4dApAQCAtMSwzICsxLDMgQEAKLUNPTlNPTEUgTUVTU0FHRTogbGluZSAxMDogUmVnaXN0cmF0
aW9uIGZhaWxlZCB3aXRoIGVycm9yOiBVbmtub3duRXJyb3I6IEZhaWxlZCB0byBzdGFydCBzZXJ2
aWNlIHdvcmtlciBzY3JpcHQgb2YgbGVuZ3RoIDQxCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMjE6
IFJlZ2lzdHJhdGlvbiBmYWlsZWQgd2l0aCBlcnJvcjogVW5rbm93bkVycm9yOiBGYWlsZWQgdG8g
c3RhcnQgc2VydmljZSB3b3JrZXIgc2NyaXB0IG9mIGxlbmd0aCAwCitDT05TT0xFIE1FU1NBR0U6
IGxpbmUgMTA6IFJlZ2lzdHJhdGlvbiBmYWlsZWQgd2l0aCBlcnJvcjogVW5rbm93bkVycm9yOiBX
b3JrZXIgc2NyaXB0IHN1Y2Nlc3NmdWxseSBzdGFydGVkLCBidXQgaXQgaGFzIG5vIHdheSB0byBj
b21tdW5pY2F0ZSB5ZXQKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAyMTogUmVnaXN0cmF0aW9uIGZh
aWxlZCB3aXRoIGVycm9yOiBVbmtub3duRXJyb3I6IFdvcmtlciBzY3JpcHQgc3VjY2Vzc2Z1bGx5
IHN0YXJ0ZWQsIGJ1dCBpdCBoYXMgbm8gd2F5IHRvIGNvbW11bmljYXRlIHlldAogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZWdpc3RyYXRpb24t
dGFzay1xdWV1ZS1zY2hlZHVsaW5nLTEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVnaXN0cmF0aW9uLXRhc2stcXVldWUtc2NoZWR1bGluZy0x
LWV4cGVjdGVkLnR4dAppbmRleCBjMWEwNjM1MDYzOS4uMDEwMjI3MDMxY2QgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3JlZ2lzdHJhdGlvbi10YXNr
LXF1ZXVlLXNjaGVkdWxpbmctMS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVnaXN0cmF0aW9uLXRhc2stcXVldWUtc2NoZWR1bGluZy0x
LWV4cGVjdGVkLnR4dApAQCAtMSwyICsxLDIgQEAKLUFMRVJUOiBVbmV4cGVjdGVkIGVycm9yIHJl
Y2VpdmVkIGZyb20gc2VydmVyOiBVbmtub3duRXJyb3I6IEZhaWxlZCB0byBzdGFydCBzZXJ2aWNl
IHdvcmtlciBzY3JpcHQgb2YgbGVuZ3RoIDQxCitBTEVSVDogVW5leHBlY3RlZCBlcnJvciByZWNl
aXZlZCBmcm9tIHNlcnZlcjogVW5rbm93bkVycm9yOiBXb3JrZXIgc2NyaXB0IHN1Y2Nlc3NmdWxs
eSBzdGFydGVkLCBidXQgaXQgaGFzIG5vIHdheSB0byBjb21tdW5pY2F0ZSB5ZXQKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGE5
NWVmZjdjMDQ5Li5lNDcyYWE3YzgxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjM1NCw2ICsyMzU0LDkgQEAKIAkJNTE3QTYz
QzYxQjc0MzE5MjAwRTdEQ0RDIC8qIEtleWVkRW5jb2RlckNGLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdBNjNDMjFCNzQzMTdFMDBFN0RDREMgLyog
S2V5ZWRFbmNvZGVyQ0YuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk1MTdCMjVBOTFDQzgyQjJBMDA2MUMwMTEgLyogSURCQ29ubmVjdGlvblByb3h5
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0Iy
NUE3MUNDODIwMzIwMDYxQzAxMSAvKiBJREJDb25uZWN0aW9uUHJveHkuY3BwICovOyB9OwogCQk1
MTdCMjVBQTFDQzgyQjJBMDA2MUMwMTEgLyogSURCQ29ubmVjdGlvblByb3h5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdCMjVBODFDQzgyMDMyMDA2
MUMwMTEgLyogSURCQ29ubmVjdGlvblByb3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTE3Qzg3MEExRjhFQkIyNTAwRUI4MDc2IC8qIFNXQ29u
dGV4dE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTE3Qzg3MDgxRjhFQjlCRjAwRUI4MDc2IC8qIFNXQ29udGV4dE1hbmFnZXIuY3BwICov
OyB9OworCQk1MTdDODcwQjFGOEVCQjI1MDBFQjgwNzYgLyogU1dDb250ZXh0TWFuYWdlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3Qzg3MDkxRjhF
QjlDMDAwRUI4MDc2IC8qIFNXQ29udGV4dE1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1MTdDODcxODFGOEZENEQ5MDBFQjgwNzYgLyog
U2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0M4NzE2MUY4RkQ0RDMwMEVCODA3NiAvKiBTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGEuY3BwICovOyB9OwogCQk1MTdERUVFNTFERTk0QURDMDBCOTE2NDQgLyog
U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3REVFRTMxREU5NEFEQzAwQjkxNjQ0IC8qIFNjcm9s
bGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbSAqLzsgfTsKIAkJNTE3REVFRTgxREU5NEIwODAw
QjkxNjQ0IC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3REVFRTcxREU5NEIwODAwQjkxNjQ0
IC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxN0ZCQTFFMTUxQUIxN0MwMEI1Nzk1OSAv
KiBET01XaW5kb3dFeHRlbnNpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTE3RkJBMTcxNTFBQTcxQjAwQjU3OTU5IC8qIERPTVdpbmRvd0V4dGVu
c2lvbi5jcHAgKi87IH07CkBAIC0yNDU2LDYgKzI0NTksOCBAQAogCQk1MUJBNEFDQTFCQkM1QkQ5
MDBERjNENkQgLyogTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkE0QUM4MUJCQzVCOUUwMERGM0Q2RCAvKiBN
ZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwICovOyB9OwogCQk1MUJBNEFDQjFCQkM1QkQ5MDBERjNE
NkQgLyogTWVtb3J5SURCQmFja2luZ1N0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJBNEFDOTFCQkM1QjlFMDBERjNENkQgLyogTWVtb3J5SURC
QmFja2luZ1N0b3JlLmggKi87IH07CiAJCTUxQkE0QUNDMUJCQzVCREQwMERGM0Q2RCAvKiBJREJC
YWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxQkE0QUM3MUJCQzVBRDYwMERGM0Q2RCAvKiBJREJCYWNraW5nU3RvcmUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1MUJDQ0UyRjFGOEYx
Nzk1MDA2QkEwRUQgLyogU2VydmljZVdvcmtlclRocmVhZC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdDODcxMTFGOEVFNzJGMDBFQjgwNzYgLyog
U2VydmljZVdvcmtlclRocmVhZC5jcHAgKi87IH07CisJCTUxQkNDRTMwMUY4RjE3OUUwMDZCQTBF
RCAvKiBTZXJ2aWNlV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTdDODcxMDFGOEVFNzJFMDBFQjgwNzYgLyogU2VydmljZVdvcmtl
clRocmVhZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTUxQkUzN0UwMERBRUUwMEUwMDEwODVGQyAvKiBTdG9yYWdlQXJlYS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCRTM3REUwREFFRTAwRTAwMTA4
NUZDIC8qIFN0b3JhZ2VBcmVhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNTFDMEFBMzkwRjJBQTEwQTAwMTY0OEMyIC8qIENhY2hlZEZyYW1lLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUMwQUEzODBG
MkFBMTBBMDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUMwQUE0MTBGMkFBMTVFMDAxNjQ4QzIgLyogQ2Fj
aGVkRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTFDMEFBNDAwRjJBQTE1RTAwMTY0OEMyIC8qIENhY2hlZEZyYW1lLmNwcCAqLzsgfTsKQEAg
LTEwMjkzLDYgKzEwMjk4LDExIEBACiAJCTUxN0E2M0MyMUI3NDMxN0UwMEU3RENEQyAvKiBLZXll
ZEVuY29kZXJDRi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBLZXllZEVuY29k
ZXJDRi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTdCMjVBNzFDQzgyMDMyMDA2
MUMwMTEgLyogSURCQ29ubmVjdGlvblByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IElEQkNvbm5lY3Rpb25Qcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxN0IyNUE4MUNDODIwMzIwMDYxQzAxMSAvKiBJREJDb25uZWN0aW9uUHJveHku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCQ29ubmVjdGlvblByb3h5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxN0M4NzA4MUY4RUI5QkYwMEVCODA3NiAv
KiBTV0NvbnRleHRNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IFNXQ29udGV4dE1hbmFnZXIuY3BwOyBwYXRoID0gd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U1dDb250ZXh0TWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJNTE3
Qzg3MDkxRjhFQjlDMDAwRUI4MDc2IC8qIFNXQ29udGV4dE1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gU1dDb250ZXh0TWFuYWdlci5oOyBwYXRoID0gd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oOyBzb3VyY2VUcmVlID0gU09VUkNFX1JP
T1Q7IH07CisJCTUxN0M4NzEwMUY4RUU3MkUwMEVCODA3NiAvKiBTZXJ2aWNlV29ya2VyVGhyZWFk
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNlcnZpY2VXb3JrZXJUaHJlYWQu
aDsgcGF0aCA9IHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaDsg
c291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQk1MTdDODcxMTFGOEVFNzJGMDBFQjgwNzYg
LyogU2VydmljZVdvcmtlclRocmVhZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBTZXJ2aWNlV29ya2VyVGhyZWFkLmNwcDsgcGF0aCA9IHdvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7
IH07CisJCTUxN0M4NzE2MUY4RkQ0RDMwMEVCODA3NiAvKiBTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VydmljZVdvcmtl
ckNvbnRleHREYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3REVFRTMx
REU5NEFEQzAwQjkxNjQ0IC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNjcm9sbGluZ01vbWVudHVtQ2Fs
Y3VsYXRvck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3REVFRTcxREU5
NEIwODAwQjkxNjQ0IC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3RkJBMTcxNTFBQTcxQjAwQjU3OTU5
IC8qIERPTVdpbmRvd0V4dGVuc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBET01XaW5kb3dFeHRlbnNpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTkxNDAsNiArMTkxNTAsMTcgQEAKIAkJCXBhdGggPSBzZXJ2ZXI7CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwogCQl9OworCQk1MTdDODcwNzFGOEU4RkYyMDBFQjgwNzYgLyogY29u
dGV4dCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNTE3
Qzg3MDgxRjhFQjlCRjAwRUI4MDc2IC8qIFNXQ29udGV4dE1hbmFnZXIuY3BwICovLAorCQkJCTUx
N0M4NzA5MUY4RUI5QzAwMEVCODA3NiAvKiBTV0NvbnRleHRNYW5hZ2VyLmggKi8sCisJCQkJNTE3
Qzg3MTExRjhFRTcyRjAwRUI4MDc2IC8qIFNlcnZpY2VXb3JrZXJUaHJlYWQuY3BwICovLAorCQkJ
CTUxN0M4NzEwMUY4RUU3MkUwMEVCODA3NiAvKiBTZXJ2aWNlV29ya2VyVGhyZWFkLmggKi8sCisJ
CQkpOworCQkJcGF0aCA9IGNvbnRleHQ7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9
OwogCQk1MTgyQzI0QzFGMzE0MjA5MDA1OUJBN0MgLyogU2VydmljZVdvcmtlcnMgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMTkyMjAsNiArMTkyNDEsNyBA
QAogCQk1MUYxNzU0NDFGM0VCQkYyMDBDNzQ5NTAgLyogc2VydmljZSAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNTE3Qzg3MDcxRjhFOEZGMjAwRUI4MDc2
IC8qIGNvbnRleHQgKi8sCiAJCQkJNTE3QTUyRUMxRjQ3NTMyRDAwRENEQzBBIC8qIHNlcnZlciAq
LywKIAkJCQk1MUYxNzU1QjFGM0VCQzBDMDBDNzQ5NTAgLyogU2VydmljZVdvcmtlci5jcHAgKi8s
CiAJCQkJNTFGMTc1NUExRjNFQkMwQzAwQzc0OTUwIC8qIFNlcnZpY2VXb3JrZXIuaCAqLywKQEAg
LTE5MjI3LDYgKzE5MjQ5LDcgQEAKIAkJCQk1MUYxNzU1ODFGM0VCQzBDMDBDNzQ5NTAgLyogU2Vy
dmljZVdvcmtlckNvbnRhaW5lci5jcHAgKi8sCiAJCQkJNTFGMTc1NTcxRjNFQkMwQzAwQzc0OTUw
IC8qIFNlcnZpY2VXb3JrZXJDb250YWluZXIuaCAqLywKIAkJCQk1MUYxNzU1NjFGM0VCQzBDMDBD
NzQ5NTAgLyogU2VydmljZVdvcmtlckNvbnRhaW5lci5pZGwgKi8sCisJCQkJNTE3Qzg3MTYxRjhG
RDREMzAwRUI4MDc2IC8qIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAgKi8sCiAJCQkJNTFD
QTdFRTcxRjg4MzJFMDAwM0QzMTMxIC8qIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oICovLAog
CQkJCTUxN0E1MzVDMUY1ODk5RjIwMERDREMwQSAvKiBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQu
aCAqLywKIAkJCQk1MUYxNzU1NTFGM0VCQzBDMDBDNzQ5NTAgLyogU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlLmNwcCAqLywKQEAgLTI4NjM5LDYgKzI4NjYyLDcgQEAKIAkJCQk3QzgxMzlBQTFFRDY2
MDRCMDBDRTI2RTggLyogSlNET01DYXN0ZWRUaGlzRXJyb3JCZWhhdmlvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDEzQzJDMzQxQkMyOUE4RjAwNzUyMDRDIC8qIEpTRE9NQ29uc3RydWN0b3IuaCBp
biBIZWFkZXJzICovLAogCQkJCTkzMDg0MTM0MUNEREIxNTUwMEIwOTU4QyAvKiBKU0RPTUNvbnZl
cnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxN0M4NzBCMUY4RUJCMjUwMEVCODA3NiAvKiBTV0Nv
bnRleHRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzhFMzRBRDFFNEEzM0FGMDA1NENF
MjMgLyogSlNET01Db252ZXJ0QW55LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzhFMzRBRTFFNEEz
M0FGMDA1NENFMjMgLyogSlNET01Db252ZXJ0QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M4
RTM0QUYxRTRBMzNBRjAwNTRDRTIzIC8qIEpTRE9NQ29udmVydEJvb2xlYW4uaCBpbiBIZWFkZXJz
ICovLApAQCAtMzA0MjUsNiArMzA0NDksNyBAQAogCQkJCUIyMjI3OUM1MEQwMEJGMjIwMDcxQjc4
MiAvKiBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
MjIyNzlDODBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVCbGVuZEVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUIyMjI3OUNCMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRUNvbG9yTWF0cml4RWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTFCQ0NFMzAxRjhGMTc5RTAwNkJBMEVEIC8qIFNl
cnZpY2VXb3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OUNFMEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQjIyMjc5RDEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFQ29tcG9zaXRlRWxlbWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMTkyMTMyNzUxMUMwRTZCQjAwNDU2MjM4IC8qIFNWR0ZFQ29u
dm9sdmVNYXRyaXhFbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTMxNjAzLDYgKzMxNjI4LDcg
QEAKIAkJCQk0MUQxMjlDRjFGM0QwRUZFMDBEMTVFNDcgLyogQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNDNBRjhFNjFBQzVCN0U4MDBDQTcxN0UgLyogQ2Fj
aGVWYWxpZGF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5QUUyRDk2MTM0RUU1RjkwMDcy
OTIwQSAvKiBDYWxjdWxhdGlvblZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxN0M4NzE4
MUY4RkQ0RDkwMEVCODA3NiAvKiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTUyMDc2MDQxRjI2NzVGRTAwN0QyQUFCIC8qIENhbGxUcmFjZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNDE1Q0RBRjQxRTZCOEY4NzAwNEYxMUVFIC8qIENhbnZhc0NhcHR1
cmVNZWRpYVN0cmVhbVRyYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5NDg0RkMxMTAyQ0Yy
M0MwMDE4N0REMyAvKiBDYW52YXNHcmFkaWVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMyMjQ1
LDYgKzMyMjcxLDcgQEAKIAkJCQk5NkFCQTQyMzE0QkNCODBFMDBENTYyMDQgLyogR3JhcGhpY3ND
b250ZXh0M0RPcGVuR0xDb21tb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJFRDk3NzEwQjFG
NTVDRTAwMjU3RDBGIC8qIEdyYXBoaWNzQ29udGV4dENHLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUIyNzdCNDA0MEIyMkYzN0MwMDA0QkVDNiAvKiBHcmFwaGljc0NvbnRleHRDb2NvYS5tbSBpbiBT
b3VyY2VzICovLAorCQkJCTUxQkNDRTJGMUY4RjE3OTUwMDZCQTBFRCAvKiBTZXJ2aWNlV29ya2Vy
VGhyZWFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNTgwQjBDMEYxMkEyNjkwMDUxRDY4OSAv
KiBHcmFwaGljc0xheWVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5OUIzRUQ2MTI4Q0QzMTQw
MEU3MjZDMiAvKiBHcmFwaGljc0xheWVyQ0EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZBMjRE
NzkxNjJERjkxOTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtMzM1NTgsNiArMzM1ODUsNyBAQAogCQkJCUM5NkY1RUM2MUI1ODcyMjYwMDkxRUE5
RCAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hYy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCUM5MEY2NTU1MUIyMjUzQjEwMDIxNjNBMSAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUNENjY5RDY4MUQyMzM2NEIwMDREMTg2NiAvKiBNZWRpYVNl
c3Npb25NYW5hZ2VyQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTE3Qzg3MEExRjhFQkIy
NTAwRUI4MDc2IC8qIFNXQ29udGV4dE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc2
MzhBOUExODg0NDg3MjAwRTE1QTFCIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0gaW4gU291
cmNlcyAqLywKIAkJCQkwN0VEQzNFRTFBQUNCNzVEMDA5ODNFQjUgLyogTWVkaWFTZXNzaW9uTWFu
YWdlck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEM0E0OTVFMTdBOUQwMUIwMDI3NEU0MiAv
KiBNZWRpYVNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggNGRkMTY2YWQy
Y2EuLmFlNWU2OGUzYjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9X
b3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUg
IkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUu
aCIKICNpbmNsdWRlICJKU0V2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiSlNTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAi
V2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgIldvcmtlckNvbnNvbGVDbGllbnQuaCIK
QEAgLTkyLDcgKzkzLDI0IEBAIHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlw
dCgpCiAKICAgICAgICAgcHJveHktPnNldFRhcmdldCgqbV92bSwgbV93b3JrZXJHbG9iYWxTY29w
ZVdyYXBwZXIuZ2V0KCkpOwogICAgICAgICBwcm94eS0+c3RydWN0dXJlKCktPnNldEdsb2JhbE9i
amVjdCgqbV92bSwgbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCkpOworICAgIH0gZWxz
ZSBpZiAobV93b3JrZXJHbG9iYWxTY29wZS0+aXNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoKSkg
eworICAgICAgICBTdHJ1Y3R1cmUqIGNvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUgPSBKU1NlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKCptX3ZtLCBudWxs
cHRyLCBqc051bGwoKSk7CisgICAgICAgIFN0cm9uZzxKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZVByb3RvdHlwZT4gY29udGV4dFByb3RvdHlwZSgqbV92bSwgSlNTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGVQcm90b3R5cGU6OmNyZWF0ZSgqbV92bSwgbnVsbHB0ciwgY29udGV4dFByb3RvdHlwZVN0
cnVjdHVyZSkpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEpTU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlOjpjcmVhdGVTdHJ1Y3R1cmUoKm1fdm0sIG51bGxwdHIsIGNvbnRleHRQcm90
b3R5cGUuZ2V0KCkpOworICAgICAgICBhdXRvKiBwcm94eVN0cnVjdHVyZSA9IEpTUHJveHk6OmNy
ZWF0ZVN0cnVjdHVyZSgqbV92bSwgbnVsbHB0ciwganNOdWxsKCksIFB1cmVGb3J3YXJkaW5nUHJv
eHlUeXBlKTsKKyAgICAgICAgYXV0byogcHJveHkgPSBKU1Byb3h5OjpjcmVhdGUoKm1fdm0sIHBy
b3h5U3RydWN0dXJlKTsKKyAgICAKKyAgICAgICAgbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIu
c2V0KCptX3ZtLCBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6Y3JlYXRlKCptX3ZtLCBzdHJ1
Y3R1cmUsIHN0YXRpY19jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSY+KCptX3dvcmtlckds
b2JhbFNjb3BlKSwgcHJveHkpKTsKKyAgICAgICAgY29udGV4dFByb3RvdHlwZVN0cnVjdHVyZS0+
c2V0R2xvYmFsT2JqZWN0KCptX3ZtLCBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSk7
CisgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpID09IG1fd29ya2VyR2xv
YmFsU2NvcGVXcmFwcGVyKTsKKyAgICAgICAgQVNTRVJUKG1fd29ya2VyR2xvYmFsU2NvcGVXcmFw
cGVyLT5zdHJ1Y3R1cmUoKS0+Z2xvYmFsT2JqZWN0KCkgPT0gbV93b3JrZXJHbG9iYWxTY29wZVdy
YXBwZXIpOworICAgICAgICBjb250ZXh0UHJvdG90eXBlLT5zdHJ1Y3R1cmUoKS0+c2V0R2xvYmFs
T2JqZWN0KCptX3ZtLCBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSk7CisgICAgICAg
IGNvbnRleHRQcm90b3R5cGUtPnN0cnVjdHVyZSgpLT5zZXRQcm90b3R5cGVXaXRob3V0VHJhbnNp
dGlvbigqbV92bSwgSlNXb3JrZXJHbG9iYWxTY29wZTo6cHJvdG90eXBlKCptX3ZtLCAqbV93b3Jr
ZXJHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCkpKTsKKworICAgICAgICBwcm94eS0+c2V0VGFyZ2V0
KCptX3ZtLCBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5nZXQoKSk7CisgICAgICAgIHByb3h5
LT5zdHJ1Y3R1cmUoKS0+c2V0R2xvYmFsT2JqZWN0KCptX3ZtLCBtX3dvcmtlckdsb2JhbFNjb3Bl
V3JhcHBlci5nZXQoKSk7CiAgICAgfQorICAgIAogICAgIEFTU0VSVChtX3dvcmtlckdsb2JhbFNj
b3BlV3JhcHBlci0+Z2xvYmFsT2JqZWN0KCkgPT0gbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIp
OwogICAgIEFTU0VSVChhc09iamVjdChtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci0+Z2V0UHJv
dG90eXBlRGlyZWN0KCkpLT5nbG9iYWxPYmplY3QoKSA9PSBtX3dvcmtlckdsb2JhbFNjb3BlV3Jh
cHBlcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3Rv
cnkuaW4gYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCmluZGV4IGRi
MmYyOTA3ZjdkLi5iYTFlMWEwMDQyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50VGFyZ2V0RmFjdG9yeS5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRG
YWN0b3J5LmluCkBAIC0zMiw2ICszMiw3IEBAIFJUQ0RUTUZTZW5kZXIgY29uZGl0aW9uYWw9V0VC
X1JUQ19EVE1GCiBSVENQZWVyQ29ubmVjdGlvbiBjb25kaXRpb25hbD1XRUJfUlRDCiBTZXJ2aWNl
V29ya2VyIGNvbmRpdGlvbmFsPVNFUlZJQ0VfV09SS0VSCiBTZXJ2aWNlV29ya2VyQ29udGFpbmVy
IGNvbmRpdGlvbmFsPVNFUlZJQ0VfV09SS0VSCitTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgY29u
ZGl0aW9uYWw9U0VSVklDRV9XT1JLRVIKIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24gY29uZGl0
aW9uYWw9U0VSVklDRV9XT1JLRVIKIFNvdXJjZUJ1ZmZlciBjb25kaXRpb25hbD1NRURJQV9TT1VS
Q0UKIFNvdXJjZUJ1ZmZlckxpc3QgY29uZGl0aW9uYWw9TUVESUFfU09VUkNFCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKaW5kZXggYTVjZTQzZTk5MDcuLjMzYWJi
ZTI4YmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNj
b3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCkBA
IC01OSw2ICs1OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Xb3JrZXJHbG9iYWxTY29wZSgp
OwogCiAgICAgdmlydHVhbCBib29sIGlzRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1NlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBjb25zdCBVUkwmIHVybCgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgU3RyaW5nIG9yaWdpbigpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMC4uM2NkMmQzZmQ3ODMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcApAQCAtMCwwICsxLDQwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YS5oIgorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGE6Omlzb2xhdGVkQ29weSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsgcmVnaXN0cmF0
aW9uS2V5Lmlzb2xhdGVkQ29weSgpLCB3b3JrZXJJRC5pc29sYXRlZENvcHkoKSwgc2NyaXB0Lmlz
b2xhdGVkQ29weSgpLCBzY3JpcHRVUkwuaXNvbGF0ZWRDb3B5KCkgfTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YS5oCmluZGV4IDdjNjM5ZTc4NTAxLi5hODcxM2IzNGYwNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERh
dGEuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uS2V5LmgiCisjaW5jbHVkZSAiVVJMLmgiCiAKICNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCiAKQEAgLTM1LDE1ICszNiwxOCBAQCBzdHJ1Y3QgU2VydmljZVdvcmtl
ckNvbnRleHREYXRhIHsKICAgICBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IHJlZ2lzdHJh
dGlvbktleTsKICAgICBTdHJpbmcgd29ya2VySUQ7CiAgICAgU3RyaW5nIHNjcmlwdDsKKyAgICBV
Ukwgc2NyaXB0VVJMOwogICAgIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5j
b2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
c3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+IGRlY29kZShEZWNvZGVyJik7
CisgICAgCisgICAgU2VydmljZVdvcmtlckNvbnRleHREYXRhIGlzb2xhdGVkQ29weSgpIGNvbnN0
OwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgU2VydmljZVdvcmtlckNvbnRl
eHREYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8
IHJlZ2lzdHJhdGlvbktleSA8PCB3b3JrZXJJRCA8PCBzY3JpcHQ7CisgICAgZW5jb2RlciA8PCBy
ZWdpc3RyYXRpb25LZXkgPDwgd29ya2VySUQgPDwgc2NyaXB0IDw8IHNjcmlwdFVSTDsKIH0KIAog
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KQEAgLTYxLDcgKzY1LDExIEBAIHN0ZDo6b3B0aW9uYWw8
U2VydmljZVdvcmtlckNvbnRleHREYXRhPiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OmRlY29k
ZShEZWNvZGVyCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzY3JpcHQpKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIAotICAgIHJldHVybiB7eyBXVEZNb3ZlKCpyZWdpc3RyYXRp
b25LZXkpLCBXVEZNb3ZlKHdvcmtlcklEKSwgV1RGTW92ZShzY3JpcHQpIH19OworICAgIFVSTCBz
Y3JpcHRVUkw7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzY3JpcHRVUkwpKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHt7IFdURk1vdmUoKnJlZ2lzdHJhdGlv
bktleSksIFdURk1vdmUod29ya2VySUQpLCBXVEZNb3ZlKHNjcmlwdCksIFdURk1vdmUoc2NyaXB0
VVJMKSB9fTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNw
cAppbmRleCBmZDQ4YWUyOGYwMS4uMTQ2N2NlOTViNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3Bw
CkBAIC0yOCwxNyArMjgsMzYgQEAKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAorI2lu
Y2x1ZGUgIlNlcnZpY2VXb3JrZXJUaHJlYWQuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCitT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRf
dCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlckNvbnRleHRE
YXRhJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIHVzZXJBZ2VudCwgU2VydmljZVdvcmtlclRocmVhZCYgdGhyZWFkLCBib29sIHNo
b3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgUmVmPFNlY3VyaXR5T3Jp
Z2luPiYmIHRvcE9yaWdpbiwgTW9ub3RvbmljVGltZSB0aW1lT3JpZ2luLCBJREJDbGllbnQ6OklE
QkNvbm5lY3Rpb25Qcm94eSogY29ubmVjdGlvblByb3h5LCBTb2NrZXRQcm92aWRlciogc29ja2V0
UHJvdmlkZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKKyAgICA6IFdvcmtlckdsb2JhbFNj
b3BlKHVybCwgaWRlbnRpZmllciwgdXNlckFnZW50LCB0aHJlYWQsIHNob3VsZEJ5cGFzc01haW5X
b3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgV1RGTW92ZSh0b3BPcmlnaW4pLCB0aW1lT3JpZ2lu
LCBjb25uZWN0aW9uUHJveHksIHNvY2tldFByb3ZpZGVyLCBzZXNzaW9uSUQpCisgICAgLCBtX3Nl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKQorICAg
ICwgbV9jb250ZXh0RGF0YShjcm9zc1RocmVhZENvcHkoZGF0YSkpCit7Cit9CisKK1NlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZTo6flNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSgpCit7Cit9CisKIFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb24mIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6cmVnaXN0
cmF0aW9uKCkKIHsKLSAgICByZXR1cm4gbV9yZWdpc3RyYXRpb247CisgICAgLy8gRklYTUU6IElz
IHRoaXMgbWV0aG9kIHN0aWxsIG5lZWRlZD8KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6c2tpcFdhaXRpbmcoUmVm
PERlZmVycmVkUHJvbWlzZT4mJikKIHsKIH0KIAorRXZlbnRUYXJnZXRJbnRlcmZhY2UgU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlOjpldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oCmluZGV4IGM1MmUyNDE2Njc3Li5iYjVhZGU2NzBmZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUuaApAQCAtMjcsMjIgKzI3LDM5IEBACiAKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCiAKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaCIKICNp
bmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmgiCiAjaW5jbHVkZSAiV29ya2VyR2xv
YmFsU2NvcGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEZWZlcnJlZFByb21p
c2U7Ci1jbGFzcyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOwotCitjbGFzcyBTZXJ2aWNlV29y
a2VyVGhyZWFkOworICAgIAogY2xhc3MgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlIDogcHVibGlj
IFdvcmtlckdsb2JhbFNjb3BlIHsKIHB1YmxpYzoKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBB
cmdzPiBzdGF0aWMgUmVmPFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4gY3JlYXRlKEFyZ3MmJi4u
LiBhcmdzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOworICAgIH0KKworICAg
IHZpcnR1YWwgflNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSgpOworCisgICAgYm9vbCBpc1NlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKwogICAg
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbigpOworICAgIAorICAgIHVp
bnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2
ZXJDb25uZWN0aW9uSWRlbnRpZmllcjsgfQogCiAgICAgdm9pZCBza2lwV2FpdGluZyhSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmKTsKIAorICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0
SW50ZXJmYWNlKCkgY29uc3QgZmluYWw7CisKIHByaXZhdGU6Ci0gICAgU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbiBtX3JlZ2lzdHJhdGlvbjsKKyAgICBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUo
dWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YSYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiB1c2VyQWdlbnQsIFNlcnZpY2VXb3JrZXJUaHJlYWQmLCBib29sIHNob3VsZEJ5cGFz
c01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRv
cE9yaWdpbiwgTW9ub3RvbmljVGltZSB0aW1lT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rp
b25Qcm94eSosIFNvY2tldFByb3ZpZGVyKiwgUEFMOjpTZXNzaW9uSUQpOworCisgICAgdWludDY0
X3QgbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcjsKKyAgICBTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEgbV9jb250ZXh0RGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1h
bmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250
ZXh0TWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjFm
YmZhNjU2OGUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTV0NvbnRleHRNYW5hZ2VyLmgi
CisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisj
aW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgorCit1c2luZyBuYW1lc3BhY2UgUEFMOworCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK1NXQ29udGV4dE1hbmFnZXImIFNXQ29udGV4dE1hbmFnZXI6OnNp
bmdsZXRvbigpCit7CisgICAgc3RhdGljIFNXQ29udGV4dE1hbmFnZXIqIHNoYXJlZE1hbmFnZXIg
PSBuZXcgU1dDb250ZXh0TWFuYWdlcjsKKyAgICByZXR1cm4gKnNoYXJlZE1hbmFnZXI7Cit9CisK
K1NXQ29udGV4dE1hbmFnZXI6OlNXQ29udGV4dE1hbmFnZXIoKQoreworCit9CisKK0V4Y2VwdGlv
bk9yPHVpbnQ2NF90PiBTV0NvbnRleHRNYW5hZ2VyOjpzdGFydFNlcnZpY2VXb3JrZXJDb250ZXh0
KHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGEmIGRhdGEpCit7CisgICAgLy8gRklYTUU6IFByb3ZpZGUgYSBzZW5zaWNhbCBz
ZXNzaW9uIElECisKKyAgICBhdXRvIHRocmVhZCA9IFNlcnZpY2VXb3JrZXJUaHJlYWQ6OmNyZWF0
ZShzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgZGF0YSwgU2Vzc2lvbklEOjpkZWZhdWx0U2Vz
c2lvbklEKCkpOworICAgIGF1dG8gcmVzdWx0ID0gbV93b3JrZXJUaHJlYWRNYXAuYWRkKHRocmVh
ZC0+dW5pcXVlQ29udGV4dElkZW50aWZpZXIoKSwgV1RGTW92ZSh0aHJlYWQpKTsKKyAgICBBU1NF
UlQocmVzdWx0LmlzTmV3RW50cnkpOworCisgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+c3Rh
cnQoKTsKKyAgICAKKyAgICBMT0coU2VydmljZVdvcmtlciwgIkNvbnRleHQgcHJvY2VzcyBQSUQ6
ICVpIHN0YXJ0ZWQgd29ya2VyIHRocmVhZCAlc1xuIiwgZ2V0cGlkKCksIGRhdGEud29ya2VySUQu
dXRmOCgpLmRhdGEoKSk7CisgICAgCisgICAgLy8gRklYTUU6IEZvciB0ZXN0aW5nIHB1cnBvc2Vz
IHdlIG5lZWQgdG8gc2lnbmFsIGEgZmFpbHVyZSB3aXRoIGFuIGV4Y2VwdGlvbiBwYXlsb2FkLgor
ICAgIC8vIExhdGVyIHdpdGggbW9yZSBBUElzIGFuZCBpbmZyYXN0cnVjdHVyZSBmaWxsZWQgaW4s
IHRlc3Rpbmcgd2lsbCBiZSBtdWNoIGVhc2llci4KKyAgICAKKyAgICByZXR1cm4gRXhjZXB0aW9u
IHsgVW5rbm93bkVycm9yLCAiV29ya2VyIHNjcmlwdCBzdWNjZXNzZnVsbHkgc3RhcnRlZCwgYnV0
IGl0IGhhcyBubyB3YXkgdG8gY29tbXVuaWNhdGUgeWV0IiB9OworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5h
Z2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmUxNWQ3ZTY5ODIz
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU1dDb250ZXh0TWFuYWdlci5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKworI2luY2x1ZGUgIkV4Y2Vw
dGlvbk9yLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlclRocmVhZC5oIgorI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IFNlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YTsKKworY2xhc3MgU1dDb250ZXh0TWFuYWdlciB7CitwdWJsaWM6CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFNXQ29udGV4dE1hbmFnZXImIHNpbmdsZXRvbigpOworCisg
ICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8dWludDY0X3Q+IHN0YXJ0U2VydmljZVdvcmtl
ckNvbnRleHQodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YSYpOworCitwcml2YXRlOgorICAgIFNXQ29udGV4dE1hbmFnZXIo
KTsKKyAgICAKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8U2VydmljZVdvcmtlclRocmVh
ZD4+IG1fd29ya2VyVGhyZWFkTWFwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZGI0NDNkYmE4NDcKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
ZXJ2aWNlV29ya2VyVGhyZWFkLmNwcApAQCAtMCwwICsxLDEwNCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyVGhyZWFkLmgiCisKKyNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKKyNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xp
Y3lSZXNwb25zZUhlYWRlcnMuaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1
ZGUgIlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmtlckxvYWRlclBy
b3h5LmgiCisjaW5jbHVkZSAiV29ya2VyT2JqZWN0UHJveHkuaCIKKyNpbmNsdWRlIDxwYWwvU2Vz
c2lvbklELmg+CisjaW5jbHVkZSA8cnVudGltZS9SdW50aW1lRmxhZ3MuaD4KKyNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKwordXNpbmcgbmFtZXNwYWNlIFBBTDsKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkgOiBwdWJsaWMgV29y
a2VyTG9hZGVyUHJveHksIHB1YmxpYyBXb3JrZXJPYmplY3RQcm94eSB7CitwdWJsaWM6CisgICAg
c3RhdGljIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSYgc2hhcmVkRHVtbXlQcm94eSgpCisgICAg
eworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U2VydmljZVdvcmtlclRocmVhZFByb3h5
PiBwcm94eTsKKyAgICAgICAgcmV0dXJuIHByb3h5OworICAgIH0KKworcHJpdmF0ZToKKyAgICB2
b2lkIHBvc3RUYXNrVG9Mb2FkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmKSBmaW5h
bCB7IH07CisgICAgYm9vbCBwb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiwgY29uc3QgU3RyaW5nJikgZmluYWwgeyByZXR1cm4g
ZmFsc2U7IH07CisgICAgdm9pZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoY29uc3QgU3Ry
aW5nJiwgaW50LCBpbnQsIGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgfTsKKyAgICB2b2lkIHBvc3RN
ZXNzYWdlVG9QYWdlSW5zcGVjdG9yKGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgfTsKKyAgICB2b2lk
IHdvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkKCkgZmluYWwgeyB9OworICAgIHZvaWQgcG9zdE1l
c3NhZ2VUb1dvcmtlck9iamVjdChSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmLCBzdGQ6
OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+KSBmaW5hbCB7IH07CisgICAgdm9p
ZCBjb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3QoYm9vbCkgZmluYWwgeyB9OworICAgIHZv
aWQgcmVwb3J0UGVuZGluZ0FjdGl2aXR5KGJvb2wpIGZpbmFsIHsgfTsKK307CisKKy8vIEZJWE1F
OiBVc2UgYSB2YWxpZCBXb3JrZXJMb2FkZXJQcm94eQorLy8gRklYTUU6IFVzZSBhIHZhbGlkIFdv
cmtlclJlcG9ydGluZ1Byb3h5CisvLyBGSVhNRTogVXNlIGEgdmFsaWQgV29ya2VyT2JqZWN0UHJv
eHkKKy8vIEZJWE1FOiBVc2UgYSB2YWxpZCBJREJDb25uZWN0aW9uCisvLyBGSVhNRTogVXNlIGEg
dmFsaWQgU29ja2V0UHJvdmlkZXIKKy8vIEZJWE1FOiBVc2UgYSB2YWxpZCB1c2VyIGFnZW50Cisv
LyBGSVhNRTogVXNlIHZhbGlkIHJ1bnRpbWUgZmxhZ3MKKworc3RhdGljIHVpbnQ2NF90IG5leHRV
bmlxdWVDb250ZXh0SWRlbnRpZmllcigpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
KyAgICBzdGF0aWMgdWludDY0X3QgY3VycmVudFVuaXF1ZUNvbnRleHRJZGVudGlmaWVyOworICAg
IHJldHVybiArK2N1cnJlbnRVbmlxdWVDb250ZXh0SWRlbnRpZmllcjsKK30KKworU2VydmljZVdv
cmtlclRocmVhZDo6U2VydmljZVdvcmtlclRocmVhZCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiBkYXRhLCBQQUw6OlNl
c3Npb25JRCkKKyAgICA6IFdvcmtlclRocmVhZChkYXRhLnNjcmlwdFVSTCwgZGF0YS53b3JrZXJJ
RCwgQVNDSUlMaXRlcmFsKCJXb3JrZXJVc2VyQWdlbnQiKSwgZGF0YS5zY3JpcHQsIFNlcnZpY2VX
b3JrZXJUaHJlYWRQcm94eTo6c2hhcmVkRHVtbXlQcm94eSgpLCBTZXJ2aWNlV29ya2VyVGhyZWFk
UHJveHk6OnNoYXJlZER1bW15UHJveHkoKSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlOjpOb3JtYWws
IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyB7IH0sIGZhbHNlLCBTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlKGRhdGEuc2NyaXB0VVJMKS5nZXQoKSwgTW9ub3RvbmljVGltZTo6bm93
KCksIG51bGxwdHIsIG51bGxwdHIsIEpTQzo6UnVudGltZUZsYWdzOjpjcmVhdGVBbGxFbmFibGVk
KCksIFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKQorICAgICwgbV91bmlxdWVDb250ZXh0
SWRlbnRpZmllcihuZXh0VW5pcXVlQ29udGV4dElkZW50aWZpZXIoKSkKKyAgICAsIG1fc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpCisgICAgLCBt
X2RhdGEoZGF0YS5pc29sYXRlZENvcHkoKSkKKyAgICAsIG1fd29ya2VyT2JqZWN0UHJveHkoU2Vy
dmljZVdvcmtlclRocmVhZFByb3h5OjpzaGFyZWREdW1teVByb3h5KCkpCit7Cit9CisKK1NlcnZp
Y2VXb3JrZXJUaHJlYWQ6On5TZXJ2aWNlV29ya2VyVGhyZWFkKCkKK3sKK30KKworUmVmPFdvcmtl
ckdsb2JhbFNjb3BlPiBTZXJ2aWNlV29ya2VyVGhyZWFkOjpjcmVhdGVXb3JrZXJHbG9iYWxTY29w
ZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IHVzZXJBZ2VudCwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwg
Ym9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIFJlZjxTZWN1
cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4sIE1vbm90b25pY1RpbWUgdGltZU9yaWdpbiwgUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKQoreworICAgIHJldHVybiBTZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGU6OmNyZWF0ZShtX3NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBtX2RhdGEsIHVybCwgaWRl
bnRpZmllciwgdXNlckFnZW50LCAqdGhpcywgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNl
Y3VyaXR5UG9saWN5LCBXVEZNb3ZlKHRvcE9yaWdpbiksIHRpbWVPcmlnaW4sIGlkYkNvbm5lY3Rp
b25Qcm94eSgpLCBzb2NrZXRQcm92aWRlcigpLCBzZXNzaW9uSUQpOworfQorCit2b2lkIFNlcnZp
Y2VXb3JrZXJUaHJlYWQ6OnJ1bkV2ZW50TG9vcCgpCit7CisgICAgLy8gRklYTUU6IFRoZXJlIHdp
bGwgYmUgU2VydmljZVdvcmtlciBzcGVjaWZpYyB0aGluZ3MgdG8gZG8gaGVyZS4KKyAgICBXb3Jr
ZXJUaHJlYWQ6OnJ1bkV2ZW50TG9vcCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjY2ZTczN2E5NjFjCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlclRocmVhZC5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKworI2luY2x1ZGUgIlNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YS5oIgorI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVy
czsKK2NsYXNzIFdvcmtlck9iamVjdFByb3h5Oworc3RydWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YTsKKworY2xhc3MgU2VydmljZVdvcmtlclRocmVhZCA6IHB1YmxpYyBXb3JrZXJUaHJlYWQg
eworcHVibGljOgorICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+IHN0YXRpYyBSZWY8U2Vy
dmljZVdvcmtlclRocmVhZD4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VydmljZVdvcmtlclRocmVhZChzdGQ6OmZvcndhcmQ8QXJn
cz4oYXJncykuLi4pKTsKKyAgICB9CisgICAgdmlydHVhbCB+U2VydmljZVdvcmtlclRocmVhZCgp
OworCisgICAgV29ya2VyT2JqZWN0UHJveHkmIHdvcmtlck9iamVjdFByb3h5KCkgY29uc3QgeyBy
ZXR1cm4gbV93b3JrZXJPYmplY3RQcm94eTsgfQorICAgIHVpbnQ2NF90IHVuaXF1ZUNvbnRleHRJ
ZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV91bmlxdWVDb250ZXh0SWRlbnRpZmllcjsgfQor
Citwcm90ZWN0ZWQ6CisgICAgUmVmPFdvcmtlckdsb2JhbFNjb3BlPiBjcmVhdGVXb3JrZXJHbG9i
YWxTY29wZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgdXNlckFnZW50LCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMm
LCBib29sIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgUmVmPFNl
Y3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgTW9ub3RvbmljVGltZSB0aW1lT3JpZ2luLCBQQUw6
OlNlc3Npb25JRCkgZmluYWw7CisgICAgdm9pZCBydW5FdmVudExvb3AoKSBvdmVycmlkZTsKKwor
cHJpdmF0ZToKKyAgICBTZXJ2aWNlV29ya2VyVGhyZWFkKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmLCBQQUw6OlNlc3Np
b25JRCk7CisKKyAgICB1aW50NjRfdCBtX3VuaXF1ZUNvbnRleHRJZGVudGlmaWVyOworICAgIHVp
bnQ2NF90IG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXI7CisgICAgU2VydmljZVdvcmtlckNv
bnRleHREYXRhIG1fZGF0YTsKKyAgICBXb3JrZXJPYmplY3RQcm94eSYgbV93b3JrZXJPYmplY3RQ
cm94eTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlci5jcHAKaW5kZXggMDU1OTAwYzYzNzAuLjBlNDg3YmFhODUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApA
QCAtMTY0LDcgKzE2NCw3IEBAIFJlZjxTV1NlcnZlcldvcmtlcj4gU1dTZXJ2ZXI6OmNyZWF0ZVdv
cmtlcihDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTZXJ2aWNlCiAgICAgYXV0byByZXN1
bHQgPSBtX3dvcmtlcnNCeUlELmFkZCh3b3JrZXJJRCwgU1dTZXJ2ZXJXb3JrZXI6OmNyZWF0ZShy
ZWdpc3RyYXRpb25LZXksIHVybCwgc2NyaXB0LCB0eXBlLCB3b3JrZXJJRCkpOwogICAgIEFTU0VS
VChyZXN1bHQuaXNOZXdFbnRyeSk7CiAgICAgCi0gICAgY29ubmVjdGlvbi5zdGFydFNlcnZpY2VX
b3JrZXJDb250ZXh0KHsgcmVnaXN0cmF0aW9uS2V5LCB3b3JrZXJJRCwgc2NyaXB0IH0pOworICAg
IGNvbm5lY3Rpb24uc3RhcnRTZXJ2aWNlV29ya2VyQ29udGV4dCh7IHJlZ2lzdHJhdGlvbktleSwg
d29ya2VySUQsIHNjcmlwdCwgdXJsIH0pOwogICAgIAogICAgIHJldHVybiByZXN1bHQuaXRlcmF0
b3ItPnZhbHVlLmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
CmluZGV4IDJmMmZhY2RkMjIwLi5mMWNmNmRiOTE3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcApAQCAtMTA0LDYgKzEwNCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9S
ZXNvdXJjZUxvYWRPYnNlcnZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9TV0NvbnRleHRNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TY2hlbWVSZWdpc3RyeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oPgpAQCAtMTY0Nywx
MSArMTY0OCwxMCBAQCB2b2lkIFdlYlByb2Nlc3M6OmdldFdvcmtlckNvbnRleHRDb25uZWN0aW9u
KCkKIAogdm9pZCBXZWJQcm9jZXNzOjpzdGFydFNlcnZpY2VXb3JrZXJDb250ZXh0KHVpbnQ2NF90
IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGEmIGRhdGEpCiB7Ci0gICAgLy8gRklYTUU6IEhlcmUgaXMgd2hlcmUgd2Ugd2lsbCBhY3R1YWxs
eSBzdGFydCB0aGUgc2NyaXB0LgotICAgIC8vIEZvciBub3cgd2UgYm91bmNlIGJhY2sgYSBmYWls
dXJlIG1lc3NhZ2UgdG8gdGhlIHJlcXVlc3RpbmcgcHJvY2VzcyBmb3IgdGVzdCBjb3ZlcmFnZS4K
LQotICAgIGF1dG8gbWVzc2FnZSA9IG1ha2VTdHJpbmcoIkZhaWxlZCB0byBzdGFydCBzZXJ2aWNl
IHdvcmtlciBzY3JpcHQgb2YgbGVuZ3RoICIsIFN0cmluZzo6bnVtYmVyKGRhdGEuc2NyaXB0Lmxl
bmd0aCgpKSk7Ci0gICAgbV93b3JrZXJDb250ZXh0Q29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6
U3RvcmFnZVByb2Nlc3M6OlNlcnZpY2VXb3JrZXJDb250ZXh0RmFpbGVkVG9TdGFydChzZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllciwgZGF0YS5yZWdpc3RyYXRpb25LZXksIGRhdGEud29ya2VySUQs
IG1lc3NhZ2UpLCAwKTsKKyAgICBhdXRvIGNvbnRleHRSZXN1bHQgPSBTV0NvbnRleHRNYW5hZ2Vy
OjpzaW5nbGV0b24oKS5zdGFydFNlcnZpY2VXb3JrZXJDb250ZXh0KHNlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyLCBkYXRhKTsKKyAgICAKKyAgICBpZiAoY29udGV4dFJlc3VsdC5oYXNFeGNlcHRp
b24oKSkKKyAgICAgICAgbV93b3JrZXJDb250ZXh0Q29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6
U3RvcmFnZVByb2Nlc3M6OlNlcnZpY2VXb3JrZXJDb250ZXh0RmFpbGVkVG9TdGFydChzZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllciwgZGF0YS5yZWdpc3RyYXRpb25LZXksIGRhdGEud29ya2VySUQs
IGNvbnRleHRSZXN1bHQuZXhjZXB0aW9uKCkubWVzc2FnZSgpKSwgMCk7CiB9CiAKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323625</attachid>
            <date>2017-10-12 20:22:47 -0700</date>
            <delta_ts>2017-10-12 20:55:20 -0700</delta_ts>
            <desc>Patch (Changelog to come, still reviewable now)</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>39194</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Jhc2lj
LXJlZ2lzdGVyLWV4Y2VwdGlvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93b3JrZXJzL3NlcnZpY2UvYmFzaWMtcmVnaXN0ZXItZXhjZXB0aW9ucy1leHBlY3RlZC50eHQK
aW5kZXggODdjNWZiMjgwMjQuLjFlMTk1M2EyNzQ4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy1yZWdpc3Rlci1leGNlcHRpb25zLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNp
Yy1yZWdpc3Rlci1leGNlcHRpb25zLWV4cGVjdGVkLnR4dApAQCAtNCw3ICs0LDcgQEAgQ09OU09M
RSBNRVNTQUdFOiBsaW5lIDQwOiBSZWdpc3RyYXRpb24gZmFpbGVkIHdpdGggZXJyb3I6IFR5cGVF
cnJvcjogc2VydmljZVdvcmsKIENPTlNPTEUgTUVTU0FHRTogbGluZSA1MDogUmVnaXN0cmF0aW9u
IGZhaWxlZCB3aXRoIGVycm9yOiBUeXBlRXJyb3I6IHNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoKSBt
dXN0IGJlIGNhbGxlZCB3aXRoIGEgc2NyaXB0IFVSTCB3aG9zZSBwYXRoIGRvZXMgbm90IGNvbnRh
aW4gJyUyZicgb3IgJyU1YycKIENPTlNPTEUgTUVTU0FHRTogbGluZSA2MDogUmVnaXN0cmF0aW9u
IGZhaWxlZCB3aXRoIGVycm9yOiBUeXBlRXJyb3I6IFNjb3BlIFVSTCBwcm92aWRlZCB0byBzZXJ2
aWNlV29ya2VyLnJlZ2lzdGVyKCkgbXVzdCBiZSBlaXRoZXIgSFRUUCBvciBIVFRQUwogQ09OU09M
RSBNRVNTQUdFOiBsaW5lIDcwOiBSZWdpc3RyYXRpb24gZmFpbGVkIHdpdGggZXJyb3I6IFR5cGVF
cnJvcjogU2NvcGUgVVJMIHByb3ZpZGVkIHRvIHNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoKSBjYW5u
b3QgaGF2ZSBhIHBhdGggdGhhdCBjb250YWlucyAnJTJmJyBvciAnJTVjJwotQ09OU09MRSBNRVNT
QUdFOiBsaW5lIDEwOiBSZWdpc3RyYXRpb24gZmFpbGVkIHdpdGggZXJyb3I6IFVua25vd25FcnJv
cjogRmFpbGVkIHRvIHN0YXJ0IHNlcnZpY2Ugd29ya2VyIHNjcmlwdCBvZiBsZW5ndGggMAorQ09O
U09MRSBNRVNTQUdFOiBsaW5lIDEwOiBSZWdpc3RyYXRpb24gZmFpbGVkIHdpdGggZXJyb3I6IFVu
a25vd25FcnJvcjogV29ya2VyIHNjcmlwdCBzdWNjZXNzZnVsbHkgc3RhcnRlZCwgYnV0IGl0IGhh
cyBubyB3YXkgdG8gY29tbXVuaWNhdGUgeWV0CiBDT05TT0xFIE1FU1NBR0U6IGxpbmUgODA6IFJl
Z2lzdHJhdGlvbiBmYWlsZWQgd2l0aCBlcnJvcjogU2VjdXJpdHlFcnJvcjogU2NyaXB0IG9yaWdp
biBkb2VzIG5vdCBtYXRjaCB0aGUgcmVnaXN0ZXJpbmcgY2xpZW50J3Mgb3JpZ2luCiBDT05TT0xF
IE1FU1NBR0U6IGxpbmUgOTE6IFJlZ2lzdHJhdGlvbiBmYWlsZWQgd2l0aCBlcnJvcjogU2VjdXJp
dHlFcnJvcjogU2NvcGUgb3JpZ2luIGRvZXMgbm90IG1hdGNoIHRoZSByZWdpc3RlcmluZyBjbGll
bnQncyBvcmlnaW4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJz
L3NlcnZpY2UvYmFzaWMtcmVnaXN0ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93b3JrZXJzL3NlcnZpY2UvYmFzaWMtcmVnaXN0ZXItZXhwZWN0ZWQudHh0CmluZGV4IDUx
MzNiYjJmY2Q4Li5mMjMwYWNhMDQzMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93b3JrZXJzL3NlcnZpY2UvYmFzaWMtcmVnaXN0ZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Jhc2ljLXJlZ2lzdGVyLWV4cGVjdGVk
LnR4dApAQCAtMSwzICsxLDMgQEAKLUNPTlNPTEUgTUVTU0FHRTogbGluZSAxMDogUmVnaXN0cmF0
aW9uIGZhaWxlZCB3aXRoIGVycm9yOiBVbmtub3duRXJyb3I6IEZhaWxlZCB0byBzdGFydCBzZXJ2
aWNlIHdvcmtlciBzY3JpcHQgb2YgbGVuZ3RoIDQxCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMjE6
IFJlZ2lzdHJhdGlvbiBmYWlsZWQgd2l0aCBlcnJvcjogVW5rbm93bkVycm9yOiBGYWlsZWQgdG8g
c3RhcnQgc2VydmljZSB3b3JrZXIgc2NyaXB0IG9mIGxlbmd0aCAwCitDT05TT0xFIE1FU1NBR0U6
IGxpbmUgMTA6IFJlZ2lzdHJhdGlvbiBmYWlsZWQgd2l0aCBlcnJvcjogVW5rbm93bkVycm9yOiBX
b3JrZXIgc2NyaXB0IHN1Y2Nlc3NmdWxseSBzdGFydGVkLCBidXQgaXQgaGFzIG5vIHdheSB0byBj
b21tdW5pY2F0ZSB5ZXQKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAyMTogUmVnaXN0cmF0aW9uIGZh
aWxlZCB3aXRoIGVycm9yOiBVbmtub3duRXJyb3I6IFdvcmtlciBzY3JpcHQgc3VjY2Vzc2Z1bGx5
IHN0YXJ0ZWQsIGJ1dCBpdCBoYXMgbm8gd2F5IHRvIGNvbW11bmljYXRlIHlldAogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZWdpc3RyYXRpb24t
dGFzay1xdWV1ZS1zY2hlZHVsaW5nLTEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVnaXN0cmF0aW9uLXRhc2stcXVldWUtc2NoZWR1bGluZy0x
LWV4cGVjdGVkLnR4dAppbmRleCBjMWEwNjM1MDYzOS4uMDEwMjI3MDMxY2QgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3JlZ2lzdHJhdGlvbi10YXNr
LXF1ZXVlLXNjaGVkdWxpbmctMS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVnaXN0cmF0aW9uLXRhc2stcXVldWUtc2NoZWR1bGluZy0x
LWV4cGVjdGVkLnR4dApAQCAtMSwyICsxLDIgQEAKLUFMRVJUOiBVbmV4cGVjdGVkIGVycm9yIHJl
Y2VpdmVkIGZyb20gc2VydmVyOiBVbmtub3duRXJyb3I6IEZhaWxlZCB0byBzdGFydCBzZXJ2aWNl
IHdvcmtlciBzY3JpcHQgb2YgbGVuZ3RoIDQxCitBTEVSVDogVW5leHBlY3RlZCBlcnJvciByZWNl
aXZlZCBmcm9tIHNlcnZlcjogVW5rbm93bkVycm9yOiBXb3JrZXIgc2NyaXB0IHN1Y2Nlc3NmdWxs
eSBzdGFydGVkLCBidXQgaXQgaGFzIG5vIHdheSB0byBjb21tdW5pY2F0ZSB5ZXQKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDhj
NDJhYTZjYWJiLi4yZDJkOGY0OTYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjM1NCw2ICsyMzU0LDkgQEAKIAkJNTE3QTYz
QzYxQjc0MzE5MjAwRTdEQ0RDIC8qIEtleWVkRW5jb2RlckNGLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdBNjNDMjFCNzQzMTdFMDBFN0RDREMgLyog
S2V5ZWRFbmNvZGVyQ0YuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk1MTdCMjVBOTFDQzgyQjJBMDA2MUMwMTEgLyogSURCQ29ubmVjdGlvblByb3h5
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0Iy
NUE3MUNDODIwMzIwMDYxQzAxMSAvKiBJREJDb25uZWN0aW9uUHJveHkuY3BwICovOyB9OwogCQk1
MTdCMjVBQTFDQzgyQjJBMDA2MUMwMTEgLyogSURCQ29ubmVjdGlvblByb3h5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdCMjVBODFDQzgyMDMyMDA2
MUMwMTEgLyogSURCQ29ubmVjdGlvblByb3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTE3Qzg3MEExRjhFQkIyNTAwRUI4MDc2IC8qIFNXQ29u
dGV4dE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTE3Qzg3MDgxRjhFQjlCRjAwRUI4MDc2IC8qIFNXQ29udGV4dE1hbmFnZXIuY3BwICov
OyB9OworCQk1MTdDODcwQjFGOEVCQjI1MDBFQjgwNzYgLyogU1dDb250ZXh0TWFuYWdlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3Qzg3MDkxRjhF
QjlDMDAwRUI4MDc2IC8qIFNXQ29udGV4dE1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1MTdDODcxODFGOEZENEQ5MDBFQjgwNzYgLyog
U2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0M4NzE2MUY4RkQ0RDMwMEVCODA3NiAvKiBTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGEuY3BwICovOyB9OwogCQk1MTdERUVFNTFERTk0QURDMDBCOTE2NDQgLyog
U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3REVFRTMxREU5NEFEQzAwQjkxNjQ0IC8qIFNjcm9s
bGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbSAqLzsgfTsKIAkJNTE3REVFRTgxREU5NEIwODAw
QjkxNjQ0IC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3REVFRTcxREU5NEIwODAwQjkxNjQ0
IC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxN0ZCQTFFMTUxQUIxN0MwMEI1Nzk1OSAv
KiBET01XaW5kb3dFeHRlbnNpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTE3RkJBMTcxNTFBQTcxQjAwQjU3OTU5IC8qIERPTVdpbmRvd0V4dGVu
c2lvbi5jcHAgKi87IH07CkBAIC0yNDU2LDYgKzI0NTksOCBAQAogCQk1MUJBNEFDQTFCQkM1QkQ5
MDBERjNENkQgLyogTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkE0QUM4MUJCQzVCOUUwMERGM0Q2RCAvKiBN
ZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwICovOyB9OwogCQk1MUJBNEFDQjFCQkM1QkQ5MDBERjNE
NkQgLyogTWVtb3J5SURCQmFja2luZ1N0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJBNEFDOTFCQkM1QjlFMDBERjNENkQgLyogTWVtb3J5SURC
QmFja2luZ1N0b3JlLmggKi87IH07CiAJCTUxQkE0QUNDMUJCQzVCREQwMERGM0Q2RCAvKiBJREJC
YWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxQkE0QUM3MUJCQzVBRDYwMERGM0Q2RCAvKiBJREJCYWNraW5nU3RvcmUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1MUJDQ0UyRjFGOEYx
Nzk1MDA2QkEwRUQgLyogU2VydmljZVdvcmtlclRocmVhZC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdDODcxMTFGOEVFNzJGMDBFQjgwNzYgLyog
U2VydmljZVdvcmtlclRocmVhZC5jcHAgKi87IH07CisJCTUxQkNDRTMwMUY4RjE3OUUwMDZCQTBF
RCAvKiBTZXJ2aWNlV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTdDODcxMDFGOEVFNzJFMDBFQjgwNzYgLyogU2VydmljZVdvcmtl
clRocmVhZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTUxQkUzN0UwMERBRUUwMEUwMDEwODVGQyAvKiBTdG9yYWdlQXJlYS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCRTM3REUwREFFRTAwRTAwMTA4
NUZDIC8qIFN0b3JhZ2VBcmVhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNTFDMEFBMzkwRjJBQTEwQTAwMTY0OEMyIC8qIENhY2hlZEZyYW1lLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUMwQUEzODBG
MkFBMTBBMDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUMwQUE0MTBGMkFBMTVFMDAxNjQ4QzIgLyogQ2Fj
aGVkRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTFDMEFBNDAwRjJBQTE1RTAwMTY0OEMyIC8qIENhY2hlZEZyYW1lLmNwcCAqLzsgfTsKQEAg
LTEwMjkyLDYgKzEwMjk3LDExIEBACiAJCTUxN0E2M0MyMUI3NDMxN0UwMEU3RENEQyAvKiBLZXll
ZEVuY29kZXJDRi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBLZXllZEVuY29k
ZXJDRi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTdCMjVBNzFDQzgyMDMyMDA2
MUMwMTEgLyogSURCQ29ubmVjdGlvblByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IElEQkNvbm5lY3Rpb25Qcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxN0IyNUE4MUNDODIwMzIwMDYxQzAxMSAvKiBJREJDb25uZWN0aW9uUHJveHku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCQ29ubmVjdGlvblByb3h5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxN0M4NzA4MUY4RUI5QkYwMEVCODA3NiAv
KiBTV0NvbnRleHRNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IFNXQ29udGV4dE1hbmFnZXIuY3BwOyBwYXRoID0gd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U1dDb250ZXh0TWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJNTE3
Qzg3MDkxRjhFQjlDMDAwRUI4MDc2IC8qIFNXQ29udGV4dE1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gU1dDb250ZXh0TWFuYWdlci5oOyBwYXRoID0gd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oOyBzb3VyY2VUcmVlID0gU09VUkNFX1JP
T1Q7IH07CisJCTUxN0M4NzEwMUY4RUU3MkUwMEVCODA3NiAvKiBTZXJ2aWNlV29ya2VyVGhyZWFk
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNlcnZpY2VXb3JrZXJUaHJlYWQu
aDsgcGF0aCA9IHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaDsg
c291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQk1MTdDODcxMTFGOEVFNzJGMDBFQjgwNzYg
LyogU2VydmljZVdvcmtlclRocmVhZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBTZXJ2aWNlV29ya2VyVGhyZWFkLmNwcDsgcGF0aCA9IHdvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7
IH07CisJCTUxN0M4NzE2MUY4RkQ0RDMwMEVCODA3NiAvKiBTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VydmljZVdvcmtl
ckNvbnRleHREYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3REVFRTMx
REU5NEFEQzAwQjkxNjQ0IC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNjcm9sbGluZ01vbWVudHVtQ2Fs
Y3VsYXRvck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3REVFRTcxREU5
NEIwODAwQjkxNjQ0IC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3RkJBMTcxNTFBQTcxQjAwQjU3OTU5
IC8qIERPTVdpbmRvd0V4dGVuc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBET01XaW5kb3dFeHRlbnNpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTkxMzgsNiArMTkxNDgsMTcgQEAKIAkJCXBhdGggPSBzZXJ2ZXI7CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwogCQl9OworCQk1MTdDODcwNzFGOEU4RkYyMDBFQjgwNzYgLyogY29u
dGV4dCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNTE3
Qzg3MDgxRjhFQjlCRjAwRUI4MDc2IC8qIFNXQ29udGV4dE1hbmFnZXIuY3BwICovLAorCQkJCTUx
N0M4NzA5MUY4RUI5QzAwMEVCODA3NiAvKiBTV0NvbnRleHRNYW5hZ2VyLmggKi8sCisJCQkJNTE3
Qzg3MTExRjhFRTcyRjAwRUI4MDc2IC8qIFNlcnZpY2VXb3JrZXJUaHJlYWQuY3BwICovLAorCQkJ
CTUxN0M4NzEwMUY4RUU3MkUwMEVCODA3NiAvKiBTZXJ2aWNlV29ya2VyVGhyZWFkLmggKi8sCisJ
CQkpOworCQkJcGF0aCA9IGNvbnRleHQ7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9
OwogCQk1MTgyQzI0QzFGMzE0MjA5MDA1OUJBN0MgLyogU2VydmljZVdvcmtlcnMgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMTkyMTgsNiArMTkyMzksNyBA
QAogCQk1MUYxNzU0NDFGM0VCQkYyMDBDNzQ5NTAgLyogc2VydmljZSAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNTE3Qzg3MDcxRjhFOEZGMjAwRUI4MDc2
IC8qIGNvbnRleHQgKi8sCiAJCQkJNTE3QTUyRUMxRjQ3NTMyRDAwRENEQzBBIC8qIHNlcnZlciAq
LywKIAkJCQk1MUYxNzU1QjFGM0VCQzBDMDBDNzQ5NTAgLyogU2VydmljZVdvcmtlci5jcHAgKi8s
CiAJCQkJNTFGMTc1NUExRjNFQkMwQzAwQzc0OTUwIC8qIFNlcnZpY2VXb3JrZXIuaCAqLywKQEAg
LTE5MjI1LDYgKzE5MjQ3LDcgQEAKIAkJCQk1MUYxNzU1ODFGM0VCQzBDMDBDNzQ5NTAgLyogU2Vy
dmljZVdvcmtlckNvbnRhaW5lci5jcHAgKi8sCiAJCQkJNTFGMTc1NTcxRjNFQkMwQzAwQzc0OTUw
IC8qIFNlcnZpY2VXb3JrZXJDb250YWluZXIuaCAqLywKIAkJCQk1MUYxNzU1NjFGM0VCQzBDMDBD
NzQ5NTAgLyogU2VydmljZVdvcmtlckNvbnRhaW5lci5pZGwgKi8sCisJCQkJNTE3Qzg3MTYxRjhG
RDREMzAwRUI4MDc2IC8qIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAgKi8sCiAJCQkJNTFD
QTdFRTcxRjg4MzJFMDAwM0QzMTMxIC8qIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oICovLAog
CQkJCTUxN0E1MzVDMUY1ODk5RjIwMERDREMwQSAvKiBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQu
aCAqLywKIAkJCQk1MUYxNzU1NTFGM0VCQzBDMDBDNzQ5NTAgLyogU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlLmNwcCAqLywKQEAgLTI4NjM2LDYgKzI4NjU5LDcgQEAKIAkJCQk3QzgxMzlBQTFFRDY2
MDRCMDBDRTI2RTggLyogSlNET01DYXN0ZWRUaGlzRXJyb3JCZWhhdmlvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDEzQzJDMzQxQkMyOUE4RjAwNzUyMDRDIC8qIEpTRE9NQ29uc3RydWN0b3IuaCBp
biBIZWFkZXJzICovLAogCQkJCTkzMDg0MTM0MUNEREIxNTUwMEIwOTU4QyAvKiBKU0RPTUNvbnZl
cnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxN0M4NzBCMUY4RUJCMjUwMEVCODA3NiAvKiBTV0Nv
bnRleHRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzhFMzRBRDFFNEEzM0FGMDA1NENF
MjMgLyogSlNET01Db252ZXJ0QW55LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzhFMzRBRTFFNEEz
M0FGMDA1NENFMjMgLyogSlNET01Db252ZXJ0QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M4
RTM0QUYxRTRBMzNBRjAwNTRDRTIzIC8qIEpTRE9NQ29udmVydEJvb2xlYW4uaCBpbiBIZWFkZXJz
ICovLApAQCAtMzA0MjEsNiArMzA0NDUsNyBAQAogCQkJCUIyMjI3OUM1MEQwMEJGMjIwMDcxQjc4
MiAvKiBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
MjIyNzlDODBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVCbGVuZEVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUIyMjI3OUNCMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRUNvbG9yTWF0cml4RWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTFCQ0NFMzAxRjhGMTc5RTAwNkJBMEVEIC8qIFNl
cnZpY2VXb3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OUNFMEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQjIyMjc5RDEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFQ29tcG9zaXRlRWxlbWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMTkyMTMyNzUxMUMwRTZCQjAwNDU2MjM4IC8qIFNWR0ZFQ29u
dm9sdmVNYXRyaXhFbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTMxNTk5LDYgKzMxNjI0LDcg
QEAKIAkJCQk0MUQxMjlDRjFGM0QwRUZFMDBEMTVFNDcgLyogQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNDNBRjhFNjFBQzVCN0U4MDBDQTcxN0UgLyogQ2Fj
aGVWYWxpZGF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5QUUyRDk2MTM0RUU1RjkwMDcy
OTIwQSAvKiBDYWxjdWxhdGlvblZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxN0M4NzE4
MUY4RkQ0RDkwMEVCODA3NiAvKiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTUyMDc2MDQxRjI2NzVGRTAwN0QyQUFCIC8qIENhbGxUcmFjZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNDE1Q0RBRjQxRTZCOEY4NzAwNEYxMUVFIC8qIENhbnZhc0NhcHR1
cmVNZWRpYVN0cmVhbVRyYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5NDg0RkMxMTAyQ0Yy
M0MwMDE4N0REMyAvKiBDYW52YXNHcmFkaWVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMyMjQx
LDYgKzMyMjY3LDcgQEAKIAkJCQk5NkFCQTQyMzE0QkNCODBFMDBENTYyMDQgLyogR3JhcGhpY3ND
b250ZXh0M0RPcGVuR0xDb21tb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJFRDk3NzEwQjFG
NTVDRTAwMjU3RDBGIC8qIEdyYXBoaWNzQ29udGV4dENHLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUIyNzdCNDA0MEIyMkYzN0MwMDA0QkVDNiAvKiBHcmFwaGljc0NvbnRleHRDb2NvYS5tbSBpbiBT
b3VyY2VzICovLAorCQkJCTUxQkNDRTJGMUY4RjE3OTUwMDZCQTBFRCAvKiBTZXJ2aWNlV29ya2Vy
VGhyZWFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNTgwQjBDMEYxMkEyNjkwMDUxRDY4OSAv
KiBHcmFwaGljc0xheWVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5OUIzRUQ2MTI4Q0QzMTQw
MEU3MjZDMiAvKiBHcmFwaGljc0xheWVyQ0EuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZBMjRE
NzkxNjJERjkxOTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtMzM1NTQsNiArMzM1ODEsNyBAQAogCQkJCUM5NkY1RUM2MUI1ODcyMjYwMDkxRUE5
RCAvKiBNZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hYy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCUM5MEY2NTU1MUIyMjUzQjEwMDIxNjNBMSAvKiBNZWRpYVNlc3Npb25NYW5hZ2VyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUNENjY5RDY4MUQyMzM2NEIwMDREMTg2NiAvKiBNZWRpYVNl
c3Npb25NYW5hZ2VyQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTE3Qzg3MEExRjhFQkIy
NTAwRUI4MDc2IC8qIFNXQ29udGV4dE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc2
MzhBOUExODg0NDg3MjAwRTE1QTFCIC8qIE1lZGlhU2Vzc2lvbk1hbmFnZXJJT1MubW0gaW4gU291
cmNlcyAqLywKIAkJCQkwN0VEQzNFRTFBQUNCNzVEMDA5ODNFQjUgLyogTWVkaWFTZXNzaW9uTWFu
YWdlck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEM0E0OTVFMTdBOUQwMUIwMDI3NEU0MiAv
KiBNZWRpYVNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggNGRkMTY2YWQy
Y2EuLjdmNmYyODRmYzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9X
b3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUg
IkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUu
aCIKICNpbmNsdWRlICJKU0V2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiSlNTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAi
V2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgIldvcmtlckNvbnNvbGVDbGllbnQuaCIK
QEAgLTkyLDcgKzkzLDI2IEBAIHZvaWQgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlw
dCgpCiAKICAgICAgICAgcHJveHktPnNldFRhcmdldCgqbV92bSwgbV93b3JrZXJHbG9iYWxTY29w
ZVdyYXBwZXIuZ2V0KCkpOwogICAgICAgICBwcm94eS0+c3RydWN0dXJlKCktPnNldEdsb2JhbE9i
amVjdCgqbV92bSwgbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCkpOworI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKKyAgICB9IGVsc2UgaWYgKG1fd29ya2VyR2xvYmFsU2NvcGUtPmlz
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlKCkpIHsKKyAgICAgICAgU3RydWN0dXJlKiBjb250ZXh0
UHJvdG90eXBlU3RydWN0dXJlID0gSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGU6
OmNyZWF0ZVN0cnVjdHVyZSgqbV92bSwgbnVsbHB0ciwganNOdWxsKCkpOworICAgICAgICBTdHJv
bmc8SlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVQcm90b3R5cGU+IGNvbnRleHRQcm90b3R5cGUo
Km1fdm0sIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlOjpjcmVhdGUoKm1fdm0s
IG51bGxwdHIsIGNvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUpKTsKKyAgICAgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6Y3JlYXRlU3RydWN0dXJl
KCptX3ZtLCBudWxscHRyLCBjb250ZXh0UHJvdG90eXBlLmdldCgpKTsKKyAgICAgICAgYXV0byog
cHJveHlTdHJ1Y3R1cmUgPSBKU1Byb3h5OjpjcmVhdGVTdHJ1Y3R1cmUoKm1fdm0sIG51bGxwdHIs
IGpzTnVsbCgpLCBQdXJlRm9yd2FyZGluZ1Byb3h5VHlwZSk7CisgICAgICAgIGF1dG8qIHByb3h5
ID0gSlNQcm94eTo6Y3JlYXRlKCptX3ZtLCBwcm94eVN0cnVjdHVyZSk7CisgICAgCisgICAgICAg
IG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLnNldCgqbV92bSwgSlNTZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGU6OmNyZWF0ZSgqbV92bSwgc3RydWN0dXJlLCBzdGF0aWNfY2FzdDxTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUmPigqbV93b3JrZXJHbG9iYWxTY29wZSksIHByb3h5KSk7CisgICAgICAg
IGNvbnRleHRQcm90b3R5cGVTdHJ1Y3R1cmUtPnNldEdsb2JhbE9iamVjdCgqbV92bSwgbV93b3Jr
ZXJHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCkpOworICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5n
bG9iYWxPYmplY3QoKSA9PSBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlcik7CisgICAgICAgIEFT
U0VSVChtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci0+c3RydWN0dXJlKCktPmdsb2JhbE9iamVj
dCgpID09IG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKTsKKyAgICAgICAgY29udGV4dFByb3Rv
dHlwZS0+c3RydWN0dXJlKCktPnNldEdsb2JhbE9iamVjdCgqbV92bSwgbV93b3JrZXJHbG9iYWxT
Y29wZVdyYXBwZXIuZ2V0KCkpOworICAgICAgICBjb250ZXh0UHJvdG90eXBlLT5zdHJ1Y3R1cmUo
KS0+c2V0UHJvdG90eXBlV2l0aG91dFRyYW5zaXRpb24oKm1fdm0sIEpTV29ya2VyR2xvYmFsU2Nv
cGU6OnByb3RvdHlwZSgqbV92bSwgKm1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpKSk7
CisKKyAgICAgICAgcHJveHktPnNldFRhcmdldCgqbV92bSwgbV93b3JrZXJHbG9iYWxTY29wZVdy
YXBwZXIuZ2V0KCkpOworICAgICAgICBwcm94eS0+c3RydWN0dXJlKCktPnNldEdsb2JhbE9iamVj
dCgqbV92bSwgbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIuZ2V0KCkpOworI2VuZGlmCiAgICAg
fQorICAgIAogICAgIEFTU0VSVChtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci0+Z2xvYmFsT2Jq
ZWN0KCkgPT0gbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIpOwogICAgIEFTU0VSVChhc09iamVj
dChtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci0+Z2V0UHJvdG90eXBlRGlyZWN0KCkpLT5nbG9i
YWxPYmplY3QoKSA9PSBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlcik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4gYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCmluZGV4IGRiMmYyOTA3ZjdkLi5iYTFlMWEwMDQy
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCkBAIC0zMiw2ICsz
Miw3IEBAIFJUQ0RUTUZTZW5kZXIgY29uZGl0aW9uYWw9V0VCX1JUQ19EVE1GCiBSVENQZWVyQ29u
bmVjdGlvbiBjb25kaXRpb25hbD1XRUJfUlRDCiBTZXJ2aWNlV29ya2VyIGNvbmRpdGlvbmFsPVNF
UlZJQ0VfV09SS0VSCiBTZXJ2aWNlV29ya2VyQ29udGFpbmVyIGNvbmRpdGlvbmFsPVNFUlZJQ0Vf
V09SS0VSCitTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgY29uZGl0aW9uYWw9U0VSVklDRV9XT1JL
RVIKIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24gY29uZGl0aW9uYWw9U0VSVklDRV9XT1JLRVIK
IFNvdXJjZUJ1ZmZlciBjb25kaXRpb25hbD1NRURJQV9TT1VSQ0UKIFNvdXJjZUJ1ZmZlckxpc3Qg
Y29uZGl0aW9uYWw9TUVESUFfU09VUkNFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckds
b2JhbFNjb3BlLmgKaW5kZXggYTVjZTQzZTk5MDcuLjMzYWJiZTI4YmEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCkBAIC01OSw2ICs1OSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5Xb3JrZXJHbG9iYWxTY29wZSgpOwogCiAgICAgdmlydHVhbCBib29s
IGlzRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQor
ICAgIHZpcnR1YWwgYm9vbCBpc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1fdXJsOyB9CiAgICAgU3RyaW5nIG9yaWdpbigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uM2NkMmQzZmQ3ODMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckNvbnRleHREYXRhLmNwcApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oIgorCisj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YSBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6Omlzb2xhdGVkQ29w
eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsgcmVnaXN0cmF0aW9uS2V5Lmlzb2xhdGVkQ29weSgp
LCB3b3JrZXJJRC5pc29sYXRlZENvcHkoKSwgc2NyaXB0Lmlzb2xhdGVkQ29weSgpLCBzY3JpcHRV
UkwuaXNvbGF0ZWRDb3B5KCkgfTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oCmluZGV4IDdjNjM5
ZTc4NTAxLi5hODcxM2IzNGYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaApAQCAtMjYsNiArMjYsNyBA
QAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
LmgiCisjaW5jbHVkZSAiVVJMLmgiCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKQEAg
LTM1LDE1ICszNiwxOCBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsKICAgICBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IHJlZ2lzdHJhdGlvbktleTsKICAgICBTdHJpbmcg
d29ya2VySUQ7CiAgICAgU3RyaW5nIHNjcmlwdDsKKyAgICBVUkwgc2NyaXB0VVJMOwogICAgIAog
ICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsK
ICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGE+IGRlY29kZShEZWNvZGVyJik7CisgICAgCisgICAgU2VydmljZVdv
cmtlckNvbnRleHREYXRhIGlzb2xhdGVkQ29weSgpIGNvbnN0OwogfTsKIAogdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4KIHZvaWQgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8IHJlZ2lzdHJhdGlvbktleSA8PCB3
b3JrZXJJRCA8PCBzY3JpcHQ7CisgICAgZW5jb2RlciA8PCByZWdpc3RyYXRpb25LZXkgPDwgd29y
a2VySUQgPDwgc2NyaXB0IDw8IHNjcmlwdFVSTDsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4KQEAgLTYxLDcgKzY1LDExIEBAIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNvbnRleHRE
YXRhPiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OmRlY29kZShEZWNvZGVyCiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShzY3JpcHQpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IAotICAgIHJldHVybiB7eyBXVEZNb3ZlKCpyZWdpc3RyYXRpb25LZXkpLCBXVEZNb3ZlKHdvcmtl
cklEKSwgV1RGTW92ZShzY3JpcHQpIH19OworICAgIFVSTCBzY3JpcHRVUkw7CisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShzY3JpcHRVUkwpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
CisgICAgcmV0dXJuIHt7IFdURk1vdmUoKnJlZ2lzdHJhdGlvbktleSksIFdURk1vdmUod29ya2Vy
SUQpLCBXVEZNb3ZlKHNjcmlwdCksIFdURk1vdmUoc2NyaXB0VVJMKSB9fTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCBmZDQ4YWUyOGYwMS4u
MTQ2N2NlOTViNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC0yOCwxNyArMjgsMzYgQEAK
IAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJU
aHJlYWQuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCitTZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGU6OlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiBkYXRhLCBjb25zdCBVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwg
U2VydmljZVdvcmtlclRocmVhZCYgdGhyZWFkLCBib29sIHNob3VsZEJ5cGFzc01haW5Xb3JsZENv
bnRlbnRTZWN1cml0eVBvbGljeSwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgTW9u
b3RvbmljVGltZSB0aW1lT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSogY29u
bmVjdGlvblByb3h5LCBTb2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIsIFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCkKKyAgICA6IFdvcmtlckdsb2JhbFNjb3BlKHVybCwgaWRlbnRpZmllciwg
dXNlckFnZW50LCB0aHJlYWQsIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBv
bGljeSwgV1RGTW92ZSh0b3BPcmlnaW4pLCB0aW1lT3JpZ2luLCBjb25uZWN0aW9uUHJveHksIHNv
Y2tldFByb3ZpZGVyLCBzZXNzaW9uSUQpCisgICAgLCBtX3NlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyKHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKQorICAgICwgbV9jb250ZXh0RGF0YShjcm9z
c1RocmVhZENvcHkoZGF0YSkpCit7Cit9CisKK1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6flNl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZSgpCit7Cit9CisKIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b24mIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6cmVnaXN0cmF0aW9uKCkKIHsKLSAgICByZXR1
cm4gbV9yZWdpc3RyYXRpb247CisgICAgLy8gRklYTUU6IElzIHRoaXMgbWV0aG9kIHN0aWxsIG5l
ZWRlZD8KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCiB2b2lkIFNlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZTo6c2tpcFdhaXRpbmcoUmVmPERlZmVycmVkUHJvbWlzZT4mJikK
IHsKIH0KIAorRXZlbnRUYXJnZXRJbnRlcmZhY2UgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpl
dmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZUV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZS5oCmluZGV4IGM1MmUyNDE2Njc3Li5iYjVhZGU2NzBmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaApA
QCAtMjcsMjIgKzI3LDM5IEBACiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKKyNpbmNs
dWRlICJTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uLmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBEZWZlcnJlZFByb21pc2U7Ci1jbGFzcyBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uOwotCitjbGFzcyBTZXJ2aWNlV29ya2VyVGhyZWFkOworICAgIAogY2xh
c3MgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlIDogcHVibGljIFdvcmtlckdsb2JhbFNjb3BlIHsK
IHB1YmxpYzoKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiBzdGF0aWMgUmVmPFNlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZT4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHN0ZDo6Zm9y
d2FyZDxBcmdzPihhcmdzKS4uLikpOworICAgIH0KKworICAgIHZpcnR1YWwgflNlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZSgpOworCisgICAgYm9vbCBpc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKwogICAgIFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb24mIHJlZ2lzdHJhdGlvbigpOworICAgIAorICAgIHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
cjsgfQogCiAgICAgdm9pZCBza2lwV2FpdGluZyhSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKIAor
ICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmlu
YWw7CisKIHByaXZhdGU6Ci0gICAgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbiBtX3JlZ2lzdHJh
dGlvbjsKKyAgICBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUodWludDY0X3Qgc2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYsIGNvbnN0IFVS
TCYsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFNl
cnZpY2VXb3JrZXJUaHJlYWQmLCBib29sIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1
cml0eVBvbGljeSwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgTW9ub3RvbmljVGlt
ZSB0aW1lT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSosIFNvY2tldFByb3Zp
ZGVyKiwgUEFMOjpTZXNzaW9uSUQpOworCisgICAgdWludDY0X3QgbV9zZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllcjsKKyAgICBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgbV9jb250ZXh0RGF0YTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjFmYmZhNjU2OGUzCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0
TWFuYWdlci5jcHAKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJTV0NvbnRleHRNYW5hZ2VyLmgiCisKKyNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSA8cGFsL1Nlc3Npb25J
RC5oPgorCit1c2luZyBuYW1lc3BhY2UgUEFMOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NX
Q29udGV4dE1hbmFnZXImIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpCit7CisgICAgc3Rh
dGljIFNXQ29udGV4dE1hbmFnZXIqIHNoYXJlZE1hbmFnZXIgPSBuZXcgU1dDb250ZXh0TWFuYWdl
cjsKKyAgICByZXR1cm4gKnNoYXJlZE1hbmFnZXI7Cit9CisKK1NXQ29udGV4dE1hbmFnZXI6OlNX
Q29udGV4dE1hbmFnZXIoKQoreworCit9CisKK0V4Y2VwdGlvbk9yPHVpbnQ2NF90PiBTV0NvbnRl
eHRNYW5hZ2VyOjpzdGFydFNlcnZpY2VXb3JrZXJDb250ZXh0KHVpbnQ2NF90IHNlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEpCit7
CisgICAgLy8gRklYTUU6IFByb3ZpZGUgYSBzZW5zaWNhbCBzZXNzaW9uIElECisKKyAgICBhdXRv
IHRocmVhZCA9IFNlcnZpY2VXb3JrZXJUaHJlYWQ6OmNyZWF0ZShzZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllciwgZGF0YSwgU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpOworICAgIGF1dG8g
cmVzdWx0ID0gbV93b3JrZXJUaHJlYWRNYXAuYWRkKHRocmVhZC0+dW5pcXVlQ29udGV4dElkZW50
aWZpZXIoKSwgV1RGTW92ZSh0aHJlYWQpKTsKKyAgICBBU1NFUlQocmVzdWx0LmlzTmV3RW50cnkp
OworCisgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+c3RhcnQoKTsKKyAgICAKKyAgICBMT0co
U2VydmljZVdvcmtlciwgIkNvbnRleHQgcHJvY2VzcyBQSUQ6ICVpIHN0YXJ0ZWQgd29ya2VyIHRo
cmVhZCAlc1xuIiwgZ2V0cGlkKCksIGRhdGEud29ya2VySUQudXRmOCgpLmRhdGEoKSk7CisgICAg
CisgICAgLy8gRklYTUU6IEZvciB0ZXN0aW5nIHB1cnBvc2VzIHdlIG5lZWQgdG8gc2lnbmFsIGEg
ZmFpbHVyZSB3aXRoIGFuIGV4Y2VwdGlvbiBwYXlsb2FkLgorICAgIC8vIExhdGVyIHdpdGggbW9y
ZSBBUElzIGFuZCBpbmZyYXN0cnVjdHVyZSBmaWxsZWQgaW4sIHRlc3Rpbmcgd2lsbCBiZSBtdWNo
IGVhc2llci4KKyAgICAKKyAgICByZXR1cm4gRXhjZXB0aW9uIHsgVW5rbm93bkVycm9yLCAiV29y
a2VyIHNjcmlwdCBzdWNjZXNzZnVsbHkgc3RhcnRlZCwgYnV0IGl0IGhhcyBubyB3YXkgdG8gY29t
bXVuaWNhdGUgeWV0IiB9OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmUxNWQ3ZTY5ODIzCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5o
CkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKKworI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCisjaW5jbHVkZSAi
U2VydmljZVdvcmtlclRocmVhZC5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworc3RydWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTsKKworY2xh
c3MgU1dDb250ZXh0TWFuYWdlciB7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFNXQ29udGV4dE1hbmFnZXImIHNpbmdsZXRvbigpOworCisgICAgV0VCQ09SRV9FWFBPUlQgRXhj
ZXB0aW9uT3I8dWludDY0X3Q+IHN0YXJ0U2VydmljZVdvcmtlckNvbnRleHQodWludDY0X3Qgc2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYp
OworCitwcml2YXRlOgorICAgIFNXQ29udGV4dE1hbmFnZXIoKTsKKyAgICAKKyAgICBIYXNoTWFw
PHVpbnQ2NF90LCBSZWZQdHI8U2VydmljZVdvcmtlclRocmVhZD4+IG1fd29ya2VyVGhyZWFkTWFw
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMC4uZGI0NDNkYmE4NDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNw
cApAQCAtMCwwICsxLDEwNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJTZXJ2aWNlV29ya2VyVGhyZWFkLmgiCisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCisKKyNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuaCIK
KyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmtlckxvYWRlclByb3h5LmgiCisjaW5jbHVkZSAiV29y
a2VyT2JqZWN0UHJveHkuaCIKKyNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CisjaW5jbHVkZSA8
cnVudGltZS9SdW50aW1lRmxhZ3MuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
KwordXNpbmcgbmFtZXNwYWNlIFBBTDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBT
ZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkgOiBwdWJsaWMgV29ya2VyTG9hZGVyUHJveHksIHB1Ymxp
YyBXb3JrZXJPYmplY3RQcm94eSB7CitwdWJsaWM6CisgICAgc3RhdGljIFNlcnZpY2VXb3JrZXJU
aHJlYWRQcm94eSYgc2hhcmVkRHVtbXlQcm94eSgpCisgICAgeworICAgICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8U2VydmljZVdvcmtlclRocmVhZFByb3h5PiBwcm94eTsKKyAgICAgICAgcmV0
dXJuIHByb3h5OworICAgIH0KKworcHJpdmF0ZToKKyAgICB2b2lkIHBvc3RUYXNrVG9Mb2FkZXIo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmKSBmaW5hbCB7IH07CisgICAgYm9vbCBwb3N0
VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRh
c2smJiwgY29uc3QgU3RyaW5nJikgZmluYWwgeyByZXR1cm4gZmFsc2U7IH07CisgICAgdm9pZCBw
b3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoY29uc3QgU3RyaW5nJiwgaW50LCBpbnQsIGNvbnN0
IFN0cmluZyYpIGZpbmFsIHsgfTsKKyAgICB2b2lkIHBvc3RNZXNzYWdlVG9QYWdlSW5zcGVjdG9y
KGNvbnN0IFN0cmluZyYpIGZpbmFsIHsgfTsKKyAgICB2b2lkIHdvcmtlckdsb2JhbFNjb3BlRGVz
dHJveWVkKCkgZmluYWwgeyB9OworICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmLCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBv
cnRDaGFubmVsQXJyYXk+KSBmaW5hbCB7IH07CisgICAgdm9pZCBjb25maXJtTWVzc2FnZUZyb21X
b3JrZXJPYmplY3QoYm9vbCkgZmluYWwgeyB9OworICAgIHZvaWQgcmVwb3J0UGVuZGluZ0FjdGl2
aXR5KGJvb2wpIGZpbmFsIHsgfTsKK307CisKKy8vIEZJWE1FOiBVc2UgYSB2YWxpZCBXb3JrZXJM
b2FkZXJQcm94eQorLy8gRklYTUU6IFVzZSBhIHZhbGlkIFdvcmtlclJlcG9ydGluZ1Byb3h5Cisv
LyBGSVhNRTogVXNlIGEgdmFsaWQgV29ya2VyT2JqZWN0UHJveHkKKy8vIEZJWE1FOiBVc2UgYSB2
YWxpZCBJREJDb25uZWN0aW9uCisvLyBGSVhNRTogVXNlIGEgdmFsaWQgU29ja2V0UHJvdmlkZXIK
Ky8vIEZJWE1FOiBVc2UgYSB2YWxpZCB1c2VyIGFnZW50CisvLyBGSVhNRTogVXNlIHZhbGlkIHJ1
bnRpbWUgZmxhZ3MKKworc3RhdGljIHVpbnQ2NF90IG5leHRVbmlxdWVDb250ZXh0SWRlbnRpZmll
cigpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBzdGF0aWMgdWludDY0X3Qg
Y3VycmVudFVuaXF1ZUNvbnRleHRJZGVudGlmaWVyOworICAgIHJldHVybiArK2N1cnJlbnRVbmlx
dWVDb250ZXh0SWRlbnRpZmllcjsKK30KKworU2VydmljZVdvcmtlclRocmVhZDo6U2VydmljZVdv
cmtlclRocmVhZCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhJiBkYXRhLCBQQUw6OlNlc3Npb25JRCkKKyAgICA6IFdvcmtl
clRocmVhZChkYXRhLnNjcmlwdFVSTCwgZGF0YS53b3JrZXJJRCwgQVNDSUlMaXRlcmFsKCJXb3Jr
ZXJVc2VyQWdlbnQiKSwgZGF0YS5zY3JpcHQsIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6c2hh
cmVkRHVtbXlQcm94eSgpLCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnNoYXJlZER1bW15UHJv
eHkoKSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlOjpOb3JtYWwsIENvbnRlbnRTZWN1cml0eVBvbGlj
eVJlc3BvbnNlSGVhZGVycyB7IH0sIGZhbHNlLCBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGRhdGEu
c2NyaXB0VVJMKS5nZXQoKSwgTW9ub3RvbmljVGltZTo6bm93KCksIG51bGxwdHIsIG51bGxwdHIs
IEpTQzo6UnVudGltZUZsYWdzOjpjcmVhdGVBbGxFbmFibGVkKCksIFNlc3Npb25JRDo6ZGVmYXVs
dFNlc3Npb25JRCgpKQorICAgICwgbV91bmlxdWVDb250ZXh0SWRlbnRpZmllcihuZXh0VW5pcXVl
Q29udGV4dElkZW50aWZpZXIoKSkKKyAgICAsIG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIo
c2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpCisgICAgLCBtX2RhdGEoZGF0YS5pc29sYXRlZENv
cHkoKSkKKyAgICAsIG1fd29ya2VyT2JqZWN0UHJveHkoU2VydmljZVdvcmtlclRocmVhZFByb3h5
OjpzaGFyZWREdW1teVByb3h5KCkpCit7Cit9CisKK1NlcnZpY2VXb3JrZXJUaHJlYWQ6On5TZXJ2
aWNlV29ya2VyVGhyZWFkKCkKK3sKK30KKworUmVmPFdvcmtlckdsb2JhbFNjb3BlPiBTZXJ2aWNl
V29ya2VyVGhyZWFkOjpjcmVhdGVXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgQ29u
dGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgYm9vbCBzaG91bGRCeXBhc3NNYWlu
V29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmln
aW4sIE1vbm90b25pY1RpbWUgdGltZU9yaWdpbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQor
eworICAgIHJldHVybiBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OmNyZWF0ZShtX3NlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyLCBtX2RhdGEsIHVybCwgaWRlbnRpZmllciwgdXNlckFnZW50LCAq
dGhpcywgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBXVEZNb3Zl
KHRvcE9yaWdpbiksIHRpbWVPcmlnaW4sIGlkYkNvbm5lY3Rpb25Qcm94eSgpLCBzb2NrZXRQcm92
aWRlcigpLCBzZXNzaW9uSUQpOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OnJ1bkV2
ZW50TG9vcCgpCit7CisgICAgLy8gRklYTUU6IFRoZXJlIHdpbGwgYmUgU2VydmljZVdvcmtlciBz
cGVjaWZpYyB0aGluZ3MgdG8gZG8gaGVyZS4KKyAgICBXb3JrZXJUaHJlYWQ6OnJ1bkV2ZW50TG9v
cCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAuLjY2ZTczN2E5NjFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oCkBA
IC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKKworI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oIgor
I2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVyczsKK2NsYXNzIFdvcmtlck9iamVj
dFByb3h5Oworc3RydWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTsKKworY2xhc3MgU2Vydmlj
ZVdvcmtlclRocmVhZCA6IHB1YmxpYyBXb3JrZXJUaHJlYWQgeworcHVibGljOgorICAgIHRlbXBs
YXRlPHR5cGVuYW1lLi4uIEFyZ3M+IHN0YXRpYyBSZWY8U2VydmljZVdvcmtlclRocmVhZD4gY3Jl
YXRlKEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U2VydmljZVdvcmtlclRocmVhZChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKKyAgICB9
CisgICAgdmlydHVhbCB+U2VydmljZVdvcmtlclRocmVhZCgpOworCisgICAgV29ya2VyT2JqZWN0
UHJveHkmIHdvcmtlck9iamVjdFByb3h5KCkgY29uc3QgeyByZXR1cm4gbV93b3JrZXJPYmplY3RQ
cm94eTsgfQorICAgIHVpbnQ2NF90IHVuaXF1ZUNvbnRleHRJZGVudGlmaWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV91bmlxdWVDb250ZXh0SWRlbnRpZmllcjsgfQorCitwcm90ZWN0ZWQ6CisgICAgUmVm
PFdvcmtlckdsb2JhbFNjb3BlPiBjcmVhdGVXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmLCBj
b25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBD
b250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBib29sIHNob3VsZEJ5cGFzc01h
aW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9y
aWdpbiwgTW9ub3RvbmljVGltZSB0aW1lT3JpZ2luLCBQQUw6OlNlc3Npb25JRCkgZmluYWw7Cisg
ICAgdm9pZCBydW5FdmVudExvb3AoKSBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICBTZXJ2aWNl
V29ya2VyVGhyZWFkKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmLCBQQUw6OlNlc3Npb25JRCk7CisKKyAgICB1aW50NjRf
dCBtX3VuaXF1ZUNvbnRleHRJZGVudGlmaWVyOworICAgIHVpbnQ2NF90IG1fc2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXI7CisgICAgU2VydmljZVdvcmtlckNvbnRleHREYXRhIG1fZGF0YTsKKyAg
ICBXb3JrZXJPYmplY3RQcm94eSYgbV93b3JrZXJPYmplY3RQcm94eTsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5k
ZXggMDU1OTAwYzYzNzAuLjBlNDg3YmFhODUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtMTY0LDcgKzE2NCw3IEBAIFJl
ZjxTV1NlcnZlcldvcmtlcj4gU1dTZXJ2ZXI6OmNyZWF0ZVdvcmtlcihDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBjb25zdCBTZXJ2aWNlCiAgICAgYXV0byByZXN1bHQgPSBtX3dvcmtlcnNCeUlELmFk
ZCh3b3JrZXJJRCwgU1dTZXJ2ZXJXb3JrZXI6OmNyZWF0ZShyZWdpc3RyYXRpb25LZXksIHVybCwg
c2NyaXB0LCB0eXBlLCB3b3JrZXJJRCkpOwogICAgIEFTU0VSVChyZXN1bHQuaXNOZXdFbnRyeSk7
CiAgICAgCi0gICAgY29ubmVjdGlvbi5zdGFydFNlcnZpY2VXb3JrZXJDb250ZXh0KHsgcmVnaXN0
cmF0aW9uS2V5LCB3b3JrZXJJRCwgc2NyaXB0IH0pOworICAgIGNvbm5lY3Rpb24uc3RhcnRTZXJ2
aWNlV29ya2VyQ29udGV4dCh7IHJlZ2lzdHJhdGlvbktleSwgd29ya2VySUQsIHNjcmlwdCwgdXJs
IH0pOwogICAgIAogICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDJmMmZhY2RkMjIwLi5m
MWNmNmRiOTE3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAt
MTA0LDYgKzEwNCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRPYnNlcnZlci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9T
V0NvbnRleHRNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY2hlbWVSZWdpc3RyeS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oPgpAQCAtMTY0NywxMSArMTY0OCwxMCBAQCB2b2lkIFdl
YlByb2Nlc3M6OmdldFdvcmtlckNvbnRleHRDb25uZWN0aW9uKCkKIAogdm9pZCBXZWJQcm9jZXNz
OjpzdGFydFNlcnZpY2VXb3JrZXJDb250ZXh0KHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEpCiB7Ci0gICAgLy8g
RklYTUU6IEhlcmUgaXMgd2hlcmUgd2Ugd2lsbCBhY3R1YWxseSBzdGFydCB0aGUgc2NyaXB0Lgot
ICAgIC8vIEZvciBub3cgd2UgYm91bmNlIGJhY2sgYSBmYWlsdXJlIG1lc3NhZ2UgdG8gdGhlIHJl
cXVlc3RpbmcgcHJvY2VzcyBmb3IgdGVzdCBjb3ZlcmFnZS4KLQotICAgIGF1dG8gbWVzc2FnZSA9
IG1ha2VTdHJpbmcoIkZhaWxlZCB0byBzdGFydCBzZXJ2aWNlIHdvcmtlciBzY3JpcHQgb2YgbGVu
Z3RoICIsIFN0cmluZzo6bnVtYmVyKGRhdGEuc2NyaXB0Lmxlbmd0aCgpKSk7Ci0gICAgbV93b3Jr
ZXJDb250ZXh0Q29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6OlNlcnZp
Y2VXb3JrZXJDb250ZXh0RmFpbGVkVG9TdGFydChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwg
ZGF0YS5yZWdpc3RyYXRpb25LZXksIGRhdGEud29ya2VySUQsIG1lc3NhZ2UpLCAwKTsKKyAgICBh
dXRvIGNvbnRleHRSZXN1bHQgPSBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zdGFydFNl
cnZpY2VXb3JrZXJDb250ZXh0KHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBkYXRhKTsKKyAg
ICAKKyAgICBpZiAoY29udGV4dFJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgbV93b3Jr
ZXJDb250ZXh0Q29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6OlNlcnZp
Y2VXb3JrZXJDb250ZXh0RmFpbGVkVG9TdGFydChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwg
ZGF0YS5yZWdpc3RyYXRpb25LZXksIGRhdGEud29ya2VySUQsIGNvbnRleHRSZXN1bHQuZXhjZXB0
aW9uKCkubWVzc2FnZSgpKSwgMCk7CiB9CiAKICNlbmRpZgo=
</data>
<flag name="review"
          id="343348"
          type_id="1"
          status="+"
          setter="aestes"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323637</attachid>
            <date>2017-10-12 22:24:31 -0700</date>
            <delta_ts>2017-10-12 22:57:09 -0700</delta_ts>
            <desc>PFL</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>43198</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkYzYyYzY3Zjc3OS4uOWE0YzRmMjRiNDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAxNy0xMC0xMiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAg
U1cgIkhlbGxvIHdvcmxkIi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3ODE4NworCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHkgRXN0ZXMuCisKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy1yZWdpc3Rlci1leGNlcHRp
b25zLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9i
YXNpYy1yZWdpc3Rlci1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJz
L3NlcnZpY2UvcmVnaXN0cmF0aW9uLXRhc2stcXVldWUtc2NoZWR1bGluZy0xLWV4cGVjdGVkLnR4
dDoKKwogMjAxNy0xMC0xMSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgTWFyayBodHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvY2FjaGUtY2xlYXJpbmcuaHR0
cHMuaHRtbCBhcyBmYWlsaW5nIG9uIFdpbmRvd3MuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy1yZWdpc3Rlci1leGNlcHRpb25zLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Jhc2ljLXJl
Z2lzdGVyLWV4Y2VwdGlvbnMtZXhwZWN0ZWQudHh0CmluZGV4IDg3YzVmYjI4MDI0Li4xZTE5NTNh
Mjc0OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uv
YmFzaWMtcmVnaXN0ZXItZXhjZXB0aW9ucy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvYmFzaWMtcmVnaXN0ZXItZXhjZXB0aW9ucy1leHBl
Y3RlZC50eHQKQEAgLTQsNyArNCw3IEBAIENPTlNPTEUgTUVTU0FHRTogbGluZSA0MDogUmVnaXN0
cmF0aW9uIGZhaWxlZCB3aXRoIGVycm9yOiBUeXBlRXJyb3I6IHNlcnZpY2VXb3JrCiBDT05TT0xF
IE1FU1NBR0U6IGxpbmUgNTA6IFJlZ2lzdHJhdGlvbiBmYWlsZWQgd2l0aCBlcnJvcjogVHlwZUVy
cm9yOiBzZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCkgbXVzdCBiZSBjYWxsZWQgd2l0aCBhIHNjcmlw
dCBVUkwgd2hvc2UgcGF0aCBkb2VzIG5vdCBjb250YWluICclMmYnIG9yICclNWMnCiBDT05TT0xF
IE1FU1NBR0U6IGxpbmUgNjA6IFJlZ2lzdHJhdGlvbiBmYWlsZWQgd2l0aCBlcnJvcjogVHlwZUVy
cm9yOiBTY29wZSBVUkwgcHJvdmlkZWQgdG8gc2VydmljZVdvcmtlci5yZWdpc3RlcigpIG11c3Qg
YmUgZWl0aGVyIEhUVFAgb3IgSFRUUFMKIENPTlNPTEUgTUVTU0FHRTogbGluZSA3MDogUmVnaXN0
cmF0aW9uIGZhaWxlZCB3aXRoIGVycm9yOiBUeXBlRXJyb3I6IFNjb3BlIFVSTCBwcm92aWRlZCB0
byBzZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCkgY2Fubm90IGhhdmUgYSBwYXRoIHRoYXQgY29udGFp
bnMgJyUyZicgb3IgJyU1YycKLUNPTlNPTEUgTUVTU0FHRTogbGluZSAxMDogUmVnaXN0cmF0aW9u
IGZhaWxlZCB3aXRoIGVycm9yOiBVbmtub3duRXJyb3I6IEZhaWxlZCB0byBzdGFydCBzZXJ2aWNl
IHdvcmtlciBzY3JpcHQgb2YgbGVuZ3RoIDAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxMDogUmVn
aXN0cmF0aW9uIGZhaWxlZCB3aXRoIGVycm9yOiBVbmtub3duRXJyb3I6IFdvcmtlciBzY3JpcHQg
c3VjY2Vzc2Z1bGx5IHN0YXJ0ZWQsIGJ1dCBpdCBoYXMgbm8gd2F5IHRvIGNvbW11bmljYXRlIHll
dAogQ09OU09MRSBNRVNTQUdFOiBsaW5lIDgwOiBSZWdpc3RyYXRpb24gZmFpbGVkIHdpdGggZXJy
b3I6IFNlY3VyaXR5RXJyb3I6IFNjcmlwdCBvcmlnaW4gZG9lcyBub3QgbWF0Y2ggdGhlIHJlZ2lz
dGVyaW5nIGNsaWVudCdzIG9yaWdpbgogQ09OU09MRSBNRVNTQUdFOiBsaW5lIDkxOiBSZWdpc3Ry
YXRpb24gZmFpbGVkIHdpdGggZXJyb3I6IFNlY3VyaXR5RXJyb3I6IFNjb3BlIG9yaWdpbiBkb2Vz
IG5vdCBtYXRjaCB0aGUgcmVnaXN0ZXJpbmcgY2xpZW50J3Mgb3JpZ2luCiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Jhc2ljLXJlZ2lzdGVyLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Jhc2lj
LXJlZ2lzdGVyLWV4cGVjdGVkLnR4dAppbmRleCA1MTMzYmIyZmNkOC4uZjIzMGFjYTA0MzMgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Jhc2ljLXJl
Z2lzdGVyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMv
c2VydmljZS9iYXNpYy1yZWdpc3Rlci1leHBlY3RlZC50eHQKQEAgLTEsMyArMSwzIEBACi1DT05T
T0xFIE1FU1NBR0U6IGxpbmUgMTA6IFJlZ2lzdHJhdGlvbiBmYWlsZWQgd2l0aCBlcnJvcjogVW5r
bm93bkVycm9yOiBGYWlsZWQgdG8gc3RhcnQgc2VydmljZSB3b3JrZXIgc2NyaXB0IG9mIGxlbmd0
aCA0MQotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDIxOiBSZWdpc3RyYXRpb24gZmFpbGVkIHdpdGgg
ZXJyb3I6IFVua25vd25FcnJvcjogRmFpbGVkIHRvIHN0YXJ0IHNlcnZpY2Ugd29ya2VyIHNjcmlw
dCBvZiBsZW5ndGggMAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDEwOiBSZWdpc3RyYXRpb24gZmFp
bGVkIHdpdGggZXJyb3I6IFVua25vd25FcnJvcjogV29ya2VyIHNjcmlwdCBzdWNjZXNzZnVsbHkg
c3RhcnRlZCwgYnV0IGl0IGhhcyBubyB3YXkgdG8gY29tbXVuaWNhdGUgeWV0CitDT05TT0xFIE1F
U1NBR0U6IGxpbmUgMjE6IFJlZ2lzdHJhdGlvbiBmYWlsZWQgd2l0aCBlcnJvcjogVW5rbm93bkVy
cm9yOiBXb3JrZXIgc2NyaXB0IHN1Y2Nlc3NmdWxseSBzdGFydGVkLCBidXQgaXQgaGFzIG5vIHdh
eSB0byBjb21tdW5pY2F0ZSB5ZXQKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93b3JrZXJzL3NlcnZpY2UvcmVnaXN0cmF0aW9uLXRhc2stcXVldWUtc2NoZWR1bGluZy0xLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3JlZ2lz
dHJhdGlvbi10YXNrLXF1ZXVlLXNjaGVkdWxpbmctMS1leHBlY3RlZC50eHQKaW5kZXggYzFhMDYz
NTA2MzkuLjAxMDIyNzAzMWNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dv
cmtlcnMvc2VydmljZS9yZWdpc3RyYXRpb24tdGFzay1xdWV1ZS1zY2hlZHVsaW5nLTEtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3JlZ2lz
dHJhdGlvbi10YXNrLXF1ZXVlLXNjaGVkdWxpbmctMS1leHBlY3RlZC50eHQKQEAgLTEsMiArMSwy
IEBACi1BTEVSVDogVW5leHBlY3RlZCBlcnJvciByZWNlaXZlZCBmcm9tIHNlcnZlcjogVW5rbm93
bkVycm9yOiBGYWlsZWQgdG8gc3RhcnQgc2VydmljZSB3b3JrZXIgc2NyaXB0IG9mIGxlbmd0aCA0
MQorQUxFUlQ6IFVuZXhwZWN0ZWQgZXJyb3IgcmVjZWl2ZWQgZnJvbSBzZXJ2ZXI6IFVua25vd25F
cnJvcjogV29ya2VyIHNjcmlwdCBzdWNjZXNzZnVsbHkgc3RhcnRlZCwgYnV0IGl0IGhhcyBubyB3
YXkgdG8gY29tbXVuaWNhdGUgeWV0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxNDg0ZjI0ZDRhNi4uYWVkZWNi
ZDA3YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MCBAQAorMjAxNy0xMC0xMiAgQnJhZHkgRWlk
c29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgU1cgIkhlbGxvIHdvcmxkIi4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODE4NworCisg
ICAgICAgIFJldmlld2VkIGJ5IEFuZHkgRXN0ZXMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChD
b3ZlcmVkIGJ5IGNoYW5nZXMgdG8gZXhpc3RpbmcgdGVzdHMpLgorCisgICAgICAgIFdpdGggdGhp
cyBwYXRjaCwgU1cgc2NyaXB0cyBhcmUgYWN0dWFsbHkgY29tcGlsZWQgYW5kIHJ1biBpbnNpZGUg
YSBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgZW52aXJvbm1lbnQKKyAgICAgICAgaW4gdGhlIFNX
IGNvbnRleHQgcHJvY2Vzcy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKworICAgICAgICAqIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlw
dCk6CisKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluOgorCisgICAgICAgICog
d29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xv
YmFsU2NvcGU6OmlzU2VydmljZVdvcmtlckdsb2JhbFNjb3BlIGNvbnN0KToKKworICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
LmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6aXNvbGF0
ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNv
bnRleHREYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6
OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGE6OmRlY29kZSk6CisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckds
b2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZTo6U2VydmljZVdvcmtlckdsb2JhbFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZTo6flNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OnJlZ2lzdHJhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OmV2ZW50VGFyZ2V0SW50ZXJmYWNl
IGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OnNlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyIGNvbnN0KToKKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcC4KKyAgICAgICAgKFdl
YkNvcmU6OlNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3JlOjpT
V0NvbnRleHRNYW5hZ2VyOjpTV0NvbnRleHRNYW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlNX
Q29udGV4dE1hbmFnZXI6OnN0YXJ0U2VydmljZVdvcmtlckNvbnRleHQpOgorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaDogQ29waWVkIGZyb20gU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oLgor
CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5Ojpz
aGFyZWREdW1teVByb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWQ6
OlNlcnZpY2VXb3JrZXJUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6bV93b3JrZXJPYmplY3RQ
cm94eSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkOjp+U2VydmljZVdv
cmtlclRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkOjpjcmVh
dGVXb3JrZXJHbG9iYWxTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhy
ZWFkOjpydW5FdmVudExvb3ApOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJUaHJlYWQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oLgorICAgICAgICAoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlclRocmVhZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJUaHJlYWQ6Ondvcmtlck9iamVjdFByb3h5IGNvbnN0KToKKworICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6
OmNyZWF0ZVdvcmtlcik6CisKIDIwMTctMTAtMTEgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBh
cHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIyMzIxNS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA4YzQyYWE2Y2FiYi4uMmQyZDhmNDk2MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIzNTQsNiArMjM1NCw5IEBACiAJCTUx
N0E2M0M2MUI3NDMxOTIwMEU3RENEQyAvKiBLZXllZEVuY29kZXJDRi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3QTYzQzIxQjc0MzE3RTAwRTdEQ0RD
IC8qIEtleWVkRW5jb2RlckNGLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNTE3QjI1QTkxQ0M4MkIyQTAwNjFDMDExIC8qIElEQkNvbm5lY3Rpb25Q
cm94eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTdCMjVBNzFDQzgyMDMyMDA2MUMwMTEgLyogSURCQ29ubmVjdGlvblByb3h5LmNwcCAqLzsgfTsK
IAkJNTE3QjI1QUExQ0M4MkIyQTAwNjFDMDExIC8qIElEQkNvbm5lY3Rpb25Qcm94eS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3QjI1QTgxQ0M4MjAz
MjAwNjFDMDExIC8qIElEQkNvbm5lY3Rpb25Qcm94eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTUxN0M4NzBBMUY4RUJCMjUwMEVCODA3NiAvKiBT
V0NvbnRleHRNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxN0M4NzA4MUY4RUI5QkYwMEVCODA3NiAvKiBTV0NvbnRleHRNYW5hZ2VyLmNw
cCAqLzsgfTsKKwkJNTE3Qzg3MEIxRjhFQkIyNTAwRUI4MDc2IC8qIFNXQ29udGV4dE1hbmFnZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0M4NzA5
MUY4RUI5QzAwMEVCODA3NiAvKiBTV0NvbnRleHRNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTE3Qzg3MTgxRjhGRDREOTAwRUI4MDc2
IC8qIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdDODcxNjFGOEZENEQzMDBFQjgwNzYgLyogU2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhLmNwcCAqLzsgfTsKIAkJNTE3REVFRTUxREU5NEFEQzAwQjkxNjQ0
IC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0RFRUUzMURFOTRBREMwMEI5MTY0NCAvKiBT
Y3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMubW0gKi87IH07CiAJCTUxN0RFRUU4MURFOTRC
MDgwMEI5MTY0NCAvKiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0RFRUU3MURFOTRCMDgwMEI5
MTY0NCAvKiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTdGQkExRTE1MUFCMTdDMDBCNTc5
NTkgLyogRE9NV2luZG93RXh0ZW5zaW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0ZCQTE3MTUxQUE3MUIwMEI1Nzk1OSAvKiBET01XaW5kb3dF
eHRlbnNpb24uY3BwICovOyB9OwpAQCAtMjQ1Niw2ICsyNDU5LDggQEAKIAkJNTFCQTRBQ0ExQkJD
NUJEOTAwREYzRDZEIC8qIE1lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJBNEFDODFCQkM1QjlFMDBERjNENkQg
LyogTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcCAqLzsgfTsKIAkJNTFCQTRBQ0IxQkJDNUJEOTAw
REYzRDZEIC8qIE1lbW9yeUlEQkJhY2tpbmdTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCQTRBQzkxQkJDNUI5RTAwREYzRDZEIC8qIE1lbW9y
eUlEQkJhY2tpbmdTdG9yZS5oICovOyB9OwogCQk1MUJBNEFDQzFCQkM1QkREMDBERjNENkQgLyog
SURCQmFja2luZ1N0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MUJBNEFDNzFCQkM1QUQ2MDBERjNENkQgLyogSURCQmFja2luZ1N0b3JlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTFCQ0NFMkYx
RjhGMTc5NTAwNkJBMEVEIC8qIFNlcnZpY2VXb3JrZXJUaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3Qzg3MTExRjhFRTcyRjAwRUI4MDc2
IC8qIFNlcnZpY2VXb3JrZXJUaHJlYWQuY3BwICovOyB9OworCQk1MUJDQ0UzMDFGOEYxNzlFMDA2
QkEwRUQgLyogU2VydmljZVdvcmtlclRocmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3Qzg3MTAxRjhFRTcyRTAwRUI4MDc2IC8qIFNlcnZpY2VX
b3JrZXJUaHJlYWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk1MUJFMzdFMDBEQUVFMDBFMDAxMDg1RkMgLyogU3RvcmFnZUFyZWEuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkUzN0RFMERBRUUwMEUw
MDEwODVGQyAvKiBTdG9yYWdlQXJlYS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTUxQzBBQTM5MEYyQUExMEEwMDE2NDhDMiAvKiBDYWNoZWRGcmFt
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFDMEFB
MzgwRjJBQTEwQTAwMTY0OEMyIC8qIENhY2hlZEZyYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFDMEFBNDEwRjJBQTE1RTAwMTY0OEMyIC8q
IENhY2hlZEZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxQzBBQTQwMEYyQUExNUUwMDE2NDhDMiAvKiBDYWNoZWRGcmFtZS5jcHAgKi87IH07
CkBAIC0xMDI5Miw2ICsxMDI5NywxMSBAQAogCQk1MTdBNjNDMjFCNzQzMTdFMDBFN0RDREMgLyog
S2V5ZWRFbmNvZGVyQ0YuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gS2V5ZWRF
bmNvZGVyQ0YuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3QjI1QTcxQ0M4MjAz
MjAwNjFDMDExIC8qIElEQkNvbm5lY3Rpb25Qcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBJREJDb25uZWN0aW9uUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MTdCMjVBODFDQzgyMDMyMDA2MUMwMTEgLyogSURCQ29ubmVjdGlvblBy
b3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQkNvbm5lY3Rpb25Qcm94
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTdDODcwODFGOEVCOUJGMDBFQjgw
NzYgLyogU1dDb250ZXh0TWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBTV0NvbnRleHRNYW5hZ2VyLmNwcDsgcGF0aCA9IHdvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJ
CTUxN0M4NzA5MUY4RUI5QzAwMEVCODA3NiAvKiBTV0NvbnRleHRNYW5hZ2VyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNXQ29udGV4dE1hbmFnZXIuaDsgcGF0aCA9IHdvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaDsgc291cmNlVHJlZSA9IFNPVVJD
RV9ST09UOyB9OworCQk1MTdDODcxMDFGOEVFNzJFMDBFQjgwNzYgLyogU2VydmljZVdvcmtlclRo
cmVhZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTZXJ2aWNlV29ya2VyVGhy
ZWFkLmg7IHBhdGggPSB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFk
Lmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJNTE3Qzg3MTExRjhFRTcyRjAwRUI4
MDc2IC8qIFNlcnZpY2VXb3JrZXJUaHJlYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gU2VydmljZVdvcmtlclRocmVhZC5jcHA7IHBhdGggPSB3b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcDsgc291cmNlVHJlZSA9IFNPVVJDRV9S
T09UOyB9OworCQk1MTdDODcxNjFGOEZENEQzMDBFQjgwNzYgLyogU2VydmljZVdvcmtlckNvbnRl
eHREYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0RF
RUUzMURFOTRBREMwMEI5MTY0NCAvKiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTY3JvbGxpbmdNb21lbnR1
bUNhbGN1bGF0b3JNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0RFRUU3
MURFOTRCMDgwMEI5MTY0NCAvKiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9y
TWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0ZCQTE3MTUxQUE3MUIwMEI1
Nzk1OSAvKiBET01XaW5kb3dFeHRlbnNpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRE9NV2luZG93RXh0ZW5zaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE5MTM4LDYgKzE5MTQ4LDE3IEBACiAJCQlwYXRoID0gc2VydmVyOwogCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJNTE3Qzg3MDcxRjhFOEZGMjAwRUI4MDc2IC8q
IGNvbnRleHQgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJ
CTUxN0M4NzA4MUY4RUI5QkYwMEVCODA3NiAvKiBTV0NvbnRleHRNYW5hZ2VyLmNwcCAqLywKKwkJ
CQk1MTdDODcwOTFGOEVCOUMwMDBFQjgwNzYgLyogU1dDb250ZXh0TWFuYWdlci5oICovLAorCQkJ
CTUxN0M4NzExMUY4RUU3MkYwMEVCODA3NiAvKiBTZXJ2aWNlV29ya2VyVGhyZWFkLmNwcCAqLywK
KwkJCQk1MTdDODcxMDFGOEVFNzJFMDBFQjgwNzYgLyogU2VydmljZVdvcmtlclRocmVhZC5oICov
LAorCQkJKTsKKwkJCXBhdGggPSBjb250ZXh0OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
KwkJfTsKIAkJNTE4MkMyNEMxRjMxNDIwOTAwNTlCQTdDIC8qIFNlcnZpY2VXb3JrZXJzICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTE5MjE4LDYgKzE5MjM5
LDcgQEAKIAkJNTFGMTc1NDQxRjNFQkJGMjAwQzc0OTUwIC8qIHNlcnZpY2UgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTUxN0M4NzA3MUY4RThGRjIwMEVC
ODA3NiAvKiBjb250ZXh0ICovLAogCQkJCTUxN0E1MkVDMUY0NzUzMkQwMERDREMwQSAvKiBzZXJ2
ZXIgKi8sCiAJCQkJNTFGMTc1NUIxRjNFQkMwQzAwQzc0OTUwIC8qIFNlcnZpY2VXb3JrZXIuY3Bw
ICovLAogCQkJCTUxRjE3NTVBMUYzRUJDMEMwMEM3NDk1MCAvKiBTZXJ2aWNlV29ya2VyLmggKi8s
CkBAIC0xOTIyNSw2ICsxOTI0Nyw3IEBACiAJCQkJNTFGMTc1NTgxRjNFQkMwQzAwQzc0OTUwIC8q
IFNlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwICovLAogCQkJCTUxRjE3NTU3MUYzRUJDMEMwMEM3
NDk1MCAvKiBTZXJ2aWNlV29ya2VyQ29udGFpbmVyLmggKi8sCiAJCQkJNTFGMTc1NTYxRjNFQkMw
QzAwQzc0OTUwIC8qIFNlcnZpY2VXb3JrZXJDb250YWluZXIuaWRsICovLAorCQkJCTUxN0M4NzE2
MUY4RkQ0RDMwMEVCODA3NiAvKiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwICovLAogCQkJ
CTUxQ0E3RUU3MUY4ODMyRTAwMDNEMzEzMSAvKiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaCAq
LywKIAkJCQk1MTdBNTM1QzFGNTg5OUYyMDBEQ0RDMEEgLyogU2VydmljZVdvcmtlckZldGNoUmVz
dWx0LmggKi8sCiAJCQkJNTFGMTc1NTUxRjNFQkMwQzAwQzc0OTUwIC8qIFNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZS5jcHAgKi8sCkBAIC0yODYzNiw2ICsyODY1OSw3IEBACiAJCQkJN0M4MTM5QUEx
RUQ2NjA0QjAwQ0UyNkU4IC8qIEpTRE9NQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQxM0MyQzM0MUJDMjlBOEYwMDc1MjA0QyAvKiBKU0RPTUNvbnN0cnVjdG9y
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzA4NDEzNDFDRERCMTU1MDBCMDk1OEMgLyogSlNET01D
b252ZXJ0LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTdDODcwQjFGOEVCQjI1MDBFQjgwNzYgLyog
U1dDb250ZXh0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M4RTM0QUQxRTRBMzNBRjAw
NTRDRTIzIC8qIEpTRE9NQ29udmVydEFueS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M4RTM0QUUx
RTRBMzNBRjAwNTRDRTIzIC8qIEpTRE9NQ29udmVydEJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTdDOEUzNEFGMUU0QTMzQUYwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRCb29sZWFuLmggaW4gSGVh
ZGVycyAqLywKQEAgLTMwNDIxLDYgKzMwNDQ1LDcgQEAKIAkJCQlCMjIyNzlDNTBEMDBCRjIyMDA3
MUI3ODIgLyogU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQjIyMjc5QzgwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFQmxlbmRFbGVtZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCMjIyNzlDQjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVDb2xvck1hdHJp
eEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxQkNDRTMwMUY4RjE3OUUwMDZCQTBFRCAv
KiBTZXJ2aWNlV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzlDRTBEMDBC
RjIyMDA3MUI3ODIgLyogU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUIyMjI3OUQxMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRUNvbXBvc2l0ZUVsZW1l
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTE5MjEzMjc1MTFDMEU2QkIwMDQ1NjIzOCAvKiBTVkdG
RUNvbnZvbHZlTWF0cml4RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTU5OSw2ICszMTYy
NCw3IEBACiAJCQkJNDFEMTI5Q0YxRjNEMEVGRTAwRDE1RTQ3IC8qIENhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTQzQUY4RTYxQUM1QjdFODAwQ0E3MTdFIC8q
IENhY2hlVmFsaWRhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUFFMkQ5NjEzNEVFNUY5
MDA3MjkyMEEgLyogQ2FsY3VsYXRpb25WYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTdD
ODcxODFGOEZENEQ5MDBFQjgwNzYgLyogU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTk1MjA3NjA0MUYyNjc1RkUwMDdEMkFBQiAvKiBDYWxsVHJhY2VyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTQxNUNEQUY0MUU2QjhGODcwMDRGMTFFRSAvKiBDYW52YXND
YXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OTQ4NEZDMTEw
MkNGMjNDMDAxODdERDMgLyogQ2FudmFzR3JhZGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0z
MjI0MSw2ICszMjI2Nyw3IEBACiAJCQkJOTZBQkE0MjMxNEJDQjgwRTAwRDU2MjA0IC8qIEdyYXBo
aWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyRUQ5Nzcx
MEIxRjU1Q0UwMDI1N0QwRiAvKiBHcmFwaGljc0NvbnRleHRDRy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCMjc3QjQwNDBCMjJGMzdDMDAwNEJFQzYgLyogR3JhcGhpY3NDb250ZXh0Q29jb2EubW0g
aW4gU291cmNlcyAqLywKKwkJCQk1MUJDQ0UyRjFGOEYxNzk1MDA2QkEwRUQgLyogU2VydmljZVdv
cmtlclRocmVhZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjU4MEIwQzBGMTJBMjY5MDA1MUQ2
ODkgLyogR3JhcGhpY3NMYXllci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OTlCM0VENjEyOENE
MzE0MDBFNzI2QzIgLyogR3JhcGhpY3NMYXllckNBLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
QTI0RDc5MTYyREY5MTkwMEEzRjRDMCAvKiBHcmFwaGljc0xheWVyVXBkYXRlci5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTMzNTU0LDYgKzMzNTgxLDcgQEAKIAkJCQlDOTZGNUVDNjFCNTg3MjI2MDA5
MUVBOUQgLyogTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWMubW0gaW4gU291cmNl
cyAqLywKIAkJCQlDOTBGNjU1NTFCMjI1M0IxMDAyMTYzQTEgLyogTWVkaWFTZXNzaW9uTWFuYWdl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDY2OUQ2ODFEMjMzNjRCMDA0RDE4NjYgLyogTWVk
aWFTZXNzaW9uTWFuYWdlckNvY29hLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxN0M4NzBBMUY4
RUJCMjUwMEVCODA3NiAvKiBTV0NvbnRleHRNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTA3NjM4QTlBMTg4NDQ4NzIwMEUxNUExQiAvKiBNZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMDdFREMzRUUxQUFDQjc1RDAwOTgzRUI1IC8qIE1lZGlhU2Vzc2lv
bk1hbmFnZXJNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDNBNDk1RTE3QTlEMDFCMDAyNzRF
NDIgLyogTWVkaWFTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDRkZDE2
NmFkMmNhLi43ZjZmMjg0ZmM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNs
dWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNj
b3BlLmgiCiAjaW5jbHVkZSAiSlNFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgIkpTU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgogI2luY2x1
ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlICJXb3JrZXJDb25zb2xlQ2xpZW50
LmgiCkBAIC05Miw3ICs5MywyNiBAQCB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmluaXRT
Y3JpcHQoKQogCiAgICAgICAgIHByb3h5LT5zZXRUYXJnZXQoKm1fdm0sIG1fd29ya2VyR2xvYmFs
U2NvcGVXcmFwcGVyLmdldCgpKTsKICAgICAgICAgcHJveHktPnN0cnVjdHVyZSgpLT5zZXRHbG9i
YWxPYmplY3QoKm1fdm0sIG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpKTsKKyNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgfSBlbHNlIGlmIChtX3dvcmtlckdsb2JhbFNjb3Bl
LT5pc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSgpKSB7CisgICAgICAgIFN0cnVjdHVyZSogY29u
dGV4dFByb3RvdHlwZVN0cnVjdHVyZSA9IEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlUHJvdG90
eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoKm1fdm0sIG51bGxwdHIsIGpzTnVsbCgpKTsKKyAgICAgICAg
U3Ryb25nPEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlPiBjb250ZXh0UHJvdG90
eXBlKCptX3ZtLCBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZTo6Y3JlYXRlKCpt
X3ZtLCBudWxscHRyLCBjb250ZXh0UHJvdG90eXBlU3RydWN0dXJlKSk7CisgICAgICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OmNyZWF0ZVN0cnVj
dHVyZSgqbV92bSwgbnVsbHB0ciwgY29udGV4dFByb3RvdHlwZS5nZXQoKSk7CisgICAgICAgIGF1
dG8qIHByb3h5U3RydWN0dXJlID0gSlNQcm94eTo6Y3JlYXRlU3RydWN0dXJlKCptX3ZtLCBudWxs
cHRyLCBqc051bGwoKSwgUHVyZUZvcndhcmRpbmdQcm94eVR5cGUpOworICAgICAgICBhdXRvKiBw
cm94eSA9IEpTUHJveHk6OmNyZWF0ZSgqbV92bSwgcHJveHlTdHJ1Y3R1cmUpOworICAgIAorICAg
ICAgICBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5zZXQoKm1fdm0sIEpTU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlOjpjcmVhdGUoKm1fdm0sIHN0cnVjdHVyZSwgc3RhdGljX2Nhc3Q8U2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlJj4oKm1fd29ya2VyR2xvYmFsU2NvcGUpLCBwcm94eSkpOworICAg
ICAgICBjb250ZXh0UHJvdG90eXBlU3RydWN0dXJlLT5zZXRHbG9iYWxPYmplY3QoKm1fdm0sIG1f
d29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpKTsKKyAgICAgICAgQVNTRVJUKHN0cnVjdHVy
ZS0+Z2xvYmFsT2JqZWN0KCkgPT0gbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIpOworICAgICAg
ICBBU1NFUlQobV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXItPnN0cnVjdHVyZSgpLT5nbG9iYWxP
YmplY3QoKSA9PSBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlcik7CisgICAgICAgIGNvbnRleHRQ
cm90b3R5cGUtPnN0cnVjdHVyZSgpLT5zZXRHbG9iYWxPYmplY3QoKm1fdm0sIG1fd29ya2VyR2xv
YmFsU2NvcGVXcmFwcGVyLmdldCgpKTsKKyAgICAgICAgY29udGV4dFByb3RvdHlwZS0+c3RydWN0
dXJlKCktPnNldFByb3RvdHlwZVdpdGhvdXRUcmFuc2l0aW9uKCptX3ZtLCBKU1dvcmtlckdsb2Jh
bFNjb3BlOjpwcm90b3R5cGUoKm1fdm0sICptX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5nZXQo
KSkpOworCisgICAgICAgIHByb3h5LT5zZXRUYXJnZXQoKm1fdm0sIG1fd29ya2VyR2xvYmFsU2Nv
cGVXcmFwcGVyLmdldCgpKTsKKyAgICAgICAgcHJveHktPnN0cnVjdHVyZSgpLT5zZXRHbG9iYWxP
YmplY3QoKm1fdm0sIG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpKTsKKyNlbmRpZgog
ICAgIH0KKyAgICAKICAgICBBU1NFUlQobV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXItPmdsb2Jh
bE9iamVjdCgpID09IG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKTsKICAgICBBU1NFUlQoYXNP
YmplY3QobV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXItPmdldFByb3RvdHlwZURpcmVjdCgpKS0+
Z2xvYmFsT2JqZWN0KCkgPT0gbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluIGIvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgppbmRleCBkYjJmMjkwN2Y3ZC4uYmExZTFh
MDA0MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3Rvcnku
aW4KKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgpAQCAtMzIs
NiArMzIsNyBAQCBSVENEVE1GU2VuZGVyIGNvbmRpdGlvbmFsPVdFQl9SVENfRFRNRgogUlRDUGVl
ckNvbm5lY3Rpb24gY29uZGl0aW9uYWw9V0VCX1JUQwogU2VydmljZVdvcmtlciBjb25kaXRpb25h
bD1TRVJWSUNFX1dPUktFUgogU2VydmljZVdvcmtlckNvbnRhaW5lciBjb25kaXRpb25hbD1TRVJW
SUNFX1dPUktFUgorU2VydmljZVdvcmtlckdsb2JhbFNjb3BlIGNvbmRpdGlvbmFsPVNFUlZJQ0Vf
V09SS0VSCiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uIGNvbmRpdGlvbmFsPVNFUlZJQ0VfV09S
S0VSCiBTb3VyY2VCdWZmZXIgY29uZGl0aW9uYWw9TUVESUFfU09VUkNFCiBTb3VyY2VCdWZmZXJM
aXN0IGNvbmRpdGlvbmFsPU1FRElBX1NPVVJDRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJHbG9iYWxTY29wZS5oCmluZGV4IGE1Y2U0M2U5OTA3Li4zM2FiYmUyOGJhMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaApAQCAtNTksNiArNTksNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB+V29ya2VyR2xvYmFsU2NvcGUoKTsKIAogICAgIHZpcnR1YWwg
Ym9vbCBpc0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQogCiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX3VybDsgfQogICAgIFN0cmluZyBvcmlnaW4oKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjNjZDJkM2ZkNzgz
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YS5jcHAKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaCIK
KworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjppc29sYXRl
ZENvcHkoKSBjb25zdAoreworICAgIHJldHVybiB7IHJlZ2lzdHJhdGlvbktleS5pc29sYXRlZENv
cHkoKSwgd29ya2VySUQuaXNvbGF0ZWRDb3B5KCksIHNjcmlwdC5pc29sYXRlZENvcHkoKSwgc2Ny
aXB0VVJMLmlzb2xhdGVkQ29weSgpIH07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaAppbmRleCA3
YzYzOWU3ODUwMS4uYTg3MTNiMzRmMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmgKQEAgLTI2LDYgKzI2
LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bktleS5oIgorI2luY2x1ZGUgIlVSTC5oIgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQog
CkBAIC0zNSwxNSArMzYsMTggQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSB7CiAg
ICAgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSByZWdpc3RyYXRpb25LZXk7CiAgICAgU3Ry
aW5nIHdvcmtlcklEOwogICAgIFN0cmluZyBzY3JpcHQ7CisgICAgVVJMIHNjcmlwdFVSTDsKICAg
ICAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29u
c3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2Vy
dmljZVdvcmtlckNvbnRleHREYXRhPiBkZWNvZGUoRGVjb2RlciYpOworICAgIAorICAgIFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YSBpc29sYXRlZENvcHkoKSBjb25zdDsKIH07CiAKIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+CiB2b2lkIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2RlciA8PCByZWdpc3RyYXRpb25LZXkg
PDwgd29ya2VySUQgPDwgc2NyaXB0OworICAgIGVuY29kZXIgPDwgcmVnaXN0cmF0aW9uS2V5IDw8
IHdvcmtlcklEIDw8IHNjcmlwdCA8PCBzY3JpcHRVUkw7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+CkBAIC02MSw3ICs2NSwxMSBAQCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YT4gU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpkZWNvZGUoRGVjb2RlcgogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoc2NyaXB0KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAKLSAgICByZXR1cm4ge3sgV1RGTW92ZSgqcmVnaXN0cmF0aW9uS2V5KSwgV1RGTW92ZSh3
b3JrZXJJRCksIFdURk1vdmUoc2NyaXB0KSB9fTsKKyAgICBVUkwgc2NyaXB0VVJMOworICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoc2NyaXB0VVJMKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKworICAgIHJldHVybiB7eyBXVEZNb3ZlKCpyZWdpc3RyYXRpb25LZXkpLCBXVEZNb3ZlKHdv
cmtlcklEKSwgV1RGTW92ZShzY3JpcHQpLCBXVEZNb3ZlKHNjcmlwdFVSTCkgfX07CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggZmQ0OGFlMjhm
MDEuLjE0NjdjZTk1YjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtMjgsMTcgKzI4LDM2
IEBACiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKKyNpbmNsdWRlICJTZXJ2aWNlV29y
a2VyVGhyZWFkLmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlOjpTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUodWludDY0X3Qgc2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0YSwgY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1c2VyQWdl
bnQsIFNlcnZpY2VXb3JrZXJUaHJlYWQmIHRocmVhZCwgYm9vbCBzaG91bGRCeXBhc3NNYWluV29y
bGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4s
IE1vbm90b25pY1RpbWUgdGltZU9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkq
IGNvbm5lY3Rpb25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyLCBQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQpCisgICAgOiBXb3JrZXJHbG9iYWxTY29wZSh1cmwsIGlkZW50aWZp
ZXIsIHVzZXJBZ2VudCwgdGhyZWFkLCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJp
dHlQb2xpY3ksIFdURk1vdmUodG9wT3JpZ2luKSwgdGltZU9yaWdpbiwgY29ubmVjdGlvblByb3h5
LCBzb2NrZXRQcm92aWRlciwgc2Vzc2lvbklEKQorICAgICwgbV9zZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllcihzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikKKyAgICAsIG1fY29udGV4dERhdGEo
Y3Jvc3NUaHJlYWRDb3B5KGRhdGEpKQoreworfQorCitTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6
On5TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoKQoreworfQorCiBTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uJiBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OnJlZ2lzdHJhdGlvbigpCiB7Ci0gICAg
cmV0dXJuIG1fcmVnaXN0cmF0aW9uOworICAgIC8vIEZJWE1FOiBJcyB0aGlzIG1ldGhvZCBzdGls
bCBuZWVkZWQ/CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAogdm9pZCBT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OnNraXBXYWl0aW5nKFJlZjxEZWZlcnJlZFByb21pc2U+
JiYpCiB7CiB9CiAKK0V2ZW50VGFyZ2V0SW50ZXJmYWNlIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZTo6ZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdAoreworICAgIHJldHVybiBTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGVFdmVudFRhcmdldEludGVyZmFjZVR5cGU7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUuaAppbmRleCBjNTJlMjQxNjY3Ny4uMzc3OTYzYjNjNWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
LmgKQEAgLTI3LDIyICsyNywzOSBAQAogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCisj
aW5jbHVkZSAiU2VydmljZVdvcmtlckNvbnRleHREYXRhLmgiCiAjaW5jbHVkZSAiU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbi5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRGVmZXJyZWRQcm9taXNlOwotY2xhc3MgU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbjsKK2NsYXNzIFNlcnZpY2VXb3JrZXJUaHJlYWQ7CiAKIGNsYXNz
IFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSA6IHB1YmxpYyBXb3JrZXJHbG9iYWxTY29wZSB7CiBw
dWJsaWM6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gc3RhdGljIFJlZjxTZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGU+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShzdGQ6OmZvcndh
cmQ8QXJncz4oYXJncykuLi4pKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5TZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUoKTsKKworICAgIGJvb2wgaXNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoKSBj
b25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisKICAgICBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uJiByZWdpc3RyYXRpb24oKTsKKyAgICAKKyAgICB1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXI7
IH0KIAogICAgIHZvaWQgc2tpcFdhaXRpbmcoUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAKKyAg
ICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IGZpbmFs
OworCiBwcml2YXRlOgotICAgIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24gbV9yZWdpc3RyYXRp
b247CisgICAgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmLCBjb25zdCBVUkwm
LCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBTZXJ2
aWNlV29ya2VyVGhyZWFkJiwgYm9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJp
dHlQb2xpY3ksIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4sIE1vbm90b25pY1RpbWUg
dGltZU9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92aWRl
ciosIFBBTDo6U2Vzc2lvbklEKTsKKworICAgIHVpbnQ2NF90IG1fc2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXI7CisgICAgU2VydmljZVdvcmtlckNvbnRleHREYXRhIG1fY29udGV4dERhdGE7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xZmJmYTY1NjhlMwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1h
bmFnZXIuY3BwCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiU1dDb250ZXh0TWFuYWdlci5oIgorCisjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQu
aD4KKwordXNpbmcgbmFtZXNwYWNlIFBBTDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTV0Nv
bnRleHRNYW5hZ2VyJiBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKQoreworICAgIHN0YXRp
YyBTV0NvbnRleHRNYW5hZ2VyKiBzaGFyZWRNYW5hZ2VyID0gbmV3IFNXQ29udGV4dE1hbmFnZXI7
CisgICAgcmV0dXJuICpzaGFyZWRNYW5hZ2VyOworfQorCitTV0NvbnRleHRNYW5hZ2VyOjpTV0Nv
bnRleHRNYW5hZ2VyKCkKK3sKKworfQorCitFeGNlcHRpb25Pcjx1aW50NjRfdD4gU1dDb250ZXh0
TWFuYWdlcjo6c3RhcnRTZXJ2aWNlV29ya2VyQ29udGV4dCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiBkYXRhKQorewor
ICAgIC8vIEZJWE1FOiBQcm92aWRlIGEgc2Vuc2ljYWwgc2Vzc2lvbiBJRAorCisgICAgYXV0byB0
aHJlYWQgPSBTZXJ2aWNlV29ya2VyVGhyZWFkOjpjcmVhdGUoc2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIsIGRhdGEsIFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKKyAgICBhdXRvIHJl
c3VsdCA9IG1fd29ya2VyVGhyZWFkTWFwLmFkZCh0aHJlYWQtPnVuaXF1ZUNvbnRleHRJZGVudGlm
aWVyKCksIFdURk1vdmUodGhyZWFkKSk7CisgICAgQVNTRVJUKHJlc3VsdC5pc05ld0VudHJ5KTsK
KworICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPnN0YXJ0KCk7CisgICAgCisgICAgTE9HKFNl
cnZpY2VXb3JrZXIsICJDb250ZXh0IHByb2Nlc3MgUElEOiAlaSBzdGFydGVkIHdvcmtlciB0aHJl
YWQgJXNcbiIsIGdldHBpZCgpLCBkYXRhLndvcmtlcklELnV0ZjgoKS5kYXRhKCkpOworICAgIAor
ICAgIC8vIEZJWE1FOiBGb3IgdGVzdGluZyBwdXJwb3NlcyB3ZSBuZWVkIHRvIHNpZ25hbCBhIGZh
aWx1cmUgd2l0aCBhbiBleGNlcHRpb24gcGF5bG9hZC4KKyAgICAvLyBMYXRlciB3aXRoIG1vcmUg
QVBJcyBhbmQgaW5mcmFzdHJ1Y3R1cmUgZmlsbGVkIGluLCB0ZXN0aW5nIHdpbGwgYmUgbXVjaCBl
YXNpZXIuCisgICAgCisgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFVua25vd25FcnJvciwgIldvcmtl
ciBzY3JpcHQgc3VjY2Vzc2Z1bGx5IHN0YXJ0ZWQsIGJ1dCBpdCBoYXMgbm8gd2F5IHRvIGNvbW11
bmljYXRlIHlldCIgfTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lMTVkN2U2OTgyMwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaApA
QCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCisKKyNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgorI2luY2x1ZGUgIlNl
cnZpY2VXb3JrZXJUaHJlYWQuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3N0cnVjdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE7CisKK2NsYXNz
IFNXQ29udGV4dE1hbmFnZXIgeworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBT
V0NvbnRleHRNYW5hZ2VyJiBzaW5nbGV0b24oKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2Vw
dGlvbk9yPHVpbnQ2NF90PiBzdGFydFNlcnZpY2VXb3JrZXJDb250ZXh0KHVpbnQ2NF90IHNlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmKTsK
KworcHJpdmF0ZToKKyAgICBTV0NvbnRleHRNYW5hZ2VyKCk7CisgICAgCisgICAgSGFzaE1hcDx1
aW50NjRfdCwgUmVmUHRyPFNlcnZpY2VXb3JrZXJUaHJlYWQ+PiBtX3dvcmtlclRocmVhZE1hcDsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAuLmY1M2QwMWRhZjIyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAK
QEAgLTAsMCArMSw5NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJTZXJ2aWNlV29ya2VyVGhyZWFkLmgiCisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CisKKyNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuaCIKKyNp
bmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZS5oIgorI2luY2x1ZGUgIldvcmtlckxvYWRlclByb3h5LmgiCisjaW5jbHVkZSAiV29ya2Vy
T2JqZWN0UHJveHkuaCIKKyNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CisjaW5jbHVkZSA8cnVu
dGltZS9SdW50aW1lRmxhZ3MuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKwor
dXNpbmcgbmFtZXNwYWNlIFBBTDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHkgOiBwdWJsaWMgV29ya2VyTG9hZGVyUHJveHksIHB1YmxpYyBX
b3JrZXJPYmplY3RQcm94eSB7CitwdWJsaWM6CisgICAgc3RhdGljIFNlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eSYgc2hhcmVkRHVtbXlQcm94eSgpCisgICAgeworICAgICAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8U2VydmljZVdvcmtlclRocmVhZFByb3h5PiBwcm94eTsKKyAgICAgICAgcmV0dXJu
IHByb3h5OworICAgIH0KKworcHJpdmF0ZToKKyAgICB2b2lkIHBvc3RUYXNrVG9Mb2FkZXIoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmKSBmaW5hbCB7IH07CisgICAgYm9vbCBwb3N0VGFz
a0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sm
JiwgY29uc3QgU3RyaW5nJikgZmluYWwgeyByZXR1cm4gZmFsc2U7IH07CisgICAgdm9pZCBwb3N0
RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoY29uc3QgU3RyaW5nJiwgaW50LCBpbnQsIGNvbnN0IFN0
cmluZyYpIGZpbmFsIHsgfTsKKyAgICB2b2lkIHBvc3RNZXNzYWdlVG9QYWdlSW5zcGVjdG9yKGNv
bnN0IFN0cmluZyYpIGZpbmFsIHsgfTsKKyAgICB2b2lkIHdvcmtlckdsb2JhbFNjb3BlRGVzdHJv
eWVkKCkgZmluYWwgeyB9OworICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmLCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRD
aGFubmVsQXJyYXk+KSBmaW5hbCB7IH07CisgICAgdm9pZCBjb25maXJtTWVzc2FnZUZyb21Xb3Jr
ZXJPYmplY3QoYm9vbCkgZmluYWwgeyB9OworICAgIHZvaWQgcmVwb3J0UGVuZGluZ0FjdGl2aXR5
KGJvb2wpIGZpbmFsIHsgfTsKK307CisKKy8vIEZJWE1FOiBVc2UgYSB2YWxpZCBXb3JrZXJMb2Fk
ZXJQcm94eQorLy8gRklYTUU6IFVzZSBhIHZhbGlkIFdvcmtlclJlcG9ydGluZ1Byb3h5CisvLyBG
SVhNRTogVXNlIGEgdmFsaWQgV29ya2VyT2JqZWN0UHJveHkKKy8vIEZJWE1FOiBVc2UgYSB2YWxp
ZCBJREJDb25uZWN0aW9uCisvLyBGSVhNRTogVXNlIGEgdmFsaWQgU29ja2V0UHJvdmlkZXIKKy8v
IEZJWE1FOiBVc2UgYSB2YWxpZCB1c2VyIGFnZW50CisvLyBGSVhNRTogVXNlIHZhbGlkIHJ1bnRp
bWUgZmxhZ3MKKworU2VydmljZVdvcmtlclRocmVhZDo6U2VydmljZVdvcmtlclRocmVhZCh1aW50
NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlckNvbnRl
eHREYXRhJiBkYXRhLCBQQUw6OlNlc3Npb25JRCkKKyAgICA6IFdvcmtlclRocmVhZChkYXRhLnNj
cmlwdFVSTCwgZGF0YS53b3JrZXJJRCwgQVNDSUlMaXRlcmFsKCJXb3JrZXJVc2VyQWdlbnQiKSwg
ZGF0YS5zY3JpcHQsIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6c2hhcmVkRHVtbXlQcm94eSgp
LCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnNoYXJlZER1bW15UHJveHkoKSwgV29ya2VyVGhy
ZWFkU3RhcnRNb2RlOjpOb3JtYWwsIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVy
cyB7IH0sIGZhbHNlLCBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGRhdGEuc2NyaXB0VVJMKS5nZXQo
KSwgTW9ub3RvbmljVGltZTo6bm93KCksIG51bGxwdHIsIG51bGxwdHIsIEpTQzo6UnVudGltZUZs
YWdzOjpjcmVhdGVBbGxFbmFibGVkKCksIFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKQor
ICAgICwgbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcihzZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllcikKKyAgICAsIG1fZGF0YShkYXRhLmlzb2xhdGVkQ29weSgpKQorICAgICwgbV93b3JrZXJP
YmplY3RQcm94eShTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnNoYXJlZER1bW15UHJveHkoKSkK
K3sKK30KKworU2VydmljZVdvcmtlclRocmVhZDo6flNlcnZpY2VXb3JrZXJUaHJlYWQoKQorewor
fQorCitSZWY8V29ya2VyR2xvYmFsU2NvcGU+IFNlcnZpY2VXb3JrZXJUaHJlYWQ6OmNyZWF0ZVdv
cmtlckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNw
b25zZUhlYWRlcnMmLCBib29sIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBv
bGljeSwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgTW9ub3RvbmljVGltZSB0aW1l
T3JpZ2luLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCit7CisgICAgcmV0dXJuIFNlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZTo6Y3JlYXRlKG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIG1f
ZGF0YSwgdXJsLCBpZGVudGlmaWVyLCB1c2VyQWdlbnQsICp0aGlzLCBzaG91bGRCeXBhc3NNYWlu
V29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIFdURk1vdmUodG9wT3JpZ2luKSwgdGltZU9yaWdp
biwgaWRiQ29ubmVjdGlvblByb3h5KCksIHNvY2tldFByb3ZpZGVyKCksIHNlc3Npb25JRCk7Cit9
CisKK3ZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6cnVuRXZlbnRMb29wKCkKK3sKKyAgICAvLyBG
SVhNRTogVGhlcmUgd2lsbCBiZSBTZXJ2aWNlV29ya2VyIHNwZWNpZmljIHRoaW5ncyB0byBkbyBo
ZXJlLgorICAgIFdvcmtlclRocmVhZDo6cnVuRXZlbnRMb29wKCk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJU
aHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJUaHJlYWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMjJh
MDdiODlmNTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCisjaW5j
bHVkZSAiU2VydmljZVdvcmtlckNvbnRleHREYXRhLmgiCisjaW5jbHVkZSAiV29ya2VyVGhyZWFk
LmgiCisjaW5jbHVkZSA8d3RmL0lkZW50aWZpZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM7CitjbGFzcyBXb3Jr
ZXJPYmplY3RQcm94eTsKK3N0cnVjdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE7CisKK2NsYXNz
IFNlcnZpY2VXb3JrZXJUaHJlYWQgOiBwdWJsaWMgV29ya2VyVGhyZWFkLCBwdWJsaWMgVGhyZWFk
U2FmZUlkZW50aWZpZWQ8U2VydmljZVdvcmtlclRocmVhZD4geworcHVibGljOgorICAgIHRlbXBs
YXRlPHR5cGVuYW1lLi4uIEFyZ3M+IHN0YXRpYyBSZWY8U2VydmljZVdvcmtlclRocmVhZD4gY3Jl
YXRlKEFyZ3MmJi4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U2VydmljZVdvcmtlclRocmVhZChzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKKyAgICB9
CisgICAgdmlydHVhbCB+U2VydmljZVdvcmtlclRocmVhZCgpOworCisgICAgV29ya2VyT2JqZWN0
UHJveHkmIHdvcmtlck9iamVjdFByb3h5KCkgY29uc3QgeyByZXR1cm4gbV93b3JrZXJPYmplY3RQ
cm94eTsgfQorCitwcm90ZWN0ZWQ6CisgICAgUmVmPFdvcmtlckdsb2JhbFNjb3BlPiBjcmVhdGVX
b3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25z
ZUhlYWRlcnMmLCBib29sIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGlj
eSwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgTW9ub3RvbmljVGltZSB0aW1lT3Jp
Z2luLCBQQUw6OlNlc3Npb25JRCkgZmluYWw7CisgICAgdm9pZCBydW5FdmVudExvb3AoKSBvdmVy
cmlkZTsKKworcHJpdmF0ZToKKyAgICBTZXJ2aWNlV29ya2VyVGhyZWFkKHVpbnQ2NF90IHNlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmLCBQ
QUw6OlNlc3Npb25JRCk7CisKKyAgICB1aW50NjRfdCBtX3NlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyOworICAgIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBtX2RhdGE7CisgICAgV29ya2VyT2Jq
ZWN0UHJveHkmIG1fd29ya2VyT2JqZWN0UHJveHk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCmluZGV4IDA1NTkwMGM2
MzcwLi4wZTQ4N2JhYTg1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTE2NCw3ICsxNjQsNyBAQCBSZWY8U1dTZXJ2ZXJX
b3JrZXI+IFNXU2VydmVyOjpjcmVhdGVXb3JrZXIoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29u
c3QgU2VydmljZQogICAgIGF1dG8gcmVzdWx0ID0gbV93b3JrZXJzQnlJRC5hZGQod29ya2VySUQs
IFNXU2VydmVyV29ya2VyOjpjcmVhdGUocmVnaXN0cmF0aW9uS2V5LCB1cmwsIHNjcmlwdCwgdHlw
ZSwgd29ya2VySUQpKTsKICAgICBBU1NFUlQocmVzdWx0LmlzTmV3RW50cnkpOwogICAgIAotICAg
IGNvbm5lY3Rpb24uc3RhcnRTZXJ2aWNlV29ya2VyQ29udGV4dCh7IHJlZ2lzdHJhdGlvbktleSwg
d29ya2VySUQsIHNjcmlwdCB9KTsKKyAgICBjb25uZWN0aW9uLnN0YXJ0U2VydmljZVdvcmtlckNv
bnRleHQoeyByZWdpc3RyYXRpb25LZXksIHdvcmtlcklELCBzY3JpcHQsIHVybCB9KTsKICAgICAK
ICAgICByZXR1cm4gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
YzM2OGY0YWQ3OGEuLjI2ODE4ZTFlMDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE3
LTEwLTEyICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBTVyAi
SGVsbG8gd29ybGQiLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTc4MTg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5keSBFc3Rlcy4KKworICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3M6OnN0YXJ0U2VydmljZVdvcmtlckNvbnRleHQpOgorCiAyMDE3LTEwLTExICBZb3Vlbm4gRmFi
bGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgQVBJIHRvIGNsZWFuIENhY2hl
U3RvcmFnZSBkYXRhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXgg
MmYyZmFjZGQyMjAuLmYxY2Y2ZGI5MTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCkBAIC0xMDQsNiArMTA0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
TG9hZE9ic2VydmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1NXQ29udGV4dE1hbmFnZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NjaGVt
ZVJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmg+CkBAIC0xNjQ3LDExICsxNjQ4
LDEwIEBAIHZvaWQgV2ViUHJvY2Vzczo6Z2V0V29ya2VyQ29udGV4dENvbm5lY3Rpb24oKQogCiB2
b2lkIFdlYlByb2Nlc3M6OnN0YXJ0U2VydmljZVdvcmtlckNvbnRleHQodWludDY0X3Qgc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0
YSkKIHsKLSAgICAvLyBGSVhNRTogSGVyZSBpcyB3aGVyZSB3ZSB3aWxsIGFjdHVhbGx5IHN0YXJ0
IHRoZSBzY3JpcHQuCi0gICAgLy8gRm9yIG5vdyB3ZSBib3VuY2UgYmFjayBhIGZhaWx1cmUgbWVz
c2FnZSB0byB0aGUgcmVxdWVzdGluZyBwcm9jZXNzIGZvciB0ZXN0IGNvdmVyYWdlLgotCi0gICAg
YXV0byBtZXNzYWdlID0gbWFrZVN0cmluZygiRmFpbGVkIHRvIHN0YXJ0IHNlcnZpY2Ugd29ya2Vy
IHNjcmlwdCBvZiBsZW5ndGggIiwgU3RyaW5nOjpudW1iZXIoZGF0YS5zY3JpcHQubGVuZ3RoKCkp
KTsKLSAgICBtX3dvcmtlckNvbnRleHRDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdl
UHJvY2Vzczo6U2VydmljZVdvcmtlckNvbnRleHRGYWlsZWRUb1N0YXJ0KHNlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyLCBkYXRhLnJlZ2lzdHJhdGlvbktleSwgZGF0YS53b3JrZXJJRCwgbWVzc2Fn
ZSksIDApOworICAgIGF1dG8gY29udGV4dFJlc3VsdCA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmds
ZXRvbigpLnN0YXJ0U2VydmljZVdvcmtlckNvbnRleHQoc2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIsIGRhdGEpOworICAgIAorICAgIGlmIChjb250ZXh0UmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQor
ICAgICAgICBtX3dvcmtlckNvbnRleHRDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdl
UHJvY2Vzczo6U2VydmljZVdvcmtlckNvbnRleHRGYWlsZWRUb1N0YXJ0KHNlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyLCBkYXRhLnJlZ2lzdHJhdGlvbktleSwgZGF0YS53b3JrZXJJRCwgY29udGV4
dFJlc3VsdC5leGNlcHRpb24oKS5tZXNzYWdlKCkpLCAwKTsKIH0KIAogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323639</attachid>
            <date>2017-10-12 22:57:09 -0700</date>
            <delta_ts>2017-10-12 23:44:50 -0700</delta_ts>
            <desc>PFL</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>43185</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkYzYyYzY3Zjc3OS4uOWE0YzRmMjRiNDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAxNy0xMC0xMiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAg
U1cgIkhlbGxvIHdvcmxkIi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3ODE4NworCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHkgRXN0ZXMuCisKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy1yZWdpc3Rlci1leGNlcHRp
b25zLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9i
YXNpYy1yZWdpc3Rlci1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJz
L3NlcnZpY2UvcmVnaXN0cmF0aW9uLXRhc2stcXVldWUtc2NoZWR1bGluZy0xLWV4cGVjdGVkLnR4
dDoKKwogMjAxNy0xMC0xMSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgTWFyayBodHRwL3Rlc3RzL2NhY2hlLXN0b3JhZ2UvY2FjaGUtY2xlYXJpbmcuaHR0
cHMuaHRtbCBhcyBmYWlsaW5nIG9uIFdpbmRvd3MuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy1yZWdpc3Rlci1leGNlcHRpb25zLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Jhc2ljLXJl
Z2lzdGVyLWV4Y2VwdGlvbnMtZXhwZWN0ZWQudHh0CmluZGV4IDg3YzVmYjI4MDI0Li4xZTE5NTNh
Mjc0OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uv
YmFzaWMtcmVnaXN0ZXItZXhjZXB0aW9ucy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvYmFzaWMtcmVnaXN0ZXItZXhjZXB0aW9ucy1leHBl
Y3RlZC50eHQKQEAgLTQsNyArNCw3IEBAIENPTlNPTEUgTUVTU0FHRTogbGluZSA0MDogUmVnaXN0
cmF0aW9uIGZhaWxlZCB3aXRoIGVycm9yOiBUeXBlRXJyb3I6IHNlcnZpY2VXb3JrCiBDT05TT0xF
IE1FU1NBR0U6IGxpbmUgNTA6IFJlZ2lzdHJhdGlvbiBmYWlsZWQgd2l0aCBlcnJvcjogVHlwZUVy
cm9yOiBzZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCkgbXVzdCBiZSBjYWxsZWQgd2l0aCBhIHNjcmlw
dCBVUkwgd2hvc2UgcGF0aCBkb2VzIG5vdCBjb250YWluICclMmYnIG9yICclNWMnCiBDT05TT0xF
IE1FU1NBR0U6IGxpbmUgNjA6IFJlZ2lzdHJhdGlvbiBmYWlsZWQgd2l0aCBlcnJvcjogVHlwZUVy
cm9yOiBTY29wZSBVUkwgcHJvdmlkZWQgdG8gc2VydmljZVdvcmtlci5yZWdpc3RlcigpIG11c3Qg
YmUgZWl0aGVyIEhUVFAgb3IgSFRUUFMKIENPTlNPTEUgTUVTU0FHRTogbGluZSA3MDogUmVnaXN0
cmF0aW9uIGZhaWxlZCB3aXRoIGVycm9yOiBUeXBlRXJyb3I6IFNjb3BlIFVSTCBwcm92aWRlZCB0
byBzZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCkgY2Fubm90IGhhdmUgYSBwYXRoIHRoYXQgY29udGFp
bnMgJyUyZicgb3IgJyU1YycKLUNPTlNPTEUgTUVTU0FHRTogbGluZSAxMDogUmVnaXN0cmF0aW9u
IGZhaWxlZCB3aXRoIGVycm9yOiBVbmtub3duRXJyb3I6IEZhaWxlZCB0byBzdGFydCBzZXJ2aWNl
IHdvcmtlciBzY3JpcHQgb2YgbGVuZ3RoIDAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxMDogUmVn
aXN0cmF0aW9uIGZhaWxlZCB3aXRoIGVycm9yOiBVbmtub3duRXJyb3I6IFdvcmtlciBzY3JpcHQg
c3VjY2Vzc2Z1bGx5IHN0YXJ0ZWQsIGJ1dCBpdCBoYXMgbm8gd2F5IHRvIGNvbW11bmljYXRlIHll
dAogQ09OU09MRSBNRVNTQUdFOiBsaW5lIDgwOiBSZWdpc3RyYXRpb24gZmFpbGVkIHdpdGggZXJy
b3I6IFNlY3VyaXR5RXJyb3I6IFNjcmlwdCBvcmlnaW4gZG9lcyBub3QgbWF0Y2ggdGhlIHJlZ2lz
dGVyaW5nIGNsaWVudCdzIG9yaWdpbgogQ09OU09MRSBNRVNTQUdFOiBsaW5lIDkxOiBSZWdpc3Ry
YXRpb24gZmFpbGVkIHdpdGggZXJyb3I6IFNlY3VyaXR5RXJyb3I6IFNjb3BlIG9yaWdpbiBkb2Vz
IG5vdCBtYXRjaCB0aGUgcmVnaXN0ZXJpbmcgY2xpZW50J3Mgb3JpZ2luCiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Jhc2ljLXJlZ2lzdGVyLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Jhc2lj
LXJlZ2lzdGVyLWV4cGVjdGVkLnR4dAppbmRleCA1MTMzYmIyZmNkOC4uZjIzMGFjYTA0MzMgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Jhc2ljLXJl
Z2lzdGVyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMv
c2VydmljZS9iYXNpYy1yZWdpc3Rlci1leHBlY3RlZC50eHQKQEAgLTEsMyArMSwzIEBACi1DT05T
T0xFIE1FU1NBR0U6IGxpbmUgMTA6IFJlZ2lzdHJhdGlvbiBmYWlsZWQgd2l0aCBlcnJvcjogVW5r
bm93bkVycm9yOiBGYWlsZWQgdG8gc3RhcnQgc2VydmljZSB3b3JrZXIgc2NyaXB0IG9mIGxlbmd0
aCA0MQotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDIxOiBSZWdpc3RyYXRpb24gZmFpbGVkIHdpdGgg
ZXJyb3I6IFVua25vd25FcnJvcjogRmFpbGVkIHRvIHN0YXJ0IHNlcnZpY2Ugd29ya2VyIHNjcmlw
dCBvZiBsZW5ndGggMAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDEwOiBSZWdpc3RyYXRpb24gZmFp
bGVkIHdpdGggZXJyb3I6IFVua25vd25FcnJvcjogV29ya2VyIHNjcmlwdCBzdWNjZXNzZnVsbHkg
c3RhcnRlZCwgYnV0IGl0IGhhcyBubyB3YXkgdG8gY29tbXVuaWNhdGUgeWV0CitDT05TT0xFIE1F
U1NBR0U6IGxpbmUgMjE6IFJlZ2lzdHJhdGlvbiBmYWlsZWQgd2l0aCBlcnJvcjogVW5rbm93bkVy
cm9yOiBXb3JrZXIgc2NyaXB0IHN1Y2Nlc3NmdWxseSBzdGFydGVkLCBidXQgaXQgaGFzIG5vIHdh
eSB0byBjb21tdW5pY2F0ZSB5ZXQKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93b3JrZXJzL3NlcnZpY2UvcmVnaXN0cmF0aW9uLXRhc2stcXVldWUtc2NoZWR1bGluZy0xLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3JlZ2lz
dHJhdGlvbi10YXNrLXF1ZXVlLXNjaGVkdWxpbmctMS1leHBlY3RlZC50eHQKaW5kZXggYzFhMDYz
NTA2MzkuLjAxMDIyNzAzMWNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dv
cmtlcnMvc2VydmljZS9yZWdpc3RyYXRpb24tdGFzay1xdWV1ZS1zY2hlZHVsaW5nLTEtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3JlZ2lz
dHJhdGlvbi10YXNrLXF1ZXVlLXNjaGVkdWxpbmctMS1leHBlY3RlZC50eHQKQEAgLTEsMiArMSwy
IEBACi1BTEVSVDogVW5leHBlY3RlZCBlcnJvciByZWNlaXZlZCBmcm9tIHNlcnZlcjogVW5rbm93
bkVycm9yOiBGYWlsZWQgdG8gc3RhcnQgc2VydmljZSB3b3JrZXIgc2NyaXB0IG9mIGxlbmd0aCA0
MQorQUxFUlQ6IFVuZXhwZWN0ZWQgZXJyb3IgcmVjZWl2ZWQgZnJvbSBzZXJ2ZXI6IFVua25vd25F
cnJvcjogV29ya2VyIHNjcmlwdCBzdWNjZXNzZnVsbHkgc3RhcnRlZCwgYnV0IGl0IGhhcyBubyB3
YXkgdG8gY29tbXVuaWNhdGUgeWV0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxNDg0ZjI0ZDRhNi4uYWVkZWNi
ZDA3YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MCBAQAorMjAxNy0xMC0xMiAgQnJhZHkgRWlk
c29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgU1cgIkhlbGxvIHdvcmxkIi4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3ODE4NworCisg
ICAgICAgIFJldmlld2VkIGJ5IEFuZHkgRXN0ZXMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChD
b3ZlcmVkIGJ5IGNoYW5nZXMgdG8gZXhpc3RpbmcgdGVzdHMpLgorCisgICAgICAgIFdpdGggdGhp
cyBwYXRjaCwgU1cgc2NyaXB0cyBhcmUgYWN0dWFsbHkgY29tcGlsZWQgYW5kIHJ1biBpbnNpZGUg
YSBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgZW52aXJvbm1lbnQKKyAgICAgICAgaW4gdGhlIFNX
IGNvbnRleHQgcHJvY2Vzcy4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKworICAgICAgICAqIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlw
dCk6CisKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluOgorCisgICAgICAgICog
d29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xv
YmFsU2NvcGU6OmlzU2VydmljZVdvcmtlckdsb2JhbFNjb3BlIGNvbnN0KToKKworICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
LmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6aXNvbGF0
ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNv
bnRleHREYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6
OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGE6OmRlY29kZSk6CisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckds
b2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZTo6U2VydmljZVdvcmtlckdsb2JhbFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZTo6flNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OnJlZ2lzdHJhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OmV2ZW50VGFyZ2V0SW50ZXJmYWNl
IGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OnNlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyIGNvbnN0KToKKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcC4KKyAgICAgICAgKFdl
YkNvcmU6OlNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3JlOjpT
V0NvbnRleHRNYW5hZ2VyOjpTV0NvbnRleHRNYW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlNX
Q29udGV4dE1hbmFnZXI6OnN0YXJ0U2VydmljZVdvcmtlckNvbnRleHQpOgorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaDogQ29waWVkIGZyb20gU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oLgor
CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5Ojpz
aGFyZWREdW1teVByb3h5KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWQ6
OlNlcnZpY2VXb3JrZXJUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6bV93b3JrZXJPYmplY3RQ
cm94eSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkOjp+U2VydmljZVdv
cmtlclRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkOjpjcmVh
dGVXb3JrZXJHbG9iYWxTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhy
ZWFkOjpydW5FdmVudExvb3ApOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJUaHJlYWQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oLgorICAgICAgICAoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlclRocmVhZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJUaHJlYWQ6Ondvcmtlck9iamVjdFByb3h5IGNvbnN0KToKKworICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6
OmNyZWF0ZVdvcmtlcik6CisKIDIwMTctMTAtMTEgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBh
cHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIyMzIxNS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA4YzQyYWE2Y2FiYi4uMmQyZDhmNDk2MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIzNTQsNiArMjM1NCw5IEBACiAJCTUx
N0E2M0M2MUI3NDMxOTIwMEU3RENEQyAvKiBLZXllZEVuY29kZXJDRi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3QTYzQzIxQjc0MzE3RTAwRTdEQ0RD
IC8qIEtleWVkRW5jb2RlckNGLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNTE3QjI1QTkxQ0M4MkIyQTAwNjFDMDExIC8qIElEQkNvbm5lY3Rpb25Q
cm94eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTdCMjVBNzFDQzgyMDMyMDA2MUMwMTEgLyogSURCQ29ubmVjdGlvblByb3h5LmNwcCAqLzsgfTsK
IAkJNTE3QjI1QUExQ0M4MkIyQTAwNjFDMDExIC8qIElEQkNvbm5lY3Rpb25Qcm94eS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3QjI1QTgxQ0M4MjAz
MjAwNjFDMDExIC8qIElEQkNvbm5lY3Rpb25Qcm94eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTUxN0M4NzBBMUY4RUJCMjUwMEVCODA3NiAvKiBT
V0NvbnRleHRNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxN0M4NzA4MUY4RUI5QkYwMEVCODA3NiAvKiBTV0NvbnRleHRNYW5hZ2VyLmNw
cCAqLzsgfTsKKwkJNTE3Qzg3MEIxRjhFQkIyNTAwRUI4MDc2IC8qIFNXQ29udGV4dE1hbmFnZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0M4NzA5
MUY4RUI5QzAwMEVCODA3NiAvKiBTV0NvbnRleHRNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTE3Qzg3MTgxRjhGRDREOTAwRUI4MDc2
IC8qIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdDODcxNjFGOEZENEQzMDBFQjgwNzYgLyogU2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhLmNwcCAqLzsgfTsKIAkJNTE3REVFRTUxREU5NEFEQzAwQjkxNjQ0
IC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0RFRUUzMURFOTRBREMwMEI5MTY0NCAvKiBT
Y3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMubW0gKi87IH07CiAJCTUxN0RFRUU4MURFOTRC
MDgwMEI5MTY0NCAvKiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0RFRUU3MURFOTRCMDgwMEI5
MTY0NCAvKiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTdGQkExRTE1MUFCMTdDMDBCNTc5
NTkgLyogRE9NV2luZG93RXh0ZW5zaW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0ZCQTE3MTUxQUE3MUIwMEI1Nzk1OSAvKiBET01XaW5kb3dF
eHRlbnNpb24uY3BwICovOyB9OwpAQCAtMjQ1Niw2ICsyNDU5LDggQEAKIAkJNTFCQTRBQ0ExQkJD
NUJEOTAwREYzRDZEIC8qIE1lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJBNEFDODFCQkM1QjlFMDBERjNENkQg
LyogTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcCAqLzsgfTsKIAkJNTFCQTRBQ0IxQkJDNUJEOTAw
REYzRDZEIC8qIE1lbW9yeUlEQkJhY2tpbmdTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFCQTRBQzkxQkJDNUI5RTAwREYzRDZEIC8qIE1lbW9y
eUlEQkJhY2tpbmdTdG9yZS5oICovOyB9OwogCQk1MUJBNEFDQzFCQkM1QkREMDBERjNENkQgLyog
SURCQmFja2luZ1N0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MUJBNEFDNzFCQkM1QUQ2MDBERjNENkQgLyogSURCQmFja2luZ1N0b3JlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTFCQ0NFMkYx
RjhGMTc5NTAwNkJBMEVEIC8qIFNlcnZpY2VXb3JrZXJUaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3Qzg3MTExRjhFRTcyRjAwRUI4MDc2
IC8qIFNlcnZpY2VXb3JrZXJUaHJlYWQuY3BwICovOyB9OworCQk1MUJDQ0UzMDFGOEYxNzlFMDA2
QkEwRUQgLyogU2VydmljZVdvcmtlclRocmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3Qzg3MTAxRjhFRTcyRTAwRUI4MDc2IC8qIFNlcnZpY2VX
b3JrZXJUaHJlYWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk1MUJFMzdFMDBEQUVFMDBFMDAxMDg1RkMgLyogU3RvcmFnZUFyZWEuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkUzN0RFMERBRUUwMEUw
MDEwODVGQyAvKiBTdG9yYWdlQXJlYS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTUxQzBBQTM5MEYyQUExMEEwMDE2NDhDMiAvKiBDYWNoZWRGcmFt
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFDMEFB
MzgwRjJBQTEwQTAwMTY0OEMyIC8qIENhY2hlZEZyYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFDMEFBNDEwRjJBQTE1RTAwMTY0OEMyIC8q
IENhY2hlZEZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxQzBBQTQwMEYyQUExNUUwMDE2NDhDMiAvKiBDYWNoZWRGcmFtZS5jcHAgKi87IH07
CkBAIC0xMDI5Miw2ICsxMDI5NywxMSBAQAogCQk1MTdBNjNDMjFCNzQzMTdFMDBFN0RDREMgLyog
S2V5ZWRFbmNvZGVyQ0YuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gS2V5ZWRF
bmNvZGVyQ0YuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3QjI1QTcxQ0M4MjAz
MjAwNjFDMDExIC8qIElEQkNvbm5lY3Rpb25Qcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBJREJDb25uZWN0aW9uUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MTdCMjVBODFDQzgyMDMyMDA2MUMwMTEgLyogSURCQ29ubmVjdGlvblBy
b3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQkNvbm5lY3Rpb25Qcm94
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTdDODcwODFGOEVCOUJGMDBFQjgw
NzYgLyogU1dDb250ZXh0TWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBTV0NvbnRleHRNYW5hZ2VyLmNwcDsgcGF0aCA9IHdvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJ
CTUxN0M4NzA5MUY4RUI5QzAwMEVCODA3NiAvKiBTV0NvbnRleHRNYW5hZ2VyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNXQ29udGV4dE1hbmFnZXIuaDsgcGF0aCA9IHdvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaDsgc291cmNlVHJlZSA9IFNPVVJD
RV9ST09UOyB9OworCQk1MTdDODcxMDFGOEVFNzJFMDBFQjgwNzYgLyogU2VydmljZVdvcmtlclRo
cmVhZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTZXJ2aWNlV29ya2VyVGhy
ZWFkLmg7IHBhdGggPSB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFk
Lmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJNTE3Qzg3MTExRjhFRTcyRjAwRUI4
MDc2IC8qIFNlcnZpY2VXb3JrZXJUaHJlYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gU2VydmljZVdvcmtlclRocmVhZC5jcHA7IHBhdGggPSB3b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcDsgc291cmNlVHJlZSA9IFNPVVJDRV9S
T09UOyB9OworCQk1MTdDODcxNjFGOEZENEQzMDBFQjgwNzYgLyogU2VydmljZVdvcmtlckNvbnRl
eHREYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0RF
RUUzMURFOTRBREMwMEI5MTY0NCAvKiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTY3JvbGxpbmdNb21lbnR1
bUNhbGN1bGF0b3JNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0RFRUU3
MURFOTRCMDgwMEI5MTY0NCAvKiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9y
TWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0ZCQTE3MTUxQUE3MUIwMEI1
Nzk1OSAvKiBET01XaW5kb3dFeHRlbnNpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRE9NV2luZG93RXh0ZW5zaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE5MTM4LDYgKzE5MTQ4LDE3IEBACiAJCQlwYXRoID0gc2VydmVyOwogCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJNTE3Qzg3MDcxRjhFOEZGMjAwRUI4MDc2IC8q
IGNvbnRleHQgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJ
CTUxN0M4NzA4MUY4RUI5QkYwMEVCODA3NiAvKiBTV0NvbnRleHRNYW5hZ2VyLmNwcCAqLywKKwkJ
CQk1MTdDODcwOTFGOEVCOUMwMDBFQjgwNzYgLyogU1dDb250ZXh0TWFuYWdlci5oICovLAorCQkJ
CTUxN0M4NzExMUY4RUU3MkYwMEVCODA3NiAvKiBTZXJ2aWNlV29ya2VyVGhyZWFkLmNwcCAqLywK
KwkJCQk1MTdDODcxMDFGOEVFNzJFMDBFQjgwNzYgLyogU2VydmljZVdvcmtlclRocmVhZC5oICov
LAorCQkJKTsKKwkJCXBhdGggPSBjb250ZXh0OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
KwkJfTsKIAkJNTE4MkMyNEMxRjMxNDIwOTAwNTlCQTdDIC8qIFNlcnZpY2VXb3JrZXJzICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTE5MjE4LDYgKzE5MjM5
LDcgQEAKIAkJNTFGMTc1NDQxRjNFQkJGMjAwQzc0OTUwIC8qIHNlcnZpY2UgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTUxN0M4NzA3MUY4RThGRjIwMEVC
ODA3NiAvKiBjb250ZXh0ICovLAogCQkJCTUxN0E1MkVDMUY0NzUzMkQwMERDREMwQSAvKiBzZXJ2
ZXIgKi8sCiAJCQkJNTFGMTc1NUIxRjNFQkMwQzAwQzc0OTUwIC8qIFNlcnZpY2VXb3JrZXIuY3Bw
ICovLAogCQkJCTUxRjE3NTVBMUYzRUJDMEMwMEM3NDk1MCAvKiBTZXJ2aWNlV29ya2VyLmggKi8s
CkBAIC0xOTIyNSw2ICsxOTI0Nyw3IEBACiAJCQkJNTFGMTc1NTgxRjNFQkMwQzAwQzc0OTUwIC8q
IFNlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwICovLAogCQkJCTUxRjE3NTU3MUYzRUJDMEMwMEM3
NDk1MCAvKiBTZXJ2aWNlV29ya2VyQ29udGFpbmVyLmggKi8sCiAJCQkJNTFGMTc1NTYxRjNFQkMw
QzAwQzc0OTUwIC8qIFNlcnZpY2VXb3JrZXJDb250YWluZXIuaWRsICovLAorCQkJCTUxN0M4NzE2
MUY4RkQ0RDMwMEVCODA3NiAvKiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwICovLAogCQkJ
CTUxQ0E3RUU3MUY4ODMyRTAwMDNEMzEzMSAvKiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaCAq
LywKIAkJCQk1MTdBNTM1QzFGNTg5OUYyMDBEQ0RDMEEgLyogU2VydmljZVdvcmtlckZldGNoUmVz
dWx0LmggKi8sCiAJCQkJNTFGMTc1NTUxRjNFQkMwQzAwQzc0OTUwIC8qIFNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZS5jcHAgKi8sCkBAIC0yODYzNiw2ICsyODY1OSw3IEBACiAJCQkJN0M4MTM5QUEx
RUQ2NjA0QjAwQ0UyNkU4IC8qIEpTRE9NQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQxM0MyQzM0MUJDMjlBOEYwMDc1MjA0QyAvKiBKU0RPTUNvbnN0cnVjdG9y
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzA4NDEzNDFDRERCMTU1MDBCMDk1OEMgLyogSlNET01D
b252ZXJ0LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTdDODcwQjFGOEVCQjI1MDBFQjgwNzYgLyog
U1dDb250ZXh0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M4RTM0QUQxRTRBMzNBRjAw
NTRDRTIzIC8qIEpTRE9NQ29udmVydEFueS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M4RTM0QUUx
RTRBMzNBRjAwNTRDRTIzIC8qIEpTRE9NQ29udmVydEJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTdDOEUzNEFGMUU0QTMzQUYwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRCb29sZWFuLmggaW4gSGVh
ZGVycyAqLywKQEAgLTMwNDIxLDYgKzMwNDQ1LDcgQEAKIAkJCQlCMjIyNzlDNTBEMDBCRjIyMDA3
MUI3ODIgLyogU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQjIyMjc5QzgwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFQmxlbmRFbGVtZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCMjIyNzlDQjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVDb2xvck1hdHJp
eEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxQkNDRTMwMUY4RjE3OUUwMDZCQTBFRCAv
KiBTZXJ2aWNlV29ya2VyVGhyZWFkLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzlDRTBEMDBC
RjIyMDA3MUI3ODIgLyogU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUIyMjI3OUQxMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRUNvbXBvc2l0ZUVsZW1l
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTE5MjEzMjc1MTFDMEU2QkIwMDQ1NjIzOCAvKiBTVkdG
RUNvbnZvbHZlTWF0cml4RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTU5OSw2ICszMTYy
NCw3IEBACiAJCQkJNDFEMTI5Q0YxRjNEMEVGRTAwRDE1RTQ3IC8qIENhY2hlU3RvcmFnZUNvbm5l
Y3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTQzQUY4RTYxQUM1QjdFODAwQ0E3MTdFIC8q
IENhY2hlVmFsaWRhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUFFMkQ5NjEzNEVFNUY5
MDA3MjkyMEEgLyogQ2FsY3VsYXRpb25WYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTdD
ODcxODFGOEZENEQ5MDBFQjgwNzYgLyogU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTk1MjA3NjA0MUYyNjc1RkUwMDdEMkFBQiAvKiBDYWxsVHJhY2VyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTQxNUNEQUY0MUU2QjhGODcwMDRGMTFFRSAvKiBDYW52YXND
YXB0dXJlTWVkaWFTdHJlYW1UcmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OTQ4NEZDMTEw
MkNGMjNDMDAxODdERDMgLyogQ2FudmFzR3JhZGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0z
MjI0MSw2ICszMjI2Nyw3IEBACiAJCQkJOTZBQkE0MjMxNEJDQjgwRTAwRDU2MjA0IC8qIEdyYXBo
aWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyRUQ5Nzcx
MEIxRjU1Q0UwMDI1N0QwRiAvKiBHcmFwaGljc0NvbnRleHRDRy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCMjc3QjQwNDBCMjJGMzdDMDAwNEJFQzYgLyogR3JhcGhpY3NDb250ZXh0Q29jb2EubW0g
aW4gU291cmNlcyAqLywKKwkJCQk1MUJDQ0UyRjFGOEYxNzk1MDA2QkEwRUQgLyogU2VydmljZVdv
cmtlclRocmVhZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjU4MEIwQzBGMTJBMjY5MDA1MUQ2
ODkgLyogR3JhcGhpY3NMYXllci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OTlCM0VENjEyOENE
MzE0MDBFNzI2QzIgLyogR3JhcGhpY3NMYXllckNBLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
QTI0RDc5MTYyREY5MTkwMEEzRjRDMCAvKiBHcmFwaGljc0xheWVyVXBkYXRlci5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTMzNTU0LDYgKzMzNTgxLDcgQEAKIAkJCQlDOTZGNUVDNjFCNTg3MjI2MDA5
MUVBOUQgLyogTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWMubW0gaW4gU291cmNl
cyAqLywKIAkJCQlDOTBGNjU1NTFCMjI1M0IxMDAyMTYzQTEgLyogTWVkaWFTZXNzaW9uTWFuYWdl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDY2OUQ2ODFEMjMzNjRCMDA0RDE4NjYgLyogTWVk
aWFTZXNzaW9uTWFuYWdlckNvY29hLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxN0M4NzBBMUY4
RUJCMjUwMEVCODA3NiAvKiBTV0NvbnRleHRNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTA3NjM4QTlBMTg4NDQ4NzIwMEUxNUExQiAvKiBNZWRpYVNlc3Npb25NYW5hZ2VySU9TLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMDdFREMzRUUxQUFDQjc1RDAwOTgzRUI1IC8qIE1lZGlhU2Vzc2lv
bk1hbmFnZXJNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDNBNDk1RTE3QTlEMDFCMDAyNzRF
NDIgLyogTWVkaWFTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDRkZDE2
NmFkMmNhLi43ZjZmMjg0ZmM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNs
dWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RlZGljYXRlZFdvcmtlckdsb2JhbFNj
b3BlLmgiCiAjaW5jbHVkZSAiSlNFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgIkpTU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgogI2luY2x1
ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlICJXb3JrZXJDb25zb2xlQ2xpZW50
LmgiCkBAIC05Miw3ICs5MywyNiBAQCB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmluaXRT
Y3JpcHQoKQogCiAgICAgICAgIHByb3h5LT5zZXRUYXJnZXQoKm1fdm0sIG1fd29ya2VyR2xvYmFs
U2NvcGVXcmFwcGVyLmdldCgpKTsKICAgICAgICAgcHJveHktPnN0cnVjdHVyZSgpLT5zZXRHbG9i
YWxPYmplY3QoKm1fdm0sIG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpKTsKKyNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgfSBlbHNlIGlmIChtX3dvcmtlckdsb2JhbFNjb3Bl
LT5pc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSgpKSB7CisgICAgICAgIFN0cnVjdHVyZSogY29u
dGV4dFByb3RvdHlwZVN0cnVjdHVyZSA9IEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlUHJvdG90
eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoKm1fdm0sIG51bGxwdHIsIGpzTnVsbCgpKTsKKyAgICAgICAg
U3Ryb25nPEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlUHJvdG90eXBlPiBjb250ZXh0UHJvdG90
eXBlKCptX3ZtLCBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZVByb3RvdHlwZTo6Y3JlYXRlKCpt
X3ZtLCBudWxscHRyLCBjb250ZXh0UHJvdG90eXBlU3RydWN0dXJlKSk7CisgICAgICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OmNyZWF0ZVN0cnVj
dHVyZSgqbV92bSwgbnVsbHB0ciwgY29udGV4dFByb3RvdHlwZS5nZXQoKSk7CisgICAgICAgIGF1
dG8qIHByb3h5U3RydWN0dXJlID0gSlNQcm94eTo6Y3JlYXRlU3RydWN0dXJlKCptX3ZtLCBudWxs
cHRyLCBqc051bGwoKSwgUHVyZUZvcndhcmRpbmdQcm94eVR5cGUpOworICAgICAgICBhdXRvKiBw
cm94eSA9IEpTUHJveHk6OmNyZWF0ZSgqbV92bSwgcHJveHlTdHJ1Y3R1cmUpOworICAgIAorICAg
ICAgICBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5zZXQoKm1fdm0sIEpTU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlOjpjcmVhdGUoKm1fdm0sIHN0cnVjdHVyZSwgc3RhdGljX2Nhc3Q8U2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlJj4oKm1fd29ya2VyR2xvYmFsU2NvcGUpLCBwcm94eSkpOworICAg
ICAgICBjb250ZXh0UHJvdG90eXBlU3RydWN0dXJlLT5zZXRHbG9iYWxPYmplY3QoKm1fdm0sIG1f
d29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpKTsKKyAgICAgICAgQVNTRVJUKHN0cnVjdHVy
ZS0+Z2xvYmFsT2JqZWN0KCkgPT0gbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIpOworICAgICAg
ICBBU1NFUlQobV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXItPnN0cnVjdHVyZSgpLT5nbG9iYWxP
YmplY3QoKSA9PSBtX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlcik7CisgICAgICAgIGNvbnRleHRQ
cm90b3R5cGUtPnN0cnVjdHVyZSgpLT5zZXRHbG9iYWxPYmplY3QoKm1fdm0sIG1fd29ya2VyR2xv
YmFsU2NvcGVXcmFwcGVyLmdldCgpKTsKKyAgICAgICAgY29udGV4dFByb3RvdHlwZS0+c3RydWN0
dXJlKCktPnNldFByb3RvdHlwZVdpdGhvdXRUcmFuc2l0aW9uKCptX3ZtLCBKU1dvcmtlckdsb2Jh
bFNjb3BlOjpwcm90b3R5cGUoKm1fdm0sICptX3dvcmtlckdsb2JhbFNjb3BlV3JhcHBlci5nZXQo
KSkpOworCisgICAgICAgIHByb3h5LT5zZXRUYXJnZXQoKm1fdm0sIG1fd29ya2VyR2xvYmFsU2Nv
cGVXcmFwcGVyLmdldCgpKTsKKyAgICAgICAgcHJveHktPnN0cnVjdHVyZSgpLT5zZXRHbG9iYWxP
YmplY3QoKm1fdm0sIG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyLmdldCgpKTsKKyNlbmRpZgog
ICAgIH0KKyAgICAKICAgICBBU1NFUlQobV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXItPmdsb2Jh
bE9iamVjdCgpID09IG1fd29ya2VyR2xvYmFsU2NvcGVXcmFwcGVyKTsKICAgICBBU1NFUlQoYXNP
YmplY3QobV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXItPmdldFByb3RvdHlwZURpcmVjdCgpKS0+
Z2xvYmFsT2JqZWN0KCkgPT0gbV93b3JrZXJHbG9iYWxTY29wZVdyYXBwZXIpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluIGIvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgppbmRleCBkYjJmMjkwN2Y3ZC4uYmExZTFh
MDA0MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3Rvcnku
aW4KKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgpAQCAtMzIs
NiArMzIsNyBAQCBSVENEVE1GU2VuZGVyIGNvbmRpdGlvbmFsPVdFQl9SVENfRFRNRgogUlRDUGVl
ckNvbm5lY3Rpb24gY29uZGl0aW9uYWw9V0VCX1JUQwogU2VydmljZVdvcmtlciBjb25kaXRpb25h
bD1TRVJWSUNFX1dPUktFUgogU2VydmljZVdvcmtlckNvbnRhaW5lciBjb25kaXRpb25hbD1TRVJW
SUNFX1dPUktFUgorU2VydmljZVdvcmtlckdsb2JhbFNjb3BlIGNvbmRpdGlvbmFsPVNFUlZJQ0Vf
V09SS0VSCiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uIGNvbmRpdGlvbmFsPVNFUlZJQ0VfV09S
S0VSCiBTb3VyY2VCdWZmZXIgY29uZGl0aW9uYWw9TUVESUFfU09VUkNFCiBTb3VyY2VCdWZmZXJM
aXN0IGNvbmRpdGlvbmFsPU1FRElBX1NPVVJDRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJHbG9iYWxTY29wZS5oCmluZGV4IGE1Y2U0M2U5OTA3Li4zM2FiYmUyOGJhMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaApAQCAtNTksNiArNTksNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB+V29ya2VyR2xvYmFsU2NvcGUoKTsKIAogICAgIHZpcnR1YWwg
Ym9vbCBpc0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQogCiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX3VybDsgfQogICAgIFN0cmluZyBvcmlnaW4oKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjNjZDJkM2ZkNzgz
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YS5jcHAKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaCIK
KworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjppc29sYXRl
ZENvcHkoKSBjb25zdAoreworICAgIHJldHVybiB7IHJlZ2lzdHJhdGlvbktleS5pc29sYXRlZENv
cHkoKSwgd29ya2VySUQuaXNvbGF0ZWRDb3B5KCksIHNjcmlwdC5pc29sYXRlZENvcHkoKSwgc2Ny
aXB0VVJMLmlzb2xhdGVkQ29weSgpIH07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaAppbmRleCA3
YzYzOWU3ODUwMS4uYTg3MTNiMzRmMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmgKQEAgLTI2LDYgKzI2
LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bktleS5oIgorI2luY2x1ZGUgIlVSTC5oIgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQog
CkBAIC0zNSwxNSArMzYsMTggQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSB7CiAg
ICAgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSByZWdpc3RyYXRpb25LZXk7CiAgICAgU3Ry
aW5nIHdvcmtlcklEOwogICAgIFN0cmluZyBzY3JpcHQ7CisgICAgVVJMIHNjcmlwdFVSTDsKICAg
ICAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29u
c3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2Vy
dmljZVdvcmtlckNvbnRleHREYXRhPiBkZWNvZGUoRGVjb2RlciYpOworICAgIAorICAgIFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YSBpc29sYXRlZENvcHkoKSBjb25zdDsKIH07CiAKIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+CiB2b2lkIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2RlciA8PCByZWdpc3RyYXRpb25LZXkg
PDwgd29ya2VySUQgPDwgc2NyaXB0OworICAgIGVuY29kZXIgPDwgcmVnaXN0cmF0aW9uS2V5IDw8
IHdvcmtlcklEIDw8IHNjcmlwdCA8PCBzY3JpcHRVUkw7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+CkBAIC02MSw3ICs2NSwxMSBAQCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YT4gU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpkZWNvZGUoRGVjb2RlcgogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoc2NyaXB0KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAKLSAgICByZXR1cm4ge3sgV1RGTW92ZSgqcmVnaXN0cmF0aW9uS2V5KSwgV1RGTW92ZSh3
b3JrZXJJRCksIFdURk1vdmUoc2NyaXB0KSB9fTsKKyAgICBVUkwgc2NyaXB0VVJMOworICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoc2NyaXB0VVJMKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKworICAgIHJldHVybiB7eyBXVEZNb3ZlKCpyZWdpc3RyYXRpb25LZXkpLCBXVEZNb3ZlKHdv
cmtlcklEKSwgV1RGTW92ZShzY3JpcHQpLCBXVEZNb3ZlKHNjcmlwdFVSTCkgfX07CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggZmQ0OGFlMjhm
MDEuLjE0NjdjZTk1YjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtMjgsMTcgKzI4LDM2
IEBACiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKKyNpbmNsdWRlICJTZXJ2aWNlV29y
a2VyVGhyZWFkLmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlOjpTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUodWludDY0X3Qgc2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0YSwgY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1c2VyQWdl
bnQsIFNlcnZpY2VXb3JrZXJUaHJlYWQmIHRocmVhZCwgYm9vbCBzaG91bGRCeXBhc3NNYWluV29y
bGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4s
IE1vbm90b25pY1RpbWUgdGltZU9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkq
IGNvbm5lY3Rpb25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyLCBQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQpCisgICAgOiBXb3JrZXJHbG9iYWxTY29wZSh1cmwsIGlkZW50aWZp
ZXIsIHVzZXJBZ2VudCwgdGhyZWFkLCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJp
dHlQb2xpY3ksIFdURk1vdmUodG9wT3JpZ2luKSwgdGltZU9yaWdpbiwgY29ubmVjdGlvblByb3h5
LCBzb2NrZXRQcm92aWRlciwgc2Vzc2lvbklEKQorICAgICwgbV9zZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllcihzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikKKyAgICAsIG1fY29udGV4dERhdGEo
Y3Jvc3NUaHJlYWRDb3B5KGRhdGEpKQoreworfQorCitTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6
On5TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoKQoreworfQorCiBTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uJiBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OnJlZ2lzdHJhdGlvbigpCiB7Ci0gICAg
cmV0dXJuIG1fcmVnaXN0cmF0aW9uOworICAgIC8vIEZJWE1FOiBJcyB0aGlzIG1ldGhvZCBzdGls
bCBuZWVkZWQ/CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAogdm9pZCBT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OnNraXBXYWl0aW5nKFJlZjxEZWZlcnJlZFByb21pc2U+
JiYpCiB7CiB9CiAKK0V2ZW50VGFyZ2V0SW50ZXJmYWNlIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZTo6ZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdAoreworICAgIHJldHVybiBTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGVFdmVudFRhcmdldEludGVyZmFjZVR5cGU7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUuaAppbmRleCBjNTJlMjQxNjY3Ny4uMzc3OTYzYjNjNWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
LmgKQEAgLTI3LDIyICsyNywzOSBAQAogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCisj
aW5jbHVkZSAiU2VydmljZVdvcmtlckNvbnRleHREYXRhLmgiCiAjaW5jbHVkZSAiU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbi5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRGVmZXJyZWRQcm9taXNlOwotY2xhc3MgU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbjsKK2NsYXNzIFNlcnZpY2VXb3JrZXJUaHJlYWQ7CiAKIGNsYXNz
IFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSA6IHB1YmxpYyBXb3JrZXJHbG9iYWxTY29wZSB7CiBw
dWJsaWM6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4gc3RhdGljIFJlZjxTZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGU+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShzdGQ6OmZvcndh
cmQ8QXJncz4oYXJncykuLi4pKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5TZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUoKTsKKworICAgIGJvb2wgaXNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoKSBj
b25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisKICAgICBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uJiByZWdpc3RyYXRpb24oKTsKKyAgICAKKyAgICB1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXI7
IH0KIAogICAgIHZvaWQgc2tpcFdhaXRpbmcoUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAKKyAg
ICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IGZpbmFs
OworCiBwcml2YXRlOgotICAgIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24gbV9yZWdpc3RyYXRp
b247CisgICAgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmLCBjb25zdCBVUkwm
LCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBTZXJ2
aWNlV29ya2VyVGhyZWFkJiwgYm9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJp
dHlQb2xpY3ksIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4sIE1vbm90b25pY1RpbWUg
dGltZU9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92aWRl
ciosIFBBTDo6U2Vzc2lvbklEKTsKKworICAgIHVpbnQ2NF90IG1fc2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXI7CisgICAgU2VydmljZVdvcmtlckNvbnRleHREYXRhIG1fY29udGV4dERhdGE7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iNGRkMGNkN2YxMQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1h
bmFnZXIuY3BwCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiU1dDb250ZXh0TWFuYWdlci5oIgorCisjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQu
aD4KKwordXNpbmcgbmFtZXNwYWNlIFBBTDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTV0Nv
bnRleHRNYW5hZ2VyJiBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKQoreworICAgIHN0YXRp
YyBTV0NvbnRleHRNYW5hZ2VyKiBzaGFyZWRNYW5hZ2VyID0gbmV3IFNXQ29udGV4dE1hbmFnZXI7
CisgICAgcmV0dXJuICpzaGFyZWRNYW5hZ2VyOworfQorCitTV0NvbnRleHRNYW5hZ2VyOjpTV0Nv
bnRleHRNYW5hZ2VyKCkKK3sKKworfQorCitFeGNlcHRpb25Pcjx1aW50NjRfdD4gU1dDb250ZXh0
TWFuYWdlcjo6c3RhcnRTZXJ2aWNlV29ya2VyQ29udGV4dCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiBkYXRhKQorewor
ICAgIC8vIEZJWE1FOiBQcm92aWRlIGEgc2Vuc2ljYWwgc2Vzc2lvbiBJRAorCisgICAgYXV0byB0
aHJlYWQgPSBTZXJ2aWNlV29ya2VyVGhyZWFkOjpjcmVhdGUoc2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIsIGRhdGEsIFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKKyAgICBhdXRvIHJl
c3VsdCA9IG1fd29ya2VyVGhyZWFkTWFwLmFkZCh0aHJlYWQtPmlkZW50aWZpZXIoKSwgV1RGTW92
ZSh0aHJlYWQpKTsKKyAgICBBU1NFUlQocmVzdWx0LmlzTmV3RW50cnkpOworCisgICAgcmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZS0+c3RhcnQoKTsKKyAgICAKKyAgICBMT0coU2VydmljZVdvcmtlciwg
IkNvbnRleHQgcHJvY2VzcyBQSUQ6ICVpIHN0YXJ0ZWQgd29ya2VyIHRocmVhZCAlc1xuIiwgZ2V0
cGlkKCksIGRhdGEud29ya2VySUQudXRmOCgpLmRhdGEoKSk7CisgICAgCisgICAgLy8gRklYTUU6
IEZvciB0ZXN0aW5nIHB1cnBvc2VzIHdlIG5lZWQgdG8gc2lnbmFsIGEgZmFpbHVyZSB3aXRoIGFu
IGV4Y2VwdGlvbiBwYXlsb2FkLgorICAgIC8vIExhdGVyIHdpdGggbW9yZSBBUElzIGFuZCBpbmZy
YXN0cnVjdHVyZSBmaWxsZWQgaW4sIHRlc3Rpbmcgd2lsbCBiZSBtdWNoIGVhc2llci4KKyAgICAK
KyAgICByZXR1cm4gRXhjZXB0aW9uIHsgVW5rbm93bkVycm9yLCAiV29ya2VyIHNjcmlwdCBzdWNj
ZXNzZnVsbHkgc3RhcnRlZCwgYnV0IGl0IGhhcyBubyB3YXkgdG8gY29tbXVuaWNhdGUgeWV0IiB9
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TV0NvbnRleHRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAuLmUxNWQ3ZTY5ODIzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCkBAIC0wLDAgKzEsNTIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKKworI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlclRo
cmVhZC5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
Kworc3RydWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTsKKworY2xhc3MgU1dDb250ZXh0TWFu
YWdlciB7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFNXQ29udGV4dE1hbmFn
ZXImIHNpbmdsZXRvbigpOworCisgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8dWludDY0
X3Q+IHN0YXJ0U2VydmljZVdvcmtlckNvbnRleHQodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYpOworCitwcml2YXRlOgor
ICAgIFNXQ29udGV4dE1hbmFnZXIoKTsKKyAgICAKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQ
dHI8U2VydmljZVdvcmtlclRocmVhZD4+IG1fd29ya2VyVGhyZWFkTWFwOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlclRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
ZXJ2aWNlV29ya2VyVGhyZWFkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMC4uZjUzZDAxZGFmMjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcApAQCAtMCwwICsxLDk2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNlcnZpY2VX
b3JrZXJUaHJlYWQuaCIKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKworI2luY2x1ZGUg
IkNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5oIgorI2luY2x1ZGUgIlNlY3Vy
aXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5j
bHVkZSAiV29ya2VyTG9hZGVyUHJveHkuaCIKKyNpbmNsdWRlICJXb3JrZXJPYmplY3RQcm94eS5o
IgorI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KKyNpbmNsdWRlIDxydW50aW1lL1J1bnRpbWVG
bGFncy5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCit1c2luZyBuYW1lc3Bh
Y2UgUEFMOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eSA6IHB1YmxpYyBXb3JrZXJMb2FkZXJQcm94eSwgcHVibGljIFdvcmtlck9iamVjdFBy
b3h5IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgU2VydmljZVdvcmtlclRocmVhZFByb3h5JiBzaGFy
ZWREdW1teVByb3h5KCkKKyAgICB7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHk+IHByb3h5OworICAgICAgICByZXR1cm4gcHJveHk7CisgICAg
fQorCitwcml2YXRlOgorICAgIHZvaWQgcG9zdFRhc2tUb0xvYWRlcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpUYXNrJiYpIGZpbmFsIHsgfTsKKyAgICBib29sIHBvc3RUYXNrRm9yTW9kZVRvV29y
a2VyR2xvYmFsU2NvcGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmLCBjb25zdCBTdHJp
bmcmKSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfTsKKyAgICB2b2lkIHBvc3RFeGNlcHRpb25Ub1dv
cmtlck9iamVjdChjb25zdCBTdHJpbmcmLCBpbnQsIGludCwgY29uc3QgU3RyaW5nJikgZmluYWwg
eyB9OworICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1BhZ2VJbnNwZWN0b3IoY29uc3QgU3RyaW5nJikg
ZmluYWwgeyB9OworICAgIHZvaWQgd29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWQoKSBmaW5hbCB7
IH07CisgICAgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KFJlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+JiYsIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4p
IGZpbmFsIHsgfTsKKyAgICB2b2lkIGNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChib29s
KSBmaW5hbCB7IH07CisgICAgdm9pZCByZXBvcnRQZW5kaW5nQWN0aXZpdHkoYm9vbCkgZmluYWwg
eyB9OworfTsKKworLy8gRklYTUU6IFVzZSBhIHZhbGlkIFdvcmtlckxvYWRlclByb3h5CisvLyBG
SVhNRTogVXNlIGEgdmFsaWQgV29ya2VyUmVwb3J0aW5nUHJveHkKKy8vIEZJWE1FOiBVc2UgYSB2
YWxpZCBXb3JrZXJPYmplY3RQcm94eQorLy8gRklYTUU6IFVzZSBhIHZhbGlkIElEQkNvbm5lY3Rp
b24KKy8vIEZJWE1FOiBVc2UgYSB2YWxpZCBTb2NrZXRQcm92aWRlcgorLy8gRklYTUU6IFVzZSBh
IHZhbGlkIHVzZXIgYWdlbnQKKy8vIEZJWE1FOiBVc2UgdmFsaWQgcnVudGltZSBmbGFncworCitT
ZXJ2aWNlV29ya2VyVGhyZWFkOjpTZXJ2aWNlV29ya2VyVGhyZWFkKHVpbnQ2NF90IHNlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEs
IFBBTDo6U2Vzc2lvbklEKQorICAgIDogV29ya2VyVGhyZWFkKGRhdGEuc2NyaXB0VVJMLCBkYXRh
LndvcmtlcklELCBBU0NJSUxpdGVyYWwoIldvcmtlclVzZXJBZ2VudCIpLCBkYXRhLnNjcmlwdCwg
U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpzaGFyZWREdW1teVByb3h5KCksIFNlcnZpY2VXb3Jr
ZXJUaHJlYWRQcm94eTo6c2hhcmVkRHVtbXlQcm94eSgpLCBXb3JrZXJUaHJlYWRTdGFydE1vZGU6
Ok5vcm1hbCwgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzIHsgfSwgZmFsc2Us
IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoZGF0YS5zY3JpcHRVUkwpLmdldCgpLCBNb25vdG9uaWNU
aW1lOjpub3coKSwgbnVsbHB0ciwgbnVsbHB0ciwgSlNDOjpSdW50aW1lRmxhZ3M6OmNyZWF0ZUFs
bEVuYWJsZWQoKSwgU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpCisgICAgLCBtX3NlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyKHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKQorICAgICwg
bV9kYXRhKGRhdGEuaXNvbGF0ZWRDb3B5KCkpCisgICAgLCBtX3dvcmtlck9iamVjdFByb3h5KFNl
cnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6c2hhcmVkRHVtbXlQcm94eSgpKQoreworfQorCitTZXJ2
aWNlV29ya2VyVGhyZWFkOjp+U2VydmljZVdvcmtlclRocmVhZCgpCit7Cit9CisKK1JlZjxXb3Jr
ZXJHbG9iYWxTY29wZT4gU2VydmljZVdvcmtlclRocmVhZDo6Y3JlYXRlV29ya2VyR2xvYmFsU2Nv
cGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiB1c2VyQWdlbnQsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYs
IGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBSZWY8U2Vj
dXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBNb25vdG9uaWNUaW1lIHRpbWVPcmlnaW4sIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkKK3sKKyAgICByZXR1cm4gU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlOjpjcmVhdGUobV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgbV9kYXRhLCB1cmwsIGlk
ZW50aWZpZXIsIHVzZXJBZ2VudCwgKnRoaXMsIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRT
ZWN1cml0eVBvbGljeSwgV1RGTW92ZSh0b3BPcmlnaW4pLCB0aW1lT3JpZ2luLCBpZGJDb25uZWN0
aW9uUHJveHkoKSwgc29ja2V0UHJvdmlkZXIoKSwgc2Vzc2lvbklEKTsKK30KKwordm9pZCBTZXJ2
aWNlV29ya2VyVGhyZWFkOjpydW5FdmVudExvb3AoKQoreworICAgIC8vIEZJWE1FOiBUaGVyZSB3
aWxsIGJlIFNlcnZpY2VXb3JrZXIgc3BlY2lmaWMgdGhpbmdzIHRvIGRvIGhlcmUuCisgICAgV29y
a2VyVGhyZWFkOjpydW5FdmVudExvb3AoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yMmEwN2I4OWY1OQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJUaHJlYWQuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKKyNpbmNsdWRlICJTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEuaCIKKyNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKKyNpbmNsdWRl
IDx3dGYvSWRlbnRpZmllZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENvbnRl
bnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVyczsKK2NsYXNzIFdvcmtlck9iamVjdFByb3h5
Oworc3RydWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTsKKworY2xhc3MgU2VydmljZVdvcmtl
clRocmVhZCA6IHB1YmxpYyBXb3JrZXJUaHJlYWQsIHB1YmxpYyBUaHJlYWRTYWZlSWRlbnRpZmll
ZDxTZXJ2aWNlV29ya2VyVGhyZWFkPiB7CitwdWJsaWM6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUu
Li4gQXJncz4gc3RhdGljIFJlZjxTZXJ2aWNlV29ya2VyVGhyZWFkPiBjcmVhdGUoQXJncyYmLi4u
IGFyZ3MpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJ2aWNlV29ya2Vy
VGhyZWFkKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOworICAgIH0KKyAgICB2aXJ0dWFs
IH5TZXJ2aWNlV29ya2VyVGhyZWFkKCk7CisKKyAgICBXb3JrZXJPYmplY3RQcm94eSYgd29ya2Vy
T2JqZWN0UHJveHkoKSBjb25zdCB7IHJldHVybiBtX3dvcmtlck9iamVjdFByb3h5OyB9CisKK3By
b3RlY3RlZDoKKyAgICBSZWY8V29ya2VyR2xvYmFsU2NvcGU+IGNyZWF0ZVdvcmtlckdsb2JhbFNj
b3BlKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1
c2VyQWdlbnQsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIGJv
b2wgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBSZWY8U2VjdXJp
dHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBNb25vdG9uaWNUaW1lIHRpbWVPcmlnaW4sIFBBTDo6U2Vz
c2lvbklEKSBmaW5hbDsKKyAgICB2b2lkIHJ1bkV2ZW50TG9vcCgpIG92ZXJyaWRlOworCitwcml2
YXRlOgorICAgIFNlcnZpY2VXb3JrZXJUaHJlYWQodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYsIFBBTDo6U2Vzc2lvbklE
KTsKKworICAgIHVpbnQ2NF90IG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXI7CisgICAgU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhIG1fZGF0YTsKKyAgICBXb3JrZXJPYmplY3RQcm94eSYgbV93
b3JrZXJPYmplY3RQcm94eTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXggMDU1OTAwYzYzNzAuLjBlNDg3YmFh
ODUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyLmNwcApAQCAtMTY0LDcgKzE2NCw3IEBAIFJlZjxTV1NlcnZlcldvcmtlcj4gU1dTZXJ2
ZXI6OmNyZWF0ZVdvcmtlcihDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTZXJ2aWNlCiAg
ICAgYXV0byByZXN1bHQgPSBtX3dvcmtlcnNCeUlELmFkZCh3b3JrZXJJRCwgU1dTZXJ2ZXJXb3Jr
ZXI6OmNyZWF0ZShyZWdpc3RyYXRpb25LZXksIHVybCwgc2NyaXB0LCB0eXBlLCB3b3JrZXJJRCkp
OwogICAgIEFTU0VSVChyZXN1bHQuaXNOZXdFbnRyeSk7CiAgICAgCi0gICAgY29ubmVjdGlvbi5z
dGFydFNlcnZpY2VXb3JrZXJDb250ZXh0KHsgcmVnaXN0cmF0aW9uS2V5LCB3b3JrZXJJRCwgc2Ny
aXB0IH0pOworICAgIGNvbm5lY3Rpb24uc3RhcnRTZXJ2aWNlV29ya2VyQ29udGV4dCh7IHJlZ2lz
dHJhdGlvbktleSwgd29ya2VySUQsIHNjcmlwdCwgdXJsIH0pOwogICAgIAogICAgIHJldHVybiBy
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBjMzY4ZjRhZDc4YS4u
MjY4MThlMWUwNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTctMTAtMTIgIEJyYWR5
IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFNXICJIZWxsbyB3b3JsZCIu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzgxODcK
KworICAgICAgICBSZXZpZXdlZCBieSBBbmR5IEVzdGVzLgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c3RhcnRTZXJ2
aWNlV29ya2VyQ29udGV4dCk6CisKIDIwMTctMTAtMTEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBBUEkgdG8gY2xlYW4gQ2FjaGVTdG9yYWdlIGRhdGEK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCAyZjJmYWNkZDIyMC4u
ZjFjZjZkYjkxNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAg
LTEwNCw2ICsxMDQsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
U1dDb250ZXh0TWFuYWdlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2NoZW1lUmVnaXN0cnkuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaD4KQEAgLTE2NDcsMTEgKzE2NDgsMTAgQEAgdm9pZCBX
ZWJQcm9jZXNzOjpnZXRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbigpCiAKIHZvaWQgV2ViUHJvY2Vz
czo6c3RhcnRTZXJ2aWNlV29ya2VyQ29udGV4dCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiBkYXRhKQogewotICAgIC8v
IEZJWE1FOiBIZXJlIGlzIHdoZXJlIHdlIHdpbGwgYWN0dWFsbHkgc3RhcnQgdGhlIHNjcmlwdC4K
LSAgICAvLyBGb3Igbm93IHdlIGJvdW5jZSBiYWNrIGEgZmFpbHVyZSBtZXNzYWdlIHRvIHRoZSBy
ZXF1ZXN0aW5nIHByb2Nlc3MgZm9yIHRlc3QgY292ZXJhZ2UuCi0KLSAgICBhdXRvIG1lc3NhZ2Ug
PSBtYWtlU3RyaW5nKCJGYWlsZWQgdG8gc3RhcnQgc2VydmljZSB3b3JrZXIgc2NyaXB0IG9mIGxl
bmd0aCAiLCBTdHJpbmc6Om51bWJlcihkYXRhLnNjcmlwdC5sZW5ndGgoKSkpOwotICAgIG1fd29y
a2VyQ29udGV4dENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpTZXJ2
aWNlV29ya2VyQ29udGV4dEZhaWxlZFRvU3RhcnQoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIs
IGRhdGEucmVnaXN0cmF0aW9uS2V5LCBkYXRhLndvcmtlcklELCBtZXNzYWdlKSwgMCk7CisgICAg
YXV0byBjb250ZXh0UmVzdWx0ID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc3RhcnRT
ZXJ2aWNlV29ya2VyQ29udGV4dChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgZGF0YSk7Cisg
ICAgCisgICAgaWYgKGNvbnRleHRSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIG1fd29y
a2VyQ29udGV4dENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpTZXJ2
aWNlV29ya2VyQ29udGV4dEZhaWxlZFRvU3RhcnQoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIs
IGRhdGEucmVnaXN0cmF0aW9uS2V5LCBkYXRhLndvcmtlcklELCBjb250ZXh0UmVzdWx0LmV4Y2Vw
dGlvbigpLm1lc3NhZ2UoKSksIDApOwogfQogCiAjZW5kaWYK
</data>

          </attachment>
      

    </bug>

</bugzilla>