<?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>237068</bug_id>
          
          <creation_ts>2022-02-22 17:01:34 -0800</creation_ts>
          <short_desc>Add a URL constructor that takes a String</short_desc>
          <delta_ts>2022-02-24 13:30:38 -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>Web Template Framework</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=236852</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>
          
          <blocked>237099</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1844945</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-22 17:01:34 -0800</bug_when>
    <thetext>Add a URL constructor that takes a String to simplify our code base a bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1844948</commentid>
    <comment_count>1</comment_count>
      <attachid>452919</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-22 17:05:10 -0800</bug_when>
    <thetext>Created attachment 452919
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1844978</commentid>
    <comment_count>2</comment_count>
      <attachid>452919</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-02-22 19:06:35 -0800</bug_when>
    <thetext>Comment on attachment 452919
Patch

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

&gt; Source/WTF/wtf/URL.h:71
&gt; +    explicit URL(const String&amp; urlString)
&gt; +        : URL(URL(), urlString)
&gt; +    {
&gt; +    }

Is the purpose of this so obvious that it doesn’t even need to be stated in a comment? The constructor above is quite explicit.

Do we also want to point out that sometimes we would not want to just parse a string as a URL with no base URL without some additional processing?

Should we also have an overload that takes a String&amp;&amp; so we can save reference count churn in common cases where we end up just keeping the string unmodified?

&gt; Source/WTF/wtf/URL.h:321
&gt; +    return URL(WTFMove(*string));

This code is written as if we had a version that takes an rvalue reference.

&gt; Source/WebCore/Modules/websockets/WebSocket.cpp:226
&gt; +    m_url = URL { url };

Don’t think we need to write URL here, just { url } will do. You of course are welcome to keep the URL if you think it helps readability. Or it’s possible I am wrong because of the use of &quot;explicit&quot;?

&gt; Source/WebCore/bindings/js/ScriptModuleLoader.cpp:226
&gt; +    return URL { asString(moduleKeyValue)-&gt;value(&amp;jsGlobalObject) };

No need for URL here, just braces will do.

&gt; Source/WebCore/bindings/js/ScriptModuleLoader.cpp:331
&gt; +        baseURL = URL { sourceOrigin.string() };

No need for URL here, just braces will do.

&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:2567
&gt; +        file = File::deserialize(executionContext(m_lexicalGlobalObject), filePath, URL { url-&gt;string() }, type-&gt;string(), name-&gt;string(), optionalLastModified);

No need for URL here, just braces will do.

&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:3652
&gt; +            return getJSValue(Blob::deserialize(executionContext(m_lexicalGlobalObject), URL { url-&gt;string() }, type-&gt;string(), size, blobFilePathForBlobURL(url-&gt;string())).get());

No need for URL here, just braces will do.

&gt; Source/WebCore/contentextensions/ContentExtensionActions.cpp:385
&gt; +        request.setURL(URL { action.url });

No need for URL here, just braces will do.

&gt; Source/WebCore/dom/Document.cpp:5342
&gt; +                m_referrerOverride = URL(referrerURL.protocolHostAndPort()).string();

I am unclear what this code does. I am pretty sure that converting to a URL and back to a string is a round trip no-op that does nothing. Sometimes makes a valid URL, other times makes an invalid URL, but never changes the string. Am I wrong about this?

&gt; Source/WebCore/loader/DocumentLoader.cpp:852
&gt; +    return URL { &quot;https://www.microsoft.com/en-us/microsoft-365/microsoft-teams/&quot;_s };

No need for URL here, just braces will do.

&gt; Source/WebCore/loader/archive/cf/LegacyWebArchive.cpp:228
&gt; +    return ArchiveResource::create(SharedBuffer::create(resourceData), URL { url }, mimeType, textEncoding, frameName, response);

No need for URL here, just braces will do.

&gt; Source/WebCore/page/DOMWindow.cpp:2586
&gt; +            auto radioPlayerDomain = RegistrableDomain(URL { Quirks::staticRadioPlayerURLString() });
&gt; +            auto BBCDomain = RegistrableDomain(URL { Quirks::BBCRadioPlayerURLString() });

Not sure we need URL here, likely just braces will do.

&gt; Source/WebCore/page/Quirks.cpp:1101
&gt; +    static NeverDestroyed&lt;RegistrableDomain&gt; BBCDomain = RegistrableDomain(URL { Quirks::BBCRadioPlayerURLString() });

Ditto.

&gt; Source/WebCore/page/Quirks.cpp:1175
&gt; +    static NeverDestroyed&lt;URL&gt; kinjaURL = URL { &quot;https://kinja.com&quot; };

Could just write NeverDestroyed here instead of NeverDestroyed&lt;URL&gt;.

&gt; Source/WebCore/page/SecurityOrigin.cpp:593
&gt; +    return SecurityOrigin::create(URL { originString });

Not sure we need URL here, likely just braces will do.

&gt; Source/WebCore/page/SecurityOrigin.cpp:599
&gt; +    auto origin = create(URL { protocol + &quot;://&quot; + host + &quot;/&quot; });

Not sure we need URL here, likely just braces will do.

&gt; Source/WebCore/page/SecurityOriginData.cpp:54
&gt; +    return URL { toString() };

Don’t need URL here, just braces will do.

&gt; Source/WebCore/page/SecurityPolicy.cpp:95
&gt; +    ASSERT(referrer == URL(referrer).strippedForUseAsReferrer()
&gt; +        || referrer == SecurityOrigin::create(URL { referrer })-&gt;toString());

Should write this the same way on these two successive lines?

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:925
&gt; +    m_url = URL { cleanURLString };

No need for URL here, just braces will do.

&gt; Source/WebCore/platform/network/cf/ResourceErrorCF.cpp:123
&gt; +            m_failingURL = URL { failingURLString };

No need for URL here, just braces will do.

&gt; Source/WebCore/platform/network/curl/CurlRequest.cpp:369
&gt; +        m_response.proxyUrl = URL { *proxyUrl };

No need for URL here, just braces will do. Also surprised they named it proxyUrl and not proxyURL.

&gt; Source/WebCore/platform/network/mac/ResourceErrorMac.mm:163
&gt; +        m_failingURL = URL { failingURLString };

No need for URL here, just braces will do.

&gt; Source/WebCore/platform/win/PasteboardWin.cpp:455
&gt; +        WebCore::writeURL(m_writableDataObject.get(), URL { data }, String(), false, true);

Might not need URL here, maybe just braces will do.

&gt; Source/WebCore/testing/Internals.cpp:5691
&gt; +    frame-&gt;loader().client().sendH2Ping(URL { url }, [promise = WTFMove(promise)] (Expected&lt;Seconds, ResourceError&gt;&amp;&amp; result) mutable {

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1844986</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-22 19:43:22 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #2)
&gt; Comment on attachment 452919 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=452919&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/URL.h:71
&gt; &gt; +    explicit URL(const String&amp; urlString)
&gt; &gt; +        : URL(URL(), urlString)
&gt; &gt; +    {
&gt; &gt; +    }
&gt; 
&gt; Is the purpose of this so obvious that it doesn’t even need to be stated in
&gt; a comment? The constructor above is quite explicit.
&gt; 
&gt; Do we also want to point out that sometimes we would not want to just parse
&gt; a string as a URL with no base URL without some additional processing?
&gt; 
&gt; Should we also have an overload that takes a String&amp;&amp; so we can save
&gt; reference count churn in common cases where we end up just keeping the
&gt; string unmodified?
&gt; 
&gt; &gt; Source/WTF/wtf/URL.h:321
&gt; &gt; +    return URL(WTFMove(*string));
&gt; 
&gt; This code is written as if we had a version that takes an rvalue reference.
&gt; 
&gt; &gt; Source/WebCore/Modules/websockets/WebSocket.cpp:226
&gt; &gt; +    m_url = URL { url };
&gt; 
&gt; Don’t think we need to write URL here, just { url } will do. You of course
&gt; are welcome to keep the URL if you think it helps readability. Or it’s
&gt; possible I am wrong because of the use of &quot;explicit&quot;?
&gt; 
&gt; &gt; Source/WebCore/bindings/js/ScriptModuleLoader.cpp:226
&gt; &gt; +    return URL { asString(moduleKeyValue)-&gt;value(&amp;jsGlobalObject) };
&gt; 
&gt; No need for URL here, just braces will do.
&gt; 
&gt; &gt; Source/WebCore/bindings/js/ScriptModuleLoader.cpp:331
&gt; &gt; +        baseURL = URL { sourceOrigin.string() };
&gt; 
&gt; No need for URL here, just braces will do.
&gt; 
&gt; &gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:2567
&gt; &gt; +        file = File::deserialize(executionContext(m_lexicalGlobalObject), filePath, URL { url-&gt;string() }, type-&gt;string(), name-&gt;string(), optionalLastModified);
&gt; 
&gt; No need for URL here, just braces will do.
&gt; 
&gt; &gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:3652
&gt; &gt; +            return getJSValue(Blob::deserialize(executionContext(m_lexicalGlobalObject), URL { url-&gt;string() }, type-&gt;string(), size, blobFilePathForBlobURL(url-&gt;string())).get());
&gt; 
&gt; No need for URL here, just braces will do.
&gt; 
&gt; &gt; Source/WebCore/contentextensions/ContentExtensionActions.cpp:385
&gt; &gt; +        request.setURL(URL { action.url });
&gt; 
&gt; No need for URL here, just braces will do.
&gt; 
&gt; &gt; Source/WebCore/dom/Document.cpp:5342
&gt; &gt; +                m_referrerOverride = URL(referrerURL.protocolHostAndPort()).string();
&gt; 
&gt; I am unclear what this code does. I am pretty sure that converting to a URL
&gt; and back to a string is a round trip no-op that does nothing. Sometimes
&gt; makes a valid URL, other times makes an invalid URL, but never changes the
&gt; string. Am I wrong about this?

The purpose of the code is to extract the origin out of the URL string (only protocol / host / port, not the rest of the URL).

Maybe this would be clearer?
m_referrerOverride = SecurityOriginData::fromURL(referrerURL).toString();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1844987</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-22 19:46:01 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #2)
&gt; Comment on attachment 452919 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=452919&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/URL.h:71
&gt; &gt; +    explicit URL(const String&amp; urlString)
&gt; &gt; +        : URL(URL(), urlString)
&gt; &gt; +    {
&gt; &gt; +    }
&gt; 
&gt; Is the purpose of this so obvious that it doesn’t even need to be stated in
&gt; a comment? The constructor above is quite explicit.
&gt; 
&gt; Do we also want to point out that sometimes we would not want to just parse
&gt; a string as a URL with no base URL without some additional processing?
&gt; 
&gt; Should we also have an overload that takes a String&amp;&amp; so we can save
&gt; reference count churn in common cases where we end up just keeping the
&gt; string unmodified?
&gt; 
&gt; &gt; Source/WTF/wtf/URL.h:321
&gt; &gt; +    return URL(WTFMove(*string));
&gt; 
&gt; This code is written as if we had a version that takes an rvalue reference.
&gt; 
&gt; &gt; Source/WebCore/Modules/websockets/WebSocket.cpp:226
&gt; &gt; +    m_url = URL { url };
&gt; 
&gt; Don’t think we need to write URL here, just { url } will do. You of course
&gt; are welcome to keep the URL if you think it helps readability. Or it’s
&gt; possible I am wrong because of the use of &quot;explicit&quot;?

It doesn&apos;t build:
./Modules/websockets/WebSocket.cpp:226:11: error: no viable overloaded &apos;=&apos;
    m_url = { url };</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1844990</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-22 19:57:04 -0800</bug_when>
    <thetext>I am going to apply the review comments that I can but most of them are about using { } instead of URL { } and it doesn&apos;t appear to build in any of the cases (likely because the constructor is explicit). I do think we want it to be explicit, given that parsing a String as a URL is fairly expensive).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1844995</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-02-22 20:07:25 -0800</bug_when>
    <thetext>Agreed. Let’s leave it explicit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1844996</commentid>
    <comment_count>7</comment_count>
      <attachid>452935</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-22 20:08:11 -0800</bug_when>
    <thetext>Created attachment 452935
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845001</commentid>
    <comment_count>8</comment_count>
      <attachid>452935</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-22 21:40:07 -0800</bug_when>
    <thetext>Comment on attachment 452935
Patch

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

&gt; Source/WebCore/dom/Document.cpp:-5342
&gt; -                m_referrerOverride = URL(URL(), referrerURL.protocolHostAndPort()).string();

`URL(URL(), referrerURL.protocolHostAndPort()).string()` or `referrerURL.protocolHostAndPort()` give:
http://127.0.0.1:8000

Pre-existing code was giving:
http://127.0.0.1:8000/

I checked in Chrome and I indeed see a trailing slash there too. I&apos;ll keep the existing logic to avoid breakage (2 tests did fail).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845002</commentid>
    <comment_count>9</comment_count>
      <attachid>452936</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-22 21:43:55 -0800</bug_when>
    <thetext>Created attachment 452936
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845016</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-22 23:20:02 -0800</bug_when>
    <thetext>Committed r290350 (247668@main): &lt;https://commits.webkit.org/247668@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 452936.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845017</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-22 23:21:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/89339510&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845741</commentid>
    <comment_count>12</comment_count>
      <attachid>452936</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2022-02-24 13:30:38 -0800</bug_when>
    <thetext>Comment on attachment 452936
Patch

A few years ago I tried this and ran into some issues but this can now be done safely since URL doesn&apos;t have an operator String.
This should probably eventually be a step towards the only constructor for a URL taking a String, a URL with a default parameter of an empty URL for the base URL, and an encoding with a default parameter of null.  To do that, we would have to remove lots of URL() calls in WebKit.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452919</attachid>
            <date>2022-02-22 17:05:10 -0800</date>
            <delta_ts>2022-02-22 20:08:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237068-20220222170510.patch</filename>
            <type>text/plain</type>
            <size>36211</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMzQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
NWQ1NDJjNmE3OWY1ZDI5YzY2ZWQzYzBlNDZlMjY2ZGI1ODA2MTY3Li45ZTU1NDJmZjFlZTRhNzEw
ZDg2NzJlOTU4MjJiZDZhYzEzYTAwYjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAyMi0wMi0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBhIFVSTCBjb25zdHJ1Y3RvciB0aGF0IHRha2VzIGEgU3RyaW5nCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcwNjgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZG9wdCB0aGUgbmV3
IGBVUkwoY29uc3QgU3RyaW5nJilgIGNvbnN0cnVjdG9yLgorCisgICAgICAgICogQVBJL0pTQVBJ
R2xvYmFsT2JqZWN0Lm1tOgorICAgICAgICAoSlNDOjpjb21wdXRlVmFsaWRJbXBvcnRTcGVjaWZp
ZXIpOgorCiAyMDIyLTAyLTIyICBBbGV4YW5kZXIgS2FuYXZpbiAgPGFsZXhAbGludXRyb25peC5k
ZT4KIAogICAgICAgICBXaGVuIGJ1aWxkaW5nIGludHJvc3BlY3Rpb24gZmlsZXMsIGFkZCBDTUFL
RV9DX0ZMQUdTIHRvIHRoZSBjb21waWxlciBmbGFncy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggMzMyZDA2ZDI2MmE3YWJkYTM4
ZjIzYWQ0OWEwOGM2YjczNmUxMTJjYy4uNGM4NmE0N2E3NWY3ZTczZDNhMDllYzJjZjBhMjgzNDM5
NWQwYjllYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMi0wMi0yMiAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIFVSTCBjb25zdHJ1Y3RvciB0aGF0IHRh
a2VzIGEgU3RyaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzcwNjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgYSBVUkwgY29uc3RydWN0b3IgdGhhdCB0YWtlcyBhIFN0cmluZyB0byBzaW1wbGlm
eSBvdXIgY29kZSBiYXNlIGEgYml0LgorCisgICAgICAgICogd3RmL1VSTC5jcHA6CisgICAgICAg
IChXVEY6OlVSTDo6dHJ1bmNhdGVkRm9yVXNlQXNCYXNlIGNvbnN0KToKKyAgICAgICAgKFdURjo6
VVJMOjpmYWtlVVJMV2l0aFJlbGF0aXZlUGFydCk6CisgICAgICAgIChXVEY6OlVSTDo6ZmlsZVVS
TFdpdGhGaWxlU3lzdGVtUGF0aCk6CisgICAgICAgICogd3RmL1VSTC5oOgorICAgICAgICAoV1RG
OjpVUkw6OlVSTCk6CisgICAgICAgIChXVEY6OlVSTDo6ZGVjb2RlKToKKwogMjAyMi0wMi0yMiAg
RWxsaW90dCBXaWxsaWFtcyAgPGVtd0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVwbGFjZSBsZWdh
Y3ktYnVpbGQtY29weS1uZXN0ZWQtaGVhZGVycy5weSB3aXRoIGFuIHhjb2RlYnVpbGQgaW52b2Nh
dGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDRiY2VlMWE2MDMwMGMzM2MzMzMzNWNhNTdmZTk2OGU0OWNjMzRh
ZjcuLmZkZTA5NjhkMGQ3MTcyNTgwZjdjOGZjMDY1ZmJiZjdhNWQ1NGYzNWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw4MCBAQAorMjAyMi0wMi0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgorCisgICAgICAgIEFkZCBhIFVSTCBjb25zdHJ1Y3RvciB0aGF0IHRha2VzIGEgU3RyaW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcwNjgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZG9wdCB0
aGUgbmV3IGBVUkwoY29uc3QgU3RyaW5nJilgIGNvbnN0cnVjdG9yLgorCisgICAgICAgICogTW9k
dWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXV0aGVudGljYXRvckNvb3JkaW5hdG9ySW50ZXJuYWw6OnByb2Nlc3NBcHBJZEV4dGVu
c2lvbik6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmNvbm5lY3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L1NjcmlwdE1vZHVsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXNvbHZlTW9kdWxl
U3BlY2lmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdE1vZHVsZUxvYWRlcjo6ZmV0Y2gp
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0TW9kdWxlTG9hZGVyOjptb2R1bGVVUkwpOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0TW9kdWxlTG9hZGVyOjpyZXNwb25zZVVSTEZyb21SZXF1ZXN0
VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdE1vZHVsZUxvYWRlcjo6aW1wb3J0TW9kdWxl
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRGaWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkVGVybWluYWwpOgorICAgICAgICAqIGNvbnRl
bnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25BY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRlbnRFeHRlbnNpb25zOjpSZWRpcmVjdEFjdGlvbjo6cGFyc2UpOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlJlZGlyZWN0QWN0aW9uOjphcHBseVRvUmVxdWVz
dCk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpyZWZlcnJlcik6CisgICAgICAgICogaHRtbC9VUkxJbnB1dFR5cGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VVJMSW5wdXRUeXBlOjp0eXBlTWlzbWF0Y2hGb3IgY29uc3QpOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjptaWNyb3Nv
ZnRUZWFtc1JlZGlyZWN0VVJMKToKKyAgICAgICAgKiBsb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnBh
cnNlQXR0cmlidXRpb25SZXF1ZXN0UXVlcnkpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZTo6ZGVsZXRlQ2FjaGVGb3JPcmlnaW4pOgorICAgICAgICAqIGxvYWRlci9h
cmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5
V2ViQXJjaGl2ZTo6Y3JlYXRlUmVzb3VyY2UpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21o
dG1sL01IVE1MUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2VyOjpwYXJz
ZU5leHRQYXJ0KToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpET01XaW5kb3c6Om9wZW4pOgorICAgICAgICAqIHBhZ2UvUXVpcmtzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmlzQkJDRG9tYWluKToKKyAgICAgICAgKFdlYkNvcmU6OlF1aXJrczo6dHJp
Z2dlck9wdGlvbmFsU3RvcmFnZUFjY2Vzc1F1aXJrIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1Nl
Y3VyaXR5T3JpZ2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVh
dGVGcm9tU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUp
OgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6dG9VUkwgY29uc3QpOgorICAgICAgICAqIHBhZ2UvU2Vj
dXJpdHlQb2xpY3kuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3k6OmdlbmVy
YXRlUmVmZXJyZXJIZWFkZXIpOgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBv
bGljeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OnJlcG9y
dFZpb2xhdGlvbiBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Om9yaWdpbnNJbk1l
ZGlhQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnNldFBsYXliaW5VUkwp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VH
U3RyZWFtZXIuY3BwOgorICAgICAgICAod2ViS2l0V2ViU3JjTWFrZVJlcXVlc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNl
bGVjdGlvbkRhdGE6OnNldFVSSUxpc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VSZXF1ZXN0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RC
YXNlOjpzZXRIVFRQUmVmZXJyZXIpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVz
b3VyY2VFcnJvckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OnBsYXRm
b3JtTGF6eUluaXQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFt
SGFuZGxlSW1wbENGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRs
ZUltcGw6OlNvY2tldFN0cmVhbUhhbmRsZUltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6
ZGlkUmVjZWl2ZUhlYWRlcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3Vy
Y2VFcnJvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OnBsYXRmb3Jt
TGF6eUluaXQpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlU3RyaW5nKToKKyAgICAgICAgKiB0ZXN0
aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNlbmRIMlBp
bmcpOgorCiAyMDIyLTAyLTIyICBGcsOpZMOpcmljIFdhbmcgIDxmd2FuZ0BpZ2FsaWEuY29tPgog
CiAgICAgICAgIG51bGwgcHRyIGRlcmVmIHZpYSBXZWJYUlN5c3RlbTo6cmVxdWVzdFNlc3Npb24K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3Qu
bW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0Lm1tCmluZGV4
IDY1MzhkMzM2Yzg4OTQxZTEzNzdkZWMwZGE4ZTRmYmQ3MTk3ZDY3NGIuLmIzZTJhZTQ0MWM0ZWM1
MjM0MmFmZTlkNTQ5ZTRhZTYyMzhjZTM0NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0FQSUdsb2JhbE9iamVjdC5tbQpAQCAtODIsNyArODIsNyBAQCB2b2lkIEpTQVBJR2xv
YmFsT2JqZWN0OjpyZXBvcnRVbmNhdWdodEV4Y2VwdGlvbkF0RXZlbnRMb29wKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYQogCiBzdGF0aWMgRXhwZWN0ZWQ8VVJMLCBTdHJpbmc+IGNvbXB1dGVWYWxpZElt
cG9ydFNwZWNpZmllcihjb25zdCBVUkwmIGJhc2UsIGNvbnN0IFN0cmluZyYgc3BlY2lmaWVyKQog
ewotICAgIFVSTCBhYnNvbHV0ZVVSTChVUkwoKSwgc3BlY2lmaWVyKTsKKyAgICBVUkwgYWJzb2x1
dGVVUkwoc3BlY2lmaWVyKTsKICAgICBpZiAoYWJzb2x1dGVVUkwuaXNWYWxpZCgpKQogICAgICAg
ICByZXR1cm4gYWJzb2x1dGVVUkw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTC5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwCmluZGV4IDgzMzAxYWRjZDUyYTRhZWQ4MzY3YmM4
NDFjM2NkZWU4ODNjNjA5ZDAuLjkwNGQ4YTVlZTI0ZGZmN2IwZjZjZTgxNDQ0NjM2NDliY2Q2Yzlh
YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAKKysrIGIvU291cmNlL1dURi93
dGYvVVJMLmNwcApAQCAtMjM1LDcgKzIzNSw3IEBAIFN0cmluZ1ZpZXcgVVJMOjpmcmFnbWVudElk
ZW50aWZpZXIoKSBjb25zdAogCiBVUkwgVVJMOjp0cnVuY2F0ZWRGb3JVc2VBc0Jhc2UoKSBjb25z
dAogewotICAgIHJldHVybiBVUkwoVVJMKCksIG1fc3RyaW5nLmxlZnQobV9wYXRoQWZ0ZXJMYXN0
U2xhc2gpKTsKKyAgICByZXR1cm4gVVJMKG1fc3RyaW5nLmxlZnQobV9wYXRoQWZ0ZXJMYXN0U2xh
c2gpKTsKIH0KIAogI2lmICFVU0UoQ0YpCkBAIC0xMDU0LDEyICsxMDU0LDEyIEBAIFN0cmluZyBV
Ukw6OnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCh1bnNpZ25lZCBsZW5ndGgpIGNvbnN0
CiAKIFVSTCBVUkw6OmZha2VVUkxXaXRoUmVsYXRpdmVQYXJ0KFN0cmluZ1ZpZXcgcmVsYXRpdmVQ
YXJ0KQogewotICAgIHJldHVybiBVUkwoVVJMKCksIG1ha2VTdHJpbmcoIndlYmtpdC1mYWtlLXVy
bDovLyIsIGNyZWF0ZVZlcnNpb240VVVJRFN0cmluZygpLCAnLycsIHJlbGF0aXZlUGFydCkpOwor
ICAgIHJldHVybiBVUkwobWFrZVN0cmluZygid2Via2l0LWZha2UtdXJsOi8vIiwgY3JlYXRlVmVy
c2lvbjRVVUlEU3RyaW5nKCksICcvJywgcmVsYXRpdmVQYXJ0KSk7CiB9CiAKIFVSTCBVUkw6OmZp
bGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgoU3RyaW5nVmlldyBwYXRoKQogewotICAgIHJldHVybiBV
UkwoVVJMKCksIG1ha2VTdHJpbmcoCisgICAgcmV0dXJuIFVSTChtYWtlU3RyaW5nKAogICAgICAg
ICAiZmlsZTovLyIsCiAgICAgICAgIHBhdGguc3RhcnRzV2l0aCgnLycpID8gIiIgOiAiLyIsCiAg
ICAgICAgIGVzY2FwZVBhdGhXaXRob3V0Q29weWluZyhwYXRoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvVVJMLmggYi9Tb3VyY2UvV1RGL3d0Zi9VUkwuaAppbmRleCBiNGJhYWQxOGUzZTcx
YTQ3YzRlZmQ3ZWNlNTEzYzExM2M5MGI5ODlmLi44ODA4ZGViMGE1MjVjMjM1YmM4MjM0YjViOTIw
MmEwNGQzZTBmZmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9VUkwuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9VUkwuaApAQCAtNjUsNiArNjUsMTEgQEAgcHVibGljOgogICAgIC8vIG51bGwg
b3IgZW1wdHksIGluIHdoaWNoIGNhc2UgdGhlIHJlbGF0aXZlIFVSTCB3aWxsIGJlIGludGVycHJl
dGVkIGFzIGFic29sdXRlLgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBVUkwoY29uc3QgVVJMJiBi
YXNlLCBjb25zdCBTdHJpbmcmIHJlbGF0aXZlLCBjb25zdCBVUkxUZXh0RW5jb2RpbmcqID0gbnVs
bHB0cik7CiAKKyAgICBleHBsaWNpdCBVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCisgICAg
ICAgIDogVVJMKFVSTCgpLCB1cmxTdHJpbmcpCisgICAgeworICAgIH0KKwogICAgIFdURl9FWFBP
UlRfUFJJVkFURSBzdGF0aWMgVVJMIGZha2VVUkxXaXRoUmVsYXRpdmVQYXJ0KFN0cmluZ1ZpZXcp
OwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgVVJMIGZpbGVVUkxXaXRoRmlsZVN5c3Rl
bVBhdGgoU3RyaW5nVmlldyk7CiAKQEAgLTMxMyw3ICszMTgsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFt
ZSBEZWNvZGVyPiBzdGQ6Om9wdGlvbmFsPFVSTD4gVVJMOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKICAgICBkZWNvZGVyID4+IHN0cmluZzsKICAgICBpZiAoIXN0cmluZykKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICByZXR1cm4gVVJMKFVSTCgpLCBXVEZNb3ZlKCpzdHJpbmcp
KTsKKyAgICByZXR1cm4gVVJMKFdURk1vdmUoKnN0cmluZykpOwogfQogCiBpbmxpbmUgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3Iu
Y3BwCmluZGV4IDU0OTY1ZmYyZWFlY2VhZTdlYzg4NzAwZWM2MmYxNDM3OWM3ZmRhMWUuLmQ0MDA3
NTE3YWZmZmMzZjk0ZDNhZjcxOWVkOTlkOWY5OGRjN2RiNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRv
ci5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgc3RhdGljIFN0cmluZyBwcm9jZXNzQXBwSWRFeHRlbnNp
b24oY29uc3QgU2VjdXJpdHlPcmlnaW4mIGZhY2V0SWQsIGNvbnN0IFN0cmluZyYKICAgICAgICAg
cmV0dXJuIGZhY2V0SWQudG9TdHJpbmcoKTsKIAogICAgIC8vIFN0ZXAgMy4gUmVsYXggdGhlIGNv
bXBhcmlzb24gdG8gc2FtZSBzaXRlLgotICAgIFVSTCBhcHBJZFVSTChVUkwoKSwgYXBwSWQpOwor
ICAgIFVSTCBhcHBJZFVSTCB7IGFwcElkIH07CiAgICAgaWYgKCFhcHBJZFVSTC5pc1ZhbGlkKCkg
fHwgZmFjZXRJZC5wcm90b2NvbCgpICE9IGFwcElkVVJMLnByb3RvY29sKCkgfHwgKFJlZ2lzdHJh
YmxlRG9tYWluKGFwcElkVVJMKSAhPSBSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRl
RnJvbUhvc3QoZmFjZXRJZC5ob3N0KCkpICYmICFuZWVkc0FwcElkUXVpcmtzKGZhY2V0SWQuaG9z
dCgpLCBhcHBJZCkpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgcmV0dXJuIGFwcElk
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcApp
bmRleCBmYWVkYzViNDEwNjIxMTY1NzRhNzQ5NWEzMzg5YjM4Y2E5NjlmNWU1Li5jNTU4NzkyMzIx
NTVkNDU1YThlOTNiZDg2YmZmYmM4MWY0MDk1OTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcApAQCAtMjIzLDcgKzIyMyw3IEBAIHZvaWQg
V2ViU29ja2V0OjpmYWlsQXN5bmNocm9ub3VzbHkoKQogRXhjZXB0aW9uT3I8dm9pZD4gV2ViU29j
a2V0Ojpjb25uZWN0KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcHJv
dG9jb2xzKQogewogICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIGNvbm5lY3QoKSB1cmw9
JyVzJyIsIHRoaXMsIHVybC51dGY4KCkuZGF0YSgpKTsKLSAgICBtX3VybCA9IFVSTChVUkwoKSwg
dXJsKTsKKyAgICBtX3VybCA9IFVSTCB7IHVybCB9OwogCiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSk7CiAgICAgYXV0byYgY29udGV4dCA9ICpzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1
bGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9h
ZGVyLmNwcAppbmRleCAxNzU3Y2JkODQ4YTQ4YjkxYzJmODgzNDUzOTM1NWZlOGNkMTI2ZTllLi43
MDFkMzljMDhiMGI3OWNiYTMyMjJiMzI1N2Q1NTQ5M2FiNDcxODE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHAKQEAgLTkzLDcgKzkz
LDcgQEAgc3RhdGljIEV4cGVjdGVkPFVSTCwgU3RyaW5nPiByZXNvbHZlTW9kdWxlU3BlY2lmaWVy
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnQKIHsKICAgICAvLyBodHRwczovL2h0bWwuc3Bl
Yy53aGF0d2cub3JnL211bHRpcGFnZS93ZWJhcHBhcGlzLmh0bWwjcmVzb2x2ZS1hLW1vZHVsZS1z
cGVjaWZpZXIKIAotICAgIFVSTCBhYnNvbHV0ZVVSTChVUkwoKSwgc3BlY2lmaWVyKTsKKyAgICBV
UkwgYWJzb2x1dGVVUkwgeyBzcGVjaWZpZXIgfTsKICAgICBpZiAoYWJzb2x1dGVVUkwuaXNWYWxp
ZCgpKQogICAgICAgICByZXR1cm4gYWJzb2x1dGVVUkw7CiAKQEAgLTE4OSw3ICsxODksNyBAQCBK
U0M6OkpTSW50ZXJuYWxQcm9taXNlKiBTY3JpcHRNb2R1bGVMb2FkZXI6OmZldGNoKEpTQzo6SlNH
bG9iYWxPYmplY3QqIGpzR2xvYmFsTwogCiAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdn
Lm9yZy9tdWx0aXBhZ2Uvd2ViYXBwYXBpcy5odG1sI2ZldGNoLWEtc2luZ2xlLW1vZHVsZS1zY3Jp
cHQKIAotICAgIFVSTCBjb21wbGV0ZWRVUkwoVVJMKCksIGFzU3RyaW5nKG1vZHVsZUtleVZhbHVl
KS0+dmFsdWUoanNHbG9iYWxPYmplY3QpKTsKKyAgICBVUkwgY29tcGxldGVkVVJMIHsgYXNTdHJp
bmcobW9kdWxlS2V5VmFsdWUpLT52YWx1ZShqc0dsb2JhbE9iamVjdCkgfTsKICAgICBpZiAoIWNv
bXBsZXRlZFVSTC5pc1ZhbGlkKCkpIHsKICAgICAgICAgcmVqZWN0V2l0aEZldGNoRXJyb3IoZGVm
ZXJyZWQuZ2V0KCksIFR5cGVFcnJvciwgIk1vZHVsZSBrZXkgaXMgYSB2YWxpZCBVUkwuIl9zKTsK
ICAgICAgICAgcmV0dXJuIGpzUHJvbWlzZTsKQEAgLTIyMyw3ICsyMjMsNyBAQCBVUkwgU2NyaXB0
TW9kdWxlTG9hZGVyOjptb2R1bGVVUkwoSlNDOjpKU0dsb2JhbE9iamVjdCYganNHbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYQogICAgICAgICByZXR1cm4gbV9jb250ZXh0LnVybCgpOwogCiAgICAgQVNT
RVJUKG1vZHVsZUtleVZhbHVlLmlzU3RyaW5nKCkpOwotICAgIHJldHVybiBVUkwoVVJMKCksIGFz
U3RyaW5nKG1vZHVsZUtleVZhbHVlKS0+dmFsdWUoJmpzR2xvYmFsT2JqZWN0KSk7CisgICAgcmV0
dXJuIFVSTCB7IGFzU3RyaW5nKG1vZHVsZUtleVZhbHVlKS0+dmFsdWUoJmpzR2xvYmFsT2JqZWN0
KSB9OwogfQogCiBVUkwgU2NyaXB0TW9kdWxlTG9hZGVyOjpyZXNwb25zZVVSTEZyb21SZXF1ZXN0
VVJMKEpTQzo6SlNHbG9iYWxPYmplY3QmIGpzR2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgbW9k
dWxlS2V5VmFsdWUpCkBAIC0yNDEsNyArMjQxLDcgQEAgVVJMIFNjcmlwdE1vZHVsZUxvYWRlcjo6
cmVzcG9uc2VVUkxGcm9tUmVxdWVzdFVSTChKU0M6OkpTR2xvYmFsT2JqZWN0JiBqc0dsb2JhbE8K
ICAgICBBU1NFUlQobW9kdWxlS2V5VmFsdWUuaXNTdHJpbmcoKSk7CiAgICAgU3RyaW5nIHJlcXVl
c3RVUkwgPSBhc1N0cmluZyhtb2R1bGVLZXlWYWx1ZSktPnZhbHVlKCZqc0dsb2JhbE9iamVjdCk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLSAgICBBU1NFUlRfV0lUSF9N
RVNTQUdFKFVSTChVUkwoKSwgcmVxdWVzdFVSTCkuaXNWYWxpZCgpLCAiSW52YWxpZCBtb2R1bGUg
cmVmZXJyZXIgbmV2ZXIgc3RhcnRzIGltcG9ydGluZyBkZXBlbmRlbnQgbW9kdWxlcy4iKTsKKyAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKFVSTChyZXF1ZXN0VVJMKS5pc1ZhbGlkKCksICJJbnZhbGlk
IG1vZHVsZSByZWZlcnJlciBuZXZlciBzdGFydHMgaW1wb3J0aW5nIGRlcGVuZGVudCBtb2R1bGVz
LiIpOwogCiAgICAgYXV0byBpdGVyYXRvciA9IG1fcmVxdWVzdFVSTFRvUmVzcG9uc2VVUkxNYXAu
ZmluZChyZXF1ZXN0VVJMKTsKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGl0ZXJhdG9yICE9IG1f
cmVxdWVzdFVSTFRvUmVzcG9uc2VVUkxNYXAuZW5kKCksICJNb2R1bGUgcmVmZXJyZXIgbXVzdCBy
ZWdpc3RlciBpdHNlbGYgdG8gdGhlIG1hcCBiZWZvcmUgc3RhcnRpbmcgaW1wb3J0aW5nIGRlcGVu
ZGVudCBtb2R1bGVzLiIpOwpAQCAtMzI4LDcgKzMyOCw3IEBAIEpTQzo6SlNJbnRlcm5hbFByb21p
c2UqIFNjcmlwdE1vZHVsZUxvYWRlcjo6aW1wb3J0TW9kdWxlKEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGpzCiAgICAgICAgICAgICBzY3JpcHRGZXRjaGVyID0gV29ya2VyU2NyaXB0RmV0Y2hlcjo6Y3Jl
YXRlKEZldGNoT3B0aW9uczo6Q3JlZGVudGlhbHM6OlNhbWVPcmlnaW4sIEZldGNoT3B0aW9uczo6
RGVzdGluYXRpb246OlNjcmlwdCwgUmVmZXJyZXJQb2xpY3k6OkVtcHR5U3RyaW5nKTsKICAgICAg
ICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIGJhc2VVUkwgPSBVUkwoVVJMKCksIHNvdXJjZU9y
aWdpbi5zdHJpbmcoKSk7CisgICAgICAgIGJhc2VVUkwgPSBVUkwgeyBzb3VyY2VPcmlnaW4uc3Ry
aW5nKCkgfTsKICAgICAgICAgaWYgKCFiYXNlVVJMLmlzVmFsaWQoKSkKICAgICAgICAgICAgIHJl
dHVybiByZWplY3RQcm9taXNlKGdsb2JhbE9iamVjdCwgVHlwZUVycm9yLCAiSW1wb3J0ZXIgbW9k
dWxlIGtleSBpcyBub3QgYSBTeW1ib2wgb3IgYSBTdHJpbmcuIl9zKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXgg
NWNkZWRhM2U3NmMxYzA4YTJlNDIzMmRkYzIwZmYwZTM4M2FjM2Y2Yi4uNDI1MmE1NjQ3NjNiMGNj
NjBkMTA3NTFmOTg4ZDRkMTFhZDg0N2M1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0yNTY0LDcgKzI1NjQsNyBA
QCBwcml2YXRlOgogICAgICAgICBpZiAoIW1fY2FuQ3JlYXRlRE9NT2JqZWN0KQogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAgZmlsZSA9IEZpbGU6OmRlc2VyaWFsaXplKGV4ZWN1
dGlvbkNvbnRleHQobV9sZXhpY2FsR2xvYmFsT2JqZWN0KSwgZmlsZVBhdGgsIFVSTChVUkwoKSwg
dXJsLT5zdHJpbmcoKSksIHR5cGUtPnN0cmluZygpLCBuYW1lLT5zdHJpbmcoKSwgb3B0aW9uYWxM
YXN0TW9kaWZpZWQpOworICAgICAgICBmaWxlID0gRmlsZTo6ZGVzZXJpYWxpemUoZXhlY3V0aW9u
Q29udGV4dChtX2xleGljYWxHbG9iYWxPYmplY3QpLCBmaWxlUGF0aCwgVVJMIHsgdXJsLT5zdHJp
bmcoKSB9LCB0eXBlLT5zdHJpbmcoKSwgbmFtZS0+c3RyaW5nKCksIG9wdGlvbmFsTGFzdE1vZGlm
aWVkKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0zNjQ5LDcgKzM2NDksNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgICAg
ICBpZiAoIW1fY2FuQ3JlYXRlRE9NT2JqZWN0KQogICAgICAgICAgICAgICAgIHJldHVybiBqc051
bGwoKTsKLSAgICAgICAgICAgIHJldHVybiBnZXRKU1ZhbHVlKEJsb2I6OmRlc2VyaWFsaXplKGV4
ZWN1dGlvbkNvbnRleHQobV9sZXhpY2FsR2xvYmFsT2JqZWN0KSwgVVJMKFVSTCgpLCB1cmwtPnN0
cmluZygpKSwgdHlwZS0+c3RyaW5nKCksIHNpemUsIGJsb2JGaWxlUGF0aEZvckJsb2JVUkwodXJs
LT5zdHJpbmcoKSkpLmdldCgpKTsKKyAgICAgICAgICAgIHJldHVybiBnZXRKU1ZhbHVlKEJsb2I6
OmRlc2VyaWFsaXplKGV4ZWN1dGlvbkNvbnRleHQobV9sZXhpY2FsR2xvYmFsT2JqZWN0KSwgVVJM
IHsgdXJsLT5zdHJpbmcoKSB9LCB0eXBlLT5zdHJpbmcoKSwgc2l6ZSwgYmxvYkZpbGVQYXRoRm9y
QmxvYlVSTCh1cmwtPnN0cmluZygpKSkuZ2V0KCkpOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
U3RyaW5nVGFnOiB7CiAgICAgICAgICAgICBDYWNoZWRTdHJpbmdSZWYgY2FjaGVkU3RyaW5nOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVu
c2lvbkFjdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVu
dEV4dGVuc2lvbkFjdGlvbnMuY3BwCmluZGV4IGRiNmY1MDhjNGI3NzAyMDAxOGViYTMyMmUwMWIx
NDI4OTQ4MjBkODIuLmQ1OTZkYTQwOGI3ODdjMWRmNjYxOTM2Y2MwYzIxZTQ4Mzk5ZTJmODcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNp
b25BY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250
ZW50RXh0ZW5zaW9uQWN0aW9ucy5jcHAKQEAgLTMwMyw3ICszMDMsNyBAQCBFeHBlY3RlZDxSZWRp
cmVjdEFjdGlvbiwgc3RkOjplcnJvcl9jb2RlPiBSZWRpcmVjdEFjdGlvbjo6cGFyc2UoY29uc3Qg
SlNPTjo6T2JqZQogICAgIH0KIAogICAgIGlmIChhdXRvIHVybFN0cmluZyA9IHJlZGlyZWN0LT5n
ZXRTdHJpbmcoInVybCIpOyAhIXVybFN0cmluZykgewotICAgICAgICBhdXRvIHVybCA9IFVSTChV
UkwoKSwgdXJsU3RyaW5nKTsKKyAgICAgICAgVVJMIHVybCB7IHVybFN0cmluZyB9OwogICAgICAg
ICBpZiAoIXVybC5pc1ZhbGlkKCkpCiAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQo
Q29udGVudEV4dGVuc2lvbkVycm9yOjpKU09OUmVkaXJlY3RVUkxJbnZhbGlkKTsKICAgICAgICAg
aWYgKHVybC5wcm90b2NvbElzSmF2YVNjcmlwdCgpKQpAQCAtMzgyLDcgKzM4Miw3IEBAIHZvaWQg
UmVkaXJlY3RBY3Rpb246OmFwcGx5VG9SZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgVVJMJiBleHRlbnNpCiAgICAgICAgIGFjdGlvbi5hcHBseVRvVVJMKHVybCk7CiAgICAg
ICAgIHJlcXVlc3Quc2V0VVJMKFdURk1vdmUodXJsKSk7CiAgICAgfSwgWyZdIChjb25zdCBVUkxB
Y3Rpb24mIGFjdGlvbikgewotICAgICAgICByZXF1ZXN0LnNldFVSTChVUkwoVVJMKCksIGFjdGlv
bi51cmwpKTsKKyAgICAgICAgcmVxdWVzdC5zZXRVUkwoVVJMIHsgYWN0aW9uLnVybCB9KTsKICAg
ICB9KSwgYWN0aW9uKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggYzJmZjM1ZmU1
MTMzNGMxYTE1MTBkMDVlOTIwZDVjYjQ5M2ZhYWM1OS4uMWU5N2UwNWY4NDYxNzA0MTNhMWJjNTI0
YzU1ZTA3ZTg0MmVmMjE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC01MzM5LDcgKzUz
MzksNyBAQCBTdHJpbmcgRG9jdW1lbnQ6OnJlZmVycmVyKCkKICAgICAgICAgICAgIFVSTCByZWZl
cnJlclVSTCB7IFVSTCgpLCByZWZlcnJlclN0ciB9OwogICAgICAgICAgICAgUmVnaXN0cmFibGVE
b21haW4gcmVmZXJyZXJSZWdpc3RyYWJsZURvbWFpbiB7IHJlZmVycmVyVVJMIH07CiAgICAgICAg
ICAgICBpZiAoIXJlZmVycmVyUmVnaXN0cmFibGVEb21haW4ubWF0Y2hlcyhzZWN1cml0eU9yaWdp
bigpLmRhdGEoKSkpIHsKLSAgICAgICAgICAgICAgICBtX3JlZmVycmVyT3ZlcnJpZGUgPSBVUkwo
VVJMKCksIHJlZmVycmVyVVJMLnByb3RvY29sSG9zdEFuZFBvcnQoKSkuc3RyaW5nKCk7CisgICAg
ICAgICAgICAgICAgbV9yZWZlcnJlck92ZXJyaWRlID0gVVJMKHJlZmVycmVyVVJMLnByb3RvY29s
SG9zdEFuZFBvcnQoKSkuc3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG1fcmVmZXJy
ZXJPdmVycmlkZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9VUkxJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxJ
bnB1dFR5cGUuY3BwCmluZGV4IDJjMjdlMjI5ZTM5MjZhN2Y2M2RmMzY3NDMxODk1ZWI1MTkwYjc5
MDcuLjA2MGE0ZjU4YzE3MzY4OTc1MGE2NWJkOGM2MTFkMjY1ZmVjMzlkZDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1VSTElucHV0VHlwZS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgY29uc3QgQXRvbVN0cmlu
ZyYgVVJMSW5wdXRUeXBlOjpmb3JtQ29udHJvbFR5cGUoKSBjb25zdAogCiBib29sIFVSTElucHV0
VHlwZTo6dHlwZU1pc21hdGNoRm9yKGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuICF2YWx1ZS5pc0VtcHR5KCkgJiYgIVVSTChVUkwoKSwgdmFsdWUpLmlzVmFsaWQoKTsK
KyAgICByZXR1cm4gIXZhbHVlLmlzRW1wdHkoKSAmJiAhVVJMKHZhbHVlKS5pc1ZhbGlkKCk7CiB9
CiAKIGJvb2wgVVJMSW5wdXRUeXBlOjp0eXBlTWlzbWF0Y2goKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggM2JiNzAwM2Q5YTJmNGNiODAwNmUxMTI3
MTBmNmY4ZmJhMDIyOGJlYy4uMTBjNjYxMzkyMTA4M2ViM2YzMzI3MDE2YWVlZGQ3ZWUwOGMyNjFm
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC04NDksNyAr
ODQ5LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c3RvcExvYWRpbmdBZnRlclhGcmFtZU9wdGlv
bnNPckNvbnRlbnRTZWN1cml0eVBvbGljeURlbmllZCgKICNpZiBFTkFCTEUoSU5URUxMSUdFTlRf
VFJBQ0tJTkdfUFJFVkVOVElPTikKIHN0YXRpYyBVUkwgbWljcm9zb2Z0VGVhbXNSZWRpcmVjdFVS
TCgpCiB7Ci0gICAgcmV0dXJuIFVSTChVUkwoKSwgImh0dHBzOi8vd3d3Lm1pY3Jvc29mdC5jb20v
ZW4tdXMvbWljcm9zb2Z0LTM2NS9taWNyb3NvZnQtdGVhbXMvIik7CisgICAgcmV0dXJuIFVSTCB7
ICJodHRwczovL3d3dy5taWNyb3NvZnQuY29tL2VuLXVzL21pY3Jvc29mdC0zNjUvbWljcm9zb2Z0
LXRlYW1zLyJfcyB9OwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuY3BwCmluZGV4IGYwM2I0YTQzZmVlYTE3YTc5OTNhYjlm
NzliNGJjYzAzYzkyYTE5YjIuLjRhNTA3MDU0ZTA4NjQ1OTRkOGNlYzY1YzZhNjEwZWJhMTVjZjA4
ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50LmNwcApAQCAtMTU0LDcgKzE1NCw3IEBAIEV4cGVjdGVkPFByaXZhdGVDbGlja01lYXN1cmVt
ZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhLCBTdHJpbmc+IFByaXZhdGVDbGlja01lCiAgICAg
ICAgICAgICBpZiAoIXNvdXJjZURvbWFpbi5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIG1ha2VVbmV4cGVjdGVkKCJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gVHJpZ2dlcmlu
ZyBldmVudCB3YXMgbm90IGFjY2VwdGVkIGJlY2F1c2UgdGhlIFVSTCBoYWQgbXVsdGlwbGUgYXR0
cmlidXRpb25Tb3VyY2UgcXVlcnkgcGFyYW1ldGVycy4iX3MpOwogCi0gICAgICAgICAgICBhdXRv
IGF0dHJpYnV0aW9uU291cmNlVVJMID0gVVJMKFVSTCgpLCBwYXJhbWV0ZXIudmFsdWUpOworICAg
ICAgICAgICAgVVJMIGF0dHJpYnV0aW9uU291cmNlVVJMIHsgcGFyYW1ldGVyLnZhbHVlIH07CiAg
ICAgICAgICAgICBpZiAoIWF0dHJpYnV0aW9uU291cmNlVVJMLmlzVmFsaWQoKSB8fCAoYXR0cmli
dXRpb25Tb3VyY2VVUkwuaGFzUGF0aCgpICYmIGF0dHJpYnV0aW9uU291cmNlVVJMLnBhdGgoKS5s
ZW5ndGgoKSA+IDEpIHx8IGF0dHJpYnV0aW9uU291cmNlVVJMLmhhc0NyZWRlbnRpYWxzKCkgfHwg
YXR0cmlidXRpb25Tb3VyY2VVUkwuaGFzUXVlcnkoKSB8fCBhdHRyaWJ1dGlvblNvdXJjZVVSTC5o
YXNGcmFnbWVudElkZW50aWZpZXIoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhw
ZWN0ZWQoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBUcmlnZ2VyaW5nIGV2ZW50IHdhcyBu
b3QgYWNjZXB0ZWQgYmVjYXVzZSB0aGUgVVJMJ3MgYXR0cmlidXRpb25Tb3VyY2UgcXVlcnkgcGFy
YW1ldGVyIHdhcyBub3QgYSB2YWxpZCBVUkwgb3Igd2FzIGEgVVJMIHdpdGggYSBwYXRoLCBjcmVk
ZW50aWFscywgcXVlcnkgc3RyaW5nLCBvciBmcmFnbWVudC4iX3MpOwogICAgICAgICAgICAgc291
cmNlRG9tYWluID0gUmVnaXN0cmFibGVEb21haW4geyBhdHRyaWJ1dGlvblNvdXJjZVVSTCB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZS5jcHAKaW5kZXggNmI5ZTdlMjk1ZmQ2ZmIyMGZmMGQ3NGZkY2YyM2ZjNjYw
MGE2MDAzZi4uYTAyYmE0MGM3N2Q1MTM2MWI3OTE2YjMzMTE5NjYxZTlhNTQ4YmI0NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UuY3BwCkBAIC0xNDk1LDcgKzE0OTUsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlOjpkZWxldGVDYWNoZUZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
IHNlYwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgVVJMIG9yaWdpblVSTChVUkwoKSwg
c2VjdXJpdHlPcmlnaW4udG9TdHJpbmcoKSk7CisgICAgVVJMIG9yaWdpblVSTCA9IHNlY3VyaXR5
T3JpZ2luLnRvVVJMKCk7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIHVybCA6ICp1cmxzKSB7CiAg
ICAgICAgIGlmICghcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKHVybCwgb3JpZ2luVVJMKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFy
Y2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJj
aGl2ZS5jcHAKaW5kZXggZGVkNzZmYjhhOTE4NjliMTZjMzg0NzE0ZTA1MjM3YjIzM2UzOWRlYi4u
MDczMjRkZDFlMDBjYTIzZTNkZTMwODVhMjcwZjhlYjM1MTc1YTU5YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKQEAg
LTIyNSw3ICsyMjUsNyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBMZWdhY3lXZWJBcmNoaXZl
OjpjcmVhdGVSZXNvdXJjZShDRkRpY3Rpb25hcnlSZWYgZGljdGlvbgogICAgICAgICByZXNwb25z
ZSA9IGNyZWF0ZVJlc291cmNlUmVzcG9uc2VGcm9tUHJvcGVydHlMaXN0RGF0YShyZXNvdXJjZVJl
c3BvbnNlRGF0YSwgcmVzb3VyY2VSZXNwb25zZVZlcnNpb24pOwogICAgIH0KIAotICAgIHJldHVy
biBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZXNvdXJjZURh
dGEpLCBVUkwoVVJMKCksIHVybCksIG1pbWVUeXBlLCB0ZXh0RW5jb2RpbmcsIGZyYW1lTmFtZSwg
cmVzcG9uc2UpOworICAgIHJldHVybiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShyZXNvdXJjZURhdGEpLCBVUkwgeyB1cmwgfSwgbWltZVR5cGUsIHRleHRFbmNv
ZGluZywgZnJhbWVOYW1lLCByZXNwb25zZSk7CiB9CiAKIFJlZjxMZWdhY3lXZWJBcmNoaXZlPiBM
ZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCmluZGV4IGU1MTg2ZWZiMGI0ZmE3MGNiNjA5
MzFmNDg0ZTUwMGNjMTBlMDBiY2IuLmNkZTdhZTRjYzEwZWVmNWE2YjM4NDgyNzEwNTdiMzcwOGY1
YjU3MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01I
VE1MUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9N
SFRNTFBhcnNlci5jcHAKQEAgLTIxOSw3ICsyMTksNyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNl
PiBNSFRNTFBhcnNlcjo6cGFyc2VOZXh0UGFydChjb25zdCBNSU1FSGVhZGVyJiBtaW1lSGVhZGVy
LAogICAgIC8vIEZJWE1FOiB0aGUgVVJMIGluIHRoZSBNSU1FIGhlYWRlciBjb3VsZCBiZSByZWxh
dGl2ZSwgd2Ugc2hvdWxkIHJlc29sdmUgaXQgaWYgaXQgaXMuCiAgICAgLy8gVGhlIHNwZWNzIG1l
bnRpb25zIDUgd2F5cyB0byByZXNvbHZlIGEgVVJMOiBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRt
bC9yZmMyNTU3I3NlY3Rpb24tNQogICAgIC8vIElFIGFuZCBGaXJlZm94IChVTk1odCkgc2VlbSB0
byBnZW5lcmF0ZSBvbmx5IGFic29sdXRlIFVSTHMuCi0gICAgVVJMIGxvY2F0aW9uID0gVVJMKFVS
TCgpLCBtaW1lSGVhZGVyLmNvbnRlbnRMb2NhdGlvbigpKTsKKyAgICBVUkwgbG9jYXRpb24geyBt
aW1lSGVhZGVyLmNvbnRlbnRMb2NhdGlvbigpIH07CiAgICAgcmV0dXJuIEFyY2hpdmVSZXNvdXJj
ZTo6Y3JlYXRlKFdURk1vdmUoY29udGVudEJ1ZmZlciksIGxvY2F0aW9uLCBtaW1lSGVhZGVyLmNv
bnRlbnRUeXBlKCksIG1pbWVIZWFkZXIuY2hhcnNldCgpLCBTdHJpbmcoKSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCA1MTQ3NTA3ZDZhMDRiZmNiMmI1OGZhN2E2OWVmZjBj
ZTcyNGM5MWY1Li5lODViZTVhYjQxMWMzOTJmMGJjYTQ1NzJmZWYxMDJkOTIzOWU4ZTg4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC0yNTgyLDggKzI1ODIsOCBAQCBFeGNlcHRpb25P
cjxSZWZQdHI8V2luZG93UHJveHk+PiBET01XaW5kb3c6Om9wZW4oRE9NV2luZG93JiBhY3RpdmVX
aW5kb3csIERPTVdpbgogI2lmIEVOQUJMRShJTlRFTExJR0VOVF9UUkFDS0lOR19QUkVWRU5USU9O
KQogICAgIGlmIChSZWZQdHIgZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpKSB7CiAgICAgICAg
IGlmIChkb2N1bWVudC0+c2V0dGluZ3MoKS5uZWVkc1NpdGVTcGVjaWZpY1F1aXJrcygpICYmIHVy
bFN0cmluZ1RvT3BlbiA9PSBRdWlya3M6OkJCQ1JhZGlvUGxheWVyVVJMU3RyaW5nKCkpIHsKLSAg
ICAgICAgICAgIGF1dG8gcmFkaW9QbGF5ZXJEb21haW4gPSBSZWdpc3RyYWJsZURvbWFpbihVUkwo
VVJMKCksIFF1aXJrczo6c3RhdGljUmFkaW9QbGF5ZXJVUkxTdHJpbmcoKSkpOwotICAgICAgICAg
ICAgYXV0byBCQkNEb21haW4gPSBSZWdpc3RyYWJsZURvbWFpbihVUkwoVVJMKCksIFF1aXJrczo6
QkJDUmFkaW9QbGF5ZXJVUkxTdHJpbmcoKSkpOworICAgICAgICAgICAgYXV0byByYWRpb1BsYXll
ckRvbWFpbiA9IFJlZ2lzdHJhYmxlRG9tYWluKFVSTCB7IFF1aXJrczo6c3RhdGljUmFkaW9QbGF5
ZXJVUkxTdHJpbmcoKSB9KTsKKyAgICAgICAgICAgIGF1dG8gQkJDRG9tYWluID0gUmVnaXN0cmFi
bGVEb21haW4oVVJMIHsgUXVpcmtzOjpCQkNSYWRpb1BsYXllclVSTFN0cmluZygpIH0pOwogICAg
ICAgICAgICAgaWYgKCFSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkuaGFzQ3Jvc3NQYWdl
U3RvcmFnZUFjY2VzcyhyYWRpb1BsYXllckRvbWFpbiwgQkJDRG9tYWluKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gUmVmUHRyPFdpbmRvd1Byb3h5PiB7IG51bGxwdHIgfTsKICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9RdWlya3MuY3BwCmluZGV4IDZjY2JlMzFmNmFhMDVlNmVjMzk3YzY3ZGZjOTQ0Y2U1
ZjQ5YzUxZmYuLmMzYzZmZWNlZWRhZWMzMjg2ODU2OWY5NzM5YzQxMGEyY2ViYWU1MzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1F1aXJrcy5jcHAKQEAgLTEwOTgsNyArMTA5OCw3IEBAIGNvbnN0IFN0cmluZyYgUXVp
cmtzOjpzdGF0aWNSYWRpb1BsYXllclVSTFN0cmluZygpCiAKIHN0YXRpYyBib29sIGlzQkJDRG9t
YWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pCiB7Ci0gICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFJlZ2lzdHJhYmxlRG9tYWluPiBCQkNEb21haW4gPSBSZWdpc3RyYWJsZURvbWFp
bihVUkwoVVJMKCksIFF1aXJrczo6QkJDUmFkaW9QbGF5ZXJVUkxTdHJpbmcoKSkpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxSZWdpc3RyYWJsZURvbWFpbj4gQkJDRG9tYWluID0gUmVnaXN0
cmFibGVEb21haW4oVVJMIHsgUXVpcmtzOjpCQkNSYWRpb1BsYXllclVSTFN0cmluZygpIH0pOwog
ICAgIHJldHVybiBkb21haW4gPT0gQkJDRG9tYWluOwogfQogCkBAIC0xMTcyLDcgKzExNzIsNyBA
QCBRdWlya3M6OlN0b3JhZ2VBY2Nlc3NSZXN1bHQgUXVpcmtzOjp0cmlnZ2VyT3B0aW9uYWxTdG9y
YWdlQWNjZXNzUXVpcmsoRWxlbWVudCYgZQogICAgICAgICBzZXQuYWRkKFJlZ2lzdHJhYmxlRG9t
YWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcoInRoZWludmVu
dG9yeS5jb20iX3MpKTsKICAgICAgICAgcmV0dXJuIHNldDsKICAgICB9KCk7Ci0gICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFVSTD4ga2luamFVUkwgPSBVUkwoVVJMKCksICJodHRwczovL2tpbmph
LmNvbSIpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVUkw+IGtpbmphVVJMID0gVVJMIHsg
Imh0dHBzOi8va2luamEuY29tIiB9OwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZWdpc3Ry
YWJsZURvbWFpbj4ga2luamFEb21haW4geyBraW5qYVVSTCB9OwogCiAgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFJlZ2lzdHJhYmxlRG9tYWluPiB5b3VUdWJlRG9tYWluID0gUmVnaXN0cmFibGVE
b21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZygieW91dHVi
ZS5jb20iX3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAppbmRleCAwY2I0
OWFmN2M1NTAwZDE3ODQ0N2I5NTY2YTgzNjRhMTY0YTk4ZGU1Li4yNzM4YWQxYjlhZjQ4YmFmOTQx
MTcyODM4MTk2NmQ1ZDA0MjBjNzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
Y3VyaXR5T3JpZ2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2lu
LmNwcApAQCAtNTkwLDEzICs1OTAsMTMgQEAgYm9vbCBzZXJpYWxpemVkT3JpZ2luc01hdGNoKGNv
bnN0IFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4xLCBjb25zdCBTZWN1cml0eU9yaWdpbioKIAogUmVm
PFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhjb25zdCBT
dHJpbmcmIG9yaWdpblN0cmluZykKIHsKLSAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW46OmNyZWF0
ZShVUkwoVVJMKCksIG9yaWdpblN0cmluZykpOworICAgIHJldHVybiBTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlKFVSTCB7IG9yaWdpblN0cmluZyB9KTsKIH0KIAogUmVmPFNlY3VyaXR5T3JpZ2luPiBT
ZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIGNvbnN0IFN0cmlu
ZyYgaG9zdCwgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCkKIHsKICAgICBTdHJpbmcgZGVj
b2RlZEhvc3QgPSBQQUw6OmRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhob3N0KTsKLSAgICBhdXRv
IG9yaWdpbiA9IGNyZWF0ZShVUkwoVVJMKCksIHByb3RvY29sICsgIjovLyIgKyBob3N0ICsgIi8i
KSk7CisgICAgYXV0byBvcmlnaW4gPSBjcmVhdGUoVVJMIHsgcHJvdG9jb2wgKyAiOi8vIiArIGhv
c3QgKyAiLyIgfSk7CiAgICAgaWYgKHBvcnQgJiYgIVdURjo6aXNEZWZhdWx0UG9ydEZvclByb3Rv
Y29sKCpwb3J0LCBwcm90b2NvbCkpCiAgICAgICAgIG9yaWdpbi0+bV9kYXRhLnBvcnQgPSBwb3J0
OwogICAgIHJldHVybiBvcmlnaW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
Y3VyaXR5T3JpZ2luRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2lu
RGF0YS5jcHAKaW5kZXggMWFiNzdmNmVkZjMzOGVlY2NiNTdjYzQ1Y2U1NDJhYzNhOWM0YzQyMS4u
MmQzODZkYjFmZjNjNjJjYWZhNzk5ZTU4MmY3ZTVjMDI1YmYwZGMzYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcApAQCAtNTEsNyArNTEsNyBAQCBTdHJpbmcg
U2VjdXJpdHlPcmlnaW5EYXRhOjp0b1N0cmluZygpIGNvbnN0CiAKIFVSTCBTZWN1cml0eU9yaWdp
bkRhdGE6OnRvVVJMKCkgY29uc3QKIHsKLSAgICByZXR1cm4gVVJMIHsgVVJMKCksIHRvU3RyaW5n
KCkgfTsKKyAgICByZXR1cm4gVVJMIHsgdG9TdHJpbmcoKSB9OwogfQogCiBTZWN1cml0eU9yaWdp
bkRhdGEgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUoRnJhbWUqIGZyYW1lKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcAppbmRleCA2OGI0OTE0MmI2ZTQ0M2M5M2EzYWFj
OThkNDRmMGU2ODIyNzUzYmNhLi5hOWY1ZTE4YjIxODUyNjg2NGU0ZWZlNWFkYzMwMzIwMTdmMWMy
YzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcApAQCAtOTEsOCArOTEs
OCBAQCBTdHJpbmcgU2VjdXJpdHlQb2xpY3k6OnJlZmVycmVyVG9PcmlnaW5TdHJpbmcoY29uc3Qg
U3RyaW5nJiByZWZlcnJlcikKIAogU3RyaW5nIFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVy
cmVySGVhZGVyKFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5LCBjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiByZWZlcnJlcikKIHsKLSAgICBBU1NFUlQocmVmZXJyZXIgPT0gVVJMKFVS
TCgpLCByZWZlcnJlcikuc3RyaXBwZWRGb3JVc2VBc1JlZmVycmVyKCkKLSAgICAgICAgfHwgcmVm
ZXJyZXIgPT0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShVUkwoVVJMKCksIHJlZmVycmVyKSktPnRv
U3RyaW5nKCkpOworICAgIEFTU0VSVChyZWZlcnJlciA9PSBVUkwocmVmZXJyZXIpLnN0cmlwcGVk
Rm9yVXNlQXNSZWZlcnJlcigpCisgICAgICAgIHx8IHJlZmVycmVyID09IFNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGUoVVJMIHsgcmVmZXJyZXIgfSktPnRvU3RyaW5nKCkpOwogCiAgICAgaWYgKHJlZmVy
cmVyLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKaW5kZXggOGEyYmE0Y2Zm
YTI2ZGNjYmJkMWU3NWVlNTAxMTNhODY2YmU1YTJmYS4uOWIzZDdiZDE2ZTU1Y2JiYzM3MmQyNGVm
MTU4OGZmNTljMDNlNjRmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29u
dGVudFNlY3VyaXR5UG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250
ZW50U2VjdXJpdHlQb2xpY3kuY3BwCkBAIC03NjksNyArNzY5LDcgQEAgdm9pZCBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OnJlcG9ydFZpb2xhdGlvbihjb25zdCBTdHJpbmcmIGVmZmVjdGl2ZVZpb2xh
dGVkRGlyZWMKICAgICAgICAgYmxvY2tlZFVSSSA9IGJsb2NrZWRVUkxTdHJpbmc7CiAgICAgZWxz
ZSB7CiAgICAgICAgIC8vIElmIHRoZXJlIGlzIGEgcmVkaXJlY3QgdGhlbiB3ZSB1c2UgdGhlIHBy
ZS1yZWRpcmVjdCBVUkw6IGh0dHBzOi8vd3d3LnczLm9yZy9UUi9DU1AzLyNzZWN1cml0eS12aW9s
YXRpb24tcmVwb3J0cy4KLSAgICAgICAgYmxvY2tlZFVSSSA9IGNyZWF0ZVVSTEZvclJlcG9ydGlu
ZyhwcmVSZWRpcmVjdFVSTC5pc051bGwoKSA/IFVSTChVUkwoKSwgYmxvY2tlZFVSTFN0cmluZykg
OiBwcmVSZWRpcmVjdFVSTCwgZWZmZWN0aXZlVmlvbGF0ZWREaXJlY3RpdmUpOworICAgICAgICBi
bG9ja2VkVVJJID0gY3JlYXRlVVJMRm9yUmVwb3J0aW5nKHByZVJlZGlyZWN0VVJMLmlzTnVsbCgp
ID8gVVJMIHsgYmxvY2tlZFVSTFN0cmluZyB9IDogcHJlUmVkaXJlY3RVUkwsIGVmZmVjdGl2ZVZp
b2xhdGVkRGlyZWN0aXZlKTsKICAgICB9CiAKICAgICBpbmZvLmRvY3VtZW50VVJJID0gbV9kb2N1
bWVudFVSTCA/IG1fZG9jdW1lbnRVUkwudmFsdWUoKS5zdHJpcHBlZEZvclVzZUFzUmVmZXJyZXIo
KSA6IGJsb2NrZWRVUkk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCA2YmRhMmZlMGI4YWEz
ZDI4NWExNmYxMTAxMjUzYTE2ODVjYWVhY2Y4Li4xMzQ1MTAwMWVjODdhNzY1NmExYWU2NmQyNWZl
MDQ4NGI1MjhiMDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTM2Miw3ICszNjIsNyBA
QCBIYXNoU2V0PFNlY3VyaXR5T3JpZ2luRGF0YT4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6b3JpZ2luc0luTWVkaWFDYQogICAgICAgICByZXR1cm4gb3JpZ2luczsKIAogICAg
IGZvciAoTlNTdHJpbmcgKmtleSBpbiBbYXNzZXRDYWNoZSBhbGxLZXlzXSkgewotICAgICAgICBV
Ukwga2V5QXNVUkwgPSBVUkwoVVJMKCksIGtleSk7CisgICAgICAgIFVSTCBrZXlBc1VSTCB7IGtl
eSB9OwogICAgICAgICBpZiAoa2V5QXNVUkwuaXNWYWxpZCgpKQogICAgICAgICAgICAgb3JpZ2lu
cy5hZGQoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tVVJMKGtleUFzVVJMKSk7CiAgICAgfQpAQCAt
NDI2LDcgKzQyNiw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhjb25zdCBTdHJpbmcmCiAgICAgICAgIHJldHVybjsK
IAogICAgIGZvciAoTlNTdHJpbmcgKmtleSBpbiBbYXNzZXRDYWNoZSBhbGxLZXlzXSkgewotICAg
ICAgICBVUkwga2V5QXNVUkwgPSBVUkwoVVJMKCksIGtleSk7CisgICAgICAgIFVSTCBrZXlBc1VS
TCB7IGtleSB9OwogICAgICAgICBpZiAoa2V5QXNVUkwuaXNWYWxpZCgpKSB7CiAgICAgICAgICAg
ICBpZiAob3JpZ2lucy5jb250YWlucyhTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21VUkwoa2V5QXNV
UkwpKSkKICAgICAgICAgICAgICAgICBbYXNzZXRDYWNoZSByZW1vdmVFbnRyeUZvcktleTprZXld
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRl
eCA5ZmM4ZGYwMTllNTE0NjA1YTUzMDdmZmM5MDJiMTAwZTQ5MjllODMzLi5mNzk5OTgzZGUyNDAx
NDk0NDI2Y2VhMTMzODJjOGE5YjJhMGIwZGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtOTIyLDcgKzkyMiw3IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzZXRQbGF5YmluVVJMKGNvbnN0IFVSTCYgdXJsKQogICAg
IGlmICh1cmwuaXNMb2NhbEZpbGUoKSkKICAgICAgICAgY2xlYW5VUkxTdHJpbmcgPSBjbGVhblVS
TFN0cmluZy5zdWJzdHJpbmcoMCwgdXJsLnBhdGhFbmQoKSk7CiAKLSAgICBtX3VybCA9IFVSTChV
UkwoKSwgY2xlYW5VUkxTdHJpbmcpOworICAgIG1fdXJsID0gVVJMIHsgY2xlYW5VUkxTdHJpbmcg
fTsKICAgICBHU1RfSU5GT19PQkpFQ1QocGlwZWxpbmUoKSwgIkxvYWQgJXMiLCBtX3VybC5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICBnX29iamVjdF9zZXQobV9waXBlbGluZS5nZXQoKSwg
InVyaSIsIG1fdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIG51bGxwdHIpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdl
YlNvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAppbmRleCBiN2IwN2ZmMTQ1NGQ1
NjFhMzAyMTA4YWUzMjI5MWU4ZjgzNDM3YmQ5Li43Njk2ZDFjYjcyYzViNWE3NzVlODI2YTQ3NTk0
NmYxYTFiMmEwOTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVy
LmNwcApAQCAtNjQ0LDcgKzY0NCw3IEBAIHN0YXRpYyB2b2lkIHdlYktpdFdlYlNyY01ha2VSZXF1
ZXN0KFdlYktpdFdlYlNyYyogc3JjLCBEYXRhTXV0ZXhMb2NrZXI8V2ViS2l0V2ViCiAgICAgQVNT
RVJUKG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uICE9IG1lbWJlcnMtPnN0b3BQb3NpdGlvbik7
CiAKICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIlBvc3RpbmcgdGFzayB0byByZXF1ZXN0IFIl
dSAlcyByZXF1ZXN0ZWRQb3NpdGlvbj0lIiBHX0dVSU5UNjRfRk9STUFUICIgc3RvcFBvc2l0aW9u
PSUiIEdfR1VJTlQ2NF9GT1JNQVQsIG1lbWJlcnMtPnJlcXVlc3ROdW1iZXIsIHByaXYtPm9yaWdp
bmFsVVJJLmRhdGEoKSwgbWVtYmVycy0+cmVxdWVzdGVkUG9zaXRpb24sIG1lbWJlcnMtPnN0b3BQ
b3NpdGlvbik7Ci0gICAgVVJMIHVybCA9IFVSTChVUkwoKSwgcHJpdi0+b3JpZ2luYWxVUkkuZGF0
YSgpKTsKKyAgICBVUkwgdXJsIHsgcHJpdi0+b3JpZ2luYWxVUkkuZGF0YSgpIH07CiAKICAgICBS
ZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCh1cmwpOwogICAgIHJlcXVlc3Quc2V0QWxsb3dDb29raWVz
KHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlv
bkRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuY3Bw
CmluZGV4IDlmMTgxZmRmZTUwN2FkNWI3YTQ3YjVjNTgyOTVjZjRmMjcyNWU3ZDguLjYyMTdkZTZh
NWI1MzgxMDlhNGVmZjZhYjY5YTgzOTViN2FiMzdkMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBTZWxl
Y3Rpb25EYXRhOjpzZXRVUklMaXN0KGNvbnN0IFN0cmluZyYgdXJpTGlzdFN0cmluZykKICAgICAg
ICAgaWYgKGxpbmVbMF0gPT0gJyMnKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAg
VVJMIHVybCA9IFVSTChVUkwoKSwgbGluZSk7CisgICAgICAgIFVSTCB1cmwgeyBsaW5lIH07CiAg
ICAgICAgIGlmICh1cmwuaXNWYWxpZCgpKSB7CiAgICAgICAgICAgICBpZiAoIXNldFVSTCkgewog
ICAgICAgICAgICAgICAgIG1fdXJsID0gdXJsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKaW5kZXggYzczYjA0MzEw
ZmNlYzkzYjRhYTZkYWE0MjUwNDFkZDRlOWZmMzg5Zi4uYTQyYmNlMTczMDYyMjRmNzhhM2NlZWM2
MGQ0MzhkYmJjZTI5ZDQyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCkBAIC0zOTQsNyArMzk0LDcgQEAgdm9p
ZCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRIVFRQUmVmZXJyZXIoY29uc3QgU3RyaW5nJiBodHRw
UmVmZXJyZXIpCiAgICAgY29uc3RleHByIHNpemVfdCBtYXhMZW5ndGggPSA0MDk2OwogICAgIGlm
IChodHRwUmVmZXJyZXIubGVuZ3RoKCkgPiBtYXhMZW5ndGgpIHsKICAgICAgICAgUkVMRUFTRV9M
T0coTG9hZGluZywgIlRydW5jYXRpbmcgSFRUUCByZWZlcmVyIik7Ci0gICAgICAgIFN0cmluZyBv
cmlnaW4gPSBVUkwoVVJMKCksIFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoVVJMKFVSTCgpLCBodHRw
UmVmZXJyZXIpKS0+dG9TdHJpbmcoKSkuc3RyaW5nKCk7CisgICAgICAgIFN0cmluZyBvcmlnaW4g
PSBVUkwoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShVUkwgeyBodHRwUmVmZXJyZXIgfSktPnRvU3Ry
aW5nKCkpLnN0cmluZygpOwogICAgICAgICBpZiAob3JpZ2luLmxlbmd0aCgpIDw9IG1heExlbmd0
aCkKICAgICAgICAgICAgIHNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6UmVmZXJl
ciwgb3JpZ2luKTsKICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcAppbmRleCA5NTlmNzdlNWY5OTEzZWFh
YzMzMzZkYTkwNGI1MTFhMjQzODU4ZGFlLi41MTY5MDQ1YzcwNWYwODk4ZTgzMTc0ZTMxNjZlM2E2
MGVkYTk0YjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlRXJyb3JDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBSZXNvdXJj
ZUVycm9yOjpwbGF0Zm9ybUxhenlJbml0KCkKICAgICBpZiAodXNlckluZm8uZ2V0KCkpIHsKICAg
ICAgICAgQ0ZTdHJpbmdSZWYgZmFpbGluZ1VSTFN0cmluZyA9IChDRlN0cmluZ1JlZikgQ0ZEaWN0
aW9uYXJ5R2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGZhaWxpbmdVUkxTdHJpbmdLZXkpOwogICAg
ICAgICBpZiAoZmFpbGluZ1VSTFN0cmluZykKLSAgICAgICAgICAgIG1fZmFpbGluZ1VSTCA9IFVS
TChVUkwoKSwgZmFpbGluZ1VSTFN0cmluZyk7CisgICAgICAgICAgICBtX2ZhaWxpbmdVUkwgPSBV
UkwgeyBmYWlsaW5nVVJMU3RyaW5nIH07CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgQ0ZV
UkxSZWYgZmFpbGluZ1VSTCA9IChDRlVSTFJlZikgQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUodXNlcklu
Zm8uZ2V0KCksIGZhaWxpbmdVUkxLZXkpOwogICAgICAgICAgICAgaWYgKGZhaWxpbmdVUkwpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3Ry
ZWFtSGFuZGxlSW1wbENGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcAppbmRleCBiYzdkZjllYmNkOTZmNTUw
MDkwNjk5ODg0MWEwOTY1YzhmYjhlNjA3Li43MDQwYjMyNjI1NzU3OGM3MTAzYmZlMzY0MTNmYTkz
OWFiZmM1MTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwCkBAIC0xMTAs
NyArMTEwLDcgQEAgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6U29ja2V0U3RyZWFtSGFuZGxlSW1w
bChjb25zdCBVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGwKIAogICAgIEFTU0VSVCh1cmwucHJv
dG9jb2xJcygid3MiKSB8fCB1cmwucHJvdG9jb2xJcygid3NzIikpOwogCi0gICAgVVJMIGh0dHBz
VVJMKFVSTCgpLCAiaHR0cHM6Ly8iICsgbV91cmwuaG9zdCgpKTsKKyAgICBVUkwgaHR0cHNVUkwg
eyAiaHR0cHM6Ly8iICsgbV91cmwuaG9zdCgpIH07CiAgICAgbV9odHRwc1VSTCA9IGh0dHBzVVJM
LmNyZWF0ZUNGVVJMKCk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCmluZGV4IGQwZWYw
ZTcxMTYyYjUzNjNhZDQyNTQxN2Q4NWVjNzIzOGYzZjYyYmUuLjY2YWE2YmI0MzExN2E3OTYxZTVl
NzA1YmNhYjdjOGMzY2Q3OTAxZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApAQCAtMzY2LDcgKzM2Niw3IEBAIHNpemVf
dCBDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2ZUhlYWRlcihTdHJpbmcmJiBoZWFkZXIpCiAgICAgICAg
IG1fcmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoID0gKmxlbmd0aDsKIAogICAgIGlmIChh
dXRvIHByb3h5VXJsID0gbV9jdXJsSGFuZGxlLT5nZXRQcm94eVVybCgpKQotICAgICAgICBtX3Jl
c3BvbnNlLnByb3h5VXJsID0gVVJMKFVSTCgpLCAqcHJveHlVcmwpOworICAgICAgICBtX3Jlc3Bv
bnNlLnByb3h5VXJsID0gVVJMIHsgKnByb3h5VXJsIH07CiAKICAgICBpZiAoYXV0byBhdXRoID0g
bV9jdXJsSGFuZGxlLT5nZXRIdHRwQXV0aEF2YWlsKCkpCiAgICAgICAgIG1fcmVzcG9uc2UuYXZh
aWxhYmxlSHR0cEF1dGggPSAqYXV0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tCmluZGV4IDI1ZmNkYTdhMTAxNmU5
MTM2ZGYyYzAzMzI3ZTA1ZmE0ZTkzNjEzYzIuLjhiOGIxMjYzYjFiOWM2ZjFhNjE4M2Q3MWU4YWQ2
NWE2ZTliNzgxM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL1Jlc291cmNlRXJyb3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbQpAQCAtMTYwLDcgKzE2MCw3IEBAIHZvaWQgUmVz
b3VyY2VFcnJvcjo6cGxhdGZvcm1MYXp5SW5pdCgpCiAgICAgbV9lcnJvckNvZGUgPSBbbV9wbGF0
Zm9ybUVycm9yIGNvZGVdOwogCiAgICAgaWYgKE5TU3RyaW5nKiBmYWlsaW5nVVJMU3RyaW5nID0g
W1ttX3BsYXRmb3JtRXJyb3IgdXNlckluZm9dIHZhbHVlRm9yS2V5OkAiTlNFcnJvckZhaWxpbmdV
UkxTdHJpbmdLZXkiXSkKLSAgICAgICAgbV9mYWlsaW5nVVJMID0gVVJMKFVSTCgpLCBmYWlsaW5n
VVJMU3RyaW5nKTsKKyAgICAgICAgbV9mYWlsaW5nVVJMID0gVVJMIHsgZmFpbGluZ1VSTFN0cmlu
ZyB9OwogICAgIGVsc2UKICAgICAgICAgbV9mYWlsaW5nVVJMID0gVVJMKChOU1VSTCAqKVtbbV9w
bGF0Zm9ybUVycm9yIHVzZXJJbmZvXSB2YWx1ZUZvcktleTpAIk5TRXJyb3JGYWlsaW5nVVJMS2V5
Il0pOwogICAgIC8vIFdvcmthcm91bmQgZm9yIDxyZGFyOi8vcHJvYmxlbS82NTU0MDY3PgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCmluZGV4IDg1Zjk2
ZDg1ZDJiMzcyY2ZjMjE3MWE4MzQxMWQ1Mjg2OTIwNzNjZDQuLjU3YjZhMGJmZTJjOTZmY2Q1NjJj
NTBmNzhlZmM4MTc5ODQ5NmIxMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9QYXN0ZWJvYXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
UGFzdGVib2FyZFdpbi5jcHAKQEAgLTQ1Miw3ICs0NTIsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKQogICAgIENs
aXBib2FyZERhdGFUeXBlIHdpblR5cGUgPSBjbGlwYm9hcmRUeXBlRnJvbU1JTUVUeXBlKHR5cGUp
OwogCiAgICAgaWYgKHdpblR5cGUgPT0gQ2xpcGJvYXJkRGF0YVR5cGVVUkwpIHsKLSAgICAgICAg
V2ViQ29yZTo6d3JpdGVVUkwobV93cml0YWJsZURhdGFPYmplY3QuZ2V0KCksIFVSTChVUkwoKSwg
ZGF0YSksIFN0cmluZygpLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIFdlYkNvcmU6OndyaXRlVVJM
KG1fd3JpdGFibGVEYXRhT2JqZWN0LmdldCgpLCBVUkwgeyBkYXRhIH0sIFN0cmluZygpLCBmYWxz
ZSwgdHJ1ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcAppbmRleCA5ODNiYjg4YmE3MzE2MDhjNzFhMjU4MWZjYmE4NDRkMDg1N2E4YmRh
Li5lOTU5OTY3MWQ5OGUwZTQyZjQwNGVjOGU2MDQ5YTE4MmZjZjBjMzIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC01Njg4LDcgKzU2ODgsNyBAQCB2b2lkIEludGVybmFs
czo6c2VuZEgyUGluZyhTdHJpbmcgdXJsLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMRG91YmxlPiYm
IHByb21pc2UpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBmcmFtZS0+bG9hZGVyKCku
Y2xpZW50KCkuc2VuZEgyUGluZyhVUkwoVVJMKCksIHVybCksIFtwcm9taXNlID0gV1RGTW92ZShw
cm9taXNlKV0gKEV4cGVjdGVkPFNlY29uZHMsIFJlc291cmNlRXJyb3I+JiYgcmVzdWx0KSBtdXRh
YmxlIHsKKyAgICBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuc2VuZEgyUGluZyhVUkwgeyB1cmwg
fSwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoRXhwZWN0ZWQ8U2Vjb25kcywgUmVzb3Vy
Y2VFcnJvcj4mJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAocmVzdWx0Lmhhc192YWx1
ZSgpKQogICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHJlc3VsdC52YWx1ZSgpLnZhbHVlKCkp
OwogICAgICAgICBlbHNlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452935</attachid>
            <date>2022-02-22 20:08:11 -0800</date>
            <delta_ts>2022-02-22 21:43:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237068-20220222200810.patch</filename>
            <type>text/plain</type>
            <size>41444</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMzQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
NWQ1NDJjNmE3OWY1ZDI5YzY2ZWQzYzBlNDZlMjY2ZGI1ODA2MTY3Li5lMzZjZTczY2E3Y2RiN2U3
YmEwZWJkZjFmOGNkZGFhMWIzMTE3MWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAyMi0wMi0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBhIFVSTCBjb25zdHJ1Y3RvciB0aGF0IHRha2VzIGEgU3RyaW5nCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcwNjgKKworICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBBZG9wdCB0aGUgbmV3IGBV
UkwoY29uc3QgU3RyaW5nJilgIGNvbnN0cnVjdG9yLgorCisgICAgICAgICogQVBJL0pTQVBJR2xv
YmFsT2JqZWN0Lm1tOgorICAgICAgICAoSlNDOjpjb21wdXRlVmFsaWRJbXBvcnRTcGVjaWZpZXIp
OgorCiAyMDIyLTAyLTIyICBBbGV4YW5kZXIgS2FuYXZpbiAgPGFsZXhAbGludXRyb25peC5kZT4K
IAogICAgICAgICBXaGVuIGJ1aWxkaW5nIGludHJvc3BlY3Rpb24gZmlsZXMsIGFkZCBDTUFLRV9D
X0ZMQUdTIHRvIHRoZSBjb21waWxlciBmbGFncy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggMzMyZDA2ZDI2MmE3YWJkYTM4ZjIz
YWQ0OWEwOGM2YjczNmUxMTJjYy4uY2NhYmNhNWJjYzEwNjNmNDUyMDhlYjE2NWM1MmZlMDFkNmUz
NzFmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMi0wMi0yMiAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIFVSTCBjb25zdHJ1Y3RvciB0aGF0IHRha2Vz
IGEgU3RyaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzcwNjgKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBB
ZGQgYSBVUkwgY29uc3RydWN0b3IgdGhhdCB0YWtlcyBhIFN0cmluZyB0byBzaW1wbGlmeSBvdXIg
Y29kZSBiYXNlIGEgYml0LgorCisgICAgICAgICogd3RmL1VSTC5jcHA6CisgICAgICAgIChXVEY6
OlVSTDo6dHJ1bmNhdGVkRm9yVXNlQXNCYXNlIGNvbnN0KToKKyAgICAgICAgKFdURjo6VVJMOjpm
YWtlVVJMV2l0aFJlbGF0aXZlUGFydCk6CisgICAgICAgIChXVEY6OlVSTDo6ZmlsZVVSTFdpdGhG
aWxlU3lzdGVtUGF0aCk6CisgICAgICAgICogd3RmL1VSTC5oOgorICAgICAgICAoV1RGOjpVUkw6
OlVSTCk6CisgICAgICAgIChXVEY6OlVSTDo6ZGVjb2RlKToKKwogMjAyMi0wMi0yMiAgRWxsaW90
dCBXaWxsaWFtcyAgPGVtd0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVwbGFjZSBsZWdhY3ktYnVp
bGQtY29weS1uZXN0ZWQtaGVhZGVycy5weSB3aXRoIGFuIHhjb2RlYnVpbGQgaW52b2NhdGlvbgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IGMwNzQ1NWMyNTNiOWZjNzY5MGMyZjVhMDRhZjAwMTMwY2M4Mzc4M2YuLjQ0
ODc4MTRlZjI4ZmI5YmZkMzBhODBlZDk4Y2IwNzUyZGUyNjZkNmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MCBAQAorMjAyMi0wMi0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBhIFVSTCBjb25zdHJ1Y3RvciB0aGF0IHRha2VzIGEgU3RyaW5nCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcwNjgKKworICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBBZG9wdCB0aGUgbmV3IGBV
UkwoY29uc3QgU3RyaW5nJilgIGNvbnN0cnVjdG9yLgorCisgICAgICAgICogTW9kdWxlcy93ZWJh
dXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXV0
aGVudGljYXRvckNvb3JkaW5hdG9ySW50ZXJuYWw6OnByb2Nlc3NBcHBJZEV4dGVuc2lvbik6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJTb2NrZXQ6OmNvbm5lY3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdE1v
ZHVsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXNvbHZlTW9kdWxlU3BlY2lmaWVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdE1vZHVsZUxvYWRlcjo6ZmV0Y2gpOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0TW9kdWxlTG9hZGVyOjptb2R1bGVVUkwpOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0TW9kdWxlTG9hZGVyOjpyZXNwb25zZVVSTEZyb21SZXF1ZXN0VVJMKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdE1vZHVsZUxvYWRlcjo6aW1wb3J0TW9kdWxlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNs
b25lRGVzZXJpYWxpemVyOjpyZWFkVGVybWluYWwpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNp
b25zL0NvbnRlbnRFeHRlbnNpb25BY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnRFeHRlbnNpb25zOjpSZWRpcmVjdEFjdGlvbjo6cGFyc2UpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEV4dGVuc2lvbnM6OlJlZGlyZWN0QWN0aW9uOjphcHBseVRvUmVxdWVzdCk6CisgICAg
ICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpyZWZl
cnJlcik6CisgICAgICAgICogaHRtbC9VUkxJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VVJMSW5wdXRUeXBlOjp0eXBlTWlzbWF0Y2hGb3IgY29uc3QpOgorICAgICAgICAqIGxvYWRl
ci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjptaWNyb3NvZnRUZWFtc1Jl
ZGlyZWN0VVJMKToKKyAgICAgICAgKiBsb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnBhcnNlQXR0cmli
dXRpb25SZXF1ZXN0UXVlcnkpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTo6ZGVsZXRlQ2FjaGVGb3JPcmlnaW4pOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL2Nm
L0xlZ2FjeVdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2
ZTo6Y3JlYXRlUmVzb3VyY2UpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1M
UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0
KToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01X
aW5kb3c6Om9wZW4pOgorICAgICAgICAqIHBhZ2UvUXVpcmtzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmlzQkJDRG9tYWluKToKKyAgICAgICAgKFdlYkNvcmU6OlF1aXJrczo6dHJpZ2dlck9wdGlv
bmFsU3RvcmFnZUFjY2Vzc1F1aXJrIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3Jp
Z2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3Ry
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUpOgorICAgICAg
ICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YTo6dG9VUkwgY29uc3QpOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlQb2xp
Y3kuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJy
ZXJIZWFkZXIpOgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OnJlcG9ydFZpb2xhdGlv
biBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Om9yaWdpbnNJbk1lZGlhQ2FjaGUp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnNldFBsYXliaW5VUkwpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIu
Y3BwOgorICAgICAgICAod2ViS2l0V2ViU3JjTWFrZVJlcXVlc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2d0ay9TZWxlY3Rpb25EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkRh
dGE6OnNldFVSSUxpc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1
ZXN0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRI
VFRQUmVmZXJyZXIpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJv
ckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OnBsYXRmb3JtTGF6eUlu
aXQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1w
bENGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OlNv
Y2tldFN0cmVhbUhhbmRsZUltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2
ZUhlYWRlcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OnBsYXRmb3JtTGF6eUluaXQp
OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlU3RyaW5nKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVy
bmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNlbmRIMlBpbmcpOgorCiAy
MDIyLTAyLTIyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgU2hh
cmUgbW9yZSBjb2RlIGJldHdlZW4gZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50cygpIGFuZCBk
aXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0Lm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0FQSUdsb2JhbE9iamVjdC5tbQppbmRleCA2NTM4ZDMzNmM4ODk0MWUxMzc3ZGVjMGRhOGU0
ZmJkNzE5N2Q2NzRiLi5iM2UyYWU0NDFjNGVjNTIzNDJhZmU5ZDU0OWU0YWU2MjM4Y2UzNDVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0Lm1t
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QubW0KQEAg
LTgyLDcgKzgyLDcgQEAgdm9pZCBKU0FQSUdsb2JhbE9iamVjdDo6cmVwb3J0VW5jYXVnaHRFeGNl
cHRpb25BdEV2ZW50TG9vcChKU0dsb2JhbE9iamVjdCogZ2xvYmEKIAogc3RhdGljIEV4cGVjdGVk
PFVSTCwgU3RyaW5nPiBjb21wdXRlVmFsaWRJbXBvcnRTcGVjaWZpZXIoY29uc3QgVVJMJiBiYXNl
LCBjb25zdCBTdHJpbmcmIHNwZWNpZmllcikKIHsKLSAgICBVUkwgYWJzb2x1dGVVUkwoVVJMKCks
IHNwZWNpZmllcik7CisgICAgVVJMIGFic29sdXRlVVJMKHNwZWNpZmllcik7CiAgICAgaWYgKGFi
c29sdXRlVVJMLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIGFic29sdXRlVVJMOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwIGIvU291cmNlL1dURi93dGYvVVJMLmNwcApp
bmRleCA4MzMwMWFkY2Q1MmE0YWVkODM2N2JjODQxYzNjZGVlODgzYzYwOWQwLi5hNGFmYmFjNTZi
MjU5MzQ1Njg0ZjRkZjJhNWJiMjRiZjM5MzJiY2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9VUkwuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAKQEAgLTY0LDcgKzY0LDEyIEBA
IHZvaWQgVVJMOjppbnZhbGlkYXRlKCkKIAogVVJMOjpVUkwoY29uc3QgVVJMJiBiYXNlLCBjb25z
dCBTdHJpbmcmIHJlbGF0aXZlLCBjb25zdCBVUkxUZXh0RW5jb2RpbmcqIGVuY29kaW5nKQogewot
ICAgICp0aGlzID0gVVJMUGFyc2VyKHJlbGF0aXZlLCBiYXNlLCBlbmNvZGluZykucmVzdWx0KCk7
CisgICAgKnRoaXMgPSBVUkxQYXJzZXIoU3RyaW5nIHsgcmVsYXRpdmUgfSwgIGJhc2UsIGVuY29k
aW5nKS5yZXN1bHQoKTsKK30KKworVVJMOjpVUkwoU3RyaW5nJiYgYWJzb2x1dGVVUkwsIGNvbnN0
IFVSTFRleHRFbmNvZGluZyogZW5jb2RpbmcpCit7CisgICAgKnRoaXMgPSBVUkxQYXJzZXIoV1RG
TW92ZShhYnNvbHV0ZVVSTCksIFVSTCgpLCBlbmNvZGluZykucmVzdWx0KCk7CiB9CiAKIHN0YXRp
YyBib29sIHNob3VsZFRyaW1Gcm9tVVJMKFVDaGFyIGNoYXJhY3RlcikKQEAgLTIzNSw3ICsyNDAs
NyBAQCBTdHJpbmdWaWV3IFVSTDo6ZnJhZ21lbnRJZGVudGlmaWVyKCkgY29uc3QKIAogVVJMIFVS
TDo6dHJ1bmNhdGVkRm9yVXNlQXNCYXNlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gVVJMKFVSTCgp
LCBtX3N0cmluZy5sZWZ0KG1fcGF0aEFmdGVyTGFzdFNsYXNoKSk7CisgICAgcmV0dXJuIFVSTCht
X3N0cmluZy5sZWZ0KG1fcGF0aEFmdGVyTGFzdFNsYXNoKSk7CiB9CiAKICNpZiAhVVNFKENGKQpA
QCAtNTcxLDkgKzU3Niw5IEBAIHN0YXRpYyBTdHJpbmcgcGVyY2VudEVuY29kZUNoYXJhY3RlcnMo
Y29uc3QgU3RyaW5nVHlwZSYgaW5wdXQsIGJvb2woKnNob3VsZEVuY29kCiAgICAgICAgIHJldHVy
biBpbnB1dDsKIH0KIAotdm9pZCBVUkw6OnBhcnNlKGNvbnN0IFN0cmluZyYgc3RyaW5nKQordm9p
ZCBVUkw6OnBhcnNlKFN0cmluZyYmIHN0cmluZykKIHsKLSAgICAqdGhpcyA9IFVSTFBhcnNlcihz
dHJpbmcpLnJlc3VsdCgpOworICAgICp0aGlzID0gVVJMUGFyc2VyKFdURk1vdmUoc3RyaW5nKSku
cmVzdWx0KCk7CiB9CiAKIHZvaWQgVVJMOjpyZW1vdmUodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVk
IGxlbmd0aCkKQEAgLTU4Myw5ICs1ODgsOSBAQCB2b2lkIFVSTDo6cmVtb3ZlKHVuc2lnbmVkIHN0
YXJ0LCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgQVNTRVJUKHN0YXJ0IDwgbV9zdHJpbmcubGVuZ3Ro
KCkpOwogICAgIEFTU0VSVChsZW5ndGggPD0gbV9zdHJpbmcubGVuZ3RoKCkgLSBzdGFydCk7CiAK
LSAgICBhdXRvIHN0cmluZ0FmdGVyUmVtb3ZhbCA9IFdURk1vdmUobV9zdHJpbmcpOworICAgIGF1
dG8gc3RyaW5nQWZ0ZXJSZW1vdmFsID0gc3RkOjpleGNoYW5nZShtX3N0cmluZywgeyB9KTsKICAg
ICBzdHJpbmdBZnRlclJlbW92YWwucmVtb3ZlKHN0YXJ0LCBsZW5ndGgpOwotICAgIHBhcnNlKHN0
cmluZ0FmdGVyUmVtb3ZhbCk7CisgICAgcGFyc2UoV1RGTW92ZShzdHJpbmdBZnRlclJlbW92YWwp
KTsKIH0KIAogdm9pZCBVUkw6OnNldFVzZXIoU3RyaW5nVmlldyBuZXdVc2VyKQpAQCAtMTA1NCwx
MiArMTA1OSwxMiBAQCBTdHJpbmcgVVJMOjpzdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgo
dW5zaWduZWQgbGVuZ3RoKSBjb25zdAogCiBVUkwgVVJMOjpmYWtlVVJMV2l0aFJlbGF0aXZlUGFy
dChTdHJpbmdWaWV3IHJlbGF0aXZlUGFydCkKIHsKLSAgICByZXR1cm4gVVJMKFVSTCgpLCBtYWtl
U3RyaW5nKCJ3ZWJraXQtZmFrZS11cmw6Ly8iLCBjcmVhdGVWZXJzaW9uNFVVSURTdHJpbmcoKSwg
Jy8nLCByZWxhdGl2ZVBhcnQpKTsKKyAgICByZXR1cm4gVVJMKG1ha2VTdHJpbmcoIndlYmtpdC1m
YWtlLXVybDovLyIsIGNyZWF0ZVZlcnNpb240VVVJRFN0cmluZygpLCAnLycsIHJlbGF0aXZlUGFy
dCkpOwogfQogCiBVUkwgVVJMOjpmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoKFN0cmluZ1ZpZXcg
cGF0aCkKIHsKLSAgICByZXR1cm4gVVJMKFVSTCgpLCBtYWtlU3RyaW5nKAorICAgIHJldHVybiBV
UkwobWFrZVN0cmluZygKICAgICAgICAgImZpbGU6Ly8iLAogICAgICAgICBwYXRoLnN0YXJ0c1dp
dGgoJy8nKSA/ICIiIDogIi8iLAogICAgICAgICBlc2NhcGVQYXRoV2l0aG91dENvcHlpbmcocGF0
aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTC5oIGIvU291cmNlL1dURi93dGYvVVJM
LmgKaW5kZXggYjRiYWFkMThlM2U3MWE0N2M0ZWZkN2VjZTUxM2MxMTNjOTBiOTg5Zi4uMjc5YjM1
ZTA3ZDEwMzYyOTBiNWE3MWI1NTM4ZDBmYTdmZjE0ZjM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvVVJMLmgKKysrIGIvU291cmNlL1dURi93dGYvVVJMLmgKQEAgLTY1LDYgKzY1LDE0IEBA
IHB1YmxpYzoKICAgICAvLyBudWxsIG9yIGVtcHR5LCBpbiB3aGljaCBjYXNlIHRoZSByZWxhdGl2
ZSBVUkwgd2lsbCBiZSBpbnRlcnByZXRlZCBhcyBhYnNvbHV0ZS4KICAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgVVJMKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZSwgY29uc3Qg
VVJMVGV4dEVuY29kaW5nKiA9IG51bGxwdHIpOwogCisgICAgLy8gUGFyc2VzIHRoZSBpbnB1dCBz
dHJpbmcgYXMgYW4gYWJzb2x1dGUgVVJMLiBJZiB5b3UgbmVlZCB0byBwYXJzZSBhIHJlbGF0aXZl
IFVSTCwgY2FsbCB0aGUgY29uc3RydWN0b3IgYWJvdmUKKyAgICAvLyB0YWtpbmcgYSBiYXNlIFVS
TCBhbmQgYSByZWxhdGl2ZSBVUkwgc3RyaW5nLgorICAgIFdURl9FWFBPUlRfUFJJVkFURSBleHBs
aWNpdCBVUkwoU3RyaW5nJiYgYWJzb2x1dGVVUkwsIGNvbnN0IFVSTFRleHRFbmNvZGluZyogPSBu
dWxscHRyKTsKKyAgICBleHBsaWNpdCBVUkwoY29uc3QgU3RyaW5nJiBhYnNvbHV0ZVVSTCwgY29u
c3QgVVJMVGV4dEVuY29kaW5nKiBlbmNvZGluZyA9IG51bGxwdHIpCisgICAgICAgIDogVVJMKFN0
cmluZyB7IGFic29sdXRlVVJMIH0sIGVuY29kaW5nKQorICAgIHsKKyAgICB9CisKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFVSTCBmYWtlVVJMV2l0aFJlbGF0aXZlUGFydChTdHJpbmdW
aWV3KTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFVSTCBmaWxlVVJMV2l0aEZpbGVT
eXN0ZW1QYXRoKFN0cmluZ1ZpZXcpOwogCkBAIC0yMDksNyArMjE3LDcgQEAgcHJpdmF0ZToKICAg
ICB1bnNpZ25lZCBob3N0U3RhcnQoKSBjb25zdDsKICAgICB1bnNpZ25lZCBjcmVkZW50aWFsc0Vu
ZCgpIGNvbnN0OwogICAgIHZvaWQgcmVtb3ZlKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5n
dGgpOwotICAgIHZvaWQgcGFyc2UoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBwYXJzZShTdHJp
bmcmJik7CiAKICAgICBmcmllbmQgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcHJvdG9jb2xIb3N0
QW5kUG9ydEFyZUVxdWFsKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOwogCkBAIC0zMTMsNyArMzIx
LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RkOjpvcHRpb25hbDxVUkw+IFVSTDo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgZGVjb2RlciA+PiBzdHJpbmc7CiAgICAgaWYg
KCFzdHJpbmcpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIFVSTChV
UkwoKSwgV1RGTW92ZSgqc3RyaW5nKSk7CisgICAgcmV0dXJuIFVSTChXVEZNb3ZlKCpzdHJpbmcp
KTsKIH0KIAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYg
YikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTFBhcnNlci5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi9VUkxQYXJzZXIuY3BwCmluZGV4IDEzNTM4NTY2MzE1ZTc0YjcyNzU2ODA2NjAwNTQxMDZm
MmVjYWI4MWEuLmZmZGM4ZDM4ZmViNWRkMTFlNjY5NzUwOGMyOGRiNDgxY2QzZjAxZDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1VSTFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
VVJMUGFyc2VyLmNwcApAQCAtMTA1OSwxMCArMTA1OSwxMCBAQCBBTFdBWVNfSU5MSU5FIHNpemVf
dCBVUkxQYXJzZXI6OmN1cnJlbnRQb3NpdGlvbihjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZQogICAgIHJldHVybiBpdGVyYXRvci5jb2RlVW5pdHNTaW5jZShyZWludGVycHJldF9jYXN0
PGNvbnN0IENoYXJhY3RlclR5cGUqPihtX2lucHV0QmVnaW4pKTsKIH0KIAotVVJMUGFyc2VyOjpV
UkxQYXJzZXIoY29uc3QgU3RyaW5nJiBpbnB1dCwgY29uc3QgVVJMJiBiYXNlLCBjb25zdCBVUkxU
ZXh0RW5jb2RpbmcqIG5vblVURjhRdWVyeUVuY29kaW5nKQotICAgIDogbV9pbnB1dFN0cmluZyhp
bnB1dCkKK1VSTFBhcnNlcjo6VVJMUGFyc2VyKFN0cmluZyYmIGlucHV0LCBjb25zdCBVUkwmIGJh
c2UsIGNvbnN0IFVSTFRleHRFbmNvZGluZyogbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpCisgICAgOiBt
X2lucHV0U3RyaW5nKFdURk1vdmUoaW5wdXQpKQogewotICAgIGlmIChpbnB1dC5pc051bGwoKSkg
eworICAgIGlmIChtX2lucHV0U3RyaW5nLmlzTnVsbCgpKSB7CiAgICAgICAgIGlmIChiYXNlLmlz
VmFsaWQoKSAmJiAhYmFzZS5tX2Nhbm5vdEJlQUJhc2VVUkwpIHsKICAgICAgICAgICAgIG1fdXJs
ID0gYmFzZTsKICAgICAgICAgICAgIG1fdXJsLnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwpA
QCAtMTA3MCwyMyArMTA3MCwyMyBAQCBVUkxQYXJzZXI6OlVSTFBhcnNlcihjb25zdCBTdHJpbmcm
IGlucHV0LCBjb25zdCBVUkwmIGJhc2UsIGNvbnN0IFVSTFRleHRFbmNvZGluZwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGlucHV0LmlzOEJpdCgpKSB7Ci0gICAgICAgIG1faW5w
dXRCZWdpbiA9IGlucHV0LmNoYXJhY3RlcnM4KCk7Ci0gICAgICAgIHBhcnNlKGlucHV0LmNoYXJh
Y3RlcnM4KCksIGlucHV0Lmxlbmd0aCgpLCBiYXNlLCBub25VVEY4UXVlcnlFbmNvZGluZyk7Cisg
ICAgaWYgKG1faW5wdXRTdHJpbmcuaXM4Qml0KCkpIHsKKyAgICAgICAgbV9pbnB1dEJlZ2luID0g
bV9pbnB1dFN0cmluZy5jaGFyYWN0ZXJzOCgpOworICAgICAgICBwYXJzZShtX2lucHV0U3RyaW5n
LmNoYXJhY3RlcnM4KCksIG1faW5wdXRTdHJpbmcubGVuZ3RoKCksIGJhc2UsIG5vblVURjhRdWVy
eUVuY29kaW5nKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX2lucHV0QmVnaW4gPSBpbnB1dC5j
aGFyYWN0ZXJzMTYoKTsKLSAgICAgICAgcGFyc2UoaW5wdXQuY2hhcmFjdGVyczE2KCksIGlucHV0
Lmxlbmd0aCgpLCBiYXNlLCBub25VVEY4UXVlcnlFbmNvZGluZyk7CisgICAgICAgIG1faW5wdXRC
ZWdpbiA9IG1faW5wdXRTdHJpbmcuY2hhcmFjdGVyczE2KCk7CisgICAgICAgIHBhcnNlKG1faW5w
dXRTdHJpbmcuY2hhcmFjdGVyczE2KCksIG1faW5wdXRTdHJpbmcubGVuZ3RoKCksIGJhc2UsIG5v
blVURjhRdWVyeUVuY29kaW5nKTsKICAgICB9CiAKICAgICBBU1NFUlQoIW1fdXJsLm1faXNWYWxp
ZAotICAgICAgICB8fCBtX2RpZFNlZVN5bnRheFZpb2xhdGlvbiA9PSAobV91cmwuc3RyaW5nKCkg
IT0gaW5wdXQpCi0gICAgICAgIHx8IChpbnB1dC5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzQzBD
b250cm9sT3JTcGFjZT4oKSAmJiBtX3VybC5tX3N0cmluZyA9PSBiYXNlLm1fc3RyaW5nLmxlZnQo
YmFzZS5tX3F1ZXJ5RW5kKSkKKyAgICAgICAgfHwgbV9kaWRTZWVTeW50YXhWaW9sYXRpb24gPT0g
KG1fdXJsLnN0cmluZygpICE9IG1faW5wdXRTdHJpbmcpCisgICAgICAgIHx8IChtX2lucHV0U3Ry
aW5nLmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNDMENvbnRyb2xPclNwYWNlPigpICYmIG1fdXJs
Lm1fc3RyaW5nID09IGJhc2UubV9zdHJpbmcubGVmdChiYXNlLm1fcXVlcnlFbmQpKQogICAgICAg
ICB8fCAoYmFzZS5pc1ZhbGlkKCkgJiYgYmFzZS5wcm90b2NvbElzKCJmaWxlIikpKTsKICAgICBB
U1NFUlQoaW50ZXJuYWxWYWx1ZXNDb25zaXN0ZW50KG1fdXJsKSk7CiAjaWYgQVNTRVJUX0VOQUJM
RUQKICAgICBpZiAoIW1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKSB7CiAgICAgICAgIC8vIEZvcmNl
IGEgc3ludGF4IHZpb2xhdGlvbiBhdCB0aGUgYmVnaW5uaW5nIHRvIG1ha2Ugc3VyZSB3ZSBnZXQg
dGhlIHNhbWUgcmVzdWx0LgotICAgICAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoIiAi
LCBpbnB1dCksIGJhc2UsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKKyAgICAgICAgVVJMUGFyc2Vy
IHBhcnNlcihtYWtlU3RyaW5nKCIgIiwgbV9pbnB1dFN0cmluZyksIGJhc2UsIG5vblVURjhRdWVy
eUVuY29kaW5nKTsKICAgICAgICAgVVJMIHBhcnNlZCA9IHBhcnNlci5yZXN1bHQoKTsKICAgICAg
ICAgaWYgKHBhcnNlZC5pc1ZhbGlkKCkpCiAgICAgICAgICAgICBBU1NFUlQoYWxsVmFsdWVzRXF1
YWwocGFyc2VyLnJlc3VsdCgpLCBtX3VybCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
VVJMUGFyc2VyLmggYi9Tb3VyY2UvV1RGL3d0Zi9VUkxQYXJzZXIuaAppbmRleCA3NGJhZDgxN2Fl
NDAxNGVmN2FjNGU0N2E1ZDgzOTIzZTA5ZjY1YmE5Li4xMDk4YzMyZjRlZGJlMDYyZGU2Mjk2YjQ3
MTJhOWY4NGZjOWY5N2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9VUkxQYXJzZXIuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9VUkxQYXJzZXIuaApAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IGRlZmF1bHRQb3J0Rm9yUHJvdG9j
b2woU3RyaW5nVmlldyk7CiAKIHByaXZhdGU6Ci0gICAgVVJMUGFyc2VyKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFVSTCYgPSB7IH0sIGNvbnN0IFVSTFRleHRFbmNvZGluZyogPSBudWxscHRyKTsKKyAg
ICBVUkxQYXJzZXIoU3RyaW5nJiYsIGNvbnN0IFVSTCYgPSB7IH0sIGNvbnN0IFVSTFRleHRFbmNv
ZGluZyogPSBudWxscHRyKTsKICAgICBVUkwgcmVzdWx0KCkgeyByZXR1cm4gbV91cmw7IH0KIAog
ICAgIGZyaWVuZCBjbGFzcyBVUkw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKaW5kZXggNTQ5NjVm
ZjJlYWVjZWFlN2VjODg3MDBlYzYyZjE0Mzc5YzdmZGExZS4uZDQwMDc1MTdhZmZmYzNmOTRkM2Fm
NzE5ZWQ5OWQ5Zjk4ZGM3ZGI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcApAQCAtNzgsNyAr
NzgsNyBAQCBzdGF0aWMgU3RyaW5nIHByb2Nlc3NBcHBJZEV4dGVuc2lvbihjb25zdCBTZWN1cml0
eU9yaWdpbiYgZmFjZXRJZCwgY29uc3QgU3RyaW5nJgogICAgICAgICByZXR1cm4gZmFjZXRJZC50
b1N0cmluZygpOwogCiAgICAgLy8gU3RlcCAzLiBSZWxheCB0aGUgY29tcGFyaXNvbiB0byBzYW1l
IHNpdGUuCi0gICAgVVJMIGFwcElkVVJMKFVSTCgpLCBhcHBJZCk7CisgICAgVVJMIGFwcElkVVJM
IHsgYXBwSWQgfTsKICAgICBpZiAoIWFwcElkVVJMLmlzVmFsaWQoKSB8fCBmYWNldElkLnByb3Rv
Y29sKCkgIT0gYXBwSWRVUkwucHJvdG9jb2woKSB8fCAoUmVnaXN0cmFibGVEb21haW4oYXBwSWRV
UkwpICE9IFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChmYWNldElk
Lmhvc3QoKSkgJiYgIW5lZWRzQXBwSWRRdWlya3MoZmFjZXRJZC5ob3N0KCksIGFwcElkKSkpCiAg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICByZXR1cm4gYXBwSWQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IGZhZWRjNWI0MTA2
MjExNjU3NGE3NDk1YTMzODliMzhjYTk2OWY1ZTUuLmM1NTg3OTIzMjE1NWQ0NTVhOGU5M2JkODZi
ZmZiYzgxZjQwOTU5MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXQuY3BwCkBAIC0yMjMsNyArMjIzLDcgQEAgdm9pZCBXZWJTb2NrZXQ6OmZhaWxB
c3luY2hyb25vdXNseSgpCiBFeGNlcHRpb25Pcjx2b2lkPiBXZWJTb2NrZXQ6OmNvbm5lY3QoY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwcm90b2NvbHMpCiB7CiAgICAg
TE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAgY29ubmVjdCgpIHVybD0nJXMnIiwgdGhpcywgdXJs
LnV0ZjgoKS5kYXRhKCkpOwotICAgIG1fdXJsID0gVVJMKFVSTCgpLCB1cmwpOworICAgIG1fdXJs
ID0gVVJMIHsgdXJsIH07CiAKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsK
ICAgICBhdXRvJiBjb250ZXh0ID0gKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuY3BwCmluZGV4IDE3
NTdjYmQ4NDhhNDhiOTFjMmY4ODM0NTM5MzU1ZmU4Y2QxMjZlOWUuLjcwMWQzOWMwOGIwYjc5Y2Jh
MzIyMmIzMjU3ZDU1NDkzYWI0NzE4MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcApAQCAtOTMsNyArOTMsNyBAQCBzdGF0aWMgRXhw
ZWN0ZWQ8VVJMLCBTdHJpbmc+IHJlc29sdmVNb2R1bGVTcGVjaWZpZXIoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udAogewogICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVs
dGlwYWdlL3dlYmFwcGFwaXMuaHRtbCNyZXNvbHZlLWEtbW9kdWxlLXNwZWNpZmllcgogCi0gICAg
VVJMIGFic29sdXRlVVJMKFVSTCgpLCBzcGVjaWZpZXIpOworICAgIFVSTCBhYnNvbHV0ZVVSTCB7
IHNwZWNpZmllciB9OwogICAgIGlmIChhYnNvbHV0ZVVSTC5pc1ZhbGlkKCkpCiAgICAgICAgIHJl
dHVybiBhYnNvbHV0ZVVSTDsKIApAQCAtMTg5LDcgKzE4OSw3IEBAIEpTQzo6SlNJbnRlcm5hbFBy
b21pc2UqIFNjcmlwdE1vZHVsZUxvYWRlcjo6ZmV0Y2goSlNDOjpKU0dsb2JhbE9iamVjdCoganNH
bG9iYWxPCiAKICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS93
ZWJhcHBhcGlzLmh0bWwjZmV0Y2gtYS1zaW5nbGUtbW9kdWxlLXNjcmlwdAogCi0gICAgVVJMIGNv
bXBsZXRlZFVSTChVUkwoKSwgYXNTdHJpbmcobW9kdWxlS2V5VmFsdWUpLT52YWx1ZShqc0dsb2Jh
bE9iamVjdCkpOworICAgIFVSTCBjb21wbGV0ZWRVUkwgeyBhc1N0cmluZyhtb2R1bGVLZXlWYWx1
ZSktPnZhbHVlKGpzR2xvYmFsT2JqZWN0KSB9OwogICAgIGlmICghY29tcGxldGVkVVJMLmlzVmFs
aWQoKSkgewogICAgICAgICByZWplY3RXaXRoRmV0Y2hFcnJvcihkZWZlcnJlZC5nZXQoKSwgVHlw
ZUVycm9yLCAiTW9kdWxlIGtleSBpcyBhIHZhbGlkIFVSTC4iX3MpOwogICAgICAgICByZXR1cm4g
anNQcm9taXNlOwpAQCAtMjIzLDcgKzIyMyw3IEBAIFVSTCBTY3JpcHRNb2R1bGVMb2FkZXI6Om1v
ZHVsZVVSTChKU0M6OkpTR2xvYmFsT2JqZWN0JiBqc0dsb2JhbE9iamVjdCwgSlNDOjpKU1ZhCiAg
ICAgICAgIHJldHVybiBtX2NvbnRleHQudXJsKCk7CiAKICAgICBBU1NFUlQobW9kdWxlS2V5VmFs
dWUuaXNTdHJpbmcoKSk7Ci0gICAgcmV0dXJuIFVSTChVUkwoKSwgYXNTdHJpbmcobW9kdWxlS2V5
VmFsdWUpLT52YWx1ZSgmanNHbG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4gVVJMIHsgYXNTdHJp
bmcobW9kdWxlS2V5VmFsdWUpLT52YWx1ZSgmanNHbG9iYWxPYmplY3QpIH07CiB9CiAKIFVSTCBT
Y3JpcHRNb2R1bGVMb2FkZXI6OnJlc3BvbnNlVVJMRnJvbVJlcXVlc3RVUkwoSlNDOjpKU0dsb2Jh
bE9iamVjdCYganNHbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBtb2R1bGVLZXlWYWx1ZSkKQEAg
LTI0MSw3ICsyNDEsNyBAQCBVUkwgU2NyaXB0TW9kdWxlTG9hZGVyOjpyZXNwb25zZVVSTEZyb21S
ZXF1ZXN0VVJMKEpTQzo6SlNHbG9iYWxPYmplY3QmIGpzR2xvYmFsTwogICAgIEFTU0VSVChtb2R1
bGVLZXlWYWx1ZS5pc1N0cmluZygpKTsKICAgICBTdHJpbmcgcmVxdWVzdFVSTCA9IGFzU3RyaW5n
KG1vZHVsZUtleVZhbHVlKS0+dmFsdWUoJmpzR2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB7IH0pOwotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoVVJMKFVSTCgp
LCByZXF1ZXN0VVJMKS5pc1ZhbGlkKCksICJJbnZhbGlkIG1vZHVsZSByZWZlcnJlciBuZXZlciBz
dGFydHMgaW1wb3J0aW5nIGRlcGVuZGVudCBtb2R1bGVzLiIpOworICAgIEFTU0VSVF9XSVRIX01F
U1NBR0UoVVJMKHJlcXVlc3RVUkwpLmlzVmFsaWQoKSwgIkludmFsaWQgbW9kdWxlIHJlZmVycmVy
IG5ldmVyIHN0YXJ0cyBpbXBvcnRpbmcgZGVwZW5kZW50IG1vZHVsZXMuIik7CiAKICAgICBhdXRv
IGl0ZXJhdG9yID0gbV9yZXF1ZXN0VVJMVG9SZXNwb25zZVVSTE1hcC5maW5kKHJlcXVlc3RVUkwp
OwogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaXRlcmF0b3IgIT0gbV9yZXF1ZXN0VVJMVG9SZXNw
b25zZVVSTE1hcC5lbmQoKSwgIk1vZHVsZSByZWZlcnJlciBtdXN0IHJlZ2lzdGVyIGl0c2VsZiB0
byB0aGUgbWFwIGJlZm9yZSBzdGFydGluZyBpbXBvcnRpbmcgZGVwZW5kZW50IG1vZHVsZXMuIik7
CkBAIC0zMjgsNyArMzI4LDcgQEAgSlNDOjpKU0ludGVybmFsUHJvbWlzZSogU2NyaXB0TW9kdWxl
TG9hZGVyOjppbXBvcnRNb2R1bGUoSlNDOjpKU0dsb2JhbE9iamVjdCoganMKICAgICAgICAgICAg
IHNjcmlwdEZldGNoZXIgPSBXb3JrZXJTY3JpcHRGZXRjaGVyOjpjcmVhdGUoRmV0Y2hPcHRpb25z
OjpDcmVkZW50aWFsczo6U2FtZU9yaWdpbiwgRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6U2Ny
aXB0LCBSZWZlcnJlclBvbGljeTo6RW1wdHlTdHJpbmcpOwogICAgICAgICB9CiAgICAgfSBlbHNl
IHsKLSAgICAgICAgYmFzZVVSTCA9IFVSTChVUkwoKSwgc291cmNlT3JpZ2luLnN0cmluZygpKTsK
KyAgICAgICAgYmFzZVVSTCA9IFVSTCB7IHNvdXJjZU9yaWdpbi5zdHJpbmcoKSB9OwogICAgICAg
ICBpZiAoIWJhc2VVUkwuaXNWYWxpZCgpKQogICAgICAgICAgICAgcmV0dXJuIHJlamVjdFByb21p
c2UoZ2xvYmFsT2JqZWN0LCBUeXBlRXJyb3IsICJJbXBvcnRlciBtb2R1bGUga2V5IGlzIG5vdCBh
IFN5bWJvbCBvciBhIFN0cmluZy4iX3MpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCA1Y2RlZGEzZTc2YzFjMDhh
MmU0MjMyZGRjMjBmZjBlMzgzYWMzZjZiLi40MjUyYTU2NDc2M2IwY2M2MGQxMDc1MWY5ODhkNGQx
MWFkODQ3YzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTI1NjQsNyArMjU2NCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIGlmICghbV9jYW5DcmVhdGVET01PYmplY3QpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
IAotICAgICAgICBmaWxlID0gRmlsZTo6ZGVzZXJpYWxpemUoZXhlY3V0aW9uQ29udGV4dChtX2xl
eGljYWxHbG9iYWxPYmplY3QpLCBmaWxlUGF0aCwgVVJMKFVSTCgpLCB1cmwtPnN0cmluZygpKSwg
dHlwZS0+c3RyaW5nKCksIG5hbWUtPnN0cmluZygpLCBvcHRpb25hbExhc3RNb2RpZmllZCk7Cisg
ICAgICAgIGZpbGUgPSBGaWxlOjpkZXNlcmlhbGl6ZShleGVjdXRpb25Db250ZXh0KG1fbGV4aWNh
bEdsb2JhbE9iamVjdCksIGZpbGVQYXRoLCBVUkwgeyB1cmwtPnN0cmluZygpIH0sIHR5cGUtPnN0
cmluZygpLCBuYW1lLT5zdHJpbmcoKSwgb3B0aW9uYWxMYXN0TW9kaWZpZWQpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTM2NDksNyArMzY0OSw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgIGlmICghbV9jYW5DcmVh
dGVET01PYmplY3QpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwotICAgICAgICAg
ICAgcmV0dXJuIGdldEpTVmFsdWUoQmxvYjo6ZGVzZXJpYWxpemUoZXhlY3V0aW9uQ29udGV4dCht
X2xleGljYWxHbG9iYWxPYmplY3QpLCBVUkwoVVJMKCksIHVybC0+c3RyaW5nKCkpLCB0eXBlLT5z
dHJpbmcoKSwgc2l6ZSwgYmxvYkZpbGVQYXRoRm9yQmxvYlVSTCh1cmwtPnN0cmluZygpKSkuZ2V0
KCkpOworICAgICAgICAgICAgcmV0dXJuIGdldEpTVmFsdWUoQmxvYjo6ZGVzZXJpYWxpemUoZXhl
Y3V0aW9uQ29udGV4dChtX2xleGljYWxHbG9iYWxPYmplY3QpLCBVUkwgeyB1cmwtPnN0cmluZygp
IH0sIHR5cGUtPnN0cmluZygpLCBzaXplLCBibG9iRmlsZVBhdGhGb3JCbG9iVVJMKHVybC0+c3Ry
aW5nKCkpKS5nZXQoKSk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBTdHJpbmdUYWc6IHsKICAg
ICAgICAgICAgIENhY2hlZFN0cmluZ1JlZiBjYWNoZWRTdHJpbmc7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQWN0aW9ucy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQWN0aW9u
cy5jcHAKaW5kZXggZGI2ZjUwOGM0Yjc3MDIwMDE4ZWJhMzIyZTAxYjE0Mjg5NDgyMGQ4Mi4uZDU5
NmRhNDA4Yjc4N2MxZGY2NjE5MzZjYzBjMjFlNDgzOTllMmY4NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkFjdGlvbnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25BY3Rp
b25zLmNwcApAQCAtMzAzLDcgKzMwMyw3IEBAIEV4cGVjdGVkPFJlZGlyZWN0QWN0aW9uLCBzdGQ6
OmVycm9yX2NvZGU+IFJlZGlyZWN0QWN0aW9uOjpwYXJzZShjb25zdCBKU09OOjpPYmplCiAgICAg
fQogCiAgICAgaWYgKGF1dG8gdXJsU3RyaW5nID0gcmVkaXJlY3QtPmdldFN0cmluZygidXJsIik7
ICEhdXJsU3RyaW5nKSB7Ci0gICAgICAgIGF1dG8gdXJsID0gVVJMKFVSTCgpLCB1cmxTdHJpbmcp
OworICAgICAgICBVUkwgdXJsIHsgdXJsU3RyaW5nIH07CiAgICAgICAgIGlmICghdXJsLmlzVmFs
aWQoKSkKICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChDb250ZW50RXh0ZW5zaW9u
RXJyb3I6OkpTT05SZWRpcmVjdFVSTEludmFsaWQpOwogICAgICAgICBpZiAodXJsLnByb3RvY29s
SXNKYXZhU2NyaXB0KCkpCkBAIC0zODIsNyArMzgyLDcgQEAgdm9pZCBSZWRpcmVjdEFjdGlvbjo6
YXBwbHlUb1JlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBVUkwmIGV4dGVu
c2kKICAgICAgICAgYWN0aW9uLmFwcGx5VG9VUkwodXJsKTsKICAgICAgICAgcmVxdWVzdC5zZXRV
UkwoV1RGTW92ZSh1cmwpKTsKICAgICB9LCBbJl0gKGNvbnN0IFVSTEFjdGlvbiYgYWN0aW9uKSB7
Ci0gICAgICAgIHJlcXVlc3Quc2V0VVJMKFVSTChVUkwoKSwgYWN0aW9uLnVybCkpOworICAgICAg
ICByZXF1ZXN0LnNldFVSTChVUkwgeyBhY3Rpb24udXJsIH0pOwogICAgIH0pLCBhY3Rpb24pOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBjMmZmMzVmZTUxMzM0YzFhMTUxMGQwNWU5
MjBkNWNiNDkzZmFhYzU5Li5iYWE5OWUyZmFmYThkN2M1OWMxZTVjOWRmNGJiMzI3MTYxYTQxNjkw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTUzMzksNyArNTMzOSw3IEBAIFN0cmluZyBE
b2N1bWVudDo6cmVmZXJyZXIoKQogICAgICAgICAgICAgVVJMIHJlZmVycmVyVVJMIHsgVVJMKCks
IHJlZmVycmVyU3RyIH07CiAgICAgICAgICAgICBSZWdpc3RyYWJsZURvbWFpbiByZWZlcnJlclJl
Z2lzdHJhYmxlRG9tYWluIHsgcmVmZXJyZXJVUkwgfTsKICAgICAgICAgICAgIGlmICghcmVmZXJy
ZXJSZWdpc3RyYWJsZURvbWFpbi5tYXRjaGVzKHNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpKSkgewot
ICAgICAgICAgICAgICAgIG1fcmVmZXJyZXJPdmVycmlkZSA9IFVSTChVUkwoKSwgcmVmZXJyZXJV
UkwucHJvdG9jb2xIb3N0QW5kUG9ydCgpKS5zdHJpbmcoKTsKKyAgICAgICAgICAgICAgICBtX3Jl
ZmVycmVyT3ZlcnJpZGUgPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21VUkwocmVmZXJyZXJVUkwp
LnRvU3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG1fcmVmZXJyZXJPdmVycmlkZTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9VUkxJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxJbnB1dFR5cGUuY3Bw
CmluZGV4IDJjMjdlMjI5ZTM5MjZhN2Y2M2RmMzY3NDMxODk1ZWI1MTkwYjc5MDcuLjA2MGE0ZjU4
YzE3MzY4OTc1MGE2NWJkOGM2MTFkMjY1ZmVjMzlkZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvVVJMSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTElu
cHV0VHlwZS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgY29uc3QgQXRvbVN0cmluZyYgVVJMSW5wdXRU
eXBlOjpmb3JtQ29udHJvbFR5cGUoKSBjb25zdAogCiBib29sIFVSTElucHV0VHlwZTo6dHlwZU1p
c21hdGNoRm9yKGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICF2YWx1
ZS5pc0VtcHR5KCkgJiYgIVVSTChVUkwoKSwgdmFsdWUpLmlzVmFsaWQoKTsKKyAgICByZXR1cm4g
IXZhbHVlLmlzRW1wdHkoKSAmJiAhVVJMKHZhbHVlKS5pc1ZhbGlkKCk7CiB9CiAKIGJvb2wgVVJM
SW5wdXRUeXBlOjp0eXBlTWlzbWF0Y2goKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5jcHAKaW5kZXggM2JiNzAwM2Q5YTJmNGNiODAwNmUxMTI3MTBmNmY4ZmJhMDIy
OGJlYy4uMjBkZGVmZGU0MjgxYmVhYzZiZTk3M2YxODUzNGRlZjhhNTU5ZDFiOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC04NDksNyArODQ5LDcgQEAgdm9p
ZCBEb2N1bWVudExvYWRlcjo6c3RvcExvYWRpbmdBZnRlclhGcmFtZU9wdGlvbnNPckNvbnRlbnRT
ZWN1cml0eVBvbGljeURlbmllZCgKICNpZiBFTkFCTEUoSU5URUxMSUdFTlRfVFJBQ0tJTkdfUFJF
VkVOVElPTikKIHN0YXRpYyBVUkwgbWljcm9zb2Z0VGVhbXNSZWRpcmVjdFVSTCgpCiB7Ci0gICAg
cmV0dXJuIFVSTChVUkwoKSwgImh0dHBzOi8vd3d3Lm1pY3Jvc29mdC5jb20vZW4tdXMvbWljcm9z
b2Z0LTM2NS9taWNyb3NvZnQtdGVhbXMvIik7CisgICAgcmV0dXJuIFVSTCB7ICJodHRwczovL3d3
dy5taWNyb3NvZnQuY29tL2VuLXVzL21pY3Jvc29mdC0zNjUvbWljcm9zb2Z0LXRlYW1zLyJfc3Ry
IH07CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZh
dGVDbGlja01lYXN1cmVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudC5jcHAKaW5kZXggZjAzYjRhNDNmZWVhMTdhNzk5M2FiOWY3OWI0YmNjMDNj
OTJhMTliMi4uNGE1MDcwNTRlMDg2NDU5NGQ4Y2VjNjVjNmE2MTBlYmExNWNmMDhlZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuY3BwCkBA
IC0xNTQsNyArMTU0LDcgQEAgRXhwZWN0ZWQ8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJp
YnV0aW9uVHJpZ2dlckRhdGEsIFN0cmluZz4gUHJpdmF0ZUNsaWNrTWUKICAgICAgICAgICAgIGlm
ICghc291cmNlRG9tYWluLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBUcmlnZ2VyaW5nIGV2ZW50IHdh
cyBub3QgYWNjZXB0ZWQgYmVjYXVzZSB0aGUgVVJMIGhhZCBtdWx0aXBsZSBhdHRyaWJ1dGlvblNv
dXJjZSBxdWVyeSBwYXJhbWV0ZXJzLiJfcyk7CiAKLSAgICAgICAgICAgIGF1dG8gYXR0cmlidXRp
b25Tb3VyY2VVUkwgPSBVUkwoVVJMKCksIHBhcmFtZXRlci52YWx1ZSk7CisgICAgICAgICAgICBV
UkwgYXR0cmlidXRpb25Tb3VyY2VVUkwgeyBwYXJhbWV0ZXIudmFsdWUgfTsKICAgICAgICAgICAg
IGlmICghYXR0cmlidXRpb25Tb3VyY2VVUkwuaXNWYWxpZCgpIHx8IChhdHRyaWJ1dGlvblNvdXJj
ZVVSTC5oYXNQYXRoKCkgJiYgYXR0cmlidXRpb25Tb3VyY2VVUkwucGF0aCgpLmxlbmd0aCgpID4g
MSkgfHwgYXR0cmlidXRpb25Tb3VyY2VVUkwuaGFzQ3JlZGVudGlhbHMoKSB8fCBhdHRyaWJ1dGlv
blNvdXJjZVVSTC5oYXNRdWVyeSgpIHx8IGF0dHJpYnV0aW9uU291cmNlVVJMLmhhc0ZyYWdtZW50
SWRlbnRpZmllcigpKQogICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiW1By
aXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIFRyaWdnZXJpbmcgZXZlbnQgd2FzIG5vdCBhY2NlcHRl
ZCBiZWNhdXNlIHRoZSBVUkwncyBhdHRyaWJ1dGlvblNvdXJjZSBxdWVyeSBwYXJhbWV0ZXIgd2Fz
IG5vdCBhIHZhbGlkIFVSTCBvciB3YXMgYSBVUkwgd2l0aCBhIHBhdGgsIGNyZWRlbnRpYWxzLCBx
dWVyeSBzdHJpbmcsIG9yIGZyYWdtZW50LiJfcyk7CiAgICAgICAgICAgICBzb3VyY2VEb21haW4g
PSBSZWdpc3RyYWJsZURvbWFpbiB7IGF0dHJpYnV0aW9uU291cmNlVVJMIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlLmNwcAppbmRleCA2YjllN2UyOTVmZDZmYjIwZmYwZDc0ZmRjZjIzZmM2NjAwYTYwMDNmLi5h
MDJiYTQwYzc3ZDUxMzYxYjc5MTZiMzMxMTk2NjFlOWE1NDhiYjQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5jcHAKQEAgLTE0OTUsNyArMTQ5NSw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6
OmRlbGV0ZUNhY2hlRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBVUkwgb3JpZ2luVVJMKFVSTCgpLCBzZWN1cml0eU9y
aWdpbi50b1N0cmluZygpKTsKKyAgICBVUkwgb3JpZ2luVVJMID0gc2VjdXJpdHlPcmlnaW4udG9V
UkwoKTsKIAogICAgIGZvciAoY29uc3QgYXV0byYgdXJsIDogKnVybHMpIHsKICAgICAgICAgaWYg
KCFwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwodXJsLCBvcmlnaW5VUkwpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcApp
bmRleCBkZWQ3NmZiOGE5MTg2OWIxNmMzODQ3MTRlMDUyMzdiMjMzZTM5ZGViLi4wNzMyNGRkMWUw
MGNhMjNlM2RlMzA4NWEyNzBmOGViMzUxNzVhNTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcApAQCAtMjI1LDcgKzIy
NSw3IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVJl
c291cmNlKENGRGljdGlvbmFyeVJlZiBkaWN0aW9uCiAgICAgICAgIHJlc3BvbnNlID0gY3JlYXRl
UmVzb3VyY2VSZXNwb25zZUZyb21Qcm9wZXJ0eUxpc3REYXRhKHJlc291cmNlUmVzcG9uc2VEYXRh
LCByZXNvdXJjZVJlc3BvbnNlVmVyc2lvbik7CiAgICAgfQogCi0gICAgcmV0dXJuIEFyY2hpdmVS
ZXNvdXJjZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlc291cmNlRGF0YSksIFVSTChV
UkwoKSwgdXJsKSwgbWltZVR5cGUsIHRleHRFbmNvZGluZywgZnJhbWVOYW1lLCByZXNwb25zZSk7
CisgICAgcmV0dXJuIEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHJlc291cmNlRGF0YSksIFVSTCB7IHVybCB9LCBtaW1lVHlwZSwgdGV4dEVuY29kaW5nLCBmcmFt
ZU5hbWUsIHJlc3BvbnNlKTsKIH0KIAogUmVmPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFy
Y2hpdmU6OmNyZWF0ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9taHRtbC9NSFRNTFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9t
aHRtbC9NSFRNTFBhcnNlci5jcHAKaW5kZXggZTUxODZlZmIwYjRmYTcwY2I2MDkzMWY0ODRlNTAw
Y2MxMGUwMGJjYi4uY2RlN2FlNGNjMTBlZWY1YTZiMzg0ODI3MTA1N2IzNzA4ZjViNTczNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2Vy
LmNwcApAQCAtMjE5LDcgKzIxOSw3IEBAIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IE1IVE1MUGFy
c2VyOjpwYXJzZU5leHRQYXJ0KGNvbnN0IE1JTUVIZWFkZXImIG1pbWVIZWFkZXIsCiAgICAgLy8g
RklYTUU6IHRoZSBVUkwgaW4gdGhlIE1JTUUgaGVhZGVyIGNvdWxkIGJlIHJlbGF0aXZlLCB3ZSBz
aG91bGQgcmVzb2x2ZSBpdCBpZiBpdCBpcy4KICAgICAvLyBUaGUgc3BlY3MgbWVudGlvbnMgNSB3
YXlzIHRvIHJlc29sdmUgYSBVUkw6IGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzI1NTcj
c2VjdGlvbi01CiAgICAgLy8gSUUgYW5kIEZpcmVmb3ggKFVOTWh0KSBzZWVtIHRvIGdlbmVyYXRl
IG9ubHkgYWJzb2x1dGUgVVJMcy4KLSAgICBVUkwgbG9jYXRpb24gPSBVUkwoVVJMKCksIG1pbWVI
ZWFkZXIuY29udGVudExvY2F0aW9uKCkpOworICAgIFVSTCBsb2NhdGlvbiB7IG1pbWVIZWFkZXIu
Y29udGVudExvY2F0aW9uKCkgfTsKICAgICByZXR1cm4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUo
V1RGTW92ZShjb250ZW50QnVmZmVyKSwgbG9jYXRpb24sIG1pbWVIZWFkZXIuY29udGVudFR5cGUo
KSwgbWltZUhlYWRlci5jaGFyc2V0KCksIFN0cmluZygpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuY3BwCmluZGV4IDUxNDc1MDdkNmEwNGJmY2IyYjU4ZmE3YTY5ZWZmMGNlNzI0YzkxZjUu
LmU4NWJlNWFiNDExYzM5MmYwYmNhNDU3MmZlZjEwMmQ5MjM5ZThlODggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5jcHAKQEAgLTI1ODIsOCArMjU4Miw4IEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxX
aW5kb3dQcm94eT4+IERPTVdpbmRvdzo6b3BlbihET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9N
V2luCiAjaWYgRU5BQkxFKElOVEVMTElHRU5UX1RSQUNLSU5HX1BSRVZFTlRJT04pCiAgICAgaWYg
KFJlZlB0ciBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCkpIHsKICAgICAgICAgaWYgKGRvY3Vt
ZW50LT5zZXR0aW5ncygpLm5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKCkgJiYgdXJsU3RyaW5nVG9P
cGVuID09IFF1aXJrczo6QkJDUmFkaW9QbGF5ZXJVUkxTdHJpbmcoKSkgewotICAgICAgICAgICAg
YXV0byByYWRpb1BsYXllckRvbWFpbiA9IFJlZ2lzdHJhYmxlRG9tYWluKFVSTChVUkwoKSwgUXVp
cmtzOjpzdGF0aWNSYWRpb1BsYXllclVSTFN0cmluZygpKSk7Ci0gICAgICAgICAgICBhdXRvIEJC
Q0RvbWFpbiA9IFJlZ2lzdHJhYmxlRG9tYWluKFVSTChVUkwoKSwgUXVpcmtzOjpCQkNSYWRpb1Bs
YXllclVSTFN0cmluZygpKSk7CisgICAgICAgICAgICBhdXRvIHJhZGlvUGxheWVyRG9tYWluID0g
UmVnaXN0cmFibGVEb21haW4oVVJMIHsgUXVpcmtzOjpzdGF0aWNSYWRpb1BsYXllclVSTFN0cmlu
ZygpIH0pOworICAgICAgICAgICAgYXV0byBCQkNEb21haW4gPSBSZWdpc3RyYWJsZURvbWFpbihV
UkwgeyBRdWlya3M6OkJCQ1JhZGlvUGxheWVyVVJMU3RyaW5nKCkgfSk7CiAgICAgICAgICAgICBp
ZiAoIVJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5oYXNDcm9zc1BhZ2VTdG9yYWdlQWNj
ZXNzKHJhZGlvUGxheWVyRG9tYWluLCBCQkNEb21haW4pKQogICAgICAgICAgICAgICAgIHJldHVy
biBSZWZQdHI8V2luZG93UHJveHk+IHsgbnVsbHB0ciB9OwogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1
aXJrcy5jcHAKaW5kZXggNmNjYmUzMWY2YWEwNWU2ZWMzOTdjNjdkZmM5NDRjZTVmNDljNTFmZi4u
ZWI4NTgyMmUzNzJiYWNmMDI2NTU1MTYzNTU5YzJmOTc0ZWRmMjEyZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVp
cmtzLmNwcApAQCAtMTA5OCw3ICsxMDk4LDcgQEAgY29uc3QgU3RyaW5nJiBRdWlya3M6OnN0YXRp
Y1JhZGlvUGxheWVyVVJMU3RyaW5nKCkKIAogc3RhdGljIGJvb2wgaXNCQkNEb21haW4oY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
UmVnaXN0cmFibGVEb21haW4+IEJCQ0RvbWFpbiA9IFJlZ2lzdHJhYmxlRG9tYWluKFVSTChVUkwo
KSwgUXVpcmtzOjpCQkNSYWRpb1BsYXllclVSTFN0cmluZygpKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFJlZ2lzdHJhYmxlRG9tYWluPiBCQkNEb21haW4gPSBSZWdpc3RyYWJsZURvbWFp
bihVUkwgeyBRdWlya3M6OkJCQ1JhZGlvUGxheWVyVVJMU3RyaW5nKCkgfSk7CiAgICAgcmV0dXJu
IGRvbWFpbiA9PSBCQkNEb21haW47CiB9CiAKQEAgLTExNzIsNyArMTE3Miw3IEBAIFF1aXJrczo6
U3RvcmFnZUFjY2Vzc1Jlc3VsdCBRdWlya3M6OnRyaWdnZXJPcHRpb25hbFN0b3JhZ2VBY2Nlc3NR
dWlyayhFbGVtZW50JiBlCiAgICAgICAgIHNldC5hZGQoUmVnaXN0cmFibGVEb21haW46OnVuY2hl
Y2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZygidGhlaW52ZW50b3J5LmNvbSJf
cykpOwogICAgICAgICByZXR1cm4gc2V0OwogICAgIH0oKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8VVJMPiBraW5qYVVSTCA9IFVSTChVUkwoKSwgImh0dHBzOi8va2luamEuY29tIik7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIGtpbmphVVJMID0gVVJMIHsgImh0dHBzOi8va2luamEu
Y29tIl9zdHIgfTsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVnaXN0cmFibGVEb21haW4+
IGtpbmphRG9tYWluIHsga2luamFVUkwgfTsKIAogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxS
ZWdpc3RyYWJsZURvbWFpbj4geW91VHViZURvbWFpbiA9IFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNo
ZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcoInlvdXR1YmUuY29tIl9zKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKaW5kZXggMGNiNDlhZjdjNTUwMGQx
Nzg0NDdiOTU2NmE4MzY0YTE2NGE5OGRlNS4uMjczOGFkMWI5YWY0OGJhZjk0MTE3MjgzODE5NjZk
NWQwNDIwYzc0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdp
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKQEAgLTU5
MCwxMyArNTkwLDEzIEBAIGJvb2wgc2VyaWFsaXplZE9yaWdpbnNNYXRjaChjb25zdCBTZWN1cml0
eU9yaWdpbiogb3JpZ2luMSwgY29uc3QgU2VjdXJpdHlPcmlnaW4qCiAKIFJlZjxTZWN1cml0eU9y
aWdpbj4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBvcmln
aW5TdHJpbmcpCiB7Ci0gICAgcmV0dXJuIFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoVVJMKFVSTCgp
LCBvcmlnaW5TdHJpbmcpKTsKKyAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShVUkwg
eyBvcmlnaW5TdHJpbmcgfSk7CiB9CiAKIFJlZjxTZWN1cml0eU9yaWdpbj4gU2VjdXJpdHlPcmln
aW46OmNyZWF0ZShjb25zdCBTdHJpbmcmIHByb3RvY29sLCBjb25zdCBTdHJpbmcmIGhvc3QsIHN0
ZDo6b3B0aW9uYWw8dWludDE2X3Q+IHBvcnQpCiB7CiAgICAgU3RyaW5nIGRlY29kZWRIb3N0ID0g
UEFMOjpkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoaG9zdCk7Ci0gICAgYXV0byBvcmlnaW4gPSBj
cmVhdGUoVVJMKFVSTCgpLCBwcm90b2NvbCArICI6Ly8iICsgaG9zdCArICIvIikpOworICAgIGF1
dG8gb3JpZ2luID0gY3JlYXRlKFVSTCB7IHByb3RvY29sICsgIjovLyIgKyBob3N0ICsgIi8iIH0p
OwogICAgIGlmIChwb3J0ICYmICFXVEY6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCgqcG9ydCwg
cHJvdG9jb2wpKQogICAgICAgICBvcmlnaW4tPm1fZGF0YS5wb3J0ID0gcG9ydDsKICAgICByZXR1
cm4gb3JpZ2luOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdp
bkRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCmlu
ZGV4IDFhYjc3ZjZlZGYzMzhlZWNjYjU3Y2M0NWNlNTQyYWMzYTljNGM0MjEuLjJkMzg2ZGIxZmYz
YzYyY2FmYTc5OWU1ODJmN2U1YzAyNWJmMGRjM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
Y3VyaXR5T3JpZ2luRGF0YS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgU3RyaW5nIFNlY3VyaXR5T3Jp
Z2luRGF0YTo6dG9TdHJpbmcoKSBjb25zdAogCiBVUkwgU2VjdXJpdHlPcmlnaW5EYXRhOjp0b1VS
TCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFVSTCB7IFVSTCgpLCB0b1N0cmluZygpIH07CisgICAg
cmV0dXJuIFVSTCB7IHRvU3RyaW5nKCkgfTsKIH0KIAogU2VjdXJpdHlPcmlnaW5EYXRhIFNlY3Vy
aXR5T3JpZ2luRGF0YTo6ZnJvbUZyYW1lKEZyYW1lKiBmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZWN1cml0eVBvbGljeS5jcHAKaW5kZXggNjhiNDkxNDJiNmU0NDNjOTNhM2FhYzk4ZDQ0ZjBlNjgy
Mjc1M2JjYS4uZGIwOTRhMDJkMzFjZjNiYzMzZDc5ZThlNzFkODBjOWQzNmE3ZGM4MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAKQEAgLTkxLDggKzkxLDggQEAgU3RyaW5n
IFNlY3VyaXR5UG9saWN5OjpyZWZlcnJlclRvT3JpZ2luU3RyaW5nKGNvbnN0IFN0cmluZyYgcmVm
ZXJyZXIpCiAKIFN0cmluZyBTZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJlckhlYWRlcihS
ZWZlcnJlclBvbGljeSByZWZlcnJlclBvbGljeSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgcmVmZXJyZXIpCiB7Ci0gICAgQVNTRVJUKHJlZmVycmVyID09IFVSTChVUkwoKSwgcmVmZXJy
ZXIpLnN0cmlwcGVkRm9yVXNlQXNSZWZlcnJlcigpCi0gICAgICAgIHx8IHJlZmVycmVyID09IFNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGUoVVJMKFVSTCgpLCByZWZlcnJlcikpLT50b1N0cmluZygpKTsK
KyAgICBBU1NFUlQocmVmZXJyZXIgPT0gVVJMIHsgcmVmZXJyZXIgfS5zdHJpcHBlZEZvclVzZUFz
UmVmZXJyZXIoKQorICAgICAgICB8fCByZWZlcnJlciA9PSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
KFVSTCB7IHJlZmVycmVyIH0pLT50b1N0cmluZygpKTsKIAogICAgIGlmIChyZWZlcnJlci5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCmluZGV4IDhhMmJhNGNmZmEyNmRjY2Ji
ZDFlNzVlZTUwMTEzYTg2NmJlNWEyZmEuLjliM2Q3YmQxNmU1NWNiYmMzNzJkMjRlZjE1ODhmZjU5
YzAzZTY0ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3Vy
aXR5UG9saWN5LmNwcApAQCAtNzY5LDcgKzc2OSw3IEBAIHZvaWQgQ29udGVudFNlY3VyaXR5UG9s
aWN5OjpyZXBvcnRWaW9sYXRpb24oY29uc3QgU3RyaW5nJiBlZmZlY3RpdmVWaW9sYXRlZERpcmVj
CiAgICAgICAgIGJsb2NrZWRVUkkgPSBibG9ja2VkVVJMU3RyaW5nOwogICAgIGVsc2UgewogICAg
ICAgICAvLyBJZiB0aGVyZSBpcyBhIHJlZGlyZWN0IHRoZW4gd2UgdXNlIHRoZSBwcmUtcmVkaXJl
Y3QgVVJMOiBodHRwczovL3d3dy53My5vcmcvVFIvQ1NQMy8jc2VjdXJpdHktdmlvbGF0aW9uLXJl
cG9ydHMuCi0gICAgICAgIGJsb2NrZWRVUkkgPSBjcmVhdGVVUkxGb3JSZXBvcnRpbmcocHJlUmVk
aXJlY3RVUkwuaXNOdWxsKCkgPyBVUkwoVVJMKCksIGJsb2NrZWRVUkxTdHJpbmcpIDogcHJlUmVk
aXJlY3RVUkwsIGVmZmVjdGl2ZVZpb2xhdGVkRGlyZWN0aXZlKTsKKyAgICAgICAgYmxvY2tlZFVS
SSA9IGNyZWF0ZVVSTEZvclJlcG9ydGluZyhwcmVSZWRpcmVjdFVSTC5pc051bGwoKSA/IFVSTCB7
IGJsb2NrZWRVUkxTdHJpbmcgfSA6IHByZVJlZGlyZWN0VVJMLCBlZmZlY3RpdmVWaW9sYXRlZERp
cmVjdGl2ZSk7CiAgICAgfQogCiAgICAgaW5mby5kb2N1bWVudFVSSSA9IG1fZG9jdW1lbnRVUkwg
PyBtX2RvY3VtZW50VVJMLnZhbHVlKCkuc3RyaXBwZWRGb3JVc2VBc1JlZmVycmVyKCkgOiBibG9j
a2VkVVJJOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggNmJkYTJmZTBiOGFhM2QyODVhMTZm
MTEwMTI1M2ExNjg1Y2FlYWNmOC4uMTM0NTEwMDFlYzg3YTc2NTZhMWFlNjZkMjVmZTA0ODRiNTI4
YjAwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0zNjIsNyArMzYyLDcgQEAgSGFzaFNl
dDxTZWN1cml0eU9yaWdpbkRhdGE+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
Om9yaWdpbnNJbk1lZGlhQ2EKICAgICAgICAgcmV0dXJuIG9yaWdpbnM7CiAKICAgICBmb3IgKE5T
U3RyaW5nICprZXkgaW4gW2Fzc2V0Q2FjaGUgYWxsS2V5c10pIHsKLSAgICAgICAgVVJMIGtleUFz
VVJMID0gVVJMKFVSTCgpLCBrZXkpOworICAgICAgICBVUkwga2V5QXNVUkwgeyBrZXkgfTsKICAg
ICAgICAgaWYgKGtleUFzVVJMLmlzVmFsaWQoKSkKICAgICAgICAgICAgIG9yaWdpbnMuYWRkKFNl
Y3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVVSTChrZXlBc1VSTCkpOwogICAgIH0KQEAgLTQyNiw3ICs0
MjYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNsZWFyTWVk
aWFDYWNoZUZvck9yaWdpbnMoY29uc3QgU3RyaW5nJgogICAgICAgICByZXR1cm47CiAKICAgICBm
b3IgKE5TU3RyaW5nICprZXkgaW4gW2Fzc2V0Q2FjaGUgYWxsS2V5c10pIHsKLSAgICAgICAgVVJM
IGtleUFzVVJMID0gVVJMKFVSTCgpLCBrZXkpOworICAgICAgICBVUkwga2V5QXNVUkwgeyBrZXkg
fTsKICAgICAgICAgaWYgKGtleUFzVVJMLmlzVmFsaWQoKSkgewogICAgICAgICAgICAgaWYgKG9y
aWdpbnMuY29udGFpbnMoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tVVJMKGtleUFzVVJMKSkpCiAg
ICAgICAgICAgICAgICAgW2Fzc2V0Q2FjaGUgcmVtb3ZlRW50cnlGb3JLZXk6a2V5XTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggOWZjOGRm
MDE5ZTUxNDYwNWE1MzA3ZmZjOTAyYjEwMGU0OTI5ZTgzMy4uZjc5OTk4M2RlMjQwMTQ5NDQyNmNl
YTEzMzgyYzhhOWIyYTBiMGRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5jcHAKQEAgLTkyMiw3ICs5MjIsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6c2V0UGxheWJpblVSTChjb25zdCBVUkwmIHVybCkKICAgICBpZiAodXJs
LmlzTG9jYWxGaWxlKCkpCiAgICAgICAgIGNsZWFuVVJMU3RyaW5nID0gY2xlYW5VUkxTdHJpbmcu
c3Vic3RyaW5nKDAsIHVybC5wYXRoRW5kKCkpOwogCi0gICAgbV91cmwgPSBVUkwoVVJMKCksIGNs
ZWFuVVJMU3RyaW5nKTsKKyAgICBtX3VybCA9IFVSTCB7IGNsZWFuVVJMU3RyaW5nIH07CiAgICAg
R1NUX0lORk9fT0JKRUNUKHBpcGVsaW5lKCksICJMb2FkICVzIiwgbV91cmwuc3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CiAgICAgZ19vYmplY3Rfc2V0KG1fcGlwZWxpbmUuZ2V0KCksICJ1cmkiLCBt
X3VybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBudWxscHRyKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VH
U3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKaW5kZXggYjdiMDdmZjE0NTRkNTYxYTMwMjEw
OGFlMzIyOTFlOGY4MzQzN2JkOS4uNzY5NmQxY2I3MmM1YjVhNzc1ZTgyNmE0NzU5NDZmMWExYjJh
MDk5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKQEAg
LTY0NCw3ICs2NDQsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVxdWVzdChXZWJL
aXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgIEFTU0VSVChtZW1i
ZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbiAhPSBtZW1iZXJzLT5zdG9wUG9zaXRpb24pOwogCiAgICAg
R1NUX0RFQlVHX09CSkVDVChzcmMsICJQb3N0aW5nIHRhc2sgdG8gcmVxdWVzdCBSJXUgJXMgcmVx
dWVzdGVkUG9zaXRpb249JSIgR19HVUlOVDY0X0ZPUk1BVCAiIHN0b3BQb3NpdGlvbj0lIiBHX0dV
SU5UNjRfRk9STUFULCBtZW1iZXJzLT5yZXF1ZXN0TnVtYmVyLCBwcml2LT5vcmlnaW5hbFVSSS5k
YXRhKCksIG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uLCBtZW1iZXJzLT5zdG9wUG9zaXRpb24p
OwotICAgIFVSTCB1cmwgPSBVUkwoVVJMKCksIHByaXYtPm9yaWdpbmFsVVJJLmRhdGEoKSk7Cisg
ICAgVVJMIHVybCB7IHByaXYtPm9yaWdpbmFsVVJJLmRhdGEoKSB9OwogCiAgICAgUmVzb3VyY2VS
ZXF1ZXN0IHJlcXVlc3QodXJsKTsKICAgICByZXF1ZXN0LnNldEFsbG93Q29va2llcyh0cnVlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmNwcAppbmRleCA5
ZjE4MWZkZmU1MDdhZDViN2E0N2I1YzU4Mjk1Y2Y0ZjI3MjVlN2Q4Li42MjE3ZGU2YTViNTM4MTA5
YTRlZmY2YWI2OWE4Mzk1YjdhYjM3ZDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1NlbGVjdGlvbkRhdGEuY3BwCkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgU2VsZWN0aW9uRGF0
YTo6c2V0VVJJTGlzdChjb25zdCBTdHJpbmcmIHVyaUxpc3RTdHJpbmcpCiAgICAgICAgIGlmIChs
aW5lWzBdID09ICcjJykKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIFVSTCB1cmwg
PSBVUkwoVVJMKCksIGxpbmUpOworICAgICAgICBVUkwgdXJsIHsgbGluZSB9OwogICAgICAgICBp
ZiAodXJsLmlzVmFsaWQoKSkgewogICAgICAgICAgICAgaWYgKCFzZXRVUkwpIHsKICAgICAgICAg
ICAgICAgICBtX3VybCA9IHVybDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCmluZGV4IGM3M2IwNDMxMGZjZWM5M2I0
YWE2ZGFhNDI1MDQxZGQ0ZTlmZjM4OWYuLmE0MmJjZTE3MzA2MjI0Zjc4YTNjZWVjNjBkNDM4ZGJi
Y2UyOWQ0MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VSZXF1ZXN0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcApAQCAtMzk0LDcgKzM5NCw3IEBAIHZvaWQgUmVzb3Vy
Y2VSZXF1ZXN0QmFzZTo6c2V0SFRUUFJlZmVycmVyKGNvbnN0IFN0cmluZyYgaHR0cFJlZmVycmVy
KQogICAgIGNvbnN0ZXhwciBzaXplX3QgbWF4TGVuZ3RoID0gNDA5NjsKICAgICBpZiAoaHR0cFJl
ZmVycmVyLmxlbmd0aCgpID4gbWF4TGVuZ3RoKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HKExvYWRp
bmcsICJUcnVuY2F0aW5nIEhUVFAgcmVmZXJlciIpOwotICAgICAgICBTdHJpbmcgb3JpZ2luID0g
VVJMKFVSTCgpLCBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFVSTChVUkwoKSwgaHR0cFJlZmVycmVy
KSktPnRvU3RyaW5nKCkpLnN0cmluZygpOworICAgICAgICBTdHJpbmcgb3JpZ2luID0gVVJMKFNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGUoVVJMIHsgaHR0cFJlZmVycmVyIH0pLT50b1N0cmluZygpKS5z
dHJpbmcoKTsKICAgICAgICAgaWYgKG9yaWdpbi5sZW5ndGgoKSA8PSBtYXhMZW5ndGgpCiAgICAg
ICAgICAgICBzZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlJlZmVyZXIsIG9yaWdp
bik7CiAgICAgfSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKaW5kZXggOTU5Zjc3ZTVmOTkxM2VhYWMzMzM2ZGE5
MDRiNTExYTI0Mzg1OGRhZS4uNTE2OTA0NWM3MDVmMDg5OGU4MzE3NGUzMTY2ZTNhNjBlZGE5NGI4
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZUVycm9yQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVz
b3VyY2VFcnJvckNGLmNwcApAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgUmVzb3VyY2VFcnJvcjo6
cGxhdGZvcm1MYXp5SW5pdCgpCiAgICAgaWYgKHVzZXJJbmZvLmdldCgpKSB7CiAgICAgICAgIENG
U3RyaW5nUmVmIGZhaWxpbmdVUkxTdHJpbmcgPSAoQ0ZTdHJpbmdSZWYpIENGRGljdGlvbmFyeUdl
dFZhbHVlKHVzZXJJbmZvLmdldCgpLCBmYWlsaW5nVVJMU3RyaW5nS2V5KTsKICAgICAgICAgaWYg
KGZhaWxpbmdVUkxTdHJpbmcpCi0gICAgICAgICAgICBtX2ZhaWxpbmdVUkwgPSBVUkwoVVJMKCks
IGZhaWxpbmdVUkxTdHJpbmcpOworICAgICAgICAgICAgbV9mYWlsaW5nVVJMID0gVVJMIHsgZmFp
bGluZ1VSTFN0cmluZyB9OwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIENGVVJMUmVmIGZh
aWxpbmdVUkwgPSAoQ0ZVUkxSZWYpIENGRGljdGlvbmFyeUdldFZhbHVlKHVzZXJJbmZvLmdldCgp
LCBmYWlsaW5nVVJMS2V5KTsKICAgICAgICAgICAgIGlmIChmYWlsaW5nVVJMKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRs
ZUltcGxDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tl
dFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAKaW5kZXggYmM3ZGY5ZWJjZDk2ZjU1MDA5MDY5OTg4
NDFhMDk2NWM4ZmI4ZTYwNy4uNzA0MGIzMjYyNTc1NzhjNzEwM2JmZTM2NDEzZmE5MzlhYmZjNTEw
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRT
dHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcApAQCAtMTEwLDcgKzExMCw3
IEBAIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OlNvY2tldFN0cmVhbUhhbmRsZUltcGwoY29uc3Qg
VVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsCiAKICAgICBBU1NFUlQodXJsLnByb3RvY29sSXMo
IndzIikgfHwgdXJsLnByb3RvY29sSXMoIndzcyIpKTsKIAotICAgIFVSTCBodHRwc1VSTChVUkwo
KSwgImh0dHBzOi8vIiArIG1fdXJsLmhvc3QoKSk7CisgICAgVVJMIGh0dHBzVVJMIHsgImh0dHBz
Oi8vIiArIG1fdXJsLmhvc3QoKSB9OwogICAgIG1faHR0cHNVUkwgPSBodHRwc1VSTC5jcmVhdGVD
RlVSTCgpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAppbmRleCBkMGVmMGU3MTE2MmI1
MzYzYWQ0MjU0MTdkODVlYzcyMzhmM2Y2MmJlLi4yZDZiMDkxMjg4ODVkN2FjOTUxMzU1YzA4OWY4
YTQ4ZTkxN2Y0Yzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKQEAgLTM2NSw4ICszNjUsOCBAQCBzaXplX3QgQ3VybFJl
cXVlc3Q6OmRpZFJlY2VpdmVIZWFkZXIoU3RyaW5nJiYgaGVhZGVyKQogICAgIGlmIChhdXRvIGxl
bmd0aCA9IG1fY3VybEhhbmRsZS0+Z2V0Q29udGVudExlbmd0aCgpKQogICAgICAgICBtX3Jlc3Bv
bnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCA9ICpsZW5ndGg7CiAKLSAgICBpZiAoYXV0byBwcm94
eVVybCA9IG1fY3VybEhhbmRsZS0+Z2V0UHJveHlVcmwoKSkKLSAgICAgICAgbV9yZXNwb25zZS5w
cm94eVVybCA9IFVSTChVUkwoKSwgKnByb3h5VXJsKTsKKyAgICBpZiAoYXV0byBwcm94eVVSTCA9
IG1fY3VybEhhbmRsZS0+Z2V0UHJveHlVcmwoKSkKKyAgICAgICAgbV9yZXNwb25zZS5wcm94eVVy
bCA9IFVSTCB7ICpwcm94eVVSTCB9OwogCiAgICAgaWYgKGF1dG8gYXV0aCA9IG1fY3VybEhhbmRs
ZS0+Z2V0SHR0cEF1dGhBdmFpbCgpKQogICAgICAgICBtX3Jlc3BvbnNlLmF2YWlsYWJsZUh0dHBB
dXRoID0gKmF1dGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9SZXNvdXJjZUVycm9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbQppbmRleCAyNWZjZGE3YTEwMTZlOTEzNmRmMmMwMzMy
N2UwNWZhNGU5MzYxM2MyLi44YjhiMTI2M2IxYjljNmYxYTYxODNkNzFlOGFkNjVhNmU5Yjc4MTNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJj
ZUVycm9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jl
c291cmNlRXJyb3JNYWMubW0KQEAgLTE2MCw3ICsxNjAsNyBAQCB2b2lkIFJlc291cmNlRXJyb3I6
OnBsYXRmb3JtTGF6eUluaXQoKQogICAgIG1fZXJyb3JDb2RlID0gW21fcGxhdGZvcm1FcnJvciBj
b2RlXTsKIAogICAgIGlmIChOU1N0cmluZyogZmFpbGluZ1VSTFN0cmluZyA9IFtbbV9wbGF0Zm9y
bUVycm9yIHVzZXJJbmZvXSB2YWx1ZUZvcktleTpAIk5TRXJyb3JGYWlsaW5nVVJMU3RyaW5nS2V5
Il0pCi0gICAgICAgIG1fZmFpbGluZ1VSTCA9IFVSTChVUkwoKSwgZmFpbGluZ1VSTFN0cmluZyk7
CisgICAgICAgIG1fZmFpbGluZ1VSTCA9IFVSTCB7IGZhaWxpbmdVUkxTdHJpbmcgfTsKICAgICBl
bHNlCiAgICAgICAgIG1fZmFpbGluZ1VSTCA9IFVSTCgoTlNVUkwgKilbW21fcGxhdGZvcm1FcnJv
ciB1c2VySW5mb10gdmFsdWVGb3JLZXk6QCJOU0Vycm9yRmFpbGluZ1VSTEtleSJdKTsKICAgICAv
LyBXb3JrYXJvdW5kIGZvciA8cmRhcjovL3Byb2JsZW0vNjU1NDA2Nz4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAppbmRleCA4NWY5NmQ4NWQyYjM3MmNm
YzIxNzFhODM0MTFkNTI4NjkyMDczY2Q0Li41N2I2YTBiZmUyYzk2ZmNkNTYyYzUwZjc4ZWZjODE3
OTg0OTZiMTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVi
b2FyZFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRX
aW4uY3BwCkBAIC00NTIsNyArNDUyLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVN0cmluZyhj
b25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSkKICAgICBDbGlwYm9hcmREYXRh
VHlwZSB3aW5UeXBlID0gY2xpcGJvYXJkVHlwZUZyb21NSU1FVHlwZSh0eXBlKTsKIAogICAgIGlm
ICh3aW5UeXBlID09IENsaXBib2FyZERhdGFUeXBlVVJMKSB7Ci0gICAgICAgIFdlYkNvcmU6Ondy
aXRlVVJMKG1fd3JpdGFibGVEYXRhT2JqZWN0LmdldCgpLCBVUkwoVVJMKCksIGRhdGEpLCBTdHJp
bmcoKSwgZmFsc2UsIHRydWUpOworICAgICAgICBXZWJDb3JlOjp3cml0ZVVSTChtX3dyaXRhYmxl
RGF0YU9iamVjdC5nZXQoKSwgVVJMIHsgZGF0YSB9LCBTdHJpbmcoKSwgZmFsc2UsIHRydWUpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAK
aW5kZXggOTgzYmI4OGJhNzMxNjA4YzcxYTI1ODFmY2JhODQ0ZDA4NTdhOGJkYS4uZTk1OTk2NzFk
OThlMGU0MmY0MDRlYzhlNjA0OWExODJmY2YwYzMyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcApAQCAtNTY4OCw3ICs1Njg4LDcgQEAgdm9pZCBJbnRlcm5hbHM6OnNlbmRIMlBp
bmcoU3RyaW5nIHVybCwgRE9NUHJvbWlzZURlZmVycmVkPElETERvdWJsZT4mJiBwcm9taXNlKQog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnNl
bmRIMlBpbmcoVVJMKFVSTCgpLCB1cmwpLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChF
eHBlY3RlZDxTZWNvbmRzLCBSZXNvdXJjZUVycm9yPiYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAg
ZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnNlbmRIMlBpbmcoVVJMIHsgdXJsIH0sIFtwcm9taXNl
ID0gV1RGTW92ZShwcm9taXNlKV0gKEV4cGVjdGVkPFNlY29uZHMsIFJlc291cmNlRXJyb3I+JiYg
cmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHJlc3VsdC5oYXNfdmFsdWUoKSkKICAgICAg
ICAgICAgIHByb21pc2UucmVzb2x2ZShyZXN1bHQudmFsdWUoKS52YWx1ZSgpKTsKICAgICAgICAg
ZWxzZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452936</attachid>
            <date>2022-02-22 21:43:55 -0800</date>
            <delta_ts>2022-02-22 23:20:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237068-20220222214354.patch</filename>
            <type>text/plain</type>
            <size>41443</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMzQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
NWQ1NDJjNmE3OWY1ZDI5YzY2ZWQzYzBlNDZlMjY2ZGI1ODA2MTY3Li5lMzZjZTczY2E3Y2RiN2U3
YmEwZWJkZjFmOGNkZGFhMWIzMTE3MWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAyMi0wMi0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBhIFVSTCBjb25zdHJ1Y3RvciB0aGF0IHRha2VzIGEgU3RyaW5nCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcwNjgKKworICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBBZG9wdCB0aGUgbmV3IGBV
UkwoY29uc3QgU3RyaW5nJilgIGNvbnN0cnVjdG9yLgorCisgICAgICAgICogQVBJL0pTQVBJR2xv
YmFsT2JqZWN0Lm1tOgorICAgICAgICAoSlNDOjpjb21wdXRlVmFsaWRJbXBvcnRTcGVjaWZpZXIp
OgorCiAyMDIyLTAyLTIyICBBbGV4YW5kZXIgS2FuYXZpbiAgPGFsZXhAbGludXRyb25peC5kZT4K
IAogICAgICAgICBXaGVuIGJ1aWxkaW5nIGludHJvc3BlY3Rpb24gZmlsZXMsIGFkZCBDTUFLRV9D
X0ZMQUdTIHRvIHRoZSBjb21waWxlciBmbGFncy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggMzMyZDA2ZDI2MmE3YWJkYTM4ZjIz
YWQ0OWEwOGM2YjczNmUxMTJjYy4uY2NhYmNhNWJjYzEwNjNmNDUyMDhlYjE2NWM1MmZlMDFkNmUz
NzFmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMi0wMi0yMiAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIFVSTCBjb25zdHJ1Y3RvciB0aGF0IHRha2Vz
IGEgU3RyaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzcwNjgKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBB
ZGQgYSBVUkwgY29uc3RydWN0b3IgdGhhdCB0YWtlcyBhIFN0cmluZyB0byBzaW1wbGlmeSBvdXIg
Y29kZSBiYXNlIGEgYml0LgorCisgICAgICAgICogd3RmL1VSTC5jcHA6CisgICAgICAgIChXVEY6
OlVSTDo6dHJ1bmNhdGVkRm9yVXNlQXNCYXNlIGNvbnN0KToKKyAgICAgICAgKFdURjo6VVJMOjpm
YWtlVVJMV2l0aFJlbGF0aXZlUGFydCk6CisgICAgICAgIChXVEY6OlVSTDo6ZmlsZVVSTFdpdGhG
aWxlU3lzdGVtUGF0aCk6CisgICAgICAgICogd3RmL1VSTC5oOgorICAgICAgICAoV1RGOjpVUkw6
OlVSTCk6CisgICAgICAgIChXVEY6OlVSTDo6ZGVjb2RlKToKKwogMjAyMi0wMi0yMiAgRWxsaW90
dCBXaWxsaWFtcyAgPGVtd0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVwbGFjZSBsZWdhY3ktYnVp
bGQtY29weS1uZXN0ZWQtaGVhZGVycy5weSB3aXRoIGFuIHhjb2RlYnVpbGQgaW52b2NhdGlvbgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IGMwNzQ1NWMyNTNiOWZjNzY5MGMyZjVhMDRhZjAwMTMwY2M4Mzc4M2YuLjQ0
ODc4MTRlZjI4ZmI5YmZkMzBhODBlZDk4Y2IwNzUyZGUyNjZkNmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MCBAQAorMjAyMi0wMi0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBhIFVSTCBjb25zdHJ1Y3RvciB0aGF0IHRha2VzIGEgU3RyaW5nCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcwNjgKKworICAg
ICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBBZG9wdCB0aGUgbmV3IGBV
UkwoY29uc3QgU3RyaW5nJilgIGNvbnN0cnVjdG9yLgorCisgICAgICAgICogTW9kdWxlcy93ZWJh
dXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXV0
aGVudGljYXRvckNvb3JkaW5hdG9ySW50ZXJuYWw6OnByb2Nlc3NBcHBJZEV4dGVuc2lvbik6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJTb2NrZXQ6OmNvbm5lY3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdE1v
ZHVsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXNvbHZlTW9kdWxlU3BlY2lmaWVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdE1vZHVsZUxvYWRlcjo6ZmV0Y2gpOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0TW9kdWxlTG9hZGVyOjptb2R1bGVVUkwpOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0TW9kdWxlTG9hZGVyOjpyZXNwb25zZVVSTEZyb21SZXF1ZXN0VVJMKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdE1vZHVsZUxvYWRlcjo6aW1wb3J0TW9kdWxlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNs
b25lRGVzZXJpYWxpemVyOjpyZWFkVGVybWluYWwpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNp
b25zL0NvbnRlbnRFeHRlbnNpb25BY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnRFeHRlbnNpb25zOjpSZWRpcmVjdEFjdGlvbjo6cGFyc2UpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEV4dGVuc2lvbnM6OlJlZGlyZWN0QWN0aW9uOjphcHBseVRvUmVxdWVzdCk6CisgICAg
ICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpyZWZl
cnJlcik6CisgICAgICAgICogaHRtbC9VUkxJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VVJMSW5wdXRUeXBlOjp0eXBlTWlzbWF0Y2hGb3IgY29uc3QpOgorICAgICAgICAqIGxvYWRl
ci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjptaWNyb3NvZnRUZWFtc1Jl
ZGlyZWN0VVJMKToKKyAgICAgICAgKiBsb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnBhcnNlQXR0cmli
dXRpb25SZXF1ZXN0UXVlcnkpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTo6ZGVsZXRlQ2FjaGVGb3JPcmlnaW4pOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL2Nm
L0xlZ2FjeVdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2
ZTo6Y3JlYXRlUmVzb3VyY2UpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL21odG1sL01IVE1M
UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1IVE1MUGFyc2VyOjpwYXJzZU5leHRQYXJ0
KToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01X
aW5kb3c6Om9wZW4pOgorICAgICAgICAqIHBhZ2UvUXVpcmtzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmlzQkJDRG9tYWluKToKKyAgICAgICAgKFdlYkNvcmU6OlF1aXJrczo6dHJpZ2dlck9wdGlv
bmFsU3RvcmFnZUFjY2Vzc1F1aXJrIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3Jp
Z2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3Ry
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUpOgorICAgICAg
ICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YTo6dG9VUkwgY29uc3QpOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlQb2xp
Y3kuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJy
ZXJIZWFkZXIpOgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OnJlcG9ydFZpb2xhdGlv
biBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Om9yaWdpbnNJbk1lZGlhQ2FjaGUp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnNldFBsYXliaW5VUkwpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIu
Y3BwOgorICAgICAgICAod2ViS2l0V2ViU3JjTWFrZVJlcXVlc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2d0ay9TZWxlY3Rpb25EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkRh
dGE6OnNldFVSSUxpc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1
ZXN0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRI
VFRQUmVmZXJyZXIpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJv
ckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OnBsYXRmb3JtTGF6eUlu
aXQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1w
bENGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OlNv
Y2tldFN0cmVhbUhhbmRsZUltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6ZGlkUmVjZWl2
ZUhlYWRlcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OnBsYXRmb3JtTGF6eUluaXQp
OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlU3RyaW5nKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVy
bmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNlbmRIMlBpbmcpOgorCiAy
MDIyLTAyLTIyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgU2hh
cmUgbW9yZSBjb2RlIGJldHdlZW4gZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50cygpIGFuZCBk
aXNwYXRjaExvY2FsU3RvcmFnZUV2ZW50cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0Lm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0FQSUdsb2JhbE9iamVjdC5tbQppbmRleCA2NTM4ZDMzNmM4ODk0MWUxMzc3ZGVjMGRhOGU0
ZmJkNzE5N2Q2NzRiLi5iM2UyYWU0NDFjNGVjNTIzNDJhZmU5ZDU0OWU0YWU2MjM4Y2UzNDVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0Lm1t
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QubW0KQEAg
LTgyLDcgKzgyLDcgQEAgdm9pZCBKU0FQSUdsb2JhbE9iamVjdDo6cmVwb3J0VW5jYXVnaHRFeGNl
cHRpb25BdEV2ZW50TG9vcChKU0dsb2JhbE9iamVjdCogZ2xvYmEKIAogc3RhdGljIEV4cGVjdGVk
PFVSTCwgU3RyaW5nPiBjb21wdXRlVmFsaWRJbXBvcnRTcGVjaWZpZXIoY29uc3QgVVJMJiBiYXNl
LCBjb25zdCBTdHJpbmcmIHNwZWNpZmllcikKIHsKLSAgICBVUkwgYWJzb2x1dGVVUkwoVVJMKCks
IHNwZWNpZmllcik7CisgICAgVVJMIGFic29sdXRlVVJMKHNwZWNpZmllcik7CiAgICAgaWYgKGFi
c29sdXRlVVJMLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIGFic29sdXRlVVJMOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwIGIvU291cmNlL1dURi93dGYvVVJMLmNwcApp
bmRleCA4MzMwMWFkY2Q1MmE0YWVkODM2N2JjODQxYzNjZGVlODgzYzYwOWQwLi5hNGFmYmFjNTZi
MjU5MzQ1Njg0ZjRkZjJhNWJiMjRiZjM5MzJiY2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9VUkwuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAKQEAgLTY0LDcgKzY0LDEyIEBA
IHZvaWQgVVJMOjppbnZhbGlkYXRlKCkKIAogVVJMOjpVUkwoY29uc3QgVVJMJiBiYXNlLCBjb25z
dCBTdHJpbmcmIHJlbGF0aXZlLCBjb25zdCBVUkxUZXh0RW5jb2RpbmcqIGVuY29kaW5nKQogewot
ICAgICp0aGlzID0gVVJMUGFyc2VyKHJlbGF0aXZlLCBiYXNlLCBlbmNvZGluZykucmVzdWx0KCk7
CisgICAgKnRoaXMgPSBVUkxQYXJzZXIoU3RyaW5nIHsgcmVsYXRpdmUgfSwgIGJhc2UsIGVuY29k
aW5nKS5yZXN1bHQoKTsKK30KKworVVJMOjpVUkwoU3RyaW5nJiYgYWJzb2x1dGVVUkwsIGNvbnN0
IFVSTFRleHRFbmNvZGluZyogZW5jb2RpbmcpCit7CisgICAgKnRoaXMgPSBVUkxQYXJzZXIoV1RG
TW92ZShhYnNvbHV0ZVVSTCksIFVSTCgpLCBlbmNvZGluZykucmVzdWx0KCk7CiB9CiAKIHN0YXRp
YyBib29sIHNob3VsZFRyaW1Gcm9tVVJMKFVDaGFyIGNoYXJhY3RlcikKQEAgLTIzNSw3ICsyNDAs
NyBAQCBTdHJpbmdWaWV3IFVSTDo6ZnJhZ21lbnRJZGVudGlmaWVyKCkgY29uc3QKIAogVVJMIFVS
TDo6dHJ1bmNhdGVkRm9yVXNlQXNCYXNlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gVVJMKFVSTCgp
LCBtX3N0cmluZy5sZWZ0KG1fcGF0aEFmdGVyTGFzdFNsYXNoKSk7CisgICAgcmV0dXJuIFVSTCht
X3N0cmluZy5sZWZ0KG1fcGF0aEFmdGVyTGFzdFNsYXNoKSk7CiB9CiAKICNpZiAhVVNFKENGKQpA
QCAtNTcxLDkgKzU3Niw5IEBAIHN0YXRpYyBTdHJpbmcgcGVyY2VudEVuY29kZUNoYXJhY3RlcnMo
Y29uc3QgU3RyaW5nVHlwZSYgaW5wdXQsIGJvb2woKnNob3VsZEVuY29kCiAgICAgICAgIHJldHVy
biBpbnB1dDsKIH0KIAotdm9pZCBVUkw6OnBhcnNlKGNvbnN0IFN0cmluZyYgc3RyaW5nKQordm9p
ZCBVUkw6OnBhcnNlKFN0cmluZyYmIHN0cmluZykKIHsKLSAgICAqdGhpcyA9IFVSTFBhcnNlcihz
dHJpbmcpLnJlc3VsdCgpOworICAgICp0aGlzID0gVVJMUGFyc2VyKFdURk1vdmUoc3RyaW5nKSku
cmVzdWx0KCk7CiB9CiAKIHZvaWQgVVJMOjpyZW1vdmUodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVk
IGxlbmd0aCkKQEAgLTU4Myw5ICs1ODgsOSBAQCB2b2lkIFVSTDo6cmVtb3ZlKHVuc2lnbmVkIHN0
YXJ0LCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgQVNTRVJUKHN0YXJ0IDwgbV9zdHJpbmcubGVuZ3Ro
KCkpOwogICAgIEFTU0VSVChsZW5ndGggPD0gbV9zdHJpbmcubGVuZ3RoKCkgLSBzdGFydCk7CiAK
LSAgICBhdXRvIHN0cmluZ0FmdGVyUmVtb3ZhbCA9IFdURk1vdmUobV9zdHJpbmcpOworICAgIGF1
dG8gc3RyaW5nQWZ0ZXJSZW1vdmFsID0gc3RkOjpleGNoYW5nZShtX3N0cmluZywgeyB9KTsKICAg
ICBzdHJpbmdBZnRlclJlbW92YWwucmVtb3ZlKHN0YXJ0LCBsZW5ndGgpOwotICAgIHBhcnNlKHN0
cmluZ0FmdGVyUmVtb3ZhbCk7CisgICAgcGFyc2UoV1RGTW92ZShzdHJpbmdBZnRlclJlbW92YWwp
KTsKIH0KIAogdm9pZCBVUkw6OnNldFVzZXIoU3RyaW5nVmlldyBuZXdVc2VyKQpAQCAtMTA1NCwx
MiArMTA1OSwxMiBAQCBTdHJpbmcgVVJMOjpzdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgo
dW5zaWduZWQgbGVuZ3RoKSBjb25zdAogCiBVUkwgVVJMOjpmYWtlVVJMV2l0aFJlbGF0aXZlUGFy
dChTdHJpbmdWaWV3IHJlbGF0aXZlUGFydCkKIHsKLSAgICByZXR1cm4gVVJMKFVSTCgpLCBtYWtl
U3RyaW5nKCJ3ZWJraXQtZmFrZS11cmw6Ly8iLCBjcmVhdGVWZXJzaW9uNFVVSURTdHJpbmcoKSwg
Jy8nLCByZWxhdGl2ZVBhcnQpKTsKKyAgICByZXR1cm4gVVJMKG1ha2VTdHJpbmcoIndlYmtpdC1m
YWtlLXVybDovLyIsIGNyZWF0ZVZlcnNpb240VVVJRFN0cmluZygpLCAnLycsIHJlbGF0aXZlUGFy
dCkpOwogfQogCiBVUkwgVVJMOjpmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoKFN0cmluZ1ZpZXcg
cGF0aCkKIHsKLSAgICByZXR1cm4gVVJMKFVSTCgpLCBtYWtlU3RyaW5nKAorICAgIHJldHVybiBV
UkwobWFrZVN0cmluZygKICAgICAgICAgImZpbGU6Ly8iLAogICAgICAgICBwYXRoLnN0YXJ0c1dp
dGgoJy8nKSA/ICIiIDogIi8iLAogICAgICAgICBlc2NhcGVQYXRoV2l0aG91dENvcHlpbmcocGF0
aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTC5oIGIvU291cmNlL1dURi93dGYvVVJM
LmgKaW5kZXggYjRiYWFkMThlM2U3MWE0N2M0ZWZkN2VjZTUxM2MxMTNjOTBiOTg5Zi4uMjc5YjM1
ZTA3ZDEwMzYyOTBiNWE3MWI1NTM4ZDBmYTdmZjE0ZjM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvVVJMLmgKKysrIGIvU291cmNlL1dURi93dGYvVVJMLmgKQEAgLTY1LDYgKzY1LDE0IEBA
IHB1YmxpYzoKICAgICAvLyBudWxsIG9yIGVtcHR5LCBpbiB3aGljaCBjYXNlIHRoZSByZWxhdGl2
ZSBVUkwgd2lsbCBiZSBpbnRlcnByZXRlZCBhcyBhYnNvbHV0ZS4KICAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgVVJMKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgU3RyaW5nJiByZWxhdGl2ZSwgY29uc3Qg
VVJMVGV4dEVuY29kaW5nKiA9IG51bGxwdHIpOwogCisgICAgLy8gUGFyc2VzIHRoZSBpbnB1dCBz
dHJpbmcgYXMgYW4gYWJzb2x1dGUgVVJMLiBJZiB5b3UgbmVlZCB0byBwYXJzZSBhIHJlbGF0aXZl
IFVSTCwgY2FsbCB0aGUgY29uc3RydWN0b3IgYWJvdmUKKyAgICAvLyB0YWtpbmcgYSBiYXNlIFVS
TCBhbmQgYSByZWxhdGl2ZSBVUkwgc3RyaW5nLgorICAgIFdURl9FWFBPUlRfUFJJVkFURSBleHBs
aWNpdCBVUkwoU3RyaW5nJiYgYWJzb2x1dGVVUkwsIGNvbnN0IFVSTFRleHRFbmNvZGluZyogPSBu
dWxscHRyKTsKKyAgICBleHBsaWNpdCBVUkwoY29uc3QgU3RyaW5nJiBhYnNvbHV0ZVVSTCwgY29u
c3QgVVJMVGV4dEVuY29kaW5nKiBlbmNvZGluZyA9IG51bGxwdHIpCisgICAgICAgIDogVVJMKFN0
cmluZyB7IGFic29sdXRlVVJMIH0sIGVuY29kaW5nKQorICAgIHsKKyAgICB9CisKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFVSTCBmYWtlVVJMV2l0aFJlbGF0aXZlUGFydChTdHJpbmdW
aWV3KTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFVSTCBmaWxlVVJMV2l0aEZpbGVT
eXN0ZW1QYXRoKFN0cmluZ1ZpZXcpOwogCkBAIC0yMDksNyArMjE3LDcgQEAgcHJpdmF0ZToKICAg
ICB1bnNpZ25lZCBob3N0U3RhcnQoKSBjb25zdDsKICAgICB1bnNpZ25lZCBjcmVkZW50aWFsc0Vu
ZCgpIGNvbnN0OwogICAgIHZvaWQgcmVtb3ZlKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5n
dGgpOwotICAgIHZvaWQgcGFyc2UoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBwYXJzZShTdHJp
bmcmJik7CiAKICAgICBmcmllbmQgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgcHJvdG9jb2xIb3N0
QW5kUG9ydEFyZUVxdWFsKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOwogCkBAIC0zMTMsNyArMzIx
LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RkOjpvcHRpb25hbDxVUkw+IFVSTDo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgZGVjb2RlciA+PiBzdHJpbmc7CiAgICAgaWYg
KCFzdHJpbmcpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIFVSTChV
UkwoKSwgV1RGTW92ZSgqc3RyaW5nKSk7CisgICAgcmV0dXJuIFVSTChXVEZNb3ZlKCpzdHJpbmcp
KTsKIH0KIAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYg
YikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTFBhcnNlci5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi9VUkxQYXJzZXIuY3BwCmluZGV4IDEzNTM4NTY2MzE1ZTc0YjcyNzU2ODA2NjAwNTQxMDZm
MmVjYWI4MWEuLmZmZGM4ZDM4ZmViNWRkMTFlNjY5NzUwOGMyOGRiNDgxY2QzZjAxZDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1VSTFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
VVJMUGFyc2VyLmNwcApAQCAtMTA1OSwxMCArMTA1OSwxMCBAQCBBTFdBWVNfSU5MSU5FIHNpemVf
dCBVUkxQYXJzZXI6OmN1cnJlbnRQb3NpdGlvbihjb25zdCBDb2RlUG9pbnRJdGVyYXRvcjxDaGFy
YWN0ZQogICAgIHJldHVybiBpdGVyYXRvci5jb2RlVW5pdHNTaW5jZShyZWludGVycHJldF9jYXN0
PGNvbnN0IENoYXJhY3RlclR5cGUqPihtX2lucHV0QmVnaW4pKTsKIH0KIAotVVJMUGFyc2VyOjpV
UkxQYXJzZXIoY29uc3QgU3RyaW5nJiBpbnB1dCwgY29uc3QgVVJMJiBiYXNlLCBjb25zdCBVUkxU
ZXh0RW5jb2RpbmcqIG5vblVURjhRdWVyeUVuY29kaW5nKQotICAgIDogbV9pbnB1dFN0cmluZyhp
bnB1dCkKK1VSTFBhcnNlcjo6VVJMUGFyc2VyKFN0cmluZyYmIGlucHV0LCBjb25zdCBVUkwmIGJh
c2UsIGNvbnN0IFVSTFRleHRFbmNvZGluZyogbm9uVVRGOFF1ZXJ5RW5jb2RpbmcpCisgICAgOiBt
X2lucHV0U3RyaW5nKFdURk1vdmUoaW5wdXQpKQogewotICAgIGlmIChpbnB1dC5pc051bGwoKSkg
eworICAgIGlmIChtX2lucHV0U3RyaW5nLmlzTnVsbCgpKSB7CiAgICAgICAgIGlmIChiYXNlLmlz
VmFsaWQoKSAmJiAhYmFzZS5tX2Nhbm5vdEJlQUJhc2VVUkwpIHsKICAgICAgICAgICAgIG1fdXJs
ID0gYmFzZTsKICAgICAgICAgICAgIG1fdXJsLnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwpA
QCAtMTA3MCwyMyArMTA3MCwyMyBAQCBVUkxQYXJzZXI6OlVSTFBhcnNlcihjb25zdCBTdHJpbmcm
IGlucHV0LCBjb25zdCBVUkwmIGJhc2UsIGNvbnN0IFVSTFRleHRFbmNvZGluZwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGlucHV0LmlzOEJpdCgpKSB7Ci0gICAgICAgIG1faW5w
dXRCZWdpbiA9IGlucHV0LmNoYXJhY3RlcnM4KCk7Ci0gICAgICAgIHBhcnNlKGlucHV0LmNoYXJh
Y3RlcnM4KCksIGlucHV0Lmxlbmd0aCgpLCBiYXNlLCBub25VVEY4UXVlcnlFbmNvZGluZyk7Cisg
ICAgaWYgKG1faW5wdXRTdHJpbmcuaXM4Qml0KCkpIHsKKyAgICAgICAgbV9pbnB1dEJlZ2luID0g
bV9pbnB1dFN0cmluZy5jaGFyYWN0ZXJzOCgpOworICAgICAgICBwYXJzZShtX2lucHV0U3RyaW5n
LmNoYXJhY3RlcnM4KCksIG1faW5wdXRTdHJpbmcubGVuZ3RoKCksIGJhc2UsIG5vblVURjhRdWVy
eUVuY29kaW5nKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX2lucHV0QmVnaW4gPSBpbnB1dC5j
aGFyYWN0ZXJzMTYoKTsKLSAgICAgICAgcGFyc2UoaW5wdXQuY2hhcmFjdGVyczE2KCksIGlucHV0
Lmxlbmd0aCgpLCBiYXNlLCBub25VVEY4UXVlcnlFbmNvZGluZyk7CisgICAgICAgIG1faW5wdXRC
ZWdpbiA9IG1faW5wdXRTdHJpbmcuY2hhcmFjdGVyczE2KCk7CisgICAgICAgIHBhcnNlKG1faW5w
dXRTdHJpbmcuY2hhcmFjdGVyczE2KCksIG1faW5wdXRTdHJpbmcubGVuZ3RoKCksIGJhc2UsIG5v
blVURjhRdWVyeUVuY29kaW5nKTsKICAgICB9CiAKICAgICBBU1NFUlQoIW1fdXJsLm1faXNWYWxp
ZAotICAgICAgICB8fCBtX2RpZFNlZVN5bnRheFZpb2xhdGlvbiA9PSAobV91cmwuc3RyaW5nKCkg
IT0gaW5wdXQpCi0gICAgICAgIHx8IChpbnB1dC5pc0FsbFNwZWNpYWxDaGFyYWN0ZXJzPGlzQzBD
b250cm9sT3JTcGFjZT4oKSAmJiBtX3VybC5tX3N0cmluZyA9PSBiYXNlLm1fc3RyaW5nLmxlZnQo
YmFzZS5tX3F1ZXJ5RW5kKSkKKyAgICAgICAgfHwgbV9kaWRTZWVTeW50YXhWaW9sYXRpb24gPT0g
KG1fdXJsLnN0cmluZygpICE9IG1faW5wdXRTdHJpbmcpCisgICAgICAgIHx8IChtX2lucHV0U3Ry
aW5nLmlzQWxsU3BlY2lhbENoYXJhY3RlcnM8aXNDMENvbnRyb2xPclNwYWNlPigpICYmIG1fdXJs
Lm1fc3RyaW5nID09IGJhc2UubV9zdHJpbmcubGVmdChiYXNlLm1fcXVlcnlFbmQpKQogICAgICAg
ICB8fCAoYmFzZS5pc1ZhbGlkKCkgJiYgYmFzZS5wcm90b2NvbElzKCJmaWxlIikpKTsKICAgICBB
U1NFUlQoaW50ZXJuYWxWYWx1ZXNDb25zaXN0ZW50KG1fdXJsKSk7CiAjaWYgQVNTRVJUX0VOQUJM
RUQKICAgICBpZiAoIW1fZGlkU2VlU3ludGF4VmlvbGF0aW9uKSB7CiAgICAgICAgIC8vIEZvcmNl
IGEgc3ludGF4IHZpb2xhdGlvbiBhdCB0aGUgYmVnaW5uaW5nIHRvIG1ha2Ugc3VyZSB3ZSBnZXQg
dGhlIHNhbWUgcmVzdWx0LgotICAgICAgICBVUkxQYXJzZXIgcGFyc2VyKG1ha2VTdHJpbmcoIiAi
LCBpbnB1dCksIGJhc2UsIG5vblVURjhRdWVyeUVuY29kaW5nKTsKKyAgICAgICAgVVJMUGFyc2Vy
IHBhcnNlcihtYWtlU3RyaW5nKCIgIiwgbV9pbnB1dFN0cmluZyksIGJhc2UsIG5vblVURjhRdWVy
eUVuY29kaW5nKTsKICAgICAgICAgVVJMIHBhcnNlZCA9IHBhcnNlci5yZXN1bHQoKTsKICAgICAg
ICAgaWYgKHBhcnNlZC5pc1ZhbGlkKCkpCiAgICAgICAgICAgICBBU1NFUlQoYWxsVmFsdWVzRXF1
YWwocGFyc2VyLnJlc3VsdCgpLCBtX3VybCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
VVJMUGFyc2VyLmggYi9Tb3VyY2UvV1RGL3d0Zi9VUkxQYXJzZXIuaAppbmRleCA3NGJhZDgxN2Fl
NDAxNGVmN2FjNGU0N2E1ZDgzOTIzZTA5ZjY1YmE5Li4xMDk4YzMyZjRlZGJlMDYyZGU2Mjk2YjQ3
MTJhOWY4NGZjOWY5N2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9VUkxQYXJzZXIuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9VUkxQYXJzZXIuaApAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IGRlZmF1bHRQb3J0Rm9yUHJvdG9j
b2woU3RyaW5nVmlldyk7CiAKIHByaXZhdGU6Ci0gICAgVVJMUGFyc2VyKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFVSTCYgPSB7IH0sIGNvbnN0IFVSTFRleHRFbmNvZGluZyogPSBudWxscHRyKTsKKyAg
ICBVUkxQYXJzZXIoU3RyaW5nJiYsIGNvbnN0IFVSTCYgPSB7IH0sIGNvbnN0IFVSTFRleHRFbmNv
ZGluZyogPSBudWxscHRyKTsKICAgICBVUkwgcmVzdWx0KCkgeyByZXR1cm4gbV91cmw7IH0KIAog
ICAgIGZyaWVuZCBjbGFzcyBVUkw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKaW5kZXggNTQ5NjVm
ZjJlYWVjZWFlN2VjODg3MDBlYzYyZjE0Mzc5YzdmZGExZS4uZDQwMDc1MTdhZmZmYzNmOTRkM2Fm
NzE5ZWQ5OWQ5Zjk4ZGM3ZGI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9BdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcApAQCAtNzgsNyAr
NzgsNyBAQCBzdGF0aWMgU3RyaW5nIHByb2Nlc3NBcHBJZEV4dGVuc2lvbihjb25zdCBTZWN1cml0
eU9yaWdpbiYgZmFjZXRJZCwgY29uc3QgU3RyaW5nJgogICAgICAgICByZXR1cm4gZmFjZXRJZC50
b1N0cmluZygpOwogCiAgICAgLy8gU3RlcCAzLiBSZWxheCB0aGUgY29tcGFyaXNvbiB0byBzYW1l
IHNpdGUuCi0gICAgVVJMIGFwcElkVVJMKFVSTCgpLCBhcHBJZCk7CisgICAgVVJMIGFwcElkVVJM
IHsgYXBwSWQgfTsKICAgICBpZiAoIWFwcElkVVJMLmlzVmFsaWQoKSB8fCBmYWNldElkLnByb3Rv
Y29sKCkgIT0gYXBwSWRVUkwucHJvdG9jb2woKSB8fCAoUmVnaXN0cmFibGVEb21haW4oYXBwSWRV
UkwpICE9IFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChmYWNldElk
Lmhvc3QoKSkgJiYgIW5lZWRzQXBwSWRRdWlya3MoZmFjZXRJZC5ob3N0KCksIGFwcElkKSkpCiAg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICByZXR1cm4gYXBwSWQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IGZhZWRjNWI0MTA2
MjExNjU3NGE3NDk1YTMzODliMzhjYTk2OWY1ZTUuLmM1NTg3OTIzMjE1NWQ0NTVhOGU5M2JkODZi
ZmZiYzgxZjQwOTU5MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXQuY3BwCkBAIC0yMjMsNyArMjIzLDcgQEAgdm9pZCBXZWJTb2NrZXQ6OmZhaWxB
c3luY2hyb25vdXNseSgpCiBFeGNlcHRpb25Pcjx2b2lkPiBXZWJTb2NrZXQ6OmNvbm5lY3QoY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwcm90b2NvbHMpCiB7CiAgICAg
TE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAgY29ubmVjdCgpIHVybD0nJXMnIiwgdGhpcywgdXJs
LnV0ZjgoKS5kYXRhKCkpOwotICAgIG1fdXJsID0gVVJMKFVSTCgpLCB1cmwpOworICAgIG1fdXJs
ID0gVVJMIHsgdXJsIH07CiAKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsK
ICAgICBhdXRvJiBjb250ZXh0ID0gKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuY3BwCmluZGV4IDE3
NTdjYmQ4NDhhNDhiOTFjMmY4ODM0NTM5MzU1ZmU4Y2QxMjZlOWUuLjcwMWQzOWMwOGIwYjc5Y2Jh
MzIyMmIzMjU3ZDU1NDkzYWI0NzE4MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcApAQCAtOTMsNyArOTMsNyBAQCBzdGF0aWMgRXhw
ZWN0ZWQ8VVJMLCBTdHJpbmc+IHJlc29sdmVNb2R1bGVTcGVjaWZpZXIoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udAogewogICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVs
dGlwYWdlL3dlYmFwcGFwaXMuaHRtbCNyZXNvbHZlLWEtbW9kdWxlLXNwZWNpZmllcgogCi0gICAg
VVJMIGFic29sdXRlVVJMKFVSTCgpLCBzcGVjaWZpZXIpOworICAgIFVSTCBhYnNvbHV0ZVVSTCB7
IHNwZWNpZmllciB9OwogICAgIGlmIChhYnNvbHV0ZVVSTC5pc1ZhbGlkKCkpCiAgICAgICAgIHJl
dHVybiBhYnNvbHV0ZVVSTDsKIApAQCAtMTg5LDcgKzE4OSw3IEBAIEpTQzo6SlNJbnRlcm5hbFBy
b21pc2UqIFNjcmlwdE1vZHVsZUxvYWRlcjo6ZmV0Y2goSlNDOjpKU0dsb2JhbE9iamVjdCoganNH
bG9iYWxPCiAKICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS93
ZWJhcHBhcGlzLmh0bWwjZmV0Y2gtYS1zaW5nbGUtbW9kdWxlLXNjcmlwdAogCi0gICAgVVJMIGNv
bXBsZXRlZFVSTChVUkwoKSwgYXNTdHJpbmcobW9kdWxlS2V5VmFsdWUpLT52YWx1ZShqc0dsb2Jh
bE9iamVjdCkpOworICAgIFVSTCBjb21wbGV0ZWRVUkwgeyBhc1N0cmluZyhtb2R1bGVLZXlWYWx1
ZSktPnZhbHVlKGpzR2xvYmFsT2JqZWN0KSB9OwogICAgIGlmICghY29tcGxldGVkVVJMLmlzVmFs
aWQoKSkgewogICAgICAgICByZWplY3RXaXRoRmV0Y2hFcnJvcihkZWZlcnJlZC5nZXQoKSwgVHlw
ZUVycm9yLCAiTW9kdWxlIGtleSBpcyBhIHZhbGlkIFVSTC4iX3MpOwogICAgICAgICByZXR1cm4g
anNQcm9taXNlOwpAQCAtMjIzLDcgKzIyMyw3IEBAIFVSTCBTY3JpcHRNb2R1bGVMb2FkZXI6Om1v
ZHVsZVVSTChKU0M6OkpTR2xvYmFsT2JqZWN0JiBqc0dsb2JhbE9iamVjdCwgSlNDOjpKU1ZhCiAg
ICAgICAgIHJldHVybiBtX2NvbnRleHQudXJsKCk7CiAKICAgICBBU1NFUlQobW9kdWxlS2V5VmFs
dWUuaXNTdHJpbmcoKSk7Ci0gICAgcmV0dXJuIFVSTChVUkwoKSwgYXNTdHJpbmcobW9kdWxlS2V5
VmFsdWUpLT52YWx1ZSgmanNHbG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4gVVJMIHsgYXNTdHJp
bmcobW9kdWxlS2V5VmFsdWUpLT52YWx1ZSgmanNHbG9iYWxPYmplY3QpIH07CiB9CiAKIFVSTCBT
Y3JpcHRNb2R1bGVMb2FkZXI6OnJlc3BvbnNlVVJMRnJvbVJlcXVlc3RVUkwoSlNDOjpKU0dsb2Jh
bE9iamVjdCYganNHbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBtb2R1bGVLZXlWYWx1ZSkKQEAg
LTI0MSw3ICsyNDEsNyBAQCBVUkwgU2NyaXB0TW9kdWxlTG9hZGVyOjpyZXNwb25zZVVSTEZyb21S
ZXF1ZXN0VVJMKEpTQzo6SlNHbG9iYWxPYmplY3QmIGpzR2xvYmFsTwogICAgIEFTU0VSVChtb2R1
bGVLZXlWYWx1ZS5pc1N0cmluZygpKTsKICAgICBTdHJpbmcgcmVxdWVzdFVSTCA9IGFzU3RyaW5n
KG1vZHVsZUtleVZhbHVlKS0+dmFsdWUoJmpzR2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB7IH0pOwotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoVVJMKFVSTCgp
LCByZXF1ZXN0VVJMKS5pc1ZhbGlkKCksICJJbnZhbGlkIG1vZHVsZSByZWZlcnJlciBuZXZlciBz
dGFydHMgaW1wb3J0aW5nIGRlcGVuZGVudCBtb2R1bGVzLiIpOworICAgIEFTU0VSVF9XSVRIX01F
U1NBR0UoVVJMKHJlcXVlc3RVUkwpLmlzVmFsaWQoKSwgIkludmFsaWQgbW9kdWxlIHJlZmVycmVy
IG5ldmVyIHN0YXJ0cyBpbXBvcnRpbmcgZGVwZW5kZW50IG1vZHVsZXMuIik7CiAKICAgICBhdXRv
IGl0ZXJhdG9yID0gbV9yZXF1ZXN0VVJMVG9SZXNwb25zZVVSTE1hcC5maW5kKHJlcXVlc3RVUkwp
OwogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoaXRlcmF0b3IgIT0gbV9yZXF1ZXN0VVJMVG9SZXNw
b25zZVVSTE1hcC5lbmQoKSwgIk1vZHVsZSByZWZlcnJlciBtdXN0IHJlZ2lzdGVyIGl0c2VsZiB0
byB0aGUgbWFwIGJlZm9yZSBzdGFydGluZyBpbXBvcnRpbmcgZGVwZW5kZW50IG1vZHVsZXMuIik7
CkBAIC0zMjgsNyArMzI4LDcgQEAgSlNDOjpKU0ludGVybmFsUHJvbWlzZSogU2NyaXB0TW9kdWxl
TG9hZGVyOjppbXBvcnRNb2R1bGUoSlNDOjpKU0dsb2JhbE9iamVjdCoganMKICAgICAgICAgICAg
IHNjcmlwdEZldGNoZXIgPSBXb3JrZXJTY3JpcHRGZXRjaGVyOjpjcmVhdGUoRmV0Y2hPcHRpb25z
OjpDcmVkZW50aWFsczo6U2FtZU9yaWdpbiwgRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6U2Ny
aXB0LCBSZWZlcnJlclBvbGljeTo6RW1wdHlTdHJpbmcpOwogICAgICAgICB9CiAgICAgfSBlbHNl
IHsKLSAgICAgICAgYmFzZVVSTCA9IFVSTChVUkwoKSwgc291cmNlT3JpZ2luLnN0cmluZygpKTsK
KyAgICAgICAgYmFzZVVSTCA9IFVSTCB7IHNvdXJjZU9yaWdpbi5zdHJpbmcoKSB9OwogICAgICAg
ICBpZiAoIWJhc2VVUkwuaXNWYWxpZCgpKQogICAgICAgICAgICAgcmV0dXJuIHJlamVjdFByb21p
c2UoZ2xvYmFsT2JqZWN0LCBUeXBlRXJyb3IsICJJbXBvcnRlciBtb2R1bGUga2V5IGlzIG5vdCBh
IFN5bWJvbCBvciBhIFN0cmluZy4iX3MpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCA1Y2RlZGEzZTc2YzFjMDhh
MmU0MjMyZGRjMjBmZjBlMzgzYWMzZjZiLi40MjUyYTU2NDc2M2IwY2M2MGQxMDc1MWY5ODhkNGQx
MWFkODQ3YzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTI1NjQsNyArMjU2NCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIGlmICghbV9jYW5DcmVhdGVET01PYmplY3QpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
IAotICAgICAgICBmaWxlID0gRmlsZTo6ZGVzZXJpYWxpemUoZXhlY3V0aW9uQ29udGV4dChtX2xl
eGljYWxHbG9iYWxPYmplY3QpLCBmaWxlUGF0aCwgVVJMKFVSTCgpLCB1cmwtPnN0cmluZygpKSwg
dHlwZS0+c3RyaW5nKCksIG5hbWUtPnN0cmluZygpLCBvcHRpb25hbExhc3RNb2RpZmllZCk7Cisg
ICAgICAgIGZpbGUgPSBGaWxlOjpkZXNlcmlhbGl6ZShleGVjdXRpb25Db250ZXh0KG1fbGV4aWNh
bEdsb2JhbE9iamVjdCksIGZpbGVQYXRoLCBVUkwgeyB1cmwtPnN0cmluZygpIH0sIHR5cGUtPnN0
cmluZygpLCBuYW1lLT5zdHJpbmcoKSwgb3B0aW9uYWxMYXN0TW9kaWZpZWQpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTM2NDksNyArMzY0OSw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgICAgIGlmICghbV9jYW5DcmVh
dGVET01PYmplY3QpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwotICAgICAgICAg
ICAgcmV0dXJuIGdldEpTVmFsdWUoQmxvYjo6ZGVzZXJpYWxpemUoZXhlY3V0aW9uQ29udGV4dCht
X2xleGljYWxHbG9iYWxPYmplY3QpLCBVUkwoVVJMKCksIHVybC0+c3RyaW5nKCkpLCB0eXBlLT5z
dHJpbmcoKSwgc2l6ZSwgYmxvYkZpbGVQYXRoRm9yQmxvYlVSTCh1cmwtPnN0cmluZygpKSkuZ2V0
KCkpOworICAgICAgICAgICAgcmV0dXJuIGdldEpTVmFsdWUoQmxvYjo6ZGVzZXJpYWxpemUoZXhl
Y3V0aW9uQ29udGV4dChtX2xleGljYWxHbG9iYWxPYmplY3QpLCBVUkwgeyB1cmwtPnN0cmluZygp
IH0sIHR5cGUtPnN0cmluZygpLCBzaXplLCBibG9iRmlsZVBhdGhGb3JCbG9iVVJMKHVybC0+c3Ry
aW5nKCkpKS5nZXQoKSk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBTdHJpbmdUYWc6IHsKICAg
ICAgICAgICAgIENhY2hlZFN0cmluZ1JlZiBjYWNoZWRTdHJpbmc7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQWN0aW9ucy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQWN0aW9u
cy5jcHAKaW5kZXggZGI2ZjUwOGM0Yjc3MDIwMDE4ZWJhMzIyZTAxYjE0Mjg5NDgyMGQ4Mi4uZDU5
NmRhNDA4Yjc4N2MxZGY2NjE5MzZjYzBjMjFlNDgzOTllMmY4NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkFjdGlvbnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25BY3Rp
b25zLmNwcApAQCAtMzAzLDcgKzMwMyw3IEBAIEV4cGVjdGVkPFJlZGlyZWN0QWN0aW9uLCBzdGQ6
OmVycm9yX2NvZGU+IFJlZGlyZWN0QWN0aW9uOjpwYXJzZShjb25zdCBKU09OOjpPYmplCiAgICAg
fQogCiAgICAgaWYgKGF1dG8gdXJsU3RyaW5nID0gcmVkaXJlY3QtPmdldFN0cmluZygidXJsIik7
ICEhdXJsU3RyaW5nKSB7Ci0gICAgICAgIGF1dG8gdXJsID0gVVJMKFVSTCgpLCB1cmxTdHJpbmcp
OworICAgICAgICBVUkwgdXJsIHsgdXJsU3RyaW5nIH07CiAgICAgICAgIGlmICghdXJsLmlzVmFs
aWQoKSkKICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChDb250ZW50RXh0ZW5zaW9u
RXJyb3I6OkpTT05SZWRpcmVjdFVSTEludmFsaWQpOwogICAgICAgICBpZiAodXJsLnByb3RvY29s
SXNKYXZhU2NyaXB0KCkpCkBAIC0zODIsNyArMzgyLDcgQEAgdm9pZCBSZWRpcmVjdEFjdGlvbjo6
YXBwbHlUb1JlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBVUkwmIGV4dGVu
c2kKICAgICAgICAgYWN0aW9uLmFwcGx5VG9VUkwodXJsKTsKICAgICAgICAgcmVxdWVzdC5zZXRV
UkwoV1RGTW92ZSh1cmwpKTsKICAgICB9LCBbJl0gKGNvbnN0IFVSTEFjdGlvbiYgYWN0aW9uKSB7
Ci0gICAgICAgIHJlcXVlc3Quc2V0VVJMKFVSTChVUkwoKSwgYWN0aW9uLnVybCkpOworICAgICAg
ICByZXF1ZXN0LnNldFVSTChVUkwgeyBhY3Rpb24udXJsIH0pOwogICAgIH0pLCBhY3Rpb24pOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBjMmZmMzVmZTUxMzM0YzFhMTUxMGQwNWU5
MjBkNWNiNDkzZmFhYzU5Li4yZjBiY2Q4NjM2MTM0ZmY1NGZjYjljNDVkNzg5MDllM2M2YWZmM2Rh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTUzMzksNyArNTMzOSw3IEBAIFN0cmluZyBE
b2N1bWVudDo6cmVmZXJyZXIoKQogICAgICAgICAgICAgVVJMIHJlZmVycmVyVVJMIHsgVVJMKCks
IHJlZmVycmVyU3RyIH07CiAgICAgICAgICAgICBSZWdpc3RyYWJsZURvbWFpbiByZWZlcnJlclJl
Z2lzdHJhYmxlRG9tYWluIHsgcmVmZXJyZXJVUkwgfTsKICAgICAgICAgICAgIGlmICghcmVmZXJy
ZXJSZWdpc3RyYWJsZURvbWFpbi5tYXRjaGVzKHNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpKSkgewot
ICAgICAgICAgICAgICAgIG1fcmVmZXJyZXJPdmVycmlkZSA9IFVSTChVUkwoKSwgcmVmZXJyZXJV
UkwucHJvdG9jb2xIb3N0QW5kUG9ydCgpKS5zdHJpbmcoKTsKKyAgICAgICAgICAgICAgICBtX3Jl
ZmVycmVyT3ZlcnJpZGUgPSBVUkwgeyByZWZlcnJlclVSTC5wcm90b2NvbEhvc3RBbmRQb3J0KCkg
fS5zdHJpbmcoKTsKICAgICAgICAgICAgICAgICByZXR1cm4gbV9yZWZlcnJlck92ZXJyaWRlOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L1VSTElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTElucHV0VHlwZS5jcHAK
aW5kZXggMmMyN2UyMjllMzkyNmE3ZjYzZGYzNjc0MzE4OTVlYjUxOTBiNzkwNy4uMDYwYTRmNThj
MTczNjg5NzUwYTY1YmQ4YzYxMWQyNjVmZWMzOWRkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9VUkxJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMSW5w
dXRUeXBlLmNwcApAQCAtNDcsNyArNDcsNyBAQCBjb25zdCBBdG9tU3RyaW5nJiBVUkxJbnB1dFR5
cGU6OmZvcm1Db250cm9sVHlwZSgpIGNvbnN0CiAKIGJvb2wgVVJMSW5wdXRUeXBlOjp0eXBlTWlz
bWF0Y2hGb3IoY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKIHsKLSAgICByZXR1cm4gIXZhbHVl
LmlzRW1wdHkoKSAmJiAhVVJMKFVSTCgpLCB2YWx1ZSkuaXNWYWxpZCgpOworICAgIHJldHVybiAh
dmFsdWUuaXNFbXB0eSgpICYmICFVUkwodmFsdWUpLmlzVmFsaWQoKTsKIH0KIAogYm9vbCBVUkxJ
bnB1dFR5cGU6OnR5cGVNaXNtYXRjaCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmNwcAppbmRleCAzYmI3MDAzZDlhMmY0Y2I4MDA2ZTExMjcxMGY2ZjhmYmEwMjI4
YmVjLi4yMGRkZWZkZTQyODFiZWFjNmJlOTczZjE4NTM0ZGVmOGE1NTlkMWI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTg0OSw3ICs4NDksNyBAQCB2b2lk
IERvY3VtZW50TG9hZGVyOjpzdG9wTG9hZGluZ0FmdGVyWEZyYW1lT3B0aW9uc09yQ29udGVudFNl
Y3VyaXR5UG9saWN5RGVuaWVkKAogI2lmIEVOQUJMRShJTlRFTExJR0VOVF9UUkFDS0lOR19QUkVW
RU5USU9OKQogc3RhdGljIFVSTCBtaWNyb3NvZnRUZWFtc1JlZGlyZWN0VVJMKCkKIHsKLSAgICBy
ZXR1cm4gVVJMKFVSTCgpLCAiaHR0cHM6Ly93d3cubWljcm9zb2Z0LmNvbS9lbi11cy9taWNyb3Nv
ZnQtMzY1L21pY3Jvc29mdC10ZWFtcy8iKTsKKyAgICByZXR1cm4gVVJMIHsgImh0dHBzOi8vd3d3
Lm1pY3Jvc29mdC5jb20vZW4tdXMvbWljcm9zb2Z0LTM2NS9taWNyb3NvZnQtdGVhbXMvIl9zdHIg
fTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50LmNwcAppbmRleCBmMDNiNGE0M2ZlZWExN2E3OTkzYWI5Zjc5YjRiY2MwM2M5
MmExOWIyLi40YTUwNzA1NGUwODY0NTk0ZDhjZWM2NWM2YTYxMGViYTE1Y2YwOGVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5jcHAKQEAg
LTE1NCw3ICsxNTQsNyBAQCBFeHBlY3RlZDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmli
dXRpb25UcmlnZ2VyRGF0YSwgU3RyaW5nPiBQcml2YXRlQ2xpY2tNZQogICAgICAgICAgICAgaWYg
KCFzb3VyY2VEb21haW4uaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5l
eHBlY3RlZCgiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIFRyaWdnZXJpbmcgZXZlbnQgd2Fz
IG5vdCBhY2NlcHRlZCBiZWNhdXNlIHRoZSBVUkwgaGFkIG11bHRpcGxlIGF0dHJpYnV0aW9uU291
cmNlIHF1ZXJ5IHBhcmFtZXRlcnMuIl9zKTsKIAotICAgICAgICAgICAgYXV0byBhdHRyaWJ1dGlv
blNvdXJjZVVSTCA9IFVSTChVUkwoKSwgcGFyYW1ldGVyLnZhbHVlKTsKKyAgICAgICAgICAgIFVS
TCBhdHRyaWJ1dGlvblNvdXJjZVVSTCB7IHBhcmFtZXRlci52YWx1ZSB9OwogICAgICAgICAgICAg
aWYgKCFhdHRyaWJ1dGlvblNvdXJjZVVSTC5pc1ZhbGlkKCkgfHwgKGF0dHJpYnV0aW9uU291cmNl
VVJMLmhhc1BhdGgoKSAmJiBhdHRyaWJ1dGlvblNvdXJjZVVSTC5wYXRoKCkubGVuZ3RoKCkgPiAx
KSB8fCBhdHRyaWJ1dGlvblNvdXJjZVVSTC5oYXNDcmVkZW50aWFscygpIHx8IGF0dHJpYnV0aW9u
U291cmNlVVJMLmhhc1F1ZXJ5KCkgfHwgYXR0cmlidXRpb25Tb3VyY2VVUkwuaGFzRnJhZ21lbnRJ
ZGVudGlmaWVyKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJbUHJp
dmF0ZSBDbGljayBNZWFzdXJlbWVudF0gVHJpZ2dlcmluZyBldmVudCB3YXMgbm90IGFjY2VwdGVk
IGJlY2F1c2UgdGhlIFVSTCdzIGF0dHJpYnV0aW9uU291cmNlIHF1ZXJ5IHBhcmFtZXRlciB3YXMg
bm90IGEgdmFsaWQgVVJMIG9yIHdhcyBhIFVSTCB3aXRoIGEgcGF0aCwgY3JlZGVudGlhbHMsIHF1
ZXJ5IHN0cmluZywgb3IgZnJhZ21lbnQuIl9zKTsKICAgICAgICAgICAgIHNvdXJjZURvbWFpbiA9
IFJlZ2lzdHJhYmxlRG9tYWluIHsgYXR0cmlidXRpb25Tb3VyY2VVUkwgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2UuY3BwCmluZGV4IDZiOWU3ZTI5NWZkNmZiMjBmZjBkNzRmZGNmMjNmYzY2MDBhNjAwM2YuLmEw
MmJhNDBjNzdkNTEzNjFiNzkxNmIzMzExOTY2MWU5YTU0OGJiNDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
LmNwcApAQCAtMTQ5NSw3ICsxNDk1LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
ZGVsZXRlQ2FjaGVGb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWMKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIFVSTCBvcmlnaW5VUkwoVVJMKCksIHNlY3VyaXR5T3Jp
Z2luLnRvU3RyaW5nKCkpOworICAgIFVSTCBvcmlnaW5VUkwgPSBzZWN1cml0eU9yaWdpbi50b1VS
TCgpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiB1cmwgOiAqdXJscykgewogICAgICAgICBpZiAo
IXByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbCh1cmwsIG9yaWdpblVSTCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCmlu
ZGV4IGRlZDc2ZmI4YTkxODY5YjE2YzM4NDcxNGUwNTIzN2IyMzNlMzlkZWIuLjA3MzI0ZGQxZTAw
Y2EyM2UzZGUzMDg1YTI3MGY4ZWIzNTE3NWE1OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCkBAIC0yMjUsNyArMjI1
LDcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUmVz
b3VyY2UoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb24KICAgICAgICAgcmVzcG9uc2UgPSBjcmVhdGVS
ZXNvdXJjZVJlc3BvbnNlRnJvbVByb3BlcnR5TGlzdERhdGEocmVzb3VyY2VSZXNwb25zZURhdGEs
IHJlc291cmNlUmVzcG9uc2VWZXJzaW9uKTsKICAgICB9CiAKLSAgICByZXR1cm4gQXJjaGl2ZVJl
c291cmNlOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVzb3VyY2VEYXRhKSwgVVJMKFVS
TCgpLCB1cmwpLCBtaW1lVHlwZSwgdGV4dEVuY29kaW5nLCBmcmFtZU5hbWUsIHJlc3BvbnNlKTsK
KyAgICByZXR1cm4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoU2hhcmVkQnVmZmVyOjpjcmVhdGUo
cmVzb3VyY2VEYXRhKSwgVVJMIHsgdXJsIH0sIG1pbWVUeXBlLCB0ZXh0RW5jb2RpbmcsIGZyYW1l
TmFtZSwgcmVzcG9uc2UpOwogfQogCiBSZWY8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJj
aGl2ZTo6Y3JlYXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L21odG1sL01IVE1MUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21o
dG1sL01IVE1MUGFyc2VyLmNwcAppbmRleCBlNTE4NmVmYjBiNGZhNzBjYjYwOTMxZjQ4NGU1MDBj
YzEwZTAwYmNiLi5jZGU3YWU0Y2MxMGVlZjVhNmIzODQ4MjcxMDU3YjM3MDhmNWI1NzM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIu
Y3BwCkBAIC0yMTksNyArMjE5LDcgQEAgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gTUhUTUxQYXJz
ZXI6OnBhcnNlTmV4dFBhcnQoY29uc3QgTUlNRUhlYWRlciYgbWltZUhlYWRlciwKICAgICAvLyBG
SVhNRTogdGhlIFVSTCBpbiB0aGUgTUlNRSBoZWFkZXIgY291bGQgYmUgcmVsYXRpdmUsIHdlIHNo
b3VsZCByZXNvbHZlIGl0IGlmIGl0IGlzLgogICAgIC8vIFRoZSBzcGVjcyBtZW50aW9ucyA1IHdh
eXMgdG8gcmVzb2x2ZSBhIFVSTDogaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMjU1NyNz
ZWN0aW9uLTUKICAgICAvLyBJRSBhbmQgRmlyZWZveCAoVU5NaHQpIHNlZW0gdG8gZ2VuZXJhdGUg
b25seSBhYnNvbHV0ZSBVUkxzLgotICAgIFVSTCBsb2NhdGlvbiA9IFVSTChVUkwoKSwgbWltZUhl
YWRlci5jb250ZW50TG9jYXRpb24oKSk7CisgICAgVVJMIGxvY2F0aW9uIHsgbWltZUhlYWRlci5j
b250ZW50TG9jYXRpb24oKSB9OwogICAgIHJldHVybiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShX
VEZNb3ZlKGNvbnRlbnRCdWZmZXIpLCBsb2NhdGlvbiwgbWltZUhlYWRlci5jb250ZW50VHlwZSgp
LCBtaW1lSGVhZGVyLmNoYXJzZXQoKSwgU3RyaW5nKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5jcHAKaW5kZXggNTE0NzUwN2Q2YTA0YmZjYjJiNThmYTdhNjllZmYwY2U3MjRjOTFmNS4u
ZTg1YmU1YWI0MTFjMzkyZjBiY2E0NTcyZmVmMTAyZDkyMzllOGU4OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmNwcApAQCAtMjU4Miw4ICsyNTgyLDggQEAgRXhjZXB0aW9uT3I8UmVmUHRyPFdp
bmRvd1Byb3h5Pj4gRE9NV2luZG93OjpvcGVuKERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01X
aW4KICNpZiBFTkFCTEUoSU5URUxMSUdFTlRfVFJBQ0tJTkdfUFJFVkVOVElPTikKICAgICBpZiAo
UmVmUHRyIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKSkgewogICAgICAgICBpZiAoZG9jdW1l
bnQtPnNldHRpbmdzKCkubmVlZHNTaXRlU3BlY2lmaWNRdWlya3MoKSAmJiB1cmxTdHJpbmdUb09w
ZW4gPT0gUXVpcmtzOjpCQkNSYWRpb1BsYXllclVSTFN0cmluZygpKSB7Ci0gICAgICAgICAgICBh
dXRvIHJhZGlvUGxheWVyRG9tYWluID0gUmVnaXN0cmFibGVEb21haW4oVVJMKFVSTCgpLCBRdWly
a3M6OnN0YXRpY1JhZGlvUGxheWVyVVJMU3RyaW5nKCkpKTsKLSAgICAgICAgICAgIGF1dG8gQkJD
RG9tYWluID0gUmVnaXN0cmFibGVEb21haW4oVVJMKFVSTCgpLCBRdWlya3M6OkJCQ1JhZGlvUGxh
eWVyVVJMU3RyaW5nKCkpKTsKKyAgICAgICAgICAgIGF1dG8gcmFkaW9QbGF5ZXJEb21haW4gPSBS
ZWdpc3RyYWJsZURvbWFpbihVUkwgeyBRdWlya3M6OnN0YXRpY1JhZGlvUGxheWVyVVJMU3RyaW5n
KCkgfSk7CisgICAgICAgICAgICBhdXRvIEJCQ0RvbWFpbiA9IFJlZ2lzdHJhYmxlRG9tYWluKFVS
TCB7IFF1aXJrczo6QkJDUmFkaW9QbGF5ZXJVUkxTdHJpbmcoKSB9KTsKICAgICAgICAgICAgIGlm
ICghUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLmhhc0Nyb3NzUGFnZVN0b3JhZ2VBY2Nl
c3MocmFkaW9QbGF5ZXJEb21haW4sIEJCQ0RvbWFpbikpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IFJlZlB0cjxXaW5kb3dQcm94eT4geyBudWxscHRyIH07CiAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVp
cmtzLmNwcAppbmRleCA2Y2NiZTMxZjZhYTA1ZTZlYzM5N2M2N2RmYzk0NGNlNWY0OWM1MWZmLi5l
Yjg1ODIyZTM3MmJhY2YwMjY1NTUxNjM1NTljMmY5NzRlZGYyMTJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9RdWly
a3MuY3BwCkBAIC0xMDk4LDcgKzEwOTgsNyBAQCBjb25zdCBTdHJpbmcmIFF1aXJrczo6c3RhdGlj
UmFkaW9QbGF5ZXJVUkxTdHJpbmcoKQogCiBzdGF0aWMgYm9vbCBpc0JCQ0RvbWFpbihjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxS
ZWdpc3RyYWJsZURvbWFpbj4gQkJDRG9tYWluID0gUmVnaXN0cmFibGVEb21haW4oVVJMKFVSTCgp
LCBRdWlya3M6OkJCQ1JhZGlvUGxheWVyVVJMU3RyaW5nKCkpKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8UmVnaXN0cmFibGVEb21haW4+IEJCQ0RvbWFpbiA9IFJlZ2lzdHJhYmxlRG9tYWlu
KFVSTCB7IFF1aXJrczo6QkJDUmFkaW9QbGF5ZXJVUkxTdHJpbmcoKSB9KTsKICAgICByZXR1cm4g
ZG9tYWluID09IEJCQ0RvbWFpbjsKIH0KIApAQCAtMTE3Miw3ICsxMTcyLDcgQEAgUXVpcmtzOjpT
dG9yYWdlQWNjZXNzUmVzdWx0IFF1aXJrczo6dHJpZ2dlck9wdGlvbmFsU3RvcmFnZUFjY2Vzc1F1
aXJrKEVsZW1lbnQmIGUKICAgICAgICAgc2V0LmFkZChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVj
a2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKCJ0aGVpbnZlbnRvcnkuY29tIl9z
KSk7CiAgICAgICAgIHJldHVybiBzZXQ7CiAgICAgfSgpOwotICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxVUkw+IGtpbmphVVJMID0gVVJMKFVSTCgpLCAiaHR0cHM6Ly9raW5qYS5jb20iKTsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQga2luamFVUkwgPSBVUkwgeyAiaHR0cHM6Ly9raW5qYS5j
b20iX3N0ciB9OwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZWdpc3RyYWJsZURvbWFpbj4g
a2luamFEb21haW4geyBraW5qYVVSTCB9OwogCiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJl
Z2lzdHJhYmxlRG9tYWluPiB5b3VUdWJlRG9tYWluID0gUmVnaXN0cmFibGVEb21haW46OnVuY2hl
Y2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZygieW91dHViZS5jb20iX3MpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAppbmRleCAwY2I0OWFmN2M1NTAwZDE3
ODQ0N2I5NTY2YTgzNjRhMTY0YTk4ZGU1Li4yNzM4YWQxYjlhZjQ4YmFmOTQxMTcyODM4MTk2NmQ1
ZDA0MjBjNzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcApAQCAtNTkw
LDEzICs1OTAsMTMgQEAgYm9vbCBzZXJpYWxpemVkT3JpZ2luc01hdGNoKGNvbnN0IFNlY3VyaXR5
T3JpZ2luKiBvcmlnaW4xLCBjb25zdCBTZWN1cml0eU9yaWdpbioKIAogUmVmPFNlY3VyaXR5T3Jp
Z2luPiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIG9yaWdp
blN0cmluZykKIHsKLSAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShVUkwoVVJMKCks
IG9yaWdpblN0cmluZykpOworICAgIHJldHVybiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFVSTCB7
IG9yaWdpblN0cmluZyB9KTsKIH0KIAogUmVmPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgaG9zdCwgc3Rk
OjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCkKIHsKICAgICBTdHJpbmcgZGVjb2RlZEhvc3QgPSBQ
QUw6OmRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhob3N0KTsKLSAgICBhdXRvIG9yaWdpbiA9IGNy
ZWF0ZShVUkwoVVJMKCksIHByb3RvY29sICsgIjovLyIgKyBob3N0ICsgIi8iKSk7CisgICAgYXV0
byBvcmlnaW4gPSBjcmVhdGUoVVJMIHsgcHJvdG9jb2wgKyAiOi8vIiArIGhvc3QgKyAiLyIgfSk7
CiAgICAgaWYgKHBvcnQgJiYgIVdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKCpwb3J0LCBw
cm90b2NvbCkpCiAgICAgICAgIG9yaWdpbi0+bV9kYXRhLnBvcnQgPSBwb3J0OwogICAgIHJldHVy
biBvcmlnaW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2lu
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKaW5k
ZXggMWFiNzdmNmVkZjMzOGVlY2NiNTdjYzQ1Y2U1NDJhYzNhOWM0YzQyMS4uMmQzODZkYjFmZjNj
NjJjYWZhNzk5ZTU4MmY3ZTVjMDI1YmYwZGMzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2Vj
dXJpdHlPcmlnaW5EYXRhLmNwcApAQCAtNTEsNyArNTEsNyBAQCBTdHJpbmcgU2VjdXJpdHlPcmln
aW5EYXRhOjp0b1N0cmluZygpIGNvbnN0CiAKIFVSTCBTZWN1cml0eU9yaWdpbkRhdGE6OnRvVVJM
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gVVJMIHsgVVJMKCksIHRvU3RyaW5nKCkgfTsKKyAgICBy
ZXR1cm4gVVJMIHsgdG9TdHJpbmcoKSB9OwogfQogCiBTZWN1cml0eU9yaWdpbkRhdGEgU2VjdXJp
dHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUoRnJhbWUqIGZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
Y3VyaXR5UG9saWN5LmNwcAppbmRleCA2OGI0OTE0MmI2ZTQ0M2M5M2EzYWFjOThkNDRmMGU2ODIy
NzUzYmNhLi5kYjA5NGEwMmQzMWNmM2JjMzNkNzllOGU3MWQ4MGM5ZDM2YTdkYzgwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcApAQCAtOTEsOCArOTEsOCBAQCBTdHJpbmcg
U2VjdXJpdHlQb2xpY3k6OnJlZmVycmVyVG9PcmlnaW5TdHJpbmcoY29uc3QgU3RyaW5nJiByZWZl
cnJlcikKIAogU3RyaW5nIFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKFJl
ZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiByZWZlcnJlcikKIHsKLSAgICBBU1NFUlQocmVmZXJyZXIgPT0gVVJMKFVSTCgpLCByZWZlcnJl
cikuc3RyaXBwZWRGb3JVc2VBc1JlZmVycmVyKCkKLSAgICAgICAgfHwgcmVmZXJyZXIgPT0gU2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZShVUkwoVVJMKCksIHJlZmVycmVyKSktPnRvU3RyaW5nKCkpOwor
ICAgIEFTU0VSVChyZWZlcnJlciA9PSBVUkwgeyByZWZlcnJlciB9LnN0cmlwcGVkRm9yVXNlQXNS
ZWZlcnJlcigpCisgICAgICAgIHx8IHJlZmVycmVyID09IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUo
VVJMIHsgcmVmZXJyZXIgfSktPnRvU3RyaW5nKCkpOwogCiAgICAgaWYgKHJlZmVycmVyLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKaW5kZXggOGEyYmE0Y2ZmYTI2ZGNjYmJk
MWU3NWVlNTAxMTNhODY2YmU1YTJmYS4uOWIzZDdiZDE2ZTU1Y2JiYzM3MmQyNGVmMTU4OGZmNTlj
MDNlNjRmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3Vy
aXR5UG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJp
dHlQb2xpY3kuY3BwCkBAIC03NjksNyArNzY5LDcgQEAgdm9pZCBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OnJlcG9ydFZpb2xhdGlvbihjb25zdCBTdHJpbmcmIGVmZmVjdGl2ZVZpb2xhdGVkRGlyZWMK
ICAgICAgICAgYmxvY2tlZFVSSSA9IGJsb2NrZWRVUkxTdHJpbmc7CiAgICAgZWxzZSB7CiAgICAg
ICAgIC8vIElmIHRoZXJlIGlzIGEgcmVkaXJlY3QgdGhlbiB3ZSB1c2UgdGhlIHByZS1yZWRpcmVj
dCBVUkw6IGh0dHBzOi8vd3d3LnczLm9yZy9UUi9DU1AzLyNzZWN1cml0eS12aW9sYXRpb24tcmVw
b3J0cy4KLSAgICAgICAgYmxvY2tlZFVSSSA9IGNyZWF0ZVVSTEZvclJlcG9ydGluZyhwcmVSZWRp
cmVjdFVSTC5pc051bGwoKSA/IFVSTChVUkwoKSwgYmxvY2tlZFVSTFN0cmluZykgOiBwcmVSZWRp
cmVjdFVSTCwgZWZmZWN0aXZlVmlvbGF0ZWREaXJlY3RpdmUpOworICAgICAgICBibG9ja2VkVVJJ
ID0gY3JlYXRlVVJMRm9yUmVwb3J0aW5nKHByZVJlZGlyZWN0VVJMLmlzTnVsbCgpID8gVVJMIHsg
YmxvY2tlZFVSTFN0cmluZyB9IDogcHJlUmVkaXJlY3RVUkwsIGVmZmVjdGl2ZVZpb2xhdGVkRGly
ZWN0aXZlKTsKICAgICB9CiAKICAgICBpbmZvLmRvY3VtZW50VVJJID0gbV9kb2N1bWVudFVSTCA/
IG1fZG9jdW1lbnRVUkwudmFsdWUoKS5zdHJpcHBlZEZvclVzZUFzUmVmZXJyZXIoKSA6IGJsb2Nr
ZWRVUkk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCA2YmRhMmZlMGI4YWEzZDI4NWExNmYx
MTAxMjUzYTE2ODVjYWVhY2Y4Li4xMzQ1MTAwMWVjODdhNzY1NmExYWU2NmQyNWZlMDQ4NGI1Mjhi
MDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTM2Miw3ICszNjIsNyBAQCBIYXNoU2V0
PFNlY3VyaXR5T3JpZ2luRGF0YT4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
b3JpZ2luc0luTWVkaWFDYQogICAgICAgICByZXR1cm4gb3JpZ2luczsKIAogICAgIGZvciAoTlNT
dHJpbmcgKmtleSBpbiBbYXNzZXRDYWNoZSBhbGxLZXlzXSkgewotICAgICAgICBVUkwga2V5QXNV
UkwgPSBVUkwoVVJMKCksIGtleSk7CisgICAgICAgIFVSTCBrZXlBc1VSTCB7IGtleSB9OwogICAg
ICAgICBpZiAoa2V5QXNVUkwuaXNWYWxpZCgpKQogICAgICAgICAgICAgb3JpZ2lucy5hZGQoU2Vj
dXJpdHlPcmlnaW5EYXRhOjpmcm9tVVJMKGtleUFzVVJMKSk7CiAgICAgfQpAQCAtNDI2LDcgKzQy
Niw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2xlYXJNZWRp
YUNhY2hlRm9yT3JpZ2lucyhjb25zdCBTdHJpbmcmCiAgICAgICAgIHJldHVybjsKIAogICAgIGZv
ciAoTlNTdHJpbmcgKmtleSBpbiBbYXNzZXRDYWNoZSBhbGxLZXlzXSkgewotICAgICAgICBVUkwg
a2V5QXNVUkwgPSBVUkwoVVJMKCksIGtleSk7CisgICAgICAgIFVSTCBrZXlBc1VSTCB7IGtleSB9
OwogICAgICAgICBpZiAoa2V5QXNVUkwuaXNWYWxpZCgpKSB7CiAgICAgICAgICAgICBpZiAob3Jp
Z2lucy5jb250YWlucyhTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21VUkwoa2V5QXNVUkwpKSkKICAg
ICAgICAgICAgICAgICBbYXNzZXRDYWNoZSByZW1vdmVFbnRyeUZvcktleTprZXldOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA5ZmM4ZGYw
MTllNTE0NjA1YTUzMDdmZmM5MDJiMTAwZTQ5MjllODMzLi5mNzk5OTgzZGUyNDAxNDk0NDI2Y2Vh
MTMzODJjOGE5YjJhMGIwZGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyLmNwcApAQCAtOTIyLDcgKzkyMiw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpzZXRQbGF5YmluVVJMKGNvbnN0IFVSTCYgdXJsKQogICAgIGlmICh1cmwu
aXNMb2NhbEZpbGUoKSkKICAgICAgICAgY2xlYW5VUkxTdHJpbmcgPSBjbGVhblVSTFN0cmluZy5z
dWJzdHJpbmcoMCwgdXJsLnBhdGhFbmQoKSk7CiAKLSAgICBtX3VybCA9IFVSTChVUkwoKSwgY2xl
YW5VUkxTdHJpbmcpOworICAgIG1fdXJsID0gVVJMIHsgY2xlYW5VUkxTdHJpbmcgfTsKICAgICBH
U1RfSU5GT19PQkpFQ1QocGlwZWxpbmUoKSwgIkxvYWQgJXMiLCBtX3VybC5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKICAgICBnX29iamVjdF9zZXQobV9waXBlbGluZS5nZXQoKSwgInVyaSIsIG1f
dXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIG51bGxwdHIpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdT
dHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
V2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAppbmRleCBiN2IwN2ZmMTQ1NGQ1NjFhMzAyMTA4
YWUzMjI5MWU4ZjgzNDM3YmQ5Li43Njk2ZDFjYjcyYzViNWE3NzVlODI2YTQ3NTk0NmYxYTFiMmEw
OTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApAQCAt
NjQ0LDcgKzY0NCw3IEBAIHN0YXRpYyB2b2lkIHdlYktpdFdlYlNyY01ha2VSZXF1ZXN0KFdlYktp
dFdlYlNyYyogc3JjLCBEYXRhTXV0ZXhMb2NrZXI8V2ViS2l0V2ViCiAgICAgQVNTRVJUKG1lbWJl
cnMtPnJlcXVlc3RlZFBvc2l0aW9uICE9IG1lbWJlcnMtPnN0b3BQb3NpdGlvbik7CiAKICAgICBH
U1RfREVCVUdfT0JKRUNUKHNyYywgIlBvc3RpbmcgdGFzayB0byByZXF1ZXN0IFIldSAlcyByZXF1
ZXN0ZWRQb3NpdGlvbj0lIiBHX0dVSU5UNjRfRk9STUFUICIgc3RvcFBvc2l0aW9uPSUiIEdfR1VJ
TlQ2NF9GT1JNQVQsIG1lbWJlcnMtPnJlcXVlc3ROdW1iZXIsIHByaXYtPm9yaWdpbmFsVVJJLmRh
dGEoKSwgbWVtYmVycy0+cmVxdWVzdGVkUG9zaXRpb24sIG1lbWJlcnMtPnN0b3BQb3NpdGlvbik7
Ci0gICAgVVJMIHVybCA9IFVSTChVUkwoKSwgcHJpdi0+b3JpZ2luYWxVUkkuZGF0YSgpKTsKKyAg
ICBVUkwgdXJsIHsgcHJpdi0+b3JpZ2luYWxVUkkuZGF0YSgpIH07CiAKICAgICBSZXNvdXJjZVJl
cXVlc3QgcmVxdWVzdCh1cmwpOwogICAgIHJlcXVlc3Quc2V0QWxsb3dDb29raWVzKHRydWUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuY3BwCmluZGV4IDlm
MTgxZmRmZTUwN2FkNWI3YTQ3YjVjNTgyOTVjZjRmMjcyNWU3ZDguLjYyMTdkZTZhNWI1MzgxMDlh
NGVmZjZhYjY5YTgzOTViN2FiMzdkMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9TZWxlY3Rpb25EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvU2VsZWN0aW9uRGF0YS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBTZWxlY3Rpb25EYXRh
OjpzZXRVUklMaXN0KGNvbnN0IFN0cmluZyYgdXJpTGlzdFN0cmluZykKICAgICAgICAgaWYgKGxp
bmVbMF0gPT0gJyMnKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgVVJMIHVybCA9
IFVSTChVUkwoKSwgbGluZSk7CisgICAgICAgIFVSTCB1cmwgeyBsaW5lIH07CiAgICAgICAgIGlm
ICh1cmwuaXNWYWxpZCgpKSB7CiAgICAgICAgICAgICBpZiAoIXNldFVSTCkgewogICAgICAgICAg
ICAgICAgIG1fdXJsID0gdXJsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKaW5kZXggYzczYjA0MzEwZmNlYzkzYjRh
YTZkYWE0MjUwNDFkZDRlOWZmMzg5Zi4uYTQyYmNlMTczMDYyMjRmNzhhM2NlZWM2MGQ0MzhkYmJj
ZTI5ZDQyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZVJlcXVlc3RCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCkBAIC0zOTQsNyArMzk0LDcgQEAgdm9pZCBSZXNvdXJj
ZVJlcXVlc3RCYXNlOjpzZXRIVFRQUmVmZXJyZXIoY29uc3QgU3RyaW5nJiBodHRwUmVmZXJyZXIp
CiAgICAgY29uc3RleHByIHNpemVfdCBtYXhMZW5ndGggPSA0MDk2OwogICAgIGlmIChodHRwUmVm
ZXJyZXIubGVuZ3RoKCkgPiBtYXhMZW5ndGgpIHsKICAgICAgICAgUkVMRUFTRV9MT0coTG9hZGlu
ZywgIlRydW5jYXRpbmcgSFRUUCByZWZlcmVyIik7Ci0gICAgICAgIFN0cmluZyBvcmlnaW4gPSBV
UkwoVVJMKCksIFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoVVJMKFVSTCgpLCBodHRwUmVmZXJyZXIp
KS0+dG9TdHJpbmcoKSkuc3RyaW5nKCk7CisgICAgICAgIFN0cmluZyBvcmlnaW4gPSBVUkwoU2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZShVUkwgeyBodHRwUmVmZXJyZXIgfSktPnRvU3RyaW5nKCkpLnN0
cmluZygpOwogICAgICAgICBpZiAob3JpZ2luLmxlbmd0aCgpIDw9IG1heExlbmd0aCkKICAgICAg
ICAgICAgIHNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6UmVmZXJlciwgb3JpZ2lu
KTsKICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcAppbmRleCA5NTlmNzdlNWY5OTEzZWFhYzMzMzZkYTkw
NGI1MTFhMjQzODU4ZGFlLi41MTY5MDQ1YzcwNWYwODk4ZTgzMTc0ZTMxNjZlM2E2MGVkYTk0Yjgz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
RXJyb3JDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZUVycm9yQ0YuY3BwCkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBSZXNvdXJjZUVycm9yOjpw
bGF0Zm9ybUxhenlJbml0KCkKICAgICBpZiAodXNlckluZm8uZ2V0KCkpIHsKICAgICAgICAgQ0ZT
dHJpbmdSZWYgZmFpbGluZ1VSTFN0cmluZyA9IChDRlN0cmluZ1JlZikgQ0ZEaWN0aW9uYXJ5R2V0
VmFsdWUodXNlckluZm8uZ2V0KCksIGZhaWxpbmdVUkxTdHJpbmdLZXkpOwogICAgICAgICBpZiAo
ZmFpbGluZ1VSTFN0cmluZykKLSAgICAgICAgICAgIG1fZmFpbGluZ1VSTCA9IFVSTChVUkwoKSwg
ZmFpbGluZ1VSTFN0cmluZyk7CisgICAgICAgICAgICBtX2ZhaWxpbmdVUkwgPSBVUkwgeyBmYWls
aW5nVVJMU3RyaW5nIH07CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgQ0ZVUkxSZWYgZmFp
bGluZ1VSTCA9IChDRlVSTFJlZikgQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUodXNlckluZm8uZ2V0KCks
IGZhaWxpbmdVUkxLZXkpOwogICAgICAgICAgICAgaWYgKGZhaWxpbmdVUkwpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxl
SW1wbENGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0
U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcAppbmRleCBiYzdkZjllYmNkOTZmNTUwMDkwNjk5ODg0
MWEwOTY1YzhmYjhlNjA3Li43MDQwYjMyNjI1NzU3OGM3MTAzYmZlMzY0MTNmYTkzOWFiZmM1MTAw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0
cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwCkBAIC0xMTAsNyArMTEwLDcg
QEAgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbChjb25zdCBV
UkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGwKIAogICAgIEFTU0VSVCh1cmwucHJvdG9jb2xJcygi
d3MiKSB8fCB1cmwucHJvdG9jb2xJcygid3NzIikpOwogCi0gICAgVVJMIGh0dHBzVVJMKFVSTCgp
LCAiaHR0cHM6Ly8iICsgbV91cmwuaG9zdCgpKTsKKyAgICBVUkwgaHR0cHNVUkwgeyAiaHR0cHM6
Ly8iICsgbV91cmwuaG9zdCgpIH07CiAgICAgbV9odHRwc1VSTCA9IGh0dHBzVVJMLmNyZWF0ZUNG
VVJMKCk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCmluZGV4IGQwZWYwZTcxMTYyYjUz
NjNhZDQyNTQxN2Q4NWVjNzIzOGYzZjYyYmUuLjJkNmIwOTEyODg4NWQ3YWM5NTEzNTVjMDg5Zjhh
NDhlOTE3ZjRjOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApAQCAtMzY1LDggKzM2NSw4IEBAIHNpemVfdCBDdXJsUmVx
dWVzdDo6ZGlkUmVjZWl2ZUhlYWRlcihTdHJpbmcmJiBoZWFkZXIpCiAgICAgaWYgKGF1dG8gbGVu
Z3RoID0gbV9jdXJsSGFuZGxlLT5nZXRDb250ZW50TGVuZ3RoKCkpCiAgICAgICAgIG1fcmVzcG9u
c2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoID0gKmxlbmd0aDsKIAotICAgIGlmIChhdXRvIHByb3h5
VXJsID0gbV9jdXJsSGFuZGxlLT5nZXRQcm94eVVybCgpKQotICAgICAgICBtX3Jlc3BvbnNlLnBy
b3h5VXJsID0gVVJMKFVSTCgpLCAqcHJveHlVcmwpOworICAgIGlmIChhdXRvIHByb3h5VVJMID0g
bV9jdXJsSGFuZGxlLT5nZXRQcm94eVVybCgpKQorICAgICAgICBtX3Jlc3BvbnNlLnByb3h5VXJs
ID0gVVJMIHsgKnByb3h5VVJMIH07CiAKICAgICBpZiAoYXV0byBhdXRoID0gbV9jdXJsSGFuZGxl
LT5nZXRIdHRwQXV0aEF2YWlsKCkpCiAgICAgICAgIG1fcmVzcG9uc2UuYXZhaWxhYmxlSHR0cEF1
dGggPSAqYXV0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL1Jlc291cmNlRXJyb3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9SZXNvdXJjZUVycm9yTWFjLm1tCmluZGV4IDI1ZmNkYTdhMTAxNmU5MTM2ZGYyYzAzMzI3
ZTA1ZmE0ZTkzNjEzYzIuLjhiOGIxMjYzYjFiOWM2ZjFhNjE4M2Q3MWU4YWQ2NWE2ZTliNzgxM2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNl
RXJyb3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVz
b3VyY2VFcnJvck1hYy5tbQpAQCAtMTYwLDcgKzE2MCw3IEBAIHZvaWQgUmVzb3VyY2VFcnJvcjo6
cGxhdGZvcm1MYXp5SW5pdCgpCiAgICAgbV9lcnJvckNvZGUgPSBbbV9wbGF0Zm9ybUVycm9yIGNv
ZGVdOwogCiAgICAgaWYgKE5TU3RyaW5nKiBmYWlsaW5nVVJMU3RyaW5nID0gW1ttX3BsYXRmb3Jt
RXJyb3IgdXNlckluZm9dIHZhbHVlRm9yS2V5OkAiTlNFcnJvckZhaWxpbmdVUkxTdHJpbmdLZXki
XSkKLSAgICAgICAgbV9mYWlsaW5nVVJMID0gVVJMKFVSTCgpLCBmYWlsaW5nVVJMU3RyaW5nKTsK
KyAgICAgICAgbV9mYWlsaW5nVVJMID0gVVJMIHsgZmFpbGluZ1VSTFN0cmluZyB9OwogICAgIGVs
c2UKICAgICAgICAgbV9mYWlsaW5nVVJMID0gVVJMKChOU1VSTCAqKVtbbV9wbGF0Zm9ybUVycm9y
IHVzZXJJbmZvXSB2YWx1ZUZvcktleTpAIk5TRXJyb3JGYWlsaW5nVVJMS2V5Il0pOwogICAgIC8v
IFdvcmthcm91bmQgZm9yIDxyZGFyOi8vcHJvYmxlbS82NTU0MDY3PgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCmluZGV4IDg1Zjk2ZDg1ZDJiMzcyY2Zj
MjE3MWE4MzQxMWQ1Mjg2OTIwNzNjZDQuLjU3YjZhMGJmZTJjOTZmY2Q1NjJjNTBmNzhlZmM4MTc5
ODQ5NmIxMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJv
YXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdp
bi5jcHAKQEAgLTQ1Miw3ICs0NTIsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlU3RyaW5nKGNv
bnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKQogICAgIENsaXBib2FyZERhdGFU
eXBlIHdpblR5cGUgPSBjbGlwYm9hcmRUeXBlRnJvbU1JTUVUeXBlKHR5cGUpOwogCiAgICAgaWYg
KHdpblR5cGUgPT0gQ2xpcGJvYXJkRGF0YVR5cGVVUkwpIHsKLSAgICAgICAgV2ViQ29yZTo6d3Jp
dGVVUkwobV93cml0YWJsZURhdGFPYmplY3QuZ2V0KCksIFVSTChVUkwoKSwgZGF0YSksIFN0cmlu
ZygpLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIFdlYkNvcmU6OndyaXRlVVJMKG1fd3JpdGFibGVE
YXRhT2JqZWN0LmdldCgpLCBVUkwgeyBkYXRhIH0sIFN0cmluZygpLCBmYWxzZSwgdHJ1ZSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApp
bmRleCA5ODNiYjg4YmE3MzE2MDhjNzFhMjU4MWZjYmE4NDRkMDg1N2E4YmRhLi5lOTU5OTY3MWQ5
OGUwZTQyZjQwNGVjOGU2MDQ5YTE4MmZjZjBjMzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwCkBAIC01Njg4LDcgKzU2ODgsNyBAQCB2b2lkIEludGVybmFsczo6c2VuZEgyUGlu
ZyhTdHJpbmcgdXJsLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMRG91YmxlPiYmIHByb21pc2UpCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuc2Vu
ZEgyUGluZyhVUkwoVVJMKCksIHVybCksIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0gKEV4
cGVjdGVkPFNlY29uZHMsIFJlc291cmNlRXJyb3I+JiYgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICBm
cmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuc2VuZEgyUGluZyhVUkwgeyB1cmwgfSwgW3Byb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpXSAoRXhwZWN0ZWQ8U2Vjb25kcywgUmVzb3VyY2VFcnJvcj4mJiBy
ZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAocmVzdWx0Lmhhc192YWx1ZSgpKQogICAgICAg
ICAgICAgcHJvbWlzZS5yZXNvbHZlKHJlc3VsdC52YWx1ZSgpLnZhbHVlKCkpOwogICAgICAgICBl
bHNlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>