<?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>188089</bug_id>
          
          <creation_ts>2018-07-26 19:24:03 -0700</creation_ts>
          <short_desc>Add RefCounted CompletionHandler wrapping abstraction for sending policy decisions back to WebProcess</short_desc>
          <delta_ts>2018-07-30 12:12:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>aestes</cc>
    
    <cc>cdumez</cc>
    
    <cc>ggaren</cc>
    
    <cc>realdawei</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1445626</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-07-26 19:24:03 -0700</bug_when>
    <thetext>Add RefCounted CompletionHandler wrapping abstraction for sending policy decisions back to WebProcess</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1445630</commentid>
    <comment_count>1</comment_count>
      <attachid>345896</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-07-26 19:30:41 -0700</bug_when>
    <thetext>Created attachment 345896
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1445712</commentid>
    <comment_count>2</comment_count>
      <attachid>345919</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-07-27 09:31:53 -0700</bug_when>
    <thetext>Created attachment 345919
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1445719</commentid>
    <comment_count>3</comment_count>
      <attachid>345921</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-07-27 09:53:52 -0700</bug_when>
    <thetext>Created attachment 345921
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1445724</commentid>
    <comment_count>4</comment_count>
      <attachid>345922</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-07-27 10:00:11 -0700</bug_when>
    <thetext>Created attachment 345922
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1445735</commentid>
    <comment_count>5</comment_count>
      <attachid>345922</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-07-27 10:27:20 -0700</bug_when>
    <thetext>Comment on attachment 345922
Patch

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

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:2415
&gt; +    template&lt;typename... Args&gt; static Ref&lt;PolicyDecisionSender&gt; create(Args... args)
&gt; +    {
&gt; +        return adoptRef(*new PolicyDecisionSender(std::forward&lt;Args&gt;(args)...));
&gt; +    }

Why is this function taking a template parameter pack even though all the callers are sending one parameters which is the CompletionHandler?

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:2420
&gt; +    template&lt;typename... Args&gt; void operator()(Args... args)
&gt; +    {
&gt; +        if (m_completionHandler)
&gt; +            m_completionHandler(std::forward&lt;Args&gt;(args)...);
&gt; +    }

I am not sure why this operator is not just a function, for example

template&lt;typename... Args&gt; void send(Args... args)
or template&lt;typename... Args&gt; void complete(Args... args)
or template&lt;typename... Args&gt; void apply(Args... args)

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:2455
&gt; +    sender.get()(action, navigation ? navigation-&gt;navigationID() : 0, downloadID, WTFMove(websitePolicies));

This is hard to read. I am not sure what sender.get()(...) really means. I think a verbose name would be better.

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:4028
&gt; +    auto listener = makeRef(frame-&gt;setUpPolicyListenerProxy([this, protectedThis = makeRef(*this), frame = makeRef(*frame), sender = sender.copyRef(), navigation] (WebCore::PolicyAction policyAction, API::WebsitePolicies* policies, ShouldProcessSwapIfPossible swap) mutable {

listener is initialized far from it is used. In fact there is a return statement comes before is it even used.

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:4055
&gt;      if (frame-&gt;didHandleContentFilterUnblockNavigation(request))
&gt; -        return receivedPolicyDecision(PolicyAction::Ignore, *frame, listenerID, &amp;m_navigationState-&gt;navigation(newNavigationID), std::nullopt);
&gt; +        return receivedPolicyDecision(PolicyAction::Ignore, &amp;m_navigationState-&gt;navigation(newNavigationID), std::nullopt, WTFMove(sender));

Does this return statement need to come after the initialization of listener?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1445752</commentid>
    <comment_count>6</comment_count>
      <attachid>345928</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-07-27 10:46:43 -0700</bug_when>
    <thetext>Created attachment 345928
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1445850</commentid>
    <comment_count>7</comment_count>
      <attachid>345928</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2018-07-27 13:46:19 -0700</bug_when>
    <thetext>Comment on attachment 345928
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1445853</commentid>
    <comment_count>8</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-07-27 13:50:18 -0700</bug_when>
    <thetext>http://trac.webkit.org/r234327</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1445854</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-07-27 13:51:37 -0700</bug_when>
    <thetext>&lt;rdar://problem/42673418&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1445960</commentid>
    <comment_count>10</comment_count>
      <attachid>345928</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2018-07-27 19:04:26 -0700</bug_when>
    <thetext>Comment on attachment 345928
Patch

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

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:2415
&gt; +    template&lt;typename Lambda&gt; static Ref&lt;PolicyDecisionSender&gt; create(Lambda lambda)
&gt; +    {
&gt; +        return adoptRef(*new PolicyDecisionSender(WTFMove(lambda)));
&gt; +    }

I do not think it is correct to have create() as a template function given that lambda is going to be assigned to a specific type which is CompletionHandler&lt;void(WebCore::PolicyAction, uint64_t newNavigationID, DownloadID, std::optional&lt;WebsitePoliciesData&gt;)&gt;. So why do not we specific about the type of the lambda?

    using SendFunction = CompletionHandler&lt;void(WebCore::PolicyAction, uint64_t newNavigationID, DownloadID, std::optional&lt;WebsitePoliciesData&gt;)&gt;;

    static Ref&lt;PolicyDecisionSender&gt; create(SendFunction&amp;&amp; sendFunction)
    {
        return adoptRef(*new PolicyDecisionSender(WTFMove(sendFunction)));
    }

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:2423
&gt; +    template&lt;typename Lambda&gt; PolicyDecisionSender(Lambda lambda)
&gt; +        : m_completionHandler(WTFMove(lambda)) { }

I do not think this constructor should be templatized. Also shouldn&apos;t lambda be an rvalue reference?

    PolicyDecisionSender(SendFunction&amp;&amp; sendFunction)
        : m_sendFunction(WTFMove(sendFunction))
    {
    }

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:2425
&gt; +    CompletionHandler&lt;void(WebCore::PolicyAction, uint64_t newNavigationID, DownloadID, std::optional&lt;WebsitePoliciesData&gt;)&gt; m_completionHandler;

This can be written simpler:

    SendFunction m_sendFunction;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1446227</commentid>
    <comment_count>11</comment_count>
    <who name="Dawei Fenton (:realdawei)">realdawei</who>
    <bug_when>2018-07-30 09:28:53 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #8)
&gt; http://trac.webkit.org/r234327

Seeing API crashes after this revision:

steps to reproduce:
run-api-tests --debug --verbose TestWebKitAPI.WebKit.JavaScriptDuringNavigation

Sample output:
 TestWebKitAPI.WebKit.JavaScriptDuringNavigation
        ASSERTION FAILED: Completion handler should always be called
        !m_function
        /Volumes/Data/slave/highsierra-debug/build/WebKitBuild/Debug/usr/local/include/wtf/CompletionHandler.h(51) : WTF::CompletionHandler&lt;void (WebCore::PolicyAction, unsigned long long, WebKit::DownloadID, std::optional&lt;WebKit::WebsitePoliciesData&gt;)&gt;::~CompletionHandler()
        1   0x102fa1749 WTFCrash
        2   0x108770577 WTF::CompletionHandler&lt;void (WebCore::PolicyAction, unsigned long long, WebKit::DownloadID, std::optional&lt;WebKit::WebsitePoliciesData&gt;)&gt;::~CompletionHandler()
        3   0x1087704f5 WTF::CompletionHandler&lt;void (WebCore::PolicyAction, unsigned long long, WebKit::DownloadID, std::optional&lt;WebKit::WebsitePoliciesData&gt;)&gt;::~CompletionHandler()
        4   0x1087704c3 WebKit::WebPageProxy::PolicyDecisionSender::~PolicyDecisionSender()
        5   0x108770475 WebKit::WebPageProxy::PolicyDecisionSender::~PolicyDecisionSender()
        6   0x108770447 WTF::RefCounted&lt;WebKit::WebPageProxy::PolicyDecisionSender&gt;::deref() const
        7   0x1087703ef WTF::Ref&lt;WebKit::WebPageProxy::PolicyDecisionSender, WTF::DumbPtrTraits&lt;WebKit::WebPageProxy::PolicyDecisionSender&gt; &gt;::~Ref()
        8   0x108716dd5 WTF::Ref&lt;WebKit::WebPageProxy::PolicyDecisionSender, WTF::DumbPtrTraits&lt;WebKit::WebPageProxy::PolicyDecisionSender&gt; &gt;::~Ref()
        9   0x108773fa7 WebKit::WebPageProxy::decidePolicyForResponse(unsigned long long, WebCore::SecurityOriginData const&amp;, unsigned long long, WebCore::ResourceResponse const&amp;, WebCore::ResourceRequest const&amp;, bool, unsigned long long, WebKit::UserData const&amp;)::$_10::operator()(WebCore::PolicyAction, API::WebsitePolicies*, WebKit::ShouldProcessSwapIfPossible)
        10  0x108773d89 WTF::Function&lt;void (WebCore::PolicyAction, API::WebsitePolicies*, WebKit::ShouldProcessSwapIfPossible)&gt;::CallableWrapper&lt;WebKit::WebPageProxy::decidePolicyForResponse(unsigned long long, WebCore::SecurityOriginData const&amp;, unsigned long long, WebCore::ResourceResponse const&amp;, WebCore::ResourceRequest const&amp;, bool, unsigned long long, WebKit::UserData const&amp;)::$_10&gt;::call(WebCore::PolicyAction, API::WebsitePolicies*, WebKit::ShouldProcessSwapIfPossible)
        11  0x1084f6073 WTF::Function&lt;void (WebCore::PolicyAction, API::WebsitePolicies*, WebKit::ShouldProcessSwapIfPossible)&gt;::operator()(WebCore::PolicyAction, API::WebsitePolicies*, WebKit::ShouldProcessSwapIfPossible) const
        12  0x1084f5c2c WTF::CompletionHandler&lt;void (WebCore::PolicyAction, API::WebsitePolicies*, WebKit::ShouldProcessSwapIfPossible)&gt;::operator()(WebCore::PolicyAction, API::WebsitePolicies*, WebKit::ShouldProcessSwapIfPossible)
        13  0x1084f911a WebKit::WebFrameProxy::setUpPolicyListenerProxy(WTF::CompletionHandler&lt;void (WebCore::PolicyAction, API::WebsitePolicies*, WebKit::ShouldProcessSwapIfPossible)&gt;&amp;&amp;)::$_0::operator()(WebCore::PolicyAction, API::WebsitePolicies*, WebKit::ShouldProcessSwapIfPossible)
        14  0x1084f8e39 WTF::Function&lt;void (WebCore::PolicyAction, API::WebsitePolicies*, WebKit::ShouldProcessSwapIfPossible)&gt;::CallableWrapper&lt;WebKit::WebFrameProxy::setUpPolicyListenerProxy(WTF::CompletionHandler&lt;void (WebCore::PolicyAction, API::WebsitePolicies*, WebKit::ShouldProcessSwapIfPossible)&gt;&amp;&amp;)::$_0&gt;::call(WebCore::PolicyAction, API::WebsitePolicies*, WebKit::ShouldProcessSwapIfPossible)
        15  0x1084f6073 WTF::Function&lt;void (WebCore::PolicyAction, API::WebsitePolicies*, WebKit::ShouldProcessSwapIfPossible)&gt;::operator()(WebCore::PolicyAction, API::WebsitePolicies*, WebKit::ShouldProcessSwapIfPossible) const
        16  0x1084f5c2c WTF::CompletionHandler&lt;void (WebCore::PolicyAction, API::WebsitePolicies*, WebKit::ShouldProcessSwapIfPossible)&gt;::operator()(WebCore::PolicyAction, API::WebsitePolicies*, WebKit::ShouldProcessSwapIfPossible)
        17  0x1084f5c94 WebKit::WebFramePolicyListenerProxy::ignore()
        18  0x1084f6664 WebKit::WebFrameProxy::webProcessWillShutDown()
        19  0x108967b9d WebKit::WebProcessProxy::disconnectFramesFromPage(WebKit::WebPageProxy*)
        20  0x1086d7080 WebKit::WebPageProxy::close()
        21  0x108c35aea -[WKWebView dealloc]
        22  0x7fff6bf6b042 (anonymous namespace)::AutoreleasePoolPage::pop(void*)
        23  0x7fff447a88e6 _CFAutoreleasePoolPop
        24  0x7fff468e68ad -[NSAutoreleasePool drain]
        25  0x10251a497 main
        26  0x7fff6cb8c015 start
        27  0x2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1446232</commentid>
    <comment_count>12</comment_count>
    <who name="Dawei Fenton (:realdawei)">realdawei</who>
    <bug_when>2018-07-30 09:36:49 -0700</bug_when>
    <thetext>
another API test is also crashing after this revision:

Steps to reproduce: 
run-api-tests--debug --verbose TestWebKitAPI.WebKit.UpdateWebsitePoliciesInvalid

   TestWebKitAPI.WebKit.UpdateWebsitePoliciesInvalid
        ASSERTION FAILED: Completion handler should always be called
        !m_function
        /Volumes/Data/slave/highsierra-debug/build/WebKitBuild/Debug/usr/local/include/wtf/CompletionHandler.h(51) : WTF::CompletionHandler&lt;void (WebCore::PolicyAction, unsigned long long, WebKit::DownloadID, std::optional&lt;WebKit::WebsitePoliciesData&gt;)&gt;::~CompletionHandler()
        1   0x10fb80749 WTFCrash
        2   0x117b31577 WTF::CompletionHandler&lt;void (WebCore::PolicyAction, unsigned long long, WebKit::DownloadID, std::optional&lt;WebKit::WebsitePoliciesData&gt;)&gt;::~CompletionHandler()
        3   0x117b314f5 WTF::CompletionHandler&lt;void (WebCore::PolicyAction, unsigned long long, WebKit::DownloadID, std::optional&lt;WebKit::WebsitePoliciesData&gt;)&gt;::~CompletionHandler()
        4   0x117b314c3 WebKit::WebPageProxy::PolicyDecisionSender::~PolicyDecisionSender()
        5   0x117b31475 WebKit::WebPageProxy::PolicyDecisionSender::~PolicyDecisionSender()
        6   0x117b31447 WTF::RefCounted&lt;WebKit::WebPageProxy::PolicyDecisionSender&gt;::deref() const
        7   0x117b313ef WTF::Ref&lt;WebKit::WebPageProxy::PolicyDecisionSender, WTF::DumbPtrTraits&lt;WebKit::WebPageProxy::PolicyDecisionSender&gt; &gt;::~Ref()
        8   0x117ad7dd5 WTF::Ref&lt;WebKit::WebPageProxy::PolicyDecisionSender, WTF::DumbPtrTraits&lt;WebKit::WebPageProxy::PolicyDecisionSender&gt; &gt;::~Ref()
        9   0x117b137e3 WebKit::WebPageProxy::decidePolicyForNavigationAction(unsigned long long, WebCore::SecurityOriginData const&amp;, unsigned long long, WebKit::NavigationActionData&amp;&amp;, WebKit::FrameInfoData const&amp;, unsigned long long, WebCore::ResourceRequest const&amp;, WebCore::ResourceRequest&amp;&amp;, WebCore::ResourceResponse&amp;&amp;, WebKit::UserData const&amp;, WTF::Ref&lt;WebKit::WebPageProxy::PolicyDecisionSender, WTF::DumbPtrTraits&lt;WebKit::WebPageProxy::PolicyDecisionSender&gt; &gt;&amp;&amp;)::$_8::~$_8()
        10  0x117ad8115 WebKit::WebPageProxy::decidePolicyForNavigationAction(unsigned long long, WebCore::SecurityOriginData const&amp;, unsigned long long, WebKit::NavigationActionData&amp;&amp;, WebKit::FrameInfoData const&amp;, unsigned long long, WebCore::ResourceRequest const&amp;, WebCore::ResourceRequest&amp;&amp;, WebCore::ResourceResponse&amp;&amp;, WebKit::UserData const&amp;, WTF::Ref&lt;WebKit::WebPageProxy::PolicyDecisionSender, WTF::DumbPtrTraits&lt;WebKit::WebPageProxy::PolicyDecisionSender&gt; &gt;&amp;&amp;)::$_8::~$_8()
        11  0x117b31ea1 WTF::Function&lt;void (WebCore::PolicyAction, API::WebsitePolicies*, WebKit::ShouldProcessSwapIfPossible)&gt;::CallableWrapper&lt;WebKit::WebPageProxy::decidePolicyForNavigationAction(unsigned long long, WebCore::SecurityOriginData const&amp;, unsigned long long, WebKit::NavigationActionData&amp;&amp;, WebKit::FrameInfoData const&amp;, unsigned long long, WebCore::ResourceRequest const&amp;, WebCore::ResourceRequest&amp;&amp;, WebCore::ResourceResponse&amp;&amp;, WebKit::UserData const&amp;, WTF::Ref&lt;WebKit::WebPageProxy::PolicyDecisionSender, WTF::DumbPtrTraits&lt;WebKit::WebPageProxy::PolicyDecisionSender&gt; &gt;&amp;&amp;)::$_8&gt;::~CallableWrapper()
        12  0x117b31ba5 WTF::Function&lt;void (WebCore::PolicyAction, API::WebsitePolicies*, WebKit::ShouldProcessSwapIfPossible)&gt;::CallableWrapper&lt;WebKit::WebPageProxy::decidePolicyForNavigationAction(unsigned long long, WebCore::SecurityOriginData const&amp;, unsigned long long, WebKit::NavigationActionData&amp;&amp;, WebKit::FrameInfoData const&amp;, unsigned long long, WebCore::ResourceRequest const&amp;, WebCore::ResourceRequest&amp;&amp;, WebCore::ResourceResponse&amp;&amp;, WebKit::UserData const&amp;, WTF::Ref&lt;WebKit::WebPageProxy::PolicyDecisionSender, WTF::DumbPtrTraits&lt;WebKit::WebPageProxy::PolicyDecisionSender&gt; &gt;&amp;&amp;)::$_8&gt;::~CallableWrapper()
        13  0x117b31bc9 WTF::Function&lt;void (WebCore::PolicyAction, API::WebsitePolicies*, WebKit::ShouldProcessSwapIfPossible)&gt;::CallableWrapper&lt;WebKit::WebPageProxy::decidePolicyForNavigationAction(unsigned long long, WebCore::SecurityOriginData const&amp;, unsigned long long, WebKit::NavigationActionData&amp;&amp;, WebKit::FrameInfoData const&amp;, unsigned long long, WebCore::ResourceRequest const&amp;, WebCore::ResourceRequest&amp;&amp;, WebCore::ResourceResponse&amp;&amp;, WebKit::UserData const&amp;, WTF::Ref&lt;WebKit::WebPageProxy::PolicyDecisionSender, WTF::DumbPtrTraits&lt;WebKit::WebPageProxy::PolicyDecisionSender&gt; &gt;&amp;&amp;)::$_8&gt;::~CallableWrapper()
        14  0x1178b722f WTF::Function&lt;void (WebCore::PolicyAction, API::WebsitePolicies*, WebKit::ShouldProcessSwapIfPossible)&gt;::~Function()
        15  0x1178b7095 WTF::Function&lt;void (WebCore::PolicyAction, API::WebsitePolicies*, WebKit::ShouldProcessSwapIfPossible)&gt;::~Function()
        16  0x1178b6c35 WTF::CompletionHandler&lt;void (WebCore::PolicyAction, API::WebsitePolicies*, WebKit::ShouldProcessSwapIfPossible)&gt;::operator()(WebCore::PolicyAction, API::WebsitePolicies*, WebKit::ShouldProcessSwapIfPossible)
        17  0x1178ba11a WebKit::WebFrameProxy::setUpPolicyListenerProxy(WTF::CompletionHandler&lt;void (WebCore::PolicyAction, API::WebsitePolicies*, WebKit::ShouldProcessSwapIfPossible)&gt;&amp;&amp;)::$_0::operator()(WebCore::PolicyAction, API::WebsitePolicies*, WebKit::ShouldProcessSwapIfPossible)
        18  0x1178b9e39 WTF::Function&lt;void (WebCore::PolicyAction, API::WebsitePolicies*, WebKit::ShouldProcessSwapIfPossible)&gt;::CallableWrapper&lt;WebKit::WebFrameProxy::setUpPolicyListenerProxy(WTF::CompletionHandler&lt;void (WebCore::PolicyAction, API::WebsitePolicies*, WebKit::ShouldProcessSwapIfPossible)&gt;&amp;&amp;)::$_0&gt;::call(WebCore::PolicyAction, API::WebsitePolicies*, WebKit::ShouldProcessSwapIfPossible)
        19  0x1178b7073 WTF::Function&lt;void (WebCore::PolicyAction, API::WebsitePolicies*, WebKit::ShouldProcessSwapIfPossible)&gt;::operator()(WebCore::PolicyAction, API::WebsitePolicies*, WebKit::ShouldProcessSwapIfPossible) const
        20  0x1178b6c2c WTF::CompletionHandler&lt;void (WebCore::PolicyAction, API::WebsitePolicies*, WebKit::ShouldProcessSwapIfPossible)&gt;::operator()(WebCore::PolicyAction, API::WebsitePolicies*, WebKit::ShouldProcessSwapIfPossible)
        21  0x1178b6c94 WebKit::WebFramePolicyListenerProxy::ignore()
        22  0x1178b7664 WebKit::WebFrameProxy::webProcessWillShutDown()
        23  0x117d28b9d WebKit::WebProcessProxy::disconnectFramesFromPage(WebKit::WebPageProxy*)
        24  0x117a98080 WebKit::WebPageProxy::close()
        25  0x117ff6aea -[WKWebView dealloc]
        26  0x7fff6bf6b042 (anonymous namespace)::AutoreleasePoolPage::pop(void*)
        27  0x7fff447a88e6 _CFAutoreleasePoolPop
        28  0x7fff468e68ad -[NSAutoreleasePool drain]
        29  0x10f0fb497 main
        30  0x7fff6cb8c015 start
        31  0x2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1446247</commentid>
    <comment_count>13</comment_count>
    <who name="Dawei Fenton (:realdawei)">realdawei</who>
    <bug_when>2018-07-30 10:14:18 -0700</bug_when>
    <thetext>Reverted r234327 for reason:

Caused 2 crashes on macOS and iOS debug API tests

Committed r234371: &lt;https://trac.webkit.org/changeset/234371&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1446287</commentid>
    <comment_count>14</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-07-30 11:59:30 -0700</bug_when>
    <thetext>I also needed this:

Index: Source/WebKit/UIProcess/WebPageProxy.cpp
===================================================================
--- Source/WebKit/UIProcess/WebPageProxy.cpp	(revision 234333)
+++ Source/WebKit/UIProcess/WebPageProxy.cpp	(working copy)
@@ -2428,8 +2428,10 @@
     
 void WebPageProxy::receivedPolicyDecision(PolicyAction action, API::Navigation* navigation, std::optional&lt;WebsitePoliciesData&gt;&amp;&amp; websitePolicies, Ref&lt;PolicyDecisionSender&gt;&amp;&amp; sender)
 {
-    if (!isValid())
+    if (!isValid()) {
+        sender-&gt;send(PolicyAction::Ignore, 0, DownloadID(), std::nullopt);
         return;
+    }
 
     auto transaction = m_pageLoadState.transaction();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1446292</commentid>
    <comment_count>15</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-07-30 12:02:08 -0700</bug_when>
    <thetext>(In reply to Said Abou-Hallawa from comment #10)
I agree.
&gt;     using SendFunction = CompletionHandler&lt;void(WebCore::PolicyAction,
I&apos;ll use this.  Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1446295</commentid>
    <comment_count>16</comment_count>
      <attachid>346081</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-07-30 12:04:46 -0700</bug_when>
    <thetext>Created attachment 346081
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1446298</commentid>
    <comment_count>17</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-07-30 12:12:16 -0700</bug_when>
    <thetext>http://trac.webkit.org/r234375</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345896</attachid>
            <date>2018-07-26 19:30:41 -0700</date>
            <delta_ts>2018-07-27 09:31:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188089-20180726193041.patch</filename>
            <type>text/plain</type>
            <size>22606</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzQyOTApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDE4LTA3LTI2ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFJlZkNvdW50
ZWQgQ29tcGxldGlvbkhhbmRsZXIgd3JhcHBpbmcgYWJzdHJhY3Rpb24gZm9yIHNlbmRpbmcgcG9s
aWN5IGRlY2lzaW9ucyBiYWNrIHRvIFdlYlByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODA4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgd2lsbCBiZSBuZWNlc3NhcnkgZm9yIHdoZW4g
SSBhZGQgYW4gYXN5bmNocm9ub3VzIHBhcmFsbGVsIHN0ZXAgdG8gZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbi4KKyAgICAgICAgV2Ugd2lsbCB3YW50IHRvIHdhaXQgZm9yIHRoYXQgYXN5
bmNocm9ub3VzIHN0ZXAgZm9yIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jIGJ1
dCBub3QgZm9yIGEgY2xpZW50LgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OlBvbGljeURlY2lzaW9uU2VuZGVyOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OlBvbGljeURlY2lzaW9uU2VuZGVyOjpvcGVyYXRvcigpKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpQb2xpY3lEZWNpc2lvblNlbmRlcjo6UG9saWN5
RGVjaXNpb25TZW5kZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlY2VpdmVk
UG9saWN5RGVjaXNpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uKToKKwogMjAxOC0wNy0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAg
ICAgICAgIExvYWRpbmcgYSBmaWxlIFVSTCBhbmQgdGhlbiBpc3N1aW5nIGEgcmVsb2FkIHJpZ2h0
IGF3YXkgY2F1c2VzIHRoZSBsb2FkIHRvIGZhaWwgZHVlIHRvIHNhbmRib3hpbmcKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjM0Mjc3KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjQwNyw3ICsyNDA3LDI1IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjZW50ZXJTZWxlY3Rp
b25JblZpc2kKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNlbnRlclNl
bGVjdGlvbkluVmlzaWJsZUFyZWEoKSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gYWN0aW9uLCBXZWJGcmFtZVBy
b3h5JiBmcmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0
aW9uLCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVz
KQorY2xhc3MgV2ViUGFnZVByb3h5OjpQb2xpY3lEZWNpc2lvblNlbmRlciA6IHB1YmxpYyBSZWZD
b3VudGVkPFBvbGljeURlY2lzaW9uU2VuZGVyPiB7CitwdWJsaWM6CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUuLi4gQXJncz4gc3RhdGljIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4gY3JlYXRlKEFy
Z3MuLi4gYXJncykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBvbGljeURl
Y2lzaW9uU2VuZGVyKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOworICAgIH0KKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiB2b2lkIG9wZXJhdG9yKCkoQXJncy4uLiBhcmdzKQor
ICAgIHsKKyAgICAgICAgaWYgKG1fY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgICAgICBtX2Nv
bXBsZXRpb25IYW5kbGVyKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgfQorcHJp
dmF0ZToKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiBQb2xpY3lEZWNpc2lvblNlbmRl
cihBcmdzLi4uIGFyZ3MpCisgICAgICAgIDogbV9jb21wbGV0aW9uSGFuZGxlcihzdGQ6OmZvcndh
cmQ8QXJncz4oYXJncykuLi4pIHsgfQorCisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJD
b3JlOjpQb2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5ld05hdmlnYXRpb25JRCwgRG93bmxvYWRJRCwg
c3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPik+IG1fY29tcGxldGlvbkhhbmRsZXI7
Cit9OworICAgIAordm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9s
aWN5QWN0aW9uIGFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBzdGQ6Om9wdGlv
bmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzLCBSZWY8UG9saWN5RGVj
aXNpb25TZW5kZXI+JiYgc2VuZGVyKQogewogICAgIGlmICghaXNWYWxpZCgpKQogICAgICAgICBy
ZXR1cm47CkBAIC0yNDM0LDEyICsyNDUyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVk
UG9saWN5RGVjaXNpbwogICAgICAgICBtX2RlY2lkZVBvbGljeUZvclJlc3BvbnNlUmVxdWVzdCA9
IHsgfTsKICAgICB9CiAKLSAgICBpZiAoYXV0byBzeW5jTmF2aWdhdGlvbkFjdGlvblBvbGljeVJl
cGx5ID0gV1RGTW92ZShtX3N5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5UmVwbHkpKSB7Ci0gICAg
ICAgIHN5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5UmVwbHkobmF2aWdhdGlvbiA/IG5hdmlnYXRp
b24tPm5hdmlnYXRpb25JRCgpIDogMCwgYWN0aW9uLCBkb3dubG9hZElELCBXVEZNb3ZlKHdlYnNp
dGVQb2xpY2llcykpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24oZnJhbWUuZnJh
bWVJRCgpLCBsaXN0ZW5lcklELCBhY3Rpb24sIG5hdmlnYXRpb24gPyBuYXZpZ2F0aW9uLT5uYXZp
Z2F0aW9uSUQoKSA6IDAsIGRvd25sb2FkSUQsIHdlYnNpdGVQb2xpY2llcyksIG1fcGFnZUlEKTsK
KyAgICBzZW5kZXIuZ2V0KCkoYWN0aW9uLCBuYXZpZ2F0aW9uID8gbmF2aWdhdGlvbi0+bmF2aWdh
dGlvbklEKCkgOiAwLCBkb3dubG9hZElELCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKEFQSTo6
TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzKQpA
QCAtMzk1OCw3ICszOTcxLDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpmcmFtZURpZEJlY29tZUZy
YW1lU2UKICAgICAgICAgbV9mcmFtZVNldExhcmdlc3RGcmFtZSA9IHZhbHVlID8gbV9tYWluRnJh
bWUgOiAwOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1l
U2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRh
dGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgY29uc3QgRnJhbWVJbmZvRGF0YSYgb3JpZ2luYXRp
bmdGcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIFJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCB1aW50NjRfdCBsaXN0
ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0
X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25E
YXRhLCBjb25zdCBGcmFtZUluZm9EYXRhJiBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5h
dGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVl
c3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIHVp
bnQ2NF90IGxpc3RlbmVySUQpCit7CisgICAgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bihmcmFtZUlELCBmcmFtZVNlY3VyaXR5T3JpZ2luLCBuYXZpZ2F0aW9uSUQsIFdURk1vdmUobmF2
aWdhdGlvbkFjdGlvbkRhdGEpLCBmcmFtZUluZm9EYXRhLCBvcmlnaW5hdGluZ1BhZ2VJRCwgb3Jp
Z2luYWxSZXF1ZXN0LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2Up
LCB1c2VyRGF0YSwgUG9saWN5RGVjaXNpb25TZW5kZXI6OmNyZWF0ZShbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBmcmFtZUlELCBsaXN0ZW5lcklEXSAoYXV0by4uLiBhcmdz
KSB7CisgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2
ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQsIGxpc3RlbmVySUQsIGFyZ3MuLi4pLCBtX3BhZ2VJRCk7
CisgICAgfSkpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdh
dGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgY29uc3QgRnJhbWVJbmZvRGF0
YSYgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiBy
ZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIFJlZjxQb2xpY3lEZWNp
c2lvblNlbmRlcj4mJiBzZW5kZXIpCiB7CiAgICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHk6
OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24gLSBPcmlnaW5hbCBVUkwgJXMsIGN1cnJl
bnQgdGFyZ2V0IFVSTCAlcyIsIG9yaWdpbmFsUmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCkBAIC00MDA1
LDcgKzQwMjUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhCiAg
ICAgbmF2aWdhdGlvbi0+c2V0SGFzT3BlbmVkRnJhbWVzKG5hdmlnYXRpb25BY3Rpb25EYXRhLmhh
c09wZW5lZEZyYW1lcyk7CiAgICAgbmF2aWdhdGlvbi0+c2V0T3BlbmVyKG5hdmlnYXRpb25BY3Rp
b25EYXRhLm9wZW5lcik7CiAKLSAgICBhdXRvIGxpc3RlbmVyID0gbWFrZVJlZihmcmFtZS0+c2V0
VXBQb2xpY3lMaXN0ZW5lclByb3h5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIGZyYW1lID0gbWFrZVJlZigqZnJhbWUpLCBsaXN0ZW5lcklELCBuYXZpZ2F0aW9uXSAoV2Vi
Q29yZTo6UG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQVBJOjpXZWJzaXRlUG9saWNpZXMqIHBv
bGljaWVzLCBTaG91bGRQcm9jZXNzU3dhcElmUG9zc2libGUgc3dhcCkgbXV0YWJsZSB7CisgICAg
YXV0byBsaXN0ZW5lciA9IG1ha2VSZWYoZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBmcmFtZSA9IG1ha2VSZWYoKmZy
YW1lKSwgc2VuZGVyID0gc2VuZGVyLmNvcHlSZWYoKSwgbmF2aWdhdGlvbl0gKFdlYkNvcmU6OlBv
bGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiBwb2xpY2llcywg
U2hvdWxkUHJvY2Vzc1N3YXBJZlBvc3NpYmxlIHN3YXApIG11dGFibGUgewogICAgICAgICBzdGQ6
Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+IGRhdGE7CiAgICAgICAgIGlmIChwb2xpY2ll
cykgewogICAgICAgICAgICAgZGF0YSA9IHBvbGljaWVzLT5kYXRhKCk7CkBAIC00MDI1LDE0ICs0
MDQ1LDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2EKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9s
aWN5QWN0aW9uLCBmcmFtZS5nZXQoKSwgbGlzdGVuZXJJRCwgbmF2aWdhdGlvbi5nZXQoKSwgV1RG
TW92ZShkYXRhKSk7CisgICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9u
LCBuYXZpZ2F0aW9uLmdldCgpLCBXVEZNb3ZlKGRhdGEpLCBXVEZNb3ZlKHNlbmRlcikpOwogICAg
IH0pKTsKIAogICAgIEFQSTo6TmF2aWdhdGlvbiogbWFpbkZyYW1lTmF2aWdhdGlvbiA9IGZyYW1l
LT5pc01haW5GcmFtZSgpID8gbmF2aWdhdGlvbi5nZXQoKSA6IG51bGxwdHI7CiAKICNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgaWYgKGZyYW1lLT5kaWRIYW5kbGVDb250ZW50Rmls
dGVyVW5ibG9ja05hdmlnYXRpb24ocmVxdWVzdCkpCi0gICAgICAgIHJldHVybiByZWNlaXZlZFBv
bGljeURlY2lzaW9uKFBvbGljeUFjdGlvbjo6SWdub3JlLCAqZnJhbWUsIGxpc3RlbmVySUQsICZt
X25hdmlnYXRpb25TdGF0ZS0+bmF2aWdhdGlvbihuZXdOYXZpZ2F0aW9uSUQpLCBzdGQ6Om51bGxv
cHQpOworICAgICAgICByZXR1cm4gcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb246
Oklnbm9yZSwgJm1fbmF2aWdhdGlvblN0YXRlLT5uYXZpZ2F0aW9uKG5ld05hdmlnYXRpb25JRCks
IHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShzZW5kZXIpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFN
KG5ld05hdmlnYXRpb25JRCk7CiAjZW5kaWYKQEAgLTQwNjIsMTYgKzQwODIsMTQgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYQogICAgIG1fc2hvdWxkU3VwcHJlc3NB
cHBMaW5rc0luTmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiA9IGZhbHNlOwogfQogCi12b2lk
IFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmModWludDY0
X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3Vy
aXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYg
bmF2aWdhdGlvbkFjdGlvbkRhdGEsIGNvbnN0IEZyYW1lSW5mb0RhdGEmIG9yaWdpbmF0aW5nRnJh
bWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgdWludDY0X3Qg
bGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6RGVsYXllZFJlcGx5JiYg
cmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
blN5bmModWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
JiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25B
Y3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIGNvbnN0IEZyYW1lSW5mb0RhdGEmIGZy
YW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2Us
IGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewot
ICAgIEFTU0VSVCghbV9zeW5jTmF2aWdhdGlvbkFjdGlvblBvbGljeVJlcGx5KTsKLSAgICBtX3N5
bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5UmVwbHkgPSBXVEZNb3ZlKHJlcGx5KTsKLQotICAgIGRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oZnJhbWVJRCwgZnJhbWVTZWN1cml0eU9yaWdp
biwgbmF2aWdhdGlvbklELCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgb3JpZ2luYXRp
bmdGcmFtZUluZm9EYXRhLCBvcmlnaW5hdGluZ1BhZ2VJRCwgb3JpZ2luYWxSZXF1ZXN0LCBXVEZN
b3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpLCBsaXN0ZW5lcklELCB1c2Vy
RGF0YSk7CisgICAgYXV0byBzZW5kZXIgPSBQb2xpY3lEZWNpc2lvblNlbmRlcjo6Y3JlYXRlKFdU
Rk1vdmUocmVwbHkpKTsKKyAgICAKKyAgICBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
KGZyYW1lSUQsIGZyYW1lU2VjdXJpdHlPcmlnaW4sIG5hdmlnYXRpb25JRCwgV1RGTW92ZShuYXZp
Z2F0aW9uQWN0aW9uRGF0YSksIGZyYW1lSW5mb0RhdGEsIG9yaWdpbmF0aW5nUGFnZUlELCBvcmln
aW5hbFJlcXVlc3QsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSks
IHVzZXJEYXRhLCBzZW5kZXIuY29weVJlZigpKTsKIAogICAgIC8vIElmIHRoZSBjbGllbnQgZGlk
IG5vdCByZXNwb25kIHN5bmNocm9ub3VzbHksIHByb2NlZWQgd2l0aCB0aGUgbG9hZC4KLSAgICBp
ZiAoYXV0byBzeW5jTmF2aWdhdGlvbkFjdGlvblBvbGljeVJlcGx5ID0gV1RGTW92ZShtX3N5bmNO
YXZpZ2F0aW9uQWN0aW9uUG9saWN5UmVwbHkpKQotICAgICAgICBzeW5jTmF2aWdhdGlvbkFjdGlv
blBvbGljeVJlcGx5KG5hdmlnYXRpb25JRCwgUG9saWN5QWN0aW9uOjpVc2UsIHsgfSwgeyB9KTsK
KyAgICBzZW5kZXIuZ2V0KCkoUG9saWN5QWN0aW9uOjpVc2UsIG5hdmlnYXRpb25JRCwgRG93bmxv
YWRJRCgpLCBzdGQ6Om51bGxvcHQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9s
aWN5Rm9yTmV3V2luZG93QWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3Jp
Z2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZp
Z2F0aW9uQWN0aW9uRGF0YSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgU3RyaW5n
JiBmcmFtZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0
YSkKQEAgLTQwODIsMTAgKzQxMDAsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGlj
eUZvck5ld1dpbgogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogICAgIE1FU1NBR0VfQ0hFQ0tf
VVJMKHJlcXVlc3QudXJsKCkpOwogCi0gICAgYXV0byBsaXN0ZW5lciA9IG1ha2VSZWYoZnJhbWUt
PnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCBsaXN0ZW5lcklELCBmcmFtZSA9IG1ha2VSZWYoKmZyYW1lKV0gKFdlYkNvcmU6OlBv
bGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiwgU2hvdWxkUHJv
Y2Vzc1N3YXBJZlBvc3NpYmxlIHN3YXApIHsKKyAgICBhdXRvIGxpc3RlbmVyID0gbWFrZVJlZihm
cmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIGxpc3RlbmVySUQsIGZyYW1lSURdIChXZWJDb3JlOjpQb2xpY3lBY3Rpb24g
cG9saWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyosIFNob3VsZFByb2Nlc3NTd2FwSWZQ
b3NzaWJsZSBzd2FwKSB7CiAgICAgICAgIC8vIEZJWE1FOiBBc3NlcnQgdGhlIEFQSTo6V2Vic2l0
ZVBvbGljaWVzKiBpcyBudWxscHRyIGhlcmUgb25jZSBjbGllbnRzIG9mIFdLRnJhbWVQb2xpY3lM
aXN0ZW5lclVzZVdpdGhQb2xpY2llcyBnbyBhd2F5LgogICAgICAgICBSRUxFQVNFX0FTU0VSVChz
d2FwID09IFNob3VsZFByb2Nlc3NTd2FwSWZQb3NzaWJsZTo6Tm8pOwotICAgICAgICByZWNlaXZl
ZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgZnJhbWUuZ2V0KCksIGxpc3RlbmVySUQsIG51
bGxwdHIsIHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9s
aWN5QWN0aW9uLCBudWxscHRyLCBzdGQ6Om51bGxvcHQsIFBvbGljeURlY2lzaW9uU2VuZGVyOjpj
cmVhdGUoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZnJhbWVJRCwgbGlz
dGVuZXJJRF0gKGF1dG8uLi4gYXJncykgeworICAgICAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24oZnJhbWVJRCwgbGlzdGVu
ZXJJRCwgYXJncy4uLiksIG1fcGFnZUlEKTsKKyAgICAgICAgfSkpOwogICAgIH0pKTsKIAogICAg
IGlmIChtX25hdmlnYXRpb25DbGllbnQpIHsKQEAgLTQxMTUsMTAgKzQxMzUsMTIgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbgogICAgIE1FU1NBR0VfQ0hFQ0tfVVJM
KHJlc3BvbnNlLnVybCgpKTsKIAogICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IG5hdmlnYXRp
b24gPSBuYXZpZ2F0aW9uSUQgPyAmbV9uYXZpZ2F0aW9uU3RhdGUtPm5hdmlnYXRpb24obmF2aWdh
dGlvbklEKSA6IG51bGxwdHI7Ci0gICAgYXV0byBsaXN0ZW5lciA9IG1ha2VSZWYoZnJhbWUtPnNl
dFVwUG9saWN5TGlzdGVuZXJQcm94eShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBmcmFtZSA9IG1ha2VSZWYoKmZyYW1lKSwgbGlzdGVuZXJJRCwgbmF2aWdhdGlvbiA9IFdU
Rk1vdmUobmF2aWdhdGlvbildIChXZWJDb3JlOjpQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBB
UEk6OldlYnNpdGVQb2xpY2llcyosIFNob3VsZFByb2Nlc3NTd2FwSWZQb3NzaWJsZSBzd2FwKSB7
CisgICAgYXV0byBsaXN0ZW5lciA9IG1ha2VSZWYoZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXJQ
cm94eShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBmcmFtZUlELCBsaXN0
ZW5lcklELCBuYXZpZ2F0aW9uID0gV1RGTW92ZShuYXZpZ2F0aW9uKV0gKFdlYkNvcmU6OlBvbGlj
eUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiwgU2hvdWxkUHJvY2Vz
c1N3YXBJZlBvc3NpYmxlIHN3YXApIG11dGFibGUgewogICAgICAgICAvLyBGSVhNRTogQXNzZXJ0
IHRoZSBBUEk6OldlYnNpdGVQb2xpY2llcyogaXMgbnVsbHB0ciBoZXJlIG9uY2UgY2xpZW50cyBv
ZiBXS0ZyYW1lUG9saWN5TGlzdGVuZXJVc2VXaXRoUG9saWNpZXMgZ28gYXdheS4KICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoc3dhcCA9PSBTaG91bGRQcm9jZXNzU3dhcElmUG9zc2libGU6Ok5vKTsK
LSAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIGZyYW1lLmdldCgp
LCBsaXN0ZW5lcklELCBuYXZpZ2F0aW9uLmdldCgpLCBzdGQ6Om51bGxvcHQpOworICAgICAgICBy
ZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbi5nZXQoKSwgc3Rk
OjpudWxsb3B0LCBQb2xpY3lEZWNpc2lvblNlbmRlcjo6Y3JlYXRlKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIGZyYW1lSUQsIGxpc3RlbmVySURdIChhdXRvLi4uIGFyZ3Mp
IHsKKyAgICAgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVj
ZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQsIGxpc3RlbmVySUQsIGFyZ3MuLi4pLCBtX3BhZ2VJ
RCk7CisgICAgICAgIH0pKTsKICAgICB9KSk7CiAKICAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50
KSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24g
MjM0Mjc3KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtp
bmcgY29weSkKQEAgLTkwOCw3ICs5MDgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwZXJmb3JtRGlj
dGlvbmFyeUxvb2t1cE9mQ3VycmVudFNlbGVjdGlvbigpOwogI2VuZGlmCiAKLSAgICB2b2lkIHJl
Y2VpdmVkUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5QWN0aW9uLCBXZWJGcmFtZVByb3h5
JiwgdWludDY0X3QgbGlzdGVuZXJJRCwgQVBJOjpOYXZpZ2F0aW9uKiwgc3RkOjpvcHRpb25hbDxX
ZWJzaXRlUG9saWNpZXNEYXRhPiYmKTsKKyAgICBjbGFzcyBQb2xpY3lEZWNpc2lvblNlbmRlcjsK
KyAgICB2b2lkIHJlY2VpdmVkUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5QWN0aW9uLCBB
UEk6Ok5hdmlnYXRpb24qLCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYsIFJl
ZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJik7CiAKICAgICB2b2lkIGJhY2tGb3J3YXJkUmVtb3Zl
ZEl0ZW0oY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYpOwogCkBAIC0x
NDIxLDggKzE0MjIsOSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaWREZXN0cm95TmF2aWdhdGlv
bih1aW50NjRfdCBuYXZpZ2F0aW9uSUQpOwogCi0gICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZp
Z2F0aW9uQWN0aW9uRGF0YSYmLCBjb25zdCBGcmFtZUluZm9EYXRhJiwgdWludDY0X3Qgb3JpZ2lu
YXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1
ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmIHJlZGlyZWN0UmVzcG9uc2UsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRh
Jik7Ci0gICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyh1aW50NjRf
dCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJp
dHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwg
Y29uc3QgRnJhbWVJbmZvRGF0YSYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNl
LCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYsIE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpEZWxheWVkUmVwbHkm
Jik7CisgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHVpbnQ2NF90IGZy
YW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9y
aWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBjb25z
dCBGcmFtZUluZm9EYXRhJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNv
bnN0IFVzZXJEYXRhJiwgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmKTsKKyAgICB2b2lkIGRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyh1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgY29uc3QgRnJhbWVJbmZv
RGF0YSYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0
YSYsIHVpbnQ2NF90IGxpc3RlbmVySUQpOworICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvblN5bmModWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5h
dmlnYXRpb25BY3Rpb25EYXRhJiYsIGNvbnN0IEZyYW1lSW5mb0RhdGEmLCB1aW50NjRfdCBvcmln
aW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJl
cXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCBNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6RGVsYXllZFJlcGx5
JiYpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKHVpbnQ2NF90IGZy
YW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9y
aWdpbiwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYs
IGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2Vy
RGF0YSYpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UodWludDY0X3QgZnJhbWVJ
RCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2lu
LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlwZSwg
dWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIHVuYWJsZVRv
SW1wbGVtZW50UG9saWN5KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImLCBjb25zdCBVc2VyRGF0YSYpOwpAQCAtMjAwMSw5ICsyMDAzLDYgQEAgcHJpdmF0ZToK
ICAgICBib29sIG1faXNJblByaW50aW5nTW9kZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzUGVy
Zm9ybWluZ0RPTVByaW50T3BlcmF0aW9uIHsgZmFsc2UgfTsKIAotICAgIC8vIFN5bmNocm9ub3Vz
IG5hdmlnYXRpb24gcG9saWN5IGRlY2lzaW9uLgotICAgIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpEZWxheWVkUmVwbHkgbV9zeW5j
TmF2aWdhdGlvbkFjdGlvblBvbGljeVJlcGx5OwotCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0IG1fZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VSZXF1ZXN0OwogICAgIGJvb2wgbV9zaG91bGRT
dXBwcmVzc0FwcExpbmtzSW5OZXh0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uIHsgZmFsc2UgfTsK
IApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbgkocmV2aXNpb24gMjM0Mjc3KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsOCArMTA2LDggQEAg
bWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKIAogICAgICMgUG9saWN5IG1lc3NhZ2VzCiAgICAg
RGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UodWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCByZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgdWludDY0X3QgbGlzdGVu
ZXJJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKLSAgICBEZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBzdHJ1
Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgc3Ry
dWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHVpbnQ2
NF90IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qgb3JpZ2luYWxS
ZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6
OlVzZXJEYXRhIHVzZXJEYXRhKQotICAgIERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25T
eW5jKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEg
ZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBzdHJ1Y3QgV2ViS2l0
OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgc3RydWN0IFdlYktp
dDo6RnJhbWVJbmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdp
bmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qgb3JpZ2luYWxSZXF1ZXN0LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSByZWRpcmVjdFJlc3BvbnNlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6OlVzZXJEYXRh
IHVzZXJEYXRhKSAtPiAodWludDY0X3QgbmV3TmF2aWdhdGlvbklELCBlbnVtIFdlYkNvcmU6OlBv
bGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBz
dGQ6Om9wdGlvbmFsPFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzRGF0YT4gd2Vic2l0ZVBvbGljaWVz
KSBEZWxheWVkCisgICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKHVpbnQ2
NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1
cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0
aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgc3RydWN0IFdlYktpdDo6RnJhbWVJ
bmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFn
ZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZWRpcmVj
dFJlc3BvbnNlLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhLCB1aW50NjRfdCBsaXN0ZW5lcklE
KQorICAgIERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKHVpbnQ2NF90IGZyYW1l
SUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdp
biwgdWludDY0X3QgbmF2aWdhdGlvbklELCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9u
RGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBv
cmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3Qgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QgcmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZWRpcmVjdFJlc3BvbnNl
LCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKSAtPiAoZW51bSBXZWJDb3JlOjpQb2xpY3lBY3Rp
b24gcG9saWN5QWN0aW9uLCB1aW50NjRfdCBuZXdOYXZpZ2F0aW9uSUQsIFdlYktpdDo6RG93bmxv
YWRJRCBkb3dubG9hZElELCBzdGQ6Om9wdGlvbmFsPFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzRGF0
YT4gd2Vic2l0ZVBvbGljaWVzKSBEZWxheWVkCiAgICAgRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93
QWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRh
dGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0
LCBTdHJpbmcgZnJhbWVOYW1lLCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6OlVzZXJEYXRh
IHVzZXJEYXRhKQogICAgIFVuYWJsZVRvSW1wbGVtZW50UG9saWN5KHVpbnQ2NF90IGZyYW1lSUQs
IFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEp
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gMjM0Mjc3
KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODkyLDcgKzg5Miw3IEBAIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWQKICAgICAgICAgRG93bmxvYWRJRCBkb3du
bG9hZElEOwogICAgICAgICBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+IHdlYnNp
dGVQb2xpY2llczsKIAotICAgICAgICBpZiAoIXdlYlBhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKG1fZnJhbWUt
PmZyYW1lSUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUoY29yZUZyYW1lKSwgZG9j
dW1lbnRMb2FkZXItPm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgb3JpZ2lu
YXRpbmdGcmFtZUluZm9EYXRhLCBvcmlnaW5hdGluZ1BhZ2VJRCwgbmF2aWdhdGlvbkFjdGlvbi5y
ZXNvdXJjZVJlcXVlc3QoKSwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSwgbGlzdGVuZXJJRCwg
VXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxl
cyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OlJlcGx5KG5ld05hdmlnYXRpb25JRCwgcG9s
aWN5QWN0aW9uLCBkb3dubG9hZElELCB3ZWJzaXRlUG9saWNpZXMpKSkgeworICAgICAgICBpZiAo
IXdlYlBhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb25TeW5jKG1fZnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJpdHlPcmlnaW5E
YXRhOjpmcm9tRnJhbWUoY29yZUZyYW1lKSwgZG9jdW1lbnRMb2FkZXItPm5hdmlnYXRpb25JRCgp
LCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBvcmlnaW5h
dGluZ1BhZ2VJRCwgbmF2aWdhdGlvbkFjdGlvbi5yZXNvdXJjZVJlcXVlc3QoKSwgcmVxdWVzdCwg
cmVkaXJlY3RSZXNwb25zZSwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNm
b3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSwgTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OlJlcGx5KHBv
bGljeUFjdGlvbiwgbmV3TmF2aWdhdGlvbklELCBkb3dubG9hZElELCB3ZWJzaXRlUG9saWNpZXMp
KSkgewogICAgICAgICAgICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3Rl
bmVySUQsIFBvbGljeUFjdGlvbjo6SWdub3JlLCAwLCB7IH0sIHsgfSk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KQEAgLTkwMiw3ICs5MDIsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERlY2lkCiAgICAgfQogCiAgICAgQVNTRVJUKHBvbGljeURlY2lzaW9u
TW9kZSA9PSBQb2xpY3lEZWNpc2lvbk1vZGU6OkFzeW5jaHJvbm91cyk7Ci0gICAgaWYgKCF3ZWJQ
YWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24obV9mcmFtZS0+ZnJhbWVJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21GcmFt
ZShjb3JlRnJhbWUpLCBkb2N1bWVudExvYWRlci0+bmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb25B
Y3Rpb25EYXRhLCBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIG9yaWdpbmF0aW5nUGFnZUlELCBu
YXZpZ2F0aW9uQWN0aW9uLnJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LCByZWRpcmVjdFJlc3Bv
bnNlLCBsaXN0ZW5lcklELCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zv
cm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKSkKKyAgICBpZiAoIXdl
YlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbkFzeW5jKG1fZnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpm
cm9tRnJhbWUoY29yZUZyYW1lKSwgZG9jdW1lbnRMb2FkZXItPm5hdmlnYXRpb25JRCgpLCBuYXZp
Z2F0aW9uQWN0aW9uRGF0YSwgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBvcmlnaW5hdGluZ1Bh
Z2VJRCwgbmF2aWdhdGlvbkFjdGlvbi5yZXNvdXJjZVJlcXVlc3QoKSwgcmVxdWVzdCwgcmVkaXJl
Y3RSZXNwb25zZSwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2Jq
ZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpLCBsaXN0ZW5lcklEKSkpCiAgICAg
ICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBQb2xpY3lB
Y3Rpb246Oklnbm9yZSwgMCwgeyB9LCB7IH0pOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345919</attachid>
            <date>2018-07-27 09:31:53 -0700</date>
            <delta_ts>2018-07-27 09:53:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188089-20180727093153.patch</filename>
            <type>text/plain</type>
            <size>22614</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzQyOTApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDE4LTA3LTI2ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFJlZkNvdW50
ZWQgQ29tcGxldGlvbkhhbmRsZXIgd3JhcHBpbmcgYWJzdHJhY3Rpb24gZm9yIHNlbmRpbmcgcG9s
aWN5IGRlY2lzaW9ucyBiYWNrIHRvIFdlYlByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODA4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgd2lsbCBiZSBuZWNlc3NhcnkgZm9yIHdoZW4g
SSBhZGQgYW4gYXN5bmNocm9ub3VzIHBhcmFsbGVsIHN0ZXAgdG8gZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbi4KKyAgICAgICAgV2Ugd2lsbCB3YW50IHRvIHdhaXQgZm9yIHRoYXQgYXN5
bmNocm9ub3VzIHN0ZXAgZm9yIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jIGJ1
dCBub3QgZm9yIGEgY2xpZW50LgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OlBvbGljeURlY2lzaW9uU2VuZGVyOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OlBvbGljeURlY2lzaW9uU2VuZGVyOjpvcGVyYXRvcigpKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpQb2xpY3lEZWNpc2lvblNlbmRlcjo6UG9saWN5
RGVjaXNpb25TZW5kZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlY2VpdmVk
UG9saWN5RGVjaXNpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uKToKKwogMjAxOC0wNy0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAg
ICAgICAgIExvYWRpbmcgYSBmaWxlIFVSTCBhbmQgdGhlbiBpc3N1aW5nIGEgcmVsb2FkIHJpZ2h0
IGF3YXkgY2F1c2VzIHRoZSBsb2FkIHRvIGZhaWwgZHVlIHRvIHNhbmRib3hpbmcKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjM0Mjc3KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjQwNyw3ICsyNDA3LDI1IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjZW50ZXJTZWxlY3Rp
b25JblZpc2kKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNlbnRlclNl
bGVjdGlvbkluVmlzaWJsZUFyZWEoKSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gYWN0aW9uLCBXZWJGcmFtZVBy
b3h5JiBmcmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0
aW9uLCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVz
KQorY2xhc3MgV2ViUGFnZVByb3h5OjpQb2xpY3lEZWNpc2lvblNlbmRlciA6IHB1YmxpYyBSZWZD
b3VudGVkPFBvbGljeURlY2lzaW9uU2VuZGVyPiB7CitwdWJsaWM6CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUuLi4gQXJncz4gc3RhdGljIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4gY3JlYXRlKEFy
Z3MuLi4gYXJncykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBvbGljeURl
Y2lzaW9uU2VuZGVyKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOworICAgIH0KKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiB2b2lkIG9wZXJhdG9yKCkoQXJncy4uLiBhcmdzKQor
ICAgIHsKKyAgICAgICAgaWYgKG1fY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgICAgICBtX2Nv
bXBsZXRpb25IYW5kbGVyKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgfQorcHJp
dmF0ZToKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiBQb2xpY3lEZWNpc2lvblNlbmRl
cihBcmdzLi4uIGFyZ3MpCisgICAgICAgIDogbV9jb21wbGV0aW9uSGFuZGxlcihzdGQ6OmZvcndh
cmQ8QXJncz4oYXJncykuLi4pIHsgfQorCisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJD
b3JlOjpQb2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5ld05hdmlnYXRpb25JRCwgRG93bmxvYWRJRCwg
c3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPik+IG1fY29tcGxldGlvbkhhbmRsZXI7
Cit9OworICAgIAordm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9s
aWN5QWN0aW9uIGFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBzdGQ6Om9wdGlv
bmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzLCBSZWY8UG9saWN5RGVj
aXNpb25TZW5kZXI+JiYgc2VuZGVyKQogewogICAgIGlmICghaXNWYWxpZCgpKQogICAgICAgICBy
ZXR1cm47CkBAIC0yNDM0LDEyICsyNDUyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVk
UG9saWN5RGVjaXNpbwogICAgICAgICBtX2RlY2lkZVBvbGljeUZvclJlc3BvbnNlUmVxdWVzdCA9
IHsgfTsKICAgICB9CiAKLSAgICBpZiAoYXV0byBzeW5jTmF2aWdhdGlvbkFjdGlvblBvbGljeVJl
cGx5ID0gV1RGTW92ZShtX3N5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5UmVwbHkpKSB7Ci0gICAg
ICAgIHN5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5UmVwbHkobmF2aWdhdGlvbiA/IG5hdmlnYXRp
b24tPm5hdmlnYXRpb25JRCgpIDogMCwgYWN0aW9uLCBkb3dubG9hZElELCBXVEZNb3ZlKHdlYnNp
dGVQb2xpY2llcykpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24oZnJhbWUuZnJh
bWVJRCgpLCBsaXN0ZW5lcklELCBhY3Rpb24sIG5hdmlnYXRpb24gPyBuYXZpZ2F0aW9uLT5uYXZp
Z2F0aW9uSUQoKSA6IDAsIGRvd25sb2FkSUQsIHdlYnNpdGVQb2xpY2llcyksIG1fcGFnZUlEKTsK
KyAgICBzZW5kZXIuZ2V0KCkoYWN0aW9uLCBuYXZpZ2F0aW9uID8gbmF2aWdhdGlvbi0+bmF2aWdh
dGlvbklEKCkgOiAwLCBkb3dubG9hZElELCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKEFQSTo6
TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzKQpA
QCAtMzk1OCw3ICszOTcxLDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpmcmFtZURpZEJlY29tZUZy
YW1lU2UKICAgICAgICAgbV9mcmFtZVNldExhcmdlc3RGcmFtZSA9IHZhbHVlID8gbV9tYWluRnJh
bWUgOiAwOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1l
U2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRh
dGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgY29uc3QgRnJhbWVJbmZvRGF0YSYgb3JpZ2luYXRp
bmdGcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIFJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCB1aW50NjRfdCBsaXN0
ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0
X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25E
YXRhLCBjb25zdCBGcmFtZUluZm9EYXRhJiBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5h
dGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVl
c3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIHVp
bnQ2NF90IGxpc3RlbmVySUQpCit7CisgICAgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bihmcmFtZUlELCBmcmFtZVNlY3VyaXR5T3JpZ2luLCBuYXZpZ2F0aW9uSUQsIFdURk1vdmUobmF2
aWdhdGlvbkFjdGlvbkRhdGEpLCBmcmFtZUluZm9EYXRhLCBvcmlnaW5hdGluZ1BhZ2VJRCwgb3Jp
Z2luYWxSZXF1ZXN0LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2Up
LCB1c2VyRGF0YSwgUG9saWN5RGVjaXNpb25TZW5kZXI6OmNyZWF0ZShbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBmcmFtZUlELCBsaXN0ZW5lcklEXSAoYXV0by4uLiBhcmdz
KSB7CisgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2
ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQsIGxpc3RlbmVySUQsIGFyZ3MuLi4pLCBtX3BhZ2VJRCk7
CisgICAgfSkpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdh
dGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgY29uc3QgRnJhbWVJbmZvRGF0
YSYgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiBy
ZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIFJlZjxQb2xpY3lEZWNp
c2lvblNlbmRlcj4mJiBzZW5kZXIpCiB7CiAgICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHk6
OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24gLSBPcmlnaW5hbCBVUkwgJXMsIGN1cnJl
bnQgdGFyZ2V0IFVSTCAlcyIsIG9yaWdpbmFsUmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCkBAIC00MDA1
LDcgKzQwMjUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhCiAg
ICAgbmF2aWdhdGlvbi0+c2V0SGFzT3BlbmVkRnJhbWVzKG5hdmlnYXRpb25BY3Rpb25EYXRhLmhh
c09wZW5lZEZyYW1lcyk7CiAgICAgbmF2aWdhdGlvbi0+c2V0T3BlbmVyKG5hdmlnYXRpb25BY3Rp
b25EYXRhLm9wZW5lcik7CiAKLSAgICBhdXRvIGxpc3RlbmVyID0gbWFrZVJlZihmcmFtZS0+c2V0
VXBQb2xpY3lMaXN0ZW5lclByb3h5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIGZyYW1lID0gbWFrZVJlZigqZnJhbWUpLCBsaXN0ZW5lcklELCBuYXZpZ2F0aW9uXSAoV2Vi
Q29yZTo6UG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQVBJOjpXZWJzaXRlUG9saWNpZXMqIHBv
bGljaWVzLCBTaG91bGRQcm9jZXNzU3dhcElmUG9zc2libGUgc3dhcCkgbXV0YWJsZSB7CisgICAg
YXV0byBsaXN0ZW5lciA9IG1ha2VSZWYoZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBmcmFtZSA9IG1ha2VSZWYoKmZy
YW1lKSwgc2VuZGVyID0gc2VuZGVyLmNvcHlSZWYoKSwgbmF2aWdhdGlvbl0gKFdlYkNvcmU6OlBv
bGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiBwb2xpY2llcywg
U2hvdWxkUHJvY2Vzc1N3YXBJZlBvc3NpYmxlIHN3YXApIG11dGFibGUgewogICAgICAgICBzdGQ6
Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+IGRhdGE7CiAgICAgICAgIGlmIChwb2xpY2ll
cykgewogICAgICAgICAgICAgZGF0YSA9IHBvbGljaWVzLT5kYXRhKCk7CkBAIC00MDI1LDE0ICs0
MDQ1LDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2EKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9s
aWN5QWN0aW9uLCBmcmFtZS5nZXQoKSwgbGlzdGVuZXJJRCwgbmF2aWdhdGlvbi5nZXQoKSwgV1RG
TW92ZShkYXRhKSk7CisgICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9u
LCBuYXZpZ2F0aW9uLmdldCgpLCBXVEZNb3ZlKGRhdGEpLCBXVEZNb3ZlKHNlbmRlcikpOwogICAg
IH0pKTsKIAogICAgIEFQSTo6TmF2aWdhdGlvbiogbWFpbkZyYW1lTmF2aWdhdGlvbiA9IGZyYW1l
LT5pc01haW5GcmFtZSgpID8gbmF2aWdhdGlvbi5nZXQoKSA6IG51bGxwdHI7CiAKICNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgaWYgKGZyYW1lLT5kaWRIYW5kbGVDb250ZW50Rmls
dGVyVW5ibG9ja05hdmlnYXRpb24ocmVxdWVzdCkpCi0gICAgICAgIHJldHVybiByZWNlaXZlZFBv
bGljeURlY2lzaW9uKFBvbGljeUFjdGlvbjo6SWdub3JlLCAqZnJhbWUsIGxpc3RlbmVySUQsICZt
X25hdmlnYXRpb25TdGF0ZS0+bmF2aWdhdGlvbihuZXdOYXZpZ2F0aW9uSUQpLCBzdGQ6Om51bGxv
cHQpOworICAgICAgICByZXR1cm4gcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb246
Oklnbm9yZSwgJm1fbmF2aWdhdGlvblN0YXRlLT5uYXZpZ2F0aW9uKG5ld05hdmlnYXRpb25JRCks
IHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShzZW5kZXIpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFN
KG5ld05hdmlnYXRpb25JRCk7CiAjZW5kaWYKQEAgLTQwNjIsMTYgKzQwODIsMTQgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYQogICAgIG1fc2hvdWxkU3VwcHJlc3NB
cHBMaW5rc0luTmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiA9IGZhbHNlOwogfQogCi12b2lk
IFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmModWludDY0
X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3Vy
aXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYg
bmF2aWdhdGlvbkFjdGlvbkRhdGEsIGNvbnN0IEZyYW1lSW5mb0RhdGEmIG9yaWdpbmF0aW5nRnJh
bWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgdWludDY0X3Qg
bGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6RGVsYXllZFJlcGx5JiYg
cmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
blN5bmModWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
JiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25B
Y3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIGNvbnN0IEZyYW1lSW5mb0RhdGEmIGZy
YW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2Us
IGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewot
ICAgIEFTU0VSVCghbV9zeW5jTmF2aWdhdGlvbkFjdGlvblBvbGljeVJlcGx5KTsKLSAgICBtX3N5
bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5UmVwbHkgPSBXVEZNb3ZlKHJlcGx5KTsKLQotICAgIGRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oZnJhbWVJRCwgZnJhbWVTZWN1cml0eU9yaWdp
biwgbmF2aWdhdGlvbklELCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgb3JpZ2luYXRp
bmdGcmFtZUluZm9EYXRhLCBvcmlnaW5hdGluZ1BhZ2VJRCwgb3JpZ2luYWxSZXF1ZXN0LCBXVEZN
b3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpLCBsaXN0ZW5lcklELCB1c2Vy
RGF0YSk7CisgICAgYXV0byBzZW5kZXIgPSBQb2xpY3lEZWNpc2lvblNlbmRlcjo6Y3JlYXRlKFdU
Rk1vdmUocmVwbHkpKTsKKyAgICAKKyAgICBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
KGZyYW1lSUQsIGZyYW1lU2VjdXJpdHlPcmlnaW4sIG5hdmlnYXRpb25JRCwgV1RGTW92ZShuYXZp
Z2F0aW9uQWN0aW9uRGF0YSksIGZyYW1lSW5mb0RhdGEsIG9yaWdpbmF0aW5nUGFnZUlELCBvcmln
aW5hbFJlcXVlc3QsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSks
IHVzZXJEYXRhLCBzZW5kZXIuY29weVJlZigpKTsKIAogICAgIC8vIElmIHRoZSBjbGllbnQgZGlk
IG5vdCByZXNwb25kIHN5bmNocm9ub3VzbHksIHByb2NlZWQgd2l0aCB0aGUgbG9hZC4KLSAgICBp
ZiAoYXV0byBzeW5jTmF2aWdhdGlvbkFjdGlvblBvbGljeVJlcGx5ID0gV1RGTW92ZShtX3N5bmNO
YXZpZ2F0aW9uQWN0aW9uUG9saWN5UmVwbHkpKQotICAgICAgICBzeW5jTmF2aWdhdGlvbkFjdGlv
blBvbGljeVJlcGx5KG5hdmlnYXRpb25JRCwgUG9saWN5QWN0aW9uOjpVc2UsIHsgfSwgeyB9KTsK
KyAgICBzZW5kZXIuZ2V0KCkoUG9saWN5QWN0aW9uOjpVc2UsIG5hdmlnYXRpb25JRCwgRG93bmxv
YWRJRCgpLCBzdGQ6Om51bGxvcHQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9s
aWN5Rm9yTmV3V2luZG93QWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3Jp
Z2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZp
Z2F0aW9uQWN0aW9uRGF0YSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgU3RyaW5n
JiBmcmFtZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0
YSkKQEAgLTQwODIsMTAgKzQxMDAsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGlj
eUZvck5ld1dpbgogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogICAgIE1FU1NBR0VfQ0hFQ0tf
VVJMKHJlcXVlc3QudXJsKCkpOwogCi0gICAgYXV0byBsaXN0ZW5lciA9IG1ha2VSZWYoZnJhbWUt
PnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCBsaXN0ZW5lcklELCBmcmFtZSA9IG1ha2VSZWYoKmZyYW1lKV0gKFdlYkNvcmU6OlBv
bGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiwgU2hvdWxkUHJv
Y2Vzc1N3YXBJZlBvc3NpYmxlIHN3YXApIHsKKyAgICBhdXRvIGxpc3RlbmVyID0gbWFrZVJlZihm
cmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIGxpc3RlbmVySUQsIGZyYW1lSURdIChXZWJDb3JlOjpQb2xpY3lBY3Rpb24g
cG9saWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyosIFNob3VsZFByb2Nlc3NTd2FwSWZQ
b3NzaWJsZSBzd2FwKSB7CiAgICAgICAgIC8vIEZJWE1FOiBBc3NlcnQgdGhlIEFQSTo6V2Vic2l0
ZVBvbGljaWVzKiBpcyBudWxscHRyIGhlcmUgb25jZSBjbGllbnRzIG9mIFdLRnJhbWVQb2xpY3lM
aXN0ZW5lclVzZVdpdGhQb2xpY2llcyBnbyBhd2F5LgogICAgICAgICBSRUxFQVNFX0FTU0VSVChz
d2FwID09IFNob3VsZFByb2Nlc3NTd2FwSWZQb3NzaWJsZTo6Tm8pOwotICAgICAgICByZWNlaXZl
ZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgZnJhbWUuZ2V0KCksIGxpc3RlbmVySUQsIG51
bGxwdHIsIHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9s
aWN5QWN0aW9uLCBudWxscHRyLCBzdGQ6Om51bGxvcHQsIFBvbGljeURlY2lzaW9uU2VuZGVyOjpj
cmVhdGUoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZnJhbWVJRCwgbGlz
dGVuZXJJRF0gKGF1dG8uLi4gYXJncykgeworICAgICAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24oZnJhbWVJRCwgbGlzdGVu
ZXJJRCwgYXJncy4uLiksIG1fcGFnZUlEKTsKKyAgICAgICAgfSkpOwogICAgIH0pKTsKIAogICAg
IGlmIChtX25hdmlnYXRpb25DbGllbnQpIHsKQEAgLTQxMTUsMTAgKzQxMzUsMTIgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbgogICAgIE1FU1NBR0VfQ0hFQ0tfVVJM
KHJlc3BvbnNlLnVybCgpKTsKIAogICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IG5hdmlnYXRp
b24gPSBuYXZpZ2F0aW9uSUQgPyAmbV9uYXZpZ2F0aW9uU3RhdGUtPm5hdmlnYXRpb24obmF2aWdh
dGlvbklEKSA6IG51bGxwdHI7Ci0gICAgYXV0byBsaXN0ZW5lciA9IG1ha2VSZWYoZnJhbWUtPnNl
dFVwUG9saWN5TGlzdGVuZXJQcm94eShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBmcmFtZSA9IG1ha2VSZWYoKmZyYW1lKSwgbGlzdGVuZXJJRCwgbmF2aWdhdGlvbiA9IFdU
Rk1vdmUobmF2aWdhdGlvbildIChXZWJDb3JlOjpQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBB
UEk6OldlYnNpdGVQb2xpY2llcyosIFNob3VsZFByb2Nlc3NTd2FwSWZQb3NzaWJsZSBzd2FwKSB7
CisgICAgYXV0byBsaXN0ZW5lciA9IG1ha2VSZWYoZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXJQ
cm94eShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBmcmFtZUlELCBsaXN0
ZW5lcklELCBuYXZpZ2F0aW9uID0gV1RGTW92ZShuYXZpZ2F0aW9uKV0gKFdlYkNvcmU6OlBvbGlj
eUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiwgU2hvdWxkUHJvY2Vz
c1N3YXBJZlBvc3NpYmxlIHN3YXApIG11dGFibGUgewogICAgICAgICAvLyBGSVhNRTogQXNzZXJ0
IHRoZSBBUEk6OldlYnNpdGVQb2xpY2llcyogaXMgbnVsbHB0ciBoZXJlIG9uY2UgY2xpZW50cyBv
ZiBXS0ZyYW1lUG9saWN5TGlzdGVuZXJVc2VXaXRoUG9saWNpZXMgZ28gYXdheS4KICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoc3dhcCA9PSBTaG91bGRQcm9jZXNzU3dhcElmUG9zc2libGU6Ok5vKTsK
LSAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIGZyYW1lLmdldCgp
LCBsaXN0ZW5lcklELCBuYXZpZ2F0aW9uLmdldCgpLCBzdGQ6Om51bGxvcHQpOworICAgICAgICBy
ZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbi5nZXQoKSwgc3Rk
OjpudWxsb3B0LCBQb2xpY3lEZWNpc2lvblNlbmRlcjo6Y3JlYXRlKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgZnJhbWVJRCwgbGlzdGVuZXJJRF0gKGF1dG8u
Li4gYXJncykgeworICAgICAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24oZnJhbWVJRCwgbGlzdGVuZXJJRCwgYXJncy4uLiks
IG1fcGFnZUlEKTsKKyAgICAgICAgfSkpOwogICAgIH0pKTsKIAogICAgIGlmIChtX25hdmlnYXRp
b25DbGllbnQpIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShy
ZXZpc2lvbiAyMzQyNzcpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAkod29ya2luZyBjb3B5KQpAQCAtOTA4LDcgKzkwOCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHBl
cmZvcm1EaWN0aW9uYXJ5TG9va3VwT2ZDdXJyZW50U2VsZWN0aW9uKCk7CiAjZW5kaWYKIAotICAg
IHZvaWQgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQb2xpY3lBY3Rpb24sIFdlYkZy
YW1lUHJveHkmLCB1aW50NjRfdCBsaXN0ZW5lcklELCBBUEk6Ok5hdmlnYXRpb24qLCBzdGQ6Om9w
dGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYpOworICAgIGNsYXNzIFBvbGljeURlY2lzaW9u
U2VuZGVyOworICAgIHZvaWQgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQb2xpY3lB
Y3Rpb24sIEFQSTo6TmF2aWdhdGlvbiosIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0
YT4mJiwgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmKTsKIAogICAgIHZvaWQgYmFja0Zvcndh
cmRSZW1vdmVkSXRlbShjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJik7
CiAKQEAgLTE0MjEsOCArMTQyMiw5IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpZERlc3Ryb3lO
YXZpZ2F0aW9uKHVpbnQ2NF90IG5hdmlnYXRpb25JRCk7CiAKLSAgICB2b2lkIGRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24odWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIGNvbnN0IEZyYW1lSW5mb0RhdGEmLCB1aW50NjRf
dCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmln
aW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3Qg
VXNlckRhdGEmKTsKLSAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5j
KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJh
bWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9u
RGF0YSYmLCBjb25zdCBGcmFtZUluZm9EYXRhJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0
UmVzcG9uc2UsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiwgTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OkRlbGF5
ZWRSZXBseSYmKTsKKyAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24odWlu
dDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNl
Y3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRh
JiYsIGNvbnN0IEZyYW1lSW5mb0RhdGEmLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNw
b25zZSwgY29uc3QgVXNlckRhdGEmLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYpOworICAg
IHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKHVpbnQ2NF90IGZyYW1l
SUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdp
biwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBjb25zdCBG
cmFtZUluZm9EYXRhJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0
IFVzZXJEYXRhJiwgdWludDY0X3QgbGlzdGVuZXJJRCk7CisgICAgdm9pZCBkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uU3luYyh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgY29uc3QgRnJhbWVJbmZvRGF0YSYsIHVpbnQ2
NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9y
aWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpEZWxh
eWVkUmVwbHkmJik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odWlu
dDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNl
Y3VyaXR5T3JpZ2luLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNv
bnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZSh1aW50NjRf
dCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJp
dHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01J
TUVUeXBlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQg
dW5hYmxlVG9JbXBsZW1lbnRQb2xpY3kodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYsIGNvbnN0IFVzZXJEYXRhJik7CkBAIC0yMDAxLDkgKzIwMDMsNiBAQCBw
cml2YXRlOgogICAgIGJvb2wgbV9pc0luUHJpbnRpbmdNb2RlIHsgZmFsc2UgfTsKICAgICBib29s
IG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24geyBmYWxzZSB9OwogCi0gICAgLy8gU3lu
Y2hyb25vdXMgbmF2aWdhdGlvbiBwb2xpY3kgZGVjaXNpb24uCi0gICAgTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OkRlbGF5ZWRSZXBs
eSBtX3N5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5UmVwbHk7Ci0KICAgICBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QgbV9kZWNpZGVQb2xpY3lGb3JSZXNwb25zZVJlcXVlc3Q7CiAgICAgYm9vbCBt
X3Nob3VsZFN1cHByZXNzQXBwTGlua3NJbk5leHROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24geyBm
YWxzZSB9OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyMzQyNzcpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTEwNiw4ICsx
MDYsOCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogCiAgICAgIyBQb2xpY3kgbWVzc2Fn
ZXMKICAgICBEZWNpZGVQb2xpY3lGb3JSZXNwb25zZSh1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCB1aW50NjRf
dCBsaXN0ZW5lcklELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQotICAgIERlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24odWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25E
YXRhLCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0
YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBv
cmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UsIHVpbnQ2NF90IGxpc3RlbmVySUQs
IFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCi0gICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvblN5bmModWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVj
dCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBzdHJ1
Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0
X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJl
cXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6
VXNlckRhdGEgdXNlckRhdGEpIC0+ICh1aW50NjRfdCBuZXdOYXZpZ2F0aW9uSUQsIGVudW0gV2Vi
Q29yZTo6UG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25s
b2FkSUQsIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpXZWJzaXRlUG9saWNpZXNEYXRhPiB3ZWJzaXRl
UG9saWNpZXMpIERlbGF5ZWQKKyAgICBEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5
bmModWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBm
cmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6
Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBzdHJ1Y3QgV2ViS2l0
OjpGcmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2lu
YXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
IHJlZGlyZWN0UmVzcG9uc2UsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEsIHVpbnQ2NF90IGxp
c3RlbmVySUQpCisgICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmModWludDY0
X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3Vy
aXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRp
b25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUlu
Zm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdl
SUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCByZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0
UmVzcG9uc2UsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpIC0+IChlbnVtIFdlYkNvcmU6OlBv
bGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5ld05hdmlnYXRpb25JRCwgV2ViS2l0
OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpXZWJzaXRlUG9s
aWNpZXNEYXRhPiB3ZWJzaXRlUG9saWNpZXMpIERlbGF5ZWQKICAgICBEZWNpZGVQb2xpY3lGb3JO
ZXdXaW5kb3dBY3Rpb24odWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9u
QWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
IHJlcXVlc3QsIFN0cmluZyBmcmFtZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6
VXNlckRhdGEgdXNlckRhdGEpCiAgICAgVW5hYmxlVG9JbXBsZW1lbnRQb2xpY3kodWludDY0X3Qg
ZnJhbWVJRCwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgV2ViS2l0OjpVc2VyRGF0YSB1
c2VyRGF0YSkKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lv
biAyMzQyNzcpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OTIsNyArODkyLDcgQEAg
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZAogICAgICAgICBEb3dubG9h
ZElEIGRvd25sb2FkSUQ7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0
YT4gd2Vic2l0ZVBvbGljaWVzOwogCi0gICAgICAgIGlmICghd2ViUGFnZS0+c2VuZFN5bmMoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmMo
bV9mcmFtZS0+ZnJhbWVJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21GcmFtZShjb3JlRnJh
bWUpLCBkb2N1bWVudExvYWRlci0+bmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb25BY3Rpb25EYXRh
LCBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIG9yaWdpbmF0aW5nUGFnZUlELCBuYXZpZ2F0aW9u
QWN0aW9uLnJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlLCBsaXN0
ZW5lcklELCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3Rz
VG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6UmVwbHkobmV3TmF2aWdhdGlv
bklELCBwb2xpY3lBY3Rpb24sIGRvd25sb2FkSUQsIHdlYnNpdGVQb2xpY2llcykpKSB7CisgICAg
ICAgIGlmICghd2ViUGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmMobV9mcmFtZS0+ZnJhbWVJRCgpLCBTZWN1cml0
eU9yaWdpbkRhdGE6OmZyb21GcmFtZShjb3JlRnJhbWUpLCBkb2N1bWVudExvYWRlci0+bmF2aWdh
dGlvbklEKCksIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEs
IG9yaWdpbmF0aW5nUGFnZUlELCBuYXZpZ2F0aW9uQWN0aW9uLnJlc291cmNlUmVxdWVzdCgpLCBy
ZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlLCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpLCBNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6
UmVwbHkocG9saWN5QWN0aW9uLCBuZXdOYXZpZ2F0aW9uSUQsIGRvd25sb2FkSUQsIHdlYnNpdGVQ
b2xpY2llcykpKSB7CiAgICAgICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNp
b24obGlzdGVuZXJJRCwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIHsgfSwgeyB9KTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtOTAyLDcgKzkwMiw3IEBAIHZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWQKICAgICB9CiAKICAgICBBU1NFUlQocG9saWN5
RGVjaXNpb25Nb2RlID09IFBvbGljeURlY2lzaW9uTW9kZTo6QXN5bmNocm9ub3VzKTsKLSAgICBp
ZiAoIXdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbihtX2ZyYW1lLT5mcmFtZUlEKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6
ZnJvbUZyYW1lKGNvcmVGcmFtZSksIGRvY3VtZW50TG9hZGVyLT5uYXZpZ2F0aW9uSUQoKSwgbmF2
aWdhdGlvbkFjdGlvbkRhdGEsIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgb3JpZ2luYXRpbmdQ
YWdlSUQsIG5hdmlnYXRpb25BY3Rpb24ucmVzb3VyY2VSZXF1ZXN0KCksIHJlcXVlc3QsIHJlZGly
ZWN0UmVzcG9uc2UsIGxpc3RlbmVySUQsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpKQorICAg
IGlmICghd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmMobV9mcmFtZS0+ZnJhbWVJRCgpLCBTZWN1cml0eU9yaWdp
bkRhdGE6OmZyb21GcmFtZShjb3JlRnJhbWUpLCBkb2N1bWVudExvYWRlci0+bmF2aWdhdGlvbklE
KCksIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIG9yaWdp
bmF0aW5nUGFnZUlELCBuYXZpZ2F0aW9uQWN0aW9uLnJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0
LCByZWRpcmVjdFJlc3BvbnNlLCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFu
c2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSksIGxpc3RlbmVySUQp
KSkKICAgICAgICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQs
IFBvbGljeUFjdGlvbjo6SWdub3JlLCAwLCB7IH0sIHsgfSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345921</attachid>
            <date>2018-07-27 09:53:52 -0700</date>
            <delta_ts>2018-07-27 10:00:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188089-20180727095352.patch</filename>
            <type>text/plain</type>
            <size>22622</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzQyOTApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDE4LTA3LTI3ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFJlZkNvdW50
ZWQgQ29tcGxldGlvbkhhbmRsZXIgd3JhcHBpbmcgYWJzdHJhY3Rpb24gZm9yIHNlbmRpbmcgcG9s
aWN5IGRlY2lzaW9ucyBiYWNrIHRvIFdlYlByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODA4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgd2lsbCBiZSBuZWNlc3NhcnkgZm9yIHdoZW4g
SSBhZGQgYW4gYXN5bmNocm9ub3VzIHBhcmFsbGVsIHN0ZXAgdG8gZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbi4KKyAgICAgICAgV2Ugd2lsbCB3YW50IHRvIHdhaXQgZm9yIHRoYXQgYXN5
bmNocm9ub3VzIHN0ZXAgZm9yIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jIGJ1
dCBub3QgZm9yIGEgY2xpZW50LgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OlBvbGljeURlY2lzaW9uU2VuZGVyOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OlBvbGljeURlY2lzaW9uU2VuZGVyOjpvcGVyYXRvcigpKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpQb2xpY3lEZWNpc2lvblNlbmRlcjo6UG9saWN5
RGVjaXNpb25TZW5kZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlY2VpdmVk
UG9saWN5RGVjaXNpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uKToKKwogMjAxOC0wNy0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAg
ICAgICAgIExvYWRpbmcgYSBmaWxlIFVSTCBhbmQgdGhlbiBpc3N1aW5nIGEgcmVsb2FkIHJpZ2h0
IGF3YXkgY2F1c2VzIHRoZSBsb2FkIHRvIGZhaWwgZHVlIHRvIHNhbmRib3hpbmcKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjM0Mjc3KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjQwNyw3ICsyNDA3LDI1IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjZW50ZXJTZWxlY3Rp
b25JblZpc2kKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNlbnRlclNl
bGVjdGlvbkluVmlzaWJsZUFyZWEoKSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gYWN0aW9uLCBXZWJGcmFtZVBy
b3h5JiBmcmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0
aW9uLCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVz
KQorY2xhc3MgV2ViUGFnZVByb3h5OjpQb2xpY3lEZWNpc2lvblNlbmRlciA6IHB1YmxpYyBSZWZD
b3VudGVkPFBvbGljeURlY2lzaW9uU2VuZGVyPiB7CitwdWJsaWM6CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUuLi4gQXJncz4gc3RhdGljIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4gY3JlYXRlKEFy
Z3MuLi4gYXJncykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBvbGljeURl
Y2lzaW9uU2VuZGVyKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOworICAgIH0KKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiB2b2lkIG9wZXJhdG9yKCkoQXJncy4uLiBhcmdzKQor
ICAgIHsKKyAgICAgICAgaWYgKG1fY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgICAgICBtX2Nv
bXBsZXRpb25IYW5kbGVyKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgfQorcHJp
dmF0ZToKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiBQb2xpY3lEZWNpc2lvblNlbmRl
cihBcmdzLi4uIGFyZ3MpCisgICAgICAgIDogbV9jb21wbGV0aW9uSGFuZGxlcihzdGQ6OmZvcndh
cmQ8QXJncz4oYXJncykuLi4pIHsgfQorCisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJD
b3JlOjpQb2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5ld05hdmlnYXRpb25JRCwgRG93bmxvYWRJRCwg
c3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPik+IG1fY29tcGxldGlvbkhhbmRsZXI7
Cit9OworICAgIAordm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9s
aWN5QWN0aW9uIGFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBzdGQ6Om9wdGlv
bmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzLCBSZWY8UG9saWN5RGVj
aXNpb25TZW5kZXI+JiYgc2VuZGVyKQogewogICAgIGlmICghaXNWYWxpZCgpKQogICAgICAgICBy
ZXR1cm47CkBAIC0yNDM0LDEyICsyNDUyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVk
UG9saWN5RGVjaXNpbwogICAgICAgICBtX2RlY2lkZVBvbGljeUZvclJlc3BvbnNlUmVxdWVzdCA9
IHsgfTsKICAgICB9CiAKLSAgICBpZiAoYXV0byBzeW5jTmF2aWdhdGlvbkFjdGlvblBvbGljeVJl
cGx5ID0gV1RGTW92ZShtX3N5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5UmVwbHkpKSB7Ci0gICAg
ICAgIHN5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5UmVwbHkobmF2aWdhdGlvbiA/IG5hdmlnYXRp
b24tPm5hdmlnYXRpb25JRCgpIDogMCwgYWN0aW9uLCBkb3dubG9hZElELCBXVEZNb3ZlKHdlYnNp
dGVQb2xpY2llcykpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24oZnJhbWUuZnJh
bWVJRCgpLCBsaXN0ZW5lcklELCBhY3Rpb24sIG5hdmlnYXRpb24gPyBuYXZpZ2F0aW9uLT5uYXZp
Z2F0aW9uSUQoKSA6IDAsIGRvd25sb2FkSUQsIHdlYnNpdGVQb2xpY2llcyksIG1fcGFnZUlEKTsK
KyAgICBzZW5kZXIuZ2V0KCkoYWN0aW9uLCBuYXZpZ2F0aW9uID8gbmF2aWdhdGlvbi0+bmF2aWdh
dGlvbklEKCkgOiAwLCBkb3dubG9hZElELCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKEFQSTo6
TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzKQpA
QCAtMzk1OCw3ICszOTcxLDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpmcmFtZURpZEJlY29tZUZy
YW1lU2UKICAgICAgICAgbV9mcmFtZVNldExhcmdlc3RGcmFtZSA9IHZhbHVlID8gbV9tYWluRnJh
bWUgOiAwOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1l
U2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRh
dGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgY29uc3QgRnJhbWVJbmZvRGF0YSYgb3JpZ2luYXRp
bmdGcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIFJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCB1aW50NjRfdCBsaXN0
ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0
X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25E
YXRhLCBjb25zdCBGcmFtZUluZm9EYXRhJiBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5h
dGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVl
c3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIHVp
bnQ2NF90IGxpc3RlbmVySUQpCit7CisgICAgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bihmcmFtZUlELCBmcmFtZVNlY3VyaXR5T3JpZ2luLCBuYXZpZ2F0aW9uSUQsIFdURk1vdmUobmF2
aWdhdGlvbkFjdGlvbkRhdGEpLCBmcmFtZUluZm9EYXRhLCBvcmlnaW5hdGluZ1BhZ2VJRCwgb3Jp
Z2luYWxSZXF1ZXN0LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2Up
LCB1c2VyRGF0YSwgUG9saWN5RGVjaXNpb25TZW5kZXI6OmNyZWF0ZShbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBmcmFtZUlELCBsaXN0ZW5lcklEXSAoYXV0by4uLiBhcmdz
KSB7CisgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2
ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQsIGxpc3RlbmVySUQsIGFyZ3MuLi4pLCBtX3BhZ2VJRCk7
CisgICAgfSkpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdh
dGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgY29uc3QgRnJhbWVJbmZvRGF0
YSYgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiBy
ZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIFJlZjxQb2xpY3lEZWNp
c2lvblNlbmRlcj4mJiBzZW5kZXIpCiB7CiAgICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHk6
OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24gLSBPcmlnaW5hbCBVUkwgJXMsIGN1cnJl
bnQgdGFyZ2V0IFVSTCAlcyIsIG9yaWdpbmFsUmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCkBAIC00MDA1
LDcgKzQwMjUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhCiAg
ICAgbmF2aWdhdGlvbi0+c2V0SGFzT3BlbmVkRnJhbWVzKG5hdmlnYXRpb25BY3Rpb25EYXRhLmhh
c09wZW5lZEZyYW1lcyk7CiAgICAgbmF2aWdhdGlvbi0+c2V0T3BlbmVyKG5hdmlnYXRpb25BY3Rp
b25EYXRhLm9wZW5lcik7CiAKLSAgICBhdXRvIGxpc3RlbmVyID0gbWFrZVJlZihmcmFtZS0+c2V0
VXBQb2xpY3lMaXN0ZW5lclByb3h5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIGZyYW1lID0gbWFrZVJlZigqZnJhbWUpLCBsaXN0ZW5lcklELCBuYXZpZ2F0aW9uXSAoV2Vi
Q29yZTo6UG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQVBJOjpXZWJzaXRlUG9saWNpZXMqIHBv
bGljaWVzLCBTaG91bGRQcm9jZXNzU3dhcElmUG9zc2libGUgc3dhcCkgbXV0YWJsZSB7CisgICAg
YXV0byBsaXN0ZW5lciA9IG1ha2VSZWYoZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBmcmFtZSA9IG1ha2VSZWYoKmZy
YW1lKSwgc2VuZGVyID0gc2VuZGVyLmNvcHlSZWYoKSwgbmF2aWdhdGlvbl0gKFdlYkNvcmU6OlBv
bGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiBwb2xpY2llcywg
U2hvdWxkUHJvY2Vzc1N3YXBJZlBvc3NpYmxlIHN3YXApIG11dGFibGUgewogICAgICAgICBzdGQ6
Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+IGRhdGE7CiAgICAgICAgIGlmIChwb2xpY2ll
cykgewogICAgICAgICAgICAgZGF0YSA9IHBvbGljaWVzLT5kYXRhKCk7CkBAIC00MDI1LDE0ICs0
MDQ1LDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2EKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9s
aWN5QWN0aW9uLCBmcmFtZS5nZXQoKSwgbGlzdGVuZXJJRCwgbmF2aWdhdGlvbi5nZXQoKSwgV1RG
TW92ZShkYXRhKSk7CisgICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9u
LCBuYXZpZ2F0aW9uLmdldCgpLCBXVEZNb3ZlKGRhdGEpLCBXVEZNb3ZlKHNlbmRlcikpOwogICAg
IH0pKTsKIAogICAgIEFQSTo6TmF2aWdhdGlvbiogbWFpbkZyYW1lTmF2aWdhdGlvbiA9IGZyYW1l
LT5pc01haW5GcmFtZSgpID8gbmF2aWdhdGlvbi5nZXQoKSA6IG51bGxwdHI7CiAKICNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgaWYgKGZyYW1lLT5kaWRIYW5kbGVDb250ZW50Rmls
dGVyVW5ibG9ja05hdmlnYXRpb24ocmVxdWVzdCkpCi0gICAgICAgIHJldHVybiByZWNlaXZlZFBv
bGljeURlY2lzaW9uKFBvbGljeUFjdGlvbjo6SWdub3JlLCAqZnJhbWUsIGxpc3RlbmVySUQsICZt
X25hdmlnYXRpb25TdGF0ZS0+bmF2aWdhdGlvbihuZXdOYXZpZ2F0aW9uSUQpLCBzdGQ6Om51bGxv
cHQpOworICAgICAgICByZXR1cm4gcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb246
Oklnbm9yZSwgJm1fbmF2aWdhdGlvblN0YXRlLT5uYXZpZ2F0aW9uKG5ld05hdmlnYXRpb25JRCks
IHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShzZW5kZXIpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFN
KG5ld05hdmlnYXRpb25JRCk7CiAjZW5kaWYKQEAgLTQwNjIsMTYgKzQwODIsMTQgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYQogICAgIG1fc2hvdWxkU3VwcHJlc3NB
cHBMaW5rc0luTmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiA9IGZhbHNlOwogfQogCi12b2lk
IFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmModWludDY0
X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3Vy
aXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYg
bmF2aWdhdGlvbkFjdGlvbkRhdGEsIGNvbnN0IEZyYW1lSW5mb0RhdGEmIG9yaWdpbmF0aW5nRnJh
bWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgdWludDY0X3Qg
bGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6RGVsYXllZFJlcGx5JiYg
cmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
blN5bmModWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
JiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25B
Y3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIGNvbnN0IEZyYW1lSW5mb0RhdGEmIGZy
YW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2Us
IGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewot
ICAgIEFTU0VSVCghbV9zeW5jTmF2aWdhdGlvbkFjdGlvblBvbGljeVJlcGx5KTsKLSAgICBtX3N5
bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5UmVwbHkgPSBXVEZNb3ZlKHJlcGx5KTsKLQotICAgIGRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oZnJhbWVJRCwgZnJhbWVTZWN1cml0eU9yaWdp
biwgbmF2aWdhdGlvbklELCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgb3JpZ2luYXRp
bmdGcmFtZUluZm9EYXRhLCBvcmlnaW5hdGluZ1BhZ2VJRCwgb3JpZ2luYWxSZXF1ZXN0LCBXVEZN
b3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpLCBsaXN0ZW5lcklELCB1c2Vy
RGF0YSk7CisgICAgYXV0byBzZW5kZXIgPSBQb2xpY3lEZWNpc2lvblNlbmRlcjo6Y3JlYXRlKFdU
Rk1vdmUocmVwbHkpKTsKKyAgICAKKyAgICBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
KGZyYW1lSUQsIGZyYW1lU2VjdXJpdHlPcmlnaW4sIG5hdmlnYXRpb25JRCwgV1RGTW92ZShuYXZp
Z2F0aW9uQWN0aW9uRGF0YSksIGZyYW1lSW5mb0RhdGEsIG9yaWdpbmF0aW5nUGFnZUlELCBvcmln
aW5hbFJlcXVlc3QsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSks
IHVzZXJEYXRhLCBzZW5kZXIuY29weVJlZigpKTsKIAogICAgIC8vIElmIHRoZSBjbGllbnQgZGlk
IG5vdCByZXNwb25kIHN5bmNocm9ub3VzbHksIHByb2NlZWQgd2l0aCB0aGUgbG9hZC4KLSAgICBp
ZiAoYXV0byBzeW5jTmF2aWdhdGlvbkFjdGlvblBvbGljeVJlcGx5ID0gV1RGTW92ZShtX3N5bmNO
YXZpZ2F0aW9uQWN0aW9uUG9saWN5UmVwbHkpKQotICAgICAgICBzeW5jTmF2aWdhdGlvbkFjdGlv
blBvbGljeVJlcGx5KG5hdmlnYXRpb25JRCwgUG9saWN5QWN0aW9uOjpVc2UsIHsgfSwgeyB9KTsK
KyAgICBzZW5kZXIuZ2V0KCkoUG9saWN5QWN0aW9uOjpVc2UsIG5hdmlnYXRpb25JRCwgRG93bmxv
YWRJRCgpLCBzdGQ6Om51bGxvcHQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9s
aWN5Rm9yTmV3V2luZG93QWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3Jp
Z2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZp
Z2F0aW9uQWN0aW9uRGF0YSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgU3RyaW5n
JiBmcmFtZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0
YSkKQEAgLTQwODIsMTAgKzQxMDAsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGlj
eUZvck5ld1dpbgogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogICAgIE1FU1NBR0VfQ0hFQ0tf
VVJMKHJlcXVlc3QudXJsKCkpOwogCi0gICAgYXV0byBsaXN0ZW5lciA9IG1ha2VSZWYoZnJhbWUt
PnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCBsaXN0ZW5lcklELCBmcmFtZSA9IG1ha2VSZWYoKmZyYW1lKV0gKFdlYkNvcmU6OlBv
bGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiwgU2hvdWxkUHJv
Y2Vzc1N3YXBJZlBvc3NpYmxlIHN3YXApIHsKKyAgICBhdXRvIGxpc3RlbmVyID0gbWFrZVJlZihm
cmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIGxpc3RlbmVySUQsIGZyYW1lSURdIChXZWJDb3JlOjpQb2xpY3lBY3Rpb24g
cG9saWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyosIFNob3VsZFByb2Nlc3NTd2FwSWZQ
b3NzaWJsZSBzd2FwKSB7CiAgICAgICAgIC8vIEZJWE1FOiBBc3NlcnQgdGhlIEFQSTo6V2Vic2l0
ZVBvbGljaWVzKiBpcyBudWxscHRyIGhlcmUgb25jZSBjbGllbnRzIG9mIFdLRnJhbWVQb2xpY3lM
aXN0ZW5lclVzZVdpdGhQb2xpY2llcyBnbyBhd2F5LgogICAgICAgICBSRUxFQVNFX0FTU0VSVChz
d2FwID09IFNob3VsZFByb2Nlc3NTd2FwSWZQb3NzaWJsZTo6Tm8pOwotICAgICAgICByZWNlaXZl
ZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgZnJhbWUuZ2V0KCksIGxpc3RlbmVySUQsIG51
bGxwdHIsIHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9s
aWN5QWN0aW9uLCBudWxscHRyLCBzdGQ6Om51bGxvcHQsIFBvbGljeURlY2lzaW9uU2VuZGVyOjpj
cmVhdGUoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBmcmFt
ZUlELCBsaXN0ZW5lcklEXSAoYXV0by4uLiBhcmdzKSB7CisgICAgICAgICAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZUlE
LCBsaXN0ZW5lcklELCBhcmdzLi4uKSwgbV9wYWdlSUQpOworICAgICAgICB9KSk7CiAgICAgfSkp
OwogCiAgICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkgewpAQCAtNDExNSwxMCArNDEzNSwxMiBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uCiAgICAgTUVTU0FHRV9D
SEVDS19VUkwocmVzcG9uc2UudXJsKCkpOwogCiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4g
bmF2aWdhdGlvbiA9IG5hdmlnYXRpb25JRCA/ICZtX25hdmlnYXRpb25TdGF0ZS0+bmF2aWdhdGlv
bihuYXZpZ2F0aW9uSUQpIDogbnVsbHB0cjsKLSAgICBhdXRvIGxpc3RlbmVyID0gbWFrZVJlZihm
cmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIGZyYW1lID0gbWFrZVJlZigqZnJhbWUpLCBsaXN0ZW5lcklELCBuYXZpZ2F0
aW9uID0gV1RGTW92ZShuYXZpZ2F0aW9uKV0gKFdlYkNvcmU6OlBvbGljeUFjdGlvbiBwb2xpY3lB
Y3Rpb24sIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiwgU2hvdWxkUHJvY2Vzc1N3YXBJZlBvc3NpYmxl
IHN3YXApIHsKKyAgICBhdXRvIGxpc3RlbmVyID0gbWFrZVJlZihmcmFtZS0+c2V0VXBQb2xpY3lM
aXN0ZW5lclByb3h5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGZyYW1l
SUQsIGxpc3RlbmVySUQsIG5hdmlnYXRpb24gPSBXVEZNb3ZlKG5hdmlnYXRpb24pXSAoV2ViQ29y
ZTo6UG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQVBJOjpXZWJzaXRlUG9saWNpZXMqLCBTaG91
bGRQcm9jZXNzU3dhcElmUG9zc2libGUgc3dhcCkgbXV0YWJsZSB7CiAgICAgICAgIC8vIEZJWE1F
OiBBc3NlcnQgdGhlIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiBpcyBudWxscHRyIGhlcmUgb25jZSBj
bGllbnRzIG9mIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclVzZVdpdGhQb2xpY2llcyBnbyBhd2F5Lgog
ICAgICAgICBSRUxFQVNFX0FTU0VSVChzd2FwID09IFNob3VsZFByb2Nlc3NTd2FwSWZQb3NzaWJs
ZTo6Tm8pOwotICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgZnJh
bWUuZ2V0KCksIGxpc3RlbmVySUQsIG5hdmlnYXRpb24uZ2V0KCksIHN0ZDo6bnVsbG9wdCk7Cisg
ICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9uLmdl
dCgpLCBzdGQ6Om51bGxvcHQsIFBvbGljeURlY2lzaW9uU2VuZGVyOjpjcmVhdGUoW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBmcmFtZUlELCBsaXN0ZW5lcklE
XSAoYXV0by4uLiBhcmdzKSB7CisgICAgICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZUlELCBsaXN0ZW5lcklELCBh
cmdzLi4uKSwgbV9wYWdlSUQpOworICAgICAgICB9KSk7CiAgICAgfSkpOwogCiAgICAgaWYgKG1f
bmF2aWdhdGlvbkNsaWVudCkgewpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgJKHJldmlzaW9uIDIzNDI3NykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MDgsNyArOTA4LDggQEAgcHVibGljOgogICAg
IHZvaWQgcGVyZm9ybURpY3Rpb25hcnlMb29rdXBPZkN1cnJlbnRTZWxlY3Rpb24oKTsKICNlbmRp
ZgogCi0gICAgdm9pZCByZWNlaXZlZFBvbGljeURlY2lzaW9uKFdlYkNvcmU6OlBvbGljeUFjdGlv
biwgV2ViRnJhbWVQcm94eSYsIHVpbnQ2NF90IGxpc3RlbmVySUQsIEFQSTo6TmF2aWdhdGlvbios
IHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJik7CisgICAgY2xhc3MgUG9saWN5
RGVjaXNpb25TZW5kZXI7CisgICAgdm9pZCByZWNlaXZlZFBvbGljeURlY2lzaW9uKFdlYkNvcmU6
OlBvbGljeUFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKiwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9s
aWNpZXNEYXRhPiYmLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYpOwogCiAgICAgdm9pZCBi
YWNrRm9yd2FyZFJlbW92ZWRJdGVtKGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50
aWZpZXImKTsKIApAQCAtMTQyMSw4ICsxNDIyLDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlk
RGVzdHJveU5hdmlnYXRpb24odWludDY0X3QgbmF2aWdhdGlvbklEKTsKIAotICAgIHZvaWQgZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgY29uc3QgRnJhbWVJbmZvRGF0YSYs
IHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCB1aW50NjRfdCBsaXN0ZW5lcklE
LCBjb25zdCBVc2VyRGF0YSYpOwotICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvblN5bmModWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRp
b25BY3Rpb25EYXRhJiYsIGNvbnN0IEZyYW1lSW5mb0RhdGEmLCB1aW50NjRfdCBvcmlnaW5hdGlu
Z1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3Qs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYg
cmVkaXJlY3RSZXNwb25zZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmLCBN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3lu
Yzo6RGVsYXllZFJlcGx5JiYpOworICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
IGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFj
dGlvbkRhdGEmJiwgY29uc3QgRnJhbWVJbmZvRGF0YSYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFn
ZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRp
cmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4m
Jik7CisgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmModWludDY0
X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3Vy
aXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYs
IGNvbnN0IEZyYW1lSW5mb0RhdGEmLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25z
ZSwgY29uc3QgVXNlckRhdGEmLCB1aW50NjRfdCBsaXN0ZW5lcklEKTsKKyAgICB2b2lkIGRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBjb25zdCBGcmFtZUluZm9EYXRh
JiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwg
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5
bmM6OkRlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0Fj
dGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
IGZyYW1lU2VjdXJpdHlPcmlnaW4sIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgdWludDY0X3QgbGlzdGVu
ZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNl
KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJh
bWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBj
YW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CiAg
ICAgdm9pZCB1bmFibGVUb0ltcGxlbWVudFBvbGljeSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgVXNlckRhdGEmKTsKQEAgLTIwMDEsOSArMjAw
Myw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzSW5QcmludGluZ01vZGUgeyBmYWxzZSB9Owog
ICAgIGJvb2wgbV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbiB7IGZhbHNlIH07CiAKLSAg
ICAvLyBTeW5jaHJvbm91cyBuYXZpZ2F0aW9uIHBvbGljeSBkZWNpc2lvbi4KLSAgICBNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6RGVs
YXllZFJlcGx5IG1fc3luY05hdmlnYXRpb25BY3Rpb25Qb2xpY3lSZXBseTsKLQogICAgIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCBtX2RlY2lkZVBvbGljeUZvclJlc3BvbnNlUmVxdWVzdDsKICAg
ICBib29sIG1fc2hvdWxkU3VwcHJlc3NBcHBMaW5rc0luTmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNp
c2lvbiB7IGZhbHNlIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIzNDI3NykKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAt
MTA2LDggKzEwNiw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAKICAgICAjIFBvbGlj
eSBtZXNzYWdlcwogICAgIERlY2lkZVBvbGljeUZvclJlc3BvbnNlKHVpbnQ2NF90IGZyYW1lSUQs
IHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNl
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5cGUs
IHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCi0gICAgRGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlv
bkFjdGlvbkRhdGEsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFt
ZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Qs
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVkaXJlY3RSZXNwb25zZSwgdWludDY0X3QgbGlz
dGVuZXJJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKLSAgICBEZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uU3luYyh1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRh
dGEsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRh
LCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG9y
aWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UgcmVkaXJlY3RSZXNwb25zZSwgdWludDY0X3QgbGlzdGVuZXJJRCwg
V2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkgLT4gKHVpbnQ2NF90IG5ld05hdmlnYXRpb25JRCwg
ZW51bSBXZWJDb3JlOjpQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBXZWJLaXQ6OkRvd25sb2Fk
SUQgZG93bmxvYWRJRCwgc3RkOjpvcHRpb25hbDxXZWJLaXQ6OldlYnNpdGVQb2xpY2llc0RhdGE+
IHdlYnNpdGVQb2xpY2llcykgRGVsYXllZAorICAgIERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb25Bc3luYyh1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgc3RydWN0
IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHN0cnVj
dCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCB1aW50NjRf
dCBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG9yaWdpbmFsUmVx
dWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UgcmVkaXJlY3RSZXNwb25zZSwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSwgdWlu
dDY0X3QgbGlzdGVuZXJJRCkKKyAgICBEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3lu
Yyh1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZy
YW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYktpdDo6
TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHN0cnVjdCBXZWJLaXQ6
OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5h
dGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG9yaWdpbmFsUmVxdWVzdCwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Ug
cmVkaXJlY3RSZXNwb25zZSwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkgLT4gKGVudW0gV2Vi
Q29yZTo6UG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgdWludDY0X3QgbmV3TmF2aWdhdGlvbklE
LCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgc3RkOjpvcHRpb25hbDxXZWJLaXQ6Oldl
YnNpdGVQb2xpY2llc0RhdGE+IHdlYnNpdGVQb2xpY2llcykgRGVsYXllZAogICAgIERlY2lkZVBv
bGljeUZvck5ld1dpbmRvd0FjdGlvbih1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHN0cnVjdCBXZWJLaXQ6Ok5h
dmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QgcmVxdWVzdCwgU3RyaW5nIGZyYW1lTmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCwg
V2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKICAgICBVbmFibGVUb0ltcGxlbWVudFBvbGljeSh1
aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCBXZWJLaXQ6OlVz
ZXJEYXRhIHVzZXJEYXRhKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJ
KHJldmlzaW9uIDIzNDI3NykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5Miw3ICs4
OTIsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkCiAgICAgICAg
IERvd25sb2FkSUQgZG93bmxvYWRJRDsKICAgICAgICAgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9s
aWNpZXNEYXRhPiB3ZWJzaXRlUG9saWNpZXM7CiAKLSAgICAgICAgaWYgKCF3ZWJQYWdlLT5zZW5k
U3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uU3luYyhtX2ZyYW1lLT5mcmFtZUlEKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbUZyYW1l
KGNvcmVGcmFtZSksIGRvY3VtZW50TG9hZGVyLT5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbkFj
dGlvbkRhdGEsIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgb3JpZ2luYXRpbmdQYWdlSUQsIG5h
dmlnYXRpb25BY3Rpb24ucmVzb3VyY2VSZXF1ZXN0KCksIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9u
c2UsIGxpc3RlbmVySUQsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9y
bU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSksIE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpSZXBseShuZXdO
YXZpZ2F0aW9uSUQsIHBvbGljeUFjdGlvbiwgZG93bmxvYWRJRCwgd2Vic2l0ZVBvbGljaWVzKSkp
IHsKKyAgICAgICAgaWYgKCF3ZWJQYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyhtX2ZyYW1lLT5mcmFtZUlEKCks
IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbUZyYW1lKGNvcmVGcmFtZSksIGRvY3VtZW50TG9hZGVy
LT5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIG9yaWdpbmF0aW5nRnJhbWVJ
bmZvRGF0YSwgb3JpZ2luYXRpbmdQYWdlSUQsIG5hdmlnYXRpb25BY3Rpb24ucmVzb3VyY2VSZXF1
ZXN0KCksIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgp
KSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b25TeW5jOjpSZXBseShwb2xpY3lBY3Rpb24sIG5ld05hdmlnYXRpb25JRCwgZG93bmxvYWRJRCwg
d2Vic2l0ZVBvbGljaWVzKSkpIHsKICAgICAgICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xp
Y3lEZWNpc2lvbihsaXN0ZW5lcklELCBQb2xpY3lBY3Rpb246Oklnbm9yZSwgMCwgeyB9LCB7IH0p
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC05MDIsNyArOTAyLDcgQEAgdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZAogICAgIH0KIAogICAgIEFTU0VS
VChwb2xpY3lEZWNpc2lvbk1vZGUgPT0gUG9saWN5RGVjaXNpb25Nb2RlOjpBc3luY2hyb25vdXMp
OwotICAgIGlmICghd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKG1fZnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJpdHlPcmln
aW5EYXRhOjpmcm9tRnJhbWUoY29yZUZyYW1lKSwgZG9jdW1lbnRMb2FkZXItPm5hdmlnYXRpb25J
RCgpLCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBvcmln
aW5hdGluZ1BhZ2VJRCwgbmF2aWdhdGlvbkFjdGlvbi5yZXNvdXJjZVJlcXVlc3QoKSwgcmVxdWVz
dCwgcmVkaXJlY3RSZXNwb25zZSwgbGlzdGVuZXJJRCwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkp
KSkpCisgICAgaWYgKCF3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyhtX2ZyYW1lLT5mcmFtZUlEKCksIFNlY3Vy
aXR5T3JpZ2luRGF0YTo6ZnJvbUZyYW1lKGNvcmVGcmFtZSksIGRvY3VtZW50TG9hZGVyLT5uYXZp
Z2F0aW9uSUQoKSwgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0
YSwgb3JpZ2luYXRpbmdQYWdlSUQsIG5hdmlnYXRpb25BY3Rpb24ucmVzb3VyY2VSZXF1ZXN0KCks
IHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSwgbGlz
dGVuZXJJRCkpKQogICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlz
dGVuZXJJRCwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIHsgfSwgeyB9KTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345922</attachid>
            <date>2018-07-27 10:00:11 -0700</date>
            <delta_ts>2018-07-27 10:46:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188089-20180727100011.patch</filename>
            <type>text/plain</type>
            <size>22630</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzQyOTApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDE4LTA3LTI3ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFJlZkNvdW50
ZWQgQ29tcGxldGlvbkhhbmRsZXIgd3JhcHBpbmcgYWJzdHJhY3Rpb24gZm9yIHNlbmRpbmcgcG9s
aWN5IGRlY2lzaW9ucyBiYWNrIHRvIFdlYlByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODA4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgd2lsbCBiZSBuZWNlc3NhcnkgZm9yIHdoZW4g
SSBhZGQgYW4gYXN5bmNocm9ub3VzIHBhcmFsbGVsIHN0ZXAgdG8gZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbi4KKyAgICAgICAgV2Ugd2lsbCB3YW50IHRvIHdhaXQgZm9yIHRoYXQgYXN5
bmNocm9ub3VzIHN0ZXAgZm9yIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jIGJ1
dCBub3QgZm9yIGEgY2xpZW50LgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OlBvbGljeURlY2lzaW9uU2VuZGVyOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OlBvbGljeURlY2lzaW9uU2VuZGVyOjpvcGVyYXRvcigpKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpQb2xpY3lEZWNpc2lvblNlbmRlcjo6UG9saWN5
RGVjaXNpb25TZW5kZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlY2VpdmVk
UG9saWN5RGVjaXNpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uKToKKwogMjAxOC0wNy0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAg
ICAgICAgIExvYWRpbmcgYSBmaWxlIFVSTCBhbmQgdGhlbiBpc3N1aW5nIGEgcmVsb2FkIHJpZ2h0
IGF3YXkgY2F1c2VzIHRoZSBsb2FkIHRvIGZhaWwgZHVlIHRvIHNhbmRib3hpbmcKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjM0Mjc3KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjQwNyw3ICsyNDA3LDI1IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjZW50ZXJTZWxlY3Rp
b25JblZpc2kKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNlbnRlclNl
bGVjdGlvbkluVmlzaWJsZUFyZWEoKSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gYWN0aW9uLCBXZWJGcmFtZVBy
b3h5JiBmcmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0
aW9uLCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVz
KQorY2xhc3MgV2ViUGFnZVByb3h5OjpQb2xpY3lEZWNpc2lvblNlbmRlciA6IHB1YmxpYyBSZWZD
b3VudGVkPFBvbGljeURlY2lzaW9uU2VuZGVyPiB7CitwdWJsaWM6CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUuLi4gQXJncz4gc3RhdGljIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4gY3JlYXRlKEFy
Z3MuLi4gYXJncykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBvbGljeURl
Y2lzaW9uU2VuZGVyKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOworICAgIH0KKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiB2b2lkIG9wZXJhdG9yKCkoQXJncy4uLiBhcmdzKQor
ICAgIHsKKyAgICAgICAgaWYgKG1fY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgICAgICBtX2Nv
bXBsZXRpb25IYW5kbGVyKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgfQorcHJp
dmF0ZToKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiBQb2xpY3lEZWNpc2lvblNlbmRl
cihBcmdzLi4uIGFyZ3MpCisgICAgICAgIDogbV9jb21wbGV0aW9uSGFuZGxlcihzdGQ6OmZvcndh
cmQ8QXJncz4oYXJncykuLi4pIHsgfQorCisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJD
b3JlOjpQb2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5ld05hdmlnYXRpb25JRCwgRG93bmxvYWRJRCwg
c3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPik+IG1fY29tcGxldGlvbkhhbmRsZXI7
Cit9OworICAgIAordm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9s
aWN5QWN0aW9uIGFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBzdGQ6Om9wdGlv
bmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzLCBSZWY8UG9saWN5RGVj
aXNpb25TZW5kZXI+JiYgc2VuZGVyKQogewogICAgIGlmICghaXNWYWxpZCgpKQogICAgICAgICBy
ZXR1cm47CkBAIC0yNDM0LDEyICsyNDUyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVk
UG9saWN5RGVjaXNpbwogICAgICAgICBtX2RlY2lkZVBvbGljeUZvclJlc3BvbnNlUmVxdWVzdCA9
IHsgfTsKICAgICB9CiAKLSAgICBpZiAoYXV0byBzeW5jTmF2aWdhdGlvbkFjdGlvblBvbGljeVJl
cGx5ID0gV1RGTW92ZShtX3N5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5UmVwbHkpKSB7Ci0gICAg
ICAgIHN5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5UmVwbHkobmF2aWdhdGlvbiA/IG5hdmlnYXRp
b24tPm5hdmlnYXRpb25JRCgpIDogMCwgYWN0aW9uLCBkb3dubG9hZElELCBXVEZNb3ZlKHdlYnNp
dGVQb2xpY2llcykpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24oZnJhbWUuZnJh
bWVJRCgpLCBsaXN0ZW5lcklELCBhY3Rpb24sIG5hdmlnYXRpb24gPyBuYXZpZ2F0aW9uLT5uYXZp
Z2F0aW9uSUQoKSA6IDAsIGRvd25sb2FkSUQsIHdlYnNpdGVQb2xpY2llcyksIG1fcGFnZUlEKTsK
KyAgICBzZW5kZXIuZ2V0KCkoYWN0aW9uLCBuYXZpZ2F0aW9uID8gbmF2aWdhdGlvbi0+bmF2aWdh
dGlvbklEKCkgOiAwLCBkb3dubG9hZElELCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKEFQSTo6
TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzKQpA
QCAtMzk1OCw3ICszOTcxLDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpmcmFtZURpZEJlY29tZUZy
YW1lU2UKICAgICAgICAgbV9mcmFtZVNldExhcmdlc3RGcmFtZSA9IHZhbHVlID8gbV9tYWluRnJh
bWUgOiAwOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1l
U2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRh
dGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgY29uc3QgRnJhbWVJbmZvRGF0YSYgb3JpZ2luYXRp
bmdGcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIFJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCB1aW50NjRfdCBsaXN0
ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0
X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25E
YXRhLCBjb25zdCBGcmFtZUluZm9EYXRhJiBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5h
dGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVl
c3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIHVp
bnQ2NF90IGxpc3RlbmVySUQpCit7CisgICAgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bihmcmFtZUlELCBmcmFtZVNlY3VyaXR5T3JpZ2luLCBuYXZpZ2F0aW9uSUQsIFdURk1vdmUobmF2
aWdhdGlvbkFjdGlvbkRhdGEpLCBmcmFtZUluZm9EYXRhLCBvcmlnaW5hdGluZ1BhZ2VJRCwgb3Jp
Z2luYWxSZXF1ZXN0LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2Up
LCB1c2VyRGF0YSwgUG9saWN5RGVjaXNpb25TZW5kZXI6OmNyZWF0ZShbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBmcmFtZUlELCBsaXN0ZW5lcklEXSAoYXV0by4uLiBhcmdz
KSB7CisgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2
ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQsIGxpc3RlbmVySUQsIGFyZ3MuLi4pLCBtX3BhZ2VJRCk7
CisgICAgfSkpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdh
dGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgY29uc3QgRnJhbWVJbmZvRGF0
YSYgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiBy
ZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIFJlZjxQb2xpY3lEZWNp
c2lvblNlbmRlcj4mJiBzZW5kZXIpCiB7CiAgICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHk6
OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24gLSBPcmlnaW5hbCBVUkwgJXMsIGN1cnJl
bnQgdGFyZ2V0IFVSTCAlcyIsIG9yaWdpbmFsUmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCkBAIC00MDA1
LDcgKzQwMjUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhCiAg
ICAgbmF2aWdhdGlvbi0+c2V0SGFzT3BlbmVkRnJhbWVzKG5hdmlnYXRpb25BY3Rpb25EYXRhLmhh
c09wZW5lZEZyYW1lcyk7CiAgICAgbmF2aWdhdGlvbi0+c2V0T3BlbmVyKG5hdmlnYXRpb25BY3Rp
b25EYXRhLm9wZW5lcik7CiAKLSAgICBhdXRvIGxpc3RlbmVyID0gbWFrZVJlZihmcmFtZS0+c2V0
VXBQb2xpY3lMaXN0ZW5lclByb3h5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIGZyYW1lID0gbWFrZVJlZigqZnJhbWUpLCBsaXN0ZW5lcklELCBuYXZpZ2F0aW9uXSAoV2Vi
Q29yZTo6UG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQVBJOjpXZWJzaXRlUG9saWNpZXMqIHBv
bGljaWVzLCBTaG91bGRQcm9jZXNzU3dhcElmUG9zc2libGUgc3dhcCkgbXV0YWJsZSB7CisgICAg
YXV0byBsaXN0ZW5lciA9IG1ha2VSZWYoZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBmcmFtZSA9IG1ha2VSZWYoKmZy
YW1lKSwgc2VuZGVyID0gc2VuZGVyLmNvcHlSZWYoKSwgbmF2aWdhdGlvbl0gKFdlYkNvcmU6OlBv
bGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiBwb2xpY2llcywg
U2hvdWxkUHJvY2Vzc1N3YXBJZlBvc3NpYmxlIHN3YXApIG11dGFibGUgewogICAgICAgICBzdGQ6
Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+IGRhdGE7CiAgICAgICAgIGlmIChwb2xpY2ll
cykgewogICAgICAgICAgICAgZGF0YSA9IHBvbGljaWVzLT5kYXRhKCk7CkBAIC00MDI1LDE0ICs0
MDQ1LDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2EKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9s
aWN5QWN0aW9uLCBmcmFtZS5nZXQoKSwgbGlzdGVuZXJJRCwgbmF2aWdhdGlvbi5nZXQoKSwgV1RG
TW92ZShkYXRhKSk7CisgICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9u
LCBuYXZpZ2F0aW9uLmdldCgpLCBXVEZNb3ZlKGRhdGEpLCBXVEZNb3ZlKHNlbmRlcikpOwogICAg
IH0pKTsKIAogICAgIEFQSTo6TmF2aWdhdGlvbiogbWFpbkZyYW1lTmF2aWdhdGlvbiA9IGZyYW1l
LT5pc01haW5GcmFtZSgpID8gbmF2aWdhdGlvbi5nZXQoKSA6IG51bGxwdHI7CiAKICNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgaWYgKGZyYW1lLT5kaWRIYW5kbGVDb250ZW50Rmls
dGVyVW5ibG9ja05hdmlnYXRpb24ocmVxdWVzdCkpCi0gICAgICAgIHJldHVybiByZWNlaXZlZFBv
bGljeURlY2lzaW9uKFBvbGljeUFjdGlvbjo6SWdub3JlLCAqZnJhbWUsIGxpc3RlbmVySUQsICZt
X25hdmlnYXRpb25TdGF0ZS0+bmF2aWdhdGlvbihuZXdOYXZpZ2F0aW9uSUQpLCBzdGQ6Om51bGxv
cHQpOworICAgICAgICByZXR1cm4gcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb246
Oklnbm9yZSwgJm1fbmF2aWdhdGlvblN0YXRlLT5uYXZpZ2F0aW9uKG5ld05hdmlnYXRpb25JRCks
IHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShzZW5kZXIpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFN
KG5ld05hdmlnYXRpb25JRCk7CiAjZW5kaWYKQEAgLTQwNjIsMTYgKzQwODIsMTQgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYQogICAgIG1fc2hvdWxkU3VwcHJlc3NB
cHBMaW5rc0luTmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiA9IGZhbHNlOwogfQogCi12b2lk
IFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmModWludDY0
X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3Vy
aXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYg
bmF2aWdhdGlvbkFjdGlvbkRhdGEsIGNvbnN0IEZyYW1lSW5mb0RhdGEmIG9yaWdpbmF0aW5nRnJh
bWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgdWludDY0X3Qg
bGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6RGVsYXllZFJlcGx5JiYg
cmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
blN5bmModWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
JiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25B
Y3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIGNvbnN0IEZyYW1lSW5mb0RhdGEmIGZy
YW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2Us
IGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewot
ICAgIEFTU0VSVCghbV9zeW5jTmF2aWdhdGlvbkFjdGlvblBvbGljeVJlcGx5KTsKLSAgICBtX3N5
bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5UmVwbHkgPSBXVEZNb3ZlKHJlcGx5KTsKLQotICAgIGRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oZnJhbWVJRCwgZnJhbWVTZWN1cml0eU9yaWdp
biwgbmF2aWdhdGlvbklELCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgb3JpZ2luYXRp
bmdGcmFtZUluZm9EYXRhLCBvcmlnaW5hdGluZ1BhZ2VJRCwgb3JpZ2luYWxSZXF1ZXN0LCBXVEZN
b3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpLCBsaXN0ZW5lcklELCB1c2Vy
RGF0YSk7CisgICAgYXV0byBzZW5kZXIgPSBQb2xpY3lEZWNpc2lvblNlbmRlcjo6Y3JlYXRlKFdU
Rk1vdmUocmVwbHkpKTsKKyAgICAKKyAgICBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
KGZyYW1lSUQsIGZyYW1lU2VjdXJpdHlPcmlnaW4sIG5hdmlnYXRpb25JRCwgV1RGTW92ZShuYXZp
Z2F0aW9uQWN0aW9uRGF0YSksIGZyYW1lSW5mb0RhdGEsIG9yaWdpbmF0aW5nUGFnZUlELCBvcmln
aW5hbFJlcXVlc3QsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSks
IHVzZXJEYXRhLCBzZW5kZXIuY29weVJlZigpKTsKIAogICAgIC8vIElmIHRoZSBjbGllbnQgZGlk
IG5vdCByZXNwb25kIHN5bmNocm9ub3VzbHksIHByb2NlZWQgd2l0aCB0aGUgbG9hZC4KLSAgICBp
ZiAoYXV0byBzeW5jTmF2aWdhdGlvbkFjdGlvblBvbGljeVJlcGx5ID0gV1RGTW92ZShtX3N5bmNO
YXZpZ2F0aW9uQWN0aW9uUG9saWN5UmVwbHkpKQotICAgICAgICBzeW5jTmF2aWdhdGlvbkFjdGlv
blBvbGljeVJlcGx5KG5hdmlnYXRpb25JRCwgUG9saWN5QWN0aW9uOjpVc2UsIHsgfSwgeyB9KTsK
KyAgICBzZW5kZXIuZ2V0KCkoUG9saWN5QWN0aW9uOjpVc2UsIG5hdmlnYXRpb25JRCwgRG93bmxv
YWRJRCgpLCBzdGQ6Om51bGxvcHQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9s
aWN5Rm9yTmV3V2luZG93QWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3Jp
Z2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZp
Z2F0aW9uQWN0aW9uRGF0YSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgU3RyaW5n
JiBmcmFtZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0
YSkKQEAgLTQwODIsMTAgKzQxMDAsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGlj
eUZvck5ld1dpbgogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogICAgIE1FU1NBR0VfQ0hFQ0tf
VVJMKHJlcXVlc3QudXJsKCkpOwogCi0gICAgYXV0byBsaXN0ZW5lciA9IG1ha2VSZWYoZnJhbWUt
PnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCBsaXN0ZW5lcklELCBmcmFtZSA9IG1ha2VSZWYoKmZyYW1lKV0gKFdlYkNvcmU6OlBv
bGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiwgU2hvdWxkUHJv
Y2Vzc1N3YXBJZlBvc3NpYmxlIHN3YXApIHsKKyAgICBhdXRvIGxpc3RlbmVyID0gbWFrZVJlZihm
cmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIGxpc3RlbmVySUQsIGZyYW1lSURdIChXZWJDb3JlOjpQb2xpY3lBY3Rpb24g
cG9saWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyosIFNob3VsZFByb2Nlc3NTd2FwSWZQ
b3NzaWJsZSBzd2FwKSBtdXRhYmxlIHsKICAgICAgICAgLy8gRklYTUU6IEFzc2VydCB0aGUgQVBJ
OjpXZWJzaXRlUG9saWNpZXMqIGlzIG51bGxwdHIgaGVyZSBvbmNlIGNsaWVudHMgb2YgV0tGcmFt
ZVBvbGljeUxpc3RlbmVyVXNlV2l0aFBvbGljaWVzIGdvIGF3YXkuCiAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKHN3YXAgPT0gU2hvdWxkUHJvY2Vzc1N3YXBJZlBvc3NpYmxlOjpObyk7Ci0gICAgICAg
IHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBmcmFtZS5nZXQoKSwgbGlzdGVu
ZXJJRCwgbnVsbHB0ciwgc3RkOjpudWxsb3B0KTsKKyAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNp
c2lvbihwb2xpY3lBY3Rpb24sIG51bGxwdHIsIHN0ZDo6bnVsbG9wdCwgUG9saWN5RGVjaXNpb25T
ZW5kZXI6OmNyZWF0ZShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhp
cyksIGZyYW1lSUQsIGxpc3RlbmVySURdIChhdXRvLi4uIGFyZ3MpIHsKKyAgICAgICAgICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9u
KGZyYW1lSUQsIGxpc3RlbmVySUQsIGFyZ3MuLi4pLCBtX3BhZ2VJRCk7CisgICAgICAgIH0pKTsK
ICAgICB9KSk7CiAKICAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KSB7CkBAIC00MTE1LDEwICs0
MTM1LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb24KICAgICBN
RVNTQUdFX0NIRUNLX1VSTChyZXNwb25zZS51cmwoKSk7CiAKICAgICBSZWZQdHI8QVBJOjpOYXZp
Z2F0aW9uPiBuYXZpZ2F0aW9uID0gbmF2aWdhdGlvbklEID8gJm1fbmF2aWdhdGlvblN0YXRlLT5u
YXZpZ2F0aW9uKG5hdmlnYXRpb25JRCkgOiBudWxscHRyOwotICAgIGF1dG8gbGlzdGVuZXIgPSBt
YWtlUmVmKGZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyUHJveHkoW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgZnJhbWUgPSBtYWtlUmVmKCpmcmFtZSksIGxpc3RlbmVySUQs
IG5hdmlnYXRpb24gPSBXVEZNb3ZlKG5hdmlnYXRpb24pXSAoV2ViQ29yZTo6UG9saWN5QWN0aW9u
IHBvbGljeUFjdGlvbiwgQVBJOjpXZWJzaXRlUG9saWNpZXMqLCBTaG91bGRQcm9jZXNzU3dhcElm
UG9zc2libGUgc3dhcCkgeworICAgIGF1dG8gbGlzdGVuZXIgPSBtYWtlUmVmKGZyYW1lLT5zZXRV
cFBvbGljeUxpc3RlbmVyUHJveHkoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgZnJhbWVJRCwgbGlzdGVuZXJJRCwgbmF2aWdhdGlvbiA9IFdURk1vdmUobmF2aWdhdGlvbild
IChXZWJDb3JlOjpQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2ll
cyosIFNob3VsZFByb2Nlc3NTd2FwSWZQb3NzaWJsZSBzd2FwKSBtdXRhYmxlIHsKICAgICAgICAg
Ly8gRklYTUU6IEFzc2VydCB0aGUgQVBJOjpXZWJzaXRlUG9saWNpZXMqIGlzIG51bGxwdHIgaGVy
ZSBvbmNlIGNsaWVudHMgb2YgV0tGcmFtZVBvbGljeUxpc3RlbmVyVXNlV2l0aFBvbGljaWVzIGdv
IGF3YXkuCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHN3YXAgPT0gU2hvdWxkUHJvY2Vzc1N3YXBJ
ZlBvc3NpYmxlOjpObyk7Ci0gICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0
aW9uLCBmcmFtZS5nZXQoKSwgbGlzdGVuZXJJRCwgbmF2aWdhdGlvbi5nZXQoKSwgc3RkOjpudWxs
b3B0KTsKKyAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG5hdmln
YXRpb24uZ2V0KCksIHN0ZDo6bnVsbG9wdCwgUG9saWN5RGVjaXNpb25TZW5kZXI6OmNyZWF0ZShb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGZyYW1lSUQsIGxp
c3RlbmVySURdIChhdXRvLi4uIGFyZ3MpIHsKKyAgICAgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQsIGxpc3Rl
bmVySUQsIGFyZ3MuLi4pLCBtX3BhZ2VJRCk7CisgICAgICAgIH0pKTsKICAgICB9KSk7CiAKICAg
ICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50KSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMjM0Mjc3KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTkwOCw3ICs5MDgsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBwZXJmb3JtRGljdGlvbmFyeUxvb2t1cE9mQ3VycmVudFNlbGVjdGlvbigp
OwogI2VuZGlmCiAKLSAgICB2b2lkIHJlY2VpdmVkUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9s
aWN5QWN0aW9uLCBXZWJGcmFtZVByb3h5JiwgdWludDY0X3QgbGlzdGVuZXJJRCwgQVBJOjpOYXZp
Z2F0aW9uKiwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmKTsKKyAgICBjbGFz
cyBQb2xpY3lEZWNpc2lvblNlbmRlcjsKKyAgICB2b2lkIHJlY2VpdmVkUG9saWN5RGVjaXNpb24o
V2ViQ29yZTo6UG9saWN5QWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qLCBzdGQ6Om9wdGlvbmFsPFdl
YnNpdGVQb2xpY2llc0RhdGE+JiYsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJik7CiAKICAg
ICB2b2lkIGJhY2tGb3J3YXJkUmVtb3ZlZEl0ZW0oY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJ
dGVtSWRlbnRpZmllciYpOwogCkBAIC0xNDIxLDggKzE0MjIsOSBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCBkaWREZXN0cm95TmF2aWdhdGlvbih1aW50NjRfdCBuYXZpZ2F0aW9uSUQpOwogCi0gICAg
dm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIGNv
bnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBjb25zdCBGcmFtZUlu
Zm9EYXRhJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIHVpbnQ2NF90IGxp
c3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7Ci0gICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uU3luYyh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgY29uc3QgRnJhbWVJbmZvRGF0YSYsIHVpbnQ2NF90IG9y
aWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFs
UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2Vy
RGF0YSYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb25TeW5jOjpEZWxheWVkUmVwbHkmJik7CisgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZp
Z2F0aW9uQWN0aW9uRGF0YSYmLCBjb25zdCBGcmFtZUluZm9EYXRhJiwgdWludDY0X3Qgb3JpZ2lu
YXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1
ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgUmVmPFBvbGljeURlY2lzaW9u
U2VuZGVyPiYmKTsKKyAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3lu
Yyh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZy
YW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlv
bkRhdGEmJiwgY29uc3QgRnJhbWVJbmZvRGF0YSYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlE
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVj
dFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIHVpbnQ2NF90IGxpc3RlbmVySUQpOworICAgIHZv
aWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmModWludDY0X3QgZnJhbWVJRCwg
Y29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIGNvbnN0IEZyYW1l
SW5mb0RhdGEmLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNl
ckRhdGEmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uU3luYzo6RGVsYXllZFJlcGx5JiYpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmV3
V2luZG93QWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCB1aW50NjRf
dCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9y
UmVzcG9uc2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBib29sIGNhblNob3dNSU1FVHlwZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRh
dGEmKTsKICAgICB2b2lkIHVuYWJsZVRvSW1wbGVtZW50UG9saWN5KHVpbnQ2NF90IGZyYW1lSUQs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBVc2VyRGF0YSYpOwpAQCAtMjAw
MSw5ICsyMDAzLDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNJblByaW50aW5nTW9kZSB7IGZh
bHNlIH07CiAgICAgYm9vbCBtX2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uIHsgZmFsc2Ug
fTsKIAotICAgIC8vIFN5bmNocm9ub3VzIG5hdmlnYXRpb24gcG9saWN5IGRlY2lzaW9uLgotICAg
IE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25T
eW5jOjpEZWxheWVkUmVwbHkgbV9zeW5jTmF2aWdhdGlvbkFjdGlvblBvbGljeVJlcGx5OwotCiAg
ICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1fZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VSZXF1
ZXN0OwogICAgIGJvb2wgbV9zaG91bGRTdXBwcmVzc0FwcExpbmtzSW5OZXh0TmF2aWdhdGlvblBv
bGljeURlY2lzaW9uIHsgZmFsc2UgfTsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjM0Mjc3KQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDYsOCArMTA2LDggQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKIAogICAg
ICMgUG9saWN5IG1lc3NhZ2VzCiAgICAgRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UodWludDY0X3Qg
ZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5
T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Ug
cmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBib29sIGNhblNob3dN
SU1FVHlwZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkK
LSAgICBEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIHN0
cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBu
YXZpZ2F0aW9uQWN0aW9uRGF0YSwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBvcmlnaW5h
dGluZ0ZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3Qgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qg
cmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlLCB1aW50
NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQotICAgIERlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9u
QWN0aW9uRGF0YSwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1l
SW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3Qgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlLCB1aW50NjRfdCBsaXN0
ZW5lcklELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKSAtPiAodWludDY0X3QgbmV3TmF2aWdh
dGlvbklELCBlbnVtIFdlYkNvcmU6OlBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIFdlYktpdDo6
RG93bmxvYWRJRCBkb3dubG9hZElELCBzdGQ6Om9wdGlvbmFsPFdlYktpdDo6V2Vic2l0ZVBvbGlj
aWVzRGF0YT4gd2Vic2l0ZVBvbGljaWVzKSBEZWxheWVkCisgICAgRGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbkFzeW5jKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0
YSwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEs
IHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qgb3Jp
Z2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJE
YXRhLCB1aW50NjRfdCBsaXN0ZW5lcklEKQorICAgIERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb25TeW5jKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBzdHJ1Y3Qg
V2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgc3RydWN0
IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90
IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qgb3JpZ2luYWxSZXF1
ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKSAtPiAo
ZW51bSBXZWJDb3JlOjpQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCB1aW50NjRfdCBuZXdOYXZp
Z2F0aW9uSUQsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBzdGQ6Om9wdGlvbmFsPFdl
YktpdDo6V2Vic2l0ZVBvbGljaWVzRGF0YT4gd2Vic2l0ZVBvbGljaWVzKSBEZWxheWVkCiAgICAg
RGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgc3RydWN0IFdl
YktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBTdHJpbmcgZnJhbWVOYW1lLCB1aW50NjRfdCBsaXN0
ZW5lcklELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogICAgIFVuYWJsZVRvSW1wbGVtZW50
UG9saWN5KHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IsIFdl
YktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcAkocmV2aXNpb24gMjM0Mjc3KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODkyLDcgKzg5Miw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWQK
ICAgICAgICAgRG93bmxvYWRJRCBkb3dubG9hZElEOwogICAgICAgICBzdGQ6Om9wdGlvbmFsPFdl
YnNpdGVQb2xpY2llc0RhdGE+IHdlYnNpdGVQb2xpY2llczsKIAotICAgICAgICBpZiAoIXdlYlBh
Z2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb25TeW5jKG1fZnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpm
cm9tRnJhbWUoY29yZUZyYW1lKSwgZG9jdW1lbnRMb2FkZXItPm5hdmlnYXRpb25JRCgpLCBuYXZp
Z2F0aW9uQWN0aW9uRGF0YSwgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBvcmlnaW5hdGluZ1Bh
Z2VJRCwgbmF2aWdhdGlvbkFjdGlvbi5yZXNvdXJjZVJlcXVlc3QoKSwgcmVxdWVzdCwgcmVkaXJl
Y3RSZXNwb25zZSwgbGlzdGVuZXJJRCwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
dHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSwgTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OlJl
cGx5KG5ld05hdmlnYXRpb25JRCwgcG9saWN5QWN0aW9uLCBkb3dubG9hZElELCB3ZWJzaXRlUG9s
aWNpZXMpKSkgeworICAgICAgICBpZiAoIXdlYlBhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKG1fZnJhbWUtPmZy
YW1lSUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUoY29yZUZyYW1lKSwgZG9jdW1l
bnRMb2FkZXItPm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgb3JpZ2luYXRp
bmdGcmFtZUluZm9EYXRhLCBvcmlnaW5hdGluZ1BhZ2VJRCwgbmF2aWdhdGlvbkFjdGlvbi5yZXNv
dXJjZVJlcXVlc3QoKSwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSwgVXNlckRhdGEoV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQo
KSkuZ2V0KCkpKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvblN5bmM6OlJlcGx5KHBvbGljeUFjdGlvbiwgbmV3TmF2aWdhdGlvbklELCBkb3du
bG9hZElELCB3ZWJzaXRlUG9saWNpZXMpKSkgewogICAgICAgICAgICAgbV9mcmFtZS0+ZGlkUmVj
ZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIFBvbGljeUFjdGlvbjo6SWdub3JlLCAwLCB7
IH0sIHsgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTkwMiw3ICs5MDIs
NyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkCiAgICAgfQogCiAg
ICAgQVNTRVJUKHBvbGljeURlY2lzaW9uTW9kZSA9PSBQb2xpY3lEZWNpc2lvbk1vZGU6OkFzeW5j
aHJvbm91cyk7Ci0gICAgaWYgKCF3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24obV9mcmFtZS0+ZnJhbWVJRCgpLCBTZWN1
cml0eU9yaWdpbkRhdGE6OmZyb21GcmFtZShjb3JlRnJhbWUpLCBkb2N1bWVudExvYWRlci0+bmF2
aWdhdGlvbklEKCksIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBvcmlnaW5hdGluZ0ZyYW1lSW5mb0Rh
dGEsIG9yaWdpbmF0aW5nUGFnZUlELCBuYXZpZ2F0aW9uQWN0aW9uLnJlc291cmNlUmVxdWVzdCgp
LCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlLCBsaXN0ZW5lcklELCBVc2VyRGF0YShXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgp
KS5nZXQoKSkpKSkKKyAgICBpZiAoIXdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKG1fZnJhbWUtPmZyYW1lSUQo
KSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUoY29yZUZyYW1lKSwgZG9jdW1lbnRMb2Fk
ZXItPm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgb3JpZ2luYXRpbmdGcmFt
ZUluZm9EYXRhLCBvcmlnaW5hdGluZ1BhZ2VJRCwgbmF2aWdhdGlvbkFjdGlvbi5yZXNvdXJjZVJl
cXVlc3QoKSwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSwgVXNlckRhdGEoV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0
KCkpLCBsaXN0ZW5lcklEKSkpCiAgICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNp
c2lvbihsaXN0ZW5lcklELCBQb2xpY3lBY3Rpb246Oklnbm9yZSwgMCwgeyB9LCB7IH0pOwogfQog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345928</attachid>
            <date>2018-07-27 10:46:43 -0700</date>
            <delta_ts>2018-07-30 12:04:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188089-20180727104642.patch</filename>
            <type>text/plain</type>
            <size>22931</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzQzMTQpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDE4LTA3LTI3ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFJlZkNvdW50
ZWQgQ29tcGxldGlvbkhhbmRsZXIgd3JhcHBpbmcgYWJzdHJhY3Rpb24gZm9yIHNlbmRpbmcgcG9s
aWN5IGRlY2lzaW9ucyBiYWNrIHRvIFdlYlByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODA4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgd2lsbCBiZSBuZWNlc3NhcnkgZm9yIHdoZW4g
SSBhZGQgYW4gYXN5bmNocm9ub3VzIHBhcmFsbGVsIHN0ZXAgdG8gZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbi4KKyAgICAgICAgV2Ugd2lsbCB3YW50IHRvIHdhaXQgZm9yIHRoYXQgYXN5
bmNocm9ub3VzIHN0ZXAgZm9yIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jIGJ1
dCBub3QgZm9yIGEgY2xpZW50LgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OlBvbGljeURlY2lzaW9uU2VuZGVyOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OlBvbGljeURlY2lzaW9uU2VuZGVyOjpvcGVyYXRvcigpKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpQb2xpY3lEZWNpc2lvblNlbmRlcjo6UG9saWN5
RGVjaXNpb25TZW5kZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlY2VpdmVk
UG9saWN5RGVjaXNpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uKToKKwogMjAxOC0wNy0yNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFJlbW92ZSB1bnVzZWQgV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2
YXRlIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24gU1BJCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDIzNDI3NykKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0
MDcsNyArMjQwNywyNSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2VudGVyU2VsZWN0aW9uSW5WaXNp
CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDZW50ZXJTZWxlY3Rpb25J
blZpc2libGVBcmVhKCksIG1fcGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlY2Vp
dmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIGFjdGlvbiwgV2ViRnJhbWVQcm94eSYgZnJh
bWUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgc3Rk
OjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKK2NsYXNz
IFdlYlBhZ2VQcm94eTo6UG9saWN5RGVjaXNpb25TZW5kZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxQ
b2xpY3lEZWNpc2lvblNlbmRlcj4geworcHVibGljOgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIExh
bWJkYT4gc3RhdGljIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4gY3JlYXRlKExhbWJkYSBsYW1i
ZGEpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQb2xpY3lEZWNpc2lvblNl
bmRlcihXVEZNb3ZlKGxhbWJkYSkpKTsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4g
QXJncz4gdm9pZCBzZW5kKEFyZ3MuLi4gYXJncykKKyAgICB7CisgICAgICAgIGlmIChtX2NvbXBs
ZXRpb25IYW5kbGVyKQorICAgICAgICAgICAgbV9jb21wbGV0aW9uSGFuZGxlcihzdGQ6OmZvcndh
cmQ8QXJncz4oYXJncykuLi4pOworICAgIH0KK3ByaXZhdGU6CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgTGFtYmRhPiBQb2xpY3lEZWNpc2lvblNlbmRlcihMYW1iZGEgbGFtYmRhKQorICAgICAgICA6
IG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShsYW1iZGEpKSB7IH0KKworICAgIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UG9saWN5QWN0aW9uLCB1aW50NjRfdCBuZXdOYXZpZ2F0
aW9uSUQsIERvd25sb2FkSUQsIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4pPiBt
X2NvbXBsZXRpb25IYW5kbGVyOworfTsKKyAgICAKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZl
ZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBhY3Rpb24sIEFQSTo6TmF2aWdhdGlvbiogbmF2
aWdhdGlvbiwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xp
Y2llcywgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmIHNlbmRlcikKIHsKICAgICBpZiAoIWlz
VmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjQzNCwxMiArMjQ1Miw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW8KICAgICAgICAgbV9kZWNpZGVQb2xpY3lG
b3JSZXNwb25zZVJlcXVlc3QgPSB7IH07CiAgICAgfQogCi0gICAgaWYgKGF1dG8gc3luY05hdmln
YXRpb25BY3Rpb25Qb2xpY3lSZXBseSA9IFdURk1vdmUobV9zeW5jTmF2aWdhdGlvbkFjdGlvblBv
bGljeVJlcGx5KSkgewotICAgICAgICBzeW5jTmF2aWdhdGlvbkFjdGlvblBvbGljeVJlcGx5KG5h
dmlnYXRpb24gPyBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSA6IDAsIGFjdGlvbiwgZG93bmxv
YWRJRCwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGlj
eURlY2lzaW9uKGZyYW1lLmZyYW1lSUQoKSwgbGlzdGVuZXJJRCwgYWN0aW9uLCBuYXZpZ2F0aW9u
ID8gbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCkgOiAwLCBkb3dubG9hZElELCB3ZWJzaXRlUG9s
aWNpZXMpLCBtX3BhZ2VJRCk7CisgICAgc2VuZGVyLT5zZW5kKGFjdGlvbiwgbmF2aWdhdGlvbiA/
IG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpIDogMCwgZG93bmxvYWRJRCwgV1RGTW92ZSh3ZWJz
aXRlUG9saWNpZXMpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRpbnVlTmF2aWdhdGlv
bkluTmV3UHJvY2VzcyhBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFJlZjxXZWJQcm9jZXNz
UHJveHk+JiYgcHJvY2VzcykKQEAgLTM5NTgsNyArMzk3MSwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6ZnJhbWVEaWRCZWNvbWVGcmFtZVNlCiAgICAgICAgIG1fZnJhbWVTZXRMYXJnZXN0RnJhbWUg
PSB2YWx1ZSA/IG1fbWFpbkZyYW1lIDogMDsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24odWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIGNvbnN0IEZyYW1l
SW5mb0RhdGEmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQ
YWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNw
b25zZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9p
ZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyh1aW50
NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2Vj
dXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEm
JiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgY29uc3QgRnJhbWVJbmZvRGF0YSYgZnJhbWVJbmZvRGF0
YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNl
ckRhdGEmIHVzZXJEYXRhLCB1aW50NjRfdCBsaXN0ZW5lcklEKQoreworICAgIGRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24oZnJhbWVJRCwgZnJhbWVTZWN1cml0eU9yaWdpbiwgbmF2aWdh
dGlvbklELCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgZnJhbWVJbmZvRGF0YSwgb3Jp
Z2luYXRpbmdQYWdlSUQsIG9yaWdpbmFsUmVxdWVzdCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92
ZShyZWRpcmVjdFJlc3BvbnNlKSwgdXNlckRhdGEsIFBvbGljeURlY2lzaW9uU2VuZGVyOjpjcmVh
dGUoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZnJhbWVJRCwgbGlzdGVu
ZXJJRF0gKGF1dG8uLi4gYXJncykgeworICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZUlELCBsaXN0ZW5lcklELCBh
cmdzLi4uKSwgbV9wYWdlSUQpOworICAgIH0pKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24odWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEs
IGNvbnN0IEZyYW1lSW5mb0RhdGEmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qg
b3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2lu
YWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmIHVzZXJE
YXRhLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYgc2VuZGVyKQogewogICAgIExPRyhMb2Fk
aW5nLCAiV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uIC0gT3Jp
Z2luYWwgVVJMICVzLCBjdXJyZW50IHRhcmdldCBVUkwgJXMiLCBvcmlnaW5hbFJlcXVlc3QudXJs
KCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKIApAQCAtNDAwNSw3ICs0MDI1LDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2EKICAgICBuYXZpZ2F0aW9uLT5zZXRIYXNPcGVuZWRGcmFtZXMobmF2
aWdhdGlvbkFjdGlvbkRhdGEuaGFzT3BlbmVkRnJhbWVzKTsKICAgICBuYXZpZ2F0aW9uLT5zZXRP
cGVuZXIobmF2aWdhdGlvbkFjdGlvbkRhdGEub3BlbmVyKTsKIAotICAgIGF1dG8gbGlzdGVuZXIg
PSBtYWtlUmVmKGZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyUHJveHkoW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZnJhbWUgPSBtYWtlUmVmKCpmcmFtZSksIGxpc3RlbmVy
SUQsIG5hdmlnYXRpb25dIChXZWJDb3JlOjpQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6
OldlYnNpdGVQb2xpY2llcyogcG9saWNpZXMsIFNob3VsZFByb2Nlc3NTd2FwSWZQb3NzaWJsZSBz
d2FwKSBtdXRhYmxlIHsKKyNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCisgICAgaWYgKGZy
YW1lLT5kaWRIYW5kbGVDb250ZW50RmlsdGVyVW5ibG9ja05hdmlnYXRpb24ocmVxdWVzdCkpCisg
ICAgICAgIHJldHVybiByZWNlaXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbjo6SWdub3Jl
LCAmbV9uYXZpZ2F0aW9uU3RhdGUtPm5hdmlnYXRpb24obmV3TmF2aWdhdGlvbklEKSwgc3RkOjpu
dWxsb3B0LCBXVEZNb3ZlKHNlbmRlcikpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0obmV3TmF2
aWdhdGlvbklEKTsKKyNlbmRpZgorCisgICAgYXV0byBsaXN0ZW5lciA9IG1ha2VSZWYoZnJhbWUt
PnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCBmcmFtZSA9IG1ha2VSZWYoKmZyYW1lKSwgc2VuZGVyID0gc2VuZGVyLmNvcHlSZWYo
KSwgbmF2aWdhdGlvbl0gKFdlYkNvcmU6OlBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6
V2Vic2l0ZVBvbGljaWVzKiBwb2xpY2llcywgU2hvdWxkUHJvY2Vzc1N3YXBJZlBvc3NpYmxlIHN3
YXApIG11dGFibGUgewogICAgICAgICBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+
IGRhdGE7CiAgICAgICAgIGlmIChwb2xpY2llcykgewogICAgICAgICAgICAgZGF0YSA9IHBvbGlj
aWVzLT5kYXRhKCk7CkBAIC00MDI1LDE4ICs0MDUyLDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2EKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAg
IHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBmcmFtZS5nZXQoKSwgbGlzdGVu
ZXJJRCwgbmF2aWdhdGlvbi5nZXQoKSwgV1RGTW92ZShkYXRhKSk7CisgICAgICAgIHJlY2VpdmVk
UG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9uLmdldCgpLCBXVEZNb3ZlKGRh
dGEpLCBXVEZNb3ZlKHNlbmRlcikpOwogICAgIH0pKTsKIAogICAgIEFQSTo6TmF2aWdhdGlvbiog
bWFpbkZyYW1lTmF2aWdhdGlvbiA9IGZyYW1lLT5pc01haW5GcmFtZSgpID8gbmF2aWdhdGlvbi5n
ZXQoKSA6IG51bGxwdHI7Ci0KLSNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCi0gICAgaWYg
KGZyYW1lLT5kaWRIYW5kbGVDb250ZW50RmlsdGVyVW5ibG9ja05hdmlnYXRpb24ocmVxdWVzdCkp
Ci0gICAgICAgIHJldHVybiByZWNlaXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbjo6SWdu
b3JlLCAqZnJhbWUsIGxpc3RlbmVySUQsICZtX25hdmlnYXRpb25TdGF0ZS0+bmF2aWdhdGlvbihu
ZXdOYXZpZ2F0aW9uSUQpLCBzdGQ6Om51bGxvcHQpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0o
bmV3TmF2aWdhdGlvbklEKTsKLSNlbmRpZgotCiAgICAgV2ViRnJhbWVQcm94eSogb3JpZ2luYXRp
bmdGcmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUob3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLmZy
YW1lSUQpOwogCiAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSA9IHdl
YnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCkBAIC00MDYyLDE2ICs0
MDgxLDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2EKICAgICBt
X3Nob3VsZFN1cHByZXNzQXBwTGlua3NJbk5leHROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24gPSBm
YWxzZTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb25TeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0
aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBjb25zdCBGcmFtZUluZm9EYXRh
JiBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVz
cG9uc2UsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6
OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQordm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb25TeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBjb25zdCBG
cmFtZUluZm9EYXRhJiBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiBy
ZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpEZWxheWVkUmVw
bHkmJiByZXBseSkKIHsKLSAgICBBU1NFUlQoIW1fc3luY05hdmlnYXRpb25BY3Rpb25Qb2xpY3lS
ZXBseSk7Ci0gICAgbV9zeW5jTmF2aWdhdGlvbkFjdGlvblBvbGljeVJlcGx5ID0gV1RGTW92ZShy
ZXBseSk7Ci0KLSAgICBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGZyYW1lSUQsIGZy
YW1lU2VjdXJpdHlPcmlnaW4sIG5hdmlnYXRpb25JRCwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9u
RGF0YSksIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgb3JpZ2luYXRpbmdQYWdlSUQsIG9yaWdp
bmFsUmVxdWVzdCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwg
bGlzdGVuZXJJRCwgdXNlckRhdGEpOworICAgIGF1dG8gc2VuZGVyID0gUG9saWN5RGVjaXNpb25T
ZW5kZXI6OmNyZWF0ZShXVEZNb3ZlKHJlcGx5KSk7CisgICAgCisgICAgZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbihmcmFtZUlELCBmcmFtZVNlY3VyaXR5T3JpZ2luLCBuYXZpZ2F0aW9u
SUQsIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBmcmFtZUluZm9EYXRhLCBvcmlnaW5h
dGluZ1BhZ2VJRCwgb3JpZ2luYWxSZXF1ZXN0LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJl
ZGlyZWN0UmVzcG9uc2UpLCB1c2VyRGF0YSwgc2VuZGVyLmNvcHlSZWYoKSk7CiAKICAgICAvLyBJ
ZiB0aGUgY2xpZW50IGRpZCBub3QgcmVzcG9uZCBzeW5jaHJvbm91c2x5LCBwcm9jZWVkIHdpdGgg
dGhlIGxvYWQuCi0gICAgaWYgKGF1dG8gc3luY05hdmlnYXRpb25BY3Rpb25Qb2xpY3lSZXBseSA9
IFdURk1vdmUobV9zeW5jTmF2aWdhdGlvbkFjdGlvblBvbGljeVJlcGx5KSkKLSAgICAgICAgc3lu
Y05hdmlnYXRpb25BY3Rpb25Qb2xpY3lSZXBseShuYXZpZ2F0aW9uSUQsIFBvbGljeUFjdGlvbjo6
VXNlLCB7IH0sIHsgfSk7CisgICAgc2VuZGVyLT5zZW5kKFBvbGljeUFjdGlvbjo6VXNlLCBuYXZp
Z2F0aW9uSUQsIERvd25sb2FkSUQoKSwgc3RkOjpudWxsb3B0KTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih1aW50NjRfdCBmcmFtZUlELCBj
b25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIE5hdmlnYXRpb25B
Y3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBV
c2VyRGF0YSYgdXNlckRhdGEpCkBAIC00MDgyLDEwICs0MDk5LDEyIEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW4KICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKICAg
ICBNRVNTQUdFX0NIRUNLX1VSTChyZXF1ZXN0LnVybCgpKTsKIAotICAgIGF1dG8gbGlzdGVuZXIg
PSBtYWtlUmVmKGZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyUHJveHkoW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbGlzdGVuZXJJRCwgZnJhbWUgPSBtYWtlUmVmKCpmcmFt
ZSldIChXZWJDb3JlOjpQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xp
Y2llcyosIFNob3VsZFByb2Nlc3NTd2FwSWZQb3NzaWJsZSBzd2FwKSB7CisgICAgYXV0byBsaXN0
ZW5lciA9IG1ha2VSZWYoZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBsaXN0ZW5lcklELCBmcmFtZUlEXSAoV2ViQ29y
ZTo6UG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQVBJOjpXZWJzaXRlUG9saWNpZXMqLCBTaG91
bGRQcm9jZXNzU3dhcElmUG9zc2libGUgc3dhcCkgbXV0YWJsZSB7CiAgICAgICAgIC8vIEZJWE1F
OiBBc3NlcnQgdGhlIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiBpcyBudWxscHRyIGhlcmUgb25jZSBj
bGllbnRzIG9mIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclVzZVdpdGhQb2xpY2llcyBnbyBhd2F5Lgog
ICAgICAgICBSRUxFQVNFX0FTU0VSVChzd2FwID09IFNob3VsZFByb2Nlc3NTd2FwSWZQb3NzaWJs
ZTo6Tm8pOwotICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgZnJh
bWUuZ2V0KCksIGxpc3RlbmVySUQsIG51bGxwdHIsIHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIHJl
Y2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBudWxscHRyLCBzdGQ6Om51bGxvcHQs
IFBvbGljeURlY2lzaW9uU2VuZGVyOjpjcmVhdGUoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZN
b3ZlKHByb3RlY3RlZFRoaXMpLCBmcmFtZUlELCBsaXN0ZW5lcklEXSAoYXV0by4uLiBhcmdzKSB7
CisgICAgICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2Vp
dmVQb2xpY3lEZWNpc2lvbihmcmFtZUlELCBsaXN0ZW5lcklELCBhcmdzLi4uKSwgbV9wYWdlSUQp
OworICAgICAgICB9KSk7CiAgICAgfSkpOwogCiAgICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkg
ewpAQCAtNDExNSwxMCArNDEzNCwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5
Rm9yUmVzcG9uCiAgICAgTUVTU0FHRV9DSEVDS19VUkwocmVzcG9uc2UudXJsKCkpOwogCiAgICAg
UmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gbmF2aWdhdGlvbiA9IG5hdmlnYXRpb25JRCA/ICZtX25h
dmlnYXRpb25TdGF0ZS0+bmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpIDogbnVsbHB0cjsKLSAgICBh
dXRvIGxpc3RlbmVyID0gbWFrZVJlZihmcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGZyYW1lID0gbWFrZVJlZigqZnJh
bWUpLCBsaXN0ZW5lcklELCBuYXZpZ2F0aW9uID0gV1RGTW92ZShuYXZpZ2F0aW9uKV0gKFdlYkNv
cmU6OlBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiwgU2hv
dWxkUHJvY2Vzc1N3YXBJZlBvc3NpYmxlIHN3YXApIHsKKyAgICBhdXRvIGxpc3RlbmVyID0gbWFr
ZVJlZihmcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIGZyYW1lSUQsIGxpc3RlbmVySUQsIG5hdmlnYXRpb24gPSBXVEZN
b3ZlKG5hdmlnYXRpb24pXSAoV2ViQ29yZTo6UG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQVBJ
OjpXZWJzaXRlUG9saWNpZXMqLCBTaG91bGRQcm9jZXNzU3dhcElmUG9zc2libGUgc3dhcCkgbXV0
YWJsZSB7CiAgICAgICAgIC8vIEZJWE1FOiBBc3NlcnQgdGhlIEFQSTo6V2Vic2l0ZVBvbGljaWVz
KiBpcyBudWxscHRyIGhlcmUgb25jZSBjbGllbnRzIG9mIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclVz
ZVdpdGhQb2xpY2llcyBnbyBhd2F5LgogICAgICAgICBSRUxFQVNFX0FTU0VSVChzd2FwID09IFNo
b3VsZFByb2Nlc3NTd2FwSWZQb3NzaWJsZTo6Tm8pOwotICAgICAgICByZWNlaXZlZFBvbGljeURl
Y2lzaW9uKHBvbGljeUFjdGlvbiwgZnJhbWUuZ2V0KCksIGxpc3RlbmVySUQsIG5hdmlnYXRpb24u
Z2V0KCksIHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9s
aWN5QWN0aW9uLCBuYXZpZ2F0aW9uLmdldCgpLCBzdGQ6Om51bGxvcHQsIFBvbGljeURlY2lzaW9u
U2VuZGVyOjpjcmVhdGUoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRo
aXMpLCBmcmFtZUlELCBsaXN0ZW5lcklEXSAoYXV0by4uLiBhcmdzKSB7CisgICAgICAgICAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lv
bihmcmFtZUlELCBsaXN0ZW5lcklELCBhcmdzLi4uKSwgbV9wYWdlSUQpOworICAgICAgICB9KSk7
CiAgICAgfSkpOwogCiAgICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkgewpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDIzNDI3NykKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MDgs
NyArOTA4LDggQEAgcHVibGljOgogICAgIHZvaWQgcGVyZm9ybURpY3Rpb25hcnlMb29rdXBPZkN1
cnJlbnRTZWxlY3Rpb24oKTsKICNlbmRpZgogCi0gICAgdm9pZCByZWNlaXZlZFBvbGljeURlY2lz
aW9uKFdlYkNvcmU6OlBvbGljeUFjdGlvbiwgV2ViRnJhbWVQcm94eSYsIHVpbnQ2NF90IGxpc3Rl
bmVySUQsIEFQSTo6TmF2aWdhdGlvbiosIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0
YT4mJik7CisgICAgY2xhc3MgUG9saWN5RGVjaXNpb25TZW5kZXI7CisgICAgdm9pZCByZWNlaXZl
ZFBvbGljeURlY2lzaW9uKFdlYkNvcmU6OlBvbGljeUFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKiwg
c3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmLCBSZWY8UG9saWN5RGVjaXNpb25T
ZW5kZXI+JiYpOwogCiAgICAgdm9pZCBiYWNrRm9yd2FyZFJlbW92ZWRJdGVtKGNvbnN0IFdlYkNv
cmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImKTsKIApAQCAtMTQyMSw4ICsxNDIyLDkgQEAg
cHJpdmF0ZToKIAogICAgIHZvaWQgZGlkRGVzdHJveU5hdmlnYXRpb24odWludDY0X3QgbmF2aWdh
dGlvbklEKTsKIAotICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50
NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2Vj
dXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEm
JiwgY29uc3QgRnJhbWVJbmZvRGF0YSYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3Bv
bnNlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwotICAgIHZvaWQgZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmModWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIGNvbnN0IEZyYW1lSW5mb0Rh
dGEmLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgdWludDY0X3QgbGlzdGVu
ZXJJRCwgY29uc3QgVXNlckRhdGEmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6RGVsYXllZFJlcGx5JiYpOworICAgIHZvaWQgZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgY29uc3QgRnJhbWVJbmZvRGF0YSYs
IHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIFJl
ZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJik7CisgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uQXN5bmModWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIGNvbnN0IEZyYW1lSW5mb0RhdGEmLCB1aW50NjRfdCBv
cmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5h
bFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCB1aW50NjRfdCBsaXN0
ZW5lcklEKTsKKyAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKHVp
bnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVT
ZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0
YSYmLCBjb25zdCBGcmFtZUluZm9EYXRhJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVz
cG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OkRlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIGRl
Y2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIE5hdmlnYXRpb25B
Y3Rpb25EYXRhJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBTdHJpbmcmIGZy
YW1lTmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lk
IGRlY2lkZVBvbGljeUZvclJlc3BvbnNlKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVy
SUQsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCB1bmFibGVUb0ltcGxlbWVudFBvbGljeSh1
aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgVXNl
ckRhdGEmKTsKQEAgLTIwMDEsOSArMjAwMyw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzSW5Q
cmludGluZ01vZGUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1BlcmZvcm1pbmdET01QcmludE9w
ZXJhdGlvbiB7IGZhbHNlIH07CiAKLSAgICAvLyBTeW5jaHJvbm91cyBuYXZpZ2F0aW9uIHBvbGlj
eSBkZWNpc2lvbi4KLSAgICBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uU3luYzo6RGVsYXllZFJlcGx5IG1fc3luY05hdmlnYXRpb25BY3Rpb25Q
b2xpY3lSZXBseTsKLQogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX2RlY2lkZVBvbGlj
eUZvclJlc3BvbnNlUmVxdWVzdDsKICAgICBib29sIG1fc2hvdWxkU3VwcHJlc3NBcHBMaW5rc0lu
TmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiB7IGZhbHNlIH07CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9u
IDIzNDI3NykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbgkod29ya2luZyBjb3B5KQpAQCAtMTA2LDggKzEwNiw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBh
Z2VQcm94eSB7CiAKICAgICAjIFBvbGljeSBtZXNzYWdlcwogICAgIERlY2lkZVBvbGljeUZvclJl
c3BvbnNlKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVz
dCwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNl
ckRhdGEgdXNlckRhdGEpCi0gICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50
NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2Vj
dXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYktpdDo6TmF2aWdh
dGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHN0cnVjdCBXZWJLaXQ6OkZyYW1l
SW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1Bh
Z2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVkaXJl
Y3RSZXNwb25zZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0
YSkKLSAgICBEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyh1aW50NjRfdCBmcmFt
ZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmln
aW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlv
bkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEg
b3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0IHJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVkaXJlY3RSZXNwb25z
ZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkgLT4gKHVp
bnQ2NF90IG5ld05hdmlnYXRpb25JRCwgZW51bSBXZWJDb3JlOjpQb2xpY3lBY3Rpb24gcG9saWN5
QWN0aW9uLCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgc3RkOjpvcHRpb25hbDxXZWJL
aXQ6OldlYnNpdGVQb2xpY2llc0RhdGE+IHdlYnNpdGVQb2xpY2llcykgRGVsYXllZAorICAgIERl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyh1aW50NjRfdCBmcmFtZUlELCBzdHJ1
Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2
aWdhdGlvbkFjdGlvbkRhdGEsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRp
bmdGcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJl
cXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVkaXJlY3RSZXNwb25zZSwgV2ViS2l0
OjpVc2VyRGF0YSB1c2VyRGF0YSwgdWludDY0X3QgbGlzdGVuZXJJRCkKKyAgICBEZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyh1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFj
dGlvbkRhdGEsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFtZUlu
Zm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVkaXJlY3RSZXNwb25zZSwgV2ViS2l0OjpVc2VyRGF0
YSB1c2VyRGF0YSkgLT4gKGVudW0gV2ViQ29yZTo6UG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwg
dWludDY0X3QgbmV3TmF2aWdhdGlvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwg
c3RkOjpvcHRpb25hbDxXZWJLaXQ6OldlYnNpdGVQb2xpY2llc0RhdGE+IHdlYnNpdGVQb2xpY2ll
cykgRGVsYXllZAogICAgIERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih1aW50NjRfdCBm
cmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlP
cmlnaW4sIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rp
b25EYXRhLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgU3RyaW5nIGZyYW1lTmFt
ZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKICAgICBV
bmFibGVUb0ltcGxlbWVudFBvbGljeSh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yIGVycm9yLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDIzNDI3NykKKysrIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTg5Miw3ICs4OTIsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERlY2lkCiAgICAgICAgIERvd25sb2FkSUQgZG93bmxvYWRJRDsKICAgICAgICAg
c3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiB3ZWJzaXRlUG9saWNpZXM7CiAKLSAg
ICAgICAgaWYgKCF3ZWJQYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyhtX2ZyYW1lLT5mcmFtZUlEKCksIFNlY3Vy
aXR5T3JpZ2luRGF0YTo6ZnJvbUZyYW1lKGNvcmVGcmFtZSksIGRvY3VtZW50TG9hZGVyLT5uYXZp
Z2F0aW9uSUQoKSwgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0
YSwgb3JpZ2luYXRpbmdQYWdlSUQsIG5hdmlnYXRpb25BY3Rpb24ucmVzb3VyY2VSZXF1ZXN0KCks
IHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UsIGxpc3RlbmVySUQsIFVzZXJEYXRhKFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkp
LmdldCgpKSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb25TeW5jOjpSZXBseShuZXdOYXZpZ2F0aW9uSUQsIHBvbGljeUFjdGlvbiwgZG93bmxv
YWRJRCwgd2Vic2l0ZVBvbGljaWVzKSkpIHsKKyAgICAgICAgaWYgKCF3ZWJQYWdlLT5zZW5kU3lu
YyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
U3luYyhtX2ZyYW1lLT5mcmFtZUlEKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbUZyYW1lKGNv
cmVGcmFtZSksIGRvY3VtZW50TG9hZGVyLT5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbkFjdGlv
bkRhdGEsIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgb3JpZ2luYXRpbmdQYWdlSUQsIG5hdmln
YXRpb25BY3Rpb24ucmVzb3VyY2VSZXF1ZXN0KCksIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2Us
IFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRs
ZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpSZXBseShwb2xpY3lBY3Rpb24sIG5ld05h
dmlnYXRpb25JRCwgZG93bmxvYWRJRCwgd2Vic2l0ZVBvbGljaWVzKSkpIHsKICAgICAgICAgICAg
IG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBQb2xpY3lBY3Rp
b246Oklnbm9yZSwgMCwgeyB9LCB7IH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CkBAIC05MDIsNyArOTAyLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
ZWNpZAogICAgIH0KIAogICAgIEFTU0VSVChwb2xpY3lEZWNpc2lvbk1vZGUgPT0gUG9saWN5RGVj
aXNpb25Nb2RlOjpBc3luY2hyb25vdXMpOwotICAgIGlmICghd2ViUGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKG1fZnJhbWUt
PmZyYW1lSUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUoY29yZUZyYW1lKSwgZG9j
dW1lbnRMb2FkZXItPm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgb3JpZ2lu
YXRpbmdGcmFtZUluZm9EYXRhLCBvcmlnaW5hdGluZ1BhZ2VJRCwgbmF2aWdhdGlvbkFjdGlvbi5y
ZXNvdXJjZVJlcXVlc3QoKSwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSwgbGlzdGVuZXJJRCwg
VXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxl
cyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSkpCisgICAgaWYgKCF3ZWJQYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyht
X2ZyYW1lLT5mcmFtZUlEKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbUZyYW1lKGNvcmVGcmFt
ZSksIGRvY3VtZW50TG9hZGVyLT5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbkFjdGlvbkRhdGEs
IG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgb3JpZ2luYXRpbmdQYWdlSUQsIG5hdmlnYXRpb25B
Y3Rpb24ucmVzb3VyY2VSZXF1ZXN0KCksIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UsIFVzZXJE
YXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNl
ckRhdGEuZ2V0KCkpLmdldCgpKSwgbGlzdGVuZXJJRCkpKQogICAgICAgICBtX2ZyYW1lLT5kaWRS
ZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAs
IHsgfSwgeyB9KTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>346081</attachid>
            <date>2018-07-30 12:04:46 -0700</date>
            <delta_ts>2018-07-30 12:06:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188089-20180730120445.patch</filename>
            <type>text/plain</type>
            <size>23055</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzQzNzQpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDE4LTA3LTMwICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFJlZkNvdW50
ZWQgQ29tcGxldGlvbkhhbmRsZXIgd3JhcHBpbmcgYWJzdHJhY3Rpb24gZm9yIHNlbmRpbmcgcG9s
aWN5IGRlY2lzaW9ucyBiYWNrIHRvIFdlYlByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODA4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgd2lsbCBiZSBuZWNlc3NhcnkgZm9yIHdoZW4g
SSBhZGQgYW4gYXN5bmNocm9ub3VzIHBhcmFsbGVsIHN0ZXAgdG8gZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbi4KKyAgICAgICAgV2Ugd2lsbCB3YW50IHRvIHdhaXQgZm9yIHRoYXQgYXN5
bmNocm9ub3VzIHN0ZXAgZm9yIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jIGJ1
dCBub3QgZm9yIGEgY2xpZW50LgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OlBvbGljeURlY2lzaW9uU2VuZGVyOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OlBvbGljeURlY2lzaW9uU2VuZGVyOjpvcGVyYXRvcigpKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpQb2xpY3lEZWNpc2lvblNlbmRlcjo6UG9saWN5
RGVjaXNpb25TZW5kZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlY2VpdmVk
UG9saWN5RGVjaXNpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmMpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uKToKKwogMjAxOC0wNy0zMCAgRGF2aWQgRmVudG9uICA8ZGF2aWRfZmVudG9uQGFwcGxlLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjM0MzI3LgpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyMzQzNzQpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNDA4LDEwICsyNDA4LDMyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjZW50ZXJTZWxlY3Rp
b25JblZpc2kKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNlbnRlclNl
bGVjdGlvbkluVmlzaWJsZUFyZWEoKSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gYWN0aW9uLCBXZWJGcmFtZVBy
b3h5JiBmcmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0
aW9uLCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVz
KQorY2xhc3MgV2ViUGFnZVByb3h5OjpQb2xpY3lEZWNpc2lvblNlbmRlciA6IHB1YmxpYyBSZWZD
b3VudGVkPFBvbGljeURlY2lzaW9uU2VuZGVyPiB7CitwdWJsaWM6CisgICAgdXNpbmcgU2VuZEZ1
bmN0aW9uID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpQb2xpY3lBY3Rpb24sIHVp
bnQ2NF90IG5ld05hdmlnYXRpb25JRCwgRG93bmxvYWRJRCwgc3RkOjpvcHRpb25hbDxXZWJzaXRl
UG9saWNpZXNEYXRhPik+OworICAgIHN0YXRpYyBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+IGNy
ZWF0ZShTZW5kRnVuY3Rpb24mJiBzZW5kRnVuY3Rpb24pCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBQb2xpY3lEZWNpc2lvblNlbmRlcihXVEZNb3ZlKHNlbmRGdW5jdGlvbikp
KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiB2b2lkIHNlbmQoQXJn
cy4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgaWYgKG1fc2VuZEZ1bmN0aW9uKQorICAgICAgICAg
ICAgbV9zZW5kRnVuY3Rpb24oc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICB9Citw
cml2YXRlOgorICAgIFBvbGljeURlY2lzaW9uU2VuZGVyKFNlbmRGdW5jdGlvbiBzZW5kRnVuY3Rp
b24pCisgICAgICAgIDogbV9zZW5kRnVuY3Rpb24oV1RGTW92ZShzZW5kRnVuY3Rpb24pKSB7IH0K
KworICAgIFNlbmRGdW5jdGlvbiBtX3NlbmRGdW5jdGlvbjsKK307CisgICAgCit2b2lkIFdlYlBh
Z2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gYWN0aW9uLCBBUEk6
Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0
YT4mJiB3ZWJzaXRlUG9saWNpZXMsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJiBzZW5kZXIp
CiB7Ci0gICAgaWYgKCFpc1ZhbGlkKCkpCisgICAgaWYgKCFpc1ZhbGlkKCkpIHsKKyAgICAgICAg
c2VuZGVyLT5zZW5kKFBvbGljeUFjdGlvbjo6SWdub3JlLCAwLCBEb3dubG9hZElEKCksIHN0ZDo6
bnVsbG9wdCk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBhdXRvIHRyYW5zYWN0aW9u
ID0gbV9wYWdlTG9hZFN0YXRlLnRyYW5zYWN0aW9uKCk7CiAKQEAgLTI0MzUsMTIgKzI0NTcsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvCiAgICAgICAgIG1fZGVj
aWRlUG9saWN5Rm9yUmVzcG9uc2VSZXF1ZXN0ID0geyB9OwogICAgIH0KIAotICAgIGlmIChhdXRv
IHN5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5UmVwbHkgPSBXVEZNb3ZlKG1fc3luY05hdmlnYXRp
b25BY3Rpb25Qb2xpY3lSZXBseSkpIHsKLSAgICAgICAgc3luY05hdmlnYXRpb25BY3Rpb25Qb2xp
Y3lSZXBseShuYXZpZ2F0aW9uID8gbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCkgOiAwLCBhY3Rp
b24sIGRvd25sb2FkSUQsIFdURk1vdmUod2Vic2l0ZVBvbGljaWVzKSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJl
Y2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZS5mcmFtZUlEKCksIGxpc3RlbmVySUQsIGFjdGlvbiwg
bmF2aWdhdGlvbiA/IG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpIDogMCwgZG93bmxvYWRJRCwg
d2Vic2l0ZVBvbGljaWVzKSwgbV9wYWdlSUQpOworICAgIHNlbmRlci0+c2VuZChhY3Rpb24sIG5h
dmlnYXRpb24gPyBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSA6IDAsIGRvd25sb2FkSUQsIFdU
Rk1vdmUod2Vic2l0ZVBvbGljaWVzKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250aW51
ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBSZWY8
V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MpCkBAIC0zOTU5LDcgKzM5NzYsMTQgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmZyYW1lRGlkQmVjb21lRnJhbWVTZQogICAgICAgICBtX2ZyYW1lU2V0TGFy
Z2VzdEZyYW1lID0gdmFsdWUgPyBtX21haW5GcmFtZSA6IDA7CiB9CiAKLXZvaWQgV2ViUGFnZVBy
b3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIGNv
bnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBj
b25zdCBGcmFtZUluZm9EYXRhJiBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9y
aWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFs
UmVxdWVzdCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSYmIHJl
ZGlyZWN0UmVzcG9uc2UsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiB1c2Vy
RGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
QXN5bmModWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
JiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25B
Y3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIGNvbnN0IEZyYW1lSW5mb0RhdGEmIGZy
YW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2Us
IGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgdWludDY0X3QgbGlzdGVuZXJJRCkKK3sKKyAgICBk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGZyYW1lSUQsIGZyYW1lU2VjdXJpdHlPcmln
aW4sIG5hdmlnYXRpb25JRCwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIGZyYW1lSW5m
b0RhdGEsIG9yaWdpbmF0aW5nUGFnZUlELCBvcmlnaW5hbFJlcXVlc3QsIFdURk1vdmUocmVxdWVz
dCksIFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSksIHVzZXJEYXRhLCBQb2xpY3lEZWNpc2lvblNl
bmRlcjo6Y3JlYXRlKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGZyYW1l
SUQsIGxpc3RlbmVySURdIChhdXRvLi4uIGFyZ3MpIHsKKyAgICAgICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24oZnJhbWVJRCwgbGlz
dGVuZXJJRCwgYXJncy4uLiksIG1fcGFnZUlEKTsKKyAgICB9KSk7Cit9CisKK3ZvaWQgV2ViUGFn
ZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQs
IGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25B
Y3Rpb25EYXRhLCBjb25zdCBGcmFtZUluZm9EYXRhJiBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEs
IHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJE
YXRhJiB1c2VyRGF0YSwgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmIHNlbmRlcikKIHsKICAg
ICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbiAtIE9yaWdpbmFsIFVSTCAlcywgY3VycmVudCB0YXJnZXQgVVJMICVzIiwgb3JpZ2luYWxS
ZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHJlcXVlc3QudXJsKCkuc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CiAKQEAgLTQwMDYsNyArNDAzMCwxNCBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhCiAgICAgbmF2aWdhdGlvbi0+c2V0SGFzT3BlbmVk
RnJhbWVzKG5hdmlnYXRpb25BY3Rpb25EYXRhLmhhc09wZW5lZEZyYW1lcyk7CiAgICAgbmF2aWdh
dGlvbi0+c2V0T3BlbmVyKG5hdmlnYXRpb25BY3Rpb25EYXRhLm9wZW5lcik7CiAKLSAgICBhdXRv
IGxpc3RlbmVyID0gbWFrZVJlZihmcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGZyYW1lID0gbWFrZVJlZigqZnJhbWUp
LCBsaXN0ZW5lcklELCBuYXZpZ2F0aW9uXSAoV2ViQ29yZTo6UG9saWN5QWN0aW9uIHBvbGljeUFj
dGlvbiwgQVBJOjpXZWJzaXRlUG9saWNpZXMqIHBvbGljaWVzLCBTaG91bGRQcm9jZXNzU3dhcElm
UG9zc2libGUgc3dhcCkgbXV0YWJsZSB7CisjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQor
ICAgIGlmIChmcmFtZS0+ZGlkSGFuZGxlQ29udGVudEZpbHRlclVuYmxvY2tOYXZpZ2F0aW9uKHJl
cXVlc3QpKQorICAgICAgICByZXR1cm4gcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rp
b246Oklnbm9yZSwgJm1fbmF2aWdhdGlvblN0YXRlLT5uYXZpZ2F0aW9uKG5ld05hdmlnYXRpb25J
RCksIHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShzZW5kZXIpKTsKKyNlbHNlCisgICAgVU5VU0VEX1BB
UkFNKG5ld05hdmlnYXRpb25JRCk7CisjZW5kaWYKKworICAgIGF1dG8gbGlzdGVuZXIgPSBtYWtl
UmVmKGZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyUHJveHkoW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgZnJhbWUgPSBtYWtlUmVmKCpmcmFtZSksIHNlbmRlciA9IHNlbmRl
ci5jb3B5UmVmKCksIG5hdmlnYXRpb25dIChXZWJDb3JlOjpQb2xpY3lBY3Rpb24gcG9saWN5QWN0
aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyogcG9saWNpZXMsIFNob3VsZFByb2Nlc3NTd2FwSWZQ
b3NzaWJsZSBzd2FwKSBtdXRhYmxlIHsKICAgICAgICAgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9s
aWNpZXNEYXRhPiBkYXRhOwogICAgICAgICBpZiAocG9saWNpZXMpIHsKICAgICAgICAgICAgIGRh
dGEgPSBwb2xpY2llcy0+ZGF0YSgpOwpAQCAtNDAyNiwxOCArNDA1NywxMCBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhCiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
IAotICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgZnJhbWUuZ2V0
KCksIGxpc3RlbmVySUQsIG5hdmlnYXRpb24uZ2V0KCksIFdURk1vdmUoZGF0YSkpOworICAgICAg
ICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbi5nZXQoKSwg
V1RGTW92ZShkYXRhKSwgV1RGTW92ZShzZW5kZXIpKTsKICAgICB9KSk7CiAKICAgICBBUEk6Ok5h
dmlnYXRpb24qIG1haW5GcmFtZU5hdmlnYXRpb24gPSBmcmFtZS0+aXNNYWluRnJhbWUoKSA/IG5h
dmlnYXRpb24uZ2V0KCkgOiBudWxscHRyOwotCi0jaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5H
KQotICAgIGlmIChmcmFtZS0+ZGlkSGFuZGxlQ29udGVudEZpbHRlclVuYmxvY2tOYXZpZ2F0aW9u
KHJlcXVlc3QpKQotICAgICAgICByZXR1cm4gcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lB
Y3Rpb246Oklnbm9yZSwgKmZyYW1lLCBsaXN0ZW5lcklELCAmbV9uYXZpZ2F0aW9uU3RhdGUtPm5h
dmlnYXRpb24obmV3TmF2aWdhdGlvbklEKSwgc3RkOjpudWxsb3B0KTsKLSNlbHNlCi0gICAgVU5V
U0VEX1BBUkFNKG5ld05hdmlnYXRpb25JRCk7Ci0jZW5kaWYKLQogICAgIFdlYkZyYW1lUHJveHkq
IG9yaWdpbmF0aW5nRnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKG9yaWdpbmF0aW5nRnJhbWVJ
bmZvRGF0YS5mcmFtZUlEKTsKIAogICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUgPSB3ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQpAQCAt
NDA2MywxNiArNDA4NiwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2
aWdhCiAgICAgbV9zaG91bGRTdXBwcmVzc0FwcExpbmtzSW5OZXh0TmF2aWdhdGlvblBvbGljeURl
Y2lzaW9uID0gZmFsc2U7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uU3luYyh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgY29uc3QgRnJh
bWVJbmZvRGF0YSYgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGlu
Z1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3Qs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UmJiBy
ZWRpcmVjdFJlc3BvbnNlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNl
ckRhdGEsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb25TeW5jOjpEZWxheWVkUmVwbHkmJiByZXBseSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0
YSwgY29uc3QgRnJhbWVJbmZvRGF0YSYgZnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRp
bmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6
RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7Ci0gICAgQVNTRVJUKCFtX3N5bmNOYXZpZ2F0aW9uQWN0
aW9uUG9saWN5UmVwbHkpOwotICAgIG1fc3luY05hdmlnYXRpb25BY3Rpb25Qb2xpY3lSZXBseSA9
IFdURk1vdmUocmVwbHkpOwotCi0gICAgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihm
cmFtZUlELCBmcmFtZVNlY3VyaXR5T3JpZ2luLCBuYXZpZ2F0aW9uSUQsIFdURk1vdmUobmF2aWdh
dGlvbkFjdGlvbkRhdGEpLCBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIG9yaWdpbmF0aW5nUGFn
ZUlELCBvcmlnaW5hbFJlcXVlc3QsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVkaXJlY3RS
ZXNwb25zZSksIGxpc3RlbmVySUQsIHVzZXJEYXRhKTsKKyAgICBhdXRvIHNlbmRlciA9IFBvbGlj
eURlY2lzaW9uU2VuZGVyOjpjcmVhdGUoV1RGTW92ZShyZXBseSkpOworICAgIAorICAgIGRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oZnJhbWVJRCwgZnJhbWVTZWN1cml0eU9yaWdpbiwg
bmF2aWdhdGlvbklELCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgZnJhbWVJbmZvRGF0
YSwgb3JpZ2luYXRpbmdQYWdlSUQsIG9yaWdpbmFsUmVxdWVzdCwgV1RGTW92ZShyZXF1ZXN0KSwg
V1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgdXNlckRhdGEsIHNlbmRlci5jb3B5UmVmKCkpOwog
CiAgICAgLy8gSWYgdGhlIGNsaWVudCBkaWQgbm90IHJlc3BvbmQgc3luY2hyb25vdXNseSwgcHJv
Y2VlZCB3aXRoIHRoZSBsb2FkLgotICAgIGlmIChhdXRvIHN5bmNOYXZpZ2F0aW9uQWN0aW9uUG9s
aWN5UmVwbHkgPSBXVEZNb3ZlKG1fc3luY05hdmlnYXRpb25BY3Rpb25Qb2xpY3lSZXBseSkpCi0g
ICAgICAgIHN5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5UmVwbHkobmF2aWdhdGlvbklELCBQb2xp
Y3lBY3Rpb246OlVzZSwgeyB9LCB7IH0pOworICAgIHNlbmRlci0+c2VuZChQb2xpY3lBY3Rpb246
OlVzZSwgbmF2aWdhdGlvbklELCBEb3dubG9hZElEKCksIHN0ZDo6bnVsbG9wdCk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odWludDY0X3Qg
ZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBO
YXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgdWludDY0X3QgbGlzdGVuZXJJ
RCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQpAQCAtNDA4MywxMCArNDEwNCwxMiBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luCiAgICAgTUVTU0FHRV9DSEVDSyhm
cmFtZSk7CiAgICAgTUVTU0FHRV9DSEVDS19VUkwocmVxdWVzdC51cmwoKSk7CiAKLSAgICBhdXRv
IGxpc3RlbmVyID0gbWFrZVJlZihmcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGxpc3RlbmVySUQsIGZyYW1lID0gbWFr
ZVJlZigqZnJhbWUpXSAoV2ViQ29yZTo6UG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQVBJOjpX
ZWJzaXRlUG9saWNpZXMqLCBTaG91bGRQcm9jZXNzU3dhcElmUG9zc2libGUgc3dhcCkgeworICAg
IGF1dG8gbGlzdGVuZXIgPSBtYWtlUmVmKGZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyUHJveHko
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbGlzdGVuZXJJRCwgZnJhbWVJ
RF0gKFdlYkNvcmU6OlBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0ZVBvbGlj
aWVzKiwgU2hvdWxkUHJvY2Vzc1N3YXBJZlBvc3NpYmxlIHN3YXApIG11dGFibGUgewogICAgICAg
ICAvLyBGSVhNRTogQXNzZXJ0IHRoZSBBUEk6OldlYnNpdGVQb2xpY2llcyogaXMgbnVsbHB0ciBo
ZXJlIG9uY2UgY2xpZW50cyBvZiBXS0ZyYW1lUG9saWN5TGlzdGVuZXJVc2VXaXRoUG9saWNpZXMg
Z28gYXdheS4KICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3dhcCA9PSBTaG91bGRQcm9jZXNzU3dh
cElmUG9zc2libGU6Ok5vKTsKLSAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lB
Y3Rpb24sIGZyYW1lLmdldCgpLCBsaXN0ZW5lcklELCBudWxscHRyLCBzdGQ6Om51bGxvcHQpOwor
ICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbnVsbHB0ciwgc3Rk
OjpudWxsb3B0LCBQb2xpY3lEZWNpc2lvblNlbmRlcjo6Y3JlYXRlKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgZnJhbWVJRCwgbGlzdGVuZXJJRF0gKGF1dG8u
Li4gYXJncykgeworICAgICAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24oZnJhbWVJRCwgbGlzdGVuZXJJRCwgYXJncy4uLiks
IG1fcGFnZUlEKTsKKyAgICAgICAgfSkpOwogICAgIH0pKTsKIAogICAgIGlmIChtX25hdmlnYXRp
b25DbGllbnQpIHsKQEAgLTQxMTYsMTAgKzQxMzksMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRl
Y2lkZVBvbGljeUZvclJlc3BvbgogICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKHJlc3BvbnNlLnVybCgp
KTsKIAogICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IG5hdmlnYXRpb24gPSBuYXZpZ2F0aW9u
SUQgPyAmbV9uYXZpZ2F0aW9uU3RhdGUtPm5hdmlnYXRpb24obmF2aWdhdGlvbklEKSA6IG51bGxw
dHI7Ci0gICAgYXV0byBsaXN0ZW5lciA9IG1ha2VSZWYoZnJhbWUtPnNldFVwUG9saWN5TGlzdGVu
ZXJQcm94eShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBmcmFtZSA9IG1h
a2VSZWYoKmZyYW1lKSwgbGlzdGVuZXJJRCwgbmF2aWdhdGlvbiA9IFdURk1vdmUobmF2aWdhdGlv
bildIChXZWJDb3JlOjpQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xp
Y2llcyosIFNob3VsZFByb2Nlc3NTd2FwSWZQb3NzaWJsZSBzd2FwKSB7CisgICAgYXV0byBsaXN0
ZW5lciA9IG1ha2VSZWYoZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBmcmFtZUlELCBsaXN0ZW5lcklELCBuYXZpZ2F0
aW9uID0gV1RGTW92ZShuYXZpZ2F0aW9uKV0gKFdlYkNvcmU6OlBvbGljeUFjdGlvbiBwb2xpY3lB
Y3Rpb24sIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiwgU2hvdWxkUHJvY2Vzc1N3YXBJZlBvc3NpYmxl
IHN3YXApIG11dGFibGUgewogICAgICAgICAvLyBGSVhNRTogQXNzZXJ0IHRoZSBBUEk6OldlYnNp
dGVQb2xpY2llcyogaXMgbnVsbHB0ciBoZXJlIG9uY2UgY2xpZW50cyBvZiBXS0ZyYW1lUG9saWN5
TGlzdGVuZXJVc2VXaXRoUG9saWNpZXMgZ28gYXdheS4KICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
c3dhcCA9PSBTaG91bGRQcm9jZXNzU3dhcElmUG9zc2libGU6Ok5vKTsKLSAgICAgICAgcmVjZWl2
ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIGZyYW1lLmdldCgpLCBsaXN0ZW5lcklELCBu
YXZpZ2F0aW9uLmdldCgpLCBzdGQ6Om51bGxvcHQpOworICAgICAgICByZWNlaXZlZFBvbGljeURl
Y2lzaW9uKHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbi5nZXQoKSwgc3RkOjpudWxsb3B0LCBQb2xp
Y3lEZWNpc2lvblNlbmRlcjo6Y3JlYXRlKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShw
cm90ZWN0ZWRUaGlzKSwgZnJhbWVJRCwgbGlzdGVuZXJJRF0gKGF1dG8uLi4gYXJncykgeworICAg
ICAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9s
aWN5RGVjaXNpb24oZnJhbWVJRCwgbGlzdGVuZXJJRCwgYXJncy4uLiksIG1fcGFnZUlEKTsKKyAg
ICAgICAgfSkpOwogICAgIH0pKTsKIAogICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpIHsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAyMzQzNzQp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5
KQpAQCAtOTA5LDcgKzkwOSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHBlcmZvcm1EaWN0aW9uYXJ5
TG9va3VwT2ZDdXJyZW50U2VsZWN0aW9uKCk7CiAjZW5kaWYKIAotICAgIHZvaWQgcmVjZWl2ZWRQ
b2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQb2xpY3lBY3Rpb24sIFdlYkZyYW1lUHJveHkmLCB1aW50
NjRfdCBsaXN0ZW5lcklELCBBUEk6Ok5hdmlnYXRpb24qLCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQ
b2xpY2llc0RhdGE+JiYpOworICAgIGNsYXNzIFBvbGljeURlY2lzaW9uU2VuZGVyOworICAgIHZv
aWQgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQb2xpY3lBY3Rpb24sIEFQSTo6TmF2
aWdhdGlvbiosIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiwgUmVmPFBvbGlj
eURlY2lzaW9uU2VuZGVyPiYmKTsKIAogICAgIHZvaWQgYmFja0ZvcndhcmRSZW1vdmVkSXRlbShj
b25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJik7CiAKQEAgLTE0MjEsOCAr
MTQyMiw5IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpZERlc3Ryb3lOYXZpZ2F0aW9uKHVpbnQ2
NF90IG5hdmlnYXRpb25JRCk7CiAKLSAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24odWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
JiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25B
Y3Rpb25EYXRhJiYsIGNvbnN0IEZyYW1lSW5mb0RhdGEmLCB1aW50NjRfdCBvcmlnaW5hdGluZ1Bh
Z2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVk
aXJlY3RSZXNwb25zZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKLSAg
ICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKHVpbnQ2NF90IGZyYW1l
SUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdp
biwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBjb25zdCBG
cmFtZUluZm9EYXRhJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIHVpbnQ2
NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OkRlbGF5ZWRSZXBseSYmKTsKKyAg
ICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24odWludDY0X3QgZnJhbWVJRCwg
Y29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIGNvbnN0IEZyYW1l
SW5mb0RhdGEmLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNl
ckRhdGEmLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYpOworICAgIHZvaWQgZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBjb25zdCBGcmFtZUluZm9EYXRhJiwg
dWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgdWlu
dDY0X3QgbGlzdGVuZXJJRCk7CisgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uU3luYyh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlv
bkFjdGlvbkRhdGEmJiwgY29uc3QgRnJhbWVJbmZvRGF0YSYsIHVpbnQ2NF90IG9yaWdpbmF0aW5n
UGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiBy
ZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpEZWxheWVkUmVwbHkmJik7CiAg
ICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odWludDY0X3QgZnJhbWVJRCwg
Y29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBO
YXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3Qg
U3RyaW5nJiBmcmFtZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7
CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZSh1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCB1aW50NjRf
dCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgdW5hYmxlVG9JbXBsZW1l
bnRQb2xpY3kodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYs
IGNvbnN0IFVzZXJEYXRhJik7CkBAIC0yMDAxLDkgKzIwMDMsNiBAQCBwcml2YXRlOgogICAgIGJv
b2wgbV9pc0luUHJpbnRpbmdNb2RlIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNQZXJmb3JtaW5n
RE9NUHJpbnRPcGVyYXRpb24geyBmYWxzZSB9OwogCi0gICAgLy8gU3luY2hyb25vdXMgbmF2aWdh
dGlvbiBwb2xpY3kgZGVjaXNpb24uCi0gICAgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OkRlbGF5ZWRSZXBseSBtX3N5bmNOYXZpZ2F0
aW9uQWN0aW9uUG9saWN5UmVwbHk7Ci0KICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgbV9k
ZWNpZGVQb2xpY3lGb3JSZXNwb25zZVJlcXVlc3Q7CiAgICAgYm9vbCBtX3Nob3VsZFN1cHByZXNz
QXBwTGlua3NJbk5leHROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24geyBmYWxzZSB9OwogCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
CShyZXZpc2lvbiAyMzQzNzQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTEwNiw4ICsxMDYsOCBAQCBtZXNzYWdl
cyAtPiBXZWJQYWdlUHJveHkgewogCiAgICAgIyBQb2xpY3kgbWVzc2FnZXMKICAgICBEZWNpZGVQ
b2xpY3lGb3JSZXNwb25zZSh1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0IHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBX
ZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQotICAgIERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24odWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJL
aXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBzdHJ1Y3QgV2Vi
S2l0OjpGcmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3Jp
Z2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3Qs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlIHJlZGlyZWN0UmVzcG9uc2UsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRh
dGEgdXNlckRhdGEpCi0gICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmModWlu
dDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNl
Y3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmln
YXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBzdHJ1Y3QgV2ViS2l0OjpGcmFt
ZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQ
YWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGly
ZWN0UmVzcG9uc2UsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRh
dGEpIC0+ICh1aW50NjRfdCBuZXdOYXZpZ2F0aW9uSUQsIGVudW0gV2ViQ29yZTo6UG9saWN5QWN0
aW9uIHBvbGljeUFjdGlvbiwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIHN0ZDo6b3B0
aW9uYWw8V2ViS2l0OjpXZWJzaXRlUG9saWNpZXNEYXRhPiB3ZWJzaXRlUG9saWNpZXMpIERlbGF5
ZWQKKyAgICBEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmModWludDY0X3QgZnJh
bWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3Jp
Z2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rp
b25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRh
IG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCByZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9u
c2UsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQpCisgICAg
RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmModWludDY0X3QgZnJhbWVJRCwgc3Ry
dWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5h
dmlnYXRpb25BY3Rpb25EYXRhLCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIG9yaWdpbmF0
aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBy
ZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UsIFdlYktp
dDo6VXNlckRhdGEgdXNlckRhdGEpIC0+IChlbnVtIFdlYkNvcmU6OlBvbGljeUFjdGlvbiBwb2xp
Y3lBY3Rpb24sIHVpbnQ2NF90IG5ld05hdmlnYXRpb25JRCwgV2ViS2l0OjpEb3dubG9hZElEIGRv
d25sb2FkSUQsIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpXZWJzaXRlUG9saWNpZXNEYXRhPiB3ZWJz
aXRlUG9saWNpZXMpIERlbGF5ZWQKICAgICBEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24o
dWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFt
ZVNlY3VyaXR5T3JpZ2luLCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZp
Z2F0aW9uQWN0aW9uRGF0YSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFN0cmlu
ZyBmcmFtZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRh
dGEpCiAgICAgVW5hYmxlVG9JbXBsZW1lbnRQb2xpY3kodWludDY0X3QgZnJhbWVJRCwgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKIApJbmRl
eDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiAyMzQzNzQpCisrKyBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OTIsNyArODkyLDcgQEAgdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZAogICAgICAgICBEb3dubG9hZElEIGRvd25sb2FkSUQ7
CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4gd2Vic2l0ZVBvbGlj
aWVzOwogCi0gICAgICAgIGlmICghd2ViUGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmMobV9mcmFtZS0+ZnJhbWVJ
RCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21GcmFtZShjb3JlRnJhbWUpLCBkb2N1bWVudExv
YWRlci0+bmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBvcmlnaW5hdGluZ0Zy
YW1lSW5mb0RhdGEsIG9yaWdpbmF0aW5nUGFnZUlELCBuYXZpZ2F0aW9uQWN0aW9uLnJlc291cmNl
UmVxdWVzdCgpLCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlLCBsaXN0ZW5lcklELCBVc2VyRGF0
YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJE
YXRhLmdldCgpKS5nZXQoKSkpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6UmVwbHkobmV3TmF2aWdhdGlvbklELCBwb2xpY3lBY3Rp
b24sIGRvd25sb2FkSUQsIHdlYnNpdGVQb2xpY2llcykpKSB7CisgICAgICAgIGlmICghd2ViUGFn
ZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvblN5bmMobV9mcmFtZS0+ZnJhbWVJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZy
b21GcmFtZShjb3JlRnJhbWUpLCBkb2N1bWVudExvYWRlci0+bmF2aWdhdGlvbklEKCksIG5hdmln
YXRpb25BY3Rpb25EYXRhLCBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIG9yaWdpbmF0aW5nUGFn
ZUlELCBuYXZpZ2F0aW9uQWN0aW9uLnJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LCByZWRpcmVj
dFJlc3BvbnNlLCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmpl
Y3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpLCBNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6UmVwbHkocG9saWN5QWN0
aW9uLCBuZXdOYXZpZ2F0aW9uSUQsIGRvd25sb2FkSUQsIHdlYnNpdGVQb2xpY2llcykpKSB7CiAg
ICAgICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwg
UG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIHsgfSwgeyB9KTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQpAQCAtOTAyLDcgKzkwMiw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGVjaWQKICAgICB9CiAKICAgICBBU1NFUlQocG9saWN5RGVjaXNpb25Nb2RlID09
IFBvbGljeURlY2lzaW9uTW9kZTo6QXN5bmNocm9ub3VzKTsKLSAgICBpZiAoIXdlYlBhZ2UtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bihtX2ZyYW1lLT5mcmFtZUlEKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbUZyYW1lKGNvcmVG
cmFtZSksIGRvY3VtZW50TG9hZGVyLT5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbkFjdGlvbkRh
dGEsIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgb3JpZ2luYXRpbmdQYWdlSUQsIG5hdmlnYXRp
b25BY3Rpb24ucmVzb3VyY2VSZXF1ZXN0KCksIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UsIGxp
c3RlbmVySUQsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVj
dHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpKQorICAgIGlmICghd2ViUGFnZS0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uQXN5bmMobV9mcmFtZS0+ZnJhbWVJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21GcmFt
ZShjb3JlRnJhbWUpLCBkb2N1bWVudExvYWRlci0+bmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb25B
Y3Rpb25EYXRhLCBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIG9yaWdpbmF0aW5nUGFnZUlELCBu
YXZpZ2F0aW9uQWN0aW9uLnJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LCByZWRpcmVjdFJlc3Bv
bnNlLCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9I
YW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSksIGxpc3RlbmVySUQpKSkKICAgICAgICAgbV9m
cmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIFBvbGljeUFjdGlvbjo6
SWdub3JlLCAwLCB7IH0sIHsgfSk7CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>